]> git.ipfire.org Git - thirdparty/grsecurity-scrape.git/blob - test/grsecurity-3.1-4.2.3-201510092347.patch
Auto commit, 1 new patch{es}.
[thirdparty/grsecurity-scrape.git] / test / grsecurity-3.1-4.2.3-201510092347.patch
1 diff --git a/Documentation/dontdiff b/Documentation/dontdiff
2 index 9de9813..1462492 100644
3 --- a/Documentation/dontdiff
4 +++ b/Documentation/dontdiff
5 @@ -3,9 +3,11 @@
6 *.bc
7 *.bin
8 *.bz2
9 +*.c.[012]*.*
10 *.cis
11 *.cpio
12 *.csp
13 +*.dbg
14 *.dsp
15 *.dvi
16 *.elf
17 @@ -15,6 +17,7 @@
18 *.gcov
19 *.gen.S
20 *.gif
21 +*.gmo
22 *.grep
23 *.grp
24 *.gz
25 @@ -51,14 +54,17 @@
26 *.tab.h
27 *.tex
28 *.ver
29 +*.vim
30 *.xml
31 *.xz
32 *_MODULES
33 +*_reg_safe.h
34 *_vga16.c
35 *~
36 \#*#
37 *.9
38 -.*
39 +.[^g]*
40 +.gen*
41 .*.d
42 .mm
43 53c700_d.h
44 @@ -72,9 +78,11 @@ Image
45 Module.markers
46 Module.symvers
47 PENDING
48 +PERF*
49 SCCS
50 System.map*
51 TAGS
52 +TRACEEVENT-CFLAGS
53 aconf
54 af_names.h
55 aic7*reg.h*
56 @@ -83,6 +91,7 @@ aic7*seq.h*
57 aicasm
58 aicdb.h*
59 altivec*.c
60 +ashldi3.S
61 asm-offsets.h
62 asm_offsets.h
63 autoconf.h*
64 @@ -95,32 +104,40 @@ bounds.h
65 bsetup
66 btfixupprep
67 build
68 +builtin-policy.h
69 bvmlinux
70 bzImage*
71 capability_names.h
72 capflags.c
73 classlist.h*
74 +clut_vga16.c
75 +common-cmds.h
76 comp*.log
77 compile.h*
78 conf
79 config
80 config-*
81 config_data.h*
82 +config.c
83 config.mak
84 config.mak.autogen
85 +config.tmp
86 conmakehash
87 consolemap_deftbl.c*
88 cpustr.h
89 crc32table.h*
90 cscope.*
91 defkeymap.c
92 +devicetable-offsets.h
93 devlist.h*
94 dnotify_test
95 docproc
96 dslm
97 +dtc-lexer.lex.c
98 elf2ecoff
99 elfconfig.h*
100 evergreen_reg_safe.h
101 +exception_policy.conf
102 fixdep
103 flask.h
104 fore200e_mkfirm
105 @@ -128,12 +145,15 @@ fore200e_pca_fw.c*
106 gconf
107 gconf.glade.h
108 gen-devlist
109 +gen-kdb_cmds.c
110 gen_crc32table
111 gen_init_cpio
112 generated
113 genheaders
114 genksyms
115 *_gray256.c
116 +hash
117 +hid-example
118 hpet_example
119 hugepage-mmap
120 hugepage-shm
121 @@ -148,14 +168,14 @@ int32.c
122 int4.c
123 int8.c
124 kallsyms
125 -kconfig
126 +kern_constants.h
127 keywords.c
128 ksym.c*
129 ksym.h*
130 kxgettext
131 lex.c
132 lex.*.c
133 -linux
134 +lib1funcs.S
135 logo_*.c
136 logo_*_clut224.c
137 logo_*_mono.c
138 @@ -165,14 +185,15 @@ mach-types.h
139 machtypes.h
140 map
141 map_hugetlb
142 -media
143 mconf
144 +mdp
145 miboot*
146 mk_elfconfig
147 mkboot
148 mkbugboot
149 mkcpustr
150 mkdep
151 +mkpiggy
152 mkprep
153 mkregtable
154 mktables
155 @@ -188,6 +209,8 @@ oui.c*
156 page-types
157 parse.c
158 parse.h
159 +parse-events*
160 +pasyms.h
161 patches*
162 pca200e.bin
163 pca200e_ecd.bin2
164 @@ -197,6 +220,7 @@ perf-archive
165 piggyback
166 piggy.gzip
167 piggy.S
168 +pmu-*
169 pnmtologo
170 ppc_defs.h*
171 pss_boot.h
172 @@ -206,7 +230,12 @@ r200_reg_safe.h
173 r300_reg_safe.h
174 r420_reg_safe.h
175 r600_reg_safe.h
176 +randomize_layout_hash.h
177 +randomize_layout_seed.h
178 +realmode.lds
179 +realmode.relocs
180 recordmcount
181 +regdb.c
182 relocs
183 rlim_names.h
184 rn50_reg_safe.h
185 @@ -216,8 +245,12 @@ series
186 setup
187 setup.bin
188 setup.elf
189 +signing_key*
190 +size_overflow_hash.h
191 sImage
192 +slabinfo
193 sm_tbl*
194 +sortextable
195 split-include
196 syscalltab.h
197 tables.c
198 @@ -227,6 +260,7 @@ tftpboot.img
199 timeconst.h
200 times.h*
201 trix_boot.h
202 +user_constants.h
203 utsrelease.h*
204 vdso-syms.lds
205 vdso.lds
206 @@ -238,13 +272,17 @@ vdso32.lds
207 vdso32.so.dbg
208 vdso64.lds
209 vdso64.so.dbg
210 +vdsox32.lds
211 +vdsox32-syms.lds
212 version.h*
213 vmImage
214 vmlinux
215 vmlinux-*
216 vmlinux.aout
217 vmlinux.bin.all
218 +vmlinux.bin.bz2
219 vmlinux.lds
220 +vmlinux.relocs
221 vmlinuz
222 voffset.h
223 vsyscall.lds
224 @@ -252,9 +290,12 @@ vsyscall_32.lds
225 wanxlfw.inc
226 uImage
227 unifdef
228 +utsrelease.h
229 wakeup.bin
230 wakeup.elf
231 wakeup.lds
232 +x509*
233 zImage*
234 zconf.hash.c
235 +zconf.lex.c
236 zoffset.h
237 diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
238 index 13f888a..250729b 100644
239 --- a/Documentation/kbuild/makefiles.txt
240 +++ b/Documentation/kbuild/makefiles.txt
241 @@ -23,10 +23,11 @@ This document describes the Linux kernel Makefiles.
242 === 4 Host Program support
243 --- 4.1 Simple Host Program
244 --- 4.2 Composite Host Programs
245 - --- 4.3 Using C++ for host programs
246 - --- 4.4 Controlling compiler options for host programs
247 - --- 4.5 When host programs are actually built
248 - --- 4.6 Using hostprogs-$(CONFIG_FOO)
249 + --- 4.3 Defining shared libraries
250 + --- 4.4 Using C++ for host programs
251 + --- 4.5 Controlling compiler options for host programs
252 + --- 4.6 When host programs are actually built
253 + --- 4.7 Using hostprogs-$(CONFIG_FOO)
254
255 === 5 Kbuild clean infrastructure
256
257 @@ -643,7 +644,29 @@ Both possibilities are described in the following.
258 Finally, the two .o files are linked to the executable, lxdialog.
259 Note: The syntax <executable>-y is not permitted for host-programs.
260
261 ---- 4.3 Using C++ for host programs
262 +--- 4.3 Defining shared libraries
263 +
264 + Objects with extension .so are considered shared libraries, and
265 + will be compiled as position independent objects.
266 + Kbuild provides support for shared libraries, but the usage
267 + shall be restricted.
268 + In the following example the libkconfig.so shared library is used
269 + to link the executable conf.
270 +
271 + Example:
272 + #scripts/kconfig/Makefile
273 + hostprogs-y := conf
274 + conf-objs := conf.o libkconfig.so
275 + libkconfig-objs := expr.o type.o
276 +
277 + Shared libraries always require a corresponding -objs line, and
278 + in the example above the shared library libkconfig is composed by
279 + the two objects expr.o and type.o.
280 + expr.o and type.o will be built as position independent code and
281 + linked as a shared library libkconfig.so. C++ is not supported for
282 + shared libraries.
283 +
284 +--- 4.4 Using C++ for host programs
285
286 kbuild offers support for host programs written in C++. This was
287 introduced solely to support kconfig, and is not recommended
288 @@ -666,7 +689,7 @@ Both possibilities are described in the following.
289 qconf-cxxobjs := qconf.o
290 qconf-objs := check.o
291
292 ---- 4.4 Controlling compiler options for host programs
293 +--- 4.5 Controlling compiler options for host programs
294
295 When compiling host programs, it is possible to set specific flags.
296 The programs will always be compiled utilising $(HOSTCC) passed
297 @@ -694,7 +717,7 @@ Both possibilities are described in the following.
298 When linking qconf, it will be passed the extra option
299 "-L$(QTDIR)/lib".
300
301 ---- 4.5 When host programs are actually built
302 +--- 4.6 When host programs are actually built
303
304 Kbuild will only build host-programs when they are referenced
305 as a prerequisite.
306 @@ -725,7 +748,7 @@ Both possibilities are described in the following.
307 This will tell kbuild to build lxdialog even if not referenced in
308 any rule.
309
310 ---- 4.6 Using hostprogs-$(CONFIG_FOO)
311 +--- 4.7 Using hostprogs-$(CONFIG_FOO)
312
313 A typical pattern in a Kbuild file looks like this:
314
315 diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
316 index 1d6f045..2714987 100644
317 --- a/Documentation/kernel-parameters.txt
318 +++ b/Documentation/kernel-parameters.txt
319 @@ -1244,6 +1244,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
320 Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
321 Default: 1024
322
323 + grsec_proc_gid= [GRKERNSEC_PROC_USERGROUP] Chooses GID to
324 + ignore grsecurity's /proc restrictions
325 +
326 + grsec_sysfs_restrict= Format: 0 | 1
327 + Default: 1
328 + Disables GRKERNSEC_SYSFS_RESTRICT if enabled in config
329 +
330 hashdist= [KNL,NUMA] Large hashes allocated during boot
331 are distributed across NUMA nodes. Defaults on
332 for 64-bit NUMA, off otherwise.
333 @@ -2364,6 +2371,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
334 noexec=on: enable non-executable mappings (default)
335 noexec=off: disable non-executable mappings
336
337 + nopcid [X86-64]
338 + Disable PCID (Process-Context IDentifier) even if it
339 + is supported by the processor.
340 +
341 nosmap [X86]
342 Disable SMAP (Supervisor Mode Access Prevention)
343 even if it is supported by processor.
344 @@ -2662,6 +2673,30 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
345 the specified number of seconds. This is to be used if
346 your oopses keep scrolling off the screen.
347
348 + pax_nouderef [X86] disables UDEREF. Most likely needed under certain
349 + virtualization environments that don't cope well with the
350 + expand down segment used by UDEREF on X86-32 or the frequent
351 + page table updates on X86-64.
352 +
353 + pax_sanitize_slab=
354 + Format: { 0 | 1 | off | fast | full }
355 + Options '0' and '1' are only provided for backward
356 + compatibility, 'off' or 'fast' should be used instead.
357 + 0|off : disable slab object sanitization
358 + 1|fast: enable slab object sanitization excluding
359 + whitelisted slabs (default)
360 + full : sanitize all slabs, even the whitelisted ones
361 +
362 + pax_softmode= 0/1 to disable/enable PaX softmode on boot already.
363 +
364 + pax_extra_latent_entropy
365 + Enable a very simple form of latent entropy extraction
366 + from the first 4GB of memory as the bootmem allocator
367 + passes the memory pages to the buddy allocator.
368 +
369 + pax_weakuderef [X86-64] enables the weaker but faster form of UDEREF
370 + when the processor supports PCID.
371 +
372 pcbit= [HW,ISDN]
373
374 pcd. [PARIDE]
375 diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
376 index 6fccb69..60c7c7a 100644
377 --- a/Documentation/sysctl/kernel.txt
378 +++ b/Documentation/sysctl/kernel.txt
379 @@ -41,6 +41,7 @@ show up in /proc/sys/kernel:
380 - kptr_restrict
381 - kstack_depth_to_print [ X86 only ]
382 - l2cr [ PPC only ]
383 +- modify_ldt [ X86 only ]
384 - modprobe ==> Documentation/debugging-modules.txt
385 - modules_disabled
386 - msg_next_id [ sysv ipc ]
387 @@ -391,6 +392,20 @@ This flag controls the L2 cache of G3 processor boards. If
388
389 ==============================================================
390
391 +modify_ldt: (X86 only)
392 +
393 +Enables (1) or disables (0) the modify_ldt syscall. Modifying the LDT
394 +(Local Descriptor Table) may be needed to run a 16-bit or segmented code
395 +such as Dosemu or Wine. This is done via a system call which is not needed
396 +to run portable applications, and which can sometimes be abused to exploit
397 +some weaknesses of the architecture, opening new vulnerabilities.
398 +
399 +This sysctl allows one to increase the system's security by disabling the
400 +system call, or to restore compatibility with specific applications when it
401 +was already disabled.
402 +
403 +==============================================================
404 +
405 modules_disabled:
406
407 A toggle value indicating if modules are allowed to be loaded
408 diff --git a/Makefile b/Makefile
409 index a6edbb1..5ac7686 100644
410 --- a/Makefile
411 +++ b/Makefile
412 @@ -298,7 +298,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
413 HOSTCC = gcc
414 HOSTCXX = g++
415 HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
416 -HOSTCXXFLAGS = -O2
417 +HOSTCFLAGS = -W -Wno-unused-parameter -Wno-missing-field-initializers -fno-delete-null-pointer-checks
418 +HOSTCFLAGS += $(call cc-option, -Wno-empty-body)
419 +HOSTCXXFLAGS = -O2 -Wall -W -Wno-array-bounds
420
421 ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
422 HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \
423 @@ -434,8 +436,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
424 # Rules shared between *config targets and build targets
425
426 # Basic helpers built in scripts/
427 -PHONY += scripts_basic
428 -scripts_basic:
429 +PHONY += scripts_basic gcc-plugins
430 +scripts_basic: gcc-plugins
431 $(Q)$(MAKE) $(build)=scripts/basic
432 $(Q)rm -f .tmp_quiet_recordmcount
433
434 @@ -615,6 +617,74 @@ endif
435 # Tell gcc to never replace conditional load with a non-conditional one
436 KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
437
438 +ifndef DISABLE_PAX_PLUGINS
439 +ifeq ($(call cc-ifversion, -ge, 0408, y), y)
440 +PLUGINCC := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCXX)" "$(HOSTCXX)" "$(CC)")
441 +else
442 +PLUGINCC := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCC)" "$(HOSTCXX)" "$(CC)")
443 +endif
444 +ifneq ($(PLUGINCC),)
445 +ifdef CONFIG_PAX_CONSTIFY_PLUGIN
446 +CONSTIFY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/constify_plugin.so -DCONSTIFY_PLUGIN
447 +endif
448 +ifdef CONFIG_PAX_MEMORY_STACKLEAK
449 +STACKLEAK_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -DSTACKLEAK_PLUGIN
450 +STACKLEAK_PLUGIN_CFLAGS += -fplugin-arg-stackleak_plugin-track-lowest-sp=100
451 +endif
452 +ifdef CONFIG_KALLOCSTAT_PLUGIN
453 +KALLOCSTAT_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/kallocstat_plugin.so
454 +endif
455 +ifdef CONFIG_PAX_KERNEXEC_PLUGIN
456 +KERNEXEC_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/kernexec_plugin.so
457 +KERNEXEC_PLUGIN_CFLAGS += -fplugin-arg-kernexec_plugin-method=$(CONFIG_PAX_KERNEXEC_PLUGIN_METHOD) -DKERNEXEC_PLUGIN
458 +KERNEXEC_PLUGIN_AFLAGS := -DKERNEXEC_PLUGIN
459 +endif
460 +ifdef CONFIG_GRKERNSEC_RANDSTRUCT
461 +RANDSTRUCT_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/randomize_layout_plugin.so -DRANDSTRUCT_PLUGIN
462 +ifdef CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE
463 +RANDSTRUCT_PLUGIN_CFLAGS += -fplugin-arg-randomize_layout_plugin-performance-mode
464 +endif
465 +endif
466 +ifdef CONFIG_CHECKER_PLUGIN
467 +ifeq ($(call cc-ifversion, -ge, 0406, y), y)
468 +CHECKER_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/checker_plugin.so -DCHECKER_PLUGIN
469 +endif
470 +endif
471 +COLORIZE_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/colorize_plugin.so
472 +ifdef CONFIG_PAX_SIZE_OVERFLOW
473 +SIZE_OVERFLOW_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/size_overflow_plugin/size_overflow_plugin.so -DSIZE_OVERFLOW_PLUGIN
474 +endif
475 +ifdef CONFIG_PAX_LATENT_ENTROPY
476 +LATENT_ENTROPY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/latent_entropy_plugin.so -DLATENT_ENTROPY_PLUGIN
477 +endif
478 +ifdef CONFIG_PAX_MEMORY_STRUCTLEAK
479 +STRUCTLEAK_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/structleak_plugin.so -DSTRUCTLEAK_PLUGIN
480 +endif
481 +INITIFY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/initify_plugin.so -DINITIFY_PLUGIN
482 +GCC_PLUGINS_CFLAGS := $(CONSTIFY_PLUGIN_CFLAGS) $(STACKLEAK_PLUGIN_CFLAGS) $(KALLOCSTAT_PLUGIN_CFLAGS)
483 +GCC_PLUGINS_CFLAGS += $(KERNEXEC_PLUGIN_CFLAGS) $(CHECKER_PLUGIN_CFLAGS) $(COLORIZE_PLUGIN_CFLAGS)
484 +GCC_PLUGINS_CFLAGS += $(SIZE_OVERFLOW_PLUGIN_CFLAGS) $(LATENT_ENTROPY_PLUGIN_CFLAGS) $(STRUCTLEAK_PLUGIN_CFLAGS)
485 +GCC_PLUGINS_CFLAGS += $(INITIFY_PLUGIN_CFLAGS)
486 +GCC_PLUGINS_CFLAGS += $(RANDSTRUCT_PLUGIN_CFLAGS)
487 +GCC_PLUGINS_AFLAGS := $(KERNEXEC_PLUGIN_AFLAGS)
488 +export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGINS_AFLAGS CONSTIFY_PLUGIN LATENT_ENTROPY_PLUGIN_CFLAGS
489 +ifeq ($(KBUILD_EXTMOD),)
490 +gcc-plugins:
491 + $(Q)$(MAKE) $(build)=tools/gcc
492 +else
493 +gcc-plugins: ;
494 +endif
495 +else
496 +gcc-plugins:
497 +ifeq ($(call cc-ifversion, -ge, 0405, y), y)
498 + $(error Your gcc installation does not support plugins. If the necessary headers for plugin support are missing, they should be installed. On Debian, apt-get install gcc-<ver>-plugin-dev. If you choose to ignore this error and lessen the improvements provided by this patch, re-run make with the DISABLE_PAX_PLUGINS=y argument.))
499 +else
500 + $(Q)echo "warning, your gcc version does not support plugins, you should upgrade it to gcc 4.5 at least"
501 +endif
502 + $(Q)echo "PAX_MEMORY_STACKLEAK, constification, PAX_LATENT_ENTROPY and other features will be less secure. PAX_SIZE_OVERFLOW will not be active."
503 +endif
504 +endif
505 +
506 ifdef CONFIG_READABLE_ASM
507 # Disable optimizations that make assembler listings hard to read.
508 # reorder blocks reorders the control in the function
509 @@ -714,7 +784,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g)
510 else
511 KBUILD_CFLAGS += -g
512 endif
513 -KBUILD_AFLAGS += -Wa,-gdwarf-2
514 +KBUILD_AFLAGS += -Wa,--gdwarf-2
515 endif
516 ifdef CONFIG_DEBUG_INFO_DWARF4
517 KBUILD_CFLAGS += $(call cc-option, -gdwarf-4,)
518 @@ -886,7 +956,7 @@ export mod_sign_cmd
519
520
521 ifeq ($(KBUILD_EXTMOD),)
522 -core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
523 +core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ grsecurity/
524
525 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
526 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
527 @@ -936,6 +1006,8 @@ endif
528
529 # The actual objects are generated when descending,
530 # make sure no implicit rule kicks in
531 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
532 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
533 $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
534
535 # Handle descending into subdirectories listed in $(vmlinux-dirs)
536 @@ -945,7 +1017,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
537 # Error messages still appears in the original language
538
539 PHONY += $(vmlinux-dirs)
540 -$(vmlinux-dirs): prepare scripts
541 +$(vmlinux-dirs): gcc-plugins prepare scripts
542 $(Q)$(MAKE) $(build)=$@
543
544 define filechk_kernel.release
545 @@ -988,10 +1060,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
546
547 archprepare: archheaders archscripts prepare1 scripts_basic
548
549 +prepare0: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
550 +prepare0: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
551 prepare0: archprepare FORCE
552 $(Q)$(MAKE) $(build)=.
553
554 # All the preparing..
555 +prepare: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
556 prepare: prepare0
557
558 # Generate some files
559 @@ -1099,6 +1174,8 @@ all: modules
560 # using awk while concatenating to the final file.
561
562 PHONY += modules
563 +modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
564 +modules: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
565 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
566 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
567 @$(kecho) ' Building modules, stage 2.';
568 @@ -1114,7 +1191,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
569
570 # Target to prepare building external modules
571 PHONY += modules_prepare
572 -modules_prepare: prepare scripts
573 +modules_prepare: gcc-plugins prepare scripts
574
575 # Target to install modules
576 PHONY += modules_install
577 @@ -1180,7 +1257,10 @@ MRPROPER_FILES += .config .config.old .version .old_version \
578 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
579 signing_key.priv signing_key.x509 x509.genkey \
580 extra_certificates signing_key.x509.keyid \
581 - signing_key.x509.signer vmlinux-gdb.py
582 + signing_key.x509.signer vmlinux-gdb.py \
583 + tools/gcc/size_overflow_plugin/size_overflow_hash_aux.h \
584 + tools/gcc/size_overflow_plugin/size_overflow_hash.h \
585 + tools/gcc/randomize_layout_seed.h
586
587 # clean - Delete most, but leave enough to build external modules
588 #
589 @@ -1219,7 +1299,7 @@ distclean: mrproper
590 @find $(srctree) $(RCS_FIND_IGNORE) \
591 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
592 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
593 - -o -name '.*.rej' -o -name '*%' -o -name 'core' \) \
594 + -o -name '.*.rej' -o -name '*.so' -o -name '*%' -o -name 'core' \) \
595 -type f -print | xargs rm -f
596
597
598 @@ -1385,6 +1465,8 @@ PHONY += $(module-dirs) modules
599 $(module-dirs): crmodverdir $(objtree)/Module.symvers
600 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
601
602 +modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
603 +modules: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
604 modules: $(module-dirs)
605 @$(kecho) ' Building modules, stage 2.';
606 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
607 @@ -1525,17 +1607,21 @@ else
608 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
609 endif
610
611 -%.s: %.c prepare scripts FORCE
612 +%.s: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
613 +%.s: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
614 +%.s: %.c gcc-plugins prepare scripts FORCE
615 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
616 %.i: %.c prepare scripts FORCE
617 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
618 -%.o: %.c prepare scripts FORCE
619 +%.o: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
620 +%.o: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
621 +%.o: %.c gcc-plugins prepare scripts FORCE
622 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
623 %.lst: %.c prepare scripts FORCE
624 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
625 -%.s: %.S prepare scripts FORCE
626 +%.s: %.S gcc-plugins prepare scripts FORCE
627 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
628 -%.o: %.S prepare scripts FORCE
629 +%.o: %.S gcc-plugins prepare scripts FORCE
630 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
631 %.symtypes: %.c prepare scripts FORCE
632 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
633 @@ -1547,11 +1633,15 @@ endif
634 $(build)=$(build-dir)
635 # Make sure the latest headers are built for Documentation
636 Documentation/: headers_install
637 -%/: prepare scripts FORCE
638 +%/: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
639 +%/: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
640 +%/: gcc-plugins prepare scripts FORCE
641 $(cmd_crmodverdir)
642 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
643 $(build)=$(build-dir)
644 -%.ko: prepare scripts FORCE
645 +%.ko: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
646 +%.ko: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
647 +%.ko: gcc-plugins prepare scripts FORCE
648 $(cmd_crmodverdir)
649 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
650 $(build)=$(build-dir) $(@:.ko=.o)
651 diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h
652 index 8f8eafb..3405f46 100644
653 --- a/arch/alpha/include/asm/atomic.h
654 +++ b/arch/alpha/include/asm/atomic.h
655 @@ -239,4 +239,14 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
656 #define atomic_dec(v) atomic_sub(1,(v))
657 #define atomic64_dec(v) atomic64_sub(1,(v))
658
659 +#define atomic64_read_unchecked(v) atomic64_read(v)
660 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
661 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
662 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
663 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
664 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
665 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
666 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
667 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
668 +
669 #endif /* _ALPHA_ATOMIC_H */
670 diff --git a/arch/alpha/include/asm/cache.h b/arch/alpha/include/asm/cache.h
671 index ad368a9..fbe0f25 100644
672 --- a/arch/alpha/include/asm/cache.h
673 +++ b/arch/alpha/include/asm/cache.h
674 @@ -4,19 +4,19 @@
675 #ifndef __ARCH_ALPHA_CACHE_H
676 #define __ARCH_ALPHA_CACHE_H
677
678 +#include <linux/const.h>
679
680 /* Bytes per L1 (data) cache line. */
681 #if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_EV6)
682 -# define L1_CACHE_BYTES 64
683 # define L1_CACHE_SHIFT 6
684 #else
685 /* Both EV4 and EV5 are write-through, read-allocate,
686 direct-mapped, physical.
687 */
688 -# define L1_CACHE_BYTES 32
689 # define L1_CACHE_SHIFT 5
690 #endif
691
692 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
693 #define SMP_CACHE_BYTES L1_CACHE_BYTES
694
695 #endif
696 diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h
697 index 968d999..d36b2df 100644
698 --- a/arch/alpha/include/asm/elf.h
699 +++ b/arch/alpha/include/asm/elf.h
700 @@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
701
702 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
703
704 +#ifdef CONFIG_PAX_ASLR
705 +#define PAX_ELF_ET_DYN_BASE (current->personality & ADDR_LIMIT_32BIT ? 0x10000 : 0x120000000UL)
706 +
707 +#define PAX_DELTA_MMAP_LEN (current->personality & ADDR_LIMIT_32BIT ? 14 : 28)
708 +#define PAX_DELTA_STACK_LEN (current->personality & ADDR_LIMIT_32BIT ? 14 : 19)
709 +#endif
710 +
711 /* $0 is set by ld.so to a pointer to a function which might be
712 registered using atexit. This provides a mean for the dynamic
713 linker to call DT_FINI functions for shared libraries that have
714 diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h
715 index aab14a0..b4fa3e7 100644
716 --- a/arch/alpha/include/asm/pgalloc.h
717 +++ b/arch/alpha/include/asm/pgalloc.h
718 @@ -29,6 +29,12 @@ pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd)
719 pgd_set(pgd, pmd);
720 }
721
722 +static inline void
723 +pgd_populate_kernel(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd)
724 +{
725 + pgd_populate(mm, pgd, pmd);
726 +}
727 +
728 extern pgd_t *pgd_alloc(struct mm_struct *mm);
729
730 static inline void
731 diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
732 index a9a1195..e9b8417 100644
733 --- a/arch/alpha/include/asm/pgtable.h
734 +++ b/arch/alpha/include/asm/pgtable.h
735 @@ -101,6 +101,17 @@ struct vm_area_struct;
736 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
737 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
738 #define PAGE_READONLY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
739 +
740 +#ifdef CONFIG_PAX_PAGEEXEC
741 +# define PAGE_SHARED_NOEXEC __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOE)
742 +# define PAGE_COPY_NOEXEC __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW | _PAGE_FOE)
743 +# define PAGE_READONLY_NOEXEC __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW | _PAGE_FOE)
744 +#else
745 +# define PAGE_SHARED_NOEXEC PAGE_SHARED
746 +# define PAGE_COPY_NOEXEC PAGE_COPY
747 +# define PAGE_READONLY_NOEXEC PAGE_READONLY
748 +#endif
749 +
750 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
751
752 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
753 diff --git a/arch/alpha/kernel/module.c b/arch/alpha/kernel/module.c
754 index 2fd00b7..cfd5069 100644
755 --- a/arch/alpha/kernel/module.c
756 +++ b/arch/alpha/kernel/module.c
757 @@ -160,7 +160,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
758
759 /* The small sections were sorted to the end of the segment.
760 The following should definitely cover them. */
761 - gp = (u64)me->module_core + me->core_size - 0x8000;
762 + gp = (u64)me->module_core_rw + me->core_size_rw - 0x8000;
763 got = sechdrs[me->arch.gotsecindex].sh_addr;
764
765 for (i = 0; i < n; i++) {
766 diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
767 index 36dc91a..6769cb0 100644
768 --- a/arch/alpha/kernel/osf_sys.c
769 +++ b/arch/alpha/kernel/osf_sys.c
770 @@ -1295,10 +1295,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
771 generic version except that we know how to honor ADDR_LIMIT_32BIT. */
772
773 static unsigned long
774 -arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
775 - unsigned long limit)
776 +arch_get_unmapped_area_1(struct file *filp, unsigned long addr, unsigned long len,
777 + unsigned long limit, unsigned long flags)
778 {
779 struct vm_unmapped_area_info info;
780 + unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
781
782 info.flags = 0;
783 info.length = len;
784 @@ -1306,6 +1307,7 @@ arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
785 info.high_limit = limit;
786 info.align_mask = 0;
787 info.align_offset = 0;
788 + info.threadstack_offset = offset;
789 return vm_unmapped_area(&info);
790 }
791
792 @@ -1338,20 +1340,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
793 merely specific addresses, but regions of memory -- perhaps
794 this feature should be incorporated into all ports? */
795
796 +#ifdef CONFIG_PAX_RANDMMAP
797 + if (!(current->mm->pax_flags & MF_PAX_RANDMMAP))
798 +#endif
799 +
800 if (addr) {
801 - addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
802 + addr = arch_get_unmapped_area_1 (filp, PAGE_ALIGN(addr), len, limit, flags);
803 if (addr != (unsigned long) -ENOMEM)
804 return addr;
805 }
806
807 /* Next, try allocating at TASK_UNMAPPED_BASE. */
808 - addr = arch_get_unmapped_area_1 (PAGE_ALIGN(TASK_UNMAPPED_BASE),
809 - len, limit);
810 + addr = arch_get_unmapped_area_1 (filp, PAGE_ALIGN(current->mm->mmap_base), len, limit, flags);
811 +
812 if (addr != (unsigned long) -ENOMEM)
813 return addr;
814
815 /* Finally, try allocating in low memory. */
816 - addr = arch_get_unmapped_area_1 (PAGE_SIZE, len, limit);
817 + addr = arch_get_unmapped_area_1 (filp, PAGE_SIZE, len, limit, flags);
818
819 return addr;
820 }
821 diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
822 index 4a905bd..0a4da53 100644
823 --- a/arch/alpha/mm/fault.c
824 +++ b/arch/alpha/mm/fault.c
825 @@ -52,6 +52,124 @@ __load_new_mm_context(struct mm_struct *next_mm)
826 __reload_thread(pcb);
827 }
828
829 +#ifdef CONFIG_PAX_PAGEEXEC
830 +/*
831 + * PaX: decide what to do with offenders (regs->pc = fault address)
832 + *
833 + * returns 1 when task should be killed
834 + * 2 when patched PLT trampoline was detected
835 + * 3 when unpatched PLT trampoline was detected
836 + */
837 +static int pax_handle_fetch_fault(struct pt_regs *regs)
838 +{
839 +
840 +#ifdef CONFIG_PAX_EMUPLT
841 + int err;
842 +
843 + do { /* PaX: patched PLT emulation #1 */
844 + unsigned int ldah, ldq, jmp;
845 +
846 + err = get_user(ldah, (unsigned int *)regs->pc);
847 + err |= get_user(ldq, (unsigned int *)(regs->pc+4));
848 + err |= get_user(jmp, (unsigned int *)(regs->pc+8));
849 +
850 + if (err)
851 + break;
852 +
853 + if ((ldah & 0xFFFF0000U) == 0x277B0000U &&
854 + (ldq & 0xFFFF0000U) == 0xA77B0000U &&
855 + jmp == 0x6BFB0000U)
856 + {
857 + unsigned long r27, addr;
858 + unsigned long addrh = (ldah | 0xFFFFFFFFFFFF0000UL) << 16;
859 + unsigned long addrl = ldq | 0xFFFFFFFFFFFF0000UL;
860 +
861 + addr = regs->r27 + ((addrh ^ 0x80000000UL) + 0x80000000UL) + ((addrl ^ 0x8000UL) + 0x8000UL);
862 + err = get_user(r27, (unsigned long *)addr);
863 + if (err)
864 + break;
865 +
866 + regs->r27 = r27;
867 + regs->pc = r27;
868 + return 2;
869 + }
870 + } while (0);
871 +
872 + do { /* PaX: patched PLT emulation #2 */
873 + unsigned int ldah, lda, br;
874 +
875 + err = get_user(ldah, (unsigned int *)regs->pc);
876 + err |= get_user(lda, (unsigned int *)(regs->pc+4));
877 + err |= get_user(br, (unsigned int *)(regs->pc+8));
878 +
879 + if (err)
880 + break;
881 +
882 + if ((ldah & 0xFFFF0000U) == 0x277B0000U &&
883 + (lda & 0xFFFF0000U) == 0xA77B0000U &&
884 + (br & 0xFFE00000U) == 0xC3E00000U)
885 + {
886 + unsigned long addr = br | 0xFFFFFFFFFFE00000UL;
887 + unsigned long addrh = (ldah | 0xFFFFFFFFFFFF0000UL) << 16;
888 + unsigned long addrl = lda | 0xFFFFFFFFFFFF0000UL;
889 +
890 + regs->r27 += ((addrh ^ 0x80000000UL) + 0x80000000UL) + ((addrl ^ 0x8000UL) + 0x8000UL);
891 + regs->pc += 12 + (((addr ^ 0x00100000UL) + 0x00100000UL) << 2);
892 + return 2;
893 + }
894 + } while (0);
895 +
896 + do { /* PaX: unpatched PLT emulation */
897 + unsigned int br;
898 +
899 + err = get_user(br, (unsigned int *)regs->pc);
900 +
901 + if (!err && (br & 0xFFE00000U) == 0xC3800000U) {
902 + unsigned int br2, ldq, nop, jmp;
903 + unsigned long addr = br | 0xFFFFFFFFFFE00000UL, resolver;
904 +
905 + addr = regs->pc + 4 + (((addr ^ 0x00100000UL) + 0x00100000UL) << 2);
906 + err = get_user(br2, (unsigned int *)addr);
907 + err |= get_user(ldq, (unsigned int *)(addr+4));
908 + err |= get_user(nop, (unsigned int *)(addr+8));
909 + err |= get_user(jmp, (unsigned int *)(addr+12));
910 + err |= get_user(resolver, (unsigned long *)(addr+16));
911 +
912 + if (err)
913 + break;
914 +
915 + if (br2 == 0xC3600000U &&
916 + ldq == 0xA77B000CU &&
917 + nop == 0x47FF041FU &&
918 + jmp == 0x6B7B0000U)
919 + {
920 + regs->r28 = regs->pc+4;
921 + regs->r27 = addr+16;
922 + regs->pc = resolver;
923 + return 3;
924 + }
925 + }
926 + } while (0);
927 +#endif
928 +
929 + return 1;
930 +}
931 +
932 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
933 +{
934 + unsigned long i;
935 +
936 + printk(KERN_ERR "PAX: bytes at PC: ");
937 + for (i = 0; i < 5; i++) {
938 + unsigned int c;
939 + if (get_user(c, (unsigned int *)pc+i))
940 + printk(KERN_CONT "???????? ");
941 + else
942 + printk(KERN_CONT "%08x ", c);
943 + }
944 + printk("\n");
945 +}
946 +#endif
947
948 /*
949 * This routine handles page faults. It determines the address,
950 @@ -132,8 +250,29 @@ retry:
951 good_area:
952 si_code = SEGV_ACCERR;
953 if (cause < 0) {
954 - if (!(vma->vm_flags & VM_EXEC))
955 + if (!(vma->vm_flags & VM_EXEC)) {
956 +
957 +#ifdef CONFIG_PAX_PAGEEXEC
958 + if (!(mm->pax_flags & MF_PAX_PAGEEXEC) || address != regs->pc)
959 + goto bad_area;
960 +
961 + up_read(&mm->mmap_sem);
962 + switch (pax_handle_fetch_fault(regs)) {
963 +
964 +#ifdef CONFIG_PAX_EMUPLT
965 + case 2:
966 + case 3:
967 + return;
968 +#endif
969 +
970 + }
971 + pax_report_fault(regs, (void *)regs->pc, (void *)rdusp());
972 + do_group_exit(SIGKILL);
973 +#else
974 goto bad_area;
975 +#endif
976 +
977 + }
978 } else if (!cause) {
979 /* Allow reads even for write-only mappings */
980 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
981 diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
982 index ede2526..9e12300 100644
983 --- a/arch/arm/Kconfig
984 +++ b/arch/arm/Kconfig
985 @@ -1770,7 +1770,7 @@ config ALIGNMENT_TRAP
986
987 config UACCESS_WITH_MEMCPY
988 bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
989 - depends on MMU
990 + depends on MMU && !PAX_MEMORY_UDEREF
991 default y if CPU_FEROCEON
992 help
993 Implement faster copy_to_user and clear_user methods for CPU
994 @@ -2006,6 +2006,7 @@ config KEXEC
995 bool "Kexec system call (EXPERIMENTAL)"
996 depends on (!SMP || PM_SLEEP_SMP)
997 depends on !CPU_V7M
998 + depends on !GRKERNSEC_KMEM
999 help
1000 kexec is a system call that implements the ability to shutdown your
1001 current kernel, and to start another kernel. It is like a reboot
1002 diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
1003 index e22c119..abe7041 100644
1004 --- a/arch/arm/include/asm/atomic.h
1005 +++ b/arch/arm/include/asm/atomic.h
1006 @@ -18,17 +18,41 @@
1007 #include <asm/barrier.h>
1008 #include <asm/cmpxchg.h>
1009
1010 +#ifdef CONFIG_GENERIC_ATOMIC64
1011 +#include <asm-generic/atomic64.h>
1012 +#endif
1013 +
1014 #define ATOMIC_INIT(i) { (i) }
1015
1016 #ifdef __KERNEL__
1017
1018 +#ifdef CONFIG_THUMB2_KERNEL
1019 +#define REFCOUNT_TRAP_INSN "bkpt 0xf1"
1020 +#else
1021 +#define REFCOUNT_TRAP_INSN "bkpt 0xf103"
1022 +#endif
1023 +
1024 +#define _ASM_EXTABLE(from, to) \
1025 +" .pushsection __ex_table,\"a\"\n"\
1026 +" .align 3\n" \
1027 +" .long " #from ", " #to"\n" \
1028 +" .popsection"
1029 +
1030 /*
1031 * On ARM, ordinary assignment (str instruction) doesn't clear the local
1032 * strex/ldrex monitor on some implementations. The reason we can use it for
1033 * atomic_set() is the clrex or dummy strex done on every exception return.
1034 */
1035 #define atomic_read(v) ACCESS_ONCE((v)->counter)
1036 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
1037 +{
1038 + return ACCESS_ONCE(v->counter);
1039 +}
1040 #define atomic_set(v,i) (((v)->counter) = (i))
1041 +static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
1042 +{
1043 + v->counter = i;
1044 +}
1045
1046 #if __LINUX_ARM_ARCH__ >= 6
1047
1048 @@ -38,26 +62,50 @@
1049 * to ensure that the update happens.
1050 */
1051
1052 -#define ATOMIC_OP(op, c_op, asm_op) \
1053 -static inline void atomic_##op(int i, atomic_t *v) \
1054 +#ifdef CONFIG_PAX_REFCOUNT
1055 +#define __OVERFLOW_POST \
1056 + " bvc 3f\n" \
1057 + "2: " REFCOUNT_TRAP_INSN "\n"\
1058 + "3:\n"
1059 +#define __OVERFLOW_POST_RETURN \
1060 + " bvc 3f\n" \
1061 +" mov %0, %1\n" \
1062 + "2: " REFCOUNT_TRAP_INSN "\n"\
1063 + "3:\n"
1064 +#define __OVERFLOW_EXTABLE \
1065 + "4:\n" \
1066 + _ASM_EXTABLE(2b, 4b)
1067 +#else
1068 +#define __OVERFLOW_POST
1069 +#define __OVERFLOW_POST_RETURN
1070 +#define __OVERFLOW_EXTABLE
1071 +#endif
1072 +
1073 +#define __ATOMIC_OP(op, suffix, c_op, asm_op, post_op, extable) \
1074 +static inline void atomic_##op##suffix(int i, atomic##suffix##_t *v) \
1075 { \
1076 unsigned long tmp; \
1077 int result; \
1078 \
1079 prefetchw(&v->counter); \
1080 - __asm__ __volatile__("@ atomic_" #op "\n" \
1081 + __asm__ __volatile__("@ atomic_" #op #suffix "\n" \
1082 "1: ldrex %0, [%3]\n" \
1083 " " #asm_op " %0, %0, %4\n" \
1084 + post_op \
1085 " strex %1, %0, [%3]\n" \
1086 " teq %1, #0\n" \
1087 -" bne 1b" \
1088 +" bne 1b\n" \
1089 + extable \
1090 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) \
1091 : "r" (&v->counter), "Ir" (i) \
1092 : "cc"); \
1093 } \
1094
1095 -#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
1096 -static inline int atomic_##op##_return(int i, atomic_t *v) \
1097 +#define ATOMIC_OP(op, c_op, asm_op) __ATOMIC_OP(op, _unchecked, c_op, asm_op, , )\
1098 + __ATOMIC_OP(op, , c_op, asm_op##s, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
1099 +
1100 +#define __ATOMIC_OP_RETURN(op, suffix, c_op, asm_op, post_op, extable) \
1101 +static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t *v)\
1102 { \
1103 unsigned long tmp; \
1104 int result; \
1105 @@ -65,12 +113,14 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
1106 smp_mb(); \
1107 prefetchw(&v->counter); \
1108 \
1109 - __asm__ __volatile__("@ atomic_" #op "_return\n" \
1110 + __asm__ __volatile__("@ atomic_" #op "_return" #suffix "\n" \
1111 "1: ldrex %0, [%3]\n" \
1112 " " #asm_op " %0, %0, %4\n" \
1113 + post_op \
1114 " strex %1, %0, [%3]\n" \
1115 " teq %1, #0\n" \
1116 -" bne 1b" \
1117 +" bne 1b\n" \
1118 + extable \
1119 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) \
1120 : "r" (&v->counter), "Ir" (i) \
1121 : "cc"); \
1122 @@ -80,6 +130,9 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
1123 return result; \
1124 }
1125
1126 +#define ATOMIC_OP_RETURN(op, c_op, asm_op) __ATOMIC_OP_RETURN(op, _unchecked, c_op, asm_op, , )\
1127 + __ATOMIC_OP_RETURN(op, , c_op, asm_op##s, __OVERFLOW_POST_RETURN, __OVERFLOW_EXTABLE)
1128 +
1129 static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
1130 {
1131 int oldval;
1132 @@ -115,12 +168,24 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
1133 __asm__ __volatile__ ("@ atomic_add_unless\n"
1134 "1: ldrex %0, [%4]\n"
1135 " teq %0, %5\n"
1136 -" beq 2f\n"
1137 -" add %1, %0, %6\n"
1138 +" beq 4f\n"
1139 +" adds %1, %0, %6\n"
1140 +
1141 +#ifdef CONFIG_PAX_REFCOUNT
1142 +" bvc 3f\n"
1143 +"2: " REFCOUNT_TRAP_INSN "\n"
1144 +"3:\n"
1145 +#endif
1146 +
1147 " strex %2, %1, [%4]\n"
1148 " teq %2, #0\n"
1149 " bne 1b\n"
1150 -"2:"
1151 +"4:"
1152 +
1153 +#ifdef CONFIG_PAX_REFCOUNT
1154 + _ASM_EXTABLE(2b, 4b)
1155 +#endif
1156 +
1157 : "=&r" (oldval), "=&r" (newval), "=&r" (tmp), "+Qo" (v->counter)
1158 : "r" (&v->counter), "r" (u), "r" (a)
1159 : "cc");
1160 @@ -131,14 +196,36 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
1161 return oldval;
1162 }
1163
1164 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *ptr, int old, int new)
1165 +{
1166 + unsigned long oldval, res;
1167 +
1168 + smp_mb();
1169 +
1170 + do {
1171 + __asm__ __volatile__("@ atomic_cmpxchg_unchecked\n"
1172 + "ldrex %1, [%3]\n"
1173 + "mov %0, #0\n"
1174 + "teq %1, %4\n"
1175 + "strexeq %0, %5, [%3]\n"
1176 + : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
1177 + : "r" (&ptr->counter), "Ir" (old), "r" (new)
1178 + : "cc");
1179 + } while (res);
1180 +
1181 + smp_mb();
1182 +
1183 + return oldval;
1184 +}
1185 +
1186 #else /* ARM_ARCH_6 */
1187
1188 #ifdef CONFIG_SMP
1189 #error SMP not supported on pre-ARMv6 CPUs
1190 #endif
1191
1192 -#define ATOMIC_OP(op, c_op, asm_op) \
1193 -static inline void atomic_##op(int i, atomic_t *v) \
1194 +#define __ATOMIC_OP(op, suffix, c_op, asm_op) \
1195 +static inline void atomic_##op##suffix(int i, atomic##suffix##_t *v) \
1196 { \
1197 unsigned long flags; \
1198 \
1199 @@ -147,8 +234,11 @@ static inline void atomic_##op(int i, atomic_t *v) \
1200 raw_local_irq_restore(flags); \
1201 } \
1202
1203 -#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
1204 -static inline int atomic_##op##_return(int i, atomic_t *v) \
1205 +#define ATOMIC_OP(op, c_op, asm_op) __ATOMIC_OP(op, , c_op, asm_op) \
1206 + __ATOMIC_OP(op, _unchecked, c_op, asm_op)
1207 +
1208 +#define __ATOMIC_OP_RETURN(op, suffix, c_op, asm_op) \
1209 +static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t *v)\
1210 { \
1211 unsigned long flags; \
1212 int val; \
1213 @@ -161,6 +251,9 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
1214 return val; \
1215 }
1216
1217 +#define ATOMIC_OP_RETURN(op, c_op, asm_op) __ATOMIC_OP_RETURN(op, , c_op, asm_op)\
1218 + __ATOMIC_OP_RETURN(op, _unchecked, c_op, asm_op)
1219 +
1220 static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
1221 {
1222 int ret;
1223 @@ -175,6 +268,11 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
1224 return ret;
1225 }
1226
1227 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
1228 +{
1229 + return atomic_cmpxchg((atomic_t *)v, old, new);
1230 +}
1231 +
1232 static inline int __atomic_add_unless(atomic_t *v, int a, int u)
1233 {
1234 int c, old;
1235 @@ -196,16 +294,38 @@ ATOMIC_OPS(sub, -=, sub)
1236
1237 #undef ATOMIC_OPS
1238 #undef ATOMIC_OP_RETURN
1239 +#undef __ATOMIC_OP_RETURN
1240 #undef ATOMIC_OP
1241 +#undef __ATOMIC_OP
1242
1243 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
1244 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
1245 +{
1246 + return xchg(&v->counter, new);
1247 +}
1248
1249 #define atomic_inc(v) atomic_add(1, v)
1250 +static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
1251 +{
1252 + atomic_add_unchecked(1, v);
1253 +}
1254 #define atomic_dec(v) atomic_sub(1, v)
1255 +static inline void atomic_dec_unchecked(atomic_unchecked_t *v)
1256 +{
1257 + atomic_sub_unchecked(1, v);
1258 +}
1259
1260 #define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0)
1261 +static inline int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
1262 +{
1263 + return atomic_add_return_unchecked(1, v) == 0;
1264 +}
1265 #define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
1266 #define atomic_inc_return(v) (atomic_add_return(1, v))
1267 +static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
1268 +{
1269 + return atomic_add_return_unchecked(1, v);
1270 +}
1271 #define atomic_dec_return(v) (atomic_sub_return(1, v))
1272 #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
1273
1274 @@ -216,6 +336,14 @@ typedef struct {
1275 long long counter;
1276 } atomic64_t;
1277
1278 +#ifdef CONFIG_PAX_REFCOUNT
1279 +typedef struct {
1280 + long long counter;
1281 +} atomic64_unchecked_t;
1282 +#else
1283 +typedef atomic64_t atomic64_unchecked_t;
1284 +#endif
1285 +
1286 #define ATOMIC64_INIT(i) { (i) }
1287
1288 #ifdef CONFIG_ARM_LPAE
1289 @@ -232,6 +360,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1290 return result;
1291 }
1292
1293 +static inline long long atomic64_read_unchecked(const atomic64_unchecked_t *v)
1294 +{
1295 + long long result;
1296 +
1297 + __asm__ __volatile__("@ atomic64_read_unchecked\n"
1298 +" ldrd %0, %H0, [%1]"
1299 + : "=&r" (result)
1300 + : "r" (&v->counter), "Qo" (v->counter)
1301 + );
1302 +
1303 + return result;
1304 +}
1305 +
1306 static inline void atomic64_set(atomic64_t *v, long long i)
1307 {
1308 __asm__ __volatile__("@ atomic64_set\n"
1309 @@ -240,6 +381,15 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1310 : "r" (&v->counter), "r" (i)
1311 );
1312 }
1313 +
1314 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long long i)
1315 +{
1316 + __asm__ __volatile__("@ atomic64_set_unchecked\n"
1317 +" strd %2, %H2, [%1]"
1318 + : "=Qo" (v->counter)
1319 + : "r" (&v->counter), "r" (i)
1320 + );
1321 +}
1322 #else
1323 static inline long long atomic64_read(const atomic64_t *v)
1324 {
1325 @@ -254,6 +404,19 @@ static inline long long atomic64_read(const atomic64_t *v)
1326 return result;
1327 }
1328
1329 +static inline long long atomic64_read_unchecked(const atomic64_unchecked_t *v)
1330 +{
1331 + long long result;
1332 +
1333 + __asm__ __volatile__("@ atomic64_read_unchecked\n"
1334 +" ldrexd %0, %H0, [%1]"
1335 + : "=&r" (result)
1336 + : "r" (&v->counter), "Qo" (v->counter)
1337 + );
1338 +
1339 + return result;
1340 +}
1341 +
1342 static inline void atomic64_set(atomic64_t *v, long long i)
1343 {
1344 long long tmp;
1345 @@ -268,29 +431,57 @@ static inline void atomic64_set(atomic64_t *v, long long i)
1346 : "r" (&v->counter), "r" (i)
1347 : "cc");
1348 }
1349 +
1350 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long long i)
1351 +{
1352 + long long tmp;
1353 +
1354 + prefetchw(&v->counter);
1355 + __asm__ __volatile__("@ atomic64_set_unchecked\n"
1356 +"1: ldrexd %0, %H0, [%2]\n"
1357 +" strexd %0, %3, %H3, [%2]\n"
1358 +" teq %0, #0\n"
1359 +" bne 1b"
1360 + : "=&r" (tmp), "=Qo" (v->counter)
1361 + : "r" (&v->counter), "r" (i)
1362 + : "cc");
1363 +}
1364 #endif
1365
1366 -#define ATOMIC64_OP(op, op1, op2) \
1367 -static inline void atomic64_##op(long long i, atomic64_t *v) \
1368 +#undef __OVERFLOW_POST_RETURN
1369 +#define __OVERFLOW_POST_RETURN \
1370 + " bvc 3f\n" \
1371 +" mov %0, %1\n" \
1372 +" mov %H0, %H1\n" \
1373 + "2: " REFCOUNT_TRAP_INSN "\n"\
1374 + "3:\n"
1375 +
1376 +#define __ATOMIC64_OP(op, suffix, op1, op2, post_op, extable) \
1377 +static inline void atomic64_##op##suffix(long long i, atomic64##suffix##_t *v)\
1378 { \
1379 long long result; \
1380 unsigned long tmp; \
1381 \
1382 prefetchw(&v->counter); \
1383 - __asm__ __volatile__("@ atomic64_" #op "\n" \
1384 + __asm__ __volatile__("@ atomic64_" #op #suffix "\n" \
1385 "1: ldrexd %0, %H0, [%3]\n" \
1386 " " #op1 " %Q0, %Q0, %Q4\n" \
1387 " " #op2 " %R0, %R0, %R4\n" \
1388 + post_op \
1389 " strexd %1, %0, %H0, [%3]\n" \
1390 " teq %1, #0\n" \
1391 -" bne 1b" \
1392 +" bne 1b\n" \
1393 + extable \
1394 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) \
1395 : "r" (&v->counter), "r" (i) \
1396 : "cc"); \
1397 } \
1398
1399 -#define ATOMIC64_OP_RETURN(op, op1, op2) \
1400 -static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
1401 +#define ATOMIC64_OP(op, op1, op2) __ATOMIC64_OP(op, _unchecked, op1, op2, , ) \
1402 + __ATOMIC64_OP(op, , op1, op2##s, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
1403 +
1404 +#define __ATOMIC64_OP_RETURN(op, suffix, op1, op2, post_op, extable) \
1405 +static inline long long atomic64_##op##_return##suffix(long long i, atomic64##suffix##_t *v) \
1406 { \
1407 long long result; \
1408 unsigned long tmp; \
1409 @@ -298,13 +489,15 @@ static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
1410 smp_mb(); \
1411 prefetchw(&v->counter); \
1412 \
1413 - __asm__ __volatile__("@ atomic64_" #op "_return\n" \
1414 + __asm__ __volatile__("@ atomic64_" #op "_return" #suffix "\n" \
1415 "1: ldrexd %0, %H0, [%3]\n" \
1416 " " #op1 " %Q0, %Q0, %Q4\n" \
1417 " " #op2 " %R0, %R0, %R4\n" \
1418 + post_op \
1419 " strexd %1, %0, %H0, [%3]\n" \
1420 " teq %1, #0\n" \
1421 -" bne 1b" \
1422 +" bne 1b\n" \
1423 + extable \
1424 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) \
1425 : "r" (&v->counter), "r" (i) \
1426 : "cc"); \
1427 @@ -314,6 +507,9 @@ static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
1428 return result; \
1429 }
1430
1431 +#define ATOMIC64_OP_RETURN(op, op1, op2) __ATOMIC64_OP_RETURN(op, _unchecked, op1, op2, , ) \
1432 + __ATOMIC64_OP_RETURN(op, , op1, op2##s, __OVERFLOW_POST_RETURN, __OVERFLOW_EXTABLE)
1433 +
1434 #define ATOMIC64_OPS(op, op1, op2) \
1435 ATOMIC64_OP(op, op1, op2) \
1436 ATOMIC64_OP_RETURN(op, op1, op2)
1437 @@ -323,7 +519,12 @@ ATOMIC64_OPS(sub, subs, sbc)
1438
1439 #undef ATOMIC64_OPS
1440 #undef ATOMIC64_OP_RETURN
1441 +#undef __ATOMIC64_OP_RETURN
1442 #undef ATOMIC64_OP
1443 +#undef __ATOMIC64_OP
1444 +#undef __OVERFLOW_EXTABLE
1445 +#undef __OVERFLOW_POST_RETURN
1446 +#undef __OVERFLOW_POST
1447
1448 static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
1449 long long new)
1450 @@ -351,6 +552,31 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
1451 return oldval;
1452 }
1453
1454 +static inline long long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *ptr, long long old,
1455 + long long new)
1456 +{
1457 + long long oldval;
1458 + unsigned long res;
1459 +
1460 + smp_mb();
1461 +
1462 + do {
1463 + __asm__ __volatile__("@ atomic64_cmpxchg_unchecked\n"
1464 + "ldrexd %1, %H1, [%3]\n"
1465 + "mov %0, #0\n"
1466 + "teq %1, %4\n"
1467 + "teqeq %H1, %H4\n"
1468 + "strexdeq %0, %5, %H5, [%3]"
1469 + : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
1470 + : "r" (&ptr->counter), "r" (old), "r" (new)
1471 + : "cc");
1472 + } while (res);
1473 +
1474 + smp_mb();
1475 +
1476 + return oldval;
1477 +}
1478 +
1479 static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
1480 {
1481 long long result;
1482 @@ -376,21 +602,35 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
1483 static inline long long atomic64_dec_if_positive(atomic64_t *v)
1484 {
1485 long long result;
1486 - unsigned long tmp;
1487 + u64 tmp;
1488
1489 smp_mb();
1490 prefetchw(&v->counter);
1491
1492 __asm__ __volatile__("@ atomic64_dec_if_positive\n"
1493 -"1: ldrexd %0, %H0, [%3]\n"
1494 -" subs %Q0, %Q0, #1\n"
1495 -" sbc %R0, %R0, #0\n"
1496 +"1: ldrexd %1, %H1, [%3]\n"
1497 +" subs %Q0, %Q1, #1\n"
1498 +" sbcs %R0, %R1, #0\n"
1499 +
1500 +#ifdef CONFIG_PAX_REFCOUNT
1501 +" bvc 3f\n"
1502 +" mov %Q0, %Q1\n"
1503 +" mov %R0, %R1\n"
1504 +"2: " REFCOUNT_TRAP_INSN "\n"
1505 +"3:\n"
1506 +#endif
1507 +
1508 " teq %R0, #0\n"
1509 -" bmi 2f\n"
1510 +" bmi 4f\n"
1511 " strexd %1, %0, %H0, [%3]\n"
1512 " teq %1, #0\n"
1513 " bne 1b\n"
1514 -"2:"
1515 +"4:\n"
1516 +
1517 +#ifdef CONFIG_PAX_REFCOUNT
1518 + _ASM_EXTABLE(2b, 4b)
1519 +#endif
1520 +
1521 : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
1522 : "r" (&v->counter)
1523 : "cc");
1524 @@ -414,13 +654,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1525 " teq %0, %5\n"
1526 " teqeq %H0, %H5\n"
1527 " moveq %1, #0\n"
1528 -" beq 2f\n"
1529 +" beq 4f\n"
1530 " adds %Q0, %Q0, %Q6\n"
1531 -" adc %R0, %R0, %R6\n"
1532 +" adcs %R0, %R0, %R6\n"
1533 +
1534 +#ifdef CONFIG_PAX_REFCOUNT
1535 +" bvc 3f\n"
1536 +"2: " REFCOUNT_TRAP_INSN "\n"
1537 +"3:\n"
1538 +#endif
1539 +
1540 " strexd %2, %0, %H0, [%4]\n"
1541 " teq %2, #0\n"
1542 " bne 1b\n"
1543 -"2:"
1544 +"4:\n"
1545 +
1546 +#ifdef CONFIG_PAX_REFCOUNT
1547 + _ASM_EXTABLE(2b, 4b)
1548 +#endif
1549 +
1550 : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter)
1551 : "r" (&v->counter), "r" (u), "r" (a)
1552 : "cc");
1553 @@ -433,10 +685,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
1554
1555 #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0)
1556 #define atomic64_inc(v) atomic64_add(1LL, (v))
1557 +#define atomic64_inc_unchecked(v) atomic64_add_unchecked(1LL, (v))
1558 #define atomic64_inc_return(v) atomic64_add_return(1LL, (v))
1559 +#define atomic64_inc_return_unchecked(v) atomic64_add_return_unchecked(1LL, (v))
1560 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
1561 #define atomic64_sub_and_test(a, v) (atomic64_sub_return((a), (v)) == 0)
1562 #define atomic64_dec(v) atomic64_sub(1LL, (v))
1563 +#define atomic64_dec_unchecked(v) atomic64_sub_unchecked(1LL, (v))
1564 #define atomic64_dec_return(v) atomic64_sub_return(1LL, (v))
1565 #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0)
1566 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL)
1567 diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
1568 index 6c2327e..85beac4 100644
1569 --- a/arch/arm/include/asm/barrier.h
1570 +++ b/arch/arm/include/asm/barrier.h
1571 @@ -67,7 +67,7 @@
1572 do { \
1573 compiletime_assert_atomic_type(*p); \
1574 smp_mb(); \
1575 - ACCESS_ONCE(*p) = (v); \
1576 + ACCESS_ONCE_RW(*p) = (v); \
1577 } while (0)
1578
1579 #define smp_load_acquire(p) \
1580 diff --git a/arch/arm/include/asm/cache.h b/arch/arm/include/asm/cache.h
1581 index 75fe66b..ba3dee4 100644
1582 --- a/arch/arm/include/asm/cache.h
1583 +++ b/arch/arm/include/asm/cache.h
1584 @@ -4,8 +4,10 @@
1585 #ifndef __ASMARM_CACHE_H
1586 #define __ASMARM_CACHE_H
1587
1588 +#include <linux/const.h>
1589 +
1590 #define L1_CACHE_SHIFT CONFIG_ARM_L1_CACHE_SHIFT
1591 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
1592 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
1593
1594 /*
1595 * Memory returned by kmalloc() may be used for DMA, so we must make
1596 @@ -24,5 +26,6 @@
1597 #endif
1598
1599 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
1600 +#define __read_only __attribute__ ((__section__(".data..read_only")))
1601
1602 #endif
1603 diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
1604 index 4812cda..9da8116 100644
1605 --- a/arch/arm/include/asm/cacheflush.h
1606 +++ b/arch/arm/include/asm/cacheflush.h
1607 @@ -116,7 +116,7 @@ struct cpu_cache_fns {
1608 void (*dma_unmap_area)(const void *, size_t, int);
1609
1610 void (*dma_flush_range)(const void *, const void *);
1611 -};
1612 +} __no_const;
1613
1614 /*
1615 * Select the calling method
1616 diff --git a/arch/arm/include/asm/checksum.h b/arch/arm/include/asm/checksum.h
1617 index 5233151..87a71fa 100644
1618 --- a/arch/arm/include/asm/checksum.h
1619 +++ b/arch/arm/include/asm/checksum.h
1620 @@ -37,7 +37,19 @@ __wsum
1621 csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum);
1622
1623 __wsum
1624 -csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr);
1625 +__csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr);
1626 +
1627 +static inline __wsum
1628 +csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr)
1629 +{
1630 + __wsum ret;
1631 + pax_open_userland();
1632 + ret = __csum_partial_copy_from_user(src, dst, len, sum, err_ptr);
1633 + pax_close_userland();
1634 + return ret;
1635 +}
1636 +
1637 +
1638
1639 /*
1640 * Fold a partial checksum without adding pseudo headers
1641 diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
1642 index 1692a05..1835802 100644
1643 --- a/arch/arm/include/asm/cmpxchg.h
1644 +++ b/arch/arm/include/asm/cmpxchg.h
1645 @@ -107,6 +107,10 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
1646 (__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), \
1647 sizeof(*(ptr))); \
1648 })
1649 +#define xchg_unchecked(ptr, x) ({ \
1650 + (__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), \
1651 + sizeof(*(ptr))); \
1652 +})
1653
1654 #include <asm-generic/cmpxchg-local.h>
1655
1656 diff --git a/arch/arm/include/asm/cpuidle.h b/arch/arm/include/asm/cpuidle.h
1657 index 0f84249..8e83c55 100644
1658 --- a/arch/arm/include/asm/cpuidle.h
1659 +++ b/arch/arm/include/asm/cpuidle.h
1660 @@ -32,7 +32,7 @@ struct device_node;
1661 struct cpuidle_ops {
1662 int (*suspend)(int cpu, unsigned long arg);
1663 int (*init)(struct device_node *, int cpu);
1664 -};
1665 +} __no_const;
1666
1667 struct of_cpuidle_method {
1668 const char *method;
1669 diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h
1670 index 6ddbe44..b5e38b1a 100644
1671 --- a/arch/arm/include/asm/domain.h
1672 +++ b/arch/arm/include/asm/domain.h
1673 @@ -48,18 +48,37 @@
1674 * Domain types
1675 */
1676 #define DOMAIN_NOACCESS 0
1677 -#define DOMAIN_CLIENT 1
1678 #ifdef CONFIG_CPU_USE_DOMAINS
1679 +#define DOMAIN_USERCLIENT 1
1680 +#define DOMAIN_KERNELCLIENT 1
1681 #define DOMAIN_MANAGER 3
1682 +#define DOMAIN_VECTORS DOMAIN_USER
1683 #else
1684 +
1685 +#ifdef CONFIG_PAX_KERNEXEC
1686 #define DOMAIN_MANAGER 1
1687 +#define DOMAIN_KERNEXEC 3
1688 +#else
1689 +#define DOMAIN_MANAGER 1
1690 +#endif
1691 +
1692 +#ifdef CONFIG_PAX_MEMORY_UDEREF
1693 +#define DOMAIN_USERCLIENT 0
1694 +#define DOMAIN_UDEREF 1
1695 +#define DOMAIN_VECTORS DOMAIN_KERNEL
1696 +#else
1697 +#define DOMAIN_USERCLIENT 1
1698 +#define DOMAIN_VECTORS DOMAIN_USER
1699 +#endif
1700 +#define DOMAIN_KERNELCLIENT 1
1701 +
1702 #endif
1703
1704 #define domain_val(dom,type) ((type) << (2*(dom)))
1705
1706 #ifndef __ASSEMBLY__
1707
1708 -#ifdef CONFIG_CPU_USE_DOMAINS
1709 +#if defined(CONFIG_CPU_USE_DOMAINS) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
1710 static inline void set_domain(unsigned val)
1711 {
1712 asm volatile(
1713 @@ -68,15 +87,7 @@ static inline void set_domain(unsigned val)
1714 isb();
1715 }
1716
1717 -#define modify_domain(dom,type) \
1718 - do { \
1719 - struct thread_info *thread = current_thread_info(); \
1720 - unsigned int domain = thread->cpu_domain; \
1721 - domain &= ~domain_val(dom, DOMAIN_MANAGER); \
1722 - thread->cpu_domain = domain | domain_val(dom, type); \
1723 - set_domain(thread->cpu_domain); \
1724 - } while (0)
1725 -
1726 +extern void modify_domain(unsigned int dom, unsigned int type);
1727 #else
1728 static inline void set_domain(unsigned val) { }
1729 static inline void modify_domain(unsigned dom, unsigned type) { }
1730 diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
1731 index d2315ff..f60b47b 100644
1732 --- a/arch/arm/include/asm/elf.h
1733 +++ b/arch/arm/include/asm/elf.h
1734 @@ -117,7 +117,14 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
1735 the loader. We need to make sure that it is out of the way of the program
1736 that it will "exec", and that there is sufficient room for the brk. */
1737
1738 -#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
1739 +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
1740 +
1741 +#ifdef CONFIG_PAX_ASLR
1742 +#define PAX_ELF_ET_DYN_BASE 0x00008000UL
1743 +
1744 +#define PAX_DELTA_MMAP_LEN ((current->personality == PER_LINUX_32BIT) ? 16 : 10)
1745 +#define PAX_DELTA_STACK_LEN ((current->personality == PER_LINUX_32BIT) ? 16 : 10)
1746 +#endif
1747
1748 /* When the program starts, a1 contains a pointer to a function to be
1749 registered with atexit, as per the SVR4 ABI. A value of 0 means we
1750 diff --git a/arch/arm/include/asm/fncpy.h b/arch/arm/include/asm/fncpy.h
1751 index de53547..52b9a28 100644
1752 --- a/arch/arm/include/asm/fncpy.h
1753 +++ b/arch/arm/include/asm/fncpy.h
1754 @@ -81,7 +81,9 @@
1755 BUG_ON((uintptr_t)(dest_buf) & (FNCPY_ALIGN - 1) || \
1756 (__funcp_address & ~(uintptr_t)1 & (FNCPY_ALIGN - 1))); \
1757 \
1758 + pax_open_kernel(); \
1759 memcpy(dest_buf, (void const *)(__funcp_address & ~1), size); \
1760 + pax_close_kernel(); \
1761 flush_icache_range((unsigned long)(dest_buf), \
1762 (unsigned long)(dest_buf) + (size)); \
1763 \
1764 diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
1765 index 5eed828..365e018 100644
1766 --- a/arch/arm/include/asm/futex.h
1767 +++ b/arch/arm/include/asm/futex.h
1768 @@ -46,6 +46,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1769 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
1770 return -EFAULT;
1771
1772 + pax_open_userland();
1773 +
1774 smp_mb();
1775 /* Prefetching cannot fault */
1776 prefetchw(uaddr);
1777 @@ -63,6 +65,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1778 : "cc", "memory");
1779 smp_mb();
1780
1781 + pax_close_userland();
1782 +
1783 *uval = val;
1784 return ret;
1785 }
1786 @@ -94,6 +98,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1787 return -EFAULT;
1788
1789 preempt_disable();
1790 + pax_open_userland();
1791 +
1792 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
1793 "1: " TUSER(ldr) " %1, [%4]\n"
1794 " teq %1, %2\n"
1795 @@ -104,6 +110,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
1796 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
1797 : "cc", "memory");
1798
1799 + pax_close_userland();
1800 +
1801 *uval = val;
1802 preempt_enable();
1803
1804 @@ -131,6 +139,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
1805 preempt_disable();
1806 #endif
1807 pagefault_disable();
1808 + pax_open_userland();
1809
1810 switch (op) {
1811 case FUTEX_OP_SET:
1812 @@ -152,6 +161,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
1813 ret = -ENOSYS;
1814 }
1815
1816 + pax_close_userland();
1817 pagefault_enable();
1818 #ifndef CONFIG_SMP
1819 preempt_enable();
1820 diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h
1821 index 83eb2f7..ed77159 100644
1822 --- a/arch/arm/include/asm/kmap_types.h
1823 +++ b/arch/arm/include/asm/kmap_types.h
1824 @@ -4,6 +4,6 @@
1825 /*
1826 * This is the "bare minimum". AIO seems to require this.
1827 */
1828 -#define KM_TYPE_NR 16
1829 +#define KM_TYPE_NR 17
1830
1831 #endif
1832 diff --git a/arch/arm/include/asm/mach/dma.h b/arch/arm/include/asm/mach/dma.h
1833 index 9e614a1..3302cca 100644
1834 --- a/arch/arm/include/asm/mach/dma.h
1835 +++ b/arch/arm/include/asm/mach/dma.h
1836 @@ -22,7 +22,7 @@ struct dma_ops {
1837 int (*residue)(unsigned int, dma_t *); /* optional */
1838 int (*setspeed)(unsigned int, dma_t *, int); /* optional */
1839 const char *type;
1840 -};
1841 +} __do_const;
1842
1843 struct dma_struct {
1844 void *addr; /* single DMA address */
1845 diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
1846 index f98c7f3..e5c626d 100644
1847 --- a/arch/arm/include/asm/mach/map.h
1848 +++ b/arch/arm/include/asm/mach/map.h
1849 @@ -23,17 +23,19 @@ struct map_desc {
1850
1851 /* types 0-3 are defined in asm/io.h */
1852 enum {
1853 - MT_UNCACHED = 4,
1854 - MT_CACHECLEAN,
1855 - MT_MINICLEAN,
1856 + MT_UNCACHED_RW = 4,
1857 + MT_CACHECLEAN_RO,
1858 + MT_MINICLEAN_RO,
1859 MT_LOW_VECTORS,
1860 MT_HIGH_VECTORS,
1861 - MT_MEMORY_RWX,
1862 + __MT_MEMORY_RWX,
1863 MT_MEMORY_RW,
1864 - MT_ROM,
1865 - MT_MEMORY_RWX_NONCACHED,
1866 + MT_MEMORY_RX,
1867 + MT_ROM_RX,
1868 + MT_MEMORY_RW_NONCACHED,
1869 + MT_MEMORY_RX_NONCACHED,
1870 MT_MEMORY_RW_DTCM,
1871 - MT_MEMORY_RWX_ITCM,
1872 + MT_MEMORY_RX_ITCM,
1873 MT_MEMORY_RW_SO,
1874 MT_MEMORY_DMA_READY,
1875 };
1876 diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
1877 index 563b92f..689d58e 100644
1878 --- a/arch/arm/include/asm/outercache.h
1879 +++ b/arch/arm/include/asm/outercache.h
1880 @@ -39,7 +39,7 @@ struct outer_cache_fns {
1881 /* This is an ARM L2C thing */
1882 void (*write_sec)(unsigned long, unsigned);
1883 void (*configure)(const struct l2x0_regs *);
1884 -};
1885 +} __no_const;
1886
1887 extern struct outer_cache_fns outer_cache;
1888
1889 diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h
1890 index 4355f0e..cd9168e 100644
1891 --- a/arch/arm/include/asm/page.h
1892 +++ b/arch/arm/include/asm/page.h
1893 @@ -23,6 +23,7 @@
1894
1895 #else
1896
1897 +#include <linux/compiler.h>
1898 #include <asm/glue.h>
1899
1900 /*
1901 @@ -114,7 +115,7 @@ struct cpu_user_fns {
1902 void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
1903 void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
1904 unsigned long vaddr, struct vm_area_struct *vma);
1905 -};
1906 +} __no_const;
1907
1908 #ifdef MULTI_USER
1909 extern struct cpu_user_fns cpu_user;
1910 diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h
1911 index 19cfab5..3f5c7e9 100644
1912 --- a/arch/arm/include/asm/pgalloc.h
1913 +++ b/arch/arm/include/asm/pgalloc.h
1914 @@ -17,6 +17,7 @@
1915 #include <asm/processor.h>
1916 #include <asm/cacheflush.h>
1917 #include <asm/tlbflush.h>
1918 +#include <asm/system_info.h>
1919
1920 #define check_pgt_cache() do { } while (0)
1921
1922 @@ -43,6 +44,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
1923 set_pud(pud, __pud(__pa(pmd) | PMD_TYPE_TABLE));
1924 }
1925
1926 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
1927 +{
1928 + pud_populate(mm, pud, pmd);
1929 +}
1930 +
1931 #else /* !CONFIG_ARM_LPAE */
1932
1933 /*
1934 @@ -51,6 +57,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
1935 #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); })
1936 #define pmd_free(mm, pmd) do { } while (0)
1937 #define pud_populate(mm,pmd,pte) BUG()
1938 +#define pud_populate_kernel(mm,pmd,pte) BUG()
1939
1940 #endif /* CONFIG_ARM_LPAE */
1941
1942 @@ -128,6 +135,19 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
1943 __free_page(pte);
1944 }
1945
1946 +static inline void __section_update(pmd_t *pmdp, unsigned long addr, pmdval_t prot)
1947 +{
1948 +#ifdef CONFIG_ARM_LPAE
1949 + pmdp[0] = __pmd(pmd_val(pmdp[0]) | prot);
1950 +#else
1951 + if (addr & SECTION_SIZE)
1952 + pmdp[1] = __pmd(pmd_val(pmdp[1]) | prot);
1953 + else
1954 + pmdp[0] = __pmd(pmd_val(pmdp[0]) | prot);
1955 +#endif
1956 + flush_pmd_entry(pmdp);
1957 +}
1958 +
1959 static inline void __pmd_populate(pmd_t *pmdp, phys_addr_t pte,
1960 pmdval_t prot)
1961 {
1962 diff --git a/arch/arm/include/asm/pgtable-2level-hwdef.h b/arch/arm/include/asm/pgtable-2level-hwdef.h
1963 index 5e68278..1869bae 100644
1964 --- a/arch/arm/include/asm/pgtable-2level-hwdef.h
1965 +++ b/arch/arm/include/asm/pgtable-2level-hwdef.h
1966 @@ -27,7 +27,7 @@
1967 /*
1968 * - section
1969 */
1970 -#define PMD_SECT_PXN (_AT(pmdval_t, 1) << 0) /* v7 */
1971 +#define PMD_SECT_PXN (_AT(pmdval_t, 1) << 0) /* v7 */
1972 #define PMD_SECT_BUFFERABLE (_AT(pmdval_t, 1) << 2)
1973 #define PMD_SECT_CACHEABLE (_AT(pmdval_t, 1) << 3)
1974 #define PMD_SECT_XN (_AT(pmdval_t, 1) << 4) /* v6 */
1975 @@ -39,6 +39,7 @@
1976 #define PMD_SECT_nG (_AT(pmdval_t, 1) << 17) /* v6 */
1977 #define PMD_SECT_SUPER (_AT(pmdval_t, 1) << 18) /* v6 */
1978 #define PMD_SECT_AF (_AT(pmdval_t, 0))
1979 +#define PMD_SECT_RDONLY (_AT(pmdval_t, 0))
1980
1981 #define PMD_SECT_UNCACHED (_AT(pmdval_t, 0))
1982 #define PMD_SECT_BUFFERED (PMD_SECT_BUFFERABLE)
1983 @@ -68,6 +69,7 @@
1984 * - extended small page/tiny page
1985 */
1986 #define PTE_EXT_XN (_AT(pteval_t, 1) << 0) /* v6 */
1987 +#define PTE_EXT_PXN (_AT(pteval_t, 1) << 2) /* v7 */
1988 #define PTE_EXT_AP_MASK (_AT(pteval_t, 3) << 4)
1989 #define PTE_EXT_AP0 (_AT(pteval_t, 1) << 4)
1990 #define PTE_EXT_AP1 (_AT(pteval_t, 2) << 4)
1991 diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h
1992 index aeddd28..207745c 100644
1993 --- a/arch/arm/include/asm/pgtable-2level.h
1994 +++ b/arch/arm/include/asm/pgtable-2level.h
1995 @@ -127,6 +127,9 @@
1996 #define L_PTE_SHARED (_AT(pteval_t, 1) << 10) /* shared(v6), coherent(xsc3) */
1997 #define L_PTE_NONE (_AT(pteval_t, 1) << 11)
1998
1999 +/* Two-level page tables only have PXN in the PGD, not in the PTE. */
2000 +#define L_PTE_PXN (_AT(pteval_t, 0))
2001 +
2002 /*
2003 * These are the memory types, defined to be compatible with
2004 * pre-ARMv6 CPUs cacheable and bufferable bits: n/a,n/a,C,B
2005 diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h
2006 index a745a2a..481350a 100644
2007 --- a/arch/arm/include/asm/pgtable-3level.h
2008 +++ b/arch/arm/include/asm/pgtable-3level.h
2009 @@ -80,6 +80,7 @@
2010 #define L_PTE_USER (_AT(pteval_t, 1) << 6) /* AP[1] */
2011 #define L_PTE_SHARED (_AT(pteval_t, 3) << 8) /* SH[1:0], inner shareable */
2012 #define L_PTE_YOUNG (_AT(pteval_t, 1) << 10) /* AF */
2013 +#define L_PTE_PXN (_AT(pteval_t, 1) << 53) /* PXN */
2014 #define L_PTE_XN (_AT(pteval_t, 1) << 54) /* XN */
2015 #define L_PTE_DIRTY (_AT(pteval_t, 1) << 55)
2016 #define L_PTE_SPECIAL (_AT(pteval_t, 1) << 56)
2017 @@ -91,10 +92,12 @@
2018 #define L_PMD_SECT_SPLITTING (_AT(pmdval_t, 1) << 56)
2019 #define L_PMD_SECT_NONE (_AT(pmdval_t, 1) << 57)
2020 #define L_PMD_SECT_RDONLY (_AT(pteval_t, 1) << 58)
2021 +#define PMD_SECT_RDONLY PMD_SECT_AP2
2022
2023 /*
2024 * To be used in assembly code with the upper page attributes.
2025 */
2026 +#define L_PTE_PXN_HIGH (1 << (53 - 32))
2027 #define L_PTE_XN_HIGH (1 << (54 - 32))
2028 #define L_PTE_DIRTY_HIGH (1 << (55 - 32))
2029
2030 diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
2031 index f403541..b10df68 100644
2032 --- a/arch/arm/include/asm/pgtable.h
2033 +++ b/arch/arm/include/asm/pgtable.h
2034 @@ -33,6 +33,9 @@
2035 #include <asm/pgtable-2level.h>
2036 #endif
2037
2038 +#define ktla_ktva(addr) (addr)
2039 +#define ktva_ktla(addr) (addr)
2040 +
2041 /*
2042 * Just any arbitrary offset to the start of the vmalloc VM area: the
2043 * current 8MB value just means that there will be a 8MB "hole" after the
2044 @@ -48,6 +51,9 @@
2045 #define LIBRARY_TEXT_START 0x0c000000
2046
2047 #ifndef __ASSEMBLY__
2048 +extern pteval_t __supported_pte_mask;
2049 +extern pmdval_t __supported_pmd_mask;
2050 +
2051 extern void __pte_error(const char *file, int line, pte_t);
2052 extern void __pmd_error(const char *file, int line, pmd_t);
2053 extern void __pgd_error(const char *file, int line, pgd_t);
2054 @@ -56,6 +62,48 @@ extern void __pgd_error(const char *file, int line, pgd_t);
2055 #define pmd_ERROR(pmd) __pmd_error(__FILE__, __LINE__, pmd)
2056 #define pgd_ERROR(pgd) __pgd_error(__FILE__, __LINE__, pgd)
2057
2058 +#define __HAVE_ARCH_PAX_OPEN_KERNEL
2059 +#define __HAVE_ARCH_PAX_CLOSE_KERNEL
2060 +
2061 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2062 +#include <asm/domain.h>
2063 +#include <linux/thread_info.h>
2064 +#include <linux/preempt.h>
2065 +
2066 +static inline int test_domain(int domain, int domaintype)
2067 +{
2068 + return ((current_thread_info()->cpu_domain) & domain_val(domain, 3)) == domain_val(domain, domaintype);
2069 +}
2070 +#endif
2071 +
2072 +#ifdef CONFIG_PAX_KERNEXEC
2073 +static inline unsigned long pax_open_kernel(void) {
2074 +#ifdef CONFIG_ARM_LPAE
2075 + /* TODO */
2076 +#else
2077 + preempt_disable();
2078 + BUG_ON(test_domain(DOMAIN_KERNEL, DOMAIN_KERNEXEC));
2079 + modify_domain(DOMAIN_KERNEL, DOMAIN_KERNEXEC);
2080 +#endif
2081 + return 0;
2082 +}
2083 +
2084 +static inline unsigned long pax_close_kernel(void) {
2085 +#ifdef CONFIG_ARM_LPAE
2086 + /* TODO */
2087 +#else
2088 + BUG_ON(test_domain(DOMAIN_KERNEL, DOMAIN_MANAGER));
2089 + /* DOMAIN_MANAGER = "client" under KERNEXEC */
2090 + modify_domain(DOMAIN_KERNEL, DOMAIN_MANAGER);
2091 + preempt_enable_no_resched();
2092 +#endif
2093 + return 0;
2094 +}
2095 +#else
2096 +static inline unsigned long pax_open_kernel(void) { return 0; }
2097 +static inline unsigned long pax_close_kernel(void) { return 0; }
2098 +#endif
2099 +
2100 /*
2101 * This is the lowest virtual address we can permit any user space
2102 * mapping to be mapped at. This is particularly important for
2103 @@ -75,8 +123,8 @@ extern void __pgd_error(const char *file, int line, pgd_t);
2104 /*
2105 * The pgprot_* and protection_map entries will be fixed up in runtime
2106 * to include the cachable and bufferable bits based on memory policy,
2107 - * as well as any architecture dependent bits like global/ASID and SMP
2108 - * shared mapping bits.
2109 + * as well as any architecture dependent bits like global/ASID, PXN,
2110 + * and SMP shared mapping bits.
2111 */
2112 #define _L_PTE_DEFAULT L_PTE_PRESENT | L_PTE_YOUNG
2113
2114 @@ -307,7 +355,7 @@ static inline pte_t pte_mknexec(pte_t pte)
2115 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
2116 {
2117 const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER |
2118 - L_PTE_NONE | L_PTE_VALID;
2119 + L_PTE_NONE | L_PTE_VALID | __supported_pte_mask;
2120 pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask);
2121 return pte;
2122 }
2123 diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
2124 index c25ef3e..735f14b 100644
2125 --- a/arch/arm/include/asm/psci.h
2126 +++ b/arch/arm/include/asm/psci.h
2127 @@ -32,7 +32,7 @@ struct psci_operations {
2128 int (*affinity_info)(unsigned long target_affinity,
2129 unsigned long lowest_affinity_level);
2130 int (*migrate_info_type)(void);
2131 -};
2132 +} __no_const;
2133
2134 extern struct psci_operations psci_ops;
2135 extern struct smp_operations psci_smp_ops;
2136 diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
2137 index 2f3ac1b..67182ae0 100644
2138 --- a/arch/arm/include/asm/smp.h
2139 +++ b/arch/arm/include/asm/smp.h
2140 @@ -108,7 +108,7 @@ struct smp_operations {
2141 int (*cpu_disable)(unsigned int cpu);
2142 #endif
2143 #endif
2144 -};
2145 +} __no_const;
2146
2147 struct of_cpu_method {
2148 const char *method;
2149 diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h
2150 index bd32ede..bd90a0b 100644
2151 --- a/arch/arm/include/asm/thread_info.h
2152 +++ b/arch/arm/include/asm/thread_info.h
2153 @@ -74,9 +74,9 @@ struct thread_info {
2154 .flags = 0, \
2155 .preempt_count = INIT_PREEMPT_COUNT, \
2156 .addr_limit = KERNEL_DS, \
2157 - .cpu_domain = domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \
2158 - domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
2159 - domain_val(DOMAIN_IO, DOMAIN_CLIENT), \
2160 + .cpu_domain = domain_val(DOMAIN_USER, DOMAIN_USERCLIENT) | \
2161 + domain_val(DOMAIN_KERNEL, DOMAIN_KERNELCLIENT) | \
2162 + domain_val(DOMAIN_IO, DOMAIN_KERNELCLIENT), \
2163 }
2164
2165 #define init_thread_info (init_thread_union.thread_info)
2166 @@ -152,7 +152,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
2167 #define TIF_SYSCALL_AUDIT 9
2168 #define TIF_SYSCALL_TRACEPOINT 10
2169 #define TIF_SECCOMP 11 /* seccomp syscall filtering active */
2170 -#define TIF_NOHZ 12 /* in adaptive nohz mode */
2171 +/* within 8 bits of TIF_SYSCALL_TRACE
2172 + * to meet flexible second operand requirements
2173 + */
2174 +#define TIF_GRSEC_SETXID 12
2175 +#define TIF_NOHZ 13 /* in adaptive nohz mode */
2176 #define TIF_USING_IWMMXT 17
2177 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */
2178 #define TIF_RESTORE_SIGMASK 20
2179 @@ -166,10 +170,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
2180 #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
2181 #define _TIF_SECCOMP (1 << TIF_SECCOMP)
2182 #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
2183 +#define _TIF_GRSEC_SETXID (1 << TIF_GRSEC_SETXID)
2184
2185 /* Checks for any syscall work in entry-common.S */
2186 #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
2187 - _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP)
2188 + _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | _TIF_GRSEC_SETXID)
2189
2190 /*
2191 * Change these and you break ASM code in entry-common.S
2192 diff --git a/arch/arm/include/asm/tls.h b/arch/arm/include/asm/tls.h
2193 index 5f833f7..76e6644 100644
2194 --- a/arch/arm/include/asm/tls.h
2195 +++ b/arch/arm/include/asm/tls.h
2196 @@ -3,6 +3,7 @@
2197
2198 #include <linux/compiler.h>
2199 #include <asm/thread_info.h>
2200 +#include <asm/pgtable.h>
2201
2202 #ifdef __ASSEMBLY__
2203 #include <asm/asm-offsets.h>
2204 @@ -89,7 +90,9 @@ static inline void set_tls(unsigned long val)
2205 * at 0xffff0fe0 must be used instead. (see
2206 * entry-armv.S for details)
2207 */
2208 + pax_open_kernel();
2209 *((unsigned int *)0xffff0ff0) = val;
2210 + pax_close_kernel();
2211 #endif
2212 }
2213
2214 diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
2215 index 74b17d0..7e6da4b 100644
2216 --- a/arch/arm/include/asm/uaccess.h
2217 +++ b/arch/arm/include/asm/uaccess.h
2218 @@ -18,6 +18,7 @@
2219 #include <asm/domain.h>
2220 #include <asm/unified.h>
2221 #include <asm/compiler.h>
2222 +#include <asm/pgtable.h>
2223
2224 #ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
2225 #include <asm-generic/uaccess-unaligned.h>
2226 @@ -70,11 +71,38 @@ extern int __put_user_bad(void);
2227 static inline void set_fs(mm_segment_t fs)
2228 {
2229 current_thread_info()->addr_limit = fs;
2230 - modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER);
2231 + modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_KERNELCLIENT : DOMAIN_MANAGER);
2232 }
2233
2234 #define segment_eq(a, b) ((a) == (b))
2235
2236 +#define __HAVE_ARCH_PAX_OPEN_USERLAND
2237 +#define __HAVE_ARCH_PAX_CLOSE_USERLAND
2238 +
2239 +static inline void pax_open_userland(void)
2240 +{
2241 +
2242 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2243 + if (segment_eq(get_fs(), USER_DS)) {
2244 + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_UDEREF));
2245 + modify_domain(DOMAIN_USER, DOMAIN_UDEREF);
2246 + }
2247 +#endif
2248 +
2249 +}
2250 +
2251 +static inline void pax_close_userland(void)
2252 +{
2253 +
2254 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2255 + if (segment_eq(get_fs(), USER_DS)) {
2256 + BUG_ON(test_domain(DOMAIN_USER, DOMAIN_NOACCESS));
2257 + modify_domain(DOMAIN_USER, DOMAIN_NOACCESS);
2258 + }
2259 +#endif
2260 +
2261 +}
2262 +
2263 #define __addr_ok(addr) ({ \
2264 unsigned long flag; \
2265 __asm__("cmp %2, %0; movlo %0, #0" \
2266 @@ -198,8 +226,12 @@ extern int __get_user_64t_4(void *);
2267
2268 #define get_user(x, p) \
2269 ({ \
2270 + int __e; \
2271 might_fault(); \
2272 - __get_user_check(x, p); \
2273 + pax_open_userland(); \
2274 + __e = __get_user_check((x), (p)); \
2275 + pax_close_userland(); \
2276 + __e; \
2277 })
2278
2279 extern int __put_user_1(void *, unsigned int);
2280 @@ -244,8 +276,12 @@ extern int __put_user_8(void *, unsigned long long);
2281
2282 #define put_user(x, p) \
2283 ({ \
2284 + int __e; \
2285 might_fault(); \
2286 - __put_user_check(x, p); \
2287 + pax_open_userland(); \
2288 + __e = __put_user_check((x), (p)); \
2289 + pax_close_userland(); \
2290 + __e; \
2291 })
2292
2293 #else /* CONFIG_MMU */
2294 @@ -269,6 +305,7 @@ static inline void set_fs(mm_segment_t fs)
2295
2296 #endif /* CONFIG_MMU */
2297
2298 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
2299 #define access_ok(type, addr, size) (__range_ok(addr, size) == 0)
2300
2301 #define user_addr_max() \
2302 @@ -286,13 +323,17 @@ static inline void set_fs(mm_segment_t fs)
2303 #define __get_user(x, ptr) \
2304 ({ \
2305 long __gu_err = 0; \
2306 + pax_open_userland(); \
2307 __get_user_err((x), (ptr), __gu_err); \
2308 + pax_close_userland(); \
2309 __gu_err; \
2310 })
2311
2312 #define __get_user_error(x, ptr, err) \
2313 ({ \
2314 + pax_open_userland(); \
2315 __get_user_err((x), (ptr), err); \
2316 + pax_close_userland(); \
2317 (void) 0; \
2318 })
2319
2320 @@ -368,13 +409,17 @@ do { \
2321 #define __put_user(x, ptr) \
2322 ({ \
2323 long __pu_err = 0; \
2324 + pax_open_userland(); \
2325 __put_user_err((x), (ptr), __pu_err); \
2326 + pax_close_userland(); \
2327 __pu_err; \
2328 })
2329
2330 #define __put_user_error(x, ptr, err) \
2331 ({ \
2332 + pax_open_userland(); \
2333 __put_user_err((x), (ptr), err); \
2334 + pax_close_userland(); \
2335 (void) 0; \
2336 })
2337
2338 @@ -474,11 +519,44 @@ do { \
2339
2340
2341 #ifdef CONFIG_MMU
2342 -extern unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n);
2343 -extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n);
2344 -extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n);
2345 -extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n);
2346 -extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned long n);
2347 +extern unsigned long __must_check __size_overflow(3) ___copy_from_user(void *to, const void __user *from, unsigned long n);
2348 +extern unsigned long __must_check __size_overflow(3) ___copy_to_user(void __user *to, const void *from, unsigned long n);
2349 +
2350 +static inline unsigned long __must_check __size_overflow(3) __copy_from_user(void *to, const void __user *from, unsigned long n)
2351 +{
2352 + unsigned long ret;
2353 +
2354 + check_object_size(to, n, false);
2355 + pax_open_userland();
2356 + ret = ___copy_from_user(to, from, n);
2357 + pax_close_userland();
2358 + return ret;
2359 +}
2360 +
2361 +static inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n)
2362 +{
2363 + unsigned long ret;
2364 +
2365 + check_object_size(from, n, true);
2366 + pax_open_userland();
2367 + ret = ___copy_to_user(to, from, n);
2368 + pax_close_userland();
2369 + return ret;
2370 +}
2371 +
2372 +extern unsigned long __must_check __size_overflow(3) __copy_to_user_std(void __user *to, const void *from, unsigned long n);
2373 +extern unsigned long __must_check __size_overflow(2) ___clear_user(void __user *addr, unsigned long n);
2374 +extern unsigned long __must_check __size_overflow(2) __clear_user_std(void __user *addr, unsigned long n);
2375 +
2376 +static inline unsigned long __must_check __clear_user(void __user *addr, unsigned long n)
2377 +{
2378 + unsigned long ret;
2379 + pax_open_userland();
2380 + ret = ___clear_user(addr, n);
2381 + pax_close_userland();
2382 + return ret;
2383 +}
2384 +
2385 #else
2386 #define __copy_from_user(to, from, n) (memcpy(to, (void __force *)from, n), 0)
2387 #define __copy_to_user(to, from, n) (memcpy((void __force *)to, from, n), 0)
2388 @@ -487,6 +565,9 @@ extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned l
2389
2390 static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
2391 {
2392 + if ((long)n < 0)
2393 + return n;
2394 +
2395 if (access_ok(VERIFY_READ, from, n))
2396 n = __copy_from_user(to, from, n);
2397 else /* security hole - plug it */
2398 @@ -496,6 +577,9 @@ static inline unsigned long __must_check copy_from_user(void *to, const void __u
2399
2400 static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
2401 {
2402 + if ((long)n < 0)
2403 + return n;
2404 +
2405 if (access_ok(VERIFY_WRITE, to, n))
2406 n = __copy_to_user(to, from, n);
2407 return n;
2408 diff --git a/arch/arm/include/uapi/asm/ptrace.h b/arch/arm/include/uapi/asm/ptrace.h
2409 index 5af0ed1..cea83883 100644
2410 --- a/arch/arm/include/uapi/asm/ptrace.h
2411 +++ b/arch/arm/include/uapi/asm/ptrace.h
2412 @@ -92,7 +92,7 @@
2413 * ARMv7 groups of PSR bits
2414 */
2415 #define APSR_MASK 0xf80f0000 /* N, Z, C, V, Q and GE flags */
2416 -#define PSR_ISET_MASK 0x01000010 /* ISA state (J, T) mask */
2417 +#define PSR_ISET_MASK 0x01000020 /* ISA state (J, T) mask */
2418 #define PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */
2419 #define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */
2420
2421 diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
2422 index 5e5a51a..b21eeef 100644
2423 --- a/arch/arm/kernel/armksyms.c
2424 +++ b/arch/arm/kernel/armksyms.c
2425 @@ -58,7 +58,7 @@ EXPORT_SYMBOL(arm_delay_ops);
2426
2427 /* networking */
2428 EXPORT_SYMBOL(csum_partial);
2429 -EXPORT_SYMBOL(csum_partial_copy_from_user);
2430 +EXPORT_SYMBOL(__csum_partial_copy_from_user);
2431 EXPORT_SYMBOL(csum_partial_copy_nocheck);
2432 EXPORT_SYMBOL(__csum_ipv6_magic);
2433
2434 @@ -97,9 +97,9 @@ EXPORT_SYMBOL(mmiocpy);
2435 #ifdef CONFIG_MMU
2436 EXPORT_SYMBOL(copy_page);
2437
2438 -EXPORT_SYMBOL(__copy_from_user);
2439 -EXPORT_SYMBOL(__copy_to_user);
2440 -EXPORT_SYMBOL(__clear_user);
2441 +EXPORT_SYMBOL(___copy_from_user);
2442 +EXPORT_SYMBOL(___copy_to_user);
2443 +EXPORT_SYMBOL(___clear_user);
2444
2445 EXPORT_SYMBOL(__get_user_1);
2446 EXPORT_SYMBOL(__get_user_2);
2447 diff --git a/arch/arm/kernel/cpuidle.c b/arch/arm/kernel/cpuidle.c
2448 index 318da33..373689f 100644
2449 --- a/arch/arm/kernel/cpuidle.c
2450 +++ b/arch/arm/kernel/cpuidle.c
2451 @@ -19,7 +19,7 @@ extern struct of_cpuidle_method __cpuidle_method_of_table[];
2452 static const struct of_cpuidle_method __cpuidle_method_of_table_sentinel
2453 __used __section(__cpuidle_method_of_table_end);
2454
2455 -static struct cpuidle_ops cpuidle_ops[NR_CPUS];
2456 +static struct cpuidle_ops cpuidle_ops[NR_CPUS] __read_only;
2457
2458 /**
2459 * arm_cpuidle_simple_enter() - a wrapper to cpu_do_idle()
2460 diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
2461 index cb4fb1e..dc7fcaf 100644
2462 --- a/arch/arm/kernel/entry-armv.S
2463 +++ b/arch/arm/kernel/entry-armv.S
2464 @@ -50,6 +50,87 @@
2465 9997:
2466 .endm
2467
2468 + .macro pax_enter_kernel
2469 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2470 + @ make aligned space for saved DACR
2471 + sub sp, sp, #8
2472 + @ save regs
2473 + stmdb sp!, {r1, r2}
2474 + @ read DACR from cpu_domain into r1
2475 + mov r2, sp
2476 + @ assume 8K pages, since we have to split the immediate in two
2477 + bic r2, r2, #(0x1fc0)
2478 + bic r2, r2, #(0x3f)
2479 + ldr r1, [r2, #TI_CPU_DOMAIN]
2480 + @ store old DACR on stack
2481 + str r1, [sp, #8]
2482 +#ifdef CONFIG_PAX_KERNEXEC
2483 + @ set type of DOMAIN_KERNEL to DOMAIN_KERNELCLIENT
2484 + bic r1, r1, #(domain_val(DOMAIN_KERNEL, 3))
2485 + orr r1, r1, #(domain_val(DOMAIN_KERNEL, DOMAIN_KERNELCLIENT))
2486 +#endif
2487 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2488 + @ set current DOMAIN_USER to DOMAIN_NOACCESS
2489 + bic r1, r1, #(domain_val(DOMAIN_USER, 3))
2490 +#endif
2491 + @ write r1 to current_thread_info()->cpu_domain
2492 + str r1, [r2, #TI_CPU_DOMAIN]
2493 + @ write r1 to DACR
2494 + mcr p15, 0, r1, c3, c0, 0
2495 + @ instruction sync
2496 + instr_sync
2497 + @ restore regs
2498 + ldmia sp!, {r1, r2}
2499 +#endif
2500 + .endm
2501 +
2502 + .macro pax_open_userland
2503 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2504 + @ save regs
2505 + stmdb sp!, {r0, r1}
2506 + @ read DACR from cpu_domain into r1
2507 + mov r0, sp
2508 + @ assume 8K pages, since we have to split the immediate in two
2509 + bic r0, r0, #(0x1fc0)
2510 + bic r0, r0, #(0x3f)
2511 + ldr r1, [r0, #TI_CPU_DOMAIN]
2512 + @ set current DOMAIN_USER to DOMAIN_CLIENT
2513 + bic r1, r1, #(domain_val(DOMAIN_USER, 3))
2514 + orr r1, r1, #(domain_val(DOMAIN_USER, DOMAIN_UDEREF))
2515 + @ write r1 to current_thread_info()->cpu_domain
2516 + str r1, [r0, #TI_CPU_DOMAIN]
2517 + @ write r1 to DACR
2518 + mcr p15, 0, r1, c3, c0, 0
2519 + @ instruction sync
2520 + instr_sync
2521 + @ restore regs
2522 + ldmia sp!, {r0, r1}
2523 +#endif
2524 + .endm
2525 +
2526 + .macro pax_close_userland
2527 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2528 + @ save regs
2529 + stmdb sp!, {r0, r1}
2530 + @ read DACR from cpu_domain into r1
2531 + mov r0, sp
2532 + @ assume 8K pages, since we have to split the immediate in two
2533 + bic r0, r0, #(0x1fc0)
2534 + bic r0, r0, #(0x3f)
2535 + ldr r1, [r0, #TI_CPU_DOMAIN]
2536 + @ set current DOMAIN_USER to DOMAIN_NOACCESS
2537 + bic r1, r1, #(domain_val(DOMAIN_USER, 3))
2538 + @ write r1 to current_thread_info()->cpu_domain
2539 + str r1, [r0, #TI_CPU_DOMAIN]
2540 + @ write r1 to DACR
2541 + mcr p15, 0, r1, c3, c0, 0
2542 + @ instruction sync
2543 + instr_sync
2544 + @ restore regs
2545 + ldmia sp!, {r0, r1}
2546 +#endif
2547 + .endm
2548 +
2549 .macro pabt_helper
2550 @ PABORT handler takes pt_regs in r2, fault address in r4 and psr in r5
2551 #ifdef MULTI_PABORT
2552 @@ -92,11 +173,15 @@
2553 * Invalid mode handlers
2554 */
2555 .macro inv_entry, reason
2556 +
2557 + pax_enter_kernel
2558 +
2559 sub sp, sp, #S_FRAME_SIZE
2560 ARM( stmib sp, {r1 - lr} )
2561 THUMB( stmia sp, {r0 - r12} )
2562 THUMB( str sp, [sp, #S_SP] )
2563 THUMB( str lr, [sp, #S_LR] )
2564 +
2565 mov r1, #\reason
2566 .endm
2567
2568 @@ -152,7 +237,11 @@ ENDPROC(__und_invalid)
2569 .macro svc_entry, stack_hole=0, trace=1
2570 UNWIND(.fnstart )
2571 UNWIND(.save {r0 - pc} )
2572 +
2573 + pax_enter_kernel
2574 +
2575 sub sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
2576 +
2577 #ifdef CONFIG_THUMB2_KERNEL
2578 SPFIX( str r0, [sp] ) @ temporarily saved
2579 SPFIX( mov r0, sp )
2580 @@ -167,7 +256,12 @@ ENDPROC(__und_invalid)
2581 ldmia r0, {r3 - r5}
2582 add r7, sp, #S_SP - 4 @ here for interlock avoidance
2583 mov r6, #-1 @ "" "" "" ""
2584 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2585 + @ offset sp by 8 as done in pax_enter_kernel
2586 + add r2, sp, #(S_FRAME_SIZE + \stack_hole + 4)
2587 +#else
2588 add r2, sp, #(S_FRAME_SIZE + \stack_hole - 4)
2589 +#endif
2590 SPFIX( addeq r2, r2, #4 )
2591 str r3, [sp, #-4]! @ save the "real" r0 copied
2592 @ from the exception stack
2593 @@ -371,6 +465,9 @@ ENDPROC(__fiq_abt)
2594 .macro usr_entry, trace=1
2595 UNWIND(.fnstart )
2596 UNWIND(.cantunwind ) @ don't unwind the user space
2597 +
2598 + pax_enter_kernel_user
2599 +
2600 sub sp, sp, #S_FRAME_SIZE
2601 ARM( stmib sp, {r1 - r12} )
2602 THUMB( stmia sp, {r0 - r12} )
2603 @@ -481,7 +578,9 @@ __und_usr:
2604 tst r3, #PSR_T_BIT @ Thumb mode?
2605 bne __und_usr_thumb
2606 sub r4, r2, #4 @ ARM instr at LR - 4
2607 + pax_open_userland
2608 1: ldrt r0, [r4]
2609 + pax_close_userland
2610 ARM_BE8(rev r0, r0) @ little endian instruction
2611
2612 @ r0 = 32-bit ARM instruction which caused the exception
2613 @@ -515,11 +614,15 @@ __und_usr_thumb:
2614 */
2615 .arch armv6t2
2616 #endif
2617 + pax_open_userland
2618 2: ldrht r5, [r4]
2619 + pax_close_userland
2620 ARM_BE8(rev16 r5, r5) @ little endian instruction
2621 cmp r5, #0xe800 @ 32bit instruction if xx != 0
2622 blo __und_usr_fault_16 @ 16bit undefined instruction
2623 + pax_open_userland
2624 3: ldrht r0, [r2]
2625 + pax_close_userland
2626 ARM_BE8(rev16 r0, r0) @ little endian instruction
2627 add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
2628 str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
2629 @@ -549,7 +652,8 @@ ENDPROC(__und_usr)
2630 */
2631 .pushsection .text.fixup, "ax"
2632 .align 2
2633 -4: str r4, [sp, #S_PC] @ retry current instruction
2634 +4: pax_close_userland
2635 + str r4, [sp, #S_PC] @ retry current instruction
2636 ret r9
2637 .popsection
2638 .pushsection __ex_table,"a"
2639 @@ -769,7 +873,7 @@ ENTRY(__switch_to)
2640 THUMB( str lr, [ip], #4 )
2641 ldr r4, [r2, #TI_TP_VALUE]
2642 ldr r5, [r2, #TI_TP_VALUE + 4]
2643 -#ifdef CONFIG_CPU_USE_DOMAINS
2644 +#if defined(CONFIG_CPU_USE_DOMAINS) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2645 ldr r6, [r2, #TI_CPU_DOMAIN]
2646 #endif
2647 switch_tls r1, r4, r5, r3, r7
2648 @@ -778,7 +882,7 @@ ENTRY(__switch_to)
2649 ldr r8, =__stack_chk_guard
2650 ldr r7, [r7, #TSK_STACK_CANARY]
2651 #endif
2652 -#ifdef CONFIG_CPU_USE_DOMAINS
2653 +#if defined(CONFIG_CPU_USE_DOMAINS) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2654 mcr p15, 0, r6, c3, c0, 0 @ Set domain register
2655 #endif
2656 mov r5, r0
2657 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
2658 index b48dd4f..9f9a72f 100644
2659 --- a/arch/arm/kernel/entry-common.S
2660 +++ b/arch/arm/kernel/entry-common.S
2661 @@ -11,18 +11,46 @@
2662 #include <asm/assembler.h>
2663 #include <asm/unistd.h>
2664 #include <asm/ftrace.h>
2665 +#include <asm/domain.h>
2666 #include <asm/unwind.h>
2667
2668 +#include "entry-header.S"
2669 +
2670 #ifdef CONFIG_NEED_RET_TO_USER
2671 #include <mach/entry-macro.S>
2672 #else
2673 .macro arch_ret_to_user, tmp1, tmp2
2674 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2675 + @ save regs
2676 + stmdb sp!, {r1, r2}
2677 + @ read DACR from cpu_domain into r1
2678 + mov r2, sp
2679 + @ assume 8K pages, since we have to split the immediate in two
2680 + bic r2, r2, #(0x1fc0)
2681 + bic r2, r2, #(0x3f)
2682 + ldr r1, [r2, #TI_CPU_DOMAIN]
2683 +#ifdef CONFIG_PAX_KERNEXEC
2684 + @ set type of DOMAIN_KERNEL to DOMAIN_KERNELCLIENT
2685 + bic r1, r1, #(domain_val(DOMAIN_KERNEL, 3))
2686 + orr r1, r1, #(domain_val(DOMAIN_KERNEL, DOMAIN_KERNELCLIENT))
2687 +#endif
2688 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2689 + @ set current DOMAIN_USER to DOMAIN_UDEREF
2690 + bic r1, r1, #(domain_val(DOMAIN_USER, 3))
2691 + orr r1, r1, #(domain_val(DOMAIN_USER, DOMAIN_UDEREF))
2692 +#endif
2693 + @ write r1 to current_thread_info()->cpu_domain
2694 + str r1, [r2, #TI_CPU_DOMAIN]
2695 + @ write r1 to DACR
2696 + mcr p15, 0, r1, c3, c0, 0
2697 + @ instruction sync
2698 + instr_sync
2699 + @ restore regs
2700 + ldmia sp!, {r1, r2}
2701 +#endif
2702 .endm
2703 #endif
2704
2705 -#include "entry-header.S"
2706 -
2707 -
2708 .align 5
2709 /*
2710 * This is the fast syscall return path. We do as little as
2711 @@ -174,6 +202,12 @@ ENTRY(vector_swi)
2712 USER( ldr scno, [lr, #-4] ) @ get SWI instruction
2713 #endif
2714
2715 + /*
2716 + * do this here to avoid a performance hit of wrapping the code above
2717 + * that directly dereferences userland to parse the SWI instruction
2718 + */
2719 + pax_enter_kernel_user
2720 +
2721 adr tbl, sys_call_table @ load syscall table pointer
2722
2723 #if defined(CONFIG_OABI_COMPAT)
2724 diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
2725 index 1a0045a..9b4f34d 100644
2726 --- a/arch/arm/kernel/entry-header.S
2727 +++ b/arch/arm/kernel/entry-header.S
2728 @@ -196,6 +196,60 @@
2729 msr cpsr_c, \rtemp @ switch back to the SVC mode
2730 .endm
2731
2732 + .macro pax_enter_kernel_user
2733 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2734 + @ save regs
2735 + stmdb sp!, {r0, r1}
2736 + @ read DACR from cpu_domain into r1
2737 + mov r0, sp
2738 + @ assume 8K pages, since we have to split the immediate in two
2739 + bic r0, r0, #(0x1fc0)
2740 + bic r0, r0, #(0x3f)
2741 + ldr r1, [r0, #TI_CPU_DOMAIN]
2742 +#ifdef CONFIG_PAX_MEMORY_UDEREF
2743 + @ set current DOMAIN_USER to DOMAIN_NOACCESS
2744 + bic r1, r1, #(domain_val(DOMAIN_USER, 3))
2745 +#endif
2746 +#ifdef CONFIG_PAX_KERNEXEC
2747 + @ set current DOMAIN_KERNEL to DOMAIN_KERNELCLIENT
2748 + bic r1, r1, #(domain_val(DOMAIN_KERNEL, 3))
2749 + orr r1, r1, #(domain_val(DOMAIN_KERNEL, DOMAIN_KERNELCLIENT))
2750 +#endif
2751 + @ write r1 to current_thread_info()->cpu_domain
2752 + str r1, [r0, #TI_CPU_DOMAIN]
2753 + @ write r1 to DACR
2754 + mcr p15, 0, r1, c3, c0, 0
2755 + @ instruction sync
2756 + instr_sync
2757 + @ restore regs
2758 + ldmia sp!, {r0, r1}
2759 +#endif
2760 + .endm
2761 +
2762 + .macro pax_exit_kernel
2763 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
2764 + @ save regs
2765 + stmdb sp!, {r0, r1}
2766 + @ read old DACR from stack into r1
2767 + ldr r1, [sp, #(8 + S_SP)]
2768 + sub r1, r1, #8
2769 + ldr r1, [r1]
2770 +
2771 + @ write r1 to current_thread_info()->cpu_domain
2772 + mov r0, sp
2773 + @ assume 8K pages, since we have to split the immediate in two
2774 + bic r0, r0, #(0x1fc0)
2775 + bic r0, r0, #(0x3f)
2776 + str r1, [r0, #TI_CPU_DOMAIN]
2777 + @ write r1 to DACR
2778 + mcr p15, 0, r1, c3, c0, 0
2779 + @ instruction sync
2780 + instr_sync
2781 + @ restore regs
2782 + ldmia sp!, {r0, r1}
2783 +#endif
2784 + .endm
2785 +
2786 #ifndef CONFIG_THUMB2_KERNEL
2787 .macro svc_exit, rpsr, irq = 0
2788 .if \irq != 0
2789 @@ -215,6 +269,9 @@
2790 blne trace_hardirqs_off
2791 #endif
2792 .endif
2793 +
2794 + pax_exit_kernel
2795 +
2796 msr spsr_cxsf, \rpsr
2797 #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K)
2798 @ We must avoid clrex due to Cortex-A15 erratum #830321
2799 @@ -291,6 +348,9 @@
2800 blne trace_hardirqs_off
2801 #endif
2802 .endif
2803 +
2804 + pax_exit_kernel
2805 +
2806 ldr lr, [sp, #S_SP] @ top of the stack
2807 ldrd r0, r1, [sp, #S_LR] @ calling lr and pc
2808
2809 diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
2810 index 059c3da..8e45cfc 100644
2811 --- a/arch/arm/kernel/fiq.c
2812 +++ b/arch/arm/kernel/fiq.c
2813 @@ -95,7 +95,10 @@ void set_fiq_handler(void *start, unsigned int length)
2814 void *base = vectors_page;
2815 unsigned offset = FIQ_OFFSET;
2816
2817 + pax_open_kernel();
2818 memcpy(base + offset, start, length);
2819 + pax_close_kernel();
2820 +
2821 if (!cache_is_vipt_nonaliasing())
2822 flush_icache_range((unsigned long)base + offset, offset +
2823 length);
2824 diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
2825 index 29e2991..7bc5757 100644
2826 --- a/arch/arm/kernel/head.S
2827 +++ b/arch/arm/kernel/head.S
2828 @@ -467,7 +467,7 @@ __enable_mmu:
2829 mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \
2830 domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
2831 domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \
2832 - domain_val(DOMAIN_IO, DOMAIN_CLIENT))
2833 + domain_val(DOMAIN_IO, DOMAIN_KERNELCLIENT))
2834 mcr p15, 0, r5, c3, c0, 0 @ load domain access register
2835 mcr p15, 0, r4, c2, c0, 0 @ load page table pointer
2836 #endif
2837 diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
2838 index efdddcb..35e58f6 100644
2839 --- a/arch/arm/kernel/module.c
2840 +++ b/arch/arm/kernel/module.c
2841 @@ -38,17 +38,47 @@
2842 #endif
2843
2844 #ifdef CONFIG_MMU
2845 -void *module_alloc(unsigned long size)
2846 +static inline void *__module_alloc(unsigned long size, pgprot_t prot)
2847 {
2848 - void *p = __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
2849 - GFP_KERNEL, PAGE_KERNEL_EXEC, 0, NUMA_NO_NODE,
2850 + void *p;
2851 +
2852 + if (!size || (!IS_ENABLED(CONFIG_ARM_MODULE_PLTS) && PAGE_ALIGN(size) > MODULES_END - MODULES_VADDR))
2853 + return NULL;
2854 +
2855 + p = __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
2856 + GFP_KERNEL, prot, 0, NUMA_NO_NODE,
2857 __builtin_return_address(0));
2858 if (!IS_ENABLED(CONFIG_ARM_MODULE_PLTS) || p)
2859 return p;
2860 return __vmalloc_node_range(size, 1, VMALLOC_START, VMALLOC_END,
2861 - GFP_KERNEL, PAGE_KERNEL_EXEC, 0, NUMA_NO_NODE,
2862 + GFP_KERNEL, prot, 0, NUMA_NO_NODE,
2863 __builtin_return_address(0));
2864 }
2865 +
2866 +void *module_alloc(unsigned long size)
2867 +{
2868 +
2869 +#ifdef CONFIG_PAX_KERNEXEC
2870 + return __module_alloc(size, PAGE_KERNEL);
2871 +#else
2872 + return __module_alloc(size, PAGE_KERNEL_EXEC);
2873 +#endif
2874 +
2875 +}
2876 +
2877 +#ifdef CONFIG_PAX_KERNEXEC
2878 +void module_memfree_exec(void *module_region)
2879 +{
2880 + module_memfree(module_region);
2881 +}
2882 +EXPORT_SYMBOL(module_memfree_exec);
2883 +
2884 +void *module_alloc_exec(unsigned long size)
2885 +{
2886 + return __module_alloc(size, PAGE_KERNEL_EXEC);
2887 +}
2888 +EXPORT_SYMBOL(module_alloc_exec);
2889 +#endif
2890 #endif
2891
2892 int
2893 diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c
2894 index 69bda1a..755113a 100644
2895 --- a/arch/arm/kernel/patch.c
2896 +++ b/arch/arm/kernel/patch.c
2897 @@ -66,6 +66,7 @@ void __kprobes __patch_text_real(void *addr, unsigned int insn, bool remap)
2898 else
2899 __acquire(&patch_lock);
2900
2901 + pax_open_kernel();
2902 if (thumb2 && __opcode_is_thumb16(insn)) {
2903 *(u16 *)waddr = __opcode_to_mem_thumb16(insn);
2904 size = sizeof(u16);
2905 @@ -97,6 +98,7 @@ void __kprobes __patch_text_real(void *addr, unsigned int insn, bool remap)
2906 *(u32 *)waddr = insn;
2907 size = sizeof(u32);
2908 }
2909 + pax_close_kernel();
2910
2911 if (waddr != addr) {
2912 flush_kernel_vmap_range(waddr, twopage ? size / 2 : size);
2913 diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
2914 index f192a2a..1a40523 100644
2915 --- a/arch/arm/kernel/process.c
2916 +++ b/arch/arm/kernel/process.c
2917 @@ -105,8 +105,8 @@ void __show_regs(struct pt_regs *regs)
2918
2919 show_regs_print_info(KERN_DEFAULT);
2920
2921 - print_symbol("PC is at %s\n", instruction_pointer(regs));
2922 - print_symbol("LR is at %s\n", regs->ARM_lr);
2923 + printk("PC is at %pA\n", (void *)instruction_pointer(regs));
2924 + printk("LR is at %pA\n", (void *)regs->ARM_lr);
2925 printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n"
2926 "sp : %08lx ip : %08lx fp : %08lx\n",
2927 regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr,
2928 @@ -283,12 +283,6 @@ unsigned long get_wchan(struct task_struct *p)
2929 return 0;
2930 }
2931
2932 -unsigned long arch_randomize_brk(struct mm_struct *mm)
2933 -{
2934 - unsigned long range_end = mm->brk + 0x02000000;
2935 - return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
2936 -}
2937 -
2938 #ifdef CONFIG_MMU
2939 #ifdef CONFIG_KUSER_HELPERS
2940 /*
2941 @@ -304,7 +298,7 @@ static struct vm_area_struct gate_vma = {
2942
2943 static int __init gate_vma_init(void)
2944 {
2945 - gate_vma.vm_page_prot = PAGE_READONLY_EXEC;
2946 + gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
2947 return 0;
2948 }
2949 arch_initcall(gate_vma_init);
2950 @@ -333,91 +327,13 @@ const char *arch_vma_name(struct vm_area_struct *vma)
2951 return is_gate_vma(vma) ? "[vectors]" : NULL;
2952 }
2953
2954 -/* If possible, provide a placement hint at a random offset from the
2955 - * stack for the sigpage and vdso pages.
2956 - */
2957 -static unsigned long sigpage_addr(const struct mm_struct *mm,
2958 - unsigned int npages)
2959 -{
2960 - unsigned long offset;
2961 - unsigned long first;
2962 - unsigned long last;
2963 - unsigned long addr;
2964 - unsigned int slots;
2965 -
2966 - first = PAGE_ALIGN(mm->start_stack);
2967 -
2968 - last = TASK_SIZE - (npages << PAGE_SHIFT);
2969 -
2970 - /* No room after stack? */
2971 - if (first > last)
2972 - return 0;
2973 -
2974 - /* Just enough room? */
2975 - if (first == last)
2976 - return first;
2977 -
2978 - slots = ((last - first) >> PAGE_SHIFT) + 1;
2979 -
2980 - offset = get_random_int() % slots;
2981 -
2982 - addr = first + (offset << PAGE_SHIFT);
2983 -
2984 - return addr;
2985 -}
2986 -
2987 -static struct page *signal_page;
2988 -extern struct page *get_signal_page(void);
2989 -
2990 -static const struct vm_special_mapping sigpage_mapping = {
2991 - .name = "[sigpage]",
2992 - .pages = &signal_page,
2993 -};
2994 -
2995 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
2996 {
2997 struct mm_struct *mm = current->mm;
2998 - struct vm_area_struct *vma;
2999 - unsigned long npages;
3000 - unsigned long addr;
3001 - unsigned long hint;
3002 - int ret = 0;
3003 -
3004 - if (!signal_page)
3005 - signal_page = get_signal_page();
3006 - if (!signal_page)
3007 - return -ENOMEM;
3008 -
3009 - npages = 1; /* for sigpage */
3010 - npages += vdso_total_pages;
3011
3012 down_write(&mm->mmap_sem);
3013 - hint = sigpage_addr(mm, npages);
3014 - addr = get_unmapped_area(NULL, hint, npages << PAGE_SHIFT, 0, 0);
3015 - if (IS_ERR_VALUE(addr)) {
3016 - ret = addr;
3017 - goto up_fail;
3018 - }
3019 -
3020 - vma = _install_special_mapping(mm, addr, PAGE_SIZE,
3021 - VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
3022 - &sigpage_mapping);
3023 -
3024 - if (IS_ERR(vma)) {
3025 - ret = PTR_ERR(vma);
3026 - goto up_fail;
3027 - }
3028 -
3029 - mm->context.sigpage = addr;
3030 -
3031 - /* Unlike the sigpage, failure to install the vdso is unlikely
3032 - * to be fatal to the process, so no error check needed
3033 - * here.
3034 - */
3035 - arm_install_vdso(mm, addr + PAGE_SIZE);
3036 -
3037 - up_fail:
3038 + mm->context.sigpage = (PAGE_OFFSET + (get_random_int() % 0x3FFEFFE0)) & 0xFFFFFFFC;
3039 up_write(&mm->mmap_sem);
3040 - return ret;
3041 + return 0;
3042 }
3043 #endif
3044 diff --git a/arch/arm/kernel/psci.c b/arch/arm/kernel/psci.c
3045 index f90fdf4..24e8c84 100644
3046 --- a/arch/arm/kernel/psci.c
3047 +++ b/arch/arm/kernel/psci.c
3048 @@ -26,7 +26,7 @@
3049 #include <asm/psci.h>
3050 #include <asm/system_misc.h>
3051
3052 -struct psci_operations psci_ops;
3053 +struct psci_operations psci_ops __read_only;
3054
3055 static int (*invoke_psci_fn)(u32, u32, u32, u32);
3056 typedef int (*psci_initcall_t)(const struct device_node *);
3057 diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
3058 index ef9119f..31995a3 100644
3059 --- a/arch/arm/kernel/ptrace.c
3060 +++ b/arch/arm/kernel/ptrace.c
3061 @@ -928,10 +928,19 @@ static void tracehook_report_syscall(struct pt_regs *regs,
3062 regs->ARM_ip = ip;
3063 }
3064
3065 +#ifdef CONFIG_GRKERNSEC_SETXID
3066 +extern void gr_delayed_cred_worker(void);
3067 +#endif
3068 +
3069 asmlinkage int syscall_trace_enter(struct pt_regs *regs, int scno)
3070 {
3071 current_thread_info()->syscall = scno;
3072
3073 +#ifdef CONFIG_GRKERNSEC_SETXID
3074 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
3075 + gr_delayed_cred_worker();
3076 +#endif
3077 +
3078 /* Do the secure computing check first; failures should be fast. */
3079 #ifdef CONFIG_HAVE_ARCH_SECCOMP_FILTER
3080 if (secure_computing() == -1)
3081 diff --git a/arch/arm/kernel/reboot.c b/arch/arm/kernel/reboot.c
3082 index 3826935..8ed63ed 100644
3083 --- a/arch/arm/kernel/reboot.c
3084 +++ b/arch/arm/kernel/reboot.c
3085 @@ -122,6 +122,7 @@ void machine_power_off(void)
3086
3087 if (pm_power_off)
3088 pm_power_off();
3089 + while (1);
3090 }
3091
3092 /*
3093 diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
3094 index 36c18b7..0d78292 100644
3095 --- a/arch/arm/kernel/setup.c
3096 +++ b/arch/arm/kernel/setup.c
3097 @@ -108,21 +108,23 @@ EXPORT_SYMBOL(elf_hwcap);
3098 unsigned int elf_hwcap2 __read_mostly;
3099 EXPORT_SYMBOL(elf_hwcap2);
3100
3101 +pteval_t __supported_pte_mask __read_only;
3102 +pmdval_t __supported_pmd_mask __read_only;
3103
3104 #ifdef MULTI_CPU
3105 -struct processor processor __read_mostly;
3106 +struct processor processor __read_only;
3107 #endif
3108 #ifdef MULTI_TLB
3109 -struct cpu_tlb_fns cpu_tlb __read_mostly;
3110 +struct cpu_tlb_fns cpu_tlb __read_only;
3111 #endif
3112 #ifdef MULTI_USER
3113 -struct cpu_user_fns cpu_user __read_mostly;
3114 +struct cpu_user_fns cpu_user __read_only;
3115 #endif
3116 #ifdef MULTI_CACHE
3117 -struct cpu_cache_fns cpu_cache __read_mostly;
3118 +struct cpu_cache_fns cpu_cache __read_only;
3119 #endif
3120 #ifdef CONFIG_OUTER_CACHE
3121 -struct outer_cache_fns outer_cache __read_mostly;
3122 +struct outer_cache_fns outer_cache __read_only;
3123 EXPORT_SYMBOL(outer_cache);
3124 #endif
3125
3126 @@ -253,9 +255,13 @@ static int __get_cpu_architecture(void)
3127 * Register 0 and check for VMSAv7 or PMSAv7 */
3128 unsigned int mmfr0 = read_cpuid_ext(CPUID_EXT_MMFR0);
3129 if ((mmfr0 & 0x0000000f) >= 0x00000003 ||
3130 - (mmfr0 & 0x000000f0) >= 0x00000030)
3131 + (mmfr0 & 0x000000f0) >= 0x00000030) {
3132 cpu_arch = CPU_ARCH_ARMv7;
3133 - else if ((mmfr0 & 0x0000000f) == 0x00000002 ||
3134 + if ((mmfr0 & 0x0000000f) == 0x00000005 || (mmfr0 & 0x0000000f) == 0x00000004) {
3135 + __supported_pte_mask |= L_PTE_PXN;
3136 + __supported_pmd_mask |= PMD_PXNTABLE;
3137 + }
3138 + } else if ((mmfr0 & 0x0000000f) == 0x00000002 ||
3139 (mmfr0 & 0x000000f0) == 0x00000020)
3140 cpu_arch = CPU_ARCH_ARMv6;
3141 else
3142 diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
3143 index 423663e..bfeb0ff 100644
3144 --- a/arch/arm/kernel/signal.c
3145 +++ b/arch/arm/kernel/signal.c
3146 @@ -24,8 +24,6 @@
3147
3148 extern const unsigned long sigreturn_codes[7];
3149
3150 -static unsigned long signal_return_offset;
3151 -
3152 #ifdef CONFIG_CRUNCH
3153 static int preserve_crunch_context(struct crunch_sigframe __user *frame)
3154 {
3155 @@ -385,8 +383,7 @@ setup_return(struct pt_regs *regs, struct ksignal *ksig,
3156 * except when the MPU has protected the vectors
3157 * page from PL0
3158 */
3159 - retcode = mm->context.sigpage + signal_return_offset +
3160 - (idx << 2) + thumb;
3161 + retcode = mm->context.sigpage + (idx << 2) + thumb;
3162 } else
3163 #endif
3164 {
3165 @@ -592,33 +589,3 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall)
3166 } while (thread_flags & _TIF_WORK_MASK);
3167 return 0;
3168 }
3169 -
3170 -struct page *get_signal_page(void)
3171 -{
3172 - unsigned long ptr;
3173 - unsigned offset;
3174 - struct page *page;
3175 - void *addr;
3176 -
3177 - page = alloc_pages(GFP_KERNEL, 0);
3178 -
3179 - if (!page)
3180 - return NULL;
3181 -
3182 - addr = page_address(page);
3183 -
3184 - /* Give the signal return code some randomness */
3185 - offset = 0x200 + (get_random_int() & 0x7fc);
3186 - signal_return_offset = offset;
3187 -
3188 - /*
3189 - * Copy signal return handlers into the vector page, and
3190 - * set sigreturn to be a pointer to these.
3191 - */
3192 - memcpy(addr + offset, sigreturn_codes, sizeof(sigreturn_codes));
3193 -
3194 - ptr = (unsigned long)addr + offset;
3195 - flush_icache_range(ptr, ptr + sizeof(sigreturn_codes));
3196 -
3197 - return page;
3198 -}
3199 diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
3200 index 3d6b782..8b3baeb 100644
3201 --- a/arch/arm/kernel/smp.c
3202 +++ b/arch/arm/kernel/smp.c
3203 @@ -76,7 +76,7 @@ enum ipi_msg_type {
3204
3205 static DECLARE_COMPLETION(cpu_running);
3206
3207 -static struct smp_operations smp_ops;
3208 +static struct smp_operations smp_ops __read_only;
3209
3210 void __init smp_set_ops(struct smp_operations *ops)
3211 {
3212 diff --git a/arch/arm/kernel/tcm.c b/arch/arm/kernel/tcm.c
3213 index b10e136..cb5edf9 100644
3214 --- a/arch/arm/kernel/tcm.c
3215 +++ b/arch/arm/kernel/tcm.c
3216 @@ -64,7 +64,7 @@ static struct map_desc itcm_iomap[] __initdata = {
3217 .virtual = ITCM_OFFSET,
3218 .pfn = __phys_to_pfn(ITCM_OFFSET),
3219 .length = 0,
3220 - .type = MT_MEMORY_RWX_ITCM,
3221 + .type = MT_MEMORY_RX_ITCM,
3222 }
3223 };
3224
3225 @@ -362,7 +362,9 @@ no_dtcm:
3226 start = &__sitcm_text;
3227 end = &__eitcm_text;
3228 ram = &__itcm_start;
3229 + pax_open_kernel();
3230 memcpy(start, ram, itcm_code_sz);
3231 + pax_close_kernel();
3232 pr_debug("CPU ITCM: copied code from %p - %p\n",
3233 start, end);
3234 itcm_present = true;
3235 diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
3236 index d358226..bfd4019 100644
3237 --- a/arch/arm/kernel/traps.c
3238 +++ b/arch/arm/kernel/traps.c
3239 @@ -65,7 +65,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long);
3240 void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame)
3241 {
3242 #ifdef CONFIG_KALLSYMS
3243 - printk("[<%08lx>] (%ps) from [<%08lx>] (%pS)\n", where, (void *)where, from, (void *)from);
3244 + printk("[<%08lx>] (%pA) from [<%08lx>] (%pA)\n", where, (void *)where, from, (void *)from);
3245 #else
3246 printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from);
3247 #endif
3248 @@ -267,6 +267,8 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED;
3249 static int die_owner = -1;
3250 static unsigned int die_nest_count;
3251
3252 +extern void gr_handle_kernel_exploit(void);
3253 +
3254 static unsigned long oops_begin(void)
3255 {
3256 int cpu;
3257 @@ -309,6 +311,9 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
3258 panic("Fatal exception in interrupt");
3259 if (panic_on_oops)
3260 panic("Fatal exception");
3261 +
3262 + gr_handle_kernel_exploit();
3263 +
3264 if (signr)
3265 do_exit(signr);
3266 }
3267 @@ -870,7 +875,11 @@ void __init early_trap_init(void *vectors_base)
3268 kuser_init(vectors_base);
3269
3270 flush_icache_range(vectors, vectors + PAGE_SIZE * 2);
3271 - modify_domain(DOMAIN_USER, DOMAIN_CLIENT);
3272 +
3273 +#ifndef CONFIG_PAX_MEMORY_UDEREF
3274 + modify_domain(DOMAIN_USER, DOMAIN_USERCLIENT);
3275 +#endif
3276 +
3277 #else /* ifndef CONFIG_CPU_V7M */
3278 /*
3279 * on V7-M there is no need to copy the vector table to a dedicated
3280 diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
3281 index 8b60fde..8d986dd 100644
3282 --- a/arch/arm/kernel/vmlinux.lds.S
3283 +++ b/arch/arm/kernel/vmlinux.lds.S
3284 @@ -37,7 +37,7 @@
3285 #endif
3286
3287 #if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
3288 - defined(CONFIG_GENERIC_BUG)
3289 + defined(CONFIG_GENERIC_BUG) || defined(CONFIG_PAX_REFCOUNT)
3290 #define ARM_EXIT_KEEP(x) x
3291 #define ARM_EXIT_DISCARD(x)
3292 #else
3293 @@ -120,6 +120,8 @@ SECTIONS
3294 #ifdef CONFIG_DEBUG_RODATA
3295 . = ALIGN(1<<SECTION_SHIFT);
3296 #endif
3297 + _etext = .; /* End of text section */
3298 +
3299 RO_DATA(PAGE_SIZE)
3300
3301 . = ALIGN(4);
3302 @@ -150,8 +152,6 @@ SECTIONS
3303
3304 NOTES
3305
3306 - _etext = .; /* End of text and rodata section */
3307 -
3308 #ifndef CONFIG_XIP_KERNEL
3309 # ifdef CONFIG_ARM_KERNMEM_PERMS
3310 . = ALIGN(1<<SECTION_SHIFT);
3311 diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
3312 index f9c341c..7430436 100644
3313 --- a/arch/arm/kvm/arm.c
3314 +++ b/arch/arm/kvm/arm.c
3315 @@ -57,7 +57,7 @@ static unsigned long hyp_default_vectors;
3316 static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu);
3317
3318 /* The VMID used in the VTTBR */
3319 -static atomic64_t kvm_vmid_gen = ATOMIC64_INIT(1);
3320 +static atomic64_unchecked_t kvm_vmid_gen = ATOMIC64_INIT(1);
3321 static u8 kvm_next_vmid;
3322 static DEFINE_SPINLOCK(kvm_vmid_lock);
3323
3324 @@ -372,7 +372,7 @@ void force_vm_exit(const cpumask_t *mask)
3325 */
3326 static bool need_new_vmid_gen(struct kvm *kvm)
3327 {
3328 - return unlikely(kvm->arch.vmid_gen != atomic64_read(&kvm_vmid_gen));
3329 + return unlikely(kvm->arch.vmid_gen != atomic64_read_unchecked(&kvm_vmid_gen));
3330 }
3331
3332 /**
3333 @@ -405,7 +405,7 @@ static void update_vttbr(struct kvm *kvm)
3334
3335 /* First user of a new VMID generation? */
3336 if (unlikely(kvm_next_vmid == 0)) {
3337 - atomic64_inc(&kvm_vmid_gen);
3338 + atomic64_inc_unchecked(&kvm_vmid_gen);
3339 kvm_next_vmid = 1;
3340
3341 /*
3342 @@ -422,7 +422,7 @@ static void update_vttbr(struct kvm *kvm)
3343 kvm_call_hyp(__kvm_flush_vm_context);
3344 }
3345
3346 - kvm->arch.vmid_gen = atomic64_read(&kvm_vmid_gen);
3347 + kvm->arch.vmid_gen = atomic64_read_unchecked(&kvm_vmid_gen);
3348 kvm->arch.vmid = kvm_next_vmid;
3349 kvm_next_vmid++;
3350
3351 @@ -1110,7 +1110,7 @@ struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr)
3352 /**
3353 * Initialize Hyp-mode and memory mappings on all CPUs.
3354 */
3355 -int kvm_arch_init(void *opaque)
3356 +int kvm_arch_init(const void *opaque)
3357 {
3358 int err;
3359 int ret, cpu;
3360 diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
3361 index 1710fd7..ec3e014 100644
3362 --- a/arch/arm/lib/clear_user.S
3363 +++ b/arch/arm/lib/clear_user.S
3364 @@ -12,14 +12,14 @@
3365
3366 .text
3367
3368 -/* Prototype: int __clear_user(void *addr, size_t sz)
3369 +/* Prototype: int ___clear_user(void *addr, size_t sz)
3370 * Purpose : clear some user memory
3371 * Params : addr - user memory address to clear
3372 * : sz - number of bytes to clear
3373 * Returns : number of bytes NOT cleared
3374 */
3375 ENTRY(__clear_user_std)
3376 -WEAK(__clear_user)
3377 +WEAK(___clear_user)
3378 stmfd sp!, {r1, lr}
3379 mov r2, #0
3380 cmp r1, #4
3381 @@ -44,7 +44,7 @@ WEAK(__clear_user)
3382 USER( strnebt r2, [r0])
3383 mov r0, #0
3384 ldmfd sp!, {r1, pc}
3385 -ENDPROC(__clear_user)
3386 +ENDPROC(___clear_user)
3387 ENDPROC(__clear_user_std)
3388
3389 .pushsection .text.fixup,"ax"
3390 diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
3391 index 7a235b9..73a0556 100644
3392 --- a/arch/arm/lib/copy_from_user.S
3393 +++ b/arch/arm/lib/copy_from_user.S
3394 @@ -17,7 +17,7 @@
3395 /*
3396 * Prototype:
3397 *
3398 - * size_t __copy_from_user(void *to, const void *from, size_t n)
3399 + * size_t ___copy_from_user(void *to, const void *from, size_t n)
3400 *
3401 * Purpose:
3402 *
3403 @@ -89,11 +89,11 @@
3404
3405 .text
3406
3407 -ENTRY(__copy_from_user)
3408 +ENTRY(___copy_from_user)
3409
3410 #include "copy_template.S"
3411
3412 -ENDPROC(__copy_from_user)
3413 +ENDPROC(___copy_from_user)
3414
3415 .pushsection .fixup,"ax"
3416 .align 0
3417 diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S
3418 index 6ee2f67..d1cce76 100644
3419 --- a/arch/arm/lib/copy_page.S
3420 +++ b/arch/arm/lib/copy_page.S
3421 @@ -10,6 +10,7 @@
3422 * ASM optimised string functions
3423 */
3424 #include <linux/linkage.h>
3425 +#include <linux/const.h>
3426 #include <asm/assembler.h>
3427 #include <asm/asm-offsets.h>
3428 #include <asm/cache.h>
3429 diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
3430 index 9648b06..19c333c 100644
3431 --- a/arch/arm/lib/copy_to_user.S
3432 +++ b/arch/arm/lib/copy_to_user.S
3433 @@ -17,7 +17,7 @@
3434 /*
3435 * Prototype:
3436 *
3437 - * size_t __copy_to_user(void *to, const void *from, size_t n)
3438 + * size_t ___copy_to_user(void *to, const void *from, size_t n)
3439 *
3440 * Purpose:
3441 *
3442 @@ -93,11 +93,11 @@
3443 .text
3444
3445 ENTRY(__copy_to_user_std)
3446 -WEAK(__copy_to_user)
3447 +WEAK(___copy_to_user)
3448
3449 #include "copy_template.S"
3450
3451 -ENDPROC(__copy_to_user)
3452 +ENDPROC(___copy_to_user)
3453 ENDPROC(__copy_to_user_std)
3454
3455 .pushsection .text.fixup,"ax"
3456 diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S
3457 index 1d0957e..f708846 100644
3458 --- a/arch/arm/lib/csumpartialcopyuser.S
3459 +++ b/arch/arm/lib/csumpartialcopyuser.S
3460 @@ -57,8 +57,8 @@
3461 * Returns : r0 = checksum, [[sp, #0], #0] = 0 or -EFAULT
3462 */
3463
3464 -#define FN_ENTRY ENTRY(csum_partial_copy_from_user)
3465 -#define FN_EXIT ENDPROC(csum_partial_copy_from_user)
3466 +#define FN_ENTRY ENTRY(__csum_partial_copy_from_user)
3467 +#define FN_EXIT ENDPROC(__csum_partial_copy_from_user)
3468
3469 #include "csumpartialcopygeneric.S"
3470
3471 diff --git a/arch/arm/lib/delay.c b/arch/arm/lib/delay.c
3472 index 8044591..c9b2609 100644
3473 --- a/arch/arm/lib/delay.c
3474 +++ b/arch/arm/lib/delay.c
3475 @@ -29,7 +29,7 @@
3476 /*
3477 * Default to the loop-based delay implementation.
3478 */
3479 -struct arm_delay_ops arm_delay_ops = {
3480 +struct arm_delay_ops arm_delay_ops __read_only = {
3481 .delay = __loop_delay,
3482 .const_udelay = __loop_const_udelay,
3483 .udelay = __loop_udelay,
3484 diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
3485 index 4b39af2..9ae747d 100644
3486 --- a/arch/arm/lib/uaccess_with_memcpy.c
3487 +++ b/arch/arm/lib/uaccess_with_memcpy.c
3488 @@ -85,7 +85,7 @@ pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
3489 return 1;
3490 }
3491
3492 -static unsigned long noinline
3493 +static unsigned long noinline __size_overflow(3)
3494 __copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
3495 {
3496 int atomic;
3497 @@ -136,7 +136,7 @@ out:
3498 }
3499
3500 unsigned long
3501 -__copy_to_user(void __user *to, const void *from, unsigned long n)
3502 +___copy_to_user(void __user *to, const void *from, unsigned long n)
3503 {
3504 /*
3505 * This test is stubbed out of the main function above to keep
3506 @@ -150,7 +150,7 @@ __copy_to_user(void __user *to, const void *from, unsigned long n)
3507 return __copy_to_user_memcpy(to, from, n);
3508 }
3509
3510 -static unsigned long noinline
3511 +static unsigned long noinline __size_overflow(2)
3512 __clear_user_memset(void __user *addr, unsigned long n)
3513 {
3514 if (unlikely(segment_eq(get_fs(), KERNEL_DS))) {
3515 @@ -190,7 +190,7 @@ out:
3516 return n;
3517 }
3518
3519 -unsigned long __clear_user(void __user *addr, unsigned long n)
3520 +unsigned long ___clear_user(void __user *addr, unsigned long n)
3521 {
3522 /* See rational for this in __copy_to_user() above. */
3523 if (n < 64)
3524 diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c
3525 index f572219..2cf36d5 100644
3526 --- a/arch/arm/mach-exynos/suspend.c
3527 +++ b/arch/arm/mach-exynos/suspend.c
3528 @@ -732,8 +732,10 @@ void __init exynos_pm_init(void)
3529 tmp |= pm_data->wake_disable_mask;
3530 pmu_raw_writel(tmp, S5P_WAKEUP_MASK);
3531
3532 - exynos_pm_syscore_ops.suspend = pm_data->pm_suspend;
3533 - exynos_pm_syscore_ops.resume = pm_data->pm_resume;
3534 + pax_open_kernel();
3535 + *(void **)&exynos_pm_syscore_ops.suspend = pm_data->pm_suspend;
3536 + *(void **)&exynos_pm_syscore_ops.resume = pm_data->pm_resume;
3537 + pax_close_kernel();
3538
3539 register_syscore_ops(&exynos_pm_syscore_ops);
3540 suspend_set_ops(&exynos_suspend_ops);
3541 diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
3542 index e46e9ea..9141c83 100644
3543 --- a/arch/arm/mach-mvebu/coherency.c
3544 +++ b/arch/arm/mach-mvebu/coherency.c
3545 @@ -117,7 +117,7 @@ static void __init armada_370_coherency_init(struct device_node *np)
3546
3547 /*
3548 * This ioremap hook is used on Armada 375/38x to ensure that PCIe
3549 - * memory areas are mapped as MT_UNCACHED instead of MT_DEVICE. This
3550 + * memory areas are mapped as MT_UNCACHED_RW instead of MT_DEVICE. This
3551 * is needed as a workaround for a deadlock issue between the PCIe
3552 * interface and the cache controller.
3553 */
3554 @@ -130,7 +130,7 @@ armada_pcie_wa_ioremap_caller(phys_addr_t phys_addr, size_t size,
3555 mvebu_mbus_get_pcie_mem_aperture(&pcie_mem);
3556
3557 if (pcie_mem.start <= phys_addr && (phys_addr + size) <= pcie_mem.end)
3558 - mtype = MT_UNCACHED;
3559 + mtype = MT_UNCACHED_RW;
3560
3561 return __arm_ioremap_caller(phys_addr, size, mtype, caller);
3562 }
3563 diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
3564 index b6443a4..20a0b74 100644
3565 --- a/arch/arm/mach-omap2/board-n8x0.c
3566 +++ b/arch/arm/mach-omap2/board-n8x0.c
3567 @@ -569,7 +569,7 @@ static int n8x0_menelaus_late_init(struct device *dev)
3568 }
3569 #endif
3570
3571 -struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = {
3572 +struct menelaus_platform_data n8x0_menelaus_platform_data __initconst = {
3573 .late_init = n8x0_menelaus_late_init,
3574 };
3575
3576 diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3577 index 79f49d9..70bf184 100644
3578 --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3579 +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
3580 @@ -86,7 +86,7 @@ struct cpu_pm_ops {
3581 void (*resume)(void);
3582 void (*scu_prepare)(unsigned int cpu_id, unsigned int cpu_state);
3583 void (*hotplug_restart)(void);
3584 -};
3585 +} __no_const;
3586
3587 static DEFINE_PER_CPU(struct omap4_cpu_pm_info, omap4_pm_info);
3588 static struct powerdomain *mpuss_pd;
3589 @@ -105,7 +105,7 @@ static void dummy_cpu_resume(void)
3590 static void dummy_scu_prepare(unsigned int cpu_id, unsigned int cpu_state)
3591 {}
3592
3593 -struct cpu_pm_ops omap_pm_ops = {
3594 +static struct cpu_pm_ops omap_pm_ops __read_only = {
3595 .finish_suspend = default_finish_suspend,
3596 .resume = dummy_cpu_resume,
3597 .scu_prepare = dummy_scu_prepare,
3598 diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
3599 index 5305ec7..6d74045 100644
3600 --- a/arch/arm/mach-omap2/omap-smp.c
3601 +++ b/arch/arm/mach-omap2/omap-smp.c
3602 @@ -19,6 +19,7 @@
3603 #include <linux/device.h>
3604 #include <linux/smp.h>
3605 #include <linux/io.h>
3606 +#include <linux/irq.h>
3607 #include <linux/irqchip/arm-gic.h>
3608
3609 #include <asm/smp_scu.h>
3610 diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
3611 index e1d2e99..d9b3177 100644
3612 --- a/arch/arm/mach-omap2/omap-wakeupgen.c
3613 +++ b/arch/arm/mach-omap2/omap-wakeupgen.c
3614 @@ -330,7 +330,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self,
3615 return NOTIFY_OK;
3616 }
3617
3618 -static struct notifier_block __refdata irq_hotplug_notifier = {
3619 +static struct notifier_block irq_hotplug_notifier = {
3620 .notifier_call = irq_cpu_hotplug_notify,
3621 };
3622
3623 diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
3624 index 4cb8fd9..5ce65bc 100644
3625 --- a/arch/arm/mach-omap2/omap_device.c
3626 +++ b/arch/arm/mach-omap2/omap_device.c
3627 @@ -504,7 +504,7 @@ void omap_device_delete(struct omap_device *od)
3628 struct platform_device __init *omap_device_build(const char *pdev_name,
3629 int pdev_id,
3630 struct omap_hwmod *oh,
3631 - void *pdata, int pdata_len)
3632 + const void *pdata, int pdata_len)
3633 {
3634 struct omap_hwmod *ohs[] = { oh };
3635
3636 @@ -532,7 +532,7 @@ struct platform_device __init *omap_device_build(const char *pdev_name,
3637 struct platform_device __init *omap_device_build_ss(const char *pdev_name,
3638 int pdev_id,
3639 struct omap_hwmod **ohs,
3640 - int oh_cnt, void *pdata,
3641 + int oh_cnt, const void *pdata,
3642 int pdata_len)
3643 {
3644 int ret = -ENOMEM;
3645 diff --git a/arch/arm/mach-omap2/omap_device.h b/arch/arm/mach-omap2/omap_device.h
3646 index 78c02b3..c94109a 100644
3647 --- a/arch/arm/mach-omap2/omap_device.h
3648 +++ b/arch/arm/mach-omap2/omap_device.h
3649 @@ -72,12 +72,12 @@ int omap_device_idle(struct platform_device *pdev);
3650 /* Core code interface */
3651
3652 struct platform_device *omap_device_build(const char *pdev_name, int pdev_id,
3653 - struct omap_hwmod *oh, void *pdata,
3654 + struct omap_hwmod *oh, const void *pdata,
3655 int pdata_len);
3656
3657 struct platform_device *omap_device_build_ss(const char *pdev_name, int pdev_id,
3658 struct omap_hwmod **oh, int oh_cnt,
3659 - void *pdata, int pdata_len);
3660 + const void *pdata, int pdata_len);
3661
3662 struct omap_device *omap_device_alloc(struct platform_device *pdev,
3663 struct omap_hwmod **ohs, int oh_cnt);
3664 diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
3665 index 486cc4d..8d1a0b7 100644
3666 --- a/arch/arm/mach-omap2/omap_hwmod.c
3667 +++ b/arch/arm/mach-omap2/omap_hwmod.c
3668 @@ -199,10 +199,10 @@ struct omap_hwmod_soc_ops {
3669 int (*init_clkdm)(struct omap_hwmod *oh);
3670 void (*update_context_lost)(struct omap_hwmod *oh);
3671 int (*get_context_lost)(struct omap_hwmod *oh);
3672 -};
3673 +} __no_const;
3674
3675 /* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */
3676 -static struct omap_hwmod_soc_ops soc_ops;
3677 +static struct omap_hwmod_soc_ops soc_ops __read_only;
3678
3679 /* omap_hwmod_list contains all registered struct omap_hwmods */
3680 static LIST_HEAD(omap_hwmod_list);
3681 diff --git a/arch/arm/mach-omap2/powerdomains43xx_data.c b/arch/arm/mach-omap2/powerdomains43xx_data.c
3682 index 95fee54..cfa9cf1 100644
3683 --- a/arch/arm/mach-omap2/powerdomains43xx_data.c
3684 +++ b/arch/arm/mach-omap2/powerdomains43xx_data.c
3685 @@ -10,6 +10,7 @@
3686
3687 #include <linux/kernel.h>
3688 #include <linux/init.h>
3689 +#include <asm/pgtable.h>
3690
3691 #include "powerdomain.h"
3692
3693 @@ -129,7 +130,9 @@ static int am43xx_check_vcvp(void)
3694
3695 void __init am43xx_powerdomains_init(void)
3696 {
3697 - omap4_pwrdm_operations.pwrdm_has_voltdm = am43xx_check_vcvp;
3698 + pax_open_kernel();
3699 + *(void **)&omap4_pwrdm_operations.pwrdm_has_voltdm = am43xx_check_vcvp;
3700 + pax_close_kernel();
3701 pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
3702 pwrdm_register_pwrdms(powerdomains_am43xx);
3703 pwrdm_complete_init();
3704 diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c
3705 index ff0a68c..b312aa0 100644
3706 --- a/arch/arm/mach-omap2/wd_timer.c
3707 +++ b/arch/arm/mach-omap2/wd_timer.c
3708 @@ -110,7 +110,9 @@ static int __init omap_init_wdt(void)
3709 struct omap_hwmod *oh;
3710 char *oh_name = "wd_timer2";
3711 char *dev_name = "omap_wdt";
3712 - struct omap_wd_timer_platform_data pdata;
3713 + static struct omap_wd_timer_platform_data pdata = {
3714 + .read_reset_sources = prm_read_reset_sources
3715 + };
3716
3717 if (!cpu_class_is_omap2() || of_have_populated_dt())
3718 return 0;
3719 @@ -121,8 +123,6 @@ static int __init omap_init_wdt(void)
3720 return -EINVAL;
3721 }
3722
3723 - pdata.read_reset_sources = prm_read_reset_sources;
3724 -
3725 pdev = omap_device_build(dev_name, id, oh, &pdata,
3726 sizeof(struct omap_wd_timer_platform_data));
3727 WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n",
3728 diff --git a/arch/arm/mach-shmobile/platsmp-apmu.c b/arch/arm/mach-shmobile/platsmp-apmu.c
3729 index b0790fc..71eb21f 100644
3730 --- a/arch/arm/mach-shmobile/platsmp-apmu.c
3731 +++ b/arch/arm/mach-shmobile/platsmp-apmu.c
3732 @@ -22,6 +22,7 @@
3733 #include <asm/proc-fns.h>
3734 #include <asm/smp_plat.h>
3735 #include <asm/suspend.h>
3736 +#include <asm/pgtable.h>
3737 #include "common.h"
3738 #include "platsmp-apmu.h"
3739
3740 @@ -233,6 +234,8 @@ static int shmobile_smp_apmu_enter_suspend(suspend_state_t state)
3741
3742 void __init shmobile_smp_apmu_suspend_init(void)
3743 {
3744 - shmobile_suspend_ops.enter = shmobile_smp_apmu_enter_suspend;
3745 + pax_open_kernel();
3746 + *(void **)&shmobile_suspend_ops.enter = shmobile_smp_apmu_enter_suspend;
3747 + pax_close_kernel();
3748 }
3749 #endif
3750 diff --git a/arch/arm/mach-shmobile/pm-r8a7740.c b/arch/arm/mach-shmobile/pm-r8a7740.c
3751 index 34608fc..344d7c0 100644
3752 --- a/arch/arm/mach-shmobile/pm-r8a7740.c
3753 +++ b/arch/arm/mach-shmobile/pm-r8a7740.c
3754 @@ -11,6 +11,7 @@
3755 #include <linux/console.h>
3756 #include <linux/io.h>
3757 #include <linux/suspend.h>
3758 +#include <asm/pgtable.h>
3759
3760 #include "common.h"
3761 #include "pm-rmobile.h"
3762 @@ -117,7 +118,9 @@ static int r8a7740_enter_suspend(suspend_state_t suspend_state)
3763
3764 static void r8a7740_suspend_init(void)
3765 {
3766 - shmobile_suspend_ops.enter = r8a7740_enter_suspend;
3767 + pax_open_kernel();
3768 + *(void **)&shmobile_suspend_ops.enter = r8a7740_enter_suspend;
3769 + pax_close_kernel();
3770 }
3771 #else
3772 static void r8a7740_suspend_init(void) {}
3773 diff --git a/arch/arm/mach-shmobile/pm-sh73a0.c b/arch/arm/mach-shmobile/pm-sh73a0.c
3774 index a7e4668..83334f33 100644
3775 --- a/arch/arm/mach-shmobile/pm-sh73a0.c
3776 +++ b/arch/arm/mach-shmobile/pm-sh73a0.c
3777 @@ -9,6 +9,7 @@
3778 */
3779
3780 #include <linux/suspend.h>
3781 +#include <asm/pgtable.h>
3782 #include "common.h"
3783
3784 #ifdef CONFIG_SUSPEND
3785 @@ -20,7 +21,9 @@ static int sh73a0_enter_suspend(suspend_state_t suspend_state)
3786
3787 static void sh73a0_suspend_init(void)
3788 {
3789 - shmobile_suspend_ops.enter = sh73a0_enter_suspend;
3790 + pax_open_kernel();
3791 + *(void **)&shmobile_suspend_ops.enter = sh73a0_enter_suspend;
3792 + pax_close_kernel();
3793 }
3794 #else
3795 static void sh73a0_suspend_init(void) {}
3796 diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c
3797 index 7469347..1ecc350 100644
3798 --- a/arch/arm/mach-tegra/cpuidle-tegra20.c
3799 +++ b/arch/arm/mach-tegra/cpuidle-tegra20.c
3800 @@ -177,7 +177,7 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev,
3801 bool entered_lp2 = false;
3802
3803 if (tegra_pending_sgi())
3804 - ACCESS_ONCE(abort_flag) = true;
3805 + ACCESS_ONCE_RW(abort_flag) = true;
3806
3807 cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
3808
3809 diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c
3810 index 3b9098d..15b390f 100644
3811 --- a/arch/arm/mach-tegra/irq.c
3812 +++ b/arch/arm/mach-tegra/irq.c
3813 @@ -20,6 +20,7 @@
3814 #include <linux/cpu_pm.h>
3815 #include <linux/interrupt.h>
3816 #include <linux/io.h>
3817 +#include <linux/irq.h>
3818 #include <linux/irqchip/arm-gic.h>
3819 #include <linux/irq.h>
3820 #include <linux/kernel.h>
3821 diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c
3822 index 8538910..2f39bc4 100644
3823 --- a/arch/arm/mach-ux500/pm.c
3824 +++ b/arch/arm/mach-ux500/pm.c
3825 @@ -10,6 +10,7 @@
3826 */
3827
3828 #include <linux/kernel.h>
3829 +#include <linux/irq.h>
3830 #include <linux/irqchip/arm-gic.h>
3831 #include <linux/delay.h>
3832 #include <linux/io.h>
3833 diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
3834 index f66816c..228b951 100644
3835 --- a/arch/arm/mach-zynq/platsmp.c
3836 +++ b/arch/arm/mach-zynq/platsmp.c
3837 @@ -24,6 +24,7 @@
3838 #include <linux/io.h>
3839 #include <asm/cacheflush.h>
3840 #include <asm/smp_scu.h>
3841 +#include <linux/irq.h>
3842 #include <linux/irqchip/arm-gic.h>
3843 #include "common.h"
3844
3845 diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
3846 index 7c6b976..055db09 100644
3847 --- a/arch/arm/mm/Kconfig
3848 +++ b/arch/arm/mm/Kconfig
3849 @@ -446,6 +446,7 @@ config CPU_32v5
3850
3851 config CPU_32v6
3852 bool
3853 + select CPU_USE_DOMAINS if CPU_V6 && MMU && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
3854 select TLS_REG_EMUL if !CPU_32v6K && !MMU
3855
3856 config CPU_32v6K
3857 @@ -600,6 +601,7 @@ config CPU_CP15_MPU
3858
3859 config CPU_USE_DOMAINS
3860 bool
3861 + depends on !ARM_LPAE && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
3862 help
3863 This option enables or disables the use of domain switching
3864 via the set_fs() function.
3865 @@ -818,7 +820,7 @@ config NEED_KUSER_HELPERS
3866
3867 config KUSER_HELPERS
3868 bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
3869 - depends on MMU
3870 + depends on MMU && (!(CPU_V6 || CPU_V6K || CPU_V7) || GRKERNSEC_OLD_ARM_USERLAND)
3871 default y
3872 help
3873 Warning: disabling this option may break user programs.
3874 @@ -832,7 +834,7 @@ config KUSER_HELPERS
3875 See Documentation/arm/kernel_user_helpers.txt for details.
3876
3877 However, the fixed address nature of these helpers can be used
3878 - by ROP (return orientated programming) authors when creating
3879 + by ROP (Return Oriented Programming) authors when creating
3880 exploits.
3881
3882 If all of the binaries and libraries which run on your platform
3883 diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
3884 index 9769f1e..16aaa55 100644
3885 --- a/arch/arm/mm/alignment.c
3886 +++ b/arch/arm/mm/alignment.c
3887 @@ -216,10 +216,12 @@ union offset_union {
3888 #define __get16_unaligned_check(ins,val,addr) \
3889 do { \
3890 unsigned int err = 0, v, a = addr; \
3891 + pax_open_userland(); \
3892 __get8_unaligned_check(ins,v,a,err); \
3893 val = v << ((BE) ? 8 : 0); \
3894 __get8_unaligned_check(ins,v,a,err); \
3895 val |= v << ((BE) ? 0 : 8); \
3896 + pax_close_userland(); \
3897 if (err) \
3898 goto fault; \
3899 } while (0)
3900 @@ -233,6 +235,7 @@ union offset_union {
3901 #define __get32_unaligned_check(ins,val,addr) \
3902 do { \
3903 unsigned int err = 0, v, a = addr; \
3904 + pax_open_userland(); \
3905 __get8_unaligned_check(ins,v,a,err); \
3906 val = v << ((BE) ? 24 : 0); \
3907 __get8_unaligned_check(ins,v,a,err); \
3908 @@ -241,6 +244,7 @@ union offset_union {
3909 val |= v << ((BE) ? 8 : 16); \
3910 __get8_unaligned_check(ins,v,a,err); \
3911 val |= v << ((BE) ? 0 : 24); \
3912 + pax_close_userland(); \
3913 if (err) \
3914 goto fault; \
3915 } while (0)
3916 @@ -254,6 +258,7 @@ union offset_union {
3917 #define __put16_unaligned_check(ins,val,addr) \
3918 do { \
3919 unsigned int err = 0, v = val, a = addr; \
3920 + pax_open_userland(); \
3921 __asm__( FIRST_BYTE_16 \
3922 ARM( "1: "ins" %1, [%2], #1\n" ) \
3923 THUMB( "1: "ins" %1, [%2]\n" ) \
3924 @@ -273,6 +278,7 @@ union offset_union {
3925 " .popsection\n" \
3926 : "=r" (err), "=&r" (v), "=&r" (a) \
3927 : "0" (err), "1" (v), "2" (a)); \
3928 + pax_close_userland(); \
3929 if (err) \
3930 goto fault; \
3931 } while (0)
3932 @@ -286,6 +292,7 @@ union offset_union {
3933 #define __put32_unaligned_check(ins,val,addr) \
3934 do { \
3935 unsigned int err = 0, v = val, a = addr; \
3936 + pax_open_userland(); \
3937 __asm__( FIRST_BYTE_32 \
3938 ARM( "1: "ins" %1, [%2], #1\n" ) \
3939 THUMB( "1: "ins" %1, [%2]\n" ) \
3940 @@ -315,6 +322,7 @@ union offset_union {
3941 " .popsection\n" \
3942 : "=r" (err), "=&r" (v), "=&r" (a) \
3943 : "0" (err), "1" (v), "2" (a)); \
3944 + pax_close_userland(); \
3945 if (err) \
3946 goto fault; \
3947 } while (0)
3948 diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
3949 index 71b3d33..8af9ade 100644
3950 --- a/arch/arm/mm/cache-l2x0.c
3951 +++ b/arch/arm/mm/cache-l2x0.c
3952 @@ -44,7 +44,7 @@ struct l2c_init_data {
3953 void (*configure)(void __iomem *);
3954 void (*unlock)(void __iomem *, unsigned);
3955 struct outer_cache_fns outer_cache;
3956 -};
3957 +} __do_const;
3958
3959 #define CACHE_LINE_SIZE 32
3960
3961 diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
3962 index 845769e..4278fd7 100644
3963 --- a/arch/arm/mm/context.c
3964 +++ b/arch/arm/mm/context.c
3965 @@ -43,7 +43,7 @@
3966 #define NUM_USER_ASIDS ASID_FIRST_VERSION
3967
3968 static DEFINE_RAW_SPINLOCK(cpu_asid_lock);
3969 -static atomic64_t asid_generation = ATOMIC64_INIT(ASID_FIRST_VERSION);
3970 +static atomic64_unchecked_t asid_generation = ATOMIC64_INIT(ASID_FIRST_VERSION);
3971 static DECLARE_BITMAP(asid_map, NUM_USER_ASIDS);
3972
3973 static DEFINE_PER_CPU(atomic64_t, active_asids);
3974 @@ -178,7 +178,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
3975 {
3976 static u32 cur_idx = 1;
3977 u64 asid = atomic64_read(&mm->context.id);
3978 - u64 generation = atomic64_read(&asid_generation);
3979 + u64 generation = atomic64_read_unchecked(&asid_generation);
3980
3981 if (asid != 0) {
3982 /*
3983 @@ -208,7 +208,7 @@ static u64 new_context(struct mm_struct *mm, unsigned int cpu)
3984 */
3985 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx);
3986 if (asid == NUM_USER_ASIDS) {
3987 - generation = atomic64_add_return(ASID_FIRST_VERSION,
3988 + generation = atomic64_add_return_unchecked(ASID_FIRST_VERSION,
3989 &asid_generation);
3990 flush_context(cpu);
3991 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1);
3992 @@ -240,14 +240,14 @@ void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk)
3993 cpu_set_reserved_ttbr0();
3994
3995 asid = atomic64_read(&mm->context.id);
3996 - if (!((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS)
3997 + if (!((asid ^ atomic64_read_unchecked(&asid_generation)) >> ASID_BITS)
3998 && atomic64_xchg(&per_cpu(active_asids, cpu), asid))
3999 goto switch_mm_fastpath;
4000
4001 raw_spin_lock_irqsave(&cpu_asid_lock, flags);
4002 /* Check that our ASID belongs to the current generation. */
4003 asid = atomic64_read(&mm->context.id);
4004 - if ((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS) {
4005 + if ((asid ^ atomic64_read_unchecked(&asid_generation)) >> ASID_BITS) {
4006 asid = new_context(mm, cpu);
4007 atomic64_set(&mm->context.id, asid);
4008 }
4009 diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
4010 index 0d629b8..01867c8 100644
4011 --- a/arch/arm/mm/fault.c
4012 +++ b/arch/arm/mm/fault.c
4013 @@ -25,6 +25,7 @@
4014 #include <asm/system_misc.h>
4015 #include <asm/system_info.h>
4016 #include <asm/tlbflush.h>
4017 +#include <asm/sections.h>
4018
4019 #include "fault.h"
4020
4021 @@ -138,6 +139,31 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
4022 if (fixup_exception(regs))
4023 return;
4024
4025 +#ifdef CONFIG_PAX_MEMORY_UDEREF
4026 + if (addr < TASK_SIZE) {
4027 + if (current->signal->curr_ip)
4028 + printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", &current->signal->curr_ip, current->comm, task_pid_nr(current),
4029 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr);
4030 + else
4031 + printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current),
4032 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr);
4033 + }
4034 +#endif
4035 +
4036 +#ifdef CONFIG_PAX_KERNEXEC
4037 + if ((fsr & FSR_WRITE) &&
4038 + (((unsigned long)_stext <= addr && addr < init_mm.end_code) ||
4039 + (MODULES_VADDR <= addr && addr < MODULES_END)))
4040 + {
4041 + if (current->signal->curr_ip)
4042 + printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", &current->signal->curr_ip, current->comm, task_pid_nr(current),
4043 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
4044 + else
4045 + printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current),
4046 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
4047 + }
4048 +#endif
4049 +
4050 /*
4051 * No handler, we'll have to terminate things with extreme prejudice.
4052 */
4053 @@ -173,6 +199,13 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
4054 }
4055 #endif
4056
4057 +#ifdef CONFIG_PAX_PAGEEXEC
4058 + if (fsr & FSR_LNX_PF) {
4059 + pax_report_fault(regs, (void *)regs->ARM_pc, (void *)regs->ARM_sp);
4060 + do_group_exit(SIGKILL);
4061 + }
4062 +#endif
4063 +
4064 tsk->thread.address = addr;
4065 tsk->thread.error_code = fsr;
4066 tsk->thread.trap_no = 14;
4067 @@ -400,6 +433,33 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
4068 }
4069 #endif /* CONFIG_MMU */
4070
4071 +#ifdef CONFIG_PAX_PAGEEXEC
4072 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
4073 +{
4074 + long i;
4075 +
4076 + printk(KERN_ERR "PAX: bytes at PC: ");
4077 + for (i = 0; i < 20; i++) {
4078 + unsigned char c;
4079 + if (get_user(c, (__force unsigned char __user *)pc+i))
4080 + printk(KERN_CONT "?? ");
4081 + else
4082 + printk(KERN_CONT "%02x ", c);
4083 + }
4084 + printk("\n");
4085 +
4086 + printk(KERN_ERR "PAX: bytes at SP-4: ");
4087 + for (i = -1; i < 20; i++) {
4088 + unsigned long c;
4089 + if (get_user(c, (__force unsigned long __user *)sp+i))
4090 + printk(KERN_CONT "???????? ");
4091 + else
4092 + printk(KERN_CONT "%08lx ", c);
4093 + }
4094 + printk("\n");
4095 +}
4096 +#endif
4097 +
4098 /*
4099 * First Level Translation Fault Handler
4100 *
4101 @@ -547,9 +607,22 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
4102 const struct fsr_info *inf = fsr_info + fsr_fs(fsr);
4103 struct siginfo info;
4104
4105 +#ifdef CONFIG_PAX_MEMORY_UDEREF
4106 + if (addr < TASK_SIZE && is_domain_fault(fsr)) {
4107 + if (current->signal->curr_ip)
4108 + printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", &current->signal->curr_ip, current->comm, task_pid_nr(current),
4109 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr);
4110 + else
4111 + printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current),
4112 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr);
4113 + goto die;
4114 + }
4115 +#endif
4116 +
4117 if (!inf->fn(addr, fsr & ~FSR_LNX_PF, regs))
4118 return;
4119
4120 +die:
4121 pr_alert("Unhandled fault: %s (0x%03x) at 0x%08lx\n",
4122 inf->name, fsr, addr);
4123 show_pte(current->mm, addr);
4124 @@ -574,15 +647,104 @@ hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *
4125 ifsr_info[nr].name = name;
4126 }
4127
4128 +asmlinkage int sys_sigreturn(struct pt_regs *regs);
4129 +asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
4130 +
4131 asmlinkage void __exception
4132 do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)
4133 {
4134 const struct fsr_info *inf = ifsr_info + fsr_fs(ifsr);
4135 struct siginfo info;
4136 + unsigned long pc = instruction_pointer(regs);
4137 +
4138 + if (user_mode(regs)) {
4139 + unsigned long sigpage = current->mm->context.sigpage;
4140 +
4141 + if (sigpage <= pc && pc < sigpage + 7*4) {
4142 + if (pc < sigpage + 3*4)
4143 + sys_sigreturn(regs);
4144 + else
4145 + sys_rt_sigreturn(regs);
4146 + return;
4147 + }
4148 + if (pc == 0xffff0f60UL) {
4149 + /*
4150 + * PaX: __kuser_cmpxchg64 emulation
4151 + */
4152 + // TODO
4153 + //regs->ARM_pc = regs->ARM_lr;
4154 + //return;
4155 + }
4156 + if (pc == 0xffff0fa0UL) {
4157 + /*
4158 + * PaX: __kuser_memory_barrier emulation
4159 + */
4160 + // dmb(); implied by the exception
4161 + regs->ARM_pc = regs->ARM_lr;
4162 + return;
4163 + }
4164 + if (pc == 0xffff0fc0UL) {
4165 + /*
4166 + * PaX: __kuser_cmpxchg emulation
4167 + */
4168 + // TODO
4169 + //long new;
4170 + //int op;
4171 +
4172 + //op = FUTEX_OP_SET << 28;
4173 + //new = futex_atomic_op_inuser(op, regs->ARM_r2);
4174 + //regs->ARM_r0 = old != new;
4175 + //regs->ARM_pc = regs->ARM_lr;
4176 + //return;
4177 + }
4178 + if (pc == 0xffff0fe0UL) {
4179 + /*
4180 + * PaX: __kuser_get_tls emulation
4181 + */
4182 + regs->ARM_r0 = current_thread_info()->tp_value[0];
4183 + regs->ARM_pc = regs->ARM_lr;
4184 + return;
4185 + }
4186 + }
4187 +
4188 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
4189 + else if (is_domain_fault(ifsr) || is_xn_fault(ifsr)) {
4190 + if (current->signal->curr_ip)
4191 + printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", &current->signal->curr_ip, current->comm, task_pid_nr(current),
4192 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()),
4193 + pc >= TASK_SIZE ? "non-executable kernel" : "userland", pc);
4194 + else
4195 + printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", current->comm, task_pid_nr(current),
4196 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()),
4197 + pc >= TASK_SIZE ? "non-executable kernel" : "userland", pc);
4198 + goto die;
4199 + }
4200 +#endif
4201 +
4202 +#ifdef CONFIG_PAX_REFCOUNT
4203 + if (fsr_fs(ifsr) == FAULT_CODE_DEBUG) {
4204 +#ifdef CONFIG_THUMB2_KERNEL
4205 + unsigned short bkpt;
4206 +
4207 + if (!probe_kernel_address(pc, bkpt) && cpu_to_le16(bkpt) == 0xbef1) {
4208 +#else
4209 + unsigned int bkpt;
4210 +
4211 + if (!probe_kernel_address(pc, bkpt) && cpu_to_le32(bkpt) == 0xe12f1073) {
4212 +#endif
4213 + current->thread.error_code = ifsr;
4214 + current->thread.trap_no = 0;
4215 + pax_report_refcount_overflow(regs);
4216 + fixup_exception(regs);
4217 + return;
4218 + }
4219 + }
4220 +#endif
4221
4222 if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs))
4223 return;
4224
4225 +die:
4226 pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n",
4227 inf->name, ifsr, addr);
4228
4229 diff --git a/arch/arm/mm/fault.h b/arch/arm/mm/fault.h
4230 index cf08bdf..772656c 100644
4231 --- a/arch/arm/mm/fault.h
4232 +++ b/arch/arm/mm/fault.h
4233 @@ -3,6 +3,7 @@
4234
4235 /*
4236 * Fault status register encodings. We steal bit 31 for our own purposes.
4237 + * Set when the FSR value is from an instruction fault.
4238 */
4239 #define FSR_LNX_PF (1 << 31)
4240 #define FSR_WRITE (1 << 11)
4241 @@ -22,6 +23,17 @@ static inline int fsr_fs(unsigned int fsr)
4242 }
4243 #endif
4244
4245 +/* valid for LPAE and !LPAE */
4246 +static inline int is_xn_fault(unsigned int fsr)
4247 +{
4248 + return ((fsr_fs(fsr) & 0x3c) == 0xc);
4249 +}
4250 +
4251 +static inline int is_domain_fault(unsigned int fsr)
4252 +{
4253 + return ((fsr_fs(fsr) & 0xD) == 0x9);
4254 +}
4255 +
4256 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
4257 unsigned long search_exception_table(unsigned long addr);
4258
4259 diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
4260 index 8a63b4c..6b04370 100644
4261 --- a/arch/arm/mm/init.c
4262 +++ b/arch/arm/mm/init.c
4263 @@ -710,7 +710,46 @@ void free_tcmmem(void)
4264 {
4265 #ifdef CONFIG_HAVE_TCM
4266 extern char __tcm_start, __tcm_end;
4267 +#endif
4268
4269 +#ifdef CONFIG_PAX_KERNEXEC
4270 + unsigned long addr;
4271 + pgd_t *pgd;
4272 + pud_t *pud;
4273 + pmd_t *pmd;
4274 + int cpu_arch = cpu_architecture();
4275 + unsigned int cr = get_cr();
4276 +
4277 + if (cpu_arch >= CPU_ARCH_ARMv6 && (cr & CR_XP)) {
4278 + /* make pages tables, etc before .text NX */
4279 + for (addr = PAGE_OFFSET; addr < (unsigned long)_stext; addr += SECTION_SIZE) {
4280 + pgd = pgd_offset_k(addr);
4281 + pud = pud_offset(pgd, addr);
4282 + pmd = pmd_offset(pud, addr);
4283 + __section_update(pmd, addr, PMD_SECT_XN);
4284 + }
4285 + /* make init NX */
4286 + for (addr = (unsigned long)__init_begin; addr < (unsigned long)_sdata; addr += SECTION_SIZE) {
4287 + pgd = pgd_offset_k(addr);
4288 + pud = pud_offset(pgd, addr);
4289 + pmd = pmd_offset(pud, addr);
4290 + __section_update(pmd, addr, PMD_SECT_XN);
4291 + }
4292 + /* make kernel code/rodata RX */
4293 + for (addr = (unsigned long)_stext; addr < (unsigned long)__init_begin; addr += SECTION_SIZE) {
4294 + pgd = pgd_offset_k(addr);
4295 + pud = pud_offset(pgd, addr);
4296 + pmd = pmd_offset(pud, addr);
4297 +#ifdef CONFIG_ARM_LPAE
4298 + __section_update(pmd, addr, PMD_SECT_RDONLY);
4299 +#else
4300 + __section_update(pmd, addr, PMD_SECT_APX|PMD_SECT_AP_WRITE);
4301 +#endif
4302 + }
4303 + }
4304 +#endif
4305 +
4306 +#ifdef CONFIG_HAVE_TCM
4307 poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start);
4308 free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link");
4309 #endif
4310 diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
4311 index 0c81056..97279f7 100644
4312 --- a/arch/arm/mm/ioremap.c
4313 +++ b/arch/arm/mm/ioremap.c
4314 @@ -405,9 +405,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached)
4315 unsigned int mtype;
4316
4317 if (cached)
4318 - mtype = MT_MEMORY_RWX;
4319 + mtype = MT_MEMORY_RX;
4320 else
4321 - mtype = MT_MEMORY_RWX_NONCACHED;
4322 + mtype = MT_MEMORY_RX_NONCACHED;
4323
4324 return __arm_ioremap_caller(phys_addr, size, mtype,
4325 __builtin_return_address(0));
4326 diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
4327 index 407dc78..047ce9d 100644
4328 --- a/arch/arm/mm/mmap.c
4329 +++ b/arch/arm/mm/mmap.c
4330 @@ -59,6 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
4331 struct vm_area_struct *vma;
4332 int do_align = 0;
4333 int aliasing = cache_is_vipt_aliasing();
4334 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
4335 struct vm_unmapped_area_info info;
4336
4337 /*
4338 @@ -81,6 +82,10 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
4339 if (len > TASK_SIZE)
4340 return -ENOMEM;
4341
4342 +#ifdef CONFIG_PAX_RANDMMAP
4343 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
4344 +#endif
4345 +
4346 if (addr) {
4347 if (do_align)
4348 addr = COLOUR_ALIGN(addr, pgoff);
4349 @@ -88,8 +93,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
4350 addr = PAGE_ALIGN(addr);
4351
4352 vma = find_vma(mm, addr);
4353 - if (TASK_SIZE - len >= addr &&
4354 - (!vma || addr + len <= vma->vm_start))
4355 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
4356 return addr;
4357 }
4358
4359 @@ -99,6 +103,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
4360 info.high_limit = TASK_SIZE;
4361 info.align_mask = do_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
4362 info.align_offset = pgoff << PAGE_SHIFT;
4363 + info.threadstack_offset = offset;
4364 return vm_unmapped_area(&info);
4365 }
4366
4367 @@ -112,6 +117,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
4368 unsigned long addr = addr0;
4369 int do_align = 0;
4370 int aliasing = cache_is_vipt_aliasing();
4371 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
4372 struct vm_unmapped_area_info info;
4373
4374 /*
4375 @@ -132,6 +138,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
4376 return addr;
4377 }
4378
4379 +#ifdef CONFIG_PAX_RANDMMAP
4380 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
4381 +#endif
4382 +
4383 /* requesting a specific address */
4384 if (addr) {
4385 if (do_align)
4386 @@ -139,8 +149,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
4387 else
4388 addr = PAGE_ALIGN(addr);
4389 vma = find_vma(mm, addr);
4390 - if (TASK_SIZE - len >= addr &&
4391 - (!vma || addr + len <= vma->vm_start))
4392 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
4393 return addr;
4394 }
4395
4396 @@ -150,6 +159,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
4397 info.high_limit = mm->mmap_base;
4398 info.align_mask = do_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
4399 info.align_offset = pgoff << PAGE_SHIFT;
4400 + info.threadstack_offset = offset;
4401 addr = vm_unmapped_area(&info);
4402
4403 /*
4404 @@ -183,14 +193,30 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
4405 {
4406 unsigned long random_factor = 0UL;
4407
4408 +#ifdef CONFIG_PAX_RANDMMAP
4409 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
4410 +#endif
4411 +
4412 if (current->flags & PF_RANDOMIZE)
4413 random_factor = arch_mmap_rnd();
4414
4415 if (mmap_is_legacy()) {
4416 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
4417 +
4418 +#ifdef CONFIG_PAX_RANDMMAP
4419 + if (mm->pax_flags & MF_PAX_RANDMMAP)
4420 + mm->mmap_base += mm->delta_mmap;
4421 +#endif
4422 +
4423 mm->get_unmapped_area = arch_get_unmapped_area;
4424 } else {
4425 mm->mmap_base = mmap_base(random_factor);
4426 +
4427 +#ifdef CONFIG_PAX_RANDMMAP
4428 + if (mm->pax_flags & MF_PAX_RANDMMAP)
4429 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
4430 +#endif
4431 +
4432 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
4433 }
4434 }
4435 diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
4436 index 870838a..070df1d 100644
4437 --- a/arch/arm/mm/mmu.c
4438 +++ b/arch/arm/mm/mmu.c
4439 @@ -41,6 +41,22 @@
4440 #include "mm.h"
4441 #include "tcm.h"
4442
4443 +#if defined(CONFIG_CPU_USE_DOMAINS) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
4444 +void modify_domain(unsigned int dom, unsigned int type)
4445 +{
4446 + struct thread_info *thread = current_thread_info();
4447 + unsigned int domain = thread->cpu_domain;
4448 + /*
4449 + * DOMAIN_MANAGER might be defined to some other value,
4450 + * use the arch-defined constant
4451 + */
4452 + domain &= ~domain_val(dom, 3);
4453 + thread->cpu_domain = domain | domain_val(dom, type);
4454 + set_domain(thread->cpu_domain);
4455 +}
4456 +EXPORT_SYMBOL(modify_domain);
4457 +#endif
4458 +
4459 /*
4460 * empty_zero_page is a special page that is used for
4461 * zero-initialized data and COW.
4462 @@ -242,7 +258,15 @@ __setup("noalign", noalign_setup);
4463 #define PROT_PTE_S2_DEVICE PROT_PTE_DEVICE
4464 #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE
4465
4466 -static struct mem_type mem_types[] = {
4467 +#ifdef CONFIG_PAX_KERNEXEC
4468 +#define L_PTE_KERNEXEC L_PTE_RDONLY
4469 +#define PMD_SECT_KERNEXEC PMD_SECT_RDONLY
4470 +#else
4471 +#define L_PTE_KERNEXEC L_PTE_DIRTY
4472 +#define PMD_SECT_KERNEXEC PMD_SECT_AP_WRITE
4473 +#endif
4474 +
4475 +static struct mem_type mem_types[] __read_only = {
4476 [MT_DEVICE] = { /* Strongly ordered / ARMv6 shared device */
4477 .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED |
4478 L_PTE_SHARED,
4479 @@ -271,19 +295,19 @@ static struct mem_type mem_types[] = {
4480 .prot_sect = PROT_SECT_DEVICE,
4481 .domain = DOMAIN_IO,
4482 },
4483 - [MT_UNCACHED] = {
4484 + [MT_UNCACHED_RW] = {
4485 .prot_pte = PROT_PTE_DEVICE,
4486 .prot_l1 = PMD_TYPE_TABLE,
4487 .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4488 .domain = DOMAIN_IO,
4489 },
4490 - [MT_CACHECLEAN] = {
4491 - .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4492 + [MT_CACHECLEAN_RO] = {
4493 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_RDONLY,
4494 .domain = DOMAIN_KERNEL,
4495 },
4496 #ifndef CONFIG_ARM_LPAE
4497 - [MT_MINICLEAN] = {
4498 - .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_MINICACHE,
4499 + [MT_MINICLEAN_RO] = {
4500 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_MINICACHE | PMD_SECT_XN | PMD_SECT_RDONLY,
4501 .domain = DOMAIN_KERNEL,
4502 },
4503 #endif
4504 @@ -291,15 +315,15 @@ static struct mem_type mem_types[] = {
4505 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4506 L_PTE_RDONLY,
4507 .prot_l1 = PMD_TYPE_TABLE,
4508 - .domain = DOMAIN_USER,
4509 + .domain = DOMAIN_VECTORS,
4510 },
4511 [MT_HIGH_VECTORS] = {
4512 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4513 L_PTE_USER | L_PTE_RDONLY,
4514 .prot_l1 = PMD_TYPE_TABLE,
4515 - .domain = DOMAIN_USER,
4516 + .domain = DOMAIN_VECTORS,
4517 },
4518 - [MT_MEMORY_RWX] = {
4519 + [__MT_MEMORY_RWX] = {
4520 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
4521 .prot_l1 = PMD_TYPE_TABLE,
4522 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4523 @@ -312,17 +336,30 @@ static struct mem_type mem_types[] = {
4524 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4525 .domain = DOMAIN_KERNEL,
4526 },
4527 - [MT_ROM] = {
4528 - .prot_sect = PMD_TYPE_SECT,
4529 + [MT_MEMORY_RX] = {
4530 + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC,
4531 + .prot_l1 = PMD_TYPE_TABLE,
4532 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4533 + .domain = DOMAIN_KERNEL,
4534 + },
4535 + [MT_ROM_RX] = {
4536 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_RDONLY,
4537 .domain = DOMAIN_KERNEL,
4538 },
4539 - [MT_MEMORY_RWX_NONCACHED] = {
4540 + [MT_MEMORY_RW_NONCACHED] = {
4541 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4542 L_PTE_MT_BUFFERABLE,
4543 .prot_l1 = PMD_TYPE_TABLE,
4544 .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
4545 .domain = DOMAIN_KERNEL,
4546 },
4547 + [MT_MEMORY_RX_NONCACHED] = {
4548 + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC |
4549 + L_PTE_MT_BUFFERABLE,
4550 + .prot_l1 = PMD_TYPE_TABLE,
4551 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4552 + .domain = DOMAIN_KERNEL,
4553 + },
4554 [MT_MEMORY_RW_DTCM] = {
4555 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
4556 L_PTE_XN,
4557 @@ -330,9 +367,10 @@ static struct mem_type mem_types[] = {
4558 .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
4559 .domain = DOMAIN_KERNEL,
4560 },
4561 - [MT_MEMORY_RWX_ITCM] = {
4562 - .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
4563 + [MT_MEMORY_RX_ITCM] = {
4564 + .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_KERNEXEC,
4565 .prot_l1 = PMD_TYPE_TABLE,
4566 + .prot_sect = PMD_TYPE_SECT | PMD_SECT_KERNEXEC,
4567 .domain = DOMAIN_KERNEL,
4568 },
4569 [MT_MEMORY_RW_SO] = {
4570 @@ -544,9 +582,14 @@ static void __init build_mem_type_table(void)
4571 * Mark cache clean areas and XIP ROM read only
4572 * from SVC mode and no access from userspace.
4573 */
4574 - mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4575 - mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4576 - mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4577 + mem_types[MT_ROM_RX].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4578 +#ifdef CONFIG_PAX_KERNEXEC
4579 + mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4580 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4581 + mem_types[MT_MEMORY_RX_ITCM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4582 +#endif
4583 + mem_types[MT_MINICLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4584 + mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
4585 #endif
4586
4587 /*
4588 @@ -563,13 +606,17 @@ static void __init build_mem_type_table(void)
4589 mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED;
4590 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S;
4591 mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED;
4592 - mem_types[MT_MEMORY_RWX].prot_sect |= PMD_SECT_S;
4593 - mem_types[MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED;
4594 + mem_types[__MT_MEMORY_RWX].prot_sect |= PMD_SECT_S;
4595 + mem_types[__MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED;
4596 mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_S;
4597 mem_types[MT_MEMORY_RW].prot_pte |= L_PTE_SHARED;
4598 + mem_types[MT_MEMORY_RX].prot_sect |= PMD_SECT_S;
4599 + mem_types[MT_MEMORY_RX].prot_pte |= L_PTE_SHARED;
4600 mem_types[MT_MEMORY_DMA_READY].prot_pte |= L_PTE_SHARED;
4601 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= PMD_SECT_S;
4602 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_pte |= L_PTE_SHARED;
4603 + mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= PMD_SECT_S;
4604 + mem_types[MT_MEMORY_RW_NONCACHED].prot_pte |= L_PTE_SHARED;
4605 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_S;
4606 + mem_types[MT_MEMORY_RX_NONCACHED].prot_pte |= L_PTE_SHARED;
4607 }
4608 }
4609
4610 @@ -580,15 +627,20 @@ static void __init build_mem_type_table(void)
4611 if (cpu_arch >= CPU_ARCH_ARMv6) {
4612 if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
4613 /* Non-cacheable Normal is XCB = 001 */
4614 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |=
4615 + mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |=
4616 + PMD_SECT_BUFFERED;
4617 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |=
4618 PMD_SECT_BUFFERED;
4619 } else {
4620 /* For both ARMv6 and non-TEX-remapping ARMv7 */
4621 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |=
4622 + mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |=
4623 + PMD_SECT_TEX(1);
4624 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |=
4625 PMD_SECT_TEX(1);
4626 }
4627 } else {
4628 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4629 + mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4630 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= PMD_SECT_BUFFERABLE;
4631 }
4632
4633 #ifdef CONFIG_ARM_LPAE
4634 @@ -609,6 +661,8 @@ static void __init build_mem_type_table(void)
4635 user_pgprot |= PTE_EXT_PXN;
4636 #endif
4637
4638 + user_pgprot |= __supported_pte_mask;
4639 +
4640 for (i = 0; i < 16; i++) {
4641 pteval_t v = pgprot_val(protection_map[i]);
4642 protection_map[i] = __pgprot(v | user_pgprot);
4643 @@ -626,21 +680,24 @@ static void __init build_mem_type_table(void)
4644
4645 mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask;
4646 mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask;
4647 - mem_types[MT_MEMORY_RWX].prot_sect |= ecc_mask | cp->pmd;
4648 - mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
4649 + mem_types[__MT_MEMORY_RWX].prot_sect |= ecc_mask | cp->pmd;
4650 + mem_types[__MT_MEMORY_RWX].prot_pte |= kern_pgprot;
4651 mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
4652 mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
4653 + mem_types[MT_MEMORY_RX].prot_sect |= ecc_mask | cp->pmd;
4654 + mem_types[MT_MEMORY_RX].prot_pte |= kern_pgprot;
4655 mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot;
4656 - mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask;
4657 - mem_types[MT_ROM].prot_sect |= cp->pmd;
4658 + mem_types[MT_MEMORY_RW_NONCACHED].prot_sect |= ecc_mask;
4659 + mem_types[MT_MEMORY_RX_NONCACHED].prot_sect |= ecc_mask;
4660 + mem_types[MT_ROM_RX].prot_sect |= cp->pmd;
4661
4662 switch (cp->pmd) {
4663 case PMD_SECT_WT:
4664 - mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_WT;
4665 + mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_WT;
4666 break;
4667 case PMD_SECT_WB:
4668 case PMD_SECT_WBWA:
4669 - mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_WB;
4670 + mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_WB;
4671 break;
4672 }
4673 pr_info("Memory policy: %sData cache %s\n",
4674 @@ -854,7 +911,7 @@ static void __init create_mapping(struct map_desc *md)
4675 return;
4676 }
4677
4678 - if ((md->type == MT_DEVICE || md->type == MT_ROM) &&
4679 + if ((md->type == MT_DEVICE || md->type == MT_ROM_RX) &&
4680 md->virtual >= PAGE_OFFSET &&
4681 (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) {
4682 pr_warn("BUG: mapping for 0x%08llx at 0x%08lx out of vmalloc space\n",
4683 @@ -1224,18 +1281,15 @@ void __init arm_mm_memblock_reserve(void)
4684 * called function. This means you can't use any function or debugging
4685 * method which may touch any device, otherwise the kernel _will_ crash.
4686 */
4687 +
4688 +static char vectors[PAGE_SIZE * 2] __read_only __aligned(PAGE_SIZE);
4689 +
4690 static void __init devicemaps_init(const struct machine_desc *mdesc)
4691 {
4692 struct map_desc map;
4693 unsigned long addr;
4694 - void *vectors;
4695
4696 - /*
4697 - * Allocate the vector page early.
4698 - */
4699 - vectors = early_alloc(PAGE_SIZE * 2);
4700 -
4701 - early_trap_init(vectors);
4702 + early_trap_init(&vectors);
4703
4704 for (addr = VMALLOC_START; addr; addr += PMD_SIZE)
4705 pmd_clear(pmd_off_k(addr));
4706 @@ -1248,7 +1302,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4707 map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
4708 map.virtual = MODULES_VADDR;
4709 map.length = ((unsigned long)_etext - map.virtual + ~SECTION_MASK) & SECTION_MASK;
4710 - map.type = MT_ROM;
4711 + map.type = MT_ROM_RX;
4712 create_mapping(&map);
4713 #endif
4714
4715 @@ -1259,14 +1313,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4716 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
4717 map.virtual = FLUSH_BASE;
4718 map.length = SZ_1M;
4719 - map.type = MT_CACHECLEAN;
4720 + map.type = MT_CACHECLEAN_RO;
4721 create_mapping(&map);
4722 #endif
4723 #ifdef FLUSH_BASE_MINICACHE
4724 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS + SZ_1M);
4725 map.virtual = FLUSH_BASE_MINICACHE;
4726 map.length = SZ_1M;
4727 - map.type = MT_MINICLEAN;
4728 + map.type = MT_MINICLEAN_RO;
4729 create_mapping(&map);
4730 #endif
4731
4732 @@ -1275,7 +1329,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
4733 * location (0xffff0000). If we aren't using high-vectors, also
4734 * create a mapping at the low-vectors virtual address.
4735 */
4736 - map.pfn = __phys_to_pfn(virt_to_phys(vectors));
4737 + map.pfn = __phys_to_pfn(virt_to_phys(&vectors));
4738 map.virtual = 0xffff0000;
4739 map.length = PAGE_SIZE;
4740 #ifdef CONFIG_KUSER_HELPERS
4741 @@ -1335,8 +1389,10 @@ static void __init kmap_init(void)
4742 static void __init map_lowmem(void)
4743 {
4744 struct memblock_region *reg;
4745 +#ifndef CONFIG_PAX_KERNEXEC
4746 phys_addr_t kernel_x_start = round_down(__pa(_stext), SECTION_SIZE);
4747 phys_addr_t kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
4748 +#endif
4749
4750 /* Map all the lowmem memory banks. */
4751 for_each_memblock(memory, reg) {
4752 @@ -1349,11 +1405,48 @@ static void __init map_lowmem(void)
4753 if (start >= end)
4754 break;
4755
4756 +#ifdef CONFIG_PAX_KERNEXEC
4757 + map.pfn = __phys_to_pfn(start);
4758 + map.virtual = __phys_to_virt(start);
4759 + map.length = end - start;
4760 +
4761 + if (map.virtual <= (unsigned long)_stext && ((unsigned long)_end < (map.virtual + map.length))) {
4762 + struct map_desc kernel;
4763 + struct map_desc initmap;
4764 +
4765 + /* when freeing initmem we will make this RW */
4766 + initmap.pfn = __phys_to_pfn(__pa(__init_begin));
4767 + initmap.virtual = (unsigned long)__init_begin;
4768 + initmap.length = _sdata - __init_begin;
4769 + initmap.type = __MT_MEMORY_RWX;
4770 + create_mapping(&initmap);
4771 +
4772 + /* when freeing initmem we will make this RX */
4773 + kernel.pfn = __phys_to_pfn(__pa(_stext));
4774 + kernel.virtual = (unsigned long)_stext;
4775 + kernel.length = __init_begin - _stext;
4776 + kernel.type = __MT_MEMORY_RWX;
4777 + create_mapping(&kernel);
4778 +
4779 + if (map.virtual < (unsigned long)_stext) {
4780 + map.length = (unsigned long)_stext - map.virtual;
4781 + map.type = __MT_MEMORY_RWX;
4782 + create_mapping(&map);
4783 + }
4784 +
4785 + map.pfn = __phys_to_pfn(__pa(_sdata));
4786 + map.virtual = (unsigned long)_sdata;
4787 + map.length = end - __pa(_sdata);
4788 + }
4789 +
4790 + map.type = MT_MEMORY_RW;
4791 + create_mapping(&map);
4792 +#else
4793 if (end < kernel_x_start) {
4794 map.pfn = __phys_to_pfn(start);
4795 map.virtual = __phys_to_virt(start);
4796 map.length = end - start;
4797 - map.type = MT_MEMORY_RWX;
4798 + map.type = __MT_MEMORY_RWX;
4799
4800 create_mapping(&map);
4801 } else if (start >= kernel_x_end) {
4802 @@ -1377,7 +1470,7 @@ static void __init map_lowmem(void)
4803 map.pfn = __phys_to_pfn(kernel_x_start);
4804 map.virtual = __phys_to_virt(kernel_x_start);
4805 map.length = kernel_x_end - kernel_x_start;
4806 - map.type = MT_MEMORY_RWX;
4807 + map.type = __MT_MEMORY_RWX;
4808
4809 create_mapping(&map);
4810
4811 @@ -1390,6 +1483,7 @@ static void __init map_lowmem(void)
4812 create_mapping(&map);
4813 }
4814 }
4815 +#endif
4816 }
4817 }
4818
4819 diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c
4820 index c011e22..92a0260 100644
4821 --- a/arch/arm/net/bpf_jit_32.c
4822 +++ b/arch/arm/net/bpf_jit_32.c
4823 @@ -20,6 +20,7 @@
4824 #include <asm/cacheflush.h>
4825 #include <asm/hwcap.h>
4826 #include <asm/opcodes.h>
4827 +#include <asm/pgtable.h>
4828
4829 #include "bpf_jit_32.h"
4830
4831 @@ -72,54 +73,38 @@ struct jit_ctx {
4832 #endif
4833 };
4834
4835 +#ifdef CONFIG_GRKERNSEC_BPF_HARDEN
4836 +int bpf_jit_enable __read_only;
4837 +#else
4838 int bpf_jit_enable __read_mostly;
4839 +#endif
4840
4841 -static inline int call_neg_helper(struct sk_buff *skb, int offset, void *ret,
4842 - unsigned int size)
4843 -{
4844 - void *ptr = bpf_internal_load_pointer_neg_helper(skb, offset, size);
4845 -
4846 - if (!ptr)
4847 - return -EFAULT;
4848 - memcpy(ret, ptr, size);
4849 - return 0;
4850 -}
4851 -
4852 -static u64 jit_get_skb_b(struct sk_buff *skb, int offset)
4853 +static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset)
4854 {
4855 u8 ret;
4856 int err;
4857
4858 - if (offset < 0)
4859 - err = call_neg_helper(skb, offset, &ret, 1);
4860 - else
4861 - err = skb_copy_bits(skb, offset, &ret, 1);
4862 + err = skb_copy_bits(skb, offset, &ret, 1);
4863
4864 return (u64)err << 32 | ret;
4865 }
4866
4867 -static u64 jit_get_skb_h(struct sk_buff *skb, int offset)
4868 +static u64 jit_get_skb_h(struct sk_buff *skb, unsigned offset)
4869 {
4870 u16 ret;
4871 int err;
4872
4873 - if (offset < 0)
4874 - err = call_neg_helper(skb, offset, &ret, 2);
4875 - else
4876 - err = skb_copy_bits(skb, offset, &ret, 2);
4877 + err = skb_copy_bits(skb, offset, &ret, 2);
4878
4879 return (u64)err << 32 | ntohs(ret);
4880 }
4881
4882 -static u64 jit_get_skb_w(struct sk_buff *skb, int offset)
4883 +static u64 jit_get_skb_w(struct sk_buff *skb, unsigned offset)
4884 {
4885 u32 ret;
4886 int err;
4887
4888 - if (offset < 0)
4889 - err = call_neg_helper(skb, offset, &ret, 4);
4890 - else
4891 - err = skb_copy_bits(skb, offset, &ret, 4);
4892 + err = skb_copy_bits(skb, offset, &ret, 4);
4893
4894 return (u64)err << 32 | ntohl(ret);
4895 }
4896 @@ -199,8 +184,10 @@ static void jit_fill_hole(void *area, unsigned int size)
4897 {
4898 u32 *ptr;
4899 /* We are guaranteed to have aligned memory. */
4900 + pax_open_kernel();
4901 for (ptr = area; size >= sizeof(u32); size -= sizeof(u32))
4902 *ptr++ = __opcode_to_mem_arm(ARM_INST_UDF);
4903 + pax_close_kernel();
4904 }
4905
4906 static void build_prologue(struct jit_ctx *ctx)
4907 @@ -556,6 +543,9 @@ static int build_body(struct jit_ctx *ctx)
4908 case BPF_LD | BPF_B | BPF_ABS:
4909 load_order = 0;
4910 load:
4911 + /* the interpreter will deal with the negative K */
4912 + if ((int)k < 0)
4913 + return -ENOTSUPP;
4914 emit_mov_i(r_off, k, ctx);
4915 load_common:
4916 ctx->seen |= SEEN_DATA | SEEN_CALL;
4917 @@ -570,18 +560,6 @@ load_common:
4918 condt = ARM_COND_HI;
4919 }
4920
4921 - /*
4922 - * test for negative offset, only if we are
4923 - * currently scheduled to take the fast
4924 - * path. this will update the flags so that
4925 - * the slowpath instruction are ignored if the
4926 - * offset is negative.
4927 - *
4928 - * for loard_order == 0 the HI condition will
4929 - * make loads at offset 0 take the slow path too.
4930 - */
4931 - _emit(condt, ARM_CMP_I(r_off, 0), ctx);
4932 -
4933 _emit(condt, ARM_ADD_R(r_scratch, r_off, r_skb_data),
4934 ctx);
4935
4936 diff --git a/arch/arm/plat-iop/setup.c b/arch/arm/plat-iop/setup.c
4937 index 5b217f4..c23f40e 100644
4938 --- a/arch/arm/plat-iop/setup.c
4939 +++ b/arch/arm/plat-iop/setup.c
4940 @@ -24,7 +24,7 @@ static struct map_desc iop3xx_std_desc[] __initdata = {
4941 .virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
4942 .pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
4943 .length = IOP3XX_PERIPHERAL_SIZE,
4944 - .type = MT_UNCACHED,
4945 + .type = MT_UNCACHED_RW,
4946 },
4947 };
4948
4949 diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
4950 index a5bc92d..0bb4730 100644
4951 --- a/arch/arm/plat-omap/sram.c
4952 +++ b/arch/arm/plat-omap/sram.c
4953 @@ -93,6 +93,8 @@ void __init omap_map_sram(unsigned long start, unsigned long size,
4954 * Looks like we need to preserve some bootloader code at the
4955 * beginning of SRAM for jumping to flash for reboot to work...
4956 */
4957 + pax_open_kernel();
4958 memset_io(omap_sram_base + omap_sram_skip, 0,
4959 omap_sram_size - omap_sram_skip);
4960 + pax_close_kernel();
4961 }
4962 diff --git a/arch/arm64/include/asm/atomic.h b/arch/arm64/include/asm/atomic.h
4963 index 7047051..44e8675 100644
4964 --- a/arch/arm64/include/asm/atomic.h
4965 +++ b/arch/arm64/include/asm/atomic.h
4966 @@ -252,5 +252,15 @@ static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
4967 #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0)
4968 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL)
4969
4970 +#define atomic64_read_unchecked(v) atomic64_read(v)
4971 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
4972 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
4973 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
4974 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
4975 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
4976 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
4977 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
4978 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
4979 +
4980 #endif
4981 #endif
4982 diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
4983 index 0fa47c4..b167938 100644
4984 --- a/arch/arm64/include/asm/barrier.h
4985 +++ b/arch/arm64/include/asm/barrier.h
4986 @@ -44,7 +44,7 @@
4987 do { \
4988 compiletime_assert_atomic_type(*p); \
4989 barrier(); \
4990 - ACCESS_ONCE(*p) = (v); \
4991 + ACCESS_ONCE_RW(*p) = (v); \
4992 } while (0)
4993
4994 #define smp_load_acquire(p) \
4995 diff --git a/arch/arm64/include/asm/percpu.h b/arch/arm64/include/asm/percpu.h
4996 index 4fde8c1..441f84f 100644
4997 --- a/arch/arm64/include/asm/percpu.h
4998 +++ b/arch/arm64/include/asm/percpu.h
4999 @@ -135,16 +135,16 @@ static inline void __percpu_write(void *ptr, unsigned long val, int size)
5000 {
5001 switch (size) {
5002 case 1:
5003 - ACCESS_ONCE(*(u8 *)ptr) = (u8)val;
5004 + ACCESS_ONCE_RW(*(u8 *)ptr) = (u8)val;
5005 break;
5006 case 2:
5007 - ACCESS_ONCE(*(u16 *)ptr) = (u16)val;
5008 + ACCESS_ONCE_RW(*(u16 *)ptr) = (u16)val;
5009 break;
5010 case 4:
5011 - ACCESS_ONCE(*(u32 *)ptr) = (u32)val;
5012 + ACCESS_ONCE_RW(*(u32 *)ptr) = (u32)val;
5013 break;
5014 case 8:
5015 - ACCESS_ONCE(*(u64 *)ptr) = (u64)val;
5016 + ACCESS_ONCE_RW(*(u64 *)ptr) = (u64)val;
5017 break;
5018 default:
5019 BUILD_BUG();
5020 diff --git a/arch/arm64/include/asm/pgalloc.h b/arch/arm64/include/asm/pgalloc.h
5021 index 7642056..bffc904 100644
5022 --- a/arch/arm64/include/asm/pgalloc.h
5023 +++ b/arch/arm64/include/asm/pgalloc.h
5024 @@ -46,6 +46,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
5025 set_pud(pud, __pud(__pa(pmd) | PMD_TYPE_TABLE));
5026 }
5027
5028 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
5029 +{
5030 + pud_populate(mm, pud, pmd);
5031 +}
5032 +
5033 #endif /* CONFIG_PGTABLE_LEVELS > 2 */
5034
5035 #if CONFIG_PGTABLE_LEVELS > 3
5036 diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
5037 index 07e1ba44..ec8cbbb 100644
5038 --- a/arch/arm64/include/asm/uaccess.h
5039 +++ b/arch/arm64/include/asm/uaccess.h
5040 @@ -99,6 +99,7 @@ static inline void set_fs(mm_segment_t fs)
5041 flag; \
5042 })
5043
5044 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
5045 #define access_ok(type, addr, size) __range_ok(addr, size)
5046 #define user_addr_max get_fs
5047
5048 diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
5049 index d16a1ce..a5acc60 100644
5050 --- a/arch/arm64/mm/dma-mapping.c
5051 +++ b/arch/arm64/mm/dma-mapping.c
5052 @@ -134,7 +134,7 @@ static void __dma_free_coherent(struct device *dev, size_t size,
5053 phys_to_page(paddr),
5054 size >> PAGE_SHIFT);
5055 if (!freed)
5056 - swiotlb_free_coherent(dev, size, vaddr, dma_handle);
5057 + swiotlb_free_coherent(dev, size, vaddr, dma_handle, attrs);
5058 }
5059
5060 static void *__dma_alloc(struct device *dev, size_t size,
5061 diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h
5062 index c3a58a1..78fbf54 100644
5063 --- a/arch/avr32/include/asm/cache.h
5064 +++ b/arch/avr32/include/asm/cache.h
5065 @@ -1,8 +1,10 @@
5066 #ifndef __ASM_AVR32_CACHE_H
5067 #define __ASM_AVR32_CACHE_H
5068
5069 +#include <linux/const.h>
5070 +
5071 #define L1_CACHE_SHIFT 5
5072 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5073 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5074
5075 /*
5076 * Memory returned by kmalloc() may be used for DMA, so we must make
5077 diff --git a/arch/avr32/include/asm/elf.h b/arch/avr32/include/asm/elf.h
5078 index 0388ece..87c8df1 100644
5079 --- a/arch/avr32/include/asm/elf.h
5080 +++ b/arch/avr32/include/asm/elf.h
5081 @@ -84,8 +84,14 @@ typedef struct user_fpu_struct elf_fpregset_t;
5082 the loader. We need to make sure that it is out of the way of the program
5083 that it will "exec", and that there is sufficient room for the brk. */
5084
5085 -#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
5086 +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
5087
5088 +#ifdef CONFIG_PAX_ASLR
5089 +#define PAX_ELF_ET_DYN_BASE 0x00001000UL
5090 +
5091 +#define PAX_DELTA_MMAP_LEN 15
5092 +#define PAX_DELTA_STACK_LEN 15
5093 +#endif
5094
5095 /* This yields a mask that user programs can use to figure out what
5096 instruction set this CPU supports. This could be done in user space,
5097 diff --git a/arch/avr32/include/asm/kmap_types.h b/arch/avr32/include/asm/kmap_types.h
5098 index 479330b..53717a8 100644
5099 --- a/arch/avr32/include/asm/kmap_types.h
5100 +++ b/arch/avr32/include/asm/kmap_types.h
5101 @@ -2,9 +2,9 @@
5102 #define __ASM_AVR32_KMAP_TYPES_H
5103
5104 #ifdef CONFIG_DEBUG_HIGHMEM
5105 -# define KM_TYPE_NR 29
5106 +# define KM_TYPE_NR 30
5107 #else
5108 -# define KM_TYPE_NR 14
5109 +# define KM_TYPE_NR 15
5110 #endif
5111
5112 #endif /* __ASM_AVR32_KMAP_TYPES_H */
5113 diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
5114 index c035339..e1fa594 100644
5115 --- a/arch/avr32/mm/fault.c
5116 +++ b/arch/avr32/mm/fault.c
5117 @@ -41,6 +41,23 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap)
5118
5119 int exception_trace = 1;
5120
5121 +#ifdef CONFIG_PAX_PAGEEXEC
5122 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
5123 +{
5124 + unsigned long i;
5125 +
5126 + printk(KERN_ERR "PAX: bytes at PC: ");
5127 + for (i = 0; i < 20; i++) {
5128 + unsigned char c;
5129 + if (get_user(c, (unsigned char *)pc+i))
5130 + printk(KERN_CONT "???????? ");
5131 + else
5132 + printk(KERN_CONT "%02x ", c);
5133 + }
5134 + printk("\n");
5135 +}
5136 +#endif
5137 +
5138 /*
5139 * This routine handles page faults. It determines the address and the
5140 * problem, and then passes it off to one of the appropriate routines.
5141 @@ -178,6 +195,16 @@ bad_area:
5142 up_read(&mm->mmap_sem);
5143
5144 if (user_mode(regs)) {
5145 +
5146 +#ifdef CONFIG_PAX_PAGEEXEC
5147 + if (mm->pax_flags & MF_PAX_PAGEEXEC) {
5148 + if (ecr == ECR_PROTECTION_X || ecr == ECR_TLB_MISS_X) {
5149 + pax_report_fault(regs, (void *)regs->pc, (void *)regs->sp);
5150 + do_group_exit(SIGKILL);
5151 + }
5152 + }
5153 +#endif
5154 +
5155 if (exception_trace && printk_ratelimit())
5156 printk("%s%s[%d]: segfault at %08lx pc %08lx "
5157 "sp %08lx ecr %lu\n",
5158 diff --git a/arch/blackfin/include/asm/cache.h b/arch/blackfin/include/asm/cache.h
5159 index 568885a..f8008df 100644
5160 --- a/arch/blackfin/include/asm/cache.h
5161 +++ b/arch/blackfin/include/asm/cache.h
5162 @@ -7,6 +7,7 @@
5163 #ifndef __ARCH_BLACKFIN_CACHE_H
5164 #define __ARCH_BLACKFIN_CACHE_H
5165
5166 +#include <linux/const.h>
5167 #include <linux/linkage.h> /* for asmlinkage */
5168
5169 /*
5170 @@ -14,7 +15,7 @@
5171 * Blackfin loads 32 bytes for cache
5172 */
5173 #define L1_CACHE_SHIFT 5
5174 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5175 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5176 #define SMP_CACHE_BYTES L1_CACHE_BYTES
5177
5178 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES
5179 diff --git a/arch/cris/include/arch-v10/arch/cache.h b/arch/cris/include/arch-v10/arch/cache.h
5180 index aea2718..3639a60 100644
5181 --- a/arch/cris/include/arch-v10/arch/cache.h
5182 +++ b/arch/cris/include/arch-v10/arch/cache.h
5183 @@ -1,8 +1,9 @@
5184 #ifndef _ASM_ARCH_CACHE_H
5185 #define _ASM_ARCH_CACHE_H
5186
5187 +#include <linux/const.h>
5188 /* Etrax 100LX have 32-byte cache-lines. */
5189 -#define L1_CACHE_BYTES 32
5190 #define L1_CACHE_SHIFT 5
5191 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5192
5193 #endif /* _ASM_ARCH_CACHE_H */
5194 diff --git a/arch/cris/include/arch-v32/arch/cache.h b/arch/cris/include/arch-v32/arch/cache.h
5195 index 7caf25d..ee65ac5 100644
5196 --- a/arch/cris/include/arch-v32/arch/cache.h
5197 +++ b/arch/cris/include/arch-v32/arch/cache.h
5198 @@ -1,11 +1,12 @@
5199 #ifndef _ASM_CRIS_ARCH_CACHE_H
5200 #define _ASM_CRIS_ARCH_CACHE_H
5201
5202 +#include <linux/const.h>
5203 #include <arch/hwregs/dma.h>
5204
5205 /* A cache-line is 32 bytes. */
5206 -#define L1_CACHE_BYTES 32
5207 #define L1_CACHE_SHIFT 5
5208 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5209
5210 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
5211
5212 diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h
5213 index 102190a..5334cea 100644
5214 --- a/arch/frv/include/asm/atomic.h
5215 +++ b/arch/frv/include/asm/atomic.h
5216 @@ -181,6 +181,16 @@ static inline void atomic64_dec(atomic64_t *v)
5217 #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter))
5218 #define atomic64_xchg(v, new) (__xchg_64(new, &(v)->counter))
5219
5220 +#define atomic64_read_unchecked(v) atomic64_read(v)
5221 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
5222 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
5223 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
5224 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
5225 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
5226 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
5227 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
5228 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
5229 +
5230 static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
5231 {
5232 int c, old;
5233 diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h
5234 index 2797163..c2a401df9 100644
5235 --- a/arch/frv/include/asm/cache.h
5236 +++ b/arch/frv/include/asm/cache.h
5237 @@ -12,10 +12,11 @@
5238 #ifndef __ASM_CACHE_H
5239 #define __ASM_CACHE_H
5240
5241 +#include <linux/const.h>
5242
5243 /* bytes per L1 cache line */
5244 #define L1_CACHE_SHIFT (CONFIG_FRV_L1_CACHE_SHIFT)
5245 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5246 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5247
5248 #define __cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES)))
5249 #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES)))
5250 diff --git a/arch/frv/include/asm/kmap_types.h b/arch/frv/include/asm/kmap_types.h
5251 index 43901f2..0d8b865 100644
5252 --- a/arch/frv/include/asm/kmap_types.h
5253 +++ b/arch/frv/include/asm/kmap_types.h
5254 @@ -2,6 +2,6 @@
5255 #ifndef _ASM_KMAP_TYPES_H
5256 #define _ASM_KMAP_TYPES_H
5257
5258 -#define KM_TYPE_NR 17
5259 +#define KM_TYPE_NR 18
5260
5261 #endif
5262 diff --git a/arch/frv/mm/elf-fdpic.c b/arch/frv/mm/elf-fdpic.c
5263 index 836f147..4cf23f5 100644
5264 --- a/arch/frv/mm/elf-fdpic.c
5265 +++ b/arch/frv/mm/elf-fdpic.c
5266 @@ -61,6 +61,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
5267 {
5268 struct vm_area_struct *vma;
5269 struct vm_unmapped_area_info info;
5270 + unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
5271
5272 if (len > TASK_SIZE)
5273 return -ENOMEM;
5274 @@ -73,8 +74,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
5275 if (addr) {
5276 addr = PAGE_ALIGN(addr);
5277 vma = find_vma(current->mm, addr);
5278 - if (TASK_SIZE - len >= addr &&
5279 - (!vma || addr + len <= vma->vm_start))
5280 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
5281 goto success;
5282 }
5283
5284 @@ -85,6 +85,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
5285 info.high_limit = (current->mm->start_stack - 0x00200000);
5286 info.align_mask = 0;
5287 info.align_offset = 0;
5288 + info.threadstack_offset = offset;
5289 addr = vm_unmapped_area(&info);
5290 if (!(addr & ~PAGE_MASK))
5291 goto success;
5292 diff --git a/arch/hexagon/include/asm/cache.h b/arch/hexagon/include/asm/cache.h
5293 index 69952c18..4fa2908 100644
5294 --- a/arch/hexagon/include/asm/cache.h
5295 +++ b/arch/hexagon/include/asm/cache.h
5296 @@ -21,9 +21,11 @@
5297 #ifndef __ASM_CACHE_H
5298 #define __ASM_CACHE_H
5299
5300 +#include <linux/const.h>
5301 +
5302 /* Bytes per L1 cache line */
5303 -#define L1_CACHE_SHIFT (5)
5304 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5305 +#define L1_CACHE_SHIFT 5
5306 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5307
5308 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES
5309
5310 diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
5311 index 42a91a7..29d446e 100644
5312 --- a/arch/ia64/Kconfig
5313 +++ b/arch/ia64/Kconfig
5314 @@ -518,6 +518,7 @@ source "drivers/sn/Kconfig"
5315 config KEXEC
5316 bool "kexec system call"
5317 depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
5318 + depends on !GRKERNSEC_KMEM
5319 help
5320 kexec is a system call that implements the ability to shutdown your
5321 current kernel, and to start another kernel. It is like a reboot
5322 diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
5323 index 970d0bd..e750b9b 100644
5324 --- a/arch/ia64/Makefile
5325 +++ b/arch/ia64/Makefile
5326 @@ -98,5 +98,6 @@ endef
5327 archprepare: make_nr_irqs_h FORCE
5328 PHONY += make_nr_irqs_h FORCE
5329
5330 +make_nr_irqs_h: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
5331 make_nr_irqs_h: FORCE
5332 $(Q)$(MAKE) $(build)=arch/ia64/kernel include/generated/nr-irqs.h
5333 diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
5334 index 0bf0350..2ad1957 100644
5335 --- a/arch/ia64/include/asm/atomic.h
5336 +++ b/arch/ia64/include/asm/atomic.h
5337 @@ -193,4 +193,14 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
5338 #define atomic64_inc(v) atomic64_add(1, (v))
5339 #define atomic64_dec(v) atomic64_sub(1, (v))
5340
5341 +#define atomic64_read_unchecked(v) atomic64_read(v)
5342 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
5343 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
5344 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
5345 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
5346 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
5347 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
5348 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
5349 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
5350 +
5351 #endif /* _ASM_IA64_ATOMIC_H */
5352 diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h
5353 index 843ba43..fa118fb 100644
5354 --- a/arch/ia64/include/asm/barrier.h
5355 +++ b/arch/ia64/include/asm/barrier.h
5356 @@ -66,7 +66,7 @@
5357 do { \
5358 compiletime_assert_atomic_type(*p); \
5359 barrier(); \
5360 - ACCESS_ONCE(*p) = (v); \
5361 + ACCESS_ONCE_RW(*p) = (v); \
5362 } while (0)
5363
5364 #define smp_load_acquire(p) \
5365 diff --git a/arch/ia64/include/asm/cache.h b/arch/ia64/include/asm/cache.h
5366 index 988254a..e1ee885 100644
5367 --- a/arch/ia64/include/asm/cache.h
5368 +++ b/arch/ia64/include/asm/cache.h
5369 @@ -1,6 +1,7 @@
5370 #ifndef _ASM_IA64_CACHE_H
5371 #define _ASM_IA64_CACHE_H
5372
5373 +#include <linux/const.h>
5374
5375 /*
5376 * Copyright (C) 1998-2000 Hewlett-Packard Co
5377 @@ -9,7 +10,7 @@
5378
5379 /* Bytes per L1 (data) cache line. */
5380 #define L1_CACHE_SHIFT CONFIG_IA64_L1_CACHE_SHIFT
5381 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5382 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5383
5384 #ifdef CONFIG_SMP
5385 # define SMP_CACHE_SHIFT L1_CACHE_SHIFT
5386 diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
5387 index 5a83c5c..4d7f553 100644
5388 --- a/arch/ia64/include/asm/elf.h
5389 +++ b/arch/ia64/include/asm/elf.h
5390 @@ -42,6 +42,13 @@
5391 */
5392 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
5393
5394 +#ifdef CONFIG_PAX_ASLR
5395 +#define PAX_ELF_ET_DYN_BASE (current->personality == PER_LINUX32 ? 0x08048000UL : 0x4000000000000000UL)
5396 +
5397 +#define PAX_DELTA_MMAP_LEN (current->personality == PER_LINUX32 ? 16 : 3*PAGE_SHIFT - 13)
5398 +#define PAX_DELTA_STACK_LEN (current->personality == PER_LINUX32 ? 16 : 3*PAGE_SHIFT - 13)
5399 +#endif
5400 +
5401 #define PT_IA_64_UNWIND 0x70000001
5402
5403 /* IA-64 relocations: */
5404 diff --git a/arch/ia64/include/asm/pgalloc.h b/arch/ia64/include/asm/pgalloc.h
5405 index f5e70e9..624fad5 100644
5406 --- a/arch/ia64/include/asm/pgalloc.h
5407 +++ b/arch/ia64/include/asm/pgalloc.h
5408 @@ -39,6 +39,12 @@ pgd_populate(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud)
5409 pgd_val(*pgd_entry) = __pa(pud);
5410 }
5411
5412 +static inline void
5413 +pgd_populate_kernel(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud)
5414 +{
5415 + pgd_populate(mm, pgd_entry, pud);
5416 +}
5417 +
5418 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
5419 {
5420 return quicklist_alloc(0, GFP_KERNEL, NULL);
5421 @@ -57,6 +63,12 @@ pud_populate(struct mm_struct *mm, pud_t * pud_entry, pmd_t * pmd)
5422 pud_val(*pud_entry) = __pa(pmd);
5423 }
5424
5425 +static inline void
5426 +pud_populate_kernel(struct mm_struct *mm, pud_t * pud_entry, pmd_t * pmd)
5427 +{
5428 + pud_populate(mm, pud_entry, pmd);
5429 +}
5430 +
5431 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
5432 {
5433 return quicklist_alloc(0, GFP_KERNEL, NULL);
5434 diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h
5435 index 9f3ed9e..c99b418 100644
5436 --- a/arch/ia64/include/asm/pgtable.h
5437 +++ b/arch/ia64/include/asm/pgtable.h
5438 @@ -12,7 +12,7 @@
5439 * David Mosberger-Tang <davidm@hpl.hp.com>
5440 */
5441
5442 -
5443 +#include <linux/const.h>
5444 #include <asm/mman.h>
5445 #include <asm/page.h>
5446 #include <asm/processor.h>
5447 @@ -139,6 +139,17 @@
5448 #define PAGE_READONLY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
5449 #define PAGE_COPY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
5450 #define PAGE_COPY_EXEC __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)
5451 +
5452 +#ifdef CONFIG_PAX_PAGEEXEC
5453 +# define PAGE_SHARED_NOEXEC __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RW)
5454 +# define PAGE_READONLY_NOEXEC __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
5455 +# define PAGE_COPY_NOEXEC __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
5456 +#else
5457 +# define PAGE_SHARED_NOEXEC PAGE_SHARED
5458 +# define PAGE_READONLY_NOEXEC PAGE_READONLY
5459 +# define PAGE_COPY_NOEXEC PAGE_COPY
5460 +#endif
5461 +
5462 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
5463 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
5464 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
5465 diff --git a/arch/ia64/include/asm/spinlock.h b/arch/ia64/include/asm/spinlock.h
5466 index 45698cd..e8e2dbc 100644
5467 --- a/arch/ia64/include/asm/spinlock.h
5468 +++ b/arch/ia64/include/asm/spinlock.h
5469 @@ -71,7 +71,7 @@ static __always_inline void __ticket_spin_unlock(arch_spinlock_t *lock)
5470 unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
5471
5472 asm volatile ("ld2.bias %0=[%1]" : "=r"(tmp) : "r"(p));
5473 - ACCESS_ONCE(*p) = (tmp + 2) & ~1;
5474 + ACCESS_ONCE_RW(*p) = (tmp + 2) & ~1;
5475 }
5476
5477 static __always_inline void __ticket_spin_unlock_wait(arch_spinlock_t *lock)
5478 diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h
5479 index 4f3fb6cc..254055e 100644
5480 --- a/arch/ia64/include/asm/uaccess.h
5481 +++ b/arch/ia64/include/asm/uaccess.h
5482 @@ -70,6 +70,7 @@
5483 && ((segment).seg == KERNEL_DS.seg \
5484 || likely(REGION_OFFSET((unsigned long) (addr)) < RGN_MAP_LIMIT))); \
5485 })
5486 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
5487 #define access_ok(type, addr, size) __access_ok((addr), (size), get_fs())
5488
5489 /*
5490 @@ -241,12 +242,24 @@ extern unsigned long __must_check __copy_user (void __user *to, const void __use
5491 static inline unsigned long
5492 __copy_to_user (void __user *to, const void *from, unsigned long count)
5493 {
5494 + if (count > INT_MAX)
5495 + return count;
5496 +
5497 + if (!__builtin_constant_p(count))
5498 + check_object_size(from, count, true);
5499 +
5500 return __copy_user(to, (__force void __user *) from, count);
5501 }
5502
5503 static inline unsigned long
5504 __copy_from_user (void *to, const void __user *from, unsigned long count)
5505 {
5506 + if (count > INT_MAX)
5507 + return count;
5508 +
5509 + if (!__builtin_constant_p(count))
5510 + check_object_size(to, count, false);
5511 +
5512 return __copy_user((__force void __user *) to, from, count);
5513 }
5514
5515 @@ -256,10 +269,13 @@ __copy_from_user (void *to, const void __user *from, unsigned long count)
5516 ({ \
5517 void __user *__cu_to = (to); \
5518 const void *__cu_from = (from); \
5519 - long __cu_len = (n); \
5520 + unsigned long __cu_len = (n); \
5521 \
5522 - if (__access_ok(__cu_to, __cu_len, get_fs())) \
5523 + if (__cu_len <= INT_MAX && __access_ok(__cu_to, __cu_len, get_fs())) { \
5524 + if (!__builtin_constant_p(n)) \
5525 + check_object_size(__cu_from, __cu_len, true); \
5526 __cu_len = __copy_user(__cu_to, (__force void __user *) __cu_from, __cu_len); \
5527 + } \
5528 __cu_len; \
5529 })
5530
5531 @@ -267,11 +283,14 @@ __copy_from_user (void *to, const void __user *from, unsigned long count)
5532 ({ \
5533 void *__cu_to = (to); \
5534 const void __user *__cu_from = (from); \
5535 - long __cu_len = (n); \
5536 + unsigned long __cu_len = (n); \
5537 \
5538 __chk_user_ptr(__cu_from); \
5539 - if (__access_ok(__cu_from, __cu_len, get_fs())) \
5540 + if (__cu_len <= INT_MAX && __access_ok(__cu_from, __cu_len, get_fs())) { \
5541 + if (!__builtin_constant_p(n)) \
5542 + check_object_size(__cu_to, __cu_len, false); \
5543 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
5544 + } \
5545 __cu_len; \
5546 })
5547
5548 diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
5549 index b15933c..098b1c8 100644
5550 --- a/arch/ia64/kernel/module.c
5551 +++ b/arch/ia64/kernel/module.c
5552 @@ -484,15 +484,39 @@ module_frob_arch_sections (Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, char *secstrings,
5553 }
5554
5555 static inline int
5556 +in_init_rx (const struct module *mod, uint64_t addr)
5557 +{
5558 + return addr - (uint64_t) mod->module_init_rx < mod->init_size_rx;
5559 +}
5560 +
5561 +static inline int
5562 +in_init_rw (const struct module *mod, uint64_t addr)
5563 +{
5564 + return addr - (uint64_t) mod->module_init_rw < mod->init_size_rw;
5565 +}
5566 +
5567 +static inline int
5568 in_init (const struct module *mod, uint64_t addr)
5569 {
5570 - return addr - (uint64_t) mod->module_init < mod->init_size;
5571 + return in_init_rx(mod, addr) || in_init_rw(mod, addr);
5572 +}
5573 +
5574 +static inline int
5575 +in_core_rx (const struct module *mod, uint64_t addr)
5576 +{
5577 + return addr - (uint64_t) mod->module_core_rx < mod->core_size_rx;
5578 +}
5579 +
5580 +static inline int
5581 +in_core_rw (const struct module *mod, uint64_t addr)
5582 +{
5583 + return addr - (uint64_t) mod->module_core_rw < mod->core_size_rw;
5584 }
5585
5586 static inline int
5587 in_core (const struct module *mod, uint64_t addr)
5588 {
5589 - return addr - (uint64_t) mod->module_core < mod->core_size;
5590 + return in_core_rx(mod, addr) || in_core_rw(mod, addr);
5591 }
5592
5593 static inline int
5594 @@ -675,7 +699,14 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
5595 break;
5596
5597 case RV_BDREL:
5598 - val -= (uint64_t) (in_init(mod, val) ? mod->module_init : mod->module_core);
5599 + if (in_init_rx(mod, val))
5600 + val -= (uint64_t) mod->module_init_rx;
5601 + else if (in_init_rw(mod, val))
5602 + val -= (uint64_t) mod->module_init_rw;
5603 + else if (in_core_rx(mod, val))
5604 + val -= (uint64_t) mod->module_core_rx;
5605 + else if (in_core_rw(mod, val))
5606 + val -= (uint64_t) mod->module_core_rw;
5607 break;
5608
5609 case RV_LTV:
5610 @@ -810,15 +841,15 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
5611 * addresses have been selected...
5612 */
5613 uint64_t gp;
5614 - if (mod->core_size > MAX_LTOFF)
5615 + if (mod->core_size_rx + mod->core_size_rw > MAX_LTOFF)
5616 /*
5617 * This takes advantage of fact that SHF_ARCH_SMALL gets allocated
5618 * at the end of the module.
5619 */
5620 - gp = mod->core_size - MAX_LTOFF / 2;
5621 + gp = mod->core_size_rx + mod->core_size_rw - MAX_LTOFF / 2;
5622 else
5623 - gp = mod->core_size / 2;
5624 - gp = (uint64_t) mod->module_core + ((gp + 7) & -8);
5625 + gp = (mod->core_size_rx + mod->core_size_rw) / 2;
5626 + gp = (uint64_t) mod->module_core_rx + ((gp + 7) & -8);
5627 mod->arch.gp = gp;
5628 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
5629 }
5630 diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c
5631 index c39c3cd..3c77738 100644
5632 --- a/arch/ia64/kernel/palinfo.c
5633 +++ b/arch/ia64/kernel/palinfo.c
5634 @@ -980,7 +980,7 @@ static int palinfo_cpu_callback(struct notifier_block *nfb,
5635 return NOTIFY_OK;
5636 }
5637
5638 -static struct notifier_block __refdata palinfo_cpu_notifier =
5639 +static struct notifier_block palinfo_cpu_notifier =
5640 {
5641 .notifier_call = palinfo_cpu_callback,
5642 .priority = 0,
5643 diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c
5644 index 41e33f8..65180b2a 100644
5645 --- a/arch/ia64/kernel/sys_ia64.c
5646 +++ b/arch/ia64/kernel/sys_ia64.c
5647 @@ -28,6 +28,7 @@ arch_get_unmapped_area (struct file *filp, unsigned long addr, unsigned long len
5648 unsigned long align_mask = 0;
5649 struct mm_struct *mm = current->mm;
5650 struct vm_unmapped_area_info info;
5651 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
5652
5653 if (len > RGN_MAP_LIMIT)
5654 return -ENOMEM;
5655 @@ -43,6 +44,13 @@ arch_get_unmapped_area (struct file *filp, unsigned long addr, unsigned long len
5656 if (REGION_NUMBER(addr) == RGN_HPAGE)
5657 addr = 0;
5658 #endif
5659 +
5660 +#ifdef CONFIG_PAX_RANDMMAP
5661 + if (mm->pax_flags & MF_PAX_RANDMMAP)
5662 + addr = mm->free_area_cache;
5663 + else
5664 +#endif
5665 +
5666 if (!addr)
5667 addr = TASK_UNMAPPED_BASE;
5668
5669 @@ -61,6 +69,7 @@ arch_get_unmapped_area (struct file *filp, unsigned long addr, unsigned long len
5670 info.high_limit = TASK_SIZE;
5671 info.align_mask = align_mask;
5672 info.align_offset = 0;
5673 + info.threadstack_offset = offset;
5674 return vm_unmapped_area(&info);
5675 }
5676
5677 diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
5678 index dc506b0..39baade 100644
5679 --- a/arch/ia64/kernel/vmlinux.lds.S
5680 +++ b/arch/ia64/kernel/vmlinux.lds.S
5681 @@ -171,7 +171,7 @@ SECTIONS {
5682 /* Per-cpu data: */
5683 . = ALIGN(PERCPU_PAGE_SIZE);
5684 PERCPU_VADDR(SMP_CACHE_BYTES, PERCPU_ADDR, :percpu)
5685 - __phys_per_cpu_start = __per_cpu_load;
5686 + __phys_per_cpu_start = per_cpu_load;
5687 /*
5688 * ensure percpu data fits
5689 * into percpu page size
5690 diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
5691 index 70b40d1..01a9a28 100644
5692 --- a/arch/ia64/mm/fault.c
5693 +++ b/arch/ia64/mm/fault.c
5694 @@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned long address)
5695 return pte_present(pte);
5696 }
5697
5698 +#ifdef CONFIG_PAX_PAGEEXEC
5699 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
5700 +{
5701 + unsigned long i;
5702 +
5703 + printk(KERN_ERR "PAX: bytes at PC: ");
5704 + for (i = 0; i < 8; i++) {
5705 + unsigned int c;
5706 + if (get_user(c, (unsigned int *)pc+i))
5707 + printk(KERN_CONT "???????? ");
5708 + else
5709 + printk(KERN_CONT "%08x ", c);
5710 + }
5711 + printk("\n");
5712 +}
5713 +#endif
5714 +
5715 # define VM_READ_BIT 0
5716 # define VM_WRITE_BIT 1
5717 # define VM_EXEC_BIT 2
5718 @@ -151,8 +168,21 @@ retry:
5719 if (((isr >> IA64_ISR_R_BIT) & 1UL) && (!(vma->vm_flags & (VM_READ | VM_WRITE))))
5720 goto bad_area;
5721
5722 - if ((vma->vm_flags & mask) != mask)
5723 + if ((vma->vm_flags & mask) != mask) {
5724 +
5725 +#ifdef CONFIG_PAX_PAGEEXEC
5726 + if (!(vma->vm_flags & VM_EXEC) && (mask & VM_EXEC)) {
5727 + if (!(mm->pax_flags & MF_PAX_PAGEEXEC) || address != regs->cr_iip)
5728 + goto bad_area;
5729 +
5730 + up_read(&mm->mmap_sem);
5731 + pax_report_fault(regs, (void *)regs->cr_iip, (void *)regs->r12);
5732 + do_group_exit(SIGKILL);
5733 + }
5734 +#endif
5735 +
5736 goto bad_area;
5737 + }
5738
5739 /*
5740 * If for any reason at all we couldn't handle the fault, make
5741 diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c
5742 index f50d4b3..c7975ee 100644
5743 --- a/arch/ia64/mm/hugetlbpage.c
5744 +++ b/arch/ia64/mm/hugetlbpage.c
5745 @@ -138,6 +138,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, u
5746 unsigned long pgoff, unsigned long flags)
5747 {
5748 struct vm_unmapped_area_info info;
5749 + unsigned long offset = gr_rand_threadstack_offset(current->mm, file, flags);
5750
5751 if (len > RGN_MAP_LIMIT)
5752 return -ENOMEM;
5753 @@ -161,6 +162,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, u
5754 info.high_limit = HPAGE_REGION_BASE + RGN_MAP_LIMIT;
5755 info.align_mask = PAGE_MASK & (HPAGE_SIZE - 1);
5756 info.align_offset = 0;
5757 + info.threadstack_offset = offset;
5758 return vm_unmapped_area(&info);
5759 }
5760
5761 diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
5762 index 97e48b0..fc59c36 100644
5763 --- a/arch/ia64/mm/init.c
5764 +++ b/arch/ia64/mm/init.c
5765 @@ -119,6 +119,19 @@ ia64_init_addr_space (void)
5766 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
5767 vma->vm_end = vma->vm_start + PAGE_SIZE;
5768 vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
5769 +
5770 +#ifdef CONFIG_PAX_PAGEEXEC
5771 + if (current->mm->pax_flags & MF_PAX_PAGEEXEC) {
5772 + vma->vm_flags &= ~VM_EXEC;
5773 +
5774 +#ifdef CONFIG_PAX_MPROTECT
5775 + if (current->mm->pax_flags & MF_PAX_MPROTECT)
5776 + vma->vm_flags &= ~VM_MAYEXEC;
5777 +#endif
5778 +
5779 + }
5780 +#endif
5781 +
5782 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
5783 down_write(&current->mm->mmap_sem);
5784 if (insert_vm_struct(current->mm, vma)) {
5785 @@ -279,7 +292,7 @@ static int __init gate_vma_init(void)
5786 gate_vma.vm_start = FIXADDR_USER_START;
5787 gate_vma.vm_end = FIXADDR_USER_END;
5788 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
5789 - gate_vma.vm_page_prot = __P101;
5790 + gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
5791
5792 return 0;
5793 }
5794 diff --git a/arch/m32r/include/asm/cache.h b/arch/m32r/include/asm/cache.h
5795 index 40b3ee98..8c2c112 100644
5796 --- a/arch/m32r/include/asm/cache.h
5797 +++ b/arch/m32r/include/asm/cache.h
5798 @@ -1,8 +1,10 @@
5799 #ifndef _ASM_M32R_CACHE_H
5800 #define _ASM_M32R_CACHE_H
5801
5802 +#include <linux/const.h>
5803 +
5804 /* L1 cache line size */
5805 #define L1_CACHE_SHIFT 4
5806 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5807 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5808
5809 #endif /* _ASM_M32R_CACHE_H */
5810 diff --git a/arch/m32r/lib/usercopy.c b/arch/m32r/lib/usercopy.c
5811 index 82abd15..d95ae5d 100644
5812 --- a/arch/m32r/lib/usercopy.c
5813 +++ b/arch/m32r/lib/usercopy.c
5814 @@ -14,6 +14,9 @@
5815 unsigned long
5816 __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
5817 {
5818 + if ((long)n < 0)
5819 + return n;
5820 +
5821 prefetch(from);
5822 if (access_ok(VERIFY_WRITE, to, n))
5823 __copy_user(to,from,n);
5824 @@ -23,6 +26,9 @@ __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
5825 unsigned long
5826 __generic_copy_from_user(void *to, const void __user *from, unsigned long n)
5827 {
5828 + if ((long)n < 0)
5829 + return n;
5830 +
5831 prefetchw(to);
5832 if (access_ok(VERIFY_READ, from, n))
5833 __copy_user_zeroing(to,from,n);
5834 diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h
5835 index 0395c51..5f26031 100644
5836 --- a/arch/m68k/include/asm/cache.h
5837 +++ b/arch/m68k/include/asm/cache.h
5838 @@ -4,9 +4,11 @@
5839 #ifndef __ARCH_M68K_CACHE_H
5840 #define __ARCH_M68K_CACHE_H
5841
5842 +#include <linux/const.h>
5843 +
5844 /* bytes per L1 cache line */
5845 #define L1_CACHE_SHIFT 4
5846 -#define L1_CACHE_BYTES (1<< L1_CACHE_SHIFT)
5847 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5848
5849 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES
5850
5851 diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
5852 index 5a696e5..070490d 100644
5853 --- a/arch/metag/include/asm/barrier.h
5854 +++ b/arch/metag/include/asm/barrier.h
5855 @@ -90,7 +90,7 @@ static inline void fence(void)
5856 do { \
5857 compiletime_assert_atomic_type(*p); \
5858 smp_mb(); \
5859 - ACCESS_ONCE(*p) = (v); \
5860 + ACCESS_ONCE_RW(*p) = (v); \
5861 } while (0)
5862
5863 #define smp_load_acquire(p) \
5864 diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c
5865 index 53f0f6c..2dc07fd 100644
5866 --- a/arch/metag/mm/hugetlbpage.c
5867 +++ b/arch/metag/mm/hugetlbpage.c
5868 @@ -189,6 +189,7 @@ hugetlb_get_unmapped_area_new_pmd(unsigned long len)
5869 info.high_limit = TASK_SIZE;
5870 info.align_mask = PAGE_MASK & HUGEPT_MASK;
5871 info.align_offset = 0;
5872 + info.threadstack_offset = 0;
5873 return vm_unmapped_area(&info);
5874 }
5875
5876 diff --git a/arch/microblaze/include/asm/cache.h b/arch/microblaze/include/asm/cache.h
5877 index 4efe96a..60e8699 100644
5878 --- a/arch/microblaze/include/asm/cache.h
5879 +++ b/arch/microblaze/include/asm/cache.h
5880 @@ -13,11 +13,12 @@
5881 #ifndef _ASM_MICROBLAZE_CACHE_H
5882 #define _ASM_MICROBLAZE_CACHE_H
5883
5884 +#include <linux/const.h>
5885 #include <asm/registers.h>
5886
5887 #define L1_CACHE_SHIFT 5
5888 /* word-granular cache in microblaze */
5889 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
5890 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
5891
5892 #define SMP_CACHE_BYTES L1_CACHE_BYTES
5893
5894 diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
5895 index 199a835..822b487 100644
5896 --- a/arch/mips/Kconfig
5897 +++ b/arch/mips/Kconfig
5898 @@ -2591,6 +2591,7 @@ source "kernel/Kconfig.preempt"
5899
5900 config KEXEC
5901 bool "Kexec system call"
5902 + depends on !GRKERNSEC_KMEM
5903 help
5904 kexec is a system call that implements the ability to shutdown your
5905 current kernel, and to start another kernel. It is like a reboot
5906 diff --git a/arch/mips/cavium-octeon/dma-octeon.c b/arch/mips/cavium-octeon/dma-octeon.c
5907 index d8960d4..77dbd31 100644
5908 --- a/arch/mips/cavium-octeon/dma-octeon.c
5909 +++ b/arch/mips/cavium-octeon/dma-octeon.c
5910 @@ -199,7 +199,7 @@ static void octeon_dma_free_coherent(struct device *dev, size_t size,
5911 if (dma_release_from_coherent(dev, order, vaddr))
5912 return;
5913
5914 - swiotlb_free_coherent(dev, size, vaddr, dma_handle);
5915 + swiotlb_free_coherent(dev, size, vaddr, dma_handle, attrs);
5916 }
5917
5918 static dma_addr_t octeon_unity_phys_to_dma(struct device *dev, phys_addr_t paddr)
5919 diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
5920 index 26d4363..3c9a82e 100644
5921 --- a/arch/mips/include/asm/atomic.h
5922 +++ b/arch/mips/include/asm/atomic.h
5923 @@ -22,15 +22,39 @@
5924 #include <asm/cmpxchg.h>
5925 #include <asm/war.h>
5926
5927 +#ifdef CONFIG_GENERIC_ATOMIC64
5928 +#include <asm-generic/atomic64.h>
5929 +#endif
5930 +
5931 #define ATOMIC_INIT(i) { (i) }
5932
5933 +#ifdef CONFIG_64BIT
5934 +#define _ASM_EXTABLE(from, to) \
5935 +" .section __ex_table,\"a\"\n" \
5936 +" .dword " #from ", " #to"\n" \
5937 +" .previous\n"
5938 +#else
5939 +#define _ASM_EXTABLE(from, to) \
5940 +" .section __ex_table,\"a\"\n" \
5941 +" .word " #from ", " #to"\n" \
5942 +" .previous\n"
5943 +#endif
5944 +
5945 /*
5946 * atomic_read - read atomic variable
5947 * @v: pointer of type atomic_t
5948 *
5949 * Atomically reads the value of @v.
5950 */
5951 -#define atomic_read(v) ACCESS_ONCE((v)->counter)
5952 +static inline int atomic_read(const atomic_t *v)
5953 +{
5954 + return ACCESS_ONCE(v->counter);
5955 +}
5956 +
5957 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
5958 +{
5959 + return ACCESS_ONCE(v->counter);
5960 +}
5961
5962 /*
5963 * atomic_set - set atomic variable
5964 @@ -39,47 +63,77 @@
5965 *
5966 * Atomically sets the value of @v to @i.
5967 */
5968 -#define atomic_set(v, i) ((v)->counter = (i))
5969 +static inline void atomic_set(atomic_t *v, int i)
5970 +{
5971 + v->counter = i;
5972 +}
5973
5974 -#define ATOMIC_OP(op, c_op, asm_op) \
5975 -static __inline__ void atomic_##op(int i, atomic_t * v) \
5976 +static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
5977 +{
5978 + v->counter = i;
5979 +}
5980 +
5981 +#ifdef CONFIG_PAX_REFCOUNT
5982 +#define __OVERFLOW_POST \
5983 + " b 4f \n" \
5984 + " .set noreorder \n" \
5985 + "3: b 5f \n" \
5986 + " move %0, %1 \n" \
5987 + " .set reorder \n"
5988 +#define __OVERFLOW_EXTABLE \
5989 + "3:\n" \
5990 + _ASM_EXTABLE(2b, 3b)
5991 +#else
5992 +#define __OVERFLOW_POST
5993 +#define __OVERFLOW_EXTABLE
5994 +#endif
5995 +
5996 +#define __ATOMIC_OP(op, suffix, asm_op, extable) \
5997 +static inline void atomic_##op##suffix(int i, atomic##suffix##_t * v) \
5998 { \
5999 if (kernel_uses_llsc && R10000_LLSC_WAR) { \
6000 int temp; \
6001 \
6002 __asm__ __volatile__( \
6003 - " .set arch=r4000 \n" \
6004 - "1: ll %0, %1 # atomic_" #op " \n" \
6005 - " " #asm_op " %0, %2 \n" \
6006 + " .set mips3 \n" \
6007 + "1: ll %0, %1 # atomic_" #op #suffix "\n" \
6008 + "2: " #asm_op " %0, %2 \n" \
6009 " sc %0, %1 \n" \
6010 " beqzl %0, 1b \n" \
6011 + extable \
6012 " .set mips0 \n" \
6013 : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6014 : "Ir" (i)); \
6015 } else if (kernel_uses_llsc) { \
6016 int temp; \
6017 \
6018 - do { \
6019 - __asm__ __volatile__( \
6020 - " .set "MIPS_ISA_LEVEL" \n" \
6021 - " ll %0, %1 # atomic_" #op "\n" \
6022 - " " #asm_op " %0, %2 \n" \
6023 - " sc %0, %1 \n" \
6024 - " .set mips0 \n" \
6025 - : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6026 - : "Ir" (i)); \
6027 - } while (unlikely(!temp)); \
6028 + __asm__ __volatile__( \
6029 + " .set "MIPS_ISA_LEVEL" \n" \
6030 + "1: ll %0, %1 # atomic_" #op #suffix "\n" \
6031 + "2: " #asm_op " %0, %2 \n" \
6032 + " sc %0, %1 \n" \
6033 + " beqz %0, 1b \n" \
6034 + extable \
6035 + " .set mips0 \n" \
6036 + : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6037 + : "Ir" (i)); \
6038 } else { \
6039 unsigned long flags; \
6040 \
6041 raw_local_irq_save(flags); \
6042 - v->counter c_op i; \
6043 + __asm__ __volatile__( \
6044 + "2: " #asm_op " %0, %1 \n" \
6045 + extable \
6046 + : "+r" (v->counter) : "Ir" (i)); \
6047 raw_local_irq_restore(flags); \
6048 } \
6049 }
6050
6051 -#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
6052 -static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
6053 +#define ATOMIC_OP(op, asm_op) __ATOMIC_OP(op, _unchecked, asm_op##u, ) \
6054 + __ATOMIC_OP(op, , asm_op, __OVERFLOW_EXTABLE)
6055 +
6056 +#define __ATOMIC_OP_RETURN(op, suffix, asm_op, post_op, extable) \
6057 +static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t * v) \
6058 { \
6059 int result; \
6060 \
6061 @@ -89,12 +143,15 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
6062 int temp; \
6063 \
6064 __asm__ __volatile__( \
6065 - " .set arch=r4000 \n" \
6066 - "1: ll %1, %2 # atomic_" #op "_return \n" \
6067 - " " #asm_op " %0, %1, %3 \n" \
6068 + " .set mips3 \n" \
6069 + "1: ll %1, %2 # atomic_" #op "_return" #suffix"\n" \
6070 + "2: " #asm_op " %0, %1, %3 \n" \
6071 " sc %0, %2 \n" \
6072 " beqzl %0, 1b \n" \
6073 - " " #asm_op " %0, %1, %3 \n" \
6074 + post_op \
6075 + extable \
6076 + "4: " #asm_op " %0, %1, %3 \n" \
6077 + "5: \n" \
6078 " .set mips0 \n" \
6079 : "=&r" (result), "=&r" (temp), \
6080 "+" GCC_OFF_SMALL_ASM() (v->counter) \
6081 @@ -102,26 +159,33 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
6082 } else if (kernel_uses_llsc) { \
6083 int temp; \
6084 \
6085 - do { \
6086 - __asm__ __volatile__( \
6087 - " .set "MIPS_ISA_LEVEL" \n" \
6088 - " ll %1, %2 # atomic_" #op "_return \n" \
6089 - " " #asm_op " %0, %1, %3 \n" \
6090 - " sc %0, %2 \n" \
6091 - " .set mips0 \n" \
6092 - : "=&r" (result), "=&r" (temp), \
6093 - "+" GCC_OFF_SMALL_ASM() (v->counter) \
6094 - : "Ir" (i)); \
6095 - } while (unlikely(!result)); \
6096 + __asm__ __volatile__( \
6097 + " .set "MIPS_ISA_LEVEL" \n" \
6098 + "1: ll %1, %2 # atomic_" #op "_return" #suffix "\n" \
6099 + "2: " #asm_op " %0, %1, %3 \n" \
6100 + " sc %0, %2 \n" \
6101 + post_op \
6102 + extable \
6103 + "4: " #asm_op " %0, %1, %3 \n" \
6104 + "5: \n" \
6105 + " .set mips0 \n" \
6106 + : "=&r" (result), "=&r" (temp), \
6107 + "+" GCC_OFF_SMALL_ASM() (v->counter) \
6108 + : "Ir" (i)); \
6109 \
6110 result = temp; result c_op i; \
6111 } else { \
6112 unsigned long flags; \
6113 \
6114 raw_local_irq_save(flags); \
6115 - result = v->counter; \
6116 - result c_op i; \
6117 - v->counter = result; \
6118 + __asm__ __volatile__( \
6119 + " lw %0, %1 \n" \
6120 + "2: " #asm_op " %0, %1, %2 \n" \
6121 + " sw %0, %1 \n" \
6122 + "3: \n" \
6123 + extable \
6124 + : "=&r" (result), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6125 + : "Ir" (i)); \
6126 raw_local_irq_restore(flags); \
6127 } \
6128 \
6129 @@ -130,16 +194,21 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v) \
6130 return result; \
6131 }
6132
6133 -#define ATOMIC_OPS(op, c_op, asm_op) \
6134 - ATOMIC_OP(op, c_op, asm_op) \
6135 - ATOMIC_OP_RETURN(op, c_op, asm_op)
6136 +#define ATOMIC_OP_RETURN(op, asm_op) __ATOMIC_OP_RETURN(op, _unchecked, asm_op##u, , ) \
6137 + __ATOMIC_OP_RETURN(op, , asm_op, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
6138
6139 -ATOMIC_OPS(add, +=, addu)
6140 -ATOMIC_OPS(sub, -=, subu)
6141 +#define ATOMIC_OPS(op, asm_op) \
6142 + ATOMIC_OP(op, asm_op) \
6143 + ATOMIC_OP_RETURN(op, asm_op)
6144 +
6145 +ATOMIC_OPS(add, add)
6146 +ATOMIC_OPS(sub, sub)
6147
6148 #undef ATOMIC_OPS
6149 #undef ATOMIC_OP_RETURN
6150 +#undef __ATOMIC_OP_RETURN
6151 #undef ATOMIC_OP
6152 +#undef __ATOMIC_OP
6153
6154 /*
6155 * atomic_sub_if_positive - conditionally subtract integer from atomic variable
6156 @@ -149,7 +218,7 @@ ATOMIC_OPS(sub, -=, subu)
6157 * Atomically test @v and subtract @i if @v is greater or equal than @i.
6158 * The function returns the old value of @v minus @i.
6159 */
6160 -static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
6161 +static __inline__ int atomic_sub_if_positive(int i, atomic_t *v)
6162 {
6163 int result;
6164
6165 @@ -159,7 +228,7 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
6166 int temp;
6167
6168 __asm__ __volatile__(
6169 - " .set arch=r4000 \n"
6170 + " .set "MIPS_ISA_LEVEL" \n"
6171 "1: ll %1, %2 # atomic_sub_if_positive\n"
6172 " subu %0, %1, %3 \n"
6173 " bltz %0, 1f \n"
6174 @@ -208,8 +277,26 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
6175 return result;
6176 }
6177
6178 -#define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
6179 -#define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
6180 +static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
6181 +{
6182 + return cmpxchg(&v->counter, old, new);
6183 +}
6184 +
6185 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old,
6186 + int new)
6187 +{
6188 + return cmpxchg(&(v->counter), old, new);
6189 +}
6190 +
6191 +static inline int atomic_xchg(atomic_t *v, int new)
6192 +{
6193 + return xchg(&v->counter, new);
6194 +}
6195 +
6196 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
6197 +{
6198 + return xchg(&(v->counter), new);
6199 +}
6200
6201 /**
6202 * __atomic_add_unless - add unless the number is a given value
6203 @@ -237,6 +324,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
6204
6205 #define atomic_dec_return(v) atomic_sub_return(1, (v))
6206 #define atomic_inc_return(v) atomic_add_return(1, (v))
6207 +static __inline__ int atomic_inc_return_unchecked(atomic_unchecked_t *v)
6208 +{
6209 + return atomic_add_return_unchecked(1, v);
6210 +}
6211
6212 /*
6213 * atomic_sub_and_test - subtract value from variable and test result
6214 @@ -258,6 +349,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
6215 * other cases.
6216 */
6217 #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
6218 +static __inline__ int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
6219 +{
6220 + return atomic_add_return_unchecked(1, v) == 0;
6221 +}
6222
6223 /*
6224 * atomic_dec_and_test - decrement by 1 and test
6225 @@ -282,6 +377,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
6226 * Atomically increments @v by 1.
6227 */
6228 #define atomic_inc(v) atomic_add(1, (v))
6229 +static __inline__ void atomic_inc_unchecked(atomic_unchecked_t *v)
6230 +{
6231 + atomic_add_unchecked(1, v);
6232 +}
6233
6234 /*
6235 * atomic_dec - decrement and test
6236 @@ -290,6 +389,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
6237 * Atomically decrements @v by 1.
6238 */
6239 #define atomic_dec(v) atomic_sub(1, (v))
6240 +static __inline__ void atomic_dec_unchecked(atomic_unchecked_t *v)
6241 +{
6242 + atomic_sub_unchecked(1, v);
6243 +}
6244
6245 /*
6246 * atomic_add_negative - add and test if negative
6247 @@ -311,54 +414,77 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
6248 * @v: pointer of type atomic64_t
6249 *
6250 */
6251 -#define atomic64_read(v) ACCESS_ONCE((v)->counter)
6252 +static inline long atomic64_read(const atomic64_t *v)
6253 +{
6254 + return ACCESS_ONCE(v->counter);
6255 +}
6256 +
6257 +static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
6258 +{
6259 + return ACCESS_ONCE(v->counter);
6260 +}
6261
6262 /*
6263 * atomic64_set - set atomic variable
6264 * @v: pointer of type atomic64_t
6265 * @i: required value
6266 */
6267 -#define atomic64_set(v, i) ((v)->counter = (i))
6268 +static inline void atomic64_set(atomic64_t *v, long i)
6269 +{
6270 + v->counter = i;
6271 +}
6272
6273 -#define ATOMIC64_OP(op, c_op, asm_op) \
6274 -static __inline__ void atomic64_##op(long i, atomic64_t * v) \
6275 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
6276 +{
6277 + v->counter = i;
6278 +}
6279 +
6280 +#define __ATOMIC64_OP(op, suffix, asm_op, extable) \
6281 +static inline void atomic64_##op##suffix(long i, atomic64##suffix##_t * v) \
6282 { \
6283 if (kernel_uses_llsc && R10000_LLSC_WAR) { \
6284 long temp; \
6285 \
6286 __asm__ __volatile__( \
6287 - " .set arch=r4000 \n" \
6288 - "1: lld %0, %1 # atomic64_" #op " \n" \
6289 - " " #asm_op " %0, %2 \n" \
6290 + " .set "MIPS_ISA_LEVEL" \n" \
6291 + "1: lld %0, %1 # atomic64_" #op #suffix "\n" \
6292 + "2: " #asm_op " %0, %2 \n" \
6293 " scd %0, %1 \n" \
6294 " beqzl %0, 1b \n" \
6295 + extable \
6296 " .set mips0 \n" \
6297 : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6298 : "Ir" (i)); \
6299 } else if (kernel_uses_llsc) { \
6300 long temp; \
6301 \
6302 - do { \
6303 - __asm__ __volatile__( \
6304 - " .set "MIPS_ISA_LEVEL" \n" \
6305 - " lld %0, %1 # atomic64_" #op "\n" \
6306 - " " #asm_op " %0, %2 \n" \
6307 - " scd %0, %1 \n" \
6308 - " .set mips0 \n" \
6309 - : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6310 - : "Ir" (i)); \
6311 - } while (unlikely(!temp)); \
6312 + __asm__ __volatile__( \
6313 + " .set "MIPS_ISA_LEVEL" \n" \
6314 + "1: lld %0, %1 # atomic64_" #op #suffix "\n" \
6315 + "2: " #asm_op " %0, %2 \n" \
6316 + " scd %0, %1 \n" \
6317 + " beqz %0, 1b \n" \
6318 + extable \
6319 + " .set mips0 \n" \
6320 + : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6321 + : "Ir" (i)); \
6322 } else { \
6323 unsigned long flags; \
6324 \
6325 raw_local_irq_save(flags); \
6326 - v->counter c_op i; \
6327 + __asm__ __volatile__( \
6328 + "2: " #asm_op " %0, %1 \n" \
6329 + extable \
6330 + : "+" GCC_OFF_SMALL_ASM() (v->counter) : "Ir" (i)); \
6331 raw_local_irq_restore(flags); \
6332 } \
6333 }
6334
6335 -#define ATOMIC64_OP_RETURN(op, c_op, asm_op) \
6336 -static __inline__ long atomic64_##op##_return(long i, atomic64_t * v) \
6337 +#define ATOMIC64_OP(op, asm_op) __ATOMIC64_OP(op, _unchecked, asm_op##u, ) \
6338 + __ATOMIC64_OP(op, , asm_op, __OVERFLOW_EXTABLE)
6339 +
6340 +#define __ATOMIC64_OP_RETURN(op, suffix, asm_op, post_op, extable) \
6341 +static inline long atomic64_##op##_return##suffix(long i, atomic64##suffix##_t * v)\
6342 { \
6343 long result; \
6344 \
6345 @@ -368,12 +494,15 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v) \
6346 long temp; \
6347 \
6348 __asm__ __volatile__( \
6349 - " .set arch=r4000 \n" \
6350 + " .set mips3 \n" \
6351 "1: lld %1, %2 # atomic64_" #op "_return\n" \
6352 - " " #asm_op " %0, %1, %3 \n" \
6353 + "2: " #asm_op " %0, %1, %3 \n" \
6354 " scd %0, %2 \n" \
6355 " beqzl %0, 1b \n" \
6356 - " " #asm_op " %0, %1, %3 \n" \
6357 + post_op \
6358 + extable \
6359 + "4: " #asm_op " %0, %1, %3 \n" \
6360 + "5: \n" \
6361 " .set mips0 \n" \
6362 : "=&r" (result), "=&r" (temp), \
6363 "+" GCC_OFF_SMALL_ASM() (v->counter) \
6364 @@ -381,27 +510,35 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v) \
6365 } else if (kernel_uses_llsc) { \
6366 long temp; \
6367 \
6368 - do { \
6369 - __asm__ __volatile__( \
6370 - " .set "MIPS_ISA_LEVEL" \n" \
6371 - " lld %1, %2 # atomic64_" #op "_return\n" \
6372 - " " #asm_op " %0, %1, %3 \n" \
6373 - " scd %0, %2 \n" \
6374 - " .set mips0 \n" \
6375 - : "=&r" (result), "=&r" (temp), \
6376 - "=" GCC_OFF_SMALL_ASM() (v->counter) \
6377 - : "Ir" (i), GCC_OFF_SMALL_ASM() (v->counter) \
6378 - : "memory"); \
6379 - } while (unlikely(!result)); \
6380 + __asm__ __volatile__( \
6381 + " .set "MIPS_ISA_LEVEL" \n" \
6382 + "1: lld %1, %2 # atomic64_" #op "_return" #suffix "\n"\
6383 + "2: " #asm_op " %0, %1, %3 \n" \
6384 + " scd %0, %2 \n" \
6385 + " beqz %0, 1b \n" \
6386 + post_op \
6387 + extable \
6388 + "4: " #asm_op " %0, %1, %3 \n" \
6389 + "5: \n" \
6390 + " .set mips0 \n" \
6391 + : "=&r" (result), "=&r" (temp), \
6392 + "=" GCC_OFF_SMALL_ASM() (v->counter) \
6393 + : "Ir" (i), GCC_OFF_SMALL_ASM() (v->counter) \
6394 + : "memory"); \
6395 \
6396 result = temp; result c_op i; \
6397 } else { \
6398 unsigned long flags; \
6399 \
6400 raw_local_irq_save(flags); \
6401 - result = v->counter; \
6402 - result c_op i; \
6403 - v->counter = result; \
6404 + __asm__ __volatile__( \
6405 + " ld %0, %1 \n" \
6406 + "2: " #asm_op " %0, %1, %2 \n" \
6407 + " sd %0, %1 \n" \
6408 + "3: \n" \
6409 + extable \
6410 + : "=&r" (result), "+" GCC_OFF_SMALL_ASM() (v->counter) \
6411 + : "Ir" (i)); \
6412 raw_local_irq_restore(flags); \
6413 } \
6414 \
6415 @@ -410,16 +547,23 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v) \
6416 return result; \
6417 }
6418
6419 -#define ATOMIC64_OPS(op, c_op, asm_op) \
6420 - ATOMIC64_OP(op, c_op, asm_op) \
6421 - ATOMIC64_OP_RETURN(op, c_op, asm_op)
6422 +#define ATOMIC64_OP_RETURN(op, asm_op) __ATOMIC64_OP_RETURN(op, _unchecked, asm_op##u, , ) \
6423 + __ATOMIC64_OP_RETURN(op, , asm_op, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
6424
6425 -ATOMIC64_OPS(add, +=, daddu)
6426 -ATOMIC64_OPS(sub, -=, dsubu)
6427 +#define ATOMIC64_OPS(op, asm_op) \
6428 + ATOMIC64_OP(op, asm_op) \
6429 + ATOMIC64_OP_RETURN(op, asm_op)
6430 +
6431 +ATOMIC64_OPS(add, dadd)
6432 +ATOMIC64_OPS(sub, dsub)
6433
6434 #undef ATOMIC64_OPS
6435 #undef ATOMIC64_OP_RETURN
6436 +#undef __ATOMIC64_OP_RETURN
6437 #undef ATOMIC64_OP
6438 +#undef __ATOMIC64_OP
6439 +#undef __OVERFLOW_EXTABLE
6440 +#undef __OVERFLOW_POST
6441
6442 /*
6443 * atomic64_sub_if_positive - conditionally subtract integer from atomic
6444 @@ -430,7 +574,7 @@ ATOMIC64_OPS(sub, -=, dsubu)
6445 * Atomically test @v and subtract @i if @v is greater or equal than @i.
6446 * The function returns the old value of @v minus @i.
6447 */
6448 -static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
6449 +static __inline__ long atomic64_sub_if_positive(long i, atomic64_t *v)
6450 {
6451 long result;
6452
6453 @@ -440,7 +584,7 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
6454 long temp;
6455
6456 __asm__ __volatile__(
6457 - " .set arch=r4000 \n"
6458 + " .set "MIPS_ISA_LEVEL" \n"
6459 "1: lld %1, %2 # atomic64_sub_if_positive\n"
6460 " dsubu %0, %1, %3 \n"
6461 " bltz %0, 1f \n"
6462 @@ -489,9 +633,26 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
6463 return result;
6464 }
6465
6466 -#define atomic64_cmpxchg(v, o, n) \
6467 - ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
6468 -#define atomic64_xchg(v, new) (xchg(&((v)->counter), (new)))
6469 +static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
6470 +{
6471 + return cmpxchg(&v->counter, old, new);
6472 +}
6473 +
6474 +static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old,
6475 + long new)
6476 +{
6477 + return cmpxchg(&(v->counter), old, new);
6478 +}
6479 +
6480 +static inline long atomic64_xchg(atomic64_t *v, long new)
6481 +{
6482 + return xchg(&v->counter, new);
6483 +}
6484 +
6485 +static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new)
6486 +{
6487 + return xchg(&(v->counter), new);
6488 +}
6489
6490 /**
6491 * atomic64_add_unless - add unless the number is a given value
6492 @@ -521,6 +682,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
6493
6494 #define atomic64_dec_return(v) atomic64_sub_return(1, (v))
6495 #define atomic64_inc_return(v) atomic64_add_return(1, (v))
6496 +#define atomic64_inc_return_unchecked(v) atomic64_add_return_unchecked(1, (v))
6497
6498 /*
6499 * atomic64_sub_and_test - subtract value from variable and test result
6500 @@ -542,6 +704,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
6501 * other cases.
6502 */
6503 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
6504 +#define atomic64_inc_and_test_unchecked(v) atomic64_add_return_unchecked(1, (v)) == 0)
6505
6506 /*
6507 * atomic64_dec_and_test - decrement by 1 and test
6508 @@ -566,6 +729,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
6509 * Atomically increments @v by 1.
6510 */
6511 #define atomic64_inc(v) atomic64_add(1, (v))
6512 +#define atomic64_inc_unchecked(v) atomic64_add_unchecked(1, (v))
6513
6514 /*
6515 * atomic64_dec - decrement and test
6516 @@ -574,6 +738,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
6517 * Atomically decrements @v by 1.
6518 */
6519 #define atomic64_dec(v) atomic64_sub(1, (v))
6520 +#define atomic64_dec_unchecked(v) atomic64_sub_unchecked(1, (v))
6521
6522 /*
6523 * atomic64_add_negative - add and test if negative
6524 diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h
6525 index 7ecba84..21774af 100644
6526 --- a/arch/mips/include/asm/barrier.h
6527 +++ b/arch/mips/include/asm/barrier.h
6528 @@ -133,7 +133,7 @@
6529 do { \
6530 compiletime_assert_atomic_type(*p); \
6531 smp_mb(); \
6532 - ACCESS_ONCE(*p) = (v); \
6533 + ACCESS_ONCE_RW(*p) = (v); \
6534 } while (0)
6535
6536 #define smp_load_acquire(p) \
6537 diff --git a/arch/mips/include/asm/cache.h b/arch/mips/include/asm/cache.h
6538 index b4db69f..8f3b093 100644
6539 --- a/arch/mips/include/asm/cache.h
6540 +++ b/arch/mips/include/asm/cache.h
6541 @@ -9,10 +9,11 @@
6542 #ifndef _ASM_CACHE_H
6543 #define _ASM_CACHE_H
6544
6545 +#include <linux/const.h>
6546 #include <kmalloc.h>
6547
6548 #define L1_CACHE_SHIFT CONFIG_MIPS_L1_CACHE_SHIFT
6549 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
6550 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
6551
6552 #define SMP_CACHE_SHIFT L1_CACHE_SHIFT
6553 #define SMP_CACHE_BYTES L1_CACHE_BYTES
6554 diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
6555 index f19e890..a4f8177 100644
6556 --- a/arch/mips/include/asm/elf.h
6557 +++ b/arch/mips/include/asm/elf.h
6558 @@ -417,6 +417,13 @@ extern const char *__elf_platform;
6559 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
6560 #endif
6561
6562 +#ifdef CONFIG_PAX_ASLR
6563 +#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
6564 +
6565 +#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6566 +#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6567 +#endif
6568 +
6569 #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
6570 struct linux_binprm;
6571 extern int arch_setup_additional_pages(struct linux_binprm *bprm,
6572 diff --git a/arch/mips/include/asm/exec.h b/arch/mips/include/asm/exec.h
6573 index c1f6afa..38cc6e9 100644
6574 --- a/arch/mips/include/asm/exec.h
6575 +++ b/arch/mips/include/asm/exec.h
6576 @@ -12,6 +12,6 @@
6577 #ifndef _ASM_EXEC_H
6578 #define _ASM_EXEC_H
6579
6580 -extern unsigned long arch_align_stack(unsigned long sp);
6581 +#define arch_align_stack(x) ((x) & ~0xfUL)
6582
6583 #endif /* _ASM_EXEC_H */
6584 diff --git a/arch/mips/include/asm/hw_irq.h b/arch/mips/include/asm/hw_irq.h
6585 index 9e8ef59..1139d6b 100644
6586 --- a/arch/mips/include/asm/hw_irq.h
6587 +++ b/arch/mips/include/asm/hw_irq.h
6588 @@ -10,7 +10,7 @@
6589
6590 #include <linux/atomic.h>
6591
6592 -extern atomic_t irq_err_count;
6593 +extern atomic_unchecked_t irq_err_count;
6594
6595 /*
6596 * interrupt-retrigger: NOP for now. This may not be appropriate for all
6597 diff --git a/arch/mips/include/asm/local.h b/arch/mips/include/asm/local.h
6598 index 8feaed6..1bd8a64 100644
6599 --- a/arch/mips/include/asm/local.h
6600 +++ b/arch/mips/include/asm/local.h
6601 @@ -13,15 +13,25 @@ typedef struct
6602 atomic_long_t a;
6603 } local_t;
6604
6605 +typedef struct {
6606 + atomic_long_unchecked_t a;
6607 +} local_unchecked_t;
6608 +
6609 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
6610
6611 #define local_read(l) atomic_long_read(&(l)->a)
6612 +#define local_read_unchecked(l) atomic_long_read_unchecked(&(l)->a)
6613 #define local_set(l, i) atomic_long_set(&(l)->a, (i))
6614 +#define local_set_unchecked(l, i) atomic_long_set_unchecked(&(l)->a, (i))
6615
6616 #define local_add(i, l) atomic_long_add((i), (&(l)->a))
6617 +#define local_add_unchecked(i, l) atomic_long_add_unchecked((i), (&(l)->a))
6618 #define local_sub(i, l) atomic_long_sub((i), (&(l)->a))
6619 +#define local_sub_unchecked(i, l) atomic_long_sub_unchecked((i), (&(l)->a))
6620 #define local_inc(l) atomic_long_inc(&(l)->a)
6621 +#define local_inc_unchecked(l) atomic_long_inc_unchecked(&(l)->a)
6622 #define local_dec(l) atomic_long_dec(&(l)->a)
6623 +#define local_dec_unchecked(l) atomic_long_dec_unchecked(&(l)->a)
6624
6625 /*
6626 * Same as above, but return the result value
6627 @@ -71,6 +81,51 @@ static __inline__ long local_add_return(long i, local_t * l)
6628 return result;
6629 }
6630
6631 +static __inline__ long local_add_return_unchecked(long i, local_unchecked_t * l)
6632 +{
6633 + unsigned long result;
6634 +
6635 + if (kernel_uses_llsc && R10000_LLSC_WAR) {
6636 + unsigned long temp;
6637 +
6638 + __asm__ __volatile__(
6639 + " .set mips3 \n"
6640 + "1:" __LL "%1, %2 # local_add_return \n"
6641 + " addu %0, %1, %3 \n"
6642 + __SC "%0, %2 \n"
6643 + " beqzl %0, 1b \n"
6644 + " addu %0, %1, %3 \n"
6645 + " .set mips0 \n"
6646 + : "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
6647 + : "Ir" (i), "m" (l->a.counter)
6648 + : "memory");
6649 + } else if (kernel_uses_llsc) {
6650 + unsigned long temp;
6651 +
6652 + __asm__ __volatile__(
6653 + " .set mips3 \n"
6654 + "1:" __LL "%1, %2 # local_add_return \n"
6655 + " addu %0, %1, %3 \n"
6656 + __SC "%0, %2 \n"
6657 + " beqz %0, 1b \n"
6658 + " addu %0, %1, %3 \n"
6659 + " .set mips0 \n"
6660 + : "=&r" (result), "=&r" (temp), "=m" (l->a.counter)
6661 + : "Ir" (i), "m" (l->a.counter)
6662 + : "memory");
6663 + } else {
6664 + unsigned long flags;
6665 +
6666 + local_irq_save(flags);
6667 + result = l->a.counter;
6668 + result += i;
6669 + l->a.counter = result;
6670 + local_irq_restore(flags);
6671 + }
6672 +
6673 + return result;
6674 +}
6675 +
6676 static __inline__ long local_sub_return(long i, local_t * l)
6677 {
6678 unsigned long result;
6679 @@ -118,6 +173,8 @@ static __inline__ long local_sub_return(long i, local_t * l)
6680
6681 #define local_cmpxchg(l, o, n) \
6682 ((long)cmpxchg_local(&((l)->a.counter), (o), (n)))
6683 +#define local_cmpxchg_unchecked(l, o, n) \
6684 + ((long)cmpxchg_local(&((l)->a.counter), (o), (n)))
6685 #define local_xchg(l, n) (atomic_long_xchg((&(l)->a), (n)))
6686
6687 /**
6688 diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
6689 index 89dd7fe..a123c97 100644
6690 --- a/arch/mips/include/asm/page.h
6691 +++ b/arch/mips/include/asm/page.h
6692 @@ -118,7 +118,7 @@ extern void copy_user_highpage(struct page *to, struct page *from,
6693 #ifdef CONFIG_CPU_MIPS32
6694 typedef struct { unsigned long pte_low, pte_high; } pte_t;
6695 #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
6696 - #define __pte(x) ({ pte_t __pte = {(x), ((unsigned long long)(x)) >> 32}; __pte; })
6697 + #define __pte(x) ({ pte_t __pte = {(x), (x) >> 32}; __pte; })
6698 #else
6699 typedef struct { unsigned long long pte; } pte_t;
6700 #define pte_val(x) ((x).pte)
6701 diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h
6702 index b336037..5b874cc 100644
6703 --- a/arch/mips/include/asm/pgalloc.h
6704 +++ b/arch/mips/include/asm/pgalloc.h
6705 @@ -37,6 +37,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
6706 {
6707 set_pud(pud, __pud((unsigned long)pmd));
6708 }
6709 +
6710 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
6711 +{
6712 + pud_populate(mm, pud, pmd);
6713 +}
6714 #endif
6715
6716 /*
6717 diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
6718 index ae85694..4cdbba8 100644
6719 --- a/arch/mips/include/asm/pgtable.h
6720 +++ b/arch/mips/include/asm/pgtable.h
6721 @@ -20,6 +20,9 @@
6722 #include <asm/io.h>
6723 #include <asm/pgtable-bits.h>
6724
6725 +#define ktla_ktva(addr) (addr)
6726 +#define ktva_ktla(addr) (addr)
6727 +
6728 struct mm_struct;
6729 struct vm_area_struct;
6730
6731 diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
6732 index 9c0014e..5101ef5 100644
6733 --- a/arch/mips/include/asm/thread_info.h
6734 +++ b/arch/mips/include/asm/thread_info.h
6735 @@ -100,6 +100,9 @@ static inline struct thread_info *current_thread_info(void)
6736 #define TIF_SECCOMP 4 /* secure computing */
6737 #define TIF_NOTIFY_RESUME 5 /* callback before returning to user */
6738 #define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal() */
6739 +/* li takes a 32bit immediate */
6740 +#define TIF_GRSEC_SETXID 10 /* update credentials on syscall entry/exit */
6741 +
6742 #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */
6743 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */
6744 #define TIF_NOHZ 19 /* in adaptive nohz mode */
6745 @@ -135,14 +138,16 @@ static inline struct thread_info *current_thread_info(void)
6746 #define _TIF_USEDMSA (1<<TIF_USEDMSA)
6747 #define _TIF_MSA_CTX_LIVE (1<<TIF_MSA_CTX_LIVE)
6748 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
6749 +#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID)
6750
6751 #define _TIF_WORK_SYSCALL_ENTRY (_TIF_NOHZ | _TIF_SYSCALL_TRACE | \
6752 _TIF_SYSCALL_AUDIT | \
6753 - _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP)
6754 + _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \
6755 + _TIF_GRSEC_SETXID)
6756
6757 /* work to do in syscall_trace_leave() */
6758 #define _TIF_WORK_SYSCALL_EXIT (_TIF_NOHZ | _TIF_SYSCALL_TRACE | \
6759 - _TIF_SYSCALL_AUDIT | _TIF_SYSCALL_TRACEPOINT)
6760 + _TIF_SYSCALL_AUDIT | _TIF_SYSCALL_TRACEPOINT | _TIF_GRSEC_SETXID)
6761
6762 /* work to do on interrupt/exception return */
6763 #define _TIF_WORK_MASK \
6764 @@ -150,7 +155,7 @@ static inline struct thread_info *current_thread_info(void)
6765 /* work to do on any return to u-space */
6766 #define _TIF_ALLWORK_MASK (_TIF_NOHZ | _TIF_WORK_MASK | \
6767 _TIF_WORK_SYSCALL_EXIT | \
6768 - _TIF_SYSCALL_TRACEPOINT)
6769 + _TIF_SYSCALL_TRACEPOINT | _TIF_GRSEC_SETXID)
6770
6771 /*
6772 * We stash processor id into a COP0 register to retrieve it fast
6773 diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h
6774 index 5305d69..1da2bf5 100644
6775 --- a/arch/mips/include/asm/uaccess.h
6776 +++ b/arch/mips/include/asm/uaccess.h
6777 @@ -146,6 +146,7 @@ static inline bool eva_kernel_access(void)
6778 __ok == 0; \
6779 })
6780
6781 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
6782 #define access_ok(type, addr, size) \
6783 likely(__access_ok((addr), (size), __access_mask))
6784
6785 diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c
6786 index 1188e00..41cf144 100644
6787 --- a/arch/mips/kernel/binfmt_elfn32.c
6788 +++ b/arch/mips/kernel/binfmt_elfn32.c
6789 @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
6790 #undef ELF_ET_DYN_BASE
6791 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
6792
6793 +#ifdef CONFIG_PAX_ASLR
6794 +#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
6795 +
6796 +#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6797 +#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6798 +#endif
6799 +
6800 #include <asm/processor.h>
6801 #include <linux/module.h>
6802 #include <linux/elfcore.h>
6803 diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c
6804 index 9287678..f870e47 100644
6805 --- a/arch/mips/kernel/binfmt_elfo32.c
6806 +++ b/arch/mips/kernel/binfmt_elfo32.c
6807 @@ -70,6 +70,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
6808 #undef ELF_ET_DYN_BASE
6809 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
6810
6811 +#ifdef CONFIG_PAX_ASLR
6812 +#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
6813 +
6814 +#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6815 +#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
6816 +#endif
6817 +
6818 #include <asm/processor.h>
6819
6820 #include <linux/module.h>
6821 diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
6822 index 74f6752..f3d7a47 100644
6823 --- a/arch/mips/kernel/i8259.c
6824 +++ b/arch/mips/kernel/i8259.c
6825 @@ -205,7 +205,7 @@ spurious_8259A_irq:
6826 printk(KERN_DEBUG "spurious 8259A interrupt: IRQ%d.\n", irq);
6827 spurious_irq_mask |= irqmask;
6828 }
6829 - atomic_inc(&irq_err_count);
6830 + atomic_inc_unchecked(&irq_err_count);
6831 /*
6832 * Theoretically we do not have to handle this IRQ,
6833 * but in Linux this does not cause problems and is
6834 diff --git a/arch/mips/kernel/irq-gt641xx.c b/arch/mips/kernel/irq-gt641xx.c
6835 index 44a1f79..2bd6aa3 100644
6836 --- a/arch/mips/kernel/irq-gt641xx.c
6837 +++ b/arch/mips/kernel/irq-gt641xx.c
6838 @@ -110,7 +110,7 @@ void gt641xx_irq_dispatch(void)
6839 }
6840 }
6841
6842 - atomic_inc(&irq_err_count);
6843 + atomic_inc_unchecked(&irq_err_count);
6844 }
6845
6846 void __init gt641xx_irq_init(void)
6847 diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
6848 index 8eb5af8..2baf465 100644
6849 --- a/arch/mips/kernel/irq.c
6850 +++ b/arch/mips/kernel/irq.c
6851 @@ -34,17 +34,17 @@ void ack_bad_irq(unsigned int irq)
6852 printk("unexpected IRQ # %d\n", irq);
6853 }
6854
6855 -atomic_t irq_err_count;
6856 +atomic_unchecked_t irq_err_count;
6857
6858 int arch_show_interrupts(struct seq_file *p, int prec)
6859 {
6860 - seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
6861 + seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read_unchecked(&irq_err_count));
6862 return 0;
6863 }
6864
6865 asmlinkage void spurious_interrupt(void)
6866 {
6867 - atomic_inc(&irq_err_count);
6868 + atomic_inc_unchecked(&irq_err_count);
6869 }
6870
6871 void __init init_IRQ(void)
6872 @@ -58,6 +58,8 @@ void __init init_IRQ(void)
6873 }
6874
6875 #ifdef CONFIG_DEBUG_STACKOVERFLOW
6876 +
6877 +extern void gr_handle_kernel_exploit(void);
6878 static inline void check_stack_overflow(void)
6879 {
6880 unsigned long sp;
6881 @@ -73,6 +75,7 @@ static inline void check_stack_overflow(void)
6882 printk("do_IRQ: stack overflow: %ld\n",
6883 sp - sizeof(struct thread_info));
6884 dump_stack();
6885 + gr_handle_kernel_exploit();
6886 }
6887 }
6888 #else
6889 diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c
6890 index 0614717..002fa43 100644
6891 --- a/arch/mips/kernel/pm-cps.c
6892 +++ b/arch/mips/kernel/pm-cps.c
6893 @@ -172,7 +172,7 @@ int cps_pm_enter_state(enum cps_pm_state state)
6894 nc_core_ready_count = nc_addr;
6895
6896 /* Ensure ready_count is zero-initialised before the assembly runs */
6897 - ACCESS_ONCE(*nc_core_ready_count) = 0;
6898 + ACCESS_ONCE_RW(*nc_core_ready_count) = 0;
6899 coupled_barrier(&per_cpu(pm_barrier, core), online);
6900
6901 /* Run the generated entry code */
6902 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
6903 index f2975d4..f61d355 100644
6904 --- a/arch/mips/kernel/process.c
6905 +++ b/arch/mips/kernel/process.c
6906 @@ -541,18 +541,6 @@ out:
6907 return pc;
6908 }
6909
6910 -/*
6911 - * Don't forget that the stack pointer must be aligned on a 8 bytes
6912 - * boundary for 32-bits ABI and 16 bytes for 64-bits ABI.
6913 - */
6914 -unsigned long arch_align_stack(unsigned long sp)
6915 -{
6916 - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
6917 - sp -= get_random_int() & ~PAGE_MASK;
6918 -
6919 - return sp & ALMASK;
6920 -}
6921 -
6922 static void arch_dump_stack(void *info)
6923 {
6924 struct pt_regs *regs;
6925 diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
6926 index e933a30..0d02625 100644
6927 --- a/arch/mips/kernel/ptrace.c
6928 +++ b/arch/mips/kernel/ptrace.c
6929 @@ -785,6 +785,10 @@ long arch_ptrace(struct task_struct *child, long request,
6930 return ret;
6931 }
6932
6933 +#ifdef CONFIG_GRKERNSEC_SETXID
6934 +extern void gr_delayed_cred_worker(void);
6935 +#endif
6936 +
6937 /*
6938 * Notification of system call entry/exit
6939 * - triggered by current->work.syscall_trace
6940 @@ -803,6 +807,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
6941 tracehook_report_syscall_entry(regs))
6942 ret = -1;
6943
6944 +#ifdef CONFIG_GRKERNSEC_SETXID
6945 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
6946 + gr_delayed_cred_worker();
6947 +#endif
6948 +
6949 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
6950 trace_sys_enter(regs, regs->regs[2]);
6951
6952 diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c
6953 index 2242bdd..b284048 100644
6954 --- a/arch/mips/kernel/sync-r4k.c
6955 +++ b/arch/mips/kernel/sync-r4k.c
6956 @@ -18,8 +18,8 @@
6957 #include <asm/mipsregs.h>
6958
6959 static atomic_t count_start_flag = ATOMIC_INIT(0);
6960 -static atomic_t count_count_start = ATOMIC_INIT(0);
6961 -static atomic_t count_count_stop = ATOMIC_INIT(0);
6962 +static atomic_unchecked_t count_count_start = ATOMIC_INIT(0);
6963 +static atomic_unchecked_t count_count_stop = ATOMIC_INIT(0);
6964 static atomic_t count_reference = ATOMIC_INIT(0);
6965
6966 #define COUNTON 100
6967 @@ -58,13 +58,13 @@ void synchronise_count_master(int cpu)
6968
6969 for (i = 0; i < NR_LOOPS; i++) {
6970 /* slaves loop on '!= 2' */
6971 - while (atomic_read(&count_count_start) != 1)
6972 + while (atomic_read_unchecked(&count_count_start) != 1)
6973 mb();
6974 - atomic_set(&count_count_stop, 0);
6975 + atomic_set_unchecked(&count_count_stop, 0);
6976 smp_wmb();
6977
6978 /* this lets the slaves write their count register */
6979 - atomic_inc(&count_count_start);
6980 + atomic_inc_unchecked(&count_count_start);
6981
6982 /*
6983 * Everyone initialises count in the last loop:
6984 @@ -75,11 +75,11 @@ void synchronise_count_master(int cpu)
6985 /*
6986 * Wait for all slaves to leave the synchronization point:
6987 */
6988 - while (atomic_read(&count_count_stop) != 1)
6989 + while (atomic_read_unchecked(&count_count_stop) != 1)
6990 mb();
6991 - atomic_set(&count_count_start, 0);
6992 + atomic_set_unchecked(&count_count_start, 0);
6993 smp_wmb();
6994 - atomic_inc(&count_count_stop);
6995 + atomic_inc_unchecked(&count_count_stop);
6996 }
6997 /* Arrange for an interrupt in a short while */
6998 write_c0_compare(read_c0_count() + COUNTON);
6999 @@ -112,8 +112,8 @@ void synchronise_count_slave(int cpu)
7000 initcount = atomic_read(&count_reference);
7001
7002 for (i = 0; i < NR_LOOPS; i++) {
7003 - atomic_inc(&count_count_start);
7004 - while (atomic_read(&count_count_start) != 2)
7005 + atomic_inc_unchecked(&count_count_start);
7006 + while (atomic_read_unchecked(&count_count_start) != 2)
7007 mb();
7008
7009 /*
7010 @@ -122,8 +122,8 @@ void synchronise_count_slave(int cpu)
7011 if (i == NR_LOOPS-1)
7012 write_c0_count(initcount);
7013
7014 - atomic_inc(&count_count_stop);
7015 - while (atomic_read(&count_count_stop) != 2)
7016 + atomic_inc_unchecked(&count_count_stop);
7017 + while (atomic_read_unchecked(&count_count_stop) != 2)
7018 mb();
7019 }
7020 /* Arrange for an interrupt in a short while */
7021 diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
7022 index 8ea28e6..c8873d5 100644
7023 --- a/arch/mips/kernel/traps.c
7024 +++ b/arch/mips/kernel/traps.c
7025 @@ -697,7 +697,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
7026 siginfo_t info;
7027
7028 prev_state = exception_enter();
7029 - die_if_kernel("Integer overflow", regs);
7030 + if (unlikely(!user_mode(regs))) {
7031 +
7032 +#ifdef CONFIG_PAX_REFCOUNT
7033 + if (fixup_exception(regs)) {
7034 + pax_report_refcount_overflow(regs);
7035 + exception_exit(prev_state);
7036 + return;
7037 + }
7038 +#endif
7039 +
7040 + die("Integer overflow", regs);
7041 + }
7042
7043 info.si_code = FPE_INTOVF;
7044 info.si_signo = SIGFPE;
7045 diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
7046 index cd4c129..290c518 100644
7047 --- a/arch/mips/kvm/mips.c
7048 +++ b/arch/mips/kvm/mips.c
7049 @@ -1016,7 +1016,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)
7050 return r;
7051 }
7052
7053 -int kvm_arch_init(void *opaque)
7054 +int kvm_arch_init(const void *opaque)
7055 {
7056 if (kvm_mips_callbacks) {
7057 kvm_err("kvm: module already exists\n");
7058 diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
7059 index 852a41c..75b9d38 100644
7060 --- a/arch/mips/mm/fault.c
7061 +++ b/arch/mips/mm/fault.c
7062 @@ -31,6 +31,23 @@
7063
7064 int show_unhandled_signals = 1;
7065
7066 +#ifdef CONFIG_PAX_PAGEEXEC
7067 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
7068 +{
7069 + unsigned long i;
7070 +
7071 + printk(KERN_ERR "PAX: bytes at PC: ");
7072 + for (i = 0; i < 5; i++) {
7073 + unsigned int c;
7074 + if (get_user(c, (unsigned int *)pc+i))
7075 + printk(KERN_CONT "???????? ");
7076 + else
7077 + printk(KERN_CONT "%08x ", c);
7078 + }
7079 + printk("\n");
7080 +}
7081 +#endif
7082 +
7083 /*
7084 * This routine handles page faults. It determines the address,
7085 * and the problem, and then passes it off to one of the appropriate
7086 @@ -207,6 +224,14 @@ bad_area:
7087 bad_area_nosemaphore:
7088 /* User mode accesses just cause a SIGSEGV */
7089 if (user_mode(regs)) {
7090 +
7091 +#ifdef CONFIG_PAX_PAGEEXEC
7092 + if (cpu_has_rixi && (mm->pax_flags & MF_PAX_PAGEEXEC) && !write && address == instruction_pointer(regs)) {
7093 + pax_report_fault(regs, (void *)address, (void *)user_stack_pointer(regs));
7094 + do_group_exit(SIGKILL);
7095 + }
7096 +#endif
7097 +
7098 tsk->thread.cp0_badvaddr = address;
7099 tsk->thread.error_code = write;
7100 if (show_unhandled_signals &&
7101 diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
7102 index 5c81fdd..db158d3 100644
7103 --- a/arch/mips/mm/mmap.c
7104 +++ b/arch/mips/mm/mmap.c
7105 @@ -59,6 +59,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
7106 struct vm_area_struct *vma;
7107 unsigned long addr = addr0;
7108 int do_color_align;
7109 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
7110 struct vm_unmapped_area_info info;
7111
7112 if (unlikely(len > TASK_SIZE))
7113 @@ -84,6 +85,11 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
7114 do_color_align = 1;
7115
7116 /* requesting a specific address */
7117 +
7118 +#ifdef CONFIG_PAX_RANDMMAP
7119 + if (!(current->mm->pax_flags & MF_PAX_RANDMMAP))
7120 +#endif
7121 +
7122 if (addr) {
7123 if (do_color_align)
7124 addr = COLOUR_ALIGN(addr, pgoff);
7125 @@ -91,14 +97,14 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
7126 addr = PAGE_ALIGN(addr);
7127
7128 vma = find_vma(mm, addr);
7129 - if (TASK_SIZE - len >= addr &&
7130 - (!vma || addr + len <= vma->vm_start))
7131 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
7132 return addr;
7133 }
7134
7135 info.length = len;
7136 info.align_mask = do_color_align ? (PAGE_MASK & shm_align_mask) : 0;
7137 info.align_offset = pgoff << PAGE_SHIFT;
7138 + info.threadstack_offset = offset;
7139
7140 if (dir == DOWN) {
7141 info.flags = VM_UNMAPPED_AREA_TOPDOWN;
7142 @@ -160,45 +166,34 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
7143 {
7144 unsigned long random_factor = 0UL;
7145
7146 +#ifdef CONFIG_PAX_RANDMMAP
7147 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
7148 +#endif
7149 +
7150 if (current->flags & PF_RANDOMIZE)
7151 random_factor = arch_mmap_rnd();
7152
7153 if (mmap_is_legacy()) {
7154 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
7155 +
7156 +#ifdef CONFIG_PAX_RANDMMAP
7157 + if (mm->pax_flags & MF_PAX_RANDMMAP)
7158 + mm->mmap_base += mm->delta_mmap;
7159 +#endif
7160 +
7161 mm->get_unmapped_area = arch_get_unmapped_area;
7162 } else {
7163 mm->mmap_base = mmap_base(random_factor);
7164 +
7165 +#ifdef CONFIG_PAX_RANDMMAP
7166 + if (mm->pax_flags & MF_PAX_RANDMMAP)
7167 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
7168 +#endif
7169 +
7170 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
7171 }
7172 }
7173
7174 -static inline unsigned long brk_rnd(void)
7175 -{
7176 - unsigned long rnd = get_random_int();
7177 -
7178 - rnd = rnd << PAGE_SHIFT;
7179 - /* 8MB for 32bit, 256MB for 64bit */
7180 - if (TASK_IS_32BIT_ADDR)
7181 - rnd = rnd & 0x7ffffful;
7182 - else
7183 - rnd = rnd & 0xffffffful;
7184 -
7185 - return rnd;
7186 -}
7187 -
7188 -unsigned long arch_randomize_brk(struct mm_struct *mm)
7189 -{
7190 - unsigned long base = mm->brk;
7191 - unsigned long ret;
7192 -
7193 - ret = PAGE_ALIGN(base + brk_rnd());
7194 -
7195 - if (ret < mm->brk)
7196 - return mm->brk;
7197 -
7198 - return ret;
7199 -}
7200 -
7201 int __virt_addr_valid(const volatile void *kaddr)
7202 {
7203 return pfn_valid(PFN_DOWN(virt_to_phys(kaddr)));
7204 diff --git a/arch/mips/sgi-ip27/ip27-nmi.c b/arch/mips/sgi-ip27/ip27-nmi.c
7205 index a2358b4..7cead4f 100644
7206 --- a/arch/mips/sgi-ip27/ip27-nmi.c
7207 +++ b/arch/mips/sgi-ip27/ip27-nmi.c
7208 @@ -187,9 +187,9 @@ void
7209 cont_nmi_dump(void)
7210 {
7211 #ifndef REAL_NMI_SIGNAL
7212 - static atomic_t nmied_cpus = ATOMIC_INIT(0);
7213 + static atomic_unchecked_t nmied_cpus = ATOMIC_INIT(0);
7214
7215 - atomic_inc(&nmied_cpus);
7216 + atomic_inc_unchecked(&nmied_cpus);
7217 #endif
7218 /*
7219 * Only allow 1 cpu to proceed
7220 @@ -233,7 +233,7 @@ cont_nmi_dump(void)
7221 udelay(10000);
7222 }
7223 #else
7224 - while (atomic_read(&nmied_cpus) != num_online_cpus());
7225 + while (atomic_read_unchecked(&nmied_cpus) != num_online_cpus());
7226 #endif
7227
7228 /*
7229 diff --git a/arch/mips/sni/rm200.c b/arch/mips/sni/rm200.c
7230 index a046b30..6799527 100644
7231 --- a/arch/mips/sni/rm200.c
7232 +++ b/arch/mips/sni/rm200.c
7233 @@ -270,7 +270,7 @@ spurious_8259A_irq:
7234 "spurious RM200 8259A interrupt: IRQ%d.\n", irq);
7235 spurious_irq_mask |= irqmask;
7236 }
7237 - atomic_inc(&irq_err_count);
7238 + atomic_inc_unchecked(&irq_err_count);
7239 /*
7240 * Theoretically we do not have to handle this IRQ,
7241 * but in Linux this does not cause problems and is
7242 diff --git a/arch/mips/vr41xx/common/icu.c b/arch/mips/vr41xx/common/icu.c
7243 index 41e873b..34d33a7 100644
7244 --- a/arch/mips/vr41xx/common/icu.c
7245 +++ b/arch/mips/vr41xx/common/icu.c
7246 @@ -653,7 +653,7 @@ static int icu_get_irq(unsigned int irq)
7247
7248 printk(KERN_ERR "spurious ICU interrupt: %04x,%04x\n", pend1, pend2);
7249
7250 - atomic_inc(&irq_err_count);
7251 + atomic_inc_unchecked(&irq_err_count);
7252
7253 return -1;
7254 }
7255 diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c
7256 index ae0e4ee..e8f0692 100644
7257 --- a/arch/mips/vr41xx/common/irq.c
7258 +++ b/arch/mips/vr41xx/common/irq.c
7259 @@ -64,7 +64,7 @@ static void irq_dispatch(unsigned int irq)
7260 irq_cascade_t *cascade;
7261
7262 if (irq >= NR_IRQS) {
7263 - atomic_inc(&irq_err_count);
7264 + atomic_inc_unchecked(&irq_err_count);
7265 return;
7266 }
7267
7268 @@ -84,7 +84,7 @@ static void irq_dispatch(unsigned int irq)
7269 ret = cascade->get_irq(irq);
7270 irq = ret;
7271 if (ret < 0)
7272 - atomic_inc(&irq_err_count);
7273 + atomic_inc_unchecked(&irq_err_count);
7274 else
7275 irq_dispatch(irq);
7276 if (!irqd_irq_disabled(idata) && chip->irq_unmask)
7277 diff --git a/arch/mn10300/proc-mn103e010/include/proc/cache.h b/arch/mn10300/proc-mn103e010/include/proc/cache.h
7278 index 967d144..db12197 100644
7279 --- a/arch/mn10300/proc-mn103e010/include/proc/cache.h
7280 +++ b/arch/mn10300/proc-mn103e010/include/proc/cache.h
7281 @@ -11,12 +11,14 @@
7282 #ifndef _ASM_PROC_CACHE_H
7283 #define _ASM_PROC_CACHE_H
7284
7285 +#include <linux/const.h>
7286 +
7287 /* L1 cache */
7288
7289 #define L1_CACHE_NWAYS 4 /* number of ways in caches */
7290 #define L1_CACHE_NENTRIES 256 /* number of entries in each way */
7291 -#define L1_CACHE_BYTES 16 /* bytes per entry */
7292 #define L1_CACHE_SHIFT 4 /* shift for bytes per entry */
7293 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT) /* bytes per entry */
7294 #define L1_CACHE_WAYDISP 0x1000 /* displacement of one way from the next */
7295
7296 #define L1_CACHE_TAG_VALID 0x00000001 /* cache tag valid bit */
7297 diff --git a/arch/mn10300/proc-mn2ws0050/include/proc/cache.h b/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
7298 index bcb5df2..84fabd2 100644
7299 --- a/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
7300 +++ b/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
7301 @@ -16,13 +16,15 @@
7302 #ifndef _ASM_PROC_CACHE_H
7303 #define _ASM_PROC_CACHE_H
7304
7305 +#include <linux/const.h>
7306 +
7307 /*
7308 * L1 cache
7309 */
7310 #define L1_CACHE_NWAYS 4 /* number of ways in caches */
7311 #define L1_CACHE_NENTRIES 128 /* number of entries in each way */
7312 -#define L1_CACHE_BYTES 32 /* bytes per entry */
7313 #define L1_CACHE_SHIFT 5 /* shift for bytes per entry */
7314 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT) /* bytes per entry */
7315 #define L1_CACHE_WAYDISP 0x1000 /* distance from one way to the next */
7316
7317 #define L1_CACHE_TAG_VALID 0x00000001 /* cache tag valid bit */
7318 diff --git a/arch/openrisc/include/asm/cache.h b/arch/openrisc/include/asm/cache.h
7319 index 4ce7a01..449202a 100644
7320 --- a/arch/openrisc/include/asm/cache.h
7321 +++ b/arch/openrisc/include/asm/cache.h
7322 @@ -19,11 +19,13 @@
7323 #ifndef __ASM_OPENRISC_CACHE_H
7324 #define __ASM_OPENRISC_CACHE_H
7325
7326 +#include <linux/const.h>
7327 +
7328 /* FIXME: How can we replace these with values from the CPU...
7329 * they shouldn't be hard-coded!
7330 */
7331
7332 -#define L1_CACHE_BYTES 16
7333 #define L1_CACHE_SHIFT 4
7334 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
7335
7336 #endif /* __ASM_OPENRISC_CACHE_H */
7337 diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h
7338 index 226f8ca9..9d9b87d 100644
7339 --- a/arch/parisc/include/asm/atomic.h
7340 +++ b/arch/parisc/include/asm/atomic.h
7341 @@ -273,6 +273,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
7342 return dec;
7343 }
7344
7345 +#define atomic64_read_unchecked(v) atomic64_read(v)
7346 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
7347 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
7348 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
7349 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
7350 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
7351 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
7352 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
7353 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
7354 +
7355 #endif /* !CONFIG_64BIT */
7356
7357
7358 diff --git a/arch/parisc/include/asm/cache.h b/arch/parisc/include/asm/cache.h
7359 index 47f11c7..3420df2 100644
7360 --- a/arch/parisc/include/asm/cache.h
7361 +++ b/arch/parisc/include/asm/cache.h
7362 @@ -5,6 +5,7 @@
7363 #ifndef __ARCH_PARISC_CACHE_H
7364 #define __ARCH_PARISC_CACHE_H
7365
7366 +#include <linux/const.h>
7367
7368 /*
7369 * PA 2.0 processors have 64-byte cachelines; PA 1.1 processors have
7370 @@ -15,13 +16,13 @@
7371 * just ruin performance.
7372 */
7373 #ifdef CONFIG_PA20
7374 -#define L1_CACHE_BYTES 64
7375 #define L1_CACHE_SHIFT 6
7376 #else
7377 -#define L1_CACHE_BYTES 32
7378 #define L1_CACHE_SHIFT 5
7379 #endif
7380
7381 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
7382 +
7383 #ifndef __ASSEMBLY__
7384
7385 #define SMP_CACHE_BYTES L1_CACHE_BYTES
7386 diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
7387 index 78c9fd3..42fa66a 100644
7388 --- a/arch/parisc/include/asm/elf.h
7389 +++ b/arch/parisc/include/asm/elf.h
7390 @@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration... */
7391
7392 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
7393
7394 +#ifdef CONFIG_PAX_ASLR
7395 +#define PAX_ELF_ET_DYN_BASE 0x10000UL
7396 +
7397 +#define PAX_DELTA_MMAP_LEN 16
7398 +#define PAX_DELTA_STACK_LEN 16
7399 +#endif
7400 +
7401 /* This yields a mask that user programs can use to figure out what
7402 instruction set this CPU supports. This could be done in user space,
7403 but it's not easy, and we've already done it here. */
7404 diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h
7405 index 3edbb9f..08fef28 100644
7406 --- a/arch/parisc/include/asm/pgalloc.h
7407 +++ b/arch/parisc/include/asm/pgalloc.h
7408 @@ -61,6 +61,11 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd)
7409 (__u32)(__pa((unsigned long)pmd) >> PxD_VALUE_SHIFT));
7410 }
7411
7412 +static inline void pgd_populate_kernel(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd)
7413 +{
7414 + pgd_populate(mm, pgd, pmd);
7415 +}
7416 +
7417 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
7418 {
7419 pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL|__GFP_REPEAT,
7420 @@ -97,6 +102,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
7421 #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); })
7422 #define pmd_free(mm, x) do { } while (0)
7423 #define pgd_populate(mm, pmd, pte) BUG()
7424 +#define pgd_populate_kernel(mm, pmd, pte) BUG()
7425
7426 #endif
7427
7428 diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h
7429 index f93c4a4..cfd5663 100644
7430 --- a/arch/parisc/include/asm/pgtable.h
7431 +++ b/arch/parisc/include/asm/pgtable.h
7432 @@ -231,6 +231,17 @@ static inline void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
7433 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
7434 #define PAGE_COPY PAGE_EXECREAD
7435 #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED)
7436 +
7437 +#ifdef CONFIG_PAX_PAGEEXEC
7438 +# define PAGE_SHARED_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_ACCESSED)
7439 +# define PAGE_COPY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_ACCESSED)
7440 +# define PAGE_READONLY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_ACCESSED)
7441 +#else
7442 +# define PAGE_SHARED_NOEXEC PAGE_SHARED
7443 +# define PAGE_COPY_NOEXEC PAGE_COPY
7444 +# define PAGE_READONLY_NOEXEC PAGE_READONLY
7445 +#endif
7446 +
7447 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
7448 #define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL_EXEC)
7449 #define PAGE_KERNEL_RWX __pgprot(_PAGE_KERNEL_RWX)
7450 diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
7451 index 0abdd4c..1af92f0 100644
7452 --- a/arch/parisc/include/asm/uaccess.h
7453 +++ b/arch/parisc/include/asm/uaccess.h
7454 @@ -243,10 +243,10 @@ static inline unsigned long __must_check copy_from_user(void *to,
7455 const void __user *from,
7456 unsigned long n)
7457 {
7458 - int sz = __compiletime_object_size(to);
7459 + size_t sz = __compiletime_object_size(to);
7460 int ret = -EFAULT;
7461
7462 - if (likely(sz == -1 || !__builtin_constant_p(n) || sz >= n))
7463 + if (likely(sz == (size_t)-1 || !__builtin_constant_p(n) || sz >= n))
7464 ret = __copy_from_user(to, from, n);
7465 else
7466 copy_from_user_overflow();
7467 diff --git a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c
7468 index 3c63a82..b1d6ee9 100644
7469 --- a/arch/parisc/kernel/module.c
7470 +++ b/arch/parisc/kernel/module.c
7471 @@ -98,16 +98,38 @@
7472
7473 /* three functions to determine where in the module core
7474 * or init pieces the location is */
7475 +static inline int in_init_rx(struct module *me, void *loc)
7476 +{
7477 + return (loc >= me->module_init_rx &&
7478 + loc < (me->module_init_rx + me->init_size_rx));
7479 +}
7480 +
7481 +static inline int in_init_rw(struct module *me, void *loc)
7482 +{
7483 + return (loc >= me->module_init_rw &&
7484 + loc < (me->module_init_rw + me->init_size_rw));
7485 +}
7486 +
7487 static inline int in_init(struct module *me, void *loc)
7488 {
7489 - return (loc >= me->module_init &&
7490 - loc <= (me->module_init + me->init_size));
7491 + return in_init_rx(me, loc) || in_init_rw(me, loc);
7492 +}
7493 +
7494 +static inline int in_core_rx(struct module *me, void *loc)
7495 +{
7496 + return (loc >= me->module_core_rx &&
7497 + loc < (me->module_core_rx + me->core_size_rx));
7498 +}
7499 +
7500 +static inline int in_core_rw(struct module *me, void *loc)
7501 +{
7502 + return (loc >= me->module_core_rw &&
7503 + loc < (me->module_core_rw + me->core_size_rw));
7504 }
7505
7506 static inline int in_core(struct module *me, void *loc)
7507 {
7508 - return (loc >= me->module_core &&
7509 - loc <= (me->module_core + me->core_size));
7510 + return in_core_rx(me, loc) || in_core_rw(me, loc);
7511 }
7512
7513 static inline int in_local(struct module *me, void *loc)
7514 @@ -367,13 +389,13 @@ int module_frob_arch_sections(CONST Elf_Ehdr *hdr,
7515 }
7516
7517 /* align things a bit */
7518 - me->core_size = ALIGN(me->core_size, 16);
7519 - me->arch.got_offset = me->core_size;
7520 - me->core_size += gots * sizeof(struct got_entry);
7521 + me->core_size_rw = ALIGN(me->core_size_rw, 16);
7522 + me->arch.got_offset = me->core_size_rw;
7523 + me->core_size_rw += gots * sizeof(struct got_entry);
7524
7525 - me->core_size = ALIGN(me->core_size, 16);
7526 - me->arch.fdesc_offset = me->core_size;
7527 - me->core_size += fdescs * sizeof(Elf_Fdesc);
7528 + me->core_size_rw = ALIGN(me->core_size_rw, 16);
7529 + me->arch.fdesc_offset = me->core_size_rw;
7530 + me->core_size_rw += fdescs * sizeof(Elf_Fdesc);
7531
7532 me->arch.got_max = gots;
7533 me->arch.fdesc_max = fdescs;
7534 @@ -391,7 +413,7 @@ static Elf64_Word get_got(struct module *me, unsigned long value, long addend)
7535
7536 BUG_ON(value == 0);
7537
7538 - got = me->module_core + me->arch.got_offset;
7539 + got = me->module_core_rw + me->arch.got_offset;
7540 for (i = 0; got[i].addr; i++)
7541 if (got[i].addr == value)
7542 goto out;
7543 @@ -409,7 +431,7 @@ static Elf64_Word get_got(struct module *me, unsigned long value, long addend)
7544 #ifdef CONFIG_64BIT
7545 static Elf_Addr get_fdesc(struct module *me, unsigned long value)
7546 {
7547 - Elf_Fdesc *fdesc = me->module_core + me->arch.fdesc_offset;
7548 + Elf_Fdesc *fdesc = me->module_core_rw + me->arch.fdesc_offset;
7549
7550 if (!value) {
7551 printk(KERN_ERR "%s: zero OPD requested!\n", me->name);
7552 @@ -427,7 +449,7 @@ static Elf_Addr get_fdesc(struct module *me, unsigned long value)
7553
7554 /* Create new one */
7555 fdesc->addr = value;
7556 - fdesc->gp = (Elf_Addr)me->module_core + me->arch.got_offset;
7557 + fdesc->gp = (Elf_Addr)me->module_core_rw + me->arch.got_offset;
7558 return (Elf_Addr)fdesc;
7559 }
7560 #endif /* CONFIG_64BIT */
7561 @@ -839,7 +861,7 @@ register_unwind_table(struct module *me,
7562
7563 table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr;
7564 end = table + sechdrs[me->arch.unwind_section].sh_size;
7565 - gp = (Elf_Addr)me->module_core + me->arch.got_offset;
7566 + gp = (Elf_Addr)me->module_core_rw + me->arch.got_offset;
7567
7568 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
7569 me->arch.unwind_section, table, end, gp);
7570 diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
7571 index 5aba01a..47cdd5a 100644
7572 --- a/arch/parisc/kernel/sys_parisc.c
7573 +++ b/arch/parisc/kernel/sys_parisc.c
7574 @@ -92,6 +92,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7575 unsigned long task_size = TASK_SIZE;
7576 int do_color_align, last_mmap;
7577 struct vm_unmapped_area_info info;
7578 + unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
7579
7580 if (len > task_size)
7581 return -ENOMEM;
7582 @@ -109,6 +110,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7583 goto found_addr;
7584 }
7585
7586 +#ifdef CONFIG_PAX_RANDMMAP
7587 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
7588 +#endif
7589 +
7590 if (addr) {
7591 if (do_color_align && last_mmap)
7592 addr = COLOR_ALIGN(addr, last_mmap, pgoff);
7593 @@ -127,6 +132,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7594 info.high_limit = mmap_upper_limit();
7595 info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0;
7596 info.align_offset = shared_align_offset(last_mmap, pgoff);
7597 + info.threadstack_offset = offset;
7598 addr = vm_unmapped_area(&info);
7599
7600 found_addr:
7601 @@ -146,6 +152,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7602 unsigned long addr = addr0;
7603 int do_color_align, last_mmap;
7604 struct vm_unmapped_area_info info;
7605 + unsigned long offset = gr_rand_threadstack_offset(current->mm, filp, flags);
7606
7607 #ifdef CONFIG_64BIT
7608 /* This should only ever run for 32-bit processes. */
7609 @@ -170,6 +177,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7610 }
7611
7612 /* requesting a specific address */
7613 +#ifdef CONFIG_PAX_RANDMMAP
7614 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
7615 +#endif
7616 +
7617 if (addr) {
7618 if (do_color_align && last_mmap)
7619 addr = COLOR_ALIGN(addr, last_mmap, pgoff);
7620 @@ -187,6 +198,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
7621 info.high_limit = mm->mmap_base;
7622 info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0;
7623 info.align_offset = shared_align_offset(last_mmap, pgoff);
7624 + info.threadstack_offset = offset;
7625 addr = vm_unmapped_area(&info);
7626 if (!(addr & ~PAGE_MASK))
7627 goto found_addr;
7628 @@ -252,6 +264,13 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
7629 mm->mmap_legacy_base = mmap_legacy_base();
7630 mm->mmap_base = mmap_upper_limit();
7631
7632 +#ifdef CONFIG_PAX_RANDMMAP
7633 + if (mm->pax_flags & MF_PAX_RANDMMAP) {
7634 + mm->mmap_legacy_base += mm->delta_mmap;
7635 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
7636 + }
7637 +#endif
7638 +
7639 if (mmap_is_legacy()) {
7640 mm->mmap_base = mm->mmap_legacy_base;
7641 mm->get_unmapped_area = arch_get_unmapped_area;
7642 diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
7643 index b99b39f..e3915ae 100644
7644 --- a/arch/parisc/kernel/traps.c
7645 +++ b/arch/parisc/kernel/traps.c
7646 @@ -722,9 +722,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
7647
7648 down_read(&current->mm->mmap_sem);
7649 vma = find_vma(current->mm,regs->iaoq[0]);
7650 - if (vma && (regs->iaoq[0] >= vma->vm_start)
7651 - && (vma->vm_flags & VM_EXEC)) {
7652 -
7653 + if (vma && (regs->iaoq[0] >= vma->vm_start)) {
7654 fault_address = regs->iaoq[0];
7655 fault_space = regs->iasq[0];
7656
7657 diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
7658 index 15503ad..4b1b8b6 100644
7659 --- a/arch/parisc/mm/fault.c
7660 +++ b/arch/parisc/mm/fault.c
7661 @@ -16,6 +16,7 @@
7662 #include <linux/interrupt.h>
7663 #include <linux/module.h>
7664 #include <linux/uaccess.h>
7665 +#include <linux/unistd.h>
7666
7667 #include <asm/traps.h>
7668
7669 @@ -50,7 +51,7 @@ int show_unhandled_signals = 1;
7670 static unsigned long
7671 parisc_acctyp(unsigned long code, unsigned int inst)
7672 {
7673 - if (code == 6 || code == 16)
7674 + if (code == 6 || code == 7 || code == 16)
7675 return VM_EXEC;
7676
7677 switch (inst & 0xf0000000) {
7678 @@ -136,6 +137,116 @@ parisc_acctyp(unsigned long code, unsigned int inst)
7679 }
7680 #endif
7681
7682 +#ifdef CONFIG_PAX_PAGEEXEC
7683 +/*
7684 + * PaX: decide what to do with offenders (instruction_pointer(regs) = fault address)
7685 + *
7686 + * returns 1 when task should be killed
7687 + * 2 when rt_sigreturn trampoline was detected
7688 + * 3 when unpatched PLT trampoline was detected
7689 + */
7690 +static int pax_handle_fetch_fault(struct pt_regs *regs)
7691 +{
7692 +
7693 +#ifdef CONFIG_PAX_EMUPLT
7694 + int err;
7695 +
7696 + do { /* PaX: unpatched PLT emulation */
7697 + unsigned int bl, depwi;
7698 +
7699 + err = get_user(bl, (unsigned int *)instruction_pointer(regs));
7700 + err |= get_user(depwi, (unsigned int *)(instruction_pointer(regs)+4));
7701 +
7702 + if (err)
7703 + break;
7704 +
7705 + if (bl == 0xEA9F1FDDU && depwi == 0xD6801C1EU) {
7706 + unsigned int ldw, bv, ldw2, addr = instruction_pointer(regs)-12;
7707 +
7708 + err = get_user(ldw, (unsigned int *)addr);
7709 + err |= get_user(bv, (unsigned int *)(addr+4));
7710 + err |= get_user(ldw2, (unsigned int *)(addr+8));
7711 +
7712 + if (err)
7713 + break;
7714 +
7715 + if (ldw == 0x0E801096U &&
7716 + bv == 0xEAC0C000U &&
7717 + ldw2 == 0x0E881095U)
7718 + {
7719 + unsigned int resolver, map;
7720 +
7721 + err = get_user(resolver, (unsigned int *)(instruction_pointer(regs)+8));
7722 + err |= get_user(map, (unsigned int *)(instruction_pointer(regs)+12));
7723 + if (err)
7724 + break;
7725 +
7726 + regs->gr[20] = instruction_pointer(regs)+8;
7727 + regs->gr[21] = map;
7728 + regs->gr[22] = resolver;
7729 + regs->iaoq[0] = resolver | 3UL;
7730 + regs->iaoq[1] = regs->iaoq[0] + 4;
7731 + return 3;
7732 + }
7733 + }
7734 + } while (0);
7735 +#endif
7736 +
7737 +#ifdef CONFIG_PAX_EMUTRAMP
7738 +
7739 +#ifndef CONFIG_PAX_EMUSIGRT
7740 + if (!(current->mm->pax_flags & MF_PAX_EMUTRAMP))
7741 + return 1;
7742 +#endif
7743 +
7744 + do { /* PaX: rt_sigreturn emulation */
7745 + unsigned int ldi1, ldi2, bel, nop;
7746 +
7747 + err = get_user(ldi1, (unsigned int *)instruction_pointer(regs));
7748 + err |= get_user(ldi2, (unsigned int *)(instruction_pointer(regs)+4));
7749 + err |= get_user(bel, (unsigned int *)(instruction_pointer(regs)+8));
7750 + err |= get_user(nop, (unsigned int *)(instruction_pointer(regs)+12));
7751 +
7752 + if (err)
7753 + break;
7754 +
7755 + if ((ldi1 == 0x34190000U || ldi1 == 0x34190002U) &&
7756 + ldi2 == 0x3414015AU &&
7757 + bel == 0xE4008200U &&
7758 + nop == 0x08000240U)
7759 + {
7760 + regs->gr[25] = (ldi1 & 2) >> 1;
7761 + regs->gr[20] = __NR_rt_sigreturn;
7762 + regs->gr[31] = regs->iaoq[1] + 16;
7763 + regs->sr[0] = regs->iasq[1];
7764 + regs->iaoq[0] = 0x100UL;
7765 + regs->iaoq[1] = regs->iaoq[0] + 4;
7766 + regs->iasq[0] = regs->sr[2];
7767 + regs->iasq[1] = regs->sr[2];
7768 + return 2;
7769 + }
7770 + } while (0);
7771 +#endif
7772 +
7773 + return 1;
7774 +}
7775 +
7776 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
7777 +{
7778 + unsigned long i;
7779 +
7780 + printk(KERN_ERR "PAX: bytes at PC: ");
7781 + for (i = 0; i < 5; i++) {
7782 + unsigned int c;
7783 + if (get_user(c, (unsigned int *)pc+i))
7784 + printk(KERN_CONT "???????? ");
7785 + else
7786 + printk(KERN_CONT "%08x ", c);
7787 + }
7788 + printk("\n");
7789 +}
7790 +#endif
7791 +
7792 int fixup_exception(struct pt_regs *regs)
7793 {
7794 const struct exception_table_entry *fix;
7795 @@ -234,8 +345,33 @@ retry:
7796
7797 good_area:
7798
7799 - if ((vma->vm_flags & acc_type) != acc_type)
7800 + if ((vma->vm_flags & acc_type) != acc_type) {
7801 +
7802 +#ifdef CONFIG_PAX_PAGEEXEC
7803 + if ((mm->pax_flags & MF_PAX_PAGEEXEC) && (acc_type & VM_EXEC) &&
7804 + (address & ~3UL) == instruction_pointer(regs))
7805 + {
7806 + up_read(&mm->mmap_sem);
7807 + switch (pax_handle_fetch_fault(regs)) {
7808 +
7809 +#ifdef CONFIG_PAX_EMUPLT
7810 + case 3:
7811 + return;
7812 +#endif
7813 +
7814 +#ifdef CONFIG_PAX_EMUTRAMP
7815 + case 2:
7816 + return;
7817 +#endif
7818 +
7819 + }
7820 + pax_report_fault(regs, (void *)instruction_pointer(regs), (void *)regs->gr[30]);
7821 + do_group_exit(SIGKILL);
7822 + }
7823 +#endif
7824 +
7825 goto bad_area;
7826 + }
7827
7828 /*
7829 * If for any reason at all we couldn't handle the fault, make
7830 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
7831 index 5ef2711..21be2c3 100644
7832 --- a/arch/powerpc/Kconfig
7833 +++ b/arch/powerpc/Kconfig
7834 @@ -415,6 +415,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
7835 config KEXEC
7836 bool "kexec system call"
7837 depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
7838 + depends on !GRKERNSEC_KMEM
7839 help
7840 kexec is a system call that implements the ability to shutdown your
7841 current kernel, and to start another kernel. It is like a reboot
7842 diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h
7843 index 512d278..d31fadd 100644
7844 --- a/arch/powerpc/include/asm/atomic.h
7845 +++ b/arch/powerpc/include/asm/atomic.h
7846 @@ -12,6 +12,11 @@
7847
7848 #define ATOMIC_INIT(i) { (i) }
7849
7850 +#define _ASM_EXTABLE(from, to) \
7851 +" .section __ex_table,\"a\"\n" \
7852 + PPC_LONG" " #from ", " #to"\n" \
7853 +" .previous\n"
7854 +
7855 static __inline__ int atomic_read(const atomic_t *v)
7856 {
7857 int t;
7858 @@ -21,39 +26,80 @@ static __inline__ int atomic_read(const atomic_t *v)
7859 return t;
7860 }
7861
7862 +static __inline__ int atomic_read_unchecked(const atomic_unchecked_t *v)
7863 +{
7864 + int t;
7865 +
7866 + __asm__ __volatile__("lwz%U1%X1 %0,%1" : "=r"(t) : "m"(v->counter));
7867 +
7868 + return t;
7869 +}
7870 +
7871 static __inline__ void atomic_set(atomic_t *v, int i)
7872 {
7873 __asm__ __volatile__("stw%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
7874 }
7875
7876 -#define ATOMIC_OP(op, asm_op) \
7877 -static __inline__ void atomic_##op(int a, atomic_t *v) \
7878 +static __inline__ void atomic_set_unchecked(atomic_unchecked_t *v, int i)
7879 +{
7880 + __asm__ __volatile__("stw%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
7881 +}
7882 +
7883 +#ifdef CONFIG_PAX_REFCOUNT
7884 +#define __REFCOUNT_OP(op) op##o.
7885 +#define __OVERFLOW_PRE \
7886 + " mcrxr cr0\n"
7887 +#define __OVERFLOW_POST \
7888 + " bf 4*cr0+so, 3f\n" \
7889 + "2: .long 0x00c00b00\n" \
7890 + "3:\n"
7891 +#define __OVERFLOW_EXTABLE \
7892 + "\n4:\n"
7893 + _ASM_EXTABLE(2b, 4b)
7894 +#else
7895 +#define __REFCOUNT_OP(op) op
7896 +#define __OVERFLOW_PRE
7897 +#define __OVERFLOW_POST
7898 +#define __OVERFLOW_EXTABLE
7899 +#endif
7900 +
7901 +#define __ATOMIC_OP(op, suffix, pre_op, asm_op, post_op, extable) \
7902 +static inline void atomic_##op##suffix(int a, atomic##suffix##_t *v) \
7903 { \
7904 int t; \
7905 \
7906 __asm__ __volatile__( \
7907 -"1: lwarx %0,0,%3 # atomic_" #op "\n" \
7908 +"1: lwarx %0,0,%3 # atomic_" #op #suffix "\n" \
7909 + pre_op \
7910 #asm_op " %0,%2,%0\n" \
7911 + post_op \
7912 PPC405_ERR77(0,%3) \
7913 " stwcx. %0,0,%3 \n" \
7914 " bne- 1b\n" \
7915 + extable \
7916 : "=&r" (t), "+m" (v->counter) \
7917 : "r" (a), "r" (&v->counter) \
7918 : "cc"); \
7919 } \
7920
7921 -#define ATOMIC_OP_RETURN(op, asm_op) \
7922 -static __inline__ int atomic_##op##_return(int a, atomic_t *v) \
7923 +#define ATOMIC_OP(op, asm_op) __ATOMIC_OP(op, , , asm_op, , ) \
7924 + __ATOMIC_OP(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
7925 +
7926 +#define __ATOMIC_OP_RETURN(op, suffix, pre_op, asm_op, post_op, extable)\
7927 +static inline int atomic_##op##_return##suffix(int a, atomic##suffix##_t *v)\
7928 { \
7929 int t; \
7930 \
7931 __asm__ __volatile__( \
7932 PPC_ATOMIC_ENTRY_BARRIER \
7933 -"1: lwarx %0,0,%2 # atomic_" #op "_return\n" \
7934 +"1: lwarx %0,0,%2 # atomic_" #op "_return" #suffix "\n" \
7935 + pre_op \
7936 #asm_op " %0,%1,%0\n" \
7937 + post_op \
7938 PPC405_ERR77(0,%2) \
7939 " stwcx. %0,0,%2 \n" \
7940 " bne- 1b\n" \
7941 + extable \
7942 PPC_ATOMIC_EXIT_BARRIER \
7943 : "=&r" (t) \
7944 : "r" (a), "r" (&v->counter) \
7945 @@ -62,6 +108,9 @@ static __inline__ int atomic_##op##_return(int a, atomic_t *v) \
7946 return t; \
7947 }
7948
7949 +#define ATOMIC_OP_RETURN(op, asm_op) __ATOMIC_OP_RETURN(op, , , asm_op, , )\
7950 + __ATOMIC_OP_RETURN(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
7951 +
7952 #define ATOMIC_OPS(op, asm_op) ATOMIC_OP(op, asm_op) ATOMIC_OP_RETURN(op, asm_op)
7953
7954 ATOMIC_OPS(add, add)
7955 @@ -69,42 +118,29 @@ ATOMIC_OPS(sub, subf)
7956
7957 #undef ATOMIC_OPS
7958 #undef ATOMIC_OP_RETURN
7959 +#undef __ATOMIC_OP_RETURN
7960 #undef ATOMIC_OP
7961 +#undef __ATOMIC_OP
7962
7963 #define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
7964
7965 -static __inline__ void atomic_inc(atomic_t *v)
7966 -{
7967 - int t;
7968 +/*
7969 + * atomic_inc - increment atomic variable
7970 + * @v: pointer of type atomic_t
7971 + *
7972 + * Automatically increments @v by 1
7973 + */
7974 +#define atomic_inc(v) atomic_add(1, (v))
7975 +#define atomic_inc_return(v) atomic_add_return(1, (v))
7976
7977 - __asm__ __volatile__(
7978 -"1: lwarx %0,0,%2 # atomic_inc\n\
7979 - addic %0,%0,1\n"
7980 - PPC405_ERR77(0,%2)
7981 -" stwcx. %0,0,%2 \n\
7982 - bne- 1b"
7983 - : "=&r" (t), "+m" (v->counter)
7984 - : "r" (&v->counter)
7985 - : "cc", "xer");
7986 +static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
7987 +{
7988 + atomic_add_unchecked(1, v);
7989 }
7990
7991 -static __inline__ int atomic_inc_return(atomic_t *v)
7992 +static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
7993 {
7994 - int t;
7995 -
7996 - __asm__ __volatile__(
7997 - PPC_ATOMIC_ENTRY_BARRIER
7998 -"1: lwarx %0,0,%1 # atomic_inc_return\n\
7999 - addic %0,%0,1\n"
8000 - PPC405_ERR77(0,%1)
8001 -" stwcx. %0,0,%1 \n\
8002 - bne- 1b"
8003 - PPC_ATOMIC_EXIT_BARRIER
8004 - : "=&r" (t)
8005 - : "r" (&v->counter)
8006 - : "cc", "xer", "memory");
8007 -
8008 - return t;
8009 + return atomic_add_return_unchecked(1, v);
8010 }
8011
8012 /*
8013 @@ -117,43 +153,38 @@ static __inline__ int atomic_inc_return(atomic_t *v)
8014 */
8015 #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
8016
8017 -static __inline__ void atomic_dec(atomic_t *v)
8018 +static __inline__ int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
8019 {
8020 - int t;
8021 -
8022 - __asm__ __volatile__(
8023 -"1: lwarx %0,0,%2 # atomic_dec\n\
8024 - addic %0,%0,-1\n"
8025 - PPC405_ERR77(0,%2)\
8026 -" stwcx. %0,0,%2\n\
8027 - bne- 1b"
8028 - : "=&r" (t), "+m" (v->counter)
8029 - : "r" (&v->counter)
8030 - : "cc", "xer");
8031 + return atomic_add_return_unchecked(1, v) == 0;
8032 }
8033
8034 -static __inline__ int atomic_dec_return(atomic_t *v)
8035 +/*
8036 + * atomic_dec - decrement atomic variable
8037 + * @v: pointer of type atomic_t
8038 + *
8039 + * Atomically decrements @v by 1
8040 + */
8041 +#define atomic_dec(v) atomic_sub(1, (v))
8042 +#define atomic_dec_return(v) atomic_sub_return(1, (v))
8043 +
8044 +static __inline__ void atomic_dec_unchecked(atomic_unchecked_t *v)
8045 {
8046 - int t;
8047 -
8048 - __asm__ __volatile__(
8049 - PPC_ATOMIC_ENTRY_BARRIER
8050 -"1: lwarx %0,0,%1 # atomic_dec_return\n\
8051 - addic %0,%0,-1\n"
8052 - PPC405_ERR77(0,%1)
8053 -" stwcx. %0,0,%1\n\
8054 - bne- 1b"
8055 - PPC_ATOMIC_EXIT_BARRIER
8056 - : "=&r" (t)
8057 - : "r" (&v->counter)
8058 - : "cc", "xer", "memory");
8059 -
8060 - return t;
8061 + atomic_sub_unchecked(1, v);
8062 }
8063
8064 #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
8065 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
8066
8067 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
8068 +{
8069 + return cmpxchg(&(v->counter), old, new);
8070 +}
8071 +
8072 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
8073 +{
8074 + return xchg(&(v->counter), new);
8075 +}
8076 +
8077 /**
8078 * __atomic_add_unless - add unless the number is a given value
8079 * @v: pointer of type atomic_t
8080 @@ -171,11 +202,27 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
8081 PPC_ATOMIC_ENTRY_BARRIER
8082 "1: lwarx %0,0,%1 # __atomic_add_unless\n\
8083 cmpw 0,%0,%3 \n\
8084 - beq- 2f \n\
8085 - add %0,%2,%0 \n"
8086 + beq- 2f \n"
8087 +
8088 +#ifdef CONFIG_PAX_REFCOUNT
8089 +" mcrxr cr0\n"
8090 +" addo. %0,%2,%0\n"
8091 +" bf 4*cr0+so, 4f\n"
8092 +"3:.long " "0x00c00b00""\n"
8093 +"4:\n"
8094 +#else
8095 + "add %0,%2,%0 \n"
8096 +#endif
8097 +
8098 PPC405_ERR77(0,%2)
8099 " stwcx. %0,0,%1 \n\
8100 bne- 1b \n"
8101 +"5:"
8102 +
8103 +#ifdef CONFIG_PAX_REFCOUNT
8104 + _ASM_EXTABLE(3b, 5b)
8105 +#endif
8106 +
8107 PPC_ATOMIC_EXIT_BARRIER
8108 " subf %0,%2,%0 \n\
8109 2:"
8110 @@ -248,6 +295,11 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
8111 }
8112 #define atomic_dec_if_positive atomic_dec_if_positive
8113
8114 +#define smp_mb__before_atomic_dec() smp_mb()
8115 +#define smp_mb__after_atomic_dec() smp_mb()
8116 +#define smp_mb__before_atomic_inc() smp_mb()
8117 +#define smp_mb__after_atomic_inc() smp_mb()
8118 +
8119 #ifdef __powerpc64__
8120
8121 #define ATOMIC64_INIT(i) { (i) }
8122 @@ -261,37 +313,60 @@ static __inline__ long atomic64_read(const atomic64_t *v)
8123 return t;
8124 }
8125
8126 +static __inline__ long atomic64_read_unchecked(const atomic64_unchecked_t *v)
8127 +{
8128 + long t;
8129 +
8130 + __asm__ __volatile__("ld%U1%X1 %0,%1" : "=r"(t) : "m"(v->counter));
8131 +
8132 + return t;
8133 +}
8134 +
8135 static __inline__ void atomic64_set(atomic64_t *v, long i)
8136 {
8137 __asm__ __volatile__("std%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
8138 }
8139
8140 -#define ATOMIC64_OP(op, asm_op) \
8141 -static __inline__ void atomic64_##op(long a, atomic64_t *v) \
8142 +static __inline__ void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
8143 +{
8144 + __asm__ __volatile__("std%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
8145 +}
8146 +
8147 +#define __ATOMIC64_OP(op, suffix, pre_op, asm_op, post_op, extable) \
8148 +static inline void atomic64_##op##suffix(long a, atomic64##suffix##_t *v)\
8149 { \
8150 long t; \
8151 \
8152 __asm__ __volatile__( \
8153 "1: ldarx %0,0,%3 # atomic64_" #op "\n" \
8154 + pre_op \
8155 #asm_op " %0,%2,%0\n" \
8156 + post_op \
8157 " stdcx. %0,0,%3 \n" \
8158 " bne- 1b\n" \
8159 + extable \
8160 : "=&r" (t), "+m" (v->counter) \
8161 : "r" (a), "r" (&v->counter) \
8162 : "cc"); \
8163 }
8164
8165 -#define ATOMIC64_OP_RETURN(op, asm_op) \
8166 -static __inline__ long atomic64_##op##_return(long a, atomic64_t *v) \
8167 +#define ATOMIC64_OP(op, asm_op) __ATOMIC64_OP(op, , , asm_op, , ) \
8168 + __ATOMIC64_OP(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
8169 +
8170 +#define __ATOMIC64_OP_RETURN(op, suffix, pre_op, asm_op, post_op, extable)\
8171 +static inline long atomic64_##op##_return##suffix(long a, atomic64##suffix##_t *v)\
8172 { \
8173 long t; \
8174 \
8175 __asm__ __volatile__( \
8176 PPC_ATOMIC_ENTRY_BARRIER \
8177 "1: ldarx %0,0,%2 # atomic64_" #op "_return\n" \
8178 + pre_op \
8179 #asm_op " %0,%1,%0\n" \
8180 + post_op \
8181 " stdcx. %0,0,%2 \n" \
8182 " bne- 1b\n" \
8183 + extable \
8184 PPC_ATOMIC_EXIT_BARRIER \
8185 : "=&r" (t) \
8186 : "r" (a), "r" (&v->counter) \
8187 @@ -300,6 +375,9 @@ static __inline__ long atomic64_##op##_return(long a, atomic64_t *v) \
8188 return t; \
8189 }
8190
8191 +#define ATOMIC64_OP_RETURN(op, asm_op) __ATOMIC64_OP_RETURN(op, , , asm_op, , )\
8192 + __ATOMIC64_OP_RETURN(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
8193 +
8194 #define ATOMIC64_OPS(op, asm_op) ATOMIC64_OP(op, asm_op) ATOMIC64_OP_RETURN(op, asm_op)
8195
8196 ATOMIC64_OPS(add, add)
8197 @@ -307,40 +385,33 @@ ATOMIC64_OPS(sub, subf)
8198
8199 #undef ATOMIC64_OPS
8200 #undef ATOMIC64_OP_RETURN
8201 +#undef __ATOMIC64_OP_RETURN
8202 #undef ATOMIC64_OP
8203 +#undef __ATOMIC64_OP
8204 +#undef __OVERFLOW_EXTABLE
8205 +#undef __OVERFLOW_POST
8206 +#undef __OVERFLOW_PRE
8207 +#undef __REFCOUNT_OP
8208
8209 #define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0)
8210
8211 -static __inline__ void atomic64_inc(atomic64_t *v)
8212 -{
8213 - long t;
8214 +/*
8215 + * atomic64_inc - increment atomic variable
8216 + * @v: pointer of type atomic64_t
8217 + *
8218 + * Automatically increments @v by 1
8219 + */
8220 +#define atomic64_inc(v) atomic64_add(1, (v))
8221 +#define atomic64_inc_return(v) atomic64_add_return(1, (v))
8222
8223 - __asm__ __volatile__(
8224 -"1: ldarx %0,0,%2 # atomic64_inc\n\
8225 - addic %0,%0,1\n\
8226 - stdcx. %0,0,%2 \n\
8227 - bne- 1b"
8228 - : "=&r" (t), "+m" (v->counter)
8229 - : "r" (&v->counter)
8230 - : "cc", "xer");
8231 +static inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
8232 +{
8233 + atomic64_add_unchecked(1, v);
8234 }
8235
8236 -static __inline__ long atomic64_inc_return(atomic64_t *v)
8237 +static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
8238 {
8239 - long t;
8240 -
8241 - __asm__ __volatile__(
8242 - PPC_ATOMIC_ENTRY_BARRIER
8243 -"1: ldarx %0,0,%1 # atomic64_inc_return\n\
8244 - addic %0,%0,1\n\
8245 - stdcx. %0,0,%1 \n\
8246 - bne- 1b"
8247 - PPC_ATOMIC_EXIT_BARRIER
8248 - : "=&r" (t)
8249 - : "r" (&v->counter)
8250 - : "cc", "xer", "memory");
8251 -
8252 - return t;
8253 + return atomic64_add_return_unchecked(1, v);
8254 }
8255
8256 /*
8257 @@ -353,36 +424,18 @@ static __inline__ long atomic64_inc_return(atomic64_t *v)
8258 */
8259 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
8260
8261 -static __inline__ void atomic64_dec(atomic64_t *v)
8262 +/*
8263 + * atomic64_dec - decrement atomic variable
8264 + * @v: pointer of type atomic64_t
8265 + *
8266 + * Atomically decrements @v by 1
8267 + */
8268 +#define atomic64_dec(v) atomic64_sub(1, (v))
8269 +#define atomic64_dec_return(v) atomic64_sub_return(1, (v))
8270 +
8271 +static __inline__ void atomic64_dec_unchecked(atomic64_unchecked_t *v)
8272 {
8273 - long t;
8274 -
8275 - __asm__ __volatile__(
8276 -"1: ldarx %0,0,%2 # atomic64_dec\n\
8277 - addic %0,%0,-1\n\
8278 - stdcx. %0,0,%2\n\
8279 - bne- 1b"
8280 - : "=&r" (t), "+m" (v->counter)
8281 - : "r" (&v->counter)
8282 - : "cc", "xer");
8283 -}
8284 -
8285 -static __inline__ long atomic64_dec_return(atomic64_t *v)
8286 -{
8287 - long t;
8288 -
8289 - __asm__ __volatile__(
8290 - PPC_ATOMIC_ENTRY_BARRIER
8291 -"1: ldarx %0,0,%1 # atomic64_dec_return\n\
8292 - addic %0,%0,-1\n\
8293 - stdcx. %0,0,%1\n\
8294 - bne- 1b"
8295 - PPC_ATOMIC_EXIT_BARRIER
8296 - : "=&r" (t)
8297 - : "r" (&v->counter)
8298 - : "cc", "xer", "memory");
8299 -
8300 - return t;
8301 + atomic64_sub_unchecked(1, v);
8302 }
8303
8304 #define atomic64_sub_and_test(a, v) (atomic64_sub_return((a), (v)) == 0)
8305 @@ -415,6 +468,16 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v)
8306 #define atomic64_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
8307 #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
8308
8309 +static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, long new)
8310 +{
8311 + return cmpxchg(&(v->counter), old, new);
8312 +}
8313 +
8314 +static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new)
8315 +{
8316 + return xchg(&(v->counter), new);
8317 +}
8318 +
8319 /**
8320 * atomic64_add_unless - add unless the number is a given value
8321 * @v: pointer of type atomic64_t
8322 @@ -430,13 +493,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
8323
8324 __asm__ __volatile__ (
8325 PPC_ATOMIC_ENTRY_BARRIER
8326 -"1: ldarx %0,0,%1 # __atomic_add_unless\n\
8327 +"1: ldarx %0,0,%1 # atomic64_add_unless\n\
8328 cmpd 0,%0,%3 \n\
8329 - beq- 2f \n\
8330 - add %0,%2,%0 \n"
8331 + beq- 2f \n"
8332 +
8333 +#ifdef CONFIG_PAX_REFCOUNT
8334 +" mcrxr cr0\n"
8335 +" addo. %0,%2,%0\n"
8336 +" bf 4*cr0+so, 4f\n"
8337 +"3:.long " "0x00c00b00""\n"
8338 +"4:\n"
8339 +#else
8340 + "add %0,%2,%0 \n"
8341 +#endif
8342 +
8343 " stdcx. %0,0,%1 \n\
8344 bne- 1b \n"
8345 PPC_ATOMIC_EXIT_BARRIER
8346 +"5:"
8347 +
8348 +#ifdef CONFIG_PAX_REFCOUNT
8349 + _ASM_EXTABLE(3b, 5b)
8350 +#endif
8351 +
8352 " subf %0,%2,%0 \n\
8353 2:"
8354 : "=&r" (t)
8355 diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
8356 index 51ccc72..35de789 100644
8357 --- a/arch/powerpc/include/asm/barrier.h
8358 +++ b/arch/powerpc/include/asm/barrier.h
8359 @@ -76,7 +76,7 @@
8360 do { \
8361 compiletime_assert_atomic_type(*p); \
8362 smp_lwsync(); \
8363 - ACCESS_ONCE(*p) = (v); \
8364 + ACCESS_ONCE_RW(*p) = (v); \
8365 } while (0)
8366
8367 #define smp_load_acquire(p) \
8368 diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
8369 index 0dc42c5..b80a3a1 100644
8370 --- a/arch/powerpc/include/asm/cache.h
8371 +++ b/arch/powerpc/include/asm/cache.h
8372 @@ -4,6 +4,7 @@
8373 #ifdef __KERNEL__
8374
8375 #include <asm/reg.h>
8376 +#include <linux/const.h>
8377
8378 /* bytes per L1 cache line */
8379 #if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
8380 @@ -23,7 +24,7 @@
8381 #define L1_CACHE_SHIFT 7
8382 #endif
8383
8384 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
8385 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
8386
8387 #define SMP_CACHE_BYTES L1_CACHE_BYTES
8388
8389 diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
8390 index ee46ffe..b36c98c 100644
8391 --- a/arch/powerpc/include/asm/elf.h
8392 +++ b/arch/powerpc/include/asm/elf.h
8393 @@ -30,6 +30,18 @@
8394
8395 #define ELF_ET_DYN_BASE 0x20000000
8396
8397 +#ifdef CONFIG_PAX_ASLR
8398 +#define PAX_ELF_ET_DYN_BASE (0x10000000UL)
8399 +
8400 +#ifdef __powerpc64__
8401 +#define PAX_DELTA_MMAP_LEN (is_32bit_task() ? 16 : 28)
8402 +#define PAX_DELTA_STACK_LEN (is_32bit_task() ? 16 : 28)
8403 +#else
8404 +#define PAX_DELTA_MMAP_LEN 15
8405 +#define PAX_DELTA_STACK_LEN 15
8406 +#endif
8407 +#endif
8408 +
8409 #define ELF_CORE_EFLAGS (is_elf2_task() ? 2 : 0)
8410
8411 /*
8412 diff --git a/arch/powerpc/include/asm/exec.h b/arch/powerpc/include/asm/exec.h
8413 index 8196e9c..d83a9f3 100644
8414 --- a/arch/powerpc/include/asm/exec.h
8415 +++ b/arch/powerpc/include/asm/exec.h
8416 @@ -4,6 +4,6 @@
8417 #ifndef _ASM_POWERPC_EXEC_H
8418 #define _ASM_POWERPC_EXEC_H
8419
8420 -extern unsigned long arch_align_stack(unsigned long sp);
8421 +#define arch_align_stack(x) ((x) & ~0xfUL)
8422
8423 #endif /* _ASM_POWERPC_EXEC_H */
8424 diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h
8425 index 5acabbd..7ea14fa 100644
8426 --- a/arch/powerpc/include/asm/kmap_types.h
8427 +++ b/arch/powerpc/include/asm/kmap_types.h
8428 @@ -10,7 +10,7 @@
8429 * 2 of the License, or (at your option) any later version.
8430 */
8431
8432 -#define KM_TYPE_NR 16
8433 +#define KM_TYPE_NR 17
8434
8435 #endif /* __KERNEL__ */
8436 #endif /* _ASM_POWERPC_KMAP_TYPES_H */
8437 diff --git a/arch/powerpc/include/asm/local.h b/arch/powerpc/include/asm/local.h
8438 index b8da913..c02b593 100644
8439 --- a/arch/powerpc/include/asm/local.h
8440 +++ b/arch/powerpc/include/asm/local.h
8441 @@ -9,21 +9,65 @@ typedef struct
8442 atomic_long_t a;
8443 } local_t;
8444
8445 +typedef struct
8446 +{
8447 + atomic_long_unchecked_t a;
8448 +} local_unchecked_t;
8449 +
8450 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
8451
8452 #define local_read(l) atomic_long_read(&(l)->a)
8453 +#define local_read_unchecked(l) atomic_long_read_unchecked(&(l)->a)
8454 #define local_set(l,i) atomic_long_set(&(l)->a, (i))
8455 +#define local_set_unchecked(l,i) atomic_long_set_unchecked(&(l)->a, (i))
8456
8457 #define local_add(i,l) atomic_long_add((i),(&(l)->a))
8458 +#define local_add_unchecked(i,l) atomic_long_add_unchecked((i),(&(l)->a))
8459 #define local_sub(i,l) atomic_long_sub((i),(&(l)->a))
8460 +#define local_sub_unchecked(i,l) atomic_long_sub_unchecked((i),(&(l)->a))
8461 #define local_inc(l) atomic_long_inc(&(l)->a)
8462 +#define local_inc_unchecked(l) atomic_long_inc_unchecked(&(l)->a)
8463 #define local_dec(l) atomic_long_dec(&(l)->a)
8464 +#define local_dec_unchecked(l) atomic_long_dec_unchecked(&(l)->a)
8465
8466 static __inline__ long local_add_return(long a, local_t *l)
8467 {
8468 long t;
8469
8470 __asm__ __volatile__(
8471 +"1:" PPC_LLARX(%0,0,%2,0) " # local_add_return\n"
8472 +
8473 +#ifdef CONFIG_PAX_REFCOUNT
8474 +" mcrxr cr0\n"
8475 +" addo. %0,%1,%0\n"
8476 +" bf 4*cr0+so, 3f\n"
8477 +"2:.long " "0x00c00b00""\n"
8478 +#else
8479 +" add %0,%1,%0\n"
8480 +#endif
8481 +
8482 +"3:\n"
8483 + PPC405_ERR77(0,%2)
8484 + PPC_STLCX "%0,0,%2 \n\
8485 + bne- 1b"
8486 +
8487 +#ifdef CONFIG_PAX_REFCOUNT
8488 +"\n4:\n"
8489 + _ASM_EXTABLE(2b, 4b)
8490 +#endif
8491 +
8492 + : "=&r" (t)
8493 + : "r" (a), "r" (&(l->a.counter))
8494 + : "cc", "memory");
8495 +
8496 + return t;
8497 +}
8498 +
8499 +static __inline__ long local_add_return_unchecked(long a, local_unchecked_t *l)
8500 +{
8501 + long t;
8502 +
8503 + __asm__ __volatile__(
8504 "1:" PPC_LLARX(%0,0,%2,0) " # local_add_return\n\
8505 add %0,%1,%0\n"
8506 PPC405_ERR77(0,%2)
8507 @@ -101,6 +145,8 @@ static __inline__ long local_dec_return(local_t *l)
8508
8509 #define local_cmpxchg(l, o, n) \
8510 (cmpxchg_local(&((l)->a.counter), (o), (n)))
8511 +#define local_cmpxchg_unchecked(l, o, n) \
8512 + (cmpxchg_local(&((l)->a.counter), (o), (n)))
8513 #define local_xchg(l, n) (xchg_local(&((l)->a.counter), (n)))
8514
8515 /**
8516 diff --git a/arch/powerpc/include/asm/mman.h b/arch/powerpc/include/asm/mman.h
8517 index 8565c25..2865190 100644
8518 --- a/arch/powerpc/include/asm/mman.h
8519 +++ b/arch/powerpc/include/asm/mman.h
8520 @@ -24,7 +24,7 @@ static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot)
8521 }
8522 #define arch_calc_vm_prot_bits(prot) arch_calc_vm_prot_bits(prot)
8523
8524 -static inline pgprot_t arch_vm_get_page_prot(unsigned long vm_flags)
8525 +static inline pgprot_t arch_vm_get_page_prot(vm_flags_t vm_flags)
8526 {
8527 return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
8528 }
8529 diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
8530 index 71294a6..9e40aca 100644
8531 --- a/arch/powerpc/include/asm/page.h
8532 +++ b/arch/powerpc/include/asm/page.h
8533 @@ -227,8 +227,9 @@ extern long long virt_phys_offset;
8534 * and needs to be executable. This means the whole heap ends
8535 * up being executable.
8536 */
8537 -#define VM_DATA_DEFAULT_FLAGS32 (VM_READ | VM_WRITE | VM_EXEC | \
8538 - VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8539 +#define VM_DATA_DEFAULT_FLAGS32 \
8540 + (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
8541 + VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8542
8543 #define VM_DATA_DEFAULT_FLAGS64 (VM_READ | VM_WRITE | \
8544 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8545 @@ -256,6 +257,9 @@ extern long long virt_phys_offset;
8546 #define is_kernel_addr(x) ((x) >= PAGE_OFFSET)
8547 #endif
8548
8549 +#define ktla_ktva(addr) (addr)
8550 +#define ktva_ktla(addr) (addr)
8551 +
8552 #ifndef CONFIG_PPC_BOOK3S_64
8553 /*
8554 * Use the top bit of the higher-level page table entries to indicate whether
8555 diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
8556 index d908a46..3753f71 100644
8557 --- a/arch/powerpc/include/asm/page_64.h
8558 +++ b/arch/powerpc/include/asm/page_64.h
8559 @@ -172,15 +172,18 @@ do { \
8560 * stack by default, so in the absence of a PT_GNU_STACK program header
8561 * we turn execute permission off.
8562 */
8563 -#define VM_STACK_DEFAULT_FLAGS32 (VM_READ | VM_WRITE | VM_EXEC | \
8564 - VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8565 +#define VM_STACK_DEFAULT_FLAGS32 \
8566 + (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
8567 + VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8568
8569 #define VM_STACK_DEFAULT_FLAGS64 (VM_READ | VM_WRITE | \
8570 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
8571
8572 +#ifndef CONFIG_PAX_PAGEEXEC
8573 #define VM_STACK_DEFAULT_FLAGS \
8574 (is_32bit_task() ? \
8575 VM_STACK_DEFAULT_FLAGS32 : VM_STACK_DEFAULT_FLAGS64)
8576 +#endif
8577
8578 #include <asm-generic/getorder.h>
8579
8580 diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h
8581 index 4b0be20..c15a27d 100644
8582 --- a/arch/powerpc/include/asm/pgalloc-64.h
8583 +++ b/arch/powerpc/include/asm/pgalloc-64.h
8584 @@ -54,6 +54,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
8585 #ifndef CONFIG_PPC_64K_PAGES
8586
8587 #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, PUD)
8588 +#define pgd_populate_kernel(MM, PGD, PUD) pgd_populate((MM), (PGD), (PUD))
8589
8590 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
8591 {
8592 @@ -71,6 +72,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
8593 pud_set(pud, (unsigned long)pmd);
8594 }
8595
8596 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
8597 +{
8598 + pud_populate(mm, pud, pmd);
8599 +}
8600 +
8601 #define pmd_populate(mm, pmd, pte_page) \
8602 pmd_populate_kernel(mm, pmd, page_address(pte_page))
8603 #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, (unsigned long)(pte))
8604 @@ -173,6 +179,7 @@ extern void __tlb_remove_table(void *_table);
8605 #endif
8606
8607 #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd)
8608 +#define pud_populate_kernel(mm, pud, pmd) pud_populate((mm), (pud), (pmd))
8609
8610 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
8611 pte_t *pte)
8612 diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
8613 index 11a3863..108f194 100644
8614 --- a/arch/powerpc/include/asm/pgtable.h
8615 +++ b/arch/powerpc/include/asm/pgtable.h
8616 @@ -2,6 +2,7 @@
8617 #define _ASM_POWERPC_PGTABLE_H
8618 #ifdef __KERNEL__
8619
8620 +#include <linux/const.h>
8621 #ifndef __ASSEMBLY__
8622 #include <linux/mmdebug.h>
8623 #include <linux/mmzone.h>
8624 diff --git a/arch/powerpc/include/asm/pte-hash32.h b/arch/powerpc/include/asm/pte-hash32.h
8625 index 62cfb0c..50c6402 100644
8626 --- a/arch/powerpc/include/asm/pte-hash32.h
8627 +++ b/arch/powerpc/include/asm/pte-hash32.h
8628 @@ -20,6 +20,7 @@
8629 #define _PAGE_HASHPTE 0x002 /* hash_page has made an HPTE for this pte */
8630 #define _PAGE_USER 0x004 /* usermode access allowed */
8631 #define _PAGE_GUARDED 0x008 /* G: prohibit speculative access */
8632 +#define _PAGE_EXEC _PAGE_GUARDED
8633 #define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */
8634 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
8635 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
8636 diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
8637 index af56b5c..f86f3f6 100644
8638 --- a/arch/powerpc/include/asm/reg.h
8639 +++ b/arch/powerpc/include/asm/reg.h
8640 @@ -253,6 +253,7 @@
8641 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
8642 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
8643 #define DSISR_NOHPTE 0x40000000 /* no translation found */
8644 +#define DSISR_GUARDED 0x10000000 /* fetch from guarded storage */
8645 #define DSISR_PROTFAULT 0x08000000 /* protection fault */
8646 #define DSISR_ISSTORE 0x02000000 /* access was a store */
8647 #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
8648 diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h
8649 index 825663c..f9e9134 100644
8650 --- a/arch/powerpc/include/asm/smp.h
8651 +++ b/arch/powerpc/include/asm/smp.h
8652 @@ -51,7 +51,7 @@ struct smp_ops_t {
8653 int (*cpu_disable)(void);
8654 void (*cpu_die)(unsigned int nr);
8655 int (*cpu_bootable)(unsigned int nr);
8656 -};
8657 +} __no_const;
8658
8659 extern void smp_send_debugger_break(void);
8660 extern void start_secondary_resume(void);
8661 diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h
8662 index 4dbe072..b803275 100644
8663 --- a/arch/powerpc/include/asm/spinlock.h
8664 +++ b/arch/powerpc/include/asm/spinlock.h
8665 @@ -204,13 +204,29 @@ static inline long __arch_read_trylock(arch_rwlock_t *rw)
8666 __asm__ __volatile__(
8667 "1: " PPC_LWARX(%0,0,%1,1) "\n"
8668 __DO_SIGN_EXTEND
8669 -" addic. %0,%0,1\n\
8670 - ble- 2f\n"
8671 +
8672 +#ifdef CONFIG_PAX_REFCOUNT
8673 +" mcrxr cr0\n"
8674 +" addico. %0,%0,1\n"
8675 +" bf 4*cr0+so, 3f\n"
8676 +"2:.long " "0x00c00b00""\n"
8677 +#else
8678 +" addic. %0,%0,1\n"
8679 +#endif
8680 +
8681 +"3:\n"
8682 + "ble- 4f\n"
8683 PPC405_ERR77(0,%1)
8684 " stwcx. %0,0,%1\n\
8685 bne- 1b\n"
8686 PPC_ACQUIRE_BARRIER
8687 -"2:" : "=&r" (tmp)
8688 +"4:"
8689 +
8690 +#ifdef CONFIG_PAX_REFCOUNT
8691 + _ASM_EXTABLE(2b,4b)
8692 +#endif
8693 +
8694 + : "=&r" (tmp)
8695 : "r" (&rw->lock)
8696 : "cr0", "xer", "memory");
8697
8698 @@ -286,11 +302,27 @@ static inline void arch_read_unlock(arch_rwlock_t *rw)
8699 __asm__ __volatile__(
8700 "# read_unlock\n\t"
8701 PPC_RELEASE_BARRIER
8702 -"1: lwarx %0,0,%1\n\
8703 - addic %0,%0,-1\n"
8704 +"1: lwarx %0,0,%1\n"
8705 +
8706 +#ifdef CONFIG_PAX_REFCOUNT
8707 +" mcrxr cr0\n"
8708 +" addico. %0,%0,-1\n"
8709 +" bf 4*cr0+so, 3f\n"
8710 +"2:.long " "0x00c00b00""\n"
8711 +#else
8712 +" addic. %0,%0,-1\n"
8713 +#endif
8714 +
8715 +"3:\n"
8716 PPC405_ERR77(0,%1)
8717 " stwcx. %0,0,%1\n\
8718 bne- 1b"
8719 +
8720 +#ifdef CONFIG_PAX_REFCOUNT
8721 +"\n4:\n"
8722 + _ASM_EXTABLE(2b, 4b)
8723 +#endif
8724 +
8725 : "=&r"(tmp)
8726 : "r"(&rw->lock)
8727 : "cr0", "xer", "memory");
8728 diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
8729 index 7efee4a..48d47cc 100644
8730 --- a/arch/powerpc/include/asm/thread_info.h
8731 +++ b/arch/powerpc/include/asm/thread_info.h
8732 @@ -101,6 +101,8 @@ static inline struct thread_info *current_thread_info(void)
8733 #if defined(CONFIG_PPC64)
8734 #define TIF_ELF2ABI 18 /* function descriptors must die! */
8735 #endif
8736 +/* mask must be expressable within 16 bits to satisfy 'andi' instruction reqs */
8737 +#define TIF_GRSEC_SETXID 6 /* update credentials on syscall entry/exit */
8738
8739 /* as above, but as bit values */
8740 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
8741 @@ -119,9 +121,10 @@ static inline struct thread_info *current_thread_info(void)
8742 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
8743 #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE)
8744 #define _TIF_NOHZ (1<<TIF_NOHZ)
8745 +#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID)
8746 #define _TIF_SYSCALL_DOTRACE (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
8747 _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT | \
8748 - _TIF_NOHZ)
8749 + _TIF_NOHZ | _TIF_GRSEC_SETXID)
8750
8751 #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \
8752 _TIF_NOTIFY_RESUME | _TIF_UPROBE | \
8753 diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
8754 index 2a8ebae..5643c6f 100644
8755 --- a/arch/powerpc/include/asm/uaccess.h
8756 +++ b/arch/powerpc/include/asm/uaccess.h
8757 @@ -58,6 +58,7 @@
8758
8759 #endif
8760
8761 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
8762 #define access_ok(type, addr, size) \
8763 (__chk_user_ptr(addr), \
8764 __access_ok((__force unsigned long)(addr), (size), get_fs()))
8765 @@ -318,52 +319,6 @@ do { \
8766 extern unsigned long __copy_tofrom_user(void __user *to,
8767 const void __user *from, unsigned long size);
8768
8769 -#ifndef __powerpc64__
8770 -
8771 -static inline unsigned long copy_from_user(void *to,
8772 - const void __user *from, unsigned long n)
8773 -{
8774 - unsigned long over;
8775 -
8776 - if (access_ok(VERIFY_READ, from, n))
8777 - return __copy_tofrom_user((__force void __user *)to, from, n);
8778 - if ((unsigned long)from < TASK_SIZE) {
8779 - over = (unsigned long)from + n - TASK_SIZE;
8780 - return __copy_tofrom_user((__force void __user *)to, from,
8781 - n - over) + over;
8782 - }
8783 - return n;
8784 -}
8785 -
8786 -static inline unsigned long copy_to_user(void __user *to,
8787 - const void *from, unsigned long n)
8788 -{
8789 - unsigned long over;
8790 -
8791 - if (access_ok(VERIFY_WRITE, to, n))
8792 - return __copy_tofrom_user(to, (__force void __user *)from, n);
8793 - if ((unsigned long)to < TASK_SIZE) {
8794 - over = (unsigned long)to + n - TASK_SIZE;
8795 - return __copy_tofrom_user(to, (__force void __user *)from,
8796 - n - over) + over;
8797 - }
8798 - return n;
8799 -}
8800 -
8801 -#else /* __powerpc64__ */
8802 -
8803 -#define __copy_in_user(to, from, size) \
8804 - __copy_tofrom_user((to), (from), (size))
8805 -
8806 -extern unsigned long copy_from_user(void *to, const void __user *from,
8807 - unsigned long n);
8808 -extern unsigned long copy_to_user(void __user *to, const void *from,
8809 - unsigned long n);
8810 -extern unsigned long copy_in_user(void __user *to, const void __user *from,
8811 - unsigned long n);
8812 -
8813 -#endif /* __powerpc64__ */
8814 -
8815 static inline unsigned long __copy_from_user_inatomic(void *to,
8816 const void __user *from, unsigned long n)
8817 {
8818 @@ -387,6 +342,10 @@ static inline unsigned long __copy_from_user_inatomic(void *to,
8819 if (ret == 0)
8820 return 0;
8821 }
8822 +
8823 + if (!__builtin_constant_p(n))
8824 + check_object_size(to, n, false);
8825 +
8826 return __copy_tofrom_user((__force void __user *)to, from, n);
8827 }
8828
8829 @@ -413,6 +372,10 @@ static inline unsigned long __copy_to_user_inatomic(void __user *to,
8830 if (ret == 0)
8831 return 0;
8832 }
8833 +
8834 + if (!__builtin_constant_p(n))
8835 + check_object_size(from, n, true);
8836 +
8837 return __copy_tofrom_user(to, (__force const void __user *)from, n);
8838 }
8839
8840 @@ -430,6 +393,92 @@ static inline unsigned long __copy_to_user(void __user *to,
8841 return __copy_to_user_inatomic(to, from, size);
8842 }
8843
8844 +#ifndef __powerpc64__
8845 +
8846 +static inline unsigned long __must_check copy_from_user(void *to,
8847 + const void __user *from, unsigned long n)
8848 +{
8849 + unsigned long over;
8850 +
8851 + if ((long)n < 0)
8852 + return n;
8853 +
8854 + if (access_ok(VERIFY_READ, from, n)) {
8855 + if (!__builtin_constant_p(n))
8856 + check_object_size(to, n, false);
8857 + return __copy_tofrom_user((__force void __user *)to, from, n);
8858 + }
8859 + if ((unsigned long)from < TASK_SIZE) {
8860 + over = (unsigned long)from + n - TASK_SIZE;
8861 + if (!__builtin_constant_p(n - over))
8862 + check_object_size(to, n - over, false);
8863 + return __copy_tofrom_user((__force void __user *)to, from,
8864 + n - over) + over;
8865 + }
8866 + return n;
8867 +}
8868 +
8869 +static inline unsigned long __must_check copy_to_user(void __user *to,
8870 + const void *from, unsigned long n)
8871 +{
8872 + unsigned long over;
8873 +
8874 + if ((long)n < 0)
8875 + return n;
8876 +
8877 + if (access_ok(VERIFY_WRITE, to, n)) {
8878 + if (!__builtin_constant_p(n))
8879 + check_object_size(from, n, true);
8880 + return __copy_tofrom_user(to, (__force void __user *)from, n);
8881 + }
8882 + if ((unsigned long)to < TASK_SIZE) {
8883 + over = (unsigned long)to + n - TASK_SIZE;
8884 + if (!__builtin_constant_p(n))
8885 + check_object_size(from, n - over, true);
8886 + return __copy_tofrom_user(to, (__force void __user *)from,
8887 + n - over) + over;
8888 + }
8889 + return n;
8890 +}
8891 +
8892 +#else /* __powerpc64__ */
8893 +
8894 +#define __copy_in_user(to, from, size) \
8895 + __copy_tofrom_user((to), (from), (size))
8896 +
8897 +static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
8898 +{
8899 + if ((long)n < 0 || n > INT_MAX)
8900 + return n;
8901 +
8902 + if (!__builtin_constant_p(n))
8903 + check_object_size(to, n, false);
8904 +
8905 + if (likely(access_ok(VERIFY_READ, from, n)))
8906 + n = __copy_from_user(to, from, n);
8907 + else
8908 + memset(to, 0, n);
8909 + return n;
8910 +}
8911 +
8912 +static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
8913 +{
8914 + if ((long)n < 0 || n > INT_MAX)
8915 + return n;
8916 +
8917 + if (likely(access_ok(VERIFY_WRITE, to, n))) {
8918 + if (!__builtin_constant_p(n))
8919 + check_object_size(from, n, true);
8920 + n = __copy_to_user(to, from, n);
8921 + }
8922 + return n;
8923 +}
8924 +
8925 +extern unsigned long copy_in_user(void __user *to, const void __user *from,
8926 + unsigned long n);
8927 +
8928 +#endif /* __powerpc64__ */
8929 +
8930 extern unsigned long __clear_user(void __user *addr, unsigned long size);
8931
8932 static inline unsigned long clear_user(void __user *addr, unsigned long size)
8933 diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
8934 index 12868b1..5155667 100644
8935 --- a/arch/powerpc/kernel/Makefile
8936 +++ b/arch/powerpc/kernel/Makefile
8937 @@ -14,6 +14,11 @@ CFLAGS_prom_init.o += -fPIC
8938 CFLAGS_btext.o += -fPIC
8939 endif
8940
8941 +CFLAGS_REMOVE_cputable.o = $(LATENT_ENTROPY_PLUGIN_CFLAGS)
8942 +CFLAGS_REMOVE_prom_init.o = $(LATENT_ENTROPY_PLUGIN_CFLAGS)
8943 +CFLAGS_REMOVE_btext.o = $(LATENT_ENTROPY_PLUGIN_CFLAGS)
8944 +CFLAGS_REMOVE_prom.o = $(LATENT_ENTROPY_PLUGIN_CFLAGS)
8945 +
8946 ifdef CONFIG_FUNCTION_TRACER
8947 # Do not trace early boot code
8948 CFLAGS_REMOVE_cputable.o = -pg -mno-sched-epilog
8949 @@ -26,6 +31,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
8950 CFLAGS_REMOVE_time.o = -pg -mno-sched-epilog
8951 endif
8952
8953 +CFLAGS_REMOVE_prom_init.o += $(LATENT_ENTROPY_PLUGIN_CFLAGS)
8954 +
8955 obj-y := cputable.o ptrace.o syscalls.o \
8956 irq.o align.o signal_32.o pmc.o vdso.o \
8957 process.o systbl.o idle.o \
8958 diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
8959 index 3e68d1c..72a5ee6 100644
8960 --- a/arch/powerpc/kernel/exceptions-64e.S
8961 +++ b/arch/powerpc/kernel/exceptions-64e.S
8962 @@ -1010,6 +1010,7 @@ storage_fault_common:
8963 std r14,_DAR(r1)
8964 std r15,_DSISR(r1)
8965 addi r3,r1,STACK_FRAME_OVERHEAD
8966 + bl save_nvgprs
8967 mr r4,r14
8968 mr r5,r15
8969 ld r14,PACA_EXGEN+EX_R14(r13)
8970 @@ -1018,8 +1019,7 @@ storage_fault_common:
8971 cmpdi r3,0
8972 bne- 1f
8973 b ret_from_except_lite
8974 -1: bl save_nvgprs
8975 - mr r5,r3
8976 +1: mr r5,r3
8977 addi r3,r1,STACK_FRAME_OVERHEAD
8978 ld r4,_DAR(r1)
8979 bl bad_page_fault
8980 diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
8981 index 0a0399c2..262a2e6 100644
8982 --- a/arch/powerpc/kernel/exceptions-64s.S
8983 +++ b/arch/powerpc/kernel/exceptions-64s.S
8984 @@ -1591,10 +1591,10 @@ handle_page_fault:
8985 11: ld r4,_DAR(r1)
8986 ld r5,_DSISR(r1)
8987 addi r3,r1,STACK_FRAME_OVERHEAD
8988 + bl save_nvgprs
8989 bl do_page_fault
8990 cmpdi r3,0
8991 beq+ 12f
8992 - bl save_nvgprs
8993 mr r5,r3
8994 addi r3,r1,STACK_FRAME_OVERHEAD
8995 lwz r4,_DAR(r1)
8996 diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
8997 index 4509603..cdb491f 100644
8998 --- a/arch/powerpc/kernel/irq.c
8999 +++ b/arch/powerpc/kernel/irq.c
9000 @@ -460,6 +460,8 @@ void migrate_irqs(void)
9001 }
9002 #endif
9003
9004 +extern void gr_handle_kernel_exploit(void);
9005 +
9006 static inline void check_stack_overflow(void)
9007 {
9008 #ifdef CONFIG_DEBUG_STACKOVERFLOW
9009 @@ -472,6 +474,7 @@ static inline void check_stack_overflow(void)
9010 pr_err("do_IRQ: stack overflow: %ld\n",
9011 sp - sizeof(struct thread_info));
9012 dump_stack();
9013 + gr_handle_kernel_exploit();
9014 }
9015 #endif
9016 }
9017 diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
9018 index c94d2e0..992a9ce 100644
9019 --- a/arch/powerpc/kernel/module_32.c
9020 +++ b/arch/powerpc/kernel/module_32.c
9021 @@ -158,7 +158,7 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr,
9022 me->arch.core_plt_section = i;
9023 }
9024 if (!me->arch.core_plt_section || !me->arch.init_plt_section) {
9025 - pr_err("Module doesn't contain .plt or .init.plt sections.\n");
9026 + pr_err("Module $s doesn't contain .plt or .init.plt sections.\n", me->name);
9027 return -ENOEXEC;
9028 }
9029
9030 @@ -188,11 +188,16 @@ static uint32_t do_plt_call(void *location,
9031
9032 pr_debug("Doing plt for call to 0x%x at 0x%x\n", val, (unsigned int)location);
9033 /* Init, or core PLT? */
9034 - if (location >= mod->module_core
9035 - && location < mod->module_core + mod->core_size)
9036 + if ((location >= mod->module_core_rx && location < mod->module_core_rx + mod->core_size_rx) ||
9037 + (location >= mod->module_core_rw && location < mod->module_core_rw + mod->core_size_rw))
9038 entry = (void *)sechdrs[mod->arch.core_plt_section].sh_addr;
9039 - else
9040 + else if ((location >= mod->module_init_rx && location < mod->module_init_rx + mod->init_size_rx) ||
9041 + (location >= mod->module_init_rw && location < mod->module_init_rw + mod->init_size_rw))
9042 entry = (void *)sechdrs[mod->arch.init_plt_section].sh_addr;
9043 + else {
9044 + printk(KERN_ERR "%s: invalid R_PPC_REL24 entry found\n", mod->name);
9045 + return ~0UL;
9046 + }
9047
9048 /* Find this entry, or if that fails, the next avail. entry */
9049 while (entry->jump[0]) {
9050 @@ -296,7 +301,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
9051 }
9052 #ifdef CONFIG_DYNAMIC_FTRACE
9053 module->arch.tramp =
9054 - do_plt_call(module->module_core,
9055 + do_plt_call(module->module_core_rx,
9056 (unsigned long)ftrace_caller,
9057 sechdrs, module);
9058 #endif
9059 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
9060 index 64e6e9d..cf90ed5 100644
9061 --- a/arch/powerpc/kernel/process.c
9062 +++ b/arch/powerpc/kernel/process.c
9063 @@ -1033,8 +1033,8 @@ void show_regs(struct pt_regs * regs)
9064 * Lookup NIP late so we have the best change of getting the
9065 * above info out without failing
9066 */
9067 - printk("NIP ["REG"] %pS\n", regs->nip, (void *)regs->nip);
9068 - printk("LR ["REG"] %pS\n", regs->link, (void *)regs->link);
9069 + printk("NIP ["REG"] %pA\n", regs->nip, (void *)regs->nip);
9070 + printk("LR ["REG"] %pA\n", regs->link, (void *)regs->link);
9071 #endif
9072 show_stack(current, (unsigned long *) regs->gpr[1]);
9073 if (!user_mode(regs))
9074 @@ -1550,10 +1550,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
9075 newsp = stack[0];
9076 ip = stack[STACK_FRAME_LR_SAVE];
9077 if (!firstframe || ip != lr) {
9078 - printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip);
9079 + printk("["REG"] ["REG"] %pA", sp, ip, (void *)ip);
9080 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
9081 if ((ip == rth) && curr_frame >= 0) {
9082 - printk(" (%pS)",
9083 + printk(" (%pA)",
9084 (void *)current->ret_stack[curr_frame].ret);
9085 curr_frame--;
9086 }
9087 @@ -1573,7 +1573,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
9088 struct pt_regs *regs = (struct pt_regs *)
9089 (sp + STACK_FRAME_OVERHEAD);
9090 lr = regs->link;
9091 - printk("--- interrupt: %lx at %pS\n LR = %pS\n",
9092 + printk("--- interrupt: %lx at %pA\n LR = %pA\n",
9093 regs->trap, (void *)regs->nip, (void *)lr);
9094 firstframe = 1;
9095 }
9096 @@ -1609,49 +1609,3 @@ void notrace __ppc64_runlatch_off(void)
9097 mtspr(SPRN_CTRLT, ctrl);
9098 }
9099 #endif /* CONFIG_PPC64 */
9100 -
9101 -unsigned long arch_align_stack(unsigned long sp)
9102 -{
9103 - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
9104 - sp -= get_random_int() & ~PAGE_MASK;
9105 - return sp & ~0xf;
9106 -}
9107 -
9108 -static inline unsigned long brk_rnd(void)
9109 -{
9110 - unsigned long rnd = 0;
9111 -
9112 - /* 8MB for 32bit, 1GB for 64bit */
9113 - if (is_32bit_task())
9114 - rnd = (long)(get_random_int() % (1<<(23-PAGE_SHIFT)));
9115 - else
9116 - rnd = (long)(get_random_int() % (1<<(30-PAGE_SHIFT)));
9117 -
9118 - return rnd << PAGE_SHIFT;
9119 -}
9120 -
9121 -unsigned long arch_randomize_brk(struct mm_struct *mm)
9122 -{
9123 - unsigned long base = mm->brk;
9124 - unsigned long ret;
9125 -
9126 -#ifdef CONFIG_PPC_STD_MMU_64
9127 - /*
9128 - * If we are using 1TB segments and we are allowed to randomise
9129 - * the heap, we can put it above 1TB so it is backed by a 1TB
9130 - * segment. Otherwise the heap will be in the bottom 1TB
9131 - * which always uses 256MB segments and this may result in a
9132 - * performance penalty.
9133 - */
9134 - if (!is_32bit_task() && (mmu_highuser_ssize == MMU_SEGSIZE_1T))
9135 - base = max_t(unsigned long, mm->brk, 1UL << SID_SHIFT_1T);
9136 -#endif
9137 -
9138 - ret = PAGE_ALIGN(base + brk_rnd());
9139 -
9140 - if (ret < mm->brk)
9141 - return mm->brk;
9142 -
9143 - return ret;
9144 -}
9145 -
9146 diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
9147 index f21897b..28c0428 100644
9148 --- a/arch/powerpc/kernel/ptrace.c
9149 +++ b/arch/powerpc/kernel/ptrace.c
9150 @@ -1762,6 +1762,10 @@ long arch_ptrace(struct task_struct *child, long request,
9151 return ret;
9152 }
9153
9154 +#ifdef CONFIG_GRKERNSEC_SETXID
9155 +extern void gr_delayed_cred_worker(void);
9156 +#endif
9157 +
9158 /*
9159 * We must return the syscall number to actually look up in the table.
9160 * This can be -1L to skip running any syscall at all.
9161 @@ -1774,6 +1778,11 @@ long do_syscall_trace_enter(struct pt_regs *regs)
9162
9163 secure_computing_strict(regs->gpr[0]);
9164
9165 +#ifdef CONFIG_GRKERNSEC_SETXID
9166 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
9167 + gr_delayed_cred_worker();
9168 +#endif
9169 +
9170 if (test_thread_flag(TIF_SYSCALL_TRACE) &&
9171 tracehook_report_syscall_entry(regs))
9172 /*
9173 @@ -1805,6 +1814,11 @@ void do_syscall_trace_leave(struct pt_regs *regs)
9174 {
9175 int step;
9176
9177 +#ifdef CONFIG_GRKERNSEC_SETXID
9178 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
9179 + gr_delayed_cred_worker();
9180 +#endif
9181 +
9182 audit_syscall_exit(regs);
9183
9184 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
9185 diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
9186 index da50e0c..5ff6307 100644
9187 --- a/arch/powerpc/kernel/signal_32.c
9188 +++ b/arch/powerpc/kernel/signal_32.c
9189 @@ -1009,7 +1009,7 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
9190 /* Save user registers on the stack */
9191 frame = &rt_sf->uc.uc_mcontext;
9192 addr = frame;
9193 - if (vdso32_rt_sigtramp && current->mm->context.vdso_base) {
9194 + if (vdso32_rt_sigtramp && current->mm->context.vdso_base != ~0UL) {
9195 sigret = 0;
9196 tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp;
9197 } else {
9198 diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
9199 index c7c24d2..1bf7039 100644
9200 --- a/arch/powerpc/kernel/signal_64.c
9201 +++ b/arch/powerpc/kernel/signal_64.c
9202 @@ -754,7 +754,7 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs
9203 current->thread.fp_state.fpscr = 0;
9204
9205 /* Set up to return from userspace. */
9206 - if (vdso64_rt_sigtramp && current->mm->context.vdso_base) {
9207 + if (vdso64_rt_sigtramp && current->mm->context.vdso_base != ~0UL) {
9208 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
9209 } else {
9210 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
9211 diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
9212 index 37de90f..12472ac 100644
9213 --- a/arch/powerpc/kernel/traps.c
9214 +++ b/arch/powerpc/kernel/traps.c
9215 @@ -36,6 +36,7 @@
9216 #include <linux/debugfs.h>
9217 #include <linux/ratelimit.h>
9218 #include <linux/context_tracking.h>
9219 +#include <linux/uaccess.h>
9220
9221 #include <asm/emulated_ops.h>
9222 #include <asm/pgtable.h>
9223 @@ -142,6 +143,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
9224 return flags;
9225 }
9226
9227 +extern void gr_handle_kernel_exploit(void);
9228 +
9229 static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
9230 int signr)
9231 {
9232 @@ -191,6 +194,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
9233 panic("Fatal exception in interrupt");
9234 if (panic_on_oops)
9235 panic("Fatal exception");
9236 +
9237 + gr_handle_kernel_exploit();
9238 +
9239 do_exit(signr);
9240 }
9241
9242 @@ -1139,6 +1145,26 @@ void __kprobes program_check_exception(struct pt_regs *regs)
9243 enum ctx_state prev_state = exception_enter();
9244 unsigned int reason = get_reason(regs);
9245
9246 +#ifdef CONFIG_PAX_REFCOUNT
9247 + unsigned int bkpt;
9248 + const struct exception_table_entry *entry;
9249 +
9250 + if (reason & REASON_ILLEGAL) {
9251 + /* Check if PaX bad instruction */
9252 + if (!probe_kernel_address(regs->nip, bkpt) && bkpt == 0xc00b00) {
9253 + current->thread.trap_nr = 0;
9254 + pax_report_refcount_overflow(regs);
9255 + /* fixup_exception() for PowerPC does not exist, simulate its job */
9256 + if ((entry = search_exception_tables(regs->nip)) != NULL) {
9257 + regs->nip = entry->fixup;
9258 + return;
9259 + }
9260 + /* fixup_exception() could not handle */
9261 + goto bail;
9262 + }
9263 + }
9264 +#endif
9265 +
9266 /* We can now get here via a FP Unavailable exception if the core
9267 * has no FPU, in that case the reason flags will be 0 */
9268
9269 diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
9270 index b457bfa..9018cde 100644
9271 --- a/arch/powerpc/kernel/vdso.c
9272 +++ b/arch/powerpc/kernel/vdso.c
9273 @@ -34,6 +34,7 @@
9274 #include <asm/vdso.h>
9275 #include <asm/vdso_datapage.h>
9276 #include <asm/setup.h>
9277 +#include <asm/mman.h>
9278
9279 #undef DEBUG
9280
9281 @@ -179,7 +180,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9282 vdso_base = VDSO32_MBASE;
9283 #endif
9284
9285 - current->mm->context.vdso_base = 0;
9286 + current->mm->context.vdso_base = ~0UL;
9287
9288 /* vDSO has a problem and was disabled, just don't "enable" it for the
9289 * process
9290 @@ -199,7 +200,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
9291 vdso_base = get_unmapped_area(NULL, vdso_base,
9292 (vdso_pages << PAGE_SHIFT) +
9293 ((VDSO_ALIGNMENT - 1) & PAGE_MASK),
9294 - 0, 0);
9295 + 0, MAP_PRIVATE | MAP_EXECUTABLE);
9296 if (IS_ERR_VALUE(vdso_base)) {
9297 rc = vdso_base;
9298 goto fail_mmapsem;
9299 diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
9300 index e5dde32..557af3d 100644
9301 --- a/arch/powerpc/kvm/powerpc.c
9302 +++ b/arch/powerpc/kvm/powerpc.c
9303 @@ -1404,7 +1404,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
9304 }
9305 EXPORT_SYMBOL_GPL(kvmppc_init_lpid);
9306
9307 -int kvm_arch_init(void *opaque)
9308 +int kvm_arch_init(const void *opaque)
9309 {
9310 return 0;
9311 }
9312 diff --git a/arch/powerpc/lib/usercopy_64.c b/arch/powerpc/lib/usercopy_64.c
9313 index 5eea6f3..5d10396 100644
9314 --- a/arch/powerpc/lib/usercopy_64.c
9315 +++ b/arch/powerpc/lib/usercopy_64.c
9316 @@ -9,22 +9,6 @@
9317 #include <linux/module.h>
9318 #include <asm/uaccess.h>
9319
9320 -unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
9321 -{
9322 - if (likely(access_ok(VERIFY_READ, from, n)))
9323 - n = __copy_from_user(to, from, n);
9324 - else
9325 - memset(to, 0, n);
9326 - return n;
9327 -}
9328 -
9329 -unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
9330 -{
9331 - if (likely(access_ok(VERIFY_WRITE, to, n)))
9332 - n = __copy_to_user(to, from, n);
9333 - return n;
9334 -}
9335 -
9336 unsigned long copy_in_user(void __user *to, const void __user *from,
9337 unsigned long n)
9338 {
9339 @@ -35,7 +19,5 @@ unsigned long copy_in_user(void __user *to, const void __user *from,
9340 return n;
9341 }
9342
9343 -EXPORT_SYMBOL(copy_from_user);
9344 -EXPORT_SYMBOL(copy_to_user);
9345 EXPORT_SYMBOL(copy_in_user);
9346
9347 diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
9348 index a67c6d7..a662e6d 100644
9349 --- a/arch/powerpc/mm/fault.c
9350 +++ b/arch/powerpc/mm/fault.c
9351 @@ -34,6 +34,10 @@
9352 #include <linux/context_tracking.h>
9353 #include <linux/hugetlb.h>
9354 #include <linux/uaccess.h>
9355 +#include <linux/slab.h>
9356 +#include <linux/pagemap.h>
9357 +#include <linux/compiler.h>
9358 +#include <linux/unistd.h>
9359
9360 #include <asm/firmware.h>
9361 #include <asm/page.h>
9362 @@ -68,6 +72,33 @@ static inline int notify_page_fault(struct pt_regs *regs)
9363 }
9364 #endif
9365
9366 +#ifdef CONFIG_PAX_PAGEEXEC
9367 +/*
9368 + * PaX: decide what to do with offenders (regs->nip = fault address)
9369 + *
9370 + * returns 1 when task should be killed
9371 + */
9372 +static int pax_handle_fetch_fault(struct pt_regs *regs)
9373 +{
9374 + return 1;
9375 +}
9376 +
9377 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
9378 +{
9379 + unsigned long i;
9380 +
9381 + printk(KERN_ERR "PAX: bytes at PC: ");
9382 + for (i = 0; i < 5; i++) {
9383 + unsigned int c;
9384 + if (get_user(c, (unsigned int __user *)pc+i))
9385 + printk(KERN_CONT "???????? ");
9386 + else
9387 + printk(KERN_CONT "%08x ", c);
9388 + }
9389 + printk("\n");
9390 +}
9391 +#endif
9392 +
9393 /*
9394 * Check whether the instruction at regs->nip is a store using
9395 * an update addressing form which will update r1.
9396 @@ -227,7 +258,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
9397 * indicate errors in DSISR but can validly be set in SRR1.
9398 */
9399 if (trap == 0x400)
9400 - error_code &= 0x48200000;
9401 + error_code &= 0x58200000;
9402 else
9403 is_write = error_code & DSISR_ISSTORE;
9404 #else
9405 @@ -384,12 +415,16 @@ good_area:
9406 * "undefined". Of those that can be set, this is the only
9407 * one which seems bad.
9408 */
9409 - if (error_code & 0x10000000)
9410 + if (error_code & DSISR_GUARDED)
9411 /* Guarded storage error. */
9412 goto bad_area;
9413 #endif /* CONFIG_8xx */
9414
9415 if (is_exec) {
9416 +#ifdef CONFIG_PPC_STD_MMU
9417 + if (error_code & DSISR_GUARDED)
9418 + goto bad_area;
9419 +#endif
9420 /*
9421 * Allow execution from readable areas if the MMU does not
9422 * provide separate controls over reading and executing.
9423 @@ -484,6 +519,23 @@ bad_area:
9424 bad_area_nosemaphore:
9425 /* User mode accesses cause a SIGSEGV */
9426 if (user_mode(regs)) {
9427 +
9428 +#ifdef CONFIG_PAX_PAGEEXEC
9429 + if (mm->pax_flags & MF_PAX_PAGEEXEC) {
9430 +#ifdef CONFIG_PPC_STD_MMU
9431 + if (is_exec && (error_code & (DSISR_PROTFAULT | DSISR_GUARDED))) {
9432 +#else
9433 + if (is_exec && regs->nip == address) {
9434 +#endif
9435 + switch (pax_handle_fetch_fault(regs)) {
9436 + }
9437 +
9438 + pax_report_fault(regs, (void *)regs->nip, (void *)regs->gpr[PT_R1]);
9439 + do_group_exit(SIGKILL);
9440 + }
9441 + }
9442 +#endif
9443 +
9444 _exception(SIGSEGV, regs, code, address);
9445 goto bail;
9446 }
9447 diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
9448 index 0f0502e..bc3e7a3 100644
9449 --- a/arch/powerpc/mm/mmap.c
9450 +++ b/arch/powerpc/mm/mmap.c
9451 @@ -86,6 +86,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
9452 {
9453 unsigned long random_factor = 0UL;
9454
9455 +#ifdef CONFIG_PAX_RANDMMAP
9456 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
9457 +#endif
9458 +
9459 if (current->flags & PF_RANDOMIZE)
9460 random_factor = arch_mmap_rnd();
9461
9462 @@ -95,9 +99,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
9463 */
9464 if (mmap_is_legacy()) {
9465 mm->mmap_base = TASK_UNMAPPED_BASE;
9466 +
9467 +#ifdef CONFIG_PAX_RANDMMAP
9468 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9469 + mm->mmap_base += mm->delta_mmap;
9470 +#endif
9471 +
9472 mm->get_unmapped_area = arch_get_unmapped_area;
9473 } else {
9474 mm->mmap_base = mmap_base(random_factor);
9475 +
9476 +#ifdef CONFIG_PAX_RANDMMAP
9477 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9478 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
9479 +#endif
9480 +
9481 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
9482 }
9483 }
9484 diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
9485 index 0f432a7..abfe841 100644
9486 --- a/arch/powerpc/mm/slice.c
9487 +++ b/arch/powerpc/mm/slice.c
9488 @@ -105,7 +105,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
9489 if ((mm->task_size - len) < addr)
9490 return 0;
9491 vma = find_vma(mm, addr);
9492 - return (!vma || (addr + len) <= vma->vm_start);
9493 + return check_heap_stack_gap(vma, addr, len, 0);
9494 }
9495
9496 static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice)
9497 @@ -277,6 +277,12 @@ static unsigned long slice_find_area_bottomup(struct mm_struct *mm,
9498 info.align_offset = 0;
9499
9500 addr = TASK_UNMAPPED_BASE;
9501 +
9502 +#ifdef CONFIG_PAX_RANDMMAP
9503 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9504 + addr += mm->delta_mmap;
9505 +#endif
9506 +
9507 while (addr < TASK_SIZE) {
9508 info.low_limit = addr;
9509 if (!slice_scan_available(addr, available, 1, &addr))
9510 @@ -410,6 +416,11 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
9511 if (fixed && addr > (mm->task_size - len))
9512 return -ENOMEM;
9513
9514 +#ifdef CONFIG_PAX_RANDMMAP
9515 + if (!fixed && (mm->pax_flags & MF_PAX_RANDMMAP))
9516 + addr = 0;
9517 +#endif
9518 +
9519 /* If hint, make sure it matches our alignment restrictions */
9520 if (!fixed && addr) {
9521 addr = _ALIGN_UP(addr, 1ul << pshift);
9522 diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
9523 index d966bbe..372124a 100644
9524 --- a/arch/powerpc/platforms/cell/spufs/file.c
9525 +++ b/arch/powerpc/platforms/cell/spufs/file.c
9526 @@ -280,9 +280,9 @@ spufs_mem_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
9527 return VM_FAULT_NOPAGE;
9528 }
9529
9530 -static int spufs_mem_mmap_access(struct vm_area_struct *vma,
9531 +static ssize_t spufs_mem_mmap_access(struct vm_area_struct *vma,
9532 unsigned long address,
9533 - void *buf, int len, int write)
9534 + void *buf, size_t len, int write)
9535 {
9536 struct spu_context *ctx = vma->vm_file->private_data;
9537 unsigned long offset = address - vma->vm_start;
9538 diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
9539 index adbe380..adb7516 100644
9540 --- a/arch/s390/include/asm/atomic.h
9541 +++ b/arch/s390/include/asm/atomic.h
9542 @@ -317,4 +317,14 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
9543 #define atomic64_dec_and_test(_v) (atomic64_sub_return(1, _v) == 0)
9544 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
9545
9546 +#define atomic64_read_unchecked(v) atomic64_read(v)
9547 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
9548 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
9549 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
9550 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
9551 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
9552 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
9553 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
9554 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
9555 +
9556 #endif /* __ARCH_S390_ATOMIC__ */
9557 diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
9558 index e6f8615..4a66339 100644
9559 --- a/arch/s390/include/asm/barrier.h
9560 +++ b/arch/s390/include/asm/barrier.h
9561 @@ -42,7 +42,7 @@
9562 do { \
9563 compiletime_assert_atomic_type(*p); \
9564 barrier(); \
9565 - ACCESS_ONCE(*p) = (v); \
9566 + ACCESS_ONCE_RW(*p) = (v); \
9567 } while (0)
9568
9569 #define smp_load_acquire(p) \
9570 diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h
9571 index 4d7ccac..d03d0ad 100644
9572 --- a/arch/s390/include/asm/cache.h
9573 +++ b/arch/s390/include/asm/cache.h
9574 @@ -9,8 +9,10 @@
9575 #ifndef __ARCH_S390_CACHE_H
9576 #define __ARCH_S390_CACHE_H
9577
9578 -#define L1_CACHE_BYTES 256
9579 +#include <linux/const.h>
9580 +
9581 #define L1_CACHE_SHIFT 8
9582 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
9583 #define NET_SKB_PAD 32
9584
9585 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
9586 diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
9587 index 3ad48f2..64cc6f3 100644
9588 --- a/arch/s390/include/asm/elf.h
9589 +++ b/arch/s390/include/asm/elf.h
9590 @@ -163,6 +163,13 @@ extern unsigned int vdso_enabled;
9591 (STACK_TOP / 3 * 2) : \
9592 (STACK_TOP / 3 * 2) & ~((1UL << 32) - 1))
9593
9594 +#ifdef CONFIG_PAX_ASLR
9595 +#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_31BIT) ? 0x10000UL : 0x80000000UL)
9596 +
9597 +#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_31BIT) ? 15 : 26)
9598 +#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_31BIT) ? 15 : 26)
9599 +#endif
9600 +
9601 /* This yields a mask that user programs can use to figure out what
9602 instruction set this CPU supports. */
9603
9604 diff --git a/arch/s390/include/asm/exec.h b/arch/s390/include/asm/exec.h
9605 index c4a93d6..4d2a9b4 100644
9606 --- a/arch/s390/include/asm/exec.h
9607 +++ b/arch/s390/include/asm/exec.h
9608 @@ -7,6 +7,6 @@
9609 #ifndef __ASM_EXEC_H
9610 #define __ASM_EXEC_H
9611
9612 -extern unsigned long arch_align_stack(unsigned long sp);
9613 +#define arch_align_stack(x) ((x) & ~0xfUL)
9614
9615 #endif /* __ASM_EXEC_H */
9616 diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
9617 index 9dd4cc4..36f4b84 100644
9618 --- a/arch/s390/include/asm/uaccess.h
9619 +++ b/arch/s390/include/asm/uaccess.h
9620 @@ -59,6 +59,7 @@ static inline int __range_ok(unsigned long addr, unsigned long size)
9621 __range_ok((unsigned long)(addr), (size)); \
9622 })
9623
9624 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
9625 #define access_ok(type, addr, size) __access_ok(addr, size)
9626
9627 /*
9628 @@ -278,6 +279,10 @@ static inline unsigned long __must_check
9629 copy_to_user(void __user *to, const void *from, unsigned long n)
9630 {
9631 might_fault();
9632 +
9633 + if ((long)n < 0)
9634 + return n;
9635 +
9636 return __copy_to_user(to, from, n);
9637 }
9638
9639 @@ -307,10 +312,14 @@ __compiletime_warning("copy_from_user() buffer size is not provably correct")
9640 static inline unsigned long __must_check
9641 copy_from_user(void *to, const void __user *from, unsigned long n)
9642 {
9643 - unsigned int sz = __compiletime_object_size(to);
9644 + size_t sz = __compiletime_object_size(to);
9645
9646 might_fault();
9647 - if (unlikely(sz != -1 && sz < n)) {
9648 +
9649 + if ((long)n < 0)
9650 + return n;
9651 +
9652 + if (unlikely(sz != (size_t)-1 && sz < n)) {
9653 copy_from_user_overflow();
9654 return n;
9655 }
9656 diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c
9657 index 0c1a679..e1df357 100644
9658 --- a/arch/s390/kernel/module.c
9659 +++ b/arch/s390/kernel/module.c
9660 @@ -159,11 +159,11 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs,
9661
9662 /* Increase core size by size of got & plt and set start
9663 offsets for got and plt. */
9664 - me->core_size = ALIGN(me->core_size, 4);
9665 - me->arch.got_offset = me->core_size;
9666 - me->core_size += me->arch.got_size;
9667 - me->arch.plt_offset = me->core_size;
9668 - me->core_size += me->arch.plt_size;
9669 + me->core_size_rw = ALIGN(me->core_size_rw, 4);
9670 + me->arch.got_offset = me->core_size_rw;
9671 + me->core_size_rw += me->arch.got_size;
9672 + me->arch.plt_offset = me->core_size_rx;
9673 + me->core_size_rx += me->arch.plt_size;
9674 return 0;
9675 }
9676
9677 @@ -279,7 +279,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9678 if (info->got_initialized == 0) {
9679 Elf_Addr *gotent;
9680
9681 - gotent = me->module_core + me->arch.got_offset +
9682 + gotent = me->module_core_rw + me->arch.got_offset +
9683 info->got_offset;
9684 *gotent = val;
9685 info->got_initialized = 1;
9686 @@ -302,7 +302,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9687 rc = apply_rela_bits(loc, val, 0, 64, 0);
9688 else if (r_type == R_390_GOTENT ||
9689 r_type == R_390_GOTPLTENT) {
9690 - val += (Elf_Addr) me->module_core - loc;
9691 + val += (Elf_Addr) me->module_core_rw - loc;
9692 rc = apply_rela_bits(loc, val, 1, 32, 1);
9693 }
9694 break;
9695 @@ -315,7 +315,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9696 case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */
9697 if (info->plt_initialized == 0) {
9698 unsigned int *ip;
9699 - ip = me->module_core + me->arch.plt_offset +
9700 + ip = me->module_core_rx + me->arch.plt_offset +
9701 info->plt_offset;
9702 ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */
9703 ip[1] = 0x100a0004;
9704 @@ -334,7 +334,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9705 val - loc + 0xffffUL < 0x1ffffeUL) ||
9706 (r_type == R_390_PLT32DBL &&
9707 val - loc + 0xffffffffULL < 0x1fffffffeULL)))
9708 - val = (Elf_Addr) me->module_core +
9709 + val = (Elf_Addr) me->module_core_rx +
9710 me->arch.plt_offset +
9711 info->plt_offset;
9712 val += rela->r_addend - loc;
9713 @@ -356,7 +356,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9714 case R_390_GOTOFF32: /* 32 bit offset to GOT. */
9715 case R_390_GOTOFF64: /* 64 bit offset to GOT. */
9716 val = val + rela->r_addend -
9717 - ((Elf_Addr) me->module_core + me->arch.got_offset);
9718 + ((Elf_Addr) me->module_core_rw + me->arch.got_offset);
9719 if (r_type == R_390_GOTOFF16)
9720 rc = apply_rela_bits(loc, val, 0, 16, 0);
9721 else if (r_type == R_390_GOTOFF32)
9722 @@ -366,7 +366,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
9723 break;
9724 case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */
9725 case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */
9726 - val = (Elf_Addr) me->module_core + me->arch.got_offset +
9727 + val = (Elf_Addr) me->module_core_rw + me->arch.got_offset +
9728 rela->r_addend - loc;
9729 if (r_type == R_390_GOTPC)
9730 rc = apply_rela_bits(loc, val, 1, 32, 0);
9731 diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
9732 index 8f587d8..0642516b 100644
9733 --- a/arch/s390/kernel/process.c
9734 +++ b/arch/s390/kernel/process.c
9735 @@ -200,27 +200,3 @@ unsigned long get_wchan(struct task_struct *p)
9736 }
9737 return 0;
9738 }
9739 -
9740 -unsigned long arch_align_stack(unsigned long sp)
9741 -{
9742 - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
9743 - sp -= get_random_int() & ~PAGE_MASK;
9744 - return sp & ~0xf;
9745 -}
9746 -
9747 -static inline unsigned long brk_rnd(void)
9748 -{
9749 - /* 8MB for 32bit, 1GB for 64bit */
9750 - if (is_32bit_task())
9751 - return (get_random_int() & 0x7ffUL) << PAGE_SHIFT;
9752 - else
9753 - return (get_random_int() & 0x3ffffUL) << PAGE_SHIFT;
9754 -}
9755 -
9756 -unsigned long arch_randomize_brk(struct mm_struct *mm)
9757 -{
9758 - unsigned long ret;
9759 -
9760 - ret = PAGE_ALIGN(mm->brk + brk_rnd());
9761 - return (ret > mm->brk) ? ret : mm->brk;
9762 -}
9763 diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
9764 index 6e552af..3e608a1 100644
9765 --- a/arch/s390/mm/mmap.c
9766 +++ b/arch/s390/mm/mmap.c
9767 @@ -239,6 +239,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
9768 {
9769 unsigned long random_factor = 0UL;
9770
9771 +#ifdef CONFIG_PAX_RANDMMAP
9772 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
9773 +#endif
9774 +
9775 if (current->flags & PF_RANDOMIZE)
9776 random_factor = arch_mmap_rnd();
9777
9778 @@ -248,9 +252,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
9779 */
9780 if (mmap_is_legacy()) {
9781 mm->mmap_base = mmap_base_legacy(random_factor);
9782 +
9783 +#ifdef CONFIG_PAX_RANDMMAP
9784 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9785 + mm->mmap_base += mm->delta_mmap;
9786 +#endif
9787 +
9788 mm->get_unmapped_area = s390_get_unmapped_area;
9789 } else {
9790 mm->mmap_base = mmap_base(random_factor);
9791 +
9792 +#ifdef CONFIG_PAX_RANDMMAP
9793 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9794 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
9795 +#endif
9796 +
9797 mm->get_unmapped_area = s390_get_unmapped_area_topdown;
9798 }
9799 }
9800 diff --git a/arch/score/include/asm/cache.h b/arch/score/include/asm/cache.h
9801 index ae3d59f..f65f075 100644
9802 --- a/arch/score/include/asm/cache.h
9803 +++ b/arch/score/include/asm/cache.h
9804 @@ -1,7 +1,9 @@
9805 #ifndef _ASM_SCORE_CACHE_H
9806 #define _ASM_SCORE_CACHE_H
9807
9808 +#include <linux/const.h>
9809 +
9810 #define L1_CACHE_SHIFT 4
9811 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
9812 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
9813
9814 #endif /* _ASM_SCORE_CACHE_H */
9815 diff --git a/arch/score/include/asm/exec.h b/arch/score/include/asm/exec.h
9816 index f9f3cd5..58ff438 100644
9817 --- a/arch/score/include/asm/exec.h
9818 +++ b/arch/score/include/asm/exec.h
9819 @@ -1,6 +1,6 @@
9820 #ifndef _ASM_SCORE_EXEC_H
9821 #define _ASM_SCORE_EXEC_H
9822
9823 -extern unsigned long arch_align_stack(unsigned long sp);
9824 +#define arch_align_stack(x) (x)
9825
9826 #endif /* _ASM_SCORE_EXEC_H */
9827 diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c
9828 index a1519ad3..e8ac1ff 100644
9829 --- a/arch/score/kernel/process.c
9830 +++ b/arch/score/kernel/process.c
9831 @@ -116,8 +116,3 @@ unsigned long get_wchan(struct task_struct *task)
9832
9833 return task_pt_regs(task)->cp0_epc;
9834 }
9835 -
9836 -unsigned long arch_align_stack(unsigned long sp)
9837 -{
9838 - return sp;
9839 -}
9840 diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h
9841 index ef9e555..331bd29 100644
9842 --- a/arch/sh/include/asm/cache.h
9843 +++ b/arch/sh/include/asm/cache.h
9844 @@ -9,10 +9,11 @@
9845 #define __ASM_SH_CACHE_H
9846 #ifdef __KERNEL__
9847
9848 +#include <linux/const.h>
9849 #include <linux/init.h>
9850 #include <cpu/cache.h>
9851
9852 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
9853 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
9854
9855 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
9856
9857 diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c
9858 index 6777177..cb5e44f 100644
9859 --- a/arch/sh/mm/mmap.c
9860 +++ b/arch/sh/mm/mmap.c
9861 @@ -36,6 +36,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
9862 struct mm_struct *mm = current->mm;
9863 struct vm_area_struct *vma;
9864 int do_colour_align;
9865 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
9866 struct vm_unmapped_area_info info;
9867
9868 if (flags & MAP_FIXED) {
9869 @@ -55,6 +56,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
9870 if (filp || (flags & MAP_SHARED))
9871 do_colour_align = 1;
9872
9873 +#ifdef CONFIG_PAX_RANDMMAP
9874 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
9875 +#endif
9876 +
9877 if (addr) {
9878 if (do_colour_align)
9879 addr = COLOUR_ALIGN(addr, pgoff);
9880 @@ -62,14 +67,13 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
9881 addr = PAGE_ALIGN(addr);
9882
9883 vma = find_vma(mm, addr);
9884 - if (TASK_SIZE - len >= addr &&
9885 - (!vma || addr + len <= vma->vm_start))
9886 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
9887 return addr;
9888 }
9889
9890 info.flags = 0;
9891 info.length = len;
9892 - info.low_limit = TASK_UNMAPPED_BASE;
9893 + info.low_limit = mm->mmap_base;
9894 info.high_limit = TASK_SIZE;
9895 info.align_mask = do_colour_align ? (PAGE_MASK & shm_align_mask) : 0;
9896 info.align_offset = pgoff << PAGE_SHIFT;
9897 @@ -85,6 +89,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
9898 struct mm_struct *mm = current->mm;
9899 unsigned long addr = addr0;
9900 int do_colour_align;
9901 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
9902 struct vm_unmapped_area_info info;
9903
9904 if (flags & MAP_FIXED) {
9905 @@ -104,6 +109,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
9906 if (filp || (flags & MAP_SHARED))
9907 do_colour_align = 1;
9908
9909 +#ifdef CONFIG_PAX_RANDMMAP
9910 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
9911 +#endif
9912 +
9913 /* requesting a specific address */
9914 if (addr) {
9915 if (do_colour_align)
9916 @@ -112,8 +121,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
9917 addr = PAGE_ALIGN(addr);
9918
9919 vma = find_vma(mm, addr);
9920 - if (TASK_SIZE - len >= addr &&
9921 - (!vma || addr + len <= vma->vm_start))
9922 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
9923 return addr;
9924 }
9925
9926 @@ -135,6 +143,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
9927 VM_BUG_ON(addr != -ENOMEM);
9928 info.flags = 0;
9929 info.low_limit = TASK_UNMAPPED_BASE;
9930 +
9931 +#ifdef CONFIG_PAX_RANDMMAP
9932 + if (mm->pax_flags & MF_PAX_RANDMMAP)
9933 + info.low_limit += mm->delta_mmap;
9934 +#endif
9935 +
9936 info.high_limit = TASK_SIZE;
9937 addr = vm_unmapped_area(&info);
9938 }
9939 diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
9940 index 4082749..fd97781 100644
9941 --- a/arch/sparc/include/asm/atomic_64.h
9942 +++ b/arch/sparc/include/asm/atomic_64.h
9943 @@ -15,18 +15,38 @@
9944 #define ATOMIC64_INIT(i) { (i) }
9945
9946 #define atomic_read(v) ACCESS_ONCE((v)->counter)
9947 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
9948 +{
9949 + return ACCESS_ONCE(v->counter);
9950 +}
9951 #define atomic64_read(v) ACCESS_ONCE((v)->counter)
9952 +static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
9953 +{
9954 + return ACCESS_ONCE(v->counter);
9955 +}
9956
9957 #define atomic_set(v, i) (((v)->counter) = i)
9958 +static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
9959 +{
9960 + v->counter = i;
9961 +}
9962 #define atomic64_set(v, i) (((v)->counter) = i)
9963 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
9964 +{
9965 + v->counter = i;
9966 +}
9967
9968 -#define ATOMIC_OP(op) \
9969 -void atomic_##op(int, atomic_t *); \
9970 -void atomic64_##op(long, atomic64_t *);
9971 +#define __ATOMIC_OP(op, suffix) \
9972 +void atomic_##op##suffix(int, atomic##suffix##_t *); \
9973 +void atomic64_##op##suffix(long, atomic64##suffix##_t *);
9974
9975 -#define ATOMIC_OP_RETURN(op) \
9976 -int atomic_##op##_return(int, atomic_t *); \
9977 -long atomic64_##op##_return(long, atomic64_t *);
9978 +#define ATOMIC_OP(op) __ATOMIC_OP(op, ) __ATOMIC_OP(op, _unchecked)
9979 +
9980 +#define __ATOMIC_OP_RETURN(op, suffix) \
9981 +int atomic_##op##_return##suffix(int, atomic##suffix##_t *); \
9982 +long atomic64_##op##_return##suffix(long, atomic64##suffix##_t *);
9983 +
9984 +#define ATOMIC_OP_RETURN(op) __ATOMIC_OP_RETURN(op, ) __ATOMIC_OP_RETURN(op, _unchecked)
9985
9986 #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
9987
9988 @@ -35,13 +55,23 @@ ATOMIC_OPS(sub)
9989
9990 #undef ATOMIC_OPS
9991 #undef ATOMIC_OP_RETURN
9992 +#undef __ATOMIC_OP_RETURN
9993 #undef ATOMIC_OP
9994 +#undef __ATOMIC_OP
9995
9996 #define atomic_dec_return(v) atomic_sub_return(1, v)
9997 #define atomic64_dec_return(v) atomic64_sub_return(1, v)
9998
9999 #define atomic_inc_return(v) atomic_add_return(1, v)
10000 +static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
10001 +{
10002 + return atomic_add_return_unchecked(1, v);
10003 +}
10004 #define atomic64_inc_return(v) atomic64_add_return(1, v)
10005 +static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
10006 +{
10007 + return atomic64_add_return_unchecked(1, v);
10008 +}
10009
10010 /*
10011 * atomic_inc_and_test - increment and test
10012 @@ -52,6 +82,10 @@ ATOMIC_OPS(sub)
10013 * other cases.
10014 */
10015 #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
10016 +static inline int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
10017 +{
10018 + return atomic_inc_return_unchecked(v) == 0;
10019 +}
10020 #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
10021
10022 #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
10023 @@ -61,25 +95,60 @@ ATOMIC_OPS(sub)
10024 #define atomic64_dec_and_test(v) (atomic64_sub_return(1, v) == 0)
10025
10026 #define atomic_inc(v) atomic_add(1, v)
10027 +static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
10028 +{
10029 + atomic_add_unchecked(1, v);
10030 +}
10031 #define atomic64_inc(v) atomic64_add(1, v)
10032 +static inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
10033 +{
10034 + atomic64_add_unchecked(1, v);
10035 +}
10036
10037 #define atomic_dec(v) atomic_sub(1, v)
10038 +static inline void atomic_dec_unchecked(atomic_unchecked_t *v)
10039 +{
10040 + atomic_sub_unchecked(1, v);
10041 +}
10042 #define atomic64_dec(v) atomic64_sub(1, v)
10043 +static inline void atomic64_dec_unchecked(atomic64_unchecked_t *v)
10044 +{
10045 + atomic64_sub_unchecked(1, v);
10046 +}
10047
10048 #define atomic_add_negative(i, v) (atomic_add_return(i, v) < 0)
10049 #define atomic64_add_negative(i, v) (atomic64_add_return(i, v) < 0)
10050
10051 #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
10052 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
10053 +{
10054 + return cmpxchg(&v->counter, old, new);
10055 +}
10056 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
10057 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
10058 +{
10059 + return xchg(&v->counter, new);
10060 +}
10061
10062 static inline int __atomic_add_unless(atomic_t *v, int a, int u)
10063 {
10064 - int c, old;
10065 + int c, old, new;
10066 c = atomic_read(v);
10067 for (;;) {
10068 - if (unlikely(c == (u)))
10069 + if (unlikely(c == u))
10070 break;
10071 - old = atomic_cmpxchg((v), c, c + (a));
10072 +
10073 + asm volatile("addcc %2, %0, %0\n"
10074 +
10075 +#ifdef CONFIG_PAX_REFCOUNT
10076 + "tvs %%icc, 6\n"
10077 +#endif
10078 +
10079 + : "=r" (new)
10080 + : "0" (c), "ir" (a)
10081 + : "cc");
10082 +
10083 + old = atomic_cmpxchg(v, c, new);
10084 if (likely(old == c))
10085 break;
10086 c = old;
10087 @@ -90,20 +159,35 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
10088 #define atomic64_cmpxchg(v, o, n) \
10089 ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
10090 #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
10091 +static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new)
10092 +{
10093 + return xchg(&v->counter, new);
10094 +}
10095
10096 static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
10097 {
10098 - long c, old;
10099 + long c, old, new;
10100 c = atomic64_read(v);
10101 for (;;) {
10102 - if (unlikely(c == (u)))
10103 + if (unlikely(c == u))
10104 break;
10105 - old = atomic64_cmpxchg((v), c, c + (a));
10106 +
10107 + asm volatile("addcc %2, %0, %0\n"
10108 +
10109 +#ifdef CONFIG_PAX_REFCOUNT
10110 + "tvs %%xcc, 6\n"
10111 +#endif
10112 +
10113 + : "=r" (new)
10114 + : "0" (c), "ir" (a)
10115 + : "cc");
10116 +
10117 + old = atomic64_cmpxchg(v, c, new);
10118 if (likely(old == c))
10119 break;
10120 c = old;
10121 }
10122 - return c != (u);
10123 + return c != u;
10124 }
10125
10126 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
10127 diff --git a/arch/sparc/include/asm/barrier_64.h b/arch/sparc/include/asm/barrier_64.h
10128 index 809941e..b443309 100644
10129 --- a/arch/sparc/include/asm/barrier_64.h
10130 +++ b/arch/sparc/include/asm/barrier_64.h
10131 @@ -60,7 +60,7 @@ do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \
10132 do { \
10133 compiletime_assert_atomic_type(*p); \
10134 barrier(); \
10135 - ACCESS_ONCE(*p) = (v); \
10136 + ACCESS_ONCE_RW(*p) = (v); \
10137 } while (0)
10138
10139 #define smp_load_acquire(p) \
10140 diff --git a/arch/sparc/include/asm/cache.h b/arch/sparc/include/asm/cache.h
10141 index 5bb6991..5c2132e 100644
10142 --- a/arch/sparc/include/asm/cache.h
10143 +++ b/arch/sparc/include/asm/cache.h
10144 @@ -7,10 +7,12 @@
10145 #ifndef _SPARC_CACHE_H
10146 #define _SPARC_CACHE_H
10147
10148 +#include <linux/const.h>
10149 +
10150 #define ARCH_SLAB_MINALIGN __alignof__(unsigned long long)
10151
10152 #define L1_CACHE_SHIFT 5
10153 -#define L1_CACHE_BYTES 32
10154 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
10155
10156 #ifdef CONFIG_SPARC32
10157 #define SMP_CACHE_BYTES_SHIFT 5
10158 diff --git a/arch/sparc/include/asm/elf_32.h b/arch/sparc/include/asm/elf_32.h
10159 index a24e41f..47677ff 100644
10160 --- a/arch/sparc/include/asm/elf_32.h
10161 +++ b/arch/sparc/include/asm/elf_32.h
10162 @@ -114,6 +114,13 @@ typedef struct {
10163
10164 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
10165
10166 +#ifdef CONFIG_PAX_ASLR
10167 +#define PAX_ELF_ET_DYN_BASE 0x10000UL
10168 +
10169 +#define PAX_DELTA_MMAP_LEN 16
10170 +#define PAX_DELTA_STACK_LEN 16
10171 +#endif
10172 +
10173 /* This yields a mask that user programs can use to figure out what
10174 instruction set this cpu supports. This can NOT be done in userspace
10175 on Sparc. */
10176 diff --git a/arch/sparc/include/asm/elf_64.h b/arch/sparc/include/asm/elf_64.h
10177 index 370ca1e..d4f4a98 100644
10178 --- a/arch/sparc/include/asm/elf_64.h
10179 +++ b/arch/sparc/include/asm/elf_64.h
10180 @@ -189,6 +189,13 @@ typedef struct {
10181 #define ELF_ET_DYN_BASE 0x0000010000000000UL
10182 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
10183
10184 +#ifdef CONFIG_PAX_ASLR
10185 +#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_32BIT) ? 0x10000UL : 0x100000UL)
10186 +
10187 +#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT) ? 14 : 28)
10188 +#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT) ? 15 : 29)
10189 +#endif
10190 +
10191 extern unsigned long sparc64_elf_hwcap;
10192 #define ELF_HWCAP sparc64_elf_hwcap
10193
10194 diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h
10195 index a3890da..f6a408e 100644
10196 --- a/arch/sparc/include/asm/pgalloc_32.h
10197 +++ b/arch/sparc/include/asm/pgalloc_32.h
10198 @@ -35,6 +35,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp)
10199 }
10200
10201 #define pgd_populate(MM, PGD, PMD) pgd_set(PGD, PMD)
10202 +#define pgd_populate_kernel(MM, PGD, PMD) pgd_populate((MM), (PGD), (PMD))
10203
10204 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm,
10205 unsigned long address)
10206 diff --git a/arch/sparc/include/asm/pgalloc_64.h b/arch/sparc/include/asm/pgalloc_64.h
10207 index 5e31871..13469c6 100644
10208 --- a/arch/sparc/include/asm/pgalloc_64.h
10209 +++ b/arch/sparc/include/asm/pgalloc_64.h
10210 @@ -21,6 +21,7 @@ static inline void __pgd_populate(pgd_t *pgd, pud_t *pud)
10211 }
10212
10213 #define pgd_populate(MM, PGD, PUD) __pgd_populate(PGD, PUD)
10214 +#define pgd_populate_kernel(MM, PGD, PMD) pgd_populate((MM), (PGD), (PMD))
10215
10216 static inline pgd_t *pgd_alloc(struct mm_struct *mm)
10217 {
10218 @@ -38,6 +39,7 @@ static inline void __pud_populate(pud_t *pud, pmd_t *pmd)
10219 }
10220
10221 #define pud_populate(MM, PUD, PMD) __pud_populate(PUD, PMD)
10222 +#define pud_populate_kernel(MM, PUD, PMD) pud_populate((MM), (PUD), (PMD))
10223
10224 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
10225 {
10226 diff --git a/arch/sparc/include/asm/pgtable.h b/arch/sparc/include/asm/pgtable.h
10227 index 59ba6f6..4518128 100644
10228 --- a/arch/sparc/include/asm/pgtable.h
10229 +++ b/arch/sparc/include/asm/pgtable.h
10230 @@ -5,4 +5,8 @@
10231 #else
10232 #include <asm/pgtable_32.h>
10233 #endif
10234 +
10235 +#define ktla_ktva(addr) (addr)
10236 +#define ktva_ktla(addr) (addr)
10237 +
10238 #endif
10239 diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
10240 index f06b36a..bca3189 100644
10241 --- a/arch/sparc/include/asm/pgtable_32.h
10242 +++ b/arch/sparc/include/asm/pgtable_32.h
10243 @@ -51,6 +51,9 @@ unsigned long __init bootmem_init(unsigned long *pages_avail);
10244 #define PAGE_SHARED SRMMU_PAGE_SHARED
10245 #define PAGE_COPY SRMMU_PAGE_COPY
10246 #define PAGE_READONLY SRMMU_PAGE_RDONLY
10247 +#define PAGE_SHARED_NOEXEC SRMMU_PAGE_SHARED_NOEXEC
10248 +#define PAGE_COPY_NOEXEC SRMMU_PAGE_COPY_NOEXEC
10249 +#define PAGE_READONLY_NOEXEC SRMMU_PAGE_RDONLY_NOEXEC
10250 #define PAGE_KERNEL SRMMU_PAGE_KERNEL
10251
10252 /* Top-level page directory - dummy used by init-mm.
10253 @@ -63,18 +66,18 @@ extern unsigned long ptr_in_current_pgd;
10254
10255 /* xwr */
10256 #define __P000 PAGE_NONE
10257 -#define __P001 PAGE_READONLY
10258 -#define __P010 PAGE_COPY
10259 -#define __P011 PAGE_COPY
10260 +#define __P001 PAGE_READONLY_NOEXEC
10261 +#define __P010 PAGE_COPY_NOEXEC
10262 +#define __P011 PAGE_COPY_NOEXEC
10263 #define __P100 PAGE_READONLY
10264 #define __P101 PAGE_READONLY
10265 #define __P110 PAGE_COPY
10266 #define __P111 PAGE_COPY
10267
10268 #define __S000 PAGE_NONE
10269 -#define __S001 PAGE_READONLY
10270 -#define __S010 PAGE_SHARED
10271 -#define __S011 PAGE_SHARED
10272 +#define __S001 PAGE_READONLY_NOEXEC
10273 +#define __S010 PAGE_SHARED_NOEXEC
10274 +#define __S011 PAGE_SHARED_NOEXEC
10275 #define __S100 PAGE_READONLY
10276 #define __S101 PAGE_READONLY
10277 #define __S110 PAGE_SHARED
10278 diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgtsrmmu.h
10279 index ae51a11..eadfd03 100644
10280 --- a/arch/sparc/include/asm/pgtsrmmu.h
10281 +++ b/arch/sparc/include/asm/pgtsrmmu.h
10282 @@ -111,6 +111,11 @@
10283 SRMMU_EXEC | SRMMU_REF)
10284 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
10285 SRMMU_EXEC | SRMMU_REF)
10286 +
10287 +#define SRMMU_PAGE_SHARED_NOEXEC __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_WRITE | SRMMU_REF)
10288 +#define SRMMU_PAGE_COPY_NOEXEC __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_REF)
10289 +#define SRMMU_PAGE_RDONLY_NOEXEC __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_REF)
10290 +
10291 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
10292 SRMMU_DIRTY | SRMMU_REF)
10293
10294 diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h
10295 index 29d64b1..4272fe8 100644
10296 --- a/arch/sparc/include/asm/setup.h
10297 +++ b/arch/sparc/include/asm/setup.h
10298 @@ -55,8 +55,8 @@ int handle_ldf_stq(u32 insn, struct pt_regs *regs);
10299 void handle_ld_nf(u32 insn, struct pt_regs *regs);
10300
10301 /* init_64.c */
10302 -extern atomic_t dcpage_flushes;
10303 -extern atomic_t dcpage_flushes_xcall;
10304 +extern atomic_unchecked_t dcpage_flushes;
10305 +extern atomic_unchecked_t dcpage_flushes_xcall;
10306
10307 extern int sysctl_tsb_ratio;
10308 #endif
10309 diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h
10310 index 9689176..63c18ea 100644
10311 --- a/arch/sparc/include/asm/spinlock_64.h
10312 +++ b/arch/sparc/include/asm/spinlock_64.h
10313 @@ -92,14 +92,19 @@ static inline void arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long fla
10314
10315 /* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
10316
10317 -static void inline arch_read_lock(arch_rwlock_t *lock)
10318 +static inline void arch_read_lock(arch_rwlock_t *lock)
10319 {
10320 unsigned long tmp1, tmp2;
10321
10322 __asm__ __volatile__ (
10323 "1: ldsw [%2], %0\n"
10324 " brlz,pn %0, 2f\n"
10325 -"4: add %0, 1, %1\n"
10326 +"4: addcc %0, 1, %1\n"
10327 +
10328 +#ifdef CONFIG_PAX_REFCOUNT
10329 +" tvs %%icc, 6\n"
10330 +#endif
10331 +
10332 " cas [%2], %0, %1\n"
10333 " cmp %0, %1\n"
10334 " bne,pn %%icc, 1b\n"
10335 @@ -112,10 +117,10 @@ static void inline arch_read_lock(arch_rwlock_t *lock)
10336 " .previous"
10337 : "=&r" (tmp1), "=&r" (tmp2)
10338 : "r" (lock)
10339 - : "memory");
10340 + : "memory", "cc");
10341 }
10342
10343 -static int inline arch_read_trylock(arch_rwlock_t *lock)
10344 +static inline int arch_read_trylock(arch_rwlock_t *lock)
10345 {
10346 int tmp1, tmp2;
10347
10348 @@ -123,7 +128,12 @@ static int inline arch_read_trylock(arch_rwlock_t *lock)
10349 "1: ldsw [%2], %0\n"
10350 " brlz,a,pn %0, 2f\n"
10351 " mov 0, %0\n"
10352 -" add %0, 1, %1\n"
10353 +" addcc %0, 1, %1\n"
10354 +
10355 +#ifdef CONFIG_PAX_REFCOUNT
10356 +" tvs %%icc, 6\n"
10357 +#endif
10358 +
10359 " cas [%2], %0, %1\n"
10360 " cmp %0, %1\n"
10361 " bne,pn %%icc, 1b\n"
10362 @@ -136,13 +146,18 @@ static int inline arch_read_trylock(arch_rwlock_t *lock)
10363 return tmp1;
10364 }
10365
10366 -static void inline arch_read_unlock(arch_rwlock_t *lock)
10367 +static inline void arch_read_unlock(arch_rwlock_t *lock)
10368 {
10369 unsigned long tmp1, tmp2;
10370
10371 __asm__ __volatile__(
10372 "1: lduw [%2], %0\n"
10373 -" sub %0, 1, %1\n"
10374 +" subcc %0, 1, %1\n"
10375 +
10376 +#ifdef CONFIG_PAX_REFCOUNT
10377 +" tvs %%icc, 6\n"
10378 +#endif
10379 +
10380 " cas [%2], %0, %1\n"
10381 " cmp %0, %1\n"
10382 " bne,pn %%xcc, 1b\n"
10383 @@ -152,7 +167,7 @@ static void inline arch_read_unlock(arch_rwlock_t *lock)
10384 : "memory");
10385 }
10386
10387 -static void inline arch_write_lock(arch_rwlock_t *lock)
10388 +static inline void arch_write_lock(arch_rwlock_t *lock)
10389 {
10390 unsigned long mask, tmp1, tmp2;
10391
10392 @@ -177,7 +192,7 @@ static void inline arch_write_lock(arch_rwlock_t *lock)
10393 : "memory");
10394 }
10395
10396 -static void inline arch_write_unlock(arch_rwlock_t *lock)
10397 +static inline void arch_write_unlock(arch_rwlock_t *lock)
10398 {
10399 __asm__ __volatile__(
10400 " stw %%g0, [%0]"
10401 @@ -186,7 +201,7 @@ static void inline arch_write_unlock(arch_rwlock_t *lock)
10402 : "memory");
10403 }
10404
10405 -static int inline arch_write_trylock(arch_rwlock_t *lock)
10406 +static inline int arch_write_trylock(arch_rwlock_t *lock)
10407 {
10408 unsigned long mask, tmp1, tmp2, result;
10409
10410 diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h
10411 index 229475f..2fca9163 100644
10412 --- a/arch/sparc/include/asm/thread_info_32.h
10413 +++ b/arch/sparc/include/asm/thread_info_32.h
10414 @@ -48,6 +48,7 @@ struct thread_info {
10415 struct reg_window32 reg_window[NSWINS]; /* align for ldd! */
10416 unsigned long rwbuf_stkptrs[NSWINS];
10417 unsigned long w_saved;
10418 + unsigned long lowest_stack;
10419 };
10420
10421 /*
10422 diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h
10423 index bde5982..9cbb56d 100644
10424 --- a/arch/sparc/include/asm/thread_info_64.h
10425 +++ b/arch/sparc/include/asm/thread_info_64.h
10426 @@ -59,6 +59,8 @@ struct thread_info {
10427 struct pt_regs *kern_una_regs;
10428 unsigned int kern_una_insn;
10429
10430 + unsigned long lowest_stack;
10431 +
10432 unsigned long fpregs[(7 * 256) / sizeof(unsigned long)]
10433 __attribute__ ((aligned(64)));
10434 };
10435 @@ -180,12 +182,13 @@ register struct thread_info *current_thread_info_reg asm("g6");
10436 #define TIF_NEED_RESCHED 3 /* rescheduling necessary */
10437 /* flag bit 4 is available */
10438 #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */
10439 -/* flag bit 6 is available */
10440 +#define TIF_GRSEC_SETXID 6 /* update credentials on syscall entry/exit */
10441 #define TIF_32BIT 7 /* 32-bit binary */
10442 #define TIF_NOHZ 8 /* in adaptive nohz mode */
10443 #define TIF_SECCOMP 9 /* secure computing */
10444 #define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */
10445 #define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
10446 +
10447 /* NOTE: Thread flags >= 12 should be ones we have no interest
10448 * in using in assembly, else we can't use the mask as
10449 * an immediate value in instructions such as andcc.
10450 @@ -205,12 +208,17 @@ register struct thread_info *current_thread_info_reg asm("g6");
10451 #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
10452 #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
10453 #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
10454 +#define _TIF_GRSEC_SETXID (1<<TIF_GRSEC_SETXID)
10455
10456 #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \
10457 _TIF_DO_NOTIFY_RESUME_MASK | \
10458 _TIF_NEED_RESCHED)
10459 #define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING)
10460
10461 +#define _TIF_WORK_SYSCALL \
10462 + (_TIF_SYSCALL_TRACE | _TIF_SECCOMP | _TIF_SYSCALL_AUDIT | \
10463 + _TIF_SYSCALL_TRACEPOINT | _TIF_NOHZ | _TIF_GRSEC_SETXID)
10464 +
10465 #define is_32bit_task() (test_thread_flag(TIF_32BIT))
10466
10467 /*
10468 diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h
10469 index bd56c28..4b63d83 100644
10470 --- a/arch/sparc/include/asm/uaccess.h
10471 +++ b/arch/sparc/include/asm/uaccess.h
10472 @@ -1,5 +1,6 @@
10473 #ifndef ___ASM_SPARC_UACCESS_H
10474 #define ___ASM_SPARC_UACCESS_H
10475 +
10476 #if defined(__sparc__) && defined(__arch64__)
10477 #include <asm/uaccess_64.h>
10478 #else
10479 diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
10480 index 64ee103..388aef0 100644
10481 --- a/arch/sparc/include/asm/uaccess_32.h
10482 +++ b/arch/sparc/include/asm/uaccess_32.h
10483 @@ -47,6 +47,7 @@
10484 #define __user_ok(addr, size) ({ (void)(size); (addr) < STACK_TOP; })
10485 #define __kernel_ok (segment_eq(get_fs(), KERNEL_DS))
10486 #define __access_ok(addr, size) (__user_ok((addr) & get_fs().seg, (size)))
10487 +#define access_ok_noprefault(type, addr, size) access_ok((type), (addr), (size))
10488 #define access_ok(type, addr, size) \
10489 ({ (void)(type); __access_ok((unsigned long)(addr), size); })
10490
10491 @@ -313,27 +314,46 @@ unsigned long __copy_user(void __user *to, const void __user *from, unsigned lon
10492
10493 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
10494 {
10495 - if (n && __access_ok((unsigned long) to, n))
10496 + if ((long)n < 0)
10497 + return n;
10498 +
10499 + if (n && __access_ok((unsigned long) to, n)) {
10500 + if (!__builtin_constant_p(n))
10501 + check_object_size(from, n, true);
10502 return __copy_user(to, (__force void __user *) from, n);
10503 - else
10504 + } else
10505 return n;
10506 }
10507
10508 static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n)
10509 {
10510 + if ((long)n < 0)
10511 + return n;
10512 +
10513 + if (!__builtin_constant_p(n))
10514 + check_object_size(from, n, true);
10515 +
10516 return __copy_user(to, (__force void __user *) from, n);
10517 }
10518
10519 static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
10520 {
10521 - if (n && __access_ok((unsigned long) from, n))
10522 + if ((long)n < 0)
10523 + return n;
10524 +
10525 + if (n && __access_ok((unsigned long) from, n)) {
10526 + if (!__builtin_constant_p(n))
10527 + check_object_size(to, n, false);
10528 return __copy_user((__force void __user *) to, from, n);
10529 - else
10530 + } else
10531 return n;
10532 }
10533
10534 static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n)
10535 {
10536 + if ((long)n < 0)
10537 + return n;
10538 +
10539 return __copy_user((__force void __user *) to, from, n);
10540 }
10541
10542 diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
10543 index ea6e9a2..5703598 100644
10544 --- a/arch/sparc/include/asm/uaccess_64.h
10545 +++ b/arch/sparc/include/asm/uaccess_64.h
10546 @@ -10,6 +10,7 @@
10547 #include <linux/compiler.h>
10548 #include <linux/string.h>
10549 #include <linux/thread_info.h>
10550 +#include <linux/kernel.h>
10551 #include <asm/asi.h>
10552 #include <asm/spitfire.h>
10553 #include <asm-generic/uaccess-unaligned.h>
10554 @@ -76,6 +77,11 @@ static inline int __access_ok(const void __user * addr, unsigned long size)
10555 return 1;
10556 }
10557
10558 +static inline int access_ok_noprefault(int type, const void __user * addr, unsigned long size)
10559 +{
10560 + return 1;
10561 +}
10562 +
10563 static inline int access_ok(int type, const void __user * addr, unsigned long size)
10564 {
10565 return 1;
10566 @@ -250,8 +256,15 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from,
10567 static inline unsigned long __must_check
10568 copy_from_user(void *to, const void __user *from, unsigned long size)
10569 {
10570 - unsigned long ret = ___copy_from_user(to, from, size);
10571 + unsigned long ret;
10572
10573 + if ((long)size < 0 || size > INT_MAX)
10574 + return size;
10575 +
10576 + if (!__builtin_constant_p(size))
10577 + check_object_size(to, size, false);
10578 +
10579 + ret = ___copy_from_user(to, from, size);
10580 if (unlikely(ret))
10581 ret = copy_from_user_fixup(to, from, size);
10582
10583 @@ -267,8 +280,15 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from,
10584 static inline unsigned long __must_check
10585 copy_to_user(void __user *to, const void *from, unsigned long size)
10586 {
10587 - unsigned long ret = ___copy_to_user(to, from, size);
10588 + unsigned long ret;
10589
10590 + if ((long)size < 0 || size > INT_MAX)
10591 + return size;
10592 +
10593 + if (!__builtin_constant_p(size))
10594 + check_object_size(from, size, true);
10595 +
10596 + ret = ___copy_to_user(to, from, size);
10597 if (unlikely(ret))
10598 ret = copy_to_user_fixup(to, from, size);
10599 return ret;
10600 diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
10601 index 7cf9c6e..6206648 100644
10602 --- a/arch/sparc/kernel/Makefile
10603 +++ b/arch/sparc/kernel/Makefile
10604 @@ -4,7 +4,7 @@
10605 #
10606
10607 asflags-y := -ansi
10608 -ccflags-y := -Werror
10609 +#ccflags-y := -Werror
10610
10611 extra-y := head_$(BITS).o
10612
10613 diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
10614 index 50e7b62..79fae35 100644
10615 --- a/arch/sparc/kernel/process_32.c
10616 +++ b/arch/sparc/kernel/process_32.c
10617 @@ -123,14 +123,14 @@ void show_regs(struct pt_regs *r)
10618
10619 printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n",
10620 r->psr, r->pc, r->npc, r->y, print_tainted());
10621 - printk("PC: <%pS>\n", (void *) r->pc);
10622 + printk("PC: <%pA>\n", (void *) r->pc);
10623 printk("%%G: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
10624 r->u_regs[0], r->u_regs[1], r->u_regs[2], r->u_regs[3],
10625 r->u_regs[4], r->u_regs[5], r->u_regs[6], r->u_regs[7]);
10626 printk("%%O: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
10627 r->u_regs[8], r->u_regs[9], r->u_regs[10], r->u_regs[11],
10628 r->u_regs[12], r->u_regs[13], r->u_regs[14], r->u_regs[15]);
10629 - printk("RPC: <%pS>\n", (void *) r->u_regs[15]);
10630 + printk("RPC: <%pA>\n", (void *) r->u_regs[15]);
10631
10632 printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
10633 rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
10634 @@ -167,7 +167,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
10635 rw = (struct reg_window32 *) fp;
10636 pc = rw->ins[7];
10637 printk("[%08lx : ", pc);
10638 - printk("%pS ] ", (void *) pc);
10639 + printk("%pA ] ", (void *) pc);
10640 fp = rw->ins[6];
10641 } while (++count < 16);
10642 printk("\n");
10643 diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
10644 index 46a5964..a35c62c 100644
10645 --- a/arch/sparc/kernel/process_64.c
10646 +++ b/arch/sparc/kernel/process_64.c
10647 @@ -161,7 +161,7 @@ static void show_regwindow(struct pt_regs *regs)
10648 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
10649 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
10650 if (regs->tstate & TSTATE_PRIV)
10651 - printk("I7: <%pS>\n", (void *) rwk->ins[7]);
10652 + printk("I7: <%pA>\n", (void *) rwk->ins[7]);
10653 }
10654
10655 void show_regs(struct pt_regs *regs)
10656 @@ -170,7 +170,7 @@ void show_regs(struct pt_regs *regs)
10657
10658 printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate,
10659 regs->tpc, regs->tnpc, regs->y, print_tainted());
10660 - printk("TPC: <%pS>\n", (void *) regs->tpc);
10661 + printk("TPC: <%pA>\n", (void *) regs->tpc);
10662 printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n",
10663 regs->u_regs[0], regs->u_regs[1], regs->u_regs[2],
10664 regs->u_regs[3]);
10665 @@ -183,7 +183,7 @@ void show_regs(struct pt_regs *regs)
10666 printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n",
10667 regs->u_regs[12], regs->u_regs[13], regs->u_regs[14],
10668 regs->u_regs[15]);
10669 - printk("RPC: <%pS>\n", (void *) regs->u_regs[15]);
10670 + printk("RPC: <%pA>\n", (void *) regs->u_regs[15]);
10671 show_regwindow(regs);
10672 show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]);
10673 }
10674 @@ -278,7 +278,7 @@ void arch_trigger_all_cpu_backtrace(bool include_self)
10675 ((tp && tp->task) ? tp->task->pid : -1));
10676
10677 if (gp->tstate & TSTATE_PRIV) {
10678 - printk(" TPC[%pS] O7[%pS] I7[%pS] RPC[%pS]\n",
10679 + printk(" TPC[%pA] O7[%pA] I7[%pA] RPC[%pA]\n",
10680 (void *) gp->tpc,
10681 (void *) gp->o7,
10682 (void *) gp->i7,
10683 diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
10684 index 79cc0d1..ec62734 100644
10685 --- a/arch/sparc/kernel/prom_common.c
10686 +++ b/arch/sparc/kernel/prom_common.c
10687 @@ -144,7 +144,7 @@ static int __init prom_common_nextprop(phandle node, char *prev, char *buf)
10688
10689 unsigned int prom_early_allocated __initdata;
10690
10691 -static struct of_pdt_ops prom_sparc_ops __initdata = {
10692 +static struct of_pdt_ops prom_sparc_ops __initconst = {
10693 .nextprop = prom_common_nextprop,
10694 .getproplen = prom_getproplen,
10695 .getproperty = prom_getproperty,
10696 diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c
10697 index 9ddc492..27a5619 100644
10698 --- a/arch/sparc/kernel/ptrace_64.c
10699 +++ b/arch/sparc/kernel/ptrace_64.c
10700 @@ -1060,6 +1060,10 @@ long arch_ptrace(struct task_struct *child, long request,
10701 return ret;
10702 }
10703
10704 +#ifdef CONFIG_GRKERNSEC_SETXID
10705 +extern void gr_delayed_cred_worker(void);
10706 +#endif
10707 +
10708 asmlinkage int syscall_trace_enter(struct pt_regs *regs)
10709 {
10710 int ret = 0;
10711 @@ -1070,6 +1074,11 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs)
10712 if (test_thread_flag(TIF_NOHZ))
10713 user_exit();
10714
10715 +#ifdef CONFIG_GRKERNSEC_SETXID
10716 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
10717 + gr_delayed_cred_worker();
10718 +#endif
10719 +
10720 if (test_thread_flag(TIF_SYSCALL_TRACE))
10721 ret = tracehook_report_syscall_entry(regs);
10722
10723 @@ -1088,6 +1097,11 @@ asmlinkage void syscall_trace_leave(struct pt_regs *regs)
10724 if (test_thread_flag(TIF_NOHZ))
10725 user_exit();
10726
10727 +#ifdef CONFIG_GRKERNSEC_SETXID
10728 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
10729 + gr_delayed_cred_worker();
10730 +#endif
10731 +
10732 audit_syscall_exit(regs);
10733
10734 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
10735 diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
10736 index 19cd08d..ff21e99 100644
10737 --- a/arch/sparc/kernel/smp_64.c
10738 +++ b/arch/sparc/kernel/smp_64.c
10739 @@ -891,7 +891,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
10740 return;
10741
10742 #ifdef CONFIG_DEBUG_DCFLUSH
10743 - atomic_inc(&dcpage_flushes);
10744 + atomic_inc_unchecked(&dcpage_flushes);
10745 #endif
10746
10747 this_cpu = get_cpu();
10748 @@ -915,7 +915,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
10749 xcall_deliver(data0, __pa(pg_addr),
10750 (u64) pg_addr, cpumask_of(cpu));
10751 #ifdef CONFIG_DEBUG_DCFLUSH
10752 - atomic_inc(&dcpage_flushes_xcall);
10753 + atomic_inc_unchecked(&dcpage_flushes_xcall);
10754 #endif
10755 }
10756 }
10757 @@ -934,7 +934,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
10758 preempt_disable();
10759
10760 #ifdef CONFIG_DEBUG_DCFLUSH
10761 - atomic_inc(&dcpage_flushes);
10762 + atomic_inc_unchecked(&dcpage_flushes);
10763 #endif
10764 data0 = 0;
10765 pg_addr = page_address(page);
10766 @@ -951,7 +951,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
10767 xcall_deliver(data0, __pa(pg_addr),
10768 (u64) pg_addr, cpu_online_mask);
10769 #ifdef CONFIG_DEBUG_DCFLUSH
10770 - atomic_inc(&dcpage_flushes_xcall);
10771 + atomic_inc_unchecked(&dcpage_flushes_xcall);
10772 #endif
10773 }
10774 __local_flush_dcache_page(page);
10775 diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
10776 index 646988d..b88905f 100644
10777 --- a/arch/sparc/kernel/sys_sparc_32.c
10778 +++ b/arch/sparc/kernel/sys_sparc_32.c
10779 @@ -54,7 +54,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
10780 if (len > TASK_SIZE - PAGE_SIZE)
10781 return -ENOMEM;
10782 if (!addr)
10783 - addr = TASK_UNMAPPED_BASE;
10784 + addr = current->mm->mmap_base;
10785
10786 info.flags = 0;
10787 info.length = len;
10788 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
10789 index 30e7ddb..266a3b0 100644
10790 --- a/arch/sparc/kernel/sys_sparc_64.c
10791 +++ b/arch/sparc/kernel/sys_sparc_64.c
10792 @@ -89,13 +89,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
10793 struct vm_area_struct * vma;
10794 unsigned long task_size = TASK_SIZE;
10795 int do_color_align;
10796 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
10797 struct vm_unmapped_area_info info;
10798
10799 if (flags & MAP_FIXED) {
10800 /* We do not accept a shared mapping if it would violate
10801 * cache aliasing constraints.
10802 */
10803 - if ((flags & MAP_SHARED) &&
10804 + if ((filp || (flags & MAP_SHARED)) &&
10805 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
10806 return -EINVAL;
10807 return addr;
10808 @@ -110,6 +111,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
10809 if (filp || (flags & MAP_SHARED))
10810 do_color_align = 1;
10811
10812 +#ifdef CONFIG_PAX_RANDMMAP
10813 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
10814 +#endif
10815 +
10816 if (addr) {
10817 if (do_color_align)
10818 addr = COLOR_ALIGN(addr, pgoff);
10819 @@ -117,22 +122,28 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
10820 addr = PAGE_ALIGN(addr);
10821
10822 vma = find_vma(mm, addr);
10823 - if (task_size - len >= addr &&
10824 - (!vma || addr + len <= vma->vm_start))
10825 + if (task_size - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
10826 return addr;
10827 }
10828
10829 info.flags = 0;
10830 info.length = len;
10831 - info.low_limit = TASK_UNMAPPED_BASE;
10832 + info.low_limit = mm->mmap_base;
10833 info.high_limit = min(task_size, VA_EXCLUDE_START);
10834 info.align_mask = do_color_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
10835 info.align_offset = pgoff << PAGE_SHIFT;
10836 + info.threadstack_offset = offset;
10837 addr = vm_unmapped_area(&info);
10838
10839 if ((addr & ~PAGE_MASK) && task_size > VA_EXCLUDE_END) {
10840 VM_BUG_ON(addr != -ENOMEM);
10841 info.low_limit = VA_EXCLUDE_END;
10842 +
10843 +#ifdef CONFIG_PAX_RANDMMAP
10844 + if (mm->pax_flags & MF_PAX_RANDMMAP)
10845 + info.low_limit += mm->delta_mmap;
10846 +#endif
10847 +
10848 info.high_limit = task_size;
10849 addr = vm_unmapped_area(&info);
10850 }
10851 @@ -150,6 +161,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10852 unsigned long task_size = STACK_TOP32;
10853 unsigned long addr = addr0;
10854 int do_color_align;
10855 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
10856 struct vm_unmapped_area_info info;
10857
10858 /* This should only ever run for 32-bit processes. */
10859 @@ -159,7 +171,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10860 /* We do not accept a shared mapping if it would violate
10861 * cache aliasing constraints.
10862 */
10863 - if ((flags & MAP_SHARED) &&
10864 + if ((filp || (flags & MAP_SHARED)) &&
10865 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
10866 return -EINVAL;
10867 return addr;
10868 @@ -172,6 +184,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10869 if (filp || (flags & MAP_SHARED))
10870 do_color_align = 1;
10871
10872 +#ifdef CONFIG_PAX_RANDMMAP
10873 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
10874 +#endif
10875 +
10876 /* requesting a specific address */
10877 if (addr) {
10878 if (do_color_align)
10879 @@ -180,8 +196,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10880 addr = PAGE_ALIGN(addr);
10881
10882 vma = find_vma(mm, addr);
10883 - if (task_size - len >= addr &&
10884 - (!vma || addr + len <= vma->vm_start))
10885 + if (task_size - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
10886 return addr;
10887 }
10888
10889 @@ -191,6 +206,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10890 info.high_limit = mm->mmap_base;
10891 info.align_mask = do_color_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
10892 info.align_offset = pgoff << PAGE_SHIFT;
10893 + info.threadstack_offset = offset;
10894 addr = vm_unmapped_area(&info);
10895
10896 /*
10897 @@ -203,6 +219,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
10898 VM_BUG_ON(addr != -ENOMEM);
10899 info.flags = 0;
10900 info.low_limit = TASK_UNMAPPED_BASE;
10901 +
10902 +#ifdef CONFIG_PAX_RANDMMAP
10903 + if (mm->pax_flags & MF_PAX_RANDMMAP)
10904 + info.low_limit += mm->delta_mmap;
10905 +#endif
10906 +
10907 info.high_limit = STACK_TOP32;
10908 addr = vm_unmapped_area(&info);
10909 }
10910 @@ -259,10 +281,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
10911 EXPORT_SYMBOL(get_fb_unmapped_area);
10912
10913 /* Essentially the same as PowerPC. */
10914 -static unsigned long mmap_rnd(void)
10915 +static unsigned long mmap_rnd(struct mm_struct *mm)
10916 {
10917 unsigned long rnd = 0UL;
10918
10919 +#ifdef CONFIG_PAX_RANDMMAP
10920 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
10921 +#endif
10922 +
10923 if (current->flags & PF_RANDOMIZE) {
10924 unsigned long val = get_random_int();
10925 if (test_thread_flag(TIF_32BIT))
10926 @@ -275,7 +301,7 @@ static unsigned long mmap_rnd(void)
10927
10928 void arch_pick_mmap_layout(struct mm_struct *mm)
10929 {
10930 - unsigned long random_factor = mmap_rnd();
10931 + unsigned long random_factor = mmap_rnd(mm);
10932 unsigned long gap;
10933
10934 /*
10935 @@ -288,6 +314,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
10936 gap == RLIM_INFINITY ||
10937 sysctl_legacy_va_layout) {
10938 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
10939 +
10940 +#ifdef CONFIG_PAX_RANDMMAP
10941 + if (mm->pax_flags & MF_PAX_RANDMMAP)
10942 + mm->mmap_base += mm->delta_mmap;
10943 +#endif
10944 +
10945 mm->get_unmapped_area = arch_get_unmapped_area;
10946 } else {
10947 /* We know it's 32-bit */
10948 @@ -299,6 +331,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
10949 gap = (task_size / 6 * 5);
10950
10951 mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor);
10952 +
10953 +#ifdef CONFIG_PAX_RANDMMAP
10954 + if (mm->pax_flags & MF_PAX_RANDMMAP)
10955 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
10956 +#endif
10957 +
10958 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
10959 }
10960 }
10961 diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S
10962 index bb00089..e0ea580 100644
10963 --- a/arch/sparc/kernel/syscalls.S
10964 +++ b/arch/sparc/kernel/syscalls.S
10965 @@ -62,7 +62,7 @@ sys32_rt_sigreturn:
10966 #endif
10967 .align 32
10968 1: ldx [%g6 + TI_FLAGS], %l5
10969 - andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT|_TIF_NOHZ), %g0
10970 + andcc %l5, _TIF_WORK_SYSCALL, %g0
10971 be,pt %icc, rtrap
10972 nop
10973 call syscall_trace_leave
10974 @@ -194,7 +194,7 @@ linux_sparc_syscall32:
10975
10976 srl %i3, 0, %o3 ! IEU0
10977 srl %i2, 0, %o2 ! IEU0 Group
10978 - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT|_TIF_NOHZ), %g0
10979 + andcc %l0, _TIF_WORK_SYSCALL, %g0
10980 bne,pn %icc, linux_syscall_trace32 ! CTI
10981 mov %i0, %l5 ! IEU1
10982 5: call %l7 ! CTI Group brk forced
10983 @@ -218,7 +218,7 @@ linux_sparc_syscall:
10984
10985 mov %i3, %o3 ! IEU1
10986 mov %i4, %o4 ! IEU0 Group
10987 - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT|_TIF_NOHZ), %g0
10988 + andcc %l0, _TIF_WORK_SYSCALL, %g0
10989 bne,pn %icc, linux_syscall_trace ! CTI Group
10990 mov %i0, %l5 ! IEU0
10991 2: call %l7 ! CTI Group brk forced
10992 @@ -233,7 +233,7 @@ ret_sys_call:
10993
10994 cmp %o0, -ERESTART_RESTARTBLOCK
10995 bgeu,pn %xcc, 1f
10996 - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT|_TIF_NOHZ), %g0
10997 + andcc %l0, _TIF_WORK_SYSCALL, %g0
10998 ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc
10999
11000 2:
11001 diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
11002 index 4f21df7..0a374da 100644
11003 --- a/arch/sparc/kernel/traps_32.c
11004 +++ b/arch/sparc/kernel/traps_32.c
11005 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned long *pc)
11006 #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
11007 #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
11008
11009 +extern void gr_handle_kernel_exploit(void);
11010 +
11011 void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
11012 {
11013 static int die_counter;
11014 @@ -76,15 +78,17 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
11015 count++ < 30 &&
11016 (((unsigned long) rw) >= PAGE_OFFSET) &&
11017 !(((unsigned long) rw) & 0x7)) {
11018 - printk("Caller[%08lx]: %pS\n", rw->ins[7],
11019 + printk("Caller[%08lx]: %pA\n", rw->ins[7],
11020 (void *) rw->ins[7]);
11021 rw = (struct reg_window32 *)rw->ins[6];
11022 }
11023 }
11024 printk("Instruction DUMP:");
11025 instruction_dump ((unsigned long *) regs->pc);
11026 - if(regs->psr & PSR_PS)
11027 + if(regs->psr & PSR_PS) {
11028 + gr_handle_kernel_exploit();
11029 do_exit(SIGKILL);
11030 + }
11031 do_exit(SIGSEGV);
11032 }
11033
11034 diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
11035 index d21cd62..00a4a17 100644
11036 --- a/arch/sparc/kernel/traps_64.c
11037 +++ b/arch/sparc/kernel/traps_64.c
11038 @@ -79,7 +79,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
11039 i + 1,
11040 p->trapstack[i].tstate, p->trapstack[i].tpc,
11041 p->trapstack[i].tnpc, p->trapstack[i].tt);
11042 - printk("TRAPLOG: TPC<%pS>\n", (void *) p->trapstack[i].tpc);
11043 + printk("TRAPLOG: TPC<%pA>\n", (void *) p->trapstack[i].tpc);
11044 }
11045 }
11046
11047 @@ -99,6 +99,12 @@ void bad_trap(struct pt_regs *regs, long lvl)
11048
11049 lvl -= 0x100;
11050 if (regs->tstate & TSTATE_PRIV) {
11051 +
11052 +#ifdef CONFIG_PAX_REFCOUNT
11053 + if (lvl == 6)
11054 + pax_report_refcount_overflow(regs);
11055 +#endif
11056 +
11057 sprintf(buffer, "Kernel bad sw trap %lx", lvl);
11058 die_if_kernel(buffer, regs);
11059 }
11060 @@ -117,11 +123,16 @@ void bad_trap(struct pt_regs *regs, long lvl)
11061 void bad_trap_tl1(struct pt_regs *regs, long lvl)
11062 {
11063 char buffer[32];
11064 -
11065 +
11066 if (notify_die(DIE_TRAP_TL1, "bad trap tl1", regs,
11067 0, lvl, SIGTRAP) == NOTIFY_STOP)
11068 return;
11069
11070 +#ifdef CONFIG_PAX_REFCOUNT
11071 + if (lvl == 6)
11072 + pax_report_refcount_overflow(regs);
11073 +#endif
11074 +
11075 dump_tl1_traplog((struct tl1_traplog *)(regs + 1));
11076
11077 sprintf (buffer, "Bad trap %lx at tl>0", lvl);
11078 @@ -1151,7 +1162,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
11079 regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
11080 printk("%s" "ERROR(%d): ",
11081 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
11082 - printk("TPC<%pS>\n", (void *) regs->tpc);
11083 + printk("TPC<%pA>\n", (void *) regs->tpc);
11084 printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
11085 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
11086 (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
11087 @@ -1758,7 +1769,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
11088 smp_processor_id(),
11089 (type & 0x1) ? 'I' : 'D',
11090 regs->tpc);
11091 - printk(KERN_EMERG "TPC<%pS>\n", (void *) regs->tpc);
11092 + printk(KERN_EMERG "TPC<%pA>\n", (void *) regs->tpc);
11093 panic("Irrecoverable Cheetah+ parity error.");
11094 }
11095
11096 @@ -1766,7 +1777,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
11097 smp_processor_id(),
11098 (type & 0x1) ? 'I' : 'D',
11099 regs->tpc);
11100 - printk(KERN_WARNING "TPC<%pS>\n", (void *) regs->tpc);
11101 + printk(KERN_WARNING "TPC<%pA>\n", (void *) regs->tpc);
11102 }
11103
11104 struct sun4v_error_entry {
11105 @@ -1839,8 +1850,8 @@ struct sun4v_error_entry {
11106 /*0x38*/u64 reserved_5;
11107 };
11108
11109 -static atomic_t sun4v_resum_oflow_cnt = ATOMIC_INIT(0);
11110 -static atomic_t sun4v_nonresum_oflow_cnt = ATOMIC_INIT(0);
11111 +static atomic_unchecked_t sun4v_resum_oflow_cnt = ATOMIC_INIT(0);
11112 +static atomic_unchecked_t sun4v_nonresum_oflow_cnt = ATOMIC_INIT(0);
11113
11114 static const char *sun4v_err_type_to_str(u8 type)
11115 {
11116 @@ -1932,7 +1943,7 @@ static void sun4v_report_real_raddr(const char *pfx, struct pt_regs *regs)
11117 }
11118
11119 static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
11120 - int cpu, const char *pfx, atomic_t *ocnt)
11121 + int cpu, const char *pfx, atomic_unchecked_t *ocnt)
11122 {
11123 u64 *raw_ptr = (u64 *) ent;
11124 u32 attrs;
11125 @@ -1990,8 +2001,8 @@ static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
11126
11127 show_regs(regs);
11128
11129 - if ((cnt = atomic_read(ocnt)) != 0) {
11130 - atomic_set(ocnt, 0);
11131 + if ((cnt = atomic_read_unchecked(ocnt)) != 0) {
11132 + atomic_set_unchecked(ocnt, 0);
11133 wmb();
11134 printk("%s: Queue overflowed %d times.\n",
11135 pfx, cnt);
11136 @@ -2048,7 +2059,7 @@ out:
11137 */
11138 void sun4v_resum_overflow(struct pt_regs *regs)
11139 {
11140 - atomic_inc(&sun4v_resum_oflow_cnt);
11141 + atomic_inc_unchecked(&sun4v_resum_oflow_cnt);
11142 }
11143
11144 /* We run with %pil set to PIL_NORMAL_MAX and PSTATE_IE enabled in %pstate.
11145 @@ -2101,7 +2112,7 @@ void sun4v_nonresum_overflow(struct pt_regs *regs)
11146 /* XXX Actually even this can make not that much sense. Perhaps
11147 * XXX we should just pull the plug and panic directly from here?
11148 */
11149 - atomic_inc(&sun4v_nonresum_oflow_cnt);
11150 + atomic_inc_unchecked(&sun4v_nonresum_oflow_cnt);
11151 }
11152
11153 static void sun4v_tlb_error(struct pt_regs *regs)
11154 @@ -2120,9 +2131,9 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
11155
11156 printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
11157 regs->tpc, tl);
11158 - printk(KERN_EMERG "SUN4V-ITLB: TPC<%pS>\n", (void *) regs->tpc);
11159 + printk(KERN_EMERG "SUN4V-ITLB: TPC<%pA>\n", (void *) regs->tpc);
11160 printk(KERN_EMERG "SUN4V-ITLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
11161 - printk(KERN_EMERG "SUN4V-ITLB: O7<%pS>\n",
11162 + printk(KERN_EMERG "SUN4V-ITLB: O7<%pA>\n",
11163 (void *) regs->u_regs[UREG_I7]);
11164 printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
11165 "pte[%lx] error[%lx]\n",
11166 @@ -2143,9 +2154,9 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
11167
11168 printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
11169 regs->tpc, tl);
11170 - printk(KERN_EMERG "SUN4V-DTLB: TPC<%pS>\n", (void *) regs->tpc);
11171 + printk(KERN_EMERG "SUN4V-DTLB: TPC<%pA>\n", (void *) regs->tpc);
11172 printk(KERN_EMERG "SUN4V-DTLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
11173 - printk(KERN_EMERG "SUN4V-DTLB: O7<%pS>\n",
11174 + printk(KERN_EMERG "SUN4V-DTLB: O7<%pA>\n",
11175 (void *) regs->u_regs[UREG_I7]);
11176 printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
11177 "pte[%lx] error[%lx]\n",
11178 @@ -2362,13 +2373,13 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
11179 fp = (unsigned long)sf->fp + STACK_BIAS;
11180 }
11181
11182 - printk(" [%016lx] %pS\n", pc, (void *) pc);
11183 + printk(" [%016lx] %pA\n", pc, (void *) pc);
11184 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
11185 if ((pc + 8UL) == (unsigned long) &return_to_handler) {
11186 int index = tsk->curr_ret_stack;
11187 if (tsk->ret_stack && index >= graph) {
11188 pc = tsk->ret_stack[index - graph].ret;
11189 - printk(" [%016lx] %pS\n", pc, (void *) pc);
11190 + printk(" [%016lx] %pA\n", pc, (void *) pc);
11191 graph++;
11192 }
11193 }
11194 @@ -2386,6 +2397,8 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
11195 return (struct reg_window *) (fp + STACK_BIAS);
11196 }
11197
11198 +extern void gr_handle_kernel_exploit(void);
11199 +
11200 void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
11201 {
11202 static int die_counter;
11203 @@ -2414,7 +2427,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
11204 while (rw &&
11205 count++ < 30 &&
11206 kstack_valid(tp, (unsigned long) rw)) {
11207 - printk("Caller[%016lx]: %pS\n", rw->ins[7],
11208 + printk("Caller[%016lx]: %pA\n", rw->ins[7],
11209 (void *) rw->ins[7]);
11210
11211 rw = kernel_stack_up(rw);
11212 @@ -2429,8 +2442,10 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
11213 }
11214 if (panic_on_oops)
11215 panic("Fatal exception");
11216 - if (regs->tstate & TSTATE_PRIV)
11217 + if (regs->tstate & TSTATE_PRIV) {
11218 + gr_handle_kernel_exploit();
11219 do_exit(SIGKILL);
11220 + }
11221 do_exit(SIGSEGV);
11222 }
11223 EXPORT_SYMBOL(die_if_kernel);
11224 diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
11225 index 62098a8..547ab2c 100644
11226 --- a/arch/sparc/kernel/unaligned_64.c
11227 +++ b/arch/sparc/kernel/unaligned_64.c
11228 @@ -297,7 +297,7 @@ static void log_unaligned(struct pt_regs *regs)
11229 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
11230
11231 if (__ratelimit(&ratelimit)) {
11232 - printk("Kernel unaligned access at TPC[%lx] %pS\n",
11233 + printk("Kernel unaligned access at TPC[%lx] %pA\n",
11234 regs->tpc, (void *) regs->tpc);
11235 }
11236 }
11237 diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
11238 index 3269b02..64f5231 100644
11239 --- a/arch/sparc/lib/Makefile
11240 +++ b/arch/sparc/lib/Makefile
11241 @@ -2,7 +2,7 @@
11242 #
11243
11244 asflags-y := -ansi -DST_DIV0=0x02
11245 -ccflags-y := -Werror
11246 +#ccflags-y := -Werror
11247
11248 lib-$(CONFIG_SPARC32) += ashrdi3.o
11249 lib-$(CONFIG_SPARC32) += memcpy.o memset.o
11250 diff --git a/arch/sparc/lib/atomic_64.S b/arch/sparc/lib/atomic_64.S
11251 index 05dac43..76f8ed4 100644
11252 --- a/arch/sparc/lib/atomic_64.S
11253 +++ b/arch/sparc/lib/atomic_64.S
11254 @@ -15,11 +15,22 @@
11255 * a value and does the barriers.
11256 */
11257
11258 -#define ATOMIC_OP(op) \
11259 -ENTRY(atomic_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
11260 +#ifdef CONFIG_PAX_REFCOUNT
11261 +#define __REFCOUNT_OP(op) op##cc
11262 +#define __OVERFLOW_IOP tvs %icc, 6;
11263 +#define __OVERFLOW_XOP tvs %xcc, 6;
11264 +#else
11265 +#define __REFCOUNT_OP(op) op
11266 +#define __OVERFLOW_IOP
11267 +#define __OVERFLOW_XOP
11268 +#endif
11269 +
11270 +#define __ATOMIC_OP(op, suffix, asm_op, post_op) \
11271 +ENTRY(atomic_##op##suffix) /* %o0 = increment, %o1 = atomic_ptr */ \
11272 BACKOFF_SETUP(%o2); \
11273 1: lduw [%o1], %g1; \
11274 - op %g1, %o0, %g7; \
11275 + asm_op %g1, %o0, %g7; \
11276 + post_op \
11277 cas [%o1], %g1, %g7; \
11278 cmp %g1, %g7; \
11279 bne,pn %icc, BACKOFF_LABEL(2f, 1b); \
11280 @@ -29,11 +40,15 @@ ENTRY(atomic_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
11281 2: BACKOFF_SPIN(%o2, %o3, 1b); \
11282 ENDPROC(atomic_##op); \
11283
11284 -#define ATOMIC_OP_RETURN(op) \
11285 -ENTRY(atomic_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */ \
11286 +#define ATOMIC_OP(op) __ATOMIC_OP(op, , op, ) \
11287 + __ATOMIC_OP(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_IOP)
11288 +
11289 +#define __ATOMIC_OP_RETURN(op, suffix, asm_op, post_op) \
11290 +ENTRY(atomic_##op##_return##suffix) /* %o0 = increment, %o1 = atomic_ptr */\
11291 BACKOFF_SETUP(%o2); \
11292 1: lduw [%o1], %g1; \
11293 - op %g1, %o0, %g7; \
11294 + asm_op %g1, %o0, %g7; \
11295 + post_op \
11296 cas [%o1], %g1, %g7; \
11297 cmp %g1, %g7; \
11298 bne,pn %icc, BACKOFF_LABEL(2f, 1b); \
11299 @@ -43,6 +58,9 @@ ENTRY(atomic_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */ \
11300 2: BACKOFF_SPIN(%o2, %o3, 1b); \
11301 ENDPROC(atomic_##op##_return);
11302
11303 +#define ATOMIC_OP_RETURN(op) __ATOMIC_OP_RETURN(op, , op, ) \
11304 + __ATOMIC_OP_RETURN(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_IOP)
11305 +
11306 #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
11307
11308 ATOMIC_OPS(add)
11309 @@ -50,13 +68,16 @@ ATOMIC_OPS(sub)
11310
11311 #undef ATOMIC_OPS
11312 #undef ATOMIC_OP_RETURN
11313 +#undef __ATOMIC_OP_RETURN
11314 #undef ATOMIC_OP
11315 +#undef __ATOMIC_OP
11316
11317 -#define ATOMIC64_OP(op) \
11318 -ENTRY(atomic64_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
11319 +#define __ATOMIC64_OP(op, suffix, asm_op, post_op) \
11320 +ENTRY(atomic64_##op##suffix) /* %o0 = increment, %o1 = atomic_ptr */ \
11321 BACKOFF_SETUP(%o2); \
11322 1: ldx [%o1], %g1; \
11323 - op %g1, %o0, %g7; \
11324 + asm_op %g1, %o0, %g7; \
11325 + post_op \
11326 casx [%o1], %g1, %g7; \
11327 cmp %g1, %g7; \
11328 bne,pn %xcc, BACKOFF_LABEL(2f, 1b); \
11329 @@ -66,11 +87,15 @@ ENTRY(atomic64_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
11330 2: BACKOFF_SPIN(%o2, %o3, 1b); \
11331 ENDPROC(atomic64_##op); \
11332
11333 -#define ATOMIC64_OP_RETURN(op) \
11334 -ENTRY(atomic64_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */ \
11335 +#define ATOMIC64_OP(op) __ATOMIC64_OP(op, , op, ) \
11336 + __ATOMIC64_OP(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_XOP)
11337 +
11338 +#define __ATOMIC64_OP_RETURN(op, suffix, asm_op, post_op) \
11339 +ENTRY(atomic64_##op##_return##suffix) /* %o0 = increment, %o1 = atomic_ptr */\
11340 BACKOFF_SETUP(%o2); \
11341 1: ldx [%o1], %g1; \
11342 - op %g1, %o0, %g7; \
11343 + asm_op %g1, %o0, %g7; \
11344 + post_op \
11345 casx [%o1], %g1, %g7; \
11346 cmp %g1, %g7; \
11347 bne,pn %xcc, BACKOFF_LABEL(2f, 1b); \
11348 @@ -80,6 +105,9 @@ ENTRY(atomic64_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */ \
11349 2: BACKOFF_SPIN(%o2, %o3, 1b); \
11350 ENDPROC(atomic64_##op##_return);
11351
11352 +#define ATOMIC64_OP_RETURN(op) __ATOMIC64_OP_RETURN(op, , op, ) \
11353 +i __ATOMIC64_OP_RETURN(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_XOP)
11354 +
11355 #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op)
11356
11357 ATOMIC64_OPS(add)
11358 @@ -87,7 +115,12 @@ ATOMIC64_OPS(sub)
11359
11360 #undef ATOMIC64_OPS
11361 #undef ATOMIC64_OP_RETURN
11362 +#undef __ATOMIC64_OP_RETURN
11363 #undef ATOMIC64_OP
11364 +#undef __ATOMIC64_OP
11365 +#undef __OVERFLOW_XOP
11366 +#undef __OVERFLOW_IOP
11367 +#undef __REFCOUNT_OP
11368
11369 ENTRY(atomic64_dec_if_positive) /* %o0 = atomic_ptr */
11370 BACKOFF_SETUP(%o2)
11371 diff --git a/arch/sparc/lib/ksyms.c b/arch/sparc/lib/ksyms.c
11372 index 8069ce1..c2e23c4 100644
11373 --- a/arch/sparc/lib/ksyms.c
11374 +++ b/arch/sparc/lib/ksyms.c
11375 @@ -101,7 +101,9 @@ EXPORT_SYMBOL(__clear_user);
11376 /* Atomic counter implementation. */
11377 #define ATOMIC_OP(op) \
11378 EXPORT_SYMBOL(atomic_##op); \
11379 -EXPORT_SYMBOL(atomic64_##op);
11380 +EXPORT_SYMBOL(atomic_##op##_unchecked); \
11381 +EXPORT_SYMBOL(atomic64_##op); \
11382 +EXPORT_SYMBOL(atomic64_##op##_unchecked);
11383
11384 #define ATOMIC_OP_RETURN(op) \
11385 EXPORT_SYMBOL(atomic_##op##_return); \
11386 @@ -110,6 +112,8 @@ EXPORT_SYMBOL(atomic64_##op##_return);
11387 #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
11388
11389 ATOMIC_OPS(add)
11390 +EXPORT_SYMBOL(atomic_add_ret_unchecked);
11391 +EXPORT_SYMBOL(atomic64_add_ret_unchecked);
11392 ATOMIC_OPS(sub)
11393
11394 #undef ATOMIC_OPS
11395 diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
11396 index 30c3ecc..736f015 100644
11397 --- a/arch/sparc/mm/Makefile
11398 +++ b/arch/sparc/mm/Makefile
11399 @@ -2,7 +2,7 @@
11400 #
11401
11402 asflags-y := -ansi
11403 -ccflags-y := -Werror
11404 +#ccflags-y := -Werror
11405
11406 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o gup.o
11407 obj-y += fault_$(BITS).o
11408 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
11409 index c399e7b..2387414 100644
11410 --- a/arch/sparc/mm/fault_32.c
11411 +++ b/arch/sparc/mm/fault_32.c
11412 @@ -22,6 +22,9 @@
11413 #include <linux/interrupt.h>
11414 #include <linux/kdebug.h>
11415 #include <linux/uaccess.h>
11416 +#include <linux/slab.h>
11417 +#include <linux/pagemap.h>
11418 +#include <linux/compiler.h>
11419
11420 #include <asm/page.h>
11421 #include <asm/pgtable.h>
11422 @@ -156,6 +159,277 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
11423 return safe_compute_effective_address(regs, insn);
11424 }
11425
11426 +#ifdef CONFIG_PAX_PAGEEXEC
11427 +#ifdef CONFIG_PAX_DLRESOLVE
11428 +static void pax_emuplt_close(struct vm_area_struct *vma)
11429 +{
11430 + vma->vm_mm->call_dl_resolve = 0UL;
11431 +}
11432 +
11433 +static int pax_emuplt_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
11434 +{
11435 + unsigned int *kaddr;
11436 +
11437 + vmf->page = alloc_page(GFP_HIGHUSER);
11438 + if (!vmf->page)
11439 + return VM_FAULT_OOM;
11440 +
11441 + kaddr = kmap(vmf->page);
11442 + memset(kaddr, 0, PAGE_SIZE);
11443 + kaddr[0] = 0x9DE3BFA8U; /* save */
11444 + flush_dcache_page(vmf->page);
11445 + kunmap(vmf->page);
11446 + return VM_FAULT_MAJOR;
11447 +}
11448 +
11449 +static const struct vm_operations_struct pax_vm_ops = {
11450 + .close = pax_emuplt_close,
11451 + .fault = pax_emuplt_fault
11452 +};
11453 +
11454 +static int pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
11455 +{
11456 + int ret;
11457 +
11458 + INIT_LIST_HEAD(&vma->anon_vma_chain);
11459 + vma->vm_mm = current->mm;
11460 + vma->vm_start = addr;
11461 + vma->vm_end = addr + PAGE_SIZE;
11462 + vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC;
11463 + vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
11464 + vma->vm_ops = &pax_vm_ops;
11465 +
11466 + ret = insert_vm_struct(current->mm, vma);
11467 + if (ret)
11468 + return ret;
11469 +
11470 + ++current->mm->total_vm;
11471 + return 0;
11472 +}
11473 +#endif
11474 +
11475 +/*
11476 + * PaX: decide what to do with offenders (regs->pc = fault address)
11477 + *
11478 + * returns 1 when task should be killed
11479 + * 2 when patched PLT trampoline was detected
11480 + * 3 when unpatched PLT trampoline was detected
11481 + */
11482 +static int pax_handle_fetch_fault(struct pt_regs *regs)
11483 +{
11484 +
11485 +#ifdef CONFIG_PAX_EMUPLT
11486 + int err;
11487 +
11488 + do { /* PaX: patched PLT emulation #1 */
11489 + unsigned int sethi1, sethi2, jmpl;
11490 +
11491 + err = get_user(sethi1, (unsigned int *)regs->pc);
11492 + err |= get_user(sethi2, (unsigned int *)(regs->pc+4));
11493 + err |= get_user(jmpl, (unsigned int *)(regs->pc+8));
11494 +
11495 + if (err)
11496 + break;
11497 +
11498 + if ((sethi1 & 0xFFC00000U) == 0x03000000U &&
11499 + (sethi2 & 0xFFC00000U) == 0x03000000U &&
11500 + (jmpl & 0xFFFFE000U) == 0x81C06000U)
11501 + {
11502 + unsigned int addr;
11503 +
11504 + regs->u_regs[UREG_G1] = (sethi2 & 0x003FFFFFU) << 10;
11505 + addr = regs->u_regs[UREG_G1];
11506 + addr += (((jmpl | 0xFFFFE000U) ^ 0x00001000U) + 0x00001000U);
11507 + regs->pc = addr;
11508 + regs->npc = addr+4;
11509 + return 2;
11510 + }
11511 + } while (0);
11512 +
11513 + do { /* PaX: patched PLT emulation #2 */
11514 + unsigned int ba;
11515 +
11516 + err = get_user(ba, (unsigned int *)regs->pc);
11517 +
11518 + if (err)
11519 + break;
11520 +
11521 + if ((ba & 0xFFC00000U) == 0x30800000U || (ba & 0xFFF80000U) == 0x30480000U) {
11522 + unsigned int addr;
11523 +
11524 + if ((ba & 0xFFC00000U) == 0x30800000U)
11525 + addr = regs->pc + ((((ba | 0xFFC00000U) ^ 0x00200000U) + 0x00200000U) << 2);
11526 + else
11527 + addr = regs->pc + ((((ba | 0xFFF80000U) ^ 0x00040000U) + 0x00040000U) << 2);
11528 + regs->pc = addr;
11529 + regs->npc = addr+4;
11530 + return 2;
11531 + }
11532 + } while (0);
11533 +
11534 + do { /* PaX: patched PLT emulation #3 */
11535 + unsigned int sethi, bajmpl, nop;
11536 +
11537 + err = get_user(sethi, (unsigned int *)regs->pc);
11538 + err |= get_user(bajmpl, (unsigned int *)(regs->pc+4));
11539 + err |= get_user(nop, (unsigned int *)(regs->pc+8));
11540 +
11541 + if (err)
11542 + break;
11543 +
11544 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11545 + ((bajmpl & 0xFFFFE000U) == 0x81C06000U || (bajmpl & 0xFFF80000U) == 0x30480000U) &&
11546 + nop == 0x01000000U)
11547 + {
11548 + unsigned int addr;
11549 +
11550 + addr = (sethi & 0x003FFFFFU) << 10;
11551 + regs->u_regs[UREG_G1] = addr;
11552 + if ((bajmpl & 0xFFFFE000U) == 0x81C06000U)
11553 + addr += (((bajmpl | 0xFFFFE000U) ^ 0x00001000U) + 0x00001000U);
11554 + else
11555 + addr = regs->pc + ((((bajmpl | 0xFFF80000U) ^ 0x00040000U) + 0x00040000U) << 2);
11556 + regs->pc = addr;
11557 + regs->npc = addr+4;
11558 + return 2;
11559 + }
11560 + } while (0);
11561 +
11562 + do { /* PaX: unpatched PLT emulation step 1 */
11563 + unsigned int sethi, ba, nop;
11564 +
11565 + err = get_user(sethi, (unsigned int *)regs->pc);
11566 + err |= get_user(ba, (unsigned int *)(regs->pc+4));
11567 + err |= get_user(nop, (unsigned int *)(regs->pc+8));
11568 +
11569 + if (err)
11570 + break;
11571 +
11572 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11573 + ((ba & 0xFFC00000U) == 0x30800000U || (ba & 0xFFF80000U) == 0x30680000U) &&
11574 + nop == 0x01000000U)
11575 + {
11576 + unsigned int addr, save, call;
11577 +
11578 + if ((ba & 0xFFC00000U) == 0x30800000U)
11579 + addr = regs->pc + 4 + ((((ba | 0xFFC00000U) ^ 0x00200000U) + 0x00200000U) << 2);
11580 + else
11581 + addr = regs->pc + 4 + ((((ba | 0xFFF80000U) ^ 0x00040000U) + 0x00040000U) << 2);
11582 +
11583 + err = get_user(save, (unsigned int *)addr);
11584 + err |= get_user(call, (unsigned int *)(addr+4));
11585 + err |= get_user(nop, (unsigned int *)(addr+8));
11586 + if (err)
11587 + break;
11588 +
11589 +#ifdef CONFIG_PAX_DLRESOLVE
11590 + if (save == 0x9DE3BFA8U &&
11591 + (call & 0xC0000000U) == 0x40000000U &&
11592 + nop == 0x01000000U)
11593 + {
11594 + struct vm_area_struct *vma;
11595 + unsigned long call_dl_resolve;
11596 +
11597 + down_read(&current->mm->mmap_sem);
11598 + call_dl_resolve = current->mm->call_dl_resolve;
11599 + up_read(&current->mm->mmap_sem);
11600 + if (likely(call_dl_resolve))
11601 + goto emulate;
11602 +
11603 + vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
11604 +
11605 + down_write(&current->mm->mmap_sem);
11606 + if (current->mm->call_dl_resolve) {
11607 + call_dl_resolve = current->mm->call_dl_resolve;
11608 + up_write(&current->mm->mmap_sem);
11609 + if (vma)
11610 + kmem_cache_free(vm_area_cachep, vma);
11611 + goto emulate;
11612 + }
11613 +
11614 + call_dl_resolve = get_unmapped_area(NULL, 0UL, PAGE_SIZE, 0UL, MAP_PRIVATE);
11615 + if (!vma || (call_dl_resolve & ~PAGE_MASK)) {
11616 + up_write(&current->mm->mmap_sem);
11617 + if (vma)
11618 + kmem_cache_free(vm_area_cachep, vma);
11619 + return 1;
11620 + }
11621 +
11622 + if (pax_insert_vma(vma, call_dl_resolve)) {
11623 + up_write(&current->mm->mmap_sem);
11624 + kmem_cache_free(vm_area_cachep, vma);
11625 + return 1;
11626 + }
11627 +
11628 + current->mm->call_dl_resolve = call_dl_resolve;
11629 + up_write(&current->mm->mmap_sem);
11630 +
11631 +emulate:
11632 + regs->u_regs[UREG_G1] = (sethi & 0x003FFFFFU) << 10;
11633 + regs->pc = call_dl_resolve;
11634 + regs->npc = addr+4;
11635 + return 3;
11636 + }
11637 +#endif
11638 +
11639 + /* PaX: glibc 2.4+ generates sethi/jmpl instead of save/call */
11640 + if ((save & 0xFFC00000U) == 0x05000000U &&
11641 + (call & 0xFFFFE000U) == 0x85C0A000U &&
11642 + nop == 0x01000000U)
11643 + {
11644 + regs->u_regs[UREG_G1] = (sethi & 0x003FFFFFU) << 10;
11645 + regs->u_regs[UREG_G2] = addr + 4;
11646 + addr = (save & 0x003FFFFFU) << 10;
11647 + addr += (((call | 0xFFFFE000U) ^ 0x00001000U) + 0x00001000U);
11648 + regs->pc = addr;
11649 + regs->npc = addr+4;
11650 + return 3;
11651 + }
11652 + }
11653 + } while (0);
11654 +
11655 + do { /* PaX: unpatched PLT emulation step 2 */
11656 + unsigned int save, call, nop;
11657 +
11658 + err = get_user(save, (unsigned int *)(regs->pc-4));
11659 + err |= get_user(call, (unsigned int *)regs->pc);
11660 + err |= get_user(nop, (unsigned int *)(regs->pc+4));
11661 + if (err)
11662 + break;
11663 +
11664 + if (save == 0x9DE3BFA8U &&
11665 + (call & 0xC0000000U) == 0x40000000U &&
11666 + nop == 0x01000000U)
11667 + {
11668 + unsigned int dl_resolve = regs->pc + ((((call | 0xC0000000U) ^ 0x20000000U) + 0x20000000U) << 2);
11669 +
11670 + regs->u_regs[UREG_RETPC] = regs->pc;
11671 + regs->pc = dl_resolve;
11672 + regs->npc = dl_resolve+4;
11673 + return 3;
11674 + }
11675 + } while (0);
11676 +#endif
11677 +
11678 + return 1;
11679 +}
11680 +
11681 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
11682 +{
11683 + unsigned long i;
11684 +
11685 + printk(KERN_ERR "PAX: bytes at PC: ");
11686 + for (i = 0; i < 8; i++) {
11687 + unsigned int c;
11688 + if (get_user(c, (unsigned int *)pc+i))
11689 + printk(KERN_CONT "???????? ");
11690 + else
11691 + printk(KERN_CONT "%08x ", c);
11692 + }
11693 + printk("\n");
11694 +}
11695 +#endif
11696 +
11697 static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
11698 int text_fault)
11699 {
11700 @@ -226,6 +500,24 @@ good_area:
11701 if (!(vma->vm_flags & VM_WRITE))
11702 goto bad_area;
11703 } else {
11704 +
11705 +#ifdef CONFIG_PAX_PAGEEXEC
11706 + if ((mm->pax_flags & MF_PAX_PAGEEXEC) && text_fault && !(vma->vm_flags & VM_EXEC)) {
11707 + up_read(&mm->mmap_sem);
11708 + switch (pax_handle_fetch_fault(regs)) {
11709 +
11710 +#ifdef CONFIG_PAX_EMUPLT
11711 + case 2:
11712 + case 3:
11713 + return;
11714 +#endif
11715 +
11716 + }
11717 + pax_report_fault(regs, (void *)regs->pc, (void *)regs->u_regs[UREG_FP]);
11718 + do_group_exit(SIGKILL);
11719 + }
11720 +#endif
11721 +
11722 /* Allow reads even for write-only mappings */
11723 if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
11724 goto bad_area;
11725 diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
11726 index dbabe57..d34d315 100644
11727 --- a/arch/sparc/mm/fault_64.c
11728 +++ b/arch/sparc/mm/fault_64.c
11729 @@ -23,6 +23,9 @@
11730 #include <linux/percpu.h>
11731 #include <linux/context_tracking.h>
11732 #include <linux/uaccess.h>
11733 +#include <linux/slab.h>
11734 +#include <linux/pagemap.h>
11735 +#include <linux/compiler.h>
11736
11737 #include <asm/page.h>
11738 #include <asm/pgtable.h>
11739 @@ -76,7 +79,7 @@ static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
11740 printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n",
11741 regs->tpc);
11742 printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
11743 - printk("OOPS: RPC <%pS>\n", (void *) regs->u_regs[15]);
11744 + printk("OOPS: RPC <%pA>\n", (void *) regs->u_regs[15]);
11745 printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
11746 dump_stack();
11747 unhandled_fault(regs->tpc, current, regs);
11748 @@ -279,6 +282,466 @@ static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
11749 show_regs(regs);
11750 }
11751
11752 +#ifdef CONFIG_PAX_PAGEEXEC
11753 +#ifdef CONFIG_PAX_DLRESOLVE
11754 +static void pax_emuplt_close(struct vm_area_struct *vma)
11755 +{
11756 + vma->vm_mm->call_dl_resolve = 0UL;
11757 +}
11758 +
11759 +static int pax_emuplt_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
11760 +{
11761 + unsigned int *kaddr;
11762 +
11763 + vmf->page = alloc_page(GFP_HIGHUSER);
11764 + if (!vmf->page)
11765 + return VM_FAULT_OOM;
11766 +
11767 + kaddr = kmap(vmf->page);
11768 + memset(kaddr, 0, PAGE_SIZE);
11769 + kaddr[0] = 0x9DE3BFA8U; /* save */
11770 + flush_dcache_page(vmf->page);
11771 + kunmap(vmf->page);
11772 + return VM_FAULT_MAJOR;
11773 +}
11774 +
11775 +static const struct vm_operations_struct pax_vm_ops = {
11776 + .close = pax_emuplt_close,
11777 + .fault = pax_emuplt_fault
11778 +};
11779 +
11780 +static int pax_insert_vma(struct vm_area_struct *vma, unsigned long addr)
11781 +{
11782 + int ret;
11783 +
11784 + INIT_LIST_HEAD(&vma->anon_vma_chain);
11785 + vma->vm_mm = current->mm;
11786 + vma->vm_start = addr;
11787 + vma->vm_end = addr + PAGE_SIZE;
11788 + vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC;
11789 + vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
11790 + vma->vm_ops = &pax_vm_ops;
11791 +
11792 + ret = insert_vm_struct(current->mm, vma);
11793 + if (ret)
11794 + return ret;
11795 +
11796 + ++current->mm->total_vm;
11797 + return 0;
11798 +}
11799 +#endif
11800 +
11801 +/*
11802 + * PaX: decide what to do with offenders (regs->tpc = fault address)
11803 + *
11804 + * returns 1 when task should be killed
11805 + * 2 when patched PLT trampoline was detected
11806 + * 3 when unpatched PLT trampoline was detected
11807 + */
11808 +static int pax_handle_fetch_fault(struct pt_regs *regs)
11809 +{
11810 +
11811 +#ifdef CONFIG_PAX_EMUPLT
11812 + int err;
11813 +
11814 + do { /* PaX: patched PLT emulation #1 */
11815 + unsigned int sethi1, sethi2, jmpl;
11816 +
11817 + err = get_user(sethi1, (unsigned int *)regs->tpc);
11818 + err |= get_user(sethi2, (unsigned int *)(regs->tpc+4));
11819 + err |= get_user(jmpl, (unsigned int *)(regs->tpc+8));
11820 +
11821 + if (err)
11822 + break;
11823 +
11824 + if ((sethi1 & 0xFFC00000U) == 0x03000000U &&
11825 + (sethi2 & 0xFFC00000U) == 0x03000000U &&
11826 + (jmpl & 0xFFFFE000U) == 0x81C06000U)
11827 + {
11828 + unsigned long addr;
11829 +
11830 + regs->u_regs[UREG_G1] = (sethi2 & 0x003FFFFFU) << 10;
11831 + addr = regs->u_regs[UREG_G1];
11832 + addr += (((jmpl | 0xFFFFFFFFFFFFE000UL) ^ 0x00001000UL) + 0x00001000UL);
11833 +
11834 + if (test_thread_flag(TIF_32BIT))
11835 + addr &= 0xFFFFFFFFUL;
11836 +
11837 + regs->tpc = addr;
11838 + regs->tnpc = addr+4;
11839 + return 2;
11840 + }
11841 + } while (0);
11842 +
11843 + do { /* PaX: patched PLT emulation #2 */
11844 + unsigned int ba;
11845 +
11846 + err = get_user(ba, (unsigned int *)regs->tpc);
11847 +
11848 + if (err)
11849 + break;
11850 +
11851 + if ((ba & 0xFFC00000U) == 0x30800000U || (ba & 0xFFF80000U) == 0x30480000U) {
11852 + unsigned long addr;
11853 +
11854 + if ((ba & 0xFFC00000U) == 0x30800000U)
11855 + addr = regs->tpc + ((((ba | 0xFFFFFFFFFFC00000UL) ^ 0x00200000UL) + 0x00200000UL) << 2);
11856 + else
11857 + addr = regs->tpc + ((((ba | 0xFFFFFFFFFFF80000UL) ^ 0x00040000UL) + 0x00040000UL) << 2);
11858 +
11859 + if (test_thread_flag(TIF_32BIT))
11860 + addr &= 0xFFFFFFFFUL;
11861 +
11862 + regs->tpc = addr;
11863 + regs->tnpc = addr+4;
11864 + return 2;
11865 + }
11866 + } while (0);
11867 +
11868 + do { /* PaX: patched PLT emulation #3 */
11869 + unsigned int sethi, bajmpl, nop;
11870 +
11871 + err = get_user(sethi, (unsigned int *)regs->tpc);
11872 + err |= get_user(bajmpl, (unsigned int *)(regs->tpc+4));
11873 + err |= get_user(nop, (unsigned int *)(regs->tpc+8));
11874 +
11875 + if (err)
11876 + break;
11877 +
11878 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11879 + ((bajmpl & 0xFFFFE000U) == 0x81C06000U || (bajmpl & 0xFFF80000U) == 0x30480000U) &&
11880 + nop == 0x01000000U)
11881 + {
11882 + unsigned long addr;
11883 +
11884 + addr = (sethi & 0x003FFFFFU) << 10;
11885 + regs->u_regs[UREG_G1] = addr;
11886 + if ((bajmpl & 0xFFFFE000U) == 0x81C06000U)
11887 + addr += (((bajmpl | 0xFFFFFFFFFFFFE000UL) ^ 0x00001000UL) + 0x00001000UL);
11888 + else
11889 + addr = regs->tpc + ((((bajmpl | 0xFFFFFFFFFFF80000UL) ^ 0x00040000UL) + 0x00040000UL) << 2);
11890 +
11891 + if (test_thread_flag(TIF_32BIT))
11892 + addr &= 0xFFFFFFFFUL;
11893 +
11894 + regs->tpc = addr;
11895 + regs->tnpc = addr+4;
11896 + return 2;
11897 + }
11898 + } while (0);
11899 +
11900 + do { /* PaX: patched PLT emulation #4 */
11901 + unsigned int sethi, mov1, call, mov2;
11902 +
11903 + err = get_user(sethi, (unsigned int *)regs->tpc);
11904 + err |= get_user(mov1, (unsigned int *)(regs->tpc+4));
11905 + err |= get_user(call, (unsigned int *)(regs->tpc+8));
11906 + err |= get_user(mov2, (unsigned int *)(regs->tpc+12));
11907 +
11908 + if (err)
11909 + break;
11910 +
11911 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11912 + mov1 == 0x8210000FU &&
11913 + (call & 0xC0000000U) == 0x40000000U &&
11914 + mov2 == 0x9E100001U)
11915 + {
11916 + unsigned long addr;
11917 +
11918 + regs->u_regs[UREG_G1] = regs->u_regs[UREG_RETPC];
11919 + addr = regs->tpc + 4 + ((((call | 0xFFFFFFFFC0000000UL) ^ 0x20000000UL) + 0x20000000UL) << 2);
11920 +
11921 + if (test_thread_flag(TIF_32BIT))
11922 + addr &= 0xFFFFFFFFUL;
11923 +
11924 + regs->tpc = addr;
11925 + regs->tnpc = addr+4;
11926 + return 2;
11927 + }
11928 + } while (0);
11929 +
11930 + do { /* PaX: patched PLT emulation #5 */
11931 + unsigned int sethi, sethi1, sethi2, or1, or2, sllx, jmpl, nop;
11932 +
11933 + err = get_user(sethi, (unsigned int *)regs->tpc);
11934 + err |= get_user(sethi1, (unsigned int *)(regs->tpc+4));
11935 + err |= get_user(sethi2, (unsigned int *)(regs->tpc+8));
11936 + err |= get_user(or1, (unsigned int *)(regs->tpc+12));
11937 + err |= get_user(or2, (unsigned int *)(regs->tpc+16));
11938 + err |= get_user(sllx, (unsigned int *)(regs->tpc+20));
11939 + err |= get_user(jmpl, (unsigned int *)(regs->tpc+24));
11940 + err |= get_user(nop, (unsigned int *)(regs->tpc+28));
11941 +
11942 + if (err)
11943 + break;
11944 +
11945 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11946 + (sethi1 & 0xFFC00000U) == 0x03000000U &&
11947 + (sethi2 & 0xFFC00000U) == 0x0B000000U &&
11948 + (or1 & 0xFFFFE000U) == 0x82106000U &&
11949 + (or2 & 0xFFFFE000U) == 0x8A116000U &&
11950 + sllx == 0x83287020U &&
11951 + jmpl == 0x81C04005U &&
11952 + nop == 0x01000000U)
11953 + {
11954 + unsigned long addr;
11955 +
11956 + regs->u_regs[UREG_G1] = ((sethi1 & 0x003FFFFFU) << 10) | (or1 & 0x000003FFU);
11957 + regs->u_regs[UREG_G1] <<= 32;
11958 + regs->u_regs[UREG_G5] = ((sethi2 & 0x003FFFFFU) << 10) | (or2 & 0x000003FFU);
11959 + addr = regs->u_regs[UREG_G1] + regs->u_regs[UREG_G5];
11960 + regs->tpc = addr;
11961 + regs->tnpc = addr+4;
11962 + return 2;
11963 + }
11964 + } while (0);
11965 +
11966 + do { /* PaX: patched PLT emulation #6 */
11967 + unsigned int sethi, sethi1, sethi2, sllx, or, jmpl, nop;
11968 +
11969 + err = get_user(sethi, (unsigned int *)regs->tpc);
11970 + err |= get_user(sethi1, (unsigned int *)(regs->tpc+4));
11971 + err |= get_user(sethi2, (unsigned int *)(regs->tpc+8));
11972 + err |= get_user(sllx, (unsigned int *)(regs->tpc+12));
11973 + err |= get_user(or, (unsigned int *)(regs->tpc+16));
11974 + err |= get_user(jmpl, (unsigned int *)(regs->tpc+20));
11975 + err |= get_user(nop, (unsigned int *)(regs->tpc+24));
11976 +
11977 + if (err)
11978 + break;
11979 +
11980 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
11981 + (sethi1 & 0xFFC00000U) == 0x03000000U &&
11982 + (sethi2 & 0xFFC00000U) == 0x0B000000U &&
11983 + sllx == 0x83287020U &&
11984 + (or & 0xFFFFE000U) == 0x8A116000U &&
11985 + jmpl == 0x81C04005U &&
11986 + nop == 0x01000000U)
11987 + {
11988 + unsigned long addr;
11989 +
11990 + regs->u_regs[UREG_G1] = (sethi1 & 0x003FFFFFU) << 10;
11991 + regs->u_regs[UREG_G1] <<= 32;
11992 + regs->u_regs[UREG_G5] = ((sethi2 & 0x003FFFFFU) << 10) | (or & 0x3FFU);
11993 + addr = regs->u_regs[UREG_G1] + regs->u_regs[UREG_G5];
11994 + regs->tpc = addr;
11995 + regs->tnpc = addr+4;
11996 + return 2;
11997 + }
11998 + } while (0);
11999 +
12000 + do { /* PaX: unpatched PLT emulation step 1 */
12001 + unsigned int sethi, ba, nop;
12002 +
12003 + err = get_user(sethi, (unsigned int *)regs->tpc);
12004 + err |= get_user(ba, (unsigned int *)(regs->tpc+4));
12005 + err |= get_user(nop, (unsigned int *)(regs->tpc+8));
12006 +
12007 + if (err)
12008 + break;
12009 +
12010 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
12011 + ((ba & 0xFFC00000U) == 0x30800000U || (ba & 0xFFF80000U) == 0x30680000U) &&
12012 + nop == 0x01000000U)
12013 + {
12014 + unsigned long addr;
12015 + unsigned int save, call;
12016 + unsigned int sethi1, sethi2, or1, or2, sllx, add, jmpl;
12017 +
12018 + if ((ba & 0xFFC00000U) == 0x30800000U)
12019 + addr = regs->tpc + 4 + ((((ba | 0xFFFFFFFFFFC00000UL) ^ 0x00200000UL) + 0x00200000UL) << 2);
12020 + else
12021 + addr = regs->tpc + 4 + ((((ba | 0xFFFFFFFFFFF80000UL) ^ 0x00040000UL) + 0x00040000UL) << 2);
12022 +
12023 + if (test_thread_flag(TIF_32BIT))
12024 + addr &= 0xFFFFFFFFUL;
12025 +
12026 + err = get_user(save, (unsigned int *)addr);
12027 + err |= get_user(call, (unsigned int *)(addr+4));
12028 + err |= get_user(nop, (unsigned int *)(addr+8));
12029 + if (err)
12030 + break;
12031 +
12032 +#ifdef CONFIG_PAX_DLRESOLVE
12033 + if (save == 0x9DE3BFA8U &&
12034 + (call & 0xC0000000U) == 0x40000000U &&
12035 + nop == 0x01000000U)
12036 + {
12037 + struct vm_area_struct *vma;
12038 + unsigned long call_dl_resolve;
12039 +
12040 + down_read(&current->mm->mmap_sem);
12041 + call_dl_resolve = current->mm->call_dl_resolve;
12042 + up_read(&current->mm->mmap_sem);
12043 + if (likely(call_dl_resolve))
12044 + goto emulate;
12045 +
12046 + vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
12047 +
12048 + down_write(&current->mm->mmap_sem);
12049 + if (current->mm->call_dl_resolve) {
12050 + call_dl_resolve = current->mm->call_dl_resolve;
12051 + up_write(&current->mm->mmap_sem);
12052 + if (vma)
12053 + kmem_cache_free(vm_area_cachep, vma);
12054 + goto emulate;
12055 + }
12056 +
12057 + call_dl_resolve = get_unmapped_area(NULL, 0UL, PAGE_SIZE, 0UL, MAP_PRIVATE);
12058 + if (!vma || (call_dl_resolve & ~PAGE_MASK)) {
12059 + up_write(&current->mm->mmap_sem);
12060 + if (vma)
12061 + kmem_cache_free(vm_area_cachep, vma);
12062 + return 1;
12063 + }
12064 +
12065 + if (pax_insert_vma(vma, call_dl_resolve)) {
12066 + up_write(&current->mm->mmap_sem);
12067 + kmem_cache_free(vm_area_cachep, vma);
12068 + return 1;
12069 + }
12070 +
12071 + current->mm->call_dl_resolve = call_dl_resolve;
12072 + up_write(&current->mm->mmap_sem);
12073 +
12074 +emulate:
12075 + regs->u_regs[UREG_G1] = (sethi & 0x003FFFFFU) << 10;
12076 + regs->tpc = call_dl_resolve;
12077 + regs->tnpc = addr+4;
12078 + return 3;
12079 + }
12080 +#endif
12081 +
12082 + /* PaX: glibc 2.4+ generates sethi/jmpl instead of save/call */
12083 + if ((save & 0xFFC00000U) == 0x05000000U &&
12084 + (call & 0xFFFFE000U) == 0x85C0A000U &&
12085 + nop == 0x01000000U)
12086 + {
12087 + regs->u_regs[UREG_G1] = (sethi & 0x003FFFFFU) << 10;
12088 + regs->u_regs[UREG_G2] = addr + 4;
12089 + addr = (save & 0x003FFFFFU) << 10;
12090 + addr += (((call | 0xFFFFFFFFFFFFE000UL) ^ 0x00001000UL) + 0x00001000UL);
12091 +
12092 + if (test_thread_flag(TIF_32BIT))
12093 + addr &= 0xFFFFFFFFUL;
12094 +
12095 + regs->tpc = addr;
12096 + regs->tnpc = addr+4;
12097 + return 3;
12098 + }
12099 +
12100 + /* PaX: 64-bit PLT stub */
12101 + err = get_user(sethi1, (unsigned int *)addr);
12102 + err |= get_user(sethi2, (unsigned int *)(addr+4));
12103 + err |= get_user(or1, (unsigned int *)(addr+8));
12104 + err |= get_user(or2, (unsigned int *)(addr+12));
12105 + err |= get_user(sllx, (unsigned int *)(addr+16));
12106 + err |= get_user(add, (unsigned int *)(addr+20));
12107 + err |= get_user(jmpl, (unsigned int *)(addr+24));
12108 + err |= get_user(nop, (unsigned int *)(addr+28));
12109 + if (err)
12110 + break;
12111 +
12112 + if ((sethi1 & 0xFFC00000U) == 0x09000000U &&
12113 + (sethi2 & 0xFFC00000U) == 0x0B000000U &&
12114 + (or1 & 0xFFFFE000U) == 0x88112000U &&
12115 + (or2 & 0xFFFFE000U) == 0x8A116000U &&
12116 + sllx == 0x89293020U &&
12117 + add == 0x8A010005U &&
12118 + jmpl == 0x89C14000U &&
12119 + nop == 0x01000000U)
12120 + {
12121 + regs->u_regs[UREG_G1] = (sethi & 0x003FFFFFU) << 10;
12122 + regs->u_regs[UREG_G4] = ((sethi1 & 0x003FFFFFU) << 10) | (or1 & 0x000003FFU);
12123 + regs->u_regs[UREG_G4] <<= 32;
12124 + regs->u_regs[UREG_G5] = ((sethi2 & 0x003FFFFFU) << 10) | (or2 & 0x000003FFU);
12125 + regs->u_regs[UREG_G5] += regs->u_regs[UREG_G4];
12126 + regs->u_regs[UREG_G4] = addr + 24;
12127 + addr = regs->u_regs[UREG_G5];
12128 + regs->tpc = addr;
12129 + regs->tnpc = addr+4;
12130 + return 3;
12131 + }
12132 + }
12133 + } while (0);
12134 +
12135 +#ifdef CONFIG_PAX_DLRESOLVE
12136 + do { /* PaX: unpatched PLT emulation step 2 */
12137 + unsigned int save, call, nop;
12138 +
12139 + err = get_user(save, (unsigned int *)(regs->tpc-4));
12140 + err |= get_user(call, (unsigned int *)regs->tpc);
12141 + err |= get_user(nop, (unsigned int *)(regs->tpc+4));
12142 + if (err)
12143 + break;
12144 +
12145 + if (save == 0x9DE3BFA8U &&
12146 + (call & 0xC0000000U) == 0x40000000U &&
12147 + nop == 0x01000000U)
12148 + {
12149 + unsigned long dl_resolve = regs->tpc + ((((call | 0xFFFFFFFFC0000000UL) ^ 0x20000000UL) + 0x20000000UL) << 2);
12150 +
12151 + if (test_thread_flag(TIF_32BIT))
12152 + dl_resolve &= 0xFFFFFFFFUL;
12153 +
12154 + regs->u_regs[UREG_RETPC] = regs->tpc;
12155 + regs->tpc = dl_resolve;
12156 + regs->tnpc = dl_resolve+4;
12157 + return 3;
12158 + }
12159 + } while (0);
12160 +#endif
12161 +
12162 + do { /* PaX: patched PLT emulation #7, must be AFTER the unpatched PLT emulation */
12163 + unsigned int sethi, ba, nop;
12164 +
12165 + err = get_user(sethi, (unsigned int *)regs->tpc);
12166 + err |= get_user(ba, (unsigned int *)(regs->tpc+4));
12167 + err |= get_user(nop, (unsigned int *)(regs->tpc+8));
12168 +
12169 + if (err)
12170 + break;
12171 +
12172 + if ((sethi & 0xFFC00000U) == 0x03000000U &&
12173 + (ba & 0xFFF00000U) == 0x30600000U &&
12174 + nop == 0x01000000U)
12175 + {
12176 + unsigned long addr;
12177 +
12178 + addr = (sethi & 0x003FFFFFU) << 10;
12179 + regs->u_regs[UREG_G1] = addr;
12180 + addr = regs->tpc + ((((ba | 0xFFFFFFFFFFF80000UL) ^ 0x00040000UL) + 0x00040000UL) << 2);
12181 +
12182 + if (test_thread_flag(TIF_32BIT))
12183 + addr &= 0xFFFFFFFFUL;
12184 +
12185 + regs->tpc = addr;
12186 + regs->tnpc = addr+4;
12187 + return 2;
12188 + }
12189 + } while (0);
12190 +
12191 +#endif
12192 +
12193 + return 1;
12194 +}
12195 +
12196 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
12197 +{
12198 + unsigned long i;
12199 +
12200 + printk(KERN_ERR "PAX: bytes at PC: ");
12201 + for (i = 0; i < 8; i++) {
12202 + unsigned int c;
12203 + if (get_user(c, (unsigned int *)pc+i))
12204 + printk(KERN_CONT "???????? ");
12205 + else
12206 + printk(KERN_CONT "%08x ", c);
12207 + }
12208 + printk("\n");
12209 +}
12210 +#endif
12211 +
12212 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
12213 {
12214 enum ctx_state prev_state = exception_enter();
12215 @@ -353,6 +816,29 @@ retry:
12216 if (!vma)
12217 goto bad_area;
12218
12219 +#ifdef CONFIG_PAX_PAGEEXEC
12220 + /* PaX: detect ITLB misses on non-exec pages */
12221 + if ((mm->pax_flags & MF_PAX_PAGEEXEC) && vma->vm_start <= address &&
12222 + !(vma->vm_flags & VM_EXEC) && (fault_code & FAULT_CODE_ITLB))
12223 + {
12224 + if (address != regs->tpc)
12225 + goto good_area;
12226 +
12227 + up_read(&mm->mmap_sem);
12228 + switch (pax_handle_fetch_fault(regs)) {
12229 +
12230 +#ifdef CONFIG_PAX_EMUPLT
12231 + case 2:
12232 + case 3:
12233 + return;
12234 +#endif
12235 +
12236 + }
12237 + pax_report_fault(regs, (void *)regs->tpc, (void *)(regs->u_regs[UREG_FP] + STACK_BIAS));
12238 + do_group_exit(SIGKILL);
12239 + }
12240 +#endif
12241 +
12242 /* Pure DTLB misses do not tell us whether the fault causing
12243 * load/store/atomic was a write or not, it only says that there
12244 * was no match. So in such a case we (carefully) read the
12245 diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
12246 index 131eaf4..285ea31 100644
12247 --- a/arch/sparc/mm/hugetlbpage.c
12248 +++ b/arch/sparc/mm/hugetlbpage.c
12249 @@ -25,8 +25,10 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
12250 unsigned long addr,
12251 unsigned long len,
12252 unsigned long pgoff,
12253 - unsigned long flags)
12254 + unsigned long flags,
12255 + unsigned long offset)
12256 {
12257 + struct mm_struct *mm = current->mm;
12258 unsigned long task_size = TASK_SIZE;
12259 struct vm_unmapped_area_info info;
12260
12261 @@ -35,15 +37,22 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
12262
12263 info.flags = 0;
12264 info.length = len;
12265 - info.low_limit = TASK_UNMAPPED_BASE;
12266 + info.low_limit = mm->mmap_base;
12267 info.high_limit = min(task_size, VA_EXCLUDE_START);
12268 info.align_mask = PAGE_MASK & ~HPAGE_MASK;
12269 info.align_offset = 0;
12270 + info.threadstack_offset = offset;
12271 addr = vm_unmapped_area(&info);
12272
12273 if ((addr & ~PAGE_MASK) && task_size > VA_EXCLUDE_END) {
12274 VM_BUG_ON(addr != -ENOMEM);
12275 info.low_limit = VA_EXCLUDE_END;
12276 +
12277 +#ifdef CONFIG_PAX_RANDMMAP
12278 + if (mm->pax_flags & MF_PAX_RANDMMAP)
12279 + info.low_limit += mm->delta_mmap;
12280 +#endif
12281 +
12282 info.high_limit = task_size;
12283 addr = vm_unmapped_area(&info);
12284 }
12285 @@ -55,7 +64,8 @@ static unsigned long
12286 hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
12287 const unsigned long len,
12288 const unsigned long pgoff,
12289 - const unsigned long flags)
12290 + const unsigned long flags,
12291 + const unsigned long offset)
12292 {
12293 struct mm_struct *mm = current->mm;
12294 unsigned long addr = addr0;
12295 @@ -70,6 +80,7 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
12296 info.high_limit = mm->mmap_base;
12297 info.align_mask = PAGE_MASK & ~HPAGE_MASK;
12298 info.align_offset = 0;
12299 + info.threadstack_offset = offset;
12300 addr = vm_unmapped_area(&info);
12301
12302 /*
12303 @@ -82,6 +93,12 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
12304 VM_BUG_ON(addr != -ENOMEM);
12305 info.flags = 0;
12306 info.low_limit = TASK_UNMAPPED_BASE;
12307 +
12308 +#ifdef CONFIG_PAX_RANDMMAP
12309 + if (mm->pax_flags & MF_PAX_RANDMMAP)
12310 + info.low_limit += mm->delta_mmap;
12311 +#endif
12312 +
12313 info.high_limit = STACK_TOP32;
12314 addr = vm_unmapped_area(&info);
12315 }
12316 @@ -96,6 +113,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
12317 struct mm_struct *mm = current->mm;
12318 struct vm_area_struct *vma;
12319 unsigned long task_size = TASK_SIZE;
12320 + unsigned long offset = gr_rand_threadstack_offset(mm, file, flags);
12321
12322 if (test_thread_flag(TIF_32BIT))
12323 task_size = STACK_TOP32;
12324 @@ -111,19 +129,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
12325 return addr;
12326 }
12327
12328 +#ifdef CONFIG_PAX_RANDMMAP
12329 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
12330 +#endif
12331 +
12332 if (addr) {
12333 addr = ALIGN(addr, HPAGE_SIZE);
12334 vma = find_vma(mm, addr);
12335 - if (task_size - len >= addr &&
12336 - (!vma || addr + len <= vma->vm_start))
12337 + if (task_size - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
12338 return addr;
12339 }
12340 if (mm->get_unmapped_area == arch_get_unmapped_area)
12341 return hugetlb_get_unmapped_area_bottomup(file, addr, len,
12342 - pgoff, flags);
12343 + pgoff, flags, offset);
12344 else
12345 return hugetlb_get_unmapped_area_topdown(file, addr, len,
12346 - pgoff, flags);
12347 + pgoff, flags, offset);
12348 }
12349
12350 pte_t *huge_pte_alloc(struct mm_struct *mm,
12351 diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
12352 index 4ac88b7..bac6cb2 100644
12353 --- a/arch/sparc/mm/init_64.c
12354 +++ b/arch/sparc/mm/init_64.c
12355 @@ -187,9 +187,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
12356 int num_kernel_image_mappings;
12357
12358 #ifdef CONFIG_DEBUG_DCFLUSH
12359 -atomic_t dcpage_flushes = ATOMIC_INIT(0);
12360 +atomic_unchecked_t dcpage_flushes = ATOMIC_INIT(0);
12361 #ifdef CONFIG_SMP
12362 -atomic_t dcpage_flushes_xcall = ATOMIC_INIT(0);
12363 +atomic_unchecked_t dcpage_flushes_xcall = ATOMIC_INIT(0);
12364 #endif
12365 #endif
12366
12367 @@ -197,7 +197,7 @@ inline void flush_dcache_page_impl(struct page *page)
12368 {
12369 BUG_ON(tlb_type == hypervisor);
12370 #ifdef CONFIG_DEBUG_DCFLUSH
12371 - atomic_inc(&dcpage_flushes);
12372 + atomic_inc_unchecked(&dcpage_flushes);
12373 #endif
12374
12375 #ifdef DCACHE_ALIASING_POSSIBLE
12376 @@ -469,10 +469,10 @@ void mmu_info(struct seq_file *m)
12377
12378 #ifdef CONFIG_DEBUG_DCFLUSH
12379 seq_printf(m, "DCPageFlushes\t: %d\n",
12380 - atomic_read(&dcpage_flushes));
12381 + atomic_read_unchecked(&dcpage_flushes));
12382 #ifdef CONFIG_SMP
12383 seq_printf(m, "DCPageFlushesXC\t: %d\n",
12384 - atomic_read(&dcpage_flushes_xcall));
12385 + atomic_read_unchecked(&dcpage_flushes_xcall));
12386 #endif /* CONFIG_SMP */
12387 #endif /* CONFIG_DEBUG_DCFLUSH */
12388 }
12389 diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
12390 index 9def1f5..cf0cabc 100644
12391 --- a/arch/tile/Kconfig
12392 +++ b/arch/tile/Kconfig
12393 @@ -204,6 +204,7 @@ source "kernel/Kconfig.hz"
12394
12395 config KEXEC
12396 bool "kexec system call"
12397 + depends on !GRKERNSEC_KMEM
12398 ---help---
12399 kexec is a system call that implements the ability to shutdown your
12400 current kernel, and to start another kernel. It is like a reboot
12401 diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h
12402 index 0496970..1a57e5f 100644
12403 --- a/arch/tile/include/asm/atomic_64.h
12404 +++ b/arch/tile/include/asm/atomic_64.h
12405 @@ -105,6 +105,16 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
12406
12407 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
12408
12409 +#define atomic64_read_unchecked(v) atomic64_read(v)
12410 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
12411 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
12412 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
12413 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
12414 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
12415 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
12416 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
12417 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
12418 +
12419 #endif /* !__ASSEMBLY__ */
12420
12421 #endif /* _ASM_TILE_ATOMIC_64_H */
12422 diff --git a/arch/tile/include/asm/cache.h b/arch/tile/include/asm/cache.h
12423 index 6160761..00cac88 100644
12424 --- a/arch/tile/include/asm/cache.h
12425 +++ b/arch/tile/include/asm/cache.h
12426 @@ -15,11 +15,12 @@
12427 #ifndef _ASM_TILE_CACHE_H
12428 #define _ASM_TILE_CACHE_H
12429
12430 +#include <linux/const.h>
12431 #include <arch/chip.h>
12432
12433 /* bytes per L1 data cache line */
12434 #define L1_CACHE_SHIFT CHIP_L1D_LOG_LINE_SIZE()
12435 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
12436 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
12437
12438 /* bytes per L2 cache line */
12439 #define L2_CACHE_SHIFT CHIP_L2_LOG_LINE_SIZE()
12440 diff --git a/arch/tile/include/asm/uaccess.h b/arch/tile/include/asm/uaccess.h
12441 index 0a9c4265..bfb62d1 100644
12442 --- a/arch/tile/include/asm/uaccess.h
12443 +++ b/arch/tile/include/asm/uaccess.h
12444 @@ -429,9 +429,9 @@ static inline unsigned long __must_check copy_from_user(void *to,
12445 const void __user *from,
12446 unsigned long n)
12447 {
12448 - int sz = __compiletime_object_size(to);
12449 + size_t sz = __compiletime_object_size(to);
12450
12451 - if (likely(sz == -1 || sz >= n))
12452 + if (likely(sz == (size_t)-1 || sz >= n))
12453 n = _copy_from_user(to, from, n);
12454 else
12455 copy_from_user_overflow();
12456 diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c
12457 index c034dc3..cf1cc96 100644
12458 --- a/arch/tile/mm/hugetlbpage.c
12459 +++ b/arch/tile/mm/hugetlbpage.c
12460 @@ -174,6 +174,7 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file,
12461 info.high_limit = TASK_SIZE;
12462 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
12463 info.align_offset = 0;
12464 + info.threadstack_offset = 0;
12465 return vm_unmapped_area(&info);
12466 }
12467
12468 @@ -191,6 +192,7 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
12469 info.high_limit = current->mm->mmap_base;
12470 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
12471 info.align_offset = 0;
12472 + info.threadstack_offset = 0;
12473 addr = vm_unmapped_area(&info);
12474
12475 /*
12476 diff --git a/arch/um/Makefile b/arch/um/Makefile
12477 index 098ab33..fc54a33 100644
12478 --- a/arch/um/Makefile
12479 +++ b/arch/um/Makefile
12480 @@ -73,6 +73,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \
12481 -D_FILE_OFFSET_BITS=64 -idirafter include \
12482 -D__KERNEL__ -D__UM_HOST__
12483
12484 +ifdef CONSTIFY_PLUGIN
12485 +USER_CFLAGS += -fplugin-arg-constify_plugin-no-constify
12486 +endif
12487 +
12488 #This will adjust *FLAGS accordingly to the platform.
12489 include $(ARCH_DIR)/Makefile-os-$(OS)
12490
12491 diff --git a/arch/um/include/asm/cache.h b/arch/um/include/asm/cache.h
12492 index 19e1bdd..3665b77 100644
12493 --- a/arch/um/include/asm/cache.h
12494 +++ b/arch/um/include/asm/cache.h
12495 @@ -1,6 +1,7 @@
12496 #ifndef __UM_CACHE_H
12497 #define __UM_CACHE_H
12498
12499 +#include <linux/const.h>
12500
12501 #if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
12502 # define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
12503 @@ -12,6 +13,6 @@
12504 # define L1_CACHE_SHIFT 5
12505 #endif
12506
12507 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
12508 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
12509
12510 #endif
12511 diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h
12512 index 2e0a6b1..a64d0f5 100644
12513 --- a/arch/um/include/asm/kmap_types.h
12514 +++ b/arch/um/include/asm/kmap_types.h
12515 @@ -8,6 +8,6 @@
12516
12517 /* No more #include "asm/arch/kmap_types.h" ! */
12518
12519 -#define KM_TYPE_NR 14
12520 +#define KM_TYPE_NR 15
12521
12522 #endif
12523 diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h
12524 index 71c5d13..4c7b9f1 100644
12525 --- a/arch/um/include/asm/page.h
12526 +++ b/arch/um/include/asm/page.h
12527 @@ -14,6 +14,9 @@
12528 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
12529 #define PAGE_MASK (~(PAGE_SIZE-1))
12530
12531 +#define ktla_ktva(addr) (addr)
12532 +#define ktva_ktla(addr) (addr)
12533 +
12534 #ifndef __ASSEMBLY__
12535
12536 struct page;
12537 diff --git a/arch/um/include/asm/pgtable-3level.h b/arch/um/include/asm/pgtable-3level.h
12538 index 2b4274e..754fe06 100644
12539 --- a/arch/um/include/asm/pgtable-3level.h
12540 +++ b/arch/um/include/asm/pgtable-3level.h
12541 @@ -58,6 +58,7 @@
12542 #define pud_present(x) (pud_val(x) & _PAGE_PRESENT)
12543 #define pud_populate(mm, pud, pmd) \
12544 set_pud(pud, __pud(_PAGE_TABLE + __pa(pmd)))
12545 +#define pud_populate_kernel(mm, pud, pmd) pud_populate((mm), (pud), (pmd))
12546
12547 #ifdef CONFIG_64BIT
12548 #define set_pud(pudptr, pudval) set_64bit((u64 *) (pudptr), pud_val(pudval))
12549 diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
12550 index 68b9119..f72353c 100644
12551 --- a/arch/um/kernel/process.c
12552 +++ b/arch/um/kernel/process.c
12553 @@ -345,22 +345,6 @@ int singlestepping(void * t)
12554 return 2;
12555 }
12556
12557 -/*
12558 - * Only x86 and x86_64 have an arch_align_stack().
12559 - * All other arches have "#define arch_align_stack(x) (x)"
12560 - * in their asm/exec.h
12561 - * As this is included in UML from asm-um/system-generic.h,
12562 - * we can use it to behave as the subarch does.
12563 - */
12564 -#ifndef arch_align_stack
12565 -unsigned long arch_align_stack(unsigned long sp)
12566 -{
12567 - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
12568 - sp -= get_random_int() % 8192;
12569 - return sp & ~0xf;
12570 -}
12571 -#endif
12572 -
12573 unsigned long get_wchan(struct task_struct *p)
12574 {
12575 unsigned long stack_page, sp, ip;
12576 diff --git a/arch/unicore32/include/asm/cache.h b/arch/unicore32/include/asm/cache.h
12577 index ad8f795..2c7eec6 100644
12578 --- a/arch/unicore32/include/asm/cache.h
12579 +++ b/arch/unicore32/include/asm/cache.h
12580 @@ -12,8 +12,10 @@
12581 #ifndef __UNICORE_CACHE_H__
12582 #define __UNICORE_CACHE_H__
12583
12584 -#define L1_CACHE_SHIFT (5)
12585 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
12586 +#include <linux/const.h>
12587 +
12588 +#define L1_CACHE_SHIFT 5
12589 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
12590
12591 /*
12592 * Memory returned by kmalloc() may be used for DMA, so we must make
12593 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
12594 index b3a1a5d..8dbc2d6 100644
12595 --- a/arch/x86/Kconfig
12596 +++ b/arch/x86/Kconfig
12597 @@ -35,13 +35,12 @@ config X86
12598 select ARCH_MIGHT_HAVE_PC_SERIO
12599 select ARCH_SUPPORTS_ATOMIC_RMW
12600 select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
12601 - select ARCH_SUPPORTS_INT128 if X86_64
12602 + select ARCH_SUPPORTS_INT128 if X86_64 && !PAX_SIZE_OVERFLOW
12603 select ARCH_SUPPORTS_NUMA_BALANCING if X86_64
12604 select ARCH_USE_BUILTIN_BSWAP
12605 select ARCH_USE_CMPXCHG_LOCKREF if X86_64
12606 select ARCH_USE_QUEUED_RWLOCKS
12607 select ARCH_USE_QUEUED_SPINLOCKS
12608 - select ARCH_WANTS_DYNAMIC_TASK_STRUCT
12609 select ARCH_WANT_FRAME_POINTERS
12610 select ARCH_WANT_IPC_PARSE_VERSION if X86_32
12611 select ARCH_WANT_OPTIONAL_GPIOLIB
12612 @@ -85,7 +84,7 @@ config X86
12613 select HAVE_ARCH_TRACEHOOK
12614 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
12615 select HAVE_BPF_JIT if X86_64
12616 - select HAVE_CC_STACKPROTECTOR
12617 + select HAVE_CC_STACKPROTECTOR if X86_64 || !PAX_MEMORY_UDEREF
12618 select HAVE_CMPXCHG_DOUBLE
12619 select HAVE_CMPXCHG_LOCAL
12620 select HAVE_CONTEXT_TRACKING if X86_64
12621 @@ -274,7 +273,7 @@ config X86_64_SMP
12622
12623 config X86_32_LAZY_GS
12624 def_bool y
12625 - depends on X86_32 && !CC_STACKPROTECTOR
12626 + depends on X86_32 && !CC_STACKPROTECTOR && !PAX_MEMORY_UDEREF
12627
12628 config ARCH_HWEIGHT_CFLAGS
12629 string
12630 @@ -646,6 +645,7 @@ config SCHED_OMIT_FRAME_POINTER
12631
12632 menuconfig HYPERVISOR_GUEST
12633 bool "Linux guest support"
12634 + depends on !GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_VIRT_GUEST || (GRKERNSEC_CONFIG_VIRT_HOST && GRKERNSEC_CONFIG_VIRT_XEN)
12635 ---help---
12636 Say Y here to enable options for running Linux under various hyper-
12637 visors. This option enables basic hypervisor detection and platform
12638 @@ -1014,6 +1014,7 @@ config VM86
12639
12640 config X86_16BIT
12641 bool "Enable support for 16-bit segments" if EXPERT
12642 + depends on !GRKERNSEC
12643 default y
12644 ---help---
12645 This option is required by programs like Wine to run 16-bit
12646 @@ -1182,6 +1183,7 @@ choice
12647
12648 config NOHIGHMEM
12649 bool "off"
12650 + depends on !(PAX_PAGEEXEC && PAX_ENABLE_PAE)
12651 ---help---
12652 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
12653 However, the address space of 32-bit x86 processors is only 4
12654 @@ -1218,6 +1220,7 @@ config NOHIGHMEM
12655
12656 config HIGHMEM4G
12657 bool "4GB"
12658 + depends on !(PAX_PAGEEXEC && PAX_ENABLE_PAE)
12659 ---help---
12660 Select this if you have a 32-bit processor and between 1 and 4
12661 gigabytes of physical RAM.
12662 @@ -1270,7 +1273,7 @@ config PAGE_OFFSET
12663 hex
12664 default 0xB0000000 if VMSPLIT_3G_OPT
12665 default 0x80000000 if VMSPLIT_2G
12666 - default 0x78000000 if VMSPLIT_2G_OPT
12667 + default 0x70000000 if VMSPLIT_2G_OPT
12668 default 0x40000000 if VMSPLIT_1G
12669 default 0xC0000000
12670 depends on X86_32
12671 @@ -1290,7 +1293,6 @@ config X86_PAE
12672
12673 config ARCH_PHYS_ADDR_T_64BIT
12674 def_bool y
12675 - depends on X86_64 || X86_PAE
12676
12677 config ARCH_DMA_ADDR_T_64BIT
12678 def_bool y
12679 @@ -1724,6 +1726,7 @@ source kernel/Kconfig.hz
12680
12681 config KEXEC
12682 bool "kexec system call"
12683 + depends on !GRKERNSEC_KMEM
12684 ---help---
12685 kexec is a system call that implements the ability to shutdown your
12686 current kernel, and to start another kernel. It is like a reboot
12687 @@ -1906,7 +1909,9 @@ config X86_NEED_RELOCS
12688
12689 config PHYSICAL_ALIGN
12690 hex "Alignment value to which kernel should be aligned"
12691 - default "0x200000"
12692 + default "0x1000000"
12693 + range 0x200000 0x1000000 if PAX_KERNEXEC && X86_PAE
12694 + range 0x400000 0x1000000 if PAX_KERNEXEC && !X86_PAE
12695 range 0x2000 0x1000000 if X86_32
12696 range 0x200000 0x1000000 if X86_64
12697 ---help---
12698 @@ -1989,6 +1994,7 @@ config COMPAT_VDSO
12699 def_bool n
12700 prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
12701 depends on X86_32 || IA32_EMULATION
12702 + depends on !PAX_PAGEEXEC && !PAX_SEGMEXEC && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
12703 ---help---
12704 Certain buggy versions of glibc will crash if they are
12705 presented with a 32-bit vDSO that is not mapped at the address
12706 @@ -2053,6 +2059,22 @@ config CMDLINE_OVERRIDE
12707 This is used to work around broken boot loaders. This should
12708 be set to 'N' under normal conditions.
12709
12710 +config DEFAULT_MODIFY_LDT_SYSCALL
12711 + bool "Allow userspace to modify the LDT by default"
12712 + default y
12713 +
12714 + ---help---
12715 + Modifying the LDT (Local Descriptor Table) may be needed to run a
12716 + 16-bit or segmented code such as Dosemu or Wine. This is done via
12717 + a system call which is not needed to run portable applications,
12718 + and which can sometimes be abused to exploit some weaknesses of
12719 + the architecture, opening new vulnerabilities.
12720 +
12721 + For this reason this option allows one to enable or disable the
12722 + feature at runtime. It is recommended to say 'N' here to leave
12723 + the system protected, and to enable it at runtime only if needed
12724 + by setting the sys.kernel.modify_ldt sysctl.
12725 +
12726 source "kernel/livepatch/Kconfig"
12727
12728 endmenu
12729 diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
12730 index 6983314..54ad7e8 100644
12731 --- a/arch/x86/Kconfig.cpu
12732 +++ b/arch/x86/Kconfig.cpu
12733 @@ -319,7 +319,7 @@ config X86_PPRO_FENCE
12734
12735 config X86_F00F_BUG
12736 def_bool y
12737 - depends on M586MMX || M586TSC || M586 || M486
12738 + depends on (M586MMX || M586TSC || M586 || M486) && !PAX_KERNEXEC
12739
12740 config X86_INVD_BUG
12741 def_bool y
12742 @@ -327,7 +327,7 @@ config X86_INVD_BUG
12743
12744 config X86_ALIGNMENT_16
12745 def_bool y
12746 - depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
12747 + depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK8 || MK7 || MK6 || MCORE2 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
12748
12749 config X86_INTEL_USERCOPY
12750 def_bool y
12751 @@ -369,7 +369,7 @@ config X86_CMPXCHG64
12752 # generates cmov.
12753 config X86_CMOV
12754 def_bool y
12755 - depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
12756 + depends on (MK8 || MK7 || MCORE2 || MPSC || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
12757
12758 config X86_MINIMUM_CPU_FAMILY
12759 int
12760 diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
12761 index d8c0d32..4ea2bb0 100644
12762 --- a/arch/x86/Kconfig.debug
12763 +++ b/arch/x86/Kconfig.debug
12764 @@ -89,7 +89,7 @@ config EFI_PGT_DUMP
12765 config DEBUG_RODATA
12766 bool "Write protect kernel read-only data structures"
12767 default y
12768 - depends on DEBUG_KERNEL
12769 + depends on DEBUG_KERNEL && BROKEN
12770 ---help---
12771 Mark the kernel read-only data as write-protected in the pagetables,
12772 in order to catch accidental (and incorrect) writes to such const
12773 @@ -107,7 +107,7 @@ config DEBUG_RODATA_TEST
12774
12775 config DEBUG_SET_MODULE_RONX
12776 bool "Set loadable kernel module data as NX and text as RO"
12777 - depends on MODULES
12778 + depends on MODULES && BROKEN
12779 ---help---
12780 This option helps catch unintended modifications to loadable
12781 kernel module's text and read-only data. It also prevents execution
12782 diff --git a/arch/x86/Makefile b/arch/x86/Makefile
12783 index 118e6de..e02efff 100644
12784 --- a/arch/x86/Makefile
12785 +++ b/arch/x86/Makefile
12786 @@ -65,9 +65,6 @@ ifeq ($(CONFIG_X86_32),y)
12787 # CPU-specific tuning. Anything which can be shared with UML should go here.
12788 include arch/x86/Makefile_32.cpu
12789 KBUILD_CFLAGS += $(cflags-y)
12790 -
12791 - # temporary until string.h is fixed
12792 - KBUILD_CFLAGS += -ffreestanding
12793 else
12794 BITS := 64
12795 UTS_MACHINE := x86_64
12796 @@ -116,6 +113,9 @@ else
12797 KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args)
12798 endif
12799
12800 +# temporary until string.h is fixed
12801 +KBUILD_CFLAGS += -ffreestanding
12802 +
12803 # Make sure compiler does not have buggy stack-protector support.
12804 ifdef CONFIG_CC_STACKPROTECTOR
12805 cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
12806 @@ -184,6 +184,7 @@ archheaders:
12807 $(Q)$(MAKE) $(build)=arch/x86/entry/syscalls all
12808
12809 archprepare:
12810 + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
12811 ifeq ($(CONFIG_KEXEC_FILE),y)
12812 $(Q)$(MAKE) $(build)=arch/x86/purgatory arch/x86/purgatory/kexec-purgatory.c
12813 endif
12814 @@ -267,3 +268,9 @@ define archhelp
12815 echo ' FDARGS="..." arguments for the booted kernel'
12816 echo ' FDINITRD=file initrd for the booted kernel'
12817 endef
12818 +
12819 +define OLD_LD
12820 +
12821 +*** ${VERSION}.${PATCHLEVEL} PaX kernels no longer build correctly with old versions of binutils.
12822 +*** Please upgrade your binutils to 2.18 or newer
12823 +endef
12824 diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
12825 index 57bbf2f..b100fce 100644
12826 --- a/arch/x86/boot/Makefile
12827 +++ b/arch/x86/boot/Makefile
12828 @@ -58,6 +58,9 @@ clean-files += cpustr.h
12829 # ---------------------------------------------------------------------------
12830
12831 KBUILD_CFLAGS := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP
12832 +ifdef CONSTIFY_PLUGIN
12833 +KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify
12834 +endif
12835 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
12836 GCOV_PROFILE := n
12837
12838 diff --git a/arch/x86/boot/bitops.h b/arch/x86/boot/bitops.h
12839 index 878e4b9..20537ab 100644
12840 --- a/arch/x86/boot/bitops.h
12841 +++ b/arch/x86/boot/bitops.h
12842 @@ -26,7 +26,7 @@ static inline int variable_test_bit(int nr, const void *addr)
12843 u8 v;
12844 const u32 *p = (const u32 *)addr;
12845
12846 - asm("btl %2,%1; setc %0" : "=qm" (v) : "m" (*p), "Ir" (nr));
12847 + asm volatile("btl %2,%1; setc %0" : "=qm" (v) : "m" (*p), "Ir" (nr));
12848 return v;
12849 }
12850
12851 @@ -37,7 +37,7 @@ static inline int variable_test_bit(int nr, const void *addr)
12852
12853 static inline void set_bit(int nr, void *addr)
12854 {
12855 - asm("btsl %1,%0" : "+m" (*(u32 *)addr) : "Ir" (nr));
12856 + asm volatile("btsl %1,%0" : "+m" (*(u32 *)addr) : "Ir" (nr));
12857 }
12858
12859 #endif /* BOOT_BITOPS_H */
12860 diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h
12861 index bd49ec6..94c7f58 100644
12862 --- a/arch/x86/boot/boot.h
12863 +++ b/arch/x86/boot/boot.h
12864 @@ -84,7 +84,7 @@ static inline void io_delay(void)
12865 static inline u16 ds(void)
12866 {
12867 u16 seg;
12868 - asm("movw %%ds,%0" : "=rm" (seg));
12869 + asm volatile("movw %%ds,%0" : "=rm" (seg));
12870 return seg;
12871 }
12872
12873 diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
12874 index 0a291cd..9686efc 100644
12875 --- a/arch/x86/boot/compressed/Makefile
12876 +++ b/arch/x86/boot/compressed/Makefile
12877 @@ -30,6 +30,9 @@ KBUILD_CFLAGS += $(cflags-y)
12878 KBUILD_CFLAGS += -mno-mmx -mno-sse
12879 KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
12880 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
12881 +ifdef CONSTIFY_PLUGIN
12882 +KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify
12883 +endif
12884
12885 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
12886 GCOV_PROFILE := n
12887 diff --git a/arch/x86/boot/compressed/efi_stub_32.S b/arch/x86/boot/compressed/efi_stub_32.S
12888 index a53440e..c3dbf1e 100644
12889 --- a/arch/x86/boot/compressed/efi_stub_32.S
12890 +++ b/arch/x86/boot/compressed/efi_stub_32.S
12891 @@ -46,16 +46,13 @@ ENTRY(efi_call_phys)
12892 * parameter 2, ..., param n. To make things easy, we save the return
12893 * address of efi_call_phys in a global variable.
12894 */
12895 - popl %ecx
12896 - movl %ecx, saved_return_addr(%edx)
12897 - /* get the function pointer into ECX*/
12898 - popl %ecx
12899 - movl %ecx, efi_rt_function_ptr(%edx)
12900 + popl saved_return_addr(%edx)
12901 + popl efi_rt_function_ptr(%edx)
12902
12903 /*
12904 * 3. Call the physical function.
12905 */
12906 - call *%ecx
12907 + call *efi_rt_function_ptr(%edx)
12908
12909 /*
12910 * 4. Balance the stack. And because EAX contain the return value,
12911 @@ -67,15 +64,12 @@ ENTRY(efi_call_phys)
12912 1: popl %edx
12913 subl $1b, %edx
12914
12915 - movl efi_rt_function_ptr(%edx), %ecx
12916 - pushl %ecx
12917 + pushl efi_rt_function_ptr(%edx)
12918
12919 /*
12920 * 10. Push the saved return address onto the stack and return.
12921 */
12922 - movl saved_return_addr(%edx), %ecx
12923 - pushl %ecx
12924 - ret
12925 + jmpl *saved_return_addr(%edx)
12926 ENDPROC(efi_call_phys)
12927 .previous
12928
12929 diff --git a/arch/x86/boot/compressed/efi_thunk_64.S b/arch/x86/boot/compressed/efi_thunk_64.S
12930 index 630384a..278e788 100644
12931 --- a/arch/x86/boot/compressed/efi_thunk_64.S
12932 +++ b/arch/x86/boot/compressed/efi_thunk_64.S
12933 @@ -189,8 +189,8 @@ efi_gdt64:
12934 .long 0 /* Filled out by user */
12935 .word 0
12936 .quad 0x0000000000000000 /* NULL descriptor */
12937 - .quad 0x00af9a000000ffff /* __KERNEL_CS */
12938 - .quad 0x00cf92000000ffff /* __KERNEL_DS */
12939 + .quad 0x00af9b000000ffff /* __KERNEL_CS */
12940 + .quad 0x00cf93000000ffff /* __KERNEL_DS */
12941 .quad 0x0080890000000000 /* TS descriptor */
12942 .quad 0x0000000000000000 /* TS continued */
12943 efi_gdt64_end:
12944 diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
12945 index 8ef964d..fcfb8aa 100644
12946 --- a/arch/x86/boot/compressed/head_32.S
12947 +++ b/arch/x86/boot/compressed/head_32.S
12948 @@ -141,10 +141,10 @@ preferred_addr:
12949 addl %eax, %ebx
12950 notl %eax
12951 andl %eax, %ebx
12952 - cmpl $LOAD_PHYSICAL_ADDR, %ebx
12953 + cmpl $____LOAD_PHYSICAL_ADDR, %ebx
12954 jge 1f
12955 #endif
12956 - movl $LOAD_PHYSICAL_ADDR, %ebx
12957 + movl $____LOAD_PHYSICAL_ADDR, %ebx
12958 1:
12959
12960 /* Target address to relocate to for decompression */
12961 diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
12962 index b0c0d16..3b44ff8 100644
12963 --- a/arch/x86/boot/compressed/head_64.S
12964 +++ b/arch/x86/boot/compressed/head_64.S
12965 @@ -95,10 +95,10 @@ ENTRY(startup_32)
12966 addl %eax, %ebx
12967 notl %eax
12968 andl %eax, %ebx
12969 - cmpl $LOAD_PHYSICAL_ADDR, %ebx
12970 + cmpl $____LOAD_PHYSICAL_ADDR, %ebx
12971 jge 1f
12972 #endif
12973 - movl $LOAD_PHYSICAL_ADDR, %ebx
12974 + movl $____LOAD_PHYSICAL_ADDR, %ebx
12975 1:
12976
12977 /* Target address to relocate to for decompression */
12978 @@ -323,10 +323,10 @@ preferred_addr:
12979 addq %rax, %rbp
12980 notq %rax
12981 andq %rax, %rbp
12982 - cmpq $LOAD_PHYSICAL_ADDR, %rbp
12983 + cmpq $____LOAD_PHYSICAL_ADDR, %rbp
12984 jge 1f
12985 #endif
12986 - movq $LOAD_PHYSICAL_ADDR, %rbp
12987 + movq $____LOAD_PHYSICAL_ADDR, %rbp
12988 1:
12989
12990 /* Target address to relocate to for decompression */
12991 @@ -435,8 +435,8 @@ gdt:
12992 .long gdt
12993 .word 0
12994 .quad 0x0000000000000000 /* NULL descriptor */
12995 - .quad 0x00af9a000000ffff /* __KERNEL_CS */
12996 - .quad 0x00cf92000000ffff /* __KERNEL_DS */
12997 + .quad 0x00af9b000000ffff /* __KERNEL_CS */
12998 + .quad 0x00cf93000000ffff /* __KERNEL_DS */
12999 .quad 0x0080890000000000 /* TS descriptor */
13000 .quad 0x0000000000000000 /* TS continued */
13001 gdt_end:
13002 diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
13003 index e28437e..6a17460 100644
13004 --- a/arch/x86/boot/compressed/misc.c
13005 +++ b/arch/x86/boot/compressed/misc.c
13006 @@ -242,7 +242,7 @@ static void handle_relocations(void *output, unsigned long output_len)
13007 * Calculate the delta between where vmlinux was linked to load
13008 * and where it was actually loaded.
13009 */
13010 - delta = min_addr - LOAD_PHYSICAL_ADDR;
13011 + delta = min_addr - ____LOAD_PHYSICAL_ADDR;
13012 if (!delta) {
13013 debug_putstr("No relocation needed... ");
13014 return;
13015 @@ -324,7 +324,7 @@ static void parse_elf(void *output)
13016 Elf32_Ehdr ehdr;
13017 Elf32_Phdr *phdrs, *phdr;
13018 #endif
13019 - void *dest;
13020 + void *dest, *prev;
13021 int i;
13022
13023 memcpy(&ehdr, output, sizeof(ehdr));
13024 @@ -351,13 +351,16 @@ static void parse_elf(void *output)
13025 case PT_LOAD:
13026 #ifdef CONFIG_RELOCATABLE
13027 dest = output;
13028 - dest += (phdr->p_paddr - LOAD_PHYSICAL_ADDR);
13029 + dest += (phdr->p_paddr - ____LOAD_PHYSICAL_ADDR);
13030 #else
13031 dest = (void *)(phdr->p_paddr);
13032 #endif
13033 memcpy(dest,
13034 output + phdr->p_offset,
13035 phdr->p_filesz);
13036 + if (i)
13037 + memset(prev, 0xff, dest - prev);
13038 + prev = dest + phdr->p_filesz;
13039 break;
13040 default: /* Ignore other PT_* */ break;
13041 }
13042 @@ -419,7 +422,7 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
13043 error("Destination address too large");
13044 #endif
13045 #ifndef CONFIG_RELOCATABLE
13046 - if ((unsigned long)output != LOAD_PHYSICAL_ADDR)
13047 + if ((unsigned long)output != ____LOAD_PHYSICAL_ADDR)
13048 error("Wrong destination address");
13049 #endif
13050
13051 diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
13052 index 1fd7d57..0f7d096 100644
13053 --- a/arch/x86/boot/cpucheck.c
13054 +++ b/arch/x86/boot/cpucheck.c
13055 @@ -125,9 +125,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
13056 u32 ecx = MSR_K7_HWCR;
13057 u32 eax, edx;
13058
13059 - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13060 + asm volatile("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13061 eax &= ~(1 << 15);
13062 - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13063 + asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13064
13065 get_cpuflags(); /* Make sure it really did something */
13066 err = check_cpuflags();
13067 @@ -140,9 +140,9 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
13068 u32 ecx = MSR_VIA_FCR;
13069 u32 eax, edx;
13070
13071 - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13072 + asm volatile("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13073 eax |= (1<<1)|(1<<7);
13074 - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13075 + asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13076
13077 set_bit(X86_FEATURE_CX8, cpu.flags);
13078 err = check_cpuflags();
13079 @@ -153,12 +153,12 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
13080 u32 eax, edx;
13081 u32 level = 1;
13082
13083 - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13084 - asm("wrmsr" : : "a" (~0), "d" (edx), "c" (ecx));
13085 - asm("cpuid"
13086 + asm volatile("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
13087 + asm volatile("wrmsr" : : "a" (~0), "d" (edx), "c" (ecx));
13088 + asm volatile("cpuid"
13089 : "+a" (level), "=d" (cpu.flags[0])
13090 : : "ecx", "ebx");
13091 - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13092 + asm volatile("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
13093
13094 err = check_cpuflags();
13095 } else if (err == 0x01 &&
13096 diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
13097 index 16ef025..91e033b 100644
13098 --- a/arch/x86/boot/header.S
13099 +++ b/arch/x86/boot/header.S
13100 @@ -438,10 +438,14 @@ setup_data: .quad 0 # 64-bit physical pointer to
13101 # single linked list of
13102 # struct setup_data
13103
13104 -pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr
13105 +pref_address: .quad ____LOAD_PHYSICAL_ADDR # preferred load addr
13106
13107 #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
13108 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
13109 +#define VO_INIT_SIZE (VO__end - VO__text - __PAGE_OFFSET - ____LOAD_PHYSICAL_ADDR)
13110 +#else
13111 #define VO_INIT_SIZE (VO__end - VO__text)
13112 +#endif
13113 #if ZO_INIT_SIZE > VO_INIT_SIZE
13114 #define INIT_SIZE ZO_INIT_SIZE
13115 #else
13116 diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c
13117 index db75d07..8e6d0af 100644
13118 --- a/arch/x86/boot/memory.c
13119 +++ b/arch/x86/boot/memory.c
13120 @@ -19,7 +19,7 @@
13121
13122 static int detect_memory_e820(void)
13123 {
13124 - int count = 0;
13125 + unsigned int count = 0;
13126 struct biosregs ireg, oreg;
13127 struct e820entry *desc = boot_params.e820_map;
13128 static struct e820entry buf; /* static so it is zeroed */
13129 diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
13130 index ba3e100..6501b8f 100644
13131 --- a/arch/x86/boot/video-vesa.c
13132 +++ b/arch/x86/boot/video-vesa.c
13133 @@ -201,6 +201,7 @@ static void vesa_store_pm_info(void)
13134
13135 boot_params.screen_info.vesapm_seg = oreg.es;
13136 boot_params.screen_info.vesapm_off = oreg.di;
13137 + boot_params.screen_info.vesapm_size = oreg.cx;
13138 }
13139
13140 /*
13141 diff --git a/arch/x86/boot/video.c b/arch/x86/boot/video.c
13142 index 05111bb..a1ae1f0 100644
13143 --- a/arch/x86/boot/video.c
13144 +++ b/arch/x86/boot/video.c
13145 @@ -98,7 +98,7 @@ static void store_mode_params(void)
13146 static unsigned int get_entry(void)
13147 {
13148 char entry_buf[4];
13149 - int i, len = 0;
13150 + unsigned int i, len = 0;
13151 int key;
13152 unsigned int v;
13153
13154 diff --git a/arch/x86/crypto/aes-x86_64-asm_64.S b/arch/x86/crypto/aes-x86_64-asm_64.S
13155 index 9105655..41779c1 100644
13156 --- a/arch/x86/crypto/aes-x86_64-asm_64.S
13157 +++ b/arch/x86/crypto/aes-x86_64-asm_64.S
13158 @@ -8,6 +8,8 @@
13159 * including this sentence is retained in full.
13160 */
13161
13162 +#include <asm/alternative-asm.h>
13163 +
13164 .extern crypto_ft_tab
13165 .extern crypto_it_tab
13166 .extern crypto_fl_tab
13167 @@ -70,6 +72,8 @@
13168 je B192; \
13169 leaq 32(r9),r9;
13170
13171 +#define ret pax_force_retaddr; ret
13172 +
13173 #define epilogue(FUNC,r1,r2,r3,r4,r5,r6,r7,r8,r9) \
13174 movq r1,r2; \
13175 movq r3,r4; \
13176 diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
13177 index 6bd2c6c..368c93e 100644
13178 --- a/arch/x86/crypto/aesni-intel_asm.S
13179 +++ b/arch/x86/crypto/aesni-intel_asm.S
13180 @@ -31,6 +31,7 @@
13181
13182 #include <linux/linkage.h>
13183 #include <asm/inst.h>
13184 +#include <asm/alternative-asm.h>
13185
13186 /*
13187 * The following macros are used to move an (un)aligned 16 byte value to/from
13188 @@ -217,7 +218,7 @@ enc: .octa 0x2
13189 * num_initial_blocks = b mod 4
13190 * encrypt the initial num_initial_blocks blocks and apply ghash on
13191 * the ciphertext
13192 -* %r10, %r11, %r12, %rax, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9 registers
13193 +* %r10, %r11, %r15, %rax, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9 registers
13194 * are clobbered
13195 * arg1, %arg2, %arg3, %r14 are used as a pointer only, not modified
13196 */
13197 @@ -227,8 +228,8 @@ enc: .octa 0x2
13198 XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
13199 MOVADQ SHUF_MASK(%rip), %xmm14
13200 mov arg7, %r10 # %r10 = AAD
13201 - mov arg8, %r12 # %r12 = aadLen
13202 - mov %r12, %r11
13203 + mov arg8, %r15 # %r15 = aadLen
13204 + mov %r15, %r11
13205 pxor %xmm\i, %xmm\i
13206
13207 _get_AAD_loop\num_initial_blocks\operation:
13208 @@ -237,17 +238,17 @@ _get_AAD_loop\num_initial_blocks\operation:
13209 psrldq $4, %xmm\i
13210 pxor \TMP1, %xmm\i
13211 add $4, %r10
13212 - sub $4, %r12
13213 + sub $4, %r15
13214 jne _get_AAD_loop\num_initial_blocks\operation
13215
13216 cmp $16, %r11
13217 je _get_AAD_loop2_done\num_initial_blocks\operation
13218
13219 - mov $16, %r12
13220 + mov $16, %r15
13221 _get_AAD_loop2\num_initial_blocks\operation:
13222 psrldq $4, %xmm\i
13223 - sub $4, %r12
13224 - cmp %r11, %r12
13225 + sub $4, %r15
13226 + cmp %r11, %r15
13227 jne _get_AAD_loop2\num_initial_blocks\operation
13228
13229 _get_AAD_loop2_done\num_initial_blocks\operation:
13230 @@ -442,7 +443,7 @@ _initial_blocks_done\num_initial_blocks\operation:
13231 * num_initial_blocks = b mod 4
13232 * encrypt the initial num_initial_blocks blocks and apply ghash on
13233 * the ciphertext
13234 -* %r10, %r11, %r12, %rax, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9 registers
13235 +* %r10, %r11, %r15, %rax, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9 registers
13236 * are clobbered
13237 * arg1, %arg2, %arg3, %r14 are used as a pointer only, not modified
13238 */
13239 @@ -452,8 +453,8 @@ _initial_blocks_done\num_initial_blocks\operation:
13240 XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
13241 MOVADQ SHUF_MASK(%rip), %xmm14
13242 mov arg7, %r10 # %r10 = AAD
13243 - mov arg8, %r12 # %r12 = aadLen
13244 - mov %r12, %r11
13245 + mov arg8, %r15 # %r15 = aadLen
13246 + mov %r15, %r11
13247 pxor %xmm\i, %xmm\i
13248 _get_AAD_loop\num_initial_blocks\operation:
13249 movd (%r10), \TMP1
13250 @@ -461,15 +462,15 @@ _get_AAD_loop\num_initial_blocks\operation:
13251 psrldq $4, %xmm\i
13252 pxor \TMP1, %xmm\i
13253 add $4, %r10
13254 - sub $4, %r12
13255 + sub $4, %r15
13256 jne _get_AAD_loop\num_initial_blocks\operation
13257 cmp $16, %r11
13258 je _get_AAD_loop2_done\num_initial_blocks\operation
13259 - mov $16, %r12
13260 + mov $16, %r15
13261 _get_AAD_loop2\num_initial_blocks\operation:
13262 psrldq $4, %xmm\i
13263 - sub $4, %r12
13264 - cmp %r11, %r12
13265 + sub $4, %r15
13266 + cmp %r11, %r15
13267 jne _get_AAD_loop2\num_initial_blocks\operation
13268 _get_AAD_loop2_done\num_initial_blocks\operation:
13269 PSHUFB_XMM %xmm14, %xmm\i # byte-reflect the AAD data
13270 @@ -1280,7 +1281,7 @@ _esb_loop_\@:
13271 *
13272 *****************************************************************************/
13273 ENTRY(aesni_gcm_dec)
13274 - push %r12
13275 + push %r15
13276 push %r13
13277 push %r14
13278 mov %rsp, %r14
13279 @@ -1290,8 +1291,8 @@ ENTRY(aesni_gcm_dec)
13280 */
13281 sub $VARIABLE_OFFSET, %rsp
13282 and $~63, %rsp # align rsp to 64 bytes
13283 - mov %arg6, %r12
13284 - movdqu (%r12), %xmm13 # %xmm13 = HashKey
13285 + mov %arg6, %r15
13286 + movdqu (%r15), %xmm13 # %xmm13 = HashKey
13287 movdqa SHUF_MASK(%rip), %xmm2
13288 PSHUFB_XMM %xmm2, %xmm13
13289
13290 @@ -1319,10 +1320,10 @@ ENTRY(aesni_gcm_dec)
13291 movdqa %xmm13, HashKey(%rsp) # store HashKey<<1 (mod poly)
13292 mov %arg4, %r13 # save the number of bytes of plaintext/ciphertext
13293 and $-16, %r13 # %r13 = %r13 - (%r13 mod 16)
13294 - mov %r13, %r12
13295 - and $(3<<4), %r12
13296 + mov %r13, %r15
13297 + and $(3<<4), %r15
13298 jz _initial_num_blocks_is_0_decrypt
13299 - cmp $(2<<4), %r12
13300 + cmp $(2<<4), %r15
13301 jb _initial_num_blocks_is_1_decrypt
13302 je _initial_num_blocks_is_2_decrypt
13303 _initial_num_blocks_is_3_decrypt:
13304 @@ -1372,16 +1373,16 @@ _zero_cipher_left_decrypt:
13305 sub $16, %r11
13306 add %r13, %r11
13307 movdqu (%arg3,%r11,1), %xmm1 # receive the last <16 byte block
13308 - lea SHIFT_MASK+16(%rip), %r12
13309 - sub %r13, %r12
13310 + lea SHIFT_MASK+16(%rip), %r15
13311 + sub %r13, %r15
13312 # adjust the shuffle mask pointer to be able to shift 16-%r13 bytes
13313 # (%r13 is the number of bytes in plaintext mod 16)
13314 - movdqu (%r12), %xmm2 # get the appropriate shuffle mask
13315 + movdqu (%r15), %xmm2 # get the appropriate shuffle mask
13316 PSHUFB_XMM %xmm2, %xmm1 # right shift 16-%r13 butes
13317
13318 movdqa %xmm1, %xmm2
13319 pxor %xmm1, %xmm0 # Ciphertext XOR E(K, Yn)
13320 - movdqu ALL_F-SHIFT_MASK(%r12), %xmm1
13321 + movdqu ALL_F-SHIFT_MASK(%r15), %xmm1
13322 # get the appropriate mask to mask out top 16-%r13 bytes of %xmm0
13323 pand %xmm1, %xmm0 # mask out top 16-%r13 bytes of %xmm0
13324 pand %xmm1, %xmm2
13325 @@ -1410,9 +1411,9 @@ _less_than_8_bytes_left_decrypt:
13326 sub $1, %r13
13327 jne _less_than_8_bytes_left_decrypt
13328 _multiple_of_16_bytes_decrypt:
13329 - mov arg8, %r12 # %r13 = aadLen (number of bytes)
13330 - shl $3, %r12 # convert into number of bits
13331 - movd %r12d, %xmm15 # len(A) in %xmm15
13332 + mov arg8, %r15 # %r13 = aadLen (number of bytes)
13333 + shl $3, %r15 # convert into number of bits
13334 + movd %r15d, %xmm15 # len(A) in %xmm15
13335 shl $3, %arg4 # len(C) in bits (*128)
13336 MOVQ_R64_XMM %arg4, %xmm1
13337 pslldq $8, %xmm15 # %xmm15 = len(A)||0x0000000000000000
13338 @@ -1451,7 +1452,8 @@ _return_T_done_decrypt:
13339 mov %r14, %rsp
13340 pop %r14
13341 pop %r13
13342 - pop %r12
13343 + pop %r15
13344 + pax_force_retaddr
13345 ret
13346 ENDPROC(aesni_gcm_dec)
13347
13348 @@ -1540,7 +1542,7 @@ ENDPROC(aesni_gcm_dec)
13349 * poly = x^128 + x^127 + x^126 + x^121 + 1
13350 ***************************************************************************/
13351 ENTRY(aesni_gcm_enc)
13352 - push %r12
13353 + push %r15
13354 push %r13
13355 push %r14
13356 mov %rsp, %r14
13357 @@ -1550,8 +1552,8 @@ ENTRY(aesni_gcm_enc)
13358 #
13359 sub $VARIABLE_OFFSET, %rsp
13360 and $~63, %rsp
13361 - mov %arg6, %r12
13362 - movdqu (%r12), %xmm13
13363 + mov %arg6, %r15
13364 + movdqu (%r15), %xmm13
13365 movdqa SHUF_MASK(%rip), %xmm2
13366 PSHUFB_XMM %xmm2, %xmm13
13367
13368 @@ -1575,13 +1577,13 @@ ENTRY(aesni_gcm_enc)
13369 movdqa %xmm13, HashKey(%rsp)
13370 mov %arg4, %r13 # %xmm13 holds HashKey<<1 (mod poly)
13371 and $-16, %r13
13372 - mov %r13, %r12
13373 + mov %r13, %r15
13374
13375 # Encrypt first few blocks
13376
13377 - and $(3<<4), %r12
13378 + and $(3<<4), %r15
13379 jz _initial_num_blocks_is_0_encrypt
13380 - cmp $(2<<4), %r12
13381 + cmp $(2<<4), %r15
13382 jb _initial_num_blocks_is_1_encrypt
13383 je _initial_num_blocks_is_2_encrypt
13384 _initial_num_blocks_is_3_encrypt:
13385 @@ -1634,14 +1636,14 @@ _zero_cipher_left_encrypt:
13386 sub $16, %r11
13387 add %r13, %r11
13388 movdqu (%arg3,%r11,1), %xmm1 # receive the last <16 byte blocks
13389 - lea SHIFT_MASK+16(%rip), %r12
13390 - sub %r13, %r12
13391 + lea SHIFT_MASK+16(%rip), %r15
13392 + sub %r13, %r15
13393 # adjust the shuffle mask pointer to be able to shift 16-r13 bytes
13394 # (%r13 is the number of bytes in plaintext mod 16)
13395 - movdqu (%r12), %xmm2 # get the appropriate shuffle mask
13396 + movdqu (%r15), %xmm2 # get the appropriate shuffle mask
13397 PSHUFB_XMM %xmm2, %xmm1 # shift right 16-r13 byte
13398 pxor %xmm1, %xmm0 # Plaintext XOR Encrypt(K, Yn)
13399 - movdqu ALL_F-SHIFT_MASK(%r12), %xmm1
13400 + movdqu ALL_F-SHIFT_MASK(%r15), %xmm1
13401 # get the appropriate mask to mask out top 16-r13 bytes of xmm0
13402 pand %xmm1, %xmm0 # mask out top 16-r13 bytes of xmm0
13403 movdqa SHUF_MASK(%rip), %xmm10
13404 @@ -1674,9 +1676,9 @@ _less_than_8_bytes_left_encrypt:
13405 sub $1, %r13
13406 jne _less_than_8_bytes_left_encrypt
13407 _multiple_of_16_bytes_encrypt:
13408 - mov arg8, %r12 # %r12 = addLen (number of bytes)
13409 - shl $3, %r12
13410 - movd %r12d, %xmm15 # len(A) in %xmm15
13411 + mov arg8, %r15 # %r15 = addLen (number of bytes)
13412 + shl $3, %r15
13413 + movd %r15d, %xmm15 # len(A) in %xmm15
13414 shl $3, %arg4 # len(C) in bits (*128)
13415 MOVQ_R64_XMM %arg4, %xmm1
13416 pslldq $8, %xmm15 # %xmm15 = len(A)||0x0000000000000000
13417 @@ -1715,7 +1717,8 @@ _return_T_done_encrypt:
13418 mov %r14, %rsp
13419 pop %r14
13420 pop %r13
13421 - pop %r12
13422 + pop %r15
13423 + pax_force_retaddr
13424 ret
13425 ENDPROC(aesni_gcm_enc)
13426
13427 @@ -1733,6 +1736,7 @@ _key_expansion_256a:
13428 pxor %xmm1, %xmm0
13429 movaps %xmm0, (TKEYP)
13430 add $0x10, TKEYP
13431 + pax_force_retaddr
13432 ret
13433 ENDPROC(_key_expansion_128)
13434 ENDPROC(_key_expansion_256a)
13435 @@ -1759,6 +1763,7 @@ _key_expansion_192a:
13436 shufps $0b01001110, %xmm2, %xmm1
13437 movaps %xmm1, 0x10(TKEYP)
13438 add $0x20, TKEYP
13439 + pax_force_retaddr
13440 ret
13441 ENDPROC(_key_expansion_192a)
13442
13443 @@ -1779,6 +1784,7 @@ _key_expansion_192b:
13444
13445 movaps %xmm0, (TKEYP)
13446 add $0x10, TKEYP
13447 + pax_force_retaddr
13448 ret
13449 ENDPROC(_key_expansion_192b)
13450
13451 @@ -1792,6 +1798,7 @@ _key_expansion_256b:
13452 pxor %xmm1, %xmm2
13453 movaps %xmm2, (TKEYP)
13454 add $0x10, TKEYP
13455 + pax_force_retaddr
13456 ret
13457 ENDPROC(_key_expansion_256b)
13458
13459 @@ -1905,6 +1912,7 @@ ENTRY(aesni_set_key)
13460 #ifndef __x86_64__
13461 popl KEYP
13462 #endif
13463 + pax_force_retaddr
13464 ret
13465 ENDPROC(aesni_set_key)
13466
13467 @@ -1927,6 +1935,7 @@ ENTRY(aesni_enc)
13468 popl KLEN
13469 popl KEYP
13470 #endif
13471 + pax_force_retaddr
13472 ret
13473 ENDPROC(aesni_enc)
13474
13475 @@ -1985,6 +1994,7 @@ _aesni_enc1:
13476 AESENC KEY STATE
13477 movaps 0x70(TKEYP), KEY
13478 AESENCLAST KEY STATE
13479 + pax_force_retaddr
13480 ret
13481 ENDPROC(_aesni_enc1)
13482
13483 @@ -2094,6 +2104,7 @@ _aesni_enc4:
13484 AESENCLAST KEY STATE2
13485 AESENCLAST KEY STATE3
13486 AESENCLAST KEY STATE4
13487 + pax_force_retaddr
13488 ret
13489 ENDPROC(_aesni_enc4)
13490
13491 @@ -2117,6 +2128,7 @@ ENTRY(aesni_dec)
13492 popl KLEN
13493 popl KEYP
13494 #endif
13495 + pax_force_retaddr
13496 ret
13497 ENDPROC(aesni_dec)
13498
13499 @@ -2175,6 +2187,7 @@ _aesni_dec1:
13500 AESDEC KEY STATE
13501 movaps 0x70(TKEYP), KEY
13502 AESDECLAST KEY STATE
13503 + pax_force_retaddr
13504 ret
13505 ENDPROC(_aesni_dec1)
13506
13507 @@ -2284,6 +2297,7 @@ _aesni_dec4:
13508 AESDECLAST KEY STATE2
13509 AESDECLAST KEY STATE3
13510 AESDECLAST KEY STATE4
13511 + pax_force_retaddr
13512 ret
13513 ENDPROC(_aesni_dec4)
13514
13515 @@ -2342,6 +2356,7 @@ ENTRY(aesni_ecb_enc)
13516 popl KEYP
13517 popl LEN
13518 #endif
13519 + pax_force_retaddr
13520 ret
13521 ENDPROC(aesni_ecb_enc)
13522
13523 @@ -2401,6 +2416,7 @@ ENTRY(aesni_ecb_dec)
13524 popl KEYP
13525 popl LEN
13526 #endif
13527 + pax_force_retaddr
13528 ret
13529 ENDPROC(aesni_ecb_dec)
13530
13531 @@ -2443,6 +2459,7 @@ ENTRY(aesni_cbc_enc)
13532 popl LEN
13533 popl IVP
13534 #endif
13535 + pax_force_retaddr
13536 ret
13537 ENDPROC(aesni_cbc_enc)
13538
13539 @@ -2534,6 +2551,7 @@ ENTRY(aesni_cbc_dec)
13540 popl LEN
13541 popl IVP
13542 #endif
13543 + pax_force_retaddr
13544 ret
13545 ENDPROC(aesni_cbc_dec)
13546
13547 @@ -2561,6 +2579,7 @@ _aesni_inc_init:
13548 mov $1, TCTR_LOW
13549 MOVQ_R64_XMM TCTR_LOW INC
13550 MOVQ_R64_XMM CTR TCTR_LOW
13551 + pax_force_retaddr
13552 ret
13553 ENDPROC(_aesni_inc_init)
13554
13555 @@ -2590,6 +2609,7 @@ _aesni_inc:
13556 .Linc_low:
13557 movaps CTR, IV
13558 PSHUFB_XMM BSWAP_MASK IV
13559 + pax_force_retaddr
13560 ret
13561 ENDPROC(_aesni_inc)
13562
13563 @@ -2651,6 +2671,7 @@ ENTRY(aesni_ctr_enc)
13564 .Lctr_enc_ret:
13565 movups IV, (IVP)
13566 .Lctr_enc_just_ret:
13567 + pax_force_retaddr
13568 ret
13569 ENDPROC(aesni_ctr_enc)
13570
13571 @@ -2777,6 +2798,7 @@ ENTRY(aesni_xts_crypt8)
13572 pxor INC, STATE4
13573 movdqu STATE4, 0x70(OUTP)
13574
13575 + pax_force_retaddr
13576 ret
13577 ENDPROC(aesni_xts_crypt8)
13578
13579 diff --git a/arch/x86/crypto/blowfish-x86_64-asm_64.S b/arch/x86/crypto/blowfish-x86_64-asm_64.S
13580 index 246c670..466e2d6 100644
13581 --- a/arch/x86/crypto/blowfish-x86_64-asm_64.S
13582 +++ b/arch/x86/crypto/blowfish-x86_64-asm_64.S
13583 @@ -21,6 +21,7 @@
13584 */
13585
13586 #include <linux/linkage.h>
13587 +#include <asm/alternative-asm.h>
13588
13589 .file "blowfish-x86_64-asm.S"
13590 .text
13591 @@ -149,9 +150,11 @@ ENTRY(__blowfish_enc_blk)
13592 jnz .L__enc_xor;
13593
13594 write_block();
13595 + pax_force_retaddr
13596 ret;
13597 .L__enc_xor:
13598 xor_block();
13599 + pax_force_retaddr
13600 ret;
13601 ENDPROC(__blowfish_enc_blk)
13602
13603 @@ -183,6 +186,7 @@ ENTRY(blowfish_dec_blk)
13604
13605 movq %r11, %rbp;
13606
13607 + pax_force_retaddr
13608 ret;
13609 ENDPROC(blowfish_dec_blk)
13610
13611 @@ -334,6 +338,7 @@ ENTRY(__blowfish_enc_blk_4way)
13612
13613 popq %rbx;
13614 popq %rbp;
13615 + pax_force_retaddr
13616 ret;
13617
13618 .L__enc_xor4:
13619 @@ -341,6 +346,7 @@ ENTRY(__blowfish_enc_blk_4way)
13620
13621 popq %rbx;
13622 popq %rbp;
13623 + pax_force_retaddr
13624 ret;
13625 ENDPROC(__blowfish_enc_blk_4way)
13626
13627 @@ -375,5 +381,6 @@ ENTRY(blowfish_dec_blk_4way)
13628 popq %rbx;
13629 popq %rbp;
13630
13631 + pax_force_retaddr
13632 ret;
13633 ENDPROC(blowfish_dec_blk_4way)
13634 diff --git a/arch/x86/crypto/camellia-aesni-avx-asm_64.S b/arch/x86/crypto/camellia-aesni-avx-asm_64.S
13635 index ce71f92..1dce7ec 100644
13636 --- a/arch/x86/crypto/camellia-aesni-avx-asm_64.S
13637 +++ b/arch/x86/crypto/camellia-aesni-avx-asm_64.S
13638 @@ -16,6 +16,7 @@
13639 */
13640
13641 #include <linux/linkage.h>
13642 +#include <asm/alternative-asm.h>
13643
13644 #define CAMELLIA_TABLE_BYTE_LEN 272
13645
13646 @@ -191,6 +192,7 @@ roundsm16_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd:
13647 roundsm16(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7,
13648 %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, %xmm15,
13649 %rcx, (%r9));
13650 + pax_force_retaddr
13651 ret;
13652 ENDPROC(roundsm16_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd)
13653
13654 @@ -199,6 +201,7 @@ roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab:
13655 roundsm16(%xmm4, %xmm5, %xmm6, %xmm7, %xmm0, %xmm1, %xmm2, %xmm3,
13656 %xmm12, %xmm13, %xmm14, %xmm15, %xmm8, %xmm9, %xmm10, %xmm11,
13657 %rax, (%r9));
13658 + pax_force_retaddr
13659 ret;
13660 ENDPROC(roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab)
13661
13662 @@ -780,6 +783,7 @@ __camellia_enc_blk16:
13663 %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
13664 %xmm15, (key_table)(CTX, %r8, 8), (%rax), 1 * 16(%rax));
13665
13666 + pax_force_retaddr
13667 ret;
13668
13669 .align 8
13670 @@ -865,6 +869,7 @@ __camellia_dec_blk16:
13671 %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
13672 %xmm15, (key_table)(CTX), (%rax), 1 * 16(%rax));
13673
13674 + pax_force_retaddr
13675 ret;
13676
13677 .align 8
13678 @@ -904,6 +909,7 @@ ENTRY(camellia_ecb_enc_16way)
13679 %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
13680 %xmm8, %rsi);
13681
13682 + pax_force_retaddr
13683 ret;
13684 ENDPROC(camellia_ecb_enc_16way)
13685
13686 @@ -932,6 +938,7 @@ ENTRY(camellia_ecb_dec_16way)
13687 %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
13688 %xmm8, %rsi);
13689
13690 + pax_force_retaddr
13691 ret;
13692 ENDPROC(camellia_ecb_dec_16way)
13693
13694 @@ -981,6 +988,7 @@ ENTRY(camellia_cbc_dec_16way)
13695 %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
13696 %xmm8, %rsi);
13697
13698 + pax_force_retaddr
13699 ret;
13700 ENDPROC(camellia_cbc_dec_16way)
13701
13702 @@ -1092,6 +1100,7 @@ ENTRY(camellia_ctr_16way)
13703 %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
13704 %xmm8, %rsi);
13705
13706 + pax_force_retaddr
13707 ret;
13708 ENDPROC(camellia_ctr_16way)
13709
13710 @@ -1234,6 +1243,7 @@ camellia_xts_crypt_16way:
13711 %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9,
13712 %xmm8, %rsi);
13713
13714 + pax_force_retaddr
13715 ret;
13716 ENDPROC(camellia_xts_crypt_16way)
13717
13718 diff --git a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S b/arch/x86/crypto/camellia-aesni-avx2-asm_64.S
13719 index 0e0b886..5a3123c 100644
13720 --- a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S
13721 +++ b/arch/x86/crypto/camellia-aesni-avx2-asm_64.S
13722 @@ -11,6 +11,7 @@
13723 */
13724
13725 #include <linux/linkage.h>
13726 +#include <asm/alternative-asm.h>
13727
13728 #define CAMELLIA_TABLE_BYTE_LEN 272
13729
13730 @@ -230,6 +231,7 @@ roundsm32_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd:
13731 roundsm32(%ymm0, %ymm1, %ymm2, %ymm3, %ymm4, %ymm5, %ymm6, %ymm7,
13732 %ymm8, %ymm9, %ymm10, %ymm11, %ymm12, %ymm13, %ymm14, %ymm15,
13733 %rcx, (%r9));
13734 + pax_force_retaddr
13735 ret;
13736 ENDPROC(roundsm32_x0_x1_x2_x3_x4_x5_x6_x7_y0_y1_y2_y3_y4_y5_y6_y7_cd)
13737
13738 @@ -238,6 +240,7 @@ roundsm32_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab:
13739 roundsm32(%ymm4, %ymm5, %ymm6, %ymm7, %ymm0, %ymm1, %ymm2, %ymm3,
13740 %ymm12, %ymm13, %ymm14, %ymm15, %ymm8, %ymm9, %ymm10, %ymm11,
13741 %rax, (%r9));
13742 + pax_force_retaddr
13743 ret;
13744 ENDPROC(roundsm32_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab)
13745
13746 @@ -820,6 +823,7 @@ __camellia_enc_blk32:
13747 %ymm8, %ymm9, %ymm10, %ymm11, %ymm12, %ymm13, %ymm14,
13748 %ymm15, (key_table)(CTX, %r8, 8), (%rax), 1 * 32(%rax));
13749
13750 + pax_force_retaddr
13751 ret;
13752
13753 .align 8
13754 @@ -905,6 +909,7 @@ __camellia_dec_blk32:
13755 %ymm8, %ymm9, %ymm10, %ymm11, %ymm12, %ymm13, %ymm14,
13756 %ymm15, (key_table)(CTX), (%rax), 1 * 32(%rax));
13757
13758 + pax_force_retaddr
13759 ret;
13760
13761 .align 8
13762 @@ -948,6 +953,7 @@ ENTRY(camellia_ecb_enc_32way)
13763
13764 vzeroupper;
13765
13766 + pax_force_retaddr
13767 ret;
13768 ENDPROC(camellia_ecb_enc_32way)
13769
13770 @@ -980,6 +986,7 @@ ENTRY(camellia_ecb_dec_32way)
13771
13772 vzeroupper;
13773
13774 + pax_force_retaddr
13775 ret;
13776 ENDPROC(camellia_ecb_dec_32way)
13777
13778 @@ -1046,6 +1053,7 @@ ENTRY(camellia_cbc_dec_32way)
13779
13780 vzeroupper;
13781
13782 + pax_force_retaddr
13783 ret;
13784 ENDPROC(camellia_cbc_dec_32way)
13785
13786 @@ -1184,6 +1192,7 @@ ENTRY(camellia_ctr_32way)
13787
13788 vzeroupper;
13789
13790 + pax_force_retaddr
13791 ret;
13792 ENDPROC(camellia_ctr_32way)
13793
13794 @@ -1349,6 +1358,7 @@ camellia_xts_crypt_32way:
13795
13796 vzeroupper;
13797
13798 + pax_force_retaddr
13799 ret;
13800 ENDPROC(camellia_xts_crypt_32way)
13801
13802 diff --git a/arch/x86/crypto/camellia-x86_64-asm_64.S b/arch/x86/crypto/camellia-x86_64-asm_64.S
13803 index 310319c..db3d7b5 100644
13804 --- a/arch/x86/crypto/camellia-x86_64-asm_64.S
13805 +++ b/arch/x86/crypto/camellia-x86_64-asm_64.S
13806 @@ -21,6 +21,7 @@
13807 */
13808
13809 #include <linux/linkage.h>
13810 +#include <asm/alternative-asm.h>
13811
13812 .file "camellia-x86_64-asm_64.S"
13813 .text
13814 @@ -228,12 +229,14 @@ ENTRY(__camellia_enc_blk)
13815 enc_outunpack(mov, RT1);
13816
13817 movq RRBP, %rbp;
13818 + pax_force_retaddr
13819 ret;
13820
13821 .L__enc_xor:
13822 enc_outunpack(xor, RT1);
13823
13824 movq RRBP, %rbp;
13825 + pax_force_retaddr
13826 ret;
13827 ENDPROC(__camellia_enc_blk)
13828
13829 @@ -272,6 +275,7 @@ ENTRY(camellia_dec_blk)
13830 dec_outunpack();
13831
13832 movq RRBP, %rbp;
13833 + pax_force_retaddr
13834 ret;
13835 ENDPROC(camellia_dec_blk)
13836
13837 @@ -463,6 +467,7 @@ ENTRY(__camellia_enc_blk_2way)
13838
13839 movq RRBP, %rbp;
13840 popq %rbx;
13841 + pax_force_retaddr
13842 ret;
13843
13844 .L__enc2_xor:
13845 @@ -470,6 +475,7 @@ ENTRY(__camellia_enc_blk_2way)
13846
13847 movq RRBP, %rbp;
13848 popq %rbx;
13849 + pax_force_retaddr
13850 ret;
13851 ENDPROC(__camellia_enc_blk_2way)
13852
13853 @@ -510,5 +516,6 @@ ENTRY(camellia_dec_blk_2way)
13854
13855 movq RRBP, %rbp;
13856 movq RXOR, %rbx;
13857 + pax_force_retaddr
13858 ret;
13859 ENDPROC(camellia_dec_blk_2way)
13860 diff --git a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
13861 index c35fd5d..2d8c7db 100644
13862 --- a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
13863 +++ b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
13864 @@ -24,6 +24,7 @@
13865 */
13866
13867 #include <linux/linkage.h>
13868 +#include <asm/alternative-asm.h>
13869
13870 .file "cast5-avx-x86_64-asm_64.S"
13871
13872 @@ -281,6 +282,7 @@ __cast5_enc_blk16:
13873 outunpack_blocks(RR3, RL3, RTMP, RX, RKM);
13874 outunpack_blocks(RR4, RL4, RTMP, RX, RKM);
13875
13876 + pax_force_retaddr
13877 ret;
13878 ENDPROC(__cast5_enc_blk16)
13879
13880 @@ -352,6 +354,7 @@ __cast5_dec_blk16:
13881 outunpack_blocks(RR3, RL3, RTMP, RX, RKM);
13882 outunpack_blocks(RR4, RL4, RTMP, RX, RKM);
13883
13884 + pax_force_retaddr
13885 ret;
13886
13887 .L__skip_dec:
13888 @@ -388,6 +391,7 @@ ENTRY(cast5_ecb_enc_16way)
13889 vmovdqu RR4, (6*4*4)(%r11);
13890 vmovdqu RL4, (7*4*4)(%r11);
13891
13892 + pax_force_retaddr
13893 ret;
13894 ENDPROC(cast5_ecb_enc_16way)
13895
13896 @@ -420,6 +424,7 @@ ENTRY(cast5_ecb_dec_16way)
13897 vmovdqu RR4, (6*4*4)(%r11);
13898 vmovdqu RL4, (7*4*4)(%r11);
13899
13900 + pax_force_retaddr
13901 ret;
13902 ENDPROC(cast5_ecb_dec_16way)
13903
13904 @@ -430,10 +435,10 @@ ENTRY(cast5_cbc_dec_16way)
13905 * %rdx: src
13906 */
13907
13908 - pushq %r12;
13909 + pushq %r14;
13910
13911 movq %rsi, %r11;
13912 - movq %rdx, %r12;
13913 + movq %rdx, %r14;
13914
13915 vmovdqu (0*16)(%rdx), RL1;
13916 vmovdqu (1*16)(%rdx), RR1;
13917 @@ -447,16 +452,16 @@ ENTRY(cast5_cbc_dec_16way)
13918 call __cast5_dec_blk16;
13919
13920 /* xor with src */
13921 - vmovq (%r12), RX;
13922 + vmovq (%r14), RX;
13923 vpshufd $0x4f, RX, RX;
13924 vpxor RX, RR1, RR1;
13925 - vpxor 0*16+8(%r12), RL1, RL1;
13926 - vpxor 1*16+8(%r12), RR2, RR2;
13927 - vpxor 2*16+8(%r12), RL2, RL2;
13928 - vpxor 3*16+8(%r12), RR3, RR3;
13929 - vpxor 4*16+8(%r12), RL3, RL3;
13930 - vpxor 5*16+8(%r12), RR4, RR4;
13931 - vpxor 6*16+8(%r12), RL4, RL4;
13932 + vpxor 0*16+8(%r14), RL1, RL1;
13933 + vpxor 1*16+8(%r14), RR2, RR2;
13934 + vpxor 2*16+8(%r14), RL2, RL2;
13935 + vpxor 3*16+8(%r14), RR3, RR3;
13936 + vpxor 4*16+8(%r14), RL3, RL3;
13937 + vpxor 5*16+8(%r14), RR4, RR4;
13938 + vpxor 6*16+8(%r14), RL4, RL4;
13939
13940 vmovdqu RR1, (0*16)(%r11);
13941 vmovdqu RL1, (1*16)(%r11);
13942 @@ -467,8 +472,9 @@ ENTRY(cast5_cbc_dec_16way)
13943 vmovdqu RR4, (6*16)(%r11);
13944 vmovdqu RL4, (7*16)(%r11);
13945
13946 - popq %r12;
13947 + popq %r14;
13948
13949 + pax_force_retaddr
13950 ret;
13951 ENDPROC(cast5_cbc_dec_16way)
13952
13953 @@ -480,10 +486,10 @@ ENTRY(cast5_ctr_16way)
13954 * %rcx: iv (big endian, 64bit)
13955 */
13956
13957 - pushq %r12;
13958 + pushq %r14;
13959
13960 movq %rsi, %r11;
13961 - movq %rdx, %r12;
13962 + movq %rdx, %r14;
13963
13964 vpcmpeqd RTMP, RTMP, RTMP;
13965 vpsrldq $8, RTMP, RTMP; /* low: -1, high: 0 */
13966 @@ -523,14 +529,14 @@ ENTRY(cast5_ctr_16way)
13967 call __cast5_enc_blk16;
13968
13969 /* dst = src ^ iv */
13970 - vpxor (0*16)(%r12), RR1, RR1;
13971 - vpxor (1*16)(%r12), RL1, RL1;
13972 - vpxor (2*16)(%r12), RR2, RR2;
13973 - vpxor (3*16)(%r12), RL2, RL2;
13974 - vpxor (4*16)(%r12), RR3, RR3;
13975 - vpxor (5*16)(%r12), RL3, RL3;
13976 - vpxor (6*16)(%r12), RR4, RR4;
13977 - vpxor (7*16)(%r12), RL4, RL4;
13978 + vpxor (0*16)(%r14), RR1, RR1;
13979 + vpxor (1*16)(%r14), RL1, RL1;
13980 + vpxor (2*16)(%r14), RR2, RR2;
13981 + vpxor (3*16)(%r14), RL2, RL2;
13982 + vpxor (4*16)(%r14), RR3, RR3;
13983 + vpxor (5*16)(%r14), RL3, RL3;
13984 + vpxor (6*16)(%r14), RR4, RR4;
13985 + vpxor (7*16)(%r14), RL4, RL4;
13986 vmovdqu RR1, (0*16)(%r11);
13987 vmovdqu RL1, (1*16)(%r11);
13988 vmovdqu RR2, (2*16)(%r11);
13989 @@ -540,7 +546,8 @@ ENTRY(cast5_ctr_16way)
13990 vmovdqu RR4, (6*16)(%r11);
13991 vmovdqu RL4, (7*16)(%r11);
13992
13993 - popq %r12;
13994 + popq %r14;
13995
13996 + pax_force_retaddr
13997 ret;
13998 ENDPROC(cast5_ctr_16way)
13999 diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
14000 index e3531f8..e123f35 100644
14001 --- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
14002 +++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
14003 @@ -24,6 +24,7 @@
14004 */
14005
14006 #include <linux/linkage.h>
14007 +#include <asm/alternative-asm.h>
14008 #include "glue_helper-asm-avx.S"
14009
14010 .file "cast6-avx-x86_64-asm_64.S"
14011 @@ -295,6 +296,7 @@ __cast6_enc_blk8:
14012 outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM);
14013 outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM);
14014
14015 + pax_force_retaddr
14016 ret;
14017 ENDPROC(__cast6_enc_blk8)
14018
14019 @@ -340,6 +342,7 @@ __cast6_dec_blk8:
14020 outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM);
14021 outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM);
14022
14023 + pax_force_retaddr
14024 ret;
14025 ENDPROC(__cast6_dec_blk8)
14026
14027 @@ -358,6 +361,7 @@ ENTRY(cast6_ecb_enc_8way)
14028
14029 store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14030
14031 + pax_force_retaddr
14032 ret;
14033 ENDPROC(cast6_ecb_enc_8way)
14034
14035 @@ -376,6 +380,7 @@ ENTRY(cast6_ecb_dec_8way)
14036
14037 store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14038
14039 + pax_force_retaddr
14040 ret;
14041 ENDPROC(cast6_ecb_dec_8way)
14042
14043 @@ -386,19 +391,20 @@ ENTRY(cast6_cbc_dec_8way)
14044 * %rdx: src
14045 */
14046
14047 - pushq %r12;
14048 + pushq %r14;
14049
14050 movq %rsi, %r11;
14051 - movq %rdx, %r12;
14052 + movq %rdx, %r14;
14053
14054 load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14055
14056 call __cast6_dec_blk8;
14057
14058 - store_cbc_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14059 + store_cbc_8way(%r14, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14060
14061 - popq %r12;
14062 + popq %r14;
14063
14064 + pax_force_retaddr
14065 ret;
14066 ENDPROC(cast6_cbc_dec_8way)
14067
14068 @@ -410,20 +416,21 @@ ENTRY(cast6_ctr_8way)
14069 * %rcx: iv (little endian, 128bit)
14070 */
14071
14072 - pushq %r12;
14073 + pushq %r14;
14074
14075 movq %rsi, %r11;
14076 - movq %rdx, %r12;
14077 + movq %rdx, %r14;
14078
14079 load_ctr_8way(%rcx, .Lbswap128_mask, RA1, RB1, RC1, RD1, RA2, RB2, RC2,
14080 RD2, RX, RKR, RKM);
14081
14082 call __cast6_enc_blk8;
14083
14084 - store_ctr_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14085 + store_ctr_8way(%r14, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14086
14087 - popq %r12;
14088 + popq %r14;
14089
14090 + pax_force_retaddr
14091 ret;
14092 ENDPROC(cast6_ctr_8way)
14093
14094 @@ -446,6 +453,7 @@ ENTRY(cast6_xts_enc_8way)
14095 /* dst <= regs xor IVs(in dst) */
14096 store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14097
14098 + pax_force_retaddr
14099 ret;
14100 ENDPROC(cast6_xts_enc_8way)
14101
14102 @@ -468,5 +476,6 @@ ENTRY(cast6_xts_dec_8way)
14103 /* dst <= regs xor IVs(in dst) */
14104 store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14105
14106 + pax_force_retaddr
14107 ret;
14108 ENDPROC(cast6_xts_dec_8way)
14109 diff --git a/arch/x86/crypto/crc32c-pcl-intel-asm_64.S b/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
14110 index 225be06..2885e731 100644
14111 --- a/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
14112 +++ b/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
14113 @@ -45,6 +45,7 @@
14114
14115 #include <asm/inst.h>
14116 #include <linux/linkage.h>
14117 +#include <asm/alternative-asm.h>
14118
14119 ## ISCSI CRC 32 Implementation with crc32 and pclmulqdq Instruction
14120
14121 @@ -309,6 +310,7 @@ do_return:
14122 popq %rsi
14123 popq %rdi
14124 popq %rbx
14125 + pax_force_retaddr
14126 ret
14127
14128 ################################################################
14129 @@ -330,7 +332,7 @@ ENDPROC(crc_pcl)
14130 ## PCLMULQDQ tables
14131 ## Table is 128 entries x 2 words (8 bytes) each
14132 ################################################################
14133 -.section .rotata, "a", %progbits
14134 +.section .rodata, "a", %progbits
14135 .align 8
14136 K_table:
14137 .long 0x493c7d27, 0x00000001
14138 diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S
14139 index 5d1e007..098cb4f 100644
14140 --- a/arch/x86/crypto/ghash-clmulni-intel_asm.S
14141 +++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S
14142 @@ -18,6 +18,7 @@
14143
14144 #include <linux/linkage.h>
14145 #include <asm/inst.h>
14146 +#include <asm/alternative-asm.h>
14147
14148 .data
14149
14150 @@ -89,6 +90,7 @@ __clmul_gf128mul_ble:
14151 psrlq $1, T2
14152 pxor T2, T1
14153 pxor T1, DATA
14154 + pax_force_retaddr
14155 ret
14156 ENDPROC(__clmul_gf128mul_ble)
14157
14158 @@ -101,6 +103,7 @@ ENTRY(clmul_ghash_mul)
14159 call __clmul_gf128mul_ble
14160 PSHUFB_XMM BSWAP DATA
14161 movups DATA, (%rdi)
14162 + pax_force_retaddr
14163 ret
14164 ENDPROC(clmul_ghash_mul)
14165
14166 @@ -128,5 +131,6 @@ ENTRY(clmul_ghash_update)
14167 PSHUFB_XMM BSWAP DATA
14168 movups DATA, (%rdi)
14169 .Lupdate_just_ret:
14170 + pax_force_retaddr
14171 ret
14172 ENDPROC(clmul_ghash_update)
14173 diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S
14174 index 9279e0b..c4b3d2c 100644
14175 --- a/arch/x86/crypto/salsa20-x86_64-asm_64.S
14176 +++ b/arch/x86/crypto/salsa20-x86_64-asm_64.S
14177 @@ -1,4 +1,5 @@
14178 #include <linux/linkage.h>
14179 +#include <asm/alternative-asm.h>
14180
14181 # enter salsa20_encrypt_bytes
14182 ENTRY(salsa20_encrypt_bytes)
14183 @@ -789,6 +790,7 @@ ENTRY(salsa20_encrypt_bytes)
14184 add %r11,%rsp
14185 mov %rdi,%rax
14186 mov %rsi,%rdx
14187 + pax_force_retaddr
14188 ret
14189 # bytesatleast65:
14190 ._bytesatleast65:
14191 @@ -889,6 +891,7 @@ ENTRY(salsa20_keysetup)
14192 add %r11,%rsp
14193 mov %rdi,%rax
14194 mov %rsi,%rdx
14195 + pax_force_retaddr
14196 ret
14197 ENDPROC(salsa20_keysetup)
14198
14199 @@ -914,5 +917,6 @@ ENTRY(salsa20_ivsetup)
14200 add %r11,%rsp
14201 mov %rdi,%rax
14202 mov %rsi,%rdx
14203 + pax_force_retaddr
14204 ret
14205 ENDPROC(salsa20_ivsetup)
14206 diff --git a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S
14207 index 2f202f4..d9164d6 100644
14208 --- a/arch/x86/crypto/serpent-avx-x86_64-asm_64.S
14209 +++ b/arch/x86/crypto/serpent-avx-x86_64-asm_64.S
14210 @@ -24,6 +24,7 @@
14211 */
14212
14213 #include <linux/linkage.h>
14214 +#include <asm/alternative-asm.h>
14215 #include "glue_helper-asm-avx.S"
14216
14217 .file "serpent-avx-x86_64-asm_64.S"
14218 @@ -618,6 +619,7 @@ __serpent_enc_blk8_avx:
14219 write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2);
14220 write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2);
14221
14222 + pax_force_retaddr
14223 ret;
14224 ENDPROC(__serpent_enc_blk8_avx)
14225
14226 @@ -672,6 +674,7 @@ __serpent_dec_blk8_avx:
14227 write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2);
14228 write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2);
14229
14230 + pax_force_retaddr
14231 ret;
14232 ENDPROC(__serpent_dec_blk8_avx)
14233
14234 @@ -688,6 +691,7 @@ ENTRY(serpent_ecb_enc_8way_avx)
14235
14236 store_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14237
14238 + pax_force_retaddr
14239 ret;
14240 ENDPROC(serpent_ecb_enc_8way_avx)
14241
14242 @@ -704,6 +708,7 @@ ENTRY(serpent_ecb_dec_8way_avx)
14243
14244 store_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2);
14245
14246 + pax_force_retaddr
14247 ret;
14248 ENDPROC(serpent_ecb_dec_8way_avx)
14249
14250 @@ -720,6 +725,7 @@ ENTRY(serpent_cbc_dec_8way_avx)
14251
14252 store_cbc_8way(%rdx, %rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2);
14253
14254 + pax_force_retaddr
14255 ret;
14256 ENDPROC(serpent_cbc_dec_8way_avx)
14257
14258 @@ -738,6 +744,7 @@ ENTRY(serpent_ctr_8way_avx)
14259
14260 store_ctr_8way(%rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14261
14262 + pax_force_retaddr
14263 ret;
14264 ENDPROC(serpent_ctr_8way_avx)
14265
14266 @@ -758,6 +765,7 @@ ENTRY(serpent_xts_enc_8way_avx)
14267 /* dst <= regs xor IVs(in dst) */
14268 store_xts_8way(%rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14269
14270 + pax_force_retaddr
14271 ret;
14272 ENDPROC(serpent_xts_enc_8way_avx)
14273
14274 @@ -778,5 +786,6 @@ ENTRY(serpent_xts_dec_8way_avx)
14275 /* dst <= regs xor IVs(in dst) */
14276 store_xts_8way(%rsi, RC1, RD1, RB1, RE1, RC2, RD2, RB2, RE2);
14277
14278 + pax_force_retaddr
14279 ret;
14280 ENDPROC(serpent_xts_dec_8way_avx)
14281 diff --git a/arch/x86/crypto/serpent-avx2-asm_64.S b/arch/x86/crypto/serpent-avx2-asm_64.S
14282 index b222085..abd483c 100644
14283 --- a/arch/x86/crypto/serpent-avx2-asm_64.S
14284 +++ b/arch/x86/crypto/serpent-avx2-asm_64.S
14285 @@ -15,6 +15,7 @@
14286 */
14287
14288 #include <linux/linkage.h>
14289 +#include <asm/alternative-asm.h>
14290 #include "glue_helper-asm-avx2.S"
14291
14292 .file "serpent-avx2-asm_64.S"
14293 @@ -610,6 +611,7 @@ __serpent_enc_blk16:
14294 write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2);
14295 write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2);
14296
14297 + pax_force_retaddr
14298 ret;
14299 ENDPROC(__serpent_enc_blk16)
14300
14301 @@ -664,6 +666,7 @@ __serpent_dec_blk16:
14302 write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2);
14303 write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2);
14304
14305 + pax_force_retaddr
14306 ret;
14307 ENDPROC(__serpent_dec_blk16)
14308
14309 @@ -684,6 +687,7 @@ ENTRY(serpent_ecb_enc_16way)
14310
14311 vzeroupper;
14312
14313 + pax_force_retaddr
14314 ret;
14315 ENDPROC(serpent_ecb_enc_16way)
14316
14317 @@ -704,6 +708,7 @@ ENTRY(serpent_ecb_dec_16way)
14318
14319 vzeroupper;
14320
14321 + pax_force_retaddr
14322 ret;
14323 ENDPROC(serpent_ecb_dec_16way)
14324
14325 @@ -725,6 +730,7 @@ ENTRY(serpent_cbc_dec_16way)
14326
14327 vzeroupper;
14328
14329 + pax_force_retaddr
14330 ret;
14331 ENDPROC(serpent_cbc_dec_16way)
14332
14333 @@ -748,6 +754,7 @@ ENTRY(serpent_ctr_16way)
14334
14335 vzeroupper;
14336
14337 + pax_force_retaddr
14338 ret;
14339 ENDPROC(serpent_ctr_16way)
14340
14341 @@ -772,6 +779,7 @@ ENTRY(serpent_xts_enc_16way)
14342
14343 vzeroupper;
14344
14345 + pax_force_retaddr
14346 ret;
14347 ENDPROC(serpent_xts_enc_16way)
14348
14349 @@ -796,5 +804,6 @@ ENTRY(serpent_xts_dec_16way)
14350
14351 vzeroupper;
14352
14353 + pax_force_retaddr
14354 ret;
14355 ENDPROC(serpent_xts_dec_16way)
14356 diff --git a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S b/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S
14357 index acc066c..1559cc4 100644
14358 --- a/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S
14359 +++ b/arch/x86/crypto/serpent-sse2-x86_64-asm_64.S
14360 @@ -25,6 +25,7 @@
14361 */
14362
14363 #include <linux/linkage.h>
14364 +#include <asm/alternative-asm.h>
14365
14366 .file "serpent-sse2-x86_64-asm_64.S"
14367 .text
14368 @@ -690,12 +691,14 @@ ENTRY(__serpent_enc_blk_8way)
14369 write_blocks(%rsi, RA1, RB1, RC1, RD1, RK0, RK1, RK2);
14370 write_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2);
14371
14372 + pax_force_retaddr
14373 ret;
14374
14375 .L__enc_xor8:
14376 xor_blocks(%rsi, RA1, RB1, RC1, RD1, RK0, RK1, RK2);
14377 xor_blocks(%rax, RA2, RB2, RC2, RD2, RK0, RK1, RK2);
14378
14379 + pax_force_retaddr
14380 ret;
14381 ENDPROC(__serpent_enc_blk_8way)
14382
14383 @@ -750,5 +753,6 @@ ENTRY(serpent_dec_blk_8way)
14384 write_blocks(%rsi, RC1, RD1, RB1, RE1, RK0, RK1, RK2);
14385 write_blocks(%rax, RC2, RD2, RB2, RE2, RK0, RK1, RK2);
14386
14387 + pax_force_retaddr
14388 ret;
14389 ENDPROC(serpent_dec_blk_8way)
14390 diff --git a/arch/x86/crypto/sha1_ssse3_asm.S b/arch/x86/crypto/sha1_ssse3_asm.S
14391 index a410950..9dfe7ad 100644
14392 --- a/arch/x86/crypto/sha1_ssse3_asm.S
14393 +++ b/arch/x86/crypto/sha1_ssse3_asm.S
14394 @@ -29,6 +29,7 @@
14395 */
14396
14397 #include <linux/linkage.h>
14398 +#include <asm/alternative-asm.h>
14399
14400 #define CTX %rdi // arg1
14401 #define BUF %rsi // arg2
14402 @@ -75,9 +76,9 @@
14403
14404 push %rbx
14405 push %rbp
14406 - push %r12
14407 + push %r14
14408
14409 - mov %rsp, %r12
14410 + mov %rsp, %r14
14411 sub $64, %rsp # allocate workspace
14412 and $~15, %rsp # align stack
14413
14414 @@ -99,11 +100,12 @@
14415 xor %rax, %rax
14416 rep stosq
14417
14418 - mov %r12, %rsp # deallocate workspace
14419 + mov %r14, %rsp # deallocate workspace
14420
14421 - pop %r12
14422 + pop %r14
14423 pop %rbp
14424 pop %rbx
14425 + pax_force_retaddr
14426 ret
14427
14428 ENDPROC(\name)
14429 diff --git a/arch/x86/crypto/sha256-avx-asm.S b/arch/x86/crypto/sha256-avx-asm.S
14430 index 92b3b5d..0dc1dcb 100644
14431 --- a/arch/x86/crypto/sha256-avx-asm.S
14432 +++ b/arch/x86/crypto/sha256-avx-asm.S
14433 @@ -49,6 +49,7 @@
14434
14435 #ifdef CONFIG_AS_AVX
14436 #include <linux/linkage.h>
14437 +#include <asm/alternative-asm.h>
14438
14439 ## assume buffers not aligned
14440 #define VMOVDQ vmovdqu
14441 @@ -460,6 +461,7 @@ done_hash:
14442 popq %r13
14443 popq %rbp
14444 popq %rbx
14445 + pax_force_retaddr
14446 ret
14447 ENDPROC(sha256_transform_avx)
14448
14449 diff --git a/arch/x86/crypto/sha256-avx2-asm.S b/arch/x86/crypto/sha256-avx2-asm.S
14450 index 570ec5e..cf2b625 100644
14451 --- a/arch/x86/crypto/sha256-avx2-asm.S
14452 +++ b/arch/x86/crypto/sha256-avx2-asm.S
14453 @@ -50,6 +50,7 @@
14454
14455 #ifdef CONFIG_AS_AVX2
14456 #include <linux/linkage.h>
14457 +#include <asm/alternative-asm.h>
14458
14459 ## assume buffers not aligned
14460 #define VMOVDQ vmovdqu
14461 @@ -720,6 +721,7 @@ done_hash:
14462 popq %r12
14463 popq %rbp
14464 popq %rbx
14465 + pax_force_retaddr
14466 ret
14467 ENDPROC(sha256_transform_rorx)
14468
14469 diff --git a/arch/x86/crypto/sha256-ssse3-asm.S b/arch/x86/crypto/sha256-ssse3-asm.S
14470 index 2cedc44..5144899 100644
14471 --- a/arch/x86/crypto/sha256-ssse3-asm.S
14472 +++ b/arch/x86/crypto/sha256-ssse3-asm.S
14473 @@ -47,6 +47,7 @@
14474 ########################################################################
14475
14476 #include <linux/linkage.h>
14477 +#include <asm/alternative-asm.h>
14478
14479 ## assume buffers not aligned
14480 #define MOVDQ movdqu
14481 @@ -471,6 +472,7 @@ done_hash:
14482 popq %rbp
14483 popq %rbx
14484
14485 + pax_force_retaddr
14486 ret
14487 ENDPROC(sha256_transform_ssse3)
14488
14489 diff --git a/arch/x86/crypto/sha512-avx-asm.S b/arch/x86/crypto/sha512-avx-asm.S
14490 index 565274d..af6bc08 100644
14491 --- a/arch/x86/crypto/sha512-avx-asm.S
14492 +++ b/arch/x86/crypto/sha512-avx-asm.S
14493 @@ -49,6 +49,7 @@
14494
14495 #ifdef CONFIG_AS_AVX
14496 #include <linux/linkage.h>
14497 +#include <asm/alternative-asm.h>
14498
14499 .text
14500
14501 @@ -364,6 +365,7 @@ updateblock:
14502 mov frame_RSPSAVE(%rsp), %rsp
14503
14504 nowork:
14505 + pax_force_retaddr
14506 ret
14507 ENDPROC(sha512_transform_avx)
14508
14509 diff --git a/arch/x86/crypto/sha512-avx2-asm.S b/arch/x86/crypto/sha512-avx2-asm.S
14510 index 1f20b35..f25c8c1 100644
14511 --- a/arch/x86/crypto/sha512-avx2-asm.S
14512 +++ b/arch/x86/crypto/sha512-avx2-asm.S
14513 @@ -51,6 +51,7 @@
14514
14515 #ifdef CONFIG_AS_AVX2
14516 #include <linux/linkage.h>
14517 +#include <asm/alternative-asm.h>
14518
14519 .text
14520
14521 @@ -678,6 +679,7 @@ done_hash:
14522
14523 # Restore Stack Pointer
14524 mov frame_RSPSAVE(%rsp), %rsp
14525 + pax_force_retaddr
14526 ret
14527 ENDPROC(sha512_transform_rorx)
14528
14529 diff --git a/arch/x86/crypto/sha512-ssse3-asm.S b/arch/x86/crypto/sha512-ssse3-asm.S
14530 index e610e29..ffcb5ed 100644
14531 --- a/arch/x86/crypto/sha512-ssse3-asm.S
14532 +++ b/arch/x86/crypto/sha512-ssse3-asm.S
14533 @@ -48,6 +48,7 @@
14534 ########################################################################
14535
14536 #include <linux/linkage.h>
14537 +#include <asm/alternative-asm.h>
14538
14539 .text
14540
14541 @@ -363,6 +364,7 @@ updateblock:
14542 mov frame_RSPSAVE(%rsp), %rsp
14543
14544 nowork:
14545 + pax_force_retaddr
14546 ret
14547 ENDPROC(sha512_transform_ssse3)
14548
14549 diff --git a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
14550 index 0505813..b067311 100644
14551 --- a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
14552 +++ b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
14553 @@ -24,6 +24,7 @@
14554 */
14555
14556 #include <linux/linkage.h>
14557 +#include <asm/alternative-asm.h>
14558 #include "glue_helper-asm-avx.S"
14559
14560 .file "twofish-avx-x86_64-asm_64.S"
14561 @@ -284,6 +285,7 @@ __twofish_enc_blk8:
14562 outunpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2);
14563 outunpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2);
14564
14565 + pax_force_retaddr
14566 ret;
14567 ENDPROC(__twofish_enc_blk8)
14568
14569 @@ -324,6 +326,7 @@ __twofish_dec_blk8:
14570 outunpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2);
14571 outunpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2);
14572
14573 + pax_force_retaddr
14574 ret;
14575 ENDPROC(__twofish_dec_blk8)
14576
14577 @@ -342,6 +345,7 @@ ENTRY(twofish_ecb_enc_8way)
14578
14579 store_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2);
14580
14581 + pax_force_retaddr
14582 ret;
14583 ENDPROC(twofish_ecb_enc_8way)
14584
14585 @@ -360,6 +364,7 @@ ENTRY(twofish_ecb_dec_8way)
14586
14587 store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14588
14589 + pax_force_retaddr
14590 ret;
14591 ENDPROC(twofish_ecb_dec_8way)
14592
14593 @@ -370,19 +375,20 @@ ENTRY(twofish_cbc_dec_8way)
14594 * %rdx: src
14595 */
14596
14597 - pushq %r12;
14598 + pushq %r14;
14599
14600 movq %rsi, %r11;
14601 - movq %rdx, %r12;
14602 + movq %rdx, %r14;
14603
14604 load_8way(%rdx, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2);
14605
14606 call __twofish_dec_blk8;
14607
14608 - store_cbc_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14609 + store_cbc_8way(%r14, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14610
14611 - popq %r12;
14612 + popq %r14;
14613
14614 + pax_force_retaddr
14615 ret;
14616 ENDPROC(twofish_cbc_dec_8way)
14617
14618 @@ -394,20 +400,21 @@ ENTRY(twofish_ctr_8way)
14619 * %rcx: iv (little endian, 128bit)
14620 */
14621
14622 - pushq %r12;
14623 + pushq %r14;
14624
14625 movq %rsi, %r11;
14626 - movq %rdx, %r12;
14627 + movq %rdx, %r14;
14628
14629 load_ctr_8way(%rcx, .Lbswap128_mask, RA1, RB1, RC1, RD1, RA2, RB2, RC2,
14630 RD2, RX0, RX1, RY0);
14631
14632 call __twofish_enc_blk8;
14633
14634 - store_ctr_8way(%r12, %r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2);
14635 + store_ctr_8way(%r14, %r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2);
14636
14637 - popq %r12;
14638 + popq %r14;
14639
14640 + pax_force_retaddr
14641 ret;
14642 ENDPROC(twofish_ctr_8way)
14643
14644 @@ -430,6 +437,7 @@ ENTRY(twofish_xts_enc_8way)
14645 /* dst <= regs xor IVs(in dst) */
14646 store_xts_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2);
14647
14648 + pax_force_retaddr
14649 ret;
14650 ENDPROC(twofish_xts_enc_8way)
14651
14652 @@ -452,5 +460,6 @@ ENTRY(twofish_xts_dec_8way)
14653 /* dst <= regs xor IVs(in dst) */
14654 store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
14655
14656 + pax_force_retaddr
14657 ret;
14658 ENDPROC(twofish_xts_dec_8way)
14659 diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
14660 index 1c3b7ce..02f578d 100644
14661 --- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
14662 +++ b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
14663 @@ -21,6 +21,7 @@
14664 */
14665
14666 #include <linux/linkage.h>
14667 +#include <asm/alternative-asm.h>
14668
14669 .file "twofish-x86_64-asm-3way.S"
14670 .text
14671 @@ -258,6 +259,7 @@ ENTRY(__twofish_enc_blk_3way)
14672 popq %r13;
14673 popq %r14;
14674 popq %r15;
14675 + pax_force_retaddr
14676 ret;
14677
14678 .L__enc_xor3:
14679 @@ -269,6 +271,7 @@ ENTRY(__twofish_enc_blk_3way)
14680 popq %r13;
14681 popq %r14;
14682 popq %r15;
14683 + pax_force_retaddr
14684 ret;
14685 ENDPROC(__twofish_enc_blk_3way)
14686
14687 @@ -308,5 +311,6 @@ ENTRY(twofish_dec_blk_3way)
14688 popq %r13;
14689 popq %r14;
14690 popq %r15;
14691 + pax_force_retaddr
14692 ret;
14693 ENDPROC(twofish_dec_blk_3way)
14694 diff --git a/arch/x86/crypto/twofish-x86_64-asm_64.S b/arch/x86/crypto/twofish-x86_64-asm_64.S
14695 index a350c99..c1bac24 100644
14696 --- a/arch/x86/crypto/twofish-x86_64-asm_64.S
14697 +++ b/arch/x86/crypto/twofish-x86_64-asm_64.S
14698 @@ -22,6 +22,7 @@
14699
14700 #include <linux/linkage.h>
14701 #include <asm/asm-offsets.h>
14702 +#include <asm/alternative-asm.h>
14703
14704 #define a_offset 0
14705 #define b_offset 4
14706 @@ -265,6 +266,7 @@ ENTRY(twofish_enc_blk)
14707
14708 popq R1
14709 movl $1,%eax
14710 + pax_force_retaddr
14711 ret
14712 ENDPROC(twofish_enc_blk)
14713
14714 @@ -317,5 +319,6 @@ ENTRY(twofish_dec_blk)
14715
14716 popq R1
14717 movl $1,%eax
14718 + pax_force_retaddr
14719 ret
14720 ENDPROC(twofish_dec_blk)
14721 diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h
14722 index f4e6308..7ba29a1 100644
14723 --- a/arch/x86/entry/calling.h
14724 +++ b/arch/x86/entry/calling.h
14725 @@ -93,23 +93,26 @@ For 32-bit we have the following conventions - kernel is built with
14726 .endm
14727
14728 .macro SAVE_C_REGS_HELPER offset=0 rax=1 rcx=1 r8910=1 r11=1
14729 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
14730 + movq %r12, R12+\offset(%rsp)
14731 +#endif
14732 .if \r11
14733 - movq %r11, 6*8+\offset(%rsp)
14734 + movq %r11, R11+\offset(%rsp)
14735 .endif
14736 .if \r8910
14737 - movq %r10, 7*8+\offset(%rsp)
14738 - movq %r9, 8*8+\offset(%rsp)
14739 - movq %r8, 9*8+\offset(%rsp)
14740 + movq %r10, R10+\offset(%rsp)
14741 + movq %r9, R9+\offset(%rsp)
14742 + movq %r8, R8+\offset(%rsp)
14743 .endif
14744 .if \rax
14745 - movq %rax, 10*8+\offset(%rsp)
14746 + movq %rax, RAX+\offset(%rsp)
14747 .endif
14748 .if \rcx
14749 - movq %rcx, 11*8+\offset(%rsp)
14750 + movq %rcx, RCX+\offset(%rsp)
14751 .endif
14752 - movq %rdx, 12*8+\offset(%rsp)
14753 - movq %rsi, 13*8+\offset(%rsp)
14754 - movq %rdi, 14*8+\offset(%rsp)
14755 + movq %rdx, RDX+\offset(%rsp)
14756 + movq %rsi, RSI+\offset(%rsp)
14757 + movq %rdi, RDI+\offset(%rsp)
14758 .endm
14759 .macro SAVE_C_REGS offset=0
14760 SAVE_C_REGS_HELPER \offset, 1, 1, 1, 1
14761 @@ -128,76 +131,87 @@ For 32-bit we have the following conventions - kernel is built with
14762 .endm
14763
14764 .macro SAVE_EXTRA_REGS offset=0
14765 - movq %r15, 0*8+\offset(%rsp)
14766 - movq %r14, 1*8+\offset(%rsp)
14767 - movq %r13, 2*8+\offset(%rsp)
14768 - movq %r12, 3*8+\offset(%rsp)
14769 - movq %rbp, 4*8+\offset(%rsp)
14770 - movq %rbx, 5*8+\offset(%rsp)
14771 + movq %r15, R15+\offset(%rsp)
14772 + movq %r14, R14+\offset(%rsp)
14773 + movq %r13, R13+\offset(%rsp)
14774 +#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
14775 + movq %r12, R12+\offset(%rsp)
14776 +#endif
14777 + movq %rbp, RBP+\offset(%rsp)
14778 + movq %rbx, RBX+\offset(%rsp)
14779 .endm
14780 .macro SAVE_EXTRA_REGS_RBP offset=0
14781 - movq %rbp, 4*8+\offset(%rsp)
14782 + movq %rbp, RBP+\offset(%rsp)
14783 .endm
14784
14785 .macro RESTORE_EXTRA_REGS offset=0
14786 - movq 0*8+\offset(%rsp), %r15
14787 - movq 1*8+\offset(%rsp), %r14
14788 - movq 2*8+\offset(%rsp), %r13
14789 - movq 3*8+\offset(%rsp), %r12
14790 - movq 4*8+\offset(%rsp), %rbp
14791 - movq 5*8+\offset(%rsp), %rbx
14792 + movq R15+\offset(%rsp), %r15
14793 + movq R14+\offset(%rsp), %r14
14794 + movq R13+\offset(%rsp), %r13
14795 +#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
14796 + movq R12+\offset(%rsp), %r12
14797 +#endif
14798 + movq RBP+\offset(%rsp), %rbp
14799 + movq RBX+\offset(%rsp), %rbx
14800 .endm
14801
14802 .macro ZERO_EXTRA_REGS
14803 xorl %r15d, %r15d
14804 xorl %r14d, %r14d
14805 xorl %r13d, %r13d
14806 +#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
14807 xorl %r12d, %r12d
14808 +#endif
14809 xorl %ebp, %ebp
14810 xorl %ebx, %ebx
14811 .endm
14812
14813 - .macro RESTORE_C_REGS_HELPER rstor_rax=1, rstor_rcx=1, rstor_r11=1, rstor_r8910=1, rstor_rdx=1
14814 + .macro RESTORE_C_REGS_HELPER rstor_rax=1, rstor_rcx=1, rstor_r11=1, rstor_r8910=1, rstor_rdx=1, rstor_r12=1
14815 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
14816 + .if \rstor_r12
14817 + movq R12(%rsp), %r12
14818 + .endif
14819 +#endif
14820 .if \rstor_r11
14821 - movq 6*8(%rsp), %r11
14822 + movq R11(%rsp), %r11
14823 .endif
14824 .if \rstor_r8910
14825 - movq 7*8(%rsp), %r10
14826 - movq 8*8(%rsp), %r9
14827 - movq 9*8(%rsp), %r8
14828 + movq R10(%rsp), %r10
14829 + movq R9(%rsp), %r9
14830 + movq R8(%rsp), %r8
14831 .endif
14832 .if \rstor_rax
14833 - movq 10*8(%rsp), %rax
14834 + movq RAX(%rsp), %rax
14835 .endif
14836 .if \rstor_rcx
14837 - movq 11*8(%rsp), %rcx
14838 + movq RCX(%rsp), %rcx
14839 .endif
14840 .if \rstor_rdx
14841 - movq 12*8(%rsp), %rdx
14842 + movq RDX(%rsp), %rdx
14843 .endif
14844 - movq 13*8(%rsp), %rsi
14845 - movq 14*8(%rsp), %rdi
14846 + movq RSI(%rsp), %rsi
14847 + movq RDI(%rsp), %rdi
14848 .endm
14849 .macro RESTORE_C_REGS
14850 - RESTORE_C_REGS_HELPER 1,1,1,1,1
14851 + RESTORE_C_REGS_HELPER 1,1,1,1,1,1
14852 .endm
14853 .macro RESTORE_C_REGS_EXCEPT_RAX
14854 - RESTORE_C_REGS_HELPER 0,1,1,1,1
14855 + RESTORE_C_REGS_HELPER 0,1,1,1,1,0
14856 .endm
14857 .macro RESTORE_C_REGS_EXCEPT_RCX
14858 - RESTORE_C_REGS_HELPER 1,0,1,1,1
14859 + RESTORE_C_REGS_HELPER 1,0,1,1,1,0
14860 .endm
14861 .macro RESTORE_C_REGS_EXCEPT_R11
14862 - RESTORE_C_REGS_HELPER 1,1,0,1,1
14863 + RESTORE_C_REGS_HELPER 1,1,0,1,1,1
14864 .endm
14865 .macro RESTORE_C_REGS_EXCEPT_RCX_R11
14866 - RESTORE_C_REGS_HELPER 1,0,0,1,1
14867 + RESTORE_C_REGS_HELPER 1,0,0,1,1,1
14868 .endm
14869 .macro RESTORE_RSI_RDI
14870 - RESTORE_C_REGS_HELPER 0,0,0,0,0
14871 + RESTORE_C_REGS_HELPER 0,0,0,0,0,1
14872 .endm
14873 .macro RESTORE_RSI_RDI_RDX
14874 - RESTORE_C_REGS_HELPER 0,0,0,0,1
14875 + RESTORE_C_REGS_HELPER 0,0,0,0,1,1
14876 .endm
14877
14878 .macro REMOVE_PT_GPREGS_FROM_STACK addskip=0
14879 diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
14880 index 21dc60a..844def1 100644
14881 --- a/arch/x86/entry/entry_32.S
14882 +++ b/arch/x86/entry/entry_32.S
14883 @@ -157,13 +157,154 @@
14884 movl \reg, PT_GS(%esp)
14885 .endm
14886 .macro SET_KERNEL_GS reg
14887 +
14888 +#ifdef CONFIG_CC_STACKPROTECTOR
14889 movl $(__KERNEL_STACK_CANARY), \reg
14890 +#elif defined(CONFIG_PAX_MEMORY_UDEREF)
14891 + movl $(__USER_DS), \reg
14892 +#else
14893 + xorl \reg, \reg
14894 +#endif
14895 +
14896 movl \reg, %gs
14897 .endm
14898
14899 #endif /* CONFIG_X86_32_LAZY_GS */
14900
14901 -.macro SAVE_ALL
14902 +.macro pax_enter_kernel
14903 +#ifdef CONFIG_PAX_KERNEXEC
14904 + call pax_enter_kernel
14905 +#endif
14906 +.endm
14907 +
14908 +.macro pax_exit_kernel
14909 +#ifdef CONFIG_PAX_KERNEXEC
14910 + call pax_exit_kernel
14911 +#endif
14912 +.endm
14913 +
14914 +#ifdef CONFIG_PAX_KERNEXEC
14915 +ENTRY(pax_enter_kernel)
14916 +#ifdef CONFIG_PARAVIRT
14917 + pushl %eax
14918 + pushl %ecx
14919 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_read_cr0)
14920 + mov %eax, %esi
14921 +#else
14922 + mov %cr0, %esi
14923 +#endif
14924 + bts $X86_CR0_WP_BIT, %esi
14925 + jnc 1f
14926 + mov %cs, %esi
14927 + cmp $__KERNEL_CS, %esi
14928 + jz 3f
14929 + ljmp $__KERNEL_CS, $3f
14930 +1: ljmp $__KERNEXEC_KERNEL_CS, $2f
14931 +2:
14932 +#ifdef CONFIG_PARAVIRT
14933 + mov %esi, %eax
14934 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_write_cr0)
14935 +#else
14936 + mov %esi, %cr0
14937 +#endif
14938 +3:
14939 +#ifdef CONFIG_PARAVIRT
14940 + popl %ecx
14941 + popl %eax
14942 +#endif
14943 + ret
14944 +ENDPROC(pax_enter_kernel)
14945 +
14946 +ENTRY(pax_exit_kernel)
14947 +#ifdef CONFIG_PARAVIRT
14948 + pushl %eax
14949 + pushl %ecx
14950 +#endif
14951 + mov %cs, %esi
14952 + cmp $__KERNEXEC_KERNEL_CS, %esi
14953 + jnz 2f
14954 +#ifdef CONFIG_PARAVIRT
14955 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_read_cr0);
14956 + mov %eax, %esi
14957 +#else
14958 + mov %cr0, %esi
14959 +#endif
14960 + btr $X86_CR0_WP_BIT, %esi
14961 + ljmp $__KERNEL_CS, $1f
14962 +1:
14963 +#ifdef CONFIG_PARAVIRT
14964 + mov %esi, %eax
14965 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_write_cr0);
14966 +#else
14967 + mov %esi, %cr0
14968 +#endif
14969 +2:
14970 +#ifdef CONFIG_PARAVIRT
14971 + popl %ecx
14972 + popl %eax
14973 +#endif
14974 + ret
14975 +ENDPROC(pax_exit_kernel)
14976 +#endif
14977 +
14978 + .macro pax_erase_kstack
14979 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
14980 + call pax_erase_kstack
14981 +#endif
14982 + .endm
14983 +
14984 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
14985 +/*
14986 + * ebp: thread_info
14987 + */
14988 +ENTRY(pax_erase_kstack)
14989 + pushl %edi
14990 + pushl %ecx
14991 + pushl %eax
14992 +
14993 + mov TI_lowest_stack(%ebp), %edi
14994 + mov $-0xBEEF, %eax
14995 + std
14996 +
14997 +1: mov %edi, %ecx
14998 + and $THREAD_SIZE_asm - 1, %ecx
14999 + shr $2, %ecx
15000 + repne scasl
15001 + jecxz 2f
15002 +
15003 + cmp $2*16, %ecx
15004 + jc 2f
15005 +
15006 + mov $2*16, %ecx
15007 + repe scasl
15008 + jecxz 2f
15009 + jne 1b
15010 +
15011 +2: cld
15012 + or $2*4, %edi
15013 + mov %esp, %ecx
15014 + sub %edi, %ecx
15015 +
15016 + cmp $THREAD_SIZE_asm, %ecx
15017 + jb 3f
15018 + ud2
15019 +3:
15020 +
15021 + shr $2, %ecx
15022 + rep stosl
15023 +
15024 + mov TI_task_thread_sp0(%ebp), %edi
15025 + sub $128, %edi
15026 + mov %edi, TI_lowest_stack(%ebp)
15027 +
15028 + popl %eax
15029 + popl %ecx
15030 + popl %edi
15031 + ret
15032 +ENDPROC(pax_erase_kstack)
15033 +#endif
15034 +
15035 +.macro __SAVE_ALL _DS
15036 cld
15037 PUSH_GS
15038 pushl %fs
15039 @@ -176,7 +317,7 @@
15040 pushl %edx
15041 pushl %ecx
15042 pushl %ebx
15043 - movl $(__USER_DS), %edx
15044 + movl $\_DS, %edx
15045 movl %edx, %ds
15046 movl %edx, %es
15047 movl $(__KERNEL_PERCPU), %edx
15048 @@ -184,6 +325,15 @@
15049 SET_KERNEL_GS %edx
15050 .endm
15051
15052 +.macro SAVE_ALL
15053 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
15054 + __SAVE_ALL __KERNEL_DS
15055 + pax_enter_kernel
15056 +#else
15057 + __SAVE_ALL __USER_DS
15058 +#endif
15059 +.endm
15060 +
15061 .macro RESTORE_INT_REGS
15062 popl %ebx
15063 popl %ecx
15064 @@ -222,7 +372,7 @@ ENTRY(ret_from_fork)
15065 pushl $0x0202 # Reset kernel eflags
15066 popfl
15067 jmp syscall_exit
15068 -END(ret_from_fork)
15069 +ENDPROC(ret_from_fork)
15070
15071 ENTRY(ret_from_kernel_thread)
15072 pushl %eax
15073 @@ -262,7 +412,15 @@ ret_from_intr:
15074 andl $SEGMENT_RPL_MASK, %eax
15075 #endif
15076 cmpl $USER_RPL, %eax
15077 +
15078 +#ifdef CONFIG_PAX_KERNEXEC
15079 + jae resume_userspace
15080 +
15081 + pax_exit_kernel
15082 + jmp resume_kernel
15083 +#else
15084 jb resume_kernel # not returning to v8086 or userspace
15085 +#endif
15086
15087 ENTRY(resume_userspace)
15088 LOCKDEP_SYS_EXIT
15089 @@ -274,8 +432,8 @@ ENTRY(resume_userspace)
15090 andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
15091 # int/exception return?
15092 jne work_pending
15093 - jmp restore_all
15094 -END(ret_from_exception)
15095 + jmp restore_all_pax
15096 +ENDPROC(ret_from_exception)
15097
15098 #ifdef CONFIG_PREEMPT
15099 ENTRY(resume_kernel)
15100 @@ -287,7 +445,7 @@ need_resched:
15101 jz restore_all
15102 call preempt_schedule_irq
15103 jmp need_resched
15104 -END(resume_kernel)
15105 +ENDPROC(resume_kernel)
15106 #endif
15107
15108 /*
15109 @@ -312,32 +470,44 @@ sysenter_past_esp:
15110 pushl $__USER_CS
15111 /*
15112 * Push current_thread_info()->sysenter_return to the stack.
15113 - * A tiny bit of offset fixup is necessary: TI_sysenter_return
15114 - * is relative to thread_info, which is at the bottom of the
15115 - * kernel stack page. 4*4 means the 4 words pushed above;
15116 - * TOP_OF_KERNEL_STACK_PADDING takes us to the top of the stack;
15117 - * and THREAD_SIZE takes us to the bottom.
15118 */
15119 - pushl ((TI_sysenter_return) - THREAD_SIZE + TOP_OF_KERNEL_STACK_PADDING + 4*4)(%esp)
15120 + pushl $0
15121
15122 pushl %eax
15123 SAVE_ALL
15124 + GET_THREAD_INFO(%ebp)
15125 + movl TI_sysenter_return(%ebp), %ebp
15126 + movl %ebp, PT_EIP(%esp)
15127 ENABLE_INTERRUPTS(CLBR_NONE)
15128
15129 /*
15130 * Load the potential sixth argument from user stack.
15131 * Careful about security.
15132 */
15133 + movl PT_OLDESP(%esp),%ebp
15134 +
15135 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15136 + mov PT_OLDSS(%esp), %ds
15137 +1: movl %ds:(%ebp), %ebp
15138 + push %ss
15139 + pop %ds
15140 +#else
15141 cmpl $__PAGE_OFFSET-3, %ebp
15142 jae syscall_fault
15143 ASM_STAC
15144 1: movl (%ebp), %ebp
15145 ASM_CLAC
15146 +#endif
15147 +
15148 movl %ebp, PT_EBP(%esp)
15149 _ASM_EXTABLE(1b, syscall_fault)
15150
15151 GET_THREAD_INFO(%ebp)
15152
15153 +#ifdef CONFIG_PAX_RANDKSTACK
15154 + pax_erase_kstack
15155 +#endif
15156 +
15157 testl $_TIF_WORK_SYSCALL_ENTRY, TI_flags(%ebp)
15158 jnz sysenter_audit
15159 sysenter_do_call:
15160 @@ -353,12 +523,24 @@ sysenter_after_call:
15161 testl $_TIF_ALLWORK_MASK, %ecx
15162 jnz sysexit_audit
15163 sysenter_exit:
15164 +
15165 +#ifdef CONFIG_PAX_RANDKSTACK
15166 + pushl %eax
15167 + movl %esp, %eax
15168 + call pax_randomize_kstack
15169 + popl %eax
15170 +#endif
15171 +
15172 + pax_erase_kstack
15173 +
15174 /* if something modifies registers it must also disable sysexit */
15175 movl PT_EIP(%esp), %edx
15176 movl PT_OLDESP(%esp), %ecx
15177 xorl %ebp, %ebp
15178 TRACE_IRQS_ON
15179 1: mov PT_FS(%esp), %fs
15180 +2: mov PT_DS(%esp), %ds
15181 +3: mov PT_ES(%esp), %es
15182 PTGS_TO_GS
15183 ENABLE_INTERRUPTS_SYSEXIT
15184
15185 @@ -372,6 +554,9 @@ sysenter_audit:
15186 pushl PT_ESI(%esp) /* a3: 5th arg */
15187 pushl PT_EDX+4(%esp) /* a2: 4th arg */
15188 call __audit_syscall_entry
15189 +
15190 + pax_erase_kstack
15191 +
15192 popl %ecx /* get that remapped edx off the stack */
15193 popl %ecx /* get that remapped esi off the stack */
15194 movl PT_EAX(%esp), %eax /* reload syscall number */
15195 @@ -397,10 +582,16 @@ sysexit_audit:
15196 #endif
15197
15198 .pushsection .fixup, "ax"
15199 -2: movl $0, PT_FS(%esp)
15200 +4: movl $0, PT_FS(%esp)
15201 + jmp 1b
15202 +5: movl $0, PT_DS(%esp)
15203 + jmp 1b
15204 +6: movl $0, PT_ES(%esp)
15205 jmp 1b
15206 .popsection
15207 - _ASM_EXTABLE(1b, 2b)
15208 + _ASM_EXTABLE(1b, 4b)
15209 + _ASM_EXTABLE(2b, 5b)
15210 + _ASM_EXTABLE(3b, 6b)
15211 PTGS_TO_GS_EX
15212 ENDPROC(entry_SYSENTER_32)
15213
15214 @@ -410,6 +601,11 @@ ENTRY(entry_INT80_32)
15215 pushl %eax # save orig_eax
15216 SAVE_ALL
15217 GET_THREAD_INFO(%ebp)
15218 +
15219 +#ifdef CONFIG_PAX_RANDKSTACK
15220 + pax_erase_kstack
15221 +#endif
15222 +
15223 # system call tracing in operation / emulation
15224 testl $_TIF_WORK_SYSCALL_ENTRY, TI_flags(%ebp)
15225 jnz syscall_trace_entry
15226 @@ -429,6 +625,15 @@ syscall_exit:
15227 testl $_TIF_ALLWORK_MASK, %ecx # current->work
15228 jnz syscall_exit_work
15229
15230 +restore_all_pax:
15231 +
15232 +#ifdef CONFIG_PAX_RANDKSTACK
15233 + movl %esp, %eax
15234 + call pax_randomize_kstack
15235 +#endif
15236 +
15237 + pax_erase_kstack
15238 +
15239 restore_all:
15240 TRACE_IRQS_IRET
15241 restore_all_notrace:
15242 @@ -483,14 +688,34 @@ ldt_ss:
15243 * compensating for the offset by changing to the ESPFIX segment with
15244 * a base address that matches for the difference.
15245 */
15246 -#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + (GDT_ENTRY_ESPFIX_SS * 8)
15247 +#define GDT_ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)(%ebx)
15248 mov %esp, %edx /* load kernel esp */
15249 mov PT_OLDESP(%esp), %eax /* load userspace esp */
15250 mov %dx, %ax /* eax: new kernel esp */
15251 sub %eax, %edx /* offset (low word is 0) */
15252 +#ifdef CONFIG_SMP
15253 + movl PER_CPU_VAR(cpu_number), %ebx
15254 + shll $PAGE_SHIFT_asm, %ebx
15255 + addl $cpu_gdt_table, %ebx
15256 +#else
15257 + movl $cpu_gdt_table, %ebx
15258 +#endif
15259 shr $16, %edx
15260 - mov %dl, GDT_ESPFIX_SS + 4 /* bits 16..23 */
15261 - mov %dh, GDT_ESPFIX_SS + 7 /* bits 24..31 */
15262 +
15263 +#ifdef CONFIG_PAX_KERNEXEC
15264 + mov %cr0, %esi
15265 + btr $X86_CR0_WP_BIT, %esi
15266 + mov %esi, %cr0
15267 +#endif
15268 +
15269 + mov %dl, 4 + GDT_ESPFIX_SS /* bits 16..23 */
15270 + mov %dh, 7 + GDT_ESPFIX_SS /* bits 24..31 */
15271 +
15272 +#ifdef CONFIG_PAX_KERNEXEC
15273 + bts $X86_CR0_WP_BIT, %esi
15274 + mov %esi, %cr0
15275 +#endif
15276 +
15277 pushl $__ESPFIX_SS
15278 pushl %eax /* new kernel esp */
15279 /*
15280 @@ -519,20 +744,18 @@ work_resched:
15281 movl TI_flags(%ebp), %ecx
15282 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
15283 # than syscall tracing?
15284 - jz restore_all
15285 + jz restore_all_pax
15286 testb $_TIF_NEED_RESCHED, %cl
15287 jnz work_resched
15288
15289 work_notifysig: # deal with pending signals and
15290 # notify-resume requests
15291 + movl %esp, %eax
15292 #ifdef CONFIG_VM86
15293 testl $X86_EFLAGS_VM, PT_EFLAGS(%esp)
15294 - movl %esp, %eax
15295 jnz work_notifysig_v86 # returning to kernel-space or
15296 # vm86-space
15297 1:
15298 -#else
15299 - movl %esp, %eax
15300 #endif
15301 TRACE_IRQS_ON
15302 ENABLE_INTERRUPTS(CLBR_NONE)
15303 @@ -553,7 +776,7 @@ work_notifysig_v86:
15304 movl %eax, %esp
15305 jmp 1b
15306 #endif
15307 -END(work_pending)
15308 +ENDPROC(work_pending)
15309
15310 # perform syscall exit tracing
15311 ALIGN
15312 @@ -561,11 +784,14 @@ syscall_trace_entry:
15313 movl $-ENOSYS, PT_EAX(%esp)
15314 movl %esp, %eax
15315 call syscall_trace_enter
15316 +
15317 + pax_erase_kstack
15318 +
15319 /* What it returned is what we'll actually use. */
15320 cmpl $(NR_syscalls), %eax
15321 jnae syscall_call
15322 jmp syscall_exit
15323 -END(syscall_trace_entry)
15324 +ENDPROC(syscall_trace_entry)
15325
15326 # perform syscall exit tracing
15327 ALIGN
15328 @@ -578,24 +804,28 @@ syscall_exit_work:
15329 movl %esp, %eax
15330 call syscall_trace_leave
15331 jmp resume_userspace
15332 -END(syscall_exit_work)
15333 +ENDPROC(syscall_exit_work)
15334
15335 syscall_fault:
15336 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15337 + push %ss
15338 + pop %ds
15339 +#endif
15340 ASM_CLAC
15341 GET_THREAD_INFO(%ebp)
15342 movl $-EFAULT, PT_EAX(%esp)
15343 jmp resume_userspace
15344 -END(syscall_fault)
15345 +ENDPROC(syscall_fault)
15346
15347 syscall_badsys:
15348 movl $-ENOSYS, %eax
15349 jmp syscall_after_call
15350 -END(syscall_badsys)
15351 +ENDPROC(syscall_badsys)
15352
15353 sysenter_badsys:
15354 movl $-ENOSYS, %eax
15355 jmp sysenter_after_call
15356 -END(sysenter_badsys)
15357 +ENDPROC(sysenter_badsys)
15358
15359 .macro FIXUP_ESPFIX_STACK
15360 /*
15361 @@ -607,8 +837,15 @@ END(sysenter_badsys)
15362 */
15363 #ifdef CONFIG_X86_ESPFIX32
15364 /* fixup the stack */
15365 - mov GDT_ESPFIX_SS + 4, %al /* bits 16..23 */
15366 - mov GDT_ESPFIX_SS + 7, %ah /* bits 24..31 */
15367 +#ifdef CONFIG_SMP
15368 + movl PER_CPU_VAR(cpu_number), %ebx
15369 + shll $PAGE_SHIFT_asm, %ebx
15370 + addl $cpu_gdt_table, %ebx
15371 +#else
15372 + movl $cpu_gdt_table, %ebx
15373 +#endif
15374 + mov 4 + GDT_ESPFIX_SS, %al /* bits 16..23 */
15375 + mov 7 + GDT_ESPFIX_SS, %ah /* bits 24..31 */
15376 shl $16, %eax
15377 addl %esp, %eax /* the adjusted stack pointer */
15378 pushl $__KERNEL_DS
15379 @@ -644,7 +881,7 @@ ENTRY(irq_entries_start)
15380 jmp common_interrupt
15381 .align 8
15382 .endr
15383 -END(irq_entries_start)
15384 +ENDPROC(irq_entries_start)
15385
15386 /*
15387 * the CPU automatically disables interrupts when executing an IRQ vector,
15388 @@ -691,7 +928,7 @@ ENTRY(coprocessor_error)
15389 pushl $0
15390 pushl $do_coprocessor_error
15391 jmp error_code
15392 -END(coprocessor_error)
15393 +ENDPROC(coprocessor_error)
15394
15395 ENTRY(simd_coprocessor_error)
15396 ASM_CLAC
15397 @@ -705,25 +942,25 @@ ENTRY(simd_coprocessor_error)
15398 pushl $do_simd_coprocessor_error
15399 #endif
15400 jmp error_code
15401 -END(simd_coprocessor_error)
15402 +ENDPROC(simd_coprocessor_error)
15403
15404 ENTRY(device_not_available)
15405 ASM_CLAC
15406 pushl $-1 # mark this as an int
15407 pushl $do_device_not_available
15408 jmp error_code
15409 -END(device_not_available)
15410 +ENDPROC(device_not_available)
15411
15412 #ifdef CONFIG_PARAVIRT
15413 ENTRY(native_iret)
15414 iret
15415 _ASM_EXTABLE(native_iret, iret_exc)
15416 -END(native_iret)
15417 +ENDPROC(native_iret)
15418
15419 ENTRY(native_irq_enable_sysexit)
15420 sti
15421 sysexit
15422 -END(native_irq_enable_sysexit)
15423 +ENDPROC(native_irq_enable_sysexit)
15424 #endif
15425
15426 ENTRY(overflow)
15427 @@ -731,59 +968,59 @@ ENTRY(overflow)
15428 pushl $0
15429 pushl $do_overflow
15430 jmp error_code
15431 -END(overflow)
15432 +ENDPROC(overflow)
15433
15434 ENTRY(bounds)
15435 ASM_CLAC
15436 pushl $0
15437 pushl $do_bounds
15438 jmp error_code
15439 -END(bounds)
15440 +ENDPROC(bounds)
15441
15442 ENTRY(invalid_op)
15443 ASM_CLAC
15444 pushl $0
15445 pushl $do_invalid_op
15446 jmp error_code
15447 -END(invalid_op)
15448 +ENDPROC(invalid_op)
15449
15450 ENTRY(coprocessor_segment_overrun)
15451 ASM_CLAC
15452 pushl $0
15453 pushl $do_coprocessor_segment_overrun
15454 jmp error_code
15455 -END(coprocessor_segment_overrun)
15456 +ENDPROC(coprocessor_segment_overrun)
15457
15458 ENTRY(invalid_TSS)
15459 ASM_CLAC
15460 pushl $do_invalid_TSS
15461 jmp error_code
15462 -END(invalid_TSS)
15463 +ENDPROC(invalid_TSS)
15464
15465 ENTRY(segment_not_present)
15466 ASM_CLAC
15467 pushl $do_segment_not_present
15468 jmp error_code
15469 -END(segment_not_present)
15470 +ENDPROC(segment_not_present)
15471
15472 ENTRY(stack_segment)
15473 ASM_CLAC
15474 pushl $do_stack_segment
15475 jmp error_code
15476 -END(stack_segment)
15477 +ENDPROC(stack_segment)
15478
15479 ENTRY(alignment_check)
15480 ASM_CLAC
15481 pushl $do_alignment_check
15482 jmp error_code
15483 -END(alignment_check)
15484 +ENDPROC(alignment_check)
15485
15486 ENTRY(divide_error)
15487 ASM_CLAC
15488 pushl $0 # no error code
15489 pushl $do_divide_error
15490 jmp error_code
15491 -END(divide_error)
15492 +ENDPROC(divide_error)
15493
15494 #ifdef CONFIG_X86_MCE
15495 ENTRY(machine_check)
15496 @@ -791,7 +1028,7 @@ ENTRY(machine_check)
15497 pushl $0
15498 pushl machine_check_vector
15499 jmp error_code
15500 -END(machine_check)
15501 +ENDPROC(machine_check)
15502 #endif
15503
15504 ENTRY(spurious_interrupt_bug)
15505 @@ -799,7 +1036,7 @@ ENTRY(spurious_interrupt_bug)
15506 pushl $0
15507 pushl $do_spurious_interrupt_bug
15508 jmp error_code
15509 -END(spurious_interrupt_bug)
15510 +ENDPROC(spurious_interrupt_bug)
15511
15512 #ifdef CONFIG_XEN
15513 /*
15514 @@ -906,7 +1143,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
15515
15516 ENTRY(mcount)
15517 ret
15518 -END(mcount)
15519 +ENDPROC(mcount)
15520
15521 ENTRY(ftrace_caller)
15522 pushl %eax
15523 @@ -936,7 +1173,7 @@ ftrace_graph_call:
15524 .globl ftrace_stub
15525 ftrace_stub:
15526 ret
15527 -END(ftrace_caller)
15528 +ENDPROC(ftrace_caller)
15529
15530 ENTRY(ftrace_regs_caller)
15531 pushf /* push flags before compare (in cs location) */
15532 @@ -1034,7 +1271,7 @@ trace:
15533 popl %ecx
15534 popl %eax
15535 jmp ftrace_stub
15536 -END(mcount)
15537 +ENDPROC(mcount)
15538 #endif /* CONFIG_DYNAMIC_FTRACE */
15539 #endif /* CONFIG_FUNCTION_TRACER */
15540
15541 @@ -1052,7 +1289,7 @@ ENTRY(ftrace_graph_caller)
15542 popl %ecx
15543 popl %eax
15544 ret
15545 -END(ftrace_graph_caller)
15546 +ENDPROC(ftrace_graph_caller)
15547
15548 .globl return_to_handler
15549 return_to_handler:
15550 @@ -1100,14 +1337,17 @@ error_code:
15551 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
15552 REG_TO_PTGS %ecx
15553 SET_KERNEL_GS %ecx
15554 - movl $(__USER_DS), %ecx
15555 + movl $(__KERNEL_DS), %ecx
15556 movl %ecx, %ds
15557 movl %ecx, %es
15558 +
15559 + pax_enter_kernel
15560 +
15561 TRACE_IRQS_OFF
15562 movl %esp, %eax # pt_regs pointer
15563 call *%edi
15564 jmp ret_from_exception
15565 -END(page_fault)
15566 +ENDPROC(page_fault)
15567
15568 /*
15569 * Debug traps and NMI can happen at the one SYSENTER instruction
15570 @@ -1145,7 +1385,7 @@ debug_stack_correct:
15571 movl %esp, %eax # pt_regs pointer
15572 call do_debug
15573 jmp ret_from_exception
15574 -END(debug)
15575 +ENDPROC(debug)
15576
15577 /*
15578 * NMI is doubly nasty. It can happen _while_ we're handling
15579 @@ -1184,6 +1424,9 @@ nmi_stack_correct:
15580 xorl %edx, %edx # zero error code
15581 movl %esp, %eax # pt_regs pointer
15582 call do_nmi
15583 +
15584 + pax_exit_kernel
15585 +
15586 jmp restore_all_notrace
15587
15588 nmi_stack_fixup:
15589 @@ -1217,11 +1460,14 @@ nmi_espfix_stack:
15590 FIXUP_ESPFIX_STACK # %eax == %esp
15591 xorl %edx, %edx # zero error code
15592 call do_nmi
15593 +
15594 + pax_exit_kernel
15595 +
15596 RESTORE_REGS
15597 lss 12+4(%esp), %esp # back to espfix stack
15598 jmp irq_return
15599 #endif
15600 -END(nmi)
15601 +ENDPROC(nmi)
15602
15603 ENTRY(int3)
15604 ASM_CLAC
15605 @@ -1232,17 +1478,17 @@ ENTRY(int3)
15606 movl %esp, %eax # pt_regs pointer
15607 call do_int3
15608 jmp ret_from_exception
15609 -END(int3)
15610 +ENDPROC(int3)
15611
15612 ENTRY(general_protection)
15613 pushl $do_general_protection
15614 jmp error_code
15615 -END(general_protection)
15616 +ENDPROC(general_protection)
15617
15618 #ifdef CONFIG_KVM_GUEST
15619 ENTRY(async_page_fault)
15620 ASM_CLAC
15621 pushl $do_async_page_fault
15622 jmp error_code
15623 -END(async_page_fault)
15624 +ENDPROC(async_page_fault)
15625 #endif
15626 diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
15627 index 8cb3e43..a497278 100644
15628 --- a/arch/x86/entry/entry_64.S
15629 +++ b/arch/x86/entry/entry_64.S
15630 @@ -37,6 +37,8 @@
15631 #include <asm/smap.h>
15632 #include <asm/pgtable_types.h>
15633 #include <linux/err.h>
15634 +#include <asm/pgtable.h>
15635 +#include <asm/alternative-asm.h>
15636
15637 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
15638 #include <linux/elf-em.h>
15639 @@ -54,6 +56,402 @@ ENTRY(native_usergs_sysret64)
15640 ENDPROC(native_usergs_sysret64)
15641 #endif /* CONFIG_PARAVIRT */
15642
15643 + .macro ljmpq sel, off
15644 +#if defined(CONFIG_MPSC) || defined(CONFIG_MCORE2) || defined (CONFIG_MATOM)
15645 + .byte 0x48; ljmp *1234f(%rip)
15646 + .pushsection .rodata
15647 + .align 16
15648 + 1234: .quad \off; .word \sel
15649 + .popsection
15650 +#else
15651 + pushq $\sel
15652 + pushq $\off
15653 + lretq
15654 +#endif
15655 + .endm
15656 +
15657 + .macro pax_enter_kernel
15658 + pax_set_fptr_mask
15659 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
15660 + call pax_enter_kernel
15661 +#endif
15662 + .endm
15663 +
15664 + .macro pax_exit_kernel
15665 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
15666 + call pax_exit_kernel
15667 +#endif
15668 + .endm
15669 +
15670 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
15671 +ENTRY(pax_enter_kernel)
15672 + pushq %rdi
15673 +
15674 +#ifdef CONFIG_PARAVIRT
15675 + PV_SAVE_REGS(CLBR_RDI)
15676 +#endif
15677 +
15678 +#ifdef CONFIG_PAX_KERNEXEC
15679 + GET_CR0_INTO_RDI
15680 + bts $X86_CR0_WP_BIT,%rdi
15681 + jnc 3f
15682 + mov %cs,%edi
15683 + cmp $__KERNEL_CS,%edi
15684 + jnz 2f
15685 +1:
15686 +#endif
15687 +
15688 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15689 + ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID
15690 + GET_CR3_INTO_RDI
15691 + cmp $0,%dil
15692 + jnz 112f
15693 + mov $__KERNEL_DS,%edi
15694 + mov %edi,%ss
15695 + jmp 111f
15696 +112: cmp $1,%dil
15697 + jz 113f
15698 + ud2
15699 +113: sub $4097,%rdi
15700 + bts $63,%rdi
15701 + SET_RDI_INTO_CR3
15702 + mov $__UDEREF_KERNEL_DS,%edi
15703 + mov %edi,%ss
15704 +111:
15705 +#endif
15706 +
15707 +#ifdef CONFIG_PARAVIRT
15708 + PV_RESTORE_REGS(CLBR_RDI)
15709 +#endif
15710 +
15711 + popq %rdi
15712 + pax_force_retaddr
15713 + retq
15714 +
15715 +#ifdef CONFIG_PAX_KERNEXEC
15716 +2: ljmpq __KERNEL_CS,1b
15717 +3: ljmpq __KERNEXEC_KERNEL_CS,4f
15718 +4: SET_RDI_INTO_CR0
15719 + jmp 1b
15720 +#endif
15721 +ENDPROC(pax_enter_kernel)
15722 +
15723 +ENTRY(pax_exit_kernel)
15724 + pushq %rdi
15725 +
15726 +#ifdef CONFIG_PARAVIRT
15727 + PV_SAVE_REGS(CLBR_RDI)
15728 +#endif
15729 +
15730 +#ifdef CONFIG_PAX_KERNEXEC
15731 + mov %cs,%rdi
15732 + cmp $__KERNEXEC_KERNEL_CS,%edi
15733 + jz 2f
15734 + GET_CR0_INTO_RDI
15735 + bts $X86_CR0_WP_BIT,%rdi
15736 + jnc 4f
15737 +1:
15738 +#endif
15739 +
15740 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15741 + ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID
15742 + mov %ss,%edi
15743 + cmp $__UDEREF_KERNEL_DS,%edi
15744 + jnz 111f
15745 + GET_CR3_INTO_RDI
15746 + cmp $0,%dil
15747 + jz 112f
15748 + ud2
15749 +112: add $4097,%rdi
15750 + bts $63,%rdi
15751 + SET_RDI_INTO_CR3
15752 + mov $__KERNEL_DS,%edi
15753 + mov %edi,%ss
15754 +111:
15755 +#endif
15756 +
15757 +#ifdef CONFIG_PARAVIRT
15758 + PV_RESTORE_REGS(CLBR_RDI);
15759 +#endif
15760 +
15761 + popq %rdi
15762 + pax_force_retaddr
15763 + retq
15764 +
15765 +#ifdef CONFIG_PAX_KERNEXEC
15766 +2: GET_CR0_INTO_RDI
15767 + btr $X86_CR0_WP_BIT,%rdi
15768 + jnc 4f
15769 + ljmpq __KERNEL_CS,3f
15770 +3: SET_RDI_INTO_CR0
15771 + jmp 1b
15772 +4: ud2
15773 + jmp 4b
15774 +#endif
15775 +ENDPROC(pax_exit_kernel)
15776 +#endif
15777 +
15778 + .macro pax_enter_kernel_user
15779 + pax_set_fptr_mask
15780 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15781 + call pax_enter_kernel_user
15782 +#endif
15783 + .endm
15784 +
15785 + .macro pax_exit_kernel_user
15786 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15787 + call pax_exit_kernel_user
15788 +#endif
15789 +#ifdef CONFIG_PAX_RANDKSTACK
15790 + pushq %rax
15791 + pushq %r11
15792 + call pax_randomize_kstack
15793 + popq %r11
15794 + popq %rax
15795 +#endif
15796 + .endm
15797 +
15798 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15799 +ENTRY(pax_enter_kernel_user)
15800 + pushq %rdi
15801 + pushq %rbx
15802 +
15803 +#ifdef CONFIG_PARAVIRT
15804 + PV_SAVE_REGS(CLBR_RDI)
15805 +#endif
15806 +
15807 + ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID
15808 + GET_CR3_INTO_RDI
15809 + cmp $1,%dil
15810 + jnz 4f
15811 + sub $4097,%rdi
15812 + bts $63,%rdi
15813 + SET_RDI_INTO_CR3
15814 + jmp 3f
15815 +111:
15816 +
15817 + GET_CR3_INTO_RDI
15818 + mov %rdi,%rbx
15819 + add $__START_KERNEL_map,%rbx
15820 + sub phys_base(%rip),%rbx
15821 +
15822 +#ifdef CONFIG_PARAVIRT
15823 + cmpl $0, pv_info+PARAVIRT_enabled
15824 + jz 1f
15825 + pushq %rdi
15826 + i = 0
15827 + .rept USER_PGD_PTRS
15828 + mov i*8(%rbx),%rsi
15829 + mov $0,%sil
15830 + lea i*8(%rbx),%rdi
15831 + call PARA_INDIRECT(pv_mmu_ops+PV_MMU_set_pgd_batched)
15832 + i = i + 1
15833 + .endr
15834 + popq %rdi
15835 + jmp 2f
15836 +1:
15837 +#endif
15838 +
15839 + i = 0
15840 + .rept USER_PGD_PTRS
15841 + movb $0,i*8(%rbx)
15842 + i = i + 1
15843 + .endr
15844 +
15845 +2: SET_RDI_INTO_CR3
15846 +
15847 +#ifdef CONFIG_PAX_KERNEXEC
15848 + GET_CR0_INTO_RDI
15849 + bts $X86_CR0_WP_BIT,%rdi
15850 + SET_RDI_INTO_CR0
15851 +#endif
15852 +
15853 +3:
15854 +
15855 +#ifdef CONFIG_PARAVIRT
15856 + PV_RESTORE_REGS(CLBR_RDI)
15857 +#endif
15858 +
15859 + popq %rbx
15860 + popq %rdi
15861 + pax_force_retaddr
15862 + retq
15863 +4: ud2
15864 +ENDPROC(pax_enter_kernel_user)
15865 +
15866 +ENTRY(pax_exit_kernel_user)
15867 + pushq %rdi
15868 + pushq %rbx
15869 +
15870 +#ifdef CONFIG_PARAVIRT
15871 + PV_SAVE_REGS(CLBR_RDI)
15872 +#endif
15873 +
15874 + GET_CR3_INTO_RDI
15875 + ALTERNATIVE "jmp 1f", "", X86_FEATURE_PCID
15876 + cmp $0,%dil
15877 + jnz 3f
15878 + add $4097,%rdi
15879 + bts $63,%rdi
15880 + SET_RDI_INTO_CR3
15881 + jmp 2f
15882 +1:
15883 +
15884 + mov %rdi,%rbx
15885 +
15886 +#ifdef CONFIG_PAX_KERNEXEC
15887 + GET_CR0_INTO_RDI
15888 + btr $X86_CR0_WP_BIT,%rdi
15889 + jnc 3f
15890 + SET_RDI_INTO_CR0
15891 +#endif
15892 +
15893 + add $__START_KERNEL_map,%rbx
15894 + sub phys_base(%rip),%rbx
15895 +
15896 +#ifdef CONFIG_PARAVIRT
15897 + cmpl $0, pv_info+PARAVIRT_enabled
15898 + jz 1f
15899 + i = 0
15900 + .rept USER_PGD_PTRS
15901 + mov i*8(%rbx),%rsi
15902 + mov $0x67,%sil
15903 + lea i*8(%rbx),%rdi
15904 + call PARA_INDIRECT(pv_mmu_ops+PV_MMU_set_pgd_batched)
15905 + i = i + 1
15906 + .endr
15907 + jmp 2f
15908 +1:
15909 +#endif
15910 +
15911 + i = 0
15912 + .rept USER_PGD_PTRS
15913 + movb $0x67,i*8(%rbx)
15914 + i = i + 1
15915 + .endr
15916 +2:
15917 +
15918 +#ifdef CONFIG_PARAVIRT
15919 + PV_RESTORE_REGS(CLBR_RDI)
15920 +#endif
15921 +
15922 + popq %rbx
15923 + popq %rdi
15924 + pax_force_retaddr
15925 + retq
15926 +3: ud2
15927 +ENDPROC(pax_exit_kernel_user)
15928 +#endif
15929 +
15930 + .macro pax_enter_kernel_nmi
15931 + pax_set_fptr_mask
15932 +
15933 +#ifdef CONFIG_PAX_KERNEXEC
15934 + GET_CR0_INTO_RDI
15935 + bts $X86_CR0_WP_BIT,%rdi
15936 + jc 110f
15937 + SET_RDI_INTO_CR0
15938 + or $2,%ebx
15939 +110:
15940 +#endif
15941 +
15942 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15943 + ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID
15944 + GET_CR3_INTO_RDI
15945 + cmp $0,%dil
15946 + jz 111f
15947 + sub $4097,%rdi
15948 + or $4,%ebx
15949 + bts $63,%rdi
15950 + SET_RDI_INTO_CR3
15951 + mov $__UDEREF_KERNEL_DS,%edi
15952 + mov %edi,%ss
15953 +111:
15954 +#endif
15955 + .endm
15956 +
15957 + .macro pax_exit_kernel_nmi
15958 +#ifdef CONFIG_PAX_KERNEXEC
15959 + btr $1,%ebx
15960 + jnc 110f
15961 + GET_CR0_INTO_RDI
15962 + btr $X86_CR0_WP_BIT,%rdi
15963 + SET_RDI_INTO_CR0
15964 +110:
15965 +#endif
15966 +
15967 +#ifdef CONFIG_PAX_MEMORY_UDEREF
15968 + ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID
15969 + btr $2,%ebx
15970 + jnc 111f
15971 + GET_CR3_INTO_RDI
15972 + add $4097,%rdi
15973 + bts $63,%rdi
15974 + SET_RDI_INTO_CR3
15975 + mov $__KERNEL_DS,%edi
15976 + mov %edi,%ss
15977 +111:
15978 +#endif
15979 + .endm
15980 +
15981 + .macro pax_erase_kstack
15982 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
15983 + call pax_erase_kstack
15984 +#endif
15985 + .endm
15986 +
15987 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
15988 +ENTRY(pax_erase_kstack)
15989 + pushq %rdi
15990 + pushq %rcx
15991 + pushq %rax
15992 + pushq %r11
15993 +
15994 + GET_THREAD_INFO(%r11)
15995 + mov TI_lowest_stack(%r11), %rdi
15996 + mov $-0xBEEF, %rax
15997 + std
15998 +
15999 +1: mov %edi, %ecx
16000 + and $THREAD_SIZE_asm - 1, %ecx
16001 + shr $3, %ecx
16002 + repne scasq
16003 + jecxz 2f
16004 +
16005 + cmp $2*8, %ecx
16006 + jc 2f
16007 +
16008 + mov $2*8, %ecx
16009 + repe scasq
16010 + jecxz 2f
16011 + jne 1b
16012 +
16013 +2: cld
16014 + or $2*8, %rdi
16015 + mov %esp, %ecx
16016 + sub %edi, %ecx
16017 +
16018 + cmp $THREAD_SIZE_asm, %rcx
16019 + jb 3f
16020 + ud2
16021 +3:
16022 +
16023 + shr $3, %ecx
16024 + rep stosq
16025 +
16026 + mov TI_task_thread_sp0(%r11), %rdi
16027 + sub $256, %rdi
16028 + mov %rdi, TI_lowest_stack(%r11)
16029 +
16030 + popq %r11
16031 + popq %rax
16032 + popq %rcx
16033 + popq %rdi
16034 + pax_force_retaddr
16035 + ret
16036 +ENDPROC(pax_erase_kstack)
16037 +#endif
16038 +
16039 .macro TRACE_IRQS_IRETQ
16040 #ifdef CONFIG_TRACE_IRQFLAGS
16041 bt $9, EFLAGS(%rsp) /* interrupts off? */
16042 @@ -89,7 +487,7 @@ ENDPROC(native_usergs_sysret64)
16043 .endm
16044
16045 .macro TRACE_IRQS_IRETQ_DEBUG
16046 - bt $9, EFLAGS(%rsp) /* interrupts off? */
16047 + bt $X86_EFLAGS_IF_BIT, EFLAGS(%rsp) /* interrupts off? */
16048 jnc 1f
16049 TRACE_IRQS_ON_DEBUG
16050 1:
16051 @@ -149,14 +547,6 @@ GLOBAL(entry_SYSCALL_64_after_swapgs)
16052 /* Construct struct pt_regs on stack */
16053 pushq $__USER_DS /* pt_regs->ss */
16054 pushq PER_CPU_VAR(rsp_scratch) /* pt_regs->sp */
16055 - /*
16056 - * Re-enable interrupts.
16057 - * We use 'rsp_scratch' as a scratch space, hence irq-off block above
16058 - * must execute atomically in the face of possible interrupt-driven
16059 - * task preemption. We must enable interrupts only after we're done
16060 - * with using rsp_scratch:
16061 - */
16062 - ENABLE_INTERRUPTS(CLBR_NONE)
16063 pushq %r11 /* pt_regs->flags */
16064 pushq $__USER_CS /* pt_regs->cs */
16065 pushq %rcx /* pt_regs->ip */
16066 @@ -172,7 +562,27 @@ GLOBAL(entry_SYSCALL_64_after_swapgs)
16067 pushq %r11 /* pt_regs->r11 */
16068 sub $(6*8), %rsp /* pt_regs->bp, bx, r12-15 not saved */
16069
16070 - testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16071 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
16072 + movq %r12, R12(%rsp)
16073 +#endif
16074 +
16075 + pax_enter_kernel_user
16076 +
16077 +#ifdef CONFIG_PAX_RANDKSTACK
16078 + pax_erase_kstack
16079 +#endif
16080 +
16081 + /*
16082 + * Re-enable interrupts.
16083 + * We use 'rsp_scratch' as a scratch space, hence irq-off block above
16084 + * must execute atomically in the face of possible interrupt-driven
16085 + * task preemption. We must enable interrupts only after we're done
16086 + * with using rsp_scratch:
16087 + */
16088 + ENABLE_INTERRUPTS(CLBR_NONE)
16089 +
16090 + GET_THREAD_INFO(%rcx)
16091 + testl $_TIF_WORK_SYSCALL_ENTRY, TI_flags(%rcx)
16092 jnz tracesys
16093 entry_SYSCALL_64_fastpath:
16094 #if __SYSCALL_MASK == ~0
16095 @@ -205,9 +615,13 @@ entry_SYSCALL_64_fastpath:
16096 * flags (TIF_NOTIFY_RESUME, TIF_USER_RETURN_NOTIFY, etc) set is
16097 * very bad.
16098 */
16099 - testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16100 + GET_THREAD_INFO(%rcx)
16101 + testl $_TIF_ALLWORK_MASK, TI_flags(%rcx)
16102 jnz int_ret_from_sys_call_irqs_off /* Go to the slow path */
16103
16104 + pax_exit_kernel_user
16105 + pax_erase_kstack
16106 +
16107 RESTORE_C_REGS_EXCEPT_RCX_R11
16108 movq RIP(%rsp), %rcx
16109 movq EFLAGS(%rsp), %r11
16110 @@ -236,6 +650,9 @@ tracesys:
16111 call syscall_trace_enter_phase1
16112 test %rax, %rax
16113 jnz tracesys_phase2 /* if needed, run the slow path */
16114 +
16115 + pax_erase_kstack
16116 +
16117 RESTORE_C_REGS_EXCEPT_RAX /* else restore clobbered regs */
16118 movq ORIG_RAX(%rsp), %rax
16119 jmp entry_SYSCALL_64_fastpath /* and return to the fast path */
16120 @@ -247,6 +664,8 @@ tracesys_phase2:
16121 movq %rax, %rdx
16122 call syscall_trace_enter_phase2
16123
16124 + pax_erase_kstack
16125 +
16126 /*
16127 * Reload registers from stack in case ptrace changed them.
16128 * We don't reload %rax because syscall_trace_entry_phase2() returned
16129 @@ -284,6 +703,8 @@ GLOBAL(int_with_check)
16130 andl %edi, %edx
16131 jnz int_careful
16132 andl $~TS_COMPAT, TI_status(%rcx)
16133 + pax_exit_kernel_user
16134 + pax_erase_kstack
16135 jmp syscall_return
16136
16137 /*
16138 @@ -407,14 +828,14 @@ syscall_return_via_sysret:
16139 opportunistic_sysret_failed:
16140 SWAPGS
16141 jmp restore_c_regs_and_iret
16142 -END(entry_SYSCALL_64)
16143 +ENDPROC(entry_SYSCALL_64)
16144
16145
16146 .macro FORK_LIKE func
16147 ENTRY(stub_\func)
16148 SAVE_EXTRA_REGS 8
16149 jmp sys_\func
16150 -END(stub_\func)
16151 +ENDPROC(stub_\func)
16152 .endm
16153
16154 FORK_LIKE clone
16155 @@ -434,7 +855,7 @@ return_from_execve:
16156 ZERO_EXTRA_REGS
16157 movq %rax, RAX(%rsp)
16158 jmp int_ret_from_sys_call
16159 -END(stub_execve)
16160 +ENDPROC(stub_execve)
16161 /*
16162 * Remaining execve stubs are only 7 bytes long.
16163 * ENTRY() often aligns to 16 bytes, which in this case has no benefits.
16164 @@ -443,7 +864,7 @@ END(stub_execve)
16165 GLOBAL(stub_execveat)
16166 call sys_execveat
16167 jmp return_from_execve
16168 -END(stub_execveat)
16169 +ENDPROC(stub_execveat)
16170
16171 #if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION)
16172 .align 8
16173 @@ -451,15 +872,15 @@ GLOBAL(stub_x32_execve)
16174 GLOBAL(stub32_execve)
16175 call compat_sys_execve
16176 jmp return_from_execve
16177 -END(stub32_execve)
16178 -END(stub_x32_execve)
16179 +ENDPROC(stub32_execve)
16180 +ENDPROC(stub_x32_execve)
16181 .align 8
16182 GLOBAL(stub_x32_execveat)
16183 GLOBAL(stub32_execveat)
16184 call compat_sys_execveat
16185 jmp return_from_execve
16186 -END(stub32_execveat)
16187 -END(stub_x32_execveat)
16188 +ENDPROC(stub32_execveat)
16189 +ENDPROC(stub_x32_execveat)
16190 #endif
16191
16192 /*
16193 @@ -488,7 +909,7 @@ ENTRY(stub_x32_rt_sigreturn)
16194 SAVE_EXTRA_REGS 8
16195 call sys32_x32_rt_sigreturn
16196 jmp return_from_stub
16197 -END(stub_x32_rt_sigreturn)
16198 +ENDPROC(stub_x32_rt_sigreturn)
16199 #endif
16200
16201 /*
16202 @@ -527,7 +948,7 @@ ENTRY(ret_from_fork)
16203 movl $0, RAX(%rsp)
16204 RESTORE_EXTRA_REGS
16205 jmp int_ret_from_sys_call
16206 -END(ret_from_fork)
16207 +ENDPROC(ret_from_fork)
16208
16209 /*
16210 * Build the entry stubs with some assembler magic.
16211 @@ -542,7 +963,7 @@ ENTRY(irq_entries_start)
16212 jmp common_interrupt
16213 .align 8
16214 .endr
16215 -END(irq_entries_start)
16216 +ENDPROC(irq_entries_start)
16217
16218 /*
16219 * Interrupt entry/exit.
16220 @@ -555,21 +976,13 @@ END(irq_entries_start)
16221 /* 0(%rsp): ~(interrupt number) */
16222 .macro interrupt func
16223 cld
16224 - /*
16225 - * Since nothing in interrupt handling code touches r12...r15 members
16226 - * of "struct pt_regs", and since interrupts can nest, we can save
16227 - * four stack slots and simultaneously provide
16228 - * an unwind-friendly stack layout by saving "truncated" pt_regs
16229 - * exactly up to rbp slot, without these members.
16230 - */
16231 - ALLOC_PT_GPREGS_ON_STACK -RBP
16232 - SAVE_C_REGS -RBP
16233 - /* this goes to 0(%rsp) for unwinder, not for saving the value: */
16234 - SAVE_EXTRA_REGS_RBP -RBP
16235 + ALLOC_PT_GPREGS_ON_STACK
16236 + SAVE_C_REGS
16237 + SAVE_EXTRA_REGS
16238
16239 - leaq -RBP(%rsp), %rdi /* arg1 for \func (pointer to pt_regs) */
16240 + movq %rsp, %rdi /* arg1 for \func (pointer to pt_regs) */
16241
16242 - testb $3, CS-RBP(%rsp)
16243 + testb $3, CS(%rsp)
16244 jz 1f
16245 SWAPGS
16246 1:
16247 @@ -584,6 +997,18 @@ END(irq_entries_start)
16248 incl PER_CPU_VAR(irq_count)
16249 cmovzq PER_CPU_VAR(irq_stack_ptr), %rsp
16250 pushq %rsi
16251 +
16252 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16253 + testb $3, CS(%rdi)
16254 + jnz 1f
16255 + pax_enter_kernel
16256 + jmp 2f
16257 +1: pax_enter_kernel_user
16258 +2:
16259 +#else
16260 + pax_enter_kernel
16261 +#endif
16262 +
16263 /* We entered an interrupt context - irqs are off: */
16264 TRACE_IRQS_OFF
16265
16266 @@ -608,7 +1033,7 @@ ret_from_intr:
16267 /* Restore saved previous stack */
16268 popq %rsi
16269 /* return code expects complete pt_regs - adjust rsp accordingly: */
16270 - leaq -RBP(%rsi), %rsp
16271 + movq %rsi, %rsp
16272
16273 testb $3, CS(%rsp)
16274 jz retint_kernel
16275 @@ -630,6 +1055,8 @@ retint_swapgs: /* return to user-space */
16276 * The iretq could re-enable interrupts:
16277 */
16278 DISABLE_INTERRUPTS(CLBR_ANY)
16279 + pax_exit_kernel_user
16280 +# pax_erase_kstack
16281 TRACE_IRQS_IRETQ
16282
16283 SWAPGS
16284 @@ -648,6 +1075,21 @@ retint_kernel:
16285 jmp 0b
16286 1:
16287 #endif
16288 +
16289 + pax_exit_kernel
16290 +
16291 +#if defined(CONFIG_EFI) && defined(CONFIG_PAX_KERNEXEC)
16292 + /* This is a quirk to allow IRQs/NMIs/MCEs during early EFI setup,
16293 + * namely calling EFI runtime services with a phys mapping. We're
16294 + * starting off with NOPs and patch in the real instrumentation
16295 + * (BTS/OR) before starting any userland process; even before starting
16296 + * up the APs.
16297 + */
16298 + ALTERNATIVE "", "pax_force_retaddr 16*8", X86_FEATURE_ALWAYS
16299 +#else
16300 + pax_force_retaddr RIP
16301 +#endif
16302 +
16303 /*
16304 * The iretq could re-enable interrupts:
16305 */
16306 @@ -689,15 +1131,15 @@ native_irq_return_ldt:
16307 SWAPGS
16308 movq PER_CPU_VAR(espfix_waddr), %rdi
16309 movq %rax, (0*8)(%rdi) /* RAX */
16310 - movq (2*8)(%rsp), %rax /* RIP */
16311 + movq (2*8 + RIP-RIP)(%rsp), %rax /* RIP */
16312 movq %rax, (1*8)(%rdi)
16313 - movq (3*8)(%rsp), %rax /* CS */
16314 + movq (2*8 + CS-RIP)(%rsp), %rax /* CS */
16315 movq %rax, (2*8)(%rdi)
16316 - movq (4*8)(%rsp), %rax /* RFLAGS */
16317 + movq (2*8 + EFLAGS-RIP)(%rsp), %rax /* RFLAGS */
16318 movq %rax, (3*8)(%rdi)
16319 - movq (6*8)(%rsp), %rax /* SS */
16320 + movq (2*8 + SS-RIP)(%rsp), %rax /* SS */
16321 movq %rax, (5*8)(%rdi)
16322 - movq (5*8)(%rsp), %rax /* RSP */
16323 + movq (2*8 + RSP-RIP)(%rsp), %rax /* RSP */
16324 movq %rax, (4*8)(%rdi)
16325 andl $0xffff0000, %eax
16326 popq %rdi
16327 @@ -738,7 +1180,7 @@ retint_signal:
16328 GET_THREAD_INFO(%rcx)
16329 jmp retint_with_reschedule
16330
16331 -END(common_interrupt)
16332 +ENDPROC(common_interrupt)
16333
16334 /*
16335 * APIC interrupts.
16336 @@ -750,7 +1192,7 @@ ENTRY(\sym)
16337 .Lcommon_\sym:
16338 interrupt \do_sym
16339 jmp ret_from_intr
16340 -END(\sym)
16341 +ENDPROC(\sym)
16342 .endm
16343
16344 #ifdef CONFIG_TRACING
16345 @@ -815,7 +1257,7 @@ apicinterrupt IRQ_WORK_VECTOR irq_work_interrupt smp_irq_work_interrupt
16346 /*
16347 * Exception entry points.
16348 */
16349 -#define CPU_TSS_IST(x) PER_CPU_VAR(cpu_tss) + (TSS_ist + ((x) - 1) * 8)
16350 +#define CPU_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r13)
16351
16352 .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1
16353 ENTRY(\sym)
16354 @@ -862,6 +1304,12 @@ ENTRY(\sym)
16355 .endif
16356
16357 .if \shift_ist != -1
16358 +#ifdef CONFIG_SMP
16359 + imul $TSS_size, PER_CPU_VAR(cpu_number), %r13d
16360 + lea cpu_tss(%r13), %r13
16361 +#else
16362 + lea cpu_tss(%rip), %r13
16363 +#endif
16364 subq $EXCEPTION_STKSZ, CPU_TSS_IST(\shift_ist)
16365 .endif
16366
16367 @@ -905,7 +1353,7 @@ ENTRY(\sym)
16368
16369 jmp error_exit /* %ebx: no swapgs flag */
16370 .endif
16371 -END(\sym)
16372 +ENDPROC(\sym)
16373 .endm
16374
16375 #ifdef CONFIG_TRACING
16376 @@ -947,8 +1395,9 @@ gs_change:
16377 2: mfence /* workaround */
16378 SWAPGS
16379 popfq
16380 + pax_force_retaddr
16381 ret
16382 -END(native_load_gs_index)
16383 +ENDPROC(native_load_gs_index)
16384
16385 _ASM_EXTABLE(gs_change, bad_gs)
16386 .section .fixup, "ax"
16387 @@ -970,8 +1419,9 @@ ENTRY(do_softirq_own_stack)
16388 call __do_softirq
16389 leaveq
16390 decl PER_CPU_VAR(irq_count)
16391 + pax_force_retaddr
16392 ret
16393 -END(do_softirq_own_stack)
16394 +ENDPROC(do_softirq_own_stack)
16395
16396 #ifdef CONFIG_XEN
16397 idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
16398 @@ -1007,7 +1457,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */
16399 call xen_maybe_preempt_hcall
16400 #endif
16401 jmp error_exit
16402 -END(xen_do_hypervisor_callback)
16403 +ENDPROC(xen_do_hypervisor_callback)
16404
16405 /*
16406 * Hypervisor uses this for application faults while it executes.
16407 @@ -1052,7 +1502,7 @@ ENTRY(xen_failsafe_callback)
16408 SAVE_C_REGS
16409 SAVE_EXTRA_REGS
16410 jmp error_exit
16411 -END(xen_failsafe_callback)
16412 +ENDPROC(xen_failsafe_callback)
16413
16414 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
16415 xen_hvm_callback_vector xen_evtchn_do_upcall
16416 @@ -1101,8 +1551,36 @@ ENTRY(paranoid_entry)
16417 js 1f /* negative -> in kernel */
16418 SWAPGS
16419 xorl %ebx, %ebx
16420 -1: ret
16421 -END(paranoid_entry)
16422 +1:
16423 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16424 + testb $3, CS+8(%rsp)
16425 + jnz 1f
16426 + pax_enter_kernel
16427 + jmp 2f
16428 +1: pax_enter_kernel_user
16429 +2:
16430 +#else
16431 + pax_enter_kernel
16432 +#endif
16433 + pax_force_retaddr
16434 + ret
16435 +ENDPROC(paranoid_entry)
16436 +
16437 +ENTRY(paranoid_entry_nmi)
16438 + cld
16439 + SAVE_C_REGS 8
16440 + SAVE_EXTRA_REGS 8
16441 + movl $1, %ebx
16442 + movl $MSR_GS_BASE, %ecx
16443 + rdmsr
16444 + testl %edx, %edx
16445 + js 1f /* negative -> in kernel */
16446 + SWAPGS
16447 + xorl %ebx, %ebx
16448 +1: pax_enter_kernel_nmi
16449 + pax_force_retaddr
16450 + ret
16451 +ENDPROC(paranoid_entry_nmi)
16452
16453 /*
16454 * "Paranoid" exit path from exception stack. This is invoked
16455 @@ -1119,19 +1597,26 @@ END(paranoid_entry)
16456 ENTRY(paranoid_exit)
16457 DISABLE_INTERRUPTS(CLBR_NONE)
16458 TRACE_IRQS_OFF_DEBUG
16459 - testl %ebx, %ebx /* swapgs needed? */
16460 + testl $1, %ebx /* swapgs needed? */
16461 jnz paranoid_exit_no_swapgs
16462 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16463 + pax_exit_kernel_user
16464 +#else
16465 + pax_exit_kernel
16466 +#endif
16467 TRACE_IRQS_IRETQ
16468 SWAPGS_UNSAFE_STACK
16469 jmp paranoid_exit_restore
16470 paranoid_exit_no_swapgs:
16471 + pax_exit_kernel
16472 TRACE_IRQS_IRETQ_DEBUG
16473 paranoid_exit_restore:
16474 RESTORE_EXTRA_REGS
16475 RESTORE_C_REGS
16476 REMOVE_PT_GPREGS_FROM_STACK 8
16477 + pax_force_retaddr_bts
16478 INTERRUPT_RETURN
16479 -END(paranoid_exit)
16480 +ENDPROC(paranoid_exit)
16481
16482 /*
16483 * Save all registers in pt_regs, and switch gs if needed.
16484 @@ -1149,7 +1634,18 @@ ENTRY(error_entry)
16485 SWAPGS
16486
16487 error_entry_done:
16488 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16489 + testb $3, CS+8(%rsp)
16490 + jnz 1f
16491 + pax_enter_kernel
16492 + jmp 2f
16493 +1: pax_enter_kernel_user
16494 +2:
16495 +#else
16496 + pax_enter_kernel
16497 +#endif
16498 TRACE_IRQS_OFF
16499 + pax_force_retaddr
16500 ret
16501
16502 /*
16503 @@ -1199,7 +1695,7 @@ error_bad_iret:
16504 mov %rax, %rsp
16505 decl %ebx
16506 jmp error_entry_done
16507 -END(error_entry)
16508 +ENDPROC(error_entry)
16509
16510
16511 /*
16512 @@ -1212,10 +1708,10 @@ ENTRY(error_exit)
16513 RESTORE_EXTRA_REGS
16514 DISABLE_INTERRUPTS(CLBR_NONE)
16515 TRACE_IRQS_OFF
16516 - testl %eax, %eax
16517 + testl $1, %eax
16518 jnz retint_kernel
16519 jmp retint_user
16520 -END(error_exit)
16521 +ENDPROC(error_exit)
16522
16523 /* Runs on exception stack */
16524 ENTRY(nmi)
16525 @@ -1258,6 +1754,8 @@ ENTRY(nmi)
16526 * other IST entries.
16527 */
16528
16529 + ASM_CLAC
16530 +
16531 /* Use %rdx as our temp variable throughout */
16532 pushq %rdx
16533
16534 @@ -1298,6 +1796,12 @@ ENTRY(nmi)
16535 pushq %r14 /* pt_regs->r14 */
16536 pushq %r15 /* pt_regs->r15 */
16537
16538 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
16539 + xorl %ebx, %ebx
16540 +#endif
16541 +
16542 + pax_enter_kernel_nmi
16543 +
16544 /*
16545 * At this point we no longer need to worry about stack damage
16546 * due to nesting -- we're on the normal thread stack and we're
16547 @@ -1308,12 +1812,19 @@ ENTRY(nmi)
16548 movq $-1, %rsi
16549 call do_nmi
16550
16551 + pax_exit_kernel_nmi
16552 +
16553 /*
16554 * Return back to user mode. We must *not* do the normal exit
16555 * work, because we don't want to enable interrupts. Fortunately,
16556 * do_nmi doesn't modify pt_regs.
16557 */
16558 SWAPGS
16559 +
16560 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
16561 + movq RBX(%rsp), %rbx
16562 +#endif
16563 +
16564 jmp restore_c_regs_and_iret
16565
16566 .Lnmi_from_kernel:
16567 @@ -1435,6 +1946,7 @@ nested_nmi_out:
16568 popq %rdx
16569
16570 /* We are returning to kernel mode, so this cannot result in a fault. */
16571 +# pax_force_retaddr_bts
16572 INTERRUPT_RETURN
16573
16574 first_nmi:
16575 @@ -1508,20 +2020,22 @@ end_repeat_nmi:
16576 ALLOC_PT_GPREGS_ON_STACK
16577
16578 /*
16579 - * Use paranoid_entry to handle SWAPGS, but no need to use paranoid_exit
16580 + * Use paranoid_entry_nmi to handle SWAPGS, but no need to use paranoid_exit
16581 * as we should not be calling schedule in NMI context.
16582 * Even with normal interrupts enabled. An NMI should not be
16583 * setting NEED_RESCHED or anything that normal interrupts and
16584 * exceptions might do.
16585 */
16586 - call paranoid_entry
16587 + call paranoid_entry_nmi
16588
16589 /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
16590 movq %rsp, %rdi
16591 movq $-1, %rsi
16592 call do_nmi
16593
16594 - testl %ebx, %ebx /* swapgs needed? */
16595 + pax_exit_kernel_nmi
16596 +
16597 + testl $1, %ebx /* swapgs needed? */
16598 jnz nmi_restore
16599 nmi_swapgs:
16600 SWAPGS_UNSAFE_STACK
16601 @@ -1532,6 +2046,8 @@ nmi_restore:
16602 /* Point RSP at the "iret" frame. */
16603 REMOVE_PT_GPREGS_FROM_STACK 6*8
16604
16605 + pax_force_retaddr_bts
16606 +
16607 /*
16608 * Clear "NMI executing". Set DF first so that we can easily
16609 * distinguish the remaining code between here and IRET from
16610 @@ -1549,9 +2065,9 @@ nmi_restore:
16611 * mode, so this cannot result in a fault.
16612 */
16613 INTERRUPT_RETURN
16614 -END(nmi)
16615 +ENDPROC(nmi)
16616
16617 ENTRY(ignore_sysret)
16618 mov $-ENOSYS, %eax
16619 sysret
16620 -END(ignore_sysret)
16621 +ENDPROC(ignore_sysret)
16622 diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S
16623 index a7e257d..3a6ad23 100644
16624 --- a/arch/x86/entry/entry_64_compat.S
16625 +++ b/arch/x86/entry/entry_64_compat.S
16626 @@ -13,8 +13,10 @@
16627 #include <asm/irqflags.h>
16628 #include <asm/asm.h>
16629 #include <asm/smap.h>
16630 +#include <asm/pgtable.h>
16631 #include <linux/linkage.h>
16632 #include <linux/err.h>
16633 +#include <asm/alternative-asm.h>
16634
16635 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
16636 #include <linux/elf-em.h>
16637 @@ -35,6 +37,32 @@ ENTRY(native_usergs_sysret32)
16638 ENDPROC(native_usergs_sysret32)
16639 #endif
16640
16641 + .macro pax_enter_kernel_user
16642 + pax_set_fptr_mask
16643 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16644 + call pax_enter_kernel_user
16645 +#endif
16646 + .endm
16647 +
16648 + .macro pax_exit_kernel_user
16649 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16650 + call pax_exit_kernel_user
16651 +#endif
16652 +#ifdef CONFIG_PAX_RANDKSTACK
16653 + pushq %rax
16654 + pushq %r11
16655 + call pax_randomize_kstack
16656 + popq %r11
16657 + popq %rax
16658 +#endif
16659 + .endm
16660 +
16661 + .macro pax_erase_kstack
16662 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
16663 + call pax_erase_kstack
16664 +#endif
16665 + .endm
16666 +
16667 /*
16668 * 32-bit SYSENTER instruction entry.
16669 *
16670 @@ -65,20 +93,21 @@ ENTRY(entry_SYSENTER_compat)
16671 */
16672 SWAPGS_UNSAFE_STACK
16673 movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
16674 - ENABLE_INTERRUPTS(CLBR_NONE)
16675
16676 /* Zero-extending 32-bit regs, do not remove */
16677 movl %ebp, %ebp
16678 movl %eax, %eax
16679
16680 - movl ASM_THREAD_INFO(TI_sysenter_return, %rsp, 0), %r10d
16681 + GET_THREAD_INFO(%r11)
16682 + movl TI_sysenter_return(%r11), %r11d
16683
16684 /* Construct struct pt_regs on stack */
16685 pushq $__USER32_DS /* pt_regs->ss */
16686 pushq %rbp /* pt_regs->sp */
16687 pushfq /* pt_regs->flags */
16688 + orl $X86_EFLAGS_IF,(%rsp)
16689 pushq $__USER32_CS /* pt_regs->cs */
16690 - pushq %r10 /* pt_regs->ip = thread_info->sysenter_return */
16691 + pushq %r11 /* pt_regs->ip = thread_info->sysenter_return */
16692 pushq %rax /* pt_regs->orig_ax */
16693 pushq %rdi /* pt_regs->di */
16694 pushq %rsi /* pt_regs->si */
16695 @@ -88,15 +117,37 @@ ENTRY(entry_SYSENTER_compat)
16696 cld
16697 sub $(10*8), %rsp /* pt_regs->r8-11, bp, bx, r12-15 not saved */
16698
16699 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
16700 + movq %r12, R12(%rsp)
16701 +#endif
16702 +
16703 + pax_enter_kernel_user
16704 +
16705 +#ifdef CONFIG_PAX_RANDKSTACK
16706 + pax_erase_kstack
16707 +#endif
16708 +
16709 + ENABLE_INTERRUPTS(CLBR_NONE)
16710 +
16711 /*
16712 * no need to do an access_ok check here because rbp has been
16713 * 32-bit zero extended
16714 */
16715 +
16716 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16717 + addq pax_user_shadow_base, %rbp
16718 + ASM_PAX_OPEN_USERLAND
16719 +#endif
16720 +
16721 ASM_STAC
16722 1: movl (%rbp), %ebp
16723 _ASM_EXTABLE(1b, ia32_badarg)
16724 ASM_CLAC
16725
16726 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16727 + ASM_PAX_CLOSE_USERLAND
16728 +#endif
16729 +
16730 /*
16731 * Sysenter doesn't filter flags, so we need to clear NT
16732 * ourselves. To save a few cycles, we can check whether
16733 @@ -106,8 +157,9 @@ ENTRY(entry_SYSENTER_compat)
16734 jnz sysenter_fix_flags
16735 sysenter_flags_fixed:
16736
16737 - orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
16738 - testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16739 + GET_THREAD_INFO(%r11)
16740 + orl $TS_COMPAT, TI_status(%r11)
16741 + testl $_TIF_WORK_SYSCALL_ENTRY, TI_flags(%r11)
16742 jnz sysenter_tracesys
16743
16744 sysenter_do_call:
16745 @@ -123,9 +175,10 @@ sysenter_dispatch:
16746 call *ia32_sys_call_table(, %rax, 8)
16747 movq %rax, RAX(%rsp)
16748 1:
16749 + GET_THREAD_INFO(%r11)
16750 DISABLE_INTERRUPTS(CLBR_NONE)
16751 TRACE_IRQS_OFF
16752 - testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16753 + testl $_TIF_ALLWORK_MASK, TI_flags(%r11)
16754 jnz sysexit_audit
16755 sysexit_from_sys_call:
16756 /*
16757 @@ -138,7 +191,9 @@ sysexit_from_sys_call:
16758 * This code path is still called 'sysexit' because it pairs
16759 * with 'sysenter' and it uses the SYSENTER calling convention.
16760 */
16761 - andl $~TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
16762 + pax_exit_kernel_user
16763 + pax_erase_kstack
16764 + andl $~TS_COMPAT, TI_status(%r11)
16765 movl RIP(%rsp), %ecx /* User %eip */
16766 movq RAX(%rsp), %rax
16767 RESTORE_RSI_RDI
16768 @@ -194,6 +249,8 @@ sysexit_from_sys_call:
16769 movl %eax, %edi /* arg1 (RDI) <= syscall number (EAX) */
16770 call __audit_syscall_entry
16771
16772 + pax_erase_kstack
16773 +
16774 /*
16775 * We are going to jump back to the syscall dispatch code.
16776 * Prepare syscall args as required by the 64-bit C ABI.
16777 @@ -209,7 +266,7 @@ sysexit_from_sys_call:
16778 .endm
16779
16780 .macro auditsys_exit exit
16781 - testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16782 + testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), TI_flags(%r11)
16783 jnz ia32_ret_from_sys_call
16784 TRACE_IRQS_ON
16785 ENABLE_INTERRUPTS(CLBR_NONE)
16786 @@ -220,10 +277,11 @@ sysexit_from_sys_call:
16787 1: setbe %al /* 1 if error, 0 if not */
16788 movzbl %al, %edi /* zero-extend that into %edi */
16789 call __audit_syscall_exit
16790 + GET_THREAD_INFO(%r11)
16791 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %edi
16792 DISABLE_INTERRUPTS(CLBR_NONE)
16793 TRACE_IRQS_OFF
16794 - testl %edi, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16795 + testl %edi, TI_flags(%r11)
16796 jz \exit
16797 xorl %eax, %eax /* Do not leak kernel information */
16798 movq %rax, R11(%rsp)
16799 @@ -249,7 +307,7 @@ sysenter_fix_flags:
16800
16801 sysenter_tracesys:
16802 #ifdef CONFIG_AUDITSYSCALL
16803 - testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16804 + testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), TI_flags(%r11)
16805 jz sysenter_auditsys
16806 #endif
16807 SAVE_EXTRA_REGS
16808 @@ -269,6 +327,9 @@ sysenter_tracesys:
16809 movl %eax, %eax /* zero extension */
16810
16811 RESTORE_EXTRA_REGS
16812 +
16813 + pax_erase_kstack
16814 +
16815 jmp sysenter_do_call
16816 ENDPROC(entry_SYSENTER_compat)
16817
16818 @@ -311,7 +372,6 @@ ENTRY(entry_SYSCALL_compat)
16819 SWAPGS_UNSAFE_STACK
16820 movl %esp, %r8d
16821 movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
16822 - ENABLE_INTERRUPTS(CLBR_NONE)
16823
16824 /* Zero-extending 32-bit regs, do not remove */
16825 movl %eax, %eax
16826 @@ -331,16 +391,41 @@ ENTRY(entry_SYSCALL_compat)
16827 pushq $-ENOSYS /* pt_regs->ax */
16828 sub $(10*8), %rsp /* pt_regs->r8-11, bp, bx, r12-15 not saved */
16829
16830 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
16831 + movq %r12, R12(%rsp)
16832 +#endif
16833 +
16834 + pax_enter_kernel_user
16835 +
16836 +#ifdef CONFIG_PAX_RANDKSTACK
16837 + pax_erase_kstack
16838 +#endif
16839 +
16840 + ENABLE_INTERRUPTS(CLBR_NONE)
16841 +
16842 /*
16843 * No need to do an access_ok check here because r8 has been
16844 * 32-bit zero extended:
16845 */
16846 +
16847 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16848 + ASM_PAX_OPEN_USERLAND
16849 + movq pax_user_shadow_base, %r8
16850 + addq RSP(%rsp), %r8
16851 +#endif
16852 +
16853 ASM_STAC
16854 1: movl (%r8), %r9d
16855 _ASM_EXTABLE(1b, ia32_badarg)
16856 ASM_CLAC
16857 - orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
16858 - testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16859 +
16860 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16861 + ASM_PAX_CLOSE_USERLAND
16862 +#endif
16863 +
16864 + GET_THREAD_INFO(%r11)
16865 + orl $TS_COMPAT,TI_status(%r11)
16866 + testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r11)
16867 jnz cstar_tracesys
16868
16869 cstar_do_call:
16870 @@ -358,13 +443,16 @@ cstar_dispatch:
16871 call *ia32_sys_call_table(, %rax, 8)
16872 movq %rax, RAX(%rsp)
16873 1:
16874 + GET_THREAD_INFO(%r11)
16875 DISABLE_INTERRUPTS(CLBR_NONE)
16876 TRACE_IRQS_OFF
16877 - testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16878 + testl $_TIF_ALLWORK_MASK, TI_flags(%r11)
16879 jnz sysretl_audit
16880
16881 sysretl_from_sys_call:
16882 - andl $~TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
16883 + pax_exit_kernel_user
16884 + pax_erase_kstack
16885 + andl $~TS_COMPAT, TI_status(%r11)
16886 RESTORE_RSI_RDI_RDX
16887 movl RIP(%rsp), %ecx
16888 movl EFLAGS(%rsp), %r11d
16889 @@ -403,7 +491,7 @@ sysretl_audit:
16890
16891 cstar_tracesys:
16892 #ifdef CONFIG_AUDITSYSCALL
16893 - testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16894 + testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), TI_flags(%r11)
16895 jz cstar_auditsys
16896 #endif
16897 xchgl %r9d, %ebp
16898 @@ -426,11 +514,19 @@ cstar_tracesys:
16899
16900 RESTORE_EXTRA_REGS
16901 xchgl %ebp, %r9d
16902 +
16903 + pax_erase_kstack
16904 +
16905 jmp cstar_do_call
16906 END(entry_SYSCALL_compat)
16907
16908 ia32_badarg:
16909 ASM_CLAC
16910 +
16911 +#ifdef CONFIG_PAX_MEMORY_UDEREF
16912 + ASM_PAX_CLOSE_USERLAND
16913 +#endif
16914 +
16915 movq $-EFAULT, RAX(%rsp)
16916 ia32_ret_from_sys_call:
16917 xorl %eax, %eax /* Do not leak kernel information */
16918 @@ -462,14 +558,8 @@ ia32_ret_from_sys_call:
16919 */
16920
16921 ENTRY(entry_INT80_compat)
16922 - /*
16923 - * Interrupts are off on entry.
16924 - * We do not frame this tiny irq-off block with TRACE_IRQS_OFF/ON,
16925 - * it is too small to ever cause noticeable irq latency.
16926 - */
16927 PARAVIRT_ADJUST_EXCEPTION_FRAME
16928 SWAPGS
16929 - ENABLE_INTERRUPTS(CLBR_NONE)
16930
16931 /* Zero-extending 32-bit regs, do not remove */
16932 movl %eax, %eax
16933 @@ -488,8 +578,26 @@ ENTRY(entry_INT80_compat)
16934 cld
16935 sub $(6*8), %rsp /* pt_regs->bp, bx, r12-15 not saved */
16936
16937 - orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
16938 - testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
16939 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
16940 + movq %r12, R12(%rsp)
16941 +#endif
16942 +
16943 + pax_enter_kernel_user
16944 +
16945 +#ifdef CONFIG_PAX_RANDKSTACK
16946 + pax_erase_kstack
16947 +#endif
16948 +
16949 + /*
16950 + * Interrupts are off on entry.
16951 + * We do not frame this tiny irq-off block with TRACE_IRQS_OFF/ON,
16952 + * it is too small to ever cause noticeable irq latency.
16953 + */
16954 + ENABLE_INTERRUPTS(CLBR_NONE)
16955 +
16956 + GET_THREAD_INFO(%r11)
16957 + orl $TS_COMPAT, TI_status(%r11)
16958 + testl $_TIF_WORK_SYSCALL_ENTRY, TI_flags(%r11)
16959 jnz ia32_tracesys
16960
16961 ia32_do_call:
16962 @@ -524,6 +632,9 @@ ia32_tracesys:
16963 movl RDI(%rsp), %edi
16964 movl %eax, %eax /* zero extension */
16965 RESTORE_EXTRA_REGS
16966 +
16967 + pax_erase_kstack
16968 +
16969 jmp ia32_do_call
16970 END(entry_INT80_compat)
16971
16972 diff --git a/arch/x86/entry/thunk_64.S b/arch/x86/entry/thunk_64.S
16973 index efb2b93..8a9cb8e 100644
16974 --- a/arch/x86/entry/thunk_64.S
16975 +++ b/arch/x86/entry/thunk_64.S
16976 @@ -8,6 +8,7 @@
16977 #include <linux/linkage.h>
16978 #include "calling.h"
16979 #include <asm/asm.h>
16980 +#include <asm/alternative-asm.h>
16981
16982 /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
16983 .macro THUNK name, func, put_ret_addr_in_rdi=0
16984 @@ -62,6 +63,7 @@ restore:
16985 popq %rdx
16986 popq %rsi
16987 popq %rdi
16988 + pax_force_retaddr
16989 ret
16990 _ASM_NOKPROBE(restore)
16991 #endif
16992 diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile
16993 index e970320..c006fea 100644
16994 --- a/arch/x86/entry/vdso/Makefile
16995 +++ b/arch/x86/entry/vdso/Makefile
16996 @@ -175,7 +175,7 @@ quiet_cmd_vdso = VDSO $@
16997 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
16998 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
16999
17000 -VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
17001 +VDSO_LDFLAGS = -fPIC -shared -Wl,--no-undefined $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
17002 $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS)
17003 GCOV_PROFILE := n
17004
17005 diff --git a/arch/x86/entry/vdso/vdso2c.h b/arch/x86/entry/vdso/vdso2c.h
17006 index 0224987..8deb742 100644
17007 --- a/arch/x86/entry/vdso/vdso2c.h
17008 +++ b/arch/x86/entry/vdso/vdso2c.h
17009 @@ -12,7 +12,7 @@ static void BITSFUNC(go)(void *raw_addr, size_t raw_len,
17010 unsigned long load_size = -1; /* Work around bogus warning */
17011 unsigned long mapping_size;
17012 ELF(Ehdr) *hdr = (ELF(Ehdr) *)raw_addr;
17013 - int i;
17014 + unsigned int i;
17015 unsigned long j;
17016 ELF(Shdr) *symtab_hdr = NULL, *strtab_hdr, *secstrings_hdr,
17017 *alt_sec = NULL;
17018 @@ -83,7 +83,7 @@ static void BITSFUNC(go)(void *raw_addr, size_t raw_len,
17019 for (i = 0;
17020 i < GET_LE(&symtab_hdr->sh_size) / GET_LE(&symtab_hdr->sh_entsize);
17021 i++) {
17022 - int k;
17023 + unsigned int k;
17024 ELF(Sym) *sym = raw_addr + GET_LE(&symtab_hdr->sh_offset) +
17025 GET_LE(&symtab_hdr->sh_entsize) * i;
17026 const char *name = raw_addr + GET_LE(&strtab_hdr->sh_offset) +
17027 diff --git a/arch/x86/entry/vdso/vma.c b/arch/x86/entry/vdso/vma.c
17028 index 1c9f750..cfddb1a 100644
17029 --- a/arch/x86/entry/vdso/vma.c
17030 +++ b/arch/x86/entry/vdso/vma.c
17031 @@ -19,10 +19,7 @@
17032 #include <asm/page.h>
17033 #include <asm/hpet.h>
17034 #include <asm/desc.h>
17035 -
17036 -#if defined(CONFIG_X86_64)
17037 -unsigned int __read_mostly vdso64_enabled = 1;
17038 -#endif
17039 +#include <asm/mman.h>
17040
17041 void __init init_vdso_image(const struct vdso_image *image)
17042 {
17043 @@ -101,6 +98,11 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
17044 .pages = no_pages,
17045 };
17046
17047 +#ifdef CONFIG_PAX_RANDMMAP
17048 + if (mm->pax_flags & MF_PAX_RANDMMAP)
17049 + calculate_addr = false;
17050 +#endif
17051 +
17052 if (calculate_addr) {
17053 addr = vdso_addr(current->mm->start_stack,
17054 image->size - image->sym_vvar_start);
17055 @@ -111,14 +113,14 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
17056 down_write(&mm->mmap_sem);
17057
17058 addr = get_unmapped_area(NULL, addr,
17059 - image->size - image->sym_vvar_start, 0, 0);
17060 + image->size - image->sym_vvar_start, 0, MAP_EXECUTABLE);
17061 if (IS_ERR_VALUE(addr)) {
17062 ret = addr;
17063 goto up_fail;
17064 }
17065
17066 text_start = addr - image->sym_vvar_start;
17067 - current->mm->context.vdso = (void __user *)text_start;
17068 + mm->context.vdso = text_start;
17069
17070 /*
17071 * MAYWRITE to allow gdb to COW and set breakpoints
17072 @@ -163,15 +165,12 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
17073 hpet_address >> PAGE_SHIFT,
17074 PAGE_SIZE,
17075 pgprot_noncached(PAGE_READONLY));
17076 -
17077 - if (ret)
17078 - goto up_fail;
17079 }
17080 #endif
17081
17082 up_fail:
17083 if (ret)
17084 - current->mm->context.vdso = NULL;
17085 + current->mm->context.vdso = 0;
17086
17087 up_write(&mm->mmap_sem);
17088 return ret;
17089 @@ -191,8 +190,8 @@ static int load_vdso32(void)
17090
17091 if (selected_vdso32->sym_VDSO32_SYSENTER_RETURN)
17092 current_thread_info()->sysenter_return =
17093 - current->mm->context.vdso +
17094 - selected_vdso32->sym_VDSO32_SYSENTER_RETURN;
17095 + (void __force_user *)(current->mm->context.vdso +
17096 + selected_vdso32->sym_VDSO32_SYSENTER_RETURN);
17097
17098 return 0;
17099 }
17100 @@ -201,9 +200,6 @@ static int load_vdso32(void)
17101 #ifdef CONFIG_X86_64
17102 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
17103 {
17104 - if (!vdso64_enabled)
17105 - return 0;
17106 -
17107 return map_vdso(&vdso_image_64, true);
17108 }
17109
17110 @@ -212,12 +208,8 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
17111 int uses_interp)
17112 {
17113 #ifdef CONFIG_X86_X32_ABI
17114 - if (test_thread_flag(TIF_X32)) {
17115 - if (!vdso64_enabled)
17116 - return 0;
17117 -
17118 + if (test_thread_flag(TIF_X32))
17119 return map_vdso(&vdso_image_x32, true);
17120 - }
17121 #endif
17122
17123 return load_vdso32();
17124 @@ -231,15 +223,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
17125 #endif
17126
17127 #ifdef CONFIG_X86_64
17128 -static __init int vdso_setup(char *s)
17129 -{
17130 - vdso64_enabled = simple_strtoul(s, NULL, 0);
17131 - return 0;
17132 -}
17133 -__setup("vdso=", vdso_setup);
17134 -#endif
17135 -
17136 -#ifdef CONFIG_X86_64
17137 static void vgetcpu_cpu_init(void *arg)
17138 {
17139 int cpu = smp_processor_id();
17140 diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
17141 index 2dcc6ff..082dc7a 100644
17142 --- a/arch/x86/entry/vsyscall/vsyscall_64.c
17143 +++ b/arch/x86/entry/vsyscall/vsyscall_64.c
17144 @@ -38,15 +38,13 @@
17145 #define CREATE_TRACE_POINTS
17146 #include "vsyscall_trace.h"
17147
17148 -static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE;
17149 +static enum { EMULATE, NONE } vsyscall_mode = EMULATE;
17150
17151 static int __init vsyscall_setup(char *str)
17152 {
17153 if (str) {
17154 if (!strcmp("emulate", str))
17155 vsyscall_mode = EMULATE;
17156 - else if (!strcmp("native", str))
17157 - vsyscall_mode = NATIVE;
17158 else if (!strcmp("none", str))
17159 vsyscall_mode = NONE;
17160 else
17161 @@ -264,8 +262,7 @@ do_ret:
17162 return true;
17163
17164 sigsegv:
17165 - force_sig(SIGSEGV, current);
17166 - return true;
17167 + do_group_exit(SIGKILL);
17168 }
17169
17170 /*
17171 @@ -283,8 +280,8 @@ static struct vm_operations_struct gate_vma_ops = {
17172 static struct vm_area_struct gate_vma = {
17173 .vm_start = VSYSCALL_ADDR,
17174 .vm_end = VSYSCALL_ADDR + PAGE_SIZE,
17175 - .vm_page_prot = PAGE_READONLY_EXEC,
17176 - .vm_flags = VM_READ | VM_EXEC,
17177 + .vm_page_prot = PAGE_READONLY,
17178 + .vm_flags = VM_READ,
17179 .vm_ops = &gate_vma_ops,
17180 };
17181
17182 @@ -325,10 +322,7 @@ void __init map_vsyscall(void)
17183 unsigned long physaddr_vsyscall = __pa_symbol(&__vsyscall_page);
17184
17185 if (vsyscall_mode != NONE)
17186 - __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall,
17187 - vsyscall_mode == NATIVE
17188 - ? PAGE_KERNEL_VSYSCALL
17189 - : PAGE_KERNEL_VVAR);
17190 + __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
17191
17192 BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
17193 (unsigned long)VSYSCALL_ADDR);
17194 diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
17195 index ae6aad1..719d6d9 100644
17196 --- a/arch/x86/ia32/ia32_aout.c
17197 +++ b/arch/x86/ia32/ia32_aout.c
17198 @@ -153,6 +153,8 @@ static int aout_core_dump(struct coredump_params *cprm)
17199 unsigned long dump_start, dump_size;
17200 struct user32 dump;
17201
17202 + memset(&dump, 0, sizeof(dump));
17203 +
17204 fs = get_fs();
17205 set_fs(KERNEL_DS);
17206 has_dumped = 1;
17207 diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
17208 index ae3a29a..cea65e9 100644
17209 --- a/arch/x86/ia32/ia32_signal.c
17210 +++ b/arch/x86/ia32/ia32_signal.c
17211 @@ -216,7 +216,7 @@ asmlinkage long sys32_sigreturn(void)
17212 if (__get_user(set.sig[0], &frame->sc.oldmask)
17213 || (_COMPAT_NSIG_WORDS > 1
17214 && __copy_from_user((((char *) &set.sig) + 4),
17215 - &frame->extramask,
17216 + frame->extramask,
17217 sizeof(frame->extramask))))
17218 goto badframe;
17219
17220 @@ -336,7 +336,7 @@ static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
17221 sp -= frame_size;
17222 /* Align the stack pointer according to the i386 ABI,
17223 * i.e. so that on function entry ((sp + 4) & 15) == 0. */
17224 - sp = ((sp + 4) & -16ul) - 4;
17225 + sp = ((sp - 12) & -16ul) - 4;
17226 return (void __user *) sp;
17227 }
17228
17229 @@ -381,10 +381,10 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
17230 } else {
17231 /* Return stub is in 32bit vsyscall page */
17232 if (current->mm->context.vdso)
17233 - restorer = current->mm->context.vdso +
17234 - selected_vdso32->sym___kernel_sigreturn;
17235 + restorer = (void __force_user *)(current->mm->context.vdso +
17236 + selected_vdso32->sym___kernel_sigreturn);
17237 else
17238 - restorer = &frame->retcode;
17239 + restorer = frame->retcode;
17240 }
17241
17242 put_user_try {
17243 @@ -394,7 +394,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
17244 * These are actually not used anymore, but left because some
17245 * gdb versions depend on them as a marker.
17246 */
17247 - put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode);
17248 + put_user_ex(*((const u64 *)&code), (u64 __user *)frame->retcode);
17249 } put_user_catch(err);
17250
17251 if (err)
17252 @@ -436,7 +436,7 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
17253 0xb8,
17254 __NR_ia32_rt_sigreturn,
17255 0x80cd,
17256 - 0,
17257 + 0
17258 };
17259
17260 frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate);
17261 @@ -459,16 +459,19 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
17262
17263 if (ksig->ka.sa.sa_flags & SA_RESTORER)
17264 restorer = ksig->ka.sa.sa_restorer;
17265 + else if (current->mm->context.vdso)
17266 + /* Return stub is in 32bit vsyscall page */
17267 + restorer = (void __force_user *)(current->mm->context.vdso +
17268 + selected_vdso32->sym___kernel_rt_sigreturn);
17269 else
17270 - restorer = current->mm->context.vdso +
17271 - selected_vdso32->sym___kernel_rt_sigreturn;
17272 + restorer = frame->retcode;
17273 put_user_ex(ptr_to_compat(restorer), &frame->pretcode);
17274
17275 /*
17276 * Not actually used anymore, but left because some gdb
17277 * versions need it.
17278 */
17279 - put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode);
17280 + put_user_ex(*((const u64 *)&code), (u64 __user *)frame->retcode);
17281 } put_user_catch(err);
17282
17283 err |= copy_siginfo_to_user32(&frame->info, &ksig->info);
17284 diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
17285 index 719cd70..72af944 100644
17286 --- a/arch/x86/ia32/sys_ia32.c
17287 +++ b/arch/x86/ia32/sys_ia32.c
17288 @@ -49,18 +49,26 @@
17289
17290 #define AA(__x) ((unsigned long)(__x))
17291
17292 +static inline loff_t compose_loff(unsigned int high, unsigned int low)
17293 +{
17294 + loff_t retval = low;
17295 +
17296 + BUILD_BUG_ON(sizeof retval != sizeof low + sizeof high);
17297 + __builtin_memcpy((unsigned char *)&retval + sizeof low, &high, sizeof high);
17298 + return retval;
17299 +}
17300
17301 asmlinkage long sys32_truncate64(const char __user *filename,
17302 - unsigned long offset_low,
17303 - unsigned long offset_high)
17304 + unsigned int offset_low,
17305 + unsigned int offset_high)
17306 {
17307 - return sys_truncate(filename, ((loff_t) offset_high << 32) | offset_low);
17308 + return sys_truncate(filename, compose_loff(offset_high, offset_low));
17309 }
17310
17311 -asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long offset_low,
17312 - unsigned long offset_high)
17313 +asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned int offset_low,
17314 + unsigned int offset_high)
17315 {
17316 - return sys_ftruncate(fd, ((loff_t) offset_high << 32) | offset_low);
17317 + return sys_ftruncate(fd, ((unsigned long) offset_high << 32) | offset_low);
17318 }
17319
17320 /*
17321 @@ -69,8 +77,8 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long offset_low,
17322 */
17323 static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
17324 {
17325 - typeof(ubuf->st_uid) uid = 0;
17326 - typeof(ubuf->st_gid) gid = 0;
17327 + typeof(((struct stat64 *)0)->st_uid) uid = 0;
17328 + typeof(((struct stat64 *)0)->st_gid) gid = 0;
17329 SET_UID(uid, from_kuid_munged(current_user_ns(), stat->uid));
17330 SET_GID(gid, from_kgid_munged(current_user_ns(), stat->gid));
17331 if (!access_ok(VERIFY_WRITE, ubuf, sizeof(struct stat64)) ||
17332 @@ -196,29 +204,29 @@ long sys32_fadvise64_64(int fd, __u32 offset_low, __u32 offset_high,
17333 __u32 len_low, __u32 len_high, int advice)
17334 {
17335 return sys_fadvise64_64(fd,
17336 - (((u64)offset_high)<<32) | offset_low,
17337 - (((u64)len_high)<<32) | len_low,
17338 + compose_loff(offset_high, offset_low),
17339 + compose_loff(len_high, len_low),
17340 advice);
17341 }
17342
17343 asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi,
17344 size_t count)
17345 {
17346 - return sys_readahead(fd, ((u64)off_hi << 32) | off_lo, count);
17347 + return sys_readahead(fd, compose_loff(off_hi, off_lo), count);
17348 }
17349
17350 asmlinkage long sys32_sync_file_range(int fd, unsigned off_low, unsigned off_hi,
17351 unsigned n_low, unsigned n_hi, int flags)
17352 {
17353 return sys_sync_file_range(fd,
17354 - ((u64)off_hi << 32) | off_low,
17355 - ((u64)n_hi << 32) | n_low, flags);
17356 + compose_loff(off_hi, off_low),
17357 + compose_loff(n_hi, n_low), flags);
17358 }
17359
17360 asmlinkage long sys32_fadvise64(int fd, unsigned offset_lo, unsigned offset_hi,
17361 - size_t len, int advice)
17362 + int len, int advice)
17363 {
17364 - return sys_fadvise64_64(fd, ((u64)offset_hi << 32) | offset_lo,
17365 + return sys_fadvise64_64(fd, compose_loff(offset_hi, offset_lo),
17366 len, advice);
17367 }
17368
17369 @@ -226,6 +234,6 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_lo,
17370 unsigned offset_hi, unsigned len_lo,
17371 unsigned len_hi)
17372 {
17373 - return sys_fallocate(fd, mode, ((u64)offset_hi << 32) | offset_lo,
17374 - ((u64)len_hi << 32) | len_lo);
17375 + return sys_fallocate(fd, mode, compose_loff(offset_hi, offset_lo),
17376 + compose_loff(len_hi, len_lo));
17377 }
17378 diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
17379 index e7636ba..e1fb78a 100644
17380 --- a/arch/x86/include/asm/alternative-asm.h
17381 +++ b/arch/x86/include/asm/alternative-asm.h
17382 @@ -18,6 +18,45 @@
17383 .endm
17384 #endif
17385
17386 +#ifdef KERNEXEC_PLUGIN
17387 + .macro pax_force_retaddr_bts rip=0
17388 + btsq $63,\rip(%rsp)
17389 + .endm
17390 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS
17391 + .macro pax_force_retaddr rip=0, reload=0
17392 + btsq $63,\rip(%rsp)
17393 + .endm
17394 + .macro pax_force_fptr ptr
17395 + btsq $63,\ptr
17396 + .endm
17397 + .macro pax_set_fptr_mask
17398 + .endm
17399 +#endif
17400 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
17401 + .macro pax_force_retaddr rip=0, reload=0
17402 + .if \reload
17403 + pax_set_fptr_mask
17404 + .endif
17405 + orq %r12,\rip(%rsp)
17406 + .endm
17407 + .macro pax_force_fptr ptr
17408 + orq %r12,\ptr
17409 + .endm
17410 + .macro pax_set_fptr_mask
17411 + movabs $0x8000000000000000,%r12
17412 + .endm
17413 +#endif
17414 +#else
17415 + .macro pax_force_retaddr rip=0, reload=0
17416 + .endm
17417 + .macro pax_force_fptr ptr
17418 + .endm
17419 + .macro pax_force_retaddr_bts rip=0
17420 + .endm
17421 + .macro pax_set_fptr_mask
17422 + .endm
17423 +#endif
17424 +
17425 /*
17426 * Issue one struct alt_instr descriptor entry (need to put it into
17427 * the section .altinstructions, see below). This entry contains
17428 @@ -50,7 +89,7 @@
17429 altinstruction_entry 140b,143f,\feature,142b-140b,144f-143f,142b-141b
17430 .popsection
17431
17432 - .pushsection .altinstr_replacement,"ax"
17433 + .pushsection .altinstr_replacement,"a"
17434 143:
17435 \newinstr
17436 144:
17437 @@ -86,7 +125,7 @@
17438 altinstruction_entry 140b,144f,\feature2,142b-140b,145f-144f,142b-141b
17439 .popsection
17440
17441 - .pushsection .altinstr_replacement,"ax"
17442 + .pushsection .altinstr_replacement,"a"
17443 143:
17444 \newinstr1
17445 144:
17446 diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h
17447 index 7bfc85b..65d1ec4 100644
17448 --- a/arch/x86/include/asm/alternative.h
17449 +++ b/arch/x86/include/asm/alternative.h
17450 @@ -136,7 +136,7 @@ static inline int alternatives_text_reserved(void *start, void *end)
17451 ".pushsection .altinstructions,\"a\"\n" \
17452 ALTINSTR_ENTRY(feature, 1) \
17453 ".popsection\n" \
17454 - ".pushsection .altinstr_replacement, \"ax\"\n" \
17455 + ".pushsection .altinstr_replacement, \"a\"\n" \
17456 ALTINSTR_REPLACEMENT(newinstr, feature, 1) \
17457 ".popsection"
17458
17459 @@ -146,7 +146,7 @@ static inline int alternatives_text_reserved(void *start, void *end)
17460 ALTINSTR_ENTRY(feature1, 1) \
17461 ALTINSTR_ENTRY(feature2, 2) \
17462 ".popsection\n" \
17463 - ".pushsection .altinstr_replacement, \"ax\"\n" \
17464 + ".pushsection .altinstr_replacement, \"a\"\n" \
17465 ALTINSTR_REPLACEMENT(newinstr1, feature1, 1) \
17466 ALTINSTR_REPLACEMENT(newinstr2, feature2, 2) \
17467 ".popsection"
17468 diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
17469 index c839363..b9a8c43 100644
17470 --- a/arch/x86/include/asm/apic.h
17471 +++ b/arch/x86/include/asm/apic.h
17472 @@ -45,7 +45,7 @@ static inline void generic_apic_probe(void)
17473
17474 #ifdef CONFIG_X86_LOCAL_APIC
17475
17476 -extern unsigned int apic_verbosity;
17477 +extern int apic_verbosity;
17478 extern int local_apic_timer_c2_ok;
17479
17480 extern int disable_apic;
17481 diff --git a/arch/x86/include/asm/apm.h b/arch/x86/include/asm/apm.h
17482 index 20370c6..a2eb9b0 100644
17483 --- a/arch/x86/include/asm/apm.h
17484 +++ b/arch/x86/include/asm/apm.h
17485 @@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in,
17486 __asm__ __volatile__(APM_DO_ZERO_SEGS
17487 "pushl %%edi\n\t"
17488 "pushl %%ebp\n\t"
17489 - "lcall *%%cs:apm_bios_entry\n\t"
17490 + "lcall *%%ss:apm_bios_entry\n\t"
17491 "setc %%al\n\t"
17492 "popl %%ebp\n\t"
17493 "popl %%edi\n\t"
17494 @@ -58,7 +58,7 @@ static inline u8 apm_bios_call_simple_asm(u32 func, u32 ebx_in,
17495 __asm__ __volatile__(APM_DO_ZERO_SEGS
17496 "pushl %%edi\n\t"
17497 "pushl %%ebp\n\t"
17498 - "lcall *%%cs:apm_bios_entry\n\t"
17499 + "lcall *%%ss:apm_bios_entry\n\t"
17500 "setc %%bl\n\t"
17501 "popl %%ebp\n\t"
17502 "popl %%edi\n\t"
17503 diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
17504 index e916895..42d729d 100644
17505 --- a/arch/x86/include/asm/atomic.h
17506 +++ b/arch/x86/include/asm/atomic.h
17507 @@ -28,6 +28,17 @@ static __always_inline int atomic_read(const atomic_t *v)
17508 }
17509
17510 /**
17511 + * atomic_read_unchecked - read atomic variable
17512 + * @v: pointer of type atomic_unchecked_t
17513 + *
17514 + * Atomically reads the value of @v.
17515 + */
17516 +static __always_inline int __intentional_overflow(-1) atomic_read_unchecked(const atomic_unchecked_t *v)
17517 +{
17518 + return ACCESS_ONCE((v)->counter);
17519 +}
17520 +
17521 +/**
17522 * atomic_set - set atomic variable
17523 * @v: pointer of type atomic_t
17524 * @i: required value
17525 @@ -40,6 +51,18 @@ static __always_inline void atomic_set(atomic_t *v, int i)
17526 }
17527
17528 /**
17529 + * atomic_set_unchecked - set atomic variable
17530 + * @v: pointer of type atomic_unchecked_t
17531 + * @i: required value
17532 + *
17533 + * Atomically sets the value of @v to @i.
17534 + */
17535 +static __always_inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
17536 +{
17537 + v->counter = i;
17538 +}
17539 +
17540 +/**
17541 * atomic_add - add integer to atomic variable
17542 * @i: integer value to add
17543 * @v: pointer of type atomic_t
17544 @@ -48,7 +71,29 @@ static __always_inline void atomic_set(atomic_t *v, int i)
17545 */
17546 static __always_inline void atomic_add(int i, atomic_t *v)
17547 {
17548 - asm volatile(LOCK_PREFIX "addl %1,%0"
17549 + asm volatile(LOCK_PREFIX "addl %1,%0\n"
17550 +
17551 +#ifdef CONFIG_PAX_REFCOUNT
17552 + "jno 0f\n"
17553 + LOCK_PREFIX "subl %1,%0\n"
17554 + "int $4\n0:\n"
17555 + _ASM_EXTABLE(0b, 0b)
17556 +#endif
17557 +
17558 + : "+m" (v->counter)
17559 + : "ir" (i));
17560 +}
17561 +
17562 +/**
17563 + * atomic_add_unchecked - add integer to atomic variable
17564 + * @i: integer value to add
17565 + * @v: pointer of type atomic_unchecked_t
17566 + *
17567 + * Atomically adds @i to @v.
17568 + */
17569 +static __always_inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
17570 +{
17571 + asm volatile(LOCK_PREFIX "addl %1,%0\n"
17572 : "+m" (v->counter)
17573 : "ir" (i));
17574 }
17575 @@ -62,7 +107,29 @@ static __always_inline void atomic_add(int i, atomic_t *v)
17576 */
17577 static __always_inline void atomic_sub(int i, atomic_t *v)
17578 {
17579 - asm volatile(LOCK_PREFIX "subl %1,%0"
17580 + asm volatile(LOCK_PREFIX "subl %1,%0\n"
17581 +
17582 +#ifdef CONFIG_PAX_REFCOUNT
17583 + "jno 0f\n"
17584 + LOCK_PREFIX "addl %1,%0\n"
17585 + "int $4\n0:\n"
17586 + _ASM_EXTABLE(0b, 0b)
17587 +#endif
17588 +
17589 + : "+m" (v->counter)
17590 + : "ir" (i));
17591 +}
17592 +
17593 +/**
17594 + * atomic_sub_unchecked - subtract integer from atomic variable
17595 + * @i: integer value to subtract
17596 + * @v: pointer of type atomic_unchecked_t
17597 + *
17598 + * Atomically subtracts @i from @v.
17599 + */
17600 +static __always_inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
17601 +{
17602 + asm volatile(LOCK_PREFIX "subl %1,%0\n"
17603 : "+m" (v->counter)
17604 : "ir" (i));
17605 }
17606 @@ -78,7 +145,7 @@ static __always_inline void atomic_sub(int i, atomic_t *v)
17607 */
17608 static __always_inline int atomic_sub_and_test(int i, atomic_t *v)
17609 {
17610 - GEN_BINARY_RMWcc(LOCK_PREFIX "subl", v->counter, "er", i, "%0", "e");
17611 + GEN_BINARY_RMWcc(LOCK_PREFIX "subl", LOCK_PREFIX "addl", v->counter, "er", i, "%0", "e");
17612 }
17613
17614 /**
17615 @@ -89,7 +156,27 @@ static __always_inline int atomic_sub_and_test(int i, atomic_t *v)
17616 */
17617 static __always_inline void atomic_inc(atomic_t *v)
17618 {
17619 - asm volatile(LOCK_PREFIX "incl %0"
17620 + asm volatile(LOCK_PREFIX "incl %0\n"
17621 +
17622 +#ifdef CONFIG_PAX_REFCOUNT
17623 + "jno 0f\n"
17624 + LOCK_PREFIX "decl %0\n"
17625 + "int $4\n0:\n"
17626 + _ASM_EXTABLE(0b, 0b)
17627 +#endif
17628 +
17629 + : "+m" (v->counter));
17630 +}
17631 +
17632 +/**
17633 + * atomic_inc_unchecked - increment atomic variable
17634 + * @v: pointer of type atomic_unchecked_t
17635 + *
17636 + * Atomically increments @v by 1.
17637 + */
17638 +static __always_inline void atomic_inc_unchecked(atomic_unchecked_t *v)
17639 +{
17640 + asm volatile(LOCK_PREFIX "incl %0\n"
17641 : "+m" (v->counter));
17642 }
17643
17644 @@ -101,7 +188,27 @@ static __always_inline void atomic_inc(atomic_t *v)
17645 */
17646 static __always_inline void atomic_dec(atomic_t *v)
17647 {
17648 - asm volatile(LOCK_PREFIX "decl %0"
17649 + asm volatile(LOCK_PREFIX "decl %0\n"
17650 +
17651 +#ifdef CONFIG_PAX_REFCOUNT
17652 + "jno 0f\n"
17653 + LOCK_PREFIX "incl %0\n"
17654 + "int $4\n0:\n"
17655 + _ASM_EXTABLE(0b, 0b)
17656 +#endif
17657 +
17658 + : "+m" (v->counter));
17659 +}
17660 +
17661 +/**
17662 + * atomic_dec_unchecked - decrement atomic variable
17663 + * @v: pointer of type atomic_unchecked_t
17664 + *
17665 + * Atomically decrements @v by 1.
17666 + */
17667 +static __always_inline void atomic_dec_unchecked(atomic_unchecked_t *v)
17668 +{
17669 + asm volatile(LOCK_PREFIX "decl %0\n"
17670 : "+m" (v->counter));
17671 }
17672
17673 @@ -115,7 +222,7 @@ static __always_inline void atomic_dec(atomic_t *v)
17674 */
17675 static __always_inline int atomic_dec_and_test(atomic_t *v)
17676 {
17677 - GEN_UNARY_RMWcc(LOCK_PREFIX "decl", v->counter, "%0", "e");
17678 + GEN_UNARY_RMWcc(LOCK_PREFIX "decl", LOCK_PREFIX "incl", v->counter, "%0", "e");
17679 }
17680
17681 /**
17682 @@ -128,7 +235,20 @@ static __always_inline int atomic_dec_and_test(atomic_t *v)
17683 */
17684 static __always_inline int atomic_inc_and_test(atomic_t *v)
17685 {
17686 - GEN_UNARY_RMWcc(LOCK_PREFIX "incl", v->counter, "%0", "e");
17687 + GEN_UNARY_RMWcc(LOCK_PREFIX "incl", LOCK_PREFIX "decl", v->counter, "%0", "e");
17688 +}
17689 +
17690 +/**
17691 + * atomic_inc_and_test_unchecked - increment and test
17692 + * @v: pointer of type atomic_unchecked_t
17693 + *
17694 + * Atomically increments @v by 1
17695 + * and returns true if the result is zero, or false for all
17696 + * other cases.
17697 + */
17698 +static __always_inline int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
17699 +{
17700 + GEN_UNARY_RMWcc_unchecked(LOCK_PREFIX "incl", v->counter, "%0", "e");
17701 }
17702
17703 /**
17704 @@ -142,7 +262,7 @@ static __always_inline int atomic_inc_and_test(atomic_t *v)
17705 */
17706 static __always_inline int atomic_add_negative(int i, atomic_t *v)
17707 {
17708 - GEN_BINARY_RMWcc(LOCK_PREFIX "addl", v->counter, "er", i, "%0", "s");
17709 + GEN_BINARY_RMWcc(LOCK_PREFIX "addl", LOCK_PREFIX "subl", v->counter, "er", i, "%0", "s");
17710 }
17711
17712 /**
17713 @@ -152,7 +272,19 @@ static __always_inline int atomic_add_negative(int i, atomic_t *v)
17714 *
17715 * Atomically adds @i to @v and returns @i + @v
17716 */
17717 -static __always_inline int atomic_add_return(int i, atomic_t *v)
17718 +static __always_inline int __intentional_overflow(-1) atomic_add_return(int i, atomic_t *v)
17719 +{
17720 + return i + xadd_check_overflow(&v->counter, i);
17721 +}
17722 +
17723 +/**
17724 + * atomic_add_return_unchecked - add integer and return
17725 + * @i: integer value to add
17726 + * @v: pointer of type atomi_uncheckedc_t
17727 + *
17728 + * Atomically adds @i to @v and returns @i + @v
17729 + */
17730 +static __always_inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
17731 {
17732 return i + xadd(&v->counter, i);
17733 }
17734 @@ -164,15 +296,24 @@ static __always_inline int atomic_add_return(int i, atomic_t *v)
17735 *
17736 * Atomically subtracts @i from @v and returns @v - @i
17737 */
17738 -static __always_inline int atomic_sub_return(int i, atomic_t *v)
17739 +static __always_inline int __intentional_overflow(-1) atomic_sub_return(int i, atomic_t *v)
17740 {
17741 return atomic_add_return(-i, v);
17742 }
17743
17744 #define atomic_inc_return(v) (atomic_add_return(1, v))
17745 +static __always_inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
17746 +{
17747 + return atomic_add_return_unchecked(1, v);
17748 +}
17749 #define atomic_dec_return(v) (atomic_sub_return(1, v))
17750
17751 -static __always_inline int atomic_cmpxchg(atomic_t *v, int old, int new)
17752 +static __always_inline int __intentional_overflow(-1) atomic_cmpxchg(atomic_t *v, int old, int new)
17753 +{
17754 + return cmpxchg(&v->counter, old, new);
17755 +}
17756 +
17757 +static __always_inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
17758 {
17759 return cmpxchg(&v->counter, old, new);
17760 }
17761 @@ -182,6 +323,11 @@ static inline int atomic_xchg(atomic_t *v, int new)
17762 return xchg(&v->counter, new);
17763 }
17764
17765 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
17766 +{
17767 + return xchg(&v->counter, new);
17768 +}
17769 +
17770 /**
17771 * __atomic_add_unless - add unless the number is already a given value
17772 * @v: pointer of type atomic_t
17773 @@ -193,12 +339,25 @@ static inline int atomic_xchg(atomic_t *v, int new)
17774 */
17775 static __always_inline int __atomic_add_unless(atomic_t *v, int a, int u)
17776 {
17777 - int c, old;
17778 + int c, old, new;
17779 c = atomic_read(v);
17780 for (;;) {
17781 - if (unlikely(c == (u)))
17782 + if (unlikely(c == u))
17783 break;
17784 - old = atomic_cmpxchg((v), c, c + (a));
17785 +
17786 + asm volatile("addl %2,%0\n"
17787 +
17788 +#ifdef CONFIG_PAX_REFCOUNT
17789 + "jno 0f\n"
17790 + "subl %2,%0\n"
17791 + "int $4\n0:\n"
17792 + _ASM_EXTABLE(0b, 0b)
17793 +#endif
17794 +
17795 + : "=r" (new)
17796 + : "0" (c), "ir" (a));
17797 +
17798 + old = atomic_cmpxchg(v, c, new);
17799 if (likely(old == c))
17800 break;
17801 c = old;
17802 @@ -207,6 +366,49 @@ static __always_inline int __atomic_add_unless(atomic_t *v, int a, int u)
17803 }
17804
17805 /**
17806 + * atomic_inc_not_zero_hint - increment if not null
17807 + * @v: pointer of type atomic_t
17808 + * @hint: probable value of the atomic before the increment
17809 + *
17810 + * This version of atomic_inc_not_zero() gives a hint of probable
17811 + * value of the atomic. This helps processor to not read the memory
17812 + * before doing the atomic read/modify/write cycle, lowering
17813 + * number of bus transactions on some arches.
17814 + *
17815 + * Returns: 0 if increment was not done, 1 otherwise.
17816 + */
17817 +#define atomic_inc_not_zero_hint atomic_inc_not_zero_hint
17818 +static inline int atomic_inc_not_zero_hint(atomic_t *v, int hint)
17819 +{
17820 + int val, c = hint, new;
17821 +
17822 + /* sanity test, should be removed by compiler if hint is a constant */
17823 + if (!hint)
17824 + return __atomic_add_unless(v, 1, 0);
17825 +
17826 + do {
17827 + asm volatile("incl %0\n"
17828 +
17829 +#ifdef CONFIG_PAX_REFCOUNT
17830 + "jno 0f\n"
17831 + "decl %0\n"
17832 + "int $4\n0:\n"
17833 + _ASM_EXTABLE(0b, 0b)
17834 +#endif
17835 +
17836 + : "=r" (new)
17837 + : "0" (c));
17838 +
17839 + val = atomic_cmpxchg(v, c, new);
17840 + if (val == c)
17841 + return 1;
17842 + c = val;
17843 + } while (c);
17844 +
17845 + return 0;
17846 +}
17847 +
17848 +/**
17849 * atomic_inc_short - increment of a short integer
17850 * @v: pointer to type int
17851 *
17852 @@ -220,14 +422,37 @@ static __always_inline short int atomic_inc_short(short int *v)
17853 }
17854
17855 /* These are x86-specific, used by some header files */
17856 -#define atomic_clear_mask(mask, addr) \
17857 - asm volatile(LOCK_PREFIX "andl %0,%1" \
17858 - : : "r" (~(mask)), "m" (*(addr)) : "memory")
17859 +static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
17860 +{
17861 + asm volatile(LOCK_PREFIX "andl %1,%0"
17862 + : "+m" (v->counter)
17863 + : "r" (~(mask))
17864 + : "memory");
17865 +}
17866
17867 -#define atomic_set_mask(mask, addr) \
17868 - asm volatile(LOCK_PREFIX "orl %0,%1" \
17869 - : : "r" ((unsigned)(mask)), "m" (*(addr)) \
17870 - : "memory")
17871 +static inline void atomic_clear_mask_unchecked(unsigned int mask, atomic_unchecked_t *v)
17872 +{
17873 + asm volatile(LOCK_PREFIX "andl %1,%0"
17874 + : "+m" (v->counter)
17875 + : "r" (~(mask))
17876 + : "memory");
17877 +}
17878 +
17879 +static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
17880 +{
17881 + asm volatile(LOCK_PREFIX "orl %1,%0"
17882 + : "+m" (v->counter)
17883 + : "r" (mask)
17884 + : "memory");
17885 +}
17886 +
17887 +static inline void atomic_set_mask_unchecked(unsigned int mask, atomic_unchecked_t *v)
17888 +{
17889 + asm volatile(LOCK_PREFIX "orl %1,%0"
17890 + : "+m" (v->counter)
17891 + : "r" (mask)
17892 + : "memory");
17893 +}
17894
17895 #ifdef CONFIG_X86_32
17896 # include <asm/atomic64_32.h>
17897 diff --git a/arch/x86/include/asm/atomic64_32.h b/arch/x86/include/asm/atomic64_32.h
17898 index b154de7..3dc335d 100644
17899 --- a/arch/x86/include/asm/atomic64_32.h
17900 +++ b/arch/x86/include/asm/atomic64_32.h
17901 @@ -12,6 +12,14 @@ typedef struct {
17902 u64 __aligned(8) counter;
17903 } atomic64_t;
17904
17905 +#ifdef CONFIG_PAX_REFCOUNT
17906 +typedef struct {
17907 + u64 __aligned(8) counter;
17908 +} atomic64_unchecked_t;
17909 +#else
17910 +typedef atomic64_t atomic64_unchecked_t;
17911 +#endif
17912 +
17913 #define ATOMIC64_INIT(val) { (val) }
17914
17915 #define __ATOMIC64_DECL(sym) void atomic64_##sym(atomic64_t *, ...)
17916 @@ -37,21 +45,31 @@ typedef struct {
17917 ATOMIC64_DECL_ONE(sym##_386)
17918
17919 ATOMIC64_DECL_ONE(add_386);
17920 +ATOMIC64_DECL_ONE(add_unchecked_386);
17921 ATOMIC64_DECL_ONE(sub_386);
17922 +ATOMIC64_DECL_ONE(sub_unchecked_386);
17923 ATOMIC64_DECL_ONE(inc_386);
17924 +ATOMIC64_DECL_ONE(inc_unchecked_386);
17925 ATOMIC64_DECL_ONE(dec_386);
17926 +ATOMIC64_DECL_ONE(dec_unchecked_386);
17927 #endif
17928
17929 #define alternative_atomic64(f, out, in...) \
17930 __alternative_atomic64(f, f, ASM_OUTPUT2(out), ## in)
17931
17932 ATOMIC64_DECL(read);
17933 +ATOMIC64_DECL(read_unchecked);
17934 ATOMIC64_DECL(set);
17935 +ATOMIC64_DECL(set_unchecked);
17936 ATOMIC64_DECL(xchg);
17937 ATOMIC64_DECL(add_return);
17938 +ATOMIC64_DECL(add_return_unchecked);
17939 ATOMIC64_DECL(sub_return);
17940 +ATOMIC64_DECL(sub_return_unchecked);
17941 ATOMIC64_DECL(inc_return);
17942 +ATOMIC64_DECL(inc_return_unchecked);
17943 ATOMIC64_DECL(dec_return);
17944 +ATOMIC64_DECL(dec_return_unchecked);
17945 ATOMIC64_DECL(dec_if_positive);
17946 ATOMIC64_DECL(inc_not_zero);
17947 ATOMIC64_DECL(add_unless);
17948 @@ -77,6 +95,21 @@ static inline long long atomic64_cmpxchg(atomic64_t *v, long long o, long long n
17949 }
17950
17951 /**
17952 + * atomic64_cmpxchg_unchecked - cmpxchg atomic64 variable
17953 + * @p: pointer to type atomic64_unchecked_t
17954 + * @o: expected value
17955 + * @n: new value
17956 + *
17957 + * Atomically sets @v to @n if it was equal to @o and returns
17958 + * the old value.
17959 + */
17960 +
17961 +static inline long long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long long o, long long n)
17962 +{
17963 + return cmpxchg64(&v->counter, o, n);
17964 +}
17965 +
17966 +/**
17967 * atomic64_xchg - xchg atomic64 variable
17968 * @v: pointer to type atomic64_t
17969 * @n: value to assign
17970 @@ -112,6 +145,22 @@ static inline void atomic64_set(atomic64_t *v, long long i)
17971 }
17972
17973 /**
17974 + * atomic64_set_unchecked - set atomic64 variable
17975 + * @v: pointer to type atomic64_unchecked_t
17976 + * @n: value to assign
17977 + *
17978 + * Atomically sets the value of @v to @n.
17979 + */
17980 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long long i)
17981 +{
17982 + unsigned high = (unsigned)(i >> 32);
17983 + unsigned low = (unsigned)i;
17984 + alternative_atomic64(set, /* no output */,
17985 + "S" (v), "b" (low), "c" (high)
17986 + : "eax", "edx", "memory");
17987 +}
17988 +
17989 +/**
17990 * atomic64_read - read atomic64 variable
17991 * @v: pointer to type atomic64_t
17992 *
17993 @@ -125,6 +174,19 @@ static inline long long atomic64_read(const atomic64_t *v)
17994 }
17995
17996 /**
17997 + * atomic64_read_unchecked - read atomic64 variable
17998 + * @v: pointer to type atomic64_unchecked_t
17999 + *
18000 + * Atomically reads the value of @v and returns it.
18001 + */
18002 +static inline long long __intentional_overflow(-1) atomic64_read_unchecked(const atomic64_unchecked_t *v)
18003 +{
18004 + long long r;
18005 + alternative_atomic64(read, "=&A" (r), "c" (v) : "memory");
18006 + return r;
18007 + }
18008 +
18009 +/**
18010 * atomic64_add_return - add and return
18011 * @i: integer value to add
18012 * @v: pointer to type atomic64_t
18013 @@ -139,6 +201,21 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v)
18014 return i;
18015 }
18016
18017 +/**
18018 + * atomic64_add_return_unchecked - add and return
18019 + * @i: integer value to add
18020 + * @v: pointer to type atomic64_unchecked_t
18021 + *
18022 + * Atomically adds @i to @v and returns @i + *@v
18023 + */
18024 +static inline long long atomic64_add_return_unchecked(long long i, atomic64_unchecked_t *v)
18025 +{
18026 + alternative_atomic64(add_return_unchecked,
18027 + ASM_OUTPUT2("+A" (i), "+c" (v)),
18028 + ASM_NO_INPUT_CLOBBER("memory"));
18029 + return i;
18030 +}
18031 +
18032 /*
18033 * Other variants with different arithmetic operators:
18034 */
18035 @@ -158,6 +235,14 @@ static inline long long atomic64_inc_return(atomic64_t *v)
18036 return a;
18037 }
18038
18039 +static inline long long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
18040 +{
18041 + long long a;
18042 + alternative_atomic64(inc_return_unchecked, "=&A" (a),
18043 + "S" (v) : "memory", "ecx");
18044 + return a;
18045 +}
18046 +
18047 static inline long long atomic64_dec_return(atomic64_t *v)
18048 {
18049 long long a;
18050 @@ -182,6 +267,21 @@ static inline long long atomic64_add(long long i, atomic64_t *v)
18051 }
18052
18053 /**
18054 + * atomic64_add_unchecked - add integer to atomic64 variable
18055 + * @i: integer value to add
18056 + * @v: pointer to type atomic64_unchecked_t
18057 + *
18058 + * Atomically adds @i to @v.
18059 + */
18060 +static inline long long atomic64_add_unchecked(long long i, atomic64_unchecked_t *v)
18061 +{
18062 + __alternative_atomic64(add_unchecked, add_return_unchecked,
18063 + ASM_OUTPUT2("+A" (i), "+c" (v)),
18064 + ASM_NO_INPUT_CLOBBER("memory"));
18065 + return i;
18066 +}
18067 +
18068 +/**
18069 * atomic64_sub - subtract the atomic64 variable
18070 * @i: integer value to subtract
18071 * @v: pointer to type atomic64_t
18072 diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
18073 index b965f9e..8e22dd3 100644
18074 --- a/arch/x86/include/asm/atomic64_64.h
18075 +++ b/arch/x86/include/asm/atomic64_64.h
18076 @@ -22,6 +22,18 @@ static inline long atomic64_read(const atomic64_t *v)
18077 }
18078
18079 /**
18080 + * atomic64_read_unchecked - read atomic64 variable
18081 + * @v: pointer of type atomic64_unchecked_t
18082 + *
18083 + * Atomically reads the value of @v.
18084 + * Doesn't imply a read memory barrier.
18085 + */
18086 +static inline long __intentional_overflow(-1) atomic64_read_unchecked(const atomic64_unchecked_t *v)
18087 +{
18088 + return ACCESS_ONCE((v)->counter);
18089 +}
18090 +
18091 +/**
18092 * atomic64_set - set atomic64 variable
18093 * @v: pointer to type atomic64_t
18094 * @i: required value
18095 @@ -34,6 +46,18 @@ static inline void atomic64_set(atomic64_t *v, long i)
18096 }
18097
18098 /**
18099 + * atomic64_set_unchecked - set atomic64 variable
18100 + * @v: pointer to type atomic64_unchecked_t
18101 + * @i: required value
18102 + *
18103 + * Atomically sets the value of @v to @i.
18104 + */
18105 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
18106 +{
18107 + v->counter = i;
18108 +}
18109 +
18110 +/**
18111 * atomic64_add - add integer to atomic64 variable
18112 * @i: integer value to add
18113 * @v: pointer to type atomic64_t
18114 @@ -42,6 +66,28 @@ static inline void atomic64_set(atomic64_t *v, long i)
18115 */
18116 static __always_inline void atomic64_add(long i, atomic64_t *v)
18117 {
18118 + asm volatile(LOCK_PREFIX "addq %1,%0\n"
18119 +
18120 +#ifdef CONFIG_PAX_REFCOUNT
18121 + "jno 0f\n"
18122 + LOCK_PREFIX "subq %1,%0\n"
18123 + "int $4\n0:\n"
18124 + _ASM_EXTABLE(0b, 0b)
18125 +#endif
18126 +
18127 + : "=m" (v->counter)
18128 + : "er" (i), "m" (v->counter));
18129 +}
18130 +
18131 +/**
18132 + * atomic64_add_unchecked - add integer to atomic64 variable
18133 + * @i: integer value to add
18134 + * @v: pointer to type atomic64_unchecked_t
18135 + *
18136 + * Atomically adds @i to @v.
18137 + */
18138 +static __always_inline void atomic64_add_unchecked(long i, atomic64_unchecked_t *v)
18139 +{
18140 asm volatile(LOCK_PREFIX "addq %1,%0"
18141 : "=m" (v->counter)
18142 : "er" (i), "m" (v->counter));
18143 @@ -56,7 +102,29 @@ static __always_inline void atomic64_add(long i, atomic64_t *v)
18144 */
18145 static inline void atomic64_sub(long i, atomic64_t *v)
18146 {
18147 - asm volatile(LOCK_PREFIX "subq %1,%0"
18148 + asm volatile(LOCK_PREFIX "subq %1,%0\n"
18149 +
18150 +#ifdef CONFIG_PAX_REFCOUNT
18151 + "jno 0f\n"
18152 + LOCK_PREFIX "addq %1,%0\n"
18153 + "int $4\n0:\n"
18154 + _ASM_EXTABLE(0b, 0b)
18155 +#endif
18156 +
18157 + : "=m" (v->counter)
18158 + : "er" (i), "m" (v->counter));
18159 +}
18160 +
18161 +/**
18162 + * atomic64_sub_unchecked - subtract the atomic64 variable
18163 + * @i: integer value to subtract
18164 + * @v: pointer to type atomic64_unchecked_t
18165 + *
18166 + * Atomically subtracts @i from @v.
18167 + */
18168 +static inline void atomic64_sub_unchecked(long i, atomic64_unchecked_t *v)
18169 +{
18170 + asm volatile(LOCK_PREFIX "subq %1,%0\n"
18171 : "=m" (v->counter)
18172 : "er" (i), "m" (v->counter));
18173 }
18174 @@ -72,7 +140,7 @@ static inline void atomic64_sub(long i, atomic64_t *v)
18175 */
18176 static inline int atomic64_sub_and_test(long i, atomic64_t *v)
18177 {
18178 - GEN_BINARY_RMWcc(LOCK_PREFIX "subq", v->counter, "er", i, "%0", "e");
18179 + GEN_BINARY_RMWcc(LOCK_PREFIX "subq", LOCK_PREFIX "addq", v->counter, "er", i, "%0", "e");
18180 }
18181
18182 /**
18183 @@ -83,6 +151,27 @@ static inline int atomic64_sub_and_test(long i, atomic64_t *v)
18184 */
18185 static __always_inline void atomic64_inc(atomic64_t *v)
18186 {
18187 + asm volatile(LOCK_PREFIX "incq %0\n"
18188 +
18189 +#ifdef CONFIG_PAX_REFCOUNT
18190 + "jno 0f\n"
18191 + LOCK_PREFIX "decq %0\n"
18192 + "int $4\n0:\n"
18193 + _ASM_EXTABLE(0b, 0b)
18194 +#endif
18195 +
18196 + : "=m" (v->counter)
18197 + : "m" (v->counter));
18198 +}
18199 +
18200 +/**
18201 + * atomic64_inc_unchecked - increment atomic64 variable
18202 + * @v: pointer to type atomic64_unchecked_t
18203 + *
18204 + * Atomically increments @v by 1.
18205 + */
18206 +static __always_inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
18207 +{
18208 asm volatile(LOCK_PREFIX "incq %0"
18209 : "=m" (v->counter)
18210 : "m" (v->counter));
18211 @@ -96,7 +185,28 @@ static __always_inline void atomic64_inc(atomic64_t *v)
18212 */
18213 static __always_inline void atomic64_dec(atomic64_t *v)
18214 {
18215 - asm volatile(LOCK_PREFIX "decq %0"
18216 + asm volatile(LOCK_PREFIX "decq %0\n"
18217 +
18218 +#ifdef CONFIG_PAX_REFCOUNT
18219 + "jno 0f\n"
18220 + LOCK_PREFIX "incq %0\n"
18221 + "int $4\n0:\n"
18222 + _ASM_EXTABLE(0b, 0b)
18223 +#endif
18224 +
18225 + : "=m" (v->counter)
18226 + : "m" (v->counter));
18227 +}
18228 +
18229 +/**
18230 + * atomic64_dec_unchecked - decrement atomic64 variable
18231 + * @v: pointer to type atomic64_t
18232 + *
18233 + * Atomically decrements @v by 1.
18234 + */
18235 +static __always_inline void atomic64_dec_unchecked(atomic64_unchecked_t *v)
18236 +{
18237 + asm volatile(LOCK_PREFIX "decq %0\n"
18238 : "=m" (v->counter)
18239 : "m" (v->counter));
18240 }
18241 @@ -111,7 +221,7 @@ static __always_inline void atomic64_dec(atomic64_t *v)
18242 */
18243 static inline int atomic64_dec_and_test(atomic64_t *v)
18244 {
18245 - GEN_UNARY_RMWcc(LOCK_PREFIX "decq", v->counter, "%0", "e");
18246 + GEN_UNARY_RMWcc(LOCK_PREFIX "decq", LOCK_PREFIX "incq", v->counter, "%0", "e");
18247 }
18248
18249 /**
18250 @@ -124,7 +234,7 @@ static inline int atomic64_dec_and_test(atomic64_t *v)
18251 */
18252 static inline int atomic64_inc_and_test(atomic64_t *v)
18253 {
18254 - GEN_UNARY_RMWcc(LOCK_PREFIX "incq", v->counter, "%0", "e");
18255 + GEN_UNARY_RMWcc(LOCK_PREFIX "incq", LOCK_PREFIX "decq", v->counter, "%0", "e");
18256 }
18257
18258 /**
18259 @@ -138,7 +248,7 @@ static inline int atomic64_inc_and_test(atomic64_t *v)
18260 */
18261 static inline int atomic64_add_negative(long i, atomic64_t *v)
18262 {
18263 - GEN_BINARY_RMWcc(LOCK_PREFIX "addq", v->counter, "er", i, "%0", "s");
18264 + GEN_BINARY_RMWcc(LOCK_PREFIX "addq", LOCK_PREFIX "subq", v->counter, "er", i, "%0", "s");
18265 }
18266
18267 /**
18268 @@ -150,6 +260,18 @@ static inline int atomic64_add_negative(long i, atomic64_t *v)
18269 */
18270 static __always_inline long atomic64_add_return(long i, atomic64_t *v)
18271 {
18272 + return i + xadd_check_overflow(&v->counter, i);
18273 +}
18274 +
18275 +/**
18276 + * atomic64_add_return_unchecked - add and return
18277 + * @i: integer value to add
18278 + * @v: pointer to type atomic64_unchecked_t
18279 + *
18280 + * Atomically adds @i to @v and returns @i + @v
18281 + */
18282 +static __always_inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
18283 +{
18284 return i + xadd(&v->counter, i);
18285 }
18286
18287 @@ -159,6 +281,10 @@ static inline long atomic64_sub_return(long i, atomic64_t *v)
18288 }
18289
18290 #define atomic64_inc_return(v) (atomic64_add_return(1, (v)))
18291 +static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
18292 +{
18293 + return atomic64_add_return_unchecked(1, v);
18294 +}
18295 #define atomic64_dec_return(v) (atomic64_sub_return(1, (v)))
18296
18297 static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
18298 @@ -166,6 +292,11 @@ static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
18299 return cmpxchg(&v->counter, old, new);
18300 }
18301
18302 +static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, long new)
18303 +{
18304 + return cmpxchg(&v->counter, old, new);
18305 +}
18306 +
18307 static inline long atomic64_xchg(atomic64_t *v, long new)
18308 {
18309 return xchg(&v->counter, new);
18310 @@ -182,17 +313,30 @@ static inline long atomic64_xchg(atomic64_t *v, long new)
18311 */
18312 static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
18313 {
18314 - long c, old;
18315 + long c, old, new;
18316 c = atomic64_read(v);
18317 for (;;) {
18318 - if (unlikely(c == (u)))
18319 + if (unlikely(c == u))
18320 break;
18321 - old = atomic64_cmpxchg((v), c, c + (a));
18322 +
18323 + asm volatile("add %2,%0\n"
18324 +
18325 +#ifdef CONFIG_PAX_REFCOUNT
18326 + "jno 0f\n"
18327 + "sub %2,%0\n"
18328 + "int $4\n0:\n"
18329 + _ASM_EXTABLE(0b, 0b)
18330 +#endif
18331 +
18332 + : "=r" (new)
18333 + : "0" (c), "ir" (a));
18334 +
18335 + old = atomic64_cmpxchg(v, c, new);
18336 if (likely(old == c))
18337 break;
18338 c = old;
18339 }
18340 - return c != (u);
18341 + return c != u;
18342 }
18343
18344 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
18345 diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h
18346 index e51a8f8..ee075df 100644
18347 --- a/arch/x86/include/asm/barrier.h
18348 +++ b/arch/x86/include/asm/barrier.h
18349 @@ -57,7 +57,7 @@
18350 do { \
18351 compiletime_assert_atomic_type(*p); \
18352 smp_mb(); \
18353 - ACCESS_ONCE(*p) = (v); \
18354 + ACCESS_ONCE_RW(*p) = (v); \
18355 } while (0)
18356
18357 #define smp_load_acquire(p) \
18358 @@ -74,7 +74,7 @@ do { \
18359 do { \
18360 compiletime_assert_atomic_type(*p); \
18361 barrier(); \
18362 - ACCESS_ONCE(*p) = (v); \
18363 + ACCESS_ONCE_RW(*p) = (v); \
18364 } while (0)
18365
18366 #define smp_load_acquire(p) \
18367 diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
18368 index cfe3b95..d01b118 100644
18369 --- a/arch/x86/include/asm/bitops.h
18370 +++ b/arch/x86/include/asm/bitops.h
18371 @@ -50,7 +50,7 @@
18372 * a mask operation on a byte.
18373 */
18374 #define IS_IMMEDIATE(nr) (__builtin_constant_p(nr))
18375 -#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((void *)(addr) + ((nr)>>3))
18376 +#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((volatile void *)(addr) + ((nr)>>3))
18377 #define CONST_MASK(nr) (1 << ((nr) & 7))
18378
18379 /**
18380 @@ -203,7 +203,7 @@ static inline void change_bit(long nr, volatile unsigned long *addr)
18381 */
18382 static inline int test_and_set_bit(long nr, volatile unsigned long *addr)
18383 {
18384 - GEN_BINARY_RMWcc(LOCK_PREFIX "bts", *addr, "Ir", nr, "%0", "c");
18385 + GEN_BINARY_RMWcc_unchecked(LOCK_PREFIX "bts", *addr, "Ir", nr, "%0", "c");
18386 }
18387
18388 /**
18389 @@ -249,7 +249,7 @@ static inline int __test_and_set_bit(long nr, volatile unsigned long *addr)
18390 */
18391 static inline int test_and_clear_bit(long nr, volatile unsigned long *addr)
18392 {
18393 - GEN_BINARY_RMWcc(LOCK_PREFIX "btr", *addr, "Ir", nr, "%0", "c");
18394 + GEN_BINARY_RMWcc_unchecked(LOCK_PREFIX "btr", *addr, "Ir", nr, "%0", "c");
18395 }
18396
18397 /**
18398 @@ -302,7 +302,7 @@ static inline int __test_and_change_bit(long nr, volatile unsigned long *addr)
18399 */
18400 static inline int test_and_change_bit(long nr, volatile unsigned long *addr)
18401 {
18402 - GEN_BINARY_RMWcc(LOCK_PREFIX "btc", *addr, "Ir", nr, "%0", "c");
18403 + GEN_BINARY_RMWcc_unchecked(LOCK_PREFIX "btc", *addr, "Ir", nr, "%0", "c");
18404 }
18405
18406 static __always_inline int constant_test_bit(long nr, const volatile unsigned long *addr)
18407 @@ -343,7 +343,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
18408 *
18409 * Undefined if no bit exists, so code should check against 0 first.
18410 */
18411 -static inline unsigned long __ffs(unsigned long word)
18412 +static inline unsigned long __intentional_overflow(-1) __ffs(unsigned long word)
18413 {
18414 asm("rep; bsf %1,%0"
18415 : "=r" (word)
18416 @@ -357,7 +357,7 @@ static inline unsigned long __ffs(unsigned long word)
18417 *
18418 * Undefined if no zero exists, so code should check against ~0UL first.
18419 */
18420 -static inline unsigned long ffz(unsigned long word)
18421 +static inline unsigned long __intentional_overflow(-1) ffz(unsigned long word)
18422 {
18423 asm("rep; bsf %1,%0"
18424 : "=r" (word)
18425 @@ -371,7 +371,7 @@ static inline unsigned long ffz(unsigned long word)
18426 *
18427 * Undefined if no set bit exists, so code should check against 0 first.
18428 */
18429 -static inline unsigned long __fls(unsigned long word)
18430 +static inline unsigned long __intentional_overflow(-1) __fls(unsigned long word)
18431 {
18432 asm("bsr %1,%0"
18433 : "=r" (word)
18434 @@ -434,7 +434,7 @@ static inline int ffs(int x)
18435 * set bit if value is nonzero. The last (most significant) bit is
18436 * at position 32.
18437 */
18438 -static inline int fls(int x)
18439 +static inline int __intentional_overflow(-1) fls(int x)
18440 {
18441 int r;
18442
18443 @@ -476,7 +476,7 @@ static inline int fls(int x)
18444 * at position 64.
18445 */
18446 #ifdef CONFIG_X86_64
18447 -static __always_inline int fls64(__u64 x)
18448 +static __always_inline __intentional_overflow(-1) int fls64(__u64 x)
18449 {
18450 int bitpos = -1;
18451 /*
18452 diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h
18453 index 4fa687a..4ca636f 100644
18454 --- a/arch/x86/include/asm/boot.h
18455 +++ b/arch/x86/include/asm/boot.h
18456 @@ -6,7 +6,7 @@
18457 #include <uapi/asm/boot.h>
18458
18459 /* Physical address where kernel should be loaded. */
18460 -#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
18461 +#define ____LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
18462 + (CONFIG_PHYSICAL_ALIGN - 1)) \
18463 & ~(CONFIG_PHYSICAL_ALIGN - 1))
18464
18465 diff --git a/arch/x86/include/asm/cache.h b/arch/x86/include/asm/cache.h
18466 index 48f99f1..d78ebf9 100644
18467 --- a/arch/x86/include/asm/cache.h
18468 +++ b/arch/x86/include/asm/cache.h
18469 @@ -5,12 +5,13 @@
18470
18471 /* L1 cache line size */
18472 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
18473 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
18474 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
18475
18476 #define __read_mostly __attribute__((__section__(".data..read_mostly")))
18477 +#define __read_only __attribute__((__section__(".data..read_only")))
18478
18479 #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT
18480 -#define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT)
18481 +#define INTERNODE_CACHE_BYTES (_AC(1,UL) << INTERNODE_CACHE_SHIFT)
18482
18483 #ifdef CONFIG_X86_VSMP
18484 #ifdef CONFIG_SMP
18485 diff --git a/arch/x86/include/asm/checksum_32.h b/arch/x86/include/asm/checksum_32.h
18486 index f50de69..2b0a458 100644
18487 --- a/arch/x86/include/asm/checksum_32.h
18488 +++ b/arch/x86/include/asm/checksum_32.h
18489 @@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst,
18490 int len, __wsum sum,
18491 int *src_err_ptr, int *dst_err_ptr);
18492
18493 +asmlinkage __wsum csum_partial_copy_generic_to_user(const void *src, void *dst,
18494 + int len, __wsum sum,
18495 + int *src_err_ptr, int *dst_err_ptr);
18496 +
18497 +asmlinkage __wsum csum_partial_copy_generic_from_user(const void *src, void *dst,
18498 + int len, __wsum sum,
18499 + int *src_err_ptr, int *dst_err_ptr);
18500 +
18501 /*
18502 * Note: when you get a NULL pointer exception here this means someone
18503 * passed in an incorrect kernel address to one of these functions.
18504 @@ -53,7 +61,7 @@ static inline __wsum csum_partial_copy_from_user(const void __user *src,
18505
18506 might_sleep();
18507 stac();
18508 - ret = csum_partial_copy_generic((__force void *)src, dst,
18509 + ret = csum_partial_copy_generic_from_user((__force void *)src, dst,
18510 len, sum, err_ptr, NULL);
18511 clac();
18512
18513 @@ -187,7 +195,7 @@ static inline __wsum csum_and_copy_to_user(const void *src,
18514 might_sleep();
18515 if (access_ok(VERIFY_WRITE, dst, len)) {
18516 stac();
18517 - ret = csum_partial_copy_generic(src, (__force void *)dst,
18518 + ret = csum_partial_copy_generic_to_user(src, (__force void *)dst,
18519 len, sum, NULL, err_ptr);
18520 clac();
18521 return ret;
18522 diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
18523 index ad19841..0784041 100644
18524 --- a/arch/x86/include/asm/cmpxchg.h
18525 +++ b/arch/x86/include/asm/cmpxchg.h
18526 @@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void)
18527 __compiletime_error("Bad argument size for cmpxchg");
18528 extern void __xadd_wrong_size(void)
18529 __compiletime_error("Bad argument size for xadd");
18530 +extern void __xadd_check_overflow_wrong_size(void)
18531 + __compiletime_error("Bad argument size for xadd_check_overflow");
18532 extern void __add_wrong_size(void)
18533 __compiletime_error("Bad argument size for add");
18534 +extern void __add_check_overflow_wrong_size(void)
18535 + __compiletime_error("Bad argument size for add_check_overflow");
18536
18537 /*
18538 * Constants for operation sizes. On 32-bit, the 64-bit size it set to
18539 @@ -67,6 +71,38 @@ extern void __add_wrong_size(void)
18540 __ret; \
18541 })
18542
18543 +#ifdef CONFIG_PAX_REFCOUNT
18544 +#define __xchg_op_check_overflow(ptr, arg, op, lock) \
18545 + ({ \
18546 + __typeof__ (*(ptr)) __ret = (arg); \
18547 + switch (sizeof(*(ptr))) { \
18548 + case __X86_CASE_L: \
18549 + asm volatile (lock #op "l %0, %1\n" \
18550 + "jno 0f\n" \
18551 + "mov %0,%1\n" \
18552 + "int $4\n0:\n" \
18553 + _ASM_EXTABLE(0b, 0b) \
18554 + : "+r" (__ret), "+m" (*(ptr)) \
18555 + : : "memory", "cc"); \
18556 + break; \
18557 + case __X86_CASE_Q: \
18558 + asm volatile (lock #op "q %q0, %1\n" \
18559 + "jno 0f\n" \
18560 + "mov %0,%1\n" \
18561 + "int $4\n0:\n" \
18562 + _ASM_EXTABLE(0b, 0b) \
18563 + : "+r" (__ret), "+m" (*(ptr)) \
18564 + : : "memory", "cc"); \
18565 + break; \
18566 + default: \
18567 + __ ## op ## _check_overflow_wrong_size(); \
18568 + } \
18569 + __ret; \
18570 + })
18571 +#else
18572 +#define __xchg_op_check_overflow(ptr, arg, op, lock) __xchg_op(ptr, arg, op, lock)
18573 +#endif
18574 +
18575 /*
18576 * Note: no "lock" prefix even on SMP: xchg always implies lock anyway.
18577 * Since this is generally used to protect other memory information, we
18578 @@ -165,6 +201,9 @@ extern void __add_wrong_size(void)
18579 #define xadd_sync(ptr, inc) __xadd((ptr), (inc), "lock; ")
18580 #define xadd_local(ptr, inc) __xadd((ptr), (inc), "")
18581
18582 +#define __xadd_check_overflow(ptr, inc, lock) __xchg_op_check_overflow((ptr), (inc), xadd, lock)
18583 +#define xadd_check_overflow(ptr, inc) __xadd_check_overflow((ptr), (inc), LOCK_PREFIX)
18584 +
18585 #define __add(ptr, inc, lock) \
18586 ({ \
18587 __typeof__ (*(ptr)) __ret = (inc); \
18588 diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h
18589 index acdee09..a553db3 100644
18590 --- a/arch/x86/include/asm/compat.h
18591 +++ b/arch/x86/include/asm/compat.h
18592 @@ -41,7 +41,7 @@ typedef s64 __attribute__((aligned(4))) compat_s64;
18593 typedef u32 compat_uint_t;
18594 typedef u32 compat_ulong_t;
18595 typedef u64 __attribute__((aligned(4))) compat_u64;
18596 -typedef u32 compat_uptr_t;
18597 +typedef u32 __user compat_uptr_t;
18598
18599 struct compat_timespec {
18600 compat_time_t tv_sec;
18601 diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
18602 index 3d6606f..300641d 100644
18603 --- a/arch/x86/include/asm/cpufeature.h
18604 +++ b/arch/x86/include/asm/cpufeature.h
18605 @@ -214,7 +214,8 @@
18606 #define X86_FEATURE_PAUSEFILTER ( 8*32+13) /* AMD filtered pause intercept */
18607 #define X86_FEATURE_PFTHRESHOLD ( 8*32+14) /* AMD pause filter threshold */
18608 #define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */
18609 -
18610 +#define X86_FEATURE_PCIDUDEREF ( 8*32+30) /* PaX PCID based UDEREF */
18611 +#define X86_FEATURE_STRONGUDEREF (8*32+31) /* PaX PCID based strong UDEREF */
18612
18613 /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */
18614 #define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/
18615 @@ -222,7 +223,7 @@
18616 #define X86_FEATURE_BMI1 ( 9*32+ 3) /* 1st group bit manipulation extensions */
18617 #define X86_FEATURE_HLE ( 9*32+ 4) /* Hardware Lock Elision */
18618 #define X86_FEATURE_AVX2 ( 9*32+ 5) /* AVX2 instructions */
18619 -#define X86_FEATURE_SMEP ( 9*32+ 7) /* Supervisor Mode Execution Protection */
18620 +#define X86_FEATURE_SMEP ( 9*32+ 7) /* Supervisor Mode Execution Prevention */
18621 #define X86_FEATURE_BMI2 ( 9*32+ 8) /* 2nd group bit manipulation extensions */
18622 #define X86_FEATURE_ERMS ( 9*32+ 9) /* Enhanced REP MOVSB/STOSB */
18623 #define X86_FEATURE_INVPCID ( 9*32+10) /* Invalidate Processor Context ID */
18624 @@ -401,6 +402,7 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
18625 #define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU)
18626 #define cpu_has_topoext boot_cpu_has(X86_FEATURE_TOPOEXT)
18627 #define cpu_has_bpext boot_cpu_has(X86_FEATURE_BPEXT)
18628 +#define cpu_has_pcid boot_cpu_has(X86_FEATURE_PCID)
18629
18630 #if __GNUC__ >= 4
18631 extern void warn_pre_alternatives(void);
18632 @@ -454,7 +456,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
18633
18634 #ifdef CONFIG_X86_DEBUG_STATIC_CPU_HAS
18635 t_warn:
18636 - warn_pre_alternatives();
18637 + if (bit != X86_FEATURE_PCID && bit != X86_FEATURE_INVPCID && bit != X86_FEATURE_PCIDUDEREF)
18638 + warn_pre_alternatives();
18639 return false;
18640 #endif
18641
18642 @@ -475,7 +478,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
18643 ".section .discard,\"aw\",@progbits\n"
18644 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
18645 ".previous\n"
18646 - ".section .altinstr_replacement,\"ax\"\n"
18647 + ".section .altinstr_replacement,\"a\"\n"
18648 "3: movb $1,%0\n"
18649 "4:\n"
18650 ".previous\n"
18651 @@ -510,7 +513,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
18652 " .byte 5f - 4f\n" /* repl len */
18653 " .byte 3b - 2b\n" /* pad len */
18654 ".previous\n"
18655 - ".section .altinstr_replacement,\"ax\"\n"
18656 + ".section .altinstr_replacement,\"a\"\n"
18657 "4: jmp %l[t_no]\n"
18658 "5:\n"
18659 ".previous\n"
18660 @@ -545,7 +548,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
18661 ".section .discard,\"aw\",@progbits\n"
18662 " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
18663 ".previous\n"
18664 - ".section .altinstr_replacement,\"ax\"\n"
18665 + ".section .altinstr_replacement,\"a\"\n"
18666 "3: movb $0,%0\n"
18667 "4:\n"
18668 ".previous\n"
18669 @@ -560,7 +563,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
18670 ".section .discard,\"aw\",@progbits\n"
18671 " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */
18672 ".previous\n"
18673 - ".section .altinstr_replacement,\"ax\"\n"
18674 + ".section .altinstr_replacement,\"a\"\n"
18675 "5: movb $1,%0\n"
18676 "6:\n"
18677 ".previous\n"
18678 diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
18679 index 4e10d73..7319a47 100644
18680 --- a/arch/x86/include/asm/desc.h
18681 +++ b/arch/x86/include/asm/desc.h
18682 @@ -4,6 +4,7 @@
18683 #include <asm/desc_defs.h>
18684 #include <asm/ldt.h>
18685 #include <asm/mmu.h>
18686 +#include <asm/pgtable.h>
18687
18688 #include <linux/smp.h>
18689 #include <linux/percpu.h>
18690 @@ -17,6 +18,7 @@ static inline void fill_ldt(struct desc_struct *desc, const struct user_desc *in
18691
18692 desc->type = (info->read_exec_only ^ 1) << 1;
18693 desc->type |= info->contents << 2;
18694 + desc->type |= info->seg_not_present ^ 1;
18695
18696 desc->s = 1;
18697 desc->dpl = 0x3;
18698 @@ -35,19 +37,14 @@ static inline void fill_ldt(struct desc_struct *desc, const struct user_desc *in
18699 }
18700
18701 extern struct desc_ptr idt_descr;
18702 -extern gate_desc idt_table[];
18703 -extern struct desc_ptr debug_idt_descr;
18704 -extern gate_desc debug_idt_table[];
18705 -
18706 -struct gdt_page {
18707 - struct desc_struct gdt[GDT_ENTRIES];
18708 -} __attribute__((aligned(PAGE_SIZE)));
18709 -
18710 -DECLARE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page);
18711 +extern gate_desc idt_table[IDT_ENTRIES];
18712 +extern const struct desc_ptr debug_idt_descr;
18713 +extern gate_desc debug_idt_table[IDT_ENTRIES];
18714
18715 +extern struct desc_struct cpu_gdt_table[NR_CPUS][PAGE_SIZE / sizeof(struct desc_struct)];
18716 static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
18717 {
18718 - return per_cpu(gdt_page, cpu).gdt;
18719 + return cpu_gdt_table[cpu];
18720 }
18721
18722 #ifdef CONFIG_X86_64
18723 @@ -72,8 +69,14 @@ static inline void pack_gate(gate_desc *gate, unsigned char type,
18724 unsigned long base, unsigned dpl, unsigned flags,
18725 unsigned short seg)
18726 {
18727 - gate->a = (seg << 16) | (base & 0xffff);
18728 - gate->b = (base & 0xffff0000) | (((0x80 | type | (dpl << 5)) & 0xff) << 8);
18729 + gate->gate.offset_low = base;
18730 + gate->gate.seg = seg;
18731 + gate->gate.reserved = 0;
18732 + gate->gate.type = type;
18733 + gate->gate.s = 0;
18734 + gate->gate.dpl = dpl;
18735 + gate->gate.p = 1;
18736 + gate->gate.offset_high = base >> 16;
18737 }
18738
18739 #endif
18740 @@ -118,12 +121,16 @@ static inline void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries)
18741
18742 static inline void native_write_idt_entry(gate_desc *idt, int entry, const gate_desc *gate)
18743 {
18744 + pax_open_kernel();
18745 memcpy(&idt[entry], gate, sizeof(*gate));
18746 + pax_close_kernel();
18747 }
18748
18749 static inline void native_write_ldt_entry(struct desc_struct *ldt, int entry, const void *desc)
18750 {
18751 + pax_open_kernel();
18752 memcpy(&ldt[entry], desc, 8);
18753 + pax_close_kernel();
18754 }
18755
18756 static inline void
18757 @@ -137,7 +144,9 @@ native_write_gdt_entry(struct desc_struct *gdt, int entry, const void *desc, int
18758 default: size = sizeof(*gdt); break;
18759 }
18760
18761 + pax_open_kernel();
18762 memcpy(&gdt[entry], desc, size);
18763 + pax_close_kernel();
18764 }
18765
18766 static inline void pack_descriptor(struct desc_struct *desc, unsigned long base,
18767 @@ -210,7 +219,9 @@ static inline void native_set_ldt(const void *addr, unsigned int entries)
18768
18769 static inline void native_load_tr_desc(void)
18770 {
18771 + pax_open_kernel();
18772 asm volatile("ltr %w0"::"q" (GDT_ENTRY_TSS*8));
18773 + pax_close_kernel();
18774 }
18775
18776 static inline void native_load_gdt(const struct desc_ptr *dtr)
18777 @@ -247,8 +258,10 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
18778 struct desc_struct *gdt = get_cpu_gdt_table(cpu);
18779 unsigned int i;
18780
18781 + pax_open_kernel();
18782 for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++)
18783 gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i];
18784 + pax_close_kernel();
18785 }
18786
18787 /* This intentionally ignores lm, since 32-bit apps don't have that field. */
18788 @@ -280,7 +293,7 @@ static inline void clear_LDT(void)
18789 set_ldt(NULL, 0);
18790 }
18791
18792 -static inline unsigned long get_desc_base(const struct desc_struct *desc)
18793 +static inline unsigned long __intentional_overflow(-1) get_desc_base(const struct desc_struct *desc)
18794 {
18795 return (unsigned)(desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24));
18796 }
18797 @@ -304,7 +317,7 @@ static inline void set_desc_limit(struct desc_struct *desc, unsigned long limit)
18798 }
18799
18800 #ifdef CONFIG_X86_64
18801 -static inline void set_nmi_gate(int gate, void *addr)
18802 +static inline void set_nmi_gate(int gate, const void *addr)
18803 {
18804 gate_desc s;
18805
18806 @@ -314,14 +327,14 @@ static inline void set_nmi_gate(int gate, void *addr)
18807 #endif
18808
18809 #ifdef CONFIG_TRACING
18810 -extern struct desc_ptr trace_idt_descr;
18811 -extern gate_desc trace_idt_table[];
18812 +extern const struct desc_ptr trace_idt_descr;
18813 +extern gate_desc trace_idt_table[IDT_ENTRIES];
18814 static inline void write_trace_idt_entry(int entry, const gate_desc *gate)
18815 {
18816 write_idt_entry(trace_idt_table, entry, gate);
18817 }
18818
18819 -static inline void _trace_set_gate(int gate, unsigned type, void *addr,
18820 +static inline void _trace_set_gate(int gate, unsigned type, const void *addr,
18821 unsigned dpl, unsigned ist, unsigned seg)
18822 {
18823 gate_desc s;
18824 @@ -341,7 +354,7 @@ static inline void write_trace_idt_entry(int entry, const gate_desc *gate)
18825 #define _trace_set_gate(gate, type, addr, dpl, ist, seg)
18826 #endif
18827
18828 -static inline void _set_gate(int gate, unsigned type, void *addr,
18829 +static inline void _set_gate(int gate, unsigned type, const void *addr,
18830 unsigned dpl, unsigned ist, unsigned seg)
18831 {
18832 gate_desc s;
18833 @@ -364,14 +377,14 @@ static inline void _set_gate(int gate, unsigned type, void *addr,
18834 #define set_intr_gate_notrace(n, addr) \
18835 do { \
18836 BUG_ON((unsigned)n > 0xFF); \
18837 - _set_gate(n, GATE_INTERRUPT, (void *)addr, 0, 0, \
18838 + _set_gate(n, GATE_INTERRUPT, (const void *)addr, 0, 0, \
18839 __KERNEL_CS); \
18840 } while (0)
18841
18842 #define set_intr_gate(n, addr) \
18843 do { \
18844 set_intr_gate_notrace(n, addr); \
18845 - _trace_set_gate(n, GATE_INTERRUPT, (void *)trace_##addr,\
18846 + _trace_set_gate(n, GATE_INTERRUPT, (const void *)trace_##addr,\
18847 0, 0, __KERNEL_CS); \
18848 } while (0)
18849
18850 @@ -399,19 +412,19 @@ static inline void alloc_system_vector(int vector)
18851 /*
18852 * This routine sets up an interrupt gate at directory privilege level 3.
18853 */
18854 -static inline void set_system_intr_gate(unsigned int n, void *addr)
18855 +static inline void set_system_intr_gate(unsigned int n, const void *addr)
18856 {
18857 BUG_ON((unsigned)n > 0xFF);
18858 _set_gate(n, GATE_INTERRUPT, addr, 0x3, 0, __KERNEL_CS);
18859 }
18860
18861 -static inline void set_system_trap_gate(unsigned int n, void *addr)
18862 +static inline void set_system_trap_gate(unsigned int n, const void *addr)
18863 {
18864 BUG_ON((unsigned)n > 0xFF);
18865 _set_gate(n, GATE_TRAP, addr, 0x3, 0, __KERNEL_CS);
18866 }
18867
18868 -static inline void set_trap_gate(unsigned int n, void *addr)
18869 +static inline void set_trap_gate(unsigned int n, const void *addr)
18870 {
18871 BUG_ON((unsigned)n > 0xFF);
18872 _set_gate(n, GATE_TRAP, addr, 0, 0, __KERNEL_CS);
18873 @@ -420,16 +433,16 @@ static inline void set_trap_gate(unsigned int n, void *addr)
18874 static inline void set_task_gate(unsigned int n, unsigned int gdt_entry)
18875 {
18876 BUG_ON((unsigned)n > 0xFF);
18877 - _set_gate(n, GATE_TASK, (void *)0, 0, 0, (gdt_entry<<3));
18878 + _set_gate(n, GATE_TASK, (const void *)0, 0, 0, (gdt_entry<<3));
18879 }
18880
18881 -static inline void set_intr_gate_ist(int n, void *addr, unsigned ist)
18882 +static inline void set_intr_gate_ist(int n, const void *addr, unsigned ist)
18883 {
18884 BUG_ON((unsigned)n > 0xFF);
18885 _set_gate(n, GATE_INTERRUPT, addr, 0, ist, __KERNEL_CS);
18886 }
18887
18888 -static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
18889 +static inline void set_system_intr_gate_ist(int n, const void *addr, unsigned ist)
18890 {
18891 BUG_ON((unsigned)n > 0xFF);
18892 _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
18893 @@ -501,4 +514,17 @@ static inline void load_current_idt(void)
18894 else
18895 load_idt((const struct desc_ptr *)&idt_descr);
18896 }
18897 +
18898 +#ifdef CONFIG_X86_32
18899 +static inline void set_user_cs(unsigned long base, unsigned long limit, int cpu)
18900 +{
18901 + struct desc_struct d;
18902 +
18903 + if (likely(limit))
18904 + limit = (limit - 1UL) >> PAGE_SHIFT;
18905 + pack_descriptor(&d, base, limit, 0xFB, 0xC);
18906 + write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_DEFAULT_USER_CS, &d, DESCTYPE_S);
18907 +}
18908 +#endif
18909 +
18910 #endif /* _ASM_X86_DESC_H */
18911 diff --git a/arch/x86/include/asm/desc_defs.h b/arch/x86/include/asm/desc_defs.h
18912 index 278441f..b95a174 100644
18913 --- a/arch/x86/include/asm/desc_defs.h
18914 +++ b/arch/x86/include/asm/desc_defs.h
18915 @@ -31,6 +31,12 @@ struct desc_struct {
18916 unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
18917 unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
18918 };
18919 + struct {
18920 + u16 offset_low;
18921 + u16 seg;
18922 + unsigned reserved: 8, type: 4, s: 1, dpl: 2, p: 1;
18923 + unsigned offset_high: 16;
18924 + } gate;
18925 };
18926 } __attribute__((packed));
18927
18928 diff --git a/arch/x86/include/asm/div64.h b/arch/x86/include/asm/div64.h
18929 index ced283a..ffe04cc 100644
18930 --- a/arch/x86/include/asm/div64.h
18931 +++ b/arch/x86/include/asm/div64.h
18932 @@ -39,7 +39,7 @@
18933 __mod; \
18934 })
18935
18936 -static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
18937 +static inline u64 __intentional_overflow(-1) div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
18938 {
18939 union {
18940 u64 v64;
18941 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
18942 index f161c18..97d43e8 100644
18943 --- a/arch/x86/include/asm/elf.h
18944 +++ b/arch/x86/include/asm/elf.h
18945 @@ -75,9 +75,6 @@ typedef struct user_fxsr_struct elf_fpxregset_t;
18946
18947 #include <asm/vdso.h>
18948
18949 -#ifdef CONFIG_X86_64
18950 -extern unsigned int vdso64_enabled;
18951 -#endif
18952 #if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT)
18953 extern unsigned int vdso32_enabled;
18954 #endif
18955 @@ -250,7 +247,25 @@ extern int force_personality32;
18956 the loader. We need to make sure that it is out of the way of the program
18957 that it will "exec", and that there is sufficient room for the brk. */
18958
18959 +#ifdef CONFIG_PAX_SEGMEXEC
18960 +#define ELF_ET_DYN_BASE ((current->mm->pax_flags & MF_PAX_SEGMEXEC) ? SEGMEXEC_TASK_SIZE/3*2 : TASK_SIZE/3*2)
18961 +#else
18962 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
18963 +#endif
18964 +
18965 +#ifdef CONFIG_PAX_ASLR
18966 +#ifdef CONFIG_X86_32
18967 +#define PAX_ELF_ET_DYN_BASE 0x10000000UL
18968 +
18969 +#define PAX_DELTA_MMAP_LEN (current->mm->pax_flags & MF_PAX_SEGMEXEC ? 15 : 16)
18970 +#define PAX_DELTA_STACK_LEN (current->mm->pax_flags & MF_PAX_SEGMEXEC ? 15 : 16)
18971 +#else
18972 +#define PAX_ELF_ET_DYN_BASE 0x400000UL
18973 +
18974 +#define PAX_DELTA_MMAP_LEN ((test_thread_flag(TIF_ADDR32)) ? 16 : TASK_SIZE_MAX_SHIFT - PAGE_SHIFT - 3)
18975 +#define PAX_DELTA_STACK_LEN ((test_thread_flag(TIF_ADDR32)) ? 16 : TASK_SIZE_MAX_SHIFT - PAGE_SHIFT - 3)
18976 +#endif
18977 +#endif
18978
18979 /* This yields a mask that user programs can use to figure out what
18980 instruction set this CPU supports. This could be done in user space,
18981 @@ -299,17 +314,13 @@ do { \
18982
18983 #define ARCH_DLINFO \
18984 do { \
18985 - if (vdso64_enabled) \
18986 - NEW_AUX_ENT(AT_SYSINFO_EHDR, \
18987 - (unsigned long __force)current->mm->context.vdso); \
18988 + NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso); \
18989 } while (0)
18990
18991 /* As a historical oddity, the x32 and x86_64 vDSOs are controlled together. */
18992 #define ARCH_DLINFO_X32 \
18993 do { \
18994 - if (vdso64_enabled) \
18995 - NEW_AUX_ENT(AT_SYSINFO_EHDR, \
18996 - (unsigned long __force)current->mm->context.vdso); \
18997 + NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso); \
18998 } while (0)
18999
19000 #define AT_SYSINFO 32
19001 @@ -324,10 +335,10 @@ else \
19002
19003 #endif /* !CONFIG_X86_32 */
19004
19005 -#define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
19006 +#define VDSO_CURRENT_BASE (current->mm->context.vdso)
19007
19008 #define VDSO_ENTRY \
19009 - ((unsigned long)current->mm->context.vdso + \
19010 + (current->mm->context.vdso + \
19011 selected_vdso32->sym___kernel_vsyscall)
19012
19013 struct linux_binprm;
19014 diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
19015 index 77a99ac..39ff7f5 100644
19016 --- a/arch/x86/include/asm/emergency-restart.h
19017 +++ b/arch/x86/include/asm/emergency-restart.h
19018 @@ -1,6 +1,6 @@
19019 #ifndef _ASM_X86_EMERGENCY_RESTART_H
19020 #define _ASM_X86_EMERGENCY_RESTART_H
19021
19022 -extern void machine_emergency_restart(void);
19023 +extern void machine_emergency_restart(void) __noreturn;
19024
19025 #endif /* _ASM_X86_EMERGENCY_RESTART_H */
19026 diff --git a/arch/x86/include/asm/floppy.h b/arch/x86/include/asm/floppy.h
19027 index 1c7eefe..d0e4702 100644
19028 --- a/arch/x86/include/asm/floppy.h
19029 +++ b/arch/x86/include/asm/floppy.h
19030 @@ -229,18 +229,18 @@ static struct fd_routine_l {
19031 int (*_dma_setup)(char *addr, unsigned long size, int mode, int io);
19032 } fd_routine[] = {
19033 {
19034 - request_dma,
19035 - free_dma,
19036 - get_dma_residue,
19037 - dma_mem_alloc,
19038 - hard_dma_setup
19039 + ._request_dma = request_dma,
19040 + ._free_dma = free_dma,
19041 + ._get_dma_residue = get_dma_residue,
19042 + ._dma_mem_alloc = dma_mem_alloc,
19043 + ._dma_setup = hard_dma_setup
19044 },
19045 {
19046 - vdma_request_dma,
19047 - vdma_nop,
19048 - vdma_get_dma_residue,
19049 - vdma_mem_alloc,
19050 - vdma_dma_setup
19051 + ._request_dma = vdma_request_dma,
19052 + ._free_dma = vdma_nop,
19053 + ._get_dma_residue = vdma_get_dma_residue,
19054 + ._dma_mem_alloc = vdma_mem_alloc,
19055 + ._dma_setup = vdma_dma_setup
19056 }
19057 };
19058
19059 diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h
19060 index 3c3550c..995858d 100644
19061 --- a/arch/x86/include/asm/fpu/internal.h
19062 +++ b/arch/x86/include/asm/fpu/internal.h
19063 @@ -97,8 +97,11 @@ extern void fpstate_sanitize_xstate(struct fpu *fpu);
19064 #define user_insn(insn, output, input...) \
19065 ({ \
19066 int err; \
19067 + pax_open_userland(); \
19068 asm volatile(ASM_STAC "\n" \
19069 - "1:" #insn "\n\t" \
19070 + "1:" \
19071 + __copyuser_seg \
19072 + #insn "\n\t" \
19073 "2: " ASM_CLAC "\n" \
19074 ".section .fixup,\"ax\"\n" \
19075 "3: movl $-1,%[err]\n" \
19076 @@ -107,6 +110,7 @@ extern void fpstate_sanitize_xstate(struct fpu *fpu);
19077 _ASM_EXTABLE(1b, 3b) \
19078 : [err] "=r" (err), output \
19079 : "0"(0), input); \
19080 + pax_close_userland(); \
19081 err; \
19082 })
19083
19084 @@ -186,9 +190,9 @@ static inline int copy_user_to_fregs(struct fregs_state __user *fx)
19085 static inline void copy_fxregs_to_kernel(struct fpu *fpu)
19086 {
19087 if (config_enabled(CONFIG_X86_32))
19088 - asm volatile( "fxsave %[fx]" : [fx] "=m" (fpu->state.fxsave));
19089 + asm volatile( "fxsave %[fx]" : [fx] "=m" (fpu->state->fxsave));
19090 else if (config_enabled(CONFIG_AS_FXSAVEQ))
19091 - asm volatile("fxsaveq %[fx]" : [fx] "=m" (fpu->state.fxsave));
19092 + asm volatile("fxsaveq %[fx]" : [fx] "=m" (fpu->state->fxsave));
19093 else {
19094 /* Using "rex64; fxsave %0" is broken because, if the memory
19095 * operand uses any extended registers for addressing, a second
19096 @@ -212,8 +216,8 @@ static inline void copy_fxregs_to_kernel(struct fpu *fpu)
19097 * registers.
19098 */
19099 asm volatile( "rex64/fxsave (%[fx])"
19100 - : "=m" (fpu->state.fxsave)
19101 - : [fx] "R" (&fpu->state.fxsave));
19102 + : "=m" (fpu->state->fxsave)
19103 + : [fx] "R" (&fpu->state->fxsave));
19104 }
19105 }
19106
19107 @@ -388,12 +392,16 @@ static inline int copy_xregs_to_user(struct xregs_state __user *buf)
19108 if (unlikely(err))
19109 return -EFAULT;
19110
19111 + pax_open_userland();
19112 __asm__ __volatile__(ASM_STAC "\n"
19113 - "1:"XSAVE"\n"
19114 + "1:"
19115 + __copyuser_seg
19116 + XSAVE"\n"
19117 "2: " ASM_CLAC "\n"
19118 xstate_fault(err)
19119 : "D" (buf), "a" (-1), "d" (-1), "0" (err)
19120 : "memory");
19121 + pax_close_userland();
19122 return err;
19123 }
19124
19125 @@ -402,17 +410,21 @@ static inline int copy_xregs_to_user(struct xregs_state __user *buf)
19126 */
19127 static inline int copy_user_to_xregs(struct xregs_state __user *buf, u64 mask)
19128 {
19129 - struct xregs_state *xstate = ((__force struct xregs_state *)buf);
19130 + struct xregs_state *xstate = ((__force_kernel struct xregs_state *)buf);
19131 u32 lmask = mask;
19132 u32 hmask = mask >> 32;
19133 int err = 0;
19134
19135 + pax_open_userland();
19136 __asm__ __volatile__(ASM_STAC "\n"
19137 - "1:"XRSTOR"\n"
19138 + "1:"
19139 + __copyuser_seg
19140 + XRSTOR"\n"
19141 "2: " ASM_CLAC "\n"
19142 xstate_fault(err)
19143 : "D" (xstate), "a" (lmask), "d" (hmask), "0" (err)
19144 : "memory"); /* memory required? */
19145 + pax_close_userland();
19146 return err;
19147 }
19148
19149 @@ -429,7 +441,7 @@ static inline int copy_user_to_xregs(struct xregs_state __user *buf, u64 mask)
19150 static inline int copy_fpregs_to_fpstate(struct fpu *fpu)
19151 {
19152 if (likely(use_xsave())) {
19153 - copy_xregs_to_kernel(&fpu->state.xsave);
19154 + copy_xregs_to_kernel(&fpu->state->xsave);
19155 return 1;
19156 }
19157
19158 @@ -442,7 +454,7 @@ static inline int copy_fpregs_to_fpstate(struct fpu *fpu)
19159 * Legacy FPU register saving, FNSAVE always clears FPU registers,
19160 * so we have to mark them inactive:
19161 */
19162 - asm volatile("fnsave %[fp]; fwait" : [fp] "=m" (fpu->state.fsave));
19163 + asm volatile("fnsave %[fp]; fwait" : [fp] "=m" (fpu->state->fsave));
19164
19165 return 0;
19166 }
19167 @@ -471,7 +483,7 @@ static inline void copy_kernel_to_fpregs(union fpregs_state *fpstate)
19168 "fnclex\n\t"
19169 "emms\n\t"
19170 "fildl %P[addr]" /* set F?P to defined value */
19171 - : : [addr] "m" (fpstate));
19172 + : : [addr] "m" (cpu_tss[raw_smp_processor_id()].x86_tss.sp0));
19173 }
19174
19175 __copy_kernel_to_fpregs(fpstate);
19176 @@ -643,7 +655,7 @@ switch_fpu_prepare(struct fpu *old_fpu, struct fpu *new_fpu, int cpu)
19177 static inline void switch_fpu_finish(struct fpu *new_fpu, fpu_switch_t fpu_switch)
19178 {
19179 if (fpu_switch.preload)
19180 - copy_kernel_to_fpregs(&new_fpu->state);
19181 + copy_kernel_to_fpregs(new_fpu->state);
19182 }
19183
19184 /*
19185 diff --git a/arch/x86/include/asm/fpu/types.h b/arch/x86/include/asm/fpu/types.h
19186 index c49c517..55ff1d0 100644
19187 --- a/arch/x86/include/asm/fpu/types.h
19188 +++ b/arch/x86/include/asm/fpu/types.h
19189 @@ -287,10 +287,9 @@ struct fpu {
19190 * logic, which unconditionally saves/restores all FPU state
19191 * across context switches. (if FPU state exists.)
19192 */
19193 - union fpregs_state state;
19194 + union fpregs_state *state;
19195 /*
19196 - * WARNING: 'state' is dynamically-sized. Do not put
19197 - * anything after it here.
19198 + * WARNING: 'state' is dynamically-sized.
19199 */
19200 };
19201
19202 diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
19203 index b4c1f54..e290c08 100644
19204 --- a/arch/x86/include/asm/futex.h
19205 +++ b/arch/x86/include/asm/futex.h
19206 @@ -12,6 +12,7 @@
19207 #include <asm/smap.h>
19208
19209 #define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \
19210 + typecheck(u32 __user *, uaddr); \
19211 asm volatile("\t" ASM_STAC "\n" \
19212 "1:\t" insn "\n" \
19213 "2:\t" ASM_CLAC "\n" \
19214 @@ -20,15 +21,16 @@
19215 "\tjmp\t2b\n" \
19216 "\t.previous\n" \
19217 _ASM_EXTABLE(1b, 3b) \
19218 - : "=r" (oldval), "=r" (ret), "+m" (*uaddr) \
19219 + : "=r" (oldval), "=r" (ret), "+m" (*(u32 __user *)____m(uaddr)) \
19220 : "i" (-EFAULT), "0" (oparg), "1" (0))
19221
19222 #define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \
19223 + typecheck(u32 __user *, uaddr); \
19224 asm volatile("\t" ASM_STAC "\n" \
19225 "1:\tmovl %2, %0\n" \
19226 "\tmovl\t%0, %3\n" \
19227 "\t" insn "\n" \
19228 - "2:\t" LOCK_PREFIX "cmpxchgl %3, %2\n" \
19229 + "2:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %3, %2\n" \
19230 "\tjnz\t1b\n" \
19231 "3:\t" ASM_CLAC "\n" \
19232 "\t.section .fixup,\"ax\"\n" \
19233 @@ -38,7 +40,7 @@
19234 _ASM_EXTABLE(1b, 4b) \
19235 _ASM_EXTABLE(2b, 4b) \
19236 : "=&a" (oldval), "=&r" (ret), \
19237 - "+m" (*uaddr), "=&r" (tem) \
19238 + "+m" (*(u32 __user *)____m(uaddr)), "=&r" (tem) \
19239 : "r" (oparg), "i" (-EFAULT), "1" (0))
19240
19241 static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
19242 @@ -57,12 +59,13 @@ static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
19243
19244 pagefault_disable();
19245
19246 + pax_open_userland();
19247 switch (op) {
19248 case FUTEX_OP_SET:
19249 - __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
19250 + __futex_atomic_op1(__copyuser_seg"xchgl %0, %2", ret, oldval, uaddr, oparg);
19251 break;
19252 case FUTEX_OP_ADD:
19253 - __futex_atomic_op1(LOCK_PREFIX "xaddl %0, %2", ret, oldval,
19254 + __futex_atomic_op1(LOCK_PREFIX __copyuser_seg"xaddl %0, %2", ret, oldval,
19255 uaddr, oparg);
19256 break;
19257 case FUTEX_OP_OR:
19258 @@ -77,6 +80,7 @@ static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
19259 default:
19260 ret = -ENOSYS;
19261 }
19262 + pax_close_userland();
19263
19264 pagefault_enable();
19265
19266 diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
19267 index 6615032..9c233be 100644
19268 --- a/arch/x86/include/asm/hw_irq.h
19269 +++ b/arch/x86/include/asm/hw_irq.h
19270 @@ -158,8 +158,8 @@ static inline void unlock_vector_lock(void) {}
19271 #endif /* CONFIG_X86_LOCAL_APIC */
19272
19273 /* Statistics */
19274 -extern atomic_t irq_err_count;
19275 -extern atomic_t irq_mis_count;
19276 +extern atomic_unchecked_t irq_err_count;
19277 +extern atomic_unchecked_t irq_mis_count;
19278
19279 extern void elcr_set_level_irq(unsigned int irq);
19280
19281 diff --git a/arch/x86/include/asm/i8259.h b/arch/x86/include/asm/i8259.h
19282 index ccffa53..3c90c87 100644
19283 --- a/arch/x86/include/asm/i8259.h
19284 +++ b/arch/x86/include/asm/i8259.h
19285 @@ -62,7 +62,7 @@ struct legacy_pic {
19286 void (*init)(int auto_eoi);
19287 int (*irq_pending)(unsigned int irq);
19288 void (*make_irq)(unsigned int irq);
19289 -};
19290 +} __do_const;
19291
19292 extern struct legacy_pic *legacy_pic;
19293 extern struct legacy_pic null_legacy_pic;
19294 diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
19295 index cc9c61b..7b17f40 100644
19296 --- a/arch/x86/include/asm/io.h
19297 +++ b/arch/x86/include/asm/io.h
19298 @@ -42,6 +42,7 @@
19299 #include <asm/page.h>
19300 #include <asm/early_ioremap.h>
19301 #include <asm/pgtable_types.h>
19302 +#include <asm/processor.h>
19303
19304 #define build_mmio_read(name, size, type, reg, barrier) \
19305 static inline type name(const volatile void __iomem *addr) \
19306 @@ -54,12 +55,12 @@ static inline void name(type val, volatile void __iomem *addr) \
19307 "m" (*(volatile type __force *)addr) barrier); }
19308
19309 build_mmio_read(readb, "b", unsigned char, "=q", :"memory")
19310 -build_mmio_read(readw, "w", unsigned short, "=r", :"memory")
19311 -build_mmio_read(readl, "l", unsigned int, "=r", :"memory")
19312 +build_mmio_read(__intentional_overflow(-1) readw, "w", unsigned short, "=r", :"memory")
19313 +build_mmio_read(__intentional_overflow(-1) readl, "l", unsigned int, "=r", :"memory")
19314
19315 build_mmio_read(__readb, "b", unsigned char, "=q", )
19316 -build_mmio_read(__readw, "w", unsigned short, "=r", )
19317 -build_mmio_read(__readl, "l", unsigned int, "=r", )
19318 +build_mmio_read(__intentional_overflow(-1) __readw, "w", unsigned short, "=r", )
19319 +build_mmio_read(__intentional_overflow(-1) __readl, "l", unsigned int, "=r", )
19320
19321 build_mmio_write(writeb, "b", unsigned char, "q", :"memory")
19322 build_mmio_write(writew, "w", unsigned short, "r", :"memory")
19323 @@ -115,7 +116,7 @@ build_mmio_write(writeq, "q", unsigned long, "r", :"memory")
19324 * this function
19325 */
19326
19327 -static inline phys_addr_t virt_to_phys(volatile void *address)
19328 +static inline phys_addr_t __intentional_overflow(-1) virt_to_phys(volatile void *address)
19329 {
19330 return __pa(address);
19331 }
19332 @@ -192,7 +193,7 @@ static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
19333 return ioremap_nocache(offset, size);
19334 }
19335
19336 -extern void iounmap(volatile void __iomem *addr);
19337 +extern void iounmap(const volatile void __iomem *addr);
19338
19339 extern void set_iounmap_nonlazy(void);
19340
19341 @@ -200,6 +201,17 @@ extern void set_iounmap_nonlazy(void);
19342
19343 #include <asm-generic/iomap.h>
19344
19345 +#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
19346 +static inline int valid_phys_addr_range(unsigned long addr, size_t count)
19347 +{
19348 + return ((addr + count + PAGE_SIZE - 1) >> PAGE_SHIFT) < (1ULL << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
19349 +}
19350 +
19351 +static inline int valid_mmap_phys_addr_range(unsigned long pfn, size_t count)
19352 +{
19353 + return (pfn + (count >> PAGE_SHIFT)) < (1ULL << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
19354 +}
19355 +
19356 /*
19357 * Convert a virtual cached pointer to an uncached pointer
19358 */
19359 diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
19360 index b77f5ed..a2f791e 100644
19361 --- a/arch/x86/include/asm/irqflags.h
19362 +++ b/arch/x86/include/asm/irqflags.h
19363 @@ -137,6 +137,11 @@ static inline notrace unsigned long arch_local_irq_save(void)
19364 swapgs; \
19365 sysretl
19366
19367 +#define GET_CR0_INTO_RDI mov %cr0, %rdi
19368 +#define SET_RDI_INTO_CR0 mov %rdi, %cr0
19369 +#define GET_CR3_INTO_RDI mov %cr3, %rdi
19370 +#define SET_RDI_INTO_CR3 mov %rdi, %cr3
19371 +
19372 #else
19373 #define INTERRUPT_RETURN iret
19374 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
19375 diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
19376 index 4421b5d..8543006 100644
19377 --- a/arch/x86/include/asm/kprobes.h
19378 +++ b/arch/x86/include/asm/kprobes.h
19379 @@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t;
19380 #define RELATIVEJUMP_SIZE 5
19381 #define RELATIVECALL_OPCODE 0xe8
19382 #define RELATIVE_ADDR_SIZE 4
19383 -#define MAX_STACK_SIZE 64
19384 -#define MIN_STACK_SIZE(ADDR) \
19385 - (((MAX_STACK_SIZE) < (((unsigned long)current_thread_info()) + \
19386 - THREAD_SIZE - (unsigned long)(ADDR))) \
19387 - ? (MAX_STACK_SIZE) \
19388 - : (((unsigned long)current_thread_info()) + \
19389 - THREAD_SIZE - (unsigned long)(ADDR)))
19390 +#define MAX_STACK_SIZE 64UL
19391 +#define MIN_STACK_SIZE(ADDR) min(MAX_STACK_SIZE, current->thread.sp0 - (unsigned long)(ADDR))
19392
19393 #define flush_insn_slot(p) do { } while (0)
19394
19395 diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
19396 index 4ad6560..75c7bdd 100644
19397 --- a/arch/x86/include/asm/local.h
19398 +++ b/arch/x86/include/asm/local.h
19399 @@ -10,33 +10,97 @@ typedef struct {
19400 atomic_long_t a;
19401 } local_t;
19402
19403 +typedef struct {
19404 + atomic_long_unchecked_t a;
19405 +} local_unchecked_t;
19406 +
19407 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
19408
19409 #define local_read(l) atomic_long_read(&(l)->a)
19410 +#define local_read_unchecked(l) atomic_long_read_unchecked(&(l)->a)
19411 #define local_set(l, i) atomic_long_set(&(l)->a, (i))
19412 +#define local_set_unchecked(l, i) atomic_long_set_unchecked(&(l)->a, (i))
19413
19414 static inline void local_inc(local_t *l)
19415 {
19416 - asm volatile(_ASM_INC "%0"
19417 + asm volatile(_ASM_INC "%0\n"
19418 +
19419 +#ifdef CONFIG_PAX_REFCOUNT
19420 + "jno 0f\n"
19421 + _ASM_DEC "%0\n"
19422 + "int $4\n0:\n"
19423 + _ASM_EXTABLE(0b, 0b)
19424 +#endif
19425 +
19426 + : "+m" (l->a.counter));
19427 +}
19428 +
19429 +static inline void local_inc_unchecked(local_unchecked_t *l)
19430 +{
19431 + asm volatile(_ASM_INC "%0\n"
19432 : "+m" (l->a.counter));
19433 }
19434
19435 static inline void local_dec(local_t *l)
19436 {
19437 - asm volatile(_ASM_DEC "%0"
19438 + asm volatile(_ASM_DEC "%0\n"
19439 +
19440 +#ifdef CONFIG_PAX_REFCOUNT
19441 + "jno 0f\n"
19442 + _ASM_INC "%0\n"
19443 + "int $4\n0:\n"
19444 + _ASM_EXTABLE(0b, 0b)
19445 +#endif
19446 +
19447 + : "+m" (l->a.counter));
19448 +}
19449 +
19450 +static inline void local_dec_unchecked(local_unchecked_t *l)
19451 +{
19452 + asm volatile(_ASM_DEC "%0\n"
19453 : "+m" (l->a.counter));
19454 }
19455
19456 static inline void local_add(long i, local_t *l)
19457 {
19458 - asm volatile(_ASM_ADD "%1,%0"
19459 + asm volatile(_ASM_ADD "%1,%0\n"
19460 +
19461 +#ifdef CONFIG_PAX_REFCOUNT
19462 + "jno 0f\n"
19463 + _ASM_SUB "%1,%0\n"
19464 + "int $4\n0:\n"
19465 + _ASM_EXTABLE(0b, 0b)
19466 +#endif
19467 +
19468 + : "+m" (l->a.counter)
19469 + : "ir" (i));
19470 +}
19471 +
19472 +static inline void local_add_unchecked(long i, local_unchecked_t *l)
19473 +{
19474 + asm volatile(_ASM_ADD "%1,%0\n"
19475 : "+m" (l->a.counter)
19476 : "ir" (i));
19477 }
19478
19479 static inline void local_sub(long i, local_t *l)
19480 {
19481 - asm volatile(_ASM_SUB "%1,%0"
19482 + asm volatile(_ASM_SUB "%1,%0\n"
19483 +
19484 +#ifdef CONFIG_PAX_REFCOUNT
19485 + "jno 0f\n"
19486 + _ASM_ADD "%1,%0\n"
19487 + "int $4\n0:\n"
19488 + _ASM_EXTABLE(0b, 0b)
19489 +#endif
19490 +
19491 + : "+m" (l->a.counter)
19492 + : "ir" (i));
19493 +}
19494 +
19495 +static inline void local_sub_unchecked(long i, local_unchecked_t *l)
19496 +{
19497 + asm volatile(_ASM_SUB "%1,%0\n"
19498 : "+m" (l->a.counter)
19499 : "ir" (i));
19500 }
19501 @@ -52,7 +116,7 @@ static inline void local_sub(long i, local_t *l)
19502 */
19503 static inline int local_sub_and_test(long i, local_t *l)
19504 {
19505 - GEN_BINARY_RMWcc(_ASM_SUB, l->a.counter, "er", i, "%0", "e");
19506 + GEN_BINARY_RMWcc(_ASM_SUB, _ASM_ADD, l->a.counter, "er", i, "%0", "e");
19507 }
19508
19509 /**
19510 @@ -65,7 +129,7 @@ static inline int local_sub_and_test(long i, local_t *l)
19511 */
19512 static inline int local_dec_and_test(local_t *l)
19513 {
19514 - GEN_UNARY_RMWcc(_ASM_DEC, l->a.counter, "%0", "e");
19515 + GEN_UNARY_RMWcc(_ASM_DEC, _ASM_INC, l->a.counter, "%0", "e");
19516 }
19517
19518 /**
19519 @@ -78,7 +142,7 @@ static inline int local_dec_and_test(local_t *l)
19520 */
19521 static inline int local_inc_and_test(local_t *l)
19522 {
19523 - GEN_UNARY_RMWcc(_ASM_INC, l->a.counter, "%0", "e");
19524 + GEN_UNARY_RMWcc(_ASM_INC, _ASM_DEC, l->a.counter, "%0", "e");
19525 }
19526
19527 /**
19528 @@ -92,7 +156,7 @@ static inline int local_inc_and_test(local_t *l)
19529 */
19530 static inline int local_add_negative(long i, local_t *l)
19531 {
19532 - GEN_BINARY_RMWcc(_ASM_ADD, l->a.counter, "er", i, "%0", "s");
19533 + GEN_BINARY_RMWcc(_ASM_ADD, _ASM_SUB, l->a.counter, "er", i, "%0", "s");
19534 }
19535
19536 /**
19537 @@ -105,6 +169,30 @@ static inline int local_add_negative(long i, local_t *l)
19538 static inline long local_add_return(long i, local_t *l)
19539 {
19540 long __i = i;
19541 + asm volatile(_ASM_XADD "%0, %1\n"
19542 +
19543 +#ifdef CONFIG_PAX_REFCOUNT
19544 + "jno 0f\n"
19545 + _ASM_MOV "%0,%1\n"
19546 + "int $4\n0:\n"
19547 + _ASM_EXTABLE(0b, 0b)
19548 +#endif
19549 +
19550 + : "+r" (i), "+m" (l->a.counter)
19551 + : : "memory");
19552 + return i + __i;
19553 +}
19554 +
19555 +/**
19556 + * local_add_return_unchecked - add and return
19557 + * @i: integer value to add
19558 + * @l: pointer to type local_unchecked_t
19559 + *
19560 + * Atomically adds @i to @l and returns @i + @l
19561 + */
19562 +static inline long local_add_return_unchecked(long i, local_unchecked_t *l)
19563 +{
19564 + long __i = i;
19565 asm volatile(_ASM_XADD "%0, %1;"
19566 : "+r" (i), "+m" (l->a.counter)
19567 : : "memory");
19568 @@ -121,6 +209,8 @@ static inline long local_sub_return(long i, local_t *l)
19569
19570 #define local_cmpxchg(l, o, n) \
19571 (cmpxchg_local(&((l)->a.counter), (o), (n)))
19572 +#define local_cmpxchg_unchecked(l, o, n) \
19573 + (cmpxchg_local(&((l)->a.counter), (o), (n)))
19574 /* Always has a lock prefix */
19575 #define local_xchg(l, n) (xchg(&((l)->a.counter), (n)))
19576
19577 diff --git a/arch/x86/include/asm/mman.h b/arch/x86/include/asm/mman.h
19578 new file mode 100644
19579 index 0000000..2bfd3ba
19580 --- /dev/null
19581 +++ b/arch/x86/include/asm/mman.h
19582 @@ -0,0 +1,15 @@
19583 +#ifndef _X86_MMAN_H
19584 +#define _X86_MMAN_H
19585 +
19586 +#include <uapi/asm/mman.h>
19587 +
19588 +#ifdef __KERNEL__
19589 +#ifndef __ASSEMBLY__
19590 +#ifdef CONFIG_X86_32
19591 +#define arch_mmap_check i386_mmap_check
19592 +int i386_mmap_check(unsigned long addr, unsigned long len, unsigned long flags);
19593 +#endif
19594 +#endif
19595 +#endif
19596 +
19597 +#endif /* X86_MMAN_H */
19598 diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
19599 index 364d274..e51b4bc 100644
19600 --- a/arch/x86/include/asm/mmu.h
19601 +++ b/arch/x86/include/asm/mmu.h
19602 @@ -17,7 +17,19 @@ typedef struct {
19603 #endif
19604
19605 struct mutex lock;
19606 - void __user *vdso;
19607 + unsigned long vdso;
19608 +
19609 +#ifdef CONFIG_X86_32
19610 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
19611 + unsigned long user_cs_base;
19612 + unsigned long user_cs_limit;
19613 +
19614 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
19615 + cpumask_t cpu_user_cs_mask;
19616 +#endif
19617 +
19618 +#endif
19619 +#endif
19620
19621 atomic_t perf_rdpmc_allowed; /* nonzero if rdpmc is allowed */
19622 } mm_context_t;
19623 diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
19624 index 984abfe..f9bac8b 100644
19625 --- a/arch/x86/include/asm/mmu_context.h
19626 +++ b/arch/x86/include/asm/mmu_context.h
19627 @@ -45,7 +45,7 @@ struct ldt_struct {
19628 * allocations, but it's not worth trying to optimize.
19629 */
19630 struct desc_struct *entries;
19631 - int size;
19632 + unsigned int size;
19633 };
19634
19635 static inline void load_mm_ldt(struct mm_struct *mm)
19636 @@ -86,6 +86,20 @@ void destroy_context(struct mm_struct *mm);
19637
19638 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
19639 {
19640 +
19641 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19642 + if (!(static_cpu_has(X86_FEATURE_PCIDUDEREF))) {
19643 + unsigned int i;
19644 + pgd_t *pgd;
19645 +
19646 + pax_open_kernel();
19647 + pgd = get_cpu_pgd(smp_processor_id(), kernel);
19648 + for (i = USER_PGD_PTRS; i < 2 * USER_PGD_PTRS; ++i)
19649 + set_pgd_batched(pgd+i, native_make_pgd(0));
19650 + pax_close_kernel();
19651 + }
19652 +#endif
19653 +
19654 #ifdef CONFIG_SMP
19655 if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
19656 this_cpu_write(cpu_tlbstate.state, TLBSTATE_LAZY);
19657 @@ -96,16 +110,59 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
19658 struct task_struct *tsk)
19659 {
19660 unsigned cpu = smp_processor_id();
19661 +#if defined(CONFIG_X86_32) && defined(CONFIG_SMP) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
19662 + int tlbstate = TLBSTATE_OK;
19663 +#endif
19664
19665 if (likely(prev != next)) {
19666 #ifdef CONFIG_SMP
19667 +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
19668 + tlbstate = this_cpu_read(cpu_tlbstate.state);
19669 +#endif
19670 this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK);
19671 this_cpu_write(cpu_tlbstate.active_mm, next);
19672 #endif
19673 cpumask_set_cpu(cpu, mm_cpumask(next));
19674
19675 /* Re-load page tables */
19676 +#ifdef CONFIG_PAX_PER_CPU_PGD
19677 + pax_open_kernel();
19678 +
19679 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19680 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF))
19681 + __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd);
19682 + else
19683 +#endif
19684 +
19685 + __clone_user_pgds(get_cpu_pgd(cpu, kernel), next->pgd);
19686 + __shadow_user_pgds(get_cpu_pgd(cpu, kernel) + USER_PGD_PTRS, next->pgd);
19687 + pax_close_kernel();
19688 + BUG_ON((__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL) != (read_cr3() & __PHYSICAL_MASK) && (__pa(get_cpu_pgd(cpu, user)) | PCID_USER) != (read_cr3() & __PHYSICAL_MASK));
19689 +
19690 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19691 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) {
19692 + if (static_cpu_has(X86_FEATURE_INVPCID)) {
19693 + u64 descriptor[2];
19694 + descriptor[0] = PCID_USER;
19695 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory");
19696 + if (!static_cpu_has(X86_FEATURE_STRONGUDEREF)) {
19697 + descriptor[0] = PCID_KERNEL;
19698 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory");
19699 + }
19700 + } else {
19701 + write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER);
19702 + if (static_cpu_has(X86_FEATURE_STRONGUDEREF))
19703 + write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH);
19704 + else
19705 + write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL);
19706 + }
19707 + } else
19708 +#endif
19709 +
19710 + load_cr3(get_cpu_pgd(cpu, kernel));
19711 +#else
19712 load_cr3(next->pgd);
19713 +#endif
19714 trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
19715
19716 /* Stop flush ipis for the previous mm */
19717 @@ -128,9 +185,67 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
19718 */
19719 if (unlikely(prev->context.ldt != next->context.ldt))
19720 load_mm_ldt(next);
19721 +
19722 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
19723 + if (!(__supported_pte_mask & _PAGE_NX)) {
19724 + smp_mb__before_atomic();
19725 + cpumask_clear_cpu(cpu, &prev->context.cpu_user_cs_mask);
19726 + smp_mb__after_atomic();
19727 + cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask);
19728 + }
19729 +#endif
19730 +
19731 +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
19732 + if (unlikely(prev->context.user_cs_base != next->context.user_cs_base ||
19733 + prev->context.user_cs_limit != next->context.user_cs_limit))
19734 + set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu);
19735 +#ifdef CONFIG_SMP
19736 + else if (unlikely(tlbstate != TLBSTATE_OK))
19737 + set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu);
19738 +#endif
19739 +#endif
19740 +
19741 }
19742 + else {
19743 +
19744 +#ifdef CONFIG_PAX_PER_CPU_PGD
19745 + pax_open_kernel();
19746 +
19747 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19748 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF))
19749 + __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd);
19750 + else
19751 +#endif
19752 +
19753 + __clone_user_pgds(get_cpu_pgd(cpu, kernel), next->pgd);
19754 + __shadow_user_pgds(get_cpu_pgd(cpu, kernel) + USER_PGD_PTRS, next->pgd);
19755 + pax_close_kernel();
19756 + BUG_ON((__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL) != (read_cr3() & __PHYSICAL_MASK) && (__pa(get_cpu_pgd(cpu, user)) | PCID_USER) != (read_cr3() & __PHYSICAL_MASK));
19757 +
19758 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
19759 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) {
19760 + if (static_cpu_has(X86_FEATURE_INVPCID)) {
19761 + u64 descriptor[2];
19762 + descriptor[0] = PCID_USER;
19763 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory");
19764 + if (!static_cpu_has(X86_FEATURE_STRONGUDEREF)) {
19765 + descriptor[0] = PCID_KERNEL;
19766 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_CONTEXT) : "memory");
19767 + }
19768 + } else {
19769 + write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER);
19770 + if (static_cpu_has(X86_FEATURE_STRONGUDEREF))
19771 + write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH);
19772 + else
19773 + write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL);
19774 + }
19775 + } else
19776 +#endif
19777 +
19778 + load_cr3(get_cpu_pgd(cpu, kernel));
19779 +#endif
19780 +
19781 #ifdef CONFIG_SMP
19782 - else {
19783 this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK);
19784 BUG_ON(this_cpu_read(cpu_tlbstate.active_mm) != next);
19785
19786 @@ -147,13 +262,30 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
19787 * tlb flush IPI delivery. We must reload CR3
19788 * to make sure to use no freed page tables.
19789 */
19790 +
19791 +#ifndef CONFIG_PAX_PER_CPU_PGD
19792 load_cr3(next->pgd);
19793 trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
19794 +#endif
19795 +
19796 load_mm_cr4(next);
19797 load_mm_ldt(next);
19798 +
19799 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
19800 + if (!(__supported_pte_mask & _PAGE_NX))
19801 + cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask);
19802 +#endif
19803 +
19804 +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
19805 +#ifdef CONFIG_PAX_PAGEEXEC
19806 + if (!((next->pax_flags & MF_PAX_PAGEEXEC) && (__supported_pte_mask & _PAGE_NX)))
19807 +#endif
19808 + set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu);
19809 +#endif
19810 +
19811 }
19812 +#endif
19813 }
19814 -#endif
19815 }
19816
19817 #define activate_mm(prev, next) \
19818 diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
19819 index e3b7819..b257c64 100644
19820 --- a/arch/x86/include/asm/module.h
19821 +++ b/arch/x86/include/asm/module.h
19822 @@ -5,6 +5,7 @@
19823
19824 #ifdef CONFIG_X86_64
19825 /* X86_64 does not define MODULE_PROC_FAMILY */
19826 +#define MODULE_PROC_FAMILY ""
19827 #elif defined CONFIG_M486
19828 #define MODULE_PROC_FAMILY "486 "
19829 #elif defined CONFIG_M586
19830 @@ -57,8 +58,20 @@
19831 #error unknown processor family
19832 #endif
19833
19834 -#ifdef CONFIG_X86_32
19835 -# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
19836 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS
19837 +#define MODULE_PAX_KERNEXEC "KERNEXEC_BTS "
19838 +#elif defined(CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR)
19839 +#define MODULE_PAX_KERNEXEC "KERNEXEC_OR "
19840 +#else
19841 +#define MODULE_PAX_KERNEXEC ""
19842 #endif
19843
19844 +#ifdef CONFIG_PAX_MEMORY_UDEREF
19845 +#define MODULE_PAX_UDEREF "UDEREF "
19846 +#else
19847 +#define MODULE_PAX_UDEREF ""
19848 +#endif
19849 +
19850 +#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF
19851 +
19852 #endif /* _ASM_X86_MODULE_H */
19853 diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h
19854 index 5f2fc44..106caa6 100644
19855 --- a/arch/x86/include/asm/nmi.h
19856 +++ b/arch/x86/include/asm/nmi.h
19857 @@ -36,26 +36,35 @@ enum {
19858
19859 typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
19860
19861 +struct nmiaction;
19862 +
19863 +struct nmiwork {
19864 + const struct nmiaction *action;
19865 + u64 max_duration;
19866 + struct irq_work irq_work;
19867 +};
19868 +
19869 struct nmiaction {
19870 struct list_head list;
19871 nmi_handler_t handler;
19872 - u64 max_duration;
19873 - struct irq_work irq_work;
19874 unsigned long flags;
19875 const char *name;
19876 -};
19877 + struct nmiwork *work;
19878 +} __do_const;
19879
19880 #define register_nmi_handler(t, fn, fg, n, init...) \
19881 ({ \
19882 - static struct nmiaction init fn##_na = { \
19883 + static struct nmiwork fn##_nw; \
19884 + static const struct nmiaction init fn##_na = { \
19885 .handler = (fn), \
19886 .name = (n), \
19887 .flags = (fg), \
19888 + .work = &fn##_nw, \
19889 }; \
19890 __register_nmi_handler((t), &fn##_na); \
19891 })
19892
19893 -int __register_nmi_handler(unsigned int, struct nmiaction *);
19894 +int __register_nmi_handler(unsigned int, const struct nmiaction *);
19895
19896 void unregister_nmi_handler(unsigned int, const char *);
19897
19898 diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
19899 index 802dde3..9183e68 100644
19900 --- a/arch/x86/include/asm/page.h
19901 +++ b/arch/x86/include/asm/page.h
19902 @@ -52,6 +52,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
19903 __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x)))
19904
19905 #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
19906 +#define __early_va(x) ((void *)((unsigned long)(x)+__START_KERNEL_map - phys_base))
19907
19908 #define __boot_va(x) __va(x)
19909 #define __boot_pa(x) __pa(x)
19910 @@ -60,11 +61,21 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
19911 * virt_to_page(kaddr) returns a valid pointer if and only if
19912 * virt_addr_valid(kaddr) returns true.
19913 */
19914 -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
19915 #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
19916 extern bool __virt_addr_valid(unsigned long kaddr);
19917 #define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
19918
19919 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
19920 +#define virt_to_page(kaddr) \
19921 + ({ \
19922 + const void *__kaddr = (const void *)(kaddr); \
19923 + BUG_ON(!virt_addr_valid(__kaddr)); \
19924 + pfn_to_page(__pa(__kaddr) >> PAGE_SHIFT); \
19925 + })
19926 +#else
19927 +#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
19928 +#endif
19929 +
19930 #endif /* __ASSEMBLY__ */
19931
19932 #include <asm-generic/memory_model.h>
19933 diff --git a/arch/x86/include/asm/page_32.h b/arch/x86/include/asm/page_32.h
19934 index 904f528..b4d0d24 100644
19935 --- a/arch/x86/include/asm/page_32.h
19936 +++ b/arch/x86/include/asm/page_32.h
19937 @@ -7,11 +7,17 @@
19938
19939 #define __phys_addr_nodebug(x) ((x) - PAGE_OFFSET)
19940 #ifdef CONFIG_DEBUG_VIRTUAL
19941 -extern unsigned long __phys_addr(unsigned long);
19942 +extern unsigned long __intentional_overflow(-1) __phys_addr(unsigned long);
19943 #else
19944 -#define __phys_addr(x) __phys_addr_nodebug(x)
19945 +static inline unsigned long __intentional_overflow(-1) __phys_addr(unsigned long x)
19946 +{
19947 + return __phys_addr_nodebug(x);
19948 +}
19949 #endif
19950 -#define __phys_addr_symbol(x) __phys_addr(x)
19951 +static inline unsigned long __intentional_overflow(-1) __phys_addr_symbol(unsigned long x)
19952 +{
19953 + return __phys_addr(x);
19954 +}
19955 #define __phys_reloc_hide(x) RELOC_HIDE((x), 0)
19956
19957 #ifdef CONFIG_FLATMEM
19958 diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
19959 index b3bebf9..cb419e7 100644
19960 --- a/arch/x86/include/asm/page_64.h
19961 +++ b/arch/x86/include/asm/page_64.h
19962 @@ -7,9 +7,9 @@
19963
19964 /* duplicated to the one in bootmem.h */
19965 extern unsigned long max_pfn;
19966 -extern unsigned long phys_base;
19967 +extern const unsigned long phys_base;
19968
19969 -static inline unsigned long __phys_addr_nodebug(unsigned long x)
19970 +static inline unsigned long __intentional_overflow(-1) __phys_addr_nodebug(unsigned long x)
19971 {
19972 unsigned long y = x - __START_KERNEL_map;
19973
19974 @@ -20,12 +20,14 @@ static inline unsigned long __phys_addr_nodebug(unsigned long x)
19975 }
19976
19977 #ifdef CONFIG_DEBUG_VIRTUAL
19978 -extern unsigned long __phys_addr(unsigned long);
19979 -extern unsigned long __phys_addr_symbol(unsigned long);
19980 +extern unsigned long __intentional_overflow(-1) __phys_addr(unsigned long);
19981 +extern unsigned long __intentional_overflow(-1) __phys_addr_symbol(unsigned long);
19982 #else
19983 #define __phys_addr(x) __phys_addr_nodebug(x)
19984 -#define __phys_addr_symbol(x) \
19985 - ((unsigned long)(x) - __START_KERNEL_map + phys_base)
19986 +static inline unsigned long __intentional_overflow(-1) __phys_addr_symbol(unsigned long x)
19987 +{
19988 + return x - __START_KERNEL_map + phys_base;
19989 +}
19990 #endif
19991
19992 #define __phys_reloc_hide(x) (x)
19993 diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
19994 index d143bfa..30d1f41 100644
19995 --- a/arch/x86/include/asm/paravirt.h
19996 +++ b/arch/x86/include/asm/paravirt.h
19997 @@ -560,7 +560,7 @@ static inline pmd_t __pmd(pmdval_t val)
19998 return (pmd_t) { ret };
19999 }
20000
20001 -static inline pmdval_t pmd_val(pmd_t pmd)
20002 +static inline __intentional_overflow(-1) pmdval_t pmd_val(pmd_t pmd)
20003 {
20004 pmdval_t ret;
20005
20006 @@ -626,6 +626,18 @@ static inline void set_pgd(pgd_t *pgdp, pgd_t pgd)
20007 val);
20008 }
20009
20010 +static inline void set_pgd_batched(pgd_t *pgdp, pgd_t pgd)
20011 +{
20012 + pgdval_t val = native_pgd_val(pgd);
20013 +
20014 + if (sizeof(pgdval_t) > sizeof(long))
20015 + PVOP_VCALL3(pv_mmu_ops.set_pgd_batched, pgdp,
20016 + val, (u64)val >> 32);
20017 + else
20018 + PVOP_VCALL2(pv_mmu_ops.set_pgd_batched, pgdp,
20019 + val);
20020 +}
20021 +
20022 static inline void pgd_clear(pgd_t *pgdp)
20023 {
20024 set_pgd(pgdp, __pgd(0));
20025 @@ -710,6 +722,21 @@ static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
20026 pv_mmu_ops.set_fixmap(idx, phys, flags);
20027 }
20028
20029 +#ifdef CONFIG_PAX_KERNEXEC
20030 +static inline unsigned long pax_open_kernel(void)
20031 +{
20032 + return PVOP_CALL0(unsigned long, pv_mmu_ops.pax_open_kernel);
20033 +}
20034 +
20035 +static inline unsigned long pax_close_kernel(void)
20036 +{
20037 + return PVOP_CALL0(unsigned long, pv_mmu_ops.pax_close_kernel);
20038 +}
20039 +#else
20040 +static inline unsigned long pax_open_kernel(void) { return 0; }
20041 +static inline unsigned long pax_close_kernel(void) { return 0; }
20042 +#endif
20043 +
20044 #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS)
20045
20046 #ifdef CONFIG_QUEUED_SPINLOCKS
20047 @@ -933,7 +960,7 @@ extern void default_banner(void);
20048
20049 #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4)
20050 #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
20051 -#define PARA_INDIRECT(addr) *%cs:addr
20052 +#define PARA_INDIRECT(addr) *%ss:addr
20053 #endif
20054
20055 #define INTERRUPT_RETURN \
20056 @@ -1003,6 +1030,21 @@ extern void default_banner(void);
20057 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret64), \
20058 CLBR_NONE, \
20059 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64))
20060 +
20061 +#define GET_CR0_INTO_RDI \
20062 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_read_cr0); \
20063 + mov %rax,%rdi
20064 +
20065 +#define SET_RDI_INTO_CR0 \
20066 + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_write_cr0)
20067 +
20068 +#define GET_CR3_INTO_RDI \
20069 + call PARA_INDIRECT(pv_mmu_ops+PV_MMU_read_cr3); \
20070 + mov %rax,%rdi
20071 +
20072 +#define SET_RDI_INTO_CR3 \
20073 + call PARA_INDIRECT(pv_mmu_ops+PV_MMU_write_cr3)
20074 +
20075 #endif /* CONFIG_X86_32 */
20076
20077 #endif /* __ASSEMBLY__ */
20078 diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
20079 index a6b8f9f..fd61ef7 100644
20080 --- a/arch/x86/include/asm/paravirt_types.h
20081 +++ b/arch/x86/include/asm/paravirt_types.h
20082 @@ -84,7 +84,7 @@ struct pv_init_ops {
20083 */
20084 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
20085 unsigned long addr, unsigned len);
20086 -};
20087 +} __no_const __no_randomize_layout;
20088
20089
20090 struct pv_lazy_ops {
20091 @@ -92,13 +92,13 @@ struct pv_lazy_ops {
20092 void (*enter)(void);
20093 void (*leave)(void);
20094 void (*flush)(void);
20095 -};
20096 +} __no_randomize_layout;
20097
20098 struct pv_time_ops {
20099 unsigned long long (*sched_clock)(void);
20100 unsigned long long (*steal_clock)(int cpu);
20101 unsigned long (*get_tsc_khz)(void);
20102 -};
20103 +} __no_const __no_randomize_layout;
20104
20105 struct pv_cpu_ops {
20106 /* hooks for various privileged instructions */
20107 @@ -193,7 +193,7 @@ struct pv_cpu_ops {
20108
20109 void (*start_context_switch)(struct task_struct *prev);
20110 void (*end_context_switch)(struct task_struct *next);
20111 -};
20112 +} __no_const __no_randomize_layout;
20113
20114 struct pv_irq_ops {
20115 /*
20116 @@ -216,7 +216,7 @@ struct pv_irq_ops {
20117 #ifdef CONFIG_X86_64
20118 void (*adjust_exception_frame)(void);
20119 #endif
20120 -};
20121 +} __no_randomize_layout;
20122
20123 struct pv_apic_ops {
20124 #ifdef CONFIG_X86_LOCAL_APIC
20125 @@ -224,7 +224,7 @@ struct pv_apic_ops {
20126 unsigned long start_eip,
20127 unsigned long start_esp);
20128 #endif
20129 -};
20130 +} __no_const __no_randomize_layout;
20131
20132 struct pv_mmu_ops {
20133 unsigned long (*read_cr2)(void);
20134 @@ -314,6 +314,7 @@ struct pv_mmu_ops {
20135 struct paravirt_callee_save make_pud;
20136
20137 void (*set_pgd)(pgd_t *pudp, pgd_t pgdval);
20138 + void (*set_pgd_batched)(pgd_t *pudp, pgd_t pgdval);
20139 #endif /* CONFIG_PGTABLE_LEVELS == 4 */
20140 #endif /* CONFIG_PGTABLE_LEVELS >= 3 */
20141
20142 @@ -325,7 +326,13 @@ struct pv_mmu_ops {
20143 an mfn. We can tell which is which from the index. */
20144 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
20145 phys_addr_t phys, pgprot_t flags);
20146 -};
20147 +
20148 +#ifdef CONFIG_PAX_KERNEXEC
20149 + unsigned long (*pax_open_kernel)(void);
20150 + unsigned long (*pax_close_kernel)(void);
20151 +#endif
20152 +
20153 +} __no_randomize_layout;
20154
20155 struct arch_spinlock;
20156 #ifdef CONFIG_SMP
20157 @@ -347,11 +354,14 @@ struct pv_lock_ops {
20158 struct paravirt_callee_save lock_spinning;
20159 void (*unlock_kick)(struct arch_spinlock *lock, __ticket_t ticket);
20160 #endif /* !CONFIG_QUEUED_SPINLOCKS */
20161 -};
20162 +} __no_randomize_layout;
20163
20164 /* This contains all the paravirt structures: we get a convenient
20165 * number for each function using the offset which we use to indicate
20166 - * what to patch. */
20167 + * what to patch.
20168 + * shouldn't be randomized due to the "NEAT TRICK" in paravirt.c
20169 + */
20170 +
20171 struct paravirt_patch_template {
20172 struct pv_init_ops pv_init_ops;
20173 struct pv_time_ops pv_time_ops;
20174 @@ -360,7 +370,7 @@ struct paravirt_patch_template {
20175 struct pv_apic_ops pv_apic_ops;
20176 struct pv_mmu_ops pv_mmu_ops;
20177 struct pv_lock_ops pv_lock_ops;
20178 -};
20179 +} __no_randomize_layout;
20180
20181 extern struct pv_info pv_info;
20182 extern struct pv_init_ops pv_init_ops;
20183 diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h
20184 index bf7f8b5..ca5799d 100644
20185 --- a/arch/x86/include/asm/pgalloc.h
20186 +++ b/arch/x86/include/asm/pgalloc.h
20187 @@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(struct mm_struct *mm,
20188 pmd_t *pmd, pte_t *pte)
20189 {
20190 paravirt_alloc_pte(mm, __pa(pte) >> PAGE_SHIFT);
20191 + set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE));
20192 +}
20193 +
20194 +static inline void pmd_populate_user(struct mm_struct *mm,
20195 + pmd_t *pmd, pte_t *pte)
20196 +{
20197 + paravirt_alloc_pte(mm, __pa(pte) >> PAGE_SHIFT);
20198 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
20199 }
20200
20201 @@ -108,12 +115,22 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
20202
20203 #ifdef CONFIG_X86_PAE
20204 extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd);
20205 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
20206 +{
20207 + pud_populate(mm, pudp, pmd);
20208 +}
20209 #else /* !CONFIG_X86_PAE */
20210 static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
20211 {
20212 paravirt_alloc_pmd(mm, __pa(pmd) >> PAGE_SHIFT);
20213 set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd)));
20214 }
20215 +
20216 +static inline void pud_populate_kernel(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
20217 +{
20218 + paravirt_alloc_pmd(mm, __pa(pmd) >> PAGE_SHIFT);
20219 + set_pud(pud, __pud(_KERNPG_TABLE | __pa(pmd)));
20220 +}
20221 #endif /* CONFIG_X86_PAE */
20222
20223 #if CONFIG_PGTABLE_LEVELS > 3
20224 @@ -123,6 +140,12 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud)
20225 set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)));
20226 }
20227
20228 +static inline void pgd_populate_kernel(struct mm_struct *mm, pgd_t *pgd, pud_t *pud)
20229 +{
20230 + paravirt_alloc_pud(mm, __pa(pud) >> PAGE_SHIFT);
20231 + set_pgd(pgd, __pgd(_KERNPG_TABLE | __pa(pud)));
20232 +}
20233 +
20234 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
20235 {
20236 return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
20237 diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
20238 index fd74a11..98bd591 100644
20239 --- a/arch/x86/include/asm/pgtable-2level.h
20240 +++ b/arch/x86/include/asm/pgtable-2level.h
20241 @@ -13,12 +13,16 @@
20242 */
20243 static inline void native_set_pte(pte_t *ptep , pte_t pte)
20244 {
20245 + pax_open_kernel();
20246 *ptep = pte;
20247 + pax_close_kernel();
20248 }
20249
20250 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
20251 {
20252 + pax_open_kernel();
20253 *pmdp = pmd;
20254 + pax_close_kernel();
20255 }
20256
20257 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
20258 @@ -34,13 +38,20 @@ static inline void native_pmd_clear(pmd_t *pmdp)
20259 static inline void native_pte_clear(struct mm_struct *mm,
20260 unsigned long addr, pte_t *xp)
20261 {
20262 + pax_open_kernel();
20263 *xp = native_make_pte(0);
20264 + pax_close_kernel();
20265 }
20266
20267 #ifdef CONFIG_SMP
20268 static inline pte_t native_ptep_get_and_clear(pte_t *xp)
20269 {
20270 - return __pte(xchg(&xp->pte_low, 0));
20271 + pte_t pte;
20272 +
20273 + pax_open_kernel();
20274 + pte = __pte(xchg(&xp->pte_low, 0));
20275 + pax_close_kernel();
20276 + return pte;
20277 }
20278 #else
20279 #define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
20280 @@ -49,7 +60,12 @@ static inline pte_t native_ptep_get_and_clear(pte_t *xp)
20281 #ifdef CONFIG_SMP
20282 static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
20283 {
20284 - return __pmd(xchg((pmdval_t *)xp, 0));
20285 + pmd_t pmd;
20286 +
20287 + pax_open_kernel();
20288 + pmd = __pmd(xchg((pmdval_t *)xp, 0));
20289 + pax_close_kernel();
20290 + return pmd;
20291 }
20292 #else
20293 #define native_pmdp_get_and_clear(xp) native_local_pmdp_get_and_clear(xp)
20294 diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
20295 index cdaa58c..4038692 100644
20296 --- a/arch/x86/include/asm/pgtable-3level.h
20297 +++ b/arch/x86/include/asm/pgtable-3level.h
20298 @@ -26,9 +26,11 @@
20299 */
20300 static inline void native_set_pte(pte_t *ptep, pte_t pte)
20301 {
20302 + pax_open_kernel();
20303 ptep->pte_high = pte.pte_high;
20304 smp_wmb();
20305 ptep->pte_low = pte.pte_low;
20306 + pax_close_kernel();
20307 }
20308
20309 #define pmd_read_atomic pmd_read_atomic
20310 @@ -87,17 +89,23 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
20311
20312 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
20313 {
20314 + pax_open_kernel();
20315 set_64bit((unsigned long long *)(ptep), native_pte_val(pte));
20316 + pax_close_kernel();
20317 }
20318
20319 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
20320 {
20321 + pax_open_kernel();
20322 set_64bit((unsigned long long *)(pmdp), native_pmd_val(pmd));
20323 + pax_close_kernel();
20324 }
20325
20326 static inline void native_set_pud(pud_t *pudp, pud_t pud)
20327 {
20328 + pax_open_kernel();
20329 set_64bit((unsigned long long *)(pudp), native_pud_val(pud));
20330 + pax_close_kernel();
20331 }
20332
20333 /*
20334 @@ -108,17 +116,22 @@ static inline void native_set_pud(pud_t *pudp, pud_t pud)
20335 static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
20336 pte_t *ptep)
20337 {
20338 + pax_open_kernel();
20339 ptep->pte_low = 0;
20340 smp_wmb();
20341 ptep->pte_high = 0;
20342 + pax_close_kernel();
20343 }
20344
20345 static inline void native_pmd_clear(pmd_t *pmd)
20346 {
20347 u32 *tmp = (u32 *)pmd;
20348 +
20349 + pax_open_kernel();
20350 *tmp = 0;
20351 smp_wmb();
20352 *(tmp + 1) = 0;
20353 + pax_close_kernel();
20354 }
20355
20356 static inline void pud_clear(pud_t *pudp)
20357 @@ -143,9 +156,11 @@ static inline pte_t native_ptep_get_and_clear(pte_t *ptep)
20358 pte_t res;
20359
20360 /* xchg acts as a barrier before the setting of the high bits */
20361 + pax_open_kernel();
20362 res.pte_low = xchg(&ptep->pte_low, 0);
20363 res.pte_high = ptep->pte_high;
20364 ptep->pte_high = 0;
20365 + pax_close_kernel();
20366
20367 return res;
20368 }
20369 @@ -166,9 +181,11 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *pmdp)
20370 union split_pmd res, *orig = (union split_pmd *)pmdp;
20371
20372 /* xchg acts as a barrier before setting of the high bits */
20373 + pax_open_kernel();
20374 res.pmd_low = xchg(&orig->pmd_low, 0);
20375 res.pmd_high = orig->pmd_high;
20376 orig->pmd_high = 0;
20377 + pax_close_kernel();
20378
20379 return res.pmd;
20380 }
20381 diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
20382 index 867da5b..7ec083d 100644
20383 --- a/arch/x86/include/asm/pgtable.h
20384 +++ b/arch/x86/include/asm/pgtable.h
20385 @@ -47,6 +47,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
20386
20387 #ifndef __PAGETABLE_PUD_FOLDED
20388 #define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd)
20389 +#define set_pgd_batched(pgdp, pgd) native_set_pgd_batched(pgdp, pgd)
20390 #define pgd_clear(pgd) native_pgd_clear(pgd)
20391 #endif
20392
20393 @@ -84,12 +85,53 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
20394
20395 #define arch_end_context_switch(prev) do {} while(0)
20396
20397 +#define pax_open_kernel() native_pax_open_kernel()
20398 +#define pax_close_kernel() native_pax_close_kernel()
20399 #endif /* CONFIG_PARAVIRT */
20400
20401 +#define __HAVE_ARCH_PAX_OPEN_KERNEL
20402 +#define __HAVE_ARCH_PAX_CLOSE_KERNEL
20403 +
20404 +#ifdef CONFIG_PAX_KERNEXEC
20405 +static inline unsigned long native_pax_open_kernel(void)
20406 +{
20407 + unsigned long cr0;
20408 +
20409 + preempt_disable();
20410 + barrier();
20411 + cr0 = read_cr0() ^ X86_CR0_WP;
20412 + BUG_ON(cr0 & X86_CR0_WP);
20413 + write_cr0(cr0);
20414 + barrier();
20415 + return cr0 ^ X86_CR0_WP;
20416 +}
20417 +
20418 +static inline unsigned long native_pax_close_kernel(void)
20419 +{
20420 + unsigned long cr0;
20421 +
20422 + barrier();
20423 + cr0 = read_cr0() ^ X86_CR0_WP;
20424 + BUG_ON(!(cr0 & X86_CR0_WP));
20425 + write_cr0(cr0);
20426 + barrier();
20427 + preempt_enable_no_resched();
20428 + return cr0 ^ X86_CR0_WP;
20429 +}
20430 +#else
20431 +static inline unsigned long native_pax_open_kernel(void) { return 0; }
20432 +static inline unsigned long native_pax_close_kernel(void) { return 0; }
20433 +#endif
20434 +
20435 /*
20436 * The following only work if pte_present() is true.
20437 * Undefined behaviour if not..
20438 */
20439 +static inline int pte_user(pte_t pte)
20440 +{
20441 + return pte_val(pte) & _PAGE_USER;
20442 +}
20443 +
20444 static inline int pte_dirty(pte_t pte)
20445 {
20446 return pte_flags(pte) & _PAGE_DIRTY;
20447 @@ -150,6 +192,11 @@ static inline unsigned long pud_pfn(pud_t pud)
20448 return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT;
20449 }
20450
20451 +static inline unsigned long pgd_pfn(pgd_t pgd)
20452 +{
20453 + return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT;
20454 +}
20455 +
20456 #define pte_page(pte) pfn_to_page(pte_pfn(pte))
20457
20458 static inline int pmd_large(pmd_t pte)
20459 @@ -203,9 +250,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
20460 return pte_clear_flags(pte, _PAGE_RW);
20461 }
20462
20463 +static inline pte_t pte_mkread(pte_t pte)
20464 +{
20465 + return __pte(pte_val(pte) | _PAGE_USER);
20466 +}
20467 +
20468 static inline pte_t pte_mkexec(pte_t pte)
20469 {
20470 - return pte_clear_flags(pte, _PAGE_NX);
20471 +#ifdef CONFIG_X86_PAE
20472 + if (__supported_pte_mask & _PAGE_NX)
20473 + return pte_clear_flags(pte, _PAGE_NX);
20474 + else
20475 +#endif
20476 + return pte_set_flags(pte, _PAGE_USER);
20477 +}
20478 +
20479 +static inline pte_t pte_exprotect(pte_t pte)
20480 +{
20481 +#ifdef CONFIG_X86_PAE
20482 + if (__supported_pte_mask & _PAGE_NX)
20483 + return pte_set_flags(pte, _PAGE_NX);
20484 + else
20485 +#endif
20486 + return pte_clear_flags(pte, _PAGE_USER);
20487 }
20488
20489 static inline pte_t pte_mkdirty(pte_t pte)
20490 @@ -426,6 +493,16 @@ pte_t *populate_extra_pte(unsigned long vaddr);
20491 #endif
20492
20493 #ifndef __ASSEMBLY__
20494 +
20495 +#ifdef CONFIG_PAX_PER_CPU_PGD
20496 +extern pgd_t cpu_pgd[NR_CPUS][2][PTRS_PER_PGD];
20497 +enum cpu_pgd_type {kernel = 0, user = 1};
20498 +static inline pgd_t *get_cpu_pgd(unsigned int cpu, enum cpu_pgd_type type)
20499 +{
20500 + return cpu_pgd[cpu][type];
20501 +}
20502 +#endif
20503 +
20504 #include <linux/mm_types.h>
20505 #include <linux/mmdebug.h>
20506 #include <linux/log2.h>
20507 @@ -577,7 +654,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
20508 * Currently stuck as a macro due to indirect forward reference to
20509 * linux/mmzone.h's __section_mem_map_addr() definition:
20510 */
20511 -#define pud_page(pud) pfn_to_page(pud_val(pud) >> PAGE_SHIFT)
20512 +#define pud_page(pud) pfn_to_page((pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT)
20513
20514 /* Find an entry in the second-level page table.. */
20515 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
20516 @@ -617,7 +694,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
20517 * Currently stuck as a macro due to indirect forward reference to
20518 * linux/mmzone.h's __section_mem_map_addr() definition:
20519 */
20520 -#define pgd_page(pgd) pfn_to_page(pgd_val(pgd) >> PAGE_SHIFT)
20521 +#define pgd_page(pgd) pfn_to_page((pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT)
20522
20523 /* to find an entry in a page-table-directory. */
20524 static inline unsigned long pud_index(unsigned long address)
20525 @@ -632,7 +709,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
20526
20527 static inline int pgd_bad(pgd_t pgd)
20528 {
20529 - return (pgd_flags(pgd) & ~_PAGE_USER) != _KERNPG_TABLE;
20530 + return (pgd_flags(pgd) & ~(_PAGE_USER | _PAGE_NX)) != _KERNPG_TABLE;
20531 }
20532
20533 static inline int pgd_none(pgd_t pgd)
20534 @@ -655,7 +732,12 @@ static inline int pgd_none(pgd_t pgd)
20535 * pgd_offset() returns a (pgd_t *)
20536 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
20537 */
20538 -#define pgd_offset(mm, address) ((mm)->pgd + pgd_index((address)))
20539 +#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
20540 +
20541 +#ifdef CONFIG_PAX_PER_CPU_PGD
20542 +#define pgd_offset_cpu(cpu, type, address) (get_cpu_pgd(cpu, type) + pgd_index(address))
20543 +#endif
20544 +
20545 /*
20546 * a shortcut which implies the use of the kernel's pgd, instead
20547 * of a process's
20548 @@ -666,6 +748,25 @@ static inline int pgd_none(pgd_t pgd)
20549 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
20550 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
20551
20552 +#ifdef CONFIG_X86_32
20553 +#define USER_PGD_PTRS KERNEL_PGD_BOUNDARY
20554 +#else
20555 +#define TASK_SIZE_MAX_SHIFT CONFIG_TASK_SIZE_MAX_SHIFT
20556 +#define USER_PGD_PTRS (_AC(1,UL) << (TASK_SIZE_MAX_SHIFT - PGDIR_SHIFT))
20557 +
20558 +#ifdef CONFIG_PAX_MEMORY_UDEREF
20559 +#ifdef __ASSEMBLY__
20560 +#define pax_user_shadow_base pax_user_shadow_base(%rip)
20561 +#else
20562 +extern unsigned long pax_user_shadow_base;
20563 +extern pgdval_t clone_pgd_mask;
20564 +#endif
20565 +#else
20566 +#define pax_user_shadow_base (0UL)
20567 +#endif
20568 +
20569 +#endif
20570 +
20571 #ifndef __ASSEMBLY__
20572
20573 extern int direct_gbpages;
20574 @@ -832,11 +933,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
20575 * dst and src can be on the same page, but the range must not overlap,
20576 * and must not cross a page boundary.
20577 */
20578 -static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
20579 +static inline void clone_pgd_range(pgd_t *dst, const pgd_t *src, int count)
20580 {
20581 - memcpy(dst, src, count * sizeof(pgd_t));
20582 + pax_open_kernel();
20583 + while (count--)
20584 + *dst++ = *src++;
20585 + pax_close_kernel();
20586 }
20587
20588 +#ifdef CONFIG_PAX_PER_CPU_PGD
20589 +extern void __clone_user_pgds(pgd_t *dst, const pgd_t *src);
20590 +#endif
20591 +
20592 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
20593 +extern void __shadow_user_pgds(pgd_t *dst, const pgd_t *src);
20594 +#else
20595 +static inline void __shadow_user_pgds(pgd_t *dst, const pgd_t *src) {}
20596 +#endif
20597 +
20598 #define PTE_SHIFT ilog2(PTRS_PER_PTE)
20599 static inline int page_level_shift(enum pg_level level)
20600 {
20601 diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
20602 index b6c0b40..7b497ea 100644
20603 --- a/arch/x86/include/asm/pgtable_32.h
20604 +++ b/arch/x86/include/asm/pgtable_32.h
20605 @@ -25,9 +25,6 @@
20606 struct mm_struct;
20607 struct vm_area_struct;
20608
20609 -extern pgd_t swapper_pg_dir[1024];
20610 -extern pgd_t initial_page_table[1024];
20611 -
20612 static inline void pgtable_cache_init(void) { }
20613 static inline void check_pgt_cache(void) { }
20614 void paging_init(void);
20615 @@ -45,6 +42,12 @@ void paging_init(void);
20616 # include <asm/pgtable-2level.h>
20617 #endif
20618
20619 +extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
20620 +extern pgd_t initial_page_table[PTRS_PER_PGD];
20621 +#ifdef CONFIG_X86_PAE
20622 +extern pmd_t swapper_pm_dir[PTRS_PER_PGD][PTRS_PER_PMD];
20623 +#endif
20624 +
20625 #if defined(CONFIG_HIGHPTE)
20626 #define pte_offset_map(dir, address) \
20627 ((pte_t *)kmap_atomic(pmd_page(*(dir))) + \
20628 @@ -65,6 +68,9 @@ do { \
20629
20630 #endif /* !__ASSEMBLY__ */
20631
20632 +#define HAVE_ARCH_UNMAPPED_AREA
20633 +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
20634 +
20635 /*
20636 * kern_addr_valid() is (1) for FLATMEM and (0) for
20637 * SPARSEMEM and DISCONTIGMEM
20638 diff --git a/arch/x86/include/asm/pgtable_32_types.h b/arch/x86/include/asm/pgtable_32_types.h
20639 index 9fb2f2b..8e18c70 100644
20640 --- a/arch/x86/include/asm/pgtable_32_types.h
20641 +++ b/arch/x86/include/asm/pgtable_32_types.h
20642 @@ -8,7 +8,7 @@
20643 */
20644 #ifdef CONFIG_X86_PAE
20645 # include <asm/pgtable-3level_types.h>
20646 -# define PMD_SIZE (1UL << PMD_SHIFT)
20647 +# define PMD_SIZE (_AC(1, UL) << PMD_SHIFT)
20648 # define PMD_MASK (~(PMD_SIZE - 1))
20649 #else
20650 # include <asm/pgtable-2level_types.h>
20651 @@ -46,6 +46,28 @@ extern bool __vmalloc_start_set; /* set once high_memory is set */
20652 # define VMALLOC_END (FIXADDR_START - 2 * PAGE_SIZE)
20653 #endif
20654
20655 +#ifdef CONFIG_PAX_KERNEXEC
20656 +#ifndef __ASSEMBLY__
20657 +extern unsigned char MODULES_EXEC_VADDR[];
20658 +extern unsigned char MODULES_EXEC_END[];
20659 +
20660 +extern unsigned char __LOAD_PHYSICAL_ADDR[];
20661 +#define LOAD_PHYSICAL_ADDR ((unsigned long)__LOAD_PHYSICAL_ADDR)
20662 +static inline unsigned long __intentional_overflow(-1) ktla_ktva(unsigned long addr)
20663 +{
20664 + return addr + LOAD_PHYSICAL_ADDR + PAGE_OFFSET;
20665 +
20666 +}
20667 +static inline unsigned long __intentional_overflow(-1) ktva_ktla(unsigned long addr)
20668 +{
20669 + return addr - LOAD_PHYSICAL_ADDR - PAGE_OFFSET;
20670 +}
20671 +#endif
20672 +#else
20673 +#define ktla_ktva(addr) (addr)
20674 +#define ktva_ktla(addr) (addr)
20675 +#endif
20676 +
20677 #define MODULES_VADDR VMALLOC_START
20678 #define MODULES_END VMALLOC_END
20679 #define MODULES_LEN (MODULES_VADDR - MODULES_END)
20680 diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
20681 index 2ee7811..c985cfd 100644
20682 --- a/arch/x86/include/asm/pgtable_64.h
20683 +++ b/arch/x86/include/asm/pgtable_64.h
20684 @@ -16,11 +16,17 @@
20685
20686 extern pud_t level3_kernel_pgt[512];
20687 extern pud_t level3_ident_pgt[512];
20688 +extern pud_t level3_vmalloc_start_pgt[512];
20689 +extern pud_t level3_vmalloc_end_pgt[512];
20690 +extern pud_t level3_vmemmap_pgt[512];
20691 +extern pud_t level2_vmemmap_pgt[512];
20692 extern pmd_t level2_kernel_pgt[512];
20693 extern pmd_t level2_fixmap_pgt[512];
20694 -extern pmd_t level2_ident_pgt[512];
20695 -extern pte_t level1_fixmap_pgt[512];
20696 -extern pgd_t init_level4_pgt[];
20697 +extern pmd_t level2_ident_pgt[2][512];
20698 +extern pte_t level1_modules_pgt[4][512];
20699 +extern pte_t level1_fixmap_pgt[3][512];
20700 +extern pte_t level1_vsyscall_pgt[512];
20701 +extern pgd_t init_level4_pgt[512];
20702
20703 #define swapper_pg_dir init_level4_pgt
20704
20705 @@ -47,12 +53,16 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte);
20706 static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
20707 pte_t *ptep)
20708 {
20709 + pax_open_kernel();
20710 *ptep = native_make_pte(0);
20711 + pax_close_kernel();
20712 }
20713
20714 static inline void native_set_pte(pte_t *ptep, pte_t pte)
20715 {
20716 + pax_open_kernel();
20717 *ptep = pte;
20718 + pax_close_kernel();
20719 }
20720
20721 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
20722 @@ -62,7 +72,9 @@ static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
20723
20724 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
20725 {
20726 + pax_open_kernel();
20727 *pmdp = pmd;
20728 + pax_close_kernel();
20729 }
20730
20731 static inline void native_pmd_clear(pmd_t *pmd)
20732 @@ -73,7 +85,12 @@ static inline void native_pmd_clear(pmd_t *pmd)
20733 static inline pte_t native_ptep_get_and_clear(pte_t *xp)
20734 {
20735 #ifdef CONFIG_SMP
20736 - return native_make_pte(xchg(&xp->pte, 0));
20737 + pte_t pte;
20738 +
20739 + pax_open_kernel();
20740 + pte = native_make_pte(xchg(&xp->pte, 0));
20741 + pax_close_kernel();
20742 + return pte;
20743 #else
20744 /* native_local_ptep_get_and_clear,
20745 but duplicated because of cyclic dependency */
20746 @@ -86,7 +103,12 @@ static inline pte_t native_ptep_get_and_clear(pte_t *xp)
20747 static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
20748 {
20749 #ifdef CONFIG_SMP
20750 - return native_make_pmd(xchg(&xp->pmd, 0));
20751 + pmd_t pmd;
20752 +
20753 + pax_open_kernel();
20754 + pmd = native_make_pmd(xchg(&xp->pmd, 0));
20755 + pax_close_kernel();
20756 + return pmd;
20757 #else
20758 /* native_local_pmdp_get_and_clear,
20759 but duplicated because of cyclic dependency */
20760 @@ -98,7 +120,9 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
20761
20762 static inline void native_set_pud(pud_t *pudp, pud_t pud)
20763 {
20764 + pax_open_kernel();
20765 *pudp = pud;
20766 + pax_close_kernel();
20767 }
20768
20769 static inline void native_pud_clear(pud_t *pud)
20770 @@ -108,6 +132,13 @@ static inline void native_pud_clear(pud_t *pud)
20771
20772 static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
20773 {
20774 + pax_open_kernel();
20775 + *pgdp = pgd;
20776 + pax_close_kernel();
20777 +}
20778 +
20779 +static inline void native_set_pgd_batched(pgd_t *pgdp, pgd_t pgd)
20780 +{
20781 *pgdp = pgd;
20782 }
20783
20784 diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
20785 index e6844df..432b56e 100644
20786 --- a/arch/x86/include/asm/pgtable_64_types.h
20787 +++ b/arch/x86/include/asm/pgtable_64_types.h
20788 @@ -60,11 +60,16 @@ typedef struct { pteval_t pte; } pte_t;
20789 #define MODULES_VADDR (__START_KERNEL_map + KERNEL_IMAGE_SIZE)
20790 #define MODULES_END _AC(0xffffffffff000000, UL)
20791 #define MODULES_LEN (MODULES_END - MODULES_VADDR)
20792 +#define MODULES_EXEC_VADDR MODULES_VADDR
20793 +#define MODULES_EXEC_END MODULES_END
20794 #define ESPFIX_PGD_ENTRY _AC(-2, UL)
20795 #define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << PGDIR_SHIFT)
20796 #define EFI_VA_START ( -4 * (_AC(1, UL) << 30))
20797 #define EFI_VA_END (-68 * (_AC(1, UL) << 30))
20798
20799 +#define ktla_ktva(addr) (addr)
20800 +#define ktva_ktla(addr) (addr)
20801 +
20802 #define EARLY_DYNAMIC_PAGE_TABLES 64
20803
20804 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
20805 diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
20806 index 13f310b..f0ef42e 100644
20807 --- a/arch/x86/include/asm/pgtable_types.h
20808 +++ b/arch/x86/include/asm/pgtable_types.h
20809 @@ -85,8 +85,10 @@
20810
20811 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
20812 #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
20813 -#else
20814 +#elif defined(CONFIG_KMEMCHECK) || defined(CONFIG_MEM_SOFT_DIRTY)
20815 #define _PAGE_NX (_AT(pteval_t, 0))
20816 +#else
20817 +#define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_HIDDEN)
20818 #endif
20819
20820 #define _PAGE_PROTNONE (_AT(pteval_t, 1) << _PAGE_BIT_PROTNONE)
20821 @@ -141,6 +143,9 @@ enum page_cache_mode {
20822 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
20823 _PAGE_ACCESSED)
20824
20825 +#define PAGE_READONLY_NOEXEC PAGE_READONLY
20826 +#define PAGE_SHARED_NOEXEC PAGE_SHARED
20827 +
20828 #define __PAGE_KERNEL_EXEC \
20829 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
20830 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
20831 @@ -148,7 +153,7 @@ enum page_cache_mode {
20832 #define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
20833 #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
20834 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_NOCACHE)
20835 -#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
20836 +#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
20837 #define __PAGE_KERNEL_VVAR (__PAGE_KERNEL_RO | _PAGE_USER)
20838 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
20839 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
20840 @@ -194,7 +199,7 @@ enum page_cache_mode {
20841 #ifdef CONFIG_X86_64
20842 #define __PAGE_KERNEL_IDENT_LARGE_EXEC __PAGE_KERNEL_LARGE_EXEC
20843 #else
20844 -#define PTE_IDENT_ATTR 0x003 /* PRESENT+RW */
20845 +#define PTE_IDENT_ATTR 0x063 /* PRESENT+RW+DIRTY+ACCESSED */
20846 #define PDE_IDENT_ATTR 0x063 /* PRESENT+RW+DIRTY+ACCESSED */
20847 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
20848 #endif
20849 @@ -233,7 +238,17 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
20850 {
20851 return native_pgd_val(pgd) & PTE_FLAGS_MASK;
20852 }
20853 +#endif
20854
20855 +#if CONFIG_PGTABLE_LEVELS == 3
20856 +#include <asm-generic/pgtable-nopud.h>
20857 +#endif
20858 +
20859 +#if CONFIG_PGTABLE_LEVELS == 2
20860 +#include <asm-generic/pgtable-nopmd.h>
20861 +#endif
20862 +
20863 +#ifndef __ASSEMBLY__
20864 #if CONFIG_PGTABLE_LEVELS > 3
20865 typedef struct { pudval_t pud; } pud_t;
20866
20867 @@ -247,8 +262,6 @@ static inline pudval_t native_pud_val(pud_t pud)
20868 return pud.pud;
20869 }
20870 #else
20871 -#include <asm-generic/pgtable-nopud.h>
20872 -
20873 static inline pudval_t native_pud_val(pud_t pud)
20874 {
20875 return native_pgd_val(pud.pgd);
20876 @@ -268,8 +281,6 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
20877 return pmd.pmd;
20878 }
20879 #else
20880 -#include <asm-generic/pgtable-nopmd.h>
20881 -
20882 static inline pmdval_t native_pmd_val(pmd_t pmd)
20883 {
20884 return native_pgd_val(pmd.pud.pgd);
20885 @@ -362,7 +373,6 @@ typedef struct page *pgtable_t;
20886
20887 extern pteval_t __supported_pte_mask;
20888 extern void set_nx(void);
20889 -extern int nx_enabled;
20890
20891 #define pgprot_writecombine pgprot_writecombine
20892 extern pgprot_t pgprot_writecombine(pgprot_t prot);
20893 diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
20894 index dca71714..919d4e1 100644
20895 --- a/arch/x86/include/asm/preempt.h
20896 +++ b/arch/x86/include/asm/preempt.h
20897 @@ -84,7 +84,7 @@ static __always_inline void __preempt_count_sub(int val)
20898 */
20899 static __always_inline bool __preempt_count_dec_and_test(void)
20900 {
20901 - GEN_UNARY_RMWcc("decl", __preempt_count, __percpu_arg(0), "e");
20902 + GEN_UNARY_RMWcc("decl", "incl", __preempt_count, __percpu_arg(0), "e");
20903 }
20904
20905 /*
20906 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
20907 index 944f178..37097a3 100644
20908 --- a/arch/x86/include/asm/processor.h
20909 +++ b/arch/x86/include/asm/processor.h
20910 @@ -102,7 +102,7 @@ struct cpuinfo_x86 {
20911 int x86_tlbsize;
20912 #endif
20913 __u8 x86_virt_bits;
20914 - __u8 x86_phys_bits;
20915 + __u8 x86_phys_bits __intentional_overflow(-1);
20916 /* CPUID returned core id bits: */
20917 __u8 x86_coreid_bits;
20918 /* Max extended CPUID function supported: */
20919 @@ -136,7 +136,7 @@ struct cpuinfo_x86 {
20920 /* Index into per_cpu list: */
20921 u16 cpu_index;
20922 u32 microcode;
20923 -};
20924 +} __randomize_layout;
20925
20926 #define X86_VENDOR_INTEL 0
20927 #define X86_VENDOR_CYRIX 1
20928 @@ -206,9 +206,21 @@ static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
20929 : "memory");
20930 }
20931
20932 +/* invpcid (%rdx),%rax */
20933 +#define __ASM_INVPCID ".byte 0x66,0x0f,0x38,0x82,0x02"
20934 +
20935 +#define INVPCID_SINGLE_ADDRESS 0UL
20936 +#define INVPCID_SINGLE_CONTEXT 1UL
20937 +#define INVPCID_ALL_GLOBAL 2UL
20938 +#define INVPCID_ALL_NONGLOBAL 3UL
20939 +
20940 +#define PCID_KERNEL 0UL
20941 +#define PCID_USER 1UL
20942 +#define PCID_NOFLUSH (1UL << 63)
20943 +
20944 static inline void load_cr3(pgd_t *pgdir)
20945 {
20946 - write_cr3(__pa(pgdir));
20947 + write_cr3(__pa(pgdir) | PCID_KERNEL);
20948 }
20949
20950 #ifdef CONFIG_X86_32
20951 @@ -305,11 +317,9 @@ struct tss_struct {
20952
20953 } ____cacheline_aligned;
20954
20955 -DECLARE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss);
20956 +extern struct tss_struct cpu_tss[NR_CPUS];
20957
20958 -#ifdef CONFIG_X86_32
20959 DECLARE_PER_CPU(unsigned long, cpu_current_top_of_stack);
20960 -#endif
20961
20962 /*
20963 * Save the original ist values for checking stack pointers during debugging
20964 @@ -381,6 +391,7 @@ struct thread_struct {
20965 unsigned short ds;
20966 unsigned short fsindex;
20967 unsigned short gsindex;
20968 + unsigned short ss;
20969 #endif
20970 #ifdef CONFIG_X86_32
20971 unsigned long ip;
20972 @@ -463,10 +474,10 @@ static inline void native_swapgs(void)
20973 #endif
20974 }
20975
20976 -static inline unsigned long current_top_of_stack(void)
20977 +static inline unsigned long current_top_of_stack(unsigned int cpu)
20978 {
20979 #ifdef CONFIG_X86_64
20980 - return this_cpu_read_stable(cpu_tss.x86_tss.sp0);
20981 + return cpu_tss[cpu].x86_tss.sp0;
20982 #else
20983 /* sp0 on x86_32 is special in and around vm86 mode. */
20984 return this_cpu_read_stable(cpu_current_top_of_stack);
20985 @@ -709,20 +720,30 @@ static inline void spin_lock_prefetch(const void *x)
20986 #define TOP_OF_INIT_STACK ((unsigned long)&init_stack + sizeof(init_stack) - \
20987 TOP_OF_KERNEL_STACK_PADDING)
20988
20989 +extern union fpregs_state init_fpregs_state;
20990 +
20991 #ifdef CONFIG_X86_32
20992 /*
20993 * User space process size: 3GB (default).
20994 */
20995 #define TASK_SIZE PAGE_OFFSET
20996 #define TASK_SIZE_MAX TASK_SIZE
20997 +
20998 +#ifdef CONFIG_PAX_SEGMEXEC
20999 +#define SEGMEXEC_TASK_SIZE (TASK_SIZE / 2)
21000 +#define STACK_TOP ((current->mm->pax_flags & MF_PAX_SEGMEXEC)?SEGMEXEC_TASK_SIZE:TASK_SIZE)
21001 +#else
21002 #define STACK_TOP TASK_SIZE
21003 -#define STACK_TOP_MAX STACK_TOP
21004 +#endif
21005 +
21006 +#define STACK_TOP_MAX TASK_SIZE
21007
21008 #define INIT_THREAD { \
21009 .sp0 = TOP_OF_INIT_STACK, \
21010 .vm86_info = NULL, \
21011 .sysenter_cs = __KERNEL_CS, \
21012 .io_bitmap_ptr = NULL, \
21013 + .fpu.state = &init_fpregs_state, \
21014 }
21015
21016 extern unsigned long thread_saved_pc(struct task_struct *tsk);
21017 @@ -737,12 +758,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
21018 * "struct pt_regs" is possible, but they may contain the
21019 * completely wrong values.
21020 */
21021 -#define task_pt_regs(task) \
21022 -({ \
21023 - unsigned long __ptr = (unsigned long)task_stack_page(task); \
21024 - __ptr += THREAD_SIZE - TOP_OF_KERNEL_STACK_PADDING; \
21025 - ((struct pt_regs *)__ptr) - 1; \
21026 -})
21027 +#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.sp0 - 1)
21028
21029 #define KSTK_ESP(task) (task_pt_regs(task)->sp)
21030
21031 @@ -756,13 +772,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
21032 * particular problem by preventing anything from being mapped
21033 * at the maximum canonical address.
21034 */
21035 -#define TASK_SIZE_MAX ((1UL << 47) - PAGE_SIZE)
21036 +#define TASK_SIZE_MAX ((1UL << TASK_SIZE_MAX_SHIFT) - PAGE_SIZE)
21037
21038 /* This decides where the kernel will search for a free chunk of vm
21039 * space during mmap's.
21040 */
21041 #define IA32_PAGE_OFFSET ((current->personality & ADDR_LIMIT_3GB) ? \
21042 - 0xc0000000 : 0xFFFFe000)
21043 + 0xc0000000 : 0xFFFFf000)
21044
21045 #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \
21046 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
21047 @@ -773,7 +789,8 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
21048 #define STACK_TOP_MAX TASK_SIZE_MAX
21049
21050 #define INIT_THREAD { \
21051 - .sp0 = TOP_OF_INIT_STACK \
21052 + .sp0 = TOP_OF_INIT_STACK, \
21053 + .fpu.state = &init_fpregs_state, \
21054 }
21055
21056 /*
21057 @@ -796,6 +813,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
21058 */
21059 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
21060
21061 +#ifdef CONFIG_PAX_SEGMEXEC
21062 +#define SEGMEXEC_TASK_UNMAPPED_BASE (PAGE_ALIGN(SEGMEXEC_TASK_SIZE / 3))
21063 +#endif
21064 +
21065 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
21066
21067 /* Get/set a process' ability to use the timestamp counter instruction */
21068 @@ -841,7 +862,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)
21069 return 0;
21070 }
21071
21072 -extern unsigned long arch_align_stack(unsigned long sp);
21073 +#define arch_align_stack(x) ((x) & ~0xfUL)
21074 extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
21075
21076 void default_idle(void);
21077 @@ -851,6 +872,6 @@ bool xen_set_default_idle(void);
21078 #define xen_set_default_idle 0
21079 #endif
21080
21081 -void stop_this_cpu(void *dummy);
21082 +void stop_this_cpu(void *dummy) __noreturn;
21083 void df_debug(struct pt_regs *regs, long error_code);
21084 #endif /* _ASM_X86_PROCESSOR_H */
21085 diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
21086 index 5fabf13..7f90572 100644
21087 --- a/arch/x86/include/asm/ptrace.h
21088 +++ b/arch/x86/include/asm/ptrace.h
21089 @@ -21,10 +21,10 @@ struct pt_regs {
21090 unsigned long fs;
21091 unsigned long gs;
21092 unsigned long orig_ax;
21093 - unsigned long ip;
21094 + unsigned long ip __intentional_overflow(-1);
21095 unsigned long cs;
21096 unsigned long flags;
21097 - unsigned long sp;
21098 + unsigned long sp __intentional_overflow(-1);
21099 unsigned long ss;
21100 };
21101
21102 @@ -57,10 +57,10 @@ struct pt_regs {
21103 */
21104 unsigned long orig_ax;
21105 /* Return frame for iretq */
21106 - unsigned long ip;
21107 + unsigned long ip __intentional_overflow(-1);
21108 unsigned long cs;
21109 unsigned long flags;
21110 - unsigned long sp;
21111 + unsigned long sp __intentional_overflow(-1);
21112 unsigned long ss;
21113 /* top of stack page */
21114 };
21115 @@ -125,15 +125,16 @@ static inline int v8086_mode(struct pt_regs *regs)
21116 #ifdef CONFIG_X86_64
21117 static inline bool user_64bit_mode(struct pt_regs *regs)
21118 {
21119 + unsigned long cs = regs->cs & 0xffff;
21120 #ifndef CONFIG_PARAVIRT
21121 /*
21122 * On non-paravirt systems, this is the only long mode CPL 3
21123 * selector. We do not allow long mode selectors in the LDT.
21124 */
21125 - return regs->cs == __USER_CS;
21126 + return cs == __USER_CS;
21127 #else
21128 /* Headers are too twisted for this to go in paravirt.h. */
21129 - return regs->cs == __USER_CS || regs->cs == pv_info.extra_user_64bit_cs;
21130 + return cs == __USER_CS || cs == pv_info.extra_user_64bit_cs;
21131 #endif
21132 }
21133
21134 @@ -180,9 +181,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
21135 * Traps from the kernel do not save sp and ss.
21136 * Use the helper function to retrieve sp.
21137 */
21138 - if (offset == offsetof(struct pt_regs, sp) &&
21139 - regs->cs == __KERNEL_CS)
21140 - return kernel_stack_pointer(regs);
21141 + if (offset == offsetof(struct pt_regs, sp)) {
21142 + unsigned long cs = regs->cs & 0xffff;
21143 + if (cs == __KERNEL_CS || cs == __KERNEXEC_KERNEL_CS)
21144 + return kernel_stack_pointer(regs);
21145 + }
21146 #endif
21147 return *(unsigned long *)((unsigned long)regs + offset);
21148 }
21149 diff --git a/arch/x86/include/asm/qrwlock.h b/arch/x86/include/asm/qrwlock.h
21150 index ae0e241..e80b10b 100644
21151 --- a/arch/x86/include/asm/qrwlock.h
21152 +++ b/arch/x86/include/asm/qrwlock.h
21153 @@ -7,8 +7,8 @@
21154 #define queue_write_unlock queue_write_unlock
21155 static inline void queue_write_unlock(struct qrwlock *lock)
21156 {
21157 - barrier();
21158 - ACCESS_ONCE(*(u8 *)&lock->cnts) = 0;
21159 + barrier();
21160 + ACCESS_ONCE_RW(*(u8 *)&lock->cnts) = 0;
21161 }
21162 #endif
21163
21164 diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
21165 index 9c6b890..5305f53 100644
21166 --- a/arch/x86/include/asm/realmode.h
21167 +++ b/arch/x86/include/asm/realmode.h
21168 @@ -22,16 +22,14 @@ struct real_mode_header {
21169 #endif
21170 /* APM/BIOS reboot */
21171 u32 machine_real_restart_asm;
21172 -#ifdef CONFIG_X86_64
21173 u32 machine_real_restart_seg;
21174 -#endif
21175 };
21176
21177 /* This must match data at trampoline_32/64.S */
21178 struct trampoline_header {
21179 #ifdef CONFIG_X86_32
21180 u32 start;
21181 - u16 gdt_pad;
21182 + u16 boot_cs;
21183 u16 gdt_limit;
21184 u32 gdt_base;
21185 #else
21186 diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
21187 index a82c4f1..ac45053 100644
21188 --- a/arch/x86/include/asm/reboot.h
21189 +++ b/arch/x86/include/asm/reboot.h
21190 @@ -6,13 +6,13 @@
21191 struct pt_regs;
21192
21193 struct machine_ops {
21194 - void (*restart)(char *cmd);
21195 - void (*halt)(void);
21196 - void (*power_off)(void);
21197 + void (* __noreturn restart)(char *cmd);
21198 + void (* __noreturn halt)(void);
21199 + void (* __noreturn power_off)(void);
21200 void (*shutdown)(void);
21201 void (*crash_shutdown)(struct pt_regs *);
21202 - void (*emergency_restart)(void);
21203 -};
21204 + void (* __noreturn emergency_restart)(void);
21205 +} __no_const;
21206
21207 extern struct machine_ops machine_ops;
21208
21209 diff --git a/arch/x86/include/asm/rmwcc.h b/arch/x86/include/asm/rmwcc.h
21210 index 8f7866a..e442f20 100644
21211 --- a/arch/x86/include/asm/rmwcc.h
21212 +++ b/arch/x86/include/asm/rmwcc.h
21213 @@ -3,7 +3,34 @@
21214
21215 #ifdef CC_HAVE_ASM_GOTO
21216
21217 -#define __GEN_RMWcc(fullop, var, cc, ...) \
21218 +#ifdef CONFIG_PAX_REFCOUNT
21219 +#define __GEN_RMWcc(fullop, fullantiop, var, cc, ...) \
21220 +do { \
21221 + asm_volatile_goto (fullop \
21222 + ";jno 0f\n" \
21223 + fullantiop \
21224 + ";int $4\n0:\n" \
21225 + _ASM_EXTABLE(0b, 0b) \
21226 + ";j" cc " %l[cc_label]" \
21227 + : : "m" (var), ## __VA_ARGS__ \
21228 + : "memory" : cc_label); \
21229 + return 0; \
21230 +cc_label: \
21231 + return 1; \
21232 +} while (0)
21233 +#else
21234 +#define __GEN_RMWcc(fullop, fullantiop, var, cc, ...) \
21235 +do { \
21236 + asm_volatile_goto (fullop ";j" cc " %l[cc_label]" \
21237 + : : "m" (var), ## __VA_ARGS__ \
21238 + : "memory" : cc_label); \
21239 + return 0; \
21240 +cc_label: \
21241 + return 1; \
21242 +} while (0)
21243 +#endif
21244 +
21245 +#define __GEN_RMWcc_unchecked(fullop, var, cc, ...) \
21246 do { \
21247 asm_volatile_goto (fullop "; j" cc " %l[cc_label]" \
21248 : : "m" (var), ## __VA_ARGS__ \
21249 @@ -13,15 +40,46 @@ cc_label: \
21250 return 1; \
21251 } while (0)
21252
21253 -#define GEN_UNARY_RMWcc(op, var, arg0, cc) \
21254 - __GEN_RMWcc(op " " arg0, var, cc)
21255 +#define GEN_UNARY_RMWcc(op, antiop, var, arg0, cc) \
21256 + __GEN_RMWcc(op " " arg0, antiop " " arg0, var, cc)
21257
21258 -#define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc) \
21259 - __GEN_RMWcc(op " %1, " arg0, var, cc, vcon (val))
21260 +#define GEN_UNARY_RMWcc_unchecked(op, var, arg0, cc) \
21261 + __GEN_RMWcc_unchecked(op " " arg0, var, cc)
21262 +
21263 +#define GEN_BINARY_RMWcc(op, antiop, var, vcon, val, arg0, cc) \
21264 + __GEN_RMWcc(op " %1, " arg0, antiop " %1, " arg0, var, cc, vcon (val))
21265 +
21266 +#define GEN_BINARY_RMWcc_unchecked(op, var, vcon, val, arg0, cc) \
21267 + __GEN_RMWcc_unchecked(op " %1, " arg0, var, cc, vcon (val))
21268
21269 #else /* !CC_HAVE_ASM_GOTO */
21270
21271 -#define __GEN_RMWcc(fullop, var, cc, ...) \
21272 +#ifdef CONFIG_PAX_REFCOUNT
21273 +#define __GEN_RMWcc(fullop, fullantiop, var, cc, ...) \
21274 +do { \
21275 + char c; \
21276 + asm volatile (fullop \
21277 + ";jno 0f\n" \
21278 + fullantiop \
21279 + ";int $4\n0:\n" \
21280 + _ASM_EXTABLE(0b, 0b) \
21281 + "; set" cc " %1" \
21282 + : "+m" (var), "=qm" (c) \
21283 + : __VA_ARGS__ : "memory"); \
21284 + return c != 0; \
21285 +} while (0)
21286 +#else
21287 +#define __GEN_RMWcc(fullop, fullantiop, var, cc, ...) \
21288 +do { \
21289 + char c; \
21290 + asm volatile (fullop "; set" cc " %1" \
21291 + : "+m" (var), "=qm" (c) \
21292 + : __VA_ARGS__ : "memory"); \
21293 + return c != 0; \
21294 +} while (0)
21295 +#endif
21296 +
21297 +#define __GEN_RMWcc_unchecked(fullop, var, cc, ...) \
21298 do { \
21299 char c; \
21300 asm volatile (fullop "; set" cc " %1" \
21301 @@ -30,11 +88,17 @@ do { \
21302 return c != 0; \
21303 } while (0)
21304
21305 -#define GEN_UNARY_RMWcc(op, var, arg0, cc) \
21306 - __GEN_RMWcc(op " " arg0, var, cc)
21307 +#define GEN_UNARY_RMWcc(op, antiop, var, arg0, cc) \
21308 + __GEN_RMWcc(op " " arg0, antiop " " arg0, var, cc)
21309 +
21310 +#define GEN_UNARY_RMWcc_unchecked(op, var, arg0, cc) \
21311 + __GEN_RMWcc_unchecked(op " " arg0, var, cc)
21312 +
21313 +#define GEN_BINARY_RMWcc(op, antiop, var, vcon, val, arg0, cc) \
21314 + __GEN_RMWcc(op " %2, " arg0, antiop " %2, " arg0, var, cc, vcon (val))
21315
21316 -#define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc) \
21317 - __GEN_RMWcc(op " %2, " arg0, var, cc, vcon (val))
21318 +#define GEN_BINARY_RMWcc_unchecked(op, var, vcon, val, arg0, cc) \
21319 + __GEN_RMWcc_unchecked(op " %2, " arg0, var, cc, vcon (val))
21320
21321 #endif /* CC_HAVE_ASM_GOTO */
21322
21323 diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
21324 index cad82c9..2e5c5c1 100644
21325 --- a/arch/x86/include/asm/rwsem.h
21326 +++ b/arch/x86/include/asm/rwsem.h
21327 @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem)
21328 {
21329 asm volatile("# beginning down_read\n\t"
21330 LOCK_PREFIX _ASM_INC "(%1)\n\t"
21331 +
21332 +#ifdef CONFIG_PAX_REFCOUNT
21333 + "jno 0f\n"
21334 + LOCK_PREFIX _ASM_DEC "(%1)\n"
21335 + "int $4\n0:\n"
21336 + _ASM_EXTABLE(0b, 0b)
21337 +#endif
21338 +
21339 /* adds 0x00000001 */
21340 " jns 1f\n"
21341 " call call_rwsem_down_read_failed\n"
21342 @@ -85,6 +93,14 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
21343 "1:\n\t"
21344 " mov %1,%2\n\t"
21345 " add %3,%2\n\t"
21346 +
21347 +#ifdef CONFIG_PAX_REFCOUNT
21348 + "jno 0f\n"
21349 + "sub %3,%2\n"
21350 + "int $4\n0:\n"
21351 + _ASM_EXTABLE(0b, 0b)
21352 +#endif
21353 +
21354 " jle 2f\n\t"
21355 LOCK_PREFIX " cmpxchg %2,%0\n\t"
21356 " jnz 1b\n\t"
21357 @@ -104,6 +120,14 @@ static inline void __down_write_nested(struct rw_semaphore *sem, int subclass)
21358 long tmp;
21359 asm volatile("# beginning down_write\n\t"
21360 LOCK_PREFIX " xadd %1,(%2)\n\t"
21361 +
21362 +#ifdef CONFIG_PAX_REFCOUNT
21363 + "jno 0f\n"
21364 + "mov %1,(%2)\n"
21365 + "int $4\n0:\n"
21366 + _ASM_EXTABLE(0b, 0b)
21367 +#endif
21368 +
21369 /* adds 0xffff0001, returns the old value */
21370 " test " __ASM_SEL(%w1,%k1) "," __ASM_SEL(%w1,%k1) "\n\t"
21371 /* was the active mask 0 before? */
21372 @@ -155,6 +179,14 @@ static inline void __up_read(struct rw_semaphore *sem)
21373 long tmp;
21374 asm volatile("# beginning __up_read\n\t"
21375 LOCK_PREFIX " xadd %1,(%2)\n\t"
21376 +
21377 +#ifdef CONFIG_PAX_REFCOUNT
21378 + "jno 0f\n"
21379 + "mov %1,(%2)\n"
21380 + "int $4\n0:\n"
21381 + _ASM_EXTABLE(0b, 0b)
21382 +#endif
21383 +
21384 /* subtracts 1, returns the old value */
21385 " jns 1f\n\t"
21386 " call call_rwsem_wake\n" /* expects old value in %edx */
21387 @@ -173,6 +205,14 @@ static inline void __up_write(struct rw_semaphore *sem)
21388 long tmp;
21389 asm volatile("# beginning __up_write\n\t"
21390 LOCK_PREFIX " xadd %1,(%2)\n\t"
21391 +
21392 +#ifdef CONFIG_PAX_REFCOUNT
21393 + "jno 0f\n"
21394 + "mov %1,(%2)\n"
21395 + "int $4\n0:\n"
21396 + _ASM_EXTABLE(0b, 0b)
21397 +#endif
21398 +
21399 /* subtracts 0xffff0001, returns the old value */
21400 " jns 1f\n\t"
21401 " call call_rwsem_wake\n" /* expects old value in %edx */
21402 @@ -190,6 +230,14 @@ static inline void __downgrade_write(struct rw_semaphore *sem)
21403 {
21404 asm volatile("# beginning __downgrade_write\n\t"
21405 LOCK_PREFIX _ASM_ADD "%2,(%1)\n\t"
21406 +
21407 +#ifdef CONFIG_PAX_REFCOUNT
21408 + "jno 0f\n"
21409 + LOCK_PREFIX _ASM_SUB "%2,(%1)\n"
21410 + "int $4\n0:\n"
21411 + _ASM_EXTABLE(0b, 0b)
21412 +#endif
21413 +
21414 /*
21415 * transitions 0xZZZZ0001 -> 0xYYYY0001 (i386)
21416 * 0xZZZZZZZZ00000001 -> 0xYYYYYYYY00000001 (x86_64)
21417 @@ -208,7 +256,15 @@ static inline void __downgrade_write(struct rw_semaphore *sem)
21418 */
21419 static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
21420 {
21421 - asm volatile(LOCK_PREFIX _ASM_ADD "%1,%0"
21422 + asm volatile(LOCK_PREFIX _ASM_ADD "%1,%0\n"
21423 +
21424 +#ifdef CONFIG_PAX_REFCOUNT
21425 + "jno 0f\n"
21426 + LOCK_PREFIX _ASM_SUB "%1,%0\n"
21427 + "int $4\n0:\n"
21428 + _ASM_EXTABLE(0b, 0b)
21429 +#endif
21430 +
21431 : "+m" (sem->count)
21432 : "er" (delta));
21433 }
21434 @@ -218,7 +274,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
21435 */
21436 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
21437 {
21438 - return delta + xadd(&sem->count, delta);
21439 + return delta + xadd_check_overflow(&sem->count, delta);
21440 }
21441
21442 #endif /* __KERNEL__ */
21443 diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
21444 index 7d5a192..23ef1aa 100644
21445 --- a/arch/x86/include/asm/segment.h
21446 +++ b/arch/x86/include/asm/segment.h
21447 @@ -82,14 +82,20 @@
21448 * 26 - ESPFIX small SS
21449 * 27 - per-cpu [ offset to per-cpu data area ]
21450 * 28 - stack_canary-20 [ for stack protector ] <=== cacheline #8
21451 - * 29 - unused
21452 - * 30 - unused
21453 + * 29 - PCI BIOS CS
21454 + * 30 - PCI BIOS DS
21455 * 31 - TSS for double fault handler
21456 */
21457 +#define GDT_ENTRY_KERNEXEC_EFI_CS (1)
21458 +#define GDT_ENTRY_KERNEXEC_EFI_DS (2)
21459 +#define __KERNEXEC_EFI_CS (GDT_ENTRY_KERNEXEC_EFI_CS*8)
21460 +#define __KERNEXEC_EFI_DS (GDT_ENTRY_KERNEXEC_EFI_DS*8)
21461 +
21462 #define GDT_ENTRY_TLS_MIN 6
21463 #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
21464
21465 #define GDT_ENTRY_KERNEL_CS 12
21466 +#define GDT_ENTRY_KERNEXEC_KERNEL_CS 4
21467 #define GDT_ENTRY_KERNEL_DS 13
21468 #define GDT_ENTRY_DEFAULT_USER_CS 14
21469 #define GDT_ENTRY_DEFAULT_USER_DS 15
21470 @@ -106,6 +112,12 @@
21471 #define GDT_ENTRY_PERCPU 27
21472 #define GDT_ENTRY_STACK_CANARY 28
21473
21474 +#define GDT_ENTRY_PCIBIOS_CS 29
21475 +#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8)
21476 +
21477 +#define GDT_ENTRY_PCIBIOS_DS 30
21478 +#define __PCIBIOS_CS (GDT_ENTRY_PCIBIOS_CS * 8)
21479 +
21480 #define GDT_ENTRY_DOUBLEFAULT_TSS 31
21481
21482 /*
21483 @@ -118,6 +130,7 @@
21484 */
21485
21486 #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8)
21487 +#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8)
21488 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
21489 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8 + 3)
21490 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8 + 3)
21491 @@ -129,7 +142,7 @@
21492 #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16*8)
21493
21494 /* "Is this PNP code selector (PNP_CS32 or PNP_CS16)?" */
21495 -#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == PNP_CS32)
21496 +#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xFFFCU) == PNP_CS32 || ((x) & 0xFFFCU) == PNP_CS16)
21497
21498 /* data segment for BIOS: */
21499 #define PNP_DS (GDT_ENTRY_PNPBIOS_DS*8)
21500 @@ -176,6 +189,8 @@
21501 #define GDT_ENTRY_DEFAULT_USER_DS 5
21502 #define GDT_ENTRY_DEFAULT_USER_CS 6
21503
21504 +#define GDT_ENTRY_KERNEXEC_KERNEL_CS 7
21505 +
21506 /* Needs two entries */
21507 #define GDT_ENTRY_TSS 8
21508 /* Needs two entries */
21509 @@ -187,10 +202,12 @@
21510 /* Abused to load per CPU data from limit */
21511 #define GDT_ENTRY_PER_CPU 15
21512
21513 +#define GDT_ENTRY_UDEREF_KERNEL_DS 16
21514 +
21515 /*
21516 * Number of entries in the GDT table:
21517 */
21518 -#define GDT_ENTRIES 16
21519 +#define GDT_ENTRIES 17
21520
21521 /*
21522 * Segment selector values corresponding to the above entries:
21523 @@ -200,7 +217,9 @@
21524 */
21525 #define __KERNEL32_CS (GDT_ENTRY_KERNEL32_CS*8)
21526 #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8)
21527 +#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8)
21528 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
21529 +#define __UDEREF_KERNEL_DS (GDT_ENTRY_UDEREF_KERNEL_DS*8)
21530 #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS*8 + 3)
21531 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8 + 3)
21532 #define __USER32_DS __USER_DS
21533 diff --git a/arch/x86/include/asm/smap.h b/arch/x86/include/asm/smap.h
21534 index ba665eb..0f72938 100644
21535 --- a/arch/x86/include/asm/smap.h
21536 +++ b/arch/x86/include/asm/smap.h
21537 @@ -25,6 +25,18 @@
21538
21539 #include <asm/alternative-asm.h>
21540
21541 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21542 +#define ASM_PAX_OPEN_USERLAND \
21543 + ALTERNATIVE "", "call __pax_open_userland", X86_FEATURE_STRONGUDEREF
21544 +
21545 +#define ASM_PAX_CLOSE_USERLAND \
21546 + ALTERNATIVE "", "call __pax_close_userland", X86_FEATURE_STRONGUDEREF
21547 +
21548 +#else
21549 +#define ASM_PAX_OPEN_USERLAND
21550 +#define ASM_PAX_CLOSE_USERLAND
21551 +#endif
21552 +
21553 #ifdef CONFIG_X86_SMAP
21554
21555 #define ASM_CLAC \
21556 @@ -44,6 +56,37 @@
21557
21558 #include <asm/alternative.h>
21559
21560 +#define __HAVE_ARCH_PAX_OPEN_USERLAND
21561 +#define __HAVE_ARCH_PAX_CLOSE_USERLAND
21562 +
21563 +extern void __pax_open_userland(void);
21564 +static __always_inline unsigned long pax_open_userland(void)
21565 +{
21566 +
21567 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21568 + asm volatile(ALTERNATIVE("", "call %P[open]", X86_FEATURE_STRONGUDEREF)
21569 + :
21570 + : [open] "i" (__pax_open_userland)
21571 + : "memory", "rax");
21572 +#endif
21573 +
21574 + return 0;
21575 +}
21576 +
21577 +extern void __pax_close_userland(void);
21578 +static __always_inline unsigned long pax_close_userland(void)
21579 +{
21580 +
21581 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21582 + asm volatile(ALTERNATIVE("", "call %P[close]", X86_FEATURE_STRONGUDEREF)
21583 + :
21584 + : [close] "i" (__pax_close_userland)
21585 + : "memory", "rax");
21586 +#endif
21587 +
21588 + return 0;
21589 +}
21590 +
21591 #ifdef CONFIG_X86_SMAP
21592
21593 static __always_inline void clac(void)
21594 diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
21595 index 222a6a3..839da8d 100644
21596 --- a/arch/x86/include/asm/smp.h
21597 +++ b/arch/x86/include/asm/smp.h
21598 @@ -35,7 +35,7 @@ DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_map);
21599 /* cpus sharing the last level cache: */
21600 DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_llc_shared_map);
21601 DECLARE_PER_CPU_READ_MOSTLY(u16, cpu_llc_id);
21602 -DECLARE_PER_CPU_READ_MOSTLY(int, cpu_number);
21603 +DECLARE_PER_CPU_READ_MOSTLY(unsigned int, cpu_number);
21604
21605 static inline struct cpumask *cpu_llc_shared_mask(int cpu)
21606 {
21607 @@ -68,7 +68,7 @@ struct smp_ops {
21608
21609 void (*send_call_func_ipi)(const struct cpumask *mask);
21610 void (*send_call_func_single_ipi)(int cpu);
21611 -};
21612 +} __no_const;
21613
21614 /* Globals due to paravirt */
21615 extern void set_cpu_sibling_map(int cpu);
21616 @@ -182,14 +182,8 @@ extern unsigned disabled_cpus;
21617 extern int safe_smp_processor_id(void);
21618
21619 #elif defined(CONFIG_X86_64_SMP)
21620 -#define raw_smp_processor_id() (this_cpu_read(cpu_number))
21621 -
21622 -#define stack_smp_processor_id() \
21623 -({ \
21624 - struct thread_info *ti; \
21625 - __asm__("andq %%rsp,%0; ":"=r" (ti) : "0" (CURRENT_MASK)); \
21626 - ti->cpu; \
21627 -})
21628 +#define raw_smp_processor_id() (this_cpu_read(cpu_number))
21629 +#define stack_smp_processor_id() raw_smp_processor_id()
21630 #define safe_smp_processor_id() smp_processor_id()
21631
21632 #endif
21633 diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
21634 index c2e00bb..a10266e 100644
21635 --- a/arch/x86/include/asm/stackprotector.h
21636 +++ b/arch/x86/include/asm/stackprotector.h
21637 @@ -49,7 +49,7 @@
21638 * head_32 for boot CPU and setup_per_cpu_areas() for others.
21639 */
21640 #define GDT_STACK_CANARY_INIT \
21641 - [GDT_ENTRY_STACK_CANARY] = GDT_ENTRY_INIT(0x4090, 0, 0x18),
21642 + [GDT_ENTRY_STACK_CANARY] = GDT_ENTRY_INIT(0x4090, 0, 0x17),
21643
21644 /*
21645 * Initialize the stackprotector canary value.
21646 @@ -114,7 +114,7 @@ static inline void setup_stack_canary_segment(int cpu)
21647
21648 static inline void load_stack_canary_segment(void)
21649 {
21650 -#ifdef CONFIG_X86_32
21651 +#if defined(CONFIG_X86_32) && !defined(CONFIG_PAX_MEMORY_UDEREF)
21652 asm volatile ("mov %0, %%gs" : : "r" (0));
21653 #endif
21654 }
21655 diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h
21656 index 70bbe39..4ae2bd4 100644
21657 --- a/arch/x86/include/asm/stacktrace.h
21658 +++ b/arch/x86/include/asm/stacktrace.h
21659 @@ -11,28 +11,20 @@
21660
21661 extern int kstack_depth_to_print;
21662
21663 -struct thread_info;
21664 +struct task_struct;
21665 struct stacktrace_ops;
21666
21667 -typedef unsigned long (*walk_stack_t)(struct thread_info *tinfo,
21668 - unsigned long *stack,
21669 - unsigned long bp,
21670 - const struct stacktrace_ops *ops,
21671 - void *data,
21672 - unsigned long *end,
21673 - int *graph);
21674 +typedef unsigned long walk_stack_t(struct task_struct *task,
21675 + void *stack_start,
21676 + unsigned long *stack,
21677 + unsigned long bp,
21678 + const struct stacktrace_ops *ops,
21679 + void *data,
21680 + unsigned long *end,
21681 + int *graph);
21682
21683 -extern unsigned long
21684 -print_context_stack(struct thread_info *tinfo,
21685 - unsigned long *stack, unsigned long bp,
21686 - const struct stacktrace_ops *ops, void *data,
21687 - unsigned long *end, int *graph);
21688 -
21689 -extern unsigned long
21690 -print_context_stack_bp(struct thread_info *tinfo,
21691 - unsigned long *stack, unsigned long bp,
21692 - const struct stacktrace_ops *ops, void *data,
21693 - unsigned long *end, int *graph);
21694 +extern walk_stack_t print_context_stack;
21695 +extern walk_stack_t print_context_stack_bp;
21696
21697 /* Generic stack tracer with callbacks */
21698
21699 @@ -40,7 +32,7 @@ struct stacktrace_ops {
21700 void (*address)(void *data, unsigned long address, int reliable);
21701 /* On negative return stop dumping */
21702 int (*stack)(void *data, char *name);
21703 - walk_stack_t walk_stack;
21704 + walk_stack_t *walk_stack;
21705 };
21706
21707 void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
21708 diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
21709 index d7f3b3b..3cc39f1 100644
21710 --- a/arch/x86/include/asm/switch_to.h
21711 +++ b/arch/x86/include/asm/switch_to.h
21712 @@ -108,7 +108,7 @@ do { \
21713 "call __switch_to\n\t" \
21714 "movq "__percpu_arg([current_task])",%%rsi\n\t" \
21715 __switch_canary \
21716 - "movq %P[thread_info](%%rsi),%%r8\n\t" \
21717 + "movq "__percpu_arg([thread_info])",%%r8\n\t" \
21718 "movq %%rax,%%rdi\n\t" \
21719 "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \
21720 "jnz ret_from_fork\n\t" \
21721 @@ -119,7 +119,7 @@ do { \
21722 [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \
21723 [ti_flags] "i" (offsetof(struct thread_info, flags)), \
21724 [_tif_fork] "i" (_TIF_FORK), \
21725 - [thread_info] "i" (offsetof(struct task_struct, stack)), \
21726 + [thread_info] "m" (current_tinfo), \
21727 [current_task] "m" (current_task) \
21728 __switch_canary_iparam \
21729 : "memory", "cc" __EXTRA_CLOBBER)
21730 diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h
21731 index 82c34ee..940fa40 100644
21732 --- a/arch/x86/include/asm/sys_ia32.h
21733 +++ b/arch/x86/include/asm/sys_ia32.h
21734 @@ -20,8 +20,8 @@
21735 #include <asm/ia32.h>
21736
21737 /* ia32/sys_ia32.c */
21738 -asmlinkage long sys32_truncate64(const char __user *, unsigned long, unsigned long);
21739 -asmlinkage long sys32_ftruncate64(unsigned int, unsigned long, unsigned long);
21740 +asmlinkage long sys32_truncate64(const char __user *, unsigned int, unsigned int);
21741 +asmlinkage long sys32_ftruncate64(unsigned int, unsigned int, unsigned int);
21742
21743 asmlinkage long sys32_stat64(const char __user *, struct stat64 __user *);
21744 asmlinkage long sys32_lstat64(const char __user *, struct stat64 __user *);
21745 @@ -42,7 +42,7 @@ long sys32_vm86_warning(void);
21746 asmlinkage ssize_t sys32_readahead(int, unsigned, unsigned, size_t);
21747 asmlinkage long sys32_sync_file_range(int, unsigned, unsigned,
21748 unsigned, unsigned, int);
21749 -asmlinkage long sys32_fadvise64(int, unsigned, unsigned, size_t, int);
21750 +asmlinkage long sys32_fadvise64(int, unsigned, unsigned, int, int);
21751 asmlinkage long sys32_fallocate(int, int, unsigned,
21752 unsigned, unsigned, unsigned);
21753
21754 diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
21755 index 225ee54..fae4566 100644
21756 --- a/arch/x86/include/asm/thread_info.h
21757 +++ b/arch/x86/include/asm/thread_info.h
21758 @@ -36,7 +36,7 @@
21759 #ifdef CONFIG_X86_32
21760 # define TOP_OF_KERNEL_STACK_PADDING 8
21761 #else
21762 -# define TOP_OF_KERNEL_STACK_PADDING 0
21763 +# define TOP_OF_KERNEL_STACK_PADDING 16
21764 #endif
21765
21766 /*
21767 @@ -50,27 +50,26 @@ struct task_struct;
21768 #include <linux/atomic.h>
21769
21770 struct thread_info {
21771 - struct task_struct *task; /* main task structure */
21772 __u32 flags; /* low level flags */
21773 __u32 status; /* thread synchronous flags */
21774 __u32 cpu; /* current CPU */
21775 int saved_preempt_count;
21776 mm_segment_t addr_limit;
21777 void __user *sysenter_return;
21778 + unsigned long lowest_stack;
21779 unsigned int sig_on_uaccess_error:1;
21780 unsigned int uaccess_err:1; /* uaccess failed */
21781 };
21782
21783 -#define INIT_THREAD_INFO(tsk) \
21784 +#define INIT_THREAD_INFO \
21785 { \
21786 - .task = &tsk, \
21787 .flags = 0, \
21788 .cpu = 0, \
21789 .saved_preempt_count = INIT_PREEMPT_COUNT, \
21790 .addr_limit = KERNEL_DS, \
21791 }
21792
21793 -#define init_thread_info (init_thread_union.thread_info)
21794 +#define init_thread_info (init_thread_union.stack)
21795 #define init_stack (init_thread_union.stack)
21796
21797 #else /* !__ASSEMBLY__ */
21798 @@ -110,6 +109,7 @@ struct thread_info {
21799 #define TIF_SYSCALL_TRACEPOINT 28 /* syscall tracepoint instrumentation */
21800 #define TIF_ADDR32 29 /* 32-bit address space on 64 bits */
21801 #define TIF_X32 30 /* 32-bit native x86-64 binary */
21802 +#define TIF_GRSEC_SETXID 31 /* update credentials on syscall entry/exit */
21803
21804 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
21805 #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
21806 @@ -133,17 +133,18 @@ struct thread_info {
21807 #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
21808 #define _TIF_ADDR32 (1 << TIF_ADDR32)
21809 #define _TIF_X32 (1 << TIF_X32)
21810 +#define _TIF_GRSEC_SETXID (1 << TIF_GRSEC_SETXID)
21811
21812 /* work to do in syscall_trace_enter() */
21813 #define _TIF_WORK_SYSCALL_ENTRY \
21814 (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU | _TIF_SYSCALL_AUDIT | \
21815 _TIF_SECCOMP | _TIF_SINGLESTEP | _TIF_SYSCALL_TRACEPOINT | \
21816 - _TIF_NOHZ)
21817 + _TIF_NOHZ | _TIF_GRSEC_SETXID)
21818
21819 /* work to do in syscall_trace_leave() */
21820 #define _TIF_WORK_SYSCALL_EXIT \
21821 (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SINGLESTEP | \
21822 - _TIF_SYSCALL_TRACEPOINT | _TIF_NOHZ)
21823 + _TIF_SYSCALL_TRACEPOINT | _TIF_NOHZ | _TIF_GRSEC_SETXID)
21824
21825 /* work to do on interrupt/exception return */
21826 #define _TIF_WORK_MASK \
21827 @@ -154,7 +155,7 @@ struct thread_info {
21828 /* work to do on any return to user space */
21829 #define _TIF_ALLWORK_MASK \
21830 ((0x0000FFFF & ~_TIF_SECCOMP) | _TIF_SYSCALL_TRACEPOINT | \
21831 - _TIF_NOHZ)
21832 + _TIF_NOHZ | _TIF_GRSEC_SETXID)
21833
21834 /* Only used for 64 bit */
21835 #define _TIF_DO_NOTIFY_MASK \
21836 @@ -177,9 +178,11 @@ struct thread_info {
21837 */
21838 #ifndef __ASSEMBLY__
21839
21840 +DECLARE_PER_CPU(struct thread_info *, current_tinfo);
21841 +
21842 static inline struct thread_info *current_thread_info(void)
21843 {
21844 - return (struct thread_info *)(current_top_of_stack() - THREAD_SIZE);
21845 + return this_cpu_read_stable(current_tinfo);
21846 }
21847
21848 static inline unsigned long current_stack_pointer(void)
21849 @@ -195,14 +198,9 @@ static inline unsigned long current_stack_pointer(void)
21850
21851 #else /* !__ASSEMBLY__ */
21852
21853 -#ifdef CONFIG_X86_64
21854 -# define cpu_current_top_of_stack (cpu_tss + TSS_sp0)
21855 -#endif
21856 -
21857 /* Load thread_info address into "reg" */
21858 #define GET_THREAD_INFO(reg) \
21859 - _ASM_MOV PER_CPU_VAR(cpu_current_top_of_stack),reg ; \
21860 - _ASM_SUB $(THREAD_SIZE),reg ;
21861 + _ASM_MOV PER_CPU_VAR(current_tinfo),reg ;
21862
21863 /*
21864 * ASM operand which evaluates to a 'thread_info' address of
21865 @@ -295,5 +293,12 @@ static inline bool is_ia32_task(void)
21866 extern void arch_task_cache_init(void);
21867 extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
21868 extern void arch_release_task_struct(struct task_struct *tsk);
21869 +
21870 +#define __HAVE_THREAD_FUNCTIONS
21871 +#define task_thread_info(task) (&(task)->tinfo)
21872 +#define task_stack_page(task) ((task)->stack)
21873 +#define setup_thread_stack(p, org) do {} while (0)
21874 +#define end_of_stack(p) ((unsigned long *)task_stack_page(p) + 1)
21875 +
21876 #endif
21877 #endif /* _ASM_X86_THREAD_INFO_H */
21878 diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
21879 index cd79194..6a9956f 100644
21880 --- a/arch/x86/include/asm/tlbflush.h
21881 +++ b/arch/x86/include/asm/tlbflush.h
21882 @@ -86,18 +86,44 @@ static inline void cr4_set_bits_and_update_boot(unsigned long mask)
21883
21884 static inline void __native_flush_tlb(void)
21885 {
21886 + if (static_cpu_has(X86_FEATURE_INVPCID)) {
21887 + u64 descriptor[2];
21888 +
21889 + descriptor[0] = PCID_KERNEL;
21890 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_ALL_NONGLOBAL) : "memory");
21891 + return;
21892 + }
21893 +
21894 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21895 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) {
21896 + unsigned int cpu = raw_get_cpu();
21897 +
21898 + native_write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER);
21899 + native_write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL);
21900 + raw_put_cpu_no_resched();
21901 + return;
21902 + }
21903 +#endif
21904 +
21905 native_write_cr3(native_read_cr3());
21906 }
21907
21908 static inline void __native_flush_tlb_global_irq_disabled(void)
21909 {
21910 - unsigned long cr4;
21911 + if (static_cpu_has(X86_FEATURE_INVPCID)) {
21912 + u64 descriptor[2];
21913
21914 - cr4 = this_cpu_read(cpu_tlbstate.cr4);
21915 - /* clear PGE */
21916 - native_write_cr4(cr4 & ~X86_CR4_PGE);
21917 - /* write old PGE again and flush TLBs */
21918 - native_write_cr4(cr4);
21919 + descriptor[0] = PCID_KERNEL;
21920 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_ALL_GLOBAL) : "memory");
21921 + } else {
21922 + unsigned long cr4;
21923 +
21924 + cr4 = this_cpu_read(cpu_tlbstate.cr4);
21925 + /* clear PGE */
21926 + native_write_cr4(cr4 & ~X86_CR4_PGE);
21927 + /* write old PGE again and flush TLBs */
21928 + native_write_cr4(cr4);
21929 + }
21930 }
21931
21932 static inline void __native_flush_tlb_global(void)
21933 @@ -118,6 +144,43 @@ static inline void __native_flush_tlb_global(void)
21934
21935 static inline void __native_flush_tlb_single(unsigned long addr)
21936 {
21937 + if (static_cpu_has(X86_FEATURE_INVPCID)) {
21938 + u64 descriptor[2];
21939 +
21940 + descriptor[0] = PCID_KERNEL;
21941 + descriptor[1] = addr;
21942 +
21943 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21944 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) {
21945 + if (!static_cpu_has(X86_FEATURE_STRONGUDEREF) || addr >= TASK_SIZE_MAX) {
21946 + if (addr < TASK_SIZE_MAX)
21947 + descriptor[1] += pax_user_shadow_base;
21948 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_ADDRESS) : "memory");
21949 + }
21950 +
21951 + descriptor[0] = PCID_USER;
21952 + descriptor[1] = addr;
21953 + }
21954 +#endif
21955 +
21956 + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_ADDRESS) : "memory");
21957 + return;
21958 + }
21959 +
21960 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
21961 + if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) {
21962 + unsigned int cpu = raw_get_cpu();
21963 +
21964 + native_write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER | PCID_NOFLUSH);
21965 + asm volatile("invlpg (%0)" ::"r" (addr) : "memory");
21966 + native_write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH);
21967 + raw_put_cpu_no_resched();
21968 +
21969 + if (!static_cpu_has(X86_FEATURE_STRONGUDEREF) && addr < TASK_SIZE_MAX)
21970 + addr += pax_user_shadow_base;
21971 + }
21972 +#endif
21973 +
21974 asm volatile("invlpg (%0)" ::"r" (addr) : "memory");
21975 }
21976
21977 diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
21978 index a8df874..ef0e34f 100644
21979 --- a/arch/x86/include/asm/uaccess.h
21980 +++ b/arch/x86/include/asm/uaccess.h
21981 @@ -7,6 +7,7 @@
21982 #include <linux/compiler.h>
21983 #include <linux/thread_info.h>
21984 #include <linux/string.h>
21985 +#include <linux/spinlock.h>
21986 #include <asm/asm.h>
21987 #include <asm/page.h>
21988 #include <asm/smap.h>
21989 @@ -29,7 +30,12 @@
21990
21991 #define get_ds() (KERNEL_DS)
21992 #define get_fs() (current_thread_info()->addr_limit)
21993 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
21994 +void __set_fs(mm_segment_t x);
21995 +void set_fs(mm_segment_t x);
21996 +#else
21997 #define set_fs(x) (current_thread_info()->addr_limit = (x))
21998 +#endif
21999
22000 #define segment_eq(a, b) ((a).seg == (b).seg)
22001
22002 @@ -86,8 +92,36 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
22003 * checks that the pointer is in the user space range - after calling
22004 * this function, memory access functions may still return -EFAULT.
22005 */
22006 -#define access_ok(type, addr, size) \
22007 - likely(!__range_not_ok(addr, size, user_addr_max()))
22008 +extern int _cond_resched(void);
22009 +#define access_ok_noprefault(type, addr, size) (likely(!__range_not_ok(addr, size, user_addr_max())))
22010 +#define access_ok(type, addr, size) \
22011 +({ \
22012 + unsigned long __size = size; \
22013 + unsigned long __addr = (unsigned long)addr; \
22014 + bool __ret_ao = __range_not_ok(__addr, __size, user_addr_max()) == 0;\
22015 + if (__ret_ao && __size) { \
22016 + unsigned long __addr_ao = __addr & PAGE_MASK; \
22017 + unsigned long __end_ao = __addr + __size - 1; \
22018 + if (unlikely((__end_ao ^ __addr_ao) & PAGE_MASK)) { \
22019 + while (__addr_ao <= __end_ao) { \
22020 + char __c_ao; \
22021 + __addr_ao += PAGE_SIZE; \
22022 + if (__size > PAGE_SIZE) \
22023 + _cond_resched(); \
22024 + if (__get_user(__c_ao, (char __user *)__addr)) \
22025 + break; \
22026 + if (type != VERIFY_WRITE) { \
22027 + __addr = __addr_ao; \
22028 + continue; \
22029 + } \
22030 + if (__put_user(__c_ao, (char __user *)__addr)) \
22031 + break; \
22032 + __addr = __addr_ao; \
22033 + } \
22034 + } \
22035 + } \
22036 + __ret_ao; \
22037 +})
22038
22039 /*
22040 * The exception table consists of pairs of addresses relative to the
22041 @@ -135,11 +169,13 @@ extern int __get_user_8(void);
22042 extern int __get_user_bad(void);
22043
22044 /*
22045 - * This is a type: either unsigned long, if the argument fits into
22046 - * that type, or otherwise unsigned long long.
22047 + * This is a type: either (un)signed int, if the argument fits into
22048 + * that type, or otherwise (un)signed long long.
22049 */
22050 #define __inttype(x) \
22051 -__typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
22052 +__typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0U), \
22053 + __builtin_choose_expr(__type_is_unsigned(__typeof__(x)), 0ULL, 0LL),\
22054 + __builtin_choose_expr(__type_is_unsigned(__typeof__(x)), 0U, 0)))
22055
22056 /**
22057 * get_user: - Get a simple variable from user space.
22058 @@ -178,10 +214,12 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
22059 register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \
22060 __chk_user_ptr(ptr); \
22061 might_fault(); \
22062 + pax_open_userland(); \
22063 asm volatile("call __get_user_%P3" \
22064 : "=a" (__ret_gu), "=r" (__val_gu) \
22065 : "0" (ptr), "i" (sizeof(*(ptr)))); \
22066 (x) = (__force __typeof__(*(ptr))) __val_gu; \
22067 + pax_close_userland(); \
22068 __ret_gu; \
22069 })
22070
22071 @@ -189,13 +227,21 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
22072 asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
22073 : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
22074
22075 -
22076 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
22077 +#define __copyuser_seg "gs;"
22078 +#define __COPYUSER_SET_ES "pushl %%gs; popl %%es\n"
22079 +#define __COPYUSER_RESTORE_ES "pushl %%ss; popl %%es\n"
22080 +#else
22081 +#define __copyuser_seg
22082 +#define __COPYUSER_SET_ES
22083 +#define __COPYUSER_RESTORE_ES
22084 +#endif
22085
22086 #ifdef CONFIG_X86_32
22087 #define __put_user_asm_u64(x, addr, err, errret) \
22088 asm volatile(ASM_STAC "\n" \
22089 - "1: movl %%eax,0(%2)\n" \
22090 - "2: movl %%edx,4(%2)\n" \
22091 + "1: "__copyuser_seg"movl %%eax,0(%2)\n" \
22092 + "2: "__copyuser_seg"movl %%edx,4(%2)\n" \
22093 "3: " ASM_CLAC "\n" \
22094 ".section .fixup,\"ax\"\n" \
22095 "4: movl %3,%0\n" \
22096 @@ -208,8 +254,8 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
22097
22098 #define __put_user_asm_ex_u64(x, addr) \
22099 asm volatile(ASM_STAC "\n" \
22100 - "1: movl %%eax,0(%1)\n" \
22101 - "2: movl %%edx,4(%1)\n" \
22102 + "1: "__copyuser_seg"movl %%eax,0(%1)\n" \
22103 + "2: "__copyuser_seg"movl %%edx,4(%1)\n" \
22104 "3: " ASM_CLAC "\n" \
22105 _ASM_EXTABLE_EX(1b, 2b) \
22106 _ASM_EXTABLE_EX(2b, 3b) \
22107 @@ -260,7 +306,8 @@ extern void __put_user_8(void);
22108 __typeof__(*(ptr)) __pu_val; \
22109 __chk_user_ptr(ptr); \
22110 might_fault(); \
22111 - __pu_val = x; \
22112 + __pu_val = (x); \
22113 + pax_open_userland(); \
22114 switch (sizeof(*(ptr))) { \
22115 case 1: \
22116 __put_user_x(1, __pu_val, ptr, __ret_pu); \
22117 @@ -278,6 +325,7 @@ extern void __put_user_8(void);
22118 __put_user_x(X, __pu_val, ptr, __ret_pu); \
22119 break; \
22120 } \
22121 + pax_close_userland(); \
22122 __ret_pu; \
22123 })
22124
22125 @@ -358,8 +406,10 @@ do { \
22126 } while (0)
22127
22128 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
22129 +do { \
22130 + pax_open_userland(); \
22131 asm volatile(ASM_STAC "\n" \
22132 - "1: mov"itype" %2,%"rtype"1\n" \
22133 + "1: "__copyuser_seg"mov"itype" %2,%"rtype"1\n"\
22134 "2: " ASM_CLAC "\n" \
22135 ".section .fixup,\"ax\"\n" \
22136 "3: mov %3,%0\n" \
22137 @@ -367,8 +417,10 @@ do { \
22138 " jmp 2b\n" \
22139 ".previous\n" \
22140 _ASM_EXTABLE(1b, 3b) \
22141 - : "=r" (err), ltype(x) \
22142 - : "m" (__m(addr)), "i" (errret), "0" (err))
22143 + : "=r" (err), ltype (x) \
22144 + : "m" (__m(addr)), "i" (errret), "0" (err)); \
22145 + pax_close_userland(); \
22146 +} while (0)
22147
22148 #define __get_user_size_ex(x, ptr, size) \
22149 do { \
22150 @@ -392,7 +444,7 @@ do { \
22151 } while (0)
22152
22153 #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
22154 - asm volatile("1: mov"itype" %1,%"rtype"0\n" \
22155 + asm volatile("1: "__copyuser_seg"mov"itype" %1,%"rtype"0\n"\
22156 "2:\n" \
22157 _ASM_EXTABLE_EX(1b, 2b) \
22158 : ltype(x) : "m" (__m(addr)))
22159 @@ -409,13 +461,24 @@ do { \
22160 int __gu_err; \
22161 unsigned long __gu_val; \
22162 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \
22163 - (x) = (__force __typeof__(*(ptr)))__gu_val; \
22164 + (x) = (__typeof__(*(ptr)))__gu_val; \
22165 __gu_err; \
22166 })
22167
22168 /* FIXME: this hack is definitely wrong -AK */
22169 struct __large_struct { unsigned long buf[100]; };
22170 -#define __m(x) (*(struct __large_struct __user *)(x))
22171 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
22172 +#define ____m(x) \
22173 +({ \
22174 + unsigned long ____x = (unsigned long)(x); \
22175 + if (____x < pax_user_shadow_base) \
22176 + ____x += pax_user_shadow_base; \
22177 + (typeof(x))____x; \
22178 +})
22179 +#else
22180 +#define ____m(x) (x)
22181 +#endif
22182 +#define __m(x) (*(struct __large_struct __user *)____m(x))
22183
22184 /*
22185 * Tell gcc we read from memory instead of writing: this is because
22186 @@ -423,8 +486,10 @@ struct __large_struct { unsigned long buf[100]; };
22187 * aliasing issues.
22188 */
22189 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
22190 +do { \
22191 + pax_open_userland(); \
22192 asm volatile(ASM_STAC "\n" \
22193 - "1: mov"itype" %"rtype"1,%2\n" \
22194 + "1: "__copyuser_seg"mov"itype" %"rtype"1,%2\n"\
22195 "2: " ASM_CLAC "\n" \
22196 ".section .fixup,\"ax\"\n" \
22197 "3: mov %3,%0\n" \
22198 @@ -432,10 +497,12 @@ struct __large_struct { unsigned long buf[100]; };
22199 ".previous\n" \
22200 _ASM_EXTABLE(1b, 3b) \
22201 : "=r"(err) \
22202 - : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err))
22203 + : ltype (x), "m" (__m(addr)), "i" (errret), "0" (err));\
22204 + pax_close_userland(); \
22205 +} while (0)
22206
22207 #define __put_user_asm_ex(x, addr, itype, rtype, ltype) \
22208 - asm volatile("1: mov"itype" %"rtype"0,%1\n" \
22209 + asm volatile("1: "__copyuser_seg"mov"itype" %"rtype"0,%1\n"\
22210 "2:\n" \
22211 _ASM_EXTABLE_EX(1b, 2b) \
22212 : : ltype(x), "m" (__m(addr)))
22213 @@ -445,11 +512,13 @@ struct __large_struct { unsigned long buf[100]; };
22214 */
22215 #define uaccess_try do { \
22216 current_thread_info()->uaccess_err = 0; \
22217 + pax_open_userland(); \
22218 stac(); \
22219 barrier();
22220
22221 #define uaccess_catch(err) \
22222 clac(); \
22223 + pax_close_userland(); \
22224 (err) |= (current_thread_info()->uaccess_err ? -EFAULT : 0); \
22225 } while (0)
22226
22227 @@ -475,8 +544,12 @@ struct __large_struct { unsigned long buf[100]; };
22228 * On error, the variable @x is set to zero.
22229 */
22230
22231 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
22232 +#define __get_user(x, ptr) get_user((x), (ptr))
22233 +#else
22234 #define __get_user(x, ptr) \
22235 __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
22236 +#endif
22237
22238 /**
22239 * __put_user: - Write a simple value into user space, with less checking.
22240 @@ -499,8 +572,12 @@ struct __large_struct { unsigned long buf[100]; };
22241 * Returns zero on success, or -EFAULT on error.
22242 */
22243
22244 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
22245 +#define __put_user(x, ptr) put_user((x), (ptr))
22246 +#else
22247 #define __put_user(x, ptr) \
22248 __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
22249 +#endif
22250
22251 #define __get_user_unaligned __get_user
22252 #define __put_user_unaligned __put_user
22253 @@ -518,7 +595,7 @@ struct __large_struct { unsigned long buf[100]; };
22254 #define get_user_ex(x, ptr) do { \
22255 unsigned long __gue_val; \
22256 __get_user_size_ex((__gue_val), (ptr), (sizeof(*(ptr)))); \
22257 - (x) = (__force __typeof__(*(ptr)))__gue_val; \
22258 + (x) = (__typeof__(*(ptr)))__gue_val; \
22259 } while (0)
22260
22261 #define put_user_try uaccess_try
22262 @@ -536,7 +613,7 @@ extern __must_check long strlen_user(const char __user *str);
22263 extern __must_check long strnlen_user(const char __user *str, long n);
22264
22265 unsigned long __must_check clear_user(void __user *mem, unsigned long len);
22266 -unsigned long __must_check __clear_user(void __user *mem, unsigned long len);
22267 +unsigned long __must_check __clear_user(void __user *mem, unsigned long len) __size_overflow(2);
22268
22269 extern void __cmpxchg_wrong_size(void)
22270 __compiletime_error("Bad argument size for cmpxchg");
22271 @@ -547,18 +624,19 @@ extern void __cmpxchg_wrong_size(void)
22272 __typeof__(ptr) __uval = (uval); \
22273 __typeof__(*(ptr)) __old = (old); \
22274 __typeof__(*(ptr)) __new = (new); \
22275 + pax_open_userland(); \
22276 switch (size) { \
22277 case 1: \
22278 { \
22279 asm volatile("\t" ASM_STAC "\n" \
22280 - "1:\t" LOCK_PREFIX "cmpxchgb %4, %2\n" \
22281 + "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgb %4, %2\n"\
22282 "2:\t" ASM_CLAC "\n" \
22283 "\t.section .fixup, \"ax\"\n" \
22284 "3:\tmov %3, %0\n" \
22285 "\tjmp 2b\n" \
22286 "\t.previous\n" \
22287 _ASM_EXTABLE(1b, 3b) \
22288 - : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
22289 + : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
22290 : "i" (-EFAULT), "q" (__new), "1" (__old) \
22291 : "memory" \
22292 ); \
22293 @@ -567,14 +645,14 @@ extern void __cmpxchg_wrong_size(void)
22294 case 2: \
22295 { \
22296 asm volatile("\t" ASM_STAC "\n" \
22297 - "1:\t" LOCK_PREFIX "cmpxchgw %4, %2\n" \
22298 + "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgw %4, %2\n"\
22299 "2:\t" ASM_CLAC "\n" \
22300 "\t.section .fixup, \"ax\"\n" \
22301 "3:\tmov %3, %0\n" \
22302 "\tjmp 2b\n" \
22303 "\t.previous\n" \
22304 _ASM_EXTABLE(1b, 3b) \
22305 - : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
22306 + : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
22307 : "i" (-EFAULT), "r" (__new), "1" (__old) \
22308 : "memory" \
22309 ); \
22310 @@ -583,14 +661,14 @@ extern void __cmpxchg_wrong_size(void)
22311 case 4: \
22312 { \
22313 asm volatile("\t" ASM_STAC "\n" \
22314 - "1:\t" LOCK_PREFIX "cmpxchgl %4, %2\n" \
22315 + "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %4, %2\n"\
22316 "2:\t" ASM_CLAC "\n" \
22317 "\t.section .fixup, \"ax\"\n" \
22318 "3:\tmov %3, %0\n" \
22319 "\tjmp 2b\n" \
22320 "\t.previous\n" \
22321 _ASM_EXTABLE(1b, 3b) \
22322 - : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
22323 + : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
22324 : "i" (-EFAULT), "r" (__new), "1" (__old) \
22325 : "memory" \
22326 ); \
22327 @@ -602,14 +680,14 @@ extern void __cmpxchg_wrong_size(void)
22328 __cmpxchg_wrong_size(); \
22329 \
22330 asm volatile("\t" ASM_STAC "\n" \
22331 - "1:\t" LOCK_PREFIX "cmpxchgq %4, %2\n" \
22332 + "1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgq %4, %2\n"\
22333 "2:\t" ASM_CLAC "\n" \
22334 "\t.section .fixup, \"ax\"\n" \
22335 "3:\tmov %3, %0\n" \
22336 "\tjmp 2b\n" \
22337 "\t.previous\n" \
22338 _ASM_EXTABLE(1b, 3b) \
22339 - : "+r" (__ret), "=a" (__old), "+m" (*(ptr)) \
22340 + : "+r" (__ret), "=a" (__old), "+m" (*____m(ptr))\
22341 : "i" (-EFAULT), "r" (__new), "1" (__old) \
22342 : "memory" \
22343 ); \
22344 @@ -618,6 +696,7 @@ extern void __cmpxchg_wrong_size(void)
22345 default: \
22346 __cmpxchg_wrong_size(); \
22347 } \
22348 + pax_close_userland(); \
22349 *__uval = __old; \
22350 __ret; \
22351 })
22352 @@ -641,17 +720,6 @@ extern struct movsl_mask {
22353
22354 #define ARCH_HAS_NOCACHE_UACCESS 1
22355
22356 -#ifdef CONFIG_X86_32
22357 -# include <asm/uaccess_32.h>
22358 -#else
22359 -# include <asm/uaccess_64.h>
22360 -#endif
22361 -
22362 -unsigned long __must_check _copy_from_user(void *to, const void __user *from,
22363 - unsigned n);
22364 -unsigned long __must_check _copy_to_user(void __user *to, const void *from,
22365 - unsigned n);
22366 -
22367 #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
22368 # define copy_user_diag __compiletime_error
22369 #else
22370 @@ -661,7 +729,7 @@ unsigned long __must_check _copy_to_user(void __user *to, const void *from,
22371 extern void copy_user_diag("copy_from_user() buffer size is too small")
22372 copy_from_user_overflow(void);
22373 extern void copy_user_diag("copy_to_user() buffer size is too small")
22374 -copy_to_user_overflow(void) __asm__("copy_from_user_overflow");
22375 +copy_to_user_overflow(void);
22376
22377 #undef copy_user_diag
22378
22379 @@ -674,7 +742,7 @@ __copy_from_user_overflow(void) __asm__("copy_from_user_overflow");
22380
22381 extern void
22382 __compiletime_warning("copy_to_user() buffer size is not provably correct")
22383 -__copy_to_user_overflow(void) __asm__("copy_from_user_overflow");
22384 +__copy_to_user_overflow(void) __asm__("copy_to_user_overflow");
22385 #define __copy_to_user_overflow(size, count) __copy_to_user_overflow()
22386
22387 #else
22388 @@ -689,10 +757,16 @@ __copy_from_user_overflow(int size, unsigned long count)
22389
22390 #endif
22391
22392 +#ifdef CONFIG_X86_32
22393 +# include <asm/uaccess_32.h>
22394 +#else
22395 +# include <asm/uaccess_64.h>
22396 +#endif
22397 +
22398 static inline unsigned long __must_check
22399 copy_from_user(void *to, const void __user *from, unsigned long n)
22400 {
22401 - int sz = __compiletime_object_size(to);
22402 + size_t sz = __compiletime_object_size(to);
22403
22404 might_fault();
22405
22406 @@ -714,12 +788,15 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
22407 * case, and do only runtime checking for non-constant sizes.
22408 */
22409
22410 - if (likely(sz < 0 || sz >= n))
22411 - n = _copy_from_user(to, from, n);
22412 - else if(__builtin_constant_p(n))
22413 - copy_from_user_overflow();
22414 - else
22415 - __copy_from_user_overflow(sz, n);
22416 + if (likely(sz != (size_t)-1 && sz < n)) {
22417 + if(__builtin_constant_p(n))
22418 + copy_from_user_overflow();
22419 + else
22420 + __copy_from_user_overflow(sz, n);
22421 + } else if (access_ok(VERIFY_READ, from, n))
22422 + n = __copy_from_user(to, from, n);
22423 + else if ((long)n > 0)
22424 + memset(to, 0, n);
22425
22426 return n;
22427 }
22428 @@ -727,17 +804,18 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
22429 static inline unsigned long __must_check
22430 copy_to_user(void __user *to, const void *from, unsigned long n)
22431 {
22432 - int sz = __compiletime_object_size(from);
22433 + size_t sz = __compiletime_object_size(from);
22434
22435 might_fault();
22436
22437 /* See the comment in copy_from_user() above. */
22438 - if (likely(sz < 0 || sz >= n))
22439 - n = _copy_to_user(to, from, n);
22440 - else if(__builtin_constant_p(n))
22441 - copy_to_user_overflow();
22442 - else
22443 - __copy_to_user_overflow(sz, n);
22444 + if (likely(sz != (size_t)-1 && sz < n)) {
22445 + if(__builtin_constant_p(n))
22446 + copy_to_user_overflow();
22447 + else
22448 + __copy_to_user_overflow(sz, n);
22449 + } else if (access_ok(VERIFY_WRITE, to, n))
22450 + n = __copy_to_user(to, from, n);
22451
22452 return n;
22453 }
22454 diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
22455 index f5dcb52..da2c15b 100644
22456 --- a/arch/x86/include/asm/uaccess_32.h
22457 +++ b/arch/x86/include/asm/uaccess_32.h
22458 @@ -40,9 +40,14 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero
22459 * anything, so this is accurate.
22460 */
22461
22462 -static __always_inline unsigned long __must_check
22463 +static __always_inline __size_overflow(3) unsigned long __must_check
22464 __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
22465 {
22466 + if ((long)n < 0)
22467 + return n;
22468 +
22469 + check_object_size(from, n, true);
22470 +
22471 if (__builtin_constant_p(n)) {
22472 unsigned long ret;
22473
22474 @@ -87,12 +92,16 @@ static __always_inline unsigned long __must_check
22475 __copy_to_user(void __user *to, const void *from, unsigned long n)
22476 {
22477 might_fault();
22478 +
22479 return __copy_to_user_inatomic(to, from, n);
22480 }
22481
22482 -static __always_inline unsigned long
22483 +static __always_inline __size_overflow(3) unsigned long
22484 __copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
22485 {
22486 + if ((long)n < 0)
22487 + return n;
22488 +
22489 /* Avoid zeroing the tail if the copy fails..
22490 * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
22491 * but as the zeroing behaviour is only significant when n is not
22492 @@ -143,6 +152,12 @@ static __always_inline unsigned long
22493 __copy_from_user(void *to, const void __user *from, unsigned long n)
22494 {
22495 might_fault();
22496 +
22497 + if ((long)n < 0)
22498 + return n;
22499 +
22500 + check_object_size(to, n, false);
22501 +
22502 if (__builtin_constant_p(n)) {
22503 unsigned long ret;
22504
22505 @@ -165,6 +180,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to,
22506 const void __user *from, unsigned long n)
22507 {
22508 might_fault();
22509 +
22510 + if ((long)n < 0)
22511 + return n;
22512 +
22513 if (__builtin_constant_p(n)) {
22514 unsigned long ret;
22515
22516 @@ -187,7 +206,10 @@ static __always_inline unsigned long
22517 __copy_from_user_inatomic_nocache(void *to, const void __user *from,
22518 unsigned long n)
22519 {
22520 - return __copy_from_user_ll_nocache_nozero(to, from, n);
22521 + if ((long)n < 0)
22522 + return n;
22523 +
22524 + return __copy_from_user_ll_nocache_nozero(to, from, n);
22525 }
22526
22527 #endif /* _ASM_X86_UACCESS_32_H */
22528 diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
22529 index f2f9b39..2ae1bf8 100644
22530 --- a/arch/x86/include/asm/uaccess_64.h
22531 +++ b/arch/x86/include/asm/uaccess_64.h
22532 @@ -10,6 +10,9 @@
22533 #include <asm/alternative.h>
22534 #include <asm/cpufeature.h>
22535 #include <asm/page.h>
22536 +#include <asm/pgtable.h>
22537 +
22538 +#define set_fs(x) (current_thread_info()->addr_limit = (x))
22539
22540 /*
22541 * Copy To/From Userspace
22542 @@ -23,8 +26,8 @@ copy_user_generic_string(void *to, const void *from, unsigned len);
22543 __must_check unsigned long
22544 copy_user_generic_unrolled(void *to, const void *from, unsigned len);
22545
22546 -static __always_inline __must_check unsigned long
22547 -copy_user_generic(void *to, const void *from, unsigned len)
22548 +static __always_inline __must_check __size_overflow(3) unsigned long
22549 +copy_user_generic(void *to, const void *from, unsigned long len)
22550 {
22551 unsigned ret;
22552
22553 @@ -46,121 +49,170 @@ copy_user_generic(void *to, const void *from, unsigned len)
22554 }
22555
22556 __must_check unsigned long
22557 -copy_in_user(void __user *to, const void __user *from, unsigned len);
22558 +copy_in_user(void __user *to, const void __user *from, unsigned long len);
22559
22560 static __always_inline __must_check
22561 -int __copy_from_user_nocheck(void *dst, const void __user *src, unsigned size)
22562 +unsigned long __copy_from_user_nocheck(void *dst, const void __user *src, unsigned long size)
22563 {
22564 - int ret = 0;
22565 + size_t sz = __compiletime_object_size(dst);
22566 + unsigned ret = 0;
22567 +
22568 + if (size > INT_MAX)
22569 + return size;
22570 +
22571 + check_object_size(dst, size, false);
22572 +
22573 +#ifdef CONFIG_PAX_MEMORY_UDEREF
22574 + if (!access_ok_noprefault(VERIFY_READ, src, size))
22575 + return size;
22576 +#endif
22577 +
22578 + if (unlikely(sz != (size_t)-1 && sz < size)) {
22579 + if(__builtin_constant_p(size))
22580 + copy_from_user_overflow();
22581 + else
22582 + __copy_from_user_overflow(sz, size);
22583 + return size;
22584 + }
22585
22586 if (!__builtin_constant_p(size))
22587 - return copy_user_generic(dst, (__force void *)src, size);
22588 + return copy_user_generic(dst, (__force_kernel const void *)____m(src), size);
22589 switch (size) {
22590 - case 1:__get_user_asm(*(u8 *)dst, (u8 __user *)src,
22591 + case 1:__get_user_asm(*(u8 *)dst, (const u8 __user *)src,
22592 ret, "b", "b", "=q", 1);
22593 return ret;
22594 - case 2:__get_user_asm(*(u16 *)dst, (u16 __user *)src,
22595 + case 2:__get_user_asm(*(u16 *)dst, (const u16 __user *)src,
22596 ret, "w", "w", "=r", 2);
22597 return ret;
22598 - case 4:__get_user_asm(*(u32 *)dst, (u32 __user *)src,
22599 + case 4:__get_user_asm(*(u32 *)dst, (const u32 __user *)src,
22600 ret, "l", "k", "=r", 4);
22601 return ret;
22602 - case 8:__get_user_asm(*(u64 *)dst, (u64 __user *)src,
22603 + case 8:__get_user_asm(*(u64 *)dst, (const u64 __user *)src,
22604 ret, "q", "", "=r", 8);
22605 return ret;
22606 case 10:
22607 - __get_user_asm(*(u64 *)dst, (u64 __user *)src,
22608 + __get_user_asm(*(u64 *)dst, (const u64 __user *)src,
22609 ret, "q", "", "=r", 10);
22610 if (unlikely(ret))
22611 return ret;
22612 __get_user_asm(*(u16 *)(8 + (char *)dst),
22613 - (u16 __user *)(8 + (char __user *)src),
22614 + (const u16 __user *)(8 + (const char __user *)src),
22615 ret, "w", "w", "=r", 2);
22616 return ret;
22617 case 16:
22618 - __get_user_asm(*(u64 *)dst, (u64 __user *)src,
22619 + __get_user_asm(*(u64 *)dst, (const u64 __user *)src,
22620 ret, "q", "", "=r", 16);
22621 if (unlikely(ret))
22622 return ret;
22623 __get_user_asm(*(u64 *)(8 + (char *)dst),
22624 - (u64 __user *)(8 + (char __user *)src),
22625 + (const u64 __user *)(8 + (const char __user *)src),
22626 ret, "q", "", "=r", 8);
22627 return ret;
22628 default:
22629 - return copy_user_generic(dst, (__force void *)src, size);
22630 + return copy_user_generic(dst, (__force_kernel const void *)____m(src), size);
22631 }
22632 }
22633
22634 static __always_inline __must_check
22635 -int __copy_from_user(void *dst, const void __user *src, unsigned size)
22636 +unsigned long __copy_from_user(void *dst, const void __user *src, unsigned long size)
22637 {
22638 might_fault();
22639 return __copy_from_user_nocheck(dst, src, size);
22640 }
22641
22642 static __always_inline __must_check
22643 -int __copy_to_user_nocheck(void __user *dst, const void *src, unsigned size)
22644 +unsigned long __copy_to_user_nocheck(void __user *dst, const void *src, unsigned long size)
22645 {
22646 - int ret = 0;
22647 + size_t sz = __compiletime_object_size(src);
22648 + unsigned ret = 0;
22649 +
22650 + if (size > INT_MAX)
22651 + return size;
22652 +
22653 + check_object_size(src, size, true);
22654 +
22655 +#ifdef CONFIG_PAX_MEMORY_UDEREF
22656 + if (!access_ok_noprefault(VERIFY_WRITE, dst, size))
22657 + return size;
22658 +#endif
22659 +
22660 + if (unlikely(sz != (size_t)-1 && sz < size)) {
22661 + if(__builtin_constant_p(size))
22662 + copy_to_user_overflow();
22663 + else
22664 + __copy_to_user_overflow(sz, size);
22665 + return size;
22666 + }
22667
22668 if (!__builtin_constant_p(size))
22669 - return copy_user_generic((__force void *)dst, src, size);
22670 + return copy_user_generic((__force_kernel void *)____m(dst), src, size);
22671 switch (size) {
22672 - case 1:__put_user_asm(*(u8 *)src, (u8 __user *)dst,
22673 + case 1:__put_user_asm(*(const u8 *)src, (u8 __user *)dst,
22674 ret, "b", "b", "iq", 1);
22675 return ret;
22676 - case 2:__put_user_asm(*(u16 *)src, (u16 __user *)dst,
22677 + case 2:__put_user_asm(*(const u16 *)src, (u16 __user *)dst,
22678 ret, "w", "w", "ir", 2);
22679 return ret;
22680 - case 4:__put_user_asm(*(u32 *)src, (u32 __user *)dst,
22681 + case 4:__put_user_asm(*(const u32 *)src, (u32 __user *)dst,
22682 ret, "l", "k", "ir", 4);
22683 return ret;
22684 - case 8:__put_user_asm(*(u64 *)src, (u64 __user *)dst,
22685 + case 8:__put_user_asm(*(const u64 *)src, (u64 __user *)dst,
22686 ret, "q", "", "er", 8);
22687 return ret;
22688 case 10:
22689 - __put_user_asm(*(u64 *)src, (u64 __user *)dst,
22690 + __put_user_asm(*(const u64 *)src, (u64 __user *)dst,
22691 ret, "q", "", "er", 10);
22692 if (unlikely(ret))
22693 return ret;
22694 asm("":::"memory");
22695 - __put_user_asm(4[(u16 *)src], 4 + (u16 __user *)dst,
22696 + __put_user_asm(4[(const u16 *)src], 4 + (u16 __user *)dst,
22697 ret, "w", "w", "ir", 2);
22698 return ret;
22699 case 16:
22700 - __put_user_asm(*(u64 *)src, (u64 __user *)dst,
22701 + __put_user_asm(*(const u64 *)src, (u64 __user *)dst,
22702 ret, "q", "", "er", 16);
22703 if (unlikely(ret))
22704 return ret;
22705 asm("":::"memory");
22706 - __put_user_asm(1[(u64 *)src], 1 + (u64 __user *)dst,
22707 + __put_user_asm(1[(const u64 *)src], 1 + (u64 __user *)dst,
22708 ret, "q", "", "er", 8);
22709 return ret;
22710 default:
22711 - return copy_user_generic((__force void *)dst, src, size);
22712 + return copy_user_generic((__force_kernel void *)____m(dst), src, size);
22713 }
22714 }
22715
22716 static __always_inline __must_check
22717 -int __copy_to_user(void __user *dst, const void *src, unsigned size)
22718 +unsigned long __copy_to_user(void __user *dst, const void *src, unsigned long size)
22719 {
22720 might_fault();
22721 return __copy_to_user_nocheck(dst, src, size);
22722 }
22723
22724 static __always_inline __must_check
22725 -int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22726 +unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22727 {
22728 - int ret = 0;
22729 + unsigned ret = 0;
22730
22731 might_fault();
22732 +
22733 + if (size > INT_MAX)
22734 + return size;
22735 +
22736 +#ifdef CONFIG_PAX_MEMORY_UDEREF
22737 + if (!access_ok_noprefault(VERIFY_READ, src, size))
22738 + return size;
22739 + if (!access_ok_noprefault(VERIFY_WRITE, dst, size))
22740 + return size;
22741 +#endif
22742 +
22743 if (!__builtin_constant_p(size))
22744 - return copy_user_generic((__force void *)dst,
22745 - (__force void *)src, size);
22746 + return copy_user_generic((__force_kernel void *)____m(dst),
22747 + (__force_kernel const void *)____m(src), size);
22748 switch (size) {
22749 case 1: {
22750 u8 tmp;
22751 - __get_user_asm(tmp, (u8 __user *)src,
22752 + __get_user_asm(tmp, (const u8 __user *)src,
22753 ret, "b", "b", "=q", 1);
22754 if (likely(!ret))
22755 __put_user_asm(tmp, (u8 __user *)dst,
22756 @@ -169,7 +221,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22757 }
22758 case 2: {
22759 u16 tmp;
22760 - __get_user_asm(tmp, (u16 __user *)src,
22761 + __get_user_asm(tmp, (const u16 __user *)src,
22762 ret, "w", "w", "=r", 2);
22763 if (likely(!ret))
22764 __put_user_asm(tmp, (u16 __user *)dst,
22765 @@ -179,7 +231,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22766
22767 case 4: {
22768 u32 tmp;
22769 - __get_user_asm(tmp, (u32 __user *)src,
22770 + __get_user_asm(tmp, (const u32 __user *)src,
22771 ret, "l", "k", "=r", 4);
22772 if (likely(!ret))
22773 __put_user_asm(tmp, (u32 __user *)dst,
22774 @@ -188,7 +240,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22775 }
22776 case 8: {
22777 u64 tmp;
22778 - __get_user_asm(tmp, (u64 __user *)src,
22779 + __get_user_asm(tmp, (const u64 __user *)src,
22780 ret, "q", "", "=r", 8);
22781 if (likely(!ret))
22782 __put_user_asm(tmp, (u64 __user *)dst,
22783 @@ -196,41 +248,58 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
22784 return ret;
22785 }
22786 default:
22787 - return copy_user_generic((__force void *)dst,
22788 - (__force void *)src, size);
22789 + return copy_user_generic((__force_kernel void *)____m(dst),
22790 + (__force_kernel const void *)____m(src), size);
22791 }
22792 }
22793
22794 -static __must_check __always_inline int
22795 -__copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
22796 +static __must_check __always_inline unsigned long
22797 +__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size)
22798 {
22799 return __copy_from_user_nocheck(dst, src, size);
22800 }
22801
22802 -static __must_check __always_inline int
22803 -__copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
22804 +static __must_check __always_inline unsigned long
22805 +__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size)
22806 {
22807 return __copy_to_user_nocheck(dst, src, size);
22808 }
22809
22810 -extern long __copy_user_nocache(void *dst, const void __user *src,
22811 - unsigned size, int zerorest);
22812 +extern unsigned long __copy_user_nocache(void *dst, const void __user *src,
22813 + unsigned long size, int zerorest);
22814
22815 -static inline int
22816 -__copy_from_user_nocache(void *dst, const void __user *src, unsigned size)
22817 +static inline unsigned long
22818 +__copy_from_user_nocache(void *dst, const void __user *src, unsigned long size)
22819 {
22820 might_fault();
22821 +
22822 + if (size > INT_MAX)
22823 + return size;
22824 +
22825 +#ifdef CONFIG_PAX_MEMORY_UDEREF
22826 + if (!access_ok_noprefault(VERIFY_READ, src, size))
22827 + return size;
22828 +#endif
22829 +
22830 return __copy_user_nocache(dst, src, size, 1);
22831 }
22832
22833 -static inline int
22834 +static inline unsigned long
22835 __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
22836 - unsigned size)
22837 + unsigned long size)
22838 {
22839 + if (size > INT_MAX)
22840 + return size;
22841 +
22842 +#ifdef CONFIG_PAX_MEMORY_UDEREF
22843 + if (!access_ok_noprefault(VERIFY_READ, src, size))
22844 + return size;
22845 +#endif
22846 +
22847 return __copy_user_nocache(dst, src, size, 0);
22848 }
22849
22850 unsigned long
22851 -copy_user_handle_tail(char *to, char *from, unsigned len);
22852 +copy_user_handle_tail(char __user *to, char __user *from, unsigned long len) __size_overflow(3);
22853
22854 #endif /* _ASM_X86_UACCESS_64_H */
22855 diff --git a/arch/x86/include/asm/word-at-a-time.h b/arch/x86/include/asm/word-at-a-time.h
22856 index 5b238981..77fdd78 100644
22857 --- a/arch/x86/include/asm/word-at-a-time.h
22858 +++ b/arch/x86/include/asm/word-at-a-time.h
22859 @@ -11,7 +11,7 @@
22860 * and shift, for example.
22861 */
22862 struct word_at_a_time {
22863 - const unsigned long one_bits, high_bits;
22864 + unsigned long one_bits, high_bits;
22865 };
22866
22867 #define WORD_AT_A_TIME_CONSTANTS { REPEAT_BYTE(0x01), REPEAT_BYTE(0x80) }
22868 diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
22869 index 48d34d2..90671c7 100644
22870 --- a/arch/x86/include/asm/x86_init.h
22871 +++ b/arch/x86/include/asm/x86_init.h
22872 @@ -129,7 +129,7 @@ struct x86_init_ops {
22873 struct x86_init_timers timers;
22874 struct x86_init_iommu iommu;
22875 struct x86_init_pci pci;
22876 -};
22877 +} __no_const;
22878
22879 /**
22880 * struct x86_cpuinit_ops - platform specific cpu hotplug setups
22881 @@ -140,7 +140,7 @@ struct x86_cpuinit_ops {
22882 void (*setup_percpu_clockev)(void);
22883 void (*early_percpu_clock_init)(void);
22884 void (*fixup_cpu_id)(struct cpuinfo_x86 *c, int node);
22885 -};
22886 +} __no_const;
22887
22888 struct timespec;
22889
22890 @@ -168,7 +168,7 @@ struct x86_platform_ops {
22891 void (*save_sched_clock_state)(void);
22892 void (*restore_sched_clock_state)(void);
22893 void (*apic_post_init)(void);
22894 -};
22895 +} __no_const;
22896
22897 struct pci_dev;
22898
22899 @@ -177,12 +177,12 @@ struct x86_msi_ops {
22900 void (*teardown_msi_irq)(unsigned int irq);
22901 void (*teardown_msi_irqs)(struct pci_dev *dev);
22902 void (*restore_msi_irqs)(struct pci_dev *dev);
22903 -};
22904 +} __no_const;
22905
22906 struct x86_io_apic_ops {
22907 unsigned int (*read) (unsigned int apic, unsigned int reg);
22908 void (*disable)(void);
22909 -};
22910 +} __no_const;
22911
22912 extern struct x86_init_ops x86_init;
22913 extern struct x86_cpuinit_ops x86_cpuinit;
22914 diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
22915 index c44a5d5..7f83cfc 100644
22916 --- a/arch/x86/include/asm/xen/page.h
22917 +++ b/arch/x86/include/asm/xen/page.h
22918 @@ -82,7 +82,7 @@ static inline int xen_safe_read_ulong(unsigned long *addr, unsigned long *val)
22919 * - get_phys_to_machine() is to be called by __pfn_to_mfn() only in special
22920 * cases needing an extended handling.
22921 */
22922 -static inline unsigned long __pfn_to_mfn(unsigned long pfn)
22923 +static inline unsigned long __intentional_overflow(-1) __pfn_to_mfn(unsigned long pfn)
22924 {
22925 unsigned long mfn;
22926
22927 diff --git a/arch/x86/include/uapi/asm/e820.h b/arch/x86/include/uapi/asm/e820.h
22928 index 0f457e6..5970c0a 100644
22929 --- a/arch/x86/include/uapi/asm/e820.h
22930 +++ b/arch/x86/include/uapi/asm/e820.h
22931 @@ -69,7 +69,7 @@ struct e820map {
22932 #define ISA_START_ADDRESS 0xa0000
22933 #define ISA_END_ADDRESS 0x100000
22934
22935 -#define BIOS_BEGIN 0x000a0000
22936 +#define BIOS_BEGIN 0x000c0000
22937 #define BIOS_END 0x00100000
22938
22939 #define BIOS_ROM_BASE 0xffe00000
22940 diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
22941 index 0f15af4..501a76a 100644
22942 --- a/arch/x86/kernel/Makefile
22943 +++ b/arch/x86/kernel/Makefile
22944 @@ -28,7 +28,7 @@ obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o
22945 obj-y += setup.o x86_init.o i8259.o irqinit.o jump_label.o
22946 obj-$(CONFIG_IRQ_WORK) += irq_work.o
22947 obj-y += probe_roms.o
22948 -obj-$(CONFIG_X86_32) += i386_ksyms_32.o
22949 +obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o
22950 obj-$(CONFIG_X86_64) += sys_x86_64.o x8664_ksyms_64.o
22951 obj-$(CONFIG_X86_64) += mcount_64.o
22952 obj-$(CONFIG_X86_ESPFIX64) += espfix_64.o
22953 diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
22954 index 9393896..adbaa90 100644
22955 --- a/arch/x86/kernel/acpi/boot.c
22956 +++ b/arch/x86/kernel/acpi/boot.c
22957 @@ -1333,7 +1333,7 @@ static void __init acpi_reduced_hw_init(void)
22958 * If your system is blacklisted here, but you find that acpi=force
22959 * works for you, please contact linux-acpi@vger.kernel.org
22960 */
22961 -static struct dmi_system_id __initdata acpi_dmi_table[] = {
22962 +static const struct dmi_system_id __initconst acpi_dmi_table[] = {
22963 /*
22964 * Boxes that need ACPI disabled
22965 */
22966 @@ -1408,7 +1408,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
22967 };
22968
22969 /* second table for DMI checks that should run after early-quirks */
22970 -static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
22971 +static const struct dmi_system_id __initconst acpi_dmi_table_late[] = {
22972 /*
22973 * HP laptops which use a DSDT reporting as HP/SB400/10000,
22974 * which includes some code which overrides all temperature
22975 diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
22976 index d1daead..acd77e2 100644
22977 --- a/arch/x86/kernel/acpi/sleep.c
22978 +++ b/arch/x86/kernel/acpi/sleep.c
22979 @@ -99,8 +99,12 @@ int x86_acpi_suspend_lowlevel(void)
22980 #else /* CONFIG_64BIT */
22981 #ifdef CONFIG_SMP
22982 stack_start = (unsigned long)temp_stack + sizeof(temp_stack);
22983 +
22984 + pax_open_kernel();
22985 early_gdt_descr.address =
22986 (unsigned long)get_cpu_gdt_table(smp_processor_id());
22987 + pax_close_kernel();
22988 +
22989 initial_gs = per_cpu_offset(smp_processor_id());
22990 #endif
22991 initial_code = (unsigned long)wakeup_long64;
22992 diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S
22993 index 0c26b1b..a766e85 100644
22994 --- a/arch/x86/kernel/acpi/wakeup_32.S
22995 +++ b/arch/x86/kernel/acpi/wakeup_32.S
22996 @@ -31,13 +31,11 @@ wakeup_pmode_return:
22997 # and restore the stack ... but you need gdt for this to work
22998 movl saved_context_esp, %esp
22999
23000 - movl %cs:saved_magic, %eax
23001 - cmpl $0x12345678, %eax
23002 + cmpl $0x12345678, saved_magic
23003 jne bogus_magic
23004
23005 # jump to place where we left off
23006 - movl saved_eip, %eax
23007 - jmp *%eax
23008 + jmp *(saved_eip)
23009
23010 bogus_magic:
23011 jmp bogus_magic
23012 diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
23013 index c42827e..c2fd50b 100644
23014 --- a/arch/x86/kernel/alternative.c
23015 +++ b/arch/x86/kernel/alternative.c
23016 @@ -20,6 +20,7 @@
23017 #include <asm/tlbflush.h>
23018 #include <asm/io.h>
23019 #include <asm/fixmap.h>
23020 +#include <asm/boot.h>
23021
23022 int __read_mostly alternatives_patched;
23023
23024 @@ -261,7 +262,9 @@ static void __init_or_module add_nops(void *insns, unsigned int len)
23025 unsigned int noplen = len;
23026 if (noplen > ASM_NOP_MAX)
23027 noplen = ASM_NOP_MAX;
23028 + pax_open_kernel();
23029 memcpy(insns, ideal_nops[noplen], noplen);
23030 + pax_close_kernel();
23031 insns += noplen;
23032 len -= noplen;
23033 }
23034 @@ -289,6 +292,13 @@ recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf)
23035 if (a->replacementlen != 5)
23036 return;
23037
23038 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
23039 + if (orig_insn < (u8 *)_text || (u8 *)_einittext <= orig_insn)
23040 + orig_insn = (u8 *)ktva_ktla((unsigned long)orig_insn);
23041 + else
23042 + orig_insn -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23043 +#endif
23044 +
23045 o_dspl = *(s32 *)(insnbuf + 1);
23046
23047 /* next_rip of the replacement JMP */
23048 @@ -359,6 +369,7 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
23049 {
23050 struct alt_instr *a;
23051 u8 *instr, *replacement;
23052 + u8 *vinstr, *vreplacement;
23053 u8 insnbuf[MAX_PATCH_LEN];
23054
23055 DPRINTK("alt table %p -> %p", start, end);
23056 @@ -374,46 +385,71 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
23057 for (a = start; a < end; a++) {
23058 int insnbuf_sz = 0;
23059
23060 - instr = (u8 *)&a->instr_offset + a->instr_offset;
23061 - replacement = (u8 *)&a->repl_offset + a->repl_offset;
23062 + vinstr = instr = (u8 *)&a->instr_offset + a->instr_offset;
23063 +
23064 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
23065 + if ((u8 *)_text - (____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR) <= instr &&
23066 + instr < (u8 *)_einittext - (____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR)) {
23067 + instr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23068 + vinstr = (u8 *)ktla_ktva((unsigned long)instr);
23069 + } else if ((u8 *)_text <= instr && instr < (u8 *)_einittext) {
23070 + vinstr = (u8 *)ktla_ktva((unsigned long)instr);
23071 + } else {
23072 + instr = (u8 *)ktva_ktla((unsigned long)instr);
23073 + }
23074 +#endif
23075 +
23076 + vreplacement = replacement = (u8 *)&a->repl_offset + a->repl_offset;
23077 +
23078 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
23079 + if ((u8 *)_text - (____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR) <= replacement &&
23080 + replacement < (u8 *)_einittext - (____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR)) {
23081 + replacement += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23082 + vreplacement = (u8 *)ktla_ktva((unsigned long)replacement);
23083 + } else if ((u8 *)_text <= replacement && replacement < (u8 *)_einittext) {
23084 + vreplacement = (u8 *)ktla_ktva((unsigned long)replacement);
23085 + } else
23086 + replacement = (u8 *)ktva_ktla((unsigned long)replacement);
23087 +#endif
23088 +
23089 BUG_ON(a->instrlen > sizeof(insnbuf));
23090 BUG_ON(a->cpuid >= (NCAPINTS + NBUGINTS) * 32);
23091 if (!boot_cpu_has(a->cpuid)) {
23092 if (a->padlen > 1)
23093 - optimize_nops(a, instr);
23094 + optimize_nops(a, vinstr);
23095
23096 continue;
23097 }
23098
23099 - DPRINTK("feat: %d*32+%d, old: (%p, len: %d), repl: (%p, len: %d), pad: %d",
23100 + DPRINTK("feat: %d*32+%d, old: (%p/%p, len: %d), repl: (%p, len: %d), pad: %d",
23101 a->cpuid >> 5,
23102 a->cpuid & 0x1f,
23103 - instr, a->instrlen,
23104 - replacement, a->replacementlen, a->padlen);
23105 + instr, vinstr, a->instrlen,
23106 + vreplacement, a->replacementlen, a->padlen);
23107
23108 - DUMP_BYTES(instr, a->instrlen, "%p: old_insn: ", instr);
23109 - DUMP_BYTES(replacement, a->replacementlen, "%p: rpl_insn: ", replacement);
23110 + DUMP_BYTES(vinstr, a->instrlen, "%p: old_insn: ", vinstr);
23111 + DUMP_BYTES(vreplacement, a->replacementlen, "%p: rpl_insn: ", vreplacement);
23112
23113 - memcpy(insnbuf, replacement, a->replacementlen);
23114 + memcpy(insnbuf, vreplacement, a->replacementlen);
23115 insnbuf_sz = a->replacementlen;
23116
23117 /* 0xe8 is a relative jump; fix the offset. */
23118 if (*insnbuf == 0xe8 && a->replacementlen == 5) {
23119 - *(s32 *)(insnbuf + 1) += replacement - instr;
23120 + *(s32 *)(insnbuf + 1) += vreplacement - vinstr;
23121 DPRINTK("Fix CALL offset: 0x%x, CALL 0x%lx",
23122 *(s32 *)(insnbuf + 1),
23123 - (unsigned long)instr + *(s32 *)(insnbuf + 1) + 5);
23124 + (unsigned long)vinstr + *(s32 *)(insnbuf + 1) + 5);
23125 }
23126
23127 - if (a->replacementlen && is_jmp(replacement[0]))
23128 - recompute_jump(a, instr, replacement, insnbuf);
23129 + if (a->replacementlen && is_jmp(vreplacement[0]))
23130 + recompute_jump(a, instr, vreplacement, insnbuf);
23131
23132 if (a->instrlen > a->replacementlen) {
23133 add_nops(insnbuf + a->replacementlen,
23134 a->instrlen - a->replacementlen);
23135 insnbuf_sz += a->instrlen - a->replacementlen;
23136 }
23137 - DUMP_BYTES(insnbuf, insnbuf_sz, "%p: final_insn: ", instr);
23138 + DUMP_BYTES(insnbuf, insnbuf_sz, "%p: final_insn: ", vinstr);
23139
23140 text_poke_early(instr, insnbuf, insnbuf_sz);
23141 }
23142 @@ -429,10 +465,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end,
23143 for (poff = start; poff < end; poff++) {
23144 u8 *ptr = (u8 *)poff + *poff;
23145
23146 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
23147 + ptr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23148 + if (ptr < (u8 *)_text || (u8 *)_einittext <= ptr)
23149 + ptr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23150 +#endif
23151 +
23152 if (!*poff || ptr < text || ptr >= text_end)
23153 continue;
23154 /* turn DS segment override prefix into lock prefix */
23155 - if (*ptr == 0x3e)
23156 + if (*(u8 *)ktla_ktva((unsigned long)ptr) == 0x3e)
23157 text_poke(ptr, ((unsigned char []){0xf0}), 1);
23158 }
23159 mutex_unlock(&text_mutex);
23160 @@ -447,10 +489,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end,
23161 for (poff = start; poff < end; poff++) {
23162 u8 *ptr = (u8 *)poff + *poff;
23163
23164 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
23165 + ptr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23166 + if (ptr < (u8 *)_text || (u8 *)_einittext <= ptr)
23167 + ptr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
23168 +#endif
23169 +
23170 if (!*poff || ptr < text || ptr >= text_end)
23171 continue;
23172 /* turn lock prefix into DS segment override prefix */
23173 - if (*ptr == 0xf0)
23174 + if (*(u8 *)ktla_ktva((unsigned long)ptr) == 0xf0)
23175 text_poke(ptr, ((unsigned char []){0x3E}), 1);
23176 }
23177 mutex_unlock(&text_mutex);
23178 @@ -587,7 +635,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start,
23179
23180 BUG_ON(p->len > MAX_PATCH_LEN);
23181 /* prep the buffer with the original instructions */
23182 - memcpy(insnbuf, p->instr, p->len);
23183 + memcpy(insnbuf, (const void *)ktla_ktva((unsigned long)p->instr), p->len);
23184 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
23185 (unsigned long)p->instr, p->len);
23186
23187 @@ -634,7 +682,7 @@ void __init alternative_instructions(void)
23188 if (!uniproc_patched || num_possible_cpus() == 1)
23189 free_init_pages("SMP alternatives",
23190 (unsigned long)__smp_locks,
23191 - (unsigned long)__smp_locks_end);
23192 + PAGE_ALIGN((unsigned long)__smp_locks_end));
23193 #endif
23194
23195 apply_paravirt(__parainstructions, __parainstructions_end);
23196 @@ -655,13 +703,17 @@ void __init alternative_instructions(void)
23197 * instructions. And on the local CPU you need to be protected again NMI or MCE
23198 * handlers seeing an inconsistent instruction while you patch.
23199 */
23200 -void *__init_or_module text_poke_early(void *addr, const void *opcode,
23201 +void *__kprobes text_poke_early(void *addr, const void *opcode,
23202 size_t len)
23203 {
23204 unsigned long flags;
23205 local_irq_save(flags);
23206 - memcpy(addr, opcode, len);
23207 +
23208 + pax_open_kernel();
23209 + memcpy((void *)ktla_ktva((unsigned long)addr), opcode, len);
23210 sync_core();
23211 + pax_close_kernel();
23212 +
23213 local_irq_restore(flags);
23214 /* Could also do a CLFLUSH here to speed up CPU recovery; but
23215 that causes hangs on some VIA CPUs. */
23216 @@ -683,36 +735,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
23217 */
23218 void *text_poke(void *addr, const void *opcode, size_t len)
23219 {
23220 - unsigned long flags;
23221 - char *vaddr;
23222 + unsigned char *vaddr = (void *)ktla_ktva((unsigned long)addr);
23223 struct page *pages[2];
23224 - int i;
23225 + size_t i;
23226
23227 if (!core_kernel_text((unsigned long)addr)) {
23228 - pages[0] = vmalloc_to_page(addr);
23229 - pages[1] = vmalloc_to_page(addr + PAGE_SIZE);
23230 + pages[0] = vmalloc_to_page(vaddr);
23231 + pages[1] = vmalloc_to_page(vaddr + PAGE_SIZE);
23232 } else {
23233 - pages[0] = virt_to_page(addr);
23234 + pages[0] = virt_to_page(vaddr);
23235 WARN_ON(!PageReserved(pages[0]));
23236 - pages[1] = virt_to_page(addr + PAGE_SIZE);
23237 + pages[1] = virt_to_page(vaddr + PAGE_SIZE);
23238 }
23239 BUG_ON(!pages[0]);
23240 - local_irq_save(flags);
23241 - set_fixmap(FIX_TEXT_POKE0, page_to_phys(pages[0]));
23242 - if (pages[1])
23243 - set_fixmap(FIX_TEXT_POKE1, page_to_phys(pages[1]));
23244 - vaddr = (char *)fix_to_virt(FIX_TEXT_POKE0);
23245 - memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
23246 - clear_fixmap(FIX_TEXT_POKE0);
23247 - if (pages[1])
23248 - clear_fixmap(FIX_TEXT_POKE1);
23249 - local_flush_tlb();
23250 - sync_core();
23251 - /* Could also do a CLFLUSH here to speed up CPU recovery; but
23252 - that causes hangs on some VIA CPUs. */
23253 + text_poke_early(addr, opcode, len);
23254 for (i = 0; i < len; i++)
23255 - BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]);
23256 - local_irq_restore(flags);
23257 + BUG_ON((vaddr)[i] != ((const unsigned char *)opcode)[i]);
23258 return addr;
23259 }
23260
23261 @@ -766,7 +804,7 @@ int poke_int3_handler(struct pt_regs *regs)
23262 */
23263 void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler)
23264 {
23265 - unsigned char int3 = 0xcc;
23266 + const unsigned char int3 = 0xcc;
23267
23268 bp_int3_handler = handler;
23269 bp_int3_addr = (u8 *)addr + sizeof(int3);
23270 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
23271 index cde732c..6365ac2 100644
23272 --- a/arch/x86/kernel/apic/apic.c
23273 +++ b/arch/x86/kernel/apic/apic.c
23274 @@ -171,7 +171,7 @@ int first_system_vector = FIRST_SYSTEM_VECTOR;
23275 /*
23276 * Debug level, exported for io_apic.c
23277 */
23278 -unsigned int apic_verbosity;
23279 +int apic_verbosity;
23280
23281 int pic_mode;
23282
23283 @@ -1857,7 +1857,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs)
23284 apic_write(APIC_ESR, 0);
23285 v = apic_read(APIC_ESR);
23286 ack_APIC_irq();
23287 - atomic_inc(&irq_err_count);
23288 + atomic_inc_unchecked(&irq_err_count);
23289
23290 apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x",
23291 smp_processor_id(), v);
23292 diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
23293 index de918c4..32eed23 100644
23294 --- a/arch/x86/kernel/apic/apic_flat_64.c
23295 +++ b/arch/x86/kernel/apic/apic_flat_64.c
23296 @@ -154,7 +154,7 @@ static int flat_probe(void)
23297 return 1;
23298 }
23299
23300 -static struct apic apic_flat = {
23301 +static struct apic apic_flat __read_only = {
23302 .name = "flat",
23303 .probe = flat_probe,
23304 .acpi_madt_oem_check = flat_acpi_madt_oem_check,
23305 @@ -260,7 +260,7 @@ static int physflat_probe(void)
23306 return 0;
23307 }
23308
23309 -static struct apic apic_physflat = {
23310 +static struct apic apic_physflat __read_only = {
23311
23312 .name = "physical flat",
23313 .probe = physflat_probe,
23314 diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c
23315 index b205cdb..d8503ff 100644
23316 --- a/arch/x86/kernel/apic/apic_noop.c
23317 +++ b/arch/x86/kernel/apic/apic_noop.c
23318 @@ -108,7 +108,7 @@ static void noop_apic_write(u32 reg, u32 v)
23319 WARN_ON_ONCE(cpu_has_apic && !disable_apic);
23320 }
23321
23322 -struct apic apic_noop = {
23323 +struct apic apic_noop __read_only = {
23324 .name = "noop",
23325 .probe = noop_probe,
23326 .acpi_madt_oem_check = NULL,
23327 diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c
23328 index c4a8d63..fe893ac 100644
23329 --- a/arch/x86/kernel/apic/bigsmp_32.c
23330 +++ b/arch/x86/kernel/apic/bigsmp_32.c
23331 @@ -147,7 +147,7 @@ static int probe_bigsmp(void)
23332 return dmi_bigsmp;
23333 }
23334
23335 -static struct apic apic_bigsmp = {
23336 +static struct apic apic_bigsmp __read_only = {
23337
23338 .name = "bigsmp",
23339 .probe = probe_bigsmp,
23340 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
23341 index 206052e..621dfb4 100644
23342 --- a/arch/x86/kernel/apic/io_apic.c
23343 +++ b/arch/x86/kernel/apic/io_apic.c
23344 @@ -1682,7 +1682,7 @@ static unsigned int startup_ioapic_irq(struct irq_data *data)
23345 return was_pending;
23346 }
23347
23348 -atomic_t irq_mis_count;
23349 +atomic_unchecked_t irq_mis_count;
23350
23351 #ifdef CONFIG_GENERIC_PENDING_IRQ
23352 static bool io_apic_level_ack_pending(struct mp_chip_data *data)
23353 @@ -1821,7 +1821,7 @@ static void ioapic_ack_level(struct irq_data *irq_data)
23354 * at the cpu.
23355 */
23356 if (!(v & (1 << (i & 0x1f)))) {
23357 - atomic_inc(&irq_mis_count);
23358 + atomic_inc_unchecked(&irq_mis_count);
23359 eoi_ioapic_pin(cfg->vector, irq_data->chip_data);
23360 }
23361
23362 @@ -1867,7 +1867,7 @@ static int ioapic_set_affinity(struct irq_data *irq_data,
23363 return ret;
23364 }
23365
23366 -static struct irq_chip ioapic_chip __read_mostly = {
23367 +static struct irq_chip ioapic_chip = {
23368 .name = "IO-APIC",
23369 .irq_startup = startup_ioapic_irq,
23370 .irq_mask = mask_ioapic_irq,
23371 @@ -1936,7 +1936,7 @@ static void ack_lapic_irq(struct irq_data *data)
23372 ack_APIC_irq();
23373 }
23374
23375 -static struct irq_chip lapic_chip __read_mostly = {
23376 +static struct irq_chip lapic_chip = {
23377 .name = "local-APIC",
23378 .irq_mask = mask_lapic_irq,
23379 .irq_unmask = unmask_lapic_irq,
23380 diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c
23381 index 1a9d735..c58b5c5 100644
23382 --- a/arch/x86/kernel/apic/msi.c
23383 +++ b/arch/x86/kernel/apic/msi.c
23384 @@ -267,7 +267,7 @@ static void hpet_msi_write_msg(struct irq_data *data, struct msi_msg *msg)
23385 hpet_msi_write(data->handler_data, msg);
23386 }
23387
23388 -static struct irq_chip hpet_msi_controller = {
23389 +static irq_chip_no_const hpet_msi_controller __read_only = {
23390 .name = "HPET-MSI",
23391 .irq_unmask = hpet_msi_unmask,
23392 .irq_mask = hpet_msi_mask,
23393 diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c
23394 index bda4886..f9c7195 100644
23395 --- a/arch/x86/kernel/apic/probe_32.c
23396 +++ b/arch/x86/kernel/apic/probe_32.c
23397 @@ -72,7 +72,7 @@ static int probe_default(void)
23398 return 1;
23399 }
23400
23401 -static struct apic apic_default = {
23402 +static struct apic apic_default __read_only = {
23403
23404 .name = "default",
23405 .probe = probe_default,
23406 diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
23407 index 2683f36..0bdc74c 100644
23408 --- a/arch/x86/kernel/apic/vector.c
23409 +++ b/arch/x86/kernel/apic/vector.c
23410 @@ -36,7 +36,7 @@ static struct irq_chip lapic_controller;
23411 static struct apic_chip_data *legacy_irq_data[NR_IRQS_LEGACY];
23412 #endif
23413
23414 -void lock_vector_lock(void)
23415 +void lock_vector_lock(void) __acquires(vector_lock)
23416 {
23417 /* Used to the online set of cpus does not change
23418 * during assign_irq_vector.
23419 @@ -44,7 +44,7 @@ void lock_vector_lock(void)
23420 raw_spin_lock(&vector_lock);
23421 }
23422
23423 -void unlock_vector_lock(void)
23424 +void unlock_vector_lock(void) __releases(vector_lock)
23425 {
23426 raw_spin_unlock(&vector_lock);
23427 }
23428 diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c
23429 index ab3219b..e8033eb 100644
23430 --- a/arch/x86/kernel/apic/x2apic_cluster.c
23431 +++ b/arch/x86/kernel/apic/x2apic_cluster.c
23432 @@ -182,7 +182,7 @@ update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu)
23433 return notifier_from_errno(err);
23434 }
23435
23436 -static struct notifier_block __refdata x2apic_cpu_notifier = {
23437 +static struct notifier_block x2apic_cpu_notifier = {
23438 .notifier_call = update_clusterinfo,
23439 };
23440
23441 @@ -234,7 +234,7 @@ static void cluster_vector_allocation_domain(int cpu, struct cpumask *retmask,
23442 cpumask_and(retmask, mask, per_cpu(cpus_in_cluster, cpu));
23443 }
23444
23445 -static struct apic apic_x2apic_cluster = {
23446 +static struct apic apic_x2apic_cluster __read_only = {
23447
23448 .name = "cluster x2apic",
23449 .probe = x2apic_cluster_probe,
23450 diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
23451 index 3ffd925..8c0f5a8 100644
23452 --- a/arch/x86/kernel/apic/x2apic_phys.c
23453 +++ b/arch/x86/kernel/apic/x2apic_phys.c
23454 @@ -90,7 +90,7 @@ static int x2apic_phys_probe(void)
23455 return apic == &apic_x2apic_phys;
23456 }
23457
23458 -static struct apic apic_x2apic_phys = {
23459 +static struct apic apic_x2apic_phys __read_only = {
23460
23461 .name = "physical x2apic",
23462 .probe = x2apic_phys_probe,
23463 diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
23464 index c8d9295..9af2d03 100644
23465 --- a/arch/x86/kernel/apic/x2apic_uv_x.c
23466 +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
23467 @@ -375,7 +375,7 @@ static int uv_probe(void)
23468 return apic == &apic_x2apic_uv_x;
23469 }
23470
23471 -static struct apic __refdata apic_x2apic_uv_x = {
23472 +static struct apic apic_x2apic_uv_x __read_only = {
23473
23474 .name = "UV large system",
23475 .probe = uv_probe,
23476 diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
23477 index 927ec92..de68f32 100644
23478 --- a/arch/x86/kernel/apm_32.c
23479 +++ b/arch/x86/kernel/apm_32.c
23480 @@ -432,7 +432,7 @@ static DEFINE_MUTEX(apm_mutex);
23481 * This is for buggy BIOS's that refer to (real mode) segment 0x40
23482 * even though they are called in protected mode.
23483 */
23484 -static struct desc_struct bad_bios_desc = GDT_ENTRY_INIT(0x4092,
23485 +static const struct desc_struct bad_bios_desc = GDT_ENTRY_INIT(0x4093,
23486 (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
23487
23488 static const char driver_version[] = "1.16ac"; /* no spaces */
23489 @@ -610,7 +610,10 @@ static long __apm_bios_call(void *_call)
23490 BUG_ON(cpu != 0);
23491 gdt = get_cpu_gdt_table(cpu);
23492 save_desc_40 = gdt[0x40 / 8];
23493 +
23494 + pax_open_kernel();
23495 gdt[0x40 / 8] = bad_bios_desc;
23496 + pax_close_kernel();
23497
23498 apm_irq_save(flags);
23499 APM_DO_SAVE_SEGS;
23500 @@ -619,7 +622,11 @@ static long __apm_bios_call(void *_call)
23501 &call->esi);
23502 APM_DO_RESTORE_SEGS;
23503 apm_irq_restore(flags);
23504 +
23505 + pax_open_kernel();
23506 gdt[0x40 / 8] = save_desc_40;
23507 + pax_close_kernel();
23508 +
23509 put_cpu();
23510
23511 return call->eax & 0xff;
23512 @@ -686,7 +693,10 @@ static long __apm_bios_call_simple(void *_call)
23513 BUG_ON(cpu != 0);
23514 gdt = get_cpu_gdt_table(cpu);
23515 save_desc_40 = gdt[0x40 / 8];
23516 +
23517 + pax_open_kernel();
23518 gdt[0x40 / 8] = bad_bios_desc;
23519 + pax_close_kernel();
23520
23521 apm_irq_save(flags);
23522 APM_DO_SAVE_SEGS;
23523 @@ -694,7 +704,11 @@ static long __apm_bios_call_simple(void *_call)
23524 &call->eax);
23525 APM_DO_RESTORE_SEGS;
23526 apm_irq_restore(flags);
23527 +
23528 + pax_open_kernel();
23529 gdt[0x40 / 8] = save_desc_40;
23530 + pax_close_kernel();
23531 +
23532 put_cpu();
23533 return error;
23534 }
23535 @@ -2039,7 +2053,7 @@ static int __init swab_apm_power_in_minutes(const struct dmi_system_id *d)
23536 return 0;
23537 }
23538
23539 -static struct dmi_system_id __initdata apm_dmi_table[] = {
23540 +static const struct dmi_system_id __initconst apm_dmi_table[] = {
23541 {
23542 print_if_true,
23543 KERN_WARNING "IBM T23 - BIOS 1.03b+ and controller firmware 1.02+ may be needed for Linux APM.",
23544 @@ -2349,12 +2363,15 @@ static int __init apm_init(void)
23545 * code to that CPU.
23546 */
23547 gdt = get_cpu_gdt_table(0);
23548 +
23549 + pax_open_kernel();
23550 set_desc_base(&gdt[APM_CS >> 3],
23551 (unsigned long)__va((unsigned long)apm_info.bios.cseg << 4));
23552 set_desc_base(&gdt[APM_CS_16 >> 3],
23553 (unsigned long)__va((unsigned long)apm_info.bios.cseg_16 << 4));
23554 set_desc_base(&gdt[APM_DS >> 3],
23555 (unsigned long)__va((unsigned long)apm_info.bios.dseg << 4));
23556 + pax_close_kernel();
23557
23558 proc_create("apm", 0, NULL, &apm_file_ops);
23559
23560 diff --git a/arch/x86/kernel/asm-offsets.c b/arch/x86/kernel/asm-offsets.c
23561 index 8e3d22a1..37118b6 100644
23562 --- a/arch/x86/kernel/asm-offsets.c
23563 +++ b/arch/x86/kernel/asm-offsets.c
23564 @@ -32,6 +32,8 @@ void common(void) {
23565 OFFSET(TI_flags, thread_info, flags);
23566 OFFSET(TI_status, thread_info, status);
23567 OFFSET(TI_addr_limit, thread_info, addr_limit);
23568 + OFFSET(TI_lowest_stack, thread_info, lowest_stack);
23569 + DEFINE(TI_task_thread_sp0, offsetof(struct task_struct, thread.sp0) - offsetof(struct task_struct, tinfo));
23570
23571 BLANK();
23572 OFFSET(crypto_tfm_ctx_offset, crypto_tfm, __crt_ctx);
23573 @@ -73,8 +75,26 @@ void common(void) {
23574 #endif
23575 OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0);
23576 OFFSET(PV_MMU_read_cr2, pv_mmu_ops, read_cr2);
23577 +
23578 +#ifdef CONFIG_PAX_KERNEXEC
23579 + OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0);
23580 #endif
23581
23582 +#ifdef CONFIG_PAX_MEMORY_UDEREF
23583 + OFFSET(PV_MMU_read_cr3, pv_mmu_ops, read_cr3);
23584 + OFFSET(PV_MMU_write_cr3, pv_mmu_ops, write_cr3);
23585 +#ifdef CONFIG_X86_64
23586 + OFFSET(PV_MMU_set_pgd_batched, pv_mmu_ops, set_pgd_batched);
23587 +#endif
23588 +#endif
23589 +
23590 +#endif
23591 +
23592 + BLANK();
23593 + DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
23594 + DEFINE(PAGE_SHIFT_asm, PAGE_SHIFT);
23595 + DEFINE(THREAD_SIZE_asm, THREAD_SIZE);
23596 +
23597 #ifdef CONFIG_XEN
23598 BLANK();
23599 OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
23600 diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c
23601 index d8f42f9..a46f1fc 100644
23602 --- a/arch/x86/kernel/asm-offsets_64.c
23603 +++ b/arch/x86/kernel/asm-offsets_64.c
23604 @@ -59,6 +59,7 @@ int main(void)
23605 BLANK();
23606 #undef ENTRY
23607
23608 + DEFINE(TSS_size, sizeof(struct tss_struct));
23609 OFFSET(TSS_ist, tss_struct, x86_tss.ist);
23610 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
23611 BLANK();
23612 diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
23613 index 9bff687..5b899fb 100644
23614 --- a/arch/x86/kernel/cpu/Makefile
23615 +++ b/arch/x86/kernel/cpu/Makefile
23616 @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
23617 CFLAGS_REMOVE_perf_event.o = -pg
23618 endif
23619
23620 -# Make sure load_percpu_segment has no stackprotector
23621 -nostackp := $(call cc-option, -fno-stack-protector)
23622 -CFLAGS_common.o := $(nostackp)
23623 -
23624 obj-y := intel_cacheinfo.o scattered.o topology.o
23625 obj-y += common.o
23626 obj-y += rdrand.o
23627 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
23628 index dd3a4ba..06672af 100644
23629 --- a/arch/x86/kernel/cpu/amd.c
23630 +++ b/arch/x86/kernel/cpu/amd.c
23631 @@ -750,7 +750,7 @@ static void init_amd(struct cpuinfo_x86 *c)
23632 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size)
23633 {
23634 /* AMD errata T13 (order #21922) */
23635 - if ((c->x86 == 6)) {
23636 + if (c->x86 == 6) {
23637 /* Duron Rev A0 */
23638 if (c->x86_model == 3 && c->x86_mask == 0)
23639 size = 64;
23640 diff --git a/arch/x86/kernel/cpu/bugs_64.c b/arch/x86/kernel/cpu/bugs_64.c
23641 index 04f0fe5..3c0598c 100644
23642 --- a/arch/x86/kernel/cpu/bugs_64.c
23643 +++ b/arch/x86/kernel/cpu/bugs_64.c
23644 @@ -10,6 +10,7 @@
23645 #include <asm/processor.h>
23646 #include <asm/mtrr.h>
23647 #include <asm/cacheflush.h>
23648 +#include <asm/sections.h>
23649
23650 void __init check_bugs(void)
23651 {
23652 @@ -18,6 +19,7 @@ void __init check_bugs(void)
23653 printk(KERN_INFO "CPU: ");
23654 print_cpu_info(&boot_cpu_data);
23655 #endif
23656 + set_memory_nx((unsigned long)_sinitdata, (__START_KERNEL_map + KERNEL_IMAGE_SIZE - (unsigned long)_sinitdata) >> PAGE_SHIFT);
23657 alternative_instructions();
23658
23659 /*
23660 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
23661 index cb9e5df..0d25636 100644
23662 --- a/arch/x86/kernel/cpu/common.c
23663 +++ b/arch/x86/kernel/cpu/common.c
23664 @@ -91,60 +91,6 @@ static const struct cpu_dev default_cpu = {
23665
23666 static const struct cpu_dev *this_cpu = &default_cpu;
23667
23668 -DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {
23669 -#ifdef CONFIG_X86_64
23670 - /*
23671 - * We need valid kernel segments for data and code in long mode too
23672 - * IRET will check the segment types kkeil 2000/10/28
23673 - * Also sysret mandates a special GDT layout
23674 - *
23675 - * TLS descriptors are currently at a different place compared to i386.
23676 - * Hopefully nobody expects them at a fixed place (Wine?)
23677 - */
23678 - [GDT_ENTRY_KERNEL32_CS] = GDT_ENTRY_INIT(0xc09b, 0, 0xfffff),
23679 - [GDT_ENTRY_KERNEL_CS] = GDT_ENTRY_INIT(0xa09b, 0, 0xfffff),
23680 - [GDT_ENTRY_KERNEL_DS] = GDT_ENTRY_INIT(0xc093, 0, 0xfffff),
23681 - [GDT_ENTRY_DEFAULT_USER32_CS] = GDT_ENTRY_INIT(0xc0fb, 0, 0xfffff),
23682 - [GDT_ENTRY_DEFAULT_USER_DS] = GDT_ENTRY_INIT(0xc0f3, 0, 0xfffff),
23683 - [GDT_ENTRY_DEFAULT_USER_CS] = GDT_ENTRY_INIT(0xa0fb, 0, 0xfffff),
23684 -#else
23685 - [GDT_ENTRY_KERNEL_CS] = GDT_ENTRY_INIT(0xc09a, 0, 0xfffff),
23686 - [GDT_ENTRY_KERNEL_DS] = GDT_ENTRY_INIT(0xc092, 0, 0xfffff),
23687 - [GDT_ENTRY_DEFAULT_USER_CS] = GDT_ENTRY_INIT(0xc0fa, 0, 0xfffff),
23688 - [GDT_ENTRY_DEFAULT_USER_DS] = GDT_ENTRY_INIT(0xc0f2, 0, 0xfffff),
23689 - /*
23690 - * Segments used for calling PnP BIOS have byte granularity.
23691 - * They code segments and data segments have fixed 64k limits,
23692 - * the transfer segment sizes are set at run time.
23693 - */
23694 - /* 32-bit code */
23695 - [GDT_ENTRY_PNPBIOS_CS32] = GDT_ENTRY_INIT(0x409a, 0, 0xffff),
23696 - /* 16-bit code */
23697 - [GDT_ENTRY_PNPBIOS_CS16] = GDT_ENTRY_INIT(0x009a, 0, 0xffff),
23698 - /* 16-bit data */
23699 - [GDT_ENTRY_PNPBIOS_DS] = GDT_ENTRY_INIT(0x0092, 0, 0xffff),
23700 - /* 16-bit data */
23701 - [GDT_ENTRY_PNPBIOS_TS1] = GDT_ENTRY_INIT(0x0092, 0, 0),
23702 - /* 16-bit data */
23703 - [GDT_ENTRY_PNPBIOS_TS2] = GDT_ENTRY_INIT(0x0092, 0, 0),
23704 - /*
23705 - * The APM segments have byte granularity and their bases
23706 - * are set at run time. All have 64k limits.
23707 - */
23708 - /* 32-bit code */
23709 - [GDT_ENTRY_APMBIOS_BASE] = GDT_ENTRY_INIT(0x409a, 0, 0xffff),
23710 - /* 16-bit code */
23711 - [GDT_ENTRY_APMBIOS_BASE+1] = GDT_ENTRY_INIT(0x009a, 0, 0xffff),
23712 - /* data */
23713 - [GDT_ENTRY_APMBIOS_BASE+2] = GDT_ENTRY_INIT(0x4092, 0, 0xffff),
23714 -
23715 - [GDT_ENTRY_ESPFIX_SS] = GDT_ENTRY_INIT(0xc092, 0, 0xfffff),
23716 - [GDT_ENTRY_PERCPU] = GDT_ENTRY_INIT(0xc092, 0, 0xfffff),
23717 - GDT_STACK_CANARY_INIT
23718 -#endif
23719 -} };
23720 -EXPORT_PER_CPU_SYMBOL_GPL(gdt_page);
23721 -
23722 static int __init x86_mpx_setup(char *s)
23723 {
23724 /* require an exact match without trailing characters */
23725 @@ -287,6 +233,109 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
23726 }
23727 }
23728
23729 +#ifdef CONFIG_PAX_MEMORY_UDEREF
23730 +#ifdef CONFIG_X86_64
23731 +static bool uderef_enabled __read_only = true;
23732 +unsigned long pax_user_shadow_base __read_only;
23733 +EXPORT_SYMBOL(pax_user_shadow_base);
23734 +extern char pax_enter_kernel_user[];
23735 +extern char pax_exit_kernel_user[];
23736 +
23737 +static int __init setup_pax_weakuderef(char *str)
23738 +{
23739 + if (uderef_enabled)
23740 + pax_user_shadow_base = 1UL << TASK_SIZE_MAX_SHIFT;
23741 + return 1;
23742 +}
23743 +__setup("pax_weakuderef", setup_pax_weakuderef);
23744 +#endif
23745 +
23746 +static int __init setup_pax_nouderef(char *str)
23747 +{
23748 +#ifdef CONFIG_X86_32
23749 + unsigned int cpu;
23750 + struct desc_struct *gdt;
23751 +
23752 + for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
23753 + gdt = get_cpu_gdt_table(cpu);
23754 + gdt[GDT_ENTRY_KERNEL_DS].type = 3;
23755 + gdt[GDT_ENTRY_KERNEL_DS].limit = 0xf;
23756 + gdt[GDT_ENTRY_DEFAULT_USER_CS].limit = 0xf;
23757 + gdt[GDT_ENTRY_DEFAULT_USER_DS].limit = 0xf;
23758 + }
23759 + loadsegment(ds, __KERNEL_DS);
23760 + loadsegment(es, __KERNEL_DS);
23761 + loadsegment(ss, __KERNEL_DS);
23762 +#else
23763 + memcpy(pax_enter_kernel_user, (unsigned char []){0xc3}, 1);
23764 + memcpy(pax_exit_kernel_user, (unsigned char []){0xc3}, 1);
23765 + clone_pgd_mask = ~(pgdval_t)0UL;
23766 + pax_user_shadow_base = 0UL;
23767 + setup_clear_cpu_cap(X86_FEATURE_PCIDUDEREF);
23768 + uderef_enabled = false;
23769 +#endif
23770 +
23771 + return 0;
23772 +}
23773 +early_param("pax_nouderef", setup_pax_nouderef);
23774 +#endif
23775 +
23776 +#ifdef CONFIG_X86_64
23777 +static __init int setup_disable_pcid(char *arg)
23778 +{
23779 + setup_clear_cpu_cap(X86_FEATURE_PCID);
23780 + setup_clear_cpu_cap(X86_FEATURE_INVPCID);
23781 +
23782 +#ifdef CONFIG_PAX_MEMORY_UDEREF
23783 + if (uderef_enabled)
23784 + pax_user_shadow_base = 1UL << TASK_SIZE_MAX_SHIFT;
23785 +#endif
23786 +
23787 + return 1;
23788 +}
23789 +__setup("nopcid", setup_disable_pcid);
23790 +
23791 +static void setup_pcid(struct cpuinfo_x86 *c)
23792 +{
23793 + if (cpu_has(c, X86_FEATURE_PCID)) {
23794 + printk("PAX: PCID detected\n");
23795 + cr4_set_bits(X86_CR4_PCIDE);
23796 + } else
23797 + clear_cpu_cap(c, X86_FEATURE_INVPCID);
23798 +
23799 + if (cpu_has(c, X86_FEATURE_INVPCID))
23800 + printk("PAX: INVPCID detected\n");
23801 +
23802 +#ifdef CONFIG_PAX_MEMORY_UDEREF
23803 + if (!uderef_enabled) {
23804 + printk("PAX: UDEREF disabled\n");
23805 + return;
23806 + }
23807 +
23808 + if (!cpu_has(c, X86_FEATURE_PCID)) {
23809 + pax_open_kernel();
23810 + pax_user_shadow_base = 1UL << TASK_SIZE_MAX_SHIFT;
23811 + pax_close_kernel();
23812 + printk("PAX: slow and weak UDEREF enabled\n");
23813 + return;
23814 + }
23815 +
23816 + set_cpu_cap(c, X86_FEATURE_PCIDUDEREF);
23817 +
23818 + pax_open_kernel();
23819 + clone_pgd_mask = ~(pgdval_t)0UL;
23820 + pax_close_kernel();
23821 + if (pax_user_shadow_base)
23822 + printk("PAX: weak UDEREF enabled\n");
23823 + else {
23824 + set_cpu_cap(c, X86_FEATURE_STRONGUDEREF);
23825 + printk("PAX: strong UDEREF enabled\n");
23826 + }
23827 +#endif
23828 +
23829 +}
23830 +#endif
23831 +
23832 /*
23833 * Some CPU features depend on higher CPUID levels, which may not always
23834 * be available due to CPUID level capping or broken virtualization
23835 @@ -387,7 +436,7 @@ void switch_to_new_gdt(int cpu)
23836 {
23837 struct desc_ptr gdt_descr;
23838
23839 - gdt_descr.address = (long)get_cpu_gdt_table(cpu);
23840 + gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
23841 gdt_descr.size = GDT_SIZE - 1;
23842 load_gdt(&gdt_descr);
23843 /* Reload the per-cpu base */
23844 @@ -918,6 +967,20 @@ static void identify_cpu(struct cpuinfo_x86 *c)
23845 setup_smep(c);
23846 setup_smap(c);
23847
23848 +#ifdef CONFIG_X86_32
23849 +#ifdef CONFIG_PAX_PAGEEXEC
23850 + if (!(__supported_pte_mask & _PAGE_NX))
23851 + clear_cpu_cap(c, X86_FEATURE_PSE);
23852 +#endif
23853 +#if defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
23854 + clear_cpu_cap(c, X86_FEATURE_SEP);
23855 +#endif
23856 +#endif
23857 +
23858 +#ifdef CONFIG_X86_64
23859 + setup_pcid(c);
23860 +#endif
23861 +
23862 /*
23863 * The vendor-specific functions might have changed features.
23864 * Now we do "generic changes."
23865 @@ -992,7 +1055,7 @@ void enable_sep_cpu(void)
23866 int cpu;
23867
23868 cpu = get_cpu();
23869 - tss = &per_cpu(cpu_tss, cpu);
23870 + tss = cpu_tss + cpu;
23871
23872 if (!boot_cpu_has(X86_FEATURE_SEP))
23873 goto out;
23874 @@ -1138,10 +1201,12 @@ static __init int setup_disablecpuid(char *arg)
23875 }
23876 __setup("clearcpuid=", setup_disablecpuid);
23877
23878 +DEFINE_PER_CPU(struct thread_info *, current_tinfo) = &init_task.tinfo;
23879 +EXPORT_PER_CPU_SYMBOL(current_tinfo);
23880 +
23881 #ifdef CONFIG_X86_64
23882 -struct desc_ptr idt_descr = { NR_VECTORS * 16 - 1, (unsigned long) idt_table };
23883 -struct desc_ptr debug_idt_descr = { NR_VECTORS * 16 - 1,
23884 - (unsigned long) debug_idt_table };
23885 +struct desc_ptr idt_descr __read_only = { NR_VECTORS * 16 - 1, (unsigned long) idt_table };
23886 +const struct desc_ptr debug_idt_descr = { NR_VECTORS * 16 - 1, (unsigned long) debug_idt_table };
23887
23888 DEFINE_PER_CPU_FIRST(union irq_stack_union,
23889 irq_stack_union) __aligned(PAGE_SIZE) __visible;
23890 @@ -1253,21 +1318,21 @@ EXPORT_PER_CPU_SYMBOL(current_task);
23891 DEFINE_PER_CPU(int, __preempt_count) = INIT_PREEMPT_COUNT;
23892 EXPORT_PER_CPU_SYMBOL(__preempt_count);
23893
23894 +#ifdef CONFIG_CC_STACKPROTECTOR
23895 +DEFINE_PER_CPU_ALIGNED(struct stack_canary, stack_canary);
23896 +#endif
23897 +
23898 +#endif /* CONFIG_X86_64 */
23899 +
23900 /*
23901 * On x86_32, vm86 modifies tss.sp0, so sp0 isn't a reliable way to find
23902 * the top of the kernel stack. Use an extra percpu variable to track the
23903 * top of the kernel stack directly.
23904 */
23905 DEFINE_PER_CPU(unsigned long, cpu_current_top_of_stack) =
23906 - (unsigned long)&init_thread_union + THREAD_SIZE;
23907 + (unsigned long)&init_thread_union - 16 + THREAD_SIZE;
23908 EXPORT_PER_CPU_SYMBOL(cpu_current_top_of_stack);
23909
23910 -#ifdef CONFIG_CC_STACKPROTECTOR
23911 -DEFINE_PER_CPU_ALIGNED(struct stack_canary, stack_canary);
23912 -#endif
23913 -
23914 -#endif /* CONFIG_X86_64 */
23915 -
23916 /*
23917 * Clear all 6 debug registers:
23918 */
23919 @@ -1343,7 +1408,7 @@ void cpu_init(void)
23920 */
23921 load_ucode_ap();
23922
23923 - t = &per_cpu(cpu_tss, cpu);
23924 + t = cpu_tss + cpu;
23925 oist = &per_cpu(orig_ist, cpu);
23926
23927 #ifdef CONFIG_NUMA
23928 @@ -1375,7 +1440,6 @@ void cpu_init(void)
23929 wrmsrl(MSR_KERNEL_GS_BASE, 0);
23930 barrier();
23931
23932 - x86_configure_nx();
23933 x2apic_setup();
23934
23935 /*
23936 @@ -1427,7 +1491,7 @@ void cpu_init(void)
23937 {
23938 int cpu = smp_processor_id();
23939 struct task_struct *curr = current;
23940 - struct tss_struct *t = &per_cpu(cpu_tss, cpu);
23941 + struct tss_struct *t = cpu_tss + cpu;
23942 struct thread_struct *thread = &curr->thread;
23943
23944 wait_for_master_cpu(cpu);
23945 diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
23946 index be4febc..f7af533 100644
23947 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c
23948 +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
23949 @@ -519,25 +519,23 @@ cache_private_attrs_is_visible(struct kobject *kobj,
23950 return 0;
23951 }
23952
23953 +static struct attribute *amd_l3_attrs[4];
23954 +
23955 static struct attribute_group cache_private_group = {
23956 .is_visible = cache_private_attrs_is_visible,
23957 + .attrs = amd_l3_attrs,
23958 };
23959
23960 static void init_amd_l3_attrs(void)
23961 {
23962 int n = 1;
23963 - static struct attribute **amd_l3_attrs;
23964 -
23965 - if (amd_l3_attrs) /* already initialized */
23966 - return;
23967
23968 if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE))
23969 n += 2;
23970 if (amd_nb_has_feature(AMD_NB_L3_PARTITIONING))
23971 n += 1;
23972
23973 - amd_l3_attrs = kcalloc(n, sizeof(*amd_l3_attrs), GFP_KERNEL);
23974 - if (!amd_l3_attrs)
23975 + if (n > 1 && amd_l3_attrs[0]) /* already initialized */
23976 return;
23977
23978 n = 0;
23979 @@ -547,8 +545,6 @@ static void init_amd_l3_attrs(void)
23980 }
23981 if (amd_nb_has_feature(AMD_NB_L3_PARTITIONING))
23982 amd_l3_attrs[n++] = &dev_attr_subcaches.attr;
23983 -
23984 - cache_private_group.attrs = amd_l3_attrs;
23985 }
23986
23987 const struct attribute_group *
23988 @@ -559,7 +555,7 @@ cache_get_priv_group(struct cacheinfo *this_leaf)
23989 if (this_leaf->level < 3 || !nb)
23990 return NULL;
23991
23992 - if (nb && nb->l3_cache.indices)
23993 + if (nb->l3_cache.indices)
23994 init_amd_l3_attrs();
23995
23996 return &cache_private_group;
23997 diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
23998 index df919ff..3332bf7 100644
23999 --- a/arch/x86/kernel/cpu/mcheck/mce.c
24000 +++ b/arch/x86/kernel/cpu/mcheck/mce.c
24001 @@ -47,6 +47,7 @@
24002 #include <asm/tlbflush.h>
24003 #include <asm/mce.h>
24004 #include <asm/msr.h>
24005 +#include <asm/local.h>
24006
24007 #include "mce-internal.h"
24008
24009 @@ -259,7 +260,7 @@ static void print_mce(struct mce *m)
24010 !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
24011 m->cs, m->ip);
24012
24013 - if (m->cs == __KERNEL_CS)
24014 + if (m->cs == __KERNEL_CS || m->cs == __KERNEXEC_KERNEL_CS)
24015 print_symbol("{%s}", m->ip);
24016 pr_cont("\n");
24017 }
24018 @@ -292,10 +293,10 @@ static void print_mce(struct mce *m)
24019
24020 #define PANIC_TIMEOUT 5 /* 5 seconds */
24021
24022 -static atomic_t mce_panicked;
24023 +static atomic_unchecked_t mce_panicked;
24024
24025 static int fake_panic;
24026 -static atomic_t mce_fake_panicked;
24027 +static atomic_unchecked_t mce_fake_panicked;
24028
24029 /* Panic in progress. Enable interrupts and wait for final IPI */
24030 static void wait_for_panic(void)
24031 @@ -319,7 +320,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp)
24032 /*
24033 * Make sure only one CPU runs in machine check panic
24034 */
24035 - if (atomic_inc_return(&mce_panicked) > 1)
24036 + if (atomic_inc_return_unchecked(&mce_panicked) > 1)
24037 wait_for_panic();
24038 barrier();
24039
24040 @@ -327,7 +328,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp)
24041 console_verbose();
24042 } else {
24043 /* Don't log too much for fake panic */
24044 - if (atomic_inc_return(&mce_fake_panicked) > 1)
24045 + if (atomic_inc_return_unchecked(&mce_fake_panicked) > 1)
24046 return;
24047 }
24048 /* First print corrected ones that are still unlogged */
24049 @@ -366,7 +367,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp)
24050 if (!fake_panic) {
24051 if (panic_timeout == 0)
24052 panic_timeout = mca_cfg.panic_timeout;
24053 - panic(msg);
24054 + panic("%s", msg);
24055 } else
24056 pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg);
24057 }
24058 @@ -752,7 +753,7 @@ static int mce_timed_out(u64 *t, const char *msg)
24059 * might have been modified by someone else.
24060 */
24061 rmb();
24062 - if (atomic_read(&mce_panicked))
24063 + if (atomic_read_unchecked(&mce_panicked))
24064 wait_for_panic();
24065 if (!mca_cfg.monarch_timeout)
24066 goto out;
24067 @@ -1708,7 +1709,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
24068 }
24069
24070 /* Call the installed machine check handler for this CPU setup. */
24071 -void (*machine_check_vector)(struct pt_regs *, long error_code) =
24072 +void (*machine_check_vector)(struct pt_regs *, long error_code) __read_only =
24073 unexpected_machine_check;
24074
24075 /*
24076 @@ -1731,7 +1732,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
24077 return;
24078 }
24079
24080 + pax_open_kernel();
24081 machine_check_vector = do_machine_check;
24082 + pax_close_kernel();
24083
24084 __mcheck_cpu_init_generic();
24085 __mcheck_cpu_init_vendor(c);
24086 @@ -1745,7 +1748,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
24087 */
24088
24089 static DEFINE_SPINLOCK(mce_chrdev_state_lock);
24090 -static int mce_chrdev_open_count; /* #times opened */
24091 +static local_t mce_chrdev_open_count; /* #times opened */
24092 static int mce_chrdev_open_exclu; /* already open exclusive? */
24093
24094 static int mce_chrdev_open(struct inode *inode, struct file *file)
24095 @@ -1753,7 +1756,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
24096 spin_lock(&mce_chrdev_state_lock);
24097
24098 if (mce_chrdev_open_exclu ||
24099 - (mce_chrdev_open_count && (file->f_flags & O_EXCL))) {
24100 + (local_read(&mce_chrdev_open_count) && (file->f_flags & O_EXCL))) {
24101 spin_unlock(&mce_chrdev_state_lock);
24102
24103 return -EBUSY;
24104 @@ -1761,7 +1764,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
24105
24106 if (file->f_flags & O_EXCL)
24107 mce_chrdev_open_exclu = 1;
24108 - mce_chrdev_open_count++;
24109 + local_inc(&mce_chrdev_open_count);
24110
24111 spin_unlock(&mce_chrdev_state_lock);
24112
24113 @@ -1772,7 +1775,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
24114 {
24115 spin_lock(&mce_chrdev_state_lock);
24116
24117 - mce_chrdev_open_count--;
24118 + local_dec(&mce_chrdev_open_count);
24119 mce_chrdev_open_exclu = 0;
24120
24121 spin_unlock(&mce_chrdev_state_lock);
24122 @@ -2448,7 +2451,7 @@ static __init void mce_init_banks(void)
24123
24124 for (i = 0; i < mca_cfg.banks; i++) {
24125 struct mce_bank *b = &mce_banks[i];
24126 - struct device_attribute *a = &b->attr;
24127 + device_attribute_no_const *a = &b->attr;
24128
24129 sysfs_attr_init(&a->attr);
24130 a->attr.name = b->attrname;
24131 @@ -2555,7 +2558,7 @@ struct dentry *mce_get_debugfs_dir(void)
24132 static void mce_reset(void)
24133 {
24134 cpu_missing = 0;
24135 - atomic_set(&mce_fake_panicked, 0);
24136 + atomic_set_unchecked(&mce_fake_panicked, 0);
24137 atomic_set(&mce_executing, 0);
24138 atomic_set(&mce_callin, 0);
24139 atomic_set(&global_nwo, 0);
24140 diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c
24141 index 737b0ad..09ec66e 100644
24142 --- a/arch/x86/kernel/cpu/mcheck/p5.c
24143 +++ b/arch/x86/kernel/cpu/mcheck/p5.c
24144 @@ -12,6 +12,7 @@
24145 #include <asm/tlbflush.h>
24146 #include <asm/mce.h>
24147 #include <asm/msr.h>
24148 +#include <asm/pgtable.h>
24149
24150 /* By default disabled */
24151 int mce_p5_enabled __read_mostly;
24152 @@ -55,7 +56,9 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c)
24153 if (!cpu_has(c, X86_FEATURE_MCE))
24154 return;
24155
24156 + pax_open_kernel();
24157 machine_check_vector = pentium_machine_check;
24158 + pax_close_kernel();
24159 /* Make sure the vector pointer is visible before we enable MCEs: */
24160 wmb();
24161
24162 diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c
24163 index 44f1382..315b292 100644
24164 --- a/arch/x86/kernel/cpu/mcheck/winchip.c
24165 +++ b/arch/x86/kernel/cpu/mcheck/winchip.c
24166 @@ -11,6 +11,7 @@
24167 #include <asm/tlbflush.h>
24168 #include <asm/mce.h>
24169 #include <asm/msr.h>
24170 +#include <asm/pgtable.h>
24171
24172 /* Machine check handler for WinChip C6: */
24173 static void winchip_machine_check(struct pt_regs *regs, long error_code)
24174 @@ -28,7 +29,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c)
24175 {
24176 u32 lo, hi;
24177
24178 + pax_open_kernel();
24179 machine_check_vector = winchip_machine_check;
24180 + pax_close_kernel();
24181 /* Make sure the vector pointer is visible before we enable MCEs: */
24182 wmb();
24183
24184 diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
24185 index 6236a54..532026d 100644
24186 --- a/arch/x86/kernel/cpu/microcode/core.c
24187 +++ b/arch/x86/kernel/cpu/microcode/core.c
24188 @@ -460,7 +460,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
24189 return NOTIFY_OK;
24190 }
24191
24192 -static struct notifier_block __refdata mc_cpu_notifier = {
24193 +static struct notifier_block mc_cpu_notifier = {
24194 .notifier_call = mc_cpu_callback,
24195 };
24196
24197 diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
24198 index 969dc17..a9c3fdd 100644
24199 --- a/arch/x86/kernel/cpu/microcode/intel.c
24200 +++ b/arch/x86/kernel/cpu/microcode/intel.c
24201 @@ -237,13 +237,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device,
24202
24203 static int get_ucode_user(void *to, const void *from, size_t n)
24204 {
24205 - return copy_from_user(to, from, n);
24206 + return copy_from_user(to, (const void __force_user *)from, n);
24207 }
24208
24209 static enum ucode_state
24210 request_microcode_user(int cpu, const void __user *buf, size_t size)
24211 {
24212 - return generic_load_microcode(cpu, (void *)buf, size, &get_ucode_user);
24213 + return generic_load_microcode(cpu, (__force_kernel void *)buf, size, &get_ucode_user);
24214 }
24215
24216 static void microcode_fini_cpu(int cpu)
24217 diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
24218 index e7ed0d8..57a2ab9 100644
24219 --- a/arch/x86/kernel/cpu/mtrr/main.c
24220 +++ b/arch/x86/kernel/cpu/mtrr/main.c
24221 @@ -72,7 +72,7 @@ static DEFINE_MUTEX(mtrr_mutex);
24222 u64 size_or_mask, size_and_mask;
24223 static bool mtrr_aps_delayed_init;
24224
24225 -static const struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM];
24226 +static const struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM] __read_only;
24227
24228 const struct mtrr_ops *mtrr_if;
24229
24230 diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.h b/arch/x86/kernel/cpu/mtrr/mtrr.h
24231 index 951884d..4796b75 100644
24232 --- a/arch/x86/kernel/cpu/mtrr/mtrr.h
24233 +++ b/arch/x86/kernel/cpu/mtrr/mtrr.h
24234 @@ -25,7 +25,7 @@ struct mtrr_ops {
24235 int (*validate_add_page)(unsigned long base, unsigned long size,
24236 unsigned int type);
24237 int (*have_wrcomb)(void);
24238 -};
24239 +} __do_const;
24240
24241 extern int generic_get_free_region(unsigned long base, unsigned long size,
24242 int replace_reg);
24243 diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
24244 index 9469dfa..2b026bc 100644
24245 --- a/arch/x86/kernel/cpu/perf_event.c
24246 +++ b/arch/x86/kernel/cpu/perf_event.c
24247 @@ -1518,7 +1518,7 @@ static void __init pmu_check_apic(void)
24248
24249 }
24250
24251 -static struct attribute_group x86_pmu_format_group = {
24252 +static attribute_group_no_const x86_pmu_format_group = {
24253 .name = "format",
24254 .attrs = NULL,
24255 };
24256 @@ -1617,7 +1617,7 @@ static struct attribute *events_attr[] = {
24257 NULL,
24258 };
24259
24260 -static struct attribute_group x86_pmu_events_group = {
24261 +static attribute_group_no_const x86_pmu_events_group = {
24262 .name = "events",
24263 .attrs = events_attr,
24264 };
24265 @@ -2176,7 +2176,7 @@ valid_user_frame(const void __user *fp, unsigned long size)
24266 static unsigned long get_segment_base(unsigned int segment)
24267 {
24268 struct desc_struct *desc;
24269 - int idx = segment >> 3;
24270 + unsigned int idx = segment >> 3;
24271
24272 if ((segment & SEGMENT_TI_MASK) == SEGMENT_LDT) {
24273 struct ldt_struct *ldt;
24274 @@ -2194,7 +2194,7 @@ static unsigned long get_segment_base(unsigned int segment)
24275 if (idx > GDT_ENTRIES)
24276 return 0;
24277
24278 - desc = raw_cpu_ptr(gdt_page.gdt) + idx;
24279 + desc = get_cpu_gdt_table(smp_processor_id()) + idx;
24280 }
24281
24282 return get_desc_base(desc);
24283 @@ -2284,7 +2284,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
24284 break;
24285
24286 perf_callchain_store(entry, frame.return_address);
24287 - fp = frame.next_frame;
24288 + fp = (const void __force_user *)frame.next_frame;
24289 }
24290 }
24291
24292 diff --git a/arch/x86/kernel/cpu/perf_event_amd_iommu.c b/arch/x86/kernel/cpu/perf_event_amd_iommu.c
24293 index 97242a9..cf9c30e 100644
24294 --- a/arch/x86/kernel/cpu/perf_event_amd_iommu.c
24295 +++ b/arch/x86/kernel/cpu/perf_event_amd_iommu.c
24296 @@ -402,7 +402,7 @@ static void perf_iommu_del(struct perf_event *event, int flags)
24297 static __init int _init_events_attrs(struct perf_amd_iommu *perf_iommu)
24298 {
24299 struct attribute **attrs;
24300 - struct attribute_group *attr_group;
24301 + attribute_group_no_const *attr_group;
24302 int i = 0, j;
24303
24304 while (amd_iommu_v2_event_descs[i].attr.attr.name)
24305 diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
24306 index 6326ae2..f092747 100644
24307 --- a/arch/x86/kernel/cpu/perf_event_intel.c
24308 +++ b/arch/x86/kernel/cpu/perf_event_intel.c
24309 @@ -3016,10 +3016,10 @@ __init int intel_pmu_init(void)
24310 x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3);
24311
24312 if (boot_cpu_has(X86_FEATURE_PDCM)) {
24313 - u64 capabilities;
24314 + u64 capabilities = x86_pmu.intel_cap.capabilities;
24315
24316 - rdmsrl(MSR_IA32_PERF_CAPABILITIES, capabilities);
24317 - x86_pmu.intel_cap.capabilities = capabilities;
24318 + if (rdmsrl_safe(MSR_IA32_PERF_CAPABILITIES, &x86_pmu.intel_cap.capabilities))
24319 + x86_pmu.intel_cap.capabilities = capabilities;
24320 }
24321
24322 intel_ds_init();
24323 diff --git a/arch/x86/kernel/cpu/perf_event_intel_bts.c b/arch/x86/kernel/cpu/perf_event_intel_bts.c
24324 index 43dd672..78c0562 100644
24325 --- a/arch/x86/kernel/cpu/perf_event_intel_bts.c
24326 +++ b/arch/x86/kernel/cpu/perf_event_intel_bts.c
24327 @@ -252,7 +252,7 @@ static void bts_event_start(struct perf_event *event, int flags)
24328 __bts_event_start(event);
24329
24330 /* PMI handler: this counter is running and likely generating PMIs */
24331 - ACCESS_ONCE(bts->started) = 1;
24332 + ACCESS_ONCE_RW(bts->started) = 1;
24333 }
24334
24335 static void __bts_event_stop(struct perf_event *event)
24336 @@ -266,7 +266,7 @@ static void __bts_event_stop(struct perf_event *event)
24337 if (event->hw.state & PERF_HES_STOPPED)
24338 return;
24339
24340 - ACCESS_ONCE(event->hw.state) |= PERF_HES_STOPPED;
24341 + ACCESS_ONCE_RW(event->hw.state) |= PERF_HES_STOPPED;
24342 }
24343
24344 static void bts_event_stop(struct perf_event *event, int flags)
24345 @@ -274,7 +274,7 @@ static void bts_event_stop(struct perf_event *event, int flags)
24346 struct bts_ctx *bts = this_cpu_ptr(&bts_ctx);
24347
24348 /* PMI handler: don't restart this counter */
24349 - ACCESS_ONCE(bts->started) = 0;
24350 + ACCESS_ONCE_RW(bts->started) = 0;
24351
24352 __bts_event_stop(event);
24353
24354 diff --git a/arch/x86/kernel/cpu/perf_event_intel_cqm.c b/arch/x86/kernel/cpu/perf_event_intel_cqm.c
24355 index 377e8f8..2982f48 100644
24356 --- a/arch/x86/kernel/cpu/perf_event_intel_cqm.c
24357 +++ b/arch/x86/kernel/cpu/perf_event_intel_cqm.c
24358 @@ -1364,7 +1364,9 @@ static int __init intel_cqm_init(void)
24359 goto out;
24360 }
24361
24362 - event_attr_intel_cqm_llc_scale.event_str = str;
24363 + pax_open_kernel();
24364 + *(const char **)&event_attr_intel_cqm_llc_scale.event_str = str;
24365 + pax_close_kernel();
24366
24367 ret = intel_cqm_setup_rmid_cache();
24368 if (ret)
24369 diff --git a/arch/x86/kernel/cpu/perf_event_intel_pt.c b/arch/x86/kernel/cpu/perf_event_intel_pt.c
24370 index 183de71..bd34d52 100644
24371 --- a/arch/x86/kernel/cpu/perf_event_intel_pt.c
24372 +++ b/arch/x86/kernel/cpu/perf_event_intel_pt.c
24373 @@ -116,16 +116,12 @@ static const struct attribute_group *pt_attr_groups[] = {
24374
24375 static int __init pt_pmu_hw_init(void)
24376 {
24377 - struct dev_ext_attribute *de_attrs;
24378 - struct attribute **attrs;
24379 - size_t size;
24380 - int ret;
24381 + static struct dev_ext_attribute de_attrs[ARRAY_SIZE(pt_caps)];
24382 + static struct attribute *attrs[ARRAY_SIZE(pt_caps)];
24383 long i;
24384
24385 - attrs = NULL;
24386 - ret = -ENODEV;
24387 if (!test_cpu_cap(&boot_cpu_data, X86_FEATURE_INTEL_PT))
24388 - goto fail;
24389 + return -ENODEV;
24390
24391 for (i = 0; i < PT_CPUID_LEAVES; i++) {
24392 cpuid_count(20, i,
24393 @@ -135,39 +131,25 @@ static int __init pt_pmu_hw_init(void)
24394 &pt_pmu.caps[CR_EDX + i*4]);
24395 }
24396
24397 - ret = -ENOMEM;
24398 - size = sizeof(struct attribute *) * (ARRAY_SIZE(pt_caps)+1);
24399 - attrs = kzalloc(size, GFP_KERNEL);
24400 - if (!attrs)
24401 - goto fail;
24402 -
24403 - size = sizeof(struct dev_ext_attribute) * (ARRAY_SIZE(pt_caps)+1);
24404 - de_attrs = kzalloc(size, GFP_KERNEL);
24405 - if (!de_attrs)
24406 - goto fail;
24407 -
24408 + pax_open_kernel();
24409 for (i = 0; i < ARRAY_SIZE(pt_caps); i++) {
24410 - struct dev_ext_attribute *de_attr = de_attrs + i;
24411 + struct dev_ext_attribute *de_attr = &de_attrs[i];
24412
24413 - de_attr->attr.attr.name = pt_caps[i].name;
24414 + *(const char **)&de_attr->attr.attr.name = pt_caps[i].name;
24415
24416 sysfs_attr_init(&de_attr->attr.attr);
24417
24418 - de_attr->attr.attr.mode = S_IRUGO;
24419 - de_attr->attr.show = pt_cap_show;
24420 - de_attr->var = (void *)i;
24421 + *(umode_t *)&de_attr->attr.attr.mode = S_IRUGO;
24422 + *(void **)&de_attr->attr.show = pt_cap_show;
24423 + *(void **)&de_attr->var = (void *)i;
24424
24425 attrs[i] = &de_attr->attr.attr;
24426 }
24427
24428 - pt_cap_group.attrs = attrs;
24429 + *(struct attribute ***)&pt_cap_group.attrs = attrs;
24430 + pax_close_kernel();
24431
24432 return 0;
24433 -
24434 -fail:
24435 - kfree(attrs);
24436 -
24437 - return ret;
24438 }
24439
24440 #define PT_CONFIG_MASK (RTIT_CTL_TSC_EN | RTIT_CTL_DISRETC)
24441 @@ -929,7 +911,7 @@ static void pt_event_start(struct perf_event *event, int mode)
24442 return;
24443 }
24444
24445 - ACCESS_ONCE(pt->handle_nmi) = 1;
24446 + ACCESS_ONCE_RW(pt->handle_nmi) = 1;
24447 event->hw.state = 0;
24448
24449 pt_config_buffer(buf->cur->table, buf->cur_idx,
24450 @@ -946,7 +928,7 @@ static void pt_event_stop(struct perf_event *event, int mode)
24451 * Protect against the PMI racing with disabling wrmsr,
24452 * see comment in intel_pt_interrupt().
24453 */
24454 - ACCESS_ONCE(pt->handle_nmi) = 0;
24455 + ACCESS_ONCE_RW(pt->handle_nmi) = 0;
24456 pt_config_start(false);
24457
24458 if (event->hw.state == PERF_HES_STOPPED)
24459 diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
24460 index 5cbd4e6..ee9388a 100644
24461 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
24462 +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
24463 @@ -486,7 +486,7 @@ static struct attribute *rapl_events_hsw_attr[] = {
24464 NULL,
24465 };
24466
24467 -static struct attribute_group rapl_pmu_events_group = {
24468 +static attribute_group_no_const rapl_pmu_events_group __read_only = {
24469 .name = "events",
24470 .attrs = NULL, /* patched at runtime */
24471 };
24472 diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
24473 index 21b5e38..84f1f82 100644
24474 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
24475 +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
24476 @@ -731,7 +731,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
24477 static int __init uncore_type_init(struct intel_uncore_type *type)
24478 {
24479 struct intel_uncore_pmu *pmus;
24480 - struct attribute_group *attr_group;
24481 + attribute_group_no_const *attr_group;
24482 struct attribute **attrs;
24483 int i, j;
24484
24485 diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
24486 index 0f77f0a..d3c6b7d 100644
24487 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h
24488 +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
24489 @@ -115,7 +115,7 @@ struct intel_uncore_box {
24490 struct uncore_event_desc {
24491 struct kobj_attribute attr;
24492 const char *config;
24493 -};
24494 +} __do_const;
24495
24496 ssize_t uncore_event_show(struct kobject *kobj,
24497 struct kobj_attribute *attr, char *buf);
24498 diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
24499 index 83741a7..bd3507d 100644
24500 --- a/arch/x86/kernel/cpuid.c
24501 +++ b/arch/x86/kernel/cpuid.c
24502 @@ -170,7 +170,7 @@ static int cpuid_class_cpu_callback(struct notifier_block *nfb,
24503 return notifier_from_errno(err);
24504 }
24505
24506 -static struct notifier_block __refdata cpuid_class_cpu_notifier =
24507 +static struct notifier_block cpuid_class_cpu_notifier =
24508 {
24509 .notifier_call = cpuid_class_cpu_callback,
24510 };
24511 diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c
24512 index afa64ad..dce67dd 100644
24513 --- a/arch/x86/kernel/crash_dump_64.c
24514 +++ b/arch/x86/kernel/crash_dump_64.c
24515 @@ -36,7 +36,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
24516 return -ENOMEM;
24517
24518 if (userbuf) {
24519 - if (copy_to_user(buf, vaddr + offset, csize)) {
24520 + if (copy_to_user((char __force_user *)buf, vaddr + offset, csize)) {
24521 iounmap(vaddr);
24522 return -EFAULT;
24523 }
24524 diff --git a/arch/x86/kernel/doublefault.c b/arch/x86/kernel/doublefault.c
24525 index f6dfd93..892ade4 100644
24526 --- a/arch/x86/kernel/doublefault.c
24527 +++ b/arch/x86/kernel/doublefault.c
24528 @@ -12,7 +12,7 @@
24529
24530 #define DOUBLEFAULT_STACKSIZE (1024)
24531 static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
24532 -#define STACK_START (unsigned long)(doublefault_stack+DOUBLEFAULT_STACKSIZE)
24533 +#define STACK_START (unsigned long)(doublefault_stack+DOUBLEFAULT_STACKSIZE-2)
24534
24535 #define ptr_ok(x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + MAXMEM)
24536
24537 @@ -22,7 +22,7 @@ static void doublefault_fn(void)
24538 unsigned long gdt, tss;
24539
24540 native_store_gdt(&gdt_desc);
24541 - gdt = gdt_desc.address;
24542 + gdt = (unsigned long)gdt_desc.address;
24543
24544 printk(KERN_EMERG "PANIC: double fault, gdt at %08lx [%d bytes]\n", gdt, gdt_desc.size);
24545
24546 @@ -59,10 +59,10 @@ struct tss_struct doublefault_tss __cacheline_aligned = {
24547 /* 0x2 bit is always set */
24548 .flags = X86_EFLAGS_SF | 0x2,
24549 .sp = STACK_START,
24550 - .es = __USER_DS,
24551 + .es = __KERNEL_DS,
24552 .cs = __KERNEL_CS,
24553 .ss = __KERNEL_DS,
24554 - .ds = __USER_DS,
24555 + .ds = __KERNEL_DS,
24556 .fs = __KERNEL_PERCPU,
24557
24558 .__cr3 = __pa_nodebug(swapper_pg_dir),
24559 diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
24560 index 9c30acf..8cf2411 100644
24561 --- a/arch/x86/kernel/dumpstack.c
24562 +++ b/arch/x86/kernel/dumpstack.c
24563 @@ -2,6 +2,9 @@
24564 * Copyright (C) 1991, 1992 Linus Torvalds
24565 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
24566 */
24567 +#ifdef CONFIG_GRKERNSEC_HIDESYM
24568 +#define __INCLUDED_BY_HIDESYM 1
24569 +#endif
24570 #include <linux/kallsyms.h>
24571 #include <linux/kprobes.h>
24572 #include <linux/uaccess.h>
24573 @@ -35,23 +38,21 @@ static void printk_stack_address(unsigned long address, int reliable,
24574
24575 void printk_address(unsigned long address)
24576 {
24577 - pr_cont(" [<%p>] %pS\n", (void *)address, (void *)address);
24578 + pr_cont(" [<%p>] %pA\n", (void *)address, (void *)address);
24579 }
24580
24581 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
24582 static void
24583 print_ftrace_graph_addr(unsigned long addr, void *data,
24584 const struct stacktrace_ops *ops,
24585 - struct thread_info *tinfo, int *graph)
24586 + struct task_struct *task, int *graph)
24587 {
24588 - struct task_struct *task;
24589 unsigned long ret_addr;
24590 int index;
24591
24592 if (addr != (unsigned long)return_to_handler)
24593 return;
24594
24595 - task = tinfo->task;
24596 index = task->curr_ret_stack;
24597
24598 if (!task->ret_stack || index < *graph)
24599 @@ -68,7 +69,7 @@ print_ftrace_graph_addr(unsigned long addr, void *data,
24600 static inline void
24601 print_ftrace_graph_addr(unsigned long addr, void *data,
24602 const struct stacktrace_ops *ops,
24603 - struct thread_info *tinfo, int *graph)
24604 + struct task_struct *task, int *graph)
24605 { }
24606 #endif
24607
24608 @@ -79,10 +80,8 @@ print_ftrace_graph_addr(unsigned long addr, void *data,
24609 * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
24610 */
24611
24612 -static inline int valid_stack_ptr(struct thread_info *tinfo,
24613 - void *p, unsigned int size, void *end)
24614 +static inline int valid_stack_ptr(void *t, void *p, unsigned int size, void *end)
24615 {
24616 - void *t = tinfo;
24617 if (end) {
24618 if (p < end && p >= (end-THREAD_SIZE))
24619 return 1;
24620 @@ -93,14 +92,14 @@ static inline int valid_stack_ptr(struct thread_info *tinfo,
24621 }
24622
24623 unsigned long
24624 -print_context_stack(struct thread_info *tinfo,
24625 +print_context_stack(struct task_struct *task, void *stack_start,
24626 unsigned long *stack, unsigned long bp,
24627 const struct stacktrace_ops *ops, void *data,
24628 unsigned long *end, int *graph)
24629 {
24630 struct stack_frame *frame = (struct stack_frame *)bp;
24631
24632 - while (valid_stack_ptr(tinfo, stack, sizeof(*stack), end)) {
24633 + while (valid_stack_ptr(stack_start, stack, sizeof(*stack), end)) {
24634 unsigned long addr;
24635
24636 addr = *stack;
24637 @@ -112,7 +111,7 @@ print_context_stack(struct thread_info *tinfo,
24638 } else {
24639 ops->address(data, addr, 0);
24640 }
24641 - print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
24642 + print_ftrace_graph_addr(addr, data, ops, task, graph);
24643 }
24644 stack++;
24645 }
24646 @@ -121,7 +120,7 @@ print_context_stack(struct thread_info *tinfo,
24647 EXPORT_SYMBOL_GPL(print_context_stack);
24648
24649 unsigned long
24650 -print_context_stack_bp(struct thread_info *tinfo,
24651 +print_context_stack_bp(struct task_struct *task, void *stack_start,
24652 unsigned long *stack, unsigned long bp,
24653 const struct stacktrace_ops *ops, void *data,
24654 unsigned long *end, int *graph)
24655 @@ -129,7 +128,7 @@ print_context_stack_bp(struct thread_info *tinfo,
24656 struct stack_frame *frame = (struct stack_frame *)bp;
24657 unsigned long *ret_addr = &frame->return_address;
24658
24659 - while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) {
24660 + while (valid_stack_ptr(stack_start, ret_addr, sizeof(*ret_addr), end)) {
24661 unsigned long addr = *ret_addr;
24662
24663 if (!__kernel_text_address(addr))
24664 @@ -138,7 +137,7 @@ print_context_stack_bp(struct thread_info *tinfo,
24665 ops->address(data, addr, 1);
24666 frame = frame->next_frame;
24667 ret_addr = &frame->return_address;
24668 - print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
24669 + print_ftrace_graph_addr(addr, data, ops, task, graph);
24670 }
24671
24672 return (unsigned long)frame;
24673 @@ -226,6 +225,8 @@ unsigned long oops_begin(void)
24674 EXPORT_SYMBOL_GPL(oops_begin);
24675 NOKPROBE_SYMBOL(oops_begin);
24676
24677 +extern void gr_handle_kernel_exploit(void);
24678 +
24679 void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
24680 {
24681 if (regs && kexec_should_crash(current))
24682 @@ -247,7 +248,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
24683 panic("Fatal exception in interrupt");
24684 if (panic_on_oops)
24685 panic("Fatal exception");
24686 - do_exit(signr);
24687 +
24688 + gr_handle_kernel_exploit();
24689 +
24690 + do_group_exit(signr);
24691 }
24692 NOKPROBE_SYMBOL(oops_end);
24693
24694 diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
24695 index 464ffd6..01f2cda 100644
24696 --- a/arch/x86/kernel/dumpstack_32.c
24697 +++ b/arch/x86/kernel/dumpstack_32.c
24698 @@ -61,15 +61,14 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24699 bp = stack_frame(task, regs);
24700
24701 for (;;) {
24702 - struct thread_info *context;
24703 + void *stack_start = (void *)((unsigned long)stack & ~(THREAD_SIZE-1));
24704 void *end_stack;
24705
24706 end_stack = is_hardirq_stack(stack, cpu);
24707 if (!end_stack)
24708 end_stack = is_softirq_stack(stack, cpu);
24709
24710 - context = task_thread_info(task);
24711 - bp = ops->walk_stack(context, stack, bp, ops, data,
24712 + bp = ops->walk_stack(task, stack_start, stack, bp, ops, data,
24713 end_stack, &graph);
24714
24715 /* Stop if not on irq stack */
24716 @@ -137,16 +136,17 @@ void show_regs(struct pt_regs *regs)
24717 unsigned int code_len = code_bytes;
24718 unsigned char c;
24719 u8 *ip;
24720 + unsigned long cs_base = get_desc_base(&get_cpu_gdt_table(0)[(0xffff & regs->cs) >> 3]);
24721
24722 pr_emerg("Stack:\n");
24723 show_stack_log_lvl(NULL, regs, &regs->sp, 0, KERN_EMERG);
24724
24725 pr_emerg("Code:");
24726
24727 - ip = (u8 *)regs->ip - code_prologue;
24728 + ip = (u8 *)regs->ip - code_prologue + cs_base;
24729 if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {
24730 /* try starting at IP */
24731 - ip = (u8 *)regs->ip;
24732 + ip = (u8 *)regs->ip + cs_base;
24733 code_len = code_len - code_prologue + 1;
24734 }
24735 for (i = 0; i < code_len; i++, ip++) {
24736 @@ -155,7 +155,7 @@ void show_regs(struct pt_regs *regs)
24737 pr_cont(" Bad EIP value.");
24738 break;
24739 }
24740 - if (ip == (u8 *)regs->ip)
24741 + if (ip == (u8 *)regs->ip + cs_base)
24742 pr_cont(" <%02x>", c);
24743 else
24744 pr_cont(" %02x", c);
24745 @@ -168,6 +168,7 @@ int is_valid_bugaddr(unsigned long ip)
24746 {
24747 unsigned short ud2;
24748
24749 + ip = ktla_ktva(ip);
24750 if (ip < PAGE_OFFSET)
24751 return 0;
24752 if (probe_kernel_address((unsigned short *)ip, ud2))
24753 @@ -175,3 +176,15 @@ int is_valid_bugaddr(unsigned long ip)
24754
24755 return ud2 == 0x0b0f;
24756 }
24757 +
24758 +#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY)
24759 +void __used pax_check_alloca(unsigned long size)
24760 +{
24761 + unsigned long sp = (unsigned long)&sp, stack_left;
24762 +
24763 + /* all kernel stacks are of the same size */
24764 + stack_left = sp & (THREAD_SIZE - 1);
24765 + BUG_ON(stack_left < 256 || size >= stack_left - 256);
24766 +}
24767 +EXPORT_SYMBOL(pax_check_alloca);
24768 +#endif
24769 diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
24770 index 5f1c626..1cba97e 100644
24771 --- a/arch/x86/kernel/dumpstack_64.c
24772 +++ b/arch/x86/kernel/dumpstack_64.c
24773 @@ -153,12 +153,12 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24774 const struct stacktrace_ops *ops, void *data)
24775 {
24776 const unsigned cpu = get_cpu();
24777 - struct thread_info *tinfo;
24778 unsigned long *irq_stack = (unsigned long *)per_cpu(irq_stack_ptr, cpu);
24779 unsigned long dummy;
24780 unsigned used = 0;
24781 int graph = 0;
24782 int done = 0;
24783 + void *stack_start;
24784
24785 if (!task)
24786 task = current;
24787 @@ -179,7 +179,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24788 * current stack address. If the stacks consist of nested
24789 * exceptions
24790 */
24791 - tinfo = task_thread_info(task);
24792 while (!done) {
24793 unsigned long *stack_end;
24794 enum stack_type stype;
24795 @@ -202,7 +201,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24796 if (ops->stack(data, id) < 0)
24797 break;
24798
24799 - bp = ops->walk_stack(tinfo, stack, bp, ops,
24800 + bp = ops->walk_stack(task, stack_end - EXCEPTION_STKSZ, stack, bp, ops,
24801 data, stack_end, &graph);
24802 ops->stack(data, "<EOE>");
24803 /*
24804 @@ -210,6 +209,8 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24805 * second-to-last pointer (index -2 to end) in the
24806 * exception stack:
24807 */
24808 + if ((u16)stack_end[-1] != __KERNEL_DS)
24809 + goto out;
24810 stack = (unsigned long *) stack_end[-2];
24811 done = 0;
24812 break;
24813 @@ -218,7 +219,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24814
24815 if (ops->stack(data, "IRQ") < 0)
24816 break;
24817 - bp = ops->walk_stack(tinfo, stack, bp,
24818 + bp = ops->walk_stack(task, irq_stack, stack, bp,
24819 ops, data, stack_end, &graph);
24820 /*
24821 * We link to the next stack (which would be
24822 @@ -240,7 +241,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
24823 /*
24824 * This handles the process stack:
24825 */
24826 - bp = ops->walk_stack(tinfo, stack, bp, ops, data, NULL, &graph);
24827 + stack_start = (void *)((unsigned long)stack & ~(THREAD_SIZE-1));
24828 + bp = ops->walk_stack(task, stack_start, stack, bp, ops, data, NULL, &graph);
24829 +out:
24830 put_cpu();
24831 }
24832 EXPORT_SYMBOL(dump_trace);
24833 @@ -347,8 +350,55 @@ int is_valid_bugaddr(unsigned long ip)
24834 {
24835 unsigned short ud2;
24836
24837 - if (__copy_from_user(&ud2, (const void __user *) ip, sizeof(ud2)))
24838 + if (probe_kernel_address((unsigned short *)ip, ud2))
24839 return 0;
24840
24841 return ud2 == 0x0b0f;
24842 }
24843 +
24844 +#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY)
24845 +void __used pax_check_alloca(unsigned long size)
24846 +{
24847 + unsigned long sp = (unsigned long)&sp, stack_start, stack_end;
24848 + unsigned cpu, used;
24849 + char *id;
24850 +
24851 + /* check the process stack first */
24852 + stack_start = (unsigned long)task_stack_page(current);
24853 + stack_end = stack_start + THREAD_SIZE;
24854 + if (likely(stack_start <= sp && sp < stack_end)) {
24855 + unsigned long stack_left = sp & (THREAD_SIZE - 1);
24856 + BUG_ON(stack_left < 256 || size >= stack_left - 256);
24857 + return;
24858 + }
24859 +
24860 + cpu = get_cpu();
24861 +
24862 + /* check the irq stacks */
24863 + stack_end = (unsigned long)per_cpu(irq_stack_ptr, cpu);
24864 + stack_start = stack_end - IRQ_STACK_SIZE;
24865 + if (stack_start <= sp && sp < stack_end) {
24866 + unsigned long stack_left = sp & (IRQ_STACK_SIZE - 1);
24867 + put_cpu();
24868 + BUG_ON(stack_left < 256 || size >= stack_left - 256);
24869 + return;
24870 + }
24871 +
24872 + /* check the exception stacks */
24873 + used = 0;
24874 + stack_end = (unsigned long)in_exception_stack(cpu, sp, &used, &id);
24875 + stack_start = stack_end - EXCEPTION_STKSZ;
24876 + if (stack_end && stack_start <= sp && sp < stack_end) {
24877 + unsigned long stack_left = sp & (EXCEPTION_STKSZ - 1);
24878 + put_cpu();
24879 + BUG_ON(stack_left < 256 || size >= stack_left - 256);
24880 + return;
24881 + }
24882 +
24883 + put_cpu();
24884 +
24885 + /* unknown stack */
24886 + BUG();
24887 +}
24888 +EXPORT_SYMBOL(pax_check_alloca);
24889 +#endif
24890 diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
24891 index a102564..d1f0b73 100644
24892 --- a/arch/x86/kernel/e820.c
24893 +++ b/arch/x86/kernel/e820.c
24894 @@ -803,8 +803,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
24895
24896 static void early_panic(char *msg)
24897 {
24898 - early_printk(msg);
24899 - panic(msg);
24900 + early_printk("%s", msg);
24901 + panic("%s", msg);
24902 }
24903
24904 static int userdef __initdata;
24905 diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
24906 index eec40f5..4fee808 100644
24907 --- a/arch/x86/kernel/early_printk.c
24908 +++ b/arch/x86/kernel/early_printk.c
24909 @@ -7,6 +7,7 @@
24910 #include <linux/pci_regs.h>
24911 #include <linux/pci_ids.h>
24912 #include <linux/errno.h>
24913 +#include <linux/sched.h>
24914 #include <asm/io.h>
24915 #include <asm/processor.h>
24916 #include <asm/fcntl.h>
24917 diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c
24918 index ce95676..af5c012 100644
24919 --- a/arch/x86/kernel/espfix_64.c
24920 +++ b/arch/x86/kernel/espfix_64.c
24921 @@ -41,6 +41,7 @@
24922 #include <asm/pgalloc.h>
24923 #include <asm/setup.h>
24924 #include <asm/espfix.h>
24925 +#include <asm/bug.h>
24926
24927 /*
24928 * Note: we only need 6*8 = 48 bytes for the espfix stack, but round
24929 @@ -70,8 +71,10 @@ static DEFINE_MUTEX(espfix_init_mutex);
24930 #define ESPFIX_MAX_PAGES DIV_ROUND_UP(CONFIG_NR_CPUS, ESPFIX_STACKS_PER_PAGE)
24931 static void *espfix_pages[ESPFIX_MAX_PAGES];
24932
24933 -static __page_aligned_bss pud_t espfix_pud_page[PTRS_PER_PUD]
24934 - __aligned(PAGE_SIZE);
24935 +static __page_aligned_rodata pud_t espfix_pud_page[PTRS_PER_PUD];
24936 +static __page_aligned_rodata pmd_t espfix_pmd_page[PTRS_PER_PMD];
24937 +static __page_aligned_rodata pte_t espfix_pte_page[PTRS_PER_PTE];
24938 +static __page_aligned_rodata char espfix_stack_page[ESPFIX_MAX_PAGES][PAGE_SIZE];
24939
24940 static unsigned int page_random, slot_random;
24941
24942 @@ -122,10 +125,19 @@ static void init_espfix_random(void)
24943 void __init init_espfix_bsp(void)
24944 {
24945 pgd_t *pgd_p;
24946 + pud_t *pud_p;
24947 + unsigned long index = pgd_index(ESPFIX_BASE_ADDR);
24948
24949 /* Install the espfix pud into the kernel page directory */
24950 - pgd_p = &init_level4_pgt[pgd_index(ESPFIX_BASE_ADDR)];
24951 - pgd_populate(&init_mm, pgd_p, (pud_t *)espfix_pud_page);
24952 + pgd_p = &init_level4_pgt[index];
24953 + pud_p = espfix_pud_page;
24954 + paravirt_alloc_pud(&init_mm, __pa(pud_p) >> PAGE_SHIFT);
24955 + set_pgd(pgd_p, __pgd(PGTABLE_PROT | __pa(pud_p)));
24956 +
24957 +#ifdef CONFIG_PAX_PER_CPU_PGD
24958 + clone_pgd_range(get_cpu_pgd(0, kernel) + index, swapper_pg_dir + index, 1);
24959 + clone_pgd_range(get_cpu_pgd(0, user) + index, swapper_pg_dir + index, 1);
24960 +#endif
24961
24962 /* Randomize the locations */
24963 init_espfix_random();
24964 @@ -170,35 +182,39 @@ void init_espfix_ap(int cpu)
24965 pud_p = &espfix_pud_page[pud_index(addr)];
24966 pud = *pud_p;
24967 if (!pud_present(pud)) {
24968 - struct page *page = alloc_pages_node(node, PGALLOC_GFP, 0);
24969 -
24970 - pmd_p = (pmd_t *)page_address(page);
24971 + if (cpu)
24972 + pmd_p = page_address(alloc_pages_node(node, PGALLOC_GFP, 0));
24973 + else
24974 + pmd_p = espfix_pmd_page;
24975 pud = __pud(__pa(pmd_p) | (PGTABLE_PROT & ptemask));
24976 paravirt_alloc_pmd(&init_mm, __pa(pmd_p) >> PAGE_SHIFT);
24977 for (n = 0; n < ESPFIX_PUD_CLONES; n++)
24978 set_pud(&pud_p[n], pud);
24979 - }
24980 + } else
24981 + BUG_ON(!cpu);
24982
24983 pmd_p = pmd_offset(&pud, addr);
24984 pmd = *pmd_p;
24985 if (!pmd_present(pmd)) {
24986 - struct page *page = alloc_pages_node(node, PGALLOC_GFP, 0);
24987 -
24988 - pte_p = (pte_t *)page_address(page);
24989 + if (cpu)
24990 + pte_p = page_address(alloc_pages_node(node, PGALLOC_GFP, 0));
24991 + else
24992 + pte_p = espfix_pte_page;
24993 pmd = __pmd(__pa(pte_p) | (PGTABLE_PROT & ptemask));
24994 paravirt_alloc_pte(&init_mm, __pa(pte_p) >> PAGE_SHIFT);
24995 for (n = 0; n < ESPFIX_PMD_CLONES; n++)
24996 set_pmd(&pmd_p[n], pmd);
24997 - }
24998 + } else
24999 + BUG_ON(!cpu);
25000
25001 pte_p = pte_offset_kernel(&pmd, addr);
25002 - stack_page = page_address(alloc_pages_node(node, GFP_KERNEL, 0));
25003 + stack_page = espfix_stack_page[page];
25004 pte = __pte(__pa(stack_page) | (__PAGE_KERNEL_RO & ptemask));
25005 for (n = 0; n < ESPFIX_PTE_CLONES; n++)
25006 set_pte(&pte_p[n*PTE_STRIDE], pte);
25007
25008 /* Job is done for this CPU and any CPU which shares this page */
25009 - ACCESS_ONCE(espfix_pages[page]) = stack_page;
25010 + ACCESS_ONCE_RW(espfix_pages[page]) = stack_page;
25011
25012 unlock_done:
25013 mutex_unlock(&espfix_init_mutex);
25014 diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
25015 index d25097c..84b0d51 100644
25016 --- a/arch/x86/kernel/fpu/core.c
25017 +++ b/arch/x86/kernel/fpu/core.c
25018 @@ -127,7 +127,7 @@ void __kernel_fpu_end(void)
25019 struct fpu *fpu = &current->thread.fpu;
25020
25021 if (fpu->fpregs_active)
25022 - copy_kernel_to_fpregs(&fpu->state);
25023 + copy_kernel_to_fpregs(fpu->state);
25024 else
25025 __fpregs_deactivate_hw();
25026
25027 @@ -238,7 +238,7 @@ static void fpu_copy(struct fpu *dst_fpu, struct fpu *src_fpu)
25028 * leak into the child task:
25029 */
25030 if (use_eager_fpu())
25031 - memset(&dst_fpu->state.xsave, 0, xstate_size);
25032 + memset(&dst_fpu->state->xsave, 0, xstate_size);
25033
25034 /*
25035 * Save current FPU registers directly into the child
25036 @@ -285,7 +285,7 @@ void fpu__activate_curr(struct fpu *fpu)
25037 WARN_ON_FPU(fpu != &current->thread.fpu);
25038
25039 if (!fpu->fpstate_active) {
25040 - fpstate_init(&fpu->state);
25041 + fpstate_init(fpu->state);
25042
25043 /* Safe to do for the current task: */
25044 fpu->fpstate_active = 1;
25045 @@ -311,7 +311,7 @@ void fpu__activate_fpstate_read(struct fpu *fpu)
25046 fpu__save(fpu);
25047 } else {
25048 if (!fpu->fpstate_active) {
25049 - fpstate_init(&fpu->state);
25050 + fpstate_init(fpu->state);
25051
25052 /* Safe to do for current and for stopped child tasks: */
25053 fpu->fpstate_active = 1;
25054 @@ -344,7 +344,7 @@ void fpu__activate_fpstate_write(struct fpu *fpu)
25055 /* Invalidate any lazy state: */
25056 fpu->last_cpu = -1;
25057 } else {
25058 - fpstate_init(&fpu->state);
25059 + fpstate_init(fpu->state);
25060
25061 /* Safe to do for stopped child tasks: */
25062 fpu->fpstate_active = 1;
25063 @@ -368,7 +368,7 @@ void fpu__restore(struct fpu *fpu)
25064 /* Avoid __kernel_fpu_begin() right after fpregs_activate() */
25065 kernel_fpu_disable();
25066 fpregs_activate(fpu);
25067 - copy_kernel_to_fpregs(&fpu->state);
25068 + copy_kernel_to_fpregs(fpu->state);
25069 fpu->counter++;
25070 kernel_fpu_enable();
25071 }
25072 @@ -442,25 +442,25 @@ void fpu__clear(struct fpu *fpu)
25073 static inline unsigned short get_fpu_cwd(struct fpu *fpu)
25074 {
25075 if (cpu_has_fxsr) {
25076 - return fpu->state.fxsave.cwd;
25077 + return fpu->state->fxsave.cwd;
25078 } else {
25079 - return (unsigned short)fpu->state.fsave.cwd;
25080 + return (unsigned short)fpu->state->fsave.cwd;
25081 }
25082 }
25083
25084 static inline unsigned short get_fpu_swd(struct fpu *fpu)
25085 {
25086 if (cpu_has_fxsr) {
25087 - return fpu->state.fxsave.swd;
25088 + return fpu->state->fxsave.swd;
25089 } else {
25090 - return (unsigned short)fpu->state.fsave.swd;
25091 + return (unsigned short)fpu->state->fsave.swd;
25092 }
25093 }
25094
25095 static inline unsigned short get_fpu_mxcsr(struct fpu *fpu)
25096 {
25097 if (cpu_has_xmm) {
25098 - return fpu->state.fxsave.mxcsr;
25099 + return fpu->state->fxsave.mxcsr;
25100 } else {
25101 return MXCSR_DEFAULT;
25102 }
25103 diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c
25104 index d14e9ac..8ca141b 100644
25105 --- a/arch/x86/kernel/fpu/init.c
25106 +++ b/arch/x86/kernel/fpu/init.c
25107 @@ -42,7 +42,7 @@ static void fpu__init_cpu_generic(void)
25108 /* Flush out any pending x87 state: */
25109 #ifdef CONFIG_MATH_EMULATION
25110 if (!cpu_has_fpu)
25111 - fpstate_init_soft(&current->thread.fpu.state.soft);
25112 + fpstate_init_soft(&current->thread.fpu.state->soft);
25113 else
25114 #endif
25115 asm volatile ("fninit");
25116 @@ -147,12 +147,14 @@ EXPORT_SYMBOL_GPL(xstate_size);
25117 #define CHECK_MEMBER_AT_END_OF(TYPE, MEMBER) \
25118 BUILD_BUG_ON(sizeof(TYPE) != offsetofend(TYPE, MEMBER))
25119
25120 +union fpregs_state init_fpregs_state;
25121 +
25122 /*
25123 * We append the 'struct fpu' to the task_struct:
25124 */
25125 static void __init fpu__init_task_struct_size(void)
25126 {
25127 - int task_size = sizeof(struct task_struct);
25128 + size_t task_size = sizeof(struct task_struct);
25129
25130 /*
25131 * Subtract off the static size of the register state.
25132 @@ -168,16 +170,12 @@ static void __init fpu__init_task_struct_size(void)
25133
25134 /*
25135 * We dynamically size 'struct fpu', so we require that
25136 - * it be at the end of 'thread_struct' and that
25137 - * 'thread_struct' be at the end of 'task_struct'. If
25138 + * it be at the end of 'thread_struct'. If
25139 * you hit a compile error here, check the structure to
25140 * see if something got added to the end.
25141 */
25142 CHECK_MEMBER_AT_END_OF(struct fpu, state);
25143 CHECK_MEMBER_AT_END_OF(struct thread_struct, fpu);
25144 - CHECK_MEMBER_AT_END_OF(struct task_struct, thread);
25145 -
25146 - arch_task_struct_size = task_size;
25147 }
25148
25149 /*
25150 diff --git a/arch/x86/kernel/fpu/regset.c b/arch/x86/kernel/fpu/regset.c
25151 index dc60810..6c8a1fa 100644
25152 --- a/arch/x86/kernel/fpu/regset.c
25153 +++ b/arch/x86/kernel/fpu/regset.c
25154 @@ -37,7 +37,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
25155 fpstate_sanitize_xstate(fpu);
25156
25157 return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
25158 - &fpu->state.fxsave, 0, -1);
25159 + &fpu->state->fxsave, 0, -1);
25160 }
25161
25162 int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
25163 @@ -54,19 +54,19 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
25164 fpstate_sanitize_xstate(fpu);
25165
25166 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
25167 - &fpu->state.fxsave, 0, -1);
25168 + &fpu->state->fxsave, 0, -1);
25169
25170 /*
25171 * mxcsr reserved bits must be masked to zero for security reasons.
25172 */
25173 - fpu->state.fxsave.mxcsr &= mxcsr_feature_mask;
25174 + fpu->state->fxsave.mxcsr &= mxcsr_feature_mask;
25175
25176 /*
25177 * update the header bits in the xsave header, indicating the
25178 * presence of FP and SSE state.
25179 */
25180 if (cpu_has_xsave)
25181 - fpu->state.xsave.header.xfeatures |= XSTATE_FPSSE;
25182 + fpu->state->xsave.header.xfeatures |= XSTATE_FPSSE;
25183
25184 return ret;
25185 }
25186 @@ -84,7 +84,7 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
25187
25188 fpu__activate_fpstate_read(fpu);
25189
25190 - xsave = &fpu->state.xsave;
25191 + xsave = &fpu->state->xsave;
25192
25193 /*
25194 * Copy the 48bytes defined by the software first into the xstate
25195 @@ -113,7 +113,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
25196
25197 fpu__activate_fpstate_write(fpu);
25198
25199 - xsave = &fpu->state.xsave;
25200 + xsave = &fpu->state->xsave;
25201
25202 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, xsave, 0, -1);
25203 /*
25204 @@ -204,7 +204,7 @@ static inline u32 twd_fxsr_to_i387(struct fxregs_state *fxsave)
25205 void
25206 convert_from_fxsr(struct user_i387_ia32_struct *env, struct task_struct *tsk)
25207 {
25208 - struct fxregs_state *fxsave = &tsk->thread.fpu.state.fxsave;
25209 + struct fxregs_state *fxsave = &tsk->thread.fpu.state->fxsave;
25210 struct _fpreg *to = (struct _fpreg *) &env->st_space[0];
25211 struct _fpxreg *from = (struct _fpxreg *) &fxsave->st_space[0];
25212 int i;
25213 @@ -242,7 +242,7 @@ void convert_to_fxsr(struct task_struct *tsk,
25214 const struct user_i387_ia32_struct *env)
25215
25216 {
25217 - struct fxregs_state *fxsave = &tsk->thread.fpu.state.fxsave;
25218 + struct fxregs_state *fxsave = &tsk->thread.fpu.state->fxsave;
25219 struct _fpreg *from = (struct _fpreg *) &env->st_space[0];
25220 struct _fpxreg *to = (struct _fpxreg *) &fxsave->st_space[0];
25221 int i;
25222 @@ -280,7 +280,7 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset,
25223
25224 if (!cpu_has_fxsr)
25225 return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
25226 - &fpu->state.fsave, 0,
25227 + &fpu->state->fsave, 0,
25228 -1);
25229
25230 fpstate_sanitize_xstate(fpu);
25231 @@ -311,7 +311,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
25232
25233 if (!cpu_has_fxsr)
25234 return user_regset_copyin(&pos, &count, &kbuf, &ubuf,
25235 - &fpu->state.fsave, 0,
25236 + &fpu->state->fsave, 0,
25237 -1);
25238
25239 if (pos > 0 || count < sizeof(env))
25240 @@ -326,7 +326,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
25241 * presence of FP.
25242 */
25243 if (cpu_has_xsave)
25244 - fpu->state.xsave.header.xfeatures |= XSTATE_FP;
25245 + fpu->state->xsave.header.xfeatures |= XSTATE_FP;
25246 return ret;
25247 }
25248
25249 diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c
25250 index 50ec9af..bb871ca 100644
25251 --- a/arch/x86/kernel/fpu/signal.c
25252 +++ b/arch/x86/kernel/fpu/signal.c
25253 @@ -54,7 +54,7 @@ static inline int check_for_xstate(struct fxregs_state __user *buf,
25254 static inline int save_fsave_header(struct task_struct *tsk, void __user *buf)
25255 {
25256 if (use_fxsr()) {
25257 - struct xregs_state *xsave = &tsk->thread.fpu.state.xsave;
25258 + struct xregs_state *xsave = &tsk->thread.fpu.state->xsave;
25259 struct user_i387_ia32_struct env;
25260 struct _fpstate_ia32 __user *fp = buf;
25261
25262 @@ -83,18 +83,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
25263
25264 /* Setup the bytes not touched by the [f]xsave and reserved for SW. */
25265 sw_bytes = ia32_frame ? &fx_sw_reserved_ia32 : &fx_sw_reserved;
25266 - err = __copy_to_user(&x->i387.sw_reserved, sw_bytes, sizeof(*sw_bytes));
25267 + err = __copy_to_user(x->i387.sw_reserved, sw_bytes, sizeof(*sw_bytes));
25268
25269 if (!use_xsave())
25270 return err;
25271
25272 - err |= __put_user(FP_XSTATE_MAGIC2, (__u32 *)(buf + xstate_size));
25273 + err |= __put_user(FP_XSTATE_MAGIC2, (__u32 __user *)(buf + xstate_size));
25274
25275 /*
25276 * Read the xfeatures which we copied (directly from the cpu or
25277 * from the state in task struct) to the user buffers.
25278 */
25279 - err |= __get_user(xfeatures, (__u32 *)&x->header.xfeatures);
25280 + err |= __get_user(xfeatures, (__u32 __user *)&x->header.xfeatures);
25281
25282 /*
25283 * For legacy compatible, we always set FP/SSE bits in the bit
25284 @@ -109,7 +109,7 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
25285 */
25286 xfeatures |= XSTATE_FPSSE;
25287
25288 - err |= __put_user(xfeatures, (__u32 *)&x->header.xfeatures);
25289 + err |= __put_user(xfeatures, (__u32 __user *)&x->header.xfeatures);
25290
25291 return err;
25292 }
25293 @@ -118,6 +118,7 @@ static inline int copy_fpregs_to_sigframe(struct xregs_state __user *buf)
25294 {
25295 int err;
25296
25297 + buf = (struct xregs_state __user *)____m(buf);
25298 if (use_xsave())
25299 err = copy_xregs_to_user(buf);
25300 else if (use_fxsr())
25301 @@ -152,7 +153,7 @@ static inline int copy_fpregs_to_sigframe(struct xregs_state __user *buf)
25302 */
25303 int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size)
25304 {
25305 - struct xregs_state *xsave = &current->thread.fpu.state.xsave;
25306 + struct xregs_state *xsave = &current->thread.fpu.state->xsave;
25307 struct task_struct *tsk = current;
25308 int ia32_fxstate = (buf != buf_fx);
25309
25310 @@ -195,7 +196,7 @@ sanitize_restored_xstate(struct task_struct *tsk,
25311 struct user_i387_ia32_struct *ia32_env,
25312 u64 xfeatures, int fx_only)
25313 {
25314 - struct xregs_state *xsave = &tsk->thread.fpu.state.xsave;
25315 + struct xregs_state *xsave = &tsk->thread.fpu.state->xsave;
25316 struct xstate_header *header = &xsave->header;
25317
25318 if (use_xsave()) {
25319 @@ -228,6 +229,7 @@ sanitize_restored_xstate(struct task_struct *tsk,
25320 */
25321 static inline int copy_user_to_fpregs_zeroing(void __user *buf, u64 xbv, int fx_only)
25322 {
25323 + buf = (void __user *)____m(buf);
25324 if (use_xsave()) {
25325 if ((unsigned long)buf % 64 || fx_only) {
25326 u64 init_bv = xfeatures_mask & ~XSTATE_FPSSE;
25327 @@ -308,9 +310,9 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)
25328 */
25329 fpu__drop(fpu);
25330
25331 - if (__copy_from_user(&fpu->state.xsave, buf_fx, state_size) ||
25332 + if (__copy_from_user(&fpu->state->xsave, buf_fx, state_size) ||
25333 __copy_from_user(&env, buf, sizeof(env))) {
25334 - fpstate_init(&fpu->state);
25335 + fpstate_init(fpu->state);
25336 err = -1;
25337 } else {
25338 sanitize_restored_xstate(tsk, &env, xfeatures, fx_only);
25339 diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c
25340 index 62fc001..5ce38be 100644
25341 --- a/arch/x86/kernel/fpu/xstate.c
25342 +++ b/arch/x86/kernel/fpu/xstate.c
25343 @@ -93,14 +93,14 @@ EXPORT_SYMBOL_GPL(cpu_has_xfeatures);
25344 */
25345 void fpstate_sanitize_xstate(struct fpu *fpu)
25346 {
25347 - struct fxregs_state *fx = &fpu->state.fxsave;
25348 + struct fxregs_state *fx = &fpu->state->fxsave;
25349 int feature_bit;
25350 u64 xfeatures;
25351
25352 if (!use_xsaveopt())
25353 return;
25354
25355 - xfeatures = fpu->state.xsave.header.xfeatures;
25356 + xfeatures = fpu->state->xsave.header.xfeatures;
25357
25358 /*
25359 * None of the feature bits are in init state. So nothing else
25360 @@ -402,7 +402,7 @@ void *get_xsave_addr(struct xregs_state *xsave, int xstate_feature)
25361 if (!boot_cpu_has(X86_FEATURE_XSAVE))
25362 return NULL;
25363
25364 - xsave = &current->thread.fpu.state.xsave;
25365 + xsave = &current->thread.fpu.state->xsave;
25366 /*
25367 * We should not ever be requesting features that we
25368 * have not enabled. Remember that pcntxt_mask is
25369 @@ -457,5 +457,5 @@ const void *get_xsave_field_ptr(int xsave_state)
25370 */
25371 fpu__save(fpu);
25372
25373 - return get_xsave_addr(&fpu->state.xsave, xsave_state);
25374 + return get_xsave_addr(&fpu->state->xsave, xsave_state);
25375 }
25376 diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
25377 index 8b7b0a5..02219db 100644
25378 --- a/arch/x86/kernel/ftrace.c
25379 +++ b/arch/x86/kernel/ftrace.c
25380 @@ -89,7 +89,7 @@ static unsigned long text_ip_addr(unsigned long ip)
25381 * kernel identity mapping to modify code.
25382 */
25383 if (within(ip, (unsigned long)_text, (unsigned long)_etext))
25384 - ip = (unsigned long)__va(__pa_symbol(ip));
25385 + ip = (unsigned long)__va(__pa_symbol(ktla_ktva(ip)));
25386
25387 return ip;
25388 }
25389 @@ -105,6 +105,8 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
25390 {
25391 unsigned char replaced[MCOUNT_INSN_SIZE];
25392
25393 + ip = ktla_ktva(ip);
25394 +
25395 /*
25396 * Note: Due to modules and __init, code can
25397 * disappear and change, we need to protect against faulting
25398 @@ -230,7 +232,7 @@ static int update_ftrace_func(unsigned long ip, void *new)
25399 unsigned char old[MCOUNT_INSN_SIZE];
25400 int ret;
25401
25402 - memcpy(old, (void *)ip, MCOUNT_INSN_SIZE);
25403 + memcpy(old, (void *)ktla_ktva(ip), MCOUNT_INSN_SIZE);
25404
25405 ftrace_update_func = ip;
25406 /* Make sure the breakpoints see the ftrace_update_func update */
25407 @@ -311,7 +313,7 @@ static int add_break(unsigned long ip, const char *old)
25408 unsigned char replaced[MCOUNT_INSN_SIZE];
25409 unsigned char brk = BREAKPOINT_INSTRUCTION;
25410
25411 - if (probe_kernel_read(replaced, (void *)ip, MCOUNT_INSN_SIZE))
25412 + if (probe_kernel_read(replaced, (void *)ktla_ktva(ip), MCOUNT_INSN_SIZE))
25413 return -EFAULT;
25414
25415 /* Make sure it is what we expect it to be */
25416 @@ -670,11 +672,11 @@ static unsigned char *ftrace_jmp_replace(unsigned long ip, unsigned long addr)
25417 /* Module allocation simplifies allocating memory for code */
25418 static inline void *alloc_tramp(unsigned long size)
25419 {
25420 - return module_alloc(size);
25421 + return module_alloc_exec(size);
25422 }
25423 static inline void tramp_free(void *tramp)
25424 {
25425 - module_memfree(tramp);
25426 + module_memfree_exec(tramp);
25427 }
25428 #else
25429 /* Trampolines can only be created if modules are supported */
25430 @@ -753,7 +755,9 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
25431 *tramp_size = size + MCOUNT_INSN_SIZE + sizeof(void *);
25432
25433 /* Copy ftrace_caller onto the trampoline memory */
25434 + pax_open_kernel();
25435 ret = probe_kernel_read(trampoline, (void *)start_offset, size);
25436 + pax_close_kernel();
25437 if (WARN_ON(ret < 0)) {
25438 tramp_free(trampoline);
25439 return 0;
25440 @@ -763,6 +767,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
25441
25442 /* The trampoline ends with a jmp to ftrace_return */
25443 jmp = ftrace_jmp_replace(ip, (unsigned long)ftrace_return);
25444 + pax_open_kernel();
25445 memcpy(trampoline + size, jmp, MCOUNT_INSN_SIZE);
25446
25447 /*
25448 @@ -775,6 +780,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
25449
25450 ptr = (unsigned long *)(trampoline + size + MCOUNT_INSN_SIZE);
25451 *ptr = (unsigned long)ops;
25452 + pax_close_kernel();
25453
25454 op_offset -= start_offset;
25455 memcpy(&op_ptr, trampoline + op_offset, OP_REF_SIZE);
25456 @@ -792,7 +798,9 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
25457 op_ptr.offset = offset;
25458
25459 /* put in the new offset to the ftrace_ops */
25460 + pax_open_kernel();
25461 memcpy(trampoline + op_offset, &op_ptr, OP_REF_SIZE);
25462 + pax_close_kernel();
25463
25464 /* ALLOC_TRAMP flags lets us know we created it */
25465 ops->flags |= FTRACE_OPS_FL_ALLOC_TRAMP;
25466 diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
25467 index f129a9a..af8f6da 100644
25468 --- a/arch/x86/kernel/head64.c
25469 +++ b/arch/x86/kernel/head64.c
25470 @@ -68,12 +68,12 @@ again:
25471 pgd = *pgd_p;
25472
25473 /*
25474 - * The use of __START_KERNEL_map rather than __PAGE_OFFSET here is
25475 - * critical -- __PAGE_OFFSET would point us back into the dynamic
25476 + * The use of __early_va rather than __va here is critical:
25477 + * __va would point us back into the dynamic
25478 * range and we might end up looping forever...
25479 */
25480 if (pgd)
25481 - pud_p = (pudval_t *)((pgd & PTE_PFN_MASK) + __START_KERNEL_map - phys_base);
25482 + pud_p = (pudval_t *)(__early_va(pgd & PTE_PFN_MASK));
25483 else {
25484 if (next_early_pgt >= EARLY_DYNAMIC_PAGE_TABLES) {
25485 reset_early_page_tables();
25486 @@ -83,13 +83,13 @@ again:
25487 pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++];
25488 for (i = 0; i < PTRS_PER_PUD; i++)
25489 pud_p[i] = 0;
25490 - *pgd_p = (pgdval_t)pud_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
25491 + *pgd_p = (pgdval_t)__pa(pud_p) + _KERNPG_TABLE;
25492 }
25493 pud_p += pud_index(address);
25494 pud = *pud_p;
25495
25496 if (pud)
25497 - pmd_p = (pmdval_t *)((pud & PTE_PFN_MASK) + __START_KERNEL_map - phys_base);
25498 + pmd_p = (pmdval_t *)(__early_va(pud & PTE_PFN_MASK));
25499 else {
25500 if (next_early_pgt >= EARLY_DYNAMIC_PAGE_TABLES) {
25501 reset_early_page_tables();
25502 @@ -99,7 +99,7 @@ again:
25503 pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++];
25504 for (i = 0; i < PTRS_PER_PMD; i++)
25505 pmd_p[i] = 0;
25506 - *pud_p = (pudval_t)pmd_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
25507 + *pud_p = (pudval_t)__pa(pmd_p) + _KERNPG_TABLE;
25508 }
25509 pmd = (physaddr & PMD_MASK) + early_pmd_flags;
25510 pmd_p[pmd_index(address)] = pmd;
25511 @@ -163,8 +163,6 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
25512
25513 clear_bss();
25514
25515 - clear_page(init_level4_pgt);
25516 -
25517 kasan_early_init();
25518
25519 for (i = 0; i < NUM_EXCEPTION_VECTORS; i++)
25520 diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
25521 index 0e2d96f..5889003 100644
25522 --- a/arch/x86/kernel/head_32.S
25523 +++ b/arch/x86/kernel/head_32.S
25524 @@ -27,6 +27,12 @@
25525 /* Physical address */
25526 #define pa(X) ((X) - __PAGE_OFFSET)
25527
25528 +#ifdef CONFIG_PAX_KERNEXEC
25529 +#define ta(X) (X)
25530 +#else
25531 +#define ta(X) ((X) - __PAGE_OFFSET)
25532 +#endif
25533 +
25534 /*
25535 * References to members of the new_cpu_data structure.
25536 */
25537 @@ -56,11 +62,7 @@
25538 * and small than max_low_pfn, otherwise will waste some page table entries
25539 */
25540
25541 -#if PTRS_PER_PMD > 1
25542 -#define PAGE_TABLE_SIZE(pages) (((pages) / PTRS_PER_PMD) + PTRS_PER_PGD)
25543 -#else
25544 -#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PGD)
25545 -#endif
25546 +#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PTE)
25547
25548 /*
25549 * Number of possible pages in the lowmem region.
25550 @@ -86,6 +88,12 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_PAGES) * PAGE_SIZE
25551 RESERVE_BRK(pagetables, INIT_MAP_SIZE)
25552
25553 /*
25554 + * Real beginning of normal "text" segment
25555 + */
25556 +ENTRY(stext)
25557 +ENTRY(_stext)
25558 +
25559 +/*
25560 * 32-bit kernel entrypoint; only used by the boot CPU. On entry,
25561 * %esi points to the real-mode code as a 32-bit pointer.
25562 * CS and DS must be 4 GB flat segments, but we don't depend on
25563 @@ -93,6 +101,13 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE)
25564 * can.
25565 */
25566 __HEAD
25567 +
25568 +#ifdef CONFIG_PAX_KERNEXEC
25569 + jmp startup_32
25570 +/* PaX: fill first page in .text with int3 to catch NULL derefs in kernel mode */
25571 +.fill PAGE_SIZE-5,1,0xcc
25572 +#endif
25573 +
25574 ENTRY(startup_32)
25575 movl pa(stack_start),%ecx
25576
25577 @@ -114,6 +129,66 @@ ENTRY(startup_32)
25578 2:
25579 leal -__PAGE_OFFSET(%ecx),%esp
25580
25581 +#ifdef CONFIG_SMP
25582 + movl $pa(cpu_gdt_table),%edi
25583 + movl $__per_cpu_load,%eax
25584 + movw %ax,GDT_ENTRY_PERCPU * 8 + 2(%edi)
25585 + rorl $16,%eax
25586 + movb %al,GDT_ENTRY_PERCPU * 8 + 4(%edi)
25587 + movb %ah,GDT_ENTRY_PERCPU * 8 + 7(%edi)
25588 + movl $__per_cpu_end - 1,%eax
25589 + subl $__per_cpu_start,%eax
25590 + cmpl $0x100000,%eax
25591 + jb 1f
25592 + shrl $PAGE_SHIFT,%eax
25593 + orb $0x80,GDT_ENTRY_PERCPU * 8 + 6(%edi)
25594 +1:
25595 + movw %ax,GDT_ENTRY_PERCPU * 8 + 0(%edi)
25596 + shrl $16,%eax
25597 + orb %al,GDT_ENTRY_PERCPU * 8 + 6(%edi)
25598 +#endif
25599 +
25600 +#ifdef CONFIG_PAX_MEMORY_UDEREF
25601 + movl $NR_CPUS,%ecx
25602 + movl $pa(cpu_gdt_table),%edi
25603 +1:
25604 + movl $((((__PAGE_OFFSET-1) & 0xf0000000) >> 12) | 0x00c09700),GDT_ENTRY_KERNEL_DS * 8 + 4(%edi)
25605 + movl $((((__PAGE_OFFSET-1) & 0xf0000000) >> 12) | 0x00c0fb00),GDT_ENTRY_DEFAULT_USER_CS * 8 + 4(%edi)
25606 + movl $((((__PAGE_OFFSET-1) & 0xf0000000) >> 12) | 0x00c0f300),GDT_ENTRY_DEFAULT_USER_DS * 8 + 4(%edi)
25607 + addl $PAGE_SIZE_asm,%edi
25608 + loop 1b
25609 +#endif
25610 +
25611 +#ifdef CONFIG_PAX_KERNEXEC
25612 + movl $pa(boot_gdt),%edi
25613 + movl $__LOAD_PHYSICAL_ADDR,%eax
25614 + movw %ax,GDT_ENTRY_BOOT_CS * 8 + 2(%edi)
25615 + rorl $16,%eax
25616 + movb %al,GDT_ENTRY_BOOT_CS * 8 + 4(%edi)
25617 + movb %ah,GDT_ENTRY_BOOT_CS * 8 + 7(%edi)
25618 + rorl $16,%eax
25619 +
25620 + ljmp $(__BOOT_CS),$1f
25621 +1:
25622 +
25623 + movl $NR_CPUS,%ecx
25624 + movl $pa(cpu_gdt_table),%edi
25625 + addl $__PAGE_OFFSET,%eax
25626 +1:
25627 + movb $0xc0,GDT_ENTRY_KERNEL_CS * 8 + 6(%edi)
25628 + movb $0xc0,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 6(%edi)
25629 + movw %ax,GDT_ENTRY_KERNEL_CS * 8 + 2(%edi)
25630 + movw %ax,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 2(%edi)
25631 + rorl $16,%eax
25632 + movb %al,GDT_ENTRY_KERNEL_CS * 8 + 4(%edi)
25633 + movb %al,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 4(%edi)
25634 + movb %ah,GDT_ENTRY_KERNEL_CS * 8 + 7(%edi)
25635 + movb %ah,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 7(%edi)
25636 + rorl $16,%eax
25637 + addl $PAGE_SIZE_asm,%edi
25638 + loop 1b
25639 +#endif
25640 +
25641 /*
25642 * Clear BSS first so that there are no surprises...
25643 */
25644 @@ -209,8 +284,11 @@ ENTRY(startup_32)
25645 movl %eax, pa(max_pfn_mapped)
25646
25647 /* Do early initialization of the fixmap area */
25648 - movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
25649 - movl %eax,pa(initial_pg_pmd+0x1000*KPMDS-8)
25650 +#ifdef CONFIG_COMPAT_VDSO
25651 + movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(initial_pg_pmd+0x1000*KPMDS-8)
25652 +#else
25653 + movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,pa(initial_pg_pmd+0x1000*KPMDS-8)
25654 +#endif
25655 #else /* Not PAE */
25656
25657 page_pde_offset = (__PAGE_OFFSET >> 20);
25658 @@ -240,8 +318,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
25659 movl %eax, pa(max_pfn_mapped)
25660
25661 /* Do early initialization of the fixmap area */
25662 - movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
25663 - movl %eax,pa(initial_page_table+0xffc)
25664 +#ifdef CONFIG_COMPAT_VDSO
25665 + movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(initial_page_table+0xffc)
25666 +#else
25667 + movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,pa(initial_page_table+0xffc)
25668 +#endif
25669 #endif
25670
25671 #ifdef CONFIG_PARAVIRT
25672 @@ -255,9 +336,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
25673 cmpl $num_subarch_entries, %eax
25674 jae bad_subarch
25675
25676 - movl pa(subarch_entries)(,%eax,4), %eax
25677 - subl $__PAGE_OFFSET, %eax
25678 - jmp *%eax
25679 + jmp *pa(subarch_entries)(,%eax,4)
25680
25681 bad_subarch:
25682 WEAK(lguest_entry)
25683 @@ -269,10 +348,10 @@ WEAK(xen_entry)
25684 __INITDATA
25685
25686 subarch_entries:
25687 - .long default_entry /* normal x86/PC */
25688 - .long lguest_entry /* lguest hypervisor */
25689 - .long xen_entry /* Xen hypervisor */
25690 - .long default_entry /* Moorestown MID */
25691 + .long ta(default_entry) /* normal x86/PC */
25692 + .long ta(lguest_entry) /* lguest hypervisor */
25693 + .long ta(xen_entry) /* Xen hypervisor */
25694 + .long ta(default_entry) /* Moorestown MID */
25695 num_subarch_entries = (. - subarch_entries) / 4
25696 .previous
25697 #else
25698 @@ -362,6 +441,7 @@ default_entry:
25699 movl pa(mmu_cr4_features),%eax
25700 movl %eax,%cr4
25701
25702 +#ifdef CONFIG_X86_PAE
25703 testb $X86_CR4_PAE, %al # check if PAE is enabled
25704 jz enable_paging
25705
25706 @@ -390,6 +470,9 @@ default_entry:
25707 /* Make changes effective */
25708 wrmsr
25709
25710 + btsl $_PAGE_BIT_NX-32,pa(__supported_pte_mask+4)
25711 +#endif
25712 +
25713 enable_paging:
25714
25715 /*
25716 @@ -457,14 +540,20 @@ is486:
25717 1: movl $(__KERNEL_DS),%eax # reload all the segment registers
25718 movl %eax,%ss # after changing gdt.
25719
25720 - movl $(__USER_DS),%eax # DS/ES contains default USER segment
25721 +# movl $(__KERNEL_DS),%eax # DS/ES contains default KERNEL segment
25722 movl %eax,%ds
25723 movl %eax,%es
25724
25725 movl $(__KERNEL_PERCPU), %eax
25726 movl %eax,%fs # set this cpu's percpu
25727
25728 +#ifdef CONFIG_CC_STACKPROTECTOR
25729 movl $(__KERNEL_STACK_CANARY),%eax
25730 +#elif defined(CONFIG_PAX_MEMORY_UDEREF)
25731 + movl $(__USER_DS),%eax
25732 +#else
25733 + xorl %eax,%eax
25734 +#endif
25735 movl %eax,%gs
25736
25737 xorl %eax,%eax # Clear LDT
25738 @@ -521,8 +610,11 @@ setup_once:
25739 * relocation. Manually set base address in stack canary
25740 * segment descriptor.
25741 */
25742 - movl $gdt_page,%eax
25743 + movl $cpu_gdt_table,%eax
25744 movl $stack_canary,%ecx
25745 +#ifdef CONFIG_SMP
25746 + addl $__per_cpu_load,%ecx
25747 +#endif
25748 movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax)
25749 shrl $16, %ecx
25750 movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax)
25751 @@ -559,7 +651,7 @@ early_idt_handler_common:
25752 cmpl $2,(%esp) # X86_TRAP_NMI
25753 je .Lis_nmi # Ignore NMI
25754
25755 - cmpl $2,%ss:early_recursion_flag
25756 + cmpl $1,%ss:early_recursion_flag
25757 je hlt_loop
25758 incl %ss:early_recursion_flag
25759
25760 @@ -597,8 +689,8 @@ early_idt_handler_common:
25761 pushl (20+6*4)(%esp) /* trapno */
25762 pushl $fault_msg
25763 call printk
25764 -#endif
25765 call dump_stack
25766 +#endif
25767 hlt_loop:
25768 hlt
25769 jmp hlt_loop
25770 @@ -618,8 +710,11 @@ ENDPROC(early_idt_handler_common)
25771 /* This is the default interrupt "handler" :-) */
25772 ALIGN
25773 ignore_int:
25774 - cld
25775 #ifdef CONFIG_PRINTK
25776 + cmpl $2,%ss:early_recursion_flag
25777 + je hlt_loop
25778 + incl %ss:early_recursion_flag
25779 + cld
25780 pushl %eax
25781 pushl %ecx
25782 pushl %edx
25783 @@ -628,9 +723,6 @@ ignore_int:
25784 movl $(__KERNEL_DS),%eax
25785 movl %eax,%ds
25786 movl %eax,%es
25787 - cmpl $2,early_recursion_flag
25788 - je hlt_loop
25789 - incl early_recursion_flag
25790 pushl 16(%esp)
25791 pushl 24(%esp)
25792 pushl 32(%esp)
25793 @@ -664,29 +756,34 @@ ENTRY(setup_once_ref)
25794 /*
25795 * BSS section
25796 */
25797 -__PAGE_ALIGNED_BSS
25798 - .align PAGE_SIZE
25799 #ifdef CONFIG_X86_PAE
25800 +.section .initial_pg_pmd,"a",@progbits
25801 initial_pg_pmd:
25802 .fill 1024*KPMDS,4,0
25803 #else
25804 +.section .initial_page_table,"a",@progbits
25805 ENTRY(initial_page_table)
25806 .fill 1024,4,0
25807 #endif
25808 +.section .initial_pg_fixmap,"a",@progbits
25809 initial_pg_fixmap:
25810 .fill 1024,4,0
25811 +.section .empty_zero_page,"a",@progbits
25812 ENTRY(empty_zero_page)
25813 .fill 4096,1,0
25814 +.section .swapper_pg_dir,"a",@progbits
25815 ENTRY(swapper_pg_dir)
25816 +#ifdef CONFIG_X86_PAE
25817 + .fill 4,8,0
25818 +#else
25819 .fill 1024,4,0
25820 +#endif
25821
25822 /*
25823 * This starts the data section.
25824 */
25825 #ifdef CONFIG_X86_PAE
25826 -__PAGE_ALIGNED_DATA
25827 - /* Page-aligned for the benefit of paravirt? */
25828 - .align PAGE_SIZE
25829 +.section .initial_page_table,"a",@progbits
25830 ENTRY(initial_page_table)
25831 .long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */
25832 # if KPMDS == 3
25833 @@ -705,12 +802,20 @@ ENTRY(initial_page_table)
25834 # error "Kernel PMDs should be 1, 2 or 3"
25835 # endif
25836 .align PAGE_SIZE /* needs to be page-sized too */
25837 +
25838 +#ifdef CONFIG_PAX_PER_CPU_PGD
25839 +ENTRY(cpu_pgd)
25840 + .rept 2*NR_CPUS
25841 + .fill 4,8,0
25842 + .endr
25843 +#endif
25844 +
25845 #endif
25846
25847 .data
25848 .balign 4
25849 ENTRY(stack_start)
25850 - .long init_thread_union+THREAD_SIZE
25851 + .long init_thread_union+THREAD_SIZE-8
25852
25853 __INITRODATA
25854 int_msg:
25855 @@ -738,7 +843,7 @@ fault_msg:
25856 * segment size, and 32-bit linear address value:
25857 */
25858
25859 - .data
25860 +.section .rodata,"a",@progbits
25861 .globl boot_gdt_descr
25862 .globl idt_descr
25863
25864 @@ -747,7 +852,7 @@ fault_msg:
25865 .word 0 # 32 bit align gdt_desc.address
25866 boot_gdt_descr:
25867 .word __BOOT_DS+7
25868 - .long boot_gdt - __PAGE_OFFSET
25869 + .long pa(boot_gdt)
25870
25871 .word 0 # 32-bit align idt_desc.address
25872 idt_descr:
25873 @@ -758,7 +863,7 @@ idt_descr:
25874 .word 0 # 32 bit align gdt_desc.address
25875 ENTRY(early_gdt_descr)
25876 .word GDT_ENTRIES*8-1
25877 - .long gdt_page /* Overwritten for secondary CPUs */
25878 + .long cpu_gdt_table /* Overwritten for secondary CPUs */
25879
25880 /*
25881 * The boot_gdt must mirror the equivalent in setup.S and is
25882 @@ -767,5 +872,65 @@ ENTRY(early_gdt_descr)
25883 .align L1_CACHE_BYTES
25884 ENTRY(boot_gdt)
25885 .fill GDT_ENTRY_BOOT_CS,8,0
25886 - .quad 0x00cf9a000000ffff /* kernel 4GB code at 0x00000000 */
25887 - .quad 0x00cf92000000ffff /* kernel 4GB data at 0x00000000 */
25888 + .quad 0x00cf9b000000ffff /* kernel 4GB code at 0x00000000 */
25889 + .quad 0x00cf93000000ffff /* kernel 4GB data at 0x00000000 */
25890 +
25891 + .align PAGE_SIZE_asm
25892 +ENTRY(cpu_gdt_table)
25893 + .rept NR_CPUS
25894 + .quad 0x0000000000000000 /* NULL descriptor */
25895 + .quad 0x0000000000000000 /* 0x0b reserved */
25896 + .quad 0x0000000000000000 /* 0x13 reserved */
25897 + .quad 0x0000000000000000 /* 0x1b reserved */
25898 +
25899 +#ifdef CONFIG_PAX_KERNEXEC
25900 + .quad 0x00cf9b000000ffff /* 0x20 alternate kernel 4GB code at 0x00000000 */
25901 +#else
25902 + .quad 0x0000000000000000 /* 0x20 unused */
25903 +#endif
25904 +
25905 + .quad 0x0000000000000000 /* 0x28 unused */
25906 + .quad 0x0000000000000000 /* 0x33 TLS entry 1 */
25907 + .quad 0x0000000000000000 /* 0x3b TLS entry 2 */
25908 + .quad 0x0000000000000000 /* 0x43 TLS entry 3 */
25909 + .quad 0x0000000000000000 /* 0x4b reserved */
25910 + .quad 0x0000000000000000 /* 0x53 reserved */
25911 + .quad 0x0000000000000000 /* 0x5b reserved */
25912 +
25913 + .quad 0x00cf9b000000ffff /* 0x60 kernel 4GB code at 0x00000000 */
25914 + .quad 0x00cf93000000ffff /* 0x68 kernel 4GB data at 0x00000000 */
25915 + .quad 0x00cffb000000ffff /* 0x73 user 4GB code at 0x00000000 */
25916 + .quad 0x00cff3000000ffff /* 0x7b user 4GB data at 0x00000000 */
25917 +
25918 + .quad 0x0000000000000000 /* 0x80 TSS descriptor */
25919 + .quad 0x0000000000000000 /* 0x88 LDT descriptor */
25920 +
25921 + /*
25922 + * Segments used for calling PnP BIOS have byte granularity.
25923 + * The code segments and data segments have fixed 64k limits,
25924 + * the transfer segment sizes are set at run time.
25925 + */
25926 + .quad 0x00409b000000ffff /* 0x90 32-bit code */
25927 + .quad 0x00009b000000ffff /* 0x98 16-bit code */
25928 + .quad 0x000093000000ffff /* 0xa0 16-bit data */
25929 + .quad 0x0000930000000000 /* 0xa8 16-bit data */
25930 + .quad 0x0000930000000000 /* 0xb0 16-bit data */
25931 +
25932 + /*
25933 + * The APM segments have byte granularity and their bases
25934 + * are set at run time. All have 64k limits.
25935 + */
25936 + .quad 0x00409b000000ffff /* 0xb8 APM CS code */
25937 + .quad 0x00009b000000ffff /* 0xc0 APM CS 16 code (16 bit) */
25938 + .quad 0x004093000000ffff /* 0xc8 APM DS data */
25939 +
25940 + .quad 0x00c093000000ffff /* 0xd0 - ESPFIX SS */
25941 + .quad 0x0040930000000000 /* 0xd8 - PERCPU */
25942 + .quad 0x0040910000000017 /* 0xe0 - STACK_CANARY */
25943 + .quad 0x0000000000000000 /* 0xe8 - PCIBIOS_CS */
25944 + .quad 0x0000000000000000 /* 0xf0 - PCIBIOS_DS */
25945 + .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
25946 +
25947 + /* Be sure this is zeroed to avoid false validations in Xen */
25948 + .fill PAGE_SIZE_asm - GDT_SIZE,1,0
25949 + .endr
25950 diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
25951 index 1d40ca8..4d38dbd 100644
25952 --- a/arch/x86/kernel/head_64.S
25953 +++ b/arch/x86/kernel/head_64.S
25954 @@ -20,6 +20,8 @@
25955 #include <asm/processor-flags.h>
25956 #include <asm/percpu.h>
25957 #include <asm/nops.h>
25958 +#include <asm/cpufeature.h>
25959 +#include <asm/alternative-asm.h>
25960
25961 #ifdef CONFIG_PARAVIRT
25962 #include <asm/asm-offsets.h>
25963 @@ -41,6 +43,12 @@ L4_PAGE_OFFSET = pgd_index(__PAGE_OFFSET)
25964 L3_PAGE_OFFSET = pud_index(__PAGE_OFFSET)
25965 L4_START_KERNEL = pgd_index(__START_KERNEL_map)
25966 L3_START_KERNEL = pud_index(__START_KERNEL_map)
25967 +L4_VMALLOC_START = pgd_index(VMALLOC_START)
25968 +L3_VMALLOC_START = pud_index(VMALLOC_START)
25969 +L4_VMALLOC_END = pgd_index(VMALLOC_END)
25970 +L3_VMALLOC_END = pud_index(VMALLOC_END)
25971 +L4_VMEMMAP_START = pgd_index(VMEMMAP_START)
25972 +L3_VMEMMAP_START = pud_index(VMEMMAP_START)
25973
25974 .text
25975 __HEAD
25976 @@ -89,11 +97,33 @@ startup_64:
25977 * Fixup the physical addresses in the page table
25978 */
25979 addq %rbp, early_level4_pgt + (L4_START_KERNEL*8)(%rip)
25980 + addq %rbp, init_level4_pgt + (L4_PAGE_OFFSET*8)(%rip)
25981 + addq %rbp, init_level4_pgt + (L4_VMALLOC_START*8)(%rip)
25982 + addq %rbp, init_level4_pgt + (L4_VMALLOC_END*8)(%rip)
25983 + addq %rbp, init_level4_pgt + (L4_VMEMMAP_START*8)(%rip)
25984 + addq %rbp, init_level4_pgt + (L4_START_KERNEL*8)(%rip)
25985
25986 - addq %rbp, level3_kernel_pgt + (510*8)(%rip)
25987 - addq %rbp, level3_kernel_pgt + (511*8)(%rip)
25988 + addq %rbp, level3_ident_pgt + (0*8)(%rip)
25989 +#ifndef CONFIG_XEN
25990 + addq %rbp, level3_ident_pgt + (1*8)(%rip)
25991 +#endif
25992
25993 + addq %rbp, level3_vmemmap_pgt + (L3_VMEMMAP_START*8)(%rip)
25994 +
25995 + addq %rbp, level3_kernel_pgt + (L3_START_KERNEL*8)(%rip)
25996 + addq %rbp, level3_kernel_pgt + ((L3_START_KERNEL+1)*8)(%rip)
25997 +
25998 + addq %rbp, level2_ident_pgt + (0*8)(%rip)
25999 +
26000 + addq %rbp, level2_fixmap_pgt + (0*8)(%rip)
26001 + addq %rbp, level2_fixmap_pgt + (1*8)(%rip)
26002 + addq %rbp, level2_fixmap_pgt + (2*8)(%rip)
26003 + addq %rbp, level2_fixmap_pgt + (3*8)(%rip)
26004 +
26005 + addq %rbp, level2_fixmap_pgt + (504*8)(%rip)
26006 + addq %rbp, level2_fixmap_pgt + (505*8)(%rip)
26007 addq %rbp, level2_fixmap_pgt + (506*8)(%rip)
26008 + addq %rbp, level2_fixmap_pgt + (507*8)(%rip)
26009
26010 /*
26011 * Set up the identity mapping for the switchover. These
26012 @@ -174,11 +204,12 @@ ENTRY(secondary_startup_64)
26013 * after the boot processor executes this code.
26014 */
26015
26016 + orq $-1, %rbp
26017 movq $(init_level4_pgt - __START_KERNEL_map), %rax
26018 1:
26019
26020 - /* Enable PAE mode and PGE */
26021 - movl $(X86_CR4_PAE | X86_CR4_PGE), %ecx
26022 + /* Enable PAE mode and PSE/PGE */
26023 + movl $(X86_CR4_PSE | X86_CR4_PAE | X86_CR4_PGE), %ecx
26024 movq %rcx, %cr4
26025
26026 /* Setup early boot stage 4 level pagetables. */
26027 @@ -199,10 +230,21 @@ ENTRY(secondary_startup_64)
26028 movl $MSR_EFER, %ecx
26029 rdmsr
26030 btsl $_EFER_SCE, %eax /* Enable System Call */
26031 - btl $20,%edi /* No Execute supported? */
26032 + btl $(X86_FEATURE_NX & 31),%edi /* No Execute supported? */
26033 jnc 1f
26034 btsl $_EFER_NX, %eax
26035 + cmpq $-1, %rbp
26036 + je 1f
26037 btsq $_PAGE_BIT_NX,early_pmd_flags(%rip)
26038 + btsq $_PAGE_BIT_NX, init_level4_pgt + 8*L4_PAGE_OFFSET(%rip)
26039 + btsq $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMALLOC_START(%rip)
26040 + btsq $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMALLOC_END(%rip)
26041 + btsq $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMEMMAP_START(%rip)
26042 + btsq $_PAGE_BIT_NX, level2_fixmap_pgt + 8*504(%rip)
26043 + btsq $_PAGE_BIT_NX, level2_fixmap_pgt + 8*505(%rip)
26044 + btsq $_PAGE_BIT_NX, level2_fixmap_pgt + 8*506(%rip)
26045 + btsq $_PAGE_BIT_NX, level2_fixmap_pgt + 8*507(%rip)
26046 + btsq $_PAGE_BIT_NX, __supported_pte_mask(%rip)
26047 1: wrmsr /* Make changes effective */
26048
26049 /* Setup cr0 */
26050 @@ -282,6 +324,7 @@ ENTRY(secondary_startup_64)
26051 * REX.W + FF /5 JMP m16:64 Jump far, absolute indirect,
26052 * address given in m16:64.
26053 */
26054 + pax_set_fptr_mask
26055 movq initial_code(%rip),%rax
26056 pushq $0 # fake return address to stop unwinder
26057 pushq $__KERNEL_CS # set correct cs
26058 @@ -313,7 +356,7 @@ ENDPROC(start_cpu0)
26059 .quad INIT_PER_CPU_VAR(irq_stack_union)
26060
26061 GLOBAL(stack_start)
26062 - .quad init_thread_union+THREAD_SIZE-8
26063 + .quad init_thread_union+THREAD_SIZE-16
26064 .word 0
26065 __FINITDATA
26066
26067 @@ -393,7 +436,7 @@ early_idt_handler_common:
26068 call dump_stack
26069 #ifdef CONFIG_KALLSYMS
26070 leaq early_idt_ripmsg(%rip),%rdi
26071 - movq 40(%rsp),%rsi # %rip again
26072 + movq 88(%rsp),%rsi # %rip again
26073 call __print_symbol
26074 #endif
26075 #endif /* EARLY_PRINTK */
26076 @@ -422,6 +465,7 @@ ENDPROC(early_idt_handler_common)
26077 early_recursion_flag:
26078 .long 0
26079
26080 + .section .rodata,"a",@progbits
26081 #ifdef CONFIG_EARLY_PRINTK
26082 early_idt_msg:
26083 .asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n"
26084 @@ -444,40 +488,67 @@ GLOBAL(name)
26085 __INITDATA
26086 NEXT_PAGE(early_level4_pgt)
26087 .fill 511,8,0
26088 - .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
26089 + .quad level3_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
26090
26091 NEXT_PAGE(early_dynamic_pgts)
26092 .fill 512*EARLY_DYNAMIC_PAGE_TABLES,8,0
26093
26094 - .data
26095 + .section .rodata,"a",@progbits
26096
26097 -#ifndef CONFIG_XEN
26098 NEXT_PAGE(init_level4_pgt)
26099 - .fill 512,8,0
26100 -#else
26101 -NEXT_PAGE(init_level4_pgt)
26102 - .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
26103 .org init_level4_pgt + L4_PAGE_OFFSET*8, 0
26104 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
26105 + .org init_level4_pgt + L4_VMALLOC_START*8, 0
26106 + .quad level3_vmalloc_start_pgt - __START_KERNEL_map + _KERNPG_TABLE
26107 + .org init_level4_pgt + L4_VMALLOC_END*8, 0
26108 + .quad level3_vmalloc_end_pgt - __START_KERNEL_map + _KERNPG_TABLE
26109 + .org init_level4_pgt + L4_VMEMMAP_START*8, 0
26110 + .quad level3_vmemmap_pgt - __START_KERNEL_map + _KERNPG_TABLE
26111 .org init_level4_pgt + L4_START_KERNEL*8, 0
26112 /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */
26113 - .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
26114 + .quad level3_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
26115 +
26116 +#ifdef CONFIG_PAX_PER_CPU_PGD
26117 +NEXT_PAGE(cpu_pgd)
26118 + .rept 2*NR_CPUS
26119 + .fill 512,8,0
26120 + .endr
26121 +#endif
26122
26123 NEXT_PAGE(level3_ident_pgt)
26124 .quad level2_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
26125 +#ifdef CONFIG_XEN
26126 .fill 511, 8, 0
26127 +#else
26128 + .quad level2_ident_pgt + PAGE_SIZE - __START_KERNEL_map + _KERNPG_TABLE
26129 + .fill 510,8,0
26130 +#endif
26131 +
26132 +NEXT_PAGE(level3_vmalloc_start_pgt)
26133 + .fill 512,8,0
26134 +
26135 +NEXT_PAGE(level3_vmalloc_end_pgt)
26136 + .fill 512,8,0
26137 +
26138 +NEXT_PAGE(level3_vmemmap_pgt)
26139 + .fill L3_VMEMMAP_START,8,0
26140 + .quad level2_vmemmap_pgt - __START_KERNEL_map + _KERNPG_TABLE
26141 +
26142 NEXT_PAGE(level2_ident_pgt)
26143 - /* Since I easily can, map the first 1G.
26144 + .quad level1_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
26145 + /* Since I easily can, map the first 2G.
26146 * Don't set NX because code runs from these pages.
26147 */
26148 - PMDS(0, __PAGE_KERNEL_IDENT_LARGE_EXEC, PTRS_PER_PMD)
26149 -#endif
26150 + PMDS(PMD_SIZE, __PAGE_KERNEL_IDENT_LARGE_EXEC, 2*PTRS_PER_PMD - 1)
26151
26152 NEXT_PAGE(level3_kernel_pgt)
26153 .fill L3_START_KERNEL,8,0
26154 /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */
26155 .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
26156 - .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
26157 + .quad level2_fixmap_pgt - __START_KERNEL_map + _KERNPG_TABLE
26158 +
26159 +NEXT_PAGE(level2_vmemmap_pgt)
26160 + .fill 512,8,0
26161
26162 NEXT_PAGE(level2_kernel_pgt)
26163 /*
26164 @@ -494,31 +565,79 @@ NEXT_PAGE(level2_kernel_pgt)
26165 KERNEL_IMAGE_SIZE/PMD_SIZE)
26166
26167 NEXT_PAGE(level2_fixmap_pgt)
26168 - .fill 506,8,0
26169 - .quad level1_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
26170 - /* 8MB reserved for vsyscalls + a 2MB hole = 4 + 1 entries */
26171 - .fill 5,8,0
26172 + .quad level1_modules_pgt - __START_KERNEL_map + 0 * PAGE_SIZE + _KERNPG_TABLE
26173 + .quad level1_modules_pgt - __START_KERNEL_map + 1 * PAGE_SIZE + _KERNPG_TABLE
26174 + .quad level1_modules_pgt - __START_KERNEL_map + 2 * PAGE_SIZE + _KERNPG_TABLE
26175 + .quad level1_modules_pgt - __START_KERNEL_map + 3 * PAGE_SIZE + _KERNPG_TABLE
26176 + .fill 500,8,0
26177 + .quad level1_fixmap_pgt - __START_KERNEL_map + 0 * PAGE_SIZE + _KERNPG_TABLE
26178 + .quad level1_fixmap_pgt - __START_KERNEL_map + 1 * PAGE_SIZE + _KERNPG_TABLE
26179 + .quad level1_fixmap_pgt - __START_KERNEL_map + 2 * PAGE_SIZE + _KERNPG_TABLE
26180 + .quad level1_vsyscall_pgt - __START_KERNEL_map + _KERNPG_TABLE
26181 + /* 6MB reserved for vsyscalls + a 2MB hole = 3 + 1 entries */
26182 + .fill 4,8,0
26183 +
26184 +NEXT_PAGE(level1_ident_pgt)
26185 + .fill 512,8,0
26186 +
26187 +NEXT_PAGE(level1_modules_pgt)
26188 + .fill 4*512,8,0
26189
26190 NEXT_PAGE(level1_fixmap_pgt)
26191 + .fill 3*512,8,0
26192 +
26193 +NEXT_PAGE(level1_vsyscall_pgt)
26194 .fill 512,8,0
26195
26196 #undef PMDS
26197
26198 - .data
26199 + .align PAGE_SIZE
26200 +ENTRY(cpu_gdt_table)
26201 + .rept NR_CPUS
26202 + .quad 0x0000000000000000 /* NULL descriptor */
26203 + .quad 0x00cf9b000000ffff /* __KERNEL32_CS */
26204 + .quad 0x00af9b000000ffff /* __KERNEL_CS */
26205 + .quad 0x00cf93000000ffff /* __KERNEL_DS */
26206 + .quad 0x00cffb000000ffff /* __USER32_CS */
26207 + .quad 0x00cff3000000ffff /* __USER_DS, __USER32_DS */
26208 + .quad 0x00affb000000ffff /* __USER_CS */
26209 +
26210 +#ifdef CONFIG_PAX_KERNEXEC
26211 + .quad 0x00af9b000000ffff /* __KERNEXEC_KERNEL_CS */
26212 +#else
26213 + .quad 0x0 /* unused */
26214 +#endif
26215 +
26216 + .quad 0,0 /* TSS */
26217 + .quad 0,0 /* LDT */
26218 + .quad 0,0,0 /* three TLS descriptors */
26219 + .quad 0x0000f40000000000 /* node/CPU stored in limit */
26220 + /* asm/segment.h:GDT_ENTRIES must match this */
26221 +
26222 +#ifdef CONFIG_PAX_MEMORY_UDEREF
26223 + .quad 0x00cf93000000ffff /* __UDEREF_KERNEL_DS */
26224 +#else
26225 + .quad 0x0 /* unused */
26226 +#endif
26227 +
26228 + /* zero the remaining page */
26229 + .fill PAGE_SIZE / 8 - GDT_ENTRIES,8,0
26230 + .endr
26231 +
26232 .align 16
26233 .globl early_gdt_descr
26234 early_gdt_descr:
26235 .word GDT_ENTRIES*8-1
26236 early_gdt_descr_base:
26237 - .quad INIT_PER_CPU_VAR(gdt_page)
26238 + .quad cpu_gdt_table
26239
26240 ENTRY(phys_base)
26241 /* This must match the first entry in level2_kernel_pgt */
26242 .quad 0x0000000000000000
26243
26244 #include "../../x86/xen/xen-head.S"
26245 -
26246 - __PAGE_ALIGNED_BSS
26247 +
26248 + .section .rodata,"a",@progbits
26249 NEXT_PAGE(empty_zero_page)
26250 .skip PAGE_SIZE
26251
26252 diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c
26253 index 64341aa..b1e6632 100644
26254 --- a/arch/x86/kernel/i386_ksyms_32.c
26255 +++ b/arch/x86/kernel/i386_ksyms_32.c
26256 @@ -20,8 +20,12 @@ extern void cmpxchg8b_emu(void);
26257 EXPORT_SYMBOL(cmpxchg8b_emu);
26258 #endif
26259
26260 +EXPORT_SYMBOL_GPL(cpu_gdt_table);
26261 +
26262 /* Networking helper routines. */
26263 EXPORT_SYMBOL(csum_partial_copy_generic);
26264 +EXPORT_SYMBOL(csum_partial_copy_generic_to_user);
26265 +EXPORT_SYMBOL(csum_partial_copy_generic_from_user);
26266
26267 EXPORT_SYMBOL(__get_user_1);
26268 EXPORT_SYMBOL(__get_user_2);
26269 @@ -42,3 +46,11 @@ EXPORT_SYMBOL(empty_zero_page);
26270 EXPORT_SYMBOL(___preempt_schedule);
26271 EXPORT_SYMBOL(___preempt_schedule_notrace);
26272 #endif
26273 +
26274 +#ifdef CONFIG_PAX_KERNEXEC
26275 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
26276 +#endif
26277 +
26278 +#ifdef CONFIG_PAX_PER_CPU_PGD
26279 +EXPORT_SYMBOL(cpu_pgd);
26280 +#endif
26281 diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
26282 index 16cb827..372334f 100644
26283 --- a/arch/x86/kernel/i8259.c
26284 +++ b/arch/x86/kernel/i8259.c
26285 @@ -110,7 +110,7 @@ static int i8259A_irq_pending(unsigned int irq)
26286 static void make_8259A_irq(unsigned int irq)
26287 {
26288 disable_irq_nosync(irq);
26289 - io_apic_irqs &= ~(1<<irq);
26290 + io_apic_irqs &= ~(1UL<<irq);
26291 irq_set_chip_and_handler(irq, &i8259A_chip, handle_level_irq);
26292 enable_irq(irq);
26293 }
26294 @@ -208,7 +208,7 @@ spurious_8259A_irq:
26295 "spurious 8259A interrupt: IRQ%d.\n", irq);
26296 spurious_irq_mask |= irqmask;
26297 }
26298 - atomic_inc(&irq_err_count);
26299 + atomic_inc_unchecked(&irq_err_count);
26300 /*
26301 * Theoretically we do not have to handle this IRQ,
26302 * but in Linux this does not cause problems and is
26303 @@ -349,14 +349,16 @@ static void init_8259A(int auto_eoi)
26304 /* (slave's support for AEOI in flat mode is to be investigated) */
26305 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
26306
26307 + pax_open_kernel();
26308 if (auto_eoi)
26309 /*
26310 * In AEOI mode we just have to mask the interrupt
26311 * when acking.
26312 */
26313 - i8259A_chip.irq_mask_ack = disable_8259A_irq;
26314 + *(void **)&i8259A_chip.irq_mask_ack = disable_8259A_irq;
26315 else
26316 - i8259A_chip.irq_mask_ack = mask_and_ack_8259A;
26317 + *(void **)&i8259A_chip.irq_mask_ack = mask_and_ack_8259A;
26318 + pax_close_kernel();
26319
26320 udelay(100); /* wait for 8259A to initialize */
26321
26322 diff --git a/arch/x86/kernel/io_delay.c b/arch/x86/kernel/io_delay.c
26323 index a979b5b..1d6db75 100644
26324 --- a/arch/x86/kernel/io_delay.c
26325 +++ b/arch/x86/kernel/io_delay.c
26326 @@ -58,7 +58,7 @@ static int __init dmi_io_delay_0xed_port(const struct dmi_system_id *id)
26327 * Quirk table for systems that misbehave (lock up, etc.) if port
26328 * 0x80 is used:
26329 */
26330 -static struct dmi_system_id __initdata io_delay_0xed_port_dmi_table[] = {
26331 +static const struct dmi_system_id __initconst io_delay_0xed_port_dmi_table[] = {
26332 {
26333 .callback = dmi_io_delay_0xed_port,
26334 .ident = "Compaq Presario V6000",
26335 diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c
26336 index 37dae79..620dd84 100644
26337 --- a/arch/x86/kernel/ioport.c
26338 +++ b/arch/x86/kernel/ioport.c
26339 @@ -6,6 +6,7 @@
26340 #include <linux/sched.h>
26341 #include <linux/kernel.h>
26342 #include <linux/capability.h>
26343 +#include <linux/security.h>
26344 #include <linux/errno.h>
26345 #include <linux/types.h>
26346 #include <linux/ioport.h>
26347 @@ -30,6 +31,12 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
26348 return -EINVAL;
26349 if (turn_on && !capable(CAP_SYS_RAWIO))
26350 return -EPERM;
26351 +#ifdef CONFIG_GRKERNSEC_IO
26352 + if (turn_on && grsec_disable_privio) {
26353 + gr_handle_ioperm();
26354 + return -ENODEV;
26355 + }
26356 +#endif
26357
26358 /*
26359 * If it's the first ioperm() call in this thread's lifetime, set the
26360 @@ -54,7 +61,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
26361 * because the ->io_bitmap_max value must match the bitmap
26362 * contents:
26363 */
26364 - tss = &per_cpu(cpu_tss, get_cpu());
26365 + tss = cpu_tss + get_cpu();
26366
26367 if (turn_on)
26368 bitmap_clear(t->io_bitmap_ptr, from, num);
26369 @@ -105,6 +112,12 @@ SYSCALL_DEFINE1(iopl, unsigned int, level)
26370 if (level > old) {
26371 if (!capable(CAP_SYS_RAWIO))
26372 return -EPERM;
26373 +#ifdef CONFIG_GRKERNSEC_IO
26374 + if (grsec_disable_privio) {
26375 + gr_handle_iopl();
26376 + return -ENODEV;
26377 + }
26378 +#endif
26379 }
26380 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
26381 t->iopl = level << 12;
26382 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
26383 index c7dfe1b..146f63c 100644
26384 --- a/arch/x86/kernel/irq.c
26385 +++ b/arch/x86/kernel/irq.c
26386 @@ -28,7 +28,7 @@ EXPORT_PER_CPU_SYMBOL(irq_stat);
26387 DEFINE_PER_CPU(struct pt_regs *, irq_regs);
26388 EXPORT_PER_CPU_SYMBOL(irq_regs);
26389
26390 -atomic_t irq_err_count;
26391 +atomic_unchecked_t irq_err_count;
26392
26393 /* Function pointer for generic interrupt vector handling */
26394 void (*x86_platform_ipi_callback)(void) = NULL;
26395 @@ -144,9 +144,9 @@ int arch_show_interrupts(struct seq_file *p, int prec)
26396 seq_printf(p, "%10u ", irq_stats(j)->irq_hv_callback_count);
26397 seq_puts(p, " Hypervisor callback interrupts\n");
26398 #endif
26399 - seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
26400 + seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read_unchecked(&irq_err_count));
26401 #if defined(CONFIG_X86_IO_APIC)
26402 - seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read(&irq_mis_count));
26403 + seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read_unchecked(&irq_mis_count));
26404 #endif
26405 #ifdef CONFIG_HAVE_KVM
26406 seq_printf(p, "%*s: ", prec, "PIN");
26407 @@ -198,7 +198,7 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
26408
26409 u64 arch_irq_stat(void)
26410 {
26411 - u64 sum = atomic_read(&irq_err_count);
26412 + u64 sum = atomic_read_unchecked(&irq_err_count);
26413 return sum;
26414 }
26415
26416 diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
26417 index cd74f59..588af0b 100644
26418 --- a/arch/x86/kernel/irq_32.c
26419 +++ b/arch/x86/kernel/irq_32.c
26420 @@ -23,6 +23,8 @@
26421
26422 #ifdef CONFIG_DEBUG_STACKOVERFLOW
26423
26424 +extern void gr_handle_kernel_exploit(void);
26425 +
26426 int sysctl_panic_on_stackoverflow __read_mostly;
26427
26428 /* Debugging check for stack overflow: is there less than 1KB free? */
26429 @@ -33,13 +35,14 @@ static int check_stack_overflow(void)
26430 __asm__ __volatile__("andl %%esp,%0" :
26431 "=r" (sp) : "0" (THREAD_SIZE - 1));
26432
26433 - return sp < (sizeof(struct thread_info) + STACK_WARN);
26434 + return sp < STACK_WARN;
26435 }
26436
26437 static void print_stack_overflow(void)
26438 {
26439 printk(KERN_WARNING "low stack detected by irq handler\n");
26440 dump_stack();
26441 + gr_handle_kernel_exploit();
26442 if (sysctl_panic_on_stackoverflow)
26443 panic("low stack detected by irq handler - check messages\n");
26444 }
26445 @@ -71,10 +74,9 @@ static inline void *current_stack(void)
26446 static inline int
26447 execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
26448 {
26449 - struct irq_stack *curstk, *irqstk;
26450 + struct irq_stack *irqstk;
26451 u32 *isp, *prev_esp, arg1, arg2;
26452
26453 - curstk = (struct irq_stack *) current_stack();
26454 irqstk = __this_cpu_read(hardirq_stack);
26455
26456 /*
26457 @@ -83,15 +85,19 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
26458 * handler) we can't do that and just have to keep using the
26459 * current stack (which is the irq stack already after all)
26460 */
26461 - if (unlikely(curstk == irqstk))
26462 + if (unlikely((void *)current_stack_pointer - (void *)irqstk < THREAD_SIZE))
26463 return 0;
26464
26465 - isp = (u32 *) ((char *)irqstk + sizeof(*irqstk));
26466 + isp = (u32 *) ((char *)irqstk + sizeof(*irqstk) - 8);
26467
26468 /* Save the next esp at the bottom of the stack */
26469 prev_esp = (u32 *)irqstk;
26470 *prev_esp = current_stack_pointer();
26471
26472 +#ifdef CONFIG_PAX_MEMORY_UDEREF
26473 + __set_fs(MAKE_MM_SEG(0));
26474 +#endif
26475 +
26476 if (unlikely(overflow))
26477 call_on_stack(print_stack_overflow, isp);
26478
26479 @@ -102,6 +108,11 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
26480 : "0" (irq), "1" (desc), "2" (isp),
26481 "D" (desc->handle_irq)
26482 : "memory", "cc", "ecx");
26483 +
26484 +#ifdef CONFIG_PAX_MEMORY_UDEREF
26485 + __set_fs(current_thread_info()->addr_limit);
26486 +#endif
26487 +
26488 return 1;
26489 }
26490
26491 @@ -110,32 +121,18 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
26492 */
26493 void irq_ctx_init(int cpu)
26494 {
26495 - struct irq_stack *irqstk;
26496 -
26497 if (per_cpu(hardirq_stack, cpu))
26498 return;
26499
26500 - irqstk = page_address(alloc_pages_node(cpu_to_node(cpu),
26501 - THREADINFO_GFP,
26502 - THREAD_SIZE_ORDER));
26503 - per_cpu(hardirq_stack, cpu) = irqstk;
26504 -
26505 - irqstk = page_address(alloc_pages_node(cpu_to_node(cpu),
26506 - THREADINFO_GFP,
26507 - THREAD_SIZE_ORDER));
26508 - per_cpu(softirq_stack, cpu) = irqstk;
26509 -
26510 - printk(KERN_DEBUG "CPU %u irqstacks, hard=%p soft=%p\n",
26511 - cpu, per_cpu(hardirq_stack, cpu), per_cpu(softirq_stack, cpu));
26512 + per_cpu(hardirq_stack, cpu) = page_address(alloc_pages_node(cpu_to_node(cpu), THREADINFO_GFP, THREAD_SIZE_ORDER));
26513 + per_cpu(softirq_stack, cpu) = page_address(alloc_pages_node(cpu_to_node(cpu), THREADINFO_GFP, THREAD_SIZE_ORDER));
26514 }
26515
26516 void do_softirq_own_stack(void)
26517 {
26518 - struct thread_info *curstk;
26519 struct irq_stack *irqstk;
26520 u32 *isp, *prev_esp;
26521
26522 - curstk = current_stack();
26523 irqstk = __this_cpu_read(softirq_stack);
26524
26525 /* build the stack frame on the softirq stack */
26526 @@ -145,7 +142,16 @@ void do_softirq_own_stack(void)
26527 prev_esp = (u32 *)irqstk;
26528 *prev_esp = current_stack_pointer();
26529
26530 +#ifdef CONFIG_PAX_MEMORY_UDEREF
26531 + __set_fs(MAKE_MM_SEG(0));
26532 +#endif
26533 +
26534 call_on_stack(__do_softirq, isp);
26535 +
26536 +#ifdef CONFIG_PAX_MEMORY_UDEREF
26537 + __set_fs(current_thread_info()->addr_limit);
26538 +#endif
26539 +
26540 }
26541
26542 bool handle_irq(unsigned irq, struct pt_regs *regs)
26543 diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
26544 index bc4604e..0be227d 100644
26545 --- a/arch/x86/kernel/irq_64.c
26546 +++ b/arch/x86/kernel/irq_64.c
26547 @@ -20,6 +20,8 @@
26548 #include <asm/idle.h>
26549 #include <asm/apic.h>
26550
26551 +extern void gr_handle_kernel_exploit(void);
26552 +
26553 int sysctl_panic_on_stackoverflow;
26554
26555 /*
26556 @@ -63,6 +65,8 @@ static inline void stack_overflow_check(struct pt_regs *regs)
26557 irq_stack_top, irq_stack_bottom,
26558 estack_top, estack_bottom);
26559
26560 + gr_handle_kernel_exploit();
26561 +
26562 if (sysctl_panic_on_stackoverflow)
26563 panic("low stack detected by irq handler - check messages\n");
26564 #endif
26565 diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
26566 index 26d5a55..063fef8 100644
26567 --- a/arch/x86/kernel/jump_label.c
26568 +++ b/arch/x86/kernel/jump_label.c
26569 @@ -31,6 +31,8 @@ static void bug_at(unsigned char *ip, int line)
26570 * Something went wrong. Crash the box, as something could be
26571 * corrupting the kernel.
26572 */
26573 + ip = (unsigned char *)ktla_ktva((unsigned long)ip);
26574 + pr_warning("Unexpected op at %pS [%p] %s:%d\n", ip, ip, __FILE__, line);
26575 pr_warning("Unexpected op at %pS [%p] (%02x %02x %02x %02x %02x) %s:%d\n",
26576 ip, ip, ip[0], ip[1], ip[2], ip[3], ip[4], __FILE__, line);
26577 BUG();
26578 @@ -51,7 +53,7 @@ static void __jump_label_transform(struct jump_entry *entry,
26579 * Jump label is enabled for the first time.
26580 * So we expect a default_nop...
26581 */
26582 - if (unlikely(memcmp((void *)entry->code, default_nop, 5)
26583 + if (unlikely(memcmp((void *)ktla_ktva(entry->code), default_nop, 5)
26584 != 0))
26585 bug_at((void *)entry->code, __LINE__);
26586 } else {
26587 @@ -59,7 +61,7 @@ static void __jump_label_transform(struct jump_entry *entry,
26588 * ...otherwise expect an ideal_nop. Otherwise
26589 * something went horribly wrong.
26590 */
26591 - if (unlikely(memcmp((void *)entry->code, ideal_nop, 5)
26592 + if (unlikely(memcmp((void *)ktla_ktva(entry->code), ideal_nop, 5)
26593 != 0))
26594 bug_at((void *)entry->code, __LINE__);
26595 }
26596 @@ -75,13 +77,13 @@ static void __jump_label_transform(struct jump_entry *entry,
26597 * are converting the default nop to the ideal nop.
26598 */
26599 if (init) {
26600 - if (unlikely(memcmp((void *)entry->code, default_nop, 5) != 0))
26601 + if (unlikely(memcmp((void *)ktla_ktva(entry->code), default_nop, 5) != 0))
26602 bug_at((void *)entry->code, __LINE__);
26603 } else {
26604 code.jump = 0xe9;
26605 code.offset = entry->target -
26606 (entry->code + JUMP_LABEL_NOP_SIZE);
26607 - if (unlikely(memcmp((void *)entry->code, &code, 5) != 0))
26608 + if (unlikely(memcmp((void *)ktla_ktva(entry->code), &code, 5) != 0))
26609 bug_at((void *)entry->code, __LINE__);
26610 }
26611 memcpy(&code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
26612 diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
26613 index d6178d9..598681f 100644
26614 --- a/arch/x86/kernel/kgdb.c
26615 +++ b/arch/x86/kernel/kgdb.c
26616 @@ -228,7 +228,10 @@ static void kgdb_correct_hw_break(void)
26617 bp->attr.bp_addr = breakinfo[breakno].addr;
26618 bp->attr.bp_len = breakinfo[breakno].len;
26619 bp->attr.bp_type = breakinfo[breakno].type;
26620 - info->address = breakinfo[breakno].addr;
26621 + if (breakinfo[breakno].type == X86_BREAKPOINT_EXECUTE)
26622 + info->address = ktla_ktva(breakinfo[breakno].addr);
26623 + else
26624 + info->address = breakinfo[breakno].addr;
26625 info->len = breakinfo[breakno].len;
26626 info->type = breakinfo[breakno].type;
26627 val = arch_install_hw_breakpoint(bp);
26628 @@ -475,12 +478,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
26629 case 'k':
26630 /* clear the trace bit */
26631 linux_regs->flags &= ~X86_EFLAGS_TF;
26632 - atomic_set(&kgdb_cpu_doing_single_step, -1);
26633 + atomic_set_unchecked(&kgdb_cpu_doing_single_step, -1);
26634
26635 /* set the trace bit if we're stepping */
26636 if (remcomInBuffer[0] == 's') {
26637 linux_regs->flags |= X86_EFLAGS_TF;
26638 - atomic_set(&kgdb_cpu_doing_single_step,
26639 + atomic_set_unchecked(&kgdb_cpu_doing_single_step,
26640 raw_smp_processor_id());
26641 }
26642
26643 @@ -545,7 +548,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
26644
26645 switch (cmd) {
26646 case DIE_DEBUG:
26647 - if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
26648 + if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
26649 if (user_mode(regs))
26650 return single_step_cont(regs, args);
26651 break;
26652 @@ -750,11 +753,11 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
26653 #endif /* CONFIG_DEBUG_RODATA */
26654
26655 bpt->type = BP_BREAKPOINT;
26656 - err = probe_kernel_read(bpt->saved_instr, (char *)bpt->bpt_addr,
26657 + err = probe_kernel_read(bpt->saved_instr, (const void *)ktla_ktva(bpt->bpt_addr),
26658 BREAK_INSTR_SIZE);
26659 if (err)
26660 return err;
26661 - err = probe_kernel_write((char *)bpt->bpt_addr,
26662 + err = probe_kernel_write((void *)ktla_ktva(bpt->bpt_addr),
26663 arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE);
26664 #ifdef CONFIG_DEBUG_RODATA
26665 if (!err)
26666 @@ -767,7 +770,7 @@ int kgdb_arch_set_breakpoint(struct kgdb_bkpt *bpt)
26667 return -EBUSY;
26668 text_poke((void *)bpt->bpt_addr, arch_kgdb_ops.gdb_bpt_instr,
26669 BREAK_INSTR_SIZE);
26670 - err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
26671 + err = probe_kernel_read(opc, ktla_ktva((char *)bpt->bpt_addr), BREAK_INSTR_SIZE);
26672 if (err)
26673 return err;
26674 if (memcmp(opc, arch_kgdb_ops.gdb_bpt_instr, BREAK_INSTR_SIZE))
26675 @@ -792,13 +795,13 @@ int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt)
26676 if (mutex_is_locked(&text_mutex))
26677 goto knl_write;
26678 text_poke((void *)bpt->bpt_addr, bpt->saved_instr, BREAK_INSTR_SIZE);
26679 - err = probe_kernel_read(opc, (char *)bpt->bpt_addr, BREAK_INSTR_SIZE);
26680 + err = probe_kernel_read(opc, ktla_ktva((char *)bpt->bpt_addr), BREAK_INSTR_SIZE);
26681 if (err || memcmp(opc, bpt->saved_instr, BREAK_INSTR_SIZE))
26682 goto knl_write;
26683 return err;
26684 knl_write:
26685 #endif /* CONFIG_DEBUG_RODATA */
26686 - return probe_kernel_write((char *)bpt->bpt_addr,
26687 + return probe_kernel_write((void *)ktla_ktva(bpt->bpt_addr),
26688 (char *)bpt->saved_instr, BREAK_INSTR_SIZE);
26689 }
26690
26691 diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
26692 index 1deffe6..3be342a 100644
26693 --- a/arch/x86/kernel/kprobes/core.c
26694 +++ b/arch/x86/kernel/kprobes/core.c
26695 @@ -120,9 +120,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op)
26696 s32 raddr;
26697 } __packed *insn;
26698
26699 - insn = (struct __arch_relative_insn *)from;
26700 + insn = (struct __arch_relative_insn *)ktla_ktva((unsigned long)from);
26701 +
26702 + pax_open_kernel();
26703 insn->raddr = (s32)((long)(to) - ((long)(from) + 5));
26704 insn->op = op;
26705 + pax_close_kernel();
26706 }
26707
26708 /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
26709 @@ -168,7 +171,7 @@ int can_boost(kprobe_opcode_t *opcodes)
26710 kprobe_opcode_t opcode;
26711 kprobe_opcode_t *orig_opcodes = opcodes;
26712
26713 - if (search_exception_tables((unsigned long)opcodes))
26714 + if (search_exception_tables(ktva_ktla((unsigned long)opcodes)))
26715 return 0; /* Page fault may occur on this address. */
26716
26717 retry:
26718 @@ -260,12 +263,12 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr)
26719 * Fortunately, we know that the original code is the ideal 5-byte
26720 * long NOP.
26721 */
26722 - memcpy(buf, (void *)addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t));
26723 + memcpy(buf, (void *)ktla_ktva(addr), MAX_INSN_SIZE * sizeof(kprobe_opcode_t));
26724 if (faddr)
26725 memcpy(buf, ideal_nops[NOP_ATOMIC5], 5);
26726 else
26727 buf[0] = kp->opcode;
26728 - return (unsigned long)buf;
26729 + return ktva_ktla((unsigned long)buf);
26730 }
26731
26732 /*
26733 @@ -367,7 +370,9 @@ int __copy_instruction(u8 *dest, u8 *src)
26734 /* Another subsystem puts a breakpoint, failed to recover */
26735 if (insn.opcode.bytes[0] == BREAKPOINT_INSTRUCTION)
26736 return 0;
26737 + pax_open_kernel();
26738 memcpy(dest, insn.kaddr, length);
26739 + pax_close_kernel();
26740
26741 #ifdef CONFIG_X86_64
26742 if (insn_rip_relative(&insn)) {
26743 @@ -394,7 +399,9 @@ int __copy_instruction(u8 *dest, u8 *src)
26744 return 0;
26745 }
26746 disp = (u8 *) dest + insn_offset_displacement(&insn);
26747 + pax_open_kernel();
26748 *(s32 *) disp = (s32) newdisp;
26749 + pax_close_kernel();
26750 }
26751 #endif
26752 return length;
26753 @@ -536,7 +543,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
26754 * nor set current_kprobe, because it doesn't use single
26755 * stepping.
26756 */
26757 - regs->ip = (unsigned long)p->ainsn.insn;
26758 + regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
26759 preempt_enable_no_resched();
26760 return;
26761 }
26762 @@ -553,9 +560,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
26763 regs->flags &= ~X86_EFLAGS_IF;
26764 /* single step inline if the instruction is an int3 */
26765 if (p->opcode == BREAKPOINT_INSTRUCTION)
26766 - regs->ip = (unsigned long)p->addr;
26767 + regs->ip = ktla_ktva((unsigned long)p->addr);
26768 else
26769 - regs->ip = (unsigned long)p->ainsn.insn;
26770 + regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
26771 }
26772 NOKPROBE_SYMBOL(setup_singlestep);
26773
26774 @@ -640,7 +647,7 @@ int kprobe_int3_handler(struct pt_regs *regs)
26775 setup_singlestep(p, regs, kcb, 0);
26776 return 1;
26777 }
26778 - } else if (*addr != BREAKPOINT_INSTRUCTION) {
26779 + } else if (*(kprobe_opcode_t *)ktla_ktva((unsigned long)addr) != BREAKPOINT_INSTRUCTION) {
26780 /*
26781 * The breakpoint instruction was removed right
26782 * after we hit it. Another cpu has removed
26783 @@ -687,6 +694,9 @@ static void __used kretprobe_trampoline_holder(void)
26784 " movq %rax, 152(%rsp)\n"
26785 RESTORE_REGS_STRING
26786 " popfq\n"
26787 +#ifdef KERNEXEC_PLUGIN
26788 + " btsq $63,(%rsp)\n"
26789 +#endif
26790 #else
26791 " pushf\n"
26792 SAVE_REGS_STRING
26793 @@ -827,7 +837,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs,
26794 struct kprobe_ctlblk *kcb)
26795 {
26796 unsigned long *tos = stack_addr(regs);
26797 - unsigned long copy_ip = (unsigned long)p->ainsn.insn;
26798 + unsigned long copy_ip = ktva_ktla((unsigned long)p->ainsn.insn);
26799 unsigned long orig_ip = (unsigned long)p->addr;
26800 kprobe_opcode_t *insn = p->ainsn.insn;
26801
26802 diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
26803 index 7b3b9d1..e2478b91 100644
26804 --- a/arch/x86/kernel/kprobes/opt.c
26805 +++ b/arch/x86/kernel/kprobes/opt.c
26806 @@ -79,6 +79,7 @@ found:
26807 /* Insert a move instruction which sets a pointer to eax/rdi (1st arg). */
26808 static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
26809 {
26810 + pax_open_kernel();
26811 #ifdef CONFIG_X86_64
26812 *addr++ = 0x48;
26813 *addr++ = 0xbf;
26814 @@ -86,6 +87,7 @@ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
26815 *addr++ = 0xb8;
26816 #endif
26817 *(unsigned long *)addr = val;
26818 + pax_close_kernel();
26819 }
26820
26821 asm (
26822 @@ -342,7 +344,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op,
26823 * Verify if the address gap is in 2GB range, because this uses
26824 * a relative jump.
26825 */
26826 - rel = (long)op->optinsn.insn - (long)op->kp.addr + RELATIVEJUMP_SIZE;
26827 + rel = (long)op->optinsn.insn - ktla_ktva((long)op->kp.addr) + RELATIVEJUMP_SIZE;
26828 if (abs(rel) > 0x7fffffff) {
26829 __arch_remove_optimized_kprobe(op, 0);
26830 return -ERANGE;
26831 @@ -359,16 +361,18 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op,
26832 op->optinsn.size = ret;
26833
26834 /* Copy arch-dep-instance from template */
26835 - memcpy(buf, &optprobe_template_entry, TMPL_END_IDX);
26836 + pax_open_kernel();
26837 + memcpy(buf, ktla_ktva(&optprobe_template_entry), TMPL_END_IDX);
26838 + pax_close_kernel();
26839
26840 /* Set probe information */
26841 synthesize_set_arg1(buf + TMPL_MOVE_IDX, (unsigned long)op);
26842
26843 /* Set probe function call */
26844 - synthesize_relcall(buf + TMPL_CALL_IDX, optimized_callback);
26845 + synthesize_relcall(ktva_ktla(buf) + TMPL_CALL_IDX, optimized_callback);
26846
26847 /* Set returning jmp instruction at the tail of out-of-line buffer */
26848 - synthesize_reljump(buf + TMPL_END_IDX + op->optinsn.size,
26849 + synthesize_reljump(ktva_ktla(buf) + TMPL_END_IDX + op->optinsn.size,
26850 (u8 *)op->kp.addr + op->optinsn.size);
26851
26852 flush_icache_range((unsigned long) buf,
26853 @@ -393,7 +397,7 @@ void arch_optimize_kprobes(struct list_head *oplist)
26854 WARN_ON(kprobe_disabled(&op->kp));
26855
26856 /* Backup instructions which will be replaced by jump address */
26857 - memcpy(op->optinsn.copied_insn, op->kp.addr + INT3_SIZE,
26858 + memcpy(op->optinsn.copied_insn, ktla_ktva(op->kp.addr) + INT3_SIZE,
26859 RELATIVE_ADDR_SIZE);
26860
26861 insn_buf[0] = RELATIVEJUMP_OPCODE;
26862 @@ -441,7 +445,7 @@ int setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter)
26863 /* This kprobe is really able to run optimized path. */
26864 op = container_of(p, struct optimized_kprobe, kp);
26865 /* Detour through copied instructions */
26866 - regs->ip = (unsigned long)op->optinsn.insn + TMPL_END_IDX;
26867 + regs->ip = ktva_ktla((unsigned long)op->optinsn.insn) + TMPL_END_IDX;
26868 if (!reenter)
26869 reset_current_kprobe();
26870 preempt_enable_no_resched();
26871 diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c
26872 index c2bedae..25e7ab60 100644
26873 --- a/arch/x86/kernel/ksysfs.c
26874 +++ b/arch/x86/kernel/ksysfs.c
26875 @@ -184,7 +184,7 @@ out:
26876
26877 static struct kobj_attribute type_attr = __ATTR_RO(type);
26878
26879 -static struct bin_attribute data_attr = {
26880 +static bin_attribute_no_const data_attr __read_only = {
26881 .attr = {
26882 .name = "data",
26883 .mode = S_IRUGO,
26884 diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
26885 index 49487b4..a94a0d3 100644
26886 --- a/arch/x86/kernel/kvmclock.c
26887 +++ b/arch/x86/kernel/kvmclock.c
26888 @@ -29,7 +29,7 @@
26889 #include <asm/x86_init.h>
26890 #include <asm/reboot.h>
26891
26892 -static int kvmclock = 1;
26893 +static int kvmclock __read_only = 1;
26894 static int msr_kvm_system_time = MSR_KVM_SYSTEM_TIME;
26895 static int msr_kvm_wall_clock = MSR_KVM_WALL_CLOCK;
26896
26897 @@ -41,7 +41,7 @@ static int parse_no_kvmclock(char *arg)
26898 early_param("no-kvmclock", parse_no_kvmclock);
26899
26900 /* The hypervisor will put information about time periodically here */
26901 -static struct pvclock_vsyscall_time_info *hv_clock;
26902 +static struct pvclock_vsyscall_time_info hv_clock[NR_CPUS] __page_aligned_bss;
26903 static struct pvclock_wall_clock wall_clock;
26904
26905 /*
26906 @@ -132,7 +132,7 @@ bool kvm_check_and_clear_guest_paused(void)
26907 struct pvclock_vcpu_time_info *src;
26908 int cpu = smp_processor_id();
26909
26910 - if (!hv_clock)
26911 + if (!kvmclock)
26912 return ret;
26913
26914 src = &hv_clock[cpu].pvti;
26915 @@ -159,7 +159,7 @@ int kvm_register_clock(char *txt)
26916 int low, high, ret;
26917 struct pvclock_vcpu_time_info *src;
26918
26919 - if (!hv_clock)
26920 + if (!kvmclock)
26921 return 0;
26922
26923 src = &hv_clock[cpu].pvti;
26924 @@ -219,7 +219,6 @@ static void kvm_shutdown(void)
26925 void __init kvmclock_init(void)
26926 {
26927 struct pvclock_vcpu_time_info *vcpu_time;
26928 - unsigned long mem;
26929 int size, cpu;
26930 u8 flags;
26931
26932 @@ -237,15 +236,8 @@ void __init kvmclock_init(void)
26933 printk(KERN_INFO "kvm-clock: Using msrs %x and %x",
26934 msr_kvm_system_time, msr_kvm_wall_clock);
26935
26936 - mem = memblock_alloc(size, PAGE_SIZE);
26937 - if (!mem)
26938 - return;
26939 - hv_clock = __va(mem);
26940 - memset(hv_clock, 0, size);
26941 -
26942 if (kvm_register_clock("primary cpu clock")) {
26943 - hv_clock = NULL;
26944 - memblock_free(mem, size);
26945 + kvmclock = 0;
26946 return;
26947 }
26948 pv_time_ops.sched_clock = kvm_clock_read;
26949 @@ -286,7 +278,7 @@ int __init kvm_setup_vsyscall_timeinfo(void)
26950 struct pvclock_vcpu_time_info *vcpu_time;
26951 unsigned int size;
26952
26953 - if (!hv_clock)
26954 + if (!kvmclock)
26955 return 0;
26956
26957 size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS);
26958 diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
26959 index 2bcc052..864eb84 100644
26960 --- a/arch/x86/kernel/ldt.c
26961 +++ b/arch/x86/kernel/ldt.c
26962 @@ -11,6 +11,7 @@
26963 #include <linux/sched.h>
26964 #include <linux/string.h>
26965 #include <linux/mm.h>
26966 +#include <linux/ratelimit.h>
26967 #include <linux/smp.h>
26968 #include <linux/slab.h>
26969 #include <linux/vmalloc.h>
26970 @@ -21,6 +22,14 @@
26971 #include <asm/mmu_context.h>
26972 #include <asm/syscalls.h>
26973
26974 +#ifdef CONFIG_GRKERNSEC
26975 +int sysctl_modify_ldt __read_only = 0;
26976 +#elif defined(CONFIG_DEFAULT_MODIFY_LDT_SYSCALL)
26977 +int sysctl_modify_ldt __read_only = 1;
26978 +#else
26979 +int sysctl_modify_ldt __read_only = 0;
26980 +#endif
26981 +
26982 /* context.lock is held for us, so we don't need any locking. */
26983 static void flush_ldt(void *current_mm)
26984 {
26985 @@ -109,6 +118,23 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
26986 struct mm_struct *old_mm;
26987 int retval = 0;
26988
26989 + if (tsk == current) {
26990 + mm->context.vdso = 0;
26991 +
26992 +#ifdef CONFIG_X86_32
26993 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
26994 + mm->context.user_cs_base = 0UL;
26995 + mm->context.user_cs_limit = ~0UL;
26996 +
26997 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
26998 + cpumask_clear(&mm->context.cpu_user_cs_mask);
26999 +#endif
27000 +
27001 +#endif
27002 +#endif
27003 +
27004 + }
27005 +
27006 mutex_init(&mm->context.lock);
27007 old_mm = current->mm;
27008 if (!old_mm) {
27009 @@ -235,6 +261,14 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
27010 /* The user wants to clear the entry. */
27011 memset(&ldt, 0, sizeof(ldt));
27012 } else {
27013 +
27014 +#ifdef CONFIG_PAX_SEGMEXEC
27015 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && (ldt_info.contents & MODIFY_LDT_CONTENTS_CODE)) {
27016 + error = -EINVAL;
27017 + goto out;
27018 + }
27019 +#endif
27020 +
27021 if (!IS_ENABLED(CONFIG_X86_16BIT) && !ldt_info.seg_32bit) {
27022 error = -EINVAL;
27023 goto out;
27024 @@ -276,6 +310,15 @@ asmlinkage int sys_modify_ldt(int func, void __user *ptr,
27025 {
27026 int ret = -ENOSYS;
27027
27028 + if (!sysctl_modify_ldt) {
27029 + printk_ratelimited(KERN_INFO
27030 + "Denied a call to modify_ldt() from %s[%d] (uid: %d)."
27031 + " Adjust sysctl if this was not an exploit attempt.\n",
27032 + current->comm, task_pid_nr(current),
27033 + from_kuid_munged(current_user_ns(), current_uid()));
27034 + return ret;
27035 + }
27036 +
27037 switch (func) {
27038 case 0:
27039 ret = read_ldt(ptr, bytecount);
27040 diff --git a/arch/x86/kernel/livepatch.c b/arch/x86/kernel/livepatch.c
27041 index ff3c3101d..d7c0cd8 100644
27042 --- a/arch/x86/kernel/livepatch.c
27043 +++ b/arch/x86/kernel/livepatch.c
27044 @@ -41,9 +41,10 @@ int klp_write_module_reloc(struct module *mod, unsigned long type,
27045 int ret, numpages, size = 4;
27046 bool readonly;
27047 unsigned long val;
27048 - unsigned long core = (unsigned long)mod->module_core;
27049 - unsigned long core_ro_size = mod->core_ro_size;
27050 - unsigned long core_size = mod->core_size;
27051 + unsigned long core_rx = (unsigned long)mod->module_core_rx;
27052 + unsigned long core_rw = (unsigned long)mod->module_core_rw;
27053 + unsigned long core_size_rx = mod->core_size_rx;
27054 + unsigned long core_size_rw = mod->core_size_rw;
27055
27056 switch (type) {
27057 case R_X86_64_NONE:
27058 @@ -66,11 +67,12 @@ int klp_write_module_reloc(struct module *mod, unsigned long type,
27059 return -EINVAL;
27060 }
27061
27062 - if (loc < core || loc >= core + core_size)
27063 + if ((loc < core_rx || loc >= core_rx + core_size_rx) &&
27064 + (loc < core_rw || loc >= core_rw + core_size_rw))
27065 /* loc does not point to any symbol inside the module */
27066 return -EINVAL;
27067
27068 - if (loc < core + core_ro_size)
27069 + if (loc < core_rx + core_size_rx)
27070 readonly = true;
27071 else
27072 readonly = false;
27073 diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
27074 index 469b23d..5449cfe 100644
27075 --- a/arch/x86/kernel/machine_kexec_32.c
27076 +++ b/arch/x86/kernel/machine_kexec_32.c
27077 @@ -26,7 +26,7 @@
27078 #include <asm/cacheflush.h>
27079 #include <asm/debugreg.h>
27080
27081 -static void set_idt(void *newidt, __u16 limit)
27082 +static void set_idt(struct desc_struct *newidt, __u16 limit)
27083 {
27084 struct desc_ptr curidt;
27085
27086 @@ -38,7 +38,7 @@ static void set_idt(void *newidt, __u16 limit)
27087 }
27088
27089
27090 -static void set_gdt(void *newgdt, __u16 limit)
27091 +static void set_gdt(struct desc_struct *newgdt, __u16 limit)
27092 {
27093 struct desc_ptr curgdt;
27094
27095 @@ -216,7 +216,7 @@ void machine_kexec(struct kimage *image)
27096 }
27097
27098 control_page = page_address(image->control_code_page);
27099 - memcpy(control_page, relocate_kernel, KEXEC_CONTROL_CODE_MAX_SIZE);
27100 + memcpy(control_page, (void *)ktla_ktva((unsigned long)relocate_kernel), KEXEC_CONTROL_CODE_MAX_SIZE);
27101
27102 relocate_kernel_ptr = control_page;
27103 page_list[PA_CONTROL_PAGE] = __pa(control_page);
27104 diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S
27105 index 94ea120..4154cea 100644
27106 --- a/arch/x86/kernel/mcount_64.S
27107 +++ b/arch/x86/kernel/mcount_64.S
27108 @@ -7,7 +7,7 @@
27109 #include <linux/linkage.h>
27110 #include <asm/ptrace.h>
27111 #include <asm/ftrace.h>
27112 -
27113 +#include <asm/alternative-asm.h>
27114
27115 .code64
27116 .section .entry.text, "ax"
27117 @@ -148,8 +148,9 @@
27118 #ifdef CONFIG_DYNAMIC_FTRACE
27119
27120 ENTRY(function_hook)
27121 + pax_force_retaddr
27122 retq
27123 -END(function_hook)
27124 +ENDPROC(function_hook)
27125
27126 ENTRY(ftrace_caller)
27127 /* save_mcount_regs fills in first two parameters */
27128 @@ -181,8 +182,9 @@ GLOBAL(ftrace_graph_call)
27129 #endif
27130
27131 GLOBAL(ftrace_stub)
27132 + pax_force_retaddr
27133 retq
27134 -END(ftrace_caller)
27135 +ENDPROC(ftrace_caller)
27136
27137 ENTRY(ftrace_regs_caller)
27138 /* Save the current flags before any operations that can change them */
27139 @@ -253,7 +255,7 @@ GLOBAL(ftrace_regs_caller_end)
27140
27141 jmp ftrace_return
27142
27143 -END(ftrace_regs_caller)
27144 +ENDPROC(ftrace_regs_caller)
27145
27146
27147 #else /* ! CONFIG_DYNAMIC_FTRACE */
27148 @@ -272,18 +274,20 @@ fgraph_trace:
27149 #endif
27150
27151 GLOBAL(ftrace_stub)
27152 + pax_force_retaddr
27153 retq
27154
27155 trace:
27156 /* save_mcount_regs fills in first two parameters */
27157 save_mcount_regs
27158
27159 + pax_force_fptr ftrace_trace_function
27160 call *ftrace_trace_function
27161
27162 restore_mcount_regs
27163
27164 jmp fgraph_trace
27165 -END(function_hook)
27166 +ENDPROC(function_hook)
27167 #endif /* CONFIG_DYNAMIC_FTRACE */
27168 #endif /* CONFIG_FUNCTION_TRACER */
27169
27170 @@ -305,8 +309,9 @@ ENTRY(ftrace_graph_caller)
27171
27172 restore_mcount_regs
27173
27174 + pax_force_retaddr
27175 retq
27176 -END(ftrace_graph_caller)
27177 +ENDPROC(ftrace_graph_caller)
27178
27179 GLOBAL(return_to_handler)
27180 subq $24, %rsp
27181 @@ -322,5 +327,7 @@ GLOBAL(return_to_handler)
27182 movq 8(%rsp), %rdx
27183 movq (%rsp), %rax
27184 addq $24, %rsp
27185 + pax_force_fptr %rdi
27186 jmp *%rdi
27187 +ENDPROC(return_to_handler)
27188 #endif
27189 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
27190 index 005c03e..7000fe4 100644
27191 --- a/arch/x86/kernel/module.c
27192 +++ b/arch/x86/kernel/module.c
27193 @@ -75,17 +75,17 @@ static unsigned long int get_module_load_offset(void)
27194 }
27195 #endif
27196
27197 -void *module_alloc(unsigned long size)
27198 +static inline void *__module_alloc(unsigned long size, pgprot_t prot)
27199 {
27200 void *p;
27201
27202 - if (PAGE_ALIGN(size) > MODULES_LEN)
27203 + if (!size || PAGE_ALIGN(size) > MODULES_LEN)
27204 return NULL;
27205
27206 p = __vmalloc_node_range(size, MODULE_ALIGN,
27207 MODULES_VADDR + get_module_load_offset(),
27208 - MODULES_END, GFP_KERNEL | __GFP_HIGHMEM,
27209 - PAGE_KERNEL_EXEC, 0, NUMA_NO_NODE,
27210 + MODULES_END, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO,
27211 + prot, 0, NUMA_NO_NODE,
27212 __builtin_return_address(0));
27213 if (p && (kasan_module_alloc(p, size) < 0)) {
27214 vfree(p);
27215 @@ -95,6 +95,51 @@ void *module_alloc(unsigned long size)
27216 return p;
27217 }
27218
27219 +void *module_alloc(unsigned long size)
27220 +{
27221 +
27222 +#ifdef CONFIG_PAX_KERNEXEC
27223 + return __module_alloc(size, PAGE_KERNEL);
27224 +#else
27225 + return __module_alloc(size, PAGE_KERNEL_EXEC);
27226 +#endif
27227 +
27228 +}
27229 +
27230 +#ifdef CONFIG_PAX_KERNEXEC
27231 +#ifdef CONFIG_X86_32
27232 +void *module_alloc_exec(unsigned long size)
27233 +{
27234 + struct vm_struct *area;
27235 +
27236 + if (size == 0)
27237 + return NULL;
27238 +
27239 + area = __get_vm_area(size, VM_ALLOC, (unsigned long)&MODULES_EXEC_VADDR, (unsigned long)&MODULES_EXEC_END);
27240 +return area ? area->addr : NULL;
27241 +}
27242 +EXPORT_SYMBOL(module_alloc_exec);
27243 +
27244 +void module_memfree_exec(void *module_region)
27245 +{
27246 + vunmap(module_region);
27247 +}
27248 +EXPORT_SYMBOL(module_memfree_exec);
27249 +#else
27250 +void module_memfree_exec(void *module_region)
27251 +{
27252 + module_memfree(module_region);
27253 +}
27254 +EXPORT_SYMBOL(module_memfree_exec);
27255 +
27256 +void *module_alloc_exec(unsigned long size)
27257 +{
27258 + return __module_alloc(size, PAGE_KERNEL_RX);
27259 +}
27260 +EXPORT_SYMBOL(module_alloc_exec);
27261 +#endif
27262 +#endif
27263 +
27264 #ifdef CONFIG_X86_32
27265 int apply_relocate(Elf32_Shdr *sechdrs,
27266 const char *strtab,
27267 @@ -105,14 +150,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
27268 unsigned int i;
27269 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
27270 Elf32_Sym *sym;
27271 - uint32_t *location;
27272 + uint32_t *plocation, location;
27273
27274 DEBUGP("Applying relocate section %u to %u\n",
27275 relsec, sechdrs[relsec].sh_info);
27276 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
27277 /* This is where to make the change */
27278 - location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
27279 - + rel[i].r_offset;
27280 + plocation = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr + rel[i].r_offset;
27281 + location = (uint32_t)plocation;
27282 + if (sechdrs[sechdrs[relsec].sh_info].sh_flags & SHF_EXECINSTR)
27283 + plocation = (uint32_t *)ktla_ktva((unsigned long)plocation);
27284 /* This is the symbol it is referring to. Note that all
27285 undefined symbols have been resolved. */
27286 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
27287 @@ -121,11 +168,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
27288 switch (ELF32_R_TYPE(rel[i].r_info)) {
27289 case R_386_32:
27290 /* We add the value into the location given */
27291 - *location += sym->st_value;
27292 + pax_open_kernel();
27293 + *plocation += sym->st_value;
27294 + pax_close_kernel();
27295 break;
27296 case R_386_PC32:
27297 /* Add the value, subtract its position */
27298 - *location += sym->st_value - (uint32_t)location;
27299 + pax_open_kernel();
27300 + *plocation += sym->st_value - location;
27301 + pax_close_kernel();
27302 break;
27303 default:
27304 pr_err("%s: Unknown relocation: %u\n",
27305 @@ -170,21 +221,30 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
27306 case R_X86_64_NONE:
27307 break;
27308 case R_X86_64_64:
27309 + pax_open_kernel();
27310 *(u64 *)loc = val;
27311 + pax_close_kernel();
27312 break;
27313 case R_X86_64_32:
27314 + pax_open_kernel();
27315 *(u32 *)loc = val;
27316 + pax_close_kernel();
27317 if (val != *(u32 *)loc)
27318 goto overflow;
27319 break;
27320 case R_X86_64_32S:
27321 + pax_open_kernel();
27322 *(s32 *)loc = val;
27323 + pax_close_kernel();
27324 if ((s64)val != *(s32 *)loc)
27325 goto overflow;
27326 break;
27327 case R_X86_64_PC32:
27328 val -= (u64)loc;
27329 + pax_open_kernel();
27330 *(u32 *)loc = val;
27331 + pax_close_kernel();
27332 +
27333 #if 0
27334 if ((s64)val != *(s32 *)loc)
27335 goto overflow;
27336 diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
27337 index 113e707..0a690e1 100644
27338 --- a/arch/x86/kernel/msr.c
27339 +++ b/arch/x86/kernel/msr.c
27340 @@ -39,6 +39,7 @@
27341 #include <linux/notifier.h>
27342 #include <linux/uaccess.h>
27343 #include <linux/gfp.h>
27344 +#include <linux/grsecurity.h>
27345
27346 #include <asm/processor.h>
27347 #include <asm/msr.h>
27348 @@ -105,6 +106,11 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
27349 int err = 0;
27350 ssize_t bytes = 0;
27351
27352 +#ifdef CONFIG_GRKERNSEC_KMEM
27353 + gr_handle_msr_write();
27354 + return -EPERM;
27355 +#endif
27356 +
27357 if (count % 8)
27358 return -EINVAL; /* Invalid chunk size */
27359
27360 @@ -152,6 +158,10 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg)
27361 err = -EBADF;
27362 break;
27363 }
27364 +#ifdef CONFIG_GRKERNSEC_KMEM
27365 + gr_handle_msr_write();
27366 + return -EPERM;
27367 +#endif
27368 if (copy_from_user(&regs, uregs, sizeof regs)) {
27369 err = -EFAULT;
27370 break;
27371 @@ -235,7 +245,7 @@ static int msr_class_cpu_callback(struct notifier_block *nfb,
27372 return notifier_from_errno(err);
27373 }
27374
27375 -static struct notifier_block __refdata msr_class_cpu_notifier = {
27376 +static struct notifier_block msr_class_cpu_notifier = {
27377 .notifier_call = msr_class_cpu_callback,
27378 };
27379
27380 diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
27381 index d05bd2e..f690edd 100644
27382 --- a/arch/x86/kernel/nmi.c
27383 +++ b/arch/x86/kernel/nmi.c
27384 @@ -98,16 +98,16 @@ fs_initcall(nmi_warning_debugfs);
27385
27386 static void nmi_max_handler(struct irq_work *w)
27387 {
27388 - struct nmiaction *a = container_of(w, struct nmiaction, irq_work);
27389 + struct nmiwork *n = container_of(w, struct nmiwork, irq_work);
27390 int remainder_ns, decimal_msecs;
27391 - u64 whole_msecs = ACCESS_ONCE(a->max_duration);
27392 + u64 whole_msecs = ACCESS_ONCE(n->max_duration);
27393
27394 remainder_ns = do_div(whole_msecs, (1000 * 1000));
27395 decimal_msecs = remainder_ns / 1000;
27396
27397 printk_ratelimited(KERN_INFO
27398 "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n",
27399 - a->handler, whole_msecs, decimal_msecs);
27400 + n->action->handler, whole_msecs, decimal_msecs);
27401 }
27402
27403 static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
27404 @@ -134,11 +134,11 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
27405 delta = sched_clock() - delta;
27406 trace_nmi_handler(a->handler, (int)delta, thishandled);
27407
27408 - if (delta < nmi_longest_ns || delta < a->max_duration)
27409 + if (delta < nmi_longest_ns || delta < a->work->max_duration)
27410 continue;
27411
27412 - a->max_duration = delta;
27413 - irq_work_queue(&a->irq_work);
27414 + a->work->max_duration = delta;
27415 + irq_work_queue(&a->work->irq_work);
27416 }
27417
27418 rcu_read_unlock();
27419 @@ -148,7 +148,7 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
27420 }
27421 NOKPROBE_SYMBOL(nmi_handle);
27422
27423 -int __register_nmi_handler(unsigned int type, struct nmiaction *action)
27424 +int __register_nmi_handler(unsigned int type, const struct nmiaction *action)
27425 {
27426 struct nmi_desc *desc = nmi_to_desc(type);
27427 unsigned long flags;
27428 @@ -156,7 +156,8 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
27429 if (!action->handler)
27430 return -EINVAL;
27431
27432 - init_irq_work(&action->irq_work, nmi_max_handler);
27433 + action->work->action = action;
27434 + init_irq_work(&action->work->irq_work, nmi_max_handler);
27435
27436 spin_lock_irqsave(&desc->lock, flags);
27437
27438 @@ -174,9 +175,9 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
27439 * event confuses some handlers (kdump uses this flag)
27440 */
27441 if (action->flags & NMI_FLAG_FIRST)
27442 - list_add_rcu(&action->list, &desc->head);
27443 + pax_list_add_rcu((struct list_head *)&action->list, &desc->head);
27444 else
27445 - list_add_tail_rcu(&action->list, &desc->head);
27446 + pax_list_add_tail_rcu((struct list_head *)&action->list, &desc->head);
27447
27448 spin_unlock_irqrestore(&desc->lock, flags);
27449 return 0;
27450 @@ -199,7 +200,7 @@ void unregister_nmi_handler(unsigned int type, const char *name)
27451 if (!strcmp(n->name, name)) {
27452 WARN(in_nmi(),
27453 "Trying to free NMI (%s) from NMI context!\n", n->name);
27454 - list_del_rcu(&n->list);
27455 + pax_list_del_rcu((struct list_head *)&n->list);
27456 break;
27457 }
27458 }
27459 @@ -481,6 +482,17 @@ static DEFINE_PER_CPU(int, update_debug_stack);
27460 dotraplinkage notrace void
27461 do_nmi(struct pt_regs *regs, long error_code)
27462 {
27463 +
27464 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
27465 + if (!user_mode(regs)) {
27466 + unsigned long cs = regs->cs & 0xFFFF;
27467 + unsigned long ip = ktva_ktla(regs->ip);
27468 +
27469 + if ((cs == __KERNEL_CS || cs == __KERNEXEC_KERNEL_CS) && ip <= (unsigned long)_etext)
27470 + regs->ip = ip;
27471 + }
27472 +#endif
27473 +
27474 if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) {
27475 this_cpu_write(nmi_state, NMI_LATCHED);
27476 return;
27477 diff --git a/arch/x86/kernel/nmi_selftest.c b/arch/x86/kernel/nmi_selftest.c
27478 index 6d9582e..f746287 100644
27479 --- a/arch/x86/kernel/nmi_selftest.c
27480 +++ b/arch/x86/kernel/nmi_selftest.c
27481 @@ -43,7 +43,7 @@ static void __init init_nmi_testsuite(void)
27482 {
27483 /* trap all the unknown NMIs we may generate */
27484 register_nmi_handler(NMI_UNKNOWN, nmi_unk_cb, 0, "nmi_selftest_unk",
27485 - __initdata);
27486 + __initconst);
27487 }
27488
27489 static void __init cleanup_nmi_testsuite(void)
27490 @@ -66,7 +66,7 @@ static void __init test_nmi_ipi(struct cpumask *mask)
27491 unsigned long timeout;
27492
27493 if (register_nmi_handler(NMI_LOCAL, test_nmi_ipi_callback,
27494 - NMI_FLAG_FIRST, "nmi_selftest", __initdata)) {
27495 + NMI_FLAG_FIRST, "nmi_selftest", __initconst)) {
27496 nmi_fail = FAILURE;
27497 return;
27498 }
27499 diff --git a/arch/x86/kernel/paravirt-spinlocks.c b/arch/x86/kernel/paravirt-spinlocks.c
27500 index 33ee3e0..da3519a 100644
27501 --- a/arch/x86/kernel/paravirt-spinlocks.c
27502 +++ b/arch/x86/kernel/paravirt-spinlocks.c
27503 @@ -23,7 +23,7 @@ bool pv_is_native_spin_unlock(void)
27504 }
27505 #endif
27506
27507 -struct pv_lock_ops pv_lock_ops = {
27508 +struct pv_lock_ops pv_lock_ops __read_only = {
27509 #ifdef CONFIG_SMP
27510 #ifdef CONFIG_QUEUED_SPINLOCKS
27511 .queued_spin_lock_slowpath = native_queued_spin_lock_slowpath,
27512 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
27513 index 58bcfb6..0adb7d7 100644
27514 --- a/arch/x86/kernel/paravirt.c
27515 +++ b/arch/x86/kernel/paravirt.c
27516 @@ -56,6 +56,9 @@ u64 _paravirt_ident_64(u64 x)
27517 {
27518 return x;
27519 }
27520 +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
27521 +PV_CALLEE_SAVE_REGS_THUNK(_paravirt_ident_64);
27522 +#endif
27523
27524 void __init default_banner(void)
27525 {
27526 @@ -142,16 +145,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
27527
27528 if (opfunc == NULL)
27529 /* If there's no function, patch it with a ud2a (BUG) */
27530 - ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
27531 - else if (opfunc == _paravirt_nop)
27532 + ret = paravirt_patch_insns(insnbuf, len, (const char *)ktva_ktla((unsigned long)ud2a), ud2a+sizeof(ud2a));
27533 + else if (opfunc == (void *)_paravirt_nop)
27534 /* If the operation is a nop, then nop the callsite */
27535 ret = paravirt_patch_nop();
27536
27537 /* identity functions just return their single argument */
27538 - else if (opfunc == _paravirt_ident_32)
27539 + else if (opfunc == (void *)_paravirt_ident_32)
27540 ret = paravirt_patch_ident_32(insnbuf, len);
27541 - else if (opfunc == _paravirt_ident_64)
27542 + else if (opfunc == (void *)_paravirt_ident_64)
27543 ret = paravirt_patch_ident_64(insnbuf, len);
27544 +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
27545 + else if (opfunc == (void *)__raw_callee_save__paravirt_ident_64)
27546 + ret = paravirt_patch_ident_64(insnbuf, len);
27547 +#endif
27548
27549 else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
27550 #ifdef CONFIG_X86_32
27551 @@ -178,7 +185,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
27552 if (insn_len > len || start == NULL)
27553 insn_len = len;
27554 else
27555 - memcpy(insnbuf, start, insn_len);
27556 + memcpy(insnbuf, (const char *)ktla_ktva((unsigned long)start), insn_len);
27557
27558 return insn_len;
27559 }
27560 @@ -302,7 +309,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
27561 return this_cpu_read(paravirt_lazy_mode);
27562 }
27563
27564 -struct pv_info pv_info = {
27565 +struct pv_info pv_info __read_only = {
27566 .name = "bare hardware",
27567 .paravirt_enabled = 0,
27568 .kernel_rpl = 0,
27569 @@ -313,16 +320,16 @@ struct pv_info pv_info = {
27570 #endif
27571 };
27572
27573 -struct pv_init_ops pv_init_ops = {
27574 +struct pv_init_ops pv_init_ops __read_only = {
27575 .patch = native_patch,
27576 };
27577
27578 -struct pv_time_ops pv_time_ops = {
27579 +struct pv_time_ops pv_time_ops __read_only = {
27580 .sched_clock = native_sched_clock,
27581 .steal_clock = native_steal_clock,
27582 };
27583
27584 -__visible struct pv_irq_ops pv_irq_ops = {
27585 +__visible struct pv_irq_ops pv_irq_ops __read_only = {
27586 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
27587 .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
27588 .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
27589 @@ -334,7 +341,7 @@ __visible struct pv_irq_ops pv_irq_ops = {
27590 #endif
27591 };
27592
27593 -__visible struct pv_cpu_ops pv_cpu_ops = {
27594 +__visible struct pv_cpu_ops pv_cpu_ops __read_only = {
27595 .cpuid = native_cpuid,
27596 .get_debugreg = native_get_debugreg,
27597 .set_debugreg = native_set_debugreg,
27598 @@ -397,21 +404,26 @@ NOKPROBE_SYMBOL(native_get_debugreg);
27599 NOKPROBE_SYMBOL(native_set_debugreg);
27600 NOKPROBE_SYMBOL(native_load_idt);
27601
27602 -struct pv_apic_ops pv_apic_ops = {
27603 +struct pv_apic_ops pv_apic_ops __read_only= {
27604 #ifdef CONFIG_X86_LOCAL_APIC
27605 .startup_ipi_hook = paravirt_nop,
27606 #endif
27607 };
27608
27609 -#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
27610 +#ifdef CONFIG_X86_32
27611 +#ifdef CONFIG_X86_PAE
27612 +/* 64-bit pagetable entries */
27613 +#define PTE_IDENT PV_CALLEE_SAVE(_paravirt_ident_64)
27614 +#else
27615 /* 32-bit pagetable entries */
27616 #define PTE_IDENT __PV_IS_CALLEE_SAVE(_paravirt_ident_32)
27617 +#endif
27618 #else
27619 /* 64-bit pagetable entries */
27620 #define PTE_IDENT __PV_IS_CALLEE_SAVE(_paravirt_ident_64)
27621 #endif
27622
27623 -struct pv_mmu_ops pv_mmu_ops = {
27624 +struct pv_mmu_ops pv_mmu_ops __read_only = {
27625
27626 .read_cr2 = native_read_cr2,
27627 .write_cr2 = native_write_cr2,
27628 @@ -461,6 +473,7 @@ struct pv_mmu_ops pv_mmu_ops = {
27629 .make_pud = PTE_IDENT,
27630
27631 .set_pgd = native_set_pgd,
27632 + .set_pgd_batched = native_set_pgd_batched,
27633 #endif
27634 #endif /* CONFIG_PGTABLE_LEVELS >= 3 */
27635
27636 @@ -481,6 +494,12 @@ struct pv_mmu_ops pv_mmu_ops = {
27637 },
27638
27639 .set_fixmap = native_set_fixmap,
27640 +
27641 +#ifdef CONFIG_PAX_KERNEXEC
27642 + .pax_open_kernel = native_pax_open_kernel,
27643 + .pax_close_kernel = native_pax_close_kernel,
27644 +#endif
27645 +
27646 };
27647
27648 EXPORT_SYMBOL_GPL(pv_time_ops);
27649 diff --git a/arch/x86/kernel/paravirt_patch_64.c b/arch/x86/kernel/paravirt_patch_64.c
27650 index 8aa0558..465512e 100644
27651 --- a/arch/x86/kernel/paravirt_patch_64.c
27652 +++ b/arch/x86/kernel/paravirt_patch_64.c
27653 @@ -9,7 +9,11 @@ DEF_NATIVE(pv_irq_ops, save_fl, "pushfq; popq %rax");
27654 DEF_NATIVE(pv_mmu_ops, read_cr2, "movq %cr2, %rax");
27655 DEF_NATIVE(pv_mmu_ops, read_cr3, "movq %cr3, %rax");
27656 DEF_NATIVE(pv_mmu_ops, write_cr3, "movq %rdi, %cr3");
27657 +
27658 +#ifndef CONFIG_PAX_MEMORY_UDEREF
27659 DEF_NATIVE(pv_mmu_ops, flush_tlb_single, "invlpg (%rdi)");
27660 +#endif
27661 +
27662 DEF_NATIVE(pv_cpu_ops, clts, "clts");
27663 DEF_NATIVE(pv_cpu_ops, wbinvd, "wbinvd");
27664
27665 @@ -62,7 +66,11 @@ unsigned native_patch(u8 type, u16 clobbers, void *ibuf,
27666 PATCH_SITE(pv_mmu_ops, read_cr3);
27667 PATCH_SITE(pv_mmu_ops, write_cr3);
27668 PATCH_SITE(pv_cpu_ops, clts);
27669 +
27670 +#ifndef CONFIG_PAX_MEMORY_UDEREF
27671 PATCH_SITE(pv_mmu_ops, flush_tlb_single);
27672 +#endif
27673 +
27674 PATCH_SITE(pv_cpu_ops, wbinvd);
27675 #if defined(CONFIG_PARAVIRT_SPINLOCKS) && defined(CONFIG_QUEUED_SPINLOCKS)
27676 case PARAVIRT_PATCH(pv_lock_ops.queued_spin_unlock):
27677 diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
27678 index 0497f71..7186c0d 100644
27679 --- a/arch/x86/kernel/pci-calgary_64.c
27680 +++ b/arch/x86/kernel/pci-calgary_64.c
27681 @@ -1347,7 +1347,7 @@ static void __init get_tce_space_from_tar(void)
27682 tce_space = be64_to_cpu(readq(target));
27683 tce_space = tce_space & TAR_SW_BITS;
27684
27685 - tce_space = tce_space & (~specified_table_size);
27686 + tce_space = tce_space & (~(unsigned long)specified_table_size);
27687 info->tce_space = (u64 *)__va(tce_space);
27688 }
27689 }
27690 diff --git a/arch/x86/kernel/pci-iommu_table.c b/arch/x86/kernel/pci-iommu_table.c
27691 index 35ccf75..7a15747 100644
27692 --- a/arch/x86/kernel/pci-iommu_table.c
27693 +++ b/arch/x86/kernel/pci-iommu_table.c
27694 @@ -2,7 +2,7 @@
27695 #include <asm/iommu_table.h>
27696 #include <linux/string.h>
27697 #include <linux/kallsyms.h>
27698 -
27699 +#include <linux/sched.h>
27700
27701 #define DEBUG 1
27702
27703 diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
27704 index adf0392..88a7576 100644
27705 --- a/arch/x86/kernel/pci-swiotlb.c
27706 +++ b/arch/x86/kernel/pci-swiotlb.c
27707 @@ -40,7 +40,7 @@ void x86_swiotlb_free_coherent(struct device *dev, size_t size,
27708 struct dma_attrs *attrs)
27709 {
27710 if (is_swiotlb_buffer(dma_to_phys(dev, dma_addr)))
27711 - swiotlb_free_coherent(dev, size, vaddr, dma_addr);
27712 + swiotlb_free_coherent(dev, size, vaddr, dma_addr, attrs);
27713 else
27714 dma_generic_free_coherent(dev, size, vaddr, dma_addr, attrs);
27715 }
27716 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
27717 index c27cad7..47e3f47 100644
27718 --- a/arch/x86/kernel/process.c
27719 +++ b/arch/x86/kernel/process.c
27720 @@ -15,6 +15,7 @@
27721 #include <linux/dmi.h>
27722 #include <linux/utsname.h>
27723 #include <linux/stackprotector.h>
27724 +#include <linux/kthread.h>
27725 #include <linux/tick.h>
27726 #include <linux/cpuidle.h>
27727 #include <trace/events/power.h>
27728 @@ -37,7 +38,8 @@
27729 * section. Since TSS's are completely CPU-local, we want them
27730 * on exact cacheline boundaries, to eliminate cacheline ping-pong.
27731 */
27732 -__visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss) = {
27733 +struct tss_struct cpu_tss[NR_CPUS] __visible ____cacheline_internodealigned_in_smp = {
27734 + [0 ... NR_CPUS-1] = {
27735 .x86_tss = {
27736 .sp0 = TOP_OF_INIT_STACK,
27737 #ifdef CONFIG_X86_32
27738 @@ -55,6 +57,7 @@ __visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss) = {
27739 */
27740 .io_bitmap = { [0 ... IO_BITMAP_LONGS] = ~0 },
27741 #endif
27742 +}
27743 };
27744 EXPORT_PER_CPU_SYMBOL(cpu_tss);
27745
27746 @@ -75,17 +78,35 @@ void idle_notifier_unregister(struct notifier_block *n)
27747 EXPORT_SYMBOL_GPL(idle_notifier_unregister);
27748 #endif
27749
27750 +struct kmem_cache *fpregs_state_cachep;
27751 +EXPORT_SYMBOL(fpregs_state_cachep);
27752 +
27753 +void __init arch_task_cache_init(void)
27754 +{
27755 + /* create a slab on which task_structs can be allocated */
27756 + fpregs_state_cachep =
27757 + kmem_cache_create("fpregs_state", xstate_size,
27758 + ARCH_MIN_TASKALIGN, SLAB_PANIC | SLAB_NOTRACK | SLAB_USERCOPY, NULL);
27759 +}
27760 +
27761 /*
27762 * this gets called so that we can store lazy state into memory and copy the
27763 * current task into the new thread.
27764 */
27765 int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
27766 {
27767 - memcpy(dst, src, arch_task_struct_size);
27768 + *dst = *src;
27769
27770 + dst->thread.fpu.state = kmem_cache_alloc_node(fpregs_state_cachep, GFP_KERNEL, tsk_fork_get_node(src));
27771 return fpu__copy(&dst->thread.fpu, &src->thread.fpu);
27772 }
27773
27774 +void arch_release_task_struct(struct task_struct *tsk)
27775 +{
27776 + kmem_cache_free(fpregs_state_cachep, tsk->thread.fpu.state);
27777 + tsk->thread.fpu.state = NULL;
27778 +}
27779 +
27780 /*
27781 * Free current thread data structures etc..
27782 */
27783 @@ -97,7 +118,7 @@ void exit_thread(void)
27784 struct fpu *fpu = &t->fpu;
27785
27786 if (bp) {
27787 - struct tss_struct *tss = &per_cpu(cpu_tss, get_cpu());
27788 + struct tss_struct *tss = cpu_tss + get_cpu();
27789
27790 t->io_bitmap_ptr = NULL;
27791 clear_thread_flag(TIF_IO_BITMAP);
27792 @@ -117,6 +138,9 @@ void flush_thread(void)
27793 {
27794 struct task_struct *tsk = current;
27795
27796 +#if defined(CONFIG_X86_32) && !defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_PAX_MEMORY_UDEREF)
27797 + loadsegment(gs, 0);
27798 +#endif
27799 flush_ptrace_hw_breakpoint(tsk);
27800 memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
27801
27802 @@ -258,7 +282,7 @@ static void __exit_idle(void)
27803 void exit_idle(void)
27804 {
27805 /* idle loop has pid 0 */
27806 - if (current->pid)
27807 + if (task_pid_nr(current))
27808 return;
27809 __exit_idle();
27810 }
27811 @@ -311,7 +335,7 @@ bool xen_set_default_idle(void)
27812 return ret;
27813 }
27814 #endif
27815 -void stop_this_cpu(void *dummy)
27816 +__noreturn void stop_this_cpu(void *dummy)
27817 {
27818 local_irq_disable();
27819 /*
27820 @@ -488,16 +512,40 @@ static int __init idle_setup(char *str)
27821 }
27822 early_param("idle", idle_setup);
27823
27824 -unsigned long arch_align_stack(unsigned long sp)
27825 -{
27826 - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
27827 - sp -= get_random_int() % 8192;
27828 - return sp & ~0xf;
27829 -}
27830 -
27831 unsigned long arch_randomize_brk(struct mm_struct *mm)
27832 {
27833 unsigned long range_end = mm->brk + 0x02000000;
27834 return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
27835 }
27836
27837 +#ifdef CONFIG_PAX_RANDKSTACK
27838 +void pax_randomize_kstack(struct pt_regs *regs)
27839 +{
27840 + struct thread_struct *thread = &current->thread;
27841 + unsigned long time;
27842 +
27843 + if (!randomize_va_space)
27844 + return;
27845 +
27846 + if (v8086_mode(regs))
27847 + return;
27848 +
27849 + rdtscl(time);
27850 +
27851 + /* P4 seems to return a 0 LSB, ignore it */
27852 +#ifdef CONFIG_MPENTIUM4
27853 + time &= 0x3EUL;
27854 + time <<= 2;
27855 +#elif defined(CONFIG_X86_64)
27856 + time &= 0xFUL;
27857 + time <<= 4;
27858 +#else
27859 + time &= 0x1FUL;
27860 + time <<= 3;
27861 +#endif
27862 +
27863 + thread->sp0 ^= time;
27864 + load_sp0(cpu_tss + smp_processor_id(), thread);
27865 + this_cpu_write(cpu_current_top_of_stack, thread->sp0);
27866 +}
27867 +#endif
27868 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
27869 index f73c962..6589332 100644
27870 --- a/arch/x86/kernel/process_32.c
27871 +++ b/arch/x86/kernel/process_32.c
27872 @@ -63,6 +63,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
27873 unsigned long thread_saved_pc(struct task_struct *tsk)
27874 {
27875 return ((unsigned long *)tsk->thread.sp)[3];
27876 +//XXX return tsk->thread.eip;
27877 }
27878
27879 void __show_regs(struct pt_regs *regs, int all)
27880 @@ -75,16 +76,15 @@ void __show_regs(struct pt_regs *regs, int all)
27881 if (user_mode(regs)) {
27882 sp = regs->sp;
27883 ss = regs->ss & 0xffff;
27884 - gs = get_user_gs(regs);
27885 } else {
27886 sp = kernel_stack_pointer(regs);
27887 savesegment(ss, ss);
27888 - savesegment(gs, gs);
27889 }
27890 + gs = get_user_gs(regs);
27891
27892 printk(KERN_DEFAULT "EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n",
27893 (u16)regs->cs, regs->ip, regs->flags,
27894 - smp_processor_id());
27895 + raw_smp_processor_id());
27896 print_symbol("EIP is at %s\n", regs->ip);
27897
27898 printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
27899 @@ -131,21 +131,22 @@ void release_thread(struct task_struct *dead_task)
27900 int copy_thread_tls(unsigned long clone_flags, unsigned long sp,
27901 unsigned long arg, struct task_struct *p, unsigned long tls)
27902 {
27903 - struct pt_regs *childregs = task_pt_regs(p);
27904 + struct pt_regs *childregs = task_stack_page(p) + THREAD_SIZE - sizeof(struct pt_regs) - 8;
27905 struct task_struct *tsk;
27906 int err;
27907
27908 p->thread.sp = (unsigned long) childregs;
27909 p->thread.sp0 = (unsigned long) (childregs+1);
27910 + p->tinfo.lowest_stack = (unsigned long)task_stack_page(p) + 2 * sizeof(unsigned long);
27911 memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
27912
27913 if (unlikely(p->flags & PF_KTHREAD)) {
27914 /* kernel thread */
27915 memset(childregs, 0, sizeof(struct pt_regs));
27916 p->thread.ip = (unsigned long) ret_from_kernel_thread;
27917 - task_user_gs(p) = __KERNEL_STACK_CANARY;
27918 - childregs->ds = __USER_DS;
27919 - childregs->es = __USER_DS;
27920 + savesegment(gs, childregs->gs);
27921 + childregs->ds = __KERNEL_DS;
27922 + childregs->es = __KERNEL_DS;
27923 childregs->fs = __KERNEL_PERCPU;
27924 childregs->bx = sp; /* function */
27925 childregs->bp = arg;
27926 @@ -245,7 +246,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
27927 struct fpu *prev_fpu = &prev->fpu;
27928 struct fpu *next_fpu = &next->fpu;
27929 int cpu = smp_processor_id();
27930 - struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
27931 + struct tss_struct *tss = cpu_tss + cpu;
27932 fpu_switch_t fpu_switch;
27933
27934 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
27935 @@ -264,6 +265,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
27936 */
27937 lazy_save_gs(prev->gs);
27938
27939 +#ifdef CONFIG_PAX_MEMORY_UDEREF
27940 + __set_fs(task_thread_info(next_p)->addr_limit);
27941 +#endif
27942 +
27943 /*
27944 * Load the per-thread Thread-Local Storage descriptor.
27945 */
27946 @@ -307,9 +312,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
27947 * current_thread_info().
27948 */
27949 load_sp0(tss, next);
27950 - this_cpu_write(cpu_current_top_of_stack,
27951 - (unsigned long)task_stack_page(next_p) +
27952 - THREAD_SIZE);
27953 + this_cpu_write(current_task, next_p);
27954 + this_cpu_write(current_tinfo, &next_p->tinfo);
27955 + this_cpu_write(cpu_current_top_of_stack, next->sp0);
27956
27957 /*
27958 * Restore %gs if needed (which is common)
27959 @@ -319,8 +324,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
27960
27961 switch_fpu_finish(next_fpu, fpu_switch);
27962
27963 - this_cpu_write(current_task, next_p);
27964 -
27965 return prev_p;
27966 }
27967
27968 @@ -350,4 +353,3 @@ unsigned long get_wchan(struct task_struct *p)
27969 } while (count++ < 16);
27970 return 0;
27971 }
27972 -
27973 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
27974 index f6b9163..1ab8c96 100644
27975 --- a/arch/x86/kernel/process_64.c
27976 +++ b/arch/x86/kernel/process_64.c
27977 @@ -157,9 +157,10 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp,
27978 struct pt_regs *childregs;
27979 struct task_struct *me = current;
27980
27981 - p->thread.sp0 = (unsigned long)task_stack_page(p) + THREAD_SIZE;
27982 + p->thread.sp0 = (unsigned long)task_stack_page(p) + THREAD_SIZE - 16;
27983 childregs = task_pt_regs(p);
27984 p->thread.sp = (unsigned long) childregs;
27985 + p->tinfo.lowest_stack = (unsigned long)task_stack_page(p) + 2 * sizeof(unsigned long);
27986 set_tsk_thread_flag(p, TIF_FORK);
27987 p->thread.io_bitmap_ptr = NULL;
27988
27989 @@ -169,6 +170,8 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long sp,
27990 p->thread.fs = p->thread.fsindex ? 0 : me->thread.fs;
27991 savesegment(es, p->thread.es);
27992 savesegment(ds, p->thread.ds);
27993 + savesegment(ss, p->thread.ss);
27994 + BUG_ON(p->thread.ss == __UDEREF_KERNEL_DS);
27995 memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
27996
27997 if (unlikely(p->flags & PF_KTHREAD)) {
27998 @@ -276,7 +279,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
27999 struct fpu *prev_fpu = &prev->fpu;
28000 struct fpu *next_fpu = &next->fpu;
28001 int cpu = smp_processor_id();
28002 - struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
28003 + struct tss_struct *tss = cpu_tss + cpu;
28004 unsigned fsindex, gsindex;
28005 fpu_switch_t fpu_switch;
28006
28007 @@ -327,6 +330,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
28008 if (unlikely(next->ds | prev->ds))
28009 loadsegment(ds, next->ds);
28010
28011 + savesegment(ss, prev->ss);
28012 + if (unlikely(next->ss != prev->ss))
28013 + loadsegment(ss, next->ss);
28014 +
28015 /*
28016 * Switch FS and GS.
28017 *
28018 @@ -398,6 +405,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
28019 * Switch the PDA and FPU contexts.
28020 */
28021 this_cpu_write(current_task, next_p);
28022 + this_cpu_write(current_tinfo, &next_p->tinfo);
28023
28024 /*
28025 * If it were not for PREEMPT_ACTIVE we could guarantee that the
28026 @@ -410,6 +418,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
28027 /* Reload esp0 and ss1. This changes current_thread_info(). */
28028 load_sp0(tss, next);
28029
28030 + this_cpu_write(cpu_current_top_of_stack, next->sp0);
28031 +
28032 /*
28033 * Now maybe reload the debug registers and handle I/O bitmaps
28034 */
28035 @@ -506,12 +516,11 @@ unsigned long get_wchan(struct task_struct *p)
28036 if (!p || p == current || p->state == TASK_RUNNING)
28037 return 0;
28038 stack = (unsigned long)task_stack_page(p);
28039 - if (p->thread.sp < stack || p->thread.sp >= stack+THREAD_SIZE)
28040 + if (p->thread.sp < stack || p->thread.sp > stack+THREAD_SIZE-16-sizeof(u64))
28041 return 0;
28042 fp = *(u64 *)(p->thread.sp);
28043 do {
28044 - if (fp < (unsigned long)stack ||
28045 - fp >= (unsigned long)stack+THREAD_SIZE)
28046 + if (fp < stack || fp > stack+THREAD_SIZE-16-sizeof(u64))
28047 return 0;
28048 ip = *(u64 *)(fp+8);
28049 if (!in_sched_functions(ip))
28050 diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
28051 index 9be72bc..f4329c5 100644
28052 --- a/arch/x86/kernel/ptrace.c
28053 +++ b/arch/x86/kernel/ptrace.c
28054 @@ -186,10 +186,10 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs)
28055 unsigned long sp = (unsigned long)&regs->sp;
28056 u32 *prev_esp;
28057
28058 - if (context == (sp & ~(THREAD_SIZE - 1)))
28059 + if (context == ((sp + 8) & ~(THREAD_SIZE - 1)))
28060 return sp;
28061
28062 - prev_esp = (u32 *)(context);
28063 + prev_esp = *(u32 **)(context);
28064 if (prev_esp)
28065 return (unsigned long)prev_esp;
28066
28067 @@ -446,6 +446,20 @@ static int putreg(struct task_struct *child,
28068 if (child->thread.gs != value)
28069 return do_arch_prctl(child, ARCH_SET_GS, value);
28070 return 0;
28071 +
28072 + case offsetof(struct user_regs_struct,ip):
28073 + /*
28074 + * Protect against any attempt to set ip to an
28075 + * impossible address. There are dragons lurking if the
28076 + * address is noncanonical. (This explicitly allows
28077 + * setting ip to TASK_SIZE_MAX, because user code can do
28078 + * that all by itself by running off the end of its
28079 + * address space.
28080 + */
28081 + if (value > TASK_SIZE_MAX)
28082 + return -EIO;
28083 + break;
28084 +
28085 #endif
28086 }
28087
28088 @@ -582,7 +596,7 @@ static void ptrace_triggered(struct perf_event *bp,
28089 static unsigned long ptrace_get_dr7(struct perf_event *bp[])
28090 {
28091 int i;
28092 - int dr7 = 0;
28093 + unsigned long dr7 = 0;
28094 struct arch_hw_breakpoint *info;
28095
28096 for (i = 0; i < HBP_NUM; i++) {
28097 @@ -816,7 +830,7 @@ long arch_ptrace(struct task_struct *child, long request,
28098 unsigned long addr, unsigned long data)
28099 {
28100 int ret;
28101 - unsigned long __user *datap = (unsigned long __user *)data;
28102 + unsigned long __user *datap = (__force unsigned long __user *)data;
28103
28104 switch (request) {
28105 /* read the word at location addr in the USER area. */
28106 @@ -901,14 +915,14 @@ long arch_ptrace(struct task_struct *child, long request,
28107 if ((int) addr < 0)
28108 return -EIO;
28109 ret = do_get_thread_area(child, addr,
28110 - (struct user_desc __user *)data);
28111 + (__force struct user_desc __user *) data);
28112 break;
28113
28114 case PTRACE_SET_THREAD_AREA:
28115 if ((int) addr < 0)
28116 return -EIO;
28117 ret = do_set_thread_area(child, addr,
28118 - (struct user_desc __user *)data, 0);
28119 + (__force struct user_desc __user *) data, 0);
28120 break;
28121 #endif
28122
28123 @@ -1286,7 +1300,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
28124
28125 #ifdef CONFIG_X86_64
28126
28127 -static struct user_regset x86_64_regsets[] __read_mostly = {
28128 +static user_regset_no_const x86_64_regsets[] __read_only = {
28129 [REGSET_GENERAL] = {
28130 .core_note_type = NT_PRSTATUS,
28131 .n = sizeof(struct user_regs_struct) / sizeof(long),
28132 @@ -1327,7 +1341,7 @@ static const struct user_regset_view user_x86_64_view = {
28133 #endif /* CONFIG_X86_64 */
28134
28135 #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
28136 -static struct user_regset x86_32_regsets[] __read_mostly = {
28137 +static user_regset_no_const x86_32_regsets[] __read_only = {
28138 [REGSET_GENERAL] = {
28139 .core_note_type = NT_PRSTATUS,
28140 .n = sizeof(struct user_regs_struct32) / sizeof(u32),
28141 @@ -1380,7 +1394,7 @@ static const struct user_regset_view user_x86_32_view = {
28142 */
28143 u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS];
28144
28145 -void update_regset_xstate_info(unsigned int size, u64 xstate_mask)
28146 +void __init update_regset_xstate_info(unsigned int size, u64 xstate_mask)
28147 {
28148 #ifdef CONFIG_X86_64
28149 x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64);
28150 @@ -1415,7 +1429,7 @@ static void fill_sigtrap_info(struct task_struct *tsk,
28151 memset(info, 0, sizeof(*info));
28152 info->si_signo = SIGTRAP;
28153 info->si_code = si_code;
28154 - info->si_addr = user_mode(regs) ? (void __user *)regs->ip : NULL;
28155 + info->si_addr = user_mode(regs) ? (__force void __user *)regs->ip : NULL;
28156 }
28157
28158 void user_single_step_siginfo(struct task_struct *tsk,
28159 @@ -1449,6 +1463,10 @@ static void do_audit_syscall_entry(struct pt_regs *regs, u32 arch)
28160 }
28161 }
28162
28163 +#ifdef CONFIG_GRKERNSEC_SETXID
28164 +extern void gr_delayed_cred_worker(void);
28165 +#endif
28166 +
28167 /*
28168 * We can return 0 to resume the syscall or anything else to go to phase
28169 * 2. If we resume the syscall, we need to put something appropriate in
28170 @@ -1556,6 +1574,11 @@ long syscall_trace_enter_phase2(struct pt_regs *regs, u32 arch,
28171
28172 BUG_ON(regs != task_pt_regs(current));
28173
28174 +#ifdef CONFIG_GRKERNSEC_SETXID
28175 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
28176 + gr_delayed_cred_worker();
28177 +#endif
28178 +
28179 /*
28180 * If we stepped into a sysenter/syscall insn, it trapped in
28181 * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP.
28182 @@ -1614,6 +1637,11 @@ void syscall_trace_leave(struct pt_regs *regs)
28183 */
28184 user_exit();
28185
28186 +#ifdef CONFIG_GRKERNSEC_SETXID
28187 + if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
28188 + gr_delayed_cred_worker();
28189 +#endif
28190 +
28191 audit_syscall_exit(regs);
28192
28193 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
28194 diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c
28195 index 2f355d2..e75ed0a 100644
28196 --- a/arch/x86/kernel/pvclock.c
28197 +++ b/arch/x86/kernel/pvclock.c
28198 @@ -51,11 +51,11 @@ void pvclock_touch_watchdogs(void)
28199 reset_hung_task_detector();
28200 }
28201
28202 -static atomic64_t last_value = ATOMIC64_INIT(0);
28203 +static atomic64_unchecked_t last_value = ATOMIC64_INIT(0);
28204
28205 void pvclock_resume(void)
28206 {
28207 - atomic64_set(&last_value, 0);
28208 + atomic64_set_unchecked(&last_value, 0);
28209 }
28210
28211 u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src)
28212 @@ -105,11 +105,11 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
28213 * updating at the same time, and one of them could be slightly behind,
28214 * making the assumption that last_value always go forward fail to hold.
28215 */
28216 - last = atomic64_read(&last_value);
28217 + last = atomic64_read_unchecked(&last_value);
28218 do {
28219 if (ret < last)
28220 return last;
28221 - last = atomic64_cmpxchg(&last_value, last, ret);
28222 + last = atomic64_cmpxchg_unchecked(&last_value, last, ret);
28223 } while (unlikely(last != ret));
28224
28225 return ret;
28226 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
28227 index 86db4bc..a50a54a 100644
28228 --- a/arch/x86/kernel/reboot.c
28229 +++ b/arch/x86/kernel/reboot.c
28230 @@ -70,6 +70,11 @@ static int __init set_bios_reboot(const struct dmi_system_id *d)
28231
28232 void __noreturn machine_real_restart(unsigned int type)
28233 {
28234 +
28235 +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF))
28236 + struct desc_struct *gdt;
28237 +#endif
28238 +
28239 local_irq_disable();
28240
28241 /*
28242 @@ -97,7 +102,29 @@ void __noreturn machine_real_restart(unsigned int type)
28243
28244 /* Jump to the identity-mapped low memory code */
28245 #ifdef CONFIG_X86_32
28246 - asm volatile("jmpl *%0" : :
28247 +
28248 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
28249 + gdt = get_cpu_gdt_table(smp_processor_id());
28250 + pax_open_kernel();
28251 +#ifdef CONFIG_PAX_MEMORY_UDEREF
28252 + gdt[GDT_ENTRY_KERNEL_DS].type = 3;
28253 + gdt[GDT_ENTRY_KERNEL_DS].limit = 0xf;
28254 + loadsegment(ds, __KERNEL_DS);
28255 + loadsegment(es, __KERNEL_DS);
28256 + loadsegment(ss, __KERNEL_DS);
28257 +#endif
28258 +#ifdef CONFIG_PAX_KERNEXEC
28259 + gdt[GDT_ENTRY_KERNEL_CS].base0 = 0;
28260 + gdt[GDT_ENTRY_KERNEL_CS].base1 = 0;
28261 + gdt[GDT_ENTRY_KERNEL_CS].base2 = 0;
28262 + gdt[GDT_ENTRY_KERNEL_CS].limit0 = 0xffff;
28263 + gdt[GDT_ENTRY_KERNEL_CS].limit = 0xf;
28264 + gdt[GDT_ENTRY_KERNEL_CS].g = 1;
28265 +#endif
28266 + pax_close_kernel();
28267 +#endif
28268 +
28269 + asm volatile("ljmpl *%0" : :
28270 "rm" (real_mode_header->machine_real_restart_asm),
28271 "a" (type));
28272 #else
28273 @@ -137,7 +164,7 @@ static int __init set_kbd_reboot(const struct dmi_system_id *d)
28274 /*
28275 * This is a single dmi_table handling all reboot quirks.
28276 */
28277 -static struct dmi_system_id __initdata reboot_dmi_table[] = {
28278 +static const struct dmi_system_id __initconst reboot_dmi_table[] = {
28279
28280 /* Acer */
28281 { /* Handle reboot issue on Acer Aspire one */
28282 @@ -511,7 +538,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
28283 * This means that this function can never return, it can misbehave
28284 * by not rebooting properly and hanging.
28285 */
28286 -static void native_machine_emergency_restart(void)
28287 +static void __noreturn native_machine_emergency_restart(void)
28288 {
28289 int i;
28290 int attempt = 0;
28291 @@ -631,13 +658,13 @@ void native_machine_shutdown(void)
28292 #endif
28293 }
28294
28295 -static void __machine_emergency_restart(int emergency)
28296 +static void __noreturn __machine_emergency_restart(int emergency)
28297 {
28298 reboot_emergency = emergency;
28299 machine_ops.emergency_restart();
28300 }
28301
28302 -static void native_machine_restart(char *__unused)
28303 +static void __noreturn native_machine_restart(char *__unused)
28304 {
28305 pr_notice("machine restart\n");
28306
28307 @@ -646,7 +673,7 @@ static void native_machine_restart(char *__unused)
28308 __machine_emergency_restart(0);
28309 }
28310
28311 -static void native_machine_halt(void)
28312 +static void __noreturn native_machine_halt(void)
28313 {
28314 /* Stop other cpus and apics */
28315 machine_shutdown();
28316 @@ -656,7 +683,7 @@ static void native_machine_halt(void)
28317 stop_this_cpu(NULL);
28318 }
28319
28320 -static void native_machine_power_off(void)
28321 +static void __noreturn native_machine_power_off(void)
28322 {
28323 if (pm_power_off) {
28324 if (!reboot_force)
28325 @@ -665,9 +692,10 @@ static void native_machine_power_off(void)
28326 }
28327 /* A fallback in case there is no PM info available */
28328 tboot_shutdown(TB_SHUTDOWN_HALT);
28329 + unreachable();
28330 }
28331
28332 -struct machine_ops machine_ops = {
28333 +struct machine_ops machine_ops __read_only = {
28334 .power_off = native_machine_power_off,
28335 .shutdown = native_machine_shutdown,
28336 .emergency_restart = native_machine_emergency_restart,
28337 diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c
28338 index c8e41e9..64049ef 100644
28339 --- a/arch/x86/kernel/reboot_fixups_32.c
28340 +++ b/arch/x86/kernel/reboot_fixups_32.c
28341 @@ -57,7 +57,7 @@ struct device_fixup {
28342 unsigned int vendor;
28343 unsigned int device;
28344 void (*reboot_fixup)(struct pci_dev *);
28345 -};
28346 +} __do_const;
28347
28348 /*
28349 * PCI ids solely used for fixups_table go here
28350 diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S
28351 index 98111b3..73ca125 100644
28352 --- a/arch/x86/kernel/relocate_kernel_64.S
28353 +++ b/arch/x86/kernel/relocate_kernel_64.S
28354 @@ -96,8 +96,7 @@ relocate_kernel:
28355
28356 /* jump to identity mapped page */
28357 addq $(identity_mapped - relocate_kernel), %r8
28358 - pushq %r8
28359 - ret
28360 + jmp *%r8
28361
28362 identity_mapped:
28363 /* set return address to 0 if not preserving context */
28364 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
28365 index 80f874b..b3eff67 100644
28366 --- a/arch/x86/kernel/setup.c
28367 +++ b/arch/x86/kernel/setup.c
28368 @@ -111,6 +111,7 @@
28369 #include <asm/mce.h>
28370 #include <asm/alternative.h>
28371 #include <asm/prom.h>
28372 +#include <asm/boot.h>
28373
28374 /*
28375 * max_low_pfn_mapped: highest direct mapped pfn under 4GB
28376 @@ -206,10 +207,12 @@ EXPORT_SYMBOL(boot_cpu_data);
28377 #endif
28378
28379
28380 -#if !defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64)
28381 -__visible unsigned long mmu_cr4_features;
28382 +#ifdef CONFIG_X86_64
28383 +__visible unsigned long mmu_cr4_features __read_only = X86_CR4_PSE | X86_CR4_PAE | X86_CR4_PGE;
28384 +#elif defined(CONFIG_X86_PAE)
28385 +__visible unsigned long mmu_cr4_features __read_only = X86_CR4_PAE;
28386 #else
28387 -__visible unsigned long mmu_cr4_features = X86_CR4_PAE;
28388 +__visible unsigned long mmu_cr4_features __read_only;
28389 #endif
28390
28391 /* Boot loader ID and version as integers, for the benefit of proc_dointvec */
28392 @@ -772,7 +775,7 @@ static void __init trim_bios_range(void)
28393 * area (640->1Mb) as ram even though it is not.
28394 * take them out.
28395 */
28396 - e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1);
28397 + e820_remove_range(ISA_START_ADDRESS, ISA_END_ADDRESS - ISA_START_ADDRESS, E820_RAM, 1);
28398
28399 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
28400 }
28401 @@ -780,7 +783,7 @@ static void __init trim_bios_range(void)
28402 /* called before trim_bios_range() to spare extra sanitize */
28403 static void __init e820_add_kernel_range(void)
28404 {
28405 - u64 start = __pa_symbol(_text);
28406 + u64 start = __pa_symbol(ktla_ktva((unsigned long)_text));
28407 u64 size = __pa_symbol(_end) - start;
28408
28409 /*
28410 @@ -861,8 +864,8 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p)
28411
28412 void __init setup_arch(char **cmdline_p)
28413 {
28414 - memblock_reserve(__pa_symbol(_text),
28415 - (unsigned long)__bss_stop - (unsigned long)_text);
28416 + memblock_reserve(__pa_symbol(ktla_ktva((unsigned long)_text)),
28417 + (unsigned long)__bss_stop - ktla_ktva((unsigned long)_text));
28418
28419 early_reserve_initrd();
28420
28421 @@ -960,16 +963,16 @@ void __init setup_arch(char **cmdline_p)
28422
28423 if (!boot_params.hdr.root_flags)
28424 root_mountflags &= ~MS_RDONLY;
28425 - init_mm.start_code = (unsigned long) _text;
28426 - init_mm.end_code = (unsigned long) _etext;
28427 - init_mm.end_data = (unsigned long) _edata;
28428 + init_mm.start_code = ktla_ktva((unsigned long)_text);
28429 + init_mm.end_code = ktla_ktva((unsigned long)_etext);
28430 + init_mm.end_data = (unsigned long)_edata;
28431 init_mm.brk = _brk_end;
28432
28433 mpx_mm_init(&init_mm);
28434
28435 - code_resource.start = __pa_symbol(_text);
28436 - code_resource.end = __pa_symbol(_etext)-1;
28437 - data_resource.start = __pa_symbol(_etext);
28438 + code_resource.start = __pa_symbol(ktla_ktva((unsigned long)_text));
28439 + code_resource.end = __pa_symbol(ktla_ktva((unsigned long)_etext))-1;
28440 + data_resource.start = __pa_symbol(_sdata);
28441 data_resource.end = __pa_symbol(_edata)-1;
28442 bss_resource.start = __pa_symbol(__bss_start);
28443 bss_resource.end = __pa_symbol(__bss_stop)-1;
28444 diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
28445 index e4fcb87..9c06c55 100644
28446 --- a/arch/x86/kernel/setup_percpu.c
28447 +++ b/arch/x86/kernel/setup_percpu.c
28448 @@ -21,19 +21,17 @@
28449 #include <asm/cpu.h>
28450 #include <asm/stackprotector.h>
28451
28452 -DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number);
28453 +#ifdef CONFIG_SMP
28454 +DEFINE_PER_CPU_READ_MOSTLY(unsigned int, cpu_number);
28455 EXPORT_PER_CPU_SYMBOL(cpu_number);
28456 +#endif
28457
28458 -#ifdef CONFIG_X86_64
28459 #define BOOT_PERCPU_OFFSET ((unsigned long)__per_cpu_load)
28460 -#else
28461 -#define BOOT_PERCPU_OFFSET 0
28462 -#endif
28463
28464 DEFINE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET;
28465 EXPORT_PER_CPU_SYMBOL(this_cpu_off);
28466
28467 -unsigned long __per_cpu_offset[NR_CPUS] __read_mostly = {
28468 +unsigned long __per_cpu_offset[NR_CPUS] __read_only = {
28469 [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET,
28470 };
28471 EXPORT_SYMBOL(__per_cpu_offset);
28472 @@ -66,7 +64,7 @@ static bool __init pcpu_need_numa(void)
28473 {
28474 #ifdef CONFIG_NEED_MULTIPLE_NODES
28475 pg_data_t *last = NULL;
28476 - unsigned int cpu;
28477 + int cpu;
28478
28479 for_each_possible_cpu(cpu) {
28480 int node = early_cpu_to_node(cpu);
28481 @@ -155,10 +153,10 @@ static inline void setup_percpu_segment(int cpu)
28482 {
28483 #ifdef CONFIG_X86_32
28484 struct desc_struct gdt;
28485 + unsigned long base = per_cpu_offset(cpu);
28486
28487 - pack_descriptor(&gdt, per_cpu_offset(cpu), 0xFFFFF,
28488 - 0x2 | DESCTYPE_S, 0x8);
28489 - gdt.s = 1;
28490 + pack_descriptor(&gdt, base, (VMALLOC_END - base - 1) >> PAGE_SHIFT,
28491 + 0x83 | DESCTYPE_S, 0xC);
28492 write_gdt_entry(get_cpu_gdt_table(cpu),
28493 GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
28494 #endif
28495 @@ -219,6 +217,11 @@ void __init setup_per_cpu_areas(void)
28496 /* alrighty, percpu areas up and running */
28497 delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
28498 for_each_possible_cpu(cpu) {
28499 +#ifdef CONFIG_CC_STACKPROTECTOR
28500 +#ifdef CONFIG_X86_32
28501 + unsigned long canary = per_cpu(stack_canary.canary, cpu);
28502 +#endif
28503 +#endif
28504 per_cpu_offset(cpu) = delta + pcpu_unit_offsets[cpu];
28505 per_cpu(this_cpu_off, cpu) = per_cpu_offset(cpu);
28506 per_cpu(cpu_number, cpu) = cpu;
28507 @@ -259,6 +262,12 @@ void __init setup_per_cpu_areas(void)
28508 */
28509 set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
28510 #endif
28511 +#ifdef CONFIG_CC_STACKPROTECTOR
28512 +#ifdef CONFIG_X86_32
28513 + if (!cpu)
28514 + per_cpu(stack_canary.canary, cpu) = canary;
28515 +#endif
28516 +#endif
28517 /*
28518 * Up to this point, the boot CPU has been using .init.data
28519 * area. Reload any changed state for the boot CPU.
28520 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
28521 index 71820c4..ad16f6b 100644
28522 --- a/arch/x86/kernel/signal.c
28523 +++ b/arch/x86/kernel/signal.c
28524 @@ -189,7 +189,7 @@ static unsigned long align_sigframe(unsigned long sp)
28525 * Align the stack pointer according to the i386 ABI,
28526 * i.e. so that on function entry ((sp + 4) & 15) == 0.
28527 */
28528 - sp = ((sp + 4) & -16ul) - 4;
28529 + sp = ((sp - 12) & -16ul) - 4;
28530 #else /* !CONFIG_X86_32 */
28531 sp = round_down(sp, 16) - 8;
28532 #endif
28533 @@ -298,10 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
28534 }
28535
28536 if (current->mm->context.vdso)
28537 - restorer = current->mm->context.vdso +
28538 - selected_vdso32->sym___kernel_sigreturn;
28539 + restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_sigreturn);
28540 else
28541 - restorer = &frame->retcode;
28542 + restorer = (void __user *)&frame->retcode;
28543 if (ksig->ka.sa.sa_flags & SA_RESTORER)
28544 restorer = ksig->ka.sa.sa_restorer;
28545
28546 @@ -315,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
28547 * reasons and because gdb uses it as a signature to notice
28548 * signal handler stack frames.
28549 */
28550 - err |= __put_user(*((u64 *)&retcode), (u64 *)frame->retcode);
28551 + err |= __put_user(*((u64 *)&retcode), (u64 __user *)frame->retcode);
28552
28553 if (err)
28554 return -EFAULT;
28555 @@ -362,8 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
28556 save_altstack_ex(&frame->uc.uc_stack, regs->sp);
28557
28558 /* Set up to return from userspace. */
28559 - restorer = current->mm->context.vdso +
28560 - selected_vdso32->sym___kernel_rt_sigreturn;
28561 + if (current->mm->context.vdso)
28562 + restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_rt_sigreturn);
28563 + else
28564 + restorer = (void __user *)&frame->retcode;
28565 if (ksig->ka.sa.sa_flags & SA_RESTORER)
28566 restorer = ksig->ka.sa.sa_restorer;
28567 put_user_ex(restorer, &frame->pretcode);
28568 @@ -375,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
28569 * reasons and because gdb uses it as a signature to notice
28570 * signal handler stack frames.
28571 */
28572 - put_user_ex(*((u64 *)&rt_retcode), (u64 *)frame->retcode);
28573 + put_user_ex(*((u64 *)&rt_retcode), (u64 __user *)frame->retcode);
28574 } put_user_catch(err);
28575
28576 err |= copy_siginfo_to_user(&frame->info, &ksig->info);
28577 @@ -611,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
28578 {
28579 int usig = ksig->sig;
28580 sigset_t *set = sigmask_to_save();
28581 - compat_sigset_t *cset = (compat_sigset_t *) set;
28582 + sigset_t sigcopy;
28583 + compat_sigset_t *cset;
28584 +
28585 + sigcopy = *set;
28586 +
28587 + cset = (compat_sigset_t *) &sigcopy;
28588
28589 /* Set up the stack frame */
28590 if (is_ia32_frame()) {
28591 @@ -622,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
28592 } else if (is_x32_frame()) {
28593 return x32_setup_rt_frame(ksig, cset, regs);
28594 } else {
28595 - return __setup_rt_frame(ksig->sig, ksig, set, regs);
28596 + return __setup_rt_frame(ksig->sig, ksig, &sigcopy, regs);
28597 }
28598 }
28599
28600 diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
28601 index 15aaa69..66103af 100644
28602 --- a/arch/x86/kernel/smp.c
28603 +++ b/arch/x86/kernel/smp.c
28604 @@ -334,7 +334,7 @@ static int __init nonmi_ipi_setup(char *str)
28605
28606 __setup("nonmi_ipi", nonmi_ipi_setup);
28607
28608 -struct smp_ops smp_ops = {
28609 +struct smp_ops smp_ops __read_only = {
28610 .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu,
28611 .smp_prepare_cpus = native_smp_prepare_cpus,
28612 .smp_cpus_done = native_smp_cpus_done,
28613 diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
28614 index b1f3ed9c..b76221b 100644
28615 --- a/arch/x86/kernel/smpboot.c
28616 +++ b/arch/x86/kernel/smpboot.c
28617 @@ -220,14 +220,17 @@ static void notrace start_secondary(void *unused)
28618
28619 enable_start_cpu0 = 0;
28620
28621 -#ifdef CONFIG_X86_32
28622 + /* otherwise gcc will move up smp_processor_id before the cpu_init */
28623 + barrier();
28624 +
28625 /* switch away from the initial page table */
28626 +#ifdef CONFIG_PAX_PER_CPU_PGD
28627 + load_cr3(get_cpu_pgd(smp_processor_id(), kernel));
28628 +#else
28629 load_cr3(swapper_pg_dir);
28630 +#endif
28631 __flush_tlb_all();
28632 -#endif
28633
28634 - /* otherwise gcc will move up smp_processor_id before the cpu_init */
28635 - barrier();
28636 /*
28637 * Check TSC synchronization with the BP:
28638 */
28639 @@ -808,16 +811,15 @@ void common_cpu_up(unsigned int cpu, struct task_struct *idle)
28640 alternatives_enable_smp();
28641
28642 per_cpu(current_task, cpu) = idle;
28643 + per_cpu(current_tinfo, cpu) = &idle->tinfo;
28644
28645 #ifdef CONFIG_X86_32
28646 - /* Stack for startup_32 can be just as for start_secondary onwards */
28647 irq_ctx_init(cpu);
28648 - per_cpu(cpu_current_top_of_stack, cpu) =
28649 - (unsigned long)task_stack_page(idle) + THREAD_SIZE;
28650 #else
28651 clear_tsk_thread_flag(idle, TIF_FORK);
28652 initial_gs = per_cpu_offset(cpu);
28653 #endif
28654 + per_cpu(cpu_current_top_of_stack, cpu) = (unsigned long)task_stack_page(idle) - 16 + THREAD_SIZE;
28655 }
28656
28657 /*
28658 @@ -838,9 +840,11 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
28659 unsigned long timeout;
28660
28661 idle->thread.sp = (unsigned long) (((struct pt_regs *)
28662 - (THREAD_SIZE + task_stack_page(idle))) - 1);
28663 + (THREAD_SIZE - 16 + task_stack_page(idle))) - 1);
28664
28665 + pax_open_kernel();
28666 early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
28667 + pax_close_kernel();
28668 initial_code = (unsigned long)start_secondary;
28669 stack_start = idle->thread.sp;
28670
28671 @@ -992,6 +996,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
28672
28673 common_cpu_up(cpu, tidle);
28674
28675 +#ifdef CONFIG_PAX_PER_CPU_PGD
28676 + clone_pgd_range(get_cpu_pgd(cpu, kernel) + KERNEL_PGD_BOUNDARY,
28677 + swapper_pg_dir + KERNEL_PGD_BOUNDARY,
28678 + KERNEL_PGD_PTRS);
28679 + clone_pgd_range(get_cpu_pgd(cpu, user) + KERNEL_PGD_BOUNDARY,
28680 + swapper_pg_dir + KERNEL_PGD_BOUNDARY,
28681 + KERNEL_PGD_PTRS);
28682 +#endif
28683 +
28684 /*
28685 * We have to walk the irq descriptors to setup the vector
28686 * space for the cpu which comes online. Prevent irq
28687 diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
28688 index 0ccb53a..fbc4759 100644
28689 --- a/arch/x86/kernel/step.c
28690 +++ b/arch/x86/kernel/step.c
28691 @@ -44,7 +44,8 @@ unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *re
28692 addr += base;
28693 }
28694 mutex_unlock(&child->mm->context.lock);
28695 - }
28696 + } else if (seg == __KERNEL_CS || seg == __KERNEXEC_KERNEL_CS)
28697 + addr = ktla_ktva(addr);
28698
28699 return addr;
28700 }
28701 @@ -55,6 +56,9 @@ static int is_setting_trap_flag(struct task_struct *child, struct pt_regs *regs)
28702 unsigned char opcode[15];
28703 unsigned long addr = convert_ip_to_linear(child, regs);
28704
28705 + if (addr == -EINVAL)
28706 + return 0;
28707 +
28708 copied = access_process_vm(child, addr, opcode, sizeof(opcode), 0);
28709 for (i = 0; i < copied; i++) {
28710 switch (opcode[i]) {
28711 diff --git a/arch/x86/kernel/sys_i386_32.c b/arch/x86/kernel/sys_i386_32.c
28712 new file mode 100644
28713 index 0000000..5877189
28714 --- /dev/null
28715 +++ b/arch/x86/kernel/sys_i386_32.c
28716 @@ -0,0 +1,189 @@
28717 +/*
28718 + * This file contains various random system calls that
28719 + * have a non-standard calling sequence on the Linux/i386
28720 + * platform.
28721 + */
28722 +
28723 +#include <linux/errno.h>
28724 +#include <linux/sched.h>
28725 +#include <linux/mm.h>
28726 +#include <linux/fs.h>
28727 +#include <linux/smp.h>
28728 +#include <linux/sem.h>
28729 +#include <linux/msg.h>
28730 +#include <linux/shm.h>
28731 +#include <linux/stat.h>
28732 +#include <linux/syscalls.h>
28733 +#include <linux/mman.h>
28734 +#include <linux/file.h>
28735 +#include <linux/utsname.h>
28736 +#include <linux/ipc.h>
28737 +#include <linux/elf.h>
28738 +
28739 +#include <linux/uaccess.h>
28740 +#include <linux/unistd.h>
28741 +
28742 +#include <asm/syscalls.h>
28743 +
28744 +int i386_mmap_check(unsigned long addr, unsigned long len, unsigned long flags)
28745 +{
28746 + unsigned long pax_task_size = TASK_SIZE;
28747 +
28748 +#ifdef CONFIG_PAX_SEGMEXEC
28749 + if (current->mm->pax_flags & MF_PAX_SEGMEXEC)
28750 + pax_task_size = SEGMEXEC_TASK_SIZE;
28751 +#endif
28752 +
28753 + if (flags & MAP_FIXED)
28754 + if (len > pax_task_size || addr > pax_task_size - len)
28755 + return -EINVAL;
28756 +
28757 + return 0;
28758 +}
28759 +
28760 +/*
28761 + * Align a virtual address to avoid aliasing in the I$ on AMD F15h.
28762 + */
28763 +static unsigned long get_align_mask(void)
28764 +{
28765 + if (va_align.flags < 0 || !(va_align.flags & ALIGN_VA_32))
28766 + return 0;
28767 +
28768 + if (!(current->flags & PF_RANDOMIZE))
28769 + return 0;
28770 +
28771 + return va_align.mask;
28772 +}
28773 +
28774 +unsigned long
28775 +arch_get_unmapped_area(struct file *filp, unsigned long addr,
28776 + unsigned long len, unsigned long pgoff, unsigned long flags)
28777 +{
28778 + struct mm_struct *mm = current->mm;
28779 + struct vm_area_struct *vma;
28780 + unsigned long pax_task_size = TASK_SIZE;
28781 + struct vm_unmapped_area_info info;
28782 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
28783 +
28784 +#ifdef CONFIG_PAX_SEGMEXEC
28785 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
28786 + pax_task_size = SEGMEXEC_TASK_SIZE;
28787 +#endif
28788 +
28789 + pax_task_size -= PAGE_SIZE;
28790 +
28791 + if (len > pax_task_size)
28792 + return -ENOMEM;
28793 +
28794 + if (flags & MAP_FIXED)
28795 + return addr;
28796 +
28797 +#ifdef CONFIG_PAX_RANDMMAP
28798 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
28799 +#endif
28800 +
28801 + if (addr) {
28802 + addr = PAGE_ALIGN(addr);
28803 + if (pax_task_size - len >= addr) {
28804 + vma = find_vma(mm, addr);
28805 + if (check_heap_stack_gap(vma, addr, len, offset))
28806 + return addr;
28807 + }
28808 + }
28809 +
28810 + info.flags = 0;
28811 + info.length = len;
28812 + info.align_mask = filp ? get_align_mask() : 0;
28813 + info.align_offset = pgoff << PAGE_SHIFT;
28814 + info.threadstack_offset = offset;
28815 +
28816 +#ifdef CONFIG_PAX_PAGEEXEC
28817 + if (!(__supported_pte_mask & _PAGE_NX) && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE)) {
28818 + info.low_limit = 0x00110000UL;
28819 + info.high_limit = mm->start_code;
28820 +
28821 +#ifdef CONFIG_PAX_RANDMMAP
28822 + if (mm->pax_flags & MF_PAX_RANDMMAP)
28823 + info.low_limit += mm->delta_mmap & 0x03FFF000UL;
28824 +#endif
28825 +
28826 + if (info.low_limit < info.high_limit) {
28827 + addr = vm_unmapped_area(&info);
28828 + if (!IS_ERR_VALUE(addr))
28829 + return addr;
28830 + }
28831 + } else
28832 +#endif
28833 +
28834 + info.low_limit = mm->mmap_base;
28835 + info.high_limit = pax_task_size;
28836 +
28837 + return vm_unmapped_area(&info);
28838 +}
28839 +
28840 +unsigned long
28841 +arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
28842 + const unsigned long len, const unsigned long pgoff,
28843 + const unsigned long flags)
28844 +{
28845 + struct vm_area_struct *vma;
28846 + struct mm_struct *mm = current->mm;
28847 + unsigned long addr = addr0, pax_task_size = TASK_SIZE;
28848 + struct vm_unmapped_area_info info;
28849 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
28850 +
28851 +#ifdef CONFIG_PAX_SEGMEXEC
28852 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
28853 + pax_task_size = SEGMEXEC_TASK_SIZE;
28854 +#endif
28855 +
28856 + pax_task_size -= PAGE_SIZE;
28857 +
28858 + /* requested length too big for entire address space */
28859 + if (len > pax_task_size)
28860 + return -ENOMEM;
28861 +
28862 + if (flags & MAP_FIXED)
28863 + return addr;
28864 +
28865 +#ifdef CONFIG_PAX_PAGEEXEC
28866 + if (!(__supported_pte_mask & _PAGE_NX) && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE))
28867 + goto bottomup;
28868 +#endif
28869 +
28870 +#ifdef CONFIG_PAX_RANDMMAP
28871 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
28872 +#endif
28873 +
28874 + /* requesting a specific address */
28875 + if (addr) {
28876 + addr = PAGE_ALIGN(addr);
28877 + if (pax_task_size - len >= addr) {
28878 + vma = find_vma(mm, addr);
28879 + if (check_heap_stack_gap(vma, addr, len, offset))
28880 + return addr;
28881 + }
28882 + }
28883 +
28884 + info.flags = VM_UNMAPPED_AREA_TOPDOWN;
28885 + info.length = len;
28886 + info.low_limit = PAGE_SIZE;
28887 + info.high_limit = mm->mmap_base;
28888 + info.align_mask = filp ? get_align_mask() : 0;
28889 + info.align_offset = pgoff << PAGE_SHIFT;
28890 + info.threadstack_offset = offset;
28891 +
28892 + addr = vm_unmapped_area(&info);
28893 + if (!(addr & ~PAGE_MASK))
28894 + return addr;
28895 + VM_BUG_ON(addr != -ENOMEM);
28896 +
28897 +bottomup:
28898 + /*
28899 + * A failed mmap() very likely causes application failure,
28900 + * so fall back to the bottom-up function here. This scenario
28901 + * can happen with large stack limits and large mmap()
28902 + * allocations.
28903 + */
28904 + return arch_get_unmapped_area(filp, addr0, len, pgoff, flags);
28905 +}
28906 diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
28907 index 10e0272..b4bb9a7 100644
28908 --- a/arch/x86/kernel/sys_x86_64.c
28909 +++ b/arch/x86/kernel/sys_x86_64.c
28910 @@ -97,8 +97,8 @@ out:
28911 return error;
28912 }
28913
28914 -static void find_start_end(unsigned long flags, unsigned long *begin,
28915 - unsigned long *end)
28916 +static void find_start_end(struct mm_struct *mm, unsigned long flags,
28917 + unsigned long *begin, unsigned long *end)
28918 {
28919 if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT)) {
28920 unsigned long new_begin;
28921 @@ -117,7 +117,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
28922 *begin = new_begin;
28923 }
28924 } else {
28925 - *begin = current->mm->mmap_legacy_base;
28926 + *begin = mm->mmap_legacy_base;
28927 *end = TASK_SIZE;
28928 }
28929 }
28930 @@ -130,20 +130,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
28931 struct vm_area_struct *vma;
28932 struct vm_unmapped_area_info info;
28933 unsigned long begin, end;
28934 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
28935
28936 if (flags & MAP_FIXED)
28937 return addr;
28938
28939 - find_start_end(flags, &begin, &end);
28940 + find_start_end(mm, flags, &begin, &end);
28941
28942 if (len > end)
28943 return -ENOMEM;
28944
28945 +#ifdef CONFIG_PAX_RANDMMAP
28946 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
28947 +#endif
28948 +
28949 if (addr) {
28950 addr = PAGE_ALIGN(addr);
28951 vma = find_vma(mm, addr);
28952 - if (end - len >= addr &&
28953 - (!vma || addr + len <= vma->vm_start))
28954 + if (end - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
28955 return addr;
28956 }
28957
28958 @@ -157,6 +161,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
28959 info.align_mask = get_align_mask();
28960 info.align_offset += get_align_bits();
28961 }
28962 + info.threadstack_offset = offset;
28963 return vm_unmapped_area(&info);
28964 }
28965
28966 @@ -169,6 +174,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
28967 struct mm_struct *mm = current->mm;
28968 unsigned long addr = addr0;
28969 struct vm_unmapped_area_info info;
28970 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
28971
28972 /* requested length too big for entire address space */
28973 if (len > TASK_SIZE)
28974 @@ -181,12 +187,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
28975 if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT))
28976 goto bottomup;
28977
28978 +#ifdef CONFIG_PAX_RANDMMAP
28979 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
28980 +#endif
28981 +
28982 /* requesting a specific address */
28983 if (addr) {
28984 addr = PAGE_ALIGN(addr);
28985 vma = find_vma(mm, addr);
28986 - if (TASK_SIZE - len >= addr &&
28987 - (!vma || addr + len <= vma->vm_start))
28988 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
28989 return addr;
28990 }
28991
28992 @@ -200,6 +209,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
28993 info.align_mask = get_align_mask();
28994 info.align_offset += get_align_bits();
28995 }
28996 + info.threadstack_offset = offset;
28997 addr = vm_unmapped_area(&info);
28998 if (!(addr & ~PAGE_MASK))
28999 return addr;
29000 diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c
29001 index 91a4496..42fc304 100644
29002 --- a/arch/x86/kernel/tboot.c
29003 +++ b/arch/x86/kernel/tboot.c
29004 @@ -44,6 +44,7 @@
29005 #include <asm/setup.h>
29006 #include <asm/e820.h>
29007 #include <asm/io.h>
29008 +#include <asm/tlbflush.h>
29009
29010 #include "../realmode/rm/wakeup.h"
29011
29012 @@ -221,7 +222,7 @@ static int tboot_setup_sleep(void)
29013
29014 void tboot_shutdown(u32 shutdown_type)
29015 {
29016 - void (*shutdown)(void);
29017 + void (* __noreturn shutdown)(void);
29018
29019 if (!tboot_enabled())
29020 return;
29021 @@ -242,8 +243,9 @@ void tboot_shutdown(u32 shutdown_type)
29022 tboot->shutdown_type = shutdown_type;
29023
29024 switch_to_tboot_pt();
29025 + cr4_clear_bits(X86_CR4_PCIDE);
29026
29027 - shutdown = (void(*)(void))(unsigned long)tboot->shutdown_entry;
29028 + shutdown = (void *)(unsigned long)tboot->shutdown_entry;
29029 shutdown();
29030
29031 /* should not reach here */
29032 @@ -310,7 +312,7 @@ static int tboot_extended_sleep(u8 sleep_state, u32 val_a, u32 val_b)
29033 return -ENODEV;
29034 }
29035
29036 -static atomic_t ap_wfs_count;
29037 +static atomic_unchecked_t ap_wfs_count;
29038
29039 static int tboot_wait_for_aps(int num_aps)
29040 {
29041 @@ -334,9 +336,9 @@ static int tboot_cpu_callback(struct notifier_block *nfb, unsigned long action,
29042 {
29043 switch (action) {
29044 case CPU_DYING:
29045 - atomic_inc(&ap_wfs_count);
29046 + atomic_inc_unchecked(&ap_wfs_count);
29047 if (num_online_cpus() == 1)
29048 - if (tboot_wait_for_aps(atomic_read(&ap_wfs_count)))
29049 + if (tboot_wait_for_aps(atomic_read_unchecked(&ap_wfs_count)))
29050 return NOTIFY_BAD;
29051 break;
29052 }
29053 @@ -422,7 +424,7 @@ static __init int tboot_late_init(void)
29054
29055 tboot_create_trampoline();
29056
29057 - atomic_set(&ap_wfs_count, 0);
29058 + atomic_set_unchecked(&ap_wfs_count, 0);
29059 register_hotcpu_notifier(&tboot_cpu_notifier);
29060
29061 #ifdef CONFIG_DEBUG_FS
29062 diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c
29063 index d39c091..1df4349 100644
29064 --- a/arch/x86/kernel/time.c
29065 +++ b/arch/x86/kernel/time.c
29066 @@ -32,7 +32,7 @@ unsigned long profile_pc(struct pt_regs *regs)
29067
29068 if (!user_mode(regs) && in_lock_functions(pc)) {
29069 #ifdef CONFIG_FRAME_POINTER
29070 - return *(unsigned long *)(regs->bp + sizeof(long));
29071 + return ktla_ktva(*(unsigned long *)(regs->bp + sizeof(long)));
29072 #else
29073 unsigned long *sp =
29074 (unsigned long *)kernel_stack_pointer(regs);
29075 @@ -41,11 +41,17 @@ unsigned long profile_pc(struct pt_regs *regs)
29076 * or above a saved flags. Eflags has bits 22-31 zero,
29077 * kernel addresses don't.
29078 */
29079 +
29080 +#ifdef CONFIG_PAX_KERNEXEC
29081 + return ktla_ktva(sp[0]);
29082 +#else
29083 if (sp[0] >> 22)
29084 return sp[0];
29085 if (sp[1] >> 22)
29086 return sp[1];
29087 #endif
29088 +
29089 +#endif
29090 }
29091 return pc;
29092 }
29093 diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
29094 index 7fc5e84..c6e445a 100644
29095 --- a/arch/x86/kernel/tls.c
29096 +++ b/arch/x86/kernel/tls.c
29097 @@ -139,6 +139,11 @@ int do_set_thread_area(struct task_struct *p, int idx,
29098 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
29099 return -EINVAL;
29100
29101 +#ifdef CONFIG_PAX_SEGMEXEC
29102 + if ((p->mm->pax_flags & MF_PAX_SEGMEXEC) && (info.contents & MODIFY_LDT_CONTENTS_CODE))
29103 + return -EINVAL;
29104 +#endif
29105 +
29106 set_tls_desc(p, idx, &info, 1);
29107
29108 return 0;
29109 @@ -256,7 +261,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
29110
29111 if (kbuf)
29112 info = kbuf;
29113 - else if (__copy_from_user(infobuf, ubuf, count))
29114 + else if (count > sizeof infobuf || __copy_from_user(infobuf, ubuf, count))
29115 return -EFAULT;
29116 else
29117 info = infobuf;
29118 diff --git a/arch/x86/kernel/tracepoint.c b/arch/x86/kernel/tracepoint.c
29119 index 1c113db..287b42e 100644
29120 --- a/arch/x86/kernel/tracepoint.c
29121 +++ b/arch/x86/kernel/tracepoint.c
29122 @@ -9,11 +9,11 @@
29123 #include <linux/atomic.h>
29124
29125 atomic_t trace_idt_ctr = ATOMIC_INIT(0);
29126 -struct desc_ptr trace_idt_descr = { NR_VECTORS * 16 - 1,
29127 +const struct desc_ptr trace_idt_descr = { NR_VECTORS * 16 - 1,
29128 (unsigned long) trace_idt_table };
29129
29130 /* No need to be aligned, but done to keep all IDTs defined the same way. */
29131 -gate_desc trace_idt_table[NR_VECTORS] __page_aligned_bss;
29132 +gate_desc trace_idt_table[NR_VECTORS] __page_aligned_rodata;
29133
29134 static int trace_irq_vector_refcount;
29135 static DEFINE_MUTEX(irq_vector_mutex);
29136 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
29137 index f579192..aed90b8 100644
29138 --- a/arch/x86/kernel/traps.c
29139 +++ b/arch/x86/kernel/traps.c
29140 @@ -69,7 +69,7 @@
29141 #include <asm/proto.h>
29142
29143 /* No need to be aligned, but done to keep all IDTs defined the same way. */
29144 -gate_desc debug_idt_table[NR_VECTORS] __page_aligned_bss;
29145 +gate_desc debug_idt_table[NR_VECTORS] __page_aligned_rodata;
29146 #else
29147 #include <asm/processor-flags.h>
29148 #include <asm/setup.h>
29149 @@ -77,7 +77,7 @@ gate_desc debug_idt_table[NR_VECTORS] __page_aligned_bss;
29150 #endif
29151
29152 /* Must be page-aligned because the real IDT is used in a fixmap. */
29153 -gate_desc idt_table[NR_VECTORS] __page_aligned_bss;
29154 +gate_desc idt_table[NR_VECTORS] __page_aligned_rodata;
29155
29156 DECLARE_BITMAP(used_vectors, NR_VECTORS);
29157 EXPORT_SYMBOL_GPL(used_vectors);
29158 @@ -174,7 +174,7 @@ void ist_begin_non_atomic(struct pt_regs *regs)
29159 * will catch asm bugs and any attempt to use ist_preempt_enable
29160 * from double_fault.
29161 */
29162 - BUG_ON((unsigned long)(current_top_of_stack() -
29163 + BUG_ON((unsigned long)(current_top_of_stack(smp_processor_id()) -
29164 current_stack_pointer()) >= THREAD_SIZE);
29165
29166 preempt_count_sub(HARDIRQ_OFFSET);
29167 @@ -191,7 +191,7 @@ void ist_end_non_atomic(void)
29168 }
29169
29170 static nokprobe_inline int
29171 -do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
29172 +do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str,
29173 struct pt_regs *regs, long error_code)
29174 {
29175 if (v8086_mode(regs)) {
29176 @@ -211,8 +211,20 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
29177 if (!fixup_exception(regs)) {
29178 tsk->thread.error_code = error_code;
29179 tsk->thread.trap_nr = trapnr;
29180 +
29181 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
29182 + if (trapnr == X86_TRAP_SS && ((regs->cs & 0xFFFF) == __KERNEL_CS || (regs->cs & 0xFFFF) == __KERNEXEC_KERNEL_CS))
29183 + str = "PAX: suspicious stack segment fault";
29184 +#endif
29185 +
29186 die(str, regs, error_code);
29187 }
29188 +
29189 +#ifdef CONFIG_PAX_REFCOUNT
29190 + if (trapnr == X86_TRAP_OF)
29191 + pax_report_refcount_overflow(regs);
29192 +#endif
29193 +
29194 return 0;
29195 }
29196
29197 @@ -251,7 +263,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr,
29198 }
29199
29200 static void
29201 -do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
29202 +do_trap(int trapnr, int signr, const char *str, struct pt_regs *regs,
29203 long error_code, siginfo_t *info)
29204 {
29205 struct task_struct *tsk = current;
29206 @@ -275,7 +287,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
29207 if (show_unhandled_signals && unhandled_signal(tsk, signr) &&
29208 printk_ratelimit()) {
29209 pr_info("%s[%d] trap %s ip:%lx sp:%lx error:%lx",
29210 - tsk->comm, tsk->pid, str,
29211 + tsk->comm, task_pid_nr(tsk), str,
29212 regs->ip, regs->sp, error_code);
29213 print_vma_addr(" in ", regs->ip);
29214 pr_cont("\n");
29215 @@ -357,6 +369,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
29216 tsk->thread.error_code = error_code;
29217 tsk->thread.trap_nr = X86_TRAP_DF;
29218
29219 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
29220 + if ((unsigned long)tsk->stack - regs->sp <= PAGE_SIZE)
29221 + die("grsec: kernel stack overflow detected", regs, error_code);
29222 +#endif
29223 +
29224 #ifdef CONFIG_DOUBLEFAULT
29225 df_debug(regs, error_code);
29226 #endif
29227 @@ -473,11 +490,35 @@ do_general_protection(struct pt_regs *regs, long error_code)
29228 tsk->thread.error_code = error_code;
29229 tsk->thread.trap_nr = X86_TRAP_GP;
29230 if (notify_die(DIE_GPF, "general protection fault", regs, error_code,
29231 - X86_TRAP_GP, SIGSEGV) != NOTIFY_STOP)
29232 + X86_TRAP_GP, SIGSEGV) != NOTIFY_STOP) {
29233 +
29234 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
29235 + if ((regs->cs & 0xFFFF) == __KERNEL_CS || (regs->cs & 0xFFFF) == __KERNEXEC_KERNEL_CS)
29236 + die("PAX: suspicious general protection fault", regs, error_code);
29237 + else
29238 +#endif
29239 +
29240 die("general protection fault", regs, error_code);
29241 + }
29242 goto exit;
29243 }
29244
29245 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
29246 + if (!(__supported_pte_mask & _PAGE_NX) && tsk->mm && (tsk->mm->pax_flags & MF_PAX_PAGEEXEC)) {
29247 + struct mm_struct *mm = tsk->mm;
29248 + unsigned long limit;
29249 +
29250 + down_write(&mm->mmap_sem);
29251 + limit = mm->context.user_cs_limit;
29252 + if (limit < TASK_SIZE) {
29253 + track_exec_limit(mm, limit, TASK_SIZE, VM_EXEC);
29254 + up_write(&mm->mmap_sem);
29255 + return;
29256 + }
29257 + up_write(&mm->mmap_sem);
29258 + }
29259 +#endif
29260 +
29261 tsk->thread.error_code = error_code;
29262 tsk->thread.trap_nr = X86_TRAP_GP;
29263
29264 @@ -576,6 +617,9 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s)
29265 container_of(task_pt_regs(current),
29266 struct bad_iret_stack, regs);
29267
29268 + if ((current->thread.sp0 ^ (unsigned long)s) < THREAD_SIZE)
29269 + new_stack = s;
29270 +
29271 /* Copy the IRET target to the new stack. */
29272 memmove(&new_stack->regs.ip, (void *)s->regs.sp, 5*8);
29273
29274 diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
29275 index 7437b41..45f6250 100644
29276 --- a/arch/x86/kernel/tsc.c
29277 +++ b/arch/x86/kernel/tsc.c
29278 @@ -150,7 +150,7 @@ static void cyc2ns_write_end(int cpu, struct cyc2ns_data *data)
29279 */
29280 smp_wmb();
29281
29282 - ACCESS_ONCE(c2n->head) = data;
29283 + ACCESS_ONCE_RW(c2n->head) = data;
29284 }
29285
29286 /*
29287 diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
29288 index 6647624..2056791 100644
29289 --- a/arch/x86/kernel/uprobes.c
29290 +++ b/arch/x86/kernel/uprobes.c
29291 @@ -978,7 +978,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
29292
29293 if (nleft != rasize) {
29294 pr_err("uprobe: return address clobbered: pid=%d, %%sp=%#lx, "
29295 - "%%ip=%#lx\n", current->pid, regs->sp, regs->ip);
29296 + "%%ip=%#lx\n", task_pid_nr(current), regs->sp, regs->ip);
29297
29298 force_sig_info(SIGSEGV, SEND_SIG_FORCED, current);
29299 }
29300 diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S
29301 index b9242ba..50c5edd 100644
29302 --- a/arch/x86/kernel/verify_cpu.S
29303 +++ b/arch/x86/kernel/verify_cpu.S
29304 @@ -20,6 +20,7 @@
29305 * arch/x86/boot/compressed/head_64.S: Boot cpu verification
29306 * arch/x86/kernel/trampoline_64.S: secondary processor verification
29307 * arch/x86/kernel/head_32.S: processor startup
29308 + * arch/x86/kernel/acpi/realmode/wakeup.S: 32bit processor resume
29309 *
29310 * verify_cpu, returns the status of longmode and SSE in register %eax.
29311 * 0: Success 1: Failure
29312 diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
29313 index fc9db6e..2c5865d 100644
29314 --- a/arch/x86/kernel/vm86_32.c
29315 +++ b/arch/x86/kernel/vm86_32.c
29316 @@ -44,6 +44,7 @@
29317 #include <linux/ptrace.h>
29318 #include <linux/audit.h>
29319 #include <linux/stddef.h>
29320 +#include <linux/grsecurity.h>
29321
29322 #include <asm/uaccess.h>
29323 #include <asm/io.h>
29324 @@ -150,7 +151,7 @@ struct pt_regs *save_v86_state(struct kernel_vm86_regs *regs)
29325 do_exit(SIGSEGV);
29326 }
29327
29328 - tss = &per_cpu(cpu_tss, get_cpu());
29329 + tss = cpu_tss + get_cpu();
29330 current->thread.sp0 = current->thread.saved_sp0;
29331 current->thread.sysenter_cs = __KERNEL_CS;
29332 load_sp0(tss, &current->thread);
29333 @@ -214,6 +215,14 @@ SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, v86)
29334
29335 if (tsk->thread.saved_sp0)
29336 return -EPERM;
29337 +
29338 +#ifdef CONFIG_GRKERNSEC_VM86
29339 + if (!capable(CAP_SYS_RAWIO)) {
29340 + gr_handle_vm86();
29341 + return -EPERM;
29342 + }
29343 +#endif
29344 +
29345 tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs,
29346 offsetof(struct kernel_vm86_struct, vm86plus) -
29347 sizeof(info.regs));
29348 @@ -238,6 +247,13 @@ SYSCALL_DEFINE2(vm86, unsigned long, cmd, unsigned long, arg)
29349 int tmp;
29350 struct vm86plus_struct __user *v86;
29351
29352 +#ifdef CONFIG_GRKERNSEC_VM86
29353 + if (!capable(CAP_SYS_RAWIO)) {
29354 + gr_handle_vm86();
29355 + return -EPERM;
29356 + }
29357 +#endif
29358 +
29359 tsk = current;
29360 switch (cmd) {
29361 case VM86_REQUEST_IRQ:
29362 @@ -318,7 +334,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
29363 tsk->thread.saved_fs = info->regs32->fs;
29364 tsk->thread.saved_gs = get_user_gs(info->regs32);
29365
29366 - tss = &per_cpu(cpu_tss, get_cpu());
29367 + tss = cpu_tss + get_cpu();
29368 tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0;
29369 if (cpu_has_sep)
29370 tsk->thread.sysenter_cs = 0;
29371 @@ -525,7 +541,7 @@ static void do_int(struct kernel_vm86_regs *regs, int i,
29372 goto cannot_handle;
29373 if (i == 0x21 && is_revectored(AH(regs), &KVM86->int21_revectored))
29374 goto cannot_handle;
29375 - intr_ptr = (unsigned long __user *) (i << 2);
29376 + intr_ptr = (__force unsigned long __user *) (i << 2);
29377 if (get_user(segoffs, intr_ptr))
29378 goto cannot_handle;
29379 if ((segoffs >> 16) == BIOSSEG)
29380 diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
29381 index 00bf300..03e1c3b 100644
29382 --- a/arch/x86/kernel/vmlinux.lds.S
29383 +++ b/arch/x86/kernel/vmlinux.lds.S
29384 @@ -26,6 +26,13 @@
29385 #include <asm/page_types.h>
29386 #include <asm/cache.h>
29387 #include <asm/boot.h>
29388 +#include <asm/segment.h>
29389 +
29390 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
29391 +#define __KERNEL_TEXT_OFFSET (LOAD_OFFSET + ____LOAD_PHYSICAL_ADDR)
29392 +#else
29393 +#define __KERNEL_TEXT_OFFSET 0
29394 +#endif
29395
29396 #undef i386 /* in case the preprocessor is a 32bit one */
29397
29398 @@ -69,30 +76,43 @@ jiffies_64 = jiffies;
29399
29400 PHDRS {
29401 text PT_LOAD FLAGS(5); /* R_E */
29402 +#ifdef CONFIG_X86_32
29403 + module PT_LOAD FLAGS(5); /* R_E */
29404 +#endif
29405 +#ifdef CONFIG_XEN
29406 + rodata PT_LOAD FLAGS(5); /* R_E */
29407 +#else
29408 + rodata PT_LOAD FLAGS(4); /* R__ */
29409 +#endif
29410 data PT_LOAD FLAGS(6); /* RW_ */
29411 -#ifdef CONFIG_X86_64
29412 + init.begin PT_LOAD FLAGS(6); /* RW_ */
29413 #ifdef CONFIG_SMP
29414 percpu PT_LOAD FLAGS(6); /* RW_ */
29415 #endif
29416 - init PT_LOAD FLAGS(7); /* RWE */
29417 -#endif
29418 + text.init PT_LOAD FLAGS(5); /* R_E */
29419 + text.exit PT_LOAD FLAGS(5); /* R_E */
29420 + init PT_LOAD FLAGS(6); /* RW_ */
29421 note PT_NOTE FLAGS(0); /* ___ */
29422 }
29423
29424 SECTIONS
29425 {
29426 #ifdef CONFIG_X86_32
29427 - . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
29428 - phys_startup_32 = startup_32 - LOAD_OFFSET;
29429 + . = LOAD_OFFSET + ____LOAD_PHYSICAL_ADDR;
29430 #else
29431 - . = __START_KERNEL;
29432 - phys_startup_64 = startup_64 - LOAD_OFFSET;
29433 + . = __START_KERNEL;
29434 #endif
29435
29436 /* Text and read-only data */
29437 - .text : AT(ADDR(.text) - LOAD_OFFSET) {
29438 - _text = .;
29439 + .text (. - __KERNEL_TEXT_OFFSET): AT(ADDR(.text) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) {
29440 /* bootstrapping code */
29441 +#ifdef CONFIG_X86_32
29442 + phys_startup_32 = startup_32 - LOAD_OFFSET + __KERNEL_TEXT_OFFSET;
29443 +#else
29444 + phys_startup_64 = startup_64 - LOAD_OFFSET + __KERNEL_TEXT_OFFSET;
29445 +#endif
29446 + __LOAD_PHYSICAL_ADDR = . - LOAD_OFFSET + __KERNEL_TEXT_OFFSET;
29447 + _text = .;
29448 HEAD_TEXT
29449 . = ALIGN(8);
29450 _stext = .;
29451 @@ -104,13 +124,47 @@ SECTIONS
29452 IRQENTRY_TEXT
29453 *(.fixup)
29454 *(.gnu.warning)
29455 - /* End of text section */
29456 - _etext = .;
29457 } :text = 0x9090
29458
29459 - NOTES :text :note
29460 + . += __KERNEL_TEXT_OFFSET;
29461
29462 - EXCEPTION_TABLE(16) :text = 0x9090
29463 +#ifdef CONFIG_X86_32
29464 + . = ALIGN(PAGE_SIZE);
29465 + .module.text : AT(ADDR(.module.text) - LOAD_OFFSET) {
29466 +
29467 +#ifdef CONFIG_PAX_KERNEXEC
29468 + MODULES_EXEC_VADDR = .;
29469 + BYTE(0)
29470 + . += (CONFIG_PAX_KERNEXEC_MODULE_TEXT * 1024 * 1024);
29471 + . = ALIGN(HPAGE_SIZE) - 1;
29472 + MODULES_EXEC_END = .;
29473 +#endif
29474 +
29475 + } :module
29476 +#endif
29477 +
29478 + .text.end : AT(ADDR(.text.end) - LOAD_OFFSET) {
29479 + /* End of text section */
29480 + BYTE(0)
29481 + _etext = . - __KERNEL_TEXT_OFFSET;
29482 + }
29483 +
29484 +#ifdef CONFIG_X86_32
29485 + . = ALIGN(PAGE_SIZE);
29486 + .rodata.page_aligned : AT(ADDR(.rodata.page_aligned) - LOAD_OFFSET) {
29487 + . = ALIGN(PAGE_SIZE);
29488 + *(.empty_zero_page)
29489 + *(.initial_pg_fixmap)
29490 + *(.initial_pg_pmd)
29491 + *(.initial_page_table)
29492 + *(.swapper_pg_dir)
29493 + } :rodata
29494 +#endif
29495 +
29496 + . = ALIGN(PAGE_SIZE);
29497 + NOTES :rodata :note
29498 +
29499 + EXCEPTION_TABLE(16) :rodata
29500
29501 #if defined(CONFIG_DEBUG_RODATA)
29502 /* .text should occupy whole number of pages */
29503 @@ -122,16 +176,20 @@ SECTIONS
29504
29505 /* Data */
29506 .data : AT(ADDR(.data) - LOAD_OFFSET) {
29507 +
29508 +#ifdef CONFIG_PAX_KERNEXEC
29509 + . = ALIGN(HPAGE_SIZE);
29510 +#else
29511 + . = ALIGN(PAGE_SIZE);
29512 +#endif
29513 +
29514 /* Start of data section */
29515 _sdata = .;
29516
29517 /* init_task */
29518 INIT_TASK_DATA(THREAD_SIZE)
29519
29520 -#ifdef CONFIG_X86_32
29521 - /* 32 bit has nosave before _edata */
29522 NOSAVE_DATA
29523 -#endif
29524
29525 PAGE_ALIGNED_DATA(PAGE_SIZE)
29526
29527 @@ -174,12 +232,19 @@ SECTIONS
29528 . = ALIGN(__vvar_page + PAGE_SIZE, PAGE_SIZE);
29529
29530 /* Init code and data - will be freed after init */
29531 - . = ALIGN(PAGE_SIZE);
29532 .init.begin : AT(ADDR(.init.begin) - LOAD_OFFSET) {
29533 + BYTE(0)
29534 +
29535 +#ifdef CONFIG_PAX_KERNEXEC
29536 + . = ALIGN(HPAGE_SIZE);
29537 +#else
29538 + . = ALIGN(PAGE_SIZE);
29539 +#endif
29540 +
29541 __init_begin = .; /* paired with __init_end */
29542 - }
29543 + } :init.begin
29544
29545 -#if defined(CONFIG_X86_64) && defined(CONFIG_SMP)
29546 +#ifdef CONFIG_SMP
29547 /*
29548 * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the
29549 * output PHDR, so the next output section - .init.text - should
29550 @@ -190,12 +255,33 @@ SECTIONS
29551 "per-CPU data too large - increase CONFIG_PHYSICAL_START")
29552 #endif
29553
29554 - INIT_TEXT_SECTION(PAGE_SIZE)
29555 -#ifdef CONFIG_X86_64
29556 - :init
29557 + . = ALIGN(PAGE_SIZE);
29558 + init_begin = .;
29559 + .init.text (. - __KERNEL_TEXT_OFFSET): AT(init_begin - LOAD_OFFSET) {
29560 + VMLINUX_SYMBOL(_sinittext) = .;
29561 + INIT_TEXT
29562 + . = ALIGN(PAGE_SIZE);
29563 + } :text.init
29564 +
29565 + /*
29566 + * .exit.text is discard at runtime, not link time, to deal with
29567 + * references from .altinstructions and .eh_frame
29568 + */
29569 + .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) {
29570 + EXIT_TEXT
29571 + VMLINUX_SYMBOL(_einittext) = .;
29572 +
29573 +#ifdef CONFIG_PAX_KERNEXEC
29574 + . = ALIGN(HPAGE_SIZE);
29575 +#else
29576 + . = ALIGN(16);
29577 #endif
29578
29579 - INIT_DATA_SECTION(16)
29580 + } :text.exit
29581 + . = init_begin + SIZEOF(.init.text) + SIZEOF(.exit.text);
29582 +
29583 + . = ALIGN(PAGE_SIZE);
29584 + INIT_DATA_SECTION(16) :init
29585
29586 .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
29587 __x86_cpu_dev_start = .;
29588 @@ -266,19 +352,12 @@ SECTIONS
29589 }
29590
29591 . = ALIGN(8);
29592 - /*
29593 - * .exit.text is discard at runtime, not link time, to deal with
29594 - * references from .altinstructions and .eh_frame
29595 - */
29596 - .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
29597 - EXIT_TEXT
29598 - }
29599
29600 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
29601 EXIT_DATA
29602 }
29603
29604 -#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
29605 +#ifndef CONFIG_SMP
29606 PERCPU_SECTION(INTERNODE_CACHE_BYTES)
29607 #endif
29608
29609 @@ -297,16 +376,10 @@ SECTIONS
29610 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
29611 __smp_locks = .;
29612 *(.smp_locks)
29613 - . = ALIGN(PAGE_SIZE);
29614 __smp_locks_end = .;
29615 + . = ALIGN(PAGE_SIZE);
29616 }
29617
29618 -#ifdef CONFIG_X86_64
29619 - .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
29620 - NOSAVE_DATA
29621 - }
29622 -#endif
29623 -
29624 /* BSS */
29625 . = ALIGN(PAGE_SIZE);
29626 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
29627 @@ -322,6 +395,7 @@ SECTIONS
29628 __brk_base = .;
29629 . += 64 * 1024; /* 64k alignment slop space */
29630 *(.brk_reservation) /* areas brk users have reserved */
29631 + . = ALIGN(HPAGE_SIZE);
29632 __brk_limit = .;
29633 }
29634
29635 @@ -348,13 +422,12 @@ SECTIONS
29636 * for the boot processor.
29637 */
29638 #define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load
29639 -INIT_PER_CPU(gdt_page);
29640 INIT_PER_CPU(irq_stack_union);
29641
29642 /*
29643 * Build-time check on the image size:
29644 */
29645 -. = ASSERT((_end - _text <= KERNEL_IMAGE_SIZE),
29646 +. = ASSERT((_end - _text - __KERNEL_TEXT_OFFSET <= KERNEL_IMAGE_SIZE),
29647 "kernel image bigger than KERNEL_IMAGE_SIZE");
29648
29649 #ifdef CONFIG_SMP
29650 diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c
29651 index a0695be..33e180c 100644
29652 --- a/arch/x86/kernel/x8664_ksyms_64.c
29653 +++ b/arch/x86/kernel/x8664_ksyms_64.c
29654 @@ -34,8 +34,6 @@ EXPORT_SYMBOL(copy_user_generic_string);
29655 EXPORT_SYMBOL(copy_user_generic_unrolled);
29656 EXPORT_SYMBOL(copy_user_enhanced_fast_string);
29657 EXPORT_SYMBOL(__copy_user_nocache);
29658 -EXPORT_SYMBOL(_copy_from_user);
29659 -EXPORT_SYMBOL(_copy_to_user);
29660
29661 EXPORT_SYMBOL(copy_page);
29662 EXPORT_SYMBOL(clear_page);
29663 @@ -77,3 +75,7 @@ EXPORT_SYMBOL(native_load_gs_index);
29664 EXPORT_SYMBOL(___preempt_schedule);
29665 EXPORT_SYMBOL(___preempt_schedule_notrace);
29666 #endif
29667 +
29668 +#ifdef CONFIG_PAX_PER_CPU_PGD
29669 +EXPORT_SYMBOL(cpu_pgd);
29670 +#endif
29671 diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
29672 index 3839628..2e5b5b35 100644
29673 --- a/arch/x86/kernel/x86_init.c
29674 +++ b/arch/x86/kernel/x86_init.c
29675 @@ -92,7 +92,7 @@ struct x86_cpuinit_ops x86_cpuinit = {
29676 static void default_nmi_init(void) { };
29677 static int default_i8042_detect(void) { return 1; };
29678
29679 -struct x86_platform_ops x86_platform = {
29680 +struct x86_platform_ops x86_platform __read_only = {
29681 .calibrate_tsc = native_calibrate_tsc,
29682 .get_wallclock = mach_get_cmos_time,
29683 .set_wallclock = mach_set_rtc_mmss,
29684 @@ -108,7 +108,7 @@ struct x86_platform_ops x86_platform = {
29685 EXPORT_SYMBOL_GPL(x86_platform);
29686
29687 #if defined(CONFIG_PCI_MSI)
29688 -struct x86_msi_ops x86_msi = {
29689 +struct x86_msi_ops x86_msi __read_only = {
29690 .setup_msi_irqs = native_setup_msi_irqs,
29691 .teardown_msi_irq = native_teardown_msi_irq,
29692 .teardown_msi_irqs = default_teardown_msi_irqs,
29693 @@ -137,7 +137,7 @@ void arch_restore_msi_irqs(struct pci_dev *dev)
29694 }
29695 #endif
29696
29697 -struct x86_io_apic_ops x86_io_apic_ops = {
29698 +struct x86_io_apic_ops x86_io_apic_ops __read_only = {
29699 .read = native_io_apic_read,
29700 .disable = native_disable_io_apic,
29701 };
29702 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
29703 index 2fbea25..9e0f8c7 100644
29704 --- a/arch/x86/kvm/cpuid.c
29705 +++ b/arch/x86/kvm/cpuid.c
29706 @@ -206,15 +206,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
29707 struct kvm_cpuid2 *cpuid,
29708 struct kvm_cpuid_entry2 __user *entries)
29709 {
29710 - int r;
29711 + int r, i;
29712
29713 r = -E2BIG;
29714 if (cpuid->nent > KVM_MAX_CPUID_ENTRIES)
29715 goto out;
29716 r = -EFAULT;
29717 - if (copy_from_user(&vcpu->arch.cpuid_entries, entries,
29718 - cpuid->nent * sizeof(struct kvm_cpuid_entry2)))
29719 + if (!access_ok(VERIFY_READ, entries, cpuid->nent * sizeof(struct kvm_cpuid_entry2)))
29720 goto out;
29721 + for (i = 0; i < cpuid->nent; ++i) {
29722 + struct kvm_cpuid_entry2 cpuid_entry;
29723 + if (__copy_from_user(&cpuid_entry, entries + i, sizeof(cpuid_entry)))
29724 + goto out;
29725 + vcpu->arch.cpuid_entries[i] = cpuid_entry;
29726 + }
29727 vcpu->arch.cpuid_nent = cpuid->nent;
29728 kvm_apic_set_version(vcpu);
29729 kvm_x86_ops->cpuid_update(vcpu);
29730 @@ -227,15 +232,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
29731 struct kvm_cpuid2 *cpuid,
29732 struct kvm_cpuid_entry2 __user *entries)
29733 {
29734 - int r;
29735 + int r, i;
29736
29737 r = -E2BIG;
29738 if (cpuid->nent < vcpu->arch.cpuid_nent)
29739 goto out;
29740 r = -EFAULT;
29741 - if (copy_to_user(entries, &vcpu->arch.cpuid_entries,
29742 - vcpu->arch.cpuid_nent * sizeof(struct kvm_cpuid_entry2)))
29743 + if (!access_ok(VERIFY_WRITE, entries, vcpu->arch.cpuid_nent * sizeof(struct kvm_cpuid_entry2)))
29744 goto out;
29745 + for (i = 0; i < vcpu->arch.cpuid_nent; ++i) {
29746 + struct kvm_cpuid_entry2 cpuid_entry = vcpu->arch.cpuid_entries[i];
29747 + if (__copy_to_user(entries + i, &cpuid_entry, sizeof(cpuid_entry)))
29748 + goto out;
29749 + }
29750 return 0;
29751
29752 out:
29753 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
29754 index e7a4fde..623af93 100644
29755 --- a/arch/x86/kvm/emulate.c
29756 +++ b/arch/x86/kvm/emulate.c
29757 @@ -3847,7 +3847,7 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt)
29758 int cr = ctxt->modrm_reg;
29759 u64 efer = 0;
29760
29761 - static u64 cr_reserved_bits[] = {
29762 + static const u64 cr_reserved_bits[] = {
29763 0xffffffff00000000ULL,
29764 0, 0, 0, /* CR3 checked later */
29765 CR4_RESERVED_BITS,
29766 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
29767 index 2a5ca97..ce8577a 100644
29768 --- a/arch/x86/kvm/lapic.c
29769 +++ b/arch/x86/kvm/lapic.c
29770 @@ -56,7 +56,7 @@
29771 #define APIC_BUS_CYCLE_NS 1
29772
29773 /* #define apic_debug(fmt,arg...) printk(KERN_WARNING fmt,##arg) */
29774 -#define apic_debug(fmt, arg...)
29775 +#define apic_debug(fmt, arg...) do {} while (0)
29776
29777 #define APIC_LVT_NUM 6
29778 /* 14 is the version for Xeon and Pentium 8.4.8*/
29779 diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
29780 index 0f67d7e..4b9fa11 100644
29781 --- a/arch/x86/kvm/paging_tmpl.h
29782 +++ b/arch/x86/kvm/paging_tmpl.h
29783 @@ -343,7 +343,7 @@ retry_walk:
29784 if (unlikely(kvm_is_error_hva(host_addr)))
29785 goto error;
29786
29787 - ptep_user = (pt_element_t __user *)((void *)host_addr + offset);
29788 + ptep_user = (pt_element_t __force_user *)((void *)host_addr + offset);
29789 if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte))))
29790 goto error;
29791 walker->ptep_user[walker->level - 1] = ptep_user;
29792 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
29793 index 8e0c084..bdb9c3b 100644
29794 --- a/arch/x86/kvm/svm.c
29795 +++ b/arch/x86/kvm/svm.c
29796 @@ -3688,7 +3688,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
29797 int cpu = raw_smp_processor_id();
29798
29799 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
29800 +
29801 + pax_open_kernel();
29802 sd->tss_desc->type = 9; /* available 32/64-bit TSS */
29803 + pax_close_kernel();
29804 +
29805 load_TR_desc();
29806 }
29807
29808 @@ -4084,6 +4088,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
29809 #endif
29810 #endif
29811
29812 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
29813 + __set_fs(current_thread_info()->addr_limit);
29814 +#endif
29815 +
29816 reload_tss(vcpu);
29817
29818 local_irq_disable();
29819 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
29820 index 83b7b5c..26d8b1b 100644
29821 --- a/arch/x86/kvm/vmx.c
29822 +++ b/arch/x86/kvm/vmx.c
29823 @@ -1440,12 +1440,12 @@ static void vmcs_write64(unsigned long field, u64 value)
29824 #endif
29825 }
29826
29827 -static void vmcs_clear_bits(unsigned long field, u32 mask)
29828 +static void vmcs_clear_bits(unsigned long field, unsigned long mask)
29829 {
29830 vmcs_writel(field, vmcs_readl(field) & ~mask);
29831 }
29832
29833 -static void vmcs_set_bits(unsigned long field, u32 mask)
29834 +static void vmcs_set_bits(unsigned long field, unsigned long mask)
29835 {
29836 vmcs_writel(field, vmcs_readl(field) | mask);
29837 }
29838 @@ -1705,7 +1705,11 @@ static void reload_tss(void)
29839 struct desc_struct *descs;
29840
29841 descs = (void *)gdt->address;
29842 +
29843 + pax_open_kernel();
29844 descs[GDT_ENTRY_TSS].type = 9; /* available TSS */
29845 + pax_close_kernel();
29846 +
29847 load_TR_desc();
29848 }
29849
29850 @@ -1941,6 +1945,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
29851 vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */
29852 vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */
29853
29854 +#ifdef CONFIG_PAX_PER_CPU_PGD
29855 + vmcs_writel(HOST_CR3, read_cr3()); /* 22.2.3 FIXME: shadow tables */
29856 +#endif
29857 +
29858 rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp);
29859 vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */
29860 vmx->loaded_vmcs->cpu = cpu;
29861 @@ -2232,7 +2240,7 @@ static void setup_msrs(struct vcpu_vmx *vmx)
29862 * reads and returns guest's timestamp counter "register"
29863 * guest_tsc = host_tsc + tsc_offset -- 21.3
29864 */
29865 -static u64 guest_read_tsc(void)
29866 +static u64 __intentional_overflow(-1) guest_read_tsc(void)
29867 {
29868 u64 host_tsc, tsc_offset;
29869
29870 @@ -4459,7 +4467,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
29871 unsigned long cr4;
29872
29873 vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */
29874 +
29875 +#ifndef CONFIG_PAX_PER_CPU_PGD
29876 vmcs_writel(HOST_CR3, read_cr3()); /* 22.2.3 FIXME: shadow tables */
29877 +#endif
29878
29879 /* Save the most likely value for this task's CR4 in the VMCS. */
29880 cr4 = cr4_read_shadow();
29881 @@ -4486,7 +4497,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
29882 vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
29883 vmx->host_idt_base = dt.address;
29884
29885 - vmcs_writel(HOST_RIP, vmx_return); /* 22.2.5 */
29886 + vmcs_writel(HOST_RIP, ktla_ktva(vmx_return)); /* 22.2.5 */
29887
29888 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
29889 vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
29890 @@ -6097,11 +6108,17 @@ static __init int hardware_setup(void)
29891 * page upon invalidation. No need to do anything if not
29892 * using the APIC_ACCESS_ADDR VMCS field.
29893 */
29894 - if (!flexpriority_enabled)
29895 - kvm_x86_ops->set_apic_access_page_addr = NULL;
29896 + if (!flexpriority_enabled) {
29897 + pax_open_kernel();
29898 + *(void **)&kvm_x86_ops->set_apic_access_page_addr = NULL;
29899 + pax_close_kernel();
29900 + }
29901
29902 - if (!cpu_has_vmx_tpr_shadow())
29903 - kvm_x86_ops->update_cr8_intercept = NULL;
29904 + if (!cpu_has_vmx_tpr_shadow()) {
29905 + pax_open_kernel();
29906 + *(void **)&kvm_x86_ops->update_cr8_intercept = NULL;
29907 + pax_close_kernel();
29908 + }
29909
29910 if (enable_ept && !cpu_has_vmx_ept_2m_page())
29911 kvm_disable_largepages();
29912 @@ -6112,14 +6129,16 @@ static __init int hardware_setup(void)
29913 if (!cpu_has_vmx_apicv())
29914 enable_apicv = 0;
29915
29916 + pax_open_kernel();
29917 if (enable_apicv)
29918 - kvm_x86_ops->update_cr8_intercept = NULL;
29919 + *(void **)&kvm_x86_ops->update_cr8_intercept = NULL;
29920 else {
29921 - kvm_x86_ops->hwapic_irr_update = NULL;
29922 - kvm_x86_ops->hwapic_isr_update = NULL;
29923 - kvm_x86_ops->deliver_posted_interrupt = NULL;
29924 - kvm_x86_ops->sync_pir_to_irr = vmx_sync_pir_to_irr_dummy;
29925 + *(void **)&kvm_x86_ops->hwapic_irr_update = NULL;
29926 + *(void **)&kvm_x86_ops->hwapic_isr_update = NULL;
29927 + *(void **)&kvm_x86_ops->deliver_posted_interrupt = NULL;
29928 + *(void **)&kvm_x86_ops->sync_pir_to_irr = vmx_sync_pir_to_irr_dummy;
29929 }
29930 + pax_close_kernel();
29931
29932 vmx_disable_intercept_for_msr(MSR_FS_BASE, false);
29933 vmx_disable_intercept_for_msr(MSR_GS_BASE, false);
29934 @@ -6172,10 +6191,12 @@ static __init int hardware_setup(void)
29935 enable_pml = 0;
29936
29937 if (!enable_pml) {
29938 - kvm_x86_ops->slot_enable_log_dirty = NULL;
29939 - kvm_x86_ops->slot_disable_log_dirty = NULL;
29940 - kvm_x86_ops->flush_log_dirty = NULL;
29941 - kvm_x86_ops->enable_log_dirty_pt_masked = NULL;
29942 + pax_open_kernel();
29943 + *(void **)&kvm_x86_ops->slot_enable_log_dirty = NULL;
29944 + *(void **)&kvm_x86_ops->slot_disable_log_dirty = NULL;
29945 + *(void **)&kvm_x86_ops->flush_log_dirty = NULL;
29946 + *(void **)&kvm_x86_ops->enable_log_dirty_pt_masked = NULL;
29947 + pax_close_kernel();
29948 }
29949
29950 return alloc_kvm_area();
29951 @@ -8378,6 +8399,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
29952 "jmp 2f \n\t"
29953 "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
29954 "2: "
29955 +
29956 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
29957 + "ljmp %[cs],$3f\n\t"
29958 + "3: "
29959 +#endif
29960 +
29961 /* Save guest registers, load host registers, keep flags */
29962 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
29963 "pop %0 \n\t"
29964 @@ -8430,6 +8457,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
29965 #endif
29966 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
29967 [wordsize]"i"(sizeof(ulong))
29968 +
29969 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
29970 + ,[cs]"i"(__KERNEL_CS)
29971 +#endif
29972 +
29973 : "cc", "memory"
29974 #ifdef CONFIG_X86_64
29975 , "rax", "rbx", "rdi", "rsi"
29976 @@ -8443,7 +8475,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
29977 if (debugctlmsr)
29978 update_debugctlmsr(debugctlmsr);
29979
29980 -#ifndef CONFIG_X86_64
29981 +#ifdef CONFIG_X86_32
29982 /*
29983 * The sysexit path does not restore ds/es, so we must set them to
29984 * a reasonable value ourselves.
29985 @@ -8452,8 +8484,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
29986 * may be executed in interrupt context, which saves and restore segments
29987 * around it, nullifying its effect.
29988 */
29989 - loadsegment(ds, __USER_DS);
29990 - loadsegment(es, __USER_DS);
29991 + loadsegment(ds, __KERNEL_DS);
29992 + loadsegment(es, __KERNEL_DS);
29993 + loadsegment(ss, __KERNEL_DS);
29994 +
29995 +#ifdef CONFIG_PAX_KERNEXEC
29996 + loadsegment(fs, __KERNEL_PERCPU);
29997 +#endif
29998 +
29999 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30000 + __set_fs(current_thread_info()->addr_limit);
30001 +#endif
30002 +
30003 #endif
30004
30005 vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP)
30006 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
30007 index 8f0f6ec..9cee69e 100644
30008 --- a/arch/x86/kvm/x86.c
30009 +++ b/arch/x86/kvm/x86.c
30010 @@ -1842,8 +1842,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
30011 {
30012 struct kvm *kvm = vcpu->kvm;
30013 int lm = is_long_mode(vcpu);
30014 - u8 *blob_addr = lm ? (u8 *)(long)kvm->arch.xen_hvm_config.blob_addr_64
30015 - : (u8 *)(long)kvm->arch.xen_hvm_config.blob_addr_32;
30016 + u8 __user *blob_addr = lm ? (u8 __user *)(long)kvm->arch.xen_hvm_config.blob_addr_64
30017 + : (u8 __user *)(long)kvm->arch.xen_hvm_config.blob_addr_32;
30018 u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
30019 : kvm->arch.xen_hvm_config.blob_size_32;
30020 u32 page_num = data & ~PAGE_MASK;
30021 @@ -2731,6 +2731,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
30022 if (n < msr_list.nmsrs)
30023 goto out;
30024 r = -EFAULT;
30025 + if (num_msrs_to_save > ARRAY_SIZE(msrs_to_save))
30026 + goto out;
30027 if (copy_to_user(user_msr_list->indices, &msrs_to_save,
30028 num_msrs_to_save * sizeof(u32)))
30029 goto out;
30030 @@ -3091,7 +3093,7 @@ static int kvm_vcpu_ioctl_x86_set_debugregs(struct kvm_vcpu *vcpu,
30031
30032 static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu)
30033 {
30034 - struct xregs_state *xsave = &vcpu->arch.guest_fpu.state.xsave;
30035 + struct xregs_state *xsave = &vcpu->arch.guest_fpu.state->xsave;
30036 u64 xstate_bv = xsave->header.xfeatures;
30037 u64 valid;
30038
30039 @@ -3127,7 +3129,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu)
30040
30041 static void load_xsave(struct kvm_vcpu *vcpu, u8 *src)
30042 {
30043 - struct xregs_state *xsave = &vcpu->arch.guest_fpu.state.xsave;
30044 + struct xregs_state *xsave = &vcpu->arch.guest_fpu.state->xsave;
30045 u64 xstate_bv = *(u64 *)(src + XSAVE_HDR_OFFSET);
30046 u64 valid;
30047
30048 @@ -3171,7 +3173,7 @@ static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu,
30049 fill_xsave((u8 *) guest_xsave->region, vcpu);
30050 } else {
30051 memcpy(guest_xsave->region,
30052 - &vcpu->arch.guest_fpu.state.fxsave,
30053 + &vcpu->arch.guest_fpu.state->fxsave,
30054 sizeof(struct fxregs_state));
30055 *(u64 *)&guest_xsave->region[XSAVE_HDR_OFFSET / sizeof(u32)] =
30056 XSTATE_FPSSE;
30057 @@ -3196,7 +3198,7 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
30058 } else {
30059 if (xstate_bv & ~XSTATE_FPSSE)
30060 return -EINVAL;
30061 - memcpy(&vcpu->arch.guest_fpu.state.fxsave,
30062 + memcpy(&vcpu->arch.guest_fpu.state->fxsave,
30063 guest_xsave->region, sizeof(struct fxregs_state));
30064 }
30065 return 0;
30066 @@ -5786,7 +5788,7 @@ static struct notifier_block pvclock_gtod_notifier = {
30067 };
30068 #endif
30069
30070 -int kvm_arch_init(void *opaque)
30071 +int kvm_arch_init(const void *opaque)
30072 {
30073 int r;
30074 struct kvm_x86_ops *ops = opaque;
30075 @@ -7210,7 +7212,7 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
30076 int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
30077 {
30078 struct fxregs_state *fxsave =
30079 - &vcpu->arch.guest_fpu.state.fxsave;
30080 + &vcpu->arch.guest_fpu.state->fxsave;
30081
30082 memcpy(fpu->fpr, fxsave->st_space, 128);
30083 fpu->fcw = fxsave->cwd;
30084 @@ -7227,7 +7229,7 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
30085 int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
30086 {
30087 struct fxregs_state *fxsave =
30088 - &vcpu->arch.guest_fpu.state.fxsave;
30089 + &vcpu->arch.guest_fpu.state->fxsave;
30090
30091 memcpy(fxsave->st_space, fpu->fpr, 128);
30092 fxsave->cwd = fpu->fcw;
30093 @@ -7243,9 +7245,9 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
30094
30095 static void fx_init(struct kvm_vcpu *vcpu)
30096 {
30097 - fpstate_init(&vcpu->arch.guest_fpu.state);
30098 + fpstate_init(vcpu->arch.guest_fpu.state);
30099 if (cpu_has_xsaves)
30100 - vcpu->arch.guest_fpu.state.xsave.header.xcomp_bv =
30101 + vcpu->arch.guest_fpu.state->xsave.header.xcomp_bv =
30102 host_xcr0 | XSTATE_COMPACTION_ENABLED;
30103
30104 /*
30105 @@ -7269,7 +7271,7 @@ void kvm_load_guest_fpu(struct kvm_vcpu *vcpu)
30106 kvm_put_guest_xcr0(vcpu);
30107 vcpu->guest_fpu_loaded = 1;
30108 __kernel_fpu_begin();
30109 - __copy_kernel_to_fpregs(&vcpu->arch.guest_fpu.state);
30110 + __copy_kernel_to_fpregs(vcpu->arch.guest_fpu.state);
30111 trace_kvm_fpu(1);
30112 }
30113
30114 @@ -7547,6 +7549,8 @@ bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu)
30115
30116 struct static_key kvm_no_apic_vcpu __read_mostly;
30117
30118 +extern struct kmem_cache *fpregs_state_cachep;
30119 +
30120 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
30121 {
30122 struct page *page;
30123 @@ -7563,11 +7567,14 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
30124 else
30125 vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED;
30126
30127 - page = alloc_page(GFP_KERNEL | __GFP_ZERO);
30128 - if (!page) {
30129 - r = -ENOMEM;
30130 + r = -ENOMEM;
30131 + vcpu->arch.guest_fpu.state = kmem_cache_alloc(fpregs_state_cachep, GFP_KERNEL);
30132 + if (!vcpu->arch.guest_fpu.state)
30133 goto fail;
30134 - }
30135 +
30136 + page = alloc_page(GFP_KERNEL | __GFP_ZERO);
30137 + if (!page)
30138 + goto fail_free_fpregs;
30139 vcpu->arch.pio_data = page_address(page);
30140
30141 kvm_set_tsc_khz(vcpu, max_tsc_khz);
30142 @@ -7621,6 +7628,9 @@ fail_mmu_destroy:
30143 kvm_mmu_destroy(vcpu);
30144 fail_free_pio_data:
30145 free_page((unsigned long)vcpu->arch.pio_data);
30146 +fail_free_fpregs:
30147 + kmem_cache_free(fpregs_state_cachep, vcpu->arch.guest_fpu.state);
30148 + vcpu->arch.guest_fpu.state = NULL;
30149 fail:
30150 return r;
30151 }
30152 @@ -7638,6 +7648,8 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)
30153 free_page((unsigned long)vcpu->arch.pio_data);
30154 if (!irqchip_in_kernel(vcpu->kvm))
30155 static_key_slow_dec(&kvm_no_apic_vcpu);
30156 + kmem_cache_free(fpregs_state_cachep, vcpu->arch.guest_fpu.state);
30157 + vcpu->arch.guest_fpu.state = NULL;
30158 }
30159
30160 void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu)
30161 diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
30162 index f2dc08c..d85d906 100644
30163 --- a/arch/x86/lguest/boot.c
30164 +++ b/arch/x86/lguest/boot.c
30165 @@ -1341,9 +1341,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
30166 * Rebooting also tells the Host we're finished, but the RESTART flag tells the
30167 * Launcher to reboot us.
30168 */
30169 -static void lguest_restart(char *reason)
30170 +static __noreturn void lguest_restart(char *reason)
30171 {
30172 hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0, 0);
30173 + BUG();
30174 }
30175
30176 /*G:050
30177 diff --git a/arch/x86/lib/atomic64_386_32.S b/arch/x86/lib/atomic64_386_32.S
30178 index 9b0ca8f..bb4af41 100644
30179 --- a/arch/x86/lib/atomic64_386_32.S
30180 +++ b/arch/x86/lib/atomic64_386_32.S
30181 @@ -45,6 +45,10 @@ BEGIN(read)
30182 movl (v), %eax
30183 movl 4(v), %edx
30184 RET_ENDP
30185 +BEGIN(read_unchecked)
30186 + movl (v), %eax
30187 + movl 4(v), %edx
30188 +RET_ENDP
30189 #undef v
30190
30191 #define v %esi
30192 @@ -52,6 +56,10 @@ BEGIN(set)
30193 movl %ebx, (v)
30194 movl %ecx, 4(v)
30195 RET_ENDP
30196 +BEGIN(set_unchecked)
30197 + movl %ebx, (v)
30198 + movl %ecx, 4(v)
30199 +RET_ENDP
30200 #undef v
30201
30202 #define v %esi
30203 @@ -67,6 +75,20 @@ RET_ENDP
30204 BEGIN(add)
30205 addl %eax, (v)
30206 adcl %edx, 4(v)
30207 +
30208 +#ifdef CONFIG_PAX_REFCOUNT
30209 + jno 0f
30210 + subl %eax, (v)
30211 + sbbl %edx, 4(v)
30212 + int $4
30213 +0:
30214 + _ASM_EXTABLE(0b, 0b)
30215 +#endif
30216 +
30217 +RET_ENDP
30218 +BEGIN(add_unchecked)
30219 + addl %eax, (v)
30220 + adcl %edx, 4(v)
30221 RET_ENDP
30222 #undef v
30223
30224 @@ -74,6 +96,24 @@ RET_ENDP
30225 BEGIN(add_return)
30226 addl (v), %eax
30227 adcl 4(v), %edx
30228 +
30229 +#ifdef CONFIG_PAX_REFCOUNT
30230 + into
30231 +1234:
30232 + _ASM_EXTABLE(1234b, 2f)
30233 +#endif
30234 +
30235 + movl %eax, (v)
30236 + movl %edx, 4(v)
30237 +
30238 +#ifdef CONFIG_PAX_REFCOUNT
30239 +2:
30240 +#endif
30241 +
30242 +RET_ENDP
30243 +BEGIN(add_return_unchecked)
30244 + addl (v), %eax
30245 + adcl 4(v), %edx
30246 movl %eax, (v)
30247 movl %edx, 4(v)
30248 RET_ENDP
30249 @@ -83,6 +123,20 @@ RET_ENDP
30250 BEGIN(sub)
30251 subl %eax, (v)
30252 sbbl %edx, 4(v)
30253 +
30254 +#ifdef CONFIG_PAX_REFCOUNT
30255 + jno 0f
30256 + addl %eax, (v)
30257 + adcl %edx, 4(v)
30258 + int $4
30259 +0:
30260 + _ASM_EXTABLE(0b, 0b)
30261 +#endif
30262 +
30263 +RET_ENDP
30264 +BEGIN(sub_unchecked)
30265 + subl %eax, (v)
30266 + sbbl %edx, 4(v)
30267 RET_ENDP
30268 #undef v
30269
30270 @@ -93,6 +147,27 @@ BEGIN(sub_return)
30271 sbbl $0, %edx
30272 addl (v), %eax
30273 adcl 4(v), %edx
30274 +
30275 +#ifdef CONFIG_PAX_REFCOUNT
30276 + into
30277 +1234:
30278 + _ASM_EXTABLE(1234b, 2f)
30279 +#endif
30280 +
30281 + movl %eax, (v)
30282 + movl %edx, 4(v)
30283 +
30284 +#ifdef CONFIG_PAX_REFCOUNT
30285 +2:
30286 +#endif
30287 +
30288 +RET_ENDP
30289 +BEGIN(sub_return_unchecked)
30290 + negl %edx
30291 + negl %eax
30292 + sbbl $0, %edx
30293 + addl (v), %eax
30294 + adcl 4(v), %edx
30295 movl %eax, (v)
30296 movl %edx, 4(v)
30297 RET_ENDP
30298 @@ -102,6 +177,20 @@ RET_ENDP
30299 BEGIN(inc)
30300 addl $1, (v)
30301 adcl $0, 4(v)
30302 +
30303 +#ifdef CONFIG_PAX_REFCOUNT
30304 + jno 0f
30305 + subl $1, (v)
30306 + sbbl $0, 4(v)
30307 + int $4
30308 +0:
30309 + _ASM_EXTABLE(0b, 0b)
30310 +#endif
30311 +
30312 +RET_ENDP
30313 +BEGIN(inc_unchecked)
30314 + addl $1, (v)
30315 + adcl $0, 4(v)
30316 RET_ENDP
30317 #undef v
30318
30319 @@ -111,6 +200,26 @@ BEGIN(inc_return)
30320 movl 4(v), %edx
30321 addl $1, %eax
30322 adcl $0, %edx
30323 +
30324 +#ifdef CONFIG_PAX_REFCOUNT
30325 + into
30326 +1234:
30327 + _ASM_EXTABLE(1234b, 2f)
30328 +#endif
30329 +
30330 + movl %eax, (v)
30331 + movl %edx, 4(v)
30332 +
30333 +#ifdef CONFIG_PAX_REFCOUNT
30334 +2:
30335 +#endif
30336 +
30337 +RET_ENDP
30338 +BEGIN(inc_return_unchecked)
30339 + movl (v), %eax
30340 + movl 4(v), %edx
30341 + addl $1, %eax
30342 + adcl $0, %edx
30343 movl %eax, (v)
30344 movl %edx, 4(v)
30345 RET_ENDP
30346 @@ -120,6 +229,20 @@ RET_ENDP
30347 BEGIN(dec)
30348 subl $1, (v)
30349 sbbl $0, 4(v)
30350 +
30351 +#ifdef CONFIG_PAX_REFCOUNT
30352 + jno 0f
30353 + addl $1, (v)
30354 + adcl $0, 4(v)
30355 + int $4
30356 +0:
30357 + _ASM_EXTABLE(0b, 0b)
30358 +#endif
30359 +
30360 +RET_ENDP
30361 +BEGIN(dec_unchecked)
30362 + subl $1, (v)
30363 + sbbl $0, 4(v)
30364 RET_ENDP
30365 #undef v
30366
30367 @@ -129,6 +252,26 @@ BEGIN(dec_return)
30368 movl 4(v), %edx
30369 subl $1, %eax
30370 sbbl $0, %edx
30371 +
30372 +#ifdef CONFIG_PAX_REFCOUNT
30373 + into
30374 +1234:
30375 + _ASM_EXTABLE(1234b, 2f)
30376 +#endif
30377 +
30378 + movl %eax, (v)
30379 + movl %edx, 4(v)
30380 +
30381 +#ifdef CONFIG_PAX_REFCOUNT
30382 +2:
30383 +#endif
30384 +
30385 +RET_ENDP
30386 +BEGIN(dec_return_unchecked)
30387 + movl (v), %eax
30388 + movl 4(v), %edx
30389 + subl $1, %eax
30390 + sbbl $0, %edx
30391 movl %eax, (v)
30392 movl %edx, 4(v)
30393 RET_ENDP
30394 @@ -140,6 +283,13 @@ BEGIN(add_unless)
30395 adcl %edx, %edi
30396 addl (v), %eax
30397 adcl 4(v), %edx
30398 +
30399 +#ifdef CONFIG_PAX_REFCOUNT
30400 + into
30401 +1234:
30402 + _ASM_EXTABLE(1234b, 2f)
30403 +#endif
30404 +
30405 cmpl %eax, %ecx
30406 je 3f
30407 1:
30408 @@ -165,6 +315,13 @@ BEGIN(inc_not_zero)
30409 1:
30410 addl $1, %eax
30411 adcl $0, %edx
30412 +
30413 +#ifdef CONFIG_PAX_REFCOUNT
30414 + into
30415 +1234:
30416 + _ASM_EXTABLE(1234b, 2f)
30417 +#endif
30418 +
30419 movl %eax, (v)
30420 movl %edx, 4(v)
30421 movl $1, %eax
30422 @@ -183,6 +340,13 @@ BEGIN(dec_if_positive)
30423 movl 4(v), %edx
30424 subl $1, %eax
30425 sbbl $0, %edx
30426 +
30427 +#ifdef CONFIG_PAX_REFCOUNT
30428 + into
30429 +1234:
30430 + _ASM_EXTABLE(1234b, 1f)
30431 +#endif
30432 +
30433 js 1f
30434 movl %eax, (v)
30435 movl %edx, 4(v)
30436 diff --git a/arch/x86/lib/atomic64_cx8_32.S b/arch/x86/lib/atomic64_cx8_32.S
30437 index db3ae854..b8ad0de 100644
30438 --- a/arch/x86/lib/atomic64_cx8_32.S
30439 +++ b/arch/x86/lib/atomic64_cx8_32.S
30440 @@ -22,9 +22,16 @@
30441
30442 ENTRY(atomic64_read_cx8)
30443 read64 %ecx
30444 + pax_force_retaddr
30445 ret
30446 ENDPROC(atomic64_read_cx8)
30447
30448 +ENTRY(atomic64_read_unchecked_cx8)
30449 + read64 %ecx
30450 + pax_force_retaddr
30451 + ret
30452 +ENDPROC(atomic64_read_unchecked_cx8)
30453 +
30454 ENTRY(atomic64_set_cx8)
30455 1:
30456 /* we don't need LOCK_PREFIX since aligned 64-bit writes
30457 @@ -32,20 +39,33 @@ ENTRY(atomic64_set_cx8)
30458 cmpxchg8b (%esi)
30459 jne 1b
30460
30461 + pax_force_retaddr
30462 ret
30463 ENDPROC(atomic64_set_cx8)
30464
30465 +ENTRY(atomic64_set_unchecked_cx8)
30466 +1:
30467 +/* we don't need LOCK_PREFIX since aligned 64-bit writes
30468 + * are atomic on 586 and newer */
30469 + cmpxchg8b (%esi)
30470 + jne 1b
30471 +
30472 + pax_force_retaddr
30473 + ret
30474 +ENDPROC(atomic64_set_unchecked_cx8)
30475 +
30476 ENTRY(atomic64_xchg_cx8)
30477 1:
30478 LOCK_PREFIX
30479 cmpxchg8b (%esi)
30480 jne 1b
30481
30482 + pax_force_retaddr
30483 ret
30484 ENDPROC(atomic64_xchg_cx8)
30485
30486 -.macro addsub_return func ins insc
30487 -ENTRY(atomic64_\func\()_return_cx8)
30488 +.macro addsub_return func ins insc unchecked=""
30489 +ENTRY(atomic64_\func\()_return\unchecked\()_cx8)
30490 pushl %ebp
30491 pushl %ebx
30492 pushl %esi
30493 @@ -61,26 +81,43 @@ ENTRY(atomic64_\func\()_return_cx8)
30494 movl %edx, %ecx
30495 \ins\()l %esi, %ebx
30496 \insc\()l %edi, %ecx
30497 +
30498 +.ifb \unchecked
30499 +#ifdef CONFIG_PAX_REFCOUNT
30500 + into
30501 +2:
30502 + _ASM_EXTABLE(2b, 3f)
30503 +#endif
30504 +.endif
30505 +
30506 LOCK_PREFIX
30507 cmpxchg8b (%ebp)
30508 jne 1b
30509 -
30510 -10:
30511 movl %ebx, %eax
30512 movl %ecx, %edx
30513 +
30514 +.ifb \unchecked
30515 +#ifdef CONFIG_PAX_REFCOUNT
30516 +3:
30517 +#endif
30518 +.endif
30519 +
30520 popl %edi
30521 popl %esi
30522 popl %ebx
30523 popl %ebp
30524 + pax_force_retaddr
30525 ret
30526 -ENDPROC(atomic64_\func\()_return_cx8)
30527 +ENDPROC(atomic64_\func\()_return\unchecked\()_cx8)
30528 .endm
30529
30530 addsub_return add add adc
30531 addsub_return sub sub sbb
30532 +addsub_return add add adc _unchecked
30533 +addsub_return sub sub sbb _unchecked
30534
30535 -.macro incdec_return func ins insc
30536 -ENTRY(atomic64_\func\()_return_cx8)
30537 +.macro incdec_return func ins insc unchecked=""
30538 +ENTRY(atomic64_\func\()_return\unchecked\()_cx8)
30539 pushl %ebx
30540
30541 read64 %esi
30542 @@ -89,20 +126,37 @@ ENTRY(atomic64_\func\()_return_cx8)
30543 movl %edx, %ecx
30544 \ins\()l $1, %ebx
30545 \insc\()l $0, %ecx
30546 +
30547 +.ifb \unchecked
30548 +#ifdef CONFIG_PAX_REFCOUNT
30549 + into
30550 +2:
30551 + _ASM_EXTABLE(2b, 3f)
30552 +#endif
30553 +.endif
30554 +
30555 LOCK_PREFIX
30556 cmpxchg8b (%esi)
30557 jne 1b
30558 -
30559 -10:
30560 movl %ebx, %eax
30561 movl %ecx, %edx
30562 +
30563 +.ifb \unchecked
30564 +#ifdef CONFIG_PAX_REFCOUNT
30565 +3:
30566 +#endif
30567 +.endif
30568 +
30569 popl %ebx
30570 + pax_force_retaddr
30571 ret
30572 -ENDPROC(atomic64_\func\()_return_cx8)
30573 +ENDPROC(atomic64_\func\()_return\unchecked\()_cx8)
30574 .endm
30575
30576 incdec_return inc add adc
30577 incdec_return dec sub sbb
30578 +incdec_return inc add adc _unchecked
30579 +incdec_return dec sub sbb _unchecked
30580
30581 ENTRY(atomic64_dec_if_positive_cx8)
30582 pushl %ebx
30583 @@ -113,6 +167,13 @@ ENTRY(atomic64_dec_if_positive_cx8)
30584 movl %edx, %ecx
30585 subl $1, %ebx
30586 sbb $0, %ecx
30587 +
30588 +#ifdef CONFIG_PAX_REFCOUNT
30589 + into
30590 +1234:
30591 + _ASM_EXTABLE(1234b, 2f)
30592 +#endif
30593 +
30594 js 2f
30595 LOCK_PREFIX
30596 cmpxchg8b (%esi)
30597 @@ -122,6 +183,7 @@ ENTRY(atomic64_dec_if_positive_cx8)
30598 movl %ebx, %eax
30599 movl %ecx, %edx
30600 popl %ebx
30601 + pax_force_retaddr
30602 ret
30603 ENDPROC(atomic64_dec_if_positive_cx8)
30604
30605 @@ -144,6 +206,13 @@ ENTRY(atomic64_add_unless_cx8)
30606 movl %edx, %ecx
30607 addl %ebp, %ebx
30608 adcl %edi, %ecx
30609 +
30610 +#ifdef CONFIG_PAX_REFCOUNT
30611 + into
30612 +1234:
30613 + _ASM_EXTABLE(1234b, 3f)
30614 +#endif
30615 +
30616 LOCK_PREFIX
30617 cmpxchg8b (%esi)
30618 jne 1b
30619 @@ -153,6 +222,7 @@ ENTRY(atomic64_add_unless_cx8)
30620 addl $8, %esp
30621 popl %ebx
30622 popl %ebp
30623 + pax_force_retaddr
30624 ret
30625 4:
30626 cmpl %edx, 4(%esp)
30627 @@ -173,6 +243,13 @@ ENTRY(atomic64_inc_not_zero_cx8)
30628 xorl %ecx, %ecx
30629 addl $1, %ebx
30630 adcl %edx, %ecx
30631 +
30632 +#ifdef CONFIG_PAX_REFCOUNT
30633 + into
30634 +1234:
30635 + _ASM_EXTABLE(1234b, 3f)
30636 +#endif
30637 +
30638 LOCK_PREFIX
30639 cmpxchg8b (%esi)
30640 jne 1b
30641 @@ -180,5 +257,6 @@ ENTRY(atomic64_inc_not_zero_cx8)
30642 movl $1, %eax
30643 3:
30644 popl %ebx
30645 + pax_force_retaddr
30646 ret
30647 ENDPROC(atomic64_inc_not_zero_cx8)
30648 diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S
30649 index c1e6232..758bc31 100644
30650 --- a/arch/x86/lib/checksum_32.S
30651 +++ b/arch/x86/lib/checksum_32.S
30652 @@ -28,7 +28,8 @@
30653 #include <linux/linkage.h>
30654 #include <asm/errno.h>
30655 #include <asm/asm.h>
30656 -
30657 +#include <asm/segment.h>
30658 +
30659 /*
30660 * computes a partial checksum, e.g. for TCP/UDP fragments
30661 */
30662 @@ -280,7 +281,20 @@ unsigned int csum_partial_copy_generic (const char *src, char *dst,
30663
30664 #define ARGBASE 16
30665 #define FP 12
30666 -
30667 +
30668 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30669 + pushl %gs
30670 + popl %es
30671 + jmp csum_partial_copy_generic
30672 +#endif
30673 +
30674 +ENTRY(csum_partial_copy_generic_from_user)
30675 +
30676 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30677 + pushl %gs
30678 + popl %ds
30679 +#endif
30680 +
30681 ENTRY(csum_partial_copy_generic)
30682 subl $4,%esp
30683 pushl %edi
30684 @@ -299,7 +313,7 @@ ENTRY(csum_partial_copy_generic)
30685 jmp 4f
30686 SRC(1: movw (%esi), %bx )
30687 addl $2, %esi
30688 -DST( movw %bx, (%edi) )
30689 +DST( movw %bx, %es:(%edi) )
30690 addl $2, %edi
30691 addw %bx, %ax
30692 adcl $0, %eax
30693 @@ -311,30 +325,30 @@ DST( movw %bx, (%edi) )
30694 SRC(1: movl (%esi), %ebx )
30695 SRC( movl 4(%esi), %edx )
30696 adcl %ebx, %eax
30697 -DST( movl %ebx, (%edi) )
30698 +DST( movl %ebx, %es:(%edi) )
30699 adcl %edx, %eax
30700 -DST( movl %edx, 4(%edi) )
30701 +DST( movl %edx, %es:4(%edi) )
30702
30703 SRC( movl 8(%esi), %ebx )
30704 SRC( movl 12(%esi), %edx )
30705 adcl %ebx, %eax
30706 -DST( movl %ebx, 8(%edi) )
30707 +DST( movl %ebx, %es:8(%edi) )
30708 adcl %edx, %eax
30709 -DST( movl %edx, 12(%edi) )
30710 +DST( movl %edx, %es:12(%edi) )
30711
30712 SRC( movl 16(%esi), %ebx )
30713 SRC( movl 20(%esi), %edx )
30714 adcl %ebx, %eax
30715 -DST( movl %ebx, 16(%edi) )
30716 +DST( movl %ebx, %es:16(%edi) )
30717 adcl %edx, %eax
30718 -DST( movl %edx, 20(%edi) )
30719 +DST( movl %edx, %es:20(%edi) )
30720
30721 SRC( movl 24(%esi), %ebx )
30722 SRC( movl 28(%esi), %edx )
30723 adcl %ebx, %eax
30724 -DST( movl %ebx, 24(%edi) )
30725 +DST( movl %ebx, %es:24(%edi) )
30726 adcl %edx, %eax
30727 -DST( movl %edx, 28(%edi) )
30728 +DST( movl %edx, %es:28(%edi) )
30729
30730 lea 32(%esi), %esi
30731 lea 32(%edi), %edi
30732 @@ -348,7 +362,7 @@ DST( movl %edx, 28(%edi) )
30733 shrl $2, %edx # This clears CF
30734 SRC(3: movl (%esi), %ebx )
30735 adcl %ebx, %eax
30736 -DST( movl %ebx, (%edi) )
30737 +DST( movl %ebx, %es:(%edi) )
30738 lea 4(%esi), %esi
30739 lea 4(%edi), %edi
30740 dec %edx
30741 @@ -360,12 +374,12 @@ DST( movl %ebx, (%edi) )
30742 jb 5f
30743 SRC( movw (%esi), %cx )
30744 leal 2(%esi), %esi
30745 -DST( movw %cx, (%edi) )
30746 +DST( movw %cx, %es:(%edi) )
30747 leal 2(%edi), %edi
30748 je 6f
30749 shll $16,%ecx
30750 SRC(5: movb (%esi), %cl )
30751 -DST( movb %cl, (%edi) )
30752 +DST( movb %cl, %es:(%edi) )
30753 6: addl %ecx, %eax
30754 adcl $0, %eax
30755 7:
30756 @@ -376,7 +390,7 @@ DST( movb %cl, (%edi) )
30757
30758 6001:
30759 movl ARGBASE+20(%esp), %ebx # src_err_ptr
30760 - movl $-EFAULT, (%ebx)
30761 + movl $-EFAULT, %ss:(%ebx)
30762
30763 # zero the complete destination - computing the rest
30764 # is too much work
30765 @@ -389,34 +403,58 @@ DST( movb %cl, (%edi) )
30766
30767 6002:
30768 movl ARGBASE+24(%esp), %ebx # dst_err_ptr
30769 - movl $-EFAULT,(%ebx)
30770 + movl $-EFAULT,%ss:(%ebx)
30771 jmp 5000b
30772
30773 .previous
30774
30775 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30776 + pushl %ss
30777 + popl %ds
30778 + pushl %ss
30779 + popl %es
30780 +#endif
30781 +
30782 popl %ebx
30783 popl %esi
30784 popl %edi
30785 popl %ecx # equivalent to addl $4,%esp
30786 ret
30787 -ENDPROC(csum_partial_copy_generic)
30788 +ENDPROC(csum_partial_copy_generic_to_user)
30789
30790 #else
30791
30792 /* Version for PentiumII/PPro */
30793
30794 #define ROUND1(x) \
30795 + nop; nop; nop; \
30796 SRC(movl x(%esi), %ebx ) ; \
30797 addl %ebx, %eax ; \
30798 - DST(movl %ebx, x(%edi) ) ;
30799 + DST(movl %ebx, %es:x(%edi)) ;
30800
30801 #define ROUND(x) \
30802 + nop; nop; nop; \
30803 SRC(movl x(%esi), %ebx ) ; \
30804 adcl %ebx, %eax ; \
30805 - DST(movl %ebx, x(%edi) ) ;
30806 + DST(movl %ebx, %es:x(%edi)) ;
30807
30808 #define ARGBASE 12
30809 -
30810 +
30811 +ENTRY(csum_partial_copy_generic_to_user)
30812 +
30813 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30814 + pushl %gs
30815 + popl %es
30816 + jmp csum_partial_copy_generic
30817 +#endif
30818 +
30819 +ENTRY(csum_partial_copy_generic_from_user)
30820 +
30821 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30822 + pushl %gs
30823 + popl %ds
30824 +#endif
30825 +
30826 ENTRY(csum_partial_copy_generic)
30827 pushl %ebx
30828 pushl %edi
30829 @@ -435,7 +473,7 @@ ENTRY(csum_partial_copy_generic)
30830 subl %ebx, %edi
30831 lea -1(%esi),%edx
30832 andl $-32,%edx
30833 - lea 3f(%ebx,%ebx), %ebx
30834 + lea 3f(%ebx,%ebx,2), %ebx
30835 testl %esi, %esi
30836 jmp *%ebx
30837 1: addl $64,%esi
30838 @@ -456,19 +494,19 @@ ENTRY(csum_partial_copy_generic)
30839 jb 5f
30840 SRC( movw (%esi), %dx )
30841 leal 2(%esi), %esi
30842 -DST( movw %dx, (%edi) )
30843 +DST( movw %dx, %es:(%edi) )
30844 leal 2(%edi), %edi
30845 je 6f
30846 shll $16,%edx
30847 5:
30848 SRC( movb (%esi), %dl )
30849 -DST( movb %dl, (%edi) )
30850 +DST( movb %dl, %es:(%edi) )
30851 6: addl %edx, %eax
30852 adcl $0, %eax
30853 7:
30854 .section .fixup, "ax"
30855 6001: movl ARGBASE+20(%esp), %ebx # src_err_ptr
30856 - movl $-EFAULT, (%ebx)
30857 + movl $-EFAULT, %ss:(%ebx)
30858 # zero the complete destination (computing the rest is too much work)
30859 movl ARGBASE+8(%esp),%edi # dst
30860 movl ARGBASE+12(%esp),%ecx # len
30861 @@ -476,15 +514,22 @@ DST( movb %dl, (%edi) )
30862 rep; stosb
30863 jmp 7b
30864 6002: movl ARGBASE+24(%esp), %ebx # dst_err_ptr
30865 - movl $-EFAULT, (%ebx)
30866 + movl $-EFAULT, %ss:(%ebx)
30867 jmp 7b
30868 .previous
30869
30870 +#ifdef CONFIG_PAX_MEMORY_UDEREF
30871 + pushl %ss
30872 + popl %ds
30873 + pushl %ss
30874 + popl %es
30875 +#endif
30876 +
30877 popl %esi
30878 popl %edi
30879 popl %ebx
30880 ret
30881 -ENDPROC(csum_partial_copy_generic)
30882 +ENDPROC(csum_partial_copy_generic_to_user)
30883
30884 #undef ROUND
30885 #undef ROUND1
30886 diff --git a/arch/x86/lib/clear_page_64.S b/arch/x86/lib/clear_page_64.S
30887 index a2fe51b..507dab0 100644
30888 --- a/arch/x86/lib/clear_page_64.S
30889 +++ b/arch/x86/lib/clear_page_64.S
30890 @@ -21,6 +21,7 @@ ENTRY(clear_page)
30891 movl $4096/8,%ecx
30892 xorl %eax,%eax
30893 rep stosq
30894 + pax_force_retaddr
30895 ret
30896 ENDPROC(clear_page)
30897
30898 @@ -43,6 +44,7 @@ ENTRY(clear_page_orig)
30899 leaq 64(%rdi),%rdi
30900 jnz .Lloop
30901 nop
30902 + pax_force_retaddr
30903 ret
30904 ENDPROC(clear_page_orig)
30905
30906 @@ -50,5 +52,6 @@ ENTRY(clear_page_c_e)
30907 movl $4096,%ecx
30908 xorl %eax,%eax
30909 rep stosb
30910 + pax_force_retaddr
30911 ret
30912 ENDPROC(clear_page_c_e)
30913 diff --git a/arch/x86/lib/cmpxchg16b_emu.S b/arch/x86/lib/cmpxchg16b_emu.S
30914 index 9b33024..e52ee44 100644
30915 --- a/arch/x86/lib/cmpxchg16b_emu.S
30916 +++ b/arch/x86/lib/cmpxchg16b_emu.S
30917 @@ -7,6 +7,7 @@
30918 */
30919 #include <linux/linkage.h>
30920 #include <asm/percpu.h>
30921 +#include <asm/alternative-asm.h>
30922
30923 .text
30924
30925 @@ -43,11 +44,13 @@ ENTRY(this_cpu_cmpxchg16b_emu)
30926
30927 popfq
30928 mov $1, %al
30929 + pax_force_retaddr
30930 ret
30931
30932 .Lnot_same:
30933 popfq
30934 xor %al,%al
30935 + pax_force_retaddr
30936 ret
30937
30938 ENDPROC(this_cpu_cmpxchg16b_emu)
30939 diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S
30940 index 009f982..9b3db5e 100644
30941 --- a/arch/x86/lib/copy_page_64.S
30942 +++ b/arch/x86/lib/copy_page_64.S
30943 @@ -15,13 +15,14 @@ ENTRY(copy_page)
30944 ALTERNATIVE "jmp copy_page_regs", "", X86_FEATURE_REP_GOOD
30945 movl $4096/8, %ecx
30946 rep movsq
30947 + pax_force_retaddr
30948 ret
30949 ENDPROC(copy_page)
30950
30951 ENTRY(copy_page_regs)
30952 subq $2*8, %rsp
30953 movq %rbx, (%rsp)
30954 - movq %r12, 1*8(%rsp)
30955 + movq %r13, 1*8(%rsp)
30956
30957 movl $(4096/64)-5, %ecx
30958 .p2align 4
30959 @@ -34,7 +35,7 @@ ENTRY(copy_page_regs)
30960 movq 0x8*4(%rsi), %r9
30961 movq 0x8*5(%rsi), %r10
30962 movq 0x8*6(%rsi), %r11
30963 - movq 0x8*7(%rsi), %r12
30964 + movq 0x8*7(%rsi), %r13
30965
30966 prefetcht0 5*64(%rsi)
30967
30968 @@ -45,7 +46,7 @@ ENTRY(copy_page_regs)
30969 movq %r9, 0x8*4(%rdi)
30970 movq %r10, 0x8*5(%rdi)
30971 movq %r11, 0x8*6(%rdi)
30972 - movq %r12, 0x8*7(%rdi)
30973 + movq %r13, 0x8*7(%rdi)
30974
30975 leaq 64 (%rsi), %rsi
30976 leaq 64 (%rdi), %rdi
30977 @@ -64,7 +65,7 @@ ENTRY(copy_page_regs)
30978 movq 0x8*4(%rsi), %r9
30979 movq 0x8*5(%rsi), %r10
30980 movq 0x8*6(%rsi), %r11
30981 - movq 0x8*7(%rsi), %r12
30982 + movq 0x8*7(%rsi), %r13
30983
30984 movq %rax, 0x8*0(%rdi)
30985 movq %rbx, 0x8*1(%rdi)
30986 @@ -73,14 +74,15 @@ ENTRY(copy_page_regs)
30987 movq %r9, 0x8*4(%rdi)
30988 movq %r10, 0x8*5(%rdi)
30989 movq %r11, 0x8*6(%rdi)
30990 - movq %r12, 0x8*7(%rdi)
30991 + movq %r13, 0x8*7(%rdi)
30992
30993 leaq 64(%rdi), %rdi
30994 leaq 64(%rsi), %rsi
30995 jnz .Loop2
30996
30997 movq (%rsp), %rbx
30998 - movq 1*8(%rsp), %r12
30999 + movq 1*8(%rsp), %r13
31000 addq $2*8, %rsp
31001 + pax_force_retaddr
31002 ret
31003 ENDPROC(copy_page_regs)
31004 diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S
31005 index 982ce34..8e14731 100644
31006 --- a/arch/x86/lib/copy_user_64.S
31007 +++ b/arch/x86/lib/copy_user_64.S
31008 @@ -14,50 +14,7 @@
31009 #include <asm/alternative-asm.h>
31010 #include <asm/asm.h>
31011 #include <asm/smap.h>
31012 -
31013 -/* Standard copy_to_user with segment limit checking */
31014 -ENTRY(_copy_to_user)
31015 - GET_THREAD_INFO(%rax)
31016 - movq %rdi,%rcx
31017 - addq %rdx,%rcx
31018 - jc bad_to_user
31019 - cmpq TI_addr_limit(%rax),%rcx
31020 - ja bad_to_user
31021 - ALTERNATIVE_2 "jmp copy_user_generic_unrolled", \
31022 - "jmp copy_user_generic_string", \
31023 - X86_FEATURE_REP_GOOD, \
31024 - "jmp copy_user_enhanced_fast_string", \
31025 - X86_FEATURE_ERMS
31026 -ENDPROC(_copy_to_user)
31027 -
31028 -/* Standard copy_from_user with segment limit checking */
31029 -ENTRY(_copy_from_user)
31030 - GET_THREAD_INFO(%rax)
31031 - movq %rsi,%rcx
31032 - addq %rdx,%rcx
31033 - jc bad_from_user
31034 - cmpq TI_addr_limit(%rax),%rcx
31035 - ja bad_from_user
31036 - ALTERNATIVE_2 "jmp copy_user_generic_unrolled", \
31037 - "jmp copy_user_generic_string", \
31038 - X86_FEATURE_REP_GOOD, \
31039 - "jmp copy_user_enhanced_fast_string", \
31040 - X86_FEATURE_ERMS
31041 -ENDPROC(_copy_from_user)
31042 -
31043 - .section .fixup,"ax"
31044 - /* must zero dest */
31045 -ENTRY(bad_from_user)
31046 -bad_from_user:
31047 - movl %edx,%ecx
31048 - xorl %eax,%eax
31049 - rep
31050 - stosb
31051 -bad_to_user:
31052 - movl %edx,%eax
31053 - ret
31054 -ENDPROC(bad_from_user)
31055 - .previous
31056 +#include <asm/pgtable.h>
31057
31058 /*
31059 * copy_user_generic_unrolled - memory copy with exception handling.
31060 @@ -73,6 +30,7 @@ ENDPROC(bad_from_user)
31061 * eax uncopied bytes or 0 if successful.
31062 */
31063 ENTRY(copy_user_generic_unrolled)
31064 + ASM_PAX_OPEN_USERLAND
31065 ASM_STAC
31066 cmpl $8,%edx
31067 jb 20f /* less then 8 bytes, go to byte copy loop */
31068 @@ -122,6 +80,8 @@ ENTRY(copy_user_generic_unrolled)
31069 jnz 21b
31070 23: xor %eax,%eax
31071 ASM_CLAC
31072 + ASM_PAX_CLOSE_USERLAND
31073 + pax_force_retaddr
31074 ret
31075
31076 .section .fixup,"ax"
31077 @@ -175,6 +135,7 @@ ENDPROC(copy_user_generic_unrolled)
31078 * eax uncopied bytes or 0 if successful.
31079 */
31080 ENTRY(copy_user_generic_string)
31081 + ASM_PAX_OPEN_USERLAND
31082 ASM_STAC
31083 cmpl $8,%edx
31084 jb 2f /* less than 8 bytes, go to byte copy loop */
31085 @@ -189,6 +150,8 @@ ENTRY(copy_user_generic_string)
31086 movsb
31087 xorl %eax,%eax
31088 ASM_CLAC
31089 + ASM_PAX_CLOSE_USERLAND
31090 + pax_force_retaddr
31091 ret
31092
31093 .section .fixup,"ax"
31094 @@ -214,12 +177,15 @@ ENDPROC(copy_user_generic_string)
31095 * eax uncopied bytes or 0 if successful.
31096 */
31097 ENTRY(copy_user_enhanced_fast_string)
31098 + ASM_PAX_OPEN_USERLAND
31099 ASM_STAC
31100 movl %edx,%ecx
31101 1: rep
31102 movsb
31103 xorl %eax,%eax
31104 ASM_CLAC
31105 + ASM_PAX_CLOSE_USERLAND
31106 + pax_force_retaddr
31107 ret
31108
31109 .section .fixup,"ax"
31110 @@ -235,6 +201,16 @@ ENDPROC(copy_user_enhanced_fast_string)
31111 * This will force destination/source out of cache for more performance.
31112 */
31113 ENTRY(__copy_user_nocache)
31114 +
31115 +#ifdef CONFIG_PAX_MEMORY_UDEREF
31116 + mov pax_user_shadow_base,%rcx
31117 + cmp %rcx,%rsi
31118 + jae 1f
31119 + add %rcx,%rsi
31120 +1:
31121 +#endif
31122 +
31123 + ASM_PAX_OPEN_USERLAND
31124 ASM_STAC
31125 cmpl $8,%edx
31126 jb 20f /* less then 8 bytes, go to byte copy loop */
31127 @@ -284,7 +260,9 @@ ENTRY(__copy_user_nocache)
31128 jnz 21b
31129 23: xorl %eax,%eax
31130 ASM_CLAC
31131 + ASM_PAX_CLOSE_USERLAND
31132 sfence
31133 + pax_force_retaddr
31134 ret
31135
31136 .section .fixup,"ax"
31137 diff --git a/arch/x86/lib/csum-copy_64.S b/arch/x86/lib/csum-copy_64.S
31138 index 7e48807..cc966ff 100644
31139 --- a/arch/x86/lib/csum-copy_64.S
31140 +++ b/arch/x86/lib/csum-copy_64.S
31141 @@ -8,6 +8,7 @@
31142 #include <linux/linkage.h>
31143 #include <asm/errno.h>
31144 #include <asm/asm.h>
31145 +#include <asm/alternative-asm.h>
31146
31147 /*
31148 * Checksum copy with exception handling.
31149 @@ -52,7 +53,7 @@ ENTRY(csum_partial_copy_generic)
31150 .Lignore:
31151 subq $7*8, %rsp
31152 movq %rbx, 2*8(%rsp)
31153 - movq %r12, 3*8(%rsp)
31154 + movq %r15, 3*8(%rsp)
31155 movq %r14, 4*8(%rsp)
31156 movq %r13, 5*8(%rsp)
31157 movq %rbp, 6*8(%rsp)
31158 @@ -64,16 +65,16 @@ ENTRY(csum_partial_copy_generic)
31159 movl %edx, %ecx
31160
31161 xorl %r9d, %r9d
31162 - movq %rcx, %r12
31163 + movq %rcx, %r15
31164
31165 - shrq $6, %r12
31166 + shrq $6, %r15
31167 jz .Lhandle_tail /* < 64 */
31168
31169 clc
31170
31171 /* main loop. clear in 64 byte blocks */
31172 /* r9: zero, r8: temp2, rbx: temp1, rax: sum, rcx: saved length */
31173 - /* r11: temp3, rdx: temp4, r12 loopcnt */
31174 + /* r11: temp3, rdx: temp4, r15 loopcnt */
31175 /* r10: temp5, rbp: temp6, r14 temp7, r13 temp8 */
31176 .p2align 4
31177 .Lloop:
31178 @@ -107,7 +108,7 @@ ENTRY(csum_partial_copy_generic)
31179 adcq %r14, %rax
31180 adcq %r13, %rax
31181
31182 - decl %r12d
31183 + decl %r15d
31184
31185 dest
31186 movq %rbx, (%rsi)
31187 @@ -200,11 +201,12 @@ ENTRY(csum_partial_copy_generic)
31188
31189 .Lende:
31190 movq 2*8(%rsp), %rbx
31191 - movq 3*8(%rsp), %r12
31192 + movq 3*8(%rsp), %r15
31193 movq 4*8(%rsp), %r14
31194 movq 5*8(%rsp), %r13
31195 movq 6*8(%rsp), %rbp
31196 addq $7*8, %rsp
31197 + pax_force_retaddr
31198 ret
31199
31200 /* Exception handlers. Very simple, zeroing is done in the wrappers */
31201 diff --git a/arch/x86/lib/csum-wrappers_64.c b/arch/x86/lib/csum-wrappers_64.c
31202 index 1318f75..44c30fd 100644
31203 --- a/arch/x86/lib/csum-wrappers_64.c
31204 +++ b/arch/x86/lib/csum-wrappers_64.c
31205 @@ -52,10 +52,12 @@ csum_partial_copy_from_user(const void __user *src, void *dst,
31206 len -= 2;
31207 }
31208 }
31209 + pax_open_userland();
31210 stac();
31211 - isum = csum_partial_copy_generic((__force const void *)src,
31212 + isum = csum_partial_copy_generic((const void __force_kernel *)____m(src),
31213 dst, len, isum, errp, NULL);
31214 clac();
31215 + pax_close_userland();
31216 if (unlikely(*errp))
31217 goto out_err;
31218
31219 @@ -109,10 +111,12 @@ csum_partial_copy_to_user(const void *src, void __user *dst,
31220 }
31221
31222 *errp = 0;
31223 + pax_open_userland();
31224 stac();
31225 - ret = csum_partial_copy_generic(src, (void __force *)dst,
31226 + ret = csum_partial_copy_generic(src, (void __force_kernel *)____m(dst),
31227 len, isum, NULL, errp);
31228 clac();
31229 + pax_close_userland();
31230 return ret;
31231 }
31232 EXPORT_SYMBOL(csum_partial_copy_to_user);
31233 diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S
31234 index 46668cd..a3bdfb9 100644
31235 --- a/arch/x86/lib/getuser.S
31236 +++ b/arch/x86/lib/getuser.S
31237 @@ -32,42 +32,93 @@
31238 #include <asm/thread_info.h>
31239 #include <asm/asm.h>
31240 #include <asm/smap.h>
31241 +#include <asm/segment.h>
31242 +#include <asm/pgtable.h>
31243 +#include <asm/alternative-asm.h>
31244 +
31245 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
31246 +#define __copyuser_seg gs;
31247 +#else
31248 +#define __copyuser_seg
31249 +#endif
31250
31251 .text
31252 ENTRY(__get_user_1)
31253 +
31254 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31255 GET_THREAD_INFO(%_ASM_DX)
31256 cmp TI_addr_limit(%_ASM_DX),%_ASM_AX
31257 jae bad_get_user
31258 +
31259 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31260 + mov pax_user_shadow_base,%_ASM_DX
31261 + cmp %_ASM_DX,%_ASM_AX
31262 + jae 1234f
31263 + add %_ASM_DX,%_ASM_AX
31264 +1234:
31265 +#endif
31266 +
31267 +#endif
31268 +
31269 ASM_STAC
31270 -1: movzbl (%_ASM_AX),%edx
31271 +1: __copyuser_seg movzbl (%_ASM_AX),%edx
31272 xor %eax,%eax
31273 ASM_CLAC
31274 + pax_force_retaddr
31275 ret
31276 ENDPROC(__get_user_1)
31277
31278 ENTRY(__get_user_2)
31279 add $1,%_ASM_AX
31280 +
31281 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31282 jc bad_get_user
31283 GET_THREAD_INFO(%_ASM_DX)
31284 cmp TI_addr_limit(%_ASM_DX),%_ASM_AX
31285 jae bad_get_user
31286 +
31287 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31288 + mov pax_user_shadow_base,%_ASM_DX
31289 + cmp %_ASM_DX,%_ASM_AX
31290 + jae 1234f
31291 + add %_ASM_DX,%_ASM_AX
31292 +1234:
31293 +#endif
31294 +
31295 +#endif
31296 +
31297 ASM_STAC
31298 -2: movzwl -1(%_ASM_AX),%edx
31299 +2: __copyuser_seg movzwl -1(%_ASM_AX),%edx
31300 xor %eax,%eax
31301 ASM_CLAC
31302 + pax_force_retaddr
31303 ret
31304 ENDPROC(__get_user_2)
31305
31306 ENTRY(__get_user_4)
31307 add $3,%_ASM_AX
31308 +
31309 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31310 jc bad_get_user
31311 GET_THREAD_INFO(%_ASM_DX)
31312 cmp TI_addr_limit(%_ASM_DX),%_ASM_AX
31313 jae bad_get_user
31314 +
31315 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31316 + mov pax_user_shadow_base,%_ASM_DX
31317 + cmp %_ASM_DX,%_ASM_AX
31318 + jae 1234f
31319 + add %_ASM_DX,%_ASM_AX
31320 +1234:
31321 +#endif
31322 +
31323 +#endif
31324 +
31325 ASM_STAC
31326 -3: movl -3(%_ASM_AX),%edx
31327 +3: __copyuser_seg movl -3(%_ASM_AX),%edx
31328 xor %eax,%eax
31329 ASM_CLAC
31330 + pax_force_retaddr
31331 ret
31332 ENDPROC(__get_user_4)
31333
31334 @@ -78,10 +129,20 @@ ENTRY(__get_user_8)
31335 GET_THREAD_INFO(%_ASM_DX)
31336 cmp TI_addr_limit(%_ASM_DX),%_ASM_AX
31337 jae bad_get_user
31338 +
31339 +#ifdef CONFIG_PAX_MEMORY_UDEREF
31340 + mov pax_user_shadow_base,%_ASM_DX
31341 + cmp %_ASM_DX,%_ASM_AX
31342 + jae 1234f
31343 + add %_ASM_DX,%_ASM_AX
31344 +1234:
31345 +#endif
31346 +
31347 ASM_STAC
31348 4: movq -7(%_ASM_AX),%rdx
31349 xor %eax,%eax
31350 ASM_CLAC
31351 + pax_force_retaddr
31352 ret
31353 #else
31354 add $7,%_ASM_AX
31355 @@ -90,10 +151,11 @@ ENTRY(__get_user_8)
31356 cmp TI_addr_limit(%_ASM_DX),%_ASM_AX
31357 jae bad_get_user_8
31358 ASM_STAC
31359 -4: movl -7(%_ASM_AX),%edx
31360 -5: movl -3(%_ASM_AX),%ecx
31361 +4: __copyuser_seg movl -7(%_ASM_AX),%edx
31362 +5: __copyuser_seg movl -3(%_ASM_AX),%ecx
31363 xor %eax,%eax
31364 ASM_CLAC
31365 + pax_force_retaddr
31366 ret
31367 #endif
31368 ENDPROC(__get_user_8)
31369 @@ -103,6 +165,7 @@ bad_get_user:
31370 xor %edx,%edx
31371 mov $(-EFAULT),%_ASM_AX
31372 ASM_CLAC
31373 + pax_force_retaddr
31374 ret
31375 END(bad_get_user)
31376
31377 @@ -112,6 +175,7 @@ bad_get_user_8:
31378 xor %ecx,%ecx
31379 mov $(-EFAULT),%_ASM_AX
31380 ASM_CLAC
31381 + pax_force_retaddr
31382 ret
31383 END(bad_get_user_8)
31384 #endif
31385 diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c
31386 index 8f72b33..4667a46 100644
31387 --- a/arch/x86/lib/insn.c
31388 +++ b/arch/x86/lib/insn.c
31389 @@ -20,8 +20,10 @@
31390
31391 #ifdef __KERNEL__
31392 #include <linux/string.h>
31393 +#include <asm/pgtable_types.h>
31394 #else
31395 #include <string.h>
31396 +#define ktla_ktva(addr) addr
31397 #endif
31398 #include <asm/inat.h>
31399 #include <asm/insn.h>
31400 @@ -60,9 +62,9 @@ void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64)
31401 buf_len = MAX_INSN_SIZE;
31402
31403 memset(insn, 0, sizeof(*insn));
31404 - insn->kaddr = kaddr;
31405 - insn->end_kaddr = kaddr + buf_len;
31406 - insn->next_byte = kaddr;
31407 + insn->kaddr = (void *)ktla_ktva((unsigned long)kaddr);
31408 + insn->end_kaddr = insn->kaddr + buf_len;
31409 + insn->next_byte = insn->kaddr;
31410 insn->x86_64 = x86_64 ? 1 : 0;
31411 insn->opnd_bytes = 4;
31412 if (x86_64)
31413 diff --git a/arch/x86/lib/iomap_copy_64.S b/arch/x86/lib/iomap_copy_64.S
31414 index 33147fe..12a8815 100644
31415 --- a/arch/x86/lib/iomap_copy_64.S
31416 +++ b/arch/x86/lib/iomap_copy_64.S
31417 @@ -16,6 +16,7 @@
31418 */
31419
31420 #include <linux/linkage.h>
31421 +#include <asm/alternative-asm.h>
31422
31423 /*
31424 * override generic version in lib/iomap_copy.c
31425 @@ -23,5 +24,6 @@
31426 ENTRY(__iowrite32_copy)
31427 movl %edx,%ecx
31428 rep movsd
31429 + pax_force_retaddr
31430 ret
31431 ENDPROC(__iowrite32_copy)
31432 diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
31433 index 16698bb..971d300 100644
31434 --- a/arch/x86/lib/memcpy_64.S
31435 +++ b/arch/x86/lib/memcpy_64.S
31436 @@ -36,6 +36,7 @@ ENTRY(memcpy)
31437 rep movsq
31438 movl %edx, %ecx
31439 rep movsb
31440 + pax_force_retaddr
31441 ret
31442 ENDPROC(memcpy)
31443 ENDPROC(__memcpy)
31444 @@ -48,6 +49,7 @@ ENTRY(memcpy_erms)
31445 movq %rdi, %rax
31446 movq %rdx, %rcx
31447 rep movsb
31448 + pax_force_retaddr
31449 ret
31450 ENDPROC(memcpy_erms)
31451
31452 @@ -132,6 +134,7 @@ ENTRY(memcpy_orig)
31453 movq %r9, 1*8(%rdi)
31454 movq %r10, -2*8(%rdi, %rdx)
31455 movq %r11, -1*8(%rdi, %rdx)
31456 + pax_force_retaddr
31457 retq
31458 .p2align 4
31459 .Lless_16bytes:
31460 @@ -144,6 +147,7 @@ ENTRY(memcpy_orig)
31461 movq -1*8(%rsi, %rdx), %r9
31462 movq %r8, 0*8(%rdi)
31463 movq %r9, -1*8(%rdi, %rdx)
31464 + pax_force_retaddr
31465 retq
31466 .p2align 4
31467 .Lless_8bytes:
31468 @@ -157,6 +161,7 @@ ENTRY(memcpy_orig)
31469 movl -4(%rsi, %rdx), %r8d
31470 movl %ecx, (%rdi)
31471 movl %r8d, -4(%rdi, %rdx)
31472 + pax_force_retaddr
31473 retq
31474 .p2align 4
31475 .Lless_3bytes:
31476 @@ -175,5 +180,6 @@ ENTRY(memcpy_orig)
31477 movb %cl, (%rdi)
31478
31479 .Lend:
31480 + pax_force_retaddr
31481 retq
31482 ENDPROC(memcpy_orig)
31483 diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
31484 index ca2afdd..2e474fa 100644
31485 --- a/arch/x86/lib/memmove_64.S
31486 +++ b/arch/x86/lib/memmove_64.S
31487 @@ -41,7 +41,7 @@ ENTRY(__memmove)
31488 jg 2f
31489
31490 .Lmemmove_begin_forward:
31491 - ALTERNATIVE "", "movq %rdx, %rcx; rep movsb; retq", X86_FEATURE_ERMS
31492 + ALTERNATIVE "", "movq %rdx, %rcx; rep movsb; pax_force_retaddr; retq", X86_FEATURE_ERMS
31493
31494 /*
31495 * movsq instruction have many startup latency
31496 @@ -204,6 +204,7 @@ ENTRY(__memmove)
31497 movb (%rsi), %r11b
31498 movb %r11b, (%rdi)
31499 13:
31500 + pax_force_retaddr
31501 retq
31502 ENDPROC(__memmove)
31503 ENDPROC(memmove)
31504 diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
31505 index 2661fad..b584d5c 100644
31506 --- a/arch/x86/lib/memset_64.S
31507 +++ b/arch/x86/lib/memset_64.S
31508 @@ -40,6 +40,7 @@ ENTRY(__memset)
31509 movl %edx,%ecx
31510 rep stosb
31511 movq %r9,%rax
31512 + pax_force_retaddr
31513 ret
31514 ENDPROC(memset)
31515 ENDPROC(__memset)
31516 @@ -61,6 +62,7 @@ ENTRY(memset_erms)
31517 movq %rdx,%rcx
31518 rep stosb
31519 movq %r9,%rax
31520 + pax_force_retaddr
31521 ret
31522 ENDPROC(memset_erms)
31523
31524 @@ -123,6 +125,7 @@ ENTRY(memset_orig)
31525
31526 .Lende:
31527 movq %r10,%rax
31528 + pax_force_retaddr
31529 ret
31530
31531 .Lbad_alignment:
31532 diff --git a/arch/x86/lib/mmx_32.c b/arch/x86/lib/mmx_32.c
31533 index e5e3ed8..d7c08c2 100644
31534 --- a/arch/x86/lib/mmx_32.c
31535 +++ b/arch/x86/lib/mmx_32.c
31536 @@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
31537 {
31538 void *p;
31539 int i;
31540 + unsigned long cr0;
31541
31542 if (unlikely(in_interrupt()))
31543 return __memcpy(to, from, len);
31544 @@ -39,44 +40,72 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
31545 kernel_fpu_begin();
31546
31547 __asm__ __volatile__ (
31548 - "1: prefetch (%0)\n" /* This set is 28 bytes */
31549 - " prefetch 64(%0)\n"
31550 - " prefetch 128(%0)\n"
31551 - " prefetch 192(%0)\n"
31552 - " prefetch 256(%0)\n"
31553 + "1: prefetch (%1)\n" /* This set is 28 bytes */
31554 + " prefetch 64(%1)\n"
31555 + " prefetch 128(%1)\n"
31556 + " prefetch 192(%1)\n"
31557 + " prefetch 256(%1)\n"
31558 "2: \n"
31559 ".section .fixup, \"ax\"\n"
31560 - "3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31561 + "3: \n"
31562 +
31563 +#ifdef CONFIG_PAX_KERNEXEC
31564 + " movl %%cr0, %0\n"
31565 + " movl %0, %%eax\n"
31566 + " andl $0xFFFEFFFF, %%eax\n"
31567 + " movl %%eax, %%cr0\n"
31568 +#endif
31569 +
31570 + " movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31571 +
31572 +#ifdef CONFIG_PAX_KERNEXEC
31573 + " movl %0, %%cr0\n"
31574 +#endif
31575 +
31576 " jmp 2b\n"
31577 ".previous\n"
31578 _ASM_EXTABLE(1b, 3b)
31579 - : : "r" (from));
31580 + : "=&r" (cr0) : "r" (from) : "ax");
31581
31582 for ( ; i > 5; i--) {
31583 __asm__ __volatile__ (
31584 - "1: prefetch 320(%0)\n"
31585 - "2: movq (%0), %%mm0\n"
31586 - " movq 8(%0), %%mm1\n"
31587 - " movq 16(%0), %%mm2\n"
31588 - " movq 24(%0), %%mm3\n"
31589 - " movq %%mm0, (%1)\n"
31590 - " movq %%mm1, 8(%1)\n"
31591 - " movq %%mm2, 16(%1)\n"
31592 - " movq %%mm3, 24(%1)\n"
31593 - " movq 32(%0), %%mm0\n"
31594 - " movq 40(%0), %%mm1\n"
31595 - " movq 48(%0), %%mm2\n"
31596 - " movq 56(%0), %%mm3\n"
31597 - " movq %%mm0, 32(%1)\n"
31598 - " movq %%mm1, 40(%1)\n"
31599 - " movq %%mm2, 48(%1)\n"
31600 - " movq %%mm3, 56(%1)\n"
31601 + "1: prefetch 320(%1)\n"
31602 + "2: movq (%1), %%mm0\n"
31603 + " movq 8(%1), %%mm1\n"
31604 + " movq 16(%1), %%mm2\n"
31605 + " movq 24(%1), %%mm3\n"
31606 + " movq %%mm0, (%2)\n"
31607 + " movq %%mm1, 8(%2)\n"
31608 + " movq %%mm2, 16(%2)\n"
31609 + " movq %%mm3, 24(%2)\n"
31610 + " movq 32(%1), %%mm0\n"
31611 + " movq 40(%1), %%mm1\n"
31612 + " movq 48(%1), %%mm2\n"
31613 + " movq 56(%1), %%mm3\n"
31614 + " movq %%mm0, 32(%2)\n"
31615 + " movq %%mm1, 40(%2)\n"
31616 + " movq %%mm2, 48(%2)\n"
31617 + " movq %%mm3, 56(%2)\n"
31618 ".section .fixup, \"ax\"\n"
31619 - "3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31620 + "3:\n"
31621 +
31622 +#ifdef CONFIG_PAX_KERNEXEC
31623 + " movl %%cr0, %0\n"
31624 + " movl %0, %%eax\n"
31625 + " andl $0xFFFEFFFF, %%eax\n"
31626 + " movl %%eax, %%cr0\n"
31627 +#endif
31628 +
31629 + " movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31630 +
31631 +#ifdef CONFIG_PAX_KERNEXEC
31632 + " movl %0, %%cr0\n"
31633 +#endif
31634 +
31635 " jmp 2b\n"
31636 ".previous\n"
31637 _ASM_EXTABLE(1b, 3b)
31638 - : : "r" (from), "r" (to) : "memory");
31639 + : "=&r" (cr0) : "r" (from), "r" (to) : "memory", "ax");
31640
31641 from += 64;
31642 to += 64;
31643 @@ -158,6 +187,7 @@ static void fast_clear_page(void *page)
31644 static void fast_copy_page(void *to, void *from)
31645 {
31646 int i;
31647 + unsigned long cr0;
31648
31649 kernel_fpu_begin();
31650
31651 @@ -166,42 +196,70 @@ static void fast_copy_page(void *to, void *from)
31652 * but that is for later. -AV
31653 */
31654 __asm__ __volatile__(
31655 - "1: prefetch (%0)\n"
31656 - " prefetch 64(%0)\n"
31657 - " prefetch 128(%0)\n"
31658 - " prefetch 192(%0)\n"
31659 - " prefetch 256(%0)\n"
31660 + "1: prefetch (%1)\n"
31661 + " prefetch 64(%1)\n"
31662 + " prefetch 128(%1)\n"
31663 + " prefetch 192(%1)\n"
31664 + " prefetch 256(%1)\n"
31665 "2: \n"
31666 ".section .fixup, \"ax\"\n"
31667 - "3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31668 + "3: \n"
31669 +
31670 +#ifdef CONFIG_PAX_KERNEXEC
31671 + " movl %%cr0, %0\n"
31672 + " movl %0, %%eax\n"
31673 + " andl $0xFFFEFFFF, %%eax\n"
31674 + " movl %%eax, %%cr0\n"
31675 +#endif
31676 +
31677 + " movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31678 +
31679 +#ifdef CONFIG_PAX_KERNEXEC
31680 + " movl %0, %%cr0\n"
31681 +#endif
31682 +
31683 " jmp 2b\n"
31684 ".previous\n"
31685 - _ASM_EXTABLE(1b, 3b) : : "r" (from));
31686 + _ASM_EXTABLE(1b, 3b) : "=&r" (cr0) : "r" (from) : "ax");
31687
31688 for (i = 0; i < (4096-320)/64; i++) {
31689 __asm__ __volatile__ (
31690 - "1: prefetch 320(%0)\n"
31691 - "2: movq (%0), %%mm0\n"
31692 - " movntq %%mm0, (%1)\n"
31693 - " movq 8(%0), %%mm1\n"
31694 - " movntq %%mm1, 8(%1)\n"
31695 - " movq 16(%0), %%mm2\n"
31696 - " movntq %%mm2, 16(%1)\n"
31697 - " movq 24(%0), %%mm3\n"
31698 - " movntq %%mm3, 24(%1)\n"
31699 - " movq 32(%0), %%mm4\n"
31700 - " movntq %%mm4, 32(%1)\n"
31701 - " movq 40(%0), %%mm5\n"
31702 - " movntq %%mm5, 40(%1)\n"
31703 - " movq 48(%0), %%mm6\n"
31704 - " movntq %%mm6, 48(%1)\n"
31705 - " movq 56(%0), %%mm7\n"
31706 - " movntq %%mm7, 56(%1)\n"
31707 + "1: prefetch 320(%1)\n"
31708 + "2: movq (%1), %%mm0\n"
31709 + " movntq %%mm0, (%2)\n"
31710 + " movq 8(%1), %%mm1\n"
31711 + " movntq %%mm1, 8(%2)\n"
31712 + " movq 16(%1), %%mm2\n"
31713 + " movntq %%mm2, 16(%2)\n"
31714 + " movq 24(%1), %%mm3\n"
31715 + " movntq %%mm3, 24(%2)\n"
31716 + " movq 32(%1), %%mm4\n"
31717 + " movntq %%mm4, 32(%2)\n"
31718 + " movq 40(%1), %%mm5\n"
31719 + " movntq %%mm5, 40(%2)\n"
31720 + " movq 48(%1), %%mm6\n"
31721 + " movntq %%mm6, 48(%2)\n"
31722 + " movq 56(%1), %%mm7\n"
31723 + " movntq %%mm7, 56(%2)\n"
31724 ".section .fixup, \"ax\"\n"
31725 - "3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31726 + "3:\n"
31727 +
31728 +#ifdef CONFIG_PAX_KERNEXEC
31729 + " movl %%cr0, %0\n"
31730 + " movl %0, %%eax\n"
31731 + " andl $0xFFFEFFFF, %%eax\n"
31732 + " movl %%eax, %%cr0\n"
31733 +#endif
31734 +
31735 + " movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31736 +
31737 +#ifdef CONFIG_PAX_KERNEXEC
31738 + " movl %0, %%cr0\n"
31739 +#endif
31740 +
31741 " jmp 2b\n"
31742 ".previous\n"
31743 - _ASM_EXTABLE(1b, 3b) : : "r" (from), "r" (to) : "memory");
31744 + _ASM_EXTABLE(1b, 3b) : "=&r" (cr0) : "r" (from), "r" (to) : "memory", "ax");
31745
31746 from += 64;
31747 to += 64;
31748 @@ -280,47 +338,76 @@ static void fast_clear_page(void *page)
31749 static void fast_copy_page(void *to, void *from)
31750 {
31751 int i;
31752 + unsigned long cr0;
31753
31754 kernel_fpu_begin();
31755
31756 __asm__ __volatile__ (
31757 - "1: prefetch (%0)\n"
31758 - " prefetch 64(%0)\n"
31759 - " prefetch 128(%0)\n"
31760 - " prefetch 192(%0)\n"
31761 - " prefetch 256(%0)\n"
31762 + "1: prefetch (%1)\n"
31763 + " prefetch 64(%1)\n"
31764 + " prefetch 128(%1)\n"
31765 + " prefetch 192(%1)\n"
31766 + " prefetch 256(%1)\n"
31767 "2: \n"
31768 ".section .fixup, \"ax\"\n"
31769 - "3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31770 + "3: \n"
31771 +
31772 +#ifdef CONFIG_PAX_KERNEXEC
31773 + " movl %%cr0, %0\n"
31774 + " movl %0, %%eax\n"
31775 + " andl $0xFFFEFFFF, %%eax\n"
31776 + " movl %%eax, %%cr0\n"
31777 +#endif
31778 +
31779 + " movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
31780 +
31781 +#ifdef CONFIG_PAX_KERNEXEC
31782 + " movl %0, %%cr0\n"
31783 +#endif
31784 +
31785 " jmp 2b\n"
31786 ".previous\n"
31787 - _ASM_EXTABLE(1b, 3b) : : "r" (from));
31788 + _ASM_EXTABLE(1b, 3b) : "=&r" (cr0) : "r" (from) : "ax");
31789
31790 for (i = 0; i < 4096/64; i++) {
31791 __asm__ __volatile__ (
31792 - "1: prefetch 320(%0)\n"
31793 - "2: movq (%0), %%mm0\n"
31794 - " movq 8(%0), %%mm1\n"
31795 - " movq 16(%0), %%mm2\n"
31796 - " movq 24(%0), %%mm3\n"
31797 - " movq %%mm0, (%1)\n"
31798 - " movq %%mm1, 8(%1)\n"
31799 - " movq %%mm2, 16(%1)\n"
31800 - " movq %%mm3, 24(%1)\n"
31801 - " movq 32(%0), %%mm0\n"
31802 - " movq 40(%0), %%mm1\n"
31803 - " movq 48(%0), %%mm2\n"
31804 - " movq 56(%0), %%mm3\n"
31805 - " movq %%mm0, 32(%1)\n"
31806 - " movq %%mm1, 40(%1)\n"
31807 - " movq %%mm2, 48(%1)\n"
31808 - " movq %%mm3, 56(%1)\n"
31809 + "1: prefetch 320(%1)\n"
31810 + "2: movq (%1), %%mm0\n"
31811 + " movq 8(%1), %%mm1\n"
31812 + " movq 16(%1), %%mm2\n"
31813 + " movq 24(%1), %%mm3\n"
31814 + " movq %%mm0, (%2)\n"
31815 + " movq %%mm1, 8(%2)\n"
31816 + " movq %%mm2, 16(%2)\n"
31817 + " movq %%mm3, 24(%2)\n"
31818 + " movq 32(%1), %%mm0\n"
31819 + " movq 40(%1), %%mm1\n"
31820 + " movq 48(%1), %%mm2\n"
31821 + " movq 56(%1), %%mm3\n"
31822 + " movq %%mm0, 32(%2)\n"
31823 + " movq %%mm1, 40(%2)\n"
31824 + " movq %%mm2, 48(%2)\n"
31825 + " movq %%mm3, 56(%2)\n"
31826 ".section .fixup, \"ax\"\n"
31827 - "3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31828 + "3:\n"
31829 +
31830 +#ifdef CONFIG_PAX_KERNEXEC
31831 + " movl %%cr0, %0\n"
31832 + " movl %0, %%eax\n"
31833 + " andl $0xFFFEFFFF, %%eax\n"
31834 + " movl %%eax, %%cr0\n"
31835 +#endif
31836 +
31837 + " movw $0x05EB, 1b\n" /* jmp on 5 bytes */
31838 +
31839 +#ifdef CONFIG_PAX_KERNEXEC
31840 + " movl %0, %%cr0\n"
31841 +#endif
31842 +
31843 " jmp 2b\n"
31844 ".previous\n"
31845 _ASM_EXTABLE(1b, 3b)
31846 - : : "r" (from), "r" (to) : "memory");
31847 + : "=&r" (cr0) : "r" (from), "r" (to) : "memory", "ax");
31848
31849 from += 64;
31850 to += 64;
31851 diff --git a/arch/x86/lib/msr-reg.S b/arch/x86/lib/msr-reg.S
31852 index c815564..303dcfa 100644
31853 --- a/arch/x86/lib/msr-reg.S
31854 +++ b/arch/x86/lib/msr-reg.S
31855 @@ -2,6 +2,7 @@
31856 #include <linux/errno.h>
31857 #include <asm/asm.h>
31858 #include <asm/msr.h>
31859 +#include <asm/alternative-asm.h>
31860
31861 #ifdef CONFIG_X86_64
31862 /*
31863 @@ -34,6 +35,7 @@ ENTRY(\op\()_safe_regs)
31864 movl %edi, 28(%r10)
31865 popq %rbp
31866 popq %rbx
31867 + pax_force_retaddr
31868 ret
31869 3:
31870 movl $-EIO, %r11d
31871 diff --git a/arch/x86/lib/putuser.S b/arch/x86/lib/putuser.S
31872 index e0817a1..bc9cf66 100644
31873 --- a/arch/x86/lib/putuser.S
31874 +++ b/arch/x86/lib/putuser.S
31875 @@ -15,7 +15,9 @@
31876 #include <asm/errno.h>
31877 #include <asm/asm.h>
31878 #include <asm/smap.h>
31879 -
31880 +#include <asm/segment.h>
31881 +#include <asm/pgtable.h>
31882 +#include <asm/alternative-asm.h>
31883
31884 /*
31885 * __put_user_X
31886 @@ -29,55 +31,124 @@
31887 * as they get called from within inline assembly.
31888 */
31889
31890 -#define ENTER GET_THREAD_INFO(%_ASM_BX)
31891 -#define EXIT ASM_CLAC ; \
31892 +#define ENTER
31893 +#define EXIT ASM_CLAC ; \
31894 + pax_force_retaddr ; \
31895 ret
31896
31897 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31898 +#define _DEST %_ASM_CX,%_ASM_BX
31899 +#else
31900 +#define _DEST %_ASM_CX
31901 +#endif
31902 +
31903 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
31904 +#define __copyuser_seg gs;
31905 +#else
31906 +#define __copyuser_seg
31907 +#endif
31908 +
31909 .text
31910 ENTRY(__put_user_1)
31911 ENTER
31912 +
31913 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31914 + GET_THREAD_INFO(%_ASM_BX)
31915 cmp TI_addr_limit(%_ASM_BX),%_ASM_CX
31916 jae bad_put_user
31917 +
31918 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31919 + mov pax_user_shadow_base,%_ASM_BX
31920 + cmp %_ASM_BX,%_ASM_CX
31921 + jb 1234f
31922 + xor %ebx,%ebx
31923 +1234:
31924 +#endif
31925 +
31926 +#endif
31927 +
31928 ASM_STAC
31929 -1: movb %al,(%_ASM_CX)
31930 +1: __copyuser_seg movb %al,(_DEST)
31931 xor %eax,%eax
31932 EXIT
31933 ENDPROC(__put_user_1)
31934
31935 ENTRY(__put_user_2)
31936 ENTER
31937 +
31938 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31939 + GET_THREAD_INFO(%_ASM_BX)
31940 mov TI_addr_limit(%_ASM_BX),%_ASM_BX
31941 sub $1,%_ASM_BX
31942 cmp %_ASM_BX,%_ASM_CX
31943 jae bad_put_user
31944 +
31945 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31946 + mov pax_user_shadow_base,%_ASM_BX
31947 + cmp %_ASM_BX,%_ASM_CX
31948 + jb 1234f
31949 + xor %ebx,%ebx
31950 +1234:
31951 +#endif
31952 +
31953 +#endif
31954 +
31955 ASM_STAC
31956 -2: movw %ax,(%_ASM_CX)
31957 +2: __copyuser_seg movw %ax,(_DEST)
31958 xor %eax,%eax
31959 EXIT
31960 ENDPROC(__put_user_2)
31961
31962 ENTRY(__put_user_4)
31963 ENTER
31964 +
31965 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31966 + GET_THREAD_INFO(%_ASM_BX)
31967 mov TI_addr_limit(%_ASM_BX),%_ASM_BX
31968 sub $3,%_ASM_BX
31969 cmp %_ASM_BX,%_ASM_CX
31970 jae bad_put_user
31971 +
31972 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31973 + mov pax_user_shadow_base,%_ASM_BX
31974 + cmp %_ASM_BX,%_ASM_CX
31975 + jb 1234f
31976 + xor %ebx,%ebx
31977 +1234:
31978 +#endif
31979 +
31980 +#endif
31981 +
31982 ASM_STAC
31983 -3: movl %eax,(%_ASM_CX)
31984 +3: __copyuser_seg movl %eax,(_DEST)
31985 xor %eax,%eax
31986 EXIT
31987 ENDPROC(__put_user_4)
31988
31989 ENTRY(__put_user_8)
31990 ENTER
31991 +
31992 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_MEMORY_UDEREF)
31993 + GET_THREAD_INFO(%_ASM_BX)
31994 mov TI_addr_limit(%_ASM_BX),%_ASM_BX
31995 sub $7,%_ASM_BX
31996 cmp %_ASM_BX,%_ASM_CX
31997 jae bad_put_user
31998 +
31999 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
32000 + mov pax_user_shadow_base,%_ASM_BX
32001 + cmp %_ASM_BX,%_ASM_CX
32002 + jb 1234f
32003 + xor %ebx,%ebx
32004 +1234:
32005 +#endif
32006 +
32007 +#endif
32008 +
32009 ASM_STAC
32010 -4: mov %_ASM_AX,(%_ASM_CX)
32011 +4: __copyuser_seg mov %_ASM_AX,(_DEST)
32012 #ifdef CONFIG_X86_32
32013 -5: movl %edx,4(%_ASM_CX)
32014 +5: __copyuser_seg movl %edx,4(_DEST)
32015 #endif
32016 xor %eax,%eax
32017 EXIT
32018 diff --git a/arch/x86/lib/rwsem.S b/arch/x86/lib/rwsem.S
32019 index 40027db..37bb69d 100644
32020 --- a/arch/x86/lib/rwsem.S
32021 +++ b/arch/x86/lib/rwsem.S
32022 @@ -90,6 +90,7 @@ ENTRY(call_rwsem_down_read_failed)
32023 call rwsem_down_read_failed
32024 __ASM_SIZE(pop,) %__ASM_REG(dx)
32025 restore_common_regs
32026 + pax_force_retaddr
32027 ret
32028 ENDPROC(call_rwsem_down_read_failed)
32029
32030 @@ -98,6 +99,7 @@ ENTRY(call_rwsem_down_write_failed)
32031 movq %rax,%rdi
32032 call rwsem_down_write_failed
32033 restore_common_regs
32034 + pax_force_retaddr
32035 ret
32036 ENDPROC(call_rwsem_down_write_failed)
32037
32038 @@ -109,7 +111,8 @@ ENTRY(call_rwsem_wake)
32039 movq %rax,%rdi
32040 call rwsem_wake
32041 restore_common_regs
32042 -1: ret
32043 +1: pax_force_retaddr
32044 + ret
32045 ENDPROC(call_rwsem_wake)
32046
32047 ENTRY(call_rwsem_downgrade_wake)
32048 @@ -119,5 +122,6 @@ ENTRY(call_rwsem_downgrade_wake)
32049 call rwsem_downgrade_wake
32050 __ASM_SIZE(pop,) %__ASM_REG(dx)
32051 restore_common_regs
32052 + pax_force_retaddr
32053 ret
32054 ENDPROC(call_rwsem_downgrade_wake)
32055 diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
32056 index 91d93b9..4b22130 100644
32057 --- a/arch/x86/lib/usercopy_32.c
32058 +++ b/arch/x86/lib/usercopy_32.c
32059 @@ -42,11 +42,13 @@ do { \
32060 int __d0; \
32061 might_fault(); \
32062 __asm__ __volatile__( \
32063 + __COPYUSER_SET_ES \
32064 ASM_STAC "\n" \
32065 "0: rep; stosl\n" \
32066 " movl %2,%0\n" \
32067 "1: rep; stosb\n" \
32068 "2: " ASM_CLAC "\n" \
32069 + __COPYUSER_RESTORE_ES \
32070 ".section .fixup,\"ax\"\n" \
32071 "3: lea 0(%2,%0,4),%0\n" \
32072 " jmp 2b\n" \
32073 @@ -98,7 +100,7 @@ EXPORT_SYMBOL(__clear_user);
32074
32075 #ifdef CONFIG_X86_INTEL_USERCOPY
32076 static unsigned long
32077 -__copy_user_intel(void __user *to, const void *from, unsigned long size)
32078 +__generic_copy_to_user_intel(void __user *to, const void *from, unsigned long size)
32079 {
32080 int d0, d1;
32081 __asm__ __volatile__(
32082 @@ -110,36 +112,36 @@ __copy_user_intel(void __user *to, const void *from, unsigned long size)
32083 " .align 2,0x90\n"
32084 "3: movl 0(%4), %%eax\n"
32085 "4: movl 4(%4), %%edx\n"
32086 - "5: movl %%eax, 0(%3)\n"
32087 - "6: movl %%edx, 4(%3)\n"
32088 + "5: "__copyuser_seg" movl %%eax, 0(%3)\n"
32089 + "6: "__copyuser_seg" movl %%edx, 4(%3)\n"
32090 "7: movl 8(%4), %%eax\n"
32091 "8: movl 12(%4),%%edx\n"
32092 - "9: movl %%eax, 8(%3)\n"
32093 - "10: movl %%edx, 12(%3)\n"
32094 + "9: "__copyuser_seg" movl %%eax, 8(%3)\n"
32095 + "10: "__copyuser_seg" movl %%edx, 12(%3)\n"
32096 "11: movl 16(%4), %%eax\n"
32097 "12: movl 20(%4), %%edx\n"
32098 - "13: movl %%eax, 16(%3)\n"
32099 - "14: movl %%edx, 20(%3)\n"
32100 + "13: "__copyuser_seg" movl %%eax, 16(%3)\n"
32101 + "14: "__copyuser_seg" movl %%edx, 20(%3)\n"
32102 "15: movl 24(%4), %%eax\n"
32103 "16: movl 28(%4), %%edx\n"
32104 - "17: movl %%eax, 24(%3)\n"
32105 - "18: movl %%edx, 28(%3)\n"
32106 + "17: "__copyuser_seg" movl %%eax, 24(%3)\n"
32107 + "18: "__copyuser_seg" movl %%edx, 28(%3)\n"
32108 "19: movl 32(%4), %%eax\n"
32109 "20: movl 36(%4), %%edx\n"
32110 - "21: movl %%eax, 32(%3)\n"
32111 - "22: movl %%edx, 36(%3)\n"
32112 + "21: "__copyuser_seg" movl %%eax, 32(%3)\n"
32113 + "22: "__copyuser_seg" movl %%edx, 36(%3)\n"
32114 "23: movl 40(%4), %%eax\n"
32115 "24: movl 44(%4), %%edx\n"
32116 - "25: movl %%eax, 40(%3)\n"
32117 - "26: movl %%edx, 44(%3)\n"
32118 + "25: "__copyuser_seg" movl %%eax, 40(%3)\n"
32119 + "26: "__copyuser_seg" movl %%edx, 44(%3)\n"
32120 "27: movl 48(%4), %%eax\n"
32121 "28: movl 52(%4), %%edx\n"
32122 - "29: movl %%eax, 48(%3)\n"
32123 - "30: movl %%edx, 52(%3)\n"
32124 + "29: "__copyuser_seg" movl %%eax, 48(%3)\n"
32125 + "30: "__copyuser_seg" movl %%edx, 52(%3)\n"
32126 "31: movl 56(%4), %%eax\n"
32127 "32: movl 60(%4), %%edx\n"
32128 - "33: movl %%eax, 56(%3)\n"
32129 - "34: movl %%edx, 60(%3)\n"
32130 + "33: "__copyuser_seg" movl %%eax, 56(%3)\n"
32131 + "34: "__copyuser_seg" movl %%edx, 60(%3)\n"
32132 " addl $-64, %0\n"
32133 " addl $64, %4\n"
32134 " addl $64, %3\n"
32135 @@ -149,10 +151,116 @@ __copy_user_intel(void __user *to, const void *from, unsigned long size)
32136 " shrl $2, %0\n"
32137 " andl $3, %%eax\n"
32138 " cld\n"
32139 + __COPYUSER_SET_ES
32140 "99: rep; movsl\n"
32141 "36: movl %%eax, %0\n"
32142 "37: rep; movsb\n"
32143 "100:\n"
32144 + __COPYUSER_RESTORE_ES
32145 + ".section .fixup,\"ax\"\n"
32146 + "101: lea 0(%%eax,%0,4),%0\n"
32147 + " jmp 100b\n"
32148 + ".previous\n"
32149 + _ASM_EXTABLE(1b,100b)
32150 + _ASM_EXTABLE(2b,100b)
32151 + _ASM_EXTABLE(3b,100b)
32152 + _ASM_EXTABLE(4b,100b)
32153 + _ASM_EXTABLE(5b,100b)
32154 + _ASM_EXTABLE(6b,100b)
32155 + _ASM_EXTABLE(7b,100b)
32156 + _ASM_EXTABLE(8b,100b)
32157 + _ASM_EXTABLE(9b,100b)
32158 + _ASM_EXTABLE(10b,100b)
32159 + _ASM_EXTABLE(11b,100b)
32160 + _ASM_EXTABLE(12b,100b)
32161 + _ASM_EXTABLE(13b,100b)
32162 + _ASM_EXTABLE(14b,100b)
32163 + _ASM_EXTABLE(15b,100b)
32164 + _ASM_EXTABLE(16b,100b)
32165 + _ASM_EXTABLE(17b,100b)
32166 + _ASM_EXTABLE(18b,100b)
32167 + _ASM_EXTABLE(19b,100b)
32168 + _ASM_EXTABLE(20b,100b)
32169 + _ASM_EXTABLE(21b,100b)
32170 + _ASM_EXTABLE(22b,100b)
32171 + _ASM_EXTABLE(23b,100b)
32172 + _ASM_EXTABLE(24b,100b)
32173 + _ASM_EXTABLE(25b,100b)
32174 + _ASM_EXTABLE(26b,100b)
32175 + _ASM_EXTABLE(27b,100b)
32176 + _ASM_EXTABLE(28b,100b)
32177 + _ASM_EXTABLE(29b,100b)
32178 + _ASM_EXTABLE(30b,100b)
32179 + _ASM_EXTABLE(31b,100b)
32180 + _ASM_EXTABLE(32b,100b)
32181 + _ASM_EXTABLE(33b,100b)
32182 + _ASM_EXTABLE(34b,100b)
32183 + _ASM_EXTABLE(35b,100b)
32184 + _ASM_EXTABLE(36b,100b)
32185 + _ASM_EXTABLE(37b,100b)
32186 + _ASM_EXTABLE(99b,101b)
32187 + : "=&c"(size), "=&D" (d0), "=&S" (d1)
32188 + : "1"(to), "2"(from), "0"(size)
32189 + : "eax", "edx", "memory");
32190 + return size;
32191 +}
32192 +
32193 +static unsigned long
32194 +__generic_copy_from_user_intel(void *to, const void __user *from, unsigned long size)
32195 +{
32196 + int d0, d1;
32197 + __asm__ __volatile__(
32198 + " .align 2,0x90\n"
32199 + "1: "__copyuser_seg" movl 32(%4), %%eax\n"
32200 + " cmpl $67, %0\n"
32201 + " jbe 3f\n"
32202 + "2: "__copyuser_seg" movl 64(%4), %%eax\n"
32203 + " .align 2,0x90\n"
32204 + "3: "__copyuser_seg" movl 0(%4), %%eax\n"
32205 + "4: "__copyuser_seg" movl 4(%4), %%edx\n"
32206 + "5: movl %%eax, 0(%3)\n"
32207 + "6: movl %%edx, 4(%3)\n"
32208 + "7: "__copyuser_seg" movl 8(%4), %%eax\n"
32209 + "8: "__copyuser_seg" movl 12(%4),%%edx\n"
32210 + "9: movl %%eax, 8(%3)\n"
32211 + "10: movl %%edx, 12(%3)\n"
32212 + "11: "__copyuser_seg" movl 16(%4), %%eax\n"
32213 + "12: "__copyuser_seg" movl 20(%4), %%edx\n"
32214 + "13: movl %%eax, 16(%3)\n"
32215 + "14: movl %%edx, 20(%3)\n"
32216 + "15: "__copyuser_seg" movl 24(%4), %%eax\n"
32217 + "16: "__copyuser_seg" movl 28(%4), %%edx\n"
32218 + "17: movl %%eax, 24(%3)\n"
32219 + "18: movl %%edx, 28(%3)\n"
32220 + "19: "__copyuser_seg" movl 32(%4), %%eax\n"
32221 + "20: "__copyuser_seg" movl 36(%4), %%edx\n"
32222 + "21: movl %%eax, 32(%3)\n"
32223 + "22: movl %%edx, 36(%3)\n"
32224 + "23: "__copyuser_seg" movl 40(%4), %%eax\n"
32225 + "24: "__copyuser_seg" movl 44(%4), %%edx\n"
32226 + "25: movl %%eax, 40(%3)\n"
32227 + "26: movl %%edx, 44(%3)\n"
32228 + "27: "__copyuser_seg" movl 48(%4), %%eax\n"
32229 + "28: "__copyuser_seg" movl 52(%4), %%edx\n"
32230 + "29: movl %%eax, 48(%3)\n"
32231 + "30: movl %%edx, 52(%3)\n"
32232 + "31: "__copyuser_seg" movl 56(%4), %%eax\n"
32233 + "32: "__copyuser_seg" movl 60(%4), %%edx\n"
32234 + "33: movl %%eax, 56(%3)\n"
32235 + "34: movl %%edx, 60(%3)\n"
32236 + " addl $-64, %0\n"
32237 + " addl $64, %4\n"
32238 + " addl $64, %3\n"
32239 + " cmpl $63, %0\n"
32240 + " ja 1b\n"
32241 + "35: movl %0, %%eax\n"
32242 + " shrl $2, %0\n"
32243 + " andl $3, %%eax\n"
32244 + " cld\n"
32245 + "99: rep; "__copyuser_seg" movsl\n"
32246 + "36: movl %%eax, %0\n"
32247 + "37: rep; "__copyuser_seg" movsb\n"
32248 + "100:\n"
32249 ".section .fixup,\"ax\"\n"
32250 "101: lea 0(%%eax,%0,4),%0\n"
32251 " jmp 100b\n"
32252 @@ -207,41 +315,41 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
32253 int d0, d1;
32254 __asm__ __volatile__(
32255 " .align 2,0x90\n"
32256 - "0: movl 32(%4), %%eax\n"
32257 + "0: "__copyuser_seg" movl 32(%4), %%eax\n"
32258 " cmpl $67, %0\n"
32259 " jbe 2f\n"
32260 - "1: movl 64(%4), %%eax\n"
32261 + "1: "__copyuser_seg" movl 64(%4), %%eax\n"
32262 " .align 2,0x90\n"
32263 - "2: movl 0(%4), %%eax\n"
32264 - "21: movl 4(%4), %%edx\n"
32265 + "2: "__copyuser_seg" movl 0(%4), %%eax\n"
32266 + "21: "__copyuser_seg" movl 4(%4), %%edx\n"
32267 " movl %%eax, 0(%3)\n"
32268 " movl %%edx, 4(%3)\n"
32269 - "3: movl 8(%4), %%eax\n"
32270 - "31: movl 12(%4),%%edx\n"
32271 + "3: "__copyuser_seg" movl 8(%4), %%eax\n"
32272 + "31: "__copyuser_seg" movl 12(%4),%%edx\n"
32273 " movl %%eax, 8(%3)\n"
32274 " movl %%edx, 12(%3)\n"
32275 - "4: movl 16(%4), %%eax\n"
32276 - "41: movl 20(%4), %%edx\n"
32277 + "4: "__copyuser_seg" movl 16(%4), %%eax\n"
32278 + "41: "__copyuser_seg" movl 20(%4), %%edx\n"
32279 " movl %%eax, 16(%3)\n"
32280 " movl %%edx, 20(%3)\n"
32281 - "10: movl 24(%4), %%eax\n"
32282 - "51: movl 28(%4), %%edx\n"
32283 + "10: "__copyuser_seg" movl 24(%4), %%eax\n"
32284 + "51: "__copyuser_seg" movl 28(%4), %%edx\n"
32285 " movl %%eax, 24(%3)\n"
32286 " movl %%edx, 28(%3)\n"
32287 - "11: movl 32(%4), %%eax\n"
32288 - "61: movl 36(%4), %%edx\n"
32289 + "11: "__copyuser_seg" movl 32(%4), %%eax\n"
32290 + "61: "__copyuser_seg" movl 36(%4), %%edx\n"
32291 " movl %%eax, 32(%3)\n"
32292 " movl %%edx, 36(%3)\n"
32293 - "12: movl 40(%4), %%eax\n"
32294 - "71: movl 44(%4), %%edx\n"
32295 + "12: "__copyuser_seg" movl 40(%4), %%eax\n"
32296 + "71: "__copyuser_seg" movl 44(%4), %%edx\n"
32297 " movl %%eax, 40(%3)\n"
32298 " movl %%edx, 44(%3)\n"
32299 - "13: movl 48(%4), %%eax\n"
32300 - "81: movl 52(%4), %%edx\n"
32301 + "13: "__copyuser_seg" movl 48(%4), %%eax\n"
32302 + "81: "__copyuser_seg" movl 52(%4), %%edx\n"
32303 " movl %%eax, 48(%3)\n"
32304 " movl %%edx, 52(%3)\n"
32305 - "14: movl 56(%4), %%eax\n"
32306 - "91: movl 60(%4), %%edx\n"
32307 + "14: "__copyuser_seg" movl 56(%4), %%eax\n"
32308 + "91: "__copyuser_seg" movl 60(%4), %%edx\n"
32309 " movl %%eax, 56(%3)\n"
32310 " movl %%edx, 60(%3)\n"
32311 " addl $-64, %0\n"
32312 @@ -253,9 +361,9 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
32313 " shrl $2, %0\n"
32314 " andl $3, %%eax\n"
32315 " cld\n"
32316 - "6: rep; movsl\n"
32317 + "6: rep; "__copyuser_seg" movsl\n"
32318 " movl %%eax,%0\n"
32319 - "7: rep; movsb\n"
32320 + "7: rep; "__copyuser_seg" movsb\n"
32321 "8:\n"
32322 ".section .fixup,\"ax\"\n"
32323 "9: lea 0(%%eax,%0,4),%0\n"
32324 @@ -305,41 +413,41 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
32325
32326 __asm__ __volatile__(
32327 " .align 2,0x90\n"
32328 - "0: movl 32(%4), %%eax\n"
32329 + "0: "__copyuser_seg" movl 32(%4), %%eax\n"
32330 " cmpl $67, %0\n"
32331 " jbe 2f\n"
32332 - "1: movl 64(%4), %%eax\n"
32333 + "1: "__copyuser_seg" movl 64(%4), %%eax\n"
32334 " .align 2,0x90\n"
32335 - "2: movl 0(%4), %%eax\n"
32336 - "21: movl 4(%4), %%edx\n"
32337 + "2: "__copyuser_seg" movl 0(%4), %%eax\n"
32338 + "21: "__copyuser_seg" movl 4(%4), %%edx\n"
32339 " movnti %%eax, 0(%3)\n"
32340 " movnti %%edx, 4(%3)\n"
32341 - "3: movl 8(%4), %%eax\n"
32342 - "31: movl 12(%4),%%edx\n"
32343 + "3: "__copyuser_seg" movl 8(%4), %%eax\n"
32344 + "31: "__copyuser_seg" movl 12(%4),%%edx\n"
32345 " movnti %%eax, 8(%3)\n"
32346 " movnti %%edx, 12(%3)\n"
32347 - "4: movl 16(%4), %%eax\n"
32348 - "41: movl 20(%4), %%edx\n"
32349 + "4: "__copyuser_seg" movl 16(%4), %%eax\n"
32350 + "41: "__copyuser_seg" movl 20(%4), %%edx\n"
32351 " movnti %%eax, 16(%3)\n"
32352 " movnti %%edx, 20(%3)\n"
32353 - "10: movl 24(%4), %%eax\n"
32354 - "51: movl 28(%4), %%edx\n"
32355 + "10: "__copyuser_seg" movl 24(%4), %%eax\n"
32356 + "51: "__copyuser_seg" movl 28(%4), %%edx\n"
32357 " movnti %%eax, 24(%3)\n"
32358 " movnti %%edx, 28(%3)\n"
32359 - "11: movl 32(%4), %%eax\n"
32360 - "61: movl 36(%4), %%edx\n"
32361 + "11: "__copyuser_seg" movl 32(%4), %%eax\n"
32362 + "61: "__copyuser_seg" movl 36(%4), %%edx\n"
32363 " movnti %%eax, 32(%3)\n"
32364 " movnti %%edx, 36(%3)\n"
32365 - "12: movl 40(%4), %%eax\n"
32366 - "71: movl 44(%4), %%edx\n"
32367 + "12: "__copyuser_seg" movl 40(%4), %%eax\n"
32368 + "71: "__copyuser_seg" movl 44(%4), %%edx\n"
32369 " movnti %%eax, 40(%3)\n"
32370 " movnti %%edx, 44(%3)\n"
32371 - "13: movl 48(%4), %%eax\n"
32372 - "81: movl 52(%4), %%edx\n"
32373 + "13: "__copyuser_seg" movl 48(%4), %%eax\n"
32374 + "81: "__copyuser_seg" movl 52(%4), %%edx\n"
32375 " movnti %%eax, 48(%3)\n"
32376 " movnti %%edx, 52(%3)\n"
32377 - "14: movl 56(%4), %%eax\n"
32378 - "91: movl 60(%4), %%edx\n"
32379 + "14: "__copyuser_seg" movl 56(%4), %%eax\n"
32380 + "91: "__copyuser_seg" movl 60(%4), %%edx\n"
32381 " movnti %%eax, 56(%3)\n"
32382 " movnti %%edx, 60(%3)\n"
32383 " addl $-64, %0\n"
32384 @@ -352,9 +460,9 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
32385 " shrl $2, %0\n"
32386 " andl $3, %%eax\n"
32387 " cld\n"
32388 - "6: rep; movsl\n"
32389 + "6: rep; "__copyuser_seg" movsl\n"
32390 " movl %%eax,%0\n"
32391 - "7: rep; movsb\n"
32392 + "7: rep; "__copyuser_seg" movsb\n"
32393 "8:\n"
32394 ".section .fixup,\"ax\"\n"
32395 "9: lea 0(%%eax,%0,4),%0\n"
32396 @@ -399,41 +507,41 @@ static unsigned long __copy_user_intel_nocache(void *to,
32397
32398 __asm__ __volatile__(
32399 " .align 2,0x90\n"
32400 - "0: movl 32(%4), %%eax\n"
32401 + "0: "__copyuser_seg" movl 32(%4), %%eax\n"
32402 " cmpl $67, %0\n"
32403 " jbe 2f\n"
32404 - "1: movl 64(%4), %%eax\n"
32405 + "1: "__copyuser_seg" movl 64(%4), %%eax\n"
32406 " .align 2,0x90\n"
32407 - "2: movl 0(%4), %%eax\n"
32408 - "21: movl 4(%4), %%edx\n"
32409 + "2: "__copyuser_seg" movl 0(%4), %%eax\n"
32410 + "21: "__copyuser_seg" movl 4(%4), %%edx\n"
32411 " movnti %%eax, 0(%3)\n"
32412 " movnti %%edx, 4(%3)\n"
32413 - "3: movl 8(%4), %%eax\n"
32414 - "31: movl 12(%4),%%edx\n"
32415 + "3: "__copyuser_seg" movl 8(%4), %%eax\n"
32416 + "31: "__copyuser_seg" movl 12(%4),%%edx\n"
32417 " movnti %%eax, 8(%3)\n"
32418 " movnti %%edx, 12(%3)\n"
32419 - "4: movl 16(%4), %%eax\n"
32420 - "41: movl 20(%4), %%edx\n"
32421 + "4: "__copyuser_seg" movl 16(%4), %%eax\n"
32422 + "41: "__copyuser_seg" movl 20(%4), %%edx\n"
32423 " movnti %%eax, 16(%3)\n"
32424 " movnti %%edx, 20(%3)\n"
32425 - "10: movl 24(%4), %%eax\n"
32426 - "51: movl 28(%4), %%edx\n"
32427 + "10: "__copyuser_seg" movl 24(%4), %%eax\n"
32428 + "51: "__copyuser_seg" movl 28(%4), %%edx\n"
32429 " movnti %%eax, 24(%3)\n"
32430 " movnti %%edx, 28(%3)\n"
32431 - "11: movl 32(%4), %%eax\n"
32432 - "61: movl 36(%4), %%edx\n"
32433 + "11: "__copyuser_seg" movl 32(%4), %%eax\n"
32434 + "61: "__copyuser_seg" movl 36(%4), %%edx\n"
32435 " movnti %%eax, 32(%3)\n"
32436 " movnti %%edx, 36(%3)\n"
32437 - "12: movl 40(%4), %%eax\n"
32438 - "71: movl 44(%4), %%edx\n"
32439 + "12: "__copyuser_seg" movl 40(%4), %%eax\n"
32440 + "71: "__copyuser_seg" movl 44(%4), %%edx\n"
32441 " movnti %%eax, 40(%3)\n"
32442 " movnti %%edx, 44(%3)\n"
32443 - "13: movl 48(%4), %%eax\n"
32444 - "81: movl 52(%4), %%edx\n"
32445 + "13: "__copyuser_seg" movl 48(%4), %%eax\n"
32446 + "81: "__copyuser_seg" movl 52(%4), %%edx\n"
32447 " movnti %%eax, 48(%3)\n"
32448 " movnti %%edx, 52(%3)\n"
32449 - "14: movl 56(%4), %%eax\n"
32450 - "91: movl 60(%4), %%edx\n"
32451 + "14: "__copyuser_seg" movl 56(%4), %%eax\n"
32452 + "91: "__copyuser_seg" movl 60(%4), %%edx\n"
32453 " movnti %%eax, 56(%3)\n"
32454 " movnti %%edx, 60(%3)\n"
32455 " addl $-64, %0\n"
32456 @@ -446,9 +554,9 @@ static unsigned long __copy_user_intel_nocache(void *to,
32457 " shrl $2, %0\n"
32458 " andl $3, %%eax\n"
32459 " cld\n"
32460 - "6: rep; movsl\n"
32461 + "6: rep; "__copyuser_seg" movsl\n"
32462 " movl %%eax,%0\n"
32463 - "7: rep; movsb\n"
32464 + "7: rep; "__copyuser_seg" movsb\n"
32465 "8:\n"
32466 ".section .fixup,\"ax\"\n"
32467 "9: lea 0(%%eax,%0,4),%0\n"
32468 @@ -488,32 +596,36 @@ static unsigned long __copy_user_intel_nocache(void *to,
32469 */
32470 unsigned long __copy_user_zeroing_intel(void *to, const void __user *from,
32471 unsigned long size);
32472 -unsigned long __copy_user_intel(void __user *to, const void *from,
32473 +unsigned long __generic_copy_to_user_intel(void __user *to, const void *from,
32474 + unsigned long size);
32475 +unsigned long __generic_copy_from_user_intel(void *to, const void __user *from,
32476 unsigned long size);
32477 unsigned long __copy_user_zeroing_intel_nocache(void *to,
32478 const void __user *from, unsigned long size);
32479 #endif /* CONFIG_X86_INTEL_USERCOPY */
32480
32481 /* Generic arbitrary sized copy. */
32482 -#define __copy_user(to, from, size) \
32483 +#define __copy_user(to, from, size, prefix, set, restore) \
32484 do { \
32485 int __d0, __d1, __d2; \
32486 __asm__ __volatile__( \
32487 + set \
32488 " cmp $7,%0\n" \
32489 " jbe 1f\n" \
32490 " movl %1,%0\n" \
32491 " negl %0\n" \
32492 " andl $7,%0\n" \
32493 " subl %0,%3\n" \
32494 - "4: rep; movsb\n" \
32495 + "4: rep; "prefix"movsb\n" \
32496 " movl %3,%0\n" \
32497 " shrl $2,%0\n" \
32498 " andl $3,%3\n" \
32499 " .align 2,0x90\n" \
32500 - "0: rep; movsl\n" \
32501 + "0: rep; "prefix"movsl\n" \
32502 " movl %3,%0\n" \
32503 - "1: rep; movsb\n" \
32504 + "1: rep; "prefix"movsb\n" \
32505 "2:\n" \
32506 + restore \
32507 ".section .fixup,\"ax\"\n" \
32508 "5: addl %3,%0\n" \
32509 " jmp 2b\n" \
32510 @@ -538,14 +650,14 @@ do { \
32511 " negl %0\n" \
32512 " andl $7,%0\n" \
32513 " subl %0,%3\n" \
32514 - "4: rep; movsb\n" \
32515 + "4: rep; "__copyuser_seg"movsb\n" \
32516 " movl %3,%0\n" \
32517 " shrl $2,%0\n" \
32518 " andl $3,%3\n" \
32519 " .align 2,0x90\n" \
32520 - "0: rep; movsl\n" \
32521 + "0: rep; "__copyuser_seg"movsl\n" \
32522 " movl %3,%0\n" \
32523 - "1: rep; movsb\n" \
32524 + "1: rep; "__copyuser_seg"movsb\n" \
32525 "2:\n" \
32526 ".section .fixup,\"ax\"\n" \
32527 "5: addl %3,%0\n" \
32528 @@ -572,9 +684,9 @@ unsigned long __copy_to_user_ll(void __user *to, const void *from,
32529 {
32530 stac();
32531 if (movsl_is_ok(to, from, n))
32532 - __copy_user(to, from, n);
32533 + __copy_user(to, from, n, "", __COPYUSER_SET_ES, __COPYUSER_RESTORE_ES);
32534 else
32535 - n = __copy_user_intel(to, from, n);
32536 + n = __generic_copy_to_user_intel(to, from, n);
32537 clac();
32538 return n;
32539 }
32540 @@ -598,10 +710,9 @@ unsigned long __copy_from_user_ll_nozero(void *to, const void __user *from,
32541 {
32542 stac();
32543 if (movsl_is_ok(to, from, n))
32544 - __copy_user(to, from, n);
32545 + __copy_user(to, from, n, __copyuser_seg, "", "");
32546 else
32547 - n = __copy_user_intel((void __user *)to,
32548 - (const void *)from, n);
32549 + n = __generic_copy_from_user_intel(to, from, n);
32550 clac();
32551 return n;
32552 }
32553 @@ -632,60 +743,38 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr
32554 if (n > 64 && cpu_has_xmm2)
32555 n = __copy_user_intel_nocache(to, from, n);
32556 else
32557 - __copy_user(to, from, n);
32558 + __copy_user(to, from, n, __copyuser_seg, "", "");
32559 #else
32560 - __copy_user(to, from, n);
32561 + __copy_user(to, from, n, __copyuser_seg, "", "");
32562 #endif
32563 clac();
32564 return n;
32565 }
32566 EXPORT_SYMBOL(__copy_from_user_ll_nocache_nozero);
32567
32568 -/**
32569 - * copy_to_user: - Copy a block of data into user space.
32570 - * @to: Destination address, in user space.
32571 - * @from: Source address, in kernel space.
32572 - * @n: Number of bytes to copy.
32573 - *
32574 - * Context: User context only. This function may sleep if pagefaults are
32575 - * enabled.
32576 - *
32577 - * Copy data from kernel space to user space.
32578 - *
32579 - * Returns number of bytes that could not be copied.
32580 - * On success, this will be zero.
32581 - */
32582 -unsigned long _copy_to_user(void __user *to, const void *from, unsigned n)
32583 +#ifdef CONFIG_PAX_MEMORY_UDEREF
32584 +void __set_fs(mm_segment_t x)
32585 {
32586 - if (access_ok(VERIFY_WRITE, to, n))
32587 - n = __copy_to_user(to, from, n);
32588 - return n;
32589 + switch (x.seg) {
32590 + case 0:
32591 + loadsegment(gs, 0);
32592 + break;
32593 + case TASK_SIZE_MAX:
32594 + loadsegment(gs, __USER_DS);
32595 + break;
32596 + case -1UL:
32597 + loadsegment(gs, __KERNEL_DS);
32598 + break;
32599 + default:
32600 + BUG();
32601 + }
32602 }
32603 -EXPORT_SYMBOL(_copy_to_user);
32604 +EXPORT_SYMBOL(__set_fs);
32605
32606 -/**
32607 - * copy_from_user: - Copy a block of data from user space.
32608 - * @to: Destination address, in kernel space.
32609 - * @from: Source address, in user space.
32610 - * @n: Number of bytes to copy.
32611 - *
32612 - * Context: User context only. This function may sleep if pagefaults are
32613 - * enabled.
32614 - *
32615 - * Copy data from user space to kernel space.
32616 - *
32617 - * Returns number of bytes that could not be copied.
32618 - * On success, this will be zero.
32619 - *
32620 - * If some data could not be copied, this function will pad the copied
32621 - * data to the requested size using zero bytes.
32622 - */
32623 -unsigned long _copy_from_user(void *to, const void __user *from, unsigned n)
32624 +void set_fs(mm_segment_t x)
32625 {
32626 - if (access_ok(VERIFY_READ, from, n))
32627 - n = __copy_from_user(to, from, n);
32628 - else
32629 - memset(to, 0, n);
32630 - return n;
32631 + current_thread_info()->addr_limit = x;
32632 + __set_fs(x);
32633 }
32634 -EXPORT_SYMBOL(_copy_from_user);
32635 +EXPORT_SYMBOL(set_fs);
32636 +#endif
32637 diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c
32638 index 0a42327..7a82465 100644
32639 --- a/arch/x86/lib/usercopy_64.c
32640 +++ b/arch/x86/lib/usercopy_64.c
32641 @@ -18,6 +18,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size)
32642 might_fault();
32643 /* no memory constraint because it doesn't change any memory gcc knows
32644 about */
32645 + pax_open_userland();
32646 stac();
32647 asm volatile(
32648 " testq %[size8],%[size8]\n"
32649 @@ -39,9 +40,10 @@ unsigned long __clear_user(void __user *addr, unsigned long size)
32650 _ASM_EXTABLE(0b,3b)
32651 _ASM_EXTABLE(1b,2b)
32652 : [size8] "=&c"(size), [dst] "=&D" (__d0)
32653 - : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
32654 + : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(____m(addr)),
32655 [zero] "r" (0UL), [eight] "r" (8UL));
32656 clac();
32657 + pax_close_userland();
32658 return size;
32659 }
32660 EXPORT_SYMBOL(__clear_user);
32661 @@ -54,12 +56,11 @@ unsigned long clear_user(void __user *to, unsigned long n)
32662 }
32663 EXPORT_SYMBOL(clear_user);
32664
32665 -unsigned long copy_in_user(void __user *to, const void __user *from, unsigned len)
32666 +unsigned long copy_in_user(void __user *to, const void __user *from, unsigned long len)
32667 {
32668 - if (access_ok(VERIFY_WRITE, to, len) && access_ok(VERIFY_READ, from, len)) {
32669 - return copy_user_generic((__force void *)to, (__force void *)from, len);
32670 - }
32671 - return len;
32672 + if (access_ok(VERIFY_WRITE, to, len) && access_ok(VERIFY_READ, from, len))
32673 + return copy_user_generic((void __force_kernel *)____m(to), (void __force_kernel *)____m(from), len);
32674 + return len;
32675 }
32676 EXPORT_SYMBOL(copy_in_user);
32677
32678 @@ -69,8 +70,10 @@ EXPORT_SYMBOL(copy_in_user);
32679 * it is not necessary to optimize tail handling.
32680 */
32681 __visible unsigned long
32682 -copy_user_handle_tail(char *to, char *from, unsigned len)
32683 +copy_user_handle_tail(char __user *to, char __user *from, unsigned long len)
32684 {
32685 + clac();
32686 + pax_close_userland();
32687 for (; len; --len, to++) {
32688 char c;
32689
32690 @@ -79,10 +82,9 @@ copy_user_handle_tail(char *to, char *from, unsigned len)
32691 if (__put_user_nocheck(c, to, sizeof(char)))
32692 break;
32693 }
32694 - clac();
32695
32696 /* If the destination is a kernel buffer, we always clear the end */
32697 - if (!__addr_ok(to))
32698 + if (!__addr_ok(to) && (unsigned long)to >= TASK_SIZE_MAX + pax_user_shadow_base)
32699 memset(to, 0, len);
32700 return len;
32701 }
32702 diff --git a/arch/x86/math-emu/fpu_aux.c b/arch/x86/math-emu/fpu_aux.c
32703 index dd76a05..df65688 100644
32704 --- a/arch/x86/math-emu/fpu_aux.c
32705 +++ b/arch/x86/math-emu/fpu_aux.c
32706 @@ -52,7 +52,7 @@ void fpstate_init_soft(struct swregs_state *soft)
32707
32708 void finit(void)
32709 {
32710 - fpstate_init_soft(&current->thread.fpu.state.soft);
32711 + fpstate_init_soft(&current->thread.fpu.state->soft);
32712 }
32713
32714 /*
32715 diff --git a/arch/x86/math-emu/fpu_entry.c b/arch/x86/math-emu/fpu_entry.c
32716 index 3d8f2e4..ef7cf4e 100644
32717 --- a/arch/x86/math-emu/fpu_entry.c
32718 +++ b/arch/x86/math-emu/fpu_entry.c
32719 @@ -677,7 +677,7 @@ int fpregs_soft_set(struct task_struct *target,
32720 unsigned int pos, unsigned int count,
32721 const void *kbuf, const void __user *ubuf)
32722 {
32723 - struct swregs_state *s387 = &target->thread.fpu.state.soft;
32724 + struct swregs_state *s387 = &target->thread.fpu.state->soft;
32725 void *space = s387->st_space;
32726 int ret;
32727 int offset, other, i, tags, regnr, tag, newtop;
32728 @@ -729,7 +729,7 @@ int fpregs_soft_get(struct task_struct *target,
32729 unsigned int pos, unsigned int count,
32730 void *kbuf, void __user *ubuf)
32731 {
32732 - struct swregs_state *s387 = &target->thread.fpu.state.soft;
32733 + struct swregs_state *s387 = &target->thread.fpu.state->soft;
32734 const void *space = s387->st_space;
32735 int ret;
32736 int offset = (S387->ftop & 7) * 10, other = 80 - offset;
32737 diff --git a/arch/x86/math-emu/fpu_system.h b/arch/x86/math-emu/fpu_system.h
32738 index 5e044d5..d342fce 100644
32739 --- a/arch/x86/math-emu/fpu_system.h
32740 +++ b/arch/x86/math-emu/fpu_system.h
32741 @@ -46,7 +46,7 @@ static inline struct desc_struct FPU_get_ldt_descriptor(unsigned seg)
32742 #define SEG_EXPAND_DOWN(s) (((s).b & ((1 << 11) | (1 << 10))) \
32743 == (1 << 10))
32744
32745 -#define I387 (&current->thread.fpu.state)
32746 +#define I387 (current->thread.fpu.state)
32747 #define FPU_info (I387->soft.info)
32748
32749 #define FPU_CS (*(unsigned short *) &(FPU_info->regs->cs))
32750 diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
32751 index a482d10..1a6edb5 100644
32752 --- a/arch/x86/mm/Makefile
32753 +++ b/arch/x86/mm/Makefile
32754 @@ -33,3 +33,7 @@ obj-$(CONFIG_ACPI_NUMA) += srat.o
32755 obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
32756
32757 obj-$(CONFIG_X86_INTEL_MPX) += mpx.o
32758 +
32759 +quote:="
32760 +obj-$(CONFIG_X86_64) += uderef_64.o
32761 +CFLAGS_uderef_64.o := $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) -fcall-saved-rax
32762 diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c
32763 index 903ec1e..41b4708 100644
32764 --- a/arch/x86/mm/extable.c
32765 +++ b/arch/x86/mm/extable.c
32766 @@ -2,16 +2,29 @@
32767 #include <linux/spinlock.h>
32768 #include <linux/sort.h>
32769 #include <asm/uaccess.h>
32770 +#include <asm/boot.h>
32771
32772 static inline unsigned long
32773 ex_insn_addr(const struct exception_table_entry *x)
32774 {
32775 - return (unsigned long)&x->insn + x->insn;
32776 + unsigned long reloc = 0;
32777 +
32778 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
32779 + reloc = ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
32780 +#endif
32781 +
32782 + return (unsigned long)&x->insn + x->insn + reloc;
32783 }
32784 static inline unsigned long
32785 ex_fixup_addr(const struct exception_table_entry *x)
32786 {
32787 - return (unsigned long)&x->fixup + x->fixup;
32788 + unsigned long reloc = 0;
32789 +
32790 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
32791 + reloc = ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
32792 +#endif
32793 +
32794 + return (unsigned long)&x->fixup + x->fixup + reloc;
32795 }
32796
32797 int fixup_exception(struct pt_regs *regs)
32798 @@ -20,7 +33,7 @@ int fixup_exception(struct pt_regs *regs)
32799 unsigned long new_ip;
32800
32801 #ifdef CONFIG_PNPBIOS
32802 - if (unlikely(SEGMENT_IS_PNP_CODE(regs->cs))) {
32803 + if (unlikely(!v8086_mode(regs) && SEGMENT_IS_PNP_CODE(regs->cs))) {
32804 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
32805 extern u32 pnp_bios_is_utter_crap;
32806 pnp_bios_is_utter_crap = 1;
32807 @@ -145,6 +158,13 @@ void sort_extable(struct exception_table_entry *start,
32808 i += 4;
32809 p->fixup -= i;
32810 i += 4;
32811 +
32812 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
32813 + BUILD_BUG_ON(!IS_ENABLED(CONFIG_BUILDTIME_EXTABLE_SORT));
32814 + p->insn -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
32815 + p->fixup -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR;
32816 +#endif
32817 +
32818 }
32819 }
32820
32821 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
32822 index 9dc9098..938251a 100644
32823 --- a/arch/x86/mm/fault.c
32824 +++ b/arch/x86/mm/fault.c
32825 @@ -14,12 +14,19 @@
32826 #include <linux/prefetch.h> /* prefetchw */
32827 #include <linux/context_tracking.h> /* exception_enter(), ... */
32828 #include <linux/uaccess.h> /* faulthandler_disabled() */
32829 +#include <linux/unistd.h>
32830 +#include <linux/compiler.h>
32831
32832 #include <asm/traps.h> /* dotraplinkage, ... */
32833 #include <asm/pgalloc.h> /* pgd_*(), ... */
32834 #include <asm/kmemcheck.h> /* kmemcheck_*(), ... */
32835 #include <asm/fixmap.h> /* VSYSCALL_ADDR */
32836 #include <asm/vsyscall.h> /* emulate_vsyscall */
32837 +#include <asm/tlbflush.h>
32838 +
32839 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
32840 +#include <asm/stacktrace.h>
32841 +#endif
32842
32843 #define CREATE_TRACE_POINTS
32844 #include <asm/trace/exceptions.h>
32845 @@ -121,7 +128,10 @@ check_prefetch_opcode(struct pt_regs *regs, unsigned char *instr,
32846 return !instr_lo || (instr_lo>>1) == 1;
32847 case 0x00:
32848 /* Prefetch instruction is 0x0F0D or 0x0F18 */
32849 - if (probe_kernel_address(instr, opcode))
32850 + if (user_mode(regs)) {
32851 + if (__copy_from_user_inatomic(&opcode, (unsigned char __force_user *)(instr), 1))
32852 + return 0;
32853 + } else if (probe_kernel_address(instr, opcode))
32854 return 0;
32855
32856 *prefetch = (instr_lo == 0xF) &&
32857 @@ -155,7 +165,10 @@ is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr)
32858 while (instr < max_instr) {
32859 unsigned char opcode;
32860
32861 - if (probe_kernel_address(instr, opcode))
32862 + if (user_mode(regs)) {
32863 + if (__copy_from_user_inatomic(&opcode, (unsigned char __force_user *)(instr), 1))
32864 + break;
32865 + } else if (probe_kernel_address(instr, opcode))
32866 break;
32867
32868 instr++;
32869 @@ -186,6 +199,34 @@ force_sig_info_fault(int si_signo, int si_code, unsigned long address,
32870 force_sig_info(si_signo, &info, tsk);
32871 }
32872
32873 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
32874 +static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address);
32875 +#endif
32876 +
32877 +#ifdef CONFIG_PAX_EMUTRAMP
32878 +static int pax_handle_fetch_fault(struct pt_regs *regs);
32879 +#endif
32880 +
32881 +#ifdef CONFIG_PAX_PAGEEXEC
32882 +static inline pmd_t * pax_get_pmd(struct mm_struct *mm, unsigned long address)
32883 +{
32884 + pgd_t *pgd;
32885 + pud_t *pud;
32886 + pmd_t *pmd;
32887 +
32888 + pgd = pgd_offset(mm, address);
32889 + if (!pgd_present(*pgd))
32890 + return NULL;
32891 + pud = pud_offset(pgd, address);
32892 + if (!pud_present(*pud))
32893 + return NULL;
32894 + pmd = pmd_offset(pud, address);
32895 + if (!pmd_present(*pmd))
32896 + return NULL;
32897 + return pmd;
32898 +}
32899 +#endif
32900 +
32901 DEFINE_SPINLOCK(pgd_lock);
32902 LIST_HEAD(pgd_list);
32903
32904 @@ -236,10 +277,27 @@ void vmalloc_sync_all(void)
32905 for (address = VMALLOC_START & PMD_MASK;
32906 address >= TASK_SIZE && address < FIXADDR_TOP;
32907 address += PMD_SIZE) {
32908 +
32909 +#ifdef CONFIG_PAX_PER_CPU_PGD
32910 + unsigned long cpu;
32911 +#else
32912 struct page *page;
32913 +#endif
32914
32915 spin_lock(&pgd_lock);
32916 +
32917 +#ifdef CONFIG_PAX_PER_CPU_PGD
32918 + for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
32919 + pgd_t *pgd = get_cpu_pgd(cpu, user);
32920 + pmd_t *ret;
32921 +
32922 + ret = vmalloc_sync_one(pgd, address);
32923 + if (!ret)
32924 + break;
32925 + pgd = get_cpu_pgd(cpu, kernel);
32926 +#else
32927 list_for_each_entry(page, &pgd_list, lru) {
32928 + pgd_t *pgd;
32929 spinlock_t *pgt_lock;
32930 pmd_t *ret;
32931
32932 @@ -247,8 +305,14 @@ void vmalloc_sync_all(void)
32933 pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
32934
32935 spin_lock(pgt_lock);
32936 - ret = vmalloc_sync_one(page_address(page), address);
32937 + pgd = page_address(page);
32938 +#endif
32939 +
32940 + ret = vmalloc_sync_one(pgd, address);
32941 +
32942 +#ifndef CONFIG_PAX_PER_CPU_PGD
32943 spin_unlock(pgt_lock);
32944 +#endif
32945
32946 if (!ret)
32947 break;
32948 @@ -282,6 +346,12 @@ static noinline int vmalloc_fault(unsigned long address)
32949 * an interrupt in the middle of a task switch..
32950 */
32951 pgd_paddr = read_cr3();
32952 +
32953 +#ifdef CONFIG_PAX_PER_CPU_PGD
32954 + BUG_ON(__pa(get_cpu_pgd(smp_processor_id(), kernel)) != (pgd_paddr & __PHYSICAL_MASK));
32955 + vmalloc_sync_one(__va(pgd_paddr + PAGE_SIZE), address);
32956 +#endif
32957 +
32958 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
32959 if (!pmd_k)
32960 return -1;
32961 @@ -378,11 +448,25 @@ static noinline int vmalloc_fault(unsigned long address)
32962 * happen within a race in page table update. In the later
32963 * case just flush:
32964 */
32965 - pgd = pgd_offset(current->active_mm, address);
32966 +
32967 pgd_ref = pgd_offset_k(address);
32968 if (pgd_none(*pgd_ref))
32969 return -1;
32970
32971 +#ifdef CONFIG_PAX_PER_CPU_PGD
32972 + BUG_ON(__pa(get_cpu_pgd(smp_processor_id(), kernel)) != (read_cr3() & __PHYSICAL_MASK));
32973 + pgd = pgd_offset_cpu(smp_processor_id(), user, address);
32974 + if (pgd_none(*pgd)) {
32975 + set_pgd(pgd, *pgd_ref);
32976 + arch_flush_lazy_mmu_mode();
32977 + } else {
32978 + BUG_ON(pgd_page_vaddr(*pgd) != pgd_page_vaddr(*pgd_ref));
32979 + }
32980 + pgd = pgd_offset_cpu(smp_processor_id(), kernel, address);
32981 +#else
32982 + pgd = pgd_offset(current->active_mm, address);
32983 +#endif
32984 +
32985 if (pgd_none(*pgd)) {
32986 set_pgd(pgd, *pgd_ref);
32987 arch_flush_lazy_mmu_mode();
32988 @@ -549,7 +633,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
32989 static int is_errata100(struct pt_regs *regs, unsigned long address)
32990 {
32991 #ifdef CONFIG_X86_64
32992 - if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32))
32993 + if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT)) && (address >> 32))
32994 return 1;
32995 #endif
32996 return 0;
32997 @@ -576,9 +660,9 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
32998 }
32999
33000 static const char nx_warning[] = KERN_CRIT
33001 -"kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n";
33002 +"kernel tried to execute NX-protected page - exploit attempt? (uid: %d, task: %s, pid: %d)\n";
33003 static const char smep_warning[] = KERN_CRIT
33004 -"unable to execute userspace code (SMEP?) (uid: %d)\n";
33005 +"unable to execute userspace code (SMEP?) (uid: %d, task: %s, pid: %d)\n";
33006
33007 static void
33008 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
33009 @@ -587,7 +671,7 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
33010 if (!oops_may_print())
33011 return;
33012
33013 - if (error_code & PF_INSTR) {
33014 + if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR)) {
33015 unsigned int level;
33016 pgd_t *pgd;
33017 pte_t *pte;
33018 @@ -598,13 +682,25 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
33019 pte = lookup_address_in_pgd(pgd, address, &level);
33020
33021 if (pte && pte_present(*pte) && !pte_exec(*pte))
33022 - printk(nx_warning, from_kuid(&init_user_ns, current_uid()));
33023 + printk(nx_warning, from_kuid_munged(&init_user_ns, current_uid()), current->comm, task_pid_nr(current));
33024 if (pte && pte_present(*pte) && pte_exec(*pte) &&
33025 (pgd_flags(*pgd) & _PAGE_USER) &&
33026 (__read_cr4() & X86_CR4_SMEP))
33027 - printk(smep_warning, from_kuid(&init_user_ns, current_uid()));
33028 + printk(smep_warning, from_kuid(&init_user_ns, current_uid()), current->comm, task_pid_nr(current));
33029 }
33030
33031 +#ifdef CONFIG_PAX_KERNEXEC
33032 + if (init_mm.start_code <= address && address < init_mm.end_code) {
33033 + if (current->signal->curr_ip)
33034 + printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
33035 + &current->signal->curr_ip, current->comm, task_pid_nr(current),
33036 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
33037 + else
33038 + printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current),
33039 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
33040 + }
33041 +#endif
33042 +
33043 printk(KERN_ALERT "BUG: unable to handle kernel ");
33044 if (address < PAGE_SIZE)
33045 printk(KERN_CONT "NULL pointer dereference");
33046 @@ -783,6 +879,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
33047 return;
33048 }
33049 #endif
33050 +
33051 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
33052 + if (pax_is_fetch_fault(regs, error_code, address)) {
33053 +
33054 +#ifdef CONFIG_PAX_EMUTRAMP
33055 + switch (pax_handle_fetch_fault(regs)) {
33056 + case 2:
33057 + return;
33058 + }
33059 +#endif
33060 +
33061 + pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
33062 + do_group_exit(SIGKILL);
33063 + }
33064 +#endif
33065 +
33066 /* Kernel addresses are always protection faults: */
33067 if (address >= TASK_SIZE)
33068 error_code |= PF_PROT;
33069 @@ -865,7 +977,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
33070 if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
33071 printk(KERN_ERR
33072 "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
33073 - tsk->comm, tsk->pid, address);
33074 + tsk->comm, task_pid_nr(tsk), address);
33075 code = BUS_MCEERR_AR;
33076 }
33077 #endif
33078 @@ -917,6 +1029,107 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
33079 return 1;
33080 }
33081
33082 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
33083 +static inline unsigned long get_limit(unsigned long segment)
33084 +{
33085 + unsigned long __limit;
33086 +
33087 + asm("lsll %1,%0" : "=r" (__limit) : "r" (segment));
33088 + return __limit + 1;
33089 +}
33090 +
33091 +static int pax_handle_pageexec_fault(struct pt_regs *regs, struct mm_struct *mm, unsigned long address, unsigned long error_code)
33092 +{
33093 + pte_t *pte;
33094 + pmd_t *pmd;
33095 + spinlock_t *ptl;
33096 + unsigned char pte_mask;
33097 +
33098 + if ((__supported_pte_mask & _PAGE_NX) || (error_code & (PF_PROT|PF_USER)) != (PF_PROT|PF_USER) || v8086_mode(regs) ||
33099 + !(mm->pax_flags & MF_PAX_PAGEEXEC))
33100 + return 0;
33101 +
33102 + /* PaX: it's our fault, let's handle it if we can */
33103 +
33104 + /* PaX: take a look at read faults before acquiring any locks */
33105 + if (unlikely(!(error_code & PF_WRITE) && (regs->ip == address))) {
33106 + /* instruction fetch attempt from a protected page in user mode */
33107 + up_read(&mm->mmap_sem);
33108 +
33109 +#ifdef CONFIG_PAX_EMUTRAMP
33110 + switch (pax_handle_fetch_fault(regs)) {
33111 + case 2:
33112 + return 1;
33113 + }
33114 +#endif
33115 +
33116 + pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
33117 + do_group_exit(SIGKILL);
33118 + }
33119 +
33120 + pmd = pax_get_pmd(mm, address);
33121 + if (unlikely(!pmd))
33122 + return 0;
33123 +
33124 + pte = pte_offset_map_lock(mm, pmd, address, &ptl);
33125 + if (unlikely(!(pte_val(*pte) & _PAGE_PRESENT) || pte_user(*pte))) {
33126 + pte_unmap_unlock(pte, ptl);
33127 + return 0;
33128 + }
33129 +
33130 + if (unlikely((error_code & PF_WRITE) && !pte_write(*pte))) {
33131 + /* write attempt to a protected page in user mode */
33132 + pte_unmap_unlock(pte, ptl);
33133 + return 0;
33134 + }
33135 +
33136 +#ifdef CONFIG_SMP
33137 + if (likely(address > get_limit(regs->cs) && cpumask_test_cpu(smp_processor_id(), &mm->context.cpu_user_cs_mask)))
33138 +#else
33139 + if (likely(address > get_limit(regs->cs)))
33140 +#endif
33141 + {
33142 + set_pte(pte, pte_mkread(*pte));
33143 + __flush_tlb_one(address);
33144 + pte_unmap_unlock(pte, ptl);
33145 + up_read(&mm->mmap_sem);
33146 + return 1;
33147 + }
33148 +
33149 + pte_mask = _PAGE_ACCESSED | _PAGE_USER | ((error_code & PF_WRITE) << (_PAGE_BIT_DIRTY-1));
33150 +
33151 + /*
33152 + * PaX: fill DTLB with user rights and retry
33153 + */
33154 + __asm__ __volatile__ (
33155 + "orb %2,(%1)\n"
33156 +#if defined(CONFIG_M586) || defined(CONFIG_M586TSC)
33157 +/*
33158 + * PaX: let this uncommented 'invlpg' remind us on the behaviour of Intel's
33159 + * (and AMD's) TLBs. namely, they do not cache PTEs that would raise *any*
33160 + * page fault when examined during a TLB load attempt. this is true not only
33161 + * for PTEs holding a non-present entry but also present entries that will
33162 + * raise a page fault (such as those set up by PaX, or the copy-on-write
33163 + * mechanism). in effect it means that we do *not* need to flush the TLBs
33164 + * for our target pages since their PTEs are simply not in the TLBs at all.
33165 +
33166 + * the best thing in omitting it is that we gain around 15-20% speed in the
33167 + * fast path of the page fault handler and can get rid of tracing since we
33168 + * can no longer flush unintended entries.
33169 + */
33170 + "invlpg (%0)\n"
33171 +#endif
33172 + __copyuser_seg"testb $0,(%0)\n"
33173 + "xorb %3,(%1)\n"
33174 + :
33175 + : "r" (address), "r" (pte), "q" (pte_mask), "i" (_PAGE_USER)
33176 + : "memory", "cc");
33177 + pte_unmap_unlock(pte, ptl);
33178 + up_read(&mm->mmap_sem);
33179 + return 1;
33180 +}
33181 +#endif
33182 +
33183 /*
33184 * Handle a spurious fault caused by a stale TLB entry.
33185 *
33186 @@ -1002,6 +1215,9 @@ int show_unhandled_signals = 1;
33187 static inline int
33188 access_error(unsigned long error_code, struct vm_area_struct *vma)
33189 {
33190 + if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR) && !(vma->vm_flags & VM_EXEC))
33191 + return 1;
33192 +
33193 if (error_code & PF_WRITE) {
33194 /* write, present and write, not present: */
33195 if (unlikely(!(vma->vm_flags & VM_WRITE)))
33196 @@ -1064,6 +1280,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
33197 tsk = current;
33198 mm = tsk->mm;
33199
33200 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
33201 + if (!user_mode(regs) && address < 2 * pax_user_shadow_base) {
33202 + if (!search_exception_tables(regs->ip)) {
33203 + printk(KERN_EMERG "PAX: please report this to pageexec@freemail.hu\n");
33204 + bad_area_nosemaphore(regs, error_code, address);
33205 + return;
33206 + }
33207 + if (address < pax_user_shadow_base) {
33208 + printk(KERN_EMERG "PAX: please report this to pageexec@freemail.hu\n");
33209 + printk(KERN_EMERG "PAX: faulting IP: %pS\n", (void *)regs->ip);
33210 + show_trace_log_lvl(NULL, NULL, (void *)regs->sp, regs->bp, KERN_EMERG);
33211 + } else
33212 + address -= pax_user_shadow_base;
33213 + }
33214 +#endif
33215 +
33216 /*
33217 * Detect and handle instructions that would cause a page fault for
33218 * both a tracked kernel page and a userspace page.
33219 @@ -1188,6 +1420,11 @@ retry:
33220 might_sleep();
33221 }
33222
33223 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
33224 + if (pax_handle_pageexec_fault(regs, mm, address, error_code))
33225 + return;
33226 +#endif
33227 +
33228 vma = find_vma(mm, address);
33229 if (unlikely(!vma)) {
33230 bad_area(regs, error_code, address);
33231 @@ -1199,18 +1436,24 @@ retry:
33232 bad_area(regs, error_code, address);
33233 return;
33234 }
33235 - if (error_code & PF_USER) {
33236 - /*
33237 - * Accessing the stack below %sp is always a bug.
33238 - * The large cushion allows instructions like enter
33239 - * and pusha to work. ("enter $65535, $31" pushes
33240 - * 32 pointers and then decrements %sp by 65535.)
33241 - */
33242 - if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < regs->sp)) {
33243 - bad_area(regs, error_code, address);
33244 - return;
33245 - }
33246 + /*
33247 + * Accessing the stack below %sp is always a bug.
33248 + * The large cushion allows instructions like enter
33249 + * and pusha to work. ("enter $65535, $31" pushes
33250 + * 32 pointers and then decrements %sp by 65535.)
33251 + */
33252 + if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < task_pt_regs(tsk)->sp)) {
33253 + bad_area(regs, error_code, address);
33254 + return;
33255 }
33256 +
33257 +#ifdef CONFIG_PAX_SEGMEXEC
33258 + if (unlikely((mm->pax_flags & MF_PAX_SEGMEXEC) && vma->vm_end - SEGMEXEC_TASK_SIZE - 1 < address - SEGMEXEC_TASK_SIZE - 1)) {
33259 + bad_area(regs, error_code, address);
33260 + return;
33261 + }
33262 +#endif
33263 +
33264 if (unlikely(expand_stack(vma, address))) {
33265 bad_area(regs, error_code, address);
33266 return;
33267 @@ -1330,3 +1573,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
33268 }
33269 NOKPROBE_SYMBOL(trace_do_page_fault);
33270 #endif /* CONFIG_TRACING */
33271 +
33272 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
33273 +static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
33274 +{
33275 + struct mm_struct *mm = current->mm;
33276 + unsigned long ip = regs->ip;
33277 +
33278 + if (v8086_mode(regs))
33279 + ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
33280 +
33281 +#ifdef CONFIG_PAX_PAGEEXEC
33282 + if (mm->pax_flags & MF_PAX_PAGEEXEC) {
33283 + if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR))
33284 + return true;
33285 + if (!(error_code & (PF_PROT | PF_WRITE)) && ip == address)
33286 + return true;
33287 + return false;
33288 + }
33289 +#endif
33290 +
33291 +#ifdef CONFIG_PAX_SEGMEXEC
33292 + if (mm->pax_flags & MF_PAX_SEGMEXEC) {
33293 + if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
33294 + return true;
33295 + return false;
33296 + }
33297 +#endif
33298 +
33299 + return false;
33300 +}
33301 +#endif
33302 +
33303 +#ifdef CONFIG_PAX_EMUTRAMP
33304 +static int pax_handle_fetch_fault_32(struct pt_regs *regs)
33305 +{
33306 + int err;
33307 +
33308 + do { /* PaX: libffi trampoline emulation */
33309 + unsigned char mov, jmp;
33310 + unsigned int addr1, addr2;
33311 +
33312 +#ifdef CONFIG_X86_64
33313 + if ((regs->ip + 9) >> 32)
33314 + break;
33315 +#endif
33316 +
33317 + err = get_user(mov, (unsigned char __user *)regs->ip);
33318 + err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
33319 + err |= get_user(jmp, (unsigned char __user *)(regs->ip + 5));
33320 + err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
33321 +
33322 + if (err)
33323 + break;
33324 +
33325 + if (mov == 0xB8 && jmp == 0xE9) {
33326 + regs->ax = addr1;
33327 + regs->ip = (unsigned int)(regs->ip + addr2 + 10);
33328 + return 2;
33329 + }
33330 + } while (0);
33331 +
33332 + do { /* PaX: gcc trampoline emulation #1 */
33333 + unsigned char mov1, mov2;
33334 + unsigned short jmp;
33335 + unsigned int addr1, addr2;
33336 +
33337 +#ifdef CONFIG_X86_64
33338 + if ((regs->ip + 11) >> 32)
33339 + break;
33340 +#endif
33341 +
33342 + err = get_user(mov1, (unsigned char __user *)regs->ip);
33343 + err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
33344 + err |= get_user(mov2, (unsigned char __user *)(regs->ip + 5));
33345 + err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
33346 + err |= get_user(jmp, (unsigned short __user *)(regs->ip + 10));
33347 +
33348 + if (err)
33349 + break;
33350 +
33351 + if (mov1 == 0xB9 && mov2 == 0xB8 && jmp == 0xE0FF) {
33352 + regs->cx = addr1;
33353 + regs->ax = addr2;
33354 + regs->ip = addr2;
33355 + return 2;
33356 + }
33357 + } while (0);
33358 +
33359 + do { /* PaX: gcc trampoline emulation #2 */
33360 + unsigned char mov, jmp;
33361 + unsigned int addr1, addr2;
33362 +
33363 +#ifdef CONFIG_X86_64
33364 + if ((regs->ip + 9) >> 32)
33365 + break;
33366 +#endif
33367 +
33368 + err = get_user(mov, (unsigned char __user *)regs->ip);
33369 + err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
33370 + err |= get_user(jmp, (unsigned char __user *)(regs->ip + 5));
33371 + err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
33372 +
33373 + if (err)
33374 + break;
33375 +
33376 + if (mov == 0xB9 && jmp == 0xE9) {
33377 + regs->cx = addr1;
33378 + regs->ip = (unsigned int)(regs->ip + addr2 + 10);
33379 + return 2;
33380 + }
33381 + } while (0);
33382 +
33383 + return 1; /* PaX in action */
33384 +}
33385 +
33386 +#ifdef CONFIG_X86_64
33387 +static int pax_handle_fetch_fault_64(struct pt_regs *regs)
33388 +{
33389 + int err;
33390 +
33391 + do { /* PaX: libffi trampoline emulation */
33392 + unsigned short mov1, mov2, jmp1;
33393 + unsigned char stcclc, jmp2;
33394 + unsigned long addr1, addr2;
33395 +
33396 + err = get_user(mov1, (unsigned short __user *)regs->ip);
33397 + err |= get_user(addr1, (unsigned long __user *)(regs->ip + 2));
33398 + err |= get_user(mov2, (unsigned short __user *)(regs->ip + 10));
33399 + err |= get_user(addr2, (unsigned long __user *)(regs->ip + 12));
33400 + err |= get_user(stcclc, (unsigned char __user *)(regs->ip + 20));
33401 + err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 21));
33402 + err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 23));
33403 +
33404 + if (err)
33405 + break;
33406 +
33407 + if (mov1 == 0xBB49 && mov2 == 0xBA49 && (stcclc == 0xF8 || stcclc == 0xF9) && jmp1 == 0xFF49 && jmp2 == 0xE3) {
33408 + regs->r11 = addr1;
33409 + regs->r10 = addr2;
33410 + if (stcclc == 0xF8)
33411 + regs->flags &= ~X86_EFLAGS_CF;
33412 + else
33413 + regs->flags |= X86_EFLAGS_CF;
33414 + regs->ip = addr1;
33415 + return 2;
33416 + }
33417 + } while (0);
33418 +
33419 + do { /* PaX: gcc trampoline emulation #1 */
33420 + unsigned short mov1, mov2, jmp1;
33421 + unsigned char jmp2;
33422 + unsigned int addr1;
33423 + unsigned long addr2;
33424 +
33425 + err = get_user(mov1, (unsigned short __user *)regs->ip);
33426 + err |= get_user(addr1, (unsigned int __user *)(regs->ip + 2));
33427 + err |= get_user(mov2, (unsigned short __user *)(regs->ip + 6));
33428 + err |= get_user(addr2, (unsigned long __user *)(regs->ip + 8));
33429 + err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 16));
33430 + err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 18));
33431 +
33432 + if (err)
33433 + break;
33434 +
33435 + if (mov1 == 0xBB41 && mov2 == 0xBA49 && jmp1 == 0xFF49 && jmp2 == 0xE3) {
33436 + regs->r11 = addr1;
33437 + regs->r10 = addr2;
33438 + regs->ip = addr1;
33439 + return 2;
33440 + }
33441 + } while (0);
33442 +
33443 + do { /* PaX: gcc trampoline emulation #2 */
33444 + unsigned short mov1, mov2, jmp1;
33445 + unsigned char jmp2;
33446 + unsigned long addr1, addr2;
33447 +
33448 + err = get_user(mov1, (unsigned short __user *)regs->ip);
33449 + err |= get_user(addr1, (unsigned long __user *)(regs->ip + 2));
33450 + err |= get_user(mov2, (unsigned short __user *)(regs->ip + 10));
33451 + err |= get_user(addr2, (unsigned long __user *)(regs->ip + 12));
33452 + err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 20));
33453 + err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 22));
33454 +
33455 + if (err)
33456 + break;
33457 +
33458 + if (mov1 == 0xBB49 && mov2 == 0xBA49 && jmp1 == 0xFF49 && jmp2 == 0xE3) {
33459 + regs->r11 = addr1;
33460 + regs->r10 = addr2;
33461 + regs->ip = addr1;
33462 + return 2;
33463 + }
33464 + } while (0);
33465 +
33466 + return 1; /* PaX in action */
33467 +}
33468 +#endif
33469 +
33470 +/*
33471 + * PaX: decide what to do with offenders (regs->ip = fault address)
33472 + *
33473 + * returns 1 when task should be killed
33474 + * 2 when gcc trampoline was detected
33475 + */
33476 +static int pax_handle_fetch_fault(struct pt_regs *regs)
33477 +{
33478 + if (v8086_mode(regs))
33479 + return 1;
33480 +
33481 + if (!(current->mm->pax_flags & MF_PAX_EMUTRAMP))
33482 + return 1;
33483 +
33484 +#ifdef CONFIG_X86_32
33485 + return pax_handle_fetch_fault_32(regs);
33486 +#else
33487 + if (regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT))
33488 + return pax_handle_fetch_fault_32(regs);
33489 + else
33490 + return pax_handle_fetch_fault_64(regs);
33491 +#endif
33492 +}
33493 +#endif
33494 +
33495 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
33496 +void pax_report_insns(struct pt_regs *regs, void *pc, void *sp)
33497 +{
33498 + long i;
33499 +
33500 + printk(KERN_ERR "PAX: bytes at PC: ");
33501 + for (i = 0; i < 20; i++) {
33502 + unsigned char c;
33503 + if (get_user(c, (unsigned char __force_user *)pc+i))
33504 + printk(KERN_CONT "?? ");
33505 + else
33506 + printk(KERN_CONT "%02x ", c);
33507 + }
33508 + printk("\n");
33509 +
33510 + printk(KERN_ERR "PAX: bytes at SP-%lu: ", (unsigned long)sizeof(long));
33511 + for (i = -1; i < 80 / (long)sizeof(long); i++) {
33512 + unsigned long c;
33513 + if (get_user(c, (unsigned long __force_user *)sp+i)) {
33514 +#ifdef CONFIG_X86_32
33515 + printk(KERN_CONT "???????? ");
33516 +#else
33517 + if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT)))
33518 + printk(KERN_CONT "???????? ???????? ");
33519 + else
33520 + printk(KERN_CONT "???????????????? ");
33521 +#endif
33522 + } else {
33523 +#ifdef CONFIG_X86_64
33524 + if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT))) {
33525 + printk(KERN_CONT "%08x ", (unsigned int)c);
33526 + printk(KERN_CONT "%08x ", (unsigned int)(c >> 32));
33527 + } else
33528 +#endif
33529 + printk(KERN_CONT "%0*lx ", 2 * (int)sizeof(long), c);
33530 + }
33531 + }
33532 + printk("\n");
33533 +}
33534 +#endif
33535 +
33536 +/**
33537 + * probe_kernel_write(): safely attempt to write to a location
33538 + * @dst: address to write to
33539 + * @src: pointer to the data that shall be written
33540 + * @size: size of the data chunk
33541 + *
33542 + * Safely write to address @dst from the buffer at @src. If a kernel fault
33543 + * happens, handle that and return -EFAULT.
33544 + */
33545 +long notrace probe_kernel_write(void *dst, const void *src, size_t size)
33546 +{
33547 + long ret;
33548 + mm_segment_t old_fs = get_fs();
33549 +
33550 + set_fs(KERNEL_DS);
33551 + pagefault_disable();
33552 + pax_open_kernel();
33553 + ret = __copy_to_user_inatomic((void __force_user *)dst, src, size);
33554 + pax_close_kernel();
33555 + pagefault_enable();
33556 + set_fs(old_fs);
33557 +
33558 + return ret ? -EFAULT : 0;
33559 +}
33560 diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
33561 index 81bf3d2..7ef25c2 100644
33562 --- a/arch/x86/mm/gup.c
33563 +++ b/arch/x86/mm/gup.c
33564 @@ -268,7 +268,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
33565 addr = start;
33566 len = (unsigned long) nr_pages << PAGE_SHIFT;
33567 end = start + len;
33568 - if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
33569 + if (unlikely(!access_ok_noprefault(write ? VERIFY_WRITE : VERIFY_READ,
33570 (void __user *)start, len)))
33571 return 0;
33572
33573 @@ -344,6 +344,10 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
33574 goto slow_irqon;
33575 #endif
33576
33577 + if (unlikely(!access_ok_noprefault(write ? VERIFY_WRITE : VERIFY_READ,
33578 + (void __user *)start, len)))
33579 + return 0;
33580 +
33581 /*
33582 * XXX: batch / limit 'nr', to avoid large irq off latency
33583 * needs some instrumenting to determine the common sizes used by
33584 diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
33585 index eecb207a..808343a 100644
33586 --- a/arch/x86/mm/highmem_32.c
33587 +++ b/arch/x86/mm/highmem_32.c
33588 @@ -35,6 +35,8 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
33589 unsigned long vaddr;
33590 int idx, type;
33591
33592 + BUG_ON(pgprot_val(prot) & _PAGE_USER);
33593 +
33594 preempt_disable();
33595 pagefault_disable();
33596
33597 @@ -45,7 +47,9 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
33598 idx = type + KM_TYPE_NR*smp_processor_id();
33599 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
33600 BUG_ON(!pte_none(*(kmap_pte-idx)));
33601 +
33602 set_pte(kmap_pte-idx, mk_pte(page, prot));
33603 +
33604 arch_flush_lazy_mmu_mode();
33605
33606 return (void *)vaddr;
33607 diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
33608 index 42982b2..7168fc3 100644
33609 --- a/arch/x86/mm/hugetlbpage.c
33610 +++ b/arch/x86/mm/hugetlbpage.c
33611 @@ -74,23 +74,24 @@ int pud_huge(pud_t pud)
33612 #ifdef CONFIG_HUGETLB_PAGE
33613 static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file,
33614 unsigned long addr, unsigned long len,
33615 - unsigned long pgoff, unsigned long flags)
33616 + unsigned long pgoff, unsigned long flags, unsigned long offset)
33617 {
33618 struct hstate *h = hstate_file(file);
33619 struct vm_unmapped_area_info info;
33620 -
33621 +
33622 info.flags = 0;
33623 info.length = len;
33624 info.low_limit = current->mm->mmap_legacy_base;
33625 info.high_limit = TASK_SIZE;
33626 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
33627 info.align_offset = 0;
33628 + info.threadstack_offset = offset;
33629 return vm_unmapped_area(&info);
33630 }
33631
33632 static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
33633 unsigned long addr0, unsigned long len,
33634 - unsigned long pgoff, unsigned long flags)
33635 + unsigned long pgoff, unsigned long flags, unsigned long offset)
33636 {
33637 struct hstate *h = hstate_file(file);
33638 struct vm_unmapped_area_info info;
33639 @@ -102,6 +103,7 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
33640 info.high_limit = current->mm->mmap_base;
33641 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
33642 info.align_offset = 0;
33643 + info.threadstack_offset = offset;
33644 addr = vm_unmapped_area(&info);
33645
33646 /*
33647 @@ -114,6 +116,12 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
33648 VM_BUG_ON(addr != -ENOMEM);
33649 info.flags = 0;
33650 info.low_limit = TASK_UNMAPPED_BASE;
33651 +
33652 +#ifdef CONFIG_PAX_RANDMMAP
33653 + if (current->mm->pax_flags & MF_PAX_RANDMMAP)
33654 + info.low_limit += current->mm->delta_mmap;
33655 +#endif
33656 +
33657 info.high_limit = TASK_SIZE;
33658 addr = vm_unmapped_area(&info);
33659 }
33660 @@ -128,10 +136,20 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
33661 struct hstate *h = hstate_file(file);
33662 struct mm_struct *mm = current->mm;
33663 struct vm_area_struct *vma;
33664 + unsigned long pax_task_size = TASK_SIZE;
33665 + unsigned long offset = gr_rand_threadstack_offset(mm, file, flags);
33666
33667 if (len & ~huge_page_mask(h))
33668 return -EINVAL;
33669 - if (len > TASK_SIZE)
33670 +
33671 +#ifdef CONFIG_PAX_SEGMEXEC
33672 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
33673 + pax_task_size = SEGMEXEC_TASK_SIZE;
33674 +#endif
33675 +
33676 + pax_task_size -= PAGE_SIZE;
33677 +
33678 + if (len > pax_task_size)
33679 return -ENOMEM;
33680
33681 if (flags & MAP_FIXED) {
33682 @@ -140,19 +158,22 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
33683 return addr;
33684 }
33685
33686 +#ifdef CONFIG_PAX_RANDMMAP
33687 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
33688 +#endif
33689 +
33690 if (addr) {
33691 addr = ALIGN(addr, huge_page_size(h));
33692 vma = find_vma(mm, addr);
33693 - if (TASK_SIZE - len >= addr &&
33694 - (!vma || addr + len <= vma->vm_start))
33695 + if (pax_task_size - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
33696 return addr;
33697 }
33698 if (mm->get_unmapped_area == arch_get_unmapped_area)
33699 return hugetlb_get_unmapped_area_bottomup(file, addr, len,
33700 - pgoff, flags);
33701 + pgoff, flags, offset);
33702 else
33703 return hugetlb_get_unmapped_area_topdown(file, addr, len,
33704 - pgoff, flags);
33705 + pgoff, flags, offset);
33706 }
33707 #endif /* CONFIG_HUGETLB_PAGE */
33708
33709 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
33710 index 8533b46..8c83176 100644
33711 --- a/arch/x86/mm/init.c
33712 +++ b/arch/x86/mm/init.c
33713 @@ -4,6 +4,7 @@
33714 #include <linux/swap.h>
33715 #include <linux/memblock.h>
33716 #include <linux/bootmem.h> /* for max_low_pfn */
33717 +#include <linux/tboot.h>
33718
33719 #include <asm/cacheflush.h>
33720 #include <asm/e820.h>
33721 @@ -17,6 +18,8 @@
33722 #include <asm/proto.h>
33723 #include <asm/dma.h> /* for MAX_DMA_PFN */
33724 #include <asm/microcode.h>
33725 +#include <asm/desc.h>
33726 +#include <asm/bios_ebda.h>
33727
33728 /*
33729 * We need to define the tracepoints somewhere, and tlb.c
33730 @@ -615,7 +618,18 @@ void __init init_mem_mapping(void)
33731 early_ioremap_page_table_range_init();
33732 #endif
33733
33734 +#ifdef CONFIG_PAX_PER_CPU_PGD
33735 + clone_pgd_range(get_cpu_pgd(0, kernel) + KERNEL_PGD_BOUNDARY,
33736 + swapper_pg_dir + KERNEL_PGD_BOUNDARY,
33737 + KERNEL_PGD_PTRS);
33738 + clone_pgd_range(get_cpu_pgd(0, user) + KERNEL_PGD_BOUNDARY,
33739 + swapper_pg_dir + KERNEL_PGD_BOUNDARY,
33740 + KERNEL_PGD_PTRS);
33741 + load_cr3(get_cpu_pgd(0, kernel));
33742 +#else
33743 load_cr3(swapper_pg_dir);
33744 +#endif
33745 +
33746 __flush_tlb_all();
33747
33748 early_memtest(0, max_pfn_mapped << PAGE_SHIFT);
33749 @@ -631,10 +645,40 @@ void __init init_mem_mapping(void)
33750 * Access has to be given to non-kernel-ram areas as well, these contain the PCI
33751 * mmio resources as well as potential bios/acpi data regions.
33752 */
33753 +
33754 +#ifdef CONFIG_GRKERNSEC_KMEM
33755 +static unsigned int ebda_start __read_only;
33756 +static unsigned int ebda_end __read_only;
33757 +#endif
33758 +
33759 int devmem_is_allowed(unsigned long pagenr)
33760 {
33761 - if (pagenr < 256)
33762 +#ifdef CONFIG_GRKERNSEC_KMEM
33763 + /* allow BDA */
33764 + if (!pagenr)
33765 return 1;
33766 + /* allow EBDA */
33767 + if (pagenr >= ebda_start && pagenr < ebda_end)
33768 + return 1;
33769 + /* if tboot is in use, allow access to its hardcoded serial log range */
33770 + if (tboot_enabled() && ((0x60000 >> PAGE_SHIFT) <= pagenr) && (pagenr < (0x68000 >> PAGE_SHIFT)))
33771 + return 1;
33772 +#else
33773 + if (!pagenr)
33774 + return 1;
33775 +#ifdef CONFIG_VM86
33776 + if (pagenr < (ISA_START_ADDRESS >> PAGE_SHIFT))
33777 + return 1;
33778 +#endif
33779 +#endif
33780 +
33781 + if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
33782 + return 1;
33783 +#ifdef CONFIG_GRKERNSEC_KMEM
33784 + /* throw out everything else below 1MB */
33785 + if (pagenr <= 256)
33786 + return 0;
33787 +#endif
33788 if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
33789 return 0;
33790 if (!page_is_ram(pagenr))
33791 @@ -680,8 +724,127 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
33792 #endif
33793 }
33794
33795 +#ifdef CONFIG_GRKERNSEC_KMEM
33796 +static inline void gr_init_ebda(void)
33797 +{
33798 + unsigned int ebda_addr;
33799 + unsigned int ebda_size = 0;
33800 +
33801 + ebda_addr = get_bios_ebda();
33802 + if (ebda_addr) {
33803 + ebda_size = *(unsigned char *)phys_to_virt(ebda_addr);
33804 + ebda_size <<= 10;
33805 + }
33806 + if (ebda_addr && ebda_size) {
33807 + ebda_start = ebda_addr >> PAGE_SHIFT;
33808 + ebda_end = min((unsigned int)PAGE_ALIGN(ebda_addr + ebda_size), (unsigned int)0xa0000) >> PAGE_SHIFT;
33809 + } else {
33810 + ebda_start = 0x9f000 >> PAGE_SHIFT;
33811 + ebda_end = 0xa0000 >> PAGE_SHIFT;
33812 + }
33813 +}
33814 +#else
33815 +static inline void gr_init_ebda(void) { }
33816 +#endif
33817 +
33818 void free_initmem(void)
33819 {
33820 +#ifdef CONFIG_PAX_KERNEXEC
33821 +#ifdef CONFIG_X86_32
33822 + /* PaX: limit KERNEL_CS to actual size */
33823 + unsigned long addr, limit;
33824 + struct desc_struct d;
33825 + int cpu;
33826 +#else
33827 + pgd_t *pgd;
33828 + pud_t *pud;
33829 + pmd_t *pmd;
33830 + unsigned long addr, end;
33831 +#endif
33832 +#endif
33833 +
33834 + gr_init_ebda();
33835 +
33836 +#ifdef CONFIG_PAX_KERNEXEC
33837 +#ifdef CONFIG_X86_32
33838 + limit = paravirt_enabled() ? ktva_ktla(0xffffffff) : (unsigned long)&_etext;
33839 + limit = (limit - 1UL) >> PAGE_SHIFT;
33840 +
33841 + memset(__LOAD_PHYSICAL_ADDR + PAGE_OFFSET, POISON_FREE_INITMEM, PAGE_SIZE);
33842 + for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
33843 + pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC);
33844 + write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S);
33845 + write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEXEC_KERNEL_CS, &d, DESCTYPE_S);
33846 + }
33847 +
33848 + /* PaX: make KERNEL_CS read-only */
33849 + addr = PFN_ALIGN(ktla_ktva((unsigned long)&_text));
33850 + if (!paravirt_enabled())
33851 + set_memory_ro(addr, (PFN_ALIGN(_sdata) - addr) >> PAGE_SHIFT);
33852 +/*
33853 + for (addr = ktla_ktva((unsigned long)&_text); addr < (unsigned long)&_sdata; addr += PMD_SIZE) {
33854 + pgd = pgd_offset_k(addr);
33855 + pud = pud_offset(pgd, addr);
33856 + pmd = pmd_offset(pud, addr);
33857 + set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW));
33858 + }
33859 +*/
33860 +#ifdef CONFIG_X86_PAE
33861 + set_memory_nx(PFN_ALIGN(__init_begin), (PFN_ALIGN(__init_end) - PFN_ALIGN(__init_begin)) >> PAGE_SHIFT);
33862 +/*
33863 + for (addr = (unsigned long)&__init_begin; addr < (unsigned long)&__init_end; addr += PMD_SIZE) {
33864 + pgd = pgd_offset_k(addr);
33865 + pud = pud_offset(pgd, addr);
33866 + pmd = pmd_offset(pud, addr);
33867 + set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask)));
33868 + }
33869 +*/
33870 +#endif
33871 +
33872 +#ifdef CONFIG_MODULES
33873 + set_memory_4k((unsigned long)MODULES_EXEC_VADDR, (MODULES_EXEC_END - MODULES_EXEC_VADDR) >> PAGE_SHIFT);
33874 +#endif
33875 +
33876 +#else
33877 + /* PaX: make kernel code/rodata read-only, rest non-executable */
33878 + set_memory_ro((unsigned long)_text, ((unsigned long)(_sdata - _text) >> PAGE_SHIFT));
33879 + set_memory_nx((unsigned long)_sdata, (__START_KERNEL_map + KERNEL_IMAGE_SIZE - (unsigned long)_sdata) >> PAGE_SHIFT);
33880 +
33881 + for (addr = __START_KERNEL_map; addr < __START_KERNEL_map + KERNEL_IMAGE_SIZE; addr += PMD_SIZE) {
33882 + pgd = pgd_offset_k(addr);
33883 + pud = pud_offset(pgd, addr);
33884 + pmd = pmd_offset(pud, addr);
33885 + if (!pmd_present(*pmd))
33886 + continue;
33887 + if (addr >= (unsigned long)_text)
33888 + BUG_ON(!pmd_large(*pmd));
33889 + if ((unsigned long)_text <= addr && addr < (unsigned long)_sdata)
33890 + BUG_ON(pmd_write(*pmd));
33891 +// set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW));
33892 + else
33893 + BUG_ON(!(pmd_flags(*pmd) & _PAGE_NX));
33894 +// set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask)));
33895 + }
33896 +
33897 + addr = (unsigned long)__va(__pa(__START_KERNEL_map));
33898 + end = addr + KERNEL_IMAGE_SIZE;
33899 + for (; addr < end; addr += PMD_SIZE) {
33900 + pgd = pgd_offset_k(addr);
33901 + pud = pud_offset(pgd, addr);
33902 + pmd = pmd_offset(pud, addr);
33903 + if (!pmd_present(*pmd))
33904 + continue;
33905 + if (addr >= (unsigned long)_text)
33906 + BUG_ON(!pmd_large(*pmd));
33907 + if ((unsigned long)__va(__pa(_text)) <= addr && addr < (unsigned long)__va(__pa(_sdata)))
33908 + BUG_ON(pmd_write(*pmd));
33909 +// set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW));
33910 + }
33911 +#endif
33912 +
33913 + flush_tlb_all();
33914 +#endif
33915 +
33916 free_init_pages("unused kernel",
33917 (unsigned long)(&__init_begin),
33918 (unsigned long)(&__init_end));
33919 diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
33920 index 68aec42..95ad5d3 100644
33921 --- a/arch/x86/mm/init_32.c
33922 +++ b/arch/x86/mm/init_32.c
33923 @@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void);
33924 bool __read_mostly __vmalloc_start_set = false;
33925
33926 /*
33927 - * Creates a middle page table and puts a pointer to it in the
33928 - * given global directory entry. This only returns the gd entry
33929 - * in non-PAE compilation mode, since the middle layer is folded.
33930 - */
33931 -static pmd_t * __init one_md_table_init(pgd_t *pgd)
33932 -{
33933 - pud_t *pud;
33934 - pmd_t *pmd_table;
33935 -
33936 -#ifdef CONFIG_X86_PAE
33937 - if (!(pgd_val(*pgd) & _PAGE_PRESENT)) {
33938 - pmd_table = (pmd_t *)alloc_low_page();
33939 - paravirt_alloc_pmd(&init_mm, __pa(pmd_table) >> PAGE_SHIFT);
33940 - set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT));
33941 - pud = pud_offset(pgd, 0);
33942 - BUG_ON(pmd_table != pmd_offset(pud, 0));
33943 -
33944 - return pmd_table;
33945 - }
33946 -#endif
33947 - pud = pud_offset(pgd, 0);
33948 - pmd_table = pmd_offset(pud, 0);
33949 -
33950 - return pmd_table;
33951 -}
33952 -
33953 -/*
33954 * Create a page table and place a pointer to it in a middle page
33955 * directory entry:
33956 */
33957 @@ -98,13 +71,28 @@ static pte_t * __init one_page_table_init(pmd_t *pmd)
33958 pte_t *page_table = (pte_t *)alloc_low_page();
33959
33960 paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT);
33961 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
33962 + set_pmd(pmd, __pmd(__pa(page_table) | _KERNPG_TABLE));
33963 +#else
33964 set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE));
33965 +#endif
33966 BUG_ON(page_table != pte_offset_kernel(pmd, 0));
33967 }
33968
33969 return pte_offset_kernel(pmd, 0);
33970 }
33971
33972 +static pmd_t * __init one_md_table_init(pgd_t *pgd)
33973 +{
33974 + pud_t *pud;
33975 + pmd_t *pmd_table;
33976 +
33977 + pud = pud_offset(pgd, 0);
33978 + pmd_table = pmd_offset(pud, 0);
33979 +
33980 + return pmd_table;
33981 +}
33982 +
33983 pmd_t * __init populate_extra_pmd(unsigned long vaddr)
33984 {
33985 int pgd_idx = pgd_index(vaddr);
33986 @@ -209,6 +197,7 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
33987 int pgd_idx, pmd_idx;
33988 unsigned long vaddr;
33989 pgd_t *pgd;
33990 + pud_t *pud;
33991 pmd_t *pmd;
33992 pte_t *pte = NULL;
33993 unsigned long count = page_table_range_init_count(start, end);
33994 @@ -223,8 +212,13 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
33995 pgd = pgd_base + pgd_idx;
33996
33997 for ( ; (pgd_idx < PTRS_PER_PGD) && (vaddr != end); pgd++, pgd_idx++) {
33998 - pmd = one_md_table_init(pgd);
33999 - pmd = pmd + pmd_index(vaddr);
34000 + pud = pud_offset(pgd, vaddr);
34001 + pmd = pmd_offset(pud, vaddr);
34002 +
34003 +#ifdef CONFIG_X86_PAE
34004 + paravirt_alloc_pmd(&init_mm, __pa(pmd) >> PAGE_SHIFT);
34005 +#endif
34006 +
34007 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end);
34008 pmd++, pmd_idx++) {
34009 pte = page_table_kmap_check(one_page_table_init(pmd),
34010 @@ -236,11 +230,20 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
34011 }
34012 }
34013
34014 -static inline int is_kernel_text(unsigned long addr)
34015 +static inline int is_kernel_text(unsigned long start, unsigned long end)
34016 {
34017 - if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end)
34018 - return 1;
34019 - return 0;
34020 + if ((start >= ktla_ktva((unsigned long)_etext) ||
34021 + end <= ktla_ktva((unsigned long)_stext)) &&
34022 + (start >= ktla_ktva((unsigned long)_einittext) ||
34023 + end <= ktla_ktva((unsigned long)_sinittext)) &&
34024 +
34025 +#ifdef CONFIG_ACPI_SLEEP
34026 + (start >= (unsigned long)__va(acpi_wakeup_address) + 0x4000 || end <= (unsigned long)__va(acpi_wakeup_address)) &&
34027 +#endif
34028 +
34029 + (start > (unsigned long)__va(0xfffff) || end <= (unsigned long)__va(0xc0000)))
34030 + return 0;
34031 + return 1;
34032 }
34033
34034 /*
34035 @@ -257,9 +260,10 @@ kernel_physical_mapping_init(unsigned long start,
34036 unsigned long last_map_addr = end;
34037 unsigned long start_pfn, end_pfn;
34038 pgd_t *pgd_base = swapper_pg_dir;
34039 - int pgd_idx, pmd_idx, pte_ofs;
34040 + unsigned int pgd_idx, pmd_idx, pte_ofs;
34041 unsigned long pfn;
34042 pgd_t *pgd;
34043 + pud_t *pud;
34044 pmd_t *pmd;
34045 pte_t *pte;
34046 unsigned pages_2m, pages_4k;
34047 @@ -292,8 +296,13 @@ repeat:
34048 pfn = start_pfn;
34049 pgd_idx = pgd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
34050 pgd = pgd_base + pgd_idx;
34051 - for (; pgd_idx < PTRS_PER_PGD; pgd++, pgd_idx++) {
34052 - pmd = one_md_table_init(pgd);
34053 + for (; pgd_idx < PTRS_PER_PGD && pfn < max_low_pfn; pgd++, pgd_idx++) {
34054 + pud = pud_offset(pgd, 0);
34055 + pmd = pmd_offset(pud, 0);
34056 +
34057 +#ifdef CONFIG_X86_PAE
34058 + paravirt_alloc_pmd(&init_mm, __pa(pmd) >> PAGE_SHIFT);
34059 +#endif
34060
34061 if (pfn >= end_pfn)
34062 continue;
34063 @@ -305,14 +314,13 @@ repeat:
34064 #endif
34065 for (; pmd_idx < PTRS_PER_PMD && pfn < end_pfn;
34066 pmd++, pmd_idx++) {
34067 - unsigned int addr = pfn * PAGE_SIZE + PAGE_OFFSET;
34068 + unsigned long address = pfn * PAGE_SIZE + PAGE_OFFSET;
34069
34070 /*
34071 * Map with big pages if possible, otherwise
34072 * create normal page tables:
34073 */
34074 if (use_pse) {
34075 - unsigned int addr2;
34076 pgprot_t prot = PAGE_KERNEL_LARGE;
34077 /*
34078 * first pass will use the same initial
34079 @@ -323,11 +331,7 @@ repeat:
34080 _PAGE_PSE);
34081
34082 pfn &= PMD_MASK >> PAGE_SHIFT;
34083 - addr2 = (pfn + PTRS_PER_PTE-1) * PAGE_SIZE +
34084 - PAGE_OFFSET + PAGE_SIZE-1;
34085 -
34086 - if (is_kernel_text(addr) ||
34087 - is_kernel_text(addr2))
34088 + if (is_kernel_text(address, address + PMD_SIZE))
34089 prot = PAGE_KERNEL_LARGE_EXEC;
34090
34091 pages_2m++;
34092 @@ -344,7 +348,7 @@ repeat:
34093 pte_ofs = pte_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
34094 pte += pte_ofs;
34095 for (; pte_ofs < PTRS_PER_PTE && pfn < end_pfn;
34096 - pte++, pfn++, pte_ofs++, addr += PAGE_SIZE) {
34097 + pte++, pfn++, pte_ofs++, address += PAGE_SIZE) {
34098 pgprot_t prot = PAGE_KERNEL;
34099 /*
34100 * first pass will use the same initial
34101 @@ -352,7 +356,7 @@ repeat:
34102 */
34103 pgprot_t init_prot = __pgprot(PTE_IDENT_ATTR);
34104
34105 - if (is_kernel_text(addr))
34106 + if (is_kernel_text(address, address + PAGE_SIZE))
34107 prot = PAGE_KERNEL_EXEC;
34108
34109 pages_4k++;
34110 @@ -475,7 +479,7 @@ void __init native_pagetable_init(void)
34111
34112 pud = pud_offset(pgd, va);
34113 pmd = pmd_offset(pud, va);
34114 - if (!pmd_present(*pmd))
34115 + if (!pmd_present(*pmd)) // PAX TODO || pmd_large(*pmd))
34116 break;
34117
34118 /* should not be large page here */
34119 @@ -533,12 +537,10 @@ void __init early_ioremap_page_table_range_init(void)
34120
34121 static void __init pagetable_init(void)
34122 {
34123 - pgd_t *pgd_base = swapper_pg_dir;
34124 -
34125 - permanent_kmaps_init(pgd_base);
34126 + permanent_kmaps_init(swapper_pg_dir);
34127 }
34128
34129 -pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL);
34130 +pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_GLOBAL);
34131 EXPORT_SYMBOL_GPL(__supported_pte_mask);
34132
34133 /* user-defined highmem size */
34134 @@ -788,10 +790,10 @@ void __init mem_init(void)
34135 ((unsigned long)&__init_end -
34136 (unsigned long)&__init_begin) >> 10,
34137
34138 - (unsigned long)&_etext, (unsigned long)&_edata,
34139 - ((unsigned long)&_edata - (unsigned long)&_etext) >> 10,
34140 + (unsigned long)&_sdata, (unsigned long)&_edata,
34141 + ((unsigned long)&_edata - (unsigned long)&_sdata) >> 10,
34142
34143 - (unsigned long)&_text, (unsigned long)&_etext,
34144 + ktla_ktva((unsigned long)&_text), ktla_ktva((unsigned long)&_etext),
34145 ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
34146
34147 /*
34148 @@ -885,6 +887,7 @@ void set_kernel_text_rw(void)
34149 if (!kernel_set_to_readonly)
34150 return;
34151
34152 + start = ktla_ktva(start);
34153 pr_debug("Set kernel text: %lx - %lx for read write\n",
34154 start, start+size);
34155
34156 @@ -899,6 +902,7 @@ void set_kernel_text_ro(void)
34157 if (!kernel_set_to_readonly)
34158 return;
34159
34160 + start = ktla_ktva(start);
34161 pr_debug("Set kernel text: %lx - %lx for read only\n",
34162 start, start+size);
34163
34164 @@ -927,6 +931,7 @@ void mark_rodata_ro(void)
34165 unsigned long start = PFN_ALIGN(_text);
34166 unsigned long size = PFN_ALIGN(_etext) - start;
34167
34168 + start = ktla_ktva(start);
34169 set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
34170 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
34171 size >> 10);
34172 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
34173 index 3fba623..a5d0500 100644
34174 --- a/arch/x86/mm/init_64.c
34175 +++ b/arch/x86/mm/init_64.c
34176 @@ -136,7 +136,7 @@ int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page,
34177 * around without checking the pgd every time.
34178 */
34179
34180 -pteval_t __supported_pte_mask __read_mostly = ~0;
34181 +pteval_t __supported_pte_mask __read_only = ~_PAGE_NX;
34182 EXPORT_SYMBOL_GPL(__supported_pte_mask);
34183
34184 int force_personality32;
34185 @@ -169,7 +169,12 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
34186
34187 for (address = start; address <= end; address += PGDIR_SIZE) {
34188 const pgd_t *pgd_ref = pgd_offset_k(address);
34189 +
34190 +#ifdef CONFIG_PAX_PER_CPU_PGD
34191 + unsigned long cpu;
34192 +#else
34193 struct page *page;
34194 +#endif
34195
34196 /*
34197 * When it is called after memory hot remove, pgd_none()
34198 @@ -180,6 +185,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
34199 continue;
34200
34201 spin_lock(&pgd_lock);
34202 +
34203 +#ifdef CONFIG_PAX_PER_CPU_PGD
34204 + for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
34205 + pgd_t *pgd = pgd_offset_cpu(cpu, user, address);
34206 +
34207 + if (!pgd_none(*pgd_ref) && !pgd_none(*pgd))
34208 + BUG_ON(pgd_page_vaddr(*pgd)
34209 + != pgd_page_vaddr(*pgd_ref));
34210 +
34211 + if (removed) {
34212 + if (pgd_none(*pgd_ref) && !pgd_none(*pgd))
34213 + pgd_clear(pgd);
34214 + } else {
34215 + if (pgd_none(*pgd))
34216 + set_pgd(pgd, *pgd_ref);
34217 + }
34218 +
34219 + pgd = pgd_offset_cpu(cpu, kernel, address);
34220 +#else
34221 list_for_each_entry(page, &pgd_list, lru) {
34222 pgd_t *pgd;
34223 spinlock_t *pgt_lock;
34224 @@ -188,6 +212,7 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
34225 /* the pgt_lock only for Xen */
34226 pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
34227 spin_lock(pgt_lock);
34228 +#endif
34229
34230 if (!pgd_none(*pgd_ref) && !pgd_none(*pgd))
34231 BUG_ON(pgd_page_vaddr(*pgd)
34232 @@ -201,7 +226,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
34233 set_pgd(pgd, *pgd_ref);
34234 }
34235
34236 +#ifndef CONFIG_PAX_PER_CPU_PGD
34237 spin_unlock(pgt_lock);
34238 +#endif
34239 +
34240 }
34241 spin_unlock(&pgd_lock);
34242 }
34243 @@ -234,7 +262,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr)
34244 {
34245 if (pgd_none(*pgd)) {
34246 pud_t *pud = (pud_t *)spp_getpage();
34247 - pgd_populate(&init_mm, pgd, pud);
34248 + pgd_populate_kernel(&init_mm, pgd, pud);
34249 if (pud != pud_offset(pgd, 0))
34250 printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n",
34251 pud, pud_offset(pgd, 0));
34252 @@ -246,7 +274,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr)
34253 {
34254 if (pud_none(*pud)) {
34255 pmd_t *pmd = (pmd_t *) spp_getpage();
34256 - pud_populate(&init_mm, pud, pmd);
34257 + pud_populate_kernel(&init_mm, pud, pmd);
34258 if (pmd != pmd_offset(pud, 0))
34259 printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n",
34260 pmd, pmd_offset(pud, 0));
34261 @@ -337,14 +365,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
34262 pgd = pgd_offset_k((unsigned long)__va(phys));
34263 if (pgd_none(*pgd)) {
34264 pud = (pud_t *) spp_getpage();
34265 - set_pgd(pgd, __pgd(__pa(pud) | _KERNPG_TABLE |
34266 - _PAGE_USER));
34267 + set_pgd(pgd, __pgd(__pa(pud) | _PAGE_TABLE));
34268 }
34269 pud = pud_offset(pgd, (unsigned long)__va(phys));
34270 if (pud_none(*pud)) {
34271 pmd = (pmd_t *) spp_getpage();
34272 - set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE |
34273 - _PAGE_USER));
34274 + set_pud(pud, __pud(__pa(pmd) | _PAGE_TABLE));
34275 }
34276 pmd = pmd_offset(pud, phys);
34277 BUG_ON(!pmd_none(*pmd));
34278 @@ -585,7 +611,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end,
34279 prot);
34280
34281 spin_lock(&init_mm.page_table_lock);
34282 - pud_populate(&init_mm, pud, pmd);
34283 + pud_populate_kernel(&init_mm, pud, pmd);
34284 spin_unlock(&init_mm.page_table_lock);
34285 }
34286 __flush_tlb_all();
34287 @@ -626,7 +652,7 @@ kernel_physical_mapping_init(unsigned long start,
34288 page_size_mask);
34289
34290 spin_lock(&init_mm.page_table_lock);
34291 - pgd_populate(&init_mm, pgd, pud);
34292 + pgd_populate_kernel(&init_mm, pgd, pud);
34293 spin_unlock(&init_mm.page_table_lock);
34294 pgd_changed = true;
34295 }
34296 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
34297 index b9c78f3..9ca7e24 100644
34298 --- a/arch/x86/mm/ioremap.c
34299 +++ b/arch/x86/mm/ioremap.c
34300 @@ -59,8 +59,8 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages,
34301 unsigned long i;
34302
34303 for (i = 0; i < nr_pages; ++i)
34304 - if (pfn_valid(start_pfn + i) &&
34305 - !PageReserved(pfn_to_page(start_pfn + i)))
34306 + if (pfn_valid(start_pfn + i) && (start_pfn + i >= 0x100 ||
34307 + !PageReserved(pfn_to_page(start_pfn + i))))
34308 return 1;
34309
34310 return 0;
34311 @@ -332,7 +332,7 @@ EXPORT_SYMBOL(ioremap_prot);
34312 *
34313 * Caller must ensure there is only one unmapping for the same pointer.
34314 */
34315 -void iounmap(volatile void __iomem *addr)
34316 +void iounmap(const volatile void __iomem *addr)
34317 {
34318 struct vm_struct *p, *o;
34319
34320 @@ -395,31 +395,37 @@ int __init arch_ioremap_pmd_supported(void)
34321 */
34322 void *xlate_dev_mem_ptr(phys_addr_t phys)
34323 {
34324 - unsigned long start = phys & PAGE_MASK;
34325 - unsigned long offset = phys & ~PAGE_MASK;
34326 - void *vaddr;
34327 + phys_addr_t pfn = phys >> PAGE_SHIFT;
34328
34329 - /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */
34330 - if (page_is_ram(start >> PAGE_SHIFT))
34331 - return __va(phys);
34332 + if (page_is_ram(pfn)) {
34333 +#ifdef CONFIG_HIGHMEM
34334 + if (pfn >= max_low_pfn)
34335 + return kmap_high(pfn_to_page(pfn));
34336 + else
34337 +#endif
34338 + return __va(phys);
34339 + }
34340
34341 - vaddr = ioremap_cache(start, PAGE_SIZE);
34342 - /* Only add the offset on success and return NULL if the ioremap() failed: */
34343 - if (vaddr)
34344 - vaddr += offset;
34345 -
34346 - return vaddr;
34347 + return (void __force *)ioremap_cache(phys, 1);
34348 }
34349
34350 void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr)
34351 {
34352 - if (page_is_ram(phys >> PAGE_SHIFT))
34353 + phys_addr_t pfn = phys >> PAGE_SHIFT;
34354 +
34355 + if (page_is_ram(pfn)) {
34356 +#ifdef CONFIG_HIGHMEM
34357 + if (pfn >= max_low_pfn)
34358 + kunmap_high(pfn_to_page(pfn));
34359 +#endif
34360 return;
34361 + }
34362
34363 - iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK));
34364 + iounmap((void __iomem __force *)addr);
34365 }
34366
34367 -static pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)] __page_aligned_bss;
34368 +static pte_t __bm_pte[PAGE_SIZE/sizeof(pte_t)] __read_only __aligned(PAGE_SIZE);
34369 +static pte_t *bm_pte __read_only = __bm_pte;
34370
34371 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
34372 {
34373 @@ -455,8 +461,14 @@ void __init early_ioremap_init(void)
34374 early_ioremap_setup();
34375
34376 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
34377 - memset(bm_pte, 0, sizeof(bm_pte));
34378 - pmd_populate_kernel(&init_mm, pmd, bm_pte);
34379 + if (pmd_none(*pmd))
34380 +#ifdef CONFIG_COMPAT_VDSO
34381 + pmd_populate_user(&init_mm, pmd, __bm_pte);
34382 +#else
34383 + pmd_populate_kernel(&init_mm, pmd, __bm_pte);
34384 +#endif
34385 + else
34386 + bm_pte = (pte_t *)pmd_page_vaddr(*pmd);
34387
34388 /*
34389 * The boot-ioremap range spans multiple pmds, for which
34390 diff --git a/arch/x86/mm/kmemcheck/kmemcheck.c b/arch/x86/mm/kmemcheck/kmemcheck.c
34391 index b4f2e7e..96c9c3e 100644
34392 --- a/arch/x86/mm/kmemcheck/kmemcheck.c
34393 +++ b/arch/x86/mm/kmemcheck/kmemcheck.c
34394 @@ -628,9 +628,9 @@ bool kmemcheck_fault(struct pt_regs *regs, unsigned long address,
34395 * memory (e.g. tracked pages)? For now, we need this to avoid
34396 * invoking kmemcheck for PnP BIOS calls.
34397 */
34398 - if (regs->flags & X86_VM_MASK)
34399 + if (v8086_mode(regs))
34400 return false;
34401 - if (regs->cs != __KERNEL_CS)
34402 + if (regs->cs != __KERNEL_CS && regs->cs != __KERNEXEC_KERNEL_CS)
34403 return false;
34404
34405 pte = kmemcheck_pte_lookup(address);
34406 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
34407 index 844b06d..f363c86 100644
34408 --- a/arch/x86/mm/mmap.c
34409 +++ b/arch/x86/mm/mmap.c
34410 @@ -52,7 +52,7 @@ static unsigned long stack_maxrandom_size(void)
34411 * Leave an at least ~128 MB hole with possible stack randomization.
34412 */
34413 #define MIN_GAP (128*1024*1024UL + stack_maxrandom_size())
34414 -#define MAX_GAP (TASK_SIZE/6*5)
34415 +#define MAX_GAP (pax_task_size/6*5)
34416
34417 static int mmap_is_legacy(void)
34418 {
34419 @@ -81,27 +81,40 @@ unsigned long arch_mmap_rnd(void)
34420 return rnd << PAGE_SHIFT;
34421 }
34422
34423 -static unsigned long mmap_base(unsigned long rnd)
34424 +static unsigned long mmap_base(struct mm_struct *mm, unsigned long rnd)
34425 {
34426 unsigned long gap = rlimit(RLIMIT_STACK);
34427 + unsigned long pax_task_size = TASK_SIZE;
34428 +
34429 +#ifdef CONFIG_PAX_SEGMEXEC
34430 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
34431 + pax_task_size = SEGMEXEC_TASK_SIZE;
34432 +#endif
34433
34434 if (gap < MIN_GAP)
34435 gap = MIN_GAP;
34436 else if (gap > MAX_GAP)
34437 gap = MAX_GAP;
34438
34439 - return PAGE_ALIGN(TASK_SIZE - gap - rnd);
34440 + return PAGE_ALIGN(pax_task_size - gap - rnd);
34441 }
34442
34443 /*
34444 * Bottom-up (legacy) layout on X86_32 did not support randomization, X86_64
34445 * does, but not when emulating X86_32
34446 */
34447 -static unsigned long mmap_legacy_base(unsigned long rnd)
34448 +static unsigned long mmap_legacy_base(struct mm_struct *mm, unsigned long rnd)
34449 {
34450 - if (mmap_is_ia32())
34451 + if (mmap_is_ia32()) {
34452 +
34453 +#ifdef CONFIG_PAX_SEGMEXEC
34454 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
34455 + return SEGMEXEC_TASK_UNMAPPED_BASE;
34456 + else
34457 +#endif
34458 +
34459 return TASK_UNMAPPED_BASE;
34460 - else
34461 + } else
34462 return TASK_UNMAPPED_BASE + rnd;
34463 }
34464
34465 @@ -113,18 +126,29 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
34466 {
34467 unsigned long random_factor = 0UL;
34468
34469 +#ifdef CONFIG_PAX_RANDMMAP
34470 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
34471 +#endif
34472 if (current->flags & PF_RANDOMIZE)
34473 random_factor = arch_mmap_rnd();
34474
34475 - mm->mmap_legacy_base = mmap_legacy_base(random_factor);
34476 + mm->mmap_legacy_base = mmap_legacy_base(mm, random_factor);
34477
34478 if (mmap_is_legacy()) {
34479 mm->mmap_base = mm->mmap_legacy_base;
34480 mm->get_unmapped_area = arch_get_unmapped_area;
34481 } else {
34482 - mm->mmap_base = mmap_base(random_factor);
34483 + mm->mmap_base = mmap_base(mm, random_factor);
34484 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
34485 }
34486 +
34487 +#ifdef CONFIG_PAX_RANDMMAP
34488 + if (mm->pax_flags & MF_PAX_RANDMMAP) {
34489 + mm->mmap_legacy_base += mm->delta_mmap;
34490 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack;
34491 + }
34492 +#endif
34493 +
34494 }
34495
34496 const char *arch_vma_name(struct vm_area_struct *vma)
34497 diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c
34498 index 0057a7a..95c7edd 100644
34499 --- a/arch/x86/mm/mmio-mod.c
34500 +++ b/arch/x86/mm/mmio-mod.c
34501 @@ -194,7 +194,7 @@ static void pre(struct kmmio_probe *p, struct pt_regs *regs,
34502 break;
34503 default:
34504 {
34505 - unsigned char *ip = (unsigned char *)instptr;
34506 + unsigned char *ip = (unsigned char *)ktla_ktva(instptr);
34507 my_trace->opcode = MMIO_UNKNOWN_OP;
34508 my_trace->width = 0;
34509 my_trace->value = (*ip) << 16 | *(ip + 1) << 8 |
34510 @@ -234,7 +234,7 @@ static void post(struct kmmio_probe *p, unsigned long condition,
34511 static void ioremap_trace_core(resource_size_t offset, unsigned long size,
34512 void __iomem *addr)
34513 {
34514 - static atomic_t next_id;
34515 + static atomic_unchecked_t next_id;
34516 struct remap_trace *trace = kmalloc(sizeof(*trace), GFP_KERNEL);
34517 /* These are page-unaligned. */
34518 struct mmiotrace_map map = {
34519 @@ -258,7 +258,7 @@ static void ioremap_trace_core(resource_size_t offset, unsigned long size,
34520 .private = trace
34521 },
34522 .phys = offset,
34523 - .id = atomic_inc_return(&next_id)
34524 + .id = atomic_inc_return_unchecked(&next_id)
34525 };
34526 map.map_id = trace->id;
34527
34528 @@ -290,7 +290,7 @@ void mmiotrace_ioremap(resource_size_t offset, unsigned long size,
34529 ioremap_trace_core(offset, size, addr);
34530 }
34531
34532 -static void iounmap_trace_core(volatile void __iomem *addr)
34533 +static void iounmap_trace_core(const volatile void __iomem *addr)
34534 {
34535 struct mmiotrace_map map = {
34536 .phys = 0,
34537 @@ -328,7 +328,7 @@ not_enabled:
34538 }
34539 }
34540
34541 -void mmiotrace_iounmap(volatile void __iomem *addr)
34542 +void mmiotrace_iounmap(const volatile void __iomem *addr)
34543 {
34544 might_sleep();
34545 if (is_enabled()) /* recheck and proper locking in *_core() */
34546 diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
34547 index 4053bb5..b1ad3dc 100644
34548 --- a/arch/x86/mm/numa.c
34549 +++ b/arch/x86/mm/numa.c
34550 @@ -506,7 +506,7 @@ static void __init numa_clear_kernel_node_hotplug(void)
34551 }
34552 }
34553
34554 -static int __init numa_register_memblks(struct numa_meminfo *mi)
34555 +static int __init __intentional_overflow(-1) numa_register_memblks(struct numa_meminfo *mi)
34556 {
34557 unsigned long uninitialized_var(pfn_align);
34558 int i, nid;
34559 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
34560 index 727158c..91bc23b 100644
34561 --- a/arch/x86/mm/pageattr.c
34562 +++ b/arch/x86/mm/pageattr.c
34563 @@ -260,7 +260,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
34564 */
34565 #ifdef CONFIG_PCI_BIOS
34566 if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT))
34567 - pgprot_val(forbidden) |= _PAGE_NX;
34568 + pgprot_val(forbidden) |= _PAGE_NX & __supported_pte_mask;
34569 #endif
34570
34571 /*
34572 @@ -268,9 +268,10 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
34573 * Does not cover __inittext since that is gone later on. On
34574 * 64bit we do not enforce !NX on the low mapping
34575 */
34576 - if (within(address, (unsigned long)_text, (unsigned long)_etext))
34577 - pgprot_val(forbidden) |= _PAGE_NX;
34578 + if (within(address, ktla_ktva((unsigned long)_text), ktla_ktva((unsigned long)_etext)))
34579 + pgprot_val(forbidden) |= _PAGE_NX & __supported_pte_mask;
34580
34581 +#ifdef CONFIG_DEBUG_RODATA
34582 /*
34583 * The .rodata section needs to be read-only. Using the pfn
34584 * catches all aliases.
34585 @@ -278,6 +279,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
34586 if (within(pfn, __pa_symbol(__start_rodata) >> PAGE_SHIFT,
34587 __pa_symbol(__end_rodata) >> PAGE_SHIFT))
34588 pgprot_val(forbidden) |= _PAGE_RW;
34589 +#endif
34590
34591 #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
34592 /*
34593 @@ -316,6 +318,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
34594 }
34595 #endif
34596
34597 +#ifdef CONFIG_PAX_KERNEXEC
34598 + if (within(pfn, __pa(ktla_ktva((unsigned long)&_text)), __pa((unsigned long)&_sdata))) {
34599 + pgprot_val(forbidden) |= _PAGE_RW;
34600 + pgprot_val(forbidden) |= _PAGE_NX & __supported_pte_mask;
34601 + }
34602 +#endif
34603 +
34604 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden));
34605
34606 return prot;
34607 @@ -437,16 +446,28 @@ static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte)
34608 {
34609 /* change init_mm */
34610 set_pte_atomic(kpte, pte);
34611 +
34612 #ifdef CONFIG_X86_32
34613 if (!SHARED_KERNEL_PMD) {
34614 +
34615 +#ifdef CONFIG_PAX_PER_CPU_PGD
34616 + unsigned long cpu;
34617 +#else
34618 struct page *page;
34619 +#endif
34620
34621 +#ifdef CONFIG_PAX_PER_CPU_PGD
34622 + for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
34623 + pgd_t *pgd = get_cpu_pgd(cpu, kernel);
34624 +#else
34625 list_for_each_entry(page, &pgd_list, lru) {
34626 - pgd_t *pgd;
34627 + pgd_t *pgd = (pgd_t *)page_address(page);
34628 +#endif
34629 +
34630 pud_t *pud;
34631 pmd_t *pmd;
34632
34633 - pgd = (pgd_t *)page_address(page) + pgd_index(address);
34634 + pgd += pgd_index(address);
34635 pud = pud_offset(pgd, address);
34636 pmd = pmd_offset(pud, address);
34637 set_pte_atomic((pte_t *)pmd, pte);
34638 @@ -505,7 +526,8 @@ try_preserve_large_page(pte_t *kpte, unsigned long address,
34639 * up accordingly.
34640 */
34641 old_pte = *kpte;
34642 - old_prot = req_prot = pgprot_large_2_4k(pte_pgprot(old_pte));
34643 + old_prot = pte_pgprot(old_pte);
34644 + req_prot = pgprot_large_2_4k(old_prot);
34645
34646 pgprot_val(req_prot) &= ~pgprot_val(cpa->mask_clr);
34647 pgprot_val(req_prot) |= pgprot_val(cpa->mask_set);
34648 diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
34649 index 188e3e0..5c75446 100644
34650 --- a/arch/x86/mm/pat.c
34651 +++ b/arch/x86/mm/pat.c
34652 @@ -588,7 +588,7 @@ int free_memtype(u64 start, u64 end)
34653
34654 if (!entry) {
34655 pr_info("x86/PAT: %s:%d freeing invalid memtype [mem %#010Lx-%#010Lx]\n",
34656 - current->comm, current->pid, start, end - 1);
34657 + current->comm, task_pid_nr(current), start, end - 1);
34658 return -EINVAL;
34659 }
34660
34661 @@ -711,8 +711,8 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
34662
34663 while (cursor < to) {
34664 if (!devmem_is_allowed(pfn)) {
34665 - pr_info("x86/PAT: Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx], PAT prevents it\n",
34666 - current->comm, from, to - 1);
34667 + pr_info("x86/PAT: Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx] (%#010Lx), PAT prevents it\n",
34668 + current->comm, from, to - 1, cursor);
34669 return 0;
34670 }
34671 cursor += PAGE_SIZE;
34672 @@ -782,7 +782,7 @@ int kernel_map_sync_memtype(u64 base, unsigned long size,
34673
34674 if (ioremap_change_attr((unsigned long)__va(base), id_sz, pcm) < 0) {
34675 pr_info("x86/PAT: %s:%d ioremap_change_attr failed %s for [mem %#010Lx-%#010Lx]\n",
34676 - current->comm, current->pid,
34677 + current->comm, task_pid_nr(current),
34678 cattr_name(pcm),
34679 base, (unsigned long long)(base + size-1));
34680 return -EINVAL;
34681 @@ -817,7 +817,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
34682 pcm = lookup_memtype(paddr);
34683 if (want_pcm != pcm) {
34684 pr_warn("x86/PAT: %s:%d map pfn RAM range req %s for [mem %#010Lx-%#010Lx], got %s\n",
34685 - current->comm, current->pid,
34686 + current->comm, task_pid_nr(current),
34687 cattr_name(want_pcm),
34688 (unsigned long long)paddr,
34689 (unsigned long long)(paddr + size - 1),
34690 @@ -838,7 +838,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
34691 !is_new_memtype_allowed(paddr, size, want_pcm, pcm)) {
34692 free_memtype(paddr, paddr + size);
34693 pr_err("x86/PAT: %s:%d map pfn expected mapping type %s for [mem %#010Lx-%#010Lx], got %s\n",
34694 - current->comm, current->pid,
34695 + current->comm, task_pid_nr(current),
34696 cattr_name(want_pcm),
34697 (unsigned long long)paddr,
34698 (unsigned long long)(paddr + size - 1),
34699 diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c
34700 index 6393108..890adda 100644
34701 --- a/arch/x86/mm/pat_rbtree.c
34702 +++ b/arch/x86/mm/pat_rbtree.c
34703 @@ -161,7 +161,7 @@ success:
34704
34705 failure:
34706 pr_info("x86/PAT: %s:%d conflicting memory types %Lx-%Lx %s<->%s\n",
34707 - current->comm, current->pid, start, end,
34708 + current->comm, task_pid_nr(current), start, end,
34709 cattr_name(found_type), cattr_name(match->type));
34710 return -EBUSY;
34711 }
34712 diff --git a/arch/x86/mm/pf_in.c b/arch/x86/mm/pf_in.c
34713 index 9f0614d..92ae64a 100644
34714 --- a/arch/x86/mm/pf_in.c
34715 +++ b/arch/x86/mm/pf_in.c
34716 @@ -148,7 +148,7 @@ enum reason_type get_ins_type(unsigned long ins_addr)
34717 int i;
34718 enum reason_type rv = OTHERS;
34719
34720 - p = (unsigned char *)ins_addr;
34721 + p = (unsigned char *)ktla_ktva(ins_addr);
34722 p += skip_prefix(p, &prf);
34723 p += get_opcode(p, &opcode);
34724
34725 @@ -168,7 +168,7 @@ static unsigned int get_ins_reg_width(unsigned long ins_addr)
34726 struct prefix_bits prf;
34727 int i;
34728
34729 - p = (unsigned char *)ins_addr;
34730 + p = (unsigned char *)ktla_ktva(ins_addr);
34731 p += skip_prefix(p, &prf);
34732 p += get_opcode(p, &opcode);
34733
34734 @@ -191,7 +191,7 @@ unsigned int get_ins_mem_width(unsigned long ins_addr)
34735 struct prefix_bits prf;
34736 int i;
34737
34738 - p = (unsigned char *)ins_addr;
34739 + p = (unsigned char *)ktla_ktva(ins_addr);
34740 p += skip_prefix(p, &prf);
34741 p += get_opcode(p, &opcode);
34742
34743 @@ -415,7 +415,7 @@ unsigned long get_ins_reg_val(unsigned long ins_addr, struct pt_regs *regs)
34744 struct prefix_bits prf;
34745 int i;
34746
34747 - p = (unsigned char *)ins_addr;
34748 + p = (unsigned char *)ktla_ktva(ins_addr);
34749 p += skip_prefix(p, &prf);
34750 p += get_opcode(p, &opcode);
34751 for (i = 0; i < ARRAY_SIZE(reg_rop); i++)
34752 @@ -470,7 +470,7 @@ unsigned long get_ins_imm_val(unsigned long ins_addr)
34753 struct prefix_bits prf;
34754 int i;
34755
34756 - p = (unsigned char *)ins_addr;
34757 + p = (unsigned char *)ktla_ktva(ins_addr);
34758 p += skip_prefix(p, &prf);
34759 p += get_opcode(p, &opcode);
34760 for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
34761 diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
34762 index fb0a9dd..6fc86ab 100644
34763 --- a/arch/x86/mm/pgtable.c
34764 +++ b/arch/x86/mm/pgtable.c
34765 @@ -98,10 +98,75 @@ static inline void pgd_list_del(pgd_t *pgd)
34766 list_del(&page->lru);
34767 }
34768
34769 -#define UNSHARED_PTRS_PER_PGD \
34770 - (SHARED_KERNEL_PMD ? KERNEL_PGD_BOUNDARY : PTRS_PER_PGD)
34771 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
34772 +pgdval_t clone_pgd_mask __read_only = ~_PAGE_PRESENT;
34773
34774 +void __shadow_user_pgds(pgd_t *dst, const pgd_t *src)
34775 +{
34776 + unsigned int count = USER_PGD_PTRS;
34777
34778 + if (!pax_user_shadow_base)
34779 + return;
34780 +
34781 + while (count--)
34782 + *dst++ = __pgd((pgd_val(*src++) | (_PAGE_NX & __supported_pte_mask)) & ~_PAGE_USER);
34783 +}
34784 +#endif
34785 +
34786 +#ifdef CONFIG_PAX_PER_CPU_PGD
34787 +void __clone_user_pgds(pgd_t *dst, const pgd_t *src)
34788 +{
34789 + unsigned int count = USER_PGD_PTRS;
34790 +
34791 + while (count--) {
34792 + pgd_t pgd;
34793 +
34794 +#ifdef CONFIG_X86_64
34795 + pgd = __pgd(pgd_val(*src++) | _PAGE_USER);
34796 +#else
34797 + pgd = *src++;
34798 +#endif
34799 +
34800 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
34801 + pgd = __pgd(pgd_val(pgd) & clone_pgd_mask);
34802 +#endif
34803 +
34804 + *dst++ = pgd;
34805 + }
34806 +
34807 +}
34808 +#endif
34809 +
34810 +#ifdef CONFIG_X86_64
34811 +#define pxd_t pud_t
34812 +#define pyd_t pgd_t
34813 +#define paravirt_release_pxd(pfn) paravirt_release_pud(pfn)
34814 +#define pgtable_pxd_page_ctor(page) true
34815 +#define pgtable_pxd_page_dtor(page) do {} while (0)
34816 +#define pxd_free(mm, pud) pud_free((mm), (pud))
34817 +#define pyd_populate(mm, pgd, pud) pgd_populate((mm), (pgd), (pud))
34818 +#define pyd_offset(mm, address) pgd_offset((mm), (address))
34819 +#define PYD_SIZE PGDIR_SIZE
34820 +#define mm_inc_nr_pxds(mm) do {} while (0)
34821 +#define mm_dec_nr_pxds(mm) do {} while (0)
34822 +#else
34823 +#define pxd_t pmd_t
34824 +#define pyd_t pud_t
34825 +#define paravirt_release_pxd(pfn) paravirt_release_pmd(pfn)
34826 +#define pgtable_pxd_page_ctor(page) pgtable_pmd_page_ctor(page)
34827 +#define pgtable_pxd_page_dtor(page) pgtable_pmd_page_dtor(page)
34828 +#define pxd_free(mm, pud) pmd_free((mm), (pud))
34829 +#define pyd_populate(mm, pgd, pud) pud_populate((mm), (pgd), (pud))
34830 +#define pyd_offset(mm, address) pud_offset((mm), (address))
34831 +#define PYD_SIZE PUD_SIZE
34832 +#define mm_inc_nr_pxds(mm) mm_inc_nr_pmds(mm)
34833 +#define mm_dec_nr_pxds(mm) mm_dec_nr_pmds(mm)
34834 +#endif
34835 +
34836 +#ifdef CONFIG_PAX_PER_CPU_PGD
34837 +static inline void pgd_ctor(struct mm_struct *mm, pgd_t *pgd) {}
34838 +static inline void pgd_dtor(pgd_t *pgd) {}
34839 +#else
34840 static void pgd_set_mm(pgd_t *pgd, struct mm_struct *mm)
34841 {
34842 BUILD_BUG_ON(sizeof(virt_to_page(pgd)->index) < sizeof(mm));
34843 @@ -142,6 +207,7 @@ static void pgd_dtor(pgd_t *pgd)
34844 pgd_list_del(pgd);
34845 spin_unlock(&pgd_lock);
34846 }
34847 +#endif
34848
34849 /*
34850 * List of all pgd's needed for non-PAE so it can invalidate entries
34851 @@ -154,7 +220,7 @@ static void pgd_dtor(pgd_t *pgd)
34852 * -- nyc
34853 */
34854
34855 -#ifdef CONFIG_X86_PAE
34856 +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
34857 /*
34858 * In PAE mode, we need to do a cr3 reload (=tlb flush) when
34859 * updating the top-level pagetable entries to guarantee the
34860 @@ -166,7 +232,7 @@ static void pgd_dtor(pgd_t *pgd)
34861 * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate
34862 * and initialize the kernel pmds here.
34863 */
34864 -#define PREALLOCATED_PMDS UNSHARED_PTRS_PER_PGD
34865 +#define PREALLOCATED_PXDS (SHARED_KERNEL_PMD ? KERNEL_PGD_BOUNDARY : PTRS_PER_PGD)
34866
34867 void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
34868 {
34869 @@ -184,46 +250,48 @@ void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
34870 */
34871 flush_tlb_mm(mm);
34872 }
34873 +#elif defined(CONFIG_X86_64) && defined(CONFIG_PAX_PER_CPU_PGD)
34874 +#define PREALLOCATED_PXDS USER_PGD_PTRS
34875 #else /* !CONFIG_X86_PAE */
34876
34877 /* No need to prepopulate any pagetable entries in non-PAE modes. */
34878 -#define PREALLOCATED_PMDS 0
34879 +#define PREALLOCATED_PXDS 0
34880
34881 #endif /* CONFIG_X86_PAE */
34882
34883 -static void free_pmds(struct mm_struct *mm, pmd_t *pmds[])
34884 +static void free_pxds(struct mm_struct *mm, pxd_t *pxds[])
34885 {
34886 int i;
34887
34888 - for(i = 0; i < PREALLOCATED_PMDS; i++)
34889 - if (pmds[i]) {
34890 - pgtable_pmd_page_dtor(virt_to_page(pmds[i]));
34891 - free_page((unsigned long)pmds[i]);
34892 - mm_dec_nr_pmds(mm);
34893 + for(i = 0; i < PREALLOCATED_PXDS; i++)
34894 + if (pxds[i]) {
34895 + pgtable_pxd_page_dtor(virt_to_page(pxds[i]));
34896 + free_page((unsigned long)pxds[i]);
34897 + mm_dec_nr_pxds(mm);
34898 }
34899 }
34900
34901 -static int preallocate_pmds(struct mm_struct *mm, pmd_t *pmds[])
34902 +static int preallocate_pxds(struct mm_struct *mm, pxd_t *pxds[])
34903 {
34904 int i;
34905 bool failed = false;
34906
34907 - for(i = 0; i < PREALLOCATED_PMDS; i++) {
34908 - pmd_t *pmd = (pmd_t *)__get_free_page(PGALLOC_GFP);
34909 - if (!pmd)
34910 + for(i = 0; i < PREALLOCATED_PXDS; i++) {
34911 + pxd_t *pxd = (pxd_t *)__get_free_page(PGALLOC_GFP);
34912 + if (!pxd)
34913 failed = true;
34914 - if (pmd && !pgtable_pmd_page_ctor(virt_to_page(pmd))) {
34915 - free_page((unsigned long)pmd);
34916 - pmd = NULL;
34917 + if (pxd && !pgtable_pxd_page_ctor(virt_to_page(pxd))) {
34918 + free_page((unsigned long)pxd);
34919 + pxd = NULL;
34920 failed = true;
34921 }
34922 - if (pmd)
34923 - mm_inc_nr_pmds(mm);
34924 - pmds[i] = pmd;
34925 + if (pxd)
34926 + mm_inc_nr_pxds(mm);
34927 + pxds[i] = pxd;
34928 }
34929
34930 if (failed) {
34931 - free_pmds(mm, pmds);
34932 + free_pxds(mm, pxds);
34933 return -ENOMEM;
34934 }
34935
34936 @@ -236,43 +304,47 @@ static int preallocate_pmds(struct mm_struct *mm, pmd_t *pmds[])
34937 * preallocate which never got a corresponding vma will need to be
34938 * freed manually.
34939 */
34940 -static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp)
34941 +static void pgd_mop_up_pxds(struct mm_struct *mm, pgd_t *pgdp)
34942 {
34943 int i;
34944
34945 - for(i = 0; i < PREALLOCATED_PMDS; i++) {
34946 + for(i = 0; i < PREALLOCATED_PXDS; i++) {
34947 pgd_t pgd = pgdp[i];
34948
34949 if (pgd_val(pgd) != 0) {
34950 - pmd_t *pmd = (pmd_t *)pgd_page_vaddr(pgd);
34951 + pxd_t *pxd = (pxd_t *)pgd_page_vaddr(pgd);
34952
34953 - pgdp[i] = native_make_pgd(0);
34954 + set_pgd(pgdp + i, native_make_pgd(0));
34955
34956 - paravirt_release_pmd(pgd_val(pgd) >> PAGE_SHIFT);
34957 - pmd_free(mm, pmd);
34958 - mm_dec_nr_pmds(mm);
34959 + paravirt_release_pxd(pgd_val(pgd) >> PAGE_SHIFT);
34960 + pxd_free(mm, pxd);
34961 + mm_dec_nr_pxds(mm);
34962 }
34963 }
34964 }
34965
34966 -static void pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmds[])
34967 +static void pgd_prepopulate_pxd(struct mm_struct *mm, pgd_t *pgd, pxd_t *pxds[])
34968 {
34969 - pud_t *pud;
34970 + pyd_t *pyd;
34971 int i;
34972
34973 - if (PREALLOCATED_PMDS == 0) /* Work around gcc-3.4.x bug */
34974 + if (PREALLOCATED_PXDS == 0) /* Work around gcc-3.4.x bug */
34975 return;
34976
34977 - pud = pud_offset(pgd, 0);
34978 +#ifdef CONFIG_X86_64
34979 + pyd = pyd_offset(mm, 0L);
34980 +#else
34981 + pyd = pyd_offset(pgd, 0L);
34982 +#endif
34983
34984 - for (i = 0; i < PREALLOCATED_PMDS; i++, pud++) {
34985 - pmd_t *pmd = pmds[i];
34986 + for (i = 0; i < PREALLOCATED_PXDS; i++, pyd++) {
34987 + pxd_t *pxd = pxds[i];
34988
34989 if (i >= KERNEL_PGD_BOUNDARY)
34990 - memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]),
34991 - sizeof(pmd_t) * PTRS_PER_PMD);
34992 + memcpy(pxd, (pxd_t *)pgd_page_vaddr(swapper_pg_dir[i]),
34993 + sizeof(pxd_t) * PTRS_PER_PMD);
34994
34995 - pud_populate(mm, pud, pmd);
34996 + pyd_populate(mm, pyd, pxd);
34997 }
34998 }
34999
35000 @@ -354,7 +426,7 @@ static inline void _pgd_free(pgd_t *pgd)
35001 pgd_t *pgd_alloc(struct mm_struct *mm)
35002 {
35003 pgd_t *pgd;
35004 - pmd_t *pmds[PREALLOCATED_PMDS];
35005 + pxd_t *pxds[PREALLOCATED_PXDS];
35006
35007 pgd = _pgd_alloc();
35008
35009 @@ -363,11 +435,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
35010
35011 mm->pgd = pgd;
35012
35013 - if (preallocate_pmds(mm, pmds) != 0)
35014 + if (preallocate_pxds(mm, pxds) != 0)
35015 goto out_free_pgd;
35016
35017 if (paravirt_pgd_alloc(mm) != 0)
35018 - goto out_free_pmds;
35019 + goto out_free_pxds;
35020
35021 /*
35022 * Make sure that pre-populating the pmds is atomic with
35023 @@ -377,14 +449,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
35024 spin_lock(&pgd_lock);
35025
35026 pgd_ctor(mm, pgd);
35027 - pgd_prepopulate_pmd(mm, pgd, pmds);
35028 + pgd_prepopulate_pxd(mm, pgd, pxds);
35029
35030 spin_unlock(&pgd_lock);
35031
35032 return pgd;
35033
35034 -out_free_pmds:
35035 - free_pmds(mm, pmds);
35036 +out_free_pxds:
35037 + free_pxds(mm, pxds);
35038 out_free_pgd:
35039 _pgd_free(pgd);
35040 out:
35041 @@ -393,7 +465,7 @@ out:
35042
35043 void pgd_free(struct mm_struct *mm, pgd_t *pgd)
35044 {
35045 - pgd_mop_up_pmds(mm, pgd);
35046 + pgd_mop_up_pxds(mm, pgd);
35047 pgd_dtor(pgd);
35048 paravirt_pgd_free(mm, pgd);
35049 _pgd_free(pgd);
35050 @@ -544,6 +616,40 @@ void __init reserve_top_address(unsigned long reserve)
35051
35052 int fixmaps_set;
35053
35054 +static void fix_user_fixmap(enum fixed_addresses idx, unsigned long address)
35055 +{
35056 +#ifdef CONFIG_X86_64
35057 + pgd_t *pgd;
35058 + pud_t *pud;
35059 + pmd_t *pmd;
35060 +
35061 + switch (idx) {
35062 + default:
35063 + return;
35064 +
35065 +#ifdef CONFIG_X86_VSYSCALL_EMULATION
35066 + case VSYSCALL_PAGE:
35067 +#endif
35068 +#ifdef CONFIG_PARAVIRT_CLOCK
35069 + case PVCLOCK_FIXMAP_BEGIN ... PVCLOCK_FIXMAP_END:
35070 +#endif
35071 + break;
35072 + }
35073 +
35074 + pgd = pgd_offset_k(address);
35075 + if (!(pgd_val(*pgd) & _PAGE_USER))
35076 + set_pgd(pgd, __pgd(pgd_val(*pgd) | _PAGE_USER));
35077 +
35078 + pud = pud_offset(pgd, address);
35079 + if (!(pud_val(*pud) & _PAGE_USER))
35080 + set_pud(pud, __pud(pud_val(*pud) | _PAGE_USER));
35081 +
35082 + pmd = pmd_offset(pud, address);
35083 + if (!(pmd_val(*pmd) & _PAGE_USER))
35084 + set_pmd(pmd, __pmd(pmd_val(*pmd) | _PAGE_USER));
35085 +#endif
35086 +}
35087 +
35088 void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
35089 {
35090 unsigned long address = __fix_to_virt(idx);
35091 @@ -554,6 +660,7 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
35092 }
35093 set_pte_vaddr(address, pte);
35094 fixmaps_set++;
35095 + fix_user_fixmap(idx, address);
35096 }
35097
35098 void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
35099 diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
35100 index 90555bf..f5f1828 100644
35101 --- a/arch/x86/mm/setup_nx.c
35102 +++ b/arch/x86/mm/setup_nx.c
35103 @@ -5,8 +5,10 @@
35104 #include <asm/pgtable.h>
35105 #include <asm/proto.h>
35106
35107 +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
35108 static int disable_nx;
35109
35110 +#ifndef CONFIG_PAX_PAGEEXEC
35111 /*
35112 * noexec = on|off
35113 *
35114 @@ -28,12 +30,17 @@ static int __init noexec_setup(char *str)
35115 return 0;
35116 }
35117 early_param("noexec", noexec_setup);
35118 +#endif
35119 +
35120 +#endif
35121
35122 void x86_configure_nx(void)
35123 {
35124 +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
35125 if (cpu_has_nx && !disable_nx)
35126 __supported_pte_mask |= _PAGE_NX;
35127 else
35128 +#endif
35129 __supported_pte_mask &= ~_PAGE_NX;
35130 }
35131
35132 diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
35133 index 90b924a..4197ac2 100644
35134 --- a/arch/x86/mm/tlb.c
35135 +++ b/arch/x86/mm/tlb.c
35136 @@ -45,7 +45,11 @@ void leave_mm(int cpu)
35137 BUG();
35138 if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) {
35139 cpumask_clear_cpu(cpu, mm_cpumask(active_mm));
35140 +
35141 +#ifndef CONFIG_PAX_PER_CPU_PGD
35142 load_cr3(swapper_pg_dir);
35143 +#endif
35144 +
35145 /*
35146 * This gets called in the idle path where RCU
35147 * functions differently. Tracing normally
35148 diff --git a/arch/x86/mm/uderef_64.c b/arch/x86/mm/uderef_64.c
35149 new file mode 100644
35150 index 0000000..3fda3f3
35151 --- /dev/null
35152 +++ b/arch/x86/mm/uderef_64.c
35153 @@ -0,0 +1,37 @@
35154 +#include <linux/mm.h>
35155 +#include <asm/pgtable.h>
35156 +#include <asm/uaccess.h>
35157 +
35158 +#ifdef CONFIG_PAX_MEMORY_UDEREF
35159 +/* PaX: due to the special call convention these functions must
35160 + * - remain leaf functions under all configurations,
35161 + * - never be called directly, only dereferenced from the wrappers.
35162 + */
35163 +void __used __pax_open_userland(void)
35164 +{
35165 + unsigned int cpu;
35166 +
35167 + if (unlikely(!segment_eq(get_fs(), USER_DS)))
35168 + return;
35169 +
35170 + cpu = raw_get_cpu();
35171 + BUG_ON((read_cr3() & ~PAGE_MASK) != PCID_KERNEL);
35172 + write_cr3(__pa_nodebug(get_cpu_pgd(cpu, user)) | PCID_USER | PCID_NOFLUSH);
35173 + raw_put_cpu_no_resched();
35174 +}
35175 +EXPORT_SYMBOL(__pax_open_userland);
35176 +
35177 +void __used __pax_close_userland(void)
35178 +{
35179 + unsigned int cpu;
35180 +
35181 + if (unlikely(!segment_eq(get_fs(), USER_DS)))
35182 + return;
35183 +
35184 + cpu = raw_get_cpu();
35185 + BUG_ON((read_cr3() & ~PAGE_MASK) != PCID_USER);
35186 + write_cr3(__pa_nodebug(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH);
35187 + raw_put_cpu_no_resched();
35188 +}
35189 +EXPORT_SYMBOL(__pax_close_userland);
35190 +#endif
35191 diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S
35192 index 4093216..44b6b83 100644
35193 --- a/arch/x86/net/bpf_jit.S
35194 +++ b/arch/x86/net/bpf_jit.S
35195 @@ -8,6 +8,7 @@
35196 * of the License.
35197 */
35198 #include <linux/linkage.h>
35199 +#include <asm/alternative-asm.h>
35200
35201 /*
35202 * Calling convention :
35203 @@ -37,6 +38,7 @@ sk_load_word_positive_offset:
35204 jle bpf_slow_path_word
35205 mov (SKBDATA,%rsi),%eax
35206 bswap %eax /* ntohl() */
35207 + pax_force_retaddr
35208 ret
35209
35210 sk_load_half:
35211 @@ -54,6 +56,7 @@ sk_load_half_positive_offset:
35212 jle bpf_slow_path_half
35213 movzwl (SKBDATA,%rsi),%eax
35214 rol $8,%ax # ntohs()
35215 + pax_force_retaddr
35216 ret
35217
35218 sk_load_byte:
35219 @@ -68,6 +71,7 @@ sk_load_byte_positive_offset:
35220 cmp %esi,%r9d /* if (offset >= hlen) goto bpf_slow_path_byte */
35221 jle bpf_slow_path_byte
35222 movzbl (SKBDATA,%rsi),%eax
35223 + pax_force_retaddr
35224 ret
35225
35226 /* rsi contains offset and can be scratched */
35227 @@ -89,6 +93,7 @@ bpf_slow_path_word:
35228 js bpf_error
35229 mov - MAX_BPF_STACK + 32(%rbp),%eax
35230 bswap %eax
35231 + pax_force_retaddr
35232 ret
35233
35234 bpf_slow_path_half:
35235 @@ -97,12 +102,14 @@ bpf_slow_path_half:
35236 mov - MAX_BPF_STACK + 32(%rbp),%ax
35237 rol $8,%ax
35238 movzwl %ax,%eax
35239 + pax_force_retaddr
35240 ret
35241
35242 bpf_slow_path_byte:
35243 bpf_slow_path_common(1)
35244 js bpf_error
35245 movzbl - MAX_BPF_STACK + 32(%rbp),%eax
35246 + pax_force_retaddr
35247 ret
35248
35249 #define sk_negative_common(SIZE) \
35250 @@ -125,6 +132,7 @@ sk_load_word_negative_offset:
35251 sk_negative_common(4)
35252 mov (%rax), %eax
35253 bswap %eax
35254 + pax_force_retaddr
35255 ret
35256
35257 bpf_slow_path_half_neg:
35258 @@ -136,6 +144,7 @@ sk_load_half_negative_offset:
35259 mov (%rax),%ax
35260 rol $8,%ax
35261 movzwl %ax,%eax
35262 + pax_force_retaddr
35263 ret
35264
35265 bpf_slow_path_byte_neg:
35266 @@ -145,6 +154,7 @@ sk_load_byte_negative_offset:
35267 .globl sk_load_byte_negative_offset
35268 sk_negative_common(1)
35269 movzbl (%rax), %eax
35270 + pax_force_retaddr
35271 ret
35272
35273 bpf_error:
35274 @@ -155,4 +165,5 @@ bpf_error:
35275 mov - MAX_BPF_STACK + 16(%rbp),%r14
35276 mov - MAX_BPF_STACK + 24(%rbp),%r15
35277 leaveq
35278 + pax_force_retaddr
35279 ret
35280 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
35281 index be2e7a2..e6960dd 100644
35282 --- a/arch/x86/net/bpf_jit_comp.c
35283 +++ b/arch/x86/net/bpf_jit_comp.c
35284 @@ -14,7 +14,11 @@
35285 #include <asm/cacheflush.h>
35286 #include <linux/bpf.h>
35287
35288 +#ifdef CONFIG_GRKERNSEC_BPF_HARDEN
35289 +int bpf_jit_enable __read_only;
35290 +#else
35291 int bpf_jit_enable __read_mostly;
35292 +#endif
35293
35294 /*
35295 * assembly code in arch/x86/net/bpf_jit.S
35296 @@ -176,7 +180,9 @@ static u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg)
35297 static void jit_fill_hole(void *area, unsigned int size)
35298 {
35299 /* fill whole space with int3 instructions */
35300 + pax_open_kernel();
35301 memset(area, 0xcc, size);
35302 + pax_close_kernel();
35303 }
35304
35305 struct jit_context {
35306 @@ -1026,7 +1032,9 @@ common_load:
35307 pr_err("bpf_jit_compile fatal error\n");
35308 return -EFAULT;
35309 }
35310 + pax_open_kernel();
35311 memcpy(image + proglen, temp, ilen);
35312 + pax_close_kernel();
35313 }
35314 proglen += ilen;
35315 addrs[i] = proglen;
35316 @@ -1103,7 +1111,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog)
35317
35318 if (image) {
35319 bpf_flush_icache(header, image + proglen);
35320 - set_memory_ro((unsigned long)header, header->pages);
35321 prog->bpf_func = (void *)image;
35322 prog->jited = true;
35323 }
35324 @@ -1116,12 +1123,8 @@ void bpf_jit_free(struct bpf_prog *fp)
35325 unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
35326 struct bpf_binary_header *header = (void *)addr;
35327
35328 - if (!fp->jited)
35329 - goto free_filter;
35330 + if (fp->jited)
35331 + bpf_jit_binary_free(header);
35332
35333 - set_memory_rw(addr, header->pages);
35334 - bpf_jit_binary_free(header);
35335 -
35336 -free_filter:
35337 bpf_prog_unlock_free(fp);
35338 }
35339 diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c
35340 index 4e664bd..2beeaa2 100644
35341 --- a/arch/x86/oprofile/backtrace.c
35342 +++ b/arch/x86/oprofile/backtrace.c
35343 @@ -46,11 +46,11 @@ dump_user_backtrace_32(struct stack_frame_ia32 *head)
35344 struct stack_frame_ia32 *fp;
35345 unsigned long bytes;
35346
35347 - bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
35348 + bytes = copy_from_user_nmi(bufhead, (const char __force_user *)head, sizeof(bufhead));
35349 if (bytes != 0)
35350 return NULL;
35351
35352 - fp = (struct stack_frame_ia32 *) compat_ptr(bufhead[0].next_frame);
35353 + fp = (struct stack_frame_ia32 __force_kernel *) compat_ptr(bufhead[0].next_frame);
35354
35355 oprofile_add_trace(bufhead[0].return_address);
35356
35357 @@ -92,7 +92,7 @@ static struct stack_frame *dump_user_backtrace(struct stack_frame *head)
35358 struct stack_frame bufhead[2];
35359 unsigned long bytes;
35360
35361 - bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
35362 + bytes = copy_from_user_nmi(bufhead, (const char __force_user *)head, sizeof(bufhead));
35363 if (bytes != 0)
35364 return NULL;
35365
35366 diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
35367 index 1d2e639..f6ef82a 100644
35368 --- a/arch/x86/oprofile/nmi_int.c
35369 +++ b/arch/x86/oprofile/nmi_int.c
35370 @@ -23,6 +23,7 @@
35371 #include <asm/nmi.h>
35372 #include <asm/msr.h>
35373 #include <asm/apic.h>
35374 +#include <asm/pgtable.h>
35375
35376 #include "op_counter.h"
35377 #include "op_x86_model.h"
35378 @@ -785,8 +786,11 @@ int __init op_nmi_init(struct oprofile_operations *ops)
35379 if (ret)
35380 return ret;
35381
35382 - if (!model->num_virt_counters)
35383 - model->num_virt_counters = model->num_counters;
35384 + if (!model->num_virt_counters) {
35385 + pax_open_kernel();
35386 + *(unsigned int *)&model->num_virt_counters = model->num_counters;
35387 + pax_close_kernel();
35388 + }
35389
35390 mux_init(ops);
35391
35392 diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c
35393 index 50d86c0..7985318 100644
35394 --- a/arch/x86/oprofile/op_model_amd.c
35395 +++ b/arch/x86/oprofile/op_model_amd.c
35396 @@ -519,9 +519,11 @@ static int op_amd_init(struct oprofile_operations *ops)
35397 num_counters = AMD64_NUM_COUNTERS;
35398 }
35399
35400 - op_amd_spec.num_counters = num_counters;
35401 - op_amd_spec.num_controls = num_counters;
35402 - op_amd_spec.num_virt_counters = max(num_counters, NUM_VIRT_COUNTERS);
35403 + pax_open_kernel();
35404 + *(unsigned int *)&op_amd_spec.num_counters = num_counters;
35405 + *(unsigned int *)&op_amd_spec.num_controls = num_counters;
35406 + *(unsigned int *)&op_amd_spec.num_virt_counters = max(num_counters, NUM_VIRT_COUNTERS);
35407 + pax_close_kernel();
35408
35409 return 0;
35410 }
35411 diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
35412 index d90528e..0127e2b 100644
35413 --- a/arch/x86/oprofile/op_model_ppro.c
35414 +++ b/arch/x86/oprofile/op_model_ppro.c
35415 @@ -19,6 +19,7 @@
35416 #include <asm/msr.h>
35417 #include <asm/apic.h>
35418 #include <asm/nmi.h>
35419 +#include <asm/pgtable.h>
35420
35421 #include "op_x86_model.h"
35422 #include "op_counter.h"
35423 @@ -221,8 +222,10 @@ static void arch_perfmon_setup_counters(void)
35424
35425 num_counters = min((int)eax.split.num_counters, OP_MAX_COUNTER);
35426
35427 - op_arch_perfmon_spec.num_counters = num_counters;
35428 - op_arch_perfmon_spec.num_controls = num_counters;
35429 + pax_open_kernel();
35430 + *(unsigned int *)&op_arch_perfmon_spec.num_counters = num_counters;
35431 + *(unsigned int *)&op_arch_perfmon_spec.num_controls = num_counters;
35432 + pax_close_kernel();
35433 }
35434
35435 static int arch_perfmon_init(struct oprofile_operations *ignore)
35436 diff --git a/arch/x86/oprofile/op_x86_model.h b/arch/x86/oprofile/op_x86_model.h
35437 index 71e8a67..6a313bb 100644
35438 --- a/arch/x86/oprofile/op_x86_model.h
35439 +++ b/arch/x86/oprofile/op_x86_model.h
35440 @@ -52,7 +52,7 @@ struct op_x86_model_spec {
35441 void (*switch_ctrl)(struct op_x86_model_spec const *model,
35442 struct op_msrs const * const msrs);
35443 #endif
35444 -};
35445 +} __do_const;
35446
35447 struct op_counter_config;
35448
35449 diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c
35450 index 2706230..74b4d9f 100644
35451 --- a/arch/x86/pci/intel_mid_pci.c
35452 +++ b/arch/x86/pci/intel_mid_pci.c
35453 @@ -258,7 +258,7 @@ int __init intel_mid_pci_init(void)
35454 pci_mmcfg_late_init();
35455 pcibios_enable_irq = intel_mid_pci_irq_enable;
35456 pcibios_disable_irq = intel_mid_pci_irq_disable;
35457 - pci_root_ops = intel_mid_pci_ops;
35458 + memcpy((void *)&pci_root_ops, &intel_mid_pci_ops, sizeof pci_root_ops);
35459 pci_soc_mode = 1;
35460 /* Continue with standard init */
35461 return 1;
35462 diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
35463 index 9bd1154..e9d4656 100644
35464 --- a/arch/x86/pci/irq.c
35465 +++ b/arch/x86/pci/irq.c
35466 @@ -51,7 +51,7 @@ struct irq_router {
35467 struct irq_router_handler {
35468 u16 vendor;
35469 int (*probe)(struct irq_router *r, struct pci_dev *router, u16 device);
35470 -};
35471 +} __do_const;
35472
35473 int (*pcibios_enable_irq)(struct pci_dev *dev) = pirq_enable_irq;
35474 void (*pcibios_disable_irq)(struct pci_dev *dev) = pirq_disable_irq;
35475 @@ -792,7 +792,7 @@ static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router
35476 return 0;
35477 }
35478
35479 -static __initdata struct irq_router_handler pirq_routers[] = {
35480 +static __initconst const struct irq_router_handler pirq_routers[] = {
35481 { PCI_VENDOR_ID_INTEL, intel_router_probe },
35482 { PCI_VENDOR_ID_AL, ali_router_probe },
35483 { PCI_VENDOR_ID_ITE, ite_router_probe },
35484 @@ -819,7 +819,7 @@ static struct pci_dev *pirq_router_dev;
35485 static void __init pirq_find_router(struct irq_router *r)
35486 {
35487 struct irq_routing_table *rt = pirq_table;
35488 - struct irq_router_handler *h;
35489 + const struct irq_router_handler *h;
35490
35491 #ifdef CONFIG_PCI_BIOS
35492 if (!rt->signature) {
35493 @@ -1092,7 +1092,7 @@ static int __init fix_acer_tm360_irqrouting(const struct dmi_system_id *d)
35494 return 0;
35495 }
35496
35497 -static struct dmi_system_id __initdata pciirq_dmi_table[] = {
35498 +static const struct dmi_system_id __initconst pciirq_dmi_table[] = {
35499 {
35500 .callback = fix_broken_hp_bios_irq9,
35501 .ident = "HP Pavilion N5400 Series Laptop",
35502 diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
35503 index 9b83b90..2c256c5 100644
35504 --- a/arch/x86/pci/pcbios.c
35505 +++ b/arch/x86/pci/pcbios.c
35506 @@ -79,7 +79,7 @@ union bios32 {
35507 static struct {
35508 unsigned long address;
35509 unsigned short segment;
35510 -} bios32_indirect __initdata = { 0, __KERNEL_CS };
35511 +} bios32_indirect __initdata = { 0, __PCIBIOS_CS };
35512
35513 /*
35514 * Returns the entry point for the given service, NULL on error
35515 @@ -92,37 +92,80 @@ static unsigned long __init bios32_service(unsigned long service)
35516 unsigned long length; /* %ecx */
35517 unsigned long entry; /* %edx */
35518 unsigned long flags;
35519 + struct desc_struct d, *gdt;
35520
35521 local_irq_save(flags);
35522 - __asm__("lcall *(%%edi); cld"
35523 +
35524 + gdt = get_cpu_gdt_table(smp_processor_id());
35525 +
35526 + pack_descriptor(&d, 0UL, 0xFFFFFUL, 0x9B, 0xC);
35527 + write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_CS, &d, DESCTYPE_S);
35528 + pack_descriptor(&d, 0UL, 0xFFFFFUL, 0x93, 0xC);
35529 + write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_DS, &d, DESCTYPE_S);
35530 +
35531 + __asm__("movw %w7, %%ds; lcall *(%%edi); push %%ss; pop %%ds; cld"
35532 : "=a" (return_code),
35533 "=b" (address),
35534 "=c" (length),
35535 "=d" (entry)
35536 : "0" (service),
35537 "1" (0),
35538 - "D" (&bios32_indirect));
35539 + "D" (&bios32_indirect),
35540 + "r"(__PCIBIOS_DS)
35541 + : "memory");
35542 +
35543 + pax_open_kernel();
35544 + gdt[GDT_ENTRY_PCIBIOS_CS].a = 0;
35545 + gdt[GDT_ENTRY_PCIBIOS_CS].b = 0;
35546 + gdt[GDT_ENTRY_PCIBIOS_DS].a = 0;
35547 + gdt[GDT_ENTRY_PCIBIOS_DS].b = 0;
35548 + pax_close_kernel();
35549 +
35550 local_irq_restore(flags);
35551
35552 switch (return_code) {
35553 - case 0:
35554 - return address + entry;
35555 - case 0x80: /* Not present */
35556 - printk(KERN_WARNING "bios32_service(0x%lx): not present\n", service);
35557 - return 0;
35558 - default: /* Shouldn't happen */
35559 - printk(KERN_WARNING "bios32_service(0x%lx): returned 0x%x -- BIOS bug!\n",
35560 - service, return_code);
35561 + case 0: {
35562 + int cpu;
35563 + unsigned char flags;
35564 +
35565 + printk(KERN_INFO "bios32_service: base:%08lx length:%08lx entry:%08lx\n", address, length, entry);
35566 + if (address >= 0xFFFF0 || length > 0x100000 - address || length <= entry) {
35567 + printk(KERN_WARNING "bios32_service: not valid\n");
35568 return 0;
35569 + }
35570 + address = address + PAGE_OFFSET;
35571 + length += 16UL; /* some BIOSs underreport this... */
35572 + flags = 4;
35573 + if (length >= 64*1024*1024) {
35574 + length >>= PAGE_SHIFT;
35575 + flags |= 8;
35576 + }
35577 +
35578 + for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
35579 + gdt = get_cpu_gdt_table(cpu);
35580 + pack_descriptor(&d, address, length, 0x9b, flags);
35581 + write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_CS, &d, DESCTYPE_S);
35582 + pack_descriptor(&d, address, length, 0x93, flags);
35583 + write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_DS, &d, DESCTYPE_S);
35584 + }
35585 + return entry;
35586 + }
35587 + case 0x80: /* Not present */
35588 + printk(KERN_WARNING "bios32_service(0x%lx): not present\n", service);
35589 + return 0;
35590 + default: /* Shouldn't happen */
35591 + printk(KERN_WARNING "bios32_service(0x%lx): returned 0x%x -- BIOS bug!\n",
35592 + service, return_code);
35593 + return 0;
35594 }
35595 }
35596
35597 static struct {
35598 unsigned long address;
35599 unsigned short segment;
35600 -} pci_indirect = { 0, __KERNEL_CS };
35601 +} pci_indirect __read_only = { 0, __PCIBIOS_CS };
35602
35603 -static int pci_bios_present;
35604 +static int pci_bios_present __read_only;
35605
35606 static int __init check_pcibios(void)
35607 {
35608 @@ -131,11 +174,13 @@ static int __init check_pcibios(void)
35609 unsigned long flags, pcibios_entry;
35610
35611 if ((pcibios_entry = bios32_service(PCI_SERVICE))) {
35612 - pci_indirect.address = pcibios_entry + PAGE_OFFSET;
35613 + pci_indirect.address = pcibios_entry;
35614
35615 local_irq_save(flags);
35616 - __asm__(
35617 - "lcall *(%%edi); cld\n\t"
35618 + __asm__("movw %w6, %%ds\n\t"
35619 + "lcall *%%ss:(%%edi); cld\n\t"
35620 + "push %%ss\n\t"
35621 + "pop %%ds\n\t"
35622 "jc 1f\n\t"
35623 "xor %%ah, %%ah\n"
35624 "1:"
35625 @@ -144,7 +189,8 @@ static int __init check_pcibios(void)
35626 "=b" (ebx),
35627 "=c" (ecx)
35628 : "1" (PCIBIOS_PCI_BIOS_PRESENT),
35629 - "D" (&pci_indirect)
35630 + "D" (&pci_indirect),
35631 + "r" (__PCIBIOS_DS)
35632 : "memory");
35633 local_irq_restore(flags);
35634
35635 @@ -189,7 +235,10 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35636
35637 switch (len) {
35638 case 1:
35639 - __asm__("lcall *(%%esi); cld\n\t"
35640 + __asm__("movw %w6, %%ds\n\t"
35641 + "lcall *%%ss:(%%esi); cld\n\t"
35642 + "push %%ss\n\t"
35643 + "pop %%ds\n\t"
35644 "jc 1f\n\t"
35645 "xor %%ah, %%ah\n"
35646 "1:"
35647 @@ -198,7 +247,8 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35648 : "1" (PCIBIOS_READ_CONFIG_BYTE),
35649 "b" (bx),
35650 "D" ((long)reg),
35651 - "S" (&pci_indirect));
35652 + "S" (&pci_indirect),
35653 + "r" (__PCIBIOS_DS));
35654 /*
35655 * Zero-extend the result beyond 8 bits, do not trust the
35656 * BIOS having done it:
35657 @@ -206,7 +256,10 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35658 *value &= 0xff;
35659 break;
35660 case 2:
35661 - __asm__("lcall *(%%esi); cld\n\t"
35662 + __asm__("movw %w6, %%ds\n\t"
35663 + "lcall *%%ss:(%%esi); cld\n\t"
35664 + "push %%ss\n\t"
35665 + "pop %%ds\n\t"
35666 "jc 1f\n\t"
35667 "xor %%ah, %%ah\n"
35668 "1:"
35669 @@ -215,7 +268,8 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35670 : "1" (PCIBIOS_READ_CONFIG_WORD),
35671 "b" (bx),
35672 "D" ((long)reg),
35673 - "S" (&pci_indirect));
35674 + "S" (&pci_indirect),
35675 + "r" (__PCIBIOS_DS));
35676 /*
35677 * Zero-extend the result beyond 16 bits, do not trust the
35678 * BIOS having done it:
35679 @@ -223,7 +277,10 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35680 *value &= 0xffff;
35681 break;
35682 case 4:
35683 - __asm__("lcall *(%%esi); cld\n\t"
35684 + __asm__("movw %w6, %%ds\n\t"
35685 + "lcall *%%ss:(%%esi); cld\n\t"
35686 + "push %%ss\n\t"
35687 + "pop %%ds\n\t"
35688 "jc 1f\n\t"
35689 "xor %%ah, %%ah\n"
35690 "1:"
35691 @@ -232,7 +289,8 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
35692 : "1" (PCIBIOS_READ_CONFIG_DWORD),
35693 "b" (bx),
35694 "D" ((long)reg),
35695 - "S" (&pci_indirect));
35696 + "S" (&pci_indirect),
35697 + "r" (__PCIBIOS_DS));
35698 break;
35699 }
35700
35701 @@ -256,7 +314,10 @@ static int pci_bios_write(unsigned int seg, unsigned int bus,
35702
35703 switch (len) {
35704 case 1:
35705 - __asm__("lcall *(%%esi); cld\n\t"
35706 + __asm__("movw %w6, %%ds\n\t"
35707 + "lcall *%%ss:(%%esi); cld\n\t"
35708 + "push %%ss\n\t"
35709 + "pop %%ds\n\t"
35710 "jc 1f\n\t"
35711 "xor %%ah, %%ah\n"
35712 "1:"
35713 @@ -265,10 +326,14 @@ static int pci_bios_write(unsigned int seg, unsigned int bus,
35714 "c" (value),
35715 "b" (bx),
35716 "D" ((long)reg),
35717 - "S" (&pci_indirect));
35718 + "S" (&pci_indirect),
35719 + "r" (__PCIBIOS_DS));
35720 break;
35721 case 2:
35722 - __asm__("lcall *(%%esi); cld\n\t"
35723 + __asm__("movw %w6, %%ds\n\t"
35724 + "lcall *%%ss:(%%esi); cld\n\t"
35725 + "push %%ss\n\t"
35726 + "pop %%ds\n\t"
35727 "jc 1f\n\t"
35728 "xor %%ah, %%ah\n"
35729 "1:"
35730 @@ -277,10 +342,14 @@ static int pci_bios_write(unsigned int seg, unsigned int bus,
35731 "c" (value),
35732 "b" (bx),
35733 "D" ((long)reg),
35734 - "S" (&pci_indirect));
35735 + "S" (&pci_indirect),
35736 + "r" (__PCIBIOS_DS));
35737 break;
35738 case 4:
35739 - __asm__("lcall *(%%esi); cld\n\t"
35740 + __asm__("movw %w6, %%ds\n\t"
35741 + "lcall *%%ss:(%%esi); cld\n\t"
35742 + "push %%ss\n\t"
35743 + "pop %%ds\n\t"
35744 "jc 1f\n\t"
35745 "xor %%ah, %%ah\n"
35746 "1:"
35747 @@ -289,7 +358,8 @@ static int pci_bios_write(unsigned int seg, unsigned int bus,
35748 "c" (value),
35749 "b" (bx),
35750 "D" ((long)reg),
35751 - "S" (&pci_indirect));
35752 + "S" (&pci_indirect),
35753 + "r" (__PCIBIOS_DS));
35754 break;
35755 }
35756
35757 @@ -394,10 +464,13 @@ struct irq_routing_table * pcibios_get_irq_routing_table(void)
35758
35759 DBG("PCI: Fetching IRQ routing table... ");
35760 __asm__("push %%es\n\t"
35761 + "movw %w8, %%ds\n\t"
35762 "push %%ds\n\t"
35763 "pop %%es\n\t"
35764 - "lcall *(%%esi); cld\n\t"
35765 + "lcall *%%ss:(%%esi); cld\n\t"
35766 "pop %%es\n\t"
35767 + "push %%ss\n\t"
35768 + "pop %%ds\n"
35769 "jc 1f\n\t"
35770 "xor %%ah, %%ah\n"
35771 "1:"
35772 @@ -408,7 +481,8 @@ struct irq_routing_table * pcibios_get_irq_routing_table(void)
35773 "1" (0),
35774 "D" ((long) &opt),
35775 "S" (&pci_indirect),
35776 - "m" (opt)
35777 + "m" (opt),
35778 + "r" (__PCIBIOS_DS)
35779 : "memory");
35780 DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
35781 if (ret & 0xff00)
35782 @@ -432,7 +506,10 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq)
35783 {
35784 int ret;
35785
35786 - __asm__("lcall *(%%esi); cld\n\t"
35787 + __asm__("movw %w5, %%ds\n\t"
35788 + "lcall *%%ss:(%%esi); cld\n\t"
35789 + "push %%ss\n\t"
35790 + "pop %%ds\n"
35791 "jc 1f\n\t"
35792 "xor %%ah, %%ah\n"
35793 "1:"
35794 @@ -440,7 +517,8 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq)
35795 : "0" (PCIBIOS_SET_PCI_HW_INT),
35796 "b" ((dev->bus->number << 8) | dev->devfn),
35797 "c" ((irq << 8) | (pin + 10)),
35798 - "S" (&pci_indirect));
35799 + "S" (&pci_indirect),
35800 + "r" (__PCIBIOS_DS));
35801 return !(ret & 0xff00);
35802 }
35803 EXPORT_SYMBOL(pcibios_set_irq_routing);
35804 diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
35805 index ed5b673..24d2d53 100644
35806 --- a/arch/x86/platform/efi/efi_32.c
35807 +++ b/arch/x86/platform/efi/efi_32.c
35808 @@ -61,11 +61,27 @@ pgd_t * __init efi_call_phys_prolog(void)
35809 struct desc_ptr gdt_descr;
35810 pgd_t *save_pgd;
35811
35812 +#ifdef CONFIG_PAX_KERNEXEC
35813 + struct desc_struct d;
35814 +#endif
35815 +
35816 /* Current pgd is swapper_pg_dir, we'll restore it later: */
35817 +#ifdef CONFIG_PAX_PER_CPU_PGD
35818 + save_pgd = get_cpu_pgd(smp_processor_id(), kernel);
35819 +#else
35820 save_pgd = swapper_pg_dir;
35821 +#endif
35822 +
35823 load_cr3(initial_page_table);
35824 __flush_tlb_all();
35825
35826 +#ifdef CONFIG_PAX_KERNEXEC
35827 + pack_descriptor(&d, 0, 0xFFFFF, 0x9B, 0xC);
35828 + write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
35829 + pack_descriptor(&d, 0, 0xFFFFF, 0x93, 0xC);
35830 + write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
35831 +#endif
35832 +
35833 gdt_descr.address = __pa(get_cpu_gdt_table(0));
35834 gdt_descr.size = GDT_SIZE - 1;
35835 load_gdt(&gdt_descr);
35836 @@ -77,6 +93,14 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd)
35837 {
35838 struct desc_ptr gdt_descr;
35839
35840 +#ifdef CONFIG_PAX_KERNEXEC
35841 + struct desc_struct d;
35842 +
35843 + memset(&d, 0, sizeof d);
35844 + write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
35845 + write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
35846 +#endif
35847 +
35848 gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
35849 gdt_descr.size = GDT_SIZE - 1;
35850 load_gdt(&gdt_descr);
35851 diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
35852 index a0ac0f9..f41d324 100644
35853 --- a/arch/x86/platform/efi/efi_64.c
35854 +++ b/arch/x86/platform/efi/efi_64.c
35855 @@ -96,6 +96,11 @@ pgd_t * __init efi_call_phys_prolog(void)
35856 vaddress = (unsigned long)__va(pgd * PGDIR_SIZE);
35857 set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress));
35858 }
35859 +
35860 +#ifdef CONFIG_PAX_PER_CPU_PGD
35861 + load_cr3(swapper_pg_dir);
35862 +#endif
35863 +
35864 __flush_tlb_all();
35865
35866 return save_pgd;
35867 @@ -119,6 +124,10 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd)
35868
35869 kfree(save_pgd);
35870
35871 +#ifdef CONFIG_PAX_PER_CPU_PGD
35872 + load_cr3(get_cpu_pgd(smp_processor_id(), kernel));
35873 +#endif
35874 +
35875 __flush_tlb_all();
35876 early_code_mapping_set_exec(0);
35877 }
35878 @@ -148,8 +157,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
35879 unsigned npages;
35880 pgd_t *pgd;
35881
35882 - if (efi_enabled(EFI_OLD_MEMMAP))
35883 + if (efi_enabled(EFI_OLD_MEMMAP)) {
35884 + /* PaX: We need to disable the NX bit in the PGD, otherwise we won't be
35885 + * able to execute the EFI services.
35886 + */
35887 + if (__supported_pte_mask & _PAGE_NX) {
35888 + unsigned long addr = (unsigned long) __va(0);
35889 + pgd_t pe = __pgd(pgd_val(*pgd_offset_k(addr)) & ~_PAGE_NX);
35890 +
35891 + pr_alert("PAX: Disabling NX protection for low memory map. Try booting without \"efi=old_map\"\n");
35892 +#ifdef CONFIG_PAX_PER_CPU_PGD
35893 + set_pgd(pgd_offset_cpu(0, kernel, addr), pe);
35894 +#endif
35895 + set_pgd(pgd_offset_k(addr), pe);
35896 + }
35897 +
35898 return 0;
35899 + }
35900
35901 efi_scratch.efi_pgt = (pgd_t *)(unsigned long)real_mode_header->trampoline_pgd;
35902 pgd = __va(efi_scratch.efi_pgt);
35903 diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S
35904 index 040192b..7d3300f 100644
35905 --- a/arch/x86/platform/efi/efi_stub_32.S
35906 +++ b/arch/x86/platform/efi/efi_stub_32.S
35907 @@ -6,7 +6,9 @@
35908 */
35909
35910 #include <linux/linkage.h>
35911 +#include <linux/init.h>
35912 #include <asm/page_types.h>
35913 +#include <asm/segment.h>
35914
35915 /*
35916 * efi_call_phys(void *, ...) is a function with variable parameters.
35917 @@ -20,7 +22,7 @@
35918 * service functions will comply with gcc calling convention, too.
35919 */
35920
35921 -.text
35922 +__INIT
35923 ENTRY(efi_call_phys)
35924 /*
35925 * 0. The function can only be called in Linux kernel. So CS has been
35926 @@ -36,10 +38,24 @@ ENTRY(efi_call_phys)
35927 * The mapping of lower virtual memory has been created in prolog and
35928 * epilog.
35929 */
35930 - movl $1f, %edx
35931 - subl $__PAGE_OFFSET, %edx
35932 - jmp *%edx
35933 +#ifdef CONFIG_PAX_KERNEXEC
35934 + movl $(__KERNEXEC_EFI_DS), %edx
35935 + mov %edx, %ds
35936 + mov %edx, %es
35937 + mov %edx, %ss
35938 + addl $2f,(1f)
35939 + ljmp *(1f)
35940 +
35941 +__INITDATA
35942 +1: .long __LOAD_PHYSICAL_ADDR, __KERNEXEC_EFI_CS
35943 +.previous
35944 +
35945 +2:
35946 + subl $2b,(1b)
35947 +#else
35948 + jmp 1f-__PAGE_OFFSET
35949 1:
35950 +#endif
35951
35952 /*
35953 * 2. Now on the top of stack is the return
35954 @@ -47,14 +63,8 @@ ENTRY(efi_call_phys)
35955 * parameter 2, ..., param n. To make things easy, we save the return
35956 * address of efi_call_phys in a global variable.
35957 */
35958 - popl %edx
35959 - movl %edx, saved_return_addr
35960 - /* get the function pointer into ECX*/
35961 - popl %ecx
35962 - movl %ecx, efi_rt_function_ptr
35963 - movl $2f, %edx
35964 - subl $__PAGE_OFFSET, %edx
35965 - pushl %edx
35966 + popl (saved_return_addr)
35967 + popl (efi_rt_function_ptr)
35968
35969 /*
35970 * 3. Clear PG bit in %CR0.
35971 @@ -73,9 +83,8 @@ ENTRY(efi_call_phys)
35972 /*
35973 * 5. Call the physical function.
35974 */
35975 - jmp *%ecx
35976 + call *(efi_rt_function_ptr-__PAGE_OFFSET)
35977
35978 -2:
35979 /*
35980 * 6. After EFI runtime service returns, control will return to
35981 * following instruction. We'd better readjust stack pointer first.
35982 @@ -88,35 +97,36 @@ ENTRY(efi_call_phys)
35983 movl %cr0, %edx
35984 orl $0x80000000, %edx
35985 movl %edx, %cr0
35986 - jmp 1f
35987 -1:
35988 +
35989 /*
35990 * 8. Now restore the virtual mode from flat mode by
35991 * adding EIP with PAGE_OFFSET.
35992 */
35993 - movl $1f, %edx
35994 - jmp *%edx
35995 +#ifdef CONFIG_PAX_KERNEXEC
35996 + movl $(__KERNEL_DS), %edx
35997 + mov %edx, %ds
35998 + mov %edx, %es
35999 + mov %edx, %ss
36000 + ljmp $(__KERNEL_CS),$1f
36001 +#else
36002 + jmp 1f+__PAGE_OFFSET
36003 +#endif
36004 1:
36005
36006 /*
36007 * 9. Balance the stack. And because EAX contain the return value,
36008 * we'd better not clobber it.
36009 */
36010 - leal efi_rt_function_ptr, %edx
36011 - movl (%edx), %ecx
36012 - pushl %ecx
36013 + pushl (efi_rt_function_ptr)
36014
36015 /*
36016 - * 10. Push the saved return address onto the stack and return.
36017 + * 10. Return to the saved return address.
36018 */
36019 - leal saved_return_addr, %edx
36020 - movl (%edx), %ecx
36021 - pushl %ecx
36022 - ret
36023 + jmpl *(saved_return_addr)
36024 ENDPROC(efi_call_phys)
36025 .previous
36026
36027 -.data
36028 +__INITDATA
36029 saved_return_addr:
36030 .long 0
36031 efi_rt_function_ptr:
36032 diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
36033 index 86d0f9e..6d499f4 100644
36034 --- a/arch/x86/platform/efi/efi_stub_64.S
36035 +++ b/arch/x86/platform/efi/efi_stub_64.S
36036 @@ -11,6 +11,7 @@
36037 #include <asm/msr.h>
36038 #include <asm/processor-flags.h>
36039 #include <asm/page_types.h>
36040 +#include <asm/alternative-asm.h>
36041
36042 #define SAVE_XMM \
36043 mov %rsp, %rax; \
36044 @@ -88,6 +89,7 @@ ENTRY(efi_call)
36045 RESTORE_PGT
36046 addq $48, %rsp
36047 RESTORE_XMM
36048 + pax_force_retaddr 0, 1
36049 ret
36050 ENDPROC(efi_call)
36051
36052 diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c
36053 index 01d54ea..ba1d71c 100644
36054 --- a/arch/x86/platform/intel-mid/intel-mid.c
36055 +++ b/arch/x86/platform/intel-mid/intel-mid.c
36056 @@ -63,7 +63,7 @@ enum intel_mid_timer_options intel_mid_timer_options;
36057 /* intel_mid_ops to store sub arch ops */
36058 struct intel_mid_ops *intel_mid_ops;
36059 /* getter function for sub arch ops*/
36060 -static void *(*get_intel_mid_ops[])(void) = INTEL_MID_OPS_INIT;
36061 +static const void *(*get_intel_mid_ops[])(void) = INTEL_MID_OPS_INIT;
36062 enum intel_mid_cpu_type __intel_mid_cpu_chip;
36063 EXPORT_SYMBOL_GPL(__intel_mid_cpu_chip);
36064
36065 @@ -71,9 +71,10 @@ static void intel_mid_power_off(void)
36066 {
36067 };
36068
36069 -static void intel_mid_reboot(void)
36070 +static void __noreturn intel_mid_reboot(void)
36071 {
36072 intel_scu_ipc_simple_command(IPCMSG_COLD_BOOT, 0);
36073 + BUG();
36074 }
36075
36076 static unsigned long __init intel_mid_calibrate_tsc(void)
36077 diff --git a/arch/x86/platform/intel-mid/intel_mid_weak_decls.h b/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
36078 index 3c1c386..59a68ed 100644
36079 --- a/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
36080 +++ b/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
36081 @@ -13,6 +13,6 @@
36082 /* For every CPU addition a new get_<cpuname>_ops interface needs
36083 * to be added.
36084 */
36085 -extern void *get_penwell_ops(void);
36086 -extern void *get_cloverview_ops(void);
36087 -extern void *get_tangier_ops(void);
36088 +extern const void *get_penwell_ops(void);
36089 +extern const void *get_cloverview_ops(void);
36090 +extern const void *get_tangier_ops(void);
36091 diff --git a/arch/x86/platform/intel-mid/mfld.c b/arch/x86/platform/intel-mid/mfld.c
36092 index 23381d2..8ddc10e 100644
36093 --- a/arch/x86/platform/intel-mid/mfld.c
36094 +++ b/arch/x86/platform/intel-mid/mfld.c
36095 @@ -64,12 +64,12 @@ static void __init penwell_arch_setup(void)
36096 pm_power_off = mfld_power_off;
36097 }
36098
36099 -void *get_penwell_ops(void)
36100 +const void *get_penwell_ops(void)
36101 {
36102 return &penwell_ops;
36103 }
36104
36105 -void *get_cloverview_ops(void)
36106 +const void *get_cloverview_ops(void)
36107 {
36108 return &penwell_ops;
36109 }
36110 diff --git a/arch/x86/platform/intel-mid/mrfl.c b/arch/x86/platform/intel-mid/mrfl.c
36111 index aaca917..66eadbc 100644
36112 --- a/arch/x86/platform/intel-mid/mrfl.c
36113 +++ b/arch/x86/platform/intel-mid/mrfl.c
36114 @@ -97,7 +97,7 @@ static struct intel_mid_ops tangier_ops = {
36115 .arch_setup = tangier_arch_setup,
36116 };
36117
36118 -void *get_tangier_ops(void)
36119 +const void *get_tangier_ops(void)
36120 {
36121 return &tangier_ops;
36122 }
36123 diff --git a/arch/x86/platform/intel-quark/imr_selftest.c b/arch/x86/platform/intel-quark/imr_selftest.c
36124 index 278e4da..35db1a9 100644
36125 --- a/arch/x86/platform/intel-quark/imr_selftest.c
36126 +++ b/arch/x86/platform/intel-quark/imr_selftest.c
36127 @@ -55,7 +55,7 @@ static void __init imr_self_test_result(int res, const char *fmt, ...)
36128 */
36129 static void __init imr_self_test(void)
36130 {
36131 - phys_addr_t base = virt_to_phys(&_text);
36132 + phys_addr_t base = virt_to_phys((void *)ktla_ktva((unsigned long)_text));
36133 size_t size = virt_to_phys(&__end_rodata) - base;
36134 const char *fmt_over = "overlapped IMR @ (0x%08lx - 0x%08lx)\n";
36135 int ret;
36136 diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
36137 index d6ee929..3637cb5 100644
36138 --- a/arch/x86/platform/olpc/olpc_dt.c
36139 +++ b/arch/x86/platform/olpc/olpc_dt.c
36140 @@ -156,7 +156,7 @@ void * __init prom_early_alloc(unsigned long size)
36141 return res;
36142 }
36143
36144 -static struct of_pdt_ops prom_olpc_ops __initdata = {
36145 +static struct of_pdt_ops prom_olpc_ops __initconst = {
36146 .nextprop = olpc_dt_nextprop,
36147 .getproplen = olpc_dt_getproplen,
36148 .getproperty = olpc_dt_getproperty,
36149 diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
36150 index 9ab5279..8ba4611 100644
36151 --- a/arch/x86/power/cpu.c
36152 +++ b/arch/x86/power/cpu.c
36153 @@ -134,11 +134,8 @@ static void do_fpu_end(void)
36154 static void fix_processor_context(void)
36155 {
36156 int cpu = smp_processor_id();
36157 - struct tss_struct *t = &per_cpu(cpu_tss, cpu);
36158 -#ifdef CONFIG_X86_64
36159 - struct desc_struct *desc = get_cpu_gdt_table(cpu);
36160 - tss_desc tss;
36161 -#endif
36162 + struct tss_struct *t = cpu_tss + cpu;
36163 +
36164 set_tss_desc(cpu, t); /*
36165 * This just modifies memory; should not be
36166 * necessary. But... This is necessary, because
36167 @@ -147,10 +144,6 @@ static void fix_processor_context(void)
36168 */
36169
36170 #ifdef CONFIG_X86_64
36171 - memcpy(&tss, &desc[GDT_ENTRY_TSS], sizeof(tss_desc));
36172 - tss.type = 0x9; /* The available 64-bit TSS (see AMD vol 2, pg 91 */
36173 - write_gdt_entry(desc, GDT_ENTRY_TSS, &tss, DESC_TSS);
36174 -
36175 syscall_init(); /* This sets MSR_*STAR and related */
36176 #endif
36177 load_TR_desc(); /* This does ltr */
36178 diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c
36179 index 0b7a63d..dff2199 100644
36180 --- a/arch/x86/realmode/init.c
36181 +++ b/arch/x86/realmode/init.c
36182 @@ -68,7 +68,13 @@ void __init setup_real_mode(void)
36183 __va(real_mode_header->trampoline_header);
36184
36185 #ifdef CONFIG_X86_32
36186 - trampoline_header->start = __pa_symbol(startup_32_smp);
36187 + trampoline_header->start = __pa_symbol(ktla_ktva((unsigned long)startup_32_smp));
36188 +
36189 +#ifdef CONFIG_PAX_KERNEXEC
36190 + trampoline_header->start -= LOAD_PHYSICAL_ADDR;
36191 +#endif
36192 +
36193 + trampoline_header->boot_cs = __BOOT_CS;
36194 trampoline_header->gdt_limit = __BOOT_DS + 7;
36195 trampoline_header->gdt_base = __pa_symbol(boot_gdt);
36196 #else
36197 @@ -84,7 +90,7 @@ void __init setup_real_mode(void)
36198 *trampoline_cr4_features = __read_cr4();
36199
36200 trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd);
36201 - trampoline_pgd[0] = init_level4_pgt[pgd_index(__PAGE_OFFSET)].pgd;
36202 + trampoline_pgd[0] = init_level4_pgt[pgd_index(__PAGE_OFFSET)].pgd & ~_PAGE_NX;
36203 trampoline_pgd[511] = init_level4_pgt[511].pgd;
36204 #endif
36205 }
36206 diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
36207 index 2730d77..2e4cd19 100644
36208 --- a/arch/x86/realmode/rm/Makefile
36209 +++ b/arch/x86/realmode/rm/Makefile
36210 @@ -68,5 +68,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
36211
36212 KBUILD_CFLAGS := $(LINUXINCLUDE) $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
36213 -I$(srctree)/arch/x86/boot
36214 +ifdef CONSTIFY_PLUGIN
36215 +KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify
36216 +endif
36217 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
36218 GCOV_PROFILE := n
36219 diff --git a/arch/x86/realmode/rm/header.S b/arch/x86/realmode/rm/header.S
36220 index a28221d..93c40f1 100644
36221 --- a/arch/x86/realmode/rm/header.S
36222 +++ b/arch/x86/realmode/rm/header.S
36223 @@ -30,7 +30,9 @@ GLOBAL(real_mode_header)
36224 #endif
36225 /* APM/BIOS reboot */
36226 .long pa_machine_real_restart_asm
36227 -#ifdef CONFIG_X86_64
36228 +#ifdef CONFIG_X86_32
36229 + .long __KERNEL_CS
36230 +#else
36231 .long __KERNEL32_CS
36232 #endif
36233 END(real_mode_header)
36234 diff --git a/arch/x86/realmode/rm/reboot.S b/arch/x86/realmode/rm/reboot.S
36235 index d66c607..3def845 100644
36236 --- a/arch/x86/realmode/rm/reboot.S
36237 +++ b/arch/x86/realmode/rm/reboot.S
36238 @@ -27,6 +27,10 @@ ENTRY(machine_real_restart_asm)
36239 lgdtl pa_tr_gdt
36240
36241 /* Disable paging to drop us out of long mode */
36242 + movl %cr4, %eax
36243 + andl $~X86_CR4_PCIDE, %eax
36244 + movl %eax, %cr4
36245 +
36246 movl %cr0, %eax
36247 andl $~X86_CR0_PG, %eax
36248 movl %eax, %cr0
36249 diff --git a/arch/x86/realmode/rm/trampoline_32.S b/arch/x86/realmode/rm/trampoline_32.S
36250 index 48ddd76..c26749f 100644
36251 --- a/arch/x86/realmode/rm/trampoline_32.S
36252 +++ b/arch/x86/realmode/rm/trampoline_32.S
36253 @@ -24,6 +24,12 @@
36254 #include <asm/page_types.h>
36255 #include "realmode.h"
36256
36257 +#ifdef CONFIG_PAX_KERNEXEC
36258 +#define ta(X) (X)
36259 +#else
36260 +#define ta(X) (pa_ ## X)
36261 +#endif
36262 +
36263 .text
36264 .code16
36265
36266 @@ -38,8 +44,6 @@ ENTRY(trampoline_start)
36267
36268 cli # We should be safe anyway
36269
36270 - movl tr_start, %eax # where we need to go
36271 -
36272 movl $0xA5A5A5A5, trampoline_status
36273 # write marker for master knows we're running
36274
36275 @@ -55,7 +59,7 @@ ENTRY(trampoline_start)
36276 movw $1, %dx # protected mode (PE) bit
36277 lmsw %dx # into protected mode
36278
36279 - ljmpl $__BOOT_CS, $pa_startup_32
36280 + ljmpl *(trampoline_header)
36281
36282 .section ".text32","ax"
36283 .code32
36284 @@ -66,7 +70,7 @@ ENTRY(startup_32) # note: also used from wakeup_asm.S
36285 .balign 8
36286 GLOBAL(trampoline_header)
36287 tr_start: .space 4
36288 - tr_gdt_pad: .space 2
36289 + tr_boot_cs: .space 2
36290 tr_gdt: .space 6
36291 END(trampoline_header)
36292
36293 diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S
36294 index dac7b20..72dbaca 100644
36295 --- a/arch/x86/realmode/rm/trampoline_64.S
36296 +++ b/arch/x86/realmode/rm/trampoline_64.S
36297 @@ -93,6 +93,7 @@ ENTRY(startup_32)
36298 movl %edx, %gs
36299
36300 movl pa_tr_cr4, %eax
36301 + andl $~X86_CR4_PCIDE, %eax
36302 movl %eax, %cr4 # Enable PAE mode
36303
36304 # Setup trampoline 4 level pagetables
36305 @@ -106,7 +107,7 @@ ENTRY(startup_32)
36306 wrmsr
36307
36308 # Enable paging and in turn activate Long Mode
36309 - movl $(X86_CR0_PG | X86_CR0_WP | X86_CR0_PE), %eax
36310 + movl $(X86_CR0_PG | X86_CR0_PE), %eax
36311 movl %eax, %cr0
36312
36313 /*
36314 diff --git a/arch/x86/realmode/rm/wakeup_asm.S b/arch/x86/realmode/rm/wakeup_asm.S
36315 index 9e7e147..25a4158 100644
36316 --- a/arch/x86/realmode/rm/wakeup_asm.S
36317 +++ b/arch/x86/realmode/rm/wakeup_asm.S
36318 @@ -126,11 +126,10 @@ ENTRY(wakeup_start)
36319 lgdtl pmode_gdt
36320
36321 /* This really couldn't... */
36322 - movl pmode_entry, %eax
36323 movl pmode_cr0, %ecx
36324 movl %ecx, %cr0
36325 - ljmpl $__KERNEL_CS, $pa_startup_32
36326 - /* -> jmp *%eax in trampoline_32.S */
36327 +
36328 + ljmpl *pmode_entry
36329 #else
36330 jmp trampoline_start
36331 #endif
36332 diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
36333 index 604a37e..e49702a 100644
36334 --- a/arch/x86/tools/Makefile
36335 +++ b/arch/x86/tools/Makefile
36336 @@ -37,7 +37,7 @@ $(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/in
36337
36338 $(obj)/insn_sanity.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
36339
36340 -HOST_EXTRACFLAGS += -I$(srctree)/tools/include
36341 +HOST_EXTRACFLAGS += -I$(srctree)/tools/include -ggdb
36342 hostprogs-y += relocs
36343 relocs-objs := relocs_32.o relocs_64.o relocs_common.o
36344 PHONY += relocs
36345 diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
36346 index 0c2fae8..88d7719 100644
36347 --- a/arch/x86/tools/relocs.c
36348 +++ b/arch/x86/tools/relocs.c
36349 @@ -1,5 +1,7 @@
36350 /* This is included from relocs_32/64.c */
36351
36352 +#include "../../../include/generated/autoconf.h"
36353 +
36354 #define ElfW(type) _ElfW(ELF_BITS, type)
36355 #define _ElfW(bits, type) __ElfW(bits, type)
36356 #define __ElfW(bits, type) Elf##bits##_##type
36357 @@ -11,6 +13,7 @@
36358 #define Elf_Sym ElfW(Sym)
36359
36360 static Elf_Ehdr ehdr;
36361 +static Elf_Phdr *phdr;
36362
36363 struct relocs {
36364 uint32_t *offset;
36365 @@ -386,9 +389,39 @@ static void read_ehdr(FILE *fp)
36366 }
36367 }
36368
36369 +static void read_phdrs(FILE *fp)
36370 +{
36371 + unsigned int i;
36372 +
36373 + phdr = calloc(ehdr.e_phnum, sizeof(Elf_Phdr));
36374 + if (!phdr) {
36375 + die("Unable to allocate %d program headers\n",
36376 + ehdr.e_phnum);
36377 + }
36378 + if (fseek(fp, ehdr.e_phoff, SEEK_SET) < 0) {
36379 + die("Seek to %d failed: %s\n",
36380 + ehdr.e_phoff, strerror(errno));
36381 + }
36382 + if (fread(phdr, sizeof(*phdr), ehdr.e_phnum, fp) != ehdr.e_phnum) {
36383 + die("Cannot read ELF program headers: %s\n",
36384 + strerror(errno));
36385 + }
36386 + for(i = 0; i < ehdr.e_phnum; i++) {
36387 + phdr[i].p_type = elf_word_to_cpu(phdr[i].p_type);
36388 + phdr[i].p_offset = elf_off_to_cpu(phdr[i].p_offset);
36389 + phdr[i].p_vaddr = elf_addr_to_cpu(phdr[i].p_vaddr);
36390 + phdr[i].p_paddr = elf_addr_to_cpu(phdr[i].p_paddr);
36391 + phdr[i].p_filesz = elf_word_to_cpu(phdr[i].p_filesz);
36392 + phdr[i].p_memsz = elf_word_to_cpu(phdr[i].p_memsz);
36393 + phdr[i].p_flags = elf_word_to_cpu(phdr[i].p_flags);
36394 + phdr[i].p_align = elf_word_to_cpu(phdr[i].p_align);
36395 + }
36396 +
36397 +}
36398 +
36399 static void read_shdrs(FILE *fp)
36400 {
36401 - int i;
36402 + unsigned int i;
36403 Elf_Shdr shdr;
36404
36405 secs = calloc(ehdr.e_shnum, sizeof(struct section));
36406 @@ -423,7 +456,7 @@ static void read_shdrs(FILE *fp)
36407
36408 static void read_strtabs(FILE *fp)
36409 {
36410 - int i;
36411 + unsigned int i;
36412 for (i = 0; i < ehdr.e_shnum; i++) {
36413 struct section *sec = &secs[i];
36414 if (sec->shdr.sh_type != SHT_STRTAB) {
36415 @@ -448,7 +481,7 @@ static void read_strtabs(FILE *fp)
36416
36417 static void read_symtabs(FILE *fp)
36418 {
36419 - int i,j;
36420 + unsigned int i,j;
36421 for (i = 0; i < ehdr.e_shnum; i++) {
36422 struct section *sec = &secs[i];
36423 if (sec->shdr.sh_type != SHT_SYMTAB) {
36424 @@ -479,9 +512,11 @@ static void read_symtabs(FILE *fp)
36425 }
36426
36427
36428 -static void read_relocs(FILE *fp)
36429 +static void read_relocs(FILE *fp, int use_real_mode)
36430 {
36431 - int i,j;
36432 + unsigned int i,j;
36433 + uint32_t base;
36434 +
36435 for (i = 0; i < ehdr.e_shnum; i++) {
36436 struct section *sec = &secs[i];
36437 if (sec->shdr.sh_type != SHT_REL_TYPE) {
36438 @@ -501,9 +536,22 @@ static void read_relocs(FILE *fp)
36439 die("Cannot read symbol table: %s\n",
36440 strerror(errno));
36441 }
36442 + base = 0;
36443 +
36444 +#ifdef CONFIG_X86_32
36445 + for (j = 0; !use_real_mode && j < ehdr.e_phnum; j++) {
36446 + if (phdr[j].p_type != PT_LOAD )
36447 + continue;
36448 + if (secs[sec->shdr.sh_info].shdr.sh_offset < phdr[j].p_offset || secs[sec->shdr.sh_info].shdr.sh_offset >= phdr[j].p_offset + phdr[j].p_filesz)
36449 + continue;
36450 + base = CONFIG_PAGE_OFFSET + phdr[j].p_paddr - phdr[j].p_vaddr;
36451 + break;
36452 + }
36453 +#endif
36454 +
36455 for (j = 0; j < sec->shdr.sh_size/sizeof(Elf_Rel); j++) {
36456 Elf_Rel *rel = &sec->reltab[j];
36457 - rel->r_offset = elf_addr_to_cpu(rel->r_offset);
36458 + rel->r_offset = elf_addr_to_cpu(rel->r_offset) + base;
36459 rel->r_info = elf_xword_to_cpu(rel->r_info);
36460 #if (SHT_REL_TYPE == SHT_RELA)
36461 rel->r_addend = elf_xword_to_cpu(rel->r_addend);
36462 @@ -515,7 +563,7 @@ static void read_relocs(FILE *fp)
36463
36464 static void print_absolute_symbols(void)
36465 {
36466 - int i;
36467 + unsigned int i;
36468 const char *format;
36469
36470 if (ELF_BITS == 64)
36471 @@ -528,7 +576,7 @@ static void print_absolute_symbols(void)
36472 for (i = 0; i < ehdr.e_shnum; i++) {
36473 struct section *sec = &secs[i];
36474 char *sym_strtab;
36475 - int j;
36476 + unsigned int j;
36477
36478 if (sec->shdr.sh_type != SHT_SYMTAB) {
36479 continue;
36480 @@ -555,7 +603,7 @@ static void print_absolute_symbols(void)
36481
36482 static void print_absolute_relocs(void)
36483 {
36484 - int i, printed = 0;
36485 + unsigned int i, printed = 0;
36486 const char *format;
36487
36488 if (ELF_BITS == 64)
36489 @@ -568,7 +616,7 @@ static void print_absolute_relocs(void)
36490 struct section *sec_applies, *sec_symtab;
36491 char *sym_strtab;
36492 Elf_Sym *sh_symtab;
36493 - int j;
36494 + unsigned int j;
36495 if (sec->shdr.sh_type != SHT_REL_TYPE) {
36496 continue;
36497 }
36498 @@ -645,13 +693,13 @@ static void add_reloc(struct relocs *r, uint32_t offset)
36499 static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel,
36500 Elf_Sym *sym, const char *symname))
36501 {
36502 - int i;
36503 + unsigned int i;
36504 /* Walk through the relocations */
36505 for (i = 0; i < ehdr.e_shnum; i++) {
36506 char *sym_strtab;
36507 Elf_Sym *sh_symtab;
36508 struct section *sec_applies, *sec_symtab;
36509 - int j;
36510 + unsigned int j;
36511 struct section *sec = &secs[i];
36512
36513 if (sec->shdr.sh_type != SHT_REL_TYPE) {
36514 @@ -697,7 +745,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel,
36515 * kernel data and does not require special treatment.
36516 *
36517 */
36518 -static int per_cpu_shndx = -1;
36519 +static unsigned int per_cpu_shndx = ~0;
36520 static Elf_Addr per_cpu_load_addr;
36521
36522 static void percpu_init(void)
36523 @@ -830,6 +878,23 @@ static int do_reloc32(struct section *sec, Elf_Rel *rel, Elf_Sym *sym,
36524 {
36525 unsigned r_type = ELF32_R_TYPE(rel->r_info);
36526 int shn_abs = (sym->st_shndx == SHN_ABS) && !is_reloc(S_REL, symname);
36527 + char *sym_strtab = sec->link->link->strtab;
36528 +
36529 + /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */
36530 + if (!strcmp(sec_name(sym->st_shndx), ".data..percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load"))
36531 + return 0;
36532 +
36533 +#ifdef CONFIG_PAX_KERNEXEC
36534 + /* Don't relocate actual code, they are relocated implicitly by the base address of KERNEL_CS */
36535 + if (!strcmp(sec_name(sym->st_shndx), ".text.end") && !strcmp(sym_name(sym_strtab, sym), "_etext"))
36536 + return 0;
36537 + if (!strcmp(sec_name(sym->st_shndx), ".init.text"))
36538 + return 0;
36539 + if (!strcmp(sec_name(sym->st_shndx), ".exit.text"))
36540 + return 0;
36541 + if (!strcmp(sec_name(sym->st_shndx), ".text") && strcmp(sym_name(sym_strtab, sym), "__LOAD_PHYSICAL_ADDR"))
36542 + return 0;
36543 +#endif
36544
36545 switch (r_type) {
36546 case R_386_NONE:
36547 @@ -968,7 +1033,7 @@ static int write32_as_text(uint32_t v, FILE *f)
36548
36549 static void emit_relocs(int as_text, int use_real_mode)
36550 {
36551 - int i;
36552 + unsigned int i;
36553 int (*write_reloc)(uint32_t, FILE *) = write32;
36554 int (*do_reloc)(struct section *sec, Elf_Rel *rel, Elf_Sym *sym,
36555 const char *symname);
36556 @@ -1078,10 +1143,11 @@ void process(FILE *fp, int use_real_mode, int as_text,
36557 {
36558 regex_init(use_real_mode);
36559 read_ehdr(fp);
36560 + read_phdrs(fp);
36561 read_shdrs(fp);
36562 read_strtabs(fp);
36563 read_symtabs(fp);
36564 - read_relocs(fp);
36565 + read_relocs(fp, use_real_mode);
36566 if (ELF_BITS == 64)
36567 percpu_init();
36568 if (show_absolute_syms) {
36569 diff --git a/arch/x86/um/mem_32.c b/arch/x86/um/mem_32.c
36570 index 744afdc..a0b8a0d 100644
36571 --- a/arch/x86/um/mem_32.c
36572 +++ b/arch/x86/um/mem_32.c
36573 @@ -20,7 +20,7 @@ static int __init gate_vma_init(void)
36574 gate_vma.vm_start = FIXADDR_USER_START;
36575 gate_vma.vm_end = FIXADDR_USER_END;
36576 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
36577 - gate_vma.vm_page_prot = __P101;
36578 + gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
36579
36580 return 0;
36581 }
36582 diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c
36583 index 48e3858..ab4458c 100644
36584 --- a/arch/x86/um/tls_32.c
36585 +++ b/arch/x86/um/tls_32.c
36586 @@ -261,7 +261,7 @@ out:
36587 if (unlikely(task == current &&
36588 !t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed)) {
36589 printk(KERN_ERR "get_tls_entry: task with pid %d got here "
36590 - "without flushed TLS.", current->pid);
36591 + "without flushed TLS.", task_pid_nr(current));
36592 }
36593
36594 return 0;
36595 diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
36596 index 4841453..d59a203 100644
36597 --- a/arch/x86/xen/Kconfig
36598 +++ b/arch/x86/xen/Kconfig
36599 @@ -9,6 +9,7 @@ config XEN
36600 select XEN_HAVE_PVMMU
36601 depends on X86_64 || (X86_32 && X86_PAE)
36602 depends on X86_LOCAL_APIC && X86_TSC
36603 + depends on !GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_VIRT_XEN
36604 help
36605 This is the Linux Xen port. Enabling this will allow the
36606 kernel to boot in a paravirtualized environment under the
36607 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
36608 index 11d6fb4..c581662 100644
36609 --- a/arch/x86/xen/enlighten.c
36610 +++ b/arch/x86/xen/enlighten.c
36611 @@ -125,8 +125,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
36612
36613 struct shared_info xen_dummy_shared_info;
36614
36615 -void *xen_initial_gdt;
36616 -
36617 RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
36618 __read_mostly int xen_have_vector_callback;
36619 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
36620 @@ -584,8 +582,7 @@ static void xen_load_gdt(const struct desc_ptr *dtr)
36621 {
36622 unsigned long va = dtr->address;
36623 unsigned int size = dtr->size + 1;
36624 - unsigned pages = (size + PAGE_SIZE - 1) / PAGE_SIZE;
36625 - unsigned long frames[pages];
36626 + unsigned long frames[65536 / PAGE_SIZE];
36627 int f;
36628
36629 /*
36630 @@ -633,8 +630,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
36631 {
36632 unsigned long va = dtr->address;
36633 unsigned int size = dtr->size + 1;
36634 - unsigned pages = (size + PAGE_SIZE - 1) / PAGE_SIZE;
36635 - unsigned long frames[pages];
36636 + unsigned long frames[(GDT_SIZE + PAGE_SIZE - 1) / PAGE_SIZE];
36637 int f;
36638
36639 /*
36640 @@ -642,7 +638,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr)
36641 * 8-byte entries, or 16 4k pages..
36642 */
36643
36644 - BUG_ON(size > 65536);
36645 + BUG_ON(size > GDT_SIZE);
36646 BUG_ON(va & ~PAGE_MASK);
36647
36648 for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) {
36649 @@ -1264,30 +1260,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
36650 #endif
36651 };
36652
36653 -static void xen_reboot(int reason)
36654 +static __noreturn void xen_reboot(int reason)
36655 {
36656 struct sched_shutdown r = { .reason = reason };
36657
36658 - if (HYPERVISOR_sched_op(SCHEDOP_shutdown, &r))
36659 - BUG();
36660 + HYPERVISOR_sched_op(SCHEDOP_shutdown, &r);
36661 + BUG();
36662 }
36663
36664 -static void xen_restart(char *msg)
36665 +static __noreturn void xen_restart(char *msg)
36666 {
36667 xen_reboot(SHUTDOWN_reboot);
36668 }
36669
36670 -static void xen_emergency_restart(void)
36671 +static __noreturn void xen_emergency_restart(void)
36672 {
36673 xen_reboot(SHUTDOWN_reboot);
36674 }
36675
36676 -static void xen_machine_halt(void)
36677 +static __noreturn void xen_machine_halt(void)
36678 {
36679 xen_reboot(SHUTDOWN_poweroff);
36680 }
36681
36682 -static void xen_machine_power_off(void)
36683 +static __noreturn void xen_machine_power_off(void)
36684 {
36685 if (pm_power_off)
36686 pm_power_off();
36687 @@ -1440,8 +1436,11 @@ static void __ref xen_setup_gdt(int cpu)
36688 pv_cpu_ops.write_gdt_entry = xen_write_gdt_entry_boot;
36689 pv_cpu_ops.load_gdt = xen_load_gdt_boot;
36690
36691 - setup_stack_canary_segment(0);
36692 - switch_to_new_gdt(0);
36693 + setup_stack_canary_segment(cpu);
36694 +#ifdef CONFIG_X86_64
36695 + load_percpu_segment(cpu);
36696 +#endif
36697 + switch_to_new_gdt(cpu);
36698
36699 pv_cpu_ops.write_gdt_entry = xen_write_gdt_entry;
36700 pv_cpu_ops.load_gdt = xen_load_gdt;
36701 @@ -1557,7 +1556,17 @@ asmlinkage __visible void __init xen_start_kernel(void)
36702 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
36703
36704 /* Work out if we support NX */
36705 - x86_configure_nx();
36706 +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
36707 + if ((cpuid_eax(0x80000000) & 0xffff0000) == 0x80000000 &&
36708 + (cpuid_edx(0x80000001) & (1U << (X86_FEATURE_NX & 31)))) {
36709 + unsigned l, h;
36710 +
36711 + __supported_pte_mask |= _PAGE_NX;
36712 + rdmsr(MSR_EFER, l, h);
36713 + l |= EFER_NX;
36714 + wrmsr(MSR_EFER, l, h);
36715 + }
36716 +#endif
36717
36718 /* Get mfn list */
36719 xen_build_dynamic_phys_to_machine();
36720 @@ -1585,13 +1594,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
36721
36722 machine_ops = xen_machine_ops;
36723
36724 - /*
36725 - * The only reliable way to retain the initial address of the
36726 - * percpu gdt_page is to remember it here, so we can go and
36727 - * mark it RW later, when the initial percpu area is freed.
36728 - */
36729 - xen_initial_gdt = &per_cpu(gdt_page, 0);
36730 -
36731 xen_smp_init();
36732
36733 #ifdef CONFIG_ACPI_NUMA
36734 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
36735 index dd151b2..d87e22e 100644
36736 --- a/arch/x86/xen/mmu.c
36737 +++ b/arch/x86/xen/mmu.c
36738 @@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
36739 return val;
36740 }
36741
36742 -static pteval_t pte_pfn_to_mfn(pteval_t val)
36743 +static pteval_t __intentional_overflow(-1) pte_pfn_to_mfn(pteval_t val)
36744 {
36745 if (val & _PAGE_PRESENT) {
36746 unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
36747 @@ -1835,7 +1835,11 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
36748 * L3_k[511] -> level2_fixmap_pgt */
36749 convert_pfn_mfn(level3_kernel_pgt);
36750
36751 + convert_pfn_mfn(level3_vmalloc_start_pgt);
36752 + convert_pfn_mfn(level3_vmalloc_end_pgt);
36753 + convert_pfn_mfn(level3_vmemmap_pgt);
36754 /* L3_k[511][506] -> level1_fixmap_pgt */
36755 + /* L3_k[511][507] -> level1_vsyscall_pgt */
36756 convert_pfn_mfn(level2_fixmap_pgt);
36757 }
36758 /* We get [511][511] and have Xen's version of level2_kernel_pgt */
36759 @@ -1860,11 +1864,22 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
36760 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
36761 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
36762 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
36763 + set_page_prot(level3_vmalloc_start_pgt, PAGE_KERNEL_RO);
36764 + set_page_prot(level3_vmalloc_end_pgt, PAGE_KERNEL_RO);
36765 + set_page_prot(level3_vmemmap_pgt, PAGE_KERNEL_RO);
36766 set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO);
36767 set_page_prot(level2_ident_pgt, PAGE_KERNEL_RO);
36768 + set_page_prot(level2_vmemmap_pgt, PAGE_KERNEL_RO);
36769 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
36770 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
36771 - set_page_prot(level1_fixmap_pgt, PAGE_KERNEL_RO);
36772 + set_page_prot(level1_modules_pgt[0], PAGE_KERNEL_RO);
36773 + set_page_prot(level1_modules_pgt[1], PAGE_KERNEL_RO);
36774 + set_page_prot(level1_modules_pgt[2], PAGE_KERNEL_RO);
36775 + set_page_prot(level1_modules_pgt[3], PAGE_KERNEL_RO);
36776 + set_page_prot(level1_fixmap_pgt[0], PAGE_KERNEL_RO);
36777 + set_page_prot(level1_fixmap_pgt[1], PAGE_KERNEL_RO);
36778 + set_page_prot(level1_fixmap_pgt[2], PAGE_KERNEL_RO);
36779 + set_page_prot(level1_vsyscall_pgt, PAGE_KERNEL_RO);
36780
36781 /* Pin down new L4 */
36782 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
36783 @@ -2048,6 +2063,7 @@ static void __init xen_post_allocator_init(void)
36784 pv_mmu_ops.set_pud = xen_set_pud;
36785 #if CONFIG_PGTABLE_LEVELS == 4
36786 pv_mmu_ops.set_pgd = xen_set_pgd;
36787 + pv_mmu_ops.set_pgd_batched = xen_set_pgd;
36788 #endif
36789
36790 /* This will work as long as patching hasn't happened yet
36791 @@ -2126,6 +2142,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
36792 .pud_val = PV_CALLEE_SAVE(xen_pud_val),
36793 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
36794 .set_pgd = xen_set_pgd_hyper,
36795 + .set_pgd_batched = xen_set_pgd_hyper,
36796
36797 .alloc_pud = xen_alloc_pmd_init,
36798 .release_pud = xen_release_pmd_init,
36799 diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
36800 index 8648438..18bac20 100644
36801 --- a/arch/x86/xen/smp.c
36802 +++ b/arch/x86/xen/smp.c
36803 @@ -284,17 +284,13 @@ static void __init xen_smp_prepare_boot_cpu(void)
36804
36805 if (xen_pv_domain()) {
36806 if (!xen_feature(XENFEAT_writable_page_tables))
36807 - /* We've switched to the "real" per-cpu gdt, so make
36808 - * sure the old memory can be recycled. */
36809 - make_lowmem_page_readwrite(xen_initial_gdt);
36810 -
36811 #ifdef CONFIG_X86_32
36812 /*
36813 * Xen starts us with XEN_FLAT_RING1_DS, but linux code
36814 * expects __USER_DS
36815 */
36816 - loadsegment(ds, __USER_DS);
36817 - loadsegment(es, __USER_DS);
36818 + loadsegment(ds, __KERNEL_DS);
36819 + loadsegment(es, __KERNEL_DS);
36820 #endif
36821
36822 xen_filter_cpu_maps();
36823 @@ -375,7 +371,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
36824 #ifdef CONFIG_X86_32
36825 /* Note: PVH is not yet supported on x86_32. */
36826 ctxt->user_regs.fs = __KERNEL_PERCPU;
36827 - ctxt->user_regs.gs = __KERNEL_STACK_CANARY;
36828 + savesegment(gs, ctxt->user_regs.gs);
36829 #endif
36830 memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt));
36831
36832 @@ -383,8 +379,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
36833 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
36834 ctxt->flags = VGCF_IN_KERNEL;
36835 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
36836 - ctxt->user_regs.ds = __USER_DS;
36837 - ctxt->user_regs.es = __USER_DS;
36838 + ctxt->user_regs.ds = __KERNEL_DS;
36839 + ctxt->user_regs.es = __KERNEL_DS;
36840 ctxt->user_regs.ss = __KERNEL_DS;
36841
36842 xen_copy_trap_info(ctxt->trap_ctxt);
36843 @@ -720,7 +716,7 @@ static const struct smp_ops xen_smp_ops __initconst = {
36844
36845 void __init xen_smp_init(void)
36846 {
36847 - smp_ops = xen_smp_ops;
36848 + memcpy((void *)&smp_ops, &xen_smp_ops, sizeof smp_ops);
36849 xen_fill_possible_map();
36850 }
36851
36852 diff --git a/arch/x86/xen/xen-asm_32.S b/arch/x86/xen/xen-asm_32.S
36853 index fd92a64..1f72641 100644
36854 --- a/arch/x86/xen/xen-asm_32.S
36855 +++ b/arch/x86/xen/xen-asm_32.S
36856 @@ -99,7 +99,7 @@ ENTRY(xen_iret)
36857 pushw %fs
36858 movl $(__KERNEL_PERCPU), %eax
36859 movl %eax, %fs
36860 - movl %fs:xen_vcpu, %eax
36861 + mov PER_CPU_VAR(xen_vcpu), %eax
36862 POP_FS
36863 #else
36864 movl %ss:xen_vcpu, %eax
36865 diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
36866 index 8afdfcc..79239db 100644
36867 --- a/arch/x86/xen/xen-head.S
36868 +++ b/arch/x86/xen/xen-head.S
36869 @@ -41,6 +41,17 @@ ENTRY(startup_xen)
36870 #ifdef CONFIG_X86_32
36871 mov %esi,xen_start_info
36872 mov $init_thread_union+THREAD_SIZE,%esp
36873 +#ifdef CONFIG_SMP
36874 + movl $cpu_gdt_table,%edi
36875 + movl $__per_cpu_load,%eax
36876 + movw %ax,__KERNEL_PERCPU + 2(%edi)
36877 + rorl $16,%eax
36878 + movb %al,__KERNEL_PERCPU + 4(%edi)
36879 + movb %ah,__KERNEL_PERCPU + 7(%edi)
36880 + movl $__per_cpu_end - 1,%eax
36881 + subl $__per_cpu_start,%eax
36882 + movw %ax,__KERNEL_PERCPU + 0(%edi)
36883 +#endif
36884 #else
36885 mov %rsi,xen_start_info
36886 mov $init_thread_union+THREAD_SIZE,%rsp
36887 diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
36888 index 2292721..a9bb18e 100644
36889 --- a/arch/x86/xen/xen-ops.h
36890 +++ b/arch/x86/xen/xen-ops.h
36891 @@ -16,8 +16,6 @@ void xen_syscall_target(void);
36892 void xen_syscall32_target(void);
36893 #endif
36894
36895 -extern void *xen_initial_gdt;
36896 -
36897 struct trap_info;
36898 void xen_copy_trap_info(struct trap_info *traps);
36899
36900 diff --git a/arch/xtensa/variants/dc232b/include/variant/core.h b/arch/xtensa/variants/dc232b/include/variant/core.h
36901 index 525bd3d..ef888b1 100644
36902 --- a/arch/xtensa/variants/dc232b/include/variant/core.h
36903 +++ b/arch/xtensa/variants/dc232b/include/variant/core.h
36904 @@ -119,9 +119,9 @@
36905 ----------------------------------------------------------------------*/
36906
36907 #define XCHAL_ICACHE_LINESIZE 32 /* I-cache line size in bytes */
36908 -#define XCHAL_DCACHE_LINESIZE 32 /* D-cache line size in bytes */
36909 #define XCHAL_ICACHE_LINEWIDTH 5 /* log2(I line size in bytes) */
36910 #define XCHAL_DCACHE_LINEWIDTH 5 /* log2(D line size in bytes) */
36911 +#define XCHAL_DCACHE_LINESIZE (_AC(1,UL) << XCHAL_DCACHE_LINEWIDTH) /* D-cache line size in bytes */
36912
36913 #define XCHAL_ICACHE_SIZE 16384 /* I-cache size in bytes or 0 */
36914 #define XCHAL_DCACHE_SIZE 16384 /* D-cache size in bytes or 0 */
36915 diff --git a/arch/xtensa/variants/fsf/include/variant/core.h b/arch/xtensa/variants/fsf/include/variant/core.h
36916 index 2f33760..835e50a 100644
36917 --- a/arch/xtensa/variants/fsf/include/variant/core.h
36918 +++ b/arch/xtensa/variants/fsf/include/variant/core.h
36919 @@ -11,6 +11,7 @@
36920 #ifndef _XTENSA_CORE_H
36921 #define _XTENSA_CORE_H
36922
36923 +#include <linux/const.h>
36924
36925 /****************************************************************************
36926 Parameters Useful for Any Code, USER or PRIVILEGED
36927 @@ -112,9 +113,9 @@
36928 ----------------------------------------------------------------------*/
36929
36930 #define XCHAL_ICACHE_LINESIZE 16 /* I-cache line size in bytes */
36931 -#define XCHAL_DCACHE_LINESIZE 16 /* D-cache line size in bytes */
36932 #define XCHAL_ICACHE_LINEWIDTH 4 /* log2(I line size in bytes) */
36933 #define XCHAL_DCACHE_LINEWIDTH 4 /* log2(D line size in bytes) */
36934 +#define XCHAL_DCACHE_LINESIZE (_AC(1,UL) << XCHAL_DCACHE_LINEWIDTH) /* D-cache line size in bytes */
36935
36936 #define XCHAL_ICACHE_SIZE 8192 /* I-cache size in bytes or 0 */
36937 #define XCHAL_DCACHE_SIZE 8192 /* D-cache size in bytes or 0 */
36938 diff --git a/block/bio.c b/block/bio.c
36939 index d6e5ba3..2bb142c 100644
36940 --- a/block/bio.c
36941 +++ b/block/bio.c
36942 @@ -1187,7 +1187,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
36943 /*
36944 * Overflow, abort
36945 */
36946 - if (end < start)
36947 + if (end < start || end - start > INT_MAX - nr_pages)
36948 return ERR_PTR(-EINVAL);
36949
36950 nr_pages += end - start;
36951 @@ -1312,7 +1312,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
36952 /*
36953 * Overflow, abort
36954 */
36955 - if (end < start)
36956 + if (end < start || end - start > INT_MAX - nr_pages)
36957 return ERR_PTR(-EINVAL);
36958
36959 nr_pages += end - start;
36960 diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
36961 index 0736729..2ec3b48 100644
36962 --- a/block/blk-iopoll.c
36963 +++ b/block/blk-iopoll.c
36964 @@ -74,7 +74,7 @@ void blk_iopoll_complete(struct blk_iopoll *iop)
36965 }
36966 EXPORT_SYMBOL(blk_iopoll_complete);
36967
36968 -static void blk_iopoll_softirq(struct softirq_action *h)
36969 +static __latent_entropy void blk_iopoll_softirq(void)
36970 {
36971 struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll);
36972 int rearm = 0, budget = blk_iopoll_budget;
36973 diff --git a/block/blk-map.c b/block/blk-map.c
36974 index da310a1..213b5c9 100644
36975 --- a/block/blk-map.c
36976 +++ b/block/blk-map.c
36977 @@ -192,7 +192,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
36978 if (!len || !kbuf)
36979 return -EINVAL;
36980
36981 - do_copy = !blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf);
36982 + do_copy = !blk_rq_aligned(q, addr, len) || object_starts_on_stack(kbuf);
36983 if (do_copy)
36984 bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
36985 else
36986 diff --git a/block/blk-softirq.c b/block/blk-softirq.c
36987 index 53b1737..08177d2e 100644
36988 --- a/block/blk-softirq.c
36989 +++ b/block/blk-softirq.c
36990 @@ -18,7 +18,7 @@ static DEFINE_PER_CPU(struct list_head, blk_cpu_done);
36991 * Softirq action handler - move entries to local list and loop over them
36992 * while passing them to the queue registered handler.
36993 */
36994 -static void blk_done_softirq(struct softirq_action *h)
36995 +static __latent_entropy void blk_done_softirq(void)
36996 {
36997 struct list_head *cpu_list, local_list;
36998
36999 diff --git a/block/bsg.c b/block/bsg.c
37000 index d214e92..9649863 100644
37001 --- a/block/bsg.c
37002 +++ b/block/bsg.c
37003 @@ -140,16 +140,24 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
37004 struct sg_io_v4 *hdr, struct bsg_device *bd,
37005 fmode_t has_write_perm)
37006 {
37007 + unsigned char tmpcmd[sizeof(rq->__cmd)];
37008 + unsigned char *cmdptr;
37009 +
37010 if (hdr->request_len > BLK_MAX_CDB) {
37011 rq->cmd = kzalloc(hdr->request_len, GFP_KERNEL);
37012 if (!rq->cmd)
37013 return -ENOMEM;
37014 - }
37015 + cmdptr = rq->cmd;
37016 + } else
37017 + cmdptr = tmpcmd;
37018
37019 - if (copy_from_user(rq->cmd, (void __user *)(unsigned long)hdr->request,
37020 + if (copy_from_user(cmdptr, (void __user *)(unsigned long)hdr->request,
37021 hdr->request_len))
37022 return -EFAULT;
37023
37024 + if (cmdptr != rq->cmd)
37025 + memcpy(rq->cmd, cmdptr, hdr->request_len);
37026 +
37027 if (hdr->subprotocol == BSG_SUB_PROTOCOL_SCSI_CMD) {
37028 if (blk_verify_command(rq->cmd, has_write_perm))
37029 return -EPERM;
37030 diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
37031 index f678c73..f35aa18 100644
37032 --- a/block/compat_ioctl.c
37033 +++ b/block/compat_ioctl.c
37034 @@ -156,7 +156,7 @@ static int compat_cdrom_generic_command(struct block_device *bdev, fmode_t mode,
37035 cgc = compat_alloc_user_space(sizeof(*cgc));
37036 cgc32 = compat_ptr(arg);
37037
37038 - if (copy_in_user(&cgc->cmd, &cgc32->cmd, sizeof(cgc->cmd)) ||
37039 + if (copy_in_user(cgc->cmd, cgc32->cmd, sizeof(cgc->cmd)) ||
37040 get_user(data, &cgc32->buffer) ||
37041 put_user(compat_ptr(data), &cgc->buffer) ||
37042 copy_in_user(&cgc->buflen, &cgc32->buflen,
37043 @@ -341,7 +341,7 @@ static int compat_fd_ioctl(struct block_device *bdev, fmode_t mode,
37044 err |= __get_user(f->spec1, &uf->spec1);
37045 err |= __get_user(f->fmt_gap, &uf->fmt_gap);
37046 err |= __get_user(name, &uf->name);
37047 - f->name = compat_ptr(name);
37048 + f->name = (void __force_kernel *)compat_ptr(name);
37049 if (err) {
37050 err = -EFAULT;
37051 goto out;
37052 diff --git a/block/genhd.c b/block/genhd.c
37053 index 59a1395..54ff187 100644
37054 --- a/block/genhd.c
37055 +++ b/block/genhd.c
37056 @@ -470,21 +470,24 @@ static char *bdevt_str(dev_t devt, char *buf)
37057
37058 /*
37059 * Register device numbers dev..(dev+range-1)
37060 - * range must be nonzero
37061 + * Noop if @range is zero.
37062 * The hash chain is sorted on range, so that subranges can override.
37063 */
37064 void blk_register_region(dev_t devt, unsigned long range, struct module *module,
37065 struct kobject *(*probe)(dev_t, int *, void *),
37066 int (*lock)(dev_t, void *), void *data)
37067 {
37068 - kobj_map(bdev_map, devt, range, module, probe, lock, data);
37069 + if (range)
37070 + kobj_map(bdev_map, devt, range, module, probe, lock, data);
37071 }
37072
37073 EXPORT_SYMBOL(blk_register_region);
37074
37075 +/* undo blk_register_region(), noop if @range is zero */
37076 void blk_unregister_region(dev_t devt, unsigned long range)
37077 {
37078 - kobj_unmap(bdev_map, devt, range);
37079 + if (range)
37080 + kobj_unmap(bdev_map, devt, range);
37081 }
37082
37083 EXPORT_SYMBOL(blk_unregister_region);
37084 diff --git a/block/partitions/efi.c b/block/partitions/efi.c
37085 index 26cb624..a49c3a5 100644
37086 --- a/block/partitions/efi.c
37087 +++ b/block/partitions/efi.c
37088 @@ -293,14 +293,14 @@ static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state,
37089 if (!gpt)
37090 return NULL;
37091
37092 + if (!le32_to_cpu(gpt->num_partition_entries))
37093 + return NULL;
37094 + pte = kcalloc(le32_to_cpu(gpt->num_partition_entries), le32_to_cpu(gpt->sizeof_partition_entry), GFP_KERNEL);
37095 + if (!pte)
37096 + return NULL;
37097 +
37098 count = le32_to_cpu(gpt->num_partition_entries) *
37099 le32_to_cpu(gpt->sizeof_partition_entry);
37100 - if (!count)
37101 - return NULL;
37102 - pte = kmalloc(count, GFP_KERNEL);
37103 - if (!pte)
37104 - return NULL;
37105 -
37106 if (read_lba(state, le64_to_cpu(gpt->partition_entry_lba),
37107 (u8 *) pte, count) < count) {
37108 kfree(pte);
37109 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
37110 index dda653c..028a13ee 100644
37111 --- a/block/scsi_ioctl.c
37112 +++ b/block/scsi_ioctl.c
37113 @@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p)
37114 return put_user(0, p);
37115 }
37116
37117 -static int sg_get_timeout(struct request_queue *q)
37118 +static int __intentional_overflow(-1) sg_get_timeout(struct request_queue *q)
37119 {
37120 return jiffies_to_clock_t(q->sg_timeout);
37121 }
37122 @@ -227,8 +227,20 @@ EXPORT_SYMBOL(blk_verify_command);
37123 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
37124 struct sg_io_hdr *hdr, fmode_t mode)
37125 {
37126 - if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len))
37127 + unsigned char tmpcmd[sizeof(rq->__cmd)];
37128 + unsigned char *cmdptr;
37129 +
37130 + if (rq->cmd != rq->__cmd)
37131 + cmdptr = rq->cmd;
37132 + else
37133 + cmdptr = tmpcmd;
37134 +
37135 + if (copy_from_user(cmdptr, hdr->cmdp, hdr->cmd_len))
37136 return -EFAULT;
37137 +
37138 + if (cmdptr != rq->cmd)
37139 + memcpy(rq->cmd, cmdptr, hdr->cmd_len);
37140 +
37141 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
37142 return -EPERM;
37143
37144 @@ -420,6 +432,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
37145 int err;
37146 unsigned int in_len, out_len, bytes, opcode, cmdlen;
37147 char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
37148 + unsigned char tmpcmd[sizeof(rq->__cmd)];
37149 + unsigned char *cmdptr;
37150
37151 if (!sic)
37152 return -EINVAL;
37153 @@ -458,9 +472,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
37154 */
37155 err = -EFAULT;
37156 rq->cmd_len = cmdlen;
37157 - if (copy_from_user(rq->cmd, sic->data, cmdlen))
37158 +
37159 + if (rq->cmd != rq->__cmd)
37160 + cmdptr = rq->cmd;
37161 + else
37162 + cmdptr = tmpcmd;
37163 +
37164 + if (copy_from_user(cmdptr, sic->data, cmdlen))
37165 goto error;
37166
37167 + if (rq->cmd != cmdptr)
37168 + memcpy(rq->cmd, cmdptr, cmdlen);
37169 +
37170 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
37171 goto error;
37172
37173 diff --git a/crypto/cryptd.c b/crypto/cryptd.c
37174 index 22ba81f..1acac67 100644
37175 --- a/crypto/cryptd.c
37176 +++ b/crypto/cryptd.c
37177 @@ -63,7 +63,7 @@ struct cryptd_blkcipher_ctx {
37178
37179 struct cryptd_blkcipher_request_ctx {
37180 crypto_completion_t complete;
37181 -};
37182 +} __no_const;
37183
37184 struct cryptd_hash_ctx {
37185 struct crypto_shash *child;
37186 @@ -80,7 +80,7 @@ struct cryptd_aead_ctx {
37187
37188 struct cryptd_aead_request_ctx {
37189 crypto_completion_t complete;
37190 -};
37191 +} __no_const;
37192
37193 static void cryptd_queue_worker(struct work_struct *work);
37194
37195 diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
37196 index 45e7d51..2967121 100644
37197 --- a/crypto/pcrypt.c
37198 +++ b/crypto/pcrypt.c
37199 @@ -385,7 +385,7 @@ static int pcrypt_sysfs_add(struct padata_instance *pinst, const char *name)
37200 int ret;
37201
37202 pinst->kobj.kset = pcrypt_kset;
37203 - ret = kobject_add(&pinst->kobj, NULL, name);
37204 + ret = kobject_add(&pinst->kobj, NULL, "%s", name);
37205 if (!ret)
37206 kobject_uevent(&pinst->kobj, KOBJ_ADD);
37207
37208 diff --git a/crypto/scatterwalk.c b/crypto/scatterwalk.c
37209 index ea5815c..5880da6 100644
37210 --- a/crypto/scatterwalk.c
37211 +++ b/crypto/scatterwalk.c
37212 @@ -109,14 +109,20 @@ void scatterwalk_map_and_copy(void *buf, struct scatterlist *sg,
37213 {
37214 struct scatter_walk walk;
37215 struct scatterlist tmp[2];
37216 + void *realbuf = buf;
37217
37218 if (!nbytes)
37219 return;
37220
37221 sg = scatterwalk_ffwd(tmp, sg, start);
37222
37223 - if (sg_page(sg) == virt_to_page(buf) &&
37224 - sg->offset == offset_in_page(buf))
37225 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
37226 + if (object_starts_on_stack(buf))
37227 + realbuf = buf - current->stack + current->lowmem_stack;
37228 +#endif
37229 +
37230 + if (sg_page(sg) == virt_to_page(realbuf) &&
37231 + sg->offset == offset_in_page(realbuf))
37232 return;
37233
37234 scatterwalk_start(&walk, sg);
37235 diff --git a/crypto/zlib.c b/crypto/zlib.c
37236 index d51a30a..fb1f8af 100644
37237 --- a/crypto/zlib.c
37238 +++ b/crypto/zlib.c
37239 @@ -95,10 +95,10 @@ static int zlib_compress_setup(struct crypto_pcomp *tfm, const void *params,
37240 zlib_comp_exit(ctx);
37241
37242 window_bits = tb[ZLIB_COMP_WINDOWBITS]
37243 - ? nla_get_u32(tb[ZLIB_COMP_WINDOWBITS])
37244 + ? nla_get_s32(tb[ZLIB_COMP_WINDOWBITS])
37245 : MAX_WBITS;
37246 mem_level = tb[ZLIB_COMP_MEMLEVEL]
37247 - ? nla_get_u32(tb[ZLIB_COMP_MEMLEVEL])
37248 + ? nla_get_s32(tb[ZLIB_COMP_MEMLEVEL])
37249 : DEF_MEM_LEVEL;
37250
37251 workspacesize = zlib_deflate_workspacesize(window_bits, mem_level);
37252 diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
37253 index 8c2fe2f..fc47c12 100644
37254 --- a/drivers/acpi/acpi_video.c
37255 +++ b/drivers/acpi/acpi_video.c
37256 @@ -398,7 +398,7 @@ static int video_disable_backlight_sysfs_if(
37257 return 0;
37258 }
37259
37260 -static struct dmi_system_id video_dmi_table[] = {
37261 +static const struct dmi_system_id video_dmi_table[] = {
37262 /*
37263 * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121
37264 */
37265 diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
37266 index 52dfd0d..8386baf 100644
37267 --- a/drivers/acpi/acpica/hwxfsleep.c
37268 +++ b/drivers/acpi/acpica/hwxfsleep.c
37269 @@ -70,11 +70,12 @@ static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id);
37270 /* Legacy functions are optional, based upon ACPI_REDUCED_HARDWARE */
37271
37272 static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
37273 - {ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_sleep),
37274 - acpi_hw_extended_sleep},
37275 - {ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake_prep),
37276 - acpi_hw_extended_wake_prep},
37277 - {ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake), acpi_hw_extended_wake}
37278 + {.legacy_function = ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_sleep),
37279 + .extended_function = acpi_hw_extended_sleep},
37280 + {.legacy_function = ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake_prep),
37281 + .extended_function = acpi_hw_extended_wake_prep},
37282 + {.legacy_function = ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake),
37283 + .extended_function = acpi_hw_extended_wake}
37284 };
37285
37286 /*
37287 diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-internal.h
37288 index 16129c7..8b675cd 100644
37289 --- a/drivers/acpi/apei/apei-internal.h
37290 +++ b/drivers/acpi/apei/apei-internal.h
37291 @@ -19,7 +19,7 @@ typedef int (*apei_exec_ins_func_t)(struct apei_exec_context *ctx,
37292 struct apei_exec_ins_type {
37293 u32 flags;
37294 apei_exec_ins_func_t run;
37295 -};
37296 +} __do_const;
37297
37298 struct apei_exec_context {
37299 u32 ip;
37300 diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
37301 index 2bfd53c..391e9a4 100644
37302 --- a/drivers/acpi/apei/ghes.c
37303 +++ b/drivers/acpi/apei/ghes.c
37304 @@ -478,7 +478,7 @@ static void __ghes_print_estatus(const char *pfx,
37305 const struct acpi_hest_generic *generic,
37306 const struct acpi_hest_generic_status *estatus)
37307 {
37308 - static atomic_t seqno;
37309 + static atomic_unchecked_t seqno;
37310 unsigned int curr_seqno;
37311 char pfx_seq[64];
37312
37313 @@ -489,7 +489,7 @@ static void __ghes_print_estatus(const char *pfx,
37314 else
37315 pfx = KERN_ERR;
37316 }
37317 - curr_seqno = atomic_inc_return(&seqno);
37318 + curr_seqno = atomic_inc_return_unchecked(&seqno);
37319 snprintf(pfx_seq, sizeof(pfx_seq), "%s{%u}" HW_ERR, pfx, curr_seqno);
37320 printk("%s""Hardware error from APEI Generic Hardware Error Source: %d\n",
37321 pfx_seq, generic->header.source_id);
37322 diff --git a/drivers/acpi/bgrt.c b/drivers/acpi/bgrt.c
37323 index a83e3c6..c3d617f 100644
37324 --- a/drivers/acpi/bgrt.c
37325 +++ b/drivers/acpi/bgrt.c
37326 @@ -86,8 +86,10 @@ static int __init bgrt_init(void)
37327 if (!bgrt_image)
37328 return -ENODEV;
37329
37330 - bin_attr_image.private = bgrt_image;
37331 - bin_attr_image.size = bgrt_image_size;
37332 + pax_open_kernel();
37333 + *(void **)&bin_attr_image.private = bgrt_image;
37334 + *(size_t *)&bin_attr_image.size = bgrt_image_size;
37335 + pax_close_kernel();
37336
37337 bgrt_kobj = kobject_create_and_add("bgrt", acpi_kobj);
37338 if (!bgrt_kobj)
37339 diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
37340 index 278dc4b..976433d 100644
37341 --- a/drivers/acpi/blacklist.c
37342 +++ b/drivers/acpi/blacklist.c
37343 @@ -51,7 +51,7 @@ struct acpi_blacklist_item {
37344 u32 is_critical_error;
37345 };
37346
37347 -static struct dmi_system_id acpi_osi_dmi_table[] __initdata;
37348 +static const struct dmi_system_id acpi_osi_dmi_table[] __initconst;
37349
37350 /*
37351 * POLICY: If *anything* doesn't work, put it on the blacklist.
37352 @@ -172,7 +172,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d)
37353 }
37354 #endif
37355
37356 -static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
37357 +static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = {
37358 {
37359 .callback = dmi_disable_osi_vista,
37360 .ident = "Fujitsu Siemens",
37361 diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
37362 index 513e7230e..802015a 100644
37363 --- a/drivers/acpi/bus.c
37364 +++ b/drivers/acpi/bus.c
37365 @@ -67,7 +67,7 @@ static int set_copy_dsdt(const struct dmi_system_id *id)
37366 }
37367 #endif
37368
37369 -static struct dmi_system_id dsdt_dmi_table[] __initdata = {
37370 +static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
37371 /*
37372 * Invoke DSDT corruption work-around on all Toshiba Satellite.
37373 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
37374 @@ -83,7 +83,7 @@ static struct dmi_system_id dsdt_dmi_table[] __initdata = {
37375 {}
37376 };
37377 #else
37378 -static struct dmi_system_id dsdt_dmi_table[] __initdata = {
37379 +static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
37380 {}
37381 };
37382 #endif
37383 diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c
37384 index c68e724..e863008 100644
37385 --- a/drivers/acpi/custom_method.c
37386 +++ b/drivers/acpi/custom_method.c
37387 @@ -29,6 +29,10 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,
37388 struct acpi_table_header table;
37389 acpi_status status;
37390
37391 +#ifdef CONFIG_GRKERNSEC_KMEM
37392 + return -EPERM;
37393 +#endif
37394 +
37395 if (!(*ppos)) {
37396 /* parse the table header to get the table length */
37397 if (count <= sizeof(struct acpi_table_header))
37398 diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
37399 index 88dbbb1..90714c0 100644
37400 --- a/drivers/acpi/device_pm.c
37401 +++ b/drivers/acpi/device_pm.c
37402 @@ -1045,6 +1045,8 @@ EXPORT_SYMBOL_GPL(acpi_subsys_freeze);
37403
37404 #endif /* CONFIG_PM_SLEEP */
37405
37406 +static void acpi_dev_pm_detach(struct device *dev, bool power_off);
37407 +
37408 static struct dev_pm_domain acpi_general_pm_domain = {
37409 .ops = {
37410 .runtime_suspend = acpi_subsys_runtime_suspend,
37411 @@ -1061,6 +1063,7 @@ static struct dev_pm_domain acpi_general_pm_domain = {
37412 .restore_early = acpi_subsys_resume_early,
37413 #endif
37414 },
37415 + .detach = acpi_dev_pm_detach
37416 };
37417
37418 /**
37419 @@ -1130,7 +1133,6 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
37420 acpi_device_wakeup(adev, ACPI_STATE_S0, false);
37421 }
37422
37423 - dev->pm_domain->detach = acpi_dev_pm_detach;
37424 return 0;
37425 }
37426 EXPORT_SYMBOL_GPL(acpi_dev_pm_attach);
37427 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
37428 index 9d4761d..ece2163 100644
37429 --- a/drivers/acpi/ec.c
37430 +++ b/drivers/acpi/ec.c
37431 @@ -1434,7 +1434,7 @@ static int ec_clear_on_resume(const struct dmi_system_id *id)
37432 return 0;
37433 }
37434
37435 -static struct dmi_system_id ec_dmi_table[] __initdata = {
37436 +static const struct dmi_system_id ec_dmi_table[] __initconst = {
37437 {
37438 ec_skip_dsdt_scan, "Compal JFL92", {
37439 DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
37440 diff --git a/drivers/acpi/pci_slot.c b/drivers/acpi/pci_slot.c
37441 index 139d9e4..9a9d799 100644
37442 --- a/drivers/acpi/pci_slot.c
37443 +++ b/drivers/acpi/pci_slot.c
37444 @@ -195,7 +195,7 @@ static int do_sta_before_sun(const struct dmi_system_id *d)
37445 return 0;
37446 }
37447
37448 -static struct dmi_system_id acpi_pci_slot_dmi_table[] __initdata = {
37449 +static const struct dmi_system_id acpi_pci_slot_dmi_table[] __initconst = {
37450 /*
37451 * Fujitsu Primequest machines will return 1023 to indicate an
37452 * error if the _SUN method is evaluated on SxFy objects that
37453 diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
37454 index d9f7158..168e742 100644
37455 --- a/drivers/acpi/processor_driver.c
37456 +++ b/drivers/acpi/processor_driver.c
37457 @@ -159,7 +159,7 @@ static int acpi_cpu_soft_notify(struct notifier_block *nfb,
37458 return NOTIFY_OK;
37459 }
37460
37461 -static struct notifier_block __refdata acpi_cpu_notifier = {
37462 +static struct notifier_block __refconst acpi_cpu_notifier = {
37463 .notifier_call = acpi_cpu_soft_notify,
37464 };
37465
37466 diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
37467 index d540f42..d5b32ac 100644
37468 --- a/drivers/acpi/processor_idle.c
37469 +++ b/drivers/acpi/processor_idle.c
37470 @@ -910,7 +910,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
37471 {
37472 int i, count = CPUIDLE_DRIVER_STATE_START;
37473 struct acpi_processor_cx *cx;
37474 - struct cpuidle_state *state;
37475 + cpuidle_state_no_const *state;
37476 struct cpuidle_driver *drv = &acpi_idle_driver;
37477
37478 if (!pr->flags.power_setup_done)
37479 diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
37480 index 7cfbda4..74f738c 100644
37481 --- a/drivers/acpi/processor_pdc.c
37482 +++ b/drivers/acpi/processor_pdc.c
37483 @@ -173,7 +173,7 @@ static int __init set_no_mwait(const struct dmi_system_id *id)
37484 return 0;
37485 }
37486
37487 -static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
37488 +static const struct dmi_system_id processor_idle_dmi_table[] __initconst = {
37489 {
37490 set_no_mwait, "Extensa 5220", {
37491 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
37492 diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
37493 index 2f0d4db..b9e9b15 100644
37494 --- a/drivers/acpi/sleep.c
37495 +++ b/drivers/acpi/sleep.c
37496 @@ -148,7 +148,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d)
37497 return 0;
37498 }
37499
37500 -static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
37501 +static const struct dmi_system_id acpisleep_dmi_table[] __initconst = {
37502 {
37503 .callback = init_old_suspend_ordering,
37504 .ident = "Abit KN9 (nForce4 variant)",
37505 diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
37506 index 0876d77b..3ba0127 100644
37507 --- a/drivers/acpi/sysfs.c
37508 +++ b/drivers/acpi/sysfs.c
37509 @@ -423,11 +423,11 @@ static u32 num_counters;
37510 static struct attribute **all_attrs;
37511 static u32 acpi_gpe_count;
37512
37513 -static struct attribute_group interrupt_stats_attr_group = {
37514 +static attribute_group_no_const interrupt_stats_attr_group = {
37515 .name = "interrupts",
37516 };
37517
37518 -static struct kobj_attribute *counter_attrs;
37519 +static kobj_attribute_no_const *counter_attrs;
37520
37521 static void delete_gpe_attr_array(void)
37522 {
37523 diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
37524 index 6d4e44e..44fb839 100644
37525 --- a/drivers/acpi/thermal.c
37526 +++ b/drivers/acpi/thermal.c
37527 @@ -1212,7 +1212,7 @@ static int thermal_psv(const struct dmi_system_id *d) {
37528 return 0;
37529 }
37530
37531 -static struct dmi_system_id thermal_dmi_table[] __initdata = {
37532 +static const struct dmi_system_id thermal_dmi_table[] __initconst = {
37533 /*
37534 * Award BIOS on this AOpen makes thermal control almost worthless.
37535 * http://bugzilla.kernel.org/show_bug.cgi?id=8842
37536 diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
37537 index 2922f1f..26b0c03 100644
37538 --- a/drivers/acpi/video_detect.c
37539 +++ b/drivers/acpi/video_detect.c
37540 @@ -41,7 +41,6 @@ ACPI_MODULE_NAME("video");
37541 void acpi_video_unregister_backlight(void);
37542
37543 static bool backlight_notifier_registered;
37544 -static struct notifier_block backlight_nb;
37545 static struct work_struct backlight_notify_work;
37546
37547 static enum acpi_backlight_type acpi_backlight_cmdline = acpi_backlight_undef;
37548 @@ -284,6 +283,10 @@ static int acpi_video_backlight_notify(struct notifier_block *nb,
37549 return NOTIFY_OK;
37550 }
37551
37552 +static const struct notifier_block backlight_nb = {
37553 + .notifier_call = acpi_video_backlight_notify,
37554 +};
37555 +
37556 /*
37557 * Determine which type of backlight interface to use on this system,
37558 * First check cmdline, then dmi quirks, then do autodetect.
37559 @@ -314,8 +317,6 @@ enum acpi_backlight_type acpi_video_get_backlight_type(void)
37560 &video_caps, NULL);
37561 INIT_WORK(&backlight_notify_work,
37562 acpi_video_backlight_notify_work);
37563 - backlight_nb.notifier_call = acpi_video_backlight_notify;
37564 - backlight_nb.priority = 0;
37565 if (backlight_register_notifier(&backlight_nb) == 0)
37566 backlight_notifier_registered = true;
37567 init_done = true;
37568 diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
37569 index d256a66..4040556 100644
37570 --- a/drivers/ata/libahci.c
37571 +++ b/drivers/ata/libahci.c
37572 @@ -1252,7 +1252,7 @@ int ahci_kick_engine(struct ata_port *ap)
37573 }
37574 EXPORT_SYMBOL_GPL(ahci_kick_engine);
37575
37576 -static int ahci_exec_polled_cmd(struct ata_port *ap, int pmp,
37577 +static int __intentional_overflow(-1) ahci_exec_polled_cmd(struct ata_port *ap, int pmp,
37578 struct ata_taskfile *tf, int is_cmd, u16 flags,
37579 unsigned long timeout_msec)
37580 {
37581 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
37582 index 790e0de..6bae378 100644
37583 --- a/drivers/ata/libata-core.c
37584 +++ b/drivers/ata/libata-core.c
37585 @@ -102,7 +102,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
37586 static void ata_dev_xfermask(struct ata_device *dev);
37587 static unsigned long ata_dev_blacklisted(const struct ata_device *dev);
37588
37589 -atomic_t ata_print_id = ATOMIC_INIT(0);
37590 +atomic_unchecked_t ata_print_id = ATOMIC_INIT(0);
37591
37592 struct ata_force_param {
37593 const char *name;
37594 @@ -4800,7 +4800,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
37595 struct ata_port *ap;
37596 unsigned int tag;
37597
37598 - WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
37599 + BUG_ON(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
37600 ap = qc->ap;
37601
37602 qc->flags = 0;
37603 @@ -4817,7 +4817,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
37604 struct ata_port *ap;
37605 struct ata_link *link;
37606
37607 - WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
37608 + BUG_ON(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
37609 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
37610 ap = qc->ap;
37611 link = qc->dev->link;
37612 @@ -5924,6 +5924,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
37613 return;
37614
37615 spin_lock(&lock);
37616 + pax_open_kernel();
37617
37618 for (cur = ops->inherits; cur; cur = cur->inherits) {
37619 void **inherit = (void **)cur;
37620 @@ -5937,8 +5938,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
37621 if (IS_ERR(*pp))
37622 *pp = NULL;
37623
37624 - ops->inherits = NULL;
37625 + *(struct ata_port_operations **)&ops->inherits = NULL;
37626
37627 + pax_close_kernel();
37628 spin_unlock(&lock);
37629 }
37630
37631 @@ -6134,7 +6136,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
37632
37633 /* give ports names and add SCSI hosts */
37634 for (i = 0; i < host->n_ports; i++) {
37635 - host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
37636 + host->ports[i]->print_id = atomic_inc_return_unchecked(&ata_print_id);
37637 host->ports[i]->local_port_no = i + 1;
37638 }
37639
37640 diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
37641 index 0d7f0da..bc20aa6 100644
37642 --- a/drivers/ata/libata-scsi.c
37643 +++ b/drivers/ata/libata-scsi.c
37644 @@ -4193,7 +4193,7 @@ int ata_sas_port_init(struct ata_port *ap)
37645
37646 if (rc)
37647 return rc;
37648 - ap->print_id = atomic_inc_return(&ata_print_id);
37649 + ap->print_id = atomic_inc_return_unchecked(&ata_print_id);
37650 return 0;
37651 }
37652 EXPORT_SYMBOL_GPL(ata_sas_port_init);
37653 diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
37654 index f840ca1..edd6ef3 100644
37655 --- a/drivers/ata/libata.h
37656 +++ b/drivers/ata/libata.h
37657 @@ -53,7 +53,7 @@ enum {
37658 ATA_DNXFER_QUIET = (1 << 31),
37659 };
37660
37661 -extern atomic_t ata_print_id;
37662 +extern atomic_unchecked_t ata_print_id;
37663 extern int atapi_passthru16;
37664 extern int libata_fua;
37665 extern int libata_noacpi;
37666 diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
37667 index 5d9ee99..8fa2585 100644
37668 --- a/drivers/ata/pata_arasan_cf.c
37669 +++ b/drivers/ata/pata_arasan_cf.c
37670 @@ -865,7 +865,9 @@ static int arasan_cf_probe(struct platform_device *pdev)
37671 /* Handle platform specific quirks */
37672 if (quirk) {
37673 if (quirk & CF_BROKEN_PIO) {
37674 - ap->ops->set_piomode = NULL;
37675 + pax_open_kernel();
37676 + *(void **)&ap->ops->set_piomode = NULL;
37677 + pax_close_kernel();
37678 ap->pio_mask = 0;
37679 }
37680 if (quirk & CF_BROKEN_MWDMA)
37681 diff --git a/drivers/atm/adummy.c b/drivers/atm/adummy.c
37682 index f9b983a..887b9d8 100644
37683 --- a/drivers/atm/adummy.c
37684 +++ b/drivers/atm/adummy.c
37685 @@ -114,7 +114,7 @@ adummy_send(struct atm_vcc *vcc, struct sk_buff *skb)
37686 vcc->pop(vcc, skb);
37687 else
37688 dev_kfree_skb_any(skb);
37689 - atomic_inc(&vcc->stats->tx);
37690 + atomic_inc_unchecked(&vcc->stats->tx);
37691
37692 return 0;
37693 }
37694 diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c
37695 index f1a9198..f466a4a 100644
37696 --- a/drivers/atm/ambassador.c
37697 +++ b/drivers/atm/ambassador.c
37698 @@ -454,7 +454,7 @@ static void tx_complete (amb_dev * dev, tx_out * tx) {
37699 PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
37700
37701 // VC layer stats
37702 - atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
37703 + atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
37704
37705 // free the descriptor
37706 kfree (tx_descr);
37707 @@ -495,7 +495,7 @@ static void rx_complete (amb_dev * dev, rx_out * rx) {
37708 dump_skb ("<<<", vc, skb);
37709
37710 // VC layer stats
37711 - atomic_inc(&atm_vcc->stats->rx);
37712 + atomic_inc_unchecked(&atm_vcc->stats->rx);
37713 __net_timestamp(skb);
37714 // end of our responsibility
37715 atm_vcc->push (atm_vcc, skb);
37716 @@ -510,7 +510,7 @@ static void rx_complete (amb_dev * dev, rx_out * rx) {
37717 } else {
37718 PRINTK (KERN_INFO, "dropped over-size frame");
37719 // should we count this?
37720 - atomic_inc(&atm_vcc->stats->rx_drop);
37721 + atomic_inc_unchecked(&atm_vcc->stats->rx_drop);
37722 }
37723
37724 } else {
37725 @@ -1338,7 +1338,7 @@ static int amb_send (struct atm_vcc * atm_vcc, struct sk_buff * skb) {
37726 }
37727
37728 if (check_area (skb->data, skb->len)) {
37729 - atomic_inc(&atm_vcc->stats->tx_err);
37730 + atomic_inc_unchecked(&atm_vcc->stats->tx_err);
37731 return -ENOMEM; // ?
37732 }
37733
37734 diff --git a/drivers/atm/atmtcp.c b/drivers/atm/atmtcp.c
37735 index 480fa6f..947067c 100644
37736 --- a/drivers/atm/atmtcp.c
37737 +++ b/drivers/atm/atmtcp.c
37738 @@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
37739 if (vcc->pop) vcc->pop(vcc,skb);
37740 else dev_kfree_skb(skb);
37741 if (dev_data) return 0;
37742 - atomic_inc(&vcc->stats->tx_err);
37743 + atomic_inc_unchecked(&vcc->stats->tx_err);
37744 return -ENOLINK;
37745 }
37746 size = skb->len+sizeof(struct atmtcp_hdr);
37747 @@ -214,7 +214,7 @@ static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
37748 if (!new_skb) {
37749 if (vcc->pop) vcc->pop(vcc,skb);
37750 else dev_kfree_skb(skb);
37751 - atomic_inc(&vcc->stats->tx_err);
37752 + atomic_inc_unchecked(&vcc->stats->tx_err);
37753 return -ENOBUFS;
37754 }
37755 hdr = (void *) skb_put(new_skb,sizeof(struct atmtcp_hdr));
37756 @@ -225,8 +225,8 @@ static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
37757 if (vcc->pop) vcc->pop(vcc,skb);
37758 else dev_kfree_skb(skb);
37759 out_vcc->push(out_vcc,new_skb);
37760 - atomic_inc(&vcc->stats->tx);
37761 - atomic_inc(&out_vcc->stats->rx);
37762 + atomic_inc_unchecked(&vcc->stats->tx);
37763 + atomic_inc_unchecked(&out_vcc->stats->rx);
37764 return 0;
37765 }
37766
37767 @@ -300,7 +300,7 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
37768 read_unlock(&vcc_sklist_lock);
37769 if (!out_vcc) {
37770 result = -EUNATCH;
37771 - atomic_inc(&vcc->stats->tx_err);
37772 + atomic_inc_unchecked(&vcc->stats->tx_err);
37773 goto done;
37774 }
37775 skb_pull(skb,sizeof(struct atmtcp_hdr));
37776 @@ -312,8 +312,8 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
37777 __net_timestamp(new_skb);
37778 skb_copy_from_linear_data(skb, skb_put(new_skb, skb->len), skb->len);
37779 out_vcc->push(out_vcc,new_skb);
37780 - atomic_inc(&vcc->stats->tx);
37781 - atomic_inc(&out_vcc->stats->rx);
37782 + atomic_inc_unchecked(&vcc->stats->tx);
37783 + atomic_inc_unchecked(&out_vcc->stats->rx);
37784 done:
37785 if (vcc->pop) vcc->pop(vcc,skb);
37786 else dev_kfree_skb(skb);
37787 diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
37788 index 6339efd..2b441d5 100644
37789 --- a/drivers/atm/eni.c
37790 +++ b/drivers/atm/eni.c
37791 @@ -525,7 +525,7 @@ static int rx_aal0(struct atm_vcc *vcc)
37792 DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
37793 vcc->dev->number);
37794 length = 0;
37795 - atomic_inc(&vcc->stats->rx_err);
37796 + atomic_inc_unchecked(&vcc->stats->rx_err);
37797 }
37798 else {
37799 length = ATM_CELL_SIZE-1; /* no HEC */
37800 @@ -580,7 +580,7 @@ static int rx_aal5(struct atm_vcc *vcc)
37801 size);
37802 }
37803 eff = length = 0;
37804 - atomic_inc(&vcc->stats->rx_err);
37805 + atomic_inc_unchecked(&vcc->stats->rx_err);
37806 }
37807 else {
37808 size = (descr & MID_RED_COUNT)*(ATM_CELL_PAYLOAD >> 2);
37809 @@ -597,7 +597,7 @@ static int rx_aal5(struct atm_vcc *vcc)
37810 "(VCI=%d,length=%ld,size=%ld (descr 0x%lx))\n",
37811 vcc->dev->number,vcc->vci,length,size << 2,descr);
37812 length = eff = 0;
37813 - atomic_inc(&vcc->stats->rx_err);
37814 + atomic_inc_unchecked(&vcc->stats->rx_err);
37815 }
37816 }
37817 skb = eff ? atm_alloc_charge(vcc,eff << 2,GFP_ATOMIC) : NULL;
37818 @@ -770,7 +770,7 @@ rx_dequeued++;
37819 vcc->push(vcc,skb);
37820 pushed++;
37821 }
37822 - atomic_inc(&vcc->stats->rx);
37823 + atomic_inc_unchecked(&vcc->stats->rx);
37824 }
37825 wake_up(&eni_dev->rx_wait);
37826 }
37827 @@ -1230,7 +1230,7 @@ static void dequeue_tx(struct atm_dev *dev)
37828 DMA_TO_DEVICE);
37829 if (vcc->pop) vcc->pop(vcc,skb);
37830 else dev_kfree_skb_irq(skb);
37831 - atomic_inc(&vcc->stats->tx);
37832 + atomic_inc_unchecked(&vcc->stats->tx);
37833 wake_up(&eni_dev->tx_wait);
37834 dma_complete++;
37835 }
37836 diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
37837 index 82f2ae0..f205c02 100644
37838 --- a/drivers/atm/firestream.c
37839 +++ b/drivers/atm/firestream.c
37840 @@ -749,7 +749,7 @@ static void process_txdone_queue (struct fs_dev *dev, struct queue *q)
37841 }
37842 }
37843
37844 - atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
37845 + atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
37846
37847 fs_dprintk (FS_DEBUG_TXMEM, "i");
37848 fs_dprintk (FS_DEBUG_ALLOC, "Free t-skb: %p\n", skb);
37849 @@ -816,7 +816,7 @@ static void process_incoming (struct fs_dev *dev, struct queue *q)
37850 #endif
37851 skb_put (skb, qe->p1 & 0xffff);
37852 ATM_SKB(skb)->vcc = atm_vcc;
37853 - atomic_inc(&atm_vcc->stats->rx);
37854 + atomic_inc_unchecked(&atm_vcc->stats->rx);
37855 __net_timestamp(skb);
37856 fs_dprintk (FS_DEBUG_ALLOC, "Free rec-skb: %p (pushed)\n", skb);
37857 atm_vcc->push (atm_vcc, skb);
37858 @@ -837,12 +837,12 @@ static void process_incoming (struct fs_dev *dev, struct queue *q)
37859 kfree (pe);
37860 }
37861 if (atm_vcc)
37862 - atomic_inc(&atm_vcc->stats->rx_drop);
37863 + atomic_inc_unchecked(&atm_vcc->stats->rx_drop);
37864 break;
37865 case 0x1f: /* Reassembly abort: no buffers. */
37866 /* Silently increment error counter. */
37867 if (atm_vcc)
37868 - atomic_inc(&atm_vcc->stats->rx_drop);
37869 + atomic_inc_unchecked(&atm_vcc->stats->rx_drop);
37870 break;
37871 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
37872 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
37873 diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
37874 index 75dde90..4309ead 100644
37875 --- a/drivers/atm/fore200e.c
37876 +++ b/drivers/atm/fore200e.c
37877 @@ -932,9 +932,9 @@ fore200e_tx_irq(struct fore200e* fore200e)
37878 #endif
37879 /* check error condition */
37880 if (*entry->status & STATUS_ERROR)
37881 - atomic_inc(&vcc->stats->tx_err);
37882 + atomic_inc_unchecked(&vcc->stats->tx_err);
37883 else
37884 - atomic_inc(&vcc->stats->tx);
37885 + atomic_inc_unchecked(&vcc->stats->tx);
37886 }
37887 }
37888
37889 @@ -1083,7 +1083,7 @@ fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rp
37890 if (skb == NULL) {
37891 DPRINTK(2, "unable to alloc new skb, rx PDU length = %d\n", pdu_len);
37892
37893 - atomic_inc(&vcc->stats->rx_drop);
37894 + atomic_inc_unchecked(&vcc->stats->rx_drop);
37895 return -ENOMEM;
37896 }
37897
37898 @@ -1126,14 +1126,14 @@ fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rp
37899
37900 dev_kfree_skb_any(skb);
37901
37902 - atomic_inc(&vcc->stats->rx_drop);
37903 + atomic_inc_unchecked(&vcc->stats->rx_drop);
37904 return -ENOMEM;
37905 }
37906
37907 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
37908
37909 vcc->push(vcc, skb);
37910 - atomic_inc(&vcc->stats->rx);
37911 + atomic_inc_unchecked(&vcc->stats->rx);
37912
37913 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
37914
37915 @@ -1211,7 +1211,7 @@ fore200e_rx_irq(struct fore200e* fore200e)
37916 DPRINTK(2, "damaged PDU on %d.%d.%d\n",
37917 fore200e->atm_dev->number,
37918 entry->rpd->atm_header.vpi, entry->rpd->atm_header.vci);
37919 - atomic_inc(&vcc->stats->rx_err);
37920 + atomic_inc_unchecked(&vcc->stats->rx_err);
37921 }
37922 }
37923
37924 @@ -1656,7 +1656,7 @@ fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)
37925 goto retry_here;
37926 }
37927
37928 - atomic_inc(&vcc->stats->tx_err);
37929 + atomic_inc_unchecked(&vcc->stats->tx_err);
37930
37931 fore200e->tx_sat++;
37932 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
37933 diff --git a/drivers/atm/he.c b/drivers/atm/he.c
37934 index a8da3a5..67cf6c2 100644
37935 --- a/drivers/atm/he.c
37936 +++ b/drivers/atm/he.c
37937 @@ -1692,7 +1692,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
37938
37939 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
37940 hprintk("HBUF_ERR! (cid 0x%x)\n", cid);
37941 - atomic_inc(&vcc->stats->rx_drop);
37942 + atomic_inc_unchecked(&vcc->stats->rx_drop);
37943 goto return_host_buffers;
37944 }
37945
37946 @@ -1719,7 +1719,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
37947 RBRQ_LEN_ERR(he_dev->rbrq_head)
37948 ? "LEN_ERR" : "",
37949 vcc->vpi, vcc->vci);
37950 - atomic_inc(&vcc->stats->rx_err);
37951 + atomic_inc_unchecked(&vcc->stats->rx_err);
37952 goto return_host_buffers;
37953 }
37954
37955 @@ -1771,7 +1771,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
37956 vcc->push(vcc, skb);
37957 spin_lock(&he_dev->global_lock);
37958
37959 - atomic_inc(&vcc->stats->rx);
37960 + atomic_inc_unchecked(&vcc->stats->rx);
37961
37962 return_host_buffers:
37963 ++pdus_assembled;
37964 @@ -2097,7 +2097,7 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid)
37965 tpd->vcc->pop(tpd->vcc, tpd->skb);
37966 else
37967 dev_kfree_skb_any(tpd->skb);
37968 - atomic_inc(&tpd->vcc->stats->tx_err);
37969 + atomic_inc_unchecked(&tpd->vcc->stats->tx_err);
37970 }
37971 dma_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status));
37972 return;
37973 @@ -2509,7 +2509,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
37974 vcc->pop(vcc, skb);
37975 else
37976 dev_kfree_skb_any(skb);
37977 - atomic_inc(&vcc->stats->tx_err);
37978 + atomic_inc_unchecked(&vcc->stats->tx_err);
37979 return -EINVAL;
37980 }
37981
37982 @@ -2520,7 +2520,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
37983 vcc->pop(vcc, skb);
37984 else
37985 dev_kfree_skb_any(skb);
37986 - atomic_inc(&vcc->stats->tx_err);
37987 + atomic_inc_unchecked(&vcc->stats->tx_err);
37988 return -EINVAL;
37989 }
37990 #endif
37991 @@ -2532,7 +2532,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
37992 vcc->pop(vcc, skb);
37993 else
37994 dev_kfree_skb_any(skb);
37995 - atomic_inc(&vcc->stats->tx_err);
37996 + atomic_inc_unchecked(&vcc->stats->tx_err);
37997 spin_unlock_irqrestore(&he_dev->global_lock, flags);
37998 return -ENOMEM;
37999 }
38000 @@ -2574,7 +2574,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
38001 vcc->pop(vcc, skb);
38002 else
38003 dev_kfree_skb_any(skb);
38004 - atomic_inc(&vcc->stats->tx_err);
38005 + atomic_inc_unchecked(&vcc->stats->tx_err);
38006 spin_unlock_irqrestore(&he_dev->global_lock, flags);
38007 return -ENOMEM;
38008 }
38009 @@ -2605,7 +2605,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
38010 __enqueue_tpd(he_dev, tpd, cid);
38011 spin_unlock_irqrestore(&he_dev->global_lock, flags);
38012
38013 - atomic_inc(&vcc->stats->tx);
38014 + atomic_inc_unchecked(&vcc->stats->tx);
38015
38016 return 0;
38017 }
38018 diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
38019 index 527bbd5..96570c8 100644
38020 --- a/drivers/atm/horizon.c
38021 +++ b/drivers/atm/horizon.c
38022 @@ -1018,7 +1018,7 @@ static void rx_schedule (hrz_dev * dev, int irq) {
38023 {
38024 struct atm_vcc * vcc = ATM_SKB(skb)->vcc;
38025 // VC layer stats
38026 - atomic_inc(&vcc->stats->rx);
38027 + atomic_inc_unchecked(&vcc->stats->rx);
38028 __net_timestamp(skb);
38029 // end of our responsibility
38030 vcc->push (vcc, skb);
38031 @@ -1170,7 +1170,7 @@ static void tx_schedule (hrz_dev * const dev, int irq) {
38032 dev->tx_iovec = NULL;
38033
38034 // VC layer stats
38035 - atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
38036 + atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
38037
38038 // free the skb
38039 hrz_kfree_skb (skb);
38040 diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
38041 index 074616b..d6b3d5f 100644
38042 --- a/drivers/atm/idt77252.c
38043 +++ b/drivers/atm/idt77252.c
38044 @@ -811,7 +811,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
38045 else
38046 dev_kfree_skb(skb);
38047
38048 - atomic_inc(&vcc->stats->tx);
38049 + atomic_inc_unchecked(&vcc->stats->tx);
38050 }
38051
38052 atomic_dec(&scq->used);
38053 @@ -1073,13 +1073,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38054 if ((sb = dev_alloc_skb(64)) == NULL) {
38055 printk("%s: Can't allocate buffers for aal0.\n",
38056 card->name);
38057 - atomic_add(i, &vcc->stats->rx_drop);
38058 + atomic_add_unchecked(i, &vcc->stats->rx_drop);
38059 break;
38060 }
38061 if (!atm_charge(vcc, sb->truesize)) {
38062 RXPRINTK("%s: atm_charge() dropped aal0 packets.\n",
38063 card->name);
38064 - atomic_add(i - 1, &vcc->stats->rx_drop);
38065 + atomic_add_unchecked(i - 1, &vcc->stats->rx_drop);
38066 dev_kfree_skb(sb);
38067 break;
38068 }
38069 @@ -1096,7 +1096,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38070 ATM_SKB(sb)->vcc = vcc;
38071 __net_timestamp(sb);
38072 vcc->push(vcc, sb);
38073 - atomic_inc(&vcc->stats->rx);
38074 + atomic_inc_unchecked(&vcc->stats->rx);
38075
38076 cell += ATM_CELL_PAYLOAD;
38077 }
38078 @@ -1133,13 +1133,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38079 "(CDC: %08x)\n",
38080 card->name, len, rpp->len, readl(SAR_REG_CDC));
38081 recycle_rx_pool_skb(card, rpp);
38082 - atomic_inc(&vcc->stats->rx_err);
38083 + atomic_inc_unchecked(&vcc->stats->rx_err);
38084 return;
38085 }
38086 if (stat & SAR_RSQE_CRC) {
38087 RXPRINTK("%s: AAL5 CRC error.\n", card->name);
38088 recycle_rx_pool_skb(card, rpp);
38089 - atomic_inc(&vcc->stats->rx_err);
38090 + atomic_inc_unchecked(&vcc->stats->rx_err);
38091 return;
38092 }
38093 if (skb_queue_len(&rpp->queue) > 1) {
38094 @@ -1150,7 +1150,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38095 RXPRINTK("%s: Can't alloc RX skb.\n",
38096 card->name);
38097 recycle_rx_pool_skb(card, rpp);
38098 - atomic_inc(&vcc->stats->rx_err);
38099 + atomic_inc_unchecked(&vcc->stats->rx_err);
38100 return;
38101 }
38102 if (!atm_charge(vcc, skb->truesize)) {
38103 @@ -1169,7 +1169,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38104 __net_timestamp(skb);
38105
38106 vcc->push(vcc, skb);
38107 - atomic_inc(&vcc->stats->rx);
38108 + atomic_inc_unchecked(&vcc->stats->rx);
38109
38110 return;
38111 }
38112 @@ -1191,7 +1191,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
38113 __net_timestamp(skb);
38114
38115 vcc->push(vcc, skb);
38116 - atomic_inc(&vcc->stats->rx);
38117 + atomic_inc_unchecked(&vcc->stats->rx);
38118
38119 if (skb->truesize > SAR_FB_SIZE_3)
38120 add_rx_skb(card, 3, SAR_FB_SIZE_3, 1);
38121 @@ -1302,14 +1302,14 @@ idt77252_rx_raw(struct idt77252_dev *card)
38122 if (vcc->qos.aal != ATM_AAL0) {
38123 RPRINTK("%s: raw cell for non AAL0 vc %u.%u\n",
38124 card->name, vpi, vci);
38125 - atomic_inc(&vcc->stats->rx_drop);
38126 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38127 goto drop;
38128 }
38129
38130 if ((sb = dev_alloc_skb(64)) == NULL) {
38131 printk("%s: Can't allocate buffers for AAL0.\n",
38132 card->name);
38133 - atomic_inc(&vcc->stats->rx_err);
38134 + atomic_inc_unchecked(&vcc->stats->rx_err);
38135 goto drop;
38136 }
38137
38138 @@ -1328,7 +1328,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
38139 ATM_SKB(sb)->vcc = vcc;
38140 __net_timestamp(sb);
38141 vcc->push(vcc, sb);
38142 - atomic_inc(&vcc->stats->rx);
38143 + atomic_inc_unchecked(&vcc->stats->rx);
38144
38145 drop:
38146 skb_pull(queue, 64);
38147 @@ -1953,13 +1953,13 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
38148
38149 if (vc == NULL) {
38150 printk("%s: NULL connection in send().\n", card->name);
38151 - atomic_inc(&vcc->stats->tx_err);
38152 + atomic_inc_unchecked(&vcc->stats->tx_err);
38153 dev_kfree_skb(skb);
38154 return -EINVAL;
38155 }
38156 if (!test_bit(VCF_TX, &vc->flags)) {
38157 printk("%s: Trying to transmit on a non-tx VC.\n", card->name);
38158 - atomic_inc(&vcc->stats->tx_err);
38159 + atomic_inc_unchecked(&vcc->stats->tx_err);
38160 dev_kfree_skb(skb);
38161 return -EINVAL;
38162 }
38163 @@ -1971,14 +1971,14 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
38164 break;
38165 default:
38166 printk("%s: Unsupported AAL: %d\n", card->name, vcc->qos.aal);
38167 - atomic_inc(&vcc->stats->tx_err);
38168 + atomic_inc_unchecked(&vcc->stats->tx_err);
38169 dev_kfree_skb(skb);
38170 return -EINVAL;
38171 }
38172
38173 if (skb_shinfo(skb)->nr_frags != 0) {
38174 printk("%s: No scatter-gather yet.\n", card->name);
38175 - atomic_inc(&vcc->stats->tx_err);
38176 + atomic_inc_unchecked(&vcc->stats->tx_err);
38177 dev_kfree_skb(skb);
38178 return -EINVAL;
38179 }
38180 @@ -1986,7 +1986,7 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
38181
38182 err = queue_skb(card, vc, skb, oam);
38183 if (err) {
38184 - atomic_inc(&vcc->stats->tx_err);
38185 + atomic_inc_unchecked(&vcc->stats->tx_err);
38186 dev_kfree_skb(skb);
38187 return err;
38188 }
38189 @@ -2009,7 +2009,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags)
38190 skb = dev_alloc_skb(64);
38191 if (!skb) {
38192 printk("%s: Out of memory in send_oam().\n", card->name);
38193 - atomic_inc(&vcc->stats->tx_err);
38194 + atomic_inc_unchecked(&vcc->stats->tx_err);
38195 return -ENOMEM;
38196 }
38197 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
38198 diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
38199 index 65e6590..df77d04 100644
38200 --- a/drivers/atm/iphase.c
38201 +++ b/drivers/atm/iphase.c
38202 @@ -1145,7 +1145,7 @@ static int rx_pkt(struct atm_dev *dev)
38203 status = (u_short) (buf_desc_ptr->desc_mode);
38204 if (status & (RX_CER | RX_PTE | RX_OFL))
38205 {
38206 - atomic_inc(&vcc->stats->rx_err);
38207 + atomic_inc_unchecked(&vcc->stats->rx_err);
38208 IF_ERR(printk("IA: bad packet, dropping it");)
38209 if (status & RX_CER) {
38210 IF_ERR(printk(" cause: packet CRC error\n");)
38211 @@ -1168,7 +1168,7 @@ static int rx_pkt(struct atm_dev *dev)
38212 len = dma_addr - buf_addr;
38213 if (len > iadev->rx_buf_sz) {
38214 printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
38215 - atomic_inc(&vcc->stats->rx_err);
38216 + atomic_inc_unchecked(&vcc->stats->rx_err);
38217 goto out_free_desc;
38218 }
38219
38220 @@ -1318,7 +1318,7 @@ static void rx_dle_intr(struct atm_dev *dev)
38221 ia_vcc = INPH_IA_VCC(vcc);
38222 if (ia_vcc == NULL)
38223 {
38224 - atomic_inc(&vcc->stats->rx_err);
38225 + atomic_inc_unchecked(&vcc->stats->rx_err);
38226 atm_return(vcc, skb->truesize);
38227 dev_kfree_skb_any(skb);
38228 goto INCR_DLE;
38229 @@ -1330,7 +1330,7 @@ static void rx_dle_intr(struct atm_dev *dev)
38230 if ((length > iadev->rx_buf_sz) || (length >
38231 (skb->len - sizeof(struct cpcs_trailer))))
38232 {
38233 - atomic_inc(&vcc->stats->rx_err);
38234 + atomic_inc_unchecked(&vcc->stats->rx_err);
38235 IF_ERR(printk("rx_dle_intr: Bad AAL5 trailer %d (skb len %d)",
38236 length, skb->len);)
38237 atm_return(vcc, skb->truesize);
38238 @@ -1346,7 +1346,7 @@ static void rx_dle_intr(struct atm_dev *dev)
38239
38240 IF_RX(printk("rx_dle_intr: skb push");)
38241 vcc->push(vcc,skb);
38242 - atomic_inc(&vcc->stats->rx);
38243 + atomic_inc_unchecked(&vcc->stats->rx);
38244 iadev->rx_pkt_cnt++;
38245 }
38246 INCR_DLE:
38247 @@ -2828,15 +2828,15 @@ static int ia_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg)
38248 {
38249 struct k_sonet_stats *stats;
38250 stats = &PRIV(_ia_dev[board])->sonet_stats;
38251 - printk("section_bip: %d\n", atomic_read(&stats->section_bip));
38252 - printk("line_bip : %d\n", atomic_read(&stats->line_bip));
38253 - printk("path_bip : %d\n", atomic_read(&stats->path_bip));
38254 - printk("line_febe : %d\n", atomic_read(&stats->line_febe));
38255 - printk("path_febe : %d\n", atomic_read(&stats->path_febe));
38256 - printk("corr_hcs : %d\n", atomic_read(&stats->corr_hcs));
38257 - printk("uncorr_hcs : %d\n", atomic_read(&stats->uncorr_hcs));
38258 - printk("tx_cells : %d\n", atomic_read(&stats->tx_cells));
38259 - printk("rx_cells : %d\n", atomic_read(&stats->rx_cells));
38260 + printk("section_bip: %d\n", atomic_read_unchecked(&stats->section_bip));
38261 + printk("line_bip : %d\n", atomic_read_unchecked(&stats->line_bip));
38262 + printk("path_bip : %d\n", atomic_read_unchecked(&stats->path_bip));
38263 + printk("line_febe : %d\n", atomic_read_unchecked(&stats->line_febe));
38264 + printk("path_febe : %d\n", atomic_read_unchecked(&stats->path_febe));
38265 + printk("corr_hcs : %d\n", atomic_read_unchecked(&stats->corr_hcs));
38266 + printk("uncorr_hcs : %d\n", atomic_read_unchecked(&stats->uncorr_hcs));
38267 + printk("tx_cells : %d\n", atomic_read_unchecked(&stats->tx_cells));
38268 + printk("rx_cells : %d\n", atomic_read_unchecked(&stats->rx_cells));
38269 }
38270 ia_cmds.status = 0;
38271 break;
38272 @@ -2941,7 +2941,7 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
38273 if ((desc == 0) || (desc > iadev->num_tx_desc))
38274 {
38275 IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);)
38276 - atomic_inc(&vcc->stats->tx);
38277 + atomic_inc_unchecked(&vcc->stats->tx);
38278 if (vcc->pop)
38279 vcc->pop(vcc, skb);
38280 else
38281 @@ -3046,14 +3046,14 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
38282 ATM_DESC(skb) = vcc->vci;
38283 skb_queue_tail(&iadev->tx_dma_q, skb);
38284
38285 - atomic_inc(&vcc->stats->tx);
38286 + atomic_inc_unchecked(&vcc->stats->tx);
38287 iadev->tx_pkt_cnt++;
38288 /* Increment transaction counter */
38289 writel(2, iadev->dma+IPHASE5575_TX_COUNTER);
38290
38291 #if 0
38292 /* add flow control logic */
38293 - if (atomic_read(&vcc->stats->tx) % 20 == 0) {
38294 + if (atomic_read_unchecked(&vcc->stats->tx) % 20 == 0) {
38295 if (iavcc->vc_desc_cnt > 10) {
38296 vcc->tx_quota = vcc->tx_quota * 3 / 4;
38297 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
38298 diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
38299 index ce43ae3..969de38 100644
38300 --- a/drivers/atm/lanai.c
38301 +++ b/drivers/atm/lanai.c
38302 @@ -1295,7 +1295,7 @@ static void lanai_send_one_aal5(struct lanai_dev *lanai,
38303 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0);
38304 lanai_endtx(lanai, lvcc);
38305 lanai_free_skb(lvcc->tx.atmvcc, skb);
38306 - atomic_inc(&lvcc->tx.atmvcc->stats->tx);
38307 + atomic_inc_unchecked(&lvcc->tx.atmvcc->stats->tx);
38308 }
38309
38310 /* Try to fill the buffer - don't call unless there is backlog */
38311 @@ -1418,7 +1418,7 @@ static void vcc_rx_aal5(struct lanai_vcc *lvcc, int endptr)
38312 ATM_SKB(skb)->vcc = lvcc->rx.atmvcc;
38313 __net_timestamp(skb);
38314 lvcc->rx.atmvcc->push(lvcc->rx.atmvcc, skb);
38315 - atomic_inc(&lvcc->rx.atmvcc->stats->rx);
38316 + atomic_inc_unchecked(&lvcc->rx.atmvcc->stats->rx);
38317 out:
38318 lvcc->rx.buf.ptr = end;
38319 cardvcc_write(lvcc, endptr, vcc_rxreadptr);
38320 @@ -1659,7 +1659,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
38321 DPRINTK("(itf %d) got RX service entry 0x%X for non-AAL5 "
38322 "vcc %d\n", lanai->number, (unsigned int) s, vci);
38323 lanai->stats.service_rxnotaal5++;
38324 - atomic_inc(&lvcc->rx.atmvcc->stats->rx_err);
38325 + atomic_inc_unchecked(&lvcc->rx.atmvcc->stats->rx_err);
38326 return 0;
38327 }
38328 if (likely(!(s & (SERVICE_TRASH | SERVICE_STREAM | SERVICE_CRCERR)))) {
38329 @@ -1671,7 +1671,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
38330 int bytes;
38331 read_unlock(&vcc_sklist_lock);
38332 DPRINTK("got trashed rx pdu on vci %d\n", vci);
38333 - atomic_inc(&lvcc->rx.atmvcc->stats->rx_err);
38334 + atomic_inc_unchecked(&lvcc->rx.atmvcc->stats->rx_err);
38335 lvcc->stats.x.aal5.service_trash++;
38336 bytes = (SERVICE_GET_END(s) * 16) -
38337 (((unsigned long) lvcc->rx.buf.ptr) -
38338 @@ -1683,7 +1683,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
38339 }
38340 if (s & SERVICE_STREAM) {
38341 read_unlock(&vcc_sklist_lock);
38342 - atomic_inc(&lvcc->rx.atmvcc->stats->rx_err);
38343 + atomic_inc_unchecked(&lvcc->rx.atmvcc->stats->rx_err);
38344 lvcc->stats.x.aal5.service_stream++;
38345 printk(KERN_ERR DEV_LABEL "(itf %d): Got AAL5 stream "
38346 "PDU on VCI %d!\n", lanai->number, vci);
38347 @@ -1691,7 +1691,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
38348 return 0;
38349 }
38350 DPRINTK("got rx crc error on vci %d\n", vci);
38351 - atomic_inc(&lvcc->rx.atmvcc->stats->rx_err);
38352 + atomic_inc_unchecked(&lvcc->rx.atmvcc->stats->rx_err);
38353 lvcc->stats.x.aal5.service_rxcrc++;
38354 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
38355 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
38356 diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
38357 index ddc4ceb..36e29aa 100644
38358 --- a/drivers/atm/nicstar.c
38359 +++ b/drivers/atm/nicstar.c
38360 @@ -1632,7 +1632,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
38361 if ((vc = (vc_map *) vcc->dev_data) == NULL) {
38362 printk("nicstar%d: vcc->dev_data == NULL on ns_send().\n",
38363 card->index);
38364 - atomic_inc(&vcc->stats->tx_err);
38365 + atomic_inc_unchecked(&vcc->stats->tx_err);
38366 dev_kfree_skb_any(skb);
38367 return -EINVAL;
38368 }
38369 @@ -1640,7 +1640,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
38370 if (!vc->tx) {
38371 printk("nicstar%d: Trying to transmit on a non-tx VC.\n",
38372 card->index);
38373 - atomic_inc(&vcc->stats->tx_err);
38374 + atomic_inc_unchecked(&vcc->stats->tx_err);
38375 dev_kfree_skb_any(skb);
38376 return -EINVAL;
38377 }
38378 @@ -1648,14 +1648,14 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
38379 if (vcc->qos.aal != ATM_AAL5 && vcc->qos.aal != ATM_AAL0) {
38380 printk("nicstar%d: Only AAL0 and AAL5 are supported.\n",
38381 card->index);
38382 - atomic_inc(&vcc->stats->tx_err);
38383 + atomic_inc_unchecked(&vcc->stats->tx_err);
38384 dev_kfree_skb_any(skb);
38385 return -EINVAL;
38386 }
38387
38388 if (skb_shinfo(skb)->nr_frags != 0) {
38389 printk("nicstar%d: No scatter-gather yet.\n", card->index);
38390 - atomic_inc(&vcc->stats->tx_err);
38391 + atomic_inc_unchecked(&vcc->stats->tx_err);
38392 dev_kfree_skb_any(skb);
38393 return -EINVAL;
38394 }
38395 @@ -1703,11 +1703,11 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
38396 }
38397
38398 if (push_scqe(card, vc, scq, &scqe, skb) != 0) {
38399 - atomic_inc(&vcc->stats->tx_err);
38400 + atomic_inc_unchecked(&vcc->stats->tx_err);
38401 dev_kfree_skb_any(skb);
38402 return -EIO;
38403 }
38404 - atomic_inc(&vcc->stats->tx);
38405 + atomic_inc_unchecked(&vcc->stats->tx);
38406
38407 return 0;
38408 }
38409 @@ -2024,14 +2024,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38410 printk
38411 ("nicstar%d: Can't allocate buffers for aal0.\n",
38412 card->index);
38413 - atomic_add(i, &vcc->stats->rx_drop);
38414 + atomic_add_unchecked(i, &vcc->stats->rx_drop);
38415 break;
38416 }
38417 if (!atm_charge(vcc, sb->truesize)) {
38418 RXPRINTK
38419 ("nicstar%d: atm_charge() dropped aal0 packets.\n",
38420 card->index);
38421 - atomic_add(i - 1, &vcc->stats->rx_drop); /* already increased by 1 */
38422 + atomic_add_unchecked(i - 1, &vcc->stats->rx_drop); /* already increased by 1 */
38423 dev_kfree_skb_any(sb);
38424 break;
38425 }
38426 @@ -2046,7 +2046,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38427 ATM_SKB(sb)->vcc = vcc;
38428 __net_timestamp(sb);
38429 vcc->push(vcc, sb);
38430 - atomic_inc(&vcc->stats->rx);
38431 + atomic_inc_unchecked(&vcc->stats->rx);
38432 cell += ATM_CELL_PAYLOAD;
38433 }
38434
38435 @@ -2063,7 +2063,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38436 if (iovb == NULL) {
38437 printk("nicstar%d: Out of iovec buffers.\n",
38438 card->index);
38439 - atomic_inc(&vcc->stats->rx_drop);
38440 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38441 recycle_rx_buf(card, skb);
38442 return;
38443 }
38444 @@ -2087,7 +2087,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38445 small or large buffer itself. */
38446 } else if (NS_PRV_IOVCNT(iovb) >= NS_MAX_IOVECS) {
38447 printk("nicstar%d: received too big AAL5 SDU.\n", card->index);
38448 - atomic_inc(&vcc->stats->rx_err);
38449 + atomic_inc_unchecked(&vcc->stats->rx_err);
38450 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
38451 NS_MAX_IOVECS);
38452 NS_PRV_IOVCNT(iovb) = 0;
38453 @@ -2107,7 +2107,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38454 ("nicstar%d: Expected a small buffer, and this is not one.\n",
38455 card->index);
38456 which_list(card, skb);
38457 - atomic_inc(&vcc->stats->rx_err);
38458 + atomic_inc_unchecked(&vcc->stats->rx_err);
38459 recycle_rx_buf(card, skb);
38460 vc->rx_iov = NULL;
38461 recycle_iov_buf(card, iovb);
38462 @@ -2120,7 +2120,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38463 ("nicstar%d: Expected a large buffer, and this is not one.\n",
38464 card->index);
38465 which_list(card, skb);
38466 - atomic_inc(&vcc->stats->rx_err);
38467 + atomic_inc_unchecked(&vcc->stats->rx_err);
38468 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
38469 NS_PRV_IOVCNT(iovb));
38470 vc->rx_iov = NULL;
38471 @@ -2143,7 +2143,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38472 printk(" - PDU size mismatch.\n");
38473 else
38474 printk(".\n");
38475 - atomic_inc(&vcc->stats->rx_err);
38476 + atomic_inc_unchecked(&vcc->stats->rx_err);
38477 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
38478 NS_PRV_IOVCNT(iovb));
38479 vc->rx_iov = NULL;
38480 @@ -2157,14 +2157,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38481 /* skb points to a small buffer */
38482 if (!atm_charge(vcc, skb->truesize)) {
38483 push_rxbufs(card, skb);
38484 - atomic_inc(&vcc->stats->rx_drop);
38485 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38486 } else {
38487 skb_put(skb, len);
38488 dequeue_sm_buf(card, skb);
38489 ATM_SKB(skb)->vcc = vcc;
38490 __net_timestamp(skb);
38491 vcc->push(vcc, skb);
38492 - atomic_inc(&vcc->stats->rx);
38493 + atomic_inc_unchecked(&vcc->stats->rx);
38494 }
38495 } else if (NS_PRV_IOVCNT(iovb) == 2) { /* One small plus one large buffer */
38496 struct sk_buff *sb;
38497 @@ -2175,14 +2175,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38498 if (len <= NS_SMBUFSIZE) {
38499 if (!atm_charge(vcc, sb->truesize)) {
38500 push_rxbufs(card, sb);
38501 - atomic_inc(&vcc->stats->rx_drop);
38502 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38503 } else {
38504 skb_put(sb, len);
38505 dequeue_sm_buf(card, sb);
38506 ATM_SKB(sb)->vcc = vcc;
38507 __net_timestamp(sb);
38508 vcc->push(vcc, sb);
38509 - atomic_inc(&vcc->stats->rx);
38510 + atomic_inc_unchecked(&vcc->stats->rx);
38511 }
38512
38513 push_rxbufs(card, skb);
38514 @@ -2191,7 +2191,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38515
38516 if (!atm_charge(vcc, skb->truesize)) {
38517 push_rxbufs(card, skb);
38518 - atomic_inc(&vcc->stats->rx_drop);
38519 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38520 } else {
38521 dequeue_lg_buf(card, skb);
38522 skb_push(skb, NS_SMBUFSIZE);
38523 @@ -2201,7 +2201,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38524 ATM_SKB(skb)->vcc = vcc;
38525 __net_timestamp(skb);
38526 vcc->push(vcc, skb);
38527 - atomic_inc(&vcc->stats->rx);
38528 + atomic_inc_unchecked(&vcc->stats->rx);
38529 }
38530
38531 push_rxbufs(card, sb);
38532 @@ -2222,7 +2222,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38533 printk
38534 ("nicstar%d: Out of huge buffers.\n",
38535 card->index);
38536 - atomic_inc(&vcc->stats->rx_drop);
38537 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38538 recycle_iovec_rx_bufs(card,
38539 (struct iovec *)
38540 iovb->data,
38541 @@ -2273,7 +2273,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38542 card->hbpool.count++;
38543 } else
38544 dev_kfree_skb_any(hb);
38545 - atomic_inc(&vcc->stats->rx_drop);
38546 + atomic_inc_unchecked(&vcc->stats->rx_drop);
38547 } else {
38548 /* Copy the small buffer to the huge buffer */
38549 sb = (struct sk_buff *)iov->iov_base;
38550 @@ -2307,7 +2307,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe)
38551 ATM_SKB(hb)->vcc = vcc;
38552 __net_timestamp(hb);
38553 vcc->push(vcc, hb);
38554 - atomic_inc(&vcc->stats->rx);
38555 + atomic_inc_unchecked(&vcc->stats->rx);
38556 }
38557 }
38558
38559 diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
38560 index 74e18b0..f16afa0 100644
38561 --- a/drivers/atm/solos-pci.c
38562 +++ b/drivers/atm/solos-pci.c
38563 @@ -838,7 +838,7 @@ static void solos_bh(unsigned long card_arg)
38564 }
38565 atm_charge(vcc, skb->truesize);
38566 vcc->push(vcc, skb);
38567 - atomic_inc(&vcc->stats->rx);
38568 + atomic_inc_unchecked(&vcc->stats->rx);
38569 break;
38570
38571 case PKT_STATUS:
38572 @@ -1116,7 +1116,7 @@ static uint32_t fpga_tx(struct solos_card *card)
38573 vcc = SKB_CB(oldskb)->vcc;
38574
38575 if (vcc) {
38576 - atomic_inc(&vcc->stats->tx);
38577 + atomic_inc_unchecked(&vcc->stats->tx);
38578 solos_pop(vcc, oldskb);
38579 } else {
38580 dev_kfree_skb_irq(oldskb);
38581 diff --git a/drivers/atm/suni.c b/drivers/atm/suni.c
38582 index 0215934..ce9f5b1 100644
38583 --- a/drivers/atm/suni.c
38584 +++ b/drivers/atm/suni.c
38585 @@ -49,8 +49,8 @@ static DEFINE_SPINLOCK(sunis_lock);
38586
38587
38588 #define ADD_LIMITED(s,v) \
38589 - atomic_add((v),&stats->s); \
38590 - if (atomic_read(&stats->s) < 0) atomic_set(&stats->s,INT_MAX);
38591 + atomic_add_unchecked((v),&stats->s); \
38592 + if (atomic_read_unchecked(&stats->s) < 0) atomic_set_unchecked(&stats->s,INT_MAX);
38593
38594
38595 static void suni_hz(unsigned long from_timer)
38596 diff --git a/drivers/atm/uPD98402.c b/drivers/atm/uPD98402.c
38597 index 5120a96..e2572bd 100644
38598 --- a/drivers/atm/uPD98402.c
38599 +++ b/drivers/atm/uPD98402.c
38600 @@ -42,7 +42,7 @@ static int fetch_stats(struct atm_dev *dev,struct sonet_stats __user *arg,int ze
38601 struct sonet_stats tmp;
38602 int error = 0;
38603
38604 - atomic_add(GET(HECCT),&PRIV(dev)->sonet_stats.uncorr_hcs);
38605 + atomic_add_unchecked(GET(HECCT),&PRIV(dev)->sonet_stats.uncorr_hcs);
38606 sonet_copy_stats(&PRIV(dev)->sonet_stats,&tmp);
38607 if (arg) error = copy_to_user(arg,&tmp,sizeof(tmp));
38608 if (zero && !error) {
38609 @@ -161,9 +161,9 @@ static int uPD98402_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
38610
38611
38612 #define ADD_LIMITED(s,v) \
38613 - { atomic_add(GET(v),&PRIV(dev)->sonet_stats.s); \
38614 - if (atomic_read(&PRIV(dev)->sonet_stats.s) < 0) \
38615 - atomic_set(&PRIV(dev)->sonet_stats.s,INT_MAX); }
38616 + { atomic_add_unchecked(GET(v),&PRIV(dev)->sonet_stats.s); \
38617 + if (atomic_read_unchecked(&PRIV(dev)->sonet_stats.s) < 0) \
38618 + atomic_set_unchecked(&PRIV(dev)->sonet_stats.s,INT_MAX); }
38619
38620
38621 static void stat_event(struct atm_dev *dev)
38622 @@ -194,7 +194,7 @@ static void uPD98402_int(struct atm_dev *dev)
38623 if (reason & uPD98402_INT_PFM) stat_event(dev);
38624 if (reason & uPD98402_INT_PCO) {
38625 (void) GET(PCOCR); /* clear interrupt cause */
38626 - atomic_add(GET(HECCT),
38627 + atomic_add_unchecked(GET(HECCT),
38628 &PRIV(dev)->sonet_stats.uncorr_hcs);
38629 }
38630 if ((reason & uPD98402_INT_RFO) &&
38631 @@ -222,9 +222,9 @@ static int uPD98402_start(struct atm_dev *dev)
38632 PUT(~(uPD98402_INT_PFM | uPD98402_INT_ALM | uPD98402_INT_RFO |
38633 uPD98402_INT_LOS),PIMR); /* enable them */
38634 (void) fetch_stats(dev,NULL,1); /* clear kernel counters */
38635 - atomic_set(&PRIV(dev)->sonet_stats.corr_hcs,-1);
38636 - atomic_set(&PRIV(dev)->sonet_stats.tx_cells,-1);
38637 - atomic_set(&PRIV(dev)->sonet_stats.rx_cells,-1);
38638 + atomic_set_unchecked(&PRIV(dev)->sonet_stats.corr_hcs,-1);
38639 + atomic_set_unchecked(&PRIV(dev)->sonet_stats.tx_cells,-1);
38640 + atomic_set_unchecked(&PRIV(dev)->sonet_stats.rx_cells,-1);
38641 return 0;
38642 }
38643
38644 diff --git a/drivers/atm/zatm.c b/drivers/atm/zatm.c
38645 index cecfb94..87009ec 100644
38646 --- a/drivers/atm/zatm.c
38647 +++ b/drivers/atm/zatm.c
38648 @@ -459,7 +459,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy[0],dummy[1]);
38649 }
38650 if (!size) {
38651 dev_kfree_skb_irq(skb);
38652 - if (vcc) atomic_inc(&vcc->stats->rx_err);
38653 + if (vcc) atomic_inc_unchecked(&vcc->stats->rx_err);
38654 continue;
38655 }
38656 if (!atm_charge(vcc,skb->truesize)) {
38657 @@ -469,7 +469,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy[0],dummy[1]);
38658 skb->len = size;
38659 ATM_SKB(skb)->vcc = vcc;
38660 vcc->push(vcc,skb);
38661 - atomic_inc(&vcc->stats->rx);
38662 + atomic_inc_unchecked(&vcc->stats->rx);
38663 }
38664 zout(pos & 0xffff,MTA(mbx));
38665 #if 0 /* probably a stupid idea */
38666 @@ -733,7 +733,7 @@ if (*ZATM_PRV_DSC(skb) != (uPD98401_TXPD_V | uPD98401_TXPD_DP |
38667 skb_queue_head(&zatm_vcc->backlog,skb);
38668 break;
38669 }
38670 - atomic_inc(&vcc->stats->tx);
38671 + atomic_inc_unchecked(&vcc->stats->tx);
38672 wake_up(&zatm_vcc->tx_wait);
38673 }
38674
38675 diff --git a/drivers/base/bus.c b/drivers/base/bus.c
38676 index 5005924..9fc06c4 100644
38677 --- a/drivers/base/bus.c
38678 +++ b/drivers/base/bus.c
38679 @@ -1141,7 +1141,7 @@ int subsys_interface_register(struct subsys_interface *sif)
38680 return -EINVAL;
38681
38682 mutex_lock(&subsys->p->mutex);
38683 - list_add_tail(&sif->node, &subsys->p->interfaces);
38684 + pax_list_add_tail((struct list_head *)&sif->node, &subsys->p->interfaces);
38685 if (sif->add_dev) {
38686 subsys_dev_iter_init(&iter, subsys, NULL, NULL);
38687 while ((dev = subsys_dev_iter_next(&iter)))
38688 @@ -1166,7 +1166,7 @@ void subsys_interface_unregister(struct subsys_interface *sif)
38689 subsys = sif->subsys;
38690
38691 mutex_lock(&subsys->p->mutex);
38692 - list_del_init(&sif->node);
38693 + pax_list_del_init((struct list_head *)&sif->node);
38694 if (sif->remove_dev) {
38695 subsys_dev_iter_init(&iter, subsys, NULL, NULL);
38696 while ((dev = subsys_dev_iter_next(&iter)))
38697 diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
38698 index 68f0314..ca2a609 100644
38699 --- a/drivers/base/devtmpfs.c
38700 +++ b/drivers/base/devtmpfs.c
38701 @@ -354,7 +354,7 @@ int devtmpfs_mount(const char *mntdir)
38702 if (!thread)
38703 return 0;
38704
38705 - err = sys_mount("devtmpfs", (char *)mntdir, "devtmpfs", MS_SILENT, NULL);
38706 + err = sys_mount((char __force_user *)"devtmpfs", (char __force_user *)mntdir, (char __force_user *)"devtmpfs", MS_SILENT, NULL);
38707 if (err)
38708 printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
38709 else
38710 @@ -380,11 +380,11 @@ static int devtmpfsd(void *p)
38711 *err = sys_unshare(CLONE_NEWNS);
38712 if (*err)
38713 goto out;
38714 - *err = sys_mount("devtmpfs", "/", "devtmpfs", MS_SILENT, options);
38715 + *err = sys_mount((char __force_user *)"devtmpfs", (char __force_user *)"/", (char __force_user *)"devtmpfs", MS_SILENT, (char __force_user *)options);
38716 if (*err)
38717 goto out;
38718 - sys_chdir("/.."); /* will traverse into overmounted root */
38719 - sys_chroot(".");
38720 + sys_chdir((char __force_user *)"/.."); /* will traverse into overmounted root */
38721 + sys_chroot((char __force_user *)".");
38722 complete(&setup_done);
38723 while (1) {
38724 spin_lock(&req_lock);
38725 diff --git a/drivers/base/node.c b/drivers/base/node.c
38726 index 560751b..3a4847a 100644
38727 --- a/drivers/base/node.c
38728 +++ b/drivers/base/node.c
38729 @@ -627,7 +627,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf)
38730 struct node_attr {
38731 struct device_attribute attr;
38732 enum node_states state;
38733 -};
38734 +} __do_const;
38735
38736 static ssize_t show_node_state(struct device *dev,
38737 struct device_attribute *attr, char *buf)
38738 diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
38739 index 0ee43c1..369dd62 100644
38740 --- a/drivers/base/power/domain.c
38741 +++ b/drivers/base/power/domain.c
38742 @@ -1738,7 +1738,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state)
38743 {
38744 struct cpuidle_driver *cpuidle_drv;
38745 struct gpd_cpuidle_data *cpuidle_data;
38746 - struct cpuidle_state *idle_state;
38747 + cpuidle_state_no_const *idle_state;
38748 int ret = 0;
38749
38750 if (IS_ERR_OR_NULL(genpd) || state < 0)
38751 @@ -1806,7 +1806,7 @@ int pm_genpd_name_attach_cpuidle(const char *name, int state)
38752 int pm_genpd_detach_cpuidle(struct generic_pm_domain *genpd)
38753 {
38754 struct gpd_cpuidle_data *cpuidle_data;
38755 - struct cpuidle_state *idle_state;
38756 + cpuidle_state_no_const *idle_state;
38757 int ret = 0;
38758
38759 if (IS_ERR_OR_NULL(genpd))
38760 @@ -2241,8 +2241,11 @@ int genpd_dev_pm_attach(struct device *dev)
38761 return ret;
38762 }
38763
38764 - dev->pm_domain->detach = genpd_dev_pm_detach;
38765 - dev->pm_domain->sync = genpd_dev_pm_sync;
38766 + pax_open_kernel();
38767 + *(void **)&dev->pm_domain->detach = genpd_dev_pm_detach;
38768 + *(void **)&dev->pm_domain->sync = genpd_dev_pm_sync;
38769 + pax_close_kernel();
38770 +
38771 pm_genpd_poweron(pd);
38772
38773 return 0;
38774 diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c
38775 index d2be3f9..0a3167a 100644
38776 --- a/drivers/base/power/sysfs.c
38777 +++ b/drivers/base/power/sysfs.c
38778 @@ -181,7 +181,7 @@ static ssize_t rtpm_status_show(struct device *dev,
38779 return -EIO;
38780 }
38781 }
38782 - return sprintf(buf, p);
38783 + return sprintf(buf, "%s", p);
38784 }
38785
38786 static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
38787 diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
38788 index 51f15bc..892a668 100644
38789 --- a/drivers/base/power/wakeup.c
38790 +++ b/drivers/base/power/wakeup.c
38791 @@ -33,14 +33,14 @@ static bool pm_abort_suspend __read_mostly;
38792 * They need to be modified together atomically, so it's better to use one
38793 * atomic variable to hold them both.
38794 */
38795 -static atomic_t combined_event_count = ATOMIC_INIT(0);
38796 +static atomic_unchecked_t combined_event_count = ATOMIC_INIT(0);
38797
38798 #define IN_PROGRESS_BITS (sizeof(int) * 4)
38799 #define MAX_IN_PROGRESS ((1 << IN_PROGRESS_BITS) - 1)
38800
38801 static void split_counters(unsigned int *cnt, unsigned int *inpr)
38802 {
38803 - unsigned int comb = atomic_read(&combined_event_count);
38804 + unsigned int comb = atomic_read_unchecked(&combined_event_count);
38805
38806 *cnt = (comb >> IN_PROGRESS_BITS);
38807 *inpr = comb & MAX_IN_PROGRESS;
38808 @@ -537,7 +537,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
38809 ws->start_prevent_time = ws->last_time;
38810
38811 /* Increment the counter of events in progress. */
38812 - cec = atomic_inc_return(&combined_event_count);
38813 + cec = atomic_inc_return_unchecked(&combined_event_count);
38814
38815 trace_wakeup_source_activate(ws->name, cec);
38816 }
38817 @@ -663,7 +663,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
38818 * Increment the counter of registered wakeup events and decrement the
38819 * couter of wakeup events in progress simultaneously.
38820 */
38821 - cec = atomic_add_return(MAX_IN_PROGRESS, &combined_event_count);
38822 + cec = atomic_add_return_unchecked(MAX_IN_PROGRESS, &combined_event_count);
38823 trace_wakeup_source_deactivate(ws->name, cec);
38824
38825 split_counters(&cnt, &inpr);
38826 diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
38827 index 5799a0b..f7c7a7e 100644
38828 --- a/drivers/base/regmap/regmap-debugfs.c
38829 +++ b/drivers/base/regmap/regmap-debugfs.c
38830 @@ -30,10 +30,9 @@ static LIST_HEAD(regmap_debugfs_early_list);
38831 static DEFINE_MUTEX(regmap_debugfs_early_lock);
38832
38833 /* Calculate the length of a fixed format */
38834 -static size_t regmap_calc_reg_len(int max_val, char *buf, size_t buf_size)
38835 +static size_t regmap_calc_reg_len(int max_val)
38836 {
38837 - snprintf(buf, buf_size, "%x", max_val);
38838 - return strlen(buf);
38839 + return snprintf(NULL, 0, "%x", max_val);
38840 }
38841
38842 static ssize_t regmap_name_read_file(struct file *file,
38843 @@ -174,8 +173,7 @@ static inline void regmap_calc_tot_len(struct regmap *map,
38844 {
38845 /* Calculate the length of a fixed format */
38846 if (!map->debugfs_tot_len) {
38847 - map->debugfs_reg_len = regmap_calc_reg_len(map->max_register,
38848 - buf, count);
38849 + map->debugfs_reg_len = regmap_calc_reg_len(map->max_register);
38850 map->debugfs_val_len = 2 * map->format.val_bytes;
38851 map->debugfs_tot_len = map->debugfs_reg_len +
38852 map->debugfs_val_len + 3; /* : \n */
38853 @@ -405,7 +403,7 @@ static ssize_t regmap_access_read_file(struct file *file,
38854 char __user *user_buf, size_t count,
38855 loff_t *ppos)
38856 {
38857 - int reg_len, tot_len;
38858 + size_t reg_len, tot_len;
38859 size_t buf_pos = 0;
38860 loff_t p = 0;
38861 ssize_t ret;
38862 @@ -421,7 +419,7 @@ static ssize_t regmap_access_read_file(struct file *file,
38863 return -ENOMEM;
38864
38865 /* Calculate the length of a fixed format */
38866 - reg_len = regmap_calc_reg_len(map->max_register, buf, count);
38867 + reg_len = regmap_calc_reg_len(map->max_register);
38868 tot_len = reg_len + 10; /* ': R W V P\n' */
38869
38870 for (i = 0; i <= map->max_register; i += map->reg_stride) {
38871 @@ -432,7 +430,7 @@ static ssize_t regmap_access_read_file(struct file *file,
38872 /* If we're in the region the user is trying to read */
38873 if (p >= *ppos) {
38874 /* ...but not beyond it */
38875 - if (buf_pos >= count - 1 - tot_len)
38876 + if (buf_pos + tot_len + 1 >= count)
38877 break;
38878
38879 /* Format the register */
38880 diff --git a/drivers/base/syscore.c b/drivers/base/syscore.c
38881 index 8d98a32..61d3165 100644
38882 --- a/drivers/base/syscore.c
38883 +++ b/drivers/base/syscore.c
38884 @@ -22,7 +22,7 @@ static DEFINE_MUTEX(syscore_ops_lock);
38885 void register_syscore_ops(struct syscore_ops *ops)
38886 {
38887 mutex_lock(&syscore_ops_lock);
38888 - list_add_tail(&ops->node, &syscore_ops_list);
38889 + pax_list_add_tail((struct list_head *)&ops->node, &syscore_ops_list);
38890 mutex_unlock(&syscore_ops_lock);
38891 }
38892 EXPORT_SYMBOL_GPL(register_syscore_ops);
38893 @@ -34,7 +34,7 @@ EXPORT_SYMBOL_GPL(register_syscore_ops);
38894 void unregister_syscore_ops(struct syscore_ops *ops)
38895 {
38896 mutex_lock(&syscore_ops_lock);
38897 - list_del(&ops->node);
38898 + pax_list_del((struct list_head *)&ops->node);
38899 mutex_unlock(&syscore_ops_lock);
38900 }
38901 EXPORT_SYMBOL_GPL(unregister_syscore_ops);
38902 diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
38903 index 0422c47..b222c7a 100644
38904 --- a/drivers/block/cciss.c
38905 +++ b/drivers/block/cciss.c
38906 @@ -3024,7 +3024,7 @@ static void start_io(ctlr_info_t *h)
38907 while (!list_empty(&h->reqQ)) {
38908 c = list_entry(h->reqQ.next, CommandList_struct, list);
38909 /* can't do anything if fifo is full */
38910 - if ((h->access.fifo_full(h))) {
38911 + if ((h->access->fifo_full(h))) {
38912 dev_warn(&h->pdev->dev, "fifo full\n");
38913 break;
38914 }
38915 @@ -3034,7 +3034,7 @@ static void start_io(ctlr_info_t *h)
38916 h->Qdepth--;
38917
38918 /* Tell the controller execute command */
38919 - h->access.submit_command(h, c);
38920 + h->access->submit_command(h, c);
38921
38922 /* Put job onto the completed Q */
38923 addQ(&h->cmpQ, c);
38924 @@ -3460,17 +3460,17 @@ startio:
38925
38926 static inline unsigned long get_next_completion(ctlr_info_t *h)
38927 {
38928 - return h->access.command_completed(h);
38929 + return h->access->command_completed(h);
38930 }
38931
38932 static inline int interrupt_pending(ctlr_info_t *h)
38933 {
38934 - return h->access.intr_pending(h);
38935 + return h->access->intr_pending(h);
38936 }
38937
38938 static inline long interrupt_not_for_us(ctlr_info_t *h)
38939 {
38940 - return ((h->access.intr_pending(h) == 0) ||
38941 + return ((h->access->intr_pending(h) == 0) ||
38942 (h->interrupts_enabled == 0));
38943 }
38944
38945 @@ -3503,7 +3503,7 @@ static inline u32 next_command(ctlr_info_t *h)
38946 u32 a;
38947
38948 if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
38949 - return h->access.command_completed(h);
38950 + return h->access->command_completed(h);
38951
38952 if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
38953 a = *(h->reply_pool_head); /* Next cmd in ring buffer */
38954 @@ -4060,7 +4060,7 @@ static void cciss_put_controller_into_performant_mode(ctlr_info_t *h)
38955 trans_support & CFGTBL_Trans_use_short_tags);
38956
38957 /* Change the access methods to the performant access methods */
38958 - h->access = SA5_performant_access;
38959 + h->access = &SA5_performant_access;
38960 h->transMethod = CFGTBL_Trans_Performant;
38961
38962 return;
38963 @@ -4334,7 +4334,7 @@ static int cciss_pci_init(ctlr_info_t *h)
38964 if (prod_index < 0)
38965 return -ENODEV;
38966 h->product_name = products[prod_index].product_name;
38967 - h->access = *(products[prod_index].access);
38968 + h->access = products[prod_index].access;
38969
38970 if (cciss_board_disabled(h)) {
38971 dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
38972 @@ -5065,7 +5065,7 @@ reinit_after_soft_reset:
38973 }
38974
38975 /* make sure the board interrupts are off */
38976 - h->access.set_intr_mask(h, CCISS_INTR_OFF);
38977 + h->access->set_intr_mask(h, CCISS_INTR_OFF);
38978 rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
38979 if (rc)
38980 goto clean2;
38981 @@ -5115,7 +5115,7 @@ reinit_after_soft_reset:
38982 * fake ones to scoop up any residual completions.
38983 */
38984 spin_lock_irqsave(&h->lock, flags);
38985 - h->access.set_intr_mask(h, CCISS_INTR_OFF);
38986 + h->access->set_intr_mask(h, CCISS_INTR_OFF);
38987 spin_unlock_irqrestore(&h->lock, flags);
38988 free_irq(h->intr[h->intr_mode], h);
38989 rc = cciss_request_irq(h, cciss_msix_discard_completions,
38990 @@ -5135,9 +5135,9 @@ reinit_after_soft_reset:
38991 dev_info(&h->pdev->dev, "Board READY.\n");
38992 dev_info(&h->pdev->dev,
38993 "Waiting for stale completions to drain.\n");
38994 - h->access.set_intr_mask(h, CCISS_INTR_ON);
38995 + h->access->set_intr_mask(h, CCISS_INTR_ON);
38996 msleep(10000);
38997 - h->access.set_intr_mask(h, CCISS_INTR_OFF);
38998 + h->access->set_intr_mask(h, CCISS_INTR_OFF);
38999
39000 rc = controller_reset_failed(h->cfgtable);
39001 if (rc)
39002 @@ -5160,7 +5160,7 @@ reinit_after_soft_reset:
39003 cciss_scsi_setup(h);
39004
39005 /* Turn the interrupts on so we can service requests */
39006 - h->access.set_intr_mask(h, CCISS_INTR_ON);
39007 + h->access->set_intr_mask(h, CCISS_INTR_ON);
39008
39009 /* Get the firmware version */
39010 inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
39011 @@ -5232,7 +5232,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
39012 kfree(flush_buf);
39013 if (return_code != IO_OK)
39014 dev_warn(&h->pdev->dev, "Error flushing cache\n");
39015 - h->access.set_intr_mask(h, CCISS_INTR_OFF);
39016 + h->access->set_intr_mask(h, CCISS_INTR_OFF);
39017 free_irq(h->intr[h->intr_mode], h);
39018 }
39019
39020 diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h
39021 index 7fda30e..2f27946 100644
39022 --- a/drivers/block/cciss.h
39023 +++ b/drivers/block/cciss.h
39024 @@ -101,7 +101,7 @@ struct ctlr_info
39025 /* information about each logical volume */
39026 drive_info_struct *drv[CISS_MAX_LUN];
39027
39028 - struct access_method access;
39029 + struct access_method *access;
39030
39031 /* queue and queue Info */
39032 struct list_head reqQ;
39033 @@ -402,27 +402,27 @@ static bool SA5_performant_intr_pending(ctlr_info_t *h)
39034 }
39035
39036 static struct access_method SA5_access = {
39037 - SA5_submit_command,
39038 - SA5_intr_mask,
39039 - SA5_fifo_full,
39040 - SA5_intr_pending,
39041 - SA5_completed,
39042 + .submit_command = SA5_submit_command,
39043 + .set_intr_mask = SA5_intr_mask,
39044 + .fifo_full = SA5_fifo_full,
39045 + .intr_pending = SA5_intr_pending,
39046 + .command_completed = SA5_completed,
39047 };
39048
39049 static struct access_method SA5B_access = {
39050 - SA5_submit_command,
39051 - SA5B_intr_mask,
39052 - SA5_fifo_full,
39053 - SA5B_intr_pending,
39054 - SA5_completed,
39055 + .submit_command = SA5_submit_command,
39056 + .set_intr_mask = SA5B_intr_mask,
39057 + .fifo_full = SA5_fifo_full,
39058 + .intr_pending = SA5B_intr_pending,
39059 + .command_completed = SA5_completed,
39060 };
39061
39062 static struct access_method SA5_performant_access = {
39063 - SA5_submit_command,
39064 - SA5_performant_intr_mask,
39065 - SA5_fifo_full,
39066 - SA5_performant_intr_pending,
39067 - SA5_performant_completed,
39068 + .submit_command = SA5_submit_command,
39069 + .set_intr_mask = SA5_performant_intr_mask,
39070 + .fifo_full = SA5_fifo_full,
39071 + .intr_pending = SA5_performant_intr_pending,
39072 + .command_completed = SA5_performant_completed,
39073 };
39074
39075 struct board_type {
39076 diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
39077 index f749df9..5f8b9c4 100644
39078 --- a/drivers/block/cpqarray.c
39079 +++ b/drivers/block/cpqarray.c
39080 @@ -404,7 +404,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev)
39081 if (register_blkdev(COMPAQ_SMART2_MAJOR+i, hba[i]->devname)) {
39082 goto Enomem4;
39083 }
39084 - hba[i]->access.set_intr_mask(hba[i], 0);
39085 + hba[i]->access->set_intr_mask(hba[i], 0);
39086 if (request_irq(hba[i]->intr, do_ida_intr, IRQF_SHARED,
39087 hba[i]->devname, hba[i]))
39088 {
39089 @@ -459,7 +459,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev)
39090 add_timer(&hba[i]->timer);
39091
39092 /* Enable IRQ now that spinlock and rate limit timer are set up */
39093 - hba[i]->access.set_intr_mask(hba[i], FIFO_NOT_EMPTY);
39094 + hba[i]->access->set_intr_mask(hba[i], FIFO_NOT_EMPTY);
39095
39096 for(j=0; j<NWD; j++) {
39097 struct gendisk *disk = ida_gendisk[i][j];
39098 @@ -694,7 +694,7 @@ DBGINFO(
39099 for(i=0; i<NR_PRODUCTS; i++) {
39100 if (board_id == products[i].board_id) {
39101 c->product_name = products[i].product_name;
39102 - c->access = *(products[i].access);
39103 + c->access = products[i].access;
39104 break;
39105 }
39106 }
39107 @@ -792,7 +792,7 @@ static int cpqarray_eisa_detect(void)
39108 hba[ctlr]->intr = intr;
39109 sprintf(hba[ctlr]->devname, "ida%d", nr_ctlr);
39110 hba[ctlr]->product_name = products[j].product_name;
39111 - hba[ctlr]->access = *(products[j].access);
39112 + hba[ctlr]->access = products[j].access;
39113 hba[ctlr]->ctlr = ctlr;
39114 hba[ctlr]->board_id = board_id;
39115 hba[ctlr]->pci_dev = NULL; /* not PCI */
39116 @@ -978,7 +978,7 @@ static void start_io(ctlr_info_t *h)
39117
39118 while((c = h->reqQ) != NULL) {
39119 /* Can't do anything if we're busy */
39120 - if (h->access.fifo_full(h) == 0)
39121 + if (h->access->fifo_full(h) == 0)
39122 return;
39123
39124 /* Get the first entry from the request Q */
39125 @@ -986,7 +986,7 @@ static void start_io(ctlr_info_t *h)
39126 h->Qdepth--;
39127
39128 /* Tell the controller to do our bidding */
39129 - h->access.submit_command(h, c);
39130 + h->access->submit_command(h, c);
39131
39132 /* Get onto the completion Q */
39133 addQ(&h->cmpQ, c);
39134 @@ -1048,7 +1048,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
39135 unsigned long flags;
39136 __u32 a,a1;
39137
39138 - istat = h->access.intr_pending(h);
39139 + istat = h->access->intr_pending(h);
39140 /* Is this interrupt for us? */
39141 if (istat == 0)
39142 return IRQ_NONE;
39143 @@ -1059,7 +1059,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
39144 */
39145 spin_lock_irqsave(IDA_LOCK(h->ctlr), flags);
39146 if (istat & FIFO_NOT_EMPTY) {
39147 - while((a = h->access.command_completed(h))) {
39148 + while((a = h->access->command_completed(h))) {
39149 a1 = a; a &= ~3;
39150 if ((c = h->cmpQ) == NULL)
39151 {
39152 @@ -1448,11 +1448,11 @@ static int sendcmd(
39153 /*
39154 * Disable interrupt
39155 */
39156 - info_p->access.set_intr_mask(info_p, 0);
39157 + info_p->access->set_intr_mask(info_p, 0);
39158 /* Make sure there is room in the command FIFO */
39159 /* Actually it should be completely empty at this time. */
39160 for (i = 200000; i > 0; i--) {
39161 - temp = info_p->access.fifo_full(info_p);
39162 + temp = info_p->access->fifo_full(info_p);
39163 if (temp != 0) {
39164 break;
39165 }
39166 @@ -1465,7 +1465,7 @@ DBG(
39167 /*
39168 * Send the cmd
39169 */
39170 - info_p->access.submit_command(info_p, c);
39171 + info_p->access->submit_command(info_p, c);
39172 complete = pollcomplete(ctlr);
39173
39174 pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr,
39175 @@ -1548,9 +1548,9 @@ static int revalidate_allvol(ctlr_info_t *host)
39176 * we check the new geometry. Then turn interrupts back on when
39177 * we're done.
39178 */
39179 - host->access.set_intr_mask(host, 0);
39180 + host->access->set_intr_mask(host, 0);
39181 getgeometry(ctlr);
39182 - host->access.set_intr_mask(host, FIFO_NOT_EMPTY);
39183 + host->access->set_intr_mask(host, FIFO_NOT_EMPTY);
39184
39185 for(i=0; i<NWD; i++) {
39186 struct gendisk *disk = ida_gendisk[ctlr][i];
39187 @@ -1590,7 +1590,7 @@ static int pollcomplete(int ctlr)
39188 /* Wait (up to 2 seconds) for a command to complete */
39189
39190 for (i = 200000; i > 0; i--) {
39191 - done = hba[ctlr]->access.command_completed(hba[ctlr]);
39192 + done = hba[ctlr]->access->command_completed(hba[ctlr]);
39193 if (done == 0) {
39194 udelay(10); /* a short fixed delay */
39195 } else
39196 diff --git a/drivers/block/cpqarray.h b/drivers/block/cpqarray.h
39197 index be73e9d..7fbf140 100644
39198 --- a/drivers/block/cpqarray.h
39199 +++ b/drivers/block/cpqarray.h
39200 @@ -99,7 +99,7 @@ struct ctlr_info {
39201 drv_info_t drv[NWD];
39202 struct proc_dir_entry *proc;
39203
39204 - struct access_method access;
39205 + struct access_method *access;
39206
39207 cmdlist_t *reqQ;
39208 cmdlist_t *cmpQ;
39209 diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c
39210 index 434c77d..6d3219a 100644
39211 --- a/drivers/block/drbd/drbd_bitmap.c
39212 +++ b/drivers/block/drbd/drbd_bitmap.c
39213 @@ -1036,7 +1036,7 @@ static void bm_page_io_async(struct drbd_bm_aio_ctx *ctx, int page_nr) __must_ho
39214 submit_bio(rw, bio);
39215 /* this should not count as user activity and cause the
39216 * resync to throttle -- see drbd_rs_should_slow_down(). */
39217 - atomic_add(len >> 9, &device->rs_sect_ev);
39218 + atomic_add_unchecked(len >> 9, &device->rs_sect_ev);
39219 }
39220 }
39221
39222 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
39223 index efd19c2..6ccfa94 100644
39224 --- a/drivers/block/drbd/drbd_int.h
39225 +++ b/drivers/block/drbd/drbd_int.h
39226 @@ -386,7 +386,7 @@ struct drbd_epoch {
39227 struct drbd_connection *connection;
39228 struct list_head list;
39229 unsigned int barrier_nr;
39230 - atomic_t epoch_size; /* increased on every request added. */
39231 + atomic_unchecked_t epoch_size; /* increased on every request added. */
39232 atomic_t active; /* increased on every req. added, and dec on every finished. */
39233 unsigned long flags;
39234 };
39235 @@ -947,7 +947,7 @@ struct drbd_device {
39236 unsigned int al_tr_number;
39237 int al_tr_cycle;
39238 wait_queue_head_t seq_wait;
39239 - atomic_t packet_seq;
39240 + atomic_unchecked_t packet_seq;
39241 unsigned int peer_seq;
39242 spinlock_t peer_seq_lock;
39243 unsigned long comm_bm_set; /* communicated number of set bits. */
39244 @@ -956,8 +956,8 @@ struct drbd_device {
39245 struct mutex own_state_mutex;
39246 struct mutex *state_mutex; /* either own_state_mutex or first_peer_device(device)->connection->cstate_mutex */
39247 char congestion_reason; /* Why we where congested... */
39248 - atomic_t rs_sect_in; /* for incoming resync data rate, SyncTarget */
39249 - atomic_t rs_sect_ev; /* for submitted resync data rate, both */
39250 + atomic_unchecked_t rs_sect_in; /* for incoming resync data rate, SyncTarget */
39251 + atomic_unchecked_t rs_sect_ev; /* for submitted resync data rate, both */
39252 int rs_last_sect_ev; /* counter to compare with */
39253 int rs_last_events; /* counter of read or write "events" (unit sectors)
39254 * on the lower level device when we last looked. */
39255 diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
39256 index a151853..b9b5baa 100644
39257 --- a/drivers/block/drbd/drbd_main.c
39258 +++ b/drivers/block/drbd/drbd_main.c
39259 @@ -1328,7 +1328,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet
39260 p->sector = sector;
39261 p->block_id = block_id;
39262 p->blksize = blksize;
39263 - p->seq_num = cpu_to_be32(atomic_inc_return(&peer_device->device->packet_seq));
39264 + p->seq_num = cpu_to_be32(atomic_inc_return_unchecked(&peer_device->device->packet_seq));
39265 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
39266 }
39267
39268 @@ -1634,7 +1634,7 @@ int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *
39269 return -EIO;
39270 p->sector = cpu_to_be64(req->i.sector);
39271 p->block_id = (unsigned long)req;
39272 - p->seq_num = cpu_to_be32(atomic_inc_return(&device->packet_seq));
39273 + p->seq_num = cpu_to_be32(atomic_inc_return_unchecked(&device->packet_seq));
39274 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio->bi_rw);
39275 if (device->state.conn >= C_SYNC_SOURCE &&
39276 device->state.conn <= C_PAUSED_SYNC_T)
39277 @@ -1915,8 +1915,8 @@ void drbd_init_set_defaults(struct drbd_device *device)
39278 atomic_set(&device->unacked_cnt, 0);
39279 atomic_set(&device->local_cnt, 0);
39280 atomic_set(&device->pp_in_use_by_net, 0);
39281 - atomic_set(&device->rs_sect_in, 0);
39282 - atomic_set(&device->rs_sect_ev, 0);
39283 + atomic_set_unchecked(&device->rs_sect_in, 0);
39284 + atomic_set_unchecked(&device->rs_sect_ev, 0);
39285 atomic_set(&device->ap_in_flight, 0);
39286 atomic_set(&device->md_io.in_use, 0);
39287
39288 @@ -2683,8 +2683,8 @@ void drbd_destroy_connection(struct kref *kref)
39289 struct drbd_connection *connection = container_of(kref, struct drbd_connection, kref);
39290 struct drbd_resource *resource = connection->resource;
39291
39292 - if (atomic_read(&connection->current_epoch->epoch_size) != 0)
39293 - drbd_err(connection, "epoch_size:%d\n", atomic_read(&connection->current_epoch->epoch_size));
39294 + if (atomic_read_unchecked(&connection->current_epoch->epoch_size) != 0)
39295 + drbd_err(connection, "epoch_size:%d\n", atomic_read_unchecked(&connection->current_epoch->epoch_size));
39296 kfree(connection->current_epoch);
39297
39298 idr_destroy(&connection->peer_devices);
39299 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
39300 index 74df8cf..e41fc24 100644
39301 --- a/drivers/block/drbd/drbd_nl.c
39302 +++ b/drivers/block/drbd/drbd_nl.c
39303 @@ -3637,13 +3637,13 @@ finish:
39304
39305 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
39306 {
39307 - static atomic_t drbd_genl_seq = ATOMIC_INIT(2); /* two. */
39308 + static atomic_unchecked_t drbd_genl_seq = ATOMIC_INIT(2); /* two. */
39309 struct sk_buff *msg;
39310 struct drbd_genlmsghdr *d_out;
39311 unsigned seq;
39312 int err = -ENOMEM;
39313
39314 - seq = atomic_inc_return(&drbd_genl_seq);
39315 + seq = atomic_inc_return_unchecked(&drbd_genl_seq);
39316 msg = genlmsg_new(NLMSG_GOODSIZE, GFP_NOIO);
39317 if (!msg)
39318 goto failed;
39319 diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
39320 index c097909..13688e1 100644
39321 --- a/drivers/block/drbd/drbd_receiver.c
39322 +++ b/drivers/block/drbd/drbd_receiver.c
39323 @@ -870,7 +870,7 @@ int drbd_connected(struct drbd_peer_device *peer_device)
39324 struct drbd_device *device = peer_device->device;
39325 int err;
39326
39327 - atomic_set(&device->packet_seq, 0);
39328 + atomic_set_unchecked(&device->packet_seq, 0);
39329 device->peer_seq = 0;
39330
39331 device->state_mutex = peer_device->connection->agreed_pro_version < 100 ?
39332 @@ -1233,7 +1233,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
39333 do {
39334 next_epoch = NULL;
39335
39336 - epoch_size = atomic_read(&epoch->epoch_size);
39337 + epoch_size = atomic_read_unchecked(&epoch->epoch_size);
39338
39339 switch (ev & ~EV_CLEANUP) {
39340 case EV_PUT:
39341 @@ -1273,7 +1273,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
39342 rv = FE_DESTROYED;
39343 } else {
39344 epoch->flags = 0;
39345 - atomic_set(&epoch->epoch_size, 0);
39346 + atomic_set_unchecked(&epoch->epoch_size, 0);
39347 /* atomic_set(&epoch->active, 0); is already zero */
39348 if (rv == FE_STILL_LIVE)
39349 rv = FE_RECYCLED;
39350 @@ -1550,7 +1550,7 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
39351 conn_wait_active_ee_empty(connection);
39352 drbd_flush(connection);
39353
39354 - if (atomic_read(&connection->current_epoch->epoch_size)) {
39355 + if (atomic_read_unchecked(&connection->current_epoch->epoch_size)) {
39356 epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO);
39357 if (epoch)
39358 break;
39359 @@ -1564,11 +1564,11 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
39360 }
39361
39362 epoch->flags = 0;
39363 - atomic_set(&epoch->epoch_size, 0);
39364 + atomic_set_unchecked(&epoch->epoch_size, 0);
39365 atomic_set(&epoch->active, 0);
39366
39367 spin_lock(&connection->epoch_lock);
39368 - if (atomic_read(&connection->current_epoch->epoch_size)) {
39369 + if (atomic_read_unchecked(&connection->current_epoch->epoch_size)) {
39370 list_add(&epoch->list, &connection->current_epoch->list);
39371 connection->current_epoch = epoch;
39372 connection->epochs++;
39373 @@ -1802,7 +1802,7 @@ static int recv_resync_read(struct drbd_peer_device *peer_device, sector_t secto
39374 list_add_tail(&peer_req->w.list, &device->sync_ee);
39375 spin_unlock_irq(&device->resource->req_lock);
39376
39377 - atomic_add(pi->size >> 9, &device->rs_sect_ev);
39378 + atomic_add_unchecked(pi->size >> 9, &device->rs_sect_ev);
39379 if (drbd_submit_peer_request(device, peer_req, WRITE, DRBD_FAULT_RS_WR) == 0)
39380 return 0;
39381
39382 @@ -1900,7 +1900,7 @@ static int receive_RSDataReply(struct drbd_connection *connection, struct packet
39383 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size);
39384 }
39385
39386 - atomic_add(pi->size >> 9, &device->rs_sect_in);
39387 + atomic_add_unchecked(pi->size >> 9, &device->rs_sect_in);
39388
39389 return err;
39390 }
39391 @@ -2290,7 +2290,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
39392
39393 err = wait_for_and_update_peer_seq(peer_device, peer_seq);
39394 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size);
39395 - atomic_inc(&connection->current_epoch->epoch_size);
39396 + atomic_inc_unchecked(&connection->current_epoch->epoch_size);
39397 err2 = drbd_drain_block(peer_device, pi->size);
39398 if (!err)
39399 err = err2;
39400 @@ -2334,7 +2334,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
39401
39402 spin_lock(&connection->epoch_lock);
39403 peer_req->epoch = connection->current_epoch;
39404 - atomic_inc(&peer_req->epoch->epoch_size);
39405 + atomic_inc_unchecked(&peer_req->epoch->epoch_size);
39406 atomic_inc(&peer_req->epoch->active);
39407 spin_unlock(&connection->epoch_lock);
39408
39409 @@ -2479,7 +2479,7 @@ bool drbd_rs_c_min_rate_throttle(struct drbd_device *device)
39410
39411 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
39412 (int)part_stat_read(&disk->part0, sectors[1]) -
39413 - atomic_read(&device->rs_sect_ev);
39414 + atomic_read_unchecked(&device->rs_sect_ev);
39415
39416 if (atomic_read(&device->ap_actlog_cnt)
39417 || curr_events - device->rs_last_events > 64) {
39418 @@ -2618,7 +2618,7 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet
39419 device->use_csums = true;
39420 } else if (pi->cmd == P_OV_REPLY) {
39421 /* track progress, we may need to throttle */
39422 - atomic_add(size >> 9, &device->rs_sect_in);
39423 + atomic_add_unchecked(size >> 9, &device->rs_sect_in);
39424 peer_req->w.cb = w_e_end_ov_reply;
39425 dec_rs_pending(device);
39426 /* drbd_rs_begin_io done when we sent this request,
39427 @@ -2691,7 +2691,7 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet
39428 goto out_free_e;
39429
39430 submit_for_resync:
39431 - atomic_add(size >> 9, &device->rs_sect_ev);
39432 + atomic_add_unchecked(size >> 9, &device->rs_sect_ev);
39433
39434 submit:
39435 update_receiver_timing_details(connection, drbd_submit_peer_request);
39436 @@ -4564,7 +4564,7 @@ struct data_cmd {
39437 int expect_payload;
39438 size_t pkt_size;
39439 int (*fn)(struct drbd_connection *, struct packet_info *);
39440 -};
39441 +} __do_const;
39442
39443 static struct data_cmd drbd_cmd_handler[] = {
39444 [P_DATA] = { 1, sizeof(struct p_data), receive_Data },
39445 @@ -4678,7 +4678,7 @@ static void conn_disconnect(struct drbd_connection *connection)
39446 if (!list_empty(&connection->current_epoch->list))
39447 drbd_err(connection, "ASSERTION FAILED: connection->current_epoch->list not empty\n");
39448 /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
39449 - atomic_set(&connection->current_epoch->epoch_size, 0);
39450 + atomic_set_unchecked(&connection->current_epoch->epoch_size, 0);
39451 connection->send.seen_any_write_yet = false;
39452
39453 drbd_info(connection, "Connection closed\n");
39454 @@ -5182,7 +5182,7 @@ static int got_IsInSync(struct drbd_connection *connection, struct packet_info *
39455 put_ldev(device);
39456 }
39457 dec_rs_pending(device);
39458 - atomic_add(blksize >> 9, &device->rs_sect_in);
39459 + atomic_add_unchecked(blksize >> 9, &device->rs_sect_in);
39460
39461 return 0;
39462 }
39463 @@ -5470,7 +5470,7 @@ static int connection_finish_peer_reqs(struct drbd_connection *connection)
39464 struct asender_cmd {
39465 size_t pkt_size;
39466 int (*fn)(struct drbd_connection *connection, struct packet_info *);
39467 -};
39468 +} __do_const;
39469
39470 static struct asender_cmd asender_tbl[] = {
39471 [P_PING] = { 0, got_Ping },
39472 diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
39473 index d0fae55..4469096 100644
39474 --- a/drivers/block/drbd/drbd_worker.c
39475 +++ b/drivers/block/drbd/drbd_worker.c
39476 @@ -408,7 +408,7 @@ static int read_for_csum(struct drbd_peer_device *peer_device, sector_t sector,
39477 list_add_tail(&peer_req->w.list, &device->read_ee);
39478 spin_unlock_irq(&device->resource->req_lock);
39479
39480 - atomic_add(size >> 9, &device->rs_sect_ev);
39481 + atomic_add_unchecked(size >> 9, &device->rs_sect_ev);
39482 if (drbd_submit_peer_request(device, peer_req, READ, DRBD_FAULT_RS_RD) == 0)
39483 return 0;
39484
39485 @@ -553,7 +553,7 @@ static int drbd_rs_number_requests(struct drbd_device *device)
39486 unsigned int sect_in; /* Number of sectors that came in since the last turn */
39487 int number, mxb;
39488
39489 - sect_in = atomic_xchg(&device->rs_sect_in, 0);
39490 + sect_in = atomic_xchg_unchecked(&device->rs_sect_in, 0);
39491 device->rs_in_flight -= sect_in;
39492
39493 rcu_read_lock();
39494 @@ -1595,8 +1595,8 @@ void drbd_rs_controller_reset(struct drbd_device *device)
39495 struct gendisk *disk = device->ldev->backing_bdev->bd_contains->bd_disk;
39496 struct fifo_buffer *plan;
39497
39498 - atomic_set(&device->rs_sect_in, 0);
39499 - atomic_set(&device->rs_sect_ev, 0);
39500 + atomic_set_unchecked(&device->rs_sect_in, 0);
39501 + atomic_set_unchecked(&device->rs_sect_ev, 0);
39502 device->rs_in_flight = 0;
39503 device->rs_last_events =
39504 (int)part_stat_read(&disk->part0, sectors[0]) +
39505 diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
39506 index 4c20c22..caef1eb 100644
39507 --- a/drivers/block/pktcdvd.c
39508 +++ b/drivers/block/pktcdvd.c
39509 @@ -109,7 +109,7 @@ static int pkt_seq_show(struct seq_file *m, void *p);
39510
39511 static sector_t get_zone(sector_t sector, struct pktcdvd_device *pd)
39512 {
39513 - return (sector + pd->offset) & ~(sector_t)(pd->settings.size - 1);
39514 + return (sector + pd->offset) & ~(sector_t)(pd->settings.size - 1UL);
39515 }
39516
39517 /*
39518 @@ -1891,7 +1891,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)
39519 return -EROFS;
39520 }
39521 pd->settings.fp = ti.fp;
39522 - pd->offset = (be32_to_cpu(ti.track_start) << 2) & (pd->settings.size - 1);
39523 + pd->offset = (be32_to_cpu(ti.track_start) << 2) & (pd->settings.size - 1UL);
39524
39525 if (ti.nwa_v) {
39526 pd->nwa = be32_to_cpu(ti.next_writable);
39527 diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
39528 index bc67a93..d552e86 100644
39529 --- a/drivers/block/rbd.c
39530 +++ b/drivers/block/rbd.c
39531 @@ -64,7 +64,7 @@
39532 * If the counter is already at its maximum value returns
39533 * -EINVAL without updating it.
39534 */
39535 -static int atomic_inc_return_safe(atomic_t *v)
39536 +static int __intentional_overflow(-1) atomic_inc_return_safe(atomic_t *v)
39537 {
39538 unsigned int counter;
39539
39540 diff --git a/drivers/block/smart1,2.h b/drivers/block/smart1,2.h
39541 index e5565fb..71be10b4 100644
39542 --- a/drivers/block/smart1,2.h
39543 +++ b/drivers/block/smart1,2.h
39544 @@ -108,11 +108,11 @@ static unsigned long smart4_intr_pending(ctlr_info_t *h)
39545 }
39546
39547 static struct access_method smart4_access = {
39548 - smart4_submit_command,
39549 - smart4_intr_mask,
39550 - smart4_fifo_full,
39551 - smart4_intr_pending,
39552 - smart4_completed,
39553 + .submit_command = smart4_submit_command,
39554 + .set_intr_mask = smart4_intr_mask,
39555 + .fifo_full = smart4_fifo_full,
39556 + .intr_pending = smart4_intr_pending,
39557 + .command_completed = smart4_completed,
39558 };
39559
39560 /*
39561 @@ -144,11 +144,11 @@ static unsigned long smart2_intr_pending(ctlr_info_t *h)
39562 }
39563
39564 static struct access_method smart2_access = {
39565 - smart2_submit_command,
39566 - smart2_intr_mask,
39567 - smart2_fifo_full,
39568 - smart2_intr_pending,
39569 - smart2_completed,
39570 + .submit_command = smart2_submit_command,
39571 + .set_intr_mask = smart2_intr_mask,
39572 + .fifo_full = smart2_fifo_full,
39573 + .intr_pending = smart2_intr_pending,
39574 + .command_completed = smart2_completed,
39575 };
39576
39577 /*
39578 @@ -180,11 +180,11 @@ static unsigned long smart2e_intr_pending(ctlr_info_t *h)
39579 }
39580
39581 static struct access_method smart2e_access = {
39582 - smart2e_submit_command,
39583 - smart2e_intr_mask,
39584 - smart2e_fifo_full,
39585 - smart2e_intr_pending,
39586 - smart2e_completed,
39587 + .submit_command = smart2e_submit_command,
39588 + .set_intr_mask = smart2e_intr_mask,
39589 + .fifo_full = smart2e_fifo_full,
39590 + .intr_pending = smart2e_intr_pending,
39591 + .command_completed = smart2e_completed,
39592 };
39593
39594 /*
39595 @@ -270,9 +270,9 @@ static unsigned long smart1_intr_pending(ctlr_info_t *h)
39596 }
39597
39598 static struct access_method smart1_access = {
39599 - smart1_submit_command,
39600 - smart1_intr_mask,
39601 - smart1_fifo_full,
39602 - smart1_intr_pending,
39603 - smart1_completed,
39604 + .submit_command = smart1_submit_command,
39605 + .set_intr_mask = smart1_intr_mask,
39606 + .fifo_full = smart1_fifo_full,
39607 + .intr_pending = smart1_intr_pending,
39608 + .command_completed = smart1_completed,
39609 };
39610 diff --git a/drivers/bluetooth/btwilink.c b/drivers/bluetooth/btwilink.c
39611 index 7a722df..54b76ab 100644
39612 --- a/drivers/bluetooth/btwilink.c
39613 +++ b/drivers/bluetooth/btwilink.c
39614 @@ -288,7 +288,7 @@ static int ti_st_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
39615
39616 static int bt_ti_probe(struct platform_device *pdev)
39617 {
39618 - static struct ti_st *hst;
39619 + struct ti_st *hst;
39620 struct hci_dev *hdev;
39621 int err;
39622
39623 diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
39624 index 5d28a45..a538f90 100644
39625 --- a/drivers/cdrom/cdrom.c
39626 +++ b/drivers/cdrom/cdrom.c
39627 @@ -610,7 +610,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
39628 ENSURE(reset, CDC_RESET);
39629 ENSURE(generic_packet, CDC_GENERIC_PACKET);
39630 cdi->mc_flags = 0;
39631 - cdo->n_minors = 0;
39632 cdi->options = CDO_USE_FFLAGS;
39633
39634 if (autoclose == 1 && CDROM_CAN(CDC_CLOSE_TRAY))
39635 @@ -630,8 +629,11 @@ int register_cdrom(struct cdrom_device_info *cdi)
39636 else
39637 cdi->cdda_method = CDDA_OLD;
39638
39639 - if (!cdo->generic_packet)
39640 - cdo->generic_packet = cdrom_dummy_generic_packet;
39641 + if (!cdo->generic_packet) {
39642 + pax_open_kernel();
39643 + *(void **)&cdo->generic_packet = cdrom_dummy_generic_packet;
39644 + pax_close_kernel();
39645 + }
39646
39647 cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
39648 mutex_lock(&cdrom_mutex);
39649 @@ -652,7 +654,6 @@ void unregister_cdrom(struct cdrom_device_info *cdi)
39650 if (cdi->exit)
39651 cdi->exit(cdi);
39652
39653 - cdi->ops->n_minors--;
39654 cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
39655 }
39656
39657 @@ -2126,7 +2127,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
39658 */
39659 nr = nframes;
39660 do {
39661 - cgc.buffer = kmalloc(CD_FRAMESIZE_RAW * nr, GFP_KERNEL);
39662 + cgc.buffer = kzalloc(CD_FRAMESIZE_RAW * nr, GFP_KERNEL);
39663 if (cgc.buffer)
39664 break;
39665
39666 @@ -3434,7 +3435,7 @@ static int cdrom_print_info(const char *header, int val, char *info,
39667 struct cdrom_device_info *cdi;
39668 int ret;
39669
39670 - ret = scnprintf(info + *pos, max_size - *pos, header);
39671 + ret = scnprintf(info + *pos, max_size - *pos, "%s", header);
39672 if (!ret)
39673 return 1;
39674
39675 diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
39676 index 584bc31..e64a12c 100644
39677 --- a/drivers/cdrom/gdrom.c
39678 +++ b/drivers/cdrom/gdrom.c
39679 @@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = {
39680 .audio_ioctl = gdrom_audio_ioctl,
39681 .capability = CDC_MULTI_SESSION | CDC_MEDIA_CHANGED |
39682 CDC_RESET | CDC_DRIVE_STATUS | CDC_CD_R,
39683 - .n_minors = 1,
39684 };
39685
39686 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode)
39687 diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
39688 index a043107..1263e4a 100644
39689 --- a/drivers/char/Kconfig
39690 +++ b/drivers/char/Kconfig
39691 @@ -17,7 +17,8 @@ config DEVMEM
39692
39693 config DEVKMEM
39694 bool "/dev/kmem virtual device support"
39695 - default y
39696 + default n
39697 + depends on !GRKERNSEC_KMEM
39698 help
39699 Say Y here if you want to support the /dev/kmem device. The
39700 /dev/kmem device is rarely used, but can be used for certain
39701 @@ -586,6 +587,7 @@ config DEVPORT
39702 bool
39703 depends on !M68K
39704 depends on ISA || PCI
39705 + depends on !GRKERNSEC_KMEM
39706 default y
39707
39708 source "drivers/s390/char/Kconfig"
39709 diff --git a/drivers/char/agp/compat_ioctl.c b/drivers/char/agp/compat_ioctl.c
39710 index a48e05b..6bac831 100644
39711 --- a/drivers/char/agp/compat_ioctl.c
39712 +++ b/drivers/char/agp/compat_ioctl.c
39713 @@ -108,7 +108,7 @@ static int compat_agpioc_reserve_wrap(struct agp_file_private *priv, void __user
39714 return -ENOMEM;
39715 }
39716
39717 - if (copy_from_user(usegment, (void __user *) ureserve.seg_list,
39718 + if (copy_from_user(usegment, (void __force_user *) ureserve.seg_list,
39719 sizeof(*usegment) * ureserve.seg_count)) {
39720 kfree(usegment);
39721 kfree(ksegment);
39722 diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
39723 index 09f17eb..8531d2f 100644
39724 --- a/drivers/char/agp/frontend.c
39725 +++ b/drivers/char/agp/frontend.c
39726 @@ -806,7 +806,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
39727 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
39728 return -EFAULT;
39729
39730 - if ((unsigned) reserve.seg_count >= ~0U/sizeof(struct agp_segment))
39731 + if ((unsigned) reserve.seg_count >= ~0U/sizeof(struct agp_segment_priv))
39732 return -EFAULT;
39733
39734 client = agp_find_client_by_pid(reserve.pid);
39735 @@ -836,7 +836,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
39736 if (segment == NULL)
39737 return -ENOMEM;
39738
39739 - if (copy_from_user(segment, (void __user *) reserve.seg_list,
39740 + if (copy_from_user(segment, (void __force_user *) reserve.seg_list,
39741 sizeof(struct agp_segment) * reserve.seg_count)) {
39742 kfree(segment);
39743 return -EFAULT;
39744 diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
39745 index c6dea3f..72ae4b0 100644
39746 --- a/drivers/char/agp/intel-gtt.c
39747 +++ b/drivers/char/agp/intel-gtt.c
39748 @@ -1408,8 +1408,8 @@ int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
39749 }
39750 EXPORT_SYMBOL(intel_gmch_probe);
39751
39752 -void intel_gtt_get(size_t *gtt_total, size_t *stolen_size,
39753 - phys_addr_t *mappable_base, unsigned long *mappable_end)
39754 +void intel_gtt_get(uint64_t *gtt_total, uint64_t *stolen_size,
39755 + uint64_t *mappable_base, uint64_t *mappable_end)
39756 {
39757 *gtt_total = intel_private.gtt_total_entries << PAGE_SHIFT;
39758 *stolen_size = intel_private.stolen_size;
39759 diff --git a/drivers/char/genrtc.c b/drivers/char/genrtc.c
39760 index 4f94375..413694e 100644
39761 --- a/drivers/char/genrtc.c
39762 +++ b/drivers/char/genrtc.c
39763 @@ -273,6 +273,7 @@ static int gen_rtc_ioctl(struct file *file,
39764 switch (cmd) {
39765
39766 case RTC_PLL_GET:
39767 + memset(&pll, 0, sizeof(pll));
39768 if (get_rtc_pll(&pll))
39769 return -EINVAL;
39770 else
39771 diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
39772 index 5c0baa9..44011b1 100644
39773 --- a/drivers/char/hpet.c
39774 +++ b/drivers/char/hpet.c
39775 @@ -575,7 +575,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets,
39776 }
39777
39778 static int
39779 -hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg,
39780 +hpet_ioctl_common(struct hpet_dev *devp, unsigned int cmd, unsigned long arg,
39781 struct hpet_info *info)
39782 {
39783 struct hpet_timer __iomem *timer;
39784 diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
39785 index bf75f63..359fa10 100644
39786 --- a/drivers/char/ipmi/ipmi_msghandler.c
39787 +++ b/drivers/char/ipmi/ipmi_msghandler.c
39788 @@ -436,7 +436,7 @@ struct ipmi_smi {
39789 struct proc_dir_entry *proc_dir;
39790 char proc_dir_name[10];
39791
39792 - atomic_t stats[IPMI_NUM_STATS];
39793 + atomic_unchecked_t stats[IPMI_NUM_STATS];
39794
39795 /*
39796 * run_to_completion duplicate of smb_info, smi_info
39797 @@ -468,9 +468,9 @@ static LIST_HEAD(smi_watchers);
39798 static DEFINE_MUTEX(smi_watchers_mutex);
39799
39800 #define ipmi_inc_stat(intf, stat) \
39801 - atomic_inc(&(intf)->stats[IPMI_STAT_ ## stat])
39802 + atomic_inc_unchecked(&(intf)->stats[IPMI_STAT_ ## stat])
39803 #define ipmi_get_stat(intf, stat) \
39804 - ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat]))
39805 + ((unsigned int) atomic_read_unchecked(&(intf)->stats[IPMI_STAT_ ## stat]))
39806
39807 static char *addr_src_to_str[] = { "invalid", "hotmod", "hardcoded", "SPMI",
39808 "ACPI", "SMBIOS", "PCI",
39809 @@ -2828,7 +2828,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
39810 INIT_LIST_HEAD(&intf->cmd_rcvrs);
39811 init_waitqueue_head(&intf->waitq);
39812 for (i = 0; i < IPMI_NUM_STATS; i++)
39813 - atomic_set(&intf->stats[i], 0);
39814 + atomic_set_unchecked(&intf->stats[i], 0);
39815
39816 intf->proc_dir = NULL;
39817
39818 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
39819 index 8a45e92..e41b1c7 100644
39820 --- a/drivers/char/ipmi/ipmi_si_intf.c
39821 +++ b/drivers/char/ipmi/ipmi_si_intf.c
39822 @@ -289,7 +289,7 @@ struct smi_info {
39823 unsigned char slave_addr;
39824
39825 /* Counters and things for the proc filesystem. */
39826 - atomic_t stats[SI_NUM_STATS];
39827 + atomic_unchecked_t stats[SI_NUM_STATS];
39828
39829 struct task_struct *thread;
39830
39831 @@ -298,9 +298,9 @@ struct smi_info {
39832 };
39833
39834 #define smi_inc_stat(smi, stat) \
39835 - atomic_inc(&(smi)->stats[SI_STAT_ ## stat])
39836 + atomic_inc_unchecked(&(smi)->stats[SI_STAT_ ## stat])
39837 #define smi_get_stat(smi, stat) \
39838 - ((unsigned int) atomic_read(&(smi)->stats[SI_STAT_ ## stat]))
39839 + ((unsigned int) atomic_read_unchecked(&(smi)->stats[SI_STAT_ ## stat]))
39840
39841 #define SI_MAX_PARMS 4
39842
39843 @@ -3500,7 +3500,7 @@ static int try_smi_init(struct smi_info *new_smi)
39844 atomic_set(&new_smi->req_events, 0);
39845 new_smi->run_to_completion = false;
39846 for (i = 0; i < SI_NUM_STATS; i++)
39847 - atomic_set(&new_smi->stats[i], 0);
39848 + atomic_set_unchecked(&new_smi->stats[i], 0);
39849
39850 new_smi->interrupt_disabled = true;
39851 atomic_set(&new_smi->need_watch, 0);
39852 diff --git a/drivers/char/mem.c b/drivers/char/mem.c
39853 index 6b1721f..fda9398 100644
39854 --- a/drivers/char/mem.c
39855 +++ b/drivers/char/mem.c
39856 @@ -18,6 +18,7 @@
39857 #include <linux/raw.h>
39858 #include <linux/tty.h>
39859 #include <linux/capability.h>
39860 +#include <linux/security.h>
39861 #include <linux/ptrace.h>
39862 #include <linux/device.h>
39863 #include <linux/highmem.h>
39864 @@ -36,6 +37,10 @@
39865
39866 #define DEVPORT_MINOR 4
39867
39868 +#if defined(CONFIG_GRKERNSEC) && !defined(CONFIG_GRKERNSEC_NO_RBAC)
39869 +extern const struct file_operations grsec_fops;
39870 +#endif
39871 +
39872 static inline unsigned long size_inside_page(unsigned long start,
39873 unsigned long size)
39874 {
39875 @@ -67,9 +72,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
39876
39877 while (cursor < to) {
39878 if (!devmem_is_allowed(pfn)) {
39879 +#ifdef CONFIG_GRKERNSEC_KMEM
39880 + gr_handle_mem_readwrite(from, to);
39881 +#else
39882 printk(KERN_INFO
39883 "Program %s tried to access /dev/mem between %Lx->%Lx.\n",
39884 current->comm, from, to);
39885 +#endif
39886 return 0;
39887 }
39888 cursor += PAGE_SIZE;
39889 @@ -77,6 +86,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
39890 }
39891 return 1;
39892 }
39893 +#elif defined(CONFIG_GRKERNSEC_KMEM)
39894 +static inline int range_is_allowed(unsigned long pfn, unsigned long size)
39895 +{
39896 + return 0;
39897 +}
39898 #else
39899 static inline int range_is_allowed(unsigned long pfn, unsigned long size)
39900 {
39901 @@ -124,7 +138,8 @@ static ssize_t read_mem(struct file *file, char __user *buf,
39902 #endif
39903
39904 while (count > 0) {
39905 - unsigned long remaining;
39906 + unsigned long remaining = 0;
39907 + char *temp;
39908
39909 sz = size_inside_page(p, count);
39910
39911 @@ -140,7 +155,24 @@ static ssize_t read_mem(struct file *file, char __user *buf,
39912 if (!ptr)
39913 return -EFAULT;
39914
39915 - remaining = copy_to_user(buf, ptr, sz);
39916 +#ifdef CONFIG_PAX_USERCOPY
39917 + temp = kmalloc(sz, GFP_KERNEL|GFP_USERCOPY);
39918 + if (!temp) {
39919 + unxlate_dev_mem_ptr(p, ptr);
39920 + return -ENOMEM;
39921 + }
39922 + remaining = probe_kernel_read(temp, ptr, sz);
39923 +#else
39924 + temp = ptr;
39925 +#endif
39926 +
39927 + if (!remaining)
39928 + remaining = copy_to_user(buf, temp, sz);
39929 +
39930 +#ifdef CONFIG_PAX_USERCOPY
39931 + kfree(temp);
39932 +#endif
39933 +
39934 unxlate_dev_mem_ptr(p, ptr);
39935 if (remaining)
39936 return -EFAULT;
39937 @@ -380,9 +412,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
39938 size_t count, loff_t *ppos)
39939 {
39940 unsigned long p = *ppos;
39941 - ssize_t low_count, read, sz;
39942 + ssize_t low_count, read, sz, err = 0;
39943 char *kbuf; /* k-addr because vread() takes vmlist_lock rwlock */
39944 - int err = 0;
39945
39946 read = 0;
39947 if (p < (unsigned long) high_memory) {
39948 @@ -404,6 +435,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
39949 }
39950 #endif
39951 while (low_count > 0) {
39952 + char *temp;
39953 +
39954 sz = size_inside_page(p, low_count);
39955
39956 /*
39957 @@ -413,7 +446,23 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
39958 */
39959 kbuf = xlate_dev_kmem_ptr((void *)p);
39960
39961 - if (copy_to_user(buf, kbuf, sz))
39962 +#ifdef CONFIG_PAX_USERCOPY
39963 + temp = kmalloc(sz, GFP_KERNEL|GFP_USERCOPY);
39964 + if (!temp)
39965 + return -ENOMEM;
39966 + err = probe_kernel_read(temp, kbuf, sz);
39967 +#else
39968 + temp = kbuf;
39969 +#endif
39970 +
39971 + if (!err)
39972 + err = copy_to_user(buf, temp, sz);
39973 +
39974 +#ifdef CONFIG_PAX_USERCOPY
39975 + kfree(temp);
39976 +#endif
39977 +
39978 + if (err)
39979 return -EFAULT;
39980 buf += sz;
39981 p += sz;
39982 @@ -802,6 +851,9 @@ static const struct memdev {
39983 #ifdef CONFIG_PRINTK
39984 [11] = { "kmsg", 0644, &kmsg_fops, 0 },
39985 #endif
39986 +#if defined(CONFIG_GRKERNSEC) && !defined(CONFIG_GRKERNSEC_NO_RBAC)
39987 + [13] = { "grsec",S_IRUSR | S_IWUGO, &grsec_fops, 0 },
39988 +#endif
39989 };
39990
39991 static int memory_open(struct inode *inode, struct file *filp)
39992 @@ -863,7 +915,7 @@ static int __init chr_dev_init(void)
39993 continue;
39994
39995 device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor),
39996 - NULL, devlist[minor].name);
39997 + NULL, "%s", devlist[minor].name);
39998 }
39999
40000 return tty_init();
40001 diff --git a/drivers/char/nvram.c b/drivers/char/nvram.c
40002 index 9df78e2..01ba9ae 100644
40003 --- a/drivers/char/nvram.c
40004 +++ b/drivers/char/nvram.c
40005 @@ -247,7 +247,7 @@ static ssize_t nvram_read(struct file *file, char __user *buf,
40006
40007 spin_unlock_irq(&rtc_lock);
40008
40009 - if (copy_to_user(buf, contents, tmp - contents))
40010 + if (tmp - contents > sizeof(contents) || copy_to_user(buf, contents, tmp - contents))
40011 return -EFAULT;
40012
40013 *ppos = i;
40014 diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
40015 index 7680d52..073f799e 100644
40016 --- a/drivers/char/pcmcia/synclink_cs.c
40017 +++ b/drivers/char/pcmcia/synclink_cs.c
40018 @@ -2345,7 +2345,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
40019
40020 if (debug_level >= DEBUG_LEVEL_INFO)
40021 printk("%s(%d):mgslpc_close(%s) entry, count=%d\n",
40022 - __FILE__, __LINE__, info->device_name, port->count);
40023 + __FILE__, __LINE__, info->device_name, atomic_read(&port->count));
40024
40025 if (tty_port_close_start(port, tty, filp) == 0)
40026 goto cleanup;
40027 @@ -2363,7 +2363,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
40028 cleanup:
40029 if (debug_level >= DEBUG_LEVEL_INFO)
40030 printk("%s(%d):mgslpc_close(%s) exit, count=%d\n", __FILE__, __LINE__,
40031 - tty->driver->name, port->count);
40032 + tty->driver->name, atomic_read(&port->count));
40033 }
40034
40035 /* Wait until the transmitter is empty.
40036 @@ -2505,7 +2505,7 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
40037
40038 if (debug_level >= DEBUG_LEVEL_INFO)
40039 printk("%s(%d):mgslpc_open(%s), old ref count = %d\n",
40040 - __FILE__, __LINE__, tty->driver->name, port->count);
40041 + __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
40042
40043 /* If port is closing, signal caller to try again */
40044 if (port->flags & ASYNC_CLOSING){
40045 @@ -2525,11 +2525,11 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
40046 goto cleanup;
40047 }
40048 spin_lock(&port->lock);
40049 - port->count++;
40050 + atomic_inc(&port->count);
40051 spin_unlock(&port->lock);
40052 spin_unlock_irqrestore(&info->netlock, flags);
40053
40054 - if (port->count == 1) {
40055 + if (atomic_read(&port->count) == 1) {
40056 /* 1st open on this device, init hardware */
40057 retval = startup(info, tty);
40058 if (retval < 0)
40059 @@ -3918,7 +3918,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
40060 unsigned short new_crctype;
40061
40062 /* return error if TTY interface open */
40063 - if (info->port.count)
40064 + if (atomic_read(&info->port.count))
40065 return -EBUSY;
40066
40067 switch (encoding)
40068 @@ -4022,7 +4022,7 @@ static int hdlcdev_open(struct net_device *dev)
40069
40070 /* arbitrate between network and tty opens */
40071 spin_lock_irqsave(&info->netlock, flags);
40072 - if (info->port.count != 0 || info->netcount != 0) {
40073 + if (atomic_read(&info->port.count) != 0 || info->netcount != 0) {
40074 printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name);
40075 spin_unlock_irqrestore(&info->netlock, flags);
40076 return -EBUSY;
40077 @@ -4112,7 +4112,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
40078 printk("%s:hdlcdev_ioctl(%s)\n", __FILE__, dev->name);
40079
40080 /* return error if TTY interface open */
40081 - if (info->port.count)
40082 + if (atomic_read(&info->port.count))
40083 return -EBUSY;
40084
40085 if (cmd != SIOCWANDEV)
40086 diff --git a/drivers/char/random.c b/drivers/char/random.c
40087 index d0da5d8..739fd3a 100644
40088 --- a/drivers/char/random.c
40089 +++ b/drivers/char/random.c
40090 @@ -289,9 +289,6 @@
40091 /*
40092 * To allow fractional bits to be tracked, the entropy_count field is
40093 * denominated in units of 1/8th bits.
40094 - *
40095 - * 2*(ENTROPY_SHIFT + log2(poolbits)) must <= 31, or the multiply in
40096 - * credit_entropy_bits() needs to be 64 bits wide.
40097 */
40098 #define ENTROPY_SHIFT 3
40099 #define ENTROPY_BITS(r) ((r)->entropy_count >> ENTROPY_SHIFT)
40100 @@ -442,9 +439,9 @@ struct entropy_store {
40101 };
40102
40103 static void push_to_pool(struct work_struct *work);
40104 -static __u32 input_pool_data[INPUT_POOL_WORDS];
40105 -static __u32 blocking_pool_data[OUTPUT_POOL_WORDS];
40106 -static __u32 nonblocking_pool_data[OUTPUT_POOL_WORDS];
40107 +static __u32 input_pool_data[INPUT_POOL_WORDS] __latent_entropy;
40108 +static __u32 blocking_pool_data[OUTPUT_POOL_WORDS] __latent_entropy;
40109 +static __u32 nonblocking_pool_data[OUTPUT_POOL_WORDS] __latent_entropy;
40110
40111 static struct entropy_store input_pool = {
40112 .poolinfo = &poolinfo_table[0],
40113 @@ -654,7 +651,7 @@ retry:
40114 /* The +2 corresponds to the /4 in the denominator */
40115
40116 do {
40117 - unsigned int anfrac = min(pnfrac, pool_size/2);
40118 + u64 anfrac = min(pnfrac, pool_size/2);
40119 unsigned int add =
40120 ((pool_size - entropy_count)*anfrac*3) >> s;
40121
40122 @@ -1227,7 +1224,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
40123
40124 extract_buf(r, tmp);
40125 i = min_t(int, nbytes, EXTRACT_SIZE);
40126 - if (copy_to_user(buf, tmp, i)) {
40127 + if (i > sizeof(tmp) || copy_to_user(buf, tmp, i)) {
40128 ret = -EFAULT;
40129 break;
40130 }
40131 @@ -1668,7 +1665,7 @@ static char sysctl_bootid[16];
40132 static int proc_do_uuid(struct ctl_table *table, int write,
40133 void __user *buffer, size_t *lenp, loff_t *ppos)
40134 {
40135 - struct ctl_table fake_table;
40136 + ctl_table_no_const fake_table;
40137 unsigned char buf[64], tmp_uuid[16], *uuid;
40138
40139 uuid = table->data;
40140 @@ -1698,7 +1695,7 @@ static int proc_do_uuid(struct ctl_table *table, int write,
40141 static int proc_do_entropy(struct ctl_table *table, int write,
40142 void __user *buffer, size_t *lenp, loff_t *ppos)
40143 {
40144 - struct ctl_table fake_table;
40145 + ctl_table_no_const fake_table;
40146 int entropy_count;
40147
40148 entropy_count = *(int *)table->data >> ENTROPY_SHIFT;
40149 diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
40150 index e496dae..3db53b6 100644
40151 --- a/drivers/char/sonypi.c
40152 +++ b/drivers/char/sonypi.c
40153 @@ -54,6 +54,7 @@
40154
40155 #include <asm/uaccess.h>
40156 #include <asm/io.h>
40157 +#include <asm/local.h>
40158
40159 #include <linux/sonypi.h>
40160
40161 @@ -490,7 +491,7 @@ static struct sonypi_device {
40162 spinlock_t fifo_lock;
40163 wait_queue_head_t fifo_proc_list;
40164 struct fasync_struct *fifo_async;
40165 - int open_count;
40166 + local_t open_count;
40167 int model;
40168 struct input_dev *input_jog_dev;
40169 struct input_dev *input_key_dev;
40170 @@ -892,7 +893,7 @@ static int sonypi_misc_fasync(int fd, struct file *filp, int on)
40171 static int sonypi_misc_release(struct inode *inode, struct file *file)
40172 {
40173 mutex_lock(&sonypi_device.lock);
40174 - sonypi_device.open_count--;
40175 + local_dec(&sonypi_device.open_count);
40176 mutex_unlock(&sonypi_device.lock);
40177 return 0;
40178 }
40179 @@ -901,9 +902,9 @@ static int sonypi_misc_open(struct inode *inode, struct file *file)
40180 {
40181 mutex_lock(&sonypi_device.lock);
40182 /* Flush input queue on first open */
40183 - if (!sonypi_device.open_count)
40184 + if (!local_read(&sonypi_device.open_count))
40185 kfifo_reset(&sonypi_device.fifo);
40186 - sonypi_device.open_count++;
40187 + local_inc(&sonypi_device.open_count);
40188 mutex_unlock(&sonypi_device.lock);
40189
40190 return 0;
40191 @@ -1491,7 +1492,7 @@ static struct platform_driver sonypi_driver = {
40192
40193 static struct platform_device *sonypi_platform_device;
40194
40195 -static struct dmi_system_id __initdata sonypi_dmi_table[] = {
40196 +static const struct dmi_system_id __initconst sonypi_dmi_table[] = {
40197 {
40198 .ident = "Sony Vaio",
40199 .matches = {
40200 diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c
40201 index 565a947..dcdc06e 100644
40202 --- a/drivers/char/tpm/tpm_acpi.c
40203 +++ b/drivers/char/tpm/tpm_acpi.c
40204 @@ -98,11 +98,12 @@ int read_log(struct tpm_bios_log *log)
40205 virt = acpi_os_map_iomem(start, len);
40206 if (!virt) {
40207 kfree(log->bios_event_log);
40208 + log->bios_event_log = NULL;
40209 printk("%s: ERROR - Unable to map memory\n", __func__);
40210 return -EIO;
40211 }
40212
40213 - memcpy_fromio(log->bios_event_log, virt, len);
40214 + memcpy_fromio(log->bios_event_log, (const char __force_kernel *)virt, len);
40215
40216 acpi_os_unmap_iomem(virt, len);
40217 return 0;
40218 diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c
40219 index 3a56a13..f8cbd25 100644
40220 --- a/drivers/char/tpm/tpm_eventlog.c
40221 +++ b/drivers/char/tpm/tpm_eventlog.c
40222 @@ -95,7 +95,7 @@ static void *tpm_bios_measurements_start(struct seq_file *m, loff_t *pos)
40223 event = addr;
40224
40225 if ((event->event_type == 0 && event->event_size == 0) ||
40226 - ((addr + sizeof(struct tcpa_event) + event->event_size) >= limit))
40227 + (event->event_size >= limit - addr - sizeof(struct tcpa_event)))
40228 return NULL;
40229
40230 return addr;
40231 @@ -120,7 +120,7 @@ static void *tpm_bios_measurements_next(struct seq_file *m, void *v,
40232 return NULL;
40233
40234 if ((event->event_type == 0 && event->event_size == 0) ||
40235 - ((v + sizeof(struct tcpa_event) + event->event_size) >= limit))
40236 + (event->event_size >= limit - v - sizeof(struct tcpa_event)))
40237 return NULL;
40238
40239 (*pos)++;
40240 @@ -213,7 +213,8 @@ static int tpm_binary_bios_measurements_show(struct seq_file *m, void *v)
40241 int i;
40242
40243 for (i = 0; i < sizeof(struct tcpa_event) + event->event_size; i++)
40244 - seq_putc(m, data[i]);
40245 + if (!seq_putc(m, data[i]))
40246 + return -EFAULT;
40247
40248 return 0;
40249 }
40250 diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
40251 index d2406fe..243951a 100644
40252 --- a/drivers/char/virtio_console.c
40253 +++ b/drivers/char/virtio_console.c
40254 @@ -685,7 +685,7 @@ static ssize_t fill_readbuf(struct port *port, char __user *out_buf,
40255 if (to_user) {
40256 ssize_t ret;
40257
40258 - ret = copy_to_user(out_buf, buf->buf + buf->offset, out_count);
40259 + ret = copy_to_user((char __force_user *)out_buf, buf->buf + buf->offset, out_count);
40260 if (ret)
40261 return -EFAULT;
40262 } else {
40263 @@ -789,7 +789,7 @@ static ssize_t port_fops_read(struct file *filp, char __user *ubuf,
40264 if (!port_has_data(port) && !port->host_connected)
40265 return 0;
40266
40267 - return fill_readbuf(port, ubuf, count, true);
40268 + return fill_readbuf(port, (char __force_kernel *)ubuf, count, true);
40269 }
40270
40271 static int wait_port_writable(struct port *port, bool nonblock)
40272 diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
40273 index 616f5ae..747bdd0 100644
40274 --- a/drivers/clk/clk-composite.c
40275 +++ b/drivers/clk/clk-composite.c
40276 @@ -197,7 +197,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
40277 struct clk *clk;
40278 struct clk_init_data init;
40279 struct clk_composite *composite;
40280 - struct clk_ops *clk_composite_ops;
40281 + clk_ops_no_const *clk_composite_ops;
40282
40283 composite = kzalloc(sizeof(*composite), GFP_KERNEL);
40284 if (!composite)
40285 diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h
40286 index b775fc2..2d45b64 100644
40287 --- a/drivers/clk/samsung/clk.h
40288 +++ b/drivers/clk/samsung/clk.h
40289 @@ -260,7 +260,7 @@ struct samsung_gate_clock {
40290 #define GATE_DA(_id, dname, cname, pname, o, b, f, gf, a) \
40291 __GATE(_id, dname, cname, pname, o, b, f, gf, a)
40292
40293 -#define PNAME(x) static const char *x[] __initdata
40294 +#define PNAME(x) static const char * const x[] __initconst
40295
40296 /**
40297 * struct samsung_clk_reg_dump: register dump of clock controller registers.
40298 diff --git a/drivers/clk/socfpga/clk-gate.c b/drivers/clk/socfpga/clk-gate.c
40299 index 82449cd..dcfec30 100644
40300 --- a/drivers/clk/socfpga/clk-gate.c
40301 +++ b/drivers/clk/socfpga/clk-gate.c
40302 @@ -22,6 +22,7 @@
40303 #include <linux/mfd/syscon.h>
40304 #include <linux/of.h>
40305 #include <linux/regmap.h>
40306 +#include <asm/pgtable.h>
40307
40308 #include "clk.h"
40309
40310 @@ -170,7 +171,7 @@ static int socfpga_clk_prepare(struct clk_hw *hwclk)
40311 return 0;
40312 }
40313
40314 -static struct clk_ops gateclk_ops = {
40315 +static clk_ops_no_const gateclk_ops __read_only = {
40316 .prepare = socfpga_clk_prepare,
40317 .recalc_rate = socfpga_clk_recalc_rate,
40318 .get_parent = socfpga_clk_get_parent,
40319 @@ -203,8 +204,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
40320 socfpga_clk->hw.reg = clk_mgr_base_addr + clk_gate[0];
40321 socfpga_clk->hw.bit_idx = clk_gate[1];
40322
40323 - gateclk_ops.enable = clk_gate_ops.enable;
40324 - gateclk_ops.disable = clk_gate_ops.disable;
40325 + pax_open_kernel();
40326 + *(void **)&gateclk_ops.enable = clk_gate_ops.enable;
40327 + *(void **)&gateclk_ops.disable = clk_gate_ops.disable;
40328 + pax_close_kernel();
40329 }
40330
40331 rc = of_property_read_u32(node, "fixed-divider", &fixed_div);
40332 diff --git a/drivers/clk/socfpga/clk-pll.c b/drivers/clk/socfpga/clk-pll.c
40333 index 8f26b52..29f2a3a 100644
40334 --- a/drivers/clk/socfpga/clk-pll.c
40335 +++ b/drivers/clk/socfpga/clk-pll.c
40336 @@ -21,6 +21,7 @@
40337 #include <linux/io.h>
40338 #include <linux/of.h>
40339 #include <linux/of_address.h>
40340 +#include <asm/pgtable.h>
40341
40342 #include "clk.h"
40343
40344 @@ -76,7 +77,7 @@ static u8 clk_pll_get_parent(struct clk_hw *hwclk)
40345 CLK_MGR_PLL_CLK_SRC_MASK;
40346 }
40347
40348 -static struct clk_ops clk_pll_ops = {
40349 +static clk_ops_no_const clk_pll_ops __read_only = {
40350 .recalc_rate = clk_pll_recalc_rate,
40351 .get_parent = clk_pll_get_parent,
40352 };
40353 @@ -115,8 +116,10 @@ static __init struct clk *__socfpga_pll_init(struct device_node *node,
40354 pll_clk->hw.hw.init = &init;
40355
40356 pll_clk->hw.bit_idx = SOCFPGA_PLL_EXT_ENA;
40357 - clk_pll_ops.enable = clk_gate_ops.enable;
40358 - clk_pll_ops.disable = clk_gate_ops.disable;
40359 + pax_open_kernel();
40360 + *(void **)&clk_pll_ops.enable = clk_gate_ops.enable;
40361 + *(void **)&clk_pll_ops.disable = clk_gate_ops.disable;
40362 + pax_close_kernel();
40363
40364 clk = clk_register(NULL, &pll_clk->hw.hw);
40365 if (WARN_ON(IS_ERR(clk))) {
40366 diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
40367 index 0136dfc..4cc55cb 100644
40368 --- a/drivers/cpufreq/acpi-cpufreq.c
40369 +++ b/drivers/cpufreq/acpi-cpufreq.c
40370 @@ -675,8 +675,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
40371 data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu);
40372 per_cpu(acfreq_data, cpu) = data;
40373
40374 - if (cpu_has(c, X86_FEATURE_CONSTANT_TSC))
40375 - acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
40376 + if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) {
40377 + pax_open_kernel();
40378 + *(u8 *)&acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
40379 + pax_close_kernel();
40380 + }
40381
40382 result = acpi_processor_register_performance(data->acpi_data, cpu);
40383 if (result)
40384 @@ -810,7 +813,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
40385 policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu);
40386 break;
40387 case ACPI_ADR_SPACE_FIXED_HARDWARE:
40388 - acpi_cpufreq_driver.get = get_cur_freq_on_cpu;
40389 + pax_open_kernel();
40390 + *(void **)&acpi_cpufreq_driver.get = get_cur_freq_on_cpu;
40391 + pax_close_kernel();
40392 break;
40393 default:
40394 break;
40395 @@ -904,8 +909,10 @@ static void __init acpi_cpufreq_boost_init(void)
40396 if (!msrs)
40397 return;
40398
40399 - acpi_cpufreq_driver.boost_supported = true;
40400 - acpi_cpufreq_driver.boost_enabled = boost_state(0);
40401 + pax_open_kernel();
40402 + *(bool *)&acpi_cpufreq_driver.boost_supported = true;
40403 + *(bool *)&acpi_cpufreq_driver.boost_enabled = boost_state(0);
40404 + pax_close_kernel();
40405
40406 cpu_notifier_register_begin();
40407
40408 diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c
40409 index 528a82bf..78dc025 100644
40410 --- a/drivers/cpufreq/cpufreq-dt.c
40411 +++ b/drivers/cpufreq/cpufreq-dt.c
40412 @@ -392,7 +392,9 @@ static int dt_cpufreq_probe(struct platform_device *pdev)
40413 if (!IS_ERR(cpu_reg))
40414 regulator_put(cpu_reg);
40415
40416 - dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
40417 + pax_open_kernel();
40418 + *(void **)&dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
40419 + pax_close_kernel();
40420
40421 ret = cpufreq_register_driver(&dt_cpufreq_driver);
40422 if (ret)
40423 diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
40424 index 7a3c30c..bac142e 100644
40425 --- a/drivers/cpufreq/cpufreq.c
40426 +++ b/drivers/cpufreq/cpufreq.c
40427 @@ -2197,7 +2197,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
40428 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
40429
40430 mutex_lock(&cpufreq_governor_mutex);
40431 - list_del(&governor->governor_list);
40432 + pax_list_del(&governor->governor_list);
40433 mutex_unlock(&cpufreq_governor_mutex);
40434 return;
40435 }
40436 @@ -2412,7 +2412,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
40437 return NOTIFY_OK;
40438 }
40439
40440 -static struct notifier_block __refdata cpufreq_cpu_notifier = {
40441 +static struct notifier_block cpufreq_cpu_notifier = {
40442 .notifier_call = cpufreq_cpu_callback,
40443 };
40444
40445 @@ -2452,13 +2452,17 @@ int cpufreq_boost_trigger_state(int state)
40446 return 0;
40447
40448 write_lock_irqsave(&cpufreq_driver_lock, flags);
40449 - cpufreq_driver->boost_enabled = state;
40450 + pax_open_kernel();
40451 + *(bool *)&cpufreq_driver->boost_enabled = state;
40452 + pax_close_kernel();
40453 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
40454
40455 ret = cpufreq_driver->set_boost(state);
40456 if (ret) {
40457 write_lock_irqsave(&cpufreq_driver_lock, flags);
40458 - cpufreq_driver->boost_enabled = !state;
40459 + pax_open_kernel();
40460 + *(bool *)&cpufreq_driver->boost_enabled = !state;
40461 + pax_close_kernel();
40462 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
40463
40464 pr_err("%s: Cannot %s BOOST\n",
40465 @@ -2523,16 +2527,22 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
40466 cpufreq_driver = driver_data;
40467 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
40468
40469 - if (driver_data->setpolicy)
40470 - driver_data->flags |= CPUFREQ_CONST_LOOPS;
40471 + if (driver_data->setpolicy) {
40472 + pax_open_kernel();
40473 + *(u8 *)&driver_data->flags |= CPUFREQ_CONST_LOOPS;
40474 + pax_close_kernel();
40475 + }
40476
40477 if (cpufreq_boost_supported()) {
40478 /*
40479 * Check if driver provides function to enable boost -
40480 * if not, use cpufreq_boost_set_sw as default
40481 */
40482 - if (!cpufreq_driver->set_boost)
40483 - cpufreq_driver->set_boost = cpufreq_boost_set_sw;
40484 + if (!cpufreq_driver->set_boost) {
40485 + pax_open_kernel();
40486 + *(void **)&cpufreq_driver->set_boost = cpufreq_boost_set_sw;
40487 + pax_close_kernel();
40488 + }
40489
40490 ret = cpufreq_sysfs_create_file(&boost.attr);
40491 if (ret) {
40492 diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
40493 index 57a39f8..feb9c73 100644
40494 --- a/drivers/cpufreq/cpufreq_governor.c
40495 +++ b/drivers/cpufreq/cpufreq_governor.c
40496 @@ -378,7 +378,7 @@ static int cpufreq_governor_start(struct cpufreq_policy *policy,
40497 cs_dbs_info->enable = 1;
40498 cs_dbs_info->requested_freq = policy->cur;
40499 } else {
40500 - struct od_ops *od_ops = cdata->gov_ops;
40501 + const struct od_ops *od_ops = cdata->gov_ops;
40502 struct od_cpu_dbs_info_s *od_dbs_info = cdata->get_cpu_dbs_info_s(cpu);
40503
40504 od_dbs_info->rate_mult = 1;
40505 diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h
40506 index 34736f5..da8cf4a 100644
40507 --- a/drivers/cpufreq/cpufreq_governor.h
40508 +++ b/drivers/cpufreq/cpufreq_governor.h
40509 @@ -212,7 +212,7 @@ struct common_dbs_data {
40510 void (*exit)(struct dbs_data *dbs_data, bool notify);
40511
40512 /* Governor specific ops, see below */
40513 - void *gov_ops;
40514 + const void *gov_ops;
40515
40516 /*
40517 * Protects governor's data (struct dbs_data and struct common_dbs_data)
40518 @@ -234,7 +234,7 @@ struct od_ops {
40519 unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy,
40520 unsigned int freq_next, unsigned int relation);
40521 void (*freq_increase)(struct cpufreq_policy *policy, unsigned int freq);
40522 -};
40523 +} __no_const;
40524
40525 static inline int delay_for_sampling_rate(unsigned int sampling_rate)
40526 {
40527 diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
40528 index 3c1e10f..02f17af 100644
40529 --- a/drivers/cpufreq/cpufreq_ondemand.c
40530 +++ b/drivers/cpufreq/cpufreq_ondemand.c
40531 @@ -523,7 +523,7 @@ static void od_exit(struct dbs_data *dbs_data, bool notify)
40532
40533 define_get_cpu_dbs_routines(od_cpu_dbs_info);
40534
40535 -static struct od_ops od_ops = {
40536 +static struct od_ops od_ops __read_only = {
40537 .powersave_bias_init_cpu = ondemand_powersave_bias_init_cpu,
40538 .powersave_bias_target = generic_powersave_bias_target,
40539 .freq_increase = dbs_freq_increase,
40540 @@ -579,14 +579,18 @@ void od_register_powersave_bias_handler(unsigned int (*f)
40541 (struct cpufreq_policy *, unsigned int, unsigned int),
40542 unsigned int powersave_bias)
40543 {
40544 - od_ops.powersave_bias_target = f;
40545 + pax_open_kernel();
40546 + *(void **)&od_ops.powersave_bias_target = f;
40547 + pax_close_kernel();
40548 od_set_powersave_bias(powersave_bias);
40549 }
40550 EXPORT_SYMBOL_GPL(od_register_powersave_bias_handler);
40551
40552 void od_unregister_powersave_bias_handler(void)
40553 {
40554 - od_ops.powersave_bias_target = generic_powersave_bias_target;
40555 + pax_open_kernel();
40556 + *(void **)&od_ops.powersave_bias_target = generic_powersave_bias_target;
40557 + pax_close_kernel();
40558 od_set_powersave_bias(0);
40559 }
40560 EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler);
40561 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
40562 index fcb929e..e628818 100644
40563 --- a/drivers/cpufreq/intel_pstate.c
40564 +++ b/drivers/cpufreq/intel_pstate.c
40565 @@ -137,10 +137,10 @@ struct pstate_funcs {
40566 struct cpu_defaults {
40567 struct pstate_adjust_policy pid_policy;
40568 struct pstate_funcs funcs;
40569 -};
40570 +} __do_const;
40571
40572 static struct pstate_adjust_policy pid_params;
40573 -static struct pstate_funcs pstate_funcs;
40574 +static struct pstate_funcs *pstate_funcs;
40575 static int hwp_active;
40576
40577 struct perf_limits {
40578 @@ -726,18 +726,18 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate, bool force)
40579
40580 cpu->pstate.current_pstate = pstate;
40581
40582 - pstate_funcs.set(cpu, pstate);
40583 + pstate_funcs->set(cpu, pstate);
40584 }
40585
40586 static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
40587 {
40588 - cpu->pstate.min_pstate = pstate_funcs.get_min();
40589 - cpu->pstate.max_pstate = pstate_funcs.get_max();
40590 - cpu->pstate.turbo_pstate = pstate_funcs.get_turbo();
40591 - cpu->pstate.scaling = pstate_funcs.get_scaling();
40592 + cpu->pstate.min_pstate = pstate_funcs->get_min();
40593 + cpu->pstate.max_pstate = pstate_funcs->get_max();
40594 + cpu->pstate.turbo_pstate = pstate_funcs->get_turbo();
40595 + cpu->pstate.scaling = pstate_funcs->get_scaling();
40596
40597 - if (pstate_funcs.get_vid)
40598 - pstate_funcs.get_vid(cpu);
40599 + if (pstate_funcs->get_vid)
40600 + pstate_funcs->get_vid(cpu);
40601 intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate, false);
40602 }
40603
40604 @@ -1070,15 +1070,15 @@ static unsigned int force_load;
40605
40606 static int intel_pstate_msrs_not_valid(void)
40607 {
40608 - if (!pstate_funcs.get_max() ||
40609 - !pstate_funcs.get_min() ||
40610 - !pstate_funcs.get_turbo())
40611 + if (!pstate_funcs->get_max() ||
40612 + !pstate_funcs->get_min() ||
40613 + !pstate_funcs->get_turbo())
40614 return -ENODEV;
40615
40616 return 0;
40617 }
40618
40619 -static void copy_pid_params(struct pstate_adjust_policy *policy)
40620 +static void copy_pid_params(const struct pstate_adjust_policy *policy)
40621 {
40622 pid_params.sample_rate_ms = policy->sample_rate_ms;
40623 pid_params.p_gain_pct = policy->p_gain_pct;
40624 @@ -1090,12 +1090,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
40625
40626 static void copy_cpu_funcs(struct pstate_funcs *funcs)
40627 {
40628 - pstate_funcs.get_max = funcs->get_max;
40629 - pstate_funcs.get_min = funcs->get_min;
40630 - pstate_funcs.get_turbo = funcs->get_turbo;
40631 - pstate_funcs.get_scaling = funcs->get_scaling;
40632 - pstate_funcs.set = funcs->set;
40633 - pstate_funcs.get_vid = funcs->get_vid;
40634 + pstate_funcs = funcs;
40635 }
40636
40637 #if IS_ENABLED(CONFIG_ACPI)
40638 diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c
40639 index 5dd95da..abc3837 100644
40640 --- a/drivers/cpufreq/p4-clockmod.c
40641 +++ b/drivers/cpufreq/p4-clockmod.c
40642 @@ -134,10 +134,14 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c)
40643 case 0x0F: /* Core Duo */
40644 case 0x16: /* Celeron Core */
40645 case 0x1C: /* Atom */
40646 - p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40647 + pax_open_kernel();
40648 + *(u8 *)&p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40649 + pax_close_kernel();
40650 return speedstep_get_frequency(SPEEDSTEP_CPU_PCORE);
40651 case 0x0D: /* Pentium M (Dothan) */
40652 - p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40653 + pax_open_kernel();
40654 + *(u8 *)&p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40655 + pax_close_kernel();
40656 /* fall through */
40657 case 0x09: /* Pentium M (Banias) */
40658 return speedstep_get_frequency(SPEEDSTEP_CPU_PM);
40659 @@ -149,7 +153,9 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c)
40660
40661 /* on P-4s, the TSC runs with constant frequency independent whether
40662 * throttling is active or not. */
40663 - p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40664 + pax_open_kernel();
40665 + *(u8 *)&p4clockmod_driver.flags |= CPUFREQ_CONST_LOOPS;
40666 + pax_close_kernel();
40667
40668 if (speedstep_detect_processor() == SPEEDSTEP_CPU_P4M) {
40669 printk(KERN_WARNING PFX "Warning: Pentium 4-M detected. "
40670 diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c
40671 index 9bb42ba..b01b4a2 100644
40672 --- a/drivers/cpufreq/sparc-us3-cpufreq.c
40673 +++ b/drivers/cpufreq/sparc-us3-cpufreq.c
40674 @@ -18,14 +18,12 @@
40675 #include <asm/head.h>
40676 #include <asm/timer.h>
40677
40678 -static struct cpufreq_driver *cpufreq_us3_driver;
40679 -
40680 struct us3_freq_percpu_info {
40681 struct cpufreq_frequency_table table[4];
40682 };
40683
40684 /* Indexed by cpu number. */
40685 -static struct us3_freq_percpu_info *us3_freq_table;
40686 +static struct us3_freq_percpu_info us3_freq_table[NR_CPUS];
40687
40688 /* UltraSPARC-III has three dividers: 1, 2, and 32. These are controlled
40689 * in the Safari config register.
40690 @@ -156,16 +154,27 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
40691
40692 static int us3_freq_cpu_exit(struct cpufreq_policy *policy)
40693 {
40694 - if (cpufreq_us3_driver)
40695 - us3_freq_target(policy, 0);
40696 + us3_freq_target(policy, 0);
40697
40698 return 0;
40699 }
40700
40701 +static int __init us3_freq_init(void);
40702 +static void __exit us3_freq_exit(void);
40703 +
40704 +static struct cpufreq_driver cpufreq_us3_driver = {
40705 + .init = us3_freq_cpu_init,
40706 + .verify = cpufreq_generic_frequency_table_verify,
40707 + .target_index = us3_freq_target,
40708 + .get = us3_freq_get,
40709 + .exit = us3_freq_cpu_exit,
40710 + .name = "UltraSPARC-III",
40711 +
40712 +};
40713 +
40714 static int __init us3_freq_init(void)
40715 {
40716 unsigned long manuf, impl, ver;
40717 - int ret;
40718
40719 if (tlb_type != cheetah && tlb_type != cheetah_plus)
40720 return -ENODEV;
40721 @@ -178,55 +187,15 @@ static int __init us3_freq_init(void)
40722 (impl == CHEETAH_IMPL ||
40723 impl == CHEETAH_PLUS_IMPL ||
40724 impl == JAGUAR_IMPL ||
40725 - impl == PANTHER_IMPL)) {
40726 - struct cpufreq_driver *driver;
40727 -
40728 - ret = -ENOMEM;
40729 - driver = kzalloc(sizeof(*driver), GFP_KERNEL);
40730 - if (!driver)
40731 - goto err_out;
40732 -
40733 - us3_freq_table = kzalloc((NR_CPUS * sizeof(*us3_freq_table)),
40734 - GFP_KERNEL);
40735 - if (!us3_freq_table)
40736 - goto err_out;
40737 -
40738 - driver->init = us3_freq_cpu_init;
40739 - driver->verify = cpufreq_generic_frequency_table_verify;
40740 - driver->target_index = us3_freq_target;
40741 - driver->get = us3_freq_get;
40742 - driver->exit = us3_freq_cpu_exit;
40743 - strcpy(driver->name, "UltraSPARC-III");
40744 -
40745 - cpufreq_us3_driver = driver;
40746 - ret = cpufreq_register_driver(driver);
40747 - if (ret)
40748 - goto err_out;
40749 -
40750 - return 0;
40751 -
40752 -err_out:
40753 - if (driver) {
40754 - kfree(driver);
40755 - cpufreq_us3_driver = NULL;
40756 - }
40757 - kfree(us3_freq_table);
40758 - us3_freq_table = NULL;
40759 - return ret;
40760 - }
40761 + impl == PANTHER_IMPL))
40762 + return cpufreq_register_driver(&cpufreq_us3_driver);
40763
40764 return -ENODEV;
40765 }
40766
40767 static void __exit us3_freq_exit(void)
40768 {
40769 - if (cpufreq_us3_driver) {
40770 - cpufreq_unregister_driver(cpufreq_us3_driver);
40771 - kfree(cpufreq_us3_driver);
40772 - cpufreq_us3_driver = NULL;
40773 - kfree(us3_freq_table);
40774 - us3_freq_table = NULL;
40775 - }
40776 + cpufreq_unregister_driver(&cpufreq_us3_driver);
40777 }
40778
40779 MODULE_AUTHOR("David S. Miller <davem@redhat.com>");
40780 diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c
40781 index 7d4a315..21bb886 100644
40782 --- a/drivers/cpufreq/speedstep-centrino.c
40783 +++ b/drivers/cpufreq/speedstep-centrino.c
40784 @@ -351,8 +351,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy)
40785 !cpu_has(cpu, X86_FEATURE_EST))
40786 return -ENODEV;
40787
40788 - if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC))
40789 - centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
40790 + if (cpu_has(cpu, X86_FEATURE_CONSTANT_TSC)) {
40791 + pax_open_kernel();
40792 + *(u8 *)&centrino_driver.flags |= CPUFREQ_CONST_LOOPS;
40793 + pax_close_kernel();
40794 + }
40795
40796 if (policy->cpu != 0)
40797 return -ENODEV;
40798 diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
40799 index 5db1478..e90e25e 100644
40800 --- a/drivers/cpuidle/driver.c
40801 +++ b/drivers/cpuidle/driver.c
40802 @@ -193,7 +193,7 @@ static int poll_idle(struct cpuidle_device *dev,
40803
40804 static void poll_idle_init(struct cpuidle_driver *drv)
40805 {
40806 - struct cpuidle_state *state = &drv->states[0];
40807 + cpuidle_state_no_const *state = &drv->states[0];
40808
40809 snprintf(state->name, CPUIDLE_NAME_LEN, "POLL");
40810 snprintf(state->desc, CPUIDLE_DESC_LEN, "CPUIDLE CORE POLL IDLE");
40811 diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c
40812 index a5c111b..1113002 100644
40813 --- a/drivers/cpuidle/dt_idle_states.c
40814 +++ b/drivers/cpuidle/dt_idle_states.c
40815 @@ -21,7 +21,7 @@
40816
40817 #include "dt_idle_states.h"
40818
40819 -static int init_state_node(struct cpuidle_state *idle_state,
40820 +static int init_state_node(cpuidle_state_no_const *idle_state,
40821 const struct of_device_id *matches,
40822 struct device_node *state_node)
40823 {
40824 diff --git a/drivers/cpuidle/governor.c b/drivers/cpuidle/governor.c
40825 index fb9f511..213e6cc 100644
40826 --- a/drivers/cpuidle/governor.c
40827 +++ b/drivers/cpuidle/governor.c
40828 @@ -87,7 +87,7 @@ int cpuidle_register_governor(struct cpuidle_governor *gov)
40829 mutex_lock(&cpuidle_lock);
40830 if (__cpuidle_find_governor(gov->name) == NULL) {
40831 ret = 0;
40832 - list_add_tail(&gov->governor_list, &cpuidle_governors);
40833 + pax_list_add_tail((struct list_head *)&gov->governor_list, &cpuidle_governors);
40834 if (!cpuidle_curr_governor ||
40835 cpuidle_curr_governor->rating < gov->rating)
40836 cpuidle_switch_governor(gov);
40837 diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
40838 index 832a2c3..1794080 100644
40839 --- a/drivers/cpuidle/sysfs.c
40840 +++ b/drivers/cpuidle/sysfs.c
40841 @@ -135,7 +135,7 @@ static struct attribute *cpuidle_switch_attrs[] = {
40842 NULL
40843 };
40844
40845 -static struct attribute_group cpuidle_attr_group = {
40846 +static attribute_group_no_const cpuidle_attr_group = {
40847 .attrs = cpuidle_default_attrs,
40848 .name = "cpuidle",
40849 };
40850 diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
40851 index 8d2a772..33826c9 100644
40852 --- a/drivers/crypto/hifn_795x.c
40853 +++ b/drivers/crypto/hifn_795x.c
40854 @@ -51,7 +51,7 @@ module_param_string(hifn_pll_ref, hifn_pll_ref, sizeof(hifn_pll_ref), 0444);
40855 MODULE_PARM_DESC(hifn_pll_ref,
40856 "PLL reference clock (pci[freq] or ext[freq], default ext)");
40857
40858 -static atomic_t hifn_dev_number;
40859 +static atomic_unchecked_t hifn_dev_number;
40860
40861 #define ACRYPTO_OP_DECRYPT 0
40862 #define ACRYPTO_OP_ENCRYPT 1
40863 @@ -2577,7 +2577,7 @@ static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)
40864 goto err_out_disable_pci_device;
40865
40866 snprintf(name, sizeof(name), "hifn%d",
40867 - atomic_inc_return(&hifn_dev_number)-1);
40868 + atomic_inc_return_unchecked(&hifn_dev_number)-1);
40869
40870 err = pci_request_regions(pdev, name);
40871 if (err)
40872 diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
40873 index ca1b362..01cae6a 100644
40874 --- a/drivers/devfreq/devfreq.c
40875 +++ b/drivers/devfreq/devfreq.c
40876 @@ -672,7 +672,7 @@ int devfreq_add_governor(struct devfreq_governor *governor)
40877 goto err_out;
40878 }
40879
40880 - list_add(&governor->node, &devfreq_governor_list);
40881 + pax_list_add((struct list_head *)&governor->node, &devfreq_governor_list);
40882
40883 list_for_each_entry(devfreq, &devfreq_list, node) {
40884 int ret = 0;
40885 @@ -760,7 +760,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
40886 }
40887 }
40888
40889 - list_del(&governor->node);
40890 + pax_list_del((struct list_head *)&governor->node);
40891 err_out:
40892 mutex_unlock(&devfreq_list_lock);
40893
40894 diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
40895 index 10fcaba..326f709 100644
40896 --- a/drivers/dma/sh/shdma-base.c
40897 +++ b/drivers/dma/sh/shdma-base.c
40898 @@ -227,8 +227,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan)
40899 schan->slave_id = -EINVAL;
40900 }
40901
40902 - schan->desc = kcalloc(NR_DESCS_PER_CHANNEL,
40903 - sdev->desc_size, GFP_KERNEL);
40904 + schan->desc = kcalloc(sdev->desc_size,
40905 + NR_DESCS_PER_CHANNEL, GFP_KERNEL);
40906 if (!schan->desc) {
40907 ret = -ENOMEM;
40908 goto edescalloc;
40909 diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c
40910 index 11707df..2ea96f7 100644
40911 --- a/drivers/dma/sh/shdmac.c
40912 +++ b/drivers/dma/sh/shdmac.c
40913 @@ -513,7 +513,7 @@ static int sh_dmae_nmi_handler(struct notifier_block *self,
40914 return ret;
40915 }
40916
40917 -static struct notifier_block sh_dmae_nmi_notifier __read_mostly = {
40918 +static struct notifier_block sh_dmae_nmi_notifier = {
40919 .notifier_call = sh_dmae_nmi_handler,
40920
40921 /* Run before NMI debug handler and KGDB */
40922 diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
40923 index 592af5f..bb1d583 100644
40924 --- a/drivers/edac/edac_device.c
40925 +++ b/drivers/edac/edac_device.c
40926 @@ -477,9 +477,9 @@ void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev,
40927 */
40928 int edac_device_alloc_index(void)
40929 {
40930 - static atomic_t device_indexes = ATOMIC_INIT(0);
40931 + static atomic_unchecked_t device_indexes = ATOMIC_INIT(0);
40932
40933 - return atomic_inc_return(&device_indexes) - 1;
40934 + return atomic_inc_return_unchecked(&device_indexes) - 1;
40935 }
40936 EXPORT_SYMBOL_GPL(edac_device_alloc_index);
40937
40938 diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
40939 index 33df7d9..0794989 100644
40940 --- a/drivers/edac/edac_mc_sysfs.c
40941 +++ b/drivers/edac/edac_mc_sysfs.c
40942 @@ -154,7 +154,7 @@ static const char * const edac_caps[] = {
40943 struct dev_ch_attribute {
40944 struct device_attribute attr;
40945 int channel;
40946 -};
40947 +} __do_const;
40948
40949 #define DEVICE_CHANNEL(_name, _mode, _show, _store, _var) \
40950 static struct dev_ch_attribute dev_attr_legacy_##_name = \
40951 diff --git a/drivers/edac/edac_pci.c b/drivers/edac/edac_pci.c
40952 index 2cf44b4d..6dd2dc7 100644
40953 --- a/drivers/edac/edac_pci.c
40954 +++ b/drivers/edac/edac_pci.c
40955 @@ -29,7 +29,7 @@
40956
40957 static DEFINE_MUTEX(edac_pci_ctls_mutex);
40958 static LIST_HEAD(edac_pci_list);
40959 -static atomic_t pci_indexes = ATOMIC_INIT(0);
40960 +static atomic_unchecked_t pci_indexes = ATOMIC_INIT(0);
40961
40962 /*
40963 * edac_pci_alloc_ctl_info
40964 @@ -315,7 +315,7 @@ EXPORT_SYMBOL_GPL(edac_pci_reset_delay_period);
40965 */
40966 int edac_pci_alloc_index(void)
40967 {
40968 - return atomic_inc_return(&pci_indexes) - 1;
40969 + return atomic_inc_return_unchecked(&pci_indexes) - 1;
40970 }
40971 EXPORT_SYMBOL_GPL(edac_pci_alloc_index);
40972
40973 diff --git a/drivers/edac/edac_pci_sysfs.c b/drivers/edac/edac_pci_sysfs.c
40974 index 24d877f..4e30133 100644
40975 --- a/drivers/edac/edac_pci_sysfs.c
40976 +++ b/drivers/edac/edac_pci_sysfs.c
40977 @@ -23,8 +23,8 @@ static int edac_pci_log_pe = 1; /* log PCI parity errors */
40978 static int edac_pci_log_npe = 1; /* log PCI non-parity error errors */
40979 static int edac_pci_poll_msec = 1000; /* one second workq period */
40980
40981 -static atomic_t pci_parity_count = ATOMIC_INIT(0);
40982 -static atomic_t pci_nonparity_count = ATOMIC_INIT(0);
40983 +static atomic_unchecked_t pci_parity_count = ATOMIC_INIT(0);
40984 +static atomic_unchecked_t pci_nonparity_count = ATOMIC_INIT(0);
40985
40986 static struct kobject *edac_pci_top_main_kobj;
40987 static atomic_t edac_pci_sysfs_refcount = ATOMIC_INIT(0);
40988 @@ -232,7 +232,7 @@ struct edac_pci_dev_attribute {
40989 void *value;
40990 ssize_t(*show) (void *, char *);
40991 ssize_t(*store) (void *, const char *, size_t);
40992 -};
40993 +} __do_const;
40994
40995 /* Set of show/store abstract level functions for PCI Parity object */
40996 static ssize_t edac_pci_dev_show(struct kobject *kobj, struct attribute *attr,
40997 @@ -576,7 +576,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
40998 edac_printk(KERN_CRIT, EDAC_PCI,
40999 "Signaled System Error on %s\n",
41000 pci_name(dev));
41001 - atomic_inc(&pci_nonparity_count);
41002 + atomic_inc_unchecked(&pci_nonparity_count);
41003 }
41004
41005 if (status & (PCI_STATUS_PARITY)) {
41006 @@ -584,7 +584,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
41007 "Master Data Parity Error on %s\n",
41008 pci_name(dev));
41009
41010 - atomic_inc(&pci_parity_count);
41011 + atomic_inc_unchecked(&pci_parity_count);
41012 }
41013
41014 if (status & (PCI_STATUS_DETECTED_PARITY)) {
41015 @@ -592,7 +592,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
41016 "Detected Parity Error on %s\n",
41017 pci_name(dev));
41018
41019 - atomic_inc(&pci_parity_count);
41020 + atomic_inc_unchecked(&pci_parity_count);
41021 }
41022 }
41023
41024 @@ -615,7 +615,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
41025 edac_printk(KERN_CRIT, EDAC_PCI, "Bridge "
41026 "Signaled System Error on %s\n",
41027 pci_name(dev));
41028 - atomic_inc(&pci_nonparity_count);
41029 + atomic_inc_unchecked(&pci_nonparity_count);
41030 }
41031
41032 if (status & (PCI_STATUS_PARITY)) {
41033 @@ -623,7 +623,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
41034 "Master Data Parity Error on "
41035 "%s\n", pci_name(dev));
41036
41037 - atomic_inc(&pci_parity_count);
41038 + atomic_inc_unchecked(&pci_parity_count);
41039 }
41040
41041 if (status & (PCI_STATUS_DETECTED_PARITY)) {
41042 @@ -631,7 +631,7 @@ static void edac_pci_dev_parity_test(struct pci_dev *dev)
41043 "Detected Parity Error on %s\n",
41044 pci_name(dev));
41045
41046 - atomic_inc(&pci_parity_count);
41047 + atomic_inc_unchecked(&pci_parity_count);
41048 }
41049 }
41050 }
41051 @@ -669,7 +669,7 @@ void edac_pci_do_parity_check(void)
41052 if (!check_pci_errors)
41053 return;
41054
41055 - before_count = atomic_read(&pci_parity_count);
41056 + before_count = atomic_read_unchecked(&pci_parity_count);
41057
41058 /* scan all PCI devices looking for a Parity Error on devices and
41059 * bridges.
41060 @@ -681,7 +681,7 @@ void edac_pci_do_parity_check(void)
41061 /* Only if operator has selected panic on PCI Error */
41062 if (edac_pci_get_panic_on_pe()) {
41063 /* If the count is different 'after' from 'before' */
41064 - if (before_count != atomic_read(&pci_parity_count))
41065 + if (before_count != atomic_read_unchecked(&pci_parity_count))
41066 panic("EDAC: PCI Parity Error");
41067 }
41068 }
41069 diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
41070 index c2359a1..8bd119d 100644
41071 --- a/drivers/edac/mce_amd.h
41072 +++ b/drivers/edac/mce_amd.h
41073 @@ -74,7 +74,7 @@ struct amd_decoder_ops {
41074 bool (*mc0_mce)(u16, u8);
41075 bool (*mc1_mce)(u16, u8);
41076 bool (*mc2_mce)(u16, u8);
41077 -};
41078 +} __no_const;
41079
41080 void amd_report_gart_errors(bool);
41081 void amd_register_ecc_decoder(void (*f)(int, struct mce *));
41082 diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c
41083 index 57ea7f4..af06b76 100644
41084 --- a/drivers/firewire/core-card.c
41085 +++ b/drivers/firewire/core-card.c
41086 @@ -528,9 +528,9 @@ void fw_card_initialize(struct fw_card *card,
41087 const struct fw_card_driver *driver,
41088 struct device *device)
41089 {
41090 - static atomic_t index = ATOMIC_INIT(-1);
41091 + static atomic_unchecked_t index = ATOMIC_INIT(-1);
41092
41093 - card->index = atomic_inc_return(&index);
41094 + card->index = atomic_inc_return_unchecked(&index);
41095 card->driver = driver;
41096 card->device = device;
41097 card->current_tlabel = 0;
41098 @@ -680,7 +680,7 @@ EXPORT_SYMBOL_GPL(fw_card_release);
41099
41100 void fw_core_remove_card(struct fw_card *card)
41101 {
41102 - struct fw_card_driver dummy_driver = dummy_driver_template;
41103 + fw_card_driver_no_const dummy_driver = dummy_driver_template;
41104
41105 card->driver->update_phy_reg(card, 4,
41106 PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
41107 diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c
41108 index f9e3aee..269dbdb 100644
41109 --- a/drivers/firewire/core-device.c
41110 +++ b/drivers/firewire/core-device.c
41111 @@ -256,7 +256,7 @@ EXPORT_SYMBOL(fw_device_enable_phys_dma);
41112 struct config_rom_attribute {
41113 struct device_attribute attr;
41114 u32 key;
41115 -};
41116 +} __do_const;
41117
41118 static ssize_t show_immediate(struct device *dev,
41119 struct device_attribute *dattr, char *buf)
41120 diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c
41121 index d6a09b9..18e90dd 100644
41122 --- a/drivers/firewire/core-transaction.c
41123 +++ b/drivers/firewire/core-transaction.c
41124 @@ -38,6 +38,7 @@
41125 #include <linux/timer.h>
41126 #include <linux/types.h>
41127 #include <linux/workqueue.h>
41128 +#include <linux/sched.h>
41129
41130 #include <asm/byteorder.h>
41131
41132 diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
41133 index e1480ff6..1a429bd 100644
41134 --- a/drivers/firewire/core.h
41135 +++ b/drivers/firewire/core.h
41136 @@ -111,6 +111,7 @@ struct fw_card_driver {
41137
41138 int (*stop_iso)(struct fw_iso_context *ctx);
41139 };
41140 +typedef struct fw_card_driver __no_const fw_card_driver_no_const;
41141
41142 void fw_card_initialize(struct fw_card *card,
41143 const struct fw_card_driver *driver, struct device *device);
41144 diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
41145 index f51d376..b118e40 100644
41146 --- a/drivers/firewire/ohci.c
41147 +++ b/drivers/firewire/ohci.c
41148 @@ -2049,10 +2049,12 @@ static void bus_reset_work(struct work_struct *work)
41149 be32_to_cpu(ohci->next_header));
41150 }
41151
41152 +#ifndef CONFIG_GRKERNSEC
41153 if (param_remote_dma) {
41154 reg_write(ohci, OHCI1394_PhyReqFilterHiSet, ~0);
41155 reg_write(ohci, OHCI1394_PhyReqFilterLoSet, ~0);
41156 }
41157 +#endif
41158
41159 spin_unlock_irq(&ohci->lock);
41160
41161 @@ -2584,8 +2586,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
41162 unsigned long flags;
41163 int n, ret = 0;
41164
41165 +#ifndef CONFIG_GRKERNSEC
41166 if (param_remote_dma)
41167 return 0;
41168 +#endif
41169
41170 /*
41171 * FIXME: Make sure this bitmask is cleared when we clear the busReset
41172 diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
41173 index 94a58a0..f5eba42 100644
41174 --- a/drivers/firmware/dmi-id.c
41175 +++ b/drivers/firmware/dmi-id.c
41176 @@ -16,7 +16,7 @@
41177 struct dmi_device_attribute{
41178 struct device_attribute dev_attr;
41179 int field;
41180 -};
41181 +} __do_const;
41182 #define to_dmi_dev_attr(_dev_attr) \
41183 container_of(_dev_attr, struct dmi_device_attribute, dev_attr)
41184
41185 diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
41186 index ac1ce4a..321745e 100644
41187 --- a/drivers/firmware/dmi_scan.c
41188 +++ b/drivers/firmware/dmi_scan.c
41189 @@ -690,14 +690,18 @@ static int __init dmi_init(void)
41190 if (!dmi_table)
41191 goto err_tables;
41192
41193 - bin_attr_smbios_entry_point.size = smbios_entry_point_size;
41194 - bin_attr_smbios_entry_point.private = smbios_entry_point;
41195 + pax_open_kernel();
41196 + *(size_t *)&bin_attr_smbios_entry_point.size = smbios_entry_point_size;
41197 + *(void **)&bin_attr_smbios_entry_point.private = smbios_entry_point;
41198 + pax_close_kernel();
41199 ret = sysfs_create_bin_file(tables_kobj, &bin_attr_smbios_entry_point);
41200 if (ret)
41201 goto err_unmap;
41202
41203 - bin_attr_DMI.size = dmi_len;
41204 - bin_attr_DMI.private = dmi_table;
41205 + pax_open_kernel();
41206 + *(size_t *)&bin_attr_DMI.size = dmi_len;
41207 + *(void **)&bin_attr_DMI.private = dmi_table;
41208 + pax_close_kernel();
41209 ret = sysfs_create_bin_file(tables_kobj, &bin_attr_DMI);
41210 if (!ret)
41211 return 0;
41212 diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
41213 index d425374..1da1716 100644
41214 --- a/drivers/firmware/efi/cper.c
41215 +++ b/drivers/firmware/efi/cper.c
41216 @@ -44,12 +44,12 @@ static char rcd_decode_str[CPER_REC_LEN];
41217 */
41218 u64 cper_next_record_id(void)
41219 {
41220 - static atomic64_t seq;
41221 + static atomic64_unchecked_t seq;
41222
41223 - if (!atomic64_read(&seq))
41224 - atomic64_set(&seq, ((u64)get_seconds()) << 32);
41225 + if (!atomic64_read_unchecked(&seq))
41226 + atomic64_set_unchecked(&seq, ((u64)get_seconds()) << 32);
41227
41228 - return atomic64_inc_return(&seq);
41229 + return atomic64_inc_return_unchecked(&seq);
41230 }
41231 EXPORT_SYMBOL_GPL(cper_next_record_id);
41232
41233 diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
41234 index d6144e3..23f9686 100644
41235 --- a/drivers/firmware/efi/efi.c
41236 +++ b/drivers/firmware/efi/efi.c
41237 @@ -170,14 +170,16 @@ static struct attribute_group efi_subsys_attr_group = {
41238 };
41239
41240 static struct efivars generic_efivars;
41241 -static struct efivar_operations generic_ops;
41242 +static efivar_operations_no_const generic_ops __read_only;
41243
41244 static int generic_ops_register(void)
41245 {
41246 - generic_ops.get_variable = efi.get_variable;
41247 - generic_ops.set_variable = efi.set_variable;
41248 - generic_ops.get_next_variable = efi.get_next_variable;
41249 - generic_ops.query_variable_store = efi_query_variable_store;
41250 + pax_open_kernel();
41251 + *(void **)&generic_ops.get_variable = efi.get_variable;
41252 + *(void **)&generic_ops.set_variable = efi.set_variable;
41253 + *(void **)&generic_ops.get_next_variable = efi.get_next_variable;
41254 + *(void **)&generic_ops.query_variable_store = efi_query_variable_store;
41255 + pax_close_kernel();
41256
41257 return efivars_register(&generic_efivars, &generic_ops, efi_kobj);
41258 }
41259 diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
41260 index 756eca8..2336d08 100644
41261 --- a/drivers/firmware/efi/efivars.c
41262 +++ b/drivers/firmware/efi/efivars.c
41263 @@ -590,7 +590,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
41264 static int
41265 create_efivars_bin_attributes(void)
41266 {
41267 - struct bin_attribute *attr;
41268 + bin_attribute_no_const *attr;
41269 int error;
41270
41271 /* new_var */
41272 diff --git a/drivers/firmware/efi/runtime-map.c b/drivers/firmware/efi/runtime-map.c
41273 index 5c55227..97f4978 100644
41274 --- a/drivers/firmware/efi/runtime-map.c
41275 +++ b/drivers/firmware/efi/runtime-map.c
41276 @@ -97,7 +97,7 @@ static void map_release(struct kobject *kobj)
41277 kfree(entry);
41278 }
41279
41280 -static struct kobj_type __refdata map_ktype = {
41281 +static const struct kobj_type __refconst map_ktype = {
41282 .sysfs_ops = &map_attr_ops,
41283 .default_attrs = def_attrs,
41284 .release = map_release,
41285 diff --git a/drivers/firmware/google/gsmi.c b/drivers/firmware/google/gsmi.c
41286 index f1ab05e..ab51228 100644
41287 --- a/drivers/firmware/google/gsmi.c
41288 +++ b/drivers/firmware/google/gsmi.c
41289 @@ -709,7 +709,7 @@ static u32 __init hash_oem_table_id(char s[8])
41290 return local_hash_64(input, 32);
41291 }
41292
41293 -static struct dmi_system_id gsmi_dmi_table[] __initdata = {
41294 +static const struct dmi_system_id gsmi_dmi_table[] __initconst = {
41295 {
41296 .ident = "Google Board",
41297 .matches = {
41298 diff --git a/drivers/firmware/google/memconsole.c b/drivers/firmware/google/memconsole.c
41299 index 2f569aa..26e4f39 100644
41300 --- a/drivers/firmware/google/memconsole.c
41301 +++ b/drivers/firmware/google/memconsole.c
41302 @@ -136,7 +136,7 @@ static bool __init found_memconsole(void)
41303 return false;
41304 }
41305
41306 -static struct dmi_system_id memconsole_dmi_table[] __initdata = {
41307 +static const struct dmi_system_id memconsole_dmi_table[] __initconst = {
41308 {
41309 .ident = "Google Board",
41310 .matches = {
41311 @@ -155,7 +155,10 @@ static int __init memconsole_init(void)
41312 if (!found_memconsole())
41313 return -ENODEV;
41314
41315 - memconsole_bin_attr.size = memconsole_length;
41316 + pax_open_kernel();
41317 + *(size_t *)&memconsole_bin_attr.size = memconsole_length;
41318 + pax_close_kernel();
41319 +
41320 return sysfs_create_bin_file(firmware_kobj, &memconsole_bin_attr);
41321 }
41322
41323 diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
41324 index 5de3ed2..d839c56 100644
41325 --- a/drivers/firmware/memmap.c
41326 +++ b/drivers/firmware/memmap.c
41327 @@ -124,7 +124,7 @@ static void __meminit release_firmware_map_entry(struct kobject *kobj)
41328 kfree(entry);
41329 }
41330
41331 -static struct kobj_type __refdata memmap_ktype = {
41332 +static const struct kobj_type __refconst memmap_ktype = {
41333 .release = release_firmware_map_entry,
41334 .sysfs_ops = &memmap_attr_ops,
41335 .default_attrs = def_attrs,
41336 diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
41337 index c246ac3..6867ca6 100644
41338 --- a/drivers/gpio/gpio-davinci.c
41339 +++ b/drivers/gpio/gpio-davinci.c
41340 @@ -442,9 +442,9 @@ static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
41341 return &gpio_unbanked.chip;
41342 };
41343
41344 -static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
41345 +static irq_chip_no_const *keystone_gpio_get_irq_chip(unsigned int irq)
41346 {
41347 - static struct irq_chip gpio_unbanked;
41348 + static irq_chip_no_const gpio_unbanked;
41349
41350 gpio_unbanked = *irq_get_chip(irq);
41351 return &gpio_unbanked;
41352 @@ -474,7 +474,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
41353 struct davinci_gpio_regs __iomem *g;
41354 struct irq_domain *irq_domain = NULL;
41355 const struct of_device_id *match;
41356 - struct irq_chip *irq_chip;
41357 + irq_chip_no_const *irq_chip;
41358 gpio_get_irq_chip_cb_t gpio_get_irq_chip;
41359
41360 /*
41361 diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c
41362 index fbf2873..0a37114 100644
41363 --- a/drivers/gpio/gpio-em.c
41364 +++ b/drivers/gpio/gpio-em.c
41365 @@ -278,7 +278,7 @@ static int em_gio_probe(struct platform_device *pdev)
41366 struct em_gio_priv *p;
41367 struct resource *io[2], *irq[2];
41368 struct gpio_chip *gpio_chip;
41369 - struct irq_chip *irq_chip;
41370 + irq_chip_no_const *irq_chip;
41371 const char *name = dev_name(&pdev->dev);
41372 int ret;
41373
41374 diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c
41375 index 4ba7ed5..1536b5d 100644
41376 --- a/drivers/gpio/gpio-ich.c
41377 +++ b/drivers/gpio/gpio-ich.c
41378 @@ -94,7 +94,7 @@ struct ichx_desc {
41379 * this option allows driver caching written output values
41380 */
41381 bool use_outlvl_cache;
41382 -};
41383 +} __do_const;
41384
41385 static struct {
41386 spinlock_t lock;
41387 diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
41388 index 61a731f..d5ca6cb 100644
41389 --- a/drivers/gpio/gpio-omap.c
41390 +++ b/drivers/gpio/gpio-omap.c
41391 @@ -1067,7 +1067,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank)
41392 dev_err(bank->dev, "Could not get gpio dbck\n");
41393 }
41394
41395 -static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
41396 +static int omap_gpio_chip_init(struct gpio_bank *bank, irq_chip_no_const *irqc)
41397 {
41398 static int gpio;
41399 int irq_base = 0;
41400 @@ -1150,7 +1150,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
41401 const struct omap_gpio_platform_data *pdata;
41402 struct resource *res;
41403 struct gpio_bank *bank;
41404 - struct irq_chip *irqc;
41405 + irq_chip_no_const *irqc;
41406 int ret;
41407
41408 match = of_match_device(of_match_ptr(omap_gpio_match), dev);
41409 diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c
41410 index 1e14a6c..0442450 100644
41411 --- a/drivers/gpio/gpio-rcar.c
41412 +++ b/drivers/gpio/gpio-rcar.c
41413 @@ -379,7 +379,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
41414 struct gpio_rcar_priv *p;
41415 struct resource *io, *irq;
41416 struct gpio_chip *gpio_chip;
41417 - struct irq_chip *irq_chip;
41418 + irq_chip_no_const *irq_chip;
41419 struct device *dev = &pdev->dev;
41420 const char *name = dev_name(dev);
41421 int ret;
41422 diff --git a/drivers/gpio/gpio-vr41xx.c b/drivers/gpio/gpio-vr41xx.c
41423 index c1caa45..f0f97d2 100644
41424 --- a/drivers/gpio/gpio-vr41xx.c
41425 +++ b/drivers/gpio/gpio-vr41xx.c
41426 @@ -224,7 +224,7 @@ static int giu_get_irq(unsigned int irq)
41427 printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n",
41428 maskl, pendl, maskh, pendh);
41429
41430 - atomic_inc(&irq_err_count);
41431 + atomic_inc_unchecked(&irq_err_count);
41432
41433 return -EINVAL;
41434 }
41435 diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
41436 index bf4bd1d..51154a3 100644
41437 --- a/drivers/gpio/gpiolib.c
41438 +++ b/drivers/gpio/gpiolib.c
41439 @@ -569,8 +569,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
41440 }
41441
41442 if (gpiochip->irqchip) {
41443 - gpiochip->irqchip->irq_request_resources = NULL;
41444 - gpiochip->irqchip->irq_release_resources = NULL;
41445 + pax_open_kernel();
41446 + *(void **)&gpiochip->irqchip->irq_request_resources = NULL;
41447 + *(void **)&gpiochip->irqchip->irq_release_resources = NULL;
41448 + pax_close_kernel();
41449 gpiochip->irqchip = NULL;
41450 }
41451 }
41452 @@ -636,8 +638,11 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
41453 gpiochip->irqchip = NULL;
41454 return -EINVAL;
41455 }
41456 - irqchip->irq_request_resources = gpiochip_irq_reqres;
41457 - irqchip->irq_release_resources = gpiochip_irq_relres;
41458 +
41459 + pax_open_kernel();
41460 + *(void **)&irqchip->irq_request_resources = gpiochip_irq_reqres;
41461 + *(void **)&irqchip->irq_release_resources = gpiochip_irq_relres;
41462 + pax_close_kernel();
41463
41464 /*
41465 * Prepare the mapping since the irqchip shall be orthogonal to
41466 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
41467 index 99f158e..20b6c4c 100644
41468 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
41469 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
41470 @@ -1071,7 +1071,7 @@ static bool amdgpu_switcheroo_can_switch(struct pci_dev *pdev)
41471 * locking inversion with the driver load path. And the access here is
41472 * completely racy anyway. So don't bother with locking for now.
41473 */
41474 - return dev->open_count == 0;
41475 + return local_read(&dev->open_count) == 0;
41476 }
41477
41478 static const struct vga_switcheroo_client_ops amdgpu_switcheroo_ops = {
41479 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
41480 index c991973..8eb176b 100644
41481 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
41482 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
41483 @@ -419,7 +419,7 @@ static int kfd_ioctl_set_memory_policy(struct file *filep,
41484 (args->alternate_policy == KFD_IOC_CACHE_POLICY_COHERENT)
41485 ? cache_policy_coherent : cache_policy_noncoherent;
41486
41487 - if (!dev->dqm->ops.set_cache_memory_policy(dev->dqm,
41488 + if (!dev->dqm->ops->set_cache_memory_policy(dev->dqm,
41489 &pdd->qpd,
41490 default_policy,
41491 alternate_policy,
41492 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
41493 index 75312c8..e3684e6 100644
41494 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
41495 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
41496 @@ -293,7 +293,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
41497 goto device_queue_manager_error;
41498 }
41499
41500 - if (kfd->dqm->ops.start(kfd->dqm) != 0) {
41501 + if (kfd->dqm->ops->start(kfd->dqm) != 0) {
41502 dev_err(kfd_device,
41503 "Error starting queuen manager for device (%x:%x)\n",
41504 kfd->pdev->vendor, kfd->pdev->device);
41505 @@ -349,7 +349,7 @@ void kgd2kfd_suspend(struct kfd_dev *kfd)
41506 BUG_ON(kfd == NULL);
41507
41508 if (kfd->init_complete) {
41509 - kfd->dqm->ops.stop(kfd->dqm);
41510 + kfd->dqm->ops->stop(kfd->dqm);
41511 amd_iommu_set_invalidate_ctx_cb(kfd->pdev, NULL);
41512 amd_iommu_set_invalid_ppr_cb(kfd->pdev, NULL);
41513 amd_iommu_free_device(kfd->pdev);
41514 @@ -372,7 +372,7 @@ int kgd2kfd_resume(struct kfd_dev *kfd)
41515 amd_iommu_set_invalidate_ctx_cb(kfd->pdev,
41516 iommu_pasid_shutdown_callback);
41517 amd_iommu_set_invalid_ppr_cb(kfd->pdev, iommu_invalid_ppr_cb);
41518 - kfd->dqm->ops.start(kfd->dqm);
41519 + kfd->dqm->ops->start(kfd->dqm);
41520 }
41521
41522 return 0;
41523 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
41524 index 4bb7f42..320fcac 100644
41525 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
41526 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
41527 @@ -242,7 +242,7 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm,
41528
41529 BUG_ON(!dqm || !q || !qpd);
41530
41531 - mqd = dqm->ops.get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41532 + mqd = dqm->ops->get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41533 if (mqd == NULL)
41534 return -ENOMEM;
41535
41536 @@ -288,14 +288,14 @@ static int destroy_queue_nocpsch(struct device_queue_manager *dqm,
41537 mutex_lock(&dqm->lock);
41538
41539 if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE) {
41540 - mqd = dqm->ops.get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41541 + mqd = dqm->ops->get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41542 if (mqd == NULL) {
41543 retval = -ENOMEM;
41544 goto out;
41545 }
41546 deallocate_hqd(dqm, q);
41547 } else if (q->properties.type == KFD_QUEUE_TYPE_SDMA) {
41548 - mqd = dqm->ops.get_mqd_manager(dqm, KFD_MQD_TYPE_SDMA);
41549 + mqd = dqm->ops->get_mqd_manager(dqm, KFD_MQD_TYPE_SDMA);
41550 if (mqd == NULL) {
41551 retval = -ENOMEM;
41552 goto out;
41553 @@ -347,7 +347,7 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q)
41554 BUG_ON(!dqm || !q || !q->mqd);
41555
41556 mutex_lock(&dqm->lock);
41557 - mqd = dqm->ops.get_mqd_manager(dqm,
41558 + mqd = dqm->ops->get_mqd_manager(dqm,
41559 get_mqd_type_from_queue_type(q->properties.type));
41560 if (mqd == NULL) {
41561 mutex_unlock(&dqm->lock);
41562 @@ -414,7 +414,7 @@ static int register_process_nocpsch(struct device_queue_manager *dqm,
41563 mutex_lock(&dqm->lock);
41564 list_add(&n->list, &dqm->queues);
41565
41566 - retval = dqm->ops_asic_specific.register_process(dqm, qpd);
41567 + retval = dqm->ops_asic_specific->register_process(dqm, qpd);
41568
41569 dqm->processes_count++;
41570
41571 @@ -502,7 +502,7 @@ int init_pipelines(struct device_queue_manager *dqm,
41572
41573 memset(hpdptr, 0, CIK_HPD_EOP_BYTES * pipes_num);
41574
41575 - mqd = dqm->ops.get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41576 + mqd = dqm->ops->get_mqd_manager(dqm, KFD_MQD_TYPE_COMPUTE);
41577 if (mqd == NULL) {
41578 kfd_gtt_sa_free(dqm->dev, dqm->pipeline_mem);
41579 return -ENOMEM;
41580 @@ -635,7 +635,7 @@ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
41581 struct mqd_manager *mqd;
41582 int retval;
41583
41584 - mqd = dqm->ops.get_mqd_manager(dqm, KFD_MQD_TYPE_SDMA);
41585 + mqd = dqm->ops->get_mqd_manager(dqm, KFD_MQD_TYPE_SDMA);
41586 if (!mqd)
41587 return -ENOMEM;
41588
41589 @@ -650,7 +650,7 @@ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
41590 pr_debug(" sdma queue id: %d\n", q->properties.sdma_queue_id);
41591 pr_debug(" sdma engine id: %d\n", q->properties.sdma_engine_id);
41592
41593 - dqm->ops_asic_specific.init_sdma_vm(dqm, q, qpd);
41594 + dqm->ops_asic_specific->init_sdma_vm(dqm, q, qpd);
41595 retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
41596 &q->gart_mqd_addr, &q->properties);
41597 if (retval != 0) {
41598 @@ -712,7 +712,7 @@ static int initialize_cpsch(struct device_queue_manager *dqm)
41599 dqm->queue_count = dqm->processes_count = 0;
41600 dqm->sdma_queue_count = 0;
41601 dqm->active_runlist = false;
41602 - retval = dqm->ops_asic_specific.initialize(dqm);
41603 + retval = dqm->ops_asic_specific->initialize(dqm);
41604 if (retval != 0)
41605 goto fail_init_pipelines;
41606
41607 @@ -879,7 +879,7 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,
41608 if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
41609 select_sdma_engine_id(q);
41610
41611 - mqd = dqm->ops.get_mqd_manager(dqm,
41612 + mqd = dqm->ops->get_mqd_manager(dqm,
41613 get_mqd_type_from_queue_type(q->properties.type));
41614
41615 if (mqd == NULL) {
41616 @@ -887,7 +887,7 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,
41617 return -ENOMEM;
41618 }
41619
41620 - dqm->ops_asic_specific.init_sdma_vm(dqm, q, qpd);
41621 + dqm->ops_asic_specific->init_sdma_vm(dqm, q, qpd);
41622 retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
41623 &q->gart_mqd_addr, &q->properties);
41624 if (retval != 0)
41625 @@ -1060,7 +1060,7 @@ static int destroy_queue_cpsch(struct device_queue_manager *dqm,
41626
41627 }
41628
41629 - mqd = dqm->ops.get_mqd_manager(dqm,
41630 + mqd = dqm->ops->get_mqd_manager(dqm,
41631 get_mqd_type_from_queue_type(q->properties.type));
41632 if (!mqd) {
41633 retval = -ENOMEM;
41634 @@ -1149,7 +1149,7 @@ static bool set_cache_memory_policy(struct device_queue_manager *dqm,
41635 qpd->sh_mem_ape1_limit = limit >> 16;
41636 }
41637
41638 - retval = dqm->ops_asic_specific.set_cache_memory_policy(
41639 + retval = dqm->ops_asic_specific->set_cache_memory_policy(
41640 dqm,
41641 qpd,
41642 default_policy,
41643 @@ -1172,6 +1172,36 @@ out:
41644 return false;
41645 }
41646
41647 +static const struct device_queue_manager_ops cp_dqm_ops = {
41648 + .create_queue = create_queue_cpsch,
41649 + .initialize = initialize_cpsch,
41650 + .start = start_cpsch,
41651 + .stop = stop_cpsch,
41652 + .destroy_queue = destroy_queue_cpsch,
41653 + .update_queue = update_queue,
41654 + .get_mqd_manager = get_mqd_manager_nocpsch,
41655 + .register_process = register_process_nocpsch,
41656 + .unregister_process = unregister_process_nocpsch,
41657 + .uninitialize = uninitialize_nocpsch,
41658 + .create_kernel_queue = create_kernel_queue_cpsch,
41659 + .destroy_kernel_queue = destroy_kernel_queue_cpsch,
41660 + .set_cache_memory_policy = set_cache_memory_policy,
41661 +};
41662 +
41663 +static const struct device_queue_manager_ops no_cp_dqm_ops = {
41664 + .start = start_nocpsch,
41665 + .stop = stop_nocpsch,
41666 + .create_queue = create_queue_nocpsch,
41667 + .destroy_queue = destroy_queue_nocpsch,
41668 + .update_queue = update_queue,
41669 + .get_mqd_manager = get_mqd_manager_nocpsch,
41670 + .register_process = register_process_nocpsch,
41671 + .unregister_process = unregister_process_nocpsch,
41672 + .initialize = initialize_nocpsch,
41673 + .uninitialize = uninitialize_nocpsch,
41674 + .set_cache_memory_policy = set_cache_memory_policy,
41675 +};
41676 +
41677 struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
41678 {
41679 struct device_queue_manager *dqm;
41680 @@ -1189,33 +1219,11 @@ struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
41681 case KFD_SCHED_POLICY_HWS:
41682 case KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION:
41683 /* initialize dqm for cp scheduling */
41684 - dqm->ops.create_queue = create_queue_cpsch;
41685 - dqm->ops.initialize = initialize_cpsch;
41686 - dqm->ops.start = start_cpsch;
41687 - dqm->ops.stop = stop_cpsch;
41688 - dqm->ops.destroy_queue = destroy_queue_cpsch;
41689 - dqm->ops.update_queue = update_queue;
41690 - dqm->ops.get_mqd_manager = get_mqd_manager_nocpsch;
41691 - dqm->ops.register_process = register_process_nocpsch;
41692 - dqm->ops.unregister_process = unregister_process_nocpsch;
41693 - dqm->ops.uninitialize = uninitialize_nocpsch;
41694 - dqm->ops.create_kernel_queue = create_kernel_queue_cpsch;
41695 - dqm->ops.destroy_kernel_queue = destroy_kernel_queue_cpsch;
41696 - dqm->ops.set_cache_memory_policy = set_cache_memory_policy;
41697 + dqm->ops = &cp_dqm_ops;
41698 break;
41699 case KFD_SCHED_POLICY_NO_HWS:
41700 /* initialize dqm for no cp scheduling */
41701 - dqm->ops.start = start_nocpsch;
41702 - dqm->ops.stop = stop_nocpsch;
41703 - dqm->ops.create_queue = create_queue_nocpsch;
41704 - dqm->ops.destroy_queue = destroy_queue_nocpsch;
41705 - dqm->ops.update_queue = update_queue;
41706 - dqm->ops.get_mqd_manager = get_mqd_manager_nocpsch;
41707 - dqm->ops.register_process = register_process_nocpsch;
41708 - dqm->ops.unregister_process = unregister_process_nocpsch;
41709 - dqm->ops.initialize = initialize_nocpsch;
41710 - dqm->ops.uninitialize = uninitialize_nocpsch;
41711 - dqm->ops.set_cache_memory_policy = set_cache_memory_policy;
41712 + dqm->ops = &no_cp_dqm_ops;
41713 break;
41714 default:
41715 BUG();
41716 @@ -1224,15 +1232,15 @@ struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
41717
41718 switch (dev->device_info->asic_family) {
41719 case CHIP_CARRIZO:
41720 - device_queue_manager_init_vi(&dqm->ops_asic_specific);
41721 + device_queue_manager_init_vi(dqm);
41722 break;
41723
41724 case CHIP_KAVERI:
41725 - device_queue_manager_init_cik(&dqm->ops_asic_specific);
41726 + device_queue_manager_init_cik(dqm);
41727 break;
41728 }
41729
41730 - if (dqm->ops.initialize(dqm) != 0) {
41731 + if (dqm->ops->initialize(dqm) != 0) {
41732 kfree(dqm);
41733 return NULL;
41734 }
41735 @@ -1244,6 +1252,6 @@ void device_queue_manager_uninit(struct device_queue_manager *dqm)
41736 {
41737 BUG_ON(!dqm);
41738
41739 - dqm->ops.uninitialize(dqm);
41740 + dqm->ops->uninitialize(dqm);
41741 kfree(dqm);
41742 }
41743 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
41744 index ec4036a..3ef0646 100644
41745 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
41746 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
41747 @@ -154,8 +154,8 @@ struct device_queue_manager_asic_ops {
41748 */
41749
41750 struct device_queue_manager {
41751 - struct device_queue_manager_ops ops;
41752 - struct device_queue_manager_asic_ops ops_asic_specific;
41753 + struct device_queue_manager_ops *ops;
41754 + struct device_queue_manager_asic_ops *ops_asic_specific;
41755
41756 struct mqd_manager *mqds[KFD_MQD_TYPE_MAX];
41757 struct packet_manager packets;
41758 @@ -178,8 +178,8 @@ struct device_queue_manager {
41759 bool active_runlist;
41760 };
41761
41762 -void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops);
41763 -void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops);
41764 +void device_queue_manager_init_cik(struct device_queue_manager *dqm);
41765 +void device_queue_manager_init_vi(struct device_queue_manager *dqm);
41766 void program_sh_mem_settings(struct device_queue_manager *dqm,
41767 struct qcm_process_device *qpd);
41768 int init_pipelines(struct device_queue_manager *dqm,
41769 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
41770 index 9ce8a20..1ca4e22 100644
41771 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
41772 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
41773 @@ -36,12 +36,16 @@ static int initialize_cpsch_cik(struct device_queue_manager *dqm);
41774 static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
41775 struct qcm_process_device *qpd);
41776
41777 -void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops)
41778 +static const struct device_queue_manager_asic_ops cik_dqm_asic_ops = {
41779 + .set_cache_memory_policy = set_cache_memory_policy_cik,
41780 + .register_process = register_process_cik,
41781 + .initialize = initialize_cpsch_cik,
41782 + .init_sdma_vm = init_sdma_vm,
41783 +};
41784 +
41785 +void device_queue_manager_init_cik(struct device_queue_manager *dqm)
41786 {
41787 - ops->set_cache_memory_policy = set_cache_memory_policy_cik;
41788 - ops->register_process = register_process_cik;
41789 - ops->initialize = initialize_cpsch_cik;
41790 - ops->init_sdma_vm = init_sdma_vm;
41791 + dqm->ops_asic_specific = &cik_dqm_asic_ops;
41792 }
41793
41794 static uint32_t compute_sh_mem_bases_64bit(unsigned int top_address_nybble)
41795 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
41796 index 4c15212..61bfab8 100644
41797 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
41798 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
41799 @@ -35,14 +35,18 @@ static int initialize_cpsch_vi(struct device_queue_manager *dqm);
41800 static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
41801 struct qcm_process_device *qpd);
41802
41803 -void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops)
41804 +static const struct device_queue_manager_asic_ops vi_dqm_asic_ops = {
41805 + .set_cache_memory_policy = set_cache_memory_policy_vi,
41806 + .register_process = register_process_vi,
41807 + .initialize = initialize_cpsch_vi,
41808 + .init_sdma_vm = init_sdma_vm,
41809 +};
41810 +
41811 +void device_queue_manager_init_vi(struct device_queue_manager *dqm)
41812 {
41813 pr_warn("amdkfd: VI DQM is not currently supported\n");
41814
41815 - ops->set_cache_memory_policy = set_cache_memory_policy_vi;
41816 - ops->register_process = register_process_vi;
41817 - ops->initialize = initialize_cpsch_vi;
41818 - ops->init_sdma_vm = init_sdma_vm;
41819 + dqm->ops_asic_specific = &vi_dqm_asic_ops;
41820 }
41821
41822 static bool set_cache_memory_policy_vi(struct device_queue_manager *dqm,
41823 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
41824 index 7f134aa..cd34d4a 100644
41825 --- a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
41826 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
41827 @@ -50,8 +50,8 @@ static void interrupt_wq(struct work_struct *);
41828
41829 int kfd_interrupt_init(struct kfd_dev *kfd)
41830 {
41831 - void *interrupt_ring = kmalloc_array(KFD_INTERRUPT_RING_SIZE,
41832 - kfd->device_info->ih_ring_entry_size,
41833 + void *interrupt_ring = kmalloc_array(kfd->device_info->ih_ring_entry_size,
41834 + KFD_INTERRUPT_RING_SIZE,
41835 GFP_KERNEL);
41836 if (!interrupt_ring)
41837 return -ENOMEM;
41838 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
41839 index 8fa8941..5ae07df 100644
41840 --- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
41841 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
41842 @@ -56,7 +56,7 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
41843 switch (type) {
41844 case KFD_QUEUE_TYPE_DIQ:
41845 case KFD_QUEUE_TYPE_HIQ:
41846 - kq->mqd = dev->dqm->ops.get_mqd_manager(dev->dqm,
41847 + kq->mqd = dev->dqm->ops->get_mqd_manager(dev->dqm,
41848 KFD_MQD_TYPE_HIQ);
41849 break;
41850 default:
41851 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.h b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.h
41852 index 5940531..a75b0e5 100644
41853 --- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.h
41854 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.h
41855 @@ -62,7 +62,7 @@ struct kernel_queue_ops {
41856
41857 void (*submit_packet)(struct kernel_queue *kq);
41858 void (*rollback_packet)(struct kernel_queue *kq);
41859 -};
41860 +} __no_const;
41861
41862 struct kernel_queue {
41863 struct kernel_queue_ops ops;
41864 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
41865 index 7b69070..d7bd78b 100644
41866 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
41867 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
41868 @@ -194,7 +194,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
41869
41870 if (list_empty(&pqm->queues)) {
41871 pdd->qpd.pqm = pqm;
41872 - dev->dqm->ops.register_process(dev->dqm, &pdd->qpd);
41873 + dev->dqm->ops->register_process(dev->dqm, &pdd->qpd);
41874 }
41875
41876 pqn = kzalloc(sizeof(struct process_queue_node), GFP_KERNEL);
41877 @@ -220,7 +220,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
41878 goto err_create_queue;
41879 pqn->q = q;
41880 pqn->kq = NULL;
41881 - retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd,
41882 + retval = dev->dqm->ops->create_queue(dev->dqm, q, &pdd->qpd,
41883 &q->properties.vmid);
41884 pr_debug("DQM returned %d for create_queue\n", retval);
41885 print_queue(q);
41886 @@ -234,7 +234,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
41887 kq->queue->properties.queue_id = *qid;
41888 pqn->kq = kq;
41889 pqn->q = NULL;
41890 - retval = dev->dqm->ops.create_kernel_queue(dev->dqm,
41891 + retval = dev->dqm->ops->create_kernel_queue(dev->dqm,
41892 kq, &pdd->qpd);
41893 break;
41894 default:
41895 @@ -265,7 +265,7 @@ err_allocate_pqn:
41896 /* check if queues list is empty unregister process from device */
41897 clear_bit(*qid, pqm->queue_slot_bitmap);
41898 if (list_empty(&pqm->queues))
41899 - dev->dqm->ops.unregister_process(dev->dqm, &pdd->qpd);
41900 + dev->dqm->ops->unregister_process(dev->dqm, &pdd->qpd);
41901 return retval;
41902 }
41903
41904 @@ -306,13 +306,13 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
41905 if (pqn->kq) {
41906 /* destroy kernel queue (DIQ) */
41907 dqm = pqn->kq->dev->dqm;
41908 - dqm->ops.destroy_kernel_queue(dqm, pqn->kq, &pdd->qpd);
41909 + dqm->ops->destroy_kernel_queue(dqm, pqn->kq, &pdd->qpd);
41910 kernel_queue_uninit(pqn->kq);
41911 }
41912
41913 if (pqn->q) {
41914 dqm = pqn->q->device->dqm;
41915 - retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q);
41916 + retval = dqm->ops->destroy_queue(dqm, &pdd->qpd, pqn->q);
41917 if (retval != 0)
41918 return retval;
41919
41920 @@ -324,7 +324,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
41921 clear_bit(qid, pqm->queue_slot_bitmap);
41922
41923 if (list_empty(&pqm->queues))
41924 - dqm->ops.unregister_process(dqm, &pdd->qpd);
41925 + dqm->ops->unregister_process(dqm, &pdd->qpd);
41926
41927 return retval;
41928 }
41929 @@ -349,7 +349,7 @@ int pqm_update_queue(struct process_queue_manager *pqm, unsigned int qid,
41930 pqn->q->properties.queue_percent = p->queue_percent;
41931 pqn->q->properties.priority = p->priority;
41932
41933 - retval = pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm,
41934 + retval = pqn->q->device->dqm->ops->update_queue(pqn->q->device->dqm,
41935 pqn->q);
41936 if (retval != 0)
41937 return retval;
41938 diff --git a/drivers/gpu/drm/drm_context.c b/drivers/gpu/drm/drm_context.c
41939 index 9b23525..65f4110 100644
41940 --- a/drivers/gpu/drm/drm_context.c
41941 +++ b/drivers/gpu/drm/drm_context.c
41942 @@ -53,6 +53,9 @@ struct drm_ctx_list {
41943 */
41944 void drm_legacy_ctxbitmap_free(struct drm_device * dev, int ctx_handle)
41945 {
41946 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
41947 + return;
41948 +
41949 mutex_lock(&dev->struct_mutex);
41950 idr_remove(&dev->ctx_idr, ctx_handle);
41951 mutex_unlock(&dev->struct_mutex);
41952 @@ -87,6 +90,9 @@ static int drm_legacy_ctxbitmap_next(struct drm_device * dev)
41953 */
41954 int drm_legacy_ctxbitmap_init(struct drm_device * dev)
41955 {
41956 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
41957 + return -EINVAL;
41958 +
41959 idr_init(&dev->ctx_idr);
41960 return 0;
41961 }
41962 @@ -101,6 +107,9 @@ int drm_legacy_ctxbitmap_init(struct drm_device * dev)
41963 */
41964 void drm_legacy_ctxbitmap_cleanup(struct drm_device * dev)
41965 {
41966 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
41967 + return;
41968 +
41969 mutex_lock(&dev->struct_mutex);
41970 idr_destroy(&dev->ctx_idr);
41971 mutex_unlock(&dev->struct_mutex);
41972 @@ -119,11 +128,14 @@ void drm_legacy_ctxbitmap_flush(struct drm_device *dev, struct drm_file *file)
41973 {
41974 struct drm_ctx_list *pos, *tmp;
41975
41976 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
41977 + return;
41978 +
41979 mutex_lock(&dev->ctxlist_mutex);
41980
41981 list_for_each_entry_safe(pos, tmp, &dev->ctxlist, head) {
41982 if (pos->tag == file &&
41983 - pos->handle != DRM_KERNEL_CONTEXT) {
41984 + _DRM_LOCKING_CONTEXT(pos->handle) != DRM_KERNEL_CONTEXT) {
41985 if (dev->driver->context_dtor)
41986 dev->driver->context_dtor(dev, pos->handle);
41987
41988 @@ -161,6 +173,9 @@ int drm_legacy_getsareactx(struct drm_device *dev, void *data,
41989 struct drm_local_map *map;
41990 struct drm_map_list *_entry;
41991
41992 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
41993 + return -EINVAL;
41994 +
41995 mutex_lock(&dev->struct_mutex);
41996
41997 map = idr_find(&dev->ctx_idr, request->ctx_id);
41998 @@ -205,6 +220,9 @@ int drm_legacy_setsareactx(struct drm_device *dev, void *data,
41999 struct drm_local_map *map = NULL;
42000 struct drm_map_list *r_list = NULL;
42001
42002 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42003 + return -EINVAL;
42004 +
42005 mutex_lock(&dev->struct_mutex);
42006 list_for_each_entry(r_list, &dev->maplist, head) {
42007 if (r_list->map
42008 @@ -277,7 +295,13 @@ static int drm_context_switch_complete(struct drm_device *dev,
42009 {
42010 dev->last_context = new; /* PRE/POST: This is the _only_ writer. */
42011
42012 - if (!_DRM_LOCK_IS_HELD(file_priv->master->lock.hw_lock->lock)) {
42013 + if (file_priv->master->lock.hw_lock == NULL) {
42014 + DRM_ERROR(
42015 + "Device has been unregistered. Hard exit. Process %d\n",
42016 + task_pid_nr(current));
42017 + send_sig(SIGTERM, current, 0);
42018 + return -EPERM;
42019 + } else if (!_DRM_LOCK_IS_HELD(file_priv->master->lock.hw_lock->lock)) {
42020 DRM_ERROR("Lock isn't held after context switch\n");
42021 }
42022
42023 @@ -305,6 +329,9 @@ int drm_legacy_resctx(struct drm_device *dev, void *data,
42024 struct drm_ctx ctx;
42025 int i;
42026
42027 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42028 + return -EINVAL;
42029 +
42030 if (res->count >= DRM_RESERVED_CONTEXTS) {
42031 memset(&ctx, 0, sizeof(ctx));
42032 for (i = 0; i < DRM_RESERVED_CONTEXTS; i++) {
42033 @@ -335,8 +362,11 @@ int drm_legacy_addctx(struct drm_device *dev, void *data,
42034 struct drm_ctx_list *ctx_entry;
42035 struct drm_ctx *ctx = data;
42036
42037 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42038 + return -EINVAL;
42039 +
42040 ctx->handle = drm_legacy_ctxbitmap_next(dev);
42041 - if (ctx->handle == DRM_KERNEL_CONTEXT) {
42042 + if (_DRM_LOCKING_CONTEXT(ctx->handle) == DRM_KERNEL_CONTEXT) {
42043 /* Skip kernel's context and get a new one. */
42044 ctx->handle = drm_legacy_ctxbitmap_next(dev);
42045 }
42046 @@ -378,6 +408,9 @@ int drm_legacy_getctx(struct drm_device *dev, void *data,
42047 {
42048 struct drm_ctx *ctx = data;
42049
42050 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42051 + return -EINVAL;
42052 +
42053 /* This is 0, because we don't handle any context flags */
42054 ctx->flags = 0;
42055
42056 @@ -400,6 +433,9 @@ int drm_legacy_switchctx(struct drm_device *dev, void *data,
42057 {
42058 struct drm_ctx *ctx = data;
42059
42060 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42061 + return -EINVAL;
42062 +
42063 DRM_DEBUG("%d\n", ctx->handle);
42064 return drm_context_switch(dev, dev->last_context, ctx->handle);
42065 }
42066 @@ -420,6 +456,9 @@ int drm_legacy_newctx(struct drm_device *dev, void *data,
42067 {
42068 struct drm_ctx *ctx = data;
42069
42070 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42071 + return -EINVAL;
42072 +
42073 DRM_DEBUG("%d\n", ctx->handle);
42074 drm_context_switch_complete(dev, file_priv, ctx->handle);
42075
42076 @@ -442,8 +481,11 @@ int drm_legacy_rmctx(struct drm_device *dev, void *data,
42077 {
42078 struct drm_ctx *ctx = data;
42079
42080 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42081 + return -EINVAL;
42082 +
42083 DRM_DEBUG("%d\n", ctx->handle);
42084 - if (ctx->handle != DRM_KERNEL_CONTEXT) {
42085 + if (_DRM_LOCKING_CONTEXT(ctx->handle) != DRM_KERNEL_CONTEXT) {
42086 if (dev->driver->context_dtor)
42087 dev->driver->context_dtor(dev, ctx->handle);
42088 drm_legacy_ctxbitmap_free(dev, ctx->handle);
42089 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
42090 index fed7483..5bc0335 100644
42091 --- a/drivers/gpu/drm/drm_crtc.c
42092 +++ b/drivers/gpu/drm/drm_crtc.c
42093 @@ -4174,7 +4174,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
42094 goto done;
42095 }
42096
42097 - if (copy_to_user(&enum_ptr[copied].name,
42098 + if (copy_to_user(enum_ptr[copied].name,
42099 &prop_enum->name, DRM_PROP_NAME_LEN)) {
42100 ret = -EFAULT;
42101 goto done;
42102 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
42103 index b7bf4ce..585cf3b 100644
42104 --- a/drivers/gpu/drm/drm_drv.c
42105 +++ b/drivers/gpu/drm/drm_drv.c
42106 @@ -434,7 +434,7 @@ void drm_unplug_dev(struct drm_device *dev)
42107
42108 drm_device_set_unplugged(dev);
42109
42110 - if (dev->open_count == 0) {
42111 + if (local_read(&dev->open_count) == 0) {
42112 drm_put_dev(dev);
42113 }
42114 mutex_unlock(&drm_global_mutex);
42115 @@ -582,10 +582,13 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver,
42116 if (drm_ht_create(&dev->map_hash, 12))
42117 goto err_minors;
42118
42119 - ret = drm_legacy_ctxbitmap_init(dev);
42120 - if (ret) {
42121 - DRM_ERROR("Cannot allocate memory for context bitmap.\n");
42122 - goto err_ht;
42123 + if (drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT)) {
42124 + ret = drm_legacy_ctxbitmap_init(dev);
42125 + if (ret) {
42126 + DRM_ERROR(
42127 + "Cannot allocate memory for context bitmap.\n");
42128 + goto err_ht;
42129 + }
42130 }
42131
42132 if (drm_core_check_feature(dev, DRIVER_GEM)) {
42133 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
42134 index c59ce4d..056d413 100644
42135 --- a/drivers/gpu/drm/drm_fops.c
42136 +++ b/drivers/gpu/drm/drm_fops.c
42137 @@ -89,7 +89,7 @@ int drm_open(struct inode *inode, struct file *filp)
42138 return PTR_ERR(minor);
42139
42140 dev = minor->dev;
42141 - if (!dev->open_count++)
42142 + if (local_inc_return(&dev->open_count) == 1)
42143 need_setup = 1;
42144
42145 /* share address_space across all char-devs of a single device */
42146 @@ -106,7 +106,7 @@ int drm_open(struct inode *inode, struct file *filp)
42147 return 0;
42148
42149 err_undo:
42150 - dev->open_count--;
42151 + local_dec(&dev->open_count);
42152 drm_minor_release(minor);
42153 return retcode;
42154 }
42155 @@ -377,7 +377,7 @@ int drm_release(struct inode *inode, struct file *filp)
42156
42157 mutex_lock(&drm_global_mutex);
42158
42159 - DRM_DEBUG("open_count = %d\n", dev->open_count);
42160 + DRM_DEBUG("open_count = %ld\n", local_read(&dev->open_count));
42161
42162 mutex_lock(&dev->struct_mutex);
42163 list_del(&file_priv->lhead);
42164 @@ -392,10 +392,10 @@ int drm_release(struct inode *inode, struct file *filp)
42165 * Begin inline drm_release
42166 */
42167
42168 - DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n",
42169 + DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %ld\n",
42170 task_pid_nr(current),
42171 (long)old_encode_dev(file_priv->minor->kdev->devt),
42172 - dev->open_count);
42173 + local_read(&dev->open_count));
42174
42175 /* if the master has gone away we can't do anything with the lock */
42176 if (file_priv->minor->master)
42177 @@ -465,7 +465,7 @@ int drm_release(struct inode *inode, struct file *filp)
42178 * End inline drm_release
42179 */
42180
42181 - if (!--dev->open_count) {
42182 + if (local_dec_and_test(&dev->open_count)) {
42183 retcode = drm_lastclose(dev);
42184 if (drm_device_is_unplugged(dev))
42185 drm_put_dev(dev);
42186 diff --git a/drivers/gpu/drm/drm_global.c b/drivers/gpu/drm/drm_global.c
42187 index 3d2e91c..d31c4c9 100644
42188 --- a/drivers/gpu/drm/drm_global.c
42189 +++ b/drivers/gpu/drm/drm_global.c
42190 @@ -36,7 +36,7 @@
42191 struct drm_global_item {
42192 struct mutex mutex;
42193 void *object;
42194 - int refcount;
42195 + atomic_t refcount;
42196 };
42197
42198 static struct drm_global_item glob[DRM_GLOBAL_NUM];
42199 @@ -49,7 +49,7 @@ void drm_global_init(void)
42200 struct drm_global_item *item = &glob[i];
42201 mutex_init(&item->mutex);
42202 item->object = NULL;
42203 - item->refcount = 0;
42204 + atomic_set(&item->refcount, 0);
42205 }
42206 }
42207
42208 @@ -59,7 +59,7 @@ void drm_global_release(void)
42209 for (i = 0; i < DRM_GLOBAL_NUM; ++i) {
42210 struct drm_global_item *item = &glob[i];
42211 BUG_ON(item->object != NULL);
42212 - BUG_ON(item->refcount != 0);
42213 + BUG_ON(atomic_read(&item->refcount) != 0);
42214 }
42215 }
42216
42217 @@ -69,7 +69,7 @@ int drm_global_item_ref(struct drm_global_reference *ref)
42218 struct drm_global_item *item = &glob[ref->global_type];
42219
42220 mutex_lock(&item->mutex);
42221 - if (item->refcount == 0) {
42222 + if (atomic_read(&item->refcount) == 0) {
42223 item->object = kzalloc(ref->size, GFP_KERNEL);
42224 if (unlikely(item->object == NULL)) {
42225 ret = -ENOMEM;
42226 @@ -82,7 +82,7 @@ int drm_global_item_ref(struct drm_global_reference *ref)
42227 goto out_err;
42228
42229 }
42230 - ++item->refcount;
42231 + atomic_inc(&item->refcount);
42232 ref->object = item->object;
42233 mutex_unlock(&item->mutex);
42234 return 0;
42235 @@ -98,9 +98,9 @@ void drm_global_item_unref(struct drm_global_reference *ref)
42236 struct drm_global_item *item = &glob[ref->global_type];
42237
42238 mutex_lock(&item->mutex);
42239 - BUG_ON(item->refcount == 0);
42240 + BUG_ON(atomic_read(&item->refcount) == 0);
42241 BUG_ON(ref->object != item->object);
42242 - if (--item->refcount == 0) {
42243 + if (atomic_dec_and_test(&item->refcount)) {
42244 ref->release(ref);
42245 item->object = NULL;
42246 }
42247 diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
42248 index cbb4fc0..5c756cb9 100644
42249 --- a/drivers/gpu/drm/drm_info.c
42250 +++ b/drivers/gpu/drm/drm_info.c
42251 @@ -77,10 +77,13 @@ int drm_vm_info(struct seq_file *m, void *data)
42252 struct drm_local_map *map;
42253 struct drm_map_list *r_list;
42254
42255 - /* Hardcoded from _DRM_FRAME_BUFFER,
42256 - _DRM_REGISTERS, _DRM_SHM, _DRM_AGP, and
42257 - _DRM_SCATTER_GATHER and _DRM_CONSISTENT */
42258 - const char *types[] = { "FB", "REG", "SHM", "AGP", "SG", "PCI" };
42259 + static const char * const types[] = {
42260 + [_DRM_FRAME_BUFFER] = "FB",
42261 + [_DRM_REGISTERS] = "REG",
42262 + [_DRM_SHM] = "SHM",
42263 + [_DRM_AGP] = "AGP",
42264 + [_DRM_SCATTER_GATHER] = "SG",
42265 + [_DRM_CONSISTENT] = "PCI"};
42266 const char *type;
42267 int i;
42268
42269 @@ -91,7 +94,7 @@ int drm_vm_info(struct seq_file *m, void *data)
42270 map = r_list->map;
42271 if (!map)
42272 continue;
42273 - if (map->type < 0 || map->type > 5)
42274 + if (map->type >= ARRAY_SIZE(types))
42275 type = "??";
42276 else
42277 type = types[map->type];
42278 diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c
42279 index 9cfcd0a..7142a7f 100644
42280 --- a/drivers/gpu/drm/drm_ioc32.c
42281 +++ b/drivers/gpu/drm/drm_ioc32.c
42282 @@ -459,7 +459,7 @@ static int compat_drm_infobufs(struct file *file, unsigned int cmd,
42283 request = compat_alloc_user_space(nbytes);
42284 if (!access_ok(VERIFY_WRITE, request, nbytes))
42285 return -EFAULT;
42286 - list = (struct drm_buf_desc *) (request + 1);
42287 + list = (struct drm_buf_desc __user *) (request + 1);
42288
42289 if (__put_user(count, &request->count)
42290 || __put_user(list, &request->list))
42291 @@ -520,7 +520,7 @@ static int compat_drm_mapbufs(struct file *file, unsigned int cmd,
42292 request = compat_alloc_user_space(nbytes);
42293 if (!access_ok(VERIFY_WRITE, request, nbytes))
42294 return -EFAULT;
42295 - list = (struct drm_buf_pub *) (request + 1);
42296 + list = (struct drm_buf_pub __user *) (request + 1);
42297
42298 if (__put_user(count, &request->count)
42299 || __put_user(list, &request->list))
42300 @@ -1075,7 +1075,7 @@ static int compat_drm_mode_addfb2(struct file *file, unsigned int cmd,
42301 return 0;
42302 }
42303
42304 -static drm_ioctl_compat_t *drm_compat_ioctls[] = {
42305 +static drm_ioctl_compat_t drm_compat_ioctls[] = {
42306 [DRM_IOCTL_NR(DRM_IOCTL_VERSION32)] = compat_drm_version,
42307 [DRM_IOCTL_NR(DRM_IOCTL_GET_UNIQUE32)] = compat_drm_getunique,
42308 [DRM_IOCTL_NR(DRM_IOCTL_GET_MAP32)] = compat_drm_getmap,
42309 @@ -1122,7 +1122,6 @@ static drm_ioctl_compat_t *drm_compat_ioctls[] = {
42310 long drm_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
42311 {
42312 unsigned int nr = DRM_IOCTL_NR(cmd);
42313 - drm_ioctl_compat_t *fn;
42314 int ret;
42315
42316 /* Assume that ioctls without an explicit compat routine will just
42317 @@ -1132,10 +1131,8 @@ long drm_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
42318 if (nr >= ARRAY_SIZE(drm_compat_ioctls))
42319 return drm_ioctl(filp, cmd, arg);
42320
42321 - fn = drm_compat_ioctls[nr];
42322 -
42323 - if (fn != NULL)
42324 - ret = (*fn) (filp, cmd, arg);
42325 + if (drm_compat_ioctls[nr] != NULL)
42326 + ret = (*drm_compat_ioctls[nr]) (filp, cmd, arg);
42327 else
42328 ret = drm_ioctl(filp, cmd, arg);
42329
42330 diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
42331 index b1d303f..c59012c 100644
42332 --- a/drivers/gpu/drm/drm_ioctl.c
42333 +++ b/drivers/gpu/drm/drm_ioctl.c
42334 @@ -650,7 +650,7 @@ long drm_ioctl(struct file *filp,
42335 struct drm_file *file_priv = filp->private_data;
42336 struct drm_device *dev;
42337 const struct drm_ioctl_desc *ioctl = NULL;
42338 - drm_ioctl_t *func;
42339 + drm_ioctl_no_const_t func;
42340 unsigned int nr = DRM_IOCTL_NR(cmd);
42341 int retcode = -EINVAL;
42342 char stack_kdata[128];
42343 diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
42344 index f861361..b61d4c7 100644
42345 --- a/drivers/gpu/drm/drm_lock.c
42346 +++ b/drivers/gpu/drm/drm_lock.c
42347 @@ -61,9 +61,12 @@ int drm_legacy_lock(struct drm_device *dev, void *data,
42348 struct drm_master *master = file_priv->master;
42349 int ret = 0;
42350
42351 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42352 + return -EINVAL;
42353 +
42354 ++file_priv->lock_count;
42355
42356 - if (lock->context == DRM_KERNEL_CONTEXT) {
42357 + if (_DRM_LOCKING_CONTEXT(lock->context) == DRM_KERNEL_CONTEXT) {
42358 DRM_ERROR("Process %d using kernel context %d\n",
42359 task_pid_nr(current), lock->context);
42360 return -EINVAL;
42361 @@ -153,12 +156,23 @@ int drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file_
42362 struct drm_lock *lock = data;
42363 struct drm_master *master = file_priv->master;
42364
42365 - if (lock->context == DRM_KERNEL_CONTEXT) {
42366 + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT))
42367 + return -EINVAL;
42368 +
42369 + if (_DRM_LOCKING_CONTEXT(lock->context) == DRM_KERNEL_CONTEXT) {
42370 DRM_ERROR("Process %d using kernel context %d\n",
42371 task_pid_nr(current), lock->context);
42372 return -EINVAL;
42373 }
42374
42375 + if (!master->lock.hw_lock) {
42376 + DRM_ERROR(
42377 + "Device has been unregistered. Hard exit. Process %d\n",
42378 + task_pid_nr(current));
42379 + send_sig(SIGTERM, current, 0);
42380 + return -EPERM;
42381 + }
42382 +
42383 if (drm_legacy_lock_free(&master->lock, lock->context)) {
42384 /* FIXME: Should really bail out here. */
42385 }
42386 diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
42387 index d4813e0..6c1ab4d 100644
42388 --- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
42389 +++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
42390 @@ -825,10 +825,16 @@ void mdfld_dsi_dpi_mode_set(struct drm_encoder *encoder,
42391 u32 pipeconf_reg = PIPEACONF;
42392 u32 dspcntr_reg = DSPACNTR;
42393
42394 - u32 pipeconf = dev_priv->pipeconf[pipe];
42395 - u32 dspcntr = dev_priv->dspcntr[pipe];
42396 + u32 pipeconf;
42397 + u32 dspcntr;
42398 u32 mipi = MIPI_PORT_EN | PASS_FROM_SPHY_TO_AFE | SEL_FLOPPED_HSTX;
42399
42400 + if (pipe == -1)
42401 + return;
42402 +
42403 + pipeconf = dev_priv->pipeconf[pipe];
42404 + dspcntr = dev_priv->dspcntr[pipe];
42405 +
42406 if (pipe) {
42407 pipeconf_reg = PIPECCONF;
42408 dspcntr_reg = DSPCCNTR;
42409 diff --git a/drivers/gpu/drm/i810/i810_drv.h b/drivers/gpu/drm/i810/i810_drv.h
42410 index 93ec5dc..82acbaf 100644
42411 --- a/drivers/gpu/drm/i810/i810_drv.h
42412 +++ b/drivers/gpu/drm/i810/i810_drv.h
42413 @@ -110,8 +110,8 @@ typedef struct drm_i810_private {
42414 int page_flipping;
42415
42416 wait_queue_head_t irq_queue;
42417 - atomic_t irq_received;
42418 - atomic_t irq_emitted;
42419 + atomic_unchecked_t irq_received;
42420 + atomic_unchecked_t irq_emitted;
42421
42422 int front_offset;
42423 } drm_i810_private_t;
42424 diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
42425 index 82bbe3f..ce004bf 100644
42426 --- a/drivers/gpu/drm/i915/i915_debugfs.c
42427 +++ b/drivers/gpu/drm/i915/i915_debugfs.c
42428 @@ -480,7 +480,7 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
42429 seq_printf(m, "%u fault mappable objects, %zu bytes\n",
42430 count, size);
42431
42432 - seq_printf(m, "%zu [%lu] gtt total\n",
42433 + seq_printf(m, "%llu [%llu] gtt total\n",
42434 dev_priv->gtt.base.total,
42435 dev_priv->gtt.mappable_end - dev_priv->gtt.base.start);
42436
42437 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
42438 index d2df321..f746478 100644
42439 --- a/drivers/gpu/drm/i915/i915_dma.c
42440 +++ b/drivers/gpu/drm/i915/i915_dma.c
42441 @@ -162,6 +162,8 @@ static int i915_getparam(struct drm_device *dev, void *data,
42442 value = INTEL_INFO(dev)->eu_total;
42443 if (!value)
42444 return -ENODEV;
42445 + case I915_PARAM_HAS_LEGACY_CONTEXT:
42446 + value = drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT);
42447 break;
42448 default:
42449 DRM_DEBUG("Unknown parameter %d\n", param->param);
42450 @@ -376,7 +378,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
42451 * locking inversion with the driver load path. And the access here is
42452 * completely racy anyway. So don't bother with locking for now.
42453 */
42454 - return dev->open_count == 0;
42455 + return local_read(&dev->open_count) == 0;
42456 }
42457
42458 static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
42459 diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
42460 index 5e6b4a2..6ba2c85 100644
42461 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
42462 +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
42463 @@ -935,12 +935,12 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
42464 static int
42465 validate_exec_list(struct drm_device *dev,
42466 struct drm_i915_gem_exec_object2 *exec,
42467 - int count)
42468 + unsigned int count)
42469 {
42470 unsigned relocs_total = 0;
42471 unsigned relocs_max = UINT_MAX / sizeof(struct drm_i915_gem_relocation_entry);
42472 unsigned invalid_flags;
42473 - int i;
42474 + unsigned int i;
42475
42476 invalid_flags = __EXEC_OBJECT_UNKNOWN_FLAGS;
42477 if (USES_FULL_PPGTT(dev))
42478 diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
42479 index 31e8269..7055934 100644
42480 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
42481 +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
42482 @@ -2360,10 +2360,10 @@ static void chv_setup_private_ppat(struct drm_i915_private *dev_priv)
42483 }
42484
42485 static int gen8_gmch_probe(struct drm_device *dev,
42486 - size_t *gtt_total,
42487 - size_t *stolen,
42488 - phys_addr_t *mappable_base,
42489 - unsigned long *mappable_end)
42490 + uint64_t *gtt_total,
42491 + uint64_t *stolen,
42492 + uint64_t *mappable_base,
42493 + uint64_t *mappable_end)
42494 {
42495 struct drm_i915_private *dev_priv = dev->dev_private;
42496 unsigned int gtt_size;
42497 @@ -2408,10 +2408,10 @@ static int gen8_gmch_probe(struct drm_device *dev,
42498 }
42499
42500 static int gen6_gmch_probe(struct drm_device *dev,
42501 - size_t *gtt_total,
42502 - size_t *stolen,
42503 - phys_addr_t *mappable_base,
42504 - unsigned long *mappable_end)
42505 + uint64_t *gtt_total,
42506 + uint64_t *stolen,
42507 + uint64_t *mappable_base,
42508 + uint64_t *mappable_end)
42509 {
42510 struct drm_i915_private *dev_priv = dev->dev_private;
42511 unsigned int gtt_size;
42512 @@ -2425,7 +2425,7 @@ static int gen6_gmch_probe(struct drm_device *dev,
42513 * a coarse sanity check.
42514 */
42515 if ((*mappable_end < (64<<20) || (*mappable_end > (512<<20)))) {
42516 - DRM_ERROR("Unknown GMADR size (%lx)\n",
42517 + DRM_ERROR("Unknown GMADR size (%llx)\n",
42518 dev_priv->gtt.mappable_end);
42519 return -ENXIO;
42520 }
42521 @@ -2459,10 +2459,10 @@ static void gen6_gmch_remove(struct i915_address_space *vm)
42522 }
42523
42524 static int i915_gmch_probe(struct drm_device *dev,
42525 - size_t *gtt_total,
42526 - size_t *stolen,
42527 - phys_addr_t *mappable_base,
42528 - unsigned long *mappable_end)
42529 + uint64_t *gtt_total,
42530 + uint64_t *stolen,
42531 + uint64_t *mappable_base,
42532 + uint64_t *mappable_end)
42533 {
42534 struct drm_i915_private *dev_priv = dev->dev_private;
42535 int ret;
42536 @@ -2527,10 +2527,10 @@ int i915_gem_gtt_init(struct drm_device *dev)
42537 gtt->base.dev = dev;
42538
42539 /* GMADR is the PCI mmio aperture into the global GTT. */
42540 - DRM_INFO("Memory usable by graphics device = %zdM\n",
42541 + DRM_INFO("Memory usable by graphics device = %lldM\n",
42542 gtt->base.total >> 20);
42543 - DRM_DEBUG_DRIVER("GMADR size = %ldM\n", gtt->mappable_end >> 20);
42544 - DRM_DEBUG_DRIVER("GTT stolen size = %zdM\n", gtt->stolen_size >> 20);
42545 + DRM_DEBUG_DRIVER("GMADR size = %lldM\n", gtt->mappable_end >> 20);
42546 + DRM_DEBUG_DRIVER("GTT stolen size = %lldM\n", gtt->stolen_size >> 20);
42547 #ifdef CONFIG_INTEL_IOMMU
42548 if (intel_iommu_gfx_mapped)
42549 DRM_INFO("VT-d active for gfx access\n");
42550 diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
42551 index 0d46dd2..1171c00 100644
42552 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h
42553 +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
42554 @@ -233,8 +233,8 @@ struct i915_address_space {
42555 struct drm_mm mm;
42556 struct drm_device *dev;
42557 struct list_head global_link;
42558 - unsigned long start; /* Start offset always 0 for dri2 */
42559 - size_t total; /* size addr space maps (ex. 2GB for ggtt) */
42560 + uint64_t start; /* Start offset always 0 for dri2 */
42561 + uint64_t total; /* size addr space maps (ex. 2GB for ggtt) */
42562
42563 struct {
42564 dma_addr_t addr;
42565 @@ -300,11 +300,11 @@ struct i915_address_space {
42566 */
42567 struct i915_gtt {
42568 struct i915_address_space base;
42569 - size_t stolen_size; /* Total size of stolen memory */
42570 + uint64_t stolen_size; /* Total size of stolen memory */
42571
42572 - unsigned long mappable_end; /* End offset that we can CPU map */
42573 + uint64_t mappable_end; /* End offset that we can CPU map */
42574 struct io_mapping *mappable; /* Mapping to our CPU mappable region */
42575 - phys_addr_t mappable_base; /* PA of our GMADR */
42576 + uint64_t mappable_base; /* PA of our GMADR */
42577
42578 /** "Graphics Stolen Memory" holds the global PTEs */
42579 void __iomem *gsm;
42580 @@ -314,9 +314,9 @@ struct i915_gtt {
42581 int mtrr;
42582
42583 /* global gtt ops */
42584 - int (*gtt_probe)(struct drm_device *dev, size_t *gtt_total,
42585 - size_t *stolen, phys_addr_t *mappable_base,
42586 - unsigned long *mappable_end);
42587 + int (*gtt_probe)(struct drm_device *dev, uint64_t *gtt_total,
42588 + uint64_t *stolen, uint64_t *mappable_base,
42589 + uint64_t *mappable_end);
42590 };
42591
42592 struct i915_hw_ppgtt {
42593 diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
42594 index 8b5b784..78711f6 100644
42595 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
42596 +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
42597 @@ -310,7 +310,7 @@ int i915_gem_init_stolen(struct drm_device *dev)
42598 if (dev_priv->mm.stolen_base == 0)
42599 return 0;
42600
42601 - DRM_DEBUG_KMS("found %zd bytes of stolen memory at %08lx\n",
42602 + DRM_DEBUG_KMS("found %lld bytes of stolen memory at %08lx\n",
42603 dev_priv->gtt.stolen_size, dev_priv->mm.stolen_base);
42604
42605 if (INTEL_INFO(dev)->gen >= 8) {
42606 diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c
42607 index 23aa04c..1d25960 100644
42608 --- a/drivers/gpu/drm/i915/i915_ioc32.c
42609 +++ b/drivers/gpu/drm/i915/i915_ioc32.c
42610 @@ -62,7 +62,7 @@ static int compat_i915_batchbuffer(struct file *file, unsigned int cmd,
42611 || __put_user(batchbuffer32.DR4, &batchbuffer->DR4)
42612 || __put_user(batchbuffer32.num_cliprects,
42613 &batchbuffer->num_cliprects)
42614 - || __put_user((int __user *)(unsigned long)batchbuffer32.cliprects,
42615 + || __put_user((struct drm_clip_rect __user *)(unsigned long)batchbuffer32.cliprects,
42616 &batchbuffer->cliprects))
42617 return -EFAULT;
42618
42619 @@ -91,13 +91,13 @@ static int compat_i915_cmdbuffer(struct file *file, unsigned int cmd,
42620
42621 cmdbuffer = compat_alloc_user_space(sizeof(*cmdbuffer));
42622 if (!access_ok(VERIFY_WRITE, cmdbuffer, sizeof(*cmdbuffer))
42623 - || __put_user((int __user *)(unsigned long)cmdbuffer32.buf,
42624 + || __put_user((char __user *)(unsigned long)cmdbuffer32.buf,
42625 &cmdbuffer->buf)
42626 || __put_user(cmdbuffer32.sz, &cmdbuffer->sz)
42627 || __put_user(cmdbuffer32.DR1, &cmdbuffer->DR1)
42628 || __put_user(cmdbuffer32.DR4, &cmdbuffer->DR4)
42629 || __put_user(cmdbuffer32.num_cliprects, &cmdbuffer->num_cliprects)
42630 - || __put_user((int __user *)(unsigned long)cmdbuffer32.cliprects,
42631 + || __put_user((struct drm_clip_rect __user *)(unsigned long)cmdbuffer32.cliprects,
42632 &cmdbuffer->cliprects))
42633 return -EFAULT;
42634
42635 @@ -181,7 +181,7 @@ static int compat_i915_alloc(struct file *file, unsigned int cmd,
42636 (unsigned long)request);
42637 }
42638
42639 -static drm_ioctl_compat_t *i915_compat_ioctls[] = {
42640 +static drm_ioctl_compat_t i915_compat_ioctls[] = {
42641 [DRM_I915_BATCHBUFFER] = compat_i915_batchbuffer,
42642 [DRM_I915_CMDBUFFER] = compat_i915_cmdbuffer,
42643 [DRM_I915_GETPARAM] = compat_i915_getparam,
42644 @@ -201,17 +201,13 @@ static drm_ioctl_compat_t *i915_compat_ioctls[] = {
42645 long i915_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
42646 {
42647 unsigned int nr = DRM_IOCTL_NR(cmd);
42648 - drm_ioctl_compat_t *fn = NULL;
42649 int ret;
42650
42651 if (nr < DRM_COMMAND_BASE || nr >= DRM_COMMAND_END)
42652 return drm_compat_ioctl(filp, cmd, arg);
42653
42654 - if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls))
42655 - fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
42656 -
42657 - if (fn != NULL)
42658 - ret = (*fn) (filp, cmd, arg);
42659 + if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls) && i915_compat_ioctls[nr - DRM_COMMAND_BASE])
42660 + ret = (*i915_compat_ioctls[nr - DRM_COMMAND_BASE])(filp, cmd, arg);
42661 else
42662 ret = drm_ioctl(filp, cmd, arg);
42663
42664 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
42665 index 107c6c0..e1926b0 100644
42666 --- a/drivers/gpu/drm/i915/intel_display.c
42667 +++ b/drivers/gpu/drm/i915/intel_display.c
42668 @@ -14501,13 +14501,13 @@ struct intel_quirk {
42669 int subsystem_vendor;
42670 int subsystem_device;
42671 void (*hook)(struct drm_device *dev);
42672 -};
42673 +} __do_const;
42674
42675 /* For systems that don't have a meaningful PCI subdevice/subvendor ID */
42676 struct intel_dmi_quirk {
42677 void (*hook)(struct drm_device *dev);
42678 const struct dmi_system_id (*dmi_id_list)[];
42679 -};
42680 +} __do_const;
42681
42682 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
42683 {
42684 @@ -14515,18 +14515,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
42685 return 1;
42686 }
42687
42688 -static const struct intel_dmi_quirk intel_dmi_quirks[] = {
42689 +static const struct dmi_system_id intel_dmi_quirks_table[] = {
42690 {
42691 - .dmi_id_list = &(const struct dmi_system_id[]) {
42692 - {
42693 - .callback = intel_dmi_reverse_brightness,
42694 - .ident = "NCR Corporation",
42695 - .matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"),
42696 - DMI_MATCH(DMI_PRODUCT_NAME, ""),
42697 - },
42698 - },
42699 - { } /* terminating entry */
42700 + .callback = intel_dmi_reverse_brightness,
42701 + .ident = "NCR Corporation",
42702 + .matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"),
42703 + DMI_MATCH(DMI_PRODUCT_NAME, ""),
42704 },
42705 + },
42706 + { } /* terminating entry */
42707 +};
42708 +
42709 +static const struct intel_dmi_quirk intel_dmi_quirks[] = {
42710 + {
42711 + .dmi_id_list = &intel_dmi_quirks_table,
42712 .hook = quirk_invert_brightness,
42713 },
42714 };
42715 diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
42716 index 74f505b..21f6914 100644
42717 --- a/drivers/gpu/drm/imx/imx-drm-core.c
42718 +++ b/drivers/gpu/drm/imx/imx-drm-core.c
42719 @@ -355,7 +355,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc,
42720 if (imxdrm->pipes >= MAX_CRTC)
42721 return -EINVAL;
42722
42723 - if (imxdrm->drm->open_count)
42724 + if (local_read(&imxdrm->drm->open_count))
42725 return -EBUSY;
42726
42727 imx_drm_crtc = kzalloc(sizeof(*imx_drm_crtc), GFP_KERNEL);
42728 diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
42729 index b4a20149..219ab78 100644
42730 --- a/drivers/gpu/drm/mga/mga_drv.h
42731 +++ b/drivers/gpu/drm/mga/mga_drv.h
42732 @@ -122,9 +122,9 @@ typedef struct drm_mga_private {
42733 u32 clear_cmd;
42734 u32 maccess;
42735
42736 - atomic_t vbl_received; /**< Number of vblanks received. */
42737 + atomic_unchecked_t vbl_received; /**< Number of vblanks received. */
42738 wait_queue_head_t fence_queue;
42739 - atomic_t last_fence_retired;
42740 + atomic_unchecked_t last_fence_retired;
42741 u32 next_fence_to_post;
42742
42743 unsigned int fb_cpp;
42744 diff --git a/drivers/gpu/drm/mga/mga_ioc32.c b/drivers/gpu/drm/mga/mga_ioc32.c
42745 index 729bfd5..14bae78 100644
42746 --- a/drivers/gpu/drm/mga/mga_ioc32.c
42747 +++ b/drivers/gpu/drm/mga/mga_ioc32.c
42748 @@ -190,7 +190,7 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
42749 return 0;
42750 }
42751
42752 -drm_ioctl_compat_t *mga_compat_ioctls[] = {
42753 +drm_ioctl_compat_t mga_compat_ioctls[] = {
42754 [DRM_MGA_INIT] = compat_mga_init,
42755 [DRM_MGA_GETPARAM] = compat_mga_getparam,
42756 [DRM_MGA_DMA_BOOTSTRAP] = compat_mga_dma_bootstrap,
42757 @@ -208,17 +208,13 @@ drm_ioctl_compat_t *mga_compat_ioctls[] = {
42758 long mga_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
42759 {
42760 unsigned int nr = DRM_IOCTL_NR(cmd);
42761 - drm_ioctl_compat_t *fn = NULL;
42762 int ret;
42763
42764 if (nr < DRM_COMMAND_BASE)
42765 return drm_compat_ioctl(filp, cmd, arg);
42766
42767 - if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls))
42768 - fn = mga_compat_ioctls[nr - DRM_COMMAND_BASE];
42769 -
42770 - if (fn != NULL)
42771 - ret = (*fn) (filp, cmd, arg);
42772 + if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls) && mga_compat_ioctls[nr - DRM_COMMAND_BASE])
42773 + ret = (*mga_compat_ioctls[nr - DRM_COMMAND_BASE]) (filp, cmd, arg);
42774 else
42775 ret = drm_ioctl(filp, cmd, arg);
42776
42777 diff --git a/drivers/gpu/drm/mga/mga_irq.c b/drivers/gpu/drm/mga/mga_irq.c
42778 index 1b071b8..de8601a 100644
42779 --- a/drivers/gpu/drm/mga/mga_irq.c
42780 +++ b/drivers/gpu/drm/mga/mga_irq.c
42781 @@ -43,7 +43,7 @@ u32 mga_get_vblank_counter(struct drm_device *dev, int crtc)
42782 if (crtc != 0)
42783 return 0;
42784
42785 - return atomic_read(&dev_priv->vbl_received);
42786 + return atomic_read_unchecked(&dev_priv->vbl_received);
42787 }
42788
42789
42790 @@ -59,7 +59,7 @@ irqreturn_t mga_driver_irq_handler(int irq, void *arg)
42791 /* VBLANK interrupt */
42792 if (status & MGA_VLINEPEN) {
42793 MGA_WRITE(MGA_ICLEAR, MGA_VLINEICLR);
42794 - atomic_inc(&dev_priv->vbl_received);
42795 + atomic_inc_unchecked(&dev_priv->vbl_received);
42796 drm_handle_vblank(dev, 0);
42797 handled = 1;
42798 }
42799 @@ -78,7 +78,7 @@ irqreturn_t mga_driver_irq_handler(int irq, void *arg)
42800 if ((prim_start & ~0x03) != (prim_end & ~0x03))
42801 MGA_WRITE(MGA_PRIMEND, prim_end);
42802
42803 - atomic_inc(&dev_priv->last_fence_retired);
42804 + atomic_inc_unchecked(&dev_priv->last_fence_retired);
42805 wake_up(&dev_priv->fence_queue);
42806 handled = 1;
42807 }
42808 @@ -129,7 +129,7 @@ int mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence)
42809 * using fences.
42810 */
42811 DRM_WAIT_ON(ret, dev_priv->fence_queue, 3 * HZ,
42812 - (((cur_fence = atomic_read(&dev_priv->last_fence_retired))
42813 + (((cur_fence = atomic_read_unchecked(&dev_priv->last_fence_retired))
42814 - *sequence) <= (1 << 23)));
42815
42816 *sequence = cur_fence;
42817 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
42818 index 0190b69..60c3eaf 100644
42819 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
42820 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
42821 @@ -963,7 +963,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios,
42822 struct bit_table {
42823 const char id;
42824 int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
42825 -};
42826 +} __no_const;
42827
42828 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
42829
42830 diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
42831 index 477cbb1..109b826 100644
42832 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
42833 +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
42834 @@ -946,7 +946,8 @@ static struct drm_driver
42835 driver_stub = {
42836 .driver_features =
42837 DRIVER_USE_AGP |
42838 - DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER,
42839 + DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER |
42840 + DRIVER_KMS_LEGACY_CONTEXT,
42841
42842 .load = nouveau_drm_load,
42843 .unload = nouveau_drm_unload,
42844 diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h
42845 index dd72652..1fd2368 100644
42846 --- a/drivers/gpu/drm/nouveau/nouveau_drm.h
42847 +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h
42848 @@ -123,7 +123,6 @@ struct nouveau_drm {
42849 struct drm_global_reference mem_global_ref;
42850 struct ttm_bo_global_ref bo_global_ref;
42851 struct ttm_bo_device bdev;
42852 - atomic_t validate_sequence;
42853 int (*move)(struct nouveau_channel *,
42854 struct ttm_buffer_object *,
42855 struct ttm_mem_reg *, struct ttm_mem_reg *);
42856 diff --git a/drivers/gpu/drm/nouveau/nouveau_ioc32.c b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
42857 index 462679a..88e32a7 100644
42858 --- a/drivers/gpu/drm/nouveau/nouveau_ioc32.c
42859 +++ b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
42860 @@ -50,7 +50,7 @@ long nouveau_compat_ioctl(struct file *filp, unsigned int cmd,
42861 unsigned long arg)
42862 {
42863 unsigned int nr = DRM_IOCTL_NR(cmd);
42864 - drm_ioctl_compat_t *fn = NULL;
42865 + drm_ioctl_compat_t fn = NULL;
42866 int ret;
42867
42868 if (nr < DRM_COMMAND_BASE)
42869 diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
42870 index 7464aef3..c63ae4f 100644
42871 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
42872 +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
42873 @@ -130,11 +130,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
42874 }
42875
42876 const struct ttm_mem_type_manager_func nouveau_vram_manager = {
42877 - nouveau_vram_manager_init,
42878 - nouveau_vram_manager_fini,
42879 - nouveau_vram_manager_new,
42880 - nouveau_vram_manager_del,
42881 - nouveau_vram_manager_debug
42882 + .init = nouveau_vram_manager_init,
42883 + .takedown = nouveau_vram_manager_fini,
42884 + .get_node = nouveau_vram_manager_new,
42885 + .put_node = nouveau_vram_manager_del,
42886 + .debug = nouveau_vram_manager_debug
42887 };
42888
42889 static int
42890 @@ -207,11 +207,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
42891 }
42892
42893 const struct ttm_mem_type_manager_func nouveau_gart_manager = {
42894 - nouveau_gart_manager_init,
42895 - nouveau_gart_manager_fini,
42896 - nouveau_gart_manager_new,
42897 - nouveau_gart_manager_del,
42898 - nouveau_gart_manager_debug
42899 + .init = nouveau_gart_manager_init,
42900 + .takedown = nouveau_gart_manager_fini,
42901 + .get_node = nouveau_gart_manager_new,
42902 + .put_node = nouveau_gart_manager_del,
42903 + .debug = nouveau_gart_manager_debug
42904 };
42905
42906 /*XXX*/
42907 @@ -280,11 +280,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
42908 }
42909
42910 const struct ttm_mem_type_manager_func nv04_gart_manager = {
42911 - nv04_gart_manager_init,
42912 - nv04_gart_manager_fini,
42913 - nv04_gart_manager_new,
42914 - nv04_gart_manager_del,
42915 - nv04_gart_manager_debug
42916 + .init = nv04_gart_manager_init,
42917 + .takedown = nv04_gart_manager_fini,
42918 + .get_node = nv04_gart_manager_new,
42919 + .put_node = nv04_gart_manager_del,
42920 + .debug = nv04_gart_manager_debug
42921 };
42922
42923 int
42924 diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
42925 index c7592ec..dd45ebc 100644
42926 --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
42927 +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
42928 @@ -72,7 +72,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
42929 * locking inversion with the driver load path. And the access here is
42930 * completely racy anyway. So don't bother with locking for now.
42931 */
42932 - return dev->open_count == 0;
42933 + return local_read(&dev->open_count) == 0;
42934 }
42935
42936 static const struct vga_switcheroo_client_ops
42937 diff --git a/drivers/gpu/drm/omapdrm/Makefile b/drivers/gpu/drm/omapdrm/Makefile
42938 index 778372b..4b81cb4 100644
42939 --- a/drivers/gpu/drm/omapdrm/Makefile
42940 +++ b/drivers/gpu/drm/omapdrm/Makefile
42941 @@ -3,7 +3,7 @@
42942 # Direct Rendering Infrastructure (DRI)
42943 #
42944
42945 -ccflags-y := -Iinclude/drm -Werror
42946 +ccflags-y := -Iinclude/drm
42947 omapdrm-y := omap_drv.o \
42948 omap_irq.o \
42949 omap_debugfs.o \
42950 diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c
42951 index fdc1833..f307630 100644
42952 --- a/drivers/gpu/drm/qxl/qxl_cmd.c
42953 +++ b/drivers/gpu/drm/qxl/qxl_cmd.c
42954 @@ -285,27 +285,27 @@ static int wait_for_io_cmd_user(struct qxl_device *qdev, uint8_t val, long port,
42955 int ret;
42956
42957 mutex_lock(&qdev->async_io_mutex);
42958 - irq_num = atomic_read(&qdev->irq_received_io_cmd);
42959 + irq_num = atomic_read_unchecked(&qdev->irq_received_io_cmd);
42960 if (qdev->last_sent_io_cmd > irq_num) {
42961 if (intr)
42962 ret = wait_event_interruptible_timeout(qdev->io_cmd_event,
42963 - atomic_read(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42964 + atomic_read_unchecked(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42965 else
42966 ret = wait_event_timeout(qdev->io_cmd_event,
42967 - atomic_read(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42968 + atomic_read_unchecked(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42969 /* 0 is timeout, just bail the "hw" has gone away */
42970 if (ret <= 0)
42971 goto out;
42972 - irq_num = atomic_read(&qdev->irq_received_io_cmd);
42973 + irq_num = atomic_read_unchecked(&qdev->irq_received_io_cmd);
42974 }
42975 outb(val, addr);
42976 qdev->last_sent_io_cmd = irq_num + 1;
42977 if (intr)
42978 ret = wait_event_interruptible_timeout(qdev->io_cmd_event,
42979 - atomic_read(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42980 + atomic_read_unchecked(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42981 else
42982 ret = wait_event_timeout(qdev->io_cmd_event,
42983 - atomic_read(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42984 + atomic_read_unchecked(&qdev->irq_received_io_cmd) > irq_num, 5*HZ);
42985 out:
42986 if (ret > 0)
42987 ret = 0;
42988 diff --git a/drivers/gpu/drm/qxl/qxl_debugfs.c b/drivers/gpu/drm/qxl/qxl_debugfs.c
42989 index 6911b8c..89d6867 100644
42990 --- a/drivers/gpu/drm/qxl/qxl_debugfs.c
42991 +++ b/drivers/gpu/drm/qxl/qxl_debugfs.c
42992 @@ -42,10 +42,10 @@ qxl_debugfs_irq_received(struct seq_file *m, void *data)
42993 struct drm_info_node *node = (struct drm_info_node *) m->private;
42994 struct qxl_device *qdev = node->minor->dev->dev_private;
42995
42996 - seq_printf(m, "%d\n", atomic_read(&qdev->irq_received));
42997 - seq_printf(m, "%d\n", atomic_read(&qdev->irq_received_display));
42998 - seq_printf(m, "%d\n", atomic_read(&qdev->irq_received_cursor));
42999 - seq_printf(m, "%d\n", atomic_read(&qdev->irq_received_io_cmd));
43000 + seq_printf(m, "%d\n", atomic_read_unchecked(&qdev->irq_received));
43001 + seq_printf(m, "%d\n", atomic_read_unchecked(&qdev->irq_received_display));
43002 + seq_printf(m, "%d\n", atomic_read_unchecked(&qdev->irq_received_cursor));
43003 + seq_printf(m, "%d\n", atomic_read_unchecked(&qdev->irq_received_io_cmd));
43004 seq_printf(m, "%d\n", qdev->irq_received_error);
43005 return 0;
43006 }
43007 diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
43008 index 01a8694..584fb48 100644
43009 --- a/drivers/gpu/drm/qxl/qxl_drv.h
43010 +++ b/drivers/gpu/drm/qxl/qxl_drv.h
43011 @@ -290,10 +290,10 @@ struct qxl_device {
43012 unsigned int last_sent_io_cmd;
43013
43014 /* interrupt handling */
43015 - atomic_t irq_received;
43016 - atomic_t irq_received_display;
43017 - atomic_t irq_received_cursor;
43018 - atomic_t irq_received_io_cmd;
43019 + atomic_unchecked_t irq_received;
43020 + atomic_unchecked_t irq_received_display;
43021 + atomic_unchecked_t irq_received_cursor;
43022 + atomic_unchecked_t irq_received_io_cmd;
43023 unsigned irq_received_error;
43024 wait_queue_head_t display_event;
43025 wait_queue_head_t cursor_event;
43026 diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
43027 index bda5c5f..140ac46 100644
43028 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c
43029 +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
43030 @@ -183,7 +183,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
43031
43032 /* TODO copy slow path code from i915 */
43033 fb_cmd = qxl_bo_kmap_atomic_page(qdev, cmd_bo, (release->release_offset & PAGE_SIZE));
43034 - unwritten = __copy_from_user_inatomic_nocache(fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_SIZE), (void *)(unsigned long)cmd->command, cmd->command_size);
43035 + unwritten = __copy_from_user_inatomic_nocache(fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_SIZE), (void __force_user *)(unsigned long)cmd->command, cmd->command_size);
43036
43037 {
43038 struct qxl_drawable *draw = fb_cmd;
43039 @@ -203,7 +203,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
43040 struct drm_qxl_reloc reloc;
43041
43042 if (copy_from_user(&reloc,
43043 - &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i],
43044 + &((struct drm_qxl_reloc __force_user *)(uintptr_t)cmd->relocs)[i],
43045 sizeof(reloc))) {
43046 ret = -EFAULT;
43047 goto out_free_bos;
43048 @@ -282,10 +282,10 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data,
43049
43050 for (cmd_num = 0; cmd_num < execbuffer->commands_num; ++cmd_num) {
43051
43052 - struct drm_qxl_command *commands =
43053 - (struct drm_qxl_command *)(uintptr_t)execbuffer->commands;
43054 + struct drm_qxl_command __user *commands =
43055 + (struct drm_qxl_command __user *)(uintptr_t)execbuffer->commands;
43056
43057 - if (copy_from_user(&user_cmd, &commands[cmd_num],
43058 + if (copy_from_user(&user_cmd, (struct drm_qxl_command __force_user *)&commands[cmd_num],
43059 sizeof(user_cmd)))
43060 return -EFAULT;
43061
43062 diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c
43063 index 0bf1e20..42a7310 100644
43064 --- a/drivers/gpu/drm/qxl/qxl_irq.c
43065 +++ b/drivers/gpu/drm/qxl/qxl_irq.c
43066 @@ -36,19 +36,19 @@ irqreturn_t qxl_irq_handler(int irq, void *arg)
43067 if (!pending)
43068 return IRQ_NONE;
43069
43070 - atomic_inc(&qdev->irq_received);
43071 + atomic_inc_unchecked(&qdev->irq_received);
43072
43073 if (pending & QXL_INTERRUPT_DISPLAY) {
43074 - atomic_inc(&qdev->irq_received_display);
43075 + atomic_inc_unchecked(&qdev->irq_received_display);
43076 wake_up_all(&qdev->display_event);
43077 qxl_queue_garbage_collect(qdev, false);
43078 }
43079 if (pending & QXL_INTERRUPT_CURSOR) {
43080 - atomic_inc(&qdev->irq_received_cursor);
43081 + atomic_inc_unchecked(&qdev->irq_received_cursor);
43082 wake_up_all(&qdev->cursor_event);
43083 }
43084 if (pending & QXL_INTERRUPT_IO_CMD) {
43085 - atomic_inc(&qdev->irq_received_io_cmd);
43086 + atomic_inc_unchecked(&qdev->irq_received_io_cmd);
43087 wake_up_all(&qdev->io_cmd_event);
43088 }
43089 if (pending & QXL_INTERRUPT_ERROR) {
43090 @@ -85,10 +85,10 @@ int qxl_irq_init(struct qxl_device *qdev)
43091 init_waitqueue_head(&qdev->io_cmd_event);
43092 INIT_WORK(&qdev->client_monitors_config_work,
43093 qxl_client_monitors_config_work_func);
43094 - atomic_set(&qdev->irq_received, 0);
43095 - atomic_set(&qdev->irq_received_display, 0);
43096 - atomic_set(&qdev->irq_received_cursor, 0);
43097 - atomic_set(&qdev->irq_received_io_cmd, 0);
43098 + atomic_set_unchecked(&qdev->irq_received, 0);
43099 + atomic_set_unchecked(&qdev->irq_received_display, 0);
43100 + atomic_set_unchecked(&qdev->irq_received_cursor, 0);
43101 + atomic_set_unchecked(&qdev->irq_received_io_cmd, 0);
43102 qdev->irq_received_error = 0;
43103 ret = drm_irq_install(qdev->ddev, qdev->ddev->pdev->irq);
43104 qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
43105 diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
43106 index 0cbc4c9..0e46686 100644
43107 --- a/drivers/gpu/drm/qxl/qxl_ttm.c
43108 +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
43109 @@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev)
43110 }
43111 }
43112
43113 -static struct vm_operations_struct qxl_ttm_vm_ops;
43114 +static vm_operations_struct_no_const qxl_ttm_vm_ops __read_only;
43115 static const struct vm_operations_struct *ttm_vm_ops;
43116
43117 static int qxl_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
43118 @@ -145,8 +145,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
43119 return r;
43120 if (unlikely(ttm_vm_ops == NULL)) {
43121 ttm_vm_ops = vma->vm_ops;
43122 + pax_open_kernel();
43123 qxl_ttm_vm_ops = *ttm_vm_ops;
43124 qxl_ttm_vm_ops.fault = &qxl_ttm_fault;
43125 + pax_close_kernel();
43126 }
43127 vma->vm_ops = &qxl_ttm_vm_ops;
43128 return 0;
43129 @@ -464,25 +466,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
43130 static int qxl_ttm_debugfs_init(struct qxl_device *qdev)
43131 {
43132 #if defined(CONFIG_DEBUG_FS)
43133 - static struct drm_info_list qxl_mem_types_list[QXL_DEBUGFS_MEM_TYPES];
43134 - static char qxl_mem_types_names[QXL_DEBUGFS_MEM_TYPES][32];
43135 - unsigned i;
43136 + static struct drm_info_list qxl_mem_types_list[QXL_DEBUGFS_MEM_TYPES] = {
43137 + {
43138 + .name = "qxl_mem_mm",
43139 + .show = &qxl_mm_dump_table,
43140 + },
43141 + {
43142 + .name = "qxl_surf_mm",
43143 + .show = &qxl_mm_dump_table,
43144 + }
43145 + };
43146
43147 - for (i = 0; i < QXL_DEBUGFS_MEM_TYPES; i++) {
43148 - if (i == 0)
43149 - sprintf(qxl_mem_types_names[i], "qxl_mem_mm");
43150 - else
43151 - sprintf(qxl_mem_types_names[i], "qxl_surf_mm");
43152 - qxl_mem_types_list[i].name = qxl_mem_types_names[i];
43153 - qxl_mem_types_list[i].show = &qxl_mm_dump_table;
43154 - qxl_mem_types_list[i].driver_features = 0;
43155 - if (i == 0)
43156 - qxl_mem_types_list[i].data = qdev->mman.bdev.man[TTM_PL_VRAM].priv;
43157 - else
43158 - qxl_mem_types_list[i].data = qdev->mman.bdev.man[TTM_PL_PRIV0].priv;
43159 + pax_open_kernel();
43160 + *(void **)&qxl_mem_types_list[0].data = qdev->mman.bdev.man[TTM_PL_VRAM].priv;
43161 + *(void **)&qxl_mem_types_list[1].data = qdev->mman.bdev.man[TTM_PL_PRIV0].priv;
43162 + pax_close_kernel();
43163
43164 - }
43165 - return qxl_debugfs_add_files(qdev, qxl_mem_types_list, i);
43166 + return qxl_debugfs_add_files(qdev, qxl_mem_types_list, QXL_DEBUGFS_MEM_TYPES);
43167 #else
43168 return 0;
43169 #endif
43170 diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
43171 index 2c45ac9..5d740f8 100644
43172 --- a/drivers/gpu/drm/r128/r128_cce.c
43173 +++ b/drivers/gpu/drm/r128/r128_cce.c
43174 @@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init)
43175
43176 /* GH: Simple idle check.
43177 */
43178 - atomic_set(&dev_priv->idle_count, 0);
43179 + atomic_set_unchecked(&dev_priv->idle_count, 0);
43180
43181 /* We don't support anything other than bus-mastering ring mode,
43182 * but the ring can be in either AGP or PCI space for the ring
43183 diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h
43184 index 723e5d6..102dbaf 100644
43185 --- a/drivers/gpu/drm/r128/r128_drv.h
43186 +++ b/drivers/gpu/drm/r128/r128_drv.h
43187 @@ -93,14 +93,14 @@ typedef struct drm_r128_private {
43188 int is_pci;
43189 unsigned long cce_buffers_offset;
43190
43191 - atomic_t idle_count;
43192 + atomic_unchecked_t idle_count;
43193
43194 int page_flipping;
43195 int current_page;
43196 u32 crtc_offset;
43197 u32 crtc_offset_cntl;
43198
43199 - atomic_t vbl_received;
43200 + atomic_unchecked_t vbl_received;
43201
43202 u32 color_fmt;
43203 unsigned int front_offset;
43204 diff --git a/drivers/gpu/drm/r128/r128_ioc32.c b/drivers/gpu/drm/r128/r128_ioc32.c
43205 index 663f38c..ec159a1 100644
43206 --- a/drivers/gpu/drm/r128/r128_ioc32.c
43207 +++ b/drivers/gpu/drm/r128/r128_ioc32.c
43208 @@ -178,7 +178,7 @@ static int compat_r128_getparam(struct file *file, unsigned int cmd,
43209 return drm_ioctl(file, DRM_IOCTL_R128_GETPARAM, (unsigned long)getparam);
43210 }
43211
43212 -drm_ioctl_compat_t *r128_compat_ioctls[] = {
43213 +drm_ioctl_compat_t r128_compat_ioctls[] = {
43214 [DRM_R128_INIT] = compat_r128_init,
43215 [DRM_R128_DEPTH] = compat_r128_depth,
43216 [DRM_R128_STIPPLE] = compat_r128_stipple,
43217 @@ -197,17 +197,13 @@ drm_ioctl_compat_t *r128_compat_ioctls[] = {
43218 long r128_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
43219 {
43220 unsigned int nr = DRM_IOCTL_NR(cmd);
43221 - drm_ioctl_compat_t *fn = NULL;
43222 int ret;
43223
43224 if (nr < DRM_COMMAND_BASE)
43225 return drm_compat_ioctl(filp, cmd, arg);
43226
43227 - if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls))
43228 - fn = r128_compat_ioctls[nr - DRM_COMMAND_BASE];
43229 -
43230 - if (fn != NULL)
43231 - ret = (*fn) (filp, cmd, arg);
43232 + if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls) && r128_compat_ioctls[nr - DRM_COMMAND_BASE])
43233 + ret = (*r128_compat_ioctls[nr - DRM_COMMAND_BASE]) (filp, cmd, arg);
43234 else
43235 ret = drm_ioctl(filp, cmd, arg);
43236
43237 diff --git a/drivers/gpu/drm/r128/r128_irq.c b/drivers/gpu/drm/r128/r128_irq.c
43238 index c2ae496..30b5993 100644
43239 --- a/drivers/gpu/drm/r128/r128_irq.c
43240 +++ b/drivers/gpu/drm/r128/r128_irq.c
43241 @@ -41,7 +41,7 @@ u32 r128_get_vblank_counter(struct drm_device *dev, int crtc)
43242 if (crtc != 0)
43243 return 0;
43244
43245 - return atomic_read(&dev_priv->vbl_received);
43246 + return atomic_read_unchecked(&dev_priv->vbl_received);
43247 }
43248
43249 irqreturn_t r128_driver_irq_handler(int irq, void *arg)
43250 @@ -55,7 +55,7 @@ irqreturn_t r128_driver_irq_handler(int irq, void *arg)
43251 /* VBLANK interrupt */
43252 if (status & R128_CRTC_VBLANK_INT) {
43253 R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK);
43254 - atomic_inc(&dev_priv->vbl_received);
43255 + atomic_inc_unchecked(&dev_priv->vbl_received);
43256 drm_handle_vblank(dev, 0);
43257 return IRQ_HANDLED;
43258 }
43259 diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c
43260 index 8fd2d9f..18c9660 100644
43261 --- a/drivers/gpu/drm/r128/r128_state.c
43262 +++ b/drivers/gpu/drm/r128/r128_state.c
43263 @@ -320,10 +320,10 @@ static void r128_clear_box(drm_r128_private_t *dev_priv,
43264
43265 static void r128_cce_performance_boxes(drm_r128_private_t *dev_priv)
43266 {
43267 - if (atomic_read(&dev_priv->idle_count) == 0)
43268 + if (atomic_read_unchecked(&dev_priv->idle_count) == 0)
43269 r128_clear_box(dev_priv, 64, 4, 8, 8, 0, 255, 0);
43270 else
43271 - atomic_set(&dev_priv->idle_count, 0);
43272 + atomic_set_unchecked(&dev_priv->idle_count, 0);
43273 }
43274
43275 #endif
43276 diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
43277 index b928c17..e5d9400 100644
43278 --- a/drivers/gpu/drm/radeon/mkregtable.c
43279 +++ b/drivers/gpu/drm/radeon/mkregtable.c
43280 @@ -624,14 +624,14 @@ static int parser_auth(struct table *t, const char *filename)
43281 regex_t mask_rex;
43282 regmatch_t match[4];
43283 char buf[1024];
43284 - size_t end;
43285 + long end;
43286 int len;
43287 int done = 0;
43288 int r;
43289 unsigned o;
43290 struct offset *offset;
43291 char last_reg_s[10];
43292 - int last_reg;
43293 + unsigned long last_reg;
43294
43295 if (regcomp
43296 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
43297 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
43298 index d8319da..d6e066f 100644
43299 --- a/drivers/gpu/drm/radeon/radeon_device.c
43300 +++ b/drivers/gpu/drm/radeon/radeon_device.c
43301 @@ -1253,7 +1253,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
43302 * locking inversion with the driver load path. And the access here is
43303 * completely racy anyway. So don't bother with locking for now.
43304 */
43305 - return dev->open_count == 0;
43306 + return local_read(&dev->open_count) == 0;
43307 }
43308
43309 static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
43310 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
43311 index 46bd393..6ae4719 100644
43312 --- a/drivers/gpu/drm/radeon/radeon_drv.h
43313 +++ b/drivers/gpu/drm/radeon/radeon_drv.h
43314 @@ -264,7 +264,7 @@ typedef struct drm_radeon_private {
43315
43316 /* SW interrupt */
43317 wait_queue_head_t swi_queue;
43318 - atomic_t swi_emitted;
43319 + atomic_unchecked_t swi_emitted;
43320 int vblank_crtc;
43321 uint32_t irq_enable_reg;
43322 uint32_t r500_disp_irq_reg;
43323 diff --git a/drivers/gpu/drm/radeon/radeon_ioc32.c b/drivers/gpu/drm/radeon/radeon_ioc32.c
43324 index 0b98ea1..a3c770f 100644
43325 --- a/drivers/gpu/drm/radeon/radeon_ioc32.c
43326 +++ b/drivers/gpu/drm/radeon/radeon_ioc32.c
43327 @@ -358,7 +358,7 @@ static int compat_radeon_cp_setparam(struct file *file, unsigned int cmd,
43328 request = compat_alloc_user_space(sizeof(*request));
43329 if (!access_ok(VERIFY_WRITE, request, sizeof(*request))
43330 || __put_user(req32.param, &request->param)
43331 - || __put_user((void __user *)(unsigned long)req32.value,
43332 + || __put_user((unsigned long)req32.value,
43333 &request->value))
43334 return -EFAULT;
43335
43336 @@ -368,7 +368,7 @@ static int compat_radeon_cp_setparam(struct file *file, unsigned int cmd,
43337 #define compat_radeon_cp_setparam NULL
43338 #endif /* X86_64 || IA64 */
43339
43340 -static drm_ioctl_compat_t *radeon_compat_ioctls[] = {
43341 +static drm_ioctl_compat_t radeon_compat_ioctls[] = {
43342 [DRM_RADEON_CP_INIT] = compat_radeon_cp_init,
43343 [DRM_RADEON_CLEAR] = compat_radeon_cp_clear,
43344 [DRM_RADEON_STIPPLE] = compat_radeon_cp_stipple,
43345 @@ -393,17 +393,13 @@ static drm_ioctl_compat_t *radeon_compat_ioctls[] = {
43346 long radeon_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
43347 {
43348 unsigned int nr = DRM_IOCTL_NR(cmd);
43349 - drm_ioctl_compat_t *fn = NULL;
43350 int ret;
43351
43352 if (nr < DRM_COMMAND_BASE)
43353 return drm_compat_ioctl(filp, cmd, arg);
43354
43355 - if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls))
43356 - fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE];
43357 -
43358 - if (fn != NULL)
43359 - ret = (*fn) (filp, cmd, arg);
43360 + if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls) && radeon_compat_ioctls[nr - DRM_COMMAND_BASE])
43361 + ret = (*radeon_compat_ioctls[nr - DRM_COMMAND_BASE]) (filp, cmd, arg);
43362 else
43363 ret = drm_ioctl(filp, cmd, arg);
43364
43365 diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
43366 index 244b19b..c19226d 100644
43367 --- a/drivers/gpu/drm/radeon/radeon_irq.c
43368 +++ b/drivers/gpu/drm/radeon/radeon_irq.c
43369 @@ -226,8 +226,8 @@ static int radeon_emit_irq(struct drm_device * dev)
43370 unsigned int ret;
43371 RING_LOCALS;
43372
43373 - atomic_inc(&dev_priv->swi_emitted);
43374 - ret = atomic_read(&dev_priv->swi_emitted);
43375 + atomic_inc_unchecked(&dev_priv->swi_emitted);
43376 + ret = atomic_read_unchecked(&dev_priv->swi_emitted);
43377
43378 BEGIN_RING(4);
43379 OUT_RING_REG(RADEON_LAST_SWI_REG, ret);
43380 @@ -353,7 +353,7 @@ int radeon_driver_irq_postinstall(struct drm_device *dev)
43381 drm_radeon_private_t *dev_priv =
43382 (drm_radeon_private_t *) dev->dev_private;
43383
43384 - atomic_set(&dev_priv->swi_emitted, 0);
43385 + atomic_set_unchecked(&dev_priv->swi_emitted, 0);
43386 init_waitqueue_head(&dev_priv->swi_queue);
43387
43388 dev->max_vblank_count = 0x001fffff;
43389 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
43390 index 15aee72..cda326e 100644
43391 --- a/drivers/gpu/drm/radeon/radeon_state.c
43392 +++ b/drivers/gpu/drm/radeon/radeon_state.c
43393 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
43394 if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS)
43395 sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS;
43396
43397 - if (copy_from_user(&depth_boxes, clear->depth_boxes,
43398 + if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS || copy_from_user(&depth_boxes, clear->depth_boxes,
43399 sarea_priv->nbox * sizeof(depth_boxes[0])))
43400 return -EFAULT;
43401
43402 @@ -3031,7 +3031,7 @@ static int radeon_cp_getparam(struct drm_device *dev, void *data, struct drm_fil
43403 {
43404 drm_radeon_private_t *dev_priv = dev->dev_private;
43405 drm_radeon_getparam_t *param = data;
43406 - int value;
43407 + int value = 0;
43408
43409 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
43410
43411 diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
43412 index 06ac59fe..57e0681 100644
43413 --- a/drivers/gpu/drm/radeon/radeon_ttm.c
43414 +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
43415 @@ -961,7 +961,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
43416 man->size = size >> PAGE_SHIFT;
43417 }
43418
43419 -static struct vm_operations_struct radeon_ttm_vm_ops;
43420 +static vm_operations_struct_no_const radeon_ttm_vm_ops __read_only;
43421 static const struct vm_operations_struct *ttm_vm_ops = NULL;
43422
43423 static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
43424 @@ -1002,8 +1002,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
43425 }
43426 if (unlikely(ttm_vm_ops == NULL)) {
43427 ttm_vm_ops = vma->vm_ops;
43428 + pax_open_kernel();
43429 radeon_ttm_vm_ops = *ttm_vm_ops;
43430 radeon_ttm_vm_ops.fault = &radeon_ttm_fault;
43431 + pax_close_kernel();
43432 }
43433 vma->vm_ops = &radeon_ttm_vm_ops;
43434 return 0;
43435 diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
43436 index a287e4f..df1d5dd 100644
43437 --- a/drivers/gpu/drm/tegra/dc.c
43438 +++ b/drivers/gpu/drm/tegra/dc.c
43439 @@ -1594,7 +1594,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
43440 }
43441
43442 for (i = 0; i < ARRAY_SIZE(debugfs_files); i++)
43443 - dc->debugfs_files[i].data = dc;
43444 + *(void **)&dc->debugfs_files[i].data = dc;
43445
43446 err = drm_debugfs_create_files(dc->debugfs_files,
43447 ARRAY_SIZE(debugfs_files),
43448 diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
43449 index ed970f6..4eeea42 100644
43450 --- a/drivers/gpu/drm/tegra/dsi.c
43451 +++ b/drivers/gpu/drm/tegra/dsi.c
43452 @@ -62,7 +62,7 @@ struct tegra_dsi {
43453 struct clk *clk_lp;
43454 struct clk *clk;
43455
43456 - struct drm_info_list *debugfs_files;
43457 + drm_info_list_no_const *debugfs_files;
43458 struct drm_minor *minor;
43459 struct dentry *debugfs;
43460
43461 diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
43462 index 06ab178..b5324e4 100644
43463 --- a/drivers/gpu/drm/tegra/hdmi.c
43464 +++ b/drivers/gpu/drm/tegra/hdmi.c
43465 @@ -64,7 +64,7 @@ struct tegra_hdmi {
43466 bool stereo;
43467 bool dvi;
43468
43469 - struct drm_info_list *debugfs_files;
43470 + drm_info_list_no_const *debugfs_files;
43471 struct drm_minor *minor;
43472 struct dentry *debugfs;
43473 };
43474 diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
43475 index 7591d89..463e2b6 100644
43476 --- a/drivers/gpu/drm/tegra/sor.c
43477 +++ b/drivers/gpu/drm/tegra/sor.c
43478 @@ -826,8 +826,11 @@ static int tegra_sor_debugfs_init(struct tegra_sor *sor,
43479 goto remove;
43480 }
43481
43482 - for (i = 0; i < ARRAY_SIZE(debugfs_files); i++)
43483 - sor->debugfs_files[i].data = sor;
43484 + for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) {
43485 + pax_open_kernel();
43486 + *(void **)&sor->debugfs_files[i].data = sor;
43487 + pax_close_kernel();
43488 + }
43489
43490 err = drm_debugfs_create_files(sor->debugfs_files,
43491 ARRAY_SIZE(debugfs_files),
43492 diff --git a/drivers/gpu/drm/tilcdc/Makefile b/drivers/gpu/drm/tilcdc/Makefile
43493 index deeca48..54e1b6c 100644
43494 --- a/drivers/gpu/drm/tilcdc/Makefile
43495 +++ b/drivers/gpu/drm/tilcdc/Makefile
43496 @@ -1,7 +1,7 @@
43497 ccflags-y := -Iinclude/drm
43498 -ifeq (, $(findstring -W,$(EXTRA_CFLAGS)))
43499 - ccflags-y += -Werror
43500 -endif
43501 +#ifeq (, $(findstring -W,$(EXTRA_CFLAGS)))
43502 +# ccflags-y += -Werror
43503 +#endif
43504
43505 obj-$(CONFIG_DRM_TILCDC_SLAVE_COMPAT) += tilcdc_slave_compat.o \
43506 tilcdc_slave_compat.dtb.o
43507 diff --git a/drivers/gpu/drm/ttm/ttm_bo_manager.c b/drivers/gpu/drm/ttm/ttm_bo_manager.c
43508 index aa0bd054..aea6a01 100644
43509 --- a/drivers/gpu/drm/ttm/ttm_bo_manager.c
43510 +++ b/drivers/gpu/drm/ttm/ttm_bo_manager.c
43511 @@ -148,10 +148,10 @@ static void ttm_bo_man_debug(struct ttm_mem_type_manager *man,
43512 }
43513
43514 const struct ttm_mem_type_manager_func ttm_bo_manager_func = {
43515 - ttm_bo_man_init,
43516 - ttm_bo_man_takedown,
43517 - ttm_bo_man_get_node,
43518 - ttm_bo_man_put_node,
43519 - ttm_bo_man_debug
43520 + .init = ttm_bo_man_init,
43521 + .takedown = ttm_bo_man_takedown,
43522 + .get_node = ttm_bo_man_get_node,
43523 + .put_node = ttm_bo_man_put_node,
43524 + .debug = ttm_bo_man_debug
43525 };
43526 EXPORT_SYMBOL(ttm_bo_manager_func);
43527 diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c
43528 index a1803fb..c53f6b0 100644
43529 --- a/drivers/gpu/drm/ttm/ttm_memory.c
43530 +++ b/drivers/gpu/drm/ttm/ttm_memory.c
43531 @@ -264,7 +264,7 @@ static int ttm_mem_init_kernel_zone(struct ttm_mem_global *glob,
43532 zone->glob = glob;
43533 glob->zone_kernel = zone;
43534 ret = kobject_init_and_add(
43535 - &zone->kobj, &ttm_mem_zone_kobj_type, &glob->kobj, zone->name);
43536 + &zone->kobj, &ttm_mem_zone_kobj_type, &glob->kobj, "%s", zone->name);
43537 if (unlikely(ret != 0)) {
43538 kobject_put(&zone->kobj);
43539 return ret;
43540 @@ -348,7 +348,7 @@ static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob,
43541 zone->glob = glob;
43542 glob->zone_dma32 = zone;
43543 ret = kobject_init_and_add(
43544 - &zone->kobj, &ttm_mem_zone_kobj_type, &glob->kobj, zone->name);
43545 + &zone->kobj, &ttm_mem_zone_kobj_type, &glob->kobj, "%s", zone->name);
43546 if (unlikely(ret != 0)) {
43547 kobject_put(&zone->kobj);
43548 return ret;
43549 diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
43550 index 025c429..314062f 100644
43551 --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
43552 +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
43553 @@ -54,7 +54,7 @@
43554
43555 #define NUM_PAGES_TO_ALLOC (PAGE_SIZE/sizeof(struct page *))
43556 #define SMALL_ALLOCATION 16
43557 -#define FREE_ALL_PAGES (~0U)
43558 +#define FREE_ALL_PAGES (~0UL)
43559 /* times are in msecs */
43560 #define PAGE_FREE_INTERVAL 1000
43561
43562 @@ -299,15 +299,14 @@ static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
43563 * @free_all: If set to true will free all pages in pool
43564 * @use_static: Safe to use static buffer
43565 **/
43566 -static int ttm_page_pool_free(struct ttm_page_pool *pool, unsigned nr_free,
43567 +static unsigned long ttm_page_pool_free(struct ttm_page_pool *pool, unsigned long nr_free,
43568 bool use_static)
43569 {
43570 static struct page *static_buf[NUM_PAGES_TO_ALLOC];
43571 unsigned long irq_flags;
43572 struct page *p;
43573 struct page **pages_to_free;
43574 - unsigned freed_pages = 0,
43575 - npages_to_free = nr_free;
43576 + unsigned long freed_pages = 0, npages_to_free = nr_free;
43577
43578 if (NUM_PAGES_TO_ALLOC < nr_free)
43579 npages_to_free = NUM_PAGES_TO_ALLOC;
43580 @@ -371,7 +370,8 @@ restart:
43581 __list_del(&p->lru, &pool->list);
43582
43583 ttm_pool_update_free_locked(pool, freed_pages);
43584 - nr_free -= freed_pages;
43585 + if (likely(nr_free != FREE_ALL_PAGES))
43586 + nr_free -= freed_pages;
43587 }
43588
43589 spin_unlock_irqrestore(&pool->lock, irq_flags);
43590 @@ -399,7 +399,7 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
43591 unsigned i;
43592 unsigned pool_offset;
43593 struct ttm_page_pool *pool;
43594 - int shrink_pages = sc->nr_to_scan;
43595 + unsigned long shrink_pages = sc->nr_to_scan;
43596 unsigned long freed = 0;
43597
43598 if (!mutex_trylock(&lock))
43599 @@ -407,7 +407,7 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
43600 pool_offset = ++start_pool % NUM_POOLS;
43601 /* select start pool in round robin fashion */
43602 for (i = 0; i < NUM_POOLS; ++i) {
43603 - unsigned nr_free = shrink_pages;
43604 + unsigned long nr_free = shrink_pages;
43605 if (shrink_pages == 0)
43606 break;
43607 pool = &_manager->pools[(i + pool_offset)%NUM_POOLS];
43608 @@ -673,7 +673,7 @@ out:
43609 }
43610
43611 /* Put all pages in pages list to correct pool to wait for reuse */
43612 -static void ttm_put_pages(struct page **pages, unsigned npages, int flags,
43613 +static void ttm_put_pages(struct page **pages, unsigned long npages, int flags,
43614 enum ttm_caching_state cstate)
43615 {
43616 unsigned long irq_flags;
43617 @@ -728,7 +728,7 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
43618 struct list_head plist;
43619 struct page *p = NULL;
43620 gfp_t gfp_flags = GFP_USER;
43621 - unsigned count;
43622 + unsigned long count;
43623 int r;
43624
43625 /* set zero flag for page allocation if required */
43626 diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
43627 index 624d941..106fa1f 100644
43628 --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
43629 +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
43630 @@ -56,7 +56,7 @@
43631
43632 #define NUM_PAGES_TO_ALLOC (PAGE_SIZE/sizeof(struct page *))
43633 #define SMALL_ALLOCATION 4
43634 -#define FREE_ALL_PAGES (~0U)
43635 +#define FREE_ALL_PAGES (~0UL)
43636 /* times are in msecs */
43637 #define IS_UNDEFINED (0)
43638 #define IS_WC (1<<1)
43639 @@ -416,7 +416,7 @@ static void ttm_dma_page_put(struct dma_pool *pool, struct dma_page *d_page)
43640 * @nr_free: If set to true will free all pages in pool
43641 * @use_static: Safe to use static buffer
43642 **/
43643 -static unsigned ttm_dma_page_pool_free(struct dma_pool *pool, unsigned nr_free,
43644 +static unsigned long ttm_dma_page_pool_free(struct dma_pool *pool, unsigned long nr_free,
43645 bool use_static)
43646 {
43647 static struct page *static_buf[NUM_PAGES_TO_ALLOC];
43648 @@ -424,8 +424,7 @@ static unsigned ttm_dma_page_pool_free(struct dma_pool *pool, unsigned nr_free,
43649 struct dma_page *dma_p, *tmp;
43650 struct page **pages_to_free;
43651 struct list_head d_pages;
43652 - unsigned freed_pages = 0,
43653 - npages_to_free = nr_free;
43654 + unsigned long freed_pages = 0, npages_to_free = nr_free;
43655
43656 if (NUM_PAGES_TO_ALLOC < nr_free)
43657 npages_to_free = NUM_PAGES_TO_ALLOC;
43658 @@ -502,7 +501,8 @@ restart:
43659 /* remove range of pages from the pool */
43660 if (freed_pages) {
43661 ttm_pool_update_free_locked(pool, freed_pages);
43662 - nr_free -= freed_pages;
43663 + if (likely(nr_free != FREE_ALL_PAGES))
43664 + nr_free -= freed_pages;
43665 }
43666
43667 spin_unlock_irqrestore(&pool->lock, irq_flags);
43668 @@ -939,7 +939,7 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
43669 struct dma_page *d_page, *next;
43670 enum pool_type type;
43671 bool is_cached = false;
43672 - unsigned count = 0, i, npages = 0;
43673 + unsigned long count = 0, i, npages = 0;
43674 unsigned long irq_flags;
43675
43676 type = ttm_to_type(ttm->page_flags, ttm->caching_state);
43677 @@ -1014,7 +1014,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
43678 static unsigned start_pool;
43679 unsigned idx = 0;
43680 unsigned pool_offset;
43681 - unsigned shrink_pages = sc->nr_to_scan;
43682 + unsigned long shrink_pages = sc->nr_to_scan;
43683 struct device_pools *p;
43684 unsigned long freed = 0;
43685
43686 @@ -1027,7 +1027,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
43687 goto out;
43688 pool_offset = ++start_pool % _manager->npools;
43689 list_for_each_entry(p, &_manager->pools, pools) {
43690 - unsigned nr_free;
43691 + unsigned long nr_free;
43692
43693 if (!p->dev)
43694 continue;
43695 @@ -1041,7 +1041,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
43696 shrink_pages = ttm_dma_page_pool_free(p->pool, nr_free, true);
43697 freed += nr_free - shrink_pages;
43698
43699 - pr_debug("%s: (%s:%d) Asked to shrink %d, have %d more to go\n",
43700 + pr_debug("%s: (%s:%d) Asked to shrink %lu, have %lu more to go\n",
43701 p->pool->dev_name, p->pool->name, current->pid,
43702 nr_free, shrink_pages);
43703 }
43704 diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
43705 index 5fc16ce..1bd84ec 100644
43706 --- a/drivers/gpu/drm/udl/udl_fb.c
43707 +++ b/drivers/gpu/drm/udl/udl_fb.c
43708 @@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user)
43709 fb_deferred_io_cleanup(info);
43710 kfree(info->fbdefio);
43711 info->fbdefio = NULL;
43712 - info->fbops->fb_mmap = udl_fb_mmap;
43713 }
43714
43715 pr_warn("released /dev/fb%d user=%d count=%d\n",
43716 diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
43717 index ef8c500..01030c8 100644
43718 --- a/drivers/gpu/drm/via/via_drv.h
43719 +++ b/drivers/gpu/drm/via/via_drv.h
43720 @@ -53,7 +53,7 @@ typedef struct drm_via_ring_buffer {
43721 typedef uint32_t maskarray_t[5];
43722
43723 typedef struct drm_via_irq {
43724 - atomic_t irq_received;
43725 + atomic_unchecked_t irq_received;
43726 uint32_t pending_mask;
43727 uint32_t enable_mask;
43728 wait_queue_head_t irq_queue;
43729 @@ -77,7 +77,7 @@ typedef struct drm_via_private {
43730 struct timeval last_vblank;
43731 int last_vblank_valid;
43732 unsigned usec_per_vblank;
43733 - atomic_t vbl_received;
43734 + atomic_unchecked_t vbl_received;
43735 drm_via_state_t hc_state;
43736 char pci_buf[VIA_PCI_BUF_SIZE];
43737 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
43738 diff --git a/drivers/gpu/drm/via/via_irq.c b/drivers/gpu/drm/via/via_irq.c
43739 index 1319433..a993b0c 100644
43740 --- a/drivers/gpu/drm/via/via_irq.c
43741 +++ b/drivers/gpu/drm/via/via_irq.c
43742 @@ -101,7 +101,7 @@ u32 via_get_vblank_counter(struct drm_device *dev, int crtc)
43743 if (crtc != 0)
43744 return 0;
43745
43746 - return atomic_read(&dev_priv->vbl_received);
43747 + return atomic_read_unchecked(&dev_priv->vbl_received);
43748 }
43749
43750 irqreturn_t via_driver_irq_handler(int irq, void *arg)
43751 @@ -116,8 +116,8 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
43752
43753 status = VIA_READ(VIA_REG_INTERRUPT);
43754 if (status & VIA_IRQ_VBLANK_PENDING) {
43755 - atomic_inc(&dev_priv->vbl_received);
43756 - if (!(atomic_read(&dev_priv->vbl_received) & 0x0F)) {
43757 + atomic_inc_unchecked(&dev_priv->vbl_received);
43758 + if (!(atomic_read_unchecked(&dev_priv->vbl_received) & 0x0F)) {
43759 do_gettimeofday(&cur_vblank);
43760 if (dev_priv->last_vblank_valid) {
43761 dev_priv->usec_per_vblank =
43762 @@ -127,7 +127,7 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
43763 dev_priv->last_vblank = cur_vblank;
43764 dev_priv->last_vblank_valid = 1;
43765 }
43766 - if (!(atomic_read(&dev_priv->vbl_received) & 0xFF)) {
43767 + if (!(atomic_read_unchecked(&dev_priv->vbl_received) & 0xFF)) {
43768 DRM_DEBUG("US per vblank is: %u\n",
43769 dev_priv->usec_per_vblank);
43770 }
43771 @@ -137,7 +137,7 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg)
43772
43773 for (i = 0; i < dev_priv->num_irqs; ++i) {
43774 if (status & cur_irq->pending_mask) {
43775 - atomic_inc(&cur_irq->irq_received);
43776 + atomic_inc_unchecked(&cur_irq->irq_received);
43777 wake_up(&cur_irq->irq_queue);
43778 handled = 1;
43779 if (dev_priv->irq_map[drm_via_irq_dma0_td] == i)
43780 @@ -242,11 +242,11 @@ via_driver_irq_wait(struct drm_device *dev, unsigned int irq, int force_sequence
43781 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
43782 ((VIA_READ(masks[irq][2]) & masks[irq][3]) ==
43783 masks[irq][4]));
43784 - cur_irq_sequence = atomic_read(&cur_irq->irq_received);
43785 + cur_irq_sequence = atomic_read_unchecked(&cur_irq->irq_received);
43786 } else {
43787 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
43788 (((cur_irq_sequence =
43789 - atomic_read(&cur_irq->irq_received)) -
43790 + atomic_read_unchecked(&cur_irq->irq_received)) -
43791 *sequence) <= (1 << 23)));
43792 }
43793 *sequence = cur_irq_sequence;
43794 @@ -284,7 +284,7 @@ void via_driver_irq_preinstall(struct drm_device *dev)
43795 }
43796
43797 for (i = 0; i < dev_priv->num_irqs; ++i) {
43798 - atomic_set(&cur_irq->irq_received, 0);
43799 + atomic_set_unchecked(&cur_irq->irq_received, 0);
43800 cur_irq->enable_mask = dev_priv->irq_masks[i][0];
43801 cur_irq->pending_mask = dev_priv->irq_masks[i][1];
43802 init_waitqueue_head(&cur_irq->irq_queue);
43803 @@ -366,7 +366,7 @@ int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv)
43804 switch (irqwait->request.type & ~VIA_IRQ_FLAGS_MASK) {
43805 case VIA_IRQ_RELATIVE:
43806 irqwait->request.sequence +=
43807 - atomic_read(&cur_irq->irq_received);
43808 + atomic_read_unchecked(&cur_irq->irq_received);
43809 irqwait->request.type &= ~_DRM_VBLANK_RELATIVE;
43810 case VIA_IRQ_ABSOLUTE:
43811 break;
43812 diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
43813 index db8b491..d87b27c 100644
43814 --- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c
43815 +++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
43816 @@ -34,7 +34,7 @@ virtio_gpu_debugfs_irq_info(struct seq_file *m, void *data)
43817 struct drm_info_node *node = (struct drm_info_node *) m->private;
43818 struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
43819
43820 - seq_printf(m, "fence %ld %lld\n",
43821 + seq_printf(m, "fence %lld %lld\n",
43822 atomic64_read(&vgdev->fence_drv.last_seq),
43823 vgdev->fence_drv.sync_seq);
43824 return 0;
43825 diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c
43826 index 1da6326..98dd385 100644
43827 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c
43828 +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c
43829 @@ -61,7 +61,7 @@ static void virtio_timeline_value_str(struct fence *f, char *str, int size)
43830 {
43831 struct virtio_gpu_fence *fence = to_virtio_fence(f);
43832
43833 - snprintf(str, size, "%lu", atomic64_read(&fence->drv->last_seq));
43834 + snprintf(str, size, "%llu", atomic64_read(&fence->drv->last_seq));
43835 }
43836
43837 static const struct fence_ops virtio_fence_ops = {
43838 diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c
43839 index b092d7b..3bbecd9 100644
43840 --- a/drivers/gpu/drm/virtio/virtgpu_ttm.c
43841 +++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c
43842 @@ -197,11 +197,11 @@ static void ttm_bo_man_debug(struct ttm_mem_type_manager *man,
43843 }
43844
43845 static const struct ttm_mem_type_manager_func virtio_gpu_bo_manager_func = {
43846 - ttm_bo_man_init,
43847 - ttm_bo_man_takedown,
43848 - ttm_bo_man_get_node,
43849 - ttm_bo_man_put_node,
43850 - ttm_bo_man_debug
43851 + .init = &ttm_bo_man_init,
43852 + .takedown = &ttm_bo_man_takedown,
43853 + .get_node = &ttm_bo_man_get_node,
43854 + .put_node = &ttm_bo_man_put_node,
43855 + .debug = &ttm_bo_man_debug
43856 };
43857
43858 static int virtio_gpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
43859 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
43860 index d26a6da..5fa41ed 100644
43861 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
43862 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
43863 @@ -447,7 +447,7 @@ struct vmw_private {
43864 * Fencing and IRQs.
43865 */
43866
43867 - atomic_t marker_seq;
43868 + atomic_unchecked_t marker_seq;
43869 wait_queue_head_t fence_queue;
43870 wait_queue_head_t fifo_queue;
43871 spinlock_t waiter_lock;
43872 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
43873 index 39f2b03..d1b0a64 100644
43874 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
43875 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
43876 @@ -152,7 +152,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
43877 (unsigned int) min,
43878 (unsigned int) fifo->capabilities);
43879
43880 - atomic_set(&dev_priv->marker_seq, dev_priv->last_read_seqno);
43881 + atomic_set_unchecked(&dev_priv->marker_seq, dev_priv->last_read_seqno);
43882 iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE);
43883 vmw_marker_queue_init(&fifo->marker_queue);
43884 return vmw_fifo_send_fence(dev_priv, &dummy);
43885 @@ -372,7 +372,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
43886 if (reserveable)
43887 iowrite32(bytes, fifo_mem +
43888 SVGA_FIFO_RESERVED);
43889 - return fifo_mem + (next_cmd >> 2);
43890 + return (__le32 __force_kernel *)fifo_mem + (next_cmd >> 2);
43891 } else {
43892 need_bounce = true;
43893 }
43894 @@ -492,7 +492,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
43895
43896 fm = vmw_fifo_reserve(dev_priv, bytes);
43897 if (unlikely(fm == NULL)) {
43898 - *seqno = atomic_read(&dev_priv->marker_seq);
43899 + *seqno = atomic_read_unchecked(&dev_priv->marker_seq);
43900 ret = -ENOMEM;
43901 (void)vmw_fallback_wait(dev_priv, false, true, *seqno,
43902 false, 3*HZ);
43903 @@ -500,7 +500,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
43904 }
43905
43906 do {
43907 - *seqno = atomic_add_return(1, &dev_priv->marker_seq);
43908 + *seqno = atomic_add_return_unchecked(1, &dev_priv->marker_seq);
43909 } while (*seqno == 0);
43910
43911 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
43912 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
43913 index 170b61b..fec7348 100644
43914 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
43915 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
43916 @@ -164,9 +164,9 @@ static void vmw_gmrid_man_debug(struct ttm_mem_type_manager *man,
43917 }
43918
43919 const struct ttm_mem_type_manager_func vmw_gmrid_manager_func = {
43920 - vmw_gmrid_man_init,
43921 - vmw_gmrid_man_takedown,
43922 - vmw_gmrid_man_get_node,
43923 - vmw_gmrid_man_put_node,
43924 - vmw_gmrid_man_debug
43925 + .init = vmw_gmrid_man_init,
43926 + .takedown = vmw_gmrid_man_takedown,
43927 + .get_node = vmw_gmrid_man_get_node,
43928 + .put_node = vmw_gmrid_man_put_node,
43929 + .debug = vmw_gmrid_man_debug
43930 };
43931 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
43932 index 69c8ce2..cacb0ab 100644
43933 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
43934 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
43935 @@ -235,7 +235,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
43936 int ret;
43937
43938 num_clips = arg->num_clips;
43939 - clips_ptr = (struct drm_vmw_rect *)(unsigned long)arg->clips_ptr;
43940 + clips_ptr = (struct drm_vmw_rect __user *)(unsigned long)arg->clips_ptr;
43941
43942 if (unlikely(num_clips == 0))
43943 return 0;
43944 @@ -318,7 +318,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
43945 int ret;
43946
43947 num_clips = arg->num_clips;
43948 - clips_ptr = (struct drm_vmw_rect *)(unsigned long)arg->clips_ptr;
43949 + clips_ptr = (struct drm_vmw_rect __user *)(unsigned long)arg->clips_ptr;
43950
43951 if (unlikely(num_clips == 0))
43952 return 0;
43953 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
43954 index 9fe9827..0aa2fc0 100644
43955 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
43956 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
43957 @@ -102,7 +102,7 @@ bool vmw_seqno_passed(struct vmw_private *dev_priv,
43958 * emitted. Then the fence is stale and signaled.
43959 */
43960
43961 - ret = ((atomic_read(&dev_priv->marker_seq) - seqno)
43962 + ret = ((atomic_read_unchecked(&dev_priv->marker_seq) - seqno)
43963 > VMW_FENCE_WRAP);
43964
43965 return ret;
43966 @@ -133,7 +133,7 @@ int vmw_fallback_wait(struct vmw_private *dev_priv,
43967
43968 if (fifo_idle)
43969 down_read(&fifo_state->rwsem);
43970 - signal_seq = atomic_read(&dev_priv->marker_seq);
43971 + signal_seq = atomic_read_unchecked(&dev_priv->marker_seq);
43972 ret = 0;
43973
43974 for (;;) {
43975 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
43976 index efd1ffd..0ae13ca 100644
43977 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
43978 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
43979 @@ -135,7 +135,7 @@ int vmw_wait_lag(struct vmw_private *dev_priv,
43980 while (!vmw_lag_lt(queue, us)) {
43981 spin_lock(&queue->lock);
43982 if (list_empty(&queue->head))
43983 - seqno = atomic_read(&dev_priv->marker_seq);
43984 + seqno = atomic_read_unchecked(&dev_priv->marker_seq);
43985 else {
43986 marker = list_first_entry(&queue->head,
43987 struct vmw_marker, head);
43988 diff --git a/drivers/gpu/vga/vga_switcheroo.c b/drivers/gpu/vga/vga_switcheroo.c
43989 index 37ac7b5..d52a5c9 100644
43990 --- a/drivers/gpu/vga/vga_switcheroo.c
43991 +++ b/drivers/gpu/vga/vga_switcheroo.c
43992 @@ -644,7 +644,7 @@ static int vga_switcheroo_runtime_resume(struct device *dev)
43993
43994 /* this version is for the case where the power switch is separate
43995 to the device being powered down. */
43996 -int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain)
43997 +int vga_switcheroo_init_domain_pm_ops(struct device *dev, dev_pm_domain_no_const *domain)
43998 {
43999 /* copy over all the bus versions */
44000 if (dev->bus && dev->bus->pm) {
44001 @@ -695,7 +695,7 @@ static int vga_switcheroo_runtime_resume_hdmi_audio(struct device *dev)
44002 return ret;
44003 }
44004
44005 -int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain)
44006 +int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, dev_pm_domain_no_const *domain)
44007 {
44008 /* copy over all the bus versions */
44009 if (dev->bus && dev->bus->pm) {
44010 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
44011 index e6fce23..85949a0 100644
44012 --- a/drivers/hid/hid-core.c
44013 +++ b/drivers/hid/hid-core.c
44014 @@ -2550,7 +2550,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
44015
44016 int hid_add_device(struct hid_device *hdev)
44017 {
44018 - static atomic_t id = ATOMIC_INIT(0);
44019 + static atomic_unchecked_t id = ATOMIC_INIT(0);
44020 int ret;
44021
44022 if (WARN_ON(hdev->status & HID_STAT_ADDED))
44023 @@ -2593,7 +2593,7 @@ int hid_add_device(struct hid_device *hdev)
44024 /* XXX hack, any other cleaner solution after the driver core
44025 * is converted to allow more than 20 bytes as the device name? */
44026 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
44027 - hdev->vendor, hdev->product, atomic_inc_return(&id));
44028 + hdev->vendor, hdev->product, atomic_inc_return_unchecked(&id));
44029
44030 hid_debug_register(hdev, dev_name(&hdev->dev));
44031 ret = device_add(&hdev->dev);
44032 diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c
44033 index 5614fee..8a6f5f6 100644
44034 --- a/drivers/hid/hid-sensor-custom.c
44035 +++ b/drivers/hid/hid-sensor-custom.c
44036 @@ -590,7 +590,7 @@ static int hid_sensor_custom_add_attributes(struct hid_sensor_custom
44037 j = 0;
44038 while (j < HID_CUSTOM_TOTAL_ATTRS &&
44039 hid_custom_attrs[j].name) {
44040 - struct device_attribute *device_attr;
44041 + device_attribute_no_const *device_attr;
44042
44043 device_attr = &sensor_inst->fields[i].sd_attrs[j];
44044
44045 diff --git a/drivers/hid/hid-wiimote-debug.c b/drivers/hid/hid-wiimote-debug.c
44046 index c13fb5b..55a3802 100644
44047 --- a/drivers/hid/hid-wiimote-debug.c
44048 +++ b/drivers/hid/hid-wiimote-debug.c
44049 @@ -66,7 +66,7 @@ static ssize_t wiidebug_eeprom_read(struct file *f, char __user *u, size_t s,
44050 else if (size == 0)
44051 return -EIO;
44052
44053 - if (copy_to_user(u, buf, size))
44054 + if (size > sizeof(buf) || copy_to_user(u, buf, size))
44055 return -EFAULT;
44056
44057 *off += size;
44058 diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
44059 index 603ce97..7f27468 100644
44060 --- a/drivers/hv/channel.c
44061 +++ b/drivers/hv/channel.c
44062 @@ -382,7 +382,7 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
44063 int ret = 0;
44064
44065 next_gpadl_handle =
44066 - (atomic_inc_return(&vmbus_connection.next_gpadl_handle) - 1);
44067 + (atomic_inc_return_unchecked(&vmbus_connection.next_gpadl_handle) - 1);
44068
44069 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
44070 if (ret)
44071 diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
44072 index d3943bc..597fd1e 100644
44073 --- a/drivers/hv/hv.c
44074 +++ b/drivers/hv/hv.c
44075 @@ -118,7 +118,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
44076 u64 output_address = (output) ? virt_to_phys(output) : 0;
44077 u32 output_address_hi = output_address >> 32;
44078 u32 output_address_lo = output_address & 0xFFFFFFFF;
44079 - void *hypercall_page = hv_context.hypercall_page;
44080 + void *hypercall_page = (void *)ktva_ktla((unsigned long)hv_context.hypercall_page);
44081
44082 __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
44083 "=a"(hv_status_lo) : "d" (control_hi),
44084 @@ -164,7 +164,7 @@ int hv_init(void)
44085 /* See if the hypercall page is already set */
44086 rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
44087
44088 - virtaddr = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL_EXEC);
44089 + virtaddr = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL_RX);
44090
44091 if (!virtaddr)
44092 goto cleanup;
44093 diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c
44094 index 8a725cd..91abaf0 100644
44095 --- a/drivers/hv/hv_balloon.c
44096 +++ b/drivers/hv/hv_balloon.c
44097 @@ -469,7 +469,7 @@ MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add");
44098
44099 module_param(pressure_report_delay, uint, (S_IRUGO | S_IWUSR));
44100 MODULE_PARM_DESC(pressure_report_delay, "Delay in secs in reporting pressure");
44101 -static atomic_t trans_id = ATOMIC_INIT(0);
44102 +static atomic_unchecked_t trans_id = ATOMIC_INIT(0);
44103
44104 static int dm_ring_size = (5 * PAGE_SIZE);
44105
44106 @@ -943,7 +943,7 @@ static void hot_add_req(struct work_struct *dummy)
44107 pr_info("Memory hot add failed\n");
44108
44109 dm->state = DM_INITIALIZED;
44110 - resp.hdr.trans_id = atomic_inc_return(&trans_id);
44111 + resp.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44112 vmbus_sendpacket(dm->dev->channel, &resp,
44113 sizeof(struct dm_hot_add_response),
44114 (unsigned long)NULL,
44115 @@ -1024,7 +1024,7 @@ static void post_status(struct hv_dynmem_device *dm)
44116 memset(&status, 0, sizeof(struct dm_status));
44117 status.hdr.type = DM_STATUS_REPORT;
44118 status.hdr.size = sizeof(struct dm_status);
44119 - status.hdr.trans_id = atomic_inc_return(&trans_id);
44120 + status.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44121
44122 /*
44123 * The host expects the guest to report free and committed memory.
44124 @@ -1048,7 +1048,7 @@ static void post_status(struct hv_dynmem_device *dm)
44125 * send the status. This can happen if we were interrupted
44126 * after we picked our transaction ID.
44127 */
44128 - if (status.hdr.trans_id != atomic_read(&trans_id))
44129 + if (status.hdr.trans_id != atomic_read_unchecked(&trans_id))
44130 return;
44131
44132 /*
44133 @@ -1193,7 +1193,7 @@ static void balloon_up(struct work_struct *dummy)
44134 */
44135
44136 do {
44137 - bl_resp->hdr.trans_id = atomic_inc_return(&trans_id);
44138 + bl_resp->hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44139 ret = vmbus_sendpacket(dm_device.dev->channel,
44140 bl_resp,
44141 bl_resp->hdr.size,
44142 @@ -1239,7 +1239,7 @@ static void balloon_down(struct hv_dynmem_device *dm,
44143
44144 memset(&resp, 0, sizeof(struct dm_unballoon_response));
44145 resp.hdr.type = DM_UNBALLOON_RESPONSE;
44146 - resp.hdr.trans_id = atomic_inc_return(&trans_id);
44147 + resp.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44148 resp.hdr.size = sizeof(struct dm_unballoon_response);
44149
44150 vmbus_sendpacket(dm_device.dev->channel, &resp,
44151 @@ -1300,7 +1300,7 @@ static void version_resp(struct hv_dynmem_device *dm,
44152 memset(&version_req, 0, sizeof(struct dm_version_request));
44153 version_req.hdr.type = DM_VERSION_REQUEST;
44154 version_req.hdr.size = sizeof(struct dm_version_request);
44155 - version_req.hdr.trans_id = atomic_inc_return(&trans_id);
44156 + version_req.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44157 version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN7;
44158 version_req.is_last_attempt = 1;
44159
44160 @@ -1473,7 +1473,7 @@ static int balloon_probe(struct hv_device *dev,
44161 memset(&version_req, 0, sizeof(struct dm_version_request));
44162 version_req.hdr.type = DM_VERSION_REQUEST;
44163 version_req.hdr.size = sizeof(struct dm_version_request);
44164 - version_req.hdr.trans_id = atomic_inc_return(&trans_id);
44165 + version_req.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44166 version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN8;
44167 version_req.is_last_attempt = 0;
44168
44169 @@ -1504,7 +1504,7 @@ static int balloon_probe(struct hv_device *dev,
44170 memset(&cap_msg, 0, sizeof(struct dm_capabilities));
44171 cap_msg.hdr.type = DM_CAPABILITIES_REPORT;
44172 cap_msg.hdr.size = sizeof(struct dm_capabilities);
44173 - cap_msg.hdr.trans_id = atomic_inc_return(&trans_id);
44174 + cap_msg.hdr.trans_id = atomic_inc_return_unchecked(&trans_id);
44175
44176 cap_msg.caps.cap_bits.balloon = 1;
44177 cap_msg.caps.cap_bits.hot_add = 1;
44178 diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
44179 index cddc0c9..2eb587d 100644
44180 --- a/drivers/hv/hyperv_vmbus.h
44181 +++ b/drivers/hv/hyperv_vmbus.h
44182 @@ -645,7 +645,7 @@ enum vmbus_connect_state {
44183 struct vmbus_connection {
44184 enum vmbus_connect_state conn_state;
44185
44186 - atomic_t next_gpadl_handle;
44187 + atomic_unchecked_t next_gpadl_handle;
44188
44189 struct completion unload_event;
44190 /*
44191 diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
44192 index 579bdf9..0dac21d5 100644
44193 --- a/drivers/hwmon/acpi_power_meter.c
44194 +++ b/drivers/hwmon/acpi_power_meter.c
44195 @@ -116,7 +116,7 @@ struct sensor_template {
44196 struct device_attribute *devattr,
44197 const char *buf, size_t count);
44198 int index;
44199 -};
44200 +} __do_const;
44201
44202 /* Averaging interval */
44203 static int update_avg_interval(struct acpi_power_meter_resource *resource)
44204 @@ -631,7 +631,7 @@ static int register_attrs(struct acpi_power_meter_resource *resource,
44205 struct sensor_template *attrs)
44206 {
44207 struct device *dev = &resource->acpi_dev->dev;
44208 - struct sensor_device_attribute *sensors =
44209 + sensor_device_attribute_no_const *sensors =
44210 &resource->sensors[resource->num_sensors];
44211 int res = 0;
44212
44213 @@ -973,7 +973,7 @@ static int __init enable_cap_knobs(const struct dmi_system_id *d)
44214 return 0;
44215 }
44216
44217 -static struct dmi_system_id __initdata pm_dmi_table[] = {
44218 +static const struct dmi_system_id __initconst pm_dmi_table[] = {
44219 {
44220 enable_cap_knobs, "IBM Active Energy Manager",
44221 {
44222 diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
44223 index 0af63da..05a183a 100644
44224 --- a/drivers/hwmon/applesmc.c
44225 +++ b/drivers/hwmon/applesmc.c
44226 @@ -1105,7 +1105,7 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num)
44227 {
44228 struct applesmc_node_group *grp;
44229 struct applesmc_dev_attr *node;
44230 - struct attribute *attr;
44231 + attribute_no_const *attr;
44232 int ret, i;
44233
44234 for (grp = groups; grp->format; grp++) {
44235 diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c
44236 index cccef87..06ce8ec 100644
44237 --- a/drivers/hwmon/asus_atk0110.c
44238 +++ b/drivers/hwmon/asus_atk0110.c
44239 @@ -147,10 +147,10 @@ MODULE_DEVICE_TABLE(acpi, atk_ids);
44240 struct atk_sensor_data {
44241 struct list_head list;
44242 struct atk_data *data;
44243 - struct device_attribute label_attr;
44244 - struct device_attribute input_attr;
44245 - struct device_attribute limit1_attr;
44246 - struct device_attribute limit2_attr;
44247 + device_attribute_no_const label_attr;
44248 + device_attribute_no_const input_attr;
44249 + device_attribute_no_const limit1_attr;
44250 + device_attribute_no_const limit2_attr;
44251 char label_attr_name[ATTR_NAME_SIZE];
44252 char input_attr_name[ATTR_NAME_SIZE];
44253 char limit1_attr_name[ATTR_NAME_SIZE];
44254 @@ -270,7 +270,7 @@ static ssize_t atk_name_show(struct device *dev,
44255 static struct device_attribute atk_name_attr =
44256 __ATTR(name, 0444, atk_name_show, NULL);
44257
44258 -static void atk_init_attribute(struct device_attribute *attr, char *name,
44259 +static void atk_init_attribute(device_attribute_no_const *attr, char *name,
44260 sysfs_show_func show)
44261 {
44262 sysfs_attr_init(&attr->attr);
44263 diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
44264 index 3e03379..ec521d3 100644
44265 --- a/drivers/hwmon/coretemp.c
44266 +++ b/drivers/hwmon/coretemp.c
44267 @@ -783,7 +783,7 @@ static int coretemp_cpu_callback(struct notifier_block *nfb,
44268 return NOTIFY_OK;
44269 }
44270
44271 -static struct notifier_block coretemp_cpu_notifier __refdata = {
44272 +static struct notifier_block coretemp_cpu_notifier = {
44273 .notifier_call = coretemp_cpu_callback,
44274 };
44275
44276 diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
44277 index c848789..e9e9217 100644
44278 --- a/drivers/hwmon/dell-smm-hwmon.c
44279 +++ b/drivers/hwmon/dell-smm-hwmon.c
44280 @@ -819,7 +819,7 @@ static const struct i8k_config_data i8k_config_data[] = {
44281 },
44282 };
44283
44284 -static struct dmi_system_id i8k_dmi_table[] __initdata = {
44285 +static const struct dmi_system_id i8k_dmi_table[] __initconst = {
44286 {
44287 .ident = "Dell Inspiron",
44288 .matches = {
44289 diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
44290 index 7a8a6fb..015c1fd 100644
44291 --- a/drivers/hwmon/ibmaem.c
44292 +++ b/drivers/hwmon/ibmaem.c
44293 @@ -924,7 +924,7 @@ static int aem_register_sensors(struct aem_data *data,
44294 struct aem_rw_sensor_template *rw)
44295 {
44296 struct device *dev = &data->pdev->dev;
44297 - struct sensor_device_attribute *sensors = data->sensors;
44298 + sensor_device_attribute_no_const *sensors = data->sensors;
44299 int err;
44300
44301 /* Set up read-only sensors */
44302 diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
44303 index 17ae2eb..21b71dd 100644
44304 --- a/drivers/hwmon/iio_hwmon.c
44305 +++ b/drivers/hwmon/iio_hwmon.c
44306 @@ -61,7 +61,7 @@ static int iio_hwmon_probe(struct platform_device *pdev)
44307 {
44308 struct device *dev = &pdev->dev;
44309 struct iio_hwmon_state *st;
44310 - struct sensor_device_attribute *a;
44311 + sensor_device_attribute_no_const *a;
44312 int ret, i;
44313 int in_i = 1, temp_i = 1, curr_i = 1, humidity_i = 1;
44314 enum iio_chan_type type;
44315 diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
44316 index 37f0170..414ec2c 100644
44317 --- a/drivers/hwmon/nct6683.c
44318 +++ b/drivers/hwmon/nct6683.c
44319 @@ -397,11 +397,11 @@ static struct attribute_group *
44320 nct6683_create_attr_group(struct device *dev, struct sensor_template_group *tg,
44321 int repeat)
44322 {
44323 - struct sensor_device_attribute_2 *a2;
44324 - struct sensor_device_attribute *a;
44325 + sensor_device_attribute_2_no_const *a2;
44326 + sensor_device_attribute_no_const *a;
44327 struct sensor_device_template **t;
44328 struct sensor_device_attr_u *su;
44329 - struct attribute_group *group;
44330 + attribute_group_no_const *group;
44331 struct attribute **attrs;
44332 int i, j, count;
44333
44334 diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
44335 index bd1c99d..2fa55ad 100644
44336 --- a/drivers/hwmon/nct6775.c
44337 +++ b/drivers/hwmon/nct6775.c
44338 @@ -953,10 +953,10 @@ static struct attribute_group *
44339 nct6775_create_attr_group(struct device *dev, struct sensor_template_group *tg,
44340 int repeat)
44341 {
44342 - struct attribute_group *group;
44343 + attribute_group_no_const *group;
44344 struct sensor_device_attr_u *su;
44345 - struct sensor_device_attribute *a;
44346 - struct sensor_device_attribute_2 *a2;
44347 + sensor_device_attribute_no_const *a;
44348 + sensor_device_attribute_2_no_const *a2;
44349 struct attribute **attrs;
44350 struct sensor_device_template **t;
44351 int i, count;
44352 diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
44353 index f2e47c7..45d7941 100644
44354 --- a/drivers/hwmon/pmbus/pmbus_core.c
44355 +++ b/drivers/hwmon/pmbus/pmbus_core.c
44356 @@ -816,7 +816,7 @@ static int pmbus_add_attribute(struct pmbus_data *data, struct attribute *attr)
44357 return 0;
44358 }
44359
44360 -static void pmbus_dev_attr_init(struct device_attribute *dev_attr,
44361 +static void pmbus_dev_attr_init(device_attribute_no_const *dev_attr,
44362 const char *name,
44363 umode_t mode,
44364 ssize_t (*show)(struct device *dev,
44365 @@ -833,7 +833,7 @@ static void pmbus_dev_attr_init(struct device_attribute *dev_attr,
44366 dev_attr->store = store;
44367 }
44368
44369 -static void pmbus_attr_init(struct sensor_device_attribute *a,
44370 +static void pmbus_attr_init(sensor_device_attribute_no_const *a,
44371 const char *name,
44372 umode_t mode,
44373 ssize_t (*show)(struct device *dev,
44374 @@ -855,7 +855,7 @@ static int pmbus_add_boolean(struct pmbus_data *data,
44375 u16 reg, u8 mask)
44376 {
44377 struct pmbus_boolean *boolean;
44378 - struct sensor_device_attribute *a;
44379 + sensor_device_attribute_no_const *a;
44380
44381 boolean = devm_kzalloc(data->dev, sizeof(*boolean), GFP_KERNEL);
44382 if (!boolean)
44383 @@ -880,7 +880,7 @@ static struct pmbus_sensor *pmbus_add_sensor(struct pmbus_data *data,
44384 bool update, bool readonly)
44385 {
44386 struct pmbus_sensor *sensor;
44387 - struct device_attribute *a;
44388 + device_attribute_no_const *a;
44389
44390 sensor = devm_kzalloc(data->dev, sizeof(*sensor), GFP_KERNEL);
44391 if (!sensor)
44392 @@ -911,7 +911,7 @@ static int pmbus_add_label(struct pmbus_data *data,
44393 const char *lstring, int index)
44394 {
44395 struct pmbus_label *label;
44396 - struct device_attribute *a;
44397 + device_attribute_no_const *a;
44398
44399 label = devm_kzalloc(data->dev, sizeof(*label), GFP_KERNEL);
44400 if (!label)
44401 diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
44402 index 497a7f8..3fffedf 100644
44403 --- a/drivers/hwmon/sht15.c
44404 +++ b/drivers/hwmon/sht15.c
44405 @@ -169,7 +169,7 @@ struct sht15_data {
44406 int supply_uv;
44407 bool supply_uv_valid;
44408 struct work_struct update_supply_work;
44409 - atomic_t interrupt_handled;
44410 + atomic_unchecked_t interrupt_handled;
44411 };
44412
44413 /**
44414 @@ -542,13 +542,13 @@ static int sht15_measurement(struct sht15_data *data,
44415 ret = gpio_direction_input(data->pdata->gpio_data);
44416 if (ret)
44417 return ret;
44418 - atomic_set(&data->interrupt_handled, 0);
44419 + atomic_set_unchecked(&data->interrupt_handled, 0);
44420
44421 enable_irq(gpio_to_irq(data->pdata->gpio_data));
44422 if (gpio_get_value(data->pdata->gpio_data) == 0) {
44423 disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));
44424 /* Only relevant if the interrupt hasn't occurred. */
44425 - if (!atomic_read(&data->interrupt_handled))
44426 + if (!atomic_read_unchecked(&data->interrupt_handled))
44427 schedule_work(&data->read_work);
44428 }
44429 ret = wait_event_timeout(data->wait_queue,
44430 @@ -820,7 +820,7 @@ static irqreturn_t sht15_interrupt_fired(int irq, void *d)
44431
44432 /* First disable the interrupt */
44433 disable_irq_nosync(irq);
44434 - atomic_inc(&data->interrupt_handled);
44435 + atomic_inc_unchecked(&data->interrupt_handled);
44436 /* Then schedule a reading work struct */
44437 if (data->state != SHT15_READING_NOTHING)
44438 schedule_work(&data->read_work);
44439 @@ -842,11 +842,11 @@ static void sht15_bh_read_data(struct work_struct *work_s)
44440 * If not, then start the interrupt again - care here as could
44441 * have gone low in meantime so verify it hasn't!
44442 */
44443 - atomic_set(&data->interrupt_handled, 0);
44444 + atomic_set_unchecked(&data->interrupt_handled, 0);
44445 enable_irq(gpio_to_irq(data->pdata->gpio_data));
44446 /* If still not occurred or another handler was scheduled */
44447 if (gpio_get_value(data->pdata->gpio_data)
44448 - || atomic_read(&data->interrupt_handled))
44449 + || atomic_read_unchecked(&data->interrupt_handled))
44450 return;
44451 }
44452
44453 diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
44454 index ac91c07..8e69663 100644
44455 --- a/drivers/hwmon/via-cputemp.c
44456 +++ b/drivers/hwmon/via-cputemp.c
44457 @@ -295,7 +295,7 @@ static int via_cputemp_cpu_callback(struct notifier_block *nfb,
44458 return NOTIFY_OK;
44459 }
44460
44461 -static struct notifier_block via_cputemp_cpu_notifier __refdata = {
44462 +static struct notifier_block via_cputemp_cpu_notifier = {
44463 .notifier_call = via_cputemp_cpu_callback,
44464 };
44465
44466 diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c
44467 index 65e3240..e6c511d 100644
44468 --- a/drivers/i2c/busses/i2c-amd756-s4882.c
44469 +++ b/drivers/i2c/busses/i2c-amd756-s4882.c
44470 @@ -39,7 +39,7 @@
44471 extern struct i2c_adapter amd756_smbus;
44472
44473 static struct i2c_adapter *s4882_adapter;
44474 -static struct i2c_algorithm *s4882_algo;
44475 +static i2c_algorithm_no_const *s4882_algo;
44476
44477 /* Wrapper access functions for multiplexed SMBus */
44478 static DEFINE_MUTEX(amd756_lock);
44479 diff --git a/drivers/i2c/busses/i2c-diolan-u2c.c b/drivers/i2c/busses/i2c-diolan-u2c.c
44480 index b19a310..d6eece0 100644
44481 --- a/drivers/i2c/busses/i2c-diolan-u2c.c
44482 +++ b/drivers/i2c/busses/i2c-diolan-u2c.c
44483 @@ -98,7 +98,7 @@ MODULE_PARM_DESC(frequency, "I2C clock frequency in hertz");
44484 /* usb layer */
44485
44486 /* Send command to device, and get response. */
44487 -static int diolan_usb_transfer(struct i2c_diolan_u2c *dev)
44488 +static int __intentional_overflow(-1) diolan_usb_transfer(struct i2c_diolan_u2c *dev)
44489 {
44490 int ret = 0;
44491 int actual;
44492 diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c
44493 index 88eda09..cf40434 100644
44494 --- a/drivers/i2c/busses/i2c-nforce2-s4985.c
44495 +++ b/drivers/i2c/busses/i2c-nforce2-s4985.c
44496 @@ -37,7 +37,7 @@
44497 extern struct i2c_adapter *nforce2_smbus;
44498
44499 static struct i2c_adapter *s4985_adapter;
44500 -static struct i2c_algorithm *s4985_algo;
44501 +static i2c_algorithm_no_const *s4985_algo;
44502
44503 /* Wrapper access functions for multiplexed SMBus */
44504 static DEFINE_MUTEX(nforce2_lock);
44505 diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
44506 index 71c7a39..71dd3e0 100644
44507 --- a/drivers/i2c/i2c-dev.c
44508 +++ b/drivers/i2c/i2c-dev.c
44509 @@ -272,7 +272,7 @@ static noinline int i2cdev_ioctl_rdrw(struct i2c_client *client,
44510 break;
44511 }
44512
44513 - data_ptrs[i] = (u8 __user *)rdwr_pa[i].buf;
44514 + data_ptrs[i] = (u8 __force_user *)rdwr_pa[i].buf;
44515 rdwr_pa[i].buf = memdup_user(data_ptrs[i], rdwr_pa[i].len);
44516 if (IS_ERR(rdwr_pa[i].buf)) {
44517 res = PTR_ERR(rdwr_pa[i].buf);
44518 diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
44519 index 64a6b82..a524354 100644
44520 --- a/drivers/ide/ide-cd.c
44521 +++ b/drivers/ide/ide-cd.c
44522 @@ -768,7 +768,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
44523 alignment = queue_dma_alignment(q) | q->dma_pad_mask;
44524 if ((unsigned long)buf & alignment
44525 || blk_rq_bytes(rq) & q->dma_pad_mask
44526 - || object_is_on_stack(buf))
44527 + || object_starts_on_stack(buf))
44528 drive->dma = 0;
44529 }
44530 }
44531 diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
44532 index 56b9708..980b63b 100644
44533 --- a/drivers/ide/ide-disk.c
44534 +++ b/drivers/ide/ide-disk.c
44535 @@ -178,7 +178,7 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
44536 * 1073741822 == 549756 MB or 48bit addressing fake drive
44537 */
44538
44539 -static ide_startstop_t ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
44540 +static ide_startstop_t __intentional_overflow(-1) ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
44541 sector_t block)
44542 {
44543 ide_hwif_t *hwif = drive->hwif;
44544 diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
44545 index 3524b0d..8c14520 100644
44546 --- a/drivers/iio/industrialio-core.c
44547 +++ b/drivers/iio/industrialio-core.c
44548 @@ -576,7 +576,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
44549 }
44550
44551 static
44552 -int __iio_device_attr_init(struct device_attribute *dev_attr,
44553 +int __iio_device_attr_init(device_attribute_no_const *dev_attr,
44554 const char *postfix,
44555 struct iio_chan_spec const *chan,
44556 ssize_t (*readfunc)(struct device *dev,
44557 diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c
44558 index b13936d..65322b2 100644
44559 --- a/drivers/iio/magnetometer/ak8975.c
44560 +++ b/drivers/iio/magnetometer/ak8975.c
44561 @@ -776,7 +776,7 @@ static int ak8975_probe(struct i2c_client *client,
44562 name = id->name;
44563 } else if (ACPI_HANDLE(&client->dev))
44564 name = ak8975_match_acpi_device(&client->dev, &chipset);
44565 - else
44566 + if (!name)
44567 return -ENOSYS;
44568
44569 if (chipset >= AK_MAX_TYPE) {
44570 diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
44571 index 3a972eb..4126183 100644
44572 --- a/drivers/infiniband/core/cm.c
44573 +++ b/drivers/infiniband/core/cm.c
44574 @@ -115,7 +115,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS]
44575
44576 struct cm_counter_group {
44577 struct kobject obj;
44578 - atomic_long_t counter[CM_ATTR_COUNT];
44579 + atomic_long_unchecked_t counter[CM_ATTR_COUNT];
44580 };
44581
44582 struct cm_counter_attribute {
44583 @@ -1411,7 +1411,7 @@ static void cm_dup_req_handler(struct cm_work *work,
44584 struct ib_mad_send_buf *msg = NULL;
44585 int ret;
44586
44587 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44588 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44589 counter[CM_REQ_COUNTER]);
44590
44591 /* Quick state check to discard duplicate REQs. */
44592 @@ -1798,7 +1798,7 @@ static void cm_dup_rep_handler(struct cm_work *work)
44593 if (!cm_id_priv)
44594 return;
44595
44596 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44597 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44598 counter[CM_REP_COUNTER]);
44599 ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg);
44600 if (ret)
44601 @@ -1965,7 +1965,7 @@ static int cm_rtu_handler(struct cm_work *work)
44602 if (cm_id_priv->id.state != IB_CM_REP_SENT &&
44603 cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) {
44604 spin_unlock_irq(&cm_id_priv->lock);
44605 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44606 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44607 counter[CM_RTU_COUNTER]);
44608 goto out;
44609 }
44610 @@ -2148,7 +2148,7 @@ static int cm_dreq_handler(struct cm_work *work)
44611 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
44612 dreq_msg->local_comm_id);
44613 if (!cm_id_priv) {
44614 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44615 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44616 counter[CM_DREQ_COUNTER]);
44617 cm_issue_drep(work->port, work->mad_recv_wc);
44618 return -EINVAL;
44619 @@ -2173,7 +2173,7 @@ static int cm_dreq_handler(struct cm_work *work)
44620 case IB_CM_MRA_REP_RCVD:
44621 break;
44622 case IB_CM_TIMEWAIT:
44623 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44624 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44625 counter[CM_DREQ_COUNTER]);
44626 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
44627 goto unlock;
44628 @@ -2187,7 +2187,7 @@ static int cm_dreq_handler(struct cm_work *work)
44629 cm_free_msg(msg);
44630 goto deref;
44631 case IB_CM_DREQ_RCVD:
44632 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44633 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44634 counter[CM_DREQ_COUNTER]);
44635 goto unlock;
44636 default:
44637 @@ -2554,7 +2554,7 @@ static int cm_mra_handler(struct cm_work *work)
44638 ib_modify_mad(cm_id_priv->av.port->mad_agent,
44639 cm_id_priv->msg, timeout)) {
44640 if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
44641 - atomic_long_inc(&work->port->
44642 + atomic_long_inc_unchecked(&work->port->
44643 counter_group[CM_RECV_DUPLICATES].
44644 counter[CM_MRA_COUNTER]);
44645 goto out;
44646 @@ -2563,7 +2563,7 @@ static int cm_mra_handler(struct cm_work *work)
44647 break;
44648 case IB_CM_MRA_REQ_RCVD:
44649 case IB_CM_MRA_REP_RCVD:
44650 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44651 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44652 counter[CM_MRA_COUNTER]);
44653 /* fall through */
44654 default:
44655 @@ -2725,7 +2725,7 @@ static int cm_lap_handler(struct cm_work *work)
44656 case IB_CM_LAP_IDLE:
44657 break;
44658 case IB_CM_MRA_LAP_SENT:
44659 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44660 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44661 counter[CM_LAP_COUNTER]);
44662 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
44663 goto unlock;
44664 @@ -2741,7 +2741,7 @@ static int cm_lap_handler(struct cm_work *work)
44665 cm_free_msg(msg);
44666 goto deref;
44667 case IB_CM_LAP_RCVD:
44668 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44669 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44670 counter[CM_LAP_COUNTER]);
44671 goto unlock;
44672 default:
44673 @@ -3025,7 +3025,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
44674 cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv);
44675 if (cur_cm_id_priv) {
44676 spin_unlock_irq(&cm.lock);
44677 - atomic_long_inc(&work->port->counter_group[CM_RECV_DUPLICATES].
44678 + atomic_long_inc_unchecked(&work->port->counter_group[CM_RECV_DUPLICATES].
44679 counter[CM_SIDR_REQ_COUNTER]);
44680 goto out; /* Duplicate message. */
44681 }
44682 @@ -3237,10 +3237,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent,
44683 if (!msg->context[0] && (attr_index != CM_REJ_COUNTER))
44684 msg->retries = 1;
44685
44686 - atomic_long_add(1 + msg->retries,
44687 + atomic_long_add_unchecked(1 + msg->retries,
44688 &port->counter_group[CM_XMIT].counter[attr_index]);
44689 if (msg->retries)
44690 - atomic_long_add(msg->retries,
44691 + atomic_long_add_unchecked(msg->retries,
44692 &port->counter_group[CM_XMIT_RETRIES].
44693 counter[attr_index]);
44694
44695 @@ -3466,7 +3466,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent,
44696 }
44697
44698 attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id);
44699 - atomic_long_inc(&port->counter_group[CM_RECV].
44700 + atomic_long_inc_unchecked(&port->counter_group[CM_RECV].
44701 counter[attr_id - CM_ATTR_ID_OFFSET]);
44702
44703 work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths,
44704 @@ -3709,7 +3709,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr,
44705 cm_attr = container_of(attr, struct cm_counter_attribute, attr);
44706
44707 return sprintf(buf, "%ld\n",
44708 - atomic_long_read(&group->counter[cm_attr->index]));
44709 + atomic_long_read_unchecked(&group->counter[cm_attr->index]));
44710 }
44711
44712 static const struct sysfs_ops cm_counter_ops = {
44713 diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
44714 index 9f5ad7c..588cd84 100644
44715 --- a/drivers/infiniband/core/fmr_pool.c
44716 +++ b/drivers/infiniband/core/fmr_pool.c
44717 @@ -98,8 +98,8 @@ struct ib_fmr_pool {
44718
44719 struct task_struct *thread;
44720
44721 - atomic_t req_ser;
44722 - atomic_t flush_ser;
44723 + atomic_unchecked_t req_ser;
44724 + atomic_unchecked_t flush_ser;
44725
44726 wait_queue_head_t force_wait;
44727 };
44728 @@ -179,10 +179,10 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
44729 struct ib_fmr_pool *pool = pool_ptr;
44730
44731 do {
44732 - if (atomic_read(&pool->flush_ser) - atomic_read(&pool->req_ser) < 0) {
44733 + if (atomic_read_unchecked(&pool->flush_ser) - atomic_read_unchecked(&pool->req_ser) < 0) {
44734 ib_fmr_batch_release(pool);
44735
44736 - atomic_inc(&pool->flush_ser);
44737 + atomic_inc_unchecked(&pool->flush_ser);
44738 wake_up_interruptible(&pool->force_wait);
44739
44740 if (pool->flush_function)
44741 @@ -190,7 +190,7 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
44742 }
44743
44744 set_current_state(TASK_INTERRUPTIBLE);
44745 - if (atomic_read(&pool->flush_ser) - atomic_read(&pool->req_ser) >= 0 &&
44746 + if (atomic_read_unchecked(&pool->flush_ser) - atomic_read_unchecked(&pool->req_ser) >= 0 &&
44747 !kthread_should_stop())
44748 schedule();
44749 __set_current_state(TASK_RUNNING);
44750 @@ -282,8 +282,8 @@ struct ib_fmr_pool *ib_create_fmr_pool(struct ib_pd *pd,
44751 pool->dirty_watermark = params->dirty_watermark;
44752 pool->dirty_len = 0;
44753 spin_lock_init(&pool->pool_lock);
44754 - atomic_set(&pool->req_ser, 0);
44755 - atomic_set(&pool->flush_ser, 0);
44756 + atomic_set_unchecked(&pool->req_ser, 0);
44757 + atomic_set_unchecked(&pool->flush_ser, 0);
44758 init_waitqueue_head(&pool->force_wait);
44759
44760 pool->thread = kthread_run(ib_fmr_cleanup_thread,
44761 @@ -411,11 +411,11 @@ int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
44762 }
44763 spin_unlock_irq(&pool->pool_lock);
44764
44765 - serial = atomic_inc_return(&pool->req_ser);
44766 + serial = atomic_inc_return_unchecked(&pool->req_ser);
44767 wake_up_process(pool->thread);
44768
44769 if (wait_event_interruptible(pool->force_wait,
44770 - atomic_read(&pool->flush_ser) - serial >= 0))
44771 + atomic_read_unchecked(&pool->flush_ser) - serial >= 0))
44772 return -EINTR;
44773
44774 return 0;
44775 @@ -525,7 +525,7 @@ int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr)
44776 } else {
44777 list_add_tail(&fmr->list, &pool->dirty_list);
44778 if (++pool->dirty_len >= pool->dirty_watermark) {
44779 - atomic_inc(&pool->req_ser);
44780 + atomic_inc_unchecked(&pool->req_ser);
44781 wake_up_process(pool->thread);
44782 }
44783 }
44784 diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
44785 index a6ca83b..bd3a726 100644
44786 --- a/drivers/infiniband/core/uverbs_cmd.c
44787 +++ b/drivers/infiniband/core/uverbs_cmd.c
44788 @@ -951,6 +951,9 @@ ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file,
44789 if (copy_from_user(&cmd, buf, sizeof cmd))
44790 return -EFAULT;
44791
44792 + if (!access_ok_noprefault(VERIFY_READ, cmd.start, cmd.length))
44793 + return -EFAULT;
44794 +
44795 INIT_UDATA(&udata, buf + sizeof cmd,
44796 (unsigned long) cmd.response + sizeof resp,
44797 in_len - sizeof cmd, out_len - sizeof resp);
44798 diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
44799 index cff815b..75576dd 100644
44800 --- a/drivers/infiniband/hw/cxgb4/mem.c
44801 +++ b/drivers/infiniband/hw/cxgb4/mem.c
44802 @@ -256,7 +256,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
44803 int err;
44804 struct fw_ri_tpte tpt;
44805 u32 stag_idx;
44806 - static atomic_t key;
44807 + static atomic_unchecked_t key;
44808
44809 if (c4iw_fatal_error(rdev))
44810 return -EIO;
44811 @@ -277,7 +277,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
44812 if (rdev->stats.stag.cur > rdev->stats.stag.max)
44813 rdev->stats.stag.max = rdev->stats.stag.cur;
44814 mutex_unlock(&rdev->stats.lock);
44815 - *stag = (stag_idx << 8) | (atomic_inc_return(&key) & 0xff);
44816 + *stag = (stag_idx << 8) | (atomic_inc_return_unchecked(&key) & 0xff);
44817 }
44818 PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n",
44819 __func__, stag_state, type, pdid, stag_idx);
44820 diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
44821 index 79b3dbc..96e5fcc 100644
44822 --- a/drivers/infiniband/hw/ipath/ipath_rc.c
44823 +++ b/drivers/infiniband/hw/ipath/ipath_rc.c
44824 @@ -1868,7 +1868,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
44825 struct ib_atomic_eth *ateth;
44826 struct ipath_ack_entry *e;
44827 u64 vaddr;
44828 - atomic64_t *maddr;
44829 + atomic64_unchecked_t *maddr;
44830 u64 sdata;
44831 u32 rkey;
44832 u8 next;
44833 @@ -1903,11 +1903,11 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
44834 IB_ACCESS_REMOTE_ATOMIC)))
44835 goto nack_acc_unlck;
44836 /* Perform atomic OP and save result. */
44837 - maddr = (atomic64_t *) qp->r_sge.sge.vaddr;
44838 + maddr = (atomic64_unchecked_t *) qp->r_sge.sge.vaddr;
44839 sdata = be64_to_cpu(ateth->swap_data);
44840 e = &qp->s_ack_queue[qp->r_head_ack_queue];
44841 e->atomic_data = (opcode == OP(FETCH_ADD)) ?
44842 - (u64) atomic64_add_return(sdata, maddr) - sdata :
44843 + (u64) atomic64_add_return_unchecked(sdata, maddr) - sdata :
44844 (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
44845 be64_to_cpu(ateth->compare_data),
44846 sdata);
44847 diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c
44848 index 1f95bba..9530f87 100644
44849 --- a/drivers/infiniband/hw/ipath/ipath_ruc.c
44850 +++ b/drivers/infiniband/hw/ipath/ipath_ruc.c
44851 @@ -266,7 +266,7 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp)
44852 unsigned long flags;
44853 struct ib_wc wc;
44854 u64 sdata;
44855 - atomic64_t *maddr;
44856 + atomic64_unchecked_t *maddr;
44857 enum ib_wc_status send_status;
44858
44859 /*
44860 @@ -382,11 +382,11 @@ again:
44861 IB_ACCESS_REMOTE_ATOMIC)))
44862 goto acc_err;
44863 /* Perform atomic OP and save result. */
44864 - maddr = (atomic64_t *) qp->r_sge.sge.vaddr;
44865 + maddr = (atomic64_unchecked_t *) qp->r_sge.sge.vaddr;
44866 sdata = wqe->wr.wr.atomic.compare_add;
44867 *(u64 *) sqp->s_sge.sge.vaddr =
44868 (wqe->wr.opcode == IB_WR_ATOMIC_FETCH_AND_ADD) ?
44869 - (u64) atomic64_add_return(sdata, maddr) - sdata :
44870 + (u64) atomic64_add_return_unchecked(sdata, maddr) - sdata :
44871 (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
44872 sdata, wqe->wr.wr.atomic.swap);
44873 goto send_comp;
44874 diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
44875 index 68b3dfa..3e0c511 100644
44876 --- a/drivers/infiniband/hw/mlx4/mad.c
44877 +++ b/drivers/infiniband/hw/mlx4/mad.c
44878 @@ -98,7 +98,7 @@ __be64 mlx4_ib_gen_node_guid(void)
44879
44880 __be64 mlx4_ib_get_new_demux_tid(struct mlx4_ib_demux_ctx *ctx)
44881 {
44882 - return cpu_to_be64(atomic_inc_return(&ctx->tid)) |
44883 + return cpu_to_be64(atomic_inc_return_unchecked(&ctx->tid)) |
44884 cpu_to_be64(0xff00000000000000LL);
44885 }
44886
44887 diff --git a/drivers/infiniband/hw/mlx4/mcg.c b/drivers/infiniband/hw/mlx4/mcg.c
44888 index a0559a8..86a2320 100644
44889 --- a/drivers/infiniband/hw/mlx4/mcg.c
44890 +++ b/drivers/infiniband/hw/mlx4/mcg.c
44891 @@ -1042,7 +1042,7 @@ int mlx4_ib_mcg_port_init(struct mlx4_ib_demux_ctx *ctx)
44892 {
44893 char name[20];
44894
44895 - atomic_set(&ctx->tid, 0);
44896 + atomic_set_unchecked(&ctx->tid, 0);
44897 sprintf(name, "mlx4_ib_mcg%d", ctx->port);
44898 ctx->mcg_wq = create_singlethread_workqueue(name);
44899 if (!ctx->mcg_wq)
44900 diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
44901 index 334387f..e640d74 100644
44902 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
44903 +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
44904 @@ -436,7 +436,7 @@ struct mlx4_ib_demux_ctx {
44905 struct list_head mcg_mgid0_list;
44906 struct workqueue_struct *mcg_wq;
44907 struct mlx4_ib_demux_pv_ctx **tun;
44908 - atomic_t tid;
44909 + atomic_unchecked_t tid;
44910 int flushing; /* flushing the work queue */
44911 };
44912
44913 diff --git a/drivers/infiniband/hw/mthca/mthca_cmd.c b/drivers/infiniband/hw/mthca/mthca_cmd.c
44914 index c7f49bb..6a021bb 100644
44915 --- a/drivers/infiniband/hw/mthca/mthca_cmd.c
44916 +++ b/drivers/infiniband/hw/mthca/mthca_cmd.c
44917 @@ -772,7 +772,7 @@ static void mthca_setup_cmd_doorbells(struct mthca_dev *dev, u64 base)
44918 mthca_dbg(dev, "Mapped doorbell page for posting FW commands\n");
44919 }
44920
44921 -int mthca_QUERY_FW(struct mthca_dev *dev)
44922 +int __intentional_overflow(-1) mthca_QUERY_FW(struct mthca_dev *dev)
44923 {
44924 struct mthca_mailbox *mailbox;
44925 u32 *outbox;
44926 @@ -1612,7 +1612,7 @@ int mthca_HW2SW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox,
44927 CMD_TIME_CLASS_B);
44928 }
44929
44930 -int mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox,
44931 +int __intentional_overflow(-1) mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox,
44932 int num_mtt)
44933 {
44934 return mthca_cmd(dev, mailbox->dma, num_mtt, 0, CMD_WRITE_MTT,
44935 @@ -1634,7 +1634,7 @@ int mthca_MAP_EQ(struct mthca_dev *dev, u64 event_mask, int unmap,
44936 0, CMD_MAP_EQ, CMD_TIME_CLASS_B);
44937 }
44938
44939 -int mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox,
44940 +int __intentional_overflow(-1) mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox,
44941 int eq_num)
44942 {
44943 return mthca_cmd(dev, mailbox->dma, eq_num, 0, CMD_SW2HW_EQ,
44944 @@ -1857,7 +1857,7 @@ int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn)
44945 CMD_TIME_CLASS_B);
44946 }
44947
44948 -int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey,
44949 +int __intentional_overflow(-1) mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey,
44950 int port, const struct ib_wc *in_wc, const struct ib_grh *in_grh,
44951 const void *in_mad, void *response_mad)
44952 {
44953 diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c
44954 index ded76c1..0cf0a08 100644
44955 --- a/drivers/infiniband/hw/mthca/mthca_main.c
44956 +++ b/drivers/infiniband/hw/mthca/mthca_main.c
44957 @@ -692,7 +692,7 @@ err_close:
44958 return err;
44959 }
44960
44961 -static int mthca_setup_hca(struct mthca_dev *dev)
44962 +static int __intentional_overflow(-1) mthca_setup_hca(struct mthca_dev *dev)
44963 {
44964 int err;
44965
44966 diff --git a/drivers/infiniband/hw/mthca/mthca_mr.c b/drivers/infiniband/hw/mthca/mthca_mr.c
44967 index ed9a989..6aa5dc2 100644
44968 --- a/drivers/infiniband/hw/mthca/mthca_mr.c
44969 +++ b/drivers/infiniband/hw/mthca/mthca_mr.c
44970 @@ -81,7 +81,7 @@ struct mthca_mpt_entry {
44971 * through the bitmaps)
44972 */
44973
44974 -static u32 mthca_buddy_alloc(struct mthca_buddy *buddy, int order)
44975 +static u32 __intentional_overflow(-1) mthca_buddy_alloc(struct mthca_buddy *buddy, int order)
44976 {
44977 int o;
44978 int m;
44979 @@ -426,7 +426,7 @@ static inline u32 adjust_key(struct mthca_dev *dev, u32 key)
44980 return key;
44981 }
44982
44983 -int mthca_mr_alloc(struct mthca_dev *dev, u32 pd, int buffer_size_shift,
44984 +int __intentional_overflow(-1) mthca_mr_alloc(struct mthca_dev *dev, u32 pd, int buffer_size_shift,
44985 u64 iova, u64 total_size, u32 access, struct mthca_mr *mr)
44986 {
44987 struct mthca_mailbox *mailbox;
44988 @@ -516,7 +516,7 @@ int mthca_mr_alloc_notrans(struct mthca_dev *dev, u32 pd,
44989 return mthca_mr_alloc(dev, pd, 12, 0, ~0ULL, access, mr);
44990 }
44991
44992 -int mthca_mr_alloc_phys(struct mthca_dev *dev, u32 pd,
44993 +int __intentional_overflow(-1) mthca_mr_alloc_phys(struct mthca_dev *dev, u32 pd,
44994 u64 *buffer_list, int buffer_size_shift,
44995 int list_len, u64 iova, u64 total_size,
44996 u32 access, struct mthca_mr *mr)
44997 diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
44998 index 93ae51d..84c4a44 100644
44999 --- a/drivers/infiniband/hw/mthca/mthca_provider.c
45000 +++ b/drivers/infiniband/hw/mthca/mthca_provider.c
45001 @@ -771,7 +771,7 @@ unlock:
45002 return 0;
45003 }
45004
45005 -static int mthca_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata)
45006 +static int __intentional_overflow(-1) mthca_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata)
45007 {
45008 struct mthca_dev *dev = to_mdev(ibcq->device);
45009 struct mthca_cq *cq = to_mcq(ibcq);
45010 diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
45011 index 9f9d5c5..3c19aac 100644
45012 --- a/drivers/infiniband/hw/nes/nes.c
45013 +++ b/drivers/infiniband/hw/nes/nes.c
45014 @@ -97,7 +97,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
45015 LIST_HEAD(nes_adapter_list);
45016 static LIST_HEAD(nes_dev_list);
45017
45018 -atomic_t qps_destroyed;
45019 +atomic_unchecked_t qps_destroyed;
45020
45021 static unsigned int ee_flsh_adapter;
45022 static unsigned int sysfs_nonidx_addr;
45023 @@ -279,7 +279,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
45024 struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
45025 struct nes_adapter *nesadapter = nesdev->nesadapter;
45026
45027 - atomic_inc(&qps_destroyed);
45028 + atomic_inc_unchecked(&qps_destroyed);
45029
45030 /* Free the control structures */
45031
45032 diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
45033 index bd9d132..70d84f4 100644
45034 --- a/drivers/infiniband/hw/nes/nes.h
45035 +++ b/drivers/infiniband/hw/nes/nes.h
45036 @@ -180,17 +180,17 @@ extern unsigned int nes_debug_level;
45037 extern unsigned int wqm_quanta;
45038 extern struct list_head nes_adapter_list;
45039
45040 -extern atomic_t cm_connects;
45041 -extern atomic_t cm_accepts;
45042 -extern atomic_t cm_disconnects;
45043 -extern atomic_t cm_closes;
45044 -extern atomic_t cm_connecteds;
45045 -extern atomic_t cm_connect_reqs;
45046 -extern atomic_t cm_rejects;
45047 -extern atomic_t mod_qp_timouts;
45048 -extern atomic_t qps_created;
45049 -extern atomic_t qps_destroyed;
45050 -extern atomic_t sw_qps_destroyed;
45051 +extern atomic_unchecked_t cm_connects;
45052 +extern atomic_unchecked_t cm_accepts;
45053 +extern atomic_unchecked_t cm_disconnects;
45054 +extern atomic_unchecked_t cm_closes;
45055 +extern atomic_unchecked_t cm_connecteds;
45056 +extern atomic_unchecked_t cm_connect_reqs;
45057 +extern atomic_unchecked_t cm_rejects;
45058 +extern atomic_unchecked_t mod_qp_timouts;
45059 +extern atomic_unchecked_t qps_created;
45060 +extern atomic_unchecked_t qps_destroyed;
45061 +extern atomic_unchecked_t sw_qps_destroyed;
45062 extern u32 mh_detected;
45063 extern u32 mh_pauses_sent;
45064 extern u32 cm_packets_sent;
45065 @@ -199,16 +199,16 @@ extern u32 cm_packets_created;
45066 extern u32 cm_packets_received;
45067 extern u32 cm_packets_dropped;
45068 extern u32 cm_packets_retrans;
45069 -extern atomic_t cm_listens_created;
45070 -extern atomic_t cm_listens_destroyed;
45071 +extern atomic_unchecked_t cm_listens_created;
45072 +extern atomic_unchecked_t cm_listens_destroyed;
45073 extern u32 cm_backlog_drops;
45074 -extern atomic_t cm_loopbacks;
45075 -extern atomic_t cm_nodes_created;
45076 -extern atomic_t cm_nodes_destroyed;
45077 -extern atomic_t cm_accel_dropped_pkts;
45078 -extern atomic_t cm_resets_recvd;
45079 -extern atomic_t pau_qps_created;
45080 -extern atomic_t pau_qps_destroyed;
45081 +extern atomic_unchecked_t cm_loopbacks;
45082 +extern atomic_unchecked_t cm_nodes_created;
45083 +extern atomic_unchecked_t cm_nodes_destroyed;
45084 +extern atomic_unchecked_t cm_accel_dropped_pkts;
45085 +extern atomic_unchecked_t cm_resets_recvd;
45086 +extern atomic_unchecked_t pau_qps_created;
45087 +extern atomic_unchecked_t pau_qps_destroyed;
45088
45089 extern u32 int_mod_timer_init;
45090 extern u32 int_mod_cq_depth_256;
45091 diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
45092 index 8a3ad17..e1ed4bc 100644
45093 --- a/drivers/infiniband/hw/nes/nes_cm.c
45094 +++ b/drivers/infiniband/hw/nes/nes_cm.c
45095 @@ -69,14 +69,14 @@ u32 cm_packets_dropped;
45096 u32 cm_packets_retrans;
45097 u32 cm_packets_created;
45098 u32 cm_packets_received;
45099 -atomic_t cm_listens_created;
45100 -atomic_t cm_listens_destroyed;
45101 +atomic_unchecked_t cm_listens_created;
45102 +atomic_unchecked_t cm_listens_destroyed;
45103 u32 cm_backlog_drops;
45104 -atomic_t cm_loopbacks;
45105 -atomic_t cm_nodes_created;
45106 -atomic_t cm_nodes_destroyed;
45107 -atomic_t cm_accel_dropped_pkts;
45108 -atomic_t cm_resets_recvd;
45109 +atomic_unchecked_t cm_loopbacks;
45110 +atomic_unchecked_t cm_nodes_created;
45111 +atomic_unchecked_t cm_nodes_destroyed;
45112 +atomic_unchecked_t cm_accel_dropped_pkts;
45113 +atomic_unchecked_t cm_resets_recvd;
45114
45115 static inline int mini_cm_accelerated(struct nes_cm_core *, struct nes_cm_node *);
45116 static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *, struct nes_vnic *, struct nes_cm_info *);
45117 @@ -135,28 +135,28 @@ static void record_ird_ord(struct nes_cm_node *, u16, u16);
45118 /* instance of function pointers for client API */
45119 /* set address of this instance to cm_core->cm_ops at cm_core alloc */
45120 static struct nes_cm_ops nes_cm_api = {
45121 - mini_cm_accelerated,
45122 - mini_cm_listen,
45123 - mini_cm_del_listen,
45124 - mini_cm_connect,
45125 - mini_cm_close,
45126 - mini_cm_accept,
45127 - mini_cm_reject,
45128 - mini_cm_recv_pkt,
45129 - mini_cm_dealloc_core,
45130 - mini_cm_get,
45131 - mini_cm_set
45132 + .accelerated = mini_cm_accelerated,
45133 + .listen = mini_cm_listen,
45134 + .stop_listener = mini_cm_del_listen,
45135 + .connect = mini_cm_connect,
45136 + .close = mini_cm_close,
45137 + .accept = mini_cm_accept,
45138 + .reject = mini_cm_reject,
45139 + .recv_pkt = mini_cm_recv_pkt,
45140 + .destroy_cm_core = mini_cm_dealloc_core,
45141 + .get = mini_cm_get,
45142 + .set = mini_cm_set
45143 };
45144
45145 static struct nes_cm_core *g_cm_core;
45146
45147 -atomic_t cm_connects;
45148 -atomic_t cm_accepts;
45149 -atomic_t cm_disconnects;
45150 -atomic_t cm_closes;
45151 -atomic_t cm_connecteds;
45152 -atomic_t cm_connect_reqs;
45153 -atomic_t cm_rejects;
45154 +atomic_unchecked_t cm_connects;
45155 +atomic_unchecked_t cm_accepts;
45156 +atomic_unchecked_t cm_disconnects;
45157 +atomic_unchecked_t cm_closes;
45158 +atomic_unchecked_t cm_connecteds;
45159 +atomic_unchecked_t cm_connect_reqs;
45160 +atomic_unchecked_t cm_rejects;
45161
45162 int nes_add_ref_cm_node(struct nes_cm_node *cm_node)
45163 {
45164 @@ -1461,7 +1461,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
45165 kfree(listener);
45166 listener = NULL;
45167 ret = 0;
45168 - atomic_inc(&cm_listens_destroyed);
45169 + atomic_inc_unchecked(&cm_listens_destroyed);
45170 } else {
45171 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
45172 }
45173 @@ -1670,7 +1670,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
45174 cm_node->rem_mac);
45175
45176 add_hte_node(cm_core, cm_node);
45177 - atomic_inc(&cm_nodes_created);
45178 + atomic_inc_unchecked(&cm_nodes_created);
45179
45180 return cm_node;
45181 }
45182 @@ -1731,7 +1731,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
45183 }
45184
45185 atomic_dec(&cm_core->node_cnt);
45186 - atomic_inc(&cm_nodes_destroyed);
45187 + atomic_inc_unchecked(&cm_nodes_destroyed);
45188 nesqp = cm_node->nesqp;
45189 if (nesqp) {
45190 nesqp->cm_node = NULL;
45191 @@ -1795,7 +1795,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
45192
45193 static void drop_packet(struct sk_buff *skb)
45194 {
45195 - atomic_inc(&cm_accel_dropped_pkts);
45196 + atomic_inc_unchecked(&cm_accel_dropped_pkts);
45197 dev_kfree_skb_any(skb);
45198 }
45199
45200 @@ -1858,7 +1858,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
45201 {
45202
45203 int reset = 0; /* whether to send reset in case of err.. */
45204 - atomic_inc(&cm_resets_recvd);
45205 + atomic_inc_unchecked(&cm_resets_recvd);
45206 nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
45207 " refcnt=%d\n", cm_node, cm_node->state,
45208 atomic_read(&cm_node->ref_count));
45209 @@ -2526,7 +2526,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
45210 rem_ref_cm_node(cm_node->cm_core, cm_node);
45211 return NULL;
45212 }
45213 - atomic_inc(&cm_loopbacks);
45214 + atomic_inc_unchecked(&cm_loopbacks);
45215 loopbackremotenode->loopbackpartner = cm_node;
45216 loopbackremotenode->tcp_cntxt.rcv_wscale =
45217 NES_CM_DEFAULT_RCV_WND_SCALE;
45218 @@ -2807,7 +2807,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
45219 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp);
45220 else {
45221 rem_ref_cm_node(cm_core, cm_node);
45222 - atomic_inc(&cm_accel_dropped_pkts);
45223 + atomic_inc_unchecked(&cm_accel_dropped_pkts);
45224 dev_kfree_skb_any(skb);
45225 }
45226 break;
45227 @@ -3118,7 +3118,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
45228
45229 if ((cm_id) && (cm_id->event_handler)) {
45230 if (issue_disconn) {
45231 - atomic_inc(&cm_disconnects);
45232 + atomic_inc_unchecked(&cm_disconnects);
45233 cm_event.event = IW_CM_EVENT_DISCONNECT;
45234 cm_event.status = disconn_status;
45235 cm_event.local_addr = cm_id->local_addr;
45236 @@ -3140,7 +3140,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
45237 }
45238
45239 if (issue_close) {
45240 - atomic_inc(&cm_closes);
45241 + atomic_inc_unchecked(&cm_closes);
45242 nes_disconnect(nesqp, 1);
45243
45244 cm_id->provider_data = nesqp;
45245 @@ -3278,7 +3278,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
45246
45247 nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
45248 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
45249 - atomic_inc(&cm_accepts);
45250 + atomic_inc_unchecked(&cm_accepts);
45251
45252 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
45253 netdev_refcnt_read(nesvnic->netdev));
45254 @@ -3476,7 +3476,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
45255 struct nes_cm_core *cm_core;
45256 u8 *start_buff;
45257
45258 - atomic_inc(&cm_rejects);
45259 + atomic_inc_unchecked(&cm_rejects);
45260 cm_node = (struct nes_cm_node *)cm_id->provider_data;
45261 loopback = cm_node->loopbackpartner;
45262 cm_core = cm_node->cm_core;
45263 @@ -3541,7 +3541,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
45264 ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr),
45265 ntohs(laddr->sin_port));
45266
45267 - atomic_inc(&cm_connects);
45268 + atomic_inc_unchecked(&cm_connects);
45269 nesqp->active_conn = 1;
45270
45271 /* cache the cm_id in the qp */
45272 @@ -3688,7 +3688,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
45273 g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
45274 return err;
45275 }
45276 - atomic_inc(&cm_listens_created);
45277 + atomic_inc_unchecked(&cm_listens_created);
45278 }
45279
45280 cm_id->add_ref(cm_id);
45281 @@ -3795,7 +3795,7 @@ static void cm_event_connected(struct nes_cm_event *event)
45282
45283 if (nesqp->destroyed)
45284 return;
45285 - atomic_inc(&cm_connecteds);
45286 + atomic_inc_unchecked(&cm_connecteds);
45287 nes_debug(NES_DBG_CM, "QP%u attempting to connect to 0x%08X:0x%04X on"
45288 " local port 0x%04X. jiffies = %lu.\n",
45289 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr),
45290 @@ -3980,7 +3980,7 @@ static void cm_event_reset(struct nes_cm_event *event)
45291
45292 cm_id->add_ref(cm_id);
45293 ret = cm_id->event_handler(cm_id, &cm_event);
45294 - atomic_inc(&cm_closes);
45295 + atomic_inc_unchecked(&cm_closes);
45296 cm_event.event = IW_CM_EVENT_CLOSE;
45297 cm_event.status = 0;
45298 cm_event.provider_data = cm_id->provider_data;
45299 @@ -4020,7 +4020,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
45300 return;
45301 cm_id = cm_node->cm_id;
45302
45303 - atomic_inc(&cm_connect_reqs);
45304 + atomic_inc_unchecked(&cm_connect_reqs);
45305 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
45306 cm_node, cm_id, jiffies);
45307
45308 @@ -4069,7 +4069,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
45309 return;
45310 cm_id = cm_node->cm_id;
45311
45312 - atomic_inc(&cm_connect_reqs);
45313 + atomic_inc_unchecked(&cm_connect_reqs);
45314 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
45315 cm_node, cm_id, jiffies);
45316
45317 diff --git a/drivers/infiniband/hw/nes/nes_mgt.c b/drivers/infiniband/hw/nes/nes_mgt.c
45318 index 4166452..fc952c3 100644
45319 --- a/drivers/infiniband/hw/nes/nes_mgt.c
45320 +++ b/drivers/infiniband/hw/nes/nes_mgt.c
45321 @@ -40,8 +40,8 @@
45322 #include "nes.h"
45323 #include "nes_mgt.h"
45324
45325 -atomic_t pau_qps_created;
45326 -atomic_t pau_qps_destroyed;
45327 +atomic_unchecked_t pau_qps_created;
45328 +atomic_unchecked_t pau_qps_destroyed;
45329
45330 static void nes_replenish_mgt_rq(struct nes_vnic_mgt *mgtvnic)
45331 {
45332 @@ -621,7 +621,7 @@ void nes_destroy_pau_qp(struct nes_device *nesdev, struct nes_qp *nesqp)
45333 {
45334 struct sk_buff *skb;
45335 unsigned long flags;
45336 - atomic_inc(&pau_qps_destroyed);
45337 + atomic_inc_unchecked(&pau_qps_destroyed);
45338
45339 /* Free packets that have not yet been forwarded */
45340 /* Lock is acquired by skb_dequeue when removing the skb */
45341 @@ -810,7 +810,7 @@ static void nes_mgt_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *
45342 cq->cq_vbase[head].cqe_words[NES_NIC_CQE_HASH_RCVNXT]);
45343 skb_queue_head_init(&nesqp->pau_list);
45344 spin_lock_init(&nesqp->pau_lock);
45345 - atomic_inc(&pau_qps_created);
45346 + atomic_inc_unchecked(&pau_qps_created);
45347 nes_change_quad_hash(nesdev, mgtvnic->nesvnic, nesqp);
45348 }
45349
45350 diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
45351 index 70acda9..a96de9d 100644
45352 --- a/drivers/infiniband/hw/nes/nes_nic.c
45353 +++ b/drivers/infiniband/hw/nes/nes_nic.c
45354 @@ -1274,39 +1274,39 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev,
45355 target_stat_values[++index] = mh_detected;
45356 target_stat_values[++index] = mh_pauses_sent;
45357 target_stat_values[++index] = nesvnic->endnode_ipv4_tcp_retransmits;
45358 - target_stat_values[++index] = atomic_read(&cm_connects);
45359 - target_stat_values[++index] = atomic_read(&cm_accepts);
45360 - target_stat_values[++index] = atomic_read(&cm_disconnects);
45361 - target_stat_values[++index] = atomic_read(&cm_connecteds);
45362 - target_stat_values[++index] = atomic_read(&cm_connect_reqs);
45363 - target_stat_values[++index] = atomic_read(&cm_rejects);
45364 - target_stat_values[++index] = atomic_read(&mod_qp_timouts);
45365 - target_stat_values[++index] = atomic_read(&qps_created);
45366 - target_stat_values[++index] = atomic_read(&sw_qps_destroyed);
45367 - target_stat_values[++index] = atomic_read(&qps_destroyed);
45368 - target_stat_values[++index] = atomic_read(&cm_closes);
45369 + target_stat_values[++index] = atomic_read_unchecked(&cm_connects);
45370 + target_stat_values[++index] = atomic_read_unchecked(&cm_accepts);
45371 + target_stat_values[++index] = atomic_read_unchecked(&cm_disconnects);
45372 + target_stat_values[++index] = atomic_read_unchecked(&cm_connecteds);
45373 + target_stat_values[++index] = atomic_read_unchecked(&cm_connect_reqs);
45374 + target_stat_values[++index] = atomic_read_unchecked(&cm_rejects);
45375 + target_stat_values[++index] = atomic_read_unchecked(&mod_qp_timouts);
45376 + target_stat_values[++index] = atomic_read_unchecked(&qps_created);
45377 + target_stat_values[++index] = atomic_read_unchecked(&sw_qps_destroyed);
45378 + target_stat_values[++index] = atomic_read_unchecked(&qps_destroyed);
45379 + target_stat_values[++index] = atomic_read_unchecked(&cm_closes);
45380 target_stat_values[++index] = cm_packets_sent;
45381 target_stat_values[++index] = cm_packets_bounced;
45382 target_stat_values[++index] = cm_packets_created;
45383 target_stat_values[++index] = cm_packets_received;
45384 target_stat_values[++index] = cm_packets_dropped;
45385 target_stat_values[++index] = cm_packets_retrans;
45386 - target_stat_values[++index] = atomic_read(&cm_listens_created);
45387 - target_stat_values[++index] = atomic_read(&cm_listens_destroyed);
45388 + target_stat_values[++index] = atomic_read_unchecked(&cm_listens_created);
45389 + target_stat_values[++index] = atomic_read_unchecked(&cm_listens_destroyed);
45390 target_stat_values[++index] = cm_backlog_drops;
45391 - target_stat_values[++index] = atomic_read(&cm_loopbacks);
45392 - target_stat_values[++index] = atomic_read(&cm_nodes_created);
45393 - target_stat_values[++index] = atomic_read(&cm_nodes_destroyed);
45394 - target_stat_values[++index] = atomic_read(&cm_accel_dropped_pkts);
45395 - target_stat_values[++index] = atomic_read(&cm_resets_recvd);
45396 + target_stat_values[++index] = atomic_read_unchecked(&cm_loopbacks);
45397 + target_stat_values[++index] = atomic_read_unchecked(&cm_nodes_created);
45398 + target_stat_values[++index] = atomic_read_unchecked(&cm_nodes_destroyed);
45399 + target_stat_values[++index] = atomic_read_unchecked(&cm_accel_dropped_pkts);
45400 + target_stat_values[++index] = atomic_read_unchecked(&cm_resets_recvd);
45401 target_stat_values[++index] = nesadapter->free_4kpbl;
45402 target_stat_values[++index] = nesadapter->free_256pbl;
45403 target_stat_values[++index] = int_mod_timer_init;
45404 target_stat_values[++index] = nesvnic->lro_mgr.stats.aggregated;
45405 target_stat_values[++index] = nesvnic->lro_mgr.stats.flushed;
45406 target_stat_values[++index] = nesvnic->lro_mgr.stats.no_desc;
45407 - target_stat_values[++index] = atomic_read(&pau_qps_created);
45408 - target_stat_values[++index] = atomic_read(&pau_qps_destroyed);
45409 + target_stat_values[++index] = atomic_read_unchecked(&pau_qps_created);
45410 + target_stat_values[++index] = atomic_read_unchecked(&pau_qps_destroyed);
45411 }
45412
45413 /**
45414 diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
45415 index fbc43e5..3672792 100644
45416 --- a/drivers/infiniband/hw/nes/nes_verbs.c
45417 +++ b/drivers/infiniband/hw/nes/nes_verbs.c
45418 @@ -46,9 +46,9 @@
45419
45420 #include <rdma/ib_umem.h>
45421
45422 -atomic_t mod_qp_timouts;
45423 -atomic_t qps_created;
45424 -atomic_t sw_qps_destroyed;
45425 +atomic_unchecked_t mod_qp_timouts;
45426 +atomic_unchecked_t qps_created;
45427 +atomic_unchecked_t sw_qps_destroyed;
45428
45429 static void nes_unregister_ofa_device(struct nes_ib_device *nesibdev);
45430
45431 @@ -1137,7 +1137,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
45432 if (init_attr->create_flags)
45433 return ERR_PTR(-EINVAL);
45434
45435 - atomic_inc(&qps_created);
45436 + atomic_inc_unchecked(&qps_created);
45437 switch (init_attr->qp_type) {
45438 case IB_QPT_RC:
45439 if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
45440 @@ -1471,7 +1471,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp)
45441 struct iw_cm_event cm_event;
45442 int ret = 0;
45443
45444 - atomic_inc(&sw_qps_destroyed);
45445 + atomic_inc_unchecked(&sw_qps_destroyed);
45446 nesqp->destroyed = 1;
45447
45448 /* Blow away the connection if it exists. */
45449 diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
45450 index 7df16f7..7e1b21e 100644
45451 --- a/drivers/infiniband/hw/qib/qib.h
45452 +++ b/drivers/infiniband/hw/qib/qib.h
45453 @@ -52,6 +52,7 @@
45454 #include <linux/kref.h>
45455 #include <linux/sched.h>
45456 #include <linux/kthread.h>
45457 +#include <linux/slab.h>
45458
45459 #include "qib_common.h"
45460 #include "qib_verbs.h"
45461 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
45462 index cdc7df4..a2fdfdb 100644
45463 --- a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
45464 +++ b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
45465 @@ -156,7 +156,7 @@ static size_t ipoib_get_size(const struct net_device *dev)
45466 nla_total_size(2); /* IFLA_IPOIB_UMCAST */
45467 }
45468
45469 -static struct rtnl_link_ops ipoib_link_ops __read_mostly = {
45470 +static struct rtnl_link_ops ipoib_link_ops = {
45471 .kind = "ipoib",
45472 .maxtype = IFLA_IPOIB_MAX,
45473 .policy = ipoib_policy,
45474 diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
45475 index e853a21..56fc5a8 100644
45476 --- a/drivers/input/gameport/gameport.c
45477 +++ b/drivers/input/gameport/gameport.c
45478 @@ -527,14 +527,14 @@ EXPORT_SYMBOL(gameport_set_phys);
45479 */
45480 static void gameport_init_port(struct gameport *gameport)
45481 {
45482 - static atomic_t gameport_no = ATOMIC_INIT(-1);
45483 + static atomic_unchecked_t gameport_no = ATOMIC_INIT(-1);
45484
45485 __module_get(THIS_MODULE);
45486
45487 mutex_init(&gameport->drv_mutex);
45488 device_initialize(&gameport->dev);
45489 dev_set_name(&gameport->dev, "gameport%lu",
45490 - (unsigned long)atomic_inc_return(&gameport_no));
45491 + (unsigned long)atomic_inc_return_unchecked(&gameport_no));
45492 gameport->dev.bus = &gameport_bus;
45493 gameport->dev.release = gameport_release_port;
45494 if (gameport->parent)
45495 diff --git a/drivers/input/input.c b/drivers/input/input.c
45496 index 78d2499..1f0318e 100644
45497 --- a/drivers/input/input.c
45498 +++ b/drivers/input/input.c
45499 @@ -1775,7 +1775,7 @@ EXPORT_SYMBOL_GPL(input_class);
45500 */
45501 struct input_dev *input_allocate_device(void)
45502 {
45503 - static atomic_t input_no = ATOMIC_INIT(-1);
45504 + static atomic_unchecked_t input_no = ATOMIC_INIT(-1);
45505 struct input_dev *dev;
45506
45507 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
45508 @@ -1790,7 +1790,7 @@ struct input_dev *input_allocate_device(void)
45509 INIT_LIST_HEAD(&dev->node);
45510
45511 dev_set_name(&dev->dev, "input%lu",
45512 - (unsigned long)atomic_inc_return(&input_no));
45513 + (unsigned long)atomic_inc_return_unchecked(&input_no));
45514
45515 __module_get(THIS_MODULE);
45516 }
45517 diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c
45518 index 4a95b22..874c182 100644
45519 --- a/drivers/input/joystick/sidewinder.c
45520 +++ b/drivers/input/joystick/sidewinder.c
45521 @@ -30,6 +30,7 @@
45522 #include <linux/kernel.h>
45523 #include <linux/module.h>
45524 #include <linux/slab.h>
45525 +#include <linux/sched.h>
45526 #include <linux/input.h>
45527 #include <linux/gameport.h>
45528 #include <linux/jiffies.h>
45529 diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
45530 index f8850f9..9708a2d 100644
45531 --- a/drivers/input/joystick/xpad.c
45532 +++ b/drivers/input/joystick/xpad.c
45533 @@ -959,7 +959,7 @@ static void xpad_led_set(struct led_classdev *led_cdev,
45534
45535 static int xpad_led_probe(struct usb_xpad *xpad)
45536 {
45537 - static atomic_t led_seq = ATOMIC_INIT(-1);
45538 + static atomic_unchecked_t led_seq = ATOMIC_INIT(-1);
45539 struct xpad_led *led;
45540 struct led_classdev *led_cdev;
45541 int error;
45542 @@ -971,7 +971,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
45543 if (!led)
45544 return -ENOMEM;
45545
45546 - xpad->led_no = atomic_inc_return(&led_seq);
45547 + xpad->led_no = atomic_inc_return_unchecked(&led_seq);
45548
45549 snprintf(led->name, sizeof(led->name), "xpad%lu", xpad->led_no);
45550 led->xpad = xpad;
45551 diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
45552 index ac1fa5f..5f7502c 100644
45553 --- a/drivers/input/misc/ims-pcu.c
45554 +++ b/drivers/input/misc/ims-pcu.c
45555 @@ -1851,7 +1851,7 @@ static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id)
45556
45557 static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
45558 {
45559 - static atomic_t device_no = ATOMIC_INIT(-1);
45560 + static atomic_unchecked_t device_no = ATOMIC_INIT(-1);
45561
45562 const struct ims_pcu_device_info *info;
45563 int error;
45564 @@ -1882,7 +1882,7 @@ static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
45565 }
45566
45567 /* Device appears to be operable, complete initialization */
45568 - pcu->device_no = atomic_inc_return(&device_no);
45569 + pcu->device_no = atomic_inc_return_unchecked(&device_no);
45570
45571 /*
45572 * PCU-B devices, both GEN_1 and GEN_2 do not have OFN sensor
45573 diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
45574 index ad5a5a1..5eac214 100644
45575 --- a/drivers/input/mouse/psmouse.h
45576 +++ b/drivers/input/mouse/psmouse.h
45577 @@ -125,7 +125,7 @@ struct psmouse_attribute {
45578 ssize_t (*set)(struct psmouse *psmouse, void *data,
45579 const char *buf, size_t count);
45580 bool protect;
45581 -};
45582 +} __do_const;
45583 #define to_psmouse_attr(a) container_of((a), struct psmouse_attribute, dattr)
45584
45585 ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *attr,
45586 diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
45587 index b604564..3f14ae4 100644
45588 --- a/drivers/input/mousedev.c
45589 +++ b/drivers/input/mousedev.c
45590 @@ -744,7 +744,7 @@ static ssize_t mousedev_read(struct file *file, char __user *buffer,
45591
45592 spin_unlock_irq(&client->packet_lock);
45593
45594 - if (copy_to_user(buffer, data, count))
45595 + if (count > sizeof(data) || copy_to_user(buffer, data, count))
45596 return -EFAULT;
45597
45598 return count;
45599 diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
45600 index a05a517..323a2fd 100644
45601 --- a/drivers/input/serio/serio.c
45602 +++ b/drivers/input/serio/serio.c
45603 @@ -514,7 +514,7 @@ static void serio_release_port(struct device *dev)
45604 */
45605 static void serio_init_port(struct serio *serio)
45606 {
45607 - static atomic_t serio_no = ATOMIC_INIT(-1);
45608 + static atomic_unchecked_t serio_no = ATOMIC_INIT(-1);
45609
45610 __module_get(THIS_MODULE);
45611
45612 @@ -525,7 +525,7 @@ static void serio_init_port(struct serio *serio)
45613 mutex_init(&serio->drv_mutex);
45614 device_initialize(&serio->dev);
45615 dev_set_name(&serio->dev, "serio%lu",
45616 - (unsigned long)atomic_inc_return(&serio_no));
45617 + (unsigned long)atomic_inc_return_unchecked(&serio_no));
45618 serio->dev.bus = &serio_bus;
45619 serio->dev.release = serio_release_port;
45620 serio->dev.groups = serio_device_attr_groups;
45621 diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c
45622 index 71ef5d6..93380a9 100644
45623 --- a/drivers/input/serio/serio_raw.c
45624 +++ b/drivers/input/serio/serio_raw.c
45625 @@ -292,7 +292,7 @@ static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data,
45626
45627 static int serio_raw_connect(struct serio *serio, struct serio_driver *drv)
45628 {
45629 - static atomic_t serio_raw_no = ATOMIC_INIT(-1);
45630 + static atomic_unchecked_t serio_raw_no = ATOMIC_INIT(-1);
45631 struct serio_raw *serio_raw;
45632 int err;
45633
45634 @@ -303,7 +303,7 @@ static int serio_raw_connect(struct serio *serio, struct serio_driver *drv)
45635 }
45636
45637 snprintf(serio_raw->name, sizeof(serio_raw->name),
45638 - "serio_raw%ld", (long)atomic_inc_return(&serio_raw_no));
45639 + "serio_raw%ld", (long)atomic_inc_return_unchecked(&serio_raw_no));
45640 kref_init(&serio_raw->kref);
45641 INIT_LIST_HEAD(&serio_raw->client_list);
45642 init_waitqueue_head(&serio_raw->wait);
45643 diff --git a/drivers/input/touchscreen/htcpen.c b/drivers/input/touchscreen/htcpen.c
45644 index 92e2243..8fd9092 100644
45645 --- a/drivers/input/touchscreen/htcpen.c
45646 +++ b/drivers/input/touchscreen/htcpen.c
45647 @@ -219,7 +219,7 @@ static struct isa_driver htcpen_isa_driver = {
45648 }
45649 };
45650
45651 -static struct dmi_system_id htcshift_dmi_table[] __initdata = {
45652 +static const struct dmi_system_id htcshift_dmi_table[] __initconst = {
45653 {
45654 .ident = "Shift",
45655 .matches = {
45656 diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
45657 index 658ee39..6fde5be 100644
45658 --- a/drivers/iommu/amd_iommu.c
45659 +++ b/drivers/iommu/amd_iommu.c
45660 @@ -794,11 +794,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu,
45661
45662 static void build_completion_wait(struct iommu_cmd *cmd, u64 address)
45663 {
45664 + phys_addr_t physaddr;
45665 WARN_ON(address & 0x7ULL);
45666
45667 memset(cmd, 0, sizeof(*cmd));
45668 - cmd->data[0] = lower_32_bits(__pa(address)) | CMD_COMPL_WAIT_STORE_MASK;
45669 - cmd->data[1] = upper_32_bits(__pa(address));
45670 +
45671 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
45672 + if (object_starts_on_stack((void *)address)) {
45673 + void *adjbuf = (void *)address - current->stack + current->lowmem_stack;
45674 + physaddr = __pa((u64)adjbuf);
45675 + } else
45676 +#endif
45677 + physaddr = __pa(address);
45678 +
45679 + cmd->data[0] = lower_32_bits(physaddr) | CMD_COMPL_WAIT_STORE_MASK;
45680 + cmd->data[1] = upper_32_bits(physaddr);
45681 cmd->data[2] = 1;
45682 CMD_SET_TYPE(cmd, CMD_COMPL_WAIT);
45683 }
45684 diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
45685 index 4cd0c29..afd3cbe 100644
45686 --- a/drivers/iommu/arm-smmu.c
45687 +++ b/drivers/iommu/arm-smmu.c
45688 @@ -330,7 +330,7 @@ enum arm_smmu_domain_stage {
45689
45690 struct arm_smmu_domain {
45691 struct arm_smmu_device *smmu;
45692 - struct io_pgtable_ops *pgtbl_ops;
45693 + struct io_pgtable *pgtbl;
45694 spinlock_t pgtbl_lock;
45695 struct arm_smmu_cfg cfg;
45696 enum arm_smmu_domain_stage stage;
45697 @@ -816,7 +816,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
45698 {
45699 int irq, start, ret = 0;
45700 unsigned long ias, oas;
45701 - struct io_pgtable_ops *pgtbl_ops;
45702 + struct io_pgtable *pgtbl;
45703 struct io_pgtable_cfg pgtbl_cfg;
45704 enum io_pgtable_fmt fmt;
45705 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
45706 @@ -901,14 +901,16 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
45707 };
45708
45709 smmu_domain->smmu = smmu;
45710 - pgtbl_ops = alloc_io_pgtable_ops(fmt, &pgtbl_cfg, smmu_domain);
45711 - if (!pgtbl_ops) {
45712 + pgtbl = alloc_io_pgtable(fmt, &pgtbl_cfg, smmu_domain);
45713 + if (!pgtbl) {
45714 ret = -ENOMEM;
45715 goto out_clear_smmu;
45716 }
45717
45718 /* Update our support page sizes to reflect the page table format */
45719 - arm_smmu_ops.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
45720 + pax_open_kernel();
45721 + *(unsigned long *)&arm_smmu_ops.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
45722 + pax_close_kernel();
45723
45724 /* Initialise the context bank with our page table cfg */
45725 arm_smmu_init_context_bank(smmu_domain, &pgtbl_cfg);
45726 @@ -929,7 +931,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
45727 mutex_unlock(&smmu_domain->init_mutex);
45728
45729 /* Publish page table ops for map/unmap */
45730 - smmu_domain->pgtbl_ops = pgtbl_ops;
45731 + smmu_domain->pgtbl = pgtbl;
45732 return 0;
45733
45734 out_clear_smmu:
45735 @@ -962,8 +964,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain)
45736 free_irq(irq, domain);
45737 }
45738
45739 - if (smmu_domain->pgtbl_ops)
45740 - free_io_pgtable_ops(smmu_domain->pgtbl_ops);
45741 + free_io_pgtable(smmu_domain->pgtbl);
45742
45743 __arm_smmu_free_bitmap(smmu->context_map, cfg->cbndx);
45744 }
45745 @@ -1189,13 +1190,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova,
45746 int ret;
45747 unsigned long flags;
45748 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
45749 - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
45750 + struct io_pgtable *iop = smmu_domain->pgtbl;
45751
45752 - if (!ops)
45753 + if (!iop)
45754 return -ENODEV;
45755
45756 spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags);
45757 - ret = ops->map(ops, iova, paddr, size, prot);
45758 + ret = iop->ops->map(iop, iova, paddr, size, prot);
45759 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags);
45760 return ret;
45761 }
45762 @@ -1206,13 +1207,13 @@ static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova,
45763 size_t ret;
45764 unsigned long flags;
45765 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
45766 - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
45767 + struct io_pgtable *iop = smmu_domain->pgtbl;
45768
45769 - if (!ops)
45770 + if (!iop)
45771 return 0;
45772
45773 spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags);
45774 - ret = ops->unmap(ops, iova, size);
45775 + ret = iop->ops->unmap(iop, iova, size);
45776 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags);
45777 return ret;
45778 }
45779 @@ -1223,7 +1224,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain,
45780 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
45781 struct arm_smmu_device *smmu = smmu_domain->smmu;
45782 struct arm_smmu_cfg *cfg = &smmu_domain->cfg;
45783 - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
45784 + struct io_pgtable *iop = smmu_domain->pgtbl;
45785 struct device *dev = smmu->dev;
45786 void __iomem *cb_base;
45787 u32 tmp;
45788 @@ -1246,7 +1247,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain,
45789 dev_err(dev,
45790 "iova to phys timed out on 0x%pad. Falling back to software table walk.\n",
45791 &iova);
45792 - return ops->iova_to_phys(ops, iova);
45793 + return iop->ops->iova_to_phys(iop, iova);
45794 }
45795
45796 phys = readl_relaxed(cb_base + ARM_SMMU_CB_PAR_LO);
45797 @@ -1267,9 +1268,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain,
45798 phys_addr_t ret;
45799 unsigned long flags;
45800 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
45801 - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
45802 + struct io_pgtable *iop = smmu_domain->pgtbl;
45803
45804 - if (!ops)
45805 + if (!iop)
45806 return 0;
45807
45808 spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags);
45809 @@ -1277,7 +1278,7 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain,
45810 smmu_domain->stage == ARM_SMMU_DOMAIN_S1) {
45811 ret = arm_smmu_iova_to_phys_hard(domain, iova);
45812 } else {
45813 - ret = ops->iova_to_phys(ops, iova);
45814 + ret = iop->ops->iova_to_phys(iop, iova);
45815 }
45816
45817 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags);
45818 @@ -1667,7 +1668,9 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
45819 size |= SZ_64K | SZ_512M;
45820 }
45821
45822 - arm_smmu_ops.pgsize_bitmap &= size;
45823 + pax_open_kernel();
45824 + *(unsigned long *)&arm_smmu_ops.pgsize_bitmap &= size;
45825 + pax_close_kernel();
45826 dev_notice(smmu->dev, "\tSupported page sizes: 0x%08lx\n", size);
45827
45828 if (smmu->features & ARM_SMMU_FEAT_TRANS_S1)
45829 diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
45830 index e29d5d7..e5eeb3e 100644
45831 --- a/drivers/iommu/io-pgtable-arm.c
45832 +++ b/drivers/iommu/io-pgtable-arm.c
45833 @@ -36,12 +36,6 @@
45834 #define io_pgtable_to_data(x) \
45835 container_of((x), struct arm_lpae_io_pgtable, iop)
45836
45837 -#define io_pgtable_ops_to_pgtable(x) \
45838 - container_of((x), struct io_pgtable, ops)
45839 -
45840 -#define io_pgtable_ops_to_data(x) \
45841 - io_pgtable_to_data(io_pgtable_ops_to_pgtable(x))
45842 -
45843 /*
45844 * For consistency with the architecture, we always consider
45845 * ARM_LPAE_MAX_LEVELS levels, with the walk starting at level n >=0
45846 @@ -319,10 +313,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data,
45847 return pte;
45848 }
45849
45850 -static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova,
45851 +static int arm_lpae_map(struct io_pgtable *iop, unsigned long iova,
45852 phys_addr_t paddr, size_t size, int iommu_prot)
45853 {
45854 - struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
45855 + struct arm_lpae_io_pgtable *data = io_pgtable_to_data(iop);
45856 arm_lpae_iopte *ptep = data->pgd;
45857 int lvl = ARM_LPAE_START_LVL(data);
45858 arm_lpae_iopte prot;
45859 @@ -462,12 +456,11 @@ static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data,
45860 return __arm_lpae_unmap(data, iova, size, lvl + 1, ptep);
45861 }
45862
45863 -static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova,
45864 +static int arm_lpae_unmap(struct io_pgtable *iop, unsigned long iova,
45865 size_t size)
45866 {
45867 size_t unmapped;
45868 - struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
45869 - struct io_pgtable *iop = &data->iop;
45870 + struct arm_lpae_io_pgtable *data = io_pgtable_to_data(iop);
45871 arm_lpae_iopte *ptep = data->pgd;
45872 int lvl = ARM_LPAE_START_LVL(data);
45873
45874 @@ -478,10 +471,10 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova,
45875 return unmapped;
45876 }
45877
45878 -static phys_addr_t arm_lpae_iova_to_phys(struct io_pgtable_ops *ops,
45879 +static phys_addr_t arm_lpae_iova_to_phys(struct io_pgtable *iop,
45880 unsigned long iova)
45881 {
45882 - struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
45883 + struct arm_lpae_io_pgtable *data = io_pgtable_to_data(iop);
45884 arm_lpae_iopte pte, *ptep = data->pgd;
45885 int lvl = ARM_LPAE_START_LVL(data);
45886
45887 @@ -548,6 +541,12 @@ static void arm_lpae_restrict_pgsizes(struct io_pgtable_cfg *cfg)
45888 }
45889 }
45890
45891 +static struct io_pgtable_ops arm_lpae_io_pgtable_ops = {
45892 + .map = arm_lpae_map,
45893 + .unmap = arm_lpae_unmap,
45894 + .iova_to_phys = arm_lpae_iova_to_phys,
45895 +};
45896 +
45897 static struct arm_lpae_io_pgtable *
45898 arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg)
45899 {
45900 @@ -579,11 +578,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg)
45901 pgd_bits = va_bits - (data->bits_per_level * (data->levels - 1));
45902 data->pgd_size = 1UL << (pgd_bits + ilog2(sizeof(arm_lpae_iopte)));
45903
45904 - data->iop.ops = (struct io_pgtable_ops) {
45905 - .map = arm_lpae_map,
45906 - .unmap = arm_lpae_unmap,
45907 - .iova_to_phys = arm_lpae_iova_to_phys,
45908 - };
45909 + data->iop.ops = &arm_lpae_io_pgtable_ops;
45910
45911 return data;
45912 }
45913 @@ -845,9 +840,9 @@ static struct iommu_gather_ops dummy_tlb_ops __initdata = {
45914 .flush_pgtable = dummy_flush_pgtable,
45915 };
45916
45917 -static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops)
45918 +static void __init arm_lpae_dump_ops(struct io_pgtable *iop)
45919 {
45920 - struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
45921 + struct arm_lpae_io_pgtable *data = io_pgtable_to_data(iop);
45922 struct io_pgtable_cfg *cfg = &data->iop.cfg;
45923
45924 pr_err("cfg: pgsize_bitmap 0x%lx, ias %u-bit\n",
45925 @@ -857,9 +852,9 @@ static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops)
45926 data->bits_per_level, data->pgd);
45927 }
45928
45929 -#define __FAIL(ops, i) ({ \
45930 +#define __FAIL(iop, i) ({ \
45931 WARN(1, "selftest: test failed for fmt idx %d\n", (i)); \
45932 - arm_lpae_dump_ops(ops); \
45933 + arm_lpae_dump_ops(iop); \
45934 selftest_running = false; \
45935 -EFAULT; \
45936 })
45937 @@ -874,30 +869,32 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg)
45938 int i, j;
45939 unsigned long iova;
45940 size_t size;
45941 - struct io_pgtable_ops *ops;
45942 + struct io_pgtable *iop;
45943 + const struct io_pgtable_ops *ops;
45944
45945 selftest_running = true;
45946
45947 for (i = 0; i < ARRAY_SIZE(fmts); ++i) {
45948 cfg_cookie = cfg;
45949 - ops = alloc_io_pgtable_ops(fmts[i], cfg, cfg);
45950 - if (!ops) {
45951 + iop = alloc_io_pgtable(fmts[i], cfg, cfg);
45952 + if (!iop) {
45953 pr_err("selftest: failed to allocate io pgtable ops\n");
45954 return -ENOMEM;
45955 }
45956 + ops = iop->ops;
45957
45958 /*
45959 * Initial sanity checks.
45960 * Empty page tables shouldn't provide any translations.
45961 */
45962 - if (ops->iova_to_phys(ops, 42))
45963 - return __FAIL(ops, i);
45964 + if (ops->iova_to_phys(iop, 42))
45965 + return __FAIL(iop, i);
45966
45967 - if (ops->iova_to_phys(ops, SZ_1G + 42))
45968 - return __FAIL(ops, i);
45969 + if (ops->iova_to_phys(iop, SZ_1G + 42))
45970 + return __FAIL(iop, i);
45971
45972 - if (ops->iova_to_phys(ops, SZ_2G + 42))
45973 - return __FAIL(ops, i);
45974 + if (ops->iova_to_phys(iop, SZ_2G + 42))
45975 + return __FAIL(iop, i);
45976
45977 /*
45978 * Distinct mappings of different granule sizes.
45979 @@ -907,19 +904,19 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg)
45980 while (j != BITS_PER_LONG) {
45981 size = 1UL << j;
45982
45983 - if (ops->map(ops, iova, iova, size, IOMMU_READ |
45984 + if (ops->map(iop, iova, iova, size, IOMMU_READ |
45985 IOMMU_WRITE |
45986 IOMMU_NOEXEC |
45987 IOMMU_CACHE))
45988 - return __FAIL(ops, i);
45989 + return __FAIL(iop, i);
45990
45991 /* Overlapping mappings */
45992 - if (!ops->map(ops, iova, iova + size, size,
45993 + if (!ops->map(iop, iova, iova + size, size,
45994 IOMMU_READ | IOMMU_NOEXEC))
45995 - return __FAIL(ops, i);
45996 + return __FAIL(iop, i);
45997
45998 - if (ops->iova_to_phys(ops, iova + 42) != (iova + 42))
45999 - return __FAIL(ops, i);
46000 + if (ops->iova_to_phys(iop, iova + 42) != (iova + 42))
46001 + return __FAIL(iop, i);
46002
46003 iova += SZ_1G;
46004 j++;
46005 @@ -928,15 +925,15 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg)
46006
46007 /* Partial unmap */
46008 size = 1UL << __ffs(cfg->pgsize_bitmap);
46009 - if (ops->unmap(ops, SZ_1G + size, size) != size)
46010 - return __FAIL(ops, i);
46011 + if (ops->unmap(iop, SZ_1G + size, size) != size)
46012 + return __FAIL(iop, i);
46013
46014 /* Remap of partial unmap */
46015 - if (ops->map(ops, SZ_1G + size, size, size, IOMMU_READ))
46016 - return __FAIL(ops, i);
46017 + if (ops->map(iop, SZ_1G + size, size, size, IOMMU_READ))
46018 + return __FAIL(iop, i);
46019
46020 - if (ops->iova_to_phys(ops, SZ_1G + size + 42) != (size + 42))
46021 - return __FAIL(ops, i);
46022 + if (ops->iova_to_phys(iop, SZ_1G + size + 42) != (size + 42))
46023 + return __FAIL(iop, i);
46024
46025 /* Full unmap */
46026 iova = 0;
46027 @@ -944,25 +941,25 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg)
46028 while (j != BITS_PER_LONG) {
46029 size = 1UL << j;
46030
46031 - if (ops->unmap(ops, iova, size) != size)
46032 - return __FAIL(ops, i);
46033 + if (ops->unmap(iop, iova, size) != size)
46034 + return __FAIL(iop, i);
46035
46036 - if (ops->iova_to_phys(ops, iova + 42))
46037 - return __FAIL(ops, i);
46038 + if (ops->iova_to_phys(iop, iova + 42))
46039 + return __FAIL(iop, i);
46040
46041 /* Remap full block */
46042 - if (ops->map(ops, iova, iova, size, IOMMU_WRITE))
46043 - return __FAIL(ops, i);
46044 + if (ops->map(iop, iova, iova, size, IOMMU_WRITE))
46045 + return __FAIL(iop, i);
46046
46047 - if (ops->iova_to_phys(ops, iova + 42) != (iova + 42))
46048 - return __FAIL(ops, i);
46049 + if (ops->iova_to_phys(iop, iova + 42) != (iova + 42))
46050 + return __FAIL(iop, i);
46051
46052 iova += SZ_1G;
46053 j++;
46054 j = find_next_bit(&cfg->pgsize_bitmap, BITS_PER_LONG, j);
46055 }
46056
46057 - free_io_pgtable_ops(ops);
46058 + free_io_pgtable(iop);
46059 }
46060
46061 selftest_running = false;
46062 diff --git a/drivers/iommu/io-pgtable.c b/drivers/iommu/io-pgtable.c
46063 index 6436fe2..088c965 100644
46064 --- a/drivers/iommu/io-pgtable.c
46065 +++ b/drivers/iommu/io-pgtable.c
46066 @@ -40,7 +40,7 @@ io_pgtable_init_table[IO_PGTABLE_NUM_FMTS] =
46067 #endif
46068 };
46069
46070 -struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt,
46071 +struct io_pgtable *alloc_io_pgtable(enum io_pgtable_fmt fmt,
46072 struct io_pgtable_cfg *cfg,
46073 void *cookie)
46074 {
46075 @@ -62,21 +62,18 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt,
46076 iop->cookie = cookie;
46077 iop->cfg = *cfg;
46078
46079 - return &iop->ops;
46080 + return iop;
46081 }
46082
46083 /*
46084 * It is the IOMMU driver's responsibility to ensure that the page table
46085 * is no longer accessible to the walker by this point.
46086 */
46087 -void free_io_pgtable_ops(struct io_pgtable_ops *ops)
46088 +void free_io_pgtable(struct io_pgtable *iop)
46089 {
46090 - struct io_pgtable *iop;
46091 -
46092 - if (!ops)
46093 + if (!iop)
46094 return;
46095
46096 - iop = container_of(ops, struct io_pgtable, ops);
46097 iop->cfg.tlb->tlb_flush_all(iop->cookie);
46098 io_pgtable_init_table[iop->fmt]->free(iop);
46099 }
46100 diff --git a/drivers/iommu/io-pgtable.h b/drivers/iommu/io-pgtable.h
46101 index 10e32f6..0b276c8 100644
46102 --- a/drivers/iommu/io-pgtable.h
46103 +++ b/drivers/iommu/io-pgtable.h
46104 @@ -75,17 +75,18 @@ struct io_pgtable_cfg {
46105 * These functions map directly onto the iommu_ops member functions with
46106 * the same names.
46107 */
46108 +struct io_pgtable;
46109 struct io_pgtable_ops {
46110 - int (*map)(struct io_pgtable_ops *ops, unsigned long iova,
46111 + int (*map)(struct io_pgtable *iop, unsigned long iova,
46112 phys_addr_t paddr, size_t size, int prot);
46113 - int (*unmap)(struct io_pgtable_ops *ops, unsigned long iova,
46114 + int (*unmap)(struct io_pgtable *iop, unsigned long iova,
46115 size_t size);
46116 - phys_addr_t (*iova_to_phys)(struct io_pgtable_ops *ops,
46117 + phys_addr_t (*iova_to_phys)(struct io_pgtable *iop,
46118 unsigned long iova);
46119 };
46120
46121 /**
46122 - * alloc_io_pgtable_ops() - Allocate a page table allocator for use by an IOMMU.
46123 + * alloc_io_pgtable() - Allocate a page table allocator for use by an IOMMU.
46124 *
46125 * @fmt: The page table format.
46126 * @cfg: The page table configuration. This will be modified to represent
46127 @@ -94,9 +95,9 @@ struct io_pgtable_ops {
46128 * @cookie: An opaque token provided by the IOMMU driver and passed back to
46129 * the callback routines in cfg->tlb.
46130 */
46131 -struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt,
46132 - struct io_pgtable_cfg *cfg,
46133 - void *cookie);
46134 +struct io_pgtable *alloc_io_pgtable(enum io_pgtable_fmt fmt,
46135 + struct io_pgtable_cfg *cfg,
46136 + void *cookie);
46137
46138 /**
46139 * free_io_pgtable_ops() - Free an io_pgtable_ops structure. The caller
46140 @@ -105,7 +106,7 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt,
46141 *
46142 * @ops: The ops returned from alloc_io_pgtable_ops.
46143 */
46144 -void free_io_pgtable_ops(struct io_pgtable_ops *ops);
46145 +void free_io_pgtable(struct io_pgtable *iop);
46146
46147
46148 /*
46149 @@ -125,7 +126,7 @@ struct io_pgtable {
46150 enum io_pgtable_fmt fmt;
46151 void *cookie;
46152 struct io_pgtable_cfg cfg;
46153 - struct io_pgtable_ops ops;
46154 + const struct io_pgtable_ops *ops;
46155 };
46156
46157 /**
46158 diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
46159 index f286090..bac3e7e 100644
46160 --- a/drivers/iommu/iommu.c
46161 +++ b/drivers/iommu/iommu.c
46162 @@ -934,7 +934,7 @@ static int iommu_bus_notifier(struct notifier_block *nb,
46163 static int iommu_bus_init(struct bus_type *bus, const struct iommu_ops *ops)
46164 {
46165 int err;
46166 - struct notifier_block *nb;
46167 + notifier_block_no_const *nb;
46168 struct iommu_callback_data cb = {
46169 .ops = ops,
46170 };
46171 diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
46172 index 1a67c53..23181d8 100644
46173 --- a/drivers/iommu/ipmmu-vmsa.c
46174 +++ b/drivers/iommu/ipmmu-vmsa.c
46175 @@ -41,7 +41,7 @@ struct ipmmu_vmsa_domain {
46176 struct iommu_domain io_domain;
46177
46178 struct io_pgtable_cfg cfg;
46179 - struct io_pgtable_ops *iop;
46180 + struct io_pgtable *iop;
46181
46182 unsigned int context_id;
46183 spinlock_t lock; /* Protects mappings */
46184 @@ -328,8 +328,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)
46185 domain->cfg.oas = 40;
46186 domain->cfg.tlb = &ipmmu_gather_ops;
46187
46188 - domain->iop = alloc_io_pgtable_ops(ARM_32_LPAE_S1, &domain->cfg,
46189 - domain);
46190 + domain->iop = alloc_io_pgtable(ARM_32_LPAE_S1, &domain->cfg, domain);
46191 if (!domain->iop)
46192 return -EINVAL;
46193
46194 @@ -487,7 +486,7 @@ static void ipmmu_domain_free(struct iommu_domain *io_domain)
46195 * been detached.
46196 */
46197 ipmmu_domain_destroy_context(domain);
46198 - free_io_pgtable_ops(domain->iop);
46199 + free_io_pgtable(domain->iop);
46200 kfree(domain);
46201 }
46202
46203 @@ -556,7 +555,7 @@ static int ipmmu_map(struct iommu_domain *io_domain, unsigned long iova,
46204 if (!domain)
46205 return -ENODEV;
46206
46207 - return domain->iop->map(domain->iop, iova, paddr, size, prot);
46208 + return domain->iop->ops->map(domain->iop, iova, paddr, size, prot);
46209 }
46210
46211 static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova,
46212 @@ -564,7 +563,7 @@ static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova,
46213 {
46214 struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain);
46215
46216 - return domain->iop->unmap(domain->iop, iova, size);
46217 + return domain->iop->ops->unmap(domain->iop, iova, size);
46218 }
46219
46220 static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain,
46221 @@ -574,7 +573,7 @@ static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain,
46222
46223 /* TODO: Is locking needed ? */
46224
46225 - return domain->iop->iova_to_phys(domain->iop, iova);
46226 + return domain->iop->ops->iova_to_phys(domain->iop, iova);
46227 }
46228
46229 static int ipmmu_find_utlbs(struct ipmmu_vmsa_device *mmu, struct device *dev,
46230 diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
46231 index 2d99930..b8b358c 100644
46232 --- a/drivers/iommu/irq_remapping.c
46233 +++ b/drivers/iommu/irq_remapping.c
46234 @@ -149,7 +149,7 @@ int __init irq_remap_enable_fault_handling(void)
46235 void panic_if_irq_remap(const char *msg)
46236 {
46237 if (irq_remapping_enabled)
46238 - panic(msg);
46239 + panic("%s", msg);
46240 }
46241
46242 void ir_ack_apic_edge(struct irq_data *data)
46243 diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
46244 index 4dd8826..1f33400 100644
46245 --- a/drivers/irqchip/irq-gic.c
46246 +++ b/drivers/irqchip/irq-gic.c
46247 @@ -313,7 +313,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
46248 chained_irq_exit(chip, desc);
46249 }
46250
46251 -static struct irq_chip gic_chip = {
46252 +static irq_chip_no_const gic_chip __read_only = {
46253 .name = "GIC",
46254 .irq_mask = gic_mask_irq,
46255 .irq_unmask = gic_unmask_irq,
46256 diff --git a/drivers/irqchip/irq-renesas-intc-irqpin.c b/drivers/irqchip/irq-renesas-intc-irqpin.c
46257 index 0670ab4..1094651 100644
46258 --- a/drivers/irqchip/irq-renesas-intc-irqpin.c
46259 +++ b/drivers/irqchip/irq-renesas-intc-irqpin.c
46260 @@ -373,7 +373,7 @@ static int intc_irqpin_probe(struct platform_device *pdev)
46261 struct intc_irqpin_iomem *i;
46262 struct resource *io[INTC_IRQPIN_REG_NR];
46263 struct resource *irq;
46264 - struct irq_chip *irq_chip;
46265 + irq_chip_no_const *irq_chip;
46266 void (*enable_fn)(struct irq_data *d);
46267 void (*disable_fn)(struct irq_data *d);
46268 const char *name = dev_name(dev);
46269 diff --git a/drivers/irqchip/irq-renesas-irqc.c b/drivers/irqchip/irq-renesas-irqc.c
46270 index 778bd07..0397152 100644
46271 --- a/drivers/irqchip/irq-renesas-irqc.c
46272 +++ b/drivers/irqchip/irq-renesas-irqc.c
46273 @@ -176,7 +176,7 @@ static int irqc_probe(struct platform_device *pdev)
46274 struct irqc_priv *p;
46275 struct resource *io;
46276 struct resource *irq;
46277 - struct irq_chip *irq_chip;
46278 + irq_chip_no_const *irq_chip;
46279 const char *name = dev_name(&pdev->dev);
46280 int ret;
46281 int k;
46282 diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
46283 index 6a2df32..dc962f1 100644
46284 --- a/drivers/isdn/capi/capi.c
46285 +++ b/drivers/isdn/capi/capi.c
46286 @@ -81,8 +81,8 @@ struct capiminor {
46287
46288 struct capi20_appl *ap;
46289 u32 ncci;
46290 - atomic_t datahandle;
46291 - atomic_t msgid;
46292 + atomic_unchecked_t datahandle;
46293 + atomic_unchecked_t msgid;
46294
46295 struct tty_port port;
46296 int ttyinstop;
46297 @@ -391,7 +391,7 @@ gen_data_b3_resp_for(struct capiminor *mp, struct sk_buff *skb)
46298 capimsg_setu16(s, 2, mp->ap->applid);
46299 capimsg_setu8 (s, 4, CAPI_DATA_B3);
46300 capimsg_setu8 (s, 5, CAPI_RESP);
46301 - capimsg_setu16(s, 6, atomic_inc_return(&mp->msgid));
46302 + capimsg_setu16(s, 6, atomic_inc_return_unchecked(&mp->msgid));
46303 capimsg_setu32(s, 8, mp->ncci);
46304 capimsg_setu16(s, 12, datahandle);
46305 }
46306 @@ -512,14 +512,14 @@ static void handle_minor_send(struct capiminor *mp)
46307 mp->outbytes -= len;
46308 spin_unlock_bh(&mp->outlock);
46309
46310 - datahandle = atomic_inc_return(&mp->datahandle);
46311 + datahandle = atomic_inc_return_unchecked(&mp->datahandle);
46312 skb_push(skb, CAPI_DATA_B3_REQ_LEN);
46313 memset(skb->data, 0, CAPI_DATA_B3_REQ_LEN);
46314 capimsg_setu16(skb->data, 0, CAPI_DATA_B3_REQ_LEN);
46315 capimsg_setu16(skb->data, 2, mp->ap->applid);
46316 capimsg_setu8 (skb->data, 4, CAPI_DATA_B3);
46317 capimsg_setu8 (skb->data, 5, CAPI_REQ);
46318 - capimsg_setu16(skb->data, 6, atomic_inc_return(&mp->msgid));
46319 + capimsg_setu16(skb->data, 6, atomic_inc_return_unchecked(&mp->msgid));
46320 capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */
46321 capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */
46322 capimsg_setu16(skb->data, 16, len); /* Data length */
46323 diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
46324 index aecec6d..11e13c5 100644
46325 --- a/drivers/isdn/gigaset/bas-gigaset.c
46326 +++ b/drivers/isdn/gigaset/bas-gigaset.c
46327 @@ -2565,22 +2565,22 @@ static int gigaset_post_reset(struct usb_interface *intf)
46328
46329
46330 static const struct gigaset_ops gigops = {
46331 - gigaset_write_cmd,
46332 - gigaset_write_room,
46333 - gigaset_chars_in_buffer,
46334 - gigaset_brkchars,
46335 - gigaset_init_bchannel,
46336 - gigaset_close_bchannel,
46337 - gigaset_initbcshw,
46338 - gigaset_freebcshw,
46339 - gigaset_reinitbcshw,
46340 - gigaset_initcshw,
46341 - gigaset_freecshw,
46342 - gigaset_set_modem_ctrl,
46343 - gigaset_baud_rate,
46344 - gigaset_set_line_ctrl,
46345 - gigaset_isoc_send_skb,
46346 - gigaset_isoc_input,
46347 + .write_cmd = gigaset_write_cmd,
46348 + .write_room = gigaset_write_room,
46349 + .chars_in_buffer = gigaset_chars_in_buffer,
46350 + .brkchars = gigaset_brkchars,
46351 + .init_bchannel = gigaset_init_bchannel,
46352 + .close_bchannel = gigaset_close_bchannel,
46353 + .initbcshw = gigaset_initbcshw,
46354 + .freebcshw = gigaset_freebcshw,
46355 + .reinitbcshw = gigaset_reinitbcshw,
46356 + .initcshw = gigaset_initcshw,
46357 + .freecshw = gigaset_freecshw,
46358 + .set_modem_ctrl = gigaset_set_modem_ctrl,
46359 + .baud_rate = gigaset_baud_rate,
46360 + .set_line_ctrl = gigaset_set_line_ctrl,
46361 + .send_skb = gigaset_isoc_send_skb,
46362 + .handle_input = gigaset_isoc_input,
46363 };
46364
46365 /* bas_gigaset_init
46366 diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
46367 index 600c79b..3752bab 100644
46368 --- a/drivers/isdn/gigaset/interface.c
46369 +++ b/drivers/isdn/gigaset/interface.c
46370 @@ -130,9 +130,9 @@ static int if_open(struct tty_struct *tty, struct file *filp)
46371 }
46372 tty->driver_data = cs;
46373
46374 - ++cs->port.count;
46375 + atomic_inc(&cs->port.count);
46376
46377 - if (cs->port.count == 1) {
46378 + if (atomic_read(&cs->port.count) == 1) {
46379 tty_port_tty_set(&cs->port, tty);
46380 cs->port.low_latency = 1;
46381 }
46382 @@ -156,9 +156,9 @@ static void if_close(struct tty_struct *tty, struct file *filp)
46383
46384 if (!cs->connected)
46385 gig_dbg(DEBUG_IF, "not connected"); /* nothing to do */
46386 - else if (!cs->port.count)
46387 + else if (!atomic_read(&cs->port.count))
46388 dev_warn(cs->dev, "%s: device not opened\n", __func__);
46389 - else if (!--cs->port.count)
46390 + else if (!atomic_dec_return(&cs->port.count))
46391 tty_port_tty_set(&cs->port, NULL);
46392
46393 mutex_unlock(&cs->mutex);
46394 diff --git a/drivers/isdn/gigaset/ser-gigaset.c b/drivers/isdn/gigaset/ser-gigaset.c
46395 index 375be50..675293c 100644
46396 --- a/drivers/isdn/gigaset/ser-gigaset.c
46397 +++ b/drivers/isdn/gigaset/ser-gigaset.c
46398 @@ -453,22 +453,22 @@ static int gigaset_set_line_ctrl(struct cardstate *cs, unsigned cflag)
46399 }
46400
46401 static const struct gigaset_ops ops = {
46402 - gigaset_write_cmd,
46403 - gigaset_write_room,
46404 - gigaset_chars_in_buffer,
46405 - gigaset_brkchars,
46406 - gigaset_init_bchannel,
46407 - gigaset_close_bchannel,
46408 - gigaset_initbcshw,
46409 - gigaset_freebcshw,
46410 - gigaset_reinitbcshw,
46411 - gigaset_initcshw,
46412 - gigaset_freecshw,
46413 - gigaset_set_modem_ctrl,
46414 - gigaset_baud_rate,
46415 - gigaset_set_line_ctrl,
46416 - gigaset_m10x_send_skb, /* asyncdata.c */
46417 - gigaset_m10x_input, /* asyncdata.c */
46418 + .write_cmd = gigaset_write_cmd,
46419 + .write_room = gigaset_write_room,
46420 + .chars_in_buffer = gigaset_chars_in_buffer,
46421 + .brkchars = gigaset_brkchars,
46422 + .init_bchannel = gigaset_init_bchannel,
46423 + .close_bchannel = gigaset_close_bchannel,
46424 + .initbcshw = gigaset_initbcshw,
46425 + .freebcshw = gigaset_freebcshw,
46426 + .reinitbcshw = gigaset_reinitbcshw,
46427 + .initcshw = gigaset_initcshw,
46428 + .freecshw = gigaset_freecshw,
46429 + .set_modem_ctrl = gigaset_set_modem_ctrl,
46430 + .baud_rate = gigaset_baud_rate,
46431 + .set_line_ctrl = gigaset_set_line_ctrl,
46432 + .send_skb = gigaset_m10x_send_skb, /* asyncdata.c */
46433 + .handle_input = gigaset_m10x_input, /* asyncdata.c */
46434 };
46435
46436
46437 diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
46438 index 5f306e2..5342f88 100644
46439 --- a/drivers/isdn/gigaset/usb-gigaset.c
46440 +++ b/drivers/isdn/gigaset/usb-gigaset.c
46441 @@ -543,7 +543,7 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
46442 gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf);
46443 memcpy(cs->hw.usb->bchars, buf, 6);
46444 return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
46445 - 0, 0, &buf, 6, 2000);
46446 + 0, 0, buf, 6, 2000);
46447 }
46448
46449 static void gigaset_freebcshw(struct bc_state *bcs)
46450 @@ -862,22 +862,22 @@ static int gigaset_pre_reset(struct usb_interface *intf)
46451 }
46452
46453 static const struct gigaset_ops ops = {
46454 - gigaset_write_cmd,
46455 - gigaset_write_room,
46456 - gigaset_chars_in_buffer,
46457 - gigaset_brkchars,
46458 - gigaset_init_bchannel,
46459 - gigaset_close_bchannel,
46460 - gigaset_initbcshw,
46461 - gigaset_freebcshw,
46462 - gigaset_reinitbcshw,
46463 - gigaset_initcshw,
46464 - gigaset_freecshw,
46465 - gigaset_set_modem_ctrl,
46466 - gigaset_baud_rate,
46467 - gigaset_set_line_ctrl,
46468 - gigaset_m10x_send_skb,
46469 - gigaset_m10x_input,
46470 + .write_cmd = gigaset_write_cmd,
46471 + .write_room = gigaset_write_room,
46472 + .chars_in_buffer = gigaset_chars_in_buffer,
46473 + .brkchars = gigaset_brkchars,
46474 + .init_bchannel = gigaset_init_bchannel,
46475 + .close_bchannel = gigaset_close_bchannel,
46476 + .initbcshw = gigaset_initbcshw,
46477 + .freebcshw = gigaset_freebcshw,
46478 + .reinitbcshw = gigaset_reinitbcshw,
46479 + .initcshw = gigaset_initcshw,
46480 + .freecshw = gigaset_freecshw,
46481 + .set_modem_ctrl = gigaset_set_modem_ctrl,
46482 + .baud_rate = gigaset_baud_rate,
46483 + .set_line_ctrl = gigaset_set_line_ctrl,
46484 + .send_skb = gigaset_m10x_send_skb,
46485 + .handle_input = gigaset_m10x_input,
46486 };
46487
46488 /*
46489 diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
46490 index 4d9b195..455075c 100644
46491 --- a/drivers/isdn/hardware/avm/b1.c
46492 +++ b/drivers/isdn/hardware/avm/b1.c
46493 @@ -176,7 +176,7 @@ int b1_load_t4file(avmcard *card, capiloaddatapart *t4file)
46494 }
46495 if (left) {
46496 if (t4file->user) {
46497 - if (copy_from_user(buf, dp, left))
46498 + if (left > sizeof buf || copy_from_user(buf, dp, left))
46499 return -EFAULT;
46500 } else {
46501 memcpy(buf, dp, left);
46502 @@ -224,7 +224,7 @@ int b1_load_config(avmcard *card, capiloaddatapart *config)
46503 }
46504 if (left) {
46505 if (config->user) {
46506 - if (copy_from_user(buf, dp, left))
46507 + if (left > sizeof buf || copy_from_user(buf, dp, left))
46508 return -EFAULT;
46509 } else {
46510 memcpy(buf, dp, left);
46511 diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
46512 index 9b856e1..fa03c92 100644
46513 --- a/drivers/isdn/i4l/isdn_common.c
46514 +++ b/drivers/isdn/i4l/isdn_common.c
46515 @@ -1654,6 +1654,8 @@ isdn_ioctl(struct file *file, uint cmd, ulong arg)
46516 } else
46517 return -EINVAL;
46518 case IIOCDBGVAR:
46519 + if (!capable(CAP_SYS_RAWIO))
46520 + return -EPERM;
46521 if (arg) {
46522 if (copy_to_user(argp, &dev, sizeof(ulong)))
46523 return -EFAULT;
46524 diff --git a/drivers/isdn/i4l/isdn_concap.c b/drivers/isdn/i4l/isdn_concap.c
46525 index 91d5730..336523e 100644
46526 --- a/drivers/isdn/i4l/isdn_concap.c
46527 +++ b/drivers/isdn/i4l/isdn_concap.c
46528 @@ -80,9 +80,9 @@ static int isdn_concap_dl_disconn_req(struct concap_proto *concap)
46529 }
46530
46531 struct concap_device_ops isdn_concap_reliable_dl_dops = {
46532 - &isdn_concap_dl_data_req,
46533 - &isdn_concap_dl_connect_req,
46534 - &isdn_concap_dl_disconn_req
46535 + .data_req = &isdn_concap_dl_data_req,
46536 + .connect_req = &isdn_concap_dl_connect_req,
46537 + .disconn_req = &isdn_concap_dl_disconn_req
46538 };
46539
46540 /* The following should better go into a dedicated source file such that
46541 diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
46542 index bc91261..2ef7e36 100644
46543 --- a/drivers/isdn/i4l/isdn_tty.c
46544 +++ b/drivers/isdn/i4l/isdn_tty.c
46545 @@ -1503,9 +1503,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp)
46546
46547 #ifdef ISDN_DEBUG_MODEM_OPEN
46548 printk(KERN_DEBUG "isdn_tty_open %s, count = %d\n", tty->name,
46549 - port->count);
46550 + atomic_read(&port->count));
46551 #endif
46552 - port->count++;
46553 + atomic_inc(&port->count);
46554 port->tty = tty;
46555 /*
46556 * Start up serial port
46557 @@ -1549,7 +1549,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
46558 #endif
46559 return;
46560 }
46561 - if ((tty->count == 1) && (port->count != 1)) {
46562 + if ((tty->count == 1) && (atomic_read(&port->count) != 1)) {
46563 /*
46564 * Uh, oh. tty->count is 1, which means that the tty
46565 * structure will be freed. Info->count should always
46566 @@ -1558,15 +1558,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
46567 * serial port won't be shutdown.
46568 */
46569 printk(KERN_ERR "isdn_tty_close: bad port count; tty->count is 1, "
46570 - "info->count is %d\n", port->count);
46571 - port->count = 1;
46572 + "info->count is %d\n", atomic_read(&port->count));
46573 + atomic_set(&port->count, 1);
46574 }
46575 - if (--port->count < 0) {
46576 + if (atomic_dec_return(&port->count) < 0) {
46577 printk(KERN_ERR "isdn_tty_close: bad port count for ttyi%d: %d\n",
46578 - info->line, port->count);
46579 - port->count = 0;
46580 + info->line, atomic_read(&port->count));
46581 + atomic_set(&port->count, 0);
46582 }
46583 - if (port->count) {
46584 + if (atomic_read(&port->count)) {
46585 #ifdef ISDN_DEBUG_MODEM_OPEN
46586 printk(KERN_DEBUG "isdn_tty_close after info->count != 0\n");
46587 #endif
46588 @@ -1620,7 +1620,7 @@ isdn_tty_hangup(struct tty_struct *tty)
46589 if (isdn_tty_paranoia_check(info, tty->name, "isdn_tty_hangup"))
46590 return;
46591 isdn_tty_shutdown(info);
46592 - port->count = 0;
46593 + atomic_set(&port->count, 0);
46594 port->flags &= ~ASYNC_NORMAL_ACTIVE;
46595 port->tty = NULL;
46596 wake_up_interruptible(&port->open_wait);
46597 @@ -1965,7 +1965,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup)
46598 for (i = 0; i < ISDN_MAX_CHANNELS; i++) {
46599 modem_info *info = &dev->mdm.info[i];
46600
46601 - if (info->port.count == 0)
46602 + if (atomic_read(&info->port.count) == 0)
46603 continue;
46604 if ((info->emu.mdmreg[REG_SI1] & si2bit[si1]) && /* SI1 is matching */
46605 (info->emu.mdmreg[REG_SI2] == si2)) { /* SI2 is matching */
46606 diff --git a/drivers/isdn/i4l/isdn_x25iface.c b/drivers/isdn/i4l/isdn_x25iface.c
46607 index e2d4e58..40cd045 100644
46608 --- a/drivers/isdn/i4l/isdn_x25iface.c
46609 +++ b/drivers/isdn/i4l/isdn_x25iface.c
46610 @@ -53,14 +53,14 @@ static int isdn_x25iface_disconn_ind(struct concap_proto *);
46611
46612
46613 static struct concap_proto_ops ix25_pops = {
46614 - &isdn_x25iface_proto_new,
46615 - &isdn_x25iface_proto_del,
46616 - &isdn_x25iface_proto_restart,
46617 - &isdn_x25iface_proto_close,
46618 - &isdn_x25iface_xmit,
46619 - &isdn_x25iface_receive,
46620 - &isdn_x25iface_connect_ind,
46621 - &isdn_x25iface_disconn_ind
46622 + .proto_new = &isdn_x25iface_proto_new,
46623 + .proto_del = &isdn_x25iface_proto_del,
46624 + .restart = &isdn_x25iface_proto_restart,
46625 + .close = &isdn_x25iface_proto_close,
46626 + .encap_and_xmit = &isdn_x25iface_xmit,
46627 + .data_ind = &isdn_x25iface_receive,
46628 + .connect_ind = &isdn_x25iface_connect_ind,
46629 + .disconn_ind = &isdn_x25iface_disconn_ind
46630 };
46631
46632 /* error message helper function */
46633 diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c
46634 index 358a574..b4987ea 100644
46635 --- a/drivers/isdn/icn/icn.c
46636 +++ b/drivers/isdn/icn/icn.c
46637 @@ -1045,7 +1045,7 @@ icn_writecmd(const u_char *buf, int len, int user, icn_card *card)
46638 if (count > len)
46639 count = len;
46640 if (user) {
46641 - if (copy_from_user(msg, buf, count))
46642 + if (count > sizeof msg || copy_from_user(msg, buf, count))
46643 return -EFAULT;
46644 } else
46645 memcpy(msg, buf, count);
46646 diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c
46647 index 52c4382..09e0c7c 100644
46648 --- a/drivers/isdn/mISDN/dsp_cmx.c
46649 +++ b/drivers/isdn/mISDN/dsp_cmx.c
46650 @@ -1625,7 +1625,7 @@ unsigned long dsp_spl_jiffies; /* calculate the next time to fire */
46651 static u16 dsp_count; /* last sample count */
46652 static int dsp_count_valid; /* if we have last sample count */
46653
46654 -void
46655 +void __intentional_overflow(-1)
46656 dsp_cmx_send(void *arg)
46657 {
46658 struct dsp_conf *conf;
46659 diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
46660 index 312ffd3..9263d05 100644
46661 --- a/drivers/lguest/core.c
46662 +++ b/drivers/lguest/core.c
46663 @@ -96,9 +96,17 @@ static __init int map_switcher(void)
46664 * The end address needs +1 because __get_vm_area allocates an
46665 * extra guard page, so we need space for that.
46666 */
46667 +
46668 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
46669 + switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE,
46670 + VM_ALLOC | VM_KERNEXEC, switcher_addr, switcher_addr
46671 + + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE);
46672 +#else
46673 switcher_vma = __get_vm_area(TOTAL_SWITCHER_PAGES * PAGE_SIZE,
46674 VM_ALLOC, switcher_addr, switcher_addr
46675 + (TOTAL_SWITCHER_PAGES+1) * PAGE_SIZE);
46676 +#endif
46677 +
46678 if (!switcher_vma) {
46679 err = -ENOMEM;
46680 printk("lguest: could not map switcher pages high\n");
46681 @@ -121,7 +129,7 @@ static __init int map_switcher(void)
46682 * Now the Switcher is mapped at the right address, we can't fail!
46683 * Copy in the compiled-in Switcher code (from x86/switcher_32.S).
46684 */
46685 - memcpy(switcher_vma->addr, start_switcher_text,
46686 + memcpy(switcher_vma->addr, ktla_ktva(start_switcher_text),
46687 end_switcher_text - start_switcher_text);
46688
46689 printk(KERN_INFO "lguest: mapped switcher at %p\n",
46690 diff --git a/drivers/lguest/page_tables.c b/drivers/lguest/page_tables.c
46691 index e3abebc9..6a35328 100644
46692 --- a/drivers/lguest/page_tables.c
46693 +++ b/drivers/lguest/page_tables.c
46694 @@ -585,7 +585,7 @@ void pin_page(struct lg_cpu *cpu, unsigned long vaddr)
46695 /*:*/
46696
46697 #ifdef CONFIG_X86_PAE
46698 -static void release_pmd(pmd_t *spmd)
46699 +static void __intentional_overflow(-1) release_pmd(pmd_t *spmd)
46700 {
46701 /* If the entry's not present, there's nothing to release. */
46702 if (pmd_flags(*spmd) & _PAGE_PRESENT) {
46703 diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
46704 index 6a4cd77..c9e2d9f 100644
46705 --- a/drivers/lguest/x86/core.c
46706 +++ b/drivers/lguest/x86/core.c
46707 @@ -60,7 +60,7 @@ static struct {
46708 /* Offset from where switcher.S was compiled to where we've copied it */
46709 static unsigned long switcher_offset(void)
46710 {
46711 - return switcher_addr - (unsigned long)start_switcher_text;
46712 + return switcher_addr - ktla_ktva((unsigned long)start_switcher_text);
46713 }
46714
46715 /* This cpu's struct lguest_pages (after the Switcher text page) */
46716 @@ -100,7 +100,13 @@ static void copy_in_guest_info(struct lg_cpu *cpu, struct lguest_pages *pages)
46717 * These copies are pretty cheap, so we do them unconditionally: */
46718 /* Save the current Host top-level page directory.
46719 */
46720 +
46721 +#ifdef CONFIG_PAX_PER_CPU_PGD
46722 + pages->state.host_cr3 = read_cr3();
46723 +#else
46724 pages->state.host_cr3 = __pa(current->mm->pgd);
46725 +#endif
46726 +
46727 /*
46728 * Set up the Guest's page tables to see this CPU's pages (and no
46729 * other CPU's pages).
46730 @@ -494,7 +500,7 @@ void __init lguest_arch_host_init(void)
46731 * compiled-in switcher code and the high-mapped copy we just made.
46732 */
46733 for (i = 0; i < IDT_ENTRIES; i++)
46734 - default_idt_entries[i] += switcher_offset();
46735 + default_idt_entries[i] = ktla_ktva(default_idt_entries[i]) + switcher_offset();
46736
46737 /*
46738 * Set up the Switcher's per-cpu areas.
46739 @@ -577,7 +583,7 @@ void __init lguest_arch_host_init(void)
46740 * it will be undisturbed when we switch. To change %cs and jump we
46741 * need this structure to feed to Intel's "lcall" instruction.
46742 */
46743 - lguest_entry.offset = (long)switch_to_guest + switcher_offset();
46744 + lguest_entry.offset = ktla_ktva((unsigned long)switch_to_guest) + switcher_offset();
46745 lguest_entry.segment = LGUEST_CS;
46746
46747 /*
46748 diff --git a/drivers/lguest/x86/switcher_32.S b/drivers/lguest/x86/switcher_32.S
46749 index 40634b0..4f5855e 100644
46750 --- a/drivers/lguest/x86/switcher_32.S
46751 +++ b/drivers/lguest/x86/switcher_32.S
46752 @@ -87,6 +87,7 @@
46753 #include <asm/page.h>
46754 #include <asm/segment.h>
46755 #include <asm/lguest.h>
46756 +#include <asm/processor-flags.h>
46757
46758 // We mark the start of the code to copy
46759 // It's placed in .text tho it's never run here
46760 @@ -149,6 +150,13 @@ ENTRY(switch_to_guest)
46761 // Changes type when we load it: damn Intel!
46762 // For after we switch over our page tables
46763 // That entry will be read-only: we'd crash.
46764 +
46765 +#ifdef CONFIG_PAX_KERNEXEC
46766 + mov %cr0, %edx
46767 + xor $X86_CR0_WP, %edx
46768 + mov %edx, %cr0
46769 +#endif
46770 +
46771 movl $(GDT_ENTRY_TSS*8), %edx
46772 ltr %dx
46773
46774 @@ -157,9 +165,15 @@ ENTRY(switch_to_guest)
46775 // Let's clear it again for our return.
46776 // The GDT descriptor of the Host
46777 // Points to the table after two "size" bytes
46778 - movl (LGUEST_PAGES_host_gdt_desc+2)(%eax), %edx
46779 + movl (LGUEST_PAGES_host_gdt_desc+2)(%eax), %eax
46780 // Clear "used" from type field (byte 5, bit 2)
46781 - andb $0xFD, (GDT_ENTRY_TSS*8 + 5)(%edx)
46782 + andb $0xFD, (GDT_ENTRY_TSS*8 + 5)(%eax)
46783 +
46784 +#ifdef CONFIG_PAX_KERNEXEC
46785 + mov %cr0, %eax
46786 + xor $X86_CR0_WP, %eax
46787 + mov %eax, %cr0
46788 +#endif
46789
46790 // Once our page table's switched, the Guest is live!
46791 // The Host fades as we run this final step.
46792 @@ -295,13 +309,12 @@ deliver_to_host:
46793 // I consulted gcc, and it gave
46794 // These instructions, which I gladly credit:
46795 leal (%edx,%ebx,8), %eax
46796 - movzwl (%eax),%edx
46797 - movl 4(%eax), %eax
46798 - xorw %ax, %ax
46799 - orl %eax, %edx
46800 + movl 4(%eax), %edx
46801 + movw (%eax), %dx
46802 // Now the address of the handler's in %edx
46803 // We call it now: its "iret" drops us home.
46804 - jmp *%edx
46805 + ljmp $__KERNEL_CS, $1f
46806 +1: jmp *%edx
46807
46808 // Every interrupt can come to us here
46809 // But we must truly tell each apart.
46810 diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h
46811 index 79a6d63..47acff6 100644
46812 --- a/drivers/md/bcache/closure.h
46813 +++ b/drivers/md/bcache/closure.h
46814 @@ -238,7 +238,7 @@ static inline void closure_set_stopped(struct closure *cl)
46815 static inline void set_closure_fn(struct closure *cl, closure_fn *fn,
46816 struct workqueue_struct *wq)
46817 {
46818 - BUG_ON(object_is_on_stack(cl));
46819 + BUG_ON(object_starts_on_stack(cl));
46820 closure_set_ip(cl);
46821 cl->fn = fn;
46822 cl->wq = wq;
46823 diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
46824 index e51de52..c52ff17 100644
46825 --- a/drivers/md/bitmap.c
46826 +++ b/drivers/md/bitmap.c
46827 @@ -1933,7 +1933,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
46828 chunk_kb ? "KB" : "B");
46829 if (bitmap->storage.file) {
46830 seq_printf(seq, ", file: ");
46831 - seq_file_path(seq, bitmap->storage.file, " \t\n");
46832 + seq_file_path(seq, bitmap->storage.file, " \t\n\\");
46833 }
46834
46835 seq_printf(seq, "\n");
46836 diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
46837 index 720ceeb..030f1d4 100644
46838 --- a/drivers/md/dm-ioctl.c
46839 +++ b/drivers/md/dm-ioctl.c
46840 @@ -1773,7 +1773,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
46841 cmd == DM_LIST_VERSIONS_CMD)
46842 return 0;
46843
46844 - if ((cmd == DM_DEV_CREATE_CMD)) {
46845 + if (cmd == DM_DEV_CREATE_CMD) {
46846 if (!*param->name) {
46847 DMWARN("name not supplied when creating device");
46848 return -EINVAL;
46849 diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
46850 index d83696b..44f22f7 100644
46851 --- a/drivers/md/dm-raid1.c
46852 +++ b/drivers/md/dm-raid1.c
46853 @@ -42,7 +42,7 @@ enum dm_raid1_error {
46854
46855 struct mirror {
46856 struct mirror_set *ms;
46857 - atomic_t error_count;
46858 + atomic_unchecked_t error_count;
46859 unsigned long error_type;
46860 struct dm_dev *dev;
46861 sector_t offset;
46862 @@ -188,7 +188,7 @@ static struct mirror *get_valid_mirror(struct mirror_set *ms)
46863 struct mirror *m;
46864
46865 for (m = ms->mirror; m < ms->mirror + ms->nr_mirrors; m++)
46866 - if (!atomic_read(&m->error_count))
46867 + if (!atomic_read_unchecked(&m->error_count))
46868 return m;
46869
46870 return NULL;
46871 @@ -220,7 +220,7 @@ static void fail_mirror(struct mirror *m, enum dm_raid1_error error_type)
46872 * simple way to tell if a device has encountered
46873 * errors.
46874 */
46875 - atomic_inc(&m->error_count);
46876 + atomic_inc_unchecked(&m->error_count);
46877
46878 if (test_and_set_bit(error_type, &m->error_type))
46879 return;
46880 @@ -378,7 +378,7 @@ static void reset_ms_flags(struct mirror_set *ms)
46881
46882 ms->leg_failure = 0;
46883 for (m = 0; m < ms->nr_mirrors; m++) {
46884 - atomic_set(&(ms->mirror[m].error_count), 0);
46885 + atomic_set_unchecked(&(ms->mirror[m].error_count), 0);
46886 ms->mirror[m].error_type = 0;
46887 }
46888 }
46889 @@ -423,7 +423,7 @@ static struct mirror *choose_mirror(struct mirror_set *ms, sector_t sector)
46890 struct mirror *m = get_default_mirror(ms);
46891
46892 do {
46893 - if (likely(!atomic_read(&m->error_count)))
46894 + if (likely(!atomic_read_unchecked(&m->error_count)))
46895 return m;
46896
46897 if (m-- == ms->mirror)
46898 @@ -437,7 +437,7 @@ static int default_ok(struct mirror *m)
46899 {
46900 struct mirror *default_mirror = get_default_mirror(m->ms);
46901
46902 - return !atomic_read(&default_mirror->error_count);
46903 + return !atomic_read_unchecked(&default_mirror->error_count);
46904 }
46905
46906 static int mirror_available(struct mirror_set *ms, struct bio *bio)
46907 @@ -574,7 +574,7 @@ static void do_reads(struct mirror_set *ms, struct bio_list *reads)
46908 */
46909 if (likely(region_in_sync(ms, region, 1)))
46910 m = choose_mirror(ms, bio->bi_iter.bi_sector);
46911 - else if (m && atomic_read(&m->error_count))
46912 + else if (m && atomic_read_unchecked(&m->error_count))
46913 m = NULL;
46914
46915 if (likely(m))
46916 @@ -956,7 +956,7 @@ static int get_mirror(struct mirror_set *ms, struct dm_target *ti,
46917 }
46918
46919 ms->mirror[mirror].ms = ms;
46920 - atomic_set(&(ms->mirror[mirror].error_count), 0);
46921 + atomic_set_unchecked(&(ms->mirror[mirror].error_count), 0);
46922 ms->mirror[mirror].error_type = 0;
46923 ms->mirror[mirror].offset = offset;
46924
46925 @@ -1380,7 +1380,7 @@ static void mirror_resume(struct dm_target *ti)
46926 */
46927 static char device_status_char(struct mirror *m)
46928 {
46929 - if (!atomic_read(&(m->error_count)))
46930 + if (!atomic_read_unchecked(&(m->error_count)))
46931 return 'A';
46932
46933 return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' :
46934 diff --git a/drivers/md/dm-stats.c b/drivers/md/dm-stats.c
46935 index 8289804..12db118 100644
46936 --- a/drivers/md/dm-stats.c
46937 +++ b/drivers/md/dm-stats.c
46938 @@ -435,7 +435,7 @@ do_sync_free:
46939 synchronize_rcu_expedited();
46940 dm_stat_free(&s->rcu_head);
46941 } else {
46942 - ACCESS_ONCE(dm_stat_need_rcu_barrier) = 1;
46943 + ACCESS_ONCE_RW(dm_stat_need_rcu_barrier) = 1;
46944 call_rcu(&s->rcu_head, dm_stat_free);
46945 }
46946 return 0;
46947 @@ -648,8 +648,8 @@ void dm_stats_account_io(struct dm_stats *stats, unsigned long bi_rw,
46948 ((bi_rw & (REQ_WRITE | REQ_DISCARD)) ==
46949 (ACCESS_ONCE(last->last_rw) & (REQ_WRITE | REQ_DISCARD)))
46950 ));
46951 - ACCESS_ONCE(last->last_sector) = end_sector;
46952 - ACCESS_ONCE(last->last_rw) = bi_rw;
46953 + ACCESS_ONCE_RW(last->last_sector) = end_sector;
46954 + ACCESS_ONCE_RW(last->last_rw) = bi_rw;
46955 }
46956
46957 rcu_read_lock();
46958 diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
46959 index a672a15..dc85e99 100644
46960 --- a/drivers/md/dm-stripe.c
46961 +++ b/drivers/md/dm-stripe.c
46962 @@ -21,7 +21,7 @@ struct stripe {
46963 struct dm_dev *dev;
46964 sector_t physical_start;
46965
46966 - atomic_t error_count;
46967 + atomic_unchecked_t error_count;
46968 };
46969
46970 struct stripe_c {
46971 @@ -188,7 +188,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
46972 kfree(sc);
46973 return r;
46974 }
46975 - atomic_set(&(sc->stripe[i].error_count), 0);
46976 + atomic_set_unchecked(&(sc->stripe[i].error_count), 0);
46977 }
46978
46979 ti->private = sc;
46980 @@ -332,7 +332,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type,
46981 DMEMIT("%d ", sc->stripes);
46982 for (i = 0; i < sc->stripes; i++) {
46983 DMEMIT("%s ", sc->stripe[i].dev->name);
46984 - buffer[i] = atomic_read(&(sc->stripe[i].error_count)) ?
46985 + buffer[i] = atomic_read_unchecked(&(sc->stripe[i].error_count)) ?
46986 'D' : 'A';
46987 }
46988 buffer[i] = '\0';
46989 @@ -377,8 +377,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error)
46990 */
46991 for (i = 0; i < sc->stripes; i++)
46992 if (!strcmp(sc->stripe[i].dev->name, major_minor)) {
46993 - atomic_inc(&(sc->stripe[i].error_count));
46994 - if (atomic_read(&(sc->stripe[i].error_count)) <
46995 + atomic_inc_unchecked(&(sc->stripe[i].error_count));
46996 + if (atomic_read_unchecked(&(sc->stripe[i].error_count)) <
46997 DM_IO_ERROR_THRESHOLD)
46998 schedule_work(&sc->trigger_event);
46999 }
47000 diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
47001 index 16ba55a..31af906 100644
47002 --- a/drivers/md/dm-table.c
47003 +++ b/drivers/md/dm-table.c
47004 @@ -305,7 +305,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
47005 if (!dev_size)
47006 return 0;
47007
47008 - if ((start >= dev_size) || (start + len > dev_size)) {
47009 + if ((start >= dev_size) || (len > dev_size - start)) {
47010 DMWARN("%s: %s too small for target: "
47011 "start=%llu, len=%llu, dev_size=%llu",
47012 dm_device_name(ti->table->md), bdevname(bdev, b),
47013 diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
47014 index 6ba47cf..a870ba2 100644
47015 --- a/drivers/md/dm-thin-metadata.c
47016 +++ b/drivers/md/dm-thin-metadata.c
47017 @@ -403,7 +403,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd)
47018 {
47019 pmd->info.tm = pmd->tm;
47020 pmd->info.levels = 2;
47021 - pmd->info.value_type.context = pmd->data_sm;
47022 + pmd->info.value_type.context = (dm_space_map_no_const *)pmd->data_sm;
47023 pmd->info.value_type.size = sizeof(__le64);
47024 pmd->info.value_type.inc = data_block_inc;
47025 pmd->info.value_type.dec = data_block_dec;
47026 @@ -422,7 +422,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd)
47027
47028 pmd->bl_info.tm = pmd->tm;
47029 pmd->bl_info.levels = 1;
47030 - pmd->bl_info.value_type.context = pmd->data_sm;
47031 + pmd->bl_info.value_type.context = (dm_space_map_no_const *)pmd->data_sm;
47032 pmd->bl_info.value_type.size = sizeof(__le64);
47033 pmd->bl_info.value_type.inc = data_block_inc;
47034 pmd->bl_info.value_type.dec = data_block_dec;
47035 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
47036 index 0d7ab20..350d006 100644
47037 --- a/drivers/md/dm.c
47038 +++ b/drivers/md/dm.c
47039 @@ -194,9 +194,9 @@ struct mapped_device {
47040 /*
47041 * Event handling.
47042 */
47043 - atomic_t event_nr;
47044 + atomic_unchecked_t event_nr;
47045 wait_queue_head_t eventq;
47046 - atomic_t uevent_seq;
47047 + atomic_unchecked_t uevent_seq;
47048 struct list_head uevent_list;
47049 spinlock_t uevent_lock; /* Protect access to uevent_list */
47050
47051 @@ -2339,8 +2339,8 @@ static struct mapped_device *alloc_dev(int minor)
47052 spin_lock_init(&md->deferred_lock);
47053 atomic_set(&md->holders, 1);
47054 atomic_set(&md->open_count, 0);
47055 - atomic_set(&md->event_nr, 0);
47056 - atomic_set(&md->uevent_seq, 0);
47057 + atomic_set_unchecked(&md->event_nr, 0);
47058 + atomic_set_unchecked(&md->uevent_seq, 0);
47059 INIT_LIST_HEAD(&md->uevent_list);
47060 INIT_LIST_HEAD(&md->table_devices);
47061 spin_lock_init(&md->uevent_lock);
47062 @@ -2481,7 +2481,7 @@ static void event_callback(void *context)
47063
47064 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
47065
47066 - atomic_inc(&md->event_nr);
47067 + atomic_inc_unchecked(&md->event_nr);
47068 wake_up(&md->eventq);
47069 }
47070
47071 @@ -3481,18 +3481,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
47072
47073 uint32_t dm_next_uevent_seq(struct mapped_device *md)
47074 {
47075 - return atomic_add_return(1, &md->uevent_seq);
47076 + return atomic_add_return_unchecked(1, &md->uevent_seq);
47077 }
47078
47079 uint32_t dm_get_event_nr(struct mapped_device *md)
47080 {
47081 - return atomic_read(&md->event_nr);
47082 + return atomic_read_unchecked(&md->event_nr);
47083 }
47084
47085 int dm_wait_event(struct mapped_device *md, int event_nr)
47086 {
47087 return wait_event_interruptible(md->eventq,
47088 - (event_nr != atomic_read(&md->event_nr)));
47089 + (event_nr != atomic_read_unchecked(&md->event_nr)));
47090 }
47091
47092 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
47093 diff --git a/drivers/md/md.c b/drivers/md/md.c
47094 index e25f00f..12caa60 100644
47095 --- a/drivers/md/md.c
47096 +++ b/drivers/md/md.c
47097 @@ -197,10 +197,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
47098 * start build, activate spare
47099 */
47100 static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
47101 -static atomic_t md_event_count;
47102 +static atomic_unchecked_t md_event_count;
47103 void md_new_event(struct mddev *mddev)
47104 {
47105 - atomic_inc(&md_event_count);
47106 + atomic_inc_unchecked(&md_event_count);
47107 wake_up(&md_event_waiters);
47108 }
47109 EXPORT_SYMBOL_GPL(md_new_event);
47110 @@ -210,7 +210,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
47111 */
47112 static void md_new_event_inintr(struct mddev *mddev)
47113 {
47114 - atomic_inc(&md_event_count);
47115 + atomic_inc_unchecked(&md_event_count);
47116 wake_up(&md_event_waiters);
47117 }
47118
47119 @@ -1449,7 +1449,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
47120 if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) &&
47121 (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET))
47122 rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset);
47123 - atomic_set(&rdev->corrected_errors, le32_to_cpu(sb->cnt_corrected_read));
47124 + atomic_set_unchecked(&rdev->corrected_errors, le32_to_cpu(sb->cnt_corrected_read));
47125
47126 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
47127 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
47128 @@ -1700,7 +1700,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
47129 else
47130 sb->resync_offset = cpu_to_le64(0);
47131
47132 - sb->cnt_corrected_read = cpu_to_le32(atomic_read(&rdev->corrected_errors));
47133 + sb->cnt_corrected_read = cpu_to_le32(atomic_read_unchecked(&rdev->corrected_errors));
47134
47135 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
47136 sb->size = cpu_to_le64(mddev->dev_sectors);
47137 @@ -2622,7 +2622,7 @@ __ATTR_PREALLOC(state, S_IRUGO|S_IWUSR, state_show, state_store);
47138 static ssize_t
47139 errors_show(struct md_rdev *rdev, char *page)
47140 {
47141 - return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors));
47142 + return sprintf(page, "%d\n", atomic_read_unchecked(&rdev->corrected_errors));
47143 }
47144
47145 static ssize_t
47146 @@ -2634,7 +2634,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len)
47147 rv = kstrtouint(buf, 10, &n);
47148 if (rv < 0)
47149 return rv;
47150 - atomic_set(&rdev->corrected_errors, n);
47151 + atomic_set_unchecked(&rdev->corrected_errors, n);
47152 return len;
47153 }
47154 static struct rdev_sysfs_entry rdev_errors =
47155 @@ -3071,8 +3071,8 @@ int md_rdev_init(struct md_rdev *rdev)
47156 rdev->sb_loaded = 0;
47157 rdev->bb_page = NULL;
47158 atomic_set(&rdev->nr_pending, 0);
47159 - atomic_set(&rdev->read_errors, 0);
47160 - atomic_set(&rdev->corrected_errors, 0);
47161 + atomic_set_unchecked(&rdev->read_errors, 0);
47162 + atomic_set_unchecked(&rdev->corrected_errors, 0);
47163
47164 INIT_LIST_HEAD(&rdev->same_set);
47165 init_waitqueue_head(&rdev->blocked_wait);
47166 @@ -7256,7 +7256,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
47167
47168 spin_unlock(&pers_lock);
47169 seq_printf(seq, "\n");
47170 - seq->poll_event = atomic_read(&md_event_count);
47171 + seq->poll_event = atomic_read_unchecked(&md_event_count);
47172 return 0;
47173 }
47174 if (v == (void*)2) {
47175 @@ -7359,7 +7359,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
47176 return error;
47177
47178 seq = file->private_data;
47179 - seq->poll_event = atomic_read(&md_event_count);
47180 + seq->poll_event = atomic_read_unchecked(&md_event_count);
47181 return error;
47182 }
47183
47184 @@ -7376,7 +7376,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
47185 /* always allow read */
47186 mask = POLLIN | POLLRDNORM;
47187
47188 - if (seq->poll_event != atomic_read(&md_event_count))
47189 + if (seq->poll_event != atomic_read_unchecked(&md_event_count))
47190 mask |= POLLERR | POLLPRI;
47191 return mask;
47192 }
47193 @@ -7472,7 +7472,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
47194 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
47195 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
47196 (int)part_stat_read(&disk->part0, sectors[1]) -
47197 - atomic_read(&disk->sync_io);
47198 + atomic_read_unchecked(&disk->sync_io);
47199 /* sync IO will cause sync_io to increase before the disk_stats
47200 * as sync_io is counted when a request starts, and
47201 * disk_stats is counted when it completes.
47202 diff --git a/drivers/md/md.h b/drivers/md/md.h
47203 index 7da6e9c..f0c1f10 100644
47204 --- a/drivers/md/md.h
47205 +++ b/drivers/md/md.h
47206 @@ -96,13 +96,13 @@ struct md_rdev {
47207 * only maintained for arrays that
47208 * support hot removal
47209 */
47210 - atomic_t read_errors; /* number of consecutive read errors that
47211 + atomic_unchecked_t read_errors; /* number of consecutive read errors that
47212 * we have tried to ignore.
47213 */
47214 struct timespec last_read_error; /* monotonic time since our
47215 * last read error
47216 */
47217 - atomic_t corrected_errors; /* number of corrected read errors,
47218 + atomic_unchecked_t corrected_errors; /* number of corrected read errors,
47219 * for reporting to userspace and storing
47220 * in superblock.
47221 */
47222 @@ -487,7 +487,7 @@ extern void mddev_unlock(struct mddev *mddev);
47223
47224 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
47225 {
47226 - atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
47227 + atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
47228 }
47229
47230 struct md_personality
47231 diff --git a/drivers/md/persistent-data/dm-space-map-metadata.c b/drivers/md/persistent-data/dm-space-map-metadata.c
47232 index 5309129..7fb096e 100644
47233 --- a/drivers/md/persistent-data/dm-space-map-metadata.c
47234 +++ b/drivers/md/persistent-data/dm-space-map-metadata.c
47235 @@ -691,7 +691,7 @@ static int sm_metadata_extend(struct dm_space_map *sm, dm_block_t extra_blocks)
47236 * Flick into a mode where all blocks get allocated in the new area.
47237 */
47238 smm->begin = old_len;
47239 - memcpy(sm, &bootstrap_ops, sizeof(*sm));
47240 + memcpy((void *)sm, &bootstrap_ops, sizeof(*sm));
47241
47242 /*
47243 * Extend.
47244 @@ -728,7 +728,7 @@ out:
47245 /*
47246 * Switch back to normal behaviour.
47247 */
47248 - memcpy(sm, &ops, sizeof(*sm));
47249 + memcpy((void *)sm, &ops, sizeof(*sm));
47250 return r;
47251 }
47252
47253 diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h
47254 index 3e6d115..ffecdeb 100644
47255 --- a/drivers/md/persistent-data/dm-space-map.h
47256 +++ b/drivers/md/persistent-data/dm-space-map.h
47257 @@ -71,6 +71,7 @@ struct dm_space_map {
47258 dm_sm_threshold_fn fn,
47259 void *context);
47260 };
47261 +typedef struct dm_space_map __no_const dm_space_map_no_const;
47262
47263 /*----------------------------------------------------------------*/
47264
47265 diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
47266 index 967a4ed..002d339 100644
47267 --- a/drivers/md/raid1.c
47268 +++ b/drivers/md/raid1.c
47269 @@ -1937,7 +1937,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
47270 if (r1_sync_page_io(rdev, sect, s,
47271 bio->bi_io_vec[idx].bv_page,
47272 READ) != 0)
47273 - atomic_add(s, &rdev->corrected_errors);
47274 + atomic_add_unchecked(s, &rdev->corrected_errors);
47275 }
47276 sectors -= s;
47277 sect += s;
47278 @@ -2170,7 +2170,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
47279 !test_bit(Faulty, &rdev->flags)) {
47280 if (r1_sync_page_io(rdev, sect, s,
47281 conf->tmppage, READ)) {
47282 - atomic_add(s, &rdev->corrected_errors);
47283 + atomic_add_unchecked(s, &rdev->corrected_errors);
47284 printk(KERN_INFO
47285 "md/raid1:%s: read error corrected "
47286 "(%d sectors at %llu on %s)\n",
47287 diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
47288 index 38c58e1..89c3e0f 100644
47289 --- a/drivers/md/raid10.c
47290 +++ b/drivers/md/raid10.c
47291 @@ -1934,7 +1934,7 @@ static void end_sync_read(struct bio *bio, int error)
47292 /* The write handler will notice the lack of
47293 * R10BIO_Uptodate and record any errors etc
47294 */
47295 - atomic_add(r10_bio->sectors,
47296 + atomic_add_unchecked(r10_bio->sectors,
47297 &conf->mirrors[d].rdev->corrected_errors);
47298
47299 /* for reconstruct, we always reschedule after a read.
47300 @@ -2281,7 +2281,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
47301 {
47302 struct timespec cur_time_mon;
47303 unsigned long hours_since_last;
47304 - unsigned int read_errors = atomic_read(&rdev->read_errors);
47305 + unsigned int read_errors = atomic_read_unchecked(&rdev->read_errors);
47306
47307 ktime_get_ts(&cur_time_mon);
47308
47309 @@ -2303,9 +2303,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
47310 * overflowing the shift of read_errors by hours_since_last.
47311 */
47312 if (hours_since_last >= 8 * sizeof(read_errors))
47313 - atomic_set(&rdev->read_errors, 0);
47314 + atomic_set_unchecked(&rdev->read_errors, 0);
47315 else
47316 - atomic_set(&rdev->read_errors, read_errors >> hours_since_last);
47317 + atomic_set_unchecked(&rdev->read_errors, read_errors >> hours_since_last);
47318 }
47319
47320 static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector,
47321 @@ -2359,8 +2359,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
47322 return;
47323
47324 check_decay_read_errors(mddev, rdev);
47325 - atomic_inc(&rdev->read_errors);
47326 - if (atomic_read(&rdev->read_errors) > max_read_errors) {
47327 + atomic_inc_unchecked(&rdev->read_errors);
47328 + if (atomic_read_unchecked(&rdev->read_errors) > max_read_errors) {
47329 char b[BDEVNAME_SIZE];
47330 bdevname(rdev->bdev, b);
47331
47332 @@ -2368,7 +2368,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
47333 "md/raid10:%s: %s: Raid device exceeded "
47334 "read_error threshold [cur %d:max %d]\n",
47335 mdname(mddev), b,
47336 - atomic_read(&rdev->read_errors), max_read_errors);
47337 + atomic_read_unchecked(&rdev->read_errors), max_read_errors);
47338 printk(KERN_NOTICE
47339 "md/raid10:%s: %s: Failing raid device\n",
47340 mdname(mddev), b);
47341 @@ -2523,7 +2523,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
47342 sect +
47343 choose_data_offset(r10_bio, rdev)),
47344 bdevname(rdev->bdev, b));
47345 - atomic_add(s, &rdev->corrected_errors);
47346 + atomic_add_unchecked(s, &rdev->corrected_errors);
47347 }
47348
47349 rdev_dec_pending(rdev, mddev);
47350 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
47351 index f757023..f958632 100644
47352 --- a/drivers/md/raid5.c
47353 +++ b/drivers/md/raid5.c
47354 @@ -1119,23 +1119,23 @@ async_copy_data(int frombio, struct bio *bio, struct page **page,
47355 struct bio_vec bvl;
47356 struct bvec_iter iter;
47357 struct page *bio_page;
47358 - int page_offset;
47359 + s64 page_offset;
47360 struct async_submit_ctl submit;
47361 enum async_tx_flags flags = 0;
47362
47363 if (bio->bi_iter.bi_sector >= sector)
47364 - page_offset = (signed)(bio->bi_iter.bi_sector - sector) * 512;
47365 + page_offset = (s64)(bio->bi_iter.bi_sector - sector) * 512;
47366 else
47367 - page_offset = (signed)(sector - bio->bi_iter.bi_sector) * -512;
47368 + page_offset = (s64)(sector - bio->bi_iter.bi_sector) * -512;
47369
47370 if (frombio)
47371 flags |= ASYNC_TX_FENCE;
47372 init_async_submit(&submit, flags, tx, NULL, NULL, NULL);
47373
47374 bio_for_each_segment(bvl, bio, iter) {
47375 - int len = bvl.bv_len;
47376 - int clen;
47377 - int b_offset = 0;
47378 + s64 len = bvl.bv_len;
47379 + s64 clen;
47380 + s64 b_offset = 0;
47381
47382 if (page_offset < 0) {
47383 b_offset = -page_offset;
47384 @@ -2028,6 +2028,10 @@ static int grow_one_stripe(struct r5conf *conf, gfp_t gfp)
47385 return 1;
47386 }
47387
47388 +#ifdef CONFIG_GRKERNSEC_HIDESYM
47389 +static atomic_unchecked_t raid5_cache_id = ATOMIC_INIT(0);
47390 +#endif
47391 +
47392 static int grow_stripes(struct r5conf *conf, int num)
47393 {
47394 struct kmem_cache *sc;
47395 @@ -2038,7 +2042,11 @@ static int grow_stripes(struct r5conf *conf, int num)
47396 "raid%d-%s", conf->level, mdname(conf->mddev));
47397 else
47398 sprintf(conf->cache_name[0],
47399 +#ifdef CONFIG_GRKERNSEC_HIDESYM
47400 + "raid%d-%08lx", conf->level, atomic_inc_return_unchecked(&raid5_cache_id));
47401 +#else
47402 "raid%d-%p", conf->level, conf->mddev);
47403 +#endif
47404 sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]);
47405
47406 conf->active_name = 0;
47407 @@ -2331,21 +2339,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
47408 mdname(conf->mddev), STRIPE_SECTORS,
47409 (unsigned long long)s,
47410 bdevname(rdev->bdev, b));
47411 - atomic_add(STRIPE_SECTORS, &rdev->corrected_errors);
47412 + atomic_add_unchecked(STRIPE_SECTORS, &rdev->corrected_errors);
47413 clear_bit(R5_ReadError, &sh->dev[i].flags);
47414 clear_bit(R5_ReWrite, &sh->dev[i].flags);
47415 } else if (test_bit(R5_ReadNoMerge, &sh->dev[i].flags))
47416 clear_bit(R5_ReadNoMerge, &sh->dev[i].flags);
47417
47418 - if (atomic_read(&rdev->read_errors))
47419 - atomic_set(&rdev->read_errors, 0);
47420 + if (atomic_read_unchecked(&rdev->read_errors))
47421 + atomic_set_unchecked(&rdev->read_errors, 0);
47422 } else {
47423 const char *bdn = bdevname(rdev->bdev, b);
47424 int retry = 0;
47425 int set_bad = 0;
47426
47427 clear_bit(R5_UPTODATE, &sh->dev[i].flags);
47428 - atomic_inc(&rdev->read_errors);
47429 + atomic_inc_unchecked(&rdev->read_errors);
47430 if (test_bit(R5_ReadRepl, &sh->dev[i].flags))
47431 printk_ratelimited(
47432 KERN_WARNING
47433 @@ -2373,7 +2381,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
47434 mdname(conf->mddev),
47435 (unsigned long long)s,
47436 bdn);
47437 - } else if (atomic_read(&rdev->read_errors)
47438 + } else if (atomic_read_unchecked(&rdev->read_errors)
47439 > conf->max_nr_stripes)
47440 printk(KERN_WARNING
47441 "md/raid:%s: Too many read errors, failing device %s.\n",
47442 diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
47443 index 13bb57f..0ca21b2 100644
47444 --- a/drivers/media/dvb-core/dvbdev.c
47445 +++ b/drivers/media/dvb-core/dvbdev.c
47446 @@ -272,7 +272,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
47447 const struct dvb_device *template, void *priv, int type)
47448 {
47449 struct dvb_device *dvbdev;
47450 - struct file_operations *dvbdevfops;
47451 + file_operations_no_const *dvbdevfops;
47452 struct device *clsdev;
47453 int minor;
47454 int id;
47455 diff --git a/drivers/media/dvb-frontends/af9033.h b/drivers/media/dvb-frontends/af9033.h
47456 index 6ad22b6..6e90e2a 100644
47457 --- a/drivers/media/dvb-frontends/af9033.h
47458 +++ b/drivers/media/dvb-frontends/af9033.h
47459 @@ -96,6 +96,6 @@ struct af9033_ops {
47460 int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff);
47461 int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid,
47462 int onoff);
47463 -};
47464 +} __no_const;
47465
47466 #endif /* AF9033_H */
47467 diff --git a/drivers/media/dvb-frontends/dib3000.h b/drivers/media/dvb-frontends/dib3000.h
47468 index 6ae9899..07d8543 100644
47469 --- a/drivers/media/dvb-frontends/dib3000.h
47470 +++ b/drivers/media/dvb-frontends/dib3000.h
47471 @@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
47472 int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
47473 int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
47474 int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
47475 -};
47476 +} __no_const;
47477
47478 #if IS_REACHABLE(CONFIG_DVB_DIB3000MB)
47479 extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
47480 diff --git a/drivers/media/dvb-frontends/dib7000p.h b/drivers/media/dvb-frontends/dib7000p.h
47481 index baa2789..c8de7fe 100644
47482 --- a/drivers/media/dvb-frontends/dib7000p.h
47483 +++ b/drivers/media/dvb-frontends/dib7000p.h
47484 @@ -64,7 +64,7 @@ struct dib7000p_ops {
47485 int (*get_adc_power)(struct dvb_frontend *fe);
47486 int (*slave_reset)(struct dvb_frontend *fe);
47487 struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib7000p_config *cfg);
47488 -};
47489 +} __no_const;
47490
47491 #if IS_REACHABLE(CONFIG_DVB_DIB7000P)
47492 void *dib7000p_attach(struct dib7000p_ops *ops);
47493 diff --git a/drivers/media/dvb-frontends/dib8000.h b/drivers/media/dvb-frontends/dib8000.h
47494 index 2b8b4b1..8cef451 100644
47495 --- a/drivers/media/dvb-frontends/dib8000.h
47496 +++ b/drivers/media/dvb-frontends/dib8000.h
47497 @@ -61,7 +61,7 @@ struct dib8000_ops {
47498 int (*pid_filter_ctrl)(struct dvb_frontend *fe, u8 onoff);
47499 int (*pid_filter)(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff);
47500 struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg);
47501 -};
47502 +} __no_const;
47503
47504 #if IS_REACHABLE(CONFIG_DVB_DIB8000)
47505 void *dib8000_attach(struct dib8000_ops *ops);
47506 diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c
47507 index 400e5ca..f69f748 100644
47508 --- a/drivers/media/pci/cx88/cx88-video.c
47509 +++ b/drivers/media/pci/cx88/cx88-video.c
47510 @@ -50,9 +50,9 @@ MODULE_VERSION(CX88_VERSION);
47511
47512 /* ------------------------------------------------------------------ */
47513
47514 -static unsigned int video_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47515 -static unsigned int vbi_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47516 -static unsigned int radio_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47517 +static int video_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47518 +static int vbi_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47519 +static int radio_nr[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
47520
47521 module_param_array(video_nr, int, NULL, 0444);
47522 module_param_array(vbi_nr, int, NULL, 0444);
47523 diff --git a/drivers/media/pci/ivtv/ivtv-driver.c b/drivers/media/pci/ivtv/ivtv-driver.c
47524 index 8616fa8..e16eeaf 100644
47525 --- a/drivers/media/pci/ivtv/ivtv-driver.c
47526 +++ b/drivers/media/pci/ivtv/ivtv-driver.c
47527 @@ -83,7 +83,7 @@ static struct pci_device_id ivtv_pci_tbl[] = {
47528 MODULE_DEVICE_TABLE(pci,ivtv_pci_tbl);
47529
47530 /* ivtv instance counter */
47531 -static atomic_t ivtv_instance = ATOMIC_INIT(0);
47532 +static atomic_unchecked_t ivtv_instance = ATOMIC_INIT(0);
47533
47534 /* Parameter declarations */
47535 static int cardtype[IVTV_MAX_CARDS];
47536 diff --git a/drivers/media/pci/solo6x10/solo6x10-core.c b/drivers/media/pci/solo6x10/solo6x10-core.c
47537 index 570d119..ed25830 100644
47538 --- a/drivers/media/pci/solo6x10/solo6x10-core.c
47539 +++ b/drivers/media/pci/solo6x10/solo6x10-core.c
47540 @@ -424,7 +424,7 @@ static void solo_device_release(struct device *dev)
47541
47542 static int solo_sysfs_init(struct solo_dev *solo_dev)
47543 {
47544 - struct bin_attribute *sdram_attr = &solo_dev->sdram_attr;
47545 + bin_attribute_no_const *sdram_attr = &solo_dev->sdram_attr;
47546 struct device *dev = &solo_dev->dev;
47547 const char *driver;
47548 int i;
47549 diff --git a/drivers/media/pci/solo6x10/solo6x10-g723.c b/drivers/media/pci/solo6x10/solo6x10-g723.c
47550 index 7ddc767..1c24361 100644
47551 --- a/drivers/media/pci/solo6x10/solo6x10-g723.c
47552 +++ b/drivers/media/pci/solo6x10/solo6x10-g723.c
47553 @@ -351,7 +351,7 @@ static int solo_snd_pcm_init(struct solo_dev *solo_dev)
47554
47555 int solo_g723_init(struct solo_dev *solo_dev)
47556 {
47557 - static struct snd_device_ops ops = { NULL };
47558 + static struct snd_device_ops ops = { };
47559 struct snd_card *card;
47560 struct snd_kcontrol_new kctl;
47561 char name[32];
47562 diff --git a/drivers/media/pci/solo6x10/solo6x10-p2m.c b/drivers/media/pci/solo6x10/solo6x10-p2m.c
47563 index 8c84846..27b4f83 100644
47564 --- a/drivers/media/pci/solo6x10/solo6x10-p2m.c
47565 +++ b/drivers/media/pci/solo6x10/solo6x10-p2m.c
47566 @@ -73,7 +73,7 @@ int solo_p2m_dma_desc(struct solo_dev *solo_dev,
47567
47568 /* Get next ID. According to Softlogic, 6110 has problems on !=0 P2M */
47569 if (solo_dev->type != SOLO_DEV_6110 && multi_p2m) {
47570 - p2m_id = atomic_inc_return(&solo_dev->p2m_count) % SOLO_NR_P2M;
47571 + p2m_id = atomic_inc_return_unchecked(&solo_dev->p2m_count) % SOLO_NR_P2M;
47572 if (p2m_id < 0)
47573 p2m_id = -p2m_id;
47574 }
47575 diff --git a/drivers/media/pci/solo6x10/solo6x10.h b/drivers/media/pci/solo6x10/solo6x10.h
47576 index 1ca54b0..7d7cb9a 100644
47577 --- a/drivers/media/pci/solo6x10/solo6x10.h
47578 +++ b/drivers/media/pci/solo6x10/solo6x10.h
47579 @@ -218,7 +218,7 @@ struct solo_dev {
47580
47581 /* P2M DMA Engine */
47582 struct solo_p2m_dev p2m_dev[SOLO_NR_P2M];
47583 - atomic_t p2m_count;
47584 + atomic_unchecked_t p2m_count;
47585 int p2m_jiffies;
47586 unsigned int p2m_timeouts;
47587
47588 diff --git a/drivers/media/pci/tw68/tw68-core.c b/drivers/media/pci/tw68/tw68-core.c
47589 index c135165..dc69499 100644
47590 --- a/drivers/media/pci/tw68/tw68-core.c
47591 +++ b/drivers/media/pci/tw68/tw68-core.c
47592 @@ -60,7 +60,7 @@ static unsigned int card[] = {[0 ... (TW68_MAXBOARDS - 1)] = UNSET };
47593 module_param_array(card, int, NULL, 0444);
47594 MODULE_PARM_DESC(card, "card type");
47595
47596 -static atomic_t tw68_instance = ATOMIC_INIT(0);
47597 +static atomic_unchecked_t tw68_instance = ATOMIC_INIT(0);
47598
47599 /* ------------------------------------------------------------------ */
47600
47601 diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c
47602 index f09c5f1..38f6d65 100644
47603 --- a/drivers/media/platform/omap/omap_vout.c
47604 +++ b/drivers/media/platform/omap/omap_vout.c
47605 @@ -63,7 +63,6 @@ enum omap_vout_channels {
47606 OMAP_VIDEO2,
47607 };
47608
47609 -static struct videobuf_queue_ops video_vbq_ops;
47610 /* Variables configurable through module params*/
47611 static u32 video1_numbuffers = 3;
47612 static u32 video2_numbuffers = 3;
47613 @@ -1008,6 +1007,12 @@ static int omap_vout_open(struct file *file)
47614 {
47615 struct videobuf_queue *q;
47616 struct omap_vout_device *vout = NULL;
47617 + static struct videobuf_queue_ops video_vbq_ops = {
47618 + .buf_setup = omap_vout_buffer_setup,
47619 + .buf_prepare = omap_vout_buffer_prepare,
47620 + .buf_release = omap_vout_buffer_release,
47621 + .buf_queue = omap_vout_buffer_queue,
47622 + };
47623
47624 vout = video_drvdata(file);
47625 v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__);
47626 @@ -1025,10 +1030,6 @@ static int omap_vout_open(struct file *file)
47627 vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
47628
47629 q = &vout->vbq;
47630 - video_vbq_ops.buf_setup = omap_vout_buffer_setup;
47631 - video_vbq_ops.buf_prepare = omap_vout_buffer_prepare;
47632 - video_vbq_ops.buf_release = omap_vout_buffer_release;
47633 - video_vbq_ops.buf_queue = omap_vout_buffer_queue;
47634 spin_lock_init(&vout->vbq_lock);
47635
47636 videobuf_queue_dma_contig_init(q, &video_vbq_ops, q->dev,
47637 diff --git a/drivers/media/platform/s5p-tv/mixer.h b/drivers/media/platform/s5p-tv/mixer.h
47638 index fb2acc5..a2fcbdc4 100644
47639 --- a/drivers/media/platform/s5p-tv/mixer.h
47640 +++ b/drivers/media/platform/s5p-tv/mixer.h
47641 @@ -156,7 +156,7 @@ struct mxr_layer {
47642 /** layer index (unique identifier) */
47643 int idx;
47644 /** callbacks for layer methods */
47645 - struct mxr_layer_ops ops;
47646 + struct mxr_layer_ops *ops;
47647 /** format array */
47648 const struct mxr_format **fmt_array;
47649 /** size of format array */
47650 diff --git a/drivers/media/platform/s5p-tv/mixer_grp_layer.c b/drivers/media/platform/s5p-tv/mixer_grp_layer.c
47651 index 74344c7..a39e70e 100644
47652 --- a/drivers/media/platform/s5p-tv/mixer_grp_layer.c
47653 +++ b/drivers/media/platform/s5p-tv/mixer_grp_layer.c
47654 @@ -235,7 +235,7 @@ struct mxr_layer *mxr_graph_layer_create(struct mxr_device *mdev, int idx)
47655 {
47656 struct mxr_layer *layer;
47657 int ret;
47658 - struct mxr_layer_ops ops = {
47659 + static struct mxr_layer_ops ops = {
47660 .release = mxr_graph_layer_release,
47661 .buffer_set = mxr_graph_buffer_set,
47662 .stream_set = mxr_graph_stream_set,
47663 diff --git a/drivers/media/platform/s5p-tv/mixer_reg.c b/drivers/media/platform/s5p-tv/mixer_reg.c
47664 index b713403..53cb5ad 100644
47665 --- a/drivers/media/platform/s5p-tv/mixer_reg.c
47666 +++ b/drivers/media/platform/s5p-tv/mixer_reg.c
47667 @@ -276,7 +276,7 @@ static void mxr_irq_layer_handle(struct mxr_layer *layer)
47668 layer->update_buf = next;
47669 }
47670
47671 - layer->ops.buffer_set(layer, layer->update_buf);
47672 + layer->ops->buffer_set(layer, layer->update_buf);
47673
47674 if (done && done != layer->shadow_buf)
47675 vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE);
47676 diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c
47677 index 751f3b6..d829203 100644
47678 --- a/drivers/media/platform/s5p-tv/mixer_video.c
47679 +++ b/drivers/media/platform/s5p-tv/mixer_video.c
47680 @@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer)
47681 layer->geo.src.height = layer->geo.src.full_height;
47682
47683 mxr_geometry_dump(mdev, &layer->geo);
47684 - layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
47685 + layer->ops->fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
47686 mxr_geometry_dump(mdev, &layer->geo);
47687 }
47688
47689 @@ -228,7 +228,7 @@ static void mxr_layer_update_output(struct mxr_layer *layer)
47690 layer->geo.dst.full_width = mbus_fmt.width;
47691 layer->geo.dst.full_height = mbus_fmt.height;
47692 layer->geo.dst.field = mbus_fmt.field;
47693 - layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
47694 + layer->ops->fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
47695
47696 mxr_geometry_dump(mdev, &layer->geo);
47697 }
47698 @@ -334,7 +334,7 @@ static int mxr_s_fmt(struct file *file, void *priv,
47699 /* set source size to highest accepted value */
47700 geo->src.full_width = max(geo->dst.full_width, pix->width);
47701 geo->src.full_height = max(geo->dst.full_height, pix->height);
47702 - layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
47703 + layer->ops->fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
47704 mxr_geometry_dump(mdev, &layer->geo);
47705 /* set cropping to total visible screen */
47706 geo->src.width = pix->width;
47707 @@ -342,12 +342,12 @@ static int mxr_s_fmt(struct file *file, void *priv,
47708 geo->src.x_offset = 0;
47709 geo->src.y_offset = 0;
47710 /* assure consistency of geometry */
47711 - layer->ops.fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET);
47712 + layer->ops->fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET);
47713 mxr_geometry_dump(mdev, &layer->geo);
47714 /* set full size to lowest possible value */
47715 geo->src.full_width = 0;
47716 geo->src.full_height = 0;
47717 - layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
47718 + layer->ops->fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
47719 mxr_geometry_dump(mdev, &layer->geo);
47720
47721 /* returning results */
47722 @@ -474,7 +474,7 @@ static int mxr_s_selection(struct file *file, void *fh,
47723 target->width = s->r.width;
47724 target->height = s->r.height;
47725
47726 - layer->ops.fix_geometry(layer, stage, s->flags);
47727 + layer->ops->fix_geometry(layer, stage, s->flags);
47728
47729 /* retrieve update selection rectangle */
47730 res.left = target->x_offset;
47731 @@ -938,13 +938,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
47732 mxr_output_get(mdev);
47733
47734 mxr_layer_update_output(layer);
47735 - layer->ops.format_set(layer);
47736 + layer->ops->format_set(layer);
47737 /* enabling layer in hardware */
47738 spin_lock_irqsave(&layer->enq_slock, flags);
47739 layer->state = MXR_LAYER_STREAMING;
47740 spin_unlock_irqrestore(&layer->enq_slock, flags);
47741
47742 - layer->ops.stream_set(layer, MXR_ENABLE);
47743 + layer->ops->stream_set(layer, MXR_ENABLE);
47744 mxr_streamer_get(mdev);
47745
47746 return 0;
47747 @@ -1014,7 +1014,7 @@ static void stop_streaming(struct vb2_queue *vq)
47748 spin_unlock_irqrestore(&layer->enq_slock, flags);
47749
47750 /* disabling layer in hardware */
47751 - layer->ops.stream_set(layer, MXR_DISABLE);
47752 + layer->ops->stream_set(layer, MXR_DISABLE);
47753 /* remove one streamer */
47754 mxr_streamer_put(mdev);
47755 /* allow changes in output configuration */
47756 @@ -1052,8 +1052,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer)
47757
47758 void mxr_layer_release(struct mxr_layer *layer)
47759 {
47760 - if (layer->ops.release)
47761 - layer->ops.release(layer);
47762 + if (layer->ops->release)
47763 + layer->ops->release(layer);
47764 }
47765
47766 void mxr_base_layer_release(struct mxr_layer *layer)
47767 @@ -1079,7 +1079,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
47768
47769 layer->mdev = mdev;
47770 layer->idx = idx;
47771 - layer->ops = *ops;
47772 + layer->ops = ops;
47773
47774 spin_lock_init(&layer->enq_slock);
47775 INIT_LIST_HEAD(&layer->enq_list);
47776 diff --git a/drivers/media/platform/s5p-tv/mixer_vp_layer.c b/drivers/media/platform/s5p-tv/mixer_vp_layer.c
47777 index c9388c4..ce71ece 100644
47778 --- a/drivers/media/platform/s5p-tv/mixer_vp_layer.c
47779 +++ b/drivers/media/platform/s5p-tv/mixer_vp_layer.c
47780 @@ -206,7 +206,7 @@ struct mxr_layer *mxr_vp_layer_create(struct mxr_device *mdev, int idx)
47781 {
47782 struct mxr_layer *layer;
47783 int ret;
47784 - struct mxr_layer_ops ops = {
47785 + static struct mxr_layer_ops ops = {
47786 .release = mxr_vp_layer_release,
47787 .buffer_set = mxr_vp_buffer_set,
47788 .stream_set = mxr_vp_stream_set,
47789 diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c
47790 index 82affae..42833ec 100644
47791 --- a/drivers/media/radio/radio-cadet.c
47792 +++ b/drivers/media/radio/radio-cadet.c
47793 @@ -333,6 +333,8 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo
47794 unsigned char readbuf[RDS_BUFFER];
47795 int i = 0;
47796
47797 + if (count > RDS_BUFFER)
47798 + return -EFAULT;
47799 mutex_lock(&dev->lock);
47800 if (dev->rdsstat == 0)
47801 cadet_start_rds(dev);
47802 @@ -349,8 +351,9 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo
47803 readbuf[i++] = dev->rdsbuf[dev->rdsout++];
47804 mutex_unlock(&dev->lock);
47805
47806 - if (i && copy_to_user(data, readbuf, i))
47807 - return -EFAULT;
47808 + if (i > sizeof(readbuf) || (i && copy_to_user(data, readbuf, i)))
47809 + i = -EFAULT;
47810 +
47811 return i;
47812 }
47813
47814 diff --git a/drivers/media/radio/radio-maxiradio.c b/drivers/media/radio/radio-maxiradio.c
47815 index 5236035..c622c74 100644
47816 --- a/drivers/media/radio/radio-maxiradio.c
47817 +++ b/drivers/media/radio/radio-maxiradio.c
47818 @@ -61,7 +61,7 @@ MODULE_PARM_DESC(radio_nr, "Radio device number");
47819 /* TEA5757 pin mappings */
47820 static const int clk = 1, data = 2, wren = 4, mo_st = 8, power = 16;
47821
47822 -static atomic_t maxiradio_instance = ATOMIC_INIT(0);
47823 +static atomic_unchecked_t maxiradio_instance = ATOMIC_INIT(0);
47824
47825 #define PCI_VENDOR_ID_GUILLEMOT 0x5046
47826 #define PCI_DEVICE_ID_GUILLEMOT_MAXIRADIO 0x1001
47827 diff --git a/drivers/media/radio/radio-shark.c b/drivers/media/radio/radio-shark.c
47828 index 050b3bb..79f62b9 100644
47829 --- a/drivers/media/radio/radio-shark.c
47830 +++ b/drivers/media/radio/radio-shark.c
47831 @@ -79,7 +79,7 @@ struct shark_device {
47832 u32 last_val;
47833 };
47834
47835 -static atomic_t shark_instance = ATOMIC_INIT(0);
47836 +static atomic_unchecked_t shark_instance = ATOMIC_INIT(0);
47837
47838 static void shark_write_val(struct snd_tea575x *tea, u32 val)
47839 {
47840 diff --git a/drivers/media/radio/radio-shark2.c b/drivers/media/radio/radio-shark2.c
47841 index 8654e0d..0608a64 100644
47842 --- a/drivers/media/radio/radio-shark2.c
47843 +++ b/drivers/media/radio/radio-shark2.c
47844 @@ -74,7 +74,7 @@ struct shark_device {
47845 u8 *transfer_buffer;
47846 };
47847
47848 -static atomic_t shark_instance = ATOMIC_INIT(0);
47849 +static atomic_unchecked_t shark_instance = ATOMIC_INIT(0);
47850
47851 static int shark_write_reg(struct radio_tea5777 *tea, u64 reg)
47852 {
47853 diff --git a/drivers/media/radio/radio-si476x.c b/drivers/media/radio/radio-si476x.c
47854 index 9cbb8cd..2bf2ff3 100644
47855 --- a/drivers/media/radio/radio-si476x.c
47856 +++ b/drivers/media/radio/radio-si476x.c
47857 @@ -1445,7 +1445,7 @@ static int si476x_radio_probe(struct platform_device *pdev)
47858 struct si476x_radio *radio;
47859 struct v4l2_ctrl *ctrl;
47860
47861 - static atomic_t instance = ATOMIC_INIT(0);
47862 + static atomic_unchecked_t instance = ATOMIC_INIT(0);
47863
47864 radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL);
47865 if (!radio)
47866 diff --git a/drivers/media/radio/wl128x/fmdrv_common.c b/drivers/media/radio/wl128x/fmdrv_common.c
47867 index 704397f..4d05977 100644
47868 --- a/drivers/media/radio/wl128x/fmdrv_common.c
47869 +++ b/drivers/media/radio/wl128x/fmdrv_common.c
47870 @@ -71,7 +71,7 @@ module_param(default_rds_buf, uint, 0444);
47871 MODULE_PARM_DESC(rds_buf, "RDS buffer entries");
47872
47873 /* Radio Nr */
47874 -static u32 radio_nr = -1;
47875 +static int radio_nr = -1;
47876 module_param(radio_nr, int, 0444);
47877 MODULE_PARM_DESC(radio_nr, "Radio Nr");
47878
47879 diff --git a/drivers/media/usb/dvb-usb/cinergyT2-core.c b/drivers/media/usb/dvb-usb/cinergyT2-core.c
47880 index 9fd1527..8927230 100644
47881 --- a/drivers/media/usb/dvb-usb/cinergyT2-core.c
47882 +++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c
47883 @@ -50,29 +50,73 @@ static struct dvb_usb_device_properties cinergyt2_properties;
47884
47885 static int cinergyt2_streaming_ctrl(struct dvb_usb_adapter *adap, int enable)
47886 {
47887 - char buf[] = { CINERGYT2_EP1_CONTROL_STREAM_TRANSFER, enable ? 1 : 0 };
47888 - char result[64];
47889 - return dvb_usb_generic_rw(adap->dev, buf, sizeof(buf), result,
47890 - sizeof(result), 0);
47891 + char *buf;
47892 + char *result;
47893 + int retval;
47894 +
47895 + buf = kmalloc(2, GFP_KERNEL);
47896 + if (buf == NULL)
47897 + return -ENOMEM;
47898 + result = kmalloc(64, GFP_KERNEL);
47899 + if (result == NULL) {
47900 + kfree(buf);
47901 + return -ENOMEM;
47902 + }
47903 +
47904 + buf[0] = CINERGYT2_EP1_CONTROL_STREAM_TRANSFER;
47905 + buf[1] = enable ? 1 : 0;
47906 +
47907 + retval = dvb_usb_generic_rw(adap->dev, buf, 2, result, 64, 0);
47908 +
47909 + kfree(buf);
47910 + kfree(result);
47911 + return retval;
47912 }
47913
47914 static int cinergyt2_power_ctrl(struct dvb_usb_device *d, int enable)
47915 {
47916 - char buf[] = { CINERGYT2_EP1_SLEEP_MODE, enable ? 0 : 1 };
47917 - char state[3];
47918 - return dvb_usb_generic_rw(d, buf, sizeof(buf), state, sizeof(state), 0);
47919 + char *buf;
47920 + char *state;
47921 + int retval;
47922 +
47923 + buf = kmalloc(2, GFP_KERNEL);
47924 + if (buf == NULL)
47925 + return -ENOMEM;
47926 + state = kmalloc(3, GFP_KERNEL);
47927 + if (state == NULL) {
47928 + kfree(buf);
47929 + return -ENOMEM;
47930 + }
47931 +
47932 + buf[0] = CINERGYT2_EP1_SLEEP_MODE;
47933 + buf[1] = enable ? 1 : 0;
47934 +
47935 + retval = dvb_usb_generic_rw(d, buf, 2, state, 3, 0);
47936 +
47937 + kfree(buf);
47938 + kfree(state);
47939 + return retval;
47940 }
47941
47942 static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
47943 {
47944 - char query[] = { CINERGYT2_EP1_GET_FIRMWARE_VERSION };
47945 - char state[3];
47946 + char *query;
47947 + char *state;
47948 int ret;
47949 + query = kmalloc(1, GFP_KERNEL);
47950 + if (query == NULL)
47951 + return -ENOMEM;
47952 + state = kmalloc(3, GFP_KERNEL);
47953 + if (state == NULL) {
47954 + kfree(query);
47955 + return -ENOMEM;
47956 + }
47957 +
47958 + query[0] = CINERGYT2_EP1_GET_FIRMWARE_VERSION;
47959
47960 adap->fe_adap[0].fe = cinergyt2_fe_attach(adap->dev);
47961
47962 - ret = dvb_usb_generic_rw(adap->dev, query, sizeof(query), state,
47963 - sizeof(state), 0);
47964 + ret = dvb_usb_generic_rw(adap->dev, query, 1, state, 3, 0);
47965 if (ret < 0) {
47966 deb_rc("cinergyt2_power_ctrl() Failed to retrieve sleep "
47967 "state info\n");
47968 @@ -80,7 +124,8 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
47969
47970 /* Copy this pointer as we are gonna need it in the release phase */
47971 cinergyt2_usb_device = adap->dev;
47972 -
47973 + kfree(query);
47974 + kfree(state);
47975 return 0;
47976 }
47977
47978 @@ -141,12 +186,23 @@ static int repeatable_keys[] = {
47979 static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
47980 {
47981 struct cinergyt2_state *st = d->priv;
47982 - u8 key[5] = {0, 0, 0, 0, 0}, cmd = CINERGYT2_EP1_GET_RC_EVENTS;
47983 + u8 *key, *cmd;
47984 int i;
47985
47986 + cmd = kmalloc(1, GFP_KERNEL);
47987 + if (cmd == NULL)
47988 + return -EINVAL;
47989 + key = kzalloc(5, GFP_KERNEL);
47990 + if (key == NULL) {
47991 + kfree(cmd);
47992 + return -EINVAL;
47993 + }
47994 +
47995 + cmd[0] = CINERGYT2_EP1_GET_RC_EVENTS;
47996 +
47997 *state = REMOTE_NO_KEY_PRESSED;
47998
47999 - dvb_usb_generic_rw(d, &cmd, 1, key, sizeof(key), 0);
48000 + dvb_usb_generic_rw(d, cmd, 1, key, 5, 0);
48001 if (key[4] == 0xff) {
48002 /* key repeat */
48003 st->rc_counter++;
48004 @@ -157,12 +213,12 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
48005 *event = d->last_event;
48006 deb_rc("repeat key, event %x\n",
48007 *event);
48008 - return 0;
48009 + goto out;
48010 }
48011 }
48012 deb_rc("repeated key (non repeatable)\n");
48013 }
48014 - return 0;
48015 + goto out;
48016 }
48017
48018 /* hack to pass checksum on the custom field */
48019 @@ -174,6 +230,9 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
48020
48021 deb_rc("key: %*ph\n", 5, key);
48022 }
48023 +out:
48024 + kfree(cmd);
48025 + kfree(key);
48026 return 0;
48027 }
48028
48029 diff --git a/drivers/media/usb/dvb-usb/cinergyT2-fe.c b/drivers/media/usb/dvb-usb/cinergyT2-fe.c
48030 index b3ec743..9c0e418 100644
48031 --- a/drivers/media/usb/dvb-usb/cinergyT2-fe.c
48032 +++ b/drivers/media/usb/dvb-usb/cinergyT2-fe.c
48033 @@ -145,103 +145,176 @@ static int cinergyt2_fe_read_status(struct dvb_frontend *fe,
48034 enum fe_status *status)
48035 {
48036 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48037 - struct dvbt_get_status_msg result;
48038 - u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
48039 + struct dvbt_get_status_msg *result;
48040 + u8 *cmd;
48041 int ret;
48042
48043 - ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&result,
48044 - sizeof(result), 0);
48045 + cmd = kmalloc(1, GFP_KERNEL);
48046 + if (cmd == NULL)
48047 + return -ENOMEM;
48048 + result = kmalloc(sizeof(*result), GFP_KERNEL);
48049 + if (result == NULL) {
48050 + kfree(cmd);
48051 + return -ENOMEM;
48052 + }
48053 +
48054 + cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
48055 +
48056 + ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)result,
48057 + sizeof(*result), 0);
48058 if (ret < 0)
48059 - return ret;
48060 + goto out;
48061
48062 *status = 0;
48063
48064 - if (0xffff - le16_to_cpu(result.gain) > 30)
48065 + if (0xffff - le16_to_cpu(result->gain) > 30)
48066 *status |= FE_HAS_SIGNAL;
48067 - if (result.lock_bits & (1 << 6))
48068 + if (result->lock_bits & (1 << 6))
48069 *status |= FE_HAS_LOCK;
48070 - if (result.lock_bits & (1 << 5))
48071 + if (result->lock_bits & (1 << 5))
48072 *status |= FE_HAS_SYNC;
48073 - if (result.lock_bits & (1 << 4))
48074 + if (result->lock_bits & (1 << 4))
48075 *status |= FE_HAS_CARRIER;
48076 - if (result.lock_bits & (1 << 1))
48077 + if (result->lock_bits & (1 << 1))
48078 *status |= FE_HAS_VITERBI;
48079
48080 if ((*status & (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC)) !=
48081 (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC))
48082 *status &= ~FE_HAS_LOCK;
48083
48084 - return 0;
48085 +out:
48086 + kfree(cmd);
48087 + kfree(result);
48088 + return ret;
48089 }
48090
48091 static int cinergyt2_fe_read_ber(struct dvb_frontend *fe, u32 *ber)
48092 {
48093 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48094 - struct dvbt_get_status_msg status;
48095 - char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
48096 + struct dvbt_get_status_msg *status;
48097 + char *cmd;
48098 int ret;
48099
48100 - ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
48101 - sizeof(status), 0);
48102 + cmd = kmalloc(1, GFP_KERNEL);
48103 + if (cmd == NULL)
48104 + return -ENOMEM;
48105 + status = kmalloc(sizeof(*status), GFP_KERNEL);
48106 + if (status == NULL) {
48107 + kfree(cmd);
48108 + return -ENOMEM;
48109 + }
48110 +
48111 + cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
48112 +
48113 + ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
48114 + sizeof(*status), 0);
48115 if (ret < 0)
48116 - return ret;
48117 + goto out;
48118
48119 - *ber = le32_to_cpu(status.viterbi_error_rate);
48120 + *ber = le32_to_cpu(status->viterbi_error_rate);
48121 +out:
48122 + kfree(cmd);
48123 + kfree(status);
48124 return 0;
48125 }
48126
48127 static int cinergyt2_fe_read_unc_blocks(struct dvb_frontend *fe, u32 *unc)
48128 {
48129 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48130 - struct dvbt_get_status_msg status;
48131 - u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
48132 + struct dvbt_get_status_msg *status;
48133 + u8 *cmd;
48134 int ret;
48135
48136 - ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&status,
48137 - sizeof(status), 0);
48138 + cmd = kmalloc(1, GFP_KERNEL);
48139 + if (cmd == NULL)
48140 + return -ENOMEM;
48141 + status = kmalloc(sizeof(*status), GFP_KERNEL);
48142 + if (status == NULL) {
48143 + kfree(cmd);
48144 + return -ENOMEM;
48145 + }
48146 +
48147 + cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
48148 +
48149 + ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)status,
48150 + sizeof(*status), 0);
48151 if (ret < 0) {
48152 err("cinergyt2_fe_read_unc_blocks() Failed! (Error=%d)\n",
48153 ret);
48154 - return ret;
48155 + goto out;
48156 }
48157 - *unc = le32_to_cpu(status.uncorrected_block_count);
48158 - return 0;
48159 + *unc = le32_to_cpu(status->uncorrected_block_count);
48160 +
48161 +out:
48162 + kfree(cmd);
48163 + kfree(status);
48164 + return ret;
48165 }
48166
48167 static int cinergyt2_fe_read_signal_strength(struct dvb_frontend *fe,
48168 u16 *strength)
48169 {
48170 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48171 - struct dvbt_get_status_msg status;
48172 - char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
48173 + struct dvbt_get_status_msg *status;
48174 + char *cmd;
48175 int ret;
48176
48177 - ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
48178 - sizeof(status), 0);
48179 + cmd = kmalloc(1, GFP_KERNEL);
48180 + if (cmd == NULL)
48181 + return -ENOMEM;
48182 + status = kmalloc(sizeof(*status), GFP_KERNEL);
48183 + if (status == NULL) {
48184 + kfree(cmd);
48185 + return -ENOMEM;
48186 + }
48187 +
48188 + cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
48189 +
48190 + ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
48191 + sizeof(*status), 0);
48192 if (ret < 0) {
48193 err("cinergyt2_fe_read_signal_strength() Failed!"
48194 " (Error=%d)\n", ret);
48195 - return ret;
48196 + goto out;
48197 }
48198 - *strength = (0xffff - le16_to_cpu(status.gain));
48199 + *strength = (0xffff - le16_to_cpu(status->gain));
48200 +
48201 +out:
48202 + kfree(cmd);
48203 + kfree(status);
48204 return 0;
48205 }
48206
48207 static int cinergyt2_fe_read_snr(struct dvb_frontend *fe, u16 *snr)
48208 {
48209 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48210 - struct dvbt_get_status_msg status;
48211 - char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
48212 + struct dvbt_get_status_msg *status;
48213 + char *cmd;
48214 int ret;
48215
48216 - ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
48217 - sizeof(status), 0);
48218 + cmd = kmalloc(1, GFP_KERNEL);
48219 + if (cmd == NULL)
48220 + return -ENOMEM;
48221 + status = kmalloc(sizeof(*status), GFP_KERNEL);
48222 + if (status == NULL) {
48223 + kfree(cmd);
48224 + return -ENOMEM;
48225 + }
48226 +
48227 + cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
48228 +
48229 + ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
48230 + sizeof(*status), 0);
48231 if (ret < 0) {
48232 err("cinergyt2_fe_read_snr() Failed! (Error=%d)\n", ret);
48233 - return ret;
48234 + goto out;
48235 }
48236 - *snr = (status.snr << 8) | status.snr;
48237 - return 0;
48238 + *snr = (status->snr << 8) | status->snr;
48239 +
48240 +out:
48241 + kfree(cmd);
48242 + kfree(status);
48243 + return ret;
48244 }
48245
48246 static int cinergyt2_fe_init(struct dvb_frontend *fe)
48247 @@ -266,35 +339,46 @@ static int cinergyt2_fe_set_frontend(struct dvb_frontend *fe)
48248 {
48249 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
48250 struct cinergyt2_fe_state *state = fe->demodulator_priv;
48251 - struct dvbt_set_parameters_msg param;
48252 - char result[2];
48253 + struct dvbt_set_parameters_msg *param;
48254 + char *result;
48255 int err;
48256
48257 - param.cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
48258 - param.tps = cpu_to_le16(compute_tps(fep));
48259 - param.freq = cpu_to_le32(fep->frequency / 1000);
48260 - param.flags = 0;
48261 + result = kmalloc(2, GFP_KERNEL);
48262 + if (result == NULL)
48263 + return -ENOMEM;
48264 + param = kmalloc(sizeof(*param), GFP_KERNEL);
48265 + if (param == NULL) {
48266 + kfree(result);
48267 + return -ENOMEM;
48268 + }
48269 +
48270 + param->cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
48271 + param->tps = cpu_to_le16(compute_tps(fep));
48272 + param->freq = cpu_to_le32(fep->frequency / 1000);
48273 + param->flags = 0;
48274
48275 switch (fep->bandwidth_hz) {
48276 default:
48277 case 8000000:
48278 - param.bandwidth = 8;
48279 + param->bandwidth = 8;
48280 break;
48281 case 7000000:
48282 - param.bandwidth = 7;
48283 + param->bandwidth = 7;
48284 break;
48285 case 6000000:
48286 - param.bandwidth = 6;
48287 + param->bandwidth = 6;
48288 break;
48289 }
48290
48291 err = dvb_usb_generic_rw(state->d,
48292 - (char *)&param, sizeof(param),
48293 - result, sizeof(result), 0);
48294 + (char *)param, sizeof(*param),
48295 + result, 2, 0);
48296 if (err < 0)
48297 err("cinergyt2_fe_set_frontend() Failed! err=%d\n", err);
48298
48299 - return (err < 0) ? err : 0;
48300 + kfree(result);
48301 + kfree(param);
48302 + return err;
48303 }
48304
48305 static void cinergyt2_fe_release(struct dvb_frontend *fe)
48306 diff --git a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
48307 index 733a7ff..f8b52e3 100644
48308 --- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
48309 +++ b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
48310 @@ -35,42 +35,57 @@ static int usb_cypress_writemem(struct usb_device *udev,u16 addr,u8 *data, u8 le
48311
48312 int usb_cypress_load_firmware(struct usb_device *udev, const struct firmware *fw, int type)
48313 {
48314 - struct hexline hx;
48315 - u8 reset;
48316 + struct hexline *hx;
48317 + u8 *reset;
48318 int ret,pos=0;
48319
48320 + reset = kmalloc(1, GFP_KERNEL);
48321 + if (reset == NULL)
48322 + return -ENOMEM;
48323 +
48324 + hx = kmalloc(sizeof(struct hexline), GFP_KERNEL);
48325 + if (hx == NULL) {
48326 + kfree(reset);
48327 + return -ENOMEM;
48328 + }
48329 +
48330 /* stop the CPU */
48331 - reset = 1;
48332 - if ((ret = usb_cypress_writemem(udev,cypress[type].cpu_cs_register,&reset,1)) != 1)
48333 + reset[0] = 1;
48334 + if ((ret = usb_cypress_writemem(udev,cypress[type].cpu_cs_register,reset,1)) != 1)
48335 err("could not stop the USB controller CPU.");
48336
48337 - while ((ret = dvb_usb_get_hexline(fw,&hx,&pos)) > 0) {
48338 - deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n",hx.addr,hx.len,hx.chk);
48339 - ret = usb_cypress_writemem(udev,hx.addr,hx.data,hx.len);
48340 + while ((ret = dvb_usb_get_hexline(fw,hx,&pos)) > 0) {
48341 + deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n",hx->addr,hx->len,hx->chk);
48342 + ret = usb_cypress_writemem(udev,hx->addr,hx->data,hx->len);
48343
48344 - if (ret != hx.len) {
48345 + if (ret != hx->len) {
48346 err("error while transferring firmware "
48347 "(transferred size: %d, block size: %d)",
48348 - ret,hx.len);
48349 + ret,hx->len);
48350 ret = -EINVAL;
48351 break;
48352 }
48353 }
48354 if (ret < 0) {
48355 err("firmware download failed at %d with %d",pos,ret);
48356 + kfree(reset);
48357 + kfree(hx);
48358 return ret;
48359 }
48360
48361 if (ret == 0) {
48362 /* restart the CPU */
48363 - reset = 0;
48364 - if (ret || usb_cypress_writemem(udev,cypress[type].cpu_cs_register,&reset,1) != 1) {
48365 + reset[0] = 0;
48366 + if (ret || usb_cypress_writemem(udev,cypress[type].cpu_cs_register,reset,1) != 1) {
48367 err("could not restart the USB controller CPU.");
48368 ret = -EINVAL;
48369 }
48370 } else
48371 ret = -EIO;
48372
48373 + kfree(reset);
48374 + kfree(hx);
48375 +
48376 return ret;
48377 }
48378 EXPORT_SYMBOL(usb_cypress_load_firmware);
48379 diff --git a/drivers/media/usb/dvb-usb/technisat-usb2.c b/drivers/media/usb/dvb-usb/technisat-usb2.c
48380 index 03f334d..0986492 100644
48381 --- a/drivers/media/usb/dvb-usb/technisat-usb2.c
48382 +++ b/drivers/media/usb/dvb-usb/technisat-usb2.c
48383 @@ -87,8 +87,11 @@ struct technisat_usb2_state {
48384 static int technisat_usb2_i2c_access(struct usb_device *udev,
48385 u8 device_addr, u8 *tx, u8 txlen, u8 *rx, u8 rxlen)
48386 {
48387 - u8 b[64];
48388 - int ret, actual_length;
48389 + u8 *b = kmalloc(64, GFP_KERNEL);
48390 + int ret, actual_length, error = 0;
48391 +
48392 + if (b == NULL)
48393 + return -ENOMEM;
48394
48395 deb_i2c("i2c-access: %02x, tx: ", device_addr);
48396 debug_dump(tx, txlen, deb_i2c);
48397 @@ -121,7 +124,8 @@ static int technisat_usb2_i2c_access(struct usb_device *udev,
48398
48399 if (ret < 0) {
48400 err("i2c-error: out failed %02x = %d", device_addr, ret);
48401 - return -ENODEV;
48402 + error = -ENODEV;
48403 + goto out;
48404 }
48405
48406 ret = usb_bulk_msg(udev,
48407 @@ -129,7 +133,8 @@ static int technisat_usb2_i2c_access(struct usb_device *udev,
48408 b, 64, &actual_length, 1000);
48409 if (ret < 0) {
48410 err("i2c-error: in failed %02x = %d", device_addr, ret);
48411 - return -ENODEV;
48412 + error = -ENODEV;
48413 + goto out;
48414 }
48415
48416 if (b[0] != I2C_STATUS_OK) {
48417 @@ -137,8 +142,10 @@ static int technisat_usb2_i2c_access(struct usb_device *udev,
48418 /* handle tuner-i2c-nak */
48419 if (!(b[0] == I2C_STATUS_NAK &&
48420 device_addr == 0x60
48421 - /* && device_is_technisat_usb2 */))
48422 - return -ENODEV;
48423 + /* && device_is_technisat_usb2 */)) {
48424 + error = -ENODEV;
48425 + goto out;
48426 + }
48427 }
48428
48429 deb_i2c("status: %d, ", b[0]);
48430 @@ -152,7 +159,9 @@ static int technisat_usb2_i2c_access(struct usb_device *udev,
48431
48432 deb_i2c("\n");
48433
48434 - return 0;
48435 +out:
48436 + kfree(b);
48437 + return error;
48438 }
48439
48440 static int technisat_usb2_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
48441 @@ -224,14 +233,16 @@ static int technisat_usb2_set_led(struct dvb_usb_device *d, int red, enum techni
48442 {
48443 int ret;
48444
48445 - u8 led[8] = {
48446 - red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
48447 - 0
48448 - };
48449 + u8 *led = kzalloc(8, GFP_KERNEL);
48450 +
48451 + if (led == NULL)
48452 + return -ENOMEM;
48453
48454 if (disable_led_control && state != TECH_LED_OFF)
48455 return 0;
48456
48457 + led[0] = red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST;
48458 +
48459 switch (state) {
48460 case TECH_LED_ON:
48461 led[1] = 0x82;
48462 @@ -263,16 +274,22 @@ static int technisat_usb2_set_led(struct dvb_usb_device *d, int red, enum techni
48463 red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
48464 USB_TYPE_VENDOR | USB_DIR_OUT,
48465 0, 0,
48466 - led, sizeof(led), 500);
48467 + led, 8, 500);
48468
48469 mutex_unlock(&d->i2c_mutex);
48470 +
48471 + kfree(led);
48472 +
48473 return ret;
48474 }
48475
48476 static int technisat_usb2_set_led_timer(struct dvb_usb_device *d, u8 red, u8 green)
48477 {
48478 int ret;
48479 - u8 b = 0;
48480 + u8 *b = kzalloc(1, GFP_KERNEL);
48481 +
48482 + if (b == NULL)
48483 + return -ENOMEM;
48484
48485 if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
48486 return -EAGAIN;
48487 @@ -281,10 +298,12 @@ static int technisat_usb2_set_led_timer(struct dvb_usb_device *d, u8 red, u8 gre
48488 SET_LED_TIMER_DIVIDER_VENDOR_REQUEST,
48489 USB_TYPE_VENDOR | USB_DIR_OUT,
48490 (red << 8) | green, 0,
48491 - &b, 1, 500);
48492 + b, 1, 500);
48493
48494 mutex_unlock(&d->i2c_mutex);
48495
48496 + kfree(b);
48497 +
48498 return ret;
48499 }
48500
48501 @@ -328,7 +347,7 @@ static int technisat_usb2_identify_state(struct usb_device *udev,
48502 struct dvb_usb_device_description **desc, int *cold)
48503 {
48504 int ret;
48505 - u8 version[3];
48506 + u8 *version = kmalloc(3, GFP_KERNEL);
48507
48508 /* first select the interface */
48509 if (usb_set_interface(udev, 0, 1) != 0)
48510 @@ -338,11 +357,14 @@ static int technisat_usb2_identify_state(struct usb_device *udev,
48511
48512 *cold = 0; /* by default do not download a firmware - just in case something is wrong */
48513
48514 + if (version == NULL)
48515 + return 0;
48516 +
48517 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
48518 GET_VERSION_INFO_VENDOR_REQUEST,
48519 USB_TYPE_VENDOR | USB_DIR_IN,
48520 0, 0,
48521 - version, sizeof(version), 500);
48522 + version, 3, 500);
48523
48524 if (ret < 0)
48525 *cold = 1;
48526 @@ -351,6 +373,8 @@ static int technisat_usb2_identify_state(struct usb_device *udev,
48527 *cold = 0;
48528 }
48529
48530 + kfree(version);
48531 +
48532 return 0;
48533 }
48534
48535 @@ -594,10 +618,15 @@ static int technisat_usb2_frontend_attach(struct dvb_usb_adapter *a)
48536
48537 static int technisat_usb2_get_ir(struct dvb_usb_device *d)
48538 {
48539 - u8 buf[62], *b;
48540 + u8 *buf, *b;
48541 int ret;
48542 struct ir_raw_event ev;
48543
48544 + buf = kmalloc(62, GFP_KERNEL);
48545 +
48546 + if (buf == NULL)
48547 + return -ENOMEM;
48548 +
48549 buf[0] = GET_IR_DATA_VENDOR_REQUEST;
48550 buf[1] = 0x08;
48551 buf[2] = 0x8f;
48552 @@ -620,16 +649,20 @@ static int technisat_usb2_get_ir(struct dvb_usb_device *d)
48553 GET_IR_DATA_VENDOR_REQUEST,
48554 USB_TYPE_VENDOR | USB_DIR_IN,
48555 0x8080, 0,
48556 - buf, sizeof(buf), 500);
48557 + buf, 62, 500);
48558
48559 unlock:
48560 mutex_unlock(&d->i2c_mutex);
48561
48562 - if (ret < 0)
48563 + if (ret < 0) {
48564 + kfree(buf);
48565 return ret;
48566 + }
48567
48568 - if (ret == 1)
48569 + if (ret == 1) {
48570 + kfree(buf);
48571 return 0; /* no key pressed */
48572 + }
48573
48574 /* decoding */
48575 b = buf+1;
48576 @@ -656,6 +689,8 @@ unlock:
48577
48578 ir_raw_event_handle(d->rc_dev);
48579
48580 + kfree(buf);
48581 +
48582 return 1;
48583 }
48584
48585 diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
48586 index af63543..0436f20 100644
48587 --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
48588 +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
48589 @@ -429,7 +429,7 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
48590 * by passing a very big num_planes value */
48591 uplane = compat_alloc_user_space(num_planes *
48592 sizeof(struct v4l2_plane));
48593 - kp->m.planes = (__force struct v4l2_plane *)uplane;
48594 + kp->m.planes = (__force_kernel struct v4l2_plane *)uplane;
48595
48596 while (--num_planes >= 0) {
48597 ret = get_v4l2_plane32(uplane, uplane32, kp->memory);
48598 @@ -500,7 +500,7 @@ static int put_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
48599 if (num_planes == 0)
48600 return 0;
48601
48602 - uplane = (__force struct v4l2_plane __user *)kp->m.planes;
48603 + uplane = (struct v4l2_plane __force_user *)kp->m.planes;
48604 if (get_user(p, &up->m.planes))
48605 return -EFAULT;
48606 uplane32 = compat_ptr(p);
48607 @@ -564,7 +564,7 @@ static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
48608 get_user(kp->flags, &up->flags) ||
48609 copy_from_user(&kp->fmt, &up->fmt, sizeof(up->fmt)))
48610 return -EFAULT;
48611 - kp->base = (__force void *)compat_ptr(tmp);
48612 + kp->base = (__force_kernel void *)compat_ptr(tmp);
48613 return 0;
48614 }
48615
48616 @@ -669,7 +669,7 @@ static int get_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
48617 n * sizeof(struct v4l2_ext_control32)))
48618 return -EFAULT;
48619 kcontrols = compat_alloc_user_space(n * sizeof(struct v4l2_ext_control));
48620 - kp->controls = (__force struct v4l2_ext_control *)kcontrols;
48621 + kp->controls = (__force_kernel struct v4l2_ext_control *)kcontrols;
48622 while (--n >= 0) {
48623 u32 id;
48624
48625 @@ -696,7 +696,7 @@ static int put_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
48626 {
48627 struct v4l2_ext_control32 __user *ucontrols;
48628 struct v4l2_ext_control __user *kcontrols =
48629 - (__force struct v4l2_ext_control __user *)kp->controls;
48630 + (struct v4l2_ext_control __force_user *)kp->controls;
48631 int n = kp->count;
48632 compat_caddr_t p;
48633
48634 @@ -780,7 +780,7 @@ static int get_v4l2_edid32(struct v4l2_edid *kp, struct v4l2_edid32 __user *up)
48635 get_user(tmp, &up->edid) ||
48636 copy_from_user(kp->reserved, up->reserved, sizeof(kp->reserved)))
48637 return -EFAULT;
48638 - kp->edid = (__force u8 *)compat_ptr(tmp);
48639 + kp->edid = (__force_kernel u8 *)compat_ptr(tmp);
48640 return 0;
48641 }
48642
48643 diff --git a/drivers/media/v4l2-core/v4l2-device.c b/drivers/media/v4l2-core/v4l2-device.c
48644 index 5b0a30b..1974b38 100644
48645 --- a/drivers/media/v4l2-core/v4l2-device.c
48646 +++ b/drivers/media/v4l2-core/v4l2-device.c
48647 @@ -74,9 +74,9 @@ int v4l2_device_put(struct v4l2_device *v4l2_dev)
48648 EXPORT_SYMBOL_GPL(v4l2_device_put);
48649
48650 int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
48651 - atomic_t *instance)
48652 + atomic_unchecked_t *instance)
48653 {
48654 - int num = atomic_inc_return(instance) - 1;
48655 + int num = atomic_inc_return_unchecked(instance) - 1;
48656 int len = strlen(basename);
48657
48658 if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
48659 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
48660 index 85de455..4987854 100644
48661 --- a/drivers/media/v4l2-core/v4l2-ioctl.c
48662 +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
48663 @@ -2341,7 +2341,8 @@ struct v4l2_ioctl_info {
48664 struct file *file, void *fh, void *p);
48665 } u;
48666 void (*debug)(const void *arg, bool write_only);
48667 -};
48668 +} __do_const;
48669 +typedef struct v4l2_ioctl_info __no_const v4l2_ioctl_info_no_const;
48670
48671 /* This control needs a priority check */
48672 #define INFO_FL_PRIO (1 << 0)
48673 @@ -2525,7 +2526,7 @@ static long __video_do_ioctl(struct file *file,
48674 struct video_device *vfd = video_devdata(file);
48675 const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
48676 bool write_only = false;
48677 - struct v4l2_ioctl_info default_info;
48678 + v4l2_ioctl_info_no_const default_info;
48679 const struct v4l2_ioctl_info *info;
48680 void *fh = file->private_data;
48681 struct v4l2_fh *vfh = NULL;
48682 @@ -2616,7 +2617,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
48683 ret = -EINVAL;
48684 break;
48685 }
48686 - *user_ptr = (void __user *)buf->m.planes;
48687 + *user_ptr = (void __force_user *)buf->m.planes;
48688 *kernel_ptr = (void **)&buf->m.planes;
48689 *array_size = sizeof(struct v4l2_plane) * buf->length;
48690 ret = 1;
48691 @@ -2633,7 +2634,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
48692 ret = -EINVAL;
48693 break;
48694 }
48695 - *user_ptr = (void __user *)edid->edid;
48696 + *user_ptr = (void __force_user *)edid->edid;
48697 *kernel_ptr = (void **)&edid->edid;
48698 *array_size = edid->blocks * 128;
48699 ret = 1;
48700 @@ -2651,7 +2652,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
48701 ret = -EINVAL;
48702 break;
48703 }
48704 - *user_ptr = (void __user *)ctrls->controls;
48705 + *user_ptr = (void __force_user *)ctrls->controls;
48706 *kernel_ptr = (void **)&ctrls->controls;
48707 *array_size = sizeof(struct v4l2_ext_control)
48708 * ctrls->count;
48709 @@ -2752,7 +2753,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
48710 }
48711
48712 if (has_array_args) {
48713 - *kernel_ptr = (void __force *)user_ptr;
48714 + *kernel_ptr = (void __force_kernel *)user_ptr;
48715 if (copy_to_user(user_ptr, mbuf, array_size))
48716 err = -EFAULT;
48717 goto out_array_args;
48718 diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c
48719 index 9426276..9abd11e 100644
48720 --- a/drivers/memory/omap-gpmc.c
48721 +++ b/drivers/memory/omap-gpmc.c
48722 @@ -232,7 +232,6 @@ struct omap3_gpmc_regs {
48723 };
48724
48725 static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ];
48726 -static struct irq_chip gpmc_irq_chip;
48727 static int gpmc_irq_start;
48728
48729 static struct resource gpmc_mem_root;
48730 @@ -1146,6 +1145,17 @@ static void gpmc_irq_noop(struct irq_data *data) { }
48731
48732 static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; }
48733
48734 +static struct irq_chip gpmc_irq_chip = {
48735 + .name = "gpmc",
48736 + .irq_startup = gpmc_irq_noop_ret,
48737 + .irq_enable = gpmc_irq_enable,
48738 + .irq_disable = gpmc_irq_disable,
48739 + .irq_shutdown = gpmc_irq_noop,
48740 + .irq_ack = gpmc_irq_noop,
48741 + .irq_mask = gpmc_irq_noop,
48742 + .irq_unmask = gpmc_irq_noop,
48743 +};
48744 +
48745 static int gpmc_setup_irq(void)
48746 {
48747 int i;
48748 @@ -1160,15 +1170,6 @@ static int gpmc_setup_irq(void)
48749 return gpmc_irq_start;
48750 }
48751
48752 - gpmc_irq_chip.name = "gpmc";
48753 - gpmc_irq_chip.irq_startup = gpmc_irq_noop_ret;
48754 - gpmc_irq_chip.irq_enable = gpmc_irq_enable;
48755 - gpmc_irq_chip.irq_disable = gpmc_irq_disable;
48756 - gpmc_irq_chip.irq_shutdown = gpmc_irq_noop;
48757 - gpmc_irq_chip.irq_ack = gpmc_irq_noop;
48758 - gpmc_irq_chip.irq_mask = gpmc_irq_noop;
48759 - gpmc_irq_chip.irq_unmask = gpmc_irq_noop;
48760 -
48761 gpmc_client_irq[0].bitmask = GPMC_IRQ_FIFOEVENTENABLE;
48762 gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT;
48763
48764 diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
48765 index 5dcc031..e08ecd2 100644
48766 --- a/drivers/message/fusion/mptbase.c
48767 +++ b/drivers/message/fusion/mptbase.c
48768 @@ -6722,8 +6722,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
48769 seq_printf(m, " MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
48770 seq_printf(m, " MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
48771
48772 +#ifdef CONFIG_GRKERNSEC_HIDESYM
48773 + seq_printf(m, " RequestFrames @ 0x%p (Dma @ 0x%p)\n", NULL, NULL);
48774 +#else
48775 seq_printf(m, " RequestFrames @ 0x%p (Dma @ 0x%p)\n",
48776 (void *)ioc->req_frames, (void *)(ulong)ioc->req_frames_dma);
48777 +#endif
48778 +
48779 /*
48780 * Rounding UP to nearest 4-kB boundary here...
48781 */
48782 @@ -6736,7 +6741,11 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
48783 ioc->facts.GlobalCredits);
48784
48785 seq_printf(m, " Frames @ 0x%p (Dma @ 0x%p)\n",
48786 +#ifdef CONFIG_GRKERNSEC_HIDESYM
48787 + NULL, NULL);
48788 +#else
48789 (void *)ioc->alloc, (void *)(ulong)ioc->alloc_dma);
48790 +#endif
48791 sz = (ioc->reply_sz * ioc->reply_depth) + 128;
48792 seq_printf(m, " {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n",
48793 ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz);
48794 diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
48795 index 005a88b..5a90fbb 100644
48796 --- a/drivers/message/fusion/mptsas.c
48797 +++ b/drivers/message/fusion/mptsas.c
48798 @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
48799 return 0;
48800 }
48801
48802 +static inline void
48803 +mptsas_set_rphy(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info, struct sas_rphy *rphy)
48804 +{
48805 + if (phy_info->port_details) {
48806 + phy_info->port_details->rphy = rphy;
48807 + dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "sas_rphy_add: rphy=%p\n",
48808 + ioc->name, rphy));
48809 + }
48810 +
48811 + if (rphy) {
48812 + dsaswideprintk(ioc, dev_printk(KERN_DEBUG,
48813 + &rphy->dev, MYIOC_s_FMT "add:", ioc->name));
48814 + dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "rphy=%p release=%p\n",
48815 + ioc->name, rphy, rphy->dev.release));
48816 + }
48817 +}
48818 +
48819 /* no mutex */
48820 static void
48821 mptsas_port_delete(MPT_ADAPTER *ioc, struct mptsas_portinfo_details * port_details)
48822 @@ -484,23 +501,6 @@ mptsas_get_rphy(struct mptsas_phyinfo *phy_info)
48823 return NULL;
48824 }
48825
48826 -static inline void
48827 -mptsas_set_rphy(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info, struct sas_rphy *rphy)
48828 -{
48829 - if (phy_info->port_details) {
48830 - phy_info->port_details->rphy = rphy;
48831 - dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "sas_rphy_add: rphy=%p\n",
48832 - ioc->name, rphy));
48833 - }
48834 -
48835 - if (rphy) {
48836 - dsaswideprintk(ioc, dev_printk(KERN_DEBUG,
48837 - &rphy->dev, MYIOC_s_FMT "add:", ioc->name));
48838 - dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "rphy=%p release=%p\n",
48839 - ioc->name, rphy, rphy->dev.release));
48840 - }
48841 -}
48842 -
48843 static inline struct sas_port *
48844 mptsas_get_port(struct mptsas_phyinfo *phy_info)
48845 {
48846 diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c
48847 index 0236cd7..53b10d7 100644
48848 --- a/drivers/mfd/ab8500-debugfs.c
48849 +++ b/drivers/mfd/ab8500-debugfs.c
48850 @@ -100,7 +100,7 @@ static int irq_last;
48851 static u32 *irq_count;
48852 static int num_irqs;
48853
48854 -static struct device_attribute **dev_attr;
48855 +static device_attribute_no_const **dev_attr;
48856 static char **event_name;
48857
48858 static u8 avg_sample = SAMPLE_16;
48859 diff --git a/drivers/mfd/kempld-core.c b/drivers/mfd/kempld-core.c
48860 index 8057849..0550fdf 100644
48861 --- a/drivers/mfd/kempld-core.c
48862 +++ b/drivers/mfd/kempld-core.c
48863 @@ -499,7 +499,7 @@ static struct platform_driver kempld_driver = {
48864 .remove = kempld_remove,
48865 };
48866
48867 -static struct dmi_system_id kempld_dmi_table[] __initdata = {
48868 +static const struct dmi_system_id kempld_dmi_table[] __initconst = {
48869 {
48870 .ident = "BHL6",
48871 .matches = {
48872 diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c
48873 index c880c89..45a7c68 100644
48874 --- a/drivers/mfd/max8925-i2c.c
48875 +++ b/drivers/mfd/max8925-i2c.c
48876 @@ -152,7 +152,7 @@ static int max8925_probe(struct i2c_client *client,
48877 const struct i2c_device_id *id)
48878 {
48879 struct max8925_platform_data *pdata = dev_get_platdata(&client->dev);
48880 - static struct max8925_chip *chip;
48881 + struct max8925_chip *chip;
48882 struct device_node *node = client->dev.of_node;
48883
48884 if (node && !pdata) {
48885 diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
48886 index 7612d89..70549c2 100644
48887 --- a/drivers/mfd/tps65910.c
48888 +++ b/drivers/mfd/tps65910.c
48889 @@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq,
48890 struct tps65910_platform_data *pdata)
48891 {
48892 int ret = 0;
48893 - static struct regmap_irq_chip *tps6591x_irqs_chip;
48894 + struct regmap_irq_chip *tps6591x_irqs_chip;
48895
48896 if (!irq) {
48897 dev_warn(tps65910->dev, "No interrupt support, no core IRQ\n");
48898 diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
48899 index a3fa7f4..eac02ef 100644
48900 --- a/drivers/mfd/twl4030-irq.c
48901 +++ b/drivers/mfd/twl4030-irq.c
48902 @@ -34,6 +34,7 @@
48903 #include <linux/of.h>
48904 #include <linux/irqdomain.h>
48905 #include <linux/i2c/twl.h>
48906 +#include <asm/pgtable.h>
48907
48908 #include "twl-core.h"
48909
48910 @@ -729,10 +730,12 @@ int twl4030_init_irq(struct device *dev, int irq_num)
48911 * Install an irq handler for each of the SIH modules;
48912 * clone dummy irq_chip since PIH can't *do* anything
48913 */
48914 - twl4030_irq_chip = dummy_irq_chip;
48915 - twl4030_irq_chip.name = "twl4030";
48916 + pax_open_kernel();
48917 + memcpy((void *)&twl4030_irq_chip, &dummy_irq_chip, sizeof twl4030_irq_chip);
48918 + *(const char **)&twl4030_irq_chip.name = "twl4030";
48919
48920 - twl4030_sih_irq_chip.irq_ack = dummy_irq_chip.irq_ack;
48921 + *(void **)&twl4030_sih_irq_chip.irq_ack = dummy_irq_chip.irq_ack;
48922 + pax_close_kernel();
48923
48924 for (i = irq_base; i < irq_end; i++) {
48925 irq_set_chip_and_handler(i, &twl4030_irq_chip,
48926 diff --git a/drivers/misc/c2port/core.c b/drivers/misc/c2port/core.c
48927 index 464419b..64bae8d 100644
48928 --- a/drivers/misc/c2port/core.c
48929 +++ b/drivers/misc/c2port/core.c
48930 @@ -922,7 +922,9 @@ struct c2port_device *c2port_device_register(char *name,
48931 goto error_idr_alloc;
48932 c2dev->id = ret;
48933
48934 - bin_attr_flash_data.size = ops->blocks_num * ops->block_size;
48935 + pax_open_kernel();
48936 + *(size_t *)&bin_attr_flash_data.size = ops->blocks_num * ops->block_size;
48937 + pax_close_kernel();
48938
48939 c2dev->dev = device_create(c2port_class, NULL, 0, c2dev,
48940 "c2port%d", c2dev->id);
48941 diff --git a/drivers/misc/eeprom/sunxi_sid.c b/drivers/misc/eeprom/sunxi_sid.c
48942 index 8385177..2f54635 100644
48943 --- a/drivers/misc/eeprom/sunxi_sid.c
48944 +++ b/drivers/misc/eeprom/sunxi_sid.c
48945 @@ -126,7 +126,9 @@ static int sunxi_sid_probe(struct platform_device *pdev)
48946
48947 platform_set_drvdata(pdev, sid_data);
48948
48949 - sid_bin_attr.size = sid_data->keysize;
48950 + pax_open_kernel();
48951 + *(size_t *)&sid_bin_attr.size = sid_data->keysize;
48952 + pax_close_kernel();
48953 if (device_create_bin_file(&pdev->dev, &sid_bin_attr))
48954 return -ENODEV;
48955
48956 diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
48957 index 9a60bd4..cee2069 100644
48958 --- a/drivers/misc/kgdbts.c
48959 +++ b/drivers/misc/kgdbts.c
48960 @@ -834,7 +834,7 @@ static void run_plant_and_detach_test(int is_early)
48961 char before[BREAK_INSTR_SIZE];
48962 char after[BREAK_INSTR_SIZE];
48963
48964 - probe_kernel_read(before, (char *)kgdbts_break_test,
48965 + probe_kernel_read(before, (void *)ktla_ktva((unsigned long)kgdbts_break_test),
48966 BREAK_INSTR_SIZE);
48967 init_simple_test();
48968 ts.tst = plant_and_detach_test;
48969 @@ -842,7 +842,7 @@ static void run_plant_and_detach_test(int is_early)
48970 /* Activate test with initial breakpoint */
48971 if (!is_early)
48972 kgdb_breakpoint();
48973 - probe_kernel_read(after, (char *)kgdbts_break_test,
48974 + probe_kernel_read(after, (void *)ktla_ktva((unsigned long)kgdbts_break_test),
48975 BREAK_INSTR_SIZE);
48976 if (memcmp(before, after, BREAK_INSTR_SIZE)) {
48977 printk(KERN_CRIT "kgdbts: ERROR kgdb corrupted memory\n");
48978 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
48979 index fb8705f..dc2f679 100644
48980 --- a/drivers/misc/lis3lv02d/lis3lv02d.c
48981 +++ b/drivers/misc/lis3lv02d/lis3lv02d.c
48982 @@ -497,7 +497,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *data)
48983 * the lid is closed. This leads to interrupts as soon as a little move
48984 * is done.
48985 */
48986 - atomic_inc(&lis3->count);
48987 + atomic_inc_unchecked(&lis3->count);
48988
48989 wake_up_interruptible(&lis3->misc_wait);
48990 kill_fasync(&lis3->async_queue, SIGIO, POLL_IN);
48991 @@ -583,7 +583,7 @@ static int lis3lv02d_misc_open(struct inode *inode, struct file *file)
48992 if (lis3->pm_dev)
48993 pm_runtime_get_sync(lis3->pm_dev);
48994
48995 - atomic_set(&lis3->count, 0);
48996 + atomic_set_unchecked(&lis3->count, 0);
48997 return 0;
48998 }
48999
49000 @@ -615,7 +615,7 @@ static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf,
49001 add_wait_queue(&lis3->misc_wait, &wait);
49002 while (true) {
49003 set_current_state(TASK_INTERRUPTIBLE);
49004 - data = atomic_xchg(&lis3->count, 0);
49005 + data = atomic_xchg_unchecked(&lis3->count, 0);
49006 if (data)
49007 break;
49008
49009 @@ -656,7 +656,7 @@ static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
49010 struct lis3lv02d, miscdev);
49011
49012 poll_wait(file, &lis3->misc_wait, wait);
49013 - if (atomic_read(&lis3->count))
49014 + if (atomic_read_unchecked(&lis3->count))
49015 return POLLIN | POLLRDNORM;
49016 return 0;
49017 }
49018 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.h b/drivers/misc/lis3lv02d/lis3lv02d.h
49019 index c439c82..1f20f57 100644
49020 --- a/drivers/misc/lis3lv02d/lis3lv02d.h
49021 +++ b/drivers/misc/lis3lv02d/lis3lv02d.h
49022 @@ -297,7 +297,7 @@ struct lis3lv02d {
49023 struct input_polled_dev *idev; /* input device */
49024 struct platform_device *pdev; /* platform device */
49025 struct regulator_bulk_data regulators[2];
49026 - atomic_t count; /* interrupt count after last read */
49027 + atomic_unchecked_t count; /* interrupt count after last read */
49028 union axis_conversion ac; /* hw -> logical axis */
49029 int mapped_btns[3];
49030
49031 diff --git a/drivers/misc/mic/scif/scif_rb.c b/drivers/misc/mic/scif/scif_rb.c
49032 index 637cc46..4fb1267 100644
49033 --- a/drivers/misc/mic/scif/scif_rb.c
49034 +++ b/drivers/misc/mic/scif/scif_rb.c
49035 @@ -138,7 +138,7 @@ void scif_rb_commit(struct scif_rb *rb)
49036 * the read barrier in scif_rb_count(..)
49037 */
49038 wmb();
49039 - ACCESS_ONCE(*rb->write_ptr) = rb->current_write_offset;
49040 + ACCESS_ONCE_RW(*rb->write_ptr) = rb->current_write_offset;
49041 #ifdef CONFIG_INTEL_MIC_CARD
49042 /*
49043 * X100 Si bug: For the case where a Core is performing an EXT_WR
49044 @@ -147,7 +147,7 @@ void scif_rb_commit(struct scif_rb *rb)
49045 * This way, if ordering is violated for the Interrupt Message, it will
49046 * fall just behind the first Posted associated with the first EXT_WR.
49047 */
49048 - ACCESS_ONCE(*rb->write_ptr) = rb->current_write_offset;
49049 + ACCESS_ONCE_RW(*rb->write_ptr) = rb->current_write_offset;
49050 #endif
49051 }
49052
49053 @@ -210,7 +210,7 @@ void scif_rb_update_read_ptr(struct scif_rb *rb)
49054 * scif_rb_space(..)
49055 */
49056 mb();
49057 - ACCESS_ONCE(*rb->read_ptr) = new_offset;
49058 + ACCESS_ONCE_RW(*rb->read_ptr) = new_offset;
49059 #ifdef CONFIG_INTEL_MIC_CARD
49060 /*
49061 * X100 Si Bug: For the case where a Core is performing an EXT_WR
49062 @@ -219,7 +219,7 @@ void scif_rb_update_read_ptr(struct scif_rb *rb)
49063 * This way, if ordering is violated for the Interrupt Message, it will
49064 * fall just behind the first Posted associated with the first EXT_WR.
49065 */
49066 - ACCESS_ONCE(*rb->read_ptr) = new_offset;
49067 + ACCESS_ONCE_RW(*rb->read_ptr) = new_offset;
49068 #endif
49069 }
49070
49071 diff --git a/drivers/misc/sgi-gru/gruhandles.c b/drivers/misc/sgi-gru/gruhandles.c
49072 index 2f30bad..c4c13d0 100644
49073 --- a/drivers/misc/sgi-gru/gruhandles.c
49074 +++ b/drivers/misc/sgi-gru/gruhandles.c
49075 @@ -44,8 +44,8 @@ static void update_mcs_stats(enum mcs_op op, unsigned long clks)
49076 unsigned long nsec;
49077
49078 nsec = CLKS2NSEC(clks);
49079 - atomic_long_inc(&mcs_op_statistics[op].count);
49080 - atomic_long_add(nsec, &mcs_op_statistics[op].total);
49081 + atomic_long_inc_unchecked(&mcs_op_statistics[op].count);
49082 + atomic_long_add_unchecked(nsec, &mcs_op_statistics[op].total);
49083 if (mcs_op_statistics[op].max < nsec)
49084 mcs_op_statistics[op].max = nsec;
49085 }
49086 diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c
49087 index 4f76359..cdfcb2e 100644
49088 --- a/drivers/misc/sgi-gru/gruprocfs.c
49089 +++ b/drivers/misc/sgi-gru/gruprocfs.c
49090 @@ -32,9 +32,9 @@
49091
49092 #define printstat(s, f) printstat_val(s, &gru_stats.f, #f)
49093
49094 -static void printstat_val(struct seq_file *s, atomic_long_t *v, char *id)
49095 +static void printstat_val(struct seq_file *s, atomic_long_unchecked_t *v, char *id)
49096 {
49097 - unsigned long val = atomic_long_read(v);
49098 + unsigned long val = atomic_long_read_unchecked(v);
49099
49100 seq_printf(s, "%16lu %s\n", val, id);
49101 }
49102 @@ -134,8 +134,8 @@ static int mcs_statistics_show(struct seq_file *s, void *p)
49103
49104 seq_printf(s, "%-20s%12s%12s%12s\n", "#id", "count", "aver-clks", "max-clks");
49105 for (op = 0; op < mcsop_last; op++) {
49106 - count = atomic_long_read(&mcs_op_statistics[op].count);
49107 - total = atomic_long_read(&mcs_op_statistics[op].total);
49108 + count = atomic_long_read_unchecked(&mcs_op_statistics[op].count);
49109 + total = atomic_long_read_unchecked(&mcs_op_statistics[op].total);
49110 max = mcs_op_statistics[op].max;
49111 seq_printf(s, "%-20s%12ld%12ld%12ld\n", id[op], count,
49112 count ? total / count : 0, max);
49113 diff --git a/drivers/misc/sgi-gru/grutables.h b/drivers/misc/sgi-gru/grutables.h
49114 index 5c3ce24..4915ccb 100644
49115 --- a/drivers/misc/sgi-gru/grutables.h
49116 +++ b/drivers/misc/sgi-gru/grutables.h
49117 @@ -167,82 +167,82 @@ extern unsigned int gru_max_gids;
49118 * GRU statistics.
49119 */
49120 struct gru_stats_s {
49121 - atomic_long_t vdata_alloc;
49122 - atomic_long_t vdata_free;
49123 - atomic_long_t gts_alloc;
49124 - atomic_long_t gts_free;
49125 - atomic_long_t gms_alloc;
49126 - atomic_long_t gms_free;
49127 - atomic_long_t gts_double_allocate;
49128 - atomic_long_t assign_context;
49129 - atomic_long_t assign_context_failed;
49130 - atomic_long_t free_context;
49131 - atomic_long_t load_user_context;
49132 - atomic_long_t load_kernel_context;
49133 - atomic_long_t lock_kernel_context;
49134 - atomic_long_t unlock_kernel_context;
49135 - atomic_long_t steal_user_context;
49136 - atomic_long_t steal_kernel_context;
49137 - atomic_long_t steal_context_failed;
49138 - atomic_long_t nopfn;
49139 - atomic_long_t asid_new;
49140 - atomic_long_t asid_next;
49141 - atomic_long_t asid_wrap;
49142 - atomic_long_t asid_reuse;
49143 - atomic_long_t intr;
49144 - atomic_long_t intr_cbr;
49145 - atomic_long_t intr_tfh;
49146 - atomic_long_t intr_spurious;
49147 - atomic_long_t intr_mm_lock_failed;
49148 - atomic_long_t call_os;
49149 - atomic_long_t call_os_wait_queue;
49150 - atomic_long_t user_flush_tlb;
49151 - atomic_long_t user_unload_context;
49152 - atomic_long_t user_exception;
49153 - atomic_long_t set_context_option;
49154 - atomic_long_t check_context_retarget_intr;
49155 - atomic_long_t check_context_unload;
49156 - atomic_long_t tlb_dropin;
49157 - atomic_long_t tlb_preload_page;
49158 - atomic_long_t tlb_dropin_fail_no_asid;
49159 - atomic_long_t tlb_dropin_fail_upm;
49160 - atomic_long_t tlb_dropin_fail_invalid;
49161 - atomic_long_t tlb_dropin_fail_range_active;
49162 - atomic_long_t tlb_dropin_fail_idle;
49163 - atomic_long_t tlb_dropin_fail_fmm;
49164 - atomic_long_t tlb_dropin_fail_no_exception;
49165 - atomic_long_t tfh_stale_on_fault;
49166 - atomic_long_t mmu_invalidate_range;
49167 - atomic_long_t mmu_invalidate_page;
49168 - atomic_long_t flush_tlb;
49169 - atomic_long_t flush_tlb_gru;
49170 - atomic_long_t flush_tlb_gru_tgh;
49171 - atomic_long_t flush_tlb_gru_zero_asid;
49172 + atomic_long_unchecked_t vdata_alloc;
49173 + atomic_long_unchecked_t vdata_free;
49174 + atomic_long_unchecked_t gts_alloc;
49175 + atomic_long_unchecked_t gts_free;
49176 + atomic_long_unchecked_t gms_alloc;
49177 + atomic_long_unchecked_t gms_free;
49178 + atomic_long_unchecked_t gts_double_allocate;
49179 + atomic_long_unchecked_t assign_context;
49180 + atomic_long_unchecked_t assign_context_failed;
49181 + atomic_long_unchecked_t free_context;
49182 + atomic_long_unchecked_t load_user_context;
49183 + atomic_long_unchecked_t load_kernel_context;
49184 + atomic_long_unchecked_t lock_kernel_context;
49185 + atomic_long_unchecked_t unlock_kernel_context;
49186 + atomic_long_unchecked_t steal_user_context;
49187 + atomic_long_unchecked_t steal_kernel_context;
49188 + atomic_long_unchecked_t steal_context_failed;
49189 + atomic_long_unchecked_t nopfn;
49190 + atomic_long_unchecked_t asid_new;
49191 + atomic_long_unchecked_t asid_next;
49192 + atomic_long_unchecked_t asid_wrap;
49193 + atomic_long_unchecked_t asid_reuse;
49194 + atomic_long_unchecked_t intr;
49195 + atomic_long_unchecked_t intr_cbr;
49196 + atomic_long_unchecked_t intr_tfh;
49197 + atomic_long_unchecked_t intr_spurious;
49198 + atomic_long_unchecked_t intr_mm_lock_failed;
49199 + atomic_long_unchecked_t call_os;
49200 + atomic_long_unchecked_t call_os_wait_queue;
49201 + atomic_long_unchecked_t user_flush_tlb;
49202 + atomic_long_unchecked_t user_unload_context;
49203 + atomic_long_unchecked_t user_exception;
49204 + atomic_long_unchecked_t set_context_option;
49205 + atomic_long_unchecked_t check_context_retarget_intr;
49206 + atomic_long_unchecked_t check_context_unload;
49207 + atomic_long_unchecked_t tlb_dropin;
49208 + atomic_long_unchecked_t tlb_preload_page;
49209 + atomic_long_unchecked_t tlb_dropin_fail_no_asid;
49210 + atomic_long_unchecked_t tlb_dropin_fail_upm;
49211 + atomic_long_unchecked_t tlb_dropin_fail_invalid;
49212 + atomic_long_unchecked_t tlb_dropin_fail_range_active;
49213 + atomic_long_unchecked_t tlb_dropin_fail_idle;
49214 + atomic_long_unchecked_t tlb_dropin_fail_fmm;
49215 + atomic_long_unchecked_t tlb_dropin_fail_no_exception;
49216 + atomic_long_unchecked_t tfh_stale_on_fault;
49217 + atomic_long_unchecked_t mmu_invalidate_range;
49218 + atomic_long_unchecked_t mmu_invalidate_page;
49219 + atomic_long_unchecked_t flush_tlb;
49220 + atomic_long_unchecked_t flush_tlb_gru;
49221 + atomic_long_unchecked_t flush_tlb_gru_tgh;
49222 + atomic_long_unchecked_t flush_tlb_gru_zero_asid;
49223
49224 - atomic_long_t copy_gpa;
49225 - atomic_long_t read_gpa;
49226 + atomic_long_unchecked_t copy_gpa;
49227 + atomic_long_unchecked_t read_gpa;
49228
49229 - atomic_long_t mesq_receive;
49230 - atomic_long_t mesq_receive_none;
49231 - atomic_long_t mesq_send;
49232 - atomic_long_t mesq_send_failed;
49233 - atomic_long_t mesq_noop;
49234 - atomic_long_t mesq_send_unexpected_error;
49235 - atomic_long_t mesq_send_lb_overflow;
49236 - atomic_long_t mesq_send_qlimit_reached;
49237 - atomic_long_t mesq_send_amo_nacked;
49238 - atomic_long_t mesq_send_put_nacked;
49239 - atomic_long_t mesq_page_overflow;
49240 - atomic_long_t mesq_qf_locked;
49241 - atomic_long_t mesq_qf_noop_not_full;
49242 - atomic_long_t mesq_qf_switch_head_failed;
49243 - atomic_long_t mesq_qf_unexpected_error;
49244 - atomic_long_t mesq_noop_unexpected_error;
49245 - atomic_long_t mesq_noop_lb_overflow;
49246 - atomic_long_t mesq_noop_qlimit_reached;
49247 - atomic_long_t mesq_noop_amo_nacked;
49248 - atomic_long_t mesq_noop_put_nacked;
49249 - atomic_long_t mesq_noop_page_overflow;
49250 + atomic_long_unchecked_t mesq_receive;
49251 + atomic_long_unchecked_t mesq_receive_none;
49252 + atomic_long_unchecked_t mesq_send;
49253 + atomic_long_unchecked_t mesq_send_failed;
49254 + atomic_long_unchecked_t mesq_noop;
49255 + atomic_long_unchecked_t mesq_send_unexpected_error;
49256 + atomic_long_unchecked_t mesq_send_lb_overflow;
49257 + atomic_long_unchecked_t mesq_send_qlimit_reached;
49258 + atomic_long_unchecked_t mesq_send_amo_nacked;
49259 + atomic_long_unchecked_t mesq_send_put_nacked;
49260 + atomic_long_unchecked_t mesq_page_overflow;
49261 + atomic_long_unchecked_t mesq_qf_locked;
49262 + atomic_long_unchecked_t mesq_qf_noop_not_full;
49263 + atomic_long_unchecked_t mesq_qf_switch_head_failed;
49264 + atomic_long_unchecked_t mesq_qf_unexpected_error;
49265 + atomic_long_unchecked_t mesq_noop_unexpected_error;
49266 + atomic_long_unchecked_t mesq_noop_lb_overflow;
49267 + atomic_long_unchecked_t mesq_noop_qlimit_reached;
49268 + atomic_long_unchecked_t mesq_noop_amo_nacked;
49269 + atomic_long_unchecked_t mesq_noop_put_nacked;
49270 + atomic_long_unchecked_t mesq_noop_page_overflow;
49271
49272 };
49273
49274 @@ -251,8 +251,8 @@ enum mcs_op {cchop_allocate, cchop_start, cchop_interrupt, cchop_interrupt_sync,
49275 tghop_invalidate, mcsop_last};
49276
49277 struct mcs_op_statistic {
49278 - atomic_long_t count;
49279 - atomic_long_t total;
49280 + atomic_long_unchecked_t count;
49281 + atomic_long_unchecked_t total;
49282 unsigned long max;
49283 };
49284
49285 @@ -275,7 +275,7 @@ extern struct mcs_op_statistic mcs_op_statistics[mcsop_last];
49286
49287 #define STAT(id) do { \
49288 if (gru_options & OPT_STATS) \
49289 - atomic_long_inc(&gru_stats.id); \
49290 + atomic_long_inc_unchecked(&gru_stats.id); \
49291 } while (0)
49292
49293 #ifdef CONFIG_SGI_GRU_DEBUG
49294 diff --git a/drivers/misc/sgi-xp/xp.h b/drivers/misc/sgi-xp/xp.h
49295 index c862cd4..0d176fe 100644
49296 --- a/drivers/misc/sgi-xp/xp.h
49297 +++ b/drivers/misc/sgi-xp/xp.h
49298 @@ -288,7 +288,7 @@ struct xpc_interface {
49299 xpc_notify_func, void *);
49300 void (*received) (short, int, void *);
49301 enum xp_retval (*partid_to_nasids) (short, void *);
49302 -};
49303 +} __no_const;
49304
49305 extern struct xpc_interface xpc_interface;
49306
49307 diff --git a/drivers/misc/sgi-xp/xp_main.c b/drivers/misc/sgi-xp/xp_main.c
49308 index 01be66d..e3a0c7e 100644
49309 --- a/drivers/misc/sgi-xp/xp_main.c
49310 +++ b/drivers/misc/sgi-xp/xp_main.c
49311 @@ -78,13 +78,13 @@ xpc_notloaded(void)
49312 }
49313
49314 struct xpc_interface xpc_interface = {
49315 - (void (*)(int))xpc_notloaded,
49316 - (void (*)(int))xpc_notloaded,
49317 - (enum xp_retval(*)(short, int, u32, void *, u16))xpc_notloaded,
49318 - (enum xp_retval(*)(short, int, u32, void *, u16, xpc_notify_func,
49319 + .connect = (void (*)(int))xpc_notloaded,
49320 + .disconnect = (void (*)(int))xpc_notloaded,
49321 + .send = (enum xp_retval(*)(short, int, u32, void *, u16))xpc_notloaded,
49322 + .send_notify = (enum xp_retval(*)(short, int, u32, void *, u16, xpc_notify_func,
49323 void *))xpc_notloaded,
49324 - (void (*)(short, int, void *))xpc_notloaded,
49325 - (enum xp_retval(*)(short, void *))xpc_notloaded
49326 + .received = (void (*)(short, int, void *))xpc_notloaded,
49327 + .partid_to_nasids = (enum xp_retval(*)(short, void *))xpc_notloaded
49328 };
49329 EXPORT_SYMBOL_GPL(xpc_interface);
49330
49331 diff --git a/drivers/misc/sgi-xp/xpc.h b/drivers/misc/sgi-xp/xpc.h
49332 index b94d5f7..7f494c5 100644
49333 --- a/drivers/misc/sgi-xp/xpc.h
49334 +++ b/drivers/misc/sgi-xp/xpc.h
49335 @@ -835,6 +835,7 @@ struct xpc_arch_operations {
49336 void (*received_payload) (struct xpc_channel *, void *);
49337 void (*notify_senders_of_disconnect) (struct xpc_channel *);
49338 };
49339 +typedef struct xpc_arch_operations __no_const xpc_arch_operations_no_const;
49340
49341 /* struct xpc_partition act_state values (for XPC HB) */
49342
49343 @@ -876,7 +877,7 @@ extern struct xpc_registration xpc_registrations[];
49344 /* found in xpc_main.c */
49345 extern struct device *xpc_part;
49346 extern struct device *xpc_chan;
49347 -extern struct xpc_arch_operations xpc_arch_ops;
49348 +extern xpc_arch_operations_no_const xpc_arch_ops;
49349 extern int xpc_disengage_timelimit;
49350 extern int xpc_disengage_timedout;
49351 extern int xpc_activate_IRQ_rcvd;
49352 diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c
49353 index 7f32712..8539ab2 100644
49354 --- a/drivers/misc/sgi-xp/xpc_main.c
49355 +++ b/drivers/misc/sgi-xp/xpc_main.c
49356 @@ -166,7 +166,7 @@ static struct notifier_block xpc_die_notifier = {
49357 .notifier_call = xpc_system_die,
49358 };
49359
49360 -struct xpc_arch_operations xpc_arch_ops;
49361 +xpc_arch_operations_no_const xpc_arch_ops;
49362
49363 /*
49364 * Timer function to enforce the timelimit on the partition disengage.
49365 diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
49366 index a1b820f..e299c58 100644
49367 --- a/drivers/mmc/card/block.c
49368 +++ b/drivers/mmc/card/block.c
49369 @@ -579,7 +579,7 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev,
49370 if (idata->ic.postsleep_min_us)
49371 usleep_range(idata->ic.postsleep_min_us, idata->ic.postsleep_max_us);
49372
49373 - if (copy_to_user(&(ic_ptr->response), cmd.resp, sizeof(cmd.resp))) {
49374 + if (copy_to_user(ic_ptr->response, cmd.resp, sizeof(cmd.resp))) {
49375 err = -EFAULT;
49376 goto cmd_rel_host;
49377 }
49378 diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
49379 index 8ce4674..a23c858 100644
49380 --- a/drivers/mmc/host/dw_mmc.h
49381 +++ b/drivers/mmc/host/dw_mmc.h
49382 @@ -286,5 +286,5 @@ struct dw_mci_drv_data {
49383 struct mmc_ios *ios);
49384 int (*switch_voltage)(struct mmc_host *mmc,
49385 struct mmc_ios *ios);
49386 -};
49387 +} __do_const;
49388 #endif /* _DW_MMC_H_ */
49389 diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
49390 index fb26674..3172c2b 100644
49391 --- a/drivers/mmc/host/mmci.c
49392 +++ b/drivers/mmc/host/mmci.c
49393 @@ -1633,7 +1633,9 @@ static int mmci_probe(struct amba_device *dev,
49394 mmc->caps |= MMC_CAP_CMD23;
49395
49396 if (variant->busy_detect) {
49397 - mmci_ops.card_busy = mmci_card_busy;
49398 + pax_open_kernel();
49399 + *(void **)&mmci_ops.card_busy = mmci_card_busy;
49400 + pax_close_kernel();
49401 mmci_write_datactrlreg(host, MCI_ST_DPSM_BUSYMODE);
49402 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY;
49403 mmc->max_busy_timeout = 0;
49404 diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
49405 index 4d12032..2b0eb6d 100644
49406 --- a/drivers/mmc/host/omap_hsmmc.c
49407 +++ b/drivers/mmc/host/omap_hsmmc.c
49408 @@ -1984,7 +1984,9 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
49409
49410 if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) {
49411 dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n");
49412 - omap_hsmmc_ops.multi_io_quirk = omap_hsmmc_multi_io_quirk;
49413 + pax_open_kernel();
49414 + *(void **)&omap_hsmmc_ops.multi_io_quirk = omap_hsmmc_multi_io_quirk;
49415 + pax_close_kernel();
49416 }
49417
49418 device_init_wakeup(&pdev->dev, true);
49419 diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
49420 index c6b9f64..00e656c 100644
49421 --- a/drivers/mmc/host/sdhci-esdhc-imx.c
49422 +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
49423 @@ -1088,9 +1088,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
49424 host->ioaddr + 0x6c);
49425 }
49426
49427 - if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING)
49428 - sdhci_esdhc_ops.platform_execute_tuning =
49429 + if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) {
49430 + pax_open_kernel();
49431 + *(void **)&sdhci_esdhc_ops.platform_execute_tuning =
49432 esdhc_executing_tuning;
49433 + pax_close_kernel();
49434 + }
49435
49436 if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING)
49437 writel(readl(host->ioaddr + ESDHC_TUNING_CTRL) |
49438 diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
49439 index 70c724b..308aafc 100644
49440 --- a/drivers/mmc/host/sdhci-s3c.c
49441 +++ b/drivers/mmc/host/sdhci-s3c.c
49442 @@ -598,9 +598,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
49443 * we can use overriding functions instead of default.
49444 */
49445 if (sc->no_divider) {
49446 - sdhci_s3c_ops.set_clock = sdhci_cmu_set_clock;
49447 - sdhci_s3c_ops.get_min_clock = sdhci_cmu_get_min_clock;
49448 - sdhci_s3c_ops.get_max_clock = sdhci_cmu_get_max_clock;
49449 + pax_open_kernel();
49450 + *(void **)&sdhci_s3c_ops.set_clock = sdhci_cmu_set_clock;
49451 + *(void **)&sdhci_s3c_ops.get_min_clock = sdhci_cmu_get_min_clock;
49452 + *(void **)&sdhci_s3c_ops.get_max_clock = sdhci_cmu_get_max_clock;
49453 + pax_close_kernel();
49454 }
49455
49456 /* It supports additional host capabilities if needed */
49457 diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
49458 index 9a1a6ff..b8f1a57 100644
49459 --- a/drivers/mtd/chips/cfi_cmdset_0020.c
49460 +++ b/drivers/mtd/chips/cfi_cmdset_0020.c
49461 @@ -666,7 +666,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
49462 size_t totlen = 0, thislen;
49463 int ret = 0;
49464 size_t buflen = 0;
49465 - static char *buffer;
49466 + char *buffer;
49467
49468 if (!ECCBUF_SIZE) {
49469 /* We should fall back to a general writev implementation.
49470 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
49471 index 870c7fc..c7d6440 100644
49472 --- a/drivers/mtd/nand/denali.c
49473 +++ b/drivers/mtd/nand/denali.c
49474 @@ -24,6 +24,7 @@
49475 #include <linux/slab.h>
49476 #include <linux/mtd/mtd.h>
49477 #include <linux/module.h>
49478 +#include <linux/slab.h>
49479
49480 #include "denali.h"
49481
49482 diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
49483 index 1b8f350..990f2e9 100644
49484 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
49485 +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
49486 @@ -386,7 +386,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
49487
49488 /* first try to map the upper buffer directly */
49489 if (virt_addr_valid(this->upper_buf) &&
49490 - !object_is_on_stack(this->upper_buf)) {
49491 + !object_starts_on_stack(this->upper_buf)) {
49492 sg_init_one(sgl, this->upper_buf, this->upper_len);
49493 ret = dma_map_sg(this->dev, sgl, 1, dr);
49494 if (ret == 0)
49495 diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c
49496 index a5dfbfb..8042ab4 100644
49497 --- a/drivers/mtd/nftlmount.c
49498 +++ b/drivers/mtd/nftlmount.c
49499 @@ -24,6 +24,7 @@
49500 #include <asm/errno.h>
49501 #include <linux/delay.h>
49502 #include <linux/slab.h>
49503 +#include <linux/sched.h>
49504 #include <linux/mtd/mtd.h>
49505 #include <linux/mtd/nand.h>
49506 #include <linux/mtd/nftl.h>
49507 diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
49508 index c23184a..4115c41 100644
49509 --- a/drivers/mtd/sm_ftl.c
49510 +++ b/drivers/mtd/sm_ftl.c
49511 @@ -56,7 +56,7 @@ static ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr,
49512 #define SM_CIS_VENDOR_OFFSET 0x59
49513 static struct attribute_group *sm_create_sysfs_attributes(struct sm_ftl *ftl)
49514 {
49515 - struct attribute_group *attr_group;
49516 + attribute_group_no_const *attr_group;
49517 struct attribute **attributes;
49518 struct sm_sysfs_attribute *vendor_attribute;
49519 char *vendor;
49520 diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c
49521 index 1bda292..3f4af40 100644
49522 --- a/drivers/net/bonding/bond_netlink.c
49523 +++ b/drivers/net/bonding/bond_netlink.c
49524 @@ -649,7 +649,7 @@ nla_put_failure:
49525 return -EMSGSIZE;
49526 }
49527
49528 -struct rtnl_link_ops bond_link_ops __read_mostly = {
49529 +struct rtnl_link_ops bond_link_ops = {
49530 .kind = "bond",
49531 .priv_size = sizeof(struct bonding),
49532 .setup = bond_setup,
49533 diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
49534 index b3b922a..80bba38 100644
49535 --- a/drivers/net/caif/caif_hsi.c
49536 +++ b/drivers/net/caif/caif_hsi.c
49537 @@ -1444,7 +1444,7 @@ err:
49538 return -ENODEV;
49539 }
49540
49541 -static struct rtnl_link_ops caif_hsi_link_ops __read_mostly = {
49542 +static struct rtnl_link_ops caif_hsi_link_ops = {
49543 .kind = "cfhsi",
49544 .priv_size = sizeof(struct cfhsi),
49545 .setup = cfhsi_setup,
49546 diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
49547 index e8c96b8..516a96c 100644
49548 --- a/drivers/net/can/Kconfig
49549 +++ b/drivers/net/can/Kconfig
49550 @@ -98,7 +98,7 @@ config CAN_JANZ_ICAN3
49551
49552 config CAN_FLEXCAN
49553 tristate "Support for Freescale FLEXCAN based chips"
49554 - depends on ARM || PPC
49555 + depends on (ARM && CPU_LITTLE_ENDIAN) || PPC
49556 ---help---
49557 Say Y here if you want to support for Freescale FlexCAN.
49558
49559 diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
49560 index aede704..b516b4d 100644
49561 --- a/drivers/net/can/dev.c
49562 +++ b/drivers/net/can/dev.c
49563 @@ -961,7 +961,7 @@ static int can_newlink(struct net *src_net, struct net_device *dev,
49564 return -EOPNOTSUPP;
49565 }
49566
49567 -static struct rtnl_link_ops can_link_ops __read_mostly = {
49568 +static struct rtnl_link_ops can_link_ops = {
49569 .kind = "can",
49570 .maxtype = IFLA_CAN_MAX,
49571 .policy = can_policy,
49572 diff --git a/drivers/net/can/vcan.c b/drivers/net/can/vcan.c
49573 index 674f367..ec3a31f 100644
49574 --- a/drivers/net/can/vcan.c
49575 +++ b/drivers/net/can/vcan.c
49576 @@ -163,7 +163,7 @@ static void vcan_setup(struct net_device *dev)
49577 dev->destructor = free_netdev;
49578 }
49579
49580 -static struct rtnl_link_ops vcan_link_ops __read_mostly = {
49581 +static struct rtnl_link_ops vcan_link_ops = {
49582 .kind = "vcan",
49583 .setup = vcan_setup,
49584 };
49585 diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
49586 index 49adbf1..fff7ff8 100644
49587 --- a/drivers/net/dummy.c
49588 +++ b/drivers/net/dummy.c
49589 @@ -164,7 +164,7 @@ static int dummy_validate(struct nlattr *tb[], struct nlattr *data[])
49590 return 0;
49591 }
49592
49593 -static struct rtnl_link_ops dummy_link_ops __read_mostly = {
49594 +static struct rtnl_link_ops dummy_link_ops = {
49595 .kind = DRV_NAME,
49596 .setup = dummy_setup,
49597 .validate = dummy_validate,
49598 diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
49599 index 0443654..4f0aa18 100644
49600 --- a/drivers/net/ethernet/8390/ax88796.c
49601 +++ b/drivers/net/ethernet/8390/ax88796.c
49602 @@ -889,9 +889,11 @@ static int ax_probe(struct platform_device *pdev)
49603 if (ax->plat->reg_offsets)
49604 ei_local->reg_offset = ax->plat->reg_offsets;
49605 else {
49606 + resource_size_t _mem_size = mem_size;
49607 + do_div(_mem_size, 0x18);
49608 ei_local->reg_offset = ax->reg_offsets;
49609 for (ret = 0; ret < 0x18; ret++)
49610 - ax->reg_offsets[ret] = (mem_size / 0x18) * ret;
49611 + ax->reg_offsets[ret] = _mem_size * ret;
49612 }
49613
49614 if (!request_mem_region(mem->start, mem_size, pdev->name)) {
49615 diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
49616 index 8207877..ce13e99 100644
49617 --- a/drivers/net/ethernet/altera/altera_tse_main.c
49618 +++ b/drivers/net/ethernet/altera/altera_tse_main.c
49619 @@ -1255,7 +1255,7 @@ static int tse_shutdown(struct net_device *dev)
49620 return 0;
49621 }
49622
49623 -static struct net_device_ops altera_tse_netdev_ops = {
49624 +static net_device_ops_no_const altera_tse_netdev_ops __read_only = {
49625 .ndo_open = tse_open,
49626 .ndo_stop = tse_shutdown,
49627 .ndo_start_xmit = tse_start_xmit,
49628 @@ -1492,11 +1492,13 @@ static int altera_tse_probe(struct platform_device *pdev)
49629 ndev->netdev_ops = &altera_tse_netdev_ops;
49630 altera_tse_set_ethtool_ops(ndev);
49631
49632 + pax_open_kernel();
49633 altera_tse_netdev_ops.ndo_set_rx_mode = tse_set_rx_mode;
49634
49635 if (priv->hash_filter)
49636 altera_tse_netdev_ops.ndo_set_rx_mode =
49637 tse_set_rx_mode_hashfilter;
49638 + pax_close_kernel();
49639
49640 /* Scatter/gather IO is not supported,
49641 * so it is turned off
49642 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
49643 index b6fa891..31ef157 100644
49644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h
49645 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
49646 @@ -1279,14 +1279,14 @@ do { \
49647 * operations, everything works on mask values.
49648 */
49649 #define XMDIO_READ(_pdata, _mmd, _reg) \
49650 - ((_pdata)->hw_if.read_mmd_regs((_pdata), 0, \
49651 + ((_pdata)->hw_if->read_mmd_regs((_pdata), 0, \
49652 MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff)))
49653
49654 #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask) \
49655 (XMDIO_READ((_pdata), _mmd, _reg) & _mask)
49656
49657 #define XMDIO_WRITE(_pdata, _mmd, _reg, _val) \
49658 - ((_pdata)->hw_if.write_mmd_regs((_pdata), 0, \
49659 + ((_pdata)->hw_if->write_mmd_regs((_pdata), 0, \
49660 MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff), (_val)))
49661
49662 #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val) \
49663 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c b/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
49664 index a6b9899..2e5e972 100644
49665 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
49666 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
49667 @@ -190,7 +190,7 @@ static int xgbe_dcb_ieee_setets(struct net_device *netdev,
49668
49669 memcpy(pdata->ets, ets, sizeof(*pdata->ets));
49670
49671 - pdata->hw_if.config_dcb_tc(pdata);
49672 + pdata->hw_if->config_dcb_tc(pdata);
49673
49674 return 0;
49675 }
49676 @@ -230,7 +230,7 @@ static int xgbe_dcb_ieee_setpfc(struct net_device *netdev,
49677
49678 memcpy(pdata->pfc, pfc, sizeof(*pdata->pfc));
49679
49680 - pdata->hw_if.config_dcb_pfc(pdata);
49681 + pdata->hw_if->config_dcb_pfc(pdata);
49682
49683 return 0;
49684 }
49685 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
49686 index b3bc87f..5bdfdd3 100644
49687 --- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
49688 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
49689 @@ -353,7 +353,7 @@ static int xgbe_map_rx_buffer(struct xgbe_prv_data *pdata,
49690
49691 static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
49692 {
49693 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49694 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49695 struct xgbe_channel *channel;
49696 struct xgbe_ring *ring;
49697 struct xgbe_ring_data *rdata;
49698 @@ -394,7 +394,7 @@ static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
49699
49700 static void xgbe_wrapper_rx_descriptor_init(struct xgbe_prv_data *pdata)
49701 {
49702 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49703 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49704 struct xgbe_channel *channel;
49705 struct xgbe_ring *ring;
49706 struct xgbe_ring_desc *rdesc;
49707 @@ -628,17 +628,12 @@ err_out:
49708 return 0;
49709 }
49710
49711 -void xgbe_init_function_ptrs_desc(struct xgbe_desc_if *desc_if)
49712 -{
49713 - DBGPR("-->xgbe_init_function_ptrs_desc\n");
49714 -
49715 - desc_if->alloc_ring_resources = xgbe_alloc_ring_resources;
49716 - desc_if->free_ring_resources = xgbe_free_ring_resources;
49717 - desc_if->map_tx_skb = xgbe_map_tx_skb;
49718 - desc_if->map_rx_buffer = xgbe_map_rx_buffer;
49719 - desc_if->unmap_rdata = xgbe_unmap_rdata;
49720 - desc_if->wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init;
49721 - desc_if->wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init;
49722 -
49723 - DBGPR("<--xgbe_init_function_ptrs_desc\n");
49724 -}
49725 +const struct xgbe_desc_if default_xgbe_desc_if = {
49726 + .alloc_ring_resources = xgbe_alloc_ring_resources,
49727 + .free_ring_resources = xgbe_free_ring_resources,
49728 + .map_tx_skb = xgbe_map_tx_skb,
49729 + .map_rx_buffer = xgbe_map_rx_buffer,
49730 + .unmap_rdata = xgbe_unmap_rdata,
49731 + .wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init,
49732 + .wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init,
49733 +};
49734 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
49735 index a4473d8..039a2ab 100644
49736 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
49737 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
49738 @@ -2776,7 +2776,7 @@ static void xgbe_powerdown_rx(struct xgbe_prv_data *pdata)
49739
49740 static int xgbe_init(struct xgbe_prv_data *pdata)
49741 {
49742 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
49743 + struct xgbe_desc_if *desc_if = pdata->desc_if;
49744 int ret;
49745
49746 DBGPR("-->xgbe_init\n");
49747 @@ -2842,106 +2842,101 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
49748 return 0;
49749 }
49750
49751 -void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
49752 -{
49753 - DBGPR("-->xgbe_init_function_ptrs\n");
49754 -
49755 - hw_if->tx_complete = xgbe_tx_complete;
49756 -
49757 - hw_if->set_mac_address = xgbe_set_mac_address;
49758 - hw_if->config_rx_mode = xgbe_config_rx_mode;
49759 -
49760 - hw_if->enable_rx_csum = xgbe_enable_rx_csum;
49761 - hw_if->disable_rx_csum = xgbe_disable_rx_csum;
49762 -
49763 - hw_if->enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping;
49764 - hw_if->disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping;
49765 - hw_if->enable_rx_vlan_filtering = xgbe_enable_rx_vlan_filtering;
49766 - hw_if->disable_rx_vlan_filtering = xgbe_disable_rx_vlan_filtering;
49767 - hw_if->update_vlan_hash_table = xgbe_update_vlan_hash_table;
49768 -
49769 - hw_if->read_mmd_regs = xgbe_read_mmd_regs;
49770 - hw_if->write_mmd_regs = xgbe_write_mmd_regs;
49771 -
49772 - hw_if->set_gmii_speed = xgbe_set_gmii_speed;
49773 - hw_if->set_gmii_2500_speed = xgbe_set_gmii_2500_speed;
49774 - hw_if->set_xgmii_speed = xgbe_set_xgmii_speed;
49775 -
49776 - hw_if->enable_tx = xgbe_enable_tx;
49777 - hw_if->disable_tx = xgbe_disable_tx;
49778 - hw_if->enable_rx = xgbe_enable_rx;
49779 - hw_if->disable_rx = xgbe_disable_rx;
49780 -
49781 - hw_if->powerup_tx = xgbe_powerup_tx;
49782 - hw_if->powerdown_tx = xgbe_powerdown_tx;
49783 - hw_if->powerup_rx = xgbe_powerup_rx;
49784 - hw_if->powerdown_rx = xgbe_powerdown_rx;
49785 -
49786 - hw_if->dev_xmit = xgbe_dev_xmit;
49787 - hw_if->dev_read = xgbe_dev_read;
49788 - hw_if->enable_int = xgbe_enable_int;
49789 - hw_if->disable_int = xgbe_disable_int;
49790 - hw_if->init = xgbe_init;
49791 - hw_if->exit = xgbe_exit;
49792 +const struct xgbe_hw_if default_xgbe_hw_if = {
49793 + .tx_complete = xgbe_tx_complete,
49794 +
49795 + .set_mac_address = xgbe_set_mac_address,
49796 + .config_rx_mode = xgbe_config_rx_mode,
49797 +
49798 + .enable_rx_csum = xgbe_enable_rx_csum,
49799 + .disable_rx_csum = xgbe_disable_rx_csum,
49800 +
49801 + .enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping,
49802 + .disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping,
49803 + .enable_rx_vlan_filtering = xgbe_enable_rx_vlan_filtering,
49804 + .disable_rx_vlan_filtering = xgbe_disable_rx_vlan_filtering,
49805 + .update_vlan_hash_table = xgbe_update_vlan_hash_table,
49806 +
49807 + .read_mmd_regs = xgbe_read_mmd_regs,
49808 + .write_mmd_regs = xgbe_write_mmd_regs,
49809 +
49810 + .set_gmii_speed = xgbe_set_gmii_speed,
49811 + .set_gmii_2500_speed = xgbe_set_gmii_2500_speed,
49812 + .set_xgmii_speed = xgbe_set_xgmii_speed,
49813 +
49814 + .enable_tx = xgbe_enable_tx,
49815 + .disable_tx = xgbe_disable_tx,
49816 + .enable_rx = xgbe_enable_rx,
49817 + .disable_rx = xgbe_disable_rx,
49818 +
49819 + .powerup_tx = xgbe_powerup_tx,
49820 + .powerdown_tx = xgbe_powerdown_tx,
49821 + .powerup_rx = xgbe_powerup_rx,
49822 + .powerdown_rx = xgbe_powerdown_rx,
49823 +
49824 + .dev_xmit = xgbe_dev_xmit,
49825 + .dev_read = xgbe_dev_read,
49826 + .enable_int = xgbe_enable_int,
49827 + .disable_int = xgbe_disable_int,
49828 + .init = xgbe_init,
49829 + .exit = xgbe_exit,
49830
49831 /* Descriptor related Sequences have to be initialized here */
49832 - hw_if->tx_desc_init = xgbe_tx_desc_init;
49833 - hw_if->rx_desc_init = xgbe_rx_desc_init;
49834 - hw_if->tx_desc_reset = xgbe_tx_desc_reset;
49835 - hw_if->rx_desc_reset = xgbe_rx_desc_reset;
49836 - hw_if->is_last_desc = xgbe_is_last_desc;
49837 - hw_if->is_context_desc = xgbe_is_context_desc;
49838 - hw_if->tx_start_xmit = xgbe_tx_start_xmit;
49839 + .tx_desc_init = xgbe_tx_desc_init,
49840 + .rx_desc_init = xgbe_rx_desc_init,
49841 + .tx_desc_reset = xgbe_tx_desc_reset,
49842 + .rx_desc_reset = xgbe_rx_desc_reset,
49843 + .is_last_desc = xgbe_is_last_desc,
49844 + .is_context_desc = xgbe_is_context_desc,
49845 + .tx_start_xmit = xgbe_tx_start_xmit,
49846
49847 /* For FLOW ctrl */
49848 - hw_if->config_tx_flow_control = xgbe_config_tx_flow_control;
49849 - hw_if->config_rx_flow_control = xgbe_config_rx_flow_control;
49850 + .config_tx_flow_control = xgbe_config_tx_flow_control,
49851 + .config_rx_flow_control = xgbe_config_rx_flow_control,
49852
49853 /* For RX coalescing */
49854 - hw_if->config_rx_coalesce = xgbe_config_rx_coalesce;
49855 - hw_if->config_tx_coalesce = xgbe_config_tx_coalesce;
49856 - hw_if->usec_to_riwt = xgbe_usec_to_riwt;
49857 - hw_if->riwt_to_usec = xgbe_riwt_to_usec;
49858 + .config_rx_coalesce = xgbe_config_rx_coalesce,
49859 + .config_tx_coalesce = xgbe_config_tx_coalesce,
49860 + .usec_to_riwt = xgbe_usec_to_riwt,
49861 + .riwt_to_usec = xgbe_riwt_to_usec,
49862
49863 /* For RX and TX threshold config */
49864 - hw_if->config_rx_threshold = xgbe_config_rx_threshold;
49865 - hw_if->config_tx_threshold = xgbe_config_tx_threshold;
49866 + .config_rx_threshold = xgbe_config_rx_threshold,
49867 + .config_tx_threshold = xgbe_config_tx_threshold,
49868
49869 /* For RX and TX Store and Forward Mode config */
49870 - hw_if->config_rsf_mode = xgbe_config_rsf_mode;
49871 - hw_if->config_tsf_mode = xgbe_config_tsf_mode;
49872 + .config_rsf_mode = xgbe_config_rsf_mode,
49873 + .config_tsf_mode = xgbe_config_tsf_mode,
49874
49875 /* For TX DMA Operating on Second Frame config */
49876 - hw_if->config_osp_mode = xgbe_config_osp_mode;
49877 + .config_osp_mode = xgbe_config_osp_mode,
49878
49879 /* For RX and TX PBL config */
49880 - hw_if->config_rx_pbl_val = xgbe_config_rx_pbl_val;
49881 - hw_if->get_rx_pbl_val = xgbe_get_rx_pbl_val;
49882 - hw_if->config_tx_pbl_val = xgbe_config_tx_pbl_val;
49883 - hw_if->get_tx_pbl_val = xgbe_get_tx_pbl_val;
49884 - hw_if->config_pblx8 = xgbe_config_pblx8;
49885 + .config_rx_pbl_val = xgbe_config_rx_pbl_val,
49886 + .get_rx_pbl_val = xgbe_get_rx_pbl_val,
49887 + .config_tx_pbl_val = xgbe_config_tx_pbl_val,
49888 + .get_tx_pbl_val = xgbe_get_tx_pbl_val,
49889 + .config_pblx8 = xgbe_config_pblx8,
49890
49891 /* For MMC statistics support */
49892 - hw_if->tx_mmc_int = xgbe_tx_mmc_int;
49893 - hw_if->rx_mmc_int = xgbe_rx_mmc_int;
49894 - hw_if->read_mmc_stats = xgbe_read_mmc_stats;
49895 + .tx_mmc_int = xgbe_tx_mmc_int,
49896 + .rx_mmc_int = xgbe_rx_mmc_int,
49897 + .read_mmc_stats = xgbe_read_mmc_stats,
49898
49899 /* For PTP config */
49900 - hw_if->config_tstamp = xgbe_config_tstamp;
49901 - hw_if->update_tstamp_addend = xgbe_update_tstamp_addend;
49902 - hw_if->set_tstamp_time = xgbe_set_tstamp_time;
49903 - hw_if->get_tstamp_time = xgbe_get_tstamp_time;
49904 - hw_if->get_tx_tstamp = xgbe_get_tx_tstamp;
49905 + .config_tstamp = xgbe_config_tstamp,
49906 + .update_tstamp_addend = xgbe_update_tstamp_addend,
49907 + .set_tstamp_time = xgbe_set_tstamp_time,
49908 + .get_tstamp_time = xgbe_get_tstamp_time,
49909 + .get_tx_tstamp = xgbe_get_tx_tstamp,
49910
49911 /* For Data Center Bridging config */
49912 - hw_if->config_dcb_tc = xgbe_config_dcb_tc;
49913 - hw_if->config_dcb_pfc = xgbe_config_dcb_pfc;
49914 + .config_dcb_tc = xgbe_config_dcb_tc,
49915 + .config_dcb_pfc = xgbe_config_dcb_pfc,
49916
49917 /* For Receive Side Scaling */
49918 - hw_if->enable_rss = xgbe_enable_rss;
49919 - hw_if->disable_rss = xgbe_disable_rss;
49920 - hw_if->set_rss_hash_key = xgbe_set_rss_hash_key;
49921 - hw_if->set_rss_lookup_table = xgbe_set_rss_lookup_table;
49922 -
49923 - DBGPR("<--xgbe_init_function_ptrs\n");
49924 -}
49925 + .enable_rss = xgbe_enable_rss,
49926 + .disable_rss = xgbe_disable_rss,
49927 + .set_rss_hash_key = xgbe_set_rss_hash_key,
49928 + .set_rss_lookup_table = xgbe_set_rss_lookup_table,
49929 +};
49930 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
49931 index aae9d5e..29ce58d 100644
49932 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
49933 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
49934 @@ -245,7 +245,7 @@ static int xgbe_maybe_stop_tx_queue(struct xgbe_channel *channel,
49935 * support, tell it now
49936 */
49937 if (ring->tx.xmit_more)
49938 - pdata->hw_if.tx_start_xmit(channel, ring);
49939 + pdata->hw_if->tx_start_xmit(channel, ring);
49940
49941 return NETDEV_TX_BUSY;
49942 }
49943 @@ -273,7 +273,7 @@ static int xgbe_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu)
49944
49945 static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
49946 {
49947 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49948 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49949 struct xgbe_channel *channel;
49950 enum xgbe_int int_id;
49951 unsigned int i;
49952 @@ -295,7 +295,7 @@ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
49953
49954 static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
49955 {
49956 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49957 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49958 struct xgbe_channel *channel;
49959 enum xgbe_int int_id;
49960 unsigned int i;
49961 @@ -318,7 +318,7 @@ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
49962 static irqreturn_t xgbe_isr(int irq, void *data)
49963 {
49964 struct xgbe_prv_data *pdata = data;
49965 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49966 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49967 struct xgbe_channel *channel;
49968 unsigned int dma_isr, dma_ch_isr;
49969 unsigned int mac_isr, mac_tssr;
49970 @@ -443,7 +443,7 @@ static void xgbe_service(struct work_struct *work)
49971 struct xgbe_prv_data,
49972 service_work);
49973
49974 - pdata->phy_if.phy_status(pdata);
49975 + pdata->phy_if->phy_status(pdata);
49976 }
49977
49978 static void xgbe_service_timer(unsigned long data)
49979 @@ -702,7 +702,7 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata)
49980
49981 void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
49982 {
49983 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49984 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49985
49986 DBGPR("-->xgbe_init_tx_coalesce\n");
49987
49988 @@ -716,7 +716,7 @@ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
49989
49990 void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
49991 {
49992 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
49993 + struct xgbe_hw_if *hw_if = pdata->hw_if;
49994
49995 DBGPR("-->xgbe_init_rx_coalesce\n");
49996
49997 @@ -731,7 +731,7 @@ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
49998
49999 static void xgbe_free_tx_data(struct xgbe_prv_data *pdata)
50000 {
50001 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50002 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50003 struct xgbe_channel *channel;
50004 struct xgbe_ring *ring;
50005 struct xgbe_ring_data *rdata;
50006 @@ -756,7 +756,7 @@ static void xgbe_free_tx_data(struct xgbe_prv_data *pdata)
50007
50008 static void xgbe_free_rx_data(struct xgbe_prv_data *pdata)
50009 {
50010 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50011 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50012 struct xgbe_channel *channel;
50013 struct xgbe_ring *ring;
50014 struct xgbe_ring_data *rdata;
50015 @@ -784,13 +784,13 @@ static int xgbe_phy_init(struct xgbe_prv_data *pdata)
50016 pdata->phy_link = -1;
50017 pdata->phy_speed = SPEED_UNKNOWN;
50018
50019 - return pdata->phy_if.phy_reset(pdata);
50020 + return pdata->phy_if->phy_reset(pdata);
50021 }
50022
50023 int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
50024 {
50025 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50026 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50027 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50028 unsigned long flags;
50029
50030 DBGPR("-->xgbe_powerdown\n");
50031 @@ -829,7 +829,7 @@ int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
50032 int xgbe_powerup(struct net_device *netdev, unsigned int caller)
50033 {
50034 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50035 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50036 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50037 unsigned long flags;
50038
50039 DBGPR("-->xgbe_powerup\n");
50040 @@ -866,8 +866,8 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller)
50041
50042 static int xgbe_start(struct xgbe_prv_data *pdata)
50043 {
50044 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50045 - struct xgbe_phy_if *phy_if = &pdata->phy_if;
50046 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50047 + struct xgbe_phy_if *phy_if = pdata->phy_if;
50048 struct net_device *netdev = pdata->netdev;
50049 int ret;
50050
50051 @@ -910,8 +910,8 @@ err_phy:
50052
50053 static void xgbe_stop(struct xgbe_prv_data *pdata)
50054 {
50055 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50056 - struct xgbe_phy_if *phy_if = &pdata->phy_if;
50057 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50058 + struct xgbe_phy_if *phy_if = pdata->phy_if;
50059 struct xgbe_channel *channel;
50060 struct net_device *netdev = pdata->netdev;
50061 struct netdev_queue *txq;
50062 @@ -1139,7 +1139,7 @@ static int xgbe_set_hwtstamp_settings(struct xgbe_prv_data *pdata,
50063 return -ERANGE;
50064 }
50065
50066 - pdata->hw_if.config_tstamp(pdata, mac_tscr);
50067 + pdata->hw_if->config_tstamp(pdata, mac_tscr);
50068
50069 memcpy(&pdata->tstamp_config, &config, sizeof(config));
50070
50071 @@ -1288,7 +1288,7 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata,
50072 static int xgbe_open(struct net_device *netdev)
50073 {
50074 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50075 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50076 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50077 int ret;
50078
50079 DBGPR("-->xgbe_open\n");
50080 @@ -1360,7 +1360,7 @@ err_sysclk:
50081 static int xgbe_close(struct net_device *netdev)
50082 {
50083 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50084 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50085 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50086
50087 DBGPR("-->xgbe_close\n");
50088
50089 @@ -1387,8 +1387,8 @@ static int xgbe_close(struct net_device *netdev)
50090 static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
50091 {
50092 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50093 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50094 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50095 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50096 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50097 struct xgbe_channel *channel;
50098 struct xgbe_ring *ring;
50099 struct xgbe_packet_data *packet;
50100 @@ -1457,7 +1457,7 @@ tx_netdev_return:
50101 static void xgbe_set_rx_mode(struct net_device *netdev)
50102 {
50103 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50104 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50105 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50106
50107 DBGPR("-->xgbe_set_rx_mode\n");
50108
50109 @@ -1469,7 +1469,7 @@ static void xgbe_set_rx_mode(struct net_device *netdev)
50110 static int xgbe_set_mac_address(struct net_device *netdev, void *addr)
50111 {
50112 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50113 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50114 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50115 struct sockaddr *saddr = addr;
50116
50117 DBGPR("-->xgbe_set_mac_address\n");
50118 @@ -1544,7 +1544,7 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev,
50119
50120 DBGPR("-->%s\n", __func__);
50121
50122 - pdata->hw_if.read_mmc_stats(pdata);
50123 + pdata->hw_if->read_mmc_stats(pdata);
50124
50125 s->rx_packets = pstats->rxframecount_gb;
50126 s->rx_bytes = pstats->rxoctetcount_gb;
50127 @@ -1571,7 +1571,7 @@ static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto,
50128 u16 vid)
50129 {
50130 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50131 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50132 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50133
50134 DBGPR("-->%s\n", __func__);
50135
50136 @@ -1587,7 +1587,7 @@ static int xgbe_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto,
50137 u16 vid)
50138 {
50139 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50140 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50141 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50142
50143 DBGPR("-->%s\n", __func__);
50144
50145 @@ -1654,7 +1654,7 @@ static int xgbe_set_features(struct net_device *netdev,
50146 netdev_features_t features)
50147 {
50148 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50149 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50150 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50151 netdev_features_t rxhash, rxcsum, rxvlan, rxvlan_filter;
50152 int ret = 0;
50153
50154 @@ -1720,8 +1720,8 @@ struct net_device_ops *xgbe_get_netdev_ops(void)
50155 static void xgbe_rx_refresh(struct xgbe_channel *channel)
50156 {
50157 struct xgbe_prv_data *pdata = channel->pdata;
50158 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50159 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50160 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50161 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50162 struct xgbe_ring *ring = channel->rx_ring;
50163 struct xgbe_ring_data *rdata;
50164
50165 @@ -1798,8 +1798,8 @@ static struct sk_buff *xgbe_create_skb(struct xgbe_prv_data *pdata,
50166 static int xgbe_tx_poll(struct xgbe_channel *channel)
50167 {
50168 struct xgbe_prv_data *pdata = channel->pdata;
50169 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50170 - struct xgbe_desc_if *desc_if = &pdata->desc_if;
50171 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50172 + struct xgbe_desc_if *desc_if = pdata->desc_if;
50173 struct xgbe_ring *ring = channel->tx_ring;
50174 struct xgbe_ring_data *rdata;
50175 struct xgbe_ring_desc *rdesc;
50176 @@ -1863,7 +1863,7 @@ static int xgbe_tx_poll(struct xgbe_channel *channel)
50177 static int xgbe_rx_poll(struct xgbe_channel *channel, int budget)
50178 {
50179 struct xgbe_prv_data *pdata = channel->pdata;
50180 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50181 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50182 struct xgbe_ring *ring = channel->rx_ring;
50183 struct xgbe_ring_data *rdata;
50184 struct xgbe_packet_data *packet;
50185 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
50186 index 59e090e..90bc0b4 100644
50187 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
50188 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
50189 @@ -211,7 +211,7 @@ static void xgbe_get_ethtool_stats(struct net_device *netdev,
50190
50191 DBGPR("-->%s\n", __func__);
50192
50193 - pdata->hw_if.read_mmc_stats(pdata);
50194 + pdata->hw_if->read_mmc_stats(pdata);
50195 for (i = 0; i < XGBE_STATS_COUNT; i++) {
50196 stat = (u8 *)pdata + xgbe_gstring_stats[i].stat_offset;
50197 *data++ = *(u64 *)stat;
50198 @@ -284,7 +284,7 @@ static int xgbe_set_pauseparam(struct net_device *netdev,
50199 pdata->phy.advertising ^= ADVERTISED_Asym_Pause;
50200
50201 if (netif_running(netdev))
50202 - ret = pdata->phy_if.phy_config_aneg(pdata);
50203 + ret = pdata->phy_if->phy_config_aneg(pdata);
50204
50205 DBGPR("<--xgbe_set_pauseparam\n");
50206
50207 @@ -364,7 +364,7 @@ static int xgbe_set_settings(struct net_device *netdev,
50208 pdata->phy.advertising &= ~ADVERTISED_Autoneg;
50209
50210 if (netif_running(netdev))
50211 - ret = pdata->phy_if.phy_config_aneg(pdata);
50212 + ret = pdata->phy_if->phy_config_aneg(pdata);
50213
50214 DBGPR("<--xgbe_set_settings\n");
50215
50216 @@ -411,7 +411,7 @@ static int xgbe_set_coalesce(struct net_device *netdev,
50217 struct ethtool_coalesce *ec)
50218 {
50219 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50220 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50221 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50222 unsigned int rx_frames, rx_riwt, rx_usecs;
50223 unsigned int tx_frames;
50224
50225 @@ -536,7 +536,7 @@ static int xgbe_set_rxfh(struct net_device *netdev, const u32 *indir,
50226 const u8 *key, const u8 hfunc)
50227 {
50228 struct xgbe_prv_data *pdata = netdev_priv(netdev);
50229 - struct xgbe_hw_if *hw_if = &pdata->hw_if;
50230 + struct xgbe_hw_if *hw_if = pdata->hw_if;
50231 unsigned int ret;
50232
50233 if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
50234 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
50235 index e83bd76..f2d5d56 100644
50236 --- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c
50237 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
50238 @@ -202,13 +202,6 @@ static void xgbe_default_config(struct xgbe_prv_data *pdata)
50239 DBGPR("<--xgbe_default_config\n");
50240 }
50241
50242 -static void xgbe_init_all_fptrs(struct xgbe_prv_data *pdata)
50243 -{
50244 - xgbe_init_function_ptrs_dev(&pdata->hw_if);
50245 - xgbe_init_function_ptrs_phy(&pdata->phy_if);
50246 - xgbe_init_function_ptrs_desc(&pdata->desc_if);
50247 -}
50248 -
50249 #ifdef CONFIG_ACPI
50250 static int xgbe_acpi_support(struct xgbe_prv_data *pdata)
50251 {
50252 @@ -641,10 +634,12 @@ static int xgbe_probe(struct platform_device *pdev)
50253 memcpy(netdev->dev_addr, pdata->mac_addr, netdev->addr_len);
50254
50255 /* Set all the function pointers */
50256 - xgbe_init_all_fptrs(pdata);
50257 + pdata->hw_if = &default_xgbe_hw_if;
50258 + pdata->phy_if = &default_xgbe_phy_if;
50259 + pdata->desc_if = &default_xgbe_desc_if;
50260
50261 /* Issue software reset to device */
50262 - pdata->hw_if.exit(pdata);
50263 + pdata->hw_if->exit(pdata);
50264
50265 /* Populate the hardware features */
50266 xgbe_get_all_hw_features(pdata);
50267 @@ -698,7 +693,7 @@ static int xgbe_probe(struct platform_device *pdev)
50268 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1);
50269
50270 /* Call MDIO/PHY initialization routine */
50271 - pdata->phy_if.phy_init(pdata);
50272 + pdata->phy_if->phy_init(pdata);
50273
50274 /* Set device operations */
50275 netdev->netdev_ops = xgbe_get_netdev_ops();
50276 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
50277 index 9088c3a..2ffe7c4 100644
50278 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
50279 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
50280 @@ -202,7 +202,7 @@ static void xgbe_xgmii_mode(struct xgbe_prv_data *pdata)
50281 xgbe_an_enable_kr_training(pdata);
50282
50283 /* Set MAC to 10G speed */
50284 - pdata->hw_if.set_xgmii_speed(pdata);
50285 + pdata->hw_if->set_xgmii_speed(pdata);
50286
50287 /* Set PCS to KR/10G speed */
50288 reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);
50289 @@ -250,7 +250,7 @@ static void xgbe_gmii_2500_mode(struct xgbe_prv_data *pdata)
50290 xgbe_an_disable_kr_training(pdata);
50291
50292 /* Set MAC to 2.5G speed */
50293 - pdata->hw_if.set_gmii_2500_speed(pdata);
50294 + pdata->hw_if->set_gmii_2500_speed(pdata);
50295
50296 /* Set PCS to KX/1G speed */
50297 reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);
50298 @@ -298,7 +298,7 @@ static void xgbe_gmii_mode(struct xgbe_prv_data *pdata)
50299 xgbe_an_disable_kr_training(pdata);
50300
50301 /* Set MAC to 1G speed */
50302 - pdata->hw_if.set_gmii_speed(pdata);
50303 + pdata->hw_if->set_gmii_speed(pdata);
50304
50305 /* Set PCS to KX/1G speed */
50306 reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);
50307 @@ -872,13 +872,13 @@ static void xgbe_phy_adjust_link(struct xgbe_prv_data *pdata)
50308
50309 if (pdata->tx_pause != pdata->phy.tx_pause) {
50310 new_state = 1;
50311 - pdata->hw_if.config_tx_flow_control(pdata);
50312 + pdata->hw_if->config_tx_flow_control(pdata);
50313 pdata->tx_pause = pdata->phy.tx_pause;
50314 }
50315
50316 if (pdata->rx_pause != pdata->phy.rx_pause) {
50317 new_state = 1;
50318 - pdata->hw_if.config_rx_flow_control(pdata);
50319 + pdata->hw_if->config_rx_flow_control(pdata);
50320 pdata->rx_pause = pdata->phy.rx_pause;
50321 }
50322
50323 @@ -1351,14 +1351,13 @@ static void xgbe_phy_init(struct xgbe_prv_data *pdata)
50324 xgbe_dump_phy_registers(pdata);
50325 }
50326
50327 -void xgbe_init_function_ptrs_phy(struct xgbe_phy_if *phy_if)
50328 -{
50329 - phy_if->phy_init = xgbe_phy_init;
50330 +const struct xgbe_phy_if default_xgbe_phy_if = {
50331 + .phy_init = xgbe_phy_init,
50332
50333 - phy_if->phy_reset = xgbe_phy_reset;
50334 - phy_if->phy_start = xgbe_phy_start;
50335 - phy_if->phy_stop = xgbe_phy_stop;
50336 + .phy_reset = xgbe_phy_reset,
50337 + .phy_start = xgbe_phy_start,
50338 + .phy_stop = xgbe_phy_stop,
50339
50340 - phy_if->phy_status = xgbe_phy_status;
50341 - phy_if->phy_config_aneg = xgbe_phy_config_aneg;
50342 -}
50343 + .phy_status = xgbe_phy_status,
50344 + .phy_config_aneg = xgbe_phy_config_aneg,
50345 +};
50346 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
50347 index b03e4f5..78e4cc4 100644
50348 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
50349 +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
50350 @@ -129,7 +129,7 @@ static cycle_t xgbe_cc_read(const struct cyclecounter *cc)
50351 tstamp_cc);
50352 u64 nsec;
50353
50354 - nsec = pdata->hw_if.get_tstamp_time(pdata);
50355 + nsec = pdata->hw_if->get_tstamp_time(pdata);
50356
50357 return nsec;
50358 }
50359 @@ -158,7 +158,7 @@ static int xgbe_adjfreq(struct ptp_clock_info *info, s32 delta)
50360
50361 spin_lock_irqsave(&pdata->tstamp_lock, flags);
50362
50363 - pdata->hw_if.update_tstamp_addend(pdata, addend);
50364 + pdata->hw_if->update_tstamp_addend(pdata, addend);
50365
50366 spin_unlock_irqrestore(&pdata->tstamp_lock, flags);
50367
50368 diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h
50369 index 717ce21..aacd1f3 100644
50370 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h
50371 +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h
50372 @@ -801,9 +801,9 @@ struct xgbe_prv_data {
50373 int dev_irq;
50374 unsigned int per_channel_irq;
50375
50376 - struct xgbe_hw_if hw_if;
50377 - struct xgbe_phy_if phy_if;
50378 - struct xgbe_desc_if desc_if;
50379 + struct xgbe_hw_if *hw_if;
50380 + struct xgbe_phy_if *phy_if;
50381 + struct xgbe_desc_if *desc_if;
50382
50383 /* AXI DMA settings */
50384 unsigned int coherent;
50385 @@ -964,6 +964,10 @@ struct xgbe_prv_data {
50386 #endif
50387 };
50388
50389 +extern const struct xgbe_hw_if default_xgbe_hw_if;
50390 +extern const struct xgbe_phy_if default_xgbe_phy_if;
50391 +extern const struct xgbe_desc_if default_xgbe_desc_if;
50392 +
50393 /* Function prototypes*/
50394
50395 void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *);
50396 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
50397 index 03b7404..01ff3b3 100644
50398 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
50399 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
50400 @@ -1082,7 +1082,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp)
50401 static inline void bnx2x_init_bp_objs(struct bnx2x *bp)
50402 {
50403 /* RX_MODE controlling object */
50404 - bnx2x_init_rx_mode_obj(bp, &bp->rx_mode_obj);
50405 + bnx2x_init_rx_mode_obj(bp);
50406
50407 /* multicast configuration controlling object */
50408 bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid,
50409 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
50410 index 4ad415a..8e0a040 100644
50411 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
50412 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
50413 @@ -2329,15 +2329,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp,
50414 return rc;
50415 }
50416
50417 -void bnx2x_init_rx_mode_obj(struct bnx2x *bp,
50418 - struct bnx2x_rx_mode_obj *o)
50419 +void bnx2x_init_rx_mode_obj(struct bnx2x *bp)
50420 {
50421 if (CHIP_IS_E1x(bp)) {
50422 - o->wait_comp = bnx2x_empty_rx_mode_wait;
50423 - o->config_rx_mode = bnx2x_set_rx_mode_e1x;
50424 + bp->rx_mode_obj.wait_comp = bnx2x_empty_rx_mode_wait;
50425 + bp->rx_mode_obj.config_rx_mode = bnx2x_set_rx_mode_e1x;
50426 } else {
50427 - o->wait_comp = bnx2x_wait_rx_mode_comp_e2;
50428 - o->config_rx_mode = bnx2x_set_rx_mode_e2;
50429 + bp->rx_mode_obj.wait_comp = bnx2x_wait_rx_mode_comp_e2;
50430 + bp->rx_mode_obj.config_rx_mode = bnx2x_set_rx_mode_e2;
50431 }
50432 }
50433
50434 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
50435 index 86baecb..ff3bb46 100644
50436 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
50437 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
50438 @@ -1411,8 +1411,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp,
50439
50440 /********************* RX MODE ****************/
50441
50442 -void bnx2x_init_rx_mode_obj(struct bnx2x *bp,
50443 - struct bnx2x_rx_mode_obj *o);
50444 +void bnx2x_init_rx_mode_obj(struct bnx2x *bp);
50445
50446 /**
50447 * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters.
50448 diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
50449 index 31c9f82..e65e986 100644
50450 --- a/drivers/net/ethernet/broadcom/tg3.h
50451 +++ b/drivers/net/ethernet/broadcom/tg3.h
50452 @@ -150,6 +150,7 @@
50453 #define CHIPREV_ID_5750_A0 0x4000
50454 #define CHIPREV_ID_5750_A1 0x4001
50455 #define CHIPREV_ID_5750_A3 0x4003
50456 +#define CHIPREV_ID_5750_C1 0x4201
50457 #define CHIPREV_ID_5750_C2 0x4202
50458 #define CHIPREV_ID_5752_A0_HW 0x5000
50459 #define CHIPREV_ID_5752_A0 0x6000
50460 diff --git a/drivers/net/ethernet/brocade/bna/bna_enet.c b/drivers/net/ethernet/brocade/bna/bna_enet.c
50461 index 4e5c387..bba8173 100644
50462 --- a/drivers/net/ethernet/brocade/bna/bna_enet.c
50463 +++ b/drivers/net/ethernet/brocade/bna/bna_enet.c
50464 @@ -1676,10 +1676,10 @@ bna_cb_ioceth_reset(void *arg)
50465 }
50466
50467 static struct bfa_ioc_cbfn bna_ioceth_cbfn = {
50468 - bna_cb_ioceth_enable,
50469 - bna_cb_ioceth_disable,
50470 - bna_cb_ioceth_hbfail,
50471 - bna_cb_ioceth_reset
50472 + .enable_cbfn = bna_cb_ioceth_enable,
50473 + .disable_cbfn = bna_cb_ioceth_disable,
50474 + .hbfail_cbfn = bna_cb_ioceth_hbfail,
50475 + .reset_cbfn = bna_cb_ioceth_reset
50476 };
50477
50478 static void bna_attr_init(struct bna_ioceth *ioceth)
50479 diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
50480 index 29f3308..b594c38 100644
50481 --- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
50482 +++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
50483 @@ -265,9 +265,9 @@ static void octnet_mdio_resp_callback(struct octeon_device *oct,
50484 if (status) {
50485 dev_err(&oct->pci_dev->dev, "MIDO instruction failed. Status: %llx\n",
50486 CVM_CAST64(status));
50487 - ACCESS_ONCE(mdio_cmd_ctx->cond) = -1;
50488 + ACCESS_ONCE_RW(mdio_cmd_ctx->cond) = -1;
50489 } else {
50490 - ACCESS_ONCE(mdio_cmd_ctx->cond) = 1;
50491 + ACCESS_ONCE_RW(mdio_cmd_ctx->cond) = 1;
50492 }
50493 wake_up_interruptible(&mdio_cmd_ctx->wc);
50494 }
50495 @@ -298,7 +298,7 @@ octnet_mdio45_access(struct lio *lio, int op, int loc, int *value)
50496 mdio_cmd_rsp = (struct oct_mdio_cmd_resp *)sc->virtrptr;
50497 mdio_cmd = (struct oct_mdio_cmd *)sc->virtdptr;
50498
50499 - ACCESS_ONCE(mdio_cmd_ctx->cond) = 0;
50500 + ACCESS_ONCE_RW(mdio_cmd_ctx->cond) = 0;
50501 mdio_cmd_ctx->octeon_id = lio_get_device_id(oct_dev);
50502 mdio_cmd->op = op;
50503 mdio_cmd->mdio_addr = loc;
50504 diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c
50505 index 0660dee..e07895e 100644
50506 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c
50507 +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c
50508 @@ -1727,7 +1727,7 @@ static void if_cfg_callback(struct octeon_device *oct,
50509 if (resp->status)
50510 dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n",
50511 CVM_CAST64(resp->status));
50512 - ACCESS_ONCE(ctx->cond) = 1;
50513 + ACCESS_ONCE_RW(ctx->cond) = 1;
50514
50515 /* This barrier is required to be sure that the response has been
50516 * written fully before waking up the handler
50517 @@ -3177,7 +3177,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
50518 dev_dbg(&octeon_dev->pci_dev->dev,
50519 "requesting config for interface %d, iqs %d, oqs %d\n",
50520 i, num_iqueues, num_oqueues);
50521 - ACCESS_ONCE(ctx->cond) = 0;
50522 + ACCESS_ONCE_RW(ctx->cond) = 0;
50523 ctx->octeon_id = lio_get_device_id(octeon_dev);
50524 init_waitqueue_head(&ctx->wc);
50525
50526 @@ -3240,8 +3240,11 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
50527 props = &octeon_dev->props[i];
50528 props->netdev = netdev;
50529
50530 - if (num_iqueues > 1)
50531 - lionetdevops.ndo_select_queue = select_q;
50532 + if (num_iqueues > 1) {
50533 + pax_open_kernel();
50534 + *(void **)&lionetdevops.ndo_select_queue = select_q;
50535 + pax_close_kernel();
50536 + }
50537
50538 /* Associate the routines that will handle different
50539 * netdev tasks.
50540 diff --git a/drivers/net/ethernet/chelsio/cxgb3/l2t.h b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
50541 index 8cffcdf..aadf043 100644
50542 --- a/drivers/net/ethernet/chelsio/cxgb3/l2t.h
50543 +++ b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
50544 @@ -87,7 +87,7 @@ typedef void (*arp_failure_handler_func)(struct t3cdev * dev,
50545 */
50546 struct l2t_skb_cb {
50547 arp_failure_handler_func arp_failure_handler;
50548 -};
50549 +} __no_const;
50550
50551 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
50552
50553 diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
50554 index 8966f31..e15a101 100644
50555 --- a/drivers/net/ethernet/dec/tulip/de4x5.c
50556 +++ b/drivers/net/ethernet/dec/tulip/de4x5.c
50557 @@ -5373,7 +5373,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
50558 for (i=0; i<ETH_ALEN; i++) {
50559 tmp.addr[i] = dev->dev_addr[i];
50560 }
50561 - if (copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
50562 + if (ioc->len > sizeof tmp.addr || copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
50563 break;
50564
50565 case DE4X5_SET_HWADDR: /* Set the hardware address */
50566 @@ -5413,7 +5413,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
50567 spin_lock_irqsave(&lp->lock, flags);
50568 memcpy(&statbuf, &lp->pktStats, ioc->len);
50569 spin_unlock_irqrestore(&lp->lock, flags);
50570 - if (copy_to_user(ioc->data, &statbuf, ioc->len))
50571 + if (ioc->len > sizeof statbuf || copy_to_user(ioc->data, &statbuf, ioc->len))
50572 return -EFAULT;
50573 break;
50574 }
50575 diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
50576 index 6ca693b..fa18c3f 100644
50577 --- a/drivers/net/ethernet/emulex/benet/be_main.c
50578 +++ b/drivers/net/ethernet/emulex/benet/be_main.c
50579 @@ -551,7 +551,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
50580
50581 if (wrapped)
50582 newacc += 65536;
50583 - ACCESS_ONCE(*acc) = newacc;
50584 + ACCESS_ONCE_RW(*acc) = newacc;
50585 }
50586
50587 static void populate_erx_stats(struct be_adapter *adapter,
50588 diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
50589 index 6d0c5d5..55be363 100644
50590 --- a/drivers/net/ethernet/faraday/ftgmac100.c
50591 +++ b/drivers/net/ethernet/faraday/ftgmac100.c
50592 @@ -30,6 +30,8 @@
50593 #include <linux/netdevice.h>
50594 #include <linux/phy.h>
50595 #include <linux/platform_device.h>
50596 +#include <linux/interrupt.h>
50597 +#include <linux/irqreturn.h>
50598 #include <net/ip.h>
50599
50600 #include "ftgmac100.h"
50601 diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
50602 index dce5f7b..2433466 100644
50603 --- a/drivers/net/ethernet/faraday/ftmac100.c
50604 +++ b/drivers/net/ethernet/faraday/ftmac100.c
50605 @@ -31,6 +31,8 @@
50606 #include <linux/module.h>
50607 #include <linux/netdevice.h>
50608 #include <linux/platform_device.h>
50609 +#include <linux/interrupt.h>
50610 +#include <linux/irqreturn.h>
50611
50612 #include "ftmac100.h"
50613
50614 diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
50615 index a92b772..250fe69 100644
50616 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
50617 +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
50618 @@ -419,7 +419,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
50619 wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32);
50620
50621 /* Update the base adjustement value. */
50622 - ACCESS_ONCE(pf->ptp_base_adj) = incval;
50623 + ACCESS_ONCE_RW(pf->ptp_base_adj) = incval;
50624 smp_mb(); /* Force the above update. */
50625 }
50626
50627 diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
50628 index e5ba040..d47531c 100644
50629 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
50630 +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
50631 @@ -782,7 +782,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
50632 }
50633
50634 /* update the base incval used to calculate frequency adjustment */
50635 - ACCESS_ONCE(adapter->base_incval) = incval;
50636 + ACCESS_ONCE_RW(adapter->base_incval) = incval;
50637 smp_mb();
50638
50639 /* need lock to prevent incorrect read while modifying cyclecounter */
50640 diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
50641 index c10d98f..72914c6 100644
50642 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
50643 +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
50644 @@ -475,8 +475,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev,
50645 wmb();
50646
50647 /* we want to dirty this cache line once */
50648 - ACCESS_ONCE(ring->last_nr_txbb) = last_nr_txbb;
50649 - ACCESS_ONCE(ring->cons) = ring_cons + txbbs_skipped;
50650 + ACCESS_ONCE_RW(ring->last_nr_txbb) = last_nr_txbb;
50651 + ACCESS_ONCE_RW(ring->cons) = ring_cons + txbbs_skipped;
50652
50653 netdev_tx_completed_queue(ring->tx_queue, packets, bytes);
50654
50655 diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
50656 index 40206da..9d94643 100644
50657 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
50658 +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
50659 @@ -1734,7 +1734,9 @@ static void mlx5e_build_netdev(struct net_device *netdev)
50660 SET_NETDEV_DEV(netdev, &mdev->pdev->dev);
50661
50662 if (priv->num_tc > 1) {
50663 - mlx5e_netdev_ops.ndo_select_queue = mlx5e_select_queue;
50664 + pax_open_kernel();
50665 + *(void **)&mlx5e_netdev_ops.ndo_select_queue = mlx5e_select_queue;
50666 + pax_close_kernel();
50667 }
50668
50669 netdev->netdev_ops = &mlx5e_netdev_ops;
50670 diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c
50671 index 6223930..975033d 100644
50672 --- a/drivers/net/ethernet/neterion/vxge/vxge-config.c
50673 +++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c
50674 @@ -3457,7 +3457,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
50675 struct __vxge_hw_fifo *fifo;
50676 struct vxge_hw_fifo_config *config;
50677 u32 txdl_size, txdl_per_memblock;
50678 - struct vxge_hw_mempool_cbs fifo_mp_callback;
50679 + static struct vxge_hw_mempool_cbs fifo_mp_callback = {
50680 + .item_func_alloc = __vxge_hw_fifo_mempool_item_alloc,
50681 + };
50682 +
50683 struct __vxge_hw_virtualpath *vpath;
50684
50685 if ((vp == NULL) || (attr == NULL)) {
50686 @@ -3540,8 +3543,6 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
50687 goto exit;
50688 }
50689
50690 - fifo_mp_callback.item_func_alloc = __vxge_hw_fifo_mempool_item_alloc;
50691 -
50692 fifo->mempool =
50693 __vxge_hw_mempool_create(vpath->hldev,
50694 fifo->config->memblock_size,
50695 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
50696 index 753ea8b..674c39a 100644
50697 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
50698 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
50699 @@ -2324,7 +2324,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
50700 max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
50701 } else if (ret == QLC_83XX_DEFAULT_OPMODE) {
50702 ahw->nic_mode = QLCNIC_DEFAULT_MODE;
50703 - adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
50704 + pax_open_kernel();
50705 + *(void **)&adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
50706 + pax_close_kernel();
50707 ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
50708 max_sds_rings = QLCNIC_MAX_SDS_RINGS;
50709 max_tx_rings = QLCNIC_MAX_TX_RINGS;
50710 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
50711 index be7d7a6..a8983f8 100644
50712 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
50713 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
50714 @@ -207,17 +207,23 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter)
50715 case QLCNIC_NON_PRIV_FUNC:
50716 ahw->op_mode = QLCNIC_NON_PRIV_FUNC;
50717 ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
50718 - nic_ops->init_driver = qlcnic_83xx_init_non_privileged_vnic;
50719 + pax_open_kernel();
50720 + *(void **)&nic_ops->init_driver = qlcnic_83xx_init_non_privileged_vnic;
50721 + pax_close_kernel();
50722 break;
50723 case QLCNIC_PRIV_FUNC:
50724 ahw->op_mode = QLCNIC_PRIV_FUNC;
50725 ahw->idc.state_entry = qlcnic_83xx_idc_vnic_pf_entry;
50726 - nic_ops->init_driver = qlcnic_83xx_init_privileged_vnic;
50727 + pax_open_kernel();
50728 + *(void **)&nic_ops->init_driver = qlcnic_83xx_init_privileged_vnic;
50729 + pax_close_kernel();
50730 break;
50731 case QLCNIC_MGMT_FUNC:
50732 ahw->op_mode = QLCNIC_MGMT_FUNC;
50733 ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
50734 - nic_ops->init_driver = qlcnic_83xx_init_mgmt_vnic;
50735 + pax_open_kernel();
50736 + *(void **)&nic_ops->init_driver = qlcnic_83xx_init_mgmt_vnic;
50737 + pax_close_kernel();
50738 break;
50739 default:
50740 dev_err(&adapter->pdev->dev, "Invalid Virtual NIC opmode\n");
50741 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
50742 index 332bb8a..e6adcd1 100644
50743 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
50744 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
50745 @@ -1285,7 +1285,7 @@ flash_temp:
50746 int qlcnic_dump_fw(struct qlcnic_adapter *adapter)
50747 {
50748 struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump;
50749 - static const struct qlcnic_dump_operations *fw_dump_ops;
50750 + const struct qlcnic_dump_operations *fw_dump_ops;
50751 struct qlcnic_83xx_dump_template_hdr *hdr_83xx;
50752 u32 entry_offset, dump, no_entries, buf_offset = 0;
50753 int i, k, ops_cnt, ops_index, dump_size = 0;
50754 diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
50755 index f790f61..f1faafe 100644
50756 --- a/drivers/net/ethernet/realtek/r8169.c
50757 +++ b/drivers/net/ethernet/realtek/r8169.c
50758 @@ -788,22 +788,22 @@ struct rtl8169_private {
50759 struct mdio_ops {
50760 void (*write)(struct rtl8169_private *, int, int);
50761 int (*read)(struct rtl8169_private *, int);
50762 - } mdio_ops;
50763 + } __no_const mdio_ops;
50764
50765 struct pll_power_ops {
50766 void (*down)(struct rtl8169_private *);
50767 void (*up)(struct rtl8169_private *);
50768 - } pll_power_ops;
50769 + } __no_const pll_power_ops;
50770
50771 struct jumbo_ops {
50772 void (*enable)(struct rtl8169_private *);
50773 void (*disable)(struct rtl8169_private *);
50774 - } jumbo_ops;
50775 + } __no_const jumbo_ops;
50776
50777 struct csi_ops {
50778 void (*write)(struct rtl8169_private *, int, int);
50779 u32 (*read)(struct rtl8169_private *, int);
50780 - } csi_ops;
50781 + } __no_const csi_ops;
50782
50783 int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
50784 int (*get_settings)(struct net_device *, struct ethtool_cmd *);
50785 diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c
50786 index ad62615..a4c124d 100644
50787 --- a/drivers/net/ethernet/sfc/ptp.c
50788 +++ b/drivers/net/ethernet/sfc/ptp.c
50789 @@ -832,7 +832,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings)
50790 ptp->start.dma_addr);
50791
50792 /* Clear flag that signals MC ready */
50793 - ACCESS_ONCE(*start) = 0;
50794 + ACCESS_ONCE_RW(*start) = 0;
50795 rc = efx_mcdi_rpc_start(efx, MC_CMD_PTP, synch_buf,
50796 MC_CMD_PTP_IN_SYNCHRONIZE_LEN);
50797 EFX_BUG_ON_PARANOID(rc);
50798 diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
50799 index 3f20bb1..59add41 100644
50800 --- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
50801 +++ b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
50802 @@ -140,8 +140,8 @@ void dwmac_mmc_ctrl(void __iomem *ioaddr, unsigned int mode)
50803
50804 writel(value, ioaddr + MMC_CNTRL);
50805
50806 - pr_debug("stmmac: MMC ctrl register (offset 0x%x): 0x%08x\n",
50807 - MMC_CNTRL, value);
50808 +// pr_debug("stmmac: MMC ctrl register (offset 0x%x): 0x%08x\n",
50809 +// MMC_CNTRL, value);
50810 }
50811
50812 /* To mask all all interrupts.*/
50813 diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
50814 index a832637..092da0a 100644
50815 --- a/drivers/net/ethernet/via/via-rhine.c
50816 +++ b/drivers/net/ethernet/via/via-rhine.c
50817 @@ -2599,7 +2599,7 @@ static struct platform_driver rhine_driver_platform = {
50818 }
50819 };
50820
50821 -static struct dmi_system_id rhine_dmi_table[] __initdata = {
50822 +static const struct dmi_system_id rhine_dmi_table[] __initconst = {
50823 {
50824 .ident = "EPIA-M",
50825 .matches = {
50826 diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
50827 index dd45440..c5f3cae 100644
50828 --- a/drivers/net/hyperv/hyperv_net.h
50829 +++ b/drivers/net/hyperv/hyperv_net.h
50830 @@ -177,7 +177,7 @@ struct rndis_device {
50831 enum rndis_device_state state;
50832 bool link_state;
50833 bool link_change;
50834 - atomic_t new_req_id;
50835 + atomic_unchecked_t new_req_id;
50836
50837 spinlock_t request_lock;
50838 struct list_head req_list;
50839 diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
50840 index 236aeb7..fd695e2 100644
50841 --- a/drivers/net/hyperv/rndis_filter.c
50842 +++ b/drivers/net/hyperv/rndis_filter.c
50843 @@ -101,7 +101,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
50844 * template
50845 */
50846 set = &rndis_msg->msg.set_req;
50847 - set->req_id = atomic_inc_return(&dev->new_req_id);
50848 + set->req_id = atomic_inc_return_unchecked(&dev->new_req_id);
50849
50850 /* Add to the request list */
50851 spin_lock_irqsave(&dev->request_lock, flags);
50852 @@ -924,7 +924,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
50853
50854 /* Setup the rndis set */
50855 halt = &request->request_msg.msg.halt_req;
50856 - halt->req_id = atomic_inc_return(&dev->new_req_id);
50857 + halt->req_id = atomic_inc_return_unchecked(&dev->new_req_id);
50858
50859 /* Ignore return since this msg is optional. */
50860 rndis_filter_send_request(dev, request);
50861 diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
50862 index 94570aa..1a798e1 100644
50863 --- a/drivers/net/ifb.c
50864 +++ b/drivers/net/ifb.c
50865 @@ -253,7 +253,7 @@ static int ifb_validate(struct nlattr *tb[], struct nlattr *data[])
50866 return 0;
50867 }
50868
50869 -static struct rtnl_link_ops ifb_link_ops __read_mostly = {
50870 +static struct rtnl_link_ops ifb_link_ops = {
50871 .kind = "ifb",
50872 .priv_size = sizeof(struct ifb_private),
50873 .setup = ifb_setup,
50874 diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
50875 index 207f62e..af3f5e5 100644
50876 --- a/drivers/net/ipvlan/ipvlan_core.c
50877 +++ b/drivers/net/ipvlan/ipvlan_core.c
50878 @@ -466,7 +466,7 @@ static void ipvlan_multicast_enqueue(struct ipvl_port *port,
50879 schedule_work(&port->wq);
50880 } else {
50881 spin_unlock(&port->backlog.lock);
50882 - atomic_long_inc(&skb->dev->rx_dropped);
50883 + atomic_long_inc_unchecked(&skb->dev->rx_dropped);
50884 kfree_skb(skb);
50885 }
50886 }
50887 diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
50888 index 9f59f17..52cb38f 100644
50889 --- a/drivers/net/macvlan.c
50890 +++ b/drivers/net/macvlan.c
50891 @@ -335,7 +335,7 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
50892 free_nskb:
50893 kfree_skb(nskb);
50894 err:
50895 - atomic_long_inc(&skb->dev->rx_dropped);
50896 + atomic_long_inc_unchecked(&skb->dev->rx_dropped);
50897 }
50898
50899 static void macvlan_flush_sources(struct macvlan_port *port,
50900 @@ -1480,13 +1480,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
50901 int macvlan_link_register(struct rtnl_link_ops *ops)
50902 {
50903 /* common fields */
50904 - ops->priv_size = sizeof(struct macvlan_dev);
50905 - ops->validate = macvlan_validate;
50906 - ops->maxtype = IFLA_MACVLAN_MAX;
50907 - ops->policy = macvlan_policy;
50908 - ops->changelink = macvlan_changelink;
50909 - ops->get_size = macvlan_get_size;
50910 - ops->fill_info = macvlan_fill_info;
50911 + pax_open_kernel();
50912 + *(size_t *)&ops->priv_size = sizeof(struct macvlan_dev);
50913 + *(void **)&ops->validate = macvlan_validate;
50914 + *(int *)&ops->maxtype = IFLA_MACVLAN_MAX;
50915 + *(const void **)&ops->policy = macvlan_policy;
50916 + *(void **)&ops->changelink = macvlan_changelink;
50917 + *(void **)&ops->get_size = macvlan_get_size;
50918 + *(void **)&ops->fill_info = macvlan_fill_info;
50919 + pax_close_kernel();
50920
50921 return rtnl_link_register(ops);
50922 };
50923 @@ -1572,7 +1574,7 @@ static int macvlan_device_event(struct notifier_block *unused,
50924 return NOTIFY_DONE;
50925 }
50926
50927 -static struct notifier_block macvlan_notifier_block __read_mostly = {
50928 +static struct notifier_block macvlan_notifier_block = {
50929 .notifier_call = macvlan_device_event,
50930 };
50931
50932 diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
50933 index 248478c..05e8467 100644
50934 --- a/drivers/net/macvtap.c
50935 +++ b/drivers/net/macvtap.c
50936 @@ -485,7 +485,7 @@ static void macvtap_setup(struct net_device *dev)
50937 dev->tx_queue_len = TUN_READQ_SIZE;
50938 }
50939
50940 -static struct rtnl_link_ops macvtap_link_ops __read_mostly = {
50941 +static struct rtnl_link_ops macvtap_link_ops = {
50942 .kind = "macvtap",
50943 .setup = macvtap_setup,
50944 .newlink = macvtap_newlink,
50945 @@ -1090,7 +1090,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
50946
50947 ret = 0;
50948 u = q->flags;
50949 - if (copy_to_user(&ifr->ifr_name, vlan->dev->name, IFNAMSIZ) ||
50950 + if (copy_to_user(ifr->ifr_name, vlan->dev->name, IFNAMSIZ) ||
50951 put_user(u, &ifr->ifr_flags))
50952 ret = -EFAULT;
50953 macvtap_put_vlan(vlan);
50954 @@ -1308,7 +1308,7 @@ static int macvtap_device_event(struct notifier_block *unused,
50955 return NOTIFY_DONE;
50956 }
50957
50958 -static struct notifier_block macvtap_notifier_block __read_mostly = {
50959 +static struct notifier_block macvtap_notifier_block = {
50960 .notifier_call = macvtap_device_event,
50961 };
50962
50963 diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c
50964 index 34924df..a747360 100644
50965 --- a/drivers/net/nlmon.c
50966 +++ b/drivers/net/nlmon.c
50967 @@ -154,7 +154,7 @@ static int nlmon_validate(struct nlattr *tb[], struct nlattr *data[])
50968 return 0;
50969 }
50970
50971 -static struct rtnl_link_ops nlmon_link_ops __read_mostly = {
50972 +static struct rtnl_link_ops nlmon_link_ops = {
50973 .kind = "nlmon",
50974 .priv_size = sizeof(struct nlmon),
50975 .setup = nlmon_setup,
50976 diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
50977 index 55f0178..6220e93 100644
50978 --- a/drivers/net/phy/phy_device.c
50979 +++ b/drivers/net/phy/phy_device.c
50980 @@ -218,7 +218,7 @@ EXPORT_SYMBOL(phy_device_create);
50981 * zero on success.
50982 *
50983 */
50984 -static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id,
50985 +static int get_phy_c45_ids(struct mii_bus *bus, int addr, int *phy_id,
50986 struct phy_c45_device_ids *c45_ids) {
50987 int phy_reg;
50988 int i, reg_addr;
50989 @@ -296,7 +296,7 @@ retry: reg_addr = MII_ADDR_C45 | i << 16 | MDIO_DEVS2;
50990 * its return value is in turn returned.
50991 *
50992 */
50993 -static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id,
50994 +static int get_phy_id(struct mii_bus *bus, int addr, int *phy_id,
50995 bool is_c45, struct phy_c45_device_ids *c45_ids)
50996 {
50997 int phy_reg;
50998 @@ -334,7 +334,7 @@ static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id,
50999 struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
51000 {
51001 struct phy_c45_device_ids c45_ids = {0};
51002 - u32 phy_id = 0;
51003 + int phy_id = 0;
51004 int r;
51005
51006 r = get_phy_id(bus, addr, &phy_id, is_c45, &c45_ids);
51007 diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
51008 index 487be20..f4c87bc 100644
51009 --- a/drivers/net/ppp/ppp_generic.c
51010 +++ b/drivers/net/ppp/ppp_generic.c
51011 @@ -1035,7 +1035,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
51012 void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
51013 struct ppp_stats stats;
51014 struct ppp_comp_stats cstats;
51015 - char *vers;
51016
51017 switch (cmd) {
51018 case SIOCGPPPSTATS:
51019 @@ -1057,8 +1056,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
51020 break;
51021
51022 case SIOCGPPPVER:
51023 - vers = PPP_VERSION;
51024 - if (copy_to_user(addr, vers, strlen(vers) + 1))
51025 + if (copy_to_user(addr, PPP_VERSION, sizeof(PPP_VERSION)))
51026 break;
51027 err = 0;
51028 break;
51029 diff --git a/drivers/net/slip/slhc.c b/drivers/net/slip/slhc.c
51030 index 079f7ad..7e59810 100644
51031 --- a/drivers/net/slip/slhc.c
51032 +++ b/drivers/net/slip/slhc.c
51033 @@ -94,6 +94,9 @@ slhc_init(int rslots, int tslots)
51034 register struct cstate *ts;
51035 struct slcompress *comp;
51036
51037 + if (rslots <= 0 || tslots <= 0 || rslots >= 256 || tslots >= 256)
51038 + goto out_fail;
51039 +
51040 comp = kzalloc(sizeof(struct slcompress), GFP_KERNEL);
51041 if (! comp)
51042 goto out_fail;
51043 @@ -487,7 +490,7 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize)
51044 register struct tcphdr *thp;
51045 register struct iphdr *ip;
51046 register struct cstate *cs;
51047 - int len, hdrlen;
51048 + long len, hdrlen;
51049 unsigned char *cp = icp;
51050
51051 /* We've got a compressed packet; read the change byte */
51052 diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
51053 index daa054b..07d6b98 100644
51054 --- a/drivers/net/team/team.c
51055 +++ b/drivers/net/team/team.c
51056 @@ -2107,7 +2107,7 @@ static unsigned int team_get_num_rx_queues(void)
51057 return TEAM_DEFAULT_NUM_RX_QUEUES;
51058 }
51059
51060 -static struct rtnl_link_ops team_link_ops __read_mostly = {
51061 +static struct rtnl_link_ops team_link_ops = {
51062 .kind = DRV_NAME,
51063 .priv_size = sizeof(struct team),
51064 .setup = team_setup,
51065 @@ -2897,7 +2897,7 @@ static int team_device_event(struct notifier_block *unused,
51066 return NOTIFY_DONE;
51067 }
51068
51069 -static struct notifier_block team_notifier_block __read_mostly = {
51070 +static struct notifier_block team_notifier_block = {
51071 .notifier_call = team_device_event,
51072 };
51073
51074 diff --git a/drivers/net/tun.c b/drivers/net/tun.c
51075 index 06a0394..1756d18 100644
51076 --- a/drivers/net/tun.c
51077 +++ b/drivers/net/tun.c
51078 @@ -1472,7 +1472,7 @@ static int tun_validate(struct nlattr *tb[], struct nlattr *data[])
51079 return -EINVAL;
51080 }
51081
51082 -static struct rtnl_link_ops tun_link_ops __read_mostly = {
51083 +static struct rtnl_link_ops tun_link_ops = {
51084 .kind = DRV_NAME,
51085 .priv_size = sizeof(struct tun_struct),
51086 .setup = tun_setup,
51087 @@ -1871,7 +1871,7 @@ unlock:
51088 }
51089
51090 static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
51091 - unsigned long arg, int ifreq_len)
51092 + unsigned long arg, size_t ifreq_len)
51093 {
51094 struct tun_file *tfile = file->private_data;
51095 struct tun_struct *tun;
51096 @@ -1885,6 +1885,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
51097 int le;
51098 int ret;
51099
51100 + if (ifreq_len > sizeof ifr)
51101 + return -EFAULT;
51102 +
51103 if (cmd == TUNSETIFF || cmd == TUNSETQUEUE || _IOC_TYPE(cmd) == 0x89) {
51104 if (copy_from_user(&ifr, argp, ifreq_len))
51105 return -EFAULT;
51106 diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
51107 index 111d907..1ee643e 100644
51108 --- a/drivers/net/usb/hso.c
51109 +++ b/drivers/net/usb/hso.c
51110 @@ -70,7 +70,7 @@
51111 #include <asm/byteorder.h>
51112 #include <linux/serial_core.h>
51113 #include <linux/serial.h>
51114 -
51115 +#include <asm/local.h>
51116
51117 #define MOD_AUTHOR "Option Wireless"
51118 #define MOD_DESCRIPTION "USB High Speed Option driver"
51119 @@ -1183,7 +1183,7 @@ static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
51120 struct urb *urb;
51121
51122 urb = serial->rx_urb[0];
51123 - if (serial->port.count > 0) {
51124 + if (atomic_read(&serial->port.count) > 0) {
51125 count = put_rxbuf_data(urb, serial);
51126 if (count == -1)
51127 return;
51128 @@ -1221,7 +1221,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
51129 DUMP1(urb->transfer_buffer, urb->actual_length);
51130
51131 /* Anyone listening? */
51132 - if (serial->port.count == 0)
51133 + if (atomic_read(&serial->port.count) == 0)
51134 return;
51135
51136 if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
51137 @@ -1282,8 +1282,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
51138 tty_port_tty_set(&serial->port, tty);
51139
51140 /* check for port already opened, if not set the termios */
51141 - serial->port.count++;
51142 - if (serial->port.count == 1) {
51143 + if (atomic_inc_return(&serial->port.count) == 1) {
51144 serial->rx_state = RX_IDLE;
51145 /* Force default termio settings */
51146 _hso_serial_set_termios(tty, NULL);
51147 @@ -1293,7 +1292,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
51148 result = hso_start_serial_device(serial->parent, GFP_KERNEL);
51149 if (result) {
51150 hso_stop_serial_device(serial->parent);
51151 - serial->port.count--;
51152 + atomic_dec(&serial->port.count);
51153 } else {
51154 kref_get(&serial->parent->ref);
51155 }
51156 @@ -1331,10 +1330,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
51157
51158 /* reset the rts and dtr */
51159 /* do the actual close */
51160 - serial->port.count--;
51161 + atomic_dec(&serial->port.count);
51162
51163 - if (serial->port.count <= 0) {
51164 - serial->port.count = 0;
51165 + if (atomic_read(&serial->port.count) <= 0) {
51166 + atomic_set(&serial->port.count, 0);
51167 tty_port_tty_set(&serial->port, NULL);
51168 if (!usb_gone)
51169 hso_stop_serial_device(serial->parent);
51170 @@ -1417,7 +1416,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
51171
51172 /* the actual setup */
51173 spin_lock_irqsave(&serial->serial_lock, flags);
51174 - if (serial->port.count)
51175 + if (atomic_read(&serial->port.count))
51176 _hso_serial_set_termios(tty, old);
51177 else
51178 tty->termios = *old;
51179 @@ -1891,7 +1890,7 @@ static void intr_callback(struct urb *urb)
51180 D1("Pending read interrupt on port %d\n", i);
51181 spin_lock(&serial->serial_lock);
51182 if (serial->rx_state == RX_IDLE &&
51183 - serial->port.count > 0) {
51184 + atomic_read(&serial->port.count) > 0) {
51185 /* Setup and send a ctrl req read on
51186 * port i */
51187 if (!serial->rx_urb_filled[0]) {
51188 @@ -3058,7 +3057,7 @@ static int hso_resume(struct usb_interface *iface)
51189 /* Start all serial ports */
51190 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
51191 if (serial_table[i] && (serial_table[i]->interface == iface)) {
51192 - if (dev2ser(serial_table[i])->port.count) {
51193 + if (atomic_read(&dev2ser(serial_table[i])->port.count)) {
51194 result =
51195 hso_start_serial_device(serial_table[i], GFP_NOIO);
51196 hso_kick_transmit(dev2ser(serial_table[i]));
51197 diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
51198 index ad8cbc6..de80b09 100644
51199 --- a/drivers/net/usb/r8152.c
51200 +++ b/drivers/net/usb/r8152.c
51201 @@ -603,7 +603,7 @@ struct r8152 {
51202 void (*unload)(struct r8152 *);
51203 int (*eee_get)(struct r8152 *, struct ethtool_eee *);
51204 int (*eee_set)(struct r8152 *, struct ethtool_eee *);
51205 - } rtl_ops;
51206 + } __no_const rtl_ops;
51207
51208 int intr_interval;
51209 u32 saved_wolopts;
51210 diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c
51211 index a2515887..6d13233 100644
51212 --- a/drivers/net/usb/sierra_net.c
51213 +++ b/drivers/net/usb/sierra_net.c
51214 @@ -51,7 +51,7 @@ static const char driver_name[] = "sierra_net";
51215 /* atomic counter partially included in MAC address to make sure 2 devices
51216 * do not end up with the same MAC - concept breaks in case of > 255 ifaces
51217 */
51218 -static atomic_t iface_counter = ATOMIC_INIT(0);
51219 +static atomic_unchecked_t iface_counter = ATOMIC_INIT(0);
51220
51221 /*
51222 * SYNC Timer Delay definition used to set the expiry time
51223 @@ -697,7 +697,7 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf)
51224 dev->net->netdev_ops = &sierra_net_device_ops;
51225
51226 /* change MAC addr to include, ifacenum, and to be unique */
51227 - dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return(&iface_counter);
51228 + dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return_unchecked(&iface_counter);
51229 dev->net->dev_addr[ETH_ALEN-1] = ifacenum;
51230
51231 /* we will have to manufacture ethernet headers, prepare template */
51232 diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
51233 index 237f8e5..8dccb91 100644
51234 --- a/drivers/net/virtio_net.c
51235 +++ b/drivers/net/virtio_net.c
51236 @@ -48,7 +48,7 @@ module_param(gso, bool, 0444);
51237 #define RECEIVE_AVG_WEIGHT 64
51238
51239 /* Minimum alignment for mergeable packet buffers. */
51240 -#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256)
51241 +#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256UL)
51242
51243 #define VIRTNET_DRIVER_VERSION "1.0.0"
51244
51245 diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
51246 index 5bc4b1e..d5769f5 100644
51247 --- a/drivers/net/vxlan.c
51248 +++ b/drivers/net/vxlan.c
51249 @@ -2884,7 +2884,7 @@ static struct net *vxlan_get_link_net(const struct net_device *dev)
51250 return vxlan->net;
51251 }
51252
51253 -static struct rtnl_link_ops vxlan_link_ops __read_mostly = {
51254 +static struct rtnl_link_ops vxlan_link_ops = {
51255 .kind = "vxlan",
51256 .maxtype = IFLA_VXLAN_MAX,
51257 .policy = vxlan_policy,
51258 @@ -2932,7 +2932,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
51259 return NOTIFY_DONE;
51260 }
51261
51262 -static struct notifier_block vxlan_notifier_block __read_mostly = {
51263 +static struct notifier_block vxlan_notifier_block = {
51264 .notifier_call = vxlan_lowerdev_event,
51265 };
51266
51267 diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c
51268 index 5920c99..ff2e4a5 100644
51269 --- a/drivers/net/wan/lmc/lmc_media.c
51270 +++ b/drivers/net/wan/lmc/lmc_media.c
51271 @@ -95,62 +95,63 @@ static inline void write_av9110_bit (lmc_softc_t *, int);
51272 static void write_av9110(lmc_softc_t *, u32, u32, u32, u32, u32);
51273
51274 lmc_media_t lmc_ds3_media = {
51275 - lmc_ds3_init, /* special media init stuff */
51276 - lmc_ds3_default, /* reset to default state */
51277 - lmc_ds3_set_status, /* reset status to state provided */
51278 - lmc_dummy_set_1, /* set clock source */
51279 - lmc_dummy_set2_1, /* set line speed */
51280 - lmc_ds3_set_100ft, /* set cable length */
51281 - lmc_ds3_set_scram, /* set scrambler */
51282 - lmc_ds3_get_link_status, /* get link status */
51283 - lmc_dummy_set_1, /* set link status */
51284 - lmc_ds3_set_crc_length, /* set CRC length */
51285 - lmc_dummy_set_1, /* set T1 or E1 circuit type */
51286 - lmc_ds3_watchdog
51287 + .init = lmc_ds3_init, /* special media init stuff */
51288 + .defaults = lmc_ds3_default, /* reset to default state */
51289 + .set_status = lmc_ds3_set_status, /* reset status to state provided */
51290 + .set_clock_source = lmc_dummy_set_1, /* set clock source */
51291 + .set_speed = lmc_dummy_set2_1, /* set line speed */
51292 + .set_cable_length = lmc_ds3_set_100ft, /* set cable length */
51293 + .set_scrambler = lmc_ds3_set_scram, /* set scrambler */
51294 + .get_link_status = lmc_ds3_get_link_status, /* get link status */
51295 + .set_link_status = lmc_dummy_set_1, /* set link status */
51296 + .set_crc_length = lmc_ds3_set_crc_length, /* set CRC length */
51297 + .set_circuit_type = lmc_dummy_set_1, /* set T1 or E1 circuit type */
51298 + .watchdog = lmc_ds3_watchdog
51299 };
51300
51301 lmc_media_t lmc_hssi_media = {
51302 - lmc_hssi_init, /* special media init stuff */
51303 - lmc_hssi_default, /* reset to default state */
51304 - lmc_hssi_set_status, /* reset status to state provided */
51305 - lmc_hssi_set_clock, /* set clock source */
51306 - lmc_dummy_set2_1, /* set line speed */
51307 - lmc_dummy_set_1, /* set cable length */
51308 - lmc_dummy_set_1, /* set scrambler */
51309 - lmc_hssi_get_link_status, /* get link status */
51310 - lmc_hssi_set_link_status, /* set link status */
51311 - lmc_hssi_set_crc_length, /* set CRC length */
51312 - lmc_dummy_set_1, /* set T1 or E1 circuit type */
51313 - lmc_hssi_watchdog
51314 + .init = lmc_hssi_init, /* special media init stuff */
51315 + .defaults = lmc_hssi_default, /* reset to default state */
51316 + .set_status = lmc_hssi_set_status, /* reset status to state provided */
51317 + .set_clock_source = lmc_hssi_set_clock, /* set clock source */
51318 + .set_speed = lmc_dummy_set2_1, /* set line speed */
51319 + .set_cable_length = lmc_dummy_set_1, /* set cable length */
51320 + .set_scrambler = lmc_dummy_set_1, /* set scrambler */
51321 + .get_link_status = lmc_hssi_get_link_status, /* get link status */
51322 + .set_link_status = lmc_hssi_set_link_status, /* set link status */
51323 + .set_crc_length = lmc_hssi_set_crc_length, /* set CRC length */
51324 + .set_circuit_type = lmc_dummy_set_1, /* set T1 or E1 circuit type */
51325 + .watchdog = lmc_hssi_watchdog
51326 };
51327
51328 -lmc_media_t lmc_ssi_media = { lmc_ssi_init, /* special media init stuff */
51329 - lmc_ssi_default, /* reset to default state */
51330 - lmc_ssi_set_status, /* reset status to state provided */
51331 - lmc_ssi_set_clock, /* set clock source */
51332 - lmc_ssi_set_speed, /* set line speed */
51333 - lmc_dummy_set_1, /* set cable length */
51334 - lmc_dummy_set_1, /* set scrambler */
51335 - lmc_ssi_get_link_status, /* get link status */
51336 - lmc_ssi_set_link_status, /* set link status */
51337 - lmc_ssi_set_crc_length, /* set CRC length */
51338 - lmc_dummy_set_1, /* set T1 or E1 circuit type */
51339 - lmc_ssi_watchdog
51340 +lmc_media_t lmc_ssi_media = {
51341 + .init = lmc_ssi_init, /* special media init stuff */
51342 + .defaults = lmc_ssi_default, /* reset to default state */
51343 + .set_status = lmc_ssi_set_status, /* reset status to state provided */
51344 + .set_clock_source = lmc_ssi_set_clock, /* set clock source */
51345 + .set_speed = lmc_ssi_set_speed, /* set line speed */
51346 + .set_cable_length = lmc_dummy_set_1, /* set cable length */
51347 + .set_scrambler = lmc_dummy_set_1, /* set scrambler */
51348 + .get_link_status = lmc_ssi_get_link_status, /* get link status */
51349 + .set_link_status = lmc_ssi_set_link_status, /* set link status */
51350 + .set_crc_length = lmc_ssi_set_crc_length, /* set CRC length */
51351 + .set_circuit_type = lmc_dummy_set_1, /* set T1 or E1 circuit type */
51352 + .watchdog = lmc_ssi_watchdog
51353 };
51354
51355 lmc_media_t lmc_t1_media = {
51356 - lmc_t1_init, /* special media init stuff */
51357 - lmc_t1_default, /* reset to default state */
51358 - lmc_t1_set_status, /* reset status to state provided */
51359 - lmc_t1_set_clock, /* set clock source */
51360 - lmc_dummy_set2_1, /* set line speed */
51361 - lmc_dummy_set_1, /* set cable length */
51362 - lmc_dummy_set_1, /* set scrambler */
51363 - lmc_t1_get_link_status, /* get link status */
51364 - lmc_dummy_set_1, /* set link status */
51365 - lmc_t1_set_crc_length, /* set CRC length */
51366 - lmc_t1_set_circuit_type, /* set T1 or E1 circuit type */
51367 - lmc_t1_watchdog
51368 + .init = lmc_t1_init, /* special media init stuff */
51369 + .defaults = lmc_t1_default, /* reset to default state */
51370 + .set_status = lmc_t1_set_status, /* reset status to state provided */
51371 + .set_clock_source = lmc_t1_set_clock, /* set clock source */
51372 + .set_speed = lmc_dummy_set2_1, /* set line speed */
51373 + .set_cable_length = lmc_dummy_set_1, /* set cable length */
51374 + .set_scrambler = lmc_dummy_set_1, /* set scrambler */
51375 + .get_link_status = lmc_t1_get_link_status, /* get link status */
51376 + .set_link_status = lmc_dummy_set_1, /* set link status */
51377 + .set_crc_length = lmc_t1_set_crc_length, /* set CRC length */
51378 + .set_circuit_type = lmc_t1_set_circuit_type, /* set T1 or E1 circuit type */
51379 + .watchdog = lmc_t1_watchdog
51380 };
51381
51382 static void
51383 diff --git a/drivers/net/wan/z85230.c b/drivers/net/wan/z85230.c
51384 index 2f0bd69..e46ed7b 100644
51385 --- a/drivers/net/wan/z85230.c
51386 +++ b/drivers/net/wan/z85230.c
51387 @@ -485,9 +485,9 @@ static void z8530_status(struct z8530_channel *chan)
51388
51389 struct z8530_irqhandler z8530_sync =
51390 {
51391 - z8530_rx,
51392 - z8530_tx,
51393 - z8530_status
51394 + .rx = z8530_rx,
51395 + .tx = z8530_tx,
51396 + .status = z8530_status
51397 };
51398
51399 EXPORT_SYMBOL(z8530_sync);
51400 @@ -605,15 +605,15 @@ static void z8530_dma_status(struct z8530_channel *chan)
51401 }
51402
51403 static struct z8530_irqhandler z8530_dma_sync = {
51404 - z8530_dma_rx,
51405 - z8530_dma_tx,
51406 - z8530_dma_status
51407 + .rx = z8530_dma_rx,
51408 + .tx = z8530_dma_tx,
51409 + .status = z8530_dma_status
51410 };
51411
51412 static struct z8530_irqhandler z8530_txdma_sync = {
51413 - z8530_rx,
51414 - z8530_dma_tx,
51415 - z8530_dma_status
51416 + .rx = z8530_rx,
51417 + .tx = z8530_dma_tx,
51418 + .status = z8530_dma_status
51419 };
51420
51421 /**
51422 @@ -680,9 +680,9 @@ static void z8530_status_clear(struct z8530_channel *chan)
51423
51424 struct z8530_irqhandler z8530_nop=
51425 {
51426 - z8530_rx_clear,
51427 - z8530_tx_clear,
51428 - z8530_status_clear
51429 + .rx = z8530_rx_clear,
51430 + .tx = z8530_tx_clear,
51431 + .status = z8530_status_clear
51432 };
51433
51434
51435 diff --git a/drivers/net/wimax/i2400m/rx.c b/drivers/net/wimax/i2400m/rx.c
51436 index 0b60295..b8bfa5b 100644
51437 --- a/drivers/net/wimax/i2400m/rx.c
51438 +++ b/drivers/net/wimax/i2400m/rx.c
51439 @@ -1359,7 +1359,7 @@ int i2400m_rx_setup(struct i2400m *i2400m)
51440 if (i2400m->rx_roq == NULL)
51441 goto error_roq_alloc;
51442
51443 - rd = kcalloc(I2400M_RO_CIN + 1, sizeof(*i2400m->rx_roq[0].log),
51444 + rd = kcalloc(sizeof(*i2400m->rx_roq[0].log), I2400M_RO_CIN + 1,
51445 GFP_KERNEL);
51446 if (rd == NULL) {
51447 result = -ENOMEM;
51448 diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
51449 index d0c97c2..108f59b 100644
51450 --- a/drivers/net/wireless/airo.c
51451 +++ b/drivers/net/wireless/airo.c
51452 @@ -7846,7 +7846,7 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) {
51453 struct airo_info *ai = dev->ml_priv;
51454 int ridcode;
51455 int enabled;
51456 - static int (* writer)(struct airo_info *, u16 rid, const void *, int, int);
51457 + int (* writer)(struct airo_info *, u16 rid, const void *, int, int);
51458 unsigned char *iobuf;
51459
51460 /* Only super-user can write RIDs */
51461 diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
51462 index dab2513..4c4b65d 100644
51463 --- a/drivers/net/wireless/at76c50x-usb.c
51464 +++ b/drivers/net/wireless/at76c50x-usb.c
51465 @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state)
51466 }
51467
51468 /* Convert timeout from the DFU status to jiffies */
51469 -static inline unsigned long at76_get_timeout(struct dfu_status *s)
51470 +static inline unsigned long __intentional_overflow(-1) at76_get_timeout(struct dfu_status *s)
51471 {
51472 return msecs_to_jiffies((s->poll_timeout[2] << 16)
51473 | (s->poll_timeout[1] << 8)
51474 diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c
51475 index 85bfa2a..3f6e72c 100644
51476 --- a/drivers/net/wireless/ath/ath10k/htc.c
51477 +++ b/drivers/net/wireless/ath/ath10k/htc.c
51478 @@ -839,7 +839,10 @@ int ath10k_htc_start(struct ath10k_htc *htc)
51479 /* registered target arrival callback from the HIF layer */
51480 int ath10k_htc_init(struct ath10k *ar)
51481 {
51482 - struct ath10k_hif_cb htc_callbacks;
51483 + static struct ath10k_hif_cb htc_callbacks = {
51484 + .rx_completion = ath10k_htc_rx_completion_handler,
51485 + .tx_completion = ath10k_htc_tx_completion_handler,
51486 + };
51487 struct ath10k_htc_ep *ep = NULL;
51488 struct ath10k_htc *htc = &ar->htc;
51489
51490 @@ -848,8 +851,6 @@ int ath10k_htc_init(struct ath10k *ar)
51491 ath10k_htc_reset_endpoint_states(htc);
51492
51493 /* setup HIF layer callbacks */
51494 - htc_callbacks.rx_completion = ath10k_htc_rx_completion_handler;
51495 - htc_callbacks.tx_completion = ath10k_htc_tx_completion_handler;
51496 htc->ar = ar;
51497
51498 /* Get HIF default pipe for HTC message exchange */
51499 diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h
51500 index 527179c..a890150 100644
51501 --- a/drivers/net/wireless/ath/ath10k/htc.h
51502 +++ b/drivers/net/wireless/ath/ath10k/htc.h
51503 @@ -270,13 +270,13 @@ enum ath10k_htc_ep_id {
51504
51505 struct ath10k_htc_ops {
51506 void (*target_send_suspend_complete)(struct ath10k *ar);
51507 -};
51508 +} __no_const;
51509
51510 struct ath10k_htc_ep_ops {
51511 void (*ep_tx_complete)(struct ath10k *, struct sk_buff *);
51512 void (*ep_rx_complete)(struct ath10k *, struct sk_buff *);
51513 void (*ep_tx_credits)(struct ath10k *);
51514 -};
51515 +} __no_const;
51516
51517 /* service connection information */
51518 struct ath10k_htc_svc_conn_req {
51519 diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
51520 index f816909..e56cd8b 100644
51521 --- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
51522 +++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
51523 @@ -220,8 +220,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51524 ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
51525 ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
51526
51527 - ACCESS_ONCE(ads->ds_link) = i->link;
51528 - ACCESS_ONCE(ads->ds_data) = i->buf_addr[0];
51529 + ACCESS_ONCE_RW(ads->ds_link) = i->link;
51530 + ACCESS_ONCE_RW(ads->ds_data) = i->buf_addr[0];
51531
51532 ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore);
51533 ctl6 = SM(i->keytype, AR_EncrType);
51534 @@ -235,26 +235,26 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51535
51536 if ((i->is_first || i->is_last) &&
51537 i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) {
51538 - ACCESS_ONCE(ads->ds_ctl2) = set11nTries(i->rates, 0)
51539 + ACCESS_ONCE_RW(ads->ds_ctl2) = set11nTries(i->rates, 0)
51540 | set11nTries(i->rates, 1)
51541 | set11nTries(i->rates, 2)
51542 | set11nTries(i->rates, 3)
51543 | (i->dur_update ? AR_DurUpdateEna : 0)
51544 | SM(0, AR_BurstDur);
51545
51546 - ACCESS_ONCE(ads->ds_ctl3) = set11nRate(i->rates, 0)
51547 + ACCESS_ONCE_RW(ads->ds_ctl3) = set11nRate(i->rates, 0)
51548 | set11nRate(i->rates, 1)
51549 | set11nRate(i->rates, 2)
51550 | set11nRate(i->rates, 3);
51551 } else {
51552 - ACCESS_ONCE(ads->ds_ctl2) = 0;
51553 - ACCESS_ONCE(ads->ds_ctl3) = 0;
51554 + ACCESS_ONCE_RW(ads->ds_ctl2) = 0;
51555 + ACCESS_ONCE_RW(ads->ds_ctl3) = 0;
51556 }
51557
51558 if (!i->is_first) {
51559 - ACCESS_ONCE(ads->ds_ctl0) = 0;
51560 - ACCESS_ONCE(ads->ds_ctl1) = ctl1;
51561 - ACCESS_ONCE(ads->ds_ctl6) = ctl6;
51562 + ACCESS_ONCE_RW(ads->ds_ctl0) = 0;
51563 + ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
51564 + ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
51565 return;
51566 }
51567
51568 @@ -279,7 +279,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51569 break;
51570 }
51571
51572 - ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
51573 + ACCESS_ONCE_RW(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
51574 | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
51575 | SM(i->txpower[0], AR_XmitPower0)
51576 | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
51577 @@ -289,27 +289,27 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51578 | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
51579 (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
51580
51581 - ACCESS_ONCE(ads->ds_ctl1) = ctl1;
51582 - ACCESS_ONCE(ads->ds_ctl6) = ctl6;
51583 + ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
51584 + ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
51585
51586 if (i->aggr == AGGR_BUF_MIDDLE || i->aggr == AGGR_BUF_LAST)
51587 return;
51588
51589 - ACCESS_ONCE(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
51590 + ACCESS_ONCE_RW(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
51591 | set11nPktDurRTSCTS(i->rates, 1);
51592
51593 - ACCESS_ONCE(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
51594 + ACCESS_ONCE_RW(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
51595 | set11nPktDurRTSCTS(i->rates, 3);
51596
51597 - ACCESS_ONCE(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
51598 + ACCESS_ONCE_RW(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
51599 | set11nRateFlags(i->rates, 1)
51600 | set11nRateFlags(i->rates, 2)
51601 | set11nRateFlags(i->rates, 3)
51602 | SM(i->rtscts_rate, AR_RTSCTSRate);
51603
51604 - ACCESS_ONCE(ads->ds_ctl9) = SM(i->txpower[1], AR_XmitPower1);
51605 - ACCESS_ONCE(ads->ds_ctl10) = SM(i->txpower[2], AR_XmitPower2);
51606 - ACCESS_ONCE(ads->ds_ctl11) = SM(i->txpower[3], AR_XmitPower3);
51607 + ACCESS_ONCE_RW(ads->ds_ctl9) = SM(i->txpower[1], AR_XmitPower1);
51608 + ACCESS_ONCE_RW(ads->ds_ctl10) = SM(i->txpower[2], AR_XmitPower2);
51609 + ACCESS_ONCE_RW(ads->ds_ctl11) = SM(i->txpower[3], AR_XmitPower3);
51610 }
51611
51612 static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds,
51613 diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
51614 index da84b70..83e4978 100644
51615 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
51616 +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
51617 @@ -39,47 +39,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51618 (i->qcu << AR_TxQcuNum_S) | desc_len;
51619
51620 checksum += val;
51621 - ACCESS_ONCE(ads->info) = val;
51622 + ACCESS_ONCE_RW(ads->info) = val;
51623
51624 checksum += i->link;
51625 - ACCESS_ONCE(ads->link) = i->link;
51626 + ACCESS_ONCE_RW(ads->link) = i->link;
51627
51628 checksum += i->buf_addr[0];
51629 - ACCESS_ONCE(ads->data0) = i->buf_addr[0];
51630 + ACCESS_ONCE_RW(ads->data0) = i->buf_addr[0];
51631 checksum += i->buf_addr[1];
51632 - ACCESS_ONCE(ads->data1) = i->buf_addr[1];
51633 + ACCESS_ONCE_RW(ads->data1) = i->buf_addr[1];
51634 checksum += i->buf_addr[2];
51635 - ACCESS_ONCE(ads->data2) = i->buf_addr[2];
51636 + ACCESS_ONCE_RW(ads->data2) = i->buf_addr[2];
51637 checksum += i->buf_addr[3];
51638 - ACCESS_ONCE(ads->data3) = i->buf_addr[3];
51639 + ACCESS_ONCE_RW(ads->data3) = i->buf_addr[3];
51640
51641 checksum += (val = (i->buf_len[0] << AR_BufLen_S) & AR_BufLen);
51642 - ACCESS_ONCE(ads->ctl3) = val;
51643 + ACCESS_ONCE_RW(ads->ctl3) = val;
51644 checksum += (val = (i->buf_len[1] << AR_BufLen_S) & AR_BufLen);
51645 - ACCESS_ONCE(ads->ctl5) = val;
51646 + ACCESS_ONCE_RW(ads->ctl5) = val;
51647 checksum += (val = (i->buf_len[2] << AR_BufLen_S) & AR_BufLen);
51648 - ACCESS_ONCE(ads->ctl7) = val;
51649 + ACCESS_ONCE_RW(ads->ctl7) = val;
51650 checksum += (val = (i->buf_len[3] << AR_BufLen_S) & AR_BufLen);
51651 - ACCESS_ONCE(ads->ctl9) = val;
51652 + ACCESS_ONCE_RW(ads->ctl9) = val;
51653
51654 checksum = (u16) (((checksum & 0xffff) + (checksum >> 16)) & 0xffff);
51655 - ACCESS_ONCE(ads->ctl10) = checksum;
51656 + ACCESS_ONCE_RW(ads->ctl10) = checksum;
51657
51658 if (i->is_first || i->is_last) {
51659 - ACCESS_ONCE(ads->ctl13) = set11nTries(i->rates, 0)
51660 + ACCESS_ONCE_RW(ads->ctl13) = set11nTries(i->rates, 0)
51661 | set11nTries(i->rates, 1)
51662 | set11nTries(i->rates, 2)
51663 | set11nTries(i->rates, 3)
51664 | (i->dur_update ? AR_DurUpdateEna : 0)
51665 | SM(0, AR_BurstDur);
51666
51667 - ACCESS_ONCE(ads->ctl14) = set11nRate(i->rates, 0)
51668 + ACCESS_ONCE_RW(ads->ctl14) = set11nRate(i->rates, 0)
51669 | set11nRate(i->rates, 1)
51670 | set11nRate(i->rates, 2)
51671 | set11nRate(i->rates, 3);
51672 } else {
51673 - ACCESS_ONCE(ads->ctl13) = 0;
51674 - ACCESS_ONCE(ads->ctl14) = 0;
51675 + ACCESS_ONCE_RW(ads->ctl13) = 0;
51676 + ACCESS_ONCE_RW(ads->ctl14) = 0;
51677 }
51678
51679 ads->ctl20 = 0;
51680 @@ -89,17 +89,17 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51681
51682 ctl17 = SM(i->keytype, AR_EncrType);
51683 if (!i->is_first) {
51684 - ACCESS_ONCE(ads->ctl11) = 0;
51685 - ACCESS_ONCE(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
51686 - ACCESS_ONCE(ads->ctl15) = 0;
51687 - ACCESS_ONCE(ads->ctl16) = 0;
51688 - ACCESS_ONCE(ads->ctl17) = ctl17;
51689 - ACCESS_ONCE(ads->ctl18) = 0;
51690 - ACCESS_ONCE(ads->ctl19) = 0;
51691 + ACCESS_ONCE_RW(ads->ctl11) = 0;
51692 + ACCESS_ONCE_RW(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
51693 + ACCESS_ONCE_RW(ads->ctl15) = 0;
51694 + ACCESS_ONCE_RW(ads->ctl16) = 0;
51695 + ACCESS_ONCE_RW(ads->ctl17) = ctl17;
51696 + ACCESS_ONCE_RW(ads->ctl18) = 0;
51697 + ACCESS_ONCE_RW(ads->ctl19) = 0;
51698 return;
51699 }
51700
51701 - ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen)
51702 + ACCESS_ONCE_RW(ads->ctl11) = (i->pkt_len & AR_FrameLen)
51703 | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
51704 | SM(i->txpower[0], AR_XmitPower0)
51705 | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
51706 @@ -135,26 +135,26 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
51707 val = (i->flags & ATH9K_TXDESC_PAPRD) >> ATH9K_TXDESC_PAPRD_S;
51708 ctl12 |= SM(val, AR_PAPRDChainMask);
51709
51710 - ACCESS_ONCE(ads->ctl12) = ctl12;
51711 - ACCESS_ONCE(ads->ctl17) = ctl17;
51712 + ACCESS_ONCE_RW(ads->ctl12) = ctl12;
51713 + ACCESS_ONCE_RW(ads->ctl17) = ctl17;
51714
51715 - ACCESS_ONCE(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
51716 + ACCESS_ONCE_RW(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
51717 | set11nPktDurRTSCTS(i->rates, 1);
51718
51719 - ACCESS_ONCE(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
51720 + ACCESS_ONCE_RW(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
51721 | set11nPktDurRTSCTS(i->rates, 3);
51722
51723 - ACCESS_ONCE(ads->ctl18) = set11nRateFlags(i->rates, 0)
51724 + ACCESS_ONCE_RW(ads->ctl18) = set11nRateFlags(i->rates, 0)
51725 | set11nRateFlags(i->rates, 1)
51726 | set11nRateFlags(i->rates, 2)
51727 | set11nRateFlags(i->rates, 3)
51728 | SM(i->rtscts_rate, AR_RTSCTSRate);
51729
51730 - ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding;
51731 + ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding;
51732
51733 - ACCESS_ONCE(ads->ctl20) = SM(i->txpower[1], AR_XmitPower1);
51734 - ACCESS_ONCE(ads->ctl21) = SM(i->txpower[2], AR_XmitPower2);
51735 - ACCESS_ONCE(ads->ctl22) = SM(i->txpower[3], AR_XmitPower3);
51736 + ACCESS_ONCE_RW(ads->ctl20) = SM(i->txpower[1], AR_XmitPower1);
51737 + ACCESS_ONCE_RW(ads->ctl21) = SM(i->txpower[2], AR_XmitPower2);
51738 + ACCESS_ONCE_RW(ads->ctl22) = SM(i->txpower[3], AR_XmitPower3);
51739 }
51740
51741 static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
51742 diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
51743 index e8454db..c7b26fe 100644
51744 --- a/drivers/net/wireless/ath/ath9k/hw.h
51745 +++ b/drivers/net/wireless/ath/ath9k/hw.h
51746 @@ -671,7 +671,7 @@ struct ath_hw_private_ops {
51747 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
51748 bool (*is_aic_enabled)(struct ath_hw *ah);
51749 #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
51750 -};
51751 +} __no_const;
51752
51753 /**
51754 * struct ath_spec_scan - parameters for Atheros spectral scan
51755 @@ -747,7 +747,7 @@ struct ath_hw_ops {
51756 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
51757 void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable);
51758 #endif
51759 -};
51760 +} __no_const;
51761
51762 struct ath_nf_limits {
51763 s16 max;
51764 diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
51765 index cfd45cb..6de2be6 100644
51766 --- a/drivers/net/wireless/ath/ath9k/main.c
51767 +++ b/drivers/net/wireless/ath/ath9k/main.c
51768 @@ -2574,16 +2574,18 @@ void ath9k_fill_chanctx_ops(void)
51769 if (!ath9k_is_chanctx_enabled())
51770 return;
51771
51772 - ath9k_ops.hw_scan = ath9k_hw_scan;
51773 - ath9k_ops.cancel_hw_scan = ath9k_cancel_hw_scan;
51774 - ath9k_ops.remain_on_channel = ath9k_remain_on_channel;
51775 - ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
51776 - ath9k_ops.add_chanctx = ath9k_add_chanctx;
51777 - ath9k_ops.remove_chanctx = ath9k_remove_chanctx;
51778 - ath9k_ops.change_chanctx = ath9k_change_chanctx;
51779 - ath9k_ops.assign_vif_chanctx = ath9k_assign_vif_chanctx;
51780 - ath9k_ops.unassign_vif_chanctx = ath9k_unassign_vif_chanctx;
51781 - ath9k_ops.mgd_prepare_tx = ath9k_mgd_prepare_tx;
51782 + pax_open_kernel();
51783 + *(void **)&ath9k_ops.hw_scan = ath9k_hw_scan;
51784 + *(void **)&ath9k_ops.cancel_hw_scan = ath9k_cancel_hw_scan;
51785 + *(void **)&ath9k_ops.remain_on_channel = ath9k_remain_on_channel;
51786 + *(void **)&ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
51787 + *(void **)&ath9k_ops.add_chanctx = ath9k_add_chanctx;
51788 + *(void **)&ath9k_ops.remove_chanctx = ath9k_remove_chanctx;
51789 + *(void **)&ath9k_ops.change_chanctx = ath9k_change_chanctx;
51790 + *(void **)&ath9k_ops.assign_vif_chanctx = ath9k_assign_vif_chanctx;
51791 + *(void **)&ath9k_ops.unassign_vif_chanctx = ath9k_unassign_vif_chanctx;
51792 + *(void **)&ath9k_ops.mgd_prepare_tx = ath9k_mgd_prepare_tx;
51793 + pax_close_kernel();
51794 }
51795
51796 #endif
51797 diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
51798 index 058a9f2..d5cb1ba 100644
51799 --- a/drivers/net/wireless/b43/phy_lp.c
51800 +++ b/drivers/net/wireless/b43/phy_lp.c
51801 @@ -2502,7 +2502,7 @@ static int lpphy_b2063_tune(struct b43_wldev *dev,
51802 {
51803 struct ssb_bus *bus = dev->dev->sdev->bus;
51804
51805 - static const struct b206x_channel *chandata = NULL;
51806 + const struct b206x_channel *chandata = NULL;
51807 u32 crystal_freq = bus->chipco.pmu.crystalfreq * 1000;
51808 u32 freqref, vco_freq, val1, val2, val3, timeout, timeoutref, count;
51809 u16 old_comm15, scale;
51810 diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c
51811 index 7f4cb69..16c0825 100644
51812 --- a/drivers/net/wireless/iwlegacy/3945-mac.c
51813 +++ b/drivers/net/wireless/iwlegacy/3945-mac.c
51814 @@ -3633,7 +3633,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
51815 */
51816 if (il3945_mod_params.disable_hw_scan) {
51817 D_INFO("Disabling hw_scan\n");
51818 - il3945_mac_ops.hw_scan = NULL;
51819 + pax_open_kernel();
51820 + *(void **)&il3945_mac_ops.hw_scan = NULL;
51821 + pax_close_kernel();
51822 }
51823
51824 D_INFO("*** LOAD DRIVER ***\n");
51825 diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
51826 index 0ffb6ff..c0b7f0e 100644
51827 --- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
51828 +++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
51829 @@ -188,7 +188,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file,
51830 {
51831 struct iwl_priv *priv = file->private_data;
51832 char buf[64];
51833 - int buf_size;
51834 + size_t buf_size;
51835 u32 offset, len;
51836
51837 memset(buf, 0, sizeof(buf));
51838 @@ -458,7 +458,7 @@ static ssize_t iwl_dbgfs_rx_handlers_write(struct file *file,
51839 struct iwl_priv *priv = file->private_data;
51840
51841 char buf[8];
51842 - int buf_size;
51843 + size_t buf_size;
51844 u32 reset_flag;
51845
51846 memset(buf, 0, sizeof(buf));
51847 @@ -539,7 +539,7 @@ static ssize_t iwl_dbgfs_disable_ht40_write(struct file *file,
51848 {
51849 struct iwl_priv *priv = file->private_data;
51850 char buf[8];
51851 - int buf_size;
51852 + size_t buf_size;
51853 int ht40;
51854
51855 memset(buf, 0, sizeof(buf));
51856 @@ -591,7 +591,7 @@ static ssize_t iwl_dbgfs_sleep_level_override_write(struct file *file,
51857 {
51858 struct iwl_priv *priv = file->private_data;
51859 char buf[8];
51860 - int buf_size;
51861 + size_t buf_size;
51862 int value;
51863
51864 memset(buf, 0, sizeof(buf));
51865 @@ -683,10 +683,10 @@ DEBUGFS_READ_FILE_OPS(temperature);
51866 DEBUGFS_READ_WRITE_FILE_OPS(sleep_level_override);
51867 DEBUGFS_READ_FILE_OPS(current_sleep_command);
51868
51869 -static const char *fmt_value = " %-30s %10u\n";
51870 -static const char *fmt_hex = " %-30s 0x%02X\n";
51871 -static const char *fmt_table = " %-30s %10u %10u %10u %10u\n";
51872 -static const char *fmt_header =
51873 +static const char fmt_value[] = " %-30s %10u\n";
51874 +static const char fmt_hex[] = " %-30s 0x%02X\n";
51875 +static const char fmt_table[] = " %-30s %10u %10u %10u %10u\n";
51876 +static const char fmt_header[] =
51877 "%-32s current cumulative delta max\n";
51878
51879 static int iwl_statistics_flag(struct iwl_priv *priv, char *buf, int bufsz)
51880 @@ -1856,7 +1856,7 @@ static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct file *file,
51881 {
51882 struct iwl_priv *priv = file->private_data;
51883 char buf[8];
51884 - int buf_size;
51885 + size_t buf_size;
51886 int clear;
51887
51888 memset(buf, 0, sizeof(buf));
51889 @@ -1901,7 +1901,7 @@ static ssize_t iwl_dbgfs_ucode_tracing_write(struct file *file,
51890 {
51891 struct iwl_priv *priv = file->private_data;
51892 char buf[8];
51893 - int buf_size;
51894 + size_t buf_size;
51895 int trace;
51896
51897 memset(buf, 0, sizeof(buf));
51898 @@ -1972,7 +1972,7 @@ static ssize_t iwl_dbgfs_missed_beacon_write(struct file *file,
51899 {
51900 struct iwl_priv *priv = file->private_data;
51901 char buf[8];
51902 - int buf_size;
51903 + size_t buf_size;
51904 int missed;
51905
51906 memset(buf, 0, sizeof(buf));
51907 @@ -2013,7 +2013,7 @@ static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
51908
51909 struct iwl_priv *priv = file->private_data;
51910 char buf[8];
51911 - int buf_size;
51912 + size_t buf_size;
51913 int plcp;
51914
51915 memset(buf, 0, sizeof(buf));
51916 @@ -2073,7 +2073,7 @@ static ssize_t iwl_dbgfs_txfifo_flush_write(struct file *file,
51917
51918 struct iwl_priv *priv = file->private_data;
51919 char buf[8];
51920 - int buf_size;
51921 + size_t buf_size;
51922 int flush;
51923
51924 memset(buf, 0, sizeof(buf));
51925 @@ -2163,7 +2163,7 @@ static ssize_t iwl_dbgfs_protection_mode_write(struct file *file,
51926
51927 struct iwl_priv *priv = file->private_data;
51928 char buf[8];
51929 - int buf_size;
51930 + size_t buf_size;
51931 int rts;
51932
51933 if (!priv->cfg->ht_params)
51934 @@ -2204,7 +2204,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
51935 {
51936 struct iwl_priv *priv = file->private_data;
51937 char buf[8];
51938 - int buf_size;
51939 + size_t buf_size;
51940
51941 memset(buf, 0, sizeof(buf));
51942 buf_size = min(count, sizeof(buf) - 1);
51943 @@ -2238,7 +2238,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
51944 struct iwl_priv *priv = file->private_data;
51945 u32 event_log_flag;
51946 char buf[8];
51947 - int buf_size;
51948 + size_t buf_size;
51949
51950 /* check that the interface is up */
51951 if (!iwl_is_ready(priv))
51952 @@ -2292,7 +2292,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
51953 struct iwl_priv *priv = file->private_data;
51954 char buf[8];
51955 u32 calib_disabled;
51956 - int buf_size;
51957 + size_t buf_size;
51958
51959 memset(buf, 0, sizeof(buf));
51960 buf_size = min(count, sizeof(buf) - 1);
51961 diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
51962 index 9e144e7..2f5511a 100644
51963 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c
51964 +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
51965 @@ -1950,7 +1950,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
51966 struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
51967
51968 char buf[8];
51969 - int buf_size;
51970 + size_t buf_size;
51971 u32 reset_flag;
51972
51973 memset(buf, 0, sizeof(buf));
51974 @@ -1971,7 +1971,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
51975 {
51976 struct iwl_trans *trans = file->private_data;
51977 char buf[8];
51978 - int buf_size;
51979 + size_t buf_size;
51980 int csr;
51981
51982 memset(buf, 0, sizeof(buf));
51983 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
51984 index 99e873d..0d9aab2 100644
51985 --- a/drivers/net/wireless/mac80211_hwsim.c
51986 +++ b/drivers/net/wireless/mac80211_hwsim.c
51987 @@ -3148,20 +3148,20 @@ static int __init init_mac80211_hwsim(void)
51988 if (channels < 1)
51989 return -EINVAL;
51990
51991 - mac80211_hwsim_mchan_ops = mac80211_hwsim_ops;
51992 - mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
51993 - mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
51994 - mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
51995 - mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
51996 - mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
51997 - mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
51998 - mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
51999 - mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
52000 - mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
52001 - mac80211_hwsim_mchan_ops.assign_vif_chanctx =
52002 - mac80211_hwsim_assign_vif_chanctx;
52003 - mac80211_hwsim_mchan_ops.unassign_vif_chanctx =
52004 - mac80211_hwsim_unassign_vif_chanctx;
52005 + pax_open_kernel();
52006 + memcpy((void *)&mac80211_hwsim_mchan_ops, &mac80211_hwsim_ops, sizeof mac80211_hwsim_mchan_ops);
52007 + *(void **)&mac80211_hwsim_mchan_ops.hw_scan = mac80211_hwsim_hw_scan;
52008 + *(void **)&mac80211_hwsim_mchan_ops.cancel_hw_scan = mac80211_hwsim_cancel_hw_scan;
52009 + *(void **)&mac80211_hwsim_mchan_ops.sw_scan_start = NULL;
52010 + *(void **)&mac80211_hwsim_mchan_ops.sw_scan_complete = NULL;
52011 + *(void **)&mac80211_hwsim_mchan_ops.remain_on_channel = mac80211_hwsim_roc;
52012 + *(void **)&mac80211_hwsim_mchan_ops.cancel_remain_on_channel = mac80211_hwsim_croc;
52013 + *(void **)&mac80211_hwsim_mchan_ops.add_chanctx = mac80211_hwsim_add_chanctx;
52014 + *(void **)&mac80211_hwsim_mchan_ops.remove_chanctx = mac80211_hwsim_remove_chanctx;
52015 + *(void **)&mac80211_hwsim_mchan_ops.change_chanctx = mac80211_hwsim_change_chanctx;
52016 + *(void **)&mac80211_hwsim_mchan_ops.assign_vif_chanctx = mac80211_hwsim_assign_vif_chanctx;
52017 + *(void **)&mac80211_hwsim_mchan_ops.unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx;
52018 + pax_close_kernel();
52019
52020 spin_lock_init(&hwsim_radio_lock);
52021 INIT_LIST_HEAD(&hwsim_radios);
52022 diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
52023 index 71a825c..ce7d6c3 100644
52024 --- a/drivers/net/wireless/rndis_wlan.c
52025 +++ b/drivers/net/wireless/rndis_wlan.c
52026 @@ -1236,7 +1236,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
52027
52028 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
52029
52030 - if (rts_threshold < 0 || rts_threshold > 2347)
52031 + if (rts_threshold > 2347)
52032 rts_threshold = 2347;
52033
52034 tmp = cpu_to_le32(rts_threshold);
52035 diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
52036 index 9bb398b..b0cc047 100644
52037 --- a/drivers/net/wireless/rt2x00/rt2x00.h
52038 +++ b/drivers/net/wireless/rt2x00/rt2x00.h
52039 @@ -375,7 +375,7 @@ struct rt2x00_intf {
52040 * for hardware which doesn't support hardware
52041 * sequence counting.
52042 */
52043 - atomic_t seqno;
52044 + atomic_unchecked_t seqno;
52045 };
52046
52047 static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
52048 diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
52049 index 68b620b..92ecd9e 100644
52050 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
52051 +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
52052 @@ -224,9 +224,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
52053 * sequence counter given by mac80211.
52054 */
52055 if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
52056 - seqno = atomic_add_return(0x10, &intf->seqno);
52057 + seqno = atomic_add_return_unchecked(0x10, &intf->seqno);
52058 else
52059 - seqno = atomic_read(&intf->seqno);
52060 + seqno = atomic_read_unchecked(&intf->seqno);
52061
52062 hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
52063 hdr->seq_ctrl |= cpu_to_le16(seqno);
52064 diff --git a/drivers/net/wireless/ti/wl1251/sdio.c b/drivers/net/wireless/ti/wl1251/sdio.c
52065 index b661f896..ddf7d2b 100644
52066 --- a/drivers/net/wireless/ti/wl1251/sdio.c
52067 +++ b/drivers/net/wireless/ti/wl1251/sdio.c
52068 @@ -282,13 +282,17 @@ static int wl1251_sdio_probe(struct sdio_func *func,
52069
52070 irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING);
52071
52072 - wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
52073 - wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
52074 + pax_open_kernel();
52075 + *(void **)&wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq;
52076 + *(void **)&wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq;
52077 + pax_close_kernel();
52078
52079 wl1251_info("using dedicated interrupt line");
52080 } else {
52081 - wl1251_sdio_ops.enable_irq = wl1251_sdio_enable_irq;
52082 - wl1251_sdio_ops.disable_irq = wl1251_sdio_disable_irq;
52083 + pax_open_kernel();
52084 + *(void **)&wl1251_sdio_ops.enable_irq = wl1251_sdio_enable_irq;
52085 + *(void **)&wl1251_sdio_ops.disable_irq = wl1251_sdio_disable_irq;
52086 + pax_close_kernel();
52087
52088 wl1251_info("using SDIO interrupt");
52089 }
52090 diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c
52091 index af0fe2e..d04986b 100644
52092 --- a/drivers/net/wireless/ti/wl12xx/main.c
52093 +++ b/drivers/net/wireless/ti/wl12xx/main.c
52094 @@ -655,7 +655,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl)
52095 sizeof(wl->conf.mem));
52096
52097 /* read data preparation is only needed by wl127x */
52098 - wl->ops->prepare_read = wl127x_prepare_read;
52099 + pax_open_kernel();
52100 + *(void **)&wl->ops->prepare_read = wl127x_prepare_read;
52101 + pax_close_kernel();
52102
52103 wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER,
52104 WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER,
52105 @@ -680,7 +682,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl)
52106 sizeof(wl->conf.mem));
52107
52108 /* read data preparation is only needed by wl127x */
52109 - wl->ops->prepare_read = wl127x_prepare_read;
52110 + pax_open_kernel();
52111 + *(void **)&wl->ops->prepare_read = wl127x_prepare_read;
52112 + pax_close_kernel();
52113
52114 wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER,
52115 WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER,
52116 diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
52117 index 49aca2c..3b9c10c 100644
52118 --- a/drivers/net/wireless/ti/wl18xx/main.c
52119 +++ b/drivers/net/wireless/ti/wl18xx/main.c
52120 @@ -1952,8 +1952,10 @@ static int wl18xx_setup(struct wl1271 *wl)
52121 }
52122
52123 if (!checksum_param) {
52124 - wl18xx_ops.set_rx_csum = NULL;
52125 - wl18xx_ops.init_vif = NULL;
52126 + pax_open_kernel();
52127 + *(void **)&wl18xx_ops.set_rx_csum = NULL;
52128 + *(void **)&wl18xx_ops.init_vif = NULL;
52129 + pax_close_kernel();
52130 }
52131
52132 /* Enable 11a Band only if we have 5G antennas */
52133 diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
52134 index a912dc0..a8225ba 100644
52135 --- a/drivers/net/wireless/zd1211rw/zd_usb.c
52136 +++ b/drivers/net/wireless/zd1211rw/zd_usb.c
52137 @@ -385,7 +385,7 @@ static inline void handle_regs_int(struct urb *urb)
52138 {
52139 struct zd_usb *usb = urb->context;
52140 struct zd_usb_interrupt *intr = &usb->intr;
52141 - int len;
52142 + unsigned int len;
52143 u16 int_num;
52144
52145 ZD_ASSERT(in_interrupt());
52146 diff --git a/drivers/nfc/nfcwilink.c b/drivers/nfc/nfcwilink.c
52147 index ce2e2cf..f81e500 100644
52148 --- a/drivers/nfc/nfcwilink.c
52149 +++ b/drivers/nfc/nfcwilink.c
52150 @@ -497,7 +497,7 @@ static struct nci_ops nfcwilink_ops = {
52151
52152 static int nfcwilink_probe(struct platform_device *pdev)
52153 {
52154 - static struct nfcwilink *drv;
52155 + struct nfcwilink *drv;
52156 int rc;
52157 __u32 protocols;
52158
52159 diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
52160 index 6e82bc42..ab4145c 100644
52161 --- a/drivers/of/fdt.c
52162 +++ b/drivers/of/fdt.c
52163 @@ -1161,7 +1161,9 @@ static int __init of_fdt_raw_init(void)
52164 pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n");
52165 return 0;
52166 }
52167 - of_fdt_raw_attr.size = fdt_totalsize(initial_boot_params);
52168 + pax_open_kernel();
52169 + *(size_t *)&of_fdt_raw_attr.size = fdt_totalsize(initial_boot_params);
52170 + pax_close_kernel();
52171 return sysfs_create_bin_file(firmware_kobj, &of_fdt_raw_attr);
52172 }
52173 late_initcall(of_fdt_raw_init);
52174 diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c
52175 index 82f7000..d6d0447 100644
52176 --- a/drivers/oprofile/buffer_sync.c
52177 +++ b/drivers/oprofile/buffer_sync.c
52178 @@ -345,7 +345,7 @@ static void add_data(struct op_entry *entry, struct mm_struct *mm)
52179 if (cookie == NO_COOKIE)
52180 offset = pc;
52181 if (cookie == INVALID_COOKIE) {
52182 - atomic_inc(&oprofile_stats.sample_lost_no_mapping);
52183 + atomic_inc_unchecked(&oprofile_stats.sample_lost_no_mapping);
52184 offset = pc;
52185 }
52186 if (cookie != last_cookie) {
52187 @@ -389,14 +389,14 @@ add_sample(struct mm_struct *mm, struct op_sample *s, int in_kernel)
52188 /* add userspace sample */
52189
52190 if (!mm) {
52191 - atomic_inc(&oprofile_stats.sample_lost_no_mm);
52192 + atomic_inc_unchecked(&oprofile_stats.sample_lost_no_mm);
52193 return 0;
52194 }
52195
52196 cookie = lookup_dcookie(mm, s->eip, &offset);
52197
52198 if (cookie == INVALID_COOKIE) {
52199 - atomic_inc(&oprofile_stats.sample_lost_no_mapping);
52200 + atomic_inc_unchecked(&oprofile_stats.sample_lost_no_mapping);
52201 return 0;
52202 }
52203
52204 @@ -554,7 +554,7 @@ void sync_buffer(int cpu)
52205 /* ignore backtraces if failed to add a sample */
52206 if (state == sb_bt_start) {
52207 state = sb_bt_ignore;
52208 - atomic_inc(&oprofile_stats.bt_lost_no_mapping);
52209 + atomic_inc_unchecked(&oprofile_stats.bt_lost_no_mapping);
52210 }
52211 }
52212 release_mm(mm);
52213 diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c
52214 index c0cc4e7..44d4e54 100644
52215 --- a/drivers/oprofile/event_buffer.c
52216 +++ b/drivers/oprofile/event_buffer.c
52217 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value)
52218 }
52219
52220 if (buffer_pos == buffer_size) {
52221 - atomic_inc(&oprofile_stats.event_lost_overflow);
52222 + atomic_inc_unchecked(&oprofile_stats.event_lost_overflow);
52223 return;
52224 }
52225
52226 diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c
52227 index ed2c3ec..deda85a 100644
52228 --- a/drivers/oprofile/oprof.c
52229 +++ b/drivers/oprofile/oprof.c
52230 @@ -110,7 +110,7 @@ static void switch_worker(struct work_struct *work)
52231 if (oprofile_ops.switch_events())
52232 return;
52233
52234 - atomic_inc(&oprofile_stats.multiplex_counter);
52235 + atomic_inc_unchecked(&oprofile_stats.multiplex_counter);
52236 start_switch_worker();
52237 }
52238
52239 diff --git a/drivers/oprofile/oprofile_files.c b/drivers/oprofile/oprofile_files.c
52240 index ee2cfce..7f8f699 100644
52241 --- a/drivers/oprofile/oprofile_files.c
52242 +++ b/drivers/oprofile/oprofile_files.c
52243 @@ -27,7 +27,7 @@ unsigned long oprofile_time_slice;
52244
52245 #ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
52246
52247 -static ssize_t timeout_read(struct file *file, char __user *buf,
52248 +static ssize_t __intentional_overflow(-1) timeout_read(struct file *file, char __user *buf,
52249 size_t count, loff_t *offset)
52250 {
52251 return oprofilefs_ulong_to_user(jiffies_to_msecs(oprofile_time_slice),
52252 diff --git a/drivers/oprofile/oprofile_stats.c b/drivers/oprofile/oprofile_stats.c
52253 index 59659ce..6c860a0 100644
52254 --- a/drivers/oprofile/oprofile_stats.c
52255 +++ b/drivers/oprofile/oprofile_stats.c
52256 @@ -30,11 +30,11 @@ void oprofile_reset_stats(void)
52257 cpu_buf->sample_invalid_eip = 0;
52258 }
52259
52260 - atomic_set(&oprofile_stats.sample_lost_no_mm, 0);
52261 - atomic_set(&oprofile_stats.sample_lost_no_mapping, 0);
52262 - atomic_set(&oprofile_stats.event_lost_overflow, 0);
52263 - atomic_set(&oprofile_stats.bt_lost_no_mapping, 0);
52264 - atomic_set(&oprofile_stats.multiplex_counter, 0);
52265 + atomic_set_unchecked(&oprofile_stats.sample_lost_no_mm, 0);
52266 + atomic_set_unchecked(&oprofile_stats.sample_lost_no_mapping, 0);
52267 + atomic_set_unchecked(&oprofile_stats.event_lost_overflow, 0);
52268 + atomic_set_unchecked(&oprofile_stats.bt_lost_no_mapping, 0);
52269 + atomic_set_unchecked(&oprofile_stats.multiplex_counter, 0);
52270 }
52271
52272
52273 diff --git a/drivers/oprofile/oprofile_stats.h b/drivers/oprofile/oprofile_stats.h
52274 index 1fc622b..8c48fc3 100644
52275 --- a/drivers/oprofile/oprofile_stats.h
52276 +++ b/drivers/oprofile/oprofile_stats.h
52277 @@ -13,11 +13,11 @@
52278 #include <linux/atomic.h>
52279
52280 struct oprofile_stat_struct {
52281 - atomic_t sample_lost_no_mm;
52282 - atomic_t sample_lost_no_mapping;
52283 - atomic_t bt_lost_no_mapping;
52284 - atomic_t event_lost_overflow;
52285 - atomic_t multiplex_counter;
52286 + atomic_unchecked_t sample_lost_no_mm;
52287 + atomic_unchecked_t sample_lost_no_mapping;
52288 + atomic_unchecked_t bt_lost_no_mapping;
52289 + atomic_unchecked_t event_lost_overflow;
52290 + atomic_unchecked_t multiplex_counter;
52291 };
52292
52293 extern struct oprofile_stat_struct oprofile_stats;
52294 diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c
52295 index dd92c5e..dfc04b5 100644
52296 --- a/drivers/oprofile/oprofilefs.c
52297 +++ b/drivers/oprofile/oprofilefs.c
52298 @@ -176,8 +176,8 @@ int oprofilefs_create_ro_ulong(struct dentry *root,
52299
52300 static ssize_t atomic_read_file(struct file *file, char __user *buf, size_t count, loff_t *offset)
52301 {
52302 - atomic_t *val = file->private_data;
52303 - return oprofilefs_ulong_to_user(atomic_read(val), buf, count, offset);
52304 + atomic_unchecked_t *val = file->private_data;
52305 + return oprofilefs_ulong_to_user(atomic_read_unchecked(val), buf, count, offset);
52306 }
52307
52308
52309 @@ -189,7 +189,7 @@ static const struct file_operations atomic_ro_fops = {
52310
52311
52312 int oprofilefs_create_ro_atomic(struct dentry *root,
52313 - char const *name, atomic_t *val)
52314 + char const *name, atomic_unchecked_t *val)
52315 {
52316 return __oprofilefs_create_file(root, name,
52317 &atomic_ro_fops, 0444, val);
52318 diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c
52319 index bdef916..88c7dee 100644
52320 --- a/drivers/oprofile/timer_int.c
52321 +++ b/drivers/oprofile/timer_int.c
52322 @@ -93,7 +93,7 @@ static int oprofile_cpu_notify(struct notifier_block *self,
52323 return NOTIFY_OK;
52324 }
52325
52326 -static struct notifier_block __refdata oprofile_cpu_notifier = {
52327 +static struct notifier_block oprofile_cpu_notifier = {
52328 .notifier_call = oprofile_cpu_notify,
52329 };
52330
52331 diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c
52332 index c776333..aa6b325 100644
52333 --- a/drivers/parport/procfs.c
52334 +++ b/drivers/parport/procfs.c
52335 @@ -65,7 +65,7 @@ static int do_active_device(struct ctl_table *table, int write,
52336
52337 *ppos += len;
52338
52339 - return copy_to_user(result, buffer, len) ? -EFAULT : 0;
52340 + return (len > sizeof buffer || copy_to_user(result, buffer, len)) ? -EFAULT : 0;
52341 }
52342
52343 #ifdef CONFIG_PARPORT_1284
52344 @@ -107,7 +107,7 @@ static int do_autoprobe(struct ctl_table *table, int write,
52345
52346 *ppos += len;
52347
52348 - return copy_to_user (result, buffer, len) ? -EFAULT : 0;
52349 + return (len > sizeof buffer || copy_to_user (result, buffer, len)) ? -EFAULT : 0;
52350 }
52351 #endif /* IEEE1284.3 support. */
52352
52353 diff --git a/drivers/pci/host/pci-host-generic.c b/drivers/pci/host/pci-host-generic.c
52354 index ba46e58..90cfc24 100644
52355 --- a/drivers/pci/host/pci-host-generic.c
52356 +++ b/drivers/pci/host/pci-host-generic.c
52357 @@ -26,9 +26,9 @@
52358 #include <linux/platform_device.h>
52359
52360 struct gen_pci_cfg_bus_ops {
52361 + struct pci_ops ops;
52362 u32 bus_shift;
52363 - void __iomem *(*map_bus)(struct pci_bus *, unsigned int, int);
52364 -};
52365 +} __do_const;
52366
52367 struct gen_pci_cfg_windows {
52368 struct resource res;
52369 @@ -56,8 +56,12 @@ static void __iomem *gen_pci_map_cfg_bus_cam(struct pci_bus *bus,
52370 }
52371
52372 static struct gen_pci_cfg_bus_ops gen_pci_cfg_cam_bus_ops = {
52373 + .ops = {
52374 + .map_bus = gen_pci_map_cfg_bus_cam,
52375 + .read = pci_generic_config_read,
52376 + .write = pci_generic_config_write,
52377 + },
52378 .bus_shift = 16,
52379 - .map_bus = gen_pci_map_cfg_bus_cam,
52380 };
52381
52382 static void __iomem *gen_pci_map_cfg_bus_ecam(struct pci_bus *bus,
52383 @@ -72,13 +76,12 @@ static void __iomem *gen_pci_map_cfg_bus_ecam(struct pci_bus *bus,
52384 }
52385
52386 static struct gen_pci_cfg_bus_ops gen_pci_cfg_ecam_bus_ops = {
52387 + .ops = {
52388 + .map_bus = gen_pci_map_cfg_bus_ecam,
52389 + .read = pci_generic_config_read,
52390 + .write = pci_generic_config_write,
52391 + },
52392 .bus_shift = 20,
52393 - .map_bus = gen_pci_map_cfg_bus_ecam,
52394 -};
52395 -
52396 -static struct pci_ops gen_pci_ops = {
52397 - .read = pci_generic_config_read,
52398 - .write = pci_generic_config_write,
52399 };
52400
52401 static const struct of_device_id gen_pci_of_match[] = {
52402 @@ -219,7 +222,6 @@ static int gen_pci_probe(struct platform_device *pdev)
52403 .private_data = (void **)&pci,
52404 .setup = gen_pci_setup,
52405 .map_irq = of_irq_parse_and_map_pci,
52406 - .ops = &gen_pci_ops,
52407 };
52408
52409 if (!pci)
52410 @@ -241,7 +243,7 @@ static int gen_pci_probe(struct platform_device *pdev)
52411
52412 of_id = of_match_node(gen_pci_of_match, np);
52413 pci->cfg.ops = of_id->data;
52414 - gen_pci_ops.map_bus = pci->cfg.ops->map_bus;
52415 + hw.ops = &pci->cfg.ops->ops;
52416 pci->host.dev.parent = dev;
52417 INIT_LIST_HEAD(&pci->host.windows);
52418 INIT_LIST_HEAD(&pci->resources);
52419 diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c
52420 index 6ca2399..68d866b 100644
52421 --- a/drivers/pci/hotplug/acpiphp_ibm.c
52422 +++ b/drivers/pci/hotplug/acpiphp_ibm.c
52423 @@ -452,7 +452,9 @@ static int __init ibm_acpiphp_init(void)
52424 goto init_cleanup;
52425 }
52426
52427 - ibm_apci_table_attr.size = ibm_get_table_from_acpi(NULL);
52428 + pax_open_kernel();
52429 + *(size_t *)&ibm_apci_table_attr.size = ibm_get_table_from_acpi(NULL);
52430 + pax_close_kernel();
52431 retval = sysfs_create_bin_file(sysdir, &ibm_apci_table_attr);
52432
52433 return retval;
52434 diff --git a/drivers/pci/hotplug/cpcihp_generic.c b/drivers/pci/hotplug/cpcihp_generic.c
52435 index 66b7bbe..26bee78 100644
52436 --- a/drivers/pci/hotplug/cpcihp_generic.c
52437 +++ b/drivers/pci/hotplug/cpcihp_generic.c
52438 @@ -73,7 +73,6 @@ static u16 port;
52439 static unsigned int enum_bit;
52440 static u8 enum_mask;
52441
52442 -static struct cpci_hp_controller_ops generic_hpc_ops;
52443 static struct cpci_hp_controller generic_hpc;
52444
52445 static int __init validate_parameters(void)
52446 @@ -139,6 +138,10 @@ static int query_enum(void)
52447 return ((value & enum_mask) == enum_mask);
52448 }
52449
52450 +static struct cpci_hp_controller_ops generic_hpc_ops = {
52451 + .query_enum = query_enum,
52452 +};
52453 +
52454 static int __init cpcihp_generic_init(void)
52455 {
52456 int status;
52457 @@ -165,7 +168,6 @@ static int __init cpcihp_generic_init(void)
52458 pci_dev_put(dev);
52459
52460 memset(&generic_hpc, 0, sizeof (struct cpci_hp_controller));
52461 - generic_hpc_ops.query_enum = query_enum;
52462 generic_hpc.ops = &generic_hpc_ops;
52463
52464 status = cpci_hp_register_controller(&generic_hpc);
52465 diff --git a/drivers/pci/hotplug/cpcihp_zt5550.c b/drivers/pci/hotplug/cpcihp_zt5550.c
52466 index 7ecf34e..effed62 100644
52467 --- a/drivers/pci/hotplug/cpcihp_zt5550.c
52468 +++ b/drivers/pci/hotplug/cpcihp_zt5550.c
52469 @@ -59,7 +59,6 @@
52470 /* local variables */
52471 static bool debug;
52472 static bool poll;
52473 -static struct cpci_hp_controller_ops zt5550_hpc_ops;
52474 static struct cpci_hp_controller zt5550_hpc;
52475
52476 /* Primary cPCI bus bridge device */
52477 @@ -204,6 +203,10 @@ static int zt5550_hc_disable_irq(void)
52478 return 0;
52479 }
52480
52481 +static struct cpci_hp_controller_ops zt5550_hpc_ops = {
52482 + .query_enum = zt5550_hc_query_enum,
52483 +};
52484 +
52485 static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
52486 {
52487 int status;
52488 @@ -215,16 +218,17 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id
52489 dbg("returned from zt5550_hc_config");
52490
52491 memset(&zt5550_hpc, 0, sizeof (struct cpci_hp_controller));
52492 - zt5550_hpc_ops.query_enum = zt5550_hc_query_enum;
52493 zt5550_hpc.ops = &zt5550_hpc_ops;
52494 if (!poll) {
52495 zt5550_hpc.irq = hc_dev->irq;
52496 zt5550_hpc.irq_flags = IRQF_SHARED;
52497 zt5550_hpc.dev_id = hc_dev;
52498
52499 - zt5550_hpc_ops.enable_irq = zt5550_hc_enable_irq;
52500 - zt5550_hpc_ops.disable_irq = zt5550_hc_disable_irq;
52501 - zt5550_hpc_ops.check_irq = zt5550_hc_check_irq;
52502 + pax_open_kernel();
52503 + *(void **)&zt5550_hpc_ops.enable_irq = zt5550_hc_enable_irq;
52504 + *(void **)&zt5550_hpc_ops.disable_irq = zt5550_hc_disable_irq;
52505 + *(void **)&zt5550_hpc_ops.check_irq = zt5550_hc_check_irq;
52506 + pax_open_kernel();
52507 } else {
52508 info("using ENUM# polling mode");
52509 }
52510 diff --git a/drivers/pci/hotplug/cpqphp_nvram.c b/drivers/pci/hotplug/cpqphp_nvram.c
52511 index 1e08ff8c..3cd145f 100644
52512 --- a/drivers/pci/hotplug/cpqphp_nvram.c
52513 +++ b/drivers/pci/hotplug/cpqphp_nvram.c
52514 @@ -425,8 +425,10 @@ static u32 store_HRT (void __iomem *rom_start)
52515
52516 void compaq_nvram_init (void __iomem *rom_start)
52517 {
52518 +#ifndef CONFIG_PAX_KERNEXEC
52519 if (rom_start)
52520 compaq_int15_entry_point = (rom_start + ROM_INT15_PHY_ADDR - ROM_PHY_ADDR);
52521 +#endif
52522
52523 dbg("int15 entry = %p\n", compaq_int15_entry_point);
52524
52525 diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c
52526 index 56d8486..f26113f 100644
52527 --- a/drivers/pci/hotplug/pci_hotplug_core.c
52528 +++ b/drivers/pci/hotplug/pci_hotplug_core.c
52529 @@ -436,8 +436,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus,
52530 return -EINVAL;
52531 }
52532
52533 - slot->ops->owner = owner;
52534 - slot->ops->mod_name = mod_name;
52535 + pax_open_kernel();
52536 + *(struct module **)&slot->ops->owner = owner;
52537 + *(const char **)&slot->ops->mod_name = mod_name;
52538 + pax_close_kernel();
52539
52540 mutex_lock(&pci_hp_mutex);
52541 /*
52542 diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
52543 index 612b21a..9494a5e 100644
52544 --- a/drivers/pci/hotplug/pciehp_core.c
52545 +++ b/drivers/pci/hotplug/pciehp_core.c
52546 @@ -87,7 +87,7 @@ static int init_slot(struct controller *ctrl)
52547 struct slot *slot = ctrl->slot;
52548 struct hotplug_slot *hotplug = NULL;
52549 struct hotplug_slot_info *info = NULL;
52550 - struct hotplug_slot_ops *ops = NULL;
52551 + hotplug_slot_ops_no_const *ops = NULL;
52552 char name[SLOT_NAME_SIZE];
52553 int retval = -ENOMEM;
52554
52555 diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
52556 index f66be86..6cbcabb 100644
52557 --- a/drivers/pci/msi.c
52558 +++ b/drivers/pci/msi.c
52559 @@ -492,8 +492,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
52560 {
52561 struct attribute **msi_attrs;
52562 struct attribute *msi_attr;
52563 - struct device_attribute *msi_dev_attr;
52564 - struct attribute_group *msi_irq_group;
52565 + device_attribute_no_const *msi_dev_attr;
52566 + attribute_group_no_const *msi_irq_group;
52567 const struct attribute_group **msi_irq_groups;
52568 struct msi_desc *entry;
52569 int ret = -ENOMEM;
52570 @@ -552,7 +552,7 @@ error_attrs:
52571 count = 0;
52572 msi_attr = msi_attrs[count];
52573 while (msi_attr) {
52574 - msi_dev_attr = container_of(msi_attr, struct device_attribute, attr);
52575 + msi_dev_attr = container_of(msi_attr, device_attribute_no_const, attr);
52576 kfree(msi_attr->name);
52577 kfree(msi_dev_attr);
52578 ++count;
52579 @@ -1236,12 +1236,14 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
52580 if (ops == NULL) {
52581 info->ops = &pci_msi_domain_ops_default;
52582 } else {
52583 + pax_open_kernel();
52584 if (ops->set_desc == NULL)
52585 - ops->set_desc = pci_msi_domain_set_desc;
52586 + *(void **)&ops->set_desc = pci_msi_domain_set_desc;
52587 if (ops->msi_check == NULL)
52588 - ops->msi_check = pci_msi_domain_check_cap;
52589 + *(void **)&ops->msi_check = pci_msi_domain_check_cap;
52590 if (ops->handle_error == NULL)
52591 - ops->handle_error = pci_msi_domain_handle_error;
52592 + *(void **)&ops->handle_error = pci_msi_domain_handle_error;
52593 + pax_close_kernel();
52594 }
52595 }
52596
52597 @@ -1250,8 +1252,11 @@ static void pci_msi_domain_update_chip_ops(struct msi_domain_info *info)
52598 struct irq_chip *chip = info->chip;
52599
52600 BUG_ON(!chip);
52601 - if (!chip->irq_write_msi_msg)
52602 - chip->irq_write_msi_msg = pci_msi_domain_write_msg;
52603 + if (!chip->irq_write_msi_msg) {
52604 + pax_open_kernel();
52605 + *(void **)&chip->irq_write_msi_msg = pci_msi_domain_write_msg;
52606 + pax_close_kernel();
52607 + }
52608 }
52609
52610 /**
52611 diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
52612 index 312f23a..d21181c 100644
52613 --- a/drivers/pci/pci-sysfs.c
52614 +++ b/drivers/pci/pci-sysfs.c
52615 @@ -1140,7 +1140,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
52616 {
52617 /* allocate attribute structure, piggyback attribute name */
52618 int name_len = write_combine ? 13 : 10;
52619 - struct bin_attribute *res_attr;
52620 + bin_attribute_no_const *res_attr;
52621 int retval;
52622
52623 res_attr = kzalloc(sizeof(*res_attr) + name_len, GFP_ATOMIC);
52624 @@ -1317,7 +1317,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
52625 static int pci_create_capabilities_sysfs(struct pci_dev *dev)
52626 {
52627 int retval;
52628 - struct bin_attribute *attr;
52629 + bin_attribute_no_const *attr;
52630
52631 /* If the device has VPD, try to expose it in sysfs. */
52632 if (dev->vpd) {
52633 @@ -1364,7 +1364,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
52634 {
52635 int retval;
52636 int rom_size = 0;
52637 - struct bin_attribute *attr;
52638 + bin_attribute_no_const *attr;
52639
52640 if (!sysfs_initialized)
52641 return -EACCES;
52642 diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
52643 index 4ff0ff1..e309fb0 100644
52644 --- a/drivers/pci/pci.h
52645 +++ b/drivers/pci/pci.h
52646 @@ -99,7 +99,7 @@ struct pci_vpd_ops {
52647 struct pci_vpd {
52648 unsigned int len;
52649 const struct pci_vpd_ops *ops;
52650 - struct bin_attribute *attr; /* descriptor for sysfs VPD entry */
52651 + bin_attribute_no_const *attr; /* descriptor for sysfs VPD entry */
52652 };
52653
52654 int pci_vpd_pci22_init(struct pci_dev *dev);
52655 diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
52656 index 317e355..21f7b91 100644
52657 --- a/drivers/pci/pcie/aspm.c
52658 +++ b/drivers/pci/pcie/aspm.c
52659 @@ -27,9 +27,9 @@
52660 #define MODULE_PARAM_PREFIX "pcie_aspm."
52661
52662 /* Note: those are not register definitions */
52663 -#define ASPM_STATE_L0S_UP (1) /* Upstream direction L0s state */
52664 -#define ASPM_STATE_L0S_DW (2) /* Downstream direction L0s state */
52665 -#define ASPM_STATE_L1 (4) /* L1 state */
52666 +#define ASPM_STATE_L0S_UP (1U) /* Upstream direction L0s state */
52667 +#define ASPM_STATE_L0S_DW (2U) /* Downstream direction L0s state */
52668 +#define ASPM_STATE_L1 (4U) /* L1 state */
52669 #define ASPM_STATE_L0S (ASPM_STATE_L0S_UP | ASPM_STATE_L0S_DW)
52670 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
52671
52672 diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
52673 index be35da2..ec16cdb 100644
52674 --- a/drivers/pci/pcie/portdrv_pci.c
52675 +++ b/drivers/pci/pcie/portdrv_pci.c
52676 @@ -324,7 +324,7 @@ static int __init dmi_pcie_pme_disable_msi(const struct dmi_system_id *d)
52677 return 0;
52678 }
52679
52680 -static struct dmi_system_id __initdata pcie_portdrv_dmi_table[] = {
52681 +static const struct dmi_system_id __initconst pcie_portdrv_dmi_table[] = {
52682 /*
52683 * Boxes that should not use MSI for PCIe PME signaling.
52684 */
52685 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
52686 index f6ae0d0..af897bc 100644
52687 --- a/drivers/pci/probe.c
52688 +++ b/drivers/pci/probe.c
52689 @@ -176,7 +176,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
52690 u16 orig_cmd;
52691 struct pci_bus_region region, inverted_region;
52692
52693 - mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
52694 + mask = type ? (u32)PCI_ROM_ADDRESS_MASK : ~0;
52695
52696 /* No printks while decoding is disabled! */
52697 if (!dev->mmio_always_on) {
52698 diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
52699 index 3f155e7..0f4b1f0 100644
52700 --- a/drivers/pci/proc.c
52701 +++ b/drivers/pci/proc.c
52702 @@ -434,7 +434,16 @@ static const struct file_operations proc_bus_pci_dev_operations = {
52703 static int __init pci_proc_init(void)
52704 {
52705 struct pci_dev *dev = NULL;
52706 +
52707 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
52708 +#ifdef CONFIG_GRKERNSEC_PROC_USER
52709 + proc_bus_pci_dir = proc_mkdir_mode("bus/pci", S_IRUSR | S_IXUSR, NULL);
52710 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
52711 + proc_bus_pci_dir = proc_mkdir_mode("bus/pci", S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP, NULL);
52712 +#endif
52713 +#else
52714 proc_bus_pci_dir = proc_mkdir("bus/pci", NULL);
52715 +#endif
52716 proc_create("devices", 0, proc_bus_pci_dir,
52717 &proc_bus_pci_dev_operations);
52718 proc_initialized = 1;
52719 diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
52720 index 2deb130..8194e13 100644
52721 --- a/drivers/pinctrl/pinctrl-at91.c
52722 +++ b/drivers/pinctrl/pinctrl-at91.c
52723 @@ -24,6 +24,7 @@
52724 #include <linux/pinctrl/pinmux.h>
52725 /* Since we request GPIOs from ourself */
52726 #include <linux/pinctrl/consumer.h>
52727 +#include <asm/pgtable.h>
52728
52729 #include "pinctrl-at91.h"
52730 #include "core.h"
52731 @@ -1656,7 +1657,9 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev,
52732 at91_gpio->pioc_hwirq = irqd_to_hwirq(d);
52733
52734 /* Setup proper .irq_set_type function */
52735 - gpio_irqchip.irq_set_type = at91_gpio->ops->irq_type;
52736 + pax_open_kernel();
52737 + *(void **)&gpio_irqchip.irq_set_type = at91_gpio->ops->irq_type;
52738 + pax_close_kernel();
52739
52740 /* Disable irqs of this PIO controller */
52741 writel_relaxed(~0, at91_gpio->regbase + PIO_IDR);
52742 diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c
52743 index 3474920..acc9581 100644
52744 --- a/drivers/platform/chrome/chromeos_pstore.c
52745 +++ b/drivers/platform/chrome/chromeos_pstore.c
52746 @@ -13,7 +13,7 @@
52747 #include <linux/platform_device.h>
52748 #include <linux/pstore_ram.h>
52749
52750 -static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = {
52751 +static const struct dmi_system_id chromeos_pstore_dmi_table[] __initconst = {
52752 {
52753 /*
52754 * Today all Chromebooks/boxes ship with Google_* as version and
52755 diff --git a/drivers/platform/x86/alienware-wmi.c b/drivers/platform/x86/alienware-wmi.c
52756 index 1e1e594..8fe59c5 100644
52757 --- a/drivers/platform/x86/alienware-wmi.c
52758 +++ b/drivers/platform/x86/alienware-wmi.c
52759 @@ -150,7 +150,7 @@ struct wmax_led_args {
52760 } __packed;
52761
52762 static struct platform_device *platform_device;
52763 -static struct device_attribute *zone_dev_attrs;
52764 +static device_attribute_no_const *zone_dev_attrs;
52765 static struct attribute **zone_attrs;
52766 static struct platform_zone *zone_data;
52767
52768 @@ -160,7 +160,7 @@ static struct platform_driver platform_driver = {
52769 }
52770 };
52771
52772 -static struct attribute_group zone_attribute_group = {
52773 +static attribute_group_no_const zone_attribute_group = {
52774 .name = "rgb_zones",
52775 };
52776
52777 diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
52778 index efbc3f0..18ae682 100644
52779 --- a/drivers/platform/x86/asus-wmi.c
52780 +++ b/drivers/platform/x86/asus-wmi.c
52781 @@ -1868,6 +1868,10 @@ static int show_dsts(struct seq_file *m, void *data)
52782 int err;
52783 u32 retval = -1;
52784
52785 +#ifdef CONFIG_GRKERNSEC_KMEM
52786 + return -EPERM;
52787 +#endif
52788 +
52789 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval);
52790
52791 if (err < 0)
52792 @@ -1884,6 +1888,10 @@ static int show_devs(struct seq_file *m, void *data)
52793 int err;
52794 u32 retval = -1;
52795
52796 +#ifdef CONFIG_GRKERNSEC_KMEM
52797 + return -EPERM;
52798 +#endif
52799 +
52800 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param,
52801 &retval);
52802
52803 @@ -1908,6 +1916,10 @@ static int show_call(struct seq_file *m, void *data)
52804 union acpi_object *obj;
52805 acpi_status status;
52806
52807 +#ifdef CONFIG_GRKERNSEC_KMEM
52808 + return -EPERM;
52809 +#endif
52810 +
52811 status = wmi_evaluate_method(ASUS_WMI_MGMT_GUID,
52812 1, asus->debug.method_id,
52813 &input, &output);
52814 diff --git a/drivers/platform/x86/compal-laptop.c b/drivers/platform/x86/compal-laptop.c
52815 index f2706d2..850edfa4 100644
52816 --- a/drivers/platform/x86/compal-laptop.c
52817 +++ b/drivers/platform/x86/compal-laptop.c
52818 @@ -765,7 +765,7 @@ static int dmi_check_cb_extra(const struct dmi_system_id *id)
52819 return 1;
52820 }
52821
52822 -static struct dmi_system_id __initdata compal_dmi_table[] = {
52823 +static const struct dmi_system_id __initconst compal_dmi_table[] = {
52824 {
52825 .ident = "FL90/IFL90",
52826 .matches = {
52827 diff --git a/drivers/platform/x86/hdaps.c b/drivers/platform/x86/hdaps.c
52828 index 458e6c9..089aee7 100644
52829 --- a/drivers/platform/x86/hdaps.c
52830 +++ b/drivers/platform/x86/hdaps.c
52831 @@ -514,7 +514,7 @@ static int __init hdaps_dmi_match_invert(const struct dmi_system_id *id)
52832 "ThinkPad T42p", so the order of the entries matters.
52833 If your ThinkPad is not recognized, please update to latest
52834 BIOS. This is especially the case for some R52 ThinkPads. */
52835 -static struct dmi_system_id __initdata hdaps_whitelist[] = {
52836 +static const struct dmi_system_id __initconst hdaps_whitelist[] = {
52837 HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad R50p", HDAPS_BOTH_AXES),
52838 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R50"),
52839 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"),
52840 diff --git a/drivers/platform/x86/ibm_rtl.c b/drivers/platform/x86/ibm_rtl.c
52841 index 97c2be1..2ee50ce 100644
52842 --- a/drivers/platform/x86/ibm_rtl.c
52843 +++ b/drivers/platform/x86/ibm_rtl.c
52844 @@ -227,7 +227,7 @@ static void rtl_teardown_sysfs(void) {
52845 }
52846
52847
52848 -static struct dmi_system_id __initdata ibm_rtl_dmi_table[] = {
52849 +static const struct dmi_system_id __initconst ibm_rtl_dmi_table[] = {
52850 { \
52851 .matches = { \
52852 DMI_MATCH(DMI_SYS_VENDOR, "IBM"), \
52853 diff --git a/drivers/platform/x86/intel_oaktrail.c b/drivers/platform/x86/intel_oaktrail.c
52854 index 6aa33c4..cfb5425 100644
52855 --- a/drivers/platform/x86/intel_oaktrail.c
52856 +++ b/drivers/platform/x86/intel_oaktrail.c
52857 @@ -299,7 +299,7 @@ static int dmi_check_cb(const struct dmi_system_id *id)
52858 return 0;
52859 }
52860
52861 -static struct dmi_system_id __initdata oaktrail_dmi_table[] = {
52862 +static const struct dmi_system_id __initconst oaktrail_dmi_table[] = {
52863 {
52864 .ident = "OakTrail platform",
52865 .matches = {
52866 diff --git a/drivers/platform/x86/msi-laptop.c b/drivers/platform/x86/msi-laptop.c
52867 index 4231770..10a6caf 100644
52868 --- a/drivers/platform/x86/msi-laptop.c
52869 +++ b/drivers/platform/x86/msi-laptop.c
52870 @@ -605,7 +605,7 @@ static int dmi_check_cb(const struct dmi_system_id *dmi)
52871 return 1;
52872 }
52873
52874 -static struct dmi_system_id __initdata msi_dmi_table[] = {
52875 +static const struct dmi_system_id __initconst msi_dmi_table[] = {
52876 {
52877 .ident = "MSI S270",
52878 .matches = {
52879 @@ -1000,12 +1000,14 @@ static int __init load_scm_model_init(struct platform_device *sdev)
52880
52881 if (!quirks->ec_read_only) {
52882 /* allow userland write sysfs file */
52883 - dev_attr_bluetooth.store = store_bluetooth;
52884 - dev_attr_wlan.store = store_wlan;
52885 - dev_attr_threeg.store = store_threeg;
52886 - dev_attr_bluetooth.attr.mode |= S_IWUSR;
52887 - dev_attr_wlan.attr.mode |= S_IWUSR;
52888 - dev_attr_threeg.attr.mode |= S_IWUSR;
52889 + pax_open_kernel();
52890 + *(void **)&dev_attr_bluetooth.store = store_bluetooth;
52891 + *(void **)&dev_attr_wlan.store = store_wlan;
52892 + *(void **)&dev_attr_threeg.store = store_threeg;
52893 + *(umode_t *)&dev_attr_bluetooth.attr.mode |= S_IWUSR;
52894 + *(umode_t *)&dev_attr_wlan.attr.mode |= S_IWUSR;
52895 + *(umode_t *)&dev_attr_threeg.attr.mode |= S_IWUSR;
52896 + pax_close_kernel();
52897 }
52898
52899 /* disable hardware control by fn key */
52900 diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c
52901 index 978e6d6..1f0b37d 100644
52902 --- a/drivers/platform/x86/msi-wmi.c
52903 +++ b/drivers/platform/x86/msi-wmi.c
52904 @@ -184,7 +184,7 @@ static const struct backlight_ops msi_backlight_ops = {
52905 static void msi_wmi_notify(u32 value, void *context)
52906 {
52907 struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL };
52908 - static struct key_entry *key;
52909 + struct key_entry *key;
52910 union acpi_object *obj;
52911 acpi_status status;
52912
52913 diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
52914 index 8c146e2..356c62e 100644
52915 --- a/drivers/platform/x86/samsung-laptop.c
52916 +++ b/drivers/platform/x86/samsung-laptop.c
52917 @@ -1567,7 +1567,7 @@ static int __init samsung_dmi_matched(const struct dmi_system_id *d)
52918 return 0;
52919 }
52920
52921 -static struct dmi_system_id __initdata samsung_dmi_table[] = {
52922 +static const struct dmi_system_id __initconst samsung_dmi_table[] = {
52923 {
52924 .matches = {
52925 DMI_MATCH(DMI_SYS_VENDOR,
52926 diff --git a/drivers/platform/x86/samsung-q10.c b/drivers/platform/x86/samsung-q10.c
52927 index e6aac72..e11ff24 100644
52928 --- a/drivers/platform/x86/samsung-q10.c
52929 +++ b/drivers/platform/x86/samsung-q10.c
52930 @@ -95,7 +95,7 @@ static int __init dmi_check_callback(const struct dmi_system_id *id)
52931 return 1;
52932 }
52933
52934 -static struct dmi_system_id __initdata samsungq10_dmi_table[] = {
52935 +static const struct dmi_system_id __initconst samsungq10_dmi_table[] = {
52936 {
52937 .ident = "Samsung Q10",
52938 .matches = {
52939 diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
52940 index aeb80d1..3eb376b 100644
52941 --- a/drivers/platform/x86/sony-laptop.c
52942 +++ b/drivers/platform/x86/sony-laptop.c
52943 @@ -2527,7 +2527,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd)
52944 }
52945
52946 /* High speed charging function */
52947 -static struct device_attribute *hsc_handle;
52948 +static device_attribute_no_const *hsc_handle;
52949
52950 static ssize_t sony_nc_highspeed_charging_store(struct device *dev,
52951 struct device_attribute *attr,
52952 @@ -2601,7 +2601,7 @@ static void sony_nc_highspeed_charging_cleanup(struct platform_device *pd)
52953 }
52954
52955 /* low battery function */
52956 -static struct device_attribute *lowbatt_handle;
52957 +static device_attribute_no_const *lowbatt_handle;
52958
52959 static ssize_t sony_nc_lowbatt_store(struct device *dev,
52960 struct device_attribute *attr,
52961 @@ -2667,7 +2667,7 @@ static void sony_nc_lowbatt_cleanup(struct platform_device *pd)
52962 }
52963
52964 /* fan speed function */
52965 -static struct device_attribute *fan_handle, *hsf_handle;
52966 +static device_attribute_no_const *fan_handle, *hsf_handle;
52967
52968 static ssize_t sony_nc_hsfan_store(struct device *dev,
52969 struct device_attribute *attr,
52970 @@ -2774,7 +2774,7 @@ static void sony_nc_fanspeed_cleanup(struct platform_device *pd)
52971 }
52972
52973 /* USB charge function */
52974 -static struct device_attribute *uc_handle;
52975 +static device_attribute_no_const *uc_handle;
52976
52977 static ssize_t sony_nc_usb_charge_store(struct device *dev,
52978 struct device_attribute *attr,
52979 @@ -2848,7 +2848,7 @@ static void sony_nc_usb_charge_cleanup(struct platform_device *pd)
52980 }
52981
52982 /* Panel ID function */
52983 -static struct device_attribute *panel_handle;
52984 +static device_attribute_no_const *panel_handle;
52985
52986 static ssize_t sony_nc_panelid_show(struct device *dev,
52987 struct device_attribute *attr, char *buffer)
52988 @@ -2895,7 +2895,7 @@ static void sony_nc_panelid_cleanup(struct platform_device *pd)
52989 }
52990
52991 /* smart connect function */
52992 -static struct device_attribute *sc_handle;
52993 +static device_attribute_no_const *sc_handle;
52994
52995 static ssize_t sony_nc_smart_conn_store(struct device *dev,
52996 struct device_attribute *attr,
52997 @@ -4851,7 +4851,7 @@ static struct acpi_driver sony_pic_driver = {
52998 .drv.pm = &sony_pic_pm,
52999 };
53000
53001 -static struct dmi_system_id __initdata sonypi_dmi_table[] = {
53002 +static const struct dmi_system_id __initconst sonypi_dmi_table[] = {
53003 {
53004 .ident = "Sony Vaio",
53005 .matches = {
53006 diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
53007 index 33e488c..417aaea 100644
53008 --- a/drivers/platform/x86/thinkpad_acpi.c
53009 +++ b/drivers/platform/x86/thinkpad_acpi.c
53010 @@ -2460,10 +2460,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
53011 && !tp_features.bright_unkfw)
53012 TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_FNHOME);
53013 }
53014 +}
53015
53016 #undef TPACPI_COMPARE_KEY
53017 #undef TPACPI_MAY_SEND_KEY
53018 -}
53019
53020 /*
53021 * Polling driver
53022 diff --git a/drivers/pnp/pnpbios/bioscalls.c b/drivers/pnp/pnpbios/bioscalls.c
53023 index 438d4c7..ca8a2fb 100644
53024 --- a/drivers/pnp/pnpbios/bioscalls.c
53025 +++ b/drivers/pnp/pnpbios/bioscalls.c
53026 @@ -59,7 +59,7 @@ do { \
53027 set_desc_limit(&gdt[(selname) >> 3], (size) - 1); \
53028 } while(0)
53029
53030 -static struct desc_struct bad_bios_desc = GDT_ENTRY_INIT(0x4092,
53031 +static const struct desc_struct bad_bios_desc = GDT_ENTRY_INIT(0x4093,
53032 (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
53033
53034 /*
53035 @@ -96,7 +96,10 @@ static inline u16 call_pnp_bios(u16 func, u16 arg1, u16 arg2, u16 arg3,
53036
53037 cpu = get_cpu();
53038 save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8];
53039 +
53040 + pax_open_kernel();
53041 get_cpu_gdt_table(cpu)[0x40 / 8] = bad_bios_desc;
53042 + pax_close_kernel();
53043
53044 /* On some boxes IRQ's during PnP BIOS calls are deadly. */
53045 spin_lock_irqsave(&pnp_bios_lock, flags);
53046 @@ -134,7 +137,10 @@ static inline u16 call_pnp_bios(u16 func, u16 arg1, u16 arg2, u16 arg3,
53047 :"memory");
53048 spin_unlock_irqrestore(&pnp_bios_lock, flags);
53049
53050 + pax_open_kernel();
53051 get_cpu_gdt_table(cpu)[0x40 / 8] = save_desc_40;
53052 + pax_close_kernel();
53053 +
53054 put_cpu();
53055
53056 /* If we get here and this is set then the PnP BIOS faulted on us. */
53057 @@ -468,7 +474,7 @@ int pnp_bios_read_escd(char *data, u32 nvram_base)
53058 return status;
53059 }
53060
53061 -void pnpbios_calls_init(union pnp_bios_install_struct *header)
53062 +void __init pnpbios_calls_init(union pnp_bios_install_struct *header)
53063 {
53064 int i;
53065
53066 @@ -476,6 +482,8 @@ void pnpbios_calls_init(union pnp_bios_install_struct *header)
53067 pnp_bios_callpoint.offset = header->fields.pm16offset;
53068 pnp_bios_callpoint.segment = PNP_CS16;
53069
53070 + pax_open_kernel();
53071 +
53072 for_each_possible_cpu(i) {
53073 struct desc_struct *gdt = get_cpu_gdt_table(i);
53074 if (!gdt)
53075 @@ -487,4 +495,6 @@ void pnpbios_calls_init(union pnp_bios_install_struct *header)
53076 set_desc_base(&gdt[GDT_ENTRY_PNPBIOS_DS],
53077 (unsigned long)__va(header->fields.pm16dseg));
53078 }
53079 +
53080 + pax_close_kernel();
53081 }
53082 diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
53083 index facd43b..b291260 100644
53084 --- a/drivers/pnp/pnpbios/core.c
53085 +++ b/drivers/pnp/pnpbios/core.c
53086 @@ -494,7 +494,7 @@ static int __init exploding_pnp_bios(const struct dmi_system_id *d)
53087 return 0;
53088 }
53089
53090 -static struct dmi_system_id pnpbios_dmi_table[] __initdata = {
53091 +static const struct dmi_system_id pnpbios_dmi_table[] __initconst = {
53092 { /* PnPBIOS GPF on boot */
53093 .callback = exploding_pnp_bios,
53094 .ident = "Higraded P14H",
53095 diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
53096 index dfe1ee8..67e820c 100644
53097 --- a/drivers/power/pda_power.c
53098 +++ b/drivers/power/pda_power.c
53099 @@ -38,7 +38,11 @@ static struct power_supply *pda_psy_ac, *pda_psy_usb;
53100
53101 #if IS_ENABLED(CONFIG_USB_PHY)
53102 static struct usb_phy *transceiver;
53103 -static struct notifier_block otg_nb;
53104 +static int otg_handle_notification(struct notifier_block *nb,
53105 + unsigned long event, void *unused);
53106 +static struct notifier_block otg_nb = {
53107 + .notifier_call = otg_handle_notification
53108 +};
53109 #endif
53110
53111 static struct regulator *ac_draw;
53112 @@ -373,7 +377,6 @@ static int pda_power_probe(struct platform_device *pdev)
53113
53114 #if IS_ENABLED(CONFIG_USB_PHY)
53115 if (!IS_ERR_OR_NULL(transceiver) && pdata->use_otg_notifier) {
53116 - otg_nb.notifier_call = otg_handle_notification;
53117 ret = usb_register_notifier(transceiver, &otg_nb);
53118 if (ret) {
53119 dev_err(dev, "failure to register otg notifier\n");
53120 diff --git a/drivers/power/power_supply.h b/drivers/power/power_supply.h
53121 index cc439fd..8fa30df 100644
53122 --- a/drivers/power/power_supply.h
53123 +++ b/drivers/power/power_supply.h
53124 @@ -16,12 +16,12 @@ struct power_supply;
53125
53126 #ifdef CONFIG_SYSFS
53127
53128 -extern void power_supply_init_attrs(struct device_type *dev_type);
53129 +extern void power_supply_init_attrs(void);
53130 extern int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env);
53131
53132 #else
53133
53134 -static inline void power_supply_init_attrs(struct device_type *dev_type) {}
53135 +static inline void power_supply_init_attrs(void) {}
53136 #define power_supply_uevent NULL
53137
53138 #endif /* CONFIG_SYSFS */
53139 diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
53140 index 869284c..38a812b 100644
53141 --- a/drivers/power/power_supply_core.c
53142 +++ b/drivers/power/power_supply_core.c
53143 @@ -28,7 +28,10 @@ EXPORT_SYMBOL_GPL(power_supply_class);
53144 ATOMIC_NOTIFIER_HEAD(power_supply_notifier);
53145 EXPORT_SYMBOL_GPL(power_supply_notifier);
53146
53147 -static struct device_type power_supply_dev_type;
53148 +extern const struct attribute_group *power_supply_attr_groups[];
53149 +static struct device_type power_supply_dev_type = {
53150 + .groups = power_supply_attr_groups,
53151 +};
53152
53153 #define POWER_SUPPLY_DEFERRED_REGISTER_TIME msecs_to_jiffies(10)
53154
53155 @@ -960,7 +963,7 @@ static int __init power_supply_class_init(void)
53156 return PTR_ERR(power_supply_class);
53157
53158 power_supply_class->dev_uevent = power_supply_uevent;
53159 - power_supply_init_attrs(&power_supply_dev_type);
53160 + power_supply_init_attrs();
53161
53162 return 0;
53163 }
53164 diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
53165 index ed2d7fd..266b28f 100644
53166 --- a/drivers/power/power_supply_sysfs.c
53167 +++ b/drivers/power/power_supply_sysfs.c
53168 @@ -238,17 +238,15 @@ static struct attribute_group power_supply_attr_group = {
53169 .is_visible = power_supply_attr_is_visible,
53170 };
53171
53172 -static const struct attribute_group *power_supply_attr_groups[] = {
53173 +const struct attribute_group *power_supply_attr_groups[] = {
53174 &power_supply_attr_group,
53175 NULL,
53176 };
53177
53178 -void power_supply_init_attrs(struct device_type *dev_type)
53179 +void power_supply_init_attrs(void)
53180 {
53181 int i;
53182
53183 - dev_type->groups = power_supply_attr_groups;
53184 -
53185 for (i = 0; i < ARRAY_SIZE(power_supply_attrs); i++)
53186 __power_supply_attrs[i] = &power_supply_attrs[i].attr;
53187 }
53188 diff --git a/drivers/power/reset/at91-reset.c b/drivers/power/reset/at91-reset.c
53189 index 36dc52f..e2e8a4b 100644
53190 --- a/drivers/power/reset/at91-reset.c
53191 +++ b/drivers/power/reset/at91-reset.c
53192 @@ -16,6 +16,7 @@
53193 #include <linux/of_address.h>
53194 #include <linux/platform_device.h>
53195 #include <linux/reboot.h>
53196 +#include <asm/pgtable.h>
53197
53198 #include <soc/at91/at91sam9_ddrsdr.h>
53199 #include <soc/at91/at91sam9_sdramc.h>
53200 @@ -191,7 +192,9 @@ static int at91_reset_of_probe(struct platform_device *pdev)
53201 }
53202
53203 match = of_match_node(at91_reset_of_match, pdev->dev.of_node);
53204 - at91_restart_nb.notifier_call = match->data;
53205 + pax_open_kernel();
53206 + *(void **)&at91_restart_nb.notifier_call = match->data;
53207 + pax_close_kernel();
53208 return register_restart_handler(&at91_restart_nb);
53209 }
53210
53211 @@ -219,9 +222,11 @@ static int at91_reset_platform_probe(struct platform_device *pdev)
53212 }
53213
53214 match = platform_get_device_id(pdev);
53215 - at91_restart_nb.notifier_call =
53216 + pax_open_kernel();
53217 + *(void **)&at91_restart_nb.notifier_call =
53218 (int (*)(struct notifier_block *,
53219 unsigned long, void *)) match->driver_data;
53220 + pax_close_kernel();
53221
53222 return register_restart_handler(&at91_restart_nb);
53223 }
53224 diff --git a/drivers/powercap/powercap_sys.c b/drivers/powercap/powercap_sys.c
53225 index 84419af..268ede8 100644
53226 --- a/drivers/powercap/powercap_sys.c
53227 +++ b/drivers/powercap/powercap_sys.c
53228 @@ -154,8 +154,77 @@ struct powercap_constraint_attr {
53229 struct device_attribute name_attr;
53230 };
53231
53232 +static ssize_t show_constraint_name(struct device *dev,
53233 + struct device_attribute *dev_attr,
53234 + char *buf);
53235 +
53236 static struct powercap_constraint_attr
53237 - constraint_attrs[MAX_CONSTRAINTS_PER_ZONE];
53238 + constraint_attrs[MAX_CONSTRAINTS_PER_ZONE] = {
53239 + [0 ... MAX_CONSTRAINTS_PER_ZONE - 1] = {
53240 + .power_limit_attr = {
53241 + .attr = {
53242 + .name = NULL,
53243 + .mode = S_IWUSR | S_IRUGO
53244 + },
53245 + .show = show_constraint_power_limit_uw,
53246 + .store = store_constraint_power_limit_uw
53247 + },
53248 +
53249 + .time_window_attr = {
53250 + .attr = {
53251 + .name = NULL,
53252 + .mode = S_IWUSR | S_IRUGO
53253 + },
53254 + .show = show_constraint_time_window_us,
53255 + .store = store_constraint_time_window_us
53256 + },
53257 +
53258 + .max_power_attr = {
53259 + .attr = {
53260 + .name = NULL,
53261 + .mode = S_IRUGO
53262 + },
53263 + .show = show_constraint_max_power_uw,
53264 + .store = NULL
53265 + },
53266 +
53267 + .min_power_attr = {
53268 + .attr = {
53269 + .name = NULL,
53270 + .mode = S_IRUGO
53271 + },
53272 + .show = show_constraint_min_power_uw,
53273 + .store = NULL
53274 + },
53275 +
53276 + .max_time_window_attr = {
53277 + .attr = {
53278 + .name = NULL,
53279 + .mode = S_IRUGO
53280 + },
53281 + .show = show_constraint_max_time_window_us,
53282 + .store = NULL
53283 + },
53284 +
53285 + .min_time_window_attr = {
53286 + .attr = {
53287 + .name = NULL,
53288 + .mode = S_IRUGO
53289 + },
53290 + .show = show_constraint_min_time_window_us,
53291 + .store = NULL
53292 + },
53293 +
53294 + .name_attr = {
53295 + .attr = {
53296 + .name = NULL,
53297 + .mode = S_IRUGO
53298 + },
53299 + .show = show_constraint_name,
53300 + .store = NULL
53301 + }
53302 + }
53303 +};
53304
53305 /* A list of powercap control_types */
53306 static LIST_HEAD(powercap_cntrl_list);
53307 @@ -193,23 +262,16 @@ static ssize_t show_constraint_name(struct device *dev,
53308 }
53309
53310 static int create_constraint_attribute(int id, const char *name,
53311 - int mode,
53312 - struct device_attribute *dev_attr,
53313 - ssize_t (*show)(struct device *,
53314 - struct device_attribute *, char *),
53315 - ssize_t (*store)(struct device *,
53316 - struct device_attribute *,
53317 - const char *, size_t)
53318 - )
53319 + struct device_attribute *dev_attr)
53320 {
53321 + name = kasprintf(GFP_KERNEL, "constraint_%d_%s", id, name);
53322
53323 - dev_attr->attr.name = kasprintf(GFP_KERNEL, "constraint_%d_%s",
53324 - id, name);
53325 - if (!dev_attr->attr.name)
53326 + if (!name)
53327 return -ENOMEM;
53328 - dev_attr->attr.mode = mode;
53329 - dev_attr->show = show;
53330 - dev_attr->store = store;
53331 +
53332 + pax_open_kernel();
53333 + *(const char **)&dev_attr->attr.name = name;
53334 + pax_close_kernel();
53335
53336 return 0;
53337 }
53338 @@ -236,49 +298,31 @@ static int seed_constraint_attributes(void)
53339
53340 for (i = 0; i < MAX_CONSTRAINTS_PER_ZONE; ++i) {
53341 ret = create_constraint_attribute(i, "power_limit_uw",
53342 - S_IWUSR | S_IRUGO,
53343 - &constraint_attrs[i].power_limit_attr,
53344 - show_constraint_power_limit_uw,
53345 - store_constraint_power_limit_uw);
53346 + &constraint_attrs[i].power_limit_attr);
53347 if (ret)
53348 goto err_alloc;
53349 ret = create_constraint_attribute(i, "time_window_us",
53350 - S_IWUSR | S_IRUGO,
53351 - &constraint_attrs[i].time_window_attr,
53352 - show_constraint_time_window_us,
53353 - store_constraint_time_window_us);
53354 + &constraint_attrs[i].time_window_attr);
53355 if (ret)
53356 goto err_alloc;
53357 - ret = create_constraint_attribute(i, "name", S_IRUGO,
53358 - &constraint_attrs[i].name_attr,
53359 - show_constraint_name,
53360 - NULL);
53361 + ret = create_constraint_attribute(i, "name",
53362 + &constraint_attrs[i].name_attr);
53363 if (ret)
53364 goto err_alloc;
53365 - ret = create_constraint_attribute(i, "max_power_uw", S_IRUGO,
53366 - &constraint_attrs[i].max_power_attr,
53367 - show_constraint_max_power_uw,
53368 - NULL);
53369 + ret = create_constraint_attribute(i, "max_power_uw",
53370 + &constraint_attrs[i].max_power_attr);
53371 if (ret)
53372 goto err_alloc;
53373 - ret = create_constraint_attribute(i, "min_power_uw", S_IRUGO,
53374 - &constraint_attrs[i].min_power_attr,
53375 - show_constraint_min_power_uw,
53376 - NULL);
53377 + ret = create_constraint_attribute(i, "min_power_uw",
53378 + &constraint_attrs[i].min_power_attr);
53379 if (ret)
53380 goto err_alloc;
53381 ret = create_constraint_attribute(i, "max_time_window_us",
53382 - S_IRUGO,
53383 - &constraint_attrs[i].max_time_window_attr,
53384 - show_constraint_max_time_window_us,
53385 - NULL);
53386 + &constraint_attrs[i].max_time_window_attr);
53387 if (ret)
53388 goto err_alloc;
53389 ret = create_constraint_attribute(i, "min_time_window_us",
53390 - S_IRUGO,
53391 - &constraint_attrs[i].min_time_window_attr,
53392 - show_constraint_min_time_window_us,
53393 - NULL);
53394 + &constraint_attrs[i].min_time_window_attr);
53395 if (ret)
53396 goto err_alloc;
53397
53398 @@ -378,10 +422,12 @@ static void create_power_zone_common_attributes(
53399 power_zone->zone_dev_attrs[count++] =
53400 &dev_attr_max_energy_range_uj.attr;
53401 if (power_zone->ops->get_energy_uj) {
53402 + pax_open_kernel();
53403 if (power_zone->ops->reset_energy_uj)
53404 - dev_attr_energy_uj.attr.mode = S_IWUSR | S_IRUGO;
53405 + *(umode_t *)&dev_attr_energy_uj.attr.mode = S_IWUSR | S_IRUGO;
53406 else
53407 - dev_attr_energy_uj.attr.mode = S_IRUGO;
53408 + *(umode_t *)&dev_attr_energy_uj.attr.mode = S_IRUGO;
53409 + pax_close_kernel();
53410 power_zone->zone_dev_attrs[count++] =
53411 &dev_attr_energy_uj.attr;
53412 }
53413 diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
53414 index 9c5d414..c7900ce 100644
53415 --- a/drivers/ptp/ptp_private.h
53416 +++ b/drivers/ptp/ptp_private.h
53417 @@ -51,7 +51,7 @@ struct ptp_clock {
53418 struct mutex pincfg_mux; /* protect concurrent info->pin_config access */
53419 wait_queue_head_t tsev_wq;
53420 int defunct; /* tells readers to go away when clock is being removed */
53421 - struct device_attribute *pin_dev_attr;
53422 + device_attribute_no_const *pin_dev_attr;
53423 struct attribute **pin_attr;
53424 struct attribute_group pin_attr_group;
53425 };
53426 diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
53427 index 302e626..12579af 100644
53428 --- a/drivers/ptp/ptp_sysfs.c
53429 +++ b/drivers/ptp/ptp_sysfs.c
53430 @@ -280,7 +280,7 @@ static int ptp_populate_pins(struct ptp_clock *ptp)
53431 goto no_pin_attr;
53432
53433 for (i = 0; i < n_pins; i++) {
53434 - struct device_attribute *da = &ptp->pin_dev_attr[i];
53435 + device_attribute_no_const *da = &ptp->pin_dev_attr[i];
53436 sysfs_attr_init(&da->attr);
53437 da->attr.name = info->pin_config[i].name;
53438 da->attr.mode = 0644;
53439 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
53440 index 78387a6..faffdc7 100644
53441 --- a/drivers/regulator/core.c
53442 +++ b/drivers/regulator/core.c
53443 @@ -3646,7 +3646,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
53444 const struct regulation_constraints *constraints = NULL;
53445 const struct regulator_init_data *init_data;
53446 struct regulator_config *config = NULL;
53447 - static atomic_t regulator_no = ATOMIC_INIT(-1);
53448 + static atomic_unchecked_t regulator_no = ATOMIC_INIT(-1);
53449 struct regulator_dev *rdev;
53450 struct device *dev;
53451 int ret, i;
53452 @@ -3729,7 +3729,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
53453 rdev->dev.class = &regulator_class;
53454 rdev->dev.parent = dev;
53455 dev_set_name(&rdev->dev, "regulator.%lu",
53456 - (unsigned long) atomic_inc_return(&regulator_no));
53457 + (unsigned long) atomic_inc_return_unchecked(&regulator_no));
53458 ret = device_register(&rdev->dev);
53459 if (ret != 0) {
53460 put_device(&rdev->dev);
53461 diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c
53462 index 4071d74..260b15a 100644
53463 --- a/drivers/regulator/max8660.c
53464 +++ b/drivers/regulator/max8660.c
53465 @@ -423,8 +423,10 @@ static int max8660_probe(struct i2c_client *client,
53466 max8660->shadow_regs[MAX8660_OVER1] = 5;
53467 } else {
53468 /* Otherwise devices can be toggled via software */
53469 - max8660_dcdc_ops.enable = max8660_dcdc_enable;
53470 - max8660_dcdc_ops.disable = max8660_dcdc_disable;
53471 + pax_open_kernel();
53472 + *(void **)&max8660_dcdc_ops.enable = max8660_dcdc_enable;
53473 + *(void **)&max8660_dcdc_ops.disable = max8660_dcdc_disable;
53474 + pax_close_kernel();
53475 }
53476
53477 /*
53478 diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c
53479 index e94ddcf..bad33ad 100644
53480 --- a/drivers/regulator/max8973-regulator.c
53481 +++ b/drivers/regulator/max8973-regulator.c
53482 @@ -580,9 +580,11 @@ static int max8973_probe(struct i2c_client *client,
53483 if (!pdata->enable_ext_control) {
53484 max->desc.enable_reg = MAX8973_VOUT;
53485 max->desc.enable_mask = MAX8973_VOUT_ENABLE;
53486 - max->ops.enable = regulator_enable_regmap;
53487 - max->ops.disable = regulator_disable_regmap;
53488 - max->ops.is_enabled = regulator_is_enabled_regmap;
53489 + pax_open_kernel();
53490 + *(void **)&max->ops.enable = regulator_enable_regmap;
53491 + *(void **)&max->ops.disable = regulator_disable_regmap;
53492 + *(void **)&max->ops.is_enabled = regulator_is_enabled_regmap;
53493 + pax_close_kernel();
53494 break;
53495 }
53496
53497 @@ -610,9 +612,11 @@ static int max8973_probe(struct i2c_client *client,
53498
53499 max->desc.enable_reg = MAX8973_VOUT;
53500 max->desc.enable_mask = MAX8973_VOUT_ENABLE;
53501 - max->ops.enable = regulator_enable_regmap;
53502 - max->ops.disable = regulator_disable_regmap;
53503 - max->ops.is_enabled = regulator_is_enabled_regmap;
53504 + pax_open_kernel();
53505 + *(void **)&max->ops.enable = regulator_enable_regmap;
53506 + *(void **)&max->ops.disable = regulator_disable_regmap;
53507 + *(void **)&max->ops.is_enabled = regulator_is_enabled_regmap;
53508 + pax_close_kernel();
53509 break;
53510 default:
53511 break;
53512 diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
53513 index 0d17c92..a29f627 100644
53514 --- a/drivers/regulator/mc13892-regulator.c
53515 +++ b/drivers/regulator/mc13892-regulator.c
53516 @@ -584,10 +584,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev)
53517 mc13xxx_unlock(mc13892);
53518
53519 /* update mc13892_vcam ops */
53520 - memcpy(&mc13892_vcam_ops, mc13892_regulators[MC13892_VCAM].desc.ops,
53521 + pax_open_kernel();
53522 + memcpy((void *)&mc13892_vcam_ops, mc13892_regulators[MC13892_VCAM].desc.ops,
53523 sizeof(struct regulator_ops));
53524 - mc13892_vcam_ops.set_mode = mc13892_vcam_set_mode,
53525 - mc13892_vcam_ops.get_mode = mc13892_vcam_get_mode,
53526 + *(void **)&mc13892_vcam_ops.set_mode = mc13892_vcam_set_mode,
53527 + *(void **)&mc13892_vcam_ops.get_mode = mc13892_vcam_get_mode,
53528 + pax_close_kernel();
53529 mc13892_regulators[MC13892_VCAM].desc.ops = &mc13892_vcam_ops;
53530
53531 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators,
53532 diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c
53533 index 2b08cac..8942201 100644
53534 --- a/drivers/rtc/rtc-armada38x.c
53535 +++ b/drivers/rtc/rtc-armada38x.c
53536 @@ -18,6 +18,7 @@
53537 #include <linux/of.h>
53538 #include <linux/platform_device.h>
53539 #include <linux/rtc.h>
53540 +#include <asm/pgtable.h>
53541
53542 #define RTC_STATUS 0x0
53543 #define RTC_STATUS_ALARM1 BIT(0)
53544 @@ -254,8 +255,10 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
53545 * If there is no interrupt available then we can't
53546 * use the alarm
53547 */
53548 - armada38x_rtc_ops.set_alarm = NULL;
53549 - armada38x_rtc_ops.alarm_irq_enable = NULL;
53550 + pax_open_kernel();
53551 + *(void **)&armada38x_rtc_ops.set_alarm = NULL;
53552 + *(void **)&armada38x_rtc_ops.alarm_irq_enable = NULL;
53553 + pax_close_kernel();
53554 }
53555 platform_set_drvdata(pdev, rtc);
53556 if (rtc->irq != -1)
53557 diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
53558 index a82556a0..e842923 100644
53559 --- a/drivers/rtc/rtc-cmos.c
53560 +++ b/drivers/rtc/rtc-cmos.c
53561 @@ -793,7 +793,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
53562 hpet_rtc_timer_init();
53563
53564 /* export at least the first block of NVRAM */
53565 - nvram.size = address_space - NVRAM_OFFSET;
53566 + pax_open_kernel();
53567 + *(size_t *)&nvram.size = address_space - NVRAM_OFFSET;
53568 + pax_close_kernel();
53569 retval = sysfs_create_bin_file(&dev->kobj, &nvram);
53570 if (retval < 0) {
53571 dev_dbg(dev, "can't create nvram file? %d\n", retval);
53572 diff --git a/drivers/rtc/rtc-dev.c b/drivers/rtc/rtc-dev.c
53573 index 799c34b..8e9786a 100644
53574 --- a/drivers/rtc/rtc-dev.c
53575 +++ b/drivers/rtc/rtc-dev.c
53576 @@ -16,6 +16,7 @@
53577 #include <linux/module.h>
53578 #include <linux/rtc.h>
53579 #include <linux/sched.h>
53580 +#include <linux/grsecurity.h>
53581 #include "rtc-core.h"
53582
53583 static dev_t rtc_devt;
53584 @@ -347,6 +348,8 @@ static long rtc_dev_ioctl(struct file *file,
53585 if (copy_from_user(&tm, uarg, sizeof(tm)))
53586 return -EFAULT;
53587
53588 + gr_log_timechange();
53589 +
53590 return rtc_set_time(rtc, &tm);
53591
53592 case RTC_PIE_ON:
53593 diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
53594 index 6e76de1..d38a1e0 100644
53595 --- a/drivers/rtc/rtc-ds1307.c
53596 +++ b/drivers/rtc/rtc-ds1307.c
53597 @@ -107,7 +107,7 @@ struct ds1307 {
53598 u8 offset; /* register's offset */
53599 u8 regs[11];
53600 u16 nvram_offset;
53601 - struct bin_attribute *nvram;
53602 + bin_attribute_no_const *nvram;
53603 enum ds_type type;
53604 unsigned long flags;
53605 #define HAS_NVRAM 0 /* bit 0 == sysfs file active */
53606 diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
53607 index 90abb5b..e0bf6dd 100644
53608 --- a/drivers/rtc/rtc-m48t59.c
53609 +++ b/drivers/rtc/rtc-m48t59.c
53610 @@ -483,7 +483,9 @@ static int m48t59_rtc_probe(struct platform_device *pdev)
53611 if (IS_ERR(m48t59->rtc))
53612 return PTR_ERR(m48t59->rtc);
53613
53614 - m48t59_nvram_attr.size = pdata->offset;
53615 + pax_open_kernel();
53616 + *(size_t *)&m48t59_nvram_attr.size = pdata->offset;
53617 + pax_close_kernel();
53618
53619 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr);
53620 if (ret)
53621 diff --git a/drivers/rtc/rtc-test.c b/drivers/rtc/rtc-test.c
53622 index 3a2da4c..e88493c 100644
53623 --- a/drivers/rtc/rtc-test.c
53624 +++ b/drivers/rtc/rtc-test.c
53625 @@ -112,8 +112,10 @@ static int test_probe(struct platform_device *plat_dev)
53626 struct rtc_device *rtc;
53627
53628 if (test_mmss64) {
53629 - test_rtc_ops.set_mmss64 = test_rtc_set_mmss64;
53630 - test_rtc_ops.set_mmss = NULL;
53631 + pax_open_kernel();
53632 + *(void **)&test_rtc_ops.set_mmss64 = test_rtc_set_mmss64;
53633 + *(void **)&test_rtc_ops.set_mmss = NULL;
53634 + pax_close_kernel();
53635 }
53636
53637 rtc = devm_rtc_device_register(&plat_dev->dev, "test",
53638 diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
53639 index 7a6dbfb..5cdcd29 100644
53640 --- a/drivers/scsi/be2iscsi/be_main.c
53641 +++ b/drivers/scsi/be2iscsi/be_main.c
53642 @@ -3184,7 +3184,7 @@ be_sgl_create_contiguous(void *virtual_address,
53643 {
53644 WARN_ON(!virtual_address);
53645 WARN_ON(!physical_address);
53646 - WARN_ON(!length > 0);
53647 + WARN_ON(!length);
53648 WARN_ON(!sgl);
53649
53650 sgl->va = virtual_address;
53651 diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h
53652 index e693af6..2e525b6 100644
53653 --- a/drivers/scsi/bfa/bfa_fcpim.h
53654 +++ b/drivers/scsi/bfa/bfa_fcpim.h
53655 @@ -36,7 +36,7 @@ struct bfa_iotag_s {
53656
53657 struct bfa_itn_s {
53658 bfa_isr_func_t isr;
53659 -};
53660 +} __no_const;
53661
53662 void bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
53663 void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m));
53664 diff --git a/drivers/scsi/bfa/bfa_fcs.c b/drivers/scsi/bfa/bfa_fcs.c
53665 index 0f19455..ef7adb5 100644
53666 --- a/drivers/scsi/bfa/bfa_fcs.c
53667 +++ b/drivers/scsi/bfa/bfa_fcs.c
53668 @@ -38,10 +38,21 @@ struct bfa_fcs_mod_s {
53669 #define BFA_FCS_MODULE(_mod) { _mod ## _modinit, _mod ## _modexit }
53670
53671 static struct bfa_fcs_mod_s fcs_modules[] = {
53672 - { bfa_fcs_port_attach, NULL, NULL },
53673 - { bfa_fcs_uf_attach, NULL, NULL },
53674 - { bfa_fcs_fabric_attach, bfa_fcs_fabric_modinit,
53675 - bfa_fcs_fabric_modexit },
53676 + {
53677 + .attach = bfa_fcs_port_attach,
53678 + .modinit = NULL,
53679 + .modexit = NULL
53680 + },
53681 + {
53682 + .attach = bfa_fcs_uf_attach,
53683 + .modinit = NULL,
53684 + .modexit = NULL
53685 + },
53686 + {
53687 + .attach = bfa_fcs_fabric_attach,
53688 + .modinit = bfa_fcs_fabric_modinit,
53689 + .modexit = bfa_fcs_fabric_modexit
53690 + },
53691 };
53692
53693 /*
53694 diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c
53695 index ff75ef8..2dfe00a 100644
53696 --- a/drivers/scsi/bfa/bfa_fcs_lport.c
53697 +++ b/drivers/scsi/bfa/bfa_fcs_lport.c
53698 @@ -89,15 +89,26 @@ static struct {
53699 void (*offline) (struct bfa_fcs_lport_s *port);
53700 } __port_action[] = {
53701 {
53702 - bfa_fcs_lport_unknown_init, bfa_fcs_lport_unknown_online,
53703 - bfa_fcs_lport_unknown_offline}, {
53704 - bfa_fcs_lport_fab_init, bfa_fcs_lport_fab_online,
53705 - bfa_fcs_lport_fab_offline}, {
53706 - bfa_fcs_lport_n2n_init, bfa_fcs_lport_n2n_online,
53707 - bfa_fcs_lport_n2n_offline}, {
53708 - bfa_fcs_lport_loop_init, bfa_fcs_lport_loop_online,
53709 - bfa_fcs_lport_loop_offline},
53710 - };
53711 + .init = bfa_fcs_lport_unknown_init,
53712 + .online = bfa_fcs_lport_unknown_online,
53713 + .offline = bfa_fcs_lport_unknown_offline
53714 + },
53715 + {
53716 + .init = bfa_fcs_lport_fab_init,
53717 + .online = bfa_fcs_lport_fab_online,
53718 + .offline = bfa_fcs_lport_fab_offline
53719 + },
53720 + {
53721 + .init = bfa_fcs_lport_n2n_init,
53722 + .online = bfa_fcs_lport_n2n_online,
53723 + .offline = bfa_fcs_lport_n2n_offline
53724 + },
53725 + {
53726 + .init = bfa_fcs_lport_loop_init,
53727 + .online = bfa_fcs_lport_loop_online,
53728 + .offline = bfa_fcs_lport_loop_offline
53729 + },
53730 +};
53731
53732 /*
53733 * fcs_port_sm FCS logical port state machine
53734 diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
53735 index a38aafa0..fe8f03b 100644
53736 --- a/drivers/scsi/bfa/bfa_ioc.h
53737 +++ b/drivers/scsi/bfa/bfa_ioc.h
53738 @@ -258,7 +258,7 @@ struct bfa_ioc_cbfn_s {
53739 bfa_ioc_disable_cbfn_t disable_cbfn;
53740 bfa_ioc_hbfail_cbfn_t hbfail_cbfn;
53741 bfa_ioc_reset_cbfn_t reset_cbfn;
53742 -};
53743 +} __no_const;
53744
53745 /*
53746 * IOC event notification mechanism.
53747 @@ -352,7 +352,7 @@ struct bfa_ioc_hwif_s {
53748 void (*ioc_set_alt_fwstate) (struct bfa_ioc_s *ioc,
53749 enum bfi_ioc_state fwstate);
53750 enum bfi_ioc_state (*ioc_get_alt_fwstate) (struct bfa_ioc_s *ioc);
53751 -};
53752 +} __no_const;
53753
53754 /*
53755 * Queue element to wait for room in request queue. FIFO order is
53756 diff --git a/drivers/scsi/bfa/bfa_modules.h b/drivers/scsi/bfa/bfa_modules.h
53757 index a14c784..6de6790 100644
53758 --- a/drivers/scsi/bfa/bfa_modules.h
53759 +++ b/drivers/scsi/bfa/bfa_modules.h
53760 @@ -78,12 +78,12 @@ enum {
53761 \
53762 extern struct bfa_module_s hal_mod_ ## __mod; \
53763 struct bfa_module_s hal_mod_ ## __mod = { \
53764 - bfa_ ## __mod ## _meminfo, \
53765 - bfa_ ## __mod ## _attach, \
53766 - bfa_ ## __mod ## _detach, \
53767 - bfa_ ## __mod ## _start, \
53768 - bfa_ ## __mod ## _stop, \
53769 - bfa_ ## __mod ## _iocdisable, \
53770 + .meminfo = bfa_ ## __mod ## _meminfo, \
53771 + .attach = bfa_ ## __mod ## _attach, \
53772 + .detach = bfa_ ## __mod ## _detach, \
53773 + .start = bfa_ ## __mod ## _start, \
53774 + .stop = bfa_ ## __mod ## _stop, \
53775 + .iocdisable = bfa_ ## __mod ## _iocdisable, \
53776 }
53777
53778 #define BFA_CACHELINE_SZ (256)
53779 diff --git a/drivers/scsi/fcoe/fcoe_sysfs.c b/drivers/scsi/fcoe/fcoe_sysfs.c
53780 index 045c4e1..13de803 100644
53781 --- a/drivers/scsi/fcoe/fcoe_sysfs.c
53782 +++ b/drivers/scsi/fcoe/fcoe_sysfs.c
53783 @@ -33,8 +33,8 @@
53784 */
53785 #include "libfcoe.h"
53786
53787 -static atomic_t ctlr_num;
53788 -static atomic_t fcf_num;
53789 +static atomic_unchecked_t ctlr_num;
53790 +static atomic_unchecked_t fcf_num;
53791
53792 /*
53793 * fcoe_fcf_dev_loss_tmo: the default number of seconds that fcoe sysfs
53794 @@ -685,7 +685,7 @@ struct fcoe_ctlr_device *fcoe_ctlr_device_add(struct device *parent,
53795 if (!ctlr)
53796 goto out;
53797
53798 - ctlr->id = atomic_inc_return(&ctlr_num) - 1;
53799 + ctlr->id = atomic_inc_return_unchecked(&ctlr_num) - 1;
53800 ctlr->f = f;
53801 ctlr->mode = FIP_CONN_TYPE_FABRIC;
53802 INIT_LIST_HEAD(&ctlr->fcfs);
53803 @@ -902,7 +902,7 @@ struct fcoe_fcf_device *fcoe_fcf_device_add(struct fcoe_ctlr_device *ctlr,
53804 fcf->dev.parent = &ctlr->dev;
53805 fcf->dev.bus = &fcoe_bus_type;
53806 fcf->dev.type = &fcoe_fcf_device_type;
53807 - fcf->id = atomic_inc_return(&fcf_num) - 1;
53808 + fcf->id = atomic_inc_return_unchecked(&fcf_num) - 1;
53809 fcf->state = FCOE_FCF_STATE_UNKNOWN;
53810
53811 fcf->dev_loss_tmo = ctlr->fcf_dev_loss_tmo;
53812 @@ -938,8 +938,8 @@ int __init fcoe_sysfs_setup(void)
53813 {
53814 int error;
53815
53816 - atomic_set(&ctlr_num, 0);
53817 - atomic_set(&fcf_num, 0);
53818 + atomic_set_unchecked(&ctlr_num, 0);
53819 + atomic_set_unchecked(&fcf_num, 0);
53820
53821 error = bus_register(&fcoe_bus_type);
53822 if (error)
53823 diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
53824 index 8bb173e..20236b4 100644
53825 --- a/drivers/scsi/hosts.c
53826 +++ b/drivers/scsi/hosts.c
53827 @@ -42,7 +42,7 @@
53828 #include "scsi_logging.h"
53829
53830
53831 -static atomic_t scsi_host_next_hn = ATOMIC_INIT(0); /* host_no for next new host */
53832 +static atomic_unchecked_t scsi_host_next_hn = ATOMIC_INIT(0); /* host_no for next new host */
53833
53834
53835 static void scsi_host_cls_release(struct device *dev)
53836 @@ -392,7 +392,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
53837 * subtract one because we increment first then return, but we need to
53838 * know what the next host number was before increment
53839 */
53840 - shost->host_no = atomic_inc_return(&scsi_host_next_hn) - 1;
53841 + shost->host_no = atomic_inc_return_unchecked(&scsi_host_next_hn) - 1;
53842 shost->dma_channel = 0xff;
53843
53844 /* These three are default values which can be overridden */
53845 diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
53846 index 1dafeb4..3da5095 100644
53847 --- a/drivers/scsi/hpsa.c
53848 +++ b/drivers/scsi/hpsa.c
53849 @@ -793,10 +793,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
53850 struct reply_queue_buffer *rq = &h->reply_queue[q];
53851
53852 if (h->transMethod & CFGTBL_Trans_io_accel1)
53853 - return h->access.command_completed(h, q);
53854 + return h->access->command_completed(h, q);
53855
53856 if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
53857 - return h->access.command_completed(h, q);
53858 + return h->access->command_completed(h, q);
53859
53860 if ((rq->head[rq->current_entry] & 1) == rq->wraparound) {
53861 a = rq->head[rq->current_entry];
53862 @@ -978,7 +978,7 @@ static void __enqueue_cmd_and_start_io(struct ctlr_info *h,
53863 break;
53864 default:
53865 set_performant_mode(h, c, reply_queue);
53866 - h->access.submit_command(h, c);
53867 + h->access->submit_command(h, c);
53868 }
53869 }
53870
53871 @@ -6340,17 +6340,17 @@ static void __iomem *remap_pci_mem(ulong base, ulong size)
53872
53873 static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q)
53874 {
53875 - return h->access.command_completed(h, q);
53876 + return h->access->command_completed(h, q);
53877 }
53878
53879 static inline bool interrupt_pending(struct ctlr_info *h)
53880 {
53881 - return h->access.intr_pending(h);
53882 + return h->access->intr_pending(h);
53883 }
53884
53885 static inline long interrupt_not_for_us(struct ctlr_info *h)
53886 {
53887 - return (h->access.intr_pending(h) == 0) ||
53888 + return (h->access->intr_pending(h) == 0) ||
53889 (h->interrupts_enabled == 0);
53890 }
53891
53892 @@ -7288,7 +7288,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
53893 if (prod_index < 0)
53894 return prod_index;
53895 h->product_name = products[prod_index].product_name;
53896 - h->access = *(products[prod_index].access);
53897 + h->access = products[prod_index].access;
53898
53899 h->needs_abort_tags_swizzled =
53900 ctlr_needs_abort_tags_swizzled(h->board_id);
53901 @@ -7687,7 +7687,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
53902 unsigned long flags;
53903 u32 lockup_detected;
53904
53905 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53906 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53907 spin_lock_irqsave(&h->lock, flags);
53908 lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
53909 if (!lockup_detected) {
53910 @@ -7970,7 +7970,7 @@ reinit_after_soft_reset:
53911 }
53912
53913 /* make sure the board interrupts are off */
53914 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53915 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53916
53917 rc = hpsa_request_irqs(h, do_hpsa_intr_msi, do_hpsa_intr_intx);
53918 if (rc)
53919 @@ -8029,7 +8029,7 @@ reinit_after_soft_reset:
53920 * fake ones to scoop up any residual completions.
53921 */
53922 spin_lock_irqsave(&h->lock, flags);
53923 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53924 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53925 spin_unlock_irqrestore(&h->lock, flags);
53926 hpsa_free_irqs(h);
53927 rc = hpsa_request_irqs(h, hpsa_msix_discard_completions,
53928 @@ -8059,9 +8059,9 @@ reinit_after_soft_reset:
53929 dev_info(&h->pdev->dev, "Board READY.\n");
53930 dev_info(&h->pdev->dev,
53931 "Waiting for stale completions to drain.\n");
53932 - h->access.set_intr_mask(h, HPSA_INTR_ON);
53933 + h->access->set_intr_mask(h, HPSA_INTR_ON);
53934 msleep(10000);
53935 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53936 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53937
53938 rc = controller_reset_failed(h->cfgtable);
53939 if (rc)
53940 @@ -8086,7 +8086,7 @@ reinit_after_soft_reset:
53941
53942
53943 /* Turn the interrupts on so we can service requests */
53944 - h->access.set_intr_mask(h, HPSA_INTR_ON);
53945 + h->access->set_intr_mask(h, HPSA_INTR_ON);
53946
53947 hpsa_hba_inquiry(h);
53948
53949 @@ -8104,7 +8104,7 @@ clean9: /* wq, sh, perf, sg, cmd, irq, shost, pci, lu, aer/h */
53950 kfree(h->hba_inquiry_data);
53951 clean7: /* perf, sg, cmd, irq, shost, pci, lu, aer/h */
53952 hpsa_free_performant_mode(h);
53953 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53954 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53955 clean6: /* sg, cmd, irq, pci, lockup, wq/aer/h */
53956 hpsa_free_sg_chain_blocks(h);
53957 clean5: /* cmd, irq, shost, pci, lu, aer/h */
53958 @@ -8174,7 +8174,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
53959 * To write all data in the battery backed cache to disks
53960 */
53961 hpsa_flush_cache(h);
53962 - h->access.set_intr_mask(h, HPSA_INTR_OFF);
53963 + h->access->set_intr_mask(h, HPSA_INTR_OFF);
53964 hpsa_free_irqs(h); /* init_one 4 */
53965 hpsa_disable_interrupt_mode(h); /* pci_init 2 */
53966 }
53967 @@ -8306,7 +8306,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
53968 CFGTBL_Trans_enable_directed_msix |
53969 (trans_support & (CFGTBL_Trans_io_accel1 |
53970 CFGTBL_Trans_io_accel2));
53971 - struct access_method access = SA5_performant_access;
53972 + struct access_method *access = &SA5_performant_access;
53973
53974 /* This is a bit complicated. There are 8 registers on
53975 * the controller which we write to to tell it 8 different
53976 @@ -8348,7 +8348,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
53977 * perform the superfluous readl() after each command submission.
53978 */
53979 if (trans_support & (CFGTBL_Trans_io_accel1 | CFGTBL_Trans_io_accel2))
53980 - access = SA5_performant_access_no_read;
53981 + access = &SA5_performant_access_no_read;
53982
53983 /* Controller spec: zero out this buffer. */
53984 for (i = 0; i < h->nreply_queues; i++)
53985 @@ -8378,12 +8378,12 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
53986 * enable outbound interrupt coalescing in accelerator mode;
53987 */
53988 if (trans_support & CFGTBL_Trans_io_accel1) {
53989 - access = SA5_ioaccel_mode1_access;
53990 + access = &SA5_ioaccel_mode1_access;
53991 writel(10, &h->cfgtable->HostWrite.CoalIntDelay);
53992 writel(4, &h->cfgtable->HostWrite.CoalIntCount);
53993 } else {
53994 if (trans_support & CFGTBL_Trans_io_accel2) {
53995 - access = SA5_ioaccel_mode2_access;
53996 + access = &SA5_ioaccel_mode2_access;
53997 writel(10, &h->cfgtable->HostWrite.CoalIntDelay);
53998 writel(4, &h->cfgtable->HostWrite.CoalIntCount);
53999 }
54000 diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
54001 index 6ee4da6..dfafb48 100644
54002 --- a/drivers/scsi/hpsa.h
54003 +++ b/drivers/scsi/hpsa.h
54004 @@ -152,7 +152,7 @@ struct ctlr_info {
54005 unsigned int msix_vector;
54006 unsigned int msi_vector;
54007 int intr_mode; /* either PERF_MODE_INT or SIMPLE_MODE_INT */
54008 - struct access_method access;
54009 + struct access_method *access;
54010 char hba_mode_enabled;
54011
54012 /* queue and queue Info */
54013 @@ -542,38 +542,38 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q)
54014 }
54015
54016 static struct access_method SA5_access = {
54017 - SA5_submit_command,
54018 - SA5_intr_mask,
54019 - SA5_intr_pending,
54020 - SA5_completed,
54021 + .submit_command = SA5_submit_command,
54022 + .set_intr_mask = SA5_intr_mask,
54023 + .intr_pending = SA5_intr_pending,
54024 + .command_completed = SA5_completed,
54025 };
54026
54027 static struct access_method SA5_ioaccel_mode1_access = {
54028 - SA5_submit_command,
54029 - SA5_performant_intr_mask,
54030 - SA5_ioaccel_mode1_intr_pending,
54031 - SA5_ioaccel_mode1_completed,
54032 + .submit_command = SA5_submit_command,
54033 + .set_intr_mask = SA5_performant_intr_mask,
54034 + .intr_pending = SA5_ioaccel_mode1_intr_pending,
54035 + .command_completed = SA5_ioaccel_mode1_completed,
54036 };
54037
54038 static struct access_method SA5_ioaccel_mode2_access = {
54039 - SA5_submit_command_ioaccel2,
54040 - SA5_performant_intr_mask,
54041 - SA5_performant_intr_pending,
54042 - SA5_performant_completed,
54043 + .submit_command = SA5_submit_command_ioaccel2,
54044 + .set_intr_mask = SA5_performant_intr_mask,
54045 + .intr_pending = SA5_performant_intr_pending,
54046 + .command_completed = SA5_performant_completed,
54047 };
54048
54049 static struct access_method SA5_performant_access = {
54050 - SA5_submit_command,
54051 - SA5_performant_intr_mask,
54052 - SA5_performant_intr_pending,
54053 - SA5_performant_completed,
54054 + .submit_command = SA5_submit_command,
54055 + .set_intr_mask = SA5_performant_intr_mask,
54056 + .intr_pending = SA5_performant_intr_pending,
54057 + .command_completed = SA5_performant_completed,
54058 };
54059
54060 static struct access_method SA5_performant_access_no_read = {
54061 - SA5_submit_command_no_read,
54062 - SA5_performant_intr_mask,
54063 - SA5_performant_intr_pending,
54064 - SA5_performant_completed,
54065 + .submit_command = SA5_submit_command_no_read,
54066 + .set_intr_mask = SA5_performant_intr_mask,
54067 + .intr_pending = SA5_performant_intr_pending,
54068 + .command_completed = SA5_performant_completed,
54069 };
54070
54071 struct board_type {
54072 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
54073 index 30f9ef0..a1e29ac 100644
54074 --- a/drivers/scsi/libfc/fc_exch.c
54075 +++ b/drivers/scsi/libfc/fc_exch.c
54076 @@ -101,12 +101,12 @@ struct fc_exch_mgr {
54077 u16 pool_max_index;
54078
54079 struct {
54080 - atomic_t no_free_exch;
54081 - atomic_t no_free_exch_xid;
54082 - atomic_t xid_not_found;
54083 - atomic_t xid_busy;
54084 - atomic_t seq_not_found;
54085 - atomic_t non_bls_resp;
54086 + atomic_unchecked_t no_free_exch;
54087 + atomic_unchecked_t no_free_exch_xid;
54088 + atomic_unchecked_t xid_not_found;
54089 + atomic_unchecked_t xid_busy;
54090 + atomic_unchecked_t seq_not_found;
54091 + atomic_unchecked_t non_bls_resp;
54092 } stats;
54093 };
54094
54095 @@ -809,7 +809,7 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
54096 /* allocate memory for exchange */
54097 ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC);
54098 if (!ep) {
54099 - atomic_inc(&mp->stats.no_free_exch);
54100 + atomic_inc_unchecked(&mp->stats.no_free_exch);
54101 goto out;
54102 }
54103 memset(ep, 0, sizeof(*ep));
54104 @@ -872,7 +872,7 @@ out:
54105 return ep;
54106 err:
54107 spin_unlock_bh(&pool->lock);
54108 - atomic_inc(&mp->stats.no_free_exch_xid);
54109 + atomic_inc_unchecked(&mp->stats.no_free_exch_xid);
54110 mempool_free(ep, mp->ep_pool);
54111 return NULL;
54112 }
54113 @@ -1021,7 +1021,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
54114 xid = ntohs(fh->fh_ox_id); /* we originated exch */
54115 ep = fc_exch_find(mp, xid);
54116 if (!ep) {
54117 - atomic_inc(&mp->stats.xid_not_found);
54118 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54119 reject = FC_RJT_OX_ID;
54120 goto out;
54121 }
54122 @@ -1051,7 +1051,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
54123 ep = fc_exch_find(mp, xid);
54124 if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) {
54125 if (ep) {
54126 - atomic_inc(&mp->stats.xid_busy);
54127 + atomic_inc_unchecked(&mp->stats.xid_busy);
54128 reject = FC_RJT_RX_ID;
54129 goto rel;
54130 }
54131 @@ -1062,7 +1062,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
54132 }
54133 xid = ep->xid; /* get our XID */
54134 } else if (!ep) {
54135 - atomic_inc(&mp->stats.xid_not_found);
54136 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54137 reject = FC_RJT_RX_ID; /* XID not found */
54138 goto out;
54139 }
54140 @@ -1080,7 +1080,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
54141 } else {
54142 sp = &ep->seq;
54143 if (sp->id != fh->fh_seq_id) {
54144 - atomic_inc(&mp->stats.seq_not_found);
54145 + atomic_inc_unchecked(&mp->stats.seq_not_found);
54146 if (f_ctl & FC_FC_END_SEQ) {
54147 /*
54148 * Update sequence_id based on incoming last
54149 @@ -1531,22 +1531,22 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
54150
54151 ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
54152 if (!ep) {
54153 - atomic_inc(&mp->stats.xid_not_found);
54154 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54155 goto out;
54156 }
54157 if (ep->esb_stat & ESB_ST_COMPLETE) {
54158 - atomic_inc(&mp->stats.xid_not_found);
54159 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54160 goto rel;
54161 }
54162 if (ep->rxid == FC_XID_UNKNOWN)
54163 ep->rxid = ntohs(fh->fh_rx_id);
54164 if (ep->sid != 0 && ep->sid != ntoh24(fh->fh_d_id)) {
54165 - atomic_inc(&mp->stats.xid_not_found);
54166 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54167 goto rel;
54168 }
54169 if (ep->did != ntoh24(fh->fh_s_id) &&
54170 ep->did != FC_FID_FLOGI) {
54171 - atomic_inc(&mp->stats.xid_not_found);
54172 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54173 goto rel;
54174 }
54175 sof = fr_sof(fp);
54176 @@ -1555,7 +1555,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
54177 sp->ssb_stat |= SSB_ST_RESP;
54178 sp->id = fh->fh_seq_id;
54179 } else if (sp->id != fh->fh_seq_id) {
54180 - atomic_inc(&mp->stats.seq_not_found);
54181 + atomic_inc_unchecked(&mp->stats.seq_not_found);
54182 goto rel;
54183 }
54184
54185 @@ -1618,9 +1618,9 @@ static void fc_exch_recv_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
54186 sp = fc_seq_lookup_orig(mp, fp); /* doesn't hold sequence */
54187
54188 if (!sp)
54189 - atomic_inc(&mp->stats.xid_not_found);
54190 + atomic_inc_unchecked(&mp->stats.xid_not_found);
54191 else
54192 - atomic_inc(&mp->stats.non_bls_resp);
54193 + atomic_inc_unchecked(&mp->stats.non_bls_resp);
54194
54195 fc_frame_free(fp);
54196 }
54197 @@ -2261,13 +2261,13 @@ void fc_exch_update_stats(struct fc_lport *lport)
54198
54199 list_for_each_entry(ema, &lport->ema_list, ema_list) {
54200 mp = ema->mp;
54201 - st->fc_no_free_exch += atomic_read(&mp->stats.no_free_exch);
54202 + st->fc_no_free_exch += atomic_read_unchecked(&mp->stats.no_free_exch);
54203 st->fc_no_free_exch_xid +=
54204 - atomic_read(&mp->stats.no_free_exch_xid);
54205 - st->fc_xid_not_found += atomic_read(&mp->stats.xid_not_found);
54206 - st->fc_xid_busy += atomic_read(&mp->stats.xid_busy);
54207 - st->fc_seq_not_found += atomic_read(&mp->stats.seq_not_found);
54208 - st->fc_non_bls_resp += atomic_read(&mp->stats.non_bls_resp);
54209 + atomic_read_unchecked(&mp->stats.no_free_exch_xid);
54210 + st->fc_xid_not_found += atomic_read_unchecked(&mp->stats.xid_not_found);
54211 + st->fc_xid_busy += atomic_read_unchecked(&mp->stats.xid_busy);
54212 + st->fc_seq_not_found += atomic_read_unchecked(&mp->stats.seq_not_found);
54213 + st->fc_non_bls_resp += atomic_read_unchecked(&mp->stats.non_bls_resp);
54214 }
54215 }
54216 EXPORT_SYMBOL(fc_exch_update_stats);
54217 diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
54218 index 9c706d8..d3e3ed2 100644
54219 --- a/drivers/scsi/libsas/sas_ata.c
54220 +++ b/drivers/scsi/libsas/sas_ata.c
54221 @@ -535,7 +535,7 @@ static struct ata_port_operations sas_sata_ops = {
54222 .postreset = ata_std_postreset,
54223 .error_handler = ata_std_error_handler,
54224 .post_internal_cmd = sas_ata_post_internal,
54225 - .qc_defer = ata_std_qc_defer,
54226 + .qc_defer = ata_std_qc_defer,
54227 .qc_prep = ata_noop_qc_prep,
54228 .qc_issue = sas_ata_qc_issue,
54229 .qc_fill_rtf = sas_ata_qc_fill_rtf,
54230 diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
54231 index a5a56fa..43499fd 100644
54232 --- a/drivers/scsi/lpfc/lpfc.h
54233 +++ b/drivers/scsi/lpfc/lpfc.h
54234 @@ -435,7 +435,7 @@ struct lpfc_vport {
54235 struct dentry *debug_nodelist;
54236 struct dentry *vport_debugfs_root;
54237 struct lpfc_debugfs_trc *disc_trc;
54238 - atomic_t disc_trc_cnt;
54239 + atomic_unchecked_t disc_trc_cnt;
54240 #endif
54241 uint8_t stat_data_enabled;
54242 uint8_t stat_data_blocked;
54243 @@ -885,8 +885,8 @@ struct lpfc_hba {
54244 struct timer_list fabric_block_timer;
54245 unsigned long bit_flags;
54246 #define FABRIC_COMANDS_BLOCKED 0
54247 - atomic_t num_rsrc_err;
54248 - atomic_t num_cmd_success;
54249 + atomic_unchecked_t num_rsrc_err;
54250 + atomic_unchecked_t num_cmd_success;
54251 unsigned long last_rsrc_error_time;
54252 unsigned long last_ramp_down_time;
54253 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
54254 @@ -921,7 +921,7 @@ struct lpfc_hba {
54255
54256 struct dentry *debug_slow_ring_trc;
54257 struct lpfc_debugfs_trc *slow_ring_trc;
54258 - atomic_t slow_ring_trc_cnt;
54259 + atomic_unchecked_t slow_ring_trc_cnt;
54260 /* iDiag debugfs sub-directory */
54261 struct dentry *idiag_root;
54262 struct dentry *idiag_pci_cfg;
54263 diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
54264 index 25aa9b9..d700a65 100644
54265 --- a/drivers/scsi/lpfc/lpfc_debugfs.c
54266 +++ b/drivers/scsi/lpfc/lpfc_debugfs.c
54267 @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
54268
54269 #include <linux/debugfs.h>
54270
54271 -static atomic_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
54272 +static atomic_unchecked_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
54273 static unsigned long lpfc_debugfs_start_time = 0L;
54274
54275 /* iDiag */
54276 @@ -147,7 +147,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_vport *vport, char *buf, int size)
54277 lpfc_debugfs_enable = 0;
54278
54279 len = 0;
54280 - index = (atomic_read(&vport->disc_trc_cnt) + 1) &
54281 + index = (atomic_read_unchecked(&vport->disc_trc_cnt) + 1) &
54282 (lpfc_debugfs_max_disc_trc - 1);
54283 for (i = index; i < lpfc_debugfs_max_disc_trc; i++) {
54284 dtp = vport->disc_trc + i;
54285 @@ -213,7 +213,7 @@ lpfc_debugfs_slow_ring_trc_data(struct lpfc_hba *phba, char *buf, int size)
54286 lpfc_debugfs_enable = 0;
54287
54288 len = 0;
54289 - index = (atomic_read(&phba->slow_ring_trc_cnt) + 1) &
54290 + index = (atomic_read_unchecked(&phba->slow_ring_trc_cnt) + 1) &
54291 (lpfc_debugfs_max_slow_ring_trc - 1);
54292 for (i = index; i < lpfc_debugfs_max_slow_ring_trc; i++) {
54293 dtp = phba->slow_ring_trc + i;
54294 @@ -646,14 +646,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport *vport, int mask, char *fmt,
54295 !vport || !vport->disc_trc)
54296 return;
54297
54298 - index = atomic_inc_return(&vport->disc_trc_cnt) &
54299 + index = atomic_inc_return_unchecked(&vport->disc_trc_cnt) &
54300 (lpfc_debugfs_max_disc_trc - 1);
54301 dtp = vport->disc_trc + index;
54302 dtp->fmt = fmt;
54303 dtp->data1 = data1;
54304 dtp->data2 = data2;
54305 dtp->data3 = data3;
54306 - dtp->seq_cnt = atomic_inc_return(&lpfc_debugfs_seq_trc_cnt);
54307 + dtp->seq_cnt = atomic_inc_return_unchecked(&lpfc_debugfs_seq_trc_cnt);
54308 dtp->jif = jiffies;
54309 #endif
54310 return;
54311 @@ -684,14 +684,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_hba *phba, char *fmt,
54312 !phba || !phba->slow_ring_trc)
54313 return;
54314
54315 - index = atomic_inc_return(&phba->slow_ring_trc_cnt) &
54316 + index = atomic_inc_return_unchecked(&phba->slow_ring_trc_cnt) &
54317 (lpfc_debugfs_max_slow_ring_trc - 1);
54318 dtp = phba->slow_ring_trc + index;
54319 dtp->fmt = fmt;
54320 dtp->data1 = data1;
54321 dtp->data2 = data2;
54322 dtp->data3 = data3;
54323 - dtp->seq_cnt = atomic_inc_return(&lpfc_debugfs_seq_trc_cnt);
54324 + dtp->seq_cnt = atomic_inc_return_unchecked(&lpfc_debugfs_seq_trc_cnt);
54325 dtp->jif = jiffies;
54326 #endif
54327 return;
54328 @@ -4268,7 +4268,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
54329 "slow_ring buffer\n");
54330 goto debug_failed;
54331 }
54332 - atomic_set(&phba->slow_ring_trc_cnt, 0);
54333 + atomic_set_unchecked(&phba->slow_ring_trc_cnt, 0);
54334 memset(phba->slow_ring_trc, 0,
54335 (sizeof(struct lpfc_debugfs_trc) *
54336 lpfc_debugfs_max_slow_ring_trc));
54337 @@ -4314,7 +4314,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
54338 "buffer\n");
54339 goto debug_failed;
54340 }
54341 - atomic_set(&vport->disc_trc_cnt, 0);
54342 + atomic_set_unchecked(&vport->disc_trc_cnt, 0);
54343
54344 snprintf(name, sizeof(name), "discovery_trace");
54345 vport->debug_disc_trc =
54346 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
54347 index f962118..6706983 100644
54348 --- a/drivers/scsi/lpfc/lpfc_init.c
54349 +++ b/drivers/scsi/lpfc/lpfc_init.c
54350 @@ -11416,8 +11416,10 @@ lpfc_init(void)
54351 "misc_register returned with status %d", error);
54352
54353 if (lpfc_enable_npiv) {
54354 - lpfc_transport_functions.vport_create = lpfc_vport_create;
54355 - lpfc_transport_functions.vport_delete = lpfc_vport_delete;
54356 + pax_open_kernel();
54357 + *(void **)&lpfc_transport_functions.vport_create = lpfc_vport_create;
54358 + *(void **)&lpfc_transport_functions.vport_delete = lpfc_vport_delete;
54359 + pax_close_kernel();
54360 }
54361 lpfc_transport_template =
54362 fc_attach_transport(&lpfc_transport_functions);
54363 diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
54364 index e5eb40d..056dcd4 100644
54365 --- a/drivers/scsi/lpfc/lpfc_scsi.c
54366 +++ b/drivers/scsi/lpfc/lpfc_scsi.c
54367 @@ -261,7 +261,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
54368 unsigned long expires;
54369
54370 spin_lock_irqsave(&phba->hbalock, flags);
54371 - atomic_inc(&phba->num_rsrc_err);
54372 + atomic_inc_unchecked(&phba->num_rsrc_err);
54373 phba->last_rsrc_error_time = jiffies;
54374
54375 expires = phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL;
54376 @@ -303,8 +303,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
54377 unsigned long num_rsrc_err, num_cmd_success;
54378 int i;
54379
54380 - num_rsrc_err = atomic_read(&phba->num_rsrc_err);
54381 - num_cmd_success = atomic_read(&phba->num_cmd_success);
54382 + num_rsrc_err = atomic_read_unchecked(&phba->num_rsrc_err);
54383 + num_cmd_success = atomic_read_unchecked(&phba->num_cmd_success);
54384
54385 /*
54386 * The error and success command counters are global per
54387 @@ -331,8 +331,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
54388 }
54389 }
54390 lpfc_destroy_vport_work_array(phba, vports);
54391 - atomic_set(&phba->num_rsrc_err, 0);
54392 - atomic_set(&phba->num_cmd_success, 0);
54393 + atomic_set_unchecked(&phba->num_rsrc_err, 0);
54394 + atomic_set_unchecked(&phba->num_cmd_success, 0);
54395 }
54396
54397 /**
54398 diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
54399 index 3f26147..ee8efd1 100644
54400 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
54401 +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
54402 @@ -1509,7 +1509,7 @@ _scsih_get_resync(struct device *dev)
54403 {
54404 struct scsi_device *sdev = to_scsi_device(dev);
54405 struct MPT2SAS_ADAPTER *ioc = shost_priv(sdev->host);
54406 - static struct _raid_device *raid_device;
54407 + struct _raid_device *raid_device;
54408 unsigned long flags;
54409 Mpi2RaidVolPage0_t vol_pg0;
54410 Mpi2ConfigReply_t mpi_reply;
54411 @@ -1561,7 +1561,7 @@ _scsih_get_state(struct device *dev)
54412 {
54413 struct scsi_device *sdev = to_scsi_device(dev);
54414 struct MPT2SAS_ADAPTER *ioc = shost_priv(sdev->host);
54415 - static struct _raid_device *raid_device;
54416 + struct _raid_device *raid_device;
54417 unsigned long flags;
54418 Mpi2RaidVolPage0_t vol_pg0;
54419 Mpi2ConfigReply_t mpi_reply;
54420 @@ -6641,7 +6641,7 @@ _scsih_sas_ir_operation_status_event(struct MPT2SAS_ADAPTER *ioc,
54421 Mpi2EventDataIrOperationStatus_t *event_data =
54422 (Mpi2EventDataIrOperationStatus_t *)
54423 fw_event->event_data;
54424 - static struct _raid_device *raid_device;
54425 + struct _raid_device *raid_device;
54426 unsigned long flags;
54427 u16 handle;
54428
54429 @@ -7112,7 +7112,7 @@ _scsih_scan_for_devices_after_reset(struct MPT2SAS_ADAPTER *ioc)
54430 u64 sas_address;
54431 struct _sas_device *sas_device;
54432 struct _sas_node *expander_device;
54433 - static struct _raid_device *raid_device;
54434 + struct _raid_device *raid_device;
54435 u8 retry_count;
54436 unsigned long flags;
54437
54438 diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
54439 index ed31d8c..ab856b3 100644
54440 --- a/drivers/scsi/pmcraid.c
54441 +++ b/drivers/scsi/pmcraid.c
54442 @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev)
54443 res->scsi_dev = scsi_dev;
54444 scsi_dev->hostdata = res;
54445 res->change_detected = 0;
54446 - atomic_set(&res->read_failures, 0);
54447 - atomic_set(&res->write_failures, 0);
54448 + atomic_set_unchecked(&res->read_failures, 0);
54449 + atomic_set_unchecked(&res->write_failures, 0);
54450 rc = 0;
54451 }
54452 spin_unlock_irqrestore(&pinstance->resource_lock, lock_flags);
54453 @@ -2640,9 +2640,9 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd)
54454
54455 /* If this was a SCSI read/write command keep count of errors */
54456 if (SCSI_CMD_TYPE(scsi_cmd->cmnd[0]) == SCSI_READ_CMD)
54457 - atomic_inc(&res->read_failures);
54458 + atomic_inc_unchecked(&res->read_failures);
54459 else if (SCSI_CMD_TYPE(scsi_cmd->cmnd[0]) == SCSI_WRITE_CMD)
54460 - atomic_inc(&res->write_failures);
54461 + atomic_inc_unchecked(&res->write_failures);
54462
54463 if (!RES_IS_GSCSI(res->cfg_entry) &&
54464 masked_ioasc != PMCRAID_IOASC_HW_DEVICE_BUS_STATUS_ERROR) {
54465 @@ -3468,7 +3468,7 @@ static int pmcraid_queuecommand_lck(
54466 * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
54467 * hrrq_id assigned here in queuecommand
54468 */
54469 - ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
54470 + ioarcb->hrrq_id = atomic_add_return_unchecked(1, &(pinstance->last_message_id)) %
54471 pinstance->num_hrrq;
54472 cmd->cmd_done = pmcraid_io_done;
54473
54474 @@ -3782,7 +3782,7 @@ static long pmcraid_ioctl_passthrough(
54475 * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
54476 * hrrq_id assigned here in queuecommand
54477 */
54478 - ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
54479 + ioarcb->hrrq_id = atomic_add_return_unchecked(1, &(pinstance->last_message_id)) %
54480 pinstance->num_hrrq;
54481
54482 if (request_size) {
54483 @@ -4420,7 +4420,7 @@ static void pmcraid_worker_function(struct work_struct *workp)
54484
54485 pinstance = container_of(workp, struct pmcraid_instance, worker_q);
54486 /* add resources only after host is added into system */
54487 - if (!atomic_read(&pinstance->expose_resources))
54488 + if (!atomic_read_unchecked(&pinstance->expose_resources))
54489 return;
54490
54491 fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
54492 @@ -5237,8 +5237,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host,
54493 init_waitqueue_head(&pinstance->reset_wait_q);
54494
54495 atomic_set(&pinstance->outstanding_cmds, 0);
54496 - atomic_set(&pinstance->last_message_id, 0);
54497 - atomic_set(&pinstance->expose_resources, 0);
54498 + atomic_set_unchecked(&pinstance->last_message_id, 0);
54499 + atomic_set_unchecked(&pinstance->expose_resources, 0);
54500
54501 INIT_LIST_HEAD(&pinstance->free_res_q);
54502 INIT_LIST_HEAD(&pinstance->used_res_q);
54503 @@ -5951,7 +5951,7 @@ static int pmcraid_probe(struct pci_dev *pdev,
54504 /* Schedule worker thread to handle CCN and take care of adding and
54505 * removing devices to OS
54506 */
54507 - atomic_set(&pinstance->expose_resources, 1);
54508 + atomic_set_unchecked(&pinstance->expose_resources, 1);
54509 schedule_work(&pinstance->worker_q);
54510 return rc;
54511
54512 diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
54513 index e1d150f..6c6df44 100644
54514 --- a/drivers/scsi/pmcraid.h
54515 +++ b/drivers/scsi/pmcraid.h
54516 @@ -748,7 +748,7 @@ struct pmcraid_instance {
54517 struct pmcraid_isr_param hrrq_vector[PMCRAID_NUM_MSIX_VECTORS];
54518
54519 /* Message id as filled in last fired IOARCB, used to identify HRRQ */
54520 - atomic_t last_message_id;
54521 + atomic_unchecked_t last_message_id;
54522
54523 /* configuration table */
54524 struct pmcraid_config_table *cfg_table;
54525 @@ -777,7 +777,7 @@ struct pmcraid_instance {
54526 atomic_t outstanding_cmds;
54527
54528 /* should add/delete resources to mid-layer now ?*/
54529 - atomic_t expose_resources;
54530 + atomic_unchecked_t expose_resources;
54531
54532
54533
54534 @@ -813,8 +813,8 @@ struct pmcraid_resource_entry {
54535 struct pmcraid_config_table_entry_ext cfg_entry_ext;
54536 };
54537 struct scsi_device *scsi_dev; /* Link scsi_device structure */
54538 - atomic_t read_failures; /* count of failed READ commands */
54539 - atomic_t write_failures; /* count of failed WRITE commands */
54540 + atomic_unchecked_t read_failures; /* count of failed READ commands */
54541 + atomic_unchecked_t write_failures; /* count of failed WRITE commands */
54542
54543 /* To indicate add/delete/modify during CCN */
54544 u8 change_detected;
54545 diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
54546 index 437254e..a66eb82 100644
54547 --- a/drivers/scsi/qla2xxx/qla_attr.c
54548 +++ b/drivers/scsi/qla2xxx/qla_attr.c
54549 @@ -2192,7 +2192,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable)
54550 return 0;
54551 }
54552
54553 -struct fc_function_template qla2xxx_transport_functions = {
54554 +fc_function_template_no_const qla2xxx_transport_functions = {
54555
54556 .show_host_node_name = 1,
54557 .show_host_port_name = 1,
54558 @@ -2240,7 +2240,7 @@ struct fc_function_template qla2xxx_transport_functions = {
54559 .bsg_timeout = qla24xx_bsg_timeout,
54560 };
54561
54562 -struct fc_function_template qla2xxx_transport_vport_functions = {
54563 +fc_function_template_no_const qla2xxx_transport_vport_functions = {
54564
54565 .show_host_node_name = 1,
54566 .show_host_port_name = 1,
54567 diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
54568 index 7686bfe..4710893 100644
54569 --- a/drivers/scsi/qla2xxx/qla_gbl.h
54570 +++ b/drivers/scsi/qla2xxx/qla_gbl.h
54571 @@ -571,8 +571,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *, size_t);
54572 struct device_attribute;
54573 extern struct device_attribute *qla2x00_host_attrs[];
54574 struct fc_function_template;
54575 -extern struct fc_function_template qla2xxx_transport_functions;
54576 -extern struct fc_function_template qla2xxx_transport_vport_functions;
54577 +extern fc_function_template_no_const qla2xxx_transport_functions;
54578 +extern fc_function_template_no_const qla2xxx_transport_vport_functions;
54579 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
54580 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *, bool);
54581 extern void qla2x00_init_host_attr(scsi_qla_host_t *);
54582 diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
54583 index 8a5cac8..4eba6ab 100644
54584 --- a/drivers/scsi/qla2xxx/qla_os.c
54585 +++ b/drivers/scsi/qla2xxx/qla_os.c
54586 @@ -1435,8 +1435,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
54587 !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) {
54588 /* Ok, a 64bit DMA mask is applicable. */
54589 ha->flags.enable_64bit_addressing = 1;
54590 - ha->isp_ops->calc_req_entries = qla2x00_calc_iocbs_64;
54591 - ha->isp_ops->build_iocbs = qla2x00_build_scsi_iocbs_64;
54592 + pax_open_kernel();
54593 + *(void **)&ha->isp_ops->calc_req_entries = qla2x00_calc_iocbs_64;
54594 + *(void **)&ha->isp_ops->build_iocbs = qla2x00_build_scsi_iocbs_64;
54595 + pax_close_kernel();
54596 return;
54597 }
54598 }
54599 diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
54600 index a7cfc27..151f483 100644
54601 --- a/drivers/scsi/qla4xxx/ql4_def.h
54602 +++ b/drivers/scsi/qla4xxx/ql4_def.h
54603 @@ -306,7 +306,7 @@ struct ddb_entry {
54604 * (4000 only) */
54605 atomic_t relogin_timer; /* Max Time to wait for
54606 * relogin to complete */
54607 - atomic_t relogin_retry_count; /* Num of times relogin has been
54608 + atomic_unchecked_t relogin_retry_count; /* Num of times relogin has been
54609 * retried */
54610 uint32_t default_time2wait; /* Default Min time between
54611 * relogins (+aens) */
54612 diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
54613 index 6d25879..3031a9f 100644
54614 --- a/drivers/scsi/qla4xxx/ql4_os.c
54615 +++ b/drivers/scsi/qla4xxx/ql4_os.c
54616 @@ -4491,12 +4491,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
54617 */
54618 if (!iscsi_is_session_online(cls_sess)) {
54619 /* Reset retry relogin timer */
54620 - atomic_inc(&ddb_entry->relogin_retry_count);
54621 + atomic_inc_unchecked(&ddb_entry->relogin_retry_count);
54622 DEBUG2(ql4_printk(KERN_INFO, ha,
54623 "%s: index[%d] relogin timed out-retrying"
54624 " relogin (%d), retry (%d)\n", __func__,
54625 ddb_entry->fw_ddb_index,
54626 - atomic_read(&ddb_entry->relogin_retry_count),
54627 + atomic_read_unchecked(&ddb_entry->relogin_retry_count),
54628 ddb_entry->default_time2wait + 4));
54629 set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags);
54630 atomic_set(&ddb_entry->retry_relogin_timer,
54631 @@ -6604,7 +6604,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
54632
54633 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
54634 atomic_set(&ddb_entry->relogin_timer, 0);
54635 - atomic_set(&ddb_entry->relogin_retry_count, 0);
54636 + atomic_set_unchecked(&ddb_entry->relogin_retry_count, 0);
54637 def_timeout = le16_to_cpu(ddb_entry->fw_ddb_entry.def_timeout);
54638 ddb_entry->default_relogin_timeout =
54639 (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ?
54640 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
54641 index 207d6a7..bf155b5 100644
54642 --- a/drivers/scsi/scsi.c
54643 +++ b/drivers/scsi/scsi.c
54644 @@ -591,7 +591,7 @@ void scsi_finish_command(struct scsi_cmnd *cmd)
54645
54646 good_bytes = scsi_bufflen(cmd);
54647 if (cmd->request->cmd_type != REQ_TYPE_BLOCK_PC) {
54648 - int old_good_bytes = good_bytes;
54649 + unsigned int old_good_bytes = good_bytes;
54650 drv = scsi_cmd_to_driver(cmd);
54651 if (drv->done)
54652 good_bytes = drv->done(cmd);
54653 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
54654 index 448ebda..9bd345f 100644
54655 --- a/drivers/scsi/scsi_lib.c
54656 +++ b/drivers/scsi/scsi_lib.c
54657 @@ -1597,7 +1597,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
54658 shost = sdev->host;
54659 scsi_init_cmd_errh(cmd);
54660 cmd->result = DID_NO_CONNECT << 16;
54661 - atomic_inc(&cmd->device->iorequest_cnt);
54662 + atomic_inc_unchecked(&cmd->device->iorequest_cnt);
54663
54664 /*
54665 * SCSI request completion path will do scsi_device_unbusy(),
54666 @@ -1620,9 +1620,9 @@ static void scsi_softirq_done(struct request *rq)
54667
54668 INIT_LIST_HEAD(&cmd->eh_entry);
54669
54670 - atomic_inc(&cmd->device->iodone_cnt);
54671 + atomic_inc_unchecked(&cmd->device->iodone_cnt);
54672 if (cmd->result)
54673 - atomic_inc(&cmd->device->ioerr_cnt);
54674 + atomic_inc_unchecked(&cmd->device->ioerr_cnt);
54675
54676 disposition = scsi_decide_disposition(cmd);
54677 if (disposition != SUCCESS &&
54678 @@ -1663,7 +1663,7 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
54679 struct Scsi_Host *host = cmd->device->host;
54680 int rtn = 0;
54681
54682 - atomic_inc(&cmd->device->iorequest_cnt);
54683 + atomic_inc_unchecked(&cmd->device->iorequest_cnt);
54684
54685 /* check if the device is still usable */
54686 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
54687 diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
54688 index 9ad4116..4e736fc 100644
54689 --- a/drivers/scsi/scsi_sysfs.c
54690 +++ b/drivers/scsi/scsi_sysfs.c
54691 @@ -788,7 +788,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \
54692 char *buf) \
54693 { \
54694 struct scsi_device *sdev = to_scsi_device(dev); \
54695 - unsigned long long count = atomic_read(&sdev->field); \
54696 + unsigned long long count = atomic_read_unchecked(&sdev->field); \
54697 return snprintf(buf, 20, "0x%llx\n", count); \
54698 } \
54699 static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL)
54700 diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
54701 index 24eaaf6..de30ec9 100644
54702 --- a/drivers/scsi/scsi_transport_fc.c
54703 +++ b/drivers/scsi/scsi_transport_fc.c
54704 @@ -502,7 +502,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class,
54705 * Netlink Infrastructure
54706 */
54707
54708 -static atomic_t fc_event_seq;
54709 +static atomic_unchecked_t fc_event_seq;
54710
54711 /**
54712 * fc_get_event_number - Obtain the next sequential FC event number
54713 @@ -515,7 +515,7 @@ static atomic_t fc_event_seq;
54714 u32
54715 fc_get_event_number(void)
54716 {
54717 - return atomic_add_return(1, &fc_event_seq);
54718 + return atomic_add_return_unchecked(1, &fc_event_seq);
54719 }
54720 EXPORT_SYMBOL(fc_get_event_number);
54721
54722 @@ -659,7 +659,7 @@ static __init int fc_transport_init(void)
54723 {
54724 int error;
54725
54726 - atomic_set(&fc_event_seq, 0);
54727 + atomic_set_unchecked(&fc_event_seq, 0);
54728
54729 error = transport_class_register(&fc_host_class);
54730 if (error)
54731 @@ -849,7 +849,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val)
54732 char *cp;
54733
54734 *val = simple_strtoul(buf, &cp, 0);
54735 - if ((*cp && (*cp != '\n')) || (*val < 0))
54736 + if (*cp && (*cp != '\n'))
54737 return -EINVAL;
54738 /*
54739 * Check for overflow; dev_loss_tmo is u32
54740 diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
54741 index 55647aa..b647d05 100644
54742 --- a/drivers/scsi/scsi_transport_iscsi.c
54743 +++ b/drivers/scsi/scsi_transport_iscsi.c
54744 @@ -79,7 +79,7 @@ struct iscsi_internal {
54745 struct transport_container session_cont;
54746 };
54747
54748 -static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
54749 +static atomic_unchecked_t iscsi_session_nr; /* sysfs session id for next new session */
54750 static struct workqueue_struct *iscsi_eh_timer_workq;
54751
54752 static DEFINE_IDA(iscsi_sess_ida);
54753 @@ -2073,7 +2073,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
54754 int err;
54755
54756 ihost = shost->shost_data;
54757 - session->sid = atomic_add_return(1, &iscsi_session_nr);
54758 + session->sid = atomic_add_return_unchecked(1, &iscsi_session_nr);
54759
54760 if (target_id == ISCSI_MAX_TARGET) {
54761 id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL);
54762 @@ -4517,7 +4517,7 @@ static __init int iscsi_transport_init(void)
54763 printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
54764 ISCSI_TRANSPORT_VERSION);
54765
54766 - atomic_set(&iscsi_session_nr, 0);
54767 + atomic_set_unchecked(&iscsi_session_nr, 0);
54768
54769 err = class_register(&iscsi_transport_class);
54770 if (err)
54771 diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
54772 index e3cd3ec..00560ec 100644
54773 --- a/drivers/scsi/scsi_transport_srp.c
54774 +++ b/drivers/scsi/scsi_transport_srp.c
54775 @@ -35,7 +35,7 @@
54776 #include "scsi_priv.h"
54777
54778 struct srp_host_attrs {
54779 - atomic_t next_port_id;
54780 + atomic_unchecked_t next_port_id;
54781 };
54782 #define to_srp_host_attrs(host) ((struct srp_host_attrs *)(host)->shost_data)
54783
54784 @@ -105,7 +105,7 @@ static int srp_host_setup(struct transport_container *tc, struct device *dev,
54785 struct Scsi_Host *shost = dev_to_shost(dev);
54786 struct srp_host_attrs *srp_host = to_srp_host_attrs(shost);
54787
54788 - atomic_set(&srp_host->next_port_id, 0);
54789 + atomic_set_unchecked(&srp_host->next_port_id, 0);
54790 return 0;
54791 }
54792
54793 @@ -752,7 +752,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost,
54794 rport_fast_io_fail_timedout);
54795 INIT_DELAYED_WORK(&rport->dev_loss_work, rport_dev_loss_timedout);
54796
54797 - id = atomic_inc_return(&to_srp_host_attrs(shost)->next_port_id);
54798 + id = atomic_inc_return_unchecked(&to_srp_host_attrs(shost)->next_port_id);
54799 dev_set_name(&rport->dev, "port-%d:%d", shost->host_no, id);
54800
54801 transport_setup_device(&rport->dev);
54802 diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
54803 index a20da8c..7f47bac 100644
54804 --- a/drivers/scsi/sd.c
54805 +++ b/drivers/scsi/sd.c
54806 @@ -111,7 +111,7 @@ static int sd_resume(struct device *);
54807 static void sd_rescan(struct device *);
54808 static int sd_init_command(struct scsi_cmnd *SCpnt);
54809 static void sd_uninit_command(struct scsi_cmnd *SCpnt);
54810 -static int sd_done(struct scsi_cmnd *);
54811 +static unsigned int sd_done(struct scsi_cmnd *);
54812 static int sd_eh_action(struct scsi_cmnd *, int);
54813 static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
54814 static void scsi_disk_release(struct device *cdev);
54815 @@ -1646,7 +1646,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
54816 *
54817 * Note: potentially run from within an ISR. Must not block.
54818 **/
54819 -static int sd_done(struct scsi_cmnd *SCpnt)
54820 +static unsigned int sd_done(struct scsi_cmnd *SCpnt)
54821 {
54822 int result = SCpnt->result;
54823 unsigned int good_bytes = result ? 0 : scsi_bufflen(SCpnt);
54824 @@ -2973,7 +2973,7 @@ static int sd_probe(struct device *dev)
54825 sdkp->disk = gd;
54826 sdkp->index = index;
54827 atomic_set(&sdkp->openers, 0);
54828 - atomic_set(&sdkp->device->ioerr_cnt, 0);
54829 + atomic_set_unchecked(&sdkp->device->ioerr_cnt, 0);
54830
54831 if (!sdp->request_queue->rq_timeout) {
54832 if (sdp->type != TYPE_MOD)
54833 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
54834 index 9d7b7db..33ecc51 100644
54835 --- a/drivers/scsi/sg.c
54836 +++ b/drivers/scsi/sg.c
54837 @@ -1083,7 +1083,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
54838 sdp->disk->disk_name,
54839 MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
54840 NULL,
54841 - (char *)arg);
54842 + (char __user *)arg);
54843 case BLKTRACESTART:
54844 return blk_trace_startstop(sdp->device->request_queue, 1);
54845 case BLKTRACESTOP:
54846 diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
54847 index 8bd54a6..58fa0d6 100644
54848 --- a/drivers/scsi/sr.c
54849 +++ b/drivers/scsi/sr.c
54850 @@ -80,7 +80,7 @@ static DEFINE_MUTEX(sr_mutex);
54851 static int sr_probe(struct device *);
54852 static int sr_remove(struct device *);
54853 static int sr_init_command(struct scsi_cmnd *SCpnt);
54854 -static int sr_done(struct scsi_cmnd *);
54855 +static unsigned int sr_done(struct scsi_cmnd *);
54856 static int sr_runtime_suspend(struct device *dev);
54857
54858 static struct dev_pm_ops sr_pm_ops = {
54859 @@ -312,13 +312,13 @@ do_tur:
54860 * It will be notified on the end of a SCSI read / write, and will take one
54861 * of several actions based on success or failure.
54862 */
54863 -static int sr_done(struct scsi_cmnd *SCpnt)
54864 +static unsigned int sr_done(struct scsi_cmnd *SCpnt)
54865 {
54866 int result = SCpnt->result;
54867 - int this_count = scsi_bufflen(SCpnt);
54868 - int good_bytes = (result == 0 ? this_count : 0);
54869 - int block_sectors = 0;
54870 - long error_sector;
54871 + unsigned int this_count = scsi_bufflen(SCpnt);
54872 + unsigned int good_bytes = (result == 0 ? this_count : 0);
54873 + unsigned int block_sectors = 0;
54874 + sector_t error_sector;
54875 struct scsi_cd *cd = scsi_cd(SCpnt->request->rq_disk);
54876
54877 #ifdef DEBUG
54878 @@ -351,9 +351,12 @@ static int sr_done(struct scsi_cmnd *SCpnt)
54879 if (cd->device->sector_size == 2048)
54880 error_sector <<= 2;
54881 error_sector &= ~(block_sectors - 1);
54882 - good_bytes = (error_sector -
54883 - blk_rq_pos(SCpnt->request)) << 9;
54884 - if (good_bytes < 0 || good_bytes >= this_count)
54885 + if (error_sector >= blk_rq_pos(SCpnt->request)) {
54886 + good_bytes = (error_sector -
54887 + blk_rq_pos(SCpnt->request)) << 9;
54888 + if (good_bytes >= this_count)
54889 + good_bytes = 0;
54890 + } else
54891 good_bytes = 0;
54892 /*
54893 * The SCSI specification allows for the value
54894 diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
54895 index c0d660f..24a5854 100644
54896 --- a/drivers/soc/tegra/fuse/fuse-tegra.c
54897 +++ b/drivers/soc/tegra/fuse/fuse-tegra.c
54898 @@ -71,7 +71,7 @@ static ssize_t fuse_read(struct file *fd, struct kobject *kobj,
54899 return i;
54900 }
54901
54902 -static struct bin_attribute fuse_bin_attr = {
54903 +static bin_attribute_no_const fuse_bin_attr = {
54904 .attr = { .name = "fuse", .mode = S_IRUGO, },
54905 .read = fuse_read,
54906 };
54907 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
54908 index cf8b91b..a13d434 100644
54909 --- a/drivers/spi/spi.c
54910 +++ b/drivers/spi/spi.c
54911 @@ -2216,7 +2216,7 @@ int spi_bus_unlock(struct spi_master *master)
54912 EXPORT_SYMBOL_GPL(spi_bus_unlock);
54913
54914 /* portable code must never pass more than 32 bytes */
54915 -#define SPI_BUFSIZ max(32, SMP_CACHE_BYTES)
54916 +#define SPI_BUFSIZ max(32UL, SMP_CACHE_BYTES)
54917
54918 static u8 *buf;
54919
54920 diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
54921 index c7de641..ff76c07 100644
54922 --- a/drivers/spi/spidev.c
54923 +++ b/drivers/spi/spidev.c
54924 @@ -95,7 +95,7 @@ MODULE_PARM_DESC(bufsiz, "data bytes in biggest supported SPI message");
54925
54926 /*-------------------------------------------------------------------------*/
54927
54928 -static ssize_t
54929 +static ssize_t __intentional_overflow(-1)
54930 spidev_sync(struct spidev_data *spidev, struct spi_message *message)
54931 {
54932 DECLARE_COMPLETION_ONSTACK(done);
54933 diff --git a/drivers/staging/android/timed_output.c b/drivers/staging/android/timed_output.c
54934 index b41429f..2de5373 100644
54935 --- a/drivers/staging/android/timed_output.c
54936 +++ b/drivers/staging/android/timed_output.c
54937 @@ -25,7 +25,7 @@
54938 #include "timed_output.h"
54939
54940 static struct class *timed_output_class;
54941 -static atomic_t device_count;
54942 +static atomic_unchecked_t device_count;
54943
54944 static ssize_t enable_show(struct device *dev, struct device_attribute *attr,
54945 char *buf)
54946 @@ -65,7 +65,7 @@ static int create_timed_output_class(void)
54947 timed_output_class = class_create(THIS_MODULE, "timed_output");
54948 if (IS_ERR(timed_output_class))
54949 return PTR_ERR(timed_output_class);
54950 - atomic_set(&device_count, 0);
54951 + atomic_set_unchecked(&device_count, 0);
54952 timed_output_class->dev_groups = timed_output_groups;
54953 }
54954
54955 @@ -83,7 +83,7 @@ int timed_output_dev_register(struct timed_output_dev *tdev)
54956 if (ret < 0)
54957 return ret;
54958
54959 - tdev->index = atomic_inc_return(&device_count);
54960 + tdev->index = atomic_inc_return_unchecked(&device_count);
54961 tdev->dev = device_create(timed_output_class, NULL,
54962 MKDEV(0, tdev->index), NULL, "%s", tdev->name);
54963 if (IS_ERR(tdev->dev))
54964 diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
54965 index 985d94b..49c59fb 100644
54966 --- a/drivers/staging/comedi/comedi_fops.c
54967 +++ b/drivers/staging/comedi/comedi_fops.c
54968 @@ -314,8 +314,8 @@ static void comedi_file_reset(struct file *file)
54969 }
54970 cfp->last_attached = dev->attached;
54971 cfp->last_detach_count = dev->detach_count;
54972 - ACCESS_ONCE(cfp->read_subdev) = read_s;
54973 - ACCESS_ONCE(cfp->write_subdev) = write_s;
54974 + ACCESS_ONCE_RW(cfp->read_subdev) = read_s;
54975 + ACCESS_ONCE_RW(cfp->write_subdev) = write_s;
54976 }
54977
54978 static void comedi_file_check(struct file *file)
54979 @@ -1983,7 +1983,7 @@ static int do_setrsubd_ioctl(struct comedi_device *dev, unsigned long arg,
54980 !(s_old->async->cmd.flags & CMDF_WRITE))
54981 return -EBUSY;
54982
54983 - ACCESS_ONCE(cfp->read_subdev) = s_new;
54984 + ACCESS_ONCE_RW(cfp->read_subdev) = s_new;
54985 return 0;
54986 }
54987
54988 @@ -2025,7 +2025,7 @@ static int do_setwsubd_ioctl(struct comedi_device *dev, unsigned long arg,
54989 (s_old->async->cmd.flags & CMDF_WRITE))
54990 return -EBUSY;
54991
54992 - ACCESS_ONCE(cfp->write_subdev) = s_new;
54993 + ACCESS_ONCE_RW(cfp->write_subdev) = s_new;
54994 return 0;
54995 }
54996
54997 diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
54998 index 9cc8141..ffd5039 100644
54999 --- a/drivers/staging/fbtft/fbtft-core.c
55000 +++ b/drivers/staging/fbtft/fbtft-core.c
55001 @@ -681,7 +681,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
55002 {
55003 struct fb_info *info;
55004 struct fbtft_par *par;
55005 - struct fb_ops *fbops = NULL;
55006 + fb_ops_no_const *fbops = NULL;
55007 struct fb_deferred_io *fbdefio = NULL;
55008 struct fbtft_platform_data *pdata = dev->platform_data;
55009 u8 *vmem = NULL;
55010 diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
55011 index 7d817eb..d22e49e 100644
55012 --- a/drivers/staging/fbtft/fbtft.h
55013 +++ b/drivers/staging/fbtft/fbtft.h
55014 @@ -106,7 +106,7 @@ struct fbtft_ops {
55015
55016 int (*set_var)(struct fbtft_par *par);
55017 int (*set_gamma)(struct fbtft_par *par, unsigned long *curves);
55018 -};
55019 +} __no_const;
55020
55021 /**
55022 * struct fbtft_display - Describes the display properties
55023 diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c
55024 index 001348c..cfaac8a 100644
55025 --- a/drivers/staging/gdm724x/gdm_tty.c
55026 +++ b/drivers/staging/gdm724x/gdm_tty.c
55027 @@ -44,7 +44,7 @@
55028 #define gdm_tty_send_control(n, r, v, d, l) (\
55029 n->tty_dev->send_control(n->tty_dev->priv_dev, r, v, d, l))
55030
55031 -#define GDM_TTY_READY(gdm) (gdm && gdm->tty_dev && gdm->port.count)
55032 +#define GDM_TTY_READY(gdm) (gdm && gdm->tty_dev && atomic_read(&gdm->port.count))
55033
55034 static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
55035 static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
55036 diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
55037 index b892f2c..9b4898a 100644
55038 --- a/drivers/staging/iio/accel/lis3l02dq_ring.c
55039 +++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
55040 @@ -118,7 +118,7 @@ static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev,
55041 int scan_count = bitmap_weight(indio_dev->active_scan_mask,
55042 indio_dev->masklength);
55043
55044 - rx_array = kcalloc(4, scan_count, GFP_KERNEL);
55045 + rx_array = kcalloc(scan_count, 4, GFP_KERNEL);
55046 if (!rx_array)
55047 return -ENOMEM;
55048 ret = lis3l02dq_read_all(indio_dev, rx_array);
55049 diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c
55050 index d98e229..9c59bc2 100644
55051 --- a/drivers/staging/iio/adc/ad7280a.c
55052 +++ b/drivers/staging/iio/adc/ad7280a.c
55053 @@ -547,8 +547,8 @@ static int ad7280_attr_init(struct ad7280_state *st)
55054 {
55055 int dev, ch, cnt;
55056
55057 - st->iio_attr = kcalloc(2, sizeof(*st->iio_attr) *
55058 - (st->slave_num + 1) * AD7280A_CELLS_PER_DEV,
55059 + st->iio_attr = kcalloc(sizeof(*st->iio_attr) *
55060 + (st->slave_num + 1) * AD7280A_CELLS_PER_DEV, 2,
55061 GFP_KERNEL);
55062 if (st->iio_attr == NULL)
55063 return -ENOMEM;
55064 diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c
55065 index de11f1b..f7181cf 100644
55066 --- a/drivers/staging/lustre/lnet/selftest/brw_test.c
55067 +++ b/drivers/staging/lustre/lnet/selftest/brw_test.c
55068 @@ -487,13 +487,11 @@ brw_server_handle(struct srpc_server_rpc *rpc)
55069 return 0;
55070 }
55071
55072 -sfw_test_client_ops_t brw_test_client;
55073 -void brw_init_test_client(void)
55074 -{
55075 - brw_test_client.tso_init = brw_client_init;
55076 - brw_test_client.tso_fini = brw_client_fini;
55077 - brw_test_client.tso_prep_rpc = brw_client_prep_rpc;
55078 - brw_test_client.tso_done_rpc = brw_client_done_rpc;
55079 +sfw_test_client_ops_t brw_test_client = {
55080 + .tso_init = brw_client_init,
55081 + .tso_fini = brw_client_fini,
55082 + .tso_prep_rpc = brw_client_prep_rpc,
55083 + .tso_done_rpc = brw_client_done_rpc,
55084 };
55085
55086 srpc_service_t brw_test_service;
55087 diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c
55088 index 7c5185a..51c2ae7 100644
55089 --- a/drivers/staging/lustre/lnet/selftest/framework.c
55090 +++ b/drivers/staging/lustre/lnet/selftest/framework.c
55091 @@ -1628,12 +1628,10 @@ static srpc_service_t sfw_services[] = {
55092
55093 extern sfw_test_client_ops_t ping_test_client;
55094 extern srpc_service_t ping_test_service;
55095 -extern void ping_init_test_client(void);
55096 extern void ping_init_test_service(void);
55097
55098 extern sfw_test_client_ops_t brw_test_client;
55099 extern srpc_service_t brw_test_service;
55100 -extern void brw_init_test_client(void);
55101 extern void brw_init_test_service(void);
55102
55103
55104 @@ -1675,12 +1673,10 @@ sfw_startup(void)
55105 INIT_LIST_HEAD(&sfw_data.fw_zombie_rpcs);
55106 INIT_LIST_HEAD(&sfw_data.fw_zombie_sessions);
55107
55108 - brw_init_test_client();
55109 brw_init_test_service();
55110 rc = sfw_register_test(&brw_test_service, &brw_test_client);
55111 LASSERT(rc == 0);
55112
55113 - ping_init_test_client();
55114 ping_init_test_service();
55115 rc = sfw_register_test(&ping_test_service, &ping_test_client);
55116 LASSERT(rc == 0);
55117 diff --git a/drivers/staging/lustre/lnet/selftest/ping_test.c b/drivers/staging/lustre/lnet/selftest/ping_test.c
55118 index 1dab998..edfe0ac 100644
55119 --- a/drivers/staging/lustre/lnet/selftest/ping_test.c
55120 +++ b/drivers/staging/lustre/lnet/selftest/ping_test.c
55121 @@ -211,14 +211,12 @@ ping_server_handle(struct srpc_server_rpc *rpc)
55122 return 0;
55123 }
55124
55125 -sfw_test_client_ops_t ping_test_client;
55126 -void ping_init_test_client(void)
55127 -{
55128 - ping_test_client.tso_init = ping_client_init;
55129 - ping_test_client.tso_fini = ping_client_fini;
55130 - ping_test_client.tso_prep_rpc = ping_client_prep_rpc;
55131 - ping_test_client.tso_done_rpc = ping_client_done_rpc;
55132 -}
55133 +sfw_test_client_ops_t ping_test_client = {
55134 + .tso_init = ping_client_init,
55135 + .tso_fini = ping_client_fini,
55136 + .tso_prep_rpc = ping_client_prep_rpc,
55137 + .tso_done_rpc = ping_client_done_rpc,
55138 +};
55139
55140 srpc_service_t ping_test_service;
55141 void ping_init_test_service(void)
55142 diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h
55143 index f6f4c03..cdc3556 100644
55144 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h
55145 +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h
55146 @@ -1107,7 +1107,7 @@ struct ldlm_callback_suite {
55147 ldlm_completion_callback lcs_completion;
55148 ldlm_blocking_callback lcs_blocking;
55149 ldlm_glimpse_callback lcs_glimpse;
55150 -};
55151 +} __no_const;
55152
55153 /* ldlm_lockd.c */
55154 int ldlm_del_waiting_lock(struct ldlm_lock *lock);
55155 diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
55156 index 55452e5..43b0f2f 100644
55157 --- a/drivers/staging/lustre/lustre/include/obd.h
55158 +++ b/drivers/staging/lustre/lustre/include/obd.h
55159 @@ -1364,7 +1364,7 @@ struct md_ops {
55160 * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a
55161 * wrapper function in include/linux/obd_class.h.
55162 */
55163 -};
55164 +} __no_const;
55165
55166 struct lsm_operations {
55167 void (*lsm_free)(struct lov_stripe_md *);
55168 diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
55169 index a4c252f..b21acac 100644
55170 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
55171 +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
55172 @@ -258,7 +258,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int first_enq,
55173 int added = (mode == LCK_NL);
55174 int overlaps = 0;
55175 int splitted = 0;
55176 - const struct ldlm_callback_suite null_cbs = { NULL };
55177 + const struct ldlm_callback_suite null_cbs = { };
55178
55179 CDEBUG(D_DLMTRACE,
55180 "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n",
55181 diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
55182 index e60b2e9..ad9ceb3 100644
55183 --- a/drivers/staging/lustre/lustre/libcfs/module.c
55184 +++ b/drivers/staging/lustre/lustre/libcfs/module.c
55185 @@ -377,11 +377,11 @@ out:
55186
55187
55188 struct cfs_psdev_ops libcfs_psdev_ops = {
55189 - libcfs_psdev_open,
55190 - libcfs_psdev_release,
55191 - NULL,
55192 - NULL,
55193 - libcfs_ioctl
55194 + .p_open = libcfs_psdev_open,
55195 + .p_close = libcfs_psdev_release,
55196 + .p_read = NULL,
55197 + .p_write = NULL,
55198 + .p_ioctl = libcfs_ioctl
55199 };
55200
55201 static int init_libcfs_module(void)
55202 @@ -623,7 +623,7 @@ static int proc_console_max_delay_cs(struct ctl_table *table, int write,
55203 loff_t *ppos)
55204 {
55205 int rc, max_delay_cs;
55206 - struct ctl_table dummy = *table;
55207 + ctl_table_no_const dummy = *table;
55208 long d;
55209
55210 dummy.data = &max_delay_cs;
55211 @@ -656,7 +656,7 @@ static int proc_console_min_delay_cs(struct ctl_table *table, int write,
55212 loff_t *ppos)
55213 {
55214 int rc, min_delay_cs;
55215 - struct ctl_table dummy = *table;
55216 + ctl_table_no_const dummy = *table;
55217 long d;
55218
55219 dummy.data = &min_delay_cs;
55220 @@ -688,7 +688,7 @@ static int proc_console_backoff(struct ctl_table *table, int write,
55221 void __user *buffer, size_t *lenp, loff_t *ppos)
55222 {
55223 int rc, backoff;
55224 - struct ctl_table dummy = *table;
55225 + ctl_table_no_const dummy = *table;
55226
55227 dummy.data = &backoff;
55228 dummy.proc_handler = &proc_dointvec;
55229 diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
55230 index 22853d3..cfa3c49 100644
55231 --- a/drivers/staging/octeon/ethernet-rx.c
55232 +++ b/drivers/staging/octeon/ethernet-rx.c
55233 @@ -335,14 +335,14 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
55234 /* Increment RX stats for virtual ports */
55235 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
55236 #ifdef CONFIG_64BIT
55237 - atomic64_add(1,
55238 + atomic64_add_unchecked(1,
55239 (atomic64_t *)&priv->stats.rx_packets);
55240 - atomic64_add(skb->len,
55241 + atomic64_add_unchecked(skb->len,
55242 (atomic64_t *)&priv->stats.rx_bytes);
55243 #else
55244 - atomic_add(1,
55245 + atomic_add_unchecked(1,
55246 (atomic_t *)&priv->stats.rx_packets);
55247 - atomic_add(skb->len,
55248 + atomic_add_unchecked(skb->len,
55249 (atomic_t *)&priv->stats.rx_bytes);
55250 #endif
55251 }
55252 @@ -354,10 +354,10 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
55253 dev->name);
55254 */
55255 #ifdef CONFIG_64BIT
55256 - atomic64_add(1,
55257 + atomic64_add_unchecked(1,
55258 (atomic64_t *)&priv->stats.rx_dropped);
55259 #else
55260 - atomic_add(1,
55261 + atomic_add_unchecked(1,
55262 (atomic_t *)&priv->stats.rx_dropped);
55263 #endif
55264 dev_kfree_skb_irq(skb);
55265 diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
55266 index f9dba23..7bc0ef3 100644
55267 --- a/drivers/staging/octeon/ethernet.c
55268 +++ b/drivers/staging/octeon/ethernet.c
55269 @@ -231,11 +231,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
55270 * since the RX tasklet also increments it.
55271 */
55272 #ifdef CONFIG_64BIT
55273 - atomic64_add(rx_status.dropped_packets,
55274 - (atomic64_t *)&priv->stats.rx_dropped);
55275 + atomic64_add_unchecked(rx_status.dropped_packets,
55276 + (atomic64_unchecked_t *)&priv->stats.rx_dropped);
55277 #else
55278 - atomic_add(rx_status.dropped_packets,
55279 - (atomic_t *)&priv->stats.rx_dropped);
55280 + atomic_add_unchecked(rx_status.dropped_packets,
55281 + (atomic_unchecked_t *)&priv->stats.rx_dropped);
55282 #endif
55283 }
55284
55285 diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h
55286 index 3b476d8..f522d68 100644
55287 --- a/drivers/staging/rtl8188eu/include/hal_intf.h
55288 +++ b/drivers/staging/rtl8188eu/include/hal_intf.h
55289 @@ -225,7 +225,7 @@ struct hal_ops {
55290
55291 void (*hal_notch_filter)(struct adapter *adapter, bool enable);
55292 void (*hal_reset_security_engine)(struct adapter *adapter);
55293 -};
55294 +} __no_const;
55295
55296 enum rt_eeprom_type {
55297 EEPROM_93C46,
55298 diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h
55299 index 070cc03..6806e37 100644
55300 --- a/drivers/staging/rtl8712/rtl871x_io.h
55301 +++ b/drivers/staging/rtl8712/rtl871x_io.h
55302 @@ -108,7 +108,7 @@ struct _io_ops {
55303 u8 *pmem);
55304 u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
55305 u8 *pmem);
55306 -};
55307 +} __no_const;
55308
55309 struct io_req {
55310 struct list_head list;
55311 diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
55312 index 8e201f1..bf2a28d 100644
55313 --- a/drivers/staging/sm750fb/sm750.c
55314 +++ b/drivers/staging/sm750fb/sm750.c
55315 @@ -775,6 +775,7 @@ static struct fb_ops lynxfb_ops = {
55316 .fb_set_par = lynxfb_ops_set_par,
55317 .fb_setcolreg = lynxfb_ops_setcolreg,
55318 .fb_blank = lynxfb_ops_blank,
55319 + .fb_pan_display = lynxfb_ops_pan_display,
55320 .fb_fillrect = cfb_fillrect,
55321 .fb_imageblit = cfb_imageblit,
55322 .fb_copyarea = cfb_copyarea,
55323 @@ -822,8 +823,10 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
55324 par->index = index;
55325 output->channel = &crtc->channel;
55326 sm750fb_set_drv(par);
55327 - lynxfb_ops.fb_pan_display = lynxfb_ops_pan_display;
55328
55329 + pax_open_kernel();
55330 + *(void **)&lynxfb_ops.fb_pan_display = lynxfb_ops_pan_display;
55331 + pax_close_kernel();
55332
55333 /* set current cursor variable and proc pointer,
55334 * must be set after crtc member initialized */
55335 @@ -845,7 +848,9 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
55336 crtc->cursor.share = share;
55337 memset_io(crtc->cursor.vstart, 0, crtc->cursor.size);
55338 if (!g_hwcursor) {
55339 - lynxfb_ops.fb_cursor = NULL;
55340 + pax_open_kernel();
55341 + *(void **)&lynxfb_ops.fb_cursor = NULL;
55342 + pax_close_kernel();
55343 crtc->cursor.disable(&crtc->cursor);
55344 }
55345
55346 @@ -853,9 +858,11 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
55347 /* set info->fbops, must be set before fb_find_mode */
55348 if (!share->accel_off) {
55349 /* use 2d acceleration */
55350 - lynxfb_ops.fb_fillrect = lynxfb_ops_fillrect;
55351 - lynxfb_ops.fb_copyarea = lynxfb_ops_copyarea;
55352 - lynxfb_ops.fb_imageblit = lynxfb_ops_imageblit;
55353 + pax_open_kernel();
55354 + *(void **)&lynxfb_ops.fb_fillrect = lynxfb_ops_fillrect;
55355 + *(void **)&lynxfb_ops.fb_copyarea = lynxfb_ops_copyarea;
55356 + *(void **)&lynxfb_ops.fb_imageblit = lynxfb_ops_imageblit;
55357 + pax_close_kernel();
55358 }
55359 info->fbops = &lynxfb_ops;
55360
55361 diff --git a/drivers/staging/unisys/visorbus/visorbus_private.h b/drivers/staging/unisys/visorbus/visorbus_private.h
55362 index 2f12483..6e1b50a 100644
55363 --- a/drivers/staging/unisys/visorbus/visorbus_private.h
55364 +++ b/drivers/staging/unisys/visorbus/visorbus_private.h
55365 @@ -35,7 +35,7 @@ struct visorchipset_busdev_notifiers {
55366 void (*device_destroy)(struct visor_device *bus_info);
55367 void (*device_pause)(struct visor_device *bus_info);
55368 void (*device_resume)(struct visor_device *bus_info);
55369 -};
55370 +} __no_const;
55371
55372 /* These functions live inside visorchipset, and will be called to indicate
55373 * responses to specific events (by code outside of visorchipset).
55374 @@ -50,7 +50,7 @@ struct visorchipset_busdev_responders {
55375 void (*device_destroy)(struct visor_device *p, int response);
55376 void (*device_pause)(struct visor_device *p, int response);
55377 void (*device_resume)(struct visor_device *p, int response);
55378 -};
55379 +} __no_const;
55380
55381 /** Register functions (in the bus driver) to get called by visorchipset
55382 * whenever a bus or device appears for which this guest is to be the
55383 diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c
55384 index 0edf320..49afe95 100644
55385 --- a/drivers/target/sbp/sbp_target.c
55386 +++ b/drivers/target/sbp/sbp_target.c
55387 @@ -60,7 +60,7 @@ static const u32 sbp_unit_directory_template[] = {
55388
55389 #define SESSION_MAINTENANCE_INTERVAL HZ
55390
55391 -static atomic_t login_id = ATOMIC_INIT(0);
55392 +static atomic_unchecked_t login_id = ATOMIC_INIT(0);
55393
55394 static void session_maintenance_work(struct work_struct *);
55395 static int sbp_run_transaction(struct fw_card *, int, int, int, int,
55396 @@ -441,7 +441,7 @@ static void sbp_management_request_login(
55397 login->login_lun = unpacked_lun;
55398 login->status_fifo_addr = sbp2_pointer_to_addr(&req->orb.status_fifo);
55399 login->exclusive = LOGIN_ORB_EXCLUSIVE(be32_to_cpu(req->orb.misc));
55400 - login->login_id = atomic_inc_return(&login_id);
55401 + login->login_id = atomic_inc_return_unchecked(&login_id);
55402
55403 login->tgt_agt = sbp_target_agent_register(login);
55404 if (IS_ERR(login->tgt_agt)) {
55405 diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
55406 index 09e682b..1980042 100644
55407 --- a/drivers/target/target_core_device.c
55408 +++ b/drivers/target/target_core_device.c
55409 @@ -771,7 +771,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
55410 spin_lock_init(&dev->se_tmr_lock);
55411 spin_lock_init(&dev->qf_cmd_lock);
55412 sema_init(&dev->caw_sem, 1);
55413 - atomic_set(&dev->dev_ordered_id, 0);
55414 + atomic_set_unchecked(&dev->dev_ordered_id, 0);
55415 INIT_LIST_HEAD(&dev->t10_wwn.t10_vpd_list);
55416 spin_lock_init(&dev->t10_wwn.t10_vpd_lock);
55417 INIT_LIST_HEAD(&dev->t10_pr.registration_list);
55418 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
55419 index ce8574b..98d6199 100644
55420 --- a/drivers/target/target_core_transport.c
55421 +++ b/drivers/target/target_core_transport.c
55422 @@ -1181,7 +1181,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
55423 * Used to determine when ORDERED commands should go from
55424 * Dormant to Active status.
55425 */
55426 - cmd->se_ordered_id = atomic_inc_return(&dev->dev_ordered_id);
55427 + cmd->se_ordered_id = atomic_inc_return_unchecked(&dev->dev_ordered_id);
55428 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
55429 cmd->se_ordered_id, cmd->sam_task_attr,
55430 dev->transport->name);
55431 diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c
55432 index 620dcd4..b91b5e0 100644
55433 --- a/drivers/thermal/cpu_cooling.c
55434 +++ b/drivers/thermal/cpu_cooling.c
55435 @@ -831,10 +831,11 @@ __cpufreq_cooling_register(struct device_node *np,
55436 cpumask_copy(&cpufreq_dev->allowed_cpus, clip_cpus);
55437
55438 if (capacitance) {
55439 - cpufreq_cooling_ops.get_requested_power =
55440 - cpufreq_get_requested_power;
55441 - cpufreq_cooling_ops.state2power = cpufreq_state2power;
55442 - cpufreq_cooling_ops.power2state = cpufreq_power2state;
55443 + pax_open_kernel();
55444 + *(void **)&cpufreq_cooling_ops.get_requested_power = cpufreq_get_requested_power;
55445 + *(void **)&cpufreq_cooling_ops.state2power = cpufreq_state2power;
55446 + *(void **)&cpufreq_cooling_ops.power2state = cpufreq_power2state;
55447 + pax_close_kernel();
55448 cpufreq_dev->plat_get_static_power = plat_static_func;
55449
55450 ret = build_dyn_power_table(cpufreq_dev, capacitance);
55451 diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c
55452 index 031018e..90981a1 100644
55453 --- a/drivers/thermal/int340x_thermal/int3400_thermal.c
55454 +++ b/drivers/thermal/int340x_thermal/int3400_thermal.c
55455 @@ -272,8 +272,10 @@ static int int3400_thermal_probe(struct platform_device *pdev)
55456 platform_set_drvdata(pdev, priv);
55457
55458 if (priv->uuid_bitmap & 1 << INT3400_THERMAL_PASSIVE_1) {
55459 - int3400_thermal_ops.get_mode = int3400_thermal_get_mode;
55460 - int3400_thermal_ops.set_mode = int3400_thermal_set_mode;
55461 + pax_open_kernel();
55462 + *(void **)&int3400_thermal_ops.get_mode = int3400_thermal_get_mode;
55463 + *(void **)&int3400_thermal_ops.set_mode = int3400_thermal_set_mode;
55464 + pax_close_kernel();
55465 }
55466 priv->thermal = thermal_zone_device_register("INT3400 Thermal", 0, 0,
55467 priv, &int3400_thermal_ops,
55468 diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
55469 index b295b2b..f7e2a30 100644
55470 --- a/drivers/thermal/of-thermal.c
55471 +++ b/drivers/thermal/of-thermal.c
55472 @@ -31,6 +31,7 @@
55473 #include <linux/export.h>
55474 #include <linux/string.h>
55475 #include <linux/thermal.h>
55476 +#include <linux/mm.h>
55477
55478 #include "thermal_core.h"
55479
55480 @@ -417,9 +418,11 @@ thermal_zone_of_add_sensor(struct device_node *zone,
55481 tz->ops = ops;
55482 tz->sensor_data = data;
55483
55484 - tzd->ops->get_temp = of_thermal_get_temp;
55485 - tzd->ops->get_trend = of_thermal_get_trend;
55486 - tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
55487 + pax_open_kernel();
55488 + *(void **)&tzd->ops->get_temp = of_thermal_get_temp;
55489 + *(void **)&tzd->ops->get_trend = of_thermal_get_trend;
55490 + *(void **)&tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
55491 + pax_close_kernel();
55492 mutex_unlock(&tzd->lock);
55493
55494 return tzd;
55495 @@ -549,9 +552,11 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
55496 return;
55497
55498 mutex_lock(&tzd->lock);
55499 - tzd->ops->get_temp = NULL;
55500 - tzd->ops->get_trend = NULL;
55501 - tzd->ops->set_emul_temp = NULL;
55502 + pax_open_kernel();
55503 + *(void **)&tzd->ops->get_temp = NULL;
55504 + *(void **)&tzd->ops->get_trend = NULL;
55505 + *(void **)&tzd->ops->set_emul_temp = NULL;
55506 + pax_close_kernel();
55507
55508 tz->ops = NULL;
55509 tz->sensor_data = NULL;
55510 diff --git a/drivers/thermal/x86_pkg_temp_thermal.c b/drivers/thermal/x86_pkg_temp_thermal.c
55511 index 50d1d2c..39c5ce0 100644
55512 --- a/drivers/thermal/x86_pkg_temp_thermal.c
55513 +++ b/drivers/thermal/x86_pkg_temp_thermal.c
55514 @@ -567,7 +567,7 @@ static int pkg_temp_thermal_cpu_callback(struct notifier_block *nfb,
55515 return NOTIFY_OK;
55516 }
55517
55518 -static struct notifier_block pkg_temp_thermal_notifier __refdata = {
55519 +static struct notifier_block pkg_temp_thermal_notifier __refconst = {
55520 .notifier_call = pkg_temp_thermal_cpu_callback,
55521 };
55522
55523 diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
55524 index 87f6578..905c8f8 100644
55525 --- a/drivers/tty/cyclades.c
55526 +++ b/drivers/tty/cyclades.c
55527 @@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp)
55528 printk(KERN_DEBUG "cyc:cy_open ttyC%d, count = %d\n", info->line,
55529 info->port.count);
55530 #endif
55531 - info->port.count++;
55532 + atomic_inc(&info->port.count);
55533 #ifdef CY_DEBUG_COUNT
55534 printk(KERN_DEBUG "cyc:cy_open (%d): incrementing count to %d\n",
55535 - current->pid, info->port.count);
55536 + current->pid, atomic_read(&info->port.count));
55537 #endif
55538
55539 /*
55540 @@ -3970,7 +3970,7 @@ static int cyclades_proc_show(struct seq_file *m, void *v)
55541 for (j = 0; j < cy_card[i].nports; j++) {
55542 info = &cy_card[i].ports[j];
55543
55544 - if (info->port.count) {
55545 + if (atomic_read(&info->port.count)) {
55546 /* XXX is the ldisc num worth this? */
55547 struct tty_struct *tty;
55548 struct tty_ldisc *ld;
55549 diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
55550 index 4e9c4cc..2199d8f 100644
55551 --- a/drivers/tty/hvc/hvc_console.c
55552 +++ b/drivers/tty/hvc/hvc_console.c
55553 @@ -343,7 +343,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
55554
55555 spin_lock_irqsave(&hp->port.lock, flags);
55556 /* Check and then increment for fast path open. */
55557 - if (hp->port.count++ > 0) {
55558 + if (atomic_inc_return(&hp->port.count) > 1) {
55559 spin_unlock_irqrestore(&hp->port.lock, flags);
55560 hvc_kick();
55561 return 0;
55562 @@ -398,7 +398,7 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
55563
55564 spin_lock_irqsave(&hp->port.lock, flags);
55565
55566 - if (--hp->port.count == 0) {
55567 + if (atomic_dec_return(&hp->port.count) == 0) {
55568 spin_unlock_irqrestore(&hp->port.lock, flags);
55569 /* We are done with the tty pointer now. */
55570 tty_port_tty_set(&hp->port, NULL);
55571 @@ -420,9 +420,9 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
55572 */
55573 tty_wait_until_sent_from_close(tty, HVC_CLOSE_WAIT);
55574 } else {
55575 - if (hp->port.count < 0)
55576 + if (atomic_read(&hp->port.count) < 0)
55577 printk(KERN_ERR "hvc_close %X: oops, count is %d\n",
55578 - hp->vtermno, hp->port.count);
55579 + hp->vtermno, atomic_read(&hp->port.count));
55580 spin_unlock_irqrestore(&hp->port.lock, flags);
55581 }
55582 }
55583 @@ -452,12 +452,12 @@ static void hvc_hangup(struct tty_struct *tty)
55584 * open->hangup case this can be called after the final close so prevent
55585 * that from happening for now.
55586 */
55587 - if (hp->port.count <= 0) {
55588 + if (atomic_read(&hp->port.count) <= 0) {
55589 spin_unlock_irqrestore(&hp->port.lock, flags);
55590 return;
55591 }
55592
55593 - hp->port.count = 0;
55594 + atomic_set(&hp->port.count, 0);
55595 spin_unlock_irqrestore(&hp->port.lock, flags);
55596 tty_port_tty_set(&hp->port, NULL);
55597
55598 @@ -505,7 +505,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
55599 return -EPIPE;
55600
55601 /* FIXME what's this (unprotected) check for? */
55602 - if (hp->port.count <= 0)
55603 + if (atomic_read(&hp->port.count) <= 0)
55604 return -EIO;
55605
55606 spin_lock_irqsave(&hp->lock, flags);
55607 diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
55608 index f7ff97c..0c0ebbf 100644
55609 --- a/drivers/tty/hvc/hvcs.c
55610 +++ b/drivers/tty/hvc/hvcs.c
55611 @@ -83,6 +83,7 @@
55612 #include <asm/hvcserver.h>
55613 #include <asm/uaccess.h>
55614 #include <asm/vio.h>
55615 +#include <asm/local.h>
55616
55617 /*
55618 * 1.3.0 -> 1.3.1 In hvcs_open memset(..,0x00,..) instead of memset(..,0x3F,00).
55619 @@ -416,7 +417,7 @@ static ssize_t hvcs_vterm_state_store(struct device *dev, struct device_attribut
55620
55621 spin_lock_irqsave(&hvcsd->lock, flags);
55622
55623 - if (hvcsd->port.count > 0) {
55624 + if (atomic_read(&hvcsd->port.count) > 0) {
55625 spin_unlock_irqrestore(&hvcsd->lock, flags);
55626 printk(KERN_INFO "HVCS: vterm state unchanged. "
55627 "The hvcs device node is still in use.\n");
55628 @@ -1127,7 +1128,7 @@ static int hvcs_install(struct tty_driver *driver, struct tty_struct *tty)
55629 }
55630 }
55631
55632 - hvcsd->port.count = 0;
55633 + atomic_set(&hvcsd->port.count, 0);
55634 hvcsd->port.tty = tty;
55635 tty->driver_data = hvcsd;
55636
55637 @@ -1180,7 +1181,7 @@ static int hvcs_open(struct tty_struct *tty, struct file *filp)
55638 unsigned long flags;
55639
55640 spin_lock_irqsave(&hvcsd->lock, flags);
55641 - hvcsd->port.count++;
55642 + atomic_inc(&hvcsd->port.count);
55643 hvcsd->todo_mask |= HVCS_SCHED_READ;
55644 spin_unlock_irqrestore(&hvcsd->lock, flags);
55645
55646 @@ -1216,7 +1217,7 @@ static void hvcs_close(struct tty_struct *tty, struct file *filp)
55647 hvcsd = tty->driver_data;
55648
55649 spin_lock_irqsave(&hvcsd->lock, flags);
55650 - if (--hvcsd->port.count == 0) {
55651 + if (atomic_dec_and_test(&hvcsd->port.count)) {
55652
55653 vio_disable_interrupts(hvcsd->vdev);
55654
55655 @@ -1241,10 +1242,10 @@ static void hvcs_close(struct tty_struct *tty, struct file *filp)
55656
55657 free_irq(irq, hvcsd);
55658 return;
55659 - } else if (hvcsd->port.count < 0) {
55660 + } else if (atomic_read(&hvcsd->port.count) < 0) {
55661 printk(KERN_ERR "HVCS: vty-server@%X open_count: %d"
55662 " is missmanaged.\n",
55663 - hvcsd->vdev->unit_address, hvcsd->port.count);
55664 + hvcsd->vdev->unit_address, atomic_read(&hvcsd->port.count));
55665 }
55666
55667 spin_unlock_irqrestore(&hvcsd->lock, flags);
55668 @@ -1266,7 +1267,7 @@ static void hvcs_hangup(struct tty_struct * tty)
55669
55670 spin_lock_irqsave(&hvcsd->lock, flags);
55671 /* Preserve this so that we know how many kref refs to put */
55672 - temp_open_count = hvcsd->port.count;
55673 + temp_open_count = atomic_read(&hvcsd->port.count);
55674
55675 /*
55676 * Don't kref put inside the spinlock because the destruction
55677 @@ -1281,7 +1282,7 @@ static void hvcs_hangup(struct tty_struct * tty)
55678 tty->driver_data = NULL;
55679 hvcsd->port.tty = NULL;
55680
55681 - hvcsd->port.count = 0;
55682 + atomic_set(&hvcsd->port.count, 0);
55683
55684 /* This will drop any buffered data on the floor which is OK in a hangup
55685 * scenario. */
55686 @@ -1352,7 +1353,7 @@ static int hvcs_write(struct tty_struct *tty,
55687 * the middle of a write operation? This is a crummy place to do this
55688 * but we want to keep it all in the spinlock.
55689 */
55690 - if (hvcsd->port.count <= 0) {
55691 + if (atomic_read(&hvcsd->port.count) <= 0) {
55692 spin_unlock_irqrestore(&hvcsd->lock, flags);
55693 return -ENODEV;
55694 }
55695 @@ -1426,7 +1427,7 @@ static int hvcs_write_room(struct tty_struct *tty)
55696 {
55697 struct hvcs_struct *hvcsd = tty->driver_data;
55698
55699 - if (!hvcsd || hvcsd->port.count <= 0)
55700 + if (!hvcsd || atomic_read(&hvcsd->port.count) <= 0)
55701 return 0;
55702
55703 return HVCS_BUFF_LEN - hvcsd->chars_in_buffer;
55704 diff --git a/drivers/tty/hvc/hvsi.c b/drivers/tty/hvc/hvsi.c
55705 index 4190199..06d5bfa 100644
55706 --- a/drivers/tty/hvc/hvsi.c
55707 +++ b/drivers/tty/hvc/hvsi.c
55708 @@ -85,7 +85,7 @@ struct hvsi_struct {
55709 int n_outbuf;
55710 uint32_t vtermno;
55711 uint32_t virq;
55712 - atomic_t seqno; /* HVSI packet sequence number */
55713 + atomic_unchecked_t seqno; /* HVSI packet sequence number */
55714 uint16_t mctrl;
55715 uint8_t state; /* HVSI protocol state */
55716 uint8_t flags;
55717 @@ -295,7 +295,7 @@ static int hvsi_version_respond(struct hvsi_struct *hp, uint16_t query_seqno)
55718
55719 packet.hdr.type = VS_QUERY_RESPONSE_PACKET_HEADER;
55720 packet.hdr.len = sizeof(struct hvsi_query_response);
55721 - packet.hdr.seqno = atomic_inc_return(&hp->seqno);
55722 + packet.hdr.seqno = atomic_inc_return_unchecked(&hp->seqno);
55723 packet.verb = VSV_SEND_VERSION_NUMBER;
55724 packet.u.version = HVSI_VERSION;
55725 packet.query_seqno = query_seqno+1;
55726 @@ -555,7 +555,7 @@ static int hvsi_query(struct hvsi_struct *hp, uint16_t verb)
55727
55728 packet.hdr.type = VS_QUERY_PACKET_HEADER;
55729 packet.hdr.len = sizeof(struct hvsi_query);
55730 - packet.hdr.seqno = atomic_inc_return(&hp->seqno);
55731 + packet.hdr.seqno = atomic_inc_return_unchecked(&hp->seqno);
55732 packet.verb = verb;
55733
55734 pr_debug("%s: sending %i bytes\n", __func__, packet.hdr.len);
55735 @@ -597,7 +597,7 @@ static int hvsi_set_mctrl(struct hvsi_struct *hp, uint16_t mctrl)
55736 int wrote;
55737
55738 packet.hdr.type = VS_CONTROL_PACKET_HEADER,
55739 - packet.hdr.seqno = atomic_inc_return(&hp->seqno);
55740 + packet.hdr.seqno = atomic_inc_return_unchecked(&hp->seqno);
55741 packet.hdr.len = sizeof(struct hvsi_control);
55742 packet.verb = VSV_SET_MODEM_CTL;
55743 packet.mask = HVSI_TSDTR;
55744 @@ -680,7 +680,7 @@ static int hvsi_put_chars(struct hvsi_struct *hp, const char *buf, int count)
55745 BUG_ON(count > HVSI_MAX_OUTGOING_DATA);
55746
55747 packet.hdr.type = VS_DATA_PACKET_HEADER;
55748 - packet.hdr.seqno = atomic_inc_return(&hp->seqno);
55749 + packet.hdr.seqno = atomic_inc_return_unchecked(&hp->seqno);
55750 packet.hdr.len = count + sizeof(struct hvsi_header);
55751 memcpy(&packet.data, buf, count);
55752
55753 @@ -697,7 +697,7 @@ static void hvsi_close_protocol(struct hvsi_struct *hp)
55754 struct hvsi_control packet __ALIGNED__;
55755
55756 packet.hdr.type = VS_CONTROL_PACKET_HEADER;
55757 - packet.hdr.seqno = atomic_inc_return(&hp->seqno);
55758 + packet.hdr.seqno = atomic_inc_return_unchecked(&hp->seqno);
55759 packet.hdr.len = 6;
55760 packet.verb = VSV_CLOSE_PROTOCOL;
55761
55762 @@ -725,7 +725,7 @@ static int hvsi_open(struct tty_struct *tty, struct file *filp)
55763
55764 tty_port_tty_set(&hp->port, tty);
55765 spin_lock_irqsave(&hp->lock, flags);
55766 - hp->port.count++;
55767 + atomic_inc(&hp->port.count);
55768 atomic_set(&hp->seqno, 0);
55769 h_vio_signal(hp->vtermno, VIO_IRQ_ENABLE);
55770 spin_unlock_irqrestore(&hp->lock, flags);
55771 @@ -782,7 +782,7 @@ static void hvsi_close(struct tty_struct *tty, struct file *filp)
55772
55773 spin_lock_irqsave(&hp->lock, flags);
55774
55775 - if (--hp->port.count == 0) {
55776 + if (atomic_dec_return(&hp->port.count) == 0) {
55777 tty_port_tty_set(&hp->port, NULL);
55778 hp->inbuf_end = hp->inbuf; /* discard remaining partial packets */
55779
55780 @@ -815,9 +815,9 @@ static void hvsi_close(struct tty_struct *tty, struct file *filp)
55781
55782 spin_lock_irqsave(&hp->lock, flags);
55783 }
55784 - } else if (hp->port.count < 0)
55785 + } else if (atomic_read(&hp->port.count) < 0)
55786 printk(KERN_ERR "hvsi_close %lu: oops, count is %d\n",
55787 - hp - hvsi_ports, hp->port.count);
55788 + hp - hvsi_ports, atomic_read(&hp->port.count));
55789
55790 spin_unlock_irqrestore(&hp->lock, flags);
55791 }
55792 @@ -832,7 +832,7 @@ static void hvsi_hangup(struct tty_struct *tty)
55793 tty_port_tty_set(&hp->port, NULL);
55794
55795 spin_lock_irqsave(&hp->lock, flags);
55796 - hp->port.count = 0;
55797 + atomic_set(&hp->port.count, 0);
55798 hp->n_outbuf = 0;
55799 spin_unlock_irqrestore(&hp->lock, flags);
55800 }
55801 diff --git a/drivers/tty/hvc/hvsi_lib.c b/drivers/tty/hvc/hvsi_lib.c
55802 index a270f04..7c77b5d 100644
55803 --- a/drivers/tty/hvc/hvsi_lib.c
55804 +++ b/drivers/tty/hvc/hvsi_lib.c
55805 @@ -8,7 +8,7 @@
55806
55807 static int hvsi_send_packet(struct hvsi_priv *pv, struct hvsi_header *packet)
55808 {
55809 - packet->seqno = cpu_to_be16(atomic_inc_return(&pv->seqno));
55810 + packet->seqno = cpu_to_be16(atomic_inc_return_unchecked(&pv->seqno));
55811
55812 /* Assumes that always succeeds, works in practice */
55813 return pv->put_chars(pv->termno, (char *)packet, packet->len);
55814 @@ -20,7 +20,7 @@ static void hvsi_start_handshake(struct hvsi_priv *pv)
55815
55816 /* Reset state */
55817 pv->established = 0;
55818 - atomic_set(&pv->seqno, 0);
55819 + atomic_set_unchecked(&pv->seqno, 0);
55820
55821 pr_devel("HVSI@%x: Handshaking started\n", pv->termno);
55822
55823 diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
55824 index 345cebb..d5a1e9e 100644
55825 --- a/drivers/tty/ipwireless/tty.c
55826 +++ b/drivers/tty/ipwireless/tty.c
55827 @@ -28,6 +28,7 @@
55828 #include <linux/tty_driver.h>
55829 #include <linux/tty_flip.h>
55830 #include <linux/uaccess.h>
55831 +#include <asm/local.h>
55832
55833 #include "tty.h"
55834 #include "network.h"
55835 @@ -93,10 +94,10 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
55836 return -ENODEV;
55837
55838 mutex_lock(&tty->ipw_tty_mutex);
55839 - if (tty->port.count == 0)
55840 + if (atomic_read(&tty->port.count) == 0)
55841 tty->tx_bytes_queued = 0;
55842
55843 - tty->port.count++;
55844 + atomic_inc(&tty->port.count);
55845
55846 tty->port.tty = linux_tty;
55847 linux_tty->driver_data = tty;
55848 @@ -112,9 +113,7 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
55849
55850 static void do_ipw_close(struct ipw_tty *tty)
55851 {
55852 - tty->port.count--;
55853 -
55854 - if (tty->port.count == 0) {
55855 + if (atomic_dec_return(&tty->port.count) == 0) {
55856 struct tty_struct *linux_tty = tty->port.tty;
55857
55858 if (linux_tty != NULL) {
55859 @@ -135,7 +134,7 @@ static void ipw_hangup(struct tty_struct *linux_tty)
55860 return;
55861
55862 mutex_lock(&tty->ipw_tty_mutex);
55863 - if (tty->port.count == 0) {
55864 + if (atomic_read(&tty->port.count) == 0) {
55865 mutex_unlock(&tty->ipw_tty_mutex);
55866 return;
55867 }
55868 @@ -158,7 +157,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
55869
55870 mutex_lock(&tty->ipw_tty_mutex);
55871
55872 - if (!tty->port.count) {
55873 + if (!atomic_read(&tty->port.count)) {
55874 mutex_unlock(&tty->ipw_tty_mutex);
55875 return;
55876 }
55877 @@ -197,7 +196,7 @@ static int ipw_write(struct tty_struct *linux_tty,
55878 return -ENODEV;
55879
55880 mutex_lock(&tty->ipw_tty_mutex);
55881 - if (!tty->port.count) {
55882 + if (!atomic_read(&tty->port.count)) {
55883 mutex_unlock(&tty->ipw_tty_mutex);
55884 return -EINVAL;
55885 }
55886 @@ -237,7 +236,7 @@ static int ipw_write_room(struct tty_struct *linux_tty)
55887 if (!tty)
55888 return -ENODEV;
55889
55890 - if (!tty->port.count)
55891 + if (!atomic_read(&tty->port.count))
55892 return -EINVAL;
55893
55894 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued;
55895 @@ -279,7 +278,7 @@ static int ipw_chars_in_buffer(struct tty_struct *linux_tty)
55896 if (!tty)
55897 return 0;
55898
55899 - if (!tty->port.count)
55900 + if (!atomic_read(&tty->port.count))
55901 return 0;
55902
55903 return tty->tx_bytes_queued;
55904 @@ -360,7 +359,7 @@ static int ipw_tiocmget(struct tty_struct *linux_tty)
55905 if (!tty)
55906 return -ENODEV;
55907
55908 - if (!tty->port.count)
55909 + if (!atomic_read(&tty->port.count))
55910 return -EINVAL;
55911
55912 return get_control_lines(tty);
55913 @@ -376,7 +375,7 @@ ipw_tiocmset(struct tty_struct *linux_tty,
55914 if (!tty)
55915 return -ENODEV;
55916
55917 - if (!tty->port.count)
55918 + if (!atomic_read(&tty->port.count))
55919 return -EINVAL;
55920
55921 return set_control_lines(tty, set, clear);
55922 @@ -390,7 +389,7 @@ static int ipw_ioctl(struct tty_struct *linux_tty,
55923 if (!tty)
55924 return -ENODEV;
55925
55926 - if (!tty->port.count)
55927 + if (!atomic_read(&tty->port.count))
55928 return -EINVAL;
55929
55930 /* FIXME: Exactly how is the tty object locked here .. */
55931 @@ -546,7 +545,7 @@ void ipwireless_tty_free(struct ipw_tty *tty)
55932 * are gone */
55933 mutex_lock(&ttyj->ipw_tty_mutex);
55934 }
55935 - while (ttyj->port.count)
55936 + while (atomic_read(&ttyj->port.count))
55937 do_ipw_close(ttyj);
55938 ipwireless_disassociate_network_ttys(network,
55939 ttyj->channel_idx);
55940 diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
55941 index 14c54e0..1efd4f2 100644
55942 --- a/drivers/tty/moxa.c
55943 +++ b/drivers/tty/moxa.c
55944 @@ -1189,7 +1189,7 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
55945 }
55946
55947 ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
55948 - ch->port.count++;
55949 + atomic_inc(&ch->port.count);
55950 tty->driver_data = ch;
55951 tty_port_tty_set(&ch->port, tty);
55952 mutex_lock(&ch->port.mutex);
55953 diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
55954 index 382d3fc..b16d625 100644
55955 --- a/drivers/tty/n_gsm.c
55956 +++ b/drivers/tty/n_gsm.c
55957 @@ -1644,7 +1644,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
55958 spin_lock_init(&dlci->lock);
55959 mutex_init(&dlci->mutex);
55960 dlci->fifo = &dlci->_fifo;
55961 - if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL) < 0) {
55962 + if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL)) {
55963 kfree(dlci);
55964 return NULL;
55965 }
55966 @@ -2957,7 +2957,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
55967 struct gsm_dlci *dlci = tty->driver_data;
55968 struct tty_port *port = &dlci->port;
55969
55970 - port->count++;
55971 + atomic_inc(&port->count);
55972 tty_port_tty_set(port, tty);
55973
55974 dlci->modem_rx = 0;
55975 diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
55976 index ee8bfac..9e4ed6f 100644
55977 --- a/drivers/tty/n_tty.c
55978 +++ b/drivers/tty/n_tty.c
55979 @@ -116,7 +116,7 @@ struct n_tty_data {
55980 int minimum_to_wake;
55981
55982 /* consumer-published */
55983 - size_t read_tail;
55984 + size_t read_tail __intentional_overflow(-1);
55985 size_t line_start;
55986
55987 /* protected by output lock */
55988 @@ -2579,6 +2579,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops)
55989 {
55990 *ops = tty_ldisc_N_TTY;
55991 ops->owner = NULL;
55992 - ops->refcount = ops->flags = 0;
55993 + atomic_set(&ops->refcount, 0);
55994 + ops->flags = 0;
55995 }
55996 EXPORT_SYMBOL_GPL(n_tty_inherit_ops);
55997 diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
55998 index 4d5e840..a2340a6 100644
55999 --- a/drivers/tty/pty.c
56000 +++ b/drivers/tty/pty.c
56001 @@ -849,8 +849,10 @@ static void __init unix98_pty_init(void)
56002 panic("Couldn't register Unix98 pts driver");
56003
56004 /* Now create the /dev/ptmx special device */
56005 + pax_open_kernel();
56006 tty_default_fops(&ptmx_fops);
56007 - ptmx_fops.open = ptmx_open;
56008 + *(void **)&ptmx_fops.open = ptmx_open;
56009 + pax_close_kernel();
56010
56011 cdev_init(&ptmx_cdev, &ptmx_fops);
56012 if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
56013 diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
56014 index c8dd8dc..dca6cfd 100644
56015 --- a/drivers/tty/rocket.c
56016 +++ b/drivers/tty/rocket.c
56017 @@ -914,7 +914,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
56018 tty->driver_data = info;
56019 tty_port_tty_set(port, tty);
56020
56021 - if (port->count++ == 0) {
56022 + if (atomic_inc_return(&port->count) == 1) {
56023 atomic_inc(&rp_num_ports_open);
56024
56025 #ifdef ROCKET_DEBUG_OPEN
56026 @@ -923,7 +923,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
56027 #endif
56028 }
56029 #ifdef ROCKET_DEBUG_OPEN
56030 - printk(KERN_INFO "rp_open ttyR%d, count=%d\n", info->line, info->port.count);
56031 + printk(KERN_INFO "rp_open ttyR%d, count=%d\n", info->line, atomic-read(&info->port.count));
56032 #endif
56033
56034 /*
56035 @@ -1515,7 +1515,7 @@ static void rp_hangup(struct tty_struct *tty)
56036 spin_unlock_irqrestore(&info->port.lock, flags);
56037 return;
56038 }
56039 - if (info->port.count)
56040 + if (atomic_read(&info->port.count))
56041 atomic_dec(&rp_num_ports_open);
56042 clear_bit((info->aiop * 8) + info->chan, (void *) &xmit_flags[info->board]);
56043 spin_unlock_irqrestore(&info->port.lock, flags);
56044 diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
56045 index 37fff12..1a88ae1 100644
56046 --- a/drivers/tty/serial/8250/8250_core.c
56047 +++ b/drivers/tty/serial/8250/8250_core.c
56048 @@ -3229,9 +3229,9 @@ static void univ8250_release_port(struct uart_port *port)
56049
56050 static void univ8250_rsa_support(struct uart_ops *ops)
56051 {
56052 - ops->config_port = univ8250_config_port;
56053 - ops->request_port = univ8250_request_port;
56054 - ops->release_port = univ8250_release_port;
56055 + *(void **)&ops->config_port = univ8250_config_port;
56056 + *(void **)&ops->request_port = univ8250_request_port;
56057 + *(void **)&ops->release_port = univ8250_release_port;
56058 }
56059
56060 #else
56061 @@ -3274,8 +3274,10 @@ static void __init serial8250_isa_init_ports(void)
56062 }
56063
56064 /* chain base port ops to support Remote Supervisor Adapter */
56065 - univ8250_port_ops = *base_ops;
56066 + pax_open_kernel();
56067 + memcpy((void *)&univ8250_port_ops, base_ops, sizeof univ8250_port_ops);
56068 univ8250_rsa_support(&univ8250_port_ops);
56069 + pax_close_kernel();
56070
56071 if (share_irqs)
56072 irqflag = IRQF_SHARED;
56073 diff --git a/drivers/tty/serial/ifx6x60.c b/drivers/tty/serial/ifx6x60.c
56074 index 536a33b..1b98f43 100644
56075 --- a/drivers/tty/serial/ifx6x60.c
56076 +++ b/drivers/tty/serial/ifx6x60.c
56077 @@ -649,7 +649,7 @@ static void ifx_spi_complete(void *ctx)
56078 struct ifx_spi_device *ifx_dev = ctx;
56079 int length;
56080 int actual_length;
56081 - unsigned char more;
56082 + unsigned char more = 0;
56083 unsigned char cts;
56084 int local_write_pending = 0;
56085 int queue_length;
56086 diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c
56087 index e5c42fe..f091b02 100644
56088 --- a/drivers/tty/serial/ioc4_serial.c
56089 +++ b/drivers/tty/serial/ioc4_serial.c
56090 @@ -437,7 +437,7 @@ struct ioc4_soft {
56091 } is_intr_info[MAX_IOC4_INTR_ENTS];
56092
56093 /* Number of entries active in the above array */
56094 - atomic_t is_num_intrs;
56095 + atomic_unchecked_t is_num_intrs;
56096 } is_intr_type[IOC4_NUM_INTR_TYPES];
56097
56098 /* is_ir_lock must be held while
56099 @@ -974,7 +974,7 @@ intr_connect(struct ioc4_soft *soft, int type,
56100 BUG_ON(!((type == IOC4_SIO_INTR_TYPE)
56101 || (type == IOC4_OTHER_INTR_TYPE)));
56102
56103 - i = atomic_inc_return(&soft-> is_intr_type[type].is_num_intrs) - 1;
56104 + i = atomic_inc_return_unchecked(&soft-> is_intr_type[type].is_num_intrs) - 1;
56105 BUG_ON(!(i < MAX_IOC4_INTR_ENTS || (printk("i %d\n", i), 0)));
56106
56107 /* Save off the lower level interrupt handler */
56108 @@ -1001,7 +1001,7 @@ static irqreturn_t ioc4_intr(int irq, void *arg)
56109
56110 soft = arg;
56111 for (intr_type = 0; intr_type < IOC4_NUM_INTR_TYPES; intr_type++) {
56112 - num_intrs = (int)atomic_read(
56113 + num_intrs = (int)atomic_read_unchecked(
56114 &soft->is_intr_type[intr_type].is_num_intrs);
56115
56116 this_mir = this_ir = pending_intrs(soft, intr_type);
56117 diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c
56118 index 117df15..2f7dfcf 100644
56119 --- a/drivers/tty/serial/kgdb_nmi.c
56120 +++ b/drivers/tty/serial/kgdb_nmi.c
56121 @@ -53,7 +53,9 @@ static int kgdb_nmi_console_setup(struct console *co, char *options)
56122 * I/O utilities that messages sent to the console will automatically
56123 * be displayed on the dbg_io.
56124 */
56125 - dbg_io_ops->is_console = true;
56126 + pax_open_kernel();
56127 + *(int *)&dbg_io_ops->is_console = true;
56128 + pax_close_kernel();
56129
56130 return 0;
56131 }
56132 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
56133 index a260cde..6b2b5ce 100644
56134 --- a/drivers/tty/serial/kgdboc.c
56135 +++ b/drivers/tty/serial/kgdboc.c
56136 @@ -24,8 +24,9 @@
56137 #define MAX_CONFIG_LEN 40
56138
56139 static struct kgdb_io kgdboc_io_ops;
56140 +static struct kgdb_io kgdboc_io_ops_console;
56141
56142 -/* -1 = init not run yet, 0 = unconfigured, 1 = configured. */
56143 +/* -1 = init not run yet, 0 = unconfigured, 1/2 = configured. */
56144 static int configured = -1;
56145
56146 static char config[MAX_CONFIG_LEN];
56147 @@ -151,6 +152,8 @@ static void cleanup_kgdboc(void)
56148 kgdboc_unregister_kbd();
56149 if (configured == 1)
56150 kgdb_unregister_io_module(&kgdboc_io_ops);
56151 + else if (configured == 2)
56152 + kgdb_unregister_io_module(&kgdboc_io_ops_console);
56153 }
56154
56155 static int configure_kgdboc(void)
56156 @@ -160,13 +163,13 @@ static int configure_kgdboc(void)
56157 int err;
56158 char *cptr = config;
56159 struct console *cons;
56160 + int is_console = 0;
56161
56162 err = kgdboc_option_setup(config);
56163 if (err || !strlen(config) || isspace(config[0]))
56164 goto noconfig;
56165
56166 err = -ENODEV;
56167 - kgdboc_io_ops.is_console = 0;
56168 kgdb_tty_driver = NULL;
56169
56170 kgdboc_use_kms = 0;
56171 @@ -187,7 +190,7 @@ static int configure_kgdboc(void)
56172 int idx;
56173 if (cons->device && cons->device(cons, &idx) == p &&
56174 idx == tty_line) {
56175 - kgdboc_io_ops.is_console = 1;
56176 + is_console = 1;
56177 break;
56178 }
56179 cons = cons->next;
56180 @@ -197,7 +200,13 @@ static int configure_kgdboc(void)
56181 kgdb_tty_line = tty_line;
56182
56183 do_register:
56184 - err = kgdb_register_io_module(&kgdboc_io_ops);
56185 + if (is_console) {
56186 + err = kgdb_register_io_module(&kgdboc_io_ops_console);
56187 + configured = 2;
56188 + } else {
56189 + err = kgdb_register_io_module(&kgdboc_io_ops);
56190 + configured = 1;
56191 + }
56192 if (err)
56193 goto noconfig;
56194
56195 @@ -205,8 +214,6 @@ do_register:
56196 if (err)
56197 goto nmi_con_failed;
56198
56199 - configured = 1;
56200 -
56201 return 0;
56202
56203 nmi_con_failed:
56204 @@ -223,7 +230,7 @@ noconfig:
56205 static int __init init_kgdboc(void)
56206 {
56207 /* Already configured? */
56208 - if (configured == 1)
56209 + if (configured >= 1)
56210 return 0;
56211
56212 return configure_kgdboc();
56213 @@ -272,7 +279,7 @@ static int param_set_kgdboc_var(const char *kmessage, struct kernel_param *kp)
56214 if (config[len - 1] == '\n')
56215 config[len - 1] = '\0';
56216
56217 - if (configured == 1)
56218 + if (configured >= 1)
56219 cleanup_kgdboc();
56220
56221 /* Go and configure with the new params. */
56222 @@ -312,6 +319,15 @@ static struct kgdb_io kgdboc_io_ops = {
56223 .post_exception = kgdboc_post_exp_handler,
56224 };
56225
56226 +static struct kgdb_io kgdboc_io_ops_console = {
56227 + .name = "kgdboc",
56228 + .read_char = kgdboc_get_char,
56229 + .write_char = kgdboc_put_char,
56230 + .pre_exception = kgdboc_pre_exp_handler,
56231 + .post_exception = kgdboc_post_exp_handler,
56232 + .is_console = 1
56233 +};
56234 +
56235 #ifdef CONFIG_KGDB_SERIAL_CONSOLE
56236 /* This is only available if kgdboc is a built in for early debugging */
56237 static int __init kgdboc_early_init(char *opt)
56238 diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
56239 index b73889c..9f74f0a 100644
56240 --- a/drivers/tty/serial/msm_serial.c
56241 +++ b/drivers/tty/serial/msm_serial.c
56242 @@ -1012,7 +1012,7 @@ static struct uart_driver msm_uart_driver = {
56243 .cons = MSM_CONSOLE,
56244 };
56245
56246 -static atomic_t msm_uart_next_id = ATOMIC_INIT(0);
56247 +static atomic_unchecked_t msm_uart_next_id = ATOMIC_INIT(0);
56248
56249 static const struct of_device_id msm_uartdm_table[] = {
56250 { .compatible = "qcom,msm-uartdm-v1.1", .data = (void *)UARTDM_1P1 },
56251 @@ -1036,7 +1036,7 @@ static int msm_serial_probe(struct platform_device *pdev)
56252 line = pdev->id;
56253
56254 if (line < 0)
56255 - line = atomic_inc_return(&msm_uart_next_id) - 1;
56256 + line = atomic_inc_return_unchecked(&msm_uart_next_id) - 1;
56257
56258 if (unlikely(line < 0 || line >= UART_NR))
56259 return -ENXIO;
56260 diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
56261 index 5916311..1e32415 100644
56262 --- a/drivers/tty/serial/samsung.c
56263 +++ b/drivers/tty/serial/samsung.c
56264 @@ -995,11 +995,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
56265 ourport->tx_in_progress = 0;
56266 }
56267
56268 +static int s3c64xx_serial_startup(struct uart_port *port);
56269 static int s3c24xx_serial_startup(struct uart_port *port)
56270 {
56271 struct s3c24xx_uart_port *ourport = to_ourport(port);
56272 int ret;
56273
56274 + /* Startup sequence is different for s3c64xx and higher SoC's */
56275 + if (s3c24xx_serial_has_interrupt_mask(port))
56276 + return s3c64xx_serial_startup(port);
56277 +
56278 dbg("s3c24xx_serial_startup: port=%p (%08llx,%p)\n",
56279 port, (unsigned long long)port->mapbase, port->membase);
56280
56281 @@ -1706,10 +1711,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
56282 /* setup info for port */
56283 port->dev = &platdev->dev;
56284
56285 - /* Startup sequence is different for s3c64xx and higher SoC's */
56286 - if (s3c24xx_serial_has_interrupt_mask(port))
56287 - s3c24xx_serial_ops.startup = s3c64xx_serial_startup;
56288 -
56289 port->uartclk = 1;
56290
56291 if (cfg->uart_flags & UPF_CONS_FLOW) {
56292 diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
56293 index f368520..c7a703a 100644
56294 --- a/drivers/tty/serial/serial_core.c
56295 +++ b/drivers/tty/serial/serial_core.c
56296 @@ -1385,7 +1385,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
56297 state = drv->state + tty->index;
56298 port = &state->port;
56299 spin_lock_irq(&port->lock);
56300 - --port->count;
56301 + atomic_dec(&port->count);
56302 spin_unlock_irq(&port->lock);
56303 return;
56304 }
56305 @@ -1395,7 +1395,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
56306
56307 pr_debug("uart_close(%d) called\n", uport ? uport->line : -1);
56308
56309 - if (!port->count || tty_port_close_start(port, tty, filp) == 0)
56310 + if (!atomic_read(&port->count) || tty_port_close_start(port, tty, filp) == 0)
56311 return;
56312
56313 /*
56314 @@ -1520,7 +1520,7 @@ static void uart_hangup(struct tty_struct *tty)
56315 uart_flush_buffer(tty);
56316 uart_shutdown(tty, state);
56317 spin_lock_irqsave(&port->lock, flags);
56318 - port->count = 0;
56319 + atomic_set(&port->count, 0);
56320 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags);
56321 spin_unlock_irqrestore(&port->lock, flags);
56322 tty_port_tty_set(port, NULL);
56323 @@ -1607,7 +1607,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
56324 pr_debug("uart_open(%d) called\n", line);
56325
56326 spin_lock_irq(&port->lock);
56327 - ++port->count;
56328 + atomic_inc(&port->count);
56329 spin_unlock_irq(&port->lock);
56330
56331 /*
56332 diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
56333 index b1c6bd3..5f038e2 100644
56334 --- a/drivers/tty/serial/uartlite.c
56335 +++ b/drivers/tty/serial/uartlite.c
56336 @@ -341,13 +341,13 @@ static int ulite_request_port(struct uart_port *port)
56337 return -EBUSY;
56338 }
56339
56340 - port->private_data = &uartlite_be;
56341 + port->private_data = (void *)&uartlite_be;
56342 ret = uart_in32(ULITE_CONTROL, port);
56343 uart_out32(ULITE_CONTROL_RST_TX, ULITE_CONTROL, port);
56344 ret = uart_in32(ULITE_STATUS, port);
56345 /* Endianess detection */
56346 if ((ret & ULITE_STATUS_TXEMPTY) != ULITE_STATUS_TXEMPTY)
56347 - port->private_data = &uartlite_le;
56348 + port->private_data = (void *)&uartlite_le;
56349
56350 return 0;
56351 }
56352 diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
56353 index 2fac712..fcd5268 100644
56354 --- a/drivers/tty/synclink.c
56355 +++ b/drivers/tty/synclink.c
56356 @@ -3090,7 +3090,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp)
56357
56358 if (debug_level >= DEBUG_LEVEL_INFO)
56359 printk("%s(%d):mgsl_close(%s) entry, count=%d\n",
56360 - __FILE__,__LINE__, info->device_name, info->port.count);
56361 + __FILE__,__LINE__, info->device_name, atomic_read(&info->port.count));
56362
56363 if (tty_port_close_start(&info->port, tty, filp) == 0)
56364 goto cleanup;
56365 @@ -3108,7 +3108,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp)
56366 cleanup:
56367 if (debug_level >= DEBUG_LEVEL_INFO)
56368 printk("%s(%d):mgsl_close(%s) exit, count=%d\n", __FILE__,__LINE__,
56369 - tty->driver->name, info->port.count);
56370 + tty->driver->name, atomic_read(&info->port.count));
56371
56372 } /* end of mgsl_close() */
56373
56374 @@ -3207,8 +3207,8 @@ static void mgsl_hangup(struct tty_struct *tty)
56375
56376 mgsl_flush_buffer(tty);
56377 shutdown(info);
56378 -
56379 - info->port.count = 0;
56380 +
56381 + atomic_set(&info->port.count, 0);
56382 info->port.flags &= ~ASYNC_NORMAL_ACTIVE;
56383 info->port.tty = NULL;
56384
56385 @@ -3296,10 +3296,10 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
56386
56387 if (debug_level >= DEBUG_LEVEL_INFO)
56388 printk("%s(%d):block_til_ready before block on %s count=%d\n",
56389 - __FILE__,__LINE__, tty->driver->name, port->count );
56390 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56391
56392 spin_lock_irqsave(&info->irq_spinlock, flags);
56393 - port->count--;
56394 + atomic_dec(&port->count);
56395 spin_unlock_irqrestore(&info->irq_spinlock, flags);
56396 port->blocked_open++;
56397
56398 @@ -3327,7 +3327,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
56399
56400 if (debug_level >= DEBUG_LEVEL_INFO)
56401 printk("%s(%d):block_til_ready blocking on %s count=%d\n",
56402 - __FILE__,__LINE__, tty->driver->name, port->count );
56403 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56404
56405 tty_unlock(tty);
56406 schedule();
56407 @@ -3339,12 +3339,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
56408
56409 /* FIXME: Racy on hangup during close wait */
56410 if (!tty_hung_up_p(filp))
56411 - port->count++;
56412 + atomic_inc(&port->count);
56413 port->blocked_open--;
56414
56415 if (debug_level >= DEBUG_LEVEL_INFO)
56416 printk("%s(%d):block_til_ready after blocking on %s count=%d\n",
56417 - __FILE__,__LINE__, tty->driver->name, port->count );
56418 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56419
56420 if (!retval)
56421 port->flags |= ASYNC_NORMAL_ACTIVE;
56422 @@ -3396,7 +3396,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
56423
56424 if (debug_level >= DEBUG_LEVEL_INFO)
56425 printk("%s(%d):mgsl_open(%s), old ref count = %d\n",
56426 - __FILE__,__LINE__,tty->driver->name, info->port.count);
56427 + __FILE__,__LINE__,tty->driver->name, atomic_read(&info->port.count));
56428
56429 /* If port is closing, signal caller to try again */
56430 if (info->port.flags & ASYNC_CLOSING){
56431 @@ -3415,10 +3415,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
56432 spin_unlock_irqrestore(&info->netlock, flags);
56433 goto cleanup;
56434 }
56435 - info->port.count++;
56436 + atomic_inc(&info->port.count);
56437 spin_unlock_irqrestore(&info->netlock, flags);
56438
56439 - if (info->port.count == 1) {
56440 + if (atomic_read(&info->port.count) == 1) {
56441 /* 1st open on this device, init hardware */
56442 retval = startup(info);
56443 if (retval < 0)
56444 @@ -3442,8 +3442,8 @@ cleanup:
56445 if (retval) {
56446 if (tty->count == 1)
56447 info->port.tty = NULL; /* tty layer will release tty struct */
56448 - if(info->port.count)
56449 - info->port.count--;
56450 + if (atomic_read(&info->port.count))
56451 + atomic_dec(&info->port.count);
56452 }
56453
56454 return retval;
56455 @@ -7662,7 +7662,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
56456 unsigned short new_crctype;
56457
56458 /* return error if TTY interface open */
56459 - if (info->port.count)
56460 + if (atomic_read(&info->port.count))
56461 return -EBUSY;
56462
56463 switch (encoding)
56464 @@ -7758,7 +7758,7 @@ static int hdlcdev_open(struct net_device *dev)
56465
56466 /* arbitrate between network and tty opens */
56467 spin_lock_irqsave(&info->netlock, flags);
56468 - if (info->port.count != 0 || info->netcount != 0) {
56469 + if (atomic_read(&info->port.count) != 0 || info->netcount != 0) {
56470 printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name);
56471 spin_unlock_irqrestore(&info->netlock, flags);
56472 return -EBUSY;
56473 @@ -7844,7 +7844,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
56474 printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name);
56475
56476 /* return error if TTY interface open */
56477 - if (info->port.count)
56478 + if (atomic_read(&info->port.count))
56479 return -EBUSY;
56480
56481 if (cmd != SIOCWANDEV)
56482 diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
56483 index 0ea8eee..b3f1b8f 100644
56484 --- a/drivers/tty/synclink_gt.c
56485 +++ b/drivers/tty/synclink_gt.c
56486 @@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp)
56487 tty->driver_data = info;
56488 info->port.tty = tty;
56489
56490 - DBGINFO(("%s open, old ref count = %d\n", info->device_name, info->port.count));
56491 + DBGINFO(("%s open, old ref count = %d\n", info->device_name, atomic_read(&info->port.count)));
56492
56493 /* If port is closing, signal caller to try again */
56494 if (info->port.flags & ASYNC_CLOSING){
56495 @@ -691,10 +691,10 @@ static int open(struct tty_struct *tty, struct file *filp)
56496 mutex_unlock(&info->port.mutex);
56497 goto cleanup;
56498 }
56499 - info->port.count++;
56500 + atomic_inc(&info->port.count);
56501 spin_unlock_irqrestore(&info->netlock, flags);
56502
56503 - if (info->port.count == 1) {
56504 + if (atomic_read(&info->port.count) == 1) {
56505 /* 1st open on this device, init hardware */
56506 retval = startup(info);
56507 if (retval < 0) {
56508 @@ -715,8 +715,8 @@ cleanup:
56509 if (retval) {
56510 if (tty->count == 1)
56511 info->port.tty = NULL; /* tty layer will release tty struct */
56512 - if(info->port.count)
56513 - info->port.count--;
56514 + if(atomic_read(&info->port.count))
56515 + atomic_dec(&info->port.count);
56516 }
56517
56518 DBGINFO(("%s open rc=%d\n", info->device_name, retval));
56519 @@ -729,7 +729,7 @@ static void close(struct tty_struct *tty, struct file *filp)
56520
56521 if (sanity_check(info, tty->name, "close"))
56522 return;
56523 - DBGINFO(("%s close entry, count=%d\n", info->device_name, info->port.count));
56524 + DBGINFO(("%s close entry, count=%d\n", info->device_name, atomic_read(&info->port.count)));
56525
56526 if (tty_port_close_start(&info->port, tty, filp) == 0)
56527 goto cleanup;
56528 @@ -746,7 +746,7 @@ static void close(struct tty_struct *tty, struct file *filp)
56529 tty_port_close_end(&info->port, tty);
56530 info->port.tty = NULL;
56531 cleanup:
56532 - DBGINFO(("%s close exit, count=%d\n", tty->driver->name, info->port.count));
56533 + DBGINFO(("%s close exit, count=%d\n", tty->driver->name, atomic_read(&info->port.count)));
56534 }
56535
56536 static void hangup(struct tty_struct *tty)
56537 @@ -764,7 +764,7 @@ static void hangup(struct tty_struct *tty)
56538 shutdown(info);
56539
56540 spin_lock_irqsave(&info->port.lock, flags);
56541 - info->port.count = 0;
56542 + atomic_set(&info->port.count, 0);
56543 info->port.flags &= ~ASYNC_NORMAL_ACTIVE;
56544 info->port.tty = NULL;
56545 spin_unlock_irqrestore(&info->port.lock, flags);
56546 @@ -1449,7 +1449,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
56547 unsigned short new_crctype;
56548
56549 /* return error if TTY interface open */
56550 - if (info->port.count)
56551 + if (atomic_read(&info->port.count))
56552 return -EBUSY;
56553
56554 DBGINFO(("%s hdlcdev_attach\n", info->device_name));
56555 @@ -1545,7 +1545,7 @@ static int hdlcdev_open(struct net_device *dev)
56556
56557 /* arbitrate between network and tty opens */
56558 spin_lock_irqsave(&info->netlock, flags);
56559 - if (info->port.count != 0 || info->netcount != 0) {
56560 + if (atomic_read(&info->port.count) != 0 || info->netcount != 0) {
56561 DBGINFO(("%s hdlc_open busy\n", dev->name));
56562 spin_unlock_irqrestore(&info->netlock, flags);
56563 return -EBUSY;
56564 @@ -1630,7 +1630,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
56565 DBGINFO(("%s hdlcdev_ioctl\n", dev->name));
56566
56567 /* return error if TTY interface open */
56568 - if (info->port.count)
56569 + if (atomic_read(&info->port.count))
56570 return -EBUSY;
56571
56572 if (cmd != SIOCWANDEV)
56573 @@ -2417,7 +2417,7 @@ static irqreturn_t slgt_interrupt(int dummy, void *dev_id)
56574 if (port == NULL)
56575 continue;
56576 spin_lock(&port->lock);
56577 - if ((port->port.count || port->netcount) &&
56578 + if ((atomic_read(&port->port.count) || port->netcount) &&
56579 port->pending_bh && !port->bh_running &&
56580 !port->bh_requested) {
56581 DBGISR(("%s bh queued\n", port->device_name));
56582 @@ -3303,7 +3303,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
56583 add_wait_queue(&port->open_wait, &wait);
56584
56585 spin_lock_irqsave(&info->lock, flags);
56586 - port->count--;
56587 + atomic_dec(&port->count);
56588 spin_unlock_irqrestore(&info->lock, flags);
56589 port->blocked_open++;
56590
56591 @@ -3339,7 +3339,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
56592 remove_wait_queue(&port->open_wait, &wait);
56593
56594 if (!tty_hung_up_p(filp))
56595 - port->count++;
56596 + atomic_inc(&port->count);
56597 port->blocked_open--;
56598
56599 if (!retval)
56600 diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
56601 index 08633a8..3d56e14 100644
56602 --- a/drivers/tty/synclinkmp.c
56603 +++ b/drivers/tty/synclinkmp.c
56604 @@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp)
56605
56606 if (debug_level >= DEBUG_LEVEL_INFO)
56607 printk("%s(%d):%s open(), old ref count = %d\n",
56608 - __FILE__,__LINE__,tty->driver->name, info->port.count);
56609 + __FILE__,__LINE__,tty->driver->name, atomic_read(&info->port.count));
56610
56611 /* If port is closing, signal caller to try again */
56612 if (info->port.flags & ASYNC_CLOSING){
56613 @@ -769,10 +769,10 @@ static int open(struct tty_struct *tty, struct file *filp)
56614 spin_unlock_irqrestore(&info->netlock, flags);
56615 goto cleanup;
56616 }
56617 - info->port.count++;
56618 + atomic_inc(&info->port.count);
56619 spin_unlock_irqrestore(&info->netlock, flags);
56620
56621 - if (info->port.count == 1) {
56622 + if (atomic_read(&info->port.count) == 1) {
56623 /* 1st open on this device, init hardware */
56624 retval = startup(info);
56625 if (retval < 0)
56626 @@ -796,8 +796,8 @@ cleanup:
56627 if (retval) {
56628 if (tty->count == 1)
56629 info->port.tty = NULL; /* tty layer will release tty struct */
56630 - if(info->port.count)
56631 - info->port.count--;
56632 + if(atomic_read(&info->port.count))
56633 + atomic_dec(&info->port.count);
56634 }
56635
56636 return retval;
56637 @@ -815,7 +815,7 @@ static void close(struct tty_struct *tty, struct file *filp)
56638
56639 if (debug_level >= DEBUG_LEVEL_INFO)
56640 printk("%s(%d):%s close() entry, count=%d\n",
56641 - __FILE__,__LINE__, info->device_name, info->port.count);
56642 + __FILE__,__LINE__, info->device_name, atomic_read(&info->port.count));
56643
56644 if (tty_port_close_start(&info->port, tty, filp) == 0)
56645 goto cleanup;
56646 @@ -834,7 +834,7 @@ static void close(struct tty_struct *tty, struct file *filp)
56647 cleanup:
56648 if (debug_level >= DEBUG_LEVEL_INFO)
56649 printk("%s(%d):%s close() exit, count=%d\n", __FILE__,__LINE__,
56650 - tty->driver->name, info->port.count);
56651 + tty->driver->name, atomic_read(&info->port.count));
56652 }
56653
56654 /* Called by tty_hangup() when a hangup is signaled.
56655 @@ -857,7 +857,7 @@ static void hangup(struct tty_struct *tty)
56656 shutdown(info);
56657
56658 spin_lock_irqsave(&info->port.lock, flags);
56659 - info->port.count = 0;
56660 + atomic_set(&info->port.count, 0);
56661 info->port.flags &= ~ASYNC_NORMAL_ACTIVE;
56662 info->port.tty = NULL;
56663 spin_unlock_irqrestore(&info->port.lock, flags);
56664 @@ -1565,7 +1565,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
56665 unsigned short new_crctype;
56666
56667 /* return error if TTY interface open */
56668 - if (info->port.count)
56669 + if (atomic_read(&info->port.count))
56670 return -EBUSY;
56671
56672 switch (encoding)
56673 @@ -1661,7 +1661,7 @@ static int hdlcdev_open(struct net_device *dev)
56674
56675 /* arbitrate between network and tty opens */
56676 spin_lock_irqsave(&info->netlock, flags);
56677 - if (info->port.count != 0 || info->netcount != 0) {
56678 + if (atomic_read(&info->port.count) != 0 || info->netcount != 0) {
56679 printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name);
56680 spin_unlock_irqrestore(&info->netlock, flags);
56681 return -EBUSY;
56682 @@ -1747,7 +1747,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
56683 printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name);
56684
56685 /* return error if TTY interface open */
56686 - if (info->port.count)
56687 + if (atomic_read(&info->port.count))
56688 return -EBUSY;
56689
56690 if (cmd != SIOCWANDEV)
56691 @@ -2624,7 +2624,7 @@ static irqreturn_t synclinkmp_interrupt(int dummy, void *dev_id)
56692 * do not request bottom half processing if the
56693 * device is not open in a normal mode.
56694 */
56695 - if ( port && (port->port.count || port->netcount) &&
56696 + if ( port && (atomic_read(&port->port.count) || port->netcount) &&
56697 port->pending_bh && !port->bh_running &&
56698 !port->bh_requested ) {
56699 if ( debug_level >= DEBUG_LEVEL_ISR )
56700 @@ -3321,10 +3321,10 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
56701
56702 if (debug_level >= DEBUG_LEVEL_INFO)
56703 printk("%s(%d):%s block_til_ready() before block, count=%d\n",
56704 - __FILE__,__LINE__, tty->driver->name, port->count );
56705 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56706
56707 spin_lock_irqsave(&info->lock, flags);
56708 - port->count--;
56709 + atomic_dec(&port->count);
56710 spin_unlock_irqrestore(&info->lock, flags);
56711 port->blocked_open++;
56712
56713 @@ -3352,7 +3352,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
56714
56715 if (debug_level >= DEBUG_LEVEL_INFO)
56716 printk("%s(%d):%s block_til_ready() count=%d\n",
56717 - __FILE__,__LINE__, tty->driver->name, port->count );
56718 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56719
56720 tty_unlock(tty);
56721 schedule();
56722 @@ -3362,12 +3362,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
56723 set_current_state(TASK_RUNNING);
56724 remove_wait_queue(&port->open_wait, &wait);
56725 if (!tty_hung_up_p(filp))
56726 - port->count++;
56727 + atomic_inc(&port->count);
56728 port->blocked_open--;
56729
56730 if (debug_level >= DEBUG_LEVEL_INFO)
56731 printk("%s(%d):%s block_til_ready() after, count=%d\n",
56732 - __FILE__,__LINE__, tty->driver->name, port->count );
56733 + __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
56734
56735 if (!retval)
56736 port->flags |= ASYNC_NORMAL_ACTIVE;
56737 diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
56738 index b5b4278..bb9c7b0 100644
56739 --- a/drivers/tty/sysrq.c
56740 +++ b/drivers/tty/sysrq.c
56741 @@ -1072,7 +1072,7 @@ EXPORT_SYMBOL(unregister_sysrq_key);
56742 static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
56743 size_t count, loff_t *ppos)
56744 {
56745 - if (count) {
56746 + if (count && capable(CAP_SYS_ADMIN)) {
56747 char c;
56748
56749 if (get_user(c, buf))
56750 diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
56751 index 57fc6ee..b83cc81 100644
56752 --- a/drivers/tty/tty_io.c
56753 +++ b/drivers/tty/tty_io.c
56754 @@ -3501,7 +3501,7 @@ EXPORT_SYMBOL(tty_devnum);
56755
56756 void tty_default_fops(struct file_operations *fops)
56757 {
56758 - *fops = tty_fops;
56759 + memcpy((void *)fops, &tty_fops, sizeof(tty_fops));
56760 }
56761
56762 /*
56763 diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
56764 index c07fb5d..942acf7 100644
56765 --- a/drivers/tty/tty_ldisc.c
56766 +++ b/drivers/tty/tty_ldisc.c
56767 @@ -70,7 +70,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
56768 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
56769 tty_ldiscs[disc] = new_ldisc;
56770 new_ldisc->num = disc;
56771 - new_ldisc->refcount = 0;
56772 + atomic_set(&new_ldisc->refcount, 0);
56773 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags);
56774
56775 return ret;
56776 @@ -98,7 +98,7 @@ int tty_unregister_ldisc(int disc)
56777 return -EINVAL;
56778
56779 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
56780 - if (tty_ldiscs[disc]->refcount)
56781 + if (atomic_read(&tty_ldiscs[disc]->refcount))
56782 ret = -EBUSY;
56783 else
56784 tty_ldiscs[disc] = NULL;
56785 @@ -119,7 +119,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
56786 if (ldops) {
56787 ret = ERR_PTR(-EAGAIN);
56788 if (try_module_get(ldops->owner)) {
56789 - ldops->refcount++;
56790 + atomic_inc(&ldops->refcount);
56791 ret = ldops;
56792 }
56793 }
56794 @@ -132,7 +132,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
56795 unsigned long flags;
56796
56797 raw_spin_lock_irqsave(&tty_ldiscs_lock, flags);
56798 - ldops->refcount--;
56799 + atomic_dec(&ldops->refcount);
56800 module_put(ldops->owner);
56801 raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags);
56802 }
56803 diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
56804 index 40b31835..94d92ae 100644
56805 --- a/drivers/tty/tty_port.c
56806 +++ b/drivers/tty/tty_port.c
56807 @@ -236,7 +236,7 @@ void tty_port_hangup(struct tty_port *port)
56808 unsigned long flags;
56809
56810 spin_lock_irqsave(&port->lock, flags);
56811 - port->count = 0;
56812 + atomic_set(&port->count, 0);
56813 port->flags &= ~ASYNC_NORMAL_ACTIVE;
56814 tty = port->tty;
56815 if (tty)
56816 @@ -398,7 +398,7 @@ int tty_port_block_til_ready(struct tty_port *port,
56817
56818 /* The port lock protects the port counts */
56819 spin_lock_irqsave(&port->lock, flags);
56820 - port->count--;
56821 + atomic_dec(&port->count);
56822 port->blocked_open++;
56823 spin_unlock_irqrestore(&port->lock, flags);
56824
56825 @@ -440,7 +440,7 @@ int tty_port_block_til_ready(struct tty_port *port,
56826 we must not mess that up further */
56827 spin_lock_irqsave(&port->lock, flags);
56828 if (!tty_hung_up_p(filp))
56829 - port->count++;
56830 + atomic_inc(&port->count);
56831 port->blocked_open--;
56832 if (retval == 0)
56833 port->flags |= ASYNC_NORMAL_ACTIVE;
56834 @@ -476,19 +476,19 @@ int tty_port_close_start(struct tty_port *port,
56835 return 0;
56836
56837 spin_lock_irqsave(&port->lock, flags);
56838 - if (tty->count == 1 && port->count != 1) {
56839 + if (tty->count == 1 && atomic_read(&port->count) != 1) {
56840 printk(KERN_WARNING
56841 "tty_port_close_start: tty->count = 1 port count = %d.\n",
56842 - port->count);
56843 - port->count = 1;
56844 + atomic_read(&port->count));
56845 + atomic_set(&port->count, 1);
56846 }
56847 - if (--port->count < 0) {
56848 + if (atomic_dec_return(&port->count) < 0) {
56849 printk(KERN_WARNING "tty_port_close_start: count = %d\n",
56850 - port->count);
56851 - port->count = 0;
56852 + atomic_read(&port->count));
56853 + atomic_set(&port->count, 0);
56854 }
56855
56856 - if (port->count) {
56857 + if (atomic_read(&port->count)) {
56858 spin_unlock_irqrestore(&port->lock, flags);
56859 return 0;
56860 }
56861 @@ -590,7 +590,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
56862 struct file *filp)
56863 {
56864 spin_lock_irq(&port->lock);
56865 - ++port->count;
56866 + atomic_inc(&port->count);
56867 spin_unlock_irq(&port->lock);
56868 tty_port_tty_set(port, tty);
56869
56870 diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
56871 index 6f0336f..5818bc1 100644
56872 --- a/drivers/tty/vt/keyboard.c
56873 +++ b/drivers/tty/vt/keyboard.c
56874 @@ -642,6 +642,16 @@ static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
56875 kbd->kbdmode == VC_OFF) &&
56876 value != KVAL(K_SAK))
56877 return; /* SAK is allowed even in raw mode */
56878 +
56879 +#if defined(CONFIG_GRKERNSEC_PROC) || defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
56880 + {
56881 + void *func = fn_handler[value];
56882 + if (func == fn_show_state || func == fn_show_ptregs ||
56883 + func == fn_show_mem)
56884 + return;
56885 + }
56886 +#endif
56887 +
56888 fn_handler[value](vc);
56889 }
56890
56891 @@ -1880,9 +1890,6 @@ int vt_do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm,
56892 if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
56893 return -EFAULT;
56894
56895 - if (!capable(CAP_SYS_TTY_CONFIG))
56896 - perm = 0;
56897 -
56898 switch (cmd) {
56899 case KDGKBENT:
56900 /* Ensure another thread doesn't free it under us */
56901 @@ -1897,6 +1904,9 @@ int vt_do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm,
56902 spin_unlock_irqrestore(&kbd_event_lock, flags);
56903 return put_user(val, &user_kbe->kb_value);
56904 case KDSKBENT:
56905 + if (!capable(CAP_SYS_TTY_CONFIG))
56906 + perm = 0;
56907 +
56908 if (!perm)
56909 return -EPERM;
56910 if (!i && v == K_NOSUCHMAP) {
56911 @@ -1987,9 +1997,6 @@ int vt_do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm)
56912 int i, j, k;
56913 int ret;
56914
56915 - if (!capable(CAP_SYS_TTY_CONFIG))
56916 - perm = 0;
56917 -
56918 kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
56919 if (!kbs) {
56920 ret = -ENOMEM;
56921 @@ -2023,6 +2030,9 @@ int vt_do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm)
56922 kfree(kbs);
56923 return ((p && *p) ? -EOVERFLOW : 0);
56924 case KDSKBSENT:
56925 + if (!capable(CAP_SYS_TTY_CONFIG))
56926 + perm = 0;
56927 +
56928 if (!perm) {
56929 ret = -EPERM;
56930 goto reterr;
56931 diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
56932 index 3257d42..b430b06 100644
56933 --- a/drivers/uio/uio.c
56934 +++ b/drivers/uio/uio.c
56935 @@ -25,6 +25,7 @@
56936 #include <linux/kobject.h>
56937 #include <linux/cdev.h>
56938 #include <linux/uio_driver.h>
56939 +#include <asm/local.h>
56940
56941 #define UIO_MAX_DEVICES (1U << MINORBITS)
56942
56943 @@ -231,7 +232,7 @@ static ssize_t event_show(struct device *dev,
56944 struct device_attribute *attr, char *buf)
56945 {
56946 struct uio_device *idev = dev_get_drvdata(dev);
56947 - return sprintf(buf, "%u\n", (unsigned int)atomic_read(&idev->event));
56948 + return sprintf(buf, "%u\n", (unsigned int)atomic_read_unchecked(&idev->event));
56949 }
56950 static DEVICE_ATTR_RO(event);
56951
56952 @@ -393,7 +394,7 @@ void uio_event_notify(struct uio_info *info)
56953 {
56954 struct uio_device *idev = info->uio_dev;
56955
56956 - atomic_inc(&idev->event);
56957 + atomic_inc_unchecked(&idev->event);
56958 wake_up_interruptible(&idev->wait);
56959 kill_fasync(&idev->async_queue, SIGIO, POLL_IN);
56960 }
56961 @@ -446,7 +447,7 @@ static int uio_open(struct inode *inode, struct file *filep)
56962 }
56963
56964 listener->dev = idev;
56965 - listener->event_count = atomic_read(&idev->event);
56966 + listener->event_count = atomic_read_unchecked(&idev->event);
56967 filep->private_data = listener;
56968
56969 if (idev->info->open) {
56970 @@ -497,7 +498,7 @@ static unsigned int uio_poll(struct file *filep, poll_table *wait)
56971 return -EIO;
56972
56973 poll_wait(filep, &idev->wait, wait);
56974 - if (listener->event_count != atomic_read(&idev->event))
56975 + if (listener->event_count != atomic_read_unchecked(&idev->event))
56976 return POLLIN | POLLRDNORM;
56977 return 0;
56978 }
56979 @@ -522,7 +523,7 @@ static ssize_t uio_read(struct file *filep, char __user *buf,
56980 do {
56981 set_current_state(TASK_INTERRUPTIBLE);
56982
56983 - event_count = atomic_read(&idev->event);
56984 + event_count = atomic_read_unchecked(&idev->event);
56985 if (event_count != listener->event_count) {
56986 if (copy_to_user(buf, &event_count, count))
56987 retval = -EFAULT;
56988 @@ -579,9 +580,13 @@ static ssize_t uio_write(struct file *filep, const char __user *buf,
56989 static int uio_find_mem_index(struct vm_area_struct *vma)
56990 {
56991 struct uio_device *idev = vma->vm_private_data;
56992 + unsigned long size;
56993
56994 if (vma->vm_pgoff < MAX_UIO_MAPS) {
56995 - if (idev->info->mem[vma->vm_pgoff].size == 0)
56996 + size = idev->info->mem[vma->vm_pgoff].size;
56997 + if (size == 0)
56998 + return -1;
56999 + if (vma->vm_end - vma->vm_start > size)
57000 return -1;
57001 return (int)vma->vm_pgoff;
57002 }
57003 @@ -813,7 +818,7 @@ int __uio_register_device(struct module *owner,
57004 idev->owner = owner;
57005 idev->info = info;
57006 init_waitqueue_head(&idev->wait);
57007 - atomic_set(&idev->event, 0);
57008 + atomic_set_unchecked(&idev->event, 0);
57009
57010 ret = uio_get_minor(idev);
57011 if (ret)
57012 diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
57013 index 813d4d3..a71934f 100644
57014 --- a/drivers/usb/atm/cxacru.c
57015 +++ b/drivers/usb/atm/cxacru.c
57016 @@ -472,7 +472,7 @@ static ssize_t cxacru_sysfs_store_adsl_config(struct device *dev,
57017 ret = sscanf(buf + pos, "%x=%x%n", &index, &value, &tmp);
57018 if (ret < 2)
57019 return -EINVAL;
57020 - if (index < 0 || index > 0x7f)
57021 + if (index > 0x7f)
57022 return -EINVAL;
57023 pos += tmp;
57024
57025 diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
57026 index db322d9..f0f4bc1 100644
57027 --- a/drivers/usb/atm/usbatm.c
57028 +++ b/drivers/usb/atm/usbatm.c
57029 @@ -331,7 +331,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
57030 if (printk_ratelimit())
57031 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
57032 __func__, vpi, vci);
57033 - atomic_inc(&vcc->stats->rx_err);
57034 + atomic_inc_unchecked(&vcc->stats->rx_err);
57035 return;
57036 }
57037
57038 @@ -358,7 +358,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
57039 if (length > ATM_MAX_AAL5_PDU) {
57040 atm_rldbg(instance, "%s: bogus length %u (vcc: 0x%p)!\n",
57041 __func__, length, vcc);
57042 - atomic_inc(&vcc->stats->rx_err);
57043 + atomic_inc_unchecked(&vcc->stats->rx_err);
57044 goto out;
57045 }
57046
57047 @@ -367,14 +367,14 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
57048 if (sarb->len < pdu_length) {
57049 atm_rldbg(instance, "%s: bogus pdu_length %u (sarb->len: %u, vcc: 0x%p)!\n",
57050 __func__, pdu_length, sarb->len, vcc);
57051 - atomic_inc(&vcc->stats->rx_err);
57052 + atomic_inc_unchecked(&vcc->stats->rx_err);
57053 goto out;
57054 }
57055
57056 if (crc32_be(~0, skb_tail_pointer(sarb) - pdu_length, pdu_length) != 0xc704dd7b) {
57057 atm_rldbg(instance, "%s: packet failed crc check (vcc: 0x%p)!\n",
57058 __func__, vcc);
57059 - atomic_inc(&vcc->stats->rx_err);
57060 + atomic_inc_unchecked(&vcc->stats->rx_err);
57061 goto out;
57062 }
57063
57064 @@ -387,7 +387,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
57065 if (printk_ratelimit())
57066 atm_err(instance, "%s: no memory for skb (length: %u)!\n",
57067 __func__, length);
57068 - atomic_inc(&vcc->stats->rx_drop);
57069 + atomic_inc_unchecked(&vcc->stats->rx_drop);
57070 goto out;
57071 }
57072
57073 @@ -415,7 +415,7 @@ static void usbatm_extract_one_cell(struct usbatm_data *instance, unsigned char
57074
57075 vcc->push(vcc, skb);
57076
57077 - atomic_inc(&vcc->stats->rx);
57078 + atomic_inc_unchecked(&vcc->stats->rx);
57079 out:
57080 skb_trim(sarb, 0);
57081 }
57082 @@ -613,7 +613,7 @@ static void usbatm_tx_process(unsigned long data)
57083 struct atm_vcc *vcc = UDSL_SKB(skb)->atm.vcc;
57084
57085 usbatm_pop(vcc, skb);
57086 - atomic_inc(&vcc->stats->tx);
57087 + atomic_inc_unchecked(&vcc->stats->tx);
57088
57089 skb = skb_dequeue(&instance->sndqueue);
57090 }
57091 @@ -757,11 +757,11 @@ static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t *pos, char *page
57092 if (!left--)
57093 return sprintf(page,
57094 "AAL5: tx %d ( %d err ), rx %d ( %d err, %d drop )\n",
57095 - atomic_read(&atm_dev->stats.aal5.tx),
57096 - atomic_read(&atm_dev->stats.aal5.tx_err),
57097 - atomic_read(&atm_dev->stats.aal5.rx),
57098 - atomic_read(&atm_dev->stats.aal5.rx_err),
57099 - atomic_read(&atm_dev->stats.aal5.rx_drop));
57100 + atomic_read_unchecked(&atm_dev->stats.aal5.tx),
57101 + atomic_read_unchecked(&atm_dev->stats.aal5.tx_err),
57102 + atomic_read_unchecked(&atm_dev->stats.aal5.rx),
57103 + atomic_read_unchecked(&atm_dev->stats.aal5.rx_err),
57104 + atomic_read_unchecked(&atm_dev->stats.aal5.rx_drop));
57105
57106 if (!left--) {
57107 if (instance->disconnected)
57108 diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
57109 index 2a3bbdf..91d72cf 100644
57110 --- a/drivers/usb/core/devices.c
57111 +++ b/drivers/usb/core/devices.c
57112 @@ -126,7 +126,7 @@ static const char format_endpt[] =
57113 * time it gets called.
57114 */
57115 static struct device_connect_event {
57116 - atomic_t count;
57117 + atomic_unchecked_t count;
57118 wait_queue_head_t wait;
57119 } device_event = {
57120 .count = ATOMIC_INIT(1),
57121 @@ -164,7 +164,7 @@ static const struct class_info clas_info[] = {
57122
57123 void usbfs_conn_disc_event(void)
57124 {
57125 - atomic_add(2, &device_event.count);
57126 + atomic_add_unchecked(2, &device_event.count);
57127 wake_up(&device_event.wait);
57128 }
57129
57130 @@ -652,7 +652,7 @@ static unsigned int usb_device_poll(struct file *file,
57131
57132 poll_wait(file, &device_event.wait, wait);
57133
57134 - event_count = atomic_read(&device_event.count);
57135 + event_count = atomic_read_unchecked(&device_event.count);
57136 if (file->f_version != event_count) {
57137 file->f_version = event_count;
57138 return POLLIN | POLLRDNORM;
57139 diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
57140 index 986abde..80e8279 100644
57141 --- a/drivers/usb/core/devio.c
57142 +++ b/drivers/usb/core/devio.c
57143 @@ -187,7 +187,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes,
57144 struct usb_dev_state *ps = file->private_data;
57145 struct usb_device *dev = ps->dev;
57146 ssize_t ret = 0;
57147 - unsigned len;
57148 + size_t len;
57149 loff_t pos;
57150 int i;
57151
57152 @@ -229,22 +229,22 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes,
57153 for (i = 0; nbytes && i < dev->descriptor.bNumConfigurations; i++) {
57154 struct usb_config_descriptor *config =
57155 (struct usb_config_descriptor *)dev->rawdescriptors[i];
57156 - unsigned int length = le16_to_cpu(config->wTotalLength);
57157 + size_t length = le16_to_cpu(config->wTotalLength);
57158
57159 if (*ppos < pos + length) {
57160
57161 /* The descriptor may claim to be longer than it
57162 * really is. Here is the actual allocated length. */
57163 - unsigned alloclen =
57164 + size_t alloclen =
57165 le16_to_cpu(dev->config[i].desc.wTotalLength);
57166
57167 - len = length - (*ppos - pos);
57168 + len = length + pos - *ppos;
57169 if (len > nbytes)
57170 len = nbytes;
57171
57172 /* Simply don't write (skip over) unallocated parts */
57173 if (alloclen > (*ppos - pos)) {
57174 - alloclen -= (*ppos - pos);
57175 + alloclen = alloclen + pos - *ppos;
57176 if (copy_to_user(buf,
57177 dev->rawdescriptors[i] + (*ppos - pos),
57178 min(len, alloclen))) {
57179 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
57180 index cbcd092..e783f87 100644
57181 --- a/drivers/usb/core/hcd.c
57182 +++ b/drivers/usb/core/hcd.c
57183 @@ -1554,7 +1554,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
57184 */
57185 usb_get_urb(urb);
57186 atomic_inc(&urb->use_count);
57187 - atomic_inc(&urb->dev->urbnum);
57188 + atomic_inc_unchecked(&urb->dev->urbnum);
57189 usbmon_urb_submit(&hcd->self, urb);
57190
57191 /* NOTE requirements on root-hub callers (usbfs and the hub
57192 @@ -1581,7 +1581,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
57193 urb->hcpriv = NULL;
57194 INIT_LIST_HEAD(&urb->urb_list);
57195 atomic_dec(&urb->use_count);
57196 - atomic_dec(&urb->dev->urbnum);
57197 + atomic_dec_unchecked(&urb->dev->urbnum);
57198 if (atomic_read(&urb->reject))
57199 wake_up(&usb_kill_urb_queue);
57200 usb_put_urb(urb);
57201 diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
57202 index 73dfa19..c22f1e43 100644
57203 --- a/drivers/usb/core/hub.c
57204 +++ b/drivers/usb/core/hub.c
57205 @@ -26,6 +26,7 @@
57206 #include <linux/mutex.h>
57207 #include <linux/random.h>
57208 #include <linux/pm_qos.h>
57209 +#include <linux/grsecurity.h>
57210
57211 #include <asm/uaccess.h>
57212 #include <asm/byteorder.h>
57213 @@ -4655,6 +4656,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
57214 goto done;
57215 return;
57216 }
57217 +
57218 + if (gr_handle_new_usb())
57219 + goto done;
57220 +
57221 if (hub_is_superspeed(hub->hdev))
57222 unit_load = 150;
57223 else
57224 diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
57225 index f368d20..0c30ac5 100644
57226 --- a/drivers/usb/core/message.c
57227 +++ b/drivers/usb/core/message.c
57228 @@ -128,7 +128,7 @@ static int usb_internal_control_msg(struct usb_device *usb_dev,
57229 * Return: If successful, the number of bytes transferred. Otherwise, a negative
57230 * error number.
57231 */
57232 -int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
57233 +int __intentional_overflow(-1) usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
57234 __u8 requesttype, __u16 value, __u16 index, void *data,
57235 __u16 size, int timeout)
57236 {
57237 @@ -180,7 +180,7 @@ EXPORT_SYMBOL_GPL(usb_control_msg);
57238 * If successful, 0. Otherwise a negative error number. The number of actual
57239 * bytes transferred will be stored in the @actual_length parameter.
57240 */
57241 -int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
57242 +int __intentional_overflow(-1) usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
57243 void *data, int len, int *actual_length, int timeout)
57244 {
57245 return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
57246 @@ -220,7 +220,7 @@ EXPORT_SYMBOL_GPL(usb_interrupt_msg);
57247 * bytes transferred will be stored in the @actual_length parameter.
57248 *
57249 */
57250 -int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
57251 +int __intentional_overflow(-1) usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
57252 void *data, int len, int *actual_length, int timeout)
57253 {
57254 struct urb *urb;
57255 diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
57256 index d269738..7340cd7 100644
57257 --- a/drivers/usb/core/sysfs.c
57258 +++ b/drivers/usb/core/sysfs.c
57259 @@ -244,7 +244,7 @@ static ssize_t urbnum_show(struct device *dev, struct device_attribute *attr,
57260 struct usb_device *udev;
57261
57262 udev = to_usb_device(dev);
57263 - return sprintf(buf, "%d\n", atomic_read(&udev->urbnum));
57264 + return sprintf(buf, "%d\n", atomic_read_unchecked(&udev->urbnum));
57265 }
57266 static DEVICE_ATTR_RO(urbnum);
57267
57268 diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
57269 index 8d5b2f4..3896940 100644
57270 --- a/drivers/usb/core/usb.c
57271 +++ b/drivers/usb/core/usb.c
57272 @@ -447,7 +447,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent,
57273 set_dev_node(&dev->dev, dev_to_node(bus->controller));
57274 dev->state = USB_STATE_ATTACHED;
57275 dev->lpm_disable_count = 1;
57276 - atomic_set(&dev->urbnum, 0);
57277 + atomic_set_unchecked(&dev->urbnum, 0);
57278
57279 INIT_LIST_HEAD(&dev->ep0.urb_list);
57280 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
57281 diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
57282 index 8cfc319..4868255 100644
57283 --- a/drivers/usb/early/ehci-dbgp.c
57284 +++ b/drivers/usb/early/ehci-dbgp.c
57285 @@ -98,7 +98,8 @@ static inline u32 dbgp_len_update(u32 x, u32 len)
57286
57287 #ifdef CONFIG_KGDB
57288 static struct kgdb_io kgdbdbgp_io_ops;
57289 -#define dbgp_kgdb_mode (dbg_io_ops == &kgdbdbgp_io_ops)
57290 +static struct kgdb_io kgdbdbgp_io_ops_console;
57291 +#define dbgp_kgdb_mode (dbg_io_ops == &kgdbdbgp_io_ops || dbg_io_ops == &kgdbdbgp_io_ops_console)
57292 #else
57293 #define dbgp_kgdb_mode (0)
57294 #endif
57295 @@ -1043,6 +1044,13 @@ static struct kgdb_io kgdbdbgp_io_ops = {
57296 .write_char = kgdbdbgp_write_char,
57297 };
57298
57299 +static struct kgdb_io kgdbdbgp_io_ops_console = {
57300 + .name = "kgdbdbgp",
57301 + .read_char = kgdbdbgp_read_char,
57302 + .write_char = kgdbdbgp_write_char,
57303 + .is_console = 1
57304 +};
57305 +
57306 static int kgdbdbgp_wait_time;
57307
57308 static int __init kgdbdbgp_parse_config(char *str)
57309 @@ -1058,8 +1066,10 @@ static int __init kgdbdbgp_parse_config(char *str)
57310 ptr++;
57311 kgdbdbgp_wait_time = simple_strtoul(ptr, &ptr, 10);
57312 }
57313 - kgdb_register_io_module(&kgdbdbgp_io_ops);
57314 - kgdbdbgp_io_ops.is_console = early_dbgp_console.index != -1;
57315 + if (early_dbgp_console.index != -1)
57316 + kgdb_register_io_module(&kgdbdbgp_io_ops_console);
57317 + else
57318 + kgdb_register_io_module(&kgdbdbgp_io_ops);
57319
57320 return 0;
57321 }
57322 diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
57323 index 7856b33..8b7fe09 100644
57324 --- a/drivers/usb/gadget/function/f_uac1.c
57325 +++ b/drivers/usb/gadget/function/f_uac1.c
57326 @@ -14,6 +14,7 @@
57327 #include <linux/module.h>
57328 #include <linux/device.h>
57329 #include <linux/atomic.h>
57330 +#include <linux/module.h>
57331
57332 #include "u_uac1.h"
57333
57334 diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c
57335 index 7ee05793..2e31e99 100644
57336 --- a/drivers/usb/gadget/function/u_serial.c
57337 +++ b/drivers/usb/gadget/function/u_serial.c
57338 @@ -732,9 +732,9 @@ static int gs_open(struct tty_struct *tty, struct file *file)
57339 spin_lock_irq(&port->port_lock);
57340
57341 /* already open? Great. */
57342 - if (port->port.count) {
57343 + if (atomic_read(&port->port.count)) {
57344 status = 0;
57345 - port->port.count++;
57346 + atomic_inc(&port->port.count);
57347
57348 /* currently opening/closing? wait ... */
57349 } else if (port->openclose) {
57350 @@ -793,7 +793,7 @@ static int gs_open(struct tty_struct *tty, struct file *file)
57351 tty->driver_data = port;
57352 port->port.tty = tty;
57353
57354 - port->port.count = 1;
57355 + atomic_set(&port->port.count, 1);
57356 port->openclose = false;
57357
57358 /* if connected, start the I/O stream */
57359 @@ -835,11 +835,11 @@ static void gs_close(struct tty_struct *tty, struct file *file)
57360
57361 spin_lock_irq(&port->port_lock);
57362
57363 - if (port->port.count != 1) {
57364 - if (port->port.count == 0)
57365 + if (atomic_read(&port->port.count) != 1) {
57366 + if (atomic_read(&port->port.count) == 0)
57367 WARN_ON(1);
57368 else
57369 - --port->port.count;
57370 + atomic_dec(&port->port.count);
57371 goto exit;
57372 }
57373
57374 @@ -849,7 +849,7 @@ static void gs_close(struct tty_struct *tty, struct file *file)
57375 * and sleep if necessary
57376 */
57377 port->openclose = true;
57378 - port->port.count = 0;
57379 + atomic_set(&port->port.count, 0);
57380
57381 gser = port->port_usb;
57382 if (gser && gser->disconnect)
57383 @@ -1065,7 +1065,7 @@ static int gs_closed(struct gs_port *port)
57384 int cond;
57385
57386 spin_lock_irq(&port->port_lock);
57387 - cond = (port->port.count == 0) && !port->openclose;
57388 + cond = (atomic_read(&port->port.count) == 0) && !port->openclose;
57389 spin_unlock_irq(&port->port_lock);
57390 return cond;
57391 }
57392 @@ -1208,7 +1208,7 @@ int gserial_connect(struct gserial *gser, u8 port_num)
57393 /* if it's already open, start I/O ... and notify the serial
57394 * protocol about open/close status (connect/disconnect).
57395 */
57396 - if (port->port.count) {
57397 + if (atomic_read(&port->port.count)) {
57398 pr_debug("gserial_connect: start ttyGS%d\n", port->port_num);
57399 gs_start_io(port);
57400 if (gser->connect)
57401 @@ -1255,7 +1255,7 @@ void gserial_disconnect(struct gserial *gser)
57402
57403 port->port_usb = NULL;
57404 gser->ioport = NULL;
57405 - if (port->port.count > 0 || port->openclose) {
57406 + if (atomic_read(&port->port.count) > 0 || port->openclose) {
57407 wake_up_interruptible(&port->drain_wait);
57408 if (port->port.tty)
57409 tty_hangup(port->port.tty);
57410 @@ -1271,7 +1271,7 @@ void gserial_disconnect(struct gserial *gser)
57411
57412 /* finally, free any unused/unusable I/O buffers */
57413 spin_lock_irqsave(&port->port_lock, flags);
57414 - if (port->port.count == 0 && !port->openclose)
57415 + if (atomic_read(&port->port.count) == 0 && !port->openclose)
57416 gs_buf_free(&port->port_write_buf);
57417 gs_free_requests(gser->out, &port->read_pool, NULL);
57418 gs_free_requests(gser->out, &port->read_queue, NULL);
57419 diff --git a/drivers/usb/gadget/function/u_uac1.c b/drivers/usb/gadget/function/u_uac1.c
57420 index c78c841..48fd281 100644
57421 --- a/drivers/usb/gadget/function/u_uac1.c
57422 +++ b/drivers/usb/gadget/function/u_uac1.c
57423 @@ -17,6 +17,7 @@
57424 #include <linux/ctype.h>
57425 #include <linux/random.h>
57426 #include <linux/syscalls.h>
57427 +#include <linux/module.h>
57428
57429 #include "u_uac1.h"
57430
57431 diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
57432 index 181112c..036bcab 100644
57433 --- a/drivers/usb/gadget/udc/dummy_hcd.c
57434 +++ b/drivers/usb/gadget/udc/dummy_hcd.c
57435 @@ -2384,7 +2384,7 @@ static int dummy_setup(struct usb_hcd *hcd)
57436 struct dummy *dum;
57437
57438 dum = *((void **)dev_get_platdata(hcd->self.controller));
57439 - hcd->self.sg_tablesize = ~0;
57440 + hcd->self.sg_tablesize = SG_ALL;
57441 if (usb_hcd_is_primary_hcd(hcd)) {
57442 dum->hs_hcd = hcd_to_dummy_hcd(hcd);
57443 dum->hs_hcd->dum = dum;
57444 diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
57445 index c63d82c..a7e8665 100644
57446 --- a/drivers/usb/host/ehci-hcd.c
57447 +++ b/drivers/usb/host/ehci-hcd.c
57448 @@ -564,7 +564,7 @@ static int ehci_init(struct usb_hcd *hcd)
57449
57450 /* Accept arbitrarily long scatter-gather lists */
57451 if (!(hcd->driver->flags & HCD_LOCAL_MEM))
57452 - hcd->self.sg_tablesize = ~0;
57453 + hcd->self.sg_tablesize = SG_ALL;
57454 return 0;
57455 }
57456
57457 diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
57458 index 22abb68..50b7b84 100644
57459 --- a/drivers/usb/host/ehci-hub.c
57460 +++ b/drivers/usb/host/ehci-hub.c
57461 @@ -773,7 +773,7 @@ static struct urb *request_single_step_set_feature_urb(
57462 urb->transfer_flags = URB_DIR_IN;
57463 usb_get_urb(urb);
57464 atomic_inc(&urb->use_count);
57465 - atomic_inc(&urb->dev->urbnum);
57466 + atomic_inc_unchecked(&urb->dev->urbnum);
57467 urb->setup_dma = dma_map_single(
57468 hcd->self.controller,
57469 urb->setup_packet,
57470 @@ -840,7 +840,7 @@ static int ehset_single_step_set_feature(struct usb_hcd *hcd, int port)
57471 urb->status = -EINPROGRESS;
57472 usb_get_urb(urb);
57473 atomic_inc(&urb->use_count);
57474 - atomic_inc(&urb->dev->urbnum);
57475 + atomic_inc_unchecked(&urb->dev->urbnum);
57476 retval = submit_single_step_set_feature(hcd, urb, 0);
57477 if (!retval && !wait_for_completion_timeout(&done,
57478 msecs_to_jiffies(2000))) {
57479 diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
57480 index 54f5332..8b8335c 100644
57481 --- a/drivers/usb/host/ehci-q.c
57482 +++ b/drivers/usb/host/ehci-q.c
57483 @@ -44,9 +44,9 @@
57484
57485 static int
57486 qtd_fill(struct ehci_hcd *ehci, struct ehci_qtd *qtd, dma_addr_t buf,
57487 - size_t len, int token, int maxpacket)
57488 + size_t len, u32 token, int maxpacket)
57489 {
57490 - int i, count;
57491 + u32 i, count;
57492 u64 addr = buf;
57493
57494 /* one buffer entry per 4K ... first might be short or unaligned */
57495 diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c
57496 index 000ed80..2701154 100644
57497 --- a/drivers/usb/host/fotg210-hcd.c
57498 +++ b/drivers/usb/host/fotg210-hcd.c
57499 @@ -5231,7 +5231,7 @@ static int hcd_fotg210_init(struct usb_hcd *hcd)
57500
57501 /* Accept arbitrarily long scatter-gather lists */
57502 if (!(hcd->driver->flags & HCD_LOCAL_MEM))
57503 - hcd->self.sg_tablesize = ~0;
57504 + hcd->self.sg_tablesize = SG_ALL;
57505 return 0;
57506 }
57507
57508 diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c
57509 index 1fd8718..c7ff47c 100644
57510 --- a/drivers/usb/host/fusbh200-hcd.c
57511 +++ b/drivers/usb/host/fusbh200-hcd.c
57512 @@ -5156,7 +5156,7 @@ static int hcd_fusbh200_init(struct usb_hcd *hcd)
57513
57514 /* Accept arbitrarily long scatter-gather lists */
57515 if (!(hcd->driver->flags & HCD_LOCAL_MEM))
57516 - hcd->self.sg_tablesize = ~0;
57517 + hcd->self.sg_tablesize = SG_ALL;
57518 return 0;
57519 }
57520
57521 diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c
57522 index 1db0626..2e9f5ea 100644
57523 --- a/drivers/usb/host/hwa-hc.c
57524 +++ b/drivers/usb/host/hwa-hc.c
57525 @@ -337,7 +337,10 @@ static int __hwahc_op_bwa_set(struct wusbhc *wusbhc, s8 stream_index,
57526 struct hwahc *hwahc = container_of(wusbhc, struct hwahc, wusbhc);
57527 struct wahc *wa = &hwahc->wa;
57528 struct device *dev = &wa->usb_iface->dev;
57529 - u8 mas_le[UWB_NUM_MAS/8];
57530 + u8 *mas_le = kmalloc(UWB_NUM_MAS/8, GFP_KERNEL);
57531 +
57532 + if (mas_le == NULL)
57533 + return -ENOMEM;
57534
57535 /* Set the stream index */
57536 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0),
57537 @@ -356,10 +359,12 @@ static int __hwahc_op_bwa_set(struct wusbhc *wusbhc, s8 stream_index,
57538 WUSB_REQ_SET_WUSB_MAS,
57539 USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
57540 0, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber,
57541 - mas_le, 32, USB_CTRL_SET_TIMEOUT);
57542 + mas_le, UWB_NUM_MAS/8, USB_CTRL_SET_TIMEOUT);
57543 if (result < 0)
57544 dev_err(dev, "Cannot set WUSB MAS allocation: %d\n", result);
57545 out:
57546 + kfree(mas_le);
57547 +
57548 return result;
57549 }
57550
57551 @@ -812,7 +817,7 @@ static int hwahc_probe(struct usb_interface *usb_iface,
57552 goto error_alloc;
57553 }
57554 usb_hcd->wireless = 1;
57555 - usb_hcd->self.sg_tablesize = ~0;
57556 + usb_hcd->self.sg_tablesize = SG_ALL;
57557 wusbhc = usb_hcd_to_wusbhc(usb_hcd);
57558 hwahc = container_of(wusbhc, struct hwahc, wusbhc);
57559 hwahc_init(hwahc);
57560 diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
57561 index 760cb57..fc7f8ad 100644
57562 --- a/drivers/usb/host/ohci-hcd.c
57563 +++ b/drivers/usb/host/ohci-hcd.c
57564 @@ -444,7 +444,7 @@ static int ohci_init (struct ohci_hcd *ohci)
57565 struct usb_hcd *hcd = ohci_to_hcd(ohci);
57566
57567 /* Accept arbitrarily long scatter-gather lists */
57568 - hcd->self.sg_tablesize = ~0;
57569 + hcd->self.sg_tablesize = SG_ALL;
57570
57571 if (distrust_firmware)
57572 ohci->flags |= OHCI_QUIRK_HUB_POWER;
57573 diff --git a/drivers/usb/host/r8a66597.h b/drivers/usb/host/r8a66597.h
57574 index 672cea3..31a730db 100644
57575 --- a/drivers/usb/host/r8a66597.h
57576 +++ b/drivers/usb/host/r8a66597.h
57577 @@ -125,7 +125,7 @@ struct r8a66597 {
57578 unsigned short interval_map;
57579 unsigned char pipe_cnt[R8A66597_MAX_NUM_PIPE];
57580 unsigned char dma_map;
57581 - unsigned int max_root_hub;
57582 + unsigned char max_root_hub;
57583
57584 struct list_head child_device;
57585 unsigned long child_connect_map[4];
57586 diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
57587 index a7de8e8..e1ef134 100644
57588 --- a/drivers/usb/host/uhci-hcd.c
57589 +++ b/drivers/usb/host/uhci-hcd.c
57590 @@ -570,7 +570,7 @@ static int uhci_start(struct usb_hcd *hcd)
57591 hcd->uses_new_polling = 1;
57592 /* Accept arbitrarily long scatter-gather lists */
57593 if (!(hcd->driver->flags & HCD_LOCAL_MEM))
57594 - hcd->self.sg_tablesize = ~0;
57595 + hcd->self.sg_tablesize = SG_ALL;
57596
57597 spin_lock_init(&uhci->lock);
57598 setup_timer(&uhci->fsbr_timer, uhci_fsbr_timeout,
57599 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
57600 index 5590eac..16d71c5 100644
57601 --- a/drivers/usb/host/xhci-pci.c
57602 +++ b/drivers/usb/host/xhci-pci.c
57603 @@ -30,7 +30,7 @@
57604
57605 #define PORT2_SSIC_CONFIG_REG2 0x883c
57606 #define PROG_DONE (1 << 30)
57607 -#define SSIC_PORT_UNUSED (1 << 31)
57608 +#define SSIC_PORT_UNUSED (1U << 31)
57609
57610 /* Device for a quirk */
57611 #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
57612 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
57613 index 526ebc0..fa8f325 100644
57614 --- a/drivers/usb/host/xhci.c
57615 +++ b/drivers/usb/host/xhci.c
57616 @@ -4834,7 +4834,7 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
57617 int retval;
57618
57619 /* Accept arbitrarily long scatter-gather lists */
57620 - hcd->self.sg_tablesize = ~0;
57621 + hcd->self.sg_tablesize = SG_ALL;
57622
57623 /* support to build packet from discontinuous buffers */
57624 hcd->self.no_sg_constraint = 1;
57625 diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c
57626 index a0a3827..d7ec10b 100644
57627 --- a/drivers/usb/misc/appledisplay.c
57628 +++ b/drivers/usb/misc/appledisplay.c
57629 @@ -84,7 +84,7 @@ struct appledisplay {
57630 struct mutex sysfslock; /* concurrent read and write */
57631 };
57632
57633 -static atomic_t count_displays = ATOMIC_INIT(0);
57634 +static atomic_unchecked_t count_displays = ATOMIC_INIT(0);
57635 static struct workqueue_struct *wq;
57636
57637 static void appledisplay_complete(struct urb *urb)
57638 @@ -288,7 +288,7 @@ static int appledisplay_probe(struct usb_interface *iface,
57639
57640 /* Register backlight device */
57641 snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
57642 - atomic_inc_return(&count_displays) - 1);
57643 + atomic_inc_return_unchecked(&count_displays) - 1);
57644 memset(&props, 0, sizeof(struct backlight_properties));
57645 props.type = BACKLIGHT_RAW;
57646 props.max_brightness = 0xff;
57647 diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c
57648 index 3806e70..55c508b 100644
57649 --- a/drivers/usb/serial/console.c
57650 +++ b/drivers/usb/serial/console.c
57651 @@ -126,7 +126,7 @@ static int usb_console_setup(struct console *co, char *options)
57652
57653 info->port = port;
57654
57655 - ++port->port.count;
57656 + atomic_inc(&port->port.count);
57657 if (!test_bit(ASYNCB_INITIALIZED, &port->port.flags)) {
57658 if (serial->type->set_termios) {
57659 /*
57660 @@ -175,7 +175,7 @@ static int usb_console_setup(struct console *co, char *options)
57661 }
57662 /* Now that any required fake tty operations are completed restore
57663 * the tty port count */
57664 - --port->port.count;
57665 + atomic_dec(&port->port.count);
57666 /* The console is special in terms of closing the device so
57667 * indicate this port is now acting as a system console. */
57668 port->port.console = 1;
57669 @@ -188,7 +188,7 @@ static int usb_console_setup(struct console *co, char *options)
57670 put_tty:
57671 tty_kref_put(tty);
57672 reset_open_count:
57673 - port->port.count = 0;
57674 + atomic_set(&port->port.count, 0);
57675 usb_autopm_put_interface(serial->interface);
57676 error_get_interface:
57677 usb_serial_put(serial);
57678 @@ -199,7 +199,7 @@ static int usb_console_setup(struct console *co, char *options)
57679 static void usb_console_write(struct console *co,
57680 const char *buf, unsigned count)
57681 {
57682 - static struct usbcons_info *info = &usbcons_info;
57683 + struct usbcons_info *info = &usbcons_info;
57684 struct usb_serial_port *port = info->port;
57685 struct usb_serial *serial;
57686 int retval = -ENODEV;
57687 diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
57688 index 43576ed..583589d 100644
57689 --- a/drivers/usb/storage/usb.c
57690 +++ b/drivers/usb/storage/usb.c
57691 @@ -912,7 +912,7 @@ static void usb_stor_scan_dwork(struct work_struct *work)
57692 clear_bit(US_FLIDX_SCAN_PENDING, &us->dflags);
57693 }
57694
57695 -static unsigned int usb_stor_sg_tablesize(struct usb_interface *intf)
57696 +static unsigned short usb_stor_sg_tablesize(struct usb_interface *intf)
57697 {
57698 struct usb_device *usb_dev = interface_to_usbdev(intf);
57699
57700 diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h
57701 index da0ad32..50b5bbe 100644
57702 --- a/drivers/usb/storage/usb.h
57703 +++ b/drivers/usb/storage/usb.h
57704 @@ -63,7 +63,7 @@ struct us_unusual_dev {
57705 __u8 useProtocol;
57706 __u8 useTransport;
57707 int (*initFunction)(struct us_data *);
57708 -};
57709 +} __do_const;
57710
57711
57712 /* Dynamic bitflag definitions (us->dflags): used in set_bit() etc. */
57713 diff --git a/drivers/usb/usbip/vhci.h b/drivers/usb/usbip/vhci.h
57714 index a863a98..d272795 100644
57715 --- a/drivers/usb/usbip/vhci.h
57716 +++ b/drivers/usb/usbip/vhci.h
57717 @@ -83,7 +83,7 @@ struct vhci_hcd {
57718 unsigned resuming:1;
57719 unsigned long re_timeout;
57720
57721 - atomic_t seqnum;
57722 + atomic_unchecked_t seqnum;
57723
57724 /*
57725 * NOTE:
57726 diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
57727 index e9ef1ec..c3a0b04 100644
57728 --- a/drivers/usb/usbip/vhci_hcd.c
57729 +++ b/drivers/usb/usbip/vhci_hcd.c
57730 @@ -440,7 +440,7 @@ static void vhci_tx_urb(struct urb *urb)
57731
57732 spin_lock(&vdev->priv_lock);
57733
57734 - priv->seqnum = atomic_inc_return(&the_controller->seqnum);
57735 + priv->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
57736 if (priv->seqnum == 0xffff)
57737 dev_info(&urb->dev->dev, "seqnum max\n");
57738
57739 @@ -685,7 +685,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
57740 return -ENOMEM;
57741 }
57742
57743 - unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
57744 + unlink->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
57745 if (unlink->seqnum == 0xffff)
57746 pr_info("seqnum max\n");
57747
57748 @@ -889,7 +889,7 @@ static int vhci_start(struct usb_hcd *hcd)
57749 vdev->rhport = rhport;
57750 }
57751
57752 - atomic_set(&vhci->seqnum, 0);
57753 + atomic_set_unchecked(&vhci->seqnum, 0);
57754 spin_lock_init(&vhci->lock);
57755
57756 hcd->power_budget = 0; /* no limit */
57757 diff --git a/drivers/usb/usbip/vhci_rx.c b/drivers/usb/usbip/vhci_rx.c
57758 index 00e4a54..d676f85 100644
57759 --- a/drivers/usb/usbip/vhci_rx.c
57760 +++ b/drivers/usb/usbip/vhci_rx.c
57761 @@ -80,7 +80,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,
57762 if (!urb) {
57763 pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
57764 pr_info("max seqnum %d\n",
57765 - atomic_read(&the_controller->seqnum));
57766 + atomic_read_unchecked(&the_controller->seqnum));
57767 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
57768 return;
57769 }
57770 diff --git a/drivers/usb/usbip/vhci_sysfs.c b/drivers/usb/usbip/vhci_sysfs.c
57771 index 211f43f..6c22ae1 100644
57772 --- a/drivers/usb/usbip/vhci_sysfs.c
57773 +++ b/drivers/usb/usbip/vhci_sysfs.c
57774 @@ -59,7 +59,7 @@ static ssize_t status_show(struct device *dev, struct device_attribute *attr,
57775 if (vdev->ud.status == VDEV_ST_USED) {
57776 out += sprintf(out, "%03u %08x ",
57777 vdev->speed, vdev->devid);
57778 - out += sprintf(out, "%16p ", vdev->ud.tcp_socket);
57779 + out += sprintf(out, "%16pK ", vdev->ud.tcp_socket);
57780 out += sprintf(out, "%s", dev_name(&vdev->udev->dev));
57781
57782 } else {
57783 diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
57784 index edc7267..9f65ce2 100644
57785 --- a/drivers/usb/wusbcore/wa-hc.h
57786 +++ b/drivers/usb/wusbcore/wa-hc.h
57787 @@ -240,7 +240,7 @@ struct wahc {
57788 spinlock_t xfer_list_lock;
57789 struct work_struct xfer_enqueue_work;
57790 struct work_struct xfer_error_work;
57791 - atomic_t xfer_id_count;
57792 + atomic_unchecked_t xfer_id_count;
57793
57794 kernel_ulong_t quirks;
57795 };
57796 @@ -305,7 +305,7 @@ static inline void wa_init(struct wahc *wa)
57797 INIT_WORK(&wa->xfer_enqueue_work, wa_urb_enqueue_run);
57798 INIT_WORK(&wa->xfer_error_work, wa_process_errored_transfers_run);
57799 wa->dto_in_use = 0;
57800 - atomic_set(&wa->xfer_id_count, 1);
57801 + atomic_set_unchecked(&wa->xfer_id_count, 1);
57802 /* init the buf in URBs */
57803 for (index = 0; index < WA_MAX_BUF_IN_URBS; ++index)
57804 usb_init_urb(&(wa->buf_in_urbs[index]));
57805 diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
57806 index 69af4fd..da390d7 100644
57807 --- a/drivers/usb/wusbcore/wa-xfer.c
57808 +++ b/drivers/usb/wusbcore/wa-xfer.c
57809 @@ -314,7 +314,7 @@ static void wa_xfer_completion(struct wa_xfer *xfer)
57810 */
57811 static void wa_xfer_id_init(struct wa_xfer *xfer)
57812 {
57813 - xfer->id = atomic_add_return(1, &xfer->wa->xfer_id_count);
57814 + xfer->id = atomic_add_return_unchecked(1, &xfer->wa->xfer_id_count);
57815 }
57816
57817 /* Return the xfer's ID. */
57818 diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
57819 index 563c510..1fcc957 100644
57820 --- a/drivers/vfio/vfio.c
57821 +++ b/drivers/vfio/vfio.c
57822 @@ -517,7 +517,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
57823 return 0;
57824
57825 /* TODO Prevent device auto probing */
57826 - WARN("Device %s added to live group %d!\n", dev_name(dev),
57827 + WARN(1, "Device %s added to live group %d!\n", dev_name(dev),
57828 iommu_group_id(group->iommu_group));
57829
57830 return 0;
57831 diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
57832 index 3bb02c6..a01ff38 100644
57833 --- a/drivers/vhost/vringh.c
57834 +++ b/drivers/vhost/vringh.c
57835 @@ -551,7 +551,7 @@ static inline void __vringh_notify_disable(struct vringh *vrh,
57836 static inline int getu16_user(const struct vringh *vrh, u16 *val, const __virtio16 *p)
57837 {
57838 __virtio16 v = 0;
57839 - int rc = get_user(v, (__force __virtio16 __user *)p);
57840 + int rc = get_user(v, (__force_user __virtio16 *)p);
57841 *val = vringh16_to_cpu(vrh, v);
57842 return rc;
57843 }
57844 @@ -559,12 +559,12 @@ static inline int getu16_user(const struct vringh *vrh, u16 *val, const __virtio
57845 static inline int putu16_user(const struct vringh *vrh, __virtio16 *p, u16 val)
57846 {
57847 __virtio16 v = cpu_to_vringh16(vrh, val);
57848 - return put_user(v, (__force __virtio16 __user *)p);
57849 + return put_user(v, (__force_user __virtio16 *)p);
57850 }
57851
57852 static inline int copydesc_user(void *dst, const void *src, size_t len)
57853 {
57854 - return copy_from_user(dst, (__force void __user *)src, len) ?
57855 + return copy_from_user(dst, (void __force_user *)src, len) ?
57856 -EFAULT : 0;
57857 }
57858
57859 @@ -572,19 +572,19 @@ static inline int putused_user(struct vring_used_elem *dst,
57860 const struct vring_used_elem *src,
57861 unsigned int num)
57862 {
57863 - return copy_to_user((__force void __user *)dst, src,
57864 + return copy_to_user((void __force_user *)dst, src,
57865 sizeof(*dst) * num) ? -EFAULT : 0;
57866 }
57867
57868 static inline int xfer_from_user(void *src, void *dst, size_t len)
57869 {
57870 - return copy_from_user(dst, (__force void __user *)src, len) ?
57871 + return copy_from_user(dst, (void __force_user *)src, len) ?
57872 -EFAULT : 0;
57873 }
57874
57875 static inline int xfer_to_user(void *dst, void *src, size_t len)
57876 {
57877 - return copy_to_user((__force void __user *)dst, src, len) ?
57878 + return copy_to_user((void __force_user *)dst, src, len) ?
57879 -EFAULT : 0;
57880 }
57881
57882 @@ -621,9 +621,9 @@ int vringh_init_user(struct vringh *vrh, u64 features,
57883 vrh->last_used_idx = 0;
57884 vrh->vring.num = num;
57885 /* vring expects kernel addresses, but only used via accessors. */
57886 - vrh->vring.desc = (__force struct vring_desc *)desc;
57887 - vrh->vring.avail = (__force struct vring_avail *)avail;
57888 - vrh->vring.used = (__force struct vring_used *)used;
57889 + vrh->vring.desc = (__force_kernel struct vring_desc *)desc;
57890 + vrh->vring.avail = (__force_kernel struct vring_avail *)avail;
57891 + vrh->vring.used = (__force_kernel struct vring_used *)used;
57892 return 0;
57893 }
57894 EXPORT_SYMBOL(vringh_init_user);
57895 @@ -826,7 +826,7 @@ static inline int getu16_kern(const struct vringh *vrh,
57896
57897 static inline int putu16_kern(const struct vringh *vrh, __virtio16 *p, u16 val)
57898 {
57899 - ACCESS_ONCE(*p) = cpu_to_vringh16(vrh, val);
57900 + ACCESS_ONCE_RW(*p) = cpu_to_vringh16(vrh, val);
57901 return 0;
57902 }
57903
57904 diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c
57905 index 84a110a..96312c3 100644
57906 --- a/drivers/video/backlight/kb3886_bl.c
57907 +++ b/drivers/video/backlight/kb3886_bl.c
57908 @@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo;
57909 static unsigned long kb3886bl_flags;
57910 #define KB3886BL_SUSPENDED 0x01
57911
57912 -static struct dmi_system_id kb3886bl_device_table[] __initdata = {
57913 +static const struct dmi_system_id kb3886bl_device_table[] __initconst = {
57914 {
57915 .ident = "Sahara Touch-iT",
57916 .matches = {
57917 diff --git a/drivers/video/fbdev/arcfb.c b/drivers/video/fbdev/arcfb.c
57918 index 1b0b233..6f34c2c 100644
57919 --- a/drivers/video/fbdev/arcfb.c
57920 +++ b/drivers/video/fbdev/arcfb.c
57921 @@ -458,7 +458,7 @@ static ssize_t arcfb_write(struct fb_info *info, const char __user *buf,
57922 return -ENOSPC;
57923
57924 err = 0;
57925 - if ((count + p) > fbmemlength) {
57926 + if (count > (fbmemlength - p)) {
57927 count = fbmemlength - p;
57928 err = -ENOSPC;
57929 }
57930 diff --git a/drivers/video/fbdev/aty/aty128fb.c b/drivers/video/fbdev/aty/aty128fb.c
57931 index c42ce2f..4c8bc59 100644
57932 --- a/drivers/video/fbdev/aty/aty128fb.c
57933 +++ b/drivers/video/fbdev/aty/aty128fb.c
57934 @@ -145,7 +145,7 @@ enum {
57935 };
57936
57937 /* Must match above enum */
57938 -static char * const r128_family[] = {
57939 +static const char * const r128_family[] = {
57940 "AGP",
57941 "PCI",
57942 "PRO AGP",
57943 diff --git a/drivers/video/fbdev/aty/atyfb_base.c b/drivers/video/fbdev/aty/atyfb_base.c
57944 index 8789e48..698fe4c 100644
57945 --- a/drivers/video/fbdev/aty/atyfb_base.c
57946 +++ b/drivers/video/fbdev/aty/atyfb_base.c
57947 @@ -1326,10 +1326,14 @@ static int atyfb_set_par(struct fb_info *info)
57948 par->accel_flags = var->accel_flags; /* hack */
57949
57950 if (var->accel_flags) {
57951 - info->fbops->fb_sync = atyfb_sync;
57952 + pax_open_kernel();
57953 + *(void **)&info->fbops->fb_sync = atyfb_sync;
57954 + pax_close_kernel();
57955 info->flags &= ~FBINFO_HWACCEL_DISABLED;
57956 } else {
57957 - info->fbops->fb_sync = NULL;
57958 + pax_open_kernel();
57959 + *(void **)&info->fbops->fb_sync = NULL;
57960 + pax_close_kernel();
57961 info->flags |= FBINFO_HWACCEL_DISABLED;
57962 }
57963
57964 diff --git a/drivers/video/fbdev/aty/mach64_cursor.c b/drivers/video/fbdev/aty/mach64_cursor.c
57965 index 2fa0317..4983f2a 100644
57966 --- a/drivers/video/fbdev/aty/mach64_cursor.c
57967 +++ b/drivers/video/fbdev/aty/mach64_cursor.c
57968 @@ -8,6 +8,7 @@
57969 #include "../core/fb_draw.h"
57970
57971 #include <asm/io.h>
57972 +#include <asm/pgtable.h>
57973
57974 #ifdef __sparc__
57975 #include <asm/fbio.h>
57976 @@ -218,7 +219,9 @@ int aty_init_cursor(struct fb_info *info)
57977 info->sprite.buf_align = 16; /* and 64 lines tall. */
57978 info->sprite.flags = FB_PIXMAP_IO;
57979
57980 - info->fbops->fb_cursor = atyfb_cursor;
57981 + pax_open_kernel();
57982 + *(void **)&info->fbops->fb_cursor = atyfb_cursor;
57983 + pax_close_kernel();
57984
57985 return 0;
57986 }
57987 diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
57988 index 3fc63c2..eec5e49 100644
57989 --- a/drivers/video/fbdev/core/fb_defio.c
57990 +++ b/drivers/video/fbdev/core/fb_defio.c
57991 @@ -207,7 +207,9 @@ void fb_deferred_io_init(struct fb_info *info)
57992
57993 BUG_ON(!fbdefio);
57994 mutex_init(&fbdefio->lock);
57995 - info->fbops->fb_mmap = fb_deferred_io_mmap;
57996 + pax_open_kernel();
57997 + *(void **)&info->fbops->fb_mmap = fb_deferred_io_mmap;
57998 + pax_close_kernel();
57999 INIT_DELAYED_WORK(&info->deferred_work, fb_deferred_io_work);
58000 INIT_LIST_HEAD(&fbdefio->pagelist);
58001 if (fbdefio->delay == 0) /* set a default of 1 s */
58002 @@ -238,7 +240,7 @@ void fb_deferred_io_cleanup(struct fb_info *info)
58003 page->mapping = NULL;
58004 }
58005
58006 - info->fbops->fb_mmap = NULL;
58007 + *(void **)&info->fbops->fb_mmap = NULL;
58008 mutex_destroy(&fbdefio->lock);
58009 }
58010 EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
58011 diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
58012 index 0705d88..d9429bf 100644
58013 --- a/drivers/video/fbdev/core/fbmem.c
58014 +++ b/drivers/video/fbdev/core/fbmem.c
58015 @@ -1301,7 +1301,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
58016 __u32 data;
58017 int err;
58018
58019 - err = copy_to_user(&fix32->id, &fix->id, sizeof(fix32->id));
58020 + err = copy_to_user(fix32->id, &fix->id, sizeof(fix32->id));
58021
58022 data = (__u32) (unsigned long) fix->smem_start;
58023 err |= put_user(data, &fix32->smem_start);
58024 diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
58025 index 807ee22..7814cd6 100644
58026 --- a/drivers/video/fbdev/hyperv_fb.c
58027 +++ b/drivers/video/fbdev/hyperv_fb.c
58028 @@ -240,7 +240,7 @@ static uint screen_fb_size;
58029 static inline int synthvid_send(struct hv_device *hdev,
58030 struct synthvid_msg *msg)
58031 {
58032 - static atomic64_t request_id = ATOMIC64_INIT(0);
58033 + static atomic64_unchecked_t request_id = ATOMIC64_INIT(0);
58034 int ret;
58035
58036 msg->pipe_hdr.type = PIPE_MSG_DATA;
58037 @@ -248,7 +248,7 @@ static inline int synthvid_send(struct hv_device *hdev,
58038
58039 ret = vmbus_sendpacket(hdev->channel, msg,
58040 msg->vid_hdr.size + sizeof(struct pipe_msg_hdr),
58041 - atomic64_inc_return(&request_id),
58042 + atomic64_inc_return_unchecked(&request_id),
58043 VM_PKT_DATA_INBAND, 0);
58044
58045 if (ret)
58046 diff --git a/drivers/video/fbdev/i810/i810_accel.c b/drivers/video/fbdev/i810/i810_accel.c
58047 index 7672d2e..b56437f 100644
58048 --- a/drivers/video/fbdev/i810/i810_accel.c
58049 +++ b/drivers/video/fbdev/i810/i810_accel.c
58050 @@ -73,6 +73,7 @@ static inline int wait_for_space(struct fb_info *info, u32 space)
58051 }
58052 }
58053 printk("ringbuffer lockup!!!\n");
58054 + printk("head:%u tail:%u iring.size:%u space:%u\n", head, tail, par->iring.size, space);
58055 i810_report_error(mmio);
58056 par->dev_flags |= LOCKUP;
58057 info->pixmap.scan_align = 1;
58058 diff --git a/drivers/video/fbdev/matrox/matroxfb_DAC1064.c b/drivers/video/fbdev/matrox/matroxfb_DAC1064.c
58059 index a01147f..5d896f8 100644
58060 --- a/drivers/video/fbdev/matrox/matroxfb_DAC1064.c
58061 +++ b/drivers/video/fbdev/matrox/matroxfb_DAC1064.c
58062 @@ -1088,14 +1088,20 @@ static void MGAG100_restore(struct matrox_fb_info *minfo)
58063
58064 #ifdef CONFIG_FB_MATROX_MYSTIQUE
58065 struct matrox_switch matrox_mystique = {
58066 - MGA1064_preinit, MGA1064_reset, MGA1064_init, MGA1064_restore,
58067 + .preinit = MGA1064_preinit,
58068 + .reset = MGA1064_reset,
58069 + .init = MGA1064_init,
58070 + .restore = MGA1064_restore,
58071 };
58072 EXPORT_SYMBOL(matrox_mystique);
58073 #endif
58074
58075 #ifdef CONFIG_FB_MATROX_G
58076 struct matrox_switch matrox_G100 = {
58077 - MGAG100_preinit, MGAG100_reset, MGAG100_init, MGAG100_restore,
58078 + .preinit = MGAG100_preinit,
58079 + .reset = MGAG100_reset,
58080 + .init = MGAG100_init,
58081 + .restore = MGAG100_restore,
58082 };
58083 EXPORT_SYMBOL(matrox_G100);
58084 #endif
58085 diff --git a/drivers/video/fbdev/matrox/matroxfb_Ti3026.c b/drivers/video/fbdev/matrox/matroxfb_Ti3026.c
58086 index 195ad7c..09743fc 100644
58087 --- a/drivers/video/fbdev/matrox/matroxfb_Ti3026.c
58088 +++ b/drivers/video/fbdev/matrox/matroxfb_Ti3026.c
58089 @@ -738,7 +738,10 @@ static int Ti3026_preinit(struct matrox_fb_info *minfo)
58090 }
58091
58092 struct matrox_switch matrox_millennium = {
58093 - Ti3026_preinit, Ti3026_reset, Ti3026_init, Ti3026_restore
58094 + .preinit = Ti3026_preinit,
58095 + .reset = Ti3026_reset,
58096 + .init = Ti3026_init,
58097 + .restore = Ti3026_restore
58098 };
58099 EXPORT_SYMBOL(matrox_millennium);
58100 #endif
58101 diff --git a/drivers/video/fbdev/matrox/matroxfb_base.c b/drivers/video/fbdev/matrox/matroxfb_base.c
58102 index 11eb094..622ee31 100644
58103 --- a/drivers/video/fbdev/matrox/matroxfb_base.c
58104 +++ b/drivers/video/fbdev/matrox/matroxfb_base.c
58105 @@ -2176,7 +2176,7 @@ static struct pci_driver matroxfb_driver = {
58106 #define RS1056x480 14 /* 132 x 60 text */
58107 #define RSNoxNo 15
58108 /* 10-FF */
58109 -static struct { int xres, yres, left, right, upper, lower, hslen, vslen, vfreq; } timmings[] __initdata = {
58110 +static struct { unsigned int xres, yres, left, right, upper, lower, hslen, vslen, vfreq; } timmings[] __initdata = {
58111 { 640, 400, 48, 16, 39, 8, 96, 2, 70 },
58112 { 640, 480, 48, 16, 33, 10, 96, 2, 60 },
58113 { 800, 600, 144, 24, 28, 8, 112, 6, 60 },
58114 diff --git a/drivers/video/fbdev/mb862xx/mb862xxfb_accel.c b/drivers/video/fbdev/mb862xx/mb862xxfb_accel.c
58115 index fe92eed..106e085 100644
58116 --- a/drivers/video/fbdev/mb862xx/mb862xxfb_accel.c
58117 +++ b/drivers/video/fbdev/mb862xx/mb862xxfb_accel.c
58118 @@ -312,14 +312,18 @@ void mb862xxfb_init_accel(struct fb_info *info, int xres)
58119 struct mb862xxfb_par *par = info->par;
58120
58121 if (info->var.bits_per_pixel == 32) {
58122 - info->fbops->fb_fillrect = cfb_fillrect;
58123 - info->fbops->fb_copyarea = cfb_copyarea;
58124 - info->fbops->fb_imageblit = cfb_imageblit;
58125 + pax_open_kernel();
58126 + *(void **)&info->fbops->fb_fillrect = cfb_fillrect;
58127 + *(void **)&info->fbops->fb_copyarea = cfb_copyarea;
58128 + *(void **)&info->fbops->fb_imageblit = cfb_imageblit;
58129 + pax_close_kernel();
58130 } else {
58131 outreg(disp, GC_L0EM, 3);
58132 - info->fbops->fb_fillrect = mb86290fb_fillrect;
58133 - info->fbops->fb_copyarea = mb86290fb_copyarea;
58134 - info->fbops->fb_imageblit = mb86290fb_imageblit;
58135 + pax_open_kernel();
58136 + *(void **)&info->fbops->fb_fillrect = mb86290fb_fillrect;
58137 + *(void **)&info->fbops->fb_copyarea = mb86290fb_copyarea;
58138 + *(void **)&info->fbops->fb_imageblit = mb86290fb_imageblit;
58139 + pax_close_kernel();
58140 }
58141 outreg(draw, GDC_REG_DRAW_BASE, 0);
58142 outreg(draw, GDC_REG_MODE_MISC, 0x8000);
58143 diff --git a/drivers/video/fbdev/nvidia/nvidia.c b/drivers/video/fbdev/nvidia/nvidia.c
58144 index ce7dab7..a87baf8 100644
58145 --- a/drivers/video/fbdev/nvidia/nvidia.c
58146 +++ b/drivers/video/fbdev/nvidia/nvidia.c
58147 @@ -660,19 +660,23 @@ static int nvidiafb_set_par(struct fb_info *info)
58148 info->fix.line_length = (info->var.xres_virtual *
58149 info->var.bits_per_pixel) >> 3;
58150 if (info->var.accel_flags) {
58151 - info->fbops->fb_imageblit = nvidiafb_imageblit;
58152 - info->fbops->fb_fillrect = nvidiafb_fillrect;
58153 - info->fbops->fb_copyarea = nvidiafb_copyarea;
58154 - info->fbops->fb_sync = nvidiafb_sync;
58155 + pax_open_kernel();
58156 + *(void **)&info->fbops->fb_imageblit = nvidiafb_imageblit;
58157 + *(void **)&info->fbops->fb_fillrect = nvidiafb_fillrect;
58158 + *(void **)&info->fbops->fb_copyarea = nvidiafb_copyarea;
58159 + *(void **)&info->fbops->fb_sync = nvidiafb_sync;
58160 + pax_close_kernel();
58161 info->pixmap.scan_align = 4;
58162 info->flags &= ~FBINFO_HWACCEL_DISABLED;
58163 info->flags |= FBINFO_READS_FAST;
58164 NVResetGraphics(info);
58165 } else {
58166 - info->fbops->fb_imageblit = cfb_imageblit;
58167 - info->fbops->fb_fillrect = cfb_fillrect;
58168 - info->fbops->fb_copyarea = cfb_copyarea;
58169 - info->fbops->fb_sync = NULL;
58170 + pax_open_kernel();
58171 + *(void **)&info->fbops->fb_imageblit = cfb_imageblit;
58172 + *(void **)&info->fbops->fb_fillrect = cfb_fillrect;
58173 + *(void **)&info->fbops->fb_copyarea = cfb_copyarea;
58174 + *(void **)&info->fbops->fb_sync = NULL;
58175 + pax_close_kernel();
58176 info->pixmap.scan_align = 1;
58177 info->flags |= FBINFO_HWACCEL_DISABLED;
58178 info->flags &= ~FBINFO_READS_FAST;
58179 @@ -1164,8 +1168,11 @@ static int nvidia_set_fbinfo(struct fb_info *info)
58180 info->pixmap.size = 8 * 1024;
58181 info->pixmap.flags = FB_PIXMAP_SYSTEM;
58182
58183 - if (!hwcur)
58184 - info->fbops->fb_cursor = NULL;
58185 + if (!hwcur) {
58186 + pax_open_kernel();
58187 + *(void **)&info->fbops->fb_cursor = NULL;
58188 + pax_close_kernel();
58189 + }
58190
58191 info->var.accel_flags = (!noaccel);
58192
58193 diff --git a/drivers/video/fbdev/omap2/dss/display.c b/drivers/video/fbdev/omap2/dss/display.c
58194 index ef5b902..47cf7f5 100644
58195 --- a/drivers/video/fbdev/omap2/dss/display.c
58196 +++ b/drivers/video/fbdev/omap2/dss/display.c
58197 @@ -161,12 +161,14 @@ int omapdss_register_display(struct omap_dss_device *dssdev)
58198 if (dssdev->name == NULL)
58199 dssdev->name = dssdev->alias;
58200
58201 + pax_open_kernel();
58202 if (drv && drv->get_resolution == NULL)
58203 - drv->get_resolution = omapdss_default_get_resolution;
58204 + *(void **)&drv->get_resolution = omapdss_default_get_resolution;
58205 if (drv && drv->get_recommended_bpp == NULL)
58206 - drv->get_recommended_bpp = omapdss_default_get_recommended_bpp;
58207 + *(void **)&drv->get_recommended_bpp = omapdss_default_get_recommended_bpp;
58208 if (drv && drv->get_timings == NULL)
58209 - drv->get_timings = omapdss_default_get_timings;
58210 + *(void **)&drv->get_timings = omapdss_default_get_timings;
58211 + pax_close_kernel();
58212
58213 mutex_lock(&panel_list_mutex);
58214 list_add_tail(&dssdev->panel_list, &panel_list);
58215 diff --git a/drivers/video/fbdev/s1d13xxxfb.c b/drivers/video/fbdev/s1d13xxxfb.c
58216 index 83433cb..71e9b98 100644
58217 --- a/drivers/video/fbdev/s1d13xxxfb.c
58218 +++ b/drivers/video/fbdev/s1d13xxxfb.c
58219 @@ -881,8 +881,10 @@ static int s1d13xxxfb_probe(struct platform_device *pdev)
58220
58221 switch(prod_id) {
58222 case S1D13506_PROD_ID: /* activate acceleration */
58223 - s1d13xxxfb_fbops.fb_fillrect = s1d13xxxfb_bitblt_solidfill;
58224 - s1d13xxxfb_fbops.fb_copyarea = s1d13xxxfb_bitblt_copyarea;
58225 + pax_open_kernel();
58226 + *(void **)&s1d13xxxfb_fbops.fb_fillrect = s1d13xxxfb_bitblt_solidfill;
58227 + *(void **)&s1d13xxxfb_fbops.fb_copyarea = s1d13xxxfb_bitblt_copyarea;
58228 + pax_close_kernel();
58229 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN |
58230 FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA;
58231 break;
58232 diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c
58233 index 82c0a8c..42499a1 100644
58234 --- a/drivers/video/fbdev/sh_mobile_lcdcfb.c
58235 +++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c
58236 @@ -439,9 +439,9 @@ static unsigned long lcdc_sys_read_data(void *handle)
58237 }
58238
58239 static struct sh_mobile_lcdc_sys_bus_ops sh_mobile_lcdc_sys_bus_ops = {
58240 - lcdc_sys_write_index,
58241 - lcdc_sys_write_data,
58242 - lcdc_sys_read_data,
58243 + .write_index = lcdc_sys_write_index,
58244 + .write_data = lcdc_sys_write_data,
58245 + .read_data = lcdc_sys_read_data,
58246 };
58247
58248 static int sh_mobile_lcdc_sginit(struct fb_info *info,
58249 diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
58250 index 9279e5f..d5f5276 100644
58251 --- a/drivers/video/fbdev/smscufx.c
58252 +++ b/drivers/video/fbdev/smscufx.c
58253 @@ -1174,7 +1174,9 @@ static int ufx_ops_release(struct fb_info *info, int user)
58254 fb_deferred_io_cleanup(info);
58255 kfree(info->fbdefio);
58256 info->fbdefio = NULL;
58257 - info->fbops->fb_mmap = ufx_ops_mmap;
58258 + pax_open_kernel();
58259 + *(void **)&info->fbops->fb_mmap = ufx_ops_mmap;
58260 + pax_close_kernel();
58261 }
58262
58263 pr_debug("released /dev/fb%d user=%d count=%d",
58264 diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
58265 index ff2b873..626a8d5 100644
58266 --- a/drivers/video/fbdev/udlfb.c
58267 +++ b/drivers/video/fbdev/udlfb.c
58268 @@ -623,11 +623,11 @@ static int dlfb_handle_damage(struct dlfb_data *dev, int x, int y,
58269 dlfb_urb_completion(urb);
58270
58271 error:
58272 - atomic_add(bytes_sent, &dev->bytes_sent);
58273 - atomic_add(bytes_identical, &dev->bytes_identical);
58274 - atomic_add(width*height*2, &dev->bytes_rendered);
58275 + atomic_add_unchecked(bytes_sent, &dev->bytes_sent);
58276 + atomic_add_unchecked(bytes_identical, &dev->bytes_identical);
58277 + atomic_add_unchecked(width*height*2, &dev->bytes_rendered);
58278 end_cycles = get_cycles();
58279 - atomic_add(((unsigned int) ((end_cycles - start_cycles)
58280 + atomic_add_unchecked(((unsigned int) ((end_cycles - start_cycles)
58281 >> 10)), /* Kcycles */
58282 &dev->cpu_kcycles_used);
58283
58284 @@ -748,11 +748,11 @@ static void dlfb_dpy_deferred_io(struct fb_info *info,
58285 dlfb_urb_completion(urb);
58286
58287 error:
58288 - atomic_add(bytes_sent, &dev->bytes_sent);
58289 - atomic_add(bytes_identical, &dev->bytes_identical);
58290 - atomic_add(bytes_rendered, &dev->bytes_rendered);
58291 + atomic_add_unchecked(bytes_sent, &dev->bytes_sent);
58292 + atomic_add_unchecked(bytes_identical, &dev->bytes_identical);
58293 + atomic_add_unchecked(bytes_rendered, &dev->bytes_rendered);
58294 end_cycles = get_cycles();
58295 - atomic_add(((unsigned int) ((end_cycles - start_cycles)
58296 + atomic_add_unchecked(((unsigned int) ((end_cycles - start_cycles)
58297 >> 10)), /* Kcycles */
58298 &dev->cpu_kcycles_used);
58299 }
58300 @@ -991,7 +991,9 @@ static int dlfb_ops_release(struct fb_info *info, int user)
58301 fb_deferred_io_cleanup(info);
58302 kfree(info->fbdefio);
58303 info->fbdefio = NULL;
58304 - info->fbops->fb_mmap = dlfb_ops_mmap;
58305 + pax_open_kernel();
58306 + *(void **)&info->fbops->fb_mmap = dlfb_ops_mmap;
58307 + pax_close_kernel();
58308 }
58309
58310 pr_warn("released /dev/fb%d user=%d count=%d\n",
58311 @@ -1373,7 +1375,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev,
58312 struct fb_info *fb_info = dev_get_drvdata(fbdev);
58313 struct dlfb_data *dev = fb_info->par;
58314 return snprintf(buf, PAGE_SIZE, "%u\n",
58315 - atomic_read(&dev->bytes_rendered));
58316 + atomic_read_unchecked(&dev->bytes_rendered));
58317 }
58318
58319 static ssize_t metrics_bytes_identical_show(struct device *fbdev,
58320 @@ -1381,7 +1383,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev,
58321 struct fb_info *fb_info = dev_get_drvdata(fbdev);
58322 struct dlfb_data *dev = fb_info->par;
58323 return snprintf(buf, PAGE_SIZE, "%u\n",
58324 - atomic_read(&dev->bytes_identical));
58325 + atomic_read_unchecked(&dev->bytes_identical));
58326 }
58327
58328 static ssize_t metrics_bytes_sent_show(struct device *fbdev,
58329 @@ -1389,7 +1391,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev,
58330 struct fb_info *fb_info = dev_get_drvdata(fbdev);
58331 struct dlfb_data *dev = fb_info->par;
58332 return snprintf(buf, PAGE_SIZE, "%u\n",
58333 - atomic_read(&dev->bytes_sent));
58334 + atomic_read_unchecked(&dev->bytes_sent));
58335 }
58336
58337 static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
58338 @@ -1397,7 +1399,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
58339 struct fb_info *fb_info = dev_get_drvdata(fbdev);
58340 struct dlfb_data *dev = fb_info->par;
58341 return snprintf(buf, PAGE_SIZE, "%u\n",
58342 - atomic_read(&dev->cpu_kcycles_used));
58343 + atomic_read_unchecked(&dev->cpu_kcycles_used));
58344 }
58345
58346 static ssize_t edid_show(
58347 @@ -1457,10 +1459,10 @@ static ssize_t metrics_reset_store(struct device *fbdev,
58348 struct fb_info *fb_info = dev_get_drvdata(fbdev);
58349 struct dlfb_data *dev = fb_info->par;
58350
58351 - atomic_set(&dev->bytes_rendered, 0);
58352 - atomic_set(&dev->bytes_identical, 0);
58353 - atomic_set(&dev->bytes_sent, 0);
58354 - atomic_set(&dev->cpu_kcycles_used, 0);
58355 + atomic_set_unchecked(&dev->bytes_rendered, 0);
58356 + atomic_set_unchecked(&dev->bytes_identical, 0);
58357 + atomic_set_unchecked(&dev->bytes_sent, 0);
58358 + atomic_set_unchecked(&dev->cpu_kcycles_used, 0);
58359
58360 return count;
58361 }
58362 diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
58363 index 178ae93..624b2eb 100644
58364 --- a/drivers/video/fbdev/uvesafb.c
58365 +++ b/drivers/video/fbdev/uvesafb.c
58366 @@ -19,6 +19,7 @@
58367 #include <linux/io.h>
58368 #include <linux/mutex.h>
58369 #include <linux/slab.h>
58370 +#include <linux/moduleloader.h>
58371 #include <video/edid.h>
58372 #include <video/uvesafb.h>
58373 #ifdef CONFIG_X86
58374 @@ -565,10 +566,32 @@ static int uvesafb_vbe_getpmi(struct uvesafb_ktask *task,
58375 if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
58376 par->pmi_setpal = par->ypan = 0;
58377 } else {
58378 +
58379 +#ifdef CONFIG_PAX_KERNEXEC
58380 +#ifdef CONFIG_MODULES
58381 + par->pmi_code = module_alloc_exec((u16)task->t.regs.ecx);
58382 +#endif
58383 + if (!par->pmi_code) {
58384 + par->pmi_setpal = par->ypan = 0;
58385 + return 0;
58386 + }
58387 +#endif
58388 +
58389 par->pmi_base = (u16 *)phys_to_virt(((u32)task->t.regs.es << 4)
58390 + task->t.regs.edi);
58391 +
58392 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58393 + pax_open_kernel();
58394 + memcpy(par->pmi_code, par->pmi_base, (u16)task->t.regs.ecx);
58395 + pax_close_kernel();
58396 +
58397 + par->pmi_start = (void *)ktva_ktla((unsigned long)(par->pmi_code + par->pmi_base[1]));
58398 + par->pmi_pal = (void *)ktva_ktla((unsigned long)(par->pmi_code + par->pmi_base[2]));
58399 +#else
58400 par->pmi_start = (u8 *)par->pmi_base + par->pmi_base[1];
58401 par->pmi_pal = (u8 *)par->pmi_base + par->pmi_base[2];
58402 +#endif
58403 +
58404 printk(KERN_INFO "uvesafb: protected mode interface info at "
58405 "%04x:%04x\n",
58406 (u16)task->t.regs.es, (u16)task->t.regs.edi);
58407 @@ -813,13 +836,14 @@ static int uvesafb_vbe_init(struct fb_info *info)
58408 par->ypan = ypan;
58409
58410 if (par->pmi_setpal || par->ypan) {
58411 +#if !defined(CONFIG_MODULES) || !defined(CONFIG_PAX_KERNEXEC)
58412 if (__supported_pte_mask & _PAGE_NX) {
58413 par->pmi_setpal = par->ypan = 0;
58414 printk(KERN_WARNING "uvesafb: NX protection is active, "
58415 "better not use the PMI.\n");
58416 - } else {
58417 + } else
58418 +#endif
58419 uvesafb_vbe_getpmi(task, par);
58420 - }
58421 }
58422 #else
58423 /* The protected mode interface is not available on non-x86. */
58424 @@ -1452,8 +1476,11 @@ static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode)
58425 info->fix.ywrapstep = (par->ypan > 1) ? 1 : 0;
58426
58427 /* Disable blanking if the user requested so. */
58428 - if (!blank)
58429 - info->fbops->fb_blank = NULL;
58430 + if (!blank) {
58431 + pax_open_kernel();
58432 + *(void **)&info->fbops->fb_blank = NULL;
58433 + pax_close_kernel();
58434 + }
58435
58436 /*
58437 * Find out how much IO memory is required for the mode with
58438 @@ -1524,8 +1551,11 @@ static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode)
58439 info->flags = FBINFO_FLAG_DEFAULT |
58440 (par->ypan ? FBINFO_HWACCEL_YPAN : 0);
58441
58442 - if (!par->ypan)
58443 - info->fbops->fb_pan_display = NULL;
58444 + if (!par->ypan) {
58445 + pax_open_kernel();
58446 + *(void **)&info->fbops->fb_pan_display = NULL;
58447 + pax_close_kernel();
58448 + }
58449 }
58450
58451 static void uvesafb_init_mtrr(struct fb_info *info)
58452 @@ -1786,6 +1816,11 @@ out_mode:
58453 out:
58454 kfree(par->vbe_modes);
58455
58456 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58457 + if (par->pmi_code)
58458 + module_memfree_exec(par->pmi_code);
58459 +#endif
58460 +
58461 framebuffer_release(info);
58462 return err;
58463 }
58464 @@ -1810,6 +1845,11 @@ static int uvesafb_remove(struct platform_device *dev)
58465 kfree(par->vbe_state_orig);
58466 kfree(par->vbe_state_saved);
58467
58468 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58469 + if (par->pmi_code)
58470 + module_memfree_exec(par->pmi_code);
58471 +#endif
58472 +
58473 framebuffer_release(info);
58474 }
58475 return 0;
58476 diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c
58477 index 528fe91..6fd29fe 100644
58478 --- a/drivers/video/fbdev/vesafb.c
58479 +++ b/drivers/video/fbdev/vesafb.c
58480 @@ -9,6 +9,7 @@
58481 */
58482
58483 #include <linux/module.h>
58484 +#include <linux/moduleloader.h>
58485 #include <linux/kernel.h>
58486 #include <linux/errno.h>
58487 #include <linux/string.h>
58488 @@ -56,8 +57,8 @@ static int vram_remap; /* Set amount of memory to be used */
58489 static int vram_total; /* Set total amount of memory */
58490 static int pmi_setpal __read_mostly = 1; /* pmi for palette changes ??? */
58491 static int ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */
58492 -static void (*pmi_start)(void) __read_mostly;
58493 -static void (*pmi_pal) (void) __read_mostly;
58494 +static void (*pmi_start)(void) __read_only;
58495 +static void (*pmi_pal) (void) __read_only;
58496 static int depth __read_mostly;
58497 static int vga_compat __read_mostly;
58498 /* --------------------------------------------------------------------- */
58499 @@ -241,6 +242,7 @@ static int vesafb_probe(struct platform_device *dev)
58500 unsigned int size_remap;
58501 unsigned int size_total;
58502 char *option = NULL;
58503 + void *pmi_code = NULL;
58504
58505 /* ignore error return of fb_get_options */
58506 fb_get_options("vesafb", &option);
58507 @@ -287,10 +289,6 @@ static int vesafb_probe(struct platform_device *dev)
58508 size_remap = size_total;
58509 vesafb_fix.smem_len = size_remap;
58510
58511 -#ifndef __i386__
58512 - screen_info.vesapm_seg = 0;
58513 -#endif
58514 -
58515 if (!request_mem_region(vesafb_fix.smem_start, size_total, "vesafb")) {
58516 printk(KERN_WARNING
58517 "vesafb: cannot reserve video memory at 0x%lx\n",
58518 @@ -320,9 +318,21 @@ static int vesafb_probe(struct platform_device *dev)
58519 printk(KERN_INFO "vesafb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
58520 vesafb_defined.xres, vesafb_defined.yres, vesafb_defined.bits_per_pixel, vesafb_fix.line_length, screen_info.pages);
58521
58522 +#ifdef __i386__
58523 +
58524 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58525 + pmi_code = module_alloc_exec(screen_info.vesapm_size);
58526 + if (!pmi_code)
58527 +#elif !defined(CONFIG_PAX_KERNEXEC)
58528 + if (0)
58529 +#endif
58530 +
58531 +#endif
58532 + screen_info.vesapm_seg = 0;
58533 +
58534 if (screen_info.vesapm_seg) {
58535 - printk(KERN_INFO "vesafb: protected mode interface info at %04x:%04x\n",
58536 - screen_info.vesapm_seg,screen_info.vesapm_off);
58537 + printk(KERN_INFO "vesafb: protected mode interface info at %04x:%04x %04x bytes\n",
58538 + screen_info.vesapm_seg,screen_info.vesapm_off,screen_info.vesapm_size);
58539 }
58540
58541 if (screen_info.vesapm_seg < 0xc000)
58542 @@ -330,9 +340,25 @@ static int vesafb_probe(struct platform_device *dev)
58543
58544 if (ypan || pmi_setpal) {
58545 unsigned short *pmi_base;
58546 +
58547 pmi_base = (unsigned short*)phys_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
58548 - pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
58549 - pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
58550 +
58551 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58552 + pax_open_kernel();
58553 + memcpy(pmi_code, pmi_base, screen_info.vesapm_size);
58554 +#else
58555 + pmi_code = pmi_base;
58556 +#endif
58557 +
58558 + pmi_start = (void*)((char*)pmi_code + pmi_base[1]);
58559 + pmi_pal = (void*)((char*)pmi_code + pmi_base[2]);
58560 +
58561 +#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58562 + pmi_start = (void *)ktva_ktla((unsigned long)pmi_start);
58563 + pmi_pal = (void *)ktva_ktla((unsigned long)pmi_pal);
58564 + pax_close_kernel();
58565 +#endif
58566 +
58567 printk(KERN_INFO "vesafb: pmi: set display start = %p, set palette = %p\n",pmi_start,pmi_pal);
58568 if (pmi_base[3]) {
58569 printk(KERN_INFO "vesafb: pmi: ports = ");
58570 @@ -452,8 +478,11 @@ static int vesafb_probe(struct platform_device *dev)
58571 info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE |
58572 (ypan ? FBINFO_HWACCEL_YPAN : 0);
58573
58574 - if (!ypan)
58575 - info->fbops->fb_pan_display = NULL;
58576 + if (!ypan) {
58577 + pax_open_kernel();
58578 + *(void **)&info->fbops->fb_pan_display = NULL;
58579 + pax_close_kernel();
58580 + }
58581
58582 if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
58583 err = -ENOMEM;
58584 @@ -467,6 +496,11 @@ static int vesafb_probe(struct platform_device *dev)
58585 fb_info(info, "%s frame buffer device\n", info->fix.id);
58586 return 0;
58587 err:
58588 +
58589 +#if defined(__i386__) && defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
58590 + module_memfree_exec(pmi_code);
58591 +#endif
58592 +
58593 arch_phys_wc_del(par->wc_cookie);
58594 if (info->screen_base)
58595 iounmap(info->screen_base);
58596 diff --git a/drivers/video/fbdev/via/via_clock.h b/drivers/video/fbdev/via/via_clock.h
58597 index 88714ae..16c2e11 100644
58598 --- a/drivers/video/fbdev/via/via_clock.h
58599 +++ b/drivers/video/fbdev/via/via_clock.h
58600 @@ -56,7 +56,7 @@ struct via_clock {
58601
58602 void (*set_engine_pll_state)(u8 state);
58603 void (*set_engine_pll)(struct via_pll_config config);
58604 -};
58605 +} __no_const;
58606
58607
58608 static inline u32 get_pll_internal_frequency(u32 ref_freq,
58609 diff --git a/drivers/video/logo/logo_linux_clut224.ppm b/drivers/video/logo/logo_linux_clut224.ppm
58610 index 3c14e43..2630570 100644
58611 --- a/drivers/video/logo/logo_linux_clut224.ppm
58612 +++ b/drivers/video/logo/logo_linux_clut224.ppm
58613 @@ -2,1603 +2,1123 @@ P3
58614 # Standard 224-color Linux logo
58615 80 80
58616 255
58617 - 0 0 0 0 0 0 0 0 0 0 0 0
58618 - 0 0 0 0 0 0 0 0 0 0 0 0
58619 - 0 0 0 0 0 0 0 0 0 0 0 0
58620 - 0 0 0 0 0 0 0 0 0 0 0 0
58621 - 0 0 0 0 0 0 0 0 0 0 0 0
58622 - 0 0 0 0 0 0 0 0 0 0 0 0
58623 - 0 0 0 0 0 0 0 0 0 0 0 0
58624 - 0 0 0 0 0 0 0 0 0 0 0 0
58625 - 0 0 0 0 0 0 0 0 0 0 0 0
58626 - 6 6 6 6 6 6 10 10 10 10 10 10
58627 - 10 10 10 6 6 6 6 6 6 6 6 6
58628 - 0 0 0 0 0 0 0 0 0 0 0 0
58629 - 0 0 0 0 0 0 0 0 0 0 0 0
58630 - 0 0 0 0 0 0 0 0 0 0 0 0
58631 - 0 0 0 0 0 0 0 0 0 0 0 0
58632 - 0 0 0 0 0 0 0 0 0 0 0 0
58633 - 0 0 0 0 0 0 0 0 0 0 0 0
58634 - 0 0 0 0 0 0 0 0 0 0 0 0
58635 - 0 0 0 0 0 0 0 0 0 0 0 0
58636 - 0 0 0 0 0 0 0 0 0 0 0 0
58637 - 0 0 0 0 0 0 0 0 0 0 0 0
58638 - 0 0 0 0 0 0 0 0 0 0 0 0
58639 - 0 0 0 0 0 0 0 0 0 0 0 0
58640 - 0 0 0 0 0 0 0 0 0 0 0 0
58641 - 0 0 0 0 0 0 0 0 0 0 0 0
58642 - 0 0 0 0 0 0 0 0 0 0 0 0
58643 - 0 0 0 0 0 0 0 0 0 0 0 0
58644 - 0 0 0 0 0 0 0 0 0 0 0 0
58645 - 0 0 0 6 6 6 10 10 10 14 14 14
58646 - 22 22 22 26 26 26 30 30 30 34 34 34
58647 - 30 30 30 30 30 30 26 26 26 18 18 18
58648 - 14 14 14 10 10 10 6 6 6 0 0 0
58649 - 0 0 0 0 0 0 0 0 0 0 0 0
58650 - 0 0 0 0 0 0 0 0 0 0 0 0
58651 - 0 0 0 0 0 0 0 0 0 0 0 0
58652 - 0 0 0 0 0 0 0 0 0 0 0 0
58653 - 0 0 0 0 0 0 0 0 0 0 0 0
58654 - 0 0 0 0 0 0 0 0 0 0 0 0
58655 - 0 0 0 0 0 0 0 0 0 0 0 0
58656 - 0 0 0 0 0 0 0 0 0 0 0 0
58657 - 0 0 0 0 0 0 0 0 0 0 0 0
58658 - 0 0 0 0 0 1 0 0 1 0 0 0
58659 - 0 0 0 0 0 0 0 0 0 0 0 0
58660 - 0 0 0 0 0 0 0 0 0 0 0 0
58661 - 0 0 0 0 0 0 0 0 0 0 0 0
58662 - 0 0 0 0 0 0 0 0 0 0 0 0
58663 - 0 0 0 0 0 0 0 0 0 0 0 0
58664 - 0 0 0 0 0 0 0 0 0 0 0 0
58665 - 6 6 6 14 14 14 26 26 26 42 42 42
58666 - 54 54 54 66 66 66 78 78 78 78 78 78
58667 - 78 78 78 74 74 74 66 66 66 54 54 54
58668 - 42 42 42 26 26 26 18 18 18 10 10 10
58669 - 6 6 6 0 0 0 0 0 0 0 0 0
58670 - 0 0 0 0 0 0 0 0 0 0 0 0
58671 - 0 0 0 0 0 0 0 0 0 0 0 0
58672 - 0 0 0 0 0 0 0 0 0 0 0 0
58673 - 0 0 0 0 0 0 0 0 0 0 0 0
58674 - 0 0 0 0 0 0 0 0 0 0 0 0
58675 - 0 0 0 0 0 0 0 0 0 0 0 0
58676 - 0 0 0 0 0 0 0 0 0 0 0 0
58677 - 0 0 0 0 0 0 0 0 0 0 0 0
58678 - 0 0 1 0 0 0 0 0 0 0 0 0
58679 - 0 0 0 0 0 0 0 0 0 0 0 0
58680 - 0 0 0 0 0 0 0 0 0 0 0 0
58681 - 0 0 0 0 0 0 0 0 0 0 0 0
58682 - 0 0 0 0 0 0 0 0 0 0 0 0
58683 - 0 0 0 0 0 0 0 0 0 0 0 0
58684 - 0 0 0 0 0 0 0 0 0 10 10 10
58685 - 22 22 22 42 42 42 66 66 66 86 86 86
58686 - 66 66 66 38 38 38 38 38 38 22 22 22
58687 - 26 26 26 34 34 34 54 54 54 66 66 66
58688 - 86 86 86 70 70 70 46 46 46 26 26 26
58689 - 14 14 14 6 6 6 0 0 0 0 0 0
58690 - 0 0 0 0 0 0 0 0 0 0 0 0
58691 - 0 0 0 0 0 0 0 0 0 0 0 0
58692 - 0 0 0 0 0 0 0 0 0 0 0 0
58693 - 0 0 0 0 0 0 0 0 0 0 0 0
58694 - 0 0 0 0 0 0 0 0 0 0 0 0
58695 - 0 0 0 0 0 0 0 0 0 0 0 0
58696 - 0 0 0 0 0 0 0 0 0 0 0 0
58697 - 0 0 0 0 0 0 0 0 0 0 0 0
58698 - 0 0 1 0 0 1 0 0 1 0 0 0
58699 - 0 0 0 0 0 0 0 0 0 0 0 0
58700 - 0 0 0 0 0 0 0 0 0 0 0 0
58701 - 0 0 0 0 0 0 0 0 0 0 0 0
58702 - 0 0 0 0 0 0 0 0 0 0 0 0
58703 - 0 0 0 0 0 0 0 0 0 0 0 0
58704 - 0 0 0 0 0 0 10 10 10 26 26 26
58705 - 50 50 50 82 82 82 58 58 58 6 6 6
58706 - 2 2 6 2 2 6 2 2 6 2 2 6
58707 - 2 2 6 2 2 6 2 2 6 2 2 6
58708 - 6 6 6 54 54 54 86 86 86 66 66 66
58709 - 38 38 38 18 18 18 6 6 6 0 0 0
58710 - 0 0 0 0 0 0 0 0 0 0 0 0
58711 - 0 0 0 0 0 0 0 0 0 0 0 0
58712 - 0 0 0 0 0 0 0 0 0 0 0 0
58713 - 0 0 0 0 0 0 0 0 0 0 0 0
58714 - 0 0 0 0 0 0 0 0 0 0 0 0
58715 - 0 0 0 0 0 0 0 0 0 0 0 0
58716 - 0 0 0 0 0 0 0 0 0 0 0 0
58717 - 0 0 0 0 0 0 0 0 0 0 0 0
58718 - 0 0 0 0 0 0 0 0 0 0 0 0
58719 - 0 0 0 0 0 0 0 0 0 0 0 0
58720 - 0 0 0 0 0 0 0 0 0 0 0 0
58721 - 0 0 0 0 0 0 0 0 0 0 0 0
58722 - 0 0 0 0 0 0 0 0 0 0 0 0
58723 - 0 0 0 0 0 0 0 0 0 0 0 0
58724 - 0 0 0 6 6 6 22 22 22 50 50 50
58725 - 78 78 78 34 34 34 2 2 6 2 2 6
58726 - 2 2 6 2 2 6 2 2 6 2 2 6
58727 - 2 2 6 2 2 6 2 2 6 2 2 6
58728 - 2 2 6 2 2 6 6 6 6 70 70 70
58729 - 78 78 78 46 46 46 22 22 22 6 6 6
58730 - 0 0 0 0 0 0 0 0 0 0 0 0
58731 - 0 0 0 0 0 0 0 0 0 0 0 0
58732 - 0 0 0 0 0 0 0 0 0 0 0 0
58733 - 0 0 0 0 0 0 0 0 0 0 0 0
58734 - 0 0 0 0 0 0 0 0 0 0 0 0
58735 - 0 0 0 0 0 0 0 0 0 0 0 0
58736 - 0 0 0 0 0 0 0 0 0 0 0 0
58737 - 0 0 0 0 0 0 0 0 0 0 0 0
58738 - 0 0 1 0 0 1 0 0 1 0 0 0
58739 - 0 0 0 0 0 0 0 0 0 0 0 0
58740 - 0 0 0 0 0 0 0 0 0 0 0 0
58741 - 0 0 0 0 0 0 0 0 0 0 0 0
58742 - 0 0 0 0 0 0 0 0 0 0 0 0
58743 - 0 0 0 0 0 0 0 0 0 0 0 0
58744 - 6 6 6 18 18 18 42 42 42 82 82 82
58745 - 26 26 26 2 2 6 2 2 6 2 2 6
58746 - 2 2 6 2 2 6 2 2 6 2 2 6
58747 - 2 2 6 2 2 6 2 2 6 14 14 14
58748 - 46 46 46 34 34 34 6 6 6 2 2 6
58749 - 42 42 42 78 78 78 42 42 42 18 18 18
58750 - 6 6 6 0 0 0 0 0 0 0 0 0
58751 - 0 0 0 0 0 0 0 0 0 0 0 0
58752 - 0 0 0 0 0 0 0 0 0 0 0 0
58753 - 0 0 0 0 0 0 0 0 0 0 0 0
58754 - 0 0 0 0 0 0 0 0 0 0 0 0
58755 - 0 0 0 0 0 0 0 0 0 0 0 0
58756 - 0 0 0 0 0 0 0 0 0 0 0 0
58757 - 0 0 0 0 0 0 0 0 0 0 0 0
58758 - 0 0 1 0 0 0 0 0 1 0 0 0
58759 - 0 0 0 0 0 0 0 0 0 0 0 0
58760 - 0 0 0 0 0 0 0 0 0 0 0 0
58761 - 0 0 0 0 0 0 0 0 0 0 0 0
58762 - 0 0 0 0 0 0 0 0 0 0 0 0
58763 - 0 0 0 0 0 0 0 0 0 0 0 0
58764 - 10 10 10 30 30 30 66 66 66 58 58 58
58765 - 2 2 6 2 2 6 2 2 6 2 2 6
58766 - 2 2 6 2 2 6 2 2 6 2 2 6
58767 - 2 2 6 2 2 6 2 2 6 26 26 26
58768 - 86 86 86 101 101 101 46 46 46 10 10 10
58769 - 2 2 6 58 58 58 70 70 70 34 34 34
58770 - 10 10 10 0 0 0 0 0 0 0 0 0
58771 - 0 0 0 0 0 0 0 0 0 0 0 0
58772 - 0 0 0 0 0 0 0 0 0 0 0 0
58773 - 0 0 0 0 0 0 0 0 0 0 0 0
58774 - 0 0 0 0 0 0 0 0 0 0 0 0
58775 - 0 0 0 0 0 0 0 0 0 0 0 0
58776 - 0 0 0 0 0 0 0 0 0 0 0 0
58777 - 0 0 0 0 0 0 0 0 0 0 0 0
58778 - 0 0 1 0 0 1 0 0 1 0 0 0
58779 - 0 0 0 0 0 0 0 0 0 0 0 0
58780 - 0 0 0 0 0 0 0 0 0 0 0 0
58781 - 0 0 0 0 0 0 0 0 0 0 0 0
58782 - 0 0 0 0 0 0 0 0 0 0 0 0
58783 - 0 0 0 0 0 0 0 0 0 0 0 0
58784 - 14 14 14 42 42 42 86 86 86 10 10 10
58785 - 2 2 6 2 2 6 2 2 6 2 2 6
58786 - 2 2 6 2 2 6 2 2 6 2 2 6
58787 - 2 2 6 2 2 6 2 2 6 30 30 30
58788 - 94 94 94 94 94 94 58 58 58 26 26 26
58789 - 2 2 6 6 6 6 78 78 78 54 54 54
58790 - 22 22 22 6 6 6 0 0 0 0 0 0
58791 - 0 0 0 0 0 0 0 0 0 0 0 0
58792 - 0 0 0 0 0 0 0 0 0 0 0 0
58793 - 0 0 0 0 0 0 0 0 0 0 0 0
58794 - 0 0 0 0 0 0 0 0 0 0 0 0
58795 - 0 0 0 0 0 0 0 0 0 0 0 0
58796 - 0 0 0 0 0 0 0 0 0 0 0 0
58797 - 0 0 0 0 0 0 0 0 0 0 0 0
58798 - 0 0 0 0 0 0 0 0 0 0 0 0
58799 - 0 0 0 0 0 0 0 0 0 0 0 0
58800 - 0 0 0 0 0 0 0 0 0 0 0 0
58801 - 0 0 0 0 0 0 0 0 0 0 0 0
58802 - 0 0 0 0 0 0 0 0 0 0 0 0
58803 - 0 0 0 0 0 0 0 0 0 6 6 6
58804 - 22 22 22 62 62 62 62 62 62 2 2 6
58805 - 2 2 6 2 2 6 2 2 6 2 2 6
58806 - 2 2 6 2 2 6 2 2 6 2 2 6
58807 - 2 2 6 2 2 6 2 2 6 26 26 26
58808 - 54 54 54 38 38 38 18 18 18 10 10 10
58809 - 2 2 6 2 2 6 34 34 34 82 82 82
58810 - 38 38 38 14 14 14 0 0 0 0 0 0
58811 - 0 0 0 0 0 0 0 0 0 0 0 0
58812 - 0 0 0 0 0 0 0 0 0 0 0 0
58813 - 0 0 0 0 0 0 0 0 0 0 0 0
58814 - 0 0 0 0 0 0 0 0 0 0 0 0
58815 - 0 0 0 0 0 0 0 0 0 0 0 0
58816 - 0 0 0 0 0 0 0 0 0 0 0 0
58817 - 0 0 0 0 0 0 0 0 0 0 0 0
58818 - 0 0 0 0 0 1 0 0 1 0 0 0
58819 - 0 0 0 0 0 0 0 0 0 0 0 0
58820 - 0 0 0 0 0 0 0 0 0 0 0 0
58821 - 0 0 0 0 0 0 0 0 0 0 0 0
58822 - 0 0 0 0 0 0 0 0 0 0 0 0
58823 - 0 0 0 0 0 0 0 0 0 6 6 6
58824 - 30 30 30 78 78 78 30 30 30 2 2 6
58825 - 2 2 6 2 2 6 2 2 6 2 2 6
58826 - 2 2 6 2 2 6 2 2 6 2 2 6
58827 - 2 2 6 2 2 6 2 2 6 10 10 10
58828 - 10 10 10 2 2 6 2 2 6 2 2 6
58829 - 2 2 6 2 2 6 2 2 6 78 78 78
58830 - 50 50 50 18 18 18 6 6 6 0 0 0
58831 - 0 0 0 0 0 0 0 0 0 0 0 0
58832 - 0 0 0 0 0 0 0 0 0 0 0 0
58833 - 0 0 0 0 0 0 0 0 0 0 0 0
58834 - 0 0 0 0 0 0 0 0 0 0 0 0
58835 - 0 0 0 0 0 0 0 0 0 0 0 0
58836 - 0 0 0 0 0 0 0 0 0 0 0 0
58837 - 0 0 0 0 0 0 0 0 0 0 0 0
58838 - 0 0 1 0 0 0 0 0 0 0 0 0
58839 - 0 0 0 0 0 0 0 0 0 0 0 0
58840 - 0 0 0 0 0 0 0 0 0 0 0 0
58841 - 0 0 0 0 0 0 0 0 0 0 0 0
58842 - 0 0 0 0 0 0 0 0 0 0 0 0
58843 - 0 0 0 0 0 0 0 0 0 10 10 10
58844 - 38 38 38 86 86 86 14 14 14 2 2 6
58845 - 2 2 6 2 2 6 2 2 6 2 2 6
58846 - 2 2 6 2 2 6 2 2 6 2 2 6
58847 - 2 2 6 2 2 6 2 2 6 2 2 6
58848 - 2 2 6 2 2 6 2 2 6 2 2 6
58849 - 2 2 6 2 2 6 2 2 6 54 54 54
58850 - 66 66 66 26 26 26 6 6 6 0 0 0
58851 - 0 0 0 0 0 0 0 0 0 0 0 0
58852 - 0 0 0 0 0 0 0 0 0 0 0 0
58853 - 0 0 0 0 0 0 0 0 0 0 0 0
58854 - 0 0 0 0 0 0 0 0 0 0 0 0
58855 - 0 0 0 0 0 0 0 0 0 0 0 0
58856 - 0 0 0 0 0 0 0 0 0 0 0 0
58857 - 0 0 0 0 0 0 0 0 0 0 0 0
58858 - 0 0 0 0 0 1 0 0 1 0 0 0
58859 - 0 0 0 0 0 0 0 0 0 0 0 0
58860 - 0 0 0 0 0 0 0 0 0 0 0 0
58861 - 0 0 0 0 0 0 0 0 0 0 0 0
58862 - 0 0 0 0 0 0 0 0 0 0 0 0
58863 - 0 0 0 0 0 0 0 0 0 14 14 14
58864 - 42 42 42 82 82 82 2 2 6 2 2 6
58865 - 2 2 6 6 6 6 10 10 10 2 2 6
58866 - 2 2 6 2 2 6 2 2 6 2 2 6
58867 - 2 2 6 2 2 6 2 2 6 6 6 6
58868 - 14 14 14 10 10 10 2 2 6 2 2 6
58869 - 2 2 6 2 2 6 2 2 6 18 18 18
58870 - 82 82 82 34 34 34 10 10 10 0 0 0
58871 - 0 0 0 0 0 0 0 0 0 0 0 0
58872 - 0 0 0 0 0 0 0 0 0 0 0 0
58873 - 0 0 0 0 0 0 0 0 0 0 0 0
58874 - 0 0 0 0 0 0 0 0 0 0 0 0
58875 - 0 0 0 0 0 0 0 0 0 0 0 0
58876 - 0 0 0 0 0 0 0 0 0 0 0 0
58877 - 0 0 0 0 0 0 0 0 0 0 0 0
58878 - 0 0 1 0 0 0 0 0 0 0 0 0
58879 - 0 0 0 0 0 0 0 0 0 0 0 0
58880 - 0 0 0 0 0 0 0 0 0 0 0 0
58881 - 0 0 0 0 0 0 0 0 0 0 0 0
58882 - 0 0 0 0 0 0 0 0 0 0 0 0
58883 - 0 0 0 0 0 0 0 0 0 14 14 14
58884 - 46 46 46 86 86 86 2 2 6 2 2 6
58885 - 6 6 6 6 6 6 22 22 22 34 34 34
58886 - 6 6 6 2 2 6 2 2 6 2 2 6
58887 - 2 2 6 2 2 6 18 18 18 34 34 34
58888 - 10 10 10 50 50 50 22 22 22 2 2 6
58889 - 2 2 6 2 2 6 2 2 6 10 10 10
58890 - 86 86 86 42 42 42 14 14 14 0 0 0
58891 - 0 0 0 0 0 0 0 0 0 0 0 0
58892 - 0 0 0 0 0 0 0 0 0 0 0 0
58893 - 0 0 0 0 0 0 0 0 0 0 0 0
58894 - 0 0 0 0 0 0 0 0 0 0 0 0
58895 - 0 0 0 0 0 0 0 0 0 0 0 0
58896 - 0 0 0 0 0 0 0 0 0 0 0 0
58897 - 0 0 0 0 0 0 0 0 0 0 0 0
58898 - 0 0 1 0 0 1 0 0 1 0 0 0
58899 - 0 0 0 0 0 0 0 0 0 0 0 0
58900 - 0 0 0 0 0 0 0 0 0 0 0 0
58901 - 0 0 0 0 0 0 0 0 0 0 0 0
58902 - 0 0 0 0 0 0 0 0 0 0 0 0
58903 - 0 0 0 0 0 0 0 0 0 14 14 14
58904 - 46 46 46 86 86 86 2 2 6 2 2 6
58905 - 38 38 38 116 116 116 94 94 94 22 22 22
58906 - 22 22 22 2 2 6 2 2 6 2 2 6
58907 - 14 14 14 86 86 86 138 138 138 162 162 162
58908 -154 154 154 38 38 38 26 26 26 6 6 6
58909 - 2 2 6 2 2 6 2 2 6 2 2 6
58910 - 86 86 86 46 46 46 14 14 14 0 0 0
58911 - 0 0 0 0 0 0 0 0 0 0 0 0
58912 - 0 0 0 0 0 0 0 0 0 0 0 0
58913 - 0 0 0 0 0 0 0 0 0 0 0 0
58914 - 0 0 0 0 0 0 0 0 0 0 0 0
58915 - 0 0 0 0 0 0 0 0 0 0 0 0
58916 - 0 0 0 0 0 0 0 0 0 0 0 0
58917 - 0 0 0 0 0 0 0 0 0 0 0 0
58918 - 0 0 0 0 0 0 0 0 0 0 0 0
58919 - 0 0 0 0 0 0 0 0 0 0 0 0
58920 - 0 0 0 0 0 0 0 0 0 0 0 0
58921 - 0 0 0 0 0 0 0 0 0 0 0 0
58922 - 0 0 0 0 0 0 0 0 0 0 0 0
58923 - 0 0 0 0 0 0 0 0 0 14 14 14
58924 - 46 46 46 86 86 86 2 2 6 14 14 14
58925 -134 134 134 198 198 198 195 195 195 116 116 116
58926 - 10 10 10 2 2 6 2 2 6 6 6 6
58927 -101 98 89 187 187 187 210 210 210 218 218 218
58928 -214 214 214 134 134 134 14 14 14 6 6 6
58929 - 2 2 6 2 2 6 2 2 6 2 2 6
58930 - 86 86 86 50 50 50 18 18 18 6 6 6
58931 - 0 0 0 0 0 0 0 0 0 0 0 0
58932 - 0 0 0 0 0 0 0 0 0 0 0 0
58933 - 0 0 0 0 0 0 0 0 0 0 0 0
58934 - 0 0 0 0 0 0 0 0 0 0 0 0
58935 - 0 0 0 0 0 0 0 0 0 0 0 0
58936 - 0 0 0 0 0 0 0 0 0 0 0 0
58937 - 0 0 0 0 0 0 0 0 1 0 0 0
58938 - 0 0 1 0 0 1 0 0 1 0 0 0
58939 - 0 0 0 0 0 0 0 0 0 0 0 0
58940 - 0 0 0 0 0 0 0 0 0 0 0 0
58941 - 0 0 0 0 0 0 0 0 0 0 0 0
58942 - 0 0 0 0 0 0 0 0 0 0 0 0
58943 - 0 0 0 0 0 0 0 0 0 14 14 14
58944 - 46 46 46 86 86 86 2 2 6 54 54 54
58945 -218 218 218 195 195 195 226 226 226 246 246 246
58946 - 58 58 58 2 2 6 2 2 6 30 30 30
58947 -210 210 210 253 253 253 174 174 174 123 123 123
58948 -221 221 221 234 234 234 74 74 74 2 2 6
58949 - 2 2 6 2 2 6 2 2 6 2 2 6
58950 - 70 70 70 58 58 58 22 22 22 6 6 6
58951 - 0 0 0 0 0 0 0 0 0 0 0 0
58952 - 0 0 0 0 0 0 0 0 0 0 0 0
58953 - 0 0 0 0 0 0 0 0 0 0 0 0
58954 - 0 0 0 0 0 0 0 0 0 0 0 0
58955 - 0 0 0 0 0 0 0 0 0 0 0 0
58956 - 0 0 0 0 0 0 0 0 0 0 0 0
58957 - 0 0 0 0 0 0 0 0 0 0 0 0
58958 - 0 0 0 0 0 0 0 0 0 0 0 0
58959 - 0 0 0 0 0 0 0 0 0 0 0 0
58960 - 0 0 0 0 0 0 0 0 0 0 0 0
58961 - 0 0 0 0 0 0 0 0 0 0 0 0
58962 - 0 0 0 0 0 0 0 0 0 0 0 0
58963 - 0 0 0 0 0 0 0 0 0 14 14 14
58964 - 46 46 46 82 82 82 2 2 6 106 106 106
58965 -170 170 170 26 26 26 86 86 86 226 226 226
58966 -123 123 123 10 10 10 14 14 14 46 46 46
58967 -231 231 231 190 190 190 6 6 6 70 70 70
58968 - 90 90 90 238 238 238 158 158 158 2 2 6
58969 - 2 2 6 2 2 6 2 2 6 2 2 6
58970 - 70 70 70 58 58 58 22 22 22 6 6 6
58971 - 0 0 0 0 0 0 0 0 0 0 0 0
58972 - 0 0 0 0 0 0 0 0 0 0 0 0
58973 - 0 0 0 0 0 0 0 0 0 0 0 0
58974 - 0 0 0 0 0 0 0 0 0 0 0 0
58975 - 0 0 0 0 0 0 0 0 0 0 0 0
58976 - 0 0 0 0 0 0 0 0 0 0 0 0
58977 - 0 0 0 0 0 0 0 0 1 0 0 0
58978 - 0 0 1 0 0 1 0 0 1 0 0 0
58979 - 0 0 0 0 0 0 0 0 0 0 0 0
58980 - 0 0 0 0 0 0 0 0 0 0 0 0
58981 - 0 0 0 0 0 0 0 0 0 0 0 0
58982 - 0 0 0 0 0 0 0 0 0 0 0 0
58983 - 0 0 0 0 0 0 0 0 0 14 14 14
58984 - 42 42 42 86 86 86 6 6 6 116 116 116
58985 -106 106 106 6 6 6 70 70 70 149 149 149
58986 -128 128 128 18 18 18 38 38 38 54 54 54
58987 -221 221 221 106 106 106 2 2 6 14 14 14
58988 - 46 46 46 190 190 190 198 198 198 2 2 6
58989 - 2 2 6 2 2 6 2 2 6 2 2 6
58990 - 74 74 74 62 62 62 22 22 22 6 6 6
58991 - 0 0 0 0 0 0 0 0 0 0 0 0
58992 - 0 0 0 0 0 0 0 0 0 0 0 0
58993 - 0 0 0 0 0 0 0 0 0 0 0 0
58994 - 0 0 0 0 0 0 0 0 0 0 0 0
58995 - 0 0 0 0 0 0 0 0 0 0 0 0
58996 - 0 0 0 0 0 0 0 0 0 0 0 0
58997 - 0 0 0 0 0 0 0 0 1 0 0 0
58998 - 0 0 1 0 0 0 0 0 1 0 0 0
58999 - 0 0 0 0 0 0 0 0 0 0 0 0
59000 - 0 0 0 0 0 0 0 0 0 0 0 0
59001 - 0 0 0 0 0 0 0 0 0 0 0 0
59002 - 0 0 0 0 0 0 0 0 0 0 0 0
59003 - 0 0 0 0 0 0 0 0 0 14 14 14
59004 - 42 42 42 94 94 94 14 14 14 101 101 101
59005 -128 128 128 2 2 6 18 18 18 116 116 116
59006 -118 98 46 121 92 8 121 92 8 98 78 10
59007 -162 162 162 106 106 106 2 2 6 2 2 6
59008 - 2 2 6 195 195 195 195 195 195 6 6 6
59009 - 2 2 6 2 2 6 2 2 6 2 2 6
59010 - 74 74 74 62 62 62 22 22 22 6 6 6
59011 - 0 0 0 0 0 0 0 0 0 0 0 0
59012 - 0 0 0 0 0 0 0 0 0 0 0 0
59013 - 0 0 0 0 0 0 0 0 0 0 0 0
59014 - 0 0 0 0 0 0 0 0 0 0 0 0
59015 - 0 0 0 0 0 0 0 0 0 0 0 0
59016 - 0 0 0 0 0 0 0 0 0 0 0 0
59017 - 0 0 0 0 0 0 0 0 1 0 0 1
59018 - 0 0 1 0 0 0 0 0 1 0 0 0
59019 - 0 0 0 0 0 0 0 0 0 0 0 0
59020 - 0 0 0 0 0 0 0 0 0 0 0 0
59021 - 0 0 0 0 0 0 0 0 0 0 0 0
59022 - 0 0 0 0 0 0 0 0 0 0 0 0
59023 - 0 0 0 0 0 0 0 0 0 10 10 10
59024 - 38 38 38 90 90 90 14 14 14 58 58 58
59025 -210 210 210 26 26 26 54 38 6 154 114 10
59026 -226 170 11 236 186 11 225 175 15 184 144 12
59027 -215 174 15 175 146 61 37 26 9 2 2 6
59028 - 70 70 70 246 246 246 138 138 138 2 2 6
59029 - 2 2 6 2 2 6 2 2 6 2 2 6
59030 - 70 70 70 66 66 66 26 26 26 6 6 6
59031 - 0 0 0 0 0 0 0 0 0 0 0 0
59032 - 0 0 0 0 0 0 0 0 0 0 0 0
59033 - 0 0 0 0 0 0 0 0 0 0 0 0
59034 - 0 0 0 0 0 0 0 0 0 0 0 0
59035 - 0 0 0 0 0 0 0 0 0 0 0 0
59036 - 0 0 0 0 0 0 0 0 0 0 0 0
59037 - 0 0 0 0 0 0 0 0 0 0 0 0
59038 - 0 0 0 0 0 0 0 0 0 0 0 0
59039 - 0 0 0 0 0 0 0 0 0 0 0 0
59040 - 0 0 0 0 0 0 0 0 0 0 0 0
59041 - 0 0 0 0 0 0 0 0 0 0 0 0
59042 - 0 0 0 0 0 0 0 0 0 0 0 0
59043 - 0 0 0 0 0 0 0 0 0 10 10 10
59044 - 38 38 38 86 86 86 14 14 14 10 10 10
59045 -195 195 195 188 164 115 192 133 9 225 175 15
59046 -239 182 13 234 190 10 232 195 16 232 200 30
59047 -245 207 45 241 208 19 232 195 16 184 144 12
59048 -218 194 134 211 206 186 42 42 42 2 2 6
59049 - 2 2 6 2 2 6 2 2 6 2 2 6
59050 - 50 50 50 74 74 74 30 30 30 6 6 6
59051 - 0 0 0 0 0 0 0 0 0 0 0 0
59052 - 0 0 0 0 0 0 0 0 0 0 0 0
59053 - 0 0 0 0 0 0 0 0 0 0 0 0
59054 - 0 0 0 0 0 0 0 0 0 0 0 0
59055 - 0 0 0 0 0 0 0 0 0 0 0 0
59056 - 0 0 0 0 0 0 0 0 0 0 0 0
59057 - 0 0 0 0 0 0 0 0 0 0 0 0
59058 - 0 0 0 0 0 0 0 0 0 0 0 0
59059 - 0 0 0 0 0 0 0 0 0 0 0 0
59060 - 0 0 0 0 0 0 0 0 0 0 0 0
59061 - 0 0 0 0 0 0 0 0 0 0 0 0
59062 - 0 0 0 0 0 0 0 0 0 0 0 0
59063 - 0 0 0 0 0 0 0 0 0 10 10 10
59064 - 34 34 34 86 86 86 14 14 14 2 2 6
59065 -121 87 25 192 133 9 219 162 10 239 182 13
59066 -236 186 11 232 195 16 241 208 19 244 214 54
59067 -246 218 60 246 218 38 246 215 20 241 208 19
59068 -241 208 19 226 184 13 121 87 25 2 2 6
59069 - 2 2 6 2 2 6 2 2 6 2 2 6
59070 - 50 50 50 82 82 82 34 34 34 10 10 10
59071 - 0 0 0 0 0 0 0 0 0 0 0 0
59072 - 0 0 0 0 0 0 0 0 0 0 0 0
59073 - 0 0 0 0 0 0 0 0 0 0 0 0
59074 - 0 0 0 0 0 0 0 0 0 0 0 0
59075 - 0 0 0 0 0 0 0 0 0 0 0 0
59076 - 0 0 0 0 0 0 0 0 0 0 0 0
59077 - 0 0 0 0 0 0 0 0 0 0 0 0
59078 - 0 0 0 0 0 0 0 0 0 0 0 0
59079 - 0 0 0 0 0 0 0 0 0 0 0 0
59080 - 0 0 0 0 0 0 0 0 0 0 0 0
59081 - 0 0 0 0 0 0 0 0 0 0 0 0
59082 - 0 0 0 0 0 0 0 0 0 0 0 0
59083 - 0 0 0 0 0 0 0 0 0 10 10 10
59084 - 34 34 34 82 82 82 30 30 30 61 42 6
59085 -180 123 7 206 145 10 230 174 11 239 182 13
59086 -234 190 10 238 202 15 241 208 19 246 218 74
59087 -246 218 38 246 215 20 246 215 20 246 215 20
59088 -226 184 13 215 174 15 184 144 12 6 6 6
59089 - 2 2 6 2 2 6 2 2 6 2 2 6
59090 - 26 26 26 94 94 94 42 42 42 14 14 14
59091 - 0 0 0 0 0 0 0 0 0 0 0 0
59092 - 0 0 0 0 0 0 0 0 0 0 0 0
59093 - 0 0 0 0 0 0 0 0 0 0 0 0
59094 - 0 0 0 0 0 0 0 0 0 0 0 0
59095 - 0 0 0 0 0 0 0 0 0 0 0 0
59096 - 0 0 0 0 0 0 0 0 0 0 0 0
59097 - 0 0 0 0 0 0 0 0 0 0 0 0
59098 - 0 0 0 0 0 0 0 0 0 0 0 0
59099 - 0 0 0 0 0 0 0 0 0 0 0 0
59100 - 0 0 0 0 0 0 0 0 0 0 0 0
59101 - 0 0 0 0 0 0 0 0 0 0 0 0
59102 - 0 0 0 0 0 0 0 0 0 0 0 0
59103 - 0 0 0 0 0 0 0 0 0 10 10 10
59104 - 30 30 30 78 78 78 50 50 50 104 69 6
59105 -192 133 9 216 158 10 236 178 12 236 186 11
59106 -232 195 16 241 208 19 244 214 54 245 215 43
59107 -246 215 20 246 215 20 241 208 19 198 155 10
59108 -200 144 11 216 158 10 156 118 10 2 2 6
59109 - 2 2 6 2 2 6 2 2 6 2 2 6
59110 - 6 6 6 90 90 90 54 54 54 18 18 18
59111 - 6 6 6 0 0 0 0 0 0 0 0 0
59112 - 0 0 0 0 0 0 0 0 0 0 0 0
59113 - 0 0 0 0 0 0 0 0 0 0 0 0
59114 - 0 0 0 0 0 0 0 0 0 0 0 0
59115 - 0 0 0 0 0 0 0 0 0 0 0 0
59116 - 0 0 0 0 0 0 0 0 0 0 0 0
59117 - 0 0 0 0 0 0 0 0 0 0 0 0
59118 - 0 0 0 0 0 0 0 0 0 0 0 0
59119 - 0 0 0 0 0 0 0 0 0 0 0 0
59120 - 0 0 0 0 0 0 0 0 0 0 0 0
59121 - 0 0 0 0 0 0 0 0 0 0 0 0
59122 - 0 0 0 0 0 0 0 0 0 0 0 0
59123 - 0 0 0 0 0 0 0 0 0 10 10 10
59124 - 30 30 30 78 78 78 46 46 46 22 22 22
59125 -137 92 6 210 162 10 239 182 13 238 190 10
59126 -238 202 15 241 208 19 246 215 20 246 215 20
59127 -241 208 19 203 166 17 185 133 11 210 150 10
59128 -216 158 10 210 150 10 102 78 10 2 2 6
59129 - 6 6 6 54 54 54 14 14 14 2 2 6
59130 - 2 2 6 62 62 62 74 74 74 30 30 30
59131 - 10 10 10 0 0 0 0 0 0 0 0 0
59132 - 0 0 0 0 0 0 0 0 0 0 0 0
59133 - 0 0 0 0 0 0 0 0 0 0 0 0
59134 - 0 0 0 0 0 0 0 0 0 0 0 0
59135 - 0 0 0 0 0 0 0 0 0 0 0 0
59136 - 0 0 0 0 0 0 0 0 0 0 0 0
59137 - 0 0 0 0 0 0 0 0 0 0 0 0
59138 - 0 0 0 0 0 0 0 0 0 0 0 0
59139 - 0 0 0 0 0 0 0 0 0 0 0 0
59140 - 0 0 0 0 0 0 0 0 0 0 0 0
59141 - 0 0 0 0 0 0 0 0 0 0 0 0
59142 - 0 0 0 0 0 0 0 0 0 0 0 0
59143 - 0 0 0 0 0 0 0 0 0 10 10 10
59144 - 34 34 34 78 78 78 50 50 50 6 6 6
59145 - 94 70 30 139 102 15 190 146 13 226 184 13
59146 -232 200 30 232 195 16 215 174 15 190 146 13
59147 -168 122 10 192 133 9 210 150 10 213 154 11
59148 -202 150 34 182 157 106 101 98 89 2 2 6
59149 - 2 2 6 78 78 78 116 116 116 58 58 58
59150 - 2 2 6 22 22 22 90 90 90 46 46 46
59151 - 18 18 18 6 6 6 0 0 0 0 0 0
59152 - 0 0 0 0 0 0 0 0 0 0 0 0
59153 - 0 0 0 0 0 0 0 0 0 0 0 0
59154 - 0 0 0 0 0 0 0 0 0 0 0 0
59155 - 0 0 0 0 0 0 0 0 0 0 0 0
59156 - 0 0 0 0 0 0 0 0 0 0 0 0
59157 - 0 0 0 0 0 0 0 0 0 0 0 0
59158 - 0 0 0 0 0 0 0 0 0 0 0 0
59159 - 0 0 0 0 0 0 0 0 0 0 0 0
59160 - 0 0 0 0 0 0 0 0 0 0 0 0
59161 - 0 0 0 0 0 0 0 0 0 0 0 0
59162 - 0 0 0 0 0 0 0 0 0 0 0 0
59163 - 0 0 0 0 0 0 0 0 0 10 10 10
59164 - 38 38 38 86 86 86 50 50 50 6 6 6
59165 -128 128 128 174 154 114 156 107 11 168 122 10
59166 -198 155 10 184 144 12 197 138 11 200 144 11
59167 -206 145 10 206 145 10 197 138 11 188 164 115
59168 -195 195 195 198 198 198 174 174 174 14 14 14
59169 - 2 2 6 22 22 22 116 116 116 116 116 116
59170 - 22 22 22 2 2 6 74 74 74 70 70 70
59171 - 30 30 30 10 10 10 0 0 0 0 0 0
59172 - 0 0 0 0 0 0 0 0 0 0 0 0
59173 - 0 0 0 0 0 0 0 0 0 0 0 0
59174 - 0 0 0 0 0 0 0 0 0 0 0 0
59175 - 0 0 0 0 0 0 0 0 0 0 0 0
59176 - 0 0 0 0 0 0 0 0 0 0 0 0
59177 - 0 0 0 0 0 0 0 0 0 0 0 0
59178 - 0 0 0 0 0 0 0 0 0 0 0 0
59179 - 0 0 0 0 0 0 0 0 0 0 0 0
59180 - 0 0 0 0 0 0 0 0 0 0 0 0
59181 - 0 0 0 0 0 0 0 0 0 0 0 0
59182 - 0 0 0 0 0 0 0 0 0 0 0 0
59183 - 0 0 0 0 0 0 6 6 6 18 18 18
59184 - 50 50 50 101 101 101 26 26 26 10 10 10
59185 -138 138 138 190 190 190 174 154 114 156 107 11
59186 -197 138 11 200 144 11 197 138 11 192 133 9
59187 -180 123 7 190 142 34 190 178 144 187 187 187
59188 -202 202 202 221 221 221 214 214 214 66 66 66
59189 - 2 2 6 2 2 6 50 50 50 62 62 62
59190 - 6 6 6 2 2 6 10 10 10 90 90 90
59191 - 50 50 50 18 18 18 6 6 6 0 0 0
59192 - 0 0 0 0 0 0 0 0 0 0 0 0
59193 - 0 0 0 0 0 0 0 0 0 0 0 0
59194 - 0 0 0 0 0 0 0 0 0 0 0 0
59195 - 0 0 0 0 0 0 0 0 0 0 0 0
59196 - 0 0 0 0 0 0 0 0 0 0 0 0
59197 - 0 0 0 0 0 0 0 0 0 0 0 0
59198 - 0 0 0 0 0 0 0 0 0 0 0 0
59199 - 0 0 0 0 0 0 0 0 0 0 0 0
59200 - 0 0 0 0 0 0 0 0 0 0 0 0
59201 - 0 0 0 0 0 0 0 0 0 0 0 0
59202 - 0 0 0 0 0 0 0 0 0 0 0 0
59203 - 0 0 0 0 0 0 10 10 10 34 34 34
59204 - 74 74 74 74 74 74 2 2 6 6 6 6
59205 -144 144 144 198 198 198 190 190 190 178 166 146
59206 -154 121 60 156 107 11 156 107 11 168 124 44
59207 -174 154 114 187 187 187 190 190 190 210 210 210
59208 -246 246 246 253 253 253 253 253 253 182 182 182
59209 - 6 6 6 2 2 6 2 2 6 2 2 6
59210 - 2 2 6 2 2 6 2 2 6 62 62 62
59211 - 74 74 74 34 34 34 14 14 14 0 0 0
59212 - 0 0 0 0 0 0 0 0 0 0 0 0
59213 - 0 0 0 0 0 0 0 0 0 0 0 0
59214 - 0 0 0 0 0 0 0 0 0 0 0 0
59215 - 0 0 0 0 0 0 0 0 0 0 0 0
59216 - 0 0 0 0 0 0 0 0 0 0 0 0
59217 - 0 0 0 0 0 0 0 0 0 0 0 0
59218 - 0 0 0 0 0 0 0 0 0 0 0 0
59219 - 0 0 0 0 0 0 0 0 0 0 0 0
59220 - 0 0 0 0 0 0 0 0 0 0 0 0
59221 - 0 0 0 0 0 0 0 0 0 0 0 0
59222 - 0 0 0 0 0 0 0 0 0 0 0 0
59223 - 0 0 0 10 10 10 22 22 22 54 54 54
59224 - 94 94 94 18 18 18 2 2 6 46 46 46
59225 -234 234 234 221 221 221 190 190 190 190 190 190
59226 -190 190 190 187 187 187 187 187 187 190 190 190
59227 -190 190 190 195 195 195 214 214 214 242 242 242
59228 -253 253 253 253 253 253 253 253 253 253 253 253
59229 - 82 82 82 2 2 6 2 2 6 2 2 6
59230 - 2 2 6 2 2 6 2 2 6 14 14 14
59231 - 86 86 86 54 54 54 22 22 22 6 6 6
59232 - 0 0 0 0 0 0 0 0 0 0 0 0
59233 - 0 0 0 0 0 0 0 0 0 0 0 0
59234 - 0 0 0 0 0 0 0 0 0 0 0 0
59235 - 0 0 0 0 0 0 0 0 0 0 0 0
59236 - 0 0 0 0 0 0 0 0 0 0 0 0
59237 - 0 0 0 0 0 0 0 0 0 0 0 0
59238 - 0 0 0 0 0 0 0 0 0 0 0 0
59239 - 0 0 0 0 0 0 0 0 0 0 0 0
59240 - 0 0 0 0 0 0 0 0 0 0 0 0
59241 - 0 0 0 0 0 0 0 0 0 0 0 0
59242 - 0 0 0 0 0 0 0 0 0 0 0 0
59243 - 6 6 6 18 18 18 46 46 46 90 90 90
59244 - 46 46 46 18 18 18 6 6 6 182 182 182
59245 -253 253 253 246 246 246 206 206 206 190 190 190
59246 -190 190 190 190 190 190 190 190 190 190 190 190
59247 -206 206 206 231 231 231 250 250 250 253 253 253
59248 -253 253 253 253 253 253 253 253 253 253 253 253
59249 -202 202 202 14 14 14 2 2 6 2 2 6
59250 - 2 2 6 2 2 6 2 2 6 2 2 6
59251 - 42 42 42 86 86 86 42 42 42 18 18 18
59252 - 6 6 6 0 0 0 0 0 0 0 0 0
59253 - 0 0 0 0 0 0 0 0 0 0 0 0
59254 - 0 0 0 0 0 0 0 0 0 0 0 0
59255 - 0 0 0 0 0 0 0 0 0 0 0 0
59256 - 0 0 0 0 0 0 0 0 0 0 0 0
59257 - 0 0 0 0 0 0 0 0 0 0 0 0
59258 - 0 0 0 0 0 0 0 0 0 0 0 0
59259 - 0 0 0 0 0 0 0 0 0 0 0 0
59260 - 0 0 0 0 0 0 0 0 0 0 0 0
59261 - 0 0 0 0 0 0 0 0 0 0 0 0
59262 - 0 0 0 0 0 0 0 0 0 6 6 6
59263 - 14 14 14 38 38 38 74 74 74 66 66 66
59264 - 2 2 6 6 6 6 90 90 90 250 250 250
59265 -253 253 253 253 253 253 238 238 238 198 198 198
59266 -190 190 190 190 190 190 195 195 195 221 221 221
59267 -246 246 246 253 253 253 253 253 253 253 253 253
59268 -253 253 253 253 253 253 253 253 253 253 253 253
59269 -253 253 253 82 82 82 2 2 6 2 2 6
59270 - 2 2 6 2 2 6 2 2 6 2 2 6
59271 - 2 2 6 78 78 78 70 70 70 34 34 34
59272 - 14 14 14 6 6 6 0 0 0 0 0 0
59273 - 0 0 0 0 0 0 0 0 0 0 0 0
59274 - 0 0 0 0 0 0 0 0 0 0 0 0
59275 - 0 0 0 0 0 0 0 0 0 0 0 0
59276 - 0 0 0 0 0 0 0 0 0 0 0 0
59277 - 0 0 0 0 0 0 0 0 0 0 0 0
59278 - 0 0 0 0 0 0 0 0 0 0 0 0
59279 - 0 0 0 0 0 0 0 0 0 0 0 0
59280 - 0 0 0 0 0 0 0 0 0 0 0 0
59281 - 0 0 0 0 0 0 0 0 0 0 0 0
59282 - 0 0 0 0 0 0 0 0 0 14 14 14
59283 - 34 34 34 66 66 66 78 78 78 6 6 6
59284 - 2 2 6 18 18 18 218 218 218 253 253 253
59285 -253 253 253 253 253 253 253 253 253 246 246 246
59286 -226 226 226 231 231 231 246 246 246 253 253 253
59287 -253 253 253 253 253 253 253 253 253 253 253 253
59288 -253 253 253 253 253 253 253 253 253 253 253 253
59289 -253 253 253 178 178 178 2 2 6 2 2 6
59290 - 2 2 6 2 2 6 2 2 6 2 2 6
59291 - 2 2 6 18 18 18 90 90 90 62 62 62
59292 - 30 30 30 10 10 10 0 0 0 0 0 0
59293 - 0 0 0 0 0 0 0 0 0 0 0 0
59294 - 0 0 0 0 0 0 0 0 0 0 0 0
59295 - 0 0 0 0 0 0 0 0 0 0 0 0
59296 - 0 0 0 0 0 0 0 0 0 0 0 0
59297 - 0 0 0 0 0 0 0 0 0 0 0 0
59298 - 0 0 0 0 0 0 0 0 0 0 0 0
59299 - 0 0 0 0 0 0 0 0 0 0 0 0
59300 - 0 0 0 0 0 0 0 0 0 0 0 0
59301 - 0 0 0 0 0 0 0 0 0 0 0 0
59302 - 0 0 0 0 0 0 10 10 10 26 26 26
59303 - 58 58 58 90 90 90 18 18 18 2 2 6
59304 - 2 2 6 110 110 110 253 253 253 253 253 253
59305 -253 253 253 253 253 253 253 253 253 253 253 253
59306 -250 250 250 253 253 253 253 253 253 253 253 253
59307 -253 253 253 253 253 253 253 253 253 253 253 253
59308 -253 253 253 253 253 253 253 253 253 253 253 253
59309 -253 253 253 231 231 231 18 18 18 2 2 6
59310 - 2 2 6 2 2 6 2 2 6 2 2 6
59311 - 2 2 6 2 2 6 18 18 18 94 94 94
59312 - 54 54 54 26 26 26 10 10 10 0 0 0
59313 - 0 0 0 0 0 0 0 0 0 0 0 0
59314 - 0 0 0 0 0 0 0 0 0 0 0 0
59315 - 0 0 0 0 0 0 0 0 0 0 0 0
59316 - 0 0 0 0 0 0 0 0 0 0 0 0
59317 - 0 0 0 0 0 0 0 0 0 0 0 0
59318 - 0 0 0 0 0 0 0 0 0 0 0 0
59319 - 0 0 0 0 0 0 0 0 0 0 0 0
59320 - 0 0 0 0 0 0 0 0 0 0 0 0
59321 - 0 0 0 0 0 0 0 0 0 0 0 0
59322 - 0 0 0 6 6 6 22 22 22 50 50 50
59323 - 90 90 90 26 26 26 2 2 6 2 2 6
59324 - 14 14 14 195 195 195 250 250 250 253 253 253
59325 -253 253 253 253 253 253 253 253 253 253 253 253
59326 -253 253 253 253 253 253 253 253 253 253 253 253
59327 -253 253 253 253 253 253 253 253 253 253 253 253
59328 -253 253 253 253 253 253 253 253 253 253 253 253
59329 -250 250 250 242 242 242 54 54 54 2 2 6
59330 - 2 2 6 2 2 6 2 2 6 2 2 6
59331 - 2 2 6 2 2 6 2 2 6 38 38 38
59332 - 86 86 86 50 50 50 22 22 22 6 6 6
59333 - 0 0 0 0 0 0 0 0 0 0 0 0
59334 - 0 0 0 0 0 0 0 0 0 0 0 0
59335 - 0 0 0 0 0 0 0 0 0 0 0 0
59336 - 0 0 0 0 0 0 0 0 0 0 0 0
59337 - 0 0 0 0 0 0 0 0 0 0 0 0
59338 - 0 0 0 0 0 0 0 0 0 0 0 0
59339 - 0 0 0 0 0 0 0 0 0 0 0 0
59340 - 0 0 0 0 0 0 0 0 0 0 0 0
59341 - 0 0 0 0 0 0 0 0 0 0 0 0
59342 - 6 6 6 14 14 14 38 38 38 82 82 82
59343 - 34 34 34 2 2 6 2 2 6 2 2 6
59344 - 42 42 42 195 195 195 246 246 246 253 253 253
59345 -253 253 253 253 253 253 253 253 253 250 250 250
59346 -242 242 242 242 242 242 250 250 250 253 253 253
59347 -253 253 253 253 253 253 253 253 253 253 253 253
59348 -253 253 253 250 250 250 246 246 246 238 238 238
59349 -226 226 226 231 231 231 101 101 101 6 6 6
59350 - 2 2 6 2 2 6 2 2 6 2 2 6
59351 - 2 2 6 2 2 6 2 2 6 2 2 6
59352 - 38 38 38 82 82 82 42 42 42 14 14 14
59353 - 6 6 6 0 0 0 0 0 0 0 0 0
59354 - 0 0 0 0 0 0 0 0 0 0 0 0
59355 - 0 0 0 0 0 0 0 0 0 0 0 0
59356 - 0 0 0 0 0 0 0 0 0 0 0 0
59357 - 0 0 0 0 0 0 0 0 0 0 0 0
59358 - 0 0 0 0 0 0 0 0 0 0 0 0
59359 - 0 0 0 0 0 0 0 0 0 0 0 0
59360 - 0 0 0 0 0 0 0 0 0 0 0 0
59361 - 0 0 0 0 0 0 0 0 0 0 0 0
59362 - 10 10 10 26 26 26 62 62 62 66 66 66
59363 - 2 2 6 2 2 6 2 2 6 6 6 6
59364 - 70 70 70 170 170 170 206 206 206 234 234 234
59365 -246 246 246 250 250 250 250 250 250 238 238 238
59366 -226 226 226 231 231 231 238 238 238 250 250 250
59367 -250 250 250 250 250 250 246 246 246 231 231 231
59368 -214 214 214 206 206 206 202 202 202 202 202 202
59369 -198 198 198 202 202 202 182 182 182 18 18 18
59370 - 2 2 6 2 2 6 2 2 6 2 2 6
59371 - 2 2 6 2 2 6 2 2 6 2 2 6
59372 - 2 2 6 62 62 62 66 66 66 30 30 30
59373 - 10 10 10 0 0 0 0 0 0 0 0 0
59374 - 0 0 0 0 0 0 0 0 0 0 0 0
59375 - 0 0 0 0 0 0 0 0 0 0 0 0
59376 - 0 0 0 0 0 0 0 0 0 0 0 0
59377 - 0 0 0 0 0 0 0 0 0 0 0 0
59378 - 0 0 0 0 0 0 0 0 0 0 0 0
59379 - 0 0 0 0 0 0 0 0 0 0 0 0
59380 - 0 0 0 0 0 0 0 0 0 0 0 0
59381 - 0 0 0 0 0 0 0 0 0 0 0 0
59382 - 14 14 14 42 42 42 82 82 82 18 18 18
59383 - 2 2 6 2 2 6 2 2 6 10 10 10
59384 - 94 94 94 182 182 182 218 218 218 242 242 242
59385 -250 250 250 253 253 253 253 253 253 250 250 250
59386 -234 234 234 253 253 253 253 253 253 253 253 253
59387 -253 253 253 253 253 253 253 253 253 246 246 246
59388 -238 238 238 226 226 226 210 210 210 202 202 202
59389 -195 195 195 195 195 195 210 210 210 158 158 158
59390 - 6 6 6 14 14 14 50 50 50 14 14 14
59391 - 2 2 6 2 2 6 2 2 6 2 2 6
59392 - 2 2 6 6 6 6 86 86 86 46 46 46
59393 - 18 18 18 6 6 6 0 0 0 0 0 0
59394 - 0 0 0 0 0 0 0 0 0 0 0 0
59395 - 0 0 0 0 0 0 0 0 0 0 0 0
59396 - 0 0 0 0 0 0 0 0 0 0 0 0
59397 - 0 0 0 0 0 0 0 0 0 0 0 0
59398 - 0 0 0 0 0 0 0 0 0 0 0 0
59399 - 0 0 0 0 0 0 0 0 0 0 0 0
59400 - 0 0 0 0 0 0 0 0 0 0 0 0
59401 - 0 0 0 0 0 0 0 0 0 6 6 6
59402 - 22 22 22 54 54 54 70 70 70 2 2 6
59403 - 2 2 6 10 10 10 2 2 6 22 22 22
59404 -166 166 166 231 231 231 250 250 250 253 253 253
59405 -253 253 253 253 253 253 253 253 253 250 250 250
59406 -242 242 242 253 253 253 253 253 253 253 253 253
59407 -253 253 253 253 253 253 253 253 253 253 253 253
59408 -253 253 253 253 253 253 253 253 253 246 246 246
59409 -231 231 231 206 206 206 198 198 198 226 226 226
59410 - 94 94 94 2 2 6 6 6 6 38 38 38
59411 - 30 30 30 2 2 6 2 2 6 2 2 6
59412 - 2 2 6 2 2 6 62 62 62 66 66 66
59413 - 26 26 26 10 10 10 0 0 0 0 0 0
59414 - 0 0 0 0 0 0 0 0 0 0 0 0
59415 - 0 0 0 0 0 0 0 0 0 0 0 0
59416 - 0 0 0 0 0 0 0 0 0 0 0 0
59417 - 0 0 0 0 0 0 0 0 0 0 0 0
59418 - 0 0 0 0 0 0 0 0 0 0 0 0
59419 - 0 0 0 0 0 0 0 0 0 0 0 0
59420 - 0 0 0 0 0 0 0 0 0 0 0 0
59421 - 0 0 0 0 0 0 0 0 0 10 10 10
59422 - 30 30 30 74 74 74 50 50 50 2 2 6
59423 - 26 26 26 26 26 26 2 2 6 106 106 106
59424 -238 238 238 253 253 253 253 253 253 253 253 253
59425 -253 253 253 253 253 253 253 253 253 253 253 253
59426 -253 253 253 253 253 253 253 253 253 253 253 253
59427 -253 253 253 253 253 253 253 253 253 253 253 253
59428 -253 253 253 253 253 253 253 253 253 253 253 253
59429 -253 253 253 246 246 246 218 218 218 202 202 202
59430 -210 210 210 14 14 14 2 2 6 2 2 6
59431 - 30 30 30 22 22 22 2 2 6 2 2 6
59432 - 2 2 6 2 2 6 18 18 18 86 86 86
59433 - 42 42 42 14 14 14 0 0 0 0 0 0
59434 - 0 0 0 0 0 0 0 0 0 0 0 0
59435 - 0 0 0 0 0 0 0 0 0 0 0 0
59436 - 0 0 0 0 0 0 0 0 0 0 0 0
59437 - 0 0 0 0 0 0 0 0 0 0 0 0
59438 - 0 0 0 0 0 0 0 0 0 0 0 0
59439 - 0 0 0 0 0 0 0 0 0 0 0 0
59440 - 0 0 0 0 0 0 0 0 0 0 0 0
59441 - 0 0 0 0 0 0 0 0 0 14 14 14
59442 - 42 42 42 90 90 90 22 22 22 2 2 6
59443 - 42 42 42 2 2 6 18 18 18 218 218 218
59444 -253 253 253 253 253 253 253 253 253 253 253 253
59445 -253 253 253 253 253 253 253 253 253 253 253 253
59446 -253 253 253 253 253 253 253 253 253 253 253 253
59447 -253 253 253 253 253 253 253 253 253 253 253 253
59448 -253 253 253 253 253 253 253 253 253 253 253 253
59449 -253 253 253 253 253 253 250 250 250 221 221 221
59450 -218 218 218 101 101 101 2 2 6 14 14 14
59451 - 18 18 18 38 38 38 10 10 10 2 2 6
59452 - 2 2 6 2 2 6 2 2 6 78 78 78
59453 - 58 58 58 22 22 22 6 6 6 0 0 0
59454 - 0 0 0 0 0 0 0 0 0 0 0 0
59455 - 0 0 0 0 0 0 0 0 0 0 0 0
59456 - 0 0 0 0 0 0 0 0 0 0 0 0
59457 - 0 0 0 0 0 0 0 0 0 0 0 0
59458 - 0 0 0 0 0 0 0 0 0 0 0 0
59459 - 0 0 0 0 0 0 0 0 0 0 0 0
59460 - 0 0 0 0 0 0 0 0 0 0 0 0
59461 - 0 0 0 0 0 0 6 6 6 18 18 18
59462 - 54 54 54 82 82 82 2 2 6 26 26 26
59463 - 22 22 22 2 2 6 123 123 123 253 253 253
59464 -253 253 253 253 253 253 253 253 253 253 253 253
59465 -253 253 253 253 253 253 253 253 253 253 253 253
59466 -253 253 253 253 253 253 253 253 253 253 253 253
59467 -253 253 253 253 253 253 253 253 253 253 253 253
59468 -253 253 253 253 253 253 253 253 253 253 253 253
59469 -253 253 253 253 253 253 253 253 253 250 250 250
59470 -238 238 238 198 198 198 6 6 6 38 38 38
59471 - 58 58 58 26 26 26 38 38 38 2 2 6
59472 - 2 2 6 2 2 6 2 2 6 46 46 46
59473 - 78 78 78 30 30 30 10 10 10 0 0 0
59474 - 0 0 0 0 0 0 0 0 0 0 0 0
59475 - 0 0 0 0 0 0 0 0 0 0 0 0
59476 - 0 0 0 0 0 0 0 0 0 0 0 0
59477 - 0 0 0 0 0 0 0 0 0 0 0 0
59478 - 0 0 0 0 0 0 0 0 0 0 0 0
59479 - 0 0 0 0 0 0 0 0 0 0 0 0
59480 - 0 0 0 0 0 0 0 0 0 0 0 0
59481 - 0 0 0 0 0 0 10 10 10 30 30 30
59482 - 74 74 74 58 58 58 2 2 6 42 42 42
59483 - 2 2 6 22 22 22 231 231 231 253 253 253
59484 -253 253 253 253 253 253 253 253 253 253 253 253
59485 -253 253 253 253 253 253 253 253 253 250 250 250
59486 -253 253 253 253 253 253 253 253 253 253 253 253
59487 -253 253 253 253 253 253 253 253 253 253 253 253
59488 -253 253 253 253 253 253 253 253 253 253 253 253
59489 -253 253 253 253 253 253 253 253 253 253 253 253
59490 -253 253 253 246 246 246 46 46 46 38 38 38
59491 - 42 42 42 14 14 14 38 38 38 14 14 14
59492 - 2 2 6 2 2 6 2 2 6 6 6 6
59493 - 86 86 86 46 46 46 14 14 14 0 0 0
59494 - 0 0 0 0 0 0 0 0 0 0 0 0
59495 - 0 0 0 0 0 0 0 0 0 0 0 0
59496 - 0 0 0 0 0 0 0 0 0 0 0 0
59497 - 0 0 0 0 0 0 0 0 0 0 0 0
59498 - 0 0 0 0 0 0 0 0 0 0 0 0
59499 - 0 0 0 0 0 0 0 0 0 0 0 0
59500 - 0 0 0 0 0 0 0 0 0 0 0 0
59501 - 0 0 0 6 6 6 14 14 14 42 42 42
59502 - 90 90 90 18 18 18 18 18 18 26 26 26
59503 - 2 2 6 116 116 116 253 253 253 253 253 253
59504 -253 253 253 253 253 253 253 253 253 253 253 253
59505 -253 253 253 253 253 253 250 250 250 238 238 238
59506 -253 253 253 253 253 253 253 253 253 253 253 253
59507 -253 253 253 253 253 253 253 253 253 253 253 253
59508 -253 253 253 253 253 253 253 253 253 253 253 253
59509 -253 253 253 253 253 253 253 253 253 253 253 253
59510 -253 253 253 253 253 253 94 94 94 6 6 6
59511 - 2 2 6 2 2 6 10 10 10 34 34 34
59512 - 2 2 6 2 2 6 2 2 6 2 2 6
59513 - 74 74 74 58 58 58 22 22 22 6 6 6
59514 - 0 0 0 0 0 0 0 0 0 0 0 0
59515 - 0 0 0 0 0 0 0 0 0 0 0 0
59516 - 0 0 0 0 0 0 0 0 0 0 0 0
59517 - 0 0 0 0 0 0 0 0 0 0 0 0
59518 - 0 0 0 0 0 0 0 0 0 0 0 0
59519 - 0 0 0 0 0 0 0 0 0 0 0 0
59520 - 0 0 0 0 0 0 0 0 0 0 0 0
59521 - 0 0 0 10 10 10 26 26 26 66 66 66
59522 - 82 82 82 2 2 6 38 38 38 6 6 6
59523 - 14 14 14 210 210 210 253 253 253 253 253 253
59524 -253 253 253 253 253 253 253 253 253 253 253 253
59525 -253 253 253 253 253 253 246 246 246 242 242 242
59526 -253 253 253 253 253 253 253 253 253 253 253 253
59527 -253 253 253 253 253 253 253 253 253 253 253 253
59528 -253 253 253 253 253 253 253 253 253 253 253 253
59529 -253 253 253 253 253 253 253 253 253 253 253 253
59530 -253 253 253 253 253 253 144 144 144 2 2 6
59531 - 2 2 6 2 2 6 2 2 6 46 46 46
59532 - 2 2 6 2 2 6 2 2 6 2 2 6
59533 - 42 42 42 74 74 74 30 30 30 10 10 10
59534 - 0 0 0 0 0 0 0 0 0 0 0 0
59535 - 0 0 0 0 0 0 0 0 0 0 0 0
59536 - 0 0 0 0 0 0 0 0 0 0 0 0
59537 - 0 0 0 0 0 0 0 0 0 0 0 0
59538 - 0 0 0 0 0 0 0 0 0 0 0 0
59539 - 0 0 0 0 0 0 0 0 0 0 0 0
59540 - 0 0 0 0 0 0 0 0 0 0 0 0
59541 - 6 6 6 14 14 14 42 42 42 90 90 90
59542 - 26 26 26 6 6 6 42 42 42 2 2 6
59543 - 74 74 74 250 250 250 253 253 253 253 253 253
59544 -253 253 253 253 253 253 253 253 253 253 253 253
59545 -253 253 253 253 253 253 242 242 242 242 242 242
59546 -253 253 253 253 253 253 253 253 253 253 253 253
59547 -253 253 253 253 253 253 253 253 253 253 253 253
59548 -253 253 253 253 253 253 253 253 253 253 253 253
59549 -253 253 253 253 253 253 253 253 253 253 253 253
59550 -253 253 253 253 253 253 182 182 182 2 2 6
59551 - 2 2 6 2 2 6 2 2 6 46 46 46
59552 - 2 2 6 2 2 6 2 2 6 2 2 6
59553 - 10 10 10 86 86 86 38 38 38 10 10 10
59554 - 0 0 0 0 0 0 0 0 0 0 0 0
59555 - 0 0 0 0 0 0 0 0 0 0 0 0
59556 - 0 0 0 0 0 0 0 0 0 0 0 0
59557 - 0 0 0 0 0 0 0 0 0 0 0 0
59558 - 0 0 0 0 0 0 0 0 0 0 0 0
59559 - 0 0 0 0 0 0 0 0 0 0 0 0
59560 - 0 0 0 0 0 0 0 0 0 0 0 0
59561 - 10 10 10 26 26 26 66 66 66 82 82 82
59562 - 2 2 6 22 22 22 18 18 18 2 2 6
59563 -149 149 149 253 253 253 253 253 253 253 253 253
59564 -253 253 253 253 253 253 253 253 253 253 253 253
59565 -253 253 253 253 253 253 234 234 234 242 242 242
59566 -253 253 253 253 253 253 253 253 253 253 253 253
59567 -253 253 253 253 253 253 253 253 253 253 253 253
59568 -253 253 253 253 253 253 253 253 253 253 253 253
59569 -253 253 253 253 253 253 253 253 253 253 253 253
59570 -253 253 253 253 253 253 206 206 206 2 2 6
59571 - 2 2 6 2 2 6 2 2 6 38 38 38
59572 - 2 2 6 2 2 6 2 2 6 2 2 6
59573 - 6 6 6 86 86 86 46 46 46 14 14 14
59574 - 0 0 0 0 0 0 0 0 0 0 0 0
59575 - 0 0 0 0 0 0 0 0 0 0 0 0
59576 - 0 0 0 0 0 0 0 0 0 0 0 0
59577 - 0 0 0 0 0 0 0 0 0 0 0 0
59578 - 0 0 0 0 0 0 0 0 0 0 0 0
59579 - 0 0 0 0 0 0 0 0 0 0 0 0
59580 - 0 0 0 0 0 0 0 0 0 6 6 6
59581 - 18 18 18 46 46 46 86 86 86 18 18 18
59582 - 2 2 6 34 34 34 10 10 10 6 6 6
59583 -210 210 210 253 253 253 253 253 253 253 253 253
59584 -253 253 253 253 253 253 253 253 253 253 253 253
59585 -253 253 253 253 253 253 234 234 234 242 242 242
59586 -253 253 253 253 253 253 253 253 253 253 253 253
59587 -253 253 253 253 253 253 253 253 253 253 253 253
59588 -253 253 253 253 253 253 253 253 253 253 253 253
59589 -253 253 253 253 253 253 253 253 253 253 253 253
59590 -253 253 253 253 253 253 221 221 221 6 6 6
59591 - 2 2 6 2 2 6 6 6 6 30 30 30
59592 - 2 2 6 2 2 6 2 2 6 2 2 6
59593 - 2 2 6 82 82 82 54 54 54 18 18 18
59594 - 6 6 6 0 0 0 0 0 0 0 0 0
59595 - 0 0 0 0 0 0 0 0 0 0 0 0
59596 - 0 0 0 0 0 0 0 0 0 0 0 0
59597 - 0 0 0 0 0 0 0 0 0 0 0 0
59598 - 0 0 0 0 0 0 0 0 0 0 0 0
59599 - 0 0 0 0 0 0 0 0 0 0 0 0
59600 - 0 0 0 0 0 0 0 0 0 10 10 10
59601 - 26 26 26 66 66 66 62 62 62 2 2 6
59602 - 2 2 6 38 38 38 10 10 10 26 26 26
59603 -238 238 238 253 253 253 253 253 253 253 253 253
59604 -253 253 253 253 253 253 253 253 253 253 253 253
59605 -253 253 253 253 253 253 231 231 231 238 238 238
59606 -253 253 253 253 253 253 253 253 253 253 253 253
59607 -253 253 253 253 253 253 253 253 253 253 253 253
59608 -253 253 253 253 253 253 253 253 253 253 253 253
59609 -253 253 253 253 253 253 253 253 253 253 253 253
59610 -253 253 253 253 253 253 231 231 231 6 6 6
59611 - 2 2 6 2 2 6 10 10 10 30 30 30
59612 - 2 2 6 2 2 6 2 2 6 2 2 6
59613 - 2 2 6 66 66 66 58 58 58 22 22 22
59614 - 6 6 6 0 0 0 0 0 0 0 0 0
59615 - 0 0 0 0 0 0 0 0 0 0 0 0
59616 - 0 0 0 0 0 0 0 0 0 0 0 0
59617 - 0 0 0 0 0 0 0 0 0 0 0 0
59618 - 0 0 0 0 0 0 0 0 0 0 0 0
59619 - 0 0 0 0 0 0 0 0 0 0 0 0
59620 - 0 0 0 0 0 0 0 0 0 10 10 10
59621 - 38 38 38 78 78 78 6 6 6 2 2 6
59622 - 2 2 6 46 46 46 14 14 14 42 42 42
59623 -246 246 246 253 253 253 253 253 253 253 253 253
59624 -253 253 253 253 253 253 253 253 253 253 253 253
59625 -253 253 253 253 253 253 231 231 231 242 242 242
59626 -253 253 253 253 253 253 253 253 253 253 253 253
59627 -253 253 253 253 253 253 253 253 253 253 253 253
59628 -253 253 253 253 253 253 253 253 253 253 253 253
59629 -253 253 253 253 253 253 253 253 253 253 253 253
59630 -253 253 253 253 253 253 234 234 234 10 10 10
59631 - 2 2 6 2 2 6 22 22 22 14 14 14
59632 - 2 2 6 2 2 6 2 2 6 2 2 6
59633 - 2 2 6 66 66 66 62 62 62 22 22 22
59634 - 6 6 6 0 0 0 0 0 0 0 0 0
59635 - 0 0 0 0 0 0 0 0 0 0 0 0
59636 - 0 0 0 0 0 0 0 0 0 0 0 0
59637 - 0 0 0 0 0 0 0 0 0 0 0 0
59638 - 0 0 0 0 0 0 0 0 0 0 0 0
59639 - 0 0 0 0 0 0 0 0 0 0 0 0
59640 - 0 0 0 0 0 0 6 6 6 18 18 18
59641 - 50 50 50 74 74 74 2 2 6 2 2 6
59642 - 14 14 14 70 70 70 34 34 34 62 62 62
59643 -250 250 250 253 253 253 253 253 253 253 253 253
59644 -253 253 253 253 253 253 253 253 253 253 253 253
59645 -253 253 253 253 253 253 231 231 231 246 246 246
59646 -253 253 253 253 253 253 253 253 253 253 253 253
59647 -253 253 253 253 253 253 253 253 253 253 253 253
59648 -253 253 253 253 253 253 253 253 253 253 253 253
59649 -253 253 253 253 253 253 253 253 253 253 253 253
59650 -253 253 253 253 253 253 234 234 234 14 14 14
59651 - 2 2 6 2 2 6 30 30 30 2 2 6
59652 - 2 2 6 2 2 6 2 2 6 2 2 6
59653 - 2 2 6 66 66 66 62 62 62 22 22 22
59654 - 6 6 6 0 0 0 0 0 0 0 0 0
59655 - 0 0 0 0 0 0 0 0 0 0 0 0
59656 - 0 0 0 0 0 0 0 0 0 0 0 0
59657 - 0 0 0 0 0 0 0 0 0 0 0 0
59658 - 0 0 0 0 0 0 0 0 0 0 0 0
59659 - 0 0 0 0 0 0 0 0 0 0 0 0
59660 - 0 0 0 0 0 0 6 6 6 18 18 18
59661 - 54 54 54 62 62 62 2 2 6 2 2 6
59662 - 2 2 6 30 30 30 46 46 46 70 70 70
59663 -250 250 250 253 253 253 253 253 253 253 253 253
59664 -253 253 253 253 253 253 253 253 253 253 253 253
59665 -253 253 253 253 253 253 231 231 231 246 246 246
59666 -253 253 253 253 253 253 253 253 253 253 253 253
59667 -253 253 253 253 253 253 253 253 253 253 253 253
59668 -253 253 253 253 253 253 253 253 253 253 253 253
59669 -253 253 253 253 253 253 253 253 253 253 253 253
59670 -253 253 253 253 253 253 226 226 226 10 10 10
59671 - 2 2 6 6 6 6 30 30 30 2 2 6
59672 - 2 2 6 2 2 6 2 2 6 2 2 6
59673 - 2 2 6 66 66 66 58 58 58 22 22 22
59674 - 6 6 6 0 0 0 0 0 0 0 0 0
59675 - 0 0 0 0 0 0 0 0 0 0 0 0
59676 - 0 0 0 0 0 0 0 0 0 0 0 0
59677 - 0 0 0 0 0 0 0 0 0 0 0 0
59678 - 0 0 0 0 0 0 0 0 0 0 0 0
59679 - 0 0 0 0 0 0 0 0 0 0 0 0
59680 - 0 0 0 0 0 0 6 6 6 22 22 22
59681 - 58 58 58 62 62 62 2 2 6 2 2 6
59682 - 2 2 6 2 2 6 30 30 30 78 78 78
59683 -250 250 250 253 253 253 253 253 253 253 253 253
59684 -253 253 253 253 253 253 253 253 253 253 253 253
59685 -253 253 253 253 253 253 231 231 231 246 246 246
59686 -253 253 253 253 253 253 253 253 253 253 253 253
59687 -253 253 253 253 253 253 253 253 253 253 253 253
59688 -253 253 253 253 253 253 253 253 253 253 253 253
59689 -253 253 253 253 253 253 253 253 253 253 253 253
59690 -253 253 253 253 253 253 206 206 206 2 2 6
59691 - 22 22 22 34 34 34 18 14 6 22 22 22
59692 - 26 26 26 18 18 18 6 6 6 2 2 6
59693 - 2 2 6 82 82 82 54 54 54 18 18 18
59694 - 6 6 6 0 0 0 0 0 0 0 0 0
59695 - 0 0 0 0 0 0 0 0 0 0 0 0
59696 - 0 0 0 0 0 0 0 0 0 0 0 0
59697 - 0 0 0 0 0 0 0 0 0 0 0 0
59698 - 0 0 0 0 0 0 0 0 0 0 0 0
59699 - 0 0 0 0 0 0 0 0 0 0 0 0
59700 - 0 0 0 0 0 0 6 6 6 26 26 26
59701 - 62 62 62 106 106 106 74 54 14 185 133 11
59702 -210 162 10 121 92 8 6 6 6 62 62 62
59703 -238 238 238 253 253 253 253 253 253 253 253 253
59704 -253 253 253 253 253 253 253 253 253 253 253 253
59705 -253 253 253 253 253 253 231 231 231 246 246 246
59706 -253 253 253 253 253 253 253 253 253 253 253 253
59707 -253 253 253 253 253 253 253 253 253 253 253 253
59708 -253 253 253 253 253 253 253 253 253 253 253 253
59709 -253 253 253 253 253 253 253 253 253 253 253 253
59710 -253 253 253 253 253 253 158 158 158 18 18 18
59711 - 14 14 14 2 2 6 2 2 6 2 2 6
59712 - 6 6 6 18 18 18 66 66 66 38 38 38
59713 - 6 6 6 94 94 94 50 50 50 18 18 18
59714 - 6 6 6 0 0 0 0 0 0 0 0 0
59715 - 0 0 0 0 0 0 0 0 0 0 0 0
59716 - 0 0 0 0 0 0 0 0 0 0 0 0
59717 - 0 0 0 0 0 0 0 0 0 0 0 0
59718 - 0 0 0 0 0 0 0 0 0 0 0 0
59719 - 0 0 0 0 0 0 0 0 0 6 6 6
59720 - 10 10 10 10 10 10 18 18 18 38 38 38
59721 - 78 78 78 142 134 106 216 158 10 242 186 14
59722 -246 190 14 246 190 14 156 118 10 10 10 10
59723 - 90 90 90 238 238 238 253 253 253 253 253 253
59724 -253 253 253 253 253 253 253 253 253 253 253 253
59725 -253 253 253 253 253 253 231 231 231 250 250 250
59726 -253 253 253 253 253 253 253 253 253 253 253 253
59727 -253 253 253 253 253 253 253 253 253 253 253 253
59728 -253 253 253 253 253 253 253 253 253 253 253 253
59729 -253 253 253 253 253 253 253 253 253 246 230 190
59730 -238 204 91 238 204 91 181 142 44 37 26 9
59731 - 2 2 6 2 2 6 2 2 6 2 2 6
59732 - 2 2 6 2 2 6 38 38 38 46 46 46
59733 - 26 26 26 106 106 106 54 54 54 18 18 18
59734 - 6 6 6 0 0 0 0 0 0 0 0 0
59735 - 0 0 0 0 0 0 0 0 0 0 0 0
59736 - 0 0 0 0 0 0 0 0 0 0 0 0
59737 - 0 0 0 0 0 0 0 0 0 0 0 0
59738 - 0 0 0 0 0 0 0 0 0 0 0 0
59739 - 0 0 0 6 6 6 14 14 14 22 22 22
59740 - 30 30 30 38 38 38 50 50 50 70 70 70
59741 -106 106 106 190 142 34 226 170 11 242 186 14
59742 -246 190 14 246 190 14 246 190 14 154 114 10
59743 - 6 6 6 74 74 74 226 226 226 253 253 253
59744 -253 253 253 253 253 253 253 253 253 253 253 253
59745 -253 253 253 253 253 253 231 231 231 250 250 250
59746 -253 253 253 253 253 253 253 253 253 253 253 253
59747 -253 253 253 253 253 253 253 253 253 253 253 253
59748 -253 253 253 253 253 253 253 253 253 253 253 253
59749 -253 253 253 253 253 253 253 253 253 228 184 62
59750 -241 196 14 241 208 19 232 195 16 38 30 10
59751 - 2 2 6 2 2 6 2 2 6 2 2 6
59752 - 2 2 6 6 6 6 30 30 30 26 26 26
59753 -203 166 17 154 142 90 66 66 66 26 26 26
59754 - 6 6 6 0 0 0 0 0 0 0 0 0
59755 - 0 0 0 0 0 0 0 0 0 0 0 0
59756 - 0 0 0 0 0 0 0 0 0 0 0 0
59757 - 0 0 0 0 0 0 0 0 0 0 0 0
59758 - 0 0 0 0 0 0 0 0 0 0 0 0
59759 - 6 6 6 18 18 18 38 38 38 58 58 58
59760 - 78 78 78 86 86 86 101 101 101 123 123 123
59761 -175 146 61 210 150 10 234 174 13 246 186 14
59762 -246 190 14 246 190 14 246 190 14 238 190 10
59763 -102 78 10 2 2 6 46 46 46 198 198 198
59764 -253 253 253 253 253 253 253 253 253 253 253 253
59765 -253 253 253 253 253 253 234 234 234 242 242 242
59766 -253 253 253 253 253 253 253 253 253 253 253 253
59767 -253 253 253 253 253 253 253 253 253 253 253 253
59768 -253 253 253 253 253 253 253 253 253 253 253 253
59769 -253 253 253 253 253 253 253 253 253 224 178 62
59770 -242 186 14 241 196 14 210 166 10 22 18 6
59771 - 2 2 6 2 2 6 2 2 6 2 2 6
59772 - 2 2 6 2 2 6 6 6 6 121 92 8
59773 -238 202 15 232 195 16 82 82 82 34 34 34
59774 - 10 10 10 0 0 0 0 0 0 0 0 0
59775 - 0 0 0 0 0 0 0 0 0 0 0 0
59776 - 0 0 0 0 0 0 0 0 0 0 0 0
59777 - 0 0 0 0 0 0 0 0 0 0 0 0
59778 - 0 0 0 0 0 0 0 0 0 0 0 0
59779 - 14 14 14 38 38 38 70 70 70 154 122 46
59780 -190 142 34 200 144 11 197 138 11 197 138 11
59781 -213 154 11 226 170 11 242 186 14 246 190 14
59782 -246 190 14 246 190 14 246 190 14 246 190 14
59783 -225 175 15 46 32 6 2 2 6 22 22 22
59784 -158 158 158 250 250 250 253 253 253 253 253 253
59785 -253 253 253 253 253 253 253 253 253 253 253 253
59786 -253 253 253 253 253 253 253 253 253 253 253 253
59787 -253 253 253 253 253 253 253 253 253 253 253 253
59788 -253 253 253 253 253 253 253 253 253 253 253 253
59789 -253 253 253 250 250 250 242 242 242 224 178 62
59790 -239 182 13 236 186 11 213 154 11 46 32 6
59791 - 2 2 6 2 2 6 2 2 6 2 2 6
59792 - 2 2 6 2 2 6 61 42 6 225 175 15
59793 -238 190 10 236 186 11 112 100 78 42 42 42
59794 - 14 14 14 0 0 0 0 0 0 0 0 0
59795 - 0 0 0 0 0 0 0 0 0 0 0 0
59796 - 0 0 0 0 0 0 0 0 0 0 0 0
59797 - 0 0 0 0 0 0 0 0 0 0 0 0
59798 - 0 0 0 0 0 0 0 0 0 6 6 6
59799 - 22 22 22 54 54 54 154 122 46 213 154 11
59800 -226 170 11 230 174 11 226 170 11 226 170 11
59801 -236 178 12 242 186 14 246 190 14 246 190 14
59802 -246 190 14 246 190 14 246 190 14 246 190 14
59803 -241 196 14 184 144 12 10 10 10 2 2 6
59804 - 6 6 6 116 116 116 242 242 242 253 253 253
59805 -253 253 253 253 253 253 253 253 253 253 253 253
59806 -253 253 253 253 253 253 253 253 253 253 253 253
59807 -253 253 253 253 253 253 253 253 253 253 253 253
59808 -253 253 253 253 253 253 253 253 253 253 253 253
59809 -253 253 253 231 231 231 198 198 198 214 170 54
59810 -236 178 12 236 178 12 210 150 10 137 92 6
59811 - 18 14 6 2 2 6 2 2 6 2 2 6
59812 - 6 6 6 70 47 6 200 144 11 236 178 12
59813 -239 182 13 239 182 13 124 112 88 58 58 58
59814 - 22 22 22 6 6 6 0 0 0 0 0 0
59815 - 0 0 0 0 0 0 0 0 0 0 0 0
59816 - 0 0 0 0 0 0 0 0 0 0 0 0
59817 - 0 0 0 0 0 0 0 0 0 0 0 0
59818 - 0 0 0 0 0 0 0 0 0 10 10 10
59819 - 30 30 30 70 70 70 180 133 36 226 170 11
59820 -239 182 13 242 186 14 242 186 14 246 186 14
59821 -246 190 14 246 190 14 246 190 14 246 190 14
59822 -246 190 14 246 190 14 246 190 14 246 190 14
59823 -246 190 14 232 195 16 98 70 6 2 2 6
59824 - 2 2 6 2 2 6 66 66 66 221 221 221
59825 -253 253 253 253 253 253 253 253 253 253 253 253
59826 -253 253 253 253 253 253 253 253 253 253 253 253
59827 -253 253 253 253 253 253 253 253 253 253 253 253
59828 -253 253 253 253 253 253 253 253 253 253 253 253
59829 -253 253 253 206 206 206 198 198 198 214 166 58
59830 -230 174 11 230 174 11 216 158 10 192 133 9
59831 -163 110 8 116 81 8 102 78 10 116 81 8
59832 -167 114 7 197 138 11 226 170 11 239 182 13
59833 -242 186 14 242 186 14 162 146 94 78 78 78
59834 - 34 34 34 14 14 14 6 6 6 0 0 0
59835 - 0 0 0 0 0 0 0 0 0 0 0 0
59836 - 0 0 0 0 0 0 0 0 0 0 0 0
59837 - 0 0 0 0 0 0 0 0 0 0 0 0
59838 - 0 0 0 0 0 0 0 0 0 6 6 6
59839 - 30 30 30 78 78 78 190 142 34 226 170 11
59840 -239 182 13 246 190 14 246 190 14 246 190 14
59841 -246 190 14 246 190 14 246 190 14 246 190 14
59842 -246 190 14 246 190 14 246 190 14 246 190 14
59843 -246 190 14 241 196 14 203 166 17 22 18 6
59844 - 2 2 6 2 2 6 2 2 6 38 38 38
59845 -218 218 218 253 253 253 253 253 253 253 253 253
59846 -253 253 253 253 253 253 253 253 253 253 253 253
59847 -253 253 253 253 253 253 253 253 253 253 253 253
59848 -253 253 253 253 253 253 253 253 253 253 253 253
59849 -250 250 250 206 206 206 198 198 198 202 162 69
59850 -226 170 11 236 178 12 224 166 10 210 150 10
59851 -200 144 11 197 138 11 192 133 9 197 138 11
59852 -210 150 10 226 170 11 242 186 14 246 190 14
59853 -246 190 14 246 186 14 225 175 15 124 112 88
59854 - 62 62 62 30 30 30 14 14 14 6 6 6
59855 - 0 0 0 0 0 0 0 0 0 0 0 0
59856 - 0 0 0 0 0 0 0 0 0 0 0 0
59857 - 0 0 0 0 0 0 0 0 0 0 0 0
59858 - 0 0 0 0 0 0 0 0 0 10 10 10
59859 - 30 30 30 78 78 78 174 135 50 224 166 10
59860 -239 182 13 246 190 14 246 190 14 246 190 14
59861 -246 190 14 246 190 14 246 190 14 246 190 14
59862 -246 190 14 246 190 14 246 190 14 246 190 14
59863 -246 190 14 246 190 14 241 196 14 139 102 15
59864 - 2 2 6 2 2 6 2 2 6 2 2 6
59865 - 78 78 78 250 250 250 253 253 253 253 253 253
59866 -253 253 253 253 253 253 253 253 253 253 253 253
59867 -253 253 253 253 253 253 253 253 253 253 253 253
59868 -253 253 253 253 253 253 253 253 253 253 253 253
59869 -250 250 250 214 214 214 198 198 198 190 150 46
59870 -219 162 10 236 178 12 234 174 13 224 166 10
59871 -216 158 10 213 154 11 213 154 11 216 158 10
59872 -226 170 11 239 182 13 246 190 14 246 190 14
59873 -246 190 14 246 190 14 242 186 14 206 162 42
59874 -101 101 101 58 58 58 30 30 30 14 14 14
59875 - 6 6 6 0 0 0 0 0 0 0 0 0
59876 - 0 0 0 0 0 0 0 0 0 0 0 0
59877 - 0 0 0 0 0 0 0 0 0 0 0 0
59878 - 0 0 0 0 0 0 0 0 0 10 10 10
59879 - 30 30 30 74 74 74 174 135 50 216 158 10
59880 -236 178 12 246 190 14 246 190 14 246 190 14
59881 -246 190 14 246 190 14 246 190 14 246 190 14
59882 -246 190 14 246 190 14 246 190 14 246 190 14
59883 -246 190 14 246 190 14 241 196 14 226 184 13
59884 - 61 42 6 2 2 6 2 2 6 2 2 6
59885 - 22 22 22 238 238 238 253 253 253 253 253 253
59886 -253 253 253 253 253 253 253 253 253 253 253 253
59887 -253 253 253 253 253 253 253 253 253 253 253 253
59888 -253 253 253 253 253 253 253 253 253 253 253 253
59889 -253 253 253 226 226 226 187 187 187 180 133 36
59890 -216 158 10 236 178 12 239 182 13 236 178 12
59891 -230 174 11 226 170 11 226 170 11 230 174 11
59892 -236 178 12 242 186 14 246 190 14 246 190 14
59893 -246 190 14 246 190 14 246 186 14 239 182 13
59894 -206 162 42 106 106 106 66 66 66 34 34 34
59895 - 14 14 14 6 6 6 0 0 0 0 0 0
59896 - 0 0 0 0 0 0 0 0 0 0 0 0
59897 - 0 0 0 0 0 0 0 0 0 0 0 0
59898 - 0 0 0 0 0 0 0 0 0 6 6 6
59899 - 26 26 26 70 70 70 163 133 67 213 154 11
59900 -236 178 12 246 190 14 246 190 14 246 190 14
59901 -246 190 14 246 190 14 246 190 14 246 190 14
59902 -246 190 14 246 190 14 246 190 14 246 190 14
59903 -246 190 14 246 190 14 246 190 14 241 196 14
59904 -190 146 13 18 14 6 2 2 6 2 2 6
59905 - 46 46 46 246 246 246 253 253 253 253 253 253
59906 -253 253 253 253 253 253 253 253 253 253 253 253
59907 -253 253 253 253 253 253 253 253 253 253 253 253
59908 -253 253 253 253 253 253 253 253 253 253 253 253
59909 -253 253 253 221 221 221 86 86 86 156 107 11
59910 -216 158 10 236 178 12 242 186 14 246 186 14
59911 -242 186 14 239 182 13 239 182 13 242 186 14
59912 -242 186 14 246 186 14 246 190 14 246 190 14
59913 -246 190 14 246 190 14 246 190 14 246 190 14
59914 -242 186 14 225 175 15 142 122 72 66 66 66
59915 - 30 30 30 10 10 10 0 0 0 0 0 0
59916 - 0 0 0 0 0 0 0 0 0 0 0 0
59917 - 0 0 0 0 0 0 0 0 0 0 0 0
59918 - 0 0 0 0 0 0 0 0 0 6 6 6
59919 - 26 26 26 70 70 70 163 133 67 210 150 10
59920 -236 178 12 246 190 14 246 190 14 246 190 14
59921 -246 190 14 246 190 14 246 190 14 246 190 14
59922 -246 190 14 246 190 14 246 190 14 246 190 14
59923 -246 190 14 246 190 14 246 190 14 246 190 14
59924 -232 195 16 121 92 8 34 34 34 106 106 106
59925 -221 221 221 253 253 253 253 253 253 253 253 253
59926 -253 253 253 253 253 253 253 253 253 253 253 253
59927 -253 253 253 253 253 253 253 253 253 253 253 253
59928 -253 253 253 253 253 253 253 253 253 253 253 253
59929 -242 242 242 82 82 82 18 14 6 163 110 8
59930 -216 158 10 236 178 12 242 186 14 246 190 14
59931 -246 190 14 246 190 14 246 190 14 246 190 14
59932 -246 190 14 246 190 14 246 190 14 246 190 14
59933 -246 190 14 246 190 14 246 190 14 246 190 14
59934 -246 190 14 246 190 14 242 186 14 163 133 67
59935 - 46 46 46 18 18 18 6 6 6 0 0 0
59936 - 0 0 0 0 0 0 0 0 0 0 0 0
59937 - 0 0 0 0 0 0 0 0 0 0 0 0
59938 - 0 0 0 0 0 0 0 0 0 10 10 10
59939 - 30 30 30 78 78 78 163 133 67 210 150 10
59940 -236 178 12 246 186 14 246 190 14 246 190 14
59941 -246 190 14 246 190 14 246 190 14 246 190 14
59942 -246 190 14 246 190 14 246 190 14 246 190 14
59943 -246 190 14 246 190 14 246 190 14 246 190 14
59944 -241 196 14 215 174 15 190 178 144 253 253 253
59945 -253 253 253 253 253 253 253 253 253 253 253 253
59946 -253 253 253 253 253 253 253 253 253 253 253 253
59947 -253 253 253 253 253 253 253 253 253 253 253 253
59948 -253 253 253 253 253 253 253 253 253 218 218 218
59949 - 58 58 58 2 2 6 22 18 6 167 114 7
59950 -216 158 10 236 178 12 246 186 14 246 190 14
59951 -246 190 14 246 190 14 246 190 14 246 190 14
59952 -246 190 14 246 190 14 246 190 14 246 190 14
59953 -246 190 14 246 190 14 246 190 14 246 190 14
59954 -246 190 14 246 186 14 242 186 14 190 150 46
59955 - 54 54 54 22 22 22 6 6 6 0 0 0
59956 - 0 0 0 0 0 0 0 0 0 0 0 0
59957 - 0 0 0 0 0 0 0 0 0 0 0 0
59958 - 0 0 0 0 0 0 0 0 0 14 14 14
59959 - 38 38 38 86 86 86 180 133 36 213 154 11
59960 -236 178 12 246 186 14 246 190 14 246 190 14
59961 -246 190 14 246 190 14 246 190 14 246 190 14
59962 -246 190 14 246 190 14 246 190 14 246 190 14
59963 -246 190 14 246 190 14 246 190 14 246 190 14
59964 -246 190 14 232 195 16 190 146 13 214 214 214
59965 -253 253 253 253 253 253 253 253 253 253 253 253
59966 -253 253 253 253 253 253 253 253 253 253 253 253
59967 -253 253 253 253 253 253 253 253 253 253 253 253
59968 -253 253 253 250 250 250 170 170 170 26 26 26
59969 - 2 2 6 2 2 6 37 26 9 163 110 8
59970 -219 162 10 239 182 13 246 186 14 246 190 14
59971 -246 190 14 246 190 14 246 190 14 246 190 14
59972 -246 190 14 246 190 14 246 190 14 246 190 14
59973 -246 190 14 246 190 14 246 190 14 246 190 14
59974 -246 186 14 236 178 12 224 166 10 142 122 72
59975 - 46 46 46 18 18 18 6 6 6 0 0 0
59976 - 0 0 0 0 0 0 0 0 0 0 0 0
59977 - 0 0 0 0 0 0 0 0 0 0 0 0
59978 - 0 0 0 0 0 0 6 6 6 18 18 18
59979 - 50 50 50 109 106 95 192 133 9 224 166 10
59980 -242 186 14 246 190 14 246 190 14 246 190 14
59981 -246 190 14 246 190 14 246 190 14 246 190 14
59982 -246 190 14 246 190 14 246 190 14 246 190 14
59983 -246 190 14 246 190 14 246 190 14 246 190 14
59984 -242 186 14 226 184 13 210 162 10 142 110 46
59985 -226 226 226 253 253 253 253 253 253 253 253 253
59986 -253 253 253 253 253 253 253 253 253 253 253 253
59987 -253 253 253 253 253 253 253 253 253 253 253 253
59988 -198 198 198 66 66 66 2 2 6 2 2 6
59989 - 2 2 6 2 2 6 50 34 6 156 107 11
59990 -219 162 10 239 182 13 246 186 14 246 190 14
59991 -246 190 14 246 190 14 246 190 14 246 190 14
59992 -246 190 14 246 190 14 246 190 14 246 190 14
59993 -246 190 14 246 190 14 246 190 14 242 186 14
59994 -234 174 13 213 154 11 154 122 46 66 66 66
59995 - 30 30 30 10 10 10 0 0 0 0 0 0
59996 - 0 0 0 0 0 0 0 0 0 0 0 0
59997 - 0 0 0 0 0 0 0 0 0 0 0 0
59998 - 0 0 0 0 0 0 6 6 6 22 22 22
59999 - 58 58 58 154 121 60 206 145 10 234 174 13
60000 -242 186 14 246 186 14 246 190 14 246 190 14
60001 -246 190 14 246 190 14 246 190 14 246 190 14
60002 -246 190 14 246 190 14 246 190 14 246 190 14
60003 -246 190 14 246 190 14 246 190 14 246 190 14
60004 -246 186 14 236 178 12 210 162 10 163 110 8
60005 - 61 42 6 138 138 138 218 218 218 250 250 250
60006 -253 253 253 253 253 253 253 253 253 250 250 250
60007 -242 242 242 210 210 210 144 144 144 66 66 66
60008 - 6 6 6 2 2 6 2 2 6 2 2 6
60009 - 2 2 6 2 2 6 61 42 6 163 110 8
60010 -216 158 10 236 178 12 246 190 14 246 190 14
60011 -246 190 14 246 190 14 246 190 14 246 190 14
60012 -246 190 14 246 190 14 246 190 14 246 190 14
60013 -246 190 14 239 182 13 230 174 11 216 158 10
60014 -190 142 34 124 112 88 70 70 70 38 38 38
60015 - 18 18 18 6 6 6 0 0 0 0 0 0
60016 - 0 0 0 0 0 0 0 0 0 0 0 0
60017 - 0 0 0 0 0 0 0 0 0 0 0 0
60018 - 0 0 0 0 0 0 6 6 6 22 22 22
60019 - 62 62 62 168 124 44 206 145 10 224 166 10
60020 -236 178 12 239 182 13 242 186 14 242 186 14
60021 -246 186 14 246 190 14 246 190 14 246 190 14
60022 -246 190 14 246 190 14 246 190 14 246 190 14
60023 -246 190 14 246 190 14 246 190 14 246 190 14
60024 -246 190 14 236 178 12 216 158 10 175 118 6
60025 - 80 54 7 2 2 6 6 6 6 30 30 30
60026 - 54 54 54 62 62 62 50 50 50 38 38 38
60027 - 14 14 14 2 2 6 2 2 6 2 2 6
60028 - 2 2 6 2 2 6 2 2 6 2 2 6
60029 - 2 2 6 6 6 6 80 54 7 167 114 7
60030 -213 154 11 236 178 12 246 190 14 246 190 14
60031 -246 190 14 246 190 14 246 190 14 246 190 14
60032 -246 190 14 242 186 14 239 182 13 239 182 13
60033 -230 174 11 210 150 10 174 135 50 124 112 88
60034 - 82 82 82 54 54 54 34 34 34 18 18 18
60035 - 6 6 6 0 0 0 0 0 0 0 0 0
60036 - 0 0 0 0 0 0 0 0 0 0 0 0
60037 - 0 0 0 0 0 0 0 0 0 0 0 0
60038 - 0 0 0 0 0 0 6 6 6 18 18 18
60039 - 50 50 50 158 118 36 192 133 9 200 144 11
60040 -216 158 10 219 162 10 224 166 10 226 170 11
60041 -230 174 11 236 178 12 239 182 13 239 182 13
60042 -242 186 14 246 186 14 246 190 14 246 190 14
60043 -246 190 14 246 190 14 246 190 14 246 190 14
60044 -246 186 14 230 174 11 210 150 10 163 110 8
60045 -104 69 6 10 10 10 2 2 6 2 2 6
60046 - 2 2 6 2 2 6 2 2 6 2 2 6
60047 - 2 2 6 2 2 6 2 2 6 2 2 6
60048 - 2 2 6 2 2 6 2 2 6 2 2 6
60049 - 2 2 6 6 6 6 91 60 6 167 114 7
60050 -206 145 10 230 174 11 242 186 14 246 190 14
60051 -246 190 14 246 190 14 246 186 14 242 186 14
60052 -239 182 13 230 174 11 224 166 10 213 154 11
60053 -180 133 36 124 112 88 86 86 86 58 58 58
60054 - 38 38 38 22 22 22 10 10 10 6 6 6
60055 - 0 0 0 0 0 0 0 0 0 0 0 0
60056 - 0 0 0 0 0 0 0 0 0 0 0 0
60057 - 0 0 0 0 0 0 0 0 0 0 0 0
60058 - 0 0 0 0 0 0 0 0 0 14 14 14
60059 - 34 34 34 70 70 70 138 110 50 158 118 36
60060 -167 114 7 180 123 7 192 133 9 197 138 11
60061 -200 144 11 206 145 10 213 154 11 219 162 10
60062 -224 166 10 230 174 11 239 182 13 242 186 14
60063 -246 186 14 246 186 14 246 186 14 246 186 14
60064 -239 182 13 216 158 10 185 133 11 152 99 6
60065 -104 69 6 18 14 6 2 2 6 2 2 6
60066 - 2 2 6 2 2 6 2 2 6 2 2 6
60067 - 2 2 6 2 2 6 2 2 6 2 2 6
60068 - 2 2 6 2 2 6 2 2 6 2 2 6
60069 - 2 2 6 6 6 6 80 54 7 152 99 6
60070 -192 133 9 219 162 10 236 178 12 239 182 13
60071 -246 186 14 242 186 14 239 182 13 236 178 12
60072 -224 166 10 206 145 10 192 133 9 154 121 60
60073 - 94 94 94 62 62 62 42 42 42 22 22 22
60074 - 14 14 14 6 6 6 0 0 0 0 0 0
60075 - 0 0 0 0 0 0 0 0 0 0 0 0
60076 - 0 0 0 0 0 0 0 0 0 0 0 0
60077 - 0 0 0 0 0 0 0 0 0 0 0 0
60078 - 0 0 0 0 0 0 0 0 0 6 6 6
60079 - 18 18 18 34 34 34 58 58 58 78 78 78
60080 -101 98 89 124 112 88 142 110 46 156 107 11
60081 -163 110 8 167 114 7 175 118 6 180 123 7
60082 -185 133 11 197 138 11 210 150 10 219 162 10
60083 -226 170 11 236 178 12 236 178 12 234 174 13
60084 -219 162 10 197 138 11 163 110 8 130 83 6
60085 - 91 60 6 10 10 10 2 2 6 2 2 6
60086 - 18 18 18 38 38 38 38 38 38 38 38 38
60087 - 38 38 38 38 38 38 38 38 38 38 38 38
60088 - 38 38 38 38 38 38 26 26 26 2 2 6
60089 - 2 2 6 6 6 6 70 47 6 137 92 6
60090 -175 118 6 200 144 11 219 162 10 230 174 11
60091 -234 174 13 230 174 11 219 162 10 210 150 10
60092 -192 133 9 163 110 8 124 112 88 82 82 82
60093 - 50 50 50 30 30 30 14 14 14 6 6 6
60094 - 0 0 0 0 0 0 0 0 0 0 0 0
60095 - 0 0 0 0 0 0 0 0 0 0 0 0
60096 - 0 0 0 0 0 0 0 0 0 0 0 0
60097 - 0 0 0 0 0 0 0 0 0 0 0 0
60098 - 0 0 0 0 0 0 0 0 0 0 0 0
60099 - 6 6 6 14 14 14 22 22 22 34 34 34
60100 - 42 42 42 58 58 58 74 74 74 86 86 86
60101 -101 98 89 122 102 70 130 98 46 121 87 25
60102 -137 92 6 152 99 6 163 110 8 180 123 7
60103 -185 133 11 197 138 11 206 145 10 200 144 11
60104 -180 123 7 156 107 11 130 83 6 104 69 6
60105 - 50 34 6 54 54 54 110 110 110 101 98 89
60106 - 86 86 86 82 82 82 78 78 78 78 78 78
60107 - 78 78 78 78 78 78 78 78 78 78 78 78
60108 - 78 78 78 82 82 82 86 86 86 94 94 94
60109 -106 106 106 101 101 101 86 66 34 124 80 6
60110 -156 107 11 180 123 7 192 133 9 200 144 11
60111 -206 145 10 200 144 11 192 133 9 175 118 6
60112 -139 102 15 109 106 95 70 70 70 42 42 42
60113 - 22 22 22 10 10 10 0 0 0 0 0 0
60114 - 0 0 0 0 0 0 0 0 0 0 0 0
60115 - 0 0 0 0 0 0 0 0 0 0 0 0
60116 - 0 0 0 0 0 0 0 0 0 0 0 0
60117 - 0 0 0 0 0 0 0 0 0 0 0 0
60118 - 0 0 0 0 0 0 0 0 0 0 0 0
60119 - 0 0 0 0 0 0 6 6 6 10 10 10
60120 - 14 14 14 22 22 22 30 30 30 38 38 38
60121 - 50 50 50 62 62 62 74 74 74 90 90 90
60122 -101 98 89 112 100 78 121 87 25 124 80 6
60123 -137 92 6 152 99 6 152 99 6 152 99 6
60124 -138 86 6 124 80 6 98 70 6 86 66 30
60125 -101 98 89 82 82 82 58 58 58 46 46 46
60126 - 38 38 38 34 34 34 34 34 34 34 34 34
60127 - 34 34 34 34 34 34 34 34 34 34 34 34
60128 - 34 34 34 34 34 34 38 38 38 42 42 42
60129 - 54 54 54 82 82 82 94 86 76 91 60 6
60130 -134 86 6 156 107 11 167 114 7 175 118 6
60131 -175 118 6 167 114 7 152 99 6 121 87 25
60132 -101 98 89 62 62 62 34 34 34 18 18 18
60133 - 6 6 6 0 0 0 0 0 0 0 0 0
60134 - 0 0 0 0 0 0 0 0 0 0 0 0
60135 - 0 0 0 0 0 0 0 0 0 0 0 0
60136 - 0 0 0 0 0 0 0 0 0 0 0 0
60137 - 0 0 0 0 0 0 0 0 0 0 0 0
60138 - 0 0 0 0 0 0 0 0 0 0 0 0
60139 - 0 0 0 0 0 0 0 0 0 0 0 0
60140 - 0 0 0 6 6 6 6 6 6 10 10 10
60141 - 18 18 18 22 22 22 30 30 30 42 42 42
60142 - 50 50 50 66 66 66 86 86 86 101 98 89
60143 -106 86 58 98 70 6 104 69 6 104 69 6
60144 -104 69 6 91 60 6 82 62 34 90 90 90
60145 - 62 62 62 38 38 38 22 22 22 14 14 14
60146 - 10 10 10 10 10 10 10 10 10 10 10 10
60147 - 10 10 10 10 10 10 6 6 6 10 10 10
60148 - 10 10 10 10 10 10 10 10 10 14 14 14
60149 - 22 22 22 42 42 42 70 70 70 89 81 66
60150 - 80 54 7 104 69 6 124 80 6 137 92 6
60151 -134 86 6 116 81 8 100 82 52 86 86 86
60152 - 58 58 58 30 30 30 14 14 14 6 6 6
60153 - 0 0 0 0 0 0 0 0 0 0 0 0
60154 - 0 0 0 0 0 0 0 0 0 0 0 0
60155 - 0 0 0 0 0 0 0 0 0 0 0 0
60156 - 0 0 0 0 0 0 0 0 0 0 0 0
60157 - 0 0 0 0 0 0 0 0 0 0 0 0
60158 - 0 0 0 0 0 0 0 0 0 0 0 0
60159 - 0 0 0 0 0 0 0 0 0 0 0 0
60160 - 0 0 0 0 0 0 0 0 0 0 0 0
60161 - 0 0 0 6 6 6 10 10 10 14 14 14
60162 - 18 18 18 26 26 26 38 38 38 54 54 54
60163 - 70 70 70 86 86 86 94 86 76 89 81 66
60164 - 89 81 66 86 86 86 74 74 74 50 50 50
60165 - 30 30 30 14 14 14 6 6 6 0 0 0
60166 - 0 0 0 0 0 0 0 0 0 0 0 0
60167 - 0 0 0 0 0 0 0 0 0 0 0 0
60168 - 0 0 0 0 0 0 0 0 0 0 0 0
60169 - 6 6 6 18 18 18 34 34 34 58 58 58
60170 - 82 82 82 89 81 66 89 81 66 89 81 66
60171 - 94 86 66 94 86 76 74 74 74 50 50 50
60172 - 26 26 26 14 14 14 6 6 6 0 0 0
60173 - 0 0 0 0 0 0 0 0 0 0 0 0
60174 - 0 0 0 0 0 0 0 0 0 0 0 0
60175 - 0 0 0 0 0 0 0 0 0 0 0 0
60176 - 0 0 0 0 0 0 0 0 0 0 0 0
60177 - 0 0 0 0 0 0 0 0 0 0 0 0
60178 - 0 0 0 0 0 0 0 0 0 0 0 0
60179 - 0 0 0 0 0 0 0 0 0 0 0 0
60180 - 0 0 0 0 0 0 0 0 0 0 0 0
60181 - 0 0 0 0 0 0 0 0 0 0 0 0
60182 - 6 6 6 6 6 6 14 14 14 18 18 18
60183 - 30 30 30 38 38 38 46 46 46 54 54 54
60184 - 50 50 50 42 42 42 30 30 30 18 18 18
60185 - 10 10 10 0 0 0 0 0 0 0 0 0
60186 - 0 0 0 0 0 0 0 0 0 0 0 0
60187 - 0 0 0 0 0 0 0 0 0 0 0 0
60188 - 0 0 0 0 0 0 0 0 0 0 0 0
60189 - 0 0 0 6 6 6 14 14 14 26 26 26
60190 - 38 38 38 50 50 50 58 58 58 58 58 58
60191 - 54 54 54 42 42 42 30 30 30 18 18 18
60192 - 10 10 10 0 0 0 0 0 0 0 0 0
60193 - 0 0 0 0 0 0 0 0 0 0 0 0
60194 - 0 0 0 0 0 0 0 0 0 0 0 0
60195 - 0 0 0 0 0 0 0 0 0 0 0 0
60196 - 0 0 0 0 0 0 0 0 0 0 0 0
60197 - 0 0 0 0 0 0 0 0 0 0 0 0
60198 - 0 0 0 0 0 0 0 0 0 0 0 0
60199 - 0 0 0 0 0 0 0 0 0 0 0 0
60200 - 0 0 0 0 0 0 0 0 0 0 0 0
60201 - 0 0 0 0 0 0 0 0 0 0 0 0
60202 - 0 0 0 0 0 0 0 0 0 6 6 6
60203 - 6 6 6 10 10 10 14 14 14 18 18 18
60204 - 18 18 18 14 14 14 10 10 10 6 6 6
60205 - 0 0 0 0 0 0 0 0 0 0 0 0
60206 - 0 0 0 0 0 0 0 0 0 0 0 0
60207 - 0 0 0 0 0 0 0 0 0 0 0 0
60208 - 0 0 0 0 0 0 0 0 0 0 0 0
60209 - 0 0 0 0 0 0 0 0 0 6 6 6
60210 - 14 14 14 18 18 18 22 22 22 22 22 22
60211 - 18 18 18 14 14 14 10 10 10 6 6 6
60212 - 0 0 0 0 0 0 0 0 0 0 0 0
60213 - 0 0 0 0 0 0 0 0 0 0 0 0
60214 - 0 0 0 0 0 0 0 0 0 0 0 0
60215 - 0 0 0 0 0 0 0 0 0 0 0 0
60216 - 0 0 0 0 0 0 0 0 0 0 0 0
60217 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60218 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60219 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60220 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60221 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60222 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60223 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60224 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60225 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60226 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60227 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60228 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60229 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60230 +4 4 4 4 4 4
60231 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60232 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60233 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60234 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60235 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60236 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60237 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60238 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60239 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60240 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60241 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60242 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60243 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60244 +4 4 4 4 4 4
60245 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60246 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60247 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60248 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60249 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60250 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60251 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60252 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60253 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60254 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60255 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60256 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60257 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60258 +4 4 4 4 4 4
60259 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60260 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60261 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60262 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60263 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60264 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60265 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60266 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60267 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60268 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60269 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60270 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60271 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60272 +4 4 4 4 4 4
60273 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60274 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60275 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60276 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60277 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60278 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60279 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60280 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60281 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60282 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60283 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60284 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60285 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60286 +4 4 4 4 4 4
60287 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60288 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60289 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60290 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60291 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60292 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60293 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60294 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60295 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60296 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60297 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60298 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60299 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60300 +4 4 4 4 4 4
60301 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60302 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60303 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60304 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60305 +4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
60306 +0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
60307 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60308 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60309 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60310 +4 4 4 4 4 4 4 4 4 4 4 4 1 1 1 0 0 0
60311 +0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
60312 +4 4 4 4 4 4 4 4 4 2 1 0 2 1 0 3 2 2
60313 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60314 +4 4 4 4 4 4
60315 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60316 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60317 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60318 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60319 +4 4 4 4 4 4 2 2 2 0 0 0 3 4 3 26 28 28
60320 +37 38 37 37 38 37 14 17 19 2 2 2 0 0 0 2 2 2
60321 +5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60322 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60323 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60324 +4 4 4 4 4 4 3 3 3 0 0 0 1 1 1 6 6 6
60325 +2 2 2 0 0 0 3 3 3 4 4 4 4 4 4 4 4 4
60326 +4 4 5 3 3 3 1 0 0 0 0 0 1 0 0 0 0 0
60327 +1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60328 +4 4 4 4 4 4
60329 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60330 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60331 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60332 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60333 +2 2 2 0 0 0 0 0 0 14 17 19 60 74 84 137 136 137
60334 +153 152 153 137 136 137 125 124 125 60 73 81 6 6 6 3 1 0
60335 +0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
60336 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60337 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60338 +4 4 4 4 4 4 0 0 0 4 4 4 41 54 63 125 124 125
60339 +60 73 81 6 6 6 4 0 0 3 3 3 4 4 4 4 4 4
60340 +4 4 4 0 0 0 6 9 11 41 54 63 41 65 82 22 30 35
60341 +2 2 2 2 1 0 4 4 4 4 4 4 4 4 4 4 4 4
60342 +4 4 4 4 4 4
60343 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60344 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60345 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60346 +4 4 4 4 4 4 5 5 5 5 5 5 2 2 2 0 0 0
60347 +4 0 0 6 6 6 41 54 63 137 136 137 174 174 174 167 166 167
60348 +165 164 165 165 164 165 163 162 163 163 162 163 125 124 125 41 54 63
60349 +1 1 1 0 0 0 0 0 0 3 3 3 5 5 5 4 4 4
60350 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60351 +4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
60352 +3 3 3 2 0 0 4 0 0 60 73 81 156 155 156 167 166 167
60353 +163 162 163 85 115 134 5 7 8 0 0 0 4 4 4 5 5 5
60354 +0 0 0 2 5 5 55 98 126 90 154 193 90 154 193 72 125 159
60355 +37 51 59 2 0 0 1 1 1 4 5 5 4 4 4 4 4 4
60356 +4 4 4 4 4 4
60357 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60358 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60359 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60360 +4 4 4 5 5 5 4 4 4 1 1 1 0 0 0 3 3 3
60361 +37 38 37 125 124 125 163 162 163 174 174 174 158 157 158 158 157 158
60362 +156 155 156 156 155 156 158 157 158 165 164 165 174 174 174 166 165 166
60363 +125 124 125 16 19 21 1 0 0 0 0 0 0 0 0 4 4 4
60364 +5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4
60365 +4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 1 1 1
60366 +0 0 0 0 0 0 37 38 37 153 152 153 174 174 174 158 157 158
60367 +174 174 174 163 162 163 37 38 37 4 3 3 4 0 0 1 1 1
60368 +0 0 0 22 40 52 101 161 196 101 161 196 90 154 193 101 161 196
60369 +64 123 161 14 17 19 0 0 0 4 4 4 4 4 4 4 4 4
60370 +4 4 4 4 4 4
60371 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60372 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60373 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5
60374 +5 5 5 2 2 2 0 0 0 4 0 0 24 26 27 85 115 134
60375 +156 155 156 174 174 174 167 166 167 156 155 156 154 153 154 157 156 157
60376 +156 155 156 156 155 156 155 154 155 153 152 153 158 157 158 167 166 167
60377 +174 174 174 156 155 156 60 74 84 16 19 21 0 0 0 0 0 0
60378 +1 1 1 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4
60379 +4 4 4 5 5 5 6 6 6 3 3 3 0 0 0 4 0 0
60380 +13 16 17 60 73 81 137 136 137 165 164 165 156 155 156 153 152 153
60381 +174 174 174 177 184 187 60 73 81 3 1 0 0 0 0 1 1 2
60382 +22 30 35 64 123 161 136 185 209 90 154 193 90 154 193 90 154 193
60383 +90 154 193 21 29 34 0 0 0 3 2 2 4 4 5 4 4 4
60384 +4 4 4 4 4 4
60385 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60386 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60387 +4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 3 3 3
60388 +0 0 0 0 0 0 10 13 16 60 74 84 157 156 157 174 174 174
60389 +174 174 174 158 157 158 153 152 153 154 153 154 156 155 156 155 154 155
60390 +156 155 156 155 154 155 154 153 154 157 156 157 154 153 154 153 152 153
60391 +163 162 163 174 174 174 177 184 187 137 136 137 60 73 81 13 16 17
60392 +4 0 0 0 0 0 3 3 3 5 5 5 4 4 4 4 4 4
60393 +5 5 5 4 4 4 1 1 1 0 0 0 3 3 3 41 54 63
60394 +131 129 131 174 174 174 174 174 174 174 174 174 167 166 167 174 174 174
60395 +190 197 201 137 136 137 24 26 27 4 0 0 16 21 25 50 82 103
60396 +90 154 193 136 185 209 90 154 193 101 161 196 101 161 196 101 161 196
60397 +31 91 132 3 6 7 0 0 0 4 4 4 4 4 4 4 4 4
60398 +4 4 4 4 4 4
60399 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60400 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60401 +4 4 4 4 4 4 4 4 4 2 2 2 0 0 0 4 0 0
60402 +4 0 0 43 57 68 137 136 137 177 184 187 174 174 174 163 162 163
60403 +155 154 155 155 154 155 156 155 156 155 154 155 158 157 158 165 164 165
60404 +167 166 167 166 165 166 163 162 163 157 156 157 155 154 155 155 154 155
60405 +153 152 153 156 155 156 167 166 167 174 174 174 174 174 174 131 129 131
60406 +41 54 63 5 5 5 0 0 0 0 0 0 3 3 3 4 4 4
60407 +1 1 1 0 0 0 1 0 0 26 28 28 125 124 125 174 174 174
60408 +177 184 187 174 174 174 174 174 174 156 155 156 131 129 131 137 136 137
60409 +125 124 125 24 26 27 4 0 0 41 65 82 90 154 193 136 185 209
60410 +136 185 209 101 161 196 53 118 160 37 112 160 90 154 193 34 86 122
60411 +7 12 15 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4
60412 +4 4 4 4 4 4
60413 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60414 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60415 +4 4 4 3 3 3 0 0 0 0 0 0 5 5 5 37 38 37
60416 +125 124 125 167 166 167 174 174 174 167 166 167 158 157 158 155 154 155
60417 +156 155 156 156 155 156 156 155 156 163 162 163 167 166 167 155 154 155
60418 +137 136 137 153 152 153 156 155 156 165 164 165 163 162 163 156 155 156
60419 +156 155 156 156 155 156 155 154 155 158 157 158 166 165 166 174 174 174
60420 +167 166 167 125 124 125 37 38 37 1 0 0 0 0 0 0 0 0
60421 +0 0 0 24 26 27 60 74 84 158 157 158 174 174 174 174 174 174
60422 +166 165 166 158 157 158 125 124 125 41 54 63 13 16 17 6 6 6
60423 +6 6 6 37 38 37 80 127 157 136 185 209 101 161 196 101 161 196
60424 +90 154 193 28 67 93 6 10 14 13 20 25 13 20 25 6 10 14
60425 +1 1 2 4 3 3 4 4 4 4 4 4 4 4 4 4 4 4
60426 +4 4 4 4 4 4
60427 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60428 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60429 +1 1 1 1 0 0 4 3 3 37 38 37 60 74 84 153 152 153
60430 +167 166 167 167 166 167 158 157 158 154 153 154 155 154 155 156 155 156
60431 +157 156 157 158 157 158 167 166 167 167 166 167 131 129 131 43 57 68
60432 +26 28 28 37 38 37 60 73 81 131 129 131 165 164 165 166 165 166
60433 +158 157 158 155 154 155 156 155 156 156 155 156 156 155 156 158 157 158
60434 +165 164 165 174 174 174 163 162 163 60 74 84 16 19 21 13 16 17
60435 +60 73 81 131 129 131 174 174 174 174 174 174 167 166 167 165 164 165
60436 +137 136 137 60 73 81 24 26 27 4 0 0 4 0 0 16 19 21
60437 +52 104 138 101 161 196 136 185 209 136 185 209 90 154 193 27 99 146
60438 +13 20 25 4 5 7 2 5 5 4 5 7 1 1 2 0 0 0
60439 +4 4 4 4 4 4 3 3 3 2 2 2 2 2 2 4 4 4
60440 +4 4 4 4 4 4
60441 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60442 +4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0
60443 +0 0 0 13 16 17 60 73 81 137 136 137 174 174 174 166 165 166
60444 +158 157 158 156 155 156 157 156 157 156 155 156 155 154 155 158 157 158
60445 +167 166 167 174 174 174 153 152 153 60 73 81 16 19 21 4 0 0
60446 +4 0 0 4 0 0 6 6 6 26 28 28 60 74 84 158 157 158
60447 +174 174 174 166 165 166 157 156 157 155 154 155 156 155 156 156 155 156
60448 +155 154 155 158 157 158 167 166 167 167 166 167 131 129 131 125 124 125
60449 +137 136 137 167 166 167 167 166 167 174 174 174 158 157 158 125 124 125
60450 +16 19 21 4 0 0 4 0 0 10 13 16 49 76 92 107 159 188
60451 +136 185 209 136 185 209 90 154 193 26 108 161 22 40 52 6 10 14
60452 +2 3 3 1 1 2 1 1 2 4 4 5 4 4 5 4 4 5
60453 +4 4 5 2 2 1 0 0 0 0 0 0 0 0 0 2 2 2
60454 +4 4 4 4 4 4
60455 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60456 +4 4 4 5 5 5 3 3 3 0 0 0 1 0 0 4 0 0
60457 +37 51 59 131 129 131 167 166 167 167 166 167 163 162 163 157 156 157
60458 +157 156 157 155 154 155 153 152 153 157 156 157 167 166 167 174 174 174
60459 +153 152 153 125 124 125 37 38 37 4 0 0 4 0 0 4 0 0
60460 +4 3 3 4 3 3 4 0 0 6 6 6 4 0 0 37 38 37
60461 +125 124 125 174 174 174 174 174 174 165 164 165 156 155 156 154 153 154
60462 +156 155 156 156 155 156 155 154 155 163 162 163 158 157 158 163 162 163
60463 +174 174 174 174 174 174 174 174 174 125 124 125 37 38 37 0 0 0
60464 +4 0 0 6 9 11 41 54 63 90 154 193 136 185 209 146 190 211
60465 +136 185 209 37 112 160 22 40 52 6 10 14 3 6 7 1 1 2
60466 +1 1 2 3 3 3 1 1 2 3 3 3 4 4 4 4 4 4
60467 +2 2 2 2 0 0 16 19 21 37 38 37 24 26 27 0 0 0
60468 +0 0 0 4 4 4
60469 +4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
60470 +4 4 4 0 0 0 0 0 0 0 0 0 26 28 28 120 125 127
60471 +158 157 158 174 174 174 165 164 165 157 156 157 155 154 155 156 155 156
60472 +153 152 153 153 152 153 167 166 167 174 174 174 174 174 174 125 124 125
60473 +37 38 37 4 0 0 0 0 0 4 0 0 4 3 3 4 4 4
60474 +4 4 4 4 4 4 5 5 5 4 0 0 4 0 0 4 0 0
60475 +4 3 3 43 57 68 137 136 137 174 174 174 174 174 174 165 164 165
60476 +154 153 154 153 152 153 153 152 153 153 152 153 163 162 163 174 174 174
60477 +174 174 174 153 152 153 60 73 81 6 6 6 4 0 0 4 3 3
60478 +32 43 50 80 127 157 136 185 209 146 190 211 146 190 211 90 154 193
60479 +28 67 93 28 67 93 40 71 93 3 6 7 1 1 2 2 5 5
60480 +50 82 103 79 117 143 26 37 45 0 0 0 3 3 3 1 1 1
60481 +0 0 0 41 54 63 137 136 137 174 174 174 153 152 153 60 73 81
60482 +2 0 0 0 0 0
60483 +4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 2 2 2
60484 +0 0 0 2 0 0 24 26 27 60 74 84 153 152 153 174 174 174
60485 +174 174 174 157 156 157 154 153 154 156 155 156 154 153 154 153 152 153
60486 +165 164 165 174 174 174 177 184 187 137 136 137 43 57 68 6 6 6
60487 +4 0 0 2 0 0 3 3 3 5 5 5 5 5 5 4 4 4
60488 +4 4 4 4 4 4 4 4 4 5 5 5 6 6 6 4 3 3
60489 +4 0 0 4 0 0 24 26 27 60 73 81 153 152 153 174 174 174
60490 +174 174 174 158 157 158 158 157 158 174 174 174 174 174 174 158 157 158
60491 +60 74 84 24 26 27 4 0 0 4 0 0 17 23 27 59 113 148
60492 +136 185 209 191 222 234 146 190 211 136 185 209 31 91 132 7 11 13
60493 +22 40 52 101 161 196 90 154 193 6 9 11 3 4 4 43 95 132
60494 +136 185 209 172 205 220 55 98 126 0 0 0 0 0 0 2 0 0
60495 +26 28 28 153 152 153 177 184 187 167 166 167 177 184 187 165 164 165
60496 +37 38 37 0 0 0
60497 +4 4 4 4 4 4 5 5 5 5 5 5 1 1 1 0 0 0
60498 +13 16 17 60 73 81 137 136 137 174 174 174 174 174 174 165 164 165
60499 +153 152 153 153 152 153 155 154 155 154 153 154 158 157 158 174 174 174
60500 +177 184 187 163 162 163 60 73 81 16 19 21 4 0 0 4 0 0
60501 +4 3 3 4 4 4 5 5 5 5 5 5 4 4 4 5 5 5
60502 +5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5
60503 +6 6 6 4 0 0 4 0 0 4 0 0 24 26 27 60 74 84
60504 +166 165 166 174 174 174 177 184 187 165 164 165 125 124 125 24 26 27
60505 +4 0 0 4 0 0 5 5 5 50 82 103 136 185 209 172 205 220
60506 +146 190 211 136 185 209 26 108 161 22 40 52 7 12 15 44 81 103
60507 +71 116 144 28 67 93 37 51 59 41 65 82 100 139 164 101 161 196
60508 +90 154 193 90 154 193 28 67 93 0 0 0 0 0 0 26 28 28
60509 +125 124 125 167 166 167 163 162 163 153 152 153 163 162 163 174 174 174
60510 +85 115 134 4 0 0
60511 +4 4 4 5 5 5 4 4 4 1 0 0 4 0 0 34 47 55
60512 +125 124 125 174 174 174 174 174 174 167 166 167 157 156 157 153 152 153
60513 +155 154 155 155 154 155 158 157 158 166 165 166 167 166 167 154 153 154
60514 +125 124 125 26 28 28 4 0 0 4 0 0 4 0 0 5 5 5
60515 +5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 1 1 1
60516 +0 0 0 0 0 0 1 1 1 4 4 4 4 4 4 4 4 4
60517 +5 5 5 5 5 5 4 3 3 4 0 0 4 0 0 6 6 6
60518 +37 38 37 131 129 131 137 136 137 37 38 37 0 0 0 4 0 0
60519 +4 5 5 43 61 72 90 154 193 172 205 220 146 190 211 136 185 209
60520 +90 154 193 28 67 93 13 20 25 43 61 72 71 116 144 44 81 103
60521 +2 5 5 7 11 13 59 113 148 101 161 196 90 154 193 28 67 93
60522 +13 20 25 6 10 14 0 0 0 13 16 17 60 73 81 137 136 137
60523 +166 165 166 158 157 158 156 155 156 154 153 154 167 166 167 174 174 174
60524 +60 73 81 4 0 0
60525 +4 4 4 4 4 4 0 0 0 3 3 3 60 74 84 174 174 174
60526 +174 174 174 167 166 167 163 162 163 155 154 155 157 156 157 155 154 155
60527 +156 155 156 163 162 163 167 166 167 158 157 158 125 124 125 37 38 37
60528 +4 3 3 4 0 0 4 0 0 6 6 6 6 6 6 5 5 5
60529 +4 4 4 4 4 4 4 4 4 1 1 1 0 0 0 2 3 3
60530 +10 13 16 7 11 13 1 0 0 0 0 0 2 2 1 4 4 4
60531 +4 4 4 4 4 4 4 4 4 5 5 5 4 3 3 4 0 0
60532 +4 0 0 7 11 13 13 16 17 4 0 0 3 3 3 34 47 55
60533 +80 127 157 146 190 211 172 205 220 136 185 209 136 185 209 136 185 209
60534 +28 67 93 22 40 52 55 98 126 55 98 126 21 29 34 7 11 13
60535 +50 82 103 101 161 196 101 161 196 35 83 115 13 20 25 2 2 1
60536 +1 1 2 1 1 2 37 51 59 131 129 131 174 174 174 174 174 174
60537 +167 166 167 163 162 163 163 162 163 167 166 167 174 174 174 125 124 125
60538 +16 19 21 4 0 0
60539 +4 4 4 4 0 0 4 0 0 60 74 84 174 174 174 174 174 174
60540 +158 157 158 155 154 155 155 154 155 156 155 156 155 154 155 158 157 158
60541 +167 166 167 165 164 165 131 129 131 60 73 81 13 16 17 4 0 0
60542 +4 0 0 4 3 3 6 6 6 4 3 3 5 5 5 4 4 4
60543 +4 4 4 3 2 2 0 0 0 0 0 0 7 11 13 45 69 86
60544 +80 127 157 71 116 144 43 61 72 7 11 13 0 0 0 1 1 1
60545 +4 3 3 4 4 4 4 4 4 4 4 4 6 6 6 5 5 5
60546 +3 2 2 4 0 0 1 0 0 21 29 34 59 113 148 136 185 209
60547 +146 190 211 136 185 209 136 185 209 136 185 209 136 185 209 136 185 209
60548 +68 124 159 44 81 103 22 40 52 13 16 17 43 61 72 90 154 193
60549 +136 185 209 59 113 148 21 29 34 3 4 3 1 1 1 0 0 0
60550 +24 26 27 125 124 125 163 162 163 174 174 174 166 165 166 165 164 165
60551 +163 162 163 125 124 125 125 124 125 125 124 125 125 124 125 26 28 28
60552 +4 0 0 4 3 3
60553 +3 3 3 0 0 0 24 26 27 153 152 153 177 184 187 158 157 158
60554 +156 155 156 156 155 156 155 154 155 155 154 155 165 164 165 174 174 174
60555 +155 154 155 60 74 84 26 28 28 4 0 0 4 0 0 3 1 0
60556 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3
60557 +2 0 0 0 0 0 0 0 0 32 43 50 72 125 159 101 161 196
60558 +136 185 209 101 161 196 101 161 196 79 117 143 32 43 50 0 0 0
60559 +0 0 0 2 2 2 4 4 4 4 4 4 3 3 3 1 0 0
60560 +0 0 0 4 5 5 49 76 92 101 161 196 146 190 211 146 190 211
60561 +136 185 209 136 185 209 136 185 209 136 185 209 136 185 209 90 154 193
60562 +28 67 93 13 16 17 37 51 59 80 127 157 136 185 209 90 154 193
60563 +22 40 52 6 9 11 3 4 3 2 2 1 16 19 21 60 73 81
60564 +137 136 137 163 162 163 158 157 158 166 165 166 167 166 167 153 152 153
60565 +60 74 84 37 38 37 6 6 6 13 16 17 4 0 0 1 0 0
60566 +3 2 2 4 4 4
60567 +3 2 2 4 0 0 37 38 37 137 136 137 167 166 167 158 157 158
60568 +157 156 157 154 153 154 157 156 157 167 166 167 174 174 174 125 124 125
60569 +37 38 37 4 0 0 4 0 0 4 0 0 4 3 3 4 4 4
60570 +4 4 4 4 4 4 5 5 5 5 5 5 1 1 1 0 0 0
60571 +0 0 0 16 21 25 55 98 126 90 154 193 136 185 209 101 161 196
60572 +101 161 196 101 161 196 136 185 209 136 185 209 101 161 196 55 98 126
60573 +14 17 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
60574 +22 40 52 90 154 193 146 190 211 146 190 211 136 185 209 136 185 209
60575 +136 185 209 136 185 209 136 185 209 101 161 196 35 83 115 7 11 13
60576 +17 23 27 59 113 148 136 185 209 101 161 196 34 86 122 7 12 15
60577 +2 5 5 3 4 3 6 6 6 60 73 81 131 129 131 163 162 163
60578 +166 165 166 174 174 174 174 174 174 163 162 163 125 124 125 41 54 63
60579 +13 16 17 4 0 0 4 0 0 4 0 0 1 0 0 2 2 2
60580 +4 4 4 4 4 4
60581 +1 1 1 2 1 0 43 57 68 137 136 137 153 152 153 153 152 153
60582 +163 162 163 156 155 156 165 164 165 167 166 167 60 74 84 6 6 6
60583 +4 0 0 4 0 0 5 5 5 4 4 4 4 4 4 4 4 4
60584 +4 5 5 6 6 6 4 3 3 0 0 0 0 0 0 11 15 18
60585 +40 71 93 100 139 164 101 161 196 101 161 196 101 161 196 101 161 196
60586 +101 161 196 101 161 196 101 161 196 101 161 196 136 185 209 136 185 209
60587 +101 161 196 45 69 86 6 6 6 0 0 0 17 23 27 55 98 126
60588 +136 185 209 146 190 211 136 185 209 136 185 209 136 185 209 136 185 209
60589 +136 185 209 136 185 209 90 154 193 22 40 52 7 11 13 50 82 103
60590 +136 185 209 136 185 209 53 118 160 22 40 52 7 11 13 2 5 5
60591 +3 4 3 37 38 37 125 124 125 157 156 157 166 165 166 167 166 167
60592 +174 174 174 174 174 174 137 136 137 60 73 81 4 0 0 4 0 0
60593 +4 0 0 4 0 0 5 5 5 3 3 3 3 3 3 4 4 4
60594 +4 4 4 4 4 4
60595 +4 0 0 4 0 0 41 54 63 137 136 137 125 124 125 131 129 131
60596 +155 154 155 167 166 167 174 174 174 60 74 84 6 6 6 4 0 0
60597 +4 3 3 6 6 6 4 4 4 4 4 4 4 4 4 5 5 5
60598 +4 4 4 1 1 1 0 0 0 3 6 7 41 65 82 72 125 159
60599 +101 161 196 101 161 196 101 161 196 90 154 193 90 154 193 101 161 196
60600 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 136 185 209
60601 +136 185 209 136 185 209 80 127 157 55 98 126 101 161 196 146 190 211
60602 +136 185 209 136 185 209 136 185 209 101 161 196 136 185 209 101 161 196
60603 +136 185 209 101 161 196 35 83 115 22 30 35 101 161 196 172 205 220
60604 +90 154 193 28 67 93 7 11 13 2 5 5 3 4 3 13 16 17
60605 +85 115 134 167 166 167 174 174 174 174 174 174 174 174 174 174 174 174
60606 +167 166 167 60 74 84 13 16 17 4 0 0 4 0 0 4 3 3
60607 +6 6 6 5 5 5 4 4 4 5 5 5 4 4 4 5 5 5
60608 +5 5 5 5 5 5
60609 +1 1 1 4 0 0 41 54 63 137 136 137 137 136 137 125 124 125
60610 +131 129 131 167 166 167 157 156 157 37 38 37 6 6 6 4 0 0
60611 +6 6 6 5 5 5 4 4 4 4 4 4 4 5 5 2 2 1
60612 +0 0 0 0 0 0 26 37 45 58 111 146 101 161 196 101 161 196
60613 +101 161 196 90 154 193 90 154 193 90 154 193 101 161 196 101 161 196
60614 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 101 161 196
60615 +101 161 196 136 185 209 136 185 209 136 185 209 146 190 211 136 185 209
60616 +136 185 209 101 161 196 136 185 209 136 185 209 101 161 196 136 185 209
60617 +101 161 196 136 185 209 136 185 209 136 185 209 136 185 209 16 89 141
60618 +7 11 13 2 5 5 2 5 5 13 16 17 60 73 81 154 154 154
60619 +174 174 174 174 174 174 174 174 174 174 174 174 163 162 163 125 124 125
60620 +24 26 27 4 0 0 4 0 0 4 0 0 5 5 5 5 5 5
60621 +4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5
60622 +5 5 5 4 4 4
60623 +4 0 0 6 6 6 37 38 37 137 136 137 137 136 137 131 129 131
60624 +131 129 131 153 152 153 131 129 131 26 28 28 4 0 0 4 3 3
60625 +6 6 6 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0
60626 +13 20 25 51 88 114 90 154 193 101 161 196 101 161 196 90 154 193
60627 +90 154 193 90 154 193 90 154 193 90 154 193 90 154 193 101 161 196
60628 +101 161 196 101 161 196 101 161 196 101 161 196 136 185 209 101 161 196
60629 +101 161 196 136 185 209 101 161 196 136 185 209 136 185 209 101 161 196
60630 +136 185 209 101 161 196 136 185 209 101 161 196 101 161 196 101 161 196
60631 +136 185 209 136 185 209 136 185 209 37 112 160 21 29 34 5 7 8
60632 +2 5 5 13 16 17 43 57 68 131 129 131 174 174 174 174 174 174
60633 +174 174 174 167 166 167 157 156 157 125 124 125 37 38 37 4 0 0
60634 +4 0 0 4 0 0 5 5 5 5 5 5 4 4 4 4 4 4
60635 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60636 +4 4 4 4 4 4
60637 +1 1 1 4 0 0 41 54 63 153 152 153 137 136 137 137 136 137
60638 +137 136 137 153 152 153 125 124 125 24 26 27 4 0 0 3 2 2
60639 +4 4 4 4 4 4 4 3 3 4 0 0 3 6 7 43 61 72
60640 +64 123 161 101 161 196 90 154 193 90 154 193 90 154 193 90 154 193
60641 +90 154 193 90 154 193 90 154 193 90 154 193 101 161 196 90 154 193
60642 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 101 161 196
60643 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 101 161 196
60644 +136 185 209 101 161 196 101 161 196 136 185 209 136 185 209 101 161 196
60645 +101 161 196 90 154 193 28 67 93 13 16 17 7 11 13 3 6 7
60646 +37 51 59 125 124 125 163 162 163 174 174 174 167 166 167 166 165 166
60647 +167 166 167 131 129 131 60 73 81 4 0 0 4 0 0 4 0 0
60648 +3 3 3 5 5 5 6 6 6 4 4 4 4 4 4 4 4 4
60649 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60650 +4 4 4 4 4 4
60651 +4 0 0 4 0 0 41 54 63 137 136 137 153 152 153 137 136 137
60652 +153 152 153 157 156 157 125 124 125 24 26 27 0 0 0 2 2 2
60653 +4 4 4 4 4 4 2 0 0 0 0 0 28 67 93 90 154 193
60654 +90 154 193 90 154 193 90 154 193 90 154 193 64 123 161 90 154 193
60655 +90 154 193 90 154 193 90 154 193 90 154 193 90 154 193 101 161 196
60656 +90 154 193 101 161 196 101 161 196 101 161 196 90 154 193 136 185 209
60657 +101 161 196 101 161 196 136 185 209 101 161 196 136 185 209 101 161 196
60658 +101 161 196 101 161 196 136 185 209 101 161 196 101 161 196 90 154 193
60659 +35 83 115 13 16 17 3 6 7 2 5 5 13 16 17 60 74 84
60660 +154 154 154 166 165 166 165 164 165 158 157 158 163 162 163 157 156 157
60661 +60 74 84 13 16 17 4 0 0 4 0 0 3 2 2 4 4 4
60662 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60663 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60664 +4 4 4 4 4 4
60665 +1 1 1 4 0 0 41 54 63 157 156 157 155 154 155 137 136 137
60666 +153 152 153 158 157 158 137 136 137 26 28 28 2 0 0 2 2 2
60667 +4 4 4 4 4 4 1 0 0 6 10 14 34 86 122 90 154 193
60668 +64 123 161 90 154 193 64 123 161 90 154 193 90 154 193 90 154 193
60669 +64 123 161 90 154 193 90 154 193 90 154 193 90 154 193 90 154 193
60670 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 101 161 196
60671 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 101 161 196
60672 +136 185 209 101 161 196 136 185 209 90 154 193 26 108 161 22 40 52
60673 +13 16 17 5 7 8 2 5 5 2 5 5 37 38 37 165 164 165
60674 +174 174 174 163 162 163 154 154 154 165 164 165 167 166 167 60 73 81
60675 +6 6 6 4 0 0 4 0 0 4 4 4 4 4 4 4 4 4
60676 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60677 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60678 +4 4 4 4 4 4
60679 +4 0 0 6 6 6 41 54 63 156 155 156 158 157 158 153 152 153
60680 +156 155 156 165 164 165 137 136 137 26 28 28 0 0 0 2 2 2
60681 +4 4 5 4 4 4 2 0 0 7 12 15 31 96 139 64 123 161
60682 +90 154 193 64 123 161 90 154 193 90 154 193 64 123 161 90 154 193
60683 +90 154 193 90 154 193 90 154 193 90 154 193 90 154 193 90 154 193
60684 +90 154 193 90 154 193 90 154 193 101 161 196 101 161 196 101 161 196
60685 +101 161 196 101 161 196 101 161 196 101 161 196 101 161 196 136 185 209
60686 +101 161 196 136 185 209 26 108 161 22 40 52 7 11 13 5 7 8
60687 +2 5 5 2 5 5 2 5 5 2 2 1 37 38 37 158 157 158
60688 +174 174 174 154 154 154 156 155 156 167 166 167 165 164 165 37 38 37
60689 +4 0 0 4 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60690 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60691 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60692 +4 4 4 4 4 4
60693 +3 1 0 4 0 0 60 73 81 157 156 157 163 162 163 153 152 153
60694 +158 157 158 167 166 167 137 136 137 26 28 28 2 0 0 2 2 2
60695 +4 5 5 4 4 4 4 0 0 7 12 15 24 86 132 26 108 161
60696 +37 112 160 64 123 161 90 154 193 64 123 161 90 154 193 90 154 193
60697 +90 154 193 90 154 193 90 154 193 90 154 193 90 154 193 90 154 193
60698 +90 154 193 101 161 196 90 154 193 101 161 196 101 161 196 101 161 196
60699 +101 161 196 101 161 196 101 161 196 136 185 209 101 161 196 136 185 209
60700 +90 154 193 35 83 115 13 16 17 13 16 17 7 11 13 3 6 7
60701 +5 7 8 6 6 6 3 4 3 2 2 1 30 32 34 154 154 154
60702 +167 166 167 154 154 154 154 154 154 174 174 174 165 164 165 37 38 37
60703 +6 6 6 4 0 0 6 6 6 4 4 4 4 4 4 4 4 4
60704 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60705 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60706 +4 4 4 4 4 4
60707 +4 0 0 4 0 0 41 54 63 163 162 163 166 165 166 154 154 154
60708 +163 162 163 174 174 174 137 136 137 26 28 28 0 0 0 2 2 2
60709 +4 5 5 4 4 5 1 1 2 6 10 14 28 67 93 18 97 151
60710 +18 97 151 18 97 151 26 108 161 37 112 160 37 112 160 90 154 193
60711 +64 123 161 90 154 193 90 154 193 90 154 193 90 154 193 101 161 196
60712 +90 154 193 101 161 196 101 161 196 90 154 193 101 161 196 101 161 196
60713 +101 161 196 101 161 196 101 161 196 136 185 209 90 154 193 16 89 141
60714 +13 20 25 7 11 13 5 7 8 5 7 8 2 5 5 4 5 5
60715 +3 4 3 4 5 5 3 4 3 0 0 0 37 38 37 158 157 158
60716 +174 174 174 158 157 158 158 157 158 167 166 167 174 174 174 41 54 63
60717 +4 0 0 3 2 2 5 5 5 4 4 4 4 4 4 4 4 4
60718 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60719 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60720 +4 4 4 4 4 4
60721 +1 1 1 4 0 0 60 73 81 165 164 165 174 174 174 158 157 158
60722 +167 166 167 174 174 174 153 152 153 26 28 28 2 0 0 2 2 2
60723 +4 5 5 4 4 4 4 0 0 7 12 15 10 87 144 10 87 144
60724 +18 97 151 18 97 151 18 97 151 26 108 161 26 108 161 26 108 161
60725 +26 108 161 37 112 160 53 118 160 90 154 193 90 154 193 90 154 193
60726 +90 154 193 90 154 193 101 161 196 101 161 196 101 161 196 101 161 196
60727 +101 161 196 136 185 209 90 154 193 26 108 161 22 40 52 13 16 17
60728 +7 11 13 3 6 7 5 7 8 5 7 8 2 5 5 4 5 5
60729 +4 5 5 6 6 6 3 4 3 0 0 0 30 32 34 158 157 158
60730 +174 174 174 156 155 156 155 154 155 165 164 165 154 153 154 37 38 37
60731 +4 0 0 4 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60732 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60733 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60734 +4 4 4 4 4 4
60735 +4 0 0 4 0 0 60 73 81 167 166 167 174 174 174 163 162 163
60736 +174 174 174 174 174 174 153 152 153 26 28 28 0 0 0 3 3 3
60737 +5 5 5 4 4 4 1 1 2 7 12 15 28 67 93 18 97 151
60738 +18 97 151 18 97 151 18 97 151 18 97 151 18 97 151 26 108 161
60739 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60740 +90 154 193 26 108 161 90 154 193 90 154 193 90 154 193 101 161 196
60741 +101 161 196 26 108 161 22 40 52 13 16 17 7 11 13 2 5 5
60742 +2 5 5 6 6 6 2 5 5 4 5 5 4 5 5 4 5 5
60743 +3 4 3 5 5 5 3 4 3 2 0 0 30 32 34 137 136 137
60744 +153 152 153 137 136 137 131 129 131 137 136 137 131 129 131 37 38 37
60745 +4 0 0 4 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60746 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60747 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60748 +4 4 4 4 4 4
60749 +1 1 1 4 0 0 60 73 81 167 166 167 174 174 174 166 165 166
60750 +174 174 174 177 184 187 153 152 153 30 32 34 1 0 0 3 3 3
60751 +5 5 5 4 3 3 4 0 0 7 12 15 10 87 144 10 87 144
60752 +18 97 151 18 97 151 18 97 151 26 108 161 26 108 161 26 108 161
60753 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60754 +26 108 161 26 108 161 26 108 161 90 154 193 90 154 193 26 108 161
60755 +35 83 115 13 16 17 7 11 13 5 7 8 3 6 7 5 7 8
60756 +2 5 5 6 6 6 4 5 5 4 5 5 3 4 3 4 5 5
60757 +3 4 3 6 6 6 3 4 3 0 0 0 26 28 28 125 124 125
60758 +131 129 131 125 124 125 125 124 125 131 129 131 131 129 131 37 38 37
60759 +4 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60760 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60761 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60762 +4 4 4 4 4 4
60763 +3 1 0 4 0 0 60 73 81 174 174 174 177 184 187 167 166 167
60764 +174 174 174 177 184 187 153 152 153 30 32 34 0 0 0 3 3 3
60765 +5 5 5 4 4 4 1 1 2 6 10 14 28 67 93 18 97 151
60766 +18 97 151 18 97 151 18 97 151 18 97 151 18 97 151 26 108 161
60767 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60768 +26 108 161 90 154 193 26 108 161 26 108 161 24 86 132 13 20 25
60769 +7 11 13 13 20 25 22 40 52 5 7 8 3 4 3 3 4 3
60770 +4 5 5 3 4 3 4 5 5 3 4 3 4 5 5 3 4 3
60771 +4 4 4 5 5 5 3 3 3 2 0 0 26 28 28 125 124 125
60772 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60773 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60774 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60775 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60776 +4 4 4 4 4 4
60777 +1 1 1 4 0 0 60 73 81 174 174 174 177 184 187 174 174 174
60778 +174 174 174 190 197 201 157 156 157 30 32 34 1 0 0 3 3 3
60779 +5 5 5 4 3 3 4 0 0 7 12 15 10 87 144 10 87 144
60780 +18 97 151 19 95 150 19 95 150 18 97 151 18 97 151 26 108 161
60781 +18 97 151 26 108 161 26 108 161 26 108 161 26 108 161 90 154 193
60782 +26 108 161 26 108 161 26 108 161 22 40 52 2 5 5 3 4 3
60783 +28 67 93 37 112 160 34 86 122 2 5 5 3 4 3 3 4 3
60784 +3 4 3 3 4 3 3 4 3 2 2 1 3 4 3 4 4 4
60785 +4 5 5 5 5 5 3 3 3 0 0 0 26 28 28 131 129 131
60786 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60787 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60788 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60789 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60790 +4 4 4 4 4 4
60791 +4 0 0 4 0 0 60 73 81 174 174 174 177 184 187 174 174 174
60792 +174 174 174 190 197 201 158 157 158 30 32 34 0 0 0 2 2 2
60793 +5 5 5 4 4 4 1 1 2 6 10 14 28 67 93 18 97 151
60794 +10 87 144 19 95 150 19 95 150 18 97 151 18 97 151 18 97 151
60795 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60796 +18 97 151 22 40 52 2 5 5 2 2 1 22 40 52 26 108 161
60797 +90 154 193 37 112 160 22 40 52 3 4 3 13 20 25 22 30 35
60798 +3 6 7 1 1 1 2 2 2 6 9 11 5 5 5 4 3 3
60799 +4 4 4 5 5 5 3 3 3 2 0 0 26 28 28 131 129 131
60800 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60801 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60802 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60803 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60804 +4 4 4 4 4 4
60805 +1 1 1 4 0 0 60 73 81 177 184 187 193 200 203 174 174 174
60806 +177 184 187 193 200 203 163 162 163 30 32 34 4 0 0 2 2 2
60807 +5 5 5 4 3 3 4 0 0 6 10 14 24 86 132 10 87 144
60808 +10 87 144 10 87 144 19 95 150 19 95 150 19 95 150 18 97 151
60809 +26 108 161 26 108 161 26 108 161 90 154 193 26 108 161 28 67 93
60810 +6 10 14 2 5 5 13 20 25 24 86 132 37 112 160 90 154 193
60811 +10 87 144 7 12 15 2 5 5 28 67 93 37 112 160 28 67 93
60812 +2 2 1 7 12 15 35 83 115 28 67 93 3 6 7 1 0 0
60813 +4 4 4 5 5 5 3 3 3 0 0 0 26 28 28 131 129 131
60814 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60815 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60816 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60817 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60818 +4 4 4 4 4 4
60819 +4 0 0 4 0 0 60 73 81 174 174 174 190 197 201 174 174 174
60820 +177 184 187 193 200 203 163 162 163 30 32 34 0 0 0 2 2 2
60821 +5 5 5 4 4 4 1 1 2 6 10 14 28 67 93 10 87 144
60822 +10 87 144 16 89 141 19 95 150 10 87 144 26 108 161 26 108 161
60823 +26 108 161 26 108 161 26 108 161 28 67 93 6 10 14 1 1 2
60824 +7 12 15 28 67 93 26 108 161 16 89 141 24 86 132 21 29 34
60825 +3 4 3 21 29 34 37 112 160 37 112 160 27 99 146 21 29 34
60826 +21 29 34 26 108 161 90 154 193 35 83 115 1 1 2 2 0 0
60827 +4 4 4 5 5 5 3 3 3 2 0 0 26 28 28 125 124 125
60828 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60829 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60830 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60831 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60832 +4 4 4 4 4 4
60833 +3 1 0 4 0 0 60 73 81 193 200 203 193 200 203 174 174 174
60834 +190 197 201 193 200 203 165 164 165 37 38 37 4 0 0 2 2 2
60835 +5 5 5 4 3 3 4 0 0 6 10 14 24 86 132 10 87 144
60836 +10 87 144 10 87 144 16 89 141 18 97 151 18 97 151 10 87 144
60837 +24 86 132 24 86 132 13 20 25 4 5 7 4 5 7 22 40 52
60838 +18 97 151 37 112 160 26 108 161 7 12 15 1 1 1 0 0 0
60839 +28 67 93 37 112 160 26 108 161 28 67 93 22 40 52 28 67 93
60840 +26 108 161 90 154 193 26 108 161 10 87 144 0 0 0 2 0 0
60841 +4 4 4 5 5 5 3 3 3 0 0 0 26 28 28 131 129 131
60842 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60843 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60844 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60845 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60846 +4 4 4 4 4 4
60847 +4 0 0 6 6 6 60 73 81 174 174 174 193 200 203 174 174 174
60848 +190 197 201 193 200 203 165 164 165 30 32 34 0 0 0 2 2 2
60849 +5 5 5 4 4 4 1 1 2 6 10 14 28 67 93 10 87 144
60850 +10 87 144 10 87 144 10 87 144 18 97 151 28 67 93 6 10 14
60851 +0 0 0 1 1 2 4 5 7 13 20 25 16 89 141 26 108 161
60852 +26 108 161 26 108 161 24 86 132 6 9 11 2 3 3 22 40 52
60853 +37 112 160 16 89 141 22 40 52 28 67 93 26 108 161 26 108 161
60854 +90 154 193 26 108 161 26 108 161 28 67 93 1 1 1 4 0 0
60855 +4 4 4 5 5 5 3 3 3 4 0 0 26 28 28 124 126 130
60856 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60857 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60858 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60859 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60860 +4 4 4 4 4 4
60861 +4 0 0 4 0 0 60 73 81 193 200 203 193 200 203 174 174 174
60862 +193 200 203 193 200 203 167 166 167 37 38 37 4 0 0 2 2 2
60863 +5 5 5 4 4 4 4 0 0 6 10 14 28 67 93 10 87 144
60864 +10 87 144 10 87 144 18 97 151 10 87 144 13 20 25 4 5 7
60865 +1 1 2 1 1 1 22 40 52 26 108 161 26 108 161 26 108 161
60866 +26 108 161 26 108 161 26 108 161 24 86 132 22 40 52 22 40 52
60867 +22 40 52 22 40 52 10 87 144 26 108 161 26 108 161 26 108 161
60868 +26 108 161 26 108 161 90 154 193 10 87 144 0 0 0 4 0 0
60869 +4 4 4 5 5 5 3 3 3 0 0 0 26 28 28 131 129 131
60870 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60871 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60872 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60873 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60874 +4 4 4 4 4 4
60875 +4 0 0 6 6 6 60 73 81 174 174 174 220 221 221 174 174 174
60876 +190 197 201 205 212 215 167 166 167 30 32 34 0 0 0 2 2 2
60877 +5 5 5 4 4 4 1 1 2 6 10 14 28 67 93 10 87 144
60878 +10 87 144 10 87 144 10 87 144 10 87 144 22 40 52 1 1 2
60879 +2 0 0 1 1 2 24 86 132 26 108 161 26 108 161 26 108 161
60880 +26 108 161 19 95 150 16 89 141 10 87 144 22 40 52 22 40 52
60881 +10 87 144 26 108 161 37 112 160 26 108 161 26 108 161 26 108 161
60882 +26 108 161 26 108 161 26 108 161 28 67 93 2 0 0 3 1 0
60883 +4 4 4 5 5 5 3 3 3 2 0 0 26 28 28 131 129 131
60884 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60885 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60886 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60887 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60888 +4 4 4 4 4 4
60889 +4 0 0 4 0 0 60 73 81 220 221 221 190 197 201 174 174 174
60890 +193 200 203 193 200 203 174 174 174 37 38 37 4 0 0 2 2 2
60891 +5 5 5 4 4 4 3 2 2 1 1 2 13 20 25 10 87 144
60892 +10 87 144 10 87 144 10 87 144 10 87 144 10 87 144 13 20 25
60893 +13 20 25 22 40 52 10 87 144 18 97 151 18 97 151 26 108 161
60894 +10 87 144 13 20 25 6 10 14 21 29 34 24 86 132 18 97 151
60895 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60896 +26 108 161 90 154 193 18 97 151 13 20 25 0 0 0 4 3 3
60897 +4 4 4 5 5 5 3 3 3 0 0 0 26 28 28 131 129 131
60898 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60899 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60900 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60901 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60902 +4 4 4 4 4 4
60903 +4 0 0 6 6 6 60 73 81 174 174 174 220 221 221 174 174 174
60904 +190 197 201 220 221 221 167 166 167 30 32 34 1 0 0 2 2 2
60905 +5 5 5 4 4 4 4 4 5 2 5 5 4 5 7 13 20 25
60906 +28 67 93 10 87 144 10 87 144 10 87 144 10 87 144 10 87 144
60907 +10 87 144 10 87 144 18 97 151 10 87 144 18 97 151 18 97 151
60908 +28 67 93 2 3 3 0 0 0 28 67 93 26 108 161 26 108 161
60909 +26 108 161 26 108 161 26 108 161 26 108 161 26 108 161 26 108 161
60910 +26 108 161 10 87 144 13 20 25 1 1 2 3 2 2 4 4 4
60911 +4 4 4 5 5 5 3 3 3 2 0 0 26 28 28 131 129 131
60912 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60913 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60914 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60915 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60916 +4 4 4 4 4 4
60917 +4 0 0 4 0 0 60 73 81 220 221 221 190 197 201 174 174 174
60918 +193 200 203 193 200 203 174 174 174 26 28 28 4 0 0 4 3 3
60919 +5 5 5 4 4 4 4 4 4 4 4 5 1 1 2 2 5 5
60920 +4 5 7 22 40 52 10 87 144 10 87 144 18 97 151 10 87 144
60921 +10 87 144 10 87 144 10 87 144 10 87 144 10 87 144 18 97 151
60922 +10 87 144 28 67 93 22 40 52 10 87 144 26 108 161 18 97 151
60923 +18 97 151 18 97 151 26 108 161 26 108 161 26 108 161 26 108 161
60924 +22 40 52 1 1 2 0 0 0 2 3 3 4 4 4 4 4 4
60925 +4 4 4 5 5 5 4 4 4 0 0 0 26 28 28 131 129 131
60926 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60927 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60928 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60929 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60930 +4 4 4 4 4 4
60931 +4 0 0 6 6 6 60 73 81 174 174 174 220 221 221 174 174 174
60932 +190 197 201 220 221 221 190 197 201 41 54 63 4 0 0 2 2 2
60933 +6 6 6 4 4 4 4 4 4 4 4 5 4 4 5 3 3 3
60934 +1 1 2 1 1 2 6 10 14 22 40 52 10 87 144 18 97 151
60935 +18 97 151 10 87 144 10 87 144 10 87 144 18 97 151 10 87 144
60936 +10 87 144 18 97 151 26 108 161 18 97 151 18 97 151 10 87 144
60937 +26 108 161 26 108 161 26 108 161 10 87 144 28 67 93 6 10 14
60938 +1 1 2 1 1 2 4 3 3 4 4 5 4 4 4 4 4 4
60939 +5 5 5 5 5 5 1 1 1 4 0 0 37 51 59 137 136 137
60940 +137 136 137 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60941 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60942 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60943 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60944 +4 4 4 4 4 4
60945 +4 0 0 4 0 0 60 73 81 220 221 221 193 200 203 174 174 174
60946 +193 200 203 193 200 203 220 221 221 137 136 137 13 16 17 4 0 0
60947 +2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5
60948 +4 4 5 4 3 3 1 1 2 4 5 7 13 20 25 28 67 93
60949 +10 87 144 10 87 144 10 87 144 10 87 144 10 87 144 10 87 144
60950 +10 87 144 18 97 151 18 97 151 10 87 144 18 97 151 26 108 161
60951 +26 108 161 18 97 151 28 67 93 6 10 14 0 0 0 0 0 0
60952 +2 3 3 4 5 5 4 4 5 4 4 4 4 4 4 5 5 5
60953 +3 3 3 1 1 1 0 0 0 16 19 21 125 124 125 137 136 137
60954 +131 129 131 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60955 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60956 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60957 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60958 +4 4 4 4 4 4
60959 +4 0 0 6 6 6 60 73 81 174 174 174 220 221 221 174 174 174
60960 +193 200 203 190 197 201 220 221 221 220 221 221 153 152 153 30 32 34
60961 +0 0 0 0 0 0 2 2 2 4 4 4 4 4 4 4 4 4
60962 +4 4 4 4 5 5 4 5 7 1 1 2 1 1 2 4 5 7
60963 +13 20 25 28 67 93 10 87 144 18 97 151 10 87 144 10 87 144
60964 +10 87 144 10 87 144 10 87 144 18 97 151 26 108 161 18 97 151
60965 +28 67 93 7 12 15 0 0 0 0 0 0 2 2 1 4 4 4
60966 +4 5 5 4 5 5 4 4 4 4 4 4 3 3 3 0 0 0
60967 +0 0 0 0 0 0 37 38 37 125 124 125 158 157 158 131 129 131
60968 +125 124 125 125 124 125 125 124 125 137 136 137 131 129 131 37 38 37
60969 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60970 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60971 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60972 +4 4 4 4 4 4
60973 +4 3 3 4 0 0 41 54 63 193 200 203 220 221 221 174 174 174
60974 +193 200 203 193 200 203 193 200 203 220 221 221 244 246 246 193 200 203
60975 +120 125 127 5 5 5 1 0 0 0 0 0 1 1 1 4 4 4
60976 +4 4 4 4 4 4 4 5 5 4 5 5 4 4 5 1 1 2
60977 +4 5 7 4 5 7 22 40 52 10 87 144 10 87 144 10 87 144
60978 +10 87 144 10 87 144 18 97 151 10 87 144 10 87 144 13 20 25
60979 +4 5 7 2 3 3 1 1 2 4 4 4 4 5 5 4 4 4
60980 +4 4 4 4 4 4 4 4 4 1 1 1 0 0 0 1 1 2
60981 +24 26 27 60 74 84 153 152 153 163 162 163 137 136 137 125 124 125
60982 +125 124 125 125 124 125 125 124 125 137 136 137 125 124 125 26 28 28
60983 +0 0 0 3 3 3 5 5 5 4 4 4 4 4 4 4 4 4
60984 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60985 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60986 +4 4 4 4 4 4
60987 +4 0 0 6 6 6 26 28 28 156 155 156 220 221 221 220 221 221
60988 +174 174 174 193 200 203 193 200 203 193 200 203 205 212 215 220 221 221
60989 +220 221 221 167 166 167 60 73 81 7 11 13 0 0 0 0 0 0
60990 +3 3 3 4 4 4 4 4 4 4 4 4 4 4 5 4 4 5
60991 +4 4 5 1 1 2 1 1 2 4 5 7 22 40 52 10 87 144
60992 +10 87 144 10 87 144 10 87 144 22 40 52 4 5 7 1 1 2
60993 +1 1 2 4 4 5 4 4 4 4 4 4 4 4 4 4 4 4
60994 +5 5 5 2 2 2 0 0 0 4 0 0 16 19 21 60 73 81
60995 +137 136 137 167 166 167 158 157 158 137 136 137 131 129 131 131 129 131
60996 +125 124 125 125 124 125 131 129 131 155 154 155 60 74 84 5 7 8
60997 +0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60998 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
60999 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61000 +4 4 4 4 4 4
61001 +5 5 5 4 0 0 4 0 0 60 73 81 193 200 203 220 221 221
61002 +193 200 203 193 200 203 193 200 203 193 200 203 205 212 215 220 221 221
61003 +220 221 221 220 221 221 220 221 221 137 136 137 43 57 68 6 6 6
61004 +4 0 0 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4
61005 +4 4 5 4 4 5 3 2 2 1 1 2 2 5 5 13 20 25
61006 +22 40 52 22 40 52 13 20 25 2 3 3 1 1 2 3 3 3
61007 +4 5 7 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61008 +1 1 1 0 0 0 2 3 3 41 54 63 131 129 131 166 165 166
61009 +166 165 166 155 154 155 153 152 153 137 136 137 137 136 137 125 124 125
61010 +125 124 125 137 136 137 137 136 137 125 124 125 37 38 37 4 3 3
61011 +4 3 3 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4
61012 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61013 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61014 +4 4 4 4 4 4
61015 +4 3 3 6 6 6 6 6 6 13 16 17 60 73 81 167 166 167
61016 +220 221 221 220 221 221 220 221 221 193 200 203 193 200 203 193 200 203
61017 +205 212 215 220 221 221 220 221 221 244 246 246 205 212 215 125 124 125
61018 +24 26 27 0 0 0 0 0 0 2 2 2 5 5 5 5 5 5
61019 +4 4 4 4 4 4 4 4 4 4 4 5 1 1 2 4 5 7
61020 +4 5 7 4 5 7 1 1 2 3 2 2 4 4 5 4 4 4
61021 +4 4 4 4 4 4 5 5 5 4 4 4 0 0 0 0 0 0
61022 +2 0 0 26 28 28 125 124 125 174 174 174 174 174 174 166 165 166
61023 +156 155 156 153 152 153 137 136 137 137 136 137 131 129 131 137 136 137
61024 +137 136 137 137 136 137 60 74 84 30 32 34 4 0 0 4 0 0
61025 +5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61026 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61027 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61028 +4 4 4 4 4 4
61029 +5 5 5 6 6 6 4 0 0 4 0 0 6 6 6 26 28 28
61030 +125 124 125 174 174 174 220 221 221 220 221 221 220 221 221 193 200 203
61031 +205 212 215 220 221 221 205 212 215 220 221 221 220 221 221 244 246 246
61032 +193 200 203 60 74 84 13 16 17 4 0 0 0 0 0 3 3 3
61033 +5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 3 3 3
61034 +1 1 2 3 3 3 4 4 5 4 4 5 4 4 4 4 4 4
61035 +5 5 5 5 5 5 2 2 2 0 0 0 0 0 0 13 16 17
61036 +60 74 84 174 174 174 193 200 203 174 174 174 167 166 167 163 162 163
61037 +153 152 153 153 152 153 137 136 137 137 136 137 153 152 153 137 136 137
61038 +125 124 125 41 54 63 24 26 27 4 0 0 4 0 0 5 5 5
61039 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61040 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61041 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61042 +4 4 4 4 4 4
61043 +4 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
61044 +6 6 6 37 38 37 131 129 131 220 221 221 220 221 221 220 221 221
61045 +193 200 203 193 200 203 220 221 221 205 212 215 220 221 221 244 246 246
61046 +244 246 246 244 246 246 174 174 174 41 54 63 0 0 0 0 0 0
61047 +0 0 0 4 4 4 5 5 5 5 5 5 4 4 4 4 4 5
61048 +4 4 5 4 4 5 4 4 4 4 4 4 6 6 6 6 6 6
61049 +3 3 3 0 0 0 2 0 0 13 16 17 60 73 81 156 155 156
61050 +220 221 221 193 200 203 174 174 174 165 164 165 163 162 163 154 153 154
61051 +153 152 153 153 152 153 158 157 158 163 162 163 137 136 137 60 73 81
61052 +13 16 17 4 0 0 4 0 0 4 3 3 4 4 4 4 4 4
61053 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61054 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61055 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61056 +4 4 4 4 4 4
61057 +5 5 5 4 3 3 4 3 3 6 6 6 6 6 6 6 6 6
61058 +6 6 6 6 6 6 6 6 6 37 38 37 167 166 167 244 246 246
61059 +244 246 246 220 221 221 205 212 215 205 212 215 220 221 221 193 200 203
61060 +220 221 221 244 246 246 244 246 246 244 246 246 137 136 137 37 38 37
61061 +3 2 2 0 0 0 1 1 1 5 5 5 5 5 5 4 4 4
61062 +4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 1 1 1
61063 +0 0 0 5 5 5 43 57 68 153 152 153 193 200 203 220 221 221
61064 +177 184 187 174 174 174 167 166 167 166 165 166 158 157 158 157 156 157
61065 +158 157 158 166 165 166 156 155 156 85 115 134 13 16 17 4 0 0
61066 +4 0 0 4 0 0 5 5 5 5 5 5 4 4 4 4 4 4
61067 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61068 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61069 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61070 +4 4 4 4 4 4
61071 +5 5 5 4 3 3 6 6 6 6 6 6 4 0 0 6 6 6
61072 +6 6 6 6 6 6 6 6 6 6 6 6 13 16 17 60 73 81
61073 +177 184 187 220 221 221 220 221 221 220 221 221 205 212 215 220 221 221
61074 +220 221 221 205 212 215 220 221 221 244 246 246 244 246 246 205 212 215
61075 +125 124 125 30 32 34 0 0 0 0 0 0 2 2 2 5 5 5
61076 +4 4 4 4 4 4 4 4 4 1 1 1 0 0 0 1 0 0
61077 +37 38 37 131 129 131 205 212 215 220 221 221 193 200 203 174 174 174
61078 +174 174 174 174 174 174 167 166 167 165 164 165 166 165 166 167 166 167
61079 +158 157 158 125 124 125 37 38 37 4 0 0 4 0 0 4 0 0
61080 +4 3 3 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4
61081 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61082 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61083 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61084 +4 4 4 4 4 4
61085 +4 4 4 5 5 5 4 3 3 4 3 3 6 6 6 6 6 6
61086 +4 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
61087 +26 28 28 125 124 125 205 212 215 220 221 221 220 221 221 220 221 221
61088 +205 212 215 220 221 221 205 212 215 220 221 221 220 221 221 244 246 246
61089 +244 246 246 190 197 201 60 74 84 16 19 21 4 0 0 0 0 0
61090 +0 0 0 0 0 0 0 0 0 0 0 0 16 19 21 120 125 127
61091 +177 184 187 220 221 221 205 212 215 177 184 187 174 174 174 177 184 187
61092 +174 174 174 174 174 174 167 166 167 174 174 174 166 165 166 137 136 137
61093 +60 73 81 13 16 17 4 0 0 4 0 0 4 3 3 6 6 6
61094 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61095 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61096 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61097 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61098 +4 4 4 4 4 4
61099 +5 5 5 4 3 3 5 5 5 4 3 3 6 6 6 4 0 0
61100 +6 6 6 6 6 6 4 0 0 6 6 6 4 0 0 6 6 6
61101 +6 6 6 6 6 6 37 38 37 137 136 137 193 200 203 220 221 221
61102 +220 221 221 205 212 215 220 221 221 205 212 215 205 212 215 220 221 221
61103 +220 221 221 220 221 221 244 246 246 166 165 166 43 57 68 2 2 2
61104 +0 0 0 4 0 0 16 19 21 60 73 81 157 156 157 202 210 214
61105 +220 221 221 193 200 203 177 184 187 177 184 187 177 184 187 174 174 174
61106 +174 174 174 174 174 174 174 174 174 157 156 157 60 74 84 24 26 27
61107 +4 0 0 4 0 0 4 0 0 6 6 6 4 4 4 4 4 4
61108 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61109 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61110 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61111 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61112 +4 4 4 4 4 4
61113 +4 4 4 4 4 4 5 5 5 4 3 3 5 5 5 6 6 6
61114 +6 6 6 4 0 0 6 6 6 6 6 6 6 6 6 4 0 0
61115 +4 0 0 4 0 0 6 6 6 24 26 27 60 73 81 167 166 167
61116 +220 221 221 220 221 221 220 221 221 205 212 215 205 212 215 205 212 215
61117 +205 212 215 220 221 221 220 221 221 220 221 221 205 212 215 137 136 137
61118 +60 74 84 125 124 125 137 136 137 190 197 201 220 221 221 193 200 203
61119 +177 184 187 177 184 187 177 184 187 174 174 174 174 174 174 177 184 187
61120 +190 197 201 174 174 174 125 124 125 37 38 37 6 6 6 4 0 0
61121 +4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61122 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61123 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61124 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61125 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61126 +4 4 4 4 4 4
61127 +4 4 4 4 4 4 5 5 5 5 5 5 4 3 3 6 6 6
61128 +4 0 0 6 6 6 6 6 6 6 6 6 4 0 0 6 6 6
61129 +6 6 6 6 6 6 4 0 0 4 0 0 6 6 6 6 6 6
61130 +125 124 125 193 200 203 244 246 246 220 221 221 205 212 215 205 212 215
61131 +205 212 215 193 200 203 205 212 215 205 212 215 220 221 221 220 221 221
61132 +193 200 203 193 200 203 205 212 215 193 200 203 193 200 203 177 184 187
61133 +190 197 201 190 197 201 174 174 174 190 197 201 193 200 203 190 197 201
61134 +153 152 153 60 73 81 4 0 0 4 0 0 4 0 0 3 2 2
61135 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61136 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61137 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61138 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61139 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61140 +4 4 4 4 4 4
61141 +4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 4 3 3
61142 +6 6 6 4 3 3 4 3 3 4 3 3 6 6 6 6 6 6
61143 +4 0 0 6 6 6 6 6 6 6 6 6 4 0 0 4 0 0
61144 +4 0 0 26 28 28 131 129 131 220 221 221 244 246 246 220 221 221
61145 +205 212 215 193 200 203 205 212 215 193 200 203 193 200 203 205 212 215
61146 +220 221 221 193 200 203 193 200 203 193 200 203 190 197 201 174 174 174
61147 +174 174 174 190 197 201 193 200 203 193 200 203 167 166 167 125 124 125
61148 +6 6 6 4 0 0 4 0 0 4 3 3 4 4 4 4 4 4
61149 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61150 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61151 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61152 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61153 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61154 +4 4 4 4 4 4
61155 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5
61156 +5 5 5 4 3 3 5 5 5 6 6 6 4 3 3 5 5 5
61157 +6 6 6 6 6 6 4 0 0 6 6 6 6 6 6 6 6 6
61158 +4 0 0 4 0 0 6 6 6 41 54 63 158 157 158 220 221 221
61159 +220 221 221 220 221 221 193 200 203 193 200 203 193 200 203 190 197 201
61160 +190 197 201 190 197 201 190 197 201 190 197 201 174 174 174 193 200 203
61161 +193 200 203 220 221 221 174 174 174 125 124 125 37 38 37 4 0 0
61162 +4 0 0 4 3 3 6 6 6 4 4 4 4 4 4 4 4 4
61163 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61164 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61165 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61166 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61167 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61168 +4 4 4 4 4 4
61169 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61170 +4 4 4 5 5 5 4 3 3 4 3 3 4 3 3 5 5 5
61171 +4 3 3 6 6 6 5 5 5 4 3 3 6 6 6 6 6 6
61172 +6 6 6 6 6 6 4 0 0 4 0 0 13 16 17 60 73 81
61173 +174 174 174 220 221 221 220 221 221 205 212 215 190 197 201 174 174 174
61174 +193 200 203 174 174 174 190 197 201 174 174 174 193 200 203 220 221 221
61175 +193 200 203 131 129 131 37 38 37 6 6 6 4 0 0 4 0 0
61176 +6 6 6 6 6 6 4 3 3 5 5 5 4 4 4 4 4 4
61177 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61178 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61179 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61180 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61181 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61182 +4 4 4 4 4 4
61183 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61184 +4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5
61185 +5 5 5 4 3 3 4 3 3 5 5 5 4 3 3 4 3 3
61186 +5 5 5 6 6 6 6 6 6 4 0 0 6 6 6 6 6 6
61187 +6 6 6 125 124 125 174 174 174 220 221 221 220 221 221 193 200 203
61188 +193 200 203 193 200 203 193 200 203 193 200 203 220 221 221 158 157 158
61189 +60 73 81 6 6 6 4 0 0 4 0 0 5 5 5 6 6 6
61190 +5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4
61191 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61192 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61193 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61194 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61195 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61196 +4 4 4 4 4 4
61197 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61198 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61199 +4 4 4 5 5 5 5 5 5 4 3 3 5 5 5 4 3 3
61200 +5 5 5 5 5 5 6 6 6 6 6 6 4 0 0 4 0 0
61201 +4 0 0 4 0 0 26 28 28 125 124 125 174 174 174 193 200 203
61202 +193 200 203 174 174 174 193 200 203 167 166 167 125 124 125 6 6 6
61203 +6 6 6 6 6 6 4 0 0 6 6 6 6 6 6 5 5 5
61204 +4 3 3 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4
61205 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61206 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61207 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61208 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61209 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61210 +4 4 4 4 4 4
61211 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61212 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61213 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5
61214 +4 3 3 6 6 6 4 0 0 6 6 6 6 6 6 6 6 6
61215 +6 6 6 4 0 0 4 0 0 6 6 6 37 38 37 125 124 125
61216 +153 152 153 131 129 131 125 124 125 37 38 37 6 6 6 6 6 6
61217 +6 6 6 4 0 0 6 6 6 6 6 6 4 3 3 5 5 5
61218 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61219 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61220 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61221 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61222 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61223 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61224 +4 4 4 4 4 4
61225 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61226 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61227 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61228 +4 4 4 5 5 5 5 5 5 4 3 3 5 5 5 4 3 3
61229 +6 6 6 6 6 6 4 0 0 4 0 0 6 6 6 6 6 6
61230 +24 26 27 24 26 27 6 6 6 6 6 6 6 6 6 4 0 0
61231 +6 6 6 6 6 6 4 0 0 6 6 6 5 5 5 4 3 3
61232 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61233 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61234 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61235 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61236 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61237 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61238 +4 4 4 4 4 4
61239 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61240 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61241 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61242 +4 4 4 4 4 4 5 5 5 4 3 3 5 5 5 6 6 6
61243 +4 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
61244 +6 6 6 6 6 6 6 6 6 4 0 0 6 6 6 6 6 6
61245 +4 0 0 6 6 6 6 6 6 4 3 3 5 5 5 4 4 4
61246 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61247 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61248 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61249 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61250 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61251 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61252 +4 4 4 4 4 4
61253 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61254 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61255 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61256 +4 4 4 4 4 4 4 4 4 5 5 5 4 3 3 5 5 5
61257 +5 5 5 5 5 5 4 0 0 6 6 6 4 0 0 6 6 6
61258 +6 6 6 6 6 6 6 6 6 4 0 0 6 6 6 4 0 0
61259 +6 6 6 4 3 3 5 5 5 4 3 3 5 5 5 4 4 4
61260 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61261 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61262 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61263 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61264 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61265 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61266 +4 4 4 4 4 4
61267 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61268 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61269 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61270 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5
61271 +4 3 3 6 6 6 4 3 3 6 6 6 6 6 6 6 6 6
61272 +4 0 0 6 6 6 4 0 0 6 6 6 6 6 6 6 6 6
61273 +6 6 6 4 3 3 5 5 5 4 4 4 4 4 4 4 4 4
61274 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61275 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61276 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61277 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61278 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61279 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61280 +4 4 4 4 4 4
61281 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61282 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61283 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61284 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61285 +4 4 4 5 5 5 4 3 3 5 5 5 4 0 0 6 6 6
61286 +6 6 6 4 0 0 6 6 6 6 6 6 4 0 0 6 6 6
61287 +4 3 3 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4
61288 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61289 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61290 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61291 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61292 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61293 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61294 +4 4 4 4 4 4
61295 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61296 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61297 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61298 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61299 +4 4 4 5 5 5 4 3 3 5 5 5 6 6 6 4 3 3
61300 +4 3 3 6 6 6 6 6 6 4 3 3 6 6 6 4 3 3
61301 +5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61302 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61303 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61304 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61305 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61306 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61307 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61308 +4 4 4 4 4 4
61309 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61310 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61311 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61312 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61313 +4 4 4 4 4 4 4 4 4 5 5 5 4 3 3 6 6 6
61314 +5 5 5 4 3 3 4 3 3 4 3 3 5 5 5 5 5 5
61315 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61316 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61317 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61318 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61319 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61320 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61321 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61322 +4 4 4 4 4 4
61323 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61324 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61325 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61326 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61327 +4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 4 3 3
61328 +5 5 5 4 3 3 5 5 5 5 5 5 4 4 4 4 4 4
61329 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61330 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61331 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61332 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61333 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61334 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61335 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
61336 +4 4 4 4 4 4
61337 diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
61338 index 96093ae..b9eed29 100644
61339 --- a/drivers/xen/events/events_base.c
61340 +++ b/drivers/xen/events/events_base.c
61341 @@ -1568,7 +1568,7 @@ void xen_irq_resume(void)
61342 restore_pirqs();
61343 }
61344
61345 -static struct irq_chip xen_dynamic_chip __read_mostly = {
61346 +static struct irq_chip xen_dynamic_chip = {
61347 .name = "xen-dyn",
61348
61349 .irq_disable = disable_dynirq,
61350 @@ -1582,7 +1582,7 @@ static struct irq_chip xen_dynamic_chip __read_mostly = {
61351 .irq_retrigger = retrigger_dynirq,
61352 };
61353
61354 -static struct irq_chip xen_pirq_chip __read_mostly = {
61355 +static struct irq_chip xen_pirq_chip = {
61356 .name = "xen-pirq",
61357
61358 .irq_startup = startup_pirq,
61359 @@ -1602,7 +1602,7 @@ static struct irq_chip xen_pirq_chip __read_mostly = {
61360 .irq_retrigger = retrigger_dynirq,
61361 };
61362
61363 -static struct irq_chip xen_percpu_chip __read_mostly = {
61364 +static struct irq_chip xen_percpu_chip = {
61365 .name = "xen-percpu",
61366
61367 .irq_disable = disable_dynirq,
61368 diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
61369 index 00f40f0..e3c0b15 100644
61370 --- a/drivers/xen/evtchn.c
61371 +++ b/drivers/xen/evtchn.c
61372 @@ -201,8 +201,8 @@ static ssize_t evtchn_read(struct file *file, char __user *buf,
61373
61374 /* Byte lengths of two chunks. Chunk split (if any) is at ring wrap. */
61375 if (((c ^ p) & EVTCHN_RING_SIZE) != 0) {
61376 - bytes1 = (EVTCHN_RING_SIZE - EVTCHN_RING_MASK(c)) *
61377 - sizeof(evtchn_port_t);
61378 + bytes1 = EVTCHN_RING_SIZE - EVTCHN_RING_MASK(c);
61379 + bytes1 *= sizeof(evtchn_port_t);
61380 bytes2 = EVTCHN_RING_MASK(p) * sizeof(evtchn_port_t);
61381 } else {
61382 bytes1 = (p - c) * sizeof(evtchn_port_t);
61383 diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c
61384 index fef20db..d28b1ab 100644
61385 --- a/drivers/xen/xenfs/xenstored.c
61386 +++ b/drivers/xen/xenfs/xenstored.c
61387 @@ -24,7 +24,12 @@ static int xsd_release(struct inode *inode, struct file *file)
61388 static int xsd_kva_open(struct inode *inode, struct file *file)
61389 {
61390 file->private_data = (void *)kasprintf(GFP_KERNEL, "0x%p",
61391 +#ifdef CONFIG_GRKERNSEC_HIDESYM
61392 + NULL);
61393 +#else
61394 xen_store_interface);
61395 +#endif
61396 +
61397 if (!file->private_data)
61398 return -ENOMEM;
61399 return 0;
61400 diff --git a/firmware/Makefile b/firmware/Makefile
61401 index e297e1b..aeb0982 100644
61402 --- a/firmware/Makefile
61403 +++ b/firmware/Makefile
61404 @@ -35,9 +35,11 @@ fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \
61405 bnx2x/bnx2x-e1h-6.2.9.0.fw \
61406 bnx2x/bnx2x-e2-6.2.9.0.fw
61407 fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \
61408 + bnx2/bnx2-mips-09-6.2.1b.fw \
61409 bnx2/bnx2-rv2p-09-6.0.17.fw \
61410 bnx2/bnx2-rv2p-09ax-6.0.17.fw \
61411 bnx2/bnx2-mips-06-6.2.1.fw \
61412 + bnx2/bnx2-mips-06-6.2.3.fw \
61413 bnx2/bnx2-rv2p-06-6.0.15.fw
61414 fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
61415 fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
61416 diff --git a/firmware/WHENCE b/firmware/WHENCE
61417 index 0c4d96d..b17700f 100644
61418 --- a/firmware/WHENCE
61419 +++ b/firmware/WHENCE
61420 @@ -653,21 +653,23 @@ Found in hex form in kernel source.
61421 Driver: BNX2 - Broadcom NetXtremeII
61422
61423 File: bnx2/bnx2-mips-06-6.2.1.fw
61424 +File: bnx2/bnx2-mips-06-6.2.3.fw
61425 File: bnx2/bnx2-rv2p-06-6.0.15.fw
61426 File: bnx2/bnx2-mips-09-6.2.1a.fw
61427 +File: bnx2/bnx2-mips-09-6.2.1b.fw
61428 File: bnx2/bnx2-rv2p-09-6.0.17.fw
61429 File: bnx2/bnx2-rv2p-09ax-6.0.17.fw
61430
61431 Licence:
61432 -
61433 - This file contains firmware data derived from proprietary unpublished
61434 - source code, Copyright (c) 2004 - 2010 Broadcom Corporation.
61435 -
61436 - Permission is hereby granted for the distribution of this firmware data
61437 - in hexadecimal or equivalent format, provided this copyright notice is
61438 - accompanying it.
61439 -
61440 -Found in hex form in kernel source.
61441 +
61442 + This file contains firmware data derived from proprietary unpublished
61443 + source code, Copyright (c) 2004 - 2010 Broadcom Corporation.
61444 +
61445 + Permission is hereby granted for the distribution of this firmware data
61446 + in hexadecimal or equivalent format, provided this copyright notice is
61447 + accompanying it.
61448 +
61449 +Found in hex form in kernel source.
61450
61451 --------------------------------------------------------------------------
61452
61453 diff --git a/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex b/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex
61454 new file mode 100644
61455 index 0000000..da72bf1
61456 --- /dev/null
61457 +++ b/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex
61458 @@ -0,0 +1,5804 @@
61459 +:10000000080001180800000000004A68000000C84D
61460 +:1000100000000000000000000000000008004A6826
61461 +:100020000000001400004B30080000A00800000091
61462 +:100030000000569400004B44080058200000008443
61463 +:100040000000A1D808005694000001580000A25CEE
61464 +:100050000800321008000000000072F00000A3B495
61465 +:10006000000000000000000000000000080072F026
61466 +:1000700000000024000116A40800049008000400F9
61467 +:10008000000017D4000116C80000000000000000A6
61468 +:100090000000000000000000000000000000000060
61469 +:1000A000080000A80800000000003BFC00012E9C96
61470 +:1000B0000000000000000000000000000000000040
61471 +:1000C00000000000000000000A00004600000000E0
61472 +:1000D000000000000000000D636F6D362E322E33DD
61473 +:1000E0000000000006020302000000000000000300
61474 +:1000F000000000C800000032000000030000000003
61475 +:1001000000000000000000000000000000000000EF
61476 +:1001100000000010000001360000EA600000000549
61477 +:1001200000000000000000000000000000000008C7
61478 +:1001300000000000000000000000000000000000BF
61479 +:1001400000000000000000000000000000000000AF
61480 +:10015000000000000000000000000000000000009F
61481 +:10016000000000020000000000000000000000008D
61482 +:10017000000000000000000000000000000000007F
61483 +:10018000000000000000000000000010000000005F
61484 +:10019000000000000000000000000000000000005F
61485 +:1001A000000000000000000000000000000000004F
61486 +:1001B000000000000000000000000000000000003F
61487 +:1001C000000000000000000000000000000000002F
61488 +:1001D000000000000000000000000000000000001F
61489 +:1001E0000000000010000003000000000000000DEF
61490 +:1001F0000000000D3C02080024424AA03C03080015
61491 +:1002000024634B9CAC4000000043202B1480FFFD76
61492 +:10021000244200043C1D080037BD7FFC03A0F021F0
61493 +:100220003C100800261001183C1C0800279C4AA01E
61494 +:100230000E000168000000000000000D27470100CB
61495 +:1002400090E3000B2402001A94E5000814620028D1
61496 +:10025000000020218CE200003C0308008C63004475
61497 +:1002600094E60014000211C20002104030A4000203
61498 +:10027000005A10212463000130A50004A446008028
61499 +:100280003C010800AC23004410A000190004202BFE
61500 +:100290008F4202B804410008240400013C02080017
61501 +:1002A0008C420060244200013C010800AC22006046
61502 +:1002B00003E00008008010218CE2002094E3001687
61503 +:1002C00000002021AF4202808CE20004A743028498
61504 +:1002D000AF4202883C021000AF4202B83C02080064
61505 +:1002E0008C42005C244200013C010800AC22005C0E
61506 +:1002F00003E00008008010212747010090E3000B75
61507 +:100300002402000394E50008146200280000202164
61508 +:100310008CE200003C0308008C63004494E6001467
61509 +:10032000000211C20002104030A40002005A102145
61510 +:100330002463000130A50004A44600803C010800AD
61511 +:10034000AC23004410A000190004202B8F4202B8F7
61512 +:1003500004410008240400013C0208008C420060B3
61513 +:10036000244200013C010800AC22006003E00008C8
61514 +:10037000008010218CE2002094E300160000202170
61515 +:10038000AF4202808CE20004A7430284AF4202889D
61516 +:100390003C021000AF4202B83C0208008C42005CF4
61517 +:1003A000244200013C010800AC22005C03E000088C
61518 +:1003B000008010218F4301002402010050620003DD
61519 +:1003C000000311C20000000D000311C20002104022
61520 +:1003D000005A1021A440008003E000080000102112
61521 +:1003E0009362000003E00008AF80000003E0000813
61522 +:1003F0000000102103E00008000010212402010089
61523 +:1004000014820008000000003C0208008C4200FC3E
61524 +:10041000244200013C010800AC2200FC0A0000DD7F
61525 +:1004200030A200203C0208008C42008424420001DB
61526 +:100430003C010800AC22008430A2002010400008DB
61527 +:1004400030A300103C0208008C4201082442000145
61528 +:100450003C010800AC22010803E000080000000095
61529 +:1004600010600008000000003C0208008C420104FB
61530 +:10047000244200013C010800AC22010403E0000812
61531 +:10048000000000003C0208008C42010024420001F0
61532 +:100490003C010800AC22010003E00008000000005D
61533 +:1004A00027BDFFE8AFBF0010274401009483000878
61534 +:1004B000306200041040001B306600028F4202B818
61535 +:1004C00004410008240500013C0208008C42006041
61536 +:1004D000244200013C010800AC2200600A0001290E
61537 +:1004E0008FBF00108C82002094830016000028210A
61538 +:1004F000AF4202808C820004A7430284AF4202888C
61539 +:100500003C021000AF4202B83C0208008C42005C82
61540 +:10051000244200013C010800AC22005C0A000129D1
61541 +:100520008FBF001010C00006006028218F4401001A
61542 +:100530000E0000CD000000000A0001282405000183
61543 +:100540008F8200088F4301045043000700002821D8
61544 +:100550008F4401000E0000CD000000008F42010416
61545 +:10056000AF820008000028218FBF001000A01021DA
61546 +:1005700003E0000827BD001827BDFFE8AFBF001447
61547 +:10058000AFB00010974201083043700024022000F1
61548 +:100590001062000B286220011440002F000010217F
61549 +:1005A00024024000106200250000000024026000C8
61550 +:1005B00010620026000010210A0001658FBF0014A0
61551 +:1005C00027500100920200091040001A2403000184
61552 +:1005D0003C0208008C420020104000160000182148
61553 +:1005E0000E00049300000000960300083C0608007B
61554 +:1005F00094C64B5E8E0400188F8200209605000C76
61555 +:1006000000031C0000661825AC440000AC45000443
61556 +:1006100024040001AC400008AC40000CAC400010C9
61557 +:10062000AC400014AC4000180E0004B8AC43001CF1
61558 +:10063000000018210A000164006010210E0003254B
61559 +:10064000000000000A000164000010210E000EE905
61560 +:1006500000000000000010218FBF00148FB00010B8
61561 +:1006600003E0000827BD001827BDFFE0AFB2001867
61562 +:100670003C036010AFBF001CAFB10014AFB000105E
61563 +:100680008C6450002402FF7F3C1A800000822024EA
61564 +:100690003484380C24020037AC6450003C1208004B
61565 +:1006A00026524AD8AF42000824020C80AF420024F0
61566 +:1006B0003C1B80083C06080024C60324024010218D
61567 +:1006C0002404001D2484FFFFAC4600000481FFFDCC
61568 +:1006D000244200043C020800244204B03C0108000B
61569 +:1006E000AC224AE03C020800244202303C010800EF
61570 +:1006F000AC224AE43C020800244201743C03080096
61571 +:100700002463032C3C040800248403D83C0508001F
61572 +:1007100024A538F03C010800AC224B403C02080004
61573 +:10072000244202EC3C010800AC264B243C010800AA
61574 +:10073000AC254B343C010800AC234B3C3C01080089
61575 +:10074000AC244B443C010800AC224B483C0108005F
61576 +:10075000AC234ADC3C010800AC204AE83C0108001C
61577 +:10076000AC204AEC3C010800AC204AF03C010800F7
61578 +:10077000AC204AF43C010800AC204AF83C010800D7
61579 +:10078000AC204AFC3C010800AC204B003C010800B6
61580 +:10079000AC244B043C010800AC204B083C01080091
61581 +:1007A000AC204B0C3C010800AC204B103C01080075
61582 +:1007B000AC204B143C010800AC204B183C01080055
61583 +:1007C000AC264B1C3C010800AC264B203C01080029
61584 +:1007D000AC254B303C010800AC234B380E000623FF
61585 +:1007E000000000003C028000344200708C42000097
61586 +:1007F000AF8200143C0308008C6300208F82000449
61587 +:10080000104300043C0280000E00045BAF83000430
61588 +:100810003C028000344600703C0308008C6300A05A
61589 +:100820003C0208008C4200A4104300048F84001492
61590 +:100830003C010800AC2300A4A743009E8CCA000022
61591 +:100840003C0308008C6300BC3C0208008C4200B8EA
61592 +:100850000144202300641821000040210064202B63
61593 +:1008600000481021004410213C010800AC2300BCCA
61594 +:100870003C010800AC2200B88F5100003222000772
61595 +:100880001040FFDCAF8A00148CC600003C05080055
61596 +:100890008CA500BC3C0408008C8400B800CA30233E
61597 +:1008A00000A628210000102100A6302B0082202164
61598 +:1008B00000862021322700013C010800AC2500BC45
61599 +:1008C0003C010800AC2400B810E0001F32220002F6
61600 +:1008D0008F420100AF4200208F420104AF4200A8C6
61601 +:1008E0009342010B0E0000C6305000FF2E02001E86
61602 +:1008F00054400004001010800E0000C90A000213CA
61603 +:1009000000000000005210218C4200000040F80955
61604 +:1009100000000000104000053C0240008F4301042D
61605 +:100920003C026020AC4300143C024000AF4201385E
61606 +:100930003C0208008C420034244200013C010800C3
61607 +:10094000AC220034322200021040000E3222000499
61608 +:100950008F4201400E0000C6AF4200200E000295FB
61609 +:10096000000000003C024000AF4201783C02080059
61610 +:100970008C420038244200013C010800AC220038BF
61611 +:10098000322200041040FF983C0280008F42018018
61612 +:100990000E0000C6AF4200208F43018024020F00EA
61613 +:1009A00014620005000000008F420188A742009CED
61614 +:1009B0000A0002483C0240009362000024030050F9
61615 +:1009C000304200FF144300083C0240000E00027B4E
61616 +:1009D00000000000544000043C0240000E000D7571
61617 +:1009E000000000003C024000AF4201B83C02080099
61618 +:1009F0008C42003C244200013C010800AC22003C37
61619 +:100A00000A0001C83C0280003C0290003442000110
61620 +:100A100000822025AF4400208F4200200440FFFECA
61621 +:100A20000000000003E00008000000003C0280001D
61622 +:100A3000344200010082202503E00008AF4400207A
61623 +:100A400027BDFFE0AFB10014AFB0001000808821D7
61624 +:100A5000AFBF00180E00025030B000FF9362007D5F
61625 +:100A60000220202102028025A370007D8F70007477
61626 +:100A70003C0280000E000259020280241600000988
61627 +:100A80008FBF00188F4201F80440FFFE24020002CD
61628 +:100A9000AF5101C0A34201C43C021000AF4201F8B3
61629 +:100AA0008FBF00188FB100148FB0001003E0000852
61630 +:100AB00027BD002027BDFFE8AFBF0010974201848B
61631 +:100AC0008F440188304202001040000500002821B8
61632 +:100AD0000E000FAA000000000A00028D240500018C
61633 +:100AE0003C02FF0004800005008218243C02040040
61634 +:100AF000506200019362003E240500018FBF001088
61635 +:100B000000A0102103E0000827BD0018A360002208
61636 +:100B10008F4401400A00025E2405000127BDFFE862
61637 +:100B2000AFBF0014AFB0001093620000304400FF6C
61638 +:100B300038830020388200300003182B0002102B6D
61639 +:100B40000062182410600003240200501482008008
61640 +:100B50008FBF001493620005304200011040007CFA
61641 +:100B60008FBF0014934201482443FFFF2C6200050D
61642 +:100B7000104000788FB00010000310803C03080084
61643 +:100B800024634A68004310218C42000000400008A2
61644 +:100B9000000000000E0002508F4401408F70000CD6
61645 +:100BA0008F4201441602000224020001AF62000CD1
61646 +:100BB0000E0002598F4401408F420144145000043A
61647 +:100BC0008FBF00148FB000100A000F2027BD00183F
61648 +:100BD0008F62000C0A0003040000000097620010FE
61649 +:100BE0008F4301443042FFFF1462001A00000000EE
61650 +:100BF00024020001A76200108F4202380443001053
61651 +:100C00008F4201403C02003F3446F0003C0560004A
61652 +:100C10003C04FFC08CA22BBC0044182400461024C6
61653 +:100C20000002130200031D82106200390000000060
61654 +:100C30008F4202380440FFF7000000008F4201405D
61655 +:100C4000AF4202003C021000AF4202380A00032209
61656 +:100C50008FBF0014976200100A0003040000000018
61657 +:100C60000E0002508F440140976200128F430144EE
61658 +:100C70003050FFFF1603000224020001A762001299
61659 +:100C80000E0002598F4401408F42014416020004B5
61660 +:100C90008FBF00148FB000100A00029127BD00180A
61661 +:100CA000976200120A00030400000000976200141B
61662 +:100CB0008F4301443042FFFF14620006240200010A
61663 +:100CC0008FBF00148FB00010A76200140A00124AF0
61664 +:100CD00027BD0018976200141440001D8FBF001438
61665 +:100CE0000A00031C00000000976200168F430144B5
61666 +:100CF0003042FFFF1462000B240200018FBF00147A
61667 +:100D00008FB00010A76200160A000B1227BD001852
61668 +:100D10009742007824420004A76200100A000322D0
61669 +:100D20008FBF001497620016240300013042FFFFBA
61670 +:100D3000144300078FBF00143C0208008C4200706F
61671 +:100D4000244200013C010800AC2200708FBF001457
61672 +:100D50008FB0001003E0000827BD001827BDFFE892
61673 +:100D6000AFBF0014AFB000108F50010093620000BD
61674 +:100D700093430109304400FF2402001F106200A5C4
61675 +:100D80002862002010400018240200382862000A5F
61676 +:100D90001040000C2402000B286200081040002CB8
61677 +:100DA00000000000046000E52862000214400028F2
61678 +:100DB00024020006106200268FBF00140A00041FE0
61679 +:100DC0008FB000101062005E2862000B144000DC3F
61680 +:100DD0008FBF00142402000E106200738FB0001049
61681 +:100DE0000A00041F00000000106200C028620039E1
61682 +:100DF0001040000A2402008024020036106200CA5B
61683 +:100E000028620037104000B424020035106200C18F
61684 +:100E10008FBF00140A00041F8FB000101062002B57
61685 +:100E20002862008110400006240200C82402003914
61686 +:100E3000106200B48FBF00140A00041F8FB00010AE
61687 +:100E4000106200998FBF00140A00041F8FB00010B9
61688 +:100E50003C0208008C420020104000B98FBF0014F3
61689 +:100E60000E000493000000008F4201008F830020D9
61690 +:100E70009745010C97460108AC6200008F420104BF
61691 +:100E80003C04080094844B5E00052C00AC62000416
61692 +:100E90008F4201180006340000C43025AC620008FF
61693 +:100EA0008F42011C24040001AC62000C9342010A31
61694 +:100EB00000A22825AC650010AC600014AC600018DE
61695 +:100EC000AC66001C0A0003F58FBF00143C0208004A
61696 +:100ED0008C4200201040009A8FBF00140E00049333
61697 +:100EE00000000000974401083C03080094634B5E37
61698 +:100EF0009745010C000422029746010E8F820020C4
61699 +:100F0000000426000083202500052C003C030080FF
61700 +:100F100000A6282500832025AC400000AC4000043A
61701 +:100F2000AC400008AC40000CAC450010AC400014D4
61702 +:100F3000AC400018AC44001C0A0003F42404000177
61703 +:100F40009742010C14400015000000009362000558
61704 +:100F50003042001014400011000000000E0002504A
61705 +:100F6000020020219362000502002021344200107B
61706 +:100F70000E000259A36200059362000024030020C2
61707 +:100F8000304200FF1043006D020020218FBF00148B
61708 +:100F90008FB000100A000FC027BD00180000000D20
61709 +:100FA0000A00041E8FBF00143C0208008C4200207F
61710 +:100FB000104000638FBF00140E0004930000000077
61711 +:100FC0008F4201048F8300209744010C3C050800E8
61712 +:100FD00094A54B5EAC6200009762002C00042400D4
61713 +:100FE0003042FFFF008220253C02400E00A228254F
61714 +:100FF000AC640004AC600008AC60000CAC60001095
61715 +:10100000AC600014AC600018AC65001C0A0003F46E
61716 +:10101000240400010E00025002002021A7600008F5
61717 +:101020000E00025902002021020020210E00025E63
61718 +:10103000240500013C0208008C42002010400040C2
61719 +:101040008FBF00140E000493000000009742010CB3
61720 +:101050008F8300203C05080094A54B5E000214001D
61721 +:10106000AC700000AC620004AC6000088F64004CFF
61722 +:101070003C02401F00A22825AC64000C8F62005087
61723 +:1010800024040001AC6200108F620054AC620014B2
61724 +:10109000AC600018AC65001C8FBF00148FB000104E
61725 +:1010A0000A0004B827BD0018240200205082002541
61726 +:1010B0008FB000100E000F0A020020211040002007
61727 +:1010C0008FBF0014020020218FB0001000002821E3
61728 +:1010D0000A00025E27BD0018020020218FBF001405
61729 +:1010E0008FB000100A00058027BD00189745010C3D
61730 +:1010F000020020218FBF00148FB000100A0005A04D
61731 +:1011000027BD0018020020218FB000100A0005C57D
61732 +:1011100027BD00189345010D020020218FB000105B
61733 +:101120000A00060F27BD0018020020218FBF0014FF
61734 +:101130008FB000100A0005EB27BD00188FBF001408
61735 +:101140008FB0001003E0000827BD00188F4202781E
61736 +:101150000440FFFE2402000234840080AF440240B9
61737 +:10116000A34202443C02100003E00008AF420278B0
61738 +:101170003C04080094844B6A3C0208008C424B7487
61739 +:101180003083FFFF000318C000431021AF42003C32
61740 +:101190003C0208008C424B70AF4200383C020050C9
61741 +:1011A00034420008AF4200300000000000000000A0
61742 +:1011B000000000008F420000304200201040FFFD80
61743 +:1011C000000000008F4204003C010800AC224B608C
61744 +:1011D0008F4204043C010800AC224B643C02002016
61745 +:1011E000AF420030000000003C02080094424B680F
61746 +:1011F0003C03080094634B6C3C05080094A54B6EBF
61747 +:1012000024840001004310213083FFFF3C010800CB
61748 +:10121000A4224B683C010800A4244B6A1465000317
61749 +:10122000000000003C010800A4204B6A03E0000815
61750 +:10123000000000003C05000A27BDFFE80345282107
61751 +:101240003C04080024844B50AFBF00100E00051D65
61752 +:101250002406000A3C02080094424B523C0308005A
61753 +:1012600094634B6E3042000F244200030043180485
61754 +:1012700024027FFF0043102B10400002AF83001CAC
61755 +:101280000000000D0E00042A000000003C020800CF
61756 +:1012900094424B5A8FBF001027BD001803E000088E
61757 +:1012A000A74200A23C02000A034210219443000618
61758 +:1012B0003C02080094424B5A3C010800A4234B56C0
61759 +:1012C000004310238F83001C00021400000214034B
61760 +:1012D0000043102B03E000083842000127BDFFE85F
61761 +:1012E000AFBF00103C02000A0342102194420006E6
61762 +:1012F0003C010800A4224B560E00047700000000B9
61763 +:101300005440FFF93C02000A8FBF001003E00008C0
61764 +:1013100027BD001827BDFFE8AFBF00100E000477FF
61765 +:101320000000000010400003000000000E000485D3
61766 +:10133000000000003C0208008C424B608FBF001090
61767 +:1013400027430400AF4200383C0208008C424B6443
61768 +:1013500027BD0018AF830020AF42003C3C020005CF
61769 +:10136000AF42003003E00008AF8000188F82001801
61770 +:101370003C0300060002114000431025AF4200303C
61771 +:101380000000000000000000000000008F4200008C
61772 +:10139000304200101040FFFD27420400AF820020C1
61773 +:1013A00003E00008AF8000183C0608008CC64B64C0
61774 +:1013B0008F8500188F8300203C02080094424B5A0E
61775 +:1013C00027BDFFE024A50001246300202442000182
61776 +:1013D00024C70020AFB10014AFB00010AFBF001899
61777 +:1013E000AF850018AF8300203C010800A4224B5AAF
61778 +:1013F000309000FF3C010800AC274B6404C100089A
61779 +:101400000000882104E00006000000003C02080003
61780 +:101410008C424B60244200013C010800AC224B602E
61781 +:101420003C02080094424B5A3C03080094634B680A
61782 +:101430000010202B004310262C42000100441025F0
61783 +:10144000144000048F830018240200101462000F5F
61784 +:10145000000000000E0004A9241100013C03080054
61785 +:1014600094634B5A3C02080094424B681462000398
61786 +:10147000000000000E00042A000000001600000317
61787 +:10148000000000000E000493000000003C03080070
61788 +:1014900094634B5E3C02080094424B5C2463000161
61789 +:1014A0003064FFFF3C010800A4234B5E148200035C
61790 +:1014B000000000003C010800A4204B5E1200000662
61791 +:1014C000000000003C02080094424B5AA74200A2D0
61792 +:1014D0000A00050B022010210E0004770000000016
61793 +:1014E00010400004022010210E00048500000000BE
61794 +:1014F000022010218FBF00188FB100148FB0001090
61795 +:1015000003E0000827BD00203084FFFF30A5FFFF67
61796 +:101510000000182110800007000000003082000148
61797 +:101520001040000200042042006518210A00051343
61798 +:101530000005284003E000080060102110C00006EC
61799 +:1015400024C6FFFF8CA2000024A50004AC8200008A
61800 +:101550000A00051D2484000403E0000800000000C8
61801 +:1015600010A0000824A3FFFFAC86000000000000CC
61802 +:10157000000000002402FFFF2463FFFF1462FFFA53
61803 +:101580002484000403E0000800000000240200019D
61804 +:10159000AF62000CA7620010A7620012A7620014DD
61805 +:1015A00003E00008A76200163082007F034210218A
61806 +:1015B0003C08000E004818213C0208008C42002024
61807 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF
61808 +:1015D000AFB10014AFB00010AFBF00200080802179
61809 +:1015E00030B100FF0087202430D200FF1040002FD0
61810 +:1015F00000009821AF44002C9062000024030050AA
61811 +:10160000304200FF1443000E000000003C020800BE
61812 +:101610008C4200E00202102100471024AF42002C4F
61813 +:101620003C0208008C4200E0020210213042007FA0
61814 +:101630000342102100481021944200D43053FFFF90
61815 +:101640000E000493000000003C02080094424B5E30
61816 +:101650008F8300200011340000C2302500122C00BE
61817 +:101660003C02400000C2302534A50001AC700000EF
61818 +:101670008FBF0020AC6000048FB20018AC7300086C
61819 +:101680008FB10014AC60000C8FB3001CAC6500106F
61820 +:101690008FB00010AC60001424040001AC6000188E
61821 +:1016A00027BD00280A0004B8AC66001C8FBF0020CC
61822 +:1016B0008FB3001C8FB200188FB100148FB00010D0
61823 +:1016C00003E0000827BD00289343010F2402001007
61824 +:1016D0001062000E2865001110A0000724020012FD
61825 +:1016E000240200082405003A1062000600003021A0
61826 +:1016F00003E0000800000000240500351462FFFC30
61827 +:10170000000030210A000538000000008F420074FC
61828 +:1017100024420FA003E00008AF62000C27BDFFE8E1
61829 +:10172000AFBF00100E00025E240500018FBF001045
61830 +:1017300024020001A762001227BD00182402000144
61831 +:1017400003E00008A360002227BDFFE0AFB1001452
61832 +:10175000AFB00010AFBF001830B1FFFF0E00025055
61833 +:10176000008080219362003F24030004304200FF88
61834 +:101770001443000C02002021122000082402000A59
61835 +:101780000E00053100000000936200052403FFFEF7
61836 +:1017900000431024A362000524020012A362003F4C
61837 +:1017A000020020210E000259A360008116200003D0
61838 +:1017B000020020210E0005950000000002002021FB
61839 +:1017C000322600FF8FBF00188FB100148FB00010B9
61840 +:1017D000240500380A00053827BD002027BDFFE09A
61841 +:1017E000AFBF001CAFB20018AFB10014AFB0001013
61842 +:1017F0000E000250008080210E0005310000000024
61843 +:101800009362003F24120018305100FF123200038F
61844 +:101810000200202124020012A362003F936200050F
61845 +:101820002403FFFE004310240E000259A3620005AA
61846 +:10183000020020212405002016320007000030217C
61847 +:101840008FBF001C8FB200188FB100148FB0001032
61848 +:101850000A00025E27BD00208FBF001C8FB2001857
61849 +:101860008FB100148FB00010240500390A0005382C
61850 +:1018700027BD002027BDFFE8AFB00010AFBF0014A8
61851 +:101880009742010C2405003600808021144000108E
61852 +:10189000304600FF0E00025000000000240200123B
61853 +:1018A000A362003F93620005344200100E00053130
61854 +:1018B000A36200050E00025902002021020020212F
61855 +:1018C0000E00025E240500200A000604000000004D
61856 +:1018D0000E000538000000000E000250020020211A
61857 +:1018E000936200232403FF9F020020210043102461
61858 +:1018F0008FBF00148FB00010A36200230A000259AA
61859 +:1019000027BD001827BDFFE0AFBF0018AFB100141E
61860 +:10191000AFB0001030B100FF0E00025000808021F7
61861 +:10192000240200120E000531A362003F0E0002598E
61862 +:101930000200202102002021022030218FBF001848
61863 +:101940008FB100148FB00010240500350A0005384F
61864 +:1019500027BD0020A380002C03E00008A380002DF9
61865 +:101960008F4202780440FFFE8F820034AF42024073
61866 +:1019700024020002A34202443C02100003E00008DB
61867 +:10198000AF4202783C0360008C6254003042000891
61868 +:101990001440FFFD000000008C625408AF82000C70
61869 +:1019A00024020052AC605408AC645430AC6254342D
61870 +:1019B0002402000803E00008AC6254003C0260000E
61871 +:1019C0008C42540030420008104000053C03600087
61872 +:1019D0008C625400304200081440FFFD00000000FB
61873 +:1019E0008F83000C3C02600003E00008AC43540805
61874 +:1019F00090A3000024020005008040213063003FD6
61875 +:101A000000004821146200050000502190A2001C33
61876 +:101A100094A3001E304900FF306AFFFFAD00000CA8
61877 +:101A2000AD000010AD000024950200148D05001CCF
61878 +:101A30008D0400183042FFFF0049102300021100FE
61879 +:101A4000000237C3004038210086202300A2102B5B
61880 +:101A50000082202300A72823AD05001CAD04001838
61881 +:101A6000A5090014A5090020A50A001603E0000836
61882 +:101A7000A50A00228F4201F80440FFFE2402000262
61883 +:101A8000AF4401C0A34201C43C02100003E00008BF
61884 +:101A9000AF4201F83C0208008C4200B427BDFFE8C9
61885 +:101AA000AFBF001424420001AFB000103C01080099
61886 +:101AB000AC2200B48F4300243C02001F30AA00FF78
61887 +:101AC0003442FF8030D800FF006280240080F8217B
61888 +:101AD00030EF00FF1158003B01405821240CFF80DB
61889 +:101AE0003C19000A3163007F000310C00003194055
61890 +:101AF000006218213C0208008C4200DC25680001CD
61891 +:101B0000310D007F03E21021004310213043007F9C
61892 +:101B100003431821004C102400794821AF420024CF
61893 +:101B20008D220024016C1824006C7026AD22000C5C
61894 +:101B30008D220024310800FFAD22001095220014F0
61895 +:101B4000952300208D27001C3042FFFF3063FFFFEC
61896 +:101B50008D2600180043102300021100000227C345
61897 +:101B60000040282100C4302300E2102B00C23023A3
61898 +:101B700000E53823AD27001CAD2600189522002073
61899 +:101B8000A522001495220022154B000AA52200165A
61900 +:101B90008D2300248D220008254600013145008058
61901 +:101BA0001462000430C4007F108F000238AA008045
61902 +:101BB00000C0502151AF000131C800FF1518FFC906
61903 +:101BC000010058218F8400343082007F03421821A5
61904 +:101BD0003C02000A006218212402FF8000822024B7
61905 +:101BE000AF440024A06A0079A06A00838C62005090
61906 +:101BF0008F840034AC6200708C6500743C027FFFFF
61907 +:101C00003442FFFF00A228240E00066BAC6500746E
61908 +:101C1000AF5000248FBF00148FB0001003E0000805
61909 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6
61910 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0
61911 +:101C4000AFBF003CAFB60030AFB40028AFB3002444
61912 +:101C50008F4500248F4600288F43002C3C02001F34
61913 +:101C60003442FF800062182400C230240080A82182
61914 +:101C7000AFA3001400A2F0240E00062FAFA60010A0
61915 +:101C80003C0208008C4200E02410FF8003608821A1
61916 +:101C900002A2102100501024AF4200243C02080090
61917 +:101CA0008C4200E002A210213042007F0342182142
61918 +:101CB0003C02000A00629021924200D293630084A9
61919 +:101CC000305700FF306300FF24020001106200342F
61920 +:101CD000036020212402000214620036000000008C
61921 +:101CE0000E001216024028219223008392220083C4
61922 +:101CF0003063007F3042007F000210C000031940B3
61923 +:101D0000006218213C0208008C4200DC02A2102173
61924 +:101D10000043382100F01024AF42002892250078BB
61925 +:101D20009224008330E2007F034218213C02000C21
61926 +:101D300014850007006280212402FFFFA24200F107
61927 +:101D40002402FFFFA64200F20A0007272402FFFF39
61928 +:101D500096020020A24200F196020022A64200F262
61929 +:101D60008E020024AE4200F492220083A24200F0D0
61930 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863
61931 +:101D80008E220050AE4201008E4200CCAE420104D1
61932 +:101D9000922200853042003F0A0007823442004010
61933 +:101DA0000E00123902402821922200850A00078283
61934 +:101DB0003042003F936200852403FFDF3042003F42
61935 +:101DC000A36200859362008500431024A36200850E
61936 +:101DD0009363008393620078307400FF304200FF09
61937 +:101DE00010540036240AFF803C0C000C3283007F24
61938 +:101DF000000310C000031940006218213C020800D3
61939 +:101E00008C4200DC268800013109007F02A21021EB
61940 +:101E10000043382130E2007F0342182100EA1024F9
61941 +:101E2000AF420028006C80218E020024028A182410
61942 +:101E3000006A5826AE02000C8E020024310800FF12
61943 +:101E4000AE02001096020014960300208E07001CBC
61944 +:101E50003042FFFF3063FFFF8E060018004310235F
61945 +:101E600000021100000227C30040282100C43023D3
61946 +:101E700000E2102B00C2302300E53823AE07001C1F
61947 +:101E8000AE06001896020020A60200149602002258
61948 +:101E9000A602001692220079304200FF105400077B
61949 +:101EA0000000000051370001316800FF92220078E5
61950 +:101EB000304200FF1448FFCD0100A0219222008390
61951 +:101EC000A22200798E2200500A0007E2AE220070A2
61952 +:101ED000A22200858E22004C2405FF80AE42010C18
61953 +:101EE0009222008534420020A2220085924200D135
61954 +:101EF0003C0308008C6300DC305400FF3C02080007
61955 +:101F00008C4200E400143140001420C002A31821C8
61956 +:101F100000C4202102A210210064382100461021B3
61957 +:101F20000045182400E52824AF450028AF43002CC5
61958 +:101F30003042007F924400D030E3007F03422821EA
61959 +:101F4000034318213C02000C006280213C02000E79
61960 +:101F5000309600FF00A298211296002A000000008F
61961 +:101F60008E02000C02002021026028211040002572
61962 +:101F7000261000280E00064A000000009262000DA4
61963 +:101F800026830001307400FF3042007FA262000D02
61964 +:101F90002404FF801697FFF0267300203C020800FF
61965 +:101FA0008C4200DC0000A02102A210210044102479
61966 +:101FB000AF4200283C0208008C4200E43C030800C9
61967 +:101FC0008C6300DC02A2102100441024AF42002CDC
61968 +:101FD0003C0208008C4200E402A318213063007F19
61969 +:101FE00002A210213042007F034220210343182126
61970 +:101FF0003C02000C006280213C02000E0A0007A493
61971 +:10200000008298218E4200D8AE2200508E4200D825
61972 +:10201000AE22007092250083924600D19223008365
61973 +:10202000924400D12402FF8000A228243063007F64
61974 +:10203000308400FF00A628250064182A10600002E2
61975 +:1020400030A500FF38A50080A2250083A2250079D5
61976 +:102050000E00063D000000009222007E02A020211A
61977 +:10206000A222007A8E2300743C027FFF3442FFFFDD
61978 +:10207000006218240E00066BAE2300748FA20010BD
61979 +:10208000AF5E00248FBF003CAF4200288FBE0038F7
61980 +:102090008FA200148FB700348FB600308FB5002C9C
61981 +:1020A0008FB400288FB300248FB200208FB1001CA2
61982 +:1020B0008FB0001827BD004003E00008AF42002C9D
61983 +:1020C00090A2000024420001A0A200003C030800EE
61984 +:1020D0008C6300F4304200FF1443000F0080302175
61985 +:1020E000A0A000003C0208008C4200E48F84003471
61986 +:1020F000008220213082007F034218213C02000C24
61987 +:10210000006218212402FF8000822024ACC300005A
61988 +:1021100003E00008AF4400288C8200002442002025
61989 +:1021200003E00008AC82000094C200003C080800F4
61990 +:10213000950800CA30E7FFFF008048210102102106
61991 +:10214000A4C2000094C200003042FFFF00E2102B46
61992 +:1021500054400001A4C7000094A200003C03080002
61993 +:102160008C6300CC24420001A4A2000094A20000D1
61994 +:102170003042FFFF544300078F8600280107102BD1
61995 +:10218000A4A000005440000101003821A4C70000B1
61996 +:102190008F8600288CC4001CAF44003C94A2000031
61997 +:1021A0008F43003C3042FFFF000210C00062182144
61998 +:1021B000AF43003C8F42003C008220231880000483
61999 +:1021C000000000008CC200180A00084324420001ED
62000 +:1021D0008CC20018AF4200383C020050344200105C
62001 +:1021E000AF420030000000000000000000000000CE
62002 +:1021F0008F420000304200201040FFFD0000000030
62003 +:102200008F420404AD2200048F420400AD2200007E
62004 +:102210003C020020AF42003003E000080000000054
62005 +:1022200027BDFFE0AFB20018AFB10014AFB000108F
62006 +:10223000AFBF001C94C2000000C080213C12080007
62007 +:10224000965200C624420001A60200009603000038
62008 +:1022500094E2000000E03021144300058FB100300B
62009 +:102260000E000818024038210A000875000000001E
62010 +:102270008C8300048C820004244200400461000727
62011 +:10228000AC8200048C8200040440000400000000C2
62012 +:102290008C82000024420001AC8200009602000003
62013 +:1022A0003042FFFF50520001A600000096220000BD
62014 +:1022B00024420001A62200008F82002896230000FD
62015 +:1022C00094420016144300048FBF001C2402000136
62016 +:1022D000A62200008FBF001C8FB200188FB100141F
62017 +:1022E0008FB0001003E0000827BD00208F89002870
62018 +:1022F00027BDFFE0AFBF00188D220028274804004B
62019 +:1023000030E700FFAF4200388D22002CAF8800304C
62020 +:10231000AF42003C3C020005AF420030000000002C
62021 +:1023200000000000000000000000000000000000AD
62022 +:10233000000000008C82000C8C82000CAD020000BA
62023 +:102340008C820010AD0200048C820018AD020008DF
62024 +:102350008C82001CAD02000C8CA20014AD02001097
62025 +:102360008C820020AD02001490820005304200FFF4
62026 +:1023700000021200AD0200188CA20018AD02001C71
62027 +:102380008CA2000CAD0200208CA20010AD02002433
62028 +:102390008CA2001CAD0200288CA20020AD02002CF3
62029 +:1023A000AD060030AD000034978300263402FFFFF5
62030 +:1023B00014620002006020213404FFFF10E00011CD
62031 +:1023C000AD04003895230036952400362402000120
62032 +:1023D0003063FFFF000318C20069182190650040B8
62033 +:1023E000308400070082100400451025A0620040E0
62034 +:1023F0008F820028944200563042FFFF0A0008DC1A
62035 +:10240000AD02003C952300369524003624020001DD
62036 +:102410003063FFFF000318C2006918219065004077
62037 +:1024200030840007008210040002102700451024A9
62038 +:10243000A0620040AD00003C000000000000000071
62039 +:10244000000000003C02000634420040AF42003071
62040 +:102450000000000000000000000000008F420000AB
62041 +:10246000304200101040FFFD8F860028AF880030FA
62042 +:1024700024C2005624C7003C24C4002824C50032CE
62043 +:1024800024C600360E000856AFA200108FBF0018F9
62044 +:1024900003E0000827BD00208F8300243C060800CD
62045 +:1024A0008CC600E88F82003430633FFF0003198040
62046 +:1024B00000461021004310212403FF803046007F96
62047 +:1024C00000431024AF420028034618213C02000CB0
62048 +:1024D0000062302190C2000D30A500FF00003821BD
62049 +:1024E00034420010A0C2000D8F8900288F8A00247A
62050 +:1024F00095230036000A13823048000324020001AD
62051 +:10250000A4C3000E1102000B2902000210400005B6
62052 +:10251000240200021100000C240300010A0009201B
62053 +:102520000000182111020006000000000A00092026
62054 +:10253000000018218CC2002C0A000920244300014D
62055 +:102540008CC20014244300018CC200180043102BDD
62056 +:1025500050400009240700012402002714A20003B0
62057 +:10256000000000000A00092C240700019522003E0B
62058 +:1025700024420001A522003E000A138230430003DA
62059 +:102580002C62000210400009008028211460000421
62060 +:102590000000000094C200360A00093C3046FFFFEC
62061 +:1025A0008CC600380A00093C008028210000302138
62062 +:1025B0003C04080024844B780A00088900000000CD
62063 +:1025C000274901008D22000C9523000601202021BF
62064 +:1025D000000216023046003F3063FFFF240200274E
62065 +:1025E00000C0282128C7002810C2000EAF83002495
62066 +:1025F00010E00008240200312402002110C200096A
62067 +:102600002402002510C200079382002D0A00095BF6
62068 +:102610000000000010C200059382002D0A00095B33
62069 +:10262000000000000A0008F4000000000A0006266E
62070 +:102630000000000095230006912400058D25000C64
62071 +:102640008D2600108D2700188D28001C8D29002054
62072 +:10265000244200013C010800A4234B7E3C010800F9
62073 +:10266000A0244B7D3C010800AC254B843C010800B4
62074 +:10267000AC264B883C010800AC274B903C0108007D
62075 +:10268000AC284B943C010800AC294B9803E00008AF
62076 +:10269000A382002D8F87002827BDFFC0AFB3003471
62077 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0
62078 +:1026B0003C0208008C4200D094E3003030B0FFFFB1
62079 +:1026C000005010073045FFFF3063FFFF00C0982126
62080 +:1026D000A7A200103C110800963100C614A3000602
62081 +:1026E0003092FFFF8CE2002424420030AF42003CD5
62082 +:1026F0000A0009948CE2002094E200323042FFFF8D
62083 +:1027000054A2000827A400188CE2002C24420030B8
62084 +:10271000AF42003C8CE20028AF4200380A0009A218
62085 +:102720008F84002827A5001027A60020022038212A
62086 +:102730000E000818A7A000208FA200182442003025
62087 +:10274000AF4200388FA2001CAF42003C8F840028AB
62088 +:102750003C020005AF42003094820034274304005D
62089 +:102760003042FFFF0202102B14400007AF830030FD
62090 +:1027700094820054948300340202102100431023F9
62091 +:102780000A0009B63043FFFF94830054948200345A
62092 +:102790000223182100501023006218233063FFFF2A
62093 +:1027A000948200163042FFFF144300030000000033
62094 +:1027B0000A0009C424030001948200163042FFFF7E
62095 +:1027C0000043102B104000058F82003094820016C9
62096 +:1027D000006210233043FFFF8F820030AC530000B3
62097 +:1027E000AC400004AC520008AC43000C3C020006B4
62098 +:1027F00034420010AF420030000000000000000032
62099 +:10280000000000008F420000304200101040FFFD29
62100 +:10281000001018C2006418219065004032040007BF
62101 +:10282000240200018FBF00388FB300348FB2003014
62102 +:102830008FB1002C8FB000280082100400451025B5
62103 +:1028400027BD004003E00008A062004027BDFFA8AC
62104 +:10285000AFB60050AFB5004CAFB40048AFB30044C2
62105 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2
62106 +:102870008C9000003C0208008C4200E88F860034F7
62107 +:10288000960300022413FF8000C2302130633FFF13
62108 +:102890000003198000C3382100F3102490B2000017
62109 +:1028A000AF42002C9203000230E2007F034230214D
62110 +:1028B0003C02000E00C28821306300C024020040A8
62111 +:1028C0000080A82100A0B021146200260000A021F1
62112 +:1028D0008E3400388E2200181440000224020001B9
62113 +:1028E000AE2200189202000D304200201440001564
62114 +:1028F0008F8200343C0308008C6300DC001238C077
62115 +:10290000001231400043102100C730210046382119
62116 +:1029100030E300073C02008030E6007800C230253A
62117 +:102920000343182100F31024AF4208002463090078
62118 +:10293000AF4608108E2200188C6300080043102157
62119 +:10294000AE2200188E22002C8E2300182442000193
62120 +:102950000062182B1060003D000000000A000A7899
62121 +:1029600000000000920300022402FFC00043102474
62122 +:10297000304200FF1440000524020001AE2200187E
62123 +:10298000962200360A000A613054FFFF8E2200149E
62124 +:1029900024420001AE22001892020000000216003C
62125 +:1029A0000002160304410029000000009602000204
62126 +:1029B00027A4001000802821A7A20016960200027A
62127 +:1029C00024070001000030213042FFFFAF820024C5
62128 +:1029D0000E000889AFA0001C960300023C0408000A
62129 +:1029E0008C8400E88F82003430633FFF000319803D
62130 +:1029F00000441021004310213043007F3C05000CAF
62131 +:102A00000053102403431821AF4200280065182109
62132 +:102A10009062000D001221403042007FA062000D44
62133 +:102A20003C0308008C6300E48F82003400431021D3
62134 +:102A30000044382130E2007F03421021004510217C
62135 +:102A400000F31824AF430028AEA200009222000D2C
62136 +:102A5000304200101040001302A020218F83002874
62137 +:102A60008EA40000028030219462003E2442FFFFC9
62138 +:102A7000A462003E948400029625000E3084FFFF7D
62139 +:102A80000E00097330A5FFFF8F82002894430034A5
62140 +:102A90009622000E1443000302A02021240200010C
62141 +:102AA000A382002C02C028210E0007FE00000000B7
62142 +:102AB0008FBF00548FB600508FB5004C8FB40048C4
62143 +:102AC0008FB300448FB200408FB1003C8FB000380C
62144 +:102AD00003E0000827BD00588F82002827BDFFD0E3
62145 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA
62146 +:102AF000AFB1001CAFB00018904400D0904300D19B
62147 +:102B00000000A021309200FFA3A30010306300FF5B
62148 +:102B10008C5100D88C5300DC1072002B2402000171
62149 +:102B20003C0308008C6300E493A400108F820034FF
62150 +:102B30002406FF800004214000431021004410219E
62151 +:102B40003043007F00461024AF4200280343182181
62152 +:102B50003C02000C006218218C62000427A40014BF
62153 +:102B600027A50010022280210270102304400015C6
62154 +:102B7000AFA300149062000D00C21024304200FF89
62155 +:102B800014400007020088219062000D344200408A
62156 +:102B90000E0007FEA062000D0A000ABD93A20010FD
62157 +:102BA0000E0009E1241400018F830028AC7000D8C6
62158 +:102BB00093A20010A06200D193A200101452FFD87B
62159 +:102BC0000000000024020001168200048FBF002CC8
62160 +:102BD0000E000626000000008FBF002C8FB40028D6
62161 +:102BE0008FB300248FB200208FB1001C8FB000186B
62162 +:102BF00003E0000827BD003027BDFFD8AFB3001C9D
62163 +:102C0000AFB20018AFB10014AFB00010AFBF0020DA
62164 +:102C10000080982100E0802130B1FFFF0E00049376
62165 +:102C200030D200FF000000000000000000000000A3
62166 +:102C30008F820020AC510000AC520004AC5300085D
62167 +:102C4000AC40000CAC400010AC400014AC4000188C
62168 +:102C50003C03080094634B5E02038025AC50001CCB
62169 +:102C6000000000000000000000000000240400013B
62170 +:102C70008FBF00208FB3001C8FB200188FB10014DB
62171 +:102C80008FB000100A0004B827BD002827BDFFE858
62172 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B
62173 +:102CA0000080802124020C80AF420024000000003C
62174 +:102CB0000000000000000000000000000000000014
62175 +:102CC0000E000ACC000000003C040800248400E050
62176 +:102CD0008C8200002403FF808FBF001402021021A9
62177 +:102CE00000431024AF4200248C8200003C03000A01
62178 +:102CF000020280213210007F035010218FB000109B
62179 +:102D00000043102127BD001803E00008AF8200280F
62180 +:102D100027BDFFE8AFBF00108F4401403C0308000F
62181 +:102D20008C6300E02402FF80AF840034008318210C
62182 +:102D300000621024AF4200243C02000803424021FC
62183 +:102D4000950500023063007F3C02000A034318210E
62184 +:102D50000062182130A5FFFF3402FFFF0000302180
62185 +:102D60003C07602010A20006AF8300282402FFFF6A
62186 +:102D7000A5020002946500D40E000AF130A5FFFF01
62187 +:102D80008FBF001024020C8027BD001803E000084C
62188 +:102D9000AF4200243C020008034240219502000299
62189 +:102DA0003C0A0800954A00C63046FFFF14C00007E1
62190 +:102DB0003402FFFF8F8200288F8400343C0760209C
62191 +:102DC000944500D40A000B5A30A5FFFF10C200241E
62192 +:102DD0008F87002894E2005494E400163045FFFFEA
62193 +:102DE00000A6102300A6182B3089FFFF10600004F6
62194 +:102DF0003044FFFF00C51023012210233044FFFFA1
62195 +:102E0000008A102B1040000C012A1023240200011C
62196 +:102E1000A50200162402FFFFA502000294E500D4DB
62197 +:102E20008F8400340000302130A5FFFF3C07602074
62198 +:102E30000A000AF1000000000044102A10400008B7
62199 +:102E4000000000009502001630420001104000040E
62200 +:102E5000000000009742007E24420014A5020016E4
62201 +:102E600003E00008000000008F84002827BDFFE079
62202 +:102E7000AFBF0018948200349483003E1060001AA3
62203 +:102E80003048FFFF9383002C2402000114620027C6
62204 +:102E90008FBF00188F820028000818C23108000771
62205 +:102EA000006218212447003A244900542444002099
62206 +:102EB000244500302446003490620040304200FF38
62207 +:102EC0000102100730420001104000168FBF0018A9
62208 +:102ED0000E000856AFA900108F82002894420034DB
62209 +:102EE0000A000B733048FFFF94830036948200344D
62210 +:102EF0001043000E8FBF001894820036A482003465
62211 +:102F000094820056A48200548C82002CAC8200244F
62212 +:102F100094820032A48200309482003CA482003A61
62213 +:102F20008FBF00180A000B3327BD002003E0000804
62214 +:102F300027BD002027BDFFE8AFBF00108F4A01006A
62215 +:102F40003C0508008CA500E03C02080090424B8440
62216 +:102F50003C0C0800958C4B7E01452821304B003FEE
62217 +:102F600030A2007F03424021396900323C02000A4E
62218 +:102F70003963003F2C630001010240212D2900012B
62219 +:102F80002402FF8000A2282401234825AF8A0034B0
62220 +:102F900000801821AF450024000030210080282146
62221 +:102FA00024070001AF8800283C04080024844B78E3
62222 +:102FB000AF8C002415200007A380002D24020020E0
62223 +:102FC0005562000F006020213402FFFF5582000C83
62224 +:102FD000006020212402002015620005000000008E
62225 +:102FE0008C6300142402FFFF106200070000000041
62226 +:102FF0000E000889000000000A000BD0000000004D
62227 +:103000000E0008F4016028210E000B68000000008B
62228 +:103010008FBF001024020C8027BD001803E00008B9
62229 +:10302000AF4200243C0208008C4200E027BDFFA014
62230 +:10303000AFB1003C008210212411FF80AFBE0058C8
62231 +:10304000AFB70054AFB20040AFB00038AFBF005CC4
62232 +:10305000AFB60050AFB5004CAFB40048AFB30044BA
62233 +:10306000005110248F4800248F4900288F470028E2
62234 +:10307000AF4200243C0208008C4200E00080902116
62235 +:1030800024060006008210213042007F03421821EE
62236 +:103090003C02000A006280213C02001F3442FF8093
62237 +:1030A00000E2382427A40010260500F00122F024B5
62238 +:1030B0000102B8240E00051DAFA700308FA2001832
62239 +:1030C000AE0200C48FA2001CAE0200C88FA2002472
62240 +:1030D000AE0200CC93A40010920300D12402FF8022
62241 +:1030E0000082102400431025304900FF3083007F08
62242 +:1030F0003122007F0062102A10400004000310C03B
62243 +:1031000001311026304900FF000310C000031940B0
62244 +:10311000006218213C0208008C4200DC920400D2BC
62245 +:10312000024210210043102100511024AF42002818
62246 +:1031300093A300103063007F000310C00003194008
62247 +:10314000006218213C0208008C4200DC024210217F
62248 +:10315000004310213042007F034218213C02000C42
62249 +:10316000006240218FA300142402FFFF1062003090
62250 +:10317000309500FF93A2001195030014304400FF26
62251 +:103180003063FFFF0064182B1060000D000000008A
62252 +:10319000950400148D07001C8D0600183084FFFF75
62253 +:1031A00000442023000421000000102100E4382105
62254 +:1031B00000E4202B00C230210A000C4A00C4302158
62255 +:1031C000950400148D07001C8D0600183084FFFF45
62256 +:1031D000008220230004210000001021008018211B
62257 +:1031E00000C2302300E4202B00C4302300E3382346
62258 +:1031F000AD07001CAD06001893A20011A502001433
62259 +:1032000097A20012A50200168FA20014AD020010B2
62260 +:103210008FA20014AD02000C93A20011A5020020A1
62261 +:1032200097A20012A50200228FA20014AD02002472
62262 +:103230002406FF80024610243256007FAF4200244D
62263 +:10324000035618213C02000A006280218E02004CC5
62264 +:103250008FA200203124007F000428C0AE0200505D
62265 +:103260008FA200200004214000852821AE020070BA
62266 +:1032700093A2001001208821A202008393A20010D3
62267 +:10328000A2020079920200853042003FA20200852E
62268 +:103290003C0208008C4200DC024210210045102153
62269 +:1032A00000461024AF42002C3C0208008C4200E48F
62270 +:1032B0003C0308008C6300DC024210210044102112
62271 +:1032C00000461024AF4200283C0208008C4200E473
62272 +:1032D00002431821006518210242102100441021E8
62273 +:1032E0003042007F3063007F93A50010034220210D
62274 +:1032F000034318213C02000E006240213C02000CF6
62275 +:1033000010B1008C008248213233007F1660001912
62276 +:103310002404FF803C0208008C4200DC02421021A1
62277 +:1033200000441024AF42002C3C0208008C4200E410
62278 +:103330003C0308008C6300DC02421021004410248E
62279 +:10334000AF4200283C0208008C4200E402431821EE
62280 +:103350003063007F024210213042007F034220216F
62281 +:10336000034318213C02000E006240213C02000C85
62282 +:10337000008248219124000D2414FF8000001021B8
62283 +:1033800000942025A124000D950400029505001449
62284 +:103390008D07001C3084FFFF30A5FFFF8D0600184D
62285 +:1033A000008520230004210000E4382100C23021E0
62286 +:1033B00000E4202B00C43021AD07001CAD0600182E
62287 +:1033C00095020002A5020014A50000168D02000857
62288 +:1033D000AD0200108D020008AD02000C9502000243
62289 +:1033E000A5020020A50000228D020008AD020024E5
62290 +:1033F0009122000D30420040104000422622000180
62291 +:103400003C0208008C4200E0A3B300283C10000AF4
62292 +:103410000242102100541024AF4200243C02080054
62293 +:103420008C4200E0A380002C27A4002C0242102133
62294 +:103430003042007F03421821007018218C6200D8AE
62295 +:103440008D26000427A50028AFA9002C00461021D6
62296 +:10345000AC6200D80E0009E1AF83002893A30028D6
62297 +:103460008F8200280E000626A04300D10E000B68B4
62298 +:103470000000000002541024AF4200243C02080067
62299 +:103480008C4200DC00132940001320C000A420213E
62300 +:10349000024210210044102100541024AF42002C9D
62301 +:1034A0003C0208008C4200E43C0308008C6300DC12
62302 +:1034B00003563021024210210045102100541024EF
62303 +:1034C000AF4200283C0208008C4200E4024318216D
62304 +:1034D0000064182102421021004510213042007F73
62305 +:1034E0003063007F03422021034318213C02000E79
62306 +:1034F000006240213C02000C00D080210082482163
62307 +:10350000262200013043007F14750005304400FF7F
62308 +:103510002403FF800223102400431026304400FFC0
62309 +:1035200093A2001000808821250800281444FF760B
62310 +:103530002529002093A400108FA300142402FFFF6C
62311 +:103540001062000A308900FF2482000124830001F8
62312 +:103550003042007F14550005306900FF2403FF80CE
62313 +:103560000083102400431026304900FF92020078A7
62314 +:10357000305300FF11330032012088213C02080043
62315 +:103580008C4200DC3225007F000520C00005294068
62316 +:1035900000A42021024210212406FF8000441021B3
62317 +:1035A00000461024AF42002C3C0308008C6300DC72
62318 +:1035B0003C0208008C4200E4024318210242102120
62319 +:1035C0000045102100641821004610243063007F5C
62320 +:1035D000AF420028034318213C02000E0062402144
62321 +:1035E0003C0208008C4200E48D06000C0100202102
62322 +:1035F00002421021004510213042007F0342182171
62323 +:103600003C02000C0062482110C0000D012028215E
62324 +:103610000E00064A000000002402FF800222182447
62325 +:1036200026240001006228263082007F1455000203
62326 +:10363000308300FF30A300FF1473FFD000608821A7
62327 +:103640008E0300743C027FFF3442FFFF00621824A7
62328 +:10365000AE0300740E00066B02402021AF57002419
62329 +:103660008FA20030AF5E00288FBF005C8FBE005875
62330 +:103670008FB700548FB600508FB5004C8FB4004800
62331 +:103680008FB300448FB200408FB1003C8FB0003840
62332 +:1036900027BD006003E00008AF42002C27BDFFD823
62333 +:1036A000AFB1001CAFBF0020AFB000182751018898
62334 +:1036B000922200032408FF803C03000A3047007F69
62335 +:1036C000A3A700108F4601803C0208008C4200E056
62336 +:1036D000AF86003400C2282100A81024AF42002485
62337 +:1036E0009224000030A2007F0342102100431021E9
62338 +:1036F000AF8200283084007F24020002148200255B
62339 +:10370000000719403C0208008C4200E400C210216E
62340 +:103710000043282130A2007F0342182100A8102472
62341 +:10372000AF4200283C02000C006218219062000D9C
62342 +:10373000AFA3001400481025A062000D8FA3001451
62343 +:103740009062000D304200405040006A8FBF002060
62344 +:103750008F860028A380002C27A400148CC200D8D8
62345 +:103760008C63000427A50010004310210E0009E11E
62346 +:10377000ACC200D893A300108F8200280E0006264A
62347 +:10378000A04300D10E000B68000000000A000E0BE1
62348 +:103790008FBF00200E00062F00C020210E00063D26
62349 +:1037A000000000003C020008034280219223000137
62350 +:1037B0009202007B1443004F8FBF00209222000032
62351 +:1037C0003044007F24020004108200172882000584
62352 +:1037D00010400006240200052402000310820007A6
62353 +:1037E0008FB1001C0A000E0C0000000010820012B5
62354 +:1037F0008FBF00200A000E0C8FB1001C92050083C1
62355 +:10380000920600788E0700748F84003430A500FF84
62356 +:1038100000073E0230C600FF0E00067330E7007F4F
62357 +:103820000A000E0B8FBF00200E000BD78F840034D0
62358 +:103830000A000E0B8FBF002024020C80AF42002430
62359 +:103840009202003E30420040104000200000000084
62360 +:103850009202003E00021600000216030441000618
62361 +:10386000000000008F8400340E0005A024050093A2
62362 +:103870000A000E0B8FBF00209202003F24030018A5
62363 +:10388000304200FF1443000C8F84003424050039BB
62364 +:103890000E000538000030210E0002508F840034E5
62365 +:1038A00024020012A202003F0E0002598F8400344D
62366 +:1038B0000A000E0B8FBF0020240500360E000538CD
62367 +:1038C000000030210A000E0B8FBF00200E000250B6
62368 +:1038D0008F8400349202000534420020A2020005C9
62369 +:1038E0000E0002598F8400340E000FC08F84003404
62370 +:1038F0008FBF00208FB1001C8FB0001824020C80F5
62371 +:1039000027BD002803E00008AF42002427BDFFE8E0
62372 +:10391000AFB00010AFBF001427430100946200084D
62373 +:103920000002140000021403044100020000802180
62374 +:103930002410000194620008304200801040001AF8
62375 +:10394000020010219462000830422000104000164E
62376 +:10395000020010218C6300183C021C2D344219ED2A
62377 +:10396000240600061062000F3C0760213C0208009C
62378 +:103970008C4200D4104000078F8200288F830028DB
62379 +:10398000906200623042000F34420040A062006248
62380 +:103990008F8200288F840034944500D40E000AF1F1
62381 +:1039A00030A5FFFF020010218FBF00148FB0001060
62382 +:1039B00003E0000827BD001827BDFFE0AFB10014E9
62383 +:1039C000AFB00010A380002CAFBF00188F450100DE
62384 +:1039D0003C0308008C6300E02402FF80AF850034C4
62385 +:1039E00000A318213064007F0344202100621824C2
62386 +:1039F0003C02000A00822021AF430024275001002E
62387 +:103A00008E0200148C8300DCAF8400280043102356
62388 +:103A100018400004000088218E0200140E000A8461
62389 +:103A2000AC8200DC9202000B24030002304200FF53
62390 +:103A30001443002F0000000096020008304300FFEE
62391 +:103A40002402008214620005240200840E00093E54
62392 +:103A5000000000000A000E97000000001462000938
62393 +:103A6000240200818F8200288F8400343C0760216B
62394 +:103A7000944500D49206000530A5FFFF0A000E868B
62395 +:103A800030C600FF14620027000000009202000A06
62396 +:103A9000304300FF306200201040000430620040DC
62397 +:103AA0008F8400340A000E82240600401040000477
62398 +:103AB000000316008F8400340A000E8224060041A1
62399 +:103AC00000021603044100178F84003424060042CC
62400 +:103AD0008F8200283C076019944500D430A5FFFF71
62401 +:103AE0000E000AF1000000000A000E97000000001E
62402 +:103AF0009202000B24030016304200FF1043000620
62403 +:103B0000000000009202000B24030017304200FF67
62404 +:103B100014430004000000000E000E11000000001D
62405 +:103B2000004088210E000B68000000009202000A8D
62406 +:103B3000304200081040000624020C808F850028C7
62407 +:103B40003C0400080E0011EE0344202124020C80E6
62408 +:103B5000AF4200248FBF0018022010218FB0001048
62409 +:103B60008FB1001403E0000827BD002027BDFFE847
62410 +:103B7000AFBF0014AFB000108F5000243C0308000A
62411 +:103B80008C6300E08F4501002402FF8000A3182110
62412 +:103B90003064007F03442021006218243C02000AA4
62413 +:103BA00000822021AF850034AF4300249082006260
62414 +:103BB000AF8400283042000F34420050A0820062DF
62415 +:103BC0003C02001F3442FF800E00062602028024C1
62416 +:103BD000AF5000248FBF00148FB0001003E0000826
62417 +:103BE00027BD00183C0208008C4200201040001D38
62418 +:103BF0002745010090A300093C0200080342202150
62419 +:103C000024020018546200033C0200080A000ED887
62420 +:103C10002402000803422021240200161462000539
62421 +:103C20002402001724020012A082003F0A000EE2C4
62422 +:103C300094A700085462000694A700089362000548
62423 +:103C40002403FFFE00431024A362000594A700088C
62424 +:103C500090A6001B8CA4000094A500060A000ACCC4
62425 +:103C600000073C0003E000080000000027440100BA
62426 +:103C700094820008304500FF38A3008238A20084F7
62427 +:103C80002C6300012C420001006218251060000620
62428 +:103C9000240200839382002D1040000D00000000DC
62429 +:103CA0000A000B9B0000000014A2000524A2FF8064
62430 +:103CB0008F4301043C02602003E00008AC43001481
62431 +:103CC000304200FF2C420002104000032402002278
62432 +:103CD0000A000E3C0000000014A2000300000000D7
62433 +:103CE0000A000EA9000000000A000EC70000000034
62434 +:103CF0009363007E9362007A144300090000202140
62435 +:103D00009362000024030050304200FF144300047B
62436 +:103D1000240400019362007E24420001A362007E1D
62437 +:103D200003E00008008010218F4201F80440FFFEEC
62438 +:103D300024020002AF4401C0A34201C43C021000AF
62439 +:103D400003E00008AF4201F827BDFFE8AFBF001055
62440 +:103D50009362003F2403000A304200FF14430046F0
62441 +:103D6000000000008F6300548F62004C1062007DE1
62442 +:103D7000036030219362000024030050304200FFB2
62443 +:103D80001443002F000000008F4401403C02080053
62444 +:103D90008C4200E02403FF800082102100431024A5
62445 +:103DA000AF4200243C0208008C4200E08F650054C2
62446 +:103DB0003C03000A008220213084007F034410214C
62447 +:103DC00000431021AC4501089762003C8F63004C12
62448 +:103DD0003042FFFF0002104000621821AF63005C18
62449 +:103DE0008F6300548F64004C9762003C006418237A
62450 +:103DF0003042FFFF00031843000210400043102A26
62451 +:103E000010400006000000008F6200548F63004CD9
62452 +:103E1000004310230A000F58000210439762003C31
62453 +:103E20003042FFFF00021040ACC2006424020001D7
62454 +:103E3000A0C0007CA0C2008424020C80AF420024F9
62455 +:103E40000E000F0A8F440140104000478FBF001042
62456 +:103E50008F4301408F4201F80440FFFE240200021C
62457 +:103E6000AF4301C0A34201C43C021000AF4201F8BD
62458 +:103E70000A000FA88FBF00109362003F24030010B8
62459 +:103E8000304200FF14430004000000008F44014052
62460 +:103E90000A000F94000028219362003F24030016BB
62461 +:103EA000304200FF1443000424020014A362003FC8
62462 +:103EB0000A000FA2000000008F62004C8F630050C8
62463 +:103EC00000431023044100288FBF0010936200813B
62464 +:103ED00024420001A3620081936200812C4200040D
62465 +:103EE00014400010000000009362003F240300040F
62466 +:103EF000304200FF14430006000000008F440140E0
62467 +:103F00008FBF0010240500930A0005A027BD0018EC
62468 +:103F10008F440140240500938FBF00100A00060F54
62469 +:103F200027BD00188F4401400E0002500000000021
62470 +:103F30008F6200542442FFFFAF6200548F62005032
62471 +:103F40002442FFFFAF6200500E0002598F4401402F
62472 +:103F50008F4401408FBF0010240500040A00025E58
62473 +:103F600027BD00188FBF001003E0000827BD001810
62474 +:103F70008F4201889363007E00021402304400FFE8
62475 +:103F8000306300FF1464000D0000000093620080A5
62476 +:103F9000304200FF1044000900000000A3640080CC
62477 +:103FA0009362000024030050304200FF14430004D9
62478 +:103FB000000000000A0006D78F440180A36400803F
62479 +:103FC00003E000080000000027BDFFE8AFB00010CC
62480 +:103FD000AFBF00149362000524030030304200306C
62481 +:103FE00014430089008080213C0208008C4200209C
62482 +:103FF00010400080020020210E0004930000000009
62483 +:104000008F850020ACB000009362003E9363003FB8
62484 +:10401000304200FF00021200306300FF0043102511
62485 +:10402000ACA2000493620082000216000002160394
62486 +:1040300004410005000000003C0308008C630048B8
62487 +:104040000A000FE6000000009362003E304200408C
62488 +:10405000144000030000182193620081304300FFE8
62489 +:104060009362008200031E00304200FF0002140031
62490 +:1040700000621825ACA300088F620040ACA2000CBF
62491 +:104080008F620048ACA200108F62004CACA20014FA
62492 +:104090008F6200508F63004C0043102304410003E3
62493 +:1040A000000000000A000FFA8F62004C8F6200507F
62494 +:1040B000ACA200183C02080094424B5E3C03C00BCB
62495 +:1040C00000002021004310250E0004B8ACA2001C03
62496 +:1040D0008F6200548F840020AC8200008F620058F1
62497 +:1040E000AC8200048F62005CAC8200088F620060CA
62498 +:1040F0008F43007400431021AC82000C8F62006477
62499 +:10410000AC820010976300689762006A00031C008D
62500 +:104110003042FFFF00621825AC83001493620082D6
62501 +:1041200024030080304200FF14430003000000001D
62502 +:104130000A00102EAC8000188F63000C24020001CE
62503 +:104140001062000E2402FFFF9362003E30420040E6
62504 +:104150001440000A2402FFFF8F63000C8F4200749A
62505 +:10416000006218233C020800006210241440000280
62506 +:10417000000028210060282100051043AC820018AF
62507 +:104180003C02080094424B5E3C03C00C000020211E
62508 +:10419000004310258F8300200E0004B8AC62001C81
62509 +:1041A0008F6200188F8300203C05080094A54B5EA9
62510 +:1041B00024040001AC620000AC6000048F66006C57
62511 +:1041C0003C02400D00A22825AC6600088F6200DC8E
62512 +:1041D000AC62000CAC600010936200050002160097
62513 +:1041E000AC620014AC6000180E0004B8AC65001C92
62514 +:1041F000020020218FBF00148FB00010A3600005C3
62515 +:104200000A00042127BD00188FBF00148FB00010D2
62516 +:1042100003E0000827BD00189742007C30C600FF6D
62517 +:10422000A08600843047FFFF2402000514C2000B63
62518 +:1042300024E3465090A201122C42000710400007D0
62519 +:1042400024E30A0090A30112240200140062100467
62520 +:1042500000E210210A0010663047FFFF3067FFFFC1
62521 +:1042600003E00008A4870014AC87004C8CA201086E
62522 +:104270000080402100A0482100E2102330C600FF4A
62523 +:104280001840000393AA001324E2FFFCACA201082B
62524 +:1042900030C2000110400008000000008D020050F4
62525 +:1042A00000E2102304410013240600058D0200548F
62526 +:1042B00010E20010000000008D02005414E2001A09
62527 +:1042C000000000003C0208008C4200D83042002070
62528 +:1042D0001040000A2402000191030078910200833B
62529 +:1042E000144300062402000101002021012028219E
62530 +:1042F000240600040A00105400000000A1000084FD
62531 +:1043000011400009A50200148F4301008F4201F8FB
62532 +:104310000440FFFE24020002AF4301C0A34201C4D7
62533 +:104320003C021000AF4201F803E00008000000006A
62534 +:1043300027BDFFE88FA90028AFBF001000804021F3
62535 +:1043400000E918231860007330C600FFA080007CCD
62536 +:10435000A08000818CA2010800E210230440004DDF
62537 +:10436000000000008C8200509483003C8C84006428
62538 +:10437000004748233063FFFF012318210083202BCF
62539 +:1043800010800004000000008D0200640A0010B7D5
62540 +:1043900000E210219502003C3042FFFF0122102173
62541 +:1043A00000E21021AD02005C9502003C8D03005C30
62542 +:1043B0003042FFFF0002104000E210210043102BAA
62543 +:1043C00010400003000000000A0010C68D02005CCF
62544 +:1043D0009502003C3042FFFF0002104000E2102135
62545 +:1043E000AD02005CA1000084AD07004C8CA2010866
62546 +:1043F00000E210231840000224E2FFFCACA20108F6
62547 +:1044000030C200011040000A000000008D02005080
62548 +:1044100000E2102304410004010020218D02005419
62549 +:1044200014E20003000000000A0010E82406000562
62550 +:104430008D02005414E200478FBF00103C020800B8
62551 +:104440008C4200D8304200201040000A24020001B3
62552 +:1044500091030078910200831443000624020001B6
62553 +:1044600001002021240600048FBF00100A00105410
62554 +:1044700027BD0018A1000084A50200148F4301008D
62555 +:104480008F4201F80440FFFE240200020A00110DD1
62556 +:10449000000000008C82005C004910230043102BB8
62557 +:1044A00054400001AC87005C9502003C3042FFFFA5
62558 +:1044B0000062102B14400007240200029502003C09
62559 +:1044C0008D03005C3042FFFF00621821AD03005CE9
62560 +:1044D00024020002AD07004CA10200840E000F0A66
62561 +:1044E0008F4401001040001B8FBF00108F4301005C
62562 +:1044F0008F4201F80440FFFE24020002AF4301C0D6
62563 +:10450000A34201C43C021000AF4201F80A0011238B
62564 +:104510008FBF001030C200101040000E8FBF00107F
62565 +:104520008C83005C9482003C006918233042FFFFBA
62566 +:10453000006218213C023FFF3444FFFF0083102B30
62567 +:10454000544000010080182101231021AD02005CBD
62568 +:104550008FBF001003E0000827BD001827BDFFE84B
62569 +:104560008FAA0028AFBF00100080402100EA482336
62570 +:104570001920002130C600FF8C83005C8C8200640F
62571 +:10458000006A18230043102B5040001000691821C6
62572 +:1045900094A2011001221021A4A2011094A20110E2
62573 +:1045A0003042FFFF0043102B1440000A3C023FFF43
62574 +:1045B00094A2011000431023A4A201109482003C95
62575 +:1045C0003042FFFF0A00114200621821A4A001102E
62576 +:1045D0003C023FFF3444FFFF0083102B5440000196
62577 +:1045E0000080182100671021AD02005CA100007C52
62578 +:1045F0000A00118AA100008130C200101040003C66
62579 +:10460000000000008C820050004A1023184000383F
62580 +:10461000000000009082007C24420001A082007C07
62581 +:104620009082007C3C0308008C630024304200FF31
62582 +:104630000043102B1440005C8FBF00108CA20108B7
62583 +:1046400000E2102318400058000000008C83005442
62584 +:104650009482003C006A18233042FFFF0003184395
62585 +:10466000000210400043102A104000050000000026
62586 +:104670008C820054004A10230A001171000210437A
62587 +:104680009482003C3042FFFF00021040AD02006403
62588 +:104690009502003C8D0400649503003C3042FFFF0E
62589 +:1046A00000021040008220213063FFFF00831821A8
62590 +:1046B00001431021AD02005C8D020054ACA2010840
62591 +:1046C00024020002A10200840E000F0A8F440100A0
62592 +:1046D000104000358FBF00108F4301008F4201F85A
62593 +:1046E0000440FFFE240200020A0011B30000000093
62594 +:1046F000AD07004C8CA2010800E210231840000214
62595 +:1047000024E2FFFCACA2010830C200011040000A04
62596 +:10471000000000008D02005000E21023044100045C
62597 +:10472000010020218D02005414E20003000000006B
62598 +:104730000A0011AA240600058D02005414E2001A92
62599 +:104740008FBF00103C0208008C4200D8304200208D
62600 +:104750001040000A240200019103007891020083B6
62601 +:104760001443000624020001010020212406000455
62602 +:104770008FBF00100A00105427BD0018A10000844C
62603 +:10478000A50200148F4301008F4201F80440FFFE90
62604 +:1047900024020002AF4301C0A34201C43C02100046
62605 +:1047A000AF4201F88FBF001003E0000827BD0018DA
62606 +:1047B0008FAA00108C8200500080402130C600FF7C
62607 +:1047C000004A102300A048211840000700E01821EB
62608 +:1047D00024020001A0800084A0A00112A482001481
62609 +:1047E0000A001125AFAA0010A0800081AD07004C7F
62610 +:1047F0008CA2010800E210231840000224E2FFFC12
62611 +:10480000ACA2010830C20001104000080000000006
62612 +:104810008D0200500062102304410013240600059D
62613 +:104820008D02005410620010000000008D02005440
62614 +:1048300014620011000000003C0208008C4200D805
62615 +:10484000304200201040000A240200019103007849
62616 +:10485000910200831443000624020001010020217C
62617 +:1048600001202821240600040A0010540000000042
62618 +:10487000A1000084A502001403E00008000000006D
62619 +:1048800027BDFFE0AFBF0018274201009046000A95
62620 +:104890008C4800148C8B004C9082008430C900FF3F
62621 +:1048A00001681823304A00FF1C60001A2D460006DC
62622 +:1048B000240200010142100410C00016304300031E
62623 +:1048C000012030210100382114600007304C000C19
62624 +:1048D00015800009304200301440000B8FBF0018D3
62625 +:1048E0000A001214000000000E001125AFAB0010EA
62626 +:1048F0000A0012148FBF00180E00109AAFAB001000
62627 +:104900000A0012148FBF0018AFAB00100E0011BACE
62628 +:10491000AFAA00148FBF001803E0000827BD0020D5
62629 +:1049200024020003A08200848C82005403E000086B
62630 +:10493000ACA201083C0200080342182190620081E9
62631 +:10494000240600433C07601924420001A062008154
62632 +:10495000906300813C0208008C4200C0306300FF7D
62633 +:10496000146200102403FF803C0208008C4200E027
62634 +:104970000082102100431024AF4200243C020800B2
62635 +:104980008C4200E03C03000A008210213042007F8C
62636 +:104990000342102100431021944500D40A000AF17B
62637 +:1049A00030A5FFFF03E000080000000027BDFFE086
62638 +:1049B000AFBF0018AFB10014AFB000108F4201803C
62639 +:1049C0000080802100A088210E00121B00402021C1
62640 +:1049D000A20000848E0200548FBF00188FB0001018
62641 +:1049E000AE2201088FB1001403E0000827BD0020AB
62642 +:1049F00027BDFFE03C020008AFB00010AFBF0018B9
62643 +:104A0000AFB10014034280218F5101409203008412
62644 +:104A10008E0400508E02004C14820040306600FF6D
62645 +:104A20003C0208008C4200E02403FF800222102197
62646 +:104A300000431024AF4200243C0208008C4200E0F6
62647 +:104A40009744007C92050081022210213042007FB1
62648 +:104A5000034218213C02000A0062182114A0000B36
62649 +:104A60003084FFFF2402000554C20014248205DCB8
62650 +:104A70009062011224420001A062011224020C8003
62651 +:104A8000AF4200240A00127324020005A060011244
62652 +:104A90002402000514C20009248205DC9202008170
62653 +:104AA0002C4200075040000524820A009203008136
62654 +:104AB0002402001400621004008210213044FFFF21
62655 +:104AC000A60400140E00121B022020219602003CB6
62656 +:104AD0008E03004C022020213042FFFF00021040D4
62657 +:104AE000006218210E000250AE03005C9202007DAD
62658 +:104AF00002202021344200400E000259A202007D13
62659 +:104B00008F4201F80440FFFE24020002AF5101C0B1
62660 +:104B1000A34201C43C021000AF4201F88FBF00184D
62661 +:104B20008FB100148FB0001003E0000827BD0020F3
62662 +:104B300008000ACC08000B1408000B9808000BE4CE
62663 +:104B400008000C200A0000280000000000000000FF
62664 +:104B50000000000D6370362E322E3300000000007E
62665 +:104B60000602030400000000000000000000000036
62666 +:104B70000000000000000000000000000000000035
62667 +:104B80000000000000000000000000000000002005
62668 +:104B90000000000000000000000000000000000015
62669 +:104BA0000000000000000000000000000000000005
62670 +:104BB00000000000000000000000000000000001F4
62671 +:104BC0000000002B000000000000000400030D4066
62672 +:104BD00000000000000000000000000000000000D5
62673 +:104BE00000000000000000001000000300000000B2
62674 +:104BF0000000000D0000000D3C020800244258A4F3
62675 +:104C00003C03080024635F70AC4000000043202B8D
62676 +:104C10001480FFFD244200043C1D080037BD7FFCCA
62677 +:104C200003A0F0213C100800261000A03C1C080046
62678 +:104C3000279C58A40E0001AC000000000000000DED
62679 +:104C400027BDFFE83C096018AFBF00108D2C500055
62680 +:104C5000240DFF7F24080031018D5824356A380C5B
62681 +:104C600024070C003C1A8000AD2A50003C04800A46
62682 +:104C7000AF4800083C1B8008AF4700240E00091510
62683 +:104C8000AF8400100E0008D8000000000E000825B8
62684 +:104C9000000000000E001252000000003C046016EC
62685 +:104CA0008C8500003C06FFFF3C02535300A61824ED
62686 +:104CB0001062004734867C0094C201F2A780002C69
62687 +:104CC00010400003A78000CC38581E1EA798002C67
62688 +:104CD00094C201F810400004978300CC38591E1E7E
62689 +:104CE000A79900CC978300CC2C7F006753E000018C
62690 +:104CF000240300669784002C2C82040114400002D7
62691 +:104D000000602821240404003C0760008CE904387A
62692 +:104D10002403103C3128FFFF1103001F30B9FFFFAF
62693 +:104D200057200010A38000CE24020050A38200CEA2
62694 +:104D3000939F00CE53E0000FA78500CCA78000CC46
62695 +:104D4000978500CC8FBF0010A780002CA78000346F
62696 +:104D5000A78000E63C010800AC25008003E00008C5
62697 +:104D600027BD0018939F00CE57E0FFF5A78000CC29
62698 +:104D7000A78500CC978500CC8FBF0010A784002C9E
62699 +:104D8000A7800034A78000E63C010800AC25008025
62700 +:104D900003E0000827BD0018A38000CE8CCB003CA8
62701 +:104DA000316A00011140000E0000000030A7FFFF33
62702 +:104DB00010E0FFDE240200508CCC00C831860001D8
62703 +:104DC00014C0FFDC939F00CE0A00007A2402005139
62704 +:104DD0008C8F00043C0E60000A00005D01EE302163
62705 +:104DE0008CEF0808240D5708000F740211CD000441
62706 +:104DF00030B8FFFF240500660A00007B240404008D
62707 +:104E00001700FFCC939F00CE0A00007A24020050C6
62708 +:104E10008F8600103089FFFF000939408CC30010D5
62709 +:104E20003C08005000E82025AF4300388CC5001432
62710 +:104E300027420400AF82001CAF45003CAF44003065
62711 +:104E40000000000000000000000000000000000062
62712 +:104E50000000000000000000000000000000000052
62713 +:104E60008F4B0000316A00201140FFFD0000000060
62714 +:104E700003E00008000000008F840010948A001AEC
62715 +:104E80008C8700243149FFFF000940C000E8302131
62716 +:104E9000AF46003C8C8500248F43003C00A31023C8
62717 +:104EA00018400029000000008C8B002025620001C2
62718 +:104EB0003C0D005035AC0008AF420038AF4C00301C
62719 +:104EC00000000000000000000000000000000000E2
62720 +:104ED00000000000000000000000000000000000D2
62721 +:104EE0008F4F000031EE002011C0FFFD00000000D8
62722 +:104EF0008F4A04003C080020AC8A00108F4904044B
62723 +:104F0000AC890014AF4800300000000094860018FF
62724 +:104F10009487001C00C71821A48300189485001AE8
62725 +:104F200024A20001A482001A9498001A9499001EE9
62726 +:104F3000133800030000000003E000080000000038
62727 +:104F400003E00008A480001A8C8200200A0000DC24
62728 +:104F50003C0D00500A0000CD000000003C0308009A
62729 +:104F60008C6300208F82001827BDFFE810620008C4
62730 +:104F7000AFBF00100E000104AF8300183C0308000F
62731 +:104F80008C63002024040001106400048F89001049
62732 +:104F90008FBF001003E0000827BD00188FBF00106E
62733 +:104FA0003C076012A520000A9528000A34E500108D
62734 +:104FB00027BD00183106FFFF03E00008ACA60090F3
62735 +:104FC0003C0208008C42002027BDFFC8AFBF003460
62736 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D
62737 +:104FE000AFB40020AFB3001CAFB20018AFB10014D3
62738 +:104FF00010400050AFB000108F840010948600065F
62739 +:105000009483000A00C3282330B6FFFF12C0004A71
62740 +:105010008FBF003494890018948A000A012A402323
62741 +:105020003102FFFF02C2382B14E0000202C020212F
62742 +:10503000004020212C8C0005158000020080A0215A
62743 +:10504000241400040E0000B3028020218F8700107A
62744 +:1050500002809821AF80001494ED000A028088211C
62745 +:105060001280004E31B2FFFF3C1770003C1540002B
62746 +:105070003C1E60008F8F001C8DEE000001D71824AD
62747 +:10508000507500500220202102A3802B160000350D
62748 +:105090003C182000507800470220202124100001F5
62749 +:1050A0008F83001414600039029158230230F823D2
62750 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D
62751 +:1050C0008F8700103C110020AF510030000000001D
62752 +:1050D00094E6000A3C1E601237D5001002662821B3
62753 +:1050E000A4E5000A94E2000A94F2000A94F400187D
62754 +:1050F0003057FFFF1292003BAEB700908CED0014CA
62755 +:105100008CE400100013714001AE4021000E5FC31B
62756 +:10511000010E502B008B4821012A1821ACE8001405
62757 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE
62758 +:105130008F8400108FBF00348FBE00308FB7002CDB
62759 +:105140008FB600288FB500248FB400208FB3001CC9
62760 +:105150008FB200188FB100148FB0001003E0000868
62761 +:1051600027BD0038107E001B000000001477FFCC24
62762 +:10517000241000010E00159B000000008F83001416
62763 +:105180001060FFCB0230F823029158238F87001064
62764 +:10519000017020210A0001973093FFFF8F830014D4
62765 +:1051A0001460FFCB3C110020AF5100300A000163B6
62766 +:1051B000000000000E00077D024028210A00015770
62767 +:1051C000004080210E00033A024028210A000157C6
62768 +:1051D000004080210E001463022020210A000157A4
62769 +:1051E000004080210E0000CD000000000A0001797F
62770 +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3
62771 +:105200000E00003F000000003C028000345000709F
62772 +:105210000A0001BA8E0600008F4F000039EE00012F
62773 +:1052200031C20001104000248F8600A88E070000C4
62774 +:105230003C0C08008D8C003C3C0908008D2900388E
62775 +:1052400000E66823018D28210000502100AD302B9D
62776 +:10525000012A4021010620213C010800AC25003C28
62777 +:10526000AF8700A83C010800AC2400380E000106FE
62778 +:10527000000000003C0308008C6300701060FFE633
62779 +:10528000006020213C0508008CA500683C06080051
62780 +:105290008CC6006C0E00152A000000003C010800BE
62781 +:1052A000AC2000708F4F000039EE000131C20001C8
62782 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6
62783 +:1052C0003C0508008CA5003C3C0408008C84003898
62784 +:1052D000014B482300A938210082182100E9402B06
62785 +:1052E000006810213C010800AC27003C3C0108008C
62786 +:1052F000AC2200388F5F01002419FF0024180C0035
62787 +:1053000003F9202410980012AF840000AF4400205D
62788 +:10531000936D0000240C002031A600FF10CC001279
62789 +:10532000240E005010CE00043C194000AF59013843
62790 +:105330000A0001B3000000000E0011C800000000C8
62791 +:105340003C194000AF5901380A0001B300000000C9
62792 +:105350000E00011F000000003C194000AF59013849
62793 +:105360000A0001B3000000008F58010000802821CE
62794 +:10537000330F00FF01E020210E0002F1AF8F000487
62795 +:105380003C194000AF5901380A0001B30000000089
62796 +:1053900000A4102B2403000110400009000030215C
62797 +:1053A0000005284000A4102B04A0000300031840AF
62798 +:1053B0005440FFFC000528405060000A0004182BF0
62799 +:1053C0000085382B54E000040003184200C3302548
62800 +:1053D00000852023000318421460FFF900052842CD
62801 +:1053E0000004182B03E0000800C310218F4201B80D
62802 +:1053F0000440FFFE00000000AF4401803C031000A9
62803 +:1054000024040040AF450184A3440188A3460189D8
62804 +:10541000A747018A03E00008AF4301B83084FFFFCB
62805 +:105420000080382130A5FFFF000020210A00022A59
62806 +:10543000240600803087FFFF8CA40000240600387B
62807 +:105440000A00022A000028218F8300388F8600304E
62808 +:105450001066000B008040213C07080024E75A1822
62809 +:10546000000328C000A710218C4400002463000121
62810 +:10547000108800053063000F5466FFFA000328C04F
62811 +:1054800003E00008000010213C07080024E75A1C34
62812 +:1054900000A7302103E000088CC200003C0390000C
62813 +:1054A0003462000100822025AF4400208F45002097
62814 +:1054B00004A0FFFE0000000003E000080000000060
62815 +:1054C0003C038000346200010082202503E00008D4
62816 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3
62817 +:1054E000AFB00010AFBF00181220001300A0802141
62818 +:1054F0008CA2000024040002240601401040000F8A
62819 +:10550000004028210E000C5C00000000000010216B
62820 +:10551000AE000000022038218FBF00188FB10014A8
62821 +:105520008FB0001000402021000028210000302111
62822 +:105530000A00022A27BD00208CA200000220382188
62823 +:105540008FBF00188FB100148FB0001000402021D1
62824 +:1055500000002821000030210A00022A27BD002077
62825 +:1055600000A010213087FFFF8CA500048C440000B0
62826 +:105570000A00022A2406000627BDFFE0AFB0001093
62827 +:10558000AFBF0018AFB100149363003E00808021CC
62828 +:105590000080282130620040000020211040000FD0
62829 +:1055A0008E1100000E000851022020219367000098
62830 +:1055B0002404005030E500FF50A400128E0F0000BC
62831 +:1055C000022020218FBF00188FB100148FB000106F
62832 +:1055D000A762013C0A00091127BD00200E000287C6
62833 +:1055E000000000000E0008510220202193670000F7
62834 +:1055F0002404005030E500FF14A4FFF20220202113
62835 +:105600008E0F00003C1008008E1000503C0D000C66
62836 +:10561000240BFF8001F05021314E007F01DA602120
62837 +:10562000018D4021014B4824AF4900280220202150
62838 +:105630008FBF00188FB100148FB00010A50200D6E4
62839 +:1056400027BD00200A000911AF8800D027BDFFE068
62840 +:10565000AFBF0018AFB10014AFB0001093660001E7
62841 +:10566000008080210E00025630D1000493640005B2
62842 +:10567000001029C2A765000034830040A363000521
62843 +:105680000E00025F020020210E00091302002021FB
62844 +:1056900024020001AF62000C02002821A762001062
62845 +:1056A00024040002A762001224060140A76200142D
62846 +:1056B0000E000C5CA76200161620000F8FBF0018AA
62847 +:1056C000978C00343C0B08008D6B00782588FFFF19
62848 +:1056D0003109FFFF256A0001012A382B10E000067E
62849 +:1056E000A78800343C0F6006240E001635ED00102C
62850 +:1056F000ADAE00508FBF00188FB100148FB00010F6
62851 +:1057000003E0000827BD002027BDFFE0AFB1001473
62852 +:10571000AFBF0018AFB0001000A088211080000AB1
62853 +:105720003C03600024020080108200120000000090
62854 +:105730000000000D8FBF00188FB100148FB0001053
62855 +:1057400003E0000827BD00208C682BF80500FFFE51
62856 +:1057500000000000AC712BC08FBF00188FB1001487
62857 +:105760008FB000103C09100027BD002003E00008A6
62858 +:10577000AC692BF80E00025600A0202193650005AD
62859 +:10578000022020210E00025F30B000FF2403003E03
62860 +:105790001603FFE7000000008F4401780480FFFE3D
62861 +:1057A000240700073C061000AF51014002202021D1
62862 +:1057B000A34701448FBF00188FB100148FB00010B1
62863 +:1057C000AF4601780A0002C227BD002027BDFFE8CE
62864 +:1057D000AFBF0014AFB000108F50002000000000D9
62865 +:1057E0000E000913AF440020AF5000208FBF0014FB
62866 +:1057F0008FB0001003E0000827BD00183084FFFFC1
62867 +:10580000008038212406003500A020210A00022A49
62868 +:10581000000028213084FFFF008038212406003654
62869 +:1058200000A020210A00022A0000282127BDFFD065
62870 +:10583000AFB3001C3093FFFFAFB50024AFB2001828
62871 +:10584000AFBF0028AFB40020AFB10014AFB000105C
62872 +:1058500030B5FFFF12600027000090218F90001CE0
62873 +:105860008E0300003C0680002402004000033E023C
62874 +:1058700000032C0230E4007F006688241482001D9F
62875 +:1058800030A500FF8F8300282C68000A510000100B
62876 +:105890008F910014000358803C0C0800258C56940E
62877 +:1058A000016C50218D49000001200008000000001B
62878 +:1058B00002B210213045FFFF0E000236240400849E
62879 +:1058C000162000028F90001CAF8000288F910014DA
62880 +:1058D000260C002026430001018080213072FFFF4A
62881 +:1058E00016200004AF8C001C0253502B1540FFDC27
62882 +:1058F00000000000024010218FBF00288FB5002457
62883 +:105900008FB400208FB3001C8FB200188FB1001429
62884 +:105910008FB0001003E0000827BD0030240E0034D3
62885 +:1059200014AE00F9000000009203000E241F168040
62886 +:105930003C07000CA36300219202000D0347C8211D
62887 +:105940003C066000A3620020961100123C0A7FFF13
62888 +:10595000354CFFFFA771003C960B00102403000597
62889 +:105960003168FFFFAF6800848E05001CAF5F002820
62890 +:105970008F3800008CC4444803057826008F3021FE
62891 +:10598000AF66004C8F69004C24CE00013C057F00BF
62892 +:10599000AF6900508F740050AF740054AF66007050
62893 +:1059A000AF6E00588F6D005824140050AF6D005C2E
62894 +:1059B000A3600023AF6C0064A36300378E02001461
62895 +:1059C000AF6200488F710048AF7100248E0B001841
62896 +:1059D000AF6B006C9208000CA3680036937F003E0A
62897 +:1059E00037F90020A379003E8F78007403058024E6
62898 +:1059F000360F4000AF6F007493640000308900FFE1
62899 +:105A0000513402452404FF803C04080024845A9841
62900 +:105A10000E00028D000000003C1008008E105A9805
62901 +:105A20000E00025602002021240600042407000173
62902 +:105A3000A366007D020020210E00025FA36700051F
62903 +:105A40008F5F017807E0FFFE240B0002AF5001409A
62904 +:105A5000A34B01448F90001C3C081000AF48017814
62905 +:105A60000A000362AF8000282CAD003751A0FF98D8
62906 +:105A70008F9100140005A0803C180800271856BC20
62907 +:105A8000029878218DEE000001C00008000000009F
62908 +:105A90002418000614B80011000000003C0808009B
62909 +:105AA0008D085A9824040005AF4800208E1F001866
62910 +:105AB000AF7F00188F79004CAF79001C8F650050C4
62911 +:105AC000122000C0AF6500700A000362AF84002896
62912 +:105AD0002406000710A60083240300063C050800E6
62913 +:105AE00024A55A980E000264240400818F90001CA3
62914 +:105AF0000011102B0A000362AF8200282407000463
62915 +:105B000014A7FFF6240500503C1808008F185A9877
62916 +:105B1000AF5800208E0F0008AF6F00408E090008BC
62917 +:105B2000AF6900448E14000CAF7400488E0E001054
62918 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405
62919 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D
62920 +:105B5000AF64005893630000306B00FF116501D8FB
62921 +:105B6000000000008F7400488F6900400289702394
62922 +:105B700005C000042404008C1620FFDE240200036C
62923 +:105B8000240400823C05080024A55A980E000287D0
62924 +:105B9000000000008F90001C000010210A0003622A
62925 +:105BA000AF820028240F000514AFFFCC240520008D
62926 +:105BB0003C0708008CE75A98AF4700208E06000487
62927 +:105BC000AF66005C9208000824100008A36800215A
62928 +:105BD0008F9F001C93F90009A37900208F86001C79
62929 +:105BE00090D8000A330400FF10900011000000005C
62930 +:105BF0002885000914A0006924020002240A00205C
62931 +:105C0000108A000B34058000288D002115A00008A3
62932 +:105C100024054000240E0040108E00053C050001C4
62933 +:105C200024140080109400023C050002240540006A
62934 +:105C30008F7800743C19FF00031980240205782531
62935 +:105C4000AF6F007490C4000BA36400818F84001CAC
62936 +:105C50009489000C11200192000000009490000C27
62937 +:105C60002406FFBF24050004A770003C908F000E9F
62938 +:105C7000A36F003E8F84001C9089000FA369003F32
62939 +:105C80008F8B001C8D6E00108F54007401D468231C
62940 +:105C9000AF6D00608D6A0014AF6A0064956C0018E7
62941 +:105CA000A76C00689563001AA763006A8D62001CE8
62942 +:105CB000AF62006C9167000EA367003E9368003EE0
62943 +:105CC0000106F8241220014BA37F003E8F90001C98
62944 +:105CD0000A000362AF8500282407002214A7FF7F73
62945 +:105CE000240300073C0B08008D6B5A981220000C0F
62946 +:105CF000AF4B00200A000362AF830028240C00335E
62947 +:105D000010AC0014240A00283C05080024A55A9869
62948 +:105D10000E00023C240400810A0003EB8F90001C5B
62949 +:105D20003C04080024845A980E00028D00000000F4
62950 +:105D30009363000024110050306200FF10510135C0
62951 +:105D4000000000008F90001C000018210A00036270
62952 +:105D5000AF8300283C0D08008DAD5A9824040081C3
62953 +:105D6000AF4D00203C05080024A55A980E00023CC7
62954 +:105D7000A36A00348F90001C240200090A00036209
62955 +:105D8000AF82002802B288213225FFFF0E000236C2
62956 +:105D9000240400840A0003628F90001C1082FFA478
62957 +:105DA00024050400288B000311600170240C0004FA
62958 +:105DB000240300015483FF9E240540000A00043B95
62959 +:105DC000240501003C04080024845A988F62004C8A
62960 +:105DD0000E00028D8F6300508F90001C0000202168
62961 +:105DE0000A000362AF8400288E1000042404008A95
62962 +:105DF000AF50002093790005333800021700015F8F
62963 +:105E0000020028219368002302002821311F00206E
62964 +:105E100017E0015A2404008D9367003F2406001206
62965 +:105E200030E200FF10460155240400810E000256A6
62966 +:105E30000200202193630023240500040200202196
62967 +:105E4000346B0042A36B00230E00025FA365007D4C
62968 +:105E50008F4401780480FFFE240A0002AF50014005
62969 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9
62970 +:105E70000A0003EC0011102B8E1000042404008A89
62971 +:105E8000AF500020936E000531CD000215A0001622
62972 +:105E900002002821936F003F2414000402002821EF
62973 +:105EA00031E900FF11340010240400810E00025675
62974 +:105EB000020020219362002324080012241FFFFE09
62975 +:105EC00034460020A3660023A368003F93790005B1
62976 +:105ED00002002021033FC0240E00025FA3780005CA
62977 +:105EE00002002821000020210E00033400000000E1
62978 +:105EF0000A0003EB8F90001C8E1000043C03000886
62979 +:105F00000343A021AF500020928B000024050050D5
62980 +:105F1000316400FF10850161240700880200202100
62981 +:105F2000000028210E00022A2406000E928D000097
62982 +:105F3000240EFF800200282101AE8025A2900000DF
62983 +:105F4000240400040E000C5C240600300A0003EB5D
62984 +:105F50008F90001C8E0800043C14080026945A9868
62985 +:105F60003C010800AC285A98AF480020921F00035B
62986 +:105F700033F9000413200002240200122402000658
62987 +:105F8000A362003F920B001B2404FFC03165003F59
62988 +:105F900000A43825A367003E9206000330C200012A
62989 +:105FA00014400132000000008E020008AE8200089A
62990 +:105FB0003C0208008C425AA010400131000249C244
62991 +:105FC000A76900088E14000C240C0001240300149F
62992 +:105FD000AF74002C8E0E0010AF6E0030960D0016C0
62993 +:105FE000A76D0038960A0014A76A003AAF6C000C3F
62994 +:105FF000A76C0010A76C0012A76C0014A76C001609
62995 +:1060000012200136A3630034920F000331F0000226
62996 +:106010002E1100018F90001C262200080A00036246
62997 +:10602000AF8200288E0400043C0E0008034E30218D
62998 +:10603000AF4400208E05000890CD0000240C0050D5
62999 +:1060400031AA00FF114C00862407008824060009AD
63000 +:106050000E00022A000000000A0003EB8F90001CD3
63001 +:106060008E04001C0E00024100000000104000F4ED
63002 +:10607000004050218F89001C240700890140202105
63003 +:106080008D25001C240600010E00022A00000000DD
63004 +:106090000A0003EB8F90001C960D00023C140800D0
63005 +:1060A00026945A9831AA0004514000B83C10600070
63006 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA
63007 +:1060C000920700102408001430E200FF144800D6A4
63008 +:1060D00000000000960B00023163000114600165AE
63009 +:1060E000000000008E020004AE8200083C1408008C
63010 +:1060F0008E945AA01280015B000000008F7400741F
63011 +:106100003C0380002404000102835825AF6B007417
63012 +:10611000A3600005AF64000C3C0708008CE75AA0A0
63013 +:106120008F86001CA7640010000711C2A76400122C
63014 +:10613000A7640014A7640016A76200088CC80008B2
63015 +:1061400024040002AF68002C8CC5000CAF65003041
63016 +:1061500090DF0010A37F00348F99001C9330001152
63017 +:10616000A37000358F98001C930F0012A36F0036A8
63018 +:106170008F89001C912E0013A36E00378F90001C96
63019 +:10618000960D0014A76D0038960A0016A76A003A0B
63020 +:106190008E0C0018AF6C00245620FDCCAF84002874
63021 +:1061A0003C05080024A55A980E0002640000202136
63022 +:1061B0008F90001C0A0004A7000020218E1000040C
63023 +:1061C00024070081AF500020936900233134001070
63024 +:1061D000128000170000000002002021000028218A
63025 +:1061E0002406001F0E00022A000000000A0003EB34
63026 +:1061F0008F90001C3C05080024A55A980E000287C9
63027 +:10620000240400828F90001C000028210A000362F1
63028 +:10621000AF8500283C0408008C845A980E0014E8CE
63029 +:10622000000000008F90001C0A000482000018216A
63030 +:106230000E00025602002021937800230200202144
63031 +:10624000370F00100E00025FA36F002300003821FB
63032 +:1062500002002021000028210A0005A82406001FB2
63033 +:10626000920F000C31E90001112000030000000032
63034 +:106270009618000EA4D8002C921F000C33F90002CF
63035 +:1062800013200005000038218E0200149608001229
63036 +:10629000ACC2001CA4C8001A0A0005432406000969
63037 +:1062A0003C05080024A55A980E0002872404008BA0
63038 +:1062B0008F90001C0011282B0A000362AF85002874
63039 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3
63040 +:1062D0008DAD0050240CFF803C02000C014D1821B4
63041 +:1062E000006C2024AF4400288E070014306B007F20
63042 +:1062F000017A282100A2C821AF2700D88E060014F9
63043 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD
63044 +:106310000A000408AF3F01083C0508008CA55A9804
63045 +:106320003C1908008F39005024CCFFFE00B9C02171
63046 +:1063300003047824AF4F00283C1408008E945A9828
63047 +:106340003C0908008D2900500289702131CD007F61
63048 +:1063500001BA502101478021AE0600D8AF9000D08D
63049 +:10636000AE0000DC0A0003B1AE0C0108548CFE3014
63050 +:10637000240540000A00043B240510000E00032EF3
63051 +:10638000000000000A0003EB8F90001C8E0F442CCD
63052 +:106390003C186C62370979703C010800AC205A98AF
63053 +:1063A00015E9000824050140979F00349786002CCA
63054 +:1063B0000280282103E6C82B132000112404009238
63055 +:1063C000240501400E000C7A240400023C01080060
63056 +:1063D000AC225A98AF4200203C0508008CA55A9880
63057 +:1063E00010A00005240400830E00084500000000F2
63058 +:1063F00010400009240400833C05080024A55A9895
63059 +:106400000E000264000000008F90001C0011202B81
63060 +:106410000A000362AF8400280E0008490000000053
63061 +:106420000A00055F8F90001C0E00084D0000000060
63062 +:106430003C05080024A55A980A00062F2404008B66
63063 +:10644000240400040E000C7A240500301440002AB5
63064 +:10645000004050218F89001C240700830140202127
63065 +:106460008D25001C0A000551240600018E04000839
63066 +:106470000E000241000000000A00051BAE82000869
63067 +:106480003C05080024A55A980E00023C240400870D
63068 +:106490008F90001C0A0005360011102B8F830038E6
63069 +:1064A0008F8600301066FE9D000038213C070800F2
63070 +:1064B00024E75A1C000320C0008728218CAC000070
63071 +:1064C00011900061246A00013143000F5466FFFA05
63072 +:1064D000000320C00A0004F6000038213C05080033
63073 +:1064E00024A55A980E000287240400828F90001C75
63074 +:1064F0000A000536000010213C0B0008034B202148
63075 +:106500002403005024070001AF420020A0830000B4
63076 +:10651000A08700018F82001C90480004A08800180A
63077 +:106520008F85001C90A60005A08600198F9F001C77
63078 +:1065300093F90006A099001A8F90001C921800078A
63079 +:10654000A098001B8F94001C928F0008A08F001C45
63080 +:106550008F89001C912E0009A08E001D8F8D001CBC
63081 +:1065600091AC000AA08C001E8F8B001C3C0C080014
63082 +:10657000258C5A1C9163000B3C0B0800256B5A18A4
63083 +:10658000A083001F8F87001C90E8000CA0880020CB
63084 +:106590008F82001C9045000D24024646A0850021F4
63085 +:1065A0008F86001C90DF000EA09F00228F99001C98
63086 +:1065B0009330000FA09000238F98001C93140010BC
63087 +:1065C000A09400248F8F001C91E90011A089002560
63088 +:1065D0008F89001C8F8E00308F900038952D00140D
63089 +:1065E000000E18C025C80001A48D002895270016AC
63090 +:1065F000006C3021006BC821A487002A9525001863
63091 +:106600003108000FA485002CA482002E8D3F001CB1
63092 +:10661000ACCA0000AF88003011100006AF3F000088
63093 +:10662000000038218D25001C014020210A00055161
63094 +:1066300024060001250C00013184000F00003821E0
63095 +:106640000A0006B8AF8400383C07080024E75A184F
63096 +:106650000087302100003821ACA000000A0004F6B9
63097 +:10666000ACC000003C05080024A55A980A00062F7B
63098 +:10667000240400878E0400040E0002410000000084
63099 +:106680000A00056AAE8200083084FFFF30C600FFB2
63100 +:106690008F4201B80440FFFE00064400010430258B
63101 +:1066A0003C07200000C720253C031000AF400180BC
63102 +:1066B000AF450184AF44018803E00008AF4301B84F
63103 +:1066C00027BDFFE8AFB00010AFBF00143C0760006B
63104 +:1066D000240600021080000600A080210010102B6C
63105 +:1066E0008FBF00148FB0001003E0000827BD001812
63106 +:1066F0003C09600EAD2000348CE5201C8F82001C0C
63107 +:106700002408FFFC00A81824ACE3201C0E0006D1CE
63108 +:106710008C45000C0010102B8FBF00148FB00010A0
63109 +:1067200003E0000827BD00183C02600E344701005A
63110 +:1067300024090018274A040000000000000000009F
63111 +:10674000000000003C06005034C30200AF44003893
63112 +:10675000AF45003CAF430030014018218F4B000093
63113 +:10676000316800201100FFFD2406007F2408FFFF90
63114 +:106770008C6C000024C6FFFF24630004ACEC000016
63115 +:1067800014C8FFFB24E70004000000000000000024
63116 +:10679000000000003C0F0020AF4F00300000000060
63117 +:1067A00024AD020001A5702B2529FFFF008E2021BA
63118 +:1067B0001520FFE101A0282103E0000800000000EF
63119 +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D
63120 +:1067D0003C05600E8CA20034008088211440000625
63121 +:1067E0003C0460008C87201C2408FFFC00E8302457
63122 +:1067F00034C30001AC83201C8F8B001C24090001D2
63123 +:10680000ACA90034956900028D6500148D70000CF0
63124 +:106810002D2400818D6700048D660008108000071C
63125 +:106820008D6A00102D2C00041580000E30CE00075C
63126 +:10683000312D000311A0000B000000002404008B88
63127 +:10684000020028210E0006D1240600030011102B9F
63128 +:106850008FBF00188FB100148FB0001003E0000844
63129 +:1068600027BD002015C0FFF62404008B3C03002048
63130 +:10687000AF4300300000000024020001AF8200148A
63131 +:106880000000000000000000000000003C1F01505C
63132 +:10689000013FC825253800033C0F600EAF47003884
63133 +:1068A00000181882AF46003C35E8003CAF59003074
63134 +:1068B000274704008F4400003086002010C0FFFDF1
63135 +:1068C00000000000106000082466FFFF2403FFFFA3
63136 +:1068D0008CEB000024C6FFFF24E70004AD0B000092
63137 +:1068E00014C3FFFB250800043C08600EAD09003806
63138 +:1068F0000000000000000000000000003C07002035
63139 +:10690000AF470030000000000E0006F901402021D2
63140 +:1069100002002821000020210E0006D124060003D9
63141 +:106920000011102B8FBF00188FB100148FB0001012
63142 +:1069300003E0000827BD002027BDFFE0AFB200182C
63143 +:106940003092FFFFAFB10014AFBF001CAFB000101A
63144 +:106950001640000D000088210A0007AA022010211D
63145 +:1069600024050001508500278CE5000C0000000D77
63146 +:10697000262300013071FFFF24E200200232382B71
63147 +:1069800010E00019AF82001C8F8200141440001622
63148 +:106990008F87001C3C0670003C0320008CE5000043
63149 +:1069A00000A62024148300108F84003C00054402BC
63150 +:1069B0003C09800000A980241480FFE9310600FF13
63151 +:1069C0002CCA00095140FFEB262300010006688015
63152 +:1069D0003C0E080025CE579801AE60218D8B00003B
63153 +:1069E0000160000800000000022010218FBF001C81
63154 +:1069F0008FB200188FB100148FB0001003E00008B0
63155 +:106A000027BD00200E0006D1240400841600FFD804
63156 +:106A10008F87001C0A00078BAF80003C90EF0002BC
63157 +:106A200000002021240600090E0006D1000F2E00D0
63158 +:106A30008F87001C0010102B0A00078BAF82003CD0
63159 +:106A4000020028210E0006DF240400018F87001CAD
63160 +:106A50000A00078BAF82003C020028210E0006DFEF
63161 +:106A6000000020210A0007C38F87001C0E00071FAB
63162 +:106A7000020020210A0007C38F87001C30B0FFFFEF
63163 +:106A8000001019C08F5801B80700FFFE3C1F2004FA
63164 +:106A90003C191000AF430180AF400184AF5F018813
63165 +:106AA000AF5901B80A00078C262300013082FFFF8E
63166 +:106AB00014400003000018210004240224030010E5
63167 +:106AC000308500FF14A000053087000F2466000801
63168 +:106AD0000004220230C300FF3087000F14E00005DD
63169 +:106AE000308900032468000400042102310300FF00
63170 +:106AF0003089000315200005388B0001246A00024C
63171 +:106B000000042082314300FF388B00013164000112
63172 +:106B100010800002246C0001318300FF03E00008B4
63173 +:106B200000601021308BFFFF000B394230E600FF80
63174 +:106B30003C09080025295998000640800109602178
63175 +:106B40008D8700003164001F240A0001008A1804A8
63176 +:106B500030A500FF00E3202514A000020003102749
63177 +:106B600000E22024240F000100CF700401096821F5
63178 +:106B7000000E282714800005ADA400008F86000CAD
63179 +:106B800000A6102403E00008AF82000C8F88000CE0
63180 +:106B900001C8102503E00008AF82000C3C06001F6E
63181 +:106BA0003C0360003084FFFF34C5FF8024020020D6
63182 +:106BB000AC602008AC60200CAC602010AC652014E8
63183 +:106BC000AC642018AC62200000000000000000004F
63184 +:106BD00003E000080000000027BDFFE82402FFFFDB
63185 +:106BE000AFBF0010AF82000C000020213C0608005F
63186 +:106BF00024C659982405FFFF248900010004408021
63187 +:106C00003124FFFF010618212C87002014E0FFFA31
63188 +:106C1000AC6500000E0008160000202124020001CF
63189 +:106C20003C04600024050020AC822018AC852000C4
63190 +:106C3000000000000000000000000000244A0001E5
63191 +:106C40003142FFFF2C46040014C0FFF78FBF001035
63192 +:106C500003E0000827BD00188F8300082C620400A1
63193 +:106C600003E00008384200018F830008246200011D
63194 +:106C700003E00008AF8200088F8300082462FFFF52
63195 +:106C800003E00008AF82000827BDFFE0AFB10014A9
63196 +:106C9000AFBF0018AFB000108F6B00303C06600033
63197 +:106CA00000808821ACCB20088F6A002C3C02800039
63198 +:106CB00024030008ACCA200C9769003A9768003892
63199 +:106CC00000092C003107FFFF00A72025ACC42010CD
63200 +:106CD000ACC22014ACC32000000000000000000083
63201 +:106CE000000000003C0360008C6D200031AC000807
63202 +:106CF0001580FFF9000000008C6E201405C00020F4
63203 +:106D0000000000000E0007DA8F84000C00024080B3
63204 +:106D10003C09080025295998010938218CE4000014
63205 +:106D20000E0007DA00028140020220213090FFFFAE
63206 +:106D3000020020210E0007F8000028213C0C8000F2
63207 +:106D4000022C58253210FFFF3C116000240A00205D
63208 +:106D5000AE2B2014AE302018AE2A20000000000018
63209 +:106D60000000000000000000020010218FBF00188A
63210 +:106D70008FB100148FB0001003E0000827BD002081
63211 +:106D80008C6620143C02001F3443FF803C1FFFE848
63212 +:106D900000C3C02437F9080003198021001079C20C
63213 +:106DA0003C0C8000022C582531F0FFFF3C116000A4
63214 +:106DB000240A0020AE2B2014AE302018AE2A20006A
63215 +:106DC0000000000000000000000000000200102190
63216 +:106DD0008FBF00188FB100148FB0001003E00008BF
63217 +:106DE00027BD002027BDFFE8AFB000103402FFFF31
63218 +:106DF0003090FFFFAFBF00141202000602002021F6
63219 +:106E00000E00081600000000020020210E0007F806
63220 +:106E1000240500018F8400088FBF00148FB000107C
63221 +:106E20002483FFFF27BD001803E00008AF8300089C
63222 +:106E3000000439C230E6003F00043B42000718401E
63223 +:106E4000240210002CC4002024C8FFE0AF42002C14
63224 +:106E5000246300011480000330A900FF00071840DC
63225 +:106E6000310600FF0003608024080001019A5821C8
63226 +:106E70003C0A000E00C82804016A382111200005D0
63227 +:106E8000000530278CE900000125302503E00008CB
63228 +:106E9000ACE600008CEE000001C6682403E00008A8
63229 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D
63230 +:106EB0003C0460008C8508083403F00030A2F00028
63231 +:106EC00050430006240200018C8708083404E000C7
63232 +:106ED00030E6F00010C4001E24020002AF82004021
63233 +:106EE0003C1060003C0A0200AE0A0814240910009D
63234 +:106EF0003C08000E8E03440003482021AF49002CBB
63235 +:106F0000240501200E000CC0000030218F830040BA
63236 +:106F1000106000043C021691240B0001106B000E5F
63237 +:106F20003C023D2C344F0090AE0F44088FBF00143C
63238 +:106F30008FB000103C0C6000240E10003C0D0200CD
63239 +:106F400027BD0018AD8E442003E00008AD8D081069
63240 +:106F50000A0008E7AF8000403C0218DA344F009086
63241 +:106F6000AE0F44088FBF00148FB000103C0C6000BF
63242 +:106F7000240E10003C0D020027BD0018AD8E4420E9
63243 +:106F800003E00008AD8D08100A0008BB24050001CD
63244 +:106F90000A0008BB000028213C08080025085DA461
63245 +:106FA0002404FFFF010018212402001E2442FFFFD9
63246 +:106FB000AC6400000441FFFD246300043C070800AA
63247 +:106FC00024E75E208CE5FFFC2404001C240600015D
63248 +:106FD000308A001F0146480424840001000910275C
63249 +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB
63250 +:106FF0003C05666634A4616E3C06080024C65EE06B
63251 +:10700000AF840058AF88009C2404FFFF00C0182103
63252 +:107010002402001F2442FFFFAC6400000441FFFD76
63253 +:10702000246300043C0766663C05080024A55EA0B6
63254 +:10703000AF86004834E6616EAF8600982404FFFFF7
63255 +:1070400000A018212402000F2442FFFFAC640000BE
63256 +:107050000441FFFD246300043C0B66663C06080007
63257 +:1070600024C65E203568616EAF8500A4AF880070CD
63258 +:107070002404FFFF00C018212402001F2442FFFF48
63259 +:10708000AC6400000441FFFD246300043C0D66660F
63260 +:107090003C0A0800254A5F6035AC616EAF860090FF
63261 +:1070A000AF8C005C2404FFFF014018212402000380
63262 +:1070B0002442FFFFAC6400000441FFFD2463000490
63263 +:1070C0003C09080025295F708D27FFFC2404000679
63264 +:1070D000240500013099001F0325C0042484000109
63265 +:1070E000001878272C8E002015C0FFFA00EF3824F6
63266 +:1070F000AD27FFFC3C09666624030400240403DC7E
63267 +:1071000024050200240600663522616E3C08080052
63268 +:1071100025085AA4AF820074AF830044AF83006C8B
63269 +:10712000AF830050AF830084AF8A008CAF840064CB
63270 +:10713000AF85004CAF860054AF840078AF85006007
63271 +:10714000AF86008001001821240200022442FFFFC4
63272 +:10715000AC6000000441FFFD24630004240400032C
63273 +:107160002403000C3C0A0800254A5AB0AF8A006884
63274 +:107170000A00098E2405FFFF000418802484000102
63275 +:10718000006858212C8700C014E0FFFBAD650000AB
63276 +:107190003C0E666635CD616E240C17A024081800DD
63277 +:1071A000AF8D0088AF8C009403E00008AF88007CAE
63278 +:1071B0002484007F000421C200004021000030210F
63279 +:1071C00000003821000028210A0009A5AF8400A092
63280 +:1071D0001060000624E7000100C4302124A500014E
63281 +:1071E0002CC20BF51440FFFA2CA300663C090800E2
63282 +:1071F00025295F6001201821240200032442FFFF9B
63283 +:10720000AC6000000441FFFD2463000410E0001A9C
63284 +:1072100024E3FFFF0003294210A0000A0000202100
63285 +:107220002406FFFF3C03080024635F602484000100
63286 +:107230000085502BAC660000250800011540FFFBBF
63287 +:107240002463000430E2001F10400008000868803A
63288 +:10725000240C0001004C38040008588001692821E2
63289 +:1072600024E6FFFF03E00008ACA6000001A94021CE
63290 +:107270002409FFFFAD09000003E000080000000042
63291 +:10728000AF4400283C04000C034420210005288260
63292 +:107290000A000CC000003021000421803C03600083
63293 +:1072A000AC6410080000000000052980AC65100CDB
63294 +:1072B0000000000003E000088C62100C27BDFFE80E
63295 +:1072C0000080282124040038AFBF00140E0009D527
63296 +:1072D000AFB0001024040E00AF4400283C10000C96
63297 +:1072E00003502021240500100E000CC000003021A6
63298 +:1072F00003501021AC400000AC40000424040038CE
63299 +:107300008FBF00148FB0001024053FFF27BD001869
63300 +:107310000A0009D58C430000000421803C03600072
63301 +:10732000AC641008000000008C62100C03E0000840
63302 +:107330000002118227BDFFC8AFB400208F940068FF
63303 +:10734000AFBE0030AFB7002CAFB600280000B821A8
63304 +:107350000080B021241E00C0AFBF0034AFB50024B0
63305 +:10736000AFB3001CAFB20018AFB10014AFB0001043
63306 +:107370000A000A12AFA5003C504000018F9400683B
63307 +:1073800027DEFFFF13C00028269400048E92000021
63308 +:107390003C03080024635DA01240FFF70283102B1A
63309 +:1073A0003C04080024845AA4028410230002A8C0CC
63310 +:1073B000000098210A000A212411000100118840D0
63311 +:1073C000122000260000000002B380210251282470
63312 +:1073D0000200202110A0FFF9267300010E0009DE33
63313 +:1073E000000000000016684032EC000101AC2021D2
63314 +:1073F0000E0009D5020028218F89009426F700018C
63315 +:107400008FA6003C3AEB0001316A00012528FFFFFE
63316 +:107410000011382702CAB021AF88009416E6FFE7B2
63317 +:1074200002479024AE92000002E010218FBF00348A
63318 +:107430008FBE00308FB7002C8FB600288FB5002488
63319 +:107440008FB400208FB3001C8FB200188FB10014CE
63320 +:107450008FB0001003E0000827BD00383C0E080084
63321 +:1074600025CE5DA0028E102B0A000A0DAE92000000
63322 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0
63323 +:10748000AFB3001CAFB2001800A0882110A0001FED
63324 +:10749000000480403C13080026735AA40A000A5ACC
63325 +:1074A0002412000112200019261000010E0009F517
63326 +:1074B00002002021000231422444FFA0000618806F
63327 +:1074C0003045001F2C8217A1007318212631FFFFC1
63328 +:1074D0001040FFF400B230048C690000020020214B
63329 +:1074E00024053FFF012640241500FFEE0126382524
63330 +:1074F0000E0009D5AC6700008F8A009426100001A9
63331 +:10750000254700011620FFE9AF8700948FBF0020B8
63332 +:107510008FB3001C8FB200188FB100148FB0001011
63333 +:1075200003E0000827BD00288F85009C00805821BB
63334 +:107530000000402100004821240A001F3C0C0800E4
63335 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA
63336 +:1075500050C000140000402100AD1023000238C0CC
63337 +:10756000240300010A000A930000202115000003F3
63338 +:1075700000E410212448202400004821252900018E
63339 +:10758000512B00132506DFDC106000062484000167
63340 +:1075900000C3702415C0FFF5000318400A000A91CB
63341 +:1075A0000000402110AC002624A300040060282124
63342 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5
63343 +:1075C0002506DFDC0000402103E000080100102157
63344 +:1075D0000006614230C5001F000C50803C070800C7
63345 +:1075E00024E75DA424040001014730211120000F8D
63346 +:1075F00000A420043C05080024A55E20148000059A
63347 +:107600002529FFFF24C6000410C50011000000005A
63348 +:10761000240400018CCF00000004C0270004204097
63349 +:1076200001F868241520FFF5ACCD00008F99007893
63350 +:1076300001001021032B482303E00008AF890078E4
63351 +:107640003C05080024A55DA40A000A9B0000402117
63352 +:107650003C06080024C65DA40A000AB42404000104
63353 +:10766000308800FF240200021102000A24030003F4
63354 +:107670001103005C8F8900A4240400041104005F3E
63355 +:1076800024050005110500670000182103E000082B
63356 +:10769000006010218F8900483C0C0800258C5EE0BA
63357 +:1076A0003C04080024845F60240300201060000F65
63358 +:1076B00000005821240D0002240E00033C0F080096
63359 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E
63360 +:1076D000252900040124C02B53000001018048210A
63361 +:1076E0002463FFFF5460FFF88D270000016018211C
63362 +:1076F00003E0000800601021132000323C0500FF69
63363 +:1077000030E200FF004030211040004200005021D4
63364 +:1077100024050001000020210005C84000A6C02467
63365 +:1077200017000003332500FF14A0FFFB2484000191
63366 +:10773000012CC023001828C000AA6021008C502111
63367 +:107740003144001F240C0001008C18040003102792
63368 +:1077500000E23024110D0041AD260000110E004C56
63369 +:10776000000A1840110D00368F87006C510E00562C
63370 +:107770008F8C0060240D0004110D005A8F8E008440
63371 +:10778000240E0005150EFFDA01601821240B1430B9
63372 +:1077900011400006000018218F8400A0246300011E
63373 +:1077A000006A402B1500FFFD016458218F8A00807C
63374 +:1077B000AF89008C016018212549FFFF0A000AEB00
63375 +:1077C000AF89008000E52024000736021080FFD03A
63376 +:1077D000240A001800075402314600FF0A000AF389
63377 +:1077E000240A00103C0C0800258C5EA03C04080014
63378 +:1077F00024845EE00A000ADA240300103C0C08002E
63379 +:10780000258C5E203C04080024845EA00A000AD96E
63380 +:107810008F89009000071A02306600FF0A000AF301
63381 +:10782000240A00088F89008C3C0C0800258C5F60BE
63382 +:107830003C04080024845F700A000ADA2403000470
63383 +:10784000000A4080250B003024E6FFFF016018216C
63384 +:10785000AF8900480A000AEBAF86006C000AC982B3
63385 +:10786000001978803C07080024E75EA001E720218A
63386 +:10787000000A18428C8F00003079001F032C380456
63387 +:107880000007C02701F860240A000B08AC8C000038
63388 +:10789000000331420006288000AF28213062001F1B
63389 +:1078A0008CB8000024630001004CC804000321428E
63390 +:1078B000001938270004108003073024004F2021CE
63391 +:1078C0000A000B4CACA60000000A68C025AB0032D1
63392 +:1078D000258AFFFF01601821AF8900A40A000AEB86
63393 +:1078E000AF8A0060254B1030AF89009001601821ED
63394 +:1078F00025C9FFFF0A000AEBAF8900843086000724
63395 +:107900002CC2000610400014000000000006408059
63396 +:107910003C030800246357BC010338218CE40000B9
63397 +:1079200000800008000000002409000310A9000ED8
63398 +:1079300000000000240A000510AA000B000000004F
63399 +:10794000240B000110AB0008000000008F8C00A089
63400 +:1079500010AC00050000000003E00008000010214A
63401 +:107960000A000A7900A020210A000AC700C02021CD
63402 +:1079700027BDFFE8308400FF240300021083000BC2
63403 +:10798000AFBF0010240600031086003A240800044C
63404 +:1079900010880068240E0005108E007F2CAF143074
63405 +:1079A0008FBF001003E0000827BD00182CA2003094
63406 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A
63407 +:1079C000000668803C07080024E75EE001A730213C
63408 +:1079D0008CC900000005288230AC001F240B000178
63409 +:1079E000018B50048F840048012A4025ACC8000058
63410 +:1079F0008C83000050600001AF8600488F98006CB7
63411 +:107A000030AE000124A6FFFF270F000115C00002C1
63412 +:107A1000AF8F006C24A600010006414200082080C0
63413 +:107A2000008718218C79000030C2001F2406000155
63414 +:107A30000046F804033F382410E0FFDA8FBF00103F
63415 +:107A40000005C182001870803C0F080025EF5EA081
63416 +:107A500001CF48218D2B00000005684231A5001F91
63417 +:107A600000A66004016C502527BD001803E0000843
63418 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011
63419 +:107A800030B900071723FFC724A8FFCE00086A02F9
63420 +:107A9000000D60803C0B0800256B5EA0018B30213F
63421 +:107AA0008CC40000000828C230AA001F240800016E
63422 +:107AB000014848048F8200A400891825ACC3000047
63423 +:107AC0008C5F000053E00001AF8600A40005704009
63424 +:107AD000000E7942000F28803C04080024845EE0F8
63425 +:107AE00000A418218C6B000025DF000131CD001FA0
63426 +:107AF000001F514201A86004016C4825000A108053
63427 +:107B0000AC690000004428218CA600008F9800601A
63428 +:107B100033F9001F8FBF00100328380400C77825F1
63429 +:107B2000270E000127BD0018ACAF000003E00008DD
63430 +:107B3000AF8E006024A5EFD02CB804001300FF998D
63431 +:107B40008FBF001000053142000658803C0A080033
63432 +:107B5000254A5E20016A30218CC4000030A3001F3A
63433 +:107B600024090001006910048F9900900082F82513
63434 +:107B7000ACDF00008F27000050E00001AF860090CE
63435 +:107B80008F8D00848FBF001027BD001825AC000129
63436 +:107B900003E00008AF8C008415E0FF828FBF001067
63437 +:107BA0008F8600A0000610400046F821001F21002B
63438 +:107BB00003E4C8210019384024F8143000B8402BE1
63439 +:107BC0001100FF788FBF001024A4EBD00E00021329
63440 +:107BD00000C0282100027942000F70803C0D08008F
63441 +:107BE00025AD5F6001CD20218C8B0000304C001F43
63442 +:107BF00024060001018618048F89008C016350253A
63443 +:107C0000AC8A00008D25000050A00001AF84008CDC
63444 +:107C10008F9800808FBF001027BD00182708000133
63445 +:107C200003E00008AF88008030A5000724030003AC
63446 +:107C300010A3001028A2000414400008240700022A
63447 +:107C40002403000410A300152408000510A8000F49
63448 +:107C50008F8500A003E000080000000014A7FFFDCE
63449 +:107C60000080282114C3FFFB240400020A000B8BB0
63450 +:107C700000000000240900050080282110C9FFFB36
63451 +:107C80002404000303E000080000000014C5FFF115
63452 +:107C9000008028210A000B8B24040005240A00011F
63453 +:107CA0000080282110CAFFF12404000403E000082A
63454 +:107CB0000000000027BDFFE0AFB00010000581C24A
63455 +:107CC0002603FFD024C5003F2C6223D024C6007FAA
63456 +:107CD000AFB20018AFB10014AFBF001C309100FF6D
63457 +:107CE000000691C2000529820200202110400008F0
63458 +:107CF0002403FFFF0E000A4B0000000002002021B9
63459 +:107D0000022028210E000C390240302100001821E9
63460 +:107D10008FBF001C8FB200188FB100148FB00010FD
63461 +:107D20000060102103E0000827BD002027BDFFD818
63462 +:107D300024A2007FAFB3001CAFB20018000299C2AA
63463 +:107D4000309200FF24A3003F02402021026028213E
63464 +:107D5000AFB10014AFB00010AFBF00200E000B6E2B
63465 +:107D60000003898200408021004020210220282138
63466 +:107D700014400009000018218FBF00208FB3001CA1
63467 +:107D80008FB200188FB100148FB000100060102166
63468 +:107D900003E0000827BD00280E0009FC00000000D9
63469 +:107DA00000402821020020211051FFF3001019C0CB
63470 +:107DB0000E000A4B00000000020020210240282192
63471 +:107DC0000E000C39026030218FBF00208FB3001CE1
63472 +:107DD0008FB200188FB100148FB00010000018216E
63473 +:107DE0000060102103E0000827BD00283084FFFF59
63474 +:107DF00030A5FFFF1080000700001821308200012D
63475 +:107E00001040000200042042006518211480FFFB8E
63476 +:107E10000005284003E000080060102110C00007A2
63477 +:107E2000000000008CA2000024C6FFFF24A500046F
63478 +:107E3000AC82000014C0FFFB2484000403E00008AF
63479 +:107E40000000000010A0000824A3FFFFAC86000083
63480 +:107E500000000000000000002402FFFF2463FFFF79
63481 +:107E60001462FFFA2484000403E00008000000000C
63482 +:107E700030A5FFFF8F4201B80440FFFE3C076015AC
63483 +:107E800000A730253C031000AF440180AF400184BF
63484 +:107E9000AF46018803E00008AF4301B88F8500D0EA
63485 +:107EA0002C864000008018218CA700840087102BAE
63486 +:107EB00014400010000000008CA800842D06400033
63487 +:107EC00050C0000F240340008CAA0084008A482B75
63488 +:107ED000512000018CA3008400035A42000B208033
63489 +:107EE0003C05080024A558200085182103E000085F
63490 +:107EF0008C62000014C0FFF4000000002403400066
63491 +:107F000000035A42000B20803C05080024A558209D
63492 +:107F10000085182103E000088C6200008F8300D0E8
63493 +:107F2000906600D024C50001A06500D08F8500D0E8
63494 +:107F3000906400D090A200D210440017000000000E
63495 +:107F4000936C00788F8B00BC318A00FFA16A000C13
63496 +:107F500025490001938700C4312200FF3048007F8B
63497 +:107F60001107000B00026827A36200788F4E01788A
63498 +:107F700005C0FFFE8F9900B0241800023C0F1000CE
63499 +:107F8000AF590140A358014403E00008AF4F017806
63500 +:107F90000A000D0931A20080A0A000D00A000CFF49
63501 +:107FA000000000008F8700D027BDFFC8AFBF0030A2
63502 +:107FB000AFB7002CAFB60028AFB50024AFB4002097
63503 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7
63504 +:107FD00094E300E094E200E2104300D72405FFFFA1
63505 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B
63506 +:107FF0003C16000E108A00D18FBF00308F9100B068
63507 +:108000003C1808008F18005C001230C0001291402C
63508 +:108010000311702101D57824AF4F002C94EC00E2BD
63509 +:1080200031CD007F01BA5821318A7FFF0176482186
63510 +:10803000000A804002091021945300003C08080007
63511 +:108040008D0800580246C02132733FFF001319808B
63512 +:10805000010320210224282130BF007F03FAC82118
63513 +:1080600000B5A024AF54002C0336A0218E87001049
63514 +:108070008E8F003003785821256D008800EF702323
63515 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5
63516 +:10809000976A003C8E8400308F9100AC0E000CD6A5
63517 +:1080A0003150FFFF00024B80020940253C02420094
63518 +:1080B00001022025AE2400048E8300048F8D00ACC5
63519 +:1080C0008E860000240E0008ADA3001CADA600188B
63520 +:1080D000ADA0000CADA00010929F000A33F900FF84
63521 +:1080E000A5B90014968500083C1F000CA5A5001634
63522 +:1080F0009298000A331100FFA5B100209690000865
63523 +:1081000024180005A5B00022ADA00024928F000B1A
63524 +:108110002410C00031E700FFA5A70002A1AE0001B6
63525 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B
63526 +:108130003C0A08008D4A005401444821013540247E
63527 +:10814000AF4800283C0208008C4200540044302113
63528 +:1081500030C3007F007AC821033F282102458821CF
63529 +:10816000AF9100BCAF8500C0A23800008F8A00BC70
63530 +:108170002403FFBF2418FFDF954F000201F03824CD
63531 +:1081800000F37025A54E0002914D000231AC003F76
63532 +:10819000358B0040A14B00028F8600BC8F8900D038
63533 +:1081A000ACC000048D28007C3C098000ACC80008ED
63534 +:1081B00090C4000D3082007FA0C2000D8F8500BCEE
63535 +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F
63536 +:1081D0009233000D02789024A232000D8E9000346C
63537 +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE
63538 +:1081F00000EF7023AD6E0014916D001831AC007F5C
63539 +:10820000A16C00188F9F00BC8E8A00308FE8001888
63540 +:10821000015720240109302400C41025AFE20018C2
63541 +:108220009283000AA3E3001C969900088F8500BC86
63542 +:108230008F9800D0A4B9001E8E9000308E8400303C
63543 +:108240000E0002138F0500848F8500D0000291403C
63544 +:108250000002990090AF00BC0253882100403021F9
63545 +:1082600031E7000210E0000302118021000290803B
63546 +:108270000212802190B900BC3327000410E00002F4
63547 +:108280000006F880021F80218E9800308F8B00BC82
63548 +:1082900024068000330F0003000F702331CD00034C
63549 +:1082A000020D6021AD6C000494A400E294AA00E2E7
63550 +:1082B00094B000E231497FFF2522000130537FFF57
63551 +:1082C0000206182400734025A4A800E294A400E24A
63552 +:1082D0003C1408008E94006030917FFF123400221D
63553 +:1082E000000000000E000CF6000000008F8700D098
63554 +:1082F0000000282194F300E094F000E21213000F34
63555 +:108300008FBF003090E900D090E800D1313200FFFB
63556 +:10831000310400FF0244302B14C0FF36264A00010E
63557 +:1083200090EE00D2264B000131CD00FF008D602180
63558 +:10833000158BFF338F9100B08FBF00308FB7002CAB
63559 +:108340008FB600288FB500248FB400208FB3001C97
63560 +:108350008FB200188FB100148FB0001000A0102150
63561 +:1083600003E0000827BD003894A300E20066402423
63562 +:10837000A4A800E290A400E290B900E2309100FFCE
63563 +:108380000011A1C20014F827001F39C03332007F4A
63564 +:10839000024730250A000DE8A0A600E23084FFFF66
63565 +:1083A00030A5FFFFAF440018AF45001C03E00008F4
63566 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF
63567 +:1083C0003084FFFFAFA40010AFBF0044AFBE004039
63568 +:1083D000AFB7003CAFB60038AFB50034AFB4003033
63569 +:1083E000AFB3002CAFB20028AFB10024A7A0001893
63570 +:1083F000920600D1920500D030C400FF30A300FFE8
63571 +:108400000064102B10400122AFA00014920900D08C
63572 +:108410008FB50010312800FF0088382324F4FFFFB7
63573 +:108420000014882B0015982B02339024524001260B
63574 +:108430008FB40014961E0012961F00108FB7001004
63575 +:1084400003DFC823001714000019C400000224032E
63576 +:108450000018140302E2B02A52C00001004020219B
63577 +:108460000284282B10A0000200801821028018210D
63578 +:1084700000033C0000071C033064FFFF2C8600094A
63579 +:1084800014C000020060B821241700088E0A0008FA
63580 +:10849000001769808E09000C31ABFFFF3C0C001007
63581 +:1084A000016C402527520400AF4A0038AF9200B853
63582 +:1084B000AF49003CAF480030000000000000000061
63583 +:1084C00000000000000000000000000000000000AC
63584 +:1084D00000000000000000008F4F000031EE00207F
63585 +:1084E00011C0FFFD0017982A027110240A000E83A4
63586 +:1084F0000000B02155E001019258000131130080C5
63587 +:10850000126001CF012020219655001232A5FFFFF5
63588 +:108510000E000CCBA7B500188F9000D00291A023BD
63589 +:1085200026CD00018F9100B8000DB4000016B403F1
63590 +:108530002638004002D7582A0014882B2405000151
63591 +:108540000300902101711024AF9800B8AFA500146A
63592 +:10855000104001BC8F8900B03C0C08008D8C005489
63593 +:10856000240BFF80921E00D001895021014B28244A
63594 +:10857000921900D0AF4500288E4700103C08080033
63595 +:108580008D0800583C1808008F18005430E33FFF56
63596 +:108590000003218001043021012658212402FF809C
63597 +:1085A0000162F824920C00D0AF5F002C92480000CA
63598 +:1085B00033D100FF333500FF0309982100117140CA
63599 +:1085C000001578C0326D007F01CF382101BA282113
63600 +:1085D000318300FF3164007F3C0A000C00AA88212F
63601 +:1085E0000367F02100033140009A10213108003F59
63602 +:1085F0003C1F000E00D1C021005F982127D90088C0
63603 +:108600002D150008AF9100C0AF9900ACAF9800BC29
63604 +:10861000AF9300B412A0018A00008821240E00014B
63605 +:10862000010E4004310D005D11A0FFB2310F0002B8
63606 +:108630008E4A00283C0300803C04FFEFAE6A000035
63607 +:108640008E450024A260000A3488FFFFAE65000456
63608 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4
63609 +:108660008E62000C3C180040A267000B00433025CE
63610 +:1086700000C8C824033E88240238A825AE75000C23
63611 +:108680008E490004AE6000183C0F00FFAE69001474
63612 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5
63613 +:1086A000AE6C00108E470008A660000896450012C8
63614 +:1086B000AE6700208E42000C30B03FFF00105180AA
63615 +:1086C000AE6200248E5E0014014B182130A400011C
63616 +:1086D000AE7E00288E590018000331C2000443808A
63617 +:1086E000AE79002C8E51001C00C8F821A67F001C1A
63618 +:1086F000AE710030965800028E550020A678001EFC
63619 +:10870000AE75003492490033313000045600000544
63620 +:10871000925000008F8C00D08D8B007CAE6B0030AF
63621 +:10872000925000008F8F00BCA1F00000924E0033E9
63622 +:1087300031CD000251A00007925E00018F8900BC7C
63623 +:108740002418FF80913100000311A825A1350000F5
63624 +:10875000925E00018F9900BC2409FFBF240BFFDF4C
63625 +:10876000A33E00018F9500BC92B8000D3311007F2D
63626 +:10877000A2B1000D8F8E00BC91D0000D02097824AB
63627 +:10878000A1CF000D8F8800BC8E6D0014910A000DE2
63628 +:108790002DAC0001000C2940014B382400E51825C0
63629 +:1087A000A103000D964200128F8800BC8F8700D075
63630 +:1087B000A50200028E45000490FF00BC30A4000317
63631 +:1087C0000004302330DE000300BE102133F9000224
63632 +:1087D00017200002244400342444003090E200BCFE
63633 +:1087E00000A2302430DF000417E0000224830004DC
63634 +:1087F000008018218F8F00AC24090002AD03000413
63635 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7
63636 +:108810008F9500AC924C003F8E440004A6AC000241
63637 +:10882000976B003C0E000CD63170FFFF00025380A6
63638 +:10883000020A38253C05420000E51825AEA30004D5
63639 +:108840008F8600AC8E480038ACC800188E440034C7
63640 +:10885000ACC4001CACC0000CACC00010A4C0001420
63641 +:10886000A4C00016A4C00020A4C00022ACC00024F4
63642 +:108870008E6400145080000124040001ACC4000880
63643 +:108880000E000CF6241100010A000E768F9000D025
63644 +:10889000920F00D2920E00D08FB5001031EB00FF86
63645 +:1088A00031CD00FF008D6023016C50212554FFFF66
63646 +:1088B0000014882B0015982B023390241640FEDDFF
63647 +:1088C000000000008FB400148FBF00448FBE004032
63648 +:1088D0003A8200018FB7003C8FB600388FB5003464
63649 +:1088E0008FB400308FB3002C8FB200288FB10024DA
63650 +:1088F0008FB0002003E0000827BD0048331100209E
63651 +:10890000122000EF24150001921E00BC241F00015C
63652 +:108910000000A82133D900011320000DAFBF001CB7
63653 +:108920008E4400148E0800840088102B144000022E
63654 +:10893000008030218E0600848E03006400C3A82BC3
63655 +:1089400016A0000200C020218E0400640080A8212F
63656 +:108950008E4700148E05006400E5302B14C0000221
63657 +:1089600000E020218E0400640095F02313C0000471
63658 +:108970008FAC001C240A0002AFAA001C8FAC001CA4
63659 +:10898000028C582B156000A8000018218E4F00386B
63660 +:108990008E6D000C3C0E0080AE6F00008E4A0034DD
63661 +:1089A0003C10FF9F01AE5825AE6A00049246003F7E
63662 +:1089B000360CFFFF016C38243C0500203C03FFEF20
63663 +:1089C000A266000B00E510253468FFFF8F8700B812
63664 +:1089D0000048F8243C04000803E4C825AE79000CE4
63665 +:1089E0008CF80014AE60001802BE7821AE78001436
63666 +:1089F0008CF10018AE71001C8CE90008AE690024EF
63667 +:108A00008CEE000CAE6F002CAE600028AE6E002025
63668 +:108A1000A6600038A660003A8CED001401B58023F2
63669 +:108A2000021E902312400011AE72001090EA003D29
63670 +:108A30008E6500048E640000000A310000A6C82183
63671 +:108A4000000010210326402B0082F82103E8C021FA
63672 +:108A5000AE790004AE78000090F1003DA271000AEA
63673 +:108A60008F8900B895320006A67200088F9800AC76
63674 +:108A70002419000202A02021A31900009769003CDC
63675 +:108A80008F9200AC0E000CD63131FFFF00027B80CC
63676 +:108A90008F8500B8022F68253C0E420001AE80256C
63677 +:108AA000AE5000048F8400AC8CAC0038AC8C001845
63678 +:108AB0008CAB0034AC8B001CAC80000CAC80001084
63679 +:108AC000A4800014A4800016A4800020A4800022AA
63680 +:108AD000AC80002490A7003FA487000212A00135BB
63681 +:108AE0002403000153C0000290A2003D90A2003E6A
63682 +:108AF00024480001A08800018F9F00ACAFF500085A
63683 +:108B00008F8300D024070034906600BC30C500027B
63684 +:108B100050A00001240700308F9200B88F8A00BC5B
63685 +:108B2000906D00BC924B00002412C00032A50003DF
63686 +:108B3000A14B00008F8600B88F8800BC240200047F
63687 +:108B400090C400010045182330790003A1040001FE
63688 +:108B50008F8A00BC8F9F00B800F53821955800021D
63689 +:108B600097E9001200F9382103128824312F3FFFC2
63690 +:108B7000022F7025A54E00029150000231A800047A
63691 +:108B8000320C003F358B0040A14B000212A00002C6
63692 +:108B90008F8500BC00E838218F8E00D0ACA7000480
63693 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A
63694 +:108BB000ACAD000890B0000D00044140320C007FC5
63695 +:108BC000A0AC000D8F8600BC90CA000D014B102494
63696 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413
63697 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57
63698 +:108BF0008E380020ADB800108E290024ADA90014D5
63699 +:108C00008E2F0028ADAF00188E2E002C0E000CF613
63700 +:108C1000ADAE001C8FB0001C240C0002120C00EE44
63701 +:108C20008F9000D08FA3001C006088211460000288
63702 +:108C30000060A8210000A02156A0FE390291A023C7
63703 +:108C40000014882B8FA90010960700103C1E0020EE
63704 +:108C50000136402302C750213112FFFFA60A00103F
63705 +:108C6000AFB20010AF5E0030000000009617001099
63706 +:108C7000961300121277008F000000008E05000C82
63707 +:108C80008E0B00080016698000AD7021000DC7C36F
63708 +:108C900001CDA82B0178782101F56021AE0E000CE2
63709 +:108CA000AE0C00088FB300100013B82B02378024DD
63710 +:108CB0001200FF048F9000D00A000E3C000000005C
63711 +:108CC0008E4D0038A6600008240B0003AE6D000036
63712 +:108CD0008E500034A260000A8F9800B8AE70000475
63713 +:108CE0003C0500809311003FA26B000C8E6F000CBE
63714 +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54
63715 +:108D00003C03FFEF8F9200B8004C30243464FFFF27
63716 +:108D100000C4F824AE7F000C8E590014964800124F
63717 +:108D20008F8A00B0AE7900108E490014AE60001832
63718 +:108D3000AE600020AE690014AE6000248E470018BB
63719 +:108D400031093FFF0009F180AE6700288E4D000811
63720 +:108D500003CA802131180001AE6D00308E4F000C27
63721 +:108D60008F8C00AC001089C200185B80022B282178
63722 +:108D7000240E0002A665001CA6600036AE6F002C13
63723 +:108D8000A18E00009763003C8F8A00AC3C04420037
63724 +:108D90003062FFFF00443025AD4600048F9F00B8CD
63725 +:108DA000240700012411C0008FF30038240600348A
63726 +:108DB000AD5300188FF90034AD59001CAD40000CC4
63727 +:108DC000AD400010A5400014A5400016A5400020AD
63728 +:108DD000A5400022AD400024A5550002A147000196
63729 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872
63730 +:108DF000910D0000A24D00008F9000B88F8B00BC39
63731 +:108E000092180001A17800018F8400BC94850002B3
63732 +:108E100000B1782401E97025A48E0002908C000234
63733 +:108E20003183003FA08300028F8300D08F8400BC79
63734 +:108E3000906200BC305300025260000124060030F2
63735 +:108E4000AC8600048C6F007C2403FFBF02A0882145
63736 +:108E5000AC8F0008908E000D31CC007FA08C000DEF
63737 +:108E60008F8600BC90C2000D00432024A0C4000DDA
63738 +:108E70008F8900BC913F000D37F90020A139000D0A
63739 +:108E80008F8800B88F9300BC8D070020AE6700105C
63740 +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4
63741 +:108EA0008D12002C0E000CF6AE72001C0A00103D54
63742 +:108EB0008F9000D0960E00148E03000431CCFFFF7B
63743 +:108EC000000C10C000622021AF44003C8E1F000443
63744 +:108ED0008F46003C03E6C8231B20003C0000000036
63745 +:108EE0008E0F000025E200013C05001034B500089B
63746 +:108EF000AF420038AF550030000000000000000015
63747 +:108F00000000000000000000000000000000000061
63748 +:108F100000000000000000008F580000330B00200C
63749 +:108F20001160FFFD000000008F5304003C0D002085
63750 +:108F3000AE1300088F570404AE17000CAF4D00307D
63751 +:108F4000000000003C0608008CC600442416000106
63752 +:108F500010D600BD00000000961F00123C0508005E
63753 +:108F60008CA5004000BFC821A61900129609001464
63754 +:108F700025270001A6070014960A00143144FFFFBC
63755 +:108F80005486FF498FB30010A60000140E000E1681
63756 +:108F900030A5FFFF3C0408008C84002496030012D7
63757 +:108FA0000044102300623023A60600120A00105964
63758 +:108FB0008FB30010A08300018F8200AC2404000155
63759 +:108FC000AC4400080A000FF08F8300D08E0200002E
63760 +:108FD0000A0010EA3C0500108F8200C08FA7001C19
63761 +:108FE000921800D0920B00D0920E00D0331100FFE7
63762 +:108FF000316900FF00117940000928C001E56021B6
63763 +:1090000031C300FF036C50210003314000C2C8216E
63764 +:10901000255F0088AF9F00ACAF9900BCA1470088D6
63765 +:109020009768003C03C020218F9100AC0E000CD645
63766 +:109030003110FFFF00026B80020DC0253C0442008E
63767 +:109040008F8D00B803045825AE2B00048DA900387D
63768 +:109050008F8B00AC0000882100118100AD690018E1
63769 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F
63770 +:1090700091AC003E8D65001C8D660018000C190037
63771 +:10908000000C770200A33821020E102500E3F82B14
63772 +:1090900000C2C821033F5021AD67001CAD6A001813
63773 +:1090A000AD60000CAD60001091B8003E24050005D5
63774 +:1090B00003C45024A578001495A9000403C02021FE
63775 +:1090C000A569001691AF003EA56F002095B1000480
63776 +:1090D000A5710022AD60002491AE003FA56E000294
63777 +:1090E00091B0003E91AC003D01901023244300015B
63778 +:1090F000A16300018F8600AC8F9F00BCACDE00082E
63779 +:10910000A3E500008F9000BC8F9900B82405FFBF35
63780 +:1091100096070002973800120247782433093FFF70
63781 +:1091200001E98825A6110002921200022418FFDF2F
63782 +:10913000324E003F35CD0040A20D00028F8600BCAC
63783 +:109140008F8C00D02412FFFFACC000048D8B007CFC
63784 +:109150003C0C8000ACCB000890C2000D3043007F77
63785 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D
63786 +:10917000A0F9000D8F9100BC9229000D01387824D0
63787 +:10918000A22F000D8F9000BCAE120010AE1500147F
63788 +:10919000920E00182415FF8002AE6825A20D00185B
63789 +:1091A0008F8500BC8F8300B88CAB0018016C102435
63790 +:1091B000004A3025ACA600189068003EA0A8001C0C
63791 +:1091C0008F9F00B88F8700BC8F9800D097F900045C
63792 +:1091D000A4F9001E0E0002138F0500848F8600D0B4
63793 +:1091E000000279400002490090D200BC01E98821C8
63794 +:1091F000004028213255000212A0000303D1202193
63795 +:109200000002A8800095202190CD00BC31B200045E
63796 +:109210001240000333DF0003000540800088202156
63797 +:10922000240600048F9E00BC00DFC8233327000300
63798 +:1092300000875021AFCA00040E000CF6A665003866
63799 +:109240000A0010388F9000D0961E00123C080800CB
63800 +:109250008D080024011E9021A61200120A00105948
63801 +:109260008FB3001027BDFFE03C1808008F18005096
63802 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2
63803 +:1092800093710074030478212410FF8031EE007F75
63804 +:109290003225007F01F0582401DA68213C0C000AD5
63805 +:1092A000A38500C401AC2821AF4B002494A9001071
63806 +:1092B0009768000690A600620080382124020030E2
63807 +:1092C0000109202330C300F0AF8500D010620019DF
63808 +:1092D0003090FFFF90AE0062240DFFF0240A005092
63809 +:1092E00001AE6024318B00FF116A002F00000000E6
63810 +:1092F00016000007241F0C00AF5F00248FB100147C
63811 +:109300008FBF00188FB0001003E0000827BD0020B9
63812 +:109310000E000E1C02002021241F0C00AF5F002451
63813 +:109320008FB100148FBF00188FB0001003E0000849
63814 +:1093300027BD002094A200E094A400E290BF011396
63815 +:10934000008218263079FFFF33E700C014E00009DF
63816 +:109350002F31000116000038000000005620FFE603
63817 +:10936000241F0C000E000D18000000000A0011ED73
63818 +:10937000241F0C001620FFDE000000000E000D1858
63819 +:10938000000000001440FFDC241F0C001600002227
63820 +:109390008F8300D0906901133122003FA062011336
63821 +:1093A0000A0011ED241F0C0094AF00D48F8600D466
63822 +:1093B00000E02821240400050E000C5C31F0FFFFC2
63823 +:1093C0001440000524030003979100E600001821D3
63824 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E
63825 +:1093E0003C196013AF400180241F0C00AF50018472
63826 +:1093F000007938253C101000AF4701888FB1001468
63827 +:10940000AF5001B8AF5F00248FB000108FBF0018BD
63828 +:1094100003E0000827BD00200E000E1C02002021E2
63829 +:109420005040FFB5241F0C008F8300D090690113BA
63830 +:109430000A0012163122003F0E000E1C02002021ED
63831 +:109440001440FFAD241F0C00122000078F8300D0B2
63832 +:10945000906801133106003F34C20040A06201133E
63833 +:109460000A0011ED241F0C000E000D180000000072
63834 +:109470005040FFA1241F0C008F8300D0906801137F
63835 +:109480003106003F0A00124634C20040AF9B00C8BC
63836 +:1094900003E00008AF8000EC3089FFFF0009404284
63837 +:1094A0002D020041000921801440000200095040B3
63838 +:1094B00024080040000830C0000811400046582130
63839 +:1094C000256701A800E2C821272F007F2418FF800C
63840 +:1094D00001F818240064302100CA702125CC00FF57
63841 +:1094E000240DFF00018D202425650088240A0088B2
63842 +:1094F0003C010800AC2A004C3C010800AC2500509F
63843 +:10950000AF8400D43C010800AC2900603C01080095
63844 +:10951000AC2800643C010800AC2700543C01080062
63845 +:10952000AC2300583C010800AC26005C03E00008B6
63846 +:1095300000000000308300FF30C6FFFF30E400FF72
63847 +:109540008F4201B80440FFFE00034C00012438257F
63848 +:109550003C08600000E820253C031000AF45018076
63849 +:10956000AF460184AF44018803E00008AF4301B86F
63850 +:109570008F86001C3C096012352700108CCB00043C
63851 +:109580003C0C600E35850010316A00062D48000144
63852 +:10959000ACE800C48CC40004ACA431808CC20008C8
63853 +:1095A00094C30002ACA2318403E00008A78300E466
63854 +:1095B0003C0308008C6300508F8400E88F86001CF9
63855 +:1095C0002402FF800064C0210302C824AF59002890
63856 +:1095D0008CCD00043305007F00BA78213C0E000CCE
63857 +:1095E00001EE2821ACAD00588CC80008AF8500D032
63858 +:1095F0003C076012ACA8005C8CCC001034E8001072
63859 +:10960000ACAC000C8CCB000CACAB000894AA0014E2
63860 +:109610003C0208008C42004425490001A4A9001422
63861 +:1096200094A400143083FFFF106200178F8400D0D1
63862 +:109630003C0A08008D4A0040A4AA00128CCE0018F3
63863 +:10964000AC8E00248CCD0014AC8D00208CC700188B
63864 +:10965000AC87002C8CCC001424060001AC8C0028B4
63865 +:109660008D0B00BC5166001A8D0200B48D0200B84B
63866 +:10967000A482003A948F003AA48F003C948800D4CE
63867 +:1096800003E000083102FFFF3C0908008D29002497
63868 +:10969000A4A000148F8400D0A4A900128CCE0018BE
63869 +:1096A000AC8E00248CCD0014AC8D00208CC700182B
63870 +:1096B000AC87002C8CCC001424060001AC8C002854
63871 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418
63872 +:1096D000A482003A948F003AA48F003C948800D46E
63873 +:1096E00003E000083102FFFF8F86001C3C0C0800DD
63874 +:1096F0008D8C0050240BFF808CCD00083C03000CA7
63875 +:10970000000D51C0018A4021010B4824AF8A00E8B6
63876 +:10971000AF49002890C700073105007F00BA10212B
63877 +:109720000043282130E4000410800039AF8500D0C8
63878 +:1097300090CF000731EE000811C000380000000093
63879 +:109740008CD9000C8CC400140324C02B13000030EF
63880 +:10975000000000008CC2000CACA200648CCD00188C
63881 +:109760002402FFF8ACAD00688CCC0010ACAC0080DB
63882 +:109770008CCB000CACAB00848CCA001CACAA007C67
63883 +:1097800090A900BC01224024A0A800BC90C30007FF
63884 +:109790003067000810E000048F8500D090AF00BC57
63885 +:1097A00035EE0001A0AE00BC90D9000733380001AF
63886 +:1097B000130000088F8300D08F8700D0240400346A
63887 +:1097C00090E800BC35030002A0E300BC8F8300D00A
63888 +:1097D000AC6400C090C900073126000210C000052B
63889 +:1097E00000000000906A00BC35420004A06200BC8A
63890 +:1097F0008F8300D09065011330AD003FA06D011341
63891 +:109800008F8C00D0958B00D403E000083162FFFFFD
63892 +:109810008CC200140A001305000000000A001306A1
63893 +:10982000ACA0006427BDFFD8AFB000108F90001C23
63894 +:10983000AFBF0024AFB40020AFB20018AFB1001426
63895 +:10984000AFB3001C9613000E3C07600A3C14600680
63896 +:109850003264FFFF369300100E00125534F40410EA
63897 +:109860008F8400D43C11600E0E00099B363100102D
63898 +:10987000920E00153C0708008CE700603C12601255
63899 +:1098800031CD000FA38D00F08E0E00048E0D000868
63900 +:1098900096080012961F00109619001A9618001EBE
63901 +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45
63902 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD
63903 +:1098C0003C010800AC2C00243C010800AC2A0044F8
63904 +:1098D000AE293178AE26317C92020015960300162F
63905 +:1098E00036520010304400FF3065FFFF3C06080090
63906 +:1098F0008CC60064AE243188AE4500B492080014D2
63907 +:1099000096190018241F0001011FC004332FFFFF08
63908 +:109910003C0508008CA50058AE5800B8AE4F00BCFE
63909 +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D
63910 +:10993000AE4B00C0920A0015AE670048AE66004C00
63911 +:10994000314900FFAE4900C8AE65007C3C03080009
63912 +:109950008C6300503C0408008C84004C3C080800D8
63913 +:109960008D0800543C0208008C42005C8FBF00242C
63914 +:10997000AE6300808FB00010AE8300748FB3001C04
63915 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F
63916 +:10999000AE24318CAE233190AE283194AE2531986F
63917 +:1099A000AE870050AE860054AE8500708FB10014B3
63918 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B
63919 +:1099C000AE4800D4AE4500D88FB400208FB2001846
63920 +:1099D00003E0000827BD002827BDFFE0AFB1001459
63921 +:1099E000AFBF0018241100010E000845AFB00010F1
63922 +:1099F00010510005978400E6978300CC0083102B5C
63923 +:109A0000144000088F8500D4240700028FBF00187F
63924 +:109A10008FB100148FB0001000E0102103E00008A7
63925 +:109A200027BD00200E000C7A24040005AF8200E858
63926 +:109A30001040FFF6240700020E0008498F90001C1A
63927 +:109A4000979F00E68F9900E88F8D00C827EF0001EF
63928 +:109A5000240E0050AF590020A78F00E6A1AE0000F1
63929 +:109A60003C0C08008D8C00648F8600C8240A80009E
63930 +:109A7000000C5E00ACCB0074A4C0000694C9000AC0
63931 +:109A8000241FFF803C0D000C012AC024A4D8000A2A
63932 +:109A900090C8000A24182000011F1825A0C3000A3E
63933 +:109AA0008F8700C8A0E000788F8500C800003821AB
63934 +:109AB000A0A000833C0208008C4200508F8400E884
63935 +:109AC0000044782101FFC824AF590028960B0002FA
63936 +:109AD00031EE007F01DA6021018D3021A4CB00D46A
63937 +:109AE000960A0002AF8600D03C0E000425492401EE
63938 +:109AF000A4C900E68E080004ACC800048E03000868
63939 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA
63940 +:109B10008F8500D02403FFBFA0A000D13C04080023
63941 +:109B20008C8400648F8200D0A04400D28E1F000C71
63942 +:109B30008F8A00D0978F00E4AD5F001C8E19001053
63943 +:109B400024100030AD590018A5400030A551005434
63944 +:109B5000A5510056A54F0016AD4E0068AD580080C7
63945 +:109B6000AD580084914D006231AC000F358B001070
63946 +:109B7000A14B00628F8600D090C900633128007F1E
63947 +:109B8000A0C800638F8400D02406FFFF9085006387
63948 +:109B900000A31024A08200638F9100D000E0102168
63949 +:109BA000923F00BC37F90001A23900BC8F8A00D077
63950 +:109BB000938F00F0AD580064AD5000C0914E00D3BB
63951 +:109BC000000F690031CC000F018D5825A14B00D347
63952 +:109BD0008F8500D08F8900DCACA900E88F8800D881
63953 +:109BE0008FBF00188FB100148FB0001027BD002068
63954 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB
63955 +:109C000003E000080000000027BDFFE0AFB0001037
63956 +:109C10008F90001CAFB10014AFBF00188E19000464
63957 +:109C20003C1808008F180050240FFF80001989C0CD
63958 +:109C30000238702131CD007F01CF602401BA50215C
63959 +:109C40003C0B000CAF4C0028014B4021950900D47F
63960 +:109C5000950400D68E0700043131FFFFAF8800D095
63961 +:109C60000E000913000721C08E0600048F8300C870
63962 +:109C7000000629C0AF4500209064003E30820040BD
63963 +:109C8000144000068F8400D0341FFFFF948300D659
63964 +:109C90003062FFFF145F000400000000948400D6CF
63965 +:109CA0000E0008A83084FFFF8E050004022030213A
63966 +:109CB0008FBF00188FB100148FB000102404002251
63967 +:109CC00000003821000529C00A00127C27BD0020B1
63968 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F
63969 +:109CE000AFBF00181220001D000080218F86001CCD
63970 +:109CF0008CC500002403000600053F020005140285
63971 +:109D000030E4000714830015304500FF2CA800063E
63972 +:109D10001100004D000558803C0C0800258C57D4DC
63973 +:109D2000016C50218D490000012000080000000056
63974 +:109D30008F8E00EC240D000111CD005900000000B1
63975 +:109D4000260B00013170FFFF24CA00200211202BD6
63976 +:109D5000014030211480FFE6AF8A001C0200102170
63977 +:109D60008FBF00188FB100148FB0001003E00008FF
63978 +:109D700027BD0020938700CE14E00038240400148F
63979 +:109D80000E001338000000008F86001C2402000122
63980 +:109D90000A00147FAF8200EC8F8900EC24080002D7
63981 +:109DA0001128003B2404001300002821000030216A
63982 +:109DB000240700010E00127C000000000A00147F3E
63983 +:109DC0008F86001C8F8700EC2405000214E5FFF647
63984 +:109DD000240400120E0012E9000000008F8500E844
63985 +:109DE00000403021240400120E00127C00003821B3
63986 +:109DF0000A00147F8F86001C8F8300EC241F000351
63987 +:109E0000147FFFD0260B00010E00129B0000000003
63988 +:109E10008F8500E800403021240200022404001055
63989 +:109E200000003821AF8200EC0E00127C0000000020
63990 +:109E30000A00147F8F86001C8F8F00EC240600021E
63991 +:109E400011E6000B0000000024040010000028218F
63992 +:109E5000000030210A00149C240700010000282182
63993 +:109E60000E00127C000030210A00147F8F86001C37
63994 +:109E70000E0013A500000000144000128F99001C72
63995 +:109E80008F86001C240200030A00147FAF8200ECBE
63996 +:109E90000E001431000000000A00147F8F86001CA1
63997 +:109EA0000E00128B000000002402000224040014A3
63998 +:109EB0000000282100003021000038210A0014B9D8
63999 +:109EC000AF8200EC004038212404001097380002D3
64000 +:109ED000000028210E00127C3306FFFF0A00147FC9
64001 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D
64002 +:109EF0008C8500742402000100A61824AC83007431
64003 +:109F000003E00008A082000510A000362CA200800B
64004 +:109F1000274A04003C0B000524090080104000077C
64005 +:109F20002408008030A6000F00C540212D030081C9
64006 +:109F30001460000200A0482124080080AF4B0030CC
64007 +:109F400000000000000000000000000011000009F7
64008 +:109F500000003821014030218C8D000024E70004EE
64009 +:109F600000E8602BACCD0000248400041580FFFACB
64010 +:109F700024C60004000000000000000000000000F3
64011 +:109F80003C0E0006010E3825AF47003000000000EF
64012 +:109F900000000000000000008F4F000031E80010BA
64013 +:109FA0001100FFFD000000008F42003C8F43003C89
64014 +:109FB0000049C8210323C02B130000040000000047
64015 +:109FC0008F4C003825860001AF4600388F47003C93
64016 +:109FD00000A9282300E96821AF4D003C14A0FFCE62
64017 +:109FE0002CA2008003E000080000000027BDFFD085
64018 +:109FF0003C020002AFB100143C11000CAF45003828
64019 +:10A00000AFB3001CAF46003C00809821AF42003047
64020 +:10A0100024050088AF44002803512021AFBF002849
64021 +:10A02000AFB50024AFB40020AFB200180E0014F199
64022 +:10A03000AFB000103C1F08008FFF004C3C18080018
64023 +:10A040008F1800642410FF8003F3A82132B9007F29
64024 +:10A0500002B078240018A0C0033A70210018914083
64025 +:10A0600001D12021AF4F00280E0014F10254282105
64026 +:10A070003C0D08008DAD00502405012001B358218E
64027 +:10A08000316C007F01705024019A48210131202158
64028 +:10A090000E0014F1AF4A00283C0808008D08005457
64029 +:10A0A0003C0508008CA500640113382130E6007FD0
64030 +:10A0B00000F0182400DA202100912021AF4300286D
64031 +:10A0C0000E0014F1000529403C0208008C420058A3
64032 +:10A0D0003C1008008E1000601200001C0053882104
64033 +:10A0E0002415FF800A0015743C14000C3226007FF2
64034 +:10A0F0000235182400DA202102402821AF4300282D
64035 +:10A10000009420210E0014F12610FFC01200000F51
64036 +:10A11000023288212E05004110A0FFF42412100005
64037 +:10A120003226007F001091800235182400DA2021A9
64038 +:10A1300002402821AF430028009420210E0014F192
64039 +:10A14000000080211600FFF3023288213C0B08003A
64040 +:10A150008D6B005C240AFF802405000201734021FE
64041 +:10A16000010A4824AF4900283C0408009484006296
64042 +:10A170003110007F021A88213C07000C0E000CAA47
64043 +:10A180000227982100402821026020218FBF00284B
64044 +:10A190008FB500248FB400208FB3001C8FB200183D
64045 +:10A1A0008FB100148FB000100A0014F127BD0030E9
64046 +:10A1B0008F83001C8C62000410400003000000002C
64047 +:10A1C00003E00008000000008C6400108C650008AB
64048 +:10A1D0000A00152A8C66000C000000000000001B1D
64049 +:10A1E0000000000F0000000A000000080000000648
64050 +:10A1F000000000050000000500000004000000044D
64051 +:10A200000000000300000003000000030000000342
64052 +:10A210000000000300000002000000020000000235
64053 +:10A220000000000200000002000000020000000226
64054 +:10A230000000000200000002000000020000000216
64055 +:10A240000000000200000002000000020000000206
64056 +:10A2500000000001000000010000000108000F24C0
64057 +:10A2600008000D6C08000FB80800106008000F4CC3
64058 +:10A2700008000F8C0800119408000D88080011B820
64059 +:10A2800008000DD8080015540800151C08000D889A
64060 +:10A2900008000D8808000D880800124008001240D0
64061 +:10A2A00008000D8808000D88080014E008000D88DB
64062 +:10A2B00008000D8808000D8808000D88080013B4F8
64063 +:10A2C00008000D8808000D8808000D8808000D881A
64064 +:10A2D00008000D8808000D8808000D8808000D880A
64065 +:10A2E00008000D8808000D8808000D8808000D88FA
64066 +:10A2F00008000D8808000D8808000FAC08000D88C4
64067 +:10A3000008000D880800167808000D8808000D88E0
64068 +:10A3100008000D8808000D8808000D8808000D88C9
64069 +:10A3200008000D8808000D8808000D8808000D88B9
64070 +:10A3300008000D8808000D8808000D8808000D88A9
64071 +:10A3400008000D8808000D8808000D88080014100A
64072 +:10A3500008000D8808000D8808001334080012A4B6
64073 +:10A3600008001E2C08001EFC08001F1408001F28EF
64074 +:10A3700008001F3808001E2C08001E2C08001E2C88
64075 +:10A3800008001ED808002E1408002E1C08002DE41A
64076 +:10A3900008002DF008002DFC08002E08080052F4DB
64077 +:10A3A000080052B40800528008005254080052308D
64078 +:10A3B000080051EC0A000C840000000000000000BE
64079 +:10A3C0000000000D727870362E322E33000000002F
64080 +:10A3D000060203030000000000000001000000006E
64081 +:10A3E000000000000000000000000000000000006D
64082 +:10A3F000000000000000000000000000000000005D
64083 +:10A40000000000000000000000000000000000004C
64084 +:10A41000000000000000000000000000000000003C
64085 +:10A42000000000000000000000000000000000002C
64086 +:10A43000000000000000000000000000000000001C
64087 +:10A44000000000000000000000000000000000000C
64088 +:10A4500000000000000000000000000000000000FC
64089 +:10A4600000000000000000000000000000000000EC
64090 +:10A4700000000000000000000000000000000000DC
64091 +:10A4800000000000000000000000000000000000CC
64092 +:10A4900000000000000000000000000000000000BC
64093 +:10A4A00000000000000000000000000000000000AC
64094 +:10A4B000000000000000000000000000000000009C
64095 +:10A4C000000000000000000000000000000000008C
64096 +:10A4D000000000000000000000000000000000007C
64097 +:10A4E000000000000000000000000000000000006C
64098 +:10A4F000000000000000000000000000000000005C
64099 +:10A50000000000000000000000000000000000004B
64100 +:10A51000000000000000000000000000000000003B
64101 +:10A52000000000000000000000000000000000002B
64102 +:10A53000000000000000000000000000000000001B
64103 +:10A54000000000000000000000000000000000000B
64104 +:10A5500000000000000000000000000000000000FB
64105 +:10A5600000000000000000000000000000000000EB
64106 +:10A5700000000000000000000000000000000000DB
64107 +:10A5800000000000000000000000000000000000CB
64108 +:10A5900000000000000000000000000000000000BB
64109 +:10A5A00000000000000000000000000000000000AB
64110 +:10A5B000000000000000000000000000000000009B
64111 +:10A5C000000000000000000000000000000000008B
64112 +:10A5D000000000000000000000000000000000007B
64113 +:10A5E000000000000000000000000000000000006B
64114 +:10A5F000000000000000000000000000000000005B
64115 +:10A60000000000000000000000000000000000004A
64116 +:10A61000000000000000000000000000000000003A
64117 +:10A62000000000000000000000000000000000002A
64118 +:10A63000000000000000000000000000000000001A
64119 +:10A64000000000000000000000000000000000000A
64120 +:10A6500000000000000000000000000000000000FA
64121 +:10A6600000000000000000000000000000000000EA
64122 +:10A6700000000000000000000000000000000000DA
64123 +:10A6800000000000000000000000000000000000CA
64124 +:10A6900000000000000000000000000000000000BA
64125 +:10A6A00000000000000000000000000000000000AA
64126 +:10A6B000000000000000000000000000000000009A
64127 +:10A6C000000000000000000000000000000000008A
64128 +:10A6D000000000000000000000000000000000007A
64129 +:10A6E000000000000000000000000000000000006A
64130 +:10A6F000000000000000000000000000000000005A
64131 +:10A700000000000000000000000000000000000049
64132 +:10A710000000000000000000000000000000000039
64133 +:10A720000000000000000000000000000000000029
64134 +:10A730000000000000000000000000000000000019
64135 +:10A740000000000000000000000000000000000009
64136 +:10A7500000000000000000000000000000000000F9
64137 +:10A7600000000000000000000000000000000000E9
64138 +:10A7700000000000000000000000000000000000D9
64139 +:10A7800000000000000000000000000000000000C9
64140 +:10A7900000000000000000000000000000000000B9
64141 +:10A7A00000000000000000000000000000000000A9
64142 +:10A7B0000000000000000000000000000000000099
64143 +:10A7C0000000000000000000000000000000000089
64144 +:10A7D0000000000000000000000000000000000079
64145 +:10A7E0000000000000000000000000000000000069
64146 +:10A7F0000000000000000000000000000000000059
64147 +:10A800000000000000000000000000000000000048
64148 +:10A810000000000000000000000000000000000038
64149 +:10A820000000000000000000000000000000000028
64150 +:10A830000000000000000000000000000000000018
64151 +:10A840000000000000000000000000000000000008
64152 +:10A8500000000000000000000000000000000000F8
64153 +:10A8600000000000000000000000000000000000E8
64154 +:10A8700000000000000000000000000000000000D8
64155 +:10A8800000000000000000000000000000000000C8
64156 +:10A8900000000000000000000000000000000000B8
64157 +:10A8A00000000000000000000000000000000000A8
64158 +:10A8B0000000000000000000000000000000000098
64159 +:10A8C0000000000000000000000000000000000088
64160 +:10A8D0000000000000000000000000000000000078
64161 +:10A8E0000000000000000000000000000000000068
64162 +:10A8F0000000000000000000000000000000000058
64163 +:10A900000000000000000000000000000000000047
64164 +:10A910000000000000000000000000000000000037
64165 +:10A920000000000000000000000000000000000027
64166 +:10A930000000000000000000000000000000000017
64167 +:10A940000000000000000000000000000000000007
64168 +:10A9500000000000000000000000000000000000F7
64169 +:10A9600000000000000000000000000000000000E7
64170 +:10A9700000000000000000000000000000000000D7
64171 +:10A9800000000000000000000000000000000000C7
64172 +:10A9900000000000000000000000000000000000B7
64173 +:10A9A00000000000000000000000000000000000A7
64174 +:10A9B0000000000000000000000000000000000097
64175 +:10A9C0000000000000000000000000000000000087
64176 +:10A9D0000000000000000000000000000000000077
64177 +:10A9E0000000000000000000000000000000000067
64178 +:10A9F0000000000000000000000000000000000057
64179 +:10AA00000000000000000000000000000000000046
64180 +:10AA10000000000000000000000000000000000036
64181 +:10AA20000000000000000000000000000000000026
64182 +:10AA30000000000000000000000000000000000016
64183 +:10AA40000000000000000000000000000000000006
64184 +:10AA500000000000000000000000000000000000F6
64185 +:10AA600000000000000000000000000000000000E6
64186 +:10AA700000000000000000000000000000000000D6
64187 +:10AA800000000000000000000000000000000000C6
64188 +:10AA900000000000000000000000000000000000B6
64189 +:10AAA00000000000000000000000000000000000A6
64190 +:10AAB0000000000000000000000000000000000096
64191 +:10AAC0000000000000000000000000000000000086
64192 +:10AAD0000000000000000000000000000000000076
64193 +:10AAE0000000000000000000000000000000000066
64194 +:10AAF0000000000000000000000000000000000056
64195 +:10AB00000000000000000000000000000000000045
64196 +:10AB10000000000000000000000000000000000035
64197 +:10AB20000000000000000000000000000000000025
64198 +:10AB30000000000000000000000000000000000015
64199 +:10AB40000000000000000000000000000000000005
64200 +:10AB500000000000000000000000000000000000F5
64201 +:10AB600000000000000000000000000000000000E5
64202 +:10AB700000000000000000000000000000000000D5
64203 +:10AB800000000000000000000000000000000000C5
64204 +:10AB900000000000000000000000000000000000B5
64205 +:10ABA00000000000000000000000000000000000A5
64206 +:10ABB0000000000000000000000000000000000095
64207 +:10ABC0000000000000000000000000000000000085
64208 +:10ABD0000000000000000000000000000000000075
64209 +:10ABE0000000000000000000000000000000000065
64210 +:10ABF0000000000000000000000000000000000055
64211 +:10AC00000000000000000000000000000000000044
64212 +:10AC10000000000000000000000000000000000034
64213 +:10AC20000000000000000000000000000000000024
64214 +:10AC30000000000000000000000000000000000014
64215 +:10AC40000000000000000000000000000000000004
64216 +:10AC500000000000000000000000000000000000F4
64217 +:10AC600000000000000000000000000000000000E4
64218 +:10AC700000000000000000000000000000000000D4
64219 +:10AC800000000000000000000000000000000000C4
64220 +:10AC900000000000000000000000000000000000B4
64221 +:10ACA00000000000000000000000000000000000A4
64222 +:10ACB0000000000000000000000000000000000094
64223 +:10ACC0000000000000000000000000000000000084
64224 +:10ACD0000000000000000000000000000000000074
64225 +:10ACE0000000000000000000000000000000000064
64226 +:10ACF0000000000000000000000000000000000054
64227 +:10AD00000000000000000000000000000000000043
64228 +:10AD10000000000000000000000000000000000033
64229 +:10AD20000000000000000000000000000000000023
64230 +:10AD30000000000000000000000000000000000013
64231 +:10AD40000000000000000000000000000000000003
64232 +:10AD500000000000000000000000000000000000F3
64233 +:10AD600000000000000000000000000000000000E3
64234 +:10AD700000000000000000000000000000000000D3
64235 +:10AD800000000000000000000000000000000000C3
64236 +:10AD900000000000000000000000000000000000B3
64237 +:10ADA00000000000000000000000000000000000A3
64238 +:10ADB0000000000000000000000000000000000093
64239 +:10ADC0000000000000000000000000000000000083
64240 +:10ADD0000000000000000000000000000000000073
64241 +:10ADE0000000000000000000000000000000000063
64242 +:10ADF0000000000000000000000000000000000053
64243 +:10AE00000000000000000000000000000000000042
64244 +:10AE10000000000000000000000000000000000032
64245 +:10AE20000000000000000000000000000000000022
64246 +:10AE30000000000000000000000000000000000012
64247 +:10AE40000000000000000000000000000000000002
64248 +:10AE500000000000000000000000000000000000F2
64249 +:10AE600000000000000000000000000000000000E2
64250 +:10AE700000000000000000000000000000000000D2
64251 +:10AE800000000000000000000000000000000000C2
64252 +:10AE900000000000000000000000000000000000B2
64253 +:10AEA00000000000000000000000000000000000A2
64254 +:10AEB0000000000000000000000000000000000092
64255 +:10AEC0000000000000000000000000000000000082
64256 +:10AED0000000000000000000000000000000000072
64257 +:10AEE0000000000000000000000000000000000062
64258 +:10AEF0000000000000000000000000000000000052
64259 +:10AF00000000000000000000000000000000000041
64260 +:10AF10000000000000000000000000000000000031
64261 +:10AF20000000000000000000000000000000000021
64262 +:10AF30000000000000000000000000000000000011
64263 +:10AF40000000000000000000000000000000000001
64264 +:10AF500000000000000000000000000000000000F1
64265 +:10AF600000000000000000000000000000000000E1
64266 +:10AF700000000000000000000000000000000000D1
64267 +:10AF800000000000000000000000000000000000C1
64268 +:10AF900000000000000000000000000000000000B1
64269 +:10AFA00000000000000000000000000000000000A1
64270 +:10AFB0000000000000000000000000000000000091
64271 +:10AFC0000000000000000000000000000000000081
64272 +:10AFD0000000000000000000000000000000000071
64273 +:10AFE0000000000000000000000000000000000061
64274 +:10AFF0000000000000000000000000000000000051
64275 +:10B000000000000000000000000000000000000040
64276 +:10B010000000000000000000000000000000000030
64277 +:10B020000000000000000000000000000000000020
64278 +:10B030000000000000000000000000000000000010
64279 +:10B040000000000000000000000000000000000000
64280 +:10B0500000000000000000000000000000000000F0
64281 +:10B0600000000000000000000000000000000000E0
64282 +:10B0700000000000000000000000000000000000D0
64283 +:10B0800000000000000000000000000000000000C0
64284 +:10B0900000000000000000000000000000000000B0
64285 +:10B0A00000000000000000000000000000000000A0
64286 +:10B0B0000000000000000000000000000000000090
64287 +:10B0C0000000000000000000000000000000000080
64288 +:10B0D0000000000000000000000000000000000070
64289 +:10B0E0000000000000000000000000000000000060
64290 +:10B0F0000000000000000000000000000000000050
64291 +:10B10000000000000000000000000000000000003F
64292 +:10B11000000000000000000000000000000000002F
64293 +:10B12000000000000000000000000000000000001F
64294 +:10B13000000000000000000000000000000000000F
64295 +:10B1400000000000000000000000000000000000FF
64296 +:10B1500000000000000000000000000000000000EF
64297 +:10B1600000000000000000000000000000000000DF
64298 +:10B1700000000000000000000000000000000000CF
64299 +:10B1800000000000000000000000000000000000BF
64300 +:10B1900000000000000000000000000000000000AF
64301 +:10B1A000000000000000000000000000000000009F
64302 +:10B1B000000000000000000000000000000000008F
64303 +:10B1C000000000000000000000000000000000007F
64304 +:10B1D000000000000000000000000000000000006F
64305 +:10B1E000000000000000000000000000000000005F
64306 +:10B1F000000000000000000000000000000000004F
64307 +:10B20000000000000000000000000000000000003E
64308 +:10B21000000000000000000000000000000000002E
64309 +:10B22000000000000000000000000000000000001E
64310 +:10B23000000000000000000000000000000000000E
64311 +:10B2400000000000000000000000000000000000FE
64312 +:10B2500000000000000000000000000000000000EE
64313 +:10B2600000000000000000000000000000000000DE
64314 +:10B2700000000000000000000000000000000000CE
64315 +:10B2800000000000000000000000000000000000BE
64316 +:10B2900000000000000000000000000000000000AE
64317 +:10B2A000000000000000000000000000000000009E
64318 +:10B2B000000000000000000000000000000000008E
64319 +:10B2C000000000000000000000000000000000007E
64320 +:10B2D000000000000000000000000000000000006E
64321 +:10B2E000000000000000000000000000000000005E
64322 +:10B2F000000000000000000000000000000000004E
64323 +:10B30000000000000000000000000000000000003D
64324 +:10B31000000000000000000000000000000000002D
64325 +:10B32000000000000000000000000000000000001D
64326 +:10B33000000000000000000000000000000000000D
64327 +:10B3400000000000000000000000000000000000FD
64328 +:10B3500000000000000000000000000000000000ED
64329 +:10B3600000000000000000000000000000000000DD
64330 +:10B3700000000000000000000000000000000000CD
64331 +:10B3800000000000000000000000000000000000BD
64332 +:10B3900000000000000000000000000000000000AD
64333 +:10B3A000000000000000000000000000000000009D
64334 +:10B3B000000000000000000000000000000000008D
64335 +:10B3C000000000000000000000000000000000007D
64336 +:10B3D000000000000000000000000000000000006D
64337 +:10B3E000000000000000000000000000000000005D
64338 +:10B3F000000000000000000000000000000000004D
64339 +:10B40000000000000000000000000000000000003C
64340 +:10B41000000000000000000000000000000000002C
64341 +:10B42000000000000000000000000000000000001C
64342 +:10B43000000000000000000000000000000000000C
64343 +:10B4400000000000000000000000000000000000FC
64344 +:10B4500000000000000000000000000000000000EC
64345 +:10B4600000000000000000000000000000000000DC
64346 +:10B4700000000000000000000000000000000000CC
64347 +:10B4800000000000000000000000000000000000BC
64348 +:10B4900000000000000000000000000000000000AC
64349 +:10B4A000000000000000000000000000000000009C
64350 +:10B4B000000000000000000000000000000000008C
64351 +:10B4C000000000000000000000000000000000007C
64352 +:10B4D000000000000000000000000000000000006C
64353 +:10B4E000000000000000000000000000000000005C
64354 +:10B4F000000000000000000000000000000000004C
64355 +:10B50000000000000000000000000000000000003B
64356 +:10B51000000000000000000000000000000000002B
64357 +:10B52000000000000000000000000000000000001B
64358 +:10B53000000000000000000000000000000000000B
64359 +:10B5400000000000000000000000000000000000FB
64360 +:10B5500000000000000000000000000000000000EB
64361 +:10B5600000000000000000000000000000000000DB
64362 +:10B5700000000000000000000000000000000000CB
64363 +:10B5800000000000000000000000000000000000BB
64364 +:10B5900000000000000000000000000000000000AB
64365 +:10B5A000000000000000000000000000000000009B
64366 +:10B5B000000000000000000000000000000000008B
64367 +:10B5C000000000000000000000000000000000007B
64368 +:10B5D000000000000000000000000000000000006B
64369 +:10B5E000000000000000000000000000000000005B
64370 +:10B5F000000000000000000000000000000000004B
64371 +:10B60000000000000000000000000000000000003A
64372 +:10B61000000000000000000000000000000000002A
64373 +:10B62000000000000000000000000000000000001A
64374 +:10B63000000000000000000000000000000000000A
64375 +:10B6400000000000000000000000000000000000FA
64376 +:10B6500000000000000000000000000000000000EA
64377 +:10B6600000000000000000000000000000000000DA
64378 +:10B6700000000000000000000000000000000000CA
64379 +:10B6800000000000000000000000000000000000BA
64380 +:10B6900000000000000000000000000000000000AA
64381 +:10B6A000000000000000000000000000000000009A
64382 +:10B6B000000000000000000000000000000000008A
64383 +:10B6C000000000000000000000000000000000007A
64384 +:10B6D000000000000000000000000000000000006A
64385 +:10B6E000000000000000000000000000000000005A
64386 +:10B6F000000000000000000000000000000000004A
64387 +:10B700000000000000000000000000000000000039
64388 +:10B710000000000000000000000000000000000029
64389 +:10B720000000000000000000000000000000000019
64390 +:10B730000000000000000000000000000000000009
64391 +:10B7400000000000000000000000000000000000F9
64392 +:10B7500000000000000000000000000000000000E9
64393 +:10B7600000000000000000000000000000000000D9
64394 +:10B7700000000000000000000000000000000000C9
64395 +:10B7800000000000000000000000000000000000B9
64396 +:10B7900000000000000000000000000000000000A9
64397 +:10B7A0000000000000000000000000000000000099
64398 +:10B7B0000000000000000000000000000000000089
64399 +:10B7C0000000000000000000000000000000000079
64400 +:10B7D0000000000000000000000000000000000069
64401 +:10B7E0000000000000000000000000000000000059
64402 +:10B7F0000000000000000000000000000000000049
64403 +:10B800000000000000000000000000000000000038
64404 +:10B810000000000000000000000000000000000028
64405 +:10B820000000000000000000000000000000000018
64406 +:10B830000000000000000000000000000000000008
64407 +:10B8400000000000000000000000000000000000F8
64408 +:10B8500000000000000000000000000000000000E8
64409 +:10B8600000000000000000000000000000000000D8
64410 +:10B8700000000000000000000000000000000000C8
64411 +:10B8800000000000000000000000000000000000B8
64412 +:10B8900000000000000000000000000000000000A8
64413 +:10B8A0000000000000000000000000000000000098
64414 +:10B8B0000000000000000000000000000000000088
64415 +:10B8C0000000000000000000000000000000000078
64416 +:10B8D0000000000000000000000000000000000068
64417 +:10B8E0000000000000000000000000000000000058
64418 +:10B8F0000000000000000000000000000000000048
64419 +:10B900000000000000000000000000000000000037
64420 +:10B910000000000000000000000000000000000027
64421 +:10B920000000000000000000000000000000000017
64422 +:10B930000000000000000000000000000000000007
64423 +:10B9400000000000000000000000000000000000F7
64424 +:10B9500000000000000000000000000000000000E7
64425 +:10B9600000000000000000000000000000000000D7
64426 +:10B9700000000000000000000000000000000000C7
64427 +:10B9800000000000000000000000000000000000B7
64428 +:10B9900000000000000000000000000000000000A7
64429 +:10B9A0000000000000000000000000000000000097
64430 +:10B9B0000000000000000000000000000000000087
64431 +:10B9C0000000000000000000000000000000000077
64432 +:10B9D0000000000000000000000000000000000067
64433 +:10B9E0000000000000000000000000000000000057
64434 +:10B9F0000000000000000000000000000000000047
64435 +:10BA00000000000000000000000000000000000036
64436 +:10BA10000000000000000000000000000000000026
64437 +:10BA20000000000000000000000000000000000016
64438 +:10BA30000000000000000000000000000000000006
64439 +:10BA400000000000000000000000000000000000F6
64440 +:10BA500000000000000000000000000000000000E6
64441 +:10BA600000000000000000000000000000000000D6
64442 +:10BA700000000000000000000000000000000000C6
64443 +:10BA800000000000000000000000000000000000B6
64444 +:10BA900000000000000000000000000000000000A6
64445 +:10BAA0000000000000000000000000000000000096
64446 +:10BAB0000000000000000000000000000000000086
64447 +:10BAC0000000000000000000000000000000000076
64448 +:10BAD0000000000000000000000000000000000066
64449 +:10BAE0000000000000000000000000000000000056
64450 +:10BAF0000000000000000000000000000000000046
64451 +:10BB00000000000000000000000000000000000035
64452 +:10BB10000000000000000000000000000000000025
64453 +:10BB20000000000000000000000000000000000015
64454 +:10BB30000000000000000000000000000000000005
64455 +:10BB400000000000000000000000000000000000F5
64456 +:10BB500000000000000000000000000000000000E5
64457 +:10BB600000000000000000000000000000000000D5
64458 +:10BB700000000000000000000000000000000000C5
64459 +:10BB800000000000000000000000000000000000B5
64460 +:10BB900000000000000000000000000000000000A5
64461 +:10BBA0000000000000000000000000000000000095
64462 +:10BBB0000000000000000000000000000000000085
64463 +:10BBC0000000000000000000000000000000000075
64464 +:10BBD0000000000000000000000000000000000065
64465 +:10BBE0000000000000000000000000000000000055
64466 +:10BBF0000000000000000000000000000000000045
64467 +:10BC00000000000000000000000000000000000034
64468 +:10BC10000000000000000000000000000000000024
64469 +:10BC20000000000000000000000000000000000014
64470 +:10BC30000000000000000000000000000000000004
64471 +:10BC400000000000000000000000000000000000F4
64472 +:10BC500000000000000000000000000000000000E4
64473 +:10BC600000000000000000000000000000000000D4
64474 +:10BC700000000000000000000000000000000000C4
64475 +:10BC800000000000000000000000000000000000B4
64476 +:10BC900000000000000000000000000000000000A4
64477 +:10BCA0000000000000000000000000000000000094
64478 +:10BCB0000000000000000000000000000000000084
64479 +:10BCC0000000000000000000000000000000000074
64480 +:10BCD0000000000000000000000000000000000064
64481 +:10BCE0000000000000000000000000000000000054
64482 +:10BCF0000000000000000000000000000000000044
64483 +:10BD00000000000000000000000000000000000033
64484 +:10BD10000000000000000000000000000000000023
64485 +:10BD20000000000000000000000000000000000013
64486 +:10BD30000000000000000000000000000000000003
64487 +:10BD400000000000000000000000000000000000F3
64488 +:10BD500000000000000000000000000000000000E3
64489 +:10BD600000000000000000000000000000000000D3
64490 +:10BD700000000000000000000000000000000000C3
64491 +:10BD800000000000000000000000000000000000B3
64492 +:10BD900000000000000000000000000000000000A3
64493 +:10BDA0000000000000000000000000000000000093
64494 +:10BDB0000000000000000000000000000000000083
64495 +:10BDC0000000000000000000000000000000000073
64496 +:10BDD0000000000000000000000000000000000063
64497 +:10BDE0000000000000000000000000000000000053
64498 +:10BDF0000000000000000000000000000000000043
64499 +:10BE00000000000000000000000000000000000032
64500 +:10BE10000000000000000000000000000000000022
64501 +:10BE20000000000000000000000000000000000012
64502 +:10BE30000000000000000000000000000000000002
64503 +:10BE400000000000000000000000000000000000F2
64504 +:10BE500000000000000000000000000000000000E2
64505 +:10BE600000000000000000000000000000000000D2
64506 +:10BE700000000000000000000000000000000000C2
64507 +:10BE800000000000000000000000000000000000B2
64508 +:10BE900000000000000000000000000000000000A2
64509 +:10BEA0000000000000000000000000000000000092
64510 +:10BEB0000000000000000000000000000000000082
64511 +:10BEC0000000000000000000000000000000000072
64512 +:10BED0000000000000000000000000000000000062
64513 +:10BEE0000000000000000000000000000000000052
64514 +:10BEF0000000000000000000000000000000000042
64515 +:10BF00000000000000000000000000000000000031
64516 +:10BF10000000000000000000000000000000000021
64517 +:10BF20000000000000000000000000000000000011
64518 +:10BF30000000000000000000000000000000000001
64519 +:10BF400000000000000000000000000000000000F1
64520 +:10BF500000000000000000000000000000000000E1
64521 +:10BF600000000000000000000000000000000000D1
64522 +:10BF700000000000000000000000000000000000C1
64523 +:10BF800000000000000000000000000000000000B1
64524 +:10BF900000000000000000000000000000000000A1
64525 +:10BFA0000000000000000000000000000000000091
64526 +:10BFB0000000000000000000000000000000000081
64527 +:10BFC0000000000000000000000000000000000071
64528 +:10BFD0000000000000000000000000000000000061
64529 +:10BFE0000000000000000000000000000000000051
64530 +:10BFF0000000000000000000000000000000000041
64531 +:10C000000000000000000000000000000000000030
64532 +:10C010000000000000000000000000000000000020
64533 +:10C020000000000000000000000000000000000010
64534 +:10C030000000000000000000000000000000000000
64535 +:10C0400000000000000000000000000000000000F0
64536 +:10C0500000000000000000000000000000000000E0
64537 +:10C0600000000000000000000000000000000000D0
64538 +:10C0700000000000000000000000000000000000C0
64539 +:10C0800000000000000000000000000000000000B0
64540 +:10C0900000000000000000000000000000000000A0
64541 +:10C0A0000000000000000000000000000000000090
64542 +:10C0B0000000000000000000000000000000000080
64543 +:10C0C0000000000000000000000000000000000070
64544 +:10C0D0000000000000000000000000000000000060
64545 +:10C0E0000000000000000000000000000000000050
64546 +:10C0F0000000000000000000000000000000000040
64547 +:10C10000000000000000000000000000000000002F
64548 +:10C11000000000000000000000000000000000001F
64549 +:10C12000000000000000000000000000000000000F
64550 +:10C1300000000000000000000000000000000000FF
64551 +:10C1400000000000000000000000000000000000EF
64552 +:10C1500000000000000000000000000000000000DF
64553 +:10C1600000000000000000000000000000000000CF
64554 +:10C1700000000000000000000000000000000000BF
64555 +:10C1800000000000000000000000000000000000AF
64556 +:10C19000000000000000000000000000000000009F
64557 +:10C1A000000000000000000000000000000000008F
64558 +:10C1B000000000000000000000000000000000007F
64559 +:10C1C000000000000000000000000000000000006F
64560 +:10C1D000000000000000000000000000000000005F
64561 +:10C1E000000000000000000000000000000000004F
64562 +:10C1F000000000000000000000000000000000003F
64563 +:10C20000000000000000000000000000000000002E
64564 +:10C21000000000000000000000000000000000001E
64565 +:10C22000000000000000000000000000000000000E
64566 +:10C2300000000000000000000000000000000000FE
64567 +:10C2400000000000000000000000000000000000EE
64568 +:10C2500000000000000000000000000000000000DE
64569 +:10C2600000000000000000000000000000000000CE
64570 +:10C2700000000000000000000000000000000000BE
64571 +:10C2800000000000000000000000000000000000AE
64572 +:10C29000000000000000000000000000000000009E
64573 +:10C2A000000000000000000000000000000000008E
64574 +:10C2B000000000000000000000000000000000007E
64575 +:10C2C000000000000000000000000000000000006E
64576 +:10C2D000000000000000000000000000000000005E
64577 +:10C2E000000000000000000000000000000000004E
64578 +:10C2F000000000000000000000000000000000003E
64579 +:10C30000000000000000000000000000000000002D
64580 +:10C31000000000000000000000000000000000001D
64581 +:10C32000000000000000000000000000000000000D
64582 +:10C3300000000000000000000000000000000000FD
64583 +:10C3400000000000000000000000000000000000ED
64584 +:10C3500000000000000000000000000000000000DD
64585 +:10C3600000000000000000000000000000000000CD
64586 +:10C3700000000000000000000000000000000000BD
64587 +:10C3800000000000000000000000000000000000AD
64588 +:10C39000000000000000000000000000000000009D
64589 +:10C3A000000000000000000000000000000000008D
64590 +:10C3B000000000000000000000000000000000007D
64591 +:10C3C000000000000000000000000000000000006D
64592 +:10C3D000000000000000000000000000000000005D
64593 +:10C3E000000000000000000000000000000000004D
64594 +:10C3F000000000000000000000000000000000003D
64595 +:10C40000000000000000000000000000000000002C
64596 +:10C41000000000000000000000000000000000001C
64597 +:10C42000000000000000000000000000000000000C
64598 +:10C4300000000000000000000000000000000000FC
64599 +:10C4400000000000000000000000000000000000EC
64600 +:10C4500000000000000000000000000000000000DC
64601 +:10C4600000000000000000000000000000000000CC
64602 +:10C4700000000000000000000000000000000000BC
64603 +:10C4800000000000000000000000000000000000AC
64604 +:10C49000000000000000000000000000000000009C
64605 +:10C4A000000000000000000000000000000000008C
64606 +:10C4B000000000000000000000000000000000007C
64607 +:10C4C000000000000000000000000000000000006C
64608 +:10C4D000000000000000000000000000000000005C
64609 +:10C4E000000000000000000000000000000000004C
64610 +:10C4F000000000000000000000000000000000003C
64611 +:10C50000000000000000000000000000000000002B
64612 +:10C51000000000000000000000000000000000001B
64613 +:10C52000000000000000000000000000000000000B
64614 +:10C5300000000000000000000000000000000000FB
64615 +:10C5400000000000000000000000000000000000EB
64616 +:10C5500000000000000000000000000000000000DB
64617 +:10C5600000000000000000000000000000000000CB
64618 +:10C5700000000000000000000000000000000000BB
64619 +:10C5800000000000000000000000000000000000AB
64620 +:10C59000000000000000000000000000000000009B
64621 +:10C5A000000000000000000000000000000000008B
64622 +:10C5B000000000000000000000000000000000007B
64623 +:10C5C000000000000000000000000000000000006B
64624 +:10C5D000000000000000000000000000000000005B
64625 +:10C5E000000000000000000000000000000000004B
64626 +:10C5F000000000000000000000000000000000003B
64627 +:10C60000000000000000000000000000000000002A
64628 +:10C61000000000000000000000000000000000001A
64629 +:10C62000000000000000000000000000000000000A
64630 +:10C6300000000000000000000000000000000000FA
64631 +:10C6400000000000000000000000000000000000EA
64632 +:10C6500000000000000000000000000000000000DA
64633 +:10C6600000000000000000000000000000000000CA
64634 +:10C6700000000000000000000000000000000000BA
64635 +:10C6800000000000000000000000000000000000AA
64636 +:10C69000000000000000000000000000000000009A
64637 +:10C6A000000000000000000000000000000000008A
64638 +:10C6B000000000000000000000000000000000007A
64639 +:10C6C000000000000000000000000000000000006A
64640 +:10C6D000000000000000000000000000000000005A
64641 +:10C6E000000000000000000000000000000000004A
64642 +:10C6F000000000000000000000000000000000003A
64643 +:10C700000000000000000000000000000000000029
64644 +:10C710000000000000000000000000000000000019
64645 +:10C720000000000000000000000000000000000009
64646 +:10C7300000000000000000000000000000000000F9
64647 +:10C7400000000000000000000000000000000000E9
64648 +:10C7500000000000000000000000000000000000D9
64649 +:10C7600000000000000000000000000000000000C9
64650 +:10C7700000000000000000000000000000000000B9
64651 +:10C7800000000000000000000000000000000000A9
64652 +:10C790000000000000000000000000000000000099
64653 +:10C7A0000000000000000000000000000000000089
64654 +:10C7B0000000000000000000000000000000000079
64655 +:10C7C0000000000000000000000000000000000069
64656 +:10C7D0000000000000000000000000000000000059
64657 +:10C7E0000000000000000000000000000000000049
64658 +:10C7F0000000000000000000000000000000000039
64659 +:10C800000000000000000000000000000000000028
64660 +:10C810000000000000000000000000000000000018
64661 +:10C820000000000000000000000000000000000008
64662 +:10C8300000000000000000000000000000000000F8
64663 +:10C8400000000000000000000000000000000000E8
64664 +:10C8500000000000000000000000000000000000D8
64665 +:10C8600000000000000000000000000000000000C8
64666 +:10C8700000000000000000000000000000000000B8
64667 +:10C8800000000000000000000000000000000000A8
64668 +:10C890000000000000000000000000000000000098
64669 +:10C8A0000000000000000000000000000000000088
64670 +:10C8B0000000000000000000000000000000000078
64671 +:10C8C0000000000000000000000000000000000068
64672 +:10C8D0000000000000000000000000000000000058
64673 +:10C8E0000000000000000000000000000000000048
64674 +:10C8F0000000000000000000000000000000000038
64675 +:10C900000000000000000000000000000000000027
64676 +:10C910000000000000000000000000000000000017
64677 +:10C920000000000000000000000000000000000007
64678 +:10C9300000000000000000000000000000000000F7
64679 +:10C9400000000000000000000000000000000000E7
64680 +:10C9500000000000000000000000000000000000D7
64681 +:10C9600000000000000000000000000000000000C7
64682 +:10C9700000000000000000000000000000000000B7
64683 +:10C9800000000000000000000000000000000000A7
64684 +:10C990000000000000000000000000000000000097
64685 +:10C9A0000000000000000000000000000000000087
64686 +:10C9B0000000000000000000000000000000000077
64687 +:10C9C0000000000000000000000000000000000067
64688 +:10C9D0000000000000000000000000000000000057
64689 +:10C9E0000000000000000000000000000000000047
64690 +:10C9F0000000000000000000000000000000000037
64691 +:10CA00000000000000000000000000000000000026
64692 +:10CA10000000000000000000000000000000000016
64693 +:10CA20000000000000000000000000000000000006
64694 +:10CA300000000000000000000000000000000000F6
64695 +:10CA400000000000000000000000000000000000E6
64696 +:10CA500000000000000000000000000000000000D6
64697 +:10CA600000000000000000000000000000000000C6
64698 +:10CA700000000000000000000000000000000000B6
64699 +:10CA800000000000000000000000000000000000A6
64700 +:10CA90000000000000000000000000000000000096
64701 +:10CAA0000000000000000000000000000000000086
64702 +:10CAB0000000000000000000000000000000000076
64703 +:10CAC0000000000000000000000000000000000066
64704 +:10CAD0000000000000000000000000000000000056
64705 +:10CAE0000000000000000000000000000000000046
64706 +:10CAF0000000000000000000000000000000000036
64707 +:10CB00000000000000000000000000000000000025
64708 +:10CB10000000000000000000000000000000000015
64709 +:10CB20000000000000000000000000000000000005
64710 +:10CB300000000000000000000000000000000000F5
64711 +:10CB400000000000000000000000000000000000E5
64712 +:10CB500000000000000000000000000000000000D5
64713 +:10CB600000000000000000000000000000000000C5
64714 +:10CB700000000000000000000000000000000000B5
64715 +:10CB800000000000000000000000000000000000A5
64716 +:10CB90000000000000000000000000000000000095
64717 +:10CBA0000000000000000000000000000000000085
64718 +:10CBB0000000000000000000000000000000000075
64719 +:10CBC0000000000000000000000000000000000065
64720 +:10CBD0000000000000000000000000000000000055
64721 +:10CBE0000000000000000000000000000000000045
64722 +:10CBF0000000000000000000000000000000000035
64723 +:10CC00000000000000000000000000000000000024
64724 +:10CC10000000000000000000000000000000000014
64725 +:10CC20000000000000000000000000000000000004
64726 +:10CC300000000000000000000000000000000000F4
64727 +:10CC400000000000000000000000000000000000E4
64728 +:10CC500000000000000000000000000000000000D4
64729 +:10CC600000000000000000000000000000000000C4
64730 +:10CC700000000000000000000000000000000000B4
64731 +:10CC800000000000000000000000000000000000A4
64732 +:10CC90000000000000000000000000000000000094
64733 +:10CCA0000000000000000000000000000000000084
64734 +:10CCB0000000000000000000000000000000000074
64735 +:10CCC0000000000000000000000000000000000064
64736 +:10CCD0000000000000000000000000000000000054
64737 +:10CCE0000000000000000000000000000000000044
64738 +:10CCF0000000000000000000000000000000000034
64739 +:10CD00000000000000000000000000000000000023
64740 +:10CD10000000000000000000000000000000000013
64741 +:10CD20000000000000000000000000000000000003
64742 +:10CD300000000000000000000000000000000000F3
64743 +:10CD400000000000000000000000000000000000E3
64744 +:10CD500000000000000000000000000000000000D3
64745 +:10CD600000000000000000000000000000000000C3
64746 +:10CD700000000000000000000000000000000000B3
64747 +:10CD800000000000000000000000000000000000A3
64748 +:10CD90000000000000000000000000000000000093
64749 +:10CDA0000000000000000000000000000000000083
64750 +:10CDB0000000000000000000000000000000000073
64751 +:10CDC0000000000000000000000000000000000063
64752 +:10CDD0000000000000000000000000000000000053
64753 +:10CDE0000000000000000000000000000000000043
64754 +:10CDF0000000000000000000000000000000000033
64755 +:10CE00000000000000000000000000000000000022
64756 +:10CE10000000000000000000000000000000000012
64757 +:10CE20000000000000000000000000000000000002
64758 +:10CE300000000000000000000000000000000000F2
64759 +:10CE400000000000000000000000000000000000E2
64760 +:10CE500000000000000000000000000000000000D2
64761 +:10CE600000000000000000000000000000000000C2
64762 +:10CE700000000000000000000000000000000000B2
64763 +:10CE800000000000000000000000000000000000A2
64764 +:10CE90000000000000000000000000000000000092
64765 +:10CEA0000000000000000000000000000000000082
64766 +:10CEB0000000000000000000000000000000000072
64767 +:10CEC0000000000000000000000000000000000062
64768 +:10CED0000000000000000000000000000000000052
64769 +:10CEE0000000000000000000000000000000000042
64770 +:10CEF0000000000000000000000000000000000032
64771 +:10CF00000000000000000000000000000000000021
64772 +:10CF10000000000000000000000000000000000011
64773 +:10CF20000000000000000000000000000000000001
64774 +:10CF300000000000000000000000000000000000F1
64775 +:10CF400000000000000000000000000000000000E1
64776 +:10CF500000000000000000000000000000000000D1
64777 +:10CF600000000000000000000000000000000000C1
64778 +:10CF700000000000000000000000000000000000B1
64779 +:10CF800000000000000000000000000000000000A1
64780 +:10CF90000000000000000000000000000000000091
64781 +:10CFA0000000000000000000000000000000000081
64782 +:10CFB0000000000000000000000000000000000071
64783 +:10CFC0000000000000000000000000000000000061
64784 +:10CFD0000000000000000000000000000000000051
64785 +:10CFE0000000000000000000000000000000000041
64786 +:10CFF0000000000000000000000000000000000031
64787 +:10D000000000000000000000000000000000000020
64788 +:10D010000000000000000000000000000000000010
64789 +:10D020000000000000000000000000000000000000
64790 +:10D0300000000000000000000000000000000000F0
64791 +:10D0400000000000000000000000000000000000E0
64792 +:10D0500000000000000000000000000000000000D0
64793 +:10D0600000000000000000000000000000000000C0
64794 +:10D0700000000000000000000000000000000000B0
64795 +:10D0800000000000000000000000000000000000A0
64796 +:10D090000000000000000000000000000000000090
64797 +:10D0A0000000000000000000000000000000000080
64798 +:10D0B0000000000000000000000000000000000070
64799 +:10D0C0000000000000000000000000000000000060
64800 +:10D0D0000000000000000000000000000000000050
64801 +:10D0E0000000000000000000000000000000000040
64802 +:10D0F0000000000000000000000000000000000030
64803 +:10D10000000000000000000000000000000000001F
64804 +:10D11000000000000000000000000000000000000F
64805 +:10D1200000000000000000000000000000000000FF
64806 +:10D1300000000000000000000000000000000000EF
64807 +:10D1400000000000000000000000000000000000DF
64808 +:10D1500000000000000000000000000000000000CF
64809 +:10D1600000000000000000000000000000000000BF
64810 +:10D1700000000000000000000000000000000000AF
64811 +:10D18000000000000000000000000000000000009F
64812 +:10D19000000000000000000000000000000000008F
64813 +:10D1A000000000000000000000000000000000007F
64814 +:10D1B000000000000000000000000000000000006F
64815 +:10D1C000000000000000000000000000000000005F
64816 +:10D1D000000000000000000000000000000000004F
64817 +:10D1E000000000000000000000000000000000003F
64818 +:10D1F000000000000000000000000000000000002F
64819 +:10D20000000000000000000000000000000000001E
64820 +:10D21000000000000000000000000000000000000E
64821 +:10D2200000000000000000000000000000000000FE
64822 +:10D2300000000000000000000000000000000000EE
64823 +:10D2400000000000000000000000000000000000DE
64824 +:10D2500000000000000000000000000000000000CE
64825 +:10D2600000000000000000000000000000000000BE
64826 +:10D2700000000000000000000000000000000000AE
64827 +:10D28000000000000000000000000000000000009E
64828 +:10D29000000000000000000000000000000000008E
64829 +:10D2A000000000000000000000000000000000007E
64830 +:10D2B000000000000000000000000000000000006E
64831 +:10D2C000000000000000000000000000000000005E
64832 +:10D2D000000000000000000000000000000000004E
64833 +:10D2E000000000000000000000000000000000003E
64834 +:10D2F000000000000000000000000000000000002E
64835 +:10D30000000000000000000000000000000000001D
64836 +:10D31000000000000000000000000000000000000D
64837 +:10D3200000000000000000000000000000000000FD
64838 +:10D3300000000000000000000000000000000000ED
64839 +:10D3400000000000000000000000000000000000DD
64840 +:10D3500000000000000000000000000000000000CD
64841 +:10D3600000000000000000000000000000000000BD
64842 +:10D3700000000000000000000000000000000000AD
64843 +:10D38000000000000000000000000000000000009D
64844 +:10D39000000000000000000000000000000000008D
64845 +:10D3A000000000000000000000000000000000007D
64846 +:10D3B000000000000000000000000000000000006D
64847 +:10D3C000000000000000000000000000000000005D
64848 +:10D3D000000000000000000000000000000000004D
64849 +:10D3E000000000000000000000000000000000003D
64850 +:10D3F000000000000000000000000000000000002D
64851 +:10D40000000000000000000000000000000000001C
64852 +:10D41000000000000000000000000000000000000C
64853 +:10D4200000000000000000000000000000000000FC
64854 +:10D4300000000000000000000000000000000000EC
64855 +:10D4400000000000000000000000000000000000DC
64856 +:10D4500000000000000000000000000000000000CC
64857 +:10D4600000000000000000000000000000000000BC
64858 +:10D4700000000000000000000000000000000000AC
64859 +:10D48000000000000000000000000000000000009C
64860 +:10D49000000000000000000000000000000000008C
64861 +:10D4A000000000000000000000000000000000007C
64862 +:10D4B000000000000000000000000000000000006C
64863 +:10D4C000000000000000000000000000000000005C
64864 +:10D4D000000000000000000000000000000000004C
64865 +:10D4E000000000000000000000000000000000003C
64866 +:10D4F000000000000000000000000000000000002C
64867 +:10D50000000000000000000000000000000000001B
64868 +:10D51000000000000000000000000000000000000B
64869 +:10D5200000000000000000000000000000000000FB
64870 +:10D5300000000000000000000000000000000000EB
64871 +:10D5400000000000000000000000000000000000DB
64872 +:10D5500000000000000000000000000000000000CB
64873 +:10D5600000000000000000000000000000000000BB
64874 +:10D5700000000000000000000000000000000000AB
64875 +:10D58000000000000000000000000000000000009B
64876 +:10D59000000000000000008000000000000000000B
64877 +:10D5A000000000000000000000000000000000007B
64878 +:10D5B00000000000000000000000000A0000000061
64879 +:10D5C0000000000000000000100000030000000048
64880 +:10D5D0000000000D0000000D3C02080024427340D2
64881 +:10D5E0003C030800246377CCAC4000000043202BB0
64882 +:10D5F0001480FFFD244200043C1D080037BD7FFC61
64883 +:10D6000003A0F0213C100800261032103C1C08003A
64884 +:10D61000279C73400E0010FE000000000000000D6B
64885 +:10D6200030A5FFFF30C600FF274301808F4201B8BD
64886 +:10D630000440FFFE24020002AC640000A465000860
64887 +:10D64000A066000AA062000B3C021000AC67001844
64888 +:10D6500003E00008AF4201B83C0360008C624FF861
64889 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9
64890 +:10D670003C02100003E00008AC624FF89482000CFA
64891 +:10D680002486001400A0382100021302000210803A
64892 +:10D690000082402100C8102B1040005700000000FD
64893 +:10D6A00090C300002C6200095040005190C200015C
64894 +:10D6B000000310803C030800246372F00043102133
64895 +:10D6C0008C420000004000080000000090C30001F0
64896 +:10D6D0002402000A1462003A000000000106102330
64897 +:10D6E0002C42000A1440003624C600028CE20000DE
64898 +:10D6F00034420100ACE2000090C2000090C300017F
64899 +:10D7000090C4000290C5000300031C000002160034
64900 +:10D710000043102500042200004410250045102578
64901 +:10D7200024C60004ACE2000490C2000090C30001D3
64902 +:10D7300090C4000290C500030002160000031C0004
64903 +:10D740000043102500042200004410250045102548
64904 +:10D7500024C600040A000CB8ACE2000890C3000123
64905 +:10D76000240200041462001624C6000290C20000C5
64906 +:10D7700090C400018CE30000000212000044102558
64907 +:10D780003463000424C60002ACE2000C0A000CB8AA
64908 +:10D79000ACE3000090C300012402000314620008FF
64909 +:10D7A00024C600028CE2000090C3000024C60001E1
64910 +:10D7B00034420008A0E300100A000CB8ACE20000FC
64911 +:10D7C00003E000082402000190C3000124020002CB
64912 +:10D7D0001062000224C40002010020210A000CB8DB
64913 +:10D7E000008030210A000CB824C6000190C200015C
64914 +:10D7F0000A000CB800C2302103E00008000010212C
64915 +:10D8000027BDFFE8AFBF0014AFB000100E00130239
64916 +:10D8100000808021936200052403FFFE0200202186
64917 +:10D82000004310248FBF00148FB00010A3620005C6
64918 +:10D830000A00130B27BD001827BDFFE8AFB000108A
64919 +:10D84000AFBF00140E000F3C0080802193620000E7
64920 +:10D8500024030050304200FF14430004240201005E
64921 +:10D86000AF4201800A000D3002002021AF4001804C
64922 +:10D87000020020218FBF00148FB000100A000FE7B4
64923 +:10D8800027BD001827BDFF80AFBE0078AFB700747A
64924 +:10D89000AFB20060AFBF007CAFB60070AFB5006C38
64925 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874
64926 +:10D8B0008F5001283C0208008C4231A02403FF80D5
64927 +:10D8C0009365003F0202102100431024AF42002460
64928 +:10D8D0003C0208008C4231A09364000530B200FF86
64929 +:10D8E000020210213042007F034218210004202749
64930 +:10D8F0003C02000A0062182130840001AF8300144A
64931 +:10D900000000F0210000B82114800053AFA00050A7
64932 +:10D9100093430116934401128F450104306300FFC5
64933 +:10D920003C020001308400FF00A2282403431021A0
64934 +:10D9300003441821245640002467400014A001CD60
64935 +:10D940002402000193620000304300FF2402002003
64936 +:10D950001062000524020050106200060000000062
64937 +:10D960000A000D74000000000000000D0A000D7D8B
64938 +:10D97000AFA000303C1E080027DE738C0A000D7D2E
64939 +:10D98000AFA000303C0208008C4200DC24420001C1
64940 +:10D990003C010800AC2200DC0E00139F00000000D8
64941 +:10D9A0000A000F318FBF007C8F4201043C0300202E
64942 +:10D9B00092D3000D004310240002202B00042140CC
64943 +:10D9C000AFA400308F4301043C02004000621824E1
64944 +:10D9D000146000023485004000802821326200205B
64945 +:10D9E000AFA500301440000234A6008000A0302112
64946 +:10D9F00010C0000BAFA6003093C500088F67004C25
64947 +:10DA00000200202100052B0034A5008130A5F08103
64948 +:10DA10000E000C9B30C600FF0A000F2E0000000015
64949 +:10DA20009362003E304200401040000F2402000488
64950 +:10DA300056420007240200120200202100E02821A3
64951 +:10DA40000E0013F702C030210A000F318FBF007C97
64952 +:10DA500016420005000000000E000D2100002021EC
64953 +:10DA60000A000F318FBF007C9743011A96C4000E45
64954 +:10DA700093620035326500043075FFFF00442004D6
64955 +:10DA8000AFA400548ED1000410A000158ED400085D
64956 +:10DA90009362003E3042004010400007000000004A
64957 +:10DAA0000E0013E0022020211040000D00000000B5
64958 +:10DAB0000A000F2E000000008F6200440222102393
64959 +:10DAC0000440016A000000008F6200480222102317
64960 +:10DAD00004410166240400160A000E218FC20004CE
64961 +:10DAE0008F6200480222102304400008000000005A
64962 +:10DAF0003C0208008C423100244200013C01080035
64963 +:10DB0000AC2231000A000F23000000008F620040A9
64964 +:10DB100002221023184000128F8400143C020800D7
64965 +:10DB20008C423100327300FC0000A8212442000125
64966 +:10DB30003C010800AC2231008F6300409482011C3C
64967 +:10DB4000022318233042FFFF0043102A50400010E8
64968 +:10DB50002402000C8F6200400A000DF20222102302
64969 +:10DB60009483011C9762003C0043102B1040000678
64970 +:10DB7000000000009482011C00551023A482011CA7
64971 +:10DB80000A000DF72402000CA480011C2402000CE2
64972 +:10DB9000AFA200308F620040005120231880000D9A
64973 +:10DBA00002A4102A1440012600000000149500066B
64974 +:10DBB00002A410233A620001304200011440012007
64975 +:10DBC0000000000002A41023022488210A000E098C
64976 +:10DBD0003055FFFF00002021326200021040001A81
64977 +:10DBE000326200109362003E30420040504000110B
64978 +:10DBF0008FC200040E00130202002021240200182C
64979 +:10DC0000A362003F936200052403FFFE020020216F
64980 +:10DC1000004310240E00130BA362000524040039F6
64981 +:10DC2000000028210E0013C9240600180A000F3036
64982 +:10DC300024020001240400170040F809000000003D
64983 +:10DC40000A000F302402000110400108000000000B
64984 +:10DC50008F63004C8F620054028210231C4001032A
64985 +:10DC600002831023044200010060A021AFA4001829
64986 +:10DC7000AFB10010AFB50014934201208F65004092
64987 +:10DC80009763003C304200FF034210210044102102
64988 +:10DC90008FA400543063FFFF244240000083182B00
64989 +:10DCA0008FA40030AFA20020AFA50028008320255C
64990 +:10DCB000AFA40030AFA50024AFA0002CAFB4003457
64991 +:10DCC0009362003E30420008504000118FC20000B5
64992 +:10DCD00002C0202127A500380E000CB2AFA00038EA
64993 +:10DCE0005440000B8FC200008FA200383042010068
64994 +:10DCF000504000078FC200008FA3003C8F6200607D
64995 +:10DD00000062102304430001AF6300608FC2000073
64996 +:10DD10000040F80927A400108FA200303042000212
64997 +:10DD200054400001327300FE9362003E30420040D6
64998 +:10DD3000104000378FA200248F6200541682001A10
64999 +:10DD40003262000124020014124200102A4200151F
65000 +:10DD500010400006240200162402000C12420007A4
65001 +:10DD6000326200010A000E7D000000001242000530
65002 +:10DD7000326200010A000E7D000000000A000E78E9
65003 +:10DD80002417000E0A000E78241700100A000E7CDB
65004 +:10DD900024170012936200232403FFBD00431024C4
65005 +:10DDA000A362002332620001104000198FA20024F8
65006 +:10DDB0002402000C1242000E2A42000D1040000600
65007 +:10DDC0002402000E2402000A124200078FA200243F
65008 +:10DDD0000A000E9524420001124200088FA200247E
65009 +:10DDE0000A000E95244200010A000E932417000831
65010 +:10DDF0002402000E16E20002241700162417001059
65011 +:10DE00008FA2002424420001AFA200248FA200248C
65012 +:10DE10008FA300148F76004000431021AF620040B2
65013 +:10DE20008F8200149442011C104000090000000081
65014 +:10DE30008F6200488F6400409763003C00441023C9
65015 +:10DE40003063FFFF0043102A104000088FA20054E7
65016 +:10DE5000936400368F6300403402FFFC008210049C
65017 +:10DE600000621821AF6300488FA200548FA60030D3
65018 +:10DE70000282902130C200081040000E0000000015
65019 +:10DE80008F6200581642000430C600FF9742011A04
65020 +:10DE90005040000134C6001093C500088FA700341D
65021 +:10DEA0000200202100052B0034A500800E000C9BF1
65022 +:10DEB00030A5F0808F620040005610231840001BF0
65023 +:10DEC0008FA200183C0208008C42319830420010AA
65024 +:10DED0001040000D24020001976200681440000AFF
65025 +:10DEE000240200018F8200149442011C1440000699
65026 +:10DEF00024020001A76200689742007A244200646D
65027 +:10DF00000A000EE9A7620012A76200120E001302B7
65028 +:10DF1000020020219362007D2403000102002021E1
65029 +:10DF2000344200010A000EE7AFA300501840000A77
65030 +:10DF3000000000000E001302020020219362007D09
65031 +:10DF40002403000102002021AFA30050344200044A
65032 +:10DF50000E00130BA362007D9362003E304200402E
65033 +:10DF60001440000C326200011040000A0000000062
65034 +:10DF70008F6300408FC20004240400182463000152
65035 +:10DF80000040F809AF6300408FA200300A000F3054
65036 +:10DF9000304200048F620058105200100000000050
65037 +:10DFA0008F620018022210231C4000082404000184
65038 +:10DFB0008F62001816220009000000008F62001C0A
65039 +:10DFC000028210230440000500000000AF720058D8
65040 +:10DFD000AFA40050AF710018AF74001C12E0000B2A
65041 +:10DFE0008FA200500E00130202002021A377003FF1
65042 +:10DFF0000E00130B0200202102E030212404003720
65043 +:10E000000E0013C9000028218FA200501040000309
65044 +:10E01000000000000E000CA90200202112A0000543
65045 +:10E02000000018218FA2003030420004504000113F
65046 +:10E0300000601021240300010A000F30006010214D
65047 +:10E040000E001302020020219362007D02002021B5
65048 +:10E05000344200040E00130BA362007D0E000CA9D5
65049 +:10E06000020020210A000F3024020001AF400044CA
65050 +:10E07000240200018FBF007C8FBE00788FB7007430
65051 +:10E080008FB600708FB5006C8FB400688FB30064DA
65052 +:10E090008FB200608FB1005C8FB0005803E00008C1
65053 +:10E0A00027BD00808F4201B80440FFFE2402080013
65054 +:10E0B000AF4201B803E00008000000003C02000885
65055 +:10E0C00003421021944200483084FFFF2484001250
65056 +:10E0D0003045FFFF10A0001700A4102B10400016C1
65057 +:10E0E00024020003934201202403001AA343018B5E
65058 +:10E0F000304200FF2446FFFE8F82000000A6182B4E
65059 +:10E100003863000100021382004310241040000510
65060 +:10E110008F84000434820001A746019403E00008C4
65061 +:10E12000AF8200042402FFFE0082102403E00008F6
65062 +:10E13000AF8200042402000303E00008A342018B25
65063 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3
65064 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17
65065 +:10E1600000000000AF440180AF4400200E000F42C9
65066 +:10E17000020020218F8300008F840004A750019AA1
65067 +:10E18000A750018EA74301908F8300083082800042
65068 +:10E19000AF4301A8A75101881040000E8F820004F0
65069 +:10E1A00093420116304200FC24420004005A102120
65070 +:10E1B0008C4240003042FFFF144000068F82000472
65071 +:10E1C0003C02FFFF34427FFF00821024AF82000434
65072 +:10E1D0008F8200042403BFFF00431024A74201A63E
65073 +:10E1E0009743010C8F42010400031C003042FFFFE3
65074 +:10E1F00000621825AF4301AC3C021000AF4201B8E9
65075 +:10E200008FBF00188FB100148FB0001003E000081A
65076 +:10E2100027BD00208F470070934201128F830000BA
65077 +:10E2200027BDFFF0304200FF00022882306201006B
65078 +:10E23000000030211040004324A40003306240005D
65079 +:10E24000104000103062200000041080005A10219D
65080 +:10E250008C43400024A4000400041080AFA30000FD
65081 +:10E26000005A10218C424000AFA2000493420116D4
65082 +:10E27000304200FC005A10218C4240000A000FC0BE
65083 +:10E28000AFA200081040002F0000302100041080D1
65084 +:10E29000005A10218C43400024A400040004108084
65085 +:10E2A000AFA30000005A10218C424000AFA000082C
65086 +:10E2B000AFA200048FA80008000030210000202138
65087 +:10E2C000240A00083C0908002529010003A41021A4
65088 +:10E2D000148A000300042A001100000A0000000054
65089 +:10E2E00090420000248400012C83000C00A2102125
65090 +:10E2F00000021080004910218C4200001460FFF3DE
65091 +:10E3000000C230263C0408008C8431048F42007027
65092 +:10E310002C83002010600009004738233C030800CC
65093 +:10E32000246331080004108000431021248300017D
65094 +:10E33000AC4700003C010800AC233104AF86000864
65095 +:10E340002406000100C0102103E0000827BD0010D2
65096 +:10E350003C0208008C42003827BDFFD0AFB5002436
65097 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2
65098 +:10E37000AFB20018AFB00010000088213C150800B3
65099 +:10E3800026B50038144000022454FFFF0000A021ED
65100 +:10E390009742010E8F8400003042FFFF308340001F
65101 +:10E3A0001060000A245200043C0200200082102465
65102 +:10E3B00050400007308280008F8200042403BFFF9A
65103 +:10E3C000008318240A0010103442100030828000AC
65104 +:10E3D0001040000A3C020020008210241040000778
65105 +:10E3E0008F8200043C03FFFF34637FFF0083182407
65106 +:10E3F00034428000AF820004AF8300000E000F980B
65107 +:10E400000000000014400007000000009743011EB8
65108 +:10E410009742011C3063FFFF0002140000621825C0
65109 +:10E42000AF8300089742010C8F4340003045FFFF47
65110 +:10E430003402FFFF14620003000000000A001028ED
65111 +:10E44000241100208F42400030420100544000015E
65112 +:10E45000241100108F8400003082100050400014FE
65113 +:10E4600036310001308200201440000B3C021000C5
65114 +:10E47000008210245040000E363100013C030E0093
65115 +:10E480003C020DFF008318243442FFFF0043102B91
65116 +:10E4900050400007363100013C0208008C42002C3D
65117 +:10E4A000244200013C010800AC22002C363100055A
65118 +:10E4B0003C0608008CC6003454C000238F85000041
65119 +:10E4C0008F820004304240005440001F8F850000BE
65120 +:10E4D0003C021F01008210243C0310005443001A28
65121 +:10E4E0008F85000030A20200144000178F850000C5
65122 +:10E4F0003250FFFF363100028F4201B80440FFFE68
65123 +:10E5000000000000AF400180020020210E000F42F9
65124 +:10E51000AF4000208F8300042402BFFFA750019A60
65125 +:10E52000006218248F820000A750018EA751018835
65126 +:10E53000A74301A6A74201903C021000AF4201B8D8
65127 +:10E540000A0010F5000010213C02100000A2102467
65128 +:10E550001040003A0000000010C0000F0000000052
65129 +:10E5600030A201001040000C3C0302003C020F00EE
65130 +:10E5700000A2102410430008000000008F82000851
65131 +:10E58000005410240055102190420004244200043D
65132 +:10E590000A00109F000221C00000000000051602C2
65133 +:10E5A0003050000F3A0300022E4203EF38420001C0
65134 +:10E5B0002C6300010062182414600073240200011F
65135 +:10E5C0003C0308008C6300D02E06000C386200016A
65136 +:10E5D0002C4200010046102414400015001021C0F8
65137 +:10E5E0002602FFFC2C4200045440001100002021B0
65138 +:10E5F000386200022C420001004610241040000343
65139 +:10E60000000512420A00109F000020210010182B64
65140 +:10E610000043102450400006001021C000002021BB
65141 +:10E620003245FFFF0E000F633226FFFB001021C0B2
65142 +:10E630003245FFFF0A0010F2362600028F424000EA
65143 +:10E640003C0308008C630024304201001040004667
65144 +:10E6500030620001322200043070000D14400002CC
65145 +:10E660002413000424130002000512C238420001E2
65146 +:10E670002E4303EF304200013863000100431025B0
65147 +:10E68000104000033231FFFB2402FFFB0202802412
65148 +:10E6900010C000183202000130A201001040001525
65149 +:10E6A000320200013C020F0000A210243C030200D1
65150 +:10E6B0001043000F8F8200082403FFFE0203802412
65151 +:10E6C00000541024005510219042000402333025DC
65152 +:10E6D0002442000412000002000221C03226FFFF83
65153 +:10E6E0000E000F633245FFFF1200002700001021CB
65154 +:10E6F000320200011040000D320200042402000129
65155 +:10E7000012020002023330253226FFFF00002021D2
65156 +:10E710000E000F633245FFFF2402FFFE0202802439
65157 +:10E7200012000019000010213202000410400016EF
65158 +:10E7300024020001240200041202000202333025E8
65159 +:10E740003226FFFF3245FFFF0E000F632404010055
65160 +:10E750002402FFFB020280241200000B00001021A3
65161 +:10E760000A0010F5240200011040000700001021EB
65162 +:10E770003245FFFF36260002000020210E000F6305
65163 +:10E7800000000000000010218FBF00288FB500247A
65164 +:10E790008FB400208FB3001C8FB200188FB100140B
65165 +:10E7A0008FB0001003E0000827BD003027BDFFD068
65166 +:10E7B000AFB000103C04600CAFBF002CAFB6002817
65167 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847
65168 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC
65169 +:10E7E000004310243442380CAC8250002402000351
65170 +:10E7F0003C106000AF4200088E0208083C1B8008F5
65171 +:10E800003C010800AC2000203042FFF038420010EC
65172 +:10E810002C4200010E001B8DAF8200183C04FFFF4C
65173 +:10E820003C020400348308063442000CAE0219484E
65174 +:10E83000AE03194C3C0560168E0219808CA30000B3
65175 +:10E840003442020000641824AE0219803C02535383
65176 +:10E850001462000334A47C008CA200040050202128
65177 +:10E860008C82007C8C830078AF820010AF83000C18
65178 +:10E870008F55000032A200031040FFFD32A20001BC
65179 +:10E880001040013D32A200028F420128AF42002019
65180 +:10E890008F4201048F430100AF8200000E000F3C45
65181 +:10E8A000AF8300043C0208008C4200C01040000806
65182 +:10E8B0008F8400003C0208008C4200C42442000106
65183 +:10E8C0003C010800AC2200C40A00126900000000EC
65184 +:10E8D0003C020010008210241440010C8F830004BD
65185 +:10E8E0003C0208008C4200203C0308008C63003886
65186 +:10E8F00000008821244200013C010800AC220020D5
65187 +:10E900003C16080026D60038146000022474FFFF6D
65188 +:10E910000000A0219742010E308340003042FFFFEB
65189 +:10E920001060000A245200043C02002000821024DF
65190 +:10E9300050400007308280008F8200042403BFFF14
65191 +:10E94000008318240A0011703442100030828000C5
65192 +:10E950001040000A3C0200200082102410400007F2
65193 +:10E960008F8200043C03FFFF34637FFF0083182481
65194 +:10E9700034428000AF820004AF8300000E000F9885
65195 +:10E980000000000014400007000000009743011E33
65196 +:10E990009742011C3063FFFF00021400006218253B
65197 +:10E9A000AF8300089742010C8F4340003045FFFFC2
65198 +:10E9B0003402FFFF14620003000000000A00118807
65199 +:10E9C000241100208F4240003042010054400001D9
65200 +:10E9D000241100108F840000308210005040001479
65201 +:10E9E00036310001308200201440000B3C02100040
65202 +:10E9F000008210245040000E363100013C030E000E
65203 +:10EA00003C020DFF008318243442FFFF0043102B0B
65204 +:10EA100050400007363100013C0208008C42002CB7
65205 +:10EA2000244200013C010800AC22002C36310005D4
65206 +:10EA30003C0608008CC6003454C000238F850000BB
65207 +:10EA40008F820004304240005440001F8F85000038
65208 +:10EA50003C021F01008210243C0310005443001AA2
65209 +:10EA60008F85000030A20200144000178F8500003F
65210 +:10EA70003250FFFF363100028F4201B80440FFFEE2
65211 +:10EA800000000000AF400180020020210E000F4274
65212 +:10EA9000AF4000208F8300042402BFFFA750019ADB
65213 +:10EAA000006218248F820000A750018EA7510188B0
65214 +:10EAB000A74301A6A74201903C021000AF4201B853
65215 +:10EAC0000A001267000010213C02100000A210246E
65216 +:10EAD0001040003A0000000010C0000F00000000CD
65217 +:10EAE00030A201001040000C3C0302003C020F0069
65218 +:10EAF00000A2102410430008000000008F820008CC
65219 +:10EB000000541024005610219042000424420004B6
65220 +:10EB10000A0011FF000221C00000000000051602DB
65221 +:10EB20003050000F3A0300022E4203EF384200013A
65222 +:10EB30002C63000100621824146000852402000187
65223 +:10EB40003C0308008C6300D02E06000C38620001E4
65224 +:10EB50002C4200010046102414400015001021C072
65225 +:10EB60002602FFFC2C42000454400011000020212A
65226 +:10EB7000386200022C42000100461024504000037D
65227 +:10EB8000000512420A0011FF000020210010182B7E
65228 +:10EB90000043102450400006001021C00000202136
65229 +:10EBA0003245FFFF0E000F633226FFFB001021C02D
65230 +:10EBB0003245FFFF0A001252362600028F42400003
65231 +:10EBC0003C0308008C6300243042010010400046E2
65232 +:10EBD00030620001322200043070000D1440000247
65233 +:10EBE0002413000424130002000512C2384200015D
65234 +:10EBF0002E4303EF3042000138630001004310252B
65235 +:10EC0000104000033231FFFB2402FFFB020280248C
65236 +:10EC100010C000183202000130A20100104000159F
65237 +:10EC2000320200013C020F0000A210243C0302004B
65238 +:10EC30001043000F8F8200082403FFFE020380248C
65239 +:10EC40000054102400561021904200040233302555
65240 +:10EC50002442000412000002000221C03226FFFFFD
65241 +:10EC60000E000F633245FFFF120000390000102133
65242 +:10EC7000320200011040000D3202000424020001A3
65243 +:10EC800012020002023330253226FFFF000020214D
65244 +:10EC90000E000F633245FFFF2402FFFE02028024B4
65245 +:10ECA0001200002B00001021320200041040002846
65246 +:10ECB0002402000124020004120200020233302563
65247 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0
65248 +:10ECD0002402FFFB020280241200001D000010210C
65249 +:10ECE0000A001267240200015040001900001021A0
65250 +:10ECF0003245FFFF36260002000020210E000F6380
65251 +:10ED0000000000000A001267000010212402BFFF6B
65252 +:10ED1000006210241040000800000000240287FF59
65253 +:10ED200000621024144000083C020060008210249D
65254 +:10ED300010400005000000000E000D34000000002F
65255 +:10ED40000A001267000000000E0012C70000000059
65256 +:10ED5000104000063C0240008F4301243C0260202A
65257 +:10ED6000AC430014000000003C024000AF420138F8
65258 +:10ED70000000000032A200021040FEBD00000000B2
65259 +:10ED80008F4201403C044000AF4200208F430148C5
65260 +:10ED90003C02700000621824106400420000000071
65261 +:10EDA0000083102B144000063C0260003C0220004F
65262 +:10EDB000106200073C0240000A0012C3000000007D
65263 +:10EDC0001062003C3C0240000A0012C30000000038
65264 +:10EDD0008F4501408F4601448F42014800021402D2
65265 +:10EDE000304300FF240200041462000A274401801B
65266 +:10EDF0008F4201B80440FFFE2402001CAC850000D5
65267 +:10EE0000A082000B3C021000AF4201B80A0012C3FE
65268 +:10EE10003C0240002402000914620012000616029F
65269 +:10EE2000000229C0AF4500208F4201B80440FFFE18
65270 +:10EE30002402000124030003AF450180A343018B9A
65271 +:10EE4000A740018EA740019AA7400190AF4001A8BA
65272 +:10EE5000A7420188A74201A6AF4001AC3C021000C6
65273 +:10EE6000AF4201B88F4201B80440FFFE000000002D
65274 +:10EE7000AC8500008F42014800021402A482000801
65275 +:10EE800024020002A082000B8F420148A4820010DD
65276 +:10EE90003C021000AC860024AF4201B80A0012C345
65277 +:10EEA0003C0240000E001310000000000A0012C3D4
65278 +:10EEB0003C0240000E001BC2000000003C0240006B
65279 +:10EEC000AF420178000000000A00112F000000008E
65280 +:10EED0008F4201003042003E144000112402000124
65281 +:10EEE000AF4000488F420100304207C0104000058B
65282 +:10EEF00000000000AF40004CAF40005003E00008AD
65283 +:10EF000024020001AF400054AF4000408F42010096
65284 +:10EF10003042380054400001AF4000442402000158
65285 +:10EF200003E00008000000008F4201B80440FFFE2B
65286 +:10EF300024020001AF440180AF400184A74501884D
65287 +:10EF4000A342018A24020002A342018B9742014A94
65288 +:10EF500014C00004A7420190AF4001A40A0012EFC0
65289 +:10EF60003C0210008F420144AF4201A43C02100059
65290 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA
65291 +:10EF80000440FFFE24020002AF440180AF4401842C
65292 +:10EF9000A7450188A342018AA342018B9742014AF7
65293 +:10EFA000A7420190AF4001A48F420144AF4201A8A3
65294 +:10EFB0003C02100003E00008AF4201B83C029000A0
65295 +:10EFC0003442000100822025AF4400208F420020FF
65296 +:10EFD0000440FFFE0000000003E000080000000005
65297 +:10EFE0003C028000344200010082202503E000083A
65298 +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042
65299 +:10F000008F50014093430149934201489344014882
65300 +:10F01000306300FF304200FF00021200006228252A
65301 +:10F020002402001910620076308400802862001AE1
65302 +:10F030001040001C24020020240200081062007707
65303 +:10F04000286200091040000E2402000B2402000177
65304 +:10F0500010620034286200025040000524020006BD
65305 +:10F0600050600034020020210A00139A00000000C2
65306 +:10F0700010620030020020210A00139A00000000F4
65307 +:10F080001062003B2862000C504000022402000E77
65308 +:10F090002402000910620056020020210A00139A7F
65309 +:10F0A0000000000010620056286200211040000F8E
65310 +:10F0B000240200382402001C106200582862001D3F
65311 +:10F0C000104000062402001F2402001B1062004CA6
65312 +:10F0D000000000000A00139A000000001062004ABD
65313 +:10F0E000020020210A00139A00000000106200456F
65314 +:10F0F0002862003910400007240200802462FFCB00
65315 +:10F100002C42000210400045020020210A00139604
65316 +:10F110000000302110620009000000000A00139A6C
65317 +:10F12000000000001480003D020020210A0013901E
65318 +:10F130008FBF00140A001396240600018F4201B805
65319 +:10F140000440FFFE24020002A342018BA745018870
65320 +:10F150009742014AA74201908F420144A74201927F
65321 +:10F160003C021000AF4201B80A00139C8FBF00148C
65322 +:10F170009742014A144000290000000093620005F4
65323 +:10F180003042000414400025000000000E0013026D
65324 +:10F190000200202193620005020020213442000475
65325 +:10F1A0000E00130BA36200059362000530420004B9
65326 +:10F1B00014400002000000000000000D93620000F7
65327 +:10F1C00024030020304200FF14430014000000001C
65328 +:10F1D0008F4201B80440FFFE24020005AF500180B9
65329 +:10F1E000A342018B3C0210000A00139AAF4201B8FF
65330 +:10F1F0008FBF00148FB000100A0012F227BD001854
65331 +:10F200000000000D02002021000030218FBF0014FB
65332 +:10F210008FB000100A0012DD27BD00180000000D9D
65333 +:10F220008FBF00148FB0001003E0000827BD001846
65334 +:10F2300027BDFFE8AFBF00100E000F3C000000002C
65335 +:10F24000AF4001808FBF0010000020210A000FE7AF
65336 +:10F2500027BD00183084FFFF30A5FFFF00001821F4
65337 +:10F260001080000700000000308200011040000202
65338 +:10F2700000042042006518210A0013AB0005284055
65339 +:10F2800003E000080060102110C0000624C6FFFF44
65340 +:10F290008CA2000024A50004AC8200000A0013B573
65341 +:10F2A0002484000403E000080000000010A000080F
65342 +:10F2B00024A3FFFFAC860000000000000000000057
65343 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A
65344 +:10F2D00003E0000800000000308300FF30A500FFBD
65345 +:10F2E00030C600FF274701808F4201B80440FFFE6F
65346 +:10F2F000000000008F42012834634000ACE20000AF
65347 +:10F3000024020001ACE00004A4E30008A0E2000A2B
65348 +:10F3100024020002A0E2000B3C021000A4E5001051
65349 +:10F32000ACE00024ACE00028A4E6001203E00008F2
65350 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6
65351 +:10F3400024030012304200FF1043000D00803021E2
65352 +:10F350008F620044008210230440000A8FBF001017
65353 +:10F360008F620048240400390000282100C21023C5
65354 +:10F3700004410004240600120E0013C9000000001E
65355 +:10F380008FBF00102402000103E0000827BD001811
65356 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403
65357 +:10F3A000AFB0002890C5000D0080902130A400105F
65358 +:10F3B0001080000B00C088218CC300088F620054AD
65359 +:10F3C0001062000730A20005144000B524040001BB
65360 +:10F3D0000E000D21000020210A0014BB0040202156
65361 +:10F3E00030A200051040000930A30012108000ACCC
65362 +:10F3F000240400018E2300088F620054146200A9C7
65363 +:10F400008FBF00340A00142C240400382402001298
65364 +:10F41000146200A3240400010220202127A500106B
65365 +:10F420000E000CB2AFA000101040001102402021CD
65366 +:10F430008E220008AF620084AF6000400E0013020D
65367 +:10F44000000000009362007D024020213442002031
65368 +:10F450000E00130BA362007D0E000CA902402021B8
65369 +:10F46000240400382405008D0A0014B82406001274
65370 +:10F470009362003E304200081040000F8FA200103F
65371 +:10F4800030420100104000078FA300148F6200601B
65372 +:10F490000062102304430008AF6300600A001441B7
65373 +:10F4A00000000000AF6000609362003E2403FFF79D
65374 +:10F4B00000431024A362003E9362003E30420008E5
65375 +:10F4C000144000022406000300003021936200343F
65376 +:10F4D000936300378F640084304200FF306300FF85
65377 +:10F4E00000661821000318800043282100A4202B67
65378 +:10F4F0001080000B000000009763003C8F620084C6
65379 +:10F500003063FFFF004510230062182B14600004D5
65380 +:10F51000000000008F6200840A00145D0045802313
65381 +:10F520009762003C3050FFFF8FA300103062000450
65382 +:10F5300010400004000628808FA2001C0A001465F9
65383 +:10F540000202102B2E02021850400003240202185F
65384 +:10F550000A00146E020510233063000410600003DB
65385 +:10F56000004510238FA2001C00451023004080217D
65386 +:10F570002C42008054400001241000800E00130231
65387 +:10F580000240202124020001AF62000C9362003E81
65388 +:10F59000001020403042007FA362003E8E22000413
65389 +:10F5A00024420001AF620040A770003C8F6200500F
65390 +:10F5B0009623000E00431021AF6200588F62005066
65391 +:10F5C00000441021AF62005C8E220004AF6200187C
65392 +:10F5D0008E220008AF62001C8FA20010304200088B
65393 +:10F5E0005440000A93A20020A360003693620036C4
65394 +:10F5F0002403FFDFA36200359362003E0043102422
65395 +:10F60000A362003E0A0014988E220008A36200350F
65396 +:10F610008E220008AF62004C8F6200248F6300408E
65397 +:10F6200000431021AF6200489362000024030050A1
65398 +:10F63000304200FF144300122403FF803C02080004
65399 +:10F640008C4231A00242102100431024AF42002816
65400 +:10F650003C0208008C4231A08E2400083C03000CC0
65401 +:10F66000024210213042007F03421021004310214A
65402 +:10F67000AC4400D88E230008AF820014AC4300DCF9
65403 +:10F680000E00130B02402021240400380000282122
65404 +:10F690002406000A0E0013C9000000002404000123
65405 +:10F6A0008FBF00348FB200308FB1002C8FB0002894
65406 +:10F6B0000080102103E0000827BD003827BDFFF8B7
65407 +:10F6C00027420180AFA20000308A00FF8F4201B8BC
65408 +:10F6D0000440FFFE000000008F4601283C020800A5
65409 +:10F6E0008C4231A02403FF80AF86004800C2102165
65410 +:10F6F00000431024AF4200243C0208008C4231A099
65411 +:10F700008FA900008FA8000000C210213042007FA6
65412 +:10F71000034218213C02000A00621821946400D4BC
65413 +:10F720008FA700008FA5000024020002AF83001401
65414 +:10F73000A0A2000B8FA30000354260003084FFFFC1
65415 +:10F74000A4E200083C021000AD260000AD04000455
65416 +:10F75000AC60002427BD0008AF4201B803E00008F8
65417 +:10F76000240200018F88003C938200288F830014BC
65418 +:10F770003C07080024E7779800481023304200FF38
65419 +:10F78000304900FC246500888F860040304A000321
65420 +:10F790001120000900002021248200048CA3000015
65421 +:10F7A000304400FF0089102AACE3000024A50004C7
65422 +:10F7B0001440FFF924E70004114000090000202153
65423 +:10F7C0002482000190A30000304400FF008A102B27
65424 +:10F7D000A0E3000024A500011440FFF924E7000184
65425 +:10F7E00030C20003144000048F85003C3102000346
65426 +:10F7F0001040000D0000000010A0000900002021B2
65427 +:10F800002482000190C30000304400FF0085102BCB
65428 +:10F81000A0E3000024C600011440FFF924E7000122
65429 +:10F8200003E00008000000001100FFFD000020219F
65430 +:10F83000248200048CC30000304400FF0088102B99
65431 +:10F84000ACE3000024C600041440FFF924E70004E0
65432 +:10F8500003E00008000000008F83003C9382002832
65433 +:10F8600030C600FF30A500FF00431023304300FFE7
65434 +:10F870008F820014008038210043102114C0000240
65435 +:10F88000244800880083382130E20003144000053A
65436 +:10F8900030A2000314400003306200031040000D4A
65437 +:10F8A0000000000010A000090000202124820001B7
65438 +:10F8B00090E30000304400FF0085102BA1030000FE
65439 +:10F8C00024E700011440FFF92508000103E00008C7
65440 +:10F8D0000000000010A0FFFD000020212482000491
65441 +:10F8E0008CE30000304400FF0085102BAD030000C6
65442 +:10F8F00024E700041440FFF92508000403E0000891
65443 +:10F90000000000000080482130AAFFFF30C600FF41
65444 +:10F9100030E7FFFF274801808F4201B80440FFFE17
65445 +:10F920008F820048AD0200008F420124AD02000426
65446 +:10F930008D220020A5070008A102000A240200165B
65447 +:10F94000A102000B934301208D2200088D240004A6
65448 +:10F95000306300FF004310219783003A00441021D8
65449 +:10F960008D250024004310233C0308008C6331A044
65450 +:10F970008F840014A502000C246300E82402FFFF1A
65451 +:10F98000A50A000EA5030010A5060012AD0500187B
65452 +:10F99000AD020024948201142403FFF73042FFFFDC
65453 +:10F9A000AD0200288C820118AD02002C3C02100030
65454 +:10F9B000AD000030AF4201B88D220020004310247A
65455 +:10F9C00003E00008AD2200208F82001430E7FFFF23
65456 +:10F9D00000804821904200D330A5FFFF30C600FFD1
65457 +:10F9E0000002110030420F0000E238252748018054
65458 +:10F9F0008F4201B80440FFFE8F820048AD02000034
65459 +:10FA00008F420124AD0200048D220020A5070008CA
65460 +:10FA1000A102000A24020017A102000B9343012057
65461 +:10FA20008D2200088D240004306300FF0043102164
65462 +:10FA30009783003A004410218F8400140043102360
65463 +:10FA40003C0308008C6331A0A502000CA505000E44
65464 +:10FA5000246300E8A5030010A5060012AD00001401
65465 +:10FA60008D220024AD0200188C82005CAD02001CC7
65466 +:10FA70008C820058AD0200202402FFFFAD0200245A
65467 +:10FA8000948200E63042FFFFAD02002894820060BD
65468 +:10FA9000948300BE30427FFF3063FFFF00021200FC
65469 +:10FAA00000431021AD02002C3C021000AD000030DC
65470 +:10FAB000AF4201B8948200BE2403FFF700A21021D8
65471 +:10FAC000A48200BE8D2200200043102403E0000821
65472 +:10FAD000AD220020274301808F4201B80440FFFE81
65473 +:10FAE0008F8200249442001C3042FFFF000211C0AC
65474 +:10FAF000AC62000024020019A062000B3C0210005E
65475 +:10FB0000AC60003003E00008AF4201B88F87002CE2
65476 +:10FB100030C300FF8F4201B80440FFFE8F820048CF
65477 +:10FB200034636000ACA2000093820044A0A20005F0
65478 +:10FB30008CE20010A4A20006A4A300088C8200207E
65479 +:10FB40002403FFF7A0A2000A24020002A0A2000BD7
65480 +:10FB50008CE20000ACA200108CE20004ACA2001405
65481 +:10FB60008CE2001CACA200248CE20020ACA2002895
65482 +:10FB70008CE2002CACA2002C8C820024ACA20018D9
65483 +:10FB80003C021000AF4201B88C82002000431024D8
65484 +:10FB900003E00008AC8200208F86001427BDFFE838
65485 +:10FBA000AFBF0014AFB0001090C20063304200201D
65486 +:10FBB0001040000830A500FF8CC2007C2403FFDF4A
65487 +:10FBC00024420001ACC2007C90C2006300431024B8
65488 +:10FBD000A0C2006310A000238F830014275001806F
65489 +:10FBE000020028210E0015D6240600828F82001400
65490 +:10FBF000904200633042004050400019A38000440E
65491 +:10FC00008F83002C8F4201B80440FFFE8F82004892
65492 +:10FC1000AE02000024026082A60200082402000254
65493 +:10FC2000A202000B8C620008AE0200108C62000C75
65494 +:10FC3000AE0200148C620014AE0200188C62001830
65495 +:10FC4000AE0200248C620024AE0200288C620028E0
65496 +:10FC5000AE02002C3C021000AF4201B8A380004469
65497 +:10FC60008F8300148FBF00148FB000109062006368
65498 +:10FC700027BD00183042007FA06200639782003ADF
65499 +:10FC80008F86003C8F850014938300280046102344
65500 +:10FC9000A782003AA4A000E490A400638F820040F1
65501 +:10FCA000AF83003C2403FFBF0046102100832024C3
65502 +:10FCB000AF820040A0A400638F820014A04000BD6A
65503 +:10FCC0008F82001403E00008A44000BE8F8A001455
65504 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B
65505 +:10FCE000AFBF00189389001C954200E430D100FF9B
65506 +:10FCF0000109182B0080802130AC00FF3047FFFF46
65507 +:10FD00000000582114600003310600FF012030215B
65508 +:10FD1000010958239783003A0068102B1440003CD7
65509 +:10FD20000000000014680007240200018E02002079
65510 +:10FD30002403FFFB34E7800000431024AE020020C0
65511 +:10FD40002402000134E70880158200053165FFFFB9
65512 +:10FD50000E001554020020210A00169102002021F5
65513 +:10FD60000E001585020020218F8400482743018062
65514 +:10FD70008F4201B80440FFFE24020018AC6400006A
65515 +:10FD8000A062000B8F840014948200E6A46200102D
65516 +:10FD90003C021000AC600030AF4201B894820060B9
65517 +:10FDA00024420001A4820060948200603C030800A9
65518 +:10FDB0008C63318830427FFF5443000F02002021C2
65519 +:10FDC000948200602403800000431024A482006019
65520 +:10FDD0009082006090830060304200FF000211C2F8
65521 +:10FDE00000021027000211C03063007F0062182556
65522 +:10FDF000A083006002002021022028218FBF00186C
65523 +:10FE00008FB100148FB000100A0015F927BD002033
65524 +:10FE1000914200632403FF8000431025A142006348
65525 +:10FE20009782003A3048FFFF110000209383001CA6
65526 +:10FE30008F840014004B1023304600FF948300E4AD
65527 +:10FE40002402EFFF0168282B00621824A48300E439
65528 +:10FE500014A000038E020020010058210000302170
65529 +:10FE60002403FFFB34E7800000431024AE0200208F
65530 +:10FE700024020001158200053165FFFF0E001554B4
65531 +:10FE8000020020210A0016B99783003A0E0015855A
65532 +:10FE9000020020219783003A8F82003CA780003A1D
65533 +:10FEA00000431023AF82003C9383001C8F82001418
65534 +:10FEB0008FBF00188FB100148FB0001027BD002035
65535 +:10FEC00003E00008A04300BD938200442403000126
65536 +:10FED00027BDFFE8004330042C420020AFB00010E3
65537 +:10FEE000AFBF00142410FFFE10400005274501801D
65538 +:10FEF0003C0208008C4231900A0016D600461024BD
65539 +:10FF00003C0208008C423194004610241440000743
65540 +:10FF1000240600848F8300142410FFFF9062006287
65541 +:10FF20003042000F34420040A06200620E0015D63D
65542 +:10FF300000000000020010218FBF00148FB00010DD
65543 +:10FF400003E0000827BD00188F83002427BDFFE0D1
65544 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB
65545 +:10FF60009062000D00A0902130D100FF3042007F50
65546 +:10FF7000A062000D8F8500148E4300180080802140
65547 +:10FF80008CA2007C146200052402000E90A2006383
65548 +:10FF9000344200200A0016FFA0A200630E0016C51E
65549 +:10FFA000A38200442403FFFF104300472404FFFF03
65550 +:10FFB00052200045000020218E4300003C0200102A
65551 +:10FFC00000621024504000043C020008020020217E
65552 +:10FFD0000A00170E24020015006210245040000988
65553 +:10FFE0008E45000002002021240200140E0016C5D8
65554 +:10FFF000A38200442403FFFF104300332404FFFFC7
65555 +:020000021000EC
65556 +:100000008E4500003C02000200A2102410400016A1
65557 +:100010003C0200048F8600248CC200148CC30010A4
65558 +:100020008CC40014004310230044102B50400005E2
65559 +:10003000020020218E43002C8CC2001010620003AD
65560 +:10004000020020210A00173F240200123C02000493
65561 +:1000500000A210245040001C00002021020020219A
65562 +:100060000A00173F2402001300A2102410400006CB
65563 +:100070008F8300248C620010504000130000202168
65564 +:100080000A001739020020218C6200105040000441
65565 +:100090008E42002C020020210A00173F240200118A
65566 +:1000A00050400009000020210200202124020017F6
65567 +:1000B0000E0016C5A38200442403FFFF1043000274
65568 +:1000C0002404FFFF000020218FBF001C8FB2001806
65569 +:1000D0008FB100148FB000100080102103E00008E1
65570 +:1000E00027BD00208F83001427BDFFD8AFB40020A8
65571 +:1000F000AFB3001CAFB20018AFB10014AFB0001026
65572 +:10010000AFBF0024906200638F91002C2412FFFF88
65573 +:100110003442004092250000A06200638E2200104D
65574 +:100120000080982130B0003F105200060360A021EB
65575 +:100130002402000D0E0016C5A38200441052005484
65576 +:100140002404FFFF8F8300148E2200188C63007C30
65577 +:1001500010430007026020212402000E0E0016C585
65578 +:10016000A38200442403FFFF104300492404FFFF3F
65579 +:1001700024040020120400048F83001490620063A2
65580 +:1001800034420020A06200638F85003410A000205C
65581 +:1001900000000000560400048F8200140260202139
65582 +:1001A0000A0017902402000A9683000A9442006015
65583 +:1001B0003042FFFF144300048F8200202404FFFD1F
65584 +:1001C0000A0017B7AF82003C3C0208008C42318C19
65585 +:1001D0000045102B14400006026020210000282159
65586 +:1001E0000E001646240600010A0017B70000202161
65587 +:1001F0002402002D0E0016C5A38200442403FFFF35
65588 +:10020000104300232404FFFF0A0017B70000202139
65589 +:10021000160400058F8400148E2300142402FFFFAF
65590 +:100220005062001802602021948200602442000184
65591 +:10023000A4820060948200603C0308008C633188D3
65592 +:1002400030427FFF5443000F0260202194820060FF
65593 +:100250002403800000431024A48200609082006088
65594 +:1002600090830060304200FF000211C2000210279C
65595 +:10027000000211C03063007F00621825A083006077
65596 +:10028000026020210E0015F9240500010000202144
65597 +:100290008FBF00248FB400208FB3001C8FB20018D2
65598 +:1002A0008FB100148FB000100080102103E000080F
65599 +:1002B00027BD00288F83001427BDFFE8AFB00010D2
65600 +:1002C000AFBF0014906200638F87002C00808021F4
65601 +:1002D000344200408CE60010A06200633C0308003A
65602 +:1002E0008C6331B030C23FFF0043102B1040004EF2
65603 +:1002F0008F8500302402FF8090A3000D004310245E
65604 +:10030000304200FF504000490200202100061382C5
65605 +:10031000304800032402000255020044020020215C
65606 +:1003200094A2001C8F85001424030023A4A20114AE
65607 +:100330008CE60000000616023042003F1043001019
65608 +:100340003C0300838CE300188CA2007C1062000642
65609 +:100350002402000E0E0016C5A38200442403FFFFF2
65610 +:10036000104300382404FFFF8F8300149062006361
65611 +:1003700034420020A06200630A0017FC8F8300242F
65612 +:1003800000C31024144300078F83002490A200624E
65613 +:100390003042000F34420020A0A20062A38800383F
65614 +:1003A0008F8300249062000D3042007FA062000D18
65615 +:1003B0008F83003410600018020020218F840030E9
65616 +:1003C0008C8200100043102B1040000924020018FA
65617 +:1003D000020020210E0016C5A38200442403FFFF63
65618 +:1003E000104300182404FFFF0A00182400002021F5
65619 +:1003F0008C820010240500010200202100431023FC
65620 +:100400008F830024240600010E001646AC62001003
65621 +:100410000A001824000020210E0015F9240500010F
65622 +:100420000A00182400002021020020212402000DCF
65623 +:100430008FBF00148FB0001027BD00180A0016C52A
65624 +:10044000A38200448FBF00148FB0001000801021E1
65625 +:1004500003E0000827BD001827BDFFC8AFB2002089
65626 +:10046000AFBF0034AFB60030AFB5002CAFB400283A
65627 +:10047000AFB30024AFB1001CAFB000188F46012805
65628 +:100480003C0308008C6331A02402FF80AF86004843
65629 +:1004900000C318213065007F03452821006218241D
65630 +:1004A0003C02000AAF43002400A2282190A200626F
65631 +:1004B00000809021AF850014304200FF000211023D
65632 +:1004C000A382003890A200BC304200021440000217
65633 +:1004D00024030034240300308F820014A3830028F7
65634 +:1004E000938300388C4200C0A3800044AF82003C5C
65635 +:1004F000240200041062031C8F84003C8E4400041C
65636 +:10050000508003198F84003C8E4200103083FFFF1F
65637 +:10051000A784003A106002FFAF8200408F8400146D
65638 +:100520002403FF809082006300621024304200FFA9
65639 +:10053000144002CF9785003A9383003824020002CA
65640 +:1005400030B6FFFF14620005000088219382002866
65641 +:100550002403FFFD0A001B19AF82003C8F82003C80
65642 +:1005600002C2102B144002A18F8400400E0014EC34
65643 +:1005700000000000938300283C040800248477983E
65644 +:10058000240200341462002EAF84002C3C0A0800C0
65645 +:100590008D4A77C82402FFFFAFA2001000803821E7
65646 +:1005A0002405002F3C09080025297398240800FF22
65647 +:1005B0002406FFFF90E2000024A3FFFF00062202B2
65648 +:1005C00000C21026304200FF0002108000491021B6
65649 +:1005D0008C420000306500FF24E7000114A8FFF5FD
65650 +:1005E0000082302600061027AFA20014AFA2001030
65651 +:1005F0000000282127A7001027A6001400C51023FB
65652 +:100600009044000324A2000100A71821304500FFF8
65653 +:100610002CA200041440FFF9A06400008FA2001077
65654 +:100620001142000724020005024020210E0016C5D9
65655 +:10063000A38200442403FFFF104300642404FFFF4F
65656 +:100640003C0208009042779C104000098F82001401
65657 +:10065000024020212402000C0E0016C5A382004493
65658 +:100660002403FFFF104300592404FFFF8F8200146E
65659 +:10067000A380001C3C0308008C63779C8C440080A2
65660 +:100680003C0200FF3442FFFF006218240083202B4D
65661 +:1006900010800008AF83003402402021240200199A
65662 +:1006A0000E0016C5A38200442403FFFF1043004739
65663 +:1006B0002404FFFF8F87003C9782003A8F85003427
65664 +:1006C000AF8700200047202310A0003BA784003AFA
65665 +:1006D0008F86001430A200030002102390C300BCD8
65666 +:1006E0003050000300B0282100031882307300014D
65667 +:1006F0000013108000A228213C0308008C6331A065
65668 +:100700008F8200483084FFFF0085202B004310219A
65669 +:1007100010800011244200888F84002C1082000E6B
65670 +:100720003C033F013C0208008C42779800431024B0
65671 +:100730003C0325001443000630E500FF8C820000D6
65672 +:10074000ACC200888C8200100A0018E9ACC2009884
65673 +:100750000E001529000030219382001C8F850014A3
65674 +:100760008F830040020238218F82003CA387001C47
65675 +:1007700094A400E4006218218F82003434841000B5
65676 +:10078000AF83004000503021A4A400E41260000EAA
65677 +:10079000AF86003C24E20004A382001C94A200E483
65678 +:1007A00024C30004AF83003C34422000A4A200E430
65679 +:1007B0000A001906000020218F820040AF80003C13
65680 +:1007C00000471021AF820040000020212414FFFFC9
65681 +:1007D000109402112403FFFF3C0808008D0877A83D
65682 +:1007E0003C0208008C4231B03C03080090637798CB
65683 +:1007F00031043FFF0082102B1040001B3067003F88
65684 +:100800003C0208008C4231A88F83004800042180FC
65685 +:1008100000621821006418213062007F0342282101
65686 +:100820003C02000C00A228213C020080344200015E
65687 +:100830003066007800C230252402FF800062102458
65688 +:10084000AF42002830640007AF4208048F820014D2
65689 +:100850000344202124840940AF460814AF850024B6
65690 +:10086000AF840030AC4301189383003824020003A6
65691 +:10087000146201CF240200012402002610E201D1FB
65692 +:1008800028E2002710400013240200322402002234
65693 +:1008900010E201CC28E200231040000824020024CA
65694 +:1008A0002402002010E201B82402002110E20147D6
65695 +:1008B000024020210A001AFB2402000B10E201C1B1
65696 +:1008C0002402002510E20010024020210A001AFB39
65697 +:1008D0002402000B10E201AE28E2003310400006B3
65698 +:1008E0002402003F2402003110E2009A024020213D
65699 +:1008F0000A001AFB2402000B10E201A5024020218D
65700 +:100900000A001AFB2402000B8F90002C3C03080005
65701 +:100910008C6331B08F8500308E0400100000A82158
65702 +:100920008CB3001430823FFF0043102B8CB10020A9
65703 +:100930005040018F0240202190A3000D2402FF802F
65704 +:1009400000431024304200FF504001890240202122
65705 +:10095000000413823042000314400185024020212C
65706 +:1009600094A3001C8F8200148E040028A443011459
65707 +:100970008CA20010026218231064000302402021A0
65708 +:100980000A00197C2402001F8F82003400621021AB
65709 +:100990000262102B104000088F83002402402021A7
65710 +:1009A000240200180E0016C5A382004410540174DE
65711 +:1009B0002404FFFF8F8300248F8400348C62001096
65712 +:1009C0000224882100441023AC6200108F8200149E
65713 +:1009D000AC7100208C4200680051102B10400009BF
65714 +:1009E0008F830030024020212402001D0E0016C516
65715 +:1009F000A38200442403FFFF104301612404FFFF8E
65716 +:100A00008F8300308E0200248C6300241043000783
65717 +:100A1000024020212402001C0E0016C5A3820044BF
65718 +:100A20002403FFFF104301562404FFFF8F8400249A
65719 +:100A30008C82002424420001AC8200241233000482
65720 +:100A40008F8200148C4200685622000E8E02000035
65721 +:100A50008E0200003C030080004310241440000D6F
65722 +:100A60002402001A024020210E0016C5A382004471
65723 +:100A70002403FFFF104301422404FFFF0A0019BAB8
65724 +:100A80008E0200143C0300800043102450400003F9
65725 +:100A90008E020014AC8000208E0200142411FFFF8F
65726 +:100AA0001051000E3C0308003C0208008C423190BB
65727 +:100AB000004310242403001B14400007A3830044B8
65728 +:100AC0000E0016C5024020211051012D2404FFFF05
65729 +:100AD0000A0019CB8E030000A38000448E0300009F
65730 +:100AE0003C02000100621024104000123C02008011
65731 +:100AF0000062102414400008024020212402001A41
65732 +:100B00000E0016C5A38200442403FFFF1043011CFE
65733 +:100B10002404FFFF02402021020028210E0016E5D8
65734 +:100B2000240600012403FFFF104301152404FFFFE6
65735 +:100B3000241500018F83002402A0302102402021CF
65736 +:100B40009462003624050001244200010A001ADFE5
65737 +:100B5000A46200368F90002C3C0308008C6331B0F7
65738 +:100B60008E13001032623FFF0043102B10400089AB
65739 +:100B70008F8400302402FF809083000D00431024F6
65740 +:100B8000304200FF104000842402000D0013138245
65741 +:100B900030420003240300011443007F2402000DAF
65742 +:100BA0009082000D30420008544000048F820034CF
65743 +:100BB000024020210A001A102402002450400004A0
65744 +:100BC0008E03000C024020210A001A102402002784
65745 +:100BD0008C82002054620006024020218E0300080F
65746 +:100BE0008C820024506200098E02001402402021F1
65747 +:100BF000240200200E0016C5A38200441054007188
65748 +:100C00002403FFFF0A001A458F8400242411FFFFEC
65749 +:100C1000145100048F860014024020210A001A405B
65750 +:100C2000240200258E0300188CC2007C1062000391
65751 +:100C30002402000E0A001A40024020218E030024E4
65752 +:100C40008C82002810620003240200210A001A404E
65753 +:100C5000024020218E0500288C82002C10A2000367
65754 +:100C60002402001F0A001A40024020218E03002C9B
65755 +:100C700014600003240200230A001A4002402021CD
65756 +:100C80008CC200680043102B104000032402002691
65757 +:100C90000A001A40024020218C82001400651821AD
65758 +:100CA0000043102B104000088F84002402402021B4
65759 +:100CB000240200220E0016C5A382004410510041F8
65760 +:100CC0002403FFFF8F8400242403FFF79082000D8C
65761 +:100CD00000431024A082000D8F8600143C030800FE
65762 +:100CE0008C6331AC8F82004894C400E08F8500246F
65763 +:100CF0000043102130847FFF000420400044102175
65764 +:100D00003043007F034320213C03000E0083202159
65765 +:100D10002403FF8000431024AF42002CA493000062
65766 +:100D20008CA2002824420001ACA200288CA2002C36
65767 +:100D30008E03002C00431021ACA2002C8E02002C4C
65768 +:100D4000ACA200308E020014ACA2003494A2003A8F
65769 +:100D500024420001A4A2003A94C600E03C0208002C
65770 +:100D60008C4231B024C4000130837FFF1462000F35
65771 +:100D700000803021240280000082302430C2FFFF36
65772 +:100D8000000213C2304200FF000210270A001A7E40
65773 +:100D9000000233C02402000D024020210E0016C5BF
65774 +:100DA000A38200440A001A84004018218F82001494
65775 +:100DB00002402021240500010E0015F9A44600E0A0
65776 +:100DC000000018210A001B16006088218F90002C5B
65777 +:100DD0003C0308008C6331B08E05001030A23FFF49
65778 +:100DE0000043102B104000612402FF808F840030EC
65779 +:100DF0009083000D00431024304200FF5040005CFF
65780 +:100E0000024020218F8200341040000B0005138225
65781 +:100E10008F8200149763000A944200603042FFFF03
65782 +:100E200014430005000513828F8200202404FFFD77
65783 +:100E30000A001AF3AF82003C304200031440000E57
65784 +:100E40000000000092020002104000058E03002402
65785 +:100E500050600015920300030A001AAF02402021DF
65786 +:100E60008C82002450620010920300030240202173
65787 +:100E70000A001AB72402000F9082000D30420008C9
65788 +:100E80005440000992030003024020212402001074
65789 +:100E90000E0016C5A38200442403FFFF1043003850
65790 +:100EA0002404FFFF92030003240200025462000C9A
65791 +:100EB000920200038F820034544000099202000322
65792 +:100EC000024020212402002C0E0016C5A3820044FB
65793 +:100ED0002403FFFF1043002A2404FFFF92020003B3
65794 +:100EE0000200282102402021384600102CC60001B3
65795 +:100EF0002C4200010E0016E5004630252410FFFFAD
65796 +:100F00001050001F2404FFFF8F8300341060001373
65797 +:100F1000024020213C0208008C42318C0043102BFF
65798 +:100F200014400007000000000000282124060001F2
65799 +:100F30000E001646000000000A001AF300002021EF
65800 +:100F40002402002D0E0016C5A38200441050000C90
65801 +:100F50002404FFFF0A001AF3000020210E0015F9F7
65802 +:100F6000240500010A001AF300002021024020217C
65803 +:100F70002402000D0E0016C5A3820044004020216B
65804 +:100F80000A001B16008088211514000E00000000C6
65805 +:100F90000E00174C024020210A001B160040882139
65806 +:100FA0000E0016C5A38200440A001B1600408821CB
65807 +:100FB00014620017022018212402002314E2000505
65808 +:100FC0002402000B0E0017C0024020210A001B164D
65809 +:100FD0000040882102402021A38200440E0016C553
65810 +:100FE0002411FFFF0A001B170220182130A500FF63
65811 +:100FF0000E001529240600019783003A8F82003CD9
65812 +:10100000A780003A00431023AF82003C0220182141
65813 +:101010001220003E9782003A2402FFFD5462003EF7
65814 +:101020008E4300208E4200048F830014005610234C
65815 +:10103000AE420004906200633042007FA062006311
65816 +:101040008E4200208F840014A780003A34420002B0
65817 +:10105000AE420020A48000E4908200632403FFBF1E
65818 +:1010600000431024A08200630A001B598E43002015
65819 +:101070009082006300621024304200FF1040002381
65820 +:101080009782003A90820088908300BD2485008872
65821 +:101090003042003F2444FFE02C820020A383001C48
65822 +:1010A00010400019AF85002C2402000100821804B2
65823 +:1010B000306200191440000C3C02800034420002EF
65824 +:1010C000006210241440000B306200201040000F1A
65825 +:1010D0009782003A90A600010240202124050001D9
65826 +:1010E0000A001B5330C60001024020210A001B5297
65827 +:1010F00024050001024020210000282124060001CF
65828 +:101100000E001646000000009782003A1440FD04CD
65829 +:101110008F8400148E4300203062000410400012BF
65830 +:101120008F84003C2402FFFB00621024AE420020AA
65831 +:10113000274301808F4201B80440FFFE8F820048A0
65832 +:10114000AC6200008F420124AC6200042402608380
65833 +:10115000A462000824020002A062000B3C021000FE
65834 +:10116000AF4201B88F84003C8F8300148FBF0034DE
65835 +:101170008FB600308FB5002C8FB400288FB30024B9
65836 +:101180008FB200208FB1001C8FB000182402000124
65837 +:1011900027BD003803E00008AC6400C030A500FFA4
65838 +:1011A0002403000124A900010069102B1040000C49
65839 +:1011B00000004021240A000100A31023004A380443
65840 +:1011C00024630001308200010069302B10400002CE
65841 +:1011D000000420420107402554C0FFF800A310235B
65842 +:1011E00003E00008010010213C020800244260A432
65843 +:1011F0003C010800AC22738C3C02080024425308D6
65844 +:101200003C010800AC2273902402000627BDFFE0D9
65845 +:101210003C010800A02273943C021EDCAFB200180F
65846 +:10122000AFB10014AFBF001CAFB0001034526F411B
65847 +:1012300000008821240500080E001B7A02202021CE
65848 +:10124000001180803C07080024E773980002160014
65849 +:1012500002071821AC6200000000282124A200012E
65850 +:101260003045FFFF8C6200002CA6000804410002FC
65851 +:10127000000220400092202614C0FFF8AC64000059
65852 +:10128000020780218E0400000E001B7A2405002036
65853 +:10129000262300013071FFFF2E2301001460FFE5BB
65854 +:1012A000AE0200008FBF001C8FB200188FB1001477
65855 +:1012B0008FB0001003E0000827BD002027BDFFD835
65856 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425
65857 +:1012D000AFB000108F5101408F48014800089402C0
65858 +:1012E000324300FF311300FF8F4201B80440FFFE7C
65859 +:1012F00027500180AE1100008F420144AE0200046D
65860 +:1013000024020002A6120008A202000B240200140C
65861 +:10131000AE1300241062002528620015104000085A
65862 +:101320002402001524020010106200302402001272
65863 +:10133000106200098FBF00200A001CB58FB3001C8B
65864 +:101340001062007024020022106200378FBF00205C
65865 +:101350000A001CB58FB3001C3C0208008C4231A06F
65866 +:101360002403FF800222102100431024AF420024F6
65867 +:101370003C0208008C4231A0022210213042007F42
65868 +:10138000034218213C02000A00621821166000BCCA
65869 +:10139000AF830014906200623042000F344200308C
65870 +:1013A000A06200620A001CB48FBF00203C046000F1
65871 +:1013B0008C832C083C02F0033442FFFF00621824A7
65872 +:1013C000AC832C083C0208008C4231A08C832C0892
65873 +:1013D000244200740002108200021480006218256A
65874 +:1013E000AC832C080A001CB48FBF00203C0208000C
65875 +:1013F0008C4231A02403FF800222102100431024DC
65876 +:10140000AF4200243C0208008C4231A03C03000A99
65877 +:10141000022210213042007F03421021004310219C
65878 +:101420000A001CB3AF8200143C0208008C4231A0B9
65879 +:101430002405FF800222102100451024AF42002421
65880 +:101440003C0208008C4231A0022210213042007F71
65881 +:10145000034218213C02000A0062182190620063D6
65882 +:1014600000A21024304200FF10400085AF8300141A
65883 +:1014700024620088944300123C0208008C4231A888
65884 +:1014800030633FFF00031980022210210043102126
65885 +:101490003043007F03432021004510243C03000C0F
65886 +:1014A00000832021AF4200289082000D00A210246A
65887 +:1014B000304200FF10400072AF8400249082000D83
65888 +:1014C000304200101440006F8FBF00200E0015C87E
65889 +:1014D000000000008F4201B80440FFFE0000000041
65890 +:1014E000AE1100008F420144AE020004240200024B
65891 +:1014F000A6120008A202000BAE1300240A001CB4BE
65892 +:101500008FBF00202406FF8002261024AF42002057
65893 +:101510003C0208008C4231A031043FFF00042180CE
65894 +:101520000222102100461024AF4200243C03080090
65895 +:101530008C6331A83C0208008C4231A03227007F26
65896 +:101540000223182102221021006418213042007F5A
65897 +:101550003064007F034228213C02000A0066182400
65898 +:1015600000A22821034420213C02000C00822021FB
65899 +:10157000AF4300283C020008034718210062902175
65900 +:10158000AF850014AF8400240E0015C8010080212F
65901 +:101590008F4201B80440FFFE8F8200248F84001424
65902 +:1015A000274501809042000DACB10000A4B00006B8
65903 +:1015B000000216000002160300021027000237C2C4
65904 +:1015C00014C00016248200889442001232033FFFA8
65905 +:1015D00030423FFF14430012240260829083006374
65906 +:1015E0002402FF8000431024304200FF5040000CD2
65907 +:1015F00024026082908200623042000F3442004038
65908 +:10160000A082006224026084A4A200082402000DCB
65909 +:10161000A0A200050A001C9E3C0227002402608252
65910 +:10162000A4A20008A0A000053C02270000061C00A0
65911 +:101630000062182524020002A0A2000BACA3001037
65912 +:10164000ACA00014ACA00024ACA00028ACA0002CDE
65913 +:101650008E42004C8F840024ACA200189083000DB1
65914 +:101660002402FF8000431024304200FF1040000598
65915 +:101670008FBF00209082000D3042007FA082000DBD
65916 +:101680008FBF00208FB3001C8FB200188FB10014E1
65917 +:101690008FB000103C02100027BD002803E00008B6
65918 +:1016A000AF4201B80800343008003430080033A8D5
65919 +:1016B000080033E0080034140800343808003438D7
65920 +:1016C00008003438080033180A0001240000000024
65921 +:1016D000000000000000000D747061362E322E33C1
65922 +:1016E00000000000060203010000000000000000EE
65923 +:1016F00000000000000000000000000000000000EA
65924 +:1017000000000000000000000000000000000000D9
65925 +:1017100000000000000000000000000000000000C9
65926 +:1017200000000000000000000000000000000000B9
65927 +:1017300000000000000000000000000000000000A9
65928 +:101740000000000000000000000000000000000099
65929 +:101750000000000000000000000000001000000376
65930 +:10176000000000000000000D0000000D3C02080019
65931 +:1017700024421C003C03080024632094AC40000079
65932 +:101780000043202B1480FFFD244200043C1D080070
65933 +:1017900037BD2FFC03A0F0213C1008002610049058
65934 +:1017A0003C1C0800279C1C000E00015C000000008F
65935 +:1017B0000000000D3084FFFF308200078F85001885
65936 +:1017C00010400002248300073064FFF800853021B8
65937 +:1017D00030C41FFF03441821247B4000AF85001C48
65938 +:1017E000AF84001803E00008AF4400843084FFFF9A
65939 +:1017F000308200078F8500208F860028104000026D
65940 +:10180000248300073064FFF8008520210086182B10
65941 +:1018100014600002AF8500240086202303442821A1
65942 +:1018200034068000AF840020AF44008000A6202151
65943 +:1018300003E00008AF84003827BDFFD8AFB3001C19
65944 +:10184000AFB20018AFB00010AFBF0024AFB400209B
65945 +:10185000AFB100143C0860088D1450002418FF7FBD
65946 +:101860003C1A8000029898243672380CAD12500051
65947 +:101870008F5100083C07601C3C08600036300001B6
65948 +:10188000AF500008AF800018AF400080AF40008428
65949 +:101890008CE600088D0F08083C0760168CEC0000F1
65950 +:1018A00031EEFFF039CA00103C0DFFFF340B800011
65951 +:1018B0003C030080034B48212D440001018D282466
65952 +:1018C0003C0253533C010800AC230420AF8900388C
65953 +:1018D000AF860028AF840010275B400014A20003ED
65954 +:1018E00034E37C008CF90004032818218C7F007CF1
65955 +:1018F0008C6500783C0280003C0B08008D6B048CEA
65956 +:101900003C0A08008D4A048834520070AF85003CC0
65957 +:10191000AF9F00403C13080026731C440240A021E6
65958 +:101920008E4800008F46000038C30001306400017B
65959 +:1019300010800017AF880034028048218D2F0000EE
65960 +:101940003C0508008CA5045C3C1808008F1804585E
65961 +:1019500001E8102300A280210000C8210202402BD0
65962 +:1019600003198821022838213C010800AC30045CAE
65963 +:101970003C010800AC2704588F4E000039CD00010F
65964 +:1019800031AC00011580FFED01E04021AF8F003444
65965 +:101990008E5100003C0708008CE7045C3C0D0800F9
65966 +:1019A0008DAD04580228802300F0602100007021D2
65967 +:1019B0000190302B01AE1821006620213C01080067
65968 +:1019C000AC2C045C3C010800AC2404588F46010890
65969 +:1019D0008F47010030C92000AF860000AF87000CA0
65970 +:1019E0001120000A00C040213C1808008F18042C68
65971 +:1019F000270800013C010800AC28042C3C184000DA
65972 +:101A0000AF5801380A000196000000009749010410
65973 +:101A100000002821014550213122FFFF0162582199
65974 +:101A20000162F82B015F502130D902003C0108000F
65975 +:101A3000AC2B048C3C010800AC2A0488172000154C
65976 +:101A400024040F0010E400130000000024080D001F
65977 +:101A500010E8023B30CD000611A0FFE93C18400021
65978 +:101A6000936E00002409001031C400F01089027147
65979 +:101A700024020070108202E58F880014250F0001F7
65980 +:101A8000AF8F00143C184000AF5801380A0001968F
65981 +:101A900000000000974C01041180FFD93C18400061
65982 +:101AA00030C34000146000A1000000008F460178A0
65983 +:101AB00004C0FFFE8F87003824100800240F0008A0
65984 +:101AC0008CE30008AF500178A74F0140A7400142C6
65985 +:101AD000974E01048F86000031C9FFFF30CD000111
65986 +:101AE00011A002E1012040212531FFFE241800024F
65987 +:101AF000A75801463228FFFFA75101483C190800AA
65988 +:101B00008F39043C172002D08F8C000C30DF00206E
65989 +:101B100017E00002240400092404000130C20C0074
65990 +:101B2000240504005045000134840004A744014A00
65991 +:101B30003C1108008E3104203C1800483C10000184
65992 +:101B40000238182530CF00020070282511E000046B
65993 +:101B5000000018213C19010000B9282524030001C8
65994 +:101B600030DF000453E00005AF8300083C0600109E
65995 +:101B700000A6282524030001AF830008AF4510000C
65996 +:101B80000000000000000000000000000000000055
65997 +:101B90008F83000810600023000000008F451000B4
65998 +:101BA00004A1FFFE000000001060001E0000000005
65999 +:101BB0008F4410003C0C0020008C102410400019B1
66000 +:101BC0008F8E000031CD000211A000160000000031
66001 +:101BD000974F101415E000130000000097591008EB
66002 +:101BE0003338FFFF271100060011188200033080F0
66003 +:101BF00000C7282132300001322300031200032CD9
66004 +:101C00008CA200000000000D00C7F821AFE2000028
66005 +:101C10003C0508008CA5043024A600013C01080006
66006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E
66007 +:101C30008CEC0000118202A6000020218CED000037
66008 +:101C400031AC01001180028A000000003C02080053
66009 +:101C50008C4204743C0308008C63044C3C1F080055
66010 +:101C60008FFF04703C1808008F1804480048382182
66011 +:101C70000068802100E8282B03E430210208402B73
66012 +:101C80000304882100C57021022878213C01080046
66013 +:101C9000AC30044C3C010800AC2F04483C01080067
66014 +:101CA000AC2704743C010800AC2E04708F8400182B
66015 +:101CB0000120302131290007249F000833F91FFF3C
66016 +:101CC00003594021AF84001CAF990018251B400028
66017 +:101CD000AF590084112000038F83002024C2000725
66018 +:101CE0003046FFF88F84002800C3282100A4302B41
66019 +:101CF00014C00002AF83002400A428230345602100
66020 +:101D0000340D8000018D10213C0F1000AF850020A4
66021 +:101D1000AF820038AF450080AF4F01788F88001444
66022 +:101D2000250F00010A0001EFAF8F00148F62000839
66023 +:101D30008F670000240500300007760231C300F0F1
66024 +:101D4000106500A7240F0040546FFF4C8F880014CB
66025 +:101D50008F4B01780560FFFE0000000030CA0200D2
66026 +:101D600015400003000612820000000D00061282DA
66027 +:101D7000304D0003000D4900012D18210003808023
66028 +:101D8000020D402100086080019380218E1F000019
66029 +:101D900017E00002000000000000000D8F6E00043C
66030 +:101DA00005C202BD92070006920E000592020004D1
66031 +:101DB0003C090001000E18800070F8218FED00181A
66032 +:101DC000277100082448000501A96021000830821D
66033 +:101DD000AFEC0018022020210E00059E26050014FD
66034 +:101DE000920A00068F7900043C0B7FFF000A2080D6
66035 +:101DF000009178218DF800043566FFFF0326282422
66036 +:101E000003053821ADE70004920E0005920D000491
66037 +:101E1000960C0008000E10800051C8218F2300008E
66038 +:101E2000974901043C07FFFF006758243128FFFF52
66039 +:101E3000010DF82103EC50233144FFFF01643025EC
66040 +:101E4000AF260000920300072418000110780275E5
66041 +:101E5000240F0003106F0285000000008E050010A3
66042 +:101E60002419000AA7590140A7450142921800040D
66043 +:101E70008F860000240F0001A7580144A7400146A7
66044 +:101E80009747010430D100023C050041A7470148B3
66045 +:101E900000001821A74F014A1220000330CB000494
66046 +:101EA0003C0501412403000151600005AF83000897
66047 +:101EB0003C06001000A6282524030001AF8300087B
66048 +:101EC000AF4510000000000000000000000000000E
66049 +:101ED000000000008F8A000811400004000000008C
66050 +:101EE0008F4410000481FFFE000000008F6B000093
66051 +:101EF000920800043C1108008E310444AF8B0004AA
66052 +:101F000097590104311800FF3C0E08008DCE0440A3
66053 +:101F10003325FFFF0305382102276021000010212F
66054 +:101F2000250F000A31E8FFFF0187482B01C2682115
66055 +:101F300001A9F821311000073C010800AC2C044431
66056 +:101F40003C010800AC3F0440120000038F8C0018D5
66057 +:101F50002506000730C8FFF8010C682131BF1FFFBC
66058 +:101F6000AF8C001CAF9F0018AF5F00849744010442
66059 +:101F7000035F80213084FFFF308A00071140000397
66060 +:101F8000261B4000248900073124FFF88F8200209F
66061 +:101F90008F850028008220210085702B15C000024B
66062 +:101FA000AF820024008520233C0B08008D6B048C3D
66063 +:101FB0003C0A08008D4A04880344882134038000C9
66064 +:101FC000022310213C0F1000AF840020AF820038A4
66065 +:101FD000AF440080AF4F01780A0002968F8800144A
66066 +:101FE0008F5001780600FFFE30D10200162000035A
66067 +:101FF000000612820000000D00061282305F00030E
66068 +:10200000001F1900007F302100062080009FC8219A
66069 +:1020100000194880013380218E180000130000024F
66070 +:10202000000000000000000D8F6C000C058001FB1B
66071 +:102030008F870038240E0001AE0E00008CE30008EC
66072 +:10204000A20000078F65000400055402314D00FF17
66073 +:1020500025A80005000830822CCB00411560000245
66074 +:10206000A20A00040000000D8F7800043C03FFFF6B
66075 +:1020700000E02821330BFFFF256C000B000C1082C1
66076 +:1020800000022080008748218D3F000026040014B4
66077 +:10209000A618000803E3C8240E00059EAD39000011
66078 +:1020A0008F4F01083C11100001F1382410E001AB02
66079 +:1020B00000000000974D01049208000725AAFFECDC
66080 +:1020C000350600023144FFFFA2060007960600080D
66081 +:1020D0002CC7001354E0000592030007921100077B
66082 +:1020E000362F0001A20F00079203000724180001F9
66083 +:1020F000107801C224090003106901D58F880038C7
66084 +:1021000030CBFFFF257100020011788331E400FF1E
66085 +:1021100000042880A20F000500A848218D2D000092
66086 +:10212000974A01043C0EFFFF01AEF8243143FFFF44
66087 +:10213000006B1023244CFFFE03ECC825AD390000D2
66088 +:10214000920600053C03FFF63462FFFF30D800FF23
66089 +:102150000018388000F08821922F00143C04FF7F83
66090 +:102160003487FFFF31EE000F01C65821316500FFB3
66091 +:1021700000055080015068218DAC00200148F821F5
66092 +:10218000A20B00060182C824AE0C000CAFF9000CB3
66093 +:10219000920900068E11000C032778240009C080E4
66094 +:1021A0000310702195C60026030828210227202449
66095 +:1021B000AE04000CADCF0020ADC60024ACA60010CC
66096 +:1021C0008F8800003C0B08008D6B048C3C0A0800D3
66097 +:1021D0008D4A0488241F001024190002A75F0140C3
66098 +:1021E000A7400142A7400144A7590146974901046D
66099 +:1021F00024070001310600022538FFFEA7580148D8
66100 +:102200003C050009A747014A10C00003000018213F
66101 +:102210003C05010924030001310C00045180000534
66102 +:10222000AF8300083C08001000A828252403000103
66103 +:10223000AF830008AF451000000000000000000060
66104 +:1022400000000000000000009205000424AE00021F
66105 +:1022500031CD0007000D182330620007AE020010D8
66106 +:102260008F90000812000004000000008F4F100043
66107 +:1022700005E1FFFE000000008F7100008F8E001846
66108 +:102280003C0308008C630444AF91000497450104AB
66109 +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC
66110 +:1022A000AF860018AF4600842449FFFE3C0C0800AE
66111 +:1022B0008D8C0440974D010401208021000947C303
66112 +:1022C0000070C02131A9FFFF0310F82B0188C8213D
66113 +:1022D000033F202103463821313100073C0108002B
66114 +:1022E000AC3804443C010800AC2404401220000334
66115 +:1022F00024FB40002527000730E9FFF88F860020E7
66116 +:102300008F8400280126382100E4C02B170000022A
66117 +:10231000AF86002400E438230347202134198000CD
66118 +:10232000009910213C0F1000AF870020AF820038C9
66119 +:10233000AF470080AF4F01780A0002968F880014E3
66120 +:102340009747010410E0FDAE3C1840008F5801781B
66121 +:102350000700FFFE30C5400010A000033C1F00082E
66122 +:102360000000000D3C1F0008AF5F01402410080072
66123 +:102370008F860000AF5001789744010430D90001E6
66124 +:10238000132000ED3086FFFF24CCFFFE240D000259
66125 +:10239000A74D0146A74C01488F9100182408000D55
66126 +:1023A000A748014A8F630000262F000831E21FFF73
66127 +:1023B0000342702130C90007AF830004AF91001CB5
66128 +:1023C000AF82001800C03821AF4200841120000302
66129 +:1023D00025DB400024D800073307FFF88F85002055
66130 +:1023E0008F84002800E5302100C4382B14E000025F
66131 +:1023F000AF85002400C430238F8400140346F821E5
66132 +:10240000340C8000AF86002003EC8021AF460080B2
66133 +:10241000249900013C0610003C184000AF460178AA
66134 +:10242000AF900038AF990014AF5801380A000196F8
66135 +:10243000000000008F630000975101043067FFFF28
66136 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8
66137 +:10245000000CF82333F0000724F9FFFE2404000ADF
66138 +:10246000A7440140A7500142A7590144A740014693
66139 +:10247000A74801488F45010830B800201700000226
66140 +:10248000240300092403000130CD0002A743014AC0
66141 +:102490003C04004111A00003000018213C0401414C
66142 +:1024A0002403000130C9000451200005AF83000857
66143 +:1024B0003C0600100086202524030001AF8300089D
66144 +:1024C000AF44100000000000000000000000000009
66145 +:1024D000000000008F8E000811C000040000000002
66146 +:1024E0008F4210000441FFFE000000008F7F0000BB
66147 +:1024F000276400088F91003CAF9F0004948500087A
66148 +:102500009490000A9499000C30AFFFFF0010C400B3
66149 +:102510003323FFFF11F100A6030320253C0E080022
66150 +:102520008DCE04443C0C08008D8C044000E88821CA
66151 +:102530002626FFFE01C628210000682100A6F82BF0
66152 +:10254000018D2021009F80213C010800AC2504441E
66153 +:102550003C010800AC30044024E200083042FFFF98
66154 +:102560003047000710E000038F830018244F000756
66155 +:1025700031E2FFF83106FFFF30C800070043802139
66156 +:1025800032191FFF0359C021AF83001CAF990018F7
66157 +:10259000271B4000AF590084110000038F8C0020DE
66158 +:1025A00024C5000730A6FFF88F84002800CC28211E
66159 +:1025B00000A4F82B17E00002AF8C002400A428230D
66160 +:1025C000AF850020AF4500803C0408008C840434B3
66161 +:1025D00003454821340E8000012E6821108000053B
66162 +:1025E000AF8D0038939100172406000E12260011BB
66163 +:1025F0002407043F3C021000AF4201788F8800148A
66164 +:10260000250F00010A0001EFAF8F00140E0005C472
66165 +:1026100000E020218F8800143C0B08008D6B048C97
66166 +:102620003C0A08008D4A0488250F00010A0001EFCA
66167 +:10263000AF8F00143C021000A7470148AF42017859
66168 +:102640000A0004CE8F88001424040F001184003D7A
66169 +:1026500030CE002015C0000224030009240300012D
66170 +:102660000A00021AA743014A0A00020DA7400146C8
66171 +:1026700094EF000894F1000A94F0000C8F8C003C59
66172 +:10268000001174003207FFFF31EDFFFF11AC00377E
66173 +:1026900001C720253C1808008F1804443C0F08008F
66174 +:1026A0008DEF0440000080210308682101A8382B29
66175 +:1026B00001F0702101C760213C010800AC2D0444E9
66176 +:1026C0003C010800AC2C04400A00027A8F840018F8
66177 +:1026D0003C0208008C42047C3C0308008C630454D8
66178 +:1026E0003C1F08008FFF04783C1808008F18045026
66179 +:1026F000004838210068802100E8282B03E43021BD
66180 +:102700000208402B0304882100C57021022878218B
66181 +:102710003C010800AC3004543C010800AC2F0450CC
66182 +:102720003C010800AC27047C3C010800AC2E047876
66183 +:102730000A00027A8F840018A74001460A00043577
66184 +:102740008F91001830CD002015A0FFC52403000D87
66185 +:10275000240300050A00021AA743014A974E010408
66186 +:1027600025C5FFF00A00038130A4FFFF8F980040C9
66187 +:102770001498FFC8000010213C0508008CA5046CCB
66188 +:102780003C1F08008FFF046800A8C8210328302BD5
66189 +:1027900003E22021008640213C010800AC39046C92
66190 +:1027A0003C010800AC2804680A00027A8F840018F3
66191 +:1027B0008F8C0040148CFF5900E8C8213C18080099
66192 +:1027C0008F18046C3C1108008E3104682723FFFE2B
66193 +:1027D00003034821000010210123302B0222702125
66194 +:1027E00001C668213C010800AC29046C3C010800CA
66195 +:1027F000AC2D04680A0004A524E200088F88003884
66196 +:102800003C03FFFF8D02000C0043F82403E4C825BD
66197 +:10281000AD19000C0A00038F30CBFFFF0A0003C381
66198 +:10282000AE000000974A0104920400048E26000CBA
66199 +:10283000014458212579FFF200C7C0243325FFFF4A
66200 +:1028400003053825AE27000C0A0002E68E050010AD
66201 +:102850003C0DFFFF8D0A0010014D582401646025D6
66202 +:10286000AD0C00100A00038F30CBFFFF974301042B
66203 +:10287000920E00048E290010006E1021244DFFEEF0
66204 +:102880000127602431A8FFFF0188F825AE3F001022
66205 +:102890000A0002E68E0500108E0F000CAE0000004C
66206 +:1028A00000078880023028210A0002B8ACAF00205F
66207 +:1028B0001460000D3058FFFF3C04FFFF0044682403
66208 +:1028C00001A47026000E602B000D102B004CF82484
66209 +:1028D00013E00002000000000000000D8CAF0000BB
66210 +:1028E0000A00025001E410253B03FFFF0003882B80
66211 +:1028F0000018802B0211202410800002000000002C
66212 +:102900000000000D8CB900000A0002503722FFFFC2
66213 +:102910003084FFFF30A5FFFF108000070000182162
66214 +:10292000308200011040000200042042006518219E
66215 +:102930001480FFFB0005284003E000080060102120
66216 +:1029400010C00007000000008CA2000024C6FFFF9A
66217 +:1029500024A50004AC82000014C0FFFB2484000402
66218 +:1029600003E000080000000010A0000824A3FFFFFF
66219 +:10297000AC86000000000000000000002402FFFF01
66220 +:102980002463FFFF1462FFFA2484000403E00008BC
66221 +:1029900000000000308EFFFF30D8FFFF00057C00F4
66222 +:1029A00001F8602539CDFFFF01AC5021014C582BB7
66223 +:1029B000014B4821000944023127FFFF00E8302184
66224 +:1029C0000006240230C5FFFF00A418213862FFFF73
66225 +:1029D00003E000083042FFFF3C0C08008D8C0484AB
66226 +:1029E000240BFF8027BDFFD001845021014B4824D8
66227 +:1029F000AF4900203C0808008D080484AFB20020D5
66228 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7
66229 +:102A1000936600040104382130E4007F009A1021FD
66230 +:102A20003C0300080043902130C500200360802152
66231 +:102A30003C080111277B000814A000022646007004
66232 +:102A40002646006C9213000497510104920F000473
66233 +:102A50003267000F322EFFFF31ED004001C72823FF
66234 +:102A600011A0000500004821925900BC3338000431
66235 +:102A70001700009000000000924300BC307F00046B
66236 +:102A800013E0000F0000000010A0000D0000000087
66237 +:102A9000960E0002240AFF8000A7602125CDFFFECC
66238 +:102AA000A74D1016920B0004014B2024308200FF2A
66239 +:102AB00010400085010C40253C0F0400010F40250B
66240 +:102AC0008F5301780660FFFE2404000AA7440140EA
66241 +:102AD000960D00022404000931AC0007000C5823B5
66242 +:102AE000316A0007A74A0142960200022443FFFE12
66243 +:102AF000A7430144A7400146975F0104A75F01482F
66244 +:102B00008F590108333800205300000124040001CC
66245 +:102B1000920F000431EE001015C000023483001043
66246 +:102B200000801821A743014A0000000000000000B7
66247 +:102B30000000000000000000AF481000000000008E
66248 +:102B40000000000000000000000000008F51100095
66249 +:102B50000621FFFE3113FFFF12600003000000009A
66250 +:102B60008F481018ACC8000096030006307FFFFFA6
66251 +:102B700027F900020019988200138880023B302157
66252 +:102B80008CD800001520005700183402920300046E
66253 +:102B90002405FF8000A3F82433F100FF1220002C4D
66254 +:102BA00000000000924700BC30F2000212400028F2
66255 +:102BB00000000000974B100C2562FFFEA742101684
66256 +:102BC000000000003C0A040035490030AF49100005
66257 +:102BD00000000000000000000000000000000000F5
66258 +:102BE0008F4C10000581FFFE000000009749100C7B
66259 +:102BF0008F51101C00C020213127FFFF24F200302C
66260 +:102C0000001218820003288000BBF8213226FFFF43
66261 +:102C1000AFF100000E0005B300112C020013C880B4
66262 +:102C2000033B98218E78000000027400AFB80010BA
66263 +:102C30008FA80010310FFFFFAFAF00108FA400105E
66264 +:102C400001C46825AFAD00108FA60010AE6600006D
66265 +:102C500097730008976D000A9766000C8F8A003CF6
66266 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF
66267 +:102C7000016C2025960600023C10100024D30008A9
66268 +:102C80000E00013B3264FFFF974C01040E00014926
66269 +:102C90003184FFFFAF5001788FBF00288FB300242D
66270 +:102CA0008FB200208FB1001C8FB0001803E0000825
66271 +:102CB00027BD003010A0FF700000000024A5FFFC1D
66272 +:102CC0000A0005EC240900048CD10000AF51101853
66273 +:102CD0008F5301780660FF7A2404000A0A00060177
66274 +:102CE0000000000000A7C8218F8800388F4E101CFC
66275 +:102CF0000019C0820018788001E82021AC8E000005
66276 +:102D0000000E2C0200C020210E0005B331C6FFFFCB
66277 +:102D1000023B28218CAD000000025400004030210D
66278 +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8
66279 +:102D30008FA2001001424825AFA900108FA70010F4
66280 +:102D40000A000631ACA700008F8F0040148FFFC926
66281 +:102D50000000000097420104960B00023C050800A9
66282 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D
66283 +:102D70008E310468012A382124F2FFFE00B240217E
66284 +:102D80000012FFC30112C82B023FC02103192021EA
66285 +:102D90003C010800AC28046C3C010800AC24046829
66286 +:102DA0000A00066B0000000000A4102B1040000970
66287 +:102DB000240300010005284000A4102B04A00003F8
66288 +:102DC000000318405440FFFC000528401060000735
66289 +:102DD000000000000085302B14C0000200031842E0
66290 +:102DE000008520231460FFFB0005284203E0000853
66291 +:102DF000008010218F85002C27BDFFE800053027BB
66292 +:102E00002CC300012CA400020083102510400003F5
66293 +:102E1000AFBF00102405007FAF85002C00052827D8
66294 +:102E200030A5FFFF0E000592240426F58F830030A5
66295 +:102E3000240402BD004030210083382B10E000093B
66296 +:102E400024050001000420400083102B04800003AF
66297 +:102E5000000528405440FFFC0004204010A000085A
66298 +:102E600000C350210064402B1500000200052842D9
66299 +:102E70000064182314A0FFFB0004204200C350216B
66300 +:102E80008FBF0010000A4C02312200FF27BD00183E
66301 +:102E9000AF8A002C03E00008AF8900300A00002A46
66302 +:102EA00000000000000000000000000D7478703683
66303 +:102EB0002E322E3300000000060203000000000046
66304 +:102EC000000001360000EA60000000000000000081
66305 +:102ED00000000000000000000000000000000000F2
66306 +:102EE00000000000000000000000000000000000E2
66307 +:102EF00000000000000000000000000000000016BC
66308 +:102F000000000000000000000000000000000000C1
66309 +:102F100000000000000000000000000000000000B1
66310 +:102F200000000000000000000000000000000000A1
66311 +:102F3000000000000000138800000000000005DC15
66312 +:102F4000000000000000000010000003000000006E
66313 +:102F50000000000D0000000D3C02080024423C204F
66314 +:102F60003C03080024633DD4AC4000000043202B08
66315 +:102F70001480FFFD244200043C1D080037BD7FFC87
66316 +:102F800003A0F0213C100800261000A83C1C0800FB
66317 +:102F9000279C3C200E0002BA000000000000000D3B
66318 +:102FA0008F8300383C088000350700708CE50000F6
66319 +:102FB000008330253C02900000C22025AF85003000
66320 +:102FC000AF4400208F4900200520FFFE3C03800015
66321 +:102FD000346200708C4500008F8600303C19080078
66322 +:102FE0008F39007C3C0E08008DCE007800A620238F
66323 +:102FF00003245821000078210164682B01CF60214F
66324 +:10300000018D50213C010800AC2B007C3C010800E4
66325 +:10301000AC2A007803E00008000000000A0000412C
66326 +:10302000240400018F8400383C05800034A2000194
66327 +:103030000082182503E00008AF43002003E00008E9
66328 +:10304000000010213084FFFF30A5FFFF1080000733
66329 +:1030500000001821308200011040000200042042CC
66330 +:10306000006518211480FFFB0005284003E00008DC
66331 +:103070000060102110C00007000000008CA20000BA
66332 +:1030800024C6FFFF24A50004AC82000014C0FFFB8F
66333 +:103090002484000403E000080000000010A00008E1
66334 +:1030A00024A3FFFFAC860000000000000000000029
66335 +:1030B0002402FFFF2463FFFF1462FFFA248400044C
66336 +:1030C00003E0000800000000308AFFFF93A800130F
66337 +:1030D000A74A014497490E1630C600FF3C02100073
66338 +:1030E000A7490146AF450148A3460152A748015AE6
66339 +:1030F000AF4701608FA400188FA30014A7440158A4
66340 +:10310000AF43015403E00008AF42017803E0000838
66341 +:10311000000000003C038000346200708C49000015
66342 +:103120008F8800002484000727BDFFF83084FFF853
66343 +:10313000AF890030974D008A31ACFFFFAFAC000083
66344 +:103140008FAB0000016850232547FFFF30E61FFFCB
66345 +:1031500000C4282B14A0FFF73C0C8000358B0070B6
66346 +:103160008D6A00003C0708008CE700843C060800DC
66347 +:103170008CC6008000081082014918230002788064
66348 +:1031800000E370210000202101C3C82B00C4C0212E
66349 +:1031900001FA4021031948212502400027BD0008FB
66350 +:1031A0003C010800AC2E00843C010800AC290080E2
66351 +:1031B00003E00008000000008F8200002486000762
66352 +:1031C00030C5FFF800A2182130641FFF03E000089B
66353 +:1031D000AF8400008F8700388F8A004027BDFFB87A
66354 +:1031E0008F860044AFB60040AFBF0044AFB5003C8F
66355 +:1031F000AFB40038AFB30034AFB20030AFB1002C81
66356 +:10320000AFB000288F4501048D4900ACAF47008066
66357 +:103210008CC8002000A938230000B021AF480E1050
66358 +:103220008F440E1000004821AF440E148CC20024BD
66359 +:10323000AF420E188F430E18AF430E1C10E001254D
66360 +:103240002D230001936B0008116000D400000000E2
66361 +:10325000976E001031CDFFFF00ED602B158000CF81
66362 +:103260000000000097700010320FFFFFAF4F0E00FC
66363 +:103270008F520000325100081220FFFD00000000B4
66364 +:1032800097540E088F460E043285FFFF30B30001BD
66365 +:1032900012600132000000000000000D30B8A040B4
66366 +:1032A00024150040131500C030A9A0001120012DE5
66367 +:1032B00000000000937F000813E0000800000000F9
66368 +:1032C00097630010306BFFFF00CB402B1100000311
66369 +:1032D00030AC00401180012300000000A785003CB5
66370 +:1032E000AF8600349366000800E02821AFA70020D5
66371 +:1032F00014C0012427B30020AF60000C9782003C6B
66372 +:103300003047400014E00002240300162403000E9E
66373 +:1033100024194007A363000AAF790014938A003E82
66374 +:103320008F740014315800070018AA4002959025A8
66375 +:10333000AF7200149784003C8F700014309100101D
66376 +:1033400002117825AF6F0014978E003C31CD000834
66377 +:1033500011A00147000028218F6700143C021000D3
66378 +:103360003C0C810000E22825AF65001497460E0A48
66379 +:103370002408000E3405FFFC30C3FFFF006C582505
66380 +:10338000AF6B0004A3680002937F000A27E90004E2
66381 +:10339000A369000A9786003C9363000A30CC1F00A3
66382 +:1033A000000C598301634021251F0028A37F0009D9
66383 +:1033B00097490E0CA769001093790009272A00028B
66384 +:1033C000315800070018A82332B10007A371000B81
66385 +:1033D00093740009976400108F910034978F003C1C
66386 +:1033E000329200FF024480210205702131ED00403D
66387 +:1033F00011A0000531C4FFFF0091282B3C12800072
66388 +:1034000010A000140000A0210224382B14E0011B9E
66389 +:103410008FA500208F4D0E14AF4D0E108F420E1C45
66390 +:10342000AF420E18AF440E008F4F000031EE00087F
66391 +:1034300011C0FFFD0000000097540E080080882195
66392 +:1034400000009021A794003C8F500E04241400012A
66393 +:10345000AF900034976400103095FFFF8E68000035
66394 +:103460000111F82317E00009AE7F00008F650014FA
66395 +:103470008F8B004434A60040AF6600148F4C0E10B2
66396 +:10348000AD6C00208F430E18AD63002493670008D5
66397 +:1034900014E000D2000000000E00009E2404001082
66398 +:1034A0008F8900483C08320000402821312600FF67
66399 +:1034B0000006FC0003E8502525390001AF990048BB
66400 +:1034C000AC4A0000937800099370000A330400FFAF
66401 +:1034D00000047400320F00FF01CF6825AC4D0004DA
66402 +:1034E0008F820048064000EAACA20008ACA0000CA5
66403 +:1034F0009783003C306B0008156000022628000608
66404 +:1035000026280002974E0E148F450E1C8F6700046C
66405 +:10351000936D000231C4FFFF31A200FFAFA2001083
66406 +:103520008F6C0014AFA800180E00008BAFAC001415
66407 +:10353000240400100E0000C7000000008E7200007E
66408 +:1035400016400005000000008F6400142405FFBF32
66409 +:1035500000859824AF7300148F79000C033538214F
66410 +:10356000AF67000C9375000816A00008000000006B
66411 +:1035700012800006000000008F7F00143C0BEFFF5C
66412 +:103580003568FFFE03E84824AF690014A3740008FF
66413 +:103590008FA500200A00024602202021AF470E001E
66414 +:1035A0000A0000F5000000008F5901780720FFFE97
66415 +:1035B000241F08008F840000AF5F0178974B008ABA
66416 +:1035C000316AFFFF014448232528FFFF31021FFF16
66417 +:1035D0002C4300081460FFF9000000008F8E0048A3
66418 +:1035E0008F8D003800C048210344202125C60001EA
66419 +:1035F000240C0F00AF86004800E9382324864000E1
66420 +:1036000031CA00FF11AC0005240800019391003E6F
66421 +:103610003230000700107A4035E80001000AAC00A3
66422 +:103620003C18010002B8A025AC9440008F930048DC
66423 +:1036300030B2003630A40008ACD3000410800097EC
66424 +:1036400001123025974E0E0A8F8D00003C0281003A
66425 +:1036500031CCFFFF25AB0008018240253C03100060
66426 +:1036600031651FFF25390006241F000EAF48016099
66427 +:1036700000C33025A75F015AAF850000A759015844
66428 +:1036800014E0000A8F93003824120F0052720002D7
66429 +:103690002416000134C600408F580E108F94004449
66430 +:1036A000AE9800208F550E18AE9500248F450E144D
66431 +:1036B000AF4501448F590E1CAF590148A34A01522E
66432 +:1036C0003C0A1000AF460154AF4A017814E0FEDD19
66433 +:1036D0002D2300010076A025128000178FBF004423
66434 +:1036E0008F84003824160F0010960084000000001C
66435 +:1036F0008F45017804A0FFFE24150F001095006E81
66436 +:10370000000000008F470E14240202403C1F1000EE
66437 +:10371000AF4701448F440E1CAF440148A3400152FF
66438 +:10372000A740015AAF400160A7400158AF42015481
66439 +:10373000AF5F01788FBF00448FB600408FB5003C6B
66440 +:103740008FB400388FB300348FB200308FB1002CAB
66441 +:103750008FB0002803E0000827BD004814C0FED049
66442 +:1037600030B8A0408F420E148F84004400004821DE
66443 +:10377000AC8200208F510E1CAC9100240A00020E76
66444 +:103780002D2300018F910034978A003C3C12800069
66445 +:103790000220A821315800401700FF300000A0216E
66446 +:1037A000976900108F9200343139FFFF13320035D2
66447 +:1037B00000002021008048211480FEA000A03821B4
66448 +:1037C0008F420E148F840044AC8200208F510E1C57
66449 +:1037D000AC9100240A00020E2D230001936A000917
66450 +:1037E0009378000B315000FF330F00FF020F702160
66451 +:1037F00025C2000A3050FFFF0E00009E020020216B
66452 +:103800008F8600483C1F410024CD0001AF8D004849
66453 +:10381000936C000930C600FF00064400318300FFAE
66454 +:10382000246B0002010B4825013FC825AC5900005C
66455 +:103830008F67000C97440E1400F22825AC45000455
66456 +:103840008F450E1C8F670004936A00023084FFFFCF
66457 +:10385000315800FFAFB800108F6F0014AFB10018DF
66458 +:103860000E00008BAFAF00140A0001A60200202159
66459 +:10387000AF6000040A00013EA36000020A00024695
66460 +:1038800000002021000090210A0001702414000192
66461 +:103890003C1280000A000195ACB2000C8F91000030
66462 +:1038A00025240002A744015826300008320F1FFFCC
66463 +:1038B0000A0001F9AF8F0000AF40014C1120002C2D
66464 +:1038C000000000008F590E10AF5901448F430E18AD
66465 +:1038D000240200403C1F1000AF430148A3400152A6
66466 +:1038E000A740015AAF400160A7400158AF420154C0
66467 +:1038F000AF5F01780A0002278FBF00441120000645
66468 +:103900000000000097460E0830CC004015800002F1
66469 +:10391000000000000000000D8F4D017805A0FFFEA3
66470 +:103920000000000097530E103C120500240E2000EA
66471 +:10393000326AFFFF0152C025AF58014C8F4F0E1461
66472 +:103940003C021000AF4F01448F500E1CAF50014895
66473 +:10395000A34001528F840038A740015AAF40016054
66474 +:10396000A7400158AF4E01540A000215AF4201783A
66475 +:103970008F490E14AF4901448F430E1C0A00028E7A
66476 +:10398000240200403C0E20FF27BDFFE03C1A8000CF
66477 +:103990003C0F800835CDFFFDAFBF001CAFB2001853
66478 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC
66479 +:1039B0000000000000000000000000000000000007
66480 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC
66481 +:1039D0003C0660048CC95000240AFF7F3C11600043
66482 +:1039E000012A40243507380CACC750008E24043817
66483 +:1039F00024050009AF4500083083FFFF38622F71AE
66484 +:103A00002450C0B3AF8000480E000068AF800000B3
66485 +:103A100052000001AE20442C0E0004353C11800001
66486 +:103A20000E000ED9363000708F8A00403C1208001C
66487 +:103A300026523C88020088218E0800008F5F00001B
66488 +:103A40003BF900013338000113000017AF88003044
66489 +:103A5000022048218D2700003C0F08008DEF006CEC
66490 +:103A60003C0C08008D8C006800E8C02301F8282178
66491 +:103A70000000682100B8302B018D582101664021DB
66492 +:103A80003C010800AC25006C3C010800AC28006833
66493 +:103A90008F44000038830001306200011440FFEDC4
66494 +:103AA00000E04021AF8700308E0C00003C0508008C
66495 +:103AB0008CA5006C3C0408008C84006801883023CD
66496 +:103AC00000A638210000102100E6402B00821821BA
66497 +:103AD0000068F8213C010800AC27006C3C0108009C
66498 +:103AE000AC3F00688F49010025590088AF99004418
66499 +:103AF000AF890038AF4900208E070000AF87003043
66500 +:103B00008F4D017805A0FFFE000000008E0600002A
66501 +:103B10003C0B08008D6B00743C0408008C84007022
66502 +:103B200000C728230165F8210000102103E5402B80
66503 +:103B30000082382100E8C821240908003C0108005F
66504 +:103B4000AC3F00743C010800AC390070AF4901780B
66505 +:103B500093580108A398003E938F003E31EE000178
66506 +:103B600015C000158F830038240E0D00106E00194B
66507 +:103B7000240F0F00106F001D00000000915900007D
66508 +:103B800024180050332900FF113800043C1F400066
66509 +:103B9000AF5F01380A0002E7000000000E00090EC6
66510 +:103BA000000000008F8A00403C1F4000AF5F0138DA
66511 +:103BB0000A0002E700000000938D003E31AC0006D1
66512 +:103BC000000C51000E0000CE0152D8210A00034320
66513 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A
66514 +:103BE000000000000A0003438F8A00403C1B0800CD
66515 +:103BF000277B3D280E0000CE000000000A00034392
66516 +:103C00008F8A004090AA00018FAB00108CAC00108E
66517 +:103C10003C0300FF8D680004AD6C00208CAD0014E7
66518 +:103C200000E060213462FFFFAD6D00248CA7001816
66519 +:103C30003C09FF000109C024AD6700288CAE001CC0
66520 +:103C40000182C82403197825AD6F0004AD6E002CE5
66521 +:103C50008CAD0008314A00FFAD6D001C94A9000234
66522 +:103C60003128FFFFAD68001090A70000A56000029A
66523 +:103C7000A1600004A167000090A30002306200FF71
66524 +:103C80000002198210600005240500011065000E75
66525 +:103C90000000000003E00008A16A00018CD80028A1
66526 +:103CA000354A0080AD7800188CCF0014AD6F001439
66527 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF
66528 +:103CC00003E00008AD64000C8CCD001CAD6D001845
66529 +:103CD0008CC90014AD6900148CC80024AD680008BC
66530 +:103CE0008CC70020AD67000C8CC200148C8300646C
66531 +:103CF0000043C82B13200007000000008CC20014F2
66532 +:103D0000144CFFE400000000354A008003E0000886
66533 +:103D1000A16A00018C8200640A000399000000007F
66534 +:103D200090AA000027BDFFF88FA9001CA3AA0000DD
66535 +:103D30008FAE00003C0FFF808FA8001835E2FFFF18
66536 +:103D40008CCD002C01C26024AFAC0000A120000487
66537 +:103D500000E06021A7A000028FB800008D270004BA
66538 +:103D60000188182100A0582100C05021006D28268C
66539 +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E
66540 +:103D800034D9FFFF3C02FF0003193024000D1DC091
66541 +:103D9000010EC82400E2C02400C370250319782551
66542 +:103DA000AD2E0000AD2F00048D450024AFAE000005
66543 +:103DB000AD2500088D4D00202405FFFFAD2D000C22
66544 +:103DC000956800023107FFFFAD27001091660018CB
66545 +:103DD00030C200FF000219C2506000018D4500345E
66546 +:103DE000AD2500148D67000827BD0008AD27001C15
66547 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA
66548 +:103E0000AD20001803E00008AD20002027BDFFE032
66549 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC
66550 +:103E20009098000000C088213C0D00FF330F007FF8
66551 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0
66552 +:103E4000A0CE000194A6001EA22000048CAB00149A
66553 +:103E50008E29000400A08021016C2824012A40241E
66554 +:103E60000080902101052025A6260002AE24000432
66555 +:103E700026050020262400080E00007624060002F5
66556 +:103E800092470000260500282624001400071E0083
66557 +:103E90000003160324060004044000032403FFFF6C
66558 +:103EA000965900023323FFFF0E000076AE23001068
66559 +:103EB000262400248FBF001C8FB200188FB100147D
66560 +:103EC0008FB0001024050003000030210A0000809C
66561 +:103ED00027BD002027BDFFD8AFB1001CAFB0001830
66562 +:103EE000AFBF002090A80000240200018FB0003C6A
66563 +:103EF0003103003F00808821106200148FAA00382F
66564 +:103F0000240B0005506B0016AFAA001000A0202162
66565 +:103F100000C028210E0003DC02003021922400BCE6
66566 +:103F2000308300021060000326060030ACC00000A1
66567 +:103F300024C600048FBF00208FB1001C8FB0001872
66568 +:103F400000C0102103E0000827BD002801403821EF
66569 +:103F50000E00035AAFB000100A0004200000000059
66570 +:103F60000E0003A1AFB000140A00042000000000FE
66571 +:103F70003C02000A034218213C04080024843D6CE2
66572 +:103F80002405001A000030210A000080AF8300548D
66573 +:103F90003C038000346200708C48000000A058216F
66574 +:103FA00000C04821308A00FFAF8800308F4401787C
66575 +:103FB0000480FFFE3C0C8000358600708CC500003C
66576 +:103FC0003C0308008C6300743C1808008F180070D4
66577 +:103FD00000A82023006468210000C82101A4782BD8
66578 +:103FE0000319702101CF60213C010800AC2D007441
66579 +:103FF0003C010800AC2C00708F480E14AF480144FF
66580 +:10400000AF47014CA34A0152A74B01589346010800
66581 +:1040100030C5000854A0000135291000934B090059
66582 +:1040200024070050316A00FF11470007000000001C
66583 +:104030008F450E1CAF450148AF4901543C091000A3
66584 +:1040400003E00008AF490178934D010831A800084A
66585 +:104050001100001000000000934F010831EE001025
66586 +:1040600051C00001352900083C04080090843DD06F
66587 +:10407000A34401508F4309A4AF4301488F4209A0D4
66588 +:10408000AF420144AF4901543C09100003E000086D
66589 +:10409000AF4901783C1908008F393D8C333800084E
66590 +:1040A0005700FFF1352900080A00047300000000E2
66591 +:1040B00024070040AF470814AF4008108F4209445E
66592 +:1040C0008F4309508F4409548F45095C8F46094C32
66593 +:1040D000AF820064AF830050AF84004CAF85005CBA
66594 +:1040E00003E00008AF8600609346010930C5007FF9
66595 +:1040F000000518C0000521400083102103E00008DE
66596 +:10410000244200883C09080091293D9124A800021E
66597 +:104110003C05110000093C0000E8302500C51825C9
66598 +:1041200024820008AC83000003E00008AC80000497
66599 +:104130009347010B8F4A002C974F09083C18000E3B
66600 +:104140000358482131EEFFFF000E41C0AF48002C5C
66601 +:1041500097430908952C001A008040212403000190
66602 +:10416000318BFFFFAC8B00008D2D001C00A058216F
66603 +:1041700000C06021AC8D00048D24002030E7004099
66604 +:10418000AD04000891220019304400031083004858
66605 +:104190002885000214A00062240600021086005642
66606 +:1041A00024190003109900660000000010E0003A96
66607 +:1041B000000000003C07080094E73D8624E200016F
66608 +:1041C000934F0934934709219525002A31EE00FFCA
66609 +:1041D000000E488230ED00FF978700580009360036
66610 +:1041E000000D1C003044FFFF00C310250044C02513
66611 +:1041F00000A778213C19400003197025000F4C00DE
66612 +:10420000AD090004AD0E0000934D09203C030006EB
66613 +:1042100025090014000D360000C32025AD04000858
66614 +:104220008F59092C24E5000130A27FFFAD19000C45
66615 +:104230008F580930A782005825020028AD180010B9
66616 +:104240008F4F0938AD0F0014AD2B00048F4E09407D
66617 +:10425000AD2E0008934D09373C05080090A53D9010
66618 +:104260008F4409488F46094031A700FF00EC182110
66619 +:10427000008678230003C7000005CC0003196025E1
66620 +:1042800031E8FFFC01885825AD2B000CAD20001053
66621 +:1042900003E00008AF4A002C3C0D080095AD3D86B8
66622 +:1042A0003C0E080095CE3D800A0004C901AE1021E5
66623 +:1042B0003C05080094A53D8A3C06080094C63D8054
66624 +:1042C0003C18080097183D7C952E002400A6782104
66625 +:1042D00001F86823000E240025A2FFF200821825B1
66626 +:1042E00024190800AD03000CAD190014AD00001036
66627 +:1042F0000A0004C4250800189526002495250028E6
66628 +:104300000006C40000057C00370E810035ED080072
66629 +:10431000AD0E000CAD0D00100A0004C425080014F9
66630 +:104320001480FFA200000000952400240004140063
66631 +:1043300034430800AD03000C0A0004C42508001033
66632 +:104340003C03080094633D8A3C05080094A53D8029
66633 +:104350003C06080094C63D7C953900249538002819
66634 +:10436000006520210086782300196C000018740075
66635 +:1043700025E2FFEE01C2202535A3810024190800A3
66636 +:10438000AD03000CAD040010AD190018AD00001411
66637 +:104390000A0004C42508001C03E00008240201F4FC
66638 +:1043A00027BDFFE8AFB00010AFBF00140E000060E3
66639 +:1043B0000080802124050040AF4508148F83005001
66640 +:1043C0008F84004C8F85005C0070182100641023DE
66641 +:1043D00018400004AF830050AF6300548F66005450
66642 +:1043E000AF86004C1200000C000000008F440074E7
66643 +:1043F000936800813409FA002D07000710E00005DA
66644 +:1044000000891021936C0081240B01F4018B50046E
66645 +:1044100001441021AF62000C8F4E095C01C5682376
66646 +:1044200019A000048FBF00148F4F095CAF8F005C90
66647 +:104430008FBF00148FB000100A00006227BD001863
66648 +:104440008F8400648F8300508F82004CAF640044DF
66649 +:10445000AF63005003E00008AF6200543C038000EB
66650 +:10446000346200708C43000027BDFFF8308700FFE6
66651 +:1044700030A900FF30C800FFAF8300308F440178BF
66652 +:104480000480FFFE3C028000345900708F38000029
66653 +:10449000A3A700033C0708008CE700748FAC000062
66654 +:1044A0003C0608008CC60070030378233C0E7FFF97
66655 +:1044B00000EFC82135CDFFFF00005021018D2824D9
66656 +:1044C00000CA1821000847C0032F202B00A8102580
66657 +:1044D0000064C021AFA200003C010800AC390074A8
66658 +:1044E0003C010800AC380070934F010AA3A0000201
66659 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A
66660 +:1045000035CDFFFF018D4824000B5600012A4025C0
66661 +:10451000240730002406FF803C05100027BD00085A
66662 +:10452000AF48014CAF470154A7400158A346015280
66663 +:1045300003E00008AF45017827BDFFE8AFBF0014D6
66664 +:10454000AFB000108F6500743C068000309000FF13
66665 +:1045500000A620250E000060AF6400749363000580
66666 +:10456000346200080E000062A362000502002021F0
66667 +:104570008FBF00148FB00010240500052406000131
66668 +:104580000A00057027BD001827BDFFE03C0380002E
66669 +:10459000AFB00010AFBF0018AFB1001434620070AC
66670 +:1045A0008C470000309000FF30A800FFAF8700303C
66671 +:1045B0008F4401780480FFFE3C18800037110070A2
66672 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1
66673 +:1045D0008D4A007001E7702301AE282100005821A8
66674 +:1045E00000AE302B014B4821012638213C01080048
66675 +:1045F000AC250074000088213C010800AC27007045
66676 +:104600001100000F000000008F6200742619FFFFE8
66677 +:104610003208007F0002FE0233E5007F150000062D
66678 +:10462000332200FF2407FF800207202624A3FFFF78
66679 +:1046300000838025320200FF0040802124111008F1
66680 +:104640000E000060000000008F49081831250004AA
66681 +:1046500014A0FFFD3218007F001878C000187140C8
66682 +:1046600001CF682125AC0088AF4C0818274A098083
66683 +:104670008D4B0020AF4B01448D460024AF460148CE
66684 +:10468000A35001500E000062A740015802201021E3
66685 +:104690008FBF00188FB100148FB0001003E0000826
66686 +:1046A00027BD002027BDFFE8308400FFAFBF00100A
66687 +:1046B0000E0005BB30A500FF8F8300508FBF001098
66688 +:1046C000344500402404FF903C02100027BD001830
66689 +:1046D000AF43014CA3440152AF45015403E000082D
66690 +:1046E000AF4201789343093E306200081040000D4C
66691 +:1046F0003C0901013528080AAC8800008F47007486
66692 +:10470000AC8700043C06080090C63D9030C5001000
66693 +:1047100050A00006AC8000088F6A0060AC8A0008D8
66694 +:104720002484000C03E00008008010210A00062207
66695 +:104730002484000C27BDFFE8AFBF0014AFB0001009
66696 +:104740009346093F00A050210005288000853823AA
66697 +:1047500030C200FF240300063C09080095293D866D
66698 +:1047600024E8FFD824050004104300372406000283
66699 +:104770009750093C3C0F020400063400320EFFFF44
66700 +:1047800001CF6825AC8D0000934C093E318B002091
66701 +:104790001160000800000000934309363C02010349
66702 +:1047A000345F0300307900FF033FC0252405000873
66703 +:1047B000AC98000493430934935909210005F88209
66704 +:1047C000306200FF0002C082332F00FF00186E002D
66705 +:1047D000000F740001AE6025018920253C094000CE
66706 +:1047E00000898025ACF0FFD8934309378F4F0948E3
66707 +:1047F0008F580940306200FF004AC821033F7021F2
66708 +:1048000001F86023000E6F0001A650253185FFFCE2
66709 +:10481000001F58800145482501683821AD09002056
66710 +:104820000E00006024F00028240400040E00006242
66711 +:10483000A364003F020010218FBF00148FB000104E
66712 +:1048400003E0000827BD00180A0006352406001200
66713 +:1048500027BDFFD024090010AFB60028AFB5002453
66714 +:10486000AFB40020AFB10014AFB000103C0108009D
66715 +:10487000A0293D90AFBF002CAFB3001CAFB2001811
66716 +:1048800097480908309400FF3C02000E3107FFFFF3
66717 +:10489000000731C0AF46002C974409089344010B30
66718 +:1048A00030B500FF03428021308300300000B0218A
66719 +:1048B0001060012500008821240C00043C01080040
66720 +:1048C000A02C3D90934B093E000B5600000A2E038E
66721 +:1048D00004A0016000000000AF400048934F010BAE
66722 +:1048E00031EE002011C00006000000009358093E80
66723 +:1048F00000189E0000139603064001890000000086
66724 +:104900009344010B30830040106000038F930050EC
66725 +:104910008F8200502453FFFF9347093E30E6000882
66726 +:1049200014C0000224120003000090219619002CEC
66727 +:1049300093580934934F0937A7990058330C00FF57
66728 +:1049400031EE00FF024E6821000D5880016C5021AD
66729 +:10495000015140213C010800A4283D869205001821
66730 +:1049600030A900FF010918213C010800A4233D885B
66731 +:104970009211001816200002000000000000000D37
66732 +:104980003C010800A4233D8A3C010800A4203D808E
66733 +:104990003C010800A4203D7C935F010B3063FFFFC6
66734 +:1049A00033F00040120000022464000A2464000B6B
66735 +:1049B0003091FFFF0E00009E022020219358010B32
66736 +:1049C0003C08080095083D8A0040202100185982C3
66737 +:1049D000316700010E00049A01072821934C010B56
66738 +:1049E0008F4B002C974E09083C0F000E034F4021BF
66739 +:1049F00031CDFFFF000D51C0AF4A002C974309088D
66740 +:104A00009505001A004038212404000130A9FFFF59
66741 +:104A1000AC4900008D06001C00404821318A00404E
66742 +:104A2000AC4600048D020020ACE20008910300199E
66743 +:104A300030630003106400EC28790002172001188D
66744 +:104A4000241000021070010C241F0003107F011EAF
66745 +:104A500000000000114000DE000000003C090800DA
66746 +:104A600095293D8625220001935F0934934E092143
66747 +:104A70009504002A33F900FF0019C08231CF00FFEE
66748 +:104A8000978E005800184600000F6C00010D80251D
66749 +:104A90003045FFFF02051025008E50213C034000E9
66750 +:104AA00000433025000A6400ACEC0004ACE60000D2
66751 +:104AB000935F09203C19000624EC0014001FC60077
66752 +:104AC00003197825ACEF00088F48092C25CD00018B
66753 +:104AD00031A57FFFACE8000C8F500930A785005846
66754 +:104AE00024E80028ACF000108F4409380100802130
66755 +:104AF000ACE40014AD9300048F530940AD9300085B
66756 +:104B0000934A09373C19080093393D908F4309486F
66757 +:104B10008F460940314200FF0052F82100667023A1
66758 +:104B2000001F7F000019C40001F8282531CDFFFCCB
66759 +:104B300000AD2025AD84000CAD800010AF4B002CE3
66760 +:104B4000934B093E317300081260000D3C060101D1
66761 +:104B500034CC080AACEC00288F530074AD13000469
66762 +:104B60003C0B0800916B3D903167001050E0000352
66763 +:104B7000AD0000088F6A0060AD0A00082510000C27
66764 +:104B800012C0003D000000009343093F24160006B8
66765 +:104B900024060004306200FF105600C924070002FA
66766 +:104BA0009758093C3C0F0204330DFFFF01AF40252D
66767 +:104BB000AE0800009345093E30A400201080000894
66768 +:104BC00000000000935309363C0B0103357F0300BE
66769 +:104BD000327900FF033F7025AE0E00042406000862
66770 +:104BE000934F093493480921312AFFFF31ED00FF2B
66771 +:104BF000000D1082310300FF0002B60000032C00FC
66772 +:104C000002C56025018A9825001220803C094000D9
66773 +:104C10000204502302695825AD4BFFD8935F093732
66774 +:104C20008F4F09488F58094033F900FF0332702134
66775 +:104C30000006B08201D668210007440001F828234D
66776 +:104C4000000D1F000068302530A2FFFC2547FFD86B
66777 +:104C500000C260250016808002074821ACEC0020CD
66778 +:104C6000253000280E00006024120004A372003FCB
66779 +:104C70000E000062000000009347010B30F200407C
66780 +:104C8000124000053C1900FF8E180000372EFFFF70
66781 +:104C9000030E3024AE0600000E0000C702202021C3
66782 +:104CA0003C10080092103D90321100031220000FBA
66783 +:104CB00002A028218F89005025330001AF930050B6
66784 +:104CC000AF7300508F6B00540173F8231BE0000298
66785 +:104CD000026020218F640054AF6400548F4C007434
66786 +:104CE000258401F4AF64000C02A028210280202159
66787 +:104CF000A76000680E0005BB3C1410008F850050B3
66788 +:104D000034550006AF45014C8F8A00488FBF002CF8
66789 +:104D10008FB3001C25560001AF9600488FB20018D3
66790 +:104D2000A34A01528FB60028AF5501548FB1001429
66791 +:104D3000AF5401788FB500248FB400208FB00010DD
66792 +:104D400003E0000827BD00309358093E00189E007C
66793 +:104D500000139603064200362411000293440923EF
66794 +:104D6000308300021060FEDD8F8600608F8200506D
66795 +:104D700014C2FEDA000000000E0000600000000017
66796 +:104D80009369003F24070016312800FF1107000C2B
66797 +:104D9000240500083C0C0800918C3D90358B0001E7
66798 +:104DA0003C010800A02B3D90936A003F314300FF77
66799 +:104DB00010650065240D000A106D005E2402000CD1
66800 +:104DC0000E000062000000000A00069000000000D3
66801 +:104DD0003C09080095293D863C0A0800954A3D801B
66802 +:104DE0000A0006F3012A10213C09080095293D8A92
66803 +:104DF0003C04080094843D803C06080094C63D7C39
66804 +:104E000095030024012410210046F8230003CC0060
66805 +:104E100027F0FFF20330C025240F0800ACF8000C87
66806 +:104E2000ACEF0014ACE000100A0006EE24E7001816
66807 +:104E30003C010800A0313D90935F093E241600011B
66808 +:104E400033F900201720FEA5241100080A0006905F
66809 +:104E5000241100048F6E00848F4D094011A0FE9E26
66810 +:104E6000AF8E0050240F00143C010800A02F3D908D
66811 +:104E70000A00068F00000000950E0024950D002802
66812 +:104E8000000E6400000D2C003589810034A6080056
66813 +:104E9000ACE9000CACE600100A0006EE24E70014B2
66814 +:104EA0001460FEEC000000009502002400021C00CB
66815 +:104EB00034640800ACE4000C0A0006EE24E700109D
66816 +:104EC0000A000741240700123C02080094423D8A70
66817 +:104ED0003C06080094C63D803C03080094633D7C7A
66818 +:104EE00095100024951900280046F82103E3C023FB
66819 +:104EF00000106C0000197400270FFFEE01CF282569
66820 +:104F000035AC8100ACEC000CACE5001024070800C7
66821 +:104F1000AD2700182527001C0A0006EEAD2000145E
66822 +:104F20008F7F004CAF7F00548F7900540A000699A0
66823 +:104F3000AF790050A362003F0E0000620000000045
66824 +:104F40000A00069000000000240200140A0008274E
66825 +:104F5000A362003F27BDFFE8308400FFAFBF001011
66826 +:104F60000E0005BB30A500FF9378007E9379007F8B
66827 +:104F7000936E00809368007A332F00FF001866005C
66828 +:104F8000000F6C0031CB00FF018D4825000B520053
66829 +:104F90008FBF0010012A3825310600FF344470000D
66830 +:104FA00000E628252402FF813C03100027BD0018DD
66831 +:104FB000AF45014CAF440154A342015203E0000845
66832 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE
66833 +:104FD000AFB00010AFBF0020AFB3001C9342010977
66834 +:104FE000308600FF30B000FF000618C23204000215
66835 +:104FF0003071000114800005305200FF93670005F6
66836 +:1050000030E5000810A0000D30C80010024020213B
66837 +:105010000E0005A702202821240400018FBF0020D4
66838 +:105020008FB3001C8FB200188FB100148FB0001026
66839 +:105030000080102103E0000827BD00281500003281
66840 +:105040000000000093430109000028213062007F26
66841 +:10505000000220C00002F94003E49821267900886C
66842 +:10506000033B98218E7800248E6F0008130F0046B2
66843 +:10507000000000008F640084241800020004FD82F8
66844 +:1050800033F900031338007C0000000093660083AE
66845 +:10509000934A0109514600043205007C10A00060CB
66846 +:1050A000000000003205007C14A0005302402021C3
66847 +:1050B00016200006320400018E7F00248F5901045F
66848 +:1050C00017F9FFD600002021320400011080000AE9
66849 +:1050D000024020218F4209408F9300641053000644
66850 +:1050E000000000000E00066D022028218F430940B9
66851 +:1050F000AF630044024020210E0006020220282156
66852 +:105100000A000860240400013C0908008D2900649D
66853 +:10511000252600013C010800AC26006416000012A0
66854 +:10512000000000008F6D00843C0E00C001AE6024C2
66855 +:1051300015800005024020210E00082E02202821A3
66856 +:105140000A00086024040001240500040E00057014
66857 +:1051500024060001024020210E00082E02202821F2
66858 +:105160000A000860240400010E000041240400012C
66859 +:10517000936B007D020B50250E000062A36A007D38
66860 +:105180000A0008A38F6D00848F6600748F480104A5
66861 +:105190008E67002400064E021507FFB63126007FF9
66862 +:1051A000936B008326440001308A007F1146004340
66863 +:1051B000316300FF5464FFB08F6400842645000112
66864 +:1051C00030B1007F30A200FF122600042405000148
66865 +:1051D000004090210A00087624110001240FFF806E
66866 +:1051E000024F702401CF9026324200FF00409021F0
66867 +:1051F0000A000876241100010E00066D0220282105
66868 +:10520000321800301300FFAA321000820240202121
66869 +:105210000E0005A7022028210A00086024040001CE
66870 +:105220008F6E00743C0F80002405000301CF902591
66871 +:10523000AF72007493710083240600010E000570A4
66872 +:10524000322400FF0E00004124040001936D007D14
66873 +:10525000020D60250E000062A36C007D3C0B08006F
66874 +:105260008D6B0054257000013C010800AC300054E7
66875 +:105270000A000860240400018F6800743C09800063
66876 +:105280002405000401093825AF6700749363008387
66877 +:10529000240600010E000570306400FF0E0000417E
66878 +:1052A000240400019362007D020298250E00006232
66879 +:1052B000A373007D0A00086024040001324D0080C1
66880 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC
66881 +:1052D0002645000127BDFFC83C0A0008AFBF0030CB
66882 +:1052E000AFB5002CAFB40028AFB30024AFB200209C
66883 +:1052F000AFB1001CAFB00018034AD8212409004008
66884 +:10530000AF490814AF4008108F4209448F43095039
66885 +:105310008F4609548F47095C8F48094C9344010814
66886 +:105320009345010BAF820064308400FF30A500FF7D
66887 +:10533000AF830050AF86004CAF87005C0E00084A78
66888 +:10534000AF8800601440017D8FBF0030A760006807
66889 +:10535000934D0900240B00503C15080026B53D482C
66890 +:1053600031AC00FF3C12080026523D58118B00035F
66891 +:10537000000000000000A8210000902193510109C5
66892 +:105380008F9F005024040010322E007F000E68C052
66893 +:10539000000E6140018D282124B40088AF54081804
66894 +:1053A0008F4901048F4A09A43C0B000E034BC02116
66895 +:1053B000012A10233C010800AC223D6C8F430958A0
66896 +:1053C0003C010800A0243D9097470908007F302346
66897 +:1053D0003C010800AC263D7030E8FFFF0008C9C062
66898 +:1053E0003C010800AC3F3D94AF59002C974209089E
66899 +:1053F0009710002C8EB10000930F001803749821B1
66900 +:10540000A7900058AF9300440220F80931F000FF44
66901 +:10541000304E000215C001B2304F000111E0014FC3
66902 +:10542000000000009343093E3066000814C00002EB
66903 +:10543000241400030000A0218F5809A424130001A4
66904 +:105440003C010800AC383D98934F0934935109371B
66905 +:1054500031EC00FF322E00FF028E6821000D288003
66906 +:1054600000AC5021015058213C010800A42B3D887C
66907 +:105470003C010800A42A3D8693490934312200FFEB
66908 +:1054800002022021249000103C010800A4303D8439
66909 +:10549000240700068F9F00503C010800AC273D8C7C
66910 +:1054A0008F88005C8F59095800008021011F282334
66911 +:1054B00004A00149033F20230480014700A4302BAE
66912 +:1054C00010C00149000000003C010800AC253D70FF
66913 +:1054D0008E4200000040F809000000003043000246
66914 +:1054E000146000F80040882130440001548000100E
66915 +:1054F0008E4200043C0908008D293D743C0AC0001E
66916 +:10550000012A8025AF500E008F45000030AB000807
66917 +:105510001160FFFD00000000974D0E0824100001EF
66918 +:10552000A78D003C8F4C0E04AF8C00348E420004DB
66919 +:105530000040F8090000000002228825322E0002F7
66920 +:1055400015C00180000000003C09080095293D7C41
66921 +:105550003C06080094C63D883C0A0800954A3D7EFA
66922 +:105560003C1908008F393D74012660213C18080061
66923 +:105570008F183D983C03080094633D92018A2021D6
66924 +:105580008F4E09400329F821248F000203E32821CC
66925 +:10559000031968213C010800A42C3D8AAF8E0064E9
66926 +:1055A0003C010800AC2D3D983C010800A4253D803D
66927 +:1055B0000E00009E31E4FFFF8F870048004020214D
66928 +:1055C0003C010800A0273D918E42000824E800011C
66929 +:1055D000AF8800480040F809000000009344010B28
66930 +:1055E0008F4C002C974A09083C0B000E034B4021BE
66931 +:1055F0003149FFFF000919C08F8B0050AF43002CC9
66932 +:10560000974309089506001A00403821308A004067
66933 +:1056100030DFFFFFAC5F00008D19001C0040482107
66934 +:10562000AC5900048D180020AC580008910F0019E7
66935 +:1056300031E30003107300F0000000002862000254
66936 +:105640001440010924050002106500FD240D00032B
66937 +:10565000106D010D00000000114000D90000000095
66938 +:105660003C0A0800954A3D8625420001934D0934C5
66939 +:1056700093580921950E002A31A300FF00032082D0
66940 +:10568000331F00FF9798005800047E00001FCC00D5
66941 +:1056900001F940253049FFFF0109102501D83021CB
66942 +:1056A0003C0540000045502500066C00ACED0004B0
66943 +:1056B000ACEA0000934309203C04000624ED0014EA
66944 +:1056C0000003FE0003E4C825ACF900088F49092C4B
66945 +:1056D000270F000131EE7FFFACE9000C8F48093045
66946 +:1056E000A78E005824E90028ACE800108F4509383F
66947 +:1056F00001204021ACE50014ADAB00048F4209400D
66948 +:10570000ADA20008934B09373C1F080093FF3D9062
66949 +:105710008F4309488F4A0940316600FF00D4202199
66950 +:10572000006A78230004C700001FCC000319282555
66951 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4
66952 +:10574000AF4C002C934C093E318B00085160000F88
66953 +:105750008E58000C3C06010134CA080AACEA002845
66954 +:105760008F4B0074AD2B00043C0C0800918C3D90D5
66955 +:105770003187001050E00003AD2000088F62006008
66956 +:10578000AD2200082528000C8E58000C0300F809F3
66957 +:10579000010020213C19080097393D8A3C1F080070
66958 +:1057A00097FF3D7E033F782125E900020E0000C7E8
66959 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4
66960 +:1057C0008D083D7401C828233C010800AC253D6CC0
66961 +:1057D00014A00006000000003C0308008C633D8C10
66962 +:1057E000346400403C010800AC243D8C1200007081
66963 +:1057F0008F8C00448F470E108F900044AE0700201E
66964 +:105800008F4D0E18AE0D00243C10080096103D8000
66965 +:105810000E0000600000000024020040AF420814A7
66966 +:105820008F8600508F8A004C00D01821006A5823C0
66967 +:1058300019600004AF830050AF6300548F650054BB
66968 +:10584000AF85004C1200000C000000008F44007473
66969 +:10585000936800813409FA002D0E000711C000057D
66970 +:1058600000891821937F0081241901F403F9780439
66971 +:1058700001E41821AF63000C8F44095C8F83005C46
66972 +:105880000083C0231B000003000000008F50095C50
66973 +:10589000AF90005C0E000062000000008F8C005092
66974 +:1058A0008E4700103C010800AC2C3D9400E0F80944
66975 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC
66976 +:1058C000240700068F450024975909088F8B006430
66977 +:1058D0008F9400503C0F001F978200588F86005411
66978 +:1058E0008F93004C3328FFFF35E9FF8000A9502437
66979 +:1058F000000871C032320100AF4E0024A4C2002C57
66980 +:10590000AF4A0024AF6B0044AF740050AF73005433
66981 +:105910001640008032380010570000868EA4000424
66982 +:10592000322300405460001B8EB100088EB0000C82
66983 +:105930000200F809000000008FBF00308FB5002C76
66984 +:105940008FB400288FB300248FB200208FB1001CC9
66985 +:105950008FB0001803E0000827BD00389347010905
66986 +:105960008F8800380007FE0003E8C825AF59008083
66987 +:105970008F5809A08F5309A4AFB80010AF580E1468
66988 +:105980008FB40010AF540E10AF530E1C0A00096202
66989 +:10599000AF530E180220F809000000008EB0000C72
66990 +:1059A0000200F809000000000A000AA88FBF0030BA
66991 +:1059B000A5800020A59300220A000A5BAD93002475
66992 +:1059C0003C09080095293D863C06080094C63D80A8
66993 +:1059D0000A0009F4012610213C010800AC203D70AA
66994 +:1059E0000A00098E8E4200003C010800AC243D7084
66995 +:1059F0000A00098E8E4200003C03080094633D8A31
66996 +:105A00003C04080094843D803C1F080097FF3D7CC7
66997 +:105A1000951800240064C821033F782300186C0007
66998 +:105A200025EEFFF201AE2825AC45000C240208004B
66999 +:105A3000ACE20014ACE000100A0009EF24E7001803
67000 +:105A400095060024950900280006240000091C0082
67001 +:105A5000349F810034790800ACFF000CACF90010D1
67002 +:105A60000A0009EF24E700141460FEFB00000000A8
67003 +:105A70009518002400187C0035EE0800ACEE000CF0
67004 +:105A80000A0009EF24E700103C07080094E73D8076
67005 +:105A90003C04080094843D8A3C03080094633D7CE8
67006 +:105AA00095190024951800280087F82103E378232E
67007 +:105AB0002407080000192C0000186C0025EEFFEEEA
67008 +:105AC00001AE302534A28100AD2700182527001C27
67009 +:105AD000AD22000CAD2600100A0009EFAD20001425
67010 +:105AE00093520109000028210E000602324400FFF3
67011 +:105AF0008FBF00308FB5002C8FB400288FB30024E7
67012 +:105B00008FB200208FB1001C8FB0001803E0000896
67013 +:105B100027BD0038935F010933E400FF0E00066DD6
67014 +:105B200000002821323800105300FF7E322300404D
67015 +:105B30008EA400040080F809000000000A000AA2F8
67016 +:105B4000322300401200FF5F000000008F540E144B
67017 +:105B50008F920044AE5400208F530E1C0A000A8A14
67018 +:105B6000AE5300248F82001C008040213C040100C1
67019 +:105B70009047008530E3002010600009000000001D
67020 +:105B80003C0708008CE73D948F83001800E3202336
67021 +:105B9000048000089389000414E30003010020211D
67022 +:105BA00003E00008008010213C04010003E000082D
67023 +:105BB000008010211120000B006738238F8C0020FB
67024 +:105BC00024090034918B00BC316A0002514000016D
67025 +:105BD0002409003000E9682B15A0FFF10100202105
67026 +:105BE00000E938232419FFFC00B9C02400F9782407
67027 +:105BF00000F8702B15C0FFEA01E8202130C2000335
67028 +:105C00000002182314C00012306900030000302184
67029 +:105C100000A9702101C6682100ED602B1180FFE012
67030 +:105C20003C0401002D2F00010006482B01053821FE
67031 +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E
67032 +:105C400000B9C0240308202103E0000800801021CF
67033 +:105C50008F8B002024060004916A00BC31440004AC
67034 +:105C60001480FFEC00A970210A000B5E00003021B7
67035 +:105C700027BDFFE8AFBF00108F460100934A01091E
67036 +:105C80003C1F08008FFF00902407FF80314F00FF6A
67037 +:105C900031E8007F0008614003E6C821032CC021E1
67038 +:105CA00027090120012770243C010800A02F3DD0C6
67039 +:105CB000AF4E080C3C0D08008DAD00903C040080F8
67040 +:105CC0003482000301A65821016C182124650120AB
67041 +:105CD00030AA007801424025AF48081C3C1F08004C
67042 +:105CE0008FFF00908F88004003E6C0213319000722
67043 +:105CF00003074824033A7821AF49002825E909C061
67044 +:105D0000952E00023C0D08008DAD008C3C0A080069
67045 +:105D10008D4A009031CC3FFF01A61821000C59801C
67046 +:105D2000006B282100A72024AF44002C95220002FC
67047 +:105D30003C1F08008FFF008C9107008530593FFF02
67048 +:105D400003E678210019C1800146702101F868211D
67049 +:105D500031CC007F31AB007F019A2821017A50219C
67050 +:105D60003C03000C3C04000E00A328210144102138
67051 +:105D700030E6002027470980AF82002CAF88001C46
67052 +:105D8000AF890024AF85002010C00006AF8700282F
67053 +:105D90008D0200508CA4010C0044302318C0007701
67054 +:105DA00000000000910C0085240DFFDF018D3824D8
67055 +:105DB000A10700858F8B001C8F8900248F87002806
67056 +:105DC0008D65004CAF850018912F000D31EE00203D
67057 +:105DD00011C000170000000024090001A38900047D
67058 +:105DE000AF80000C8CE400248F85000C240A00088E
67059 +:105DF000AF800008AF8000103C010800A42A3D7E5F
67060 +:105E00003C010800A4203D920E000B32000030211E
67061 +:105E10008F8500248FBF0010AF82001490A8000D62
67062 +:105E200027BD00180008394203E0000830E20001F5
67063 +:105E3000913F00022418000133F900FF001921826C
67064 +:105E400010980039240800021088005B8F86002C0F
67065 +:105E50008CE5002414A0001B8F9F002091220000DD
67066 +:105E6000240A00053046003F10CA00472404000100
67067 +:105E70008F860008A3840004AF860010AF86000C54
67068 +:105E80008CE400248F85000C240A00083C010800E3
67069 +:105E9000A42A3D7E3C010800A4203D920E000B3256
67070 +:105EA000000000008F8500248FBF0010AF82001417
67071 +:105EB00090A8000D27BD00180008394203E0000833
67072 +:105EC00030E200018CF800088CF900248FEE00C449
67073 +:105ED000A38000048CE40024AF8E000C8F85000C9E
67074 +:105EE0008F86000803197823240A0008AF8F00105A
67075 +:105EF0003C010800A42A3D7E3C010800A4203D92FC
67076 +:105F00000E000B32000000008F8500248FBF0010B0
67077 +:105F1000AF82001490A8000D27BD00180008394278
67078 +:105F200003E0000830E20001912300003062003FEE
67079 +:105F3000104400278F8500208CE400241480002169
67080 +:105F4000000000008D2E00183C187FFF8F85002078
67081 +:105F5000370FFFFF01CF1824AF8300088F9F000881
67082 +:105F60008CA8008403E8C82B1720000203E020213E
67083 +:105F70008CA400840A000BEDAF8400088CA3010CF4
67084 +:105F80000A000BCBAF8300188D2C00188F860008F9
67085 +:105F90003C0D7FFF8F89002035A3FFFF018358242C
67086 +:105FA00024040001AF8B0010AD2000CCA3840004BA
67087 +:105FB0000A000BF9AF86000C8CCA00140A000BED26
67088 +:105FC000AF8A00088CA300C80A000C30AF83000819
67089 +:105FD0008F84002C8CAC00648C8D0014018D582BA8
67090 +:105FE00011600004000000008CA200640A000C3064
67091 +:105FF000AF8200088C8200140A000C30AF820008C7
67092 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3
67093 +:1060100014A00007AFB000108F86002424020005F2
67094 +:1060200090C400003083003F106200B68F840020CF
67095 +:106030008F91000800A080218F8C00283C0508006B
67096 +:106040008CA53D708D8B000431663FFF00C5502B41
67097 +:106050005540000100C02821938D000411A0007359
67098 +:1060600000B0F82B8F98002024040034930F00BC5C
67099 +:1060700031EE000251C000012404003000A4C82BFE
67100 +:10608000172000D10000000000A4282300B0F82B46
67101 +:106090003C010800A4243D7C17E000680200202198
67102 +:1060A0003C0308008C633D6C0083102B54400001BE
67103 +:1060B000008018218F8800243C010800AC233D7427
67104 +:1060C000000048219104000D308300205060000141
67105 +:1060D0008F490E188F8300140123382B10E00059CC
67106 +:1060E000000000003C0408008C843D7400895821A5
67107 +:1060F000006B502B114000560090602B006930233C
67108 +:1061000000C020213C010800AC263D7412000003B1
67109 +:10611000241FFFFC1090008A32270003009FC82430
67110 +:106120003C010800AC393D743C010800A4203D92BC
67111 +:106130008F84000C120400078F830020AF910008A9
67112 +:10614000020020218C7100CCAF90000C26300001A1
67113 +:10615000AC7000CC3C0208008C423D748F8A001069
67114 +:10616000240700180082202301422823AF84000C5A
67115 +:1061700010800002AF850010240700108F86001CDD
67116 +:106180003C010800A0273D902407004090CC0085EA
67117 +:10619000318B00C0116700408F8D001414A00015D2
67118 +:1061A00000002021934A01098F420974314500FF04
67119 +:1061B0000002260224A300013090007F3071007F8E
67120 +:1061C0001230007A2407FF80A0C300833C09080036
67121 +:1061D0008D293D8C8F880024240D0002352C000869
67122 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9
67123 +:1061F00024040010910E000D31C6002010C00005CF
67124 +:1062000000801821240800013C010800AC283D74DE
67125 +:10621000348300018FBF00188FB100148FB00010BD
67126 +:106220000060102103E0000827BD00203C010800A9
67127 +:10623000A4203D7C13E0FF9A020020210A000C817B
67128 +:1062400000A020213C0408008C843D740090602B49
67129 +:106250001180FFAE000000003C0F080095EF3D7C70
67130 +:1062600001E4702101C6682B11A000072C820004F4
67131 +:106270003C1F60008FF954043338003F1700FFE5DE
67132 +:10628000240300422C8200041040FFA0240300429B
67133 +:106290000A000CDF8FBF0018152DFFC000000000A2
67134 +:1062A0008CDF00743C0380002405FF8003E3C825D5
67135 +:1062B000ACD9007490D80085240E0004240400108A
67136 +:1062C000330F003F01E54025A0C800858F880024DA
67137 +:1062D0003C010800A02E3DD1240300019106000DD1
67138 +:1062E00030C9002015200003000000003C03080016
67139 +:1062F0008C633D743C010800AC233D6C0A000CD655
67140 +:10630000000000008F8700108C88008400E8282B94
67141 +:1063100014A0000200E088218C910084240900016F
67142 +:10632000A38900048F440E18022028210E000B328E
67143 +:1063300002203021022080210A000C67AF82001465
67144 +:1063400000071823306600033C010800A4263D9294
67145 +:10635000122000058F8C0020918B00BC316A000454
67146 +:106360001540001524CD00043C0F080095EF3D9228
67147 +:1063700001E4702100AE302B50C0FF6E8F84000C02
67148 +:106380002C85000514A0FFA32403004230980003CD
67149 +:1063900017000002009818232483FFFC3C0108002A
67150 +:1063A000AC233D740A000CA30000000000A7582491
67151 +:1063B0000A000CCB016718263C010800A42D3D9271
67152 +:1063C0000A000D33000000003C010800AC203D74C1
67153 +:1063D0000A000CDE240300428F83001014600007C3
67154 +:1063E000000010218F88002424050005910600007C
67155 +:1063F00030C400FF108500030000000003E0000827
67156 +:1064000000000000910A0018314900FF000939C25C
67157 +:1064100014E0FFFA8F85001C3C04080094843D7C46
67158 +:106420003C0308008C633D943C1908008F393D748F
67159 +:106430003C0F080095EF3D920064C0218CAD0054E4
67160 +:106440000319702101CF6021018D58231960001DAF
67161 +:1064500000000000910E001C8F8C002C974B0E103A
67162 +:1064600031CD00FF8D850004016D30238D88000043
67163 +:1064700030CEFFFF000E510000AAC82100003821D5
67164 +:1064800001072021032A182B0083C021AD990004A5
67165 +:10649000AD980000918F000A01CF6821A18D000AFC
67166 +:1064A0008F88002C974B0E12A50B0008950A003818
67167 +:1064B00025490001A50900389107000D34E60008C0
67168 +:1064C000A106000D03E000080000000027BDFFE06A
67169 +:1064D000938700048F8F00248FAD00143C0E7FFF44
67170 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C
67171 +:1064F00001A8182491EA000D000717C03C1FBFFF38
67172 +:10650000006258252D2E00018F90001837F9FFFFEB
67173 +:106510003C1808008F183D943C0F080095EF3D8A09
67174 +:1065200001796824000E47803C07EFFF3C05F0FF2F
67175 +:1065300001A818253149002034E2FFFF34ACFFFFE9
67176 +:106540000310582327A500102406000225EA0002A4
67177 +:1065500000621824008080211520000200004021E4
67178 +:106560008F480E1CA7AA0012056000372407000000
67179 +:1065700030FF00FF001FCF008F8B001C00793825F3
67180 +:10658000AFA70014916F00853C08080091083D9169
67181 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A
67182 +:1065A0003C1F080097FF3D8400EA6824A3A800115F
67183 +:1065B0000003174001A248258FB90010AFA90014AD
67184 +:1065C0003C0A0800914A3D93A7BF00168FA800140B
67185 +:1065D000032CC0243C0B01003C0F0FFF030B1825BC
67186 +:1065E0003147000335EEFFFF010C68240007160059
67187 +:1065F000006EF8243C09700001A2C82503E9582563
67188 +:10660000AFB90014AFAB00100E000076A3A00015C8
67189 +:106610008F8C0024260200089186000D30C40020D3
67190 +:10662000108000068FBF001C3C05080094A53D802B
67191 +:1066300024B0FFFF3C010800A4303D808FB000185B
67192 +:1066400003E0000827BD00208F9800140118502B8C
67193 +:106650005540FFC7240700010A000DB630FF00FFB8
67194 +:106660009382000427BDFFE0AFBF00181040000F69
67195 +:10667000008050218F880024240B00058F8900089A
67196 +:10668000910700008F8400200100282130E3003FA3
67197 +:106690008F86002C106B000800003821AFA9001075
67198 +:1066A0000E00040EAFAA0014A38000048FBF0018D0
67199 +:1066B00003E0000827BD00208D1900183C0F0800DA
67200 +:1066C0008DEF3D748F9800103C027FFF8D08001401
67201 +:1066D000345FFFFF033F682401F8702101AE60239F
67202 +:1066E00001883821AFA900100E00040EAFAA0014D3
67203 +:1066F0000A000E04A38000048F8700243C050800D4
67204 +:1067000094A53D923C0208008C423D8C90E6000D21
67205 +:106710000005240030C300201060002C00444025F8
67206 +:106720008F85001C00006021240B000190A30085D0
67207 +:1067300000004821240A00013C0F800035EE007063
67208 +:106740008DC70000AF8700308F5801780700FFFE2B
67209 +:106750003C038000347900708F3800003C0508004D
67210 +:106760008CA500743C0D08008DAD007003077823E4
67211 +:1067700000AF38210000102100EF302B01A22021B2
67212 +:10678000008618213C010800AC2700743C01080079
67213 +:10679000AC230070AF4B01483C1908008F393D9481
67214 +:1067A000A7490144A74A0146AF59014C3C0B0800D8
67215 +:1067B000916B3D91A34B0152AF4801543C0810002E
67216 +:1067C000A74C015803E00008AF4801788F4B0E1C1E
67217 +:1067D0003C0A08008D4A3D7497490E16974D0E14D9
67218 +:1067E00001456021312AFFFF0A000E2731A9FFFF72
67219 +:1067F0008F8300249064000D308200201040002917
67220 +:10680000000000000000482100005021000040214D
67221 +:106810003C07800034EB00708D670000AF870030CC
67222 +:106820008F4C01780580FFFE3C0D800035AC007078
67223 +:106830008D8B00003C0508008CA500743C0408000A
67224 +:106840008C8400700167302300A67821000010219D
67225 +:1068500001E6C82B0082C021031970213C01080009
67226 +:10686000AC2F00743C010800AC2E0070AF49014809
67227 +:106870003C0D08008DAD3D94A7480144240900401B
67228 +:10688000A74A01463C081000240AFF91AF4D014C75
67229 +:10689000A34A0152AF490154A740015803E0000840
67230 +:1068A000AF4801788F490E1897460E1297450E1083
67231 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F
67232 +:1068C00027BDFFF89064000D308200201040003A90
67233 +:1068D00000000000240B000100004821240A0001F0
67234 +:1068E0003C088000350700708CE30000AF83003067
67235 +:1068F0008F4C01780580FFFE3C0E80003C040800B0
67236 +:1069000090843DD035C700708CEC00003C05080039
67237 +:106910008CA50074A3A400033C1908008F390070F3
67238 +:106920008FAD00000183302300A638210000102124
67239 +:106930000322782100E6C02B01F8602101AE40253A
67240 +:10694000AFA800003C010800AC2700743C0108001F
67241 +:10695000AC2C00709346010A3C04080090843DD1A1
67242 +:10696000A3A00002A3A600018FA300003C0580FFA6
67243 +:106970003099007F34A2FFFF006278240019C6001E
67244 +:1069800001F87025240D3000AF4E014C27BD0008E2
67245 +:10699000AF4D0154A7400158AF4B0148A7490144EE
67246 +:1069A000A74A01463C091000240AFF80A34A01526D
67247 +:1069B00003E00008AF4901788F4B0E1897460E127E
67248 +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55
67249 +:1069D0008F85001C2402008090A40085308300C0B5
67250 +:1069E000106200058F8600208F8800088F87000CBA
67251 +:1069F000ACC800C8ACC700C403E000080000000039
67252 +:106A00003C0A0800254A39543C09080025293A2047
67253 +:106A10003C08080025082DD43C07080024E73B3437
67254 +:106A20003C06080024C637C43C05080024A5353CB4
67255 +:106A30003C040800248431643C0308002463385C6F
67256 +:106A40003C020800244236303C010800AC2A3D508C
67257 +:106A50003C010800AC293D4C3C010800AC283D48F5
67258 +:106A60003C010800AC273D543C010800AC263D64C5
67259 +:106A70003C010800AC253D5C3C010800AC243D58BD
67260 +:106A80003C010800AC233D683C010800AC223D609D
67261 +:086A900003E000080000000013
67262 +:00000001FF
67263 diff --git a/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex b/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex
67264 new file mode 100644
67265 index 0000000..43d7c4f
67266 --- /dev/null
67267 +++ b/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex
67268 @@ -0,0 +1,6496 @@
67269 +:10000000080001180800000000005594000000C816
67270 +:1000100000000000000000000000000008005594EF
67271 +:10002000000000380000565C080000A00800000036
67272 +:100030000000574400005694080059200000008436
67273 +:100040000000ADD808005744000001C00000AE5CBD
67274 +:100050000800321008000000000092580000B01C98
67275 +:10006000000000000000000000000000080092589E
67276 +:100070000000033C000142740800049008000400E2
67277 +:10008000000012FC000145B000000000000000006C
67278 +:1000900000000000080016FC00000004000158AC3D
67279 +:1000A000080000A80800000000003D00000158B052
67280 +:1000B00000000000000000000000000008003D00FB
67281 +:1000C00000000030000195B00A000046000000006A
67282 +:1000D000000000000000000D636F6D362E322E31DF
67283 +:1000E00062000000060201020000000000000003A0
67284 +:1000F000000000C800000032000000030000000003
67285 +:1001000000000000000000000000000000000000EF
67286 +:1001100000000010000001360000EA600000000549
67287 +:1001200000000000000000000000000000000008C7
67288 +:1001300000000000000000000000000000000000BF
67289 +:1001400000000000000000000000000000000000AF
67290 +:10015000000000000000000000000000000000009F
67291 +:10016000000000020000000000000000000000008D
67292 +:10017000000000000000000000000000000000007F
67293 +:10018000000000000000000000000010000000005F
67294 +:10019000000000000000000000000000000000005F
67295 +:1001A000000000000000000000000000000000004F
67296 +:1001B000000000000000000000000000000000003F
67297 +:1001C000000000000000000000000000000000002F
67298 +:1001D000000000000000000000000000000000001F
67299 +:1001E0000000000010000003000000000000000DEF
67300 +:1001F0000000000D3C020800244256083C030800A1
67301 +:1002000024635754AC4000000043202B1480FFFDB2
67302 +:10021000244200043C1D080037BD9FFC03A0F021D0
67303 +:100220003C100800261001183C1C0800279C5608AA
67304 +:100230000E000256000000000000000D27BDFFB4B4
67305 +:10024000AFA10000AFA20004AFA30008AFA4000C50
67306 +:10025000AFA50010AFA60014AFA70018AFA8001CF0
67307 +:10026000AFA90020AFAA0024AFAB0028AFAC002C90
67308 +:10027000AFAD0030AFAE0034AFAF0038AFB8003C28
67309 +:10028000AFB90040AFBC0044AFBF00480E001544FA
67310 +:10029000000000008FBF00488FBC00448FB90040B1
67311 +:1002A0008FB8003C8FAF00388FAE00348FAD003078
67312 +:1002B0008FAC002C8FAB00288FAA00248FA90020C0
67313 +:1002C0008FA8001C8FA700188FA600148FA5001000
67314 +:1002D0008FA4000C8FA300088FA200048FA1000040
67315 +:1002E00027BD004C3C1B60108F7A5030377B502864
67316 +:1002F00003400008AF7A00008F82002427BDFFE092
67317 +:10030000AFB00010AFBF0018AFB100148C42000CAA
67318 +:100310003C1080008E110100104000348FBF001887
67319 +:100320000E000D84000000008F85002024047FFF54
67320 +:100330000091202BACB100008E030104960201084D
67321 +:1003400000031C003042FFFF00621825ACA300042C
67322 +:100350009202010A96030114304200FF3063FFFF4E
67323 +:100360000002140000431025ACA200089603010C03
67324 +:100370009602010E00031C003042FFFF00621825A8
67325 +:10038000ACA3000C960301109602011200031C009E
67326 +:100390003042FFFF00621825ACA300108E02011846
67327 +:1003A000ACA200148E02011CACA20018148000083C
67328 +:1003B0008F820024978200003C0420050044182509
67329 +:1003C00024420001ACA3001C0A0000C6A782000062
67330 +:1003D0003C0340189442001E00431025ACA2001CB0
67331 +:1003E0000E000DB8240400018FBF00188FB1001457
67332 +:1003F0008FB000100000102103E0000827BD00208E
67333 +:100400003C0780008CE202B834E50100044100089A
67334 +:10041000240300013C0208008C42006024420001D9
67335 +:100420003C010800AC22006003E0000800601021DD
67336 +:100430003C0208008C42005C8CA4002094A30016AF
67337 +:100440008CA6000494A5000E24420001ACE40280B6
67338 +:100450002463FFFC3C010800AC22005C3C0210005D
67339 +:10046000A4E30284A4E5028600001821ACE6028819
67340 +:10047000ACE202B803E000080060102127BDFFE0F5
67341 +:100480003C028000AFB0001034420100AFBF001C3E
67342 +:10049000AFB20018AFB100148C43000094450008BF
67343 +:1004A0002462FE002C42038110400003000381C23D
67344 +:1004B0000A00010226100004240201001462000553
67345 +:1004C0003C1180003C02800890420004305000FF44
67346 +:1004D0003C11800036320100964300143202000FB6
67347 +:1004E00000021500004310253C0308008C63004403
67348 +:1004F00030A40004AE220080246300013C01080007
67349 +:10050000AC2300441080000730A200028FBF001C03
67350 +:100510008FB200188FB100148FB000100A0000CE07
67351 +:1005200027BD00201040002D0000182130A20080BF
67352 +:1005300010400005362200708E44001C0E000C672F
67353 +:10054000240500A0362200708C4400008F82000C2D
67354 +:10055000008210232C43012C10600004AF82001095
67355 +:10056000240300010A000145AF84000C8E42000400
67356 +:100570003C036020AF84000CAC6200143C02080015
67357 +:100580008C42005850400015000018218C62000475
67358 +:10059000240301FE304203FF144300100000182121
67359 +:1005A0002E020004104000032E0200080A00014041
67360 +:1005B0000000802114400003000000000A000140F8
67361 +:1005C0002610FFF90000000D2402000202021004B0
67362 +:1005D0003C036000AC626914000018218FBF001C4E
67363 +:1005E0008FB200188FB100148FB00010006010217E
67364 +:1005F00003E0000827BD00203C0480008C8301003C
67365 +:1006000024020100506200033C0280080000000D3B
67366 +:100610003C02800890430004000010213063000F6A
67367 +:1006200000031D0003E00008AC8300800004188074
67368 +:100630002782FF9C00621821000410C00044102390
67369 +:100640008C640000000210C03C030800246356E4E0
67370 +:10065000004310213C038000AC64009003E00008DC
67371 +:10066000AF8200243C0208008C42011410400019A3
67372 +:100670003084400030A2007F000231C03C02020002
67373 +:100680001080001400A218253C026020AC43001426
67374 +:100690003C0408008C8456B83C0308008C630110AD
67375 +:1006A0003C02800024050900AC4500200086202182
67376 +:1006B000246300013C028008AC4400643C01080053
67377 +:1006C000AC2301103C010800AC2456B803E000083C
67378 +:1006D000000000003C02602003E00008AC4500146C
67379 +:1006E00003E000080000102103E0000800001021D2
67380 +:1006F00030A2000810400008240201003C0208005B
67381 +:100700008C42010C244200013C010800AC22010C87
67382 +:1007100003E0000800000000148200080000000050
67383 +:100720003C0208008C4200FC244200013C0108000D
67384 +:10073000AC2200FC0A0001A330A200203C02080009
67385 +:100740008C420084244200013C010800AC22008459
67386 +:1007500030A200201040000830A200103C02080027
67387 +:100760008C420108244200013C010800AC2201082F
67388 +:1007700003E0000800000000104000080000000036
67389 +:100780003C0208008C420104244200013C010800A4
67390 +:10079000AC22010403E00008000000003C02080055
67391 +:1007A0008C420100244200013C010800AC220100FF
67392 +:1007B00003E000080000000027BDFFE0AFB1001417
67393 +:1007C0003C118000AFB20018AFBF001CAFB00010EA
67394 +:1007D0003632010096500008320200041040000733
67395 +:1007E000320300028FBF001C8FB200188FB10014BB
67396 +:1007F0008FB000100A0000CE27BD00201060000B53
67397 +:10080000020028218E2401000E00018A0000000051
67398 +:100810003202008010400003240500A10E000C6786
67399 +:100820008E44001C0A0001E3240200018E2301040F
67400 +:100830008F82000810430006020028218E24010048
67401 +:100840000E00018A000000008E220104AF82000821
67402 +:10085000000010218FBF001C8FB200188FB1001450
67403 +:100860008FB0001003E0000827BD00202C82000498
67404 +:1008700014400002000018212483FFFD240200021E
67405 +:10088000006210043C03600003E00008AC626914DD
67406 +:1008900027BDFFE0AFBF001CAFB20018AFB100141E
67407 +:1008A000AFB000103C048000948201083043700017
67408 +:1008B000240220001062000A2862200154400052E5
67409 +:1008C0008FBF001C24024000106200482402600018
67410 +:1008D0001062004A8FBF001C0A0002518FB200183C
67411 +:1008E00034820100904300098C5000189451000C90
67412 +:1008F000240200091062001C0000902128620009F7
67413 +:10090000144000218F8200242402000A5062001249
67414 +:10091000323100FF2402000B1062000F00000000C3
67415 +:100920002402000C146200188F8200243C0208008C
67416 +:100930008C4256B824030900AC83002000501021DB
67417 +:100940003C038008AC6200643C010800AC2256B84D
67418 +:100950000A0002508FBF001C0E0001E900102602A1
67419 +:100960000A0002308F8200240E0001E900102602E6
67420 +:100970003C0380089462001A8C72000C3042FFFF26
67421 +:10098000020280258F8200248C42000C5040001E01
67422 +:100990008FBF001C0E000D84000000003C02800090
67423 +:1009A00034420100944300088F82002400031C009D
67424 +:1009B0009444001E8F82002000641825AC50000073
67425 +:1009C00024040001AC510004AC520008AC40000CFF
67426 +:1009D000AC400010AC400014AC4000180E000DB844
67427 +:1009E000AC43001C0A0002508FBF001C0E000440E4
67428 +:1009F000000000000A0002508FBF001C0E000C9F78
67429 +:100A0000000000008FBF001C8FB200188FB10014CF
67430 +:100A10008FB000100000102103E0000827BD002067
67431 +:100A200027BDFFD8AFB400203C036010AFBF002447
67432 +:100A3000AFB3001CAFB20018AFB10014AFB00010DC
67433 +:100A40008C6450002402FF7F3C1408002694563822
67434 +:100A5000008220243484380CAC6450003C028000B6
67435 +:100A6000240300370E0014B0AC4300083C07080014
67436 +:100A700024E70618028010212404001D2484FFFFAF
67437 +:100A8000AC4700000481FFFD244200043C02080042
67438 +:100A9000244207C83C010800AC2256403C02080032
67439 +:100AA000244202303C030800246306203C04080072
67440 +:100AB000248403B43C05080024A506F03C06080085
67441 +:100AC00024C62C9C3C010800AC2256803C02080045
67442 +:100AD000244205303C010800AC2756843C01080044
67443 +:100AE000AC2656943C010800AC23569C3C010800FF
67444 +:100AF000AC2456A03C010800AC2556A43C010800DB
67445 +:100B0000AC2256A83C010800AC23563C3C0108002E
67446 +:100B1000AC2456443C010800AC2056603C0108005F
67447 +:100B2000AC2556643C010800AC2056703C0108001E
67448 +:100B3000AC27567C3C010800AC2656903C010800CE
67449 +:100B4000AC2356980E00056E00000000AF80000C2C
67450 +:100B50003C0280008C5300008F8300043C0208009C
67451 +:100B60008C420020106200213262000700008821C0
67452 +:100B70002792FF9C3C100800261056E43C02080017
67453 +:100B80008C42002024050001022518040043202483
67454 +:100B90008F820004004310245044000C26310001D1
67455 +:100BA00010800008AF9000248E4300003C028000BB
67456 +:100BB000AC4300900E000D4BAE05000C0A0002C1C4
67457 +:100BC00026310001AE00000C263100012E22000269
67458 +:100BD000261000381440FFE9265200043C020800A9
67459 +:100BE0008C420020AF820004326200071040FFD91F
67460 +:100BF0003C028000326200011040002D326200028F
67461 +:100C00003C0580008CA2010000002021ACA2002045
67462 +:100C10008CA301042C42078110400008ACA300A85B
67463 +:100C200094A2010824032000304270001443000302
67464 +:100C30003C02800890420005304400FF0E0001593C
67465 +:100C4000000000003C0280009042010B304300FF96
67466 +:100C50002C62001E54400004000310800E00018628
67467 +:100C60000A0002EC00000000005410218C42000039
67468 +:100C70000040F80900000000104000043C02800021
67469 +:100C80008C4301043C026020AC4300143C02080089
67470 +:100C90008C4200343C0440003C03800024420001AC
67471 +:100CA000AC6401383C010800AC220034326200021E
67472 +:100CB00010400010326200043C1080008E0201409F
67473 +:100CC000000020210E000159AE0200200E00038317
67474 +:100CD000000000003C024000AE0201783C02080027
67475 +:100CE0008C420038244200013C010800AC2200384C
67476 +:100CF000326200041040FF973C0280003C108000EC
67477 +:100D00008E020180000020210E000159AE02002059
67478 +:100D10008E03018024020F00546200073C02800809
67479 +:100D20008E0201883C0300E03042FFFF00431025A3
67480 +:100D30000A000328AE020080344200809042000086
67481 +:100D400024030050304200FF14430007000000005D
67482 +:100D50000E000362000000001440000300000000C9
67483 +:100D60000E000971000000003C0208008C42003CAB
67484 +:100D70003C0440003C03800024420001AC6401B804
67485 +:100D80003C010800AC22003C0A0002A33C028000A7
67486 +:100D90003C02900034420001008220253C02800089
67487 +:100DA000AC4400203C0380008C6200200440FFFE25
67488 +:100DB0000000000003E00008000000003C0280008A
67489 +:100DC000344300010083202503E00008AC440020E8
67490 +:100DD00027BDFFE0AFB10014AFB000100080882144
67491 +:100DE000AFBF00180E00033230B000FF8F83FF94B6
67492 +:100DF000022020219062002502028025A07000259B
67493 +:100E00008C7000183C0280000E00033D020280241A
67494 +:100E10001600000B8FBF00183C0480008C8201F884
67495 +:100E20000440FFFE348201C024030002AC510000E4
67496 +:100E3000A04300043C021000AC8201F88FBF0018F0
67497 +:100E40008FB100148FB0001003E0000827BD002010
67498 +:100E500027BDFFE83C028000AFBF00103442018094
67499 +:100E6000944300048C4400083063020010600005C5
67500 +:100E7000000028210E00100C000000000A0003787A
67501 +:100E8000240500013C02FF000480000700821824B2
67502 +:100E90003C02040014620004240500018F82FF94C8
67503 +:100EA00090420008240500018FBF001000A010210F
67504 +:100EB00003E0000827BD00188F82FF982405000179
67505 +:100EC000A040001A3C028000344201400A00034264
67506 +:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E
67507 +:100EE000AFB20018AFB10014AFB0001090A2000074
67508 +:100EF000304400FF38830020388200300003182B74
67509 +:100F00000002102B0062182410600003240200501D
67510 +:100F1000148200A88FBF001C90A20005304200017F
67511 +:100F2000104000A48FBF001C3C02800034420140EE
67512 +:100F3000904200082443FFFF2C6200051040009EF1
67513 +:100F40008FB20018000310803C030800246355ACE6
67514 +:100F5000004310218C420000004000080000000007
67515 +:100F60003C028000345101400E0003328E24000008
67516 +:100F70008F92FF948E2200048E50000C1602000205
67517 +:100F800024020001AE42000C0E00033D8E2400003E
67518 +:100F90008E220004145000068FBF001C8FB2001870
67519 +:100FA0008FB100148FB000100A000F7827BD002009
67520 +:100FB0008E42000C0A000419000000003C0480006E
67521 +:100FC0003482014094A300108C4200043063FFFF80
67522 +:100FD0001443001C0000000024020001A4A2001021
67523 +:100FE0008C8202380441000F3C0380003C02003F29
67524 +:100FF0003448F0003C0760003C06FFC08CE22BBC8C
67525 +:1010000000461824004810240002130200031D8229
67526 +:10101000106200583C0280008C8202380440FFF7C6
67527 +:101020003C038000346201408C44000034620200C2
67528 +:10103000AC4400003C021000AC6202380A00043BE1
67529 +:101040008FBF001C94A200100A00041900000000C9
67530 +:10105000240200201482000F3C0280003C03800028
67531 +:1010600094A20012346301408C6300043042FFFFFD
67532 +:10107000146200050000000024020001A4A2001276
67533 +:101080000A0004028FBF001C94A200120A00041977
67534 +:1010900000000000345101400E0003328E24000095
67535 +:1010A0008F92FF948E230004964200123050FFFF6F
67536 +:1010B0001603000224020001A64200120E00033DA6
67537 +:1010C0008E2400008E220004160200068FBF001C32
67538 +:1010D0008FB200188FB100148FB000100A00037C8B
67539 +:1010E00027BD0020964200120A00041900000000EB
67540 +:1010F0003C03800094A20014346301408C6300041C
67541 +:101100003042FFFF14620008240200018FBF001C60
67542 +:101110008FB200188FB100148FB00010A4A2001479
67543 +:101120000A00146327BD002094A20014144000217B
67544 +:101130008FBF001C0A000435000000003C03800043
67545 +:1011400094A20016346301408C6300043042FFFF18
67546 +:101150001462000D240200018FBF001C8FB2001822
67547 +:101160008FB100148FB00010A4A200160A000B1457
67548 +:1011700027BD00209442007824420004A4A200105D
67549 +:101180000A00043B8FBF001C94A200162403000138
67550 +:101190003042FFFF144300078FBF001C3C020800D1
67551 +:1011A0008C420070244200013C010800AC22007017
67552 +:1011B0008FBF001C8FB200188FB100148FB00010C9
67553 +:1011C00003E0000827BD002027BDFFD8AFB20018FC
67554 +:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB
67555 +:1011E000AFB000103C028000345101008C5001006F
67556 +:1011F0009242000092230009304400FF2402001FA5
67557 +:10120000106200AB28620020104000192402003850
67558 +:101210002862000A1040000D2402000B286200081A
67559 +:101220001040002E8F820024046001042862000216
67560 +:101230001440002A8F820024240200061062002637
67561 +:101240008FBF00200A00055F8FB3001C1062006092
67562 +:101250002862000B144000FA8FBF00202402000E09
67563 +:10126000106200788F8200240A00055F8FB3001C93
67564 +:10127000106200D2286200391040000A2402008067
67565 +:1012800024020036106200E528620037104000C3D7
67566 +:1012900024020035106200D98FBF00200A00055FCC
67567 +:1012A0008FB3001C1062002D2862008110400006E0
67568 +:1012B000240200C824020039106200C98FBF002038
67569 +:1012C0000A00055F8FB3001C106200A28FBF0020D0
67570 +:1012D0000A00055F8FB3001C8F8200248C42000C33
67571 +:1012E000104000D78FBF00200E000D8400000000CA
67572 +:1012F0003C038000346301008C6200008F85002075
67573 +:10130000946700089466000CACA200008C64000492
67574 +:101310008F82002400063400ACA400049448001E10
67575 +:101320008C62001800073C0000E83825ACA20008D9
67576 +:101330008C62001C24040001ACA2000C9062000A24
67577 +:1013400000C23025ACA60010ACA00014ACA0001860
67578 +:10135000ACA7001C0A00051D8FBF00208F8200244F
67579 +:101360008C42000C104000B68FBF00200E000D8490
67580 +:10137000000000008F820024962400089625000CAF
67581 +:101380009443001E000422029626000E8F82002045
67582 +:10139000000426000083202500052C003C0300806B
67583 +:1013A00000A6282500832025AC400000AC400004A6
67584 +:1013B000AC400008AC40000CAC450010AC40001440
67585 +:1013C000AC400018AC44001C0A00051C24040001B9
67586 +:1013D0009622000C14400018000000009242000504
67587 +:1013E0003042001014400014000000000E000332D0
67588 +:1013F0000200202192420005020020213442001008
67589 +:101400000E00033DA242000592420000240300208A
67590 +:10141000304200FF10430089020020218FBF0020CE
67591 +:101420008FB3001C8FB200188FB100148FB0001062
67592 +:101430000A00107527BD00280000000D0A00055E97
67593 +:101440008FBF00208C42000C1040007D8FBF002019
67594 +:101450000E000D84000000008E2200048F84002006
67595 +:101460009623000CAC8200003C0280089445002CBE
67596 +:101470008F82002400031C0030A5FFFF9446001E4D
67597 +:101480003C02400E0065182500C23025AC830004E4
67598 +:10149000AC800008AC80000CAC800010AC80001464
67599 +:1014A000AC800018AC86001C0A00051C2404000156
67600 +:1014B0000E000332020020218F93FF9802002021AA
67601 +:1014C0000E00033DA660000C020020210E00034226
67602 +:1014D000240500018F8200248C42000C104000582B
67603 +:1014E0008FBF00200E000D84000000009622000C2B
67604 +:1014F0008F83002000021400AC700000AC62000476
67605 +:10150000AC6000088E4400388F820024AC64000C6C
67606 +:101510008E46003C9445001E3C02401FAC66001005
67607 +:1015200000A228258E62000424040001AC6200148D
67608 +:10153000AC600018AC65001C8FBF00208FB3001C8E
67609 +:101540008FB200188FB100148FB000100A000DB8D0
67610 +:1015500027BD0028240200201082003A8FB3001C0F
67611 +:101560000E000F5E00000000104000358FBF00200D
67612 +:101570003C0480008C8201F80440FFFE348201C0EC
67613 +:1015800024030002AC500000A04300043C02100001
67614 +:10159000AC8201F80A00055E8FBF00200200202106
67615 +:1015A0008FBF00208FB3001C8FB200188FB10014C2
67616 +:1015B0008FB000100A000EA727BD00289625000C4A
67617 +:1015C000020020218FBF00208FB3001C8FB20018B3
67618 +:1015D0008FB100148FB000100A000ECC27BD002878
67619 +:1015E000020020218FB3001C8FB200188FB10014AD
67620 +:1015F0008FB000100A000EF727BD00289225000DBD
67621 +:10160000020020218FB3001C8FB200188FB100148C
67622 +:101610008FB000100A000F4827BD002802002021CB
67623 +:101620008FBF00208FB3001C8FB200188FB1001441
67624 +:101630008FB000100A000F1F27BD00288FBF0020A9
67625 +:101640008FB3001C8FB200188FB100148FB0001040
67626 +:1016500003E0000827BD00283C0580008CA202782A
67627 +:101660000440FFFE34A2024024030002AC44000008
67628 +:10167000A04300043C02100003E00008ACA2027882
67629 +:10168000A380001803E00008A38000193C03800039
67630 +:101690008C6202780440FFFE8F82001CAC62024024
67631 +:1016A00024020002A06202443C02100003E0000891
67632 +:1016B000AC6202783C02600003E000088C425404F3
67633 +:1016C0009083003024020005008040213063003FF9
67634 +:1016D0000000482114620005000050219082004C57
67635 +:1016E0009483004E304900FF306AFFFFAD00000CCC
67636 +:1016F000AD000010AD000024950200148D05001C03
67637 +:101700008D0400183042FFFF004910230002110031
67638 +:10171000000237C3004038210086202300A2102B8E
67639 +:101720000082202300A72823AD05001CAD0400186B
67640 +:10173000A5090014A5090020A50A001603E0000869
67641 +:10174000A50A002203E000080000000027BDFFD822
67642 +:10175000AFB200183C128008AFB40020AFB3001C39
67643 +:10176000AFB10014AFBF0024AFB00010365101007C
67644 +:101770003C0260008C4254049222000C3C1408008D
67645 +:10178000929400F7304300FF2402000110620032FF
67646 +:101790000080982124020002146200353650008037
67647 +:1017A0000E00143D000000009202004C2403FF8054
67648 +:1017B0003C0480003042007F000211C024420240FD
67649 +:1017C0000262102100431824AC8300949245000863
67650 +:1017D0009204004C3042007F3C03800614850007D1
67651 +:1017E000004380212402FFFFA22200112402FFFFF8
67652 +:1017F000A62200120A0005D22402FFFF9602002052
67653 +:10180000A222001196020022A62200128E020024BB
67654 +:101810003C048008AE2200143485008090A2004C65
67655 +:1018200034830100A06200108CA2003CAC6200185E
67656 +:101830008C820068AC6200F48C820064AC6200F0C0
67657 +:101840008C82006CAC6200F824020001A0A2006847
67658 +:101850000A0005EE3C0480080E001456000000004B
67659 +:1018600036420080A04000680A0005EE3C04800873
67660 +:10187000A2000068A20000690A0006293C02800854
67661 +:10188000348300808C62003834850100AC62006CC7
67662 +:1018900024020001A062006990A200D59083000894
67663 +:1018A000305100FF3072007F12320019001111C058
67664 +:1018B00024420240026210212403FF8000431824C6
67665 +:1018C0003C048000AC8300943042007F3C038006DF
67666 +:1018D000004380218E02000C1040000D02002021E8
67667 +:1018E0000E00057E0000000026220001305100FF9E
67668 +:1018F0009203003C023410260002102B0002102339
67669 +:101900003063007F022288240A0005F8A203003C0D
67670 +:101910003C088008350401008C8200E03507008017
67671 +:10192000ACE2003C8C8200E0AD02000090E5004C8F
67672 +:10193000908600D590E3004C908400D52402FF806F
67673 +:1019400000A228243063007F308400FF00A62825F1
67674 +:101950000064182A1060000230A500FF38A500803E
67675 +:10196000A0E5004CA10500093C0280089043000E50
67676 +:10197000344400803C058000A043000A8C8300189A
67677 +:101980003C027FFF3442FFFF00621824AC83001842
67678 +:101990008CA201F80440FFFE00000000ACB301C0BF
67679 +:1019A0008FBF00248FB400208FB3001C8FB20018AB
67680 +:1019B0008FB100148FB0001024020002A0A201C455
67681 +:1019C00027BD00283C02100003E00008ACA201F88B
67682 +:1019D00090A2000024420001A0A200003C030800E5
67683 +:1019E0008C6300F4304200FF144300020080302179
67684 +:1019F000A0A0000090A200008F84001C000211C073
67685 +:101A00002442024024830040008220212402FF80DF
67686 +:101A1000008220243063007F3C02800A006218218B
67687 +:101A20003C028000AC44002403E00008ACC300008A
67688 +:101A300094820006908300058C85000C8C86001033
67689 +:101A40008C8700188C88001C8C8400203C010800C6
67690 +:101A5000A42256C63C010800A02356C53C0108003C
67691 +:101A6000AC2556CC3C010800AC2656D03C01080001
67692 +:101A7000AC2756D83C010800AC2856DC3C010800D5
67693 +:101A8000AC2456E003E00008000000003C0280089F
67694 +:101A9000344201008C4400343C038000346504006F
67695 +:101AA000AC6400388C420038AF850028AC62003C42
67696 +:101AB0003C020005AC6200300000000000000000A5
67697 +:101AC00003E00008000000003C020006308400FF34
67698 +:101AD000008220253C028000AC4400300000000061
67699 +:101AE00000000000000000003C0380008C62000049
67700 +:101AF000304200101040FFFD3462040003E0000893
67701 +:101B0000AF82002894C200003C080800950800CA73
67702 +:101B100030E7FFFF0080482101021021A4C200002D
67703 +:101B200094C200003042FFFF00E2102B544000013D
67704 +:101B3000A4C7000094A200003C0308008C6300CC02
67705 +:101B400024420001A4A2000094A200003042FFFF42
67706 +:101B5000144300073C0280080107102BA4A00000DA
67707 +:101B60005440000101003821A4C700003C02800855
67708 +:101B7000344601008CC3002894A200003C0480007D
67709 +:101B80003042FFFE000210C000621021AC82003C17
67710 +:101B90008C82003C006218231860000400000000E2
67711 +:101BA0008CC200240A0006BA244200018CC2002420
67712 +:101BB000AC8200383C020050344200103C038000EC
67713 +:101BC000AC620030000000000000000000000000D7
67714 +:101BD0008C620000304200201040FFFD0000000039
67715 +:101BE00094A200003C04800030420001000210C0BA
67716 +:101BF000004410218C430400AD2300008C420404F7
67717 +:101C0000AD2200043C02002003E00008AC8200305A
67718 +:101C100027BDFFE0AFB20018AFB10014AFB00010A5
67719 +:101C2000AFBF001C94C2000000C080213C1208001D
67720 +:101C3000965200C624420001A6020000960300004E
67721 +:101C400094E2000000E03021144300058FB1003021
67722 +:101C50000E00068F024038210A0006F10000000045
67723 +:101C60008C8300048C82000424420040046100073D
67724 +:101C7000AC8200048C8200040440000400000000D8
67725 +:101C80008C82000024420001AC8200009602000019
67726 +:101C90003042FFFF50520001A600000096220000D3
67727 +:101CA00024420001A62200003C02800834420100C8
67728 +:101CB000962300009442003C144300048FBF001C94
67729 +:101CC00024020001A62200008FBF001C8FB2001862
67730 +:101CD0008FB100148FB0001003E0000827BD002072
67731 +:101CE00027BDFFE03C028008AFBF0018344201006E
67732 +:101CF0008C4800343C03800034690400AC68003830
67733 +:101D00008C42003830E700FFAF890028AC62003C0D
67734 +:101D10003C020005AC620030000000000000000042
67735 +:101D200000000000000000000000000000000000B3
67736 +:101D30008C82000C8C82000C97830016AD22000070
67737 +:101D40008C82001000604021AD2200048C820018BB
67738 +:101D5000AD2200088C82001CAD22000C8CA2001465
67739 +:101D6000AD2200108C820020AD220014908200056C
67740 +:101D7000304200FF00021200AD2200188CA20018B1
67741 +:101D8000AD22001C8CA2000CAD2200208CA2001001
67742 +:101D9000AD2200248CA2001CAD2200288CA20020C1
67743 +:101DA000AD22002C3402FFFFAD260030AD20003400
67744 +:101DB000506200013408FFFFAD28003850E00011E8
67745 +:101DC0003C0280083C048008348401009482005066
67746 +:101DD0003042FFFFAD22003C9483004494850044D0
67747 +:101DE000240200013063FFFF000318C200641821C1
67748 +:101DF0009064006430A5000700A210040A00075C8C
67749 +:101E00000044102534420100AD20003C94430044BE
67750 +:101E1000944400443063FFFF000318C2006218219D
67751 +:101E200030840007906500642402000100821004E1
67752 +:101E30000002102700451024A0620064000000008A
67753 +:101E400000000000000000003C0200063442004098
67754 +:101E50003C038000AC620030000000000000000085
67755 +:101E6000000000008C620000304200101040FFFDB6
67756 +:101E70003C06800834C201503463040034C7014A70
67757 +:101E800034C4013434C5014034C60144AFA200104B
67758 +:101E90000E0006D2AF8300288FBF001803E00008B1
67759 +:101EA00027BD00208F8300143C0608008CC600E884
67760 +:101EB0008F82001C30633FFF000319800046102111
67761 +:101EC000004310212403FF80004318243C068000B7
67762 +:101ED000ACC300283042007F3C03800C004330211B
67763 +:101EE00090C2000D30A500FF0000382134420010E0
67764 +:101EF000A0C2000D8F8900143C028008344201000A
67765 +:101F00009443004400091382304800032402000176
67766 +:101F1000A4C3000E1102000B2902000210400005AC
67767 +:101F2000240200021100000C240300010A0007A48F
67768 +:101F30000000182111020006000000000A0007A49A
67769 +:101F4000000018218CC2002C0A0007A424430001C1
67770 +:101F50008CC20014244300018CC200180043102BD3
67771 +:101F60005040000A240700012402002714A20003A5
67772 +:101F70003C0380080A0007B1240700013463010014
67773 +:101F80009462004C24420001A462004C00091382B8
67774 +:101F9000304300032C620002104000090080282119
67775 +:101FA000146000040000000094C200340A0007C15D
67776 +:101FB0003046FFFF8CC600380A0007C10080282188
67777 +:101FC000000030213C040800248456C00A000706A3
67778 +:101FD0000000000027BDFF90AFB60068AFB50064F9
67779 +:101FE000AFB40060AFB3005CAFB20058AFB1005403
67780 +:101FF000AFBF006CAFB000508C9000000080B021EB
67781 +:102000003C0208008C4200E8960400328F83001CDA
67782 +:102010002414FF8030843FFF0062182100042180D7
67783 +:1020200000641821007410243C13800000A090214B
67784 +:1020300090A50000AE620028920400323C02800CA1
67785 +:102040003063007F00628821308400C02402004099
67786 +:10205000148200320000A8218E3500388E2200182C
67787 +:102060001440000224020001AE2200189202003C3B
67788 +:10207000304200201440000E8F83001C000511C068
67789 +:102080002442024000621821306400783C02008043
67790 +:102090000082202500741824AE630800AE64081086
67791 +:1020A0008E2200188E03000800431021AE22001873
67792 +:1020B0008E22002C8E230018244200010062182B6F
67793 +:1020C0001060004300000000924200002442000122
67794 +:1020D000A24200003C0308008C6300F4304200FF81
67795 +:1020E00050430001A2400000924200008F84001C77
67796 +:1020F000000211C024420240248300403063007F6C
67797 +:10210000008220213C02800A0094202400621821D1
67798 +:10211000AE6400240A0008D2AEC30000920300326D
67799 +:102120002402FFC000431024304200FF1440000589
67800 +:1021300024020001AE220018962200340A00084250
67801 +:102140003055FFFF8E22001424420001AE220018F9
67802 +:102150009202003000021600000216030441001C27
67803 +:10216000000000009602003227A400100080282101
67804 +:10217000A7A20016960200320000302124070001B9
67805 +:102180003042FFFFAF8200140E000706AFA0001C14
67806 +:10219000960200328F83001C3C0408008C8400E807
67807 +:1021A00030423FFF000211800064182100621821B4
67808 +:1021B00000741024AE62002C3063007F3C02800E5D
67809 +:1021C000006218219062000D3042007FA062000D75
67810 +:1021D0009222000D304200105040007892420000E0
67811 +:1021E0003C028008344401009482004C8EC30000FD
67812 +:1021F0003C130800967300C62442FFFFA482004CE3
67813 +:10220000946200329623000E3054FFFF3070FFFFBF
67814 +:102210003C0308008C6300D000701807A7A30038A7
67815 +:102220009482003E3063FFFF3042FFFF14620007DC
67816 +:10223000000000008C8200303C038000244200300B
67817 +:10224000AC62003C0A00086A8C82002C9482004038
67818 +:102250003042FFFF5462000927A400408C820038FE
67819 +:102260003C03800024420030AC62003C8C8200348D
67820 +:10227000AC6200380A0008793C03800027A50038CA
67821 +:1022800027A60048026038210E00068FA7A000484C
67822 +:102290008FA300403C02800024630030AC43003830
67823 +:1022A0008FA30044AC43003C3C0380003C0200058B
67824 +:1022B000AC6200303C028008344401009482004249
67825 +:1022C000346304003042FFFF0202102B1440000769
67826 +:1022D000AF8300289482004E9483004202021021B2
67827 +:1022E000004310230A00088F3043FFFF9483004E01
67828 +:1022F00094820042026318210050102300621823C8
67829 +:102300003063FFFF3C028008344401009482003CAB
67830 +:102310003042FFFF14430003000000000A00089F42
67831 +:10232000240300019482003C3042FFFF0062102B26
67832 +:10233000144000058F8200289482003C0062102324
67833 +:102340003043FFFF8F820028AC550000AC400004F2
67834 +:10235000AC540008AC43000C3C02000634420010B0
67835 +:102360003C038000AC620030000000000000000070
67836 +:10237000000000008C620000304200101040FFFDA1
67837 +:102380003C04800834840100001018C20064182145
67838 +:102390009065006432020007240600010046100424
67839 +:1023A00000451025A0620064948300429622000E2E
67840 +:1023B00050430001A386001892420000244200010D
67841 +:1023C000A24200003C0308008C6300F4304200FF8E
67842 +:1023D00050430001A2400000924200008F84001C84
67843 +:1023E000000211C0244202402483004000822021C8
67844 +:1023F0002402FF80008220243063007F3C02800A98
67845 +:10240000006218213C028000AC440024AEC30000EE
67846 +:102410008FBF006C8FB600688FB500648FB400600A
67847 +:102420008FB3005C8FB200588FB100548FB0005052
67848 +:1024300003E0000827BD007027BDFFD8AFB3001C24
67849 +:10244000AFB20018AFB10014AFB00010AFBF0020A2
67850 +:102450000080982100E0802130B1FFFF0E000D8444
67851 +:1024600030D200FF0000000000000000000000006B
67852 +:102470008F8200208F830024AC510000AC520004F6
67853 +:10248000AC530008AC40000CAC400010AC40001451
67854 +:10249000AC4000189463001E02038025AC50001C61
67855 +:1024A0000000000000000000000000002404000103
67856 +:1024B0008FBF00208FB3001C8FB200188FB10014A3
67857 +:1024C0008FB000100A000DB827BD002830A5FFFF0F
67858 +:1024D0000A0008DC30C600FF3C02800834430100DB
67859 +:1024E0009462000E3C080800950800C63046FFFFC5
67860 +:1024F00014C000043402FFFF946500EA0A000929B1
67861 +:102500008F84001C10C20027000000009462004E5F
67862 +:102510009464003C3045FFFF00A6102300A6182B52
67863 +:102520003087FFFF106000043044FFFF00C5102318
67864 +:1025300000E210233044FFFF0088102B1040000EF3
67865 +:1025400000E810233C028008344401002403000109
67866 +:1025500034420080A44300162402FFFFA482000E30
67867 +:10256000948500EA8F84001C0000302130A5FFFF15
67868 +:102570000A0009013C0760200044102A10400009AD
67869 +:102580003C0280083443008094620016304200010F
67870 +:10259000104000043C0280009442007E244200145B
67871 +:1025A000A462001603E000080000000027BDFFE061
67872 +:1025B0003C028008AFBF001CAFB0001834420100DD
67873 +:1025C000944300429442004C104000193068FFFFD1
67874 +:1025D0009383001824020001146200298FBF001C9D
67875 +:1025E0003C06800834D00100000810C200501021C1
67876 +:1025F000904200643103000734C70148304200FFB5
67877 +:10260000006210073042000134C9014E34C4012C6D
67878 +:1026100034C5013E1040001634C601420E0006D2F9
67879 +:10262000AFA90010960200420A0009463048FFFF99
67880 +:102630003C028008344401009483004494820042A8
67881 +:102640001043000F8FBF001C94820044A4820042FC
67882 +:1026500094820050A482004E8C820038AC820030FC
67883 +:1026600094820040A482003E9482004AA4820048E2
67884 +:102670008FBF001C8FB000180A00090427BD00207E
67885 +:102680008FB0001803E0000827BD002027BDFFA081
67886 +:10269000AFB1004C3C118000AFBF0058AFB3005445
67887 +:1026A000AFB20050AFB000483626018890C2000398
67888 +:1026B0003044007FA3A400108E32018090C200003D
67889 +:1026C0003043007F240200031062003BAF92001CE5
67890 +:1026D00028620004104000062402000424020002C4
67891 +:1026E000106200098FBF00580A000B0F8FB300540F
67892 +:1026F0001062004D240200051062014E8FBF005889
67893 +:102700000A000B0F8FB30054000411C002421021C5
67894 +:102710002404FF8024420240004410242643004049
67895 +:10272000AE2200243063007F3C02800A0062182140
67896 +:102730009062003CAFA3003C00441025A062003C26
67897 +:102740008FA3003C9062003C304200401040016C7E
67898 +:102750008FBF00583C108008A3800018361001007D
67899 +:102760008E0200E08C63003427A4003C27A50010F3
67900 +:10277000004310210E0007C3AE0200E093A2001038
67901 +:102780003C038000A20200D58C6202780440FFFE68
67902 +:102790008F82001CAC62024024020002A06202444C
67903 +:1027A0003C021000AC6202780E0009390000000003
67904 +:1027B0000A000B0E8FBF00583C05800890C3000133
67905 +:1027C00090A2000B1443014E8FBF005834A4008028
67906 +:1027D0008C8200189082004C90A200083C0260009D
67907 +:1027E0008C4254048C8300183C027FFF3442FFFF6C
67908 +:1027F000006218243C0208008C4200B4AC8300182C
67909 +:102800003C038000244200013C010800AC2200B4DB
67910 +:102810008C6201F80440FFFE8F82001CAC6201C094
67911 +:102820000A000AD6240200023C10800890C300016E
67912 +:102830009202000B144301328FBF005827A40018E6
67913 +:1028400036050110240600033C0260008C4254044B
67914 +:102850000E000E470000000027A40028360501F0F6
67915 +:102860000E000E47240600038FA200283603010045
67916 +:10287000AE0200648FA2002CAE0200688FA200306E
67917 +:10288000AE02006C93A40018906300D52402FF8070
67918 +:102890000082102400431025304900FF3084007F5F
67919 +:1028A0003122007F0082102A544000013929008023
67920 +:1028B000000411C0244202402403FF800242102180
67921 +:1028C00000431024AE220094264200403042007F94
67922 +:1028D0003C038006004340218FA3001C2402FFFF1D
67923 +:1028E000AFA800403C130800927300F71062003359
67924 +:1028F00093A2001995030014304400FF3063FFFFDA
67925 +:102900000064182B106000100000000095040014F3
67926 +:102910008D07001C8D0600183084FFFF0044202323
67927 +:102920000004210000E438210000102100E4202BE5
67928 +:1029300000C2302100C43021AD07001CAD060018D4
67929 +:102940000A000A2F93A20019950400148D07001C99
67930 +:102950008D0600183084FFFF008220230004210030
67931 +:10296000000010210080182100C2302300E4202B39
67932 +:1029700000C4302300E33823AD07001CAD06001867
67933 +:1029800093A200198FA30040A462001497A2001A1A
67934 +:10299000A46200168FA2001CAC6200108FA2001C63
67935 +:1029A000AC62000C93A20019A462002097A2001A46
67936 +:1029B000A46200228FA2001CAC6200243C048008A8
67937 +:1029C000348300808C6200388FA20020012088218F
67938 +:1029D000AC62003C8FA20020AC82000093A20018E1
67939 +:1029E000A062004C93A20018A0820009A0600068B9
67940 +:1029F00093A20018105100512407FF803229007F54
67941 +:102A0000000911C024420240024210213046007FDA
67942 +:102A10003C03800000471024AC6200943C02800616
67943 +:102A200000C2302190C2003CAFA60040000020212F
67944 +:102A300000471025A0C2003C8FA80040950200026C
67945 +:102A4000950300148D07001C3042FFFF3063FFFF29
67946 +:102A50008D060018004310230002110000E2382107
67947 +:102A600000E2102B00C4302100C23021AD07001C51
67948 +:102A7000AD06001895020002A5020014A50000167C
67949 +:102A80008D020008AD0200108D020008AD02000C9E
67950 +:102A900095020002A5020020A50000228D02000878
67951 +:102AA000AD0200249102003C304200401040001A68
67952 +:102AB000262200013C108008A3A90038A38000183A
67953 +:102AC000361001008E0200E08D03003427A4004080
67954 +:102AD00027A50038004310210E0007C3AE0200E016
67955 +:102AE00093A200383C038000A20200D58C620278D9
67956 +:102AF0000440FFFE8F82001CAC62024024020002F0
67957 +:102B0000A06202443C021000AC6202780E00093957
67958 +:102B100000000000262200013043007F14730004EF
67959 +:102B2000004020212403FF8002231024004320269C
67960 +:102B300093A200180A000A4B309100FF93A40018DA
67961 +:102B40008FA3001C2402FFFF1062000A308900FFDF
67962 +:102B500024820001248300013042007F14530005C9
67963 +:102B6000306900FF2403FF800083102400431026F7
67964 +:102B7000304900FF3C028008904200080120882173
67965 +:102B8000305000FF123000193222007F000211C0C5
67966 +:102B900002421021244202402403FF8000431824F3
67967 +:102BA0003C048000AC8300943042007F3C038006EC
67968 +:102BB000004310218C43000C004020211060000BCA
67969 +:102BC000AFA200400E00057E000000002623000199
67970 +:102BD0002405FF803062007F145300020225202468
67971 +:102BE000008518260A000AAF307100FF3C048008F7
67972 +:102BF000348400808C8300183C027FFF3442FFFF46
67973 +:102C000000621824AC8300183C0380008C6201F839
67974 +:102C10000440FFFE00000000AC7201C0240200026C
67975 +:102C2000A06201C43C021000AC6201F80A000B0E65
67976 +:102C30008FBF00583C04800890C300019082000BB5
67977 +:102C40001443002F8FBF0058349000809202000878
67978 +:102C500030420040104000200000000092020008B6
67979 +:102C60000002160000021603044100050240202164
67980 +:102C70000E000ECC240500930A000B0E8FBF0058E7
67981 +:102C80009202000924030018304200FF1443000D93
67982 +:102C900002402021240500390E000E64000030217E
67983 +:102CA0000E0003328F84001C8F82FF9424030012D5
67984 +:102CB000A04300090E00033D8F84001C0A000B0E88
67985 +:102CC0008FBF0058240500360E000E64000030212E
67986 +:102CD0000A000B0E8FBF00580E0003320240202165
67987 +:102CE000920200058F84001C344200200E00033D38
67988 +:102CF000A20200050E0010758F84001C8FBF0058C3
67989 +:102D00008FB300548FB200508FB1004C8FB0004889
67990 +:102D100003E0000827BD00603C0280083445010044
67991 +:102D20003C0280008C42014094A3000E0000302140
67992 +:102D300000402021AF82001C3063FFFF3402FFFF00
67993 +:102D4000106200063C0760202402FFFFA4A2000ED0
67994 +:102D500094A500EA0A00090130A5FFFF03E000087E
67995 +:102D60000000000027BDFFC83C0280003C06800830
67996 +:102D7000AFB5002CAFB1001CAFBF0030AFB400281E
67997 +:102D8000AFB30024AFB20020AFB00018345101003F
67998 +:102D900034C501008C4301008E2200148CA400E491
67999 +:102DA0000000A821AF83001C0044102318400052EB
68000 +:102DB000A38000188E22001400005021ACA200E471
68001 +:102DC00090C3000890A200D53073007FA3A200102A
68002 +:102DD0008CB200E08CB400E4304200FF1053003BA2
68003 +:102DE00093A200108F83001C2407FF80000211C0F3
68004 +:102DF0000062102124420240246300400047102456
68005 +:102E00003063007F3C0980003C08800A006818217C
68006 +:102E1000AD2200248C62003427A4001427A50010E2
68007 +:102E2000024280210290102304400028AFA3001426
68008 +:102E30009062003C00E21024304200FF1440001970
68009 +:102E4000020090219062003C34420040A062003CAD
68010 +:102E50008F86001C93A3001024C200403042007FE4
68011 +:102E6000004828213C0208008C4200F42463000141
68012 +:102E7000306400FF14820002A3A30010A3A000107E
68013 +:102E800093A20010AFA50014000211C0244202401A
68014 +:102E900000C2102100471024AD2200240A000B4577
68015 +:102EA00093A200100E0007C3000000003C0280083F
68016 +:102EB00034420100AC5000E093A30010240A00014A
68017 +:102EC000A04300D50A000B4593A200102402000184
68018 +:102ED000154200093C0380008C6202780440FFFE2A
68019 +:102EE0008F82001CAC62024024020002A0620244F5
68020 +:102EF0003C021000AC6202789222000B2403000214
68021 +:102F0000304200FF144300720000000096220008C7
68022 +:102F1000304300FF24020082146200402402008437
68023 +:102F20003C028000344901008D22000C95230006EC
68024 +:102F3000000216023063FFFF3045003F24020027E5
68025 +:102F400010A2000FAF83001428A200281040000830
68026 +:102F5000240200312402002110A2000924020025CD
68027 +:102F600010A20007938200190A000BBD00000000A8
68028 +:102F700010A20007938200190A000BBD0000000098
68029 +:102F80000E000777012020210A000C3D0000000000
68030 +:102F90003C0380008C6202780440FFFE8F82001C9C
68031 +:102FA000AC62024024020002A06202443C02100013
68032 +:102FB000AC6202780A000C3D000000009523000678
68033 +:102FC000912400058D25000C8D2600108D270018FA
68034 +:102FD0008D28001C8D290020244200013C0108009E
68035 +:102FE000A42356C63C010800A02456C53C01080095
68036 +:102FF000AC2556CC3C010800AC2656D03C0108005C
68037 +:10300000AC2756D83C010800AC2856DC3C0108002F
68038 +:10301000AC2956E00A000C3DA38200191462000A94
68039 +:10302000240200813C02800834420100944500EAF9
68040 +:10303000922600058F84001C30A5FFFF30C600FFDC
68041 +:103040000A000BFE3C0760211462005C00000000D7
68042 +:103050009222000A304300FF306200201040000737
68043 +:10306000306200403C02800834420100944500EA8E
68044 +:103070008F84001C0A000BFC24060040104000074F
68045 +:10308000000316003C02800834420100944500EA27
68046 +:103090008F84001C0A000BFC24060041000216036A
68047 +:1030A000044100463C02800834420100944500EA95
68048 +:1030B0008F84001C2406004230A5FFFF3C076019E6
68049 +:1030C0000E000901000000000A000C3D0000000095
68050 +:1030D0009222000B24040016304200FF1044000628
68051 +:1030E0003C0680009222000B24030017304200FFB0
68052 +:1030F000144300320000000034C5010090A2000B10
68053 +:10310000304200FF1444000B000080218CA20020FC
68054 +:103110008CA400202403FF800043102400021140EF
68055 +:103120003084007F004410253C032000004310251C
68056 +:10313000ACC2083094A2000800021400000214037C
68057 +:10314000044200012410000194A2000830420080D3
68058 +:103150005040001A0200A82194A20008304220002A
68059 +:10316000504000160200A8218CA300183C021C2D20
68060 +:10317000344219ED106200110200A8213C0208003F
68061 +:103180008C4200D4104000053C0280082403000457
68062 +:1031900034420100A04300FC3C028008344201009C
68063 +:1031A000944500EA8F84001C2406000630A5FFFF2A
68064 +:1031B0000E0009013C0760210200A8210E00093918
68065 +:1031C000000000009222000A304200081040000473
68066 +:1031D00002A010210E0013790000000002A01021AF
68067 +:1031E0008FBF00308FB5002C8FB400288FB3002420
68068 +:1031F0008FB200208FB1001C8FB0001803E00008D0
68069 +:1032000027BD00382402FF80008220243C02900069
68070 +:1032100034420007008220253C028000AC4400209C
68071 +:103220003C0380008C6200200440FFFE0000000090
68072 +:1032300003E00008000000003C0380002402FF803F
68073 +:10324000008220243462000700822025AC64002024
68074 +:103250008C6200200440FFFE0000000003E0000834
68075 +:103260000000000027BDFFD8AFB3001CAFB10014B1
68076 +:10327000AFB00010AFBF0020AFB200183C1180000B
68077 +:103280003C0280088E32002034530100AE2400201E
68078 +:10329000966300EA000514003C074000004738250B
68079 +:1032A00000A08021000030210E0009013065FFFFE1
68080 +:1032B000240200A1160200022402FFFFA2620009FC
68081 +:1032C000AE3200208FBF00208FB3001C8FB20018D9
68082 +:1032D0008FB100148FB0001003E0000827BD002854
68083 +:1032E0003C0280082403000527BDFFE834420100AA
68084 +:1032F000A04300FCAFBF00103C0280008C420100E4
68085 +:10330000240500A1004020210E000C67AF82001CA4
68086 +:103310003C0380008C6202780440FFFE8F82001C18
68087 +:103320008FBF001027BD0018AC62024024020002CB
68088 +:10333000A06202443C021000AC62027803E0000884
68089 +:103340000000000027BDFFE83C068000AFBF001072
68090 +:1033500034C7010094E20008304400FF3883008243
68091 +:10336000388200842C6300012C4200010062182581
68092 +:103370001060002D24020083938200195040003B0E
68093 +:103380008FBF00103C020800904256CC8CC4010054
68094 +:103390003C06080094C656C63045003F38A30032AC
68095 +:1033A00038A2003F2C6300012C4200010062182566
68096 +:1033B000AF84001CAF860014A380001914600007BE
68097 +:1033C00000E020212402002014A2001200000000CE
68098 +:1033D0003402FFFF14C2000F00000000240200208E
68099 +:1033E00014A2000500E028218CE300142402FFFF52
68100 +:1033F0005062000B8FBF00103C040800248456C0AC
68101 +:10340000000030210E000706240700010A000CD638
68102 +:103410008FBF00100E000777000000008FBF001064
68103 +:103420000A00093927BD001814820004240200850F
68104 +:103430008CC501040A000CE1000020211482000662
68105 +:103440002482FF808CC50104240440008FBF00103B
68106 +:103450000A00016727BD0018304200FF2C4200021D
68107 +:1034600010400004240200228FBF00100A000B2726
68108 +:1034700027BD0018148200048F8200248FBF001023
68109 +:103480000A000C8627BD00188C42000C1040001E5C
68110 +:1034900000E0282190E300092402001814620003D0
68111 +:1034A000240200160A000CFC240300081462000722
68112 +:1034B00024020017240300123C02800834420080DA
68113 +:1034C000A04300090A000D0994A7000854620007F0
68114 +:1034D00094A700088F82FF942404FFFE9043000508
68115 +:1034E00000641824A043000594A7000890A6001BC0
68116 +:1034F0008CA4000094A500068FBF001000073C00BC
68117 +:103500000A0008DC27BD00188FBF001003E0000888
68118 +:1035100027BD00188F8500243C04800094A2002A57
68119 +:103520008CA30034000230C02402FFF000C210243B
68120 +:1035300000621821AC83003C8CA200303C03800068
68121 +:10354000AC8200383C02005034420010AC620030C3
68122 +:103550000000000000000000000000008C6200007D
68123 +:10356000304200201040FFFD30C20008104000062D
68124 +:103570003C0280008C620408ACA200208C62040C27
68125 +:103580000A000D34ACA200248C430400ACA300203C
68126 +:103590008C420404ACA200243C0300203C028000C6
68127 +:1035A000AC4300303C0480008C8200300043102487
68128 +:1035B0001440FFFD8F8600243C020040AC820030A6
68129 +:1035C00094C3002A94C2002894C4002C94C5002EF1
68130 +:1035D00024630001004410213064FFFFA4C20028CE
68131 +:1035E00014850002A4C3002AA4C0002A03E0000836
68132 +:1035F000000000008F84002427BDFFE83C05800404
68133 +:1036000024840010AFBF00100E000E472406000AED
68134 +:103610008F840024948200129483002E3042000F85
68135 +:10362000244200030043180424027FFF0043102BB0
68136 +:1036300010400002AC8300000000000D0E000D13CE
68137 +:10364000000000008F8300248FBF001027BD0018EA
68138 +:10365000946200149463001A3042000F00021500B7
68139 +:10366000006218253C02800003E00008AC4300A083
68140 +:103670008F8300243C028004944400069462001A64
68141 +:103680008C650000A4640016004410233042FFFF44
68142 +:103690000045102B03E00008384200018F8400240D
68143 +:1036A0003C0780049486001A8C85000094E2000692
68144 +:1036B000A482001694E3000600C310233042FFFFEB
68145 +:1036C0000045102B384200011440FFF8A483001677
68146 +:1036D00003E00008000000008F8400243C02800406
68147 +:1036E000944200069483001A8C850000A482001680
68148 +:1036F000006210233042FFFF0045102B38420001CA
68149 +:103700005040000D8F850024006030213C0780046C
68150 +:1037100094E20006A482001694E3000600C310237E
68151 +:103720003042FFFF0045102B384200011440FFF8E3
68152 +:10373000A48300168F8500243C03800034620400BB
68153 +:103740008CA40020AF820020AC6400388CA200243E
68154 +:10375000AC62003C3C020005AC62003003E00008B3
68155 +:10376000ACA000048F8400243C0300068C8200047B
68156 +:1037700000021140004310253C038000AC62003081
68157 +:103780000000000000000000000000008C6200004B
68158 +:10379000304200101040FFFD34620400AC80000491
68159 +:1037A00003E00008AF8200208F86002427BDFFE0E1
68160 +:1037B000AFB10014AFB00010AFBF00188CC300044D
68161 +:1037C0008CC500248F820020309000FF94C4001A22
68162 +:1037D00024630001244200202484000124A7002047
68163 +:1037E000ACC30004AF820020A4C4001AACC70024FC
68164 +:1037F00004A100060000882104E2000594C2001A1A
68165 +:103800008CC2002024420001ACC2002094C2001AE5
68166 +:1038100094C300282E040001004310262C4200010E
68167 +:10382000004410245040000594C2001A24020001F4
68168 +:10383000ACC2000894C2001A94C300280010202BC8
68169 +:10384000004310262C4200010044102514400007BC
68170 +:10385000000000008CC20008144000042402001084
68171 +:103860008CC300041462000F8F8500240E000DA786
68172 +:10387000241100018F820024944300289442001AEE
68173 +:1038800014430003000000000E000D1300000000B0
68174 +:10389000160000048F8500240E000D840000000037
68175 +:1038A0008F85002494A2001E94A4001C24420001D1
68176 +:1038B0003043FFFF14640002A4A2001EA4A0001E57
68177 +:1038C0001200000A3C02800494A2001494A3001A7F
68178 +:1038D0003042000F00021500006218253C028000F3
68179 +:1038E000AC4300A00A000E1EACA0000894420006E3
68180 +:1038F00094A3001A8CA40000A4A200160062102356
68181 +:103900003042FFFF0044102B384200011040000DF0
68182 +:1039100002201021006030213C07800494E2000660
68183 +:10392000A4A2001694E3000600C310233042FFFF58
68184 +:103930000044102B384200011440FFF8A4A30016E5
68185 +:10394000022010218FBF00188FB100148FB000101B
68186 +:1039500003E0000827BD002003E00008000000008D
68187 +:103960008F82002C3C03000600021140004310250A
68188 +:103970003C038000AC62003000000000000000004A
68189 +:10398000000000008C620000304200101040FFFD7B
68190 +:1039900034620400AF82002803E00008AF80002CEE
68191 +:1039A00003E000080000102103E000080000000010
68192 +:1039B0003084FFFF30A5FFFF0000182110800007B2
68193 +:1039C000000000003082000110400002000420428C
68194 +:1039D000006518210A000E3D0005284003E000089C
68195 +:1039E0000060102110C0000624C6FFFF8CA200005A
68196 +:1039F00024A50004AC8200000A000E4724840004C1
68197 +:103A000003E000080000000010A0000824A3FFFF4E
68198 +:103A1000AC86000000000000000000002402FFFF50
68199 +:103A20002463FFFF1462FFFA2484000403E000080B
68200 +:103A3000000000003C0280083442008024030001A2
68201 +:103A4000AC43000CA4430010A4430012A443001490
68202 +:103A500003E00008A44300168F82002427BDFFD88E
68203 +:103A6000AFB3001CAFB20018AFB10014AFB000107C
68204 +:103A7000AFBF00208C47000C248200802409FF8007
68205 +:103A80003C08800E3043007F008080213C0A80008B
68206 +:103A9000004920240068182130B100FF30D200FF17
68207 +:103AA00010E000290000982126020100AD44002CFE
68208 +:103AB000004928243042007F004820219062000005
68209 +:103AC00024030050304200FF1443000400000000B3
68210 +:103AD000AD45002C948200EA3053FFFF0E000D84A8
68211 +:103AE000000000008F8200248F83002000112C0032
68212 +:103AF0009442001E001224003484000100A22825F4
68213 +:103B00003C02400000A22825AC7000008FBF0020BE
68214 +:103B1000AC6000048FB20018AC7300088FB10014C1
68215 +:103B2000AC60000C8FB3001CAC6400108FB00010B0
68216 +:103B3000AC60001424040001AC60001827BD00280C
68217 +:103B40000A000DB8AC65001C8FBF00208FB3001CAD
68218 +:103B50008FB200188FB100148FB0001003E000087E
68219 +:103B600027BD00283C06800034C201009043000FAE
68220 +:103B7000240200101062000E2865001110A000073A
68221 +:103B800024020012240200082405003A10620006F4
68222 +:103B90000000302103E0000800000000240500358B
68223 +:103BA0001462FFFC000030210A000E6400000000D7
68224 +:103BB0008CC200748F83FF9424420FA003E000089E
68225 +:103BC000AC62000C27BDFFE8AFBF00100E0003423F
68226 +:103BD000240500013C0480088FBF0010240200016E
68227 +:103BE00034830080A462001227BD00182402000163
68228 +:103BF00003E00008A080001A27BDFFE0AFB2001864
68229 +:103C0000AFB10014AFB00010AFBF001C30B2FFFF67
68230 +:103C10000E000332008088213C028008345000806E
68231 +:103C20009202000924030004304200FF1443000CF8
68232 +:103C30003C028008124000082402000A0E000E5BBD
68233 +:103C400000000000920200052403FFFE0043102440
68234 +:103C5000A202000524020012A20200093C02800810
68235 +:103C600034420080022020210E00033DA0400027A6
68236 +:103C700016400003022020210E000EBF00000000AD
68237 +:103C800002202021324600FF8FBF001C8FB2001897
68238 +:103C90008FB100148FB00010240500380A000E64A4
68239 +:103CA00027BD002027BDFFE0AFBF001CAFB200184A
68240 +:103CB000AFB10014AFB000100E00033200808021BD
68241 +:103CC0000E000E5B000000003C02800834450080BE
68242 +:103CD00090A2000924120018305100FF1232000394
68243 +:103CE0000200202124020012A0A2000990A20005D7
68244 +:103CF0002403FFFE004310240E00033DA0A2000594
68245 +:103D00000200202124050020163200070000302187
68246 +:103D10008FBF001C8FB200188FB100148FB000103D
68247 +:103D20000A00034227BD00208FBF001C8FB200187D
68248 +:103D30008FB100148FB00010240500390A000E6402
68249 +:103D400027BD002027BDFFE83C028000AFB0001077
68250 +:103D5000AFBF0014344201009442000C2405003629
68251 +:103D60000080802114400012304600FF0E00033214
68252 +:103D7000000000003C02800834420080240300124E
68253 +:103D8000A043000990430005346300100E000E5B51
68254 +:103D9000A04300050E00033D020020210200202167
68255 +:103DA0000E000342240500200A000F3C0000000022
68256 +:103DB0000E000E64000000000E00033202002021FD
68257 +:103DC0003C0280089043001B2405FF9F0200202135
68258 +:103DD000006518248FBF00148FB00010A043001B93
68259 +:103DE0000A00033D27BD001827BDFFE0AFBF001844
68260 +:103DF000AFB10014AFB0001030B100FF0E000332BD
68261 +:103E0000008080213C02800824030012344200809C
68262 +:103E10000E000E5BA04300090E00033D02002021AE
68263 +:103E200002002021022030218FBF00188FB1001422
68264 +:103E30008FB00010240500350A000E6427BD002055
68265 +:103E40003C0480089083000E9082000A1443000B0B
68266 +:103E5000000028218F82FF942403005024050001D4
68267 +:103E600090420000304200FF1443000400000000B4
68268 +:103E70009082000E24420001A082000E03E00008A0
68269 +:103E800000A010213C0380008C6201F80440FFFE7A
68270 +:103E900024020002AC6401C0A06201C43C02100014
68271 +:103EA00003E00008AC6201F827BDFFE0AFB20018E4
68272 +:103EB0003C128008AFB10014AFBF001CAFB00010BF
68273 +:103EC00036510080922200092403000A304200FF8C
68274 +:103ED0001443003E000000008E4300048E22003890
68275 +:103EE000506200808FBF001C92220000240300500B
68276 +:103EF000304200FF144300253C0280008C42014008
68277 +:103F00008E4300043642010002202821AC43001CED
68278 +:103F10009622005C8E2300383042FFFF00021040E2
68279 +:103F200000621821AE23001C8E4300048E2400384A
68280 +:103F30009622005C006418233042FFFF0003184300
68281 +:103F4000000210400043102A10400006000000004C
68282 +:103F50008E4200048E230038004310230A000FAA6B
68283 +:103F6000000220439622005C3042FFFF0002204006
68284 +:103F70003C0280083443010034420080ACA4002C91
68285 +:103F8000A040002424020001A062000C0E000F5E7D
68286 +:103F900000000000104000538FBF001C3C02800056
68287 +:103FA0008C4401403C0380008C6201F80440FFFE19
68288 +:103FB00024020002AC6401C0A06201C43C021000F3
68289 +:103FC000AC6201F80A0010078FBF001C92220009A2
68290 +:103FD00024030010304200FF144300043C02800020
68291 +:103FE0008C4401400A000FEE0000282192220009B3
68292 +:103FF00024030016304200FF14430006240200147C
68293 +:10400000A22200093C0280008C4401400A001001F9
68294 +:104010008FBF001C8E2200388E23003C00431023EB
68295 +:10402000044100308FBF001C92220027244200016F
68296 +:10403000A2220027922200272C42000414400016DE
68297 +:104040003C1080009222000924030004304200FF4B
68298 +:10405000144300093C0280008C4401408FBF001CC7
68299 +:104060008FB200188FB100148FB000102405009398
68300 +:104070000A000ECC27BD00208C440140240500938B
68301 +:104080008FBF001C8FB200188FB100148FB00010CA
68302 +:104090000A000F4827BD00208E0401400E000332A5
68303 +:1040A000000000008E4200042442FFFFAE420004E4
68304 +:1040B0008E22003C2442FFFFAE22003C0E00033D56
68305 +:1040C0008E0401408E0401408FBF001C8FB2001887
68306 +:1040D0008FB100148FB00010240500040A000342C1
68307 +:1040E00027BD00208FB200188FB100148FB00010D0
68308 +:1040F00003E0000827BD00203C0680008CC2018838
68309 +:104100003C038008346500809063000E00021402B6
68310 +:10411000304400FF306300FF1464000E3C0280084E
68311 +:1041200090A20026304200FF104400098F82FF94C5
68312 +:10413000A0A400262403005090420000304200FF5B
68313 +:1041400014430006000000000A0005A18CC4018091
68314 +:104150003C02800834420080A044002603E00008AE
68315 +:104160000000000027BDFFE030E700FFAFB20018FD
68316 +:10417000AFBF001CAFB10014AFB0001000809021A1
68317 +:1041800014E0000630C600FF000000000000000D33
68318 +:10419000000000000A001060240001163C038008A3
68319 +:1041A0009062000E304200FF14460023346200800B
68320 +:1041B00090420026304200FF1446001F000000001D
68321 +:1041C0009062000F304200FF1446001B0000000008
68322 +:1041D0009062000A304200FF144600038F90FF9463
68323 +:1041E0000000000D8F90FF948F82FF983C1180009B
68324 +:1041F000AE05003CAC450000A066000A0E0003328C
68325 +:104200008E240100A20000240E00033D8E24010034
68326 +:104210003C0380008C6201F80440FFFE240200028F
68327 +:10422000AC7201C0A06201C43C021000AC6201F893
68328 +:104230000A0010618FBF001C000000000000000D8C
68329 +:10424000000000002400013F8FBF001C8FB2001847
68330 +:104250008FB100148FB0001003E0000827BD0020CC
68331 +:104260008F83FF943C0280008C44010034420100A3
68332 +:104270008C65003C9046001B0A00102724070001B3
68333 +:104280003C0280089043000E9042000A0043102632
68334 +:10429000304200FF03E000080002102B27BDFFE0C2
68335 +:1042A0003C028008AFB10014AFB00010AFBF0018DF
68336 +:1042B0003450008092020005240300303042003068
68337 +:1042C00014430085008088218F8200248C42000CDA
68338 +:1042D000104000828FBF00180E000D840000000007
68339 +:1042E0008F860020ACD100009202000892030009E2
68340 +:1042F000304200FF00021200306300FF004310252F
68341 +:10430000ACC200049202004D000216000002160327
68342 +:1043100004410005000000003C0308008C630048D5
68343 +:104320000A00109F3C1080089202000830420040B2
68344 +:10433000144000030000182192020027304300FFC0
68345 +:104340003C108008361100809222004D00031E00B0
68346 +:10435000304200FF0002140000621825ACC30008C0
68347 +:104360008E2400308F820024ACC4000C8E250034D3
68348 +:104370009443001E3C02C00BACC50010006218251F
68349 +:104380008E22003800002021ACC200148E22003C96
68350 +:10439000ACC200180E000DB8ACC3001C8E020004A5
68351 +:1043A0008F8400203C058000AC8200008E2200201B
68352 +:1043B000AC8200048E22001CAC8200088E220058C1
68353 +:1043C0008CA3007400431021AC82000C8E22002CC0
68354 +:1043D000AC8200108E2200408E23004400021400A4
68355 +:1043E00000431025AC8200149222004D240300806B
68356 +:1043F000304200FF1443000400000000AC800018AD
68357 +:104400000A0010E38F8200248E23000C2402000196
68358 +:104410001062000E2402FFFF92220008304200408A
68359 +:104420001440000A2402FFFF8E23000C8CA20074AB
68360 +:10443000006218233C0208000062102414400002AD
68361 +:10444000000028210060282100051043AC820018DC
68362 +:104450008F820024000020219443001E3C02C00CE7
68363 +:10446000006218258F8200200E000DB8AC43001C9E
68364 +:104470003C038008346201008C4200008F850020DC
68365 +:10448000346300808FBF0018ACA20000ACA0000411
68366 +:104490008C6400488F8200248FB10014ACA4000803
68367 +:1044A000ACA0000CACA00010906300059446001E68
68368 +:1044B0003C02400D00031E0000C23025ACA30014D6
68369 +:1044C0008FB00010ACA0001824040001ACA6001CA2
68370 +:1044D0000A000DB827BD00208FBF00188FB100144F
68371 +:1044E0008FB0001003E0000827BD00203C028000D0
68372 +:1044F0009443007C3C02800834460100308400FF75
68373 +:104500003065FFFF2402000524A34650A0C4000C20
68374 +:104510005482000C3065FFFF90C2000D2C42000752
68375 +:104520001040000724A30A0090C3000D24020014C9
68376 +:104530000062100400A210210A00111F3045FFFF85
68377 +:104540003065FFFF3C0280083442008003E0000831
68378 +:10455000A44500143C03800834680080AD05003891
68379 +:10456000346701008CE2001C308400FF00A210239D
68380 +:104570001840000330C600FF24A2FFFCACE2001C80
68381 +:1045800030820001504000083C0380088D02003C4E
68382 +:1045900000A2102304410012240400058C620004D0
68383 +:1045A00010A2000F3C0380088C62000414A2001EBD
68384 +:1045B000000000003C0208008C4200D8304200207D
68385 +:1045C000104000093C0280083462008090630008BB
68386 +:1045D0009042004C144300043C0280082404000470
68387 +:1045E0000A00110900000000344300803442010039
68388 +:1045F000A040000C24020001A462001410C0000AB4
68389 +:104600003C0280008C4401003C0380008C6201F875
68390 +:104610000440FFFE24020002AC6401C0A06201C499
68391 +:104620003C021000AC6201F803E00008000000004A
68392 +:1046300027BDFFE800A61823AFBF00101860008058
68393 +:10464000308800FF3C02800834470080A0E000244E
68394 +:1046500034440100A0E000278C82001C00A210233B
68395 +:1046600004400056000000008CE2003C94E3005C33
68396 +:104670008CE4002C004530233063FFFF00C3182179
68397 +:104680000083202B1080000400E018218CE2002C15
68398 +:104690000A00117800A2102194E2005C3042FFFF72
68399 +:1046A00000C2102100A21021AC62001C3C02800854
68400 +:1046B000344400809482005C8C83001C3042FFFFF5
68401 +:1046C0000002104000A210210043102B10400004F3
68402 +:1046D000000000008C82001C0A00118B3C06800840
68403 +:1046E0009482005C3042FFFF0002104000A21021C3
68404 +:1046F0003C06800834C3010034C70080AC82001C33
68405 +:10470000A060000CACE500388C62001C00A21023F5
68406 +:104710001840000224A2FFFCAC62001C3102000120
68407 +:10472000104000083C0380088CE2003C00A21023EB
68408 +:1047300004410012240400058CC2000410A20010E1
68409 +:104740008FBF00108C62000414A2004F8FBF0010B6
68410 +:104750003C0208008C4200D8304200201040000A81
68411 +:104760003C02800834620080906300089042004C54
68412 +:10477000144300053C028008240400048FBF00108D
68413 +:104780000A00110927BD001834430080344201009B
68414 +:10479000A040000C24020001A46200143C0280002E
68415 +:1047A0008C4401003C0380008C6201F80440FFFE51
68416 +:1047B000240200020A0011D8000000008CE2001C54
68417 +:1047C000004610230043102B54400001ACE5001CB0
68418 +:1047D00094E2005C3042FFFF0062102B144000079F
68419 +:1047E0002402000294E2005C8CE3001C3042FFFFD4
68420 +:1047F00000621821ACE3001C24020002ACE5003882
68421 +:104800000E000F5EA082000C1040001F8FBF001032
68422 +:104810003C0280008C4401003C0380008C6201F863
68423 +:104820000440FFFE24020002AC6401C0A06201C487
68424 +:104830003C021000AC6201F80A0011F08FBF0010BA
68425 +:1048400031020010104000108FBF00103C028008A1
68426 +:10485000344500808CA3001C94A2005C00661823E1
68427 +:104860003042FFFF006218213C023FFF3444FFFF4B
68428 +:104870000083102B544000010080182100C3102138
68429 +:10488000ACA2001C8FBF001003E0000827BD001879
68430 +:1048900027BDFFE800C0402100A63023AFBF0010B5
68431 +:1048A00018C00026308A00FF3C028008344900808E
68432 +:1048B0008D24001C8D23002C008820230064182BDD
68433 +:1048C0001060000F344701008CE2002000461021E8
68434 +:1048D000ACE200208CE200200044102B1440000BBE
68435 +:1048E0003C023FFF8CE2002000441023ACE2002099
68436 +:1048F0009522005C3042FFFF0A0012100082202146
68437 +:10490000ACE00020008620213C023FFF3443FFFF43
68438 +:104910000064102B54400001006020213C028008FC
68439 +:104920003442008000851821AC43001CA0400024C4
68440 +:10493000A04000270A0012623C03800831420010A8
68441 +:10494000104000433C0380083C06800834C40080CB
68442 +:104950008C82003C004810235840003E34660080A2
68443 +:104960009082002424420001A0820024908200242E
68444 +:104970003C0308008C630024304200FF0043102BEE
68445 +:10498000144000688FBF001034C201008C42001C2C
68446 +:1049900000A2102318400063000000008CC3000434
68447 +:1049A0009482005C006818233042FFFF0003184324
68448 +:1049B000000210400043102A1040000500000000D3
68449 +:1049C0008CC20004004810230A0012450002104364
68450 +:1049D0009482005C3042FFFF000210403C068008D9
68451 +:1049E000AC82002C34C5008094A2005C8CA4002C06
68452 +:1049F00094A3005C3042FFFF00021040008220219F
68453 +:104A00003063FFFF0083202101041021ACA2001CB1
68454 +:104A10008CC2000434C60100ACC2001C2402000297
68455 +:104A20000E000F5EA0C2000C1040003E8FBF0010B1
68456 +:104A30003C0280008C4401003C0380008C6201F841
68457 +:104A40000440FFFE240200020A001292000000004F
68458 +:104A500034660080ACC50038346401008C82001CD0
68459 +:104A600000A210231840000224A2FFFCAC82001C0C
68460 +:104A7000314200015040000A3C0380088CC2003CD7
68461 +:104A800000A2102304430014240400058C620004D7
68462 +:104A900014A200033C0380080A00128424040005C9
68463 +:104AA0008C62000414A2001F8FBF00103C0208009B
68464 +:104AB0008C4200D8304200201040000A3C0280089E
68465 +:104AC00034620080906300089042004C144300055B
68466 +:104AD0003C028008240400048FBF00100A00110962
68467 +:104AE00027BD00183443008034420100A040000C70
68468 +:104AF00024020001A46200143C0280008C440100E6
68469 +:104B00003C0380008C6201F80440FFFE2402000296
68470 +:104B1000AC6401C0A06201C43C021000AC6201F8A8
68471 +:104B20008FBF001003E0000827BD001827BDFFE875
68472 +:104B30003C0A8008AFBF0010354900808D22003C40
68473 +:104B400000C04021308400FF004610231840009D23
68474 +:104B500030E700FF354701002402000100A63023A2
68475 +:104B6000A0E0000CA0E0000DA522001418C0002455
68476 +:104B7000308200108D23001C8D22002C0068182329
68477 +:104B80000043102B1040000F000000008CE20020BA
68478 +:104B900000461021ACE200208CE200200043102BE4
68479 +:104BA0001440000B3C023FFF8CE200200043102326
68480 +:104BB000ACE200209522005C3042FFFF0A0012C1E7
68481 +:104BC00000621821ACE00020006618213C023FFF83
68482 +:104BD0003446FFFF00C3102B5440000100C01821D1
68483 +:104BE0003C0280083442008000651821AC43001C60
68484 +:104BF000A0400024A04000270A00130F3C038008B7
68485 +:104C0000104000403C0380088D22003C00481023E7
68486 +:104C10005840003D34670080912200242442000166
68487 +:104C2000A1220024912200243C0308008C6300246C
68488 +:104C3000304200FF0043102B1440009A8FBF001039
68489 +:104C40008CE2001C00A21023184000960000000017
68490 +:104C50008D4300049522005C006818233042FFFF5A
68491 +:104C600000031843000210400043102A10400005C2
68492 +:104C7000012020218D420004004810230A0012F276
68493 +:104C8000000210439522005C3042FFFF00021040FA
68494 +:104C90003C068008AC82002C34C5008094A2005CE5
68495 +:104CA0008CA4002C94A3005C3042FFFF0002104053
68496 +:104CB000008220213063FFFF0083182101031021AF
68497 +:104CC000ACA2001C8CC2000434C60100ACC2001CA3
68498 +:104CD000240200020E000F5EA0C2000C1040007102
68499 +:104CE0008FBF00103C0280008C4401003C03800018
68500 +:104CF0008C6201F80440FFFE240200020A0013390E
68501 +:104D00000000000034670080ACE500383466010024
68502 +:104D10008CC2001C00A210231840000224A2FFFC39
68503 +:104D2000ACC2001C30820001504000083C038008E7
68504 +:104D30008CE2003C00A2102304430051240400052F
68505 +:104D40008C62000410A2003E3C0380088C620004C8
68506 +:104D500054A200548FBF00103C0208008C4200D8BF
68507 +:104D600030420020104000063C028008346200807F
68508 +:104D7000906300089042004C104300403C028008C1
68509 +:104D80003443008034420100A040000C24020001A2
68510 +:104D9000A46200143C0280008C4401003C038000AB
68511 +:104DA0008C6201F80440FFFE24020002AC6401C0E2
68512 +:104DB000A06201C43C021000AC6201F80A00137743
68513 +:104DC0008FBF001024020005A120002714E2000A72
68514 +:104DD0003C038008354301009062000D2C42000620
68515 +:104DE000504000053C0380089062000D2442000101
68516 +:104DF000A062000D3C03800834670080ACE50038F9
68517 +:104E0000346601008CC2001C00A21023184000026E
68518 +:104E100024A2FFFCACC2001C308200015040000AFA
68519 +:104E20003C0380088CE2003C00A2102304410014E3
68520 +:104E3000240400058C62000414A200033C038008D3
68521 +:104E40000A00136E240400058C62000414A20015ED
68522 +:104E50008FBF00103C0208008C4200D83042002076
68523 +:104E60001040000A3C028008346200809063000811
68524 +:104E70009042004C144300053C02800824040004C6
68525 +:104E80008FBF00100A00110927BD001834430080AD
68526 +:104E900034420100A040000C24020001A46200146E
68527 +:104EA0008FBF001003E0000827BD00183C0B8008EE
68528 +:104EB00027BDFFE83C028000AFBF00103442010074
68529 +:104EC000356A00809044000A356901008C45001461
68530 +:104ED0008D4800389123000C308400FF0105102319
68531 +:104EE0001C4000B3306700FF2CE20006504000B1C8
68532 +:104EF0008FBF00102402000100E2300430C2000322
68533 +:104F00005440000800A8302330C2000C144000A117
68534 +:104F100030C20030144000A38FBF00100A00143BC1
68535 +:104F20000000000018C00024308200108D43001CD7
68536 +:104F30008D42002C006818230043102B1040000FF6
68537 +:104F4000000000008D22002000461021AD2200202C
68538 +:104F50008D2200200043102B1440000B3C023FFF29
68539 +:104F60008D22002000431023AD2200209542005CDA
68540 +:104F70003042FFFF0A0013AF00621821AD2000206D
68541 +:104F8000006618213C023FFF3446FFFF00C3102B90
68542 +:104F90005440000100C018213C02800834420080C7
68543 +:104FA00000651821AC43001CA0400024A04000274D
68544 +:104FB0000A0013FD3C038008104000403C038008B9
68545 +:104FC0008D42003C004810231840003D34670080AB
68546 +:104FD0009142002424420001A14200249142002475
68547 +:104FE0003C0308008C630024304200FF0043102B78
68548 +:104FF000144000708FBF00108D22001C00A21023EF
68549 +:105000001840006C000000008D6300049542005CB5
68550 +:10501000006818233042FFFF0003184300021040CD
68551 +:105020000043102A10400005014020218D62000439
68552 +:10503000004810230A0013E0000210439542005C70
68553 +:105040003042FFFF000210403C068008AC82002C7A
68554 +:1050500034C5008094A2005C8CA4002C94A3005C56
68555 +:105060003042FFFF00021040008220213063FFFF2A
68556 +:105070000083182101031021ACA2001C8CC2000483
68557 +:1050800034C60100ACC2001C240200020E000F5EF8
68558 +:10509000A0C2000C104000478FBF00103C028000EF
68559 +:1050A0008C4401003C0380008C6201F80440FFFE48
68560 +:1050B000240200020A00142D000000003467008062
68561 +:1050C000ACE50038346601008CC2001C00A210233D
68562 +:1050D0001840000224A2FFFCACC2001C3082000178
68563 +:1050E0005040000A3C0380088CE2003C00A21023E0
68564 +:1050F00004430014240400058C62000414A200037D
68565 +:105100003C0380080A00141F240400058C6200047C
68566 +:1051100014A200288FBF00103C0208008C4200D867
68567 +:10512000304200201040000A3C02800834620080B7
68568 +:10513000906300089042004C144300053C02800834
68569 +:10514000240400048FBF00100A00110927BD0018B5
68570 +:105150003443008034420100A040000C24020001CE
68571 +:10516000A46200143C0280008C4401003C038000D7
68572 +:105170008C6201F80440FFFE24020002AC6401C00E
68573 +:10518000A06201C43C021000AC6201F80A00143BAA
68574 +:105190008FBF00108FBF0010010030210A00115A8C
68575 +:1051A00027BD0018010030210A00129927BD001800
68576 +:1051B0008FBF001003E0000827BD00183C038008E3
68577 +:1051C0003464010024020003A082000C8C620004FD
68578 +:1051D00003E00008AC82001C3C05800834A300807A
68579 +:1051E0009062002734A501002406004324420001F8
68580 +:1051F000A0620027906300273C0208008C42004810
68581 +:10520000306300FF146200043C07602194A500EAAB
68582 +:105210000A00090130A5FFFF03E0000800000000BC
68583 +:1052200027BDFFE8AFBF00103C0280000E00144411
68584 +:105230008C4401803C02800834430100A060000CD3
68585 +:105240008C4200048FBF001027BD001803E0000847
68586 +:10525000AC62001C27BDFFE03C028008AFBF001815
68587 +:10526000AFB10014AFB000103445008034460100E7
68588 +:105270003C0880008D09014090C3000C8CA4003CC8
68589 +:105280008CA200381482003B306700FF9502007C3E
68590 +:1052900090A30027146000093045FFFF2402000599
68591 +:1052A00054E200083C04800890C2000D2442000132
68592 +:1052B000A0C2000D0A00147F3C048008A0C0000DAD
68593 +:1052C0003C048008348201009042000C2403000555
68594 +:1052D000304200FF1443000A24A205DC348300801E
68595 +:1052E000906200272C4200075040000524A20A00CB
68596 +:1052F00090630027240200140062100400A2102111
68597 +:105300003C108008361000803045FFFF012020212E
68598 +:105310000E001444A60500149602005C8E030038AB
68599 +:105320003C1180003042FFFF000210400062182153
68600 +:10533000AE03001C0E0003328E24014092020025B1
68601 +:1053400034420040A20200250E00033D8E2401409D
68602 +:105350008E2401403C0380008C6201F80440FFFE73
68603 +:1053600024020002AC6401C0A06201C43C0210002F
68604 +:10537000AC6201F88FBF00188FB100148FB000101D
68605 +:1053800003E0000827BD00203C0360103C02080039
68606 +:1053900024420174AC62502C8C6250003C048000AA
68607 +:1053A00034420080AC6250003C0208002442547C2D
68608 +:1053B0003C010800AC2256003C020800244254384C
68609 +:1053C0003C010800AC2256043C020002AC840008F8
68610 +:1053D000AC82000C03E000082402000100A0302190
68611 +:1053E0003C1C0800279C56083C0200023C050400B7
68612 +:1053F00000852826008220260004102B2CA5000101
68613 +:105400002C840001000210803C0308002463560035
68614 +:105410000085202500431821108000030000102182
68615 +:10542000AC6600002402000103E000080000000058
68616 +:105430003C1C0800279C56083C0200023C05040066
68617 +:1054400000852826008220260004102B2CA50001B0
68618 +:105450002C840001000210803C03080024635600E5
68619 +:105460000085202500431821108000050000102130
68620 +:105470003C02080024425438AC62000024020001BF
68621 +:1054800003E00008000000003C0200023C030400AE
68622 +:1054900000821026008318262C4200012C63000194
68623 +:1054A000004310251040000B000028213C1C080080
68624 +:1054B000279C56083C0380008C62000824050001EC
68625 +:1054C00000431025AC6200088C62000C00441025DB
68626 +:1054D000AC62000C03E0000800A010213C1C080096
68627 +:1054E000279C56083C0580008CA3000C0004202754
68628 +:1054F000240200010064182403E00008ACA3000C9F
68629 +:105500003C020002148200063C0560008CA208D018
68630 +:105510002403FFFE0043102403E00008ACA208D0DF
68631 +:105520003C02040014820005000000008CA208D098
68632 +:105530002403FFFD00431024ACA208D003E00008C0
68633 +:10554000000000003C02601A344200108C430080CE
68634 +:1055500027BDFFF88C440084AFA3000093A3000094
68635 +:10556000240200041462001AAFA4000493A20001F4
68636 +:105570001040000797A300023062FFFC3C0380004C
68637 +:10558000004310218C4200000A001536AFA200042F
68638 +:105590003062FFFC3C03800000431021AC4400005B
68639 +:1055A000A3A000003C0560008CA208D02403FFFEED
68640 +:1055B0003C04601A00431024ACA208D08FA300045E
68641 +:1055C0008FA2000034840010AC830084AC82008081
68642 +:1055D00003E0000827BD000827BDFFE8AFBF0010AB
68643 +:1055E0003C1C0800279C56083C0280008C43000CA1
68644 +:1055F0008C420004004318243C0200021060001496
68645 +:10560000006228243C0204003C04000210A00005B3
68646 +:10561000006210243C0208008C4256000A00155B10
68647 +:1056200000000000104000073C0404003C02080099
68648 +:105630008C4256040040F809000000000A00156082
68649 +:10564000000000000000000D3C1C0800279C5608CC
68650 +:105650008FBF001003E0000827BD0018800802403B
68651 +:1056600080080100800800808008000000000C8095
68652 +:105670000000320008000E9808000EF408000F88A1
68653 +:1056800008001028080010748008010080080080BD
68654 +:10569000800800000A000028000000000000000050
68655 +:1056A0000000000D6370362E322E316200000000C3
68656 +:1056B00006020104000000000000000000000000DD
68657 +:1056C000000000000000000038003C000000000066
68658 +:1056D00000000000000000000000000000000020AA
68659 +:1056E00000000000000000000000000000000000BA
68660 +:1056F00000000000000000000000000000000000AA
68661 +:10570000000000000000000021003800000000013F
68662 +:105710000000002B000000000000000400030D400A
68663 +:105720000000000000000000000000000000000079
68664 +:105730000000000000000000100000030000000056
68665 +:105740000000000D0000000D3C020800244259AC8E
68666 +:105750003C03080024635BF4AC4000000043202BB2
68667 +:105760001480FFFD244200043C1D080037BD9FFC4F
68668 +:1057700003A0F0213C100800261000A03C1C0800EB
68669 +:10578000279C59AC0E0002F6000000000000000D3E
68670 +:1057900027BDFFB4AFA10000AFA20004AFA3000873
68671 +:1057A000AFA4000CAFA50010AFA60014AFA700185F
68672 +:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF
68673 +:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F
68674 +:1057D000AFB8003CAFB90040AFBC0044AFBF004819
68675 +:1057E0000E000820000000008FBF00488FBC00445E
68676 +:1057F0008FB900408FB8003C8FAF00388FAE0034B7
68677 +:105800008FAD00308FAC002C8FAB00288FAA002406
68678 +:105810008FA900208FA8001C8FA700188FA6001446
68679 +:105820008FA500108FA4000C8FA300088FA2000486
68680 +:105830008FA1000027BD004C3C1B60188F7A5030B0
68681 +:10584000377B502803400008AF7A000000A01821E1
68682 +:1058500000801021008028213C0460003C0760008B
68683 +:105860002406000810600006348420788C42000072
68684 +:10587000ACE220088C63000003E00008ACE3200CDD
68685 +:105880000A000F8100000000240300403C02600079
68686 +:1058900003E00008AC4320003C0760008F86000452
68687 +:1058A0008CE520740086102100A2182B14600007DC
68688 +:1058B000000028218F8AFDA024050001A1440013C7
68689 +:1058C0008F89000401244021AF88000403E0000810
68690 +:1058D00000A010218F84FDA08F8500049086001306
68691 +:1058E00030C300FF00A31023AF82000403E00008D0
68692 +:1058F000A08000138F84FDA027BDFFE8AFB000108B
68693 +:10590000AFBF001490890011908700112402002875
68694 +:10591000312800FF3906002830E300FF2485002CE1
68695 +:105920002CD00001106200162484001C0E00006EB2
68696 +:10593000000000008F8FFDA03C05600024020204DF
68697 +:1059400095EE003E95ED003C000E5C0031ACFFFF93
68698 +:10595000016C5025ACAA2010520000012402000462
68699 +:10596000ACA22000000000000000000000000000C9
68700 +:105970008FBF00148FB0001003E0000827BD00188F
68701 +:105980000A0000A6000028218F85FDA027BDFFD8B2
68702 +:10599000AFBF0020AFB3001CAFB20018AFB100140E
68703 +:1059A000AFB000100080982190A4001124B0001C1A
68704 +:1059B00024B1002C308300FF386200280E000090D4
68705 +:1059C0002C5200010E00009800000000020020216F
68706 +:1059D0001240000202202821000028210E00006E43
68707 +:1059E000000000008F8DFDA03C0880003C05600099
68708 +:1059F00095AC003E95AB003C02683025000C4C0095
68709 +:105A0000316AFFFF012A3825ACA7201024020202C8
68710 +:105A1000ACA6201452400001240200028FBF0020D7
68711 +:105A20008FB3001C8FB200188FB100148FB000101C
68712 +:105A300027BD002803E00008ACA2200027BDFFE03E
68713 +:105A4000AFB20018AFB10014AFB00010AFBF001C70
68714 +:105A50003C1160008E2320748F82000430D0FFFF41
68715 +:105A600030F2FFFF1062000C2406008F0E00006E63
68716 +:105A7000000000003C06801F0010440034C5FF00F9
68717 +:105A80000112382524040002AE2720100000302126
68718 +:105A9000AE252014AE2420008FBF001C8FB200184A
68719 +:105AA0008FB100148FB0001000C0102103E0000877
68720 +:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2
68721 +:105AC000AFBF0018AFB100140E00006E30F1FFFF41
68722 +:105AD00000102400009180253C036000AC70201071
68723 +:105AE0008FBF00188FB100148FB000102402000483
68724 +:105AF000AC62200027BD002003E000080000102158
68725 +:105B000027BDFFE03C046018AFBF0018AFB1001420
68726 +:105B1000AFB000108C8850002403FF7F34028071E6
68727 +:105B20000103382434E5380C241F00313C1980006F
68728 +:105B3000AC8550003C11800AAC8253BCAF3F0008DA
68729 +:105B40000E00054CAF9100400E00050A3C116000AC
68730 +:105B50000E00007D000000008E3008083C0F570941
68731 +:105B60002418FFF00218602435EEE00035EDF00057
68732 +:105B7000018E5026018D58262D4600012D69000109
68733 +:105B8000AF86004C0E000D09AF8900503C06601630
68734 +:105B90008CC700003C0860148D0500A03C03FFFF8B
68735 +:105BA00000E320243C02535300052FC2108200550D
68736 +:105BB00034D07C00960201F2A780006C10400003F4
68737 +:105BC000A780007C384B1E1EA78B006C960201F844
68738 +:105BD000104000048F8D0050384C1E1EA78C007C96
68739 +:105BE0008F8D005011A000058F83004C240E0020E3
68740 +:105BF000A78E007CA78E006C8F83004C1060000580
68741 +:105C00009785007C240F0020A78F007CA78F006C55
68742 +:105C10009785007C2CB8008153000001240500808A
68743 +:105C20009784006C2C91040152200001240404008C
68744 +:105C30001060000B3C0260008FBF00188FB1001491
68745 +:105C40008FB0001027BD0020A784006CA785007CC2
68746 +:105C5000A380007EA780007403E00008A780009264
68747 +:105C60008C4704382419103C30FFFFFF13F9000360
68748 +:105C700030A8FFFF1100004624030050A380007EDF
68749 +:105C80009386007E50C00024A785007CA780007CFE
68750 +:105C90009798007CA780006CA7800074A780009272
68751 +:105CA0003C010800AC3800800E00078700000000AF
68752 +:105CB0003C0F60008DED0808240EFFF03C0B600ED9
68753 +:105CC000260C0388356A00100000482100002821B6
68754 +:105CD00001AE20243C105709AF8C0010AF8A004859
68755 +:105CE000AF89001810900023AF8500148FBF0018F3
68756 +:105CF0008FB100148FB0001027BD002003E0000812
68757 +:105D0000AF80005400055080014648218D260004D4
68758 +:105D10000A00014800D180219798007CA784006C7C
68759 +:105D2000A7800074A78000923C010800AC38008076
68760 +:105D30000E000787000000003C0F60008DED080892
68761 +:105D4000240EFFF03C0B600E260C0388356A001011
68762 +:105D5000000048210000282101AE20243C105709F2
68763 +:105D6000AF8C0010AF8A0048AF8900181490FFDF95
68764 +:105D7000AF85001424110001AF9100548FBF0018AB
68765 +:105D80008FB100148FB0001003E0000827BD002081
68766 +:105D90000A00017BA383007E3083FFFF8F880040D1
68767 +:105DA0008F87003C000321403C0580003C020050EE
68768 +:105DB000008248253C0660003C0A010034AC040027
68769 +:105DC0008CCD08E001AA58241160000500000000F5
68770 +:105DD0008CCF08E024E7000101EA7025ACCE08E092
68771 +:105DE0008D19001001805821ACB900388D180014AD
68772 +:105DF000ACB8003CACA9003000000000000000007E
68773 +:105E00000000000000000000000000000000000092
68774 +:105E100000000000000000003C0380008C640000D3
68775 +:105E2000308200201040FFFD3C0F60008DED08E047
68776 +:105E30003C0E010001AE18241460FFE100000000D8
68777 +:105E4000AF87003C03E00008AF8B00588F8500400F
68778 +:105E5000240BFFF03C06800094A7001A8CA90024B4
68779 +:105E600030ECFFFF000C38C000EB5024012A402129
68780 +:105E7000ACC8003C8CA400248CC3003C00831023DD
68781 +:105E800018400033000000008CAD002025A2000166
68782 +:105E90003C0F0050ACC2003835EE00103C068000CC
68783 +:105EA000ACCE003000000000000000000000000048
68784 +:105EB00000000000000000000000000000000000E2
68785 +:105EC000000000003C0480008C9900003338002062
68786 +:105ED0001300FFFD30E20008104000173C0980006D
68787 +:105EE0008C880408ACA800108C83040CACA30014AC
68788 +:105EF0003C1900203C188000AF19003094AE001807
68789 +:105F000094AF001C01CF3021A4A6001894AD001A54
68790 +:105F100025A70001A4A7001A94AB001A94AC001E98
68791 +:105F2000118B00030000000003E0000800000000E7
68792 +:105F300003E00008A4A0001A8D2A0400ACAA0010F7
68793 +:105F40008D240404ACA400140A0002183C1900209B
68794 +:105F50008CA200200A0002003C0F00500A0001EE53
68795 +:105F60000000000027BDFFE8AFBF00100E000232A6
68796 +:105F7000000000008F8900408FBF00103C038000AC
68797 +:105F8000A520000A9528000A9527000427BD0018BF
68798 +:105F90003105FFFF30E6000F0006150000A22025A6
68799 +:105FA00003E00008AC6400803C0508008CA50020DC
68800 +:105FB0008F83000C27BDFFE8AFB00010AFBF001407
68801 +:105FC00010A300100000802124040001020430040A
68802 +:105FD00000A6202400C3102450440006261000010F
68803 +:105FE000001018802787FDA41480000A006718217C
68804 +:105FF000261000012E0900025520FFF38F83000CAC
68805 +:10600000AF85000C8FBF00148FB0001003E00008B4
68806 +:1060100027BD00188C6800003C058000ACA8002457
68807 +:106020000E000234261000013C0508008CA500205B
68808 +:106030000A0002592E0900022405000100851804F7
68809 +:106040003C0408008C84002027BDFFC8AFBF00348B
68810 +:1060500000831024AFBE0030AFB7002CAFB60028CD
68811 +:10606000AFB50024AFB40020AFB3001CAFB200182E
68812 +:10607000AFB1001410400051AFB000108F84004049
68813 +:10608000948700069488000A00E8302330D5FFFF8B
68814 +:1060900012A0004B8FBF0034948B0018948C000A20
68815 +:1060A000016C50233142FFFF02A2482B1520000251
68816 +:1060B00002A02021004020212C8F000515E00002C5
68817 +:1060C00000809821241300040E0001C102602021E9
68818 +:1060D0008F87004002609021AF80004494F4000A52
68819 +:1060E000026080211260004E3291FFFF3C1670006A
68820 +:1060F0003C1440003C1E20003C1760008F99005863
68821 +:106100008F380000031618241074004F0283F82BF8
68822 +:1061100017E0003600000000107E00478F86004424
68823 +:1061200014C0003A2403000102031023022320219B
68824 +:106130003050FFFF1600FFF13091FFFF8F870040C6
68825 +:106140003C1100203C108000AE11003094EB000A9E
68826 +:106150003C178000024B5021A4EA000A94E9000A8F
68827 +:1061600094E800043123FFFF3106000F00062D00E4
68828 +:106170000065F025AEFE008094F3000A94F6001846
68829 +:1061800012D30036001221408CFF00148CF4001052
68830 +:1061900003E468210000C02101A4782B029870213B
68831 +:1061A00001CF6021ACED0014ACEC001002B238233A
68832 +:1061B00030F5FFFF16A0FFB88F8400408FBF00347A
68833 +:1061C0008FBE00308FB7002C8FB600288FB500240B
68834 +:1061D0008FB400208FB3001C8FB200188FB1001451
68835 +:1061E0008FB0001003E0000827BD00381477FFCC03
68836 +:1061F0008F8600440E000EE202002021004018218C
68837 +:106200008F86004410C0FFC9020310230270702360
68838 +:106210008F87004001C368210A0002E431B2FFFF0A
68839 +:106220008F86004414C0FFC93C1100203C10800040
68840 +:106230000A0002AEAE1100300E00046602002021FA
68841 +:106240000A0002DB00401821020020210E0009395B
68842 +:10625000022028210A0002DB004018210E0001EE76
68843 +:10626000000000000A0002C702B2382327BDFFC8A1
68844 +:10627000AFB7002CAFB60028AFB50024AFB40020F4
68845 +:10628000AFB3001CAFB20018AFB10014AFB0001034
68846 +:10629000AFBF00300E00011B241300013C047FFF40
68847 +:1062A0003C0380083C0220003C010800AC20007048
68848 +:1062B0003496FFFF34770080345200033C1512C03F
68849 +:1062C000241400013C1080002411FF800E000245C0
68850 +:1062D000000000008F8700488F8B00188F89001402
68851 +:1062E0008CEA00EC8CE800E8014B302B01092823F4
68852 +:1062F00000A6102314400006014B18231440000E82
68853 +:106300003C05800002A3602B1180000B0000000000
68854 +:106310003C0560008CEE00EC8CED00E88CA4180CC1
68855 +:10632000AF8E001804800053AF8D00148F8F0010C3
68856 +:10633000ADF400003C0580008CBF00003BF900017B
68857 +:10634000333800011700FFE13C0380008C6201003C
68858 +:1063500024060C0010460009000000008C680100B3
68859 +:106360002D043080548000103C0480008C690100B2
68860 +:106370002D2331811060000C3C0480008CAA0100A8
68861 +:1063800011460004000020218CA6010024C5FF81D5
68862 +:1063900030A400FF8E0B01000E000269AE0B00243A
68863 +:1063A0000A00034F3C0480008C8D01002DAC3300AB
68864 +:1063B00011800022000000003C0708008CE70098D4
68865 +:1063C00024EE00013C010800AC2E00983C04800043
68866 +:1063D0008C8201001440000300000000566000148D
68867 +:1063E0003C0440008C9F01008C9801000000982123
68868 +:1063F00003F1C82400193940330F007F00EF7025E6
68869 +:1064000001D26825AC8D08308C8C01008C85010090
68870 +:10641000258B0100017130240006514030A3007F1C
68871 +:106420000143482501324025AC8808303C04400037
68872 +:10643000AE0401380A00030E000000008C99010030
68873 +:10644000240F0020AC99002092F80000330300FFD5
68874 +:10645000106F000C241F0050547FFFDD3C048000AF
68875 +:106460008C8401000E00154E000000000A00034F4E
68876 +:106470003C04800000963824ACA7180C0A000327BF
68877 +:106480008F8F00108C8501000E0008F72404008017
68878 +:106490000A00034F3C04800000A4102B24030001D9
68879 +:1064A00010400009000030210005284000A4102BF6
68880 +:1064B00004A00003000318405440FFFC00052840DE
68881 +:1064C0005060000A0004182B0085382B54E00004AB
68882 +:1064D0000003184200C33025008520230003184222
68883 +:1064E0001460FFF9000528420004182B03E000089F
68884 +:1064F00000C310213084FFFF30C600FF3C0780003E
68885 +:106500008CE201B80440FFFE00064C000124302557
68886 +:106510003C08200000C820253C031000ACE00180AE
68887 +:10652000ACE50184ACE4018803E00008ACE301B809
68888 +:106530003C0660008CC5201C2402FFF03083020062
68889 +:10654000308601001060000E00A2282434A500014E
68890 +:106550003087300010E0000530830C0034A50004C3
68891 +:106560003C04600003E00008AC85201C1060FFFDC7
68892 +:106570003C04600034A5000803E00008AC85201C42
68893 +:1065800054C0FFF334A500020A0003B03087300086
68894 +:1065900027BDFFE8AFB00010AFBF00143C0760009C
68895 +:1065A000240600021080001100A080218F83005873
68896 +:1065B0000E0003A78C6400188F8200580000202171
68897 +:1065C000240600018C45000C0E000398000000001A
68898 +:1065D0001600000224020003000010218FBF0014E7
68899 +:1065E0008FB0001003E0000827BD00188CE8201CC5
68900 +:1065F0002409FFF001092824ACE5201C8F870058EE
68901 +:106600000A0003CD8CE5000C3C02600E00804021A6
68902 +:1066100034460100240900180000000000000000BA
68903 +:10662000000000003C0A00503C0380003547020097
68904 +:10663000AC68003834640400AC65003CAC670030E2
68905 +:106640008C6C0000318B00201160FFFD2407FFFFE0
68906 +:106650002403007F8C8D00002463FFFF248400044A
68907 +:10666000ACCD00001467FFFB24C60004000000004E
68908 +:10667000000000000000000024A402000085282B78
68909 +:106680003C0300203C0E80002529FFFF010540212E
68910 +:10669000ADC300301520FFE00080282103E0000892
68911 +:1066A000000000008F82005827BDFFD8AFB3001C48
68912 +:1066B000AFBF0020AFB20018AFB10014AFB00010F0
68913 +:1066C00094460002008098218C5200182CC300814F
68914 +:1066D0008C4800048C4700088C51000C8C49001039
68915 +:1066E000106000078C4A00142CC4000414800013AE
68916 +:1066F00030EB000730C5000310A0001000000000C0
68917 +:106700002410008B02002021022028210E00039873
68918 +:10671000240600031660000224020003000010217A
68919 +:106720008FBF00208FB3001C8FB200188FB10014F0
68920 +:106730008FB0001003E0000827BD00281560FFF1AE
68921 +:106740002410008B3C0C80003C030020241F00011F
68922 +:10675000AD830030AF9F0044000000000000000047
68923 +:10676000000000002419FFF024D8000F031978243A
68924 +:106770003C1000D0AD88003801F0702524CD000316
68925 +:106780003C08600EAD87003C35850400AD8E0030BE
68926 +:10679000000D38823504003C3C0380008C6B000007
68927 +:1067A000316200201040FFFD0000000010E00008F2
68928 +:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2
68929 +:1067C00024A50004AC8800001467FFFB24840004A7
68930 +:1067D0003C05600EACA60038000000000000000080
68931 +:1067E000000000008F8600543C0400203C0780001D
68932 +:1067F000ACE4003054C000060120202102402021DA
68933 +:106800000E0003A7000080210A00041D02002021C1
68934 +:106810000E0003DD01402821024020210E0003A7C5
68935 +:10682000000080210A00041D0200202127BDFFE096
68936 +:10683000AFB200183092FFFFAFB10014AFBF001C21
68937 +:10684000AFB000101640000D000088210A0004932C
68938 +:106850000220102124050003508500278CE5000C40
68939 +:106860000000000D262800013111FFFF24E2002066
68940 +:106870000232802B12000019AF8200588F82004430
68941 +:10688000144000168F8700583C0670003C0320001F
68942 +:106890008CE5000000A62024148300108F84006083
68943 +:1068A000000544023C09800000A980241480FFE90F
68944 +:1068B000310600FF2CCA000B5140FFEB26280001D7
68945 +:1068C000000668803C0E080025CE575801AE6021B6
68946 +:1068D0008D8B0000016000080000000002201021E4
68947 +:1068E0008FBF001C8FB200188FB100148FB0001042
68948 +:1068F00003E0000827BD00200E0003982404008454
68949 +:106900001600FFD88F8700580A000474AF8000601B
68950 +:10691000020028210E0003BF240400018F870058C5
68951 +:106920000A000474AF820060020028210E0003BF39
68952 +:10693000000020210A0004A38F8700580E000404E1
68953 +:10694000020020218F8700580A000474AF82006083
68954 +:1069500030AFFFFF000F19C03C0480008C9001B8DD
68955 +:106960000600FFFE3C1920043C181000AC83018097
68956 +:10697000AC800184AC990188AC9801B80A00047518
68957 +:106980002628000190E2000390E30002000020218D
68958 +:106990000002FE0000033A0000FF2825240600083C
68959 +:1069A0000E000398000000001600FFDC2402000324
68960 +:1069B0008F870058000010210A000474AF82006025
68961 +:1069C00090E8000200002021240600090A0004C308
68962 +:1069D00000082E0090E4000C240900FF308500FF21
68963 +:1069E00010A900150000302190F9000290F8000372
68964 +:1069F000308F00FF94EB000400196E000018740043
68965 +:106A0000000F62000186202501AE5025014B28258C
68966 +:106A10003084FF8B0A0004C32406000A90E30002BE
68967 +:106A200090FF0004000020210003360000DF28252D
68968 +:106A30000A0004C32406000B0A0004D52406008BB8
68969 +:106A4000000449C23127003F000443423C02800059
68970 +:106A500000082040240316802CE60020AC43002CC4
68971 +:106A600024EAFFE02482000114C0000330A900FFE3
68972 +:106A700000801021314700FF000260803C0D800043
68973 +:106A8000240A0001018D20213C0B000E00EA28049D
68974 +:106A9000008B302111200005000538278CCE000026
68975 +:106AA00001C5382503E00008ACC700008CD8000001
68976 +:106AB0000307782403E00008ACCF000027BDFFE007
68977 +:106AC000AFB10014AFB00010AFBF00183C076000BA
68978 +:106AD0008CE408083402F0003C1160003083F000C0
68979 +:106AE000240501C03C04800E000030211062000625
68980 +:106AF000241000018CEA08083149F0003928E00030
68981 +:106B00000008382B000780403C0D0200AE2D081411
68982 +:106B1000240C16803C0B80008E2744000E000F8B47
68983 +:106B2000AD6C002C120000043C02169124050001FB
68984 +:106B3000120500103C023D2C345800E0AE384408E9
68985 +:106B40003C1108008E31007C8FBF00183C066000AD
68986 +:106B500000118540360F16808FB100148FB00010E1
68987 +:106B60003C0E020027BD0020ACCF442003E000080B
68988 +:106B7000ACCE08103C0218DA345800E0AE384408B5
68989 +:106B80003C1108008E31007C8FBF00183C0660006D
68990 +:106B900000118540360F16808FB100148FB00010A1
68991 +:106BA0003C0E020027BD0020ACCF442003E00008CB
68992 +:106BB000ACCE08100A0004EB240500010A0004EB27
68993 +:106BC0000000282124020400A7820024A780001CC2
68994 +:106BD000000020213C06080024C65A582405FFFF67
68995 +:106BE00024890001000440803124FFFF01061821A0
68996 +:106BF0002C87002014E0FFFAAC6500002404040098
68997 +:106C0000A7840026A780001E000020213C06080063
68998 +:106C100024C65AD82405FFFF248D0001000460809B
68999 +:106C200031A4FFFF018658212C8A00201540FFFA6D
69000 +:106C3000AD650000A7800028A7800020A780002263
69001 +:106C4000000020213C06080024C65B582405FFFFF5
69002 +:106C5000249900010004C0803324FFFF030678213B
69003 +:106C60002C8E000415C0FFFAADE500003C05600065
69004 +:106C70008CA73D002403E08F00E31024344601403C
69005 +:106C800003E00008ACA63D002487007F000731C266
69006 +:106C900024C5FFFF000518C2246400013082FFFFF5
69007 +:106CA000000238C0A78400303C010800AC27003047
69008 +:106CB000AF80002C0000282100002021000030219E
69009 +:106CC0002489000100A728213124FFFF2CA81701E7
69010 +:106CD000110000032C8300801460FFF924C600011A
69011 +:106CE00000C02821AF86002C10C0001DA786002AF6
69012 +:106CF00024CAFFFF000A11423C08080025085B581F
69013 +:106D00001040000A00002021004030212407FFFF2E
69014 +:106D1000248E00010004688031C4FFFF01A86021B7
69015 +:106D20000086582B1560FFFAAD87000030A2001FC7
69016 +:106D30005040000800043080240300010043C804D0
69017 +:106D400000041080004878212738FFFF03E0000886
69018 +:106D5000ADF8000000C820212405FFFFAC8500002D
69019 +:106D600003E000080000000030A5FFFF30C6FFFF71
69020 +:106D700030A8001F0080602130E700FF0005294295
69021 +:106D80000000502110C0001D24090001240B000147
69022 +:106D900025180001010B2004330800FF0126782686
69023 +:106DA000390E00202DED00012DC2000101A2182591
69024 +:106DB0001060000D014450250005C880032C4021BF
69025 +:106DC0000100182110E0000F000A20278D040000A8
69026 +:106DD000008A1825AD03000024AD00010000402109
69027 +:106DE0000000502131A5FFFF252E000131C9FFFF12
69028 +:106DF00000C9102B1040FFE72518000103E0000830
69029 +:106E0000000000008D0A0000014440240A0005D162
69030 +:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC
69031 +:106E2000AFB00010AFBF001430E7FFFF00005021EB
69032 +:106E30003410FFFF0000602124AF001F00C0482174
69033 +:106E4000241800012419002005E0001601E010219B
69034 +:106E50000002F943019F682A0009702B01AE40240B
69035 +:106E600011000017000C18800064102110E00005CC
69036 +:106E70008C4B000000F840040008382301675824B8
69037 +:106E800000003821154000410000402155600016E7
69038 +:106E90003169FFFF258B0001316CFFFF05E1FFEC3D
69039 +:106EA00001E0102124A2003E0002F943019F682A5C
69040 +:106EB0000009702B01AE40241500FFEB000C188078
69041 +:106EC000154600053402FFFF020028210E0005B51B
69042 +:106ED00000003821020010218FBF00148FB0001075
69043 +:106EE00003E0000827BD00181520000301601821E9
69044 +:106EF000000B1C0224080010306A00FF154000053A
69045 +:106F0000306E000F250D000800031A0231A800FFA3
69046 +:106F1000306E000F15C00005307F000325100004FF
69047 +:106F200000031902320800FF307F000317E000055C
69048 +:106F3000386900012502000200031882304800FF72
69049 +:106F4000386900013123000110600004310300FFA3
69050 +:106F5000250A0001314800FF310300FF000C6940A1
69051 +:106F600001A34021240A000110CAFFD53110FFFF00
69052 +:106F7000246E000131C800FF1119FFC638C9000195
69053 +:106F80002D1F002053E0001C258B0001240D000163
69054 +:106F90000A000648240E002051460017258B0001E8
69055 +:106FA00025090001312800FF2D0900205120001281
69056 +:106FB000258B000125430001010D5004014B1024D5
69057 +:106FC000250900011440FFF4306AFFFF3127FFFF5D
69058 +:106FD00010EE000C2582FFFF304CFFFF0000502117
69059 +:106FE0003410FFFF312800FF2D0900205520FFF24B
69060 +:106FF00025430001258B0001014648260A000602B0
69061 +:10700000316CFFFF00003821000050210A000654B7
69062 +:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6
69063 +:10702000AFB10014001039423211FFE000071080A8
69064 +:10703000AFB3001C00B1282330D3FFFFAFB200185C
69065 +:1070400030A5FFFF00809021026030210044202104
69066 +:10705000AFBF00200E0005E03207001F022288218A
69067 +:107060003403FFFF0240202102002821026030216A
69068 +:1070700000003821104300093231FFFF02201021A7
69069 +:107080008FBF00208FB3001C8FB200188FB1001487
69070 +:107090008FB0001003E0000827BD00280E0005E0B7
69071 +:1070A0000000000000408821022010218FBF002036
69072 +:1070B0008FB3001C8FB200188FB100148FB0001076
69073 +:1070C00003E0000827BD0028000424003C03600002
69074 +:1070D000AC603D0810A00002348210063482101605
69075 +:1070E00003E00008AC623D0427BDFFE0AFB0001034
69076 +:1070F000309000FF2E020006AFBF001810400008BD
69077 +:10710000AFB10014001030803C03080024635784A2
69078 +:1071100000C328218CA400000080000800000000AB
69079 +:10712000000020218FBF00188FB100148FB0001015
69080 +:107130000080102103E0000827BD00209791002A5D
69081 +:1071400016200051000020213C020800904200332C
69082 +:107150000A0006BB00000000978D002615A0003134
69083 +:10716000000020210A0006BB2402000897870024A3
69084 +:1071700014E0001A00001821006020212402000100
69085 +:107180001080FFE98FBF0018000429C2004530219C
69086 +:1071900000A6582B1160FFE43C0880003C0720004B
69087 +:1071A000000569C001A76025AD0C00203C038008E4
69088 +:1071B0002402001F2442FFFFAC6000000441FFFDD9
69089 +:1071C0002463000424A5000100A6702B15C0FFF560
69090 +:1071D000000569C00A0006A58FBF00189787001C2C
69091 +:1071E0003C04080024845A58240504000E0006605C
69092 +:1071F00024060001978B002424440001308AFFFFFD
69093 +:107200002569FFFF2D48040000402821150000409B
69094 +:10721000A789002424AC3800000C19C00A0006B964
69095 +:10722000A780001C9787001E3C04080024845AD8BD
69096 +:10723000240504000E00066024060001979900262C
69097 +:10724000244400013098FFFF272FFFFF2F0E04007A
69098 +:107250000040882115C0002CA78F0026A780001EA3
69099 +:107260003A020003262401003084FFFF0E00068D41
69100 +:107270002C4500010011F8C027F00100001021C0CA
69101 +:107280000A0006BB240200089785002E978700227B
69102 +:107290003C04080024845B580E00066024060001AC
69103 +:1072A0009787002A8F89002C2445000130A8FFFF12
69104 +:1072B00024E3FFFF0109302B0040802114C0001897
69105 +:1072C000A783002AA7800022978500300E000F7543
69106 +:1072D00002002021244A05003144FFFF0E00068DE4
69107 +:1072E000240500013C05080094A500320E000F752E
69108 +:1072F00002002021244521003C0208009042003376
69109 +:107300000A0006BB000521C00A0006F3A784001E80
69110 +:1073100024AC3800000C19C00A0006B9A784001C70
69111 +:107320000A00070DA7850022308400FF27BDFFE873
69112 +:107330002C820006AFBF0014AFB000101040001543
69113 +:1073400000A03821000440803C0308002463579CBF
69114 +:10735000010328218CA40000008000080000000028
69115 +:1073600024CC007F000751C2000C59C23170FFFFCE
69116 +:107370002547C40030E5FFFF2784001C02003021B0
69117 +:107380000E0005B52407000197860028020620217B
69118 +:10739000A78400288FBF00148FB0001003E00008FE
69119 +:1073A00027BD00183C0508008CA50030000779C2F5
69120 +:1073B0000E00038125E4DF003045FFFF3C04080098
69121 +:1073C00024845B58240600010E0005B52407000143
69122 +:1073D000978E002A8FBF00148FB0001025CD0001BA
69123 +:1073E00027BD001803E00008A78D002A0007C9C2C6
69124 +:1073F0002738FF00001878C231F0FFFF3C04080076
69125 +:1074000024845AD802002821240600010E0005B564
69126 +:1074100024070001978D0026260E0100000E84002F
69127 +:1074200025AC00013C0B6000A78C0026AD603D0838
69128 +:1074300036040006000030213C0760008CE23D0469
69129 +:10744000305F000617E0FFFD24C9000100061B00A5
69130 +:10745000312600FF006440252CC50004ACE83D0443
69131 +:1074600014A0FFF68FBF00148FB0001003E00008D7
69132 +:1074700027BD0018000751C22549C8002406000195
69133 +:10748000240700013C04080024845A580E0005B566
69134 +:107490003125FFFF978700248FBF00148FB00010A5
69135 +:1074A00024E6000127BD001803E00008A786002499
69136 +:1074B0003C0660183C090800252900FCACC9502C8A
69137 +:1074C0008CC850003C0580003C020002350700805B
69138 +:1074D000ACC750003C04080024841FE03C030800B3
69139 +:1074E00024631F98ACA50008ACA2000C3C01080066
69140 +:1074F000AC2459A43C010800AC2359A803E00008BF
69141 +:107500002402000100A030213C1C0800279C59AC3B
69142 +:107510003C0C04003C0B0002008B3826008C4026FB
69143 +:107520002CE200010007502B2D050001000A4880C5
69144 +:107530003C030800246359A4004520250123182199
69145 +:107540001080000300001021AC660000240200013E
69146 +:1075500003E00008000000003C1C0800279C59AC18
69147 +:107560003C0B04003C0A0002008A3026008B3826BF
69148 +:107570002CC200010006482B2CE5000100094080C8
69149 +:107580003C030800246359A4004520250103182169
69150 +:1075900010800005000010213C0C0800258C1F986D
69151 +:1075A000AC6C00002402000103E0000800000000B1
69152 +:1075B0003C0900023C080400008830260089382677
69153 +:1075C0002CC30001008028212CE400010083102539
69154 +:1075D0001040000B000030213C1C0800279C59ACD7
69155 +:1075E0003C0A80008D4E00082406000101CA68256F
69156 +:1075F000AD4D00088D4C000C01855825AD4B000C9D
69157 +:1076000003E0000800C010213C1C0800279C59AC76
69158 +:107610003C0580008CA6000C0004202724020001F9
69159 +:1076200000C4182403E00008ACA3000C3C020002D4
69160 +:107630001082000B3C0560003C070400108700032B
69161 +:107640000000000003E00008000000008CA908D042
69162 +:10765000240AFFFD012A402403E00008ACA808D05A
69163 +:107660008CA408D02406FFFE0086182403E000083E
69164 +:10767000ACA308D03C05601A34A600108CC300806F
69165 +:1076800027BDFFF88CC50084AFA3000093A40000C1
69166 +:107690002402001010820003AFA5000403E00008DC
69167 +:1076A00027BD000893A7000114E0001497AC000266
69168 +:1076B00097B800023C0F8000330EFFFC01CF682119
69169 +:1076C000ADA50000A3A000003C0660008CC708D058
69170 +:1076D0002408FFFE3C04601A00E82824ACC508D04A
69171 +:1076E0008FA300048FA200003499001027BD00086A
69172 +:1076F000AF22008003E00008AF2300843C0B800031
69173 +:10770000318AFFFC014B48218D2800000A00080C3B
69174 +:10771000AFA8000427BDFFE8AFBF00103C1C080065
69175 +:10772000279C59AC3C0580008CA4000C8CA2000462
69176 +:107730003C0300020044282410A0000A00A31824DF
69177 +:107740003C0604003C0400021460000900A610245A
69178 +:107750001440000F3C0404000000000D3C1C080015
69179 +:10776000279C59AC8FBF001003E0000827BD00180C
69180 +:107770003C0208008C4259A40040F80900000000B7
69181 +:107780003C1C0800279C59AC0A0008358FBF00102C
69182 +:107790003C0208008C4259A80040F8090000000093
69183 +:1077A0000A00083B000000003C0880008D0201B880
69184 +:1077B0000440FFFE35090180AD2400003C031000A9
69185 +:1077C00024040040AD250004A1240008A1260009DE
69186 +:1077D000A527000A03E00008AD0301B83084FFFFCD
69187 +:1077E0000080382130A5FFFF000020210A00084555
69188 +:1077F000240600803087FFFF8CA400002406003898
69189 +:107800000A000845000028218F8300788F860070C9
69190 +:107810001066000B008040213C07080024E75B68ED
69191 +:10782000000328C000A710218C440000246300013D
69192 +:10783000108800053063000F5466FFFA000328C06B
69193 +:1078400003E00008000010213C07080024E75B6CFF
69194 +:1078500000A7302103E000088CC200003C03900028
69195 +:1078600034620001008220253C038000AC640020CB
69196 +:107870008C65002004A0FFFE0000000003E000086B
69197 +:10788000000000003C0280003443000100832025FA
69198 +:1078900003E00008AC44002027BDFFE0AFB10014B6
69199 +:1078A0003091FFFFAFB00010AFBF001812200013DF
69200 +:1078B00000A080218CA20000240400022406020003
69201 +:1078C0001040000F004028210E0007250000000096
69202 +:1078D00000001021AE000000022038218FBF0018E8
69203 +:1078E0008FB100148FB0001000402021000028212B
69204 +:1078F000000030210A00084527BD00208CA20000AE
69205 +:10790000022038218FBF00188FB100148FB00010F3
69206 +:107910000040202100002821000030210A000845F5
69207 +:1079200027BD002000A010213087FFFF8CA5000498
69208 +:107930008C4400000A000845240600068F83FD9C45
69209 +:1079400027BDFFE8AFBF0014AFB00010906700087C
69210 +:10795000008010210080282130E600400000202116
69211 +:1079600010C000088C5000000E0000BD0200202155
69212 +:10797000020020218FBF00148FB000100A000548BC
69213 +:1079800027BD00180E0008A4000000000E0000BD76
69214 +:1079900002002021020020218FBF00148FB00010B0
69215 +:1079A0000A00054827BD001827BDFFE0AFB0001052
69216 +:1079B0008F90FD9CAFBF001CAFB20018AFB1001498
69217 +:1079C00092060001008088210E00087230D2000467
69218 +:1079D00092040005001129C2A6050000348300406E
69219 +:1079E000A20300050E00087C022020210E00054A9B
69220 +:1079F0000220202124020001AE02000C02202821D6
69221 +:107A0000A602001024040002A602001224060200AE
69222 +:107A1000A60200140E000725A60200161640000F4D
69223 +:107A20008FBF001C978C00743C0B08008D6B007896
69224 +:107A30002588FFFF3109FFFF256A0001012A382B45
69225 +:107A400010E00006A78800743C0F6006240E0016A4
69226 +:107A500035ED0010ADAE00508FBF001C8FB2001886
69227 +:107A60008FB100148FB0001003E0000827BD002084
69228 +:107A700027BDFFE0AFB10014AFBF0018AFB00010DA
69229 +:107A80001080000400A088212402008010820007DA
69230 +:107A9000000000000000000D8FBF00188FB100141F
69231 +:107AA0008FB0001003E0000827BD00200E00087210
69232 +:107AB00000A020218F86FD9C0220202190C500057A
69233 +:107AC0000E00087C30B000FF2403003E1603FFF1D7
69234 +:107AD0003C0680008CC401780480FFFE34C801405D
69235 +:107AE000240900073C071000AD11000002202021EE
69236 +:107AF000A10900048FBF00188FB100148FB00010CF
69237 +:107B0000ACC701780A0008C527BD002027BDFFE0EB
69238 +:107B1000AFB00010AFBF0018AFB100143C10800030
69239 +:107B20008E110020000000000E00054AAE04002067
69240 +:107B3000AE1100208FBF00188FB100148FB000105D
69241 +:107B400003E0000827BD00203084FFFF00803821BB
69242 +:107B50002406003500A020210A0008450000282145
69243 +:107B60003084FFFF008038212406003600A0202149
69244 +:107B70000A0008450000282127BDFFD0AFB500242A
69245 +:107B80003095FFFFAFB60028AFB40020AFBF002C88
69246 +:107B9000AFB3001CAFB20018AFB10014AFB000100B
69247 +:107BA00030B6FFFF12A000270000A0218F920058DE
69248 +:107BB0008E4300003C0680002402004000033E0289
69249 +:107BC00000032C0230E4007F006698241482001D1C
69250 +:107BD00030A500FF8F8300682C68000A1100001098
69251 +:107BE0008F8D0044000358803C0C0800258C57B84A
69252 +:107BF000016C50218D4900000120000800000000A8
69253 +:107C000002D4302130C5FFFF0E0008522404008446
69254 +:107C1000166000028F920058AF8000688F8D00447C
69255 +:107C20002659002026980001032090213314FFFFDD
69256 +:107C300015A00004AF9900580295202B1480FFDC9A
69257 +:107C400000000000028010218FBF002C8FB600289A
69258 +:107C50008FB500248FB400208FB3001C8FB20018A2
69259 +:107C60008FB100148FB0001003E0000827BD003072
69260 +:107C70002407003414A70149000000009247000EB9
69261 +:107C80008F9FFDA08F90FD9C24181600A3E700197C
69262 +:107C90009242000D3C0880003C07800CA3E20018D3
69263 +:107CA000964A00123C0D60003C117FFFA60A005C62
69264 +:107CB000964400103623FFFF240200053099FFFF91
69265 +:107CC000AE1900548E46001CAD1800288CEF000041
69266 +:107CD0008DAE444801E6482601C93021AE06003881
69267 +:107CE0008E05003824CB00013C0E7F00AE05003C21
69268 +:107CF0008E0C003CAFEC0004AE0B00208E13002075
69269 +:107D0000AE13001CA3E0001BAE03002CA3E2001284
69270 +:107D10008E4A001424130050AE0A00348E0400343E
69271 +:107D2000AFE400148E590018AE1900489258000CA8
69272 +:107D3000A218004E920D000835AF0020A20F0008D7
69273 +:107D40008E090018012E282434AC4000AE0C001817
69274 +:107D5000920B0000317200FF1253027F2403FF8058
69275 +:107D60003C04080024845BE80E0008AA0000000020
69276 +:107D70003C1108008E315BE80E00087202202021C1
69277 +:107D80002405000424080001A2050025022020216A
69278 +:107D90000E00087CA20800053C0580008CB001782C
69279 +:107DA0000600FFFE8F92005834AE0140240F0002FF
69280 +:107DB0003C091000ADD10000A1CF0004ACA90178AE
69281 +:107DC0000A000962AF8000682CAD003751A0FF9413
69282 +:107DD0008F8D0044000580803C110800263157E05B
69283 +:107DE000021178218DEE000001C0000800000000A3
69284 +:107DF0002411000414B1008C3C0780003C080800EA
69285 +:107E00008D085BE88F86FD9CACE800208E4500085D
69286 +:107E10008F99FDA0240D0050ACC500308E4C000899
69287 +:107E2000ACCC00508E4B000CACCB00348E43001019
69288 +:107E3000ACC300388E4A0010ACCA00548E42001405
69289 +:107E4000ACC2003C8E5F0018AF3F00048E50001C97
69290 +:107E5000ACD0002090C40000309800FF130D024AFF
69291 +:107E6000000000008CC400348CD00030009030231F
69292 +:107E700004C000F12404008C126000EE2402000310
69293 +:107E80000A000962AF8200682419000514B900666F
69294 +:107E90003C0580003C0808008D085BE88F86FD9C4F
69295 +:107EA000ACA800208E4C00048F8AFDA0240720007F
69296 +:107EB000ACCC001C924B000824120008A14B001906
69297 +:107EC0008F82005890430009A14300188F85005805
69298 +:107ED00090BF000A33E400FF1092001028890009C7
69299 +:107EE000152000BA240E0002240D0020108D000B76
69300 +:107EF000340780002898002117000008240740005C
69301 +:107F000024100040109000053C0700012419008057
69302 +:107F1000109900023C070002240740008CC20018A0
69303 +:107F20003C03FF00004350240147F825ACDF001854
69304 +:107F300090B2000BA0D200278F8300589464000CED
69305 +:107F4000108001FE000000009467000C3C1F8000C0
69306 +:107F50002405FFBFA4C7005C9063000E2407000443
69307 +:107F6000A0C300088F820058904A000FA0CA0009E1
69308 +:107F70008F8900588D3200108FE400740244C823AA
69309 +:107F8000ACD900588D300014ACD0002C95380018B6
69310 +:107F9000330DFFFFACCD00409531001A322FFFFFAB
69311 +:107FA000ACCF00448D2E001CACCE00489128000EB2
69312 +:107FB000A0C8000890CC000801855824126001B6C2
69313 +:107FC000A0CB00088F9200580A000962AF870068B2
69314 +:107FD0002406000614A600143C0E80003C0F080086
69315 +:107FE0008DEF5BE88F85FD98ADCF00208E4900189E
69316 +:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B
69317 +:1080000024040005ACA800048CCC003C1260008164
69318 +:10801000AD6C00000A000962AF84006824110007FB
69319 +:1080200010B1004B240400063C05080024A55BE8C1
69320 +:108030000E000881240400818F9200580013102B39
69321 +:108040000A000962AF820068241F002314BFFFF6F4
69322 +:108050003C0C80003C0508008CA55BE88F8BFDA0E4
69323 +:10806000AD8500208F91FD9C8E4600042564002084
69324 +:1080700026450014AE260028240600030E000F81BA
69325 +:10808000257000308F87005802002021240600034D
69326 +:108090000E000F8124E500083C04080024845BE8FE
69327 +:1080A0000E0008AA0000000092230000240A0050DD
69328 +:1080B000306200FF544AFFE18F9200580E000F6CAF
69329 +:1080C000000000000A000A6A8F920058240800335A
69330 +:1080D00014A800323C0380003C1108008E315BE89C
69331 +:1080E0008F8FFDA0AC7100208E420008240D002867
69332 +:1080F0008F89FD9CADE200308E4A000C24060009F9
69333 +:10810000ADEA00348E5F0010ADFF00388E440014DD
69334 +:10811000ADE400208E590018ADF900248E58001CE3
69335 +:10812000ADF80028A1ED00118E4E00041260003160
69336 +:10813000AD2E00288F9200580A000962AF860068B1
69337 +:10814000240D002214ADFFB8000000002404000735
69338 +:108150003C1008008E105BE83C188000AF10002037
69339 +:108160005660FEAEAF8400683C04080024845BE8DF
69340 +:108170000E0008AA241300508F84FD9C90920000EA
69341 +:10818000325900FF1333014B000000008F9200585A
69342 +:10819000000020210A000962AF8400683C05080045
69343 +:1081A00024A55BE80E000858240400810A000A6A2E
69344 +:1081B0008F92005802D498213265FFFF0E000852BA
69345 +:1081C000240400840A0009628F920058108EFF5325
69346 +:1081D000240704002887000310E00179241100041B
69347 +:1081E000240F0001548FFF4D240740000A000A228B
69348 +:1081F000240701003C05080024A55BE80E0008A444
69349 +:10820000240400828F920058000030210A00096285
69350 +:10821000AF8600683C04080024845BE88CC2003808
69351 +:108220000E0008AA8CC3003C8F9200580A000AC0B6
69352 +:1082300000002021240400823C05080024A55BE8FE
69353 +:108240000E0008A4000000008F92005800001021CA
69354 +:108250000A000962AF8200688E5000048F91FD9C75
69355 +:108260003C078000ACF00020922C00050200282181
69356 +:10827000318B0002156001562404008A8F92FDA004
69357 +:108280002404008D9245001B30A6002014C001502C
69358 +:1082900002002821922E00092408001231C900FF93
69359 +:1082A0001128014B240400810E00087202002021D5
69360 +:1082B0009258001B240F000402002021370D0042B9
69361 +:1082C000A24D001B0E00087CA22F00253C0580005B
69362 +:1082D0008CA401780480FFFE34B90140241F000201
69363 +:1082E000AF300000A33F00048F9200583C101000F4
69364 +:1082F000ACB001780A000A6B0013102B8E500004FA
69365 +:108300008F91FD9C3C038000AC700020922A0005F8
69366 +:108310000200282131420002144000172404008A80
69367 +:10832000922C00092412000402002821318B00FF46
69368 +:1083300011720011240400810E0008720200202135
69369 +:108340008F89FDA0240800122405FFFE912F001B39
69370 +:108350000200202135EE0020A12E001BA2280009DA
69371 +:108360009226000500C538240E00087CA2270005CF
69372 +:1083700002002821000020210E0009330000000027
69373 +:108380000A000A6A8F9200588E4C00043C07800055
69374 +:108390003C10080026105BE8ACEC00203C01080013
69375 +:1083A000AC2C5BE8924B0003317100041220013BBE
69376 +:1083B0008F84FD9C24020006A0820009924F001BBE
69377 +:1083C000240EFFC031E9003F012E4025A08800089F
69378 +:1083D0009245000330A6000114C0013200000000E5
69379 +:1083E0008E420008AE0200083C0208008C425BF09E
69380 +:1083F000104001318F90FDA0000219C28F8DFD9CAD
69381 +:10840000A603000C8E4A000C24180001240400145A
69382 +:10841000AE0A002C8E420010AE02001C965F0016C1
69383 +:10842000A61F003C96590014A619003EADB8000CDA
69384 +:10843000A5B80010A5B80012A5B80014A5B800167C
69385 +:1084400012600144A2040011925100033232000272
69386 +:108450002E5300018F920058266200080A0009621C
69387 +:10846000AF8200688E4400043C1980003C068008FE
69388 +:10847000AF2400208E45000890D80000240D005045
69389 +:10848000331100FF122D009C2407008824060009E8
69390 +:108490000E000845000000000A000A6A8F9200588A
69391 +:1084A0008E5000043C0980003C118008AD30002053
69392 +:1084B0009228000024050050310400FF10850110AF
69393 +:1084C0002407008802002021000028210E00084512
69394 +:1084D0002406000E922D00002418FF80020028219F
69395 +:1084E00001B8802524040004240600300E0007256E
69396 +:1084F000A23000000A000A6A8F9200588E500004D1
69397 +:108500008F91FDA03C028000AC500020923F001BE8
69398 +:1085100033F900101320006C240700810200202191
69399 +:10852000000028212406001F0E000845000000005E
69400 +:108530000A000A6A8F9200588E44001C0E00085DE3
69401 +:1085400000000000104000E3004048218F880058E0
69402 +:1085500024070089012020218D05001C240600012C
69403 +:108560000E000845000000000A000A6A8F920058B9
69404 +:10857000964900023C10080026105BE831280004F0
69405 +:10858000110000973C0460008E4E001C3C0F8000E0
69406 +:10859000ADEE00203C010800AC2E5BE896470002DF
69407 +:1085A00030E40001148000E6000000008E42000468
69408 +:1085B000AE0200083C1008008E105BF0120000ECC8
69409 +:1085C0003C0F80008F92FD9C241000018E4E0018FD
69410 +:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3
69411 +:1085E000A2400005AE50000C3C0808008D085BF06E
69412 +:1085F0008F840058A6500010000839C2A6500012FF
69413 +:10860000A6500014A6500016A5A7000C8C8C0008DC
69414 +:108610008F8B00588F8A0058ADAC002C8D63000CF6
69415 +:1086200024070002ADA3001C91460010A1A6001172
69416 +:108630008F82005890450011A3E500088F990058DB
69417 +:1086400093380012A258004E8F910058922F0013B9
69418 +:10865000A1AF00128F920058964E0014A5AE003CB8
69419 +:1086600096490016A5A9003E8E480018ADA8001432
69420 +:108670005660FD6AAF8700683C05080024A55BE8EA
69421 +:108680000E000881000020218F9200580000382140
69422 +:108690000A000962AF8700683C05080024A55BE872
69423 +:1086A0000E0008A4240400828F9200580A000A4D8C
69424 +:1086B000000038210E000F6C000000008F9200585F
69425 +:1086C0000A000AC0000020210E00087202002021CA
69426 +:1086D0009223001B02002021346A00100E00087C47
69427 +:1086E000A22A001B000038210200202100002821BE
69428 +:1086F0000A000BA52406001F9242000C305F000107
69429 +:1087000013E0000300000000964A000EA4CA002CEB
69430 +:10871000924B000C316300025060000600003821CB
69431 +:108720008E470014964C0012ACC7001CA4CC001A53
69432 +:10873000000038210A000B7F240600093C050800D0
69433 +:1087400024A55BE80E0008A42404008B8F92005837
69434 +:108750000A000A4D0013382B3C0C08008D8C5BE896
69435 +:1087600024DFFFFE25930100326B007F016790211B
69436 +:1087700002638824AD110028AE4600E0AE4000E45C
69437 +:108780000A0009B3AE5F001CACC000543C0D0800E9
69438 +:108790008DAD5BE83C18800C37090100ACED00287A
69439 +:1087A0008E510014AD3100E08E4F0014AD2F00E467
69440 +:1087B0008E4E001025C7FFFE0A0009F4AD27001CED
69441 +:1087C0005491FDD6240740000A000A222407100015
69442 +:1087D0000E00092D000000000A000A6A8F9200585E
69443 +:1087E0008C83442C3C12DEAD3651BEEF3C010800B8
69444 +:1087F000AC205BE810710062000000003C196C6264
69445 +:1088000037387970147800082404000297850074C2
69446 +:108810009782006C2404009200A2F82B13E0001948
69447 +:1088200002002821240400020E00069524050200FF
69448 +:108830003C068000ACC200203C010800AC225BE892
69449 +:108840001040000D8F8C0058240A002824040003D7
69450 +:10885000918B0010316300FF546A00012404000171
69451 +:108860000E0000810000000010400004240400837A
69452 +:108870000A000BC28F920058240400833C050800B4
69453 +:1088800024A55BE80E000881000000008F920058CC
69454 +:108890000013382B0A000962AF8700680A000B49F1
69455 +:1088A000240200128E4400080E00085D0000000043
69456 +:1088B0000A000B55AE0200083C05080024A55BE841
69457 +:1088C0000E000858240400878F9200580A000B728B
69458 +:1088D0000013102B240400040E000695240500301C
69459 +:1088E0001440002A004048218F8800582407008344
69460 +:1088F000012020218D05001C0A000BB32406000175
69461 +:108900008F8300788F8600701066FEEE000038219D
69462 +:108910003C07080024E75B6C000320C00087282187
69463 +:108920008CAE000011D0005D246F000131E3000F18
69464 +:108930005466FFFA000320C00A000B8C00003821A7
69465 +:108940008E4400040E00085D000000000A000BC801
69466 +:10895000AE0200083C05080024A55BE80E0008A450
69467 +:10896000240400828F9200580A000B72000010212C
69468 +:108970003C05080024A55BE80A000C7C2404008761
69469 +:108980008C83442C0A000C5B3C196C628F88005865
69470 +:108990003C0780083C0C8000240B0050240A000196
69471 +:1089A000AD820020A0EB0000A0EA000191030004CA
69472 +:1089B000A0E3001891040005A0E400199106000648
69473 +:1089C0003C04080024845B6CA0E6001A91020007B6
69474 +:1089D0003C06080024C65B68A0E2001B9105000865
69475 +:1089E000A0E5001C911F0009A0FF001D9119000ABD
69476 +:1089F000A0F9001E9118000BA0F8001F9112000CA6
69477 +:108A0000A0F200209111000DA0F100219110000EA4
69478 +:108A1000A0F00022910F000FA0EF0023910E001094
69479 +:108A2000A0EE0024910D0011A0ED0025950C00147E
69480 +:108A3000A4EC0028950B00168F8A00708F920078A6
69481 +:108A4000A4EB002A95030018000A10C02545000178
69482 +:108A5000A4E3002C8D1F001C0044C0210046C82147
69483 +:108A600030A5000FAF3F0000AF09000010B20006B4
69484 +:108A7000AF850070000038218D05001C01202021E9
69485 +:108A80000A000BB32406000124AD000131A7000F3A
69486 +:108A9000AF8700780A000CF9000038213C06080076
69487 +:108AA00024C65B680086902100003821ACA000003D
69488 +:108AB0000A000B8CAE4000003C0482013C036000C5
69489 +:108AC00034820E02AC603D68AF80009803E000087D
69490 +:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7
69491 +:108AE000001018422C620041AFBF00141440000275
69492 +:108AF00024040080240300403C010800AC300060E6
69493 +:108B00003C010800AC2300640E000F7500602821B2
69494 +:108B1000244802BF2409FF8001092824001039805D
69495 +:108B2000001030408FBF00148FB0001000A720212C
69496 +:108B300000861821AF8300803C010800AC25005856
69497 +:108B40003C010800AC24005C03E0000827BD0018CD
69498 +:108B5000308300FF30C6FFFF30E400FF3C08800098
69499 +:108B60008D0201B80440FFFE000354000144382583
69500 +:108B70003C09600000E920253C031000AD050180A0
69501 +:108B8000AD060184AD04018803E00008AD0301B81F
69502 +:108B90008F8500583C0A6012354800108CAC0004E8
69503 +:108BA0003C0D600E35A60010318B00062D690001CA
69504 +:108BB000AD0900C48CA70004ACC731808CA20008AA
69505 +:108BC00094A40002ACC231848CA3001C0460000396
69506 +:108BD000A784009003E00008000000008CAF00189C
69507 +:108BE000ACCF31D08CAE001C03E00008ACCE31D449
69508 +:108BF0008F8500588F87FF288F86FF308CAE00044A
69509 +:108C00003C0F601235E80010ACEE00788CAD000827
69510 +:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0
69511 +:108C2000ACCB004894CA00543C0208008C4200447B
69512 +:108C300025490001A4C9005494C400543083FFFFA7
69513 +:108C400010620017000000003C0208008C42004047
69514 +:108C5000A4C200528CA30018ACE300308CA2001414
69515 +:108C6000ACE2002C8CB90018ACF900388CB80014B8
69516 +:108C700024050001ACF800348D0600BC50C5001975
69517 +:108C80008D0200B48D0200B8A4E2004894E40048CC
69518 +:108C9000A4E4004A94E800EA03E000083102FFFF80
69519 +:108CA0003C0208008C420024A4C00054A4C200521C
69520 +:108CB0008CA30018ACE300308CA20014ACE2002CB2
69521 +:108CC0008CB90018ACF900388CB8001424050001E8
69522 +:108CD000ACF800348D0600BC54C5FFEB8D0200B823
69523 +:108CE0008D0200B4A4E2004894E40048A4E4004AE1
69524 +:108CF00094E800EA03E000083102FFFF8F86005885
69525 +:108D00003C0480008CC900088CC80008000929C0F8
69526 +:108D1000000839C0AC87002090C30007306200040F
69527 +:108D20001040003EAF85009490CB0007316A0008E8
69528 +:108D30001140003D8F87FF2C8CCD000C8CCE001491
69529 +:108D400001AE602B11800036000000008CC2000CC8
69530 +:108D5000ACE200708CCB00188F85FF288F88FF3025
69531 +:108D6000ACEB00748CCA00102402FFF8ACAA00D847
69532 +:108D70008CC9000CAD0900608CC4001CACA400D0F0
69533 +:108D800090E3007C0062C824A0F9007C90D8000722
69534 +:108D9000330F000811E000040000000090ED007C9B
69535 +:108DA00035AC0001A0EC007C90CF000731EE000153
69536 +:108DB00011C000060000000090E3007C241800347D
69537 +:108DC00034790002A0F9007CACB800DC90C2000746
69538 +:108DD0003046000210C000040000000090E8007C53
69539 +:108DE00035040004A0E4007C90ED007D3C0B600E97
69540 +:108DF000356A001031AC003FA0EC007D8D4931D4C4
69541 +:108E00003127000110E00002240E0001A0AE00098D
69542 +:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8
69543 +:108E20000A000DAF8CC200140A000DB0ACE0007057
69544 +:108E30008F8C005827BDFFD8AFB3001CAFB200180D
69545 +:108E4000AFB00010AFBF0020AFB10014918F00157C
69546 +:108E50003C13600E3673001031EB000FA38B009CA7
69547 +:108E60008D8F00048D8B0008959F0012959900103E
69548 +:108E70009584001A9598001E958E001C33EDFFFF17
69549 +:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1
69550 +:108E90003C010800AC2D00243C010800AC29004432
69551 +:108EA0003C010800AC2A0040AE683178AE67317CE6
69552 +:108EB00091850015959100163C12601236520010F3
69553 +:108EC00030A200FF3230FFFFAE623188AE5000B4F6
69554 +:108ED00091830014959F0018240600010066C804C1
69555 +:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5
69556 +:108EF000AF8F00843C08600631CD00FFAE4D00C04E
69557 +:108F0000918A00159584000E3C07600A314900FFE4
69558 +:108F1000AF8B00883084FFFFAE4900C835110010C8
69559 +:108F20000E000D1034F004103C0208008C4200606A
69560 +:108F30003C0308008C6300643C0608008CC60058A3
69561 +:108F40003C0508008CA5005C8F8400808FBF00204A
69562 +:108F5000AE23004CAE65319CAE030054AE4500DC40
69563 +:108F6000AE6231A0AE6331A4AE663198AE22004845
69564 +:108F70008FB3001CAE0200508FB10014AE4200E06F
69565 +:108F8000AE4300E4AE4600D88FB000108FB2001898
69566 +:108F90000A00057D27BD0028978500929783007CF5
69567 +:108FA00027BDFFE8AFB0001000A3102BAFBF001427
69568 +:108FB000240400058F900058104000552409000239
69569 +:108FC0000E0006958F850080AF8200942404000374
69570 +:108FD0001040004F240900023C0680000E00008172
69571 +:108FE000ACC2002024070001240820001040004DDE
69572 +:108FF00024040005978E00928F8AFF2C24090050CC
69573 +:1090000025C50001A7850092A14900003C0D08007C
69574 +:109010008DAD0064240380008F84FF28000D66005E
69575 +:10902000AD4C0018A5400006954B000A8F85FF3017
69576 +:109030002402FF8001633024A546000A915F000AE4
69577 +:109040000000482103E2C825A159000AA0A0000899
69578 +:10905000A140004CA08000D5961800029783009094
69579 +:109060003C020004A49800EA960F00022418FFBFF7
69580 +:1090700025EE2401A48E00BE8E0D0004ACAD00448C
69581 +:109080008E0C0008ACAC0040A4A00050A4A000547A
69582 +:109090008E0B000C240C0030AC8B00288E060010C8
69583 +:1090A000AC860024A480003EA487004EA487005014
69584 +:1090B000A483003CAD420074AC8800D8ACA800602A
69585 +:1090C000A08700FC909F00D433F9007FA09900D4C2
69586 +:1090D000909000D402187824A08F00D4914E007C88
69587 +:1090E00035CD0001A14D007C938B009CAD480070F4
69588 +:1090F000AC8C00DCA08B00D68F8800888F87008422
69589 +:10910000AC8800C4AC8700C8A5400078A540007AB0
69590 +:109110008FBF00148FB000100120102103E0000861
69591 +:1091200027BD00188F8500940E0007258F860080CC
69592 +:109130000A000E9F2409000227BDFFE0AFB0001017
69593 +:109140008F900058AFB10014AFBF00188E09000413
69594 +:109150000E00054A000921C08E0800048F84FF28F4
69595 +:109160008F82FF30000839C03C068000ACC7002069
69596 +:10917000948500EA904300131460001C30B1FFFF97
69597 +:109180008F8CFF2C918B0008316A00401540000B3A
69598 +:10919000000000008E0D0004022030218FBF001857
69599 +:1091A0008FB100148FB00010240400220000382179
69600 +:1091B000000D29C00A000D2F27BD00200E000098C9
69601 +:1091C000000000008E0D0004022030218FBF001827
69602 +:1091D0008FB100148FB00010240400220000382149
69603 +:1091E000000D29C00A000D2F27BD00200E000090A1
69604 +:1091F000000000008E0D0004022030218FBF0018F7
69605 +:109200008FB100148FB00010240400220000382118
69606 +:10921000000D29C00A000D2F27BD002027BDFFE04B
69607 +:10922000AFB200183092FFFFAFB00010AFBF001C0C
69608 +:10923000AFB100141240001E000080218F8600583C
69609 +:109240008CC500002403000600053F02000514023F
69610 +:1092500030E4000714830016304500FF2CA80006F8
69611 +:1092600011000040000558803C0C0800258C58BCBB
69612 +:10927000016C50218D490000012000080000000011
69613 +:109280008F8E0098240D000111CD005024020002A1
69614 +:10929000AF820098260900013130FFFF24C800206A
69615 +:1092A0000212202B010030211480FFE5AF88005806
69616 +:1092B000020010218FBF001C8FB200188FB1001464
69617 +:1092C0008FB0001003E0000827BD00209387007EC8
69618 +:1092D00054E00034000030210E000DE700000000D3
69619 +:1092E0008F8600580A000EFF240200018F87009825
69620 +:1092F0002405000210E50031240400130000282199
69621 +:1093000000003021240700010E000D2F0000000096
69622 +:109310000A000F008F8600588F83009824020002F5
69623 +:109320001462FFF6240400120E000D9A00000000E3
69624 +:109330008F85009400403021240400120E000D2F70
69625 +:10934000000038210A000F008F8600588F83009894
69626 +:109350002411000310710029241F0002107FFFCE8A
69627 +:1093600026090001240400100000282100003021FB
69628 +:109370000A000F1D240700018F91009824060002A7
69629 +:109380001626FFF9240400100E000E410000000014
69630 +:10939000144000238F9800588F8600580A000EFF53
69631 +:1093A00024020003240400140E000D2F00002821C5
69632 +:1093B0008F8600580A000EFF240200020E000EA93C
69633 +:1093C000000000000A000F008F8600580E000D3FBD
69634 +:1093D00000000000241900022404001400002821C9
69635 +:1093E0000000302100003821AF9900980E000D2FA9
69636 +:1093F000000000000A000F008F8600580E000D5775
69637 +:10940000000000008F8500942419000200403021E4
69638 +:1094100024040010000038210A000F56AF9900986C
69639 +:109420000040382124040010970F0002000028217A
69640 +:109430000E000D2F31E6FFFF8F8600580A000F0047
69641 +:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D
69642 +:109450008C8500182402000100A61824AC83001893
69643 +:1094600003E00008A08200053084FFFF30A5FFFF65
69644 +:109470001080000700001821308200011040000217
69645 +:1094800000042042006518211480FFFB00052840DD
69646 +:1094900003E000080060102110C000070000000079
69647 +:1094A0008CA2000024C6FFFF24A50004AC820000AB
69648 +:1094B00014C0FFFB2484000403E000080000000047
69649 +:1094C00010A0000824A3FFFFAC86000000000000ED
69650 +:1094D000000000002402FFFF2463FFFF1462FFFA74
69651 +:1094E0002484000403E0000800000000000411C010
69652 +:1094F00003E000082442024027BDFFE8AFB000109F
69653 +:1095000000808021AFBF00140E000F9600A0202124
69654 +:1095100000504821240AFF808FBF00148FB0001034
69655 +:10952000012A30243127007F3C08800A3C042100B6
69656 +:1095300000E8102100C428253C03800027BD001846
69657 +:10954000AC650024AF820038AC400000AC6500245C
69658 +:1095500003E00008AC4000403C0D08008DAD005811
69659 +:1095600000056180240AFF8001A45821016C482174
69660 +:10957000012A30243127007F3C08800C3C04210064
69661 +:1095800000E8102100C428253C038000AC650028B9
69662 +:10959000AF82003403E00008AC40002430A5FFFF98
69663 +:1095A0003C0680008CC201B80440FFFE3C086015F8
69664 +:1095B00000A838253C031000ACC40180ACC0018475
69665 +:1095C000ACC7018803E00008ACC301B83C0D08003B
69666 +:1095D0008DAD005800056180240AFF8001A4582148
69667 +:1095E000016C4021010A4824000931403107007F05
69668 +:1095F00000C728253C04200000A418253C02800058
69669 +:10960000AC43083003E00008AF80003427BDFFE81A
69670 +:10961000AFB0001000808021AFBF00140E000F9685
69671 +:1096200000A0202100504821240BFF80012B502452
69672 +:10963000000A39403128007F3C0620008FBF00140B
69673 +:109640008FB0001000E8282534C2000100A21825C0
69674 +:109650003C04800027BD0018AC83083003E00008FC
69675 +:10966000AF8000383C0580088CA700603C0680086D
69676 +:109670000087102B144000112C8340008CA8006040
69677 +:109680002D0340001060000F240340008CC90060CF
69678 +:109690000089282B14A00002008018218CC30060D0
69679 +:1096A00000035A42000B30803C0A0800254A59202A
69680 +:1096B00000CA202103E000088C8200001460FFF340
69681 +:1096C0002403400000035A42000B30803C0A08008B
69682 +:1096D000254A592000CA202103E000088C8200009E
69683 +:1096E0003C05800890A60008938400AB24C20001CA
69684 +:1096F000304200FF3043007F1064000C0002382726
69685 +:10970000A0A200083C0480008C85017804A0FFFE24
69686 +:109710008F8A00A0240900023C081000AC8A014096
69687 +:10972000A089014403E00008AC8801780A00101BFE
69688 +:1097300030E2008027BDFFD8AFB200188F9200A49E
69689 +:10974000AFBF0020AFB3001CAFB00010AFB100142A
69690 +:109750008F9300348E5900283C1000803C0EFFEFA0
69691 +:10976000AE7900008E580024A260000A35CDFFFFBC
69692 +:10977000AE7800049251002C3C0BFF9F356AFFFF2E
69693 +:10978000A271000C8E6F000C3C080040A271000B0F
69694 +:1097900001F06025018D4824012A382400E8302595
69695 +:1097A000AE66000C8E450004AE6000183C0400FF5D
69696 +:1097B000AE6500148E43002C3482FFFFA6600008C3
69697 +:1097C0000062F824AE7F00108E5900088F9000A030
69698 +:1097D000964E0012AE7900208E51000C31D83FFF1A
69699 +:1097E00000187980AE7100248E4D001401F06021C4
69700 +:1097F00031CB0001AE6D00288E4A0018000C41C22A
69701 +:10980000000B4B80AE6A002C8E46001C01093821EB
69702 +:10981000A667001CAE660030964500028E4400200C
69703 +:10982000A665001EAE64003492430033306200042B
69704 +:1098300054400006924700003C0280083443010077
69705 +:109840008C7F00D0AE7F0030924700008F860038BA
69706 +:10985000A0C700309245003330A4000250800007BA
69707 +:10986000925100018F880038240BFF80910A00304C
69708 +:10987000014B4825A1090030925100018F9000381A
69709 +:10988000240CFFBF2404FFDFA21100318F8D0038AC
69710 +:109890003C1880083711008091AF003C31EE007F0A
69711 +:1098A000A1AE003C8F890038912B003C016C502404
69712 +:1098B000A12A003C8F9F00388E68001493E6003C7C
69713 +:1098C0002D0700010007114000C4282400A218251C
69714 +:1098D000A3E3003C8F87003896590012A4F90032A8
69715 +:1098E0008E450004922E007C30B0000300107823D7
69716 +:1098F00031ED000300AD102131CC000215800002D3
69717 +:1099000024460034244600303C0280083443008062
69718 +:10991000907F007C00BFC824333800041700000289
69719 +:1099200024C2000400C010218F98003824190002BE
69720 +:10993000ACE20034A3190000924F003F8F8E003834
69721 +:109940003C0C8008358B0080A1CF00018F9100383E
69722 +:10995000924D003F8E440004A62D0002956A005CE3
69723 +:109960000E000FF43150FFFF00024B800209382532
69724 +:109970003C08420000E82825AE2500048E4400384B
69725 +:109980008F850038ACA400188E460034ACA6001CAD
69726 +:10999000ACA0000CACA00010A4A00014A4A0001661
69727 +:1099A000A4A00020A4A00022ACA000248E62001479
69728 +:1099B00050400001240200018FBF00208FB3001C23
69729 +:1099C0008FB200188FB100148FB00010ACA2000845
69730 +:1099D0000A00101327BD002827BDFFC83C058008DA
69731 +:1099E00034A40080AFBF0034AFBE0030AFB7002C4E
69732 +:1099F000AFB60028AFB50024AFB40020AFB3001C51
69733 +:109A0000AFB20018AFB10014AFB00010948300786B
69734 +:109A10009482007A104300512405FFFF0080F0215A
69735 +:109A20000A0011230080B821108B004D8FBF003435
69736 +:109A30008F8600A03C1808008F18005C2411FF805E
69737 +:109A40003C1680000306782101F18024AED0002C62
69738 +:109A500096EE007A31EC007F3C0D800E31CB7FFF1B
69739 +:109A6000018D5021000B4840012AA82196A4000036
69740 +:109A70003C0808008D0800582405FF8030953FFF02
69741 +:109A800001061821001539800067C8210325F82434
69742 +:109A90003C02010003E290253338007F3C11800C2A
69743 +:109AA000AED20028031190219250000D320F000415
69744 +:109AB00011E0003702E0982196E3007A96E8007AF8
69745 +:109AC00096E5007A2404800031077FFF24E300013B
69746 +:109AD00030627FFF00A4F82403E2C825A6F9007ACB
69747 +:109AE00096E6007A3C1408008E94006030D67FFF22
69748 +:109AF00012D400C1000000008E5800188F8400A00E
69749 +:109B000002A028212713FFFF0E000FCEAE53002C1A
69750 +:109B100097D5007897D4007A12950010000028217C
69751 +:109B20003C098008352401003C0A8008914800085F
69752 +:109B3000908700D53114007F30E400FF0284302B81
69753 +:109B400014C0FFB9268B0001938E00AB268C000158
69754 +:109B5000008E682115ACFFB78F8600A08FBF003440
69755 +:109B60008FBE00308FB7002C8FB600288FB5002431
69756 +:109B70008FB400208FB3001C8FB200188FB1001477
69757 +:109B80008FB0001000A0102103E0000827BD0038AE
69758 +:109B900000C020210E000F99028028218E4B00105A
69759 +:109BA0008E4C00308F84003824090002016C502351
69760 +:109BB000AE4A0010A089000096E3005C8E4400309D
69761 +:109BC0008F9100380E000FF43070FFFF00024380C9
69762 +:109BD000020838253C02420000E22825AE25000498
69763 +:109BE0008E5F00048F8A00388E590000240B000815
69764 +:109BF000AD5F001CAD590018AD40000CAD40001029
69765 +:109C00009246000A240400052408C00030D000FF5A
69766 +:109C1000A550001496580008A55800169251000A45
69767 +:109C20003C188008322F00FFA54F0020964E0008F8
69768 +:109C300037110100A54E0022AD400024924D000BCB
69769 +:109C400031AC00FFA54C0002A14B00018E49003051
69770 +:109C50008F830038240BFFBFAC690008A06400307C
69771 +:109C60008F9000382403FFDF9607003200E8282495
69772 +:109C700000B51025A6020032921F003233F9003FD2
69773 +:109C800037260040A20600328F8C0038AD800034A9
69774 +:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F
69775 +:109CA00031CD007FA18D003C8F84003835EEFFFF61
69776 +:109CB000908A003C014B4824A089003C8F850038E5
69777 +:109CC00090A8003C01033824A0A7003C8E42003439
69778 +:109CD0008F9100383C038008AE2200408E59002C42
69779 +:109CE0008E5F0030033F3023AE26004492300048A0
69780 +:109CF0003218007FA23800488F8800388E4D00301F
69781 +:109D00008D0C004801AE582401965024014B482583
69782 +:109D1000AD0900489244000AA104004C964700088F
69783 +:109D20008F850038A4A7004E8E5000308E4400303E
69784 +:109D30000E0003818C65006092F9007C0002F940FE
69785 +:109D4000004028210002110003E2302133360002D6
69786 +:109D500012C00003020680210005B0800216802197
69787 +:109D6000926D007C31B30004126000020005708027
69788 +:109D7000020E80218E4B00308F8800382405800031
69789 +:109D8000316A0003000A4823312400030204182129
69790 +:109D9000AD03003496E4007A96F0007A96F1007AEA
69791 +:109DA00032027FFF2447000130FF7FFF0225C824D5
69792 +:109DB000033F3025A6E6007A96F8007A3C120800A8
69793 +:109DC0008E520060330F7FFF11F200180000000078
69794 +:109DD0008F8400A00E000FCE02A028218F8400A047
69795 +:109DE0000E000FDE028028210E001013000000007C
69796 +:109DF0000A00111F0000000096F1007A022480245E
69797 +:109E0000A6F0007A92EF007A92EB007A31EE00FF32
69798 +:109E1000000E69C2000D6027000C51C03169007F3F
69799 +:109E2000012A20250A001119A2E4007A96E6007A98
69800 +:109E300000C5C024A6F8007A92EF007A92F3007A67
69801 +:109E400031F200FF001271C2000E6827000DB1C090
69802 +:109E5000326C007F01962825A2E5007A0A0011D015
69803 +:109E60008F8400A03C0380003084FFFF30A5FFFFFB
69804 +:109E7000AC640018AC65001C03E000088C620014A0
69805 +:109E800027BDFFA03C068008AFBF005CAFBE0058F6
69806 +:109E9000AFB70054AFB60050AFB5004CAFB40048F8
69807 +:109EA000AFB30044AFB20040AFB1003CAFB0003838
69808 +:109EB00034C80100910500D590C700083084FFFF29
69809 +:109EC00030A500FF30E2007F0045182AAFA4001043
69810 +:109ED000A7A00018A7A0002610600055AFA000148E
69811 +:109EE00090CA00083149007F00A9302324D3FFFF26
69812 +:109EF0000013802B8FB400100014902B02128824C2
69813 +:109F0000522000888FB300143C03800894790052DB
69814 +:109F1000947E00508FB60010033EC0230018BC0092
69815 +:109F2000001714030016FC0002C2A82A16A00002A3
69816 +:109F3000001F2C030040282100133C0000072403CD
69817 +:109F400000A4102A5440000100A020212885000907
69818 +:109F500014A000020080A021241400083C0C8008FA
69819 +:109F60008D860048001459808D88004C3C03800089
69820 +:109F70003169FFFF3C0A0010012A202534710400DA
69821 +:109F8000AC660038AF9100A4AC68003CAC64003013
69822 +:109F900000000000000000000000000000000000C1
69823 +:109FA00000000000000000000000000000000000B1
69824 +:109FB0008C6E000031CD002011A0FFFD0014782A26
69825 +:109FC00001F01024104000390000A8213C16800840
69826 +:109FD00092D700083C1280008E44010032F6007FC8
69827 +:109FE0000E000F9902C028218E3900108E44010006
69828 +:109FF0000000902133373FFF0E000FB102E028210F
69829 +:10A00000923800003302003F2C500008520000102C
69830 +:10A0100000008821000210803C030800246358E4FB
69831 +:10A020000043F8218FFE000003C00008000000007C
69832 +:10A0300090CF0008938C00AB31EE007F00AE682318
69833 +:10A04000018D58210A0012172573FFFF0000882197
69834 +:10A050003C1E80008FC401000E000FCE02E02821BC
69835 +:10A060008FC401000E000FDE02C028211220000F55
69836 +:10A070000013802B8F8B00A426A400010004AC00E9
69837 +:10A08000027298230015AC032578004002B4B02A70
69838 +:10A090000013802B241700010300882102D0102414
69839 +:10A0A000AF9800A41440FFC9AFB700143C07800864
69840 +:10A0B00094E200508FAE00103C05800002A288217F
69841 +:10A0C0003C060020A4F10050ACA6003094F40050EF
69842 +:10A0D00094EF005201D51823306CFFFF11F4001EDD
69843 +:10A0E000AFAC00108CEF004C001561808CF500487F
69844 +:10A0F00001EC28210000202100AC582B02A4C02133
69845 +:10A10000030BB021ACE5004CACF600488FB4001056
69846 +:10A110000014902B021288241620FF7C3C03800838
69847 +:10A120008FB300148FBF005C8FBE00583A620001ED
69848 +:10A130008FB700548FB600508FB5004C8FB40048D5
69849 +:10A140008FB300448FB200408FB1003C8FB0003815
69850 +:10A1500003E0000827BD006094FE00548CF2004428
69851 +:10A1600033C9FFFE0009C8C00259F821ACBF003C4A
69852 +:10A170008CE800448CAD003C010D50231940003B9D
69853 +:10A18000000000008CF7004026E20001ACA200387D
69854 +:10A190003C05005034A700103C038000AC67003041
69855 +:10A1A00000000000000000000000000000000000AF
69856 +:10A1B000000000000000000000000000000000009F
69857 +:10A1C0008C7800003316002012C0FFFD3C1180087F
69858 +:10A1D000962200543C1580003C068008304E000159
69859 +:10A1E000000E18C0007578218DEC04003C070800B3
69860 +:10A1F0008CE700443C040020ACCC00488DF40404FF
69861 +:10A20000240B0001ACD4004C10EB0260AEA4003073
69862 +:10A21000963900523C0508008CA5004000B99021F9
69863 +:10A22000A6320052963F005427ED0001A62D00549F
69864 +:10A230009626005430C4FFFF5487FF2F8FB40010C0
69865 +:10A2400030A5FFFF0E0011F4A62000543C070800C3
69866 +:10A250008CE70024963E00520047B82303D74823DA
69867 +:10A26000A62900520A0012198FB400108CE2004097
69868 +:10A270000A0012BE00000000922400012407000121
69869 +:10A280003085007F14A7001C97AD00268E2B00148C
69870 +:10A29000240CC000316A3FFF01AC48243C06080092
69871 +:10A2A0008CC60060012A402531043FFF0086882BC0
69872 +:10A2B00012200011A7A800263C0508008CA5005814
69873 +:10A2C0008F9100A0000439802402FF8000B1182182
69874 +:10A2D0000067F82103E2F02433F8007F3C1280008D
69875 +:10A2E0003C19800EAE5E002C0319702191D0000D38
69876 +:10A2F000360F0004A1CF000D0E001028241200011B
69877 +:10A30000241100013C1E80008FC401000E000FCEFE
69878 +:10A3100002E028218FC401000E000FDE02C02821B8
69879 +:10A320001620FF558F8B00A40A0012860013802B85
69880 +:10A330008F8600A490C80001310400201080019194
69881 +:10A34000241000013C048008348B0080916A007C5A
69882 +:10A350008F9E0034AFA0002C314900011120000F66
69883 +:10A36000AFB000288CCD00148C8E006001AE602B45
69884 +:10A370001580000201A038218C8700603C188008FD
69885 +:10A38000370300808C70007000F0782B15E000021D
69886 +:10A3900000E020218C640070AFA4002C3C028008F7
69887 +:10A3A000344500808CD200148CBF0070025FC82B33
69888 +:10A3B00017200002024020218CA400708FA7002CDF
69889 +:10A3C0000087182310600003AFA3003024050002AB
69890 +:10A3D000AFA500288FA400280264882B162000BA9D
69891 +:10A3E000000018218CD000388FCE000C3C0F00806C
69892 +:10A3F000AFD000008CCD00343C0CFF9F01CF58251E
69893 +:10A40000AFCD000490CA003F3586FFFF01662024CF
69894 +:10A410003C0900203C08FFEFA3CA000B0089382547
69895 +:10A420003511FFFF00F118243C0500088F8700A4B8
69896 +:10A430000065C825AFD9000C8CE20014AFC000182D
69897 +:10A440008FA60030AFC200148CF800188FB0002C1B
69898 +:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A
69899 +:10A4600003326824AFCF00248CEC000C020670216C
69900 +:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B
69901 +:10A48000AFCC0020AFC000288CEA00148FAB002CAA
69902 +:10A49000014B48230126402311000011AFC80010D2
69903 +:10A4A00090EB003D8FC900048FC80000000B5100E5
69904 +:10A4B000012A28210000102100AA882B010218215E
69905 +:10A4C0000071F821AFC50004AFDF000090F2003D3D
69906 +:10A4D000A3D2000A8F9900A497380006A7D80008D5
69907 +:10A4E0008F910038240800023C038008A228000055
69908 +:10A4F0003465008094BF005C8FA4002C33F0FFFF14
69909 +:10A500000E000FF48F9200380002CB808F8500A4DC
69910 +:10A51000021978253C18420001F87025AE4E00045F
69911 +:10A520008F8400388CAD0038AC8D00188CAC0034B2
69912 +:10A53000AC8C001CAC80000CAC800010A48000141B
69913 +:10A54000A4800016A4800020A4800022AC800024F7
69914 +:10A5500090A6003F8FA7002CA486000250E0019235
69915 +:10A56000240700018FA200305040000290A2003D5D
69916 +:10A5700090A2003E244A0001A08A00018F84003886
69917 +:10A580008FA9002CAC8900083C128008364D008051
69918 +:10A5900091AC007C3186000214C000022407003414
69919 +:10A5A000240700308F8500A43C198008373F0080C5
69920 +:10A5B00090B0000093F9007C240E0004A0900030BD
69921 +:10A5C0008F8F00A48FB8002C8F8D003891F200017E
69922 +:10A5D0003304000301C46023A1B200318F8E003820
69923 +:10A5E0008F8600A42402C00095CA003294C90012CC
69924 +:10A5F0008FAB002C0142402431233FFF010388250B
69925 +:10A60000A5D1003291D000323185000300EBF82152
69926 +:10A610003218003F370F0040A1CF00328FA4002C2A
69927 +:10A6200003E5382133280004108000028F850038AC
69928 +:10A6300000E838213C0A8008ACA700343549010005
69929 +:10A640008D2800D08FA3002C2419FFBFACA80038A0
69930 +:10A6500090B1003C2C640001240FFFDF3227007F03
69931 +:10A66000A0A7003C8F98003800049140931F003C45
69932 +:10A6700003F98024A310003C8F8C0038918E003C9D
69933 +:10A6800001CF682401B23025A186003C8F8900A447
69934 +:10A690008F8800388D2B0020AD0B00408D220024C8
69935 +:10A6A000AD0200448D2A0028AD0A00488D23002CFD
69936 +:10A6B0000E001013AD03004C8FB1002824070002D8
69937 +:10A6C000122700118FA300280003282B00058023E8
69938 +:10A6D0000270982400608021006090210A00126FAF
69939 +:10A6E0000010882B962900128F8400A00000902172
69940 +:10A6F0003125FFFFA7A900180E000FC22411000189
69941 +:10A700000A00131D3C1E80003C0B80003C12800898
69942 +:10A710008D640100924900088F92FF340E000F995A
69943 +:10A720003125007F8F9900388FA700288FA4003033
69944 +:10A73000A3270000965F005C33F0FFFF0E000FF4CC
69945 +:10A740008F91003800026B80020D80253C0842008A
69946 +:10A750008F8D00A402085025AE2A00048DA5003874
69947 +:10A760008F8A003800007821000F1100AD450018D5
69948 +:10A770008DB800343C047FFF3488FFFFAD58001CC7
69949 +:10A7800091A6003E8D4C001C8D4900180006190052
69950 +:10A79000000677020183C821004E58250323882B29
69951 +:10A7A000012B382100F1F821AD59001CAD5F0018D4
69952 +:10A7B000AD40000CAD40001091B0003E8FA40030C1
69953 +:10A7C00024090005A550001495A500042419C00013
69954 +:10A7D00000884024A545001691B8003EA5580020E9
69955 +:10A7E00095AF0004A54F0022AD40002491AE003F7C
69956 +:10A7F000A54E000291A6003E91AC003D01861023BB
69957 +:10A80000244B0001A14B00018F9100388FA3003031
69958 +:10A810003C028008344B0100AE230008A22900301E
69959 +:10A820008F8C00388F8700A4959F003294F000121F
69960 +:10A830002407FFBF033FC02432053FFF03057825EF
69961 +:10A84000A58F0032918E00322418FFDF31CD003FFA
69962 +:10A8500035A60040A18600328F910038240DFFFFFD
69963 +:10A86000240CFF80AE2000348D6A00D0AE2A003860
69964 +:10A870009223003C3069007FA229003C8F90003871
69965 +:10A880003C0380009219003C0327F824A21F003CDF
69966 +:10A890008F8E003891C5003C00B87824A1CF003CD1
69967 +:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA
69968 +:10A8B000AD46004491420048004C5825A14B004849
69969 +:10A8C0008F9000388F9900A48E09004801238824B6
69970 +:10A8D00002283825AE070048933F003EA21F004CD7
69971 +:10A8E0008F9800A48F8F003897050004A5E5004ECF
69972 +:10A8F0000E0003818DC500609246007C8FAC003055
69973 +:10A9000000026940000291000040282130CB000283
69974 +:10A9100001B21021156000AA018230213C0E80088E
69975 +:10A9200035C20080904C007C31830004106000032D
69976 +:10A930008FB900300005788000CF3021241F00043B
69977 +:10A940008F910038332D000303ED8023320800037C
69978 +:10A9500000C85021AE2A00343C188000A7C500383A
69979 +:10A960003C0680088F04010090DE00080E000FDE18
69980 +:10A9700033C5007F0E001013000000000A00140D04
69981 +:10A980008FA300288F9800348CC90038241F00033F
69982 +:10A99000A7000008AF0900008CC50034A300000A1E
69983 +:10A9A0008F9900A4AF0500043C080080932D003F60
69984 +:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D
69985 +:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E
69986 +:10A9D00003D170243646FFFF01C61824AF03000CD4
69987 +:10A9E0008F2C0014972900128F8400A0AF0C001048
69988 +:10A9F0008F2F0014AF000018AF000020AF0F00141D
69989 +:10AA0000AF0000248F270018312F3FFF000F59801F
69990 +:10AA1000AF0700288F2500080164F821312D0001BF
69991 +:10AA2000AF0500308F31000C8F920038001F51C2EB
69992 +:10AA3000000D438001481021241E00023C068008BE
69993 +:10AA4000A702001CA7000034AF11002CA25E00007A
69994 +:10AA500034D20080964E005C8F9900383C0342004F
69995 +:10AA600031CCFFFF01833825AF2700048F8B00A472
69996 +:10AA7000240500012402C0008D640038240700343E
69997 +:10AA8000AF2400188D690034AF29001CAF20000CE2
69998 +:10AA9000AF200010A7200014A7200016A720002038
69999 +:10AAA000A7200022AF200024A7300002A325000128
70000 +:10AAB0008F8800388F9F00A4AD10000893ED000030
70001 +:10AAC000A10D00308F8A00A48F98003891510001A9
70002 +:10AAD000A31100318F8B0038957E003203C27024A1
70003 +:10AAE00001CF6025A56C0032916300323064003FD5
70004 +:10AAF000A16400329249007C3125000214A00002BA
70005 +:10AB00008F840038240700303C198008AC8700345B
70006 +:10AB1000373201008E5F00D0240AFFBF020090216F
70007 +:10AB2000AC9F0038908D003C31A8007FA088003C8D
70008 +:10AB30008F9E003893C2003C004A8824A3D1003C79
70009 +:10AB40008F8300380010882B9066003C34CE0020A4
70010 +:10AB5000A06E003C8F8400A48F9800388C8C00205D
70011 +:10AB6000AF0C00408C8F0024AF0F00448C8700286E
70012 +:10AB7000AF0700488C8B002CAF0B004C0E0010135D
70013 +:10AB80003C1E80000A0012700000000094C80052B1
70014 +:10AB90003C0A08008D4A002401488821A4D10052B3
70015 +:10ABA0000A0012198FB40010A08700018F840038AA
70016 +:10ABB000240B0001AC8B00080A0013BE3C12800875
70017 +:10ABC000000520800A0014A200C4302127BDFFE048
70018 +:10ABD0003C0D8008AFB20018AFB00010AFBF001C32
70019 +:10ABE000AFB1001435B200808E4C001835A80100BA
70020 +:10ABF000964B000695A70050910900FC000C5602E8
70021 +:10AC0000016728233143007F312600FF240200031F
70022 +:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC
70023 +:10AC2000910600FC2412000530C200FF10520033D0
70024 +:10AC300000000000160000098FBF001C8FB2001832
70025 +:10AC40008FB100148FB00010240D0C003C0C80005C
70026 +:10AC500027BD002003E00008AD8D00240E0011FB8D
70027 +:10AC6000020020218FBF001C8FB200188FB100148A
70028 +:10AC70008FB00010240D0C003C0C800027BD00207C
70029 +:10AC800003E00008AD8D0024965800789651007AB4
70030 +:10AC9000924E007D0238782631E8FFFF31C400C0B3
70031 +:10ACA000148000092D11000116000037000000007B
70032 +:10ACB0005620FFE28FBF001C0E0010D100000000E4
70033 +:10ACC0000A00156A8FBF001C1620FFDA0000000082
70034 +:10ACD0000E0010D1000000001440FFD88FBF001CF0
70035 +:10ACE0001600002200000000925F007D33E2003F6A
70036 +:10ACF000A242007D0A00156A8FBF001C950900EA78
70037 +:10AD00008F86008000802821240400050E0007257E
70038 +:10AD10003130FFFF978300923C0480002465FFFFE1
70039 +:10AD2000A78500928C8A01B80540FFFE0000000054
70040 +:10AD3000AC8001808FBF001CAC9001848FB20018E2
70041 +:10AD40008FB100148FB000103C0760133C0B100053
70042 +:10AD5000240D0C003C0C800027BD0020AC8701882E
70043 +:10AD6000AC8B01B803E00008AD8D00240E0011FB90
70044 +:10AD7000020020215040FFB18FBF001C925F007D78
70045 +:10AD80000A00159733E2003F0E0011FB020020215C
70046 +:10AD90001440FFAA8FBF001C122000070000000013
70047 +:10ADA0009259007D3330003F36020040A242007DC0
70048 +:10ADB0000A00156A8FBF001C0E0010D100000000B1
70049 +:10ADC0005040FF9E8FBF001C9259007D3330003FE2
70050 +:10ADD0000A0015C636020040000000000000001BFB
70051 +:10ADE0000000000F0000000A00000008000000063C
70052 +:10ADF0000000000500000005000000040000000441
70053 +:10AE00000000000300000003000000030000000336
70054 +:10AE10000000000300000002000000020000000229
70055 +:10AE2000000000020000000200000002000000021A
70056 +:10AE3000000000020000000200000002000000020A
70057 +:10AE400000000002000000020000000200000002FA
70058 +:10AE50000000000100000001000000018008010066
70059 +:10AE6000800800808008000000000C000000308096
70060 +:10AE7000080011D00800127C08001294080012A8E3
70061 +:10AE8000080012BC080011D0080011D0080012F010
70062 +:10AE90000800132C080013400800138808001A8CBF
70063 +:10AEA00008001A8C08001AC408001AC408001AD82E
70064 +:10AEB00008001AA808001D0008001CCC08001D5836
70065 +:10AEC00008001D5808001DE008001D108008024001
70066 +:10AED000080027340800256C0800275C080027F4C8
70067 +:10AEE0000800293C0800298808002AAC080029B479
70068 +:10AEF00008002A38080025DC08002EDC08002EA4F3
70069 +:10AF000008002588080025880800258808002B20CF
70070 +:10AF100008002B20080025880800258808002DD06F
70071 +:10AF2000080025880800258808002588080025884D
70072 +:10AF300008002E0C080025880800258808002588B0
70073 +:10AF4000080025880800258808002588080025882D
70074 +:10AF5000080025880800258808002588080025881D
70075 +:10AF6000080025880800258808002588080029A8E9
70076 +:10AF7000080025880800258808002E680800258814
70077 +:10AF800008002588080025880800258808002588ED
70078 +:10AF900008002588080025880800258808002588DD
70079 +:10AFA00008002588080025880800258808002588CD
70080 +:10AFB00008002588080025880800258808002588BD
70081 +:10AFC00008002CF4080025880800258808002C6853
70082 +:10AFD00008002BC408003CE408003CB808003C848E
70083 +:10AFE00008003C5808003C3808003BEC8008010091
70084 +:10AFF00080080080800800008008008008004C6401
70085 +:10B0000008004C9C08004BE408004C6408004C64A9
70086 +:10B01000080049B808004C64080050500A000C842D
70087 +:10B0200000000000000000000000000D7278703683
70088 +:10B030002E322E31620000000602010300000000E3
70089 +:10B0400000000001000000000000000000000000FF
70090 +:10B0500000000000000000000000000000000000F0
70091 +:10B0600000000000000000000000000000000000E0
70092 +:10B0700000000000000000000000000000000000D0
70093 +:10B0800000000000000000000000000000000000C0
70094 +:10B0900000000000000000000000000000000000B0
70095 +:10B0A00000000000000000000000000000000000A0
70096 +:10B0B0000000000000000000000000000000000090
70097 +:10B0C0000000000000000000000000000000000080
70098 +:10B0D0000000000000000000000000000000000070
70099 +:10B0E0000000000000000000000000000000000060
70100 +:10B0F0000000000000000000000000000000000050
70101 +:10B10000000000000000000000000000000000003F
70102 +:10B11000000000000000000000000000000000002F
70103 +:10B12000000000000000000000000000000000001F
70104 +:10B13000000000000000000000000000000000000F
70105 +:10B1400000000000000000000000000000000000FF
70106 +:10B1500000000000000000000000000000000000EF
70107 +:10B1600000000000000000000000000000000000DF
70108 +:10B1700000000000000000000000000000000000CF
70109 +:10B1800000000000000000000000000000000000BF
70110 +:10B1900000000000000000000000000000000000AF
70111 +:10B1A000000000000000000000000000000000009F
70112 +:10B1B000000000000000000000000000000000008F
70113 +:10B1C000000000000000000000000000000000007F
70114 +:10B1D000000000000000000000000000000000006F
70115 +:10B1E000000000000000000000000000000000005F
70116 +:10B1F000000000000000000000000000000000004F
70117 +:10B20000000000000000000000000000000000003E
70118 +:10B21000000000000000000000000000000000002E
70119 +:10B22000000000000000000000000000000000001E
70120 +:10B23000000000000000000000000000000000000E
70121 +:10B2400000000000000000000000000000000000FE
70122 +:10B2500000000000000000000000000000000000EE
70123 +:10B2600000000000000000000000000000000000DE
70124 +:10B2700000000000000000000000000000000000CE
70125 +:10B2800000000000000000000000000000000000BE
70126 +:10B2900000000000000000000000000000000000AE
70127 +:10B2A000000000000000000000000000000000009E
70128 +:10B2B000000000000000000000000000000000008E
70129 +:10B2C000000000000000000000000000000000007E
70130 +:10B2D000000000000000000000000000000000006E
70131 +:10B2E000000000000000000000000000000000005E
70132 +:10B2F000000000000000000000000000000000004E
70133 +:10B30000000000000000000000000000000000003D
70134 +:10B31000000000000000000000000000000000002D
70135 +:10B32000000000000000000000000000000000001D
70136 +:10B33000000000000000000000000000000000000D
70137 +:10B3400000000000000000000000000000000000FD
70138 +:10B3500000000000000000000000000000000000ED
70139 +:10B3600000000000000000000000000000000000DD
70140 +:10B3700000000000000000000000000000000000CD
70141 +:10B3800000000000000000000000000000000000BD
70142 +:10B3900000000000000000000000000000000000AD
70143 +:10B3A000000000000000000000000000000000009D
70144 +:10B3B000000000000000000000000000000000008D
70145 +:10B3C000000000000000000000000000000000007D
70146 +:10B3D000000000000000000000000000000000006D
70147 +:10B3E000000000000000000000000000000000005D
70148 +:10B3F000000000000000000000000000000000004D
70149 +:10B40000000000000000000000000000000000003C
70150 +:10B41000000000000000000000000000000000002C
70151 +:10B42000000000000000000000000000000000001C
70152 +:10B43000000000000000000000000000000000000C
70153 +:10B4400000000000000000000000000000000000FC
70154 +:10B4500000000000000000000000000000000000EC
70155 +:10B4600000000000000000000000000000000000DC
70156 +:10B4700000000000000000000000000000000000CC
70157 +:10B4800000000000000000000000000000000000BC
70158 +:10B4900000000000000000000000000000000000AC
70159 +:10B4A000000000000000000000000000000000009C
70160 +:10B4B000000000000000000000000000000000008C
70161 +:10B4C000000000000000000000000000000000007C
70162 +:10B4D000000000000000000000000000000000006C
70163 +:10B4E000000000000000000000000000000000005C
70164 +:10B4F000000000000000000000000000000000004C
70165 +:10B50000000000000000000000000000000000003B
70166 +:10B51000000000000000000000000000000000002B
70167 +:10B52000000000000000000000000000000000001B
70168 +:10B53000000000000000000000000000000000000B
70169 +:10B5400000000000000000000000000000000000FB
70170 +:10B5500000000000000000000000000000000000EB
70171 +:10B5600000000000000000000000000000000000DB
70172 +:10B5700000000000000000000000000000000000CB
70173 +:10B5800000000000000000000000000000000000BB
70174 +:10B5900000000000000000000000000000000000AB
70175 +:10B5A000000000000000000000000000000000009B
70176 +:10B5B000000000000000000000000000000000008B
70177 +:10B5C000000000000000000000000000000000007B
70178 +:10B5D000000000000000000000000000000000006B
70179 +:10B5E000000000000000000000000000000000005B
70180 +:10B5F000000000000000000000000000000000004B
70181 +:10B60000000000000000000000000000000000003A
70182 +:10B61000000000000000000000000000000000002A
70183 +:10B62000000000000000000000000000000000001A
70184 +:10B63000000000000000000000000000000000000A
70185 +:10B6400000000000000000000000000000000000FA
70186 +:10B6500000000000000000000000000000000000EA
70187 +:10B6600000000000000000000000000000000000DA
70188 +:10B6700000000000000000000000000000000000CA
70189 +:10B6800000000000000000000000000000000000BA
70190 +:10B6900000000000000000000000000000000000AA
70191 +:10B6A000000000000000000000000000000000009A
70192 +:10B6B000000000000000000000000000000000008A
70193 +:10B6C000000000000000000000000000000000007A
70194 +:10B6D000000000000000000000000000000000006A
70195 +:10B6E000000000000000000000000000000000005A
70196 +:10B6F000000000000000000000000000000000004A
70197 +:10B700000000000000000000000000000000000039
70198 +:10B710000000000000000000000000000000000029
70199 +:10B720000000000000000000000000000000000019
70200 +:10B730000000000000000000000000000000000009
70201 +:10B7400000000000000000000000000000000000F9
70202 +:10B7500000000000000000000000000000000000E9
70203 +:10B7600000000000000000000000000000000000D9
70204 +:10B7700000000000000000000000000000000000C9
70205 +:10B7800000000000000000000000000000000000B9
70206 +:10B7900000000000000000000000000000000000A9
70207 +:10B7A0000000000000000000000000000000000099
70208 +:10B7B0000000000000000000000000000000000089
70209 +:10B7C0000000000000000000000000000000000079
70210 +:10B7D0000000000000000000000000000000000069
70211 +:10B7E0000000000000000000000000000000000059
70212 +:10B7F0000000000000000000000000000000000049
70213 +:10B800000000000000000000000000000000000038
70214 +:10B810000000000000000000000000000000000028
70215 +:10B820000000000000000000000000000000000018
70216 +:10B830000000000000000000000000000000000008
70217 +:10B8400000000000000000000000000000000000F8
70218 +:10B8500000000000000000000000000000000000E8
70219 +:10B8600000000000000000000000000000000000D8
70220 +:10B8700000000000000000000000000000000000C8
70221 +:10B8800000000000000000000000000000000000B8
70222 +:10B8900000000000000000000000000000000000A8
70223 +:10B8A0000000000000000000000000000000000098
70224 +:10B8B0000000000000000000000000000000000088
70225 +:10B8C0000000000000000000000000000000000078
70226 +:10B8D0000000000000000000000000000000000068
70227 +:10B8E0000000000000000000000000000000000058
70228 +:10B8F0000000000000000000000000000000000048
70229 +:10B900000000000000000000000000000000000037
70230 +:10B910000000000000000000000000000000000027
70231 +:10B920000000000000000000000000000000000017
70232 +:10B930000000000000000000000000000000000007
70233 +:10B9400000000000000000000000000000000000F7
70234 +:10B9500000000000000000000000000000000000E7
70235 +:10B9600000000000000000000000000000000000D7
70236 +:10B9700000000000000000000000000000000000C7
70237 +:10B9800000000000000000000000000000000000B7
70238 +:10B9900000000000000000000000000000000000A7
70239 +:10B9A0000000000000000000000000000000000097
70240 +:10B9B0000000000000000000000000000000000087
70241 +:10B9C0000000000000000000000000000000000077
70242 +:10B9D0000000000000000000000000000000000067
70243 +:10B9E0000000000000000000000000000000000057
70244 +:10B9F0000000000000000000000000000000000047
70245 +:10BA00000000000000000000000000000000000036
70246 +:10BA10000000000000000000000000000000000026
70247 +:10BA20000000000000000000000000000000000016
70248 +:10BA30000000000000000000000000000000000006
70249 +:10BA400000000000000000000000000000000000F6
70250 +:10BA500000000000000000000000000000000000E6
70251 +:10BA600000000000000000000000000000000000D6
70252 +:10BA700000000000000000000000000000000000C6
70253 +:10BA800000000000000000000000000000000000B6
70254 +:10BA900000000000000000000000000000000000A6
70255 +:10BAA0000000000000000000000000000000000096
70256 +:10BAB0000000000000000000000000000000000086
70257 +:10BAC0000000000000000000000000000000000076
70258 +:10BAD0000000000000000000000000000000000066
70259 +:10BAE0000000000000000000000000000000000056
70260 +:10BAF0000000000000000000000000000000000046
70261 +:10BB00000000000000000000000000000000000035
70262 +:10BB10000000000000000000000000000000000025
70263 +:10BB20000000000000000000000000000000000015
70264 +:10BB30000000000000000000000000000000000005
70265 +:10BB400000000000000000000000000000000000F5
70266 +:10BB500000000000000000000000000000000000E5
70267 +:10BB600000000000000000000000000000000000D5
70268 +:10BB700000000000000000000000000000000000C5
70269 +:10BB800000000000000000000000000000000000B5
70270 +:10BB900000000000000000000000000000000000A5
70271 +:10BBA0000000000000000000000000000000000095
70272 +:10BBB0000000000000000000000000000000000085
70273 +:10BBC0000000000000000000000000000000000075
70274 +:10BBD0000000000000000000000000000000000065
70275 +:10BBE0000000000000000000000000000000000055
70276 +:10BBF0000000000000000000000000000000000045
70277 +:10BC00000000000000000000000000000000000034
70278 +:10BC10000000000000000000000000000000000024
70279 +:10BC20000000000000000000000000000000000014
70280 +:10BC30000000000000000000000000000000000004
70281 +:10BC400000000000000000000000000000000000F4
70282 +:10BC500000000000000000000000000000000000E4
70283 +:10BC600000000000000000000000000000000000D4
70284 +:10BC700000000000000000000000000000000000C4
70285 +:10BC800000000000000000000000000000000000B4
70286 +:10BC900000000000000000000000000000000000A4
70287 +:10BCA0000000000000000000000000000000000094
70288 +:10BCB0000000000000000000000000000000000084
70289 +:10BCC0000000000000000000000000000000000074
70290 +:10BCD0000000000000000000000000000000000064
70291 +:10BCE0000000000000000000000000000000000054
70292 +:10BCF0000000000000000000000000000000000044
70293 +:10BD00000000000000000000000000000000000033
70294 +:10BD10000000000000000000000000000000000023
70295 +:10BD20000000000000000000000000000000000013
70296 +:10BD30000000000000000000000000000000000003
70297 +:10BD400000000000000000000000000000000000F3
70298 +:10BD500000000000000000000000000000000000E3
70299 +:10BD600000000000000000000000000000000000D3
70300 +:10BD700000000000000000000000000000000000C3
70301 +:10BD800000000000000000000000000000000000B3
70302 +:10BD900000000000000000000000000000000000A3
70303 +:10BDA0000000000000000000000000000000000093
70304 +:10BDB0000000000000000000000000000000000083
70305 +:10BDC0000000000000000000000000000000000073
70306 +:10BDD0000000000000000000000000000000000063
70307 +:10BDE0000000000000000000000000000000000053
70308 +:10BDF0000000000000000000000000000000000043
70309 +:10BE00000000000000000000000000000000000032
70310 +:10BE10000000000000000000000000000000000022
70311 +:10BE20000000000000000000000000000000000012
70312 +:10BE30000000000000000000000000000000000002
70313 +:10BE400000000000000000000000000000000000F2
70314 +:10BE500000000000000000000000000000000000E2
70315 +:10BE600000000000000000000000000000000000D2
70316 +:10BE700000000000000000000000000000000000C2
70317 +:10BE800000000000000000000000000000000000B2
70318 +:10BE900000000000000000000000000000000000A2
70319 +:10BEA0000000000000000000000000000000000092
70320 +:10BEB0000000000000000000000000000000000082
70321 +:10BEC0000000000000000000000000000000000072
70322 +:10BED0000000000000000000000000000000000062
70323 +:10BEE0000000000000000000000000000000000052
70324 +:10BEF0000000000000000000000000000000000042
70325 +:10BF00000000000000000000000000000000000031
70326 +:10BF10000000000000000000000000000000000021
70327 +:10BF20000000000000000000000000000000000011
70328 +:10BF30000000000000000000000000000000000001
70329 +:10BF400000000000000000000000000000000000F1
70330 +:10BF500000000000000000000000000000000000E1
70331 +:10BF600000000000000000000000000000000000D1
70332 +:10BF700000000000000000000000000000000000C1
70333 +:10BF800000000000000000000000000000000000B1
70334 +:10BF900000000000000000000000000000000000A1
70335 +:10BFA0000000000000000000000000000000000091
70336 +:10BFB0000000000000000000000000000000000081
70337 +:10BFC0000000000000000000000000000000000071
70338 +:10BFD0000000000000000000000000000000000061
70339 +:10BFE0000000000000000000000000000000000051
70340 +:10BFF0000000000000000000000000000000000041
70341 +:10C000000000000000000000000000000000000030
70342 +:10C010000000000000000000000000000000000020
70343 +:10C020000000000000000000000000000000000010
70344 +:10C030000000000000000000000000000000000000
70345 +:10C0400000000000000000000000000000000000F0
70346 +:10C0500000000000000000000000000000000000E0
70347 +:10C0600000000000000000000000000000000000D0
70348 +:10C0700000000000000000000000000000000000C0
70349 +:10C0800000000000000000000000000000000000B0
70350 +:10C0900000000000000000000000000000000000A0
70351 +:10C0A0000000000000000000000000000000000090
70352 +:10C0B0000000000000000000000000000000000080
70353 +:10C0C0000000000000000000000000000000000070
70354 +:10C0D0000000000000000000000000000000000060
70355 +:10C0E0000000000000000000000000000000000050
70356 +:10C0F0000000000000000000000000000000000040
70357 +:10C10000000000000000000000000000000000002F
70358 +:10C11000000000000000000000000000000000001F
70359 +:10C12000000000000000000000000000000000000F
70360 +:10C1300000000000000000000000000000000000FF
70361 +:10C1400000000000000000000000000000000000EF
70362 +:10C1500000000000000000000000000000000000DF
70363 +:10C1600000000000000000000000000000000000CF
70364 +:10C1700000000000000000000000000000000000BF
70365 +:10C1800000000000000000000000000000000000AF
70366 +:10C19000000000000000000000000000000000009F
70367 +:10C1A000000000000000000000000000000000008F
70368 +:10C1B000000000000000000000000000000000007F
70369 +:10C1C000000000000000000000000000000000006F
70370 +:10C1D000000000000000000000000000000000005F
70371 +:10C1E000000000000000000000000000000000004F
70372 +:10C1F000000000000000000000000000000000003F
70373 +:10C20000000000000000000000000000000000002E
70374 +:10C21000000000000000000000000000000000001E
70375 +:10C22000000000000000000000000000000000000E
70376 +:10C2300000000000000000000000000000000000FE
70377 +:10C2400000000000000000000000000000000000EE
70378 +:10C2500000000000000000000000000000000000DE
70379 +:10C2600000000000000000000000000000000000CE
70380 +:10C2700000000000000000000000000000000000BE
70381 +:10C2800000000000000000000000000000000000AE
70382 +:10C29000000000000000000000000000000000009E
70383 +:10C2A000000000000000000000000000000000008E
70384 +:10C2B000000000000000000000000000000000007E
70385 +:10C2C000000000000000000000000000000000006E
70386 +:10C2D000000000000000000000000000000000005E
70387 +:10C2E000000000000000000000000000000000004E
70388 +:10C2F000000000000000000000000000000000003E
70389 +:10C30000000000000000000000000000000000002D
70390 +:10C31000000000000000000000000000000000001D
70391 +:10C32000000000000000000000000000000000000D
70392 +:10C3300000000000000000000000000000000000FD
70393 +:10C3400000000000000000000000000000000000ED
70394 +:10C3500000000000000000000000000000000000DD
70395 +:10C3600000000000000000000000000000000000CD
70396 +:10C3700000000000000000000000000000000000BD
70397 +:10C3800000000000000000000000000000000000AD
70398 +:10C39000000000000000000000000000000000009D
70399 +:10C3A000000000000000000000000000000000008D
70400 +:10C3B000000000000000000000000000000000007D
70401 +:10C3C000000000000000000000000000000000006D
70402 +:10C3D000000000000000000000000000000000005D
70403 +:10C3E000000000000000000000000000000000004D
70404 +:10C3F000000000000000000000000000000000003D
70405 +:10C40000000000000000000000000000000000002C
70406 +:10C41000000000000000000000000000000000001C
70407 +:10C42000000000000000000000000000000000000C
70408 +:10C4300000000000000000000000000000000000FC
70409 +:10C4400000000000000000000000000000000000EC
70410 +:10C4500000000000000000000000000000000000DC
70411 +:10C4600000000000000000000000000000000000CC
70412 +:10C4700000000000000000000000000000000000BC
70413 +:10C4800000000000000000000000000000000000AC
70414 +:10C49000000000000000000000000000000000009C
70415 +:10C4A000000000000000000000000000000000008C
70416 +:10C4B000000000000000000000000000000000007C
70417 +:10C4C000000000000000000000000000000000006C
70418 +:10C4D000000000000000000000000000000000005C
70419 +:10C4E000000000000000000000000000000000004C
70420 +:10C4F000000000000000000000000000000000003C
70421 +:10C50000000000000000000000000000000000002B
70422 +:10C51000000000000000000000000000000000001B
70423 +:10C52000000000000000000000000000000000000B
70424 +:10C5300000000000000000000000000000000000FB
70425 +:10C5400000000000000000000000000000000000EB
70426 +:10C5500000000000000000000000000000000000DB
70427 +:10C5600000000000000000000000000000000000CB
70428 +:10C5700000000000000000000000000000000000BB
70429 +:10C5800000000000000000000000000000000000AB
70430 +:10C59000000000000000000000000000000000009B
70431 +:10C5A000000000000000000000000000000000008B
70432 +:10C5B000000000000000000000000000000000007B
70433 +:10C5C000000000000000000000000000000000006B
70434 +:10C5D000000000000000000000000000000000005B
70435 +:10C5E000000000000000000000000000000000004B
70436 +:10C5F000000000000000000000000000000000003B
70437 +:10C60000000000000000000000000000000000002A
70438 +:10C61000000000000000000000000000000000001A
70439 +:10C62000000000000000000000000000000000000A
70440 +:10C6300000000000000000000000000000000000FA
70441 +:10C6400000000000000000000000000000000000EA
70442 +:10C6500000000000000000000000000000000000DA
70443 +:10C6600000000000000000000000000000000000CA
70444 +:10C6700000000000000000000000000000000000BA
70445 +:10C6800000000000000000000000000000000000AA
70446 +:10C69000000000000000000000000000000000009A
70447 +:10C6A000000000000000000000000000000000008A
70448 +:10C6B000000000000000000000000000000000007A
70449 +:10C6C000000000000000000000000000000000006A
70450 +:10C6D000000000000000000000000000000000005A
70451 +:10C6E000000000000000000000000000000000004A
70452 +:10C6F000000000000000000000000000000000003A
70453 +:10C700000000000000000000000000000000000029
70454 +:10C710000000000000000000000000000000000019
70455 +:10C720000000000000000000000000000000000009
70456 +:10C7300000000000000000000000000000000000F9
70457 +:10C7400000000000000000000000000000000000E9
70458 +:10C7500000000000000000000000000000000000D9
70459 +:10C7600000000000000000000000000000000000C9
70460 +:10C7700000000000000000000000000000000000B9
70461 +:10C7800000000000000000000000000000000000A9
70462 +:10C790000000000000000000000000000000000099
70463 +:10C7A0000000000000000000000000000000000089
70464 +:10C7B0000000000000000000000000000000000079
70465 +:10C7C0000000000000000000000000000000000069
70466 +:10C7D0000000000000000000000000000000000059
70467 +:10C7E0000000000000000000000000000000000049
70468 +:10C7F0000000000000000000000000000000000039
70469 +:10C800000000000000000000000000000000000028
70470 +:10C810000000000000000000000000000000000018
70471 +:10C820000000000000000000000000000000000008
70472 +:10C8300000000000000000000000000000000000F8
70473 +:10C8400000000000000000000000000000000000E8
70474 +:10C8500000000000000000000000000000000000D8
70475 +:10C8600000000000000000000000000000000000C8
70476 +:10C8700000000000000000000000000000000000B8
70477 +:10C8800000000000000000000000000000000000A8
70478 +:10C890000000000000000000000000000000000098
70479 +:10C8A0000000000000000000000000000000000088
70480 +:10C8B0000000000000000000000000000000000078
70481 +:10C8C0000000000000000000000000000000000068
70482 +:10C8D0000000000000000000000000000000000058
70483 +:10C8E0000000000000000000000000000000000048
70484 +:10C8F0000000000000000000000000000000000038
70485 +:10C900000000000000000000000000000000000027
70486 +:10C910000000000000000000000000000000000017
70487 +:10C920000000000000000000000000000000000007
70488 +:10C9300000000000000000000000000000000000F7
70489 +:10C9400000000000000000000000000000000000E7
70490 +:10C9500000000000000000000000000000000000D7
70491 +:10C9600000000000000000000000000000000000C7
70492 +:10C9700000000000000000000000000000000000B7
70493 +:10C9800000000000000000000000000000000000A7
70494 +:10C990000000000000000000000000000000000097
70495 +:10C9A0000000000000000000000000000000000087
70496 +:10C9B0000000000000000000000000000000000077
70497 +:10C9C0000000000000000000000000000000000067
70498 +:10C9D0000000000000000000000000000000000057
70499 +:10C9E0000000000000000000000000000000000047
70500 +:10C9F0000000000000000000000000000000000037
70501 +:10CA00000000000000000000000000000000000026
70502 +:10CA10000000000000000000000000000000000016
70503 +:10CA20000000000000000000000000000000000006
70504 +:10CA300000000000000000000000000000000000F6
70505 +:10CA400000000000000000000000000000000000E6
70506 +:10CA500000000000000000000000000000000000D6
70507 +:10CA600000000000000000000000000000000000C6
70508 +:10CA700000000000000000000000000000000000B6
70509 +:10CA800000000000000000000000000000000000A6
70510 +:10CA90000000000000000000000000000000000096
70511 +:10CAA0000000000000000000000000000000000086
70512 +:10CAB0000000000000000000000000000000000076
70513 +:10CAC0000000000000000000000000000000000066
70514 +:10CAD0000000000000000000000000000000000056
70515 +:10CAE0000000000000000000000000000000000046
70516 +:10CAF0000000000000000000000000000000000036
70517 +:10CB00000000000000000000000000000000000025
70518 +:10CB10000000000000000000000000000000000015
70519 +:10CB20000000000000000000000000000000000005
70520 +:10CB300000000000000000000000000000000000F5
70521 +:10CB400000000000000000000000000000000000E5
70522 +:10CB500000000000000000000000000000000000D5
70523 +:10CB600000000000000000000000000000000000C5
70524 +:10CB700000000000000000000000000000000000B5
70525 +:10CB800000000000000000000000000000000000A5
70526 +:10CB90000000000000000000000000000000000095
70527 +:10CBA0000000000000000000000000000000000085
70528 +:10CBB0000000000000000000000000000000000075
70529 +:10CBC0000000000000000000000000000000000065
70530 +:10CBD0000000000000000000000000000000000055
70531 +:10CBE0000000000000000000000000000000000045
70532 +:10CBF0000000000000000000000000000000000035
70533 +:10CC00000000000000000000000000000000000024
70534 +:10CC10000000000000000000000000000000000014
70535 +:10CC20000000000000000000000000000000000004
70536 +:10CC300000000000000000000000000000000000F4
70537 +:10CC400000000000000000000000000000000000E4
70538 +:10CC500000000000000000000000000000000000D4
70539 +:10CC600000000000000000000000000000000000C4
70540 +:10CC700000000000000000000000000000000000B4
70541 +:10CC800000000000000000000000000000000000A4
70542 +:10CC90000000000000000000000000000000000094
70543 +:10CCA0000000000000000000000000000000000084
70544 +:10CCB0000000000000000000000000000000000074
70545 +:10CCC0000000000000000000000000000000000064
70546 +:10CCD0000000000000000000000000000000000054
70547 +:10CCE0000000000000000000000000000000000044
70548 +:10CCF0000000000000000000000000000000000034
70549 +:10CD00000000000000000000000000000000000023
70550 +:10CD10000000000000000000000000000000000013
70551 +:10CD20000000000000000000000000000000000003
70552 +:10CD300000000000000000000000000000000000F3
70553 +:10CD400000000000000000000000000000000000E3
70554 +:10CD500000000000000000000000000000000000D3
70555 +:10CD600000000000000000000000000000000000C3
70556 +:10CD700000000000000000000000000000000000B3
70557 +:10CD800000000000000000000000000000000000A3
70558 +:10CD90000000000000000000000000000000000093
70559 +:10CDA0000000000000000000000000000000000083
70560 +:10CDB0000000000000000000000000000000000073
70561 +:10CDC0000000000000000000000000000000000063
70562 +:10CDD0000000000000000000000000000000000053
70563 +:10CDE0000000000000000000000000000000000043
70564 +:10CDF0000000000000000000000000000000000033
70565 +:10CE00000000000000000000000000000000000022
70566 +:10CE10000000000000000000000000000000000012
70567 +:10CE20000000000000000000000000000000000002
70568 +:10CE300000000000000000000000000000000000F2
70569 +:10CE400000000000000000000000000000000000E2
70570 +:10CE500000000000000000000000000000000000D2
70571 +:10CE600000000000000000000000000000000000C2
70572 +:10CE700000000000000000000000000000000000B2
70573 +:10CE800000000000000000000000000000000000A2
70574 +:10CE90000000000000000000000000000000000092
70575 +:10CEA0000000000000000000000000000000000082
70576 +:10CEB0000000000000000000000000000000000072
70577 +:10CEC0000000000000000000000000000000000062
70578 +:10CED0000000000000000000000000000000000052
70579 +:10CEE0000000000000000000000000000000000042
70580 +:10CEF0000000000000000000000000000000000032
70581 +:10CF00000000000000000000000000000000000021
70582 +:10CF10000000000000000000000000000000000011
70583 +:10CF20000000000000000000000000000000000001
70584 +:10CF300000000000000000000000000000000000F1
70585 +:10CF400000000000000000000000000000000000E1
70586 +:10CF500000000000000000000000000000000000D1
70587 +:10CF600000000000000000000000000000000000C1
70588 +:10CF700000000000000000000000000000000000B1
70589 +:10CF800000000000000000000000000000000000A1
70590 +:10CF90000000000000000000000000000000000091
70591 +:10CFA0000000000000000000000000000000000081
70592 +:10CFB0000000000000000000000000000000000071
70593 +:10CFC0000000000000000000000000000000000061
70594 +:10CFD0000000000000000000000000000000000051
70595 +:10CFE0000000000000000000000000000000000041
70596 +:10CFF0000000000000000000000000000000000031
70597 +:10D000000000000000000000000000000000000020
70598 +:10D010000000000000000000000000000000000010
70599 +:10D020000000000000000000000000000000000000
70600 +:10D0300000000000000000000000000000000000F0
70601 +:10D0400000000000000000000000000000000000E0
70602 +:10D0500000000000000000000000000000000000D0
70603 +:10D0600000000000000000000000000000000000C0
70604 +:10D0700000000000000000000000000000000000B0
70605 +:10D0800000000000000000000000000000000000A0
70606 +:10D090000000000000000000000000000000000090
70607 +:10D0A0000000000000000000000000000000000080
70608 +:10D0B0000000000000000000000000000000000070
70609 +:10D0C0000000000000000000000000000000000060
70610 +:10D0D0000000000000000000000000000000000050
70611 +:10D0E0000000000000000000000000000000000040
70612 +:10D0F0000000000000000000000000000000000030
70613 +:10D10000000000000000000000000000000000001F
70614 +:10D11000000000000000000000000000000000000F
70615 +:10D1200000000000000000000000000000000000FF
70616 +:10D1300000000000000000000000000000000000EF
70617 +:10D1400000000000000000000000000000000000DF
70618 +:10D1500000000000000000000000000000000000CF
70619 +:10D1600000000000000000000000000000000000BF
70620 +:10D1700000000000000000000000000000000000AF
70621 +:10D18000000000000000000000000000000000009F
70622 +:10D19000000000000000000000000000000000008F
70623 +:10D1A000000000000000000000000000000000007F
70624 +:10D1B000000000000000000000000000000000006F
70625 +:10D1C000000000000000000000000000000000005F
70626 +:10D1D000000000000000000000000000000000004F
70627 +:10D1E000000000000000000000000000000000003F
70628 +:10D1F000000000000000000000000000000000002F
70629 +:10D20000000000000000000000000000000000001E
70630 +:10D21000000000000000000000000000000000000E
70631 +:10D2200000000000000000000000000000000000FE
70632 +:10D2300000000000000000000000000000000000EE
70633 +:10D2400000000000000000000000000000000000DE
70634 +:10D2500000000000000000000000000000000000CE
70635 +:10D2600000000000000000000000000000000000BE
70636 +:10D2700000000000000000000000000000000000AE
70637 +:10D28000000000000000000000000000000000009E
70638 +:10D29000000000000000000000000000000000008E
70639 +:10D2A000000000000000000000000000000000007E
70640 +:10D2B000000000000000000000000000000000006E
70641 +:10D2C000000000000000000000000000000000005E
70642 +:10D2D000000000000000000000000000000000004E
70643 +:10D2E000000000000000000000000000000000003E
70644 +:10D2F000000000000000000000000000000000002E
70645 +:10D30000000000000000000000000000000000001D
70646 +:10D31000000000000000000000000000000000000D
70647 +:10D3200000000000000000000000000000000000FD
70648 +:10D3300000000000000000000000000000000000ED
70649 +:10D3400000000000000000000000000000000000DD
70650 +:10D3500000000000000000000000000000000000CD
70651 +:10D3600000000000000000000000000000000000BD
70652 +:10D3700000000000000000000000000000000000AD
70653 +:10D38000000000000000000000000000000000009D
70654 +:10D39000000000000000000000000000000000008D
70655 +:10D3A000000000000000000000000000000000007D
70656 +:10D3B000000000000000000000000000000000006D
70657 +:10D3C000000000000000000000000000000000005D
70658 +:10D3D000000000000000000000000000000000004D
70659 +:10D3E000000000000000000000000000000000003D
70660 +:10D3F000000000000000000000000000000000002D
70661 +:10D40000000000000000000000000000000000001C
70662 +:10D41000000000000000000000000000000000000C
70663 +:10D4200000000000000000000000000000000000FC
70664 +:10D4300000000000000000000000000000000000EC
70665 +:10D4400000000000000000000000000000000000DC
70666 +:10D4500000000000000000000000000000000000CC
70667 +:10D4600000000000000000000000000000000000BC
70668 +:10D4700000000000000000000000000000000000AC
70669 +:10D48000000000000000000000000000000000009C
70670 +:10D49000000000000000000000000000000000008C
70671 +:10D4A000000000000000000000000000000000007C
70672 +:10D4B000000000000000000000000000000000006C
70673 +:10D4C000000000000000000000000000000000005C
70674 +:10D4D000000000000000000000000000000000004C
70675 +:10D4E000000000000000000000000000000000003C
70676 +:10D4F000000000000000000000000000000000002C
70677 +:10D50000000000000000000000000000000000001B
70678 +:10D51000000000000000000000000000000000000B
70679 +:10D5200000000000000000000000000000000000FB
70680 +:10D5300000000000000000000000000000000000EB
70681 +:10D5400000000000000000000000000000000000DB
70682 +:10D5500000000000000000000000000000000000CB
70683 +:10D5600000000000000000000000000000000000BB
70684 +:10D5700000000000000000000000000000000000AB
70685 +:10D58000000000000000000000000000000000009B
70686 +:10D59000000000000000000000000000000000008B
70687 +:10D5A000000000000000000000000000000000007B
70688 +:10D5B000000000000000000000000000000000006B
70689 +:10D5C000000000000000000000000000000000005B
70690 +:10D5D000000000000000000000000000000000004B
70691 +:10D5E000000000000000000000000000000000003B
70692 +:10D5F000000000000000000000000000000000002B
70693 +:10D60000000000000000000000000000000000001A
70694 +:10D61000000000000000000000000000000000000A
70695 +:10D6200000000000000000000000000000000000FA
70696 +:10D6300000000000000000000000000000000000EA
70697 +:10D6400000000000000000000000000000000000DA
70698 +:10D6500000000000000000000000000000000000CA
70699 +:10D6600000000000000000000000000000000000BA
70700 +:10D6700000000000000000000000000000000000AA
70701 +:10D68000000000000000000000000000000000009A
70702 +:10D69000000000000000000000000000000000008A
70703 +:10D6A000000000000000000000000000000000007A
70704 +:10D6B000000000000000000000000000000000006A
70705 +:10D6C000000000000000000000000000000000005A
70706 +:10D6D000000000000000000000000000000000004A
70707 +:10D6E000000000000000000000000000000000003A
70708 +:10D6F000000000000000000000000000000000002A
70709 +:10D700000000000000000000000000000000000019
70710 +:10D710000000000000000000000000000000000009
70711 +:10D7200000000000000000000000000000000000F9
70712 +:10D7300000000000000000000000000000000000E9
70713 +:10D7400000000000000000000000000000000000D9
70714 +:10D7500000000000000000000000000000000000C9
70715 +:10D7600000000000000000000000000000000000B9
70716 +:10D7700000000000000000000000000000000000A9
70717 +:10D780000000000000000000000000000000000099
70718 +:10D790000000000000000000000000000000000089
70719 +:10D7A0000000000000000000000000000000000079
70720 +:10D7B0000000000000000000000000000000000069
70721 +:10D7C0000000000000000000000000000000000059
70722 +:10D7D0000000000000000000000000000000000049
70723 +:10D7E0000000000000000000000000000000000039
70724 +:10D7F0000000000000000000000000000000000029
70725 +:10D800000000000000000000000000000000000018
70726 +:10D810000000000000000000000000000000000008
70727 +:10D8200000000000000000000000000000000000F8
70728 +:10D8300000000000000000000000000000000000E8
70729 +:10D8400000000000000000000000000000000000D8
70730 +:10D8500000000000000000000000000000000000C8
70731 +:10D8600000000000000000000000000000000000B8
70732 +:10D8700000000000000000000000000000000000A8
70733 +:10D880000000000000000000000000000000000098
70734 +:10D890000000000000000000000000000000000088
70735 +:10D8A0000000000000000000000000000000000078
70736 +:10D8B0000000000000000000000000000000000068
70737 +:10D8C0000000000000000000000000000000000058
70738 +:10D8D0000000000000000000000000000000000048
70739 +:10D8E0000000000000000000000000000000000038
70740 +:10D8F0000000000000000000000000000000000028
70741 +:10D900000000000000000000000000000000000017
70742 +:10D910000000000000000000000000000000000007
70743 +:10D9200000000000000000000000000000000000F7
70744 +:10D9300000000000000000000000000000000000E7
70745 +:10D9400000000000000000000000000000000000D7
70746 +:10D9500000000000000000000000000000000000C7
70747 +:10D9600000000000000000000000000000000000B7
70748 +:10D9700000000000000000000000000000000000A7
70749 +:10D980000000000000000000000000000000000097
70750 +:10D990000000000000000000000000000000000087
70751 +:10D9A0000000000000000000000000000000000077
70752 +:10D9B0000000000000000000000000000000000067
70753 +:10D9C0000000000000000000000000000000000057
70754 +:10D9D0000000000000000000000000000000000047
70755 +:10D9E0000000000000000000000000000000000037
70756 +:10D9F0000000000000000000000000000000000027
70757 +:10DA00000000000000000000000000000000000016
70758 +:10DA10000000000000000000000000000000000006
70759 +:10DA200000000000000000000000000000000000F6
70760 +:10DA300000000000000000000000000000000000E6
70761 +:10DA400000000000000000000000000000000000D6
70762 +:10DA500000000000000000000000000000000000C6
70763 +:10DA600000000000000000000000000000000000B6
70764 +:10DA700000000000000000000000000000000000A6
70765 +:10DA80000000000000000000000000000000000096
70766 +:10DA90000000000000000000000000000000000086
70767 +:10DAA0000000000000000000000000000000000076
70768 +:10DAB0000000000000000000000000000000000066
70769 +:10DAC0000000000000000000000000000000000056
70770 +:10DAD0000000000000000000000000000000000046
70771 +:10DAE0000000000000000000000000000000000036
70772 +:10DAF0000000000000000000000000000000000026
70773 +:10DB00000000000000000000000000000000000015
70774 +:10DB10000000000000000000000000000000000005
70775 +:10DB200000000000000000000000000000000000F5
70776 +:10DB300000000000000000000000000000000000E5
70777 +:10DB400000000000000000000000000000000000D5
70778 +:10DB500000000000000000000000000000000000C5
70779 +:10DB600000000000000000000000000000000000B5
70780 +:10DB700000000000000000000000000000000000A5
70781 +:10DB80000000000000000000000000000000000095
70782 +:10DB90000000000000000000000000000000000085
70783 +:10DBA0000000000000000000000000000000000075
70784 +:10DBB0000000000000000000000000000000000065
70785 +:10DBC0000000000000000000000000000000000055
70786 +:10DBD0000000000000000000000000000000000045
70787 +:10DBE0000000000000000000000000000000000035
70788 +:10DBF0000000000000000000000000000000000025
70789 +:10DC00000000000000000000000000000000000014
70790 +:10DC10000000000000000000000000000000000004
70791 +:10DC200000000000000000000000000000000000F4
70792 +:10DC300000000000000000000000000000000000E4
70793 +:10DC400000000000000000000000000000000000D4
70794 +:10DC500000000000000000000000000000000000C4
70795 +:10DC600000000000000000000000000000000000B4
70796 +:10DC700000000000000000000000000000000000A4
70797 +:10DC80000000000000000000000000000000000094
70798 +:10DC90000000000000000000000000000000000084
70799 +:10DCA0000000000000000000000000000000000074
70800 +:10DCB0000000000000000000000000000000000064
70801 +:10DCC0000000000000000000000000000000000054
70802 +:10DCD0000000000000000000000000000000000044
70803 +:10DCE0000000000000000000000000000000000034
70804 +:10DCF0000000000000000000000000000000000024
70805 +:10DD00000000000000000000000000000000000013
70806 +:10DD10000000000000000000000000000000000003
70807 +:10DD200000000000000000000000000000000000F3
70808 +:10DD300000000000000000000000000000000000E3
70809 +:10DD400000000000000000000000000000000000D3
70810 +:10DD500000000000000000000000000000000000C3
70811 +:10DD600000000000000000000000000000000000B3
70812 +:10DD700000000000000000000000000000000000A3
70813 +:10DD80000000000000000000000000000000000093
70814 +:10DD90000000000000000000000000000000000083
70815 +:10DDA0000000000000000000000000000000000073
70816 +:10DDB0000000000000000000000000000000000063
70817 +:10DDC0000000000000000000000000000000000053
70818 +:10DDD0000000000000000000000000000000000043
70819 +:10DDE0000000000000000000000000000000000033
70820 +:10DDF0000000000000000000000000000000000023
70821 +:10DE00000000000000000000000000000000000012
70822 +:10DE10000000000000000000000000000000000002
70823 +:10DE200000000000000000000000000000000000F2
70824 +:10DE300000000000000000000000000000000000E2
70825 +:10DE400000000000000000000000000000000000D2
70826 +:10DE500000000000000000000000000000000000C2
70827 +:10DE600000000000000000000000000000000000B2
70828 +:10DE700000000000000000000000000000000000A2
70829 +:10DE80000000000000000000000000000000000092
70830 +:10DE90000000000000000000000000000000000082
70831 +:10DEA0000000000000000000000000000000000072
70832 +:10DEB0000000000000000000000000000000000062
70833 +:10DEC0000000000000000000000000000000000052
70834 +:10DED0000000000000000000000000000000000042
70835 +:10DEE0000000000000000000000000000000000032
70836 +:10DEF0000000000000000000000000000000000022
70837 +:10DF00000000000000000000000000000000000011
70838 +:10DF10000000000000000000000000000000000001
70839 +:10DF200000000000000000000000000000000000F1
70840 +:10DF300000000000000000000000000000000000E1
70841 +:10DF400000000000000000000000000000000000D1
70842 +:10DF500000000000000000000000000000000000C1
70843 +:10DF600000000000000000000000000000000000B1
70844 +:10DF700000000000000000000000000000000000A1
70845 +:10DF80000000000000000000000000000000000091
70846 +:10DF90000000000000000000000000000000000081
70847 +:10DFA0000000000000000000000000000000000071
70848 +:10DFB0000000000000000000000000000000000061
70849 +:10DFC0000000000000000000000000000000000051
70850 +:10DFD0000000000000000000000000000000000041
70851 +:10DFE0000000000000000000000000000000000031
70852 +:10DFF0000000000000000000000000000000000021
70853 +:10E000000000000000000000000000000000000010
70854 +:10E010000000000000000000000000000000000000
70855 +:10E0200000000000000000000000000000000000F0
70856 +:10E0300000000000000000000000000000000000E0
70857 +:10E0400000000000000000000000000000000000D0
70858 +:10E0500000000000000000000000000000000000C0
70859 +:10E0600000000000000000000000000000000000B0
70860 +:10E0700000000000000000000000000000000000A0
70861 +:10E080000000000000000000000000000000000090
70862 +:10E090000000000000000000000000000000000080
70863 +:10E0A0000000000000000000000000000000000070
70864 +:10E0B0000000000000000000000000000000000060
70865 +:10E0C0000000000000000000000000000000000050
70866 +:10E0D0000000000000000000000000000000000040
70867 +:10E0E0000000000000000000000000000000000030
70868 +:10E0F0000000000000000000000000000000000020
70869 +:10E10000000000000000000000000000000000000F
70870 +:10E1100000000000000000000000000000000000FF
70871 +:10E1200000000000000000000000000000000000EF
70872 +:10E1300000000000000000000000000000000000DF
70873 +:10E1400000000000000000000000000000000000CF
70874 +:10E1500000000000000000000000000000000000BF
70875 +:10E1600000000000000000000000000000000000AF
70876 +:10E17000000000000000000000000000000000009F
70877 +:10E18000000000000000000000000000000000008F
70878 +:10E19000000000000000000000000000000000007F
70879 +:10E1A000000000000000000000000000000000006F
70880 +:10E1B000000000000000000000000000000000005F
70881 +:10E1C000000000000000000000000000000000004F
70882 +:10E1D000000000000000000000000000000000003F
70883 +:10E1E000000000000000000000000000000000002F
70884 +:10E1F000000000000000000000000000000000809F
70885 +:10E20000000000000000000000000000000000000E
70886 +:10E2100000000000000000000000000000000000FE
70887 +:10E220000000000A000000000000000000000000E4
70888 +:10E2300010000003000000000000000D0000000DB1
70889 +:10E240003C020801244295C03C030801246397FC6A
70890 +:10E25000AC4000000043202B1480FFFD244200044A
70891 +:10E260003C1D080037BD9FFC03A0F0213C100800B6
70892 +:10E27000261032103C1C0801279C95C00E0012BECF
70893 +:10E28000000000000000000D3C02800030A5FFFFF0
70894 +:10E2900030C600FF344301803C0880008D0901B87E
70895 +:10E2A0000520FFFE00000000AC6400002404000212
70896 +:10E2B000A4650008A066000AA064000BAC67001803
70897 +:10E2C0003C03100003E00008AD0301B83C0560000A
70898 +:10E2D0008CA24FF80440FFFE00000000ACA44FC029
70899 +:10E2E0003C0310003C040200ACA44FC403E000084F
70900 +:10E2F000ACA34FF89486000C00A050212488001491
70901 +:10E3000000062B0200051080004448210109182B4B
70902 +:10E310001060001100000000910300002C6400094F
70903 +:10E320005080000991190001000360803C0D080134
70904 +:10E3300025AD9258018D58218D67000000E000083E
70905 +:10E340000000000091190001011940210109302B42
70906 +:10E3500054C0FFF29103000003E000080000102108
70907 +:10E360000A000CCC25080001910F0001240E000AC0
70908 +:10E3700015EE00400128C8232F38000A1700003D81
70909 +:10E38000250D00028D580000250F0006370E0100F4
70910 +:10E39000AD4E0000910C000291AB000191A400026F
70911 +:10E3A00091A60003000C2E00000B3C0000A71025D6
70912 +:10E3B00000041A000043C8250326C025AD580004F8
70913 +:10E3C000910E000691ED000191E7000291E5000336
70914 +:10E3D000000E5E00000D6400016C30250007220075
70915 +:10E3E00000C41025004518252508000A0A000CCC99
70916 +:10E3F000AD430008910F000125040002240800022B
70917 +:10E4000055E80001012020210A000CCC00804021A9
70918 +:10E41000910C0001240B0003158B00160000000076
70919 +:10E420008D580000910E000225080003370D0008EA
70920 +:10E43000A14E00100A000CCCAD4D00009119000156
70921 +:10E44000240F0004172F000B0000000091070002AA
70922 +:10E45000910400038D43000000072A0000A410254A
70923 +:10E460003466000425080004AD42000C0A000CCC00
70924 +:10E47000AD46000003E000082402000127BDFFE8CC
70925 +:10E48000AFBF0014AFB000100E00164E0080802108
70926 +:10E490003C0480083485008090A600052403FFFE1C
70927 +:10E4A0000200202100C310248FBF00148FB0001081
70928 +:10E4B000A0A200050A00165827BD001827BDFFE8D6
70929 +:10E4C000AFB00010AFBF00140E000FD40080802149
70930 +:10E4D0003C06800834C5008090A40000240200504F
70931 +:10E4E000308300FF106200073C09800002002021F9
70932 +:10E4F0008FBF00148FB00010AD2001800A00108F74
70933 +:10E5000027BD0018240801003C07800002002021DC
70934 +:10E510008FBF00148FB00010ACE801800A00108F8C
70935 +:10E5200027BD001827BDFF783C058008AFBE0080DE
70936 +:10E53000AFB7007CAFB3006CAFB10064AFBF008475
70937 +:10E54000AFB60078AFB50074AFB40070AFB200687A
70938 +:10E55000AFB0006034A600803C0580008CB201287A
70939 +:10E5600090C400098CA701043C020001309100FF17
70940 +:10E5700000E218240000B8210000F021106000071C
70941 +:10E58000000098213C0908008D2931F02413000176
70942 +:10E59000252800013C010800AC2831F0ACA0008423
70943 +:10E5A00090CC0005000C5827316A0001154000721C
70944 +:10E5B000AFA0005090CD00002406002031A400FF41
70945 +:10E5C00010860018240E0050108E009300000000EA
70946 +:10E5D0003C1008008E1000DC260F00013C010800F2
70947 +:10E5E000AC2F00DC0E0016C7000000000040182110
70948 +:10E5F0008FBF00848FBE00808FB7007C8FB60078FD
70949 +:10E600008FB500748FB400708FB3006C8FB2006848
70950 +:10E610008FB100648FB000600060102103E000083B
70951 +:10E6200027BD00880000000D3C1F8000AFA0003017
70952 +:10E6300097E501168FE201043C04002030B9FFFF8A
70953 +:10E64000004438240007182B00033140AFA60030E7
70954 +:10E650008FF5010437F80C003C1600400338802188
70955 +:10E6600002B6A02434C40040128000479215000D69
70956 +:10E6700032A800201500000234860080008030217E
70957 +:10E6800014C0009FAFA600303C0D800835A6008066
70958 +:10E6900090CC0008318B0040516000063C06800899
70959 +:10E6A000240E0004122E00A8240F0012122F003294
70960 +:10E6B0003C06800834C401003C0280009447011AE3
70961 +:10E6C0009619000E909F00088E18000830E3FFFF97
70962 +:10E6D00003F9B00432B40004AFB6005CAFA3005835
70963 +:10E6E0008E1600041280002EAFB8005434C3008090
70964 +:10E6F000906800083105004014A0002500000000CB
70965 +:10E700008C70005002D090230640000500000000ED
70966 +:10E710008C71003402D1A82306A201678EE20008A2
70967 +:10E72000126000063C1280003C1508008EB531F4E2
70968 +:10E7300026B600013C010800AC3631F4AE4000447E
70969 +:10E74000240300018FBF00848FBE00808FB7007C40
70970 +:10E750008FB600788FB500748FB400708FB3006CE3
70971 +:10E760008FB200688FB100648FB00060006010212C
70972 +:10E7700003E0000827BD00880E000D2800002021BE
70973 +:10E780000A000D75004018210A000D9500C02021D7
70974 +:10E790000E00171702C020211440FFE10000000006
70975 +:10E7A0003C0B8008356400808C8A003402CA482300
70976 +:10E7B0000520001D000000003C1E08008FDE310017
70977 +:10E7C00027D700013C010800AC3731001260000679
70978 +:10E7D000024020213C1408008E9431F42690000160
70979 +:10E7E0003C010800AC3031F40E00164E3C1E80088F
70980 +:10E7F00037CD008091B700250240202136EE00047D
70981 +:10E800000E001658A1AE00250E000CAC02402021CF
70982 +:10E810000A000DCA240300013C17080126F796C020
70983 +:10E820000A000D843C1F80008C86003002C66023E5
70984 +:10E830001980000C2419000C908F004F3C14080024
70985 +:10E840008E94310032B500FC35ED0001268E0001BA
70986 +:10E850003C010800AC2E3100A08D004FAFA0005845
70987 +:10E860002419000CAFB900308C9800300316A02397
70988 +:10E870001A80010B8FA300580074F82A17E0FFD309
70989 +:10E88000000000001074002A8FA5005802D4B021A7
70990 +:10E8900000B410233044FFFFAFA4005832A8000298
70991 +:10E8A0001100002E32AB00103C15800836B00080FD
70992 +:10E8B0009216000832D30040526000FB8EE200083E
70993 +:10E8C0000E00164E02402021240A0018A20A000958
70994 +:10E8D000921100052409FFFE024020210229902404
70995 +:10E8E0000E001658A2120005240400390000282149
70996 +:10E8F0000E0016F2240600180A000DCA24030001B7
70997 +:10E9000092FE000C3C0A800835490080001EBB00C6
70998 +:10E910008D27003836F10081024020213225F08118
70999 +:10E920000E000C9B30C600FF0A000DC10000000065
71000 +:10E930003AA7000130E300011460FFA402D4B02123
71001 +:10E940000A000E1D00000000024020210E001734B6
71002 +:10E95000020028210A000D75004018211160FF7087
71003 +:10E960003C0F80083C0D800835EE00808DC40038D7
71004 +:10E970008FA300548DA60004006660231D80FF68ED
71005 +:10E98000000000000064C02307020001AFA400548F
71006 +:10E990003C1F08008FFF31E433F9000113200015FC
71007 +:10E9A0008FAC00583C07800094E3011A10600012FD
71008 +:10E9B0003C0680080E00216A024020213C03080129
71009 +:10E9C000906396F13064000214800145000000005D
71010 +:10E9D000306C0004118000078FAC0058306600FBDB
71011 +:10E9E0003C010801A02696F132B500FCAFA000580A
71012 +:10E9F0008FAC00583C06800834D30080AFB40018B8
71013 +:10EA0000AFB60010AFAC00143C088000950B01209D
71014 +:10EA10008E6F0030966A005C8FA3005C8FBF003061
71015 +:10EA20003169FFFF3144FFFF8FAE005401341021E4
71016 +:10EA3000350540000064382B0045C82103E7C02598
71017 +:10EA4000AFB90020AFAF0028AFB80030AFAF00249F
71018 +:10EA5000AFA0002CAFAE0034926D000831B40008B6
71019 +:10EA6000168000BB020020218EE200040040F8095D
71020 +:10EA700027A400108FAF003031F300025660000170
71021 +:10EA800032B500FE3C048008349F008093F90008F2
71022 +:10EA900033380040530000138FA400248C850004F9
71023 +:10EAA0008FA7005410A700D52404001432B0000131
71024 +:10EAB0001200000C8FA400242414000C1234011A3C
71025 +:10EAC0002A2D000D11A001022413000E240E000AAD
71026 +:10EAD000522E0001241E00088FAF002425E40001FF
71027 +:10EAE000AFA400248FAA00143C0B80083565008079
71028 +:10EAF000008A48218CB10030ACA9003090A4004EAF
71029 +:10EB00008CA700303408FFFF0088180400E3F821C8
71030 +:10EB1000ACBF00348FA600308FB900548FB8005CB2
71031 +:10EB200030C200081040000B033898218CAC002044
71032 +:10EB3000119300D330C600FF92EE000C8FA7003473
71033 +:10EB400002402021000E6B0035B400800E000C9BAB
71034 +:10EB50003285F0803C028008345000808E0F0030F7
71035 +:10EB600001F1302318C00097264800803C070800B8
71036 +:10EB70008CE731E42404FF80010418243118007F5D
71037 +:10EB80003C1F80003C19800430F10001AFE300908D
71038 +:10EB900012200006031928213C030801906396F116
71039 +:10EBA00030690008152000C6306A00F73C10800864
71040 +:10EBB00036040080908C004F318B000115600042BC
71041 +:10EBC000000000003C0608008CC6319830CE0010D2
71042 +:10EBD00051C0004230F9000190AF006B55E0003F9A
71043 +:10EBE00030F9000124180001A0B8006B3C1180002E
71044 +:10EBF0009622007A24470064A48700123C0D800806
71045 +:10EC000035A5008090B40008329000401600000442
71046 +:10EC10003C03800832AE000115C0008B00000000EC
71047 +:10EC2000346400808C86002010D3000A3463010015
71048 +:10EC30008C67000002C7782319E000978FBF00544B
71049 +:10EC4000AC93002024130001AC760000AFB3005059
71050 +:10EC5000AC7F000417C0004E000000008FA90050D8
71051 +:10EC60001520000B000000003C030801906396F1A2
71052 +:10EC7000306A00011140002E8FAB0058306400FE56
71053 +:10EC80003C010801A02496F10A000D75000018212E
71054 +:10EC90000E000CAC024020210A000F1300000000FF
71055 +:10ECA0000A000E200000A0210040F80924040017EB
71056 +:10ECB0000A000DCA240300010040F80924040016CC
71057 +:10ECC0000A000DCA240300019094004F240DFFFE9A
71058 +:10ECD000028D2824A085004F30F900011320000682
71059 +:10ECE0003C0480083C030801906396F1307F0010DB
71060 +:10ECF00017E00051306800EF34900080240A0001D2
71061 +:10ED0000024020210E00164EA60A00129203002592
71062 +:10ED100024090001AFA90050346200010240202103
71063 +:10ED20000E001658A20200250A000EF93C0D8008BC
71064 +:10ED30001160FE83000018218FA5003030AC000464
71065 +:10ED40001180FE2C8FBF00840A000DCB240300012C
71066 +:10ED500027A500380E000CB6AFA000385440FF4382
71067 +:10ED60008EE200048FB40038329001005200FF3F61
71068 +:10ED70008EE200048FA3003C8E6E0058006E682364
71069 +:10ED800005A3FF39AE6300580A000E948EE200041A
71070 +:10ED90000E00164E024020213C038008346800809B
71071 +:10EDA000024020210E001658A11E000903C0302188
71072 +:10EDB000240400370E0016F2000028210A000F116B
71073 +:10EDC0008FA900508FAB00185960FF8D3C0D800853
71074 +:10EDD0000E00164E02402021920C00252405000151
71075 +:10EDE000AFA5005035820004024020210E001658C5
71076 +:10EDF000A20200250A000EF93C0D800812240059D9
71077 +:10EE00002A2300151060004D240900162408000C68
71078 +:10EE10005628FF2732B000013C0A8008914C001BA5
71079 +:10EE20002406FFBD241E000E01865824A14B001BA2
71080 +:10EE30000A000EA532B000013C010801A02896F19D
71081 +:10EE40000A000EF93C0D80088CB500308EFE0008DB
71082 +:10EE50002404001826B6000103C0F809ACB600303F
71083 +:10EE60003C030801906396F13077000116E0FF81C2
71084 +:10EE7000306A00018FB200300A000D753243000481
71085 +:10EE80003C1080009605011A50A0FF2B34C60010DC
71086 +:10EE90000A000EC892EE000C8C6200001456FF6D42
71087 +:10EEA000000000008C7800048FB9005403388823D8
71088 +:10EEB0000621FF638FBF00540A000F0E0000000000
71089 +:10EEC0003C010801A02A96F10A000F3030F9000138
71090 +:10EED0001633FF028FAF00240A000EB0241E00106C
71091 +:10EEE0000E00164E024020213C0B80083568008041
71092 +:10EEF00091090025240A0001AFAA0050353300040F
71093 +:10EF0000024020210E001658A11300253C050801DF
71094 +:10EF100090A596F130A200FD3C010801A02296F1D7
71095 +:10EF20000A000E6D004018212411000E53D1FEEA94
71096 +:10EF3000241E00100A000EAF241E00165629FEDC07
71097 +:10EF400032B000013C0A8008914C001B2406FFBD32
71098 +:10EF5000241E001001865824A14B001B0A000EA598
71099 +:10EF600032B000010A000EA4241E00123C038000EF
71100 +:10EF70008C6201B80440FFFE24040800AC6401B8B0
71101 +:10EF800003E000080000000030A5FFFF30C6FFFFCF
71102 +:10EF90003C0780008CE201B80440FFFE34EA0180A7
71103 +:10EFA000AD440000ACE400203C0480089483004899
71104 +:10EFB0003068FFFF11000016AF88000824AB001274
71105 +:10EFC000010B482B512000133C04800034EF01005A
71106 +:10EFD00095EE00208F890000240D001A31CCFFFF30
71107 +:10EFE00031274000A14D000B10E000362583FFFEC5
71108 +:10EFF0000103C02B170000348F9900048F88000490
71109 +:10F00000A5430014350700010A001003AF87000470
71110 +:10F010003C04800024030003348201808F890000B7
71111 +:10F020008F870004A043000B3C088000350C018052
71112 +:10F03000A585000EA585001A8F85000C30EB800099
71113 +:10F04000A5890010AD850028A58600081160000F75
71114 +:10F050008F85001435190100972A00163158FFFCDE
71115 +:10F06000270F000401E870218DCD400031A6FFFF7D
71116 +:10F0700014C000072403BFFF3C02FFFF34487FFF9A
71117 +:10F0800000E83824AF8700048F8500142403BFFFF5
71118 +:10F090003C04800000E3582434830180A46B0026E4
71119 +:10F0A000AC69002C10A0000300054C02A465001000
71120 +:10F0B000A46900263C071000AC8701B803E00008F3
71121 +:10F0C000000000008F990004240AFFFE032A382460
71122 +:10F0D0000A001003AF87000427BDFFE88FA20028B5
71123 +:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99
71124 +:10F0F000AF820014AF8000040E000FDBAF80000071
71125 +:10F100008FBF001027BD001803E00008AF80001477
71126 +:10F110003C06800034C4007034C701008C8A0000B3
71127 +:10F1200090E500128F84000027BDFFF030A300FFA0
71128 +:10F13000000318823082400010400037246500032D
71129 +:10F140000005C8800326C0218F0E4000246F0004F4
71130 +:10F15000000F6880AFAE000001A660218D8B4000DB
71131 +:10F16000AFAB000494E900163128FFFC01063821FA
71132 +:10F170008CE64000AFA600088FA9000800003021EF
71133 +:10F18000000028213C07080024E701000A0010675E
71134 +:10F19000240800089059000024A500012CAC000CA4
71135 +:10F1A0000079C0210018788001E770218DCD000022
71136 +:10F1B0001180000600CD302603A5102114A8FFF50C
71137 +:10F1C00000051A005520FFF4905900003C0480000F
71138 +:10F1D000348700703C0508008CA531048CE30000E6
71139 +:10F1E0002CA2002010400009006A38230005488046
71140 +:10F1F0003C0B0800256B3108012B402124AA00019B
71141 +:10F20000AD0700003C010800AC2A310400C0102109
71142 +:10F2100003E0000827BD0010308220001040000BE2
71143 +:10F2200000055880016648218D24400024680004B0
71144 +:10F2300000083880AFA4000000E618218C6540006B
71145 +:10F24000AFA000080A001057AFA500040000000D91
71146 +:10F250000A0010588FA9000827BDFFE03C07800076
71147 +:10F2600034E60100AFBF001CAFB20018AFB100140C
71148 +:10F27000AFB0001094C5000E8F87000030A4FFFFD0
71149 +:10F280002483000430E2400010400010AF830028C7
71150 +:10F290003C09002000E940241100000D30EC800002
71151 +:10F2A0008F8A0004240BBFFF00EB38243543100085
71152 +:10F2B000AF87000030F220001640000B3C1900041C
71153 +:10F2C000241FFFBF0A0010B7007F102430EC80001D
71154 +:10F2D000158000423C0E002030F220001240FFF862
71155 +:10F2E0008F8300043C19000400F9C0241300FFF5CB
71156 +:10F2F000241FFFBF34620040AF82000430E20100EF
71157 +:10F300001040001130F010008F83002C10600006B8
71158 +:10F310003C0F80003C05002000E52024148000C044
71159 +:10F320003C0800043C0F800035EE010095CD001E26
71160 +:10F3300095CC001C31AAFFFF000C5C00014B482556
71161 +:10F34000AF89000C30F010001200000824110001F9
71162 +:10F3500030F100201620008B3C18100000F890249B
71163 +:10F36000164000823C040C002411000130E801002A
71164 +:10F370001500000B3C0900018F85000430A94000F6
71165 +:10F38000152000073C0900013C0C1F0100EC58242B
71166 +:10F390003C0A1000116A01183C1080003C09000171
71167 +:10F3A00000E9302410C000173C0B10003C18080086
71168 +:10F3B0008F1800243307000214E0014024030001E9
71169 +:10F3C0008FBF001C8FB200188FB100148FB00010D7
71170 +:10F3D0000060102103E0000827BD002000EE682433
71171 +:10F3E00011A0FFBE30F220008F8F00043C11FFFF00
71172 +:10F3F00036307FFF00F0382435E380000A0010A685
71173 +:10F40000AF87000000EB102450400065AF8000245F
71174 +:10F410008F8C002C3C0D0F0000ED18241580008807
71175 +:10F42000AF83001030E8010011000086938F0010B8
71176 +:10F430003C0A0200106A00833C1280003650010032
71177 +:10F44000920500139789002A3626000230AF00FF8C
71178 +:10F4500025EE0004000E19C03C0480008C9801B811
71179 +:10F460000700FFFE34880180AD0300003C198008CE
71180 +:10F47000AC830020973100483225FFFF10A0015CCB
71181 +:10F48000AF8500082523001200A3F82B53E0015993
71182 +:10F490008F850004348D010095AC00202402001AF1
71183 +:10F4A00030E44000318BFFFFA102000B108001927D
71184 +:10F4B0002563FFFE00A3502B154001908F8F0004A1
71185 +:10F4C000A50300148F88000435050001AF850004F2
71186 +:10F4D0003C08800035190180A729000EA729001AD1
71187 +:10F4E0008F89000C30B18000A7270010AF290028B9
71188 +:10F4F000A72600081220000E3C04800035020100FF
71189 +:10F50000944C0016318BFFFC256400040088182100
71190 +:10F510008C7F400033E6FFFF14C000053C048000F0
71191 +:10F520003C0AFFFF354D7FFF00AD2824AF85000466
71192 +:10F53000240EBFFF00AE402434850180A4A800261D
71193 +:10F54000ACA7002C3C071000AC8701B800001821C4
71194 +:10F550008FBF001C8FB200188FB100148FB0001045
71195 +:10F560000060102103E0000827BD00203C020BFFD3
71196 +:10F5700000E41824345FFFFF03E3C82B5320FF7B14
71197 +:10F58000241100013C0608008CC6002C24C5000193
71198 +:10F590003C010800AC25002C0A0010D42411000501
71199 +:10F5A0008F85002410A0002FAF80001090A30000D2
71200 +:10F5B000146000792419000310A0002A30E601002D
71201 +:10F5C00010C000CC8F860010241F000210DF00C97D
71202 +:10F5D0008F8B000C3C0708008CE7003824E4FFFF09
71203 +:10F5E00014E0000201641824000018213C0D0800FA
71204 +:10F5F00025AD0038006D1021904C00048F85002847
71205 +:10F6000025830004000321C030A5FFFF3626000239
71206 +:10F610000E000FDB000000000A00114D0000182151
71207 +:10F6200000E8302414C0FF403C0F80000E00103D65
71208 +:10F63000000000008F8700000A0010CAAF82000C93
71209 +:10F64000938F00103C18080127189640000F90C0B7
71210 +:10F6500002588021AF9000248F85002414A0FFD38E
71211 +:10F66000AF8F00103C0480008C86400030C5010044
71212 +:10F6700010A000BC322300043C0C08008D8C002438
71213 +:10F6800024120004106000C23190000D3C04800080
71214 +:10F690008C8D40003402FFFF11A201003231FFFBCC
71215 +:10F6A0008C884000310A01005540000124110010EF
71216 +:10F6B00030EE080011C000BE2419FFFB8F9800280F
71217 +:10F6C0002F0F03EF51E000010219802430E90100FF
71218 +:10F6D00011200014320800018F87002C14E000FB79
71219 +:10F6E0008F8C000C3C05800034AB0100917F00132F
71220 +:10F6F00033E300FF246A00042403FFFE0203802496
71221 +:10F70000000A21C012000002023230253226FFFF1B
71222 +:10F710000E000FDB9785002A1200FF290000182138
71223 +:10F72000320800011100000D32180004240E0001FF
71224 +:10F73000120E0002023230253226FFFF9785002A82
71225 +:10F740000E000FDB00002021240FFFFE020F80249B
71226 +:10F750001200FF1B00001821321800045300FF188C
71227 +:10F760002403000102323025241200045612000145
71228 +:10F770003226FFFF9785002A0E000FDB24040100CC
71229 +:10F780002419FFFB021988241220FF0D0000182104
71230 +:10F790000A0010E9240300011079009C00003021C8
71231 +:10F7A00090AD00012402000211A200BE30EA004028
71232 +:10F7B00090B90001241800011338007F30E900409F
71233 +:10F7C0008CA600049785002A00C020210E000FDBC4
71234 +:10F7D0003626000200004021010018218FBF001CC6
71235 +:10F7E0008FB200188FB100148FB00010006010218C
71236 +:10F7F00003E0000827BD0020360F010095EE000C45
71237 +:10F8000031CD020015A0FEE63C0900013C1880083D
71238 +:10F81000971200489789002A362600023248FFFFD7
71239 +:10F82000AF8800083C0380008C7101B80620FFFE01
71240 +:10F83000346A0180AD4000001100008E3C0F800052
71241 +:10F84000253F0012011FC82B1320008B240E00033C
71242 +:10F85000346C0100958B00202402001A30E4400033
71243 +:10F860003163FFFFA142000B108000A72463FFFE5D
71244 +:10F870000103682B15A000A52408FFFE34A5000194
71245 +:10F88000A5430014AF8500043C0480002412BFFF90
71246 +:10F8900000B2802434850180A4A9000EA4A9001A16
71247 +:10F8A000A4A60008A4B00026A4A700103C071000DE
71248 +:10F8B000AC8701B80A00114D000018213C038000FC
71249 +:10F8C00034640100949F000E3C1908008F3900D861
71250 +:10F8D0002404008033E5FFFF273100013C010800CC
71251 +:10F8E000AC3100D80E000FDB240600030A00114DD6
71252 +:10F8F00000001821240A000210CA00598F85002830
71253 +:10F900003C0308008C6300D0240E0001106E005EE2
71254 +:10F910002CCF000C24D2FFFC2E5000041600002136
71255 +:10F9200000002021241800021078001B2CD9000CA4
71256 +:10F9300024DFFFF82FE900041520FF330000202109
71257 +:10F9400030EB020051600004000621C054C00022C8
71258 +:10F9500030A5FFFF000621C030A5FFFF0A00117D82
71259 +:10F96000362600023C0908008D29002431300001B0
71260 +:10F970005200FEF7000018219785002A3626000263
71261 +:10F980000E000FDB000020210A00114D000018219D
71262 +:10F990000A00119C241200021320FFE624DFFFF866
71263 +:10F9A0000000202130A5FFFF0A00117D362600024D
71264 +:10F9B0000A0011AC021980245120FF828CA6000499
71265 +:10F9C0003C05080190A5964110A0FF7E2408000187
71266 +:10F9D0000A0011F0010018210E000FDB3226000191
71267 +:10F9E0008F8600108F8500280A00124F000621C064
71268 +:10F9F0008F8500043C18800024120003371001801A
71269 +:10FA0000A212000B0A00112E3C08800090A30001F6
71270 +:10FA1000241100011071FF70240800012409000264
71271 +:10FA20005069000430E60040240800010A0011F08B
71272 +:10FA30000100182150C0FFFD240800013C0C80008B
71273 +:10FA4000358B01009563001094A40002307FFFFF06
71274 +:10FA5000509FFF62010018210A001284240800014F
71275 +:10FA60002CA803EF1100FE56240300010A001239EE
71276 +:10FA700000000000240E000335EA0180A14E000BB7
71277 +:10FA80000A00121C3C04800011E0FFA2000621C005
71278 +:10FA900030A5FFFF0A00117D362600020A0011A5DD
71279 +:10FAA000241100201140FFC63C1280003650010096
71280 +:10FAB000960F001094AE000231E80FFF15C8FFC08A
71281 +:10FAC000000000000A0011E690B900013C060800A1
71282 +:10FAD0008CC6003824C4FFFF14C00002018418241F
71283 +:10FAE000000018213C0D080025AD0038006D1021E4
71284 +:10FAF0000A0011B6904300048F8F0004240EFFFE0D
71285 +:10FB00000A00112C01EE28242408FFFE0A00121A14
71286 +:10FB100000A8282427BDFFC8AFB00010AFBF003435
71287 +:10FB20003C10600CAFBE0030AFB7002CAFB6002861
71288 +:10FB3000AFB50024AFB40020AFB3001CAFB20018C3
71289 +:10FB4000AFB100148E0E5000240FFF7F3C068000E2
71290 +:10FB500001CF682435AC380C240B0003AE0C5000E8
71291 +:10FB6000ACCB00083C010800AC2000200E001819A6
71292 +:10FB7000000000003C0A0010354980513C06601628
71293 +:10FB8000AE09537C8CC700003C0860148D0500A0B2
71294 +:10FB90003C03FFFF00E320243C02535300051FC237
71295 +:10FBA0001482000634C57C000003A08002869821E0
71296 +:10FBB0008E7200043C116000025128218CBF007C31
71297 +:10FBC0008CA200783C1E600037C420203C05080150
71298 +:10FBD00024A59288AF820018AF9F001C0E0016DD8E
71299 +:10FBE0002406000A3C190001273996403C01080010
71300 +:10FBF000AC3931DC0E0020DDAF8000148FD708084F
71301 +:10FC00002418FFF03C15570902F8B02412D502F56C
71302 +:10FC100024040001AF80002C3C1480003697018042
71303 +:10FC20003C1E080127DE9644369301008E900000AA
71304 +:10FC30003205000310A0FFFD3207000110E000882C
71305 +:10FC4000320600028E7100283C048000AE91002034
71306 +:10FC50008E6500048E66000000A0382100C040219F
71307 +:10FC60008C8301B80460FFFE3C0B0010240A0800DE
71308 +:10FC700000AB4824AC8A01B8552000E0240BBFFF3C
71309 +:10FC80009675000E3C1208008E52002030AC4000E9
71310 +:10FC900032AFFFFF264E000125ED00043C010800B5
71311 +:10FCA000AC2E0020118000E8AF8D00283C18002009
71312 +:10FCB00000B8B02412C000E530B980002408BFFFAE
71313 +:10FCC00000A8382434C81000AF87000030E62000B8
71314 +:10FCD00010C000E92409FFBF3C03000400E328240E
71315 +:10FCE00010A00002010910243502004030EA010092
71316 +:10FCF00011400010AF8200048F8B002C11600007B0
71317 +:10FD00003C0D002000ED6024118000043C0F000435
71318 +:10FD100000EF702411C00239000000009668001E38
71319 +:10FD20009678001C3115FFFF0018B40002B690252C
71320 +:10FD3000AF92000C30F910001320001324150001BD
71321 +:10FD400030FF002017E0000A3C04100000E41024FB
71322 +:10FD50001040000D3C0A0C003C090BFF00EA18247F
71323 +:10FD60003525FFFF00A3302B10C0000830ED010047
71324 +:10FD70003C0C08008D8C002C24150005258B0001FF
71325 +:10FD80003C010800AC2B002C30ED010015A0000B4D
71326 +:10FD90003C0500018F85000430AE400055C00007CF
71327 +:10FDA0003C0500013C161F0100F690243C0F10009A
71328 +:10FDB000124F01CE000000003C05000100E5302498
71329 +:10FDC00010C000AF3C0C10003C1F08008FFF002447
71330 +:10FDD00033E90002152000712403000100601021A6
71331 +:10FDE000104000083C0680003C08800035180100E7
71332 +:10FDF0008F0F00243C056020ACAF00140000000011
71333 +:10FE00003C0680003C194000ACD9013800000000DD
71334 +:10FE10005220001332060002262B0140262C0080BF
71335 +:10FE2000240EFF80016E2024018E6824000D1940ED
71336 +:10FE3000318A007F0004A9403172007F3C16200007
71337 +:10FE400036C20002006A482502B2382500E2882541
71338 +:10FE50000122F825ACDF0830ACD1083032060002B0
71339 +:10FE600010C0FF723C188000370501408CA80000CC
71340 +:10FE700024100040AF08002090AF000831E300706C
71341 +:10FE8000107000D428790041532000082405006038
71342 +:10FE9000241100201071000E3C0A40003C09800033
71343 +:10FEA000AD2A01780A001304000000001465FFFB6E
71344 +:10FEB0003C0A40000E001FFA000000003C0A40000F
71345 +:10FEC0003C098000AD2A01780A00130400000000FC
71346 +:10FED00090A90009241F00048CA70000312800FF0E
71347 +:10FEE000111F01B22503FFFA2C7200061240001404
71348 +:10FEF0003C0680008CA9000494A4000A310500FF90
71349 +:10FF000000095E022D6A00083086FFFF15400002DE
71350 +:10FF10002567000424070003240C000910AC01FA33
71351 +:10FF200028AD000A11A001DE2410000A240E0008EA
71352 +:10FF300010AE0028000731C000C038213C06800008
71353 +:10FF40008CD501B806A0FFFE34D20180AE47000078
71354 +:10FF500034CB0140916E0008240300023C0A4000AB
71355 +:10FF600031C400FF00046A0001A86025A64C000807
71356 +:10FF7000A243000B9562000A3C0810003C09800077
71357 +:10FF8000A64200108D670004AE470024ACC801B83B
71358 +:10FF9000AD2A01780A001304000000003C0A80002A
71359 +:10FFA000354401009483000E3C0208008C4200D8C6
71360 +:10FFB000240400803065FFFF245500013C01080047
71361 +:10FFC000AC3500D80E000FDB240600030A001370C6
71362 +:10FFD000000018210009320230D900FF2418000166
71363 +:10FFE0001738FFD5000731C08F910020262200016D
71364 +:10FFF000AF8200200A0013C800C0382100CB2024A3
71365 +:020000021000EC
71366 +:10000000AF85000010800008AF860004240D87FF34
71367 +:1000100000CD6024158000083C0E006000AE302446
71368 +:1000200010C00005000000000E000D42000000009E
71369 +:100030000A001371000000000E0016050000000009
71370 +:100040000A0013710000000030B980005320FF1F28
71371 +:10005000AF8500003C02002000A2F82453E0FF1B03
71372 +:10006000AF8500003C07FFFF34E47FFF00A4382485
71373 +:100070000A00132B34C880000A001334010910242D
71374 +:1000800000EC58245160005AAF8000248F8D002C62
71375 +:100090003C0E0F0000EE182415A00075AF83001071
71376 +:1000A00030EF010011E00073939800103C12020041
71377 +:1000B000107200703C06800034D9010093280013B0
71378 +:1000C0009789002A36A60002311800FF271600047F
71379 +:1000D000001619C03C0480008C8501B804A0FFFE06
71380 +:1000E00034880180AD0300003C158008AC830020FB
71381 +:1000F00096BF004833E5FFFF10A001BCAF850008A4
71382 +:100100002523001200A3102B504001B98F85000455
71383 +:10011000348D010095AC0020240B001A30E440001F
71384 +:10012000318AFFFFA10B000B108001BA2543FFFEAF
71385 +:1001300000A3702B15C001B88F9600048F8F0004A8
71386 +:10014000A503001435E50001AF8500043C088000DC
71387 +:1001500035150180A6A9000EA6A9001A8F89000CEA
71388 +:1001600030BF8000A6A70010AEA90028A6A60008F0
71389 +:1001700013E0000F3C0F8000350C0100958B00163A
71390 +:10018000316AFFFC25440004008818218C6240007D
71391 +:100190003046FFFF14C000072416BFFF3C0EFFFFD0
71392 +:1001A00035CD7FFF00AD2824AF8500043C0F8000D3
71393 +:1001B0002416BFFF00B6902435E50180A4B20026C6
71394 +:1001C000ACA7002C3C071000ADE701B80A00137083
71395 +:1001D000000018210E00165D000000003C0A4000DF
71396 +:1001E0003C098000AD2A01780A00130400000000D9
71397 +:1001F0008F85002410A00027AF80001090A300007E
71398 +:10020000106000742409000310690101000030210E
71399 +:1002100090AE0001240D000211CD014230EF0040EC
71400 +:1002200090A90001241F0001113F000930E20040A5
71401 +:100230008CA600049785002A00C020210E000FDB49
71402 +:1002400036A60002000040210A00137001001821A8
71403 +:100250005040FFF88CA600043C07080190E7964147
71404 +:1002600010E0FFF4240800010A00137001001821B7
71405 +:10027000939800103C1F080127FF96400018C8C043
71406 +:10028000033F4021AF8800248F85002414A0FFDBAA
71407 +:10029000AF9800103C0480008C86400030C50100FF
71408 +:1002A00010A0008732AB00043C0C08008D8C0024A9
71409 +:1002B00024160004156000033192000D241600027C
71410 +:1002C0003C0480008C8E4000340DFFFF11CD0113E3
71411 +:1002D00032B5FFFB8C984000330F010055E0000160
71412 +:1002E0002415001030E80800110000382409FFFB35
71413 +:1002F0008F9F00282FF903EF53200001024990241B
71414 +:1003000030E2010010400014325F00018F87002CA2
71415 +:1003100014E0010E8F8C000C3C0480003486010038
71416 +:1003200090C5001330AA00FF25430004000321C03C
71417 +:100330002419FFFE025990241240000202B6302513
71418 +:1003400032A6FFFF0E000FDB9785002A1240FEA3A6
71419 +:1003500000001821325F000113E0000D3247000455
71420 +:10036000240900011249000202B6302532A6FFFF1F
71421 +:100370009785002A0E000FDB000020212402FFFEDB
71422 +:10038000024290241240FE950000182132470004DA
71423 +:1003900050E0FE922403000102B63025241600042A
71424 +:1003A0005656000132A6FFFF9785002A0E000FDB8C
71425 +:1003B000240401002403FFFB0243A82412A0FE87AB
71426 +:1003C000000018210A001370240300010A0014B968
71427 +:1003D0000249902410A0FFAF30E5010010A00017E3
71428 +:1003E0008F8600102403000210C300148F84000CB9
71429 +:1003F0003C0608008CC6003824CAFFFF14C0000267
71430 +:10040000008A1024000010213C0E080025CE003880
71431 +:10041000004E682191AC00048F850028258B0004D4
71432 +:10042000000B21C030A5FFFF36A600020E000FDB37
71433 +:10043000000000000A00137000001821240F0002C1
71434 +:1004400010CF0088241600013C0308008C6300D004
71435 +:100450001076008D8F85002824D9FFFC2F280004FA
71436 +:100460001500006300002021241F0002107F005DA2
71437 +:100470002CC9000C24C3FFF82C6200041440FFE9CF
71438 +:100480000000202130EA020051400004000621C093
71439 +:1004900054C0000530A5FFFF000621C030A5FFFFB6
71440 +:1004A0000A00150436A600020E000FDB32A600017A
71441 +:1004B0008F8600108F8500280A001520000621C0B5
71442 +:1004C0003C0A08008D4A0024315200015240FE438C
71443 +:1004D000000018219785002A36A600020E000FDBC7
71444 +:1004E000000020210A001370000018219668000CFB
71445 +:1004F000311802005700FE313C0500013C1F800806
71446 +:1005000097F900489789002A36A600023328FFFF92
71447 +:10051000AF8800083C0380008C7501B806A0FFFE80
71448 +:100520003C04800034820180AC400000110000B621
71449 +:1005300024180003252A0012010A182B106000B2AB
71450 +:1005400000000000966F00203C0E8000240D001A71
71451 +:1005500031ECFFFF35CA018030EB4000A14D000BAC
71452 +:10056000116000B02583FFFE0103902B164000AE02
71453 +:100570002416FFFE34A50001A5430014AF85000436
71454 +:100580002419BFFF00B94024A6E9000EA6E9001A0D
71455 +:10059000A6E60008A6E80026A6E700103C07100023
71456 +:1005A000AE8701B80A001370000018213C048000D7
71457 +:1005B0008C8201B80440FFFE349601802415001C93
71458 +:1005C000AEC70000A2D5000B3C071000AC8701B8F5
71459 +:1005D0003C0A40003C098000AD2A01780A0013045F
71460 +:1005E000000000005120FFA424C3FFF800002021D8
71461 +:1005F00030A5FFFF0A00150436A600020E00103DCC
71462 +:10060000000000008F8700000A001346AF82000C34
71463 +:1006100090A30001241500011075FF0B24080001B0
71464 +:10062000240600021066000430E2004024080001A5
71465 +:100630000A001370010018215040FFFD240800013A
71466 +:100640003C0C8000358B0100956A001094A40002D8
71467 +:100650003143FFFF5083FDE1010018210A00158599
71468 +:10066000240800018F8500282CB203EF1240FDDB27
71469 +:10067000240300013C0308008C6300D02416000111
71470 +:100680001476FF7624D9FFFC2CD8000C1300FF72DF
71471 +:10069000000621C030A5FFFF0A00150436A600029F
71472 +:1006A00010B00037240F000B14AFFE23000731C039
71473 +:1006B000312600FF00065600000A4E0305220047BF
71474 +:1006C00030C6007F0006F8C03C16080126D69640CA
71475 +:1006D00003F68021A2000001A20000003C0F600090
71476 +:1006E0008DF918202405000100C588040011302769
71477 +:1006F0000326C024000731C000C03821ADF81820FF
71478 +:100700000A0013C8A60000028F850020000731C030
71479 +:1007100024A2FFFF0A0013F6AF8200200A0014B2E1
71480 +:100720002415002011E0FECC3C1980003728010080
71481 +:100730009518001094B6000233120FFF16D2FEC6B1
71482 +:10074000000000000A00148290A900013C0B080080
71483 +:100750008D6B0038256DFFFF15600002018D1024A0
71484 +:10076000000010213C080800250800380048C0217E
71485 +:10077000930F000425EE00040A0014C5000E21C0EA
71486 +:1007800000065202241F00FF115FFDEB000731C07D
71487 +:10079000000A20C03C0E080125CE9640008EA821FC
71488 +:1007A000009E602100095C02240D00013C076000EE
71489 +:1007B000A2AD0000AD860000A2AB00018CF21820B3
71490 +:1007C00024030001014310040242B025ACF61820B6
71491 +:1007D00000C038210A0013C8A6A900020A0015AA01
71492 +:1007E000AF8000200A0012FFAF84002C8F85000428
71493 +:1007F0003C1980002408000337380180A308000B4F
71494 +:100800000A00144D3C088000A2F8000B0A00155A9B
71495 +:100810002419BFFF8F9600042412FFFE0A00144B18
71496 +:1008200002D228242416FFFE0A00155800B62824F8
71497 +:100830003C038000346401008C85000030A2003E3F
71498 +:100840001440000800000000AC6000488C870000E5
71499 +:1008500030E607C010C0000500000000AC60004C8E
71500 +:10086000AC60005003E0000824020001AC600054BA
71501 +:10087000AC6000408C880000310438001080FFF923
71502 +:10088000000000002402000103E00008AC60004406
71503 +:100890003C0380008C6201B80440FFFE3467018095
71504 +:1008A000ACE4000024080001ACE00004A4E500086A
71505 +:1008B00024050002A0E8000A34640140A0E5000B12
71506 +:1008C0009483000A14C00008A4E30010ACE00024E4
71507 +:1008D0003C07800034E901803C041000AD20002872
71508 +:1008E00003E00008ACE401B88C8600043C0410006E
71509 +:1008F000ACE600243C07800034E90180AD200028EC
71510 +:1009000003E00008ACE401B83C0680008CC201B8EA
71511 +:100910000440FFFE34C7018024090002ACE400005B
71512 +:10092000ACE40004A4E50008A0E9000A34C50140D5
71513 +:10093000A0E9000B94A8000A3C041000A4E80010F1
71514 +:10094000ACE000248CA30004ACE3002803E0000822
71515 +:10095000ACC401B83C039000346200010082202541
71516 +:100960003C038000AC6400208C65002004A0FFFEE6
71517 +:100970000000000003E00008000000003C028000CE
71518 +:10098000344300010083202503E00008AC4400202C
71519 +:1009900027BDFFE03C098000AFBF0018AFB10014D5
71520 +:1009A000AFB00010352801408D10000091040009FF
71521 +:1009B0009107000891050008308400FF30E600FF31
71522 +:1009C00000061A002C820081008330251040002A86
71523 +:1009D00030A50080000460803C0D080125AD92B078
71524 +:1009E000018D58218D6A00000140000800000000C0
71525 +:1009F0003C038000346201409445000A14A0001EAC
71526 +:100A00008F91FCC09227000530E6000414C0001A44
71527 +:100A1000000000000E00164E02002021922A000560
71528 +:100A200002002021354900040E001658A2290005B5
71529 +:100A30009228000531040004148000020000000028
71530 +:100A40000000000D922D0000240B002031AC00FFAF
71531 +:100A5000158B00093C0580008CAE01B805C0FFFE77
71532 +:100A600034B10180AE3000003C0F100024100005AE
71533 +:100A7000A230000BACAF01B80000000D8FBF001812
71534 +:100A80008FB100148FB0001003E0000827BD0020D4
71535 +:100A90000200202100C028218FBF00188FB1001450
71536 +:100AA0008FB00010240600010A00161D27BD00208B
71537 +:100AB0000000000D0200202100C028218FBF001877
71538 +:100AC0008FB100148FB00010000030210A00161DF5
71539 +:100AD00027BD002014A0FFE8000000000200202134
71540 +:100AE0008FBF00188FB100148FB0001000C02821F4
71541 +:100AF0000A00163B27BD00203C0780008CEE01B8A1
71542 +:100B000005C0FFFE34F00180241F0002A21F000B6D
71543 +:100B100034F80140A60600089719000A3C0F10009F
71544 +:100B2000A61900108F110004A6110012ACEF01B835
71545 +:100B30000A0016998FBF001827BDFFE8AFBF00104D
71546 +:100B40000E000FD4000000003C0280008FBF001098
71547 +:100B500000002021AC4001800A00108F27BD001842
71548 +:100B60003084FFFF30A5FFFF108000070000182130
71549 +:100B7000308200011040000200042042006518216C
71550 +:100B80001480FFFB0005284003E0000800601021EE
71551 +:100B900010C00007000000008CA2000024C6FFFF68
71552 +:100BA00024A50004AC82000014C0FFFB24840004D0
71553 +:100BB00003E000080000000010A0000824A3FFFFCD
71554 +:100BC000AC86000000000000000000002402FFFFCF
71555 +:100BD0002463FFFF1462FFFA2484000403E000088A
71556 +:100BE000000000003C03800027BDFFF83462018054
71557 +:100BF000AFA20000308C00FF30AD00FF30CE00FF10
71558 +:100C00003C0B80008D6401B80480FFFE00000000F2
71559 +:100C10008FA900008D6801288FAA00008FA700000F
71560 +:100C20008FA400002405000124020002A085000A10
71561 +:100C30008FA30000359940003C051000A062000B16
71562 +:100C40008FB800008FAC00008FA600008FAF0000AF
71563 +:100C500027BD0008AD280000AD400004AD80002491
71564 +:100C6000ACC00028A4F90008A70D0010A5EE0012E2
71565 +:100C700003E00008AD6501B83C06800827BDFFE829
71566 +:100C800034C50080AFBF001090A7000924020012F5
71567 +:100C900030E300FF1062000B008030218CA8005070
71568 +:100CA00000882023048000088FBF00108CAA003425
71569 +:100CB000240400390000282100CA4823052000052B
71570 +:100CC000240600128FBF00102402000103E0000878
71571 +:100CD00027BD00180E0016F2000000008FBF0010A4
71572 +:100CE0002402000103E0000827BD001827BDFFC84B
71573 +:100CF000AFB20030AFB00028AFBF0034AFB1002CAE
71574 +:100D000000A0802190A5000D30A6001010C000109A
71575 +:100D1000008090213C0280088C4400048E0300086F
71576 +:100D20001064000C30A7000530A6000510C0009329
71577 +:100D3000240400018FBF00348FB200308FB1002C2B
71578 +:100D40008FB000280080102103E0000827BD003884
71579 +:100D500030A7000510E0000F30AB001210C00006F5
71580 +:100D6000240400013C0980088E0800088D25000439
71581 +:100D70005105009C240400388FBF00348FB200302E
71582 +:100D80008FB1002C8FB000280080102103E00008F4
71583 +:100D900027BD0038240A0012156AFFE6240400016A
71584 +:100DA0000200202127A500100E000CB6AFA00010F5
71585 +:100DB0001440007C3C19800837240080909800087B
71586 +:100DC000331100081220000A8FA7001030FF010025
71587 +:100DD00013E000A48FA300148C8600580066102333
71588 +:100DE000044000043C0A8008AC8300588FA7001020
71589 +:100DF0003C0A800835480080910900083124000829
71590 +:100E00001480000224080003000040213C1F8008D9
71591 +:100E100093F1001193F9001237E600808CCC005456
71592 +:100E2000333800FF03087821322D00FF000F708057
71593 +:100E300001AE282100AC582B1160006F00000000AB
71594 +:100E400094CA005C8CC900543144FFFF0125102373
71595 +:100E50000082182B14600068000000008CCB005446
71596 +:100E60000165182330EC00041180006C000830800C
71597 +:100E70008FA8001C0068102B1040006230ED0004A9
71598 +:100E8000006610232C46008010C00002004088211C
71599 +:100E9000241100800E00164E024020213C0D8008D7
71600 +:100EA00035A6008024070001ACC7000C90C80008DC
71601 +:100EB0000011484035A70100310C007FA0CC00088C
71602 +:100EC0008E05000424AB0001ACCB0030A4D1005C43
71603 +:100ED0008CCA003C9602000E01422021ACC40020C6
71604 +:100EE0008CC3003C0069F821ACDF001C8E190004A3
71605 +:100EF000ACF900008E180008ACF800048FB10010A7
71606 +:100F0000322F000855E0004793A60020A0C0004EF5
71607 +:100F100090D8004E2411FFDFA0F8000890CF000801
71608 +:100F200001F17024A0CE00088E0500083C0B80085B
71609 +:100F300035690080AD2500388D6A00148D2200309F
71610 +:100F40002419005001422021AD24003491230000D7
71611 +:100F5000307F00FF13F90036264F01000E001658AF
71612 +:100F60000240202124040038000028210E0016F23F
71613 +:100F70002406000A0A001757240400010E000D2859
71614 +:100F8000000020218FBF00348FB200308FB1002CC1
71615 +:100F90008FB00028004020210080102103E00008CD
71616 +:100FA00027BD00388E0E00083C0F800835F0008009
71617 +:100FB000AE0E005402402021AE0000300E00164E4E
71618 +:100FC00000000000920D00250240202135AC0020D9
71619 +:100FD0000E001658A20C00250E000CAC0240202179
71620 +:100FE000240400382405008D0E0016F22406001299
71621 +:100FF0000A0017572404000194C5005C0A001792E8
71622 +:1010000030A3FFFF2407021811A0FF9E00E6102363
71623 +:101010008FAE001C0A00179A01C610230A0017970A
71624 +:101020002C620218A0E600080A0017C48E0500080A
71625 +:101030002406FF8001E6C0243C118000AE38002861
71626 +:101040008E0D000831E7007F3C0E800C00EE602121
71627 +:10105000AD8D00E08E080008AF8C00380A0017D074
71628 +:10106000AD8800E4AC800058908500082403FFF7A9
71629 +:1010700000A33824A08700080A0017758FA7001066
71630 +:101080003C05080024A560A83C04080024846FF4F3
71631 +:101090003C020800244260B0240300063C01080121
71632 +:1010A000AC2596C03C010801AC2496C43C01080163
71633 +:1010B000AC2296C83C010801A02396CC03E00008AE
71634 +:1010C0000000000003E00008240200013C02800050
71635 +:1010D000308800FF344701803C0680008CC301B893
71636 +:1010E0000460FFFE000000008CC501282418FF806A
71637 +:1010F0003C0D800A24AF010001F8702431EC007F20
71638 +:10110000ACCE0024018D2021ACE50000948B00EAD8
71639 +:101110003509600024080002316AFFFFACEA0004D0
71640 +:1011200024020001A4E90008A0E8000BACE00024C0
71641 +:101130003C071000ACC701B8AF84003803E00008DA
71642 +:10114000AF85006C938800488F8900608F820038DB
71643 +:1011500030C600FF0109382330E900FF01221821C1
71644 +:1011600030A500FF2468008810C000020124382147
71645 +:101170000080382130E400031480000330AA00030B
71646 +:101180001140000D312B000310A0000900001021B8
71647 +:1011900090ED0000244E000131C200FF0045602B9D
71648 +:1011A000A10D000024E700011580FFF925080001CA
71649 +:1011B00003E00008000000001560FFF300000000DD
71650 +:1011C00010A0FFFB000010218CF80000245900043F
71651 +:1011D000332200FF0045782BAD18000024E70004FF
71652 +:1011E00015E0FFF92508000403E0000800000000F6
71653 +:1011F00093850048938800588F8700600004320070
71654 +:101200003103007F00E5102B30C47F001040000F39
71655 +:10121000006428258F8400383C0980008C8A00EC0B
71656 +:10122000AD2A00A43C03800000A35825AC6B00A0AD
71657 +:101230008C6C00A00580FFFE000000008C6D00ACEF
71658 +:10124000AC8D00EC03E000088C6200A80A00188254
71659 +:101250008F840038938800593C0280000080502120
71660 +:10126000310300FEA383005930ABFFFF30CC00FFF9
71661 +:1012700030E7FFFF344801803C0980008D2401B82D
71662 +:101280000480FFFE8F8D006C24180016AD0D000049
71663 +:101290008D2201248F8D0038AD0200048D5900206D
71664 +:1012A000A5070008240201C4A119000AA118000B17
71665 +:1012B000952F01208D4E00088D4700049783005C18
71666 +:1012C0008D59002401CF302100C7282100A32023FD
71667 +:1012D0002418FFFFA504000CA50B000EA5020010AA
71668 +:1012E000A50C0012AD190018AD18002495AF00E848
71669 +:1012F0003C0B10002407FFF731EEFFFFAD0E002876
71670 +:101300008DAC0084AD0C002CAD2B01B88D460020B7
71671 +:1013100000C7282403E00008AD4500208F8800386E
71672 +:101320000080582130E7FFFF910900D63C02800081
71673 +:1013300030A5FFFF312400FF00041A00006750258C
71674 +:1013400030C600FF344701803C0980008D2C01B875
71675 +:101350000580FFFE8F82006C240F0017ACE20000B6
71676 +:101360008D390124ACF900048D780020A4EA00082E
71677 +:10137000241901C4A0F8000AA0EF000B9523012056
71678 +:101380008D6E00088D6D00049784005C01C35021B0
71679 +:10139000014D602101841023A4E2000CA4E5000E9D
71680 +:1013A000A4F90010A4E60012ACE000148D7800242B
71681 +:1013B000240DFFFFACF800188D0F007CACEF001C73
71682 +:1013C0008D0E00783C0F1000ACEE0020ACED002438
71683 +:1013D000950A00BE240DFFF73146FFFFACE600285A
71684 +:1013E000950C00809504008231837FFF0003CA00C2
71685 +:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2
71686 +:10140000950E00828D6A002000AE3021014D282407
71687 +:10141000A506008203E00008AD6500203C028000C4
71688 +:10142000344501803C0480008C8301B80460FFFED9
71689 +:101430008F8A0044240600199549001C3128FFFFBB
71690 +:10144000000839C0ACA70000A0A6000B3C051000A6
71691 +:1014500003E00008AC8501B88F87004C0080402174
71692 +:1014600030C400FF3C0680008CC201B80440FFFE7F
71693 +:101470008F89006C9383006834996000ACA90000E8
71694 +:10148000A0A300058CE20010240F00022403FFF744
71695 +:10149000A4A20006A4B900088D180020A0B8000A74
71696 +:1014A000A0AF000B8CEE0000ACAE00108CED000481
71697 +:1014B000ACAD00148CEC001CACAC00248CEB002018
71698 +:1014C000ACAB00288CEA002C3C071000ACAA002C26
71699 +:1014D0008D090024ACA90018ACC701B88D05002007
71700 +:1014E00000A3202403E00008AD0400208F8600380C
71701 +:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0
71702 +:1015000090C300D430A500FF3062002010400008D6
71703 +:10151000008088218CCB00D02409FFDF256A0001E0
71704 +:10152000ACCA00D090C800D401093824A0C700D4A8
71705 +:1015300014A000403C0C80008F840038908700D4B9
71706 +:101540002418FFBF2406FFEF30E3007FA08300D400
71707 +:10155000979F005C8F8200608F8D003803E2C82364
71708 +:10156000A799005CA5A000BC91AF00D401F870243D
71709 +:10157000A1AE00D48F8C0038A18000D78F8A0038AC
71710 +:10158000A5400082AD4000EC914500D400A658244F
71711 +:10159000A14B00D48F9000348F8400609786005C4C
71712 +:1015A0000204282110C0000FAF850034A38000582A
71713 +:1015B0003C0780008E2C000894ED01208E2B000447
71714 +:1015C000018D5021014B8021020620233086FFFF30
71715 +:1015D00030C8000F3909000131310001162000091F
71716 +:1015E000A3880058938600488FBF00188FB100145D
71717 +:1015F0008FB0001027BD0020AF85006403E0000815
71718 +:10160000AF86006000C870238FBF00189386004823
71719 +:101610008FB100148FB0001034EF0C00010F28219F
71720 +:1016200027BD0020ACEE0084AF85006403E0000815
71721 +:10163000AF86006035900180020028210E00190F4E
71722 +:10164000240600828F840038908600D430C5004084
71723 +:1016500050A0FFBAA38000688F85004C3C06800034
71724 +:101660008CCD01B805A0FFFE8F89006C2408608234
71725 +:1016700024070002AE090000A6080008A207000B1C
71726 +:101680008CA300083C0E1000AE0300108CA2000CCE
71727 +:10169000AE0200148CBF0014AE1F00188CB90018E5
71728 +:1016A000AE1900248CB80024AE1800288CAF002896
71729 +:1016B000AE0F002CACCE01B80A001948A380006818
71730 +:1016C0008F8A003827BDFFE0AFB10014AFB0001023
71731 +:1016D0008F880060AFBF00189389003C954200BC22
71732 +:1016E00030D100FF0109182B0080802130AC00FFB1
71733 +:1016F0003047FFFF0000582114600003310600FF4F
71734 +:1017000001203021010958239783005C0068202BB9
71735 +:101710001480002700000000106800562419000102
71736 +:101720001199006334E708803165FFFF0E0018C08F
71737 +:10173000020020218F83006C3C07800034E601808A
71738 +:101740003C0580008CAB01B80560FFFE240A001840
71739 +:101750008F840038ACC30000A0CA000B948900BE7F
71740 +:101760003C081000A4C90010ACC00030ACA801B8FF
71741 +:101770009482008024430001A4830080949F008011
71742 +:101780003C0608008CC6318833EC7FFF1186005E72
71743 +:101790000000000002002021022028218FBF001835
71744 +:1017A0008FB100148FB000100A00193427BD00203B
71745 +:1017B000914400D42403FF8000838825A15100D4E4
71746 +:1017C0009784005C3088FFFF51000023938C003C1D
71747 +:1017D0008F8500382402EFFF008B782394AE00BC85
71748 +:1017E0000168502B31E900FF01C26824A4AD00BCA0
71749 +:1017F00051400039010058213C1F800037E60100AC
71750 +:101800008CD800043C190001031940245500000144
71751 +:1018100034E740008E0A00202403FFFB241100015E
71752 +:1018200001432024AE0400201191002D34E78000F4
71753 +:1018300002002021012030210E0018C03165FFFF79
71754 +:101840009787005C8F890060A780005C0127802358
71755 +:10185000AF900060938C003C8F8B00388FBF0018D6
71756 +:101860008FB100148FB0001027BD002003E00008E6
71757 +:10187000A16C00D73C0D800035AA01008D48000402
71758 +:101880003C0900010109282454A0000134E740006C
71759 +:101890008E0F00202418FFFB34E7800001F870242D
71760 +:1018A00024190001AE0E00201599FF9F34E708802F
71761 +:1018B000020020210E00188E3165FFFF020020215A
71762 +:1018C000022028218FBF00188FB100148FB00010A4
71763 +:1018D0000A00193427BD00200A0019F7000048212A
71764 +:1018E00002002021012030210E00188E3165FFFFFB
71765 +:1018F0009787005C8F890060A780005C01278023A8
71766 +:101900000A001A0EAF900060948C0080241F8000A3
71767 +:10191000019F3024A4860080908B0080908F0080EF
71768 +:10192000316700FF0007C9C20019C027001871C045
71769 +:1019300031ED007F01AE2825A08500800A0019DF67
71770 +:1019400002002021938500682403000127BDFFE8E1
71771 +:1019500000A330042CA20020AFB00010AFBF0014D1
71772 +:1019600000C01821104000132410FFFE3C0708009F
71773 +:101970008CE7319000E610243C088000350501809A
71774 +:1019800014400005240600848F890038240A0004CE
71775 +:101990002410FFFFA12A00FC0E00190F0000000018
71776 +:1019A000020010218FBF00148FB0001003E0000868
71777 +:1019B00027BD00183C0608008CC631940A001A574F
71778 +:1019C00000C310248F87004427BDFFE0AFB200188A
71779 +:1019D000AFB10014AFB00010AFBF001C30D000FF9B
71780 +:1019E00090E6000D00A088210080902130C5007F86
71781 +:1019F000A0E5000D8F8500388E2300188CA200D042
71782 +:101A00001062002E240A000E0E001A4AA38A0068F3
71783 +:101A10002409FFFF104900222404FFFF5200002088
71784 +:101A2000000020218E2600003C0C001000CC582421
71785 +:101A3000156000393C0E000800CE682455A0003F18
71786 +:101A4000024020213C18000200D880241200001F10
71787 +:101A50003C0A00048F8700448CE200148CE30010E1
71788 +:101A60008CE500140043F82303E5C82B1320000580
71789 +:101A7000024020218E24002C8CF1001010910031A6
71790 +:101A80000240202124020012A38200680E001A4A9C
71791 +:101A90002412FFFF105200022404FFFF0000202147
71792 +:101AA0008FBF001C8FB200188FB100148FB00010D0
71793 +:101AB0000080102103E0000827BD002090A800D47A
71794 +:101AC000350400200A001A80A0A400D400CA4824CB
71795 +:101AD0001520000B8F8B00448F8D00448DAC0010BF
71796 +:101AE0001580000B024020218E2E002C51C0FFECEF
71797 +:101AF00000002021024020210A001A9B2402001726
71798 +:101B00008D66001050C0FFE6000020210240202119
71799 +:101B10000A001A9B24020011024020212402001511
71800 +:101B20000E001A4AA3820068240FFFFF104FFFDC4B
71801 +:101B30002404FFFF0A001A8A8E2600000A001AC138
71802 +:101B4000240200143C08000400C8382450E0FFD4EC
71803 +:101B500000002021024020210A001A9B24020013C9
71804 +:101B60008F85003827BDFFD8AFB3001CAFB2001877
71805 +:101B7000AFB10014AFB00010AFBF002090A700D4E9
71806 +:101B80008F90004C2412FFFF34E2004092060000C8
71807 +:101B9000A0A200D48E0300100080982110720006CD
71808 +:101BA00030D1003F2408000D0E001A4AA3880068B7
71809 +:101BB000105200252404FFFF8F8A00388E09001878
71810 +:101BC0008D4400D01124000702602021240C000E57
71811 +:101BD0000E001A4AA38C0068240BFFFF104B001A5A
71812 +:101BE0002404FFFF24040020122400048F8D0038F9
71813 +:101BF00091AF00D435EE0020A1AE00D48F85005403
71814 +:101C000010A00019000000001224004A8F9800382C
71815 +:101C10008F92FCC0971000809651000A5230004805
71816 +:101C20008F9300403C1F08008FFF318C03E5C82BC9
71817 +:101C30001720001E02602021000028210E0019A993
71818 +:101C400024060001000020218FBF00208FB3001C5C
71819 +:101C50008FB200188FB100148FB0001000801021D7
71820 +:101C600003E0000827BD00285224002A8E05001436
71821 +:101C70008F840038948A008025490001A48900805F
71822 +:101C8000948800803C0208008C42318831077FFF35
71823 +:101C900010E2000E00000000026020210E00193446
71824 +:101CA000240500010A001B0B000020212402002D46
71825 +:101CB0000E001A4AA38200682403FFFF1443FFE1C9
71826 +:101CC0002404FFFF0A001B0C8FBF002094990080A2
71827 +:101CD000241F800024050001033FC024A498008035
71828 +:101CE00090920080908E0080325100FF001181C2DE
71829 +:101CF00000107827000F69C031CC007F018D582576
71830 +:101D0000A08B00800E001934026020210A001B0BFA
71831 +:101D1000000020212406FFFF54A6FFD68F84003840
71832 +:101D2000026020210E001934240500010A001B0B5B
71833 +:101D300000002021026020210A001B252402000A45
71834 +:101D40002404FFFD0A001B0BAF9300608F8800384E
71835 +:101D500027BDFFE8AFB00010AFBF0014910A00D458
71836 +:101D60008F87004C00808021354900408CE60010B0
71837 +:101D7000A10900D43C0208008C4231B030C53FFFBD
71838 +:101D800000A2182B106000078F850050240DFF80E3
71839 +:101D900090AE000D01AE6024318B00FF156000088D
71840 +:101DA0000006C382020020212403000D8FBF00140F
71841 +:101DB0008FB0001027BD00180A001A4AA3830068DC
71842 +:101DC00033060003240F000254CFFFF70200202146
71843 +:101DD00094A2001C8F85003824190023A4A200E8D7
71844 +:101DE0008CE8000000081E02307F003F13F9003528
71845 +:101DF0003C0A00838CE800188CA600D0110600086D
71846 +:101E0000000000002405000E0E001A4AA385006899
71847 +:101E10002407FFFF104700182404FFFF8F850038B8
71848 +:101E200090A900D435240020A0A400D48F8C0044B5
71849 +:101E3000918E000D31CD007FA18D000D8F83005458
71850 +:101E40001060001C020020218F8400508C9800102C
71851 +:101E50000303782B11E0000D241900180200202143
71852 +:101E6000A39900680E001A4A2410FFFF10500002C8
71853 +:101E70002404FFFF000020218FBF00148FB000104A
71854 +:101E80000080102103E0000827BD00188C86001098
71855 +:101E90008F9F00440200202100C31023AFE20010F6
71856 +:101EA000240500010E0019A9240600010A001B9751
71857 +:101EB000000020210E001934240500010A001B97A0
71858 +:101EC00000002021010A5824156AFFD98F8C004494
71859 +:101ED000A0A600FC0A001B84A386005A30A500FFC0
71860 +:101EE0002406000124A9000100C9102B1040000C99
71861 +:101EF00000004021240A000100A61823308B0001B5
71862 +:101F000024C60001006A3804000420421160000267
71863 +:101F100000C9182B010740251460FFF800A61823FC
71864 +:101F200003E000080100102127BDFFD8AFB0001862
71865 +:101F30008F90004CAFB1001CAFBF00202403FFFF07
71866 +:101F40002411002FAFA30010920600002405000802
71867 +:101F500026100001006620260E001BB0308400FF12
71868 +:101F600000021E003C021EDC34466F410A001BD8F2
71869 +:101F70000000102110A00009008018212445000154
71870 +:101F800030A2FFFF2C4500080461FFFA0003204047
71871 +:101F90000086202614A0FFF9008018210E001BB037
71872 +:101FA000240500208FA300102629FFFF313100FFF8
71873 +:101FB00000034202240700FF1627FFE20102182651
71874 +:101FC00000035027AFAA0014AFAA00100000302170
71875 +:101FD00027A8001027A7001400E6782391ED00033E
71876 +:101FE00024CE000100C8602131C600FF2CCB0004C4
71877 +:101FF0001560FFF9A18D00008FA200108FBF002097
71878 +:102000008FB1001C8FB0001803E0000827BD002826
71879 +:1020100027BDFFD0AFB3001CAFB00010AFBF00288A
71880 +:10202000AFB50024AFB40020AFB20018AFB10014B8
71881 +:102030003C0C80008D880128240FFF803C06800A1C
71882 +:1020400025100100250B0080020F68243205007F57
71883 +:10205000016F7024AD8E009000A62821AD8D002464
71884 +:1020600090A600FC3169007F3C0A8004012A1821F7
71885 +:10207000A386005A9067007C00809821AF830030CF
71886 +:1020800030E20002AF88006CAF85003800A0182154
71887 +:10209000144000022404003424040030A3840048C7
71888 +:1020A0008C7200DC30D100FF24040004AF92006089
71889 +:1020B00012240004A38000688E7400041680001EA1
71890 +:1020C0003C0880009386005930C7000110E0000FE3
71891 +:1020D0008F9300608CB000848CA800842404FF805F
71892 +:1020E000020410240002F940310A007F03EA482567
71893 +:1020F0003C0C2000012C902530CD00FE3C038000DC
71894 +:10210000AC720830A38D00598F9300608FBF0028F8
71895 +:102110008FB50024ACB300DC8FB400208FB3001C5B
71896 +:102120008FB200188FB100148FB00010240200018C
71897 +:1021300003E0000827BD00308E7F000895020120D3
71898 +:102140008E67001003E2C8213326FFFF30D8000F4E
71899 +:1021500033150001AF87003416A00058A39800582B
71900 +:1021600035090C000309382100D81823AD03008479
71901 +:10217000AF8700648E6A00043148FFFF1100007EC3
71902 +:10218000A78A005C90AC00D42407FF8000EC3024C8
71903 +:1021900030CB00FF1560004B9786005C938E005A91
71904 +:1021A000240D000230D5FFFF11CD02A20000A021B6
71905 +:1021B0008F85006002A5802B160000BC9388004824
71906 +:1021C0003C11800096240120310400FF1485008812
71907 +:1021D0008F8400648F9800343312000356400085CA
71908 +:1021E00030A500FF8F900064310C00FF24060034FE
71909 +:1021F00011860095AF90004C9204000414800118E1
71910 +:102200008F8E0038A380003C8E0D00048DC800D84E
71911 +:102210003C0600FF34CCFFFF01AC30240106182B34
71912 +:1022200014600120AF8600548F8700609798005C8F
71913 +:10223000AF8700400307402310C000C7A788005C99
71914 +:102240008F91003030C3000300035823922A007C92
71915 +:102250003171000302261021000A20823092000111
71916 +:102260000012488000492821311FFFFF03E5C82BD9
71917 +:10227000132001208F8800388F8500348F880064F8
71918 +:102280001105025A3C0E3F018E0600003C0C250051
71919 +:1022900000CE682411AC01638F84004C30E500FF50
71920 +:1022A0000E00184A000030218F8800388F870060A8
71921 +:1022B0008F8500340A001DB78F8600540A001C5613
71922 +:1022C000AF87006490A400D400E48024320200FFB1
71923 +:1022D000104000169386005990A6008890AE00D753
71924 +:1022E00024A8008830D4003F2686FFE02CD10020AF
71925 +:1022F000A38E003C1220000CAF88004C240B000180
71926 +:1023000000CB20043095001916A0012B3C0680005C
71927 +:1023100034CF0002008FC0241700022E3099002015
71928 +:1023200017200234000000009386005930CB0001D2
71929 +:102330001160000F9788005C8CBF00848CA900841A
71930 +:10234000240AFF8003EA6024000C19403132007F28
71931 +:10235000007238253C0D200000EDC82530D800FE65
71932 +:102360003C0F8000ADF90830A39800599788005CB5
71933 +:102370001500FF84000000008E630020306200041E
71934 +:102380001040FF51938600592404FFFB0064802411
71935 +:102390003C038000AE700020346601808C7301B86D
71936 +:1023A0000660FFFE8F98006C347501003C1400013C
71937 +:1023B000ACD800008C6B012424076085ACCB0004F2
71938 +:1023C0008EAE000401D488245220000124076083CB
71939 +:1023D00024190002A4C700083C0F1000A0D9000B6C
71940 +:1023E0003C068000ACCF01B80A001C2B9386005934
71941 +:1023F00030A500FF0E00184A240600018F88006CEB
71942 +:102400003C05800034A90900250201889388004812
71943 +:10241000304A0007304B00783C0340802407FF809F
71944 +:102420000163C825014980210047F824310C00FFD1
71945 +:1024300024060034ACBF0800AF90004CACB90810C3
71946 +:102440005586FF6E920400048F8400388E11003090
71947 +:10245000908E00D431CD001015A000108F83006045
71948 +:102460002C6F000515E000E400000000909800D4F7
71949 +:102470002465FFFC331200101640000830A400FF52
71950 +:102480008F9F00648F99003413F90004388700018E
71951 +:1024900030E20001144001C8000000000E001BC320
71952 +:1024A000000000000A001DF8000000008F84006496
71953 +:1024B00030C500FF0E00184A24060001939800481A
71954 +:1024C000240B0034130B00A08F8500388F8600602A
71955 +:1024D0009783005C306EFFFF00CE8823AF910060D1
71956 +:1024E000A780005C1280FF90028018212414FFFD59
71957 +:1024F0005474FFA28E6300208E6A00042403FFBF81
71958 +:102500002408FFEF0155F823AE7F000490AC00D4FF
71959 +:102510003189007FA0A900D48E7200208F8F0038EF
71960 +:10252000A780005C364D0002AE6D0020A5E000BC27
71961 +:1025300091E500D400A3C824A1F900D48F950038F8
71962 +:10254000AEA000EC92B800D403085824A2AB00D48B
71963 +:102550000A001CD78F8500388F910034AF8000604F
71964 +:1025600002275821AF8B0034000020212403FFFFF5
71965 +:10257000108301B48F8500388E0C00103C0D0800CC
71966 +:102580008DAD31B09208000031843FFF008D802B6B
71967 +:1025900012000023310D003F3C1908008F3931A88B
71968 +:1025A0008F9F006C000479802408FF80033F202166
71969 +:1025B000008FC821938500590328F8243C06008029
71970 +:1025C0003C0F800034D80001001F91403331007F60
71971 +:1025D0008F8600380251502535EE0940332B0078A4
71972 +:1025E000333000073C0310003C02800C017890253A
71973 +:1025F000020E48210143C0250222382134AE0001D9
71974 +:10260000ADFF0804AF890050ADF20814AF87004455
71975 +:10261000ADFF0028ACD90084ADF80830A38E005976
71976 +:102620009383005A24070003106700272407000142
71977 +:102630001467FFAC8F8500382411002311B1008589
71978 +:1026400000000000240E000B026020210E001A4A38
71979 +:10265000A38E00680040A0210A001D328F8500383B
71980 +:1026600002602021240B000C0E001A4AA38B006884
71981 +:10267000240AFFFF104AFFBD2404FFFF8F8E00389D
71982 +:10268000A380003C8E0D00048DC800D83C0600FFDE
71983 +:1026900034CCFFFF01AC30240106182B1060FEE2A1
71984 +:1026A000AF86005402602021241200190E001A4A3D
71985 +:1026B000A3920068240FFFFF104FFFAC2404FFFF1C
71986 +:1026C0000A001C838F86005425A3FFE02C74002091
71987 +:1026D0001280FFDD240E000B000328803C1108014E
71988 +:1026E000263194B400B148218D2D000001A00008CE
71989 +:1026F000000000008F85003400A710219385003C66
71990 +:10270000AF82003402251821A383003C951F00BC32
71991 +:102710000226282137F91000A51900BC5240FF926B
71992 +:10272000AF850060246A0004A38A003C950900BCC0
71993 +:1027300024A40004AF84006035322000A51200BC40
71994 +:102740000A001D54000020218F8600602CC800055F
71995 +:102750001500FF609783005C3065FFFF00C5C8234C
71996 +:102760002F2F000511E00003306400FF24CDFFFC93
71997 +:1027700031A400FF8F8900648F920034113200046D
71998 +:10278000389F000133EC0001158001380000000083
71999 +:102790008F840038908700D434E60010A08600D4DF
72000 +:1027A0008F8500388F8600609783005CACA000ECBA
72001 +:1027B0000A001D2F306EFFFF8CB500848CB400849E
72002 +:1027C0003C04100002A7302400068940328E007FAE
72003 +:1027D000022E8025020410253C08800024050001FB
72004 +:1027E00002602021240600010E0019A9AD02083064
72005 +:1027F0000A001CC38F8500388C8200EC1222FE7EFA
72006 +:102800000260202124090005A38900680E001A4AED
72007 +:102810002411FFFF1451FE782404FFFF0A001D5508
72008 +:102820002403FFFF8F8F004C8F8800388DF8000045
72009 +:10283000AD1800888DE70010AD0700988F87006005
72010 +:102840000A001DB78F8600542406FFFF118600057D
72011 +:10285000000000000E001B4C026020210A001D8FAA
72012 +:102860000040A0210E001AD1026020210A001D8F15
72013 +:102870000040A0218F90004C3C0208008C4231B0F7
72014 +:102880008E110010322C3FFF0182282B10A0000C6B
72015 +:10289000240BFF808F85005090A3000D01637024EE
72016 +:1028A00031CA00FF1140000702602021001143825D
72017 +:1028B000310600032418000110D8010600000000B2
72018 +:1028C000026020212403000D0E001A4AA383006831
72019 +:1028D000004020218F8500380A001D320080A02191
72020 +:1028E0008F90004C3C0A08008D4A31B08F85005013
72021 +:1028F0008E0400100000A0218CB1001430823FFF34
72022 +:10290000004A602B8CB200205180FFEE0260202133
72023 +:1029100090B8000D240BFF800178702431C300FFB4
72024 +:102920005060FFE80260202100044382310600036A
72025 +:1029300014C0FFE40260202194BF001C8F9900386E
72026 +:102940008E060028A73F00E88CAF0010022F20233E
72027 +:1029500014C4013A026020218F83005400C368210F
72028 +:10296000022D382B14E00136240200188F8A00440F
72029 +:102970008F820030024390218D4B00100163702341
72030 +:10298000AD4E0010AD5200208C4C00740192282BEB
72031 +:1029900014A0015F026020218F8400508E08002463
72032 +:1029A0008C86002411060007026020212419001CD7
72033 +:1029B0000E001A4AA3990068240FFFFF104FFFC5AD
72034 +:1029C0002404FFFF8F8400448C87002424FF00012F
72035 +:1029D000AC9F00241251012F8F8D00308DB10074F7
72036 +:1029E0001232012C3C0B00808E0E000001CB5024D3
72037 +:1029F00015400075000000008E0300142411FFFF35
72038 +:102A0000107100073C0808003C0608008CC6319095
72039 +:102A100000C8C0241300015202602021A380006876
72040 +:102A20008E0300003C19000100792024108000135F
72041 +:102A30003C1F0080007FA02416800009020028218E
72042 +:102A4000026020212411001A0E001A4AA391006886
72043 +:102A50002407FFFF1047FF9F2404FFFF02002821E7
72044 +:102A6000026020210E001A6A240600012410FFFFD4
72045 +:102A70001050FF982404FFFF241400018F8D0044A0
72046 +:102A8000026020210280302195A900342405000134
72047 +:102A9000253200010E0019A9A5B200340000202142
72048 +:102AA0008F8500380A001D320080A0218F90004CD5
72049 +:102AB0003C1408008E9431B08E07001030E53FFFC3
72050 +:102AC00000B4C82B132000618F8600502412FF80B1
72051 +:102AD00090C9000D0249682431A400FF5080005CB9
72052 +:102AE000026020218F8C00541180000700078B8228
72053 +:102AF0008F8500388F82FCC094BF0080944A000A02
72054 +:102B0000515F00F78F8600403227000314E0006415
72055 +:102B100000000000920E000211C000D8000000006A
72056 +:102B20008E0B0024156000D902602021920400035E
72057 +:102B300024190002308500FF14B90005308900FF18
72058 +:102B40008F940054128000EA240D002C308900FF7D
72059 +:102B5000392C00102D8400012D3200010244302553
72060 +:102B6000020028210E001A6A026020212410FFFFB3
72061 +:102B7000105000BF8F8500388F830054106000D341
72062 +:102B8000240500013C0A08008D4A318C0143F82BD2
72063 +:102B900017E000B22402002D02602021000028214D
72064 +:102BA0000E0019A9240600018F85003800001821A5
72065 +:102BB0000A001D320060A0210E0018750000000000
72066 +:102BC0000A001DF800000000AC8000200A001E78FA
72067 +:102BD0008E03001400002821026020210E0019A994
72068 +:102BE000240600010A001CC38F8500380A001DB7A7
72069 +:102BF0008F8800388CAA00848CAC00843C031000C1
72070 +:102C00000147F824001F91403189007F024968255F
72071 +:102C100001A32825ACC50830910700012405000157
72072 +:102C2000026020210E0019A930E600010A001CC331
72073 +:102C30008F850038938F00482403FFFD0A001D3460
72074 +:102C4000AF8F00600A001D342403FFFF02602021C3
72075 +:102C50002410000D0E001A4AA390006800401821AD
72076 +:102C60008F8500380A001D320060A0210E00187503
72077 +:102C7000000000009783005C8F86006000402021E8
72078 +:102C80003070FFFF00D010232C4A00051140FE11C8
72079 +:102C90008F850038ACA400EC0A001D2F306EFFFFBA
72080 +:102CA00090CF000D31E300085460FFA192040003AF
72081 +:102CB00002602021240200100E001A4AA38200683C
72082 +:102CC0002403FFFF5443FF9A920400030A001F12DB
72083 +:102CD0008F85003890A4000D308F000811E000951A
72084 +:102CE0008F990054572000A6026020218E1F000CEF
72085 +:102CF0008CB4002057F40005026020218E0D0008DE
72086 +:102D00008CA7002411A7003A026020212402002091
72087 +:102D1000A38200680E001A4A2412FFFF1052FEED33
72088 +:102D20002404FFFF8F9F00442402FFF73C14800E11
72089 +:102D300093EA000D2419FF803C03800001423824EF
72090 +:102D4000A3E7000D8F9F00303C0908008D2931ACAE
72091 +:102D50008F8C006C97F200788F870044012C302113
72092 +:102D6000324D7FFF000D204000C4782131E5007F07
72093 +:102D700000B4C02101F94024AC68002CA711000068
72094 +:102D80008CEB0028256E0001ACEE00288CEA002CAC
72095 +:102D90008E02002C01426021ACEC002C8E09002C2C
72096 +:102DA000ACE900308E120014ACF2003494ED003A1D
72097 +:102DB00025A40001A4E4003A97E600783C1108003D
72098 +:102DC0008E3131B024C3000130707FFF1211005CDE
72099 +:102DD000006030218F8F0030026020212405000127
72100 +:102DE0000E001934A5E600780A001EA1000020217B
72101 +:102DF0008E0900142412FFFF1132006B8F8A0038F5
72102 +:102E00008E0200188D4C00D0144C00650260202109
72103 +:102E10008E0B00248CAE0028116E005B2402002172
72104 +:102E20000E001A4AA38200681452FFBE2404FFFF5A
72105 +:102E30008F8500380A001D320080A0212402001F67
72106 +:102E40000E001A4AA38200682409FFFF1049FEA160
72107 +:102E50002404FFFF0A001E548F83005402602021C7
72108 +:102E60000E001A4AA38200681450FF508F85003864
72109 +:102E70002403FFFF0A001D320060A0218CD800242B
72110 +:102E80008E0800241118FF29026020210A001F2744
72111 +:102E90002402000F8E0900003C05008001259024CB
72112 +:102EA0001640FF492402001A026020210E001A4A2F
72113 +:102EB000A3820068240CFFFF144CFECF2404FFFF04
72114 +:102EC0008F8500380A001D320080A0210E001934C1
72115 +:102ED000026020218F8500380A001EE500001821BD
72116 +:102EE0002403FFFD0060A0210A001D32AF860060B0
72117 +:102EF000026020210E001A4AA38D00682403FFFF00
72118 +:102F00001043FF588F8500380A001ECC920400033E
72119 +:102F10002418001D0E001A4AA39800682403FFFF1E
72120 +:102F20001443FE9D2404FFFF8F8500380A001D32E4
72121 +:102F30000080A021026020210A001F3D24020024FD
72122 +:102F4000240880000068C024330BFFFF000B73C20D
72123 +:102F500031D000FF001088270A001F6E001133C017
72124 +:102F6000240F001B0E001A4AA38F00681451FEACF8
72125 +:102F70002404FFFF8F8500380A001D320080A02145
72126 +:102F80000A001F3D240200278E0600288CA3002C77
72127 +:102F900010C30008026020210A001F812402001FC4
72128 +:102FA0000A001F812402000E026020210A001F81F6
72129 +:102FB000240200258E04002C1080000D8F8F00301D
72130 +:102FC0008DE800740104C02B5700000C0260202122
72131 +:102FD0008CB900140086A0210334282B10A0FF52C6
72132 +:102FE0008F9F0044026020210A001F8124020022DA
72133 +:102FF000026020210A001F81240200230A001F8191
72134 +:103000002402002627BDFFD8AFB3001CAFB10014C7
72135 +:10301000AFBF0020AFB20018AFB000103C0280007C
72136 +:103020008C5201408C4B01483C048000000B8C0208
72137 +:10303000322300FF317300FF8C8501B804A0FFFE2E
72138 +:1030400034900180AE1200008C8701442464FFF0AC
72139 +:10305000240600022C830013AE070004A61100080A
72140 +:10306000A206000BAE1300241060004F8FBF00209B
72141 +:10307000000448803C0A0801254A9534012A402171
72142 +:103080008D04000000800008000000003C030800E0
72143 +:103090008C6331A831693FFF00099980007280215B
72144 +:1030A000021370212405FF80264D0100264C00806C
72145 +:1030B0003C02800031B1007F3198007F31CA007F2F
72146 +:1030C0003C1F800A3C1980043C0F800C01C5202461
72147 +:1030D00001A5302401853824014F1821AC46002475
72148 +:1030E000023F402103194821AC470090AC4400281E
72149 +:1030F000AF830044AF880038AF8900300E0019005C
72150 +:10310000016080213C0380008C6B01B80560FFFEEC
72151 +:103110008F8700448F8600383465018090E8000D69
72152 +:10312000ACB20000A4B0000600082600000416039C
72153 +:1031300000029027001227C21080008124C200885C
72154 +:10314000241F6082A4BF0008A0A000052402000282
72155 +:10315000A0A2000B8F8B0030000424003C08270045
72156 +:1031600000889025ACB20010ACA00014ACA00024E4
72157 +:10317000ACA00028ACA0002C8D6900382413FF807F
72158 +:10318000ACA9001890E3000D02638024320500FF13
72159 +:1031900010A000058FBF002090ED000D31AC007F26
72160 +:1031A000A0EC000D8FBF00208FB3001C8FB2001861
72161 +:1031B0008FB100148FB000103C0A10003C0E80004C
72162 +:1031C00027BD002803E00008ADCA01B8265F010052
72163 +:1031D0002405FF8033F8007F3C06800003E5782457
72164 +:1031E0003C19800A03192021ACCF0024908E00D412
72165 +:1031F00000AE682431AC00FF11800024AF84003899
72166 +:10320000248E008895CD00123C0C08008D8C31A8CE
72167 +:1032100031AB3FFF01924821000B5180012A402130
72168 +:1032200001052024ACC400283107007F3C06800C37
72169 +:1032300000E620219083000D00A31024304500FFFC
72170 +:1032400010A0FFD8AF8400449098000D330F0010F9
72171 +:1032500015E0FFD58FBF00200E0019000000000010
72172 +:103260003C0380008C7901B80720FFFE00000000BD
72173 +:10327000AE1200008C7F0144AE1F0004A6110008AE
72174 +:1032800024110002A211000BAE1300243C1308010C
72175 +:10329000927396F0327000015200FFC38FBF00207E
72176 +:1032A0000E002146024020210A0020638FBF00202B
72177 +:1032B0003C1260008E452C083C03F0033462FFFF93
72178 +:1032C00000A2F824AE5F2C088E582C083C1901C0CF
72179 +:1032D00003199825AE532C080A0020638FBF0020E5
72180 +:1032E000264D010031AF007F3C10800A240EFF8084
72181 +:1032F00001F0282101AE60243C0B8000AD6C00245D
72182 +:103300001660FFA8AF85003824110003A0B100FCAF
72183 +:103310000A0020638FBF002026480100310A007F89
72184 +:103320003C0B800A2409FF80014B30210109202435
72185 +:103330003C078000ACE400240A002062AF8600381D
72186 +:10334000944E0012320C3FFF31CD3FFF15ACFF7D94
72187 +:10335000241F608290D900D42418FF800319782498
72188 +:1033600031EA00FF1140FF7700000000240700044D
72189 +:10337000A0C700FC8F870044241160842406000D40
72190 +:10338000A4B10008A0A600050A00204D24020002F6
72191 +:103390003C040001248496DC24030014240200FE73
72192 +:1033A0003C010800AC2431EC3C010800AC2331E8BE
72193 +:1033B0003C010801A42296F83C040801248496F8F4
72194 +:1033C0000000182100643021A0C300042463000120
72195 +:1033D0002C6500FF54A0FFFC006430213C0708006E
72196 +:1033E00024E7010003E00008AF87007800A058211F
72197 +:1033F000008048210000102114A00012000050217C
72198 +:103400000A002142000000003C010801A42096F8B7
72199 +:103410003C05080194A596F88F8200783C0C0801C1
72200 +:10342000258C96F800E2182100AC2021014B302BAE
72201 +:10343000A089000400001021A460000810C0003919
72202 +:10344000010048218F8600780009384000E94021BA
72203 +:103450000008388000E6282190A8000B90B9000AE7
72204 +:103460000008204000881021000218800066C0215A
72205 +:10347000A319000A8F85007800E5782191EE000AF3
72206 +:1034800091E6000B000E684001AE6021000C208028
72207 +:1034900000851021A046000B3C030801906396F2C2
72208 +:1034A000106000222462FFFF8F8300383C01080176
72209 +:1034B000A02296F2906C00FF118000040000000032
72210 +:1034C000906E00FF25CDFFFFA06D00FF3C190801A5
72211 +:1034D000973996F8272300013078FFFF2F0F00FF60
72212 +:1034E00011E0FFC9254A00013C010801A42396F818
72213 +:1034F0003C05080194A596F88F8200783C0C0801E1
72214 +:10350000258C96F800E2182100AC2021014B302BCD
72215 +:10351000A089000400001021A460000814C0FFC9A5
72216 +:103520000100482103E000080000000003E000085B
72217 +:103530002402000227BDFFE0248501002407FF804C
72218 +:10354000AFB00010AFBF0018AFB1001400A718242F
72219 +:103550003C10800030A4007F3C06800A00862821B1
72220 +:103560008E110024AE03002490A200FF1440000836
72221 +:10357000AF850038A0A000098FBF0018AE1100244D
72222 +:103580008FB100148FB0001003E0000827BD0020A9
72223 +:1035900090A900FD90A800FF312400FF0E0020F448
72224 +:1035A000310500FF8F8500388FBF0018A0A00009EB
72225 +:1035B000AE1100248FB100148FB0001003E000089A
72226 +:1035C00027BD002027BDFFD0AFB20020AFB1001C47
72227 +:1035D000AFB00018AFBF002CAFB40028AFB30024C9
72228 +:1035E0003C0980009533011635320C00952F011AE5
72229 +:1035F0003271FFFF023280218E08000431EEFFFF9E
72230 +:10360000248B0100010E6821240CFF8025A5FFFFFB
72231 +:10361000016C50243166007F3C07800AAD2A0024EB
72232 +:1036200000C73021AF850074AF8800703C010801ED
72233 +:10363000A02096F190C300090200D02100809821BB
72234 +:10364000306300FF2862000510400048AF86003854
72235 +:10365000286400021480008E24140001240D00054B
72236 +:103660003C010801A02D96D590CC00FD3C0108013D
72237 +:10367000A02096D63C010801A02096D790CB000A46
72238 +:10368000240AFF80318500FF014B4824312700FFC9
72239 +:1036900010E0000C000058213C12800836510080D8
72240 +:1036A0008E2F00308CD0005C01F0702305C0018E9D
72241 +:1036B0008F87007090D4000A3284007FA0C4000A73
72242 +:1036C0008F8600383C118008363000808E0F003025
72243 +:1036D0008F87007000EF702319C000EE000000001B
72244 +:1036E00090D4000924120002328400FF1092024795
72245 +:1036F000000000008CC2005800E2F82327F9FFFF09
72246 +:103700001B2001300000000090C5000924080004BF
72247 +:1037100030A300FF10680057240A00013C01080193
72248 +:10372000A02A96D590C900FF252700013C01080179
72249 +:10373000A02796D43C030801906396D52406000583
72250 +:103740001066006A2C780005130000C40000902168
72251 +:103750000003F8803C0408012484958003E4C82118
72252 +:103760008F25000000A0000800000000241800FFC2
72253 +:103770001078005C0000000090CC000A90CA00099C
72254 +:103780003C080801910896F13187008000EA48253D
72255 +:103790003C010801A02996DC90C500FD3C140801FD
72256 +:1037A000929496F2311100013C010801A02596DDAA
72257 +:1037B00090DF00FE3C010801A03F96DE90D200FFA2
72258 +:1037C0003C010801A03296DF8CD900543C0108016D
72259 +:1037D000AC3996E08CD000583C010801AC3096E43E
72260 +:1037E0008CC3005C3C010801AC3496EC3C01080140
72261 +:1037F000AC2396E8162000088FBF002C8FB4002859
72262 +:103800008FB300248FB200208FB1001C8FB000183E
72263 +:1038100003E0000827BD00303C1180009624010E13
72264 +:103820000E000FD43094FFFF3C0B08018D6B96F413
72265 +:103830000260382102802821AE2B01803C13080150
72266 +:103840008E7396D401602021240600830E00102F71
72267 +:10385000AFB300108FBF002C8FB400288FB30024AB
72268 +:103860008FB200208FB1001C8FB0001803E0000859
72269 +:1038700027BD00303C1808008F1831FC270F0001CD
72270 +:103880003C010800AC2F31FC0A0021D700000000E9
72271 +:103890001474FFB900000000A0C000FF3C05080040
72272 +:1038A0008CA531E43C0308008C6331E03C02080045
72273 +:1038B0008C4232048F99003834A80001241F000282
72274 +:1038C0003C010801AC2396F43C010801A02896F0C5
72275 +:1038D0003C010801A02296F3A33F00090A002190B1
72276 +:1038E0008F8600380E002146000000000A0021D714
72277 +:1038F0008F8600383C1F080193FF96D424190001DD
72278 +:1039000013F902298F8700703C100801921096D895
72279 +:103910003C06080190C696D610C000050200A02102
72280 +:103920003C040801908496D9109001E48F870078B8
72281 +:10393000001088408F9F0078023048210009C8801D
72282 +:10394000033F702195D80008270F0001A5CF00087C
72283 +:103950003C040801908496D93C05080190A596D6B0
72284 +:103960000E0020F4000000008F8700780230202134
72285 +:103970000004308000C720218C8500048F820074F1
72286 +:1039800000A2402305020006AC8200048C8A0000DD
72287 +:103990008F830070014310235C400001AC83000062
72288 +:1039A0008F86003890CB00FF2D6C00025580002DD3
72289 +:1039B000241400010230F821001F40800107282153
72290 +:1039C00090B9000B8CAE00040019C0400319782197
72291 +:1039D000000F1880006710218C4D000001AE882375
72292 +:1039E0002630FFFF5E00001F241400018C440004F9
72293 +:1039F0008CAA0000008A482319200019240E000414
72294 +:103A00003C010801A02E96D590AD000B8CAB0004B4
72295 +:103A1000000D8840022D80210010108000471021E9
72296 +:103A20008C44000401646023058202009443000872
72297 +:103A300090DF00FE90B9000B33E500FF54B900049D
72298 +:103A40000107A021A0D400FE8F8700780107A021E4
72299 +:103A50009284000B0E0020F4240500018F860038AC
72300 +:103A600024140001125400962E500001160000424A
72301 +:103A70003C08FFFF241900021659FF3F0000000018
72302 +:103A8000A0C000FF8F860038A0D200090A0021D70D
72303 +:103A90008F86003890C700092404000230E300FF3D
72304 +:103AA0001064016F24090004106901528F880074AA
72305 +:103AB0008CCE0054010E682325B10001062001754B
72306 +:103AC000241800043C010801A03896D53C010801E7
72307 +:103AD000A02096D490D400FD90D200FF2E4F00027B
72308 +:103AE00015E0FF14328400FF000438408F8900780D
72309 +:103AF00090DF00FF00E41021000220800089C8212F
72310 +:103B00002FE500029324000B14A0FF0A24070002F3
72311 +:103B100000041840006480210010588001692821A9
72312 +:103B20008CAC0004010C50230540FF020000000093
72313 +:103B30003C030801906396D614600005246F0001D1
72314 +:103B40003C010801A02496D93C010801A02796D782
72315 +:103B50003C010801A02F96D690CE00FF24E700017B
72316 +:103B600031CD00FF01A7882B1220FFE990A4000BA4
72317 +:103B70000A0021C6000000003C0508018CA596D46F
72318 +:103B80003C12000400A8F82413F2000624020005E9
72319 +:103B90003C090801912996D5152000022402000352
72320 +:103BA000240200053C010801A02296F190C700FF05
72321 +:103BB00014E0012024020002A0C200090A0021D75B
72322 +:103BC0008F86003890CC00FF1180FEDA240A0001B5
72323 +:103BD0008F8C00748F890078240F00030180682186
72324 +:103BE0001160001E240E0002000540400105A021C6
72325 +:103BF00000142080008990218E51000401918023BF
72326 +:103C00000600FECC000000003C020801904296D65F
72327 +:103C100014400005245800013C010801A02A96D751
72328 +:103C20003C010801A02596D93C010801A03896D690
72329 +:103C300090DF00FF010510210002C88033E500FF7E
72330 +:103C4000254A00010329202100AA402B1500FEB9B6
72331 +:103C50009085000B1560FFE50005404000054040E1
72332 +:103C600001051821000310803C010801A02A96D408
72333 +:103C70003C010801A02596D8004918218C64000455
72334 +:103C800000E4F82327F9FFFF1F20FFE900000000F0
72335 +:103C90008C63000000E358230560013A01A38823E8
72336 +:103CA00010E301170184C0231B00FEA200000000E6
72337 +:103CB0003C010801A02E96D50A002305240B000123
72338 +:103CC000240E0004A0CE00093C0D08008DAD31F893
72339 +:103CD0008F86003825A200013C010800AC2231F893
72340 +:103CE0000A0021D7000000008CD9005C00F9C02335
72341 +:103CF0001F00FE7B000000008CDF005C10FFFF65F2
72342 +:103D00008F8400748CC3005C008340232502000173
72343 +:103D10001C40FF60000000008CC9005C248700018B
72344 +:103D200000E9282B10A0FE943C0D80008DAB01040F
72345 +:103D30003C0C0001016C50241140FE8F2402001045
72346 +:103D40003C010801A02296F10A0021D700000000E2
72347 +:103D50008F9100748F86003826220001ACC2005C6F
72348 +:103D60000A002292241400018F8700382404FF8067
72349 +:103D70000000882190E9000A241400010124302564
72350 +:103D8000A0E6000A3C05080190A596D63C0408016F
72351 +:103D9000908496D90E0020F4000000008F86003831
72352 +:103DA0008F85007890C800FD310700FF0007404074
72353 +:103DB0000107F821001FC0800305C8219323000BD1
72354 +:103DC000A0C300FD8F8500788F8600380305602131
72355 +:103DD000918F000B000F704001CF6821000D808093
72356 +:103DE000020510218C4B0000ACCB00548D840004E4
72357 +:103DF0008F83007400645023194000022482000164
72358 +:103E00002462000101074821ACC2005C0009308037
72359 +:103E100000C5402100E02021240500010E0020F40F
72360 +:103E20009110000B8F86003890C500FF10A0FF0C8A
72361 +:103E3000001070408F85007801D06821000D10803F
72362 +:103E4000004558218D6400008F8C0074018450233C
72363 +:103E50002547000104E0FF02263100013C03080170
72364 +:103E6000906396D62E2F0002247800013C010801B1
72365 +:103E7000A03896D63C010801A03496D711E0FEF890
72366 +:103E8000020038210A002365000740408F84003873
72367 +:103E90008F8300748C85005800A340230502FE9A8E
72368 +:103EA000AC8300580A00223B000000003C070801D8
72369 +:103EB00090E796F2240200FF10E200BE8F860038E1
72370 +:103EC0003C110801963196FA3C030801246396F8E8
72371 +:103ED000262500013230FFFF30ABFFFF02036021D7
72372 +:103EE0002D6A00FF1540008D918700043C010801F8
72373 +:103EF000A42096FA8F88003800074840012728211F
72374 +:103F0000911800FF000530802405000127140001EE
72375 +:103F1000A11400FF3C120801925296F28F8800789B
72376 +:103F20008F8E0070264F000100C820213C0108013F
72377 +:103F3000A02F96F2AC8E00008F8D0074A48500082F
72378 +:103F4000AC8D00043C030801906396D414600077A4
72379 +:103F5000000090213C010801A02596D4A087000B09
72380 +:103F60008F8C007800CC5021A147000A8F82003846
72381 +:103F7000A04700FD8F840038A08700FE8F860038A0
72382 +:103F80008F9F0070ACDF00548F990074ACD900583B
72383 +:103F90008F8D00780127C02100185880016DA02165
72384 +:103FA000928F000A000F704001CF18210003888013
72385 +:103FB000022D8021A207000B8F8600780166602108
72386 +:103FC000918A000B000A1040004A2021000428803A
72387 +:103FD00000A64021A107000A3C07800834E90080C0
72388 +:103FE0008D2200308F860038ACC2005C0A0022921D
72389 +:103FF0002414000190CA00FF1540FEAD8F880074A4
72390 +:10400000A0C400090A0021D78F860038A0C000FD97
72391 +:104010008F98003824060001A30000FE3C0108012F
72392 +:10402000A02696D53C010801A02096D40A0021C6FE
72393 +:104030000000000090CB00FF3C040801908496F340
72394 +:10404000316C00FF0184502B1540000F2402000347
72395 +:1040500024020004A0C200090A0021D78F8600387C
72396 +:1040600090C3000A2410FF8002035824316C00FF23
72397 +:104070001180FDC1000000003C010801A02096D580
72398 +:104080000A0021C600000000A0C200090A0021D7D2
72399 +:104090008F86003890D4000A2412FF8002544824EE
72400 +:1040A000312800FF1500FFF4240200083C0108013C
72401 +:1040B000A02296F10A0021D70000000000108840DD
72402 +:1040C0008F8B0070023018210003688001A7202127
72403 +:1040D000AC8B00008F8A0074240C0001A48C0008B3
72404 +:1040E000AC8A00043C05080190A596D62402000184
72405 +:1040F00010A2FE1E24A5FFFF0A0022519084000B8F
72406 +:104100000184A0231A80FD8B000000003C010801FF
72407 +:10411000A02E96D50A002305240B00013C010801BE
72408 +:10412000A42596FA0A0023B78F880038240B0001D3
72409 +:10413000106B00228F9800388F85003890BF00FFE9
72410 +:1041400033F900FF1079002B000000003C1F08012C
72411 +:1041500093FF96D8001FC840033FC0210018A080DD
72412 +:104160000288782191EE000AA08E000A8F8D0078D7
72413 +:104170003C030801906396D800CD88210A0023DD16
72414 +:10418000A223000B263000010600003101A4902379
72415 +:104190000640002B240200033C010801A02F96D505
72416 +:1041A0000A002305240B00018F8900380A00223BF6
72417 +:1041B000AD2700540A00229124120001931400FD3F
72418 +:1041C000A094000B8F8800388F8F0078910E00FE2E
72419 +:1041D00000CF6821A1AE000A8F910038A22700FD10
72420 +:1041E0008F8300708F900038AE0300540A0023DEE6
72421 +:1041F0008F8D007890B000FEA090000A8F8B003861
72422 +:104200008F8C0078916A00FD00CC1021A04A000B31
72423 +:104210008F840038A08700FE8F8600748F85003859
72424 +:10422000ACA600580A0023DE8F8D007894B80008F1
72425 +:10423000ACA40004030378210A002285A4AF00087F
72426 +:104240003C010801A02296D50A0021C6000000000A
72427 +:1042500090CF0009240D000431EE00FF11CDFD8543
72428 +:10426000240200013C010801A02296D50A0021C6C3
72429 +:1042700000000000080033440800334408003420E4
72430 +:10428000080033F4080033D8080033280800332826
72431 +:10429000080033280800334C8008010080080080A3
72432 +:1042A000800800005F865437E4AC62CC50103A4579
72433 +:1042B00036621985BF14C0E81BC27A1E84F4B55655
72434 +:1042C000094EA6FE7DDA01E7C04D748108005A74DC
72435 +:1042D00008005AB808005A5C08005A5C08005A5C8A
72436 +:1042E00008005A5C08005A7408005A5C08005A5CBE
72437 +:1042F00008005AC008005A5C080059D408005A5CEB
72438 +:1043000008005A5C08005AC008005A5C08005A5C51
72439 +:1043100008005A5C08005A5C08005A5C08005A5CA5
72440 +:1043200008005A5C08005A5C08005A5C08005A5C95
72441 +:1043300008005A9408005A5C08005A9408005A5C15
72442 +:1043400008005A5C08005A5C08005A9808005A9401
72443 +:1043500008005A5C08005A5C08005A5C08005A5C65
72444 +:1043600008005A5C08005A5C08005A5C08005A5C55
72445 +:1043700008005A5C08005A5C08005A5C08005A5C45
72446 +:1043800008005A5C08005A5C08005A5C08005A5C35
72447 +:1043900008005A5C08005A5C08005A5C08005A5C25
72448 +:1043A00008005A9808005A9808005A5C08005A9861
72449 +:1043B00008005A5C08005A5C08005A5C08005A5C05
72450 +:1043C00008005A5C08005A5C08005A5C08005A5CF5
72451 +:1043D00008005A5C08005A5C08005A5C08005A5CE5
72452 +:1043E00008005A5C08005A5C08005A5C08005A5CD5
72453 +:1043F00008005A5C08005A5C08005A5C08005A5CC5
72454 +:1044000008005A5C08005A5C08005A5C08005A5CB4
72455 +:1044100008005A5C08005A5C08005A5C08005A5CA4
72456 +:1044200008005A5C08005A5C08005A5C08005A5C94
72457 +:1044300008005A5C08005A5C08005A5C08005A5C84
72458 +:1044400008005A5C08005A5C08005A5C08005A5C74
72459 +:1044500008005A5C08005A5C08005A5C08005A5C64
72460 +:1044600008005A5C08005A5C08005A5C08005A5C54
72461 +:1044700008005A5C08005A5C08005A5C08005A5C44
72462 +:1044800008005A5C08005A5C08005A5C08005A5C34
72463 +:1044900008005A5C08005A5C08005A5C08005A5C24
72464 +:1044A00008005A5C08005A5C08005A5C08005A5C14
72465 +:1044B00008005A5C08005A5C08005A5C08005A5C04
72466 +:1044C00008005A5C08005A5C08005A5C08005ADC74
72467 +:1044D0000800782C08007A900800783808007628C0
72468 +:1044E00008007838080078C4080078380800762872
72469 +:1044F0000800762808007628080076280800762824
72470 +:104500000800762808007628080076280800762813
72471 +:1045100008007628080078580800784808007628AF
72472 +:1045200008007628080076280800762808007628F3
72473 +:1045300008007628080076280800762808007628E3
72474 +:1045400008007628080076280800762808007848B1
72475 +:10455000080082FC08008188080082C40800818865
72476 +:104560000800829408008070080081880800818813
72477 +:1045700008008188080081880800818808008188F7
72478 +:1045800008008188080081880800818808008188E7
72479 +:104590000800818808008188080081B008008D34F7
72480 +:1045A00008008E9008008E70080088D808008D4C96
72481 +:1045B0000A00012400000000000000000000000DBF
72482 +:1045C000747061362E322E31620000000602010145
72483 +:1045D00000000000000000000000000000000000DB
72484 +:1045E00000000000000000000000000000000000CB
72485 +:1045F00000000000000000000000000000000000BB
72486 +:1046000000000000000000000000000000000000AA
72487 +:10461000000000000000000000000000000000009A
72488 +:10462000000000000000000000000000000000008A
72489 +:10463000000000000000000000000000000000007A
72490 +:104640000000000010000003000000000000000D4A
72491 +:104650000000000D3C020800244217203C03080023
72492 +:1046600024632A10AC4000000043202B1480FFFD7F
72493 +:10467000244200043C1D080037BD2FFC03A0F0219C
72494 +:104680003C100800261004903C1C0800279C1720B2
72495 +:104690000E000262000000000000000D2402FF80F6
72496 +:1046A00027BDFFE000821024AFB00010AF42002011
72497 +:1046B000AFBF0018AFB10014936500043084007FD1
72498 +:1046C000034418213C0200080062182130A5002094
72499 +:1046D000036080213C080111277B000814A0000220
72500 +:1046E0002466005C2466005892020004974301048B
72501 +:1046F000920400043047000F3063FFFF3084004015
72502 +:10470000006728231080000900004821920200055C
72503 +:1047100030420004104000050000000010A000031B
72504 +:104720000000000024A5FFFC2409000492020005FB
72505 +:1047300030420004104000120000000010A00010E1
72506 +:10474000000000009602000200A72021010440257D
72507 +:104750002442FFFEA7421016920300042402FF80A9
72508 +:1047600000431024304200FF104000033C020400CC
72509 +:104770000A000174010240258CC20000AF421018EB
72510 +:104780008F4201780440FFFE2402000AA742014044
72511 +:1047900096020002240400093042000700021023A0
72512 +:1047A00030420007A7420142960200022442FFFE67
72513 +:1047B000A7420144A740014697420104A74201488D
72514 +:1047C0008F420108304200205040000124040001C3
72515 +:1047D00092020004304200101440000234830010A2
72516 +:1047E00000801821A743014A0000000000000000DB
72517 +:1047F0000000000000000000AF48100000000000B2
72518 +:104800000000000000000000000000008F421000C7
72519 +:104810000441FFFE3102FFFF1040000700000000CE
72520 +:1048200092020004304200401440000300000000E7
72521 +:104830008F421018ACC20000960200063042FFFF03
72522 +:10484000244200020002104300021040036288214B
72523 +:10485000962200001120000D3044FFFF00A7102118
72524 +:104860008F8300388F45101C0002108200021080D8
72525 +:1048700000431021AC45000030A6FFFF0E00058D5F
72526 +:1048800000052C0200402021A62200009203000413
72527 +:104890002402FF8000431024304200FF1040001F1C
72528 +:1048A0000000000092020005304200021040001B90
72529 +:1048B000000000009742100C2442FFFEA742101691
72530 +:1048C000000000003C02040034420030AF421000FF
72531 +:1048D00000000000000000000000000000000000D8
72532 +:1048E0008F4210000441FFFE000000009742100CB0
72533 +:1048F0008F45101C3042FFFF24420030000210821E
72534 +:1049000000021080005B1021AC45000030A6FFFFC4
72535 +:104910000E00058D00052C02A62200009604000260
72536 +:10492000248400080E0001E93084FFFF974401044D
72537 +:104930000E0001F73084FFFF8FBF00188FB1001405
72538 +:104940008FB000103C02100027BD002003E00008DB
72539 +:10495000AF4201783084FFFF308200078F8500244A
72540 +:1049600010400002248300073064FFF800A41021E7
72541 +:1049700030421FFF03421821247B4000AF850028EE
72542 +:10498000AF82002403E00008AF4200843084FFFFC0
72543 +:104990003082000F8F85002C8F860034104000027B
72544 +:1049A0002483000F3064FFF000A410210046182B70
72545 +:1049B000AF8500300046202314600002AF82002C37
72546 +:1049C000AF84002C8F82002C340480000342182115
72547 +:1049D00000641821AF83003803E00008AF42008074
72548 +:1049E0008F820014104000088F8200048F82FFDC49
72549 +:1049F000144000058F8200043C02FFBF3442FFFFD9
72550 +:104A0000008220248F82000430430006240200022A
72551 +:104A10001062000F3C0201012C62000350400005AF
72552 +:104A2000240200041060000F3C0200010A00023062
72553 +:104A30000000000010620005240200061462000C51
72554 +:104A40003C0201110A000229008210253C020011DB
72555 +:104A500000821025AF421000240200010A0002303B
72556 +:104A6000AF82000C00821025AF421000AF80000C16
72557 +:104A700000000000000000000000000003E000084B
72558 +:104A8000000000008F82000C1040000400000000B5
72559 +:104A90008F4210000441FFFE0000000003E0000808
72560 +:104AA000000000008F8200102443F800000231C291
72561 +:104AB00024C2FFF02C6303011060000300021042C7
72562 +:104AC0000A000257AC8200008F85001800C5102B29
72563 +:104AD0001440000B0000182100C5102324470001DA
72564 +:104AE0008F82001C00A210212442FFFF0046102BE1
72565 +:104AF000544000042402FFFF0A000257AC87000064
72566 +:104B00002402FFFF0A000260AC8200008C820000D9
72567 +:104B10000002194000621821000318800062182169
72568 +:104B2000000318803C0208002442175C0062182130
72569 +:104B300003E000080060102127BDFFD8AFBF0020B0
72570 +:104B4000AFB1001CAFB000183C0460088C8250006C
72571 +:104B50002403FF7F3C066000004310243442380CDD
72572 +:104B6000AC8250008CC24C1C3C1A80000002160221
72573 +:104B70003042000F10400007AF82001C8CC34C1C59
72574 +:104B80003C02001F3442FC0000621824000319C2DA
72575 +:104B9000AF8300188F420008275B400034420001B9
72576 +:104BA000AF420008AF8000243C02601CAF40008090
72577 +:104BB000AF4000848C4500088CC308083402800094
72578 +:104BC000034220212402FFF0006218243C020080EE
72579 +:104BD0003C010800AC2204203C025709AF84003895
72580 +:104BE00014620004AF850034240200010A0002921E
72581 +:104BF000AF820014AF8000148F42000038420001E1
72582 +:104C0000304200011440FFFC8F8200141040001657
72583 +:104C10000000000097420104104000058F8300004F
72584 +:104C2000146000072462FFFF0A0002A72C62000A3A
72585 +:104C30002C620010504000048F83000024620001A9
72586 +:104C4000AF8200008F8300002C62000A1440000332
72587 +:104C50002C6200070A0002AEAF80FFDC10400002A9
72588 +:104C600024020001AF82FFDC8F4301088F44010062
72589 +:104C700030622000AF83000410400008AF840010B1
72590 +:104C80003C0208008C42042C244200013C01080034
72591 +:104C9000AC22042C0A00058A3C0240003065020068
72592 +:104CA00014A0000324020F001482026024020D00ED
72593 +:104CB00097420104104002C83C02400030624000AC
72594 +:104CC000144000AD8F8200388C4400088F42017878
72595 +:104CD0000440FFFE24020800AF42017824020008CD
72596 +:104CE000A7420140A7400142974201048F8400047B
72597 +:104CF0003051FFFF30820001104000070220802168
72598 +:104D00002623FFFE240200023070FFFFA742014667
72599 +:104D10000A0002DBA7430148A74001463C02080005
72600 +:104D20008C42043C1440000D8F8300103082002020
72601 +:104D30001440000224030009240300010060202124
72602 +:104D40008F830010240209005062000134840004A3
72603 +:104D5000A744014A0A0002F60000000024020F00E6
72604 +:104D60001462000530820020144000062403000D68
72605 +:104D70000A0002F524030005144000022403000980
72606 +:104D800024030001A743014A3C0208008C4204208E
72607 +:104D90003C0400480E00020C004420250E000235A1
72608 +:104DA000000000008F82000C1040003E0000000058
72609 +:104DB0008F4210003C0300200043102410400039B3
72610 +:104DC0008F820004304200021040003600000000D4
72611 +:104DD000974210141440003300000000974210085E
72612 +:104DE0008F8800383042FFFF2442000600021882FC
72613 +:104DF0000003388000E83021304300018CC40000FB
72614 +:104E000010600004304200030000000D0A00033768
72615 +:104E100000E81021544000103084FFFF3C05FFFFE4
72616 +:104E200000852024008518260003182B0004102B71
72617 +:104E300000431024104000050000000000000000A6
72618 +:104E40000000000D00000000240002228CC20000BF
72619 +:104E50000A000336004520253883FFFF0003182B86
72620 +:104E60000004102B00431024104000050000000037
72621 +:104E7000000000000000000D000000002400022BD4
72622 +:104E80008CC200003444FFFF00E81021AC44000055
72623 +:104E90003C0208008C420430244200013C0108001E
72624 +:104EA000AC2204308F6200008F840038AF8200088B
72625 +:104EB0008C8300003402FFFF1462000F00001021F9
72626 +:104EC0003C0508008CA504543C0408008C84045064
72627 +:104ED00000B0282100B0302B008220210086202144
72628 +:104EE0003C010800AC2504543C010800AC240450EB
72629 +:104EF0000A000580240400088C8200003042010072
72630 +:104F00001040000F000010213C0508008CA5044C47
72631 +:104F10003C0408008C84044800B0282100B0302BE9
72632 +:104F200000822021008620213C010800AC25044C91
72633 +:104F30003C010800AC2404480A0005802404000851
72634 +:104F40003C0508008CA504443C0408008C84044003
72635 +:104F500000B0282100B0302B0082202100862021C3
72636 +:104F60003C010800AC2504443C010800AC2404408A
72637 +:104F70000A000580240400088F6200088F62000088
72638 +:104F800000021602304300F02402003010620005D7
72639 +:104F900024020040106200E08F8200200A00058891
72640 +:104FA0002442000114A000050000000000000000E1
72641 +:104FB0000000000D00000000240002568F4201781E
72642 +:104FC0000440FFFE000000000E00023D27A4001078
72643 +:104FD0001440000500408021000000000000000D8A
72644 +:104FE000000000002400025D8E0200001040000559
72645 +:104FF00000000000000000000000000D00000000A4
72646 +:10500000240002608F62000C0443000324020001AC
72647 +:105010000A00042EAE000000AE0200008F820038AD
72648 +:105020008C480008A20000078F65000C8F64000404
72649 +:1050300030A3FFFF0004240200852023308200FFFC
72650 +:105040000043102124420005000230832CC200815D
72651 +:10505000A605000A14400005A20400040000000098
72652 +:105060000000000D00000000240002788F85003849
72653 +:105070000E0005AB260400148F6200048F43010864
72654 +:10508000A60200083C02100000621824106000080C
72655 +:105090000000000097420104920300072442FFEC45
72656 +:1050A000346300023045FFFF0A0003C3A203000778
72657 +:1050B000974201042442FFF03045FFFF96060008A6
72658 +:1050C0002CC200135440000592030007920200070F
72659 +:1050D00034420001A20200079203000724020001EB
72660 +:1050E00010620005240200031062000B8F8200385A
72661 +:1050F0000A0003E030C6FFFF8F8200383C04FFFF48
72662 +:105100008C43000C0064182400651825AC43000C87
72663 +:105110000A0003E030C6FFFF3C04FFFF8C43001091
72664 +:105120000064182400651825AC43001030C6FFFF4A
72665 +:1051300024C2000200021083A20200058F830038FF
72666 +:10514000304200FF00021080004328218CA800009C
72667 +:105150008CA2000024030004000217021443001272
72668 +:1051600000000000974201043C03FFFF01031824E4
72669 +:105170003042FFFF004610232442FFFE006240251C
72670 +:10518000ACA8000092030005306200FF000210800E
72671 +:1051900000501021904200143042000F00431021B3
72672 +:1051A0000A000415A20200068CA400049742010420
72673 +:1051B0009603000A3088FFFF3042FFFF00461023AD
72674 +:1051C0002442FFD60002140001024025ACA80004CE
72675 +:1051D000920200079204000524630028000318834C
72676 +:1051E0000064182134420004A2030006A202000752
72677 +:1051F0008F8200042403FFFB34420002004310248A
72678 +:10520000AF820004920300068F87003800031880E5
72679 +:10521000007010218C4400203C02FFF63442FFFF56
72680 +:105220000082402400671821AE04000CAC68000C1A
72681 +:10523000920500063C03FF7F8E02000C00052880CB
72682 +:1052400000B020213463FFFF01033024948800263E
72683 +:1052500000A7282100431024AE02000CAC860020D9
72684 +:10526000AC880024ACA8001024020010A742014022
72685 +:1052700024020002A7400142A7400144A742014680
72686 +:10528000974201043C0400082442FFFEA742014863
72687 +:10529000240200010E00020CA742014A9603000AF4
72688 +:1052A0009202000400431021244200023042000711
72689 +:1052B00000021023304200070E000235AE0200103B
72690 +:1052C0008F6200003C0308008C6304442404001037
72691 +:1052D000AF820008974201043042FFFF2442FFFEE4
72692 +:1052E00000403821000237C33C0208008C420440D1
72693 +:1052F000006718210067282B004610210045102167
72694 +:105300003C010800AC2304443C010800AC220440EA
72695 +:105310000A0005150000000014A0000500000000B0
72696 +:10532000000000000000000D000000002400030A3F
72697 +:105330008F4201780440FFFE000000000E00023D95
72698 +:1053400027A4001414400005004080210000000044
72699 +:105350000000000D00000000240003118E02000078
72700 +:105360005440000692020007000000000000000DFB
72701 +:10537000000000002400031C9202000730420004D9
72702 +:10538000104000058F8200042403FFFB344200021A
72703 +:1053900000431024AF8200048F620004044300081D
72704 +:1053A00092020007920200068E03000CAE0000007D
72705 +:1053B0000002108000501021AC4300209202000730
72706 +:1053C00030420004544000099602000A920200058F
72707 +:1053D0003C03000100021080005010218C46001890
72708 +:1053E00000C33021AC4600189602000A9206000461
72709 +:1053F000277100080220202100C2302124C60005A8
72710 +:10540000260500140E0005AB00063082920400064B
72711 +:105410008F6500043C027FFF000420800091202162
72712 +:105420008C8300043442FFFF00A228240065182169
72713 +:10543000AC8300049202000792040005920300046A
72714 +:10544000304200041040001496070008308400FF2A
72715 +:1054500000042080009120218C86000497420104E2
72716 +:105460009605000A306300FF3042FFFF0043102121
72717 +:105470000045102130E3FFFF004310232442FFD8F2
72718 +:1054800030C6FFFF0002140000C23025AC860004C5
72719 +:105490000A0004C992030007308500FF0005288038
72720 +:1054A00000B128218CA4000097420104306300FF62
72721 +:1054B0003042FFFF00431021004710233C03FFFF51
72722 +:1054C000008320243042FFFF00822025ACA400008E
72723 +:1054D0009203000724020001106200060000000091
72724 +:1054E0002402000310620011000000000A0004EC16
72725 +:1054F0008E03001097420104920300049605000AEF
72726 +:105500008E24000C00431021004510212442FFF29C
72727 +:105510003C03FFFF008320243042FFFF0082202550
72728 +:10552000AE24000C0A0004EC8E0300109742010424
72729 +:10553000920300049605000A8E24001000431021F7
72730 +:10554000004510212442FFEE3C03FFFF008320248E
72731 +:105550003042FFFF00822025AE2400108E03001091
72732 +:105560002402000AA7420140A74301429603000A11
72733 +:10557000920200043C04004000431021A742014471
72734 +:10558000A740014697420104A742014824020001B6
72735 +:105590000E00020CA742014A0E0002350000000076
72736 +:1055A0008F6200009203000400002021AF820008F7
72737 +:1055B000974201049606000A3042FFFF006218215C
72738 +:1055C000006028213C0308008C6304443C0208006E
72739 +:1055D0008C42044000651821004410210065382BDE
72740 +:1055E000004710213C010800AC2304443C010800A2
72741 +:1055F000AC22044092040004008620212484000A86
72742 +:105600003084FFFF0E0001E9000000009744010410
72743 +:105610003084FFFF0E0001F7000000003C02100084
72744 +:10562000AF4201780A0005878F820020148200278C
72745 +:105630003062000697420104104000673C024000BF
72746 +:105640003062400010400005000000000000000033
72747 +:105650000000000D00000000240004208F420178AB
72748 +:105660000440FFFE24020800AF4201782402000833
72749 +:10567000A7420140A74001428F82000497430104E2
72750 +:1056800030420001104000073070FFFF2603FFFE8C
72751 +:1056900024020002A7420146A74301480A00053F31
72752 +:1056A0002402000DA74001462402000DA742014A32
72753 +:1056B0008F62000024040008AF8200080E0001E998
72754 +:1056C000000000000A0005190200202110400042DD
72755 +:1056D0003C02400093620000304300F024020010BE
72756 +:1056E0001062000524020070106200358F820020D5
72757 +:1056F0000A000588244200018F62000097430104DC
72758 +:105700003050FFFF3071FFFF8F4201780440FFFEF1
72759 +:105710003202000700021023304200072403000A6F
72760 +:105720002604FFFEA7430140A7420142A7440144CB
72761 +:10573000A7400146A75101488F420108304200208E
72762 +:10574000144000022403000924030001A743014A76
72763 +:105750000E00020C3C0400400E0002350000000068
72764 +:105760003C0708008CE70444021110212442FFFE8C
72765 +:105770003C0608008CC604400040182100E3382194
72766 +:10578000000010218F65000000E3402B00C2302193
72767 +:105790002604000800C830213084FFFFAF850008D0
72768 +:1057A0003C010800AC2704443C010800AC2604403E
72769 +:1057B0000E0001E9000000000A0005190220202166
72770 +:1057C0000E00013B000000008F82002024420001F7
72771 +:1057D000AF8200203C024000AF4201380A00029232
72772 +:1057E000000000003084FFFF30C6FFFF00052C00E2
72773 +:1057F00000A628253882FFFF004510210045282BF0
72774 +:105800000045102100021C023042FFFF004310211E
72775 +:1058100000021C023042FFFF004310213842FFFF0C
72776 +:1058200003E000083042FFFF3084FFFF30A5FFFF98
72777 +:1058300000001821108000070000000030820001E5
72778 +:105840001040000200042042006518210A0005A152
72779 +:105850000005284003E000080060102110C0000689
72780 +:1058600024C6FFFF8CA2000024A50004AC82000027
72781 +:105870000A0005AB2484000403E0000800000000D7
72782 +:1058800010A0000824A3FFFFAC8600000000000069
72783 +:10589000000000002402FFFF2463FFFF1462FFFAF0
72784 +:1058A0002484000403E00008000000000000000160
72785 +:1058B0000A00002A00000000000000000000000DA7
72786 +:1058C000747870362E322E3162000000060201001C
72787 +:1058D00000000000000001360000EA600000000047
72788 +:1058E00000000000000000000000000000000000B8
72789 +:1058F00000000000000000000000000000000000A8
72790 +:105900000000000000000000000000000000000097
72791 +:105910000000001600000000000000000000000071
72792 +:105920000000000000000000000000000000000077
72793 +:105930000000000000000000000000000000000067
72794 +:1059400000000000000000000000138800000000BC
72795 +:10595000000005DC00000000000000001000000353
72796 +:10596000000000000000000D0000000D3C020800D7
72797 +:1059700024423D683C0308002463401CAC40000006
72798 +:105980000043202B1480FFFD244200043C1D08002E
72799 +:1059900037BD7FFC03A0F0213C100800261000A8B2
72800 +:1059A0003C1C0800279C3D680E00044E00000000CF
72801 +:1059B0000000000D27BDFFB4AFA10000AFA200049E
72802 +:1059C000AFA30008AFA4000CAFA50010AFA6001451
72803 +:1059D000AFA70018AFA8001CAFA90020AFAA0024F1
72804 +:1059E000AFAB0028AFAC002CAFAD0030AFAE003491
72805 +:1059F000AFAF0038AFB8003CAFB90040AFBC004417
72806 +:105A0000AFBF00480E000591000000008FBF0048A6
72807 +:105A10008FBC00448FB900408FB8003C8FAF003876
72808 +:105A20008FAE00348FAD00308FAC002C8FAB0028D0
72809 +:105A30008FAA00248FA900208FA8001C8FA7001810
72810 +:105A40008FA600148FA500108FA4000C8FA3000850
72811 +:105A50008FA200048FA1000027BD004C3C1B6004F6
72812 +:105A60008F7A5030377B502803400008AF7A00000F
72813 +:105A70008F86003C3C0390003C0280000086282575
72814 +:105A800000A32025AC4400203C0380008C6700204C
72815 +:105A900004E0FFFE0000000003E00008000000003A
72816 +:105AA0000A000070240400018F85003C3C04800043
72817 +:105AB0003483000100A3102503E00008AC8200201D
72818 +:105AC00003E00008000010213084FFFF30A5FFFF35
72819 +:105AD00010800007000018213082000110400002F1
72820 +:105AE00000042042006518211480FFFB00052840B7
72821 +:105AF00003E000080060102110C000070000000053
72822 +:105B00008CA2000024C6FFFF24A50004AC82000084
72823 +:105B100014C0FFFB2484000403E000080000000020
72824 +:105B200010A0000824A3FFFFAC86000000000000C6
72825 +:105B3000000000002402FFFF2463FFFF1462FFFA4D
72826 +:105B40002484000403E000080000000090AA003153
72827 +:105B50008FAB00108CAC00403C0300FF8D6800044C
72828 +:105B6000AD6C00208CAD004400E060213462FFFF8A
72829 +:105B7000AD6D00248CA700483C09FF000109C0243A
72830 +:105B8000AD6700288CAE004C0182C824031978252B
72831 +:105B9000AD6F0004AD6E002C8CAD0038314A00FFB3
72832 +:105BA000AD6D001C94A900323128FFFFAD680010D4
72833 +:105BB00090A70030A5600002A1600004A16700006A
72834 +:105BC00090A30032306200FF0002198210600005CD
72835 +:105BD000240500011065000E0000000003E000082D
72836 +:105BE000A16A00018CD80028354A0080AD780018E1
72837 +:105BF0008CCF0014AD6F00148CCE0030AD6E000859
72838 +:105C00008CC4002CA16A000103E00008AD64000C04
72839 +:105C10008CCD001CAD6D00188CC90014AD6900144A
72840 +:105C20008CC80024AD6800088CC70020AD67000C4C
72841 +:105C30008CC200148C8300700043C82B1320000713
72842 +:105C4000000000008CC20014144CFFE400000000AF
72843 +:105C5000354A008003E00008A16A00018C820070D0
72844 +:105C60000A0000E6000000009089003027BDFFF820
72845 +:105C70008FA8001CA3A900008FA300003C0DFF808B
72846 +:105C800035A2FFFF8CAC002C00625824AFAB0000A3
72847 +:105C9000A100000400C05821A7A000028D06000446
72848 +:105CA00000A048210167C8218FA500000080502175
72849 +:105CB0003C18FF7F032C20263C0E00FF2C8C00019B
72850 +:105CC000370FFFFF35CDFFFF3C02FF0000AFC824B8
72851 +:105CD00000EDC02400C27824000C1DC003236825F9
72852 +:105CE00001F87025AD0D0000AD0E00048D240024D8
72853 +:105CF000AFAD0000AD0400088D2C00202404FFFF90
72854 +:105D0000AD0C000C9547003230E6FFFFAD060010E9
72855 +:105D10009145004830A200FF000219C25060000106
72856 +:105D20008D240034AD0400148D4700388FAA00186C
72857 +:105D300027BD0008AD0B0028AD0A0024AD07001CEC
72858 +:105D4000AD00002CAD00001803E00008AD000020FD
72859 +:105D500027BDFFE0AFB20018AFB10014AFB0001024
72860 +:105D6000AFBF001C9098003000C088213C0D00FFA0
72861 +:105D7000330F007FA0CF0000908E003135ACFFFFC5
72862 +:105D80003C0AFF00A0CE000194A6001EA220000441
72863 +:105D90008CAB00148E29000400A08021016C282403
72864 +:105DA000012A40240080902101052025A62600021A
72865 +:105DB000AE24000426050020262400080E000092D0
72866 +:105DC00024060002924700302605002826240014ED
72867 +:105DD00000071E000003160324060004044000030D
72868 +:105DE0002403FFFF965900323323FFFF0E00009279
72869 +:105DF000AE230010262400248FBF001C8FB2001891
72870 +:105E00008FB100148FB00010240500030000302172
72871 +:105E10000A00009C27BD002027BDFFD8AFB1001CA1
72872 +:105E2000AFB00018AFBF002090A9003024020001DD
72873 +:105E300000E050213123003F00A040218FB00040FE
72874 +:105E40000080882100C04821106200148FA700380C
72875 +:105E5000240B000500A0202100C02821106B001396
72876 +:105E6000020030210E000128000000009225007C75
72877 +:105E700030A400021080000326030030AE00003082
72878 +:105E8000260300348FBF00208FB1001C8FB0001894
72879 +:105E90000060102103E0000827BD00280E0000A7C5
72880 +:105EA000AFB000100A00016F000000008FA3003C9B
72881 +:105EB000010020210120282101403021AFA3001042
72882 +:105EC0000E0000EEAFB000140A00016F00000000E9
72883 +:105ED0003C06800034C20E008C4400108F850044C4
72884 +:105EE000ACA400208C43001803E00008ACA30024FD
72885 +:105EF0003C06800034C20E008C4400148F850044A0
72886 +:105F0000ACA400208C43001C03E00008ACA30024D8
72887 +:105F10009382000C1040001B2483000F2404FFF028
72888 +:105F20000064382410E00019978B00109784000E4D
72889 +:105F30009389000D3C0A601C0A0001AC01644023F7
72890 +:105F400001037021006428231126000231C2FFFFE3
72891 +:105F500030A2FFFF0047302B50C0000E00E4482164
72892 +:105F60008D4D000C31A3FFFF00036400000C2C03D7
72893 +:105F700004A1FFF30000302130637FFF0A0001A479
72894 +:105F80002406000103E00008000000009784000ED2
72895 +:105F900000E448213123FFFF3168FFFF0068382B00
72896 +:105FA00054E0FFF8A783000E938A000D114000050E
72897 +:105FB000240F0001006BC023A380000D03E0000844
72898 +:105FC000A798000E006BC023A38F000D03E000080C
72899 +:105FD000A798000E03E000080000000027BDFFE8BE
72900 +:105FE000AFB000103C10800036030140308BFFFF43
72901 +:105FF00093AA002BAFBF0014A46B000436040E005C
72902 +:106000009488001630C600FF8FA90030A4680006EF
72903 +:10601000AC650008A0660012A46A001AAC670020F4
72904 +:106020008FA5002CA4690018012020210E000198E2
72905 +:10603000AC6500143C021000AE0201788FBF001462
72906 +:106040008FB0001003E0000827BD00188F85000006
72907 +:106050002484000727BDFFF83084FFF83C06800049
72908 +:1060600094CB008A316AFFFFAFAA00008FA900001D
72909 +:10607000012540232507FFFF30E31FFF0064102B9D
72910 +:106080001440FFF700056882000D288034CC4000E2
72911 +:1060900000AC102103E0000827BD00088F8200003B
72912 +:1060A0002486000730C5FFF800A2182130641FFFC6
72913 +:1060B00003E00008AF8400008F87003C8F84004419
72914 +:1060C00027BDFFB0AFB70044AFB40038AFB1002C6C
72915 +:1060D000AFBF0048AFB60040AFB5003CAFB300342F
72916 +:1060E000AFB20030AFB000283C0B80008C8600249B
72917 +:1060F000AD6700808C8A002035670E00356901008D
72918 +:10610000ACEA00108C8800248D2500040000B82122
72919 +:10611000ACE800188CE3001000A688230000A02142
72920 +:10612000ACE300148CE20018ACE2001C122000FE6C
72921 +:1061300000E0B021936C0008118000F40000000022
72922 +:10614000976F001031EEFFFF022E682B15A000EFB5
72923 +:1061500000000000977200103250FFFFAED0000028
72924 +:106160003C0380008C740000329300081260FFFD35
72925 +:106170000000000096D800088EC700043305FFFF1A
72926 +:1061800030B5000112A000E4000000000000000D86
72927 +:1061900030BFA0402419004013F9011B30B4A00007
72928 +:1061A000128000DF000000009373000812600008F6
72929 +:1061B00000000000976D001031ACFFFF00EC202BB9
72930 +:1061C0001080000330AE004011C000D50000000078
72931 +:1061D000A7850040AF87003893630008022028217C
72932 +:1061E000AFB10020146000F527B40020AF60000CB0
72933 +:1061F000978F004031F14000162000022403001662
72934 +:106200002403000E24054007A363000AAF650014B1
72935 +:10621000938A00428F70001431550001001512401E
72936 +:1062200002024825AF690014979F00408F78001440
72937 +:1062300033F9001003194025AF680014979200400D
72938 +:106240003247000810E0016E000000008F67001464
72939 +:106250003C1210003C11800000F27825AF6F001452
72940 +:1062600036230E00946E000A3C0D81002406000EB9
72941 +:1062700031CCFFFF018D2025AF640004A36600022E
72942 +:106280009373000A3406FFFC266B0004A36B000A1C
72943 +:1062900097980040330820001100015F00000000C3
72944 +:1062A0003C05800034A90E00979900409538000CF9
72945 +:1062B00097870040001940423312C00031030003A9
72946 +:1062C00000127B0330F11000006F6825001172038B
72947 +:1062D00001AE6025000C20C0A76400129793004017
72948 +:1062E000936A000A001359823175003C02AA1021FA
72949 +:1062F0002450003CA3700009953F000C33F93FFF88
72950 +:10630000A779001097700012936900090130F821F5
72951 +:1063100027E5000230B900070019C0233308000741
72952 +:10632000A368000B9371000997720012976F001019
72953 +:10633000322700FF8F910038978D004000F218211E
72954 +:10634000006F702101C6602131A6004010C0000519
72955 +:106350003185FFFF00B1102B3C1280001040001768
72956 +:10636000000098210225A82B56A0013E8FA50020F1
72957 +:106370003C048000348A0E008D5300143C068000DB
72958 +:10638000AD5300108D4B001CAD4B0018AD45000007
72959 +:106390008CCD000031AC00081180FFFD34CE0E0022
72960 +:1063A00095C3000800A0882100009021A783004029
72961 +:1063B0008DC6000424130001AF860038976F0010CB
72962 +:1063C00031F5FFFF8E9F000003F1282310A0011F6D
72963 +:1063D000AE85000093620008144000DD000000005C
72964 +:1063E0000E0001E7240400108F900048004028218F
72965 +:1063F0003C023200320600FF000654000142F8253C
72966 +:1064000026090001AF890048ACBF0000937900095C
72967 +:1064100097780012936F000A332800FF3303FFFFC1
72968 +:106420000103382100076C0031EE00FF01AE60254A
72969 +:10643000ACAC00048F840048978B0040316A200088
72970 +:106440001140010AACA4000897640012308BFFFFD2
72971 +:1064500006400108ACAB000C978E004031C5000827
72972 +:1064600014A0000226280006262800023C1F8000F7
72973 +:1064700037E70E0094F900148CE5001C8F670004C8
72974 +:10648000937800023324FFFF330300FFAFA3001013
72975 +:106490008F6F0014AFA800180E0001CBAFAF00142F
72976 +:1064A000240400100E0001FB000000008E9200008A
72977 +:1064B00016400005000000008F7800142403FFBF81
72978 +:1064C0000303A024AF7400148F67000C00F5C821EB
72979 +:1064D000AF79000C9375000816A0000800000000BA
72980 +:1064E00012600006000000008F6800143C0AEFFFF5
72981 +:1064F0003549FFFE0109F824AF7F0014A37300089B
72982 +:106500008FA500200A00034F02202021AED10000F9
72983 +:106510000A00022D3C03800014E0FF1E30BFA040A3
72984 +:106520000E0001900000A0212E9100010237B0253D
72985 +:1065300012C000188FBF00488F87003C24170F003F
72986 +:1065400010F700D43C0680008CD901780720FFFEAC
72987 +:10655000241F0F0010FF00F634CA0E008D560014E1
72988 +:1065600034C7014024080240ACF600048D49001CE9
72989 +:106570003C141000ACE90008A0E00012A4E0001AEE
72990 +:10658000ACE00020A4E00018ACE80014ACD4017822
72991 +:106590008FBF00488FB700448FB600408FB5003CD6
72992 +:1065A0008FB400388FB300348FB200308FB1002C1D
72993 +:1065B0008FB0002803E0000827BD00508F910038FD
72994 +:1065C000978800403C1280000220A821310700403B
72995 +:1065D00014E0FF7C00009821977900108F9200381A
72996 +:1065E0003338FFFF131200A8000020210080A021F3
72997 +:1065F000108000F300A088211620FECE00000000CD
72998 +:106600000A00031F2E9100013C0380008C62017878
72999 +:106610000440FFFE240808008F860000AC68017863
73000 +:106620003C038000946D008A31ACFFFF0186582343
73001 +:10663000256AFFFF31441FFF2C8900081520FFF950
73002 +:10664000000000008F8F0048347040008F83003CB2
73003 +:1066500000E0A021240E0F0025E70001AF870048CD
73004 +:1066600000D03021023488233C08800031F500FF3F
73005 +:10667000106E0005240700019398004233130001B7
73006 +:106680000013924036470001001524003C0A010027
73007 +:10669000008A4825ACC900008F82004830BF003610
73008 +:1066A00030B90008ACC200041320009900FF9825FF
73009 +:1066B00035120E009650000A8F8700003C0F8100B3
73010 +:1066C0003203FFFF24ED000835060140006F60250E
73011 +:1066D0003C0E100031AB1FFF269200062405000E71
73012 +:1066E000ACCC0020026E9825A4C5001AAF8B000028
73013 +:1066F000A4D20018162000083C1080008F89003CAE
73014 +:1067000024020F00512200022417000136730040BA
73015 +:106710000E0001883C10800036060E008CCB001461
73016 +:10672000360A014002402021AD4B00048CC5001CFC
73017 +:10673000AD450008A1550012AD5300140E0001989C
73018 +:106740003C151000AE1501780A000352000000004D
73019 +:10675000936F0009976E0012936D000B31E500FFF7
73020 +:1067600000AE202131AC00FF008C80212602000AFF
73021 +:106770003050FFFF0E0001E7020020218F86004805
73022 +:106780003C0341003C05800024CB0001AF8B004856
73023 +:10679000936A00099769001230C600FF315F00FF5D
73024 +:1067A0003128FFFF03E8382124F900020006C40065
73025 +:1067B0000319782501E37025AC4E00008F6D000CA5
73026 +:1067C00034A40E00948B001401B26025AC4C00047C
73027 +:1067D0008C85001C8F670004936A00023164FFFF00
73028 +:1067E000314900FFAFA900108F680014AFB1001845
73029 +:1067F0000E0001CBAFA800140A0002FD0200202108
73030 +:10680000AF600004A36000029798004033082000A6
73031 +:106810001500FEA300003021A760001297840040FD
73032 +:10682000936B000A3C10800030931F0000135183CB
73033 +:10683000014BA82126A20028A362000936090E00F8
73034 +:10684000953F000C0A000295A77F00108F7000147E
73035 +:10685000360900400E000188AF6900140A0002C921
73036 +:10686000000000000A00034F000020210641FEFA4C
73037 +:10687000ACA0000C8CAC000C3C0D8000018D902570
73038 +:106880000A0002EAACB2000C000090210A0002C526
73039 +:1068900024130001128000073C028000344B0E00DC
73040 +:1068A0009566000830D300401260004900000000E7
73041 +:1068B0003C0680008CD001780600FFFE34C50E0037
73042 +:1068C00094B500103C03050034CC014032B8FFFF02
73043 +:1068D00003039025AD92000C8CAF0014240D200012
73044 +:1068E0003C041000AD8F00048CAE001CAD8E00087F
73045 +:1068F000A1800012A580001AAD800020A58000189C
73046 +:10690000AD8D0014ACC401780A0003263C0680005B
73047 +:106910008F9F0000351801402692000227F90008D9
73048 +:1069200033281FFFA71200180A000391AF88000048
73049 +:106930003C02800034450140ACA0000C1280001BDA
73050 +:1069400034530E0034510E008E370010ACB70004E3
73051 +:106950008E2400183C0B8000ACA400083570014068
73052 +:1069600024040040A20000128FBF0048A600001AB5
73053 +:106970008FB70044AE0000208FB60040A60000187C
73054 +:106980008FB5003CAE0400148FB400388FB30034D0
73055 +:106990008FB200308FB1002C8FB000283C02100065
73056 +:1069A00027BD005003E00008AD6201788E66001438
73057 +:1069B000ACA600048E64001C0A00042A3C0B800074
73058 +:1069C0000E0001902E9100010A0003200237B0252D
73059 +:1069D000000000000000000D00000000240003691A
73060 +:1069E0000A0004013C06800027BDFFD8AFBF00208D
73061 +:1069F0003C0980003C1F20FFAFB200183C0760003C
73062 +:106A000035320E002402001037F9FFFDACE23008E9
73063 +:106A1000AFB3001CAFB10014AFB00010AE5900000E
73064 +:106A20000000000000000000000000000000000066
73065 +:106A3000000000003C1800FF3713FFFDAE530000BC
73066 +:106A40003C0B60048D7050002411FF7F3C0E00024F
73067 +:106A50000211782435EC380C35CD0109ACED4C1819
73068 +:106A6000240A0009AD6C50008CE80438AD2A0008F7
73069 +:106A7000AD2000148CE54C1C3106FFFF38C42F718B
73070 +:106A800000051E023062000F2486C0B310400007CC
73071 +:106A9000AF8200088CE54C1C3C09001F3528FC0027
73072 +:106AA00000A81824000321C2AF8400048CF1080858
73073 +:106AB0003C0F57092412F0000232702435F0001008
73074 +:106AC00001D0602601CF68262DAA00012D8B000180
73075 +:106AD000014B382550E00009A380000C3C1F601CCE
73076 +:106AE0008FF8000824190001A399000C33137C00CF
73077 +:106AF000A7930010A780000EA380000DAF80004870
73078 +:106B000014C00003AF8000003C066000ACC0442C01
73079 +:106B10000E0005B93C1080000E000F1A361101005E
73080 +:106B20003C12080026523DD03C13080026733E500C
73081 +:106B30008E03000038640001308200011440FFFC25
73082 +:106B40003C0B800A8E2600002407FF8024C90240E7
73083 +:106B5000312A007F014B402101272824AE06002066
73084 +:106B6000AF880044AE0500243C048000AF86003CA2
73085 +:106B70008C8C01780580FFFE24180800922F0008F5
73086 +:106B8000AC980178A38F0042938E004231CD000172
73087 +:106B900011A0000F24050D0024DFF8002FF90301D8
73088 +:106BA0001320001C000629C224A4FFF00004104298
73089 +:106BB000000231400E00020200D2D8213C02400007
73090 +:106BC0003C068000ACC201380A0004A000000000AE
73091 +:106BD00010C50023240D0F0010CD00273C1F800896
73092 +:106BE00037F9008093380000240E0050330F00FF67
73093 +:106BF00015EEFFF33C0240000E000A3600000000D4
73094 +:106C00003C0240003C068000ACC201380A0004A0EF
73095 +:106C1000000000008F83000400A3402B1500000B30
73096 +:106C20008F8B0008006B50212547FFFF00E5482BA4
73097 +:106C30001520000600A36023000C19400E0002027C
73098 +:106C40000073D8210A0004C43C0240000000000D7B
73099 +:106C50000E000202000000000A0004C43C024000D2
73100 +:106C60003C1B0800277B3F500E0002020000000082
73101 +:106C70000A0004C43C0240003C1B0800277B3F7014
73102 +:106C80000E000202000000000A0004C43C024000A2
73103 +:106C90003C0660043C09080025290104ACC9502CBD
73104 +:106CA0008CC850003C0580003C0200023507008083
73105 +:106CB000ACC750003C040800248415A43C03080021
73106 +:106CC0002463155CACA50008ACA2000C3C010800D4
73107 +:106CD000AC243D603C010800AC233D6403E00008A7
73108 +:106CE0002402000100A030213C1C0800279C3D68C4
73109 +:106CF0003C0C04003C0B0002008B3826008C402624
73110 +:106D00002CE200010007502B2D050001000A4880ED
73111 +:106D10003C03080024633D60004520250123182121
73112 +:106D20001080000300001021AC6600002402000166
73113 +:106D300003E00008000000003C1C0800279C3D68A0
73114 +:106D40003C0B04003C0A0002008A3026008B3826E7
73115 +:106D50002CC200010006482B2CE5000100094080F0
73116 +:106D60003C03080024633D600045202501031821F1
73117 +:106D700010800005000010213C0C0800258C155CDB
73118 +:106D8000AC6C00002402000103E0000800000000D9
73119 +:106D90003C0900023C08040000883026008938269F
73120 +:106DA0002CC30001008028212CE400010083102561
73121 +:106DB0001040000B000030213C1C0800279C3D685F
73122 +:106DC0003C0A80008D4E00082406000101CA682597
73123 +:106DD000AD4D00088D4C000C01855825AD4B000CC5
73124 +:106DE00003E0000800C010213C1C0800279C3D68FF
73125 +:106DF0003C0580008CA6000C000420272402000122
73126 +:106E000000C4182403E00008ACA3000C3C020002FC
73127 +:106E10001082000B3C0560003C0704001087000353
73128 +:106E20000000000003E00008000000008CA908D06A
73129 +:106E3000240AFFFD012A402403E00008ACA808D082
73130 +:106E40008CA408D02406FFFE0086182403E0000866
73131 +:106E5000ACA308D03C05601A34A600108CC3008097
73132 +:106E600027BDFFF88CC50084AFA3000093A40000E9
73133 +:106E70002402000110820003AFA5000403E0000813
73134 +:106E800027BD000893A7000114E0001497AC00028E
73135 +:106E900097B800023C0F8000330EFFFC01CF682141
73136 +:106EA000ADA50000A3A000003C0660008CC708D080
73137 +:106EB0002408FFFE3C04601A00E82824ACC508D072
73138 +:106EC0008FA300048FA200003499001027BD000892
73139 +:106ED000AF22008003E00008AF2300843C0B800059
73140 +:106EE000318AFFFC014B48218D2800000A00057DF6
73141 +:106EF000AFA8000427BDFFE8AFBF00103C1C08008E
73142 +:106F0000279C3D683C0580008CA4000C8CA20004EA
73143 +:106F10003C0300020044282410A0000A00A3182407
73144 +:106F20003C0604003C0400021460000900A6102482
73145 +:106F30001440000F3C0404000000000D3C1C08003D
73146 +:106F4000279C3D688FBF001003E0000827BD001894
73147 +:106F50003C0208008C423D600040F809000000003F
73148 +:106F60003C1C0800279C3D680A0005A68FBF001046
73149 +:106F70003C0208008C423D640040F809000000001B
73150 +:106F80000A0005AC00000000000411C003E0000886
73151 +:106F9000244202403C04080024843FB42405001A23
73152 +:106FA0000A00009C0000302127BDFFE0AFB00010B8
73153 +:106FB0003C108000AFBF0018AFB1001436110100C3
73154 +:106FC000922200090E0005B63044007F8E3F00007B
73155 +:106FD0008F89003C3C0F008003E26021258800403F
73156 +:106FE0000049F821240DFF80310E00783198007897
73157 +:106FF00035F9000135F100020319382501D1482582
73158 +:10700000010D302403ED5824018D2824240A00406A
73159 +:1070100024040080240300C0AE0B0024AE0008103E
73160 +:10702000AE0A0814AE040818AE03081CAE05080426
73161 +:10703000AE070820AE060808AE0908243609090084
73162 +:107040009539000C3605098033ED007F3338FFFF9A
73163 +:10705000001889C0AE110800AE0F0828952C000C4E
73164 +:107060008FBF00188FB10014318BFFFF000B51C090
73165 +:10707000AE0A002C8CA400508FB000108CA3003CF2
73166 +:107080008D2700048CA8001C8CA600383C0E800ABA
73167 +:1070900001AE102127BD0020AF820044AF84005014
73168 +:1070A000AF830054AF87004CAF88005C03E000085A
73169 +:1070B000AF8600603C09080091293FD924A800024E
73170 +:1070C0003C05110000093C0000E8302500C51825EA
73171 +:1070D00024820008AC83000003E00008AC800004B8
73172 +:1070E0003C098000352309009128010B906A0011AA
73173 +:1070F0002402002800804821314700FF00A07021B1
73174 +:1071000000C068213108004010E20002340C86DD26
73175 +:10711000240C08003C0A800035420A9A944700007B
73176 +:10712000354B0A9C35460AA030F9FFFFAD39000007
73177 +:107130008D780000354B0A8024040001AD3800042E
73178 +:107140008CCF0000AD2F00089165001930A300031B
73179 +:107150001064009028640002148000AF240500022F
73180 +:107160001065009E240F0003106F00B435450AA47B
73181 +:10717000240A0800118A0048000000005100003D68
73182 +:107180003C0B80003C0480003483090090670012AF
73183 +:1071900030E200FF004D7821000FC8802724000155
73184 +:1071A0003C0A8000354F090091E50019354C0980F3
73185 +:1071B0008D87002830A300FF0003150000475825E5
73186 +:1071C0000004C4003C19600001793025370806FF2F
73187 +:1071D000AD260000AD2800048DEA002C25280028EB
73188 +:1071E000AD2A00088DEC0030AD2C000C8DE500348C
73189 +:1071F000AD2500108DE400383C05800034AC093C1E
73190 +:10720000AD2400148DE3001CAD2300188DE7002091
73191 +:10721000AD27001C8DE20024AD2200208DF900284E
73192 +:1072200034A20100AD3900248D830000AD0E0004AE
73193 +:1072300034B90900AD0300008C47000C250200148E
73194 +:10724000AD070008932B00123C04080090843FD83F
73195 +:10725000AD000010317800FF030D302100064F0013
73196 +:1072600000047C00012F702535CDFFFC03E00008F1
73197 +:10727000AD0D000C35780900930600123C0508009E
73198 +:1072800094A53FC830C800FF010D5021000A60805E
73199 +:107290000A00063C018520211500005B000000006B
73200 +:1072A0003C08080095083FCE3C06080094C63FC83D
73201 +:1072B000010610213C0B800035790900933800113C
73202 +:1072C000932A001935660A80330800FF94CF002AFC
73203 +:1072D00000086082314500FF978A0058000C1E00AC
73204 +:1072E000000524003047FFFF006410250047C0253B
73205 +:1072F00001EA30213C0B4000030B402500066400EE
73206 +:10730000AD280000AD2C0004932500183C030006B6
73207 +:107310002528001400053E0000E31025AD220008DA
73208 +:107320008F24002C3C05800034AC093CAD24000CBB
73209 +:107330008F38001C34A20100254F0001AD38001029
73210 +:107340008D830000AD0E000431EB7FFFAD03000024
73211 +:107350008C47000C34B90900A78B0058AD07000812
73212 +:10736000932B00123C04080090843FD8250200149F
73213 +:10737000317800FF030D302100064F0000047C002F
73214 +:10738000012F702535CDFFFCAD00001003E0000893
73215 +:10739000AD0D000C3C02080094423FD23C050800B1
73216 +:1073A00094A53FC835440AA43C07080094E73FC4AD
73217 +:1073B000948B00000045C8210327C023000B1C004C
73218 +:1073C0002706FFF200665025AD2A000CAD20001004
73219 +:1073D000AD2C00140A00063025290018354F0AA4E8
73220 +:1073E00095E50000956400280005140000043C00A9
73221 +:1073F0003459810000EC5825AD39000CAD2B00103C
73222 +:107400000A000630252900143C0C0800958C3FCE5C
73223 +:107410000A000681258200015460FF56240A0800F4
73224 +:1074200035580AA49706000000061C00006C502581
73225 +:10743000AD2A000C0A000630252900103C03080084
73226 +:1074400094633FD23C07080094E73FC83C0F080014
73227 +:1074500095EF3FC494A4000095790028006710219F
73228 +:10746000004F582300041C00001934002578FFEE5B
73229 +:1074700000D87825346A8100AD2A000CAD2F0010A9
73230 +:10748000AD200014AD2C00180A0006302529001C80
73231 +:1074900003E00008240207D027BDFFE0AFB20018C8
73232 +:1074A000AFB10014AFB00010AFBF001C0E00007CE5
73233 +:1074B000008088218F8800548F87004C3C0580080D
73234 +:1074C00034B20080011128213C1080002402008089
73235 +:1074D000240300C000A72023AE0208183C06800841
73236 +:1074E000AE03081C18800004AF850054ACC500042E
73237 +:1074F0008CC90004AF89004C1220000936040980B1
73238 +:107500000E0006F800000000924C00278E0B00745D
73239 +:1075100001825004014B3021AE46000C3604098034
73240 +:107520008C8E001C8F8F005C01CF682319A0000493
73241 +:107530008FBF001C8C90001CAF90005C8FBF001CA4
73242 +:107540008FB200188FB100148FB000100A00007EB7
73243 +:1075500027BD00208F8600508F8300548F82004CFF
73244 +:107560003C05800834A40080AC860050AC83003C0D
73245 +:1075700003E00008ACA200043C0308008C63005444
73246 +:1075800027BDFFF8308400FF2462000130A500FF12
73247 +:107590003C010800AC22005430C600FF3C078000CC
73248 +:1075A0008CE801780500FFFE3C0C7FFFA3A40003DC
73249 +:1075B0008FAA0000358BFFFF014B4824000627C02F
73250 +:1075C00001244025AFA8000034E201009043000AE6
73251 +:1075D000A3A000023C1980FFA3A300018FAF00000D
73252 +:1075E00030AE007F3738FFFF01F86024000E6E00D8
73253 +:1075F0003C0A002034E50140018D58253549200022
73254 +:107600002406FF803C04100027BD0008ACAB000C32
73255 +:10761000ACA90014A4A00018A0A6001203E0000862
73256 +:10762000ACE40178308800FF30A700FF3C03800005
73257 +:107630008C6201780440FFFE3C0C8000358A0A0011
73258 +:107640008D4B00203584014035850980AC8B0004CA
73259 +:107650008D4900240007302B00061540AC89000836
73260 +:10766000A088001090A3004CA083002D03E0000828
73261 +:10767000A480001827BDFFE8308400FFAFBF0010D2
73262 +:107680000E00075D30A500FF8F8300548FBF0010F0
73263 +:107690003C06800034C50140344700402404FF907C
73264 +:1076A0003C02100027BD0018ACA3000CA0A40012DF
73265 +:1076B000ACA7001403E00008ACC2017827BDFFE0CE
73266 +:1076C0003C088008AFBF001CAFB20018AFB1001477
73267 +:1076D000AFB00010351000808E0600183C07800007
73268 +:1076E000309200FF00C72025AE0400180E00007C79
73269 +:1076F00030B100FF92030005346200080E00007EE6
73270 +:10770000A2020005024020210E000771022028215C
73271 +:10771000024020218FBF001C8FB200188FB10014CF
73272 +:107720008FB0001024050005240600010A0007326E
73273 +:1077300027BD00203C05800034A309809066000826
73274 +:1077400030C200081040000F3C0A01013549080A08
73275 +:10775000AC8900008CA80074AC8800043C070800C9
73276 +:1077600090E73FD830E5001050A00008AC8000083A
73277 +:107770003C0D800835AC00808D8B0058AC8B000828
73278 +:107780002484000C03E00008008010210A0007B5E3
73279 +:107790002484000C27BDFFE83C098000AFB0001036
73280 +:1077A000AFBF00143526098090C8000924020006E6
73281 +:1077B00000A05821310300FF3527090000808021F7
73282 +:1077C000240500041062007B2408000294CF005CB2
73283 +:1077D0003C0E020431EDFFFF01AE6025AE0C00004F
73284 +:1077E00090CA00083144002010800008000000000A
73285 +:1077F00090C2004E3C1F010337F90300305800FFD0
73286 +:107800000319302524050008AE06000490F9001184
73287 +:1078100090E6001290E40011333800FF00187082E7
73288 +:1078200030CF00FF01CF5021014B6821308900FF8C
73289 +:1078300031AAFFFF39230028000A60801460002C61
73290 +:10784000020C482390E400123C198000372F0100FD
73291 +:10785000308C00FF018B1821000310800045F821B7
73292 +:10786000001F8400360706FFAD270004373F0900DC
73293 +:1078700093EC001193EE0012372609800005C082B8
73294 +:107880008DE4000C8CC5003431CD00FF01AB10211C
73295 +:107890000058182100A4F8230008840000033F00CA
73296 +:1078A00000F0302533F9FFFF318F00FC00D970253F
73297 +:1078B0000158202101E9682100045080ADAE000C80
73298 +:1078C0000E00007C012A80213C088008240B000463
73299 +:1078D000350500800E00007EA0AB000902001021DB
73300 +:1078E0008FBF00148FB0001003E0000827BD001800
73301 +:1078F00090EC001190E300193C18080097183FCE57
73302 +:10790000318200FF0002F882307000FF001FCE00BD
73303 +:1079100000103C000327302500D870253C0F4000A4
73304 +:1079200001CF68253C198000AD2D0000373F0900CC
73305 +:1079300093EC001193EE0012372F010037260980D7
73306 +:107940000005C0828DE4000C8CC5003431CD00FFF1
73307 +:1079500001AB10210058182100A4F823000884006E
73308 +:1079600000033F0000F0302533F9FFFF318F00FCAA
73309 +:1079700000D970250158202101E9682100045080B8
73310 +:10798000ADAE000C0E00007C012A80213C0880086E
73311 +:10799000240B0004350500800E00007EA0AB00091A
73312 +:1079A000020010218FBF00148FB0001003E0000808
73313 +:1079B00027BD00180A0007C72408001227BDFFD002
73314 +:1079C0003C038000AFB60028AFB50024AFB4002060
73315 +:1079D000AFB10014AFBF002CAFB3001CAFB20018A2
73316 +:1079E000AFB000103467010090E6000B309400FF48
73317 +:1079F00030B500FF30C200300000B02110400099C7
73318 +:107A000000008821346409809088000800082E0056
73319 +:107A100000051E03046000C0240400048F86005487
73320 +:107A20003C010800A0243FD83C0C8000AD800048F9
73321 +:107A30003C048000348E010091CD000B31A5002064
73322 +:107A400010A000073C078000349309809272000860
73323 +:107A50000012860000107E0305E000C43C1F800871
73324 +:107A600034EC0100918A000B34EB09809169000825
73325 +:107A7000314400400004402B3123000800C8982303
73326 +:107A80001460000224120003000090213C108000CA
73327 +:107A900036180A8036040900970E002C90830011D6
73328 +:107AA0009089001293050018307F00FF312800FFF5
73329 +:107AB000024810210002C880930D0018033F78216E
73330 +:107AC00001F1302130B100FF00D11821A78E0058FC
73331 +:107AD0003C010800A4263FCE3C010800A4233FD06F
73332 +:107AE00015A00002000000000000000D920B010B29
73333 +:107AF0003065FFFF3C010800A4233FD2316A0040FB
73334 +:107B00003C010800A4203FC83C010800A4203FC459
73335 +:107B10001140000224A4000A24A4000B3091FFFFAE
73336 +:107B20000E0001E7022020219206010B3C0C080008
73337 +:107B3000958C3FD2004020210006698231A70001C8
73338 +:107B40000E00060101872821004020210260282123
73339 +:107B50000E00060C024030210E0007A1004020213B
73340 +:107B600016C00069004020219212010B32560040DD
73341 +:107B700012C000053C0500FF8C93000034AEFFFFEF
73342 +:107B8000026E8024AC9000000E0001FB0220202138
73343 +:107B90003C0F080091EF3FD831F10003122000168E
73344 +:107BA0003C1380088F8200543C09800835280080EF
73345 +:107BB000245F0001AD1F003C3C0580088CB9000427
73346 +:107BC00003E02021033FC0231B000002AF9F0054AD
73347 +:107BD0008CA400040E0006F8ACA400043C0780004E
73348 +:107BE0008CEB00743C04800834830080004B5021EF
73349 +:107BF000AC6A000C3C1380083670008002802021A3
73350 +:107C000002A02821A200006B0E00075D3C1480003A
73351 +:107C10008F920054368C0140AD92000C8F86004844
73352 +:107C20003C151000344D000624D60001AF960048E4
73353 +:107C30008FBF002CA18600128FB60028AD8D0014D6
73354 +:107C40008FB3001CAE9501788FB200188FB5002459
73355 +:107C50008FB400208FB100148FB0001003E0000833
73356 +:107C600027BD003034640980908F0008000F760033
73357 +:107C7000000E6E0305A00033347F090093F8001B4B
73358 +:107C8000241900103C010800A0393FD8331300022A
73359 +:107C90001260FF678F8600548F8200601446FF6574
73360 +:107CA0003C0480000E00007C000000003C048008C2
73361 +:107CB0003485008090A8000924060016310300FFD7
73362 +:107CC0001066000D0000000090AB00093C070800A2
73363 +:107CD00090E73FD824090008316400FF34EA00012E
73364 +:107CE0003C010800A02A3FD81089002F240C000A6C
73365 +:107CF000108C00282402000C0E00007E0000000002
73366 +:107D00000A0008608F8600540E0007B9024028213F
73367 +:107D10000A0008AE004020213C0B8008356A008034
73368 +:107D20008D4600548CE9000C1120FF3DAF860054B5
73369 +:107D3000240700143C010800A0273FD80A00085F70
73370 +:107D40003C0C800090910008241200023C010800C5
73371 +:107D5000A0323FD8323000201200000B2416000160
73372 +:107D60008F8600540A0008602411000837F800804C
73373 +:107D70008F020038AFE200048FF90004AF19003C15
73374 +:107D80000A00086C3C0780008F8600540A000860D7
73375 +:107D900024110004A0A200090E00007E00000000D3
73376 +:107DA0000A0008608F860054240200140A00093A71
73377 +:107DB000A0A2000927BDFFE8AFB000103C10800072
73378 +:107DC000AFBF001436020100904400090E00075DA9
73379 +:107DD000240500013C0480089099000E3483008043
73380 +:107DE000909F000F906F00269089000A33F800FFE3
73381 +:107DF00000196E000018740031EC00FF01AE502530
73382 +:107E0000000C5A00014B3825312800FF3603014091
73383 +:107E10003445600000E830252402FF813C04100056
73384 +:107E2000AC66000C8FBF0014AC650014A062001299
73385 +:107E3000AE0401788FB0001003E0000827BD0018E1
73386 +:107E400027BDFFE8308400FFAFBF00100E00075DC4
73387 +:107E500030A500FF3C05800034A4014034470040B9
73388 +:107E60002406FF92AC870014A08600128F83005472
73389 +:107E70008FBF00103C02100027BD0018AC83000C1F
73390 +:107E800003E00008ACA2017827BDFFD8AFB0001016
73391 +:107E9000308400FF30B000FF3C058000AFB100141B
73392 +:107EA000AFBF0020AFB3001CAFB20018000410C277
73393 +:107EB00034A60100320300023051000114600007B3
73394 +:107EC00090D200093C098008353300809268000593
73395 +:107ED0003107000810E0000C308A00100240202119
73396 +:107EE0000E00078302202821240200018FBF0020FA
73397 +:107EF0008FB3001C8FB200188FB100148FB0001028
73398 +:107F000003E0000827BD00281540003434A50A000E
73399 +:107F10008CB800248CAF0008130F004B00003821F0
73400 +:107F20003C0D800835B30080926C00682406000286
73401 +:107F3000318B00FF116600843C06800034C20100D2
73402 +:107F40009263004C90590009307F00FF53F9000400
73403 +:107F50003213007C10E00069000000003213007C46
73404 +:107F60005660005C0240202116200009320D0001FD
73405 +:107F70003C0C800035840100358B0A008D6500249F
73406 +:107F80008C86000414A6FFD900001021320D0001D8
73407 +:107F900011A0000E024020213C1880003710010083
73408 +:107FA0008E0F000C8F8E005011EE000800000000B4
73409 +:107FB0000E000843022028218E19000C3C1F800867
73410 +:107FC00037F00080AE190050024020210E000771EA
73411 +:107FD000022028210A00098F240200013C05080024
73412 +:107FE0008CA5006424A400013C010800AC240064BA
73413 +:107FF0001600000D00000000022028210E0007716D
73414 +:1080000002402021926E0068240C000231CD00FF56
73415 +:1080100011AC0022024020210E00094100000000A6
73416 +:108020000A00098F240200010E00007024040001E0
73417 +:10803000926B0025020B30250E00007EA266002503
73418 +:108040000A0009D3022028218E6200188CDF000468
73419 +:108050008CB9002400021E0217F9FFB13065007FC1
73420 +:108060009268004C264400013093007F1265004066
73421 +:10807000310300FF1464FFAB3C0D8008264700016C
73422 +:1080800030F1007F30E200FF1225000B24070001D1
73423 +:10809000004090210A00099C2411000124050004DD
73424 +:1080A0000E000732240600010E0009410000000006
73425 +:1080B0000A00098F240200012405FF8002452024C4
73426 +:1080C00000859026324200FF004090210A00099C62
73427 +:1080D000241100010E00084302202821320700303D
73428 +:1080E00010E0FFA132100082024020210E00078321
73429 +:1080F000022028210A00098F240200018E6900183D
73430 +:108100000240202102202821012640250E0009647A
73431 +:10811000AE6800189264004C240500032406000198
73432 +:108120000E000732308400FF0E00007024040001AE
73433 +:1081300092710025021150250E00007EA26A0025D2
73434 +:108140000A00098F240200018E6F00183C1880007D
73435 +:108150000240202101F87025022028210E0007711D
73436 +:10816000AE6E00189264004C0A000A1B240500043D
73437 +:10817000324A0080394900801469FF6A3C0D80084A
73438 +:108180000A0009F42647000127BDFFC0AFB0001860
73439 +:108190003C108000AFBF0038AFB70034AFB600303E
73440 +:1081A000AFB5002CAFB40028AFB30024AFB20020AD
73441 +:1081B0000E0005BEAFB1001C360201009045000B59
73442 +:1081C0000E00097690440008144000E78FBF003885
73443 +:1081D0003C08800835070080A0E0006B3606098067
73444 +:1081E00090C50000240300503C17080026F73F907C
73445 +:1081F00030A400FF3C13080026733FA01083000347
73446 +:108200003C1080000000B82100009821241F0010BD
73447 +:108210003611010036120A00361509808E580024E6
73448 +:108220008E3400048EAF00208F8C00543C01080077
73449 +:10823000A03F3FD836190A80972B002C8EF60000FD
73450 +:10824000932A00180298702301EC68233C0108006F
73451 +:10825000AC2E3FB43C010800AC2D3FB83C010800F7
73452 +:10826000AC2C3FDCA78B005802C0F809315400FF4A
73453 +:1082700030490002152000E930420001504000C49E
73454 +:108280009227000992A90008312800081500000271
73455 +:10829000241500030000A8213C0A80003543090092
73456 +:1082A00035440A008C8D00249072001190700012E9
73457 +:1082B000907F0011325900FF321100FF02B11021EE
73458 +:1082C0000002C08033EF00FF0319B021028F70213C
73459 +:1082D00002D4602125CB00103C010800A4363FCE1B
73460 +:1082E0003C010800AC2D3FE03C010800A42C3FD02D
73461 +:1082F0003C010800A42B3FCC3556010035540980C1
73462 +:1083000035510E008F8700548F89005C8E850020C8
73463 +:1083100024080006012730233C010800AC283FD484
73464 +:1083200000A7282304C000B50000902104A000B3DA
73465 +:1083300000C5502B114000B5000000003C010800B2
73466 +:10834000AC263FB88E6200000040F8090000000033
73467 +:108350003046000214C0007400408021304B000100
73468 +:10836000556000118E6200043C0D08008DAD3FBCCD
73469 +:108370003C0EC0003C04800001AE6025AE2C000025
73470 +:108380008C980000330F000811E0FFFD0000000092
73471 +:10839000963F000824120001A79F00408E39000478
73472 +:1083A000AF9900388E6200040040F8090000000018
73473 +:1083B0000202802532030002146000B300000000B6
73474 +:1083C0003C09080095293FC43C06080094C63FD0EC
73475 +:1083D0003C0A0800954A3FC63C0708008CE73FBCB2
73476 +:1083E000012670213C0308008C633FE03C08080034
73477 +:1083F00095083FDA01CA20218ED9000C00E9282116
73478 +:10840000249F000200A878210067C02133E4FFFF09
73479 +:10841000AF9900503C010800AC383FE03C01080037
73480 +:10842000A42F3FC83C010800A42E3FD20E0001E754
73481 +:10843000000000008F8D0048004020213C01080012
73482 +:10844000A02D3FD98E62000825AC0001AF8C0048FA
73483 +:108450000040F809000000008F85005402A0302180
73484 +:108460000E00060C004020210E0007A10040202134
73485 +:108470008E6B000C0160F809004020213C0A0800C6
73486 +:10848000954A3FD23C06080094C63FC601464821A3
73487 +:10849000252800020E0001FB3104FFFF3C05080007
73488 +:1084A0008CA53FB43C0708008CE73FBC00A7202305
73489 +:1084B0003C010800AC243FB414800006000000001A
73490 +:1084C0003C0208008C423FD4344B00403C01080081
73491 +:1084D000AC2B3FD4124000438F8E00448E2D0010F1
73492 +:1084E0008F920044AE4D00208E2C0018AE4C00241C
73493 +:1084F0003C04080094843FC80E0006FA0000000007
73494 +:108500008F9F00548E6700103C010800AC3F3FDC99
73495 +:1085100000E0F809000000003C1908008F393FB462
73496 +:108520001720FF798F870054979300583C11800ED5
73497 +:10853000321601000E000729A633002C16C0004594
73498 +:10854000320300105460004C8EE5000432080040F5
73499 +:108550005500001D8EF000088EE4000C0080F80924
73500 +:10856000000000008FBF00388FB700348FB6003096
73501 +:108570008FB5002C8FB400288FB300248FB2002059
73502 +:108580008FB1001C8FB0001803E0000827BD004029
73503 +:108590008F86003C36110E0000072E0000A6202515
73504 +:1085A000AE0400808E4300208E500024AFA3001044
73505 +:1085B000AE2300148FB20010AE320010AE30001C9B
73506 +:1085C0000A000A75AE3000180200F8090000000029
73507 +:1085D0008EE4000C0080F809000000000A000B2E59
73508 +:1085E0008FBF003824180001240F0001A5C000200F
73509 +:1085F000A5D800220A000B10ADCF00243C010800D2
73510 +:10860000AC203FB80A000AA68E6200003C010800B8
73511 +:10861000AC253FB80A000AA68E6200009224000929
73512 +:108620000E000771000028218FBF00388FB700347B
73513 +:108630008FB600308FB5002C8FB400288FB3002484
73514 +:108640008FB200208FB1001C8FB0001803E000082B
73515 +:1086500027BD00403C1480009295010900002821AC
73516 +:108660000E00084332A400FF320300105060FFB830
73517 +:10867000320800408EE5000400A0F8090000000068
73518 +:108680000A000B28320800405240FFA89793005878
73519 +:108690008E3400148F930044AE7400208E35001C7D
73520 +:1086A000AE7500240A000B1F979300588F820014A8
73521 +:1086B0000004218003E00008008210213C078008AC
73522 +:1086C00034E200809043006900804021106000097E
73523 +:1086D0003C0401003C0708008CE73FDC8F8300303E
73524 +:1086E00000E32023048000089389001C14E30003A6
73525 +:1086F0000100202103E00008008010213C0401005B
73526 +:1087000003E00008008010211120000B00673823CF
73527 +:108710003C0D800035AC0980918B007C316A0002F1
73528 +:10872000114000202409003400E9702B15C0FFF12E
73529 +:108730000100202100E938232403FFFC00A3C82402
73530 +:1087400000E3C02400F9782B15E0FFEA030820219C
73531 +:1087500030C400030004102314C000143049000387
73532 +:108760000000302100A9782101E6702100EE682B7D
73533 +:1087700011A0FFE03C0401002D3800010006C82BC9
73534 +:10878000010548210319382414E0FFDA2524FFFCF1
73535 +:108790002402FFFC00A218240068202103E0000846
73536 +:1087A000008010210A000B9E240900303C0C800040
73537 +:1087B0003586098090CB007C316A00041540FFE9C2
73538 +:1087C000240600040A000BAD000030213C03080021
73539 +:1087D0008C63005C8F82001827BDFFE0AFBF0018DC
73540 +:1087E000AFB1001410620005AFB00010000329C043
73541 +:1087F00024A40280AF840014AF8300183C108000D2
73542 +:1088000036020A0094450032361101000E000B7F3B
73543 +:1088100030A43FFF8E240000241FFF803C11008005
73544 +:108820000082C021031F60243309007F000CC9406F
73545 +:1088300003294025330E0078362F00033C0D10002D
73546 +:10884000010D502501CF5825AE0C002836080980AF
73547 +:10885000AE0C080CAE0B082CAE0A08309103006970
73548 +:108860003C06800C0126382110600006AF870034DA
73549 +:108870008D09003C8D03006C0123382318E0008231
73550 +:10888000000000003C0B8008356A00803C1080002E
73551 +:10889000A1400069360609808CC200383C06800081
73552 +:1088A00034C50A0090A8003C310C00201180001A49
73553 +:1088B000AF820030240D00013C0E800035D10A004B
73554 +:1088C000A38D001CAF8000248E2400248F850024FB
73555 +:1088D000240D0008AF800020AF8000283C01080074
73556 +:1088E000A42D3FC63C010800A4203FDA0E000B83F4
73557 +:1088F000000030219228003C8FBF00188FB1001477
73558 +:108900008FB0001000086142AF82002C27BD00200C
73559 +:1089100003E000083182000190B80032240E00010B
73560 +:10892000330F00FF000F2182108E00412419000236
73561 +:108930001099006434C40AC03C03800034640A0007
73562 +:108940008C8F002415E0001E34660900909F0030D3
73563 +:108950002418000533F9003F1338004E24030001AA
73564 +:108960008F860020A383001CAF860028AF860024DA
73565 +:108970003C0E800035D10A008E2400248F8500240F
73566 +:10898000240D00083C010800A42D3FC63C0108004E
73567 +:10899000A4203FDA0E000B83000000009228003C68
73568 +:1089A0008FBF00188FB100148FB000100008614213
73569 +:1089B000AF82002C27BD002003E0000831820001B7
73570 +:1089C0008C8A00088C8B00248CD000643C0E8000C4
73571 +:1089D00035D10A00014B2823AF900024A380001C4E
73572 +:1089E000AF8500288E2400248F8600208F850024E8
73573 +:1089F000240D00083C010800A42D3FC63C010800DE
73574 +:108A0000A4203FDA0E000B83000000009228003CF7
73575 +:108A10008FBF00188FB100148FB0001000086142A2
73576 +:108A2000AF82002C27BD002003E000083182000146
73577 +:108A300090A200303051003F5224002834C50AC0B3
73578 +:108A40008CB000241600002234CB09008CA600480C
73579 +:108A50003C0A7FFF3545FFFF00C510243C0E800017
73580 +:108A6000AF82002035C509008F8800208CAD0060E2
73581 +:108A7000010D602B15800002010020218CA40060F4
73582 +:108A80000A000C22AF8400208D02006C0A000BFC4F
73583 +:108A90003C0680008C8200488F8600203C097FFFC6
73584 +:108AA0003527FFFF004788243C0480082403000189
73585 +:108AB000AF910028AC80006CA383001C0A000C302E
73586 +:108AC000AF8600248C9F00140A000C22AF9F002068
73587 +:108AD0008D6200680A000C6C3C0E800034C4098072
73588 +:108AE0008C8900708CA300140123382B10E0000443
73589 +:108AF000000000008C8200700A000C6C3C0E8000AC
73590 +:108B00008CA200140A000C6C3C0E80008F8500249F
73591 +:108B100027BDFFE0AFBF0018AFB1001414A00008DC
73592 +:108B2000AFB000103C04800034870A0090E60030AB
73593 +:108B30002402000530C3003F106200B934840900EC
73594 +:108B40008F91002000A080213C048000348E0A0018
73595 +:108B50008DCD00043C0608008CC63FB831A73FFF0E
73596 +:108B600000E6602B5580000100E03021938F001C4F
73597 +:108B700011E0007800D0282B349F098093F9007C05
73598 +:108B800033380002130000792403003400C3102B93
73599 +:108B9000144000D90000000000C3302300D0282B6F
73600 +:108BA0003C010800A4233FC414A0006E0200182159
73601 +:108BB0003C0408008C843FB40064402B5500000145
73602 +:108BC000006020213C05800034A90A00912A003C65
73603 +:108BD0003C010800AC243FBC31430020146000037A
73604 +:108BE0000000482134AB0E008D6900188F88002CDE
73605 +:108BF0000128202B1080005F000000003C050800C9
73606 +:108C00008CA53FBC00A96821010D602B1180005C80
73607 +:108C100000B0702B0109382300E028213C01080036
73608 +:108C2000AC273FBC12000003240AFFFC10B0008DEB
73609 +:108C30003224000300AA18243C010800A4203FDAD3
73610 +:108C40003C010800AC233FBC006028218F84002435
73611 +:108C5000120400063C0B80088D6C006C0200202181
73612 +:108C6000AF91002025900001AD70006C8F8D002821
73613 +:108C700000858823AF91002401A52023AF8400281C
73614 +:108C80001220000224070018240700103C18800856
73615 +:108C90003706008090CF00683C010800A0273FD82D
73616 +:108CA0002407000131EE00FF11C70047000000005B
73617 +:108CB00014800018000028213C06800034D109806F
73618 +:108CC00034CD010091A600098E2C001824C40001A7
73619 +:108CD000000C86023205007F308B007F1165007F1B
73620 +:108CE0002407FF803C19800837290080A124004C0C
73621 +:108CF0003C0808008D083FD4241800023C010800FD
73622 +:108D0000A0384019350F00083C010800AC2F3FD4B3
73623 +:108D1000240500103C02800034440A009083003C8B
73624 +:108D2000307F002013E0000500A02021240A00016C
73625 +:108D30003C010800AC2A3FBC34A400018FBF0018DE
73626 +:108D40008FB100148FB000100080102103E00008E4
73627 +:108D500027BD00203C010800A4203FC410A0FF94C0
73628 +:108D6000020018210A000CC000C018210A000CB72C
73629 +:108D7000240300303C0508008CA53FBC00B0702BDC
73630 +:108D800011C0FFA8000000003C19080097393FC43B
73631 +:108D90000325C0210307782B11E000072CAA00044B
73632 +:108DA0003C0360008C625404305F003F17E0FFE337
73633 +:108DB000240400422CAA00041140FF9A240400421B
73634 +:108DC0000A000D248FBF00181528FFB9000000000D
73635 +:108DD0008CCA00183C1F800024020002015F182585
73636 +:108DE000ACC3001837F90A00A0C200689329003C00
73637 +:108DF0002404000400A01021312800203C010800B8
73638 +:108E0000A0244019110000022405001024020001D2
73639 +:108E10003C010800AC223FB40A000D1A3C0280005D
73640 +:108E20008F8800288C8900600109282B14A000027B
73641 +:108E3000010088218C9100603C048000348B0E007E
73642 +:108E40008D640018240A000102202821022030210C
73643 +:108E5000A38A001C0E000B83022080210A000CA6AE
73644 +:108E6000AF82002C00045823122000073164000355
73645 +:108E70003C0E800035C7098090ED007C31AC0004C9
73646 +:108E800015800019248F00043C010800A4243FDA57
73647 +:108E90003C1F080097FF3FDA03E5C82100D9C02B2B
73648 +:108EA0001300FF6B8F8400242CA6000514C0FFA3C1
73649 +:108EB0002404004230A200031440000200A2182340
73650 +:108EC00024A3FFFC3C010800AC233FBC3C0108008C
73651 +:108ED000A4203FDA0A000CE70060282100C77024B4
73652 +:108EE0000A000D0D01C720263C010800A42F3FDA1F
73653 +:108EF0000A000D78000000003C010800AC203FBCD7
73654 +:108F00000A000D23240400428F8300283C058000C2
73655 +:108F100034AA0A00146000060000102191470030B6
73656 +:108F20002406000530E400FF108600030000000066
73657 +:108F300003E0000800000000914B0048316900FF89
73658 +:108F4000000941C21500FFFA3C0680083C040800F5
73659 +:108F500094843FC43C0308008C633FDC3C19080048
73660 +:108F60008F393FBC3C0F080095EF3FDA0064C02109
73661 +:108F70008CCD00040319702101CF602134AB0E00A9
73662 +:108F8000018D282318A0001D00000000914F004C07
73663 +:108F90008F8C0034956D001031EE00FF8D89000438
73664 +:108FA00001AE30238D8A000030CEFFFF000E290075
73665 +:108FB0000125C82100003821014720210325182B55
73666 +:108FC0000083C021AD990004AD980000918F000A84
73667 +:108FD00001CF6821A18D000A956500128F8A0034A7
73668 +:108FE000A5450008954B003825690001A5490038C2
73669 +:108FF0009148000D35070008A147000D03E0000867
73670 +:109000000000000027BDFFD8AFB000189388001CF7
73671 +:109010008FB000143C0A80003C197FFF8F8700242A
73672 +:109020003738FFFFAFBF0020AFB1001C355F0A002B
73673 +:109030000218182493EB003C00087FC03C02BFFFDD
73674 +:10904000006F60252CF000013449FFFF3C1F080031
73675 +:109050008FFF3FDC8F9900303C18080097183FD2F3
73676 +:1090600001897824001047803C07EFFF3C05F0FFA2
73677 +:1090700001E818253C1180003169002034E2FFFF2F
73678 +:1090800034ADFFFF362E098027A50010240600020C
73679 +:1090900003F96023270B0002354A0E0000621824F2
73680 +:1090A0000080802115200002000040218D48001C16
73681 +:1090B000A7AB0012058000392407000030E800FF4C
73682 +:1090C00000083F00006758253C028008AFAB001441
73683 +:1090D000344F008091EA00683C08080091083FD9AD
73684 +:1090E0003C09DFFF352CFFFF000AF82B3C0208008B
73685 +:1090F00094423FCCA3A80011016CC024001FCF40B4
73686 +:10910000031918258FA70010AFA300143C0C08000A
73687 +:10911000918C3FDBA7A200168FAB001400ED482412
73688 +:109120003C0F01003C0A0FFF012FC82531980003B6
73689 +:10913000355FFFFF016D40243C027000033F38247F
73690 +:1091400000181E0000E2482501037825AFAF001487
73691 +:10915000AFA9001091CC007C0E000092A3AC0015CA
73692 +:10916000362D0A0091A6003C30C400201080000675
73693 +:10917000260200083C11080096313FC8262EFFFF4A
73694 +:109180003C010800A42E3FC88FBF00208FB1001CF7
73695 +:109190008FB0001803E0000827BD00288F8B002C3B
73696 +:1091A000010B502B5540FFC5240700010A000E0497
73697 +:1091B00030E800FF9383001C3C02800027BDFFD8ED
73698 +:1091C00034480A0000805021AFBF002034460AC056
73699 +:1091D000010028211060000E3444098091070030FE
73700 +:1091E000240B00058F89002030EC003F118B000B11
73701 +:1091F00000003821AFA900103C0B80088D69006C7D
73702 +:10920000AFAA00180E00015AAFA90014A380001CD9
73703 +:109210008FBF002003E0000827BD00288D1F0048F5
73704 +:109220003C1808008F183FBC8F9900283C027FFF34
73705 +:109230008D0800443443FFFFAFA900103C0B8008A9
73706 +:109240008D69006C03E370240319782101CF682332
73707 +:1092500001A83821AFAA00180E00015AAFA90014C6
73708 +:109260000A000E58A380001C3C05800034A60A00AA
73709 +:1092700090C7003C3C06080094C63FDA3C02080058
73710 +:109280008C423FD430E30020000624001060001E12
73711 +:10929000004438253C0880083505008090A300680C
73712 +:1092A00000004821240800010000282124040001B6
73713 +:1092B0003C0680008CCD017805A0FFFE34CF014034
73714 +:1092C000ADE800083C0208008C423FDCA5E5000444
73715 +:1092D000A5E40006ADE2000C3C04080090843FD9F0
73716 +:1092E0003C03800834790080A1E40012ADE700144B
73717 +:1092F000A5E900189338004C3C0E1000A1F8002D91
73718 +:1093000003E00008ACCE017834A90E008D28001CC3
73719 +:109310003C0C08008D8C3FBC952B0016952A001440
73720 +:10932000018648213164FFFF0A000E803145FFFFAE
73721 +:109330003C04800034830A009065003C30A2002089
73722 +:109340001040001934870E00000040210000382131
73723 +:10935000000020213C0680008CC901780520FFFE1A
73724 +:1093600034CA014034CF010091EB0009AD48000838
73725 +:109370003C0E08008DCE3FDC240DFF91240C0040F4
73726 +:109380003C081000A5440004A5470006AD4E000CA3
73727 +:10939000A14D0012AD4C0014A5400018A14B002DAA
73728 +:1093A00003E00008ACC801788CE8001894E60012CD
73729 +:1093B00094E4001030C7FFFF0A000EA93084FFFFBD
73730 +:1093C0003C04800034830A009065003C30A20020F9
73731 +:1093D0001040002727BDFFF82409000100003821B4
73732 +:1093E000240800013C0680008CCA01780540FFFE7D
73733 +:1093F0003C0280FF34C40100908D00093C0C080041
73734 +:10940000918C4019A3AD00038FAB00003185007F24
73735 +:109410003459FFFF01665025AFAA00009083000A6F
73736 +:10942000A3A0000200057E00A3A300018FB80000E6
73737 +:1094300034CB0140240C30000319702401CF68257F
73738 +:10944000AD6D000C27BD0008AD6C0014A5600018C0
73739 +:10945000AD690008A56700042409FF80A56800061F
73740 +:109460003C081000A169001203E00008ACC80178B4
73741 +:1094700034870E008CE9001894E6001294E4001082
73742 +:1094800030C8FFFF0A000ECD3087FFFF27BDFFE089
73743 +:10949000AFB100143C118000AFB00010AFBF001896
73744 +:1094A00036380A00970F0032363001000E000B7F6D
73745 +:1094B00031E43FFF8E0E0000240DFF803C042000AD
73746 +:1094C00001C25821016D6024000C4940316A007FBF
73747 +:1094D000012A4025010438253C048008AE270830C5
73748 +:1094E0003486008090C500682403000230A200FF8B
73749 +:1094F000104300048F9F00208F990024AC9F0068C8
73750 +:10950000AC9900648FBF00188FB100148FB00010A9
73751 +:1095100003E0000827BD00203C0A0800254A3A80E5
73752 +:109520003C09080025293B103C08080025082F1C91
73753 +:109530003C07080024E73BDC3C06080024C639044D
73754 +:109540003C05080024A536583C0408002484325CFD
73755 +:109550003C030800246339B83C0208002442375415
73756 +:109560003C010800AC2A3F983C010800AC293F941C
73757 +:109570003C010800AC283F903C010800AC273F9C10
73758 +:109580003C010800AC263FAC3C010800AC253FA4E0
73759 +:109590003C010800AC243FA03C010800AC233FB0D4
73760 +:1095A0003C010800AC223FA803E0000800000000D6
73761 +:1095B00080000940800009008008010080080080C8
73762 +:1095C00080080000800E00008008008080080000F5
73763 +:1095D00080000A8080000A00800009808000090065
73764 +:00000001FF
73765 diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt
73766 index 2d0cbbd..a6d6149 100644
73767 --- a/fs/Kconfig.binfmt
73768 +++ b/fs/Kconfig.binfmt
73769 @@ -103,7 +103,7 @@ config HAVE_AOUT
73770
73771 config BINFMT_AOUT
73772 tristate "Kernel support for a.out and ECOFF binaries"
73773 - depends on HAVE_AOUT
73774 + depends on HAVE_AOUT && BROKEN
73775 ---help---
73776 A.out (Assembler.OUTput) is a set of formats for libraries and
73777 executables used in the earliest versions of UNIX. Linux used
73778 diff --git a/fs/afs/inode.c b/fs/afs/inode.c
73779 index e06f5a2..81d07ac 100644
73780 --- a/fs/afs/inode.c
73781 +++ b/fs/afs/inode.c
73782 @@ -141,7 +141,7 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,
73783 struct afs_vnode *vnode;
73784 struct super_block *sb;
73785 struct inode *inode;
73786 - static atomic_t afs_autocell_ino;
73787 + static atomic_unchecked_t afs_autocell_ino;
73788
73789 _enter("{%x:%u},%*.*s,",
73790 AFS_FS_I(dir)->fid.vid, AFS_FS_I(dir)->fid.vnode,
73791 @@ -154,7 +154,7 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,
73792 data.fid.unique = 0;
73793 data.fid.vnode = 0;
73794
73795 - inode = iget5_locked(sb, atomic_inc_return(&afs_autocell_ino),
73796 + inode = iget5_locked(sb, atomic_inc_return_unchecked(&afs_autocell_ino),
73797 afs_iget5_autocell_test, afs_iget5_set,
73798 &data);
73799 if (!inode) {
73800 diff --git a/fs/aio.c b/fs/aio.c
73801 index 480440f..623fd88 100644
73802 --- a/fs/aio.c
73803 +++ b/fs/aio.c
73804 @@ -441,7 +441,7 @@ static int aio_setup_ring(struct kioctx *ctx)
73805 size += sizeof(struct io_event) * nr_events;
73806
73807 nr_pages = PFN_UP(size);
73808 - if (nr_pages < 0)
73809 + if (nr_pages <= 0)
73810 return -EINVAL;
73811
73812 file = aio_private_file(ctx, nr_pages);
73813 diff --git a/fs/attr.c b/fs/attr.c
73814 index 6530ced..4a827e2 100644
73815 --- a/fs/attr.c
73816 +++ b/fs/attr.c
73817 @@ -102,6 +102,7 @@ int inode_newsize_ok(const struct inode *inode, loff_t offset)
73818 unsigned long limit;
73819
73820 limit = rlimit(RLIMIT_FSIZE);
73821 + gr_learn_resource(current, RLIMIT_FSIZE, (unsigned long)offset, 1);
73822 if (limit != RLIM_INFINITY && offset > limit)
73823 goto out_sig;
73824 if (offset > inode->i_sb->s_maxbytes)
73825 diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
73826 index 35b755e..f4b9e0a 100644
73827 --- a/fs/autofs4/waitq.c
73828 +++ b/fs/autofs4/waitq.c
73829 @@ -59,7 +59,7 @@ static int autofs4_write(struct autofs_sb_info *sbi,
73830 {
73831 unsigned long sigpipe, flags;
73832 mm_segment_t fs;
73833 - const char *data = (const char *)addr;
73834 + const char __user *data = (const char __force_user *)addr;
73835 ssize_t wr = 0;
73836
73837 sigpipe = sigismember(&current->pending.signal, SIGPIPE);
73838 @@ -340,6 +340,10 @@ static int validate_request(struct autofs_wait_queue **wait,
73839 return 1;
73840 }
73841
73842 +#ifdef CONFIG_GRKERNSEC_HIDESYM
73843 +static atomic_unchecked_t autofs_dummy_name_id = ATOMIC_INIT(0);
73844 +#endif
73845 +
73846 int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
73847 enum autofs_notify notify)
73848 {
73849 @@ -385,7 +389,12 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
73850
73851 /* If this is a direct mount request create a dummy name */
73852 if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type))
73853 +#ifdef CONFIG_GRKERNSEC_HIDESYM
73854 + /* this name does get written to userland via autofs4_write() */
73855 + qstr.len = sprintf(name, "%08x", atomic_inc_return_unchecked(&autofs_dummy_name_id));
73856 +#else
73857 qstr.len = sprintf(name, "%p", dentry);
73858 +#endif
73859 else {
73860 qstr.len = autofs4_getpath(sbi, dentry, &name);
73861 if (!qstr.len) {
73862 diff --git a/fs/befs/endian.h b/fs/befs/endian.h
73863 index 2722387..56059b5 100644
73864 --- a/fs/befs/endian.h
73865 +++ b/fs/befs/endian.h
73866 @@ -11,7 +11,7 @@
73867
73868 #include <asm/byteorder.h>
73869
73870 -static inline u64
73871 +static inline u64 __intentional_overflow(-1)
73872 fs64_to_cpu(const struct super_block *sb, fs64 n)
73873 {
73874 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
73875 @@ -29,7 +29,7 @@ cpu_to_fs64(const struct super_block *sb, u64 n)
73876 return (__force fs64)cpu_to_be64(n);
73877 }
73878
73879 -static inline u32
73880 +static inline u32 __intentional_overflow(-1)
73881 fs32_to_cpu(const struct super_block *sb, fs32 n)
73882 {
73883 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
73884 @@ -47,7 +47,7 @@ cpu_to_fs32(const struct super_block *sb, u32 n)
73885 return (__force fs32)cpu_to_be32(n);
73886 }
73887
73888 -static inline u16
73889 +static inline u16 __intentional_overflow(-1)
73890 fs16_to_cpu(const struct super_block *sb, fs16 n)
73891 {
73892 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
73893 diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
73894 index 4c55668..eeae150 100644
73895 --- a/fs/binfmt_aout.c
73896 +++ b/fs/binfmt_aout.c
73897 @@ -16,6 +16,7 @@
73898 #include <linux/string.h>
73899 #include <linux/fs.h>
73900 #include <linux/file.h>
73901 +#include <linux/security.h>
73902 #include <linux/stat.h>
73903 #include <linux/fcntl.h>
73904 #include <linux/ptrace.h>
73905 @@ -58,6 +59,8 @@ static int aout_core_dump(struct coredump_params *cprm)
73906 #endif
73907 # define START_STACK(u) ((void __user *)u.start_stack)
73908
73909 + memset(&dump, 0, sizeof(dump));
73910 +
73911 fs = get_fs();
73912 set_fs(KERNEL_DS);
73913 has_dumped = 1;
73914 @@ -68,10 +71,12 @@ static int aout_core_dump(struct coredump_params *cprm)
73915
73916 /* If the size of the dump file exceeds the rlimit, then see what would happen
73917 if we wrote the stack, but not the data area. */
73918 + gr_learn_resource(current, RLIMIT_CORE, (dump.u_dsize + dump.u_ssize+1) * PAGE_SIZE, 1);
73919 if ((dump.u_dsize + dump.u_ssize+1) * PAGE_SIZE > cprm->limit)
73920 dump.u_dsize = 0;
73921
73922 /* Make sure we have enough room to write the stack and data areas. */
73923 + gr_learn_resource(current, RLIMIT_CORE, (dump.u_ssize + 1) * PAGE_SIZE, 1);
73924 if ((dump.u_ssize + 1) * PAGE_SIZE > cprm->limit)
73925 dump.u_ssize = 0;
73926
73927 @@ -232,6 +237,8 @@ static int load_aout_binary(struct linux_binprm * bprm)
73928 rlim = rlimit(RLIMIT_DATA);
73929 if (rlim >= RLIM_INFINITY)
73930 rlim = ~0;
73931 +
73932 + gr_learn_resource(current, RLIMIT_DATA, ex.a_data + ex.a_bss, 1);
73933 if (ex.a_data + ex.a_bss > rlim)
73934 return -ENOMEM;
73935
73936 @@ -261,6 +268,27 @@ static int load_aout_binary(struct linux_binprm * bprm)
73937
73938 install_exec_creds(bprm);
73939
73940 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
73941 + current->mm->pax_flags = 0UL;
73942 +#endif
73943 +
73944 +#ifdef CONFIG_PAX_PAGEEXEC
73945 + if (!(N_FLAGS(ex) & F_PAX_PAGEEXEC)) {
73946 + current->mm->pax_flags |= MF_PAX_PAGEEXEC;
73947 +
73948 +#ifdef CONFIG_PAX_EMUTRAMP
73949 + if (N_FLAGS(ex) & F_PAX_EMUTRAMP)
73950 + current->mm->pax_flags |= MF_PAX_EMUTRAMP;
73951 +#endif
73952 +
73953 +#ifdef CONFIG_PAX_MPROTECT
73954 + if (!(N_FLAGS(ex) & F_PAX_MPROTECT))
73955 + current->mm->pax_flags |= MF_PAX_MPROTECT;
73956 +#endif
73957 +
73958 + }
73959 +#endif
73960 +
73961 if (N_MAGIC(ex) == OMAGIC) {
73962 unsigned long text_addr, map_size;
73963 loff_t pos;
73964 @@ -312,7 +340,7 @@ static int load_aout_binary(struct linux_binprm * bprm)
73965 return error;
73966
73967 error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
73968 - PROT_READ | PROT_WRITE | PROT_EXEC,
73969 + PROT_READ | PROT_WRITE,
73970 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
73971 fd_offset + ex.a_text);
73972 if (error != N_DATADDR(ex))
73973 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
73974 index 6b65996..080df24 100644
73975 --- a/fs/binfmt_elf.c
73976 +++ b/fs/binfmt_elf.c
73977 @@ -35,6 +35,7 @@
73978 #include <linux/utsname.h>
73979 #include <linux/coredump.h>
73980 #include <linux/sched.h>
73981 +#include <linux/xattr.h>
73982 #include <asm/uaccess.h>
73983 #include <asm/param.h>
73984 #include <asm/page.h>
73985 @@ -48,7 +49,7 @@
73986
73987 static int load_elf_binary(struct linux_binprm *bprm);
73988 static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *,
73989 - int, int, unsigned long);
73990 + int, int, unsigned long) __intentional_overflow(-1);
73991
73992 #ifdef CONFIG_USELIB
73993 static int load_elf_library(struct file *);
73994 @@ -66,6 +67,14 @@ static int elf_core_dump(struct coredump_params *cprm);
73995 #define elf_core_dump NULL
73996 #endif
73997
73998 +#ifdef CONFIG_PAX_MPROTECT
73999 +static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags);
74000 +#endif
74001 +
74002 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
74003 +static void elf_handle_mmap(struct file *file);
74004 +#endif
74005 +
74006 #if ELF_EXEC_PAGESIZE > PAGE_SIZE
74007 #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
74008 #else
74009 @@ -85,6 +94,15 @@ static struct linux_binfmt elf_format = {
74010 .load_binary = load_elf_binary,
74011 .load_shlib = load_elf_library,
74012 .core_dump = elf_core_dump,
74013 +
74014 +#ifdef CONFIG_PAX_MPROTECT
74015 + .handle_mprotect= elf_handle_mprotect,
74016 +#endif
74017 +
74018 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
74019 + .handle_mmap = elf_handle_mmap,
74020 +#endif
74021 +
74022 .min_coredump = ELF_EXEC_PAGESIZE,
74023 };
74024
74025 @@ -92,6 +110,8 @@ static struct linux_binfmt elf_format = {
74026
74027 static int set_brk(unsigned long start, unsigned long end)
74028 {
74029 + unsigned long e = end;
74030 +
74031 start = ELF_PAGEALIGN(start);
74032 end = ELF_PAGEALIGN(end);
74033 if (end > start) {
74034 @@ -100,7 +120,7 @@ static int set_brk(unsigned long start, unsigned long end)
74035 if (BAD_ADDR(addr))
74036 return addr;
74037 }
74038 - current->mm->start_brk = current->mm->brk = end;
74039 + current->mm->start_brk = current->mm->brk = e;
74040 return 0;
74041 }
74042
74043 @@ -161,12 +181,13 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
74044 elf_addr_t __user *u_rand_bytes;
74045 const char *k_platform = ELF_PLATFORM;
74046 const char *k_base_platform = ELF_BASE_PLATFORM;
74047 - unsigned char k_rand_bytes[16];
74048 + u32 k_rand_bytes[4];
74049 int items;
74050 elf_addr_t *elf_info;
74051 int ei_index = 0;
74052 const struct cred *cred = current_cred();
74053 struct vm_area_struct *vma;
74054 + unsigned long saved_auxv[AT_VECTOR_SIZE];
74055
74056 /*
74057 * In some cases (e.g. Hyper-Threading), we want to avoid L1
74058 @@ -208,8 +229,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
74059 * Generate 16 random bytes for userspace PRNG seeding.
74060 */
74061 get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));
74062 - u_rand_bytes = (elf_addr_t __user *)
74063 - STACK_ALLOC(p, sizeof(k_rand_bytes));
74064 + prandom_seed(k_rand_bytes[0] ^ prandom_u32());
74065 + prandom_seed(k_rand_bytes[1] ^ prandom_u32());
74066 + prandom_seed(k_rand_bytes[2] ^ prandom_u32());
74067 + prandom_seed(k_rand_bytes[3] ^ prandom_u32());
74068 + p = STACK_ROUND(p, sizeof(k_rand_bytes));
74069 + u_rand_bytes = (elf_addr_t __user *) p;
74070 if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))
74071 return -EFAULT;
74072
74073 @@ -324,9 +349,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
74074 return -EFAULT;
74075 current->mm->env_end = p;
74076
74077 + memcpy(saved_auxv, elf_info, ei_index * sizeof(elf_addr_t));
74078 +
74079 /* Put the elf_info on the stack in the right place. */
74080 sp = (elf_addr_t __user *)envp + 1;
74081 - if (copy_to_user(sp, elf_info, ei_index * sizeof(elf_addr_t)))
74082 + if (copy_to_user(sp, saved_auxv, ei_index * sizeof(elf_addr_t)))
74083 return -EFAULT;
74084 return 0;
74085 }
74086 @@ -515,14 +542,14 @@ static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp,
74087 an ELF header */
74088
74089 static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
74090 - struct file *interpreter, unsigned long *interp_map_addr,
74091 + struct file *interpreter,
74092 unsigned long no_base, struct elf_phdr *interp_elf_phdata)
74093 {
74094 struct elf_phdr *eppnt;
74095 - unsigned long load_addr = 0;
74096 + unsigned long load_addr = 0, pax_task_size = TASK_SIZE;
74097 int load_addr_set = 0;
74098 unsigned long last_bss = 0, elf_bss = 0;
74099 - unsigned long error = ~0UL;
74100 + unsigned long error = -EINVAL;
74101 unsigned long total_size;
74102 int i;
74103
74104 @@ -542,6 +569,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
74105 goto out;
74106 }
74107
74108 +#ifdef CONFIG_PAX_SEGMEXEC
74109 + if (current->mm->pax_flags & MF_PAX_SEGMEXEC)
74110 + pax_task_size = SEGMEXEC_TASK_SIZE;
74111 +#endif
74112 +
74113 eppnt = interp_elf_phdata;
74114 for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
74115 if (eppnt->p_type == PT_LOAD) {
74116 @@ -565,8 +597,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
74117 map_addr = elf_map(interpreter, load_addr + vaddr,
74118 eppnt, elf_prot, elf_type, total_size);
74119 total_size = 0;
74120 - if (!*interp_map_addr)
74121 - *interp_map_addr = map_addr;
74122 error = map_addr;
74123 if (BAD_ADDR(map_addr))
74124 goto out;
74125 @@ -585,8 +615,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
74126 k = load_addr + eppnt->p_vaddr;
74127 if (BAD_ADDR(k) ||
74128 eppnt->p_filesz > eppnt->p_memsz ||
74129 - eppnt->p_memsz > TASK_SIZE ||
74130 - TASK_SIZE - eppnt->p_memsz < k) {
74131 + eppnt->p_memsz > pax_task_size ||
74132 + pax_task_size - eppnt->p_memsz < k) {
74133 error = -ENOMEM;
74134 goto out;
74135 }
74136 @@ -625,9 +655,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
74137 elf_bss = ELF_PAGESTART(elf_bss + ELF_MIN_ALIGN - 1);
74138
74139 /* Map the last of the bss segment */
74140 - error = vm_brk(elf_bss, last_bss - elf_bss);
74141 - if (BAD_ADDR(error))
74142 - goto out;
74143 + if (last_bss > elf_bss) {
74144 + error = vm_brk(elf_bss, last_bss - elf_bss);
74145 + if (BAD_ADDR(error))
74146 + goto out;
74147 + }
74148 }
74149
74150 error = load_addr;
74151 @@ -635,6 +667,336 @@ out:
74152 return error;
74153 }
74154
74155 +#ifdef CONFIG_PAX_PT_PAX_FLAGS
74156 +#ifdef CONFIG_PAX_SOFTMODE
74157 +static unsigned long pax_parse_pt_pax_softmode(const struct elf_phdr * const elf_phdata)
74158 +{
74159 + unsigned long pax_flags = 0UL;
74160 +
74161 +#ifdef CONFIG_PAX_PAGEEXEC
74162 + if (elf_phdata->p_flags & PF_PAGEEXEC)
74163 + pax_flags |= MF_PAX_PAGEEXEC;
74164 +#endif
74165 +
74166 +#ifdef CONFIG_PAX_SEGMEXEC
74167 + if (elf_phdata->p_flags & PF_SEGMEXEC)
74168 + pax_flags |= MF_PAX_SEGMEXEC;
74169 +#endif
74170 +
74171 +#ifdef CONFIG_PAX_EMUTRAMP
74172 + if ((elf_phdata->p_flags & PF_EMUTRAMP) && (pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)))
74173 + pax_flags |= MF_PAX_EMUTRAMP;
74174 +#endif
74175 +
74176 +#ifdef CONFIG_PAX_MPROTECT
74177 + if (elf_phdata->p_flags & PF_MPROTECT)
74178 + pax_flags |= MF_PAX_MPROTECT;
74179 +#endif
74180 +
74181 +#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
74182 + if (randomize_va_space && (elf_phdata->p_flags & PF_RANDMMAP))
74183 + pax_flags |= MF_PAX_RANDMMAP;
74184 +#endif
74185 +
74186 + return pax_flags;
74187 +}
74188 +#endif
74189 +
74190 +static unsigned long pax_parse_pt_pax_hardmode(const struct elf_phdr * const elf_phdata)
74191 +{
74192 + unsigned long pax_flags = 0UL;
74193 +
74194 +#ifdef CONFIG_PAX_PAGEEXEC
74195 + if (!(elf_phdata->p_flags & PF_NOPAGEEXEC))
74196 + pax_flags |= MF_PAX_PAGEEXEC;
74197 +#endif
74198 +
74199 +#ifdef CONFIG_PAX_SEGMEXEC
74200 + if (!(elf_phdata->p_flags & PF_NOSEGMEXEC))
74201 + pax_flags |= MF_PAX_SEGMEXEC;
74202 +#endif
74203 +
74204 +#ifdef CONFIG_PAX_EMUTRAMP
74205 + if (!(elf_phdata->p_flags & PF_NOEMUTRAMP))
74206 + pax_flags |= MF_PAX_EMUTRAMP;
74207 +#endif
74208 +
74209 +#ifdef CONFIG_PAX_MPROTECT
74210 + if (!(elf_phdata->p_flags & PF_NOMPROTECT))
74211 + pax_flags |= MF_PAX_MPROTECT;
74212 +#endif
74213 +
74214 +#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
74215 + if (randomize_va_space && !(elf_phdata->p_flags & PF_NORANDMMAP))
74216 + pax_flags |= MF_PAX_RANDMMAP;
74217 +#endif
74218 +
74219 + return pax_flags;
74220 +}
74221 +#endif
74222 +
74223 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
74224 +#ifdef CONFIG_PAX_SOFTMODE
74225 +static unsigned long pax_parse_xattr_pax_softmode(unsigned long pax_flags_softmode)
74226 +{
74227 + unsigned long pax_flags = 0UL;
74228 +
74229 +#ifdef CONFIG_PAX_PAGEEXEC
74230 + if (pax_flags_softmode & MF_PAX_PAGEEXEC)
74231 + pax_flags |= MF_PAX_PAGEEXEC;
74232 +#endif
74233 +
74234 +#ifdef CONFIG_PAX_SEGMEXEC
74235 + if (pax_flags_softmode & MF_PAX_SEGMEXEC)
74236 + pax_flags |= MF_PAX_SEGMEXEC;
74237 +#endif
74238 +
74239 +#ifdef CONFIG_PAX_EMUTRAMP
74240 + if ((pax_flags_softmode & MF_PAX_EMUTRAMP) && (pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)))
74241 + pax_flags |= MF_PAX_EMUTRAMP;
74242 +#endif
74243 +
74244 +#ifdef CONFIG_PAX_MPROTECT
74245 + if (pax_flags_softmode & MF_PAX_MPROTECT)
74246 + pax_flags |= MF_PAX_MPROTECT;
74247 +#endif
74248 +
74249 +#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
74250 + if (randomize_va_space && (pax_flags_softmode & MF_PAX_RANDMMAP))
74251 + pax_flags |= MF_PAX_RANDMMAP;
74252 +#endif
74253 +
74254 + return pax_flags;
74255 +}
74256 +#endif
74257 +
74258 +static unsigned long pax_parse_xattr_pax_hardmode(unsigned long pax_flags_hardmode)
74259 +{
74260 + unsigned long pax_flags = 0UL;
74261 +
74262 +#ifdef CONFIG_PAX_PAGEEXEC
74263 + if (!(pax_flags_hardmode & MF_PAX_PAGEEXEC))
74264 + pax_flags |= MF_PAX_PAGEEXEC;
74265 +#endif
74266 +
74267 +#ifdef CONFIG_PAX_SEGMEXEC
74268 + if (!(pax_flags_hardmode & MF_PAX_SEGMEXEC))
74269 + pax_flags |= MF_PAX_SEGMEXEC;
74270 +#endif
74271 +
74272 +#ifdef CONFIG_PAX_EMUTRAMP
74273 + if (!(pax_flags_hardmode & MF_PAX_EMUTRAMP))
74274 + pax_flags |= MF_PAX_EMUTRAMP;
74275 +#endif
74276 +
74277 +#ifdef CONFIG_PAX_MPROTECT
74278 + if (!(pax_flags_hardmode & MF_PAX_MPROTECT))
74279 + pax_flags |= MF_PAX_MPROTECT;
74280 +#endif
74281 +
74282 +#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
74283 + if (randomize_va_space && !(pax_flags_hardmode & MF_PAX_RANDMMAP))
74284 + pax_flags |= MF_PAX_RANDMMAP;
74285 +#endif
74286 +
74287 + return pax_flags;
74288 +}
74289 +#endif
74290 +
74291 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
74292 +static unsigned long pax_parse_defaults(void)
74293 +{
74294 + unsigned long pax_flags = 0UL;
74295 +
74296 +#ifdef CONFIG_PAX_SOFTMODE
74297 + if (pax_softmode)
74298 + return pax_flags;
74299 +#endif
74300 +
74301 +#ifdef CONFIG_PAX_PAGEEXEC
74302 + pax_flags |= MF_PAX_PAGEEXEC;
74303 +#endif
74304 +
74305 +#ifdef CONFIG_PAX_SEGMEXEC
74306 + pax_flags |= MF_PAX_SEGMEXEC;
74307 +#endif
74308 +
74309 +#ifdef CONFIG_PAX_MPROTECT
74310 + pax_flags |= MF_PAX_MPROTECT;
74311 +#endif
74312 +
74313 +#ifdef CONFIG_PAX_RANDMMAP
74314 + if (randomize_va_space)
74315 + pax_flags |= MF_PAX_RANDMMAP;
74316 +#endif
74317 +
74318 + return pax_flags;
74319 +}
74320 +
74321 +static unsigned long pax_parse_ei_pax(const struct elfhdr * const elf_ex)
74322 +{
74323 + unsigned long pax_flags = PAX_PARSE_FLAGS_FALLBACK;
74324 +
74325 +#ifdef CONFIG_PAX_EI_PAX
74326 +
74327 +#ifdef CONFIG_PAX_SOFTMODE
74328 + if (pax_softmode)
74329 + return pax_flags;
74330 +#endif
74331 +
74332 + pax_flags = 0UL;
74333 +
74334 +#ifdef CONFIG_PAX_PAGEEXEC
74335 + if (!(elf_ex->e_ident[EI_PAX] & EF_PAX_PAGEEXEC))
74336 + pax_flags |= MF_PAX_PAGEEXEC;
74337 +#endif
74338 +
74339 +#ifdef CONFIG_PAX_SEGMEXEC
74340 + if (!(elf_ex->e_ident[EI_PAX] & EF_PAX_SEGMEXEC))
74341 + pax_flags |= MF_PAX_SEGMEXEC;
74342 +#endif
74343 +
74344 +#ifdef CONFIG_PAX_EMUTRAMP
74345 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) && (elf_ex->e_ident[EI_PAX] & EF_PAX_EMUTRAMP))
74346 + pax_flags |= MF_PAX_EMUTRAMP;
74347 +#endif
74348 +
74349 +#ifdef CONFIG_PAX_MPROTECT
74350 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) && !(elf_ex->e_ident[EI_PAX] & EF_PAX_MPROTECT))
74351 + pax_flags |= MF_PAX_MPROTECT;
74352 +#endif
74353 +
74354 +#ifdef CONFIG_PAX_ASLR
74355 + if (randomize_va_space && !(elf_ex->e_ident[EI_PAX] & EF_PAX_RANDMMAP))
74356 + pax_flags |= MF_PAX_RANDMMAP;
74357 +#endif
74358 +
74359 +#endif
74360 +
74361 + return pax_flags;
74362 +
74363 +}
74364 +
74365 +static unsigned long pax_parse_pt_pax(const struct elfhdr * const elf_ex, const struct elf_phdr * const elf_phdata)
74366 +{
74367 +
74368 +#ifdef CONFIG_PAX_PT_PAX_FLAGS
74369 + unsigned long i;
74370 +
74371 + for (i = 0UL; i < elf_ex->e_phnum; i++)
74372 + if (elf_phdata[i].p_type == PT_PAX_FLAGS) {
74373 + if (((elf_phdata[i].p_flags & PF_PAGEEXEC) && (elf_phdata[i].p_flags & PF_NOPAGEEXEC)) ||
74374 + ((elf_phdata[i].p_flags & PF_SEGMEXEC) && (elf_phdata[i].p_flags & PF_NOSEGMEXEC)) ||
74375 + ((elf_phdata[i].p_flags & PF_EMUTRAMP) && (elf_phdata[i].p_flags & PF_NOEMUTRAMP)) ||
74376 + ((elf_phdata[i].p_flags & PF_MPROTECT) && (elf_phdata[i].p_flags & PF_NOMPROTECT)) ||
74377 + ((elf_phdata[i].p_flags & PF_RANDMMAP) && (elf_phdata[i].p_flags & PF_NORANDMMAP)))
74378 + return PAX_PARSE_FLAGS_FALLBACK;
74379 +
74380 +#ifdef CONFIG_PAX_SOFTMODE
74381 + if (pax_softmode)
74382 + return pax_parse_pt_pax_softmode(&elf_phdata[i]);
74383 + else
74384 +#endif
74385 +
74386 + return pax_parse_pt_pax_hardmode(&elf_phdata[i]);
74387 + break;
74388 + }
74389 +#endif
74390 +
74391 + return PAX_PARSE_FLAGS_FALLBACK;
74392 +}
74393 +
74394 +static unsigned long pax_parse_xattr_pax(struct file * const file)
74395 +{
74396 +
74397 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
74398 + ssize_t xattr_size, i;
74399 + unsigned char xattr_value[sizeof("pemrs") - 1];
74400 + unsigned long pax_flags_hardmode = 0UL, pax_flags_softmode = 0UL;
74401 +
74402 + xattr_size = pax_getxattr(file->f_path.dentry, xattr_value, sizeof xattr_value);
74403 + if (xattr_size < 0 || xattr_size > sizeof xattr_value)
74404 + return PAX_PARSE_FLAGS_FALLBACK;
74405 +
74406 + for (i = 0; i < xattr_size; i++)
74407 + switch (xattr_value[i]) {
74408 + default:
74409 + return PAX_PARSE_FLAGS_FALLBACK;
74410 +
74411 +#define parse_flag(option1, option2, flag) \
74412 + case option1: \
74413 + if (pax_flags_hardmode & MF_PAX_##flag) \
74414 + return PAX_PARSE_FLAGS_FALLBACK;\
74415 + pax_flags_hardmode |= MF_PAX_##flag; \
74416 + break; \
74417 + case option2: \
74418 + if (pax_flags_softmode & MF_PAX_##flag) \
74419 + return PAX_PARSE_FLAGS_FALLBACK;\
74420 + pax_flags_softmode |= MF_PAX_##flag; \
74421 + break;
74422 +
74423 + parse_flag('p', 'P', PAGEEXEC);
74424 + parse_flag('e', 'E', EMUTRAMP);
74425 + parse_flag('m', 'M', MPROTECT);
74426 + parse_flag('r', 'R', RANDMMAP);
74427 + parse_flag('s', 'S', SEGMEXEC);
74428 +
74429 +#undef parse_flag
74430 + }
74431 +
74432 + if (pax_flags_hardmode & pax_flags_softmode)
74433 + return PAX_PARSE_FLAGS_FALLBACK;
74434 +
74435 +#ifdef CONFIG_PAX_SOFTMODE
74436 + if (pax_softmode)
74437 + return pax_parse_xattr_pax_softmode(pax_flags_softmode);
74438 + else
74439 +#endif
74440 +
74441 + return pax_parse_xattr_pax_hardmode(pax_flags_hardmode);
74442 +#else
74443 + return PAX_PARSE_FLAGS_FALLBACK;
74444 +#endif
74445 +
74446 +}
74447 +
74448 +static long pax_parse_pax_flags(const struct elfhdr * const elf_ex, const struct elf_phdr * const elf_phdata, struct file * const file)
74449 +{
74450 + unsigned long pax_flags, ei_pax_flags, pt_pax_flags, xattr_pax_flags;
74451 +
74452 + pax_flags = pax_parse_defaults();
74453 + ei_pax_flags = pax_parse_ei_pax(elf_ex);
74454 + pt_pax_flags = pax_parse_pt_pax(elf_ex, elf_phdata);
74455 + xattr_pax_flags = pax_parse_xattr_pax(file);
74456 +
74457 + if (pt_pax_flags != PAX_PARSE_FLAGS_FALLBACK &&
74458 + xattr_pax_flags != PAX_PARSE_FLAGS_FALLBACK &&
74459 + pt_pax_flags != xattr_pax_flags)
74460 + return -EINVAL;
74461 + if (xattr_pax_flags != PAX_PARSE_FLAGS_FALLBACK)
74462 + pax_flags = xattr_pax_flags;
74463 + else if (pt_pax_flags != PAX_PARSE_FLAGS_FALLBACK)
74464 + pax_flags = pt_pax_flags;
74465 + else if (ei_pax_flags != PAX_PARSE_FLAGS_FALLBACK)
74466 + pax_flags = ei_pax_flags;
74467 +
74468 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
74469 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
74470 + if ((__supported_pte_mask & _PAGE_NX))
74471 + pax_flags &= ~MF_PAX_SEGMEXEC;
74472 + else
74473 + pax_flags &= ~MF_PAX_PAGEEXEC;
74474 + }
74475 +#endif
74476 +
74477 + if (0 > pax_check_flags(&pax_flags))
74478 + return -EINVAL;
74479 +
74480 + current->mm->pax_flags = pax_flags;
74481 + return 0;
74482 +}
74483 +#endif
74484 +
74485 /*
74486 * These are the functions used to load ELF style executables and shared
74487 * libraries. There is no binary dependent code anywhere else.
74488 @@ -648,6 +1010,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
74489 {
74490 unsigned long random_variable = 0;
74491
74492 +#ifdef CONFIG_PAX_RANDUSTACK
74493 + if (current->mm->pax_flags & MF_PAX_RANDMMAP)
74494 + return stack_top - current->mm->delta_stack;
74495 +#endif
74496 +
74497 if ((current->flags & PF_RANDOMIZE) &&
74498 !(current->personality & ADDR_NO_RANDOMIZE)) {
74499 random_variable = (unsigned long) get_random_int();
74500 @@ -667,7 +1034,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
74501 unsigned long load_addr = 0, load_bias = 0;
74502 int load_addr_set = 0;
74503 char * elf_interpreter = NULL;
74504 - unsigned long error;
74505 + unsigned long error = 0;
74506 struct elf_phdr *elf_ppnt, *elf_phdata, *interp_elf_phdata = NULL;
74507 unsigned long elf_bss, elf_brk;
74508 int retval, i;
74509 @@ -682,6 +1049,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
74510 struct elfhdr interp_elf_ex;
74511 } *loc;
74512 struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE;
74513 + unsigned long pax_task_size;
74514
74515 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
74516 if (!loc) {
74517 @@ -840,6 +1208,77 @@ static int load_elf_binary(struct linux_binprm *bprm)
74518 /* Do this immediately, since STACK_TOP as used in setup_arg_pages
74519 may depend on the personality. */
74520 SET_PERSONALITY2(loc->elf_ex, &arch_state);
74521 +
74522 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
74523 + current->mm->pax_flags = 0UL;
74524 +#endif
74525 +
74526 +#ifdef CONFIG_PAX_DLRESOLVE
74527 + current->mm->call_dl_resolve = 0UL;
74528 +#endif
74529 +
74530 +#if defined(CONFIG_PPC32) && defined(CONFIG_PAX_EMUSIGRT)
74531 + current->mm->call_syscall = 0UL;
74532 +#endif
74533 +
74534 +#ifdef CONFIG_PAX_ASLR
74535 + current->mm->delta_mmap = 0UL;
74536 + current->mm->delta_stack = 0UL;
74537 +#endif
74538 +
74539 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
74540 + if (0 > pax_parse_pax_flags(&loc->elf_ex, elf_phdata, bprm->file)) {
74541 + retval = -EINVAL;
74542 + goto out_free_dentry;
74543 + }
74544 +#endif
74545 +
74546 +#ifdef CONFIG_PAX_HAVE_ACL_FLAGS
74547 + pax_set_initial_flags(bprm);
74548 +#elif defined(CONFIG_PAX_HOOK_ACL_FLAGS)
74549 + if (pax_set_initial_flags_func)
74550 + (pax_set_initial_flags_func)(bprm);
74551 +#endif
74552 +
74553 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
74554 + if ((current->mm->pax_flags & MF_PAX_PAGEEXEC) && !(__supported_pte_mask & _PAGE_NX)) {
74555 + current->mm->context.user_cs_limit = PAGE_SIZE;
74556 + current->mm->def_flags |= VM_PAGEEXEC | VM_NOHUGEPAGE;
74557 + }
74558 +#endif
74559 +
74560 +#ifdef CONFIG_PAX_SEGMEXEC
74561 + if (current->mm->pax_flags & MF_PAX_SEGMEXEC) {
74562 + current->mm->context.user_cs_base = SEGMEXEC_TASK_SIZE;
74563 + current->mm->context.user_cs_limit = TASK_SIZE-SEGMEXEC_TASK_SIZE;
74564 + pax_task_size = SEGMEXEC_TASK_SIZE;
74565 + current->mm->def_flags |= VM_NOHUGEPAGE;
74566 + } else
74567 +#endif
74568 +
74569 + pax_task_size = TASK_SIZE;
74570 +
74571 +#if defined(CONFIG_ARCH_TRACK_EXEC_LIMIT) || defined(CONFIG_PAX_SEGMEXEC)
74572 + if (current->mm->pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
74573 + set_user_cs(current->mm->context.user_cs_base, current->mm->context.user_cs_limit, get_cpu());
74574 + put_cpu();
74575 + }
74576 +#endif
74577 +
74578 +#ifdef CONFIG_PAX_ASLR
74579 + if (current->mm->pax_flags & MF_PAX_RANDMMAP) {
74580 + current->mm->delta_mmap = (pax_get_random_long() & ((1UL << PAX_DELTA_MMAP_LEN)-1)) << PAGE_SHIFT;
74581 + current->mm->delta_stack = (pax_get_random_long() & ((1UL << PAX_DELTA_STACK_LEN)-1)) << PAGE_SHIFT;
74582 + }
74583 +#endif
74584 +
74585 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
74586 + if (current->mm->pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
74587 + executable_stack = EXSTACK_DISABLE_X;
74588 + current->personality &= ~READ_IMPLIES_EXEC;
74589 + } else
74590 +#endif
74591 +
74592 if (elf_read_implies_exec(loc->elf_ex, executable_stack))
74593 current->personality |= READ_IMPLIES_EXEC;
74594
74595 @@ -915,8 +1354,21 @@ static int load_elf_binary(struct linux_binprm *bprm)
74596 if (current->flags & PF_RANDOMIZE)
74597 load_bias += arch_mmap_rnd();
74598 load_bias = ELF_PAGESTART(load_bias);
74599 - total_size = total_mapping_size(elf_phdata,
74600 - loc->elf_ex.e_phnum);
74601 +
74602 +#ifdef CONFIG_PAX_RANDMMAP
74603 + /* PaX: randomize base address at the default exe base if requested */
74604 + if ((current->mm->pax_flags & MF_PAX_RANDMMAP) && elf_interpreter) {
74605 +#ifdef CONFIG_SPARC64
74606 + load_bias = (pax_get_random_long() & ((1UL << PAX_DELTA_MMAP_LEN) - 1)) << (PAGE_SHIFT+1);
74607 +#else
74608 + load_bias = (pax_get_random_long() & ((1UL << PAX_DELTA_MMAP_LEN) - 1)) << PAGE_SHIFT;
74609 +#endif
74610 + load_bias = ELF_PAGESTART(PAX_ELF_ET_DYN_BASE - vaddr + load_bias);
74611 + elf_flags |= MAP_FIXED;
74612 + }
74613 +#endif
74614 +
74615 + total_size = total_mapping_size(elf_phdata, loc->elf_ex.e_phnum);
74616 if (!total_size) {
74617 retval = -EINVAL;
74618 goto out_free_dentry;
74619 @@ -952,9 +1404,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
74620 * allowed task size. Note that p_filesz must always be
74621 * <= p_memsz so it is only necessary to check p_memsz.
74622 */
74623 - if (BAD_ADDR(k) || elf_ppnt->p_filesz > elf_ppnt->p_memsz ||
74624 - elf_ppnt->p_memsz > TASK_SIZE ||
74625 - TASK_SIZE - elf_ppnt->p_memsz < k) {
74626 + if (k >= pax_task_size || elf_ppnt->p_filesz > elf_ppnt->p_memsz ||
74627 + elf_ppnt->p_memsz > pax_task_size ||
74628 + pax_task_size - elf_ppnt->p_memsz < k) {
74629 /* set_brk can never work. Avoid overflows. */
74630 retval = -EINVAL;
74631 goto out_free_dentry;
74632 @@ -990,16 +1442,43 @@ static int load_elf_binary(struct linux_binprm *bprm)
74633 if (retval)
74634 goto out_free_dentry;
74635 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
74636 - retval = -EFAULT; /* Nobody gets to see this, but.. */
74637 - goto out_free_dentry;
74638 + /*
74639 + * This bss-zeroing can fail if the ELF
74640 + * file specifies odd protections. So
74641 + * we don't check the return value
74642 + */
74643 }
74644
74645 +#ifdef CONFIG_PAX_RANDMMAP
74646 + if (current->mm->pax_flags & MF_PAX_RANDMMAP) {
74647 + unsigned long start, size, flags;
74648 + vm_flags_t vm_flags;
74649 +
74650 + start = ELF_PAGEALIGN(elf_brk);
74651 + size = PAGE_SIZE + ((pax_get_random_long() & ((1UL << 22) - 1UL)) << 4);
74652 + flags = MAP_FIXED | MAP_PRIVATE;
74653 + vm_flags = VM_DONTEXPAND | VM_DONTDUMP;
74654 +
74655 + down_write(&current->mm->mmap_sem);
74656 + start = get_unmapped_area(NULL, start, PAGE_ALIGN(size), 0, flags);
74657 + retval = -ENOMEM;
74658 + if (!IS_ERR_VALUE(start) && !find_vma_intersection(current->mm, start, start + size + PAGE_SIZE)) {
74659 +// if (current->personality & ADDR_NO_RANDOMIZE)
74660 +// vm_flags |= VM_READ | VM_MAYREAD;
74661 + start = mmap_region(NULL, start, PAGE_ALIGN(size), vm_flags, 0);
74662 + retval = IS_ERR_VALUE(start) ? start : 0;
74663 + }
74664 + up_write(&current->mm->mmap_sem);
74665 + if (retval == 0)
74666 + retval = set_brk(start + size, start + size + PAGE_SIZE);
74667 + if (retval < 0)
74668 + goto out_free_dentry;
74669 + }
74670 +#endif
74671 +
74672 if (elf_interpreter) {
74673 - unsigned long interp_map_addr = 0;
74674 -
74675 elf_entry = load_elf_interp(&loc->interp_elf_ex,
74676 interpreter,
74677 - &interp_map_addr,
74678 load_bias, interp_elf_phdata);
74679 if (!IS_ERR((void *)elf_entry)) {
74680 /*
74681 @@ -1050,6 +1529,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
74682 current->mm->end_data = end_data;
74683 current->mm->start_stack = bprm->p;
74684
74685 +#ifndef CONFIG_PAX_RANDMMAP
74686 if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) {
74687 current->mm->brk = current->mm->start_brk =
74688 arch_randomize_brk(current->mm);
74689 @@ -1057,6 +1537,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
74690 current->brk_randomized = 1;
74691 #endif
74692 }
74693 +#endif
74694
74695 if (current->personality & MMAP_PAGE_ZERO) {
74696 /* Why this, you ask??? Well SVr4 maps page 0 as read-only,
74697 @@ -1225,7 +1706,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
74698 * Decide what to dump of a segment, part, all or none.
74699 */
74700 static unsigned long vma_dump_size(struct vm_area_struct *vma,
74701 - unsigned long mm_flags)
74702 + unsigned long mm_flags, long signr)
74703 {
74704 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
74705
74706 @@ -1263,7 +1744,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
74707 if (vma->vm_file == NULL)
74708 return 0;
74709
74710 - if (FILTER(MAPPED_PRIVATE))
74711 + if (signr == SIGKILL || FILTER(MAPPED_PRIVATE))
74712 goto whole;
74713
74714 /*
74715 @@ -1363,7 +1844,7 @@ static void fill_elf_header(struct elfhdr *elf, int segs,
74716 return;
74717 }
74718
74719 -static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
74720 +static void fill_elf_note_phdr(struct elf_phdr *phdr, size_t sz, loff_t offset)
74721 {
74722 phdr->p_type = PT_NOTE;
74723 phdr->p_offset = offset;
74724 @@ -1470,9 +1951,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
74725 {
74726 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
74727 int i = 0;
74728 - do
74729 + do {
74730 i += 2;
74731 - while (auxv[i - 2] != AT_NULL);
74732 + } while (auxv[i - 2] != AT_NULL);
74733 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
74734 }
74735
74736 @@ -1481,7 +1962,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
74737 {
74738 mm_segment_t old_fs = get_fs();
74739 set_fs(KERNEL_DS);
74740 - copy_siginfo_to_user((user_siginfo_t __user *) csigdata, siginfo);
74741 + copy_siginfo_to_user((user_siginfo_t __force_user *) csigdata, siginfo);
74742 set_fs(old_fs);
74743 fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
74744 }
74745 @@ -2201,7 +2682,7 @@ static int elf_core_dump(struct coredump_params *cprm)
74746 vma = next_vma(vma, gate_vma)) {
74747 unsigned long dump_size;
74748
74749 - dump_size = vma_dump_size(vma, cprm->mm_flags);
74750 + dump_size = vma_dump_size(vma, cprm->mm_flags, cprm->siginfo->si_signo);
74751 vma_filesz[i++] = dump_size;
74752 vma_data_size += dump_size;
74753 }
74754 @@ -2309,6 +2790,167 @@ out:
74755
74756 #endif /* CONFIG_ELF_CORE */
74757
74758 +#ifdef CONFIG_PAX_MPROTECT
74759 +/* PaX: non-PIC ELF libraries need relocations on their executable segments
74760 + * therefore we'll grant them VM_MAYWRITE once during their life. Similarly
74761 + * we'll remove VM_MAYWRITE for good on RELRO segments.
74762 + *
74763 + * The checks favour ld-linux.so behaviour which operates on a per ELF segment
74764 + * basis because we want to allow the common case and not the special ones.
74765 + */
74766 +static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags)
74767 +{
74768 + struct elfhdr elf_h;
74769 + struct elf_phdr elf_p;
74770 + unsigned long i;
74771 + unsigned long oldflags;
74772 + bool is_textrel_rw, is_textrel_rx, is_relro;
74773 +
74774 + if (!(vma->vm_mm->pax_flags & MF_PAX_MPROTECT) || !vma->vm_file)
74775 + return;
74776 +
74777 + oldflags = vma->vm_flags & (VM_MAYEXEC | VM_MAYWRITE | VM_MAYREAD | VM_EXEC | VM_WRITE | VM_READ);
74778 + newflags &= VM_MAYEXEC | VM_MAYWRITE | VM_MAYREAD | VM_EXEC | VM_WRITE | VM_READ;
74779 +
74780 +#ifdef CONFIG_PAX_ELFRELOCS
74781 + /* possible TEXTREL */
74782 + is_textrel_rw = !vma->anon_vma && oldflags == (VM_MAYEXEC | VM_MAYREAD | VM_EXEC | VM_READ) && newflags == (VM_WRITE | VM_READ);
74783 + is_textrel_rx = vma->anon_vma && oldflags == (VM_MAYEXEC | VM_MAYWRITE | VM_MAYREAD | VM_WRITE | VM_READ) && newflags == (VM_EXEC | VM_READ);
74784 +#else
74785 + is_textrel_rw = false;
74786 + is_textrel_rx = false;
74787 +#endif
74788 +
74789 + /* possible RELRO */
74790 + is_relro = vma->anon_vma && oldflags == (VM_MAYWRITE | VM_MAYREAD | VM_READ) && newflags == (VM_MAYWRITE | VM_MAYREAD | VM_READ);
74791 +
74792 + if (!is_textrel_rw && !is_textrel_rx && !is_relro)
74793 + return;
74794 +
74795 + if (sizeof(elf_h) != kernel_read(vma->vm_file, 0UL, (char *)&elf_h, sizeof(elf_h)) ||
74796 + memcmp(elf_h.e_ident, ELFMAG, SELFMAG) ||
74797 +
74798 +#ifdef CONFIG_PAX_ETEXECRELOCS
74799 + ((is_textrel_rw || is_textrel_rx) && (elf_h.e_type != ET_DYN && elf_h.e_type != ET_EXEC)) ||
74800 +#else
74801 + ((is_textrel_rw || is_textrel_rx) && elf_h.e_type != ET_DYN) ||
74802 +#endif
74803 +
74804 + (is_relro && (elf_h.e_type != ET_DYN && elf_h.e_type != ET_EXEC)) ||
74805 + !elf_check_arch(&elf_h) ||
74806 + elf_h.e_phentsize != sizeof(struct elf_phdr) ||
74807 + elf_h.e_phnum > 65536UL / sizeof(struct elf_phdr))
74808 + return;
74809 +
74810 + for (i = 0UL; i < elf_h.e_phnum; i++) {
74811 + if (sizeof(elf_p) != kernel_read(vma->vm_file, elf_h.e_phoff + i*sizeof(elf_p), (char *)&elf_p, sizeof(elf_p)))
74812 + return;
74813 + switch (elf_p.p_type) {
74814 + case PT_DYNAMIC:
74815 + if (!is_textrel_rw && !is_textrel_rx)
74816 + continue;
74817 + i = 0UL;
74818 + while ((i+1) * sizeof(elf_dyn) <= elf_p.p_filesz) {
74819 + elf_dyn dyn;
74820 +
74821 + if (sizeof(dyn) != kernel_read(vma->vm_file, elf_p.p_offset + i*sizeof(dyn), (char *)&dyn, sizeof(dyn)))
74822 + break;
74823 + if (dyn.d_tag == DT_NULL)
74824 + break;
74825 + if (dyn.d_tag == DT_TEXTREL || (dyn.d_tag == DT_FLAGS && (dyn.d_un.d_val & DF_TEXTREL))) {
74826 + gr_log_textrel(vma, is_textrel_rw);
74827 + if (is_textrel_rw)
74828 + vma->vm_flags |= VM_MAYWRITE;
74829 + else
74830 + /* PaX: disallow write access after relocs are done, hopefully noone else needs it... */
74831 + vma->vm_flags &= ~VM_MAYWRITE;
74832 + break;
74833 + }
74834 + i++;
74835 + }
74836 + is_textrel_rw = false;
74837 + is_textrel_rx = false;
74838 + continue;
74839 +
74840 + case PT_GNU_RELRO:
74841 + if (!is_relro)
74842 + continue;
74843 + if ((elf_p.p_offset >> PAGE_SHIFT) == vma->vm_pgoff && ELF_PAGEALIGN(elf_p.p_memsz) == vma->vm_end - vma->vm_start)
74844 + vma->vm_flags &= ~VM_MAYWRITE;
74845 + is_relro = false;
74846 + continue;
74847 +
74848 +#ifdef CONFIG_PAX_PT_PAX_FLAGS
74849 + case PT_PAX_FLAGS: {
74850 + const char *msg_mprotect = "", *msg_emutramp = "";
74851 + char *buffer_lib, *buffer_exe;
74852 +
74853 + if (elf_p.p_flags & PF_NOMPROTECT)
74854 + msg_mprotect = "MPROTECT disabled";
74855 +
74856 +#ifdef CONFIG_PAX_EMUTRAMP
74857 + if (!(vma->vm_mm->pax_flags & MF_PAX_EMUTRAMP) && !(elf_p.p_flags & PF_NOEMUTRAMP))
74858 + msg_emutramp = "EMUTRAMP enabled";
74859 +#endif
74860 +
74861 + if (!msg_mprotect[0] && !msg_emutramp[0])
74862 + continue;
74863 +
74864 + if (!printk_ratelimit())
74865 + continue;
74866 +
74867 + buffer_lib = (char *)__get_free_page(GFP_KERNEL);
74868 + buffer_exe = (char *)__get_free_page(GFP_KERNEL);
74869 + if (buffer_lib && buffer_exe) {
74870 + char *path_lib, *path_exe;
74871 +
74872 + path_lib = pax_get_path(&vma->vm_file->f_path, buffer_lib, PAGE_SIZE);
74873 + path_exe = pax_get_path(&vma->vm_mm->exe_file->f_path, buffer_exe, PAGE_SIZE);
74874 +
74875 + pr_info("PAX: %s wants %s%s%s on %s\n", path_lib, msg_mprotect,
74876 + (msg_mprotect[0] && msg_emutramp[0] ? " and " : ""), msg_emutramp, path_exe);
74877 +
74878 + }
74879 + free_page((unsigned long)buffer_exe);
74880 + free_page((unsigned long)buffer_lib);
74881 + continue;
74882 + }
74883 +#endif
74884 +
74885 + }
74886 + }
74887 +}
74888 +#endif
74889 +
74890 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
74891 +
74892 +extern int grsec_enable_log_rwxmaps;
74893 +
74894 +static void elf_handle_mmap(struct file *file)
74895 +{
74896 + struct elfhdr elf_h;
74897 + struct elf_phdr elf_p;
74898 + unsigned long i;
74899 +
74900 + if (!grsec_enable_log_rwxmaps)
74901 + return;
74902 +
74903 + if (sizeof(elf_h) != kernel_read(file, 0UL, (char *)&elf_h, sizeof(elf_h)) ||
74904 + memcmp(elf_h.e_ident, ELFMAG, SELFMAG) ||
74905 + (elf_h.e_type != ET_DYN && elf_h.e_type != ET_EXEC) || !elf_check_arch(&elf_h) ||
74906 + elf_h.e_phentsize != sizeof(struct elf_phdr) ||
74907 + elf_h.e_phnum > 65536UL / sizeof(struct elf_phdr))
74908 + return;
74909 +
74910 + for (i = 0UL; i < elf_h.e_phnum; i++) {
74911 + if (sizeof(elf_p) != kernel_read(file, elf_h.e_phoff + i*sizeof(elf_p), (char *)&elf_p, sizeof(elf_p)))
74912 + return;
74913 + if (elf_p.p_type == PT_GNU_STACK && (elf_p.p_flags & PF_X))
74914 + gr_log_ptgnustack(file);
74915 + }
74916 +}
74917 +#endif
74918 +
74919 static int __init init_elf_binfmt(void)
74920 {
74921 register_binfmt(&elf_format);
74922 diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
74923 index d3634bf..10fc244 100644
74924 --- a/fs/binfmt_elf_fdpic.c
74925 +++ b/fs/binfmt_elf_fdpic.c
74926 @@ -1296,7 +1296,7 @@ static inline void fill_elf_fdpic_header(struct elfhdr *elf, int segs)
74927 return;
74928 }
74929
74930 -static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
74931 +static inline void fill_elf_note_phdr(struct elf_phdr *phdr, size_t sz, loff_t offset)
74932 {
74933 phdr->p_type = PT_NOTE;
74934 phdr->p_offset = offset;
74935 @@ -1667,7 +1667,7 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
74936
74937 /* Write notes phdr entry */
74938 {
74939 - int sz = 0;
74940 + size_t sz = 0;
74941
74942 for (i = 0; i < numnote; i++)
74943 sz += notesize(notes + i);
74944 diff --git a/fs/block_dev.c b/fs/block_dev.c
74945 index 1982437..dc80c28 100644
74946 --- a/fs/block_dev.c
74947 +++ b/fs/block_dev.c
74948 @@ -738,7 +738,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
74949 else if (bdev->bd_contains == bdev)
74950 return true; /* is a whole device which isn't held */
74951
74952 - else if (whole->bd_holder == bd_may_claim)
74953 + else if (whole->bd_holder == (void *)bd_may_claim)
74954 return true; /* is a partition of a device that is being partitioned */
74955 else if (whole->bd_holder != NULL)
74956 return false; /* is a partition of a held device */
74957 diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
74958 index 54114b4..580cfc9 100644
74959 --- a/fs/btrfs/ctree.c
74960 +++ b/fs/btrfs/ctree.c
74961 @@ -1180,9 +1180,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
74962 free_extent_buffer(buf);
74963 add_root_to_dirty_list(root);
74964 } else {
74965 - if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
74966 - parent_start = parent->start;
74967 - else
74968 + if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
74969 + if (parent)
74970 + parent_start = parent->start;
74971 + else
74972 + parent_start = 0;
74973 + } else
74974 parent_start = 0;
74975
74976 WARN_ON(trans->transid != btrfs_header_generation(parent));
74977 diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
74978 index a2ae427..53c2e98 100644
74979 --- a/fs/btrfs/delayed-inode.c
74980 +++ b/fs/btrfs/delayed-inode.c
74981 @@ -462,7 +462,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
74982
74983 static void finish_one_item(struct btrfs_delayed_root *delayed_root)
74984 {
74985 - int seq = atomic_inc_return(&delayed_root->items_seq);
74986 + int seq = atomic_inc_return_unchecked(&delayed_root->items_seq);
74987 if ((atomic_dec_return(&delayed_root->items) <
74988 BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) &&
74989 waitqueue_active(&delayed_root->wait))
74990 @@ -1412,7 +1412,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
74991
74992 static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
74993 {
74994 - int val = atomic_read(&delayed_root->items_seq);
74995 + int val = atomic_read_unchecked(&delayed_root->items_seq);
74996
74997 if (val < seq || val >= seq + BTRFS_DELAYED_BATCH)
74998 return 1;
74999 @@ -1437,7 +1437,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
75000 int seq;
75001 int ret;
75002
75003 - seq = atomic_read(&delayed_root->items_seq);
75004 + seq = atomic_read_unchecked(&delayed_root->items_seq);
75005
75006 ret = btrfs_wq_run_delayed_node(delayed_root, fs_info, 0);
75007 if (ret)
75008 diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h
75009 index f70119f..ab5894d 100644
75010 --- a/fs/btrfs/delayed-inode.h
75011 +++ b/fs/btrfs/delayed-inode.h
75012 @@ -43,7 +43,7 @@ struct btrfs_delayed_root {
75013 */
75014 struct list_head prepare_list;
75015 atomic_t items; /* for delayed items */
75016 - atomic_t items_seq; /* for delayed items */
75017 + atomic_unchecked_t items_seq; /* for delayed items */
75018 int nodes; /* for delayed nodes */
75019 wait_queue_head_t wait;
75020 };
75021 @@ -90,7 +90,7 @@ static inline void btrfs_init_delayed_root(
75022 struct btrfs_delayed_root *delayed_root)
75023 {
75024 atomic_set(&delayed_root->items, 0);
75025 - atomic_set(&delayed_root->items_seq, 0);
75026 + atomic_set_unchecked(&delayed_root->items_seq, 0);
75027 delayed_root->nodes = 0;
75028 spin_lock_init(&delayed_root->lock);
75029 init_waitqueue_head(&delayed_root->wait);
75030 diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
75031 index cd7ef34..1e31ae3 100644
75032 --- a/fs/btrfs/super.c
75033 +++ b/fs/btrfs/super.c
75034 @@ -265,7 +265,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
75035 function, line, errstr);
75036 return;
75037 }
75038 - ACCESS_ONCE(trans->transaction->aborted) = errno;
75039 + ACCESS_ONCE_RW(trans->transaction->aborted) = errno;
75040 /* Wake up anybody who may be waiting on this transaction */
75041 wake_up(&root->fs_info->transaction_wait);
75042 wake_up(&root->fs_info->transaction_blocked_wait);
75043 diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
75044 index 603b0cc..8e3f600 100644
75045 --- a/fs/btrfs/sysfs.c
75046 +++ b/fs/btrfs/sysfs.c
75047 @@ -481,7 +481,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
75048 for (set = 0; set < FEAT_MAX; set++) {
75049 int i;
75050 struct attribute *attrs[2];
75051 - struct attribute_group agroup = {
75052 + attribute_group_no_const agroup = {
75053 .name = "features",
75054 .attrs = attrs,
75055 };
75056 diff --git a/fs/btrfs/tests/free-space-tests.c b/fs/btrfs/tests/free-space-tests.c
75057 index 2299bfd..4098e72 100644
75058 --- a/fs/btrfs/tests/free-space-tests.c
75059 +++ b/fs/btrfs/tests/free-space-tests.c
75060 @@ -463,7 +463,9 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache)
75061 * extent entry.
75062 */
75063 use_bitmap_op = cache->free_space_ctl->op->use_bitmap;
75064 - cache->free_space_ctl->op->use_bitmap = test_use_bitmap;
75065 + pax_open_kernel();
75066 + *(void **)&cache->free_space_ctl->op->use_bitmap = test_use_bitmap;
75067 + pax_close_kernel();
75068
75069 /*
75070 * Extent entry covering free space range [128Mb - 256Kb, 128Mb - 128Kb[
75071 @@ -870,7 +872,9 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache)
75072 if (ret)
75073 return ret;
75074
75075 - cache->free_space_ctl->op->use_bitmap = use_bitmap_op;
75076 + pax_open_kernel();
75077 + *(void **)&cache->free_space_ctl->op->use_bitmap = use_bitmap_op;
75078 + pax_close_kernel();
75079 __btrfs_remove_free_space_cache(cache->free_space_ctl);
75080
75081 return 0;
75082 diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h
75083 index 6916a78..4598936 100644
75084 --- a/fs/btrfs/tree-log.h
75085 +++ b/fs/btrfs/tree-log.h
75086 @@ -45,7 +45,7 @@ static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx)
75087 static inline void btrfs_set_log_full_commit(struct btrfs_fs_info *fs_info,
75088 struct btrfs_trans_handle *trans)
75089 {
75090 - ACCESS_ONCE(fs_info->last_trans_log_full_commit) = trans->transid;
75091 + ACCESS_ONCE_RW(fs_info->last_trans_log_full_commit) = trans->transid;
75092 }
75093
75094 static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info,
75095 diff --git a/fs/buffer.c b/fs/buffer.c
75096 index 1cf7a53..b49f8c0 100644
75097 --- a/fs/buffer.c
75098 +++ b/fs/buffer.c
75099 @@ -3440,7 +3440,7 @@ void __init buffer_init(void)
75100 bh_cachep = kmem_cache_create("buffer_head",
75101 sizeof(struct buffer_head), 0,
75102 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
75103 - SLAB_MEM_SPREAD),
75104 + SLAB_MEM_SPREAD|SLAB_NO_SANITIZE),
75105 NULL);
75106
75107 /*
75108 diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
75109 index 6af790f..ec4c1e6 100644
75110 --- a/fs/cachefiles/bind.c
75111 +++ b/fs/cachefiles/bind.c
75112 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachefiles_cache *cache, char *args)
75113 args);
75114
75115 /* start by checking things over */
75116 - ASSERT(cache->fstop_percent >= 0 &&
75117 - cache->fstop_percent < cache->fcull_percent &&
75118 + ASSERT(cache->fstop_percent < cache->fcull_percent &&
75119 cache->fcull_percent < cache->frun_percent &&
75120 cache->frun_percent < 100);
75121
75122 - ASSERT(cache->bstop_percent >= 0 &&
75123 - cache->bstop_percent < cache->bcull_percent &&
75124 + ASSERT(cache->bstop_percent < cache->bcull_percent &&
75125 cache->bcull_percent < cache->brun_percent &&
75126 cache->brun_percent < 100);
75127
75128 diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c
75129 index f601def..b2cf704 100644
75130 --- a/fs/cachefiles/daemon.c
75131 +++ b/fs/cachefiles/daemon.c
75132 @@ -196,7 +196,7 @@ static ssize_t cachefiles_daemon_read(struct file *file, char __user *_buffer,
75133 if (n > buflen)
75134 return -EMSGSIZE;
75135
75136 - if (copy_to_user(_buffer, buffer, n) != 0)
75137 + if (n > sizeof(buffer) || copy_to_user(_buffer, buffer, n) != 0)
75138 return -EFAULT;
75139
75140 return n;
75141 @@ -222,7 +222,7 @@ static ssize_t cachefiles_daemon_write(struct file *file,
75142 if (test_bit(CACHEFILES_DEAD, &cache->flags))
75143 return -EIO;
75144
75145 - if (datalen < 0 || datalen > PAGE_SIZE - 1)
75146 + if (datalen > PAGE_SIZE - 1)
75147 return -EOPNOTSUPP;
75148
75149 /* drag the command string into the kernel so we can parse it */
75150 @@ -385,7 +385,7 @@ static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
75151 if (args[0] != '%' || args[1] != '\0')
75152 return -EINVAL;
75153
75154 - if (fstop < 0 || fstop >= cache->fcull_percent)
75155 + if (fstop >= cache->fcull_percent)
75156 return cachefiles_daemon_range_error(cache, args);
75157
75158 cache->fstop_percent = fstop;
75159 @@ -457,7 +457,7 @@ static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
75160 if (args[0] != '%' || args[1] != '\0')
75161 return -EINVAL;
75162
75163 - if (bstop < 0 || bstop >= cache->bcull_percent)
75164 + if (bstop >= cache->bcull_percent)
75165 return cachefiles_daemon_range_error(cache, args);
75166
75167 cache->bstop_percent = bstop;
75168 diff --git a/fs/cachefiles/internal.h b/fs/cachefiles/internal.h
75169 index aecd085..3584e2f 100644
75170 --- a/fs/cachefiles/internal.h
75171 +++ b/fs/cachefiles/internal.h
75172 @@ -65,7 +65,7 @@ struct cachefiles_cache {
75173 wait_queue_head_t daemon_pollwq; /* poll waitqueue for daemon */
75174 struct rb_root active_nodes; /* active nodes (can't be culled) */
75175 rwlock_t active_lock; /* lock for active_nodes */
75176 - atomic_t gravecounter; /* graveyard uniquifier */
75177 + atomic_unchecked_t gravecounter; /* graveyard uniquifier */
75178 unsigned frun_percent; /* when to stop culling (% files) */
75179 unsigned fcull_percent; /* when to start culling (% files) */
75180 unsigned fstop_percent; /* when to stop allocating (% files) */
75181 @@ -177,19 +177,19 @@ extern int cachefiles_check_in_use(struct cachefiles_cache *cache,
75182 * proc.c
75183 */
75184 #ifdef CONFIG_CACHEFILES_HISTOGRAM
75185 -extern atomic_t cachefiles_lookup_histogram[HZ];
75186 -extern atomic_t cachefiles_mkdir_histogram[HZ];
75187 -extern atomic_t cachefiles_create_histogram[HZ];
75188 +extern atomic_unchecked_t cachefiles_lookup_histogram[HZ];
75189 +extern atomic_unchecked_t cachefiles_mkdir_histogram[HZ];
75190 +extern atomic_unchecked_t cachefiles_create_histogram[HZ];
75191
75192 extern int __init cachefiles_proc_init(void);
75193 extern void cachefiles_proc_cleanup(void);
75194 static inline
75195 -void cachefiles_hist(atomic_t histogram[], unsigned long start_jif)
75196 +void cachefiles_hist(atomic_unchecked_t histogram[], unsigned long start_jif)
75197 {
75198 unsigned long jif = jiffies - start_jif;
75199 if (jif >= HZ)
75200 jif = HZ - 1;
75201 - atomic_inc(&histogram[jif]);
75202 + atomic_inc_unchecked(&histogram[jif]);
75203 }
75204
75205 #else
75206 diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
75207 index fc1056f..501a546 100644
75208 --- a/fs/cachefiles/namei.c
75209 +++ b/fs/cachefiles/namei.c
75210 @@ -312,7 +312,7 @@ try_again:
75211 /* first step is to make up a grave dentry in the graveyard */
75212 sprintf(nbuffer, "%08x%08x",
75213 (uint32_t) get_seconds(),
75214 - (uint32_t) atomic_inc_return(&cache->gravecounter));
75215 + (uint32_t) atomic_inc_return_unchecked(&cache->gravecounter));
75216
75217 /* do the multiway lock magic */
75218 trap = lock_rename(cache->graveyard, dir);
75219 diff --git a/fs/cachefiles/proc.c b/fs/cachefiles/proc.c
75220 index eccd339..4c1d995 100644
75221 --- a/fs/cachefiles/proc.c
75222 +++ b/fs/cachefiles/proc.c
75223 @@ -14,9 +14,9 @@
75224 #include <linux/seq_file.h>
75225 #include "internal.h"
75226
75227 -atomic_t cachefiles_lookup_histogram[HZ];
75228 -atomic_t cachefiles_mkdir_histogram[HZ];
75229 -atomic_t cachefiles_create_histogram[HZ];
75230 +atomic_unchecked_t cachefiles_lookup_histogram[HZ];
75231 +atomic_unchecked_t cachefiles_mkdir_histogram[HZ];
75232 +atomic_unchecked_t cachefiles_create_histogram[HZ];
75233
75234 /*
75235 * display the latency histogram
75236 @@ -35,9 +35,9 @@ static int cachefiles_histogram_show(struct seq_file *m, void *v)
75237 return 0;
75238 default:
75239 index = (unsigned long) v - 3;
75240 - x = atomic_read(&cachefiles_lookup_histogram[index]);
75241 - y = atomic_read(&cachefiles_mkdir_histogram[index]);
75242 - z = atomic_read(&cachefiles_create_histogram[index]);
75243 + x = atomic_read_unchecked(&cachefiles_lookup_histogram[index]);
75244 + y = atomic_read_unchecked(&cachefiles_mkdir_histogram[index]);
75245 + z = atomic_read_unchecked(&cachefiles_create_histogram[index]);
75246 if (x == 0 && y == 0 && z == 0)
75247 return 0;
75248
75249 diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
75250 index 9314b4e..4a1f602 100644
75251 --- a/fs/ceph/dir.c
75252 +++ b/fs/ceph/dir.c
75253 @@ -214,10 +214,18 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
75254 spin_unlock(&dentry->d_lock);
75255
75256 if (emit_dentry) {
75257 + char d_name[DNAME_INLINE_LEN];
75258 + const unsigned char *name;
75259 +
75260 dout(" %llu (%llu) dentry %p %pd %p\n", di->offset, ctx->pos,
75261 dentry, dentry, d_inode(dentry));
75262 ctx->pos = di->offset;
75263 - if (!dir_emit(ctx, dentry->d_name.name,
75264 + name = dentry->d_name.name;
75265 + if (name == dentry->d_iname) {
75266 + memcpy(d_name, name, dentry->d_name.len);
75267 + name = d_name;
75268 + }
75269 + if (!dir_emit(ctx, name,
75270 dentry->d_name.len,
75271 ceph_translate_ino(dentry->d_sb,
75272 d_inode(dentry)->i_ino),
75273 @@ -259,7 +267,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
75274 struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
75275 struct ceph_mds_client *mdsc = fsc->mdsc;
75276 unsigned frag = fpos_frag(ctx->pos);
75277 - int off = fpos_off(ctx->pos);
75278 + unsigned int off = fpos_off(ctx->pos);
75279 int err;
75280 u32 ftype;
75281 struct ceph_mds_reply_info_parsed *rinfo;
75282 diff --git a/fs/ceph/super.c b/fs/ceph/super.c
75283 index 7b6bfcb..f8d5416 100644
75284 --- a/fs/ceph/super.c
75285 +++ b/fs/ceph/super.c
75286 @@ -906,7 +906,7 @@ static int ceph_compare_super(struct super_block *sb, void *data)
75287 /*
75288 * construct our own bdi so we can control readahead, etc.
75289 */
75290 -static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0);
75291 +static atomic_long_unchecked_t bdi_seq = ATOMIC_LONG_INIT(0);
75292
75293 static int ceph_register_bdi(struct super_block *sb,
75294 struct ceph_fs_client *fsc)
75295 @@ -923,7 +923,7 @@ static int ceph_register_bdi(struct super_block *sb,
75296 VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE;
75297
75298 err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld",
75299 - atomic_long_inc_return(&bdi_seq));
75300 + atomic_long_inc_return_unchecked(&bdi_seq));
75301 if (!err)
75302 sb->s_bdi = &fsc->backing_dev_info;
75303 return err;
75304 diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
75305 index 7febcf2..62a5721 100644
75306 --- a/fs/cifs/cifs_debug.c
75307 +++ b/fs/cifs/cifs_debug.c
75308 @@ -269,8 +269,8 @@ static ssize_t cifs_stats_proc_write(struct file *file,
75309
75310 if (strtobool(&c, &bv) == 0) {
75311 #ifdef CONFIG_CIFS_STATS2
75312 - atomic_set(&totBufAllocCount, 0);
75313 - atomic_set(&totSmBufAllocCount, 0);
75314 + atomic_set_unchecked(&totBufAllocCount, 0);
75315 + atomic_set_unchecked(&totSmBufAllocCount, 0);
75316 #endif /* CONFIG_CIFS_STATS2 */
75317 spin_lock(&cifs_tcp_ses_lock);
75318 list_for_each(tmp1, &cifs_tcp_ses_list) {
75319 @@ -283,7 +283,7 @@ static ssize_t cifs_stats_proc_write(struct file *file,
75320 tcon = list_entry(tmp3,
75321 struct cifs_tcon,
75322 tcon_list);
75323 - atomic_set(&tcon->num_smbs_sent, 0);
75324 + atomic_set_unchecked(&tcon->num_smbs_sent, 0);
75325 if (server->ops->clear_stats)
75326 server->ops->clear_stats(tcon);
75327 }
75328 @@ -315,8 +315,8 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
75329 smBufAllocCount.counter, cifs_min_small);
75330 #ifdef CONFIG_CIFS_STATS2
75331 seq_printf(m, "Total Large %d Small %d Allocations\n",
75332 - atomic_read(&totBufAllocCount),
75333 - atomic_read(&totSmBufAllocCount));
75334 + atomic_read_unchecked(&totBufAllocCount),
75335 + atomic_read_unchecked(&totSmBufAllocCount));
75336 #endif /* CONFIG_CIFS_STATS2 */
75337
75338 seq_printf(m, "Operations (MIDs): %d\n", atomic_read(&midCount));
75339 @@ -345,7 +345,7 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
75340 if (tcon->need_reconnect)
75341 seq_puts(m, "\tDISCONNECTED ");
75342 seq_printf(m, "\nSMBs: %d",
75343 - atomic_read(&tcon->num_smbs_sent));
75344 + atomic_read_unchecked(&tcon->num_smbs_sent));
75345 if (server->ops->print_stats)
75346 server->ops->print_stats(m, tcon);
75347 }
75348 diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
75349 index 6a1119e..b2f2160 100644
75350 --- a/fs/cifs/cifsfs.c
75351 +++ b/fs/cifs/cifsfs.c
75352 @@ -1082,7 +1082,7 @@ cifs_init_request_bufs(void)
75353 */
75354 cifs_req_cachep = kmem_cache_create("cifs_request",
75355 CIFSMaxBufSize + max_hdr_size, 0,
75356 - SLAB_HWCACHE_ALIGN, NULL);
75357 + SLAB_HWCACHE_ALIGN | SLAB_USERCOPY, NULL);
75358 if (cifs_req_cachep == NULL)
75359 return -ENOMEM;
75360
75361 @@ -1109,7 +1109,7 @@ cifs_init_request_bufs(void)
75362 efficient to alloc 1 per page off the slab compared to 17K (5page)
75363 alloc of large cifs buffers even when page debugging is on */
75364 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
75365 - MAX_CIFS_SMALL_BUFFER_SIZE, 0, SLAB_HWCACHE_ALIGN,
75366 + MAX_CIFS_SMALL_BUFFER_SIZE, 0, SLAB_HWCACHE_ALIGN | SLAB_USERCOPY,
75367 NULL);
75368 if (cifs_sm_req_cachep == NULL) {
75369 mempool_destroy(cifs_req_poolp);
75370 @@ -1194,8 +1194,8 @@ init_cifs(void)
75371 atomic_set(&bufAllocCount, 0);
75372 atomic_set(&smBufAllocCount, 0);
75373 #ifdef CONFIG_CIFS_STATS2
75374 - atomic_set(&totBufAllocCount, 0);
75375 - atomic_set(&totSmBufAllocCount, 0);
75376 + atomic_set_unchecked(&totBufAllocCount, 0);
75377 + atomic_set_unchecked(&totSmBufAllocCount, 0);
75378 #endif /* CONFIG_CIFS_STATS2 */
75379
75380 atomic_set(&midCount, 0);
75381 diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
75382 index b406a32..243eb1c 100644
75383 --- a/fs/cifs/cifsglob.h
75384 +++ b/fs/cifs/cifsglob.h
75385 @@ -832,35 +832,35 @@ struct cifs_tcon {
75386 __u16 Flags; /* optional support bits */
75387 enum statusEnum tidStatus;
75388 #ifdef CONFIG_CIFS_STATS
75389 - atomic_t num_smbs_sent;
75390 + atomic_unchecked_t num_smbs_sent;
75391 union {
75392 struct {
75393 - atomic_t num_writes;
75394 - atomic_t num_reads;
75395 - atomic_t num_flushes;
75396 - atomic_t num_oplock_brks;
75397 - atomic_t num_opens;
75398 - atomic_t num_closes;
75399 - atomic_t num_deletes;
75400 - atomic_t num_mkdirs;
75401 - atomic_t num_posixopens;
75402 - atomic_t num_posixmkdirs;
75403 - atomic_t num_rmdirs;
75404 - atomic_t num_renames;
75405 - atomic_t num_t2renames;
75406 - atomic_t num_ffirst;
75407 - atomic_t num_fnext;
75408 - atomic_t num_fclose;
75409 - atomic_t num_hardlinks;
75410 - atomic_t num_symlinks;
75411 - atomic_t num_locks;
75412 - atomic_t num_acl_get;
75413 - atomic_t num_acl_set;
75414 + atomic_unchecked_t num_writes;
75415 + atomic_unchecked_t num_reads;
75416 + atomic_unchecked_t num_flushes;
75417 + atomic_unchecked_t num_oplock_brks;
75418 + atomic_unchecked_t num_opens;
75419 + atomic_unchecked_t num_closes;
75420 + atomic_unchecked_t num_deletes;
75421 + atomic_unchecked_t num_mkdirs;
75422 + atomic_unchecked_t num_posixopens;
75423 + atomic_unchecked_t num_posixmkdirs;
75424 + atomic_unchecked_t num_rmdirs;
75425 + atomic_unchecked_t num_renames;
75426 + atomic_unchecked_t num_t2renames;
75427 + atomic_unchecked_t num_ffirst;
75428 + atomic_unchecked_t num_fnext;
75429 + atomic_unchecked_t num_fclose;
75430 + atomic_unchecked_t num_hardlinks;
75431 + atomic_unchecked_t num_symlinks;
75432 + atomic_unchecked_t num_locks;
75433 + atomic_unchecked_t num_acl_get;
75434 + atomic_unchecked_t num_acl_set;
75435 } cifs_stats;
75436 #ifdef CONFIG_CIFS_SMB2
75437 struct {
75438 - atomic_t smb2_com_sent[NUMBER_OF_SMB2_COMMANDS];
75439 - atomic_t smb2_com_failed[NUMBER_OF_SMB2_COMMANDS];
75440 + atomic_unchecked_t smb2_com_sent[NUMBER_OF_SMB2_COMMANDS];
75441 + atomic_unchecked_t smb2_com_failed[NUMBER_OF_SMB2_COMMANDS];
75442 } smb2_stats;
75443 #endif /* CONFIG_CIFS_SMB2 */
75444 } stats;
75445 @@ -1207,7 +1207,7 @@ convert_delimiter(char *path, char delim)
75446 }
75447
75448 #ifdef CONFIG_CIFS_STATS
75449 -#define cifs_stats_inc atomic_inc
75450 +#define cifs_stats_inc atomic_inc_unchecked
75451
75452 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
75453 unsigned int bytes)
75454 @@ -1574,8 +1574,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
75455 /* Various Debug counters */
75456 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */
75457 #ifdef CONFIG_CIFS_STATS2
75458 -GLOBAL_EXTERN atomic_t totBufAllocCount; /* total allocated over all time */
75459 -GLOBAL_EXTERN atomic_t totSmBufAllocCount;
75460 +GLOBAL_EXTERN atomic_unchecked_t totBufAllocCount; /* total allocated over all time */
75461 +GLOBAL_EXTERN atomic_unchecked_t totSmBufAllocCount;
75462 #endif
75463 GLOBAL_EXTERN atomic_t smBufAllocCount;
75464 GLOBAL_EXTERN atomic_t midCount;
75465 diff --git a/fs/cifs/file.c b/fs/cifs/file.c
75466 index 3f50cee..7741620 100644
75467 --- a/fs/cifs/file.c
75468 +++ b/fs/cifs/file.c
75469 @@ -2054,10 +2054,14 @@ static int cifs_writepages(struct address_space *mapping,
75470 index = mapping->writeback_index; /* Start from prev offset */
75471 end = -1;
75472 } else {
75473 - index = wbc->range_start >> PAGE_CACHE_SHIFT;
75474 - end = wbc->range_end >> PAGE_CACHE_SHIFT;
75475 - if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX)
75476 + if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) {
75477 range_whole = true;
75478 + index = 0;
75479 + end = ULONG_MAX;
75480 + } else {
75481 + index = wbc->range_start >> PAGE_CACHE_SHIFT;
75482 + end = wbc->range_end >> PAGE_CACHE_SHIFT;
75483 + }
75484 scanned = true;
75485 }
75486 server = cifs_sb_master_tcon(cifs_sb)->ses->server;
75487 diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
75488 index f621b44..6b66dd5 100644
75489 --- a/fs/cifs/inode.c
75490 +++ b/fs/cifs/inode.c
75491 @@ -2034,7 +2034,6 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
75492 struct tcon_link *tlink = NULL;
75493 struct cifs_tcon *tcon = NULL;
75494 struct TCP_Server_Info *server;
75495 - struct cifs_io_parms io_parms;
75496
75497 /*
75498 * To avoid spurious oplock breaks from server, in the case of
75499 @@ -2056,18 +2055,6 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
75500 rc = -ENOSYS;
75501 cifsFileInfo_put(open_file);
75502 cifs_dbg(FYI, "SetFSize for attrs rc = %d\n", rc);
75503 - if ((rc == -EINVAL) || (rc == -EOPNOTSUPP)) {
75504 - unsigned int bytes_written;
75505 -
75506 - io_parms.netfid = open_file->fid.netfid;
75507 - io_parms.pid = open_file->pid;
75508 - io_parms.tcon = tcon;
75509 - io_parms.offset = 0;
75510 - io_parms.length = attrs->ia_size;
75511 - rc = CIFSSMBWrite(xid, &io_parms, &bytes_written,
75512 - NULL, NULL, 1);
75513 - cifs_dbg(FYI, "Wrt seteof rc %d\n", rc);
75514 - }
75515 } else
75516 rc = -EINVAL;
75517
75518 @@ -2093,28 +2080,7 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
75519 else
75520 rc = -ENOSYS;
75521 cifs_dbg(FYI, "SetEOF by path (setattrs) rc = %d\n", rc);
75522 - if ((rc == -EINVAL) || (rc == -EOPNOTSUPP)) {
75523 - __u16 netfid;
75524 - int oplock = 0;
75525
75526 - rc = SMBLegacyOpen(xid, tcon, full_path, FILE_OPEN,
75527 - GENERIC_WRITE, CREATE_NOT_DIR, &netfid,
75528 - &oplock, NULL, cifs_sb->local_nls,
75529 - cifs_remap(cifs_sb));
75530 - if (rc == 0) {
75531 - unsigned int bytes_written;
75532 -
75533 - io_parms.netfid = netfid;
75534 - io_parms.pid = current->tgid;
75535 - io_parms.tcon = tcon;
75536 - io_parms.offset = 0;
75537 - io_parms.length = attrs->ia_size;
75538 - rc = CIFSSMBWrite(xid, &io_parms, &bytes_written, NULL,
75539 - NULL, 1);
75540 - cifs_dbg(FYI, "wrt seteof rc %d\n", rc);
75541 - CIFSSMBClose(xid, tcon, netfid);
75542 - }
75543 - }
75544 if (tlink)
75545 cifs_put_tlink(tlink);
75546
75547 diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
75548 index 8442b8b..ea6986f 100644
75549 --- a/fs/cifs/misc.c
75550 +++ b/fs/cifs/misc.c
75551 @@ -170,7 +170,7 @@ cifs_buf_get(void)
75552 memset(ret_buf, 0, buf_size + 3);
75553 atomic_inc(&bufAllocCount);
75554 #ifdef CONFIG_CIFS_STATS2
75555 - atomic_inc(&totBufAllocCount);
75556 + atomic_inc_unchecked(&totBufAllocCount);
75557 #endif /* CONFIG_CIFS_STATS2 */
75558 }
75559
75560 @@ -205,7 +205,7 @@ cifs_small_buf_get(void)
75561 /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/
75562 atomic_inc(&smBufAllocCount);
75563 #ifdef CONFIG_CIFS_STATS2
75564 - atomic_inc(&totSmBufAllocCount);
75565 + atomic_inc_unchecked(&totSmBufAllocCount);
75566 #endif /* CONFIG_CIFS_STATS2 */
75567
75568 }
75569 diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
75570 index fc537c2..47d654c 100644
75571 --- a/fs/cifs/smb1ops.c
75572 +++ b/fs/cifs/smb1ops.c
75573 @@ -622,27 +622,27 @@ static void
75574 cifs_clear_stats(struct cifs_tcon *tcon)
75575 {
75576 #ifdef CONFIG_CIFS_STATS
75577 - atomic_set(&tcon->stats.cifs_stats.num_writes, 0);
75578 - atomic_set(&tcon->stats.cifs_stats.num_reads, 0);
75579 - atomic_set(&tcon->stats.cifs_stats.num_flushes, 0);
75580 - atomic_set(&tcon->stats.cifs_stats.num_oplock_brks, 0);
75581 - atomic_set(&tcon->stats.cifs_stats.num_opens, 0);
75582 - atomic_set(&tcon->stats.cifs_stats.num_posixopens, 0);
75583 - atomic_set(&tcon->stats.cifs_stats.num_posixmkdirs, 0);
75584 - atomic_set(&tcon->stats.cifs_stats.num_closes, 0);
75585 - atomic_set(&tcon->stats.cifs_stats.num_deletes, 0);
75586 - atomic_set(&tcon->stats.cifs_stats.num_mkdirs, 0);
75587 - atomic_set(&tcon->stats.cifs_stats.num_rmdirs, 0);
75588 - atomic_set(&tcon->stats.cifs_stats.num_renames, 0);
75589 - atomic_set(&tcon->stats.cifs_stats.num_t2renames, 0);
75590 - atomic_set(&tcon->stats.cifs_stats.num_ffirst, 0);
75591 - atomic_set(&tcon->stats.cifs_stats.num_fnext, 0);
75592 - atomic_set(&tcon->stats.cifs_stats.num_fclose, 0);
75593 - atomic_set(&tcon->stats.cifs_stats.num_hardlinks, 0);
75594 - atomic_set(&tcon->stats.cifs_stats.num_symlinks, 0);
75595 - atomic_set(&tcon->stats.cifs_stats.num_locks, 0);
75596 - atomic_set(&tcon->stats.cifs_stats.num_acl_get, 0);
75597 - atomic_set(&tcon->stats.cifs_stats.num_acl_set, 0);
75598 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_writes, 0);
75599 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_reads, 0);
75600 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_flushes, 0);
75601 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_oplock_brks, 0);
75602 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_opens, 0);
75603 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_posixopens, 0);
75604 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_posixmkdirs, 0);
75605 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_closes, 0);
75606 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_deletes, 0);
75607 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_mkdirs, 0);
75608 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_rmdirs, 0);
75609 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_renames, 0);
75610 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_t2renames, 0);
75611 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_ffirst, 0);
75612 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_fnext, 0);
75613 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_fclose, 0);
75614 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_hardlinks, 0);
75615 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_symlinks, 0);
75616 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_locks, 0);
75617 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_acl_get, 0);
75618 + atomic_set_unchecked(&tcon->stats.cifs_stats.num_acl_set, 0);
75619 #endif
75620 }
75621
75622 @@ -651,36 +651,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
75623 {
75624 #ifdef CONFIG_CIFS_STATS
75625 seq_printf(m, " Oplocks breaks: %d",
75626 - atomic_read(&tcon->stats.cifs_stats.num_oplock_brks));
75627 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_oplock_brks));
75628 seq_printf(m, "\nReads: %d Bytes: %llu",
75629 - atomic_read(&tcon->stats.cifs_stats.num_reads),
75630 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_reads),
75631 (long long)(tcon->bytes_read));
75632 seq_printf(m, "\nWrites: %d Bytes: %llu",
75633 - atomic_read(&tcon->stats.cifs_stats.num_writes),
75634 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_writes),
75635 (long long)(tcon->bytes_written));
75636 seq_printf(m, "\nFlushes: %d",
75637 - atomic_read(&tcon->stats.cifs_stats.num_flushes));
75638 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_flushes));
75639 seq_printf(m, "\nLocks: %d HardLinks: %d Symlinks: %d",
75640 - atomic_read(&tcon->stats.cifs_stats.num_locks),
75641 - atomic_read(&tcon->stats.cifs_stats.num_hardlinks),
75642 - atomic_read(&tcon->stats.cifs_stats.num_symlinks));
75643 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_locks),
75644 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_hardlinks),
75645 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_symlinks));
75646 seq_printf(m, "\nOpens: %d Closes: %d Deletes: %d",
75647 - atomic_read(&tcon->stats.cifs_stats.num_opens),
75648 - atomic_read(&tcon->stats.cifs_stats.num_closes),
75649 - atomic_read(&tcon->stats.cifs_stats.num_deletes));
75650 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_opens),
75651 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_closes),
75652 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_deletes));
75653 seq_printf(m, "\nPosix Opens: %d Posix Mkdirs: %d",
75654 - atomic_read(&tcon->stats.cifs_stats.num_posixopens),
75655 - atomic_read(&tcon->stats.cifs_stats.num_posixmkdirs));
75656 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_posixopens),
75657 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_posixmkdirs));
75658 seq_printf(m, "\nMkdirs: %d Rmdirs: %d",
75659 - atomic_read(&tcon->stats.cifs_stats.num_mkdirs),
75660 - atomic_read(&tcon->stats.cifs_stats.num_rmdirs));
75661 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_mkdirs),
75662 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_rmdirs));
75663 seq_printf(m, "\nRenames: %d T2 Renames %d",
75664 - atomic_read(&tcon->stats.cifs_stats.num_renames),
75665 - atomic_read(&tcon->stats.cifs_stats.num_t2renames));
75666 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_renames),
75667 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_t2renames));
75668 seq_printf(m, "\nFindFirst: %d FNext %d FClose %d",
75669 - atomic_read(&tcon->stats.cifs_stats.num_ffirst),
75670 - atomic_read(&tcon->stats.cifs_stats.num_fnext),
75671 - atomic_read(&tcon->stats.cifs_stats.num_fclose));
75672 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_ffirst),
75673 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_fnext),
75674 + atomic_read_unchecked(&tcon->stats.cifs_stats.num_fclose));
75675 #endif
75676 }
75677
75678 diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
75679 index df91bcf..c499de7 100644
75680 --- a/fs/cifs/smb2ops.c
75681 +++ b/fs/cifs/smb2ops.c
75682 @@ -418,8 +418,8 @@ smb2_clear_stats(struct cifs_tcon *tcon)
75683 #ifdef CONFIG_CIFS_STATS
75684 int i;
75685 for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) {
75686 - atomic_set(&tcon->stats.smb2_stats.smb2_com_sent[i], 0);
75687 - atomic_set(&tcon->stats.smb2_stats.smb2_com_failed[i], 0);
75688 + atomic_set_unchecked(&tcon->stats.smb2_stats.smb2_com_sent[i], 0);
75689 + atomic_set_unchecked(&tcon->stats.smb2_stats.smb2_com_failed[i], 0);
75690 }
75691 #endif
75692 }
75693 @@ -459,65 +459,65 @@ static void
75694 smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
75695 {
75696 #ifdef CONFIG_CIFS_STATS
75697 - atomic_t *sent = tcon->stats.smb2_stats.smb2_com_sent;
75698 - atomic_t *failed = tcon->stats.smb2_stats.smb2_com_failed;
75699 + atomic_unchecked_t *sent = tcon->stats.smb2_stats.smb2_com_sent;
75700 + atomic_unchecked_t *failed = tcon->stats.smb2_stats.smb2_com_failed;
75701 seq_printf(m, "\nNegotiates: %d sent %d failed",
75702 - atomic_read(&sent[SMB2_NEGOTIATE_HE]),
75703 - atomic_read(&failed[SMB2_NEGOTIATE_HE]));
75704 + atomic_read_unchecked(&sent[SMB2_NEGOTIATE_HE]),
75705 + atomic_read_unchecked(&failed[SMB2_NEGOTIATE_HE]));
75706 seq_printf(m, "\nSessionSetups: %d sent %d failed",
75707 - atomic_read(&sent[SMB2_SESSION_SETUP_HE]),
75708 - atomic_read(&failed[SMB2_SESSION_SETUP_HE]));
75709 + atomic_read_unchecked(&sent[SMB2_SESSION_SETUP_HE]),
75710 + atomic_read_unchecked(&failed[SMB2_SESSION_SETUP_HE]));
75711 seq_printf(m, "\nLogoffs: %d sent %d failed",
75712 - atomic_read(&sent[SMB2_LOGOFF_HE]),
75713 - atomic_read(&failed[SMB2_LOGOFF_HE]));
75714 + atomic_read_unchecked(&sent[SMB2_LOGOFF_HE]),
75715 + atomic_read_unchecked(&failed[SMB2_LOGOFF_HE]));
75716 seq_printf(m, "\nTreeConnects: %d sent %d failed",
75717 - atomic_read(&sent[SMB2_TREE_CONNECT_HE]),
75718 - atomic_read(&failed[SMB2_TREE_CONNECT_HE]));
75719 + atomic_read_unchecked(&sent[SMB2_TREE_CONNECT_HE]),
75720 + atomic_read_unchecked(&failed[SMB2_TREE_CONNECT_HE]));
75721 seq_printf(m, "\nTreeDisconnects: %d sent %d failed",
75722 - atomic_read(&sent[SMB2_TREE_DISCONNECT_HE]),
75723 - atomic_read(&failed[SMB2_TREE_DISCONNECT_HE]));
75724 + atomic_read_unchecked(&sent[SMB2_TREE_DISCONNECT_HE]),
75725 + atomic_read_unchecked(&failed[SMB2_TREE_DISCONNECT_HE]));
75726 seq_printf(m, "\nCreates: %d sent %d failed",
75727 - atomic_read(&sent[SMB2_CREATE_HE]),
75728 - atomic_read(&failed[SMB2_CREATE_HE]));
75729 + atomic_read_unchecked(&sent[SMB2_CREATE_HE]),
75730 + atomic_read_unchecked(&failed[SMB2_CREATE_HE]));
75731 seq_printf(m, "\nCloses: %d sent %d failed",
75732 - atomic_read(&sent[SMB2_CLOSE_HE]),
75733 - atomic_read(&failed[SMB2_CLOSE_HE]));
75734 + atomic_read_unchecked(&sent[SMB2_CLOSE_HE]),
75735 + atomic_read_unchecked(&failed[SMB2_CLOSE_HE]));
75736 seq_printf(m, "\nFlushes: %d sent %d failed",
75737 - atomic_read(&sent[SMB2_FLUSH_HE]),
75738 - atomic_read(&failed[SMB2_FLUSH_HE]));
75739 + atomic_read_unchecked(&sent[SMB2_FLUSH_HE]),
75740 + atomic_read_unchecked(&failed[SMB2_FLUSH_HE]));
75741 seq_printf(m, "\nReads: %d sent %d failed",
75742 - atomic_read(&sent[SMB2_READ_HE]),
75743 - atomic_read(&failed[SMB2_READ_HE]));
75744 + atomic_read_unchecked(&sent[SMB2_READ_HE]),
75745 + atomic_read_unchecked(&failed[SMB2_READ_HE]));
75746 seq_printf(m, "\nWrites: %d sent %d failed",
75747 - atomic_read(&sent[SMB2_WRITE_HE]),
75748 - atomic_read(&failed[SMB2_WRITE_HE]));
75749 + atomic_read_unchecked(&sent[SMB2_WRITE_HE]),
75750 + atomic_read_unchecked(&failed[SMB2_WRITE_HE]));
75751 seq_printf(m, "\nLocks: %d sent %d failed",
75752 - atomic_read(&sent[SMB2_LOCK_HE]),
75753 - atomic_read(&failed[SMB2_LOCK_HE]));
75754 + atomic_read_unchecked(&sent[SMB2_LOCK_HE]),
75755 + atomic_read_unchecked(&failed[SMB2_LOCK_HE]));
75756 seq_printf(m, "\nIOCTLs: %d sent %d failed",
75757 - atomic_read(&sent[SMB2_IOCTL_HE]),
75758 - atomic_read(&failed[SMB2_IOCTL_HE]));
75759 + atomic_read_unchecked(&sent[SMB2_IOCTL_HE]),
75760 + atomic_read_unchecked(&failed[SMB2_IOCTL_HE]));
75761 seq_printf(m, "\nCancels: %d sent %d failed",
75762 - atomic_read(&sent[SMB2_CANCEL_HE]),
75763 - atomic_read(&failed[SMB2_CANCEL_HE]));
75764 + atomic_read_unchecked(&sent[SMB2_CANCEL_HE]),
75765 + atomic_read_unchecked(&failed[SMB2_CANCEL_HE]));
75766 seq_printf(m, "\nEchos: %d sent %d failed",
75767 - atomic_read(&sent[SMB2_ECHO_HE]),
75768 - atomic_read(&failed[SMB2_ECHO_HE]));
75769 + atomic_read_unchecked(&sent[SMB2_ECHO_HE]),
75770 + atomic_read_unchecked(&failed[SMB2_ECHO_HE]));
75771 seq_printf(m, "\nQueryDirectories: %d sent %d failed",
75772 - atomic_read(&sent[SMB2_QUERY_DIRECTORY_HE]),
75773 - atomic_read(&failed[SMB2_QUERY_DIRECTORY_HE]));
75774 + atomic_read_unchecked(&sent[SMB2_QUERY_DIRECTORY_HE]),
75775 + atomic_read_unchecked(&failed[SMB2_QUERY_DIRECTORY_HE]));
75776 seq_printf(m, "\nChangeNotifies: %d sent %d failed",
75777 - atomic_read(&sent[SMB2_CHANGE_NOTIFY_HE]),
75778 - atomic_read(&failed[SMB2_CHANGE_NOTIFY_HE]));
75779 + atomic_read_unchecked(&sent[SMB2_CHANGE_NOTIFY_HE]),
75780 + atomic_read_unchecked(&failed[SMB2_CHANGE_NOTIFY_HE]));
75781 seq_printf(m, "\nQueryInfos: %d sent %d failed",
75782 - atomic_read(&sent[SMB2_QUERY_INFO_HE]),
75783 - atomic_read(&failed[SMB2_QUERY_INFO_HE]));
75784 + atomic_read_unchecked(&sent[SMB2_QUERY_INFO_HE]),
75785 + atomic_read_unchecked(&failed[SMB2_QUERY_INFO_HE]));
75786 seq_printf(m, "\nSetInfos: %d sent %d failed",
75787 - atomic_read(&sent[SMB2_SET_INFO_HE]),
75788 - atomic_read(&failed[SMB2_SET_INFO_HE]));
75789 + atomic_read_unchecked(&sent[SMB2_SET_INFO_HE]),
75790 + atomic_read_unchecked(&failed[SMB2_SET_INFO_HE]));
75791 seq_printf(m, "\nOplockBreaks: %d sent %d failed",
75792 - atomic_read(&sent[SMB2_OPLOCK_BREAK_HE]),
75793 - atomic_read(&failed[SMB2_OPLOCK_BREAK_HE]));
75794 + atomic_read_unchecked(&sent[SMB2_OPLOCK_BREAK_HE]),
75795 + atomic_read_unchecked(&failed[SMB2_OPLOCK_BREAK_HE]));
75796 #endif
75797 }
75798
75799 diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
75800 index b8b4f08..6e84a23 100644
75801 --- a/fs/cifs/smb2pdu.c
75802 +++ b/fs/cifs/smb2pdu.c
75803 @@ -2206,8 +2206,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
75804 default:
75805 cifs_dbg(VFS, "info level %u isn't supported\n",
75806 srch_inf->info_level);
75807 - rc = -EINVAL;
75808 - goto qdir_exit;
75809 + return -EINVAL;
75810 }
75811
75812 req->FileIndex = cpu_to_le32(index);
75813 diff --git a/fs/coda/cache.c b/fs/coda/cache.c
75814 index 5bb630a..043dc70 100644
75815 --- a/fs/coda/cache.c
75816 +++ b/fs/coda/cache.c
75817 @@ -24,7 +24,7 @@
75818 #include "coda_linux.h"
75819 #include "coda_cache.h"
75820
75821 -static atomic_t permission_epoch = ATOMIC_INIT(0);
75822 +static atomic_unchecked_t permission_epoch = ATOMIC_INIT(0);
75823
75824 /* replace or extend an acl cache hit */
75825 void coda_cache_enter(struct inode *inode, int mask)
75826 @@ -32,7 +32,7 @@ void coda_cache_enter(struct inode *inode, int mask)
75827 struct coda_inode_info *cii = ITOC(inode);
75828
75829 spin_lock(&cii->c_lock);
75830 - cii->c_cached_epoch = atomic_read(&permission_epoch);
75831 + cii->c_cached_epoch = atomic_read_unchecked(&permission_epoch);
75832 if (!uid_eq(cii->c_uid, current_fsuid())) {
75833 cii->c_uid = current_fsuid();
75834 cii->c_cached_perm = mask;
75835 @@ -46,14 +46,14 @@ void coda_cache_clear_inode(struct inode *inode)
75836 {
75837 struct coda_inode_info *cii = ITOC(inode);
75838 spin_lock(&cii->c_lock);
75839 - cii->c_cached_epoch = atomic_read(&permission_epoch) - 1;
75840 + cii->c_cached_epoch = atomic_read_unchecked(&permission_epoch) - 1;
75841 spin_unlock(&cii->c_lock);
75842 }
75843
75844 /* remove all acl caches */
75845 void coda_cache_clear_all(struct super_block *sb)
75846 {
75847 - atomic_inc(&permission_epoch);
75848 + atomic_inc_unchecked(&permission_epoch);
75849 }
75850
75851
75852 @@ -66,7 +66,7 @@ int coda_cache_check(struct inode *inode, int mask)
75853 spin_lock(&cii->c_lock);
75854 hit = (mask & cii->c_cached_perm) == mask &&
75855 uid_eq(cii->c_uid, current_fsuid()) &&
75856 - cii->c_cached_epoch == atomic_read(&permission_epoch);
75857 + cii->c_cached_epoch == atomic_read_unchecked(&permission_epoch);
75858 spin_unlock(&cii->c_lock);
75859
75860 return hit;
75861 diff --git a/fs/compat.c b/fs/compat.c
75862 index 6fd272d..dd34ba2 100644
75863 --- a/fs/compat.c
75864 +++ b/fs/compat.c
75865 @@ -54,7 +54,7 @@
75866 #include <asm/ioctls.h>
75867 #include "internal.h"
75868
75869 -int compat_log = 1;
75870 +int compat_log = 0;
75871
75872 int compat_printk(const char *fmt, ...)
75873 {
75874 @@ -512,7 +512,7 @@ COMPAT_SYSCALL_DEFINE2(io_setup, unsigned, nr_reqs, u32 __user *, ctx32p)
75875
75876 set_fs(KERNEL_DS);
75877 /* The __user pointer cast is valid because of the set_fs() */
75878 - ret = sys_io_setup(nr_reqs, (aio_context_t __user *) &ctx64);
75879 + ret = sys_io_setup(nr_reqs, (aio_context_t __force_user *) &ctx64);
75880 set_fs(oldfs);
75881 /* truncating is ok because it's a user address */
75882 if (!ret)
75883 @@ -562,7 +562,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
75884 goto out;
75885
75886 ret = -EINVAL;
75887 - if (nr_segs > UIO_MAXIOV || nr_segs < 0)
75888 + if (nr_segs > UIO_MAXIOV)
75889 goto out;
75890 if (nr_segs > fast_segs) {
75891 ret = -ENOMEM;
75892 @@ -844,6 +844,7 @@ struct compat_old_linux_dirent {
75893 struct compat_readdir_callback {
75894 struct dir_context ctx;
75895 struct compat_old_linux_dirent __user *dirent;
75896 + struct file * file;
75897 int result;
75898 };
75899
75900 @@ -863,6 +864,10 @@ static int compat_fillonedir(struct dir_context *ctx, const char *name,
75901 buf->result = -EOVERFLOW;
75902 return -EOVERFLOW;
75903 }
75904 +
75905 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
75906 + return 0;
75907 +
75908 buf->result++;
75909 dirent = buf->dirent;
75910 if (!access_ok(VERIFY_WRITE, dirent,
75911 @@ -894,6 +899,7 @@ COMPAT_SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
75912 if (!f.file)
75913 return -EBADF;
75914
75915 + buf.file = f.file;
75916 error = iterate_dir(f.file, &buf.ctx);
75917 if (buf.result)
75918 error = buf.result;
75919 @@ -913,6 +919,7 @@ struct compat_getdents_callback {
75920 struct dir_context ctx;
75921 struct compat_linux_dirent __user *current_dir;
75922 struct compat_linux_dirent __user *previous;
75923 + struct file * file;
75924 int count;
75925 int error;
75926 };
75927 @@ -935,6 +942,10 @@ static int compat_filldir(struct dir_context *ctx, const char *name, int namlen,
75928 buf->error = -EOVERFLOW;
75929 return -EOVERFLOW;
75930 }
75931 +
75932 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
75933 + return 0;
75934 +
75935 dirent = buf->previous;
75936 if (dirent) {
75937 if (__put_user(offset, &dirent->d_off))
75938 @@ -980,6 +991,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd,
75939 if (!f.file)
75940 return -EBADF;
75941
75942 + buf.file = f.file;
75943 error = iterate_dir(f.file, &buf.ctx);
75944 if (error >= 0)
75945 error = buf.error;
75946 @@ -1000,6 +1012,7 @@ struct compat_getdents_callback64 {
75947 struct dir_context ctx;
75948 struct linux_dirent64 __user *current_dir;
75949 struct linux_dirent64 __user *previous;
75950 + struct file * file;
75951 int count;
75952 int error;
75953 };
75954 @@ -1018,6 +1031,10 @@ static int compat_filldir64(struct dir_context *ctx, const char *name,
75955 buf->error = -EINVAL; /* only used if we fail.. */
75956 if (reclen > buf->count)
75957 return -EINVAL;
75958 +
75959 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
75960 + return 0;
75961 +
75962 dirent = buf->previous;
75963
75964 if (dirent) {
75965 @@ -1067,6 +1084,7 @@ COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd,
75966 if (!f.file)
75967 return -EBADF;
75968
75969 + buf.file = f.file;
75970 error = iterate_dir(f.file, &buf.ctx);
75971 if (error >= 0)
75972 error = buf.error;
75973 diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c
75974 index 4d24d17..4f8c09e 100644
75975 --- a/fs/compat_binfmt_elf.c
75976 +++ b/fs/compat_binfmt_elf.c
75977 @@ -30,11 +30,13 @@
75978 #undef elf_phdr
75979 #undef elf_shdr
75980 #undef elf_note
75981 +#undef elf_dyn
75982 #undef elf_addr_t
75983 #define elfhdr elf32_hdr
75984 #define elf_phdr elf32_phdr
75985 #define elf_shdr elf32_shdr
75986 #define elf_note elf32_note
75987 +#define elf_dyn Elf32_Dyn
75988 #define elf_addr_t Elf32_Addr
75989
75990 /*
75991 diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
75992 index 48851f6..6c79d32 100644
75993 --- a/fs/compat_ioctl.c
75994 +++ b/fs/compat_ioctl.c
75995 @@ -622,7 +622,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd,
75996 return -EFAULT;
75997 if (__get_user(udata, &ss32->iomem_base))
75998 return -EFAULT;
75999 - ss.iomem_base = compat_ptr(udata);
76000 + ss.iomem_base = (unsigned char __force_kernel *)compat_ptr(udata);
76001 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) ||
76002 __get_user(ss.port_high, &ss32->port_high))
76003 return -EFAULT;
76004 @@ -704,8 +704,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd,
76005 for (i = 0; i < nmsgs; i++) {
76006 if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16)))
76007 return -EFAULT;
76008 - if (get_user(datap, &umsgs[i].buf) ||
76009 - put_user(compat_ptr(datap), &tmsgs[i].buf))
76010 + if (get_user(datap, (compat_caddr_t __user *)&umsgs[i].buf) ||
76011 + put_user(compat_ptr(datap), (u8 __user * __user *)&tmsgs[i].buf))
76012 return -EFAULT;
76013 }
76014 return sys_ioctl(fd, cmd, (unsigned long)tdata);
76015 @@ -798,7 +798,7 @@ static int compat_ioctl_preallocate(struct file *file,
76016 copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
76017 copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
76018 copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
76019 - copy_in_user(&p->l_pad, &p32->l_pad, 4*sizeof(u32)))
76020 + copy_in_user(p->l_pad, p32->l_pad, 4*sizeof(u32)))
76021 return -EFAULT;
76022
76023 return ioctl_preallocate(file, p);
76024 @@ -1621,8 +1621,8 @@ COMPAT_SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd,
76025 static int __init init_sys32_ioctl_cmp(const void *p, const void *q)
76026 {
76027 unsigned int a, b;
76028 - a = *(unsigned int *)p;
76029 - b = *(unsigned int *)q;
76030 + a = *(const unsigned int *)p;
76031 + b = *(const unsigned int *)q;
76032 if (a > b)
76033 return 1;
76034 if (a < b)
76035 diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
76036 index c81ce7f..f3de5fd 100644
76037 --- a/fs/configfs/dir.c
76038 +++ b/fs/configfs/dir.c
76039 @@ -1540,7 +1540,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx)
76040 }
76041 for (p = q->next; p != &parent_sd->s_children; p = p->next) {
76042 struct configfs_dirent *next;
76043 - const char *name;
76044 + const unsigned char * name;
76045 + char d_name[sizeof(next->s_dentry->d_iname)];
76046 int len;
76047 struct inode *inode = NULL;
76048
76049 @@ -1549,7 +1550,12 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx)
76050 continue;
76051
76052 name = configfs_get_name(next);
76053 - len = strlen(name);
76054 + if (next->s_dentry && name == next->s_dentry->d_iname) {
76055 + len = next->s_dentry->d_name.len;
76056 + memcpy(d_name, name, len);
76057 + name = d_name;
76058 + } else
76059 + len = strlen(name);
76060
76061 /*
76062 * We'll have a dentry and an inode for
76063 diff --git a/fs/coredump.c b/fs/coredump.c
76064 index a8f7564..3dde349 100644
76065 --- a/fs/coredump.c
76066 +++ b/fs/coredump.c
76067 @@ -457,8 +457,8 @@ static void wait_for_dump_helpers(struct file *file)
76068 struct pipe_inode_info *pipe = file->private_data;
76069
76070 pipe_lock(pipe);
76071 - pipe->readers++;
76072 - pipe->writers--;
76073 + atomic_inc(&pipe->readers);
76074 + atomic_dec(&pipe->writers);
76075 wake_up_interruptible_sync(&pipe->wait);
76076 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
76077 pipe_unlock(pipe);
76078 @@ -467,11 +467,11 @@ static void wait_for_dump_helpers(struct file *file)
76079 * We actually want wait_event_freezable() but then we need
76080 * to clear TIF_SIGPENDING and improve dump_interrupted().
76081 */
76082 - wait_event_interruptible(pipe->wait, pipe->readers == 1);
76083 + wait_event_interruptible(pipe->wait, atomic_read(&pipe->readers) == 1);
76084
76085 pipe_lock(pipe);
76086 - pipe->readers--;
76087 - pipe->writers++;
76088 + atomic_dec(&pipe->readers);
76089 + atomic_inc(&pipe->writers);
76090 pipe_unlock(pipe);
76091 }
76092
76093 @@ -518,7 +518,9 @@ void do_coredump(const siginfo_t *siginfo)
76094 /* require nonrelative corefile path and be extra careful */
76095 bool need_suid_safe = false;
76096 bool core_dumped = false;
76097 - static atomic_t core_dump_count = ATOMIC_INIT(0);
76098 + static atomic_unchecked_t core_dump_count = ATOMIC_INIT(0);
76099 + long signr = siginfo->si_signo;
76100 + int dumpable;
76101 struct coredump_params cprm = {
76102 .siginfo = siginfo,
76103 .regs = signal_pt_regs(),
76104 @@ -531,12 +533,17 @@ void do_coredump(const siginfo_t *siginfo)
76105 .mm_flags = mm->flags,
76106 };
76107
76108 - audit_core_dumps(siginfo->si_signo);
76109 + audit_core_dumps(signr);
76110 +
76111 + dumpable = __get_dumpable(cprm.mm_flags);
76112 +
76113 + if (signr == SIGSEGV || signr == SIGBUS || signr == SIGKILL || signr == SIGILL)
76114 + gr_handle_brute_attach(dumpable);
76115
76116 binfmt = mm->binfmt;
76117 if (!binfmt || !binfmt->core_dump)
76118 goto fail;
76119 - if (!__get_dumpable(cprm.mm_flags))
76120 + if (!dumpable)
76121 goto fail;
76122
76123 cred = prepare_creds();
76124 @@ -554,7 +561,7 @@ void do_coredump(const siginfo_t *siginfo)
76125 need_suid_safe = true;
76126 }
76127
76128 - retval = coredump_wait(siginfo->si_signo, &core_state);
76129 + retval = coredump_wait(signr, &core_state);
76130 if (retval < 0)
76131 goto fail_creds;
76132
76133 @@ -597,7 +604,7 @@ void do_coredump(const siginfo_t *siginfo)
76134 }
76135 cprm.limit = RLIM_INFINITY;
76136
76137 - dump_count = atomic_inc_return(&core_dump_count);
76138 + dump_count = atomic_inc_return_unchecked(&core_dump_count);
76139 if (core_pipe_limit && (core_pipe_limit < dump_count)) {
76140 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
76141 task_tgid_vnr(current), current->comm);
76142 @@ -629,6 +636,8 @@ void do_coredump(const siginfo_t *siginfo)
76143 } else {
76144 struct inode *inode;
76145
76146 + gr_learn_resource(current, RLIMIT_CORE, binfmt->min_coredump, 1);
76147 +
76148 if (cprm.limit < binfmt->min_coredump)
76149 goto fail_unlock;
76150
76151 @@ -718,7 +727,7 @@ close_fail:
76152 filp_close(cprm.file, NULL);
76153 fail_dropcount:
76154 if (ispipe)
76155 - atomic_dec(&core_dump_count);
76156 + atomic_dec_unchecked(&core_dump_count);
76157 fail_unlock:
76158 kfree(cn.corename);
76159 coredump_finish(mm, core_dumped);
76160 @@ -739,6 +748,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr)
76161 struct file *file = cprm->file;
76162 loff_t pos = file->f_pos;
76163 ssize_t n;
76164 +
76165 + gr_learn_resource(current, RLIMIT_CORE, cprm->written + nr, 1);
76166 if (cprm->written + nr > cprm->limit)
76167 return 0;
76168 while (nr) {
76169 diff --git a/fs/dcache.c b/fs/dcache.c
76170 index 9b5fe50..8e7901e 100644
76171 --- a/fs/dcache.c
76172 +++ b/fs/dcache.c
76173 @@ -545,7 +545,7 @@ static void __dentry_kill(struct dentry *dentry)
76174 * dentry_iput drops the locks, at which point nobody (except
76175 * transient RCU lookups) can reach this dentry.
76176 */
76177 - BUG_ON(dentry->d_lockref.count > 0);
76178 + BUG_ON(__lockref_read(&dentry->d_lockref) > 0);
76179 this_cpu_dec(nr_dentry);
76180 if (dentry->d_op && dentry->d_op->d_release)
76181 dentry->d_op->d_release(dentry);
76182 @@ -598,7 +598,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry)
76183 struct dentry *parent = dentry->d_parent;
76184 if (IS_ROOT(dentry))
76185 return NULL;
76186 - if (unlikely(dentry->d_lockref.count < 0))
76187 + if (unlikely(__lockref_read(&dentry->d_lockref) < 0))
76188 return NULL;
76189 if (likely(spin_trylock(&parent->d_lock)))
76190 return parent;
76191 @@ -660,8 +660,8 @@ static inline bool fast_dput(struct dentry *dentry)
76192 */
76193 if (unlikely(ret < 0)) {
76194 spin_lock(&dentry->d_lock);
76195 - if (dentry->d_lockref.count > 1) {
76196 - dentry->d_lockref.count--;
76197 + if (__lockref_read(&dentry->d_lockref) > 1) {
76198 + __lockref_dec(&dentry->d_lockref);
76199 spin_unlock(&dentry->d_lock);
76200 return 1;
76201 }
76202 @@ -716,7 +716,7 @@ static inline bool fast_dput(struct dentry *dentry)
76203 * else could have killed it and marked it dead. Either way, we
76204 * don't need to do anything else.
76205 */
76206 - if (dentry->d_lockref.count) {
76207 + if (__lockref_read(&dentry->d_lockref)) {
76208 spin_unlock(&dentry->d_lock);
76209 return 1;
76210 }
76211 @@ -726,7 +726,7 @@ static inline bool fast_dput(struct dentry *dentry)
76212 * lock, and we just tested that it was zero, so we can just
76213 * set it to 1.
76214 */
76215 - dentry->d_lockref.count = 1;
76216 + __lockref_set(&dentry->d_lockref, 1);
76217 return 0;
76218 }
76219
76220 @@ -788,7 +788,7 @@ repeat:
76221 dentry->d_flags |= DCACHE_REFERENCED;
76222 dentry_lru_add(dentry);
76223
76224 - dentry->d_lockref.count--;
76225 + __lockref_dec(&dentry->d_lockref);
76226 spin_unlock(&dentry->d_lock);
76227 return;
76228
76229 @@ -803,7 +803,7 @@ EXPORT_SYMBOL(dput);
76230 /* This must be called with d_lock held */
76231 static inline void __dget_dlock(struct dentry *dentry)
76232 {
76233 - dentry->d_lockref.count++;
76234 + __lockref_inc(&dentry->d_lockref);
76235 }
76236
76237 static inline void __dget(struct dentry *dentry)
76238 @@ -844,8 +844,8 @@ repeat:
76239 goto repeat;
76240 }
76241 rcu_read_unlock();
76242 - BUG_ON(!ret->d_lockref.count);
76243 - ret->d_lockref.count++;
76244 + BUG_ON(!__lockref_read(&ret->d_lockref));
76245 + __lockref_inc(&ret->d_lockref);
76246 spin_unlock(&ret->d_lock);
76247 return ret;
76248 }
76249 @@ -923,9 +923,9 @@ restart:
76250 spin_lock(&inode->i_lock);
76251 hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
76252 spin_lock(&dentry->d_lock);
76253 - if (!dentry->d_lockref.count) {
76254 + if (!__lockref_read(&dentry->d_lockref)) {
76255 struct dentry *parent = lock_parent(dentry);
76256 - if (likely(!dentry->d_lockref.count)) {
76257 + if (likely(!__lockref_read(&dentry->d_lockref))) {
76258 __dentry_kill(dentry);
76259 dput(parent);
76260 goto restart;
76261 @@ -960,7 +960,7 @@ static void shrink_dentry_list(struct list_head *list)
76262 * We found an inuse dentry which was not removed from
76263 * the LRU because of laziness during lookup. Do not free it.
76264 */
76265 - if (dentry->d_lockref.count > 0) {
76266 + if (__lockref_read(&dentry->d_lockref) > 0) {
76267 spin_unlock(&dentry->d_lock);
76268 if (parent)
76269 spin_unlock(&parent->d_lock);
76270 @@ -998,8 +998,8 @@ static void shrink_dentry_list(struct list_head *list)
76271 dentry = parent;
76272 while (dentry && !lockref_put_or_lock(&dentry->d_lockref)) {
76273 parent = lock_parent(dentry);
76274 - if (dentry->d_lockref.count != 1) {
76275 - dentry->d_lockref.count--;
76276 + if (__lockref_read(&dentry->d_lockref) != 1) {
76277 + __lockref_inc(&dentry->d_lockref);
76278 spin_unlock(&dentry->d_lock);
76279 if (parent)
76280 spin_unlock(&parent->d_lock);
76281 @@ -1039,7 +1039,7 @@ static enum lru_status dentry_lru_isolate(struct list_head *item,
76282 * counts, just remove them from the LRU. Otherwise give them
76283 * another pass through the LRU.
76284 */
76285 - if (dentry->d_lockref.count) {
76286 + if (__lockref_read(&dentry->d_lockref)) {
76287 d_lru_isolate(lru, dentry);
76288 spin_unlock(&dentry->d_lock);
76289 return LRU_REMOVED;
76290 @@ -1373,7 +1373,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry)
76291 } else {
76292 if (dentry->d_flags & DCACHE_LRU_LIST)
76293 d_lru_del(dentry);
76294 - if (!dentry->d_lockref.count) {
76295 + if (!__lockref_read(&dentry->d_lockref)) {
76296 d_shrink_add(dentry, &data->dispose);
76297 data->found++;
76298 }
76299 @@ -1421,7 +1421,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry)
76300 return D_WALK_CONTINUE;
76301
76302 /* root with refcount 1 is fine */
76303 - if (dentry == _data && dentry->d_lockref.count == 1)
76304 + if (dentry == _data && __lockref_read(&dentry->d_lockref) == 1)
76305 return D_WALK_CONTINUE;
76306
76307 printk(KERN_ERR "BUG: Dentry %p{i=%lx,n=%pd} "
76308 @@ -1430,7 +1430,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry)
76309 dentry->d_inode ?
76310 dentry->d_inode->i_ino : 0UL,
76311 dentry,
76312 - dentry->d_lockref.count,
76313 + __lockref_read(&dentry->d_lockref),
76314 dentry->d_sb->s_type->name,
76315 dentry->d_sb->s_id);
76316 WARN_ON(1);
76317 @@ -1571,7 +1571,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
76318 dentry->d_iname[DNAME_INLINE_LEN-1] = 0;
76319 if (name->len > DNAME_INLINE_LEN-1) {
76320 size_t size = offsetof(struct external_name, name[1]);
76321 - struct external_name *p = kmalloc(size + name->len, GFP_KERNEL);
76322 + struct external_name *p = kmalloc(round_up(size + name->len, sizeof(unsigned long)), GFP_KERNEL);
76323 if (!p) {
76324 kmem_cache_free(dentry_cache, dentry);
76325 return NULL;
76326 @@ -1594,7 +1594,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
76327 smp_wmb();
76328 dentry->d_name.name = dname;
76329
76330 - dentry->d_lockref.count = 1;
76331 + __lockref_set(&dentry->d_lockref, 1);
76332 dentry->d_flags = 0;
76333 spin_lock_init(&dentry->d_lock);
76334 seqcount_init(&dentry->d_seq);
76335 @@ -1603,6 +1603,9 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
76336 dentry->d_sb = sb;
76337 dentry->d_op = NULL;
76338 dentry->d_fsdata = NULL;
76339 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
76340 + atomic_set(&dentry->chroot_refcnt, 0);
76341 +#endif
76342 INIT_HLIST_BL_NODE(&dentry->d_hash);
76343 INIT_LIST_HEAD(&dentry->d_lru);
76344 INIT_LIST_HEAD(&dentry->d_subdirs);
76345 @@ -2327,7 +2330,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name)
76346 goto next;
76347 }
76348
76349 - dentry->d_lockref.count++;
76350 + __lockref_inc(&dentry->d_lockref);
76351 found = dentry;
76352 spin_unlock(&dentry->d_lock);
76353 break;
76354 @@ -2395,7 +2398,7 @@ again:
76355 spin_lock(&dentry->d_lock);
76356 inode = dentry->d_inode;
76357 isdir = S_ISDIR(inode->i_mode);
76358 - if (dentry->d_lockref.count == 1) {
76359 + if (__lockref_read(&dentry->d_lockref) == 1) {
76360 if (!spin_trylock(&inode->i_lock)) {
76361 spin_unlock(&dentry->d_lock);
76362 cpu_relax();
76363 @@ -3337,7 +3340,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry)
76364
76365 if (!(dentry->d_flags & DCACHE_GENOCIDE)) {
76366 dentry->d_flags |= DCACHE_GENOCIDE;
76367 - dentry->d_lockref.count--;
76368 + __lockref_dec(&dentry->d_lockref);
76369 }
76370 }
76371 return D_WALK_CONTINUE;
76372 @@ -3445,7 +3448,8 @@ void __init vfs_caches_init_early(void)
76373 void __init vfs_caches_init(void)
76374 {
76375 names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
76376 - SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
76377 + SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_USERCOPY|
76378 + SLAB_NO_SANITIZE, NULL);
76379
76380 dcache_init();
76381 inode_init();
76382 diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
76383 index c711be8..23b8df9 100644
76384 --- a/fs/debugfs/inode.c
76385 +++ b/fs/debugfs/inode.c
76386 @@ -402,6 +402,10 @@ EXPORT_SYMBOL_GPL(debugfs_create_file_size);
76387 * If debugfs is not enabled in the kernel, the value -%ENODEV will be
76388 * returned.
76389 */
76390 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
76391 +extern int grsec_enable_sysfs_restrict;
76392 +#endif
76393 +
76394 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
76395 {
76396 struct dentry *dentry = start_creating(name, parent);
76397 @@ -414,7 +418,12 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
76398 if (unlikely(!inode))
76399 return failed_creating(dentry);
76400
76401 - inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
76402 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
76403 + if (grsec_enable_sysfs_restrict)
76404 + inode->i_mode = S_IFDIR | S_IRWXU;
76405 + else
76406 +#endif
76407 + inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
76408 inode->i_op = &simple_dir_inode_operations;
76409 inode->i_fop = &simple_dir_operations;
76410
76411 diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
76412 index 3c4db11..a43976f 100644
76413 --- a/fs/ecryptfs/inode.c
76414 +++ b/fs/ecryptfs/inode.c
76415 @@ -662,7 +662,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz)
76416 old_fs = get_fs();
76417 set_fs(get_ds());
76418 rc = d_inode(lower_dentry)->i_op->readlink(lower_dentry,
76419 - (char __user *)lower_buf,
76420 + (char __force_user *)lower_buf,
76421 PATH_MAX);
76422 set_fs(old_fs);
76423 if (rc < 0)
76424 diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
76425 index e4141f2..d8263e8 100644
76426 --- a/fs/ecryptfs/miscdev.c
76427 +++ b/fs/ecryptfs/miscdev.c
76428 @@ -304,7 +304,7 @@ check_list:
76429 goto out_unlock_msg_ctx;
76430 i = PKT_TYPE_SIZE + PKT_CTR_SIZE;
76431 if (msg_ctx->msg) {
76432 - if (copy_to_user(&buf[i], packet_length, packet_length_size))
76433 + if (packet_length_size > sizeof(packet_length) || copy_to_user(&buf[i], packet_length, packet_length_size))
76434 goto out_unlock_msg_ctx;
76435 i += packet_length_size;
76436 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
76437 diff --git a/fs/exec.c b/fs/exec.c
76438 index 1977c2a..40e7f8f 100644
76439 --- a/fs/exec.c
76440 +++ b/fs/exec.c
76441 @@ -56,8 +56,20 @@
76442 #include <linux/pipe_fs_i.h>
76443 #include <linux/oom.h>
76444 #include <linux/compat.h>
76445 +#include <linux/random.h>
76446 +#include <linux/seq_file.h>
76447 +#include <linux/coredump.h>
76448 +#include <linux/mman.h>
76449 +
76450 +#ifdef CONFIG_PAX_REFCOUNT
76451 +#include <linux/kallsyms.h>
76452 +#include <linux/kdebug.h>
76453 +#endif
76454 +
76455 +#include <trace/events/fs.h>
76456
76457 #include <asm/uaccess.h>
76458 +#include <asm/sections.h>
76459 #include <asm/mmu_context.h>
76460 #include <asm/tlb.h>
76461
76462 @@ -66,19 +78,34 @@
76463
76464 #include <trace/events/sched.h>
76465
76466 +#ifdef CONFIG_PAX_HAVE_ACL_FLAGS
76467 +void __weak pax_set_initial_flags(struct linux_binprm *bprm)
76468 +{
76469 + pr_warn_once("PAX: PAX_HAVE_ACL_FLAGS was enabled without providing the pax_set_initial_flags callback, this is probably not what you wanted.\n");
76470 +}
76471 +#endif
76472 +
76473 +#ifdef CONFIG_PAX_HOOK_ACL_FLAGS
76474 +void (*pax_set_initial_flags_func)(struct linux_binprm *bprm);
76475 +EXPORT_SYMBOL(pax_set_initial_flags_func);
76476 +#endif
76477 +
76478 int suid_dumpable = 0;
76479
76480 static LIST_HEAD(formats);
76481 static DEFINE_RWLOCK(binfmt_lock);
76482
76483 +extern int gr_process_kernel_exec_ban(void);
76484 +extern int gr_process_suid_exec_ban(const struct linux_binprm *bprm);
76485 +
76486 void __register_binfmt(struct linux_binfmt * fmt, int insert)
76487 {
76488 BUG_ON(!fmt);
76489 if (WARN_ON(!fmt->load_binary))
76490 return;
76491 write_lock(&binfmt_lock);
76492 - insert ? list_add(&fmt->lh, &formats) :
76493 - list_add_tail(&fmt->lh, &formats);
76494 + insert ? pax_list_add((struct list_head *)&fmt->lh, &formats) :
76495 + pax_list_add_tail((struct list_head *)&fmt->lh, &formats);
76496 write_unlock(&binfmt_lock);
76497 }
76498
76499 @@ -87,7 +114,7 @@ EXPORT_SYMBOL(__register_binfmt);
76500 void unregister_binfmt(struct linux_binfmt * fmt)
76501 {
76502 write_lock(&binfmt_lock);
76503 - list_del(&fmt->lh);
76504 + pax_list_del((struct list_head *)&fmt->lh);
76505 write_unlock(&binfmt_lock);
76506 }
76507
76508 @@ -183,18 +210,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
76509 int write)
76510 {
76511 struct page *page;
76512 - int ret;
76513
76514 -#ifdef CONFIG_STACK_GROWSUP
76515 - if (write) {
76516 - ret = expand_downwards(bprm->vma, pos);
76517 - if (ret < 0)
76518 - return NULL;
76519 - }
76520 -#endif
76521 - ret = get_user_pages(current, bprm->mm, pos,
76522 - 1, write, 1, &page, NULL);
76523 - if (ret <= 0)
76524 + if (0 > expand_downwards(bprm->vma, pos))
76525 + return NULL;
76526 + if (0 >= get_user_pages(current, bprm->mm, pos, 1, write, 1, &page, NULL))
76527 return NULL;
76528
76529 if (write) {
76530 @@ -210,6 +229,17 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
76531 if (size <= ARG_MAX)
76532 return page;
76533
76534 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
76535 + // only allow 512KB for argv+env on suid/sgid binaries
76536 + // to prevent easy ASLR exhaustion
76537 + if (((!uid_eq(bprm->cred->euid, current_euid())) ||
76538 + (!gid_eq(bprm->cred->egid, current_egid()))) &&
76539 + (size > (512 * 1024))) {
76540 + put_page(page);
76541 + return NULL;
76542 + }
76543 +#endif
76544 +
76545 /*
76546 * Limit to 1/4-th the stack size for the argv+env strings.
76547 * This ensures that:
76548 @@ -269,6 +299,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
76549 vma->vm_end = STACK_TOP_MAX;
76550 vma->vm_start = vma->vm_end - PAGE_SIZE;
76551 vma->vm_flags = VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
76552 +
76553 +#ifdef CONFIG_PAX_SEGMEXEC
76554 + vma->vm_flags &= ~(VM_EXEC | VM_MAYEXEC);
76555 +#endif
76556 +
76557 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
76558 INIT_LIST_HEAD(&vma->anon_vma_chain);
76559
76560 @@ -280,6 +315,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
76561 arch_bprm_mm_init(mm, vma);
76562 up_write(&mm->mmap_sem);
76563 bprm->p = vma->vm_end - sizeof(void *);
76564 +
76565 +#ifdef CONFIG_PAX_RANDUSTACK
76566 + if (randomize_va_space)
76567 + bprm->p ^= prandom_u32() & ~PAGE_MASK;
76568 +#endif
76569 +
76570 return 0;
76571 err:
76572 up_write(&mm->mmap_sem);
76573 @@ -396,7 +437,7 @@ struct user_arg_ptr {
76574 } ptr;
76575 };
76576
76577 -static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
76578 +const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
76579 {
76580 const char __user *native;
76581
76582 @@ -405,14 +446,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
76583 compat_uptr_t compat;
76584
76585 if (get_user(compat, argv.ptr.compat + nr))
76586 - return ERR_PTR(-EFAULT);
76587 + return (const char __force_user *)ERR_PTR(-EFAULT);
76588
76589 return compat_ptr(compat);
76590 }
76591 #endif
76592
76593 if (get_user(native, argv.ptr.native + nr))
76594 - return ERR_PTR(-EFAULT);
76595 + return (const char __force_user *)ERR_PTR(-EFAULT);
76596
76597 return native;
76598 }
76599 @@ -431,7 +472,7 @@ static int count(struct user_arg_ptr argv, int max)
76600 if (!p)
76601 break;
76602
76603 - if (IS_ERR(p))
76604 + if (IS_ERR((const char __force_kernel *)p))
76605 return -EFAULT;
76606
76607 if (i >= max)
76608 @@ -466,7 +507,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
76609
76610 ret = -EFAULT;
76611 str = get_user_arg_ptr(argv, argc);
76612 - if (IS_ERR(str))
76613 + if (IS_ERR((const char __force_kernel *)str))
76614 goto out;
76615
76616 len = strnlen_user(str, MAX_ARG_STRLEN);
76617 @@ -548,7 +589,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
76618 int r;
76619 mm_segment_t oldfs = get_fs();
76620 struct user_arg_ptr argv = {
76621 - .ptr.native = (const char __user *const __user *)__argv,
76622 + .ptr.native = (const char __user * const __force_user *)__argv,
76623 };
76624
76625 set_fs(KERNEL_DS);
76626 @@ -583,7 +624,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
76627 unsigned long new_end = old_end - shift;
76628 struct mmu_gather tlb;
76629
76630 - BUG_ON(new_start > new_end);
76631 + if (new_start >= new_end || new_start < mmap_min_addr)
76632 + return -ENOMEM;
76633
76634 /*
76635 * ensure there are no vmas between where we want to go
76636 @@ -592,6 +634,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
76637 if (vma != find_vma(mm, new_start))
76638 return -EFAULT;
76639
76640 +#ifdef CONFIG_PAX_SEGMEXEC
76641 + BUG_ON(pax_find_mirror_vma(vma));
76642 +#endif
76643 +
76644 /*
76645 * cover the whole range: [new_start, old_end)
76646 */
76647 @@ -675,10 +721,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
76648 stack_top = arch_align_stack(stack_top);
76649 stack_top = PAGE_ALIGN(stack_top);
76650
76651 - if (unlikely(stack_top < mmap_min_addr) ||
76652 - unlikely(vma->vm_end - vma->vm_start >= stack_top - mmap_min_addr))
76653 - return -ENOMEM;
76654 -
76655 stack_shift = vma->vm_end - stack_top;
76656
76657 bprm->p -= stack_shift;
76658 @@ -690,8 +732,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
76659 bprm->exec -= stack_shift;
76660
76661 down_write(&mm->mmap_sem);
76662 +
76663 + /* Move stack pages down in memory. */
76664 + if (stack_shift) {
76665 + ret = shift_arg_pages(vma, stack_shift);
76666 + if (ret)
76667 + goto out_unlock;
76668 + }
76669 +
76670 vm_flags = VM_STACK_FLAGS;
76671
76672 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
76673 + if (mm->pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
76674 + vm_flags &= ~VM_EXEC;
76675 +
76676 +#ifdef CONFIG_PAX_MPROTECT
76677 + if (mm->pax_flags & MF_PAX_MPROTECT)
76678 + vm_flags &= ~VM_MAYEXEC;
76679 +#endif
76680 +
76681 + }
76682 +#endif
76683 +
76684 /*
76685 * Adjust stack execute permissions; explicitly enable for
76686 * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
76687 @@ -710,13 +772,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
76688 goto out_unlock;
76689 BUG_ON(prev != vma);
76690
76691 - /* Move stack pages down in memory. */
76692 - if (stack_shift) {
76693 - ret = shift_arg_pages(vma, stack_shift);
76694 - if (ret)
76695 - goto out_unlock;
76696 - }
76697 -
76698 /* mprotect_fixup is overkill to remove the temporary stack flags */
76699 vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
76700
76701 @@ -740,6 +795,27 @@ int setup_arg_pages(struct linux_binprm *bprm,
76702 #endif
76703 current->mm->start_stack = bprm->p;
76704 ret = expand_stack(vma, stack_base);
76705 +
76706 +#if !defined(CONFIG_STACK_GROWSUP) && defined(CONFIG_PAX_RANDMMAP)
76707 + if (!ret && (mm->pax_flags & MF_PAX_RANDMMAP) && STACK_TOP <= 0xFFFFFFFFU && STACK_TOP > vma->vm_end) {
76708 + unsigned long size;
76709 + vm_flags_t vm_flags;
76710 +
76711 + size = STACK_TOP - vma->vm_end;
76712 + vm_flags = VM_NONE | VM_DONTEXPAND | VM_DONTDUMP;
76713 +
76714 + ret = vma->vm_end != mmap_region(NULL, vma->vm_end, size, vm_flags, 0);
76715 +
76716 +#ifdef CONFIG_X86
76717 + if (!ret) {
76718 + size = PAGE_SIZE + mmap_min_addr + ((mm->delta_mmap ^ mm->delta_stack) & (0xFFUL << PAGE_SHIFT));
76719 + ret = 0 != mmap_region(NULL, 0, PAGE_ALIGN(size), vm_flags, 0);
76720 + }
76721 +#endif
76722 +
76723 + }
76724 +#endif
76725 +
76726 if (ret)
76727 ret = -EFAULT;
76728
76729 @@ -784,8 +860,10 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags)
76730 if (err)
76731 goto exit;
76732
76733 - if (name->name[0] != '\0')
76734 + if (name->name[0] != '\0') {
76735 fsnotify_open(file);
76736 + trace_open_exec(name->name);
76737 + }
76738
76739 out:
76740 return file;
76741 @@ -818,7 +896,7 @@ int kernel_read(struct file *file, loff_t offset,
76742 old_fs = get_fs();
76743 set_fs(get_ds());
76744 /* The cast to a user pointer is valid due to the set_fs() */
76745 - result = vfs_read(file, (void __user *)addr, count, &pos);
76746 + result = vfs_read(file, (void __force_user *)addr, count, &pos);
76747 set_fs(old_fs);
76748 return result;
76749 }
76750 @@ -863,6 +941,7 @@ static int exec_mmap(struct mm_struct *mm)
76751 tsk->mm = mm;
76752 tsk->active_mm = mm;
76753 activate_mm(active_mm, mm);
76754 + populate_stack();
76755 tsk->mm->vmacache_seqnum = 0;
76756 vmacache_flush(tsk);
76757 task_unlock(tsk);
76758 @@ -1271,7 +1350,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
76759 }
76760 rcu_read_unlock();
76761
76762 - if (p->fs->users > n_fs)
76763 + if (atomic_read(&p->fs->users) > n_fs)
76764 bprm->unsafe |= LSM_UNSAFE_SHARE;
76765 else
76766 p->fs->in_exec = 1;
76767 @@ -1472,6 +1551,31 @@ static int exec_binprm(struct linux_binprm *bprm)
76768 return ret;
76769 }
76770
76771 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
76772 +static DEFINE_PER_CPU(u64, exec_counter);
76773 +static int __init init_exec_counters(void)
76774 +{
76775 + unsigned int cpu;
76776 +
76777 + for_each_possible_cpu(cpu) {
76778 + per_cpu(exec_counter, cpu) = (u64)cpu;
76779 + }
76780 +
76781 + return 0;
76782 +}
76783 +early_initcall(init_exec_counters);
76784 +static inline void increment_exec_counter(void)
76785 +{
76786 + BUILD_BUG_ON(NR_CPUS > (1 << 16));
76787 + current->exec_id = this_cpu_add_return(exec_counter, 1 << 16);
76788 +}
76789 +#else
76790 +static inline void increment_exec_counter(void) {}
76791 +#endif
76792 +
76793 +extern void gr_handle_exec_args(struct linux_binprm *bprm,
76794 + struct user_arg_ptr argv);
76795 +
76796 /*
76797 * sys_execve() executes a new program.
76798 */
76799 @@ -1480,6 +1584,11 @@ static int do_execveat_common(int fd, struct filename *filename,
76800 struct user_arg_ptr envp,
76801 int flags)
76802 {
76803 +#ifdef CONFIG_GRKERNSEC
76804 + struct file *old_exec_file;
76805 + struct acl_subject_label *old_acl;
76806 + struct rlimit old_rlim[RLIM_NLIMITS];
76807 +#endif
76808 char *pathbuf = NULL;
76809 struct linux_binprm *bprm;
76810 struct file *file;
76811 @@ -1489,6 +1598,8 @@ static int do_execveat_common(int fd, struct filename *filename,
76812 if (IS_ERR(filename))
76813 return PTR_ERR(filename);
76814
76815 + gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current_user()->processes), 1);
76816 +
76817 /*
76818 * We move the actual failure in case of RLIMIT_NPROC excess from
76819 * set*uid() to execve() because too many poorly written programs
76820 @@ -1526,6 +1637,11 @@ static int do_execveat_common(int fd, struct filename *filename,
76821 if (IS_ERR(file))
76822 goto out_unmark;
76823
76824 + if (gr_ptrace_readexec(file, bprm->unsafe)) {
76825 + retval = -EPERM;
76826 + goto out_unmark;
76827 + }
76828 +
76829 sched_exec();
76830
76831 bprm->file = file;
76832 @@ -1552,6 +1668,11 @@ static int do_execveat_common(int fd, struct filename *filename,
76833 }
76834 bprm->interp = bprm->filename;
76835
76836 + if (!gr_acl_handle_execve(file->f_path.dentry, file->f_path.mnt)) {
76837 + retval = -EACCES;
76838 + goto out_unmark;
76839 + }
76840 +
76841 retval = bprm_mm_init(bprm);
76842 if (retval)
76843 goto out_unmark;
76844 @@ -1568,24 +1689,70 @@ static int do_execveat_common(int fd, struct filename *filename,
76845 if (retval < 0)
76846 goto out;
76847
76848 +#ifdef CONFIG_GRKERNSEC
76849 + old_acl = current->acl;
76850 + memcpy(old_rlim, current->signal->rlim, sizeof(old_rlim));
76851 + old_exec_file = current->exec_file;
76852 + get_file(file);
76853 + current->exec_file = file;
76854 +#endif
76855 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
76856 + /* limit suid stack to 8MB
76857 + * we saved the old limits above and will restore them if this exec fails
76858 + */
76859 + if (((!uid_eq(bprm->cred->euid, current_euid())) || (!gid_eq(bprm->cred->egid, current_egid()))) &&
76860 + (old_rlim[RLIMIT_STACK].rlim_cur > (8 * 1024 * 1024)))
76861 + current->signal->rlim[RLIMIT_STACK].rlim_cur = 8 * 1024 * 1024;
76862 +#endif
76863 +
76864 + if (gr_process_kernel_exec_ban() || gr_process_suid_exec_ban(bprm)) {
76865 + retval = -EPERM;
76866 + goto out_fail;
76867 + }
76868 +
76869 + if (!gr_tpe_allow(file)) {
76870 + retval = -EACCES;
76871 + goto out_fail;
76872 + }
76873 +
76874 + if (gr_check_crash_exec(file)) {
76875 + retval = -EACCES;
76876 + goto out_fail;
76877 + }
76878 +
76879 + retval = gr_set_proc_label(file->f_path.dentry, file->f_path.mnt,
76880 + bprm->unsafe);
76881 + if (retval < 0)
76882 + goto out_fail;
76883 +
76884 retval = copy_strings_kernel(1, &bprm->filename, bprm);
76885 if (retval < 0)
76886 - goto out;
76887 + goto out_fail;
76888
76889 bprm->exec = bprm->p;
76890 retval = copy_strings(bprm->envc, envp, bprm);
76891 if (retval < 0)
76892 - goto out;
76893 + goto out_fail;
76894
76895 retval = copy_strings(bprm->argc, argv, bprm);
76896 if (retval < 0)
76897 - goto out;
76898 + goto out_fail;
76899 +
76900 + gr_log_chroot_exec(file->f_path.dentry, file->f_path.mnt);
76901 +
76902 + gr_handle_exec_args(bprm, argv);
76903
76904 retval = exec_binprm(bprm);
76905 if (retval < 0)
76906 - goto out;
76907 + goto out_fail;
76908 +#ifdef CONFIG_GRKERNSEC
76909 + if (old_exec_file)
76910 + fput(old_exec_file);
76911 +#endif
76912
76913 /* execve succeeded */
76914 +
76915 + increment_exec_counter();
76916 current->fs->in_exec = 0;
76917 current->in_execve = 0;
76918 acct_update_integrals(current);
76919 @@ -1597,6 +1764,14 @@ static int do_execveat_common(int fd, struct filename *filename,
76920 put_files_struct(displaced);
76921 return retval;
76922
76923 +out_fail:
76924 +#ifdef CONFIG_GRKERNSEC
76925 + current->acl = old_acl;
76926 + memcpy(current->signal->rlim, old_rlim, sizeof(old_rlim));
76927 + fput(current->exec_file);
76928 + current->exec_file = old_exec_file;
76929 +#endif
76930 +
76931 out:
76932 if (bprm->mm) {
76933 acct_arg_size(bprm, 0);
76934 @@ -1743,3 +1918,312 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd,
76935 argv, envp, flags);
76936 }
76937 #endif
76938 +
76939 +int pax_check_flags(unsigned long *flags)
76940 +{
76941 + int retval = 0;
76942 +
76943 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_SEGMEXEC)
76944 + if (*flags & MF_PAX_SEGMEXEC)
76945 + {
76946 + *flags &= ~MF_PAX_SEGMEXEC;
76947 + retval = -EINVAL;
76948 + }
76949 +#endif
76950 +
76951 + if ((*flags & MF_PAX_PAGEEXEC)
76952 +
76953 +#ifdef CONFIG_PAX_PAGEEXEC
76954 + && (*flags & MF_PAX_SEGMEXEC)
76955 +#endif
76956 +
76957 + )
76958 + {
76959 + *flags &= ~MF_PAX_PAGEEXEC;
76960 + retval = -EINVAL;
76961 + }
76962 +
76963 + if ((*flags & MF_PAX_MPROTECT)
76964 +
76965 +#ifdef CONFIG_PAX_MPROTECT
76966 + && !(*flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC))
76967 +#endif
76968 +
76969 + )
76970 + {
76971 + *flags &= ~MF_PAX_MPROTECT;
76972 + retval = -EINVAL;
76973 + }
76974 +
76975 + if ((*flags & MF_PAX_EMUTRAMP)
76976 +
76977 +#ifdef CONFIG_PAX_EMUTRAMP
76978 + && !(*flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC))
76979 +#endif
76980 +
76981 + )
76982 + {
76983 + *flags &= ~MF_PAX_EMUTRAMP;
76984 + retval = -EINVAL;
76985 + }
76986 +
76987 + return retval;
76988 +}
76989 +
76990 +EXPORT_SYMBOL(pax_check_flags);
76991 +
76992 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
76993 +char *pax_get_path(const struct path *path, char *buf, int buflen)
76994 +{
76995 + char *pathname = d_path(path, buf, buflen);
76996 +
76997 + if (IS_ERR(pathname))
76998 + goto toolong;
76999 +
77000 + pathname = mangle_path(buf, pathname, "\t\n\\");
77001 + if (!pathname)
77002 + goto toolong;
77003 +
77004 + *pathname = 0;
77005 + return buf;
77006 +
77007 +toolong:
77008 + return "<path too long>";
77009 +}
77010 +EXPORT_SYMBOL(pax_get_path);
77011 +
77012 +void pax_report_fault(struct pt_regs *regs, void *pc, void *sp)
77013 +{
77014 + struct task_struct *tsk = current;
77015 + struct mm_struct *mm = current->mm;
77016 + char *buffer_exec = (char *)__get_free_page(GFP_KERNEL);
77017 + char *buffer_fault = (char *)__get_free_page(GFP_KERNEL);
77018 + char *path_exec = NULL;
77019 + char *path_fault = NULL;
77020 + unsigned long start = 0UL, end = 0UL, offset = 0UL;
77021 + siginfo_t info = { };
77022 +
77023 + if (buffer_exec && buffer_fault) {
77024 + struct vm_area_struct *vma, *vma_exec = NULL, *vma_fault = NULL;
77025 +
77026 + down_read(&mm->mmap_sem);
77027 + vma = mm->mmap;
77028 + while (vma && (!vma_exec || !vma_fault)) {
77029 + if (vma->vm_file && mm->exe_file == vma->vm_file && (vma->vm_flags & VM_EXEC))
77030 + vma_exec = vma;
77031 + if (vma->vm_start <= (unsigned long)pc && (unsigned long)pc < vma->vm_end)
77032 + vma_fault = vma;
77033 + vma = vma->vm_next;
77034 + }
77035 + if (vma_exec)
77036 + path_exec = pax_get_path(&vma_exec->vm_file->f_path, buffer_exec, PAGE_SIZE);
77037 + if (vma_fault) {
77038 + start = vma_fault->vm_start;
77039 + end = vma_fault->vm_end;
77040 + offset = vma_fault->vm_pgoff << PAGE_SHIFT;
77041 + if (vma_fault->vm_file)
77042 + path_fault = pax_get_path(&vma_fault->vm_file->f_path, buffer_fault, PAGE_SIZE);
77043 + else if ((unsigned long)pc >= mm->start_brk && (unsigned long)pc < mm->brk)
77044 + path_fault = "<heap>";
77045 + else if (vma_fault->vm_flags & (VM_GROWSDOWN | VM_GROWSUP))
77046 + path_fault = "<stack>";
77047 + else
77048 + path_fault = "<anonymous mapping>";
77049 + }
77050 + up_read(&mm->mmap_sem);
77051 + }
77052 + if (tsk->signal->curr_ip)
77053 + printk(KERN_ERR "PAX: From %pI4: execution attempt in: %s, %08lx-%08lx %08lx\n", &tsk->signal->curr_ip, path_fault, start, end, offset);
77054 + else
77055 + printk(KERN_ERR "PAX: execution attempt in: %s, %08lx-%08lx %08lx\n", path_fault, start, end, offset);
77056 + printk(KERN_ERR "PAX: terminating task: %s(%s):%d, uid/euid: %u/%u, PC: %p, SP: %p\n", path_exec, tsk->comm, task_pid_nr(tsk),
77057 + from_kuid_munged(&init_user_ns, task_uid(tsk)), from_kuid_munged(&init_user_ns, task_euid(tsk)), pc, sp);
77058 + free_page((unsigned long)buffer_exec);
77059 + free_page((unsigned long)buffer_fault);
77060 + pax_report_insns(regs, pc, sp);
77061 + info.si_signo = SIGKILL;
77062 + info.si_errno = 0;
77063 + info.si_code = SI_KERNEL;
77064 + info.si_pid = 0;
77065 + info.si_uid = 0;
77066 + do_coredump(&info);
77067 +}
77068 +#endif
77069 +
77070 +#ifdef CONFIG_PAX_REFCOUNT
77071 +void pax_report_refcount_overflow(struct pt_regs *regs)
77072 +{
77073 + if (current->signal->curr_ip)
77074 + printk(KERN_EMERG "PAX: From %pI4: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
77075 + &current->signal->curr_ip, current->comm, task_pid_nr(current),
77076 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
77077 + else
77078 + printk(KERN_EMERG "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n", current->comm, task_pid_nr(current),
77079 + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()));
77080 + print_symbol(KERN_EMERG "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
77081 + preempt_disable();
77082 + show_regs(regs);
77083 + preempt_enable();
77084 + force_sig_info(SIGKILL, SEND_SIG_FORCED, current);
77085 +}
77086 +#endif
77087 +
77088 +#ifdef CONFIG_PAX_USERCOPY
77089 +/* 0: not at all, 1: fully, 2: fully inside frame, -1: partially (implies an error) */
77090 +static noinline int check_stack_object(const void *obj, unsigned long len)
77091 +{
77092 + const void * const stack = task_stack_page(current);
77093 + const void * const stackend = stack + THREAD_SIZE;
77094 +
77095 +#if defined(CONFIG_FRAME_POINTER) && defined(CONFIG_X86)
77096 + const void *frame = NULL;
77097 + const void *oldframe;
77098 +#endif
77099 +
77100 + if (obj + len < obj)
77101 + return -1;
77102 +
77103 + if (obj + len <= stack || stackend <= obj)
77104 + return 0;
77105 +
77106 + if (obj < stack || stackend < obj + len)
77107 + return -1;
77108 +
77109 +#if defined(CONFIG_FRAME_POINTER) && defined(CONFIG_X86)
77110 + oldframe = __builtin_frame_address(1);
77111 + if (oldframe)
77112 + frame = __builtin_frame_address(2);
77113 + /*
77114 + low ----------------------------------------------> high
77115 + [saved bp][saved ip][args][local vars][saved bp][saved ip]
77116 + ^----------------^
77117 + allow copies only within here
77118 + */
77119 + while (stack <= frame && frame < stackend) {
77120 + /* if obj + len extends past the last frame, this
77121 + check won't pass and the next frame will be 0,
77122 + causing us to bail out and correctly report
77123 + the copy as invalid
77124 + */
77125 + if (obj + len <= frame)
77126 + return obj >= oldframe + 2 * sizeof(void *) ? 2 : -1;
77127 + oldframe = frame;
77128 + frame = *(const void * const *)frame;
77129 + }
77130 + return -1;
77131 +#else
77132 + return 1;
77133 +#endif
77134 +}
77135 +
77136 +static __noreturn void pax_report_usercopy(const void *ptr, unsigned long len, bool to_user, const char *type)
77137 +{
77138 + if (current->signal->curr_ip)
77139 + printk(KERN_EMERG "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
77140 + &current->signal->curr_ip, to_user ? "leak" : "overwrite", to_user ? "from" : "to", ptr, type ? : "unknown", len);
77141 + else
77142 + printk(KERN_EMERG "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
77143 + to_user ? "leak" : "overwrite", to_user ? "from" : "to", ptr, type ? : "unknown", len);
77144 + dump_stack();
77145 + gr_handle_kernel_exploit();
77146 + do_group_exit(SIGKILL);
77147 +}
77148 +#endif
77149 +
77150 +#ifdef CONFIG_PAX_USERCOPY
77151 +
77152 +static inline bool check_kernel_text_object(unsigned long low, unsigned long high)
77153 +{
77154 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
77155 + unsigned long textlow = ktla_ktva((unsigned long)_stext);
77156 +#ifdef CONFIG_MODULES
77157 + unsigned long texthigh = (unsigned long)MODULES_EXEC_VADDR;
77158 +#else
77159 + unsigned long texthigh = ktla_ktva((unsigned long)_etext);
77160 +#endif
77161 +
77162 +#else
77163 + unsigned long textlow = (unsigned long)_stext;
77164 + unsigned long texthigh = (unsigned long)_etext;
77165 +
77166 +#ifdef CONFIG_X86_64
77167 + /* check against linear mapping as well */
77168 + if (high > (unsigned long)__va(__pa(textlow)) &&
77169 + low < (unsigned long)__va(__pa(texthigh)))
77170 + return true;
77171 +#endif
77172 +
77173 +#endif
77174 +
77175 + if (high <= textlow || low >= texthigh)
77176 + return false;
77177 + else
77178 + return true;
77179 +}
77180 +#endif
77181 +
77182 +void __check_object_size(const void *ptr, unsigned long n, bool to_user, bool const_size)
77183 +{
77184 +#ifdef CONFIG_PAX_USERCOPY
77185 + const char *type;
77186 +#endif
77187 +
77188 +#if !defined(CONFIG_STACK_GROWSUP) && !defined(CONFIG_X86_64)
77189 + unsigned long stackstart = (unsigned long)task_stack_page(current);
77190 + unsigned long currentsp = (unsigned long)&stackstart;
77191 + if (unlikely((currentsp < stackstart + 512 ||
77192 + currentsp >= stackstart + THREAD_SIZE) && !in_interrupt()))
77193 + BUG();
77194 +#endif
77195 +
77196 +#ifndef CONFIG_PAX_USERCOPY_DEBUG
77197 + if (const_size)
77198 + return;
77199 +#endif
77200 +
77201 +#ifdef CONFIG_PAX_USERCOPY
77202 + if (!n)
77203 + return;
77204 +
77205 + type = check_heap_object(ptr, n);
77206 + if (!type) {
77207 + int ret = check_stack_object(ptr, n);
77208 + if (ret == 1 || ret == 2)
77209 + return;
77210 + if (ret == 0) {
77211 + if (check_kernel_text_object((unsigned long)ptr, (unsigned long)ptr + n))
77212 + type = "<kernel text>";
77213 + else
77214 + return;
77215 + } else
77216 + type = "<process stack>";
77217 + }
77218 +
77219 + pax_report_usercopy(ptr, n, to_user, type);
77220 +#endif
77221 +
77222 +}
77223 +EXPORT_SYMBOL(__check_object_size);
77224 +
77225 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
77226 +void __used pax_track_stack(void)
77227 +{
77228 + unsigned long sp = (unsigned long)&sp;
77229 + if (sp < current_thread_info()->lowest_stack &&
77230 + sp >= (unsigned long)task_stack_page(current) + 2 * sizeof(unsigned long))
77231 + current_thread_info()->lowest_stack = sp;
77232 + if (unlikely((sp & ~(THREAD_SIZE - 1)) < (THREAD_SIZE/16)))
77233 + BUG();
77234 +}
77235 +EXPORT_SYMBOL(pax_track_stack);
77236 +#endif
77237 +
77238 +#ifdef CONFIG_PAX_SIZE_OVERFLOW
77239 +void __nocapture(1, 3, 4) __used report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name)
77240 +{
77241 + printk(KERN_EMERG "PAX: size overflow detected in function %s %s:%u %s", func, file, line, ssa_name);
77242 + dump_stack();
77243 + do_group_exit(SIGKILL);
77244 +}
77245 +EXPORT_SYMBOL(report_size_overflow);
77246 +#endif
77247 diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
77248 index 9f9992b..8b59411 100644
77249 --- a/fs/ext2/balloc.c
77250 +++ b/fs/ext2/balloc.c
77251 @@ -1184,10 +1184,10 @@ static int ext2_has_free_blocks(struct ext2_sb_info *sbi)
77252
77253 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
77254 root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
77255 - if (free_blocks < root_blocks + 1 && !capable(CAP_SYS_RESOURCE) &&
77256 + if (free_blocks < root_blocks + 1 &&
77257 !uid_eq(sbi->s_resuid, current_fsuid()) &&
77258 (gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) ||
77259 - !in_group_p (sbi->s_resgid))) {
77260 + !in_group_p (sbi->s_resgid)) && !capable_nolog(CAP_SYS_RESOURCE)) {
77261 return 0;
77262 }
77263 return 1;
77264 diff --git a/fs/ext2/super.c b/fs/ext2/super.c
77265 index 900e19c..f7dc2b8 100644
77266 --- a/fs/ext2/super.c
77267 +++ b/fs/ext2/super.c
77268 @@ -267,10 +267,8 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root)
77269 #ifdef CONFIG_EXT2_FS_XATTR
77270 if (test_opt(sb, XATTR_USER))
77271 seq_puts(seq, ",user_xattr");
77272 - if (!test_opt(sb, XATTR_USER) &&
77273 - (def_mount_opts & EXT2_DEFM_XATTR_USER)) {
77274 + if (!test_opt(sb, XATTR_USER))
77275 seq_puts(seq, ",nouser_xattr");
77276 - }
77277 #endif
77278
77279 #ifdef CONFIG_EXT2_FS_POSIX_ACL
77280 @@ -856,8 +854,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
77281 if (def_mount_opts & EXT2_DEFM_UID16)
77282 set_opt(sbi->s_mount_opt, NO_UID32);
77283 #ifdef CONFIG_EXT2_FS_XATTR
77284 - if (def_mount_opts & EXT2_DEFM_XATTR_USER)
77285 - set_opt(sbi->s_mount_opt, XATTR_USER);
77286 + /* always enable user xattrs */
77287 + set_opt(sbi->s_mount_opt, XATTR_USER);
77288 #endif
77289 #ifdef CONFIG_EXT2_FS_POSIX_ACL
77290 if (def_mount_opts & EXT2_DEFM_ACL)
77291 diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
77292 index 0b6bfd3..93a2964 100644
77293 --- a/fs/ext2/xattr.c
77294 +++ b/fs/ext2/xattr.c
77295 @@ -247,7 +247,7 @@ ext2_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size)
77296 struct buffer_head *bh = NULL;
77297 struct ext2_xattr_entry *entry;
77298 char *end;
77299 - size_t rest = buffer_size;
77300 + size_t rest = buffer_size, total_size = 0;
77301 int error;
77302
77303 ea_idebug(inode, "buffer=%p, buffer_size=%ld",
77304 @@ -305,9 +305,10 @@ bad_block: ext2_error(inode->i_sb, "ext2_xattr_list",
77305 buffer += size;
77306 }
77307 rest -= size;
77308 + total_size += size;
77309 }
77310 }
77311 - error = buffer_size - rest; /* total size */
77312 + error = total_size;
77313
77314 cleanup:
77315 brelse(bh);
77316 diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
77317 index 158b5d4..2432610 100644
77318 --- a/fs/ext3/balloc.c
77319 +++ b/fs/ext3/balloc.c
77320 @@ -1438,10 +1438,10 @@ static int ext3_has_free_blocks(struct ext3_sb_info *sbi, int use_reservation)
77321
77322 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
77323 root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
77324 - if (free_blocks < root_blocks + 1 && !capable(CAP_SYS_RESOURCE) &&
77325 + if (free_blocks < root_blocks + 1 &&
77326 !use_reservation && !uid_eq(sbi->s_resuid, current_fsuid()) &&
77327 (gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) ||
77328 - !in_group_p (sbi->s_resgid))) {
77329 + !in_group_p (sbi->s_resgid)) && !capable_nolog(CAP_SYS_RESOURCE)) {
77330 return 0;
77331 }
77332 return 1;
77333 diff --git a/fs/ext3/super.c b/fs/ext3/super.c
77334 index 5ed0044..656e3d2 100644
77335 --- a/fs/ext3/super.c
77336 +++ b/fs/ext3/super.c
77337 @@ -655,10 +655,8 @@ static int ext3_show_options(struct seq_file *seq, struct dentry *root)
77338 #ifdef CONFIG_EXT3_FS_XATTR
77339 if (test_opt(sb, XATTR_USER))
77340 seq_puts(seq, ",user_xattr");
77341 - if (!test_opt(sb, XATTR_USER) &&
77342 - (def_mount_opts & EXT3_DEFM_XATTR_USER)) {
77343 + if (!test_opt(sb, XATTR_USER))
77344 seq_puts(seq, ",nouser_xattr");
77345 - }
77346 #endif
77347 #ifdef CONFIG_EXT3_FS_POSIX_ACL
77348 if (test_opt(sb, POSIX_ACL))
77349 @@ -1760,8 +1758,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
77350 if (def_mount_opts & EXT3_DEFM_UID16)
77351 set_opt(sbi->s_mount_opt, NO_UID32);
77352 #ifdef CONFIG_EXT3_FS_XATTR
77353 - if (def_mount_opts & EXT3_DEFM_XATTR_USER)
77354 - set_opt(sbi->s_mount_opt, XATTR_USER);
77355 + /* always enable user xattrs */
77356 + set_opt(sbi->s_mount_opt, XATTR_USER);
77357 #endif
77358 #ifdef CONFIG_EXT3_FS_POSIX_ACL
77359 if (def_mount_opts & EXT3_DEFM_ACL)
77360 diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
77361 index 7cf3650..e3f4a51 100644
77362 --- a/fs/ext3/xattr.c
77363 +++ b/fs/ext3/xattr.c
77364 @@ -330,7 +330,7 @@ static int
77365 ext3_xattr_list_entries(struct dentry *dentry, struct ext3_xattr_entry *entry,
77366 char *buffer, size_t buffer_size)
77367 {
77368 - size_t rest = buffer_size;
77369 + size_t rest = buffer_size, total_size = 0;
77370
77371 for (; !IS_LAST_ENTRY(entry); entry = EXT3_XATTR_NEXT(entry)) {
77372 const struct xattr_handler *handler =
77373 @@ -347,9 +347,10 @@ ext3_xattr_list_entries(struct dentry *dentry, struct ext3_xattr_entry *entry,
77374 buffer += size;
77375 }
77376 rest -= size;
77377 + total_size += size;
77378 }
77379 }
77380 - return buffer_size - rest;
77381 + return total_size;
77382 }
77383
77384 static int
77385 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
77386 index cd6ea29..1cd2a97 100644
77387 --- a/fs/ext4/balloc.c
77388 +++ b/fs/ext4/balloc.c
77389 @@ -556,8 +556,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
77390 /* Hm, nope. Are (enough) root reserved clusters available? */
77391 if (uid_eq(sbi->s_resuid, current_fsuid()) ||
77392 (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) ||
77393 - capable(CAP_SYS_RESOURCE) ||
77394 - (flags & EXT4_MB_USE_ROOT_BLOCKS)) {
77395 + (flags & EXT4_MB_USE_ROOT_BLOCKS) ||
77396 + capable_nolog(CAP_SYS_RESOURCE)) {
77397
77398 if (free_clusters >= (nclusters + dirty_clusters +
77399 resv_clusters))
77400 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
77401 index f5e9f04..91296b9 100644
77402 --- a/fs/ext4/ext4.h
77403 +++ b/fs/ext4/ext4.h
77404 @@ -1305,19 +1305,19 @@ struct ext4_sb_info {
77405 unsigned long s_mb_last_start;
77406
77407 /* stats for buddy allocator */
77408 - atomic_t s_bal_reqs; /* number of reqs with len > 1 */
77409 - atomic_t s_bal_success; /* we found long enough chunks */
77410 - atomic_t s_bal_allocated; /* in blocks */
77411 - atomic_t s_bal_ex_scanned; /* total extents scanned */
77412 - atomic_t s_bal_goals; /* goal hits */
77413 - atomic_t s_bal_breaks; /* too long searches */
77414 - atomic_t s_bal_2orders; /* 2^order hits */
77415 + atomic_unchecked_t s_bal_reqs; /* number of reqs with len > 1 */
77416 + atomic_unchecked_t s_bal_success; /* we found long enough chunks */
77417 + atomic_unchecked_t s_bal_allocated; /* in blocks */
77418 + atomic_unchecked_t s_bal_ex_scanned; /* total extents scanned */
77419 + atomic_unchecked_t s_bal_goals; /* goal hits */
77420 + atomic_unchecked_t s_bal_breaks; /* too long searches */
77421 + atomic_unchecked_t s_bal_2orders; /* 2^order hits */
77422 spinlock_t s_bal_lock;
77423 unsigned long s_mb_buddies_generated;
77424 unsigned long long s_mb_generation_time;
77425 - atomic_t s_mb_lost_chunks;
77426 - atomic_t s_mb_preallocated;
77427 - atomic_t s_mb_discarded;
77428 + atomic_unchecked_t s_mb_lost_chunks;
77429 + atomic_unchecked_t s_mb_preallocated;
77430 + atomic_unchecked_t s_mb_discarded;
77431 atomic_t s_lock_busy;
77432
77433 /* locality groups */
77434 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
77435 index 34b610e..ecc47cb 100644
77436 --- a/fs/ext4/mballoc.c
77437 +++ b/fs/ext4/mballoc.c
77438 @@ -1905,7 +1905,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
77439 BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
77440
77441 if (EXT4_SB(sb)->s_mb_stats)
77442 - atomic_inc(&EXT4_SB(sb)->s_bal_2orders);
77443 + atomic_inc_unchecked(&EXT4_SB(sb)->s_bal_2orders);
77444
77445 break;
77446 }
77447 @@ -2228,7 +2228,7 @@ repeat:
77448 ac->ac_status = AC_STATUS_CONTINUE;
77449 ac->ac_flags |= EXT4_MB_HINT_FIRST;
77450 cr = 3;
77451 - atomic_inc(&sbi->s_mb_lost_chunks);
77452 + atomic_inc_unchecked(&sbi->s_mb_lost_chunks);
77453 goto repeat;
77454 }
77455 }
77456 @@ -2732,25 +2732,25 @@ int ext4_mb_release(struct super_block *sb)
77457 if (sbi->s_mb_stats) {
77458 ext4_msg(sb, KERN_INFO,
77459 "mballoc: %u blocks %u reqs (%u success)",
77460 - atomic_read(&sbi->s_bal_allocated),
77461 - atomic_read(&sbi->s_bal_reqs),
77462 - atomic_read(&sbi->s_bal_success));
77463 + atomic_read_unchecked(&sbi->s_bal_allocated),
77464 + atomic_read_unchecked(&sbi->s_bal_reqs),
77465 + atomic_read_unchecked(&sbi->s_bal_success));
77466 ext4_msg(sb, KERN_INFO,
77467 "mballoc: %u extents scanned, %u goal hits, "
77468 "%u 2^N hits, %u breaks, %u lost",
77469 - atomic_read(&sbi->s_bal_ex_scanned),
77470 - atomic_read(&sbi->s_bal_goals),
77471 - atomic_read(&sbi->s_bal_2orders),
77472 - atomic_read(&sbi->s_bal_breaks),
77473 - atomic_read(&sbi->s_mb_lost_chunks));
77474 + atomic_read_unchecked(&sbi->s_bal_ex_scanned),
77475 + atomic_read_unchecked(&sbi->s_bal_goals),
77476 + atomic_read_unchecked(&sbi->s_bal_2orders),
77477 + atomic_read_unchecked(&sbi->s_bal_breaks),
77478 + atomic_read_unchecked(&sbi->s_mb_lost_chunks));
77479 ext4_msg(sb, KERN_INFO,
77480 "mballoc: %lu generated and it took %Lu",
77481 sbi->s_mb_buddies_generated,
77482 sbi->s_mb_generation_time);
77483 ext4_msg(sb, KERN_INFO,
77484 "mballoc: %u preallocated, %u discarded",
77485 - atomic_read(&sbi->s_mb_preallocated),
77486 - atomic_read(&sbi->s_mb_discarded));
77487 + atomic_read_unchecked(&sbi->s_mb_preallocated),
77488 + atomic_read_unchecked(&sbi->s_mb_discarded));
77489 }
77490
77491 free_percpu(sbi->s_locality_groups);
77492 @@ -3206,16 +3206,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
77493 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
77494
77495 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
77496 - atomic_inc(&sbi->s_bal_reqs);
77497 - atomic_add(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated);
77498 + atomic_inc_unchecked(&sbi->s_bal_reqs);
77499 + atomic_add_unchecked(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated);
77500 if (ac->ac_b_ex.fe_len >= ac->ac_o_ex.fe_len)
77501 - atomic_inc(&sbi->s_bal_success);
77502 - atomic_add(ac->ac_found, &sbi->s_bal_ex_scanned);
77503 + atomic_inc_unchecked(&sbi->s_bal_success);
77504 + atomic_add_unchecked(ac->ac_found, &sbi->s_bal_ex_scanned);
77505 if (ac->ac_g_ex.fe_start == ac->ac_b_ex.fe_start &&
77506 ac->ac_g_ex.fe_group == ac->ac_b_ex.fe_group)
77507 - atomic_inc(&sbi->s_bal_goals);
77508 + atomic_inc_unchecked(&sbi->s_bal_goals);
77509 if (ac->ac_found > sbi->s_mb_max_to_scan)
77510 - atomic_inc(&sbi->s_bal_breaks);
77511 + atomic_inc_unchecked(&sbi->s_bal_breaks);
77512 }
77513
77514 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
77515 @@ -3642,7 +3642,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
77516 trace_ext4_mb_new_inode_pa(ac, pa);
77517
77518 ext4_mb_use_inode_pa(ac, pa);
77519 - atomic_add(pa->pa_free, &sbi->s_mb_preallocated);
77520 + atomic_add_unchecked(pa->pa_free, &sbi->s_mb_preallocated);
77521
77522 ei = EXT4_I(ac->ac_inode);
77523 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
77524 @@ -3702,7 +3702,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
77525 trace_ext4_mb_new_group_pa(ac, pa);
77526
77527 ext4_mb_use_group_pa(ac, pa);
77528 - atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
77529 + atomic_add_unchecked(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
77530
77531 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
77532 lg = ac->ac_lg;
77533 @@ -3791,7 +3791,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
77534 * from the bitmap and continue.
77535 */
77536 }
77537 - atomic_add(free, &sbi->s_mb_discarded);
77538 + atomic_add_unchecked(free, &sbi->s_mb_discarded);
77539
77540 return err;
77541 }
77542 @@ -3809,7 +3809,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
77543 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
77544 BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
77545 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
77546 - atomic_add(pa->pa_len, &EXT4_SB(sb)->s_mb_discarded);
77547 + atomic_add_unchecked(pa->pa_len, &EXT4_SB(sb)->s_mb_discarded);
77548 trace_ext4_mballoc_discard(sb, NULL, group, bit, pa->pa_len);
77549
77550 return 0;
77551 diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
77552 index 8313ca3..8a37d08 100644
77553 --- a/fs/ext4/mmp.c
77554 +++ b/fs/ext4/mmp.c
77555 @@ -111,7 +111,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh,
77556 void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp,
77557 const char *function, unsigned int line, const char *msg)
77558 {
77559 - __ext4_warning(sb, function, line, msg);
77560 + __ext4_warning(sb, function, line, "%s", msg);
77561 __ext4_warning(sb, function, line,
77562 "MMP failure info: last update time: %llu, last update "
77563 "node: %s, last update device: %s\n",
77564 diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
77565 index cf0c472..ddf284d 100644
77566 --- a/fs/ext4/resize.c
77567 +++ b/fs/ext4/resize.c
77568 @@ -413,7 +413,7 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle,
77569
77570 ext4_debug("mark blocks [%llu/%u] used\n", block, count);
77571 for (count2 = count; count > 0; count -= count2, block += count2) {
77572 - ext4_fsblk_t start;
77573 + ext4_fsblk_t start, diff;
77574 struct buffer_head *bh;
77575 ext4_group_t group;
77576 int err;
77577 @@ -422,10 +422,6 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle,
77578 start = ext4_group_first_block_no(sb, group);
77579 group -= flex_gd->groups[0].group;
77580
77581 - count2 = EXT4_BLOCKS_PER_GROUP(sb) - (block - start);
77582 - if (count2 > count)
77583 - count2 = count;
77584 -
77585 if (flex_gd->bg_flags[group] & EXT4_BG_BLOCK_UNINIT) {
77586 BUG_ON(flex_gd->count > 1);
77587 continue;
77588 @@ -443,9 +439,15 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle,
77589 err = ext4_journal_get_write_access(handle, bh);
77590 if (err)
77591 return err;
77592 +
77593 + diff = block - start;
77594 + count2 = EXT4_BLOCKS_PER_GROUP(sb) - diff;
77595 + if (count2 > count)
77596 + count2 = count;
77597 +
77598 ext4_debug("mark block bitmap %#04llx (+%llu/%u)\n", block,
77599 - block - start, count2);
77600 - ext4_set_bits(bh->b_data, block - start, count2);
77601 + diff, count2);
77602 + ext4_set_bits(bh->b_data, diff, count2);
77603
77604 err = ext4_handle_dirty_metadata(handle, NULL, bh);
77605 if (unlikely(err))
77606 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
77607 index a5e8c74..a7711a8 100644
77608 --- a/fs/ext4/super.c
77609 +++ b/fs/ext4/super.c
77610 @@ -1274,7 +1274,7 @@ static ext4_fsblk_t get_sb_block(void **data)
77611 }
77612
77613 #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3))
77614 -static char deprecated_msg[] = "Mount option \"%s\" will be removed by %s\n"
77615 +static const char deprecated_msg[] = "Mount option \"%s\" will be removed by %s\n"
77616 "Contact linux-ext4@vger.kernel.org if you think we should keep it.\n";
77617
77618 #ifdef CONFIG_QUOTA
77619 @@ -2484,7 +2484,7 @@ struct ext4_attr {
77620 int offset;
77621 int deprecated_val;
77622 } u;
77623 -};
77624 +} __do_const;
77625
77626 static int parse_strtoull(const char *buf,
77627 unsigned long long max, unsigned long long *value)
77628 diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
77629 index 16e28c0..728c282 100644
77630 --- a/fs/ext4/xattr.c
77631 +++ b/fs/ext4/xattr.c
77632 @@ -398,7 +398,7 @@ static int
77633 ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
77634 char *buffer, size_t buffer_size)
77635 {
77636 - size_t rest = buffer_size;
77637 + size_t rest = buffer_size, total_size = 0;
77638
77639 for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry)) {
77640 const struct xattr_handler *handler =
77641 @@ -415,9 +415,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
77642 buffer += size;
77643 }
77644 rest -= size;
77645 + total_size += size;
77646 }
77647 }
77648 - return buffer_size - rest;
77649 + return total_size;
77650 }
77651
77652 static int
77653 diff --git a/fs/fcntl.c b/fs/fcntl.c
77654 index ee85cd4..9dd0d20 100644
77655 --- a/fs/fcntl.c
77656 +++ b/fs/fcntl.c
77657 @@ -102,6 +102,10 @@ void __f_setown(struct file *filp, struct pid *pid, enum pid_type type,
77658 int force)
77659 {
77660 security_file_set_fowner(filp);
77661 + if (gr_handle_chroot_fowner(pid, type))
77662 + return;
77663 + if (gr_check_protected_task_fowner(pid, type))
77664 + return;
77665 f_modown(filp, pid, type, force);
77666 }
77667 EXPORT_SYMBOL(__f_setown);
77668 diff --git a/fs/fhandle.c b/fs/fhandle.c
77669 index d59712d..2281df9 100644
77670 --- a/fs/fhandle.c
77671 +++ b/fs/fhandle.c
77672 @@ -8,6 +8,7 @@
77673 #include <linux/fs_struct.h>
77674 #include <linux/fsnotify.h>
77675 #include <linux/personality.h>
77676 +#include <linux/grsecurity.h>
77677 #include <asm/uaccess.h>
77678 #include "internal.h"
77679 #include "mount.h"
77680 @@ -67,8 +68,7 @@ static long do_sys_name_to_handle(struct path *path,
77681 } else
77682 retval = 0;
77683 /* copy the mount id */
77684 - if (copy_to_user(mnt_id, &real_mount(path->mnt)->mnt_id,
77685 - sizeof(*mnt_id)) ||
77686 + if (put_user(real_mount(path->mnt)->mnt_id, mnt_id) ||
77687 copy_to_user(ufh, handle,
77688 sizeof(struct file_handle) + handle_bytes))
77689 retval = -EFAULT;
77690 @@ -175,7 +175,7 @@ static int handle_to_path(int mountdirfd, struct file_handle __user *ufh,
77691 * the directory. Ideally we would like CAP_DAC_SEARCH.
77692 * But we don't have that
77693 */
77694 - if (!capable(CAP_DAC_READ_SEARCH)) {
77695 + if (!capable(CAP_DAC_READ_SEARCH) || !gr_chroot_fhandle()) {
77696 retval = -EPERM;
77697 goto out_err;
77698 }
77699 diff --git a/fs/file.c b/fs/file.c
77700 index 6c672ad..bf787b0 100644
77701 --- a/fs/file.c
77702 +++ b/fs/file.c
77703 @@ -16,6 +16,7 @@
77704 #include <linux/slab.h>
77705 #include <linux/vmalloc.h>
77706 #include <linux/file.h>
77707 +#include <linux/security.h>
77708 #include <linux/fdtable.h>
77709 #include <linux/bitops.h>
77710 #include <linux/interrupt.h>
77711 @@ -139,7 +140,7 @@ out:
77712 * Return <0 error code on error; 1 on successful completion.
77713 * The files->file_lock should be held on entry, and will be held on exit.
77714 */
77715 -static int expand_fdtable(struct files_struct *files, int nr)
77716 +static int expand_fdtable(struct files_struct *files, unsigned int nr)
77717 __releases(files->file_lock)
77718 __acquires(files->file_lock)
77719 {
77720 @@ -184,7 +185,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
77721 * expanded and execution may have blocked.
77722 * The files->file_lock should be held on entry, and will be held on exit.
77723 */
77724 -static int expand_files(struct files_struct *files, int nr)
77725 +static int expand_files(struct files_struct *files, unsigned int nr)
77726 __releases(files->file_lock)
77727 __acquires(files->file_lock)
77728 {
77729 @@ -834,6 +835,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
77730 if (!file)
77731 return __close_fd(files, fd);
77732
77733 + gr_learn_resource(current, RLIMIT_NOFILE, fd, 0);
77734 if (fd >= rlimit(RLIMIT_NOFILE))
77735 return -EBADF;
77736
77737 @@ -860,6 +862,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
77738 if (unlikely(oldfd == newfd))
77739 return -EINVAL;
77740
77741 + gr_learn_resource(current, RLIMIT_NOFILE, newfd, 0);
77742 if (newfd >= rlimit(RLIMIT_NOFILE))
77743 return -EBADF;
77744
77745 @@ -915,6 +918,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
77746 int f_dupfd(unsigned int from, struct file *file, unsigned flags)
77747 {
77748 int err;
77749 + gr_learn_resource(current, RLIMIT_NOFILE, from, 0);
77750 if (from >= rlimit(RLIMIT_NOFILE))
77751 return -EINVAL;
77752 err = alloc_fd(from, flags);
77753 diff --git a/fs/filesystems.c b/fs/filesystems.c
77754 index 5797d45..7d7d79a 100644
77755 --- a/fs/filesystems.c
77756 +++ b/fs/filesystems.c
77757 @@ -275,7 +275,11 @@ struct file_system_type *get_fs_type(const char *name)
77758 int len = dot ? dot - name : strlen(name);
77759
77760 fs = __get_fs_type(name, len);
77761 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
77762 + if (!fs && (___request_module(true, "grsec_modharden_fs", "fs-%.*s", len, name) == 0))
77763 +#else
77764 if (!fs && (request_module("fs-%.*s", len, name) == 0))
77765 +#endif
77766 fs = __get_fs_type(name, len);
77767
77768 if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
77769 diff --git a/fs/fs_struct.c b/fs/fs_struct.c
77770 index 7dca743..1ff87ae 100644
77771 --- a/fs/fs_struct.c
77772 +++ b/fs/fs_struct.c
77773 @@ -4,6 +4,7 @@
77774 #include <linux/path.h>
77775 #include <linux/slab.h>
77776 #include <linux/fs_struct.h>
77777 +#include <linux/grsecurity.h>
77778 #include "internal.h"
77779
77780 /*
77781 @@ -15,14 +16,18 @@ void set_fs_root(struct fs_struct *fs, const struct path *path)
77782 struct path old_root;
77783
77784 path_get(path);
77785 + gr_inc_chroot_refcnts(path->dentry, path->mnt);
77786 spin_lock(&fs->lock);
77787 write_seqcount_begin(&fs->seq);
77788 old_root = fs->root;
77789 fs->root = *path;
77790 + gr_set_chroot_entries(current, path);
77791 write_seqcount_end(&fs->seq);
77792 spin_unlock(&fs->lock);
77793 - if (old_root.dentry)
77794 + if (old_root.dentry) {
77795 + gr_dec_chroot_refcnts(old_root.dentry, old_root.mnt);
77796 path_put(&old_root);
77797 + }
77798 }
77799
77800 /*
77801 @@ -67,6 +72,10 @@ void chroot_fs_refs(const struct path *old_root, const struct path *new_root)
77802 int hits = 0;
77803 spin_lock(&fs->lock);
77804 write_seqcount_begin(&fs->seq);
77805 + /* this root replacement is only done by pivot_root,
77806 + leave grsec's chroot tagging alone for this task
77807 + so that a pivoted root isn't treated as a chroot
77808 + */
77809 hits += replace_path(&fs->root, old_root, new_root);
77810 hits += replace_path(&fs->pwd, old_root, new_root);
77811 write_seqcount_end(&fs->seq);
77812 @@ -85,6 +94,7 @@ void chroot_fs_refs(const struct path *old_root, const struct path *new_root)
77813
77814 void free_fs_struct(struct fs_struct *fs)
77815 {
77816 + gr_dec_chroot_refcnts(fs->root.dentry, fs->root.mnt);
77817 path_put(&fs->root);
77818 path_put(&fs->pwd);
77819 kmem_cache_free(fs_cachep, fs);
77820 @@ -99,7 +109,8 @@ void exit_fs(struct task_struct *tsk)
77821 task_lock(tsk);
77822 spin_lock(&fs->lock);
77823 tsk->fs = NULL;
77824 - kill = !--fs->users;
77825 + gr_clear_chroot_entries(tsk);
77826 + kill = !atomic_dec_return(&fs->users);
77827 spin_unlock(&fs->lock);
77828 task_unlock(tsk);
77829 if (kill)
77830 @@ -112,7 +123,7 @@ struct fs_struct *copy_fs_struct(struct fs_struct *old)
77831 struct fs_struct *fs = kmem_cache_alloc(fs_cachep, GFP_KERNEL);
77832 /* We don't need to lock fs - think why ;-) */
77833 if (fs) {
77834 - fs->users = 1;
77835 + atomic_set(&fs->users, 1);
77836 fs->in_exec = 0;
77837 spin_lock_init(&fs->lock);
77838 seqcount_init(&fs->seq);
77839 @@ -121,9 +132,13 @@ struct fs_struct *copy_fs_struct(struct fs_struct *old)
77840 spin_lock(&old->lock);
77841 fs->root = old->root;
77842 path_get(&fs->root);
77843 + /* instead of calling gr_set_chroot_entries here,
77844 + we call it from every caller of this function
77845 + */
77846 fs->pwd = old->pwd;
77847 path_get(&fs->pwd);
77848 spin_unlock(&old->lock);
77849 + gr_inc_chroot_refcnts(fs->root.dentry, fs->root.mnt);
77850 }
77851 return fs;
77852 }
77853 @@ -139,8 +154,9 @@ int unshare_fs_struct(void)
77854
77855 task_lock(current);
77856 spin_lock(&fs->lock);
77857 - kill = !--fs->users;
77858 + kill = !atomic_dec_return(&fs->users);
77859 current->fs = new_fs;
77860 + gr_set_chroot_entries(current, &new_fs->root);
77861 spin_unlock(&fs->lock);
77862 task_unlock(current);
77863
77864 @@ -153,13 +169,13 @@ EXPORT_SYMBOL_GPL(unshare_fs_struct);
77865
77866 int current_umask(void)
77867 {
77868 - return current->fs->umask;
77869 + return current->fs->umask | gr_acl_umask();
77870 }
77871 EXPORT_SYMBOL(current_umask);
77872
77873 /* to be mentioned only in INIT_TASK */
77874 struct fs_struct init_fs = {
77875 - .users = 1,
77876 + .users = ATOMIC_INIT(1),
77877 .lock = __SPIN_LOCK_UNLOCKED(init_fs.lock),
77878 .seq = SEQCNT_ZERO(init_fs.seq),
77879 .umask = 0022,
77880 diff --git a/fs/fscache/cookie.c b/fs/fscache/cookie.c
77881 index d403c69..30be0a9 100644
77882 --- a/fs/fscache/cookie.c
77883 +++ b/fs/fscache/cookie.c
77884 @@ -19,7 +19,7 @@
77885
77886 struct kmem_cache *fscache_cookie_jar;
77887
77888 -static atomic_t fscache_object_debug_id = ATOMIC_INIT(0);
77889 +static atomic_unchecked_t fscache_object_debug_id = ATOMIC_INIT(0);
77890
77891 static int fscache_acquire_non_index_cookie(struct fscache_cookie *cookie);
77892 static int fscache_alloc_object(struct fscache_cache *cache,
77893 @@ -69,11 +69,11 @@ struct fscache_cookie *__fscache_acquire_cookie(
77894 parent ? (char *) parent->def->name : "<no-parent>",
77895 def->name, netfs_data, enable);
77896
77897 - fscache_stat(&fscache_n_acquires);
77898 + fscache_stat_unchecked(&fscache_n_acquires);
77899
77900 /* if there's no parent cookie, then we don't create one here either */
77901 if (!parent) {
77902 - fscache_stat(&fscache_n_acquires_null);
77903 + fscache_stat_unchecked(&fscache_n_acquires_null);
77904 _leave(" [no parent]");
77905 return NULL;
77906 }
77907 @@ -88,7 +88,7 @@ struct fscache_cookie *__fscache_acquire_cookie(
77908 /* allocate and initialise a cookie */
77909 cookie = kmem_cache_alloc(fscache_cookie_jar, GFP_KERNEL);
77910 if (!cookie) {
77911 - fscache_stat(&fscache_n_acquires_oom);
77912 + fscache_stat_unchecked(&fscache_n_acquires_oom);
77913 _leave(" [ENOMEM]");
77914 return NULL;
77915 }
77916 @@ -115,13 +115,13 @@ struct fscache_cookie *__fscache_acquire_cookie(
77917
77918 switch (cookie->def->type) {
77919 case FSCACHE_COOKIE_TYPE_INDEX:
77920 - fscache_stat(&fscache_n_cookie_index);
77921 + fscache_stat_unchecked(&fscache_n_cookie_index);
77922 break;
77923 case FSCACHE_COOKIE_TYPE_DATAFILE:
77924 - fscache_stat(&fscache_n_cookie_data);
77925 + fscache_stat_unchecked(&fscache_n_cookie_data);
77926 break;
77927 default:
77928 - fscache_stat(&fscache_n_cookie_special);
77929 + fscache_stat_unchecked(&fscache_n_cookie_special);
77930 break;
77931 }
77932
77933 @@ -135,7 +135,7 @@ struct fscache_cookie *__fscache_acquire_cookie(
77934 } else {
77935 atomic_dec(&parent->n_children);
77936 __fscache_cookie_put(cookie);
77937 - fscache_stat(&fscache_n_acquires_nobufs);
77938 + fscache_stat_unchecked(&fscache_n_acquires_nobufs);
77939 _leave(" = NULL");
77940 return NULL;
77941 }
77942 @@ -144,7 +144,7 @@ struct fscache_cookie *__fscache_acquire_cookie(
77943 }
77944 }
77945
77946 - fscache_stat(&fscache_n_acquires_ok);
77947 + fscache_stat_unchecked(&fscache_n_acquires_ok);
77948 _leave(" = %p", cookie);
77949 return cookie;
77950 }
77951 @@ -213,7 +213,7 @@ static int fscache_acquire_non_index_cookie(struct fscache_cookie *cookie)
77952 cache = fscache_select_cache_for_object(cookie->parent);
77953 if (!cache) {
77954 up_read(&fscache_addremove_sem);
77955 - fscache_stat(&fscache_n_acquires_no_cache);
77956 + fscache_stat_unchecked(&fscache_n_acquires_no_cache);
77957 _leave(" = -ENOMEDIUM [no cache]");
77958 return -ENOMEDIUM;
77959 }
77960 @@ -297,14 +297,14 @@ static int fscache_alloc_object(struct fscache_cache *cache,
77961 object = cache->ops->alloc_object(cache, cookie);
77962 fscache_stat_d(&fscache_n_cop_alloc_object);
77963 if (IS_ERR(object)) {
77964 - fscache_stat(&fscache_n_object_no_alloc);
77965 + fscache_stat_unchecked(&fscache_n_object_no_alloc);
77966 ret = PTR_ERR(object);
77967 goto error;
77968 }
77969
77970 - fscache_stat(&fscache_n_object_alloc);
77971 + fscache_stat_unchecked(&fscache_n_object_alloc);
77972
77973 - object->debug_id = atomic_inc_return(&fscache_object_debug_id);
77974 + object->debug_id = atomic_inc_return_unchecked(&fscache_object_debug_id);
77975
77976 _debug("ALLOC OBJ%x: %s {%lx}",
77977 object->debug_id, cookie->def->name, object->events);
77978 @@ -419,7 +419,7 @@ void __fscache_invalidate(struct fscache_cookie *cookie)
77979
77980 _enter("{%s}", cookie->def->name);
77981
77982 - fscache_stat(&fscache_n_invalidates);
77983 + fscache_stat_unchecked(&fscache_n_invalidates);
77984
77985 /* Only permit invalidation of data files. Invalidating an index will
77986 * require the caller to release all its attachments to the tree rooted
77987 @@ -477,10 +477,10 @@ void __fscache_update_cookie(struct fscache_cookie *cookie)
77988 {
77989 struct fscache_object *object;
77990
77991 - fscache_stat(&fscache_n_updates);
77992 + fscache_stat_unchecked(&fscache_n_updates);
77993
77994 if (!cookie) {
77995 - fscache_stat(&fscache_n_updates_null);
77996 + fscache_stat_unchecked(&fscache_n_updates_null);
77997 _leave(" [no cookie]");
77998 return;
77999 }
78000 @@ -581,12 +581,12 @@ EXPORT_SYMBOL(__fscache_disable_cookie);
78001 */
78002 void __fscache_relinquish_cookie(struct fscache_cookie *cookie, bool retire)
78003 {
78004 - fscache_stat(&fscache_n_relinquishes);
78005 + fscache_stat_unchecked(&fscache_n_relinquishes);
78006 if (retire)
78007 - fscache_stat(&fscache_n_relinquishes_retire);
78008 + fscache_stat_unchecked(&fscache_n_relinquishes_retire);
78009
78010 if (!cookie) {
78011 - fscache_stat(&fscache_n_relinquishes_null);
78012 + fscache_stat_unchecked(&fscache_n_relinquishes_null);
78013 _leave(" [no cookie]");
78014 return;
78015 }
78016 @@ -687,7 +687,7 @@ int __fscache_check_consistency(struct fscache_cookie *cookie)
78017 if (test_bit(FSCACHE_IOERROR, &object->cache->flags))
78018 goto inconsistent;
78019
78020 - op->debug_id = atomic_inc_return(&fscache_op_debug_id);
78021 + op->debug_id = atomic_inc_return_unchecked(&fscache_op_debug_id);
78022
78023 __fscache_use_cookie(cookie);
78024 if (fscache_submit_op(object, op) < 0)
78025 diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
78026 index 97ec451..f722cee 100644
78027 --- a/fs/fscache/internal.h
78028 +++ b/fs/fscache/internal.h
78029 @@ -136,8 +136,8 @@ extern void fscache_operation_gc(struct work_struct *);
78030 extern int fscache_wait_for_deferred_lookup(struct fscache_cookie *);
78031 extern int fscache_wait_for_operation_activation(struct fscache_object *,
78032 struct fscache_operation *,
78033 - atomic_t *,
78034 - atomic_t *);
78035 + atomic_unchecked_t *,
78036 + atomic_unchecked_t *);
78037 extern void fscache_invalidate_writes(struct fscache_cookie *);
78038
78039 /*
78040 @@ -155,102 +155,102 @@ extern void fscache_proc_cleanup(void);
78041 * stats.c
78042 */
78043 #ifdef CONFIG_FSCACHE_STATS
78044 -extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS];
78045 -extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS];
78046 +extern atomic_unchecked_t fscache_n_ops_processed[FSCACHE_MAX_THREADS];
78047 +extern atomic_unchecked_t fscache_n_objs_processed[FSCACHE_MAX_THREADS];
78048
78049 -extern atomic_t fscache_n_op_pend;
78050 -extern atomic_t fscache_n_op_run;
78051 -extern atomic_t fscache_n_op_enqueue;
78052 -extern atomic_t fscache_n_op_deferred_release;
78053 -extern atomic_t fscache_n_op_initialised;
78054 -extern atomic_t fscache_n_op_release;
78055 -extern atomic_t fscache_n_op_gc;
78056 -extern atomic_t fscache_n_op_cancelled;
78057 -extern atomic_t fscache_n_op_rejected;
78058 +extern atomic_unchecked_t fscache_n_op_pend;
78059 +extern atomic_unchecked_t fscache_n_op_run;
78060 +extern atomic_unchecked_t fscache_n_op_enqueue;
78061 +extern atomic_unchecked_t fscache_n_op_deferred_release;
78062 +extern atomic_unchecked_t fscache_n_op_initialised;
78063 +extern atomic_unchecked_t fscache_n_op_release;
78064 +extern atomic_unchecked_t fscache_n_op_gc;
78065 +extern atomic_unchecked_t fscache_n_op_cancelled;
78066 +extern atomic_unchecked_t fscache_n_op_rejected;
78067
78068 -extern atomic_t fscache_n_attr_changed;
78069 -extern atomic_t fscache_n_attr_changed_ok;
78070 -extern atomic_t fscache_n_attr_changed_nobufs;
78071 -extern atomic_t fscache_n_attr_changed_nomem;
78072 -extern atomic_t fscache_n_attr_changed_calls;
78073 +extern atomic_unchecked_t fscache_n_attr_changed;
78074 +extern atomic_unchecked_t fscache_n_attr_changed_ok;
78075 +extern atomic_unchecked_t fscache_n_attr_changed_nobufs;
78076 +extern atomic_unchecked_t fscache_n_attr_changed_nomem;
78077 +extern atomic_unchecked_t fscache_n_attr_changed_calls;
78078
78079 -extern atomic_t fscache_n_allocs;
78080 -extern atomic_t fscache_n_allocs_ok;
78081 -extern atomic_t fscache_n_allocs_wait;
78082 -extern atomic_t fscache_n_allocs_nobufs;
78083 -extern atomic_t fscache_n_allocs_intr;
78084 -extern atomic_t fscache_n_allocs_object_dead;
78085 -extern atomic_t fscache_n_alloc_ops;
78086 -extern atomic_t fscache_n_alloc_op_waits;
78087 +extern atomic_unchecked_t fscache_n_allocs;
78088 +extern atomic_unchecked_t fscache_n_allocs_ok;
78089 +extern atomic_unchecked_t fscache_n_allocs_wait;
78090 +extern atomic_unchecked_t fscache_n_allocs_nobufs;
78091 +extern atomic_unchecked_t fscache_n_allocs_intr;
78092 +extern atomic_unchecked_t fscache_n_allocs_object_dead;
78093 +extern atomic_unchecked_t fscache_n_alloc_ops;
78094 +extern atomic_unchecked_t fscache_n_alloc_op_waits;
78095
78096 -extern atomic_t fscache_n_retrievals;
78097 -extern atomic_t fscache_n_retrievals_ok;
78098 -extern atomic_t fscache_n_retrievals_wait;
78099 -extern atomic_t fscache_n_retrievals_nodata;
78100 -extern atomic_t fscache_n_retrievals_nobufs;
78101 -extern atomic_t fscache_n_retrievals_intr;
78102 -extern atomic_t fscache_n_retrievals_nomem;
78103 -extern atomic_t fscache_n_retrievals_object_dead;
78104 -extern atomic_t fscache_n_retrieval_ops;
78105 -extern atomic_t fscache_n_retrieval_op_waits;
78106 +extern atomic_unchecked_t fscache_n_retrievals;
78107 +extern atomic_unchecked_t fscache_n_retrievals_ok;
78108 +extern atomic_unchecked_t fscache_n_retrievals_wait;
78109 +extern atomic_unchecked_t fscache_n_retrievals_nodata;
78110 +extern atomic_unchecked_t fscache_n_retrievals_nobufs;
78111 +extern atomic_unchecked_t fscache_n_retrievals_intr;
78112 +extern atomic_unchecked_t fscache_n_retrievals_nomem;
78113 +extern atomic_unchecked_t fscache_n_retrievals_object_dead;
78114 +extern atomic_unchecked_t fscache_n_retrieval_ops;
78115 +extern atomic_unchecked_t fscache_n_retrieval_op_waits;
78116
78117 -extern atomic_t fscache_n_stores;
78118 -extern atomic_t fscache_n_stores_ok;
78119 -extern atomic_t fscache_n_stores_again;
78120 -extern atomic_t fscache_n_stores_nobufs;
78121 -extern atomic_t fscache_n_stores_oom;
78122 -extern atomic_t fscache_n_store_ops;
78123 -extern atomic_t fscache_n_store_calls;
78124 -extern atomic_t fscache_n_store_pages;
78125 -extern atomic_t fscache_n_store_radix_deletes;
78126 -extern atomic_t fscache_n_store_pages_over_limit;
78127 +extern atomic_unchecked_t fscache_n_stores;
78128 +extern atomic_unchecked_t fscache_n_stores_ok;
78129 +extern atomic_unchecked_t fscache_n_stores_again;
78130 +extern atomic_unchecked_t fscache_n_stores_nobufs;
78131 +extern atomic_unchecked_t fscache_n_stores_oom;
78132 +extern atomic_unchecked_t fscache_n_store_ops;
78133 +extern atomic_unchecked_t fscache_n_store_calls;
78134 +extern atomic_unchecked_t fscache_n_store_pages;
78135 +extern atomic_unchecked_t fscache_n_store_radix_deletes;
78136 +extern atomic_unchecked_t fscache_n_store_pages_over_limit;
78137
78138 -extern atomic_t fscache_n_store_vmscan_not_storing;
78139 -extern atomic_t fscache_n_store_vmscan_gone;
78140 -extern atomic_t fscache_n_store_vmscan_busy;
78141 -extern atomic_t fscache_n_store_vmscan_cancelled;
78142 -extern atomic_t fscache_n_store_vmscan_wait;
78143 +extern atomic_unchecked_t fscache_n_store_vmscan_not_storing;
78144 +extern atomic_unchecked_t fscache_n_store_vmscan_gone;
78145 +extern atomic_unchecked_t fscache_n_store_vmscan_busy;
78146 +extern atomic_unchecked_t fscache_n_store_vmscan_cancelled;
78147 +extern atomic_unchecked_t fscache_n_store_vmscan_wait;
78148
78149 -extern atomic_t fscache_n_marks;
78150 -extern atomic_t fscache_n_uncaches;
78151 +extern atomic_unchecked_t fscache_n_marks;
78152 +extern atomic_unchecked_t fscache_n_uncaches;
78153
78154 -extern atomic_t fscache_n_acquires;
78155 -extern atomic_t fscache_n_acquires_null;
78156 -extern atomic_t fscache_n_acquires_no_cache;
78157 -extern atomic_t fscache_n_acquires_ok;
78158 -extern atomic_t fscache_n_acquires_nobufs;
78159 -extern atomic_t fscache_n_acquires_oom;
78160 +extern atomic_unchecked_t fscache_n_acquires;
78161 +extern atomic_unchecked_t fscache_n_acquires_null;
78162 +extern atomic_unchecked_t fscache_n_acquires_no_cache;
78163 +extern atomic_unchecked_t fscache_n_acquires_ok;
78164 +extern atomic_unchecked_t fscache_n_acquires_nobufs;
78165 +extern atomic_unchecked_t fscache_n_acquires_oom;
78166
78167 -extern atomic_t fscache_n_invalidates;
78168 -extern atomic_t fscache_n_invalidates_run;
78169 +extern atomic_unchecked_t fscache_n_invalidates;
78170 +extern atomic_unchecked_t fscache_n_invalidates_run;
78171
78172 -extern atomic_t fscache_n_updates;
78173 -extern atomic_t fscache_n_updates_null;
78174 -extern atomic_t fscache_n_updates_run;
78175 +extern atomic_unchecked_t fscache_n_updates;
78176 +extern atomic_unchecked_t fscache_n_updates_null;
78177 +extern atomic_unchecked_t fscache_n_updates_run;
78178
78179 -extern atomic_t fscache_n_relinquishes;
78180 -extern atomic_t fscache_n_relinquishes_null;
78181 -extern atomic_t fscache_n_relinquishes_waitcrt;
78182 -extern atomic_t fscache_n_relinquishes_retire;
78183 +extern atomic_unchecked_t fscache_n_relinquishes;
78184 +extern atomic_unchecked_t fscache_n_relinquishes_null;
78185 +extern atomic_unchecked_t fscache_n_relinquishes_waitcrt;
78186 +extern atomic_unchecked_t fscache_n_relinquishes_retire;
78187
78188 -extern atomic_t fscache_n_cookie_index;
78189 -extern atomic_t fscache_n_cookie_data;
78190 -extern atomic_t fscache_n_cookie_special;
78191 +extern atomic_unchecked_t fscache_n_cookie_index;
78192 +extern atomic_unchecked_t fscache_n_cookie_data;
78193 +extern atomic_unchecked_t fscache_n_cookie_special;
78194
78195 -extern atomic_t fscache_n_object_alloc;
78196 -extern atomic_t fscache_n_object_no_alloc;
78197 -extern atomic_t fscache_n_object_lookups;
78198 -extern atomic_t fscache_n_object_lookups_negative;
78199 -extern atomic_t fscache_n_object_lookups_positive;
78200 -extern atomic_t fscache_n_object_lookups_timed_out;
78201 -extern atomic_t fscache_n_object_created;
78202 -extern atomic_t fscache_n_object_avail;
78203 -extern atomic_t fscache_n_object_dead;
78204 +extern atomic_unchecked_t fscache_n_object_alloc;
78205 +extern atomic_unchecked_t fscache_n_object_no_alloc;
78206 +extern atomic_unchecked_t fscache_n_object_lookups;
78207 +extern atomic_unchecked_t fscache_n_object_lookups_negative;
78208 +extern atomic_unchecked_t fscache_n_object_lookups_positive;
78209 +extern atomic_unchecked_t fscache_n_object_lookups_timed_out;
78210 +extern atomic_unchecked_t fscache_n_object_created;
78211 +extern atomic_unchecked_t fscache_n_object_avail;
78212 +extern atomic_unchecked_t fscache_n_object_dead;
78213
78214 -extern atomic_t fscache_n_checkaux_none;
78215 -extern atomic_t fscache_n_checkaux_okay;
78216 -extern atomic_t fscache_n_checkaux_update;
78217 -extern atomic_t fscache_n_checkaux_obsolete;
78218 +extern atomic_unchecked_t fscache_n_checkaux_none;
78219 +extern atomic_unchecked_t fscache_n_checkaux_okay;
78220 +extern atomic_unchecked_t fscache_n_checkaux_update;
78221 +extern atomic_unchecked_t fscache_n_checkaux_obsolete;
78222
78223 extern atomic_t fscache_n_cop_alloc_object;
78224 extern atomic_t fscache_n_cop_lookup_object;
78225 @@ -280,6 +280,11 @@ static inline void fscache_stat(atomic_t *stat)
78226 atomic_inc(stat);
78227 }
78228
78229 +static inline void fscache_stat_unchecked(atomic_unchecked_t *stat)
78230 +{
78231 + atomic_inc_unchecked(stat);
78232 +}
78233 +
78234 static inline void fscache_stat_d(atomic_t *stat)
78235 {
78236 atomic_dec(stat);
78237 @@ -292,6 +297,7 @@ extern const struct file_operations fscache_stats_fops;
78238
78239 #define __fscache_stat(stat) (NULL)
78240 #define fscache_stat(stat) do {} while (0)
78241 +#define fscache_stat_unchecked(stat) do {} while (0)
78242 #define fscache_stat_d(stat) do {} while (0)
78243 #endif
78244
78245 diff --git a/fs/fscache/object.c b/fs/fscache/object.c
78246 index 9e792e3..6b2affb 100644
78247 --- a/fs/fscache/object.c
78248 +++ b/fs/fscache/object.c
78249 @@ -465,7 +465,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object
78250 _debug("LOOKUP \"%s\" in \"%s\"",
78251 cookie->def->name, object->cache->tag->name);
78252
78253 - fscache_stat(&fscache_n_object_lookups);
78254 + fscache_stat_unchecked(&fscache_n_object_lookups);
78255 fscache_stat(&fscache_n_cop_lookup_object);
78256 ret = object->cache->ops->lookup_object(object);
78257 fscache_stat_d(&fscache_n_cop_lookup_object);
78258 @@ -475,7 +475,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object
78259 if (ret == -ETIMEDOUT) {
78260 /* probably stuck behind another object, so move this one to
78261 * the back of the queue */
78262 - fscache_stat(&fscache_n_object_lookups_timed_out);
78263 + fscache_stat_unchecked(&fscache_n_object_lookups_timed_out);
78264 _leave(" [timeout]");
78265 return NO_TRANSIT;
78266 }
78267 @@ -503,7 +503,7 @@ void fscache_object_lookup_negative(struct fscache_object *object)
78268 _enter("{OBJ%x,%s}", object->debug_id, object->state->name);
78269
78270 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) {
78271 - fscache_stat(&fscache_n_object_lookups_negative);
78272 + fscache_stat_unchecked(&fscache_n_object_lookups_negative);
78273
78274 /* Allow write requests to begin stacking up and read requests to begin
78275 * returning ENODATA.
78276 @@ -538,7 +538,7 @@ void fscache_obtained_object(struct fscache_object *object)
78277 /* if we were still looking up, then we must have a positive lookup
78278 * result, in which case there may be data available */
78279 if (!test_and_set_bit(FSCACHE_OBJECT_IS_LOOKED_UP, &object->flags)) {
78280 - fscache_stat(&fscache_n_object_lookups_positive);
78281 + fscache_stat_unchecked(&fscache_n_object_lookups_positive);
78282
78283 /* We do (presumably) have data */
78284 clear_bit_unlock(FSCACHE_COOKIE_NO_DATA_YET, &cookie->flags);
78285 @@ -550,7 +550,7 @@ void fscache_obtained_object(struct fscache_object *object)
78286 clear_bit_unlock(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags);
78287 wake_up_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP);
78288 } else {
78289 - fscache_stat(&fscache_n_object_created);
78290 + fscache_stat_unchecked(&fscache_n_object_created);
78291 }
78292
78293 set_bit(FSCACHE_OBJECT_IS_AVAILABLE, &object->flags);
78294 @@ -586,7 +586,7 @@ static const struct fscache_state *fscache_object_available(struct fscache_objec
78295 fscache_stat_d(&fscache_n_cop_lookup_complete);
78296
78297 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif);
78298 - fscache_stat(&fscache_n_object_avail);
78299 + fscache_stat_unchecked(&fscache_n_object_avail);
78300
78301 _leave("");
78302 return transit_to(JUMPSTART_DEPS);
78303 @@ -735,7 +735,7 @@ static const struct fscache_state *fscache_drop_object(struct fscache_object *ob
78304
78305 /* this just shifts the object release to the work processor */
78306 fscache_put_object(object);
78307 - fscache_stat(&fscache_n_object_dead);
78308 + fscache_stat_unchecked(&fscache_n_object_dead);
78309
78310 _leave("");
78311 return transit_to(OBJECT_DEAD);
78312 @@ -900,7 +900,7 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object,
78313 enum fscache_checkaux result;
78314
78315 if (!object->cookie->def->check_aux) {
78316 - fscache_stat(&fscache_n_checkaux_none);
78317 + fscache_stat_unchecked(&fscache_n_checkaux_none);
78318 return FSCACHE_CHECKAUX_OKAY;
78319 }
78320
78321 @@ -909,17 +909,17 @@ enum fscache_checkaux fscache_check_aux(struct fscache_object *object,
78322 switch (result) {
78323 /* entry okay as is */
78324 case FSCACHE_CHECKAUX_OKAY:
78325 - fscache_stat(&fscache_n_checkaux_okay);
78326 + fscache_stat_unchecked(&fscache_n_checkaux_okay);
78327 break;
78328
78329 /* entry requires update */
78330 case FSCACHE_CHECKAUX_NEEDS_UPDATE:
78331 - fscache_stat(&fscache_n_checkaux_update);
78332 + fscache_stat_unchecked(&fscache_n_checkaux_update);
78333 break;
78334
78335 /* entry requires deletion */
78336 case FSCACHE_CHECKAUX_OBSOLETE:
78337 - fscache_stat(&fscache_n_checkaux_obsolete);
78338 + fscache_stat_unchecked(&fscache_n_checkaux_obsolete);
78339 break;
78340
78341 default:
78342 @@ -1007,7 +1007,7 @@ static const struct fscache_state *fscache_invalidate_object(struct fscache_obje
78343 {
78344 const struct fscache_state *s;
78345
78346 - fscache_stat(&fscache_n_invalidates_run);
78347 + fscache_stat_unchecked(&fscache_n_invalidates_run);
78348 fscache_stat(&fscache_n_cop_invalidate_object);
78349 s = _fscache_invalidate_object(object, event);
78350 fscache_stat_d(&fscache_n_cop_invalidate_object);
78351 @@ -1022,7 +1022,7 @@ static const struct fscache_state *fscache_update_object(struct fscache_object *
78352 {
78353 _enter("{OBJ%x},%d", object->debug_id, event);
78354
78355 - fscache_stat(&fscache_n_updates_run);
78356 + fscache_stat_unchecked(&fscache_n_updates_run);
78357 fscache_stat(&fscache_n_cop_update_object);
78358 object->cache->ops->update_object(object);
78359 fscache_stat_d(&fscache_n_cop_update_object);
78360 diff --git a/fs/fscache/operation.c b/fs/fscache/operation.c
78361 index de67745..6a3a9b6 100644
78362 --- a/fs/fscache/operation.c
78363 +++ b/fs/fscache/operation.c
78364 @@ -17,7 +17,7 @@
78365 #include <linux/slab.h>
78366 #include "internal.h"
78367
78368 -atomic_t fscache_op_debug_id;
78369 +atomic_unchecked_t fscache_op_debug_id;
78370 EXPORT_SYMBOL(fscache_op_debug_id);
78371
78372 static void fscache_operation_dummy_cancel(struct fscache_operation *op)
78373 @@ -40,12 +40,12 @@ void fscache_operation_init(struct fscache_operation *op,
78374 INIT_WORK(&op->work, fscache_op_work_func);
78375 atomic_set(&op->usage, 1);
78376 op->state = FSCACHE_OP_ST_INITIALISED;
78377 - op->debug_id = atomic_inc_return(&fscache_op_debug_id);
78378 + op->debug_id = atomic_inc_return_unchecked(&fscache_op_debug_id);
78379 op->processor = processor;
78380 op->cancel = cancel ?: fscache_operation_dummy_cancel;
78381 op->release = release;
78382 INIT_LIST_HEAD(&op->pend_link);
78383 - fscache_stat(&fscache_n_op_initialised);
78384 + fscache_stat_unchecked(&fscache_n_op_initialised);
78385 }
78386 EXPORT_SYMBOL(fscache_operation_init);
78387
78388 @@ -68,7 +68,7 @@ void fscache_enqueue_operation(struct fscache_operation *op)
78389 ASSERTCMP(atomic_read(&op->usage), >, 0);
78390 ASSERTCMP(op->state, ==, FSCACHE_OP_ST_IN_PROGRESS);
78391
78392 - fscache_stat(&fscache_n_op_enqueue);
78393 + fscache_stat_unchecked(&fscache_n_op_enqueue);
78394 switch (op->flags & FSCACHE_OP_TYPE) {
78395 case FSCACHE_OP_ASYNC:
78396 _debug("queue async");
78397 @@ -101,7 +101,7 @@ static void fscache_run_op(struct fscache_object *object,
78398 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
78399 if (op->processor)
78400 fscache_enqueue_operation(op);
78401 - fscache_stat(&fscache_n_op_run);
78402 + fscache_stat_unchecked(&fscache_n_op_run);
78403 }
78404
78405 /*
78406 @@ -169,7 +169,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
78407 op->state = FSCACHE_OP_ST_PENDING;
78408 flags = READ_ONCE(object->flags);
78409 if (unlikely(!(flags & BIT(FSCACHE_OBJECT_IS_LIVE)))) {
78410 - fscache_stat(&fscache_n_op_rejected);
78411 + fscache_stat_unchecked(&fscache_n_op_rejected);
78412 op->cancel(op);
78413 op->state = FSCACHE_OP_ST_CANCELLED;
78414 ret = -ENOBUFS;
78415 @@ -185,11 +185,11 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
78416 if (object->n_in_progress > 0) {
78417 atomic_inc(&op->usage);
78418 list_add_tail(&op->pend_link, &object->pending_ops);
78419 - fscache_stat(&fscache_n_op_pend);
78420 + fscache_stat_unchecked(&fscache_n_op_pend);
78421 } else if (!list_empty(&object->pending_ops)) {
78422 atomic_inc(&op->usage);
78423 list_add_tail(&op->pend_link, &object->pending_ops);
78424 - fscache_stat(&fscache_n_op_pend);
78425 + fscache_stat_unchecked(&fscache_n_op_pend);
78426 fscache_start_operations(object);
78427 } else {
78428 ASSERTCMP(object->n_in_progress, ==, 0);
78429 @@ -205,7 +205,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
78430 object->n_exclusive++; /* reads and writes must wait */
78431 atomic_inc(&op->usage);
78432 list_add_tail(&op->pend_link, &object->pending_ops);
78433 - fscache_stat(&fscache_n_op_pend);
78434 + fscache_stat_unchecked(&fscache_n_op_pend);
78435 ret = 0;
78436 } else if (flags & BIT(FSCACHE_OBJECT_KILLED_BY_CACHE)) {
78437 op->cancel(op);
78438 @@ -254,7 +254,7 @@ int fscache_submit_op(struct fscache_object *object,
78439 op->state = FSCACHE_OP_ST_PENDING;
78440 flags = READ_ONCE(object->flags);
78441 if (unlikely(!(flags & BIT(FSCACHE_OBJECT_IS_LIVE)))) {
78442 - fscache_stat(&fscache_n_op_rejected);
78443 + fscache_stat_unchecked(&fscache_n_op_rejected);
78444 op->cancel(op);
78445 op->state = FSCACHE_OP_ST_CANCELLED;
78446 ret = -ENOBUFS;
78447 @@ -269,11 +269,11 @@ int fscache_submit_op(struct fscache_object *object,
78448 if (object->n_exclusive > 0) {
78449 atomic_inc(&op->usage);
78450 list_add_tail(&op->pend_link, &object->pending_ops);
78451 - fscache_stat(&fscache_n_op_pend);
78452 + fscache_stat_unchecked(&fscache_n_op_pend);
78453 } else if (!list_empty(&object->pending_ops)) {
78454 atomic_inc(&op->usage);
78455 list_add_tail(&op->pend_link, &object->pending_ops);
78456 - fscache_stat(&fscache_n_op_pend);
78457 + fscache_stat_unchecked(&fscache_n_op_pend);
78458 fscache_start_operations(object);
78459 } else {
78460 ASSERTCMP(object->n_exclusive, ==, 0);
78461 @@ -285,7 +285,7 @@ int fscache_submit_op(struct fscache_object *object,
78462 object->n_ops++;
78463 atomic_inc(&op->usage);
78464 list_add_tail(&op->pend_link, &object->pending_ops);
78465 - fscache_stat(&fscache_n_op_pend);
78466 + fscache_stat_unchecked(&fscache_n_op_pend);
78467 ret = 0;
78468 } else if (flags & BIT(FSCACHE_OBJECT_KILLED_BY_CACHE)) {
78469 op->cancel(op);
78470 @@ -369,7 +369,7 @@ int fscache_cancel_op(struct fscache_operation *op,
78471 list_del_init(&op->pend_link);
78472 put = true;
78473
78474 - fscache_stat(&fscache_n_op_cancelled);
78475 + fscache_stat_unchecked(&fscache_n_op_cancelled);
78476 op->cancel(op);
78477 op->state = FSCACHE_OP_ST_CANCELLED;
78478 if (test_bit(FSCACHE_OP_EXCLUSIVE, &op->flags))
78479 @@ -385,7 +385,7 @@ int fscache_cancel_op(struct fscache_operation *op,
78480 if (object->n_in_progress == 0)
78481 fscache_start_operations(object);
78482
78483 - fscache_stat(&fscache_n_op_cancelled);
78484 + fscache_stat_unchecked(&fscache_n_op_cancelled);
78485 op->cancel(op);
78486 op->state = FSCACHE_OP_ST_CANCELLED;
78487 if (test_bit(FSCACHE_OP_EXCLUSIVE, &op->flags))
78488 @@ -416,7 +416,7 @@ void fscache_cancel_all_ops(struct fscache_object *object)
78489 while (!list_empty(&object->pending_ops)) {
78490 op = list_entry(object->pending_ops.next,
78491 struct fscache_operation, pend_link);
78492 - fscache_stat(&fscache_n_op_cancelled);
78493 + fscache_stat_unchecked(&fscache_n_op_cancelled);
78494 list_del_init(&op->pend_link);
78495
78496 ASSERTCMP(op->state, ==, FSCACHE_OP_ST_PENDING);
78497 @@ -493,7 +493,7 @@ void fscache_put_operation(struct fscache_operation *op)
78498 op->state != FSCACHE_OP_ST_COMPLETE,
78499 op->state, ==, FSCACHE_OP_ST_CANCELLED);
78500
78501 - fscache_stat(&fscache_n_op_release);
78502 + fscache_stat_unchecked(&fscache_n_op_release);
78503
78504 if (op->release) {
78505 op->release(op);
78506 @@ -513,7 +513,7 @@ void fscache_put_operation(struct fscache_operation *op)
78507 * lock, and defer it otherwise */
78508 if (!spin_trylock(&object->lock)) {
78509 _debug("defer put");
78510 - fscache_stat(&fscache_n_op_deferred_release);
78511 + fscache_stat_unchecked(&fscache_n_op_deferred_release);
78512
78513 cache = object->cache;
78514 spin_lock(&cache->op_gc_list_lock);
78515 @@ -567,7 +567,7 @@ void fscache_operation_gc(struct work_struct *work)
78516
78517 _debug("GC DEFERRED REL OBJ%x OP%x",
78518 object->debug_id, op->debug_id);
78519 - fscache_stat(&fscache_n_op_gc);
78520 + fscache_stat_unchecked(&fscache_n_op_gc);
78521
78522 ASSERTCMP(atomic_read(&op->usage), ==, 0);
78523 ASSERTCMP(op->state, ==, FSCACHE_OP_ST_DEAD);
78524 diff --git a/fs/fscache/page.c b/fs/fscache/page.c
78525 index 483bbc6..ba36737 100644
78526 --- a/fs/fscache/page.c
78527 +++ b/fs/fscache/page.c
78528 @@ -74,7 +74,7 @@ try_again:
78529 val = radix_tree_lookup(&cookie->stores, page->index);
78530 if (!val) {
78531 rcu_read_unlock();
78532 - fscache_stat(&fscache_n_store_vmscan_not_storing);
78533 + fscache_stat_unchecked(&fscache_n_store_vmscan_not_storing);
78534 __fscache_uncache_page(cookie, page);
78535 return true;
78536 }
78537 @@ -104,11 +104,11 @@ try_again:
78538 spin_unlock(&cookie->stores_lock);
78539
78540 if (xpage) {
78541 - fscache_stat(&fscache_n_store_vmscan_cancelled);
78542 - fscache_stat(&fscache_n_store_radix_deletes);
78543 + fscache_stat_unchecked(&fscache_n_store_vmscan_cancelled);
78544 + fscache_stat_unchecked(&fscache_n_store_radix_deletes);
78545 ASSERTCMP(xpage, ==, page);
78546 } else {
78547 - fscache_stat(&fscache_n_store_vmscan_gone);
78548 + fscache_stat_unchecked(&fscache_n_store_vmscan_gone);
78549 }
78550
78551 wake_up_bit(&cookie->flags, 0);
78552 @@ -123,11 +123,11 @@ page_busy:
78553 * sleeping on memory allocation, so we may need to impose a timeout
78554 * too. */
78555 if (!(gfp & __GFP_WAIT) || !(gfp & __GFP_FS)) {
78556 - fscache_stat(&fscache_n_store_vmscan_busy);
78557 + fscache_stat_unchecked(&fscache_n_store_vmscan_busy);
78558 return false;
78559 }
78560
78561 - fscache_stat(&fscache_n_store_vmscan_wait);
78562 + fscache_stat_unchecked(&fscache_n_store_vmscan_wait);
78563 if (!release_page_wait_timeout(cookie, page))
78564 _debug("fscache writeout timeout page: %p{%lx}",
78565 page, page->index);
78566 @@ -156,7 +156,7 @@ static void fscache_end_page_write(struct fscache_object *object,
78567 FSCACHE_COOKIE_STORING_TAG);
78568 if (!radix_tree_tag_get(&cookie->stores, page->index,
78569 FSCACHE_COOKIE_PENDING_TAG)) {
78570 - fscache_stat(&fscache_n_store_radix_deletes);
78571 + fscache_stat_unchecked(&fscache_n_store_radix_deletes);
78572 xpage = radix_tree_delete(&cookie->stores, page->index);
78573 }
78574 spin_unlock(&cookie->stores_lock);
78575 @@ -177,7 +177,7 @@ static void fscache_attr_changed_op(struct fscache_operation *op)
78576
78577 _enter("{OBJ%x OP%x}", object->debug_id, op->debug_id);
78578
78579 - fscache_stat(&fscache_n_attr_changed_calls);
78580 + fscache_stat_unchecked(&fscache_n_attr_changed_calls);
78581
78582 if (fscache_object_is_active(object)) {
78583 fscache_stat(&fscache_n_cop_attr_changed);
78584 @@ -204,11 +204,11 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
78585
78586 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
78587
78588 - fscache_stat(&fscache_n_attr_changed);
78589 + fscache_stat_unchecked(&fscache_n_attr_changed);
78590
78591 op = kzalloc(sizeof(*op), GFP_KERNEL);
78592 if (!op) {
78593 - fscache_stat(&fscache_n_attr_changed_nomem);
78594 + fscache_stat_unchecked(&fscache_n_attr_changed_nomem);
78595 _leave(" = -ENOMEM");
78596 return -ENOMEM;
78597 }
78598 @@ -230,7 +230,7 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
78599 if (fscache_submit_exclusive_op(object, op) < 0)
78600 goto nobufs_dec;
78601 spin_unlock(&cookie->lock);
78602 - fscache_stat(&fscache_n_attr_changed_ok);
78603 + fscache_stat_unchecked(&fscache_n_attr_changed_ok);
78604 fscache_put_operation(op);
78605 _leave(" = 0");
78606 return 0;
78607 @@ -242,7 +242,7 @@ nobufs:
78608 fscache_put_operation(op);
78609 if (wake_cookie)
78610 __fscache_wake_unused_cookie(cookie);
78611 - fscache_stat(&fscache_n_attr_changed_nobufs);
78612 + fscache_stat_unchecked(&fscache_n_attr_changed_nobufs);
78613 _leave(" = %d", -ENOBUFS);
78614 return -ENOBUFS;
78615 }
78616 @@ -293,7 +293,7 @@ static struct fscache_retrieval *fscache_alloc_retrieval(
78617 /* allocate a retrieval operation and attempt to submit it */
78618 op = kzalloc(sizeof(*op), GFP_NOIO);
78619 if (!op) {
78620 - fscache_stat(&fscache_n_retrievals_nomem);
78621 + fscache_stat_unchecked(&fscache_n_retrievals_nomem);
78622 return NULL;
78623 }
78624
78625 @@ -332,12 +332,12 @@ int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie)
78626 return 0;
78627 }
78628
78629 - fscache_stat(&fscache_n_retrievals_wait);
78630 + fscache_stat_unchecked(&fscache_n_retrievals_wait);
78631
78632 jif = jiffies;
78633 if (wait_on_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP,
78634 TASK_INTERRUPTIBLE) != 0) {
78635 - fscache_stat(&fscache_n_retrievals_intr);
78636 + fscache_stat_unchecked(&fscache_n_retrievals_intr);
78637 _leave(" = -ERESTARTSYS");
78638 return -ERESTARTSYS;
78639 }
78640 @@ -355,8 +355,8 @@ int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie)
78641 */
78642 int fscache_wait_for_operation_activation(struct fscache_object *object,
78643 struct fscache_operation *op,
78644 - atomic_t *stat_op_waits,
78645 - atomic_t *stat_object_dead)
78646 + atomic_unchecked_t *stat_op_waits,
78647 + atomic_unchecked_t *stat_object_dead)
78648 {
78649 int ret;
78650
78651 @@ -365,7 +365,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
78652
78653 _debug(">>> WT");
78654 if (stat_op_waits)
78655 - fscache_stat(stat_op_waits);
78656 + fscache_stat_unchecked(stat_op_waits);
78657 if (wait_on_bit(&op->flags, FSCACHE_OP_WAITING,
78658 TASK_INTERRUPTIBLE) != 0) {
78659 ret = fscache_cancel_op(op, false);
78660 @@ -382,7 +382,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
78661 check_if_dead:
78662 if (op->state == FSCACHE_OP_ST_CANCELLED) {
78663 if (stat_object_dead)
78664 - fscache_stat(stat_object_dead);
78665 + fscache_stat_unchecked(stat_object_dead);
78666 _leave(" = -ENOBUFS [cancelled]");
78667 return -ENOBUFS;
78668 }
78669 @@ -391,7 +391,7 @@ check_if_dead:
78670 enum fscache_operation_state state = op->state;
78671 fscache_cancel_op(op, true);
78672 if (stat_object_dead)
78673 - fscache_stat(stat_object_dead);
78674 + fscache_stat_unchecked(stat_object_dead);
78675 _leave(" = -ENOBUFS [obj dead %d]", state);
78676 return -ENOBUFS;
78677 }
78678 @@ -420,7 +420,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
78679
78680 _enter("%p,%p,,,", cookie, page);
78681
78682 - fscache_stat(&fscache_n_retrievals);
78683 + fscache_stat_unchecked(&fscache_n_retrievals);
78684
78685 if (hlist_empty(&cookie->backing_objects))
78686 goto nobufs;
78687 @@ -462,7 +462,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
78688 goto nobufs_unlock_dec;
78689 spin_unlock(&cookie->lock);
78690
78691 - fscache_stat(&fscache_n_retrieval_ops);
78692 + fscache_stat_unchecked(&fscache_n_retrieval_ops);
78693
78694 /* we wait for the operation to become active, and then process it
78695 * *here*, in this thread, and not in the thread pool */
78696 @@ -488,15 +488,15 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
78697
78698 error:
78699 if (ret == -ENOMEM)
78700 - fscache_stat(&fscache_n_retrievals_nomem);
78701 + fscache_stat_unchecked(&fscache_n_retrievals_nomem);
78702 else if (ret == -ERESTARTSYS)
78703 - fscache_stat(&fscache_n_retrievals_intr);
78704 + fscache_stat_unchecked(&fscache_n_retrievals_intr);
78705 else if (ret == -ENODATA)
78706 - fscache_stat(&fscache_n_retrievals_nodata);
78707 + fscache_stat_unchecked(&fscache_n_retrievals_nodata);
78708 else if (ret < 0)
78709 - fscache_stat(&fscache_n_retrievals_nobufs);
78710 + fscache_stat_unchecked(&fscache_n_retrievals_nobufs);
78711 else
78712 - fscache_stat(&fscache_n_retrievals_ok);
78713 + fscache_stat_unchecked(&fscache_n_retrievals_ok);
78714
78715 fscache_put_retrieval(op);
78716 _leave(" = %d", ret);
78717 @@ -511,7 +511,7 @@ nobufs_unlock:
78718 __fscache_wake_unused_cookie(cookie);
78719 fscache_put_retrieval(op);
78720 nobufs:
78721 - fscache_stat(&fscache_n_retrievals_nobufs);
78722 + fscache_stat_unchecked(&fscache_n_retrievals_nobufs);
78723 _leave(" = -ENOBUFS");
78724 return -ENOBUFS;
78725 }
78726 @@ -550,7 +550,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
78727
78728 _enter("%p,,%d,,,", cookie, *nr_pages);
78729
78730 - fscache_stat(&fscache_n_retrievals);
78731 + fscache_stat_unchecked(&fscache_n_retrievals);
78732
78733 if (hlist_empty(&cookie->backing_objects))
78734 goto nobufs;
78735 @@ -588,7 +588,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
78736 goto nobufs_unlock_dec;
78737 spin_unlock(&cookie->lock);
78738
78739 - fscache_stat(&fscache_n_retrieval_ops);
78740 + fscache_stat_unchecked(&fscache_n_retrieval_ops);
78741
78742 /* we wait for the operation to become active, and then process it
78743 * *here*, in this thread, and not in the thread pool */
78744 @@ -614,15 +614,15 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
78745
78746 error:
78747 if (ret == -ENOMEM)
78748 - fscache_stat(&fscache_n_retrievals_nomem);
78749 + fscache_stat_unchecked(&fscache_n_retrievals_nomem);
78750 else if (ret == -ERESTARTSYS)
78751 - fscache_stat(&fscache_n_retrievals_intr);
78752 + fscache_stat_unchecked(&fscache_n_retrievals_intr);
78753 else if (ret == -ENODATA)
78754 - fscache_stat(&fscache_n_retrievals_nodata);
78755 + fscache_stat_unchecked(&fscache_n_retrievals_nodata);
78756 else if (ret < 0)
78757 - fscache_stat(&fscache_n_retrievals_nobufs);
78758 + fscache_stat_unchecked(&fscache_n_retrievals_nobufs);
78759 else
78760 - fscache_stat(&fscache_n_retrievals_ok);
78761 + fscache_stat_unchecked(&fscache_n_retrievals_ok);
78762
78763 fscache_put_retrieval(op);
78764 _leave(" = %d", ret);
78765 @@ -637,7 +637,7 @@ nobufs_unlock:
78766 if (wake_cookie)
78767 __fscache_wake_unused_cookie(cookie);
78768 nobufs:
78769 - fscache_stat(&fscache_n_retrievals_nobufs);
78770 + fscache_stat_unchecked(&fscache_n_retrievals_nobufs);
78771 _leave(" = -ENOBUFS");
78772 return -ENOBUFS;
78773 }
78774 @@ -662,7 +662,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
78775
78776 _enter("%p,%p,,,", cookie, page);
78777
78778 - fscache_stat(&fscache_n_allocs);
78779 + fscache_stat_unchecked(&fscache_n_allocs);
78780
78781 if (hlist_empty(&cookie->backing_objects))
78782 goto nobufs;
78783 @@ -696,7 +696,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
78784 goto nobufs_unlock_dec;
78785 spin_unlock(&cookie->lock);
78786
78787 - fscache_stat(&fscache_n_alloc_ops);
78788 + fscache_stat_unchecked(&fscache_n_alloc_ops);
78789
78790 ret = fscache_wait_for_operation_activation(
78791 object, &op->op,
78792 @@ -712,11 +712,11 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
78793
78794 error:
78795 if (ret == -ERESTARTSYS)
78796 - fscache_stat(&fscache_n_allocs_intr);
78797 + fscache_stat_unchecked(&fscache_n_allocs_intr);
78798 else if (ret < 0)
78799 - fscache_stat(&fscache_n_allocs_nobufs);
78800 + fscache_stat_unchecked(&fscache_n_allocs_nobufs);
78801 else
78802 - fscache_stat(&fscache_n_allocs_ok);
78803 + fscache_stat_unchecked(&fscache_n_allocs_ok);
78804
78805 fscache_put_retrieval(op);
78806 _leave(" = %d", ret);
78807 @@ -730,7 +730,7 @@ nobufs_unlock:
78808 if (wake_cookie)
78809 __fscache_wake_unused_cookie(cookie);
78810 nobufs:
78811 - fscache_stat(&fscache_n_allocs_nobufs);
78812 + fscache_stat_unchecked(&fscache_n_allocs_nobufs);
78813 _leave(" = -ENOBUFS");
78814 return -ENOBUFS;
78815 }
78816 @@ -806,7 +806,7 @@ static void fscache_write_op(struct fscache_operation *_op)
78817
78818 spin_lock(&cookie->stores_lock);
78819
78820 - fscache_stat(&fscache_n_store_calls);
78821 + fscache_stat_unchecked(&fscache_n_store_calls);
78822
78823 /* find a page to store */
78824 page = NULL;
78825 @@ -817,7 +817,7 @@ static void fscache_write_op(struct fscache_operation *_op)
78826 page = results[0];
78827 _debug("gang %d [%lx]", n, page->index);
78828 if (page->index > op->store_limit) {
78829 - fscache_stat(&fscache_n_store_pages_over_limit);
78830 + fscache_stat_unchecked(&fscache_n_store_pages_over_limit);
78831 goto superseded;
78832 }
78833
78834 @@ -829,7 +829,7 @@ static void fscache_write_op(struct fscache_operation *_op)
78835 spin_unlock(&cookie->stores_lock);
78836 spin_unlock(&object->lock);
78837
78838 - fscache_stat(&fscache_n_store_pages);
78839 + fscache_stat_unchecked(&fscache_n_store_pages);
78840 fscache_stat(&fscache_n_cop_write_page);
78841 ret = object->cache->ops->write_page(op, page);
78842 fscache_stat_d(&fscache_n_cop_write_page);
78843 @@ -933,7 +933,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
78844 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
78845 ASSERT(PageFsCache(page));
78846
78847 - fscache_stat(&fscache_n_stores);
78848 + fscache_stat_unchecked(&fscache_n_stores);
78849
78850 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) {
78851 _leave(" = -ENOBUFS [invalidating]");
78852 @@ -992,7 +992,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
78853 spin_unlock(&cookie->stores_lock);
78854 spin_unlock(&object->lock);
78855
78856 - op->op.debug_id = atomic_inc_return(&fscache_op_debug_id);
78857 + op->op.debug_id = atomic_inc_return_unchecked(&fscache_op_debug_id);
78858 op->store_limit = object->store_limit;
78859
78860 __fscache_use_cookie(cookie);
78861 @@ -1001,8 +1001,8 @@ int __fscache_write_page(struct fscache_cookie *cookie,
78862
78863 spin_unlock(&cookie->lock);
78864 radix_tree_preload_end();
78865 - fscache_stat(&fscache_n_store_ops);
78866 - fscache_stat(&fscache_n_stores_ok);
78867 + fscache_stat_unchecked(&fscache_n_store_ops);
78868 + fscache_stat_unchecked(&fscache_n_stores_ok);
78869
78870 /* the work queue now carries its own ref on the object */
78871 fscache_put_operation(&op->op);
78872 @@ -1010,14 +1010,14 @@ int __fscache_write_page(struct fscache_cookie *cookie,
78873 return 0;
78874
78875 already_queued:
78876 - fscache_stat(&fscache_n_stores_again);
78877 + fscache_stat_unchecked(&fscache_n_stores_again);
78878 already_pending:
78879 spin_unlock(&cookie->stores_lock);
78880 spin_unlock(&object->lock);
78881 spin_unlock(&cookie->lock);
78882 radix_tree_preload_end();
78883 fscache_put_operation(&op->op);
78884 - fscache_stat(&fscache_n_stores_ok);
78885 + fscache_stat_unchecked(&fscache_n_stores_ok);
78886 _leave(" = 0");
78887 return 0;
78888
78889 @@ -1039,14 +1039,14 @@ nobufs:
78890 fscache_put_operation(&op->op);
78891 if (wake_cookie)
78892 __fscache_wake_unused_cookie(cookie);
78893 - fscache_stat(&fscache_n_stores_nobufs);
78894 + fscache_stat_unchecked(&fscache_n_stores_nobufs);
78895 _leave(" = -ENOBUFS");
78896 return -ENOBUFS;
78897
78898 nomem_free:
78899 fscache_put_operation(&op->op);
78900 nomem:
78901 - fscache_stat(&fscache_n_stores_oom);
78902 + fscache_stat_unchecked(&fscache_n_stores_oom);
78903 _leave(" = -ENOMEM");
78904 return -ENOMEM;
78905 }
78906 @@ -1064,7 +1064,7 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page)
78907 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
78908 ASSERTCMP(page, !=, NULL);
78909
78910 - fscache_stat(&fscache_n_uncaches);
78911 + fscache_stat_unchecked(&fscache_n_uncaches);
78912
78913 /* cache withdrawal may beat us to it */
78914 if (!PageFsCache(page))
78915 @@ -1115,7 +1115,7 @@ void fscache_mark_page_cached(struct fscache_retrieval *op, struct page *page)
78916 struct fscache_cookie *cookie = op->op.object->cookie;
78917
78918 #ifdef CONFIG_FSCACHE_STATS
78919 - atomic_inc(&fscache_n_marks);
78920 + atomic_inc_unchecked(&fscache_n_marks);
78921 #endif
78922
78923 _debug("- mark %p{%lx}", page, page->index);
78924 diff --git a/fs/fscache/stats.c b/fs/fscache/stats.c
78925 index 7cfa0aa..d5ef97b7 100644
78926 --- a/fs/fscache/stats.c
78927 +++ b/fs/fscache/stats.c
78928 @@ -18,100 +18,100 @@
78929 /*
78930 * operation counters
78931 */
78932 -atomic_t fscache_n_op_pend;
78933 -atomic_t fscache_n_op_run;
78934 -atomic_t fscache_n_op_enqueue;
78935 -atomic_t fscache_n_op_requeue;
78936 -atomic_t fscache_n_op_deferred_release;
78937 -atomic_t fscache_n_op_initialised;
78938 -atomic_t fscache_n_op_release;
78939 -atomic_t fscache_n_op_gc;
78940 -atomic_t fscache_n_op_cancelled;
78941 -atomic_t fscache_n_op_rejected;
78942 +atomic_unchecked_t fscache_n_op_pend;
78943 +atomic_unchecked_t fscache_n_op_run;
78944 +atomic_unchecked_t fscache_n_op_enqueue;
78945 +atomic_unchecked_t fscache_n_op_requeue;
78946 +atomic_unchecked_t fscache_n_op_deferred_release;
78947 +atomic_unchecked_t fscache_n_op_initialised;
78948 +atomic_unchecked_t fscache_n_op_release;
78949 +atomic_unchecked_t fscache_n_op_gc;
78950 +atomic_unchecked_t fscache_n_op_cancelled;
78951 +atomic_unchecked_t fscache_n_op_rejected;
78952
78953 -atomic_t fscache_n_attr_changed;
78954 -atomic_t fscache_n_attr_changed_ok;
78955 -atomic_t fscache_n_attr_changed_nobufs;
78956 -atomic_t fscache_n_attr_changed_nomem;
78957 -atomic_t fscache_n_attr_changed_calls;
78958 +atomic_unchecked_t fscache_n_attr_changed;
78959 +atomic_unchecked_t fscache_n_attr_changed_ok;
78960 +atomic_unchecked_t fscache_n_attr_changed_nobufs;
78961 +atomic_unchecked_t fscache_n_attr_changed_nomem;
78962 +atomic_unchecked_t fscache_n_attr_changed_calls;
78963
78964 -atomic_t fscache_n_allocs;
78965 -atomic_t fscache_n_allocs_ok;
78966 -atomic_t fscache_n_allocs_wait;
78967 -atomic_t fscache_n_allocs_nobufs;
78968 -atomic_t fscache_n_allocs_intr;
78969 -atomic_t fscache_n_allocs_object_dead;
78970 -atomic_t fscache_n_alloc_ops;
78971 -atomic_t fscache_n_alloc_op_waits;
78972 +atomic_unchecked_t fscache_n_allocs;
78973 +atomic_unchecked_t fscache_n_allocs_ok;
78974 +atomic_unchecked_t fscache_n_allocs_wait;
78975 +atomic_unchecked_t fscache_n_allocs_nobufs;
78976 +atomic_unchecked_t fscache_n_allocs_intr;
78977 +atomic_unchecked_t fscache_n_allocs_object_dead;
78978 +atomic_unchecked_t fscache_n_alloc_ops;
78979 +atomic_unchecked_t fscache_n_alloc_op_waits;
78980
78981 -atomic_t fscache_n_retrievals;
78982 -atomic_t fscache_n_retrievals_ok;
78983 -atomic_t fscache_n_retrievals_wait;
78984 -atomic_t fscache_n_retrievals_nodata;
78985 -atomic_t fscache_n_retrievals_nobufs;
78986 -atomic_t fscache_n_retrievals_intr;
78987 -atomic_t fscache_n_retrievals_nomem;
78988 -atomic_t fscache_n_retrievals_object_dead;
78989 -atomic_t fscache_n_retrieval_ops;
78990 -atomic_t fscache_n_retrieval_op_waits;
78991 +atomic_unchecked_t fscache_n_retrievals;
78992 +atomic_unchecked_t fscache_n_retrievals_ok;
78993 +atomic_unchecked_t fscache_n_retrievals_wait;
78994 +atomic_unchecked_t fscache_n_retrievals_nodata;
78995 +atomic_unchecked_t fscache_n_retrievals_nobufs;
78996 +atomic_unchecked_t fscache_n_retrievals_intr;
78997 +atomic_unchecked_t fscache_n_retrievals_nomem;
78998 +atomic_unchecked_t fscache_n_retrievals_object_dead;
78999 +atomic_unchecked_t fscache_n_retrieval_ops;
79000 +atomic_unchecked_t fscache_n_retrieval_op_waits;
79001
79002 -atomic_t fscache_n_stores;
79003 -atomic_t fscache_n_stores_ok;
79004 -atomic_t fscache_n_stores_again;
79005 -atomic_t fscache_n_stores_nobufs;
79006 -atomic_t fscache_n_stores_oom;
79007 -atomic_t fscache_n_store_ops;
79008 -atomic_t fscache_n_store_calls;
79009 -atomic_t fscache_n_store_pages;
79010 -atomic_t fscache_n_store_radix_deletes;
79011 -atomic_t fscache_n_store_pages_over_limit;
79012 +atomic_unchecked_t fscache_n_stores;
79013 +atomic_unchecked_t fscache_n_stores_ok;
79014 +atomic_unchecked_t fscache_n_stores_again;
79015 +atomic_unchecked_t fscache_n_stores_nobufs;
79016 +atomic_unchecked_t fscache_n_stores_oom;
79017 +atomic_unchecked_t fscache_n_store_ops;
79018 +atomic_unchecked_t fscache_n_store_calls;
79019 +atomic_unchecked_t fscache_n_store_pages;
79020 +atomic_unchecked_t fscache_n_store_radix_deletes;
79021 +atomic_unchecked_t fscache_n_store_pages_over_limit;
79022
79023 -atomic_t fscache_n_store_vmscan_not_storing;
79024 -atomic_t fscache_n_store_vmscan_gone;
79025 -atomic_t fscache_n_store_vmscan_busy;
79026 -atomic_t fscache_n_store_vmscan_cancelled;
79027 -atomic_t fscache_n_store_vmscan_wait;
79028 +atomic_unchecked_t fscache_n_store_vmscan_not_storing;
79029 +atomic_unchecked_t fscache_n_store_vmscan_gone;
79030 +atomic_unchecked_t fscache_n_store_vmscan_busy;
79031 +atomic_unchecked_t fscache_n_store_vmscan_cancelled;
79032 +atomic_unchecked_t fscache_n_store_vmscan_wait;
79033
79034 -atomic_t fscache_n_marks;
79035 -atomic_t fscache_n_uncaches;
79036 +atomic_unchecked_t fscache_n_marks;
79037 +atomic_unchecked_t fscache_n_uncaches;
79038
79039 -atomic_t fscache_n_acquires;
79040 -atomic_t fscache_n_acquires_null;
79041 -atomic_t fscache_n_acquires_no_cache;
79042 -atomic_t fscache_n_acquires_ok;
79043 -atomic_t fscache_n_acquires_nobufs;
79044 -atomic_t fscache_n_acquires_oom;
79045 +atomic_unchecked_t fscache_n_acquires;
79046 +atomic_unchecked_t fscache_n_acquires_null;
79047 +atomic_unchecked_t fscache_n_acquires_no_cache;
79048 +atomic_unchecked_t fscache_n_acquires_ok;
79049 +atomic_unchecked_t fscache_n_acquires_nobufs;
79050 +atomic_unchecked_t fscache_n_acquires_oom;
79051
79052 -atomic_t fscache_n_invalidates;
79053 -atomic_t fscache_n_invalidates_run;
79054 +atomic_unchecked_t fscache_n_invalidates;
79055 +atomic_unchecked_t fscache_n_invalidates_run;
79056
79057 -atomic_t fscache_n_updates;
79058 -atomic_t fscache_n_updates_null;
79059 -atomic_t fscache_n_updates_run;
79060 +atomic_unchecked_t fscache_n_updates;
79061 +atomic_unchecked_t fscache_n_updates_null;
79062 +atomic_unchecked_t fscache_n_updates_run;
79063
79064 -atomic_t fscache_n_relinquishes;
79065 -atomic_t fscache_n_relinquishes_null;
79066 -atomic_t fscache_n_relinquishes_waitcrt;
79067 -atomic_t fscache_n_relinquishes_retire;
79068 +atomic_unchecked_t fscache_n_relinquishes;
79069 +atomic_unchecked_t fscache_n_relinquishes_null;
79070 +atomic_unchecked_t fscache_n_relinquishes_waitcrt;
79071 +atomic_unchecked_t fscache_n_relinquishes_retire;
79072
79073 -atomic_t fscache_n_cookie_index;
79074 -atomic_t fscache_n_cookie_data;
79075 -atomic_t fscache_n_cookie_special;
79076 +atomic_unchecked_t fscache_n_cookie_index;
79077 +atomic_unchecked_t fscache_n_cookie_data;
79078 +atomic_unchecked_t fscache_n_cookie_special;
79079
79080 -atomic_t fscache_n_object_alloc;
79081 -atomic_t fscache_n_object_no_alloc;
79082 -atomic_t fscache_n_object_lookups;
79083 -atomic_t fscache_n_object_lookups_negative;
79084 -atomic_t fscache_n_object_lookups_positive;
79085 -atomic_t fscache_n_object_lookups_timed_out;
79086 -atomic_t fscache_n_object_created;
79087 -atomic_t fscache_n_object_avail;
79088 -atomic_t fscache_n_object_dead;
79089 +atomic_unchecked_t fscache_n_object_alloc;
79090 +atomic_unchecked_t fscache_n_object_no_alloc;
79091 +atomic_unchecked_t fscache_n_object_lookups;
79092 +atomic_unchecked_t fscache_n_object_lookups_negative;
79093 +atomic_unchecked_t fscache_n_object_lookups_positive;
79094 +atomic_unchecked_t fscache_n_object_lookups_timed_out;
79095 +atomic_unchecked_t fscache_n_object_created;
79096 +atomic_unchecked_t fscache_n_object_avail;
79097 +atomic_unchecked_t fscache_n_object_dead;
79098
79099 -atomic_t fscache_n_checkaux_none;
79100 -atomic_t fscache_n_checkaux_okay;
79101 -atomic_t fscache_n_checkaux_update;
79102 -atomic_t fscache_n_checkaux_obsolete;
79103 +atomic_unchecked_t fscache_n_checkaux_none;
79104 +atomic_unchecked_t fscache_n_checkaux_okay;
79105 +atomic_unchecked_t fscache_n_checkaux_update;
79106 +atomic_unchecked_t fscache_n_checkaux_obsolete;
79107
79108 atomic_t fscache_n_cop_alloc_object;
79109 atomic_t fscache_n_cop_lookup_object;
79110 @@ -144,119 +144,119 @@ static int fscache_stats_show(struct seq_file *m, void *v)
79111 seq_puts(m, "FS-Cache statistics\n");
79112
79113 seq_printf(m, "Cookies: idx=%u dat=%u spc=%u\n",
79114 - atomic_read(&fscache_n_cookie_index),
79115 - atomic_read(&fscache_n_cookie_data),
79116 - atomic_read(&fscache_n_cookie_special));
79117 + atomic_read_unchecked(&fscache_n_cookie_index),
79118 + atomic_read_unchecked(&fscache_n_cookie_data),
79119 + atomic_read_unchecked(&fscache_n_cookie_special));
79120
79121 seq_printf(m, "Objects: alc=%u nal=%u avl=%u ded=%u\n",
79122 - atomic_read(&fscache_n_object_alloc),
79123 - atomic_read(&fscache_n_object_no_alloc),
79124 - atomic_read(&fscache_n_object_avail),
79125 - atomic_read(&fscache_n_object_dead));
79126 + atomic_read_unchecked(&fscache_n_object_alloc),
79127 + atomic_read_unchecked(&fscache_n_object_no_alloc),
79128 + atomic_read_unchecked(&fscache_n_object_avail),
79129 + atomic_read_unchecked(&fscache_n_object_dead));
79130 seq_printf(m, "ChkAux : non=%u ok=%u upd=%u obs=%u\n",
79131 - atomic_read(&fscache_n_checkaux_none),
79132 - atomic_read(&fscache_n_checkaux_okay),
79133 - atomic_read(&fscache_n_checkaux_update),
79134 - atomic_read(&fscache_n_checkaux_obsolete));
79135 + atomic_read_unchecked(&fscache_n_checkaux_none),
79136 + atomic_read_unchecked(&fscache_n_checkaux_okay),
79137 + atomic_read_unchecked(&fscache_n_checkaux_update),
79138 + atomic_read_unchecked(&fscache_n_checkaux_obsolete));
79139
79140 seq_printf(m, "Pages : mrk=%u unc=%u\n",
79141 - atomic_read(&fscache_n_marks),
79142 - atomic_read(&fscache_n_uncaches));
79143 + atomic_read_unchecked(&fscache_n_marks),
79144 + atomic_read_unchecked(&fscache_n_uncaches));
79145
79146 seq_printf(m, "Acquire: n=%u nul=%u noc=%u ok=%u nbf=%u"
79147 " oom=%u\n",
79148 - atomic_read(&fscache_n_acquires),
79149 - atomic_read(&fscache_n_acquires_null),
79150 - atomic_read(&fscache_n_acquires_no_cache),
79151 - atomic_read(&fscache_n_acquires_ok),
79152 - atomic_read(&fscache_n_acquires_nobufs),
79153 - atomic_read(&fscache_n_acquires_oom));
79154 + atomic_read_unchecked(&fscache_n_acquires),
79155 + atomic_read_unchecked(&fscache_n_acquires_null),
79156 + atomic_read_unchecked(&fscache_n_acquires_no_cache),
79157 + atomic_read_unchecked(&fscache_n_acquires_ok),
79158 + atomic_read_unchecked(&fscache_n_acquires_nobufs),
79159 + atomic_read_unchecked(&fscache_n_acquires_oom));
79160
79161 seq_printf(m, "Lookups: n=%u neg=%u pos=%u crt=%u tmo=%u\n",
79162 - atomic_read(&fscache_n_object_lookups),
79163 - atomic_read(&fscache_n_object_lookups_negative),
79164 - atomic_read(&fscache_n_object_lookups_positive),
79165 - atomic_read(&fscache_n_object_created),
79166 - atomic_read(&fscache_n_object_lookups_timed_out));
79167 + atomic_read_unchecked(&fscache_n_object_lookups),
79168 + atomic_read_unchecked(&fscache_n_object_lookups_negative),
79169 + atomic_read_unchecked(&fscache_n_object_lookups_positive),
79170 + atomic_read_unchecked(&fscache_n_object_created),
79171 + atomic_read_unchecked(&fscache_n_object_lookups_timed_out));
79172
79173 seq_printf(m, "Invals : n=%u run=%u\n",
79174 - atomic_read(&fscache_n_invalidates),
79175 - atomic_read(&fscache_n_invalidates_run));
79176 + atomic_read_unchecked(&fscache_n_invalidates),
79177 + atomic_read_unchecked(&fscache_n_invalidates_run));
79178
79179 seq_printf(m, "Updates: n=%u nul=%u run=%u\n",
79180 - atomic_read(&fscache_n_updates),
79181 - atomic_read(&fscache_n_updates_null),
79182 - atomic_read(&fscache_n_updates_run));
79183 + atomic_read_unchecked(&fscache_n_updates),
79184 + atomic_read_unchecked(&fscache_n_updates_null),
79185 + atomic_read_unchecked(&fscache_n_updates_run));
79186
79187 seq_printf(m, "Relinqs: n=%u nul=%u wcr=%u rtr=%u\n",
79188 - atomic_read(&fscache_n_relinquishes),
79189 - atomic_read(&fscache_n_relinquishes_null),
79190 - atomic_read(&fscache_n_relinquishes_waitcrt),
79191 - atomic_read(&fscache_n_relinquishes_retire));
79192 + atomic_read_unchecked(&fscache_n_relinquishes),
79193 + atomic_read_unchecked(&fscache_n_relinquishes_null),
79194 + atomic_read_unchecked(&fscache_n_relinquishes_waitcrt),
79195 + atomic_read_unchecked(&fscache_n_relinquishes_retire));
79196
79197 seq_printf(m, "AttrChg: n=%u ok=%u nbf=%u oom=%u run=%u\n",
79198 - atomic_read(&fscache_n_attr_changed),
79199 - atomic_read(&fscache_n_attr_changed_ok),
79200 - atomic_read(&fscache_n_attr_changed_nobufs),
79201 - atomic_read(&fscache_n_attr_changed_nomem),
79202 - atomic_read(&fscache_n_attr_changed_calls));
79203 + atomic_read_unchecked(&fscache_n_attr_changed),
79204 + atomic_read_unchecked(&fscache_n_attr_changed_ok),
79205 + atomic_read_unchecked(&fscache_n_attr_changed_nobufs),
79206 + atomic_read_unchecked(&fscache_n_attr_changed_nomem),
79207 + atomic_read_unchecked(&fscache_n_attr_changed_calls));
79208
79209 seq_printf(m, "Allocs : n=%u ok=%u wt=%u nbf=%u int=%u\n",
79210 - atomic_read(&fscache_n_allocs),
79211 - atomic_read(&fscache_n_allocs_ok),
79212 - atomic_read(&fscache_n_allocs_wait),
79213 - atomic_read(&fscache_n_allocs_nobufs),
79214 - atomic_read(&fscache_n_allocs_intr));
79215 + atomic_read_unchecked(&fscache_n_allocs),
79216 + atomic_read_unchecked(&fscache_n_allocs_ok),
79217 + atomic_read_unchecked(&fscache_n_allocs_wait),
79218 + atomic_read_unchecked(&fscache_n_allocs_nobufs),
79219 + atomic_read_unchecked(&fscache_n_allocs_intr));
79220 seq_printf(m, "Allocs : ops=%u owt=%u abt=%u\n",
79221 - atomic_read(&fscache_n_alloc_ops),
79222 - atomic_read(&fscache_n_alloc_op_waits),
79223 - atomic_read(&fscache_n_allocs_object_dead));
79224 + atomic_read_unchecked(&fscache_n_alloc_ops),
79225 + atomic_read_unchecked(&fscache_n_alloc_op_waits),
79226 + atomic_read_unchecked(&fscache_n_allocs_object_dead));
79227
79228 seq_printf(m, "Retrvls: n=%u ok=%u wt=%u nod=%u nbf=%u"
79229 " int=%u oom=%u\n",
79230 - atomic_read(&fscache_n_retrievals),
79231 - atomic_read(&fscache_n_retrievals_ok),
79232 - atomic_read(&fscache_n_retrievals_wait),
79233 - atomic_read(&fscache_n_retrievals_nodata),
79234 - atomic_read(&fscache_n_retrievals_nobufs),
79235 - atomic_read(&fscache_n_retrievals_intr),
79236 - atomic_read(&fscache_n_retrievals_nomem));
79237 + atomic_read_unchecked(&fscache_n_retrievals),
79238 + atomic_read_unchecked(&fscache_n_retrievals_ok),
79239 + atomic_read_unchecked(&fscache_n_retrievals_wait),
79240 + atomic_read_unchecked(&fscache_n_retrievals_nodata),
79241 + atomic_read_unchecked(&fscache_n_retrievals_nobufs),
79242 + atomic_read_unchecked(&fscache_n_retrievals_intr),
79243 + atomic_read_unchecked(&fscache_n_retrievals_nomem));
79244 seq_printf(m, "Retrvls: ops=%u owt=%u abt=%u\n",
79245 - atomic_read(&fscache_n_retrieval_ops),
79246 - atomic_read(&fscache_n_retrieval_op_waits),
79247 - atomic_read(&fscache_n_retrievals_object_dead));
79248 + atomic_read_unchecked(&fscache_n_retrieval_ops),
79249 + atomic_read_unchecked(&fscache_n_retrieval_op_waits),
79250 + atomic_read_unchecked(&fscache_n_retrievals_object_dead));
79251
79252 seq_printf(m, "Stores : n=%u ok=%u agn=%u nbf=%u oom=%u\n",
79253 - atomic_read(&fscache_n_stores),
79254 - atomic_read(&fscache_n_stores_ok),
79255 - atomic_read(&fscache_n_stores_again),
79256 - atomic_read(&fscache_n_stores_nobufs),
79257 - atomic_read(&fscache_n_stores_oom));
79258 + atomic_read_unchecked(&fscache_n_stores),
79259 + atomic_read_unchecked(&fscache_n_stores_ok),
79260 + atomic_read_unchecked(&fscache_n_stores_again),
79261 + atomic_read_unchecked(&fscache_n_stores_nobufs),
79262 + atomic_read_unchecked(&fscache_n_stores_oom));
79263 seq_printf(m, "Stores : ops=%u run=%u pgs=%u rxd=%u olm=%u\n",
79264 - atomic_read(&fscache_n_store_ops),
79265 - atomic_read(&fscache_n_store_calls),
79266 - atomic_read(&fscache_n_store_pages),
79267 - atomic_read(&fscache_n_store_radix_deletes),
79268 - atomic_read(&fscache_n_store_pages_over_limit));
79269 + atomic_read_unchecked(&fscache_n_store_ops),
79270 + atomic_read_unchecked(&fscache_n_store_calls),
79271 + atomic_read_unchecked(&fscache_n_store_pages),
79272 + atomic_read_unchecked(&fscache_n_store_radix_deletes),
79273 + atomic_read_unchecked(&fscache_n_store_pages_over_limit));
79274
79275 seq_printf(m, "VmScan : nos=%u gon=%u bsy=%u can=%u wt=%u\n",
79276 - atomic_read(&fscache_n_store_vmscan_not_storing),
79277 - atomic_read(&fscache_n_store_vmscan_gone),
79278 - atomic_read(&fscache_n_store_vmscan_busy),
79279 - atomic_read(&fscache_n_store_vmscan_cancelled),
79280 - atomic_read(&fscache_n_store_vmscan_wait));
79281 + atomic_read_unchecked(&fscache_n_store_vmscan_not_storing),
79282 + atomic_read_unchecked(&fscache_n_store_vmscan_gone),
79283 + atomic_read_unchecked(&fscache_n_store_vmscan_busy),
79284 + atomic_read_unchecked(&fscache_n_store_vmscan_cancelled),
79285 + atomic_read_unchecked(&fscache_n_store_vmscan_wait));
79286
79287 seq_printf(m, "Ops : pend=%u run=%u enq=%u can=%u rej=%u\n",
79288 - atomic_read(&fscache_n_op_pend),
79289 - atomic_read(&fscache_n_op_run),
79290 - atomic_read(&fscache_n_op_enqueue),
79291 - atomic_read(&fscache_n_op_cancelled),
79292 - atomic_read(&fscache_n_op_rejected));
79293 + atomic_read_unchecked(&fscache_n_op_pend),
79294 + atomic_read_unchecked(&fscache_n_op_run),
79295 + atomic_read_unchecked(&fscache_n_op_enqueue),
79296 + atomic_read_unchecked(&fscache_n_op_cancelled),
79297 + atomic_read_unchecked(&fscache_n_op_rejected));
79298 seq_printf(m, "Ops : ini=%u dfr=%u rel=%u gc=%u\n",
79299 - atomic_read(&fscache_n_op_initialised),
79300 - atomic_read(&fscache_n_op_deferred_release),
79301 - atomic_read(&fscache_n_op_release),
79302 - atomic_read(&fscache_n_op_gc));
79303 + atomic_read_unchecked(&fscache_n_op_initialised),
79304 + atomic_read_unchecked(&fscache_n_op_deferred_release),
79305 + atomic_read_unchecked(&fscache_n_op_release),
79306 + atomic_read_unchecked(&fscache_n_op_gc));
79307
79308 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
79309 atomic_read(&fscache_n_cop_alloc_object),
79310 diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
79311 index eae2c11..b277a45 100644
79312 --- a/fs/fuse/cuse.c
79313 +++ b/fs/fuse/cuse.c
79314 @@ -609,10 +609,12 @@ static int __init cuse_init(void)
79315 INIT_LIST_HEAD(&cuse_conntbl[i]);
79316
79317 /* inherit and extend fuse_dev_operations */
79318 - cuse_channel_fops = fuse_dev_operations;
79319 - cuse_channel_fops.owner = THIS_MODULE;
79320 - cuse_channel_fops.open = cuse_channel_open;
79321 - cuse_channel_fops.release = cuse_channel_release;
79322 + pax_open_kernel();
79323 + memcpy((void *)&cuse_channel_fops, &fuse_dev_operations, sizeof(fuse_dev_operations));
79324 + *(void **)&cuse_channel_fops.owner = THIS_MODULE;
79325 + *(void **)&cuse_channel_fops.open = cuse_channel_open;
79326 + *(void **)&cuse_channel_fops.release = cuse_channel_release;
79327 + pax_close_kernel();
79328
79329 cuse_class = class_create(THIS_MODULE, "cuse");
79330 if (IS_ERR(cuse_class))
79331 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
79332 index ebb5e37..beae05b 100644
79333 --- a/fs/fuse/dev.c
79334 +++ b/fs/fuse/dev.c
79335 @@ -1390,7 +1390,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
79336 ret = 0;
79337 pipe_lock(pipe);
79338
79339 - if (!pipe->readers) {
79340 + if (!atomic_read(&pipe->readers)) {
79341 send_sig(SIGPIPE, current, 0);
79342 if (!ret)
79343 ret = -EPIPE;
79344 @@ -1419,7 +1419,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
79345 page_nr++;
79346 ret += buf->len;
79347
79348 - if (pipe->files)
79349 + if (atomic_read(&pipe->files))
79350 do_wakeup = 1;
79351 }
79352
79353 diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
79354 index a38e38f..6dbdcf6 100644
79355 --- a/fs/gfs2/glock.c
79356 +++ b/fs/gfs2/glock.c
79357 @@ -385,9 +385,9 @@ static void state_change(struct gfs2_glock *gl, unsigned int new_state)
79358 if (held1 != held2) {
79359 GLOCK_BUG_ON(gl, __lockref_is_dead(&gl->gl_lockref));
79360 if (held2)
79361 - gl->gl_lockref.count++;
79362 + __lockref_inc(&gl->gl_lockref);
79363 else
79364 - gl->gl_lockref.count--;
79365 + __lockref_dec(&gl->gl_lockref);
79366 }
79367 if (held1 && held2 && list_empty(&gl->gl_holders))
79368 clear_bit(GLF_QUEUED, &gl->gl_flags);
79369 @@ -614,9 +614,9 @@ out:
79370 out_sched:
79371 clear_bit(GLF_LOCK, &gl->gl_flags);
79372 smp_mb__after_atomic();
79373 - gl->gl_lockref.count++;
79374 + __lockref_inc(&gl->gl_lockref);
79375 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0)
79376 - gl->gl_lockref.count--;
79377 + __lockref_dec(&gl->gl_lockref);
79378 return;
79379
79380 out_unlock:
79381 @@ -742,7 +742,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
79382 gl->gl_sbd = sdp;
79383 gl->gl_flags = 0;
79384 gl->gl_name = name;
79385 - gl->gl_lockref.count = 1;
79386 + __lockref_set(&gl->gl_lockref, 1);
79387 gl->gl_state = LM_ST_UNLOCKED;
79388 gl->gl_target = LM_ST_UNLOCKED;
79389 gl->gl_demote_state = LM_ST_EXCLUSIVE;
79390 @@ -1020,9 +1020,9 @@ int gfs2_glock_nq(struct gfs2_holder *gh)
79391 if (unlikely((LM_FLAG_NOEXP & gh->gh_flags) &&
79392 test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))) {
79393 set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
79394 - gl->gl_lockref.count++;
79395 + __lockref_inc(&gl->gl_lockref);
79396 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0)
79397 - gl->gl_lockref.count--;
79398 + __lockref_dec(&gl->gl_lockref);
79399 }
79400 run_queue(gl, 1);
79401 spin_unlock(&gl->gl_spin);
79402 @@ -1326,7 +1326,7 @@ void gfs2_glock_complete(struct gfs2_glock *gl, int ret)
79403 }
79404 }
79405
79406 - gl->gl_lockref.count++;
79407 + __lockref_inc(&gl->gl_lockref);
79408 set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
79409 spin_unlock(&gl->gl_spin);
79410
79411 @@ -1385,12 +1385,12 @@ add_back_to_lru:
79412 goto add_back_to_lru;
79413 }
79414 clear_bit(GLF_LRU, &gl->gl_flags);
79415 - gl->gl_lockref.count++;
79416 + __lockref_inc(&gl->gl_lockref);
79417 if (demote_ok(gl))
79418 handle_callback(gl, LM_ST_UNLOCKED, 0, false);
79419 WARN_ON(!test_and_clear_bit(GLF_LOCK, &gl->gl_flags));
79420 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0)
79421 - gl->gl_lockref.count--;
79422 + __lockref_dec(&gl->gl_lockref);
79423 spin_unlock(&gl->gl_spin);
79424 cond_resched_lock(&lru_lock);
79425 }
79426 @@ -1720,7 +1720,7 @@ void gfs2_dump_glock(struct seq_file *seq, const struct gfs2_glock *gl)
79427 state2str(gl->gl_demote_state), dtime,
79428 atomic_read(&gl->gl_ail_count),
79429 atomic_read(&gl->gl_revokes),
79430 - (int)gl->gl_lockref.count, gl->gl_hold_time);
79431 + __lockref_read(&gl->gl_lockref), gl->gl_hold_time);
79432
79433 list_for_each_entry(gh, &gl->gl_holders, gh_list)
79434 dump_holder(seq, gh);
79435 diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
79436 index fa3fa5e..9fe2272 100644
79437 --- a/fs/gfs2/glops.c
79438 +++ b/fs/gfs2/glops.c
79439 @@ -552,9 +552,9 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote)
79440
79441 if (gl->gl_demote_state == LM_ST_UNLOCKED &&
79442 gl->gl_state == LM_ST_SHARED && ip) {
79443 - gl->gl_lockref.count++;
79444 + __lockref_inc(&gl->gl_lockref);
79445 if (queue_work(gfs2_delete_workqueue, &gl->gl_delete) == 0)
79446 - gl->gl_lockref.count--;
79447 + __lockref_dec(&gl->gl_lockref);
79448 }
79449 }
79450
79451 diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
79452 index 9b61f92..ab84778 100644
79453 --- a/fs/gfs2/quota.c
79454 +++ b/fs/gfs2/quota.c
79455 @@ -154,7 +154,7 @@ static enum lru_status gfs2_qd_isolate(struct list_head *item,
79456 if (!spin_trylock(&qd->qd_lockref.lock))
79457 return LRU_SKIP;
79458
79459 - if (qd->qd_lockref.count == 0) {
79460 + if (__lockref_read(&qd->qd_lockref) == 0) {
79461 lockref_mark_dead(&qd->qd_lockref);
79462 list_lru_isolate_move(lru, &qd->qd_lru, dispose);
79463 }
79464 @@ -221,7 +221,7 @@ static struct gfs2_quota_data *qd_alloc(unsigned hash, struct gfs2_sbd *sdp, str
79465 return NULL;
79466
79467 qd->qd_sbd = sdp;
79468 - qd->qd_lockref.count = 1;
79469 + __lockref_set(&qd->qd_lockref, 1);
79470 spin_lock_init(&qd->qd_lockref.lock);
79471 qd->qd_id = qid;
79472 qd->qd_slot = -1;
79473 @@ -312,7 +312,7 @@ static void qd_put(struct gfs2_quota_data *qd)
79474 if (lockref_put_or_lock(&qd->qd_lockref))
79475 return;
79476
79477 - qd->qd_lockref.count = 0;
79478 + __lockref_set(&qd->qd_lockref, 0);
79479 list_lru_add(&gfs2_qd_lru, &qd->qd_lru);
79480 spin_unlock(&qd->qd_lockref.lock);
79481
79482 diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
79483 index 973c24c..a3cbeb3 100644
79484 --- a/fs/hugetlbfs/inode.c
79485 +++ b/fs/hugetlbfs/inode.c
79486 @@ -150,6 +150,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
79487 struct mm_struct *mm = current->mm;
79488 struct vm_area_struct *vma;
79489 struct hstate *h = hstate_file(file);
79490 + unsigned long offset = gr_rand_threadstack_offset(mm, file, flags);
79491 struct vm_unmapped_area_info info;
79492
79493 if (len & ~huge_page_mask(h))
79494 @@ -163,17 +164,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
79495 return addr;
79496 }
79497
79498 +#ifdef CONFIG_PAX_RANDMMAP
79499 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
79500 +#endif
79501 +
79502 if (addr) {
79503 addr = ALIGN(addr, huge_page_size(h));
79504 vma = find_vma(mm, addr);
79505 - if (TASK_SIZE - len >= addr &&
79506 - (!vma || addr + len <= vma->vm_start))
79507 + if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
79508 return addr;
79509 }
79510
79511 info.flags = 0;
79512 info.length = len;
79513 info.low_limit = TASK_UNMAPPED_BASE;
79514 +
79515 +#ifdef CONFIG_PAX_RANDMMAP
79516 + if (mm->pax_flags & MF_PAX_RANDMMAP)
79517 + info.low_limit += mm->delta_mmap;
79518 +#endif
79519 +
79520 info.high_limit = TASK_SIZE;
79521 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
79522 info.align_offset = 0;
79523 @@ -938,7 +948,7 @@ static struct file_system_type hugetlbfs_fs_type = {
79524 };
79525 MODULE_ALIAS_FS("hugetlbfs");
79526
79527 -static struct vfsmount *hugetlbfs_vfsmount[HUGE_MAX_HSTATE];
79528 +struct vfsmount *hugetlbfs_vfsmount[HUGE_MAX_HSTATE];
79529
79530 static int can_do_hugetlb_shm(void)
79531 {
79532 diff --git a/fs/inode.c b/fs/inode.c
79533 index d30640f..9d909a7 100644
79534 --- a/fs/inode.c
79535 +++ b/fs/inode.c
79536 @@ -832,19 +832,19 @@ unsigned int get_next_ino(void)
79537 unsigned int *p = &get_cpu_var(last_ino);
79538 unsigned int res = *p;
79539
79540 +start:
79541 +
79542 #ifdef CONFIG_SMP
79543 if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
79544 - static atomic_t shared_last_ino;
79545 - int next = atomic_add_return(LAST_INO_BATCH, &shared_last_ino);
79546 + static atomic_unchecked_t shared_last_ino;
79547 + int next = atomic_add_return_unchecked(LAST_INO_BATCH, &shared_last_ino);
79548
79549 res = next - LAST_INO_BATCH;
79550 }
79551 #endif
79552
79553 - res++;
79554 - /* get_next_ino should not provide a 0 inode number */
79555 - if (unlikely(!res))
79556 - res++;
79557 + if (unlikely(!++res))
79558 + goto start; /* never zero */
79559 *p = res;
79560 put_cpu_var(last_ino);
79561 return res;
79562 diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
79563 index 4a6cf28..d3a29d3 100644
79564 --- a/fs/jffs2/erase.c
79565 +++ b/fs/jffs2/erase.c
79566 @@ -452,7 +452,8 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
79567 struct jffs2_unknown_node marker = {
79568 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
79569 .nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
79570 - .totlen = cpu_to_je32(c->cleanmarker_size)
79571 + .totlen = cpu_to_je32(c->cleanmarker_size),
79572 + .hdr_crc = cpu_to_je32(0)
79573 };
79574
79575 jffs2_prealloc_raw_node_refs(c, jeb, 1);
79576 diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
79577 index 09ed551..45684f8 100644
79578 --- a/fs/jffs2/wbuf.c
79579 +++ b/fs/jffs2/wbuf.c
79580 @@ -1023,7 +1023,8 @@ static const struct jffs2_unknown_node oob_cleanmarker =
79581 {
79582 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
79583 .nodetype = constant_cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
79584 - .totlen = constant_cpu_to_je32(8)
79585 + .totlen = constant_cpu_to_je32(8),
79586 + .hdr_crc = constant_cpu_to_je32(0)
79587 };
79588
79589 /*
79590 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
79591 index 4cd9798..8dfe86a 100644
79592 --- a/fs/jfs/super.c
79593 +++ b/fs/jfs/super.c
79594 @@ -901,7 +901,7 @@ static int __init init_jfs_fs(void)
79595
79596 jfs_inode_cachep =
79597 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
79598 - SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
79599 + SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD|SLAB_USERCOPY,
79600 init_once);
79601 if (jfs_inode_cachep == NULL)
79602 return -ENOMEM;
79603 diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
79604 index 2d48d28..82eddad 100644
79605 --- a/fs/kernfs/dir.c
79606 +++ b/fs/kernfs/dir.c
79607 @@ -182,7 +182,7 @@ struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn)
79608 *
79609 * Returns 31 bit hash of ns + name (so it fits in an off_t )
79610 */
79611 -static unsigned int kernfs_name_hash(const char *name, const void *ns)
79612 +static unsigned int kernfs_name_hash(const unsigned char *name, const void *ns)
79613 {
79614 unsigned long hash = init_name_hash();
79615 unsigned int len = strlen(name);
79616 @@ -873,6 +873,12 @@ static int kernfs_iop_mkdir(struct inode *dir, struct dentry *dentry,
79617 ret = scops->mkdir(parent, dentry->d_name.name, mode);
79618
79619 kernfs_put_active(parent);
79620 +
79621 + if (!ret) {
79622 + struct dentry *dentry_ret = kernfs_iop_lookup(dir, dentry, 0);
79623 + ret = PTR_ERR_OR_ZERO(dentry_ret);
79624 + }
79625 +
79626 return ret;
79627 }
79628
79629 diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
79630 index 7247252..c73808e 100644
79631 --- a/fs/kernfs/file.c
79632 +++ b/fs/kernfs/file.c
79633 @@ -34,7 +34,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
79634
79635 struct kernfs_open_node {
79636 atomic_t refcnt;
79637 - atomic_t event;
79638 + atomic_unchecked_t event;
79639 wait_queue_head_t poll;
79640 struct list_head files; /* goes through kernfs_open_file.list */
79641 };
79642 @@ -163,7 +163,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
79643 {
79644 struct kernfs_open_file *of = sf->private;
79645
79646 - of->event = atomic_read(&of->kn->attr.open->event);
79647 + of->event = atomic_read_unchecked(&of->kn->attr.open->event);
79648
79649 return of->kn->attr.ops->seq_show(sf, v);
79650 }
79651 @@ -207,7 +207,7 @@ static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of,
79652 goto out_free;
79653 }
79654
79655 - of->event = atomic_read(&of->kn->attr.open->event);
79656 + of->event = atomic_read_unchecked(&of->kn->attr.open->event);
79657 ops = kernfs_ops(of->kn);
79658 if (ops->read)
79659 len = ops->read(of, buf, len, *ppos);
79660 @@ -272,7 +272,7 @@ static ssize_t kernfs_fop_write(struct file *file, const char __user *user_buf,
79661 {
79662 struct kernfs_open_file *of = kernfs_of(file);
79663 const struct kernfs_ops *ops;
79664 - size_t len;
79665 + ssize_t len;
79666 char *buf;
79667
79668 if (of->atomic_write_len) {
79669 @@ -385,12 +385,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
79670 return ret;
79671 }
79672
79673 -static int kernfs_vma_access(struct vm_area_struct *vma, unsigned long addr,
79674 - void *buf, int len, int write)
79675 +static ssize_t kernfs_vma_access(struct vm_area_struct *vma, unsigned long addr,
79676 + void *buf, size_t len, int write)
79677 {
79678 struct file *file = vma->vm_file;
79679 struct kernfs_open_file *of = kernfs_of(file);
79680 - int ret;
79681 + ssize_t ret;
79682
79683 if (!of->vm_ops)
79684 return -EINVAL;
79685 @@ -569,7 +569,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
79686 return -ENOMEM;
79687
79688 atomic_set(&new_on->refcnt, 0);
79689 - atomic_set(&new_on->event, 1);
79690 + atomic_set_unchecked(&new_on->event, 1);
79691 init_waitqueue_head(&new_on->poll);
79692 INIT_LIST_HEAD(&new_on->files);
79693 goto retry;
79694 @@ -792,7 +792,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
79695
79696 kernfs_put_active(kn);
79697
79698 - if (of->event != atomic_read(&on->event))
79699 + if (of->event != atomic_read_unchecked(&on->event))
79700 goto trigger;
79701
79702 return DEFAULT_POLLMASK;
79703 @@ -823,7 +823,7 @@ repeat:
79704
79705 on = kn->attr.open;
79706 if (on) {
79707 - atomic_inc(&on->event);
79708 + atomic_inc_unchecked(&on->event);
79709 wake_up_interruptible(&on->poll);
79710 }
79711
79712 diff --git a/fs/libfs.c b/fs/libfs.c
79713 index c7cbfb0..fc3636d4 100644
79714 --- a/fs/libfs.c
79715 +++ b/fs/libfs.c
79716 @@ -155,6 +155,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
79717
79718 for (p = q->next; p != &dentry->d_subdirs; p = p->next) {
79719 struct dentry *next = list_entry(p, struct dentry, d_child);
79720 + char d_name[sizeof(next->d_iname)];
79721 + const unsigned char *name;
79722 +
79723 spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
79724 if (!simple_positive(next)) {
79725 spin_unlock(&next->d_lock);
79726 @@ -163,7 +166,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
79727
79728 spin_unlock(&next->d_lock);
79729 spin_unlock(&dentry->d_lock);
79730 - if (!dir_emit(ctx, next->d_name.name, next->d_name.len,
79731 + name = next->d_name.name;
79732 + if (name == next->d_iname) {
79733 + memcpy(d_name, name, next->d_name.len);
79734 + name = d_name;
79735 + }
79736 + if (!dir_emit(ctx, name, next->d_name.len,
79737 d_inode(next)->i_ino, dt_type(d_inode(next))))
79738 return 0;
79739 spin_lock(&dentry->d_lock);
79740 diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c
79741 index acd3947..1f896e2 100644
79742 --- a/fs/lockd/clntproc.c
79743 +++ b/fs/lockd/clntproc.c
79744 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt_cancel_ops;
79745 /*
79746 * Cookie counter for NLM requests
79747 */
79748 -static atomic_t nlm_cookie = ATOMIC_INIT(0x1234);
79749 +static atomic_unchecked_t nlm_cookie = ATOMIC_INIT(0x1234);
79750
79751 void nlmclnt_next_cookie(struct nlm_cookie *c)
79752 {
79753 - u32 cookie = atomic_inc_return(&nlm_cookie);
79754 + u32 cookie = atomic_inc_return_unchecked(&nlm_cookie);
79755
79756 memcpy(c->data, &cookie, 4);
79757 c->len=4;
79758 diff --git a/fs/mount.h b/fs/mount.h
79759 index 14db05d..687f6d8 100644
79760 --- a/fs/mount.h
79761 +++ b/fs/mount.h
79762 @@ -13,7 +13,7 @@ struct mnt_namespace {
79763 u64 seq; /* Sequence number to prevent loops */
79764 wait_queue_head_t poll;
79765 u64 event;
79766 -};
79767 +} __randomize_layout;
79768
79769 struct mnt_pcp {
79770 int mnt_count;
79771 @@ -65,7 +65,7 @@ struct mount {
79772 struct hlist_head mnt_pins;
79773 struct fs_pin mnt_umount;
79774 struct dentry *mnt_ex_mountpoint;
79775 -};
79776 +} __randomize_layout;
79777
79778 #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
79779
79780 diff --git a/fs/namei.c b/fs/namei.c
79781 index 1c2105e..79d9ccb 100644
79782 --- a/fs/namei.c
79783 +++ b/fs/namei.c
79784 @@ -336,17 +336,32 @@ int generic_permission(struct inode *inode, int mask)
79785 if (ret != -EACCES)
79786 return ret;
79787
79788 +#ifdef CONFIG_GRKERNSEC
79789 + /* we'll block if we have to log due to a denied capability use */
79790 + if (mask & MAY_NOT_BLOCK)
79791 + return -ECHILD;
79792 +#endif
79793 +
79794 if (S_ISDIR(inode->i_mode)) {
79795 /* DACs are overridable for directories */
79796 - if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
79797 - return 0;
79798 if (!(mask & MAY_WRITE))
79799 - if (capable_wrt_inode_uidgid(inode,
79800 - CAP_DAC_READ_SEARCH))
79801 + if (capable_wrt_inode_uidgid_nolog(inode, CAP_DAC_OVERRIDE) ||
79802 + capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
79803 return 0;
79804 + if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
79805 + return 0;
79806 return -EACCES;
79807 }
79808 /*
79809 + * Searching includes executable on directories, else just read.
79810 + */
79811 + mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
79812 + if (mask == MAY_READ)
79813 + if (capable_wrt_inode_uidgid_nolog(inode, CAP_DAC_OVERRIDE) ||
79814 + capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
79815 + return 0;
79816 +
79817 + /*
79818 * Read/write DACs are always overridable.
79819 * Executable DACs are overridable when there is
79820 * at least one exec bit set.
79821 @@ -355,14 +370,6 @@ int generic_permission(struct inode *inode, int mask)
79822 if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
79823 return 0;
79824
79825 - /*
79826 - * Searching includes executable on directories, else just read.
79827 - */
79828 - mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
79829 - if (mask == MAY_READ)
79830 - if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
79831 - return 0;
79832 -
79833 return -EACCES;
79834 }
79835 EXPORT_SYMBOL(generic_permission);
79836 @@ -514,12 +521,35 @@ struct nameidata {
79837 struct nameidata *saved;
79838 unsigned root_seq;
79839 int dfd;
79840 -};
79841 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79842 + struct path *symlinkown_stack;
79843 + struct path symlinkown_internal[EMBEDDED_LEVELS];
79844 + unsigned symlinkown_depth;
79845 + int symlinkown_enabled;
79846 +#endif
79847 +} __randomize_layout;
79848 +
79849 +static int gr_handle_nameidata_symlinkowner(const struct nameidata *nd, const struct inode *target)
79850 +{
79851 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79852 + int i;
79853 +
79854 + for (i = 0; i < nd->symlinkown_depth; i++) {
79855 + if (gr_handle_symlink_owner(&nd->symlinkown_stack[i], target))
79856 + return -EACCES;
79857 + }
79858 +#endif
79859 + return 0;
79860 +}
79861
79862 static void set_nameidata(struct nameidata *p, int dfd, struct filename *name)
79863 {
79864 struct nameidata *old = current->nameidata;
79865 p->stack = p->internal;
79866 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79867 + p->symlinkown_stack = p->symlinkown_internal;
79868 + p->symlinkown_enabled = -1;
79869 +#endif
79870 p->dfd = dfd;
79871 p->name = name;
79872 p->total_link_count = old ? old->total_link_count : 0;
79873 @@ -538,6 +568,12 @@ static void restore_nameidata(void)
79874 kfree(now->stack);
79875 now->stack = now->internal;
79876 }
79877 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79878 + if (now->symlinkown_stack != now->symlinkown_internal) {
79879 + kfree(now->symlinkown_stack);
79880 + now->symlinkown_stack = now->symlinkown_internal;
79881 + }
79882 +#endif
79883 }
79884
79885 static int __nd_alloc_stack(struct nameidata *nd)
79886 @@ -557,11 +593,36 @@ static int __nd_alloc_stack(struct nameidata *nd)
79887 }
79888 memcpy(p, nd->internal, sizeof(nd->internal));
79889 nd->stack = p;
79890 +
79891 return 0;
79892 }
79893
79894 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79895 +static int nd_alloc_symlinkown_stack(struct nameidata *nd)
79896 +{
79897 + struct path *p;
79898 +
79899 + if (likely(nd->symlinkown_depth != EMBEDDED_LEVELS))
79900 + return 0;
79901 + if (nd->symlinkown_stack != nd->symlinkown_internal)
79902 + return 0;
79903 +
79904 + p = kmalloc(MAXSYMLINKS * sizeof(struct path), GFP_KERNEL);
79905 + if (unlikely(!p))
79906 + return -ENOMEM;
79907 + memcpy(p, nd->symlinkown_internal, sizeof(nd->symlinkown_internal));
79908 + nd->symlinkown_stack = p;
79909 + return 0;
79910 +}
79911 +#endif
79912 +
79913 static inline int nd_alloc_stack(struct nameidata *nd)
79914 {
79915 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79916 + if (nd->flags & LOOKUP_RCU)
79917 + return -ECHILD;
79918 +#endif
79919 +
79920 if (likely(nd->depth != EMBEDDED_LEVELS))
79921 return 0;
79922 if (likely(nd->stack != nd->internal))
79923 @@ -590,6 +651,14 @@ static void terminate_walk(struct nameidata *nd)
79924 path_put(&nd->path);
79925 for (i = 0; i < nd->depth; i++)
79926 path_put(&nd->stack[i].link);
79927 +
79928 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79929 + /* we'll only ever set our values in ref-walk mode */
79930 + for (i = 0; i < nd->symlinkown_depth; i++)
79931 + path_put(&nd->symlinkown_stack[i]);
79932 + nd->symlinkown_depth = 0;
79933 +#endif
79934 +
79935 if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT)) {
79936 path_put(&nd->root);
79937 nd->root.mnt = NULL;
79938 @@ -986,6 +1055,9 @@ const char *get_link(struct nameidata *nd)
79939 if (unlikely(error))
79940 return ERR_PTR(error);
79941
79942 + if (gr_handle_follow_link(dentry, last->link.mnt))
79943 + return ERR_PTR(-EACCES);
79944 +
79945 nd->last_type = LAST_BIND;
79946 res = inode->i_link;
79947 if (!res) {
79948 @@ -1665,6 +1737,23 @@ static int pick_link(struct nameidata *nd, struct path *link,
79949 }
79950 }
79951
79952 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79953 + if (unlikely(nd->symlinkown_enabled == -1))
79954 + nd->symlinkown_enabled = gr_get_symlinkown_enabled();
79955 + if (nd->symlinkown_enabled && gr_is_global_nonroot(inode->i_uid)) {
79956 + struct path *symlinkownlast;
79957 + error = nd_alloc_symlinkown_stack(nd);
79958 + if (unlikely(error)) {
79959 + path_put(link);
79960 + return error;
79961 + }
79962 + symlinkownlast = nd->symlinkown_stack + nd->symlinkown_depth++;
79963 + symlinkownlast->dentry = link->dentry;
79964 + symlinkownlast->mnt = link->mnt;
79965 + path_get(symlinkownlast);
79966 + }
79967 +#endif
79968 +
79969 last = nd->stack + nd->depth++;
79970 last->link = *link;
79971 last->cookie = NULL;
79972 @@ -1804,7 +1893,7 @@ EXPORT_SYMBOL(full_name_hash);
79973 static inline u64 hash_name(const char *name)
79974 {
79975 unsigned long a, b, adata, bdata, mask, hash, len;
79976 - const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
79977 + static const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
79978
79979 hash = a = 0;
79980 len = -sizeof(unsigned long);
79981 @@ -1973,6 +2062,9 @@ static const char *path_init(struct nameidata *nd, unsigned flags)
79982 nd->flags = flags | LOOKUP_JUMPED | LOOKUP_PARENT;
79983 nd->depth = 0;
79984 nd->total_link_count = 0;
79985 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
79986 + nd->symlinkown_depth = 0;
79987 +#endif
79988 if (flags & LOOKUP_ROOT) {
79989 struct dentry *root = nd->root.dentry;
79990 struct inode *inode = root->d_inode;
79991 @@ -2110,6 +2202,11 @@ static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path
79992 if (!err)
79993 err = complete_walk(nd);
79994
79995 + if (!err && !(nd->flags & LOOKUP_PARENT)) {
79996 + if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt))
79997 + err = -ENOENT;
79998 + }
79999 +
80000 if (!err && nd->flags & LOOKUP_DIRECTORY)
80001 if (!d_can_lookup(nd->path.dentry))
80002 err = -ENOTDIR;
80003 @@ -2158,6 +2255,10 @@ static int path_parentat(struct nameidata *nd, unsigned flags,
80004 err = link_path_walk(s, nd);
80005 if (!err)
80006 err = complete_walk(nd);
80007 +
80008 + if (!err && gr_handle_nameidata_symlinkowner(nd, nd->inode))
80009 + err = -EACCES;
80010 +
80011 if (!err) {
80012 *parent = nd->path;
80013 nd->path.mnt = NULL;
80014 @@ -2689,6 +2790,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
80015 if (flag & O_NOATIME && !inode_owner_or_capable(inode))
80016 return -EPERM;
80017
80018 + if (gr_handle_rofs_blockwrite(dentry, path->mnt, acc_mode))
80019 + return -EPERM;
80020 + if (gr_handle_rawio(inode))
80021 + return -EPERM;
80022 + if (!gr_acl_handle_open(dentry, path->mnt, acc_mode))
80023 + return -EACCES;
80024 +
80025 return 0;
80026 }
80027
80028 @@ -2955,6 +3063,18 @@ static int lookup_open(struct nameidata *nd, struct path *path,
80029 /* Negative dentry, just create the file */
80030 if (!dentry->d_inode && (op->open_flag & O_CREAT)) {
80031 umode_t mode = op->mode;
80032 +
80033 +
80034 + if (gr_handle_nameidata_symlinkowner(nd, dir_inode)) {
80035 + error = -EACCES;
80036 + goto out_dput;
80037 + }
80038 +
80039 + if (!gr_acl_handle_creat(dentry, dir, nd->path.mnt, op->open_flag, op->acc_mode, mode)) {
80040 + error = -EACCES;
80041 + goto out_dput;
80042 + }
80043 +
80044 if (!IS_POSIXACL(dir->d_inode))
80045 mode &= ~current_umask();
80046 /*
80047 @@ -2976,6 +3096,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
80048 nd->flags & LOOKUP_EXCL);
80049 if (error)
80050 goto out_dput;
80051 + else
80052 + gr_handle_create(dentry, nd->path.mnt);
80053 }
80054 out_no_open:
80055 path->dentry = dentry;
80056 @@ -3039,6 +3161,9 @@ static int do_last(struct nameidata *nd,
80057 if (error)
80058 return error;
80059
80060 + if (!gr_acl_handle_hidden_file(dir, nd->path.mnt))
80061 + return -ENOENT;
80062 +
80063 audit_inode(nd->name, dir, LOOKUP_PARENT);
80064 /* trailing slashes? */
80065 if (unlikely(nd->last.name[nd->last.len]))
80066 @@ -3081,11 +3206,24 @@ retry_lookup:
80067 goto finish_open_created;
80068 }
80069
80070 + if (!gr_acl_handle_hidden_file(path.dentry, nd->path.mnt)) {
80071 + path_to_nameidata(&path, nd);
80072 + return -ENOENT;
80073 + }
80074 +
80075 /*
80076 * create/update audit record if it already exists.
80077 */
80078 - if (d_is_positive(path.dentry))
80079 + if (d_is_positive(path.dentry)) {
80080 + /* only check if O_CREAT is specified, all other checks need to go
80081 + into may_open */
80082 + if (gr_handle_fifo(path.dentry, path.mnt, dir, open_flag, acc_mode)) {
80083 + path_to_nameidata(&path, nd);
80084 + return -EACCES;
80085 + }
80086 +
80087 audit_inode(nd->name, path.dentry, 0);
80088 + }
80089
80090 /*
80091 * If atomic_open() acquired write access it is dropped now due to
80092 @@ -3121,6 +3259,11 @@ finish_lookup:
80093 if (unlikely(error))
80094 return error;
80095
80096 + if (gr_handle_nameidata_symlinkowner(nd, inode)) {
80097 + path_to_nameidata(&path, nd);
80098 + return -EACCES;
80099 + }
80100 +
80101 if (unlikely(d_is_symlink(path.dentry)) && !(open_flag & O_PATH)) {
80102 path_to_nameidata(&path, nd);
80103 return -ELOOP;
80104 @@ -3143,6 +3286,12 @@ finish_open:
80105 path_put(&save_parent);
80106 return error;
80107 }
80108 +
80109 + if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) {
80110 + error = -ENOENT;
80111 + goto out;
80112 + }
80113 +
80114 audit_inode(nd->name, nd->path.dentry, 0);
80115 error = -EISDIR;
80116 if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry))
80117 @@ -3409,9 +3558,11 @@ static struct dentry *filename_create(int dfd, struct filename *name,
80118 goto unlock;
80119
80120 error = -EEXIST;
80121 - if (d_is_positive(dentry))
80122 + if (d_is_positive(dentry)) {
80123 + if (!gr_acl_handle_hidden_file(dentry, path->mnt))
80124 + error = -ENOENT;
80125 goto fail;
80126 -
80127 + }
80128 /*
80129 * Special case - lookup gave negative, but... we had foo/bar/
80130 * From the vfs_mknod() POV we just have a negative dentry -
80131 @@ -3465,6 +3616,20 @@ inline struct dentry *user_path_create(int dfd, const char __user *pathname,
80132 }
80133 EXPORT_SYMBOL(user_path_create);
80134
80135 +static struct dentry *user_path_create_with_name(int dfd, const char __user *pathname, struct path *path, struct filename **to, unsigned int lookup_flags)
80136 +{
80137 + struct filename *tmp = getname(pathname);
80138 + struct dentry *res;
80139 + if (IS_ERR(tmp))
80140 + return ERR_CAST(tmp);
80141 + res = kern_path_create(dfd, tmp->name, path, lookup_flags);
80142 + if (IS_ERR(res))
80143 + putname(tmp);
80144 + else
80145 + *to = tmp;
80146 + return res;
80147 +}
80148 +
80149 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
80150 {
80151 int error = may_create(dir, dentry);
80152 @@ -3528,6 +3693,17 @@ retry:
80153
80154 if (!IS_POSIXACL(path.dentry->d_inode))
80155 mode &= ~current_umask();
80156 +
80157 + if (gr_handle_chroot_mknod(dentry, path.mnt, mode)) {
80158 + error = -EPERM;
80159 + goto out;
80160 + }
80161 +
80162 + if (!gr_acl_handle_mknod(dentry, path.dentry, path.mnt, mode)) {
80163 + error = -EACCES;
80164 + goto out;
80165 + }
80166 +
80167 error = security_path_mknod(&path, dentry, mode, dev);
80168 if (error)
80169 goto out;
80170 @@ -3543,6 +3719,8 @@ retry:
80171 error = vfs_mknod(path.dentry->d_inode,dentry,mode,0);
80172 break;
80173 }
80174 + if (!error)
80175 + gr_handle_create(dentry, path.mnt);
80176 out:
80177 done_path_create(&path, dentry);
80178 if (retry_estale(error, lookup_flags)) {
80179 @@ -3597,9 +3775,16 @@ retry:
80180
80181 if (!IS_POSIXACL(path.dentry->d_inode))
80182 mode &= ~current_umask();
80183 + if (!gr_acl_handle_mkdir(dentry, path.dentry, path.mnt)) {
80184 + error = -EACCES;
80185 + goto out;
80186 + }
80187 error = security_path_mkdir(&path, dentry, mode);
80188 if (!error)
80189 error = vfs_mkdir(path.dentry->d_inode, dentry, mode);
80190 + if (!error)
80191 + gr_handle_create(dentry, path.mnt);
80192 +out:
80193 done_path_create(&path, dentry);
80194 if (retry_estale(error, lookup_flags)) {
80195 lookup_flags |= LOOKUP_REVAL;
80196 @@ -3632,7 +3817,7 @@ void dentry_unhash(struct dentry *dentry)
80197 {
80198 shrink_dcache_parent(dentry);
80199 spin_lock(&dentry->d_lock);
80200 - if (dentry->d_lockref.count == 1)
80201 + if (__lockref_read(&dentry->d_lockref) == 1)
80202 __d_drop(dentry);
80203 spin_unlock(&dentry->d_lock);
80204 }
80205 @@ -3685,6 +3870,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
80206 struct path path;
80207 struct qstr last;
80208 int type;
80209 + u64 saved_ino = 0;
80210 + dev_t saved_dev = 0;
80211 unsigned int lookup_flags = 0;
80212 retry:
80213 name = user_path_parent(dfd, pathname,
80214 @@ -3717,10 +3904,20 @@ retry:
80215 error = -ENOENT;
80216 goto exit3;
80217 }
80218 + saved_ino = gr_get_ino_from_dentry(dentry);
80219 + saved_dev = gr_get_dev_from_dentry(dentry);
80220 +
80221 + if (!gr_acl_handle_rmdir(dentry, path.mnt)) {
80222 + error = -EACCES;
80223 + goto exit3;
80224 + }
80225 +
80226 error = security_path_rmdir(&path, dentry);
80227 if (error)
80228 goto exit3;
80229 error = vfs_rmdir(path.dentry->d_inode, dentry);
80230 + if (!error && (saved_dev || saved_ino))
80231 + gr_handle_delete(saved_ino, saved_dev);
80232 exit3:
80233 dput(dentry);
80234 exit2:
80235 @@ -3815,6 +4012,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
80236 int type;
80237 struct inode *inode = NULL;
80238 struct inode *delegated_inode = NULL;
80239 + u64 saved_ino = 0;
80240 + dev_t saved_dev = 0;
80241 unsigned int lookup_flags = 0;
80242 retry:
80243 name = user_path_parent(dfd, pathname,
80244 @@ -3841,10 +4040,21 @@ retry_deleg:
80245 if (d_is_negative(dentry))
80246 goto slashes;
80247 ihold(inode);
80248 + if (inode->i_nlink <= 1) {
80249 + saved_ino = gr_get_ino_from_dentry(dentry);
80250 + saved_dev = gr_get_dev_from_dentry(dentry);
80251 + }
80252 + if (!gr_acl_handle_unlink(dentry, path.mnt)) {
80253 + error = -EACCES;
80254 + goto exit2;
80255 + }
80256 +
80257 error = security_path_unlink(&path, dentry);
80258 if (error)
80259 goto exit2;
80260 error = vfs_unlink(path.dentry->d_inode, dentry, &delegated_inode);
80261 + if (!error && (saved_ino || saved_dev))
80262 + gr_handle_delete(saved_ino, saved_dev);
80263 exit2:
80264 dput(dentry);
80265 }
80266 @@ -3933,9 +4143,17 @@ retry:
80267 if (IS_ERR(dentry))
80268 goto out_putname;
80269
80270 + if (!gr_acl_handle_symlink(dentry, path.dentry, path.mnt, from)) {
80271 + error = -EACCES;
80272 + goto out;
80273 + }
80274 +
80275 error = security_path_symlink(&path, dentry, from->name);
80276 if (!error)
80277 error = vfs_symlink(path.dentry->d_inode, dentry, from->name);
80278 + if (!error)
80279 + gr_handle_create(dentry, path.mnt);
80280 +out:
80281 done_path_create(&path, dentry);
80282 if (retry_estale(error, lookup_flags)) {
80283 lookup_flags |= LOOKUP_REVAL;
80284 @@ -4039,6 +4257,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
80285 struct dentry *new_dentry;
80286 struct path old_path, new_path;
80287 struct inode *delegated_inode = NULL;
80288 + struct filename *to = NULL;
80289 int how = 0;
80290 int error;
80291
80292 @@ -4062,7 +4281,7 @@ retry:
80293 if (error)
80294 return error;
80295
80296 - new_dentry = user_path_create(newdfd, newname, &new_path,
80297 + new_dentry = user_path_create_with_name(newdfd, newname, &new_path, &to,
80298 (how & LOOKUP_REVAL));
80299 error = PTR_ERR(new_dentry);
80300 if (IS_ERR(new_dentry))
80301 @@ -4074,11 +4293,26 @@ retry:
80302 error = may_linkat(&old_path);
80303 if (unlikely(error))
80304 goto out_dput;
80305 +
80306 + if (gr_handle_hardlink(old_path.dentry, old_path.mnt, to)) {
80307 + error = -EACCES;
80308 + goto out_dput;
80309 + }
80310 +
80311 + if (!gr_acl_handle_link(new_dentry, new_path.dentry, new_path.mnt,
80312 + old_path.dentry, old_path.mnt, to)) {
80313 + error = -EACCES;
80314 + goto out_dput;
80315 + }
80316 +
80317 error = security_path_link(old_path.dentry, &new_path, new_dentry);
80318 if (error)
80319 goto out_dput;
80320 error = vfs_link(old_path.dentry, new_path.dentry->d_inode, new_dentry, &delegated_inode);
80321 + if (!error)
80322 + gr_handle_create(new_dentry, new_path.mnt);
80323 out_dput:
80324 + putname(to);
80325 done_path_create(&new_path, new_dentry);
80326 if (delegated_inode) {
80327 error = break_deleg_wait(&delegated_inode);
80328 @@ -4393,6 +4627,20 @@ retry_deleg:
80329 if (new_dentry == trap)
80330 goto exit5;
80331
80332 + if (gr_bad_chroot_rename(old_dentry, old_path.mnt, new_dentry, new_path.mnt)) {
80333 + /* use EXDEV error to cause 'mv' to switch to an alternative
80334 + * method for usability
80335 + */
80336 + error = -EXDEV;
80337 + goto exit5;
80338 + }
80339 +
80340 + error = gr_acl_handle_rename(new_dentry, new_path.dentry, new_path.mnt,
80341 + old_dentry, d_backing_inode(old_path.dentry), old_path.mnt,
80342 + to, flags);
80343 + if (error)
80344 + goto exit5;
80345 +
80346 error = security_path_rename(&old_path, old_dentry,
80347 &new_path, new_dentry, flags);
80348 if (error)
80349 @@ -4400,6 +4648,9 @@ retry_deleg:
80350 error = vfs_rename(old_path.dentry->d_inode, old_dentry,
80351 new_path.dentry->d_inode, new_dentry,
80352 &delegated_inode, flags);
80353 + if (!error)
80354 + gr_handle_rename(d_backing_inode(old_path.dentry), d_backing_inode(new_path.dentry), old_dentry,
80355 + new_dentry, old_path.mnt, d_is_positive(new_dentry) ? 1 : 0, flags);
80356 exit5:
80357 dput(new_dentry);
80358 exit4:
80359 @@ -4456,14 +4707,24 @@ EXPORT_SYMBOL(vfs_whiteout);
80360
80361 int readlink_copy(char __user *buffer, int buflen, const char *link)
80362 {
80363 + char tmpbuf[64];
80364 + const char *newlink;
80365 int len = PTR_ERR(link);
80366 +
80367 if (IS_ERR(link))
80368 goto out;
80369
80370 len = strlen(link);
80371 if (len > (unsigned) buflen)
80372 len = buflen;
80373 - if (copy_to_user(buffer, link, len))
80374 +
80375 + if (len < sizeof(tmpbuf)) {
80376 + memcpy(tmpbuf, link, len);
80377 + newlink = tmpbuf;
80378 + } else
80379 + newlink = link;
80380 +
80381 + if (copy_to_user(buffer, newlink, len))
80382 len = -EFAULT;
80383 out:
80384 return len;
80385 diff --git a/fs/namespace.c b/fs/namespace.c
80386 index 2b8aa15..3230081 100644
80387 --- a/fs/namespace.c
80388 +++ b/fs/namespace.c
80389 @@ -1516,6 +1516,9 @@ static int do_umount(struct mount *mnt, int flags)
80390 if (!(sb->s_flags & MS_RDONLY))
80391 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
80392 up_write(&sb->s_umount);
80393 +
80394 + gr_log_remount(mnt->mnt_devname, retval);
80395 +
80396 return retval;
80397 }
80398
80399 @@ -1538,6 +1541,9 @@ static int do_umount(struct mount *mnt, int flags)
80400 }
80401 unlock_mount_hash();
80402 namespace_unlock();
80403 +
80404 + gr_log_unmount(mnt->mnt_devname, retval);
80405 +
80406 return retval;
80407 }
80408
80409 @@ -1592,7 +1598,7 @@ static inline bool may_mount(void)
80410 * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
80411 */
80412
80413 -SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
80414 +SYSCALL_DEFINE2(umount, const char __user *, name, int, flags)
80415 {
80416 struct path path;
80417 struct mount *mnt;
80418 @@ -1637,7 +1643,7 @@ out:
80419 /*
80420 * The 2.0 compatible umount. No flags.
80421 */
80422 -SYSCALL_DEFINE1(oldumount, char __user *, name)
80423 +SYSCALL_DEFINE1(oldumount, const char __user *, name)
80424 {
80425 return sys_umount(name, 0);
80426 }
80427 @@ -2712,6 +2718,16 @@ long do_mount(const char *dev_name, const char __user *dir_name,
80428 MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
80429 MS_STRICTATIME);
80430
80431 + if (gr_handle_rofs_mount(path.dentry, path.mnt, mnt_flags)) {
80432 + retval = -EPERM;
80433 + goto dput_out;
80434 + }
80435 +
80436 + if (gr_handle_chroot_mount(path.dentry, path.mnt, dev_name)) {
80437 + retval = -EPERM;
80438 + goto dput_out;
80439 + }
80440 +
80441 if (flags & MS_REMOUNT)
80442 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
80443 data_page);
80444 @@ -2725,7 +2741,10 @@ long do_mount(const char *dev_name, const char __user *dir_name,
80445 retval = do_new_mount(&path, type_page, flags, mnt_flags,
80446 dev_name, data_page);
80447 dput_out:
80448 + gr_log_mount(dev_name, &path, retval);
80449 +
80450 path_put(&path);
80451 +
80452 return retval;
80453 }
80454
80455 @@ -2743,7 +2762,7 @@ static void free_mnt_ns(struct mnt_namespace *ns)
80456 * number incrementing at 10Ghz will take 12,427 years to wrap which
80457 * is effectively never, so we can ignore the possibility.
80458 */
80459 -static atomic64_t mnt_ns_seq = ATOMIC64_INIT(1);
80460 +static atomic64_unchecked_t mnt_ns_seq = ATOMIC64_INIT(1);
80461
80462 static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
80463 {
80464 @@ -2759,7 +2778,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
80465 return ERR_PTR(ret);
80466 }
80467 new_ns->ns.ops = &mntns_operations;
80468 - new_ns->seq = atomic64_add_return(1, &mnt_ns_seq);
80469 + new_ns->seq = atomic64_add_return_unchecked(1, &mnt_ns_seq);
80470 atomic_set(&new_ns->count, 1);
80471 new_ns->root = NULL;
80472 INIT_LIST_HEAD(&new_ns->list);
80473 @@ -2769,7 +2788,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
80474 return new_ns;
80475 }
80476
80477 -struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
80478 +__latent_entropy struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
80479 struct user_namespace *user_ns, struct fs_struct *new_fs)
80480 {
80481 struct mnt_namespace *new_ns;
80482 @@ -2890,8 +2909,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name)
80483 }
80484 EXPORT_SYMBOL(mount_subtree);
80485
80486 -SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
80487 - char __user *, type, unsigned long, flags, void __user *, data)
80488 +SYSCALL_DEFINE5(mount, const char __user *, dev_name, const char __user *, dir_name,
80489 + const char __user *, type, unsigned long, flags, void __user *, data)
80490 {
80491 int ret;
80492 char *kernel_type;
80493 @@ -2997,6 +3016,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
80494 if (error)
80495 goto out2;
80496
80497 + if (gr_handle_chroot_pivot()) {
80498 + error = -EPERM;
80499 + goto out2;
80500 + }
80501 +
80502 get_fs_root(current->fs, &root);
80503 old_mp = lock_mount(&old);
80504 error = PTR_ERR(old_mp);
80505 @@ -3298,7 +3322,7 @@ static int mntns_install(struct nsproxy *nsproxy, struct ns_common *ns)
80506 !ns_capable(current_user_ns(), CAP_SYS_ADMIN))
80507 return -EPERM;
80508
80509 - if (fs->users != 1)
80510 + if (atomic_read(&fs->users) != 1)
80511 return -EINVAL;
80512
80513 get_mnt_ns(mnt_ns);
80514 diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
80515 index 6b1697a..6d5787c 100644
80516 --- a/fs/nfs/callback_xdr.c
80517 +++ b/fs/nfs/callback_xdr.c
80518 @@ -51,7 +51,7 @@ struct callback_op {
80519 callback_decode_arg_t decode_args;
80520 callback_encode_res_t encode_res;
80521 long res_maxsize;
80522 -};
80523 +} __do_const;
80524
80525 static struct callback_op callback_ops[];
80526
80527 diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
80528 index 4afbe13..a6a26ce 100644
80529 --- a/fs/nfs/inode.c
80530 +++ b/fs/nfs/inode.c
80531 @@ -1273,16 +1273,16 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
80532 return 0;
80533 }
80534
80535 -static atomic_long_t nfs_attr_generation_counter;
80536 +static atomic_long_unchecked_t nfs_attr_generation_counter;
80537
80538 static unsigned long nfs_read_attr_generation_counter(void)
80539 {
80540 - return atomic_long_read(&nfs_attr_generation_counter);
80541 + return atomic_long_read_unchecked(&nfs_attr_generation_counter);
80542 }
80543
80544 unsigned long nfs_inc_attr_generation_counter(void)
80545 {
80546 - return atomic_long_inc_return(&nfs_attr_generation_counter);
80547 + return atomic_long_inc_return_unchecked(&nfs_attr_generation_counter);
80548 }
80549 EXPORT_SYMBOL_GPL(nfs_inc_attr_generation_counter);
80550
80551 diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
80552 index 90cfda7..e4b50df 100644
80553 --- a/fs/nfsd/nfs4proc.c
80554 +++ b/fs/nfsd/nfs4proc.c
80555 @@ -1487,7 +1487,7 @@ struct nfsd4_operation {
80556 nfsd4op_rsize op_rsize_bop;
80557 stateid_getter op_get_currentstateid;
80558 stateid_setter op_set_currentstateid;
80559 -};
80560 +} __do_const;
80561
80562 static struct nfsd4_operation nfsd4_ops[];
80563
80564 diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
80565 index b81f725..8e36601 100644
80566 --- a/fs/nfsd/nfs4xdr.c
80567 +++ b/fs/nfsd/nfs4xdr.c
80568 @@ -1704,7 +1704,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
80569
80570 typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
80571
80572 -static nfsd4_dec nfsd4_dec_ops[] = {
80573 +static const nfsd4_dec nfsd4_dec_ops[] = {
80574 [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access,
80575 [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close,
80576 [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit,
80577 diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
80578 index 46ec934..f384e41 100644
80579 --- a/fs/nfsd/nfscache.c
80580 +++ b/fs/nfsd/nfscache.c
80581 @@ -541,7 +541,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
80582 struct kvec *resv = &rqstp->rq_res.head[0], *cachv;
80583 u32 hash;
80584 struct nfsd_drc_bucket *b;
80585 - int len;
80586 + long len;
80587 size_t bufsize = 0;
80588
80589 if (!rp)
80590 @@ -550,11 +550,14 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
80591 hash = nfsd_cache_hash(rp->c_xid);
80592 b = &drc_hashtbl[hash];
80593
80594 - len = resv->iov_len - ((char*)statp - (char*)resv->iov_base);
80595 - len >>= 2;
80596 + if (statp) {
80597 + len = (char*)statp - (char*)resv->iov_base;
80598 + len = resv->iov_len - len;
80599 + len >>= 2;
80600 + }
80601
80602 /* Don't cache excessive amounts of data and XDR failures */
80603 - if (!statp || len > (256 >> 2)) {
80604 + if (!statp || len > (256 >> 2) || len < 0) {
80605 nfsd_reply_cache_free(b, rp);
80606 return;
80607 }
80608 @@ -562,7 +565,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
80609 switch (cachetype) {
80610 case RC_REPLSTAT:
80611 if (len != 1)
80612 - printk("nfsd: RC_REPLSTAT/reply len %d!\n",len);
80613 + printk("nfsd: RC_REPLSTAT/reply len %ld!\n",len);
80614 rp->c_replstat = *statp;
80615 break;
80616 case RC_REPLBUFF:
80617 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
80618 index b5e077a..50cf549 100644
80619 --- a/fs/nfsd/vfs.c
80620 +++ b/fs/nfsd/vfs.c
80621 @@ -855,7 +855,7 @@ __be32 nfsd_readv(struct file *file, loff_t offset, struct kvec *vec, int vlen,
80622
80623 oldfs = get_fs();
80624 set_fs(KERNEL_DS);
80625 - host_err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);
80626 + host_err = vfs_readv(file, (struct iovec __force_user *)vec, vlen, &offset);
80627 set_fs(oldfs);
80628 return nfsd_finish_read(file, count, host_err);
80629 }
80630 @@ -942,7 +942,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
80631
80632 /* Write the data. */
80633 oldfs = get_fs(); set_fs(KERNEL_DS);
80634 - host_err = vfs_writev(file, (struct iovec __user *)vec, vlen, &pos);
80635 + host_err = vfs_writev(file, (struct iovec __force_user *)vec, vlen, &pos);
80636 set_fs(oldfs);
80637 if (host_err < 0)
80638 goto out_nfserr;
80639 @@ -1455,7 +1455,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
80640 */
80641
80642 oldfs = get_fs(); set_fs(KERNEL_DS);
80643 - host_err = inode->i_op->readlink(path.dentry, (char __user *)buf, *lenp);
80644 + host_err = inode->i_op->readlink(path.dentry, (char __force_user *)buf, *lenp);
80645 set_fs(oldfs);
80646
80647 if (host_err < 0)
80648 diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
80649 index 52ccd34..7a6b202 100644
80650 --- a/fs/nls/nls_base.c
80651 +++ b/fs/nls/nls_base.c
80652 @@ -234,21 +234,25 @@ EXPORT_SYMBOL(utf16s_to_utf8s);
80653
80654 int __register_nls(struct nls_table *nls, struct module *owner)
80655 {
80656 - struct nls_table ** tmp = &tables;
80657 + struct nls_table *tmp = tables;
80658
80659 if (nls->next)
80660 return -EBUSY;
80661
80662 - nls->owner = owner;
80663 + pax_open_kernel();
80664 + *(void **)&nls->owner = owner;
80665 + pax_close_kernel();
80666 spin_lock(&nls_lock);
80667 - while (*tmp) {
80668 - if (nls == *tmp) {
80669 + while (tmp) {
80670 + if (nls == tmp) {
80671 spin_unlock(&nls_lock);
80672 return -EBUSY;
80673 }
80674 - tmp = &(*tmp)->next;
80675 + tmp = tmp->next;
80676 }
80677 - nls->next = tables;
80678 + pax_open_kernel();
80679 + *(struct nls_table **)&nls->next = tables;
80680 + pax_close_kernel();
80681 tables = nls;
80682 spin_unlock(&nls_lock);
80683 return 0;
80684 @@ -257,12 +261,14 @@ EXPORT_SYMBOL(__register_nls);
80685
80686 int unregister_nls(struct nls_table * nls)
80687 {
80688 - struct nls_table ** tmp = &tables;
80689 + struct nls_table * const * tmp = &tables;
80690
80691 spin_lock(&nls_lock);
80692 while (*tmp) {
80693 if (nls == *tmp) {
80694 - *tmp = nls->next;
80695 + pax_open_kernel();
80696 + *(struct nls_table **)tmp = nls->next;
80697 + pax_close_kernel();
80698 spin_unlock(&nls_lock);
80699 return 0;
80700 }
80701 @@ -272,7 +278,7 @@ int unregister_nls(struct nls_table * nls)
80702 return -EINVAL;
80703 }
80704
80705 -static struct nls_table *find_nls(char *charset)
80706 +static struct nls_table *find_nls(const char *charset)
80707 {
80708 struct nls_table *nls;
80709 spin_lock(&nls_lock);
80710 @@ -288,7 +294,7 @@ static struct nls_table *find_nls(char *charset)
80711 return nls;
80712 }
80713
80714 -struct nls_table *load_nls(char *charset)
80715 +struct nls_table *load_nls(const char *charset)
80716 {
80717 return try_then_request_module(find_nls(charset), "nls_%s", charset);
80718 }
80719 diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
80720 index 162b3f1..6076a7c 100644
80721 --- a/fs/nls/nls_euc-jp.c
80722 +++ b/fs/nls/nls_euc-jp.c
80723 @@ -560,8 +560,10 @@ static int __init init_nls_euc_jp(void)
80724 p_nls = load_nls("cp932");
80725
80726 if (p_nls) {
80727 - table.charset2upper = p_nls->charset2upper;
80728 - table.charset2lower = p_nls->charset2lower;
80729 + pax_open_kernel();
80730 + *(const unsigned char **)&table.charset2upper = p_nls->charset2upper;
80731 + *(const unsigned char **)&table.charset2lower = p_nls->charset2lower;
80732 + pax_close_kernel();
80733 return register_nls(&table);
80734 }
80735
80736 diff --git a/fs/nls/nls_koi8-ru.c b/fs/nls/nls_koi8-ru.c
80737 index a80a741..7b96e1b 100644
80738 --- a/fs/nls/nls_koi8-ru.c
80739 +++ b/fs/nls/nls_koi8-ru.c
80740 @@ -62,8 +62,10 @@ static int __init init_nls_koi8_ru(void)
80741 p_nls = load_nls("koi8-u");
80742
80743 if (p_nls) {
80744 - table.charset2upper = p_nls->charset2upper;
80745 - table.charset2lower = p_nls->charset2lower;
80746 + pax_open_kernel();
80747 + *(const unsigned char **)&table.charset2upper = p_nls->charset2upper;
80748 + *(const unsigned char **)&table.charset2lower = p_nls->charset2lower;
80749 + pax_close_kernel();
80750 return register_nls(&table);
80751 }
80752
80753 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
80754 index cf27550..6c70f29d 100644
80755 --- a/fs/notify/fanotify/fanotify_user.c
80756 +++ b/fs/notify/fanotify/fanotify_user.c
80757 @@ -216,8 +216,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
80758
80759 fd = fanotify_event_metadata.fd;
80760 ret = -EFAULT;
80761 - if (copy_to_user(buf, &fanotify_event_metadata,
80762 - fanotify_event_metadata.event_len))
80763 + if (fanotify_event_metadata.event_len > sizeof fanotify_event_metadata ||
80764 + copy_to_user(buf, &fanotify_event_metadata, fanotify_event_metadata.event_len))
80765 goto out_close_fd;
80766
80767 #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
80768 diff --git a/fs/notify/notification.c b/fs/notify/notification.c
80769 index a95d8e0..a91a5fd 100644
80770 --- a/fs/notify/notification.c
80771 +++ b/fs/notify/notification.c
80772 @@ -48,7 +48,7 @@
80773 #include <linux/fsnotify_backend.h>
80774 #include "fsnotify.h"
80775
80776 -static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0);
80777 +static atomic_unchecked_t fsnotify_sync_cookie = ATOMIC_INIT(0);
80778
80779 /**
80780 * fsnotify_get_cookie - return a unique cookie for use in synchronizing events.
80781 @@ -56,7 +56,7 @@ static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0);
80782 */
80783 u32 fsnotify_get_cookie(void)
80784 {
80785 - return atomic_inc_return(&fsnotify_sync_cookie);
80786 + return atomic_inc_return_unchecked(&fsnotify_sync_cookie);
80787 }
80788 EXPORT_SYMBOL_GPL(fsnotify_get_cookie);
80789
80790 diff --git a/fs/ntfs/dir.c b/fs/ntfs/dir.c
80791 index 9e38daf..5727cae 100644
80792 --- a/fs/ntfs/dir.c
80793 +++ b/fs/ntfs/dir.c
80794 @@ -1310,7 +1310,7 @@ find_next_index_buffer:
80795 ia = (INDEX_ALLOCATION*)(kaddr + (ia_pos & ~PAGE_CACHE_MASK &
80796 ~(s64)(ndir->itype.index.block_size - 1)));
80797 /* Bounds checks. */
80798 - if (unlikely((u8*)ia < kaddr || (u8*)ia > kaddr + PAGE_CACHE_SIZE)) {
80799 + if (unlikely(!kaddr || (u8*)ia < kaddr || (u8*)ia > kaddr + PAGE_CACHE_SIZE)) {
80800 ntfs_error(sb, "Out of bounds check failed. Corrupt directory "
80801 "inode 0x%lx or driver bug.", vdir->i_ino);
80802 goto err_out;
80803 diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
80804 index 9e1e112..241a52a 100644
80805 --- a/fs/ntfs/super.c
80806 +++ b/fs/ntfs/super.c
80807 @@ -688,7 +688,7 @@ static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
80808 if (!silent)
80809 ntfs_error(sb, "Primary boot sector is invalid.");
80810 } else if (!silent)
80811 - ntfs_error(sb, read_err_str, "primary");
80812 + ntfs_error(sb, read_err_str, "%s", "primary");
80813 if (!(NTFS_SB(sb)->on_errors & ON_ERRORS_RECOVER)) {
80814 if (bh_primary)
80815 brelse(bh_primary);
80816 @@ -704,7 +704,7 @@ static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
80817 goto hotfix_primary_boot_sector;
80818 brelse(bh_backup);
80819 } else if (!silent)
80820 - ntfs_error(sb, read_err_str, "backup");
80821 + ntfs_error(sb, read_err_str, "%s", "backup");
80822 /* Try to read NT3.51- backup boot sector. */
80823 if ((bh_backup = sb_bread(sb, nr_blocks >> 1))) {
80824 if (is_boot_sector_ntfs(sb, (NTFS_BOOT_SECTOR*)
80825 @@ -715,7 +715,7 @@ static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
80826 "sector.");
80827 brelse(bh_backup);
80828 } else if (!silent)
80829 - ntfs_error(sb, read_err_str, "backup");
80830 + ntfs_error(sb, read_err_str, "%s", "backup");
80831 /* We failed. Cleanup and return. */
80832 if (bh_primary)
80833 brelse(bh_primary);
80834 diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c
80835 index 857bbbc..3c47d15 100644
80836 --- a/fs/ocfs2/localalloc.c
80837 +++ b/fs/ocfs2/localalloc.c
80838 @@ -1320,7 +1320,7 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb,
80839 goto bail;
80840 }
80841
80842 - atomic_inc(&osb->alloc_stats.moves);
80843 + atomic_inc_unchecked(&osb->alloc_stats.moves);
80844
80845 bail:
80846 if (handle)
80847 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
80848 index 690ddc6..f2d4c4d 100644
80849 --- a/fs/ocfs2/ocfs2.h
80850 +++ b/fs/ocfs2/ocfs2.h
80851 @@ -247,11 +247,11 @@ enum ocfs2_vol_state
80852
80853 struct ocfs2_alloc_stats
80854 {
80855 - atomic_t moves;
80856 - atomic_t local_data;
80857 - atomic_t bitmap_data;
80858 - atomic_t bg_allocs;
80859 - atomic_t bg_extends;
80860 + atomic_unchecked_t moves;
80861 + atomic_unchecked_t local_data;
80862 + atomic_unchecked_t bitmap_data;
80863 + atomic_unchecked_t bg_allocs;
80864 + atomic_unchecked_t bg_extends;
80865 };
80866
80867 enum ocfs2_local_alloc_state
80868 diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
80869 index 4479029..5de740b 100644
80870 --- a/fs/ocfs2/suballoc.c
80871 +++ b/fs/ocfs2/suballoc.c
80872 @@ -867,7 +867,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
80873 mlog_errno(status);
80874 goto bail;
80875 }
80876 - atomic_inc(&osb->alloc_stats.bg_extends);
80877 + atomic_inc_unchecked(&osb->alloc_stats.bg_extends);
80878
80879 /* You should never ask for this much metadata */
80880 BUG_ON(bits_wanted >
80881 @@ -2014,7 +2014,7 @@ int ocfs2_claim_metadata(handle_t *handle,
80882 mlog_errno(status);
80883 goto bail;
80884 }
80885 - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80886 + atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80887
80888 *suballoc_loc = res.sr_bg_blkno;
80889 *suballoc_bit_start = res.sr_bit_offset;
80890 @@ -2180,7 +2180,7 @@ int ocfs2_claim_new_inode_at_loc(handle_t *handle,
80891 trace_ocfs2_claim_new_inode_at_loc((unsigned long long)di_blkno,
80892 res->sr_bits);
80893
80894 - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80895 + atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80896
80897 BUG_ON(res->sr_bits != 1);
80898
80899 @@ -2222,7 +2222,7 @@ int ocfs2_claim_new_inode(handle_t *handle,
80900 mlog_errno(status);
80901 goto bail;
80902 }
80903 - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80904 + atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
80905
80906 BUG_ON(res.sr_bits != 1);
80907
80908 @@ -2326,7 +2326,7 @@ int __ocfs2_claim_clusters(handle_t *handle,
80909 cluster_start,
80910 num_clusters);
80911 if (!status)
80912 - atomic_inc(&osb->alloc_stats.local_data);
80913 + atomic_inc_unchecked(&osb->alloc_stats.local_data);
80914 } else {
80915 if (min_clusters > (osb->bitmap_cpg - 1)) {
80916 /* The only paths asking for contiguousness
80917 @@ -2352,7 +2352,7 @@ int __ocfs2_claim_clusters(handle_t *handle,
80918 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode,
80919 res.sr_bg_blkno,
80920 res.sr_bit_offset);
80921 - atomic_inc(&osb->alloc_stats.bitmap_data);
80922 + atomic_inc_unchecked(&osb->alloc_stats.bitmap_data);
80923 *num_clusters = res.sr_bits;
80924 }
80925 }
80926 diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
80927 index a482e31..81b251d 100644
80928 --- a/fs/ocfs2/super.c
80929 +++ b/fs/ocfs2/super.c
80930 @@ -308,11 +308,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
80931 "%10s => GlobalAllocs: %d LocalAllocs: %d "
80932 "SubAllocs: %d LAWinMoves: %d SAExtends: %d\n",
80933 "Stats",
80934 - atomic_read(&osb->alloc_stats.bitmap_data),
80935 - atomic_read(&osb->alloc_stats.local_data),
80936 - atomic_read(&osb->alloc_stats.bg_allocs),
80937 - atomic_read(&osb->alloc_stats.moves),
80938 - atomic_read(&osb->alloc_stats.bg_extends));
80939 + atomic_read_unchecked(&osb->alloc_stats.bitmap_data),
80940 + atomic_read_unchecked(&osb->alloc_stats.local_data),
80941 + atomic_read_unchecked(&osb->alloc_stats.bg_allocs),
80942 + atomic_read_unchecked(&osb->alloc_stats.moves),
80943 + atomic_read_unchecked(&osb->alloc_stats.bg_extends));
80944
80945 out += snprintf(buf + out, len - out,
80946 "%10s => State: %u Descriptor: %llu Size: %u bits "
80947 @@ -2095,11 +2095,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
80948
80949 mutex_init(&osb->system_file_mutex);
80950
80951 - atomic_set(&osb->alloc_stats.moves, 0);
80952 - atomic_set(&osb->alloc_stats.local_data, 0);
80953 - atomic_set(&osb->alloc_stats.bitmap_data, 0);
80954 - atomic_set(&osb->alloc_stats.bg_allocs, 0);
80955 - atomic_set(&osb->alloc_stats.bg_extends, 0);
80956 + atomic_set_unchecked(&osb->alloc_stats.moves, 0);
80957 + atomic_set_unchecked(&osb->alloc_stats.local_data, 0);
80958 + atomic_set_unchecked(&osb->alloc_stats.bitmap_data, 0);
80959 + atomic_set_unchecked(&osb->alloc_stats.bg_allocs, 0);
80960 + atomic_set_unchecked(&osb->alloc_stats.bg_extends, 0);
80961
80962 /* Copy the blockcheck stats from the superblock probe */
80963 osb->osb_ecc_stats = *stats;
80964 diff --git a/fs/open.c b/fs/open.c
80965 index e33dab2..cdbdad9 100644
80966 --- a/fs/open.c
80967 +++ b/fs/open.c
80968 @@ -32,6 +32,8 @@
80969 #include <linux/dnotify.h>
80970 #include <linux/compat.h>
80971
80972 +#define CREATE_TRACE_POINTS
80973 +#include <trace/events/fs.h>
80974 #include "internal.h"
80975
80976 int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
80977 @@ -105,6 +107,8 @@ long vfs_truncate(struct path *path, loff_t length)
80978 error = locks_verify_truncate(inode, NULL, length);
80979 if (!error)
80980 error = security_path_truncate(path);
80981 + if (!error && !gr_acl_handle_truncate(path->dentry, path->mnt))
80982 + error = -EACCES;
80983 if (!error)
80984 error = do_truncate(path->dentry, length, 0, NULL);
80985
80986 @@ -189,6 +193,8 @@ static long do_sys_ftruncate(unsigned int fd, loff_t length, int small)
80987 error = locks_verify_truncate(inode, f.file, length);
80988 if (!error)
80989 error = security_path_truncate(&f.file->f_path);
80990 + if (!error && !gr_acl_handle_truncate(f.file->f_path.dentry, f.file->f_path.mnt))
80991 + error = -EACCES;
80992 if (!error)
80993 error = do_truncate(dentry, length, ATTR_MTIME|ATTR_CTIME, f.file);
80994 sb_end_write(inode->i_sb);
80995 @@ -398,6 +404,9 @@ retry:
80996 if (__mnt_is_readonly(path.mnt))
80997 res = -EROFS;
80998
80999 + if (!res && !gr_acl_handle_access(path.dentry, path.mnt, mode))
81000 + res = -EACCES;
81001 +
81002 out_path_release:
81003 path_put(&path);
81004 if (retry_estale(res, lookup_flags)) {
81005 @@ -429,6 +438,8 @@ retry:
81006 if (error)
81007 goto dput_and_out;
81008
81009 + gr_log_chdir(path.dentry, path.mnt);
81010 +
81011 set_fs_pwd(current->fs, &path);
81012
81013 dput_and_out:
81014 @@ -458,6 +469,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
81015 goto out_putf;
81016
81017 error = inode_permission(inode, MAY_EXEC | MAY_CHDIR);
81018 +
81019 + if (!error && !gr_chroot_fchdir(f.file->f_path.dentry, f.file->f_path.mnt))
81020 + error = -EPERM;
81021 +
81022 + if (!error)
81023 + gr_log_chdir(f.file->f_path.dentry, f.file->f_path.mnt);
81024 +
81025 if (!error)
81026 set_fs_pwd(current->fs, &f.file->f_path);
81027 out_putf:
81028 @@ -487,7 +505,13 @@ retry:
81029 if (error)
81030 goto dput_and_out;
81031
81032 + if (gr_handle_chroot_chroot(path.dentry, path.mnt))
81033 + goto dput_and_out;
81034 +
81035 set_fs_root(current->fs, &path);
81036 +
81037 + gr_handle_chroot_chdir(&path);
81038 +
81039 error = 0;
81040 dput_and_out:
81041 path_put(&path);
81042 @@ -511,6 +535,16 @@ static int chmod_common(struct path *path, umode_t mode)
81043 return error;
81044 retry_deleg:
81045 mutex_lock(&inode->i_mutex);
81046 +
81047 + if (!gr_acl_handle_chmod(path->dentry, path->mnt, &mode)) {
81048 + error = -EACCES;
81049 + goto out_unlock;
81050 + }
81051 + if (gr_handle_chroot_chmod(path->dentry, path->mnt, mode)) {
81052 + error = -EACCES;
81053 + goto out_unlock;
81054 + }
81055 +
81056 error = security_path_chmod(path, mode);
81057 if (error)
81058 goto out_unlock;
81059 @@ -576,6 +610,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group)
81060 uid = make_kuid(current_user_ns(), user);
81061 gid = make_kgid(current_user_ns(), group);
81062
81063 + if (!gr_acl_handle_chown(path->dentry, path->mnt))
81064 + return -EACCES;
81065 +
81066 retry_deleg:
81067 newattrs.ia_valid = ATTR_CTIME;
81068 if (user != (uid_t) -1) {
81069 @@ -1029,6 +1066,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
81070 } else {
81071 fsnotify_open(f);
81072 fd_install(fd, f);
81073 + trace_do_sys_open(tmp->name, flags, mode);
81074 }
81075 }
81076 putname(tmp);
81077 diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
81078 index d9da5a4..7ced3c7 100644
81079 --- a/fs/overlayfs/inode.c
81080 +++ b/fs/overlayfs/inode.c
81081 @@ -346,6 +346,9 @@ struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags)
81082 if (d_is_dir(dentry))
81083 return d_backing_inode(dentry);
81084
81085 + if (d_is_dir(dentry))
81086 + return d_backing_inode(dentry);
81087 +
81088 type = ovl_path_real(dentry, &realpath);
81089 if (ovl_open_need_copy_up(file_flags, type, realpath.dentry)) {
81090 err = ovl_want_write(dentry);
81091 diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
81092 index 79073d6..0eb5c27 100644
81093 --- a/fs/overlayfs/super.c
81094 +++ b/fs/overlayfs/super.c
81095 @@ -172,7 +172,7 @@ void ovl_path_lower(struct dentry *dentry, struct path *path)
81096 {
81097 struct ovl_entry *oe = dentry->d_fsdata;
81098
81099 - *path = oe->numlower ? oe->lowerstack[0] : (struct path) { NULL, NULL };
81100 + *path = oe->numlower ? oe->lowerstack[0] : (struct path) { .dentry = NULL, .mnt = NULL };
81101 }
81102
81103 int ovl_want_write(struct dentry *dentry)
81104 @@ -879,8 +879,8 @@ static unsigned int ovl_split_lowerdirs(char *str)
81105
81106 static int ovl_fill_super(struct super_block *sb, void *data, int silent)
81107 {
81108 - struct path upperpath = { NULL, NULL };
81109 - struct path workpath = { NULL, NULL };
81110 + struct path upperpath = { .dentry = NULL, .mnt = NULL };
81111 + struct path workpath = { .dentry = NULL, .mnt = NULL };
81112 struct dentry *root_dentry;
81113 struct ovl_entry *oe;
81114 struct ovl_fs *ufs;
81115 diff --git a/fs/pipe.c b/fs/pipe.c
81116 index 8865f79..bd2c79b 100644
81117 --- a/fs/pipe.c
81118 +++ b/fs/pipe.c
81119 @@ -36,7 +36,7 @@ unsigned int pipe_max_size = 1048576;
81120 /*
81121 * Minimum pipe size, as required by POSIX
81122 */
81123 -unsigned int pipe_min_size = PAGE_SIZE;
81124 +unsigned int pipe_min_size __read_only = PAGE_SIZE;
81125
81126 /*
81127 * We use a start+len construction, which provides full use of the
81128 @@ -55,7 +55,7 @@ unsigned int pipe_min_size = PAGE_SIZE;
81129
81130 static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass)
81131 {
81132 - if (pipe->files)
81133 + if (atomic_read(&pipe->files))
81134 mutex_lock_nested(&pipe->mutex, subclass);
81135 }
81136
81137 @@ -70,7 +70,7 @@ EXPORT_SYMBOL(pipe_lock);
81138
81139 void pipe_unlock(struct pipe_inode_info *pipe)
81140 {
81141 - if (pipe->files)
81142 + if (atomic_read(&pipe->files))
81143 mutex_unlock(&pipe->mutex);
81144 }
81145 EXPORT_SYMBOL(pipe_unlock);
81146 @@ -291,9 +291,9 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to)
81147 }
81148 if (bufs) /* More to do? */
81149 continue;
81150 - if (!pipe->writers)
81151 + if (!atomic_read(&pipe->writers))
81152 break;
81153 - if (!pipe->waiting_writers) {
81154 + if (!atomic_read(&pipe->waiting_writers)) {
81155 /* syscall merging: Usually we must not sleep
81156 * if O_NONBLOCK is set, or if we got some data.
81157 * But if a writer sleeps in kernel space, then
81158 @@ -350,7 +350,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
81159
81160 __pipe_lock(pipe);
81161
81162 - if (!pipe->readers) {
81163 + if (!atomic_read(&pipe->readers)) {
81164 send_sig(SIGPIPE, current, 0);
81165 ret = -EPIPE;
81166 goto out;
81167 @@ -386,7 +386,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
81168 for (;;) {
81169 int bufs;
81170
81171 - if (!pipe->readers) {
81172 + if (!atomic_read(&pipe->readers)) {
81173 send_sig(SIGPIPE, current, 0);
81174 if (!ret)
81175 ret = -EPIPE;
81176 @@ -454,9 +454,9 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
81177 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
81178 do_wakeup = 0;
81179 }
81180 - pipe->waiting_writers++;
81181 + atomic_inc(&pipe->waiting_writers);
81182 pipe_wait(pipe);
81183 - pipe->waiting_writers--;
81184 + atomic_dec(&pipe->waiting_writers);
81185 }
81186 out:
81187 __pipe_unlock(pipe);
81188 @@ -511,7 +511,7 @@ pipe_poll(struct file *filp, poll_table *wait)
81189 mask = 0;
81190 if (filp->f_mode & FMODE_READ) {
81191 mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0;
81192 - if (!pipe->writers && filp->f_version != pipe->w_counter)
81193 + if (!atomic_read(&pipe->writers) && filp->f_version != pipe->w_counter)
81194 mask |= POLLHUP;
81195 }
81196
81197 @@ -521,7 +521,7 @@ pipe_poll(struct file *filp, poll_table *wait)
81198 * Most Unices do not set POLLERR for FIFOs but on Linux they
81199 * behave exactly like pipes for poll().
81200 */
81201 - if (!pipe->readers)
81202 + if (!atomic_read(&pipe->readers))
81203 mask |= POLLERR;
81204 }
81205
81206 @@ -533,7 +533,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
81207 int kill = 0;
81208
81209 spin_lock(&inode->i_lock);
81210 - if (!--pipe->files) {
81211 + if (atomic_dec_and_test(&pipe->files)) {
81212 inode->i_pipe = NULL;
81213 kill = 1;
81214 }
81215 @@ -550,11 +550,11 @@ pipe_release(struct inode *inode, struct file *file)
81216
81217 __pipe_lock(pipe);
81218 if (file->f_mode & FMODE_READ)
81219 - pipe->readers--;
81220 + atomic_dec(&pipe->readers);
81221 if (file->f_mode & FMODE_WRITE)
81222 - pipe->writers--;
81223 + atomic_dec(&pipe->writers);
81224
81225 - if (pipe->readers || pipe->writers) {
81226 + if (atomic_read(&pipe->readers) || atomic_read(&pipe->writers)) {
81227 wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP);
81228 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
81229 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
81230 @@ -619,7 +619,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
81231 kfree(pipe);
81232 }
81233
81234 -static struct vfsmount *pipe_mnt __read_mostly;
81235 +struct vfsmount *pipe_mnt __read_mostly;
81236
81237 /*
81238 * pipefs_dname() is called from d_path().
81239 @@ -649,8 +649,9 @@ static struct inode * get_pipe_inode(void)
81240 goto fail_iput;
81241
81242 inode->i_pipe = pipe;
81243 - pipe->files = 2;
81244 - pipe->readers = pipe->writers = 1;
81245 + atomic_set(&pipe->files, 2);
81246 + atomic_set(&pipe->readers, 1);
81247 + atomic_set(&pipe->writers, 1);
81248 inode->i_fop = &pipefifo_fops;
81249
81250 /*
81251 @@ -829,17 +830,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
81252 spin_lock(&inode->i_lock);
81253 if (inode->i_pipe) {
81254 pipe = inode->i_pipe;
81255 - pipe->files++;
81256 + atomic_inc(&pipe->files);
81257 spin_unlock(&inode->i_lock);
81258 } else {
81259 spin_unlock(&inode->i_lock);
81260 pipe = alloc_pipe_info();
81261 if (!pipe)
81262 return -ENOMEM;
81263 - pipe->files = 1;
81264 + atomic_set(&pipe->files, 1);
81265 spin_lock(&inode->i_lock);
81266 if (unlikely(inode->i_pipe)) {
81267 - inode->i_pipe->files++;
81268 + atomic_inc(&inode->i_pipe->files);
81269 spin_unlock(&inode->i_lock);
81270 free_pipe_info(pipe);
81271 pipe = inode->i_pipe;
81272 @@ -864,10 +865,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
81273 * opened, even when there is no process writing the FIFO.
81274 */
81275 pipe->r_counter++;
81276 - if (pipe->readers++ == 0)
81277 + if (atomic_inc_return(&pipe->readers) == 1)
81278 wake_up_partner(pipe);
81279
81280 - if (!is_pipe && !pipe->writers) {
81281 + if (!is_pipe && !atomic_read(&pipe->writers)) {
81282 if ((filp->f_flags & O_NONBLOCK)) {
81283 /* suppress POLLHUP until we have
81284 * seen a writer */
81285 @@ -886,14 +887,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
81286 * errno=ENXIO when there is no process reading the FIFO.
81287 */
81288 ret = -ENXIO;
81289 - if (!is_pipe && (filp->f_flags & O_NONBLOCK) && !pipe->readers)
81290 + if (!is_pipe && (filp->f_flags & O_NONBLOCK) && !atomic_read(&pipe->readers))
81291 goto err;
81292
81293 pipe->w_counter++;
81294 - if (!pipe->writers++)
81295 + if (atomic_inc_return(&pipe->writers) == 1)
81296 wake_up_partner(pipe);
81297
81298 - if (!is_pipe && !pipe->readers) {
81299 + if (!is_pipe && !atomic_read(&pipe->readers)) {
81300 if (wait_for_partner(pipe, &pipe->r_counter))
81301 goto err_wr;
81302 }
81303 @@ -907,11 +908,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
81304 * the process can at least talk to itself.
81305 */
81306
81307 - pipe->readers++;
81308 - pipe->writers++;
81309 + atomic_inc(&pipe->readers);
81310 + atomic_inc(&pipe->writers);
81311 pipe->r_counter++;
81312 pipe->w_counter++;
81313 - if (pipe->readers == 1 || pipe->writers == 1)
81314 + if (atomic_read(&pipe->readers) == 1 || atomic_read(&pipe->writers) == 1)
81315 wake_up_partner(pipe);
81316 break;
81317
81318 @@ -925,13 +926,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
81319 return 0;
81320
81321 err_rd:
81322 - if (!--pipe->readers)
81323 + if (atomic_dec_and_test(&pipe->readers))
81324 wake_up_interruptible(&pipe->wait);
81325 ret = -ERESTARTSYS;
81326 goto err;
81327
81328 err_wr:
81329 - if (!--pipe->writers)
81330 + if (atomic_dec_and_test(&pipe->writers))
81331 wake_up_interruptible(&pipe->wait);
81332 ret = -ERESTARTSYS;
81333 goto err;
81334 @@ -1007,7 +1008,7 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long nr_pages)
81335 * Currently we rely on the pipe array holding a power-of-2 number
81336 * of pages.
81337 */
81338 -static inline unsigned int round_pipe_size(unsigned int size)
81339 +static inline unsigned long round_pipe_size(unsigned long size)
81340 {
81341 unsigned long nr_pages;
81342
81343 @@ -1055,13 +1056,16 @@ long pipe_fcntl(struct file *file, unsigned int cmd, unsigned long arg)
81344
81345 switch (cmd) {
81346 case F_SETPIPE_SZ: {
81347 - unsigned int size, nr_pages;
81348 + unsigned long size, nr_pages;
81349 +
81350 + ret = -EINVAL;
81351 + if (arg < pipe_min_size)
81352 + goto out;
81353
81354 size = round_pipe_size(arg);
81355 nr_pages = size >> PAGE_SHIFT;
81356
81357 - ret = -EINVAL;
81358 - if (!nr_pages)
81359 + if (size < pipe_min_size)
81360 goto out;
81361
81362 if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) {
81363 diff --git a/fs/posix_acl.c b/fs/posix_acl.c
81364 index 4fb17de..13d8c0f 100644
81365 --- a/fs/posix_acl.c
81366 +++ b/fs/posix_acl.c
81367 @@ -20,6 +20,7 @@
81368 #include <linux/xattr.h>
81369 #include <linux/export.h>
81370 #include <linux/user_namespace.h>
81371 +#include <linux/grsecurity.h>
81372
81373 struct posix_acl **acl_by_type(struct inode *inode, int type)
81374 {
81375 @@ -277,7 +278,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p)
81376 }
81377 }
81378 if (mode_p)
81379 - *mode_p = (*mode_p & ~S_IRWXUGO) | mode;
81380 + *mode_p = ((*mode_p & ~S_IRWXUGO) | mode) & ~gr_acl_umask();
81381 return not_equiv;
81382 }
81383 EXPORT_SYMBOL(posix_acl_equiv_mode);
81384 @@ -427,7 +428,7 @@ static int posix_acl_create_masq(struct posix_acl *acl, umode_t *mode_p)
81385 mode &= (group_obj->e_perm << 3) | ~S_IRWXG;
81386 }
81387
81388 - *mode_p = (*mode_p & ~S_IRWXUGO) | mode;
81389 + *mode_p = ((*mode_p & ~S_IRWXUGO) | mode) & ~gr_acl_umask();
81390 return not_equiv;
81391 }
81392
81393 @@ -485,6 +486,8 @@ __posix_acl_create(struct posix_acl **acl, gfp_t gfp, umode_t *mode_p)
81394 struct posix_acl *clone = posix_acl_clone(*acl, gfp);
81395 int err = -ENOMEM;
81396 if (clone) {
81397 + *mode_p &= ~gr_acl_umask();
81398 +
81399 err = posix_acl_create_masq(clone, mode_p);
81400 if (err < 0) {
81401 posix_acl_release(clone);
81402 @@ -657,11 +660,12 @@ struct posix_acl *
81403 posix_acl_from_xattr(struct user_namespace *user_ns,
81404 const void *value, size_t size)
81405 {
81406 - posix_acl_xattr_header *header = (posix_acl_xattr_header *)value;
81407 - posix_acl_xattr_entry *entry = (posix_acl_xattr_entry *)(header+1), *end;
81408 + const posix_acl_xattr_header *header = (const posix_acl_xattr_header *)value;
81409 + const posix_acl_xattr_entry *entry = (const posix_acl_xattr_entry *)(header+1), *end;
81410 int count;
81411 struct posix_acl *acl;
81412 struct posix_acl_entry *acl_e;
81413 + umode_t umask = gr_acl_umask();
81414
81415 if (!value)
81416 return NULL;
81417 @@ -687,12 +691,18 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
81418
81419 switch(acl_e->e_tag) {
81420 case ACL_USER_OBJ:
81421 + acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
81422 + break;
81423 case ACL_GROUP_OBJ:
81424 case ACL_MASK:
81425 + acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
81426 + break;
81427 case ACL_OTHER:
81428 + acl_e->e_perm &= ~(umask & S_IRWXO);
81429 break;
81430
81431 case ACL_USER:
81432 + acl_e->e_perm &= ~((umask & S_IRWXU) >> 6);
81433 acl_e->e_uid =
81434 make_kuid(user_ns,
81435 le32_to_cpu(entry->e_id));
81436 @@ -700,6 +710,7 @@ posix_acl_from_xattr(struct user_namespace *user_ns,
81437 goto fail;
81438 break;
81439 case ACL_GROUP:
81440 + acl_e->e_perm &= ~((umask & S_IRWXG) >> 3);
81441 acl_e->e_gid =
81442 make_kgid(user_ns,
81443 le32_to_cpu(entry->e_id));
81444 diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig
81445 index 1ade120..a86f1a2 100644
81446 --- a/fs/proc/Kconfig
81447 +++ b/fs/proc/Kconfig
81448 @@ -30,7 +30,7 @@ config PROC_FS
81449
81450 config PROC_KCORE
81451 bool "/proc/kcore support" if !ARM
81452 - depends on PROC_FS && MMU
81453 + depends on PROC_FS && MMU && !GRKERNSEC_PROC_ADD
81454 help
81455 Provides a virtual ELF core file of the live kernel. This can
81456 be read with gdb and other ELF tools. No modifications can be
81457 @@ -38,8 +38,8 @@ config PROC_KCORE
81458
81459 config PROC_VMCORE
81460 bool "/proc/vmcore support"
81461 - depends on PROC_FS && CRASH_DUMP
81462 - default y
81463 + depends on PROC_FS && CRASH_DUMP && !GRKERNSEC
81464 + default n
81465 help
81466 Exports the dump image of crashed kernel in ELF format.
81467
81468 @@ -63,8 +63,8 @@ config PROC_SYSCTL
81469 limited in memory.
81470
81471 config PROC_PAGE_MONITOR
81472 - default y
81473 - depends on PROC_FS && MMU
81474 + default n
81475 + depends on PROC_FS && MMU && !GRKERNSEC
81476 bool "Enable /proc page monitoring" if EXPERT
81477 help
81478 Various /proc files exist to monitor process memory utilization:
81479 diff --git a/fs/proc/array.c b/fs/proc/array.c
81480 index ce065cf..8974fed 100644
81481 --- a/fs/proc/array.c
81482 +++ b/fs/proc/array.c
81483 @@ -60,6 +60,7 @@
81484 #include <linux/tty.h>
81485 #include <linux/string.h>
81486 #include <linux/mman.h>
81487 +#include <linux/grsecurity.h>
81488 #include <linux/proc_fs.h>
81489 #include <linux/ioport.h>
81490 #include <linux/uaccess.h>
81491 @@ -348,6 +349,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
81492 cpumask_pr_args(&task->cpus_allowed));
81493 }
81494
81495 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
81496 +static inline void task_pax(struct seq_file *m, struct task_struct *p)
81497 +{
81498 + if (p->mm)
81499 + seq_printf(m, "PaX:\t%c%c%c%c%c\n",
81500 + p->mm->pax_flags & MF_PAX_PAGEEXEC ? 'P' : 'p',
81501 + p->mm->pax_flags & MF_PAX_EMUTRAMP ? 'E' : 'e',
81502 + p->mm->pax_flags & MF_PAX_MPROTECT ? 'M' : 'm',
81503 + p->mm->pax_flags & MF_PAX_RANDMMAP ? 'R' : 'r',
81504 + p->mm->pax_flags & MF_PAX_SEGMEXEC ? 'S' : 's');
81505 + else
81506 + seq_printf(m, "PaX:\t-----\n");
81507 +}
81508 +#endif
81509 +
81510 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
81511 struct pid *pid, struct task_struct *task)
81512 {
81513 @@ -366,9 +382,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
81514 task_cpus_allowed(m, task);
81515 cpuset_task_status_allowed(m, task);
81516 task_context_switch_counts(m, task);
81517 +
81518 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
81519 + task_pax(m, task);
81520 +#endif
81521 +
81522 +#if defined(CONFIG_GRKERNSEC) && !defined(CONFIG_GRKERNSEC_NO_RBAC)
81523 + task_grsec_rbac(m, task);
81524 +#endif
81525 +
81526 return 0;
81527 }
81528
81529 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81530 +#define PAX_RAND_FLAGS(_mm) (_mm != NULL && _mm != current->mm && \
81531 + (_mm->pax_flags & MF_PAX_RANDMMAP || \
81532 + _mm->pax_flags & MF_PAX_SEGMEXEC))
81533 +#endif
81534 +
81535 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
81536 struct pid *pid, struct task_struct *task, int whole)
81537 {
81538 @@ -390,6 +421,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
81539 char tcomm[sizeof(task->comm)];
81540 unsigned long flags;
81541
81542 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81543 + if (current->exec_id != m->exec_id) {
81544 + gr_log_badprocpid("stat");
81545 + return 0;
81546 + }
81547 +#endif
81548 +
81549 state = *get_task_state(task);
81550 vsize = eip = esp = 0;
81551 permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
81552 @@ -460,6 +498,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
81553 gtime = task_gtime(task);
81554 }
81555
81556 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81557 + if (PAX_RAND_FLAGS(mm)) {
81558 + eip = 0;
81559 + esp = 0;
81560 + wchan = 0;
81561 + }
81562 +#endif
81563 +#ifdef CONFIG_GRKERNSEC_HIDESYM
81564 + wchan = 0;
81565 + eip =0;
81566 + esp =0;
81567 +#endif
81568 +
81569 /* scale priority and nice values from timeslices to -20..20 */
81570 /* to make it look like a "normal" Unix priority/nice value */
81571 priority = task_prio(task);
81572 @@ -491,9 +542,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
81573 seq_put_decimal_ull(m, ' ', vsize);
81574 seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
81575 seq_put_decimal_ull(m, ' ', rsslim);
81576 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81577 + seq_put_decimal_ull(m, ' ', PAX_RAND_FLAGS(mm) ? 1 : (mm ? (permitted ? mm->start_code : 1) : 0));
81578 + seq_put_decimal_ull(m, ' ', PAX_RAND_FLAGS(mm) ? 1 : (mm ? (permitted ? mm->end_code : 1) : 0));
81579 + seq_put_decimal_ull(m, ' ', PAX_RAND_FLAGS(mm) ? 0 : ((permitted && mm) ? mm->start_stack : 0));
81580 +#else
81581 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->start_code : 1) : 0);
81582 seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->end_code : 1) : 0);
81583 seq_put_decimal_ull(m, ' ', (permitted && mm) ? mm->start_stack : 0);
81584 +#endif
81585 seq_put_decimal_ull(m, ' ', esp);
81586 seq_put_decimal_ull(m, ' ', eip);
81587 /* The signal information here is obsolete.
81588 @@ -515,7 +572,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
81589 seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
81590 seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
81591
81592 - if (mm && permitted) {
81593 + if (mm && permitted
81594 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81595 + && !PAX_RAND_FLAGS(mm)
81596 +#endif
81597 + ) {
81598 seq_put_decimal_ull(m, ' ', mm->start_data);
81599 seq_put_decimal_ull(m, ' ', mm->end_data);
81600 seq_put_decimal_ull(m, ' ', mm->start_brk);
81601 @@ -553,8 +614,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
81602 struct pid *pid, struct task_struct *task)
81603 {
81604 unsigned long size = 0, resident = 0, shared = 0, text = 0, data = 0;
81605 - struct mm_struct *mm = get_task_mm(task);
81606 + struct mm_struct *mm;
81607
81608 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81609 + if (current->exec_id != m->exec_id) {
81610 + gr_log_badprocpid("statm");
81611 + return 0;
81612 + }
81613 +#endif
81614 + mm = get_task_mm(task);
81615 if (mm) {
81616 size = task_statm(mm, &shared, &text, &data, &resident);
81617 mmput(mm);
81618 @@ -577,6 +645,20 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
81619 return 0;
81620 }
81621
81622 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
81623 +int proc_pid_ipaddr(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task)
81624 +{
81625 + unsigned long flags;
81626 + u32 curr_ip = 0;
81627 +
81628 + if (lock_task_sighand(task, &flags)) {
81629 + curr_ip = task->signal->curr_ip;
81630 + unlock_task_sighand(task, &flags);
81631 + }
81632 + return seq_printf(m, "%pI4\n", &curr_ip);
81633 +}
81634 +#endif
81635 +
81636 #ifdef CONFIG_PROC_CHILDREN
81637 static struct pid *
81638 get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos)
81639 diff --git a/fs/proc/base.c b/fs/proc/base.c
81640 index aa50d1a..7a62b7a 100644
81641 --- a/fs/proc/base.c
81642 +++ b/fs/proc/base.c
81643 @@ -113,6 +113,14 @@ struct pid_entry {
81644 union proc_op op;
81645 };
81646
81647 +struct getdents_callback {
81648 + struct linux_dirent __user * current_dir;
81649 + struct linux_dirent __user * previous;
81650 + struct file * file;
81651 + int count;
81652 + int error;
81653 +};
81654 +
81655 #define NOD(NAME, MODE, IOP, FOP, OP) { \
81656 .name = (NAME), \
81657 .len = sizeof(NAME) - 1, \
81658 @@ -224,6 +232,11 @@ static ssize_t proc_pid_cmdline_read(struct file *file, char __user *buf,
81659 goto out_mmput;
81660 }
81661
81662 + if (gr_acl_handle_procpidmem(tsk)) {
81663 + rv = 0;
81664 + goto out_mmput;
81665 + }
81666 +
81667 page = (char *)__get_free_page(GFP_TEMPORARY);
81668 if (!page) {
81669 rv = -ENOMEM;
81670 @@ -400,12 +413,28 @@ static const struct file_operations proc_pid_cmdline_ops = {
81671 .llseek = generic_file_llseek,
81672 };
81673
81674 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81675 +#define PAX_RAND_FLAGS(_mm) (_mm != NULL && _mm != current->mm && \
81676 + (_mm->pax_flags & MF_PAX_RANDMMAP || \
81677 + _mm->pax_flags & MF_PAX_SEGMEXEC))
81678 +#endif
81679 +
81680 static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
81681 struct pid *pid, struct task_struct *task)
81682 {
81683 struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ);
81684 if (mm && !IS_ERR(mm)) {
81685 unsigned int nwords = 0;
81686 +
81687 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81688 + /* allow if we're currently ptracing this task */
81689 + if (PAX_RAND_FLAGS(mm) &&
81690 + (!(task->ptrace & PT_PTRACED) || (task->parent != current))) {
81691 + mmput(mm);
81692 + return 0;
81693 + }
81694 +#endif
81695 +
81696 do {
81697 nwords += 2;
81698 } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
81699 @@ -417,7 +446,7 @@ static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
81700 }
81701
81702
81703 -#ifdef CONFIG_KALLSYMS
81704 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81705 /*
81706 * Provides a wchan file via kallsyms in a proper one-value-per-file format.
81707 * Returns the resolved symbol. If that fails, simply return the address.
81708 @@ -459,7 +488,7 @@ static void unlock_trace(struct task_struct *task)
81709 mutex_unlock(&task->signal->cred_guard_mutex);
81710 }
81711
81712 -#ifdef CONFIG_STACKTRACE
81713 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81714
81715 #define MAX_STACK_TRACE_DEPTH 64
81716
81717 @@ -657,7 +686,7 @@ static int proc_pid_limits(struct seq_file *m, struct pid_namespace *ns,
81718 return 0;
81719 }
81720
81721 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
81722 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
81723 static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns,
81724 struct pid *pid, struct task_struct *task)
81725 {
81726 @@ -690,7 +719,7 @@ static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns,
81727 /************************************************************************/
81728
81729 /* permission checks */
81730 -static int proc_fd_access_allowed(struct inode *inode)
81731 +static int proc_fd_access_allowed(struct inode *inode, unsigned int log)
81732 {
81733 struct task_struct *task;
81734 int allowed = 0;
81735 @@ -700,7 +729,10 @@ static int proc_fd_access_allowed(struct inode *inode)
81736 */
81737 task = get_proc_task(inode);
81738 if (task) {
81739 - allowed = ptrace_may_access(task, PTRACE_MODE_READ);
81740 + if (log)
81741 + allowed = ptrace_may_access(task, PTRACE_MODE_READ);
81742 + else
81743 + allowed = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
81744 put_task_struct(task);
81745 }
81746 return allowed;
81747 @@ -731,10 +763,35 @@ static bool has_pid_permissions(struct pid_namespace *pid,
81748 struct task_struct *task,
81749 int hide_pid_min)
81750 {
81751 + if (gr_pid_is_chrooted(task) || gr_check_hidden_task(task))
81752 + return false;
81753 +
81754 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
81755 + rcu_read_lock();
81756 + {
81757 + const struct cred *tmpcred = current_cred();
81758 + const struct cred *cred = __task_cred(task);
81759 +
81760 + if (uid_eq(tmpcred->uid, GLOBAL_ROOT_UID) || uid_eq(tmpcred->uid, cred->uid)
81761 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
81762 + || in_group_p(grsec_proc_gid)
81763 +#endif
81764 + ) {
81765 + rcu_read_unlock();
81766 + return true;
81767 + }
81768 + }
81769 + rcu_read_unlock();
81770 +
81771 + if (!pid->hide_pid)
81772 + return false;
81773 +#endif
81774 +
81775 if (pid->hide_pid < hide_pid_min)
81776 return true;
81777 if (in_group_p(pid->pid_gid))
81778 return true;
81779 +
81780 return ptrace_may_access(task, PTRACE_MODE_READ);
81781 }
81782
81783 @@ -752,7 +809,11 @@ static int proc_pid_permission(struct inode *inode, int mask)
81784 put_task_struct(task);
81785
81786 if (!has_perms) {
81787 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
81788 + {
81789 +#else
81790 if (pid->hide_pid == 2) {
81791 +#endif
81792 /*
81793 * Let's make getdents(), stat(), and open()
81794 * consistent with each other. If a process
81795 @@ -813,6 +874,10 @@ struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode)
81796
81797 if (task) {
81798 mm = mm_access(task, mode);
81799 + if (!IS_ERR_OR_NULL(mm) && gr_acl_handle_procpidmem(task)) {
81800 + mmput(mm);
81801 + mm = ERR_PTR(-EPERM);
81802 + }
81803 put_task_struct(task);
81804
81805 if (!IS_ERR_OR_NULL(mm)) {
81806 @@ -834,6 +899,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode)
81807 return PTR_ERR(mm);
81808
81809 file->private_data = mm;
81810 +
81811 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81812 + file->f_version = current->exec_id;
81813 +#endif
81814 +
81815 return 0;
81816 }
81817
81818 @@ -855,6 +925,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
81819 ssize_t copied;
81820 char *page;
81821
81822 +#ifdef CONFIG_GRKERNSEC
81823 + if (write)
81824 + return -EPERM;
81825 +#endif
81826 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81827 + if (file->f_version != current->exec_id) {
81828 + gr_log_badprocpid("mem");
81829 + return 0;
81830 + }
81831 +#endif
81832 +
81833 if (!mm)
81834 return 0;
81835
81836 @@ -867,7 +948,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
81837 goto free;
81838
81839 while (count > 0) {
81840 - int this_len = min_t(int, count, PAGE_SIZE);
81841 + ssize_t this_len = min_t(ssize_t, count, PAGE_SIZE);
81842
81843 if (write && copy_from_user(page, buf, this_len)) {
81844 copied = -EFAULT;
81845 @@ -959,6 +1040,13 @@ static ssize_t environ_read(struct file *file, char __user *buf,
81846 if (!mm)
81847 return 0;
81848
81849 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
81850 + if (file->f_version != current->exec_id) {
81851 + gr_log_badprocpid("environ");
81852 + return 0;
81853 + }
81854 +#endif
81855 +
81856 page = (char *)__get_free_page(GFP_TEMPORARY);
81857 if (!page)
81858 return -ENOMEM;
81859 @@ -968,7 +1056,7 @@ static ssize_t environ_read(struct file *file, char __user *buf,
81860 goto free;
81861 while (count > 0) {
81862 size_t this_len, max_len;
81863 - int retval;
81864 + ssize_t retval;
81865
81866 if (src >= (mm->env_end - mm->env_start))
81867 break;
81868 @@ -1582,7 +1670,7 @@ static const char *proc_pid_follow_link(struct dentry *dentry, void **cookie)
81869 int error = -EACCES;
81870
81871 /* Are we allowed to snoop on the tasks file descriptors? */
81872 - if (!proc_fd_access_allowed(inode))
81873 + if (!proc_fd_access_allowed(inode, 0))
81874 goto out;
81875
81876 error = PROC_I(inode)->op.proc_get_link(dentry, &path);
81877 @@ -1626,8 +1714,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
81878 struct path path;
81879
81880 /* Are we allowed to snoop on the tasks file descriptors? */
81881 - if (!proc_fd_access_allowed(inode))
81882 - goto out;
81883 + /* logging this is needed for learning on chromium to work properly,
81884 + but we don't want to flood the logs from 'ps' which does a readlink
81885 + on /proc/fd/2 of tasks in the listing, nor do we want 'ps' to learn
81886 + CAP_SYS_PTRACE as it's not necessary for its basic functionality
81887 + */
81888 + if (dentry->d_name.name[0] == '2' && dentry->d_name.name[1] == '\0') {
81889 + if (!proc_fd_access_allowed(inode,0))
81890 + goto out;
81891 + } else {
81892 + if (!proc_fd_access_allowed(inode,1))
81893 + goto out;
81894 + }
81895
81896 error = PROC_I(inode)->op.proc_get_link(dentry, &path);
81897 if (error)
81898 @@ -1677,7 +1775,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
81899 rcu_read_lock();
81900 cred = __task_cred(task);
81901 inode->i_uid = cred->euid;
81902 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
81903 + inode->i_gid = grsec_proc_gid;
81904 +#else
81905 inode->i_gid = cred->egid;
81906 +#endif
81907 rcu_read_unlock();
81908 }
81909 security_task_to_inode(task, inode);
81910 @@ -1713,10 +1815,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
81911 return -ENOENT;
81912 }
81913 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
81914 +#ifdef CONFIG_GRKERNSEC_PROC_USER
81915 + (inode->i_mode == (S_IFDIR|S_IRUSR|S_IXUSR)) ||
81916 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
81917 + (inode->i_mode == (S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP)) ||
81918 +#endif
81919 task_dumpable(task)) {
81920 cred = __task_cred(task);
81921 stat->uid = cred->euid;
81922 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
81923 + stat->gid = grsec_proc_gid;
81924 +#else
81925 stat->gid = cred->egid;
81926 +#endif
81927 }
81928 }
81929 rcu_read_unlock();
81930 @@ -1754,11 +1865,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags)
81931
81932 if (task) {
81933 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
81934 +#ifdef CONFIG_GRKERNSEC_PROC_USER
81935 + (inode->i_mode == (S_IFDIR|S_IRUSR|S_IXUSR)) ||
81936 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
81937 + (inode->i_mode == (S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP)) ||
81938 +#endif
81939 task_dumpable(task)) {
81940 rcu_read_lock();
81941 cred = __task_cred(task);
81942 inode->i_uid = cred->euid;
81943 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
81944 + inode->i_gid = grsec_proc_gid;
81945 +#else
81946 inode->i_gid = cred->egid;
81947 +#endif
81948 rcu_read_unlock();
81949 } else {
81950 inode->i_uid = GLOBAL_ROOT_UID;
81951 @@ -2290,6 +2410,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
81952 if (!task)
81953 goto out_no_task;
81954
81955 + if (gr_pid_is_chrooted(task) || gr_check_hidden_task(task))
81956 + goto out;
81957 +
81958 /*
81959 * Yes, it does not scale. And it should not. Don't add
81960 * new entries into /proc/<tgid>/ without very good reasons.
81961 @@ -2320,6 +2443,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx,
81962 if (!task)
81963 return -ENOENT;
81964
81965 + if (gr_pid_is_chrooted(task) || gr_check_hidden_task(task))
81966 + goto out;
81967 +
81968 if (!dir_emit_dots(file, ctx))
81969 goto out;
81970
81971 @@ -2764,7 +2890,7 @@ static const struct pid_entry tgid_base_stuff[] = {
81972 REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
81973 #endif
81974 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
81975 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
81976 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
81977 ONE("syscall", S_IRUSR, proc_pid_syscall),
81978 #endif
81979 REG("cmdline", S_IRUGO, proc_pid_cmdline_ops),
81980 @@ -2789,10 +2915,10 @@ static const struct pid_entry tgid_base_stuff[] = {
81981 #ifdef CONFIG_SECURITY
81982 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
81983 #endif
81984 -#ifdef CONFIG_KALLSYMS
81985 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81986 ONE("wchan", S_IRUGO, proc_pid_wchan),
81987 #endif
81988 -#ifdef CONFIG_STACKTRACE
81989 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81990 ONE("stack", S_IRUSR, proc_pid_stack),
81991 #endif
81992 #ifdef CONFIG_SCHED_INFO
81993 @@ -2826,6 +2952,9 @@ static const struct pid_entry tgid_base_stuff[] = {
81994 #ifdef CONFIG_HARDWALL
81995 ONE("hardwall", S_IRUGO, proc_pid_hardwall),
81996 #endif
81997 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
81998 + ONE("ipaddr", S_IRUSR, proc_pid_ipaddr),
81999 +#endif
82000 #ifdef CONFIG_USER_NS
82001 REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations),
82002 REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations),
82003 @@ -2958,7 +3087,14 @@ static int proc_pid_instantiate(struct inode *dir,
82004 if (!inode)
82005 goto out;
82006
82007 +#ifdef CONFIG_GRKERNSEC_PROC_USER
82008 + inode->i_mode = S_IFDIR|S_IRUSR|S_IXUSR;
82009 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
82010 + inode->i_gid = grsec_proc_gid;
82011 + inode->i_mode = S_IFDIR|S_IRUSR|S_IRGRP|S_IXUSR|S_IXGRP;
82012 +#else
82013 inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
82014 +#endif
82015 inode->i_op = &proc_tgid_base_inode_operations;
82016 inode->i_fop = &proc_tgid_base_operations;
82017 inode->i_flags|=S_IMMUTABLE;
82018 @@ -2996,7 +3132,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign
82019 if (!task)
82020 goto out;
82021
82022 + if (gr_pid_is_chrooted(task) || gr_check_hidden_task(task))
82023 + goto out_put_task;
82024 +
82025 result = proc_pid_instantiate(dir, dentry, task, NULL);
82026 +out_put_task:
82027 put_task_struct(task);
82028 out:
82029 return ERR_PTR(result);
82030 @@ -3110,7 +3250,7 @@ static const struct pid_entry tid_base_stuff[] = {
82031 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
82032 #endif
82033 REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
82034 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
82035 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
82036 ONE("syscall", S_IRUSR, proc_pid_syscall),
82037 #endif
82038 REG("cmdline", S_IRUGO, proc_pid_cmdline_ops),
82039 @@ -3137,10 +3277,10 @@ static const struct pid_entry tid_base_stuff[] = {
82040 #ifdef CONFIG_SECURITY
82041 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
82042 #endif
82043 -#ifdef CONFIG_KALLSYMS
82044 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
82045 ONE("wchan", S_IRUGO, proc_pid_wchan),
82046 #endif
82047 -#ifdef CONFIG_STACKTRACE
82048 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
82049 ONE("stack", S_IRUSR, proc_pid_stack),
82050 #endif
82051 #ifdef CONFIG_SCHED_INFO
82052 diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c
82053 index cbd82df..c0407d2 100644
82054 --- a/fs/proc/cmdline.c
82055 +++ b/fs/proc/cmdline.c
82056 @@ -23,7 +23,11 @@ static const struct file_operations cmdline_proc_fops = {
82057
82058 static int __init proc_cmdline_init(void)
82059 {
82060 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
82061 + proc_create_grsec("cmdline", 0, NULL, &cmdline_proc_fops);
82062 +#else
82063 proc_create("cmdline", 0, NULL, &cmdline_proc_fops);
82064 +#endif
82065 return 0;
82066 }
82067 fs_initcall(proc_cmdline_init);
82068 diff --git a/fs/proc/devices.c b/fs/proc/devices.c
82069 index 50493ed..248166b 100644
82070 --- a/fs/proc/devices.c
82071 +++ b/fs/proc/devices.c
82072 @@ -64,7 +64,11 @@ static const struct file_operations proc_devinfo_operations = {
82073
82074 static int __init proc_devices_init(void)
82075 {
82076 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
82077 + proc_create_grsec("devices", 0, NULL, &proc_devinfo_operations);
82078 +#else
82079 proc_create("devices", 0, NULL, &proc_devinfo_operations);
82080 +#endif
82081 return 0;
82082 }
82083 fs_initcall(proc_devices_init);
82084 diff --git a/fs/proc/fd.c b/fs/proc/fd.c
82085 index 6e5fcd0..06ea074 100644
82086 --- a/fs/proc/fd.c
82087 +++ b/fs/proc/fd.c
82088 @@ -27,7 +27,8 @@ static int seq_show(struct seq_file *m, void *v)
82089 if (!task)
82090 return -ENOENT;
82091
82092 - files = get_files_struct(task);
82093 + if (!gr_acl_handle_procpidmem(task))
82094 + files = get_files_struct(task);
82095 put_task_struct(task);
82096
82097 if (files) {
82098 @@ -291,11 +292,21 @@ static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry,
82099 */
82100 int proc_fd_permission(struct inode *inode, int mask)
82101 {
82102 + struct task_struct *task;
82103 int rv = generic_permission(inode, mask);
82104 - if (rv == 0)
82105 - return 0;
82106 +
82107 if (task_tgid(current) == proc_pid(inode))
82108 rv = 0;
82109 +
82110 + task = get_proc_task(inode);
82111 + if (task == NULL)
82112 + return rv;
82113 +
82114 + if (gr_acl_handle_procpidmem(task))
82115 + rv = -EACCES;
82116 +
82117 + put_task_struct(task);
82118 +
82119 return rv;
82120 }
82121
82122 diff --git a/fs/proc/generic.c b/fs/proc/generic.c
82123 index e5dee5c..dafe21b 100644
82124 --- a/fs/proc/generic.c
82125 +++ b/fs/proc/generic.c
82126 @@ -22,6 +22,7 @@
82127 #include <linux/bitops.h>
82128 #include <linux/spinlock.h>
82129 #include <linux/completion.h>
82130 +#include <linux/grsecurity.h>
82131 #include <asm/uaccess.h>
82132
82133 #include "internal.h"
82134 @@ -253,6 +254,15 @@ struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry,
82135 return proc_lookup_de(PDE(dir), dir, dentry);
82136 }
82137
82138 +struct dentry *proc_lookup_restrict(struct inode *dir, struct dentry *dentry,
82139 + unsigned int flags)
82140 +{
82141 + if (gr_proc_is_restricted())
82142 + return ERR_PTR(-EACCES);
82143 +
82144 + return proc_lookup_de(PDE(dir), dir, dentry);
82145 +}
82146 +
82147 /*
82148 * This returns non-zero if at EOF, so that the /proc
82149 * root directory can use this and check if it should
82150 @@ -310,6 +320,16 @@ int proc_readdir(struct file *file, struct dir_context *ctx)
82151 return proc_readdir_de(PDE(inode), file, ctx);
82152 }
82153
82154 +int proc_readdir_restrict(struct file *file, struct dir_context *ctx)
82155 +{
82156 + struct inode *inode = file_inode(file);
82157 +
82158 + if (gr_proc_is_restricted())
82159 + return -EACCES;
82160 +
82161 + return proc_readdir_de(PDE(inode), file, ctx);
82162 +}
82163 +
82164 /*
82165 * These are the generic /proc directory operations. They
82166 * use the in-memory "struct proc_dir_entry" tree to parse
82167 @@ -321,6 +341,12 @@ static const struct file_operations proc_dir_operations = {
82168 .iterate = proc_readdir,
82169 };
82170
82171 +static const struct file_operations proc_dir_restricted_operations = {
82172 + .llseek = generic_file_llseek,
82173 + .read = generic_read_dir,
82174 + .iterate = proc_readdir_restrict,
82175 +};
82176 +
82177 /*
82178 * proc directories can do almost nothing..
82179 */
82180 @@ -330,6 +356,12 @@ static const struct inode_operations proc_dir_inode_operations = {
82181 .setattr = proc_notify_change,
82182 };
82183
82184 +static const struct inode_operations proc_dir_restricted_inode_operations = {
82185 + .lookup = proc_lookup_restrict,
82186 + .getattr = proc_getattr,
82187 + .setattr = proc_notify_change,
82188 +};
82189 +
82190 static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp)
82191 {
82192 int ret;
82193 @@ -445,6 +477,31 @@ struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode,
82194 }
82195 EXPORT_SYMBOL_GPL(proc_mkdir_data);
82196
82197 +struct proc_dir_entry *proc_mkdir_data_restrict(const char *name, umode_t mode,
82198 + struct proc_dir_entry *parent, void *data)
82199 +{
82200 + struct proc_dir_entry *ent;
82201 +
82202 + if (mode == 0)
82203 + mode = S_IRUGO | S_IXUGO;
82204 +
82205 + ent = __proc_create(&parent, name, S_IFDIR | mode, 2);
82206 + if (ent) {
82207 + ent->data = data;
82208 + ent->restricted = 1;
82209 + ent->proc_fops = &proc_dir_restricted_operations;
82210 + ent->proc_iops = &proc_dir_restricted_inode_operations;
82211 + parent->nlink++;
82212 + if (proc_register(parent, ent) < 0) {
82213 + kfree(ent);
82214 + parent->nlink--;
82215 + ent = NULL;
82216 + }
82217 + }
82218 + return ent;
82219 +}
82220 +EXPORT_SYMBOL_GPL(proc_mkdir_data_restrict);
82221 +
82222 struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode,
82223 struct proc_dir_entry *parent)
82224 {
82225 @@ -459,6 +516,13 @@ struct proc_dir_entry *proc_mkdir(const char *name,
82226 }
82227 EXPORT_SYMBOL(proc_mkdir);
82228
82229 +struct proc_dir_entry *proc_mkdir_restrict(const char *name,
82230 + struct proc_dir_entry *parent)
82231 +{
82232 + return proc_mkdir_data_restrict(name, 0, parent, NULL);
82233 +}
82234 +EXPORT_SYMBOL(proc_mkdir_restrict);
82235 +
82236 struct proc_dir_entry *proc_create_mount_point(const char *name)
82237 {
82238 umode_t mode = S_IFDIR | S_IRUGO | S_IXUGO;
82239 diff --git a/fs/proc/inode.c b/fs/proc/inode.c
82240 index bd95b9f..a64a773 100644
82241 --- a/fs/proc/inode.c
82242 +++ b/fs/proc/inode.c
82243 @@ -23,11 +23,17 @@
82244 #include <linux/slab.h>
82245 #include <linux/mount.h>
82246 #include <linux/magic.h>
82247 +#include <linux/grsecurity.h>
82248
82249 #include <asm/uaccess.h>
82250
82251 #include "internal.h"
82252
82253 +#ifdef CONFIG_PROC_SYSCTL
82254 +extern const struct inode_operations proc_sys_inode_operations;
82255 +extern const struct inode_operations proc_sys_dir_operations;
82256 +#endif
82257 +
82258 static void proc_evict_inode(struct inode *inode)
82259 {
82260 struct proc_dir_entry *de;
82261 @@ -48,6 +54,13 @@ static void proc_evict_inode(struct inode *inode)
82262 RCU_INIT_POINTER(PROC_I(inode)->sysctl, NULL);
82263 sysctl_head_put(head);
82264 }
82265 +
82266 +#ifdef CONFIG_PROC_SYSCTL
82267 + if (inode->i_op == &proc_sys_inode_operations ||
82268 + inode->i_op == &proc_sys_dir_operations)
82269 + gr_handle_delete(inode->i_ino, inode->i_sb->s_dev);
82270 +#endif
82271 +
82272 }
82273
82274 static struct kmem_cache * proc_inode_cachep;
82275 @@ -429,7 +442,11 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)
82276 if (de->mode) {
82277 inode->i_mode = de->mode;
82278 inode->i_uid = de->uid;
82279 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
82280 + inode->i_gid = grsec_proc_gid;
82281 +#else
82282 inode->i_gid = de->gid;
82283 +#endif
82284 }
82285 if (de->size)
82286 inode->i_size = de->size;
82287 diff --git a/fs/proc/internal.h b/fs/proc/internal.h
82288 index aa27810..9f2d3b2 100644
82289 --- a/fs/proc/internal.h
82290 +++ b/fs/proc/internal.h
82291 @@ -47,9 +47,10 @@ struct proc_dir_entry {
82292 struct completion *pde_unload_completion;
82293 struct list_head pde_openers; /* who did ->open, but not ->release */
82294 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
82295 + u8 restricted; /* a directory in /proc/net that should be restricted via GRKERNSEC_PROC */
82296 u8 namelen;
82297 char name[];
82298 -};
82299 +} __randomize_layout;
82300
82301 union proc_op {
82302 int (*proc_get_link)(struct dentry *, struct path *);
82303 @@ -67,7 +68,7 @@ struct proc_inode {
82304 struct ctl_table *sysctl_entry;
82305 const struct proc_ns_operations *ns_ops;
82306 struct inode vfs_inode;
82307 -};
82308 +} __randomize_layout;
82309
82310 /*
82311 * General functions
82312 @@ -155,6 +156,10 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *,
82313 struct pid *, struct task_struct *);
82314 extern int proc_pid_statm(struct seq_file *, struct pid_namespace *,
82315 struct pid *, struct task_struct *);
82316 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
82317 +extern int proc_pid_ipaddr(struct seq_file *, struct pid_namespace *,
82318 + struct pid *, struct task_struct *);
82319 +#endif
82320
82321 /*
82322 * base.c
82323 @@ -179,9 +184,11 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i
82324 * generic.c
82325 */
82326 extern struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int);
82327 +extern struct dentry *proc_lookup_restrict(struct inode *, struct dentry *, unsigned int);
82328 extern struct dentry *proc_lookup_de(struct proc_dir_entry *, struct inode *,
82329 struct dentry *);
82330 extern int proc_readdir(struct file *, struct dir_context *);
82331 +extern int proc_readdir_restrict(struct file *, struct dir_context *);
82332 extern int proc_readdir_de(struct proc_dir_entry *, struct file *, struct dir_context *);
82333
82334 static inline struct proc_dir_entry *pde_get(struct proc_dir_entry *pde)
82335 diff --git a/fs/proc/interrupts.c b/fs/proc/interrupts.c
82336 index a352d57..cb94a5c 100644
82337 --- a/fs/proc/interrupts.c
82338 +++ b/fs/proc/interrupts.c
82339 @@ -47,7 +47,11 @@ static const struct file_operations proc_interrupts_operations = {
82340
82341 static int __init proc_interrupts_init(void)
82342 {
82343 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
82344 + proc_create_grsec("interrupts", 0, NULL, &proc_interrupts_operations);
82345 +#else
82346 proc_create("interrupts", 0, NULL, &proc_interrupts_operations);
82347 +#endif
82348 return 0;
82349 }
82350 fs_initcall(proc_interrupts_init);
82351 diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
82352 index 92e6726..a600d4fa 100644
82353 --- a/fs/proc/kcore.c
82354 +++ b/fs/proc/kcore.c
82355 @@ -483,9 +483,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
82356 * the addresses in the elf_phdr on our list.
82357 */
82358 start = kc_offset_to_vaddr(*fpos - elf_buflen);
82359 - if ((tsz = (PAGE_SIZE - (start & ~PAGE_MASK))) > buflen)
82360 + tsz = PAGE_SIZE - (start & ~PAGE_MASK);
82361 + if (tsz > buflen)
82362 tsz = buflen;
82363 -
82364 +
82365 while (buflen) {
82366 struct kcore_list *m;
82367
82368 @@ -515,19 +516,20 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
82369 } else {
82370 if (kern_addr_valid(start)) {
82371 unsigned long n;
82372 + char *elf_buf;
82373 + mm_segment_t oldfs;
82374
82375 - n = copy_to_user(buffer, (char *)start, tsz);
82376 - /*
82377 - * We cannot distinguish between fault on source
82378 - * and fault on destination. When this happens
82379 - * we clear too and hope it will trigger the
82380 - * EFAULT again.
82381 - */
82382 - if (n) {
82383 - if (clear_user(buffer + tsz - n,
82384 - n))
82385 - return -EFAULT;
82386 - }
82387 + elf_buf = kzalloc(tsz, GFP_KERNEL);
82388 + if (!elf_buf)
82389 + return -ENOMEM;
82390 + oldfs = get_fs();
82391 + set_fs(KERNEL_DS);
82392 + n = __copy_from_user(elf_buf, (const void __user *)start, tsz);
82393 + set_fs(oldfs);
82394 + n = copy_to_user(buffer, elf_buf, tsz);
82395 + kfree(elf_buf);
82396 + if (n)
82397 + return -EFAULT;
82398 } else {
82399 if (clear_user(buffer, tsz))
82400 return -EFAULT;
82401 @@ -547,6 +549,9 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
82402
82403 static int open_kcore(struct inode *inode, struct file *filp)
82404 {
82405 +#if defined(CONFIG_GRKERNSEC_PROC_ADD) || defined(CONFIG_GRKERNSEC_HIDESYM)
82406 + return -EPERM;
82407 +#endif
82408 if (!capable(CAP_SYS_RAWIO))
82409 return -EPERM;
82410 if (kcore_need_update)
82411 @@ -580,7 +585,7 @@ static int __meminit kcore_callback(struct notifier_block *self,
82412 return NOTIFY_OK;
82413 }
82414
82415 -static struct notifier_block kcore_callback_nb __meminitdata = {
82416 +static struct notifier_block kcore_callback_nb __meminitconst = {
82417 .notifier_call = kcore_callback,
82418 .priority = 0,
82419 };
82420 diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
82421 index d3ebf2e..6ad42d1 100644
82422 --- a/fs/proc/meminfo.c
82423 +++ b/fs/proc/meminfo.c
82424 @@ -194,7 +194,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
82425 vmi.used >> 10,
82426 vmi.largest_chunk >> 10
82427 #ifdef CONFIG_MEMORY_FAILURE
82428 - , atomic_long_read(&num_poisoned_pages) << (PAGE_SHIFT - 10)
82429 + , atomic_long_read_unchecked(&num_poisoned_pages) << (PAGE_SHIFT - 10)
82430 #endif
82431 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
82432 , K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
82433 diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
82434 index f8595e8..e0d13cbd 100644
82435 --- a/fs/proc/nommu.c
82436 +++ b/fs/proc/nommu.c
82437 @@ -64,7 +64,7 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
82438
82439 if (file) {
82440 seq_pad(m, ' ');
82441 - seq_file_path(m, file, "");
82442 + seq_file_path(m, file, "\n\\");
82443 }
82444
82445 seq_putc(m, '\n');
82446 diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
82447 index 350984a..0fb02a9 100644
82448 --- a/fs/proc/proc_net.c
82449 +++ b/fs/proc/proc_net.c
82450 @@ -23,9 +23,27 @@
82451 #include <linux/nsproxy.h>
82452 #include <net/net_namespace.h>
82453 #include <linux/seq_file.h>
82454 +#include <linux/grsecurity.h>
82455
82456 #include "internal.h"
82457
82458 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
82459 +static struct seq_operations *ipv6_seq_ops_addr;
82460 +
82461 +void register_ipv6_seq_ops_addr(struct seq_operations *addr)
82462 +{
82463 + ipv6_seq_ops_addr = addr;
82464 +}
82465 +
82466 +void unregister_ipv6_seq_ops_addr(void)
82467 +{
82468 + ipv6_seq_ops_addr = NULL;
82469 +}
82470 +
82471 +EXPORT_SYMBOL_GPL(register_ipv6_seq_ops_addr);
82472 +EXPORT_SYMBOL_GPL(unregister_ipv6_seq_ops_addr);
82473 +#endif
82474 +
82475 static inline struct net *PDE_NET(struct proc_dir_entry *pde)
82476 {
82477 return pde->parent->data;
82478 @@ -36,6 +54,8 @@ static struct net *get_proc_net(const struct inode *inode)
82479 return maybe_get_net(PDE_NET(PDE(inode)));
82480 }
82481
82482 +extern const struct seq_operations dev_seq_ops;
82483 +
82484 int seq_open_net(struct inode *ino, struct file *f,
82485 const struct seq_operations *ops, int size)
82486 {
82487 @@ -44,6 +64,14 @@ int seq_open_net(struct inode *ino, struct file *f,
82488
82489 BUG_ON(size < sizeof(*p));
82490
82491 + /* only permit access to /proc/net/dev */
82492 + if (
82493 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
82494 + ops != ipv6_seq_ops_addr &&
82495 +#endif
82496 + ops != &dev_seq_ops && gr_proc_is_restricted())
82497 + return -EACCES;
82498 +
82499 net = get_proc_net(ino);
82500 if (net == NULL)
82501 return -ENXIO;
82502 @@ -66,6 +94,9 @@ int single_open_net(struct inode *inode, struct file *file,
82503 int err;
82504 struct net *net;
82505
82506 + if (gr_proc_is_restricted())
82507 + return -EACCES;
82508 +
82509 err = -ENXIO;
82510 net = get_proc_net(inode);
82511 if (net == NULL)
82512 diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
82513 index fdda62e..cd7c75f 100644
82514 --- a/fs/proc/proc_sysctl.c
82515 +++ b/fs/proc/proc_sysctl.c
82516 @@ -11,13 +11,21 @@
82517 #include <linux/namei.h>
82518 #include <linux/mm.h>
82519 #include <linux/module.h>
82520 +#include <linux/nsproxy.h>
82521 +#ifdef CONFIG_GRKERNSEC
82522 +#include <net/net_namespace.h>
82523 +#endif
82524 #include "internal.h"
82525
82526 +extern int gr_handle_chroot_sysctl(const int op);
82527 +extern int gr_handle_sysctl_mod(const char *dirname, const char *name,
82528 + const int op);
82529 +
82530 static const struct dentry_operations proc_sys_dentry_operations;
82531 static const struct file_operations proc_sys_file_operations;
82532 -static const struct inode_operations proc_sys_inode_operations;
82533 +const struct inode_operations proc_sys_inode_operations;
82534 static const struct file_operations proc_sys_dir_file_operations;
82535 -static const struct inode_operations proc_sys_dir_operations;
82536 +const struct inode_operations proc_sys_dir_operations;
82537
82538 /* Support for permanently empty directories */
82539
82540 @@ -32,13 +40,17 @@ static bool is_empty_dir(struct ctl_table_header *head)
82541
82542 static void set_empty_dir(struct ctl_dir *dir)
82543 {
82544 - dir->header.ctl_table[0].child = sysctl_mount_point;
82545 + pax_open_kernel();
82546 + *(const void **)&dir->header.ctl_table[0].child = sysctl_mount_point;
82547 + pax_close_kernel();
82548 }
82549
82550 static void clear_empty_dir(struct ctl_dir *dir)
82551
82552 {
82553 - dir->header.ctl_table[0].child = NULL;
82554 + pax_open_kernel();
82555 + *(void **)&dir->header.ctl_table[0].child = NULL;
82556 + pax_close_kernel();
82557 }
82558
82559 void proc_sys_poll_notify(struct ctl_table_poll *poll)
82560 @@ -504,6 +516,9 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
82561
82562 err = NULL;
82563 d_set_d_op(dentry, &proc_sys_dentry_operations);
82564 +
82565 + gr_handle_proc_create(dentry, inode);
82566 +
82567 d_add(dentry, inode);
82568
82569 out:
82570 @@ -519,6 +534,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,
82571 struct inode *inode = file_inode(filp);
82572 struct ctl_table_header *head = grab_header(inode);
82573 struct ctl_table *table = PROC_I(inode)->sysctl_entry;
82574 + int op = write ? MAY_WRITE : MAY_READ;
82575 ssize_t error;
82576 size_t res;
82577
82578 @@ -530,7 +546,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,
82579 * and won't be until we finish.
82580 */
82581 error = -EPERM;
82582 - if (sysctl_perm(head, table, write ? MAY_WRITE : MAY_READ))
82583 + if (sysctl_perm(head, table, op))
82584 goto out;
82585
82586 /* if that can happen at all, it should be -EINVAL, not -EISDIR */
82587 @@ -538,6 +554,27 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,
82588 if (!table->proc_handler)
82589 goto out;
82590
82591 +#ifdef CONFIG_GRKERNSEC
82592 + error = -EPERM;
82593 + if (gr_handle_chroot_sysctl(op))
82594 + goto out;
82595 + dget(filp->f_path.dentry);
82596 + if (gr_handle_sysctl_mod(filp->f_path.dentry->d_parent->d_name.name, table->procname, op)) {
82597 + dput(filp->f_path.dentry);
82598 + goto out;
82599 + }
82600 + dput(filp->f_path.dentry);
82601 + if (!gr_acl_handle_open(filp->f_path.dentry, filp->f_path.mnt, op))
82602 + goto out;
82603 + if (write) {
82604 + if (current->nsproxy->net_ns != table->extra2) {
82605 + if (!capable(CAP_SYS_ADMIN))
82606 + goto out;
82607 + } else if (!ns_capable(current->nsproxy->net_ns->user_ns, CAP_NET_ADMIN))
82608 + goto out;
82609 + }
82610 +#endif
82611 +
82612 /* careful: calling conventions are nasty here */
82613 res = count;
82614 error = table->proc_handler(table, write, buf, &res, ppos);
82615 @@ -635,6 +672,9 @@ static bool proc_sys_fill_cache(struct file *file,
82616 return false;
82617 } else {
82618 d_set_d_op(child, &proc_sys_dentry_operations);
82619 +
82620 + gr_handle_proc_create(child, inode);
82621 +
82622 d_add(child, inode);
82623 }
82624 } else {
82625 @@ -678,6 +718,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table,
82626 if ((*pos)++ < ctx->pos)
82627 return true;
82628
82629 + if (!gr_acl_handle_hidden_file(file->f_path.dentry, file->f_path.mnt))
82630 + return 0;
82631 +
82632 if (unlikely(S_ISLNK(table->mode)))
82633 res = proc_sys_link_fill_cache(file, ctx, head, table);
82634 else
82635 @@ -771,6 +814,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct
82636 if (IS_ERR(head))
82637 return PTR_ERR(head);
82638
82639 + if (table && !gr_acl_handle_hidden_file(dentry, mnt))
82640 + return -ENOENT;
82641 +
82642 generic_fillattr(inode, stat);
82643 if (table)
82644 stat->mode = (stat->mode & S_IFMT) | table->mode;
82645 @@ -793,13 +839,13 @@ static const struct file_operations proc_sys_dir_file_operations = {
82646 .llseek = generic_file_llseek,
82647 };
82648
82649 -static const struct inode_operations proc_sys_inode_operations = {
82650 +const struct inode_operations proc_sys_inode_operations = {
82651 .permission = proc_sys_permission,
82652 .setattr = proc_sys_setattr,
82653 .getattr = proc_sys_getattr,
82654 };
82655
82656 -static const struct inode_operations proc_sys_dir_operations = {
82657 +const struct inode_operations proc_sys_dir_operations = {
82658 .lookup = proc_sys_lookup,
82659 .permission = proc_sys_permission,
82660 .setattr = proc_sys_setattr,
82661 @@ -876,7 +922,7 @@ static struct ctl_dir *find_subdir(struct ctl_dir *dir,
82662 static struct ctl_dir *new_dir(struct ctl_table_set *set,
82663 const char *name, int namelen)
82664 {
82665 - struct ctl_table *table;
82666 + ctl_table_no_const *table;
82667 struct ctl_dir *new;
82668 struct ctl_node *node;
82669 char *new_name;
82670 @@ -888,7 +934,7 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set,
82671 return NULL;
82672
82673 node = (struct ctl_node *)(new + 1);
82674 - table = (struct ctl_table *)(node + 1);
82675 + table = (ctl_table_no_const *)(node + 1);
82676 new_name = (char *)(table + 2);
82677 memcpy(new_name, name, namelen);
82678 new_name[namelen] = '\0';
82679 @@ -1057,7 +1103,8 @@ static int sysctl_check_table(const char *path, struct ctl_table *table)
82680 static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table *table,
82681 struct ctl_table_root *link_root)
82682 {
82683 - struct ctl_table *link_table, *entry, *link;
82684 + ctl_table_no_const *link_table, *link;
82685 + struct ctl_table *entry;
82686 struct ctl_table_header *links;
82687 struct ctl_node *node;
82688 char *link_name;
82689 @@ -1080,7 +1127,7 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table
82690 return NULL;
82691
82692 node = (struct ctl_node *)(links + 1);
82693 - link_table = (struct ctl_table *)(node + nr_entries);
82694 + link_table = (ctl_table_no_const *)(node + nr_entries);
82695 link_name = (char *)&link_table[nr_entries + 1];
82696
82697 for (link = link_table, entry = table; entry->procname; link++, entry++) {
82698 @@ -1328,8 +1375,8 @@ static int register_leaf_sysctl_tables(const char *path, char *pos,
82699 struct ctl_table_header ***subheader, struct ctl_table_set *set,
82700 struct ctl_table *table)
82701 {
82702 - struct ctl_table *ctl_table_arg = NULL;
82703 - struct ctl_table *entry, *files;
82704 + ctl_table_no_const *ctl_table_arg = NULL, *files = NULL;
82705 + struct ctl_table *entry;
82706 int nr_files = 0;
82707 int nr_dirs = 0;
82708 int err = -ENOMEM;
82709 @@ -1341,10 +1388,9 @@ static int register_leaf_sysctl_tables(const char *path, char *pos,
82710 nr_files++;
82711 }
82712
82713 - files = table;
82714 /* If there are mixed files and directories we need a new table */
82715 if (nr_dirs && nr_files) {
82716 - struct ctl_table *new;
82717 + ctl_table_no_const *new;
82718 files = kzalloc(sizeof(struct ctl_table) * (nr_files + 1),
82719 GFP_KERNEL);
82720 if (!files)
82721 @@ -1362,7 +1408,7 @@ static int register_leaf_sysctl_tables(const char *path, char *pos,
82722 /* Register everything except a directory full of subdirectories */
82723 if (nr_files || !nr_dirs) {
82724 struct ctl_table_header *header;
82725 - header = __register_sysctl_table(set, path, files);
82726 + header = __register_sysctl_table(set, path, files ? files : table);
82727 if (!header) {
82728 kfree(ctl_table_arg);
82729 goto out;
82730 diff --git a/fs/proc/root.c b/fs/proc/root.c
82731 index 68feb0f..2c04780 100644
82732 --- a/fs/proc/root.c
82733 +++ b/fs/proc/root.c
82734 @@ -185,7 +185,15 @@ void __init proc_root_init(void)
82735 proc_create_mount_point("openprom");
82736 #endif
82737 proc_tty_init();
82738 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
82739 +#ifdef CONFIG_GRKERNSEC_PROC_USER
82740 + proc_mkdir_mode("bus", S_IRUSR | S_IXUSR, NULL);
82741 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
82742 + proc_mkdir_mode("bus", S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP, NULL);
82743 +#endif
82744 +#else
82745 proc_mkdir("bus", NULL);
82746 +#endif
82747 proc_sys_init();
82748 }
82749
82750 diff --git a/fs/proc/stat.c b/fs/proc/stat.c
82751 index 510413eb..34d9a8c 100644
82752 --- a/fs/proc/stat.c
82753 +++ b/fs/proc/stat.c
82754 @@ -11,6 +11,7 @@
82755 #include <linux/irqnr.h>
82756 #include <linux/cputime.h>
82757 #include <linux/tick.h>
82758 +#include <linux/grsecurity.h>
82759
82760 #ifndef arch_irq_stat_cpu
82761 #define arch_irq_stat_cpu(cpu) 0
82762 @@ -87,6 +88,18 @@ static int show_stat(struct seq_file *p, void *v)
82763 u64 sum_softirq = 0;
82764 unsigned int per_softirq_sums[NR_SOFTIRQS] = {0};
82765 struct timespec boottime;
82766 + int unrestricted = 1;
82767 +
82768 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
82769 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
82770 + if (!uid_eq(current_uid(), GLOBAL_ROOT_UID)
82771 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
82772 + && !in_group_p(grsec_proc_gid)
82773 +#endif
82774 + )
82775 + unrestricted = 0;
82776 +#endif
82777 +#endif
82778
82779 user = nice = system = idle = iowait =
82780 irq = softirq = steal = 0;
82781 @@ -99,23 +112,25 @@ static int show_stat(struct seq_file *p, void *v)
82782 nice += kcpustat_cpu(i).cpustat[CPUTIME_NICE];
82783 system += kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM];
82784 idle += get_idle_time(i);
82785 - iowait += get_iowait_time(i);
82786 - irq += kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
82787 - softirq += kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
82788 - steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
82789 - guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
82790 - guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
82791 - sum += kstat_cpu_irqs_sum(i);
82792 - sum += arch_irq_stat_cpu(i);
82793 + if (unrestricted) {
82794 + iowait += get_iowait_time(i);
82795 + irq += kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
82796 + softirq += kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
82797 + steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
82798 + guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
82799 + guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
82800 + sum += kstat_cpu_irqs_sum(i);
82801 + sum += arch_irq_stat_cpu(i);
82802 + for (j = 0; j < NR_SOFTIRQS; j++) {
82803 + unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
82804
82805 - for (j = 0; j < NR_SOFTIRQS; j++) {
82806 - unsigned int softirq_stat = kstat_softirqs_cpu(j, i);
82807 -
82808 - per_softirq_sums[j] += softirq_stat;
82809 - sum_softirq += softirq_stat;
82810 + per_softirq_sums[j] += softirq_stat;
82811 + sum_softirq += softirq_stat;
82812 + }
82813 }
82814 }
82815 - sum += arch_irq_stat();
82816 + if (unrestricted)
82817 + sum += arch_irq_stat();
82818
82819 seq_puts(p, "cpu ");
82820 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user));
82821 @@ -136,12 +151,14 @@ static int show_stat(struct seq_file *p, void *v)
82822 nice = kcpustat_cpu(i).cpustat[CPUTIME_NICE];
82823 system = kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM];
82824 idle = get_idle_time(i);
82825 - iowait = get_iowait_time(i);
82826 - irq = kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
82827 - softirq = kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
82828 - steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
82829 - guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
82830 - guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
82831 + if (unrestricted) {
82832 + iowait = get_iowait_time(i);
82833 + irq = kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
82834 + softirq = kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ];
82835 + steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
82836 + guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
82837 + guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
82838 + }
82839 seq_printf(p, "cpu%d", i);
82840 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user));
82841 seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(nice));
82842 @@ -159,7 +176,7 @@ static int show_stat(struct seq_file *p, void *v)
82843
82844 /* sum again ? it could be updated? */
82845 for_each_irq_nr(j)
82846 - seq_put_decimal_ull(p, ' ', kstat_irqs_usr(j));
82847 + seq_put_decimal_ull(p, ' ', unrestricted ? kstat_irqs_usr(j) : 0ULL);
82848
82849 seq_printf(p,
82850 "\nctxt %llu\n"
82851 @@ -167,11 +184,11 @@ static int show_stat(struct seq_file *p, void *v)
82852 "processes %lu\n"
82853 "procs_running %lu\n"
82854 "procs_blocked %lu\n",
82855 - nr_context_switches(),
82856 + unrestricted ? nr_context_switches() : 0ULL,
82857 (unsigned long)jif,
82858 - total_forks,
82859 - nr_running(),
82860 - nr_iowait());
82861 + unrestricted ? total_forks : 0UL,
82862 + unrestricted ? nr_running() : 0UL,
82863 + unrestricted ? nr_iowait() : 0UL);
82864
82865 seq_printf(p, "softirq %llu", (unsigned long long)sum_softirq);
82866
82867 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
82868 index ca1e091..a048795 100644
82869 --- a/fs/proc/task_mmu.c
82870 +++ b/fs/proc/task_mmu.c
82871 @@ -13,12 +13,19 @@
82872 #include <linux/swap.h>
82873 #include <linux/swapops.h>
82874 #include <linux/mmu_notifier.h>
82875 +#include <linux/grsecurity.h>
82876
82877 #include <asm/elf.h>
82878 #include <asm/uaccess.h>
82879 #include <asm/tlbflush.h>
82880 #include "internal.h"
82881
82882 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82883 +#define PAX_RAND_FLAGS(_mm) (_mm != NULL && _mm != current->mm && \
82884 + (_mm->pax_flags & MF_PAX_RANDMMAP || \
82885 + _mm->pax_flags & MF_PAX_SEGMEXEC))
82886 +#endif
82887 +
82888 void task_mem(struct seq_file *m, struct mm_struct *mm)
82889 {
82890 unsigned long data, text, lib, swap, ptes, pmds;
82891 @@ -57,8 +64,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
82892 "VmLib:\t%8lu kB\n"
82893 "VmPTE:\t%8lu kB\n"
82894 "VmPMD:\t%8lu kB\n"
82895 - "VmSwap:\t%8lu kB\n",
82896 - hiwater_vm << (PAGE_SHIFT-10),
82897 + "VmSwap:\t%8lu kB\n"
82898 +
82899 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
82900 + "CsBase:\t%8lx\nCsLim:\t%8lx\n"
82901 +#endif
82902 +
82903 + ,hiwater_vm << (PAGE_SHIFT-10),
82904 total_vm << (PAGE_SHIFT-10),
82905 mm->locked_vm << (PAGE_SHIFT-10),
82906 mm->pinned_vm << (PAGE_SHIFT-10),
82907 @@ -68,7 +80,19 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
82908 mm->stack_vm << (PAGE_SHIFT-10), text, lib,
82909 ptes >> 10,
82910 pmds >> 10,
82911 - swap << (PAGE_SHIFT-10));
82912 + swap << (PAGE_SHIFT-10)
82913 +
82914 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
82915 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82916 + , PAX_RAND_FLAGS(mm) ? 0 : mm->context.user_cs_base
82917 + , PAX_RAND_FLAGS(mm) ? 0 : mm->context.user_cs_limit
82918 +#else
82919 + , mm->context.user_cs_base
82920 + , mm->context.user_cs_limit
82921 +#endif
82922 +#endif
82923 +
82924 + );
82925 }
82926
82927 unsigned long task_vsize(struct mm_struct *mm)
82928 @@ -285,13 +309,13 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
82929 pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
82930 }
82931
82932 - /* We don't show the stack guard page in /proc/maps */
82933 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82934 + start = PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_start;
82935 + end = PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_end;
82936 +#else
82937 start = vma->vm_start;
82938 - if (stack_guard_page_start(vma, start))
82939 - start += PAGE_SIZE;
82940 end = vma->vm_end;
82941 - if (stack_guard_page_end(vma, end))
82942 - end -= PAGE_SIZE;
82943 +#endif
82944
82945 seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
82946 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
82947 @@ -301,7 +325,11 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
82948 flags & VM_WRITE ? 'w' : '-',
82949 flags & VM_EXEC ? 'x' : '-',
82950 flags & VM_MAYSHARE ? 's' : 'p',
82951 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82952 + PAX_RAND_FLAGS(mm) ? 0UL : pgoff,
82953 +#else
82954 pgoff,
82955 +#endif
82956 MAJOR(dev), MINOR(dev), ino);
82957
82958 /*
82959 @@ -310,7 +338,7 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
82960 */
82961 if (file) {
82962 seq_pad(m, ' ');
82963 - seq_file_path(m, file, "\n");
82964 + seq_file_path(m, file, "\n\\");
82965 goto done;
82966 }
82967
82968 @@ -341,8 +369,9 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
82969 * Thread stack in /proc/PID/task/TID/maps or
82970 * the main process stack.
82971 */
82972 - if (!is_pid || (vma->vm_start <= mm->start_stack &&
82973 - vma->vm_end >= mm->start_stack)) {
82974 + if (!is_pid || (vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP)) ||
82975 + (vma->vm_start <= mm->start_stack &&
82976 + vma->vm_end >= mm->start_stack)) {
82977 name = "[stack]";
82978 } else {
82979 /* Thread stack in /proc/PID/maps */
82980 @@ -362,6 +391,12 @@ done:
82981
82982 static int show_map(struct seq_file *m, void *v, int is_pid)
82983 {
82984 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82985 + if (current->exec_id != m->exec_id) {
82986 + gr_log_badprocpid("maps");
82987 + return 0;
82988 + }
82989 +#endif
82990 show_map_vma(m, v, is_pid);
82991 m_cache_vma(m, v);
82992 return 0;
82993 @@ -620,9 +655,18 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
82994 .private = &mss,
82995 };
82996
82997 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
82998 + if (current->exec_id != m->exec_id) {
82999 + gr_log_badprocpid("smaps");
83000 + return 0;
83001 + }
83002 +#endif
83003 memset(&mss, 0, sizeof mss);
83004 - /* mmap_sem is held in m_start */
83005 - walk_page_vma(vma, &smaps_walk);
83006 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
83007 + if (!PAX_RAND_FLAGS(vma->vm_mm))
83008 +#endif
83009 + /* mmap_sem is held in m_start */
83010 + walk_page_vma(vma, &smaps_walk);
83011
83012 show_map_vma(m, vma, is_pid);
83013
83014 @@ -641,7 +685,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
83015 "KernelPageSize: %8lu kB\n"
83016 "MMUPageSize: %8lu kB\n"
83017 "Locked: %8lu kB\n",
83018 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
83019 + PAX_RAND_FLAGS(vma->vm_mm) ? 0UL : (vma->vm_end - vma->vm_start) >> 10,
83020 +#else
83021 (vma->vm_end - vma->vm_start) >> 10,
83022 +#endif
83023 mss.resident >> 10,
83024 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
83025 mss.shared_clean >> 10,
83026 @@ -1491,6 +1539,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
83027 char buffer[64];
83028 int nid;
83029
83030 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
83031 + if (current->exec_id != m->exec_id) {
83032 + gr_log_badprocpid("numa_maps");
83033 + return 0;
83034 + }
83035 +#endif
83036 +
83037 if (!mm)
83038 return 0;
83039
83040 @@ -1505,11 +1560,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
83041 mpol_to_str(buffer, sizeof(buffer), proc_priv->task_mempolicy);
83042 }
83043
83044 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
83045 + seq_printf(m, "%08lx %s", PAX_RAND_FLAGS(vma->vm_mm) ? 0UL : vma->vm_start, buffer);
83046 +#else
83047 seq_printf(m, "%08lx %s", vma->vm_start, buffer);
83048 +#endif
83049
83050 if (file) {
83051 seq_puts(m, " file=");
83052 - seq_file_path(m, file, "\n\t= ");
83053 + seq_file_path(m, file, "\n\t\\= ");
83054 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
83055 seq_puts(m, " heap");
83056 } else {
83057 diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
83058 index e0d64c9..c44c96e 100644
83059 --- a/fs/proc/task_nommu.c
83060 +++ b/fs/proc/task_nommu.c
83061 @@ -51,7 +51,7 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
83062 else
83063 bytes += kobjsize(mm);
83064
83065 - if (current->fs && current->fs->users > 1)
83066 + if (current->fs && atomic_read(&current->fs->users) > 1)
83067 sbytes += kobjsize(current->fs);
83068 else
83069 bytes += kobjsize(current->fs);
83070 @@ -180,7 +180,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
83071
83072 if (file) {
83073 seq_pad(m, ' ');
83074 - seq_file_path(m, file, "");
83075 + seq_file_path(m, file, "\n\\");
83076 } else if (mm) {
83077 pid_t tid = pid_of_stack(priv, vma, is_pid);
83078
83079 diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
83080 index 4e61388..1a2523d 100644
83081 --- a/fs/proc/vmcore.c
83082 +++ b/fs/proc/vmcore.c
83083 @@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count,
83084 nr_bytes = count;
83085
83086 /* If pfn is not ram, return zeros for sparse dump files */
83087 - if (pfn_is_ram(pfn) == 0)
83088 - memset(buf, 0, nr_bytes);
83089 - else {
83090 + if (pfn_is_ram(pfn) == 0) {
83091 + if (userbuf) {
83092 + if (clear_user((char __force_user *)buf, nr_bytes))
83093 + return -EFAULT;
83094 + } else
83095 + memset(buf, 0, nr_bytes);
83096 + } else {
83097 tmp = copy_oldmem_page(pfn, buf, nr_bytes,
83098 offset, userbuf);
83099 if (tmp < 0)
83100 @@ -170,7 +174,7 @@ int __weak remap_oldmem_pfn_range(struct vm_area_struct *vma,
83101 static int copy_to(void *target, void *src, size_t size, int userbuf)
83102 {
83103 if (userbuf) {
83104 - if (copy_to_user((char __user *) target, src, size))
83105 + if (copy_to_user((char __force_user *) target, src, size))
83106 return -EFAULT;
83107 } else {
83108 memcpy(target, src, size);
83109 @@ -233,7 +237,7 @@ static ssize_t __read_vmcore(char *buffer, size_t buflen, loff_t *fpos,
83110 if (*fpos < m->offset + m->size) {
83111 tsz = min_t(size_t, m->offset + m->size - *fpos, buflen);
83112 start = m->paddr + *fpos - m->offset;
83113 - tmp = read_from_oldmem(buffer, tsz, &start, userbuf);
83114 + tmp = read_from_oldmem((char __force_kernel *)buffer, tsz, &start, userbuf);
83115 if (tmp < 0)
83116 return tmp;
83117 buflen -= tsz;
83118 @@ -253,7 +257,7 @@ static ssize_t __read_vmcore(char *buffer, size_t buflen, loff_t *fpos,
83119 static ssize_t read_vmcore(struct file *file, char __user *buffer,
83120 size_t buflen, loff_t *fpos)
83121 {
83122 - return __read_vmcore((__force char *) buffer, buflen, fpos, 1);
83123 + return __read_vmcore((__force_kernel char *) buffer, buflen, fpos, 1);
83124 }
83125
83126 /*
83127 diff --git a/fs/qnx6/qnx6.h b/fs/qnx6/qnx6.h
83128 index d3fb2b6..43a8140 100644
83129 --- a/fs/qnx6/qnx6.h
83130 +++ b/fs/qnx6/qnx6.h
83131 @@ -74,7 +74,7 @@ enum {
83132 BYTESEX_BE,
83133 };
83134
83135 -static inline __u64 fs64_to_cpu(struct qnx6_sb_info *sbi, __fs64 n)
83136 +static inline __u64 __intentional_overflow(-1) fs64_to_cpu(struct qnx6_sb_info *sbi, __fs64 n)
83137 {
83138 if (sbi->s_bytesex == BYTESEX_LE)
83139 return le64_to_cpu((__force __le64)n);
83140 @@ -90,7 +90,7 @@ static inline __fs64 cpu_to_fs64(struct qnx6_sb_info *sbi, __u64 n)
83141 return (__force __fs64)cpu_to_be64(n);
83142 }
83143
83144 -static inline __u32 fs32_to_cpu(struct qnx6_sb_info *sbi, __fs32 n)
83145 +static inline __u32 __intentional_overflow(-1) fs32_to_cpu(struct qnx6_sb_info *sbi, __fs32 n)
83146 {
83147 if (sbi->s_bytesex == BYTESEX_LE)
83148 return le32_to_cpu((__force __le32)n);
83149 diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c
83150 index bb2869f..d34ada8 100644
83151 --- a/fs/quota/netlink.c
83152 +++ b/fs/quota/netlink.c
83153 @@ -44,7 +44,7 @@ static struct genl_family quota_genl_family = {
83154 void quota_send_warning(struct kqid qid, dev_t dev,
83155 const char warntype)
83156 {
83157 - static atomic_t seq;
83158 + static atomic_unchecked_t seq;
83159 struct sk_buff *skb;
83160 void *msg_head;
83161 int ret;
83162 @@ -60,7 +60,7 @@ void quota_send_warning(struct kqid qid, dev_t dev,
83163 "VFS: Not enough memory to send quota warning.\n");
83164 return;
83165 }
83166 - msg_head = genlmsg_put(skb, 0, atomic_add_return(1, &seq),
83167 + msg_head = genlmsg_put(skb, 0, atomic_add_return_unchecked(1, &seq),
83168 &quota_genl_family, 0, QUOTA_NL_C_WARNING);
83169 if (!msg_head) {
83170 printk(KERN_ERR
83171 diff --git a/fs/read_write.c b/fs/read_write.c
83172 index 819ef3f..f07222d 100644
83173 --- a/fs/read_write.c
83174 +++ b/fs/read_write.c
83175 @@ -505,7 +505,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
83176
83177 old_fs = get_fs();
83178 set_fs(get_ds());
83179 - p = (__force const char __user *)buf;
83180 + p = (const char __force_user *)buf;
83181 if (count > MAX_RW_COUNT)
83182 count = MAX_RW_COUNT;
83183 ret = __vfs_write(file, p, count, pos);
83184 diff --git a/fs/readdir.c b/fs/readdir.c
83185 index ced6791..936687b 100644
83186 --- a/fs/readdir.c
83187 +++ b/fs/readdir.c
83188 @@ -18,6 +18,7 @@
83189 #include <linux/security.h>
83190 #include <linux/syscalls.h>
83191 #include <linux/unistd.h>
83192 +#include <linux/namei.h>
83193
83194 #include <asm/uaccess.h>
83195
83196 @@ -71,6 +72,7 @@ struct old_linux_dirent {
83197 struct readdir_callback {
83198 struct dir_context ctx;
83199 struct old_linux_dirent __user * dirent;
83200 + struct file * file;
83201 int result;
83202 };
83203
83204 @@ -89,6 +91,10 @@ static int fillonedir(struct dir_context *ctx, const char *name, int namlen,
83205 buf->result = -EOVERFLOW;
83206 return -EOVERFLOW;
83207 }
83208 +
83209 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
83210 + return 0;
83211 +
83212 buf->result++;
83213 dirent = buf->dirent;
83214 if (!access_ok(VERIFY_WRITE, dirent,
83215 @@ -120,6 +126,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
83216 if (!f.file)
83217 return -EBADF;
83218
83219 + buf.file = f.file;
83220 error = iterate_dir(f.file, &buf.ctx);
83221 if (buf.result)
83222 error = buf.result;
83223 @@ -145,6 +152,7 @@ struct getdents_callback {
83224 struct dir_context ctx;
83225 struct linux_dirent __user * current_dir;
83226 struct linux_dirent __user * previous;
83227 + struct file * file;
83228 int count;
83229 int error;
83230 };
83231 @@ -167,6 +175,10 @@ static int filldir(struct dir_context *ctx, const char *name, int namlen,
83232 buf->error = -EOVERFLOW;
83233 return -EOVERFLOW;
83234 }
83235 +
83236 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
83237 + return 0;
83238 +
83239 dirent = buf->previous;
83240 if (dirent) {
83241 if (__put_user(offset, &dirent->d_off))
83242 @@ -212,6 +224,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
83243 if (!f.file)
83244 return -EBADF;
83245
83246 + buf.file = f.file;
83247 error = iterate_dir(f.file, &buf.ctx);
83248 if (error >= 0)
83249 error = buf.error;
83250 @@ -230,6 +243,7 @@ struct getdents_callback64 {
83251 struct dir_context ctx;
83252 struct linux_dirent64 __user * current_dir;
83253 struct linux_dirent64 __user * previous;
83254 + struct file *file;
83255 int count;
83256 int error;
83257 };
83258 @@ -246,6 +260,10 @@ static int filldir64(struct dir_context *ctx, const char *name, int namlen,
83259 buf->error = -EINVAL; /* only used if we fail.. */
83260 if (reclen > buf->count)
83261 return -EINVAL;
83262 +
83263 + if (!gr_acl_handle_filldir(buf->file, name, namlen, ino))
83264 + return 0;
83265 +
83266 dirent = buf->previous;
83267 if (dirent) {
83268 if (__put_user(offset, &dirent->d_off))
83269 @@ -293,6 +311,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd,
83270 if (!f.file)
83271 return -EBADF;
83272
83273 + buf.file = f.file;
83274 error = iterate_dir(f.file, &buf.ctx);
83275 if (error >= 0)
83276 error = buf.error;
83277 diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
83278 index 9c02d96..6562c10 100644
83279 --- a/fs/reiserfs/do_balan.c
83280 +++ b/fs/reiserfs/do_balan.c
83281 @@ -1887,7 +1887,7 @@ void do_balance(struct tree_balance *tb, struct item_head *ih,
83282 return;
83283 }
83284
83285 - atomic_inc(&fs_generation(tb->tb_sb));
83286 + atomic_inc_unchecked(&fs_generation(tb->tb_sb));
83287 do_balance_starts(tb);
83288
83289 /*
83290 diff --git a/fs/reiserfs/item_ops.c b/fs/reiserfs/item_ops.c
83291 index aca73dd..e3c558d 100644
83292 --- a/fs/reiserfs/item_ops.c
83293 +++ b/fs/reiserfs/item_ops.c
83294 @@ -724,18 +724,18 @@ static void errcatch_print_vi(struct virtual_item *vi)
83295 }
83296
83297 static struct item_operations errcatch_ops = {
83298 - errcatch_bytes_number,
83299 - errcatch_decrement_key,
83300 - errcatch_is_left_mergeable,
83301 - errcatch_print_item,
83302 - errcatch_check_item,
83303 + .bytes_number = errcatch_bytes_number,
83304 + .decrement_key = errcatch_decrement_key,
83305 + .is_left_mergeable = errcatch_is_left_mergeable,
83306 + .print_item = errcatch_print_item,
83307 + .check_item = errcatch_check_item,
83308
83309 - errcatch_create_vi,
83310 - errcatch_check_left,
83311 - errcatch_check_right,
83312 - errcatch_part_size,
83313 - errcatch_unit_num,
83314 - errcatch_print_vi
83315 + .create_vi = errcatch_create_vi,
83316 + .check_left = errcatch_check_left,
83317 + .check_right = errcatch_check_right,
83318 + .part_size = errcatch_part_size,
83319 + .unit_num = errcatch_unit_num,
83320 + .print_vi = errcatch_print_vi
83321 };
83322
83323 #if ! (TYPE_STAT_DATA == 0 && TYPE_INDIRECT == 1 && TYPE_DIRECT == 2 && TYPE_DIRENTRY == 3)
83324 diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
83325 index 621b9f3..af527fd 100644
83326 --- a/fs/reiserfs/procfs.c
83327 +++ b/fs/reiserfs/procfs.c
83328 @@ -114,7 +114,7 @@ static int show_super(struct seq_file *m, void *unused)
83329 "SMALL_TAILS " : "NO_TAILS ",
83330 replay_only(sb) ? "REPLAY_ONLY " : "",
83331 convert_reiserfs(sb) ? "CONV " : "",
83332 - atomic_read(&r->s_generation_counter),
83333 + atomic_read_unchecked(&r->s_generation_counter),
83334 SF(s_disk_reads), SF(s_disk_writes), SF(s_fix_nodes),
83335 SF(s_do_balance), SF(s_unneeded_left_neighbor),
83336 SF(s_good_search_by_key_reada), SF(s_bmaps),
83337 diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
83338 index 2adcde1..7d27bc8 100644
83339 --- a/fs/reiserfs/reiserfs.h
83340 +++ b/fs/reiserfs/reiserfs.h
83341 @@ -580,7 +580,7 @@ struct reiserfs_sb_info {
83342 /* Comment? -Hans */
83343 wait_queue_head_t s_wait;
83344 /* increased by one every time the tree gets re-balanced */
83345 - atomic_t s_generation_counter;
83346 + atomic_unchecked_t s_generation_counter;
83347
83348 /* File system properties. Currently holds on-disk FS format */
83349 unsigned long s_properties;
83350 @@ -2300,7 +2300,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
83351 #define REISERFS_USER_MEM 1 /* user memory mode */
83352
83353 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
83354 -#define get_generation(s) atomic_read (&fs_generation(s))
83355 +#define get_generation(s) atomic_read_unchecked (&fs_generation(s))
83356 #define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
83357 #define __fs_changed(gen,s) (gen != get_generation (s))
83358 #define fs_changed(gen,s) \
83359 diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
83360 index 4a62fe8..5dc2f5f 100644
83361 --- a/fs/reiserfs/super.c
83362 +++ b/fs/reiserfs/super.c
83363 @@ -1870,6 +1870,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
83364 sbi->s_mount_opt |= (1 << REISERFS_SMALLTAIL);
83365 sbi->s_mount_opt |= (1 << REISERFS_ERROR_RO);
83366 sbi->s_mount_opt |= (1 << REISERFS_BARRIER_FLUSH);
83367 +#ifdef CONFIG_REISERFS_FS_XATTR
83368 + /* turn on user xattrs by default */
83369 + sbi->s_mount_opt |= (1 << REISERFS_XATTRS_USER);
83370 +#endif
83371 /* no preallocation minimum, be smart in reiserfs_file_write instead */
83372 sbi->s_alloc_options.preallocmin = 0;
83373 /* Preallocate by 16 blocks (17-1) at once */
83374 diff --git a/fs/select.c b/fs/select.c
83375 index 0155473..29d751f 100644
83376 --- a/fs/select.c
83377 +++ b/fs/select.c
83378 @@ -20,6 +20,7 @@
83379 #include <linux/export.h>
83380 #include <linux/slab.h>
83381 #include <linux/poll.h>
83382 +#include <linux/security.h>
83383 #include <linux/personality.h> /* for STICKY_TIMEOUTS */
83384 #include <linux/file.h>
83385 #include <linux/fdtable.h>
83386 @@ -880,6 +881,7 @@ int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
83387 struct poll_list *walk = head;
83388 unsigned long todo = nfds;
83389
83390 + gr_learn_resource(current, RLIMIT_NOFILE, nfds, 1);
83391 if (nfds > rlimit(RLIMIT_NOFILE))
83392 return -EINVAL;
83393
83394 diff --git a/fs/seq_file.c b/fs/seq_file.c
83395 index ce9e39f..5c5a436 100644
83396 --- a/fs/seq_file.c
83397 +++ b/fs/seq_file.c
83398 @@ -12,6 +12,8 @@
83399 #include <linux/slab.h>
83400 #include <linux/cred.h>
83401 #include <linux/mm.h>
83402 +#include <linux/sched.h>
83403 +#include <linux/grsecurity.h>
83404
83405 #include <asm/uaccess.h>
83406 #include <asm/page.h>
83407 @@ -29,9 +31,9 @@ static void *seq_buf_alloc(unsigned long size)
83408 * __GFP_NORETRY to avoid oom-killings with high-order allocations -
83409 * it's better to fall back to vmalloc() than to kill things.
83410 */
83411 - buf = kmalloc(size, GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN);
83412 + buf = kmalloc(size, GFP_KERNEL | GFP_USERCOPY | __GFP_NORETRY | __GFP_NOWARN);
83413 if (!buf && size > PAGE_SIZE)
83414 - buf = vmalloc(size);
83415 + buf = vmalloc_usercopy(size);
83416 return buf;
83417 }
83418
83419 @@ -68,6 +70,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
83420 #ifdef CONFIG_USER_NS
83421 p->user_ns = file->f_cred->user_ns;
83422 #endif
83423 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
83424 + p->exec_id = current->exec_id;
83425 +#endif
83426
83427 /*
83428 * Wrappers around seq_open(e.g. swaps_open) need to be
83429 @@ -90,6 +95,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
83430 }
83431 EXPORT_SYMBOL(seq_open);
83432
83433 +
83434 +int seq_open_restrict(struct file *file, const struct seq_operations *op)
83435 +{
83436 + if (gr_proc_is_restricted())
83437 + return -EACCES;
83438 +
83439 + return seq_open(file, op);
83440 +}
83441 +EXPORT_SYMBOL(seq_open_restrict);
83442 +
83443 static int traverse(struct seq_file *m, loff_t offset)
83444 {
83445 loff_t pos = 0, index;
83446 @@ -161,7 +176,7 @@ Eoverflow:
83447 ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
83448 {
83449 struct seq_file *m = file->private_data;
83450 - size_t copied = 0;
83451 + ssize_t copied = 0;
83452 loff_t pos;
83453 size_t n;
83454 void *p;
83455 @@ -575,7 +590,7 @@ static void single_stop(struct seq_file *p, void *v)
83456 int single_open(struct file *file, int (*show)(struct seq_file *, void *),
83457 void *data)
83458 {
83459 - struct seq_operations *op = kmalloc(sizeof(*op), GFP_KERNEL);
83460 + seq_operations_no_const *op = kzalloc(sizeof(*op), GFP_KERNEL);
83461 int res = -ENOMEM;
83462
83463 if (op) {
83464 @@ -611,6 +626,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
83465 }
83466 EXPORT_SYMBOL(single_open_size);
83467
83468 +int single_open_restrict(struct file *file, int (*show)(struct seq_file *, void *),
83469 + void *data)
83470 +{
83471 + if (gr_proc_is_restricted())
83472 + return -EACCES;
83473 +
83474 + return single_open(file, show, data);
83475 +}
83476 +EXPORT_SYMBOL(single_open_restrict);
83477 +
83478 +
83479 int single_release(struct inode *inode, struct file *file)
83480 {
83481 const struct seq_operations *op = ((struct seq_file *)file->private_data)->op;
83482 diff --git a/fs/splice.c b/fs/splice.c
83483 index 5fc1e50..6ae8957 100644
83484 --- a/fs/splice.c
83485 +++ b/fs/splice.c
83486 @@ -192,7 +192,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
83487 pipe_lock(pipe);
83488
83489 for (;;) {
83490 - if (!pipe->readers) {
83491 + if (!atomic_read(&pipe->readers)) {
83492 send_sig(SIGPIPE, current, 0);
83493 if (!ret)
83494 ret = -EPIPE;
83495 @@ -215,7 +215,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
83496 page_nr++;
83497 ret += buf->len;
83498
83499 - if (pipe->files)
83500 + if (atomic_read(&pipe->files))
83501 do_wakeup = 1;
83502
83503 if (!--spd->nr_pages)
83504 @@ -246,9 +246,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
83505 do_wakeup = 0;
83506 }
83507
83508 - pipe->waiting_writers++;
83509 + atomic_inc(&pipe->waiting_writers);
83510 pipe_wait(pipe);
83511 - pipe->waiting_writers--;
83512 + atomic_dec(&pipe->waiting_writers);
83513 }
83514
83515 pipe_unlock(pipe);
83516 @@ -579,7 +579,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
83517 old_fs = get_fs();
83518 set_fs(get_ds());
83519 /* The cast to a user pointer is valid due to the set_fs() */
83520 - res = vfs_readv(file, (const struct iovec __user *)vec, vlen, &pos);
83521 + res = vfs_readv(file, (const struct iovec __force_user *)vec, vlen, &pos);
83522 set_fs(old_fs);
83523
83524 return res;
83525 @@ -594,7 +594,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count,
83526 old_fs = get_fs();
83527 set_fs(get_ds());
83528 /* The cast to a user pointer is valid due to the set_fs() */
83529 - res = vfs_write(file, (__force const char __user *)buf, count, &pos);
83530 + res = vfs_write(file, (const char __force_user *)buf, count, &pos);
83531 set_fs(old_fs);
83532
83533 return res;
83534 @@ -647,7 +647,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
83535 goto err;
83536
83537 this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
83538 - vec[i].iov_base = (void __user *) page_address(page);
83539 + vec[i].iov_base = (void __force_user *) page_address(page);
83540 vec[i].iov_len = this_len;
83541 spd.pages[i] = page;
83542 spd.nr_pages++;
83543 @@ -786,7 +786,7 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
83544 ops->release(pipe, buf);
83545 pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
83546 pipe->nrbufs--;
83547 - if (pipe->files)
83548 + if (atomic_read(&pipe->files))
83549 sd->need_wakeup = true;
83550 }
83551
83552 @@ -810,10 +810,10 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
83553 static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
83554 {
83555 while (!pipe->nrbufs) {
83556 - if (!pipe->writers)
83557 + if (!atomic_read(&pipe->writers))
83558 return 0;
83559
83560 - if (!pipe->waiting_writers && sd->num_spliced)
83561 + if (!atomic_read(&pipe->waiting_writers) && sd->num_spliced)
83562 return 0;
83563
83564 if (sd->flags & SPLICE_F_NONBLOCK)
83565 @@ -1028,7 +1028,7 @@ iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
83566 ops->release(pipe, buf);
83567 pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
83568 pipe->nrbufs--;
83569 - if (pipe->files)
83570 + if (atomic_read(&pipe->files))
83571 sd.need_wakeup = true;
83572 } else {
83573 buf->offset += ret;
83574 @@ -1188,7 +1188,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
83575 * out of the pipe right after the splice_to_pipe(). So set
83576 * PIPE_READERS appropriately.
83577 */
83578 - pipe->readers = 1;
83579 + atomic_set(&pipe->readers, 1);
83580
83581 current->splice_pipe = pipe;
83582 }
83583 @@ -1495,6 +1495,7 @@ static int get_iovec_page_array(const struct iovec __user *iov,
83584
83585 partial[buffers].offset = off;
83586 partial[buffers].len = plen;
83587 + partial[buffers].private = 0;
83588
83589 off = 0;
83590 len -= plen;
83591 @@ -1726,9 +1727,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
83592 ret = -ERESTARTSYS;
83593 break;
83594 }
83595 - if (!pipe->writers)
83596 + if (!atomic_read(&pipe->writers))
83597 break;
83598 - if (!pipe->waiting_writers) {
83599 + if (!atomic_read(&pipe->waiting_writers)) {
83600 if (flags & SPLICE_F_NONBLOCK) {
83601 ret = -EAGAIN;
83602 break;
83603 @@ -1760,7 +1761,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
83604 pipe_lock(pipe);
83605
83606 while (pipe->nrbufs >= pipe->buffers) {
83607 - if (!pipe->readers) {
83608 + if (!atomic_read(&pipe->readers)) {
83609 send_sig(SIGPIPE, current, 0);
83610 ret = -EPIPE;
83611 break;
83612 @@ -1773,9 +1774,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
83613 ret = -ERESTARTSYS;
83614 break;
83615 }
83616 - pipe->waiting_writers++;
83617 + atomic_inc(&pipe->waiting_writers);
83618 pipe_wait(pipe);
83619 - pipe->waiting_writers--;
83620 + atomic_dec(&pipe->waiting_writers);
83621 }
83622
83623 pipe_unlock(pipe);
83624 @@ -1811,14 +1812,14 @@ retry:
83625 pipe_double_lock(ipipe, opipe);
83626
83627 do {
83628 - if (!opipe->readers) {
83629 + if (!atomic_read(&opipe->readers)) {
83630 send_sig(SIGPIPE, current, 0);
83631 if (!ret)
83632 ret = -EPIPE;
83633 break;
83634 }
83635
83636 - if (!ipipe->nrbufs && !ipipe->writers)
83637 + if (!ipipe->nrbufs && !atomic_read(&ipipe->writers))
83638 break;
83639
83640 /*
83641 @@ -1915,7 +1916,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
83642 pipe_double_lock(ipipe, opipe);
83643
83644 do {
83645 - if (!opipe->readers) {
83646 + if (!atomic_read(&opipe->readers)) {
83647 send_sig(SIGPIPE, current, 0);
83648 if (!ret)
83649 ret = -EPIPE;
83650 @@ -1960,7 +1961,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
83651 * return EAGAIN if we have the potential of some data in the
83652 * future, otherwise just return 0
83653 */
83654 - if (!ret && ipipe->waiting_writers && (flags & SPLICE_F_NONBLOCK))
83655 + if (!ret && atomic_read(&ipipe->waiting_writers) && (flags & SPLICE_F_NONBLOCK))
83656 ret = -EAGAIN;
83657
83658 pipe_unlock(ipipe);
83659 diff --git a/fs/squashfs/xattr.c b/fs/squashfs/xattr.c
83660 index e5e0ddf..09598c4 100644
83661 --- a/fs/squashfs/xattr.c
83662 +++ b/fs/squashfs/xattr.c
83663 @@ -46,8 +46,8 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer,
83664 + msblk->xattr_table;
83665 int offset = SQUASHFS_XATTR_OFFSET(squashfs_i(inode)->xattr);
83666 int count = squashfs_i(inode)->xattr_count;
83667 - size_t rest = buffer_size;
83668 - int err;
83669 + size_t used = 0;
83670 + ssize_t err;
83671
83672 /* check that the file system has xattrs */
83673 if (msblk->xattr_id_table == NULL)
83674 @@ -68,11 +68,11 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer,
83675 name_size = le16_to_cpu(entry.size);
83676 handler = squashfs_xattr_handler(le16_to_cpu(entry.type));
83677 if (handler)
83678 - prefix_size = handler->list(d, buffer, rest, NULL,
83679 + prefix_size = handler->list(d, buffer, buffer ? buffer_size - used : 0, NULL,
83680 name_size, handler->flags);
83681 if (prefix_size) {
83682 if (buffer) {
83683 - if (prefix_size + name_size + 1 > rest) {
83684 + if (prefix_size + name_size + 1 > buffer_size - used) {
83685 err = -ERANGE;
83686 goto failed;
83687 }
83688 @@ -86,7 +86,7 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer,
83689 buffer[name_size] = '\0';
83690 buffer += name_size + 1;
83691 }
83692 - rest -= prefix_size + name_size + 1;
83693 + used += prefix_size + name_size + 1;
83694 } else {
83695 /* no handler or insuffficient privileges, so skip */
83696 err = squashfs_read_metadata(sb, NULL, &start,
83697 @@ -107,7 +107,7 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer,
83698 if (err < 0)
83699 goto failed;
83700 }
83701 - err = buffer_size - rest;
83702 + err = used;
83703
83704 failed:
83705 return err;
83706 diff --git a/fs/stat.c b/fs/stat.c
83707 index cccc1aa..7fe8951 100644
83708 --- a/fs/stat.c
83709 +++ b/fs/stat.c
83710 @@ -28,8 +28,13 @@ void generic_fillattr(struct inode *inode, struct kstat *stat)
83711 stat->gid = inode->i_gid;
83712 stat->rdev = inode->i_rdev;
83713 stat->size = i_size_read(inode);
83714 - stat->atime = inode->i_atime;
83715 - stat->mtime = inode->i_mtime;
83716 + if (is_sidechannel_device(inode) && !capable_nolog(CAP_MKNOD)) {
83717 + stat->atime = inode->i_ctime;
83718 + stat->mtime = inode->i_ctime;
83719 + } else {
83720 + stat->atime = inode->i_atime;
83721 + stat->mtime = inode->i_mtime;
83722 + }
83723 stat->ctime = inode->i_ctime;
83724 stat->blksize = (1 << inode->i_blkbits);
83725 stat->blocks = inode->i_blocks;
83726 @@ -52,9 +57,16 @@ EXPORT_SYMBOL(generic_fillattr);
83727 int vfs_getattr_nosec(struct path *path, struct kstat *stat)
83728 {
83729 struct inode *inode = d_backing_inode(path->dentry);
83730 + int retval;
83731
83732 - if (inode->i_op->getattr)
83733 - return inode->i_op->getattr(path->mnt, path->dentry, stat);
83734 + if (inode->i_op->getattr) {
83735 + retval = inode->i_op->getattr(path->mnt, path->dentry, stat);
83736 + if (!retval && is_sidechannel_device(inode) && !capable_nolog(CAP_MKNOD)) {
83737 + stat->atime = stat->ctime;
83738 + stat->mtime = stat->ctime;
83739 + }
83740 + return retval;
83741 + }
83742
83743 generic_fillattr(inode, stat);
83744 return 0;
83745 diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
83746 index 94374e4..b5da3a1 100644
83747 --- a/fs/sysfs/dir.c
83748 +++ b/fs/sysfs/dir.c
83749 @@ -33,6 +33,10 @@ void sysfs_warn_dup(struct kernfs_node *parent, const char *name)
83750 kfree(buf);
83751 }
83752
83753 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
83754 +extern int grsec_enable_sysfs_restrict;
83755 +#endif
83756 +
83757 /**
83758 * sysfs_create_dir_ns - create a directory for an object with a namespace tag
83759 * @kobj: object we're creating directory for
83760 @@ -41,9 +45,16 @@ void sysfs_warn_dup(struct kernfs_node *parent, const char *name)
83761 int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
83762 {
83763 struct kernfs_node *parent, *kn;
83764 + const char *name;
83765 + umode_t mode = S_IRWXU | S_IRUGO | S_IXUGO;
83766 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
83767 + const char *parent_name;
83768 +#endif
83769
83770 BUG_ON(!kobj);
83771
83772 + name = kobject_name(kobj);
83773 +
83774 if (kobj->parent)
83775 parent = kobj->parent->sd;
83776 else
83777 @@ -52,11 +63,24 @@ int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
83778 if (!parent)
83779 return -ENOENT;
83780
83781 - kn = kernfs_create_dir_ns(parent, kobject_name(kobj),
83782 - S_IRWXU | S_IRUGO | S_IXUGO, kobj, ns);
83783 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
83784 + parent_name = parent->name;
83785 + mode = S_IRWXU;
83786 +
83787 + if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) ||
83788 + (!strcmp(parent_name, "devices") && !strcmp(name, "system")) ||
83789 + (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse") || !strcmp(name, "ecryptfs"))) ||
83790 + (!strcmp(parent_name, "system") && !strcmp(name, "cpu")))
83791 + mode = S_IRWXU | S_IRUGO | S_IXUGO;
83792 + if (!grsec_enable_sysfs_restrict)
83793 + mode = S_IRWXU | S_IRUGO | S_IXUGO;
83794 +#endif
83795 +
83796 + kn = kernfs_create_dir_ns(parent, name,
83797 + mode, kobj, ns);
83798 if (IS_ERR(kn)) {
83799 if (PTR_ERR(kn) == -EEXIST)
83800 - sysfs_warn_dup(parent, kobject_name(kobj));
83801 + sysfs_warn_dup(parent, name);
83802 return PTR_ERR(kn);
83803 }
83804
83805 diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h
83806 index 6c21228..9afd5fe 100644
83807 --- a/fs/sysv/sysv.h
83808 +++ b/fs/sysv/sysv.h
83809 @@ -187,7 +187,7 @@ static inline u32 PDP_swab(u32 x)
83810 #endif
83811 }
83812
83813 -static inline __u32 fs32_to_cpu(struct sysv_sb_info *sbi, __fs32 n)
83814 +static inline __u32 __intentional_overflow(-1) fs32_to_cpu(struct sysv_sb_info *sbi, __fs32 n)
83815 {
83816 if (sbi->s_bytesex == BYTESEX_PDP)
83817 return PDP_swab((__force __u32)n);
83818 diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
83819 index cbc8d5d..56d2600 100644
83820 --- a/fs/tracefs/inode.c
83821 +++ b/fs/tracefs/inode.c
83822 @@ -53,7 +53,7 @@ static const struct file_operations tracefs_file_operations = {
83823 static struct tracefs_dir_ops {
83824 int (*mkdir)(const char *name);
83825 int (*rmdir)(const char *name);
83826 -} tracefs_ops;
83827 +} __no_const tracefs_ops __read_only;
83828
83829 static char *get_dname(struct dentry *dentry)
83830 {
83831 @@ -490,8 +490,10 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare
83832 if (!dentry)
83833 return NULL;
83834
83835 - tracefs_ops.mkdir = mkdir;
83836 - tracefs_ops.rmdir = rmdir;
83837 + pax_open_kernel();
83838 + *(void **)&tracefs_ops.mkdir = mkdir;
83839 + *(void **)&tracefs_ops.rmdir = rmdir;
83840 + pax_close_kernel();
83841
83842 return dentry;
83843 }
83844 diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
83845 index 97be412..974b37f 100644
83846 --- a/fs/ubifs/io.c
83847 +++ b/fs/ubifs/io.c
83848 @@ -155,7 +155,7 @@ int ubifs_leb_change(struct ubifs_info *c, int lnum, const void *buf, int len)
83849 return err;
83850 }
83851
83852 -int ubifs_leb_unmap(struct ubifs_info *c, int lnum)
83853 +int __intentional_overflow(-1) ubifs_leb_unmap(struct ubifs_info *c, int lnum)
83854 {
83855 int err;
83856
83857 diff --git a/fs/udf/misc.c b/fs/udf/misc.c
83858 index 71d1c25..084e2ad 100644
83859 --- a/fs/udf/misc.c
83860 +++ b/fs/udf/misc.c
83861 @@ -288,7 +288,7 @@ void udf_new_tag(char *data, uint16_t ident, uint16_t version, uint16_t snum,
83862
83863 u8 udf_tag_checksum(const struct tag *t)
83864 {
83865 - u8 *data = (u8 *)t;
83866 + const u8 *data = (const u8 *)t;
83867 u8 checksum = 0;
83868 int i;
83869 for (i = 0; i < sizeof(struct tag); ++i)
83870 diff --git a/fs/ufs/swab.h b/fs/ufs/swab.h
83871 index 8d974c4..b82f6ec 100644
83872 --- a/fs/ufs/swab.h
83873 +++ b/fs/ufs/swab.h
83874 @@ -22,7 +22,7 @@ enum {
83875 BYTESEX_BE
83876 };
83877
83878 -static inline u64
83879 +static inline u64 __intentional_overflow(-1)
83880 fs64_to_cpu(struct super_block *sbp, __fs64 n)
83881 {
83882 if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
83883 @@ -40,7 +40,7 @@ cpu_to_fs64(struct super_block *sbp, u64 n)
83884 return (__force __fs64)cpu_to_be64(n);
83885 }
83886
83887 -static inline u32
83888 +static inline u32 __intentional_overflow(-1)
83889 fs32_to_cpu(struct super_block *sbp, __fs32 n)
83890 {
83891 if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
83892 diff --git a/fs/utimes.c b/fs/utimes.c
83893 index aa138d6..5f3a811 100644
83894 --- a/fs/utimes.c
83895 +++ b/fs/utimes.c
83896 @@ -1,6 +1,7 @@
83897 #include <linux/compiler.h>
83898 #include <linux/file.h>
83899 #include <linux/fs.h>
83900 +#include <linux/security.h>
83901 #include <linux/linkage.h>
83902 #include <linux/mount.h>
83903 #include <linux/namei.h>
83904 @@ -103,6 +104,12 @@ static int utimes_common(struct path *path, struct timespec *times)
83905 }
83906 }
83907 retry_deleg:
83908 +
83909 + if (!gr_acl_handle_utime(path->dentry, path->mnt)) {
83910 + error = -EACCES;
83911 + goto mnt_drop_write_and_out;
83912 + }
83913 +
83914 mutex_lock(&inode->i_mutex);
83915 error = notify_change(path->dentry, &newattrs, &delegated_inode);
83916 mutex_unlock(&inode->i_mutex);
83917 diff --git a/fs/xattr.c b/fs/xattr.c
83918 index 072fee1..9e497b0 100644
83919 --- a/fs/xattr.c
83920 +++ b/fs/xattr.c
83921 @@ -227,6 +227,27 @@ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
83922 return rc;
83923 }
83924
83925 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
83926 +ssize_t
83927 +pax_getxattr(struct dentry *dentry, void *value, size_t size)
83928 +{
83929 + struct inode *inode = dentry->d_inode;
83930 + ssize_t error;
83931 +
83932 + error = inode_permission(inode, MAY_EXEC);
83933 + if (error)
83934 + return error;
83935 +
83936 + if (inode->i_op->getxattr)
83937 + error = inode->i_op->getxattr(dentry, XATTR_NAME_PAX_FLAGS, value, size);
83938 + else
83939 + error = -EOPNOTSUPP;
83940 +
83941 + return error;
83942 +}
83943 +EXPORT_SYMBOL(pax_getxattr);
83944 +#endif
83945 +
83946 ssize_t
83947 vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size)
83948 {
83949 @@ -319,7 +340,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
83950 * Extended attribute SET operations
83951 */
83952 static long
83953 -setxattr(struct dentry *d, const char __user *name, const void __user *value,
83954 +setxattr(struct path *path, const char __user *name, const void __user *value,
83955 size_t size, int flags)
83956 {
83957 int error;
83958 @@ -355,7 +376,12 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
83959 posix_acl_fix_xattr_from_user(kvalue, size);
83960 }
83961
83962 - error = vfs_setxattr(d, kname, kvalue, size, flags);
83963 + if (!gr_acl_handle_setxattr(path->dentry, path->mnt)) {
83964 + error = -EACCES;
83965 + goto out;
83966 + }
83967 +
83968 + error = vfs_setxattr(path->dentry, kname, kvalue, size, flags);
83969 out:
83970 if (vvalue)
83971 vfree(vvalue);
83972 @@ -376,7 +402,7 @@ retry:
83973 return error;
83974 error = mnt_want_write(path.mnt);
83975 if (!error) {
83976 - error = setxattr(path.dentry, name, value, size, flags);
83977 + error = setxattr(&path, name, value, size, flags);
83978 mnt_drop_write(path.mnt);
83979 }
83980 path_put(&path);
83981 @@ -412,7 +438,7 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
83982 audit_file(f.file);
83983 error = mnt_want_write_file(f.file);
83984 if (!error) {
83985 - error = setxattr(f.file->f_path.dentry, name, value, size, flags);
83986 + error = setxattr(&f.file->f_path, name, value, size, flags);
83987 mnt_drop_write_file(f.file);
83988 }
83989 fdput(f);
83990 @@ -598,7 +624,7 @@ SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
83991 * Extended attribute REMOVE operations
83992 */
83993 static long
83994 -removexattr(struct dentry *d, const char __user *name)
83995 +removexattr(struct path *path, const char __user *name)
83996 {
83997 int error;
83998 char kname[XATTR_NAME_MAX + 1];
83999 @@ -609,7 +635,10 @@ removexattr(struct dentry *d, const char __user *name)
84000 if (error < 0)
84001 return error;
84002
84003 - return vfs_removexattr(d, kname);
84004 + if (!gr_acl_handle_removexattr(path->dentry, path->mnt))
84005 + return -EACCES;
84006 +
84007 + return vfs_removexattr(path->dentry, kname);
84008 }
84009
84010 static int path_removexattr(const char __user *pathname,
84011 @@ -623,7 +652,7 @@ retry:
84012 return error;
84013 error = mnt_want_write(path.mnt);
84014 if (!error) {
84015 - error = removexattr(path.dentry, name);
84016 + error = removexattr(&path, name);
84017 mnt_drop_write(path.mnt);
84018 }
84019 path_put(&path);
84020 @@ -649,14 +678,16 @@ SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
84021 SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
84022 {
84023 struct fd f = fdget(fd);
84024 + struct path *path;
84025 int error = -EBADF;
84026
84027 if (!f.file)
84028 return error;
84029 + path = &f.file->f_path;
84030 audit_file(f.file);
84031 error = mnt_want_write_file(f.file);
84032 if (!error) {
84033 - error = removexattr(f.file->f_path.dentry, name);
84034 + error = removexattr(path, name);
84035 mnt_drop_write_file(f.file);
84036 }
84037 fdput(f);
84038 diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
84039 index 63e05b6..249b043 100644
84040 --- a/fs/xfs/libxfs/xfs_bmap.c
84041 +++ b/fs/xfs/libxfs/xfs_bmap.c
84042 @@ -554,7 +554,7 @@ xfs_bmap_validate_ret(
84043
84044 #else
84045 #define xfs_bmap_check_leaf_extents(cur, ip, whichfork) do { } while (0)
84046 -#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap)
84047 +#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) do { } while (0)
84048 #endif /* DEBUG */
84049
84050 /*
84051 diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c
84052 index 098cd78..724d3f8 100644
84053 --- a/fs/xfs/xfs_dir2_readdir.c
84054 +++ b/fs/xfs/xfs_dir2_readdir.c
84055 @@ -140,7 +140,12 @@ xfs_dir2_sf_getdents(
84056 ino = dp->d_ops->sf_get_ino(sfp, sfep);
84057 filetype = dp->d_ops->sf_get_ftype(sfep);
84058 ctx->pos = off & 0x7fffffff;
84059 - if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,
84060 + if (dp->i_df.if_u1.if_data == dp->i_df.if_u2.if_inline_data) {
84061 + char name[sfep->namelen];
84062 + memcpy(name, sfep->name, sfep->namelen);
84063 + if (!dir_emit(ctx, name, sfep->namelen, ino, xfs_dir3_get_dtype(dp->i_mount, filetype)))
84064 + return 0;
84065 + } else if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,
84066 xfs_dir3_get_dtype(dp->i_mount, filetype)))
84067 return 0;
84068 sfep = dp->d_ops->sf_nextentry(sfp, sfep);
84069 diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
84070 index ea7d85a..6d4b24b 100644
84071 --- a/fs/xfs/xfs_ioctl.c
84072 +++ b/fs/xfs/xfs_ioctl.c
84073 @@ -120,7 +120,7 @@ xfs_find_handle(
84074 }
84075
84076 error = -EFAULT;
84077 - if (copy_to_user(hreq->ohandle, &handle, hsize) ||
84078 + if (hsize > sizeof handle || copy_to_user(hreq->ohandle, &handle, hsize) ||
84079 copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
84080 goto out_put;
84081
84082 diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
84083 index 85f883d..db6eecc 100644
84084 --- a/fs/xfs/xfs_linux.h
84085 +++ b/fs/xfs/xfs_linux.h
84086 @@ -211,7 +211,7 @@ static inline kgid_t xfs_gid_to_kgid(__uint32_t gid)
84087 * of the compiler which do not like us using do_div in the middle
84088 * of large functions.
84089 */
84090 -static inline __u32 xfs_do_div(void *a, __u32 b, int n)
84091 +static inline __u32 __intentional_overflow(-1) xfs_do_div(void *a, __u32 b, int n)
84092 {
84093 __u32 mod;
84094
84095 @@ -267,7 +267,7 @@ static inline __u32 xfs_do_mod(void *a, __u32 b, int n)
84096 return 0;
84097 }
84098 #else
84099 -static inline __u32 xfs_do_div(void *a, __u32 b, int n)
84100 +static inline __u32 __intentional_overflow(-1) xfs_do_div(void *a, __u32 b, int n)
84101 {
84102 __u32 mod;
84103
84104 diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
84105 new file mode 100644
84106 index 0000000..31f8fe4
84107 --- /dev/null
84108 +++ b/grsecurity/Kconfig
84109 @@ -0,0 +1,1182 @@
84110 +#
84111 +# grecurity configuration
84112 +#
84113 +menu "Memory Protections"
84114 +depends on GRKERNSEC
84115 +
84116 +config GRKERNSEC_KMEM
84117 + bool "Deny reading/writing to /dev/kmem, /dev/mem, and /dev/port"
84118 + default y if GRKERNSEC_CONFIG_AUTO
84119 + select STRICT_DEVMEM if (X86 || ARM || TILE || S390)
84120 + help
84121 + If you say Y here, /dev/kmem and /dev/mem won't be allowed to
84122 + be written to or read from to modify or leak the contents of the running
84123 + kernel. /dev/port will also not be allowed to be opened, writing to
84124 + /dev/cpu/*/msr will be prevented, and support for kexec will be removed.
84125 + If you have module support disabled, enabling this will close up several
84126 + ways that are currently used to insert malicious code into the running
84127 + kernel.
84128 +
84129 + Even with this feature enabled, we still highly recommend that
84130 + you use the RBAC system, as it is still possible for an attacker to
84131 + modify the running kernel through other more obscure methods.
84132 +
84133 + It is highly recommended that you say Y here if you meet all the
84134 + conditions above.
84135 +
84136 +config GRKERNSEC_VM86
84137 + bool "Restrict VM86 mode"
84138 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_SERVER)
84139 + depends on X86_32
84140 +
84141 + help
84142 + If you say Y here, only processes with CAP_SYS_RAWIO will be able to
84143 + make use of a special execution mode on 32bit x86 processors called
84144 + Virtual 8086 (VM86) mode. XFree86 may need vm86 mode for certain
84145 + video cards and will still work with this option enabled. The purpose
84146 + of the option is to prevent exploitation of emulation errors in
84147 + virtualization of vm86 mode like the one discovered in VMWare in 2009.
84148 + Nearly all users should be able to enable this option.
84149 +
84150 +config GRKERNSEC_IO
84151 + bool "Disable privileged I/O"
84152 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_SERVER)
84153 + depends on X86
84154 + select RTC_CLASS
84155 + select RTC_INTF_DEV
84156 + select RTC_DRV_CMOS
84157 +
84158 + help
84159 + If you say Y here, all ioperm and iopl calls will return an error.
84160 + Ioperm and iopl can be used to modify the running kernel.
84161 + Unfortunately, some programs need this access to operate properly,
84162 + the most notable of which are XFree86 and hwclock. hwclock can be
84163 + remedied by having RTC support in the kernel, so real-time
84164 + clock support is enabled if this option is enabled, to ensure
84165 + that hwclock operates correctly. If hwclock still does not work,
84166 + either update udev or symlink /dev/rtc to /dev/rtc0.
84167 +
84168 + If you're using XFree86 or a version of Xorg from 2012 or earlier,
84169 + you may not be able to boot into a graphical environment with this
84170 + option enabled. In this case, you should use the RBAC system instead.
84171 +
84172 +config GRKERNSEC_BPF_HARDEN
84173 + bool "Harden BPF interpreter"
84174 + default y if GRKERNSEC_CONFIG_AUTO
84175 + help
84176 + Unlike previous versions of grsecurity that hardened both the BPF
84177 + interpreted code against corruption at rest as well as the JIT code
84178 + against JIT-spray attacks and attacker-controlled immediate values
84179 + for ROP, this feature will enforce disabling of the new eBPF JIT engine
84180 + and will ensure the interpreted code is read-only at rest. This feature
84181 + may be removed at a later time when eBPF stabilizes to entirely revert
84182 + back to the more secure pre-3.16 BPF interpreter/JIT.
84183 +
84184 + If you're using KERNEXEC, it's recommended that you enable this option
84185 + to supplement the hardening of the kernel.
84186 +
84187 +config GRKERNSEC_PERF_HARDEN
84188 + bool "Disable unprivileged PERF_EVENTS usage by default"
84189 + default y if GRKERNSEC_CONFIG_AUTO
84190 + depends on PERF_EVENTS
84191 + help
84192 + If you say Y here, the range of acceptable values for the
84193 + /proc/sys/kernel/perf_event_paranoid sysctl will be expanded to allow and
84194 + default to a new value: 3. When the sysctl is set to this value, no
84195 + unprivileged use of the PERF_EVENTS syscall interface will be permitted.
84196 +
84197 + Though PERF_EVENTS can be used legitimately for performance monitoring
84198 + and low-level application profiling, it is forced on regardless of
84199 + configuration, has been at fault for several vulnerabilities, and
84200 + creates new opportunities for side channels and other information leaks.
84201 +
84202 + This feature puts PERF_EVENTS into a secure default state and permits
84203 + the administrator to change out of it temporarily if unprivileged
84204 + application profiling is needed.
84205 +
84206 +config GRKERNSEC_RAND_THREADSTACK
84207 + bool "Insert random gaps between thread stacks"
84208 + default y if GRKERNSEC_CONFIG_AUTO
84209 + depends on PAX_RANDMMAP && !PPC
84210 + help
84211 + If you say Y here, a random-sized gap will be enforced between allocated
84212 + thread stacks. Glibc's NPTL and other threading libraries that
84213 + pass MAP_STACK to the kernel for thread stack allocation are supported.
84214 + The implementation currently provides 8 bits of entropy for the gap.
84215 +
84216 + Many distributions do not compile threaded remote services with the
84217 + -fstack-check argument to GCC, causing the variable-sized stack-based
84218 + allocator, alloca(), to not probe the stack on allocation. This
84219 + permits an unbounded alloca() to skip over any guard page and potentially
84220 + modify another thread's stack reliably. An enforced random gap
84221 + reduces the reliability of such an attack and increases the chance
84222 + that such a read/write to another thread's stack instead lands in
84223 + an unmapped area, causing a crash and triggering grsecurity's
84224 + anti-bruteforcing logic.
84225 +
84226 +config GRKERNSEC_PROC_MEMMAP
84227 + bool "Harden ASLR against information leaks and entropy reduction"
84228 + default y if (GRKERNSEC_CONFIG_AUTO || PAX_NOEXEC || PAX_ASLR)
84229 + depends on PAX_NOEXEC || PAX_ASLR
84230 + help
84231 + If you say Y here, the /proc/<pid>/maps and /proc/<pid>/stat files will
84232 + give no information about the addresses of its mappings if
84233 + PaX features that rely on random addresses are enabled on the task.
84234 + In addition to sanitizing this information and disabling other
84235 + dangerous sources of information, this option causes reads of sensitive
84236 + /proc/<pid> entries where the file descriptor was opened in a different
84237 + task than the one performing the read. Such attempts are logged.
84238 + This option also limits argv/env strings for suid/sgid binaries
84239 + to 512KB to prevent a complete exhaustion of the stack entropy provided
84240 + by ASLR. Finally, it places an 8MB stack resource limit on suid/sgid
84241 + binaries to prevent alternative mmap layouts from being abused.
84242 +
84243 + If you use PaX it is essential that you say Y here as it closes up
84244 + several holes that make full ASLR useless locally.
84245 +
84246 +
84247 +config GRKERNSEC_KSTACKOVERFLOW
84248 + bool "Prevent kernel stack overflows"
84249 + default y if GRKERNSEC_CONFIG_AUTO
84250 + depends on !IA64 && 64BIT
84251 + help
84252 + If you say Y here, the kernel's process stacks will be allocated
84253 + with vmalloc instead of the kernel's default allocator. This
84254 + introduces guard pages that in combination with the alloca checking
84255 + of the STACKLEAK feature prevents all forms of kernel process stack
84256 + overflow abuse. Note that this is different from kernel stack
84257 + buffer overflows.
84258 +
84259 +config GRKERNSEC_BRUTE
84260 + bool "Deter exploit bruteforcing"
84261 + default y if GRKERNSEC_CONFIG_AUTO
84262 + help
84263 + If you say Y here, attempts to bruteforce exploits against forking
84264 + daemons such as apache or sshd, as well as against suid/sgid binaries
84265 + will be deterred. When a child of a forking daemon is killed by PaX
84266 + or crashes due to an illegal instruction or other suspicious signal,
84267 + the parent process will be delayed 30 seconds upon every subsequent
84268 + fork until the administrator is able to assess the situation and
84269 + restart the daemon.
84270 + In the suid/sgid case, the attempt is logged, the user has all their
84271 + existing instances of the suid/sgid binary terminated and will
84272 + be unable to execute any suid/sgid binaries for 15 minutes.
84273 +
84274 + It is recommended that you also enable signal logging in the auditing
84275 + section so that logs are generated when a process triggers a suspicious
84276 + signal.
84277 + If the sysctl option is enabled, a sysctl option with name
84278 + "deter_bruteforce" is created.
84279 +
84280 +config GRKERNSEC_MODHARDEN
84281 + bool "Harden module auto-loading"
84282 + default y if GRKERNSEC_CONFIG_AUTO
84283 + depends on MODULES
84284 + help
84285 + If you say Y here, module auto-loading in response to use of some
84286 + feature implemented by an unloaded module will be restricted to
84287 + root users. Enabling this option helps defend against attacks
84288 + by unprivileged users who abuse the auto-loading behavior to
84289 + cause a vulnerable module to load that is then exploited.
84290 +
84291 + If this option prevents a legitimate use of auto-loading for a
84292 + non-root user, the administrator can execute modprobe manually
84293 + with the exact name of the module mentioned in the alert log.
84294 + Alternatively, the administrator can add the module to the list
84295 + of modules loaded at boot by modifying init scripts.
84296 +
84297 + Modification of init scripts will most likely be needed on
84298 + Ubuntu servers with encrypted home directory support enabled,
84299 + as the first non-root user logging in will cause the ecb(aes),
84300 + ecb(aes)-all, cbc(aes), and cbc(aes)-all modules to be loaded.
84301 +
84302 +config GRKERNSEC_HIDESYM
84303 + bool "Hide kernel symbols"
84304 + default y if GRKERNSEC_CONFIG_AUTO
84305 + select PAX_USERCOPY_SLABS
84306 + help
84307 + If you say Y here, getting information on loaded modules, and
84308 + displaying all kernel symbols through a syscall will be restricted
84309 + to users with CAP_SYS_MODULE. For software compatibility reasons,
84310 + /proc/kallsyms will be restricted to the root user. The RBAC
84311 + system can hide that entry even from root.
84312 +
84313 + This option also prevents leaking of kernel addresses through
84314 + several /proc entries.
84315 +
84316 + Note that this option is only effective provided the following
84317 + conditions are met:
84318 + 1) The kernel using grsecurity is not precompiled by some distribution
84319 + 2) You have also enabled GRKERNSEC_DMESG
84320 + 3) You are using the RBAC system and hiding other files such as your
84321 + kernel image and System.map. Alternatively, enabling this option
84322 + causes the permissions on /boot, /lib/modules, and the kernel
84323 + source directory to change at compile time to prevent
84324 + reading by non-root users.
84325 + If the above conditions are met, this option will aid in providing a
84326 + useful protection against local kernel exploitation of overflows
84327 + and arbitrary read/write vulnerabilities.
84328 +
84329 + It is highly recommended that you enable GRKERNSEC_PERF_HARDEN
84330 + in addition to this feature.
84331 +
84332 +config GRKERNSEC_RANDSTRUCT
84333 + bool "Randomize layout of sensitive kernel structures"
84334 + default y if GRKERNSEC_CONFIG_AUTO
84335 + select GRKERNSEC_HIDESYM
84336 + select MODVERSIONS if MODULES
84337 + help
84338 + If you say Y here, the layouts of a number of sensitive kernel
84339 + structures (task, fs, cred, etc) and all structures composed entirely
84340 + of function pointers (aka "ops" structs) will be randomized at compile-time.
84341 + This can introduce the requirement of an additional infoleak
84342 + vulnerability for exploits targeting these structure types.
84343 +
84344 + Enabling this feature will introduce some performance impact, slightly
84345 + increase memory usage, and prevent the use of forensic tools like
84346 + Volatility against the system (unless the kernel source tree isn't
84347 + cleaned after kernel installation).
84348 +
84349 + The seed used for compilation is located at tools/gcc/randomize_layout_seed.h.
84350 + It remains after a make clean to allow for external modules to be compiled
84351 + with the existing seed and will be removed by a make mrproper or
84352 + make distclean.
84353 +
84354 + Note that the implementation requires gcc 4.6.4. or newer. You may need
84355 + to install the supporting headers explicitly in addition to the normal
84356 + gcc package.
84357 +
84358 +config GRKERNSEC_RANDSTRUCT_PERFORMANCE
84359 + bool "Use cacheline-aware structure randomization"
84360 + depends on GRKERNSEC_RANDSTRUCT
84361 + default y if GRKERNSEC_CONFIG_PRIORITY_PERF
84362 + help
84363 + If you say Y here, the RANDSTRUCT randomization will make a best effort
84364 + at restricting randomization to cacheline-sized groups of elements. It
84365 + will further not randomize bitfields in structures. This reduces the
84366 + performance hit of RANDSTRUCT at the cost of weakened randomization.
84367 +
84368 +config GRKERNSEC_KERN_LOCKOUT
84369 + bool "Active kernel exploit response"
84370 + default y if GRKERNSEC_CONFIG_AUTO
84371 + depends on X86 || ARM || PPC || SPARC
84372 + help
84373 + If you say Y here, when a PaX alert is triggered due to suspicious
84374 + activity in the kernel (from KERNEXEC/UDEREF/USERCOPY)
84375 + or an OOPS occurs due to bad memory accesses, instead of just
84376 + terminating the offending process (and potentially allowing
84377 + a subsequent exploit from the same user), we will take one of two
84378 + actions:
84379 + If the user was root, we will panic the system
84380 + If the user was non-root, we will log the attempt, terminate
84381 + all processes owned by the user, then prevent them from creating
84382 + any new processes until the system is restarted
84383 + This deters repeated kernel exploitation/bruteforcing attempts
84384 + and is useful for later forensics.
84385 +
84386 +config GRKERNSEC_OLD_ARM_USERLAND
84387 + bool "Old ARM userland compatibility"
84388 + depends on ARM && (CPU_V6 || CPU_V6K || CPU_V7)
84389 + help
84390 + If you say Y here, stubs of executable code to perform such operations
84391 + as "compare-exchange" will be placed at fixed locations in the ARM vector
84392 + table. This is unfortunately needed for old ARM userland meant to run
84393 + across a wide range of processors. Without this option enabled,
84394 + the get_tls and data memory barrier stubs will be emulated by the kernel,
84395 + which is enough for Linaro userlands or other userlands designed for v6
84396 + and newer ARM CPUs. It's recommended that you try without this option enabled
84397 + first, and only enable it if your userland does not boot (it will likely fail
84398 + at init time).
84399 +
84400 +endmenu
84401 +menu "Role Based Access Control Options"
84402 +depends on GRKERNSEC
84403 +
84404 +config GRKERNSEC_RBAC_DEBUG
84405 + bool
84406 +
84407 +config GRKERNSEC_NO_RBAC
84408 + bool "Disable RBAC system"
84409 + help
84410 + If you say Y here, the /dev/grsec device will be removed from the kernel,
84411 + preventing the RBAC system from being enabled. You should only say Y
84412 + here if you have no intention of using the RBAC system, so as to prevent
84413 + an attacker with root access from misusing the RBAC system to hide files
84414 + and processes when loadable module support and /dev/[k]mem have been
84415 + locked down.
84416 +
84417 +config GRKERNSEC_ACL_HIDEKERN
84418 + bool "Hide kernel processes"
84419 + help
84420 + If you say Y here, all kernel threads will be hidden to all
84421 + processes but those whose subject has the "view hidden processes"
84422 + flag.
84423 +
84424 +config GRKERNSEC_ACL_MAXTRIES
84425 + int "Maximum tries before password lockout"
84426 + default 3
84427 + help
84428 + This option enforces the maximum number of times a user can attempt
84429 + to authorize themselves with the grsecurity RBAC system before being
84430 + denied the ability to attempt authorization again for a specified time.
84431 + The lower the number, the harder it will be to brute-force a password.
84432 +
84433 +config GRKERNSEC_ACL_TIMEOUT
84434 + int "Time to wait after max password tries, in seconds"
84435 + default 30
84436 + help
84437 + This option specifies the time the user must wait after attempting to
84438 + authorize to the RBAC system with the maximum number of invalid
84439 + passwords. The higher the number, the harder it will be to brute-force
84440 + a password.
84441 +
84442 +endmenu
84443 +menu "Filesystem Protections"
84444 +depends on GRKERNSEC
84445 +
84446 +config GRKERNSEC_PROC
84447 + bool "Proc restrictions"
84448 + default y if GRKERNSEC_CONFIG_AUTO
84449 + help
84450 + If you say Y here, the permissions of the /proc filesystem
84451 + will be altered to enhance system security and privacy. You MUST
84452 + choose either a user only restriction or a user and group restriction.
84453 + Depending upon the option you choose, you can either restrict users to
84454 + see only the processes they themselves run, or choose a group that can
84455 + view all processes and files normally restricted to root if you choose
84456 + the "restrict to user only" option. NOTE: If you're running identd or
84457 + ntpd as a non-root user, you will have to run it as the group you
84458 + specify here.
84459 +
84460 +config GRKERNSEC_PROC_USER
84461 + bool "Restrict /proc to user only"
84462 + depends on GRKERNSEC_PROC
84463 + help
84464 + If you say Y here, non-root users will only be able to view their own
84465 + processes, and restricts them from viewing network-related information,
84466 + and viewing kernel symbol and module information.
84467 +
84468 +config GRKERNSEC_PROC_USERGROUP
84469 + bool "Allow special group"
84470 + default y if GRKERNSEC_CONFIG_AUTO
84471 + depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USER
84472 + help
84473 + If you say Y here, you will be able to select a group that will be
84474 + able to view all processes and network-related information. If you've
84475 + enabled GRKERNSEC_HIDESYM, kernel and symbol information may still
84476 + remain hidden. This option is useful if you want to run identd as
84477 + a non-root user. The group you select may also be chosen at boot time
84478 + via "grsec_proc_gid=" on the kernel commandline.
84479 +
84480 +config GRKERNSEC_PROC_GID
84481 + int "GID for special group"
84482 + depends on GRKERNSEC_PROC_USERGROUP
84483 + default 1001
84484 +
84485 +config GRKERNSEC_PROC_ADD
84486 + bool "Additional restrictions"
84487 + default y if GRKERNSEC_CONFIG_AUTO
84488 + depends on GRKERNSEC_PROC_USER || GRKERNSEC_PROC_USERGROUP
84489 + help
84490 + If you say Y here, additional restrictions will be placed on
84491 + /proc that keep normal users from viewing device information and
84492 + slabinfo information that could be useful for exploits.
84493 +
84494 +config GRKERNSEC_LINK
84495 + bool "Linking restrictions"
84496 + default y if GRKERNSEC_CONFIG_AUTO
84497 + help
84498 + If you say Y here, /tmp race exploits will be prevented, since users
84499 + will no longer be able to follow symlinks owned by other users in
84500 + world-writable +t directories (e.g. /tmp), unless the owner of the
84501 + symlink is the owner of the directory. users will also not be
84502 + able to hardlink to files they do not own. If the sysctl option is
84503 + enabled, a sysctl option with name "linking_restrictions" is created.
84504 +
84505 +config GRKERNSEC_SYMLINKOWN
84506 + bool "Kernel-enforced SymlinksIfOwnerMatch"
84507 + default y if GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_SERVER
84508 + help
84509 + Apache's SymlinksIfOwnerMatch option has an inherent race condition
84510 + that prevents it from being used as a security feature. As Apache
84511 + verifies the symlink by performing a stat() against the target of
84512 + the symlink before it is followed, an attacker can setup a symlink
84513 + to point to a same-owned file, then replace the symlink with one
84514 + that targets another user's file just after Apache "validates" the
84515 + symlink -- a classic TOCTOU race. If you say Y here, a complete,
84516 + race-free replacement for Apache's "SymlinksIfOwnerMatch" option
84517 + will be in place for the group you specify. If the sysctl option
84518 + is enabled, a sysctl option with name "enforce_symlinksifowner" is
84519 + created.
84520 +
84521 +config GRKERNSEC_SYMLINKOWN_GID
84522 + int "GID for users with kernel-enforced SymlinksIfOwnerMatch"
84523 + depends on GRKERNSEC_SYMLINKOWN
84524 + default 1006
84525 + help
84526 + Setting this GID determines what group kernel-enforced
84527 + SymlinksIfOwnerMatch will be enabled for. If the sysctl option
84528 + is enabled, a sysctl option with name "symlinkown_gid" is created.
84529 +
84530 +config GRKERNSEC_FIFO
84531 + bool "FIFO restrictions"
84532 + default y if GRKERNSEC_CONFIG_AUTO
84533 + help
84534 + If you say Y here, users will not be able to write to FIFOs they don't
84535 + own in world-writable +t directories (e.g. /tmp), unless the owner of
84536 + the FIFO is the same owner of the directory it's held in. If the sysctl
84537 + option is enabled, a sysctl option with name "fifo_restrictions" is
84538 + created.
84539 +
84540 +config GRKERNSEC_SYSFS_RESTRICT
84541 + bool "Sysfs/debugfs restriction"
84542 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_SERVER)
84543 + depends on SYSFS
84544 + help
84545 + If you say Y here, sysfs (the pseudo-filesystem mounted at /sys) and
84546 + any filesystem normally mounted under it (e.g. debugfs) will be
84547 + mostly accessible only by root. These filesystems generally provide access
84548 + to hardware and debug information that isn't appropriate for unprivileged
84549 + users of the system. Sysfs and debugfs have also become a large source
84550 + of new vulnerabilities, ranging from infoleaks to local compromise.
84551 + There has been very little oversight with an eye toward security involved
84552 + in adding new exporters of information to these filesystems, so their
84553 + use is discouraged.
84554 + For reasons of compatibility, a few directories have been whitelisted
84555 + for access by non-root users:
84556 + /sys/fs/selinux
84557 + /sys/fs/fuse
84558 + /sys/devices/system/cpu
84559 +
84560 +config GRKERNSEC_ROFS
84561 + bool "Runtime read-only mount protection"
84562 + depends on SYSCTL
84563 + help
84564 + If you say Y here, a sysctl option with name "romount_protect" will
84565 + be created. By setting this option to 1 at runtime, filesystems
84566 + will be protected in the following ways:
84567 + * No new writable mounts will be allowed
84568 + * Existing read-only mounts won't be able to be remounted read/write
84569 + * Write operations will be denied on all block devices
84570 + This option acts independently of grsec_lock: once it is set to 1,
84571 + it cannot be turned off. Therefore, please be mindful of the resulting
84572 + behavior if this option is enabled in an init script on a read-only
84573 + filesystem.
84574 + Also be aware that as with other root-focused features, GRKERNSEC_KMEM
84575 + and GRKERNSEC_IO should be enabled and module loading disabled via
84576 + config or at runtime.
84577 + This feature is mainly intended for secure embedded systems.
84578 +
84579 +
84580 +config GRKERNSEC_DEVICE_SIDECHANNEL
84581 + bool "Eliminate stat/notify-based device sidechannels"
84582 + default y if GRKERNSEC_CONFIG_AUTO
84583 + help
84584 + If you say Y here, timing analyses on block or character
84585 + devices like /dev/ptmx using stat or inotify/dnotify/fanotify
84586 + will be thwarted for unprivileged users. If a process without
84587 + CAP_MKNOD stats such a device, the last access and last modify times
84588 + will match the device's create time. No access or modify events
84589 + will be triggered through inotify/dnotify/fanotify for such devices.
84590 + This feature will prevent attacks that may at a minimum
84591 + allow an attacker to determine the administrator's password length.
84592 +
84593 +config GRKERNSEC_CHROOT
84594 + bool "Chroot jail restrictions"
84595 + default y if GRKERNSEC_CONFIG_AUTO
84596 + help
84597 + If you say Y here, you will be able to choose several options that will
84598 + make breaking out of a chrooted jail much more difficult. If you
84599 + encounter no software incompatibilities with the following options, it
84600 + is recommended that you enable each one.
84601 +
84602 + Note that the chroot restrictions are not intended to apply to "chroots"
84603 + to directories that are simple bind mounts of the global root filesystem.
84604 + For several other reasons, a user shouldn't expect any significant
84605 + security by performing such a chroot.
84606 +
84607 +config GRKERNSEC_CHROOT_MOUNT
84608 + bool "Deny mounts"
84609 + default y if GRKERNSEC_CONFIG_AUTO
84610 + depends on GRKERNSEC_CHROOT
84611 + help
84612 + If you say Y here, processes inside a chroot will not be able to
84613 + mount or remount filesystems. If the sysctl option is enabled, a
84614 + sysctl option with name "chroot_deny_mount" is created.
84615 +
84616 +config GRKERNSEC_CHROOT_DOUBLE
84617 + bool "Deny double-chroots"
84618 + default y if GRKERNSEC_CONFIG_AUTO
84619 + depends on GRKERNSEC_CHROOT
84620 + help
84621 + If you say Y here, processes inside a chroot will not be able to chroot
84622 + again outside the chroot. This is a widely used method of breaking
84623 + out of a chroot jail and should not be allowed. If the sysctl
84624 + option is enabled, a sysctl option with name
84625 + "chroot_deny_chroot" is created.
84626 +
84627 +config GRKERNSEC_CHROOT_PIVOT
84628 + bool "Deny pivot_root in chroot"
84629 + default y if GRKERNSEC_CONFIG_AUTO
84630 + depends on GRKERNSEC_CHROOT
84631 + help
84632 + If you say Y here, processes inside a chroot will not be able to use
84633 + a function called pivot_root() that was introduced in Linux 2.3.41. It
84634 + works similar to chroot in that it changes the root filesystem. This
84635 + function could be misused in a chrooted process to attempt to break out
84636 + of the chroot, and therefore should not be allowed. If the sysctl
84637 + option is enabled, a sysctl option with name "chroot_deny_pivot" is
84638 + created.
84639 +
84640 +config GRKERNSEC_CHROOT_CHDIR
84641 + bool "Enforce chdir(\"/\") on all chroots"
84642 + default y if GRKERNSEC_CONFIG_AUTO
84643 + depends on GRKERNSEC_CHROOT
84644 + help
84645 + If you say Y here, the current working directory of all newly-chrooted
84646 + applications will be set to the the root directory of the chroot.
84647 + The man page on chroot(2) states:
84648 + Note that this call does not change the current working
84649 + directory, so that `.' can be outside the tree rooted at
84650 + `/'. In particular, the super-user can escape from a
84651 + `chroot jail' by doing `mkdir foo; chroot foo; cd ..'.
84652 +
84653 + It is recommended that you say Y here, since it's not known to break
84654 + any software. If the sysctl option is enabled, a sysctl option with
84655 + name "chroot_enforce_chdir" is created.
84656 +
84657 +config GRKERNSEC_CHROOT_CHMOD
84658 + bool "Deny (f)chmod +s"
84659 + default y if GRKERNSEC_CONFIG_AUTO
84660 + depends on GRKERNSEC_CHROOT
84661 + help
84662 + If you say Y here, processes inside a chroot will not be able to chmod
84663 + or fchmod files to make them have suid or sgid bits. This protects
84664 + against another published method of breaking a chroot. If the sysctl
84665 + option is enabled, a sysctl option with name "chroot_deny_chmod" is
84666 + created.
84667 +
84668 +config GRKERNSEC_CHROOT_FCHDIR
84669 + bool "Deny fchdir and fhandle out of chroot"
84670 + default y if GRKERNSEC_CONFIG_AUTO
84671 + depends on GRKERNSEC_CHROOT
84672 + help
84673 + If you say Y here, a well-known method of breaking chroots by fchdir'ing
84674 + to a file descriptor of the chrooting process that points to a directory
84675 + outside the filesystem will be stopped. Additionally, this option prevents
84676 + use of the recently-created syscall for opening files by a guessable "file
84677 + handle" inside a chroot. If the sysctl option is enabled, a sysctl option
84678 + with name "chroot_deny_fchdir" is created.
84679 +
84680 +config GRKERNSEC_CHROOT_MKNOD
84681 + bool "Deny mknod"
84682 + default y if GRKERNSEC_CONFIG_AUTO
84683 + depends on GRKERNSEC_CHROOT
84684 + help
84685 + If you say Y here, processes inside a chroot will not be allowed to
84686 + mknod. The problem with using mknod inside a chroot is that it
84687 + would allow an attacker to create a device entry that is the same
84688 + as one on the physical root of your system, which could range from
84689 + anything from the console device to a device for your harddrive (which
84690 + they could then use to wipe the drive or steal data). It is recommended
84691 + that you say Y here, unless you run into software incompatibilities.
84692 + If the sysctl option is enabled, a sysctl option with name
84693 + "chroot_deny_mknod" is created.
84694 +
84695 +config GRKERNSEC_CHROOT_SHMAT
84696 + bool "Deny shmat() out of chroot"
84697 + default y if GRKERNSEC_CONFIG_AUTO
84698 + depends on GRKERNSEC_CHROOT
84699 + help
84700 + If you say Y here, processes inside a chroot will not be able to attach
84701 + to shared memory segments that were created outside of the chroot jail.
84702 + It is recommended that you say Y here. If the sysctl option is enabled,
84703 + a sysctl option with name "chroot_deny_shmat" is created.
84704 +
84705 +config GRKERNSEC_CHROOT_UNIX
84706 + bool "Deny access to abstract AF_UNIX sockets out of chroot"
84707 + default y if GRKERNSEC_CONFIG_AUTO
84708 + depends on GRKERNSEC_CHROOT
84709 + help
84710 + If you say Y here, processes inside a chroot will not be able to
84711 + connect to abstract (meaning not belonging to a filesystem) Unix
84712 + domain sockets that were bound outside of a chroot. It is recommended
84713 + that you say Y here. If the sysctl option is enabled, a sysctl option
84714 + with name "chroot_deny_unix" is created.
84715 +
84716 +config GRKERNSEC_CHROOT_FINDTASK
84717 + bool "Protect outside processes"
84718 + default y if GRKERNSEC_CONFIG_AUTO
84719 + depends on GRKERNSEC_CHROOT
84720 + help
84721 + If you say Y here, processes inside a chroot will not be able to
84722 + kill, send signals with fcntl, ptrace, capget, getpgid, setpgid,
84723 + getsid, or view any process outside of the chroot. If the sysctl
84724 + option is enabled, a sysctl option with name "chroot_findtask" is
84725 + created.
84726 +
84727 +config GRKERNSEC_CHROOT_NICE
84728 + bool "Restrict priority changes"
84729 + default y if GRKERNSEC_CONFIG_AUTO
84730 + depends on GRKERNSEC_CHROOT
84731 + help
84732 + If you say Y here, processes inside a chroot will not be able to raise
84733 + the priority of processes in the chroot, or alter the priority of
84734 + processes outside the chroot. This provides more security than simply
84735 + removing CAP_SYS_NICE from the process' capability set. If the
84736 + sysctl option is enabled, a sysctl option with name "chroot_restrict_nice"
84737 + is created.
84738 +
84739 +config GRKERNSEC_CHROOT_SYSCTL
84740 + bool "Deny sysctl writes"
84741 + default y if GRKERNSEC_CONFIG_AUTO
84742 + depends on GRKERNSEC_CHROOT
84743 + help
84744 + If you say Y here, an attacker in a chroot will not be able to
84745 + write to sysctl entries, either by sysctl(2) or through a /proc
84746 + interface. It is strongly recommended that you say Y here. If the
84747 + sysctl option is enabled, a sysctl option with name
84748 + "chroot_deny_sysctl" is created.
84749 +
84750 +config GRKERNSEC_CHROOT_RENAME
84751 + bool "Deny bad renames"
84752 + default y if GRKERNSEC_CONFIG_AUTO
84753 + depends on GRKERNSEC_CHROOT
84754 + help
84755 + If you say Y here, an attacker in a chroot will not be able to
84756 + abuse the ability to create double chroots to break out of the
84757 + chroot by exploiting a race condition between a rename of a directory
84758 + within a chroot against an open of a symlink with relative path
84759 + components. This feature will likewise prevent an accomplice outside
84760 + a chroot from enabling a user inside the chroot to break out and make
84761 + use of their credentials on the global filesystem. Enabling this
84762 + feature is essential to prevent root users from breaking out of a
84763 + chroot. If the sysctl option is enabled, a sysctl option with name
84764 + "chroot_deny_bad_rename" is created.
84765 +
84766 +config GRKERNSEC_CHROOT_CAPS
84767 + bool "Capability restrictions"
84768 + default y if GRKERNSEC_CONFIG_AUTO
84769 + depends on GRKERNSEC_CHROOT
84770 + help
84771 + If you say Y here, the capabilities on all processes within a
84772 + chroot jail will be lowered to stop module insertion, raw i/o,
84773 + system and net admin tasks, rebooting the system, modifying immutable
84774 + files, modifying IPC owned by another, and changing the system time.
84775 + This is left an option because it can break some apps. Disable this
84776 + if your chrooted apps are having problems performing those kinds of
84777 + tasks. If the sysctl option is enabled, a sysctl option with
84778 + name "chroot_caps" is created.
84779 +
84780 +config GRKERNSEC_CHROOT_INITRD
84781 + bool "Exempt initrd tasks from restrictions"
84782 + default y if GRKERNSEC_CONFIG_AUTO
84783 + depends on GRKERNSEC_CHROOT && BLK_DEV_INITRD
84784 + help
84785 + If you say Y here, tasks started prior to init will be exempted from
84786 + grsecurity's chroot restrictions. This option is mainly meant to
84787 + resolve Plymouth's performing privileged operations unnecessarily
84788 + in a chroot.
84789 +
84790 +endmenu
84791 +menu "Kernel Auditing"
84792 +depends on GRKERNSEC
84793 +
84794 +config GRKERNSEC_AUDIT_GROUP
84795 + bool "Single group for auditing"
84796 + help
84797 + If you say Y here, the exec and chdir logging features will only operate
84798 + on a group you specify. This option is recommended if you only want to
84799 + watch certain users instead of having a large amount of logs from the
84800 + entire system. If the sysctl option is enabled, a sysctl option with
84801 + name "audit_group" is created.
84802 +
84803 +config GRKERNSEC_AUDIT_GID
84804 + int "GID for auditing"
84805 + depends on GRKERNSEC_AUDIT_GROUP
84806 + default 1007
84807 +
84808 +config GRKERNSEC_EXECLOG
84809 + bool "Exec logging"
84810 + help
84811 + If you say Y here, all execve() calls will be logged (since the
84812 + other exec*() calls are frontends to execve(), all execution
84813 + will be logged). Useful for shell-servers that like to keep track
84814 + of their users. If the sysctl option is enabled, a sysctl option with
84815 + name "exec_logging" is created.
84816 + WARNING: This option when enabled will produce a LOT of logs, especially
84817 + on an active system.
84818 +
84819 +config GRKERNSEC_RESLOG
84820 + bool "Resource logging"
84821 + default y if GRKERNSEC_CONFIG_AUTO
84822 + help
84823 + If you say Y here, all attempts to overstep resource limits will
84824 + be logged with the resource name, the requested size, and the current
84825 + limit. It is highly recommended that you say Y here. If the sysctl
84826 + option is enabled, a sysctl option with name "resource_logging" is
84827 + created. If the RBAC system is enabled, the sysctl value is ignored.
84828 +
84829 +config GRKERNSEC_CHROOT_EXECLOG
84830 + bool "Log execs within chroot"
84831 + help
84832 + If you say Y here, all executions inside a chroot jail will be logged
84833 + to syslog. This can cause a large amount of logs if certain
84834 + applications (eg. djb's daemontools) are installed on the system, and
84835 + is therefore left as an option. If the sysctl option is enabled, a
84836 + sysctl option with name "chroot_execlog" is created.
84837 +
84838 +config GRKERNSEC_AUDIT_PTRACE
84839 + bool "Ptrace logging"
84840 + help
84841 + If you say Y here, all attempts to attach to a process via ptrace
84842 + will be logged. If the sysctl option is enabled, a sysctl option
84843 + with name "audit_ptrace" is created.
84844 +
84845 +config GRKERNSEC_AUDIT_CHDIR
84846 + bool "Chdir logging"
84847 + help
84848 + If you say Y here, all chdir() calls will be logged. If the sysctl
84849 + option is enabled, a sysctl option with name "audit_chdir" is created.
84850 +
84851 +config GRKERNSEC_AUDIT_MOUNT
84852 + bool "(Un)Mount logging"
84853 + help
84854 + If you say Y here, all mounts and unmounts will be logged. If the
84855 + sysctl option is enabled, a sysctl option with name "audit_mount" is
84856 + created.
84857 +
84858 +config GRKERNSEC_SIGNAL
84859 + bool "Signal logging"
84860 + default y if GRKERNSEC_CONFIG_AUTO
84861 + help
84862 + If you say Y here, certain important signals will be logged, such as
84863 + SIGSEGV, which will as a result inform you of when a error in a program
84864 + occurred, which in some cases could mean a possible exploit attempt.
84865 + If the sysctl option is enabled, a sysctl option with name
84866 + "signal_logging" is created.
84867 +
84868 +config GRKERNSEC_FORKFAIL
84869 + bool "Fork failure logging"
84870 + help
84871 + If you say Y here, all failed fork() attempts will be logged.
84872 + This could suggest a fork bomb, or someone attempting to overstep
84873 + their process limit. If the sysctl option is enabled, a sysctl option
84874 + with name "forkfail_logging" is created.
84875 +
84876 +config GRKERNSEC_TIME
84877 + bool "Time change logging"
84878 + default y if GRKERNSEC_CONFIG_AUTO
84879 + help
84880 + If you say Y here, any changes of the system clock will be logged.
84881 + If the sysctl option is enabled, a sysctl option with name
84882 + "timechange_logging" is created.
84883 +
84884 +config GRKERNSEC_PROC_IPADDR
84885 + bool "/proc/<pid>/ipaddr support"
84886 + default y if GRKERNSEC_CONFIG_AUTO
84887 + help
84888 + If you say Y here, a new entry will be added to each /proc/<pid>
84889 + directory that contains the IP address of the person using the task.
84890 + The IP is carried across local TCP and AF_UNIX stream sockets.
84891 + This information can be useful for IDS/IPSes to perform remote response
84892 + to a local attack. The entry is readable by only the owner of the
84893 + process (and root if he has CAP_DAC_OVERRIDE, which can be removed via
84894 + the RBAC system), and thus does not create privacy concerns.
84895 +
84896 +config GRKERNSEC_RWXMAP_LOG
84897 + bool 'Denied RWX mmap/mprotect logging'
84898 + default y if GRKERNSEC_CONFIG_AUTO
84899 + depends on PAX_MPROTECT && !PAX_EMUPLT && !PAX_EMUSIGRT
84900 + help
84901 + If you say Y here, calls to mmap() and mprotect() with explicit
84902 + usage of PROT_WRITE and PROT_EXEC together will be logged when
84903 + denied by the PAX_MPROTECT feature. This feature will also
84904 + log other problematic scenarios that can occur when PAX_MPROTECT
84905 + is enabled on a binary, like textrels and PT_GNU_STACK. If the
84906 + sysctl option is enabled, a sysctl option with name "rwxmap_logging"
84907 + is created.
84908 +
84909 +endmenu
84910 +
84911 +menu "Executable Protections"
84912 +depends on GRKERNSEC
84913 +
84914 +config GRKERNSEC_DMESG
84915 + bool "Dmesg(8) restriction"
84916 + default y if GRKERNSEC_CONFIG_AUTO
84917 + help
84918 + If you say Y here, non-root users will not be able to use dmesg(8)
84919 + to view the contents of the kernel's circular log buffer.
84920 + The kernel's log buffer often contains kernel addresses and other
84921 + identifying information useful to an attacker in fingerprinting a
84922 + system for a targeted exploit.
84923 + If the sysctl option is enabled, a sysctl option with name "dmesg" is
84924 + created.
84925 +
84926 +config GRKERNSEC_HARDEN_PTRACE
84927 + bool "Deter ptrace-based process snooping"
84928 + default y if GRKERNSEC_CONFIG_AUTO
84929 + help
84930 + If you say Y here, TTY sniffers and other malicious monitoring
84931 + programs implemented through ptrace will be defeated. If you
84932 + have been using the RBAC system, this option has already been
84933 + enabled for several years for all users, with the ability to make
84934 + fine-grained exceptions.
84935 +
84936 + This option only affects the ability of non-root users to ptrace
84937 + processes that are not a descendent of the ptracing process.
84938 + This means that strace ./binary and gdb ./binary will still work,
84939 + but attaching to arbitrary processes will not. If the sysctl
84940 + option is enabled, a sysctl option with name "harden_ptrace" is
84941 + created.
84942 +
84943 +config GRKERNSEC_PTRACE_READEXEC
84944 + bool "Require read access to ptrace sensitive binaries"
84945 + default y if GRKERNSEC_CONFIG_AUTO
84946 + help
84947 + If you say Y here, unprivileged users will not be able to ptrace unreadable
84948 + binaries. This option is useful in environments that
84949 + remove the read bits (e.g. file mode 4711) from suid binaries to
84950 + prevent infoleaking of their contents. This option adds
84951 + consistency to the use of that file mode, as the binary could normally
84952 + be read out when run without privileges while ptracing.
84953 +
84954 + If the sysctl option is enabled, a sysctl option with name "ptrace_readexec"
84955 + is created.
84956 +
84957 +config GRKERNSEC_SETXID
84958 + bool "Enforce consistent multithreaded privileges"
84959 + default y if GRKERNSEC_CONFIG_AUTO
84960 + depends on (X86 || SPARC64 || PPC || ARM || MIPS)
84961 + help
84962 + If you say Y here, a change from a root uid to a non-root uid
84963 + in a multithreaded application will cause the resulting uids,
84964 + gids, supplementary groups, and capabilities in that thread
84965 + to be propagated to the other threads of the process. In most
84966 + cases this is unnecessary, as glibc will emulate this behavior
84967 + on behalf of the application. Other libcs do not act in the
84968 + same way, allowing the other threads of the process to continue
84969 + running with root privileges. If the sysctl option is enabled,
84970 + a sysctl option with name "consistent_setxid" is created.
84971 +
84972 +config GRKERNSEC_HARDEN_IPC
84973 + bool "Disallow access to overly-permissive IPC objects"
84974 + default y if GRKERNSEC_CONFIG_AUTO
84975 + depends on SYSVIPC
84976 + help
84977 + If you say Y here, access to overly-permissive IPC objects (shared
84978 + memory, message queues, and semaphores) will be denied for processes
84979 + given the following criteria beyond normal permission checks:
84980 + 1) If the IPC object is world-accessible and the euid doesn't match
84981 + that of the creator or current uid for the IPC object
84982 + 2) If the IPC object is group-accessible and the egid doesn't
84983 + match that of the creator or current gid for the IPC object
84984 + It's a common error to grant too much permission to these objects,
84985 + with impact ranging from denial of service and information leaking to
84986 + privilege escalation. This feature was developed in response to
84987 + research by Tim Brown:
84988 + http://labs.portcullis.co.uk/whitepapers/memory-squatting-attacks-on-system-v-shared-memory/
84989 + who found hundreds of such insecure usages. Processes with
84990 + CAP_IPC_OWNER are still permitted to access these IPC objects.
84991 + If the sysctl option is enabled, a sysctl option with name
84992 + "harden_ipc" is created.
84993 +
84994 +config GRKERNSEC_TPE
84995 + bool "Trusted Path Execution (TPE)"
84996 + default y if GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_SERVER
84997 + help
84998 + If you say Y here, you will be able to choose a gid to add to the
84999 + supplementary groups of users you want to mark as "untrusted."
85000 + These users will not be able to execute any files that are not in
85001 + root-owned directories writable only by root. If the sysctl option
85002 + is enabled, a sysctl option with name "tpe" is created.
85003 +
85004 +config GRKERNSEC_TPE_ALL
85005 + bool "Partially restrict all non-root users"
85006 + depends on GRKERNSEC_TPE
85007 + help
85008 + If you say Y here, all non-root users will be covered under
85009 + a weaker TPE restriction. This is separate from, and in addition to,
85010 + the main TPE options that you have selected elsewhere. Thus, if a
85011 + "trusted" GID is chosen, this restriction applies to even that GID.
85012 + Under this restriction, all non-root users will only be allowed to
85013 + execute files in directories they own that are not group or
85014 + world-writable, or in directories owned by root and writable only by
85015 + root. If the sysctl option is enabled, a sysctl option with name
85016 + "tpe_restrict_all" is created.
85017 +
85018 +config GRKERNSEC_TPE_INVERT
85019 + bool "Invert GID option"
85020 + depends on GRKERNSEC_TPE
85021 + help
85022 + If you say Y here, the group you specify in the TPE configuration will
85023 + decide what group TPE restrictions will be *disabled* for. This
85024 + option is useful if you want TPE restrictions to be applied to most
85025 + users on the system. If the sysctl option is enabled, a sysctl option
85026 + with name "tpe_invert" is created. Unlike other sysctl options, this
85027 + entry will default to on for backward-compatibility.
85028 +
85029 +config GRKERNSEC_TPE_GID
85030 + int
85031 + default GRKERNSEC_TPE_UNTRUSTED_GID if (GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT)
85032 + default GRKERNSEC_TPE_TRUSTED_GID if (GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT)
85033 +
85034 +config GRKERNSEC_TPE_UNTRUSTED_GID
85035 + int "GID for TPE-untrusted users"
85036 + depends on GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT
85037 + default 1005
85038 + help
85039 + Setting this GID determines what group TPE restrictions will be
85040 + *enabled* for. If the sysctl option is enabled, a sysctl option
85041 + with name "tpe_gid" is created.
85042 +
85043 +config GRKERNSEC_TPE_TRUSTED_GID
85044 + int "GID for TPE-trusted users"
85045 + depends on GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT
85046 + default 1005
85047 + help
85048 + Setting this GID determines what group TPE restrictions will be
85049 + *disabled* for. If the sysctl option is enabled, a sysctl option
85050 + with name "tpe_gid" is created.
85051 +
85052 +endmenu
85053 +menu "Network Protections"
85054 +depends on GRKERNSEC
85055 +
85056 +config GRKERNSEC_BLACKHOLE
85057 + bool "TCP/UDP blackhole and LAST_ACK DoS prevention"
85058 + default y if GRKERNSEC_CONFIG_AUTO
85059 + depends on NET
85060 + help
85061 + If you say Y here, neither TCP resets nor ICMP
85062 + destination-unreachable packets will be sent in response to packets
85063 + sent to ports for which no associated listening process exists.
85064 + It will also prevent the sending of ICMP protocol unreachable packets
85065 + in response to packets with unknown protocols.
85066 + This feature supports both IPV4 and IPV6 and exempts the
85067 + loopback interface from blackholing. Enabling this feature
85068 + makes a host more resilient to DoS attacks and reduces network
85069 + visibility against scanners.
85070 +
85071 + The blackhole feature as-implemented is equivalent to the FreeBSD
85072 + blackhole feature, as it prevents RST responses to all packets, not
85073 + just SYNs. Under most application behavior this causes no
85074 + problems, but applications (like haproxy) may not close certain
85075 + connections in a way that cleanly terminates them on the remote
85076 + end, leaving the remote host in LAST_ACK state. Because of this
85077 + side-effect and to prevent intentional LAST_ACK DoSes, this
85078 + feature also adds automatic mitigation against such attacks.
85079 + The mitigation drastically reduces the amount of time a socket
85080 + can spend in LAST_ACK state. If you're using haproxy and not
85081 + all servers it connects to have this option enabled, consider
85082 + disabling this feature on the haproxy host.
85083 +
85084 + If the sysctl option is enabled, two sysctl options with names
85085 + "ip_blackhole" and "lastack_retries" will be created.
85086 + While "ip_blackhole" takes the standard zero/non-zero on/off
85087 + toggle, "lastack_retries" uses the same kinds of values as
85088 + "tcp_retries1" and "tcp_retries2". The default value of 4
85089 + prevents a socket from lasting more than 45 seconds in LAST_ACK
85090 + state.
85091 +
85092 +config GRKERNSEC_NO_SIMULT_CONNECT
85093 + bool "Disable TCP Simultaneous Connect"
85094 + default y if GRKERNSEC_CONFIG_AUTO
85095 + depends on NET
85096 + help
85097 + If you say Y here, a feature by Willy Tarreau will be enabled that
85098 + removes a weakness in Linux's strict implementation of TCP that
85099 + allows two clients to connect to each other without either entering
85100 + a listening state. The weakness allows an attacker to easily prevent
85101 + a client from connecting to a known server provided the source port
85102 + for the connection is guessed correctly.
85103 +
85104 + As the weakness could be used to prevent an antivirus or IPS from
85105 + fetching updates, or prevent an SSL gateway from fetching a CRL,
85106 + it should be eliminated by enabling this option. Though Linux is
85107 + one of few operating systems supporting simultaneous connect, it
85108 + has no legitimate use in practice and is rarely supported by firewalls.
85109 +
85110 +config GRKERNSEC_SOCKET
85111 + bool "Socket restrictions"
85112 + depends on NET
85113 + help
85114 + If you say Y here, you will be able to choose from several options.
85115 + If you assign a GID on your system and add it to the supplementary
85116 + groups of users you want to restrict socket access to, this patch
85117 + will perform up to three things, based on the option(s) you choose.
85118 +
85119 +config GRKERNSEC_SOCKET_ALL
85120 + bool "Deny any sockets to group"
85121 + depends on GRKERNSEC_SOCKET
85122 + help
85123 + If you say Y here, you will be able to choose a GID of whose users will
85124 + be unable to connect to other hosts from your machine or run server
85125 + applications from your machine. If the sysctl option is enabled, a
85126 + sysctl option with name "socket_all" is created.
85127 +
85128 +config GRKERNSEC_SOCKET_ALL_GID
85129 + int "GID to deny all sockets for"
85130 + depends on GRKERNSEC_SOCKET_ALL
85131 + default 1004
85132 + help
85133 + Here you can choose the GID to disable socket access for. Remember to
85134 + add the users you want socket access disabled for to the GID
85135 + specified here. If the sysctl option is enabled, a sysctl option
85136 + with name "socket_all_gid" is created.
85137 +
85138 +config GRKERNSEC_SOCKET_CLIENT
85139 + bool "Deny client sockets to group"
85140 + depends on GRKERNSEC_SOCKET
85141 + help
85142 + If you say Y here, you will be able to choose a GID of whose users will
85143 + be unable to connect to other hosts from your machine, but will be
85144 + able to run servers. If this option is enabled, all users in the group
85145 + you specify will have to use passive mode when initiating ftp transfers
85146 + from the shell on your machine. If the sysctl option is enabled, a
85147 + sysctl option with name "socket_client" is created.
85148 +
85149 +config GRKERNSEC_SOCKET_CLIENT_GID
85150 + int "GID to deny client sockets for"
85151 + depends on GRKERNSEC_SOCKET_CLIENT
85152 + default 1003
85153 + help
85154 + Here you can choose the GID to disable client socket access for.
85155 + Remember to add the users you want client socket access disabled for to
85156 + the GID specified here. If the sysctl option is enabled, a sysctl
85157 + option with name "socket_client_gid" is created.
85158 +
85159 +config GRKERNSEC_SOCKET_SERVER
85160 + bool "Deny server sockets to group"
85161 + depends on GRKERNSEC_SOCKET
85162 + help
85163 + If you say Y here, you will be able to choose a GID of whose users will
85164 + be unable to run server applications from your machine. If the sysctl
85165 + option is enabled, a sysctl option with name "socket_server" is created.
85166 +
85167 +config GRKERNSEC_SOCKET_SERVER_GID
85168 + int "GID to deny server sockets for"
85169 + depends on GRKERNSEC_SOCKET_SERVER
85170 + default 1002
85171 + help
85172 + Here you can choose the GID to disable server socket access for.
85173 + Remember to add the users you want server socket access disabled for to
85174 + the GID specified here. If the sysctl option is enabled, a sysctl
85175 + option with name "socket_server_gid" is created.
85176 +
85177 +endmenu
85178 +
85179 +menu "Physical Protections"
85180 +depends on GRKERNSEC
85181 +
85182 +config GRKERNSEC_DENYUSB
85183 + bool "Deny new USB connections after toggle"
85184 + default y if GRKERNSEC_CONFIG_AUTO
85185 + depends on SYSCTL && USB_SUPPORT
85186 + help
85187 + If you say Y here, a new sysctl option with name "deny_new_usb"
85188 + will be created. Setting its value to 1 will prevent any new
85189 + USB devices from being recognized by the OS. Any attempted USB
85190 + device insertion will be logged. This option is intended to be
85191 + used against custom USB devices designed to exploit vulnerabilities
85192 + in various USB device drivers.
85193 +
85194 + For greatest effectiveness, this sysctl should be set after any
85195 + relevant init scripts. This option is safe to enable in distros
85196 + as each user can choose whether or not to toggle the sysctl.
85197 +
85198 +config GRKERNSEC_DENYUSB_FORCE
85199 + bool "Reject all USB devices not connected at boot"
85200 + select USB
85201 + depends on GRKERNSEC_DENYUSB
85202 + help
85203 + If you say Y here, a variant of GRKERNSEC_DENYUSB will be enabled
85204 + that doesn't involve a sysctl entry. This option should only be
85205 + enabled if you're sure you want to deny all new USB connections
85206 + at runtime and don't want to modify init scripts. This should not
85207 + be enabled by distros. It forces the core USB code to be built
85208 + into the kernel image so that all devices connected at boot time
85209 + can be recognized and new USB device connections can be prevented
85210 + prior to init running.
85211 +
85212 +endmenu
85213 +
85214 +menu "Sysctl Support"
85215 +depends on GRKERNSEC && SYSCTL
85216 +
85217 +config GRKERNSEC_SYSCTL
85218 + bool "Sysctl support"
85219 + default y if GRKERNSEC_CONFIG_AUTO
85220 + help
85221 + If you say Y here, you will be able to change the options that
85222 + grsecurity runs with at bootup, without having to recompile your
85223 + kernel. You can echo values to files in /proc/sys/kernel/grsecurity
85224 + to enable (1) or disable (0) various features. All the sysctl entries
85225 + are mutable until the "grsec_lock" entry is set to a non-zero value.
85226 + All features enabled in the kernel configuration are disabled at boot
85227 + if you do not say Y to the "Turn on features by default" option.
85228 + All options should be set at startup, and the grsec_lock entry should
85229 + be set to a non-zero value after all the options are set.
85230 + *THIS IS EXTREMELY IMPORTANT*
85231 +
85232 +config GRKERNSEC_SYSCTL_DISTRO
85233 + bool "Extra sysctl support for distro makers (READ HELP)"
85234 + depends on GRKERNSEC_SYSCTL && GRKERNSEC_IO
85235 + help
85236 + If you say Y here, additional sysctl options will be created
85237 + for features that affect processes running as root. Therefore,
85238 + it is critical when using this option that the grsec_lock entry be
85239 + enabled after boot. Only distros with prebuilt kernel packages
85240 + with this option enabled that can ensure grsec_lock is enabled
85241 + after boot should use this option.
85242 + *Failure to set grsec_lock after boot makes all grsec features
85243 + this option covers useless*
85244 +
85245 + Currently this option creates the following sysctl entries:
85246 + "Disable Privileged I/O": "disable_priv_io"
85247 +
85248 +config GRKERNSEC_SYSCTL_ON
85249 + bool "Turn on features by default"
85250 + default y if GRKERNSEC_CONFIG_AUTO
85251 + depends on GRKERNSEC_SYSCTL
85252 + help
85253 + If you say Y here, instead of having all features enabled in the
85254 + kernel configuration disabled at boot time, the features will be
85255 + enabled at boot time. It is recommended you say Y here unless
85256 + there is some reason you would want all sysctl-tunable features to
85257 + be disabled by default. As mentioned elsewhere, it is important
85258 + to enable the grsec_lock entry once you have finished modifying
85259 + the sysctl entries.
85260 +
85261 +endmenu
85262 +menu "Logging Options"
85263 +depends on GRKERNSEC
85264 +
85265 +config GRKERNSEC_FLOODTIME
85266 + int "Seconds in between log messages (minimum)"
85267 + default 10
85268 + help
85269 + This option allows you to enforce the number of seconds between
85270 + grsecurity log messages. The default should be suitable for most
85271 + people, however, if you choose to change it, choose a value small enough
85272 + to allow informative logs to be produced, but large enough to
85273 + prevent flooding.
85274 +
85275 + Setting both this value and GRKERNSEC_FLOODBURST to 0 will disable
85276 + any rate limiting on grsecurity log messages.
85277 +
85278 +config GRKERNSEC_FLOODBURST
85279 + int "Number of messages in a burst (maximum)"
85280 + default 6
85281 + help
85282 + This option allows you to choose the maximum number of messages allowed
85283 + within the flood time interval you chose in a separate option. The
85284 + default should be suitable for most people, however if you find that
85285 + many of your logs are being interpreted as flooding, you may want to
85286 + raise this value.
85287 +
85288 + Setting both this value and GRKERNSEC_FLOODTIME to 0 will disable
85289 + any rate limiting on grsecurity log messages.
85290 +
85291 +endmenu
85292 diff --git a/grsecurity/Makefile b/grsecurity/Makefile
85293 new file mode 100644
85294 index 0000000..30ababb
85295 --- /dev/null
85296 +++ b/grsecurity/Makefile
85297 @@ -0,0 +1,54 @@
85298 +# grsecurity – access control and security hardening for Linux
85299 +# All code in this directory and various hooks located throughout the Linux kernel are
85300 +# Copyright (C) 2001-2014 Bradley Spengler, Open Source Security, Inc.
85301 +# http://www.grsecurity.net spender@grsecurity.net
85302 +#
85303 +# This program is free software; you can redistribute it and/or
85304 +# modify it under the terms of the GNU General Public License version 2
85305 +# as published by the Free Software Foundation.
85306 +#
85307 +# This program is distributed in the hope that it will be useful,
85308 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
85309 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
85310 +# GNU General Public License for more details.
85311 +#
85312 +# You should have received a copy of the GNU General Public License
85313 +# along with this program; if not, write to the Free Software
85314 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
85315 +
85316 +KBUILD_CFLAGS += -Werror
85317 +
85318 +obj-y = grsec_chdir.o grsec_chroot.o grsec_exec.o grsec_fifo.o grsec_fork.o \
85319 + grsec_mount.o grsec_sig.o grsec_sysctl.o \
85320 + grsec_time.o grsec_tpe.o grsec_link.o grsec_pax.o grsec_ptrace.o \
85321 + grsec_usb.o grsec_ipc.o grsec_proc.o
85322 +
85323 +obj-$(CONFIG_GRKERNSEC) += grsec_init.o grsum.o gracl.o gracl_segv.o \
85324 + gracl_cap.o gracl_alloc.o gracl_shm.o grsec_mem.o gracl_fs.o \
85325 + gracl_learn.o grsec_log.o gracl_policy.o
85326 +ifdef CONFIG_COMPAT
85327 +obj-$(CONFIG_GRKERNSEC) += gracl_compat.o
85328 +endif
85329 +
85330 +obj-$(CONFIG_GRKERNSEC_RESLOG) += gracl_res.o
85331 +
85332 +ifdef CONFIG_NET
85333 +obj-y += grsec_sock.o
85334 +obj-$(CONFIG_GRKERNSEC) += gracl_ip.o
85335 +endif
85336 +
85337 +ifndef CONFIG_GRKERNSEC
85338 +obj-y += grsec_disabled.o
85339 +endif
85340 +
85341 +ifdef CONFIG_GRKERNSEC_HIDESYM
85342 +extra-y := grsec_hidesym.o
85343 +$(obj)/grsec_hidesym.o:
85344 + @-chmod -f 500 /boot
85345 + @-chmod -f 500 /lib/modules
85346 + @-chmod -f 500 /lib64/modules
85347 + @-chmod -f 500 /lib32/modules
85348 + @-chmod -f 700 .
85349 + @-chmod -f 700 $(objtree)
85350 + @echo ' grsec: protected kernel image paths'
85351 +endif
85352 diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c
85353 new file mode 100644
85354 index 0000000..7ad630a
85355 --- /dev/null
85356 +++ b/grsecurity/gracl.c
85357 @@ -0,0 +1,2757 @@
85358 +#include <linux/kernel.h>
85359 +#include <linux/module.h>
85360 +#include <linux/sched.h>
85361 +#include <linux/mm.h>
85362 +#include <linux/file.h>
85363 +#include <linux/fs.h>
85364 +#include <linux/namei.h>
85365 +#include <linux/mount.h>
85366 +#include <linux/tty.h>
85367 +#include <linux/proc_fs.h>
85368 +#include <linux/lglock.h>
85369 +#include <linux/slab.h>
85370 +#include <linux/vmalloc.h>
85371 +#include <linux/types.h>
85372 +#include <linux/sysctl.h>
85373 +#include <linux/netdevice.h>
85374 +#include <linux/ptrace.h>
85375 +#include <linux/gracl.h>
85376 +#include <linux/gralloc.h>
85377 +#include <linux/security.h>
85378 +#include <linux/grinternal.h>
85379 +#include <linux/pid_namespace.h>
85380 +#include <linux/stop_machine.h>
85381 +#include <linux/fdtable.h>
85382 +#include <linux/percpu.h>
85383 +#include <linux/lglock.h>
85384 +#include <linux/hugetlb.h>
85385 +#include <linux/posix-timers.h>
85386 +#include <linux/prefetch.h>
85387 +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE)
85388 +#include <linux/magic.h>
85389 +#include <linux/pagemap.h>
85390 +#include "../fs/btrfs/async-thread.h"
85391 +#include "../fs/btrfs/ctree.h"
85392 +#include "../fs/btrfs/btrfs_inode.h"
85393 +#endif
85394 +#include "../fs/mount.h"
85395 +
85396 +#include <asm/uaccess.h>
85397 +#include <asm/errno.h>
85398 +#include <asm/mman.h>
85399 +
85400 +#define FOR_EACH_ROLE_START(role) \
85401 + role = running_polstate.role_list; \
85402 + while (role) {
85403 +
85404 +#define FOR_EACH_ROLE_END(role) \
85405 + role = role->prev; \
85406 + }
85407 +
85408 +extern struct path gr_real_root;
85409 +
85410 +static struct gr_policy_state running_polstate;
85411 +struct gr_policy_state *polstate = &running_polstate;
85412 +extern struct gr_alloc_state *current_alloc_state;
85413 +
85414 +extern char *gr_shared_page[4];
85415 +DEFINE_RWLOCK(gr_inode_lock);
85416 +
85417 +static unsigned int gr_status __read_only = GR_STATUS_INIT;
85418 +
85419 +#ifdef CONFIG_NET
85420 +extern struct vfsmount *sock_mnt;
85421 +#endif
85422 +
85423 +extern struct vfsmount *pipe_mnt;
85424 +extern struct vfsmount *shm_mnt;
85425 +
85426 +#ifdef CONFIG_HUGETLBFS
85427 +extern struct vfsmount *hugetlbfs_vfsmount[HUGE_MAX_HSTATE];
85428 +#endif
85429 +
85430 +extern u16 acl_sp_role_value;
85431 +extern struct acl_object_label *fakefs_obj_rw;
85432 +extern struct acl_object_label *fakefs_obj_rwx;
85433 +
85434 +int gr_acl_is_enabled(void)
85435 +{
85436 + return (gr_status & GR_READY);
85437 +}
85438 +
85439 +void gr_enable_rbac_system(void)
85440 +{
85441 + pax_open_kernel();
85442 + gr_status |= GR_READY;
85443 + pax_close_kernel();
85444 +}
85445 +
85446 +int gr_rbac_disable(void *unused)
85447 +{
85448 + pax_open_kernel();
85449 + gr_status &= ~GR_READY;
85450 + pax_close_kernel();
85451 +
85452 + return 0;
85453 +}
85454 +
85455 +static inline dev_t __get_dev(const struct dentry *dentry)
85456 +{
85457 + struct dentry *ldentry = d_backing_dentry((struct dentry *)dentry);
85458 +
85459 +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE)
85460 + if (ldentry->d_sb->s_magic == BTRFS_SUPER_MAGIC)
85461 + return BTRFS_I(d_inode(ldentry))->root->anon_dev;
85462 + else
85463 +#endif
85464 + return d_inode(ldentry)->i_sb->s_dev;
85465 +}
85466 +
85467 +static inline u64 __get_ino(const struct dentry *dentry)
85468 +{
85469 + struct dentry *ldentry = d_backing_dentry((struct dentry *)dentry);
85470 +
85471 +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE)
85472 + if (ldentry->d_sb->s_magic == BTRFS_SUPER_MAGIC)
85473 + return btrfs_ino(d_inode(dentry));
85474 + else
85475 +#endif
85476 + return d_inode(ldentry)->i_ino;
85477 +}
85478 +
85479 +dev_t gr_get_dev_from_dentry(struct dentry *dentry)
85480 +{
85481 + return __get_dev(dentry);
85482 +}
85483 +
85484 +u64 gr_get_ino_from_dentry(struct dentry *dentry)
85485 +{
85486 + return __get_ino(dentry);
85487 +}
85488 +
85489 +static char gr_task_roletype_to_char(struct task_struct *task)
85490 +{
85491 + switch (task->role->roletype &
85492 + (GR_ROLE_DEFAULT | GR_ROLE_USER | GR_ROLE_GROUP |
85493 + GR_ROLE_SPECIAL)) {
85494 + case GR_ROLE_DEFAULT:
85495 + return 'D';
85496 + case GR_ROLE_USER:
85497 + return 'U';
85498 + case GR_ROLE_GROUP:
85499 + return 'G';
85500 + case GR_ROLE_SPECIAL:
85501 + return 'S';
85502 + }
85503 +
85504 + return 'X';
85505 +}
85506 +
85507 +char gr_roletype_to_char(void)
85508 +{
85509 + return gr_task_roletype_to_char(current);
85510 +}
85511 +
85512 +int
85513 +gr_acl_tpe_check(void)
85514 +{
85515 + if (unlikely(!(gr_status & GR_READY)))
85516 + return 0;
85517 + if (current->role->roletype & GR_ROLE_TPE)
85518 + return 1;
85519 + else
85520 + return 0;
85521 +}
85522 +
85523 +int
85524 +gr_handle_rawio(const struct inode *inode)
85525 +{
85526 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
85527 + if (inode && (S_ISBLK(inode->i_mode) || (S_ISCHR(inode->i_mode) && imajor(inode) == RAW_MAJOR)) &&
85528 + grsec_enable_chroot_caps && proc_is_chrooted(current) &&
85529 + !capable(CAP_SYS_RAWIO))
85530 + return 1;
85531 +#endif
85532 + return 0;
85533 +}
85534 +
85535 +int
85536 +gr_streq(const char *a, const char *b, const unsigned int lena, const unsigned int lenb)
85537 +{
85538 + if (likely(lena != lenb))
85539 + return 0;
85540 +
85541 + return !memcmp(a, b, lena);
85542 +}
85543 +
85544 +static int prepend(char **buffer, int *buflen, const char *str, int namelen)
85545 +{
85546 + *buflen -= namelen;
85547 + if (*buflen < 0)
85548 + return -ENAMETOOLONG;
85549 + *buffer -= namelen;
85550 + memcpy(*buffer, str, namelen);
85551 + return 0;
85552 +}
85553 +
85554 +static int prepend_name(char **buffer, int *buflen, struct qstr *name)
85555 +{
85556 + return prepend(buffer, buflen, name->name, name->len);
85557 +}
85558 +
85559 +static int prepend_path(const struct path *path, struct path *root,
85560 + char **buffer, int *buflen)
85561 +{
85562 + struct dentry *dentry = path->dentry;
85563 + struct vfsmount *vfsmnt = path->mnt;
85564 + struct mount *mnt = real_mount(vfsmnt);
85565 + bool slash = false;
85566 + int error = 0;
85567 +
85568 + while (dentry != root->dentry || vfsmnt != root->mnt) {
85569 + struct dentry * parent;
85570 +
85571 + if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
85572 + /* Global root? */
85573 + if (!mnt_has_parent(mnt)) {
85574 + goto out;
85575 + }
85576 + dentry = mnt->mnt_mountpoint;
85577 + mnt = mnt->mnt_parent;
85578 + vfsmnt = &mnt->mnt;
85579 + continue;
85580 + }
85581 + parent = dentry->d_parent;
85582 + prefetch(parent);
85583 + spin_lock(&dentry->d_lock);
85584 + error = prepend_name(buffer, buflen, &dentry->d_name);
85585 + spin_unlock(&dentry->d_lock);
85586 + if (!error)
85587 + error = prepend(buffer, buflen, "/", 1);
85588 + if (error)
85589 + break;
85590 +
85591 + slash = true;
85592 + dentry = parent;
85593 + }
85594 +
85595 +out:
85596 + if (!error && !slash)
85597 + error = prepend(buffer, buflen, "/", 1);
85598 +
85599 + return error;
85600 +}
85601 +
85602 +/* this must be called with mount_lock and rename_lock held */
85603 +
85604 +static char *__our_d_path(const struct path *path, struct path *root,
85605 + char *buf, int buflen)
85606 +{
85607 + char *res = buf + buflen;
85608 + int error;
85609 +
85610 + prepend(&res, &buflen, "\0", 1);
85611 + error = prepend_path(path, root, &res, &buflen);
85612 + if (error)
85613 + return ERR_PTR(error);
85614 +
85615 + return res;
85616 +}
85617 +
85618 +static char *
85619 +gen_full_path(struct path *path, struct path *root, char *buf, int buflen)
85620 +{
85621 + char *retval;
85622 +
85623 + retval = __our_d_path(path, root, buf, buflen);
85624 + if (unlikely(IS_ERR(retval)))
85625 + retval = strcpy(buf, "<path too long>");
85626 + else if (unlikely(retval[1] == '/' && retval[2] == '\0'))
85627 + retval[1] = '\0';
85628 +
85629 + return retval;
85630 +}
85631 +
85632 +static char *
85633 +__d_real_path(const struct dentry *dentry, const struct vfsmount *vfsmnt,
85634 + char *buf, int buflen)
85635 +{
85636 + struct path path;
85637 + char *res;
85638 +
85639 + path.dentry = (struct dentry *)dentry;
85640 + path.mnt = (struct vfsmount *)vfsmnt;
85641 +
85642 + /* we can use gr_real_root.dentry, gr_real_root.mnt, because this is only called
85643 + by the RBAC system */
85644 + res = gen_full_path(&path, &gr_real_root, buf, buflen);
85645 +
85646 + return res;
85647 +}
85648 +
85649 +static char *
85650 +d_real_path(const struct dentry *dentry, const struct vfsmount *vfsmnt,
85651 + char *buf, int buflen)
85652 +{
85653 + char *res;
85654 + struct path path;
85655 + struct path root;
85656 + struct task_struct *reaper = init_pid_ns.child_reaper;
85657 +
85658 + path.dentry = (struct dentry *)dentry;
85659 + path.mnt = (struct vfsmount *)vfsmnt;
85660 +
85661 + /* we can't use gr_real_root.dentry, gr_real_root.mnt, because they belong only to the RBAC system */
85662 + get_fs_root(reaper->fs, &root);
85663 +
85664 + read_seqlock_excl(&mount_lock);
85665 + write_seqlock(&rename_lock);
85666 + res = gen_full_path(&path, &root, buf, buflen);
85667 + write_sequnlock(&rename_lock);
85668 + read_sequnlock_excl(&mount_lock);
85669 +
85670 + path_put(&root);
85671 + return res;
85672 +}
85673 +
85674 +char *
85675 +gr_to_filename_rbac(const struct dentry *dentry, const struct vfsmount *mnt)
85676 +{
85677 + char *ret;
85678 + read_seqlock_excl(&mount_lock);
85679 + write_seqlock(&rename_lock);
85680 + ret = __d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[0],smp_processor_id()),
85681 + PAGE_SIZE);
85682 + write_sequnlock(&rename_lock);
85683 + read_sequnlock_excl(&mount_lock);
85684 + return ret;
85685 +}
85686 +
85687 +static char *
85688 +gr_to_proc_filename_rbac(const struct dentry *dentry, const struct vfsmount *mnt)
85689 +{
85690 + char *ret;
85691 + char *buf;
85692 + int buflen;
85693 +
85694 + read_seqlock_excl(&mount_lock);
85695 + write_seqlock(&rename_lock);
85696 + buf = per_cpu_ptr(gr_shared_page[0], smp_processor_id());
85697 + ret = __d_real_path(dentry, mnt, buf, PAGE_SIZE - 6);
85698 + buflen = (int)(ret - buf);
85699 + if (buflen >= 5)
85700 + prepend(&ret, &buflen, "/proc", 5);
85701 + else
85702 + ret = strcpy(buf, "<path too long>");
85703 + write_sequnlock(&rename_lock);
85704 + read_sequnlock_excl(&mount_lock);
85705 + return ret;
85706 +}
85707 +
85708 +char *
85709 +gr_to_filename_nolock(const struct dentry *dentry, const struct vfsmount *mnt)
85710 +{
85711 + return __d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[0],smp_processor_id()),
85712 + PAGE_SIZE);
85713 +}
85714 +
85715 +char *
85716 +gr_to_filename(const struct dentry *dentry, const struct vfsmount *mnt)
85717 +{
85718 + return d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[0], smp_processor_id()),
85719 + PAGE_SIZE);
85720 +}
85721 +
85722 +char *
85723 +gr_to_filename1(const struct dentry *dentry, const struct vfsmount *mnt)
85724 +{
85725 + return d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[1], smp_processor_id()),
85726 + PAGE_SIZE);
85727 +}
85728 +
85729 +char *
85730 +gr_to_filename2(const struct dentry *dentry, const struct vfsmount *mnt)
85731 +{
85732 + return d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[2], smp_processor_id()),
85733 + PAGE_SIZE);
85734 +}
85735 +
85736 +char *
85737 +gr_to_filename3(const struct dentry *dentry, const struct vfsmount *mnt)
85738 +{
85739 + return d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[3], smp_processor_id()),
85740 + PAGE_SIZE);
85741 +}
85742 +
85743 +__u32
85744 +to_gr_audit(const __u32 reqmode)
85745 +{
85746 + /* masks off auditable permission flags, then shifts them to create
85747 + auditing flags, and adds the special case of append auditing if
85748 + we're requesting write */
85749 + return (((reqmode & ~GR_AUDITS) << 10) | ((reqmode & GR_WRITE) ? GR_AUDIT_APPEND : 0));
85750 +}
85751 +
85752 +struct acl_role_label *
85753 +__lookup_acl_role_label(const struct gr_policy_state *state, const struct task_struct *task, const uid_t uid,
85754 + const gid_t gid)
85755 +{
85756 + unsigned int index = gr_rhash(uid, GR_ROLE_USER, state->acl_role_set.r_size);
85757 + struct acl_role_label *match;
85758 + struct role_allowed_ip *ipp;
85759 + unsigned int x;
85760 + u32 curr_ip = task->signal->saved_ip;
85761 +
85762 + match = state->acl_role_set.r_hash[index];
85763 +
85764 + while (match) {
85765 + if ((match->roletype & (GR_ROLE_DOMAIN | GR_ROLE_USER)) == (GR_ROLE_DOMAIN | GR_ROLE_USER)) {
85766 + for (x = 0; x < match->domain_child_num; x++) {
85767 + if (match->domain_children[x] == uid)
85768 + goto found;
85769 + }
85770 + } else if (match->uidgid == uid && match->roletype & GR_ROLE_USER)
85771 + break;
85772 + match = match->next;
85773 + }
85774 +found:
85775 + if (match == NULL) {
85776 + try_group:
85777 + index = gr_rhash(gid, GR_ROLE_GROUP, state->acl_role_set.r_size);
85778 + match = state->acl_role_set.r_hash[index];
85779 +
85780 + while (match) {
85781 + if ((match->roletype & (GR_ROLE_DOMAIN | GR_ROLE_GROUP)) == (GR_ROLE_DOMAIN | GR_ROLE_GROUP)) {
85782 + for (x = 0; x < match->domain_child_num; x++) {
85783 + if (match->domain_children[x] == gid)
85784 + goto found2;
85785 + }
85786 + } else if (match->uidgid == gid && match->roletype & GR_ROLE_GROUP)
85787 + break;
85788 + match = match->next;
85789 + }
85790 +found2:
85791 + if (match == NULL)
85792 + match = state->default_role;
85793 + if (match->allowed_ips == NULL)
85794 + return match;
85795 + else {
85796 + for (ipp = match->allowed_ips; ipp; ipp = ipp->next) {
85797 + if (likely
85798 + ((ntohl(curr_ip) & ipp->netmask) ==
85799 + (ntohl(ipp->addr) & ipp->netmask)))
85800 + return match;
85801 + }
85802 + match = state->default_role;
85803 + }
85804 + } else if (match->allowed_ips == NULL) {
85805 + return match;
85806 + } else {
85807 + for (ipp = match->allowed_ips; ipp; ipp = ipp->next) {
85808 + if (likely
85809 + ((ntohl(curr_ip) & ipp->netmask) ==
85810 + (ntohl(ipp->addr) & ipp->netmask)))
85811 + return match;
85812 + }
85813 + goto try_group;
85814 + }
85815 +
85816 + return match;
85817 +}
85818 +
85819 +static struct acl_role_label *
85820 +lookup_acl_role_label(const struct task_struct *task, const uid_t uid,
85821 + const gid_t gid)
85822 +{
85823 + return __lookup_acl_role_label(&running_polstate, task, uid, gid);
85824 +}
85825 +
85826 +struct acl_subject_label *
85827 +lookup_acl_subj_label(const u64 ino, const dev_t dev,
85828 + const struct acl_role_label *role)
85829 +{
85830 + unsigned int index = gr_fhash(ino, dev, role->subj_hash_size);
85831 + struct acl_subject_label *match;
85832 +
85833 + match = role->subj_hash[index];
85834 +
85835 + while (match && (match->inode != ino || match->device != dev ||
85836 + (match->mode & GR_DELETED))) {
85837 + match = match->next;
85838 + }
85839 +
85840 + if (match && !(match->mode & GR_DELETED))
85841 + return match;
85842 + else
85843 + return NULL;
85844 +}
85845 +
85846 +struct acl_subject_label *
85847 +lookup_acl_subj_label_deleted(const u64 ino, const dev_t dev,
85848 + const struct acl_role_label *role)
85849 +{
85850 + unsigned int index = gr_fhash(ino, dev, role->subj_hash_size);
85851 + struct acl_subject_label *match;
85852 +
85853 + match = role->subj_hash[index];
85854 +
85855 + while (match && (match->inode != ino || match->device != dev ||
85856 + !(match->mode & GR_DELETED))) {
85857 + match = match->next;
85858 + }
85859 +
85860 + if (match && (match->mode & GR_DELETED))
85861 + return match;
85862 + else
85863 + return NULL;
85864 +}
85865 +
85866 +static struct acl_object_label *
85867 +lookup_acl_obj_label(const u64 ino, const dev_t dev,
85868 + const struct acl_subject_label *subj)
85869 +{
85870 + unsigned int index = gr_fhash(ino, dev, subj->obj_hash_size);
85871 + struct acl_object_label *match;
85872 +
85873 + match = subj->obj_hash[index];
85874 +
85875 + while (match && (match->inode != ino || match->device != dev ||
85876 + (match->mode & GR_DELETED))) {
85877 + match = match->next;
85878 + }
85879 +
85880 + if (match && !(match->mode & GR_DELETED))
85881 + return match;
85882 + else
85883 + return NULL;
85884 +}
85885 +
85886 +static struct acl_object_label *
85887 +lookup_acl_obj_label_create(const u64 ino, const dev_t dev,
85888 + const struct acl_subject_label *subj)
85889 +{
85890 + unsigned int index = gr_fhash(ino, dev, subj->obj_hash_size);
85891 + struct acl_object_label *match;
85892 +
85893 + match = subj->obj_hash[index];
85894 +
85895 + while (match && (match->inode != ino || match->device != dev ||
85896 + !(match->mode & GR_DELETED))) {
85897 + match = match->next;
85898 + }
85899 +
85900 + if (match && (match->mode & GR_DELETED))
85901 + return match;
85902 +
85903 + match = subj->obj_hash[index];
85904 +
85905 + while (match && (match->inode != ino || match->device != dev ||
85906 + (match->mode & GR_DELETED))) {
85907 + match = match->next;
85908 + }
85909 +
85910 + if (match && !(match->mode & GR_DELETED))
85911 + return match;
85912 + else
85913 + return NULL;
85914 +}
85915 +
85916 +struct name_entry *
85917 +__lookup_name_entry(const struct gr_policy_state *state, const char *name)
85918 +{
85919 + unsigned int len = strlen(name);
85920 + unsigned int key = full_name_hash(name, len);
85921 + unsigned int index = key % state->name_set.n_size;
85922 + struct name_entry *match;
85923 +
85924 + match = state->name_set.n_hash[index];
85925 +
85926 + while (match && (match->key != key || !gr_streq(match->name, name, match->len, len)))
85927 + match = match->next;
85928 +
85929 + return match;
85930 +}
85931 +
85932 +static struct name_entry *
85933 +lookup_name_entry(const char *name)
85934 +{
85935 + return __lookup_name_entry(&running_polstate, name);
85936 +}
85937 +
85938 +static struct name_entry *
85939 +lookup_name_entry_create(const char *name)
85940 +{
85941 + unsigned int len = strlen(name);
85942 + unsigned int key = full_name_hash(name, len);
85943 + unsigned int index = key % running_polstate.name_set.n_size;
85944 + struct name_entry *match;
85945 +
85946 + match = running_polstate.name_set.n_hash[index];
85947 +
85948 + while (match && (match->key != key || !gr_streq(match->name, name, match->len, len) ||
85949 + !match->deleted))
85950 + match = match->next;
85951 +
85952 + if (match && match->deleted)
85953 + return match;
85954 +
85955 + match = running_polstate.name_set.n_hash[index];
85956 +
85957 + while (match && (match->key != key || !gr_streq(match->name, name, match->len, len) ||
85958 + match->deleted))
85959 + match = match->next;
85960 +
85961 + if (match && !match->deleted)
85962 + return match;
85963 + else
85964 + return NULL;
85965 +}
85966 +
85967 +static struct inodev_entry *
85968 +lookup_inodev_entry(const u64 ino, const dev_t dev)
85969 +{
85970 + unsigned int index = gr_fhash(ino, dev, running_polstate.inodev_set.i_size);
85971 + struct inodev_entry *match;
85972 +
85973 + match = running_polstate.inodev_set.i_hash[index];
85974 +
85975 + while (match && (match->nentry->inode != ino || match->nentry->device != dev))
85976 + match = match->next;
85977 +
85978 + return match;
85979 +}
85980 +
85981 +void
85982 +__insert_inodev_entry(const struct gr_policy_state *state, struct inodev_entry *entry)
85983 +{
85984 + unsigned int index = gr_fhash(entry->nentry->inode, entry->nentry->device,
85985 + state->inodev_set.i_size);
85986 + struct inodev_entry **curr;
85987 +
85988 + entry->prev = NULL;
85989 +
85990 + curr = &state->inodev_set.i_hash[index];
85991 + if (*curr != NULL)
85992 + (*curr)->prev = entry;
85993 +
85994 + entry->next = *curr;
85995 + *curr = entry;
85996 +
85997 + return;
85998 +}
85999 +
86000 +static void
86001 +insert_inodev_entry(struct inodev_entry *entry)
86002 +{
86003 + __insert_inodev_entry(&running_polstate, entry);
86004 +}
86005 +
86006 +void
86007 +insert_acl_obj_label(struct acl_object_label *obj,
86008 + struct acl_subject_label *subj)
86009 +{
86010 + unsigned int index =
86011 + gr_fhash(obj->inode, obj->device, subj->obj_hash_size);
86012 + struct acl_object_label **curr;
86013 +
86014 + obj->prev = NULL;
86015 +
86016 + curr = &subj->obj_hash[index];
86017 + if (*curr != NULL)
86018 + (*curr)->prev = obj;
86019 +
86020 + obj->next = *curr;
86021 + *curr = obj;
86022 +
86023 + return;
86024 +}
86025 +
86026 +void
86027 +insert_acl_subj_label(struct acl_subject_label *obj,
86028 + struct acl_role_label *role)
86029 +{
86030 + unsigned int index = gr_fhash(obj->inode, obj->device, role->subj_hash_size);
86031 + struct acl_subject_label **curr;
86032 +
86033 + obj->prev = NULL;
86034 +
86035 + curr = &role->subj_hash[index];
86036 + if (*curr != NULL)
86037 + (*curr)->prev = obj;
86038 +
86039 + obj->next = *curr;
86040 + *curr = obj;
86041 +
86042 + return;
86043 +}
86044 +
86045 +/* derived from glibc fnmatch() 0: match, 1: no match*/
86046 +
86047 +static int
86048 +glob_match(const char *p, const char *n)
86049 +{
86050 + char c;
86051 +
86052 + while ((c = *p++) != '\0') {
86053 + switch (c) {
86054 + case '?':
86055 + if (*n == '\0')
86056 + return 1;
86057 + else if (*n == '/')
86058 + return 1;
86059 + break;
86060 + case '\\':
86061 + if (*n != c)
86062 + return 1;
86063 + break;
86064 + case '*':
86065 + for (c = *p++; c == '?' || c == '*'; c = *p++) {
86066 + if (*n == '/')
86067 + return 1;
86068 + else if (c == '?') {
86069 + if (*n == '\0')
86070 + return 1;
86071 + else
86072 + ++n;
86073 + }
86074 + }
86075 + if (c == '\0') {
86076 + return 0;
86077 + } else {
86078 + const char *endp;
86079 +
86080 + if ((endp = strchr(n, '/')) == NULL)
86081 + endp = n + strlen(n);
86082 +
86083 + if (c == '[') {
86084 + for (--p; n < endp; ++n)
86085 + if (!glob_match(p, n))
86086 + return 0;
86087 + } else if (c == '/') {
86088 + while (*n != '\0' && *n != '/')
86089 + ++n;
86090 + if (*n == '/' && !glob_match(p, n + 1))
86091 + return 0;
86092 + } else {
86093 + for (--p; n < endp; ++n)
86094 + if (*n == c && !glob_match(p, n))
86095 + return 0;
86096 + }
86097 +
86098 + return 1;
86099 + }
86100 + case '[':
86101 + {
86102 + int not;
86103 + char cold;
86104 +
86105 + if (*n == '\0' || *n == '/')
86106 + return 1;
86107 +
86108 + not = (*p == '!' || *p == '^');
86109 + if (not)
86110 + ++p;
86111 +
86112 + c = *p++;
86113 + for (;;) {
86114 + unsigned char fn = (unsigned char)*n;
86115 +
86116 + if (c == '\0')
86117 + return 1;
86118 + else {
86119 + if (c == fn)
86120 + goto matched;
86121 + cold = c;
86122 + c = *p++;
86123 +
86124 + if (c == '-' && *p != ']') {
86125 + unsigned char cend = *p++;
86126 +
86127 + if (cend == '\0')
86128 + return 1;
86129 +
86130 + if (cold <= fn && fn <= cend)
86131 + goto matched;
86132 +
86133 + c = *p++;
86134 + }
86135 + }
86136 +
86137 + if (c == ']')
86138 + break;
86139 + }
86140 + if (!not)
86141 + return 1;
86142 + break;
86143 + matched:
86144 + while (c != ']') {
86145 + if (c == '\0')
86146 + return 1;
86147 +
86148 + c = *p++;
86149 + }
86150 + if (not)
86151 + return 1;
86152 + }
86153 + break;
86154 + default:
86155 + if (c != *n)
86156 + return 1;
86157 + }
86158 +
86159 + ++n;
86160 + }
86161 +
86162 + if (*n == '\0')
86163 + return 0;
86164 +
86165 + if (*n == '/')
86166 + return 0;
86167 +
86168 + return 1;
86169 +}
86170 +
86171 +static struct acl_object_label *
86172 +chk_glob_label(struct acl_object_label *globbed,
86173 + const struct dentry *dentry, const struct vfsmount *mnt, char **path)
86174 +{
86175 + struct acl_object_label *tmp;
86176 +
86177 + if (*path == NULL)
86178 + *path = gr_to_filename_nolock(dentry, mnt);
86179 +
86180 + tmp = globbed;
86181 +
86182 + while (tmp) {
86183 + if (!glob_match(tmp->filename, *path))
86184 + return tmp;
86185 + tmp = tmp->next;
86186 + }
86187 +
86188 + return NULL;
86189 +}
86190 +
86191 +static struct acl_object_label *
86192 +__full_lookup(const struct dentry *orig_dentry, const struct vfsmount *orig_mnt,
86193 + const u64 curr_ino, const dev_t curr_dev,
86194 + const struct acl_subject_label *subj, char **path, const int checkglob)
86195 +{
86196 + struct acl_subject_label *tmpsubj;
86197 + struct acl_object_label *retval;
86198 + struct acl_object_label *retval2;
86199 +
86200 + tmpsubj = (struct acl_subject_label *) subj;
86201 + read_lock(&gr_inode_lock);
86202 + do {
86203 + retval = lookup_acl_obj_label(curr_ino, curr_dev, tmpsubj);
86204 + if (retval) {
86205 + if (checkglob && retval->globbed) {
86206 + retval2 = chk_glob_label(retval->globbed, orig_dentry, orig_mnt, path);
86207 + if (retval2)
86208 + retval = retval2;
86209 + }
86210 + break;
86211 + }
86212 + } while ((tmpsubj = tmpsubj->parent_subject));
86213 + read_unlock(&gr_inode_lock);
86214 +
86215 + return retval;
86216 +}
86217 +
86218 +static struct acl_object_label *
86219 +full_lookup(const struct dentry *orig_dentry, const struct vfsmount *orig_mnt,
86220 + struct dentry *curr_dentry,
86221 + const struct acl_subject_label *subj, char **path, const int checkglob)
86222 +{
86223 + int newglob = checkglob;
86224 + u64 inode;
86225 + dev_t device;
86226 +
86227 + /* if we aren't checking a subdirectory of the original path yet, don't do glob checking
86228 + as we don't want a / * rule to match instead of the / object
86229 + don't do this for create lookups that call this function though, since they're looking up
86230 + on the parent and thus need globbing checks on all paths
86231 + */
86232 + if (orig_dentry == curr_dentry && newglob != GR_CREATE_GLOB)
86233 + newglob = GR_NO_GLOB;
86234 +
86235 + spin_lock(&curr_dentry->d_lock);
86236 + inode = __get_ino(curr_dentry);
86237 + device = __get_dev(curr_dentry);
86238 + spin_unlock(&curr_dentry->d_lock);
86239 +
86240 + return __full_lookup(orig_dentry, orig_mnt, inode, device, subj, path, newglob);
86241 +}
86242 +
86243 +#ifdef CONFIG_HUGETLBFS
86244 +static inline bool
86245 +is_hugetlbfs_mnt(const struct vfsmount *mnt)
86246 +{
86247 + int i;
86248 + for (i = 0; i < HUGE_MAX_HSTATE; i++) {
86249 + if (unlikely(hugetlbfs_vfsmount[i] == mnt))
86250 + return true;
86251 + }
86252 +
86253 + return false;
86254 +}
86255 +#endif
86256 +
86257 +static struct acl_object_label *
86258 +__chk_obj_label(const struct dentry *l_dentry, const struct vfsmount *l_mnt,
86259 + const struct acl_subject_label *subj, char *path, const int checkglob)
86260 +{
86261 + struct dentry *dentry = (struct dentry *) l_dentry;
86262 + struct vfsmount *mnt = (struct vfsmount *) l_mnt;
86263 + struct inode * inode = d_backing_inode(dentry);
86264 + struct mount *real_mnt = real_mount(mnt);
86265 + struct acl_object_label *retval;
86266 + struct dentry *parent;
86267 +
86268 + read_seqlock_excl(&mount_lock);
86269 + write_seqlock(&rename_lock);
86270 +
86271 + if (unlikely((mnt == shm_mnt && inode->i_nlink == 0) || mnt == pipe_mnt ||
86272 +#ifdef CONFIG_NET
86273 + mnt == sock_mnt ||
86274 +#endif
86275 +#ifdef CONFIG_HUGETLBFS
86276 + (is_hugetlbfs_mnt(mnt) && inode->i_nlink == 0) ||
86277 +#endif
86278 + /* ignore Eric Biederman */
86279 + IS_PRIVATE(inode))) {
86280 + retval = (subj->mode & GR_SHMEXEC) ? fakefs_obj_rwx : fakefs_obj_rw;
86281 + goto out;
86282 + }
86283 +
86284 + for (;;) {
86285 + if (dentry == gr_real_root.dentry && mnt == gr_real_root.mnt)
86286 + break;
86287 +
86288 + if (dentry == mnt->mnt_root || IS_ROOT(dentry)) {
86289 + if (!mnt_has_parent(real_mnt))
86290 + break;
86291 +
86292 + retval = full_lookup(l_dentry, l_mnt, dentry, subj, &path, checkglob);
86293 + if (retval != NULL)
86294 + goto out;
86295 +
86296 + dentry = real_mnt->mnt_mountpoint;
86297 + real_mnt = real_mnt->mnt_parent;
86298 + mnt = &real_mnt->mnt;
86299 + continue;
86300 + }
86301 +
86302 + parent = dentry->d_parent;
86303 + retval = full_lookup(l_dentry, l_mnt, dentry, subj, &path, checkglob);
86304 + if (retval != NULL)
86305 + goto out;
86306 +
86307 + dentry = parent;
86308 + }
86309 +
86310 + retval = full_lookup(l_dentry, l_mnt, dentry, subj, &path, checkglob);
86311 +
86312 + /* gr_real_root is pinned so we don't have to hold a reference */
86313 + if (retval == NULL)
86314 + retval = full_lookup(l_dentry, l_mnt, gr_real_root.dentry, subj, &path, checkglob);
86315 +out:
86316 + write_sequnlock(&rename_lock);
86317 + read_sequnlock_excl(&mount_lock);
86318 +
86319 + BUG_ON(retval == NULL);
86320 +
86321 + return retval;
86322 +}
86323 +
86324 +static struct acl_object_label *
86325 +chk_obj_label(const struct dentry *l_dentry, const struct vfsmount *l_mnt,
86326 + const struct acl_subject_label *subj)
86327 +{
86328 + char *path = NULL;
86329 + return __chk_obj_label(l_dentry, l_mnt, subj, path, GR_REG_GLOB);
86330 +}
86331 +
86332 +static struct acl_object_label *
86333 +chk_obj_label_noglob(const struct dentry *l_dentry, const struct vfsmount *l_mnt,
86334 + const struct acl_subject_label *subj)
86335 +{
86336 + char *path = NULL;
86337 + return __chk_obj_label(l_dentry, l_mnt, subj, path, GR_NO_GLOB);
86338 +}
86339 +
86340 +static struct acl_object_label *
86341 +chk_obj_create_label(const struct dentry *l_dentry, const struct vfsmount *l_mnt,
86342 + const struct acl_subject_label *subj, char *path)
86343 +{
86344 + return __chk_obj_label(l_dentry, l_mnt, subj, path, GR_CREATE_GLOB);
86345 +}
86346 +
86347 +struct acl_subject_label *
86348 +chk_subj_label(const struct dentry *l_dentry, const struct vfsmount *l_mnt,
86349 + const struct acl_role_label *role)
86350 +{
86351 + struct dentry *dentry = (struct dentry *) l_dentry;
86352 + struct vfsmount *mnt = (struct vfsmount *) l_mnt;
86353 + struct mount *real_mnt = real_mount(mnt);
86354 + struct acl_subject_label *retval;
86355 + struct dentry *parent;
86356 +
86357 + read_seqlock_excl(&mount_lock);
86358 + write_seqlock(&rename_lock);
86359 +
86360 + for (;;) {
86361 + if (dentry == gr_real_root.dentry && mnt == gr_real_root.mnt)
86362 + break;
86363 + if (dentry == mnt->mnt_root || IS_ROOT(dentry)) {
86364 + if (!mnt_has_parent(real_mnt))
86365 + break;
86366 +
86367 + spin_lock(&dentry->d_lock);
86368 + read_lock(&gr_inode_lock);
86369 + retval =
86370 + lookup_acl_subj_label(__get_ino(dentry),
86371 + __get_dev(dentry), role);
86372 + read_unlock(&gr_inode_lock);
86373 + spin_unlock(&dentry->d_lock);
86374 + if (retval != NULL)
86375 + goto out;
86376 +
86377 + dentry = real_mnt->mnt_mountpoint;
86378 + real_mnt = real_mnt->mnt_parent;
86379 + mnt = &real_mnt->mnt;
86380 + continue;
86381 + }
86382 +
86383 + spin_lock(&dentry->d_lock);
86384 + read_lock(&gr_inode_lock);
86385 + retval = lookup_acl_subj_label(__get_ino(dentry),
86386 + __get_dev(dentry), role);
86387 + read_unlock(&gr_inode_lock);
86388 + parent = dentry->d_parent;
86389 + spin_unlock(&dentry->d_lock);
86390 +
86391 + if (retval != NULL)
86392 + goto out;
86393 +
86394 + dentry = parent;
86395 + }
86396 +
86397 + spin_lock(&dentry->d_lock);
86398 + read_lock(&gr_inode_lock);
86399 + retval = lookup_acl_subj_label(__get_ino(dentry),
86400 + __get_dev(dentry), role);
86401 + read_unlock(&gr_inode_lock);
86402 + spin_unlock(&dentry->d_lock);
86403 +
86404 + if (unlikely(retval == NULL)) {
86405 + /* gr_real_root is pinned, we don't need to hold a reference */
86406 + read_lock(&gr_inode_lock);
86407 + retval = lookup_acl_subj_label(__get_ino(gr_real_root.dentry),
86408 + __get_dev(gr_real_root.dentry), role);
86409 + read_unlock(&gr_inode_lock);
86410 + }
86411 +out:
86412 + write_sequnlock(&rename_lock);
86413 + read_sequnlock_excl(&mount_lock);
86414 +
86415 + BUG_ON(retval == NULL);
86416 +
86417 + return retval;
86418 +}
86419 +
86420 +void
86421 +assign_special_role(const char *rolename)
86422 +{
86423 + struct acl_object_label *obj;
86424 + struct acl_role_label *r;
86425 + struct acl_role_label *assigned = NULL;
86426 + struct task_struct *tsk;
86427 + struct file *filp;
86428 +
86429 + FOR_EACH_ROLE_START(r)
86430 + if (!strcmp(rolename, r->rolename) &&
86431 + (r->roletype & GR_ROLE_SPECIAL)) {
86432 + assigned = r;
86433 + break;
86434 + }
86435 + FOR_EACH_ROLE_END(r)
86436 +
86437 + if (!assigned)
86438 + return;
86439 +
86440 + read_lock(&tasklist_lock);
86441 + read_lock(&grsec_exec_file_lock);
86442 +
86443 + tsk = current->real_parent;
86444 + if (tsk == NULL)
86445 + goto out_unlock;
86446 +
86447 + filp = tsk->exec_file;
86448 + if (filp == NULL)
86449 + goto out_unlock;
86450 +
86451 + tsk->is_writable = 0;
86452 + tsk->inherited = 0;
86453 +
86454 + tsk->acl_sp_role = 1;
86455 + tsk->acl_role_id = ++acl_sp_role_value;
86456 + tsk->role = assigned;
86457 + tsk->acl = chk_subj_label(filp->f_path.dentry, filp->f_path.mnt, tsk->role);
86458 +
86459 + /* ignore additional mmap checks for processes that are writable
86460 + by the default ACL */
86461 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, running_polstate.default_role->root_label);
86462 + if (unlikely(obj->mode & GR_WRITE))
86463 + tsk->is_writable = 1;
86464 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, tsk->role->root_label);
86465 + if (unlikely(obj->mode & GR_WRITE))
86466 + tsk->is_writable = 1;
86467 +
86468 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
86469 + printk(KERN_ALERT "Assigning special role:%s subject:%s to process (%s:%d)\n", tsk->role->rolename,
86470 + tsk->acl->filename, tsk->comm, task_pid_nr(tsk));
86471 +#endif
86472 +
86473 +out_unlock:
86474 + read_unlock(&grsec_exec_file_lock);
86475 + read_unlock(&tasklist_lock);
86476 + return;
86477 +}
86478 +
86479 +
86480 +static void
86481 +gr_log_learn(const struct dentry *dentry, const struct vfsmount *mnt, const __u32 mode)
86482 +{
86483 + struct task_struct *task = current;
86484 + const struct cred *cred = current_cred();
86485 +
86486 + security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename, task->role->roletype,
86487 + GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid), task->exec_file ? gr_to_filename1(task->exec_file->f_path.dentry,
86488 + task->exec_file->f_path.mnt) : task->acl->filename, task->acl->filename,
86489 + 1UL, 1UL, gr_to_filename(dentry, mnt), (unsigned long) mode, &task->signal->saved_ip);
86490 +
86491 + return;
86492 +}
86493 +
86494 +static void
86495 +gr_log_learn_uid_change(const kuid_t real, const kuid_t effective, const kuid_t fs)
86496 +{
86497 + struct task_struct *task = current;
86498 + const struct cred *cred = current_cred();
86499 +
86500 + security_learn(GR_ID_LEARN_MSG, task->role->rolename, task->role->roletype,
86501 + GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid), task->exec_file ? gr_to_filename1(task->exec_file->f_path.dentry,
86502 + task->exec_file->f_path.mnt) : task->acl->filename, task->acl->filename,
86503 + 'u', GR_GLOBAL_UID(real), GR_GLOBAL_UID(effective), GR_GLOBAL_UID(fs), &task->signal->saved_ip);
86504 +
86505 + return;
86506 +}
86507 +
86508 +static void
86509 +gr_log_learn_gid_change(const kgid_t real, const kgid_t effective, const kgid_t fs)
86510 +{
86511 + struct task_struct *task = current;
86512 + const struct cred *cred = current_cred();
86513 +
86514 + security_learn(GR_ID_LEARN_MSG, task->role->rolename, task->role->roletype,
86515 + GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid), task->exec_file ? gr_to_filename1(task->exec_file->f_path.dentry,
86516 + task->exec_file->f_path.mnt) : task->acl->filename, task->acl->filename,
86517 + 'g', GR_GLOBAL_GID(real), GR_GLOBAL_GID(effective), GR_GLOBAL_GID(fs), &task->signal->saved_ip);
86518 +
86519 + return;
86520 +}
86521 +
86522 +static void
86523 +gr_set_proc_res(struct task_struct *task)
86524 +{
86525 + struct acl_subject_label *proc;
86526 + unsigned short i;
86527 +
86528 + proc = task->acl;
86529 +
86530 + if (proc->mode & (GR_LEARN | GR_INHERITLEARN))
86531 + return;
86532 +
86533 + for (i = 0; i < RLIM_NLIMITS; i++) {
86534 + unsigned long rlim_cur, rlim_max;
86535 +
86536 + if (!(proc->resmask & (1U << i)))
86537 + continue;
86538 +
86539 + rlim_cur = proc->res[i].rlim_cur;
86540 + rlim_max = proc->res[i].rlim_max;
86541 +
86542 + if (i == RLIMIT_NOFILE) {
86543 + unsigned long saved_sysctl_nr_open = sysctl_nr_open;
86544 + if (rlim_cur > saved_sysctl_nr_open)
86545 + rlim_cur = saved_sysctl_nr_open;
86546 + if (rlim_max > saved_sysctl_nr_open)
86547 + rlim_max = saved_sysctl_nr_open;
86548 + }
86549 +
86550 + task->signal->rlim[i].rlim_cur = rlim_cur;
86551 + task->signal->rlim[i].rlim_max = rlim_max;
86552 +
86553 + if (i == RLIMIT_CPU)
86554 + update_rlimit_cpu(task, rlim_cur);
86555 + }
86556 +
86557 + return;
86558 +}
86559 +
86560 +/* both of the below must be called with
86561 + rcu_read_lock();
86562 + read_lock(&tasklist_lock);
86563 + read_lock(&grsec_exec_file_lock);
86564 + except in the case of gr_set_role_label() (for __gr_get_subject_for_task)
86565 +*/
86566 +
86567 +struct acl_subject_label *__gr_get_subject_for_task(const struct gr_policy_state *state, struct task_struct *task, const char *filename, int fallback)
86568 +{
86569 + char *tmpname;
86570 + struct acl_subject_label *tmpsubj;
86571 + struct file *filp;
86572 + struct name_entry *nmatch;
86573 +
86574 + filp = task->exec_file;
86575 + if (filp == NULL)
86576 + return NULL;
86577 +
86578 + /* the following is to apply the correct subject
86579 + on binaries running when the RBAC system
86580 + is enabled, when the binaries have been
86581 + replaced or deleted since their execution
86582 + -----
86583 + when the RBAC system starts, the inode/dev
86584 + from exec_file will be one the RBAC system
86585 + is unaware of. It only knows the inode/dev
86586 + of the present file on disk, or the absence
86587 + of it.
86588 + */
86589 +
86590 + if (filename)
86591 + nmatch = __lookup_name_entry(state, filename);
86592 + else {
86593 + preempt_disable();
86594 + tmpname = gr_to_filename_rbac(filp->f_path.dentry, filp->f_path.mnt);
86595 +
86596 + nmatch = __lookup_name_entry(state, tmpname);
86597 + preempt_enable();
86598 + }
86599 + tmpsubj = NULL;
86600 + if (nmatch) {
86601 + if (nmatch->deleted)
86602 + tmpsubj = lookup_acl_subj_label_deleted(nmatch->inode, nmatch->device, task->role);
86603 + else
86604 + tmpsubj = lookup_acl_subj_label(nmatch->inode, nmatch->device, task->role);
86605 + }
86606 + /* this also works for the reload case -- if we don't match a potentially inherited subject
86607 + then we fall back to a normal lookup based on the binary's ino/dev
86608 + */
86609 + if (tmpsubj == NULL && fallback)
86610 + tmpsubj = chk_subj_label(filp->f_path.dentry, filp->f_path.mnt, task->role);
86611 +
86612 + return tmpsubj;
86613 +}
86614 +
86615 +static struct acl_subject_label *gr_get_subject_for_task(struct task_struct *task, const char *filename, int fallback)
86616 +{
86617 + return __gr_get_subject_for_task(&running_polstate, task, filename, fallback);
86618 +}
86619 +
86620 +void __gr_apply_subject_to_task(const struct gr_policy_state *state, struct task_struct *task, struct acl_subject_label *subj)
86621 +{
86622 + struct acl_object_label *obj;
86623 + struct file *filp;
86624 +
86625 + filp = task->exec_file;
86626 +
86627 + task->acl = subj;
86628 + task->is_writable = 0;
86629 + /* ignore additional mmap checks for processes that are writable
86630 + by the default ACL */
86631 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, state->default_role->root_label);
86632 + if (unlikely(obj->mode & GR_WRITE))
86633 + task->is_writable = 1;
86634 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, task->role->root_label);
86635 + if (unlikely(obj->mode & GR_WRITE))
86636 + task->is_writable = 1;
86637 +
86638 + gr_set_proc_res(task);
86639 +
86640 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
86641 + printk(KERN_ALERT "gr_set_acls for (%s:%d): role:%s, subject:%s\n", task->comm, task_pid_nr(task), task->role->rolename, task->acl->filename);
86642 +#endif
86643 +}
86644 +
86645 +static void gr_apply_subject_to_task(struct task_struct *task, struct acl_subject_label *subj)
86646 +{
86647 + __gr_apply_subject_to_task(&running_polstate, task, subj);
86648 +}
86649 +
86650 +__u32
86651 +gr_search_file(const struct dentry * dentry, const __u32 mode,
86652 + const struct vfsmount * mnt)
86653 +{
86654 + __u32 retval = mode;
86655 + struct acl_subject_label *curracl;
86656 + struct acl_object_label *currobj;
86657 +
86658 + if (unlikely(!(gr_status & GR_READY)))
86659 + return (mode & ~GR_AUDITS);
86660 +
86661 + curracl = current->acl;
86662 +
86663 + currobj = chk_obj_label(dentry, mnt, curracl);
86664 + retval = currobj->mode & mode;
86665 +
86666 + /* if we're opening a specified transfer file for writing
86667 + (e.g. /dev/initctl), then transfer our role to init
86668 + */
86669 + if (unlikely(currobj->mode & GR_INIT_TRANSFER && retval & GR_WRITE &&
86670 + current->role->roletype & GR_ROLE_PERSIST)) {
86671 + struct task_struct *task = init_pid_ns.child_reaper;
86672 +
86673 + if (task->role != current->role) {
86674 + struct acl_subject_label *subj;
86675 +
86676 + task->acl_sp_role = 0;
86677 + task->acl_role_id = current->acl_role_id;
86678 + task->role = current->role;
86679 + rcu_read_lock();
86680 + read_lock(&grsec_exec_file_lock);
86681 + subj = gr_get_subject_for_task(task, NULL, 1);
86682 + gr_apply_subject_to_task(task, subj);
86683 + read_unlock(&grsec_exec_file_lock);
86684 + rcu_read_unlock();
86685 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_INIT_TRANSFER_MSG);
86686 + }
86687 + }
86688 +
86689 + if (unlikely
86690 + ((curracl->mode & (GR_LEARN | GR_INHERITLEARN)) && !(mode & GR_NOPTRACE)
86691 + && (retval != (mode & ~(GR_AUDITS | GR_SUPPRESS))))) {
86692 + __u32 new_mode = mode;
86693 +
86694 + new_mode &= ~(GR_AUDITS | GR_SUPPRESS);
86695 +
86696 + retval = new_mode;
86697 +
86698 + if (new_mode & GR_EXEC && curracl->mode & GR_INHERITLEARN)
86699 + new_mode |= GR_INHERIT;
86700 +
86701 + if (!(mode & GR_NOLEARN))
86702 + gr_log_learn(dentry, mnt, new_mode);
86703 + }
86704 +
86705 + return retval;
86706 +}
86707 +
86708 +struct acl_object_label *gr_get_create_object(const struct dentry *new_dentry,
86709 + const struct dentry *parent,
86710 + const struct vfsmount *mnt)
86711 +{
86712 + struct name_entry *match;
86713 + struct acl_object_label *matchpo;
86714 + struct acl_subject_label *curracl;
86715 + char *path;
86716 +
86717 + if (unlikely(!(gr_status & GR_READY)))
86718 + return NULL;
86719 +
86720 + preempt_disable();
86721 + path = gr_to_filename_rbac(new_dentry, mnt);
86722 + match = lookup_name_entry_create(path);
86723 +
86724 + curracl = current->acl;
86725 +
86726 + if (match) {
86727 + read_lock(&gr_inode_lock);
86728 + matchpo = lookup_acl_obj_label_create(match->inode, match->device, curracl);
86729 + read_unlock(&gr_inode_lock);
86730 +
86731 + if (matchpo) {
86732 + preempt_enable();
86733 + return matchpo;
86734 + }
86735 + }
86736 +
86737 + // lookup parent
86738 +
86739 + matchpo = chk_obj_create_label(parent, mnt, curracl, path);
86740 +
86741 + preempt_enable();
86742 + return matchpo;
86743 +}
86744 +
86745 +__u32
86746 +gr_check_create(const struct dentry * new_dentry, const struct dentry * parent,
86747 + const struct vfsmount * mnt, const __u32 mode)
86748 +{
86749 + struct acl_object_label *matchpo;
86750 + __u32 retval;
86751 +
86752 + if (unlikely(!(gr_status & GR_READY)))
86753 + return (mode & ~GR_AUDITS);
86754 +
86755 + matchpo = gr_get_create_object(new_dentry, parent, mnt);
86756 +
86757 + retval = matchpo->mode & mode;
86758 +
86759 + if ((retval != (mode & ~(GR_AUDITS | GR_SUPPRESS)))
86760 + && (current->acl->mode & (GR_LEARN | GR_INHERITLEARN))) {
86761 + __u32 new_mode = mode;
86762 +
86763 + new_mode &= ~(GR_AUDITS | GR_SUPPRESS);
86764 +
86765 + gr_log_learn(new_dentry, mnt, new_mode);
86766 + return new_mode;
86767 + }
86768 +
86769 + return retval;
86770 +}
86771 +
86772 +__u32
86773 +gr_check_link(const struct dentry * new_dentry,
86774 + const struct dentry * parent_dentry,
86775 + const struct vfsmount * parent_mnt,
86776 + const struct dentry * old_dentry, const struct vfsmount * old_mnt)
86777 +{
86778 + struct acl_object_label *obj;
86779 + __u32 oldmode, newmode;
86780 + __u32 needmode;
86781 + __u32 checkmodes = GR_FIND | GR_APPEND | GR_WRITE | GR_EXEC | GR_SETID | GR_READ |
86782 + GR_DELETE | GR_INHERIT;
86783 +
86784 + if (unlikely(!(gr_status & GR_READY)))
86785 + return (GR_CREATE | GR_LINK);
86786 +
86787 + obj = chk_obj_label(old_dentry, old_mnt, current->acl);
86788 + oldmode = obj->mode;
86789 +
86790 + obj = gr_get_create_object(new_dentry, parent_dentry, parent_mnt);
86791 + newmode = obj->mode;
86792 +
86793 + needmode = newmode & checkmodes;
86794 +
86795 + // old name for hardlink must have at least the permissions of the new name
86796 + if ((oldmode & needmode) != needmode)
86797 + goto bad;
86798 +
86799 + // if old name had restrictions/auditing, make sure the new name does as well
86800 + needmode = oldmode & (GR_NOPTRACE | GR_PTRACERD | GR_INHERIT | GR_AUDITS);
86801 +
86802 + // don't allow hardlinking of suid/sgid/fcapped files without permission
86803 + if (is_privileged_binary(old_dentry))
86804 + needmode |= GR_SETID;
86805 +
86806 + if ((newmode & needmode) != needmode)
86807 + goto bad;
86808 +
86809 + // enforce minimum permissions
86810 + if ((newmode & (GR_CREATE | GR_LINK)) == (GR_CREATE | GR_LINK))
86811 + return newmode;
86812 +bad:
86813 + needmode = oldmode;
86814 + if (is_privileged_binary(old_dentry))
86815 + needmode |= GR_SETID;
86816 +
86817 + if (current->acl->mode & (GR_LEARN | GR_INHERITLEARN)) {
86818 + gr_log_learn(old_dentry, old_mnt, needmode | GR_CREATE | GR_LINK);
86819 + return (GR_CREATE | GR_LINK);
86820 + } else if (newmode & GR_SUPPRESS)
86821 + return GR_SUPPRESS;
86822 + else
86823 + return 0;
86824 +}
86825 +
86826 +int
86827 +gr_check_hidden_task(const struct task_struct *task)
86828 +{
86829 + if (unlikely(!(gr_status & GR_READY)))
86830 + return 0;
86831 +
86832 + if (!(task->acl->mode & GR_PROCFIND) && !(current->acl->mode & GR_VIEW))
86833 + return 1;
86834 +
86835 + return 0;
86836 +}
86837 +
86838 +int
86839 +gr_check_protected_task(const struct task_struct *task)
86840 +{
86841 + if (unlikely(!(gr_status & GR_READY) || !task))
86842 + return 0;
86843 +
86844 + if ((task->acl->mode & GR_PROTECTED) && !(current->acl->mode & GR_KILL) &&
86845 + task->acl != current->acl)
86846 + return 1;
86847 +
86848 + return 0;
86849 +}
86850 +
86851 +int
86852 +gr_check_protected_task_fowner(struct pid *pid, enum pid_type type)
86853 +{
86854 + struct task_struct *p;
86855 + int ret = 0;
86856 +
86857 + if (unlikely(!(gr_status & GR_READY) || !pid))
86858 + return ret;
86859 +
86860 + read_lock(&tasklist_lock);
86861 + do_each_pid_task(pid, type, p) {
86862 + if ((p->acl->mode & GR_PROTECTED) && !(current->acl->mode & GR_KILL) &&
86863 + p->acl != current->acl) {
86864 + ret = 1;
86865 + goto out;
86866 + }
86867 + } while_each_pid_task(pid, type, p);
86868 +out:
86869 + read_unlock(&tasklist_lock);
86870 +
86871 + return ret;
86872 +}
86873 +
86874 +void
86875 +gr_copy_label(struct task_struct *tsk)
86876 +{
86877 + struct task_struct *p = current;
86878 +
86879 + tsk->inherited = p->inherited;
86880 + tsk->acl_sp_role = 0;
86881 + tsk->acl_role_id = p->acl_role_id;
86882 + tsk->acl = p->acl;
86883 + tsk->role = p->role;
86884 + tsk->signal->used_accept = 0;
86885 + tsk->signal->curr_ip = p->signal->curr_ip;
86886 + tsk->signal->saved_ip = p->signal->saved_ip;
86887 + if (p->exec_file)
86888 + get_file(p->exec_file);
86889 + tsk->exec_file = p->exec_file;
86890 + tsk->is_writable = p->is_writable;
86891 + if (unlikely(p->signal->used_accept)) {
86892 + p->signal->curr_ip = 0;
86893 + p->signal->saved_ip = 0;
86894 + }
86895 +
86896 + return;
86897 +}
86898 +
86899 +extern int gr_process_kernel_setuid_ban(struct user_struct *user);
86900 +
86901 +int
86902 +gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs)
86903 +{
86904 + unsigned int i;
86905 + __u16 num;
86906 + uid_t *uidlist;
86907 + uid_t curuid;
86908 + int realok = 0;
86909 + int effectiveok = 0;
86910 + int fsok = 0;
86911 + uid_t globalreal, globaleffective, globalfs;
86912 +
86913 +#if defined(CONFIG_GRKERNSEC_KERN_LOCKOUT)
86914 + struct user_struct *user;
86915 +
86916 + if (!uid_valid(real))
86917 + goto skipit;
86918 +
86919 + /* find user based on global namespace */
86920 +
86921 + globalreal = GR_GLOBAL_UID(real);
86922 +
86923 + user = find_user(make_kuid(&init_user_ns, globalreal));
86924 + if (user == NULL)
86925 + goto skipit;
86926 +
86927 + if (gr_process_kernel_setuid_ban(user)) {
86928 + /* for find_user */
86929 + free_uid(user);
86930 + return 1;
86931 + }
86932 +
86933 + /* for find_user */
86934 + free_uid(user);
86935 +
86936 +skipit:
86937 +#endif
86938 +
86939 + if (unlikely(!(gr_status & GR_READY)))
86940 + return 0;
86941 +
86942 + if (current->acl->mode & (GR_LEARN | GR_INHERITLEARN))
86943 + gr_log_learn_uid_change(real, effective, fs);
86944 +
86945 + num = current->acl->user_trans_num;
86946 + uidlist = current->acl->user_transitions;
86947 +
86948 + if (uidlist == NULL)
86949 + return 0;
86950 +
86951 + if (!uid_valid(real)) {
86952 + realok = 1;
86953 + globalreal = (uid_t)-1;
86954 + } else {
86955 + globalreal = GR_GLOBAL_UID(real);
86956 + }
86957 + if (!uid_valid(effective)) {
86958 + effectiveok = 1;
86959 + globaleffective = (uid_t)-1;
86960 + } else {
86961 + globaleffective = GR_GLOBAL_UID(effective);
86962 + }
86963 + if (!uid_valid(fs)) {
86964 + fsok = 1;
86965 + globalfs = (uid_t)-1;
86966 + } else {
86967 + globalfs = GR_GLOBAL_UID(fs);
86968 + }
86969 +
86970 + if (current->acl->user_trans_type & GR_ID_ALLOW) {
86971 + for (i = 0; i < num; i++) {
86972 + curuid = uidlist[i];
86973 + if (globalreal == curuid)
86974 + realok = 1;
86975 + if (globaleffective == curuid)
86976 + effectiveok = 1;
86977 + if (globalfs == curuid)
86978 + fsok = 1;
86979 + }
86980 + } else if (current->acl->user_trans_type & GR_ID_DENY) {
86981 + for (i = 0; i < num; i++) {
86982 + curuid = uidlist[i];
86983 + if (globalreal == curuid)
86984 + break;
86985 + if (globaleffective == curuid)
86986 + break;
86987 + if (globalfs == curuid)
86988 + break;
86989 + }
86990 + /* not in deny list */
86991 + if (i == num) {
86992 + realok = 1;
86993 + effectiveok = 1;
86994 + fsok = 1;
86995 + }
86996 + }
86997 +
86998 + if (realok && effectiveok && fsok)
86999 + return 0;
87000 + else {
87001 + gr_log_int(GR_DONT_AUDIT, GR_USRCHANGE_ACL_MSG, realok ? (effectiveok ? (fsok ? 0 : globalfs) : globaleffective) : globalreal);
87002 + return 1;
87003 + }
87004 +}
87005 +
87006 +int
87007 +gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs)
87008 +{
87009 + unsigned int i;
87010 + __u16 num;
87011 + gid_t *gidlist;
87012 + gid_t curgid;
87013 + int realok = 0;
87014 + int effectiveok = 0;
87015 + int fsok = 0;
87016 + gid_t globalreal, globaleffective, globalfs;
87017 +
87018 + if (unlikely(!(gr_status & GR_READY)))
87019 + return 0;
87020 +
87021 + if (current->acl->mode & (GR_LEARN | GR_INHERITLEARN))
87022 + gr_log_learn_gid_change(real, effective, fs);
87023 +
87024 + num = current->acl->group_trans_num;
87025 + gidlist = current->acl->group_transitions;
87026 +
87027 + if (gidlist == NULL)
87028 + return 0;
87029 +
87030 + if (!gid_valid(real)) {
87031 + realok = 1;
87032 + globalreal = (gid_t)-1;
87033 + } else {
87034 + globalreal = GR_GLOBAL_GID(real);
87035 + }
87036 + if (!gid_valid(effective)) {
87037 + effectiveok = 1;
87038 + globaleffective = (gid_t)-1;
87039 + } else {
87040 + globaleffective = GR_GLOBAL_GID(effective);
87041 + }
87042 + if (!gid_valid(fs)) {
87043 + fsok = 1;
87044 + globalfs = (gid_t)-1;
87045 + } else {
87046 + globalfs = GR_GLOBAL_GID(fs);
87047 + }
87048 +
87049 + if (current->acl->group_trans_type & GR_ID_ALLOW) {
87050 + for (i = 0; i < num; i++) {
87051 + curgid = gidlist[i];
87052 + if (globalreal == curgid)
87053 + realok = 1;
87054 + if (globaleffective == curgid)
87055 + effectiveok = 1;
87056 + if (globalfs == curgid)
87057 + fsok = 1;
87058 + }
87059 + } else if (current->acl->group_trans_type & GR_ID_DENY) {
87060 + for (i = 0; i < num; i++) {
87061 + curgid = gidlist[i];
87062 + if (globalreal == curgid)
87063 + break;
87064 + if (globaleffective == curgid)
87065 + break;
87066 + if (globalfs == curgid)
87067 + break;
87068 + }
87069 + /* not in deny list */
87070 + if (i == num) {
87071 + realok = 1;
87072 + effectiveok = 1;
87073 + fsok = 1;
87074 + }
87075 + }
87076 +
87077 + if (realok && effectiveok && fsok)
87078 + return 0;
87079 + else {
87080 + gr_log_int(GR_DONT_AUDIT, GR_GRPCHANGE_ACL_MSG, realok ? (effectiveok ? (fsok ? 0 : globalfs) : globaleffective) : globalreal);
87081 + return 1;
87082 + }
87083 +}
87084 +
87085 +extern int gr_acl_is_capable(const int cap);
87086 +
87087 +void
87088 +gr_set_role_label(struct task_struct *task, const kuid_t kuid, const kgid_t kgid)
87089 +{
87090 + struct acl_role_label *role = task->role;
87091 + struct acl_role_label *origrole = role;
87092 + struct acl_subject_label *subj = NULL;
87093 + struct acl_object_label *obj;
87094 + struct file *filp;
87095 + uid_t uid;
87096 + gid_t gid;
87097 +
87098 + if (unlikely(!(gr_status & GR_READY)))
87099 + return;
87100 +
87101 + uid = GR_GLOBAL_UID(kuid);
87102 + gid = GR_GLOBAL_GID(kgid);
87103 +
87104 + filp = task->exec_file;
87105 +
87106 + /* kernel process, we'll give them the kernel role */
87107 + if (unlikely(!filp)) {
87108 + task->role = running_polstate.kernel_role;
87109 + task->acl = running_polstate.kernel_role->root_label;
87110 + return;
87111 + } else if (!task->role || !(task->role->roletype & GR_ROLE_SPECIAL)) {
87112 + /* save the current ip at time of role lookup so that the proper
87113 + IP will be learned for role_allowed_ip */
87114 + task->signal->saved_ip = task->signal->curr_ip;
87115 + role = lookup_acl_role_label(task, uid, gid);
87116 + }
87117 +
87118 + /* don't change the role if we're not a privileged process */
87119 + if (role && task->role != role &&
87120 + (((role->roletype & GR_ROLE_USER) && !gr_acl_is_capable(CAP_SETUID)) ||
87121 + ((role->roletype & GR_ROLE_GROUP) && !gr_acl_is_capable(CAP_SETGID))))
87122 + return;
87123 +
87124 + task->role = role;
87125 +
87126 + if (task->inherited) {
87127 + /* if we reached our subject through inheritance, then first see
87128 + if there's a subject of the same name in the new role that has
87129 + an object that would result in the same inherited subject
87130 + */
87131 + subj = gr_get_subject_for_task(task, task->acl->filename, 0);
87132 + if (subj) {
87133 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, subj);
87134 + if (!(obj->mode & GR_INHERIT))
87135 + subj = NULL;
87136 + }
87137 +
87138 + }
87139 + if (subj == NULL) {
87140 + /* otherwise:
87141 + perform subject lookup in possibly new role
87142 + we can use this result below in the case where role == task->role
87143 + */
87144 + subj = chk_subj_label(filp->f_path.dentry, filp->f_path.mnt, role);
87145 + }
87146 +
87147 + /* if we changed uid/gid, but result in the same role
87148 + and are using inheritance, don't lose the inherited subject
87149 + if current subject is other than what normal lookup
87150 + would result in, we arrived via inheritance, don't
87151 + lose subject
87152 + */
87153 + if (role != origrole || (!(task->acl->mode & GR_INHERITLEARN) &&
87154 + (subj == task->acl)))
87155 + task->acl = subj;
87156 +
87157 + /* leave task->inherited unaffected */
87158 +
87159 + task->is_writable = 0;
87160 +
87161 + /* ignore additional mmap checks for processes that are writable
87162 + by the default ACL */
87163 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, running_polstate.default_role->root_label);
87164 + if (unlikely(obj->mode & GR_WRITE))
87165 + task->is_writable = 1;
87166 + obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, task->role->root_label);
87167 + if (unlikely(obj->mode & GR_WRITE))
87168 + task->is_writable = 1;
87169 +
87170 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
87171 + printk(KERN_ALERT "Set role label for (%s:%d): role:%s, subject:%s\n", task->comm, task_pid_nr(task), task->role->rolename, task->acl->filename);
87172 +#endif
87173 +
87174 + gr_set_proc_res(task);
87175 +
87176 + return;
87177 +}
87178 +
87179 +int
87180 +gr_set_proc_label(const struct dentry *dentry, const struct vfsmount *mnt,
87181 + const int unsafe_flags)
87182 +{
87183 + struct task_struct *task = current;
87184 + struct acl_subject_label *newacl;
87185 + struct acl_object_label *obj;
87186 + __u32 retmode;
87187 +
87188 + if (unlikely(!(gr_status & GR_READY)))
87189 + return 0;
87190 +
87191 + newacl = chk_subj_label(dentry, mnt, task->role);
87192 +
87193 + /* special handling for if we did an strace -f -p <pid> from an admin role, where pid then
87194 + did an exec
87195 + */
87196 + rcu_read_lock();
87197 + read_lock(&tasklist_lock);
87198 + if (task->ptrace && task->parent && ((task->parent->role->roletype & GR_ROLE_GOD) ||
87199 + (task->parent->acl->mode & GR_POVERRIDE))) {
87200 + read_unlock(&tasklist_lock);
87201 + rcu_read_unlock();
87202 + goto skip_check;
87203 + }
87204 + read_unlock(&tasklist_lock);
87205 + rcu_read_unlock();
87206 +
87207 + if (unsafe_flags && !(task->acl->mode & GR_POVERRIDE) && (task->acl != newacl) &&
87208 + !(task->role->roletype & GR_ROLE_GOD) &&
87209 + !gr_search_file(dentry, GR_PTRACERD, mnt) &&
87210 + !(task->acl->mode & (GR_LEARN | GR_INHERITLEARN))) {
87211 + if (unsafe_flags & LSM_UNSAFE_SHARE)
87212 + gr_log_fs_generic(GR_DONT_AUDIT, GR_UNSAFESHARE_EXEC_ACL_MSG, dentry, mnt);
87213 + else
87214 + gr_log_fs_generic(GR_DONT_AUDIT, GR_PTRACE_EXEC_ACL_MSG, dentry, mnt);
87215 + return -EACCES;
87216 + }
87217 +
87218 +skip_check:
87219 +
87220 + obj = chk_obj_label(dentry, mnt, task->acl);
87221 + retmode = obj->mode & (GR_INHERIT | GR_AUDIT_INHERIT);
87222 +
87223 + if (!(task->acl->mode & GR_INHERITLEARN) &&
87224 + ((newacl->mode & GR_LEARN) || !(retmode & GR_INHERIT))) {
87225 + if (obj->nested)
87226 + task->acl = obj->nested;
87227 + else
87228 + task->acl = newacl;
87229 + task->inherited = 0;
87230 + } else {
87231 + task->inherited = 1;
87232 + if (retmode & GR_INHERIT && retmode & GR_AUDIT_INHERIT)
87233 + gr_log_str_fs(GR_DO_AUDIT, GR_INHERIT_ACL_MSG, task->acl->filename, dentry, mnt);
87234 + }
87235 +
87236 + task->is_writable = 0;
87237 +
87238 + /* ignore additional mmap checks for processes that are writable
87239 + by the default ACL */
87240 + obj = chk_obj_label(dentry, mnt, running_polstate.default_role->root_label);
87241 + if (unlikely(obj->mode & GR_WRITE))
87242 + task->is_writable = 1;
87243 + obj = chk_obj_label(dentry, mnt, task->role->root_label);
87244 + if (unlikely(obj->mode & GR_WRITE))
87245 + task->is_writable = 1;
87246 +
87247 + gr_set_proc_res(task);
87248 +
87249 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
87250 + printk(KERN_ALERT "Set subject label for (%s:%d): role:%s, subject:%s\n", task->comm, task_pid_nr(task), task->role->rolename, task->acl->filename);
87251 +#endif
87252 + return 0;
87253 +}
87254 +
87255 +/* always called with valid inodev ptr */
87256 +static void
87257 +do_handle_delete(struct inodev_entry *inodev, const u64 ino, const dev_t dev)
87258 +{
87259 + struct acl_object_label *matchpo;
87260 + struct acl_subject_label *matchps;
87261 + struct acl_subject_label *subj;
87262 + struct acl_role_label *role;
87263 + unsigned int x;
87264 +
87265 + FOR_EACH_ROLE_START(role)
87266 + FOR_EACH_SUBJECT_START(role, subj, x)
87267 + if ((matchpo = lookup_acl_obj_label(ino, dev, subj)) != NULL)
87268 + matchpo->mode |= GR_DELETED;
87269 + FOR_EACH_SUBJECT_END(subj,x)
87270 + FOR_EACH_NESTED_SUBJECT_START(role, subj)
87271 + /* nested subjects aren't in the role's subj_hash table */
87272 + if ((matchpo = lookup_acl_obj_label(ino, dev, subj)) != NULL)
87273 + matchpo->mode |= GR_DELETED;
87274 + FOR_EACH_NESTED_SUBJECT_END(subj)
87275 + if ((matchps = lookup_acl_subj_label(ino, dev, role)) != NULL)
87276 + matchps->mode |= GR_DELETED;
87277 + FOR_EACH_ROLE_END(role)
87278 +
87279 + inodev->nentry->deleted = 1;
87280 +
87281 + return;
87282 +}
87283 +
87284 +void
87285 +gr_handle_delete(const u64 ino, const dev_t dev)
87286 +{
87287 + struct inodev_entry *inodev;
87288 +
87289 + if (unlikely(!(gr_status & GR_READY)))
87290 + return;
87291 +
87292 + write_lock(&gr_inode_lock);
87293 + inodev = lookup_inodev_entry(ino, dev);
87294 + if (inodev != NULL)
87295 + do_handle_delete(inodev, ino, dev);
87296 + write_unlock(&gr_inode_lock);
87297 +
87298 + return;
87299 +}
87300 +
87301 +static void
87302 +update_acl_obj_label(const u64 oldinode, const dev_t olddevice,
87303 + const u64 newinode, const dev_t newdevice,
87304 + struct acl_subject_label *subj)
87305 +{
87306 + unsigned int index = gr_fhash(oldinode, olddevice, subj->obj_hash_size);
87307 + struct acl_object_label *match;
87308 +
87309 + match = subj->obj_hash[index];
87310 +
87311 + while (match && (match->inode != oldinode ||
87312 + match->device != olddevice ||
87313 + !(match->mode & GR_DELETED)))
87314 + match = match->next;
87315 +
87316 + if (match && (match->inode == oldinode)
87317 + && (match->device == olddevice)
87318 + && (match->mode & GR_DELETED)) {
87319 + if (match->prev == NULL) {
87320 + subj->obj_hash[index] = match->next;
87321 + if (match->next != NULL)
87322 + match->next->prev = NULL;
87323 + } else {
87324 + match->prev->next = match->next;
87325 + if (match->next != NULL)
87326 + match->next->prev = match->prev;
87327 + }
87328 + match->prev = NULL;
87329 + match->next = NULL;
87330 + match->inode = newinode;
87331 + match->device = newdevice;
87332 + match->mode &= ~GR_DELETED;
87333 +
87334 + insert_acl_obj_label(match, subj);
87335 + }
87336 +
87337 + return;
87338 +}
87339 +
87340 +static void
87341 +update_acl_subj_label(const u64 oldinode, const dev_t olddevice,
87342 + const u64 newinode, const dev_t newdevice,
87343 + struct acl_role_label *role)
87344 +{
87345 + unsigned int index = gr_fhash(oldinode, olddevice, role->subj_hash_size);
87346 + struct acl_subject_label *match;
87347 +
87348 + match = role->subj_hash[index];
87349 +
87350 + while (match && (match->inode != oldinode ||
87351 + match->device != olddevice ||
87352 + !(match->mode & GR_DELETED)))
87353 + match = match->next;
87354 +
87355 + if (match && (match->inode == oldinode)
87356 + && (match->device == olddevice)
87357 + && (match->mode & GR_DELETED)) {
87358 + if (match->prev == NULL) {
87359 + role->subj_hash[index] = match->next;
87360 + if (match->next != NULL)
87361 + match->next->prev = NULL;
87362 + } else {
87363 + match->prev->next = match->next;
87364 + if (match->next != NULL)
87365 + match->next->prev = match->prev;
87366 + }
87367 + match->prev = NULL;
87368 + match->next = NULL;
87369 + match->inode = newinode;
87370 + match->device = newdevice;
87371 + match->mode &= ~GR_DELETED;
87372 +
87373 + insert_acl_subj_label(match, role);
87374 + }
87375 +
87376 + return;
87377 +}
87378 +
87379 +static void
87380 +update_inodev_entry(const u64 oldinode, const dev_t olddevice,
87381 + const u64 newinode, const dev_t newdevice)
87382 +{
87383 + unsigned int index = gr_fhash(oldinode, olddevice, running_polstate.inodev_set.i_size);
87384 + struct inodev_entry *match;
87385 +
87386 + match = running_polstate.inodev_set.i_hash[index];
87387 +
87388 + while (match && (match->nentry->inode != oldinode ||
87389 + match->nentry->device != olddevice || !match->nentry->deleted))
87390 + match = match->next;
87391 +
87392 + if (match && (match->nentry->inode == oldinode)
87393 + && (match->nentry->device == olddevice) &&
87394 + match->nentry->deleted) {
87395 + if (match->prev == NULL) {
87396 + running_polstate.inodev_set.i_hash[index] = match->next;
87397 + if (match->next != NULL)
87398 + match->next->prev = NULL;
87399 + } else {
87400 + match->prev->next = match->next;
87401 + if (match->next != NULL)
87402 + match->next->prev = match->prev;
87403 + }
87404 + match->prev = NULL;
87405 + match->next = NULL;
87406 + match->nentry->inode = newinode;
87407 + match->nentry->device = newdevice;
87408 + match->nentry->deleted = 0;
87409 +
87410 + insert_inodev_entry(match);
87411 + }
87412 +
87413 + return;
87414 +}
87415 +
87416 +static void
87417 +__do_handle_create(const struct name_entry *matchn, u64 ino, dev_t dev)
87418 +{
87419 + struct acl_subject_label *subj;
87420 + struct acl_role_label *role;
87421 + unsigned int x;
87422 +
87423 + FOR_EACH_ROLE_START(role)
87424 + update_acl_subj_label(matchn->inode, matchn->device, ino, dev, role);
87425 +
87426 + FOR_EACH_NESTED_SUBJECT_START(role, subj)
87427 + if ((subj->inode == ino) && (subj->device == dev)) {
87428 + subj->inode = ino;
87429 + subj->device = dev;
87430 + }
87431 + /* nested subjects aren't in the role's subj_hash table */
87432 + update_acl_obj_label(matchn->inode, matchn->device,
87433 + ino, dev, subj);
87434 + FOR_EACH_NESTED_SUBJECT_END(subj)
87435 + FOR_EACH_SUBJECT_START(role, subj, x)
87436 + update_acl_obj_label(matchn->inode, matchn->device,
87437 + ino, dev, subj);
87438 + FOR_EACH_SUBJECT_END(subj,x)
87439 + FOR_EACH_ROLE_END(role)
87440 +
87441 + update_inodev_entry(matchn->inode, matchn->device, ino, dev);
87442 +
87443 + return;
87444 +}
87445 +
87446 +static void
87447 +do_handle_create(const struct name_entry *matchn, const struct dentry *dentry,
87448 + const struct vfsmount *mnt)
87449 +{
87450 + u64 ino = __get_ino(dentry);
87451 + dev_t dev = __get_dev(dentry);
87452 +
87453 + __do_handle_create(matchn, ino, dev);
87454 +
87455 + return;
87456 +}
87457 +
87458 +void
87459 +gr_handle_create(const struct dentry *dentry, const struct vfsmount *mnt)
87460 +{
87461 + struct name_entry *matchn;
87462 +
87463 + if (unlikely(!(gr_status & GR_READY)))
87464 + return;
87465 +
87466 + preempt_disable();
87467 + matchn = lookup_name_entry(gr_to_filename_rbac(dentry, mnt));
87468 +
87469 + if (unlikely((unsigned long)matchn)) {
87470 + write_lock(&gr_inode_lock);
87471 + do_handle_create(matchn, dentry, mnt);
87472 + write_unlock(&gr_inode_lock);
87473 + }
87474 + preempt_enable();
87475 +
87476 + return;
87477 +}
87478 +
87479 +void
87480 +gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode)
87481 +{
87482 + struct name_entry *matchn;
87483 +
87484 + if (unlikely(!(gr_status & GR_READY)))
87485 + return;
87486 +
87487 + preempt_disable();
87488 + matchn = lookup_name_entry(gr_to_proc_filename_rbac(dentry, init_pid_ns.proc_mnt));
87489 +
87490 + if (unlikely((unsigned long)matchn)) {
87491 + write_lock(&gr_inode_lock);
87492 + __do_handle_create(matchn, inode->i_ino, inode->i_sb->s_dev);
87493 + write_unlock(&gr_inode_lock);
87494 + }
87495 + preempt_enable();
87496 +
87497 + return;
87498 +}
87499 +
87500 +void
87501 +gr_handle_rename(struct inode *old_dir, struct inode *new_dir,
87502 + struct dentry *old_dentry,
87503 + struct dentry *new_dentry,
87504 + struct vfsmount *mnt, const __u8 replace, unsigned int flags)
87505 +{
87506 + struct name_entry *matchn;
87507 + struct name_entry *matchn2 = NULL;
87508 + struct inodev_entry *inodev;
87509 + struct inode *inode = d_backing_inode(new_dentry);
87510 + struct inode *old_inode = d_backing_inode(old_dentry);
87511 + u64 old_ino = __get_ino(old_dentry);
87512 + dev_t old_dev = __get_dev(old_dentry);
87513 + unsigned int exchange = flags & RENAME_EXCHANGE;
87514 +
87515 + /* vfs_rename swaps the name and parent link for old_dentry and
87516 + new_dentry
87517 + at this point, old_dentry has the new name, parent link, and inode
87518 + for the renamed file
87519 + if a file is being replaced by a rename, new_dentry has the inode
87520 + and name for the replaced file
87521 + */
87522 +
87523 + if (unlikely(!(gr_status & GR_READY)))
87524 + return;
87525 +
87526 + preempt_disable();
87527 + matchn = lookup_name_entry(gr_to_filename_rbac(old_dentry, mnt));
87528 +
87529 + /* exchange cases:
87530 + a filename exists for the source, but not dest
87531 + do a recreate on source
87532 + a filename exists for the dest, but not source
87533 + do a recreate on dest
87534 + a filename exists for both source and dest
87535 + delete source and dest, then create source and dest
87536 + a filename exists for neither source nor dest
87537 + no updates needed
87538 +
87539 + the name entry lookups get us the old inode/dev associated with
87540 + each name, so do the deletes first (if possible) so that when
87541 + we do the create, we pick up on the right entries
87542 + */
87543 +
87544 + if (exchange)
87545 + matchn2 = lookup_name_entry(gr_to_filename_rbac(new_dentry, mnt));
87546 +
87547 + /* we wouldn't have to check d_inode if it weren't for
87548 + NFS silly-renaming
87549 + */
87550 +
87551 + write_lock(&gr_inode_lock);
87552 + if (unlikely((replace || exchange) && inode)) {
87553 + u64 new_ino = __get_ino(new_dentry);
87554 + dev_t new_dev = __get_dev(new_dentry);
87555 +
87556 + inodev = lookup_inodev_entry(new_ino, new_dev);
87557 + if (inodev != NULL && ((inode->i_nlink <= 1) || d_is_dir(new_dentry)))
87558 + do_handle_delete(inodev, new_ino, new_dev);
87559 + }
87560 +
87561 + inodev = lookup_inodev_entry(old_ino, old_dev);
87562 + if (inodev != NULL && ((old_inode->i_nlink <= 1) || d_is_dir(old_dentry)))
87563 + do_handle_delete(inodev, old_ino, old_dev);
87564 +
87565 + if (unlikely(matchn != NULL))
87566 + do_handle_create(matchn, old_dentry, mnt);
87567 +
87568 + if (unlikely(matchn2 != NULL))
87569 + do_handle_create(matchn2, new_dentry, mnt);
87570 +
87571 + write_unlock(&gr_inode_lock);
87572 + preempt_enable();
87573 +
87574 + return;
87575 +}
87576 +
87577 +#if defined(CONFIG_GRKERNSEC_RESLOG) || !defined(CONFIG_GRKERNSEC_NO_RBAC)
87578 +static const unsigned long res_learn_bumps[GR_NLIMITS] = {
87579 + [RLIMIT_CPU] = GR_RLIM_CPU_BUMP,
87580 + [RLIMIT_FSIZE] = GR_RLIM_FSIZE_BUMP,
87581 + [RLIMIT_DATA] = GR_RLIM_DATA_BUMP,
87582 + [RLIMIT_STACK] = GR_RLIM_STACK_BUMP,
87583 + [RLIMIT_CORE] = GR_RLIM_CORE_BUMP,
87584 + [RLIMIT_RSS] = GR_RLIM_RSS_BUMP,
87585 + [RLIMIT_NPROC] = GR_RLIM_NPROC_BUMP,
87586 + [RLIMIT_NOFILE] = GR_RLIM_NOFILE_BUMP,
87587 + [RLIMIT_MEMLOCK] = GR_RLIM_MEMLOCK_BUMP,
87588 + [RLIMIT_AS] = GR_RLIM_AS_BUMP,
87589 + [RLIMIT_LOCKS] = GR_RLIM_LOCKS_BUMP,
87590 + [RLIMIT_SIGPENDING] = GR_RLIM_SIGPENDING_BUMP,
87591 + [RLIMIT_MSGQUEUE] = GR_RLIM_MSGQUEUE_BUMP,
87592 + [RLIMIT_NICE] = GR_RLIM_NICE_BUMP,
87593 + [RLIMIT_RTPRIO] = GR_RLIM_RTPRIO_BUMP,
87594 + [RLIMIT_RTTIME] = GR_RLIM_RTTIME_BUMP
87595 +};
87596 +
87597 +void
87598 +gr_learn_resource(const struct task_struct *task,
87599 + const int res, const unsigned long wanted, const int gt)
87600 +{
87601 + struct acl_subject_label *acl;
87602 + const struct cred *cred;
87603 +
87604 + if (unlikely((gr_status & GR_READY) &&
87605 + task->acl && (task->acl->mode & (GR_LEARN | GR_INHERITLEARN))))
87606 + goto skip_reslog;
87607 +
87608 + gr_log_resource(task, res, wanted, gt);
87609 +skip_reslog:
87610 +
87611 + if (unlikely(!(gr_status & GR_READY) || !wanted || res >= GR_NLIMITS))
87612 + return;
87613 +
87614 + acl = task->acl;
87615 +
87616 + if (likely(!acl || !(acl->mode & (GR_LEARN | GR_INHERITLEARN)) ||
87617 + !(acl->resmask & (1U << (unsigned short) res))))
87618 + return;
87619 +
87620 + if (wanted >= acl->res[res].rlim_cur) {
87621 + unsigned long res_add;
87622 +
87623 + res_add = wanted + res_learn_bumps[res];
87624 +
87625 + acl->res[res].rlim_cur = res_add;
87626 +
87627 + if (wanted > acl->res[res].rlim_max)
87628 + acl->res[res].rlim_max = res_add;
87629 +
87630 + /* only log the subject filename, since resource logging is supported for
87631 + single-subject learning only */
87632 + rcu_read_lock();
87633 + cred = __task_cred(task);
87634 + security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
87635 + task->role->roletype, GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid), acl->filename,
87636 + acl->filename, acl->res[res].rlim_cur, acl->res[res].rlim_max,
87637 + "", (unsigned long) res, &task->signal->saved_ip);
87638 + rcu_read_unlock();
87639 + }
87640 +
87641 + return;
87642 +}
87643 +EXPORT_SYMBOL_GPL(gr_learn_resource);
87644 +#endif
87645 +
87646 +#if defined(CONFIG_PAX_HAVE_ACL_FLAGS) && (defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR))
87647 +void
87648 +pax_set_initial_flags(struct linux_binprm *bprm)
87649 +{
87650 + struct task_struct *task = current;
87651 + struct acl_subject_label *proc;
87652 + unsigned long flags;
87653 +
87654 + if (unlikely(!(gr_status & GR_READY)))
87655 + return;
87656 +
87657 + flags = pax_get_flags(task);
87658 +
87659 + proc = task->acl;
87660 +
87661 + if (proc->pax_flags & GR_PAX_DISABLE_PAGEEXEC)
87662 + flags &= ~MF_PAX_PAGEEXEC;
87663 + if (proc->pax_flags & GR_PAX_DISABLE_SEGMEXEC)
87664 + flags &= ~MF_PAX_SEGMEXEC;
87665 + if (proc->pax_flags & GR_PAX_DISABLE_RANDMMAP)
87666 + flags &= ~MF_PAX_RANDMMAP;
87667 + if (proc->pax_flags & GR_PAX_DISABLE_EMUTRAMP)
87668 + flags &= ~MF_PAX_EMUTRAMP;
87669 + if (proc->pax_flags & GR_PAX_DISABLE_MPROTECT)
87670 + flags &= ~MF_PAX_MPROTECT;
87671 +
87672 + if (proc->pax_flags & GR_PAX_ENABLE_PAGEEXEC)
87673 + flags |= MF_PAX_PAGEEXEC;
87674 + if (proc->pax_flags & GR_PAX_ENABLE_SEGMEXEC)
87675 + flags |= MF_PAX_SEGMEXEC;
87676 + if (proc->pax_flags & GR_PAX_ENABLE_RANDMMAP)
87677 + flags |= MF_PAX_RANDMMAP;
87678 + if (proc->pax_flags & GR_PAX_ENABLE_EMUTRAMP)
87679 + flags |= MF_PAX_EMUTRAMP;
87680 + if (proc->pax_flags & GR_PAX_ENABLE_MPROTECT)
87681 + flags |= MF_PAX_MPROTECT;
87682 +
87683 + pax_set_flags(task, flags);
87684 +
87685 + return;
87686 +}
87687 +#endif
87688 +
87689 +int
87690 +gr_handle_proc_ptrace(struct task_struct *task)
87691 +{
87692 + struct file *filp;
87693 + struct task_struct *tmp = task;
87694 + struct task_struct *curtemp = current;
87695 + __u32 retmode;
87696 +
87697 +#ifndef CONFIG_GRKERNSEC_HARDEN_PTRACE
87698 + if (unlikely(!(gr_status & GR_READY)))
87699 + return 0;
87700 +#endif
87701 +
87702 + read_lock(&tasklist_lock);
87703 + read_lock(&grsec_exec_file_lock);
87704 + filp = task->exec_file;
87705 +
87706 + while (task_pid_nr(tmp) > 0) {
87707 + if (tmp == curtemp)
87708 + break;
87709 + tmp = tmp->real_parent;
87710 + }
87711 +
87712 + if (!filp || (task_pid_nr(tmp) == 0 && ((grsec_enable_harden_ptrace && gr_is_global_nonroot(current_uid()) && !(gr_status & GR_READY)) ||
87713 + ((gr_status & GR_READY) && !(current->acl->mode & GR_RELAXPTRACE))))) {
87714 + read_unlock(&grsec_exec_file_lock);
87715 + read_unlock(&tasklist_lock);
87716 + return 1;
87717 + }
87718 +
87719 +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE
87720 + if (!(gr_status & GR_READY)) {
87721 + read_unlock(&grsec_exec_file_lock);
87722 + read_unlock(&tasklist_lock);
87723 + return 0;
87724 + }
87725 +#endif
87726 +
87727 + retmode = gr_search_file(filp->f_path.dentry, GR_NOPTRACE, filp->f_path.mnt);
87728 + read_unlock(&grsec_exec_file_lock);
87729 + read_unlock(&tasklist_lock);
87730 +
87731 + if (retmode & GR_NOPTRACE)
87732 + return 1;
87733 +
87734 + if (!(current->acl->mode & GR_POVERRIDE) && !(current->role->roletype & GR_ROLE_GOD)
87735 + && (current->acl != task->acl || (current->acl != current->role->root_label
87736 + && task_pid_nr(current) != task_pid_nr(task))))
87737 + return 1;
87738 +
87739 + return 0;
87740 +}
87741 +
87742 +void task_grsec_rbac(struct seq_file *m, struct task_struct *p)
87743 +{
87744 + if (unlikely(!(gr_status & GR_READY)))
87745 + return;
87746 +
87747 + if (!(current->role->roletype & GR_ROLE_GOD))
87748 + return;
87749 +
87750 + seq_printf(m, "RBAC:\t%.64s:%c:%.950s\n",
87751 + p->role->rolename, gr_task_roletype_to_char(p),
87752 + p->acl->filename);
87753 +}
87754 +
87755 +int
87756 +gr_handle_ptrace(struct task_struct *task, const long request)
87757 +{
87758 + struct task_struct *tmp = task;
87759 + struct task_struct *curtemp = current;
87760 + __u32 retmode;
87761 +
87762 +#ifndef CONFIG_GRKERNSEC_HARDEN_PTRACE
87763 + if (unlikely(!(gr_status & GR_READY)))
87764 + return 0;
87765 +#endif
87766 + if (request == PTRACE_ATTACH || request == PTRACE_SEIZE) {
87767 + read_lock(&tasklist_lock);
87768 + while (task_pid_nr(tmp) > 0) {
87769 + if (tmp == curtemp)
87770 + break;
87771 + tmp = tmp->real_parent;
87772 + }
87773 +
87774 + if (task_pid_nr(tmp) == 0 && ((grsec_enable_harden_ptrace && gr_is_global_nonroot(current_uid()) && !(gr_status & GR_READY)) ||
87775 + ((gr_status & GR_READY) && !(current->acl->mode & GR_RELAXPTRACE)))) {
87776 + read_unlock(&tasklist_lock);
87777 + gr_log_ptrace(GR_DONT_AUDIT, GR_PTRACE_ACL_MSG, task);
87778 + return 1;
87779 + }
87780 + read_unlock(&tasklist_lock);
87781 + }
87782 +
87783 +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE
87784 + if (!(gr_status & GR_READY))
87785 + return 0;
87786 +#endif
87787 +
87788 + read_lock(&grsec_exec_file_lock);
87789 + if (unlikely(!task->exec_file)) {
87790 + read_unlock(&grsec_exec_file_lock);
87791 + return 0;
87792 + }
87793 +
87794 + retmode = gr_search_file(task->exec_file->f_path.dentry, GR_PTRACERD | GR_NOPTRACE, task->exec_file->f_path.mnt);
87795 + read_unlock(&grsec_exec_file_lock);
87796 +
87797 + if (retmode & GR_NOPTRACE) {
87798 + gr_log_ptrace(GR_DONT_AUDIT, GR_PTRACE_ACL_MSG, task);
87799 + return 1;
87800 + }
87801 +
87802 + if (retmode & GR_PTRACERD) {
87803 + switch (request) {
87804 + case PTRACE_SEIZE:
87805 + case PTRACE_POKETEXT:
87806 + case PTRACE_POKEDATA:
87807 + case PTRACE_POKEUSR:
87808 +#if !defined(CONFIG_PPC32) && !defined(CONFIG_PPC64) && !defined(CONFIG_PARISC) && !defined(CONFIG_ALPHA) && !defined(CONFIG_IA64)
87809 + case PTRACE_SETREGS:
87810 + case PTRACE_SETFPREGS:
87811 +#endif
87812 +#ifdef CONFIG_X86
87813 + case PTRACE_SETFPXREGS:
87814 +#endif
87815 +#ifdef CONFIG_ALTIVEC
87816 + case PTRACE_SETVRREGS:
87817 +#endif
87818 + return 1;
87819 + default:
87820 + return 0;
87821 + }
87822 + } else if (!(current->acl->mode & GR_POVERRIDE) &&
87823 + !(current->role->roletype & GR_ROLE_GOD) &&
87824 + (current->acl != task->acl)) {
87825 + gr_log_ptrace(GR_DONT_AUDIT, GR_PTRACE_ACL_MSG, task);
87826 + return 1;
87827 + }
87828 +
87829 + return 0;
87830 +}
87831 +
87832 +static int is_writable_mmap(const struct file *filp)
87833 +{
87834 + struct task_struct *task = current;
87835 + struct acl_object_label *obj, *obj2;
87836 + struct dentry *dentry = filp->f_path.dentry;
87837 + struct vfsmount *mnt = filp->f_path.mnt;
87838 + struct inode *inode = d_backing_inode(dentry);
87839 +
87840 + if (gr_status & GR_READY && !(task->acl->mode & GR_OVERRIDE) &&
87841 + !task->is_writable && d_is_reg(dentry) && (mnt != shm_mnt || (inode->i_nlink > 0))) {
87842 + obj = chk_obj_label(dentry, mnt, running_polstate.default_role->root_label);
87843 + obj2 = chk_obj_label(dentry, mnt, task->role->root_label);
87844 + if (unlikely((obj->mode & GR_WRITE) || (obj2->mode & GR_WRITE))) {
87845 + gr_log_fs_generic(GR_DONT_AUDIT, GR_WRITLIB_ACL_MSG, dentry, mnt);
87846 + return 1;
87847 + }
87848 + }
87849 + return 0;
87850 +}
87851 +
87852 +int
87853 +gr_acl_handle_mmap(const struct file *file, const unsigned long prot)
87854 +{
87855 + __u32 mode;
87856 +
87857 + if (unlikely(!file || !(prot & PROT_EXEC)))
87858 + return 1;
87859 +
87860 + if (is_writable_mmap(file))
87861 + return 0;
87862 +
87863 + mode =
87864 + gr_search_file(file->f_path.dentry,
87865 + GR_EXEC | GR_AUDIT_EXEC | GR_SUPPRESS,
87866 + file->f_path.mnt);
87867 +
87868 + if (!gr_tpe_allow(file))
87869 + return 0;
87870 +
87871 + if (unlikely(!(mode & GR_EXEC) && !(mode & GR_SUPPRESS))) {
87872 + gr_log_fs_rbac_generic(GR_DONT_AUDIT, GR_MMAP_ACL_MSG, file->f_path.dentry, file->f_path.mnt);
87873 + return 0;
87874 + } else if (unlikely(!(mode & GR_EXEC))) {
87875 + return 0;
87876 + } else if (unlikely(mode & GR_EXEC && mode & GR_AUDIT_EXEC)) {
87877 + gr_log_fs_rbac_generic(GR_DO_AUDIT, GR_MMAP_ACL_MSG, file->f_path.dentry, file->f_path.mnt);
87878 + return 1;
87879 + }
87880 +
87881 + return 1;
87882 +}
87883 +
87884 +int
87885 +gr_acl_handle_mprotect(const struct file *file, const unsigned long prot)
87886 +{
87887 + __u32 mode;
87888 +
87889 + if (unlikely(!file || !(prot & PROT_EXEC)))
87890 + return 1;
87891 +
87892 + if (is_writable_mmap(file))
87893 + return 0;
87894 +
87895 + mode =
87896 + gr_search_file(file->f_path.dentry,
87897 + GR_EXEC | GR_AUDIT_EXEC | GR_SUPPRESS,
87898 + file->f_path.mnt);
87899 +
87900 + if (!gr_tpe_allow(file))
87901 + return 0;
87902 +
87903 + if (unlikely(!(mode & GR_EXEC) && !(mode & GR_SUPPRESS))) {
87904 + gr_log_fs_rbac_generic(GR_DONT_AUDIT, GR_MPROTECT_ACL_MSG, file->f_path.dentry, file->f_path.mnt);
87905 + return 0;
87906 + } else if (unlikely(!(mode & GR_EXEC))) {
87907 + return 0;
87908 + } else if (unlikely(mode & GR_EXEC && mode & GR_AUDIT_EXEC)) {
87909 + gr_log_fs_rbac_generic(GR_DO_AUDIT, GR_MPROTECT_ACL_MSG, file->f_path.dentry, file->f_path.mnt);
87910 + return 1;
87911 + }
87912 +
87913 + return 1;
87914 +}
87915 +
87916 +void
87917 +gr_acl_handle_psacct(struct task_struct *task, const long code)
87918 +{
87919 + unsigned long runtime, cputime;
87920 + cputime_t utime, stime;
87921 + unsigned int wday, cday;
87922 + __u8 whr, chr;
87923 + __u8 wmin, cmin;
87924 + __u8 wsec, csec;
87925 + struct timespec curtime, starttime;
87926 +
87927 + if (unlikely(!(gr_status & GR_READY) || !task->acl ||
87928 + !(task->acl->mode & GR_PROCACCT)))
87929 + return;
87930 +
87931 + curtime = ns_to_timespec(ktime_get_ns());
87932 + starttime = ns_to_timespec(task->start_time);
87933 + runtime = curtime.tv_sec - starttime.tv_sec;
87934 + wday = runtime / (60 * 60 * 24);
87935 + runtime -= wday * (60 * 60 * 24);
87936 + whr = runtime / (60 * 60);
87937 + runtime -= whr * (60 * 60);
87938 + wmin = runtime / 60;
87939 + runtime -= wmin * 60;
87940 + wsec = runtime;
87941 +
87942 + task_cputime(task, &utime, &stime);
87943 + cputime = cputime_to_secs(utime + stime);
87944 + cday = cputime / (60 * 60 * 24);
87945 + cputime -= cday * (60 * 60 * 24);
87946 + chr = cputime / (60 * 60);
87947 + cputime -= chr * (60 * 60);
87948 + cmin = cputime / 60;
87949 + cputime -= cmin * 60;
87950 + csec = cputime;
87951 +
87952 + gr_log_procacct(GR_DO_AUDIT, GR_ACL_PROCACCT_MSG, task, wday, whr, wmin, wsec, cday, chr, cmin, csec, code);
87953 +
87954 + return;
87955 +}
87956 +
87957 +#ifdef CONFIG_TASKSTATS
87958 +int gr_is_taskstats_denied(int pid)
87959 +{
87960 + struct task_struct *task;
87961 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
87962 + const struct cred *cred;
87963 +#endif
87964 + int ret = 0;
87965 +
87966 + /* restrict taskstats viewing to un-chrooted root users
87967 + who have the 'view' subject flag if the RBAC system is enabled
87968 + */
87969 +
87970 + rcu_read_lock();
87971 + read_lock(&tasklist_lock);
87972 + task = find_task_by_vpid(pid);
87973 + if (task) {
87974 +#ifdef CONFIG_GRKERNSEC_CHROOT
87975 + if (proc_is_chrooted(task))
87976 + ret = -EACCES;
87977 +#endif
87978 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
87979 + cred = __task_cred(task);
87980 +#ifdef CONFIG_GRKERNSEC_PROC_USER
87981 + if (gr_is_global_nonroot(cred->uid))
87982 + ret = -EACCES;
87983 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
87984 + if (gr_is_global_nonroot(cred->uid) && !groups_search(cred->group_info, grsec_proc_gid))
87985 + ret = -EACCES;
87986 +#endif
87987 +#endif
87988 + if (gr_status & GR_READY) {
87989 + if (!(task->acl->mode & GR_VIEW))
87990 + ret = -EACCES;
87991 + }
87992 + } else
87993 + ret = -ENOENT;
87994 +
87995 + read_unlock(&tasklist_lock);
87996 + rcu_read_unlock();
87997 +
87998 + return ret;
87999 +}
88000 +#endif
88001 +
88002 +/* AUXV entries are filled via a descendant of search_binary_handler
88003 + after we've already applied the subject for the target
88004 +*/
88005 +int gr_acl_enable_at_secure(void)
88006 +{
88007 + if (unlikely(!(gr_status & GR_READY)))
88008 + return 0;
88009 +
88010 + if (current->acl->mode & GR_ATSECURE)
88011 + return 1;
88012 +
88013 + return 0;
88014 +}
88015 +
88016 +int gr_acl_handle_filldir(const struct file *file, const char *name, const unsigned int namelen, const u64 ino)
88017 +{
88018 + struct task_struct *task = current;
88019 + struct dentry *dentry = file->f_path.dentry;
88020 + struct vfsmount *mnt = file->f_path.mnt;
88021 + struct acl_object_label *obj, *tmp;
88022 + struct acl_subject_label *subj;
88023 + unsigned int bufsize;
88024 + int is_not_root;
88025 + char *path;
88026 + dev_t dev = __get_dev(dentry);
88027 +
88028 + if (unlikely(!(gr_status & GR_READY)))
88029 + return 1;
88030 +
88031 + if (task->acl->mode & (GR_LEARN | GR_INHERITLEARN))
88032 + return 1;
88033 +
88034 + /* ignore Eric Biederman */
88035 + if (IS_PRIVATE(d_backing_inode(dentry)))
88036 + return 1;
88037 +
88038 + subj = task->acl;
88039 + read_lock(&gr_inode_lock);
88040 + do {
88041 + obj = lookup_acl_obj_label(ino, dev, subj);
88042 + if (obj != NULL) {
88043 + read_unlock(&gr_inode_lock);
88044 + return (obj->mode & GR_FIND) ? 1 : 0;
88045 + }
88046 + } while ((subj = subj->parent_subject));
88047 + read_unlock(&gr_inode_lock);
88048 +
88049 + /* this is purely an optimization since we're looking for an object
88050 + for the directory we're doing a readdir on
88051 + if it's possible for any globbed object to match the entry we're
88052 + filling into the directory, then the object we find here will be
88053 + an anchor point with attached globbed objects
88054 + */
88055 + obj = chk_obj_label_noglob(dentry, mnt, task->acl);
88056 + if (obj->globbed == NULL)
88057 + return (obj->mode & GR_FIND) ? 1 : 0;
88058 +
88059 + is_not_root = ((obj->filename[0] == '/') &&
88060 + (obj->filename[1] == '\0')) ? 0 : 1;
88061 + bufsize = PAGE_SIZE - namelen - is_not_root;
88062 +
88063 + /* check bufsize > PAGE_SIZE || bufsize == 0 */
88064 + if (unlikely((bufsize - 1) > (PAGE_SIZE - 1)))
88065 + return 1;
88066 +
88067 + preempt_disable();
88068 + path = d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[0], smp_processor_id()),
88069 + bufsize);
88070 +
88071 + bufsize = strlen(path);
88072 +
88073 + /* if base is "/", don't append an additional slash */
88074 + if (is_not_root)
88075 + *(path + bufsize) = '/';
88076 + memcpy(path + bufsize + is_not_root, name, namelen);
88077 + *(path + bufsize + namelen + is_not_root) = '\0';
88078 +
88079 + tmp = obj->globbed;
88080 + while (tmp) {
88081 + if (!glob_match(tmp->filename, path)) {
88082 + preempt_enable();
88083 + return (tmp->mode & GR_FIND) ? 1 : 0;
88084 + }
88085 + tmp = tmp->next;
88086 + }
88087 + preempt_enable();
88088 + return (obj->mode & GR_FIND) ? 1 : 0;
88089 +}
88090 +
88091 +void gr_put_exec_file(struct task_struct *task)
88092 +{
88093 + struct file *filp;
88094 +
88095 + write_lock(&grsec_exec_file_lock);
88096 + filp = task->exec_file;
88097 + task->exec_file = NULL;
88098 + write_unlock(&grsec_exec_file_lock);
88099 +
88100 + if (filp)
88101 + fput(filp);
88102 +
88103 + return;
88104 +}
88105 +
88106 +
88107 +#ifdef CONFIG_NETFILTER_XT_MATCH_GRADM_MODULE
88108 +EXPORT_SYMBOL_GPL(gr_acl_is_enabled);
88109 +#endif
88110 +#ifdef CONFIG_SECURITY
88111 +EXPORT_SYMBOL_GPL(gr_check_user_change);
88112 +EXPORT_SYMBOL_GPL(gr_check_group_change);
88113 +#endif
88114 +
88115 diff --git a/grsecurity/gracl_alloc.c b/grsecurity/gracl_alloc.c
88116 new file mode 100644
88117 index 0000000..9adc75c
88118 --- /dev/null
88119 +++ b/grsecurity/gracl_alloc.c
88120 @@ -0,0 +1,105 @@
88121 +#include <linux/kernel.h>
88122 +#include <linux/mm.h>
88123 +#include <linux/slab.h>
88124 +#include <linux/vmalloc.h>
88125 +#include <linux/gracl.h>
88126 +#include <linux/grsecurity.h>
88127 +
88128 +static struct gr_alloc_state __current_alloc_state = { 1, 1, NULL };
88129 +struct gr_alloc_state *current_alloc_state = &__current_alloc_state;
88130 +
88131 +static int
88132 +alloc_pop(void)
88133 +{
88134 + if (current_alloc_state->alloc_stack_next == 1)
88135 + return 0;
88136 +
88137 + kfree(current_alloc_state->alloc_stack[current_alloc_state->alloc_stack_next - 2]);
88138 +
88139 + current_alloc_state->alloc_stack_next--;
88140 +
88141 + return 1;
88142 +}
88143 +
88144 +static int
88145 +alloc_push(void *buf)
88146 +{
88147 + if (current_alloc_state->alloc_stack_next >= current_alloc_state->alloc_stack_size)
88148 + return 1;
88149 +
88150 + current_alloc_state->alloc_stack[current_alloc_state->alloc_stack_next - 1] = buf;
88151 +
88152 + current_alloc_state->alloc_stack_next++;
88153 +
88154 + return 0;
88155 +}
88156 +
88157 +void *
88158 +acl_alloc(unsigned long len)
88159 +{
88160 + void *ret = NULL;
88161 +
88162 + if (!len || len > PAGE_SIZE)
88163 + goto out;
88164 +
88165 + ret = kmalloc(len, GFP_KERNEL);
88166 +
88167 + if (ret) {
88168 + if (alloc_push(ret)) {
88169 + kfree(ret);
88170 + ret = NULL;
88171 + }
88172 + }
88173 +
88174 +out:
88175 + return ret;
88176 +}
88177 +
88178 +void *
88179 +acl_alloc_num(unsigned long num, unsigned long len)
88180 +{
88181 + if (!len || (num > (PAGE_SIZE / len)))
88182 + return NULL;
88183 +
88184 + return acl_alloc(num * len);
88185 +}
88186 +
88187 +void
88188 +acl_free_all(void)
88189 +{
88190 + if (!current_alloc_state->alloc_stack)
88191 + return;
88192 +
88193 + while (alloc_pop()) ;
88194 +
88195 + if (current_alloc_state->alloc_stack) {
88196 + if ((current_alloc_state->alloc_stack_size * sizeof (void *)) <= PAGE_SIZE)
88197 + kfree(current_alloc_state->alloc_stack);
88198 + else
88199 + vfree(current_alloc_state->alloc_stack);
88200 + }
88201 +
88202 + current_alloc_state->alloc_stack = NULL;
88203 + current_alloc_state->alloc_stack_size = 1;
88204 + current_alloc_state->alloc_stack_next = 1;
88205 +
88206 + return;
88207 +}
88208 +
88209 +int
88210 +acl_alloc_stack_init(unsigned long size)
88211 +{
88212 + if ((size * sizeof (void *)) <= PAGE_SIZE)
88213 + current_alloc_state->alloc_stack =
88214 + (void **) kmalloc(size * sizeof (void *), GFP_KERNEL);
88215 + else
88216 + current_alloc_state->alloc_stack = (void **) vmalloc(size * sizeof (void *));
88217 +
88218 + current_alloc_state->alloc_stack_size = size;
88219 + current_alloc_state->alloc_stack_next = 1;
88220 +
88221 + if (!current_alloc_state->alloc_stack)
88222 + return 0;
88223 + else
88224 + return 1;
88225 +}
88226 diff --git a/grsecurity/gracl_cap.c b/grsecurity/gracl_cap.c
88227 new file mode 100644
88228 index 0000000..1a94c11
88229 --- /dev/null
88230 +++ b/grsecurity/gracl_cap.c
88231 @@ -0,0 +1,127 @@
88232 +#include <linux/kernel.h>
88233 +#include <linux/module.h>
88234 +#include <linux/sched.h>
88235 +#include <linux/gracl.h>
88236 +#include <linux/grsecurity.h>
88237 +#include <linux/grinternal.h>
88238 +
88239 +extern const char *captab_log[];
88240 +extern int captab_log_entries;
88241 +
88242 +int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
88243 +{
88244 + struct acl_subject_label *curracl;
88245 +
88246 + if (!gr_acl_is_enabled())
88247 + return 1;
88248 +
88249 + curracl = task->acl;
88250 +
88251 + if (curracl->mode & (GR_LEARN | GR_INHERITLEARN)) {
88252 + security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
88253 + task->role->roletype, GR_GLOBAL_UID(cred->uid),
88254 + GR_GLOBAL_GID(cred->gid), task->exec_file ?
88255 + gr_to_filename(task->exec_file->f_path.dentry,
88256 + task->exec_file->f_path.mnt) : curracl->filename,
88257 + curracl->filename, 0UL,
88258 + 0UL, "", (unsigned long) cap, &task->signal->saved_ip);
88259 + return 1;
88260 + }
88261 +
88262 + return 0;
88263 +}
88264 +
88265 +int gr_task_acl_is_capable(const struct task_struct *task, const struct cred *cred, const int cap)
88266 +{
88267 + struct acl_subject_label *curracl;
88268 + kernel_cap_t cap_drop = __cap_empty_set, cap_mask = __cap_empty_set;
88269 + kernel_cap_t cap_audit = __cap_empty_set;
88270 +
88271 + if (!gr_acl_is_enabled())
88272 + return 1;
88273 +
88274 + curracl = task->acl;
88275 +
88276 + cap_drop = curracl->cap_lower;
88277 + cap_mask = curracl->cap_mask;
88278 + cap_audit = curracl->cap_invert_audit;
88279 +
88280 + while ((curracl = curracl->parent_subject)) {
88281 + /* if the cap isn't specified in the current computed mask but is specified in the
88282 + current level subject, and is lowered in the current level subject, then add
88283 + it to the set of dropped capabilities
88284 + otherwise, add the current level subject's mask to the current computed mask
88285 + */
88286 + if (!cap_raised(cap_mask, cap) && cap_raised(curracl->cap_mask, cap)) {
88287 + cap_raise(cap_mask, cap);
88288 + if (cap_raised(curracl->cap_lower, cap))
88289 + cap_raise(cap_drop, cap);
88290 + if (cap_raised(curracl->cap_invert_audit, cap))
88291 + cap_raise(cap_audit, cap);
88292 + }
88293 + }
88294 +
88295 + if (!cap_raised(cap_drop, cap)) {
88296 + if (cap_raised(cap_audit, cap))
88297 + gr_log_cap(GR_DO_AUDIT, GR_CAP_ACL_MSG2, task, captab_log[cap]);
88298 + return 1;
88299 + }
88300 +
88301 + /* only learn the capability use if the process has the capability in the
88302 + general case, the two uses in sys.c of gr_learn_cap are an exception
88303 + to this rule to ensure any role transition involves what the full-learned
88304 + policy believes in a privileged process
88305 + */
88306 + if (cap_raised(cred->cap_effective, cap) && gr_learn_cap(task, cred, cap))
88307 + return 1;
88308 +
88309 + if ((cap >= 0) && (cap < captab_log_entries) && cap_raised(cred->cap_effective, cap) && !cap_raised(cap_audit, cap))
88310 + gr_log_cap(GR_DONT_AUDIT, GR_CAP_ACL_MSG, task, captab_log[cap]);
88311 +
88312 + return 0;
88313 +}
88314 +
88315 +int
88316 +gr_acl_is_capable(const int cap)
88317 +{
88318 + return gr_task_acl_is_capable(current, current_cred(), cap);
88319 +}
88320 +
88321 +int gr_task_acl_is_capable_nolog(const struct task_struct *task, const int cap)
88322 +{
88323 + struct acl_subject_label *curracl;
88324 + kernel_cap_t cap_drop = __cap_empty_set, cap_mask = __cap_empty_set;
88325 +
88326 + if (!gr_acl_is_enabled())
88327 + return 1;
88328 +
88329 + curracl = task->acl;
88330 +
88331 + cap_drop = curracl->cap_lower;
88332 + cap_mask = curracl->cap_mask;
88333 +
88334 + while ((curracl = curracl->parent_subject)) {
88335 + /* if the cap isn't specified in the current computed mask but is specified in the
88336 + current level subject, and is lowered in the current level subject, then add
88337 + it to the set of dropped capabilities
88338 + otherwise, add the current level subject's mask to the current computed mask
88339 + */
88340 + if (!cap_raised(cap_mask, cap) && cap_raised(curracl->cap_mask, cap)) {
88341 + cap_raise(cap_mask, cap);
88342 + if (cap_raised(curracl->cap_lower, cap))
88343 + cap_raise(cap_drop, cap);
88344 + }
88345 + }
88346 +
88347 + if (!cap_raised(cap_drop, cap))
88348 + return 1;
88349 +
88350 + return 0;
88351 +}
88352 +
88353 +int
88354 +gr_acl_is_capable_nolog(const int cap)
88355 +{
88356 + return gr_task_acl_is_capable_nolog(current, cap);
88357 +}
88358 +
88359 diff --git a/grsecurity/gracl_compat.c b/grsecurity/gracl_compat.c
88360 new file mode 100644
88361 index 0000000..a43dd06
88362 --- /dev/null
88363 +++ b/grsecurity/gracl_compat.c
88364 @@ -0,0 +1,269 @@
88365 +#include <linux/kernel.h>
88366 +#include <linux/gracl.h>
88367 +#include <linux/compat.h>
88368 +#include <linux/gracl_compat.h>
88369 +
88370 +#include <asm/uaccess.h>
88371 +
88372 +int copy_gr_arg_wrapper_compat(const char *buf, struct gr_arg_wrapper *uwrap)
88373 +{
88374 + struct gr_arg_wrapper_compat uwrapcompat;
88375 +
88376 + if (copy_from_user(&uwrapcompat, buf, sizeof(uwrapcompat)))
88377 + return -EFAULT;
88378 +
88379 + if ((uwrapcompat.version != GRSECURITY_VERSION) ||
88380 + (uwrapcompat.size != sizeof(struct gr_arg_compat)))
88381 + return -EINVAL;
88382 +
88383 + uwrap->arg = compat_ptr(uwrapcompat.arg);
88384 + uwrap->version = uwrapcompat.version;
88385 + uwrap->size = sizeof(struct gr_arg);
88386 +
88387 + return 0;
88388 +}
88389 +
88390 +int copy_gr_arg_compat(const struct gr_arg __user *buf, struct gr_arg *arg)
88391 +{
88392 + struct gr_arg_compat argcompat;
88393 +
88394 + if (copy_from_user(&argcompat, buf, sizeof(argcompat)))
88395 + return -EFAULT;
88396 +
88397 + arg->role_db.r_table = compat_ptr(argcompat.role_db.r_table);
88398 + arg->role_db.num_pointers = argcompat.role_db.num_pointers;
88399 + arg->role_db.num_roles = argcompat.role_db.num_roles;
88400 + arg->role_db.num_domain_children = argcompat.role_db.num_domain_children;
88401 + arg->role_db.num_subjects = argcompat.role_db.num_subjects;
88402 + arg->role_db.num_objects = argcompat.role_db.num_objects;
88403 +
88404 + memcpy(&arg->pw, &argcompat.pw, sizeof(arg->pw));
88405 + memcpy(&arg->salt, &argcompat.salt, sizeof(arg->salt));
88406 + memcpy(&arg->sum, &argcompat.sum, sizeof(arg->sum));
88407 + memcpy(&arg->sp_role, &argcompat.sp_role, sizeof(arg->sp_role));
88408 + arg->sprole_pws = compat_ptr(argcompat.sprole_pws);
88409 + arg->segv_device = argcompat.segv_device;
88410 + arg->segv_inode = argcompat.segv_inode;
88411 + arg->segv_uid = argcompat.segv_uid;
88412 + arg->num_sprole_pws = argcompat.num_sprole_pws;
88413 + arg->mode = argcompat.mode;
88414 +
88415 + return 0;
88416 +}
88417 +
88418 +int copy_acl_object_label_compat(struct acl_object_label *obj, const struct acl_object_label *userp)
88419 +{
88420 + struct acl_object_label_compat objcompat;
88421 +
88422 + if (copy_from_user(&objcompat, userp, sizeof(objcompat)))
88423 + return -EFAULT;
88424 +
88425 + obj->filename = compat_ptr(objcompat.filename);
88426 + obj->inode = objcompat.inode;
88427 + obj->device = objcompat.device;
88428 + obj->mode = objcompat.mode;
88429 +
88430 + obj->nested = compat_ptr(objcompat.nested);
88431 + obj->globbed = compat_ptr(objcompat.globbed);
88432 +
88433 + obj->prev = compat_ptr(objcompat.prev);
88434 + obj->next = compat_ptr(objcompat.next);
88435 +
88436 + return 0;
88437 +}
88438 +
88439 +int copy_acl_subject_label_compat(struct acl_subject_label *subj, const struct acl_subject_label *userp)
88440 +{
88441 + unsigned int i;
88442 + struct acl_subject_label_compat subjcompat;
88443 +
88444 + if (copy_from_user(&subjcompat, userp, sizeof(subjcompat)))
88445 + return -EFAULT;
88446 +
88447 + subj->filename = compat_ptr(subjcompat.filename);
88448 + subj->inode = subjcompat.inode;
88449 + subj->device = subjcompat.device;
88450 + subj->mode = subjcompat.mode;
88451 + subj->cap_mask = subjcompat.cap_mask;
88452 + subj->cap_lower = subjcompat.cap_lower;
88453 + subj->cap_invert_audit = subjcompat.cap_invert_audit;
88454 +
88455 + for (i = 0; i < GR_NLIMITS; i++) {
88456 + if (subjcompat.res[i].rlim_cur == COMPAT_RLIM_INFINITY)
88457 + subj->res[i].rlim_cur = RLIM_INFINITY;
88458 + else
88459 + subj->res[i].rlim_cur = subjcompat.res[i].rlim_cur;
88460 + if (subjcompat.res[i].rlim_max == COMPAT_RLIM_INFINITY)
88461 + subj->res[i].rlim_max = RLIM_INFINITY;
88462 + else
88463 + subj->res[i].rlim_max = subjcompat.res[i].rlim_max;
88464 + }
88465 + subj->resmask = subjcompat.resmask;
88466 +
88467 + subj->user_trans_type = subjcompat.user_trans_type;
88468 + subj->group_trans_type = subjcompat.group_trans_type;
88469 + subj->user_transitions = compat_ptr(subjcompat.user_transitions);
88470 + subj->group_transitions = compat_ptr(subjcompat.group_transitions);
88471 + subj->user_trans_num = subjcompat.user_trans_num;
88472 + subj->group_trans_num = subjcompat.group_trans_num;
88473 +
88474 + memcpy(&subj->sock_families, &subjcompat.sock_families, sizeof(subj->sock_families));
88475 + memcpy(&subj->ip_proto, &subjcompat.ip_proto, sizeof(subj->ip_proto));
88476 + subj->ip_type = subjcompat.ip_type;
88477 + subj->ips = compat_ptr(subjcompat.ips);
88478 + subj->ip_num = subjcompat.ip_num;
88479 + subj->inaddr_any_override = subjcompat.inaddr_any_override;
88480 +
88481 + subj->crashes = subjcompat.crashes;
88482 + subj->expires = subjcompat.expires;
88483 +
88484 + subj->parent_subject = compat_ptr(subjcompat.parent_subject);
88485 + subj->hash = compat_ptr(subjcompat.hash);
88486 + subj->prev = compat_ptr(subjcompat.prev);
88487 + subj->next = compat_ptr(subjcompat.next);
88488 +
88489 + subj->obj_hash = compat_ptr(subjcompat.obj_hash);
88490 + subj->obj_hash_size = subjcompat.obj_hash_size;
88491 + subj->pax_flags = subjcompat.pax_flags;
88492 +
88493 + return 0;
88494 +}
88495 +
88496 +int copy_acl_role_label_compat(struct acl_role_label *role, const struct acl_role_label *userp)
88497 +{
88498 + struct acl_role_label_compat rolecompat;
88499 +
88500 + if (copy_from_user(&rolecompat, userp, sizeof(rolecompat)))
88501 + return -EFAULT;
88502 +
88503 + role->rolename = compat_ptr(rolecompat.rolename);
88504 + role->uidgid = rolecompat.uidgid;
88505 + role->roletype = rolecompat.roletype;
88506 +
88507 + role->auth_attempts = rolecompat.auth_attempts;
88508 + role->expires = rolecompat.expires;
88509 +
88510 + role->root_label = compat_ptr(rolecompat.root_label);
88511 + role->hash = compat_ptr(rolecompat.hash);
88512 +
88513 + role->prev = compat_ptr(rolecompat.prev);
88514 + role->next = compat_ptr(rolecompat.next);
88515 +
88516 + role->transitions = compat_ptr(rolecompat.transitions);
88517 + role->allowed_ips = compat_ptr(rolecompat.allowed_ips);
88518 + role->domain_children = compat_ptr(rolecompat.domain_children);
88519 + role->domain_child_num = rolecompat.domain_child_num;
88520 +
88521 + role->umask = rolecompat.umask;
88522 +
88523 + role->subj_hash = compat_ptr(rolecompat.subj_hash);
88524 + role->subj_hash_size = rolecompat.subj_hash_size;
88525 +
88526 + return 0;
88527 +}
88528 +
88529 +int copy_role_allowed_ip_compat(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp)
88530 +{
88531 + struct role_allowed_ip_compat roleip_compat;
88532 +
88533 + if (copy_from_user(&roleip_compat, userp, sizeof(roleip_compat)))
88534 + return -EFAULT;
88535 +
88536 + roleip->addr = roleip_compat.addr;
88537 + roleip->netmask = roleip_compat.netmask;
88538 +
88539 + roleip->prev = compat_ptr(roleip_compat.prev);
88540 + roleip->next = compat_ptr(roleip_compat.next);
88541 +
88542 + return 0;
88543 +}
88544 +
88545 +int copy_role_transition_compat(struct role_transition *trans, const struct role_transition *userp)
88546 +{
88547 + struct role_transition_compat trans_compat;
88548 +
88549 + if (copy_from_user(&trans_compat, userp, sizeof(trans_compat)))
88550 + return -EFAULT;
88551 +
88552 + trans->rolename = compat_ptr(trans_compat.rolename);
88553 +
88554 + trans->prev = compat_ptr(trans_compat.prev);
88555 + trans->next = compat_ptr(trans_compat.next);
88556 +
88557 + return 0;
88558 +
88559 +}
88560 +
88561 +int copy_gr_hash_struct_compat(struct gr_hash_struct *hash, const struct gr_hash_struct *userp)
88562 +{
88563 + struct gr_hash_struct_compat hash_compat;
88564 +
88565 + if (copy_from_user(&hash_compat, userp, sizeof(hash_compat)))
88566 + return -EFAULT;
88567 +
88568 + hash->table = compat_ptr(hash_compat.table);
88569 + hash->nametable = compat_ptr(hash_compat.nametable);
88570 + hash->first = compat_ptr(hash_compat.first);
88571 +
88572 + hash->table_size = hash_compat.table_size;
88573 + hash->used_size = hash_compat.used_size;
88574 +
88575 + hash->type = hash_compat.type;
88576 +
88577 + return 0;
88578 +}
88579 +
88580 +int copy_pointer_from_array_compat(void *ptr, unsigned long idx, const void *userp)
88581 +{
88582 + compat_uptr_t ptrcompat;
88583 +
88584 + if (copy_from_user(&ptrcompat, userp + (idx * sizeof(ptrcompat)), sizeof(ptrcompat)))
88585 + return -EFAULT;
88586 +
88587 + *(void **)ptr = compat_ptr(ptrcompat);
88588 +
88589 + return 0;
88590 +}
88591 +
88592 +int copy_acl_ip_label_compat(struct acl_ip_label *ip, const struct acl_ip_label *userp)
88593 +{
88594 + struct acl_ip_label_compat ip_compat;
88595 +
88596 + if (copy_from_user(&ip_compat, userp, sizeof(ip_compat)))
88597 + return -EFAULT;
88598 +
88599 + ip->iface = compat_ptr(ip_compat.iface);
88600 + ip->addr = ip_compat.addr;
88601 + ip->netmask = ip_compat.netmask;
88602 + ip->low = ip_compat.low;
88603 + ip->high = ip_compat.high;
88604 + ip->mode = ip_compat.mode;
88605 + ip->type = ip_compat.type;
88606 +
88607 + memcpy(&ip->proto, &ip_compat.proto, sizeof(ip->proto));
88608 +
88609 + ip->prev = compat_ptr(ip_compat.prev);
88610 + ip->next = compat_ptr(ip_compat.next);
88611 +
88612 + return 0;
88613 +}
88614 +
88615 +int copy_sprole_pw_compat(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp)
88616 +{
88617 + struct sprole_pw_compat pw_compat;
88618 +
88619 + if (copy_from_user(&pw_compat, (const void *)userp + (sizeof(pw_compat) * idx), sizeof(pw_compat)))
88620 + return -EFAULT;
88621 +
88622 + pw->rolename = compat_ptr(pw_compat.rolename);
88623 + memcpy(&pw->salt, pw_compat.salt, sizeof(pw->salt));
88624 + memcpy(&pw->sum, pw_compat.sum, sizeof(pw->sum));
88625 +
88626 + return 0;
88627 +}
88628 +
88629 +size_t get_gr_arg_wrapper_size_compat(void)
88630 +{
88631 + return sizeof(struct gr_arg_wrapper_compat);
88632 +}
88633 +
88634 diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c
88635 new file mode 100644
88636 index 0000000..fce7f71
88637 --- /dev/null
88638 +++ b/grsecurity/gracl_fs.c
88639 @@ -0,0 +1,448 @@
88640 +#include <linux/kernel.h>
88641 +#include <linux/sched.h>
88642 +#include <linux/types.h>
88643 +#include <linux/fs.h>
88644 +#include <linux/file.h>
88645 +#include <linux/stat.h>
88646 +#include <linux/grsecurity.h>
88647 +#include <linux/grinternal.h>
88648 +#include <linux/gracl.h>
88649 +
88650 +umode_t
88651 +gr_acl_umask(void)
88652 +{
88653 + if (unlikely(!gr_acl_is_enabled()))
88654 + return 0;
88655 +
88656 + return current->role->umask;
88657 +}
88658 +
88659 +__u32
88660 +gr_acl_handle_hidden_file(const struct dentry * dentry,
88661 + const struct vfsmount * mnt)
88662 +{
88663 + __u32 mode;
88664 +
88665 + if (unlikely(d_is_negative(dentry)))
88666 + return GR_FIND;
88667 +
88668 + mode =
88669 + gr_search_file(dentry, GR_FIND | GR_AUDIT_FIND | GR_SUPPRESS, mnt);
88670 +
88671 + if (unlikely(mode & GR_FIND && mode & GR_AUDIT_FIND)) {
88672 + gr_log_fs_rbac_generic(GR_DO_AUDIT, GR_HIDDEN_ACL_MSG, dentry, mnt);
88673 + return mode;
88674 + } else if (unlikely(!(mode & GR_FIND) && !(mode & GR_SUPPRESS))) {
88675 + gr_log_fs_rbac_generic(GR_DONT_AUDIT, GR_HIDDEN_ACL_MSG, dentry, mnt);
88676 + return 0;
88677 + } else if (unlikely(!(mode & GR_FIND)))
88678 + return 0;
88679 +
88680 + return GR_FIND;
88681 +}
88682 +
88683 +__u32
88684 +gr_acl_handle_open(const struct dentry * dentry, const struct vfsmount * mnt,
88685 + int acc_mode)
88686 +{
88687 + __u32 reqmode = GR_FIND;
88688 + __u32 mode;
88689 +
88690 + if (unlikely(d_is_negative(dentry)))
88691 + return reqmode;
88692 +
88693 + if (acc_mode & MAY_APPEND)
88694 + reqmode |= GR_APPEND;
88695 + else if (acc_mode & MAY_WRITE)
88696 + reqmode |= GR_WRITE;
88697 + if ((acc_mode & MAY_READ) && !d_is_dir(dentry))
88698 + reqmode |= GR_READ;
88699 +
88700 + mode =
88701 + gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS,
88702 + mnt);
88703 +
88704 + if (unlikely(((mode & reqmode) == reqmode) && mode & GR_AUDITS)) {
88705 + gr_log_fs_rbac_mode2(GR_DO_AUDIT, GR_OPEN_ACL_MSG, dentry, mnt,
88706 + reqmode & GR_READ ? " reading" : "",
88707 + reqmode & GR_WRITE ? " writing" : reqmode &
88708 + GR_APPEND ? " appending" : "");
88709 + return reqmode;
88710 + } else
88711 + if (unlikely((mode & reqmode) != reqmode && !(mode & GR_SUPPRESS)))
88712 + {
88713 + gr_log_fs_rbac_mode2(GR_DONT_AUDIT, GR_OPEN_ACL_MSG, dentry, mnt,
88714 + reqmode & GR_READ ? " reading" : "",
88715 + reqmode & GR_WRITE ? " writing" : reqmode &
88716 + GR_APPEND ? " appending" : "");
88717 + return 0;
88718 + } else if (unlikely((mode & reqmode) != reqmode))
88719 + return 0;
88720 +
88721 + return reqmode;
88722 +}
88723 +
88724 +__u32
88725 +gr_acl_handle_creat(const struct dentry * dentry,
88726 + const struct dentry * p_dentry,
88727 + const struct vfsmount * p_mnt, int open_flags, int acc_mode,
88728 + const int imode)
88729 +{
88730 + __u32 reqmode = GR_WRITE | GR_CREATE;
88731 + __u32 mode;
88732 +
88733 + if (acc_mode & MAY_APPEND)
88734 + reqmode |= GR_APPEND;
88735 + // if a directory was required or the directory already exists, then
88736 + // don't count this open as a read
88737 + if ((acc_mode & MAY_READ) &&
88738 + !((open_flags & O_DIRECTORY) || d_is_dir(dentry)))
88739 + reqmode |= GR_READ;
88740 + if ((open_flags & O_CREAT) &&
88741 + ((imode & S_ISUID) || ((imode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))))
88742 + reqmode |= GR_SETID;
88743 +
88744 + mode =
88745 + gr_check_create(dentry, p_dentry, p_mnt,
88746 + reqmode | to_gr_audit(reqmode) | GR_SUPPRESS);
88747 +
88748 + if (unlikely(((mode & reqmode) == reqmode) && mode & GR_AUDITS)) {
88749 + gr_log_fs_rbac_mode2(GR_DO_AUDIT, GR_CREATE_ACL_MSG, dentry, p_mnt,
88750 + reqmode & GR_READ ? " reading" : "",
88751 + reqmode & GR_WRITE ? " writing" : reqmode &
88752 + GR_APPEND ? " appending" : "");
88753 + return reqmode;
88754 + } else
88755 + if (unlikely((mode & reqmode) != reqmode && !(mode & GR_SUPPRESS)))
88756 + {
88757 + gr_log_fs_rbac_mode2(GR_DONT_AUDIT, GR_CREATE_ACL_MSG, dentry, p_mnt,
88758 + reqmode & GR_READ ? " reading" : "",
88759 + reqmode & GR_WRITE ? " writing" : reqmode &
88760 + GR_APPEND ? " appending" : "");
88761 + return 0;
88762 + } else if (unlikely((mode & reqmode) != reqmode))
88763 + return 0;
88764 +
88765 + return reqmode;
88766 +}
88767 +
88768 +__u32
88769 +gr_acl_handle_access(const struct dentry * dentry, const struct vfsmount * mnt,
88770 + const int fmode)
88771 +{
88772 + __u32 mode, reqmode = GR_FIND;
88773 +
88774 + if ((fmode & S_IXOTH) && !d_is_dir(dentry))
88775 + reqmode |= GR_EXEC;
88776 + if (fmode & S_IWOTH)
88777 + reqmode |= GR_WRITE;
88778 + if (fmode & S_IROTH)
88779 + reqmode |= GR_READ;
88780 +
88781 + mode =
88782 + gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS,
88783 + mnt);
88784 +
88785 + if (unlikely(((mode & reqmode) == reqmode) && mode & GR_AUDITS)) {
88786 + gr_log_fs_rbac_mode3(GR_DO_AUDIT, GR_ACCESS_ACL_MSG, dentry, mnt,
88787 + reqmode & GR_READ ? " reading" : "",
88788 + reqmode & GR_WRITE ? " writing" : "",
88789 + reqmode & GR_EXEC ? " executing" : "");
88790 + return reqmode;
88791 + } else
88792 + if (unlikely((mode & reqmode) != reqmode && !(mode & GR_SUPPRESS)))
88793 + {
88794 + gr_log_fs_rbac_mode3(GR_DONT_AUDIT, GR_ACCESS_ACL_MSG, dentry, mnt,
88795 + reqmode & GR_READ ? " reading" : "",
88796 + reqmode & GR_WRITE ? " writing" : "",
88797 + reqmode & GR_EXEC ? " executing" : "");
88798 + return 0;
88799 + } else if (unlikely((mode & reqmode) != reqmode))
88800 + return 0;
88801 +
88802 + return reqmode;
88803 +}
88804 +
88805 +static __u32 generic_fs_handler(const struct dentry *dentry, const struct vfsmount *mnt, __u32 reqmode, const char *fmt)
88806 +{
88807 + __u32 mode;
88808 +
88809 + mode = gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS, mnt);
88810 +
88811 + if (unlikely(((mode & (reqmode)) == (reqmode)) && mode & GR_AUDITS)) {
88812 + gr_log_fs_rbac_generic(GR_DO_AUDIT, fmt, dentry, mnt);
88813 + return mode;
88814 + } else if (unlikely((mode & (reqmode)) != (reqmode) && !(mode & GR_SUPPRESS))) {
88815 + gr_log_fs_rbac_generic(GR_DONT_AUDIT, fmt, dentry, mnt);
88816 + return 0;
88817 + } else if (unlikely((mode & (reqmode)) != (reqmode)))
88818 + return 0;
88819 +
88820 + return (reqmode);
88821 +}
88822 +
88823 +__u32
88824 +gr_acl_handle_rmdir(const struct dentry * dentry, const struct vfsmount * mnt)
88825 +{
88826 + return generic_fs_handler(dentry, mnt, GR_WRITE | GR_DELETE , GR_RMDIR_ACL_MSG);
88827 +}
88828 +
88829 +__u32
88830 +gr_acl_handle_unlink(const struct dentry *dentry, const struct vfsmount *mnt)
88831 +{
88832 + return generic_fs_handler(dentry, mnt, GR_WRITE | GR_DELETE , GR_UNLINK_ACL_MSG);
88833 +}
88834 +
88835 +__u32
88836 +gr_acl_handle_truncate(const struct dentry *dentry, const struct vfsmount *mnt)
88837 +{
88838 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_TRUNCATE_ACL_MSG);
88839 +}
88840 +
88841 +__u32
88842 +gr_acl_handle_utime(const struct dentry *dentry, const struct vfsmount *mnt)
88843 +{
88844 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_ATIME_ACL_MSG);
88845 +}
88846 +
88847 +__u32
88848 +gr_acl_handle_chmod(const struct dentry *dentry, const struct vfsmount *mnt,
88849 + umode_t *modeptr)
88850 +{
88851 + umode_t mode;
88852 + struct inode *inode = d_backing_inode(dentry);
88853 +
88854 + *modeptr &= ~gr_acl_umask();
88855 + mode = *modeptr;
88856 +
88857 + if (unlikely(inode && S_ISSOCK(inode->i_mode)))
88858 + return 1;
88859 +
88860 + if (unlikely(!d_is_dir(dentry) &&
88861 + ((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))))) {
88862 + return generic_fs_handler(dentry, mnt, GR_WRITE | GR_SETID,
88863 + GR_CHMOD_ACL_MSG);
88864 + } else {
88865 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_CHMOD_ACL_MSG);
88866 + }
88867 +}
88868 +
88869 +__u32
88870 +gr_acl_handle_chown(const struct dentry *dentry, const struct vfsmount *mnt)
88871 +{
88872 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_CHOWN_ACL_MSG);
88873 +}
88874 +
88875 +__u32
88876 +gr_acl_handle_setxattr(const struct dentry *dentry, const struct vfsmount *mnt)
88877 +{
88878 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_SETXATTR_ACL_MSG);
88879 +}
88880 +
88881 +__u32
88882 +gr_acl_handle_removexattr(const struct dentry *dentry, const struct vfsmount *mnt)
88883 +{
88884 + return generic_fs_handler(dentry, mnt, GR_WRITE, GR_REMOVEXATTR_ACL_MSG);
88885 +}
88886 +
88887 +__u32
88888 +gr_acl_handle_execve(const struct dentry *dentry, const struct vfsmount *mnt)
88889 +{
88890 + return generic_fs_handler(dentry, mnt, GR_EXEC, GR_EXEC_ACL_MSG);
88891 +}
88892 +
88893 +__u32
88894 +gr_acl_handle_unix(const struct dentry *dentry, const struct vfsmount *mnt)
88895 +{
88896 + return generic_fs_handler(dentry, mnt, GR_READ | GR_WRITE,
88897 + GR_UNIXCONNECT_ACL_MSG);
88898 +}
88899 +
88900 +/* hardlinks require at minimum create and link permission,
88901 + any additional privilege required is based on the
88902 + privilege of the file being linked to
88903 +*/
88904 +__u32
88905 +gr_acl_handle_link(const struct dentry * new_dentry,
88906 + const struct dentry * parent_dentry,
88907 + const struct vfsmount * parent_mnt,
88908 + const struct dentry * old_dentry,
88909 + const struct vfsmount * old_mnt, const struct filename *to)
88910 +{
88911 + __u32 mode;
88912 + __u32 needmode = GR_CREATE | GR_LINK;
88913 + __u32 needaudit = GR_AUDIT_CREATE | GR_AUDIT_LINK;
88914 +
88915 + mode =
88916 + gr_check_link(new_dentry, parent_dentry, parent_mnt, old_dentry,
88917 + old_mnt);
88918 +
88919 + if (unlikely(((mode & needmode) == needmode) && (mode & needaudit))) {
88920 + gr_log_fs_rbac_str(GR_DO_AUDIT, GR_LINK_ACL_MSG, old_dentry, old_mnt, to->name);
88921 + return mode;
88922 + } else if (unlikely(((mode & needmode) != needmode) && !(mode & GR_SUPPRESS))) {
88923 + gr_log_fs_rbac_str(GR_DONT_AUDIT, GR_LINK_ACL_MSG, old_dentry, old_mnt, to->name);
88924 + return 0;
88925 + } else if (unlikely((mode & needmode) != needmode))
88926 + return 0;
88927 +
88928 + return 1;
88929 +}
88930 +
88931 +__u32
88932 +gr_acl_handle_symlink(const struct dentry * new_dentry,
88933 + const struct dentry * parent_dentry,
88934 + const struct vfsmount * parent_mnt, const struct filename *from)
88935 +{
88936 + __u32 needmode = GR_WRITE | GR_CREATE;
88937 + __u32 mode;
88938 +
88939 + mode =
88940 + gr_check_create(new_dentry, parent_dentry, parent_mnt,
88941 + GR_CREATE | GR_AUDIT_CREATE |
88942 + GR_WRITE | GR_AUDIT_WRITE | GR_SUPPRESS);
88943 +
88944 + if (unlikely(mode & GR_WRITE && mode & GR_AUDITS)) {
88945 + gr_log_fs_str_rbac(GR_DO_AUDIT, GR_SYMLINK_ACL_MSG, from->name, new_dentry, parent_mnt);
88946 + return mode;
88947 + } else if (unlikely(((mode & needmode) != needmode) && !(mode & GR_SUPPRESS))) {
88948 + gr_log_fs_str_rbac(GR_DONT_AUDIT, GR_SYMLINK_ACL_MSG, from->name, new_dentry, parent_mnt);
88949 + return 0;
88950 + } else if (unlikely((mode & needmode) != needmode))
88951 + return 0;
88952 +
88953 + return (GR_WRITE | GR_CREATE);
88954 +}
88955 +
88956 +static __u32 generic_fs_create_handler(const struct dentry *new_dentry, const struct dentry *parent_dentry, const struct vfsmount *parent_mnt, __u32 reqmode, const char *fmt)
88957 +{
88958 + __u32 mode;
88959 +
88960 + mode = gr_check_create(new_dentry, parent_dentry, parent_mnt, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS);
88961 +
88962 + if (unlikely(((mode & (reqmode)) == (reqmode)) && mode & GR_AUDITS)) {
88963 + gr_log_fs_rbac_generic(GR_DO_AUDIT, fmt, new_dentry, parent_mnt);
88964 + return mode;
88965 + } else if (unlikely((mode & (reqmode)) != (reqmode) && !(mode & GR_SUPPRESS))) {
88966 + gr_log_fs_rbac_generic(GR_DONT_AUDIT, fmt, new_dentry, parent_mnt);
88967 + return 0;
88968 + } else if (unlikely((mode & (reqmode)) != (reqmode)))
88969 + return 0;
88970 +
88971 + return (reqmode);
88972 +}
88973 +
88974 +__u32
88975 +gr_acl_handle_mknod(const struct dentry * new_dentry,
88976 + const struct dentry * parent_dentry,
88977 + const struct vfsmount * parent_mnt,
88978 + const int mode)
88979 +{
88980 + __u32 reqmode = GR_WRITE | GR_CREATE;
88981 + if (unlikely((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))))
88982 + reqmode |= GR_SETID;
88983 +
88984 + return generic_fs_create_handler(new_dentry, parent_dentry, parent_mnt,
88985 + reqmode, GR_MKNOD_ACL_MSG);
88986 +}
88987 +
88988 +__u32
88989 +gr_acl_handle_mkdir(const struct dentry *new_dentry,
88990 + const struct dentry *parent_dentry,
88991 + const struct vfsmount *parent_mnt)
88992 +{
88993 + return generic_fs_create_handler(new_dentry, parent_dentry, parent_mnt,
88994 + GR_WRITE | GR_CREATE, GR_MKDIR_ACL_MSG);
88995 +}
88996 +
88997 +#define RENAME_CHECK_SUCCESS(old, new) \
88998 + (((old & (GR_WRITE | GR_READ)) == (GR_WRITE | GR_READ)) && \
88999 + ((new & (GR_WRITE | GR_READ)) == (GR_WRITE | GR_READ)))
89000 +
89001 +int
89002 +gr_acl_handle_rename(struct dentry *new_dentry,
89003 + struct dentry *parent_dentry,
89004 + const struct vfsmount *parent_mnt,
89005 + struct dentry *old_dentry,
89006 + struct inode *old_parent_inode,
89007 + struct vfsmount *old_mnt, const struct filename *newname, unsigned int flags)
89008 +{
89009 + __u32 comp1, comp2;
89010 + int error = 0;
89011 +
89012 + if (unlikely(!gr_acl_is_enabled()))
89013 + return 0;
89014 +
89015 + if (flags & RENAME_EXCHANGE) {
89016 + comp1 = gr_search_file(new_dentry, GR_READ | GR_WRITE |
89017 + GR_AUDIT_READ | GR_AUDIT_WRITE |
89018 + GR_SUPPRESS, parent_mnt);
89019 + comp2 =
89020 + gr_search_file(old_dentry,
89021 + GR_READ | GR_WRITE | GR_AUDIT_READ |
89022 + GR_AUDIT_WRITE | GR_SUPPRESS, old_mnt);
89023 + } else if (d_is_negative(new_dentry)) {
89024 + comp1 = gr_check_create(new_dentry, parent_dentry, parent_mnt,
89025 + GR_READ | GR_WRITE | GR_CREATE | GR_AUDIT_READ |
89026 + GR_AUDIT_WRITE | GR_AUDIT_CREATE | GR_SUPPRESS);
89027 + comp2 = gr_search_file(old_dentry, GR_READ | GR_WRITE |
89028 + GR_DELETE | GR_AUDIT_DELETE |
89029 + GR_AUDIT_READ | GR_AUDIT_WRITE |
89030 + GR_SUPPRESS, old_mnt);
89031 + } else {
89032 + comp1 = gr_search_file(new_dentry, GR_READ | GR_WRITE |
89033 + GR_CREATE | GR_DELETE |
89034 + GR_AUDIT_CREATE | GR_AUDIT_DELETE |
89035 + GR_AUDIT_READ | GR_AUDIT_WRITE |
89036 + GR_SUPPRESS, parent_mnt);
89037 + comp2 =
89038 + gr_search_file(old_dentry,
89039 + GR_READ | GR_WRITE | GR_AUDIT_READ |
89040 + GR_DELETE | GR_AUDIT_DELETE |
89041 + GR_AUDIT_WRITE | GR_SUPPRESS, old_mnt);
89042 + }
89043 +
89044 + if (RENAME_CHECK_SUCCESS(comp1, comp2) &&
89045 + ((comp1 & GR_AUDITS) || (comp2 & GR_AUDITS)))
89046 + gr_log_fs_rbac_str(GR_DO_AUDIT, GR_RENAME_ACL_MSG, old_dentry, old_mnt, newname->name);
89047 + else if (!RENAME_CHECK_SUCCESS(comp1, comp2) && !(comp1 & GR_SUPPRESS)
89048 + && !(comp2 & GR_SUPPRESS)) {
89049 + gr_log_fs_rbac_str(GR_DONT_AUDIT, GR_RENAME_ACL_MSG, old_dentry, old_mnt, newname->name);
89050 + error = -EACCES;
89051 + } else if (unlikely(!RENAME_CHECK_SUCCESS(comp1, comp2)))
89052 + error = -EACCES;
89053 +
89054 + return error;
89055 +}
89056 +
89057 +void
89058 +gr_acl_handle_exit(void)
89059 +{
89060 + u16 id;
89061 + char *rolename;
89062 +
89063 + if (unlikely(current->acl_sp_role && gr_acl_is_enabled() &&
89064 + !(current->role->roletype & GR_ROLE_PERSIST))) {
89065 + id = current->acl_role_id;
89066 + rolename = current->role->rolename;
89067 + gr_set_acls(1);
89068 + gr_log_str_int(GR_DONT_AUDIT_GOOD, GR_SPROLEL_ACL_MSG, rolename, id);
89069 + }
89070 +
89071 + gr_put_exec_file(current);
89072 + return;
89073 +}
89074 +
89075 +int
89076 +gr_acl_handle_procpidmem(const struct task_struct *task)
89077 +{
89078 + if (unlikely(!gr_acl_is_enabled()))
89079 + return 0;
89080 +
89081 + if (task != current && (task->acl->mode & GR_PROTPROCFD) &&
89082 + !(current->acl->mode & GR_POVERRIDE) &&
89083 + !(current->role->roletype & GR_ROLE_GOD))
89084 + return -EACCES;
89085 +
89086 + return 0;
89087 +}
89088 diff --git a/grsecurity/gracl_ip.c b/grsecurity/gracl_ip.c
89089 new file mode 100644
89090 index 0000000..ed6ee43
89091 --- /dev/null
89092 +++ b/grsecurity/gracl_ip.c
89093 @@ -0,0 +1,386 @@
89094 +#include <linux/kernel.h>
89095 +#include <asm/uaccess.h>
89096 +#include <asm/errno.h>
89097 +#include <net/sock.h>
89098 +#include <linux/file.h>
89099 +#include <linux/fs.h>
89100 +#include <linux/net.h>
89101 +#include <linux/in.h>
89102 +#include <linux/skbuff.h>
89103 +#include <linux/ip.h>
89104 +#include <linux/udp.h>
89105 +#include <linux/types.h>
89106 +#include <linux/sched.h>
89107 +#include <linux/netdevice.h>
89108 +#include <linux/inetdevice.h>
89109 +#include <linux/gracl.h>
89110 +#include <linux/grsecurity.h>
89111 +#include <linux/grinternal.h>
89112 +
89113 +#define GR_BIND 0x01
89114 +#define GR_CONNECT 0x02
89115 +#define GR_INVERT 0x04
89116 +#define GR_BINDOVERRIDE 0x08
89117 +#define GR_CONNECTOVERRIDE 0x10
89118 +#define GR_SOCK_FAMILY 0x20
89119 +
89120 +static const char * gr_protocols[IPPROTO_MAX] = {
89121 + "ip", "icmp", "igmp", "ggp", "ipencap", "st", "tcp", "cbt",
89122 + "egp", "igp", "bbn-rcc", "nvp", "pup", "argus", "emcon", "xnet",
89123 + "chaos", "udp", "mux", "dcn", "hmp", "prm", "xns-idp", "trunk-1",
89124 + "trunk-2", "leaf-1", "leaf-2", "rdp", "irtp", "iso-tp4", "netblt", "mfe-nsp",
89125 + "merit-inp", "sep", "3pc", "idpr", "xtp", "ddp", "idpr-cmtp", "tp++",
89126 + "il", "ipv6", "sdrp", "ipv6-route", "ipv6-frag", "idrp", "rsvp", "gre",
89127 + "mhrp", "bna", "ipv6-crypt", "ipv6-auth", "i-nlsp", "swipe", "narp", "mobile",
89128 + "tlsp", "skip", "ipv6-icmp", "ipv6-nonxt", "ipv6-opts", "unknown:61", "cftp", "unknown:63",
89129 + "sat-expak", "kryptolan", "rvd", "ippc", "unknown:68", "sat-mon", "visa", "ipcv",
89130 + "cpnx", "cphb", "wsn", "pvp", "br-sat-mon", "sun-nd", "wb-mon", "wb-expak",
89131 + "iso-ip", "vmtp", "secure-vmtp", "vines", "ttp", "nfsnet-igp", "dgp", "tcf",
89132 + "eigrp", "ospf", "sprite-rpc", "larp", "mtp", "ax.25", "ipip", "micp",
89133 + "scc-sp", "etherip", "encap", "unknown:99", "gmtp", "ifmp", "pnni", "pim",
89134 + "aris", "scps", "qnx", "a/n", "ipcomp", "snp", "compaq-peer", "ipx-in-ip",
89135 + "vrrp", "pgm", "unknown:114", "l2tp", "ddx", "iatp", "stp", "srp",
89136 + "uti", "smp", "sm", "ptp", "isis", "fire", "crtp", "crdup",
89137 + "sscopmce", "iplt", "sps", "pipe", "sctp", "fc", "unkown:134", "unknown:135",
89138 + "unknown:136", "unknown:137", "unknown:138", "unknown:139", "unknown:140", "unknown:141", "unknown:142", "unknown:143",
89139 + "unknown:144", "unknown:145", "unknown:146", "unknown:147", "unknown:148", "unknown:149", "unknown:150", "unknown:151",
89140 + "unknown:152", "unknown:153", "unknown:154", "unknown:155", "unknown:156", "unknown:157", "unknown:158", "unknown:159",
89141 + "unknown:160", "unknown:161", "unknown:162", "unknown:163", "unknown:164", "unknown:165", "unknown:166", "unknown:167",
89142 + "unknown:168", "unknown:169", "unknown:170", "unknown:171", "unknown:172", "unknown:173", "unknown:174", "unknown:175",
89143 + "unknown:176", "unknown:177", "unknown:178", "unknown:179", "unknown:180", "unknown:181", "unknown:182", "unknown:183",
89144 + "unknown:184", "unknown:185", "unknown:186", "unknown:187", "unknown:188", "unknown:189", "unknown:190", "unknown:191",
89145 + "unknown:192", "unknown:193", "unknown:194", "unknown:195", "unknown:196", "unknown:197", "unknown:198", "unknown:199",
89146 + "unknown:200", "unknown:201", "unknown:202", "unknown:203", "unknown:204", "unknown:205", "unknown:206", "unknown:207",
89147 + "unknown:208", "unknown:209", "unknown:210", "unknown:211", "unknown:212", "unknown:213", "unknown:214", "unknown:215",
89148 + "unknown:216", "unknown:217", "unknown:218", "unknown:219", "unknown:220", "unknown:221", "unknown:222", "unknown:223",
89149 + "unknown:224", "unknown:225", "unknown:226", "unknown:227", "unknown:228", "unknown:229", "unknown:230", "unknown:231",
89150 + "unknown:232", "unknown:233", "unknown:234", "unknown:235", "unknown:236", "unknown:237", "unknown:238", "unknown:239",
89151 + "unknown:240", "unknown:241", "unknown:242", "unknown:243", "unknown:244", "unknown:245", "unknown:246", "unknown:247",
89152 + "unknown:248", "unknown:249", "unknown:250", "unknown:251", "unknown:252", "unknown:253", "unknown:254", "unknown:255",
89153 + };
89154 +
89155 +static const char * gr_socktypes[SOCK_MAX] = {
89156 + "unknown:0", "stream", "dgram", "raw", "rdm", "seqpacket", "unknown:6",
89157 + "unknown:7", "unknown:8", "unknown:9", "packet"
89158 + };
89159 +
89160 +static const char * gr_sockfamilies[AF_MAX+1] = {
89161 + "unspec", "unix", "inet", "ax25", "ipx", "appletalk", "netrom", "bridge", "atmpvc", "x25",
89162 + "inet6", "rose", "decnet", "netbeui", "security", "key", "netlink", "packet", "ash",
89163 + "econet", "atmsvc", "rds", "sna", "irda", "ppox", "wanpipe", "llc", "fam_27", "fam_28",
89164 + "tipc", "bluetooth", "iucv", "rxrpc", "isdn", "phonet", "ieee802154", "ciaf", "alg", "nfc", "vsock"
89165 + };
89166 +
89167 +const char *
89168 +gr_proto_to_name(unsigned char proto)
89169 +{
89170 + return gr_protocols[proto];
89171 +}
89172 +
89173 +const char *
89174 +gr_socktype_to_name(unsigned char type)
89175 +{
89176 + return gr_socktypes[type];
89177 +}
89178 +
89179 +const char *
89180 +gr_sockfamily_to_name(unsigned char family)
89181 +{
89182 + return gr_sockfamilies[family];
89183 +}
89184 +
89185 +extern const struct net_proto_family __rcu *net_families[NPROTO] __read_mostly;
89186 +
89187 +int
89188 +gr_search_socket(const int domain, const int type, const int protocol)
89189 +{
89190 + struct acl_subject_label *curr;
89191 + const struct cred *cred = current_cred();
89192 +
89193 + if (unlikely(!gr_acl_is_enabled()))
89194 + goto exit;
89195 +
89196 + if ((domain < 0) || (type < 0) || (protocol < 0) ||
89197 + (domain >= AF_MAX) || (type >= SOCK_MAX) || (protocol >= IPPROTO_MAX))
89198 + goto exit; // let the kernel handle it
89199 +
89200 + curr = current->acl;
89201 +
89202 + if (curr->sock_families[domain / 32] & (1U << (domain % 32))) {
89203 + /* the family is allowed, if this is PF_INET allow it only if
89204 + the extra sock type/protocol checks pass */
89205 + if (domain == PF_INET)
89206 + goto inet_check;
89207 + goto exit;
89208 + } else {
89209 + if (curr->mode & (GR_LEARN | GR_INHERITLEARN)) {
89210 + __u32 fakeip = 0;
89211 + security_learn(GR_IP_LEARN_MSG, current->role->rolename,
89212 + current->role->roletype, GR_GLOBAL_UID(cred->uid),
89213 + GR_GLOBAL_GID(cred->gid), current->exec_file ?
89214 + gr_to_filename(current->exec_file->f_path.dentry,
89215 + current->exec_file->f_path.mnt) :
89216 + curr->filename, curr->filename,
89217 + &fakeip, domain, 0, 0, GR_SOCK_FAMILY,
89218 + &current->signal->saved_ip);
89219 + goto exit;
89220 + }
89221 + goto exit_fail;
89222 + }
89223 +
89224 +inet_check:
89225 + /* the rest of this checking is for IPv4 only */
89226 + if (!curr->ips)
89227 + goto exit;
89228 +
89229 + if ((curr->ip_type & (1U << type)) &&
89230 + (curr->ip_proto[protocol / 32] & (1U << (protocol % 32))))
89231 + goto exit;
89232 +
89233 + if (curr->mode & (GR_LEARN | GR_INHERITLEARN)) {
89234 + /* we don't place acls on raw sockets , and sometimes
89235 + dgram/ip sockets are opened for ioctl and not
89236 + bind/connect, so we'll fake a bind learn log */
89237 + if (type == SOCK_RAW || type == SOCK_PACKET) {
89238 + __u32 fakeip = 0;
89239 + security_learn(GR_IP_LEARN_MSG, current->role->rolename,
89240 + current->role->roletype, GR_GLOBAL_UID(cred->uid),
89241 + GR_GLOBAL_GID(cred->gid), current->exec_file ?
89242 + gr_to_filename(current->exec_file->f_path.dentry,
89243 + current->exec_file->f_path.mnt) :
89244 + curr->filename, curr->filename,
89245 + &fakeip, 0, type,
89246 + protocol, GR_CONNECT, &current->signal->saved_ip);
89247 + } else if ((type == SOCK_DGRAM) && (protocol == IPPROTO_IP)) {
89248 + __u32 fakeip = 0;
89249 + security_learn(GR_IP_LEARN_MSG, current->role->rolename,
89250 + current->role->roletype, GR_GLOBAL_UID(cred->uid),
89251 + GR_GLOBAL_GID(cred->gid), current->exec_file ?
89252 + gr_to_filename(current->exec_file->f_path.dentry,
89253 + current->exec_file->f_path.mnt) :
89254 + curr->filename, curr->filename,
89255 + &fakeip, 0, type,
89256 + protocol, GR_BIND, &current->signal->saved_ip);
89257 + }
89258 + /* we'll log when they use connect or bind */
89259 + goto exit;
89260 + }
89261 +
89262 +exit_fail:
89263 + if (domain == PF_INET)
89264 + gr_log_str3(GR_DONT_AUDIT, GR_SOCK_MSG, gr_sockfamily_to_name(domain),
89265 + gr_socktype_to_name(type), gr_proto_to_name(protocol));
89266 + else if (rcu_access_pointer(net_families[domain]) != NULL)
89267 + gr_log_str2_int(GR_DONT_AUDIT, GR_SOCK_NOINET_MSG, gr_sockfamily_to_name(domain),
89268 + gr_socktype_to_name(type), protocol);
89269 +
89270 + return 0;
89271 +exit:
89272 + return 1;
89273 +}
89274 +
89275 +int check_ip_policy(struct acl_ip_label *ip, __u32 ip_addr, __u16 ip_port, __u8 protocol, const int mode, const int type, __u32 our_addr, __u32 our_netmask)
89276 +{
89277 + if ((ip->mode & mode) &&
89278 + (ip_port >= ip->low) &&
89279 + (ip_port <= ip->high) &&
89280 + ((ntohl(ip_addr) & our_netmask) ==
89281 + (ntohl(our_addr) & our_netmask))
89282 + && (ip->proto[protocol / 32] & (1U << (protocol % 32)))
89283 + && (ip->type & (1U << type))) {
89284 + if (ip->mode & GR_INVERT)
89285 + return 2; // specifically denied
89286 + else
89287 + return 1; // allowed
89288 + }
89289 +
89290 + return 0; // not specifically allowed, may continue parsing
89291 +}
89292 +
89293 +static int
89294 +gr_search_connectbind(const int full_mode, struct sock *sk,
89295 + struct sockaddr_in *addr, const int type)
89296 +{
89297 + char iface[IFNAMSIZ] = {0};
89298 + struct acl_subject_label *curr;
89299 + struct acl_ip_label *ip;
89300 + struct inet_sock *isk;
89301 + struct net_device *dev;
89302 + struct in_device *idev;
89303 + unsigned long i;
89304 + int ret;
89305 + int mode = full_mode & (GR_BIND | GR_CONNECT);
89306 + __u32 ip_addr = 0;
89307 + __u32 our_addr;
89308 + __u32 our_netmask;
89309 + char *p;
89310 + __u16 ip_port = 0;
89311 + const struct cred *cred = current_cred();
89312 +
89313 + if (unlikely(!gr_acl_is_enabled() || sk->sk_family != PF_INET))
89314 + return 0;
89315 +
89316 + curr = current->acl;
89317 + isk = inet_sk(sk);
89318 +
89319 + /* INADDR_ANY overriding for binds, inaddr_any_override is already in network order */
89320 + if ((full_mode & GR_BINDOVERRIDE) && addr->sin_addr.s_addr == htonl(INADDR_ANY) && curr->inaddr_any_override != 0)
89321 + addr->sin_addr.s_addr = curr->inaddr_any_override;
89322 + if ((full_mode & GR_CONNECT) && isk->inet_saddr == htonl(INADDR_ANY) && curr->inaddr_any_override != 0) {
89323 + struct sockaddr_in saddr;
89324 + int err;
89325 +
89326 + saddr.sin_family = AF_INET;
89327 + saddr.sin_addr.s_addr = curr->inaddr_any_override;
89328 + saddr.sin_port = isk->inet_sport;
89329 +
89330 + err = security_socket_bind(sk->sk_socket, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in));
89331 + if (err)
89332 + return err;
89333 +
89334 + err = sk->sk_socket->ops->bind(sk->sk_socket, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in));
89335 + if (err)
89336 + return err;
89337 + }
89338 +
89339 + if (!curr->ips)
89340 + return 0;
89341 +
89342 + ip_addr = addr->sin_addr.s_addr;
89343 + ip_port = ntohs(addr->sin_port);
89344 +
89345 + if (curr->mode & (GR_LEARN | GR_INHERITLEARN)) {
89346 + security_learn(GR_IP_LEARN_MSG, current->role->rolename,
89347 + current->role->roletype, GR_GLOBAL_UID(cred->uid),
89348 + GR_GLOBAL_GID(cred->gid), current->exec_file ?
89349 + gr_to_filename(current->exec_file->f_path.dentry,
89350 + current->exec_file->f_path.mnt) :
89351 + curr->filename, curr->filename,
89352 + &ip_addr, ip_port, type,
89353 + sk->sk_protocol, mode, &current->signal->saved_ip);
89354 + return 0;
89355 + }
89356 +
89357 + for (i = 0; i < curr->ip_num; i++) {
89358 + ip = *(curr->ips + i);
89359 + if (ip->iface != NULL) {
89360 + strncpy(iface, ip->iface, IFNAMSIZ - 1);
89361 + p = strchr(iface, ':');
89362 + if (p != NULL)
89363 + *p = '\0';
89364 + dev = dev_get_by_name(sock_net(sk), iface);
89365 + if (dev == NULL)
89366 + continue;
89367 + idev = in_dev_get(dev);
89368 + if (idev == NULL) {
89369 + dev_put(dev);
89370 + continue;
89371 + }
89372 + rcu_read_lock();
89373 + for_ifa(idev) {
89374 + if (!strcmp(ip->iface, ifa->ifa_label)) {
89375 + our_addr = ifa->ifa_address;
89376 + our_netmask = 0xffffffff;
89377 + ret = check_ip_policy(ip, ip_addr, ip_port, sk->sk_protocol, mode, type, our_addr, our_netmask);
89378 + if (ret == 1) {
89379 + rcu_read_unlock();
89380 + in_dev_put(idev);
89381 + dev_put(dev);
89382 + return 0;
89383 + } else if (ret == 2) {
89384 + rcu_read_unlock();
89385 + in_dev_put(idev);
89386 + dev_put(dev);
89387 + goto denied;
89388 + }
89389 + }
89390 + } endfor_ifa(idev);
89391 + rcu_read_unlock();
89392 + in_dev_put(idev);
89393 + dev_put(dev);
89394 + } else {
89395 + our_addr = ip->addr;
89396 + our_netmask = ip->netmask;
89397 + ret = check_ip_policy(ip, ip_addr, ip_port, sk->sk_protocol, mode, type, our_addr, our_netmask);
89398 + if (ret == 1)
89399 + return 0;
89400 + else if (ret == 2)
89401 + goto denied;
89402 + }
89403 + }
89404 +
89405 +denied:
89406 + if (mode == GR_BIND)
89407 + gr_log_int5_str2(GR_DONT_AUDIT, GR_BIND_ACL_MSG, &ip_addr, ip_port, gr_socktype_to_name(type), gr_proto_to_name(sk->sk_protocol));
89408 + else if (mode == GR_CONNECT)
89409 + gr_log_int5_str2(GR_DONT_AUDIT, GR_CONNECT_ACL_MSG, &ip_addr, ip_port, gr_socktype_to_name(type), gr_proto_to_name(sk->sk_protocol));
89410 +
89411 + return -EACCES;
89412 +}
89413 +
89414 +int
89415 +gr_search_connect(struct socket *sock, struct sockaddr_in *addr)
89416 +{
89417 + /* always allow disconnection of dgram sockets with connect */
89418 + if (addr->sin_family == AF_UNSPEC)
89419 + return 0;
89420 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sock->sk, addr, sock->type);
89421 +}
89422 +
89423 +int
89424 +gr_search_bind(struct socket *sock, struct sockaddr_in *addr)
89425 +{
89426 + return gr_search_connectbind(GR_BIND | GR_BINDOVERRIDE, sock->sk, addr, sock->type);
89427 +}
89428 +
89429 +int gr_search_listen(struct socket *sock)
89430 +{
89431 + struct sock *sk = sock->sk;
89432 + struct sockaddr_in addr;
89433 +
89434 + addr.sin_addr.s_addr = inet_sk(sk)->inet_saddr;
89435 + addr.sin_port = inet_sk(sk)->inet_sport;
89436 +
89437 + return gr_search_connectbind(GR_BIND | GR_CONNECTOVERRIDE, sock->sk, &addr, sock->type);
89438 +}
89439 +
89440 +int gr_search_accept(struct socket *sock)
89441 +{
89442 + struct sock *sk = sock->sk;
89443 + struct sockaddr_in addr;
89444 +
89445 + addr.sin_addr.s_addr = inet_sk(sk)->inet_saddr;
89446 + addr.sin_port = inet_sk(sk)->inet_sport;
89447 +
89448 + return gr_search_connectbind(GR_BIND | GR_CONNECTOVERRIDE, sock->sk, &addr, sock->type);
89449 +}
89450 +
89451 +int
89452 +gr_search_udp_sendmsg(struct sock *sk, struct sockaddr_in *addr)
89453 +{
89454 + if (addr)
89455 + return gr_search_connectbind(GR_CONNECT, sk, addr, SOCK_DGRAM);
89456 + else {
89457 + struct sockaddr_in sin;
89458 + const struct inet_sock *inet = inet_sk(sk);
89459 +
89460 + sin.sin_addr.s_addr = inet->inet_daddr;
89461 + sin.sin_port = inet->inet_dport;
89462 +
89463 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
89464 + }
89465 +}
89466 +
89467 +int
89468 +gr_search_udp_recvmsg(struct sock *sk, const struct sk_buff *skb)
89469 +{
89470 + struct sockaddr_in sin;
89471 +
89472 + if (unlikely(skb->len < sizeof (struct udphdr)))
89473 + return 0; // skip this packet
89474 +
89475 + sin.sin_addr.s_addr = ip_hdr(skb)->saddr;
89476 + sin.sin_port = udp_hdr(skb)->source;
89477 +
89478 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
89479 +}
89480 diff --git a/grsecurity/gracl_learn.c b/grsecurity/gracl_learn.c
89481 new file mode 100644
89482 index 0000000..25f54ef
89483 --- /dev/null
89484 +++ b/grsecurity/gracl_learn.c
89485 @@ -0,0 +1,207 @@
89486 +#include <linux/kernel.h>
89487 +#include <linux/mm.h>
89488 +#include <linux/sched.h>
89489 +#include <linux/poll.h>
89490 +#include <linux/string.h>
89491 +#include <linux/file.h>
89492 +#include <linux/types.h>
89493 +#include <linux/vmalloc.h>
89494 +#include <linux/grinternal.h>
89495 +
89496 +extern ssize_t write_grsec_handler(struct file * file, const char __user * buf,
89497 + size_t count, loff_t *ppos);
89498 +extern int gr_acl_is_enabled(void);
89499 +
89500 +static DECLARE_WAIT_QUEUE_HEAD(learn_wait);
89501 +static int gr_learn_attached;
89502 +
89503 +/* use a 512k buffer */
89504 +#define LEARN_BUFFER_SIZE (512 * 1024)
89505 +
89506 +static DEFINE_SPINLOCK(gr_learn_lock);
89507 +static DEFINE_MUTEX(gr_learn_user_mutex);
89508 +
89509 +/* we need to maintain two buffers, so that the kernel context of grlearn
89510 + uses a semaphore around the userspace copying, and the other kernel contexts
89511 + use a spinlock when copying into the buffer, since they cannot sleep
89512 +*/
89513 +static char *learn_buffer;
89514 +static char *learn_buffer_user;
89515 +static int learn_buffer_len;
89516 +static int learn_buffer_user_len;
89517 +
89518 +static ssize_t
89519 +read_learn(struct file *file, char __user * buf, size_t count, loff_t * ppos)
89520 +{
89521 + DECLARE_WAITQUEUE(wait, current);
89522 + ssize_t retval = 0;
89523 +
89524 + add_wait_queue(&learn_wait, &wait);
89525 + set_current_state(TASK_INTERRUPTIBLE);
89526 + do {
89527 + mutex_lock(&gr_learn_user_mutex);
89528 + spin_lock(&gr_learn_lock);
89529 + if (learn_buffer_len)
89530 + break;
89531 + spin_unlock(&gr_learn_lock);
89532 + mutex_unlock(&gr_learn_user_mutex);
89533 + if (file->f_flags & O_NONBLOCK) {
89534 + retval = -EAGAIN;
89535 + goto out;
89536 + }
89537 + if (signal_pending(current)) {
89538 + retval = -ERESTARTSYS;
89539 + goto out;
89540 + }
89541 +
89542 + schedule();
89543 + } while (1);
89544 +
89545 + memcpy(learn_buffer_user, learn_buffer, learn_buffer_len);
89546 + learn_buffer_user_len = learn_buffer_len;
89547 + retval = learn_buffer_len;
89548 + learn_buffer_len = 0;
89549 +
89550 + spin_unlock(&gr_learn_lock);
89551 +
89552 + if (copy_to_user(buf, learn_buffer_user, learn_buffer_user_len))
89553 + retval = -EFAULT;
89554 +
89555 + mutex_unlock(&gr_learn_user_mutex);
89556 +out:
89557 + set_current_state(TASK_RUNNING);
89558 + remove_wait_queue(&learn_wait, &wait);
89559 + return retval;
89560 +}
89561 +
89562 +static unsigned int
89563 +poll_learn(struct file * file, poll_table * wait)
89564 +{
89565 + poll_wait(file, &learn_wait, wait);
89566 +
89567 + if (learn_buffer_len)
89568 + return (POLLIN | POLLRDNORM);
89569 +
89570 + return 0;
89571 +}
89572 +
89573 +void
89574 +gr_clear_learn_entries(void)
89575 +{
89576 + char *tmp;
89577 +
89578 + mutex_lock(&gr_learn_user_mutex);
89579 + spin_lock(&gr_learn_lock);
89580 + tmp = learn_buffer;
89581 + learn_buffer = NULL;
89582 + spin_unlock(&gr_learn_lock);
89583 + if (tmp)
89584 + vfree(tmp);
89585 + if (learn_buffer_user != NULL) {
89586 + vfree(learn_buffer_user);
89587 + learn_buffer_user = NULL;
89588 + }
89589 + learn_buffer_len = 0;
89590 + mutex_unlock(&gr_learn_user_mutex);
89591 +
89592 + return;
89593 +}
89594 +
89595 +void
89596 +gr_add_learn_entry(const char *fmt, ...)
89597 +{
89598 + va_list args;
89599 + unsigned int len;
89600 +
89601 + if (!gr_learn_attached)
89602 + return;
89603 +
89604 + spin_lock(&gr_learn_lock);
89605 +
89606 + /* leave a gap at the end so we know when it's "full" but don't have to
89607 + compute the exact length of the string we're trying to append
89608 + */
89609 + if (learn_buffer_len > LEARN_BUFFER_SIZE - 16384) {
89610 + spin_unlock(&gr_learn_lock);
89611 + wake_up_interruptible(&learn_wait);
89612 + return;
89613 + }
89614 + if (learn_buffer == NULL) {
89615 + spin_unlock(&gr_learn_lock);
89616 + return;
89617 + }
89618 +
89619 + va_start(args, fmt);
89620 + len = vsnprintf(learn_buffer + learn_buffer_len, LEARN_BUFFER_SIZE - learn_buffer_len, fmt, args);
89621 + va_end(args);
89622 +
89623 + learn_buffer_len += len + 1;
89624 +
89625 + spin_unlock(&gr_learn_lock);
89626 + wake_up_interruptible(&learn_wait);
89627 +
89628 + return;
89629 +}
89630 +
89631 +static int
89632 +open_learn(struct inode *inode, struct file *file)
89633 +{
89634 + if (file->f_mode & FMODE_READ && gr_learn_attached)
89635 + return -EBUSY;
89636 + if (file->f_mode & FMODE_READ) {
89637 + int retval = 0;
89638 + mutex_lock(&gr_learn_user_mutex);
89639 + if (learn_buffer == NULL)
89640 + learn_buffer = vmalloc(LEARN_BUFFER_SIZE);
89641 + if (learn_buffer_user == NULL)
89642 + learn_buffer_user = vmalloc(LEARN_BUFFER_SIZE);
89643 + if (learn_buffer == NULL) {
89644 + retval = -ENOMEM;
89645 + goto out_error;
89646 + }
89647 + if (learn_buffer_user == NULL) {
89648 + retval = -ENOMEM;
89649 + goto out_error;
89650 + }
89651 + learn_buffer_len = 0;
89652 + learn_buffer_user_len = 0;
89653 + gr_learn_attached = 1;
89654 +out_error:
89655 + mutex_unlock(&gr_learn_user_mutex);
89656 + return retval;
89657 + }
89658 + return 0;
89659 +}
89660 +
89661 +static int
89662 +close_learn(struct inode *inode, struct file *file)
89663 +{
89664 + if (file->f_mode & FMODE_READ) {
89665 + char *tmp = NULL;
89666 + mutex_lock(&gr_learn_user_mutex);
89667 + spin_lock(&gr_learn_lock);
89668 + tmp = learn_buffer;
89669 + learn_buffer = NULL;
89670 + spin_unlock(&gr_learn_lock);
89671 + if (tmp)
89672 + vfree(tmp);
89673 + if (learn_buffer_user != NULL) {
89674 + vfree(learn_buffer_user);
89675 + learn_buffer_user = NULL;
89676 + }
89677 + learn_buffer_len = 0;
89678 + learn_buffer_user_len = 0;
89679 + gr_learn_attached = 0;
89680 + mutex_unlock(&gr_learn_user_mutex);
89681 + }
89682 +
89683 + return 0;
89684 +}
89685 +
89686 +const struct file_operations grsec_fops = {
89687 + .read = read_learn,
89688 + .write = write_grsec_handler,
89689 + .open = open_learn,
89690 + .release = close_learn,
89691 + .poll = poll_learn,
89692 +};
89693 diff --git a/grsecurity/gracl_policy.c b/grsecurity/gracl_policy.c
89694 new file mode 100644
89695 index 0000000..0773423
89696 --- /dev/null
89697 +++ b/grsecurity/gracl_policy.c
89698 @@ -0,0 +1,1786 @@
89699 +#include <linux/kernel.h>
89700 +#include <linux/module.h>
89701 +#include <linux/sched.h>
89702 +#include <linux/mm.h>
89703 +#include <linux/file.h>
89704 +#include <linux/fs.h>
89705 +#include <linux/namei.h>
89706 +#include <linux/mount.h>
89707 +#include <linux/tty.h>
89708 +#include <linux/proc_fs.h>
89709 +#include <linux/lglock.h>
89710 +#include <linux/slab.h>
89711 +#include <linux/vmalloc.h>
89712 +#include <linux/types.h>
89713 +#include <linux/sysctl.h>
89714 +#include <linux/netdevice.h>
89715 +#include <linux/ptrace.h>
89716 +#include <linux/gracl.h>
89717 +#include <linux/gralloc.h>
89718 +#include <linux/security.h>
89719 +#include <linux/grinternal.h>
89720 +#include <linux/pid_namespace.h>
89721 +#include <linux/stop_machine.h>
89722 +#include <linux/fdtable.h>
89723 +#include <linux/percpu.h>
89724 +#include <linux/lglock.h>
89725 +#include <linux/hugetlb.h>
89726 +#include <linux/posix-timers.h>
89727 +#include "../fs/mount.h"
89728 +
89729 +#include <asm/uaccess.h>
89730 +#include <asm/errno.h>
89731 +#include <asm/mman.h>
89732 +
89733 +extern struct gr_policy_state *polstate;
89734 +
89735 +#define FOR_EACH_ROLE_START(role) \
89736 + role = polstate->role_list; \
89737 + while (role) {
89738 +
89739 +#define FOR_EACH_ROLE_END(role) \
89740 + role = role->prev; \
89741 + }
89742 +
89743 +struct path gr_real_root;
89744 +
89745 +extern struct gr_alloc_state *current_alloc_state;
89746 +
89747 +u16 acl_sp_role_value;
89748 +
89749 +static DEFINE_MUTEX(gr_dev_mutex);
89750 +
89751 +extern int chkpw(struct gr_arg *entry, unsigned char *salt, unsigned char *sum);
89752 +extern void gr_clear_learn_entries(void);
89753 +
89754 +struct gr_arg *gr_usermode __read_only;
89755 +unsigned char *gr_system_salt __read_only;
89756 +unsigned char *gr_system_sum __read_only;
89757 +
89758 +static unsigned int gr_auth_attempts = 0;
89759 +static unsigned long gr_auth_expires = 0UL;
89760 +
89761 +struct acl_object_label *fakefs_obj_rw;
89762 +struct acl_object_label *fakefs_obj_rwx;
89763 +
89764 +extern int gr_init_uidset(void);
89765 +extern void gr_free_uidset(void);
89766 +extern void gr_remove_uid(uid_t uid);
89767 +extern int gr_find_uid(uid_t uid);
89768 +
89769 +extern struct acl_subject_label *__gr_get_subject_for_task(const struct gr_policy_state *state, struct task_struct *task, const char *filename, int fallback);
89770 +extern void __gr_apply_subject_to_task(struct gr_policy_state *state, struct task_struct *task, struct acl_subject_label *subj);
89771 +extern int gr_streq(const char *a, const char *b, const unsigned int lena, const unsigned int lenb);
89772 +extern void __insert_inodev_entry(const struct gr_policy_state *state, struct inodev_entry *entry);
89773 +extern struct acl_role_label *__lookup_acl_role_label(const struct gr_policy_state *state, const struct task_struct *task, const uid_t uid, const gid_t gid);
89774 +extern void insert_acl_obj_label(struct acl_object_label *obj, struct acl_subject_label *subj);
89775 +extern void insert_acl_subj_label(struct acl_subject_label *obj, struct acl_role_label *role);
89776 +extern struct name_entry * __lookup_name_entry(const struct gr_policy_state *state, const char *name);
89777 +extern char *gr_to_filename_rbac(const struct dentry *dentry, const struct vfsmount *mnt);
89778 +extern struct acl_subject_label *lookup_acl_subj_label(const u64 ino, const dev_t dev, const struct acl_role_label *role);
89779 +extern struct acl_subject_label *lookup_acl_subj_label_deleted(const u64 ino, const dev_t dev, const struct acl_role_label *role);
89780 +extern void assign_special_role(const char *rolename);
89781 +extern struct acl_subject_label *chk_subj_label(const struct dentry *l_dentry, const struct vfsmount *l_mnt, const struct acl_role_label *role);
89782 +extern int gr_rbac_disable(void *unused);
89783 +extern void gr_enable_rbac_system(void);
89784 +
89785 +static int copy_acl_object_label_normal(struct acl_object_label *obj, const struct acl_object_label *userp)
89786 +{
89787 + if (copy_from_user(obj, userp, sizeof(struct acl_object_label)))
89788 + return -EFAULT;
89789 +
89790 + return 0;
89791 +}
89792 +
89793 +static int copy_acl_ip_label_normal(struct acl_ip_label *ip, const struct acl_ip_label *userp)
89794 +{
89795 + if (copy_from_user(ip, userp, sizeof(struct acl_ip_label)))
89796 + return -EFAULT;
89797 +
89798 + return 0;
89799 +}
89800 +
89801 +static int copy_acl_subject_label_normal(struct acl_subject_label *subj, const struct acl_subject_label *userp)
89802 +{
89803 + if (copy_from_user(subj, userp, sizeof(struct acl_subject_label)))
89804 + return -EFAULT;
89805 +
89806 + return 0;
89807 +}
89808 +
89809 +static int copy_acl_role_label_normal(struct acl_role_label *role, const struct acl_role_label *userp)
89810 +{
89811 + if (copy_from_user(role, userp, sizeof(struct acl_role_label)))
89812 + return -EFAULT;
89813 +
89814 + return 0;
89815 +}
89816 +
89817 +static int copy_role_allowed_ip_normal(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp)
89818 +{
89819 + if (copy_from_user(roleip, userp, sizeof(struct role_allowed_ip)))
89820 + return -EFAULT;
89821 +
89822 + return 0;
89823 +}
89824 +
89825 +static int copy_sprole_pw_normal(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp)
89826 +{
89827 + if (copy_from_user(pw, userp + idx, sizeof(struct sprole_pw)))
89828 + return -EFAULT;
89829 +
89830 + return 0;
89831 +}
89832 +
89833 +static int copy_gr_hash_struct_normal(struct gr_hash_struct *hash, const struct gr_hash_struct *userp)
89834 +{
89835 + if (copy_from_user(hash, userp, sizeof(struct gr_hash_struct)))
89836 + return -EFAULT;
89837 +
89838 + return 0;
89839 +}
89840 +
89841 +static int copy_role_transition_normal(struct role_transition *trans, const struct role_transition *userp)
89842 +{
89843 + if (copy_from_user(trans, userp, sizeof(struct role_transition)))
89844 + return -EFAULT;
89845 +
89846 + return 0;
89847 +}
89848 +
89849 +int copy_pointer_from_array_normal(void *ptr, unsigned long idx, const void *userp)
89850 +{
89851 + if (copy_from_user(ptr, userp + (idx * sizeof(void *)), sizeof(void *)))
89852 + return -EFAULT;
89853 +
89854 + return 0;
89855 +}
89856 +
89857 +static int copy_gr_arg_wrapper_normal(const char __user *buf, struct gr_arg_wrapper *uwrap)
89858 +{
89859 + if (copy_from_user(uwrap, buf, sizeof (struct gr_arg_wrapper)))
89860 + return -EFAULT;
89861 +
89862 + if ((uwrap->version != GRSECURITY_VERSION) ||
89863 + (uwrap->size != sizeof(struct gr_arg)))
89864 + return -EINVAL;
89865 +
89866 + return 0;
89867 +}
89868 +
89869 +static int copy_gr_arg_normal(const struct gr_arg __user *buf, struct gr_arg *arg)
89870 +{
89871 + if (copy_from_user(arg, buf, sizeof (struct gr_arg)))
89872 + return -EFAULT;
89873 +
89874 + return 0;
89875 +}
89876 +
89877 +static size_t get_gr_arg_wrapper_size_normal(void)
89878 +{
89879 + return sizeof(struct gr_arg_wrapper);
89880 +}
89881 +
89882 +#ifdef CONFIG_COMPAT
89883 +extern int copy_gr_arg_wrapper_compat(const char *buf, struct gr_arg_wrapper *uwrap);
89884 +extern int copy_gr_arg_compat(const struct gr_arg __user *buf, struct gr_arg *arg);
89885 +extern int copy_acl_object_label_compat(struct acl_object_label *obj, const struct acl_object_label *userp);
89886 +extern int copy_acl_subject_label_compat(struct acl_subject_label *subj, const struct acl_subject_label *userp);
89887 +extern int copy_acl_role_label_compat(struct acl_role_label *role, const struct acl_role_label *userp);
89888 +extern int copy_role_allowed_ip_compat(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp);
89889 +extern int copy_role_transition_compat(struct role_transition *trans, const struct role_transition *userp);
89890 +extern int copy_gr_hash_struct_compat(struct gr_hash_struct *hash, const struct gr_hash_struct *userp);
89891 +extern int copy_pointer_from_array_compat(void *ptr, unsigned long idx, const void *userp);
89892 +extern int copy_acl_ip_label_compat(struct acl_ip_label *ip, const struct acl_ip_label *userp);
89893 +extern int copy_sprole_pw_compat(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp);
89894 +extern size_t get_gr_arg_wrapper_size_compat(void);
89895 +
89896 +int (* copy_gr_arg_wrapper)(const char *buf, struct gr_arg_wrapper *uwrap) __read_only;
89897 +int (* copy_gr_arg)(const struct gr_arg *buf, struct gr_arg *arg) __read_only;
89898 +int (* copy_acl_object_label)(struct acl_object_label *obj, const struct acl_object_label *userp) __read_only;
89899 +int (* copy_acl_subject_label)(struct acl_subject_label *subj, const struct acl_subject_label *userp) __read_only;
89900 +int (* copy_acl_role_label)(struct acl_role_label *role, const struct acl_role_label *userp) __read_only;
89901 +int (* copy_acl_ip_label)(struct acl_ip_label *ip, const struct acl_ip_label *userp) __read_only;
89902 +int (* copy_pointer_from_array)(void *ptr, unsigned long idx, const void *userp) __read_only;
89903 +int (* copy_sprole_pw)(struct sprole_pw *pw, unsigned long idx, const struct sprole_pw *userp) __read_only;
89904 +int (* copy_gr_hash_struct)(struct gr_hash_struct *hash, const struct gr_hash_struct *userp) __read_only;
89905 +int (* copy_role_transition)(struct role_transition *trans, const struct role_transition *userp) __read_only;
89906 +int (* copy_role_allowed_ip)(struct role_allowed_ip *roleip, const struct role_allowed_ip *userp) __read_only;
89907 +size_t (* get_gr_arg_wrapper_size)(void) __read_only;
89908 +
89909 +#else
89910 +#define copy_gr_arg_wrapper copy_gr_arg_wrapper_normal
89911 +#define copy_gr_arg copy_gr_arg_normal
89912 +#define copy_gr_hash_struct copy_gr_hash_struct_normal
89913 +#define copy_acl_object_label copy_acl_object_label_normal
89914 +#define copy_acl_subject_label copy_acl_subject_label_normal
89915 +#define copy_acl_role_label copy_acl_role_label_normal
89916 +#define copy_acl_ip_label copy_acl_ip_label_normal
89917 +#define copy_pointer_from_array copy_pointer_from_array_normal
89918 +#define copy_sprole_pw copy_sprole_pw_normal
89919 +#define copy_role_transition copy_role_transition_normal
89920 +#define copy_role_allowed_ip copy_role_allowed_ip_normal
89921 +#define get_gr_arg_wrapper_size get_gr_arg_wrapper_size_normal
89922 +#endif
89923 +
89924 +static struct acl_subject_label *
89925 +lookup_subject_map(const struct acl_subject_label *userp)
89926 +{
89927 + unsigned int index = gr_shash(userp, polstate->subj_map_set.s_size);
89928 + struct subject_map *match;
89929 +
89930 + match = polstate->subj_map_set.s_hash[index];
89931 +
89932 + while (match && match->user != userp)
89933 + match = match->next;
89934 +
89935 + if (match != NULL)
89936 + return match->kernel;
89937 + else
89938 + return NULL;
89939 +}
89940 +
89941 +static void
89942 +insert_subj_map_entry(struct subject_map *subjmap)
89943 +{
89944 + unsigned int index = gr_shash(subjmap->user, polstate->subj_map_set.s_size);
89945 + struct subject_map **curr;
89946 +
89947 + subjmap->prev = NULL;
89948 +
89949 + curr = &polstate->subj_map_set.s_hash[index];
89950 + if (*curr != NULL)
89951 + (*curr)->prev = subjmap;
89952 +
89953 + subjmap->next = *curr;
89954 + *curr = subjmap;
89955 +
89956 + return;
89957 +}
89958 +
89959 +static void
89960 +__insert_acl_role_label(struct acl_role_label *role, uid_t uidgid)
89961 +{
89962 + unsigned int index =
89963 + gr_rhash(uidgid, role->roletype & (GR_ROLE_USER | GR_ROLE_GROUP), polstate->acl_role_set.r_size);
89964 + struct acl_role_label **curr;
89965 + struct acl_role_label *tmp, *tmp2;
89966 +
89967 + curr = &polstate->acl_role_set.r_hash[index];
89968 +
89969 + /* simple case, slot is empty, just set it to our role */
89970 + if (*curr == NULL) {
89971 + *curr = role;
89972 + } else {
89973 + /* example:
89974 + 1 -> 2 -> 3 (adding 2 -> 3 to here)
89975 + 2 -> 3
89976 + */
89977 + /* first check to see if we can already be reached via this slot */
89978 + tmp = *curr;
89979 + while (tmp && tmp != role)
89980 + tmp = tmp->next;
89981 + if (tmp == role) {
89982 + /* we don't need to add ourselves to this slot's chain */
89983 + return;
89984 + }
89985 + /* we need to add ourselves to this chain, two cases */
89986 + if (role->next == NULL) {
89987 + /* simple case, append the current chain to our role */
89988 + role->next = *curr;
89989 + *curr = role;
89990 + } else {
89991 + /* 1 -> 2 -> 3 -> 4
89992 + 2 -> 3 -> 4
89993 + 3 -> 4 (adding 1 -> 2 -> 3 -> 4 to here)
89994 + */
89995 + /* trickier case: walk our role's chain until we find
89996 + the role for the start of the current slot's chain */
89997 + tmp = role;
89998 + tmp2 = *curr;
89999 + while (tmp->next && tmp->next != tmp2)
90000 + tmp = tmp->next;
90001 + if (tmp->next == tmp2) {
90002 + /* from example above, we found 3, so just
90003 + replace this slot's chain with ours */
90004 + *curr = role;
90005 + } else {
90006 + /* we didn't find a subset of our role's chain
90007 + in the current slot's chain, so append their
90008 + chain to ours, and set us as the first role in
90009 + the slot's chain
90010 +
90011 + we could fold this case with the case above,
90012 + but making it explicit for clarity
90013 + */
90014 + tmp->next = tmp2;
90015 + *curr = role;
90016 + }
90017 + }
90018 + }
90019 +
90020 + return;
90021 +}
90022 +
90023 +static void
90024 +insert_acl_role_label(struct acl_role_label *role)
90025 +{
90026 + int i;
90027 +
90028 + if (polstate->role_list == NULL) {
90029 + polstate->role_list = role;
90030 + role->prev = NULL;
90031 + } else {
90032 + role->prev = polstate->role_list;
90033 + polstate->role_list = role;
90034 + }
90035 +
90036 + /* used for hash chains */
90037 + role->next = NULL;
90038 +
90039 + if (role->roletype & GR_ROLE_DOMAIN) {
90040 + for (i = 0; i < role->domain_child_num; i++)
90041 + __insert_acl_role_label(role, role->domain_children[i]);
90042 + } else
90043 + __insert_acl_role_label(role, role->uidgid);
90044 +}
90045 +
90046 +static int
90047 +insert_name_entry(char *name, const u64 inode, const dev_t device, __u8 deleted)
90048 +{
90049 + struct name_entry **curr, *nentry;
90050 + struct inodev_entry *ientry;
90051 + unsigned int len = strlen(name);
90052 + unsigned int key = full_name_hash(name, len);
90053 + unsigned int index = key % polstate->name_set.n_size;
90054 +
90055 + curr = &polstate->name_set.n_hash[index];
90056 +
90057 + while (*curr && ((*curr)->key != key || !gr_streq((*curr)->name, name, (*curr)->len, len)))
90058 + curr = &((*curr)->next);
90059 +
90060 + if (*curr != NULL)
90061 + return 1;
90062 +
90063 + nentry = acl_alloc(sizeof (struct name_entry));
90064 + if (nentry == NULL)
90065 + return 0;
90066 + ientry = acl_alloc(sizeof (struct inodev_entry));
90067 + if (ientry == NULL)
90068 + return 0;
90069 + ientry->nentry = nentry;
90070 +
90071 + nentry->key = key;
90072 + nentry->name = name;
90073 + nentry->inode = inode;
90074 + nentry->device = device;
90075 + nentry->len = len;
90076 + nentry->deleted = deleted;
90077 +
90078 + nentry->prev = NULL;
90079 + curr = &polstate->name_set.n_hash[index];
90080 + if (*curr != NULL)
90081 + (*curr)->prev = nentry;
90082 + nentry->next = *curr;
90083 + *curr = nentry;
90084 +
90085 + /* insert us into the table searchable by inode/dev */
90086 + __insert_inodev_entry(polstate, ientry);
90087 +
90088 + return 1;
90089 +}
90090 +
90091 +/* allocating chained hash tables, so optimal size is where lambda ~ 1 */
90092 +
90093 +static void *
90094 +create_table(__u32 * len, int elementsize)
90095 +{
90096 + unsigned int table_sizes[] = {
90097 + 7, 13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381,
90098 + 32749, 65521, 131071, 262139, 524287, 1048573, 2097143,
90099 + 4194301, 8388593, 16777213, 33554393, 67108859
90100 + };
90101 + void *newtable = NULL;
90102 + unsigned int pwr = 0;
90103 +
90104 + while ((pwr < ((sizeof (table_sizes) / sizeof (table_sizes[0])) - 1)) &&
90105 + table_sizes[pwr] <= *len)
90106 + pwr++;
90107 +
90108 + if (table_sizes[pwr] <= *len || (table_sizes[pwr] > ULONG_MAX / elementsize))
90109 + return newtable;
90110 +
90111 + if ((table_sizes[pwr] * elementsize) <= PAGE_SIZE)
90112 + newtable =
90113 + kmalloc(table_sizes[pwr] * elementsize, GFP_KERNEL);
90114 + else
90115 + newtable = vmalloc(table_sizes[pwr] * elementsize);
90116 +
90117 + *len = table_sizes[pwr];
90118 +
90119 + return newtable;
90120 +}
90121 +
90122 +static int
90123 +init_variables(const struct gr_arg *arg, bool reload)
90124 +{
90125 + struct task_struct *reaper = init_pid_ns.child_reaper;
90126 + unsigned int stacksize;
90127 +
90128 + polstate->subj_map_set.s_size = arg->role_db.num_subjects;
90129 + polstate->acl_role_set.r_size = arg->role_db.num_roles + arg->role_db.num_domain_children;
90130 + polstate->name_set.n_size = arg->role_db.num_objects;
90131 + polstate->inodev_set.i_size = arg->role_db.num_objects;
90132 +
90133 + if (!polstate->subj_map_set.s_size || !polstate->acl_role_set.r_size ||
90134 + !polstate->name_set.n_size || !polstate->inodev_set.i_size)
90135 + return 1;
90136 +
90137 + if (!reload) {
90138 + if (!gr_init_uidset())
90139 + return 1;
90140 + }
90141 +
90142 + /* set up the stack that holds allocation info */
90143 +
90144 + stacksize = arg->role_db.num_pointers + 5;
90145 +
90146 + if (!acl_alloc_stack_init(stacksize))
90147 + return 1;
90148 +
90149 + if (!reload) {
90150 + /* grab reference for the real root dentry and vfsmount */
90151 + get_fs_root(reaper->fs, &gr_real_root);
90152 +
90153 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
90154 + printk(KERN_ALERT "Obtained real root device=%d, inode=%lu\n", gr_get_dev_from_dentry(gr_real_root.dentry), gr_get_ino_from_dentry(gr_real_root.dentry));
90155 +#endif
90156 +
90157 + fakefs_obj_rw = kzalloc(sizeof(struct acl_object_label), GFP_KERNEL);
90158 + if (fakefs_obj_rw == NULL)
90159 + return 1;
90160 + fakefs_obj_rw->mode = GR_FIND | GR_READ | GR_WRITE;
90161 +
90162 + fakefs_obj_rwx = kzalloc(sizeof(struct acl_object_label), GFP_KERNEL);
90163 + if (fakefs_obj_rwx == NULL)
90164 + return 1;
90165 + fakefs_obj_rwx->mode = GR_FIND | GR_READ | GR_WRITE | GR_EXEC;
90166 + }
90167 +
90168 + polstate->subj_map_set.s_hash =
90169 + (struct subject_map **) create_table(&polstate->subj_map_set.s_size, sizeof(void *));
90170 + polstate->acl_role_set.r_hash =
90171 + (struct acl_role_label **) create_table(&polstate->acl_role_set.r_size, sizeof(void *));
90172 + polstate->name_set.n_hash = (struct name_entry **) create_table(&polstate->name_set.n_size, sizeof(void *));
90173 + polstate->inodev_set.i_hash =
90174 + (struct inodev_entry **) create_table(&polstate->inodev_set.i_size, sizeof(void *));
90175 +
90176 + if (!polstate->subj_map_set.s_hash || !polstate->acl_role_set.r_hash ||
90177 + !polstate->name_set.n_hash || !polstate->inodev_set.i_hash)
90178 + return 1;
90179 +
90180 + memset(polstate->subj_map_set.s_hash, 0,
90181 + sizeof(struct subject_map *) * polstate->subj_map_set.s_size);
90182 + memset(polstate->acl_role_set.r_hash, 0,
90183 + sizeof (struct acl_role_label *) * polstate->acl_role_set.r_size);
90184 + memset(polstate->name_set.n_hash, 0,
90185 + sizeof (struct name_entry *) * polstate->name_set.n_size);
90186 + memset(polstate->inodev_set.i_hash, 0,
90187 + sizeof (struct inodev_entry *) * polstate->inodev_set.i_size);
90188 +
90189 + return 0;
90190 +}
90191 +
90192 +/* free information not needed after startup
90193 + currently contains user->kernel pointer mappings for subjects
90194 +*/
90195 +
90196 +static void
90197 +free_init_variables(void)
90198 +{
90199 + __u32 i;
90200 +
90201 + if (polstate->subj_map_set.s_hash) {
90202 + for (i = 0; i < polstate->subj_map_set.s_size; i++) {
90203 + if (polstate->subj_map_set.s_hash[i]) {
90204 + kfree(polstate->subj_map_set.s_hash[i]);
90205 + polstate->subj_map_set.s_hash[i] = NULL;
90206 + }
90207 + }
90208 +
90209 + if ((polstate->subj_map_set.s_size * sizeof (struct subject_map *)) <=
90210 + PAGE_SIZE)
90211 + kfree(polstate->subj_map_set.s_hash);
90212 + else
90213 + vfree(polstate->subj_map_set.s_hash);
90214 + }
90215 +
90216 + return;
90217 +}
90218 +
90219 +static void
90220 +free_variables(bool reload)
90221 +{
90222 + struct acl_subject_label *s;
90223 + struct acl_role_label *r;
90224 + struct task_struct *task, *task2;
90225 + unsigned int x;
90226 +
90227 + if (!reload) {
90228 + gr_clear_learn_entries();
90229 +
90230 + read_lock(&tasklist_lock);
90231 + do_each_thread(task2, task) {
90232 + task->acl_sp_role = 0;
90233 + task->acl_role_id = 0;
90234 + task->inherited = 0;
90235 + task->acl = NULL;
90236 + task->role = NULL;
90237 + } while_each_thread(task2, task);
90238 + read_unlock(&tasklist_lock);
90239 +
90240 + kfree(fakefs_obj_rw);
90241 + fakefs_obj_rw = NULL;
90242 + kfree(fakefs_obj_rwx);
90243 + fakefs_obj_rwx = NULL;
90244 +
90245 + /* release the reference to the real root dentry and vfsmount */
90246 + path_put(&gr_real_root);
90247 + memset(&gr_real_root, 0, sizeof(gr_real_root));
90248 + }
90249 +
90250 + /* free all object hash tables */
90251 +
90252 + FOR_EACH_ROLE_START(r)
90253 + if (r->subj_hash == NULL)
90254 + goto next_role;
90255 + FOR_EACH_SUBJECT_START(r, s, x)
90256 + if (s->obj_hash == NULL)
90257 + break;
90258 + if ((s->obj_hash_size * sizeof (struct acl_object_label *)) <= PAGE_SIZE)
90259 + kfree(s->obj_hash);
90260 + else
90261 + vfree(s->obj_hash);
90262 + FOR_EACH_SUBJECT_END(s, x)
90263 + FOR_EACH_NESTED_SUBJECT_START(r, s)
90264 + if (s->obj_hash == NULL)
90265 + break;
90266 + if ((s->obj_hash_size * sizeof (struct acl_object_label *)) <= PAGE_SIZE)
90267 + kfree(s->obj_hash);
90268 + else
90269 + vfree(s->obj_hash);
90270 + FOR_EACH_NESTED_SUBJECT_END(s)
90271 + if ((r->subj_hash_size * sizeof (struct acl_subject_label *)) <= PAGE_SIZE)
90272 + kfree(r->subj_hash);
90273 + else
90274 + vfree(r->subj_hash);
90275 + r->subj_hash = NULL;
90276 +next_role:
90277 + FOR_EACH_ROLE_END(r)
90278 +
90279 + acl_free_all();
90280 +
90281 + if (polstate->acl_role_set.r_hash) {
90282 + if ((polstate->acl_role_set.r_size * sizeof (struct acl_role_label *)) <=
90283 + PAGE_SIZE)
90284 + kfree(polstate->acl_role_set.r_hash);
90285 + else
90286 + vfree(polstate->acl_role_set.r_hash);
90287 + }
90288 + if (polstate->name_set.n_hash) {
90289 + if ((polstate->name_set.n_size * sizeof (struct name_entry *)) <=
90290 + PAGE_SIZE)
90291 + kfree(polstate->name_set.n_hash);
90292 + else
90293 + vfree(polstate->name_set.n_hash);
90294 + }
90295 +
90296 + if (polstate->inodev_set.i_hash) {
90297 + if ((polstate->inodev_set.i_size * sizeof (struct inodev_entry *)) <=
90298 + PAGE_SIZE)
90299 + kfree(polstate->inodev_set.i_hash);
90300 + else
90301 + vfree(polstate->inodev_set.i_hash);
90302 + }
90303 +
90304 + if (!reload)
90305 + gr_free_uidset();
90306 +
90307 + memset(&polstate->name_set, 0, sizeof (struct name_db));
90308 + memset(&polstate->inodev_set, 0, sizeof (struct inodev_db));
90309 + memset(&polstate->acl_role_set, 0, sizeof (struct acl_role_db));
90310 + memset(&polstate->subj_map_set, 0, sizeof (struct acl_subj_map_db));
90311 +
90312 + polstate->default_role = NULL;
90313 + polstate->kernel_role = NULL;
90314 + polstate->role_list = NULL;
90315 +
90316 + return;
90317 +}
90318 +
90319 +static struct acl_subject_label *
90320 +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied);
90321 +
90322 +static int alloc_and_copy_string(char **name, unsigned int maxlen)
90323 +{
90324 + unsigned int len = strnlen_user(*name, maxlen);
90325 + char *tmp;
90326 +
90327 + if (!len || len >= maxlen)
90328 + return -EINVAL;
90329 +
90330 + if ((tmp = (char *) acl_alloc(len)) == NULL)
90331 + return -ENOMEM;
90332 +
90333 + if (copy_from_user(tmp, *name, len))
90334 + return -EFAULT;
90335 +
90336 + tmp[len-1] = '\0';
90337 + *name = tmp;
90338 +
90339 + return 0;
90340 +}
90341 +
90342 +static int
90343 +copy_user_glob(struct acl_object_label *obj)
90344 +{
90345 + struct acl_object_label *g_tmp, **guser;
90346 + int error;
90347 +
90348 + if (obj->globbed == NULL)
90349 + return 0;
90350 +
90351 + guser = &obj->globbed;
90352 + while (*guser) {
90353 + g_tmp = (struct acl_object_label *)
90354 + acl_alloc(sizeof (struct acl_object_label));
90355 + if (g_tmp == NULL)
90356 + return -ENOMEM;
90357 +
90358 + if (copy_acl_object_label(g_tmp, *guser))
90359 + return -EFAULT;
90360 +
90361 + error = alloc_and_copy_string(&g_tmp->filename, PATH_MAX);
90362 + if (error)
90363 + return error;
90364 +
90365 + *guser = g_tmp;
90366 + guser = &(g_tmp->next);
90367 + }
90368 +
90369 + return 0;
90370 +}
90371 +
90372 +static int
90373 +copy_user_objs(struct acl_object_label *userp, struct acl_subject_label *subj,
90374 + struct acl_role_label *role)
90375 +{
90376 + struct acl_object_label *o_tmp;
90377 + int ret;
90378 +
90379 + while (userp) {
90380 + if ((o_tmp = (struct acl_object_label *)
90381 + acl_alloc(sizeof (struct acl_object_label))) == NULL)
90382 + return -ENOMEM;
90383 +
90384 + if (copy_acl_object_label(o_tmp, userp))
90385 + return -EFAULT;
90386 +
90387 + userp = o_tmp->prev;
90388 +
90389 + ret = alloc_and_copy_string(&o_tmp->filename, PATH_MAX);
90390 + if (ret)
90391 + return ret;
90392 +
90393 + insert_acl_obj_label(o_tmp, subj);
90394 + if (!insert_name_entry(o_tmp->filename, o_tmp->inode,
90395 + o_tmp->device, (o_tmp->mode & GR_DELETED) ? 1 : 0))
90396 + return -ENOMEM;
90397 +
90398 + ret = copy_user_glob(o_tmp);
90399 + if (ret)
90400 + return ret;
90401 +
90402 + if (o_tmp->nested) {
90403 + int already_copied;
90404 +
90405 + o_tmp->nested = do_copy_user_subj(o_tmp->nested, role, &already_copied);
90406 + if (IS_ERR(o_tmp->nested))
90407 + return PTR_ERR(o_tmp->nested);
90408 +
90409 + /* insert into nested subject list if we haven't copied this one yet
90410 + to prevent duplicate entries */
90411 + if (!already_copied) {
90412 + o_tmp->nested->next = role->hash->first;
90413 + role->hash->first = o_tmp->nested;
90414 + }
90415 + }
90416 + }
90417 +
90418 + return 0;
90419 +}
90420 +
90421 +static __u32
90422 +count_user_subjs(struct acl_subject_label *userp)
90423 +{
90424 + struct acl_subject_label s_tmp;
90425 + __u32 num = 0;
90426 +
90427 + while (userp) {
90428 + if (copy_acl_subject_label(&s_tmp, userp))
90429 + break;
90430 +
90431 + userp = s_tmp.prev;
90432 + }
90433 +
90434 + return num;
90435 +}
90436 +
90437 +static int
90438 +copy_user_allowedips(struct acl_role_label *rolep)
90439 +{
90440 + struct role_allowed_ip *ruserip, *rtmp = NULL, *rlast;
90441 +
90442 + ruserip = rolep->allowed_ips;
90443 +
90444 + while (ruserip) {
90445 + rlast = rtmp;
90446 +
90447 + if ((rtmp = (struct role_allowed_ip *)
90448 + acl_alloc(sizeof (struct role_allowed_ip))) == NULL)
90449 + return -ENOMEM;
90450 +
90451 + if (copy_role_allowed_ip(rtmp, ruserip))
90452 + return -EFAULT;
90453 +
90454 + ruserip = rtmp->prev;
90455 +
90456 + if (!rlast) {
90457 + rtmp->prev = NULL;
90458 + rolep->allowed_ips = rtmp;
90459 + } else {
90460 + rlast->next = rtmp;
90461 + rtmp->prev = rlast;
90462 + }
90463 +
90464 + if (!ruserip)
90465 + rtmp->next = NULL;
90466 + }
90467 +
90468 + return 0;
90469 +}
90470 +
90471 +static int
90472 +copy_user_transitions(struct acl_role_label *rolep)
90473 +{
90474 + struct role_transition *rusertp, *rtmp = NULL, *rlast;
90475 + int error;
90476 +
90477 + rusertp = rolep->transitions;
90478 +
90479 + while (rusertp) {
90480 + rlast = rtmp;
90481 +
90482 + if ((rtmp = (struct role_transition *)
90483 + acl_alloc(sizeof (struct role_transition))) == NULL)
90484 + return -ENOMEM;
90485 +
90486 + if (copy_role_transition(rtmp, rusertp))
90487 + return -EFAULT;
90488 +
90489 + rusertp = rtmp->prev;
90490 +
90491 + error = alloc_and_copy_string(&rtmp->rolename, GR_SPROLE_LEN);
90492 + if (error)
90493 + return error;
90494 +
90495 + if (!rlast) {
90496 + rtmp->prev = NULL;
90497 + rolep->transitions = rtmp;
90498 + } else {
90499 + rlast->next = rtmp;
90500 + rtmp->prev = rlast;
90501 + }
90502 +
90503 + if (!rusertp)
90504 + rtmp->next = NULL;
90505 + }
90506 +
90507 + return 0;
90508 +}
90509 +
90510 +static __u32 count_user_objs(const struct acl_object_label __user *userp)
90511 +{
90512 + struct acl_object_label o_tmp;
90513 + __u32 num = 0;
90514 +
90515 + while (userp) {
90516 + if (copy_acl_object_label(&o_tmp, userp))
90517 + break;
90518 +
90519 + userp = o_tmp.prev;
90520 + num++;
90521 + }
90522 +
90523 + return num;
90524 +}
90525 +
90526 +static struct acl_subject_label *
90527 +do_copy_user_subj(struct acl_subject_label *userp, struct acl_role_label *role, int *already_copied)
90528 +{
90529 + struct acl_subject_label *s_tmp = NULL, *s_tmp2;
90530 + __u32 num_objs;
90531 + struct acl_ip_label **i_tmp, *i_utmp2;
90532 + struct gr_hash_struct ghash;
90533 + struct subject_map *subjmap;
90534 + unsigned int i_num;
90535 + int err;
90536 +
90537 + if (already_copied != NULL)
90538 + *already_copied = 0;
90539 +
90540 + s_tmp = lookup_subject_map(userp);
90541 +
90542 + /* we've already copied this subject into the kernel, just return
90543 + the reference to it, and don't copy it over again
90544 + */
90545 + if (s_tmp) {
90546 + if (already_copied != NULL)
90547 + *already_copied = 1;
90548 + return(s_tmp);
90549 + }
90550 +
90551 + if ((s_tmp = (struct acl_subject_label *)
90552 + acl_alloc(sizeof (struct acl_subject_label))) == NULL)
90553 + return ERR_PTR(-ENOMEM);
90554 +
90555 + subjmap = (struct subject_map *)kmalloc(sizeof (struct subject_map), GFP_KERNEL);
90556 + if (subjmap == NULL)
90557 + return ERR_PTR(-ENOMEM);
90558 +
90559 + subjmap->user = userp;
90560 + subjmap->kernel = s_tmp;
90561 + insert_subj_map_entry(subjmap);
90562 +
90563 + if (copy_acl_subject_label(s_tmp, userp))
90564 + return ERR_PTR(-EFAULT);
90565 +
90566 + err = alloc_and_copy_string(&s_tmp->filename, PATH_MAX);
90567 + if (err)
90568 + return ERR_PTR(err);
90569 +
90570 + if (!strcmp(s_tmp->filename, "/"))
90571 + role->root_label = s_tmp;
90572 +
90573 + if (copy_gr_hash_struct(&ghash, s_tmp->hash))
90574 + return ERR_PTR(-EFAULT);
90575 +
90576 + /* copy user and group transition tables */
90577 +
90578 + if (s_tmp->user_trans_num) {
90579 + uid_t *uidlist;
90580 +
90581 + uidlist = (uid_t *)acl_alloc_num(s_tmp->user_trans_num, sizeof(uid_t));
90582 + if (uidlist == NULL)
90583 + return ERR_PTR(-ENOMEM);
90584 + if (copy_from_user(uidlist, s_tmp->user_transitions, s_tmp->user_trans_num * sizeof(uid_t)))
90585 + return ERR_PTR(-EFAULT);
90586 +
90587 + s_tmp->user_transitions = uidlist;
90588 + }
90589 +
90590 + if (s_tmp->group_trans_num) {
90591 + gid_t *gidlist;
90592 +
90593 + gidlist = (gid_t *)acl_alloc_num(s_tmp->group_trans_num, sizeof(gid_t));
90594 + if (gidlist == NULL)
90595 + return ERR_PTR(-ENOMEM);
90596 + if (copy_from_user(gidlist, s_tmp->group_transitions, s_tmp->group_trans_num * sizeof(gid_t)))
90597 + return ERR_PTR(-EFAULT);
90598 +
90599 + s_tmp->group_transitions = gidlist;
90600 + }
90601 +
90602 + /* set up object hash table */
90603 + num_objs = count_user_objs(ghash.first);
90604 +
90605 + s_tmp->obj_hash_size = num_objs;
90606 + s_tmp->obj_hash =
90607 + (struct acl_object_label **)
90608 + create_table(&(s_tmp->obj_hash_size), sizeof(void *));
90609 +
90610 + if (!s_tmp->obj_hash)
90611 + return ERR_PTR(-ENOMEM);
90612 +
90613 + memset(s_tmp->obj_hash, 0,
90614 + s_tmp->obj_hash_size *
90615 + sizeof (struct acl_object_label *));
90616 +
90617 + /* add in objects */
90618 + err = copy_user_objs(ghash.first, s_tmp, role);
90619 +
90620 + if (err)
90621 + return ERR_PTR(err);
90622 +
90623 + /* set pointer for parent subject */
90624 + if (s_tmp->parent_subject) {
90625 + s_tmp2 = do_copy_user_subj(s_tmp->parent_subject, role, NULL);
90626 +
90627 + if (IS_ERR(s_tmp2))
90628 + return s_tmp2;
90629 +
90630 + s_tmp->parent_subject = s_tmp2;
90631 + }
90632 +
90633 + /* add in ip acls */
90634 +
90635 + if (!s_tmp->ip_num) {
90636 + s_tmp->ips = NULL;
90637 + goto insert;
90638 + }
90639 +
90640 + i_tmp =
90641 + (struct acl_ip_label **) acl_alloc_num(s_tmp->ip_num,
90642 + sizeof (struct acl_ip_label *));
90643 +
90644 + if (!i_tmp)
90645 + return ERR_PTR(-ENOMEM);
90646 +
90647 + for (i_num = 0; i_num < s_tmp->ip_num; i_num++) {
90648 + *(i_tmp + i_num) =
90649 + (struct acl_ip_label *)
90650 + acl_alloc(sizeof (struct acl_ip_label));
90651 + if (!*(i_tmp + i_num))
90652 + return ERR_PTR(-ENOMEM);
90653 +
90654 + if (copy_pointer_from_array(&i_utmp2, i_num, s_tmp->ips))
90655 + return ERR_PTR(-EFAULT);
90656 +
90657 + if (copy_acl_ip_label(*(i_tmp + i_num), i_utmp2))
90658 + return ERR_PTR(-EFAULT);
90659 +
90660 + if ((*(i_tmp + i_num))->iface == NULL)
90661 + continue;
90662 +
90663 + err = alloc_and_copy_string(&(*(i_tmp + i_num))->iface, IFNAMSIZ);
90664 + if (err)
90665 + return ERR_PTR(err);
90666 + }
90667 +
90668 + s_tmp->ips = i_tmp;
90669 +
90670 +insert:
90671 + if (!insert_name_entry(s_tmp->filename, s_tmp->inode,
90672 + s_tmp->device, (s_tmp->mode & GR_DELETED) ? 1 : 0))
90673 + return ERR_PTR(-ENOMEM);
90674 +
90675 + return s_tmp;
90676 +}
90677 +
90678 +static int
90679 +copy_user_subjs(struct acl_subject_label *userp, struct acl_role_label *role)
90680 +{
90681 + struct acl_subject_label s_pre;
90682 + struct acl_subject_label * ret;
90683 + int err;
90684 +
90685 + while (userp) {
90686 + if (copy_acl_subject_label(&s_pre, userp))
90687 + return -EFAULT;
90688 +
90689 + ret = do_copy_user_subj(userp, role, NULL);
90690 +
90691 + err = PTR_ERR(ret);
90692 + if (IS_ERR(ret))
90693 + return err;
90694 +
90695 + insert_acl_subj_label(ret, role);
90696 +
90697 + userp = s_pre.prev;
90698 + }
90699 +
90700 + return 0;
90701 +}
90702 +
90703 +static int
90704 +copy_user_acl(struct gr_arg *arg)
90705 +{
90706 + struct acl_role_label *r_tmp = NULL, **r_utmp, *r_utmp2;
90707 + struct acl_subject_label *subj_list;
90708 + struct sprole_pw *sptmp;
90709 + struct gr_hash_struct *ghash;
90710 + uid_t *domainlist;
90711 + unsigned int r_num;
90712 + int err = 0;
90713 + __u16 i;
90714 + __u32 num_subjs;
90715 +
90716 + /* we need a default and kernel role */
90717 + if (arg->role_db.num_roles < 2)
90718 + return -EINVAL;
90719 +
90720 + /* copy special role authentication info from userspace */
90721 +
90722 + polstate->num_sprole_pws = arg->num_sprole_pws;
90723 + polstate->acl_special_roles = (struct sprole_pw **) acl_alloc_num(polstate->num_sprole_pws, sizeof(struct sprole_pw *));
90724 +
90725 + if (!polstate->acl_special_roles && polstate->num_sprole_pws)
90726 + return -ENOMEM;
90727 +
90728 + for (i = 0; i < polstate->num_sprole_pws; i++) {
90729 + sptmp = (struct sprole_pw *) acl_alloc(sizeof(struct sprole_pw));
90730 + if (!sptmp)
90731 + return -ENOMEM;
90732 + if (copy_sprole_pw(sptmp, i, arg->sprole_pws))
90733 + return -EFAULT;
90734 +
90735 + err = alloc_and_copy_string((char **)&sptmp->rolename, GR_SPROLE_LEN);
90736 + if (err)
90737 + return err;
90738 +
90739 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
90740 + printk(KERN_ALERT "Copying special role %s\n", sptmp->rolename);
90741 +#endif
90742 +
90743 + polstate->acl_special_roles[i] = sptmp;
90744 + }
90745 +
90746 + r_utmp = (struct acl_role_label **) arg->role_db.r_table;
90747 +
90748 + for (r_num = 0; r_num < arg->role_db.num_roles; r_num++) {
90749 + r_tmp = acl_alloc(sizeof (struct acl_role_label));
90750 +
90751 + if (!r_tmp)
90752 + return -ENOMEM;
90753 +
90754 + if (copy_pointer_from_array(&r_utmp2, r_num, r_utmp))
90755 + return -EFAULT;
90756 +
90757 + if (copy_acl_role_label(r_tmp, r_utmp2))
90758 + return -EFAULT;
90759 +
90760 + err = alloc_and_copy_string(&r_tmp->rolename, GR_SPROLE_LEN);
90761 + if (err)
90762 + return err;
90763 +
90764 + if (!strcmp(r_tmp->rolename, "default")
90765 + && (r_tmp->roletype & GR_ROLE_DEFAULT)) {
90766 + polstate->default_role = r_tmp;
90767 + } else if (!strcmp(r_tmp->rolename, ":::kernel:::")) {
90768 + polstate->kernel_role = r_tmp;
90769 + }
90770 +
90771 + if ((ghash = (struct gr_hash_struct *) acl_alloc(sizeof(struct gr_hash_struct))) == NULL)
90772 + return -ENOMEM;
90773 +
90774 + if (copy_gr_hash_struct(ghash, r_tmp->hash))
90775 + return -EFAULT;
90776 +
90777 + r_tmp->hash = ghash;
90778 +
90779 + num_subjs = count_user_subjs(r_tmp->hash->first);
90780 +
90781 + r_tmp->subj_hash_size = num_subjs;
90782 + r_tmp->subj_hash =
90783 + (struct acl_subject_label **)
90784 + create_table(&(r_tmp->subj_hash_size), sizeof(void *));
90785 +
90786 + if (!r_tmp->subj_hash)
90787 + return -ENOMEM;
90788 +
90789 + err = copy_user_allowedips(r_tmp);
90790 + if (err)
90791 + return err;
90792 +
90793 + /* copy domain info */
90794 + if (r_tmp->domain_children != NULL) {
90795 + domainlist = acl_alloc_num(r_tmp->domain_child_num, sizeof(uid_t));
90796 + if (domainlist == NULL)
90797 + return -ENOMEM;
90798 +
90799 + if (copy_from_user(domainlist, r_tmp->domain_children, r_tmp->domain_child_num * sizeof(uid_t)))
90800 + return -EFAULT;
90801 +
90802 + r_tmp->domain_children = domainlist;
90803 + }
90804 +
90805 + err = copy_user_transitions(r_tmp);
90806 + if (err)
90807 + return err;
90808 +
90809 + memset(r_tmp->subj_hash, 0,
90810 + r_tmp->subj_hash_size *
90811 + sizeof (struct acl_subject_label *));
90812 +
90813 + /* acquire the list of subjects, then NULL out
90814 + the list prior to parsing the subjects for this role,
90815 + as during this parsing the list is replaced with a list
90816 + of *nested* subjects for the role
90817 + */
90818 + subj_list = r_tmp->hash->first;
90819 +
90820 + /* set nested subject list to null */
90821 + r_tmp->hash->first = NULL;
90822 +
90823 + err = copy_user_subjs(subj_list, r_tmp);
90824 +
90825 + if (err)
90826 + return err;
90827 +
90828 + insert_acl_role_label(r_tmp);
90829 + }
90830 +
90831 + if (polstate->default_role == NULL || polstate->kernel_role == NULL)
90832 + return -EINVAL;
90833 +
90834 + return err;
90835 +}
90836 +
90837 +static int gracl_reload_apply_policies(void *reload)
90838 +{
90839 + struct gr_reload_state *reload_state = (struct gr_reload_state *)reload;
90840 + struct task_struct *task, *task2;
90841 + struct acl_role_label *role, *rtmp;
90842 + struct acl_subject_label *subj;
90843 + const struct cred *cred;
90844 + int role_applied;
90845 + int ret = 0;
90846 +
90847 + memcpy(&reload_state->oldpolicy, reload_state->oldpolicy_ptr, sizeof(struct gr_policy_state));
90848 + memcpy(&reload_state->oldalloc, reload_state->oldalloc_ptr, sizeof(struct gr_alloc_state));
90849 +
90850 + /* first make sure we'll be able to apply the new policy cleanly */
90851 + do_each_thread(task2, task) {
90852 + if (task->exec_file == NULL)
90853 + continue;
90854 + role_applied = 0;
90855 + if (!reload_state->oldmode && task->role->roletype & GR_ROLE_SPECIAL) {
90856 + /* preserve special roles */
90857 + FOR_EACH_ROLE_START(role)
90858 + if ((role->roletype & GR_ROLE_SPECIAL) && !strcmp(task->role->rolename, role->rolename)) {
90859 + rtmp = task->role;
90860 + task->role = role;
90861 + role_applied = 1;
90862 + break;
90863 + }
90864 + FOR_EACH_ROLE_END(role)
90865 + }
90866 + if (!role_applied) {
90867 + cred = __task_cred(task);
90868 + rtmp = task->role;
90869 + task->role = __lookup_acl_role_label(polstate, task, GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid));
90870 + }
90871 + /* this handles non-nested inherited subjects, nested subjects will still
90872 + be dropped currently */
90873 + subj = __gr_get_subject_for_task(polstate, task, task->acl->filename, 1);
90874 + task->tmpacl = __gr_get_subject_for_task(polstate, task, NULL, 1);
90875 + /* change the role back so that we've made no modifications to the policy */
90876 + task->role = rtmp;
90877 +
90878 + if (subj == NULL || task->tmpacl == NULL) {
90879 + ret = -EINVAL;
90880 + goto out;
90881 + }
90882 + } while_each_thread(task2, task);
90883 +
90884 + /* now actually apply the policy */
90885 +
90886 + do_each_thread(task2, task) {
90887 + if (task->exec_file) {
90888 + role_applied = 0;
90889 + if (!reload_state->oldmode && task->role->roletype & GR_ROLE_SPECIAL) {
90890 + /* preserve special roles */
90891 + FOR_EACH_ROLE_START(role)
90892 + if ((role->roletype & GR_ROLE_SPECIAL) && !strcmp(task->role->rolename, role->rolename)) {
90893 + task->role = role;
90894 + role_applied = 1;
90895 + break;
90896 + }
90897 + FOR_EACH_ROLE_END(role)
90898 + }
90899 + if (!role_applied) {
90900 + cred = __task_cred(task);
90901 + task->role = __lookup_acl_role_label(polstate, task, GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid));
90902 + }
90903 + /* this handles non-nested inherited subjects, nested subjects will still
90904 + be dropped currently */
90905 + if (!reload_state->oldmode && task->inherited)
90906 + subj = __gr_get_subject_for_task(polstate, task, task->acl->filename, 1);
90907 + else {
90908 + /* looked up and tagged to the task previously */
90909 + subj = task->tmpacl;
90910 + }
90911 + /* subj will be non-null */
90912 + __gr_apply_subject_to_task(polstate, task, subj);
90913 + if (reload_state->oldmode) {
90914 + task->acl_role_id = 0;
90915 + task->acl_sp_role = 0;
90916 + task->inherited = 0;
90917 + }
90918 + } else {
90919 + // it's a kernel process
90920 + task->role = polstate->kernel_role;
90921 + task->acl = polstate->kernel_role->root_label;
90922 +#ifdef CONFIG_GRKERNSEC_ACL_HIDEKERN
90923 + task->acl->mode &= ~GR_PROCFIND;
90924 +#endif
90925 + }
90926 + } while_each_thread(task2, task);
90927 +
90928 + memcpy(reload_state->oldpolicy_ptr, &reload_state->newpolicy, sizeof(struct gr_policy_state));
90929 + memcpy(reload_state->oldalloc_ptr, &reload_state->newalloc, sizeof(struct gr_alloc_state));
90930 +
90931 +out:
90932 +
90933 + return ret;
90934 +}
90935 +
90936 +static int gracl_reload(struct gr_arg *args, unsigned char oldmode)
90937 +{
90938 + struct gr_reload_state new_reload_state = { };
90939 + int err;
90940 +
90941 + new_reload_state.oldpolicy_ptr = polstate;
90942 + new_reload_state.oldalloc_ptr = current_alloc_state;
90943 + new_reload_state.oldmode = oldmode;
90944 +
90945 + current_alloc_state = &new_reload_state.newalloc;
90946 + polstate = &new_reload_state.newpolicy;
90947 +
90948 + /* everything relevant is now saved off, copy in the new policy */
90949 + if (init_variables(args, true)) {
90950 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_INITF_ACL_MSG, GR_VERSION);
90951 + err = -ENOMEM;
90952 + goto error;
90953 + }
90954 +
90955 + err = copy_user_acl(args);
90956 + free_init_variables();
90957 + if (err)
90958 + goto error;
90959 + /* the new policy is copied in, with the old policy available via saved_state
90960 + first go through applying roles, making sure to preserve special roles
90961 + then apply new subjects, making sure to preserve inherited and nested subjects,
90962 + though currently only inherited subjects will be preserved
90963 + */
90964 + err = stop_machine(gracl_reload_apply_policies, &new_reload_state, NULL);
90965 + if (err)
90966 + goto error;
90967 +
90968 + /* we've now applied the new policy, so restore the old policy state to free it */
90969 + polstate = &new_reload_state.oldpolicy;
90970 + current_alloc_state = &new_reload_state.oldalloc;
90971 + free_variables(true);
90972 +
90973 + /* oldpolicy/oldalloc_ptr point to the new policy/alloc states as they were copied
90974 + to running_polstate/current_alloc_state inside stop_machine
90975 + */
90976 + err = 0;
90977 + goto out;
90978 +error:
90979 + /* on error of loading the new policy, we'll just keep the previous
90980 + policy set around
90981 + */
90982 + free_variables(true);
90983 +
90984 + /* doesn't affect runtime, but maintains consistent state */
90985 +out:
90986 + polstate = new_reload_state.oldpolicy_ptr;
90987 + current_alloc_state = new_reload_state.oldalloc_ptr;
90988 +
90989 + return err;
90990 +}
90991 +
90992 +static int
90993 +gracl_init(struct gr_arg *args)
90994 +{
90995 + int error = 0;
90996 +
90997 + memcpy(gr_system_salt, args->salt, GR_SALT_LEN);
90998 + memcpy(gr_system_sum, args->sum, GR_SHA_LEN);
90999 +
91000 + if (init_variables(args, false)) {
91001 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_INITF_ACL_MSG, GR_VERSION);
91002 + error = -ENOMEM;
91003 + goto out;
91004 + }
91005 +
91006 + error = copy_user_acl(args);
91007 + free_init_variables();
91008 + if (error)
91009 + goto out;
91010 +
91011 + error = gr_set_acls(0);
91012 + if (error)
91013 + goto out;
91014 +
91015 + gr_enable_rbac_system();
91016 +
91017 + return 0;
91018 +
91019 +out:
91020 + free_variables(false);
91021 + return error;
91022 +}
91023 +
91024 +static int
91025 +lookup_special_role_auth(__u16 mode, const char *rolename, unsigned char **salt,
91026 + unsigned char **sum)
91027 +{
91028 + struct acl_role_label *r;
91029 + struct role_allowed_ip *ipp;
91030 + struct role_transition *trans;
91031 + unsigned int i;
91032 + int found = 0;
91033 + u32 curr_ip = current->signal->curr_ip;
91034 +
91035 + current->signal->saved_ip = curr_ip;
91036 +
91037 + /* check transition table */
91038 +
91039 + for (trans = current->role->transitions; trans; trans = trans->next) {
91040 + if (!strcmp(rolename, trans->rolename)) {
91041 + found = 1;
91042 + break;
91043 + }
91044 + }
91045 +
91046 + if (!found)
91047 + return 0;
91048 +
91049 + /* handle special roles that do not require authentication
91050 + and check ip */
91051 +
91052 + FOR_EACH_ROLE_START(r)
91053 + if (!strcmp(rolename, r->rolename) &&
91054 + (r->roletype & GR_ROLE_SPECIAL)) {
91055 + found = 0;
91056 + if (r->allowed_ips != NULL) {
91057 + for (ipp = r->allowed_ips; ipp; ipp = ipp->next) {
91058 + if ((ntohl(curr_ip) & ipp->netmask) ==
91059 + (ntohl(ipp->addr) & ipp->netmask))
91060 + found = 1;
91061 + }
91062 + } else
91063 + found = 2;
91064 + if (!found)
91065 + return 0;
91066 +
91067 + if (((mode == GR_SPROLE) && (r->roletype & GR_ROLE_NOPW)) ||
91068 + ((mode == GR_SPROLEPAM) && (r->roletype & GR_ROLE_PAM))) {
91069 + *salt = NULL;
91070 + *sum = NULL;
91071 + return 1;
91072 + }
91073 + }
91074 + FOR_EACH_ROLE_END(r)
91075 +
91076 + for (i = 0; i < polstate->num_sprole_pws; i++) {
91077 + if (!strcmp(rolename, polstate->acl_special_roles[i]->rolename)) {
91078 + *salt = polstate->acl_special_roles[i]->salt;
91079 + *sum = polstate->acl_special_roles[i]->sum;
91080 + return 1;
91081 + }
91082 + }
91083 +
91084 + return 0;
91085 +}
91086 +
91087 +int gr_check_secure_terminal(struct task_struct *task)
91088 +{
91089 + struct task_struct *p, *p2, *p3;
91090 + struct files_struct *files;
91091 + struct fdtable *fdt;
91092 + struct file *our_file = NULL, *file;
91093 + struct inode *our_inode = NULL;
91094 + int i;
91095 +
91096 + if (task->signal->tty == NULL)
91097 + return 1;
91098 +
91099 + files = get_files_struct(task);
91100 + if (files != NULL) {
91101 + rcu_read_lock();
91102 + fdt = files_fdtable(files);
91103 + for (i=0; i < fdt->max_fds; i++) {
91104 + file = fcheck_files(files, i);
91105 + if (file && (our_file == NULL) && (file->private_data == task->signal->tty)) {
91106 + get_file(file);
91107 + our_file = file;
91108 + }
91109 + }
91110 + rcu_read_unlock();
91111 + put_files_struct(files);
91112 + }
91113 +
91114 + if (our_file == NULL)
91115 + return 1;
91116 +
91117 + our_inode = d_backing_inode(our_file->f_path.dentry);
91118 +
91119 + read_lock(&tasklist_lock);
91120 + do_each_thread(p2, p) {
91121 + files = get_files_struct(p);
91122 + if (files == NULL ||
91123 + (p->signal && p->signal->tty == task->signal->tty)) {
91124 + if (files != NULL)
91125 + put_files_struct(files);
91126 + continue;
91127 + }
91128 + rcu_read_lock();
91129 + fdt = files_fdtable(files);
91130 + for (i=0; i < fdt->max_fds; i++) {
91131 + struct inode *inode = NULL;
91132 + file = fcheck_files(files, i);
91133 + if (file)
91134 + inode = d_backing_inode(file->f_path.dentry);
91135 + if (inode && S_ISCHR(inode->i_mode) && inode->i_rdev == our_inode->i_rdev) {
91136 + p3 = task;
91137 + while (task_pid_nr(p3) > 0) {
91138 + if (p3 == p)
91139 + break;
91140 + p3 = p3->real_parent;
91141 + }
91142 + if (p3 == p)
91143 + break;
91144 + gr_log_ttysniff(GR_DONT_AUDIT_GOOD, GR_TTYSNIFF_ACL_MSG, p);
91145 + gr_handle_alertkill(p);
91146 + rcu_read_unlock();
91147 + put_files_struct(files);
91148 + read_unlock(&tasklist_lock);
91149 + fput(our_file);
91150 + return 0;
91151 + }
91152 + }
91153 + rcu_read_unlock();
91154 + put_files_struct(files);
91155 + } while_each_thread(p2, p);
91156 + read_unlock(&tasklist_lock);
91157 +
91158 + fput(our_file);
91159 + return 1;
91160 +}
91161 +
91162 +ssize_t
91163 +write_grsec_handler(struct file *file, const char __user * buf, size_t count, loff_t *ppos)
91164 +{
91165 + struct gr_arg_wrapper uwrap;
91166 + unsigned char *sprole_salt = NULL;
91167 + unsigned char *sprole_sum = NULL;
91168 + int error = 0;
91169 + int error2 = 0;
91170 + size_t req_count = 0;
91171 + unsigned char oldmode = 0;
91172 +
91173 + mutex_lock(&gr_dev_mutex);
91174 +
91175 + if (gr_acl_is_enabled() && !(current->acl->mode & GR_KERNELAUTH)) {
91176 + error = -EPERM;
91177 + goto out;
91178 + }
91179 +
91180 +#ifdef CONFIG_COMPAT
91181 + pax_open_kernel();
91182 + if (is_compat_task()) {
91183 + copy_gr_arg_wrapper = &copy_gr_arg_wrapper_compat;
91184 + copy_gr_arg = &copy_gr_arg_compat;
91185 + copy_acl_object_label = &copy_acl_object_label_compat;
91186 + copy_acl_subject_label = &copy_acl_subject_label_compat;
91187 + copy_acl_role_label = &copy_acl_role_label_compat;
91188 + copy_acl_ip_label = &copy_acl_ip_label_compat;
91189 + copy_role_allowed_ip = &copy_role_allowed_ip_compat;
91190 + copy_role_transition = &copy_role_transition_compat;
91191 + copy_sprole_pw = &copy_sprole_pw_compat;
91192 + copy_gr_hash_struct = &copy_gr_hash_struct_compat;
91193 + copy_pointer_from_array = &copy_pointer_from_array_compat;
91194 + get_gr_arg_wrapper_size = &get_gr_arg_wrapper_size_compat;
91195 + } else {
91196 + copy_gr_arg_wrapper = &copy_gr_arg_wrapper_normal;
91197 + copy_gr_arg = &copy_gr_arg_normal;
91198 + copy_acl_object_label = &copy_acl_object_label_normal;
91199 + copy_acl_subject_label = &copy_acl_subject_label_normal;
91200 + copy_acl_role_label = &copy_acl_role_label_normal;
91201 + copy_acl_ip_label = &copy_acl_ip_label_normal;
91202 + copy_role_allowed_ip = &copy_role_allowed_ip_normal;
91203 + copy_role_transition = &copy_role_transition_normal;
91204 + copy_sprole_pw = &copy_sprole_pw_normal;
91205 + copy_gr_hash_struct = &copy_gr_hash_struct_normal;
91206 + copy_pointer_from_array = &copy_pointer_from_array_normal;
91207 + get_gr_arg_wrapper_size = &get_gr_arg_wrapper_size_normal;
91208 + }
91209 + pax_close_kernel();
91210 +#endif
91211 +
91212 + req_count = get_gr_arg_wrapper_size();
91213 +
91214 + if (count != req_count) {
91215 + gr_log_int_int(GR_DONT_AUDIT_GOOD, GR_DEV_ACL_MSG, (int)count, (int)req_count);
91216 + error = -EINVAL;
91217 + goto out;
91218 + }
91219 +
91220 +
91221 + if (gr_auth_expires && time_after_eq(get_seconds(), gr_auth_expires)) {
91222 + gr_auth_expires = 0;
91223 + gr_auth_attempts = 0;
91224 + }
91225 +
91226 + error = copy_gr_arg_wrapper(buf, &uwrap);
91227 + if (error)
91228 + goto out;
91229 +
91230 + error = copy_gr_arg(uwrap.arg, gr_usermode);
91231 + if (error)
91232 + goto out;
91233 +
91234 + if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_SPROLEPAM &&
91235 + gr_auth_attempts >= CONFIG_GRKERNSEC_ACL_MAXTRIES &&
91236 + time_after(gr_auth_expires, get_seconds())) {
91237 + error = -EBUSY;
91238 + goto out;
91239 + }
91240 +
91241 + /* if non-root trying to do anything other than use a special role,
91242 + do not attempt authentication, do not count towards authentication
91243 + locking
91244 + */
91245 +
91246 + if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_STATUS &&
91247 + gr_usermode->mode != GR_UNSPROLE && gr_usermode->mode != GR_SPROLEPAM &&
91248 + gr_is_global_nonroot(current_uid())) {
91249 + error = -EPERM;
91250 + goto out;
91251 + }
91252 +
91253 + /* ensure pw and special role name are null terminated */
91254 +
91255 + gr_usermode->pw[GR_PW_LEN - 1] = '\0';
91256 + gr_usermode->sp_role[GR_SPROLE_LEN - 1] = '\0';
91257 +
91258 + /* Okay.
91259 + * We have our enough of the argument structure..(we have yet
91260 + * to copy_from_user the tables themselves) . Copy the tables
91261 + * only if we need them, i.e. for loading operations. */
91262 +
91263 + switch (gr_usermode->mode) {
91264 + case GR_STATUS:
91265 + if (gr_acl_is_enabled()) {
91266 + error = 1;
91267 + if (!gr_check_secure_terminal(current))
91268 + error = 3;
91269 + } else
91270 + error = 2;
91271 + goto out;
91272 + case GR_SHUTDOWN:
91273 + if (gr_acl_is_enabled() && !(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
91274 + stop_machine(gr_rbac_disable, NULL, NULL);
91275 + free_variables(false);
91276 + memset(gr_usermode, 0, sizeof(struct gr_arg));
91277 + memset(gr_system_salt, 0, GR_SALT_LEN);
91278 + memset(gr_system_sum, 0, GR_SHA_LEN);
91279 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SHUTS_ACL_MSG);
91280 + } else if (gr_acl_is_enabled()) {
91281 + gr_log_noargs(GR_DONT_AUDIT, GR_SHUTF_ACL_MSG);
91282 + error = -EPERM;
91283 + } else {
91284 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SHUTI_ACL_MSG);
91285 + error = -EAGAIN;
91286 + }
91287 + break;
91288 + case GR_ENABLE:
91289 + if (!gr_acl_is_enabled() && !(error2 = gracl_init(gr_usermode)))
91290 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_ENABLE_ACL_MSG, GR_VERSION);
91291 + else {
91292 + if (gr_acl_is_enabled())
91293 + error = -EAGAIN;
91294 + else
91295 + error = error2;
91296 + gr_log_str(GR_DONT_AUDIT, GR_ENABLEF_ACL_MSG, GR_VERSION);
91297 + }
91298 + break;
91299 + case GR_OLDRELOAD:
91300 + oldmode = 1;
91301 + case GR_RELOAD:
91302 + if (!gr_acl_is_enabled()) {
91303 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOADI_ACL_MSG, GR_VERSION);
91304 + error = -EAGAIN;
91305 + } else if (!(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
91306 + error2 = gracl_reload(gr_usermode, oldmode);
91307 + if (!error2)
91308 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOAD_ACL_MSG, GR_VERSION);
91309 + else {
91310 + gr_log_str(GR_DONT_AUDIT, GR_RELOADF_ACL_MSG, GR_VERSION);
91311 + error = error2;
91312 + }
91313 + } else {
91314 + gr_log_str(GR_DONT_AUDIT, GR_RELOADF_ACL_MSG, GR_VERSION);
91315 + error = -EPERM;
91316 + }
91317 + break;
91318 + case GR_SEGVMOD:
91319 + if (unlikely(!gr_acl_is_enabled())) {
91320 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SEGVMODI_ACL_MSG);
91321 + error = -EAGAIN;
91322 + break;
91323 + }
91324 +
91325 + if (!(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
91326 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SEGVMODS_ACL_MSG);
91327 + if (gr_usermode->segv_device && gr_usermode->segv_inode) {
91328 + struct acl_subject_label *segvacl;
91329 + segvacl =
91330 + lookup_acl_subj_label(gr_usermode->segv_inode,
91331 + gr_usermode->segv_device,
91332 + current->role);
91333 + if (segvacl) {
91334 + segvacl->crashes = 0;
91335 + segvacl->expires = 0;
91336 + }
91337 + } else if (gr_find_uid(gr_usermode->segv_uid) >= 0) {
91338 + gr_remove_uid(gr_usermode->segv_uid);
91339 + }
91340 + } else {
91341 + gr_log_noargs(GR_DONT_AUDIT, GR_SEGVMODF_ACL_MSG);
91342 + error = -EPERM;
91343 + }
91344 + break;
91345 + case GR_SPROLE:
91346 + case GR_SPROLEPAM:
91347 + if (unlikely(!gr_acl_is_enabled())) {
91348 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SPROLEI_ACL_MSG);
91349 + error = -EAGAIN;
91350 + break;
91351 + }
91352 +
91353 + if (current->role->expires && time_after_eq(get_seconds(), current->role->expires)) {
91354 + current->role->expires = 0;
91355 + current->role->auth_attempts = 0;
91356 + }
91357 +
91358 + if (current->role->auth_attempts >= CONFIG_GRKERNSEC_ACL_MAXTRIES &&
91359 + time_after(current->role->expires, get_seconds())) {
91360 + error = -EBUSY;
91361 + goto out;
91362 + }
91363 +
91364 + if (lookup_special_role_auth
91365 + (gr_usermode->mode, gr_usermode->sp_role, &sprole_salt, &sprole_sum)
91366 + && ((!sprole_salt && !sprole_sum)
91367 + || !(chkpw(gr_usermode, sprole_salt, sprole_sum)))) {
91368 + char *p = "";
91369 + assign_special_role(gr_usermode->sp_role);
91370 + read_lock(&tasklist_lock);
91371 + if (current->real_parent)
91372 + p = current->real_parent->role->rolename;
91373 + read_unlock(&tasklist_lock);
91374 + gr_log_str_int(GR_DONT_AUDIT_GOOD, GR_SPROLES_ACL_MSG,
91375 + p, acl_sp_role_value);
91376 + } else {
91377 + gr_log_str(GR_DONT_AUDIT, GR_SPROLEF_ACL_MSG, gr_usermode->sp_role);
91378 + error = -EPERM;
91379 + if(!(current->role->auth_attempts++))
91380 + current->role->expires = get_seconds() + CONFIG_GRKERNSEC_ACL_TIMEOUT;
91381 +
91382 + goto out;
91383 + }
91384 + break;
91385 + case GR_UNSPROLE:
91386 + if (unlikely(!gr_acl_is_enabled())) {
91387 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_UNSPROLEI_ACL_MSG);
91388 + error = -EAGAIN;
91389 + break;
91390 + }
91391 +
91392 + if (current->role->roletype & GR_ROLE_SPECIAL) {
91393 + char *p = "";
91394 + int i = 0;
91395 +
91396 + read_lock(&tasklist_lock);
91397 + if (current->real_parent) {
91398 + p = current->real_parent->role->rolename;
91399 + i = current->real_parent->acl_role_id;
91400 + }
91401 + read_unlock(&tasklist_lock);
91402 +
91403 + gr_log_str_int(GR_DONT_AUDIT_GOOD, GR_UNSPROLES_ACL_MSG, p, i);
91404 + gr_set_acls(1);
91405 + } else {
91406 + error = -EPERM;
91407 + goto out;
91408 + }
91409 + break;
91410 + default:
91411 + gr_log_int(GR_DONT_AUDIT, GR_INVMODE_ACL_MSG, gr_usermode->mode);
91412 + error = -EINVAL;
91413 + break;
91414 + }
91415 +
91416 + if (error != -EPERM)
91417 + goto out;
91418 +
91419 + if(!(gr_auth_attempts++))
91420 + gr_auth_expires = get_seconds() + CONFIG_GRKERNSEC_ACL_TIMEOUT;
91421 +
91422 + out:
91423 + mutex_unlock(&gr_dev_mutex);
91424 +
91425 + if (!error)
91426 + error = req_count;
91427 +
91428 + return error;
91429 +}
91430 +
91431 +int
91432 +gr_set_acls(const int type)
91433 +{
91434 + struct task_struct *task, *task2;
91435 + struct acl_role_label *role = current->role;
91436 + struct acl_subject_label *subj;
91437 + __u16 acl_role_id = current->acl_role_id;
91438 + const struct cred *cred;
91439 + int ret;
91440 +
91441 + rcu_read_lock();
91442 + read_lock(&tasklist_lock);
91443 + read_lock(&grsec_exec_file_lock);
91444 + do_each_thread(task2, task) {
91445 + /* check to see if we're called from the exit handler,
91446 + if so, only replace ACLs that have inherited the admin
91447 + ACL */
91448 +
91449 + if (type && (task->role != role ||
91450 + task->acl_role_id != acl_role_id))
91451 + continue;
91452 +
91453 + task->acl_role_id = 0;
91454 + task->acl_sp_role = 0;
91455 + task->inherited = 0;
91456 +
91457 + if (task->exec_file) {
91458 + cred = __task_cred(task);
91459 + task->role = __lookup_acl_role_label(polstate, task, GR_GLOBAL_UID(cred->uid), GR_GLOBAL_GID(cred->gid));
91460 + subj = __gr_get_subject_for_task(polstate, task, NULL, 1);
91461 + if (subj == NULL) {
91462 + ret = -EINVAL;
91463 + read_unlock(&grsec_exec_file_lock);
91464 + read_unlock(&tasklist_lock);
91465 + rcu_read_unlock();
91466 + gr_log_str_int(GR_DONT_AUDIT_GOOD, GR_DEFACL_MSG, task->comm, task_pid_nr(task));
91467 + return ret;
91468 + }
91469 + __gr_apply_subject_to_task(polstate, task, subj);
91470 + } else {
91471 + // it's a kernel process
91472 + task->role = polstate->kernel_role;
91473 + task->acl = polstate->kernel_role->root_label;
91474 +#ifdef CONFIG_GRKERNSEC_ACL_HIDEKERN
91475 + task->acl->mode &= ~GR_PROCFIND;
91476 +#endif
91477 + }
91478 + } while_each_thread(task2, task);
91479 + read_unlock(&grsec_exec_file_lock);
91480 + read_unlock(&tasklist_lock);
91481 + rcu_read_unlock();
91482 +
91483 + return 0;
91484 +}
91485 diff --git a/grsecurity/gracl_res.c b/grsecurity/gracl_res.c
91486 new file mode 100644
91487 index 0000000..39645c9
91488 --- /dev/null
91489 +++ b/grsecurity/gracl_res.c
91490 @@ -0,0 +1,68 @@
91491 +#include <linux/kernel.h>
91492 +#include <linux/sched.h>
91493 +#include <linux/gracl.h>
91494 +#include <linux/grinternal.h>
91495 +
91496 +static const char *restab_log[] = {
91497 + [RLIMIT_CPU] = "RLIMIT_CPU",
91498 + [RLIMIT_FSIZE] = "RLIMIT_FSIZE",
91499 + [RLIMIT_DATA] = "RLIMIT_DATA",
91500 + [RLIMIT_STACK] = "RLIMIT_STACK",
91501 + [RLIMIT_CORE] = "RLIMIT_CORE",
91502 + [RLIMIT_RSS] = "RLIMIT_RSS",
91503 + [RLIMIT_NPROC] = "RLIMIT_NPROC",
91504 + [RLIMIT_NOFILE] = "RLIMIT_NOFILE",
91505 + [RLIMIT_MEMLOCK] = "RLIMIT_MEMLOCK",
91506 + [RLIMIT_AS] = "RLIMIT_AS",
91507 + [RLIMIT_LOCKS] = "RLIMIT_LOCKS",
91508 + [RLIMIT_SIGPENDING] = "RLIMIT_SIGPENDING",
91509 + [RLIMIT_MSGQUEUE] = "RLIMIT_MSGQUEUE",
91510 + [RLIMIT_NICE] = "RLIMIT_NICE",
91511 + [RLIMIT_RTPRIO] = "RLIMIT_RTPRIO",
91512 + [RLIMIT_RTTIME] = "RLIMIT_RTTIME",
91513 + [GR_CRASH_RES] = "RLIMIT_CRASH"
91514 +};
91515 +
91516 +void
91517 +gr_log_resource(const struct task_struct *task,
91518 + const int res, const unsigned long wanted, const int gt)
91519 +{
91520 + const struct cred *cred;
91521 + unsigned long rlim;
91522 +
91523 + if (!gr_acl_is_enabled() && !grsec_resource_logging)
91524 + return;
91525 +
91526 + // not yet supported resource
91527 + if (unlikely(!restab_log[res]))
91528 + return;
91529 +
91530 + if (res == RLIMIT_CPU || res == RLIMIT_RTTIME)
91531 + rlim = task_rlimit_max(task, res);
91532 + else
91533 + rlim = task_rlimit(task, res);
91534 +
91535 + if (likely((rlim == RLIM_INFINITY) || (gt && wanted <= rlim) || (!gt && wanted < rlim)))
91536 + return;
91537 +
91538 + rcu_read_lock();
91539 + cred = __task_cred(task);
91540 +
91541 + if (res == RLIMIT_NPROC &&
91542 + (cap_raised(cred->cap_effective, CAP_SYS_ADMIN) ||
91543 + cap_raised(cred->cap_effective, CAP_SYS_RESOURCE)))
91544 + goto out_rcu_unlock;
91545 + else if (res == RLIMIT_MEMLOCK &&
91546 + cap_raised(cred->cap_effective, CAP_IPC_LOCK))
91547 + goto out_rcu_unlock;
91548 + else if (res == RLIMIT_NICE && cap_raised(cred->cap_effective, CAP_SYS_NICE))
91549 + goto out_rcu_unlock;
91550 + rcu_read_unlock();
91551 +
91552 + gr_log_res_ulong2_str(GR_DONT_AUDIT, GR_RESOURCE_MSG, task, wanted, restab_log[res], rlim);
91553 +
91554 + return;
91555 +out_rcu_unlock:
91556 + rcu_read_unlock();
91557 + return;
91558 +}
91559 diff --git a/grsecurity/gracl_segv.c b/grsecurity/gracl_segv.c
91560 new file mode 100644
91561 index 0000000..21646aa
91562 --- /dev/null
91563 +++ b/grsecurity/gracl_segv.c
91564 @@ -0,0 +1,304 @@
91565 +#include <linux/kernel.h>
91566 +#include <linux/mm.h>
91567 +#include <asm/uaccess.h>
91568 +#include <asm/errno.h>
91569 +#include <asm/mman.h>
91570 +#include <net/sock.h>
91571 +#include <linux/file.h>
91572 +#include <linux/fs.h>
91573 +#include <linux/net.h>
91574 +#include <linux/in.h>
91575 +#include <linux/slab.h>
91576 +#include <linux/types.h>
91577 +#include <linux/sched.h>
91578 +#include <linux/timer.h>
91579 +#include <linux/gracl.h>
91580 +#include <linux/grsecurity.h>
91581 +#include <linux/grinternal.h>
91582 +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE)
91583 +#include <linux/magic.h>
91584 +#include <linux/pagemap.h>
91585 +#include "../fs/btrfs/async-thread.h"
91586 +#include "../fs/btrfs/ctree.h"
91587 +#include "../fs/btrfs/btrfs_inode.h"
91588 +#endif
91589 +
91590 +static struct crash_uid *uid_set;
91591 +static unsigned short uid_used;
91592 +static DEFINE_SPINLOCK(gr_uid_lock);
91593 +extern rwlock_t gr_inode_lock;
91594 +extern struct acl_subject_label *
91595 + lookup_acl_subj_label(const u64 inode, const dev_t dev,
91596 + struct acl_role_label *role);
91597 +
91598 +int
91599 +gr_init_uidset(void)
91600 +{
91601 + uid_set =
91602 + kmalloc(GR_UIDTABLE_MAX * sizeof (struct crash_uid), GFP_KERNEL);
91603 + uid_used = 0;
91604 +
91605 + return uid_set ? 1 : 0;
91606 +}
91607 +
91608 +void
91609 +gr_free_uidset(void)
91610 +{
91611 + if (uid_set) {
91612 + struct crash_uid *tmpset;
91613 + spin_lock(&gr_uid_lock);
91614 + tmpset = uid_set;
91615 + uid_set = NULL;
91616 + uid_used = 0;
91617 + spin_unlock(&gr_uid_lock);
91618 + if (tmpset)
91619 + kfree(tmpset);
91620 + }
91621 +
91622 + return;
91623 +}
91624 +
91625 +int
91626 +gr_find_uid(const uid_t uid)
91627 +{
91628 + struct crash_uid *tmp = uid_set;
91629 + uid_t buid;
91630 + int low = 0, high = uid_used - 1, mid;
91631 +
91632 + while (high >= low) {
91633 + mid = (low + high) >> 1;
91634 + buid = tmp[mid].uid;
91635 + if (buid == uid)
91636 + return mid;
91637 + if (buid > uid)
91638 + high = mid - 1;
91639 + if (buid < uid)
91640 + low = mid + 1;
91641 + }
91642 +
91643 + return -1;
91644 +}
91645 +
91646 +static void
91647 +gr_insertsort(void)
91648 +{
91649 + unsigned short i, j;
91650 + struct crash_uid index;
91651 +
91652 + for (i = 1; i < uid_used; i++) {
91653 + index = uid_set[i];
91654 + j = i;
91655 + while ((j > 0) && uid_set[j - 1].uid > index.uid) {
91656 + uid_set[j] = uid_set[j - 1];
91657 + j--;
91658 + }
91659 + uid_set[j] = index;
91660 + }
91661 +
91662 + return;
91663 +}
91664 +
91665 +static void
91666 +gr_insert_uid(const kuid_t kuid, const unsigned long expires)
91667 +{
91668 + int loc;
91669 + uid_t uid = GR_GLOBAL_UID(kuid);
91670 +
91671 + if (uid_used == GR_UIDTABLE_MAX)
91672 + return;
91673 +
91674 + loc = gr_find_uid(uid);
91675 +
91676 + if (loc >= 0) {
91677 + uid_set[loc].expires = expires;
91678 + return;
91679 + }
91680 +
91681 + uid_set[uid_used].uid = uid;
91682 + uid_set[uid_used].expires = expires;
91683 + uid_used++;
91684 +
91685 + gr_insertsort();
91686 +
91687 + return;
91688 +}
91689 +
91690 +void
91691 +gr_remove_uid(const unsigned short loc)
91692 +{
91693 + unsigned short i;
91694 +
91695 + for (i = loc + 1; i < uid_used; i++)
91696 + uid_set[i - 1] = uid_set[i];
91697 +
91698 + uid_used--;
91699 +
91700 + return;
91701 +}
91702 +
91703 +int
91704 +gr_check_crash_uid(const kuid_t kuid)
91705 +{
91706 + int loc;
91707 + int ret = 0;
91708 + uid_t uid;
91709 +
91710 + if (unlikely(!gr_acl_is_enabled()))
91711 + return 0;
91712 +
91713 + uid = GR_GLOBAL_UID(kuid);
91714 +
91715 + spin_lock(&gr_uid_lock);
91716 + loc = gr_find_uid(uid);
91717 +
91718 + if (loc < 0)
91719 + goto out_unlock;
91720 +
91721 + if (time_before_eq(uid_set[loc].expires, get_seconds()))
91722 + gr_remove_uid(loc);
91723 + else
91724 + ret = 1;
91725 +
91726 +out_unlock:
91727 + spin_unlock(&gr_uid_lock);
91728 + return ret;
91729 +}
91730 +
91731 +static int
91732 +proc_is_setxid(const struct cred *cred)
91733 +{
91734 + if (!uid_eq(cred->uid, cred->euid) || !uid_eq(cred->uid, cred->suid) ||
91735 + !uid_eq(cred->uid, cred->fsuid))
91736 + return 1;
91737 + if (!gid_eq(cred->gid, cred->egid) || !gid_eq(cred->gid, cred->sgid) ||
91738 + !gid_eq(cred->gid, cred->fsgid))
91739 + return 1;
91740 +
91741 + return 0;
91742 +}
91743 +
91744 +extern int gr_fake_force_sig(int sig, struct task_struct *t);
91745 +
91746 +void
91747 +gr_handle_crash(struct task_struct *task, const int sig)
91748 +{
91749 + struct acl_subject_label *curr;
91750 + struct task_struct *tsk, *tsk2;
91751 + const struct cred *cred;
91752 + const struct cred *cred2;
91753 +
91754 + if (sig != SIGSEGV && sig != SIGKILL && sig != SIGBUS && sig != SIGILL)
91755 + return;
91756 +
91757 + if (unlikely(!gr_acl_is_enabled()))
91758 + return;
91759 +
91760 + curr = task->acl;
91761 +
91762 + if (!(curr->resmask & (1U << GR_CRASH_RES)))
91763 + return;
91764 +
91765 + if (time_before_eq(curr->expires, get_seconds())) {
91766 + curr->expires = 0;
91767 + curr->crashes = 0;
91768 + }
91769 +
91770 + curr->crashes++;
91771 +
91772 + if (!curr->expires)
91773 + curr->expires = get_seconds() + curr->res[GR_CRASH_RES].rlim_max;
91774 +
91775 + if ((curr->crashes >= curr->res[GR_CRASH_RES].rlim_cur) &&
91776 + time_after(curr->expires, get_seconds())) {
91777 + rcu_read_lock();
91778 + cred = __task_cred(task);
91779 + if (gr_is_global_nonroot(cred->uid) && proc_is_setxid(cred)) {
91780 + gr_log_crash1(GR_DONT_AUDIT, GR_SEGVSTART_ACL_MSG, task, curr->res[GR_CRASH_RES].rlim_max);
91781 + spin_lock(&gr_uid_lock);
91782 + gr_insert_uid(cred->uid, curr->expires);
91783 + spin_unlock(&gr_uid_lock);
91784 + curr->expires = 0;
91785 + curr->crashes = 0;
91786 + read_lock(&tasklist_lock);
91787 + do_each_thread(tsk2, tsk) {
91788 + cred2 = __task_cred(tsk);
91789 + if (tsk != task && uid_eq(cred2->uid, cred->uid))
91790 + gr_fake_force_sig(SIGKILL, tsk);
91791 + } while_each_thread(tsk2, tsk);
91792 + read_unlock(&tasklist_lock);
91793 + } else {
91794 + gr_log_crash2(GR_DONT_AUDIT, GR_SEGVNOSUID_ACL_MSG, task, curr->res[GR_CRASH_RES].rlim_max);
91795 + read_lock(&tasklist_lock);
91796 + read_lock(&grsec_exec_file_lock);
91797 + do_each_thread(tsk2, tsk) {
91798 + if (likely(tsk != task)) {
91799 + // if this thread has the same subject as the one that triggered
91800 + // RES_CRASH and it's the same binary, kill it
91801 + if (tsk->acl == task->acl && gr_is_same_file(tsk->exec_file, task->exec_file))
91802 + gr_fake_force_sig(SIGKILL, tsk);
91803 + }
91804 + } while_each_thread(tsk2, tsk);
91805 + read_unlock(&grsec_exec_file_lock);
91806 + read_unlock(&tasklist_lock);
91807 + }
91808 + rcu_read_unlock();
91809 + }
91810 +
91811 + return;
91812 +}
91813 +
91814 +int
91815 +gr_check_crash_exec(const struct file *filp)
91816 +{
91817 + struct acl_subject_label *curr;
91818 + struct dentry *dentry;
91819 +
91820 + if (unlikely(!gr_acl_is_enabled()))
91821 + return 0;
91822 +
91823 + read_lock(&gr_inode_lock);
91824 + dentry = filp->f_path.dentry;
91825 + curr = lookup_acl_subj_label(gr_get_ino_from_dentry(dentry), gr_get_dev_from_dentry(dentry),
91826 + current->role);
91827 + read_unlock(&gr_inode_lock);
91828 +
91829 + if (!curr || !(curr->resmask & (1U << GR_CRASH_RES)) ||
91830 + (!curr->crashes && !curr->expires))
91831 + return 0;
91832 +
91833 + if ((curr->crashes >= curr->res[GR_CRASH_RES].rlim_cur) &&
91834 + time_after(curr->expires, get_seconds()))
91835 + return 1;
91836 + else if (time_before_eq(curr->expires, get_seconds())) {
91837 + curr->crashes = 0;
91838 + curr->expires = 0;
91839 + }
91840 +
91841 + return 0;
91842 +}
91843 +
91844 +void
91845 +gr_handle_alertkill(struct task_struct *task)
91846 +{
91847 + struct acl_subject_label *curracl;
91848 + __u32 curr_ip;
91849 + struct task_struct *p, *p2;
91850 +
91851 + if (unlikely(!gr_acl_is_enabled()))
91852 + return;
91853 +
91854 + curracl = task->acl;
91855 + curr_ip = task->signal->curr_ip;
91856 +
91857 + if ((curracl->mode & GR_KILLIPPROC) && curr_ip) {
91858 + read_lock(&tasklist_lock);
91859 + do_each_thread(p2, p) {
91860 + if (p->signal->curr_ip == curr_ip)
91861 + gr_fake_force_sig(SIGKILL, p);
91862 + } while_each_thread(p2, p);
91863 + read_unlock(&tasklist_lock);
91864 + } else if (curracl->mode & GR_KILLPROC)
91865 + gr_fake_force_sig(SIGKILL, task);
91866 +
91867 + return;
91868 +}
91869 diff --git a/grsecurity/gracl_shm.c b/grsecurity/gracl_shm.c
91870 new file mode 100644
91871 index 0000000..6b0c9cc
91872 --- /dev/null
91873 +++ b/grsecurity/gracl_shm.c
91874 @@ -0,0 +1,40 @@
91875 +#include <linux/kernel.h>
91876 +#include <linux/mm.h>
91877 +#include <linux/sched.h>
91878 +#include <linux/file.h>
91879 +#include <linux/ipc.h>
91880 +#include <linux/gracl.h>
91881 +#include <linux/grsecurity.h>
91882 +#include <linux/grinternal.h>
91883 +
91884 +int
91885 +gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
91886 + const u64 shm_createtime, const kuid_t cuid, const int shmid)
91887 +{
91888 + struct task_struct *task;
91889 +
91890 + if (!gr_acl_is_enabled())
91891 + return 1;
91892 +
91893 + rcu_read_lock();
91894 + read_lock(&tasklist_lock);
91895 +
91896 + task = find_task_by_vpid(shm_cprid);
91897 +
91898 + if (unlikely(!task))
91899 + task = find_task_by_vpid(shm_lapid);
91900 +
91901 + if (unlikely(task && (time_before_eq64(task->start_time, shm_createtime) ||
91902 + (task_pid_nr(task) == shm_lapid)) &&
91903 + (task->acl->mode & GR_PROTSHM) &&
91904 + (task->acl != current->acl))) {
91905 + read_unlock(&tasklist_lock);
91906 + rcu_read_unlock();
91907 + gr_log_int3(GR_DONT_AUDIT, GR_SHMAT_ACL_MSG, GR_GLOBAL_UID(cuid), shm_cprid, shmid);
91908 + return 0;
91909 + }
91910 + read_unlock(&tasklist_lock);
91911 + rcu_read_unlock();
91912 +
91913 + return 1;
91914 +}
91915 diff --git a/grsecurity/grsec_chdir.c b/grsecurity/grsec_chdir.c
91916 new file mode 100644
91917 index 0000000..bc0be01
91918 --- /dev/null
91919 +++ b/grsecurity/grsec_chdir.c
91920 @@ -0,0 +1,19 @@
91921 +#include <linux/kernel.h>
91922 +#include <linux/sched.h>
91923 +#include <linux/fs.h>
91924 +#include <linux/file.h>
91925 +#include <linux/grsecurity.h>
91926 +#include <linux/grinternal.h>
91927 +
91928 +void
91929 +gr_log_chdir(const struct dentry *dentry, const struct vfsmount *mnt)
91930 +{
91931 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
91932 + if ((grsec_enable_chdir && grsec_enable_group &&
91933 + in_group_p(grsec_audit_gid)) || (grsec_enable_chdir &&
91934 + !grsec_enable_group)) {
91935 + gr_log_fs_generic(GR_DO_AUDIT, GR_CHDIR_AUDIT_MSG, dentry, mnt);
91936 + }
91937 +#endif
91938 + return;
91939 +}
91940 diff --git a/grsecurity/grsec_chroot.c b/grsecurity/grsec_chroot.c
91941 new file mode 100644
91942 index 0000000..652ab45
91943 --- /dev/null
91944 +++ b/grsecurity/grsec_chroot.c
91945 @@ -0,0 +1,467 @@
91946 +#include <linux/kernel.h>
91947 +#include <linux/module.h>
91948 +#include <linux/sched.h>
91949 +#include <linux/file.h>
91950 +#include <linux/fs.h>
91951 +#include <linux/mount.h>
91952 +#include <linux/types.h>
91953 +#include "../fs/mount.h"
91954 +#include <linux/grsecurity.h>
91955 +#include <linux/grinternal.h>
91956 +
91957 +#ifdef CONFIG_GRKERNSEC_CHROOT_INITRD
91958 +int gr_init_ran;
91959 +#endif
91960 +
91961 +void gr_inc_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt)
91962 +{
91963 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
91964 + struct dentry *tmpd = dentry;
91965 +
91966 + read_seqlock_excl(&mount_lock);
91967 + write_seqlock(&rename_lock);
91968 +
91969 + while (tmpd != mnt->mnt_root) {
91970 + atomic_inc(&tmpd->chroot_refcnt);
91971 + tmpd = tmpd->d_parent;
91972 + }
91973 + atomic_inc(&tmpd->chroot_refcnt);
91974 +
91975 + write_sequnlock(&rename_lock);
91976 + read_sequnlock_excl(&mount_lock);
91977 +#endif
91978 +}
91979 +
91980 +void gr_dec_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt)
91981 +{
91982 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
91983 + struct dentry *tmpd = dentry;
91984 +
91985 + read_seqlock_excl(&mount_lock);
91986 + write_seqlock(&rename_lock);
91987 +
91988 + while (tmpd != mnt->mnt_root) {
91989 + atomic_dec(&tmpd->chroot_refcnt);
91990 + tmpd = tmpd->d_parent;
91991 + }
91992 + atomic_dec(&tmpd->chroot_refcnt);
91993 +
91994 + write_sequnlock(&rename_lock);
91995 + read_sequnlock_excl(&mount_lock);
91996 +#endif
91997 +}
91998 +
91999 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
92000 +static struct dentry *get_closest_chroot(struct dentry *dentry)
92001 +{
92002 + write_seqlock(&rename_lock);
92003 + do {
92004 + if (atomic_read(&dentry->chroot_refcnt)) {
92005 + write_sequnlock(&rename_lock);
92006 + return dentry;
92007 + }
92008 + dentry = dentry->d_parent;
92009 + } while (!IS_ROOT(dentry));
92010 + write_sequnlock(&rename_lock);
92011 + return NULL;
92012 +}
92013 +#endif
92014 +
92015 +int gr_bad_chroot_rename(struct dentry *olddentry, struct vfsmount *oldmnt,
92016 + struct dentry *newdentry, struct vfsmount *newmnt)
92017 +{
92018 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
92019 + struct dentry *chroot;
92020 +
92021 + if (unlikely(!grsec_enable_chroot_rename))
92022 + return 0;
92023 +
92024 + if (likely(!proc_is_chrooted(current) && gr_is_global_root(current_uid())))
92025 + return 0;
92026 +
92027 + chroot = get_closest_chroot(olddentry);
92028 +
92029 + if (chroot == NULL)
92030 + return 0;
92031 +
92032 + if (is_subdir(newdentry, chroot))
92033 + return 0;
92034 +
92035 + gr_log_fs_generic(GR_DONT_AUDIT, GR_CHROOT_RENAME_MSG, olddentry, oldmnt);
92036 +
92037 + return 1;
92038 +#else
92039 + return 0;
92040 +#endif
92041 +}
92042 +
92043 +void gr_set_chroot_entries(struct task_struct *task, const struct path *path)
92044 +{
92045 +#ifdef CONFIG_GRKERNSEC
92046 + if (task_pid_nr(task) > 1 && path->dentry != init_task.fs->root.dentry &&
92047 + path->dentry != task->nsproxy->mnt_ns->root->mnt.mnt_root
92048 +#ifdef CONFIG_GRKERNSEC_CHROOT_INITRD
92049 + && gr_init_ran
92050 +#endif
92051 + )
92052 + task->gr_is_chrooted = 1;
92053 + else {
92054 +#ifdef CONFIG_GRKERNSEC_CHROOT_INITRD
92055 + if (task_pid_nr(task) == 1 && !gr_init_ran)
92056 + gr_init_ran = 1;
92057 +#endif
92058 + task->gr_is_chrooted = 0;
92059 + }
92060 +
92061 + task->gr_chroot_dentry = path->dentry;
92062 +#endif
92063 + return;
92064 +}
92065 +
92066 +void gr_clear_chroot_entries(struct task_struct *task)
92067 +{
92068 +#ifdef CONFIG_GRKERNSEC
92069 + task->gr_is_chrooted = 0;
92070 + task->gr_chroot_dentry = NULL;
92071 +#endif
92072 + return;
92073 +}
92074 +
92075 +int
92076 +gr_handle_chroot_unix(const pid_t pid)
92077 +{
92078 +#ifdef CONFIG_GRKERNSEC_CHROOT_UNIX
92079 + struct task_struct *p;
92080 +
92081 + if (unlikely(!grsec_enable_chroot_unix))
92082 + return 1;
92083 +
92084 + if (likely(!proc_is_chrooted(current)))
92085 + return 1;
92086 +
92087 + rcu_read_lock();
92088 + read_lock(&tasklist_lock);
92089 + p = find_task_by_vpid_unrestricted(pid);
92090 + if (unlikely(p && !have_same_root(current, p))) {
92091 + read_unlock(&tasklist_lock);
92092 + rcu_read_unlock();
92093 + gr_log_noargs(GR_DONT_AUDIT, GR_UNIX_CHROOT_MSG);
92094 + return 0;
92095 + }
92096 + read_unlock(&tasklist_lock);
92097 + rcu_read_unlock();
92098 +#endif
92099 + return 1;
92100 +}
92101 +
92102 +int
92103 +gr_handle_chroot_nice(void)
92104 +{
92105 +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE
92106 + if (grsec_enable_chroot_nice && proc_is_chrooted(current)) {
92107 + gr_log_noargs(GR_DONT_AUDIT, GR_NICE_CHROOT_MSG);
92108 + return -EPERM;
92109 + }
92110 +#endif
92111 + return 0;
92112 +}
92113 +
92114 +int
92115 +gr_handle_chroot_setpriority(struct task_struct *p, const int niceval)
92116 +{
92117 +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE
92118 + if (grsec_enable_chroot_nice && (niceval < task_nice(p))
92119 + && proc_is_chrooted(current)) {
92120 + gr_log_str_int(GR_DONT_AUDIT, GR_PRIORITY_CHROOT_MSG, p->comm, task_pid_nr(p));
92121 + return -EACCES;
92122 + }
92123 +#endif
92124 + return 0;
92125 +}
92126 +
92127 +int
92128 +gr_handle_chroot_fowner(struct pid *pid, enum pid_type type)
92129 +{
92130 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
92131 + struct task_struct *p;
92132 + int ret = 0;
92133 + if (!grsec_enable_chroot_findtask || !proc_is_chrooted(current) || !pid)
92134 + return ret;
92135 +
92136 + read_lock(&tasklist_lock);
92137 + do_each_pid_task(pid, type, p) {
92138 + if (!have_same_root(current, p)) {
92139 + ret = 1;
92140 + goto out;
92141 + }
92142 + } while_each_pid_task(pid, type, p);
92143 +out:
92144 + read_unlock(&tasklist_lock);
92145 + return ret;
92146 +#endif
92147 + return 0;
92148 +}
92149 +
92150 +int
92151 +gr_pid_is_chrooted(struct task_struct *p)
92152 +{
92153 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
92154 + if (!grsec_enable_chroot_findtask || !proc_is_chrooted(current) || p == NULL)
92155 + return 0;
92156 +
92157 + if ((p->exit_state & (EXIT_ZOMBIE | EXIT_DEAD)) ||
92158 + !have_same_root(current, p)) {
92159 + return 1;
92160 + }
92161 +#endif
92162 + return 0;
92163 +}
92164 +
92165 +EXPORT_SYMBOL_GPL(gr_pid_is_chrooted);
92166 +
92167 +#if defined(CONFIG_GRKERNSEC_CHROOT_DOUBLE) || defined(CONFIG_GRKERNSEC_CHROOT_FCHDIR)
92168 +int gr_is_outside_chroot(const struct dentry *u_dentry, const struct vfsmount *u_mnt)
92169 +{
92170 + struct path path, currentroot;
92171 + int ret = 0;
92172 +
92173 + path.dentry = (struct dentry *)u_dentry;
92174 + path.mnt = (struct vfsmount *)u_mnt;
92175 + get_fs_root(current->fs, &currentroot);
92176 + if (path_is_under(&path, &currentroot))
92177 + ret = 1;
92178 + path_put(&currentroot);
92179 +
92180 + return ret;
92181 +}
92182 +#endif
92183 +
92184 +int
92185 +gr_chroot_fchdir(struct dentry *u_dentry, struct vfsmount *u_mnt)
92186 +{
92187 +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR
92188 + if (!grsec_enable_chroot_fchdir)
92189 + return 1;
92190 +
92191 + if (!proc_is_chrooted(current))
92192 + return 1;
92193 + else if (!gr_is_outside_chroot(u_dentry, u_mnt)) {
92194 + gr_log_fs_generic(GR_DONT_AUDIT, GR_CHROOT_FCHDIR_MSG, u_dentry, u_mnt);
92195 + return 0;
92196 + }
92197 +#endif
92198 + return 1;
92199 +}
92200 +
92201 +int
92202 +gr_chroot_fhandle(void)
92203 +{
92204 +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR
92205 + if (!grsec_enable_chroot_fchdir)
92206 + return 1;
92207 +
92208 + if (!proc_is_chrooted(current))
92209 + return 1;
92210 + else {
92211 + gr_log_noargs(GR_DONT_AUDIT, GR_CHROOT_FHANDLE_MSG);
92212 + return 0;
92213 + }
92214 +#endif
92215 + return 1;
92216 +}
92217 +
92218 +int
92219 +gr_chroot_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
92220 + const u64 shm_createtime)
92221 +{
92222 +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT
92223 + struct task_struct *p;
92224 +
92225 + if (unlikely(!grsec_enable_chroot_shmat))
92226 + return 1;
92227 +
92228 + if (likely(!proc_is_chrooted(current)))
92229 + return 1;
92230 +
92231 + rcu_read_lock();
92232 + read_lock(&tasklist_lock);
92233 +
92234 + if ((p = find_task_by_vpid_unrestricted(shm_cprid))) {
92235 + if (time_before_eq64(p->start_time, shm_createtime)) {
92236 + if (have_same_root(current, p)) {
92237 + goto allow;
92238 + } else {
92239 + read_unlock(&tasklist_lock);
92240 + rcu_read_unlock();
92241 + gr_log_noargs(GR_DONT_AUDIT, GR_SHMAT_CHROOT_MSG);
92242 + return 0;
92243 + }
92244 + }
92245 + /* creator exited, pid reuse, fall through to next check */
92246 + }
92247 + if ((p = find_task_by_vpid_unrestricted(shm_lapid))) {
92248 + if (unlikely(!have_same_root(current, p))) {
92249 + read_unlock(&tasklist_lock);
92250 + rcu_read_unlock();
92251 + gr_log_noargs(GR_DONT_AUDIT, GR_SHMAT_CHROOT_MSG);
92252 + return 0;
92253 + }
92254 + }
92255 +
92256 +allow:
92257 + read_unlock(&tasklist_lock);
92258 + rcu_read_unlock();
92259 +#endif
92260 + return 1;
92261 +}
92262 +
92263 +void
92264 +gr_log_chroot_exec(const struct dentry *dentry, const struct vfsmount *mnt)
92265 +{
92266 +#ifdef CONFIG_GRKERNSEC_CHROOT_EXECLOG
92267 + if (grsec_enable_chroot_execlog && proc_is_chrooted(current))
92268 + gr_log_fs_generic(GR_DO_AUDIT, GR_EXEC_CHROOT_MSG, dentry, mnt);
92269 +#endif
92270 + return;
92271 +}
92272 +
92273 +int
92274 +gr_handle_chroot_mknod(const struct dentry *dentry,
92275 + const struct vfsmount *mnt, const int mode)
92276 +{
92277 +#ifdef CONFIG_GRKERNSEC_CHROOT_MKNOD
92278 + if (grsec_enable_chroot_mknod && !S_ISFIFO(mode) && !S_ISREG(mode) &&
92279 + proc_is_chrooted(current)) {
92280 + gr_log_fs_generic(GR_DONT_AUDIT, GR_MKNOD_CHROOT_MSG, dentry, mnt);
92281 + return -EPERM;
92282 + }
92283 +#endif
92284 + return 0;
92285 +}
92286 +
92287 +int
92288 +gr_handle_chroot_mount(const struct dentry *dentry,
92289 + const struct vfsmount *mnt, const char *dev_name)
92290 +{
92291 +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT
92292 + if (grsec_enable_chroot_mount && proc_is_chrooted(current)) {
92293 + gr_log_str_fs(GR_DONT_AUDIT, GR_MOUNT_CHROOT_MSG, dev_name ? dev_name : "none", dentry, mnt);
92294 + return -EPERM;
92295 + }
92296 +#endif
92297 + return 0;
92298 +}
92299 +
92300 +int
92301 +gr_handle_chroot_pivot(void)
92302 +{
92303 +#ifdef CONFIG_GRKERNSEC_CHROOT_PIVOT
92304 + if (grsec_enable_chroot_pivot && proc_is_chrooted(current)) {
92305 + gr_log_noargs(GR_DONT_AUDIT, GR_PIVOT_CHROOT_MSG);
92306 + return -EPERM;
92307 + }
92308 +#endif
92309 + return 0;
92310 +}
92311 +
92312 +int
92313 +gr_handle_chroot_chroot(const struct dentry *dentry, const struct vfsmount *mnt)
92314 +{
92315 +#ifdef CONFIG_GRKERNSEC_CHROOT_DOUBLE
92316 + if (grsec_enable_chroot_double && proc_is_chrooted(current) &&
92317 + !gr_is_outside_chroot(dentry, mnt)) {
92318 + gr_log_fs_generic(GR_DONT_AUDIT, GR_CHROOT_CHROOT_MSG, dentry, mnt);
92319 + return -EPERM;
92320 + }
92321 +#endif
92322 + return 0;
92323 +}
92324 +
92325 +extern const char *captab_log[];
92326 +extern int captab_log_entries;
92327 +
92328 +int
92329 +gr_task_chroot_is_capable(const struct task_struct *task, const struct cred *cred, const int cap)
92330 +{
92331 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
92332 + if (grsec_enable_chroot_caps && proc_is_chrooted(task)) {
92333 + kernel_cap_t chroot_caps = GR_CHROOT_CAPS;
92334 + if (cap_raised(chroot_caps, cap)) {
92335 + if (cap_raised(cred->cap_effective, cap) && cap < captab_log_entries) {
92336 + gr_log_cap(GR_DONT_AUDIT, GR_CAP_CHROOT_MSG, task, captab_log[cap]);
92337 + }
92338 + return 0;
92339 + }
92340 + }
92341 +#endif
92342 + return 1;
92343 +}
92344 +
92345 +int
92346 +gr_chroot_is_capable(const int cap)
92347 +{
92348 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
92349 + return gr_task_chroot_is_capable(current, current_cred(), cap);
92350 +#endif
92351 + return 1;
92352 +}
92353 +
92354 +int
92355 +gr_task_chroot_is_capable_nolog(const struct task_struct *task, const int cap)
92356 +{
92357 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
92358 + if (grsec_enable_chroot_caps && proc_is_chrooted(task)) {
92359 + kernel_cap_t chroot_caps = GR_CHROOT_CAPS;
92360 + if (cap_raised(chroot_caps, cap)) {
92361 + return 0;
92362 + }
92363 + }
92364 +#endif
92365 + return 1;
92366 +}
92367 +
92368 +int
92369 +gr_chroot_is_capable_nolog(const int cap)
92370 +{
92371 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
92372 + return gr_task_chroot_is_capable_nolog(current, cap);
92373 +#endif
92374 + return 1;
92375 +}
92376 +
92377 +int
92378 +gr_handle_chroot_sysctl(const int op)
92379 +{
92380 +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL
92381 + if (grsec_enable_chroot_sysctl && (op & MAY_WRITE) &&
92382 + proc_is_chrooted(current))
92383 + return -EACCES;
92384 +#endif
92385 + return 0;
92386 +}
92387 +
92388 +void
92389 +gr_handle_chroot_chdir(const struct path *path)
92390 +{
92391 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHDIR
92392 + if (grsec_enable_chroot_chdir)
92393 + set_fs_pwd(current->fs, path);
92394 +#endif
92395 + return;
92396 +}
92397 +
92398 +int
92399 +gr_handle_chroot_chmod(const struct dentry *dentry,
92400 + const struct vfsmount *mnt, const int mode)
92401 +{
92402 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD
92403 + /* allow chmod +s on directories, but not files */
92404 + if (grsec_enable_chroot_chmod && !d_is_dir(dentry) &&
92405 + ((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))) &&
92406 + proc_is_chrooted(current)) {
92407 + gr_log_fs_generic(GR_DONT_AUDIT, GR_CHMOD_CHROOT_MSG, dentry, mnt);
92408 + return -EPERM;
92409 + }
92410 +#endif
92411 + return 0;
92412 +}
92413 diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c
92414 new file mode 100644
92415 index 0000000..e723c08
92416 --- /dev/null
92417 +++ b/grsecurity/grsec_disabled.c
92418 @@ -0,0 +1,445 @@
92419 +#include <linux/kernel.h>
92420 +#include <linux/module.h>
92421 +#include <linux/sched.h>
92422 +#include <linux/file.h>
92423 +#include <linux/fs.h>
92424 +#include <linux/kdev_t.h>
92425 +#include <linux/net.h>
92426 +#include <linux/in.h>
92427 +#include <linux/ip.h>
92428 +#include <linux/skbuff.h>
92429 +#include <linux/sysctl.h>
92430 +
92431 +#ifdef CONFIG_PAX_HAVE_ACL_FLAGS
92432 +void
92433 +pax_set_initial_flags(struct linux_binprm *bprm)
92434 +{
92435 + return;
92436 +}
92437 +#endif
92438 +
92439 +#ifdef CONFIG_SYSCTL
92440 +__u32
92441 +gr_handle_sysctl(const struct ctl_table * table, const int op)
92442 +{
92443 + return 0;
92444 +}
92445 +#endif
92446 +
92447 +#ifdef CONFIG_TASKSTATS
92448 +int gr_is_taskstats_denied(int pid)
92449 +{
92450 + return 0;
92451 +}
92452 +#endif
92453 +
92454 +int
92455 +gr_acl_is_enabled(void)
92456 +{
92457 + return 0;
92458 +}
92459 +
92460 +int
92461 +gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
92462 +{
92463 + return 0;
92464 +}
92465 +
92466 +void
92467 +gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode)
92468 +{
92469 + return;
92470 +}
92471 +
92472 +int
92473 +gr_handle_rawio(const struct inode *inode)
92474 +{
92475 + return 0;
92476 +}
92477 +
92478 +void
92479 +gr_acl_handle_psacct(struct task_struct *task, const long code)
92480 +{
92481 + return;
92482 +}
92483 +
92484 +int
92485 +gr_handle_ptrace(struct task_struct *task, const long request)
92486 +{
92487 + return 0;
92488 +}
92489 +
92490 +int
92491 +gr_handle_proc_ptrace(struct task_struct *task)
92492 +{
92493 + return 0;
92494 +}
92495 +
92496 +int
92497 +gr_set_acls(const int type)
92498 +{
92499 + return 0;
92500 +}
92501 +
92502 +int
92503 +gr_check_hidden_task(const struct task_struct *tsk)
92504 +{
92505 + return 0;
92506 +}
92507 +
92508 +int
92509 +gr_check_protected_task(const struct task_struct *task)
92510 +{
92511 + return 0;
92512 +}
92513 +
92514 +int
92515 +gr_check_protected_task_fowner(struct pid *pid, enum pid_type type)
92516 +{
92517 + return 0;
92518 +}
92519 +
92520 +void
92521 +gr_copy_label(struct task_struct *tsk)
92522 +{
92523 + return;
92524 +}
92525 +
92526 +void
92527 +gr_set_pax_flags(struct task_struct *task)
92528 +{
92529 + return;
92530 +}
92531 +
92532 +int
92533 +gr_set_proc_label(const struct dentry *dentry, const struct vfsmount *mnt,
92534 + const int unsafe_share)
92535 +{
92536 + return 0;
92537 +}
92538 +
92539 +void
92540 +gr_handle_delete(const u64 ino, const dev_t dev)
92541 +{
92542 + return;
92543 +}
92544 +
92545 +void
92546 +gr_handle_create(const struct dentry *dentry, const struct vfsmount *mnt)
92547 +{
92548 + return;
92549 +}
92550 +
92551 +void
92552 +gr_handle_crash(struct task_struct *task, const int sig)
92553 +{
92554 + return;
92555 +}
92556 +
92557 +int
92558 +gr_check_crash_exec(const struct file *filp)
92559 +{
92560 + return 0;
92561 +}
92562 +
92563 +int
92564 +gr_check_crash_uid(const kuid_t uid)
92565 +{
92566 + return 0;
92567 +}
92568 +
92569 +void
92570 +gr_handle_rename(struct inode *old_dir, struct inode *new_dir,
92571 + struct dentry *old_dentry,
92572 + struct dentry *new_dentry,
92573 + struct vfsmount *mnt, const __u8 replace, unsigned int flags)
92574 +{
92575 + return;
92576 +}
92577 +
92578 +int
92579 +gr_search_socket(const int family, const int type, const int protocol)
92580 +{
92581 + return 1;
92582 +}
92583 +
92584 +int
92585 +gr_search_connectbind(const int mode, const struct socket *sock,
92586 + const struct sockaddr_in *addr)
92587 +{
92588 + return 0;
92589 +}
92590 +
92591 +void
92592 +gr_handle_alertkill(struct task_struct *task)
92593 +{
92594 + return;
92595 +}
92596 +
92597 +__u32
92598 +gr_acl_handle_execve(const struct dentry * dentry, const struct vfsmount * mnt)
92599 +{
92600 + return 1;
92601 +}
92602 +
92603 +__u32
92604 +gr_acl_handle_hidden_file(const struct dentry * dentry,
92605 + const struct vfsmount * mnt)
92606 +{
92607 + return 1;
92608 +}
92609 +
92610 +__u32
92611 +gr_acl_handle_open(const struct dentry * dentry, const struct vfsmount * mnt,
92612 + int acc_mode)
92613 +{
92614 + return 1;
92615 +}
92616 +
92617 +__u32
92618 +gr_acl_handle_rmdir(const struct dentry * dentry, const struct vfsmount * mnt)
92619 +{
92620 + return 1;
92621 +}
92622 +
92623 +__u32
92624 +gr_acl_handle_unlink(const struct dentry * dentry, const struct vfsmount * mnt)
92625 +{
92626 + return 1;
92627 +}
92628 +
92629 +int
92630 +gr_acl_handle_mmap(const struct file *file, const unsigned long prot,
92631 + unsigned int *vm_flags)
92632 +{
92633 + return 1;
92634 +}
92635 +
92636 +__u32
92637 +gr_acl_handle_truncate(const struct dentry * dentry,
92638 + const struct vfsmount * mnt)
92639 +{
92640 + return 1;
92641 +}
92642 +
92643 +__u32
92644 +gr_acl_handle_utime(const struct dentry * dentry, const struct vfsmount * mnt)
92645 +{
92646 + return 1;
92647 +}
92648 +
92649 +__u32
92650 +gr_acl_handle_access(const struct dentry * dentry,
92651 + const struct vfsmount * mnt, const int fmode)
92652 +{
92653 + return 1;
92654 +}
92655 +
92656 +__u32
92657 +gr_acl_handle_chmod(const struct dentry * dentry, const struct vfsmount * mnt,
92658 + umode_t *mode)
92659 +{
92660 + return 1;
92661 +}
92662 +
92663 +__u32
92664 +gr_acl_handle_chown(const struct dentry * dentry, const struct vfsmount * mnt)
92665 +{
92666 + return 1;
92667 +}
92668 +
92669 +__u32
92670 +gr_acl_handle_setxattr(const struct dentry * dentry, const struct vfsmount * mnt)
92671 +{
92672 + return 1;
92673 +}
92674 +
92675 +__u32
92676 +gr_acl_handle_removexattr(const struct dentry * dentry, const struct vfsmount * mnt)
92677 +{
92678 + return 1;
92679 +}
92680 +
92681 +void
92682 +grsecurity_init(void)
92683 +{
92684 + return;
92685 +}
92686 +
92687 +umode_t gr_acl_umask(void)
92688 +{
92689 + return 0;
92690 +}
92691 +
92692 +__u32
92693 +gr_acl_handle_mknod(const struct dentry * new_dentry,
92694 + const struct dentry * parent_dentry,
92695 + const struct vfsmount * parent_mnt,
92696 + const int mode)
92697 +{
92698 + return 1;
92699 +}
92700 +
92701 +__u32
92702 +gr_acl_handle_mkdir(const struct dentry * new_dentry,
92703 + const struct dentry * parent_dentry,
92704 + const struct vfsmount * parent_mnt)
92705 +{
92706 + return 1;
92707 +}
92708 +
92709 +__u32
92710 +gr_acl_handle_symlink(const struct dentry * new_dentry,
92711 + const struct dentry * parent_dentry,
92712 + const struct vfsmount * parent_mnt, const struct filename *from)
92713 +{
92714 + return 1;
92715 +}
92716 +
92717 +__u32
92718 +gr_acl_handle_link(const struct dentry * new_dentry,
92719 + const struct dentry * parent_dentry,
92720 + const struct vfsmount * parent_mnt,
92721 + const struct dentry * old_dentry,
92722 + const struct vfsmount * old_mnt, const struct filename *to)
92723 +{
92724 + return 1;
92725 +}
92726 +
92727 +int
92728 +gr_acl_handle_rename(const struct dentry *new_dentry,
92729 + const struct dentry *parent_dentry,
92730 + const struct vfsmount *parent_mnt,
92731 + const struct dentry *old_dentry,
92732 + const struct inode *old_parent_inode,
92733 + const struct vfsmount *old_mnt, const struct filename *newname,
92734 + unsigned int flags)
92735 +{
92736 + return 0;
92737 +}
92738 +
92739 +int
92740 +gr_acl_handle_filldir(const struct file *file, const char *name,
92741 + const int namelen, const u64 ino)
92742 +{
92743 + return 1;
92744 +}
92745 +
92746 +int
92747 +gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
92748 + const u64 shm_createtime, const kuid_t cuid, const int shmid)
92749 +{
92750 + return 1;
92751 +}
92752 +
92753 +int
92754 +gr_search_bind(const struct socket *sock, const struct sockaddr_in *addr)
92755 +{
92756 + return 0;
92757 +}
92758 +
92759 +int
92760 +gr_search_accept(const struct socket *sock)
92761 +{
92762 + return 0;
92763 +}
92764 +
92765 +int
92766 +gr_search_listen(const struct socket *sock)
92767 +{
92768 + return 0;
92769 +}
92770 +
92771 +int
92772 +gr_search_connect(const struct socket *sock, const struct sockaddr_in *addr)
92773 +{
92774 + return 0;
92775 +}
92776 +
92777 +__u32
92778 +gr_acl_handle_unix(const struct dentry * dentry, const struct vfsmount * mnt)
92779 +{
92780 + return 1;
92781 +}
92782 +
92783 +__u32
92784 +gr_acl_handle_creat(const struct dentry * dentry,
92785 + const struct dentry * p_dentry,
92786 + const struct vfsmount * p_mnt, int open_flags, int acc_mode,
92787 + const int imode)
92788 +{
92789 + return 1;
92790 +}
92791 +
92792 +void
92793 +gr_acl_handle_exit(void)
92794 +{
92795 + return;
92796 +}
92797 +
92798 +int
92799 +gr_acl_handle_mprotect(const struct file *file, const unsigned long prot)
92800 +{
92801 + return 1;
92802 +}
92803 +
92804 +void
92805 +gr_set_role_label(const kuid_t uid, const kgid_t gid)
92806 +{
92807 + return;
92808 +}
92809 +
92810 +int
92811 +gr_acl_handle_procpidmem(const struct task_struct *task)
92812 +{
92813 + return 0;
92814 +}
92815 +
92816 +int
92817 +gr_search_udp_recvmsg(const struct sock *sk, const struct sk_buff *skb)
92818 +{
92819 + return 0;
92820 +}
92821 +
92822 +int
92823 +gr_search_udp_sendmsg(const struct sock *sk, const struct sockaddr_in *addr)
92824 +{
92825 + return 0;
92826 +}
92827 +
92828 +int
92829 +gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs)
92830 +{
92831 + return 0;
92832 +}
92833 +
92834 +int
92835 +gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs)
92836 +{
92837 + return 0;
92838 +}
92839 +
92840 +int gr_acl_enable_at_secure(void)
92841 +{
92842 + return 0;
92843 +}
92844 +
92845 +dev_t gr_get_dev_from_dentry(struct dentry *dentry)
92846 +{
92847 + return d_backing_inode(dentry)->i_sb->s_dev;
92848 +}
92849 +
92850 +u64 gr_get_ino_from_dentry(struct dentry *dentry)
92851 +{
92852 + return d_backing_inode(dentry)->i_ino;
92853 +}
92854 +
92855 +void gr_put_exec_file(struct task_struct *task)
92856 +{
92857 + return;
92858 +}
92859 +
92860 +#ifdef CONFIG_SECURITY
92861 +EXPORT_SYMBOL_GPL(gr_check_user_change);
92862 +EXPORT_SYMBOL_GPL(gr_check_group_change);
92863 +#endif
92864 diff --git a/grsecurity/grsec_exec.c b/grsecurity/grsec_exec.c
92865 new file mode 100644
92866 index 0000000..fb7531e
92867 --- /dev/null
92868 +++ b/grsecurity/grsec_exec.c
92869 @@ -0,0 +1,189 @@
92870 +#include <linux/kernel.h>
92871 +#include <linux/sched.h>
92872 +#include <linux/file.h>
92873 +#include <linux/binfmts.h>
92874 +#include <linux/fs.h>
92875 +#include <linux/types.h>
92876 +#include <linux/grdefs.h>
92877 +#include <linux/grsecurity.h>
92878 +#include <linux/grinternal.h>
92879 +#include <linux/capability.h>
92880 +#include <linux/module.h>
92881 +#include <linux/compat.h>
92882 +
92883 +#include <asm/uaccess.h>
92884 +
92885 +#ifdef CONFIG_GRKERNSEC_EXECLOG
92886 +static char gr_exec_arg_buf[132];
92887 +static DEFINE_MUTEX(gr_exec_arg_mutex);
92888 +#endif
92889 +
92890 +struct user_arg_ptr {
92891 +#ifdef CONFIG_COMPAT
92892 + bool is_compat;
92893 +#endif
92894 + union {
92895 + const char __user *const __user *native;
92896 +#ifdef CONFIG_COMPAT
92897 + const compat_uptr_t __user *compat;
92898 +#endif
92899 + } ptr;
92900 +};
92901 +
92902 +extern const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr);
92903 +
92904 +void
92905 +gr_handle_exec_args(struct linux_binprm *bprm, struct user_arg_ptr argv)
92906 +{
92907 +#ifdef CONFIG_GRKERNSEC_EXECLOG
92908 + char *grarg = gr_exec_arg_buf;
92909 + unsigned int i, x, execlen = 0;
92910 + char c;
92911 +
92912 + if (!((grsec_enable_execlog && grsec_enable_group &&
92913 + in_group_p(grsec_audit_gid))
92914 + || (grsec_enable_execlog && !grsec_enable_group)))
92915 + return;
92916 +
92917 + mutex_lock(&gr_exec_arg_mutex);
92918 + memset(grarg, 0, sizeof(gr_exec_arg_buf));
92919 +
92920 + for (i = 0; i < bprm->argc && execlen < 128; i++) {
92921 + const char __user *p;
92922 + unsigned int len;
92923 +
92924 + p = get_user_arg_ptr(argv, i);
92925 + if (IS_ERR(p))
92926 + goto log;
92927 +
92928 + len = strnlen_user(p, 128 - execlen);
92929 + if (len > 128 - execlen)
92930 + len = 128 - execlen;
92931 + else if (len > 0)
92932 + len--;
92933 + if (copy_from_user(grarg + execlen, p, len))
92934 + goto log;
92935 +
92936 + /* rewrite unprintable characters */
92937 + for (x = 0; x < len; x++) {
92938 + c = *(grarg + execlen + x);
92939 + if (c < 32 || c > 126)
92940 + *(grarg + execlen + x) = ' ';
92941 + }
92942 +
92943 + execlen += len;
92944 + *(grarg + execlen) = ' ';
92945 + *(grarg + execlen + 1) = '\0';
92946 + execlen++;
92947 + }
92948 +
92949 + log:
92950 + gr_log_fs_str(GR_DO_AUDIT, GR_EXEC_AUDIT_MSG, bprm->file->f_path.dentry,
92951 + bprm->file->f_path.mnt, grarg);
92952 + mutex_unlock(&gr_exec_arg_mutex);
92953 +#endif
92954 + return;
92955 +}
92956 +
92957 +#ifdef CONFIG_GRKERNSEC
92958 +extern int gr_acl_is_capable(const int cap);
92959 +extern int gr_acl_is_capable_nolog(const int cap);
92960 +extern int gr_task_acl_is_capable(const struct task_struct *task, const struct cred *cred, const int cap);
92961 +extern int gr_task_acl_is_capable_nolog(const struct task_struct *task, const int cap);
92962 +extern int gr_chroot_is_capable(const int cap);
92963 +extern int gr_chroot_is_capable_nolog(const int cap);
92964 +extern int gr_task_chroot_is_capable(const struct task_struct *task, const struct cred *cred, const int cap);
92965 +extern int gr_task_chroot_is_capable_nolog(const struct task_struct *task, const int cap);
92966 +#endif
92967 +
92968 +const char *captab_log[] = {
92969 + "CAP_CHOWN",
92970 + "CAP_DAC_OVERRIDE",
92971 + "CAP_DAC_READ_SEARCH",
92972 + "CAP_FOWNER",
92973 + "CAP_FSETID",
92974 + "CAP_KILL",
92975 + "CAP_SETGID",
92976 + "CAP_SETUID",
92977 + "CAP_SETPCAP",
92978 + "CAP_LINUX_IMMUTABLE",
92979 + "CAP_NET_BIND_SERVICE",
92980 + "CAP_NET_BROADCAST",
92981 + "CAP_NET_ADMIN",
92982 + "CAP_NET_RAW",
92983 + "CAP_IPC_LOCK",
92984 + "CAP_IPC_OWNER",
92985 + "CAP_SYS_MODULE",
92986 + "CAP_SYS_RAWIO",
92987 + "CAP_SYS_CHROOT",
92988 + "CAP_SYS_PTRACE",
92989 + "CAP_SYS_PACCT",
92990 + "CAP_SYS_ADMIN",
92991 + "CAP_SYS_BOOT",
92992 + "CAP_SYS_NICE",
92993 + "CAP_SYS_RESOURCE",
92994 + "CAP_SYS_TIME",
92995 + "CAP_SYS_TTY_CONFIG",
92996 + "CAP_MKNOD",
92997 + "CAP_LEASE",
92998 + "CAP_AUDIT_WRITE",
92999 + "CAP_AUDIT_CONTROL",
93000 + "CAP_SETFCAP",
93001 + "CAP_MAC_OVERRIDE",
93002 + "CAP_MAC_ADMIN",
93003 + "CAP_SYSLOG",
93004 + "CAP_WAKE_ALARM",
93005 + "CAP_BLOCK_SUSPEND",
93006 + "CAP_AUDIT_READ"
93007 +};
93008 +
93009 +int captab_log_entries = sizeof(captab_log)/sizeof(captab_log[0]);
93010 +
93011 +int gr_is_capable(const int cap)
93012 +{
93013 +#ifdef CONFIG_GRKERNSEC
93014 + if (gr_acl_is_capable(cap) && gr_chroot_is_capable(cap))
93015 + return 1;
93016 + return 0;
93017 +#else
93018 + return 1;
93019 +#endif
93020 +}
93021 +
93022 +int gr_task_is_capable(const struct task_struct *task, const struct cred *cred, const int cap)
93023 +{
93024 +#ifdef CONFIG_GRKERNSEC
93025 + if (gr_task_acl_is_capable(task, cred, cap) && gr_task_chroot_is_capable(task, cred, cap))
93026 + return 1;
93027 + return 0;
93028 +#else
93029 + return 1;
93030 +#endif
93031 +}
93032 +
93033 +int gr_is_capable_nolog(const int cap)
93034 +{
93035 +#ifdef CONFIG_GRKERNSEC
93036 + if (gr_acl_is_capable_nolog(cap) && gr_chroot_is_capable_nolog(cap))
93037 + return 1;
93038 + return 0;
93039 +#else
93040 + return 1;
93041 +#endif
93042 +}
93043 +
93044 +int gr_task_is_capable_nolog(const struct task_struct *task, const int cap)
93045 +{
93046 +#ifdef CONFIG_GRKERNSEC
93047 + if (gr_task_acl_is_capable_nolog(task, cap) && gr_task_chroot_is_capable_nolog(task, cap))
93048 + return 1;
93049 + return 0;
93050 +#else
93051 + return 1;
93052 +#endif
93053 +}
93054 +
93055 +EXPORT_SYMBOL_GPL(gr_is_capable);
93056 +EXPORT_SYMBOL_GPL(gr_is_capable_nolog);
93057 +EXPORT_SYMBOL_GPL(gr_task_is_capable);
93058 +EXPORT_SYMBOL_GPL(gr_task_is_capable_nolog);
93059 diff --git a/grsecurity/grsec_fifo.c b/grsecurity/grsec_fifo.c
93060 new file mode 100644
93061 index 0000000..cdec49b
93062 --- /dev/null
93063 +++ b/grsecurity/grsec_fifo.c
93064 @@ -0,0 +1,26 @@
93065 +#include <linux/kernel.h>
93066 +#include <linux/sched.h>
93067 +#include <linux/fs.h>
93068 +#include <linux/file.h>
93069 +#include <linux/grinternal.h>
93070 +
93071 +int
93072 +gr_handle_fifo(const struct dentry *dentry, const struct vfsmount *mnt,
93073 + const struct dentry *dir, const int flag, const int acc_mode)
93074 +{
93075 +#ifdef CONFIG_GRKERNSEC_FIFO
93076 + const struct cred *cred = current_cred();
93077 + struct inode *inode = d_backing_inode(dentry);
93078 + struct inode *dir_inode = d_backing_inode(dir);
93079 +
93080 + if (grsec_enable_fifo && S_ISFIFO(inode->i_mode) &&
93081 + !(flag & O_EXCL) && (dir_inode->i_mode & S_ISVTX) &&
93082 + !uid_eq(inode->i_uid, dir_inode->i_uid) &&
93083 + !uid_eq(cred->fsuid, inode->i_uid)) {
93084 + if (!inode_permission(inode, acc_mode))
93085 + gr_log_fs_int2(GR_DONT_AUDIT, GR_FIFO_MSG, dentry, mnt, GR_GLOBAL_UID(inode->i_uid), GR_GLOBAL_GID(inode->i_gid));
93086 + return -EACCES;
93087 + }
93088 +#endif
93089 + return 0;
93090 +}
93091 diff --git a/grsecurity/grsec_fork.c b/grsecurity/grsec_fork.c
93092 new file mode 100644
93093 index 0000000..8ca18bf
93094 --- /dev/null
93095 +++ b/grsecurity/grsec_fork.c
93096 @@ -0,0 +1,23 @@
93097 +#include <linux/kernel.h>
93098 +#include <linux/sched.h>
93099 +#include <linux/grsecurity.h>
93100 +#include <linux/grinternal.h>
93101 +#include <linux/errno.h>
93102 +
93103 +void
93104 +gr_log_forkfail(const int retval)
93105 +{
93106 +#ifdef CONFIG_GRKERNSEC_FORKFAIL
93107 + if (grsec_enable_forkfail && (retval == -EAGAIN || retval == -ENOMEM)) {
93108 + switch (retval) {
93109 + case -EAGAIN:
93110 + gr_log_str(GR_DONT_AUDIT, GR_FAILFORK_MSG, "EAGAIN");
93111 + break;
93112 + case -ENOMEM:
93113 + gr_log_str(GR_DONT_AUDIT, GR_FAILFORK_MSG, "ENOMEM");
93114 + break;
93115 + }
93116 + }
93117 +#endif
93118 + return;
93119 +}
93120 diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c
93121 new file mode 100644
93122 index 0000000..a364c58
93123 --- /dev/null
93124 +++ b/grsecurity/grsec_init.c
93125 @@ -0,0 +1,290 @@
93126 +#include <linux/kernel.h>
93127 +#include <linux/sched.h>
93128 +#include <linux/mm.h>
93129 +#include <linux/gracl.h>
93130 +#include <linux/slab.h>
93131 +#include <linux/vmalloc.h>
93132 +#include <linux/percpu.h>
93133 +#include <linux/module.h>
93134 +
93135 +int grsec_enable_ptrace_readexec __read_only;
93136 +int grsec_enable_setxid __read_only;
93137 +int grsec_enable_symlinkown __read_only;
93138 +kgid_t grsec_symlinkown_gid __read_only;
93139 +int grsec_enable_brute __read_only;
93140 +int grsec_enable_link __read_only;
93141 +int grsec_enable_dmesg __read_only;
93142 +int grsec_enable_harden_ptrace __read_only;
93143 +int grsec_enable_harden_ipc __read_only;
93144 +int grsec_enable_fifo __read_only;
93145 +int grsec_enable_execlog __read_only;
93146 +int grsec_enable_signal __read_only;
93147 +int grsec_enable_forkfail __read_only;
93148 +int grsec_enable_audit_ptrace __read_only;
93149 +int grsec_enable_time __read_only;
93150 +int grsec_enable_group __read_only;
93151 +kgid_t grsec_audit_gid __read_only;
93152 +int grsec_enable_chdir __read_only;
93153 +int grsec_enable_mount __read_only;
93154 +int grsec_enable_rofs __read_only;
93155 +int grsec_deny_new_usb __read_only;
93156 +int grsec_enable_chroot_findtask __read_only;
93157 +int grsec_enable_chroot_mount __read_only;
93158 +int grsec_enable_chroot_shmat __read_only;
93159 +int grsec_enable_chroot_fchdir __read_only;
93160 +int grsec_enable_chroot_double __read_only;
93161 +int grsec_enable_chroot_pivot __read_only;
93162 +int grsec_enable_chroot_chdir __read_only;
93163 +int grsec_enable_chroot_chmod __read_only;
93164 +int grsec_enable_chroot_mknod __read_only;
93165 +int grsec_enable_chroot_nice __read_only;
93166 +int grsec_enable_chroot_execlog __read_only;
93167 +int grsec_enable_chroot_caps __read_only;
93168 +int grsec_enable_chroot_rename __read_only;
93169 +int grsec_enable_chroot_sysctl __read_only;
93170 +int grsec_enable_chroot_unix __read_only;
93171 +int grsec_enable_tpe __read_only;
93172 +kgid_t grsec_tpe_gid __read_only;
93173 +int grsec_enable_blackhole __read_only;
93174 +#ifdef CONFIG_IPV6_MODULE
93175 +EXPORT_SYMBOL_GPL(grsec_enable_blackhole);
93176 +#endif
93177 +int grsec_lastack_retries __read_only;
93178 +int grsec_enable_tpe_all __read_only;
93179 +int grsec_enable_tpe_invert __read_only;
93180 +int grsec_enable_socket_all __read_only;
93181 +kgid_t grsec_socket_all_gid __read_only;
93182 +int grsec_enable_socket_client __read_only;
93183 +kgid_t grsec_socket_client_gid __read_only;
93184 +int grsec_enable_socket_server __read_only;
93185 +kgid_t grsec_socket_server_gid __read_only;
93186 +int grsec_resource_logging __read_only;
93187 +int grsec_disable_privio __read_only;
93188 +int grsec_enable_log_rwxmaps __read_only;
93189 +int grsec_lock __read_only;
93190 +
93191 +DEFINE_SPINLOCK(grsec_alert_lock);
93192 +unsigned long grsec_alert_wtime = 0;
93193 +unsigned long grsec_alert_fyet = 0;
93194 +
93195 +DEFINE_SPINLOCK(grsec_audit_lock);
93196 +
93197 +DEFINE_RWLOCK(grsec_exec_file_lock);
93198 +
93199 +char *gr_shared_page[4];
93200 +
93201 +char *gr_alert_log_fmt;
93202 +char *gr_audit_log_fmt;
93203 +char *gr_alert_log_buf;
93204 +char *gr_audit_log_buf;
93205 +
93206 +extern struct gr_arg *gr_usermode;
93207 +extern unsigned char *gr_system_salt;
93208 +extern unsigned char *gr_system_sum;
93209 +
93210 +void __init
93211 +grsecurity_init(void)
93212 +{
93213 + int j;
93214 + /* create the per-cpu shared pages */
93215 +
93216 +#ifdef CONFIG_X86
93217 + memset((char *)(0x41a + PAGE_OFFSET), 0, 36);
93218 +#endif
93219 +
93220 + for (j = 0; j < 4; j++) {
93221 + gr_shared_page[j] = (char *)__alloc_percpu(PAGE_SIZE, __alignof__(unsigned long long));
93222 + if (gr_shared_page[j] == NULL) {
93223 + panic("Unable to allocate grsecurity shared page");
93224 + return;
93225 + }
93226 + }
93227 +
93228 + /* allocate log buffers */
93229 + gr_alert_log_fmt = kmalloc(512, GFP_KERNEL);
93230 + if (!gr_alert_log_fmt) {
93231 + panic("Unable to allocate grsecurity alert log format buffer");
93232 + return;
93233 + }
93234 + gr_audit_log_fmt = kmalloc(512, GFP_KERNEL);
93235 + if (!gr_audit_log_fmt) {
93236 + panic("Unable to allocate grsecurity audit log format buffer");
93237 + return;
93238 + }
93239 + gr_alert_log_buf = (char *) get_zeroed_page(GFP_KERNEL);
93240 + if (!gr_alert_log_buf) {
93241 + panic("Unable to allocate grsecurity alert log buffer");
93242 + return;
93243 + }
93244 + gr_audit_log_buf = (char *) get_zeroed_page(GFP_KERNEL);
93245 + if (!gr_audit_log_buf) {
93246 + panic("Unable to allocate grsecurity audit log buffer");
93247 + return;
93248 + }
93249 +
93250 + /* allocate memory for authentication structure */
93251 + gr_usermode = kmalloc(sizeof(struct gr_arg), GFP_KERNEL);
93252 + gr_system_salt = kmalloc(GR_SALT_LEN, GFP_KERNEL);
93253 + gr_system_sum = kmalloc(GR_SHA_LEN, GFP_KERNEL);
93254 +
93255 + if (!gr_usermode || !gr_system_salt || !gr_system_sum) {
93256 + panic("Unable to allocate grsecurity authentication structure");
93257 + return;
93258 + }
93259 +
93260 +#ifdef CONFIG_GRKERNSEC_IO
93261 +#if !defined(CONFIG_GRKERNSEC_SYSCTL_DISTRO)
93262 + grsec_disable_privio = 1;
93263 +#elif defined(CONFIG_GRKERNSEC_SYSCTL_ON)
93264 + grsec_disable_privio = 1;
93265 +#else
93266 + grsec_disable_privio = 0;
93267 +#endif
93268 +#endif
93269 +
93270 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
93271 + /* for backward compatibility, tpe_invert always defaults to on if
93272 + enabled in the kernel
93273 + */
93274 + grsec_enable_tpe_invert = 1;
93275 +#endif
93276 +
93277 +#if !defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_SYSCTL_ON)
93278 +#ifndef CONFIG_GRKERNSEC_SYSCTL
93279 + grsec_lock = 1;
93280 +#endif
93281 +
93282 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
93283 + grsec_enable_log_rwxmaps = 1;
93284 +#endif
93285 +#ifdef CONFIG_GRKERNSEC_AUDIT_GROUP
93286 + grsec_enable_group = 1;
93287 + grsec_audit_gid = KGIDT_INIT(CONFIG_GRKERNSEC_AUDIT_GID);
93288 +#endif
93289 +#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
93290 + grsec_enable_ptrace_readexec = 1;
93291 +#endif
93292 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
93293 + grsec_enable_chdir = 1;
93294 +#endif
93295 +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE
93296 + grsec_enable_harden_ptrace = 1;
93297 +#endif
93298 +#ifdef CONFIG_GRKERNSEC_HARDEN_IPC
93299 + grsec_enable_harden_ipc = 1;
93300 +#endif
93301 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
93302 + grsec_enable_mount = 1;
93303 +#endif
93304 +#ifdef CONFIG_GRKERNSEC_LINK
93305 + grsec_enable_link = 1;
93306 +#endif
93307 +#ifdef CONFIG_GRKERNSEC_BRUTE
93308 + grsec_enable_brute = 1;
93309 +#endif
93310 +#ifdef CONFIG_GRKERNSEC_DMESG
93311 + grsec_enable_dmesg = 1;
93312 +#endif
93313 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
93314 + grsec_enable_blackhole = 1;
93315 + grsec_lastack_retries = 4;
93316 +#endif
93317 +#ifdef CONFIG_GRKERNSEC_FIFO
93318 + grsec_enable_fifo = 1;
93319 +#endif
93320 +#ifdef CONFIG_GRKERNSEC_EXECLOG
93321 + grsec_enable_execlog = 1;
93322 +#endif
93323 +#ifdef CONFIG_GRKERNSEC_SETXID
93324 + grsec_enable_setxid = 1;
93325 +#endif
93326 +#ifdef CONFIG_GRKERNSEC_SIGNAL
93327 + grsec_enable_signal = 1;
93328 +#endif
93329 +#ifdef CONFIG_GRKERNSEC_FORKFAIL
93330 + grsec_enable_forkfail = 1;
93331 +#endif
93332 +#ifdef CONFIG_GRKERNSEC_TIME
93333 + grsec_enable_time = 1;
93334 +#endif
93335 +#ifdef CONFIG_GRKERNSEC_RESLOG
93336 + grsec_resource_logging = 1;
93337 +#endif
93338 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
93339 + grsec_enable_chroot_findtask = 1;
93340 +#endif
93341 +#ifdef CONFIG_GRKERNSEC_CHROOT_UNIX
93342 + grsec_enable_chroot_unix = 1;
93343 +#endif
93344 +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT
93345 + grsec_enable_chroot_mount = 1;
93346 +#endif
93347 +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR
93348 + grsec_enable_chroot_fchdir = 1;
93349 +#endif
93350 +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT
93351 + grsec_enable_chroot_shmat = 1;
93352 +#endif
93353 +#ifdef CONFIG_GRKERNSEC_AUDIT_PTRACE
93354 + grsec_enable_audit_ptrace = 1;
93355 +#endif
93356 +#ifdef CONFIG_GRKERNSEC_CHROOT_DOUBLE
93357 + grsec_enable_chroot_double = 1;
93358 +#endif
93359 +#ifdef CONFIG_GRKERNSEC_CHROOT_PIVOT
93360 + grsec_enable_chroot_pivot = 1;
93361 +#endif
93362 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHDIR
93363 + grsec_enable_chroot_chdir = 1;
93364 +#endif
93365 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD
93366 + grsec_enable_chroot_chmod = 1;
93367 +#endif
93368 +#ifdef CONFIG_GRKERNSEC_CHROOT_MKNOD
93369 + grsec_enable_chroot_mknod = 1;
93370 +#endif
93371 +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE
93372 + grsec_enable_chroot_nice = 1;
93373 +#endif
93374 +#ifdef CONFIG_GRKERNSEC_CHROOT_EXECLOG
93375 + grsec_enable_chroot_execlog = 1;
93376 +#endif
93377 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
93378 + grsec_enable_chroot_caps = 1;
93379 +#endif
93380 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
93381 + grsec_enable_chroot_rename = 1;
93382 +#endif
93383 +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL
93384 + grsec_enable_chroot_sysctl = 1;
93385 +#endif
93386 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
93387 + grsec_enable_symlinkown = 1;
93388 + grsec_symlinkown_gid = KGIDT_INIT(CONFIG_GRKERNSEC_SYMLINKOWN_GID);
93389 +#endif
93390 +#ifdef CONFIG_GRKERNSEC_TPE
93391 + grsec_enable_tpe = 1;
93392 + grsec_tpe_gid = KGIDT_INIT(CONFIG_GRKERNSEC_TPE_GID);
93393 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
93394 + grsec_enable_tpe_all = 1;
93395 +#endif
93396 +#endif
93397 +#ifdef CONFIG_GRKERNSEC_SOCKET_ALL
93398 + grsec_enable_socket_all = 1;
93399 + grsec_socket_all_gid = KGIDT_INIT(CONFIG_GRKERNSEC_SOCKET_ALL_GID);
93400 +#endif
93401 +#ifdef CONFIG_GRKERNSEC_SOCKET_CLIENT
93402 + grsec_enable_socket_client = 1;
93403 + grsec_socket_client_gid = KGIDT_INIT(CONFIG_GRKERNSEC_SOCKET_CLIENT_GID);
93404 +#endif
93405 +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER
93406 + grsec_enable_socket_server = 1;
93407 + grsec_socket_server_gid = KGIDT_INIT(CONFIG_GRKERNSEC_SOCKET_SERVER_GID);
93408 +#endif
93409 +#endif
93410 +#ifdef CONFIG_GRKERNSEC_DENYUSB_FORCE
93411 + grsec_deny_new_usb = 1;
93412 +#endif
93413 +
93414 + return;
93415 +}
93416 diff --git a/grsecurity/grsec_ipc.c b/grsecurity/grsec_ipc.c
93417 new file mode 100644
93418 index 0000000..1773300
93419 --- /dev/null
93420 +++ b/grsecurity/grsec_ipc.c
93421 @@ -0,0 +1,48 @@
93422 +#include <linux/kernel.h>
93423 +#include <linux/mm.h>
93424 +#include <linux/sched.h>
93425 +#include <linux/file.h>
93426 +#include <linux/ipc.h>
93427 +#include <linux/ipc_namespace.h>
93428 +#include <linux/grsecurity.h>
93429 +#include <linux/grinternal.h>
93430 +
93431 +int
93432 +gr_ipc_permitted(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, int requested_mode, int granted_mode)
93433 +{
93434 +#ifdef CONFIG_GRKERNSEC_HARDEN_IPC
93435 + int write;
93436 + int orig_granted_mode;
93437 + kuid_t euid;
93438 + kgid_t egid;
93439 +
93440 + if (!grsec_enable_harden_ipc)
93441 + return 1;
93442 +
93443 + euid = current_euid();
93444 + egid = current_egid();
93445 +
93446 + write = requested_mode & 00002;
93447 + orig_granted_mode = ipcp->mode;
93448 +
93449 + if (uid_eq(euid, ipcp->cuid) || uid_eq(euid, ipcp->uid))
93450 + orig_granted_mode >>= 6;
93451 + else {
93452 + /* if likely wrong permissions, lock to user */
93453 + if (orig_granted_mode & 0007)
93454 + orig_granted_mode = 0;
93455 + /* otherwise do a egid-only check */
93456 + else if (gid_eq(egid, ipcp->cgid) || gid_eq(egid, ipcp->gid))
93457 + orig_granted_mode >>= 3;
93458 + /* otherwise, no access */
93459 + else
93460 + orig_granted_mode = 0;
93461 + }
93462 + if (!(requested_mode & ~granted_mode & 0007) && (requested_mode & ~orig_granted_mode & 0007) &&
93463 + !ns_capable_nolog(ns->user_ns, CAP_IPC_OWNER)) {
93464 + gr_log_str_int(GR_DONT_AUDIT, GR_IPC_DENIED_MSG, write ? "write" : "read", GR_GLOBAL_UID(ipcp->cuid));
93465 + return 0;
93466 + }
93467 +#endif
93468 + return 1;
93469 +}
93470 diff --git a/grsecurity/grsec_link.c b/grsecurity/grsec_link.c
93471 new file mode 100644
93472 index 0000000..84c44a0
93473 --- /dev/null
93474 +++ b/grsecurity/grsec_link.c
93475 @@ -0,0 +1,65 @@
93476 +#include <linux/kernel.h>
93477 +#include <linux/sched.h>
93478 +#include <linux/fs.h>
93479 +#include <linux/file.h>
93480 +#include <linux/grinternal.h>
93481 +
93482 +int gr_get_symlinkown_enabled(void)
93483 +{
93484 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
93485 + if (grsec_enable_symlinkown && in_group_p(grsec_symlinkown_gid))
93486 + return 1;
93487 +#endif
93488 + return 0;
93489 +}
93490 +
93491 +int gr_handle_symlink_owner(const struct path *link, const struct inode *target)
93492 +{
93493 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
93494 + const struct inode *link_inode = d_backing_inode(link->dentry);
93495 +
93496 + if (target && !uid_eq(link_inode->i_uid, target->i_uid)) {
93497 + gr_log_fs_int2(GR_DONT_AUDIT, GR_SYMLINKOWNER_MSG, link->dentry, link->mnt, GR_GLOBAL_UID(link_inode->i_uid), GR_GLOBAL_UID(target->i_uid));
93498 + return 1;
93499 + }
93500 +#endif
93501 + return 0;
93502 +}
93503 +
93504 +int
93505 +gr_handle_follow_link(const struct dentry *dentry, const struct vfsmount *mnt)
93506 +{
93507 +#ifdef CONFIG_GRKERNSEC_LINK
93508 + struct inode *inode = d_backing_inode(dentry);
93509 + struct inode *parent = d_backing_inode(dentry->d_parent);
93510 + const struct cred *cred = current_cred();
93511 +
93512 + if (grsec_enable_link && d_is_symlink(dentry) &&
93513 + (parent->i_mode & S_ISVTX) && !uid_eq(parent->i_uid, inode->i_uid) &&
93514 + (parent->i_mode & S_IWOTH) && !uid_eq(cred->fsuid, inode->i_uid)) {
93515 + gr_log_fs_int2(GR_DONT_AUDIT, GR_SYMLINK_MSG, dentry, mnt, GR_GLOBAL_UID(inode->i_uid), GR_GLOBAL_GID(inode->i_gid));
93516 + return -EACCES;
93517 + }
93518 +#endif
93519 + return 0;
93520 +}
93521 +
93522 +int
93523 +gr_handle_hardlink(const struct dentry *dentry,
93524 + const struct vfsmount *mnt,
93525 + const struct filename *to)
93526 +{
93527 +#ifdef CONFIG_GRKERNSEC_LINK
93528 + struct inode *inode = d_backing_inode(dentry);
93529 + const struct cred *cred = current_cred();
93530 +
93531 + if (grsec_enable_link && !uid_eq(cred->fsuid, inode->i_uid) &&
93532 + (!d_is_reg(dentry) || is_privileged_binary(dentry) ||
93533 + (inode_permission(inode, MAY_READ | MAY_WRITE))) &&
93534 + !capable(CAP_FOWNER) && gr_is_global_nonroot(cred->uid)) {
93535 + gr_log_fs_int2_str(GR_DONT_AUDIT, GR_HARDLINK_MSG, dentry, mnt, GR_GLOBAL_UID(inode->i_uid), GR_GLOBAL_GID(inode->i_gid), to->name);
93536 + return -EPERM;
93537 + }
93538 +#endif
93539 + return 0;
93540 +}
93541 diff --git a/grsecurity/grsec_log.c b/grsecurity/grsec_log.c
93542 new file mode 100644
93543 index 0000000..a24b338
93544 --- /dev/null
93545 +++ b/grsecurity/grsec_log.c
93546 @@ -0,0 +1,340 @@
93547 +#include <linux/kernel.h>
93548 +#include <linux/sched.h>
93549 +#include <linux/file.h>
93550 +#include <linux/tty.h>
93551 +#include <linux/fs.h>
93552 +#include <linux/mm.h>
93553 +#include <linux/grinternal.h>
93554 +
93555 +#ifdef CONFIG_TREE_PREEMPT_RCU
93556 +#define DISABLE_PREEMPT() preempt_disable()
93557 +#define ENABLE_PREEMPT() preempt_enable()
93558 +#else
93559 +#define DISABLE_PREEMPT()
93560 +#define ENABLE_PREEMPT()
93561 +#endif
93562 +
93563 +#define BEGIN_LOCKS(x) \
93564 + DISABLE_PREEMPT(); \
93565 + rcu_read_lock(); \
93566 + read_lock(&tasklist_lock); \
93567 + read_lock(&grsec_exec_file_lock); \
93568 + if (x != GR_DO_AUDIT) \
93569 + spin_lock(&grsec_alert_lock); \
93570 + else \
93571 + spin_lock(&grsec_audit_lock)
93572 +
93573 +#define END_LOCKS(x) \
93574 + if (x != GR_DO_AUDIT) \
93575 + spin_unlock(&grsec_alert_lock); \
93576 + else \
93577 + spin_unlock(&grsec_audit_lock); \
93578 + read_unlock(&grsec_exec_file_lock); \
93579 + read_unlock(&tasklist_lock); \
93580 + rcu_read_unlock(); \
93581 + ENABLE_PREEMPT(); \
93582 + if (x == GR_DONT_AUDIT) \
93583 + gr_handle_alertkill(current)
93584 +
93585 +enum {
93586 + FLOODING,
93587 + NO_FLOODING
93588 +};
93589 +
93590 +extern char *gr_alert_log_fmt;
93591 +extern char *gr_audit_log_fmt;
93592 +extern char *gr_alert_log_buf;
93593 +extern char *gr_audit_log_buf;
93594 +
93595 +static int gr_log_start(int audit)
93596 +{
93597 + char *loglevel = (audit == GR_DO_AUDIT) ? KERN_INFO : KERN_ALERT;
93598 + char *fmt = (audit == GR_DO_AUDIT) ? gr_audit_log_fmt : gr_alert_log_fmt;
93599 + char *buf = (audit == GR_DO_AUDIT) ? gr_audit_log_buf : gr_alert_log_buf;
93600 +#if (CONFIG_GRKERNSEC_FLOODTIME > 0 && CONFIG_GRKERNSEC_FLOODBURST > 0)
93601 + unsigned long curr_secs = get_seconds();
93602 +
93603 + if (audit == GR_DO_AUDIT)
93604 + goto set_fmt;
93605 +
93606 + if (!grsec_alert_wtime || time_after(curr_secs, grsec_alert_wtime + CONFIG_GRKERNSEC_FLOODTIME)) {
93607 + grsec_alert_wtime = curr_secs;
93608 + grsec_alert_fyet = 0;
93609 + } else if (time_before_eq(curr_secs, grsec_alert_wtime + CONFIG_GRKERNSEC_FLOODTIME)
93610 + && (grsec_alert_fyet < CONFIG_GRKERNSEC_FLOODBURST)) {
93611 + grsec_alert_fyet++;
93612 + } else if (grsec_alert_fyet == CONFIG_GRKERNSEC_FLOODBURST) {
93613 + grsec_alert_wtime = curr_secs;
93614 + grsec_alert_fyet++;
93615 + printk(KERN_ALERT "grsec: more alerts, logging disabled for %d seconds\n", CONFIG_GRKERNSEC_FLOODTIME);
93616 + return FLOODING;
93617 + }
93618 + else return FLOODING;
93619 +
93620 +set_fmt:
93621 +#endif
93622 + memset(buf, 0, PAGE_SIZE);
93623 + if (current->signal->curr_ip && gr_acl_is_enabled()) {
93624 + sprintf(fmt, "%s%s", loglevel, "grsec: From %pI4: (%.64s:%c:%.950s) ");
93625 + snprintf(buf, PAGE_SIZE - 1, fmt, &current->signal->curr_ip, current->role->rolename, gr_roletype_to_char(), current->acl->filename);
93626 + } else if (current->signal->curr_ip) {
93627 + sprintf(fmt, "%s%s", loglevel, "grsec: From %pI4: ");
93628 + snprintf(buf, PAGE_SIZE - 1, fmt, &current->signal->curr_ip);
93629 + } else if (gr_acl_is_enabled()) {
93630 + sprintf(fmt, "%s%s", loglevel, "grsec: (%.64s:%c:%.950s) ");
93631 + snprintf(buf, PAGE_SIZE - 1, fmt, current->role->rolename, gr_roletype_to_char(), current->acl->filename);
93632 + } else {
93633 + sprintf(fmt, "%s%s", loglevel, "grsec: ");
93634 + strcpy(buf, fmt);
93635 + }
93636 +
93637 + return NO_FLOODING;
93638 +}
93639 +
93640 +static void gr_log_middle(int audit, const char *msg, va_list ap)
93641 + __attribute__ ((format (printf, 2, 0)));
93642 +
93643 +static void gr_log_middle(int audit, const char *msg, va_list ap)
93644 +{
93645 + char *buf = (audit == GR_DO_AUDIT) ? gr_audit_log_buf : gr_alert_log_buf;
93646 + unsigned int len = strlen(buf);
93647 +
93648 + vsnprintf(buf + len, PAGE_SIZE - len - 1, msg, ap);
93649 +
93650 + return;
93651 +}
93652 +
93653 +static void gr_log_middle_varargs(int audit, const char *msg, ...)
93654 + __attribute__ ((format (printf, 2, 3)));
93655 +
93656 +static void gr_log_middle_varargs(int audit, const char *msg, ...)
93657 +{
93658 + char *buf = (audit == GR_DO_AUDIT) ? gr_audit_log_buf : gr_alert_log_buf;
93659 + unsigned int len = strlen(buf);
93660 + va_list ap;
93661 +
93662 + va_start(ap, msg);
93663 + vsnprintf(buf + len, PAGE_SIZE - len - 1, msg, ap);
93664 + va_end(ap);
93665 +
93666 + return;
93667 +}
93668 +
93669 +static void gr_log_end(int audit, int append_default)
93670 +{
93671 + char *buf = (audit == GR_DO_AUDIT) ? gr_audit_log_buf : gr_alert_log_buf;
93672 + if (append_default) {
93673 + struct task_struct *task = current;
93674 + struct task_struct *parent = task->real_parent;
93675 + const struct cred *cred = __task_cred(task);
93676 + const struct cred *pcred = __task_cred(parent);
93677 + unsigned int len = strlen(buf);
93678 +
93679 + snprintf(buf + len, PAGE_SIZE - len - 1, DEFAULTSECMSG, gr_task_fullpath(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath(task), parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid));
93680 + }
93681 +
93682 + printk("%s\n", buf);
93683 +
93684 + return;
93685 +}
93686 +
93687 +void gr_log_varargs(int audit, const char *msg, int argtypes, ...)
93688 +{
93689 + int logtype;
93690 + char *result = (audit == GR_DO_AUDIT) ? "successful" : "denied";
93691 + char *str1 = NULL, *str2 = NULL, *str3 = NULL;
93692 + void *voidptr = NULL;
93693 + int num1 = 0, num2 = 0;
93694 + unsigned long ulong1 = 0, ulong2 = 0;
93695 + struct dentry *dentry = NULL;
93696 + struct vfsmount *mnt = NULL;
93697 + struct file *file = NULL;
93698 + struct task_struct *task = NULL;
93699 + struct vm_area_struct *vma = NULL;
93700 + const struct cred *cred, *pcred;
93701 + va_list ap;
93702 +
93703 + BEGIN_LOCKS(audit);
93704 + logtype = gr_log_start(audit);
93705 + if (logtype == FLOODING) {
93706 + END_LOCKS(audit);
93707 + return;
93708 + }
93709 + va_start(ap, argtypes);
93710 + switch (argtypes) {
93711 + case GR_TTYSNIFF:
93712 + task = va_arg(ap, struct task_struct *);
93713 + gr_log_middle_varargs(audit, msg, &task->signal->curr_ip, gr_task_fullpath0(task), task->comm, task_pid_nr(task), gr_parent_task_fullpath0(task), task->real_parent->comm, task_pid_nr(task->real_parent));
93714 + break;
93715 + case GR_SYSCTL_HIDDEN:
93716 + str1 = va_arg(ap, char *);
93717 + gr_log_middle_varargs(audit, msg, result, str1);
93718 + break;
93719 + case GR_RBAC:
93720 + dentry = va_arg(ap, struct dentry *);
93721 + mnt = va_arg(ap, struct vfsmount *);
93722 + gr_log_middle_varargs(audit, msg, result, gr_to_filename(dentry, mnt));
93723 + break;
93724 + case GR_RBAC_STR:
93725 + dentry = va_arg(ap, struct dentry *);
93726 + mnt = va_arg(ap, struct vfsmount *);
93727 + str1 = va_arg(ap, char *);
93728 + gr_log_middle_varargs(audit, msg, result, gr_to_filename(dentry, mnt), str1);
93729 + break;
93730 + case GR_STR_RBAC:
93731 + str1 = va_arg(ap, char *);
93732 + dentry = va_arg(ap, struct dentry *);
93733 + mnt = va_arg(ap, struct vfsmount *);
93734 + gr_log_middle_varargs(audit, msg, result, str1, gr_to_filename(dentry, mnt));
93735 + break;
93736 + case GR_RBAC_MODE2:
93737 + dentry = va_arg(ap, struct dentry *);
93738 + mnt = va_arg(ap, struct vfsmount *);
93739 + str1 = va_arg(ap, char *);
93740 + str2 = va_arg(ap, char *);
93741 + gr_log_middle_varargs(audit, msg, result, gr_to_filename(dentry, mnt), str1, str2);
93742 + break;
93743 + case GR_RBAC_MODE3:
93744 + dentry = va_arg(ap, struct dentry *);
93745 + mnt = va_arg(ap, struct vfsmount *);
93746 + str1 = va_arg(ap, char *);
93747 + str2 = va_arg(ap, char *);
93748 + str3 = va_arg(ap, char *);
93749 + gr_log_middle_varargs(audit, msg, result, gr_to_filename(dentry, mnt), str1, str2, str3);
93750 + break;
93751 + case GR_FILENAME:
93752 + dentry = va_arg(ap, struct dentry *);
93753 + mnt = va_arg(ap, struct vfsmount *);
93754 + gr_log_middle_varargs(audit, msg, gr_to_filename(dentry, mnt));
93755 + break;
93756 + case GR_STR_FILENAME:
93757 + str1 = va_arg(ap, char *);
93758 + dentry = va_arg(ap, struct dentry *);
93759 + mnt = va_arg(ap, struct vfsmount *);
93760 + gr_log_middle_varargs(audit, msg, str1, gr_to_filename(dentry, mnt));
93761 + break;
93762 + case GR_FILENAME_STR:
93763 + dentry = va_arg(ap, struct dentry *);
93764 + mnt = va_arg(ap, struct vfsmount *);
93765 + str1 = va_arg(ap, char *);
93766 + gr_log_middle_varargs(audit, msg, gr_to_filename(dentry, mnt), str1);
93767 + break;
93768 + case GR_FILENAME_TWO_INT:
93769 + dentry = va_arg(ap, struct dentry *);
93770 + mnt = va_arg(ap, struct vfsmount *);
93771 + num1 = va_arg(ap, int);
93772 + num2 = va_arg(ap, int);
93773 + gr_log_middle_varargs(audit, msg, gr_to_filename(dentry, mnt), num1, num2);
93774 + break;
93775 + case GR_FILENAME_TWO_INT_STR:
93776 + dentry = va_arg(ap, struct dentry *);
93777 + mnt = va_arg(ap, struct vfsmount *);
93778 + num1 = va_arg(ap, int);
93779 + num2 = va_arg(ap, int);
93780 + str1 = va_arg(ap, char *);
93781 + gr_log_middle_varargs(audit, msg, gr_to_filename(dentry, mnt), num1, num2, str1);
93782 + break;
93783 + case GR_TEXTREL:
93784 + str1 = va_arg(ap, char *);
93785 + file = va_arg(ap, struct file *);
93786 + ulong1 = va_arg(ap, unsigned long);
93787 + ulong2 = va_arg(ap, unsigned long);
93788 + gr_log_middle_varargs(audit, msg, str1, file ? gr_to_filename(file->f_path.dentry, file->f_path.mnt) : "<anonymous mapping>", ulong1, ulong2);
93789 + break;
93790 + case GR_PTRACE:
93791 + task = va_arg(ap, struct task_struct *);
93792 + gr_log_middle_varargs(audit, msg, task->exec_file ? gr_to_filename(task->exec_file->f_path.dentry, task->exec_file->f_path.mnt) : "(none)", task->comm, task_pid_nr(task));
93793 + break;
93794 + case GR_RESOURCE:
93795 + task = va_arg(ap, struct task_struct *);
93796 + cred = __task_cred(task);
93797 + pcred = __task_cred(task->real_parent);
93798 + ulong1 = va_arg(ap, unsigned long);
93799 + str1 = va_arg(ap, char *);
93800 + ulong2 = va_arg(ap, unsigned long);
93801 + gr_log_middle_varargs(audit, msg, ulong1, str1, ulong2, gr_task_fullpath(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath(task), task->real_parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid));
93802 + break;
93803 + case GR_CAP:
93804 + task = va_arg(ap, struct task_struct *);
93805 + cred = __task_cred(task);
93806 + pcred = __task_cred(task->real_parent);
93807 + str1 = va_arg(ap, char *);
93808 + gr_log_middle_varargs(audit, msg, str1, gr_task_fullpath(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath(task), task->real_parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid));
93809 + break;
93810 + case GR_SIG:
93811 + str1 = va_arg(ap, char *);
93812 + voidptr = va_arg(ap, void *);
93813 + gr_log_middle_varargs(audit, msg, str1, voidptr);
93814 + break;
93815 + case GR_SIG2:
93816 + task = va_arg(ap, struct task_struct *);
93817 + cred = __task_cred(task);
93818 + pcred = __task_cred(task->real_parent);
93819 + num1 = va_arg(ap, int);
93820 + gr_log_middle_varargs(audit, msg, num1, gr_task_fullpath0(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath0(task), task->real_parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid));
93821 + break;
93822 + case GR_CRASH1:
93823 + task = va_arg(ap, struct task_struct *);
93824 + cred = __task_cred(task);
93825 + pcred = __task_cred(task->real_parent);
93826 + ulong1 = va_arg(ap, unsigned long);
93827 + gr_log_middle_varargs(audit, msg, gr_task_fullpath(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath(task), task->real_parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid), GR_GLOBAL_UID(cred->uid), ulong1);
93828 + break;
93829 + case GR_CRASH2:
93830 + task = va_arg(ap, struct task_struct *);
93831 + cred = __task_cred(task);
93832 + pcred = __task_cred(task->real_parent);
93833 + ulong1 = va_arg(ap, unsigned long);
93834 + gr_log_middle_varargs(audit, msg, gr_task_fullpath(task), task->comm, task_pid_nr(task), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), gr_parent_task_fullpath(task), task->real_parent->comm, task_pid_nr(task->real_parent), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid), ulong1);
93835 + break;
93836 + case GR_RWXMAP:
93837 + file = va_arg(ap, struct file *);
93838 + gr_log_middle_varargs(audit, msg, file ? gr_to_filename(file->f_path.dentry, file->f_path.mnt) : "<anonymous mapping>");
93839 + break;
93840 + case GR_RWXMAPVMA:
93841 + vma = va_arg(ap, struct vm_area_struct *);
93842 + if (vma->vm_file)
93843 + str1 = gr_to_filename(vma->vm_file->f_path.dentry, vma->vm_file->f_path.mnt);
93844 + else if (vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP))
93845 + str1 = "<stack>";
93846 + else if (vma->vm_start <= current->mm->brk &&
93847 + vma->vm_end >= current->mm->start_brk)
93848 + str1 = "<heap>";
93849 + else
93850 + str1 = "<anonymous mapping>";
93851 + gr_log_middle_varargs(audit, msg, str1);
93852 + break;
93853 + case GR_PSACCT:
93854 + {
93855 + unsigned int wday, cday;
93856 + __u8 whr, chr;
93857 + __u8 wmin, cmin;
93858 + __u8 wsec, csec;
93859 +
93860 + task = va_arg(ap, struct task_struct *);
93861 + wday = va_arg(ap, unsigned int);
93862 + cday = va_arg(ap, unsigned int);
93863 + whr = va_arg(ap, int);
93864 + chr = va_arg(ap, int);
93865 + wmin = va_arg(ap, int);
93866 + cmin = va_arg(ap, int);
93867 + wsec = va_arg(ap, int);
93868 + csec = va_arg(ap, int);
93869 + ulong1 = va_arg(ap, unsigned long);
93870 + cred = __task_cred(task);
93871 + pcred = __task_cred(task->real_parent);
93872 +
93873 + gr_log_middle_varargs(audit, msg, gr_task_fullpath(task), task->comm, task_pid_nr(task), &task->signal->curr_ip, tty_name(task->signal->tty), GR_GLOBAL_UID(cred->uid), GR_GLOBAL_UID(cred->euid), GR_GLOBAL_GID(cred->gid), GR_GLOBAL_GID(cred->egid), wday, whr, wmin, wsec, cday, chr, cmin, csec, (task->flags & PF_SIGNALED) ? "killed by signal" : "exited", ulong1, gr_parent_task_fullpath(task), task->real_parent->comm, task_pid_nr(task->real_parent), &task->real_parent->signal->curr_ip, tty_name(task->real_parent->signal->tty), GR_GLOBAL_UID(pcred->uid), GR_GLOBAL_UID(pcred->euid), GR_GLOBAL_GID(pcred->gid), GR_GLOBAL_GID(pcred->egid));
93874 + }
93875 + break;
93876 + default:
93877 + gr_log_middle(audit, msg, ap);
93878 + }
93879 + va_end(ap);
93880 + // these don't need DEFAULTSECARGS printed on the end
93881 + if (argtypes == GR_CRASH1 || argtypes == GR_CRASH2)
93882 + gr_log_end(audit, 0);
93883 + else
93884 + gr_log_end(audit, 1);
93885 + END_LOCKS(audit);
93886 +}
93887 diff --git a/grsecurity/grsec_mem.c b/grsecurity/grsec_mem.c
93888 new file mode 100644
93889 index 0000000..0e39d8c7
93890 --- /dev/null
93891 +++ b/grsecurity/grsec_mem.c
93892 @@ -0,0 +1,48 @@
93893 +#include <linux/kernel.h>
93894 +#include <linux/sched.h>
93895 +#include <linux/mm.h>
93896 +#include <linux/mman.h>
93897 +#include <linux/module.h>
93898 +#include <linux/grinternal.h>
93899 +
93900 +void gr_handle_msr_write(void)
93901 +{
93902 + gr_log_noargs(GR_DONT_AUDIT, GR_MSRWRITE_MSG);
93903 + return;
93904 +}
93905 +EXPORT_SYMBOL_GPL(gr_handle_msr_write);
93906 +
93907 +void
93908 +gr_handle_ioperm(void)
93909 +{
93910 + gr_log_noargs(GR_DONT_AUDIT, GR_IOPERM_MSG);
93911 + return;
93912 +}
93913 +
93914 +void
93915 +gr_handle_iopl(void)
93916 +{
93917 + gr_log_noargs(GR_DONT_AUDIT, GR_IOPL_MSG);
93918 + return;
93919 +}
93920 +
93921 +void
93922 +gr_handle_mem_readwrite(u64 from, u64 to)
93923 +{
93924 + gr_log_two_u64(GR_DONT_AUDIT, GR_MEM_READWRITE_MSG, from, to);
93925 + return;
93926 +}
93927 +
93928 +void
93929 +gr_handle_vm86(void)
93930 +{
93931 + gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
93932 + return;
93933 +}
93934 +
93935 +void
93936 +gr_log_badprocpid(const char *entry)
93937 +{
93938 + gr_log_str(GR_DONT_AUDIT, GR_BADPROCPID_MSG, entry);
93939 + return;
93940 +}
93941 diff --git a/grsecurity/grsec_mount.c b/grsecurity/grsec_mount.c
93942 new file mode 100644
93943 index 0000000..fe02bf4
93944 --- /dev/null
93945 +++ b/grsecurity/grsec_mount.c
93946 @@ -0,0 +1,65 @@
93947 +#include <linux/kernel.h>
93948 +#include <linux/sched.h>
93949 +#include <linux/mount.h>
93950 +#include <linux/major.h>
93951 +#include <linux/grsecurity.h>
93952 +#include <linux/grinternal.h>
93953 +
93954 +void
93955 +gr_log_remount(const char *devname, const int retval)
93956 +{
93957 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
93958 + if (grsec_enable_mount && (retval >= 0))
93959 + gr_log_str(GR_DO_AUDIT, GR_REMOUNT_AUDIT_MSG, devname ? devname : "none");
93960 +#endif
93961 + return;
93962 +}
93963 +
93964 +void
93965 +gr_log_unmount(const char *devname, const int retval)
93966 +{
93967 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
93968 + if (grsec_enable_mount && (retval >= 0))
93969 + gr_log_str(GR_DO_AUDIT, GR_UNMOUNT_AUDIT_MSG, devname ? devname : "none");
93970 +#endif
93971 + return;
93972 +}
93973 +
93974 +void
93975 +gr_log_mount(const char *from, struct path *to, const int retval)
93976 +{
93977 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
93978 + if (grsec_enable_mount && (retval >= 0))
93979 + gr_log_str_fs(GR_DO_AUDIT, GR_MOUNT_AUDIT_MSG, from ? from : "none", to->dentry, to->mnt);
93980 +#endif
93981 + return;
93982 +}
93983 +
93984 +int
93985 +gr_handle_rofs_mount(struct dentry *dentry, struct vfsmount *mnt, int mnt_flags)
93986 +{
93987 +#ifdef CONFIG_GRKERNSEC_ROFS
93988 + if (grsec_enable_rofs && !(mnt_flags & MNT_READONLY)) {
93989 + gr_log_fs_generic(GR_DO_AUDIT, GR_ROFS_MOUNT_MSG, dentry, mnt);
93990 + return -EPERM;
93991 + } else
93992 + return 0;
93993 +#endif
93994 + return 0;
93995 +}
93996 +
93997 +int
93998 +gr_handle_rofs_blockwrite(struct dentry *dentry, struct vfsmount *mnt, int acc_mode)
93999 +{
94000 +#ifdef CONFIG_GRKERNSEC_ROFS
94001 + struct inode *inode = d_backing_inode(dentry);
94002 +
94003 + if (grsec_enable_rofs && (acc_mode & MAY_WRITE) &&
94004 + inode && (S_ISBLK(inode->i_mode) || (S_ISCHR(inode->i_mode) && imajor(inode) == RAW_MAJOR))) {
94005 + gr_log_fs_generic(GR_DO_AUDIT, GR_ROFS_BLOCKWRITE_MSG, dentry, mnt);
94006 + return -EPERM;
94007 + } else
94008 + return 0;
94009 +#endif
94010 + return 0;
94011 +}
94012 diff --git a/grsecurity/grsec_pax.c b/grsecurity/grsec_pax.c
94013 new file mode 100644
94014 index 0000000..2ad7b96
94015 --- /dev/null
94016 +++ b/grsecurity/grsec_pax.c
94017 @@ -0,0 +1,47 @@
94018 +#include <linux/kernel.h>
94019 +#include <linux/sched.h>
94020 +#include <linux/mm.h>
94021 +#include <linux/file.h>
94022 +#include <linux/grinternal.h>
94023 +#include <linux/grsecurity.h>
94024 +
94025 +void
94026 +gr_log_textrel(struct vm_area_struct * vma, bool is_textrel_rw)
94027 +{
94028 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
94029 + if (grsec_enable_log_rwxmaps)
94030 + gr_log_textrel_ulong_ulong(GR_DONT_AUDIT, GR_TEXTREL_AUDIT_MSG,
94031 + is_textrel_rw ? "executable to writable" : "writable to executable",
94032 + vma->vm_file, vma->vm_start, vma->vm_pgoff);
94033 +#endif
94034 + return;
94035 +}
94036 +
94037 +void gr_log_ptgnustack(struct file *file)
94038 +{
94039 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
94040 + if (grsec_enable_log_rwxmaps)
94041 + gr_log_rwxmap(GR_DONT_AUDIT, GR_PTGNUSTACK_MSG, file);
94042 +#endif
94043 + return;
94044 +}
94045 +
94046 +void
94047 +gr_log_rwxmmap(struct file *file)
94048 +{
94049 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
94050 + if (grsec_enable_log_rwxmaps)
94051 + gr_log_rwxmap(GR_DONT_AUDIT, GR_RWXMMAP_MSG, file);
94052 +#endif
94053 + return;
94054 +}
94055 +
94056 +void
94057 +gr_log_rwxmprotect(struct vm_area_struct *vma)
94058 +{
94059 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
94060 + if (grsec_enable_log_rwxmaps)
94061 + gr_log_rwxmap_vma(GR_DONT_AUDIT, GR_RWXMPROTECT_MSG, vma);
94062 +#endif
94063 + return;
94064 +}
94065 diff --git a/grsecurity/grsec_proc.c b/grsecurity/grsec_proc.c
94066 new file mode 100644
94067 index 0000000..2005a3a
94068 --- /dev/null
94069 +++ b/grsecurity/grsec_proc.c
94070 @@ -0,0 +1,20 @@
94071 +#include <linux/kernel.h>
94072 +#include <linux/sched.h>
94073 +#include <linux/grsecurity.h>
94074 +#include <linux/grinternal.h>
94075 +
94076 +int gr_proc_is_restricted(void)
94077 +{
94078 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
94079 + const struct cred *cred = current_cred();
94080 +#endif
94081 +
94082 +#ifdef CONFIG_GRKERNSEC_PROC_USER
94083 + if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID))
94084 + return -EACCES;
94085 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
94086 + if (!uid_eq(cred->fsuid, GLOBAL_ROOT_UID) && !in_group_p(grsec_proc_gid))
94087 + return -EACCES;
94088 +#endif
94089 + return 0;
94090 +}
94091 diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c
94092 new file mode 100644
94093 index 0000000..304c518
94094 --- /dev/null
94095 +++ b/grsecurity/grsec_ptrace.c
94096 @@ -0,0 +1,30 @@
94097 +#include <linux/kernel.h>
94098 +#include <linux/sched.h>
94099 +#include <linux/grinternal.h>
94100 +#include <linux/security.h>
94101 +
94102 +void
94103 +gr_audit_ptrace(struct task_struct *task)
94104 +{
94105 +#ifdef CONFIG_GRKERNSEC_AUDIT_PTRACE
94106 + if (grsec_enable_audit_ptrace)
94107 + gr_log_ptrace(GR_DO_AUDIT, GR_PTRACE_AUDIT_MSG, task);
94108 +#endif
94109 + return;
94110 +}
94111 +
94112 +int
94113 +gr_ptrace_readexec(struct file *file, int unsafe_flags)
94114 +{
94115 +#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
94116 + const struct dentry *dentry = file->f_path.dentry;
94117 + const struct vfsmount *mnt = file->f_path.mnt;
94118 +
94119 + if (grsec_enable_ptrace_readexec && (unsafe_flags & LSM_UNSAFE_PTRACE) &&
94120 + (inode_permission(d_backing_inode(dentry), MAY_READ) || !gr_acl_handle_open(dentry, mnt, MAY_READ))) {
94121 + gr_log_fs_generic(GR_DONT_AUDIT, GR_PTRACE_READEXEC_MSG, dentry, mnt);
94122 + return -EACCES;
94123 + }
94124 +#endif
94125 + return 0;
94126 +}
94127 diff --git a/grsecurity/grsec_sig.c b/grsecurity/grsec_sig.c
94128 new file mode 100644
94129 index 0000000..3860c7e
94130 --- /dev/null
94131 +++ b/grsecurity/grsec_sig.c
94132 @@ -0,0 +1,236 @@
94133 +#include <linux/kernel.h>
94134 +#include <linux/sched.h>
94135 +#include <linux/fs.h>
94136 +#include <linux/delay.h>
94137 +#include <linux/grsecurity.h>
94138 +#include <linux/grinternal.h>
94139 +#include <linux/hardirq.h>
94140 +
94141 +char *signames[] = {
94142 + [SIGSEGV] = "Segmentation fault",
94143 + [SIGILL] = "Illegal instruction",
94144 + [SIGABRT] = "Abort",
94145 + [SIGBUS] = "Invalid alignment/Bus error"
94146 +};
94147 +
94148 +void
94149 +gr_log_signal(const int sig, const void *addr, const struct task_struct *t)
94150 +{
94151 +#ifdef CONFIG_GRKERNSEC_SIGNAL
94152 + if (grsec_enable_signal && ((sig == SIGSEGV) || (sig == SIGILL) ||
94153 + (sig == SIGABRT) || (sig == SIGBUS))) {
94154 + if (task_pid_nr(t) == task_pid_nr(current)) {
94155 + gr_log_sig_addr(GR_DONT_AUDIT_GOOD, GR_UNISIGLOG_MSG, signames[sig], addr);
94156 + } else {
94157 + gr_log_sig_task(GR_DONT_AUDIT_GOOD, GR_DUALSIGLOG_MSG, t, sig);
94158 + }
94159 + }
94160 +#endif
94161 + return;
94162 +}
94163 +
94164 +int
94165 +gr_handle_signal(const struct task_struct *p, const int sig)
94166 +{
94167 +#ifdef CONFIG_GRKERNSEC
94168 + /* ignore the 0 signal for protected task checks */
94169 + if (task_pid_nr(current) > 1 && sig && gr_check_protected_task(p)) {
94170 + gr_log_sig_task(GR_DONT_AUDIT, GR_SIG_ACL_MSG, p, sig);
94171 + return -EPERM;
94172 + } else if (gr_pid_is_chrooted((struct task_struct *)p)) {
94173 + return -EPERM;
94174 + }
94175 +#endif
94176 + return 0;
94177 +}
94178 +
94179 +#ifdef CONFIG_GRKERNSEC
94180 +extern int specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t);
94181 +
94182 +int gr_fake_force_sig(int sig, struct task_struct *t)
94183 +{
94184 + unsigned long int flags;
94185 + int ret, blocked, ignored;
94186 + struct k_sigaction *action;
94187 +
94188 + spin_lock_irqsave(&t->sighand->siglock, flags);
94189 + action = &t->sighand->action[sig-1];
94190 + ignored = action->sa.sa_handler == SIG_IGN;
94191 + blocked = sigismember(&t->blocked, sig);
94192 + if (blocked || ignored) {
94193 + action->sa.sa_handler = SIG_DFL;
94194 + if (blocked) {
94195 + sigdelset(&t->blocked, sig);
94196 + recalc_sigpending_and_wake(t);
94197 + }
94198 + }
94199 + if (action->sa.sa_handler == SIG_DFL)
94200 + t->signal->flags &= ~SIGNAL_UNKILLABLE;
94201 + ret = specific_send_sig_info(sig, SEND_SIG_PRIV, t);
94202 +
94203 + spin_unlock_irqrestore(&t->sighand->siglock, flags);
94204 +
94205 + return ret;
94206 +}
94207 +#endif
94208 +
94209 +#define GR_USER_BAN_TIME (15 * 60)
94210 +#define GR_DAEMON_BRUTE_TIME (30 * 60)
94211 +
94212 +void gr_handle_brute_attach(int dumpable)
94213 +{
94214 +#ifdef CONFIG_GRKERNSEC_BRUTE
94215 + struct task_struct *p = current;
94216 + kuid_t uid = GLOBAL_ROOT_UID;
94217 + int daemon = 0;
94218 +
94219 + if (!grsec_enable_brute)
94220 + return;
94221 +
94222 + rcu_read_lock();
94223 + read_lock(&tasklist_lock);
94224 + read_lock(&grsec_exec_file_lock);
94225 + if (p->real_parent && gr_is_same_file(p->real_parent->exec_file, p->exec_file)) {
94226 + p->real_parent->brute_expires = get_seconds() + GR_DAEMON_BRUTE_TIME;
94227 + p->real_parent->brute = 1;
94228 + daemon = 1;
94229 + } else {
94230 + const struct cred *cred = __task_cred(p), *cred2;
94231 + struct task_struct *tsk, *tsk2;
94232 +
94233 + if (dumpable != SUID_DUMP_USER && gr_is_global_nonroot(cred->uid)) {
94234 + struct user_struct *user;
94235 +
94236 + uid = cred->uid;
94237 +
94238 + /* this is put upon execution past expiration */
94239 + user = find_user(uid);
94240 + if (user == NULL)
94241 + goto unlock;
94242 + user->suid_banned = 1;
94243 + user->suid_ban_expires = get_seconds() + GR_USER_BAN_TIME;
94244 + if (user->suid_ban_expires == ~0UL)
94245 + user->suid_ban_expires--;
94246 +
94247 + /* only kill other threads of the same binary, from the same user */
94248 + do_each_thread(tsk2, tsk) {
94249 + cred2 = __task_cred(tsk);
94250 + if (tsk != p && uid_eq(cred2->uid, uid) && gr_is_same_file(tsk->exec_file, p->exec_file))
94251 + gr_fake_force_sig(SIGKILL, tsk);
94252 + } while_each_thread(tsk2, tsk);
94253 + }
94254 + }
94255 +unlock:
94256 + read_unlock(&grsec_exec_file_lock);
94257 + read_unlock(&tasklist_lock);
94258 + rcu_read_unlock();
94259 +
94260 + if (gr_is_global_nonroot(uid))
94261 + gr_log_fs_int2(GR_DONT_AUDIT, GR_BRUTE_SUID_MSG, p->exec_file->f_path.dentry, p->exec_file->f_path.mnt, GR_GLOBAL_UID(uid), GR_USER_BAN_TIME / 60);
94262 + else if (daemon)
94263 + gr_log_noargs(GR_DONT_AUDIT, GR_BRUTE_DAEMON_MSG);
94264 +
94265 +#endif
94266 + return;
94267 +}
94268 +
94269 +void gr_handle_brute_check(void)
94270 +{
94271 +#ifdef CONFIG_GRKERNSEC_BRUTE
94272 + struct task_struct *p = current;
94273 +
94274 + if (unlikely(p->brute)) {
94275 + if (!grsec_enable_brute)
94276 + p->brute = 0;
94277 + else if (time_before(get_seconds(), p->brute_expires))
94278 + msleep(30 * 1000);
94279 + }
94280 +#endif
94281 + return;
94282 +}
94283 +
94284 +void gr_handle_kernel_exploit(void)
94285 +{
94286 +#ifdef CONFIG_GRKERNSEC_KERN_LOCKOUT
94287 + const struct cred *cred;
94288 + struct task_struct *tsk, *tsk2;
94289 + struct user_struct *user;
94290 + kuid_t uid;
94291 +
94292 + if (in_irq() || in_serving_softirq() || in_nmi())
94293 + panic("grsec: halting the system due to suspicious kernel crash caused in interrupt context");
94294 +
94295 + uid = current_uid();
94296 +
94297 + if (gr_is_global_root(uid))
94298 + panic("grsec: halting the system due to suspicious kernel crash caused by root");
94299 + else {
94300 + /* kill all the processes of this user, hold a reference
94301 + to their creds struct, and prevent them from creating
94302 + another process until system reset
94303 + */
94304 + printk(KERN_ALERT "grsec: banning user with uid %u until system restart for suspicious kernel crash\n",
94305 + GR_GLOBAL_UID(uid));
94306 + /* we intentionally leak this ref */
94307 + user = get_uid(current->cred->user);
94308 + if (user)
94309 + user->kernel_banned = 1;
94310 +
94311 + /* kill all processes of this user */
94312 + read_lock(&tasklist_lock);
94313 + do_each_thread(tsk2, tsk) {
94314 + cred = __task_cred(tsk);
94315 + if (uid_eq(cred->uid, uid))
94316 + gr_fake_force_sig(SIGKILL, tsk);
94317 + } while_each_thread(tsk2, tsk);
94318 + read_unlock(&tasklist_lock);
94319 + }
94320 +#endif
94321 +}
94322 +
94323 +#ifdef CONFIG_GRKERNSEC_BRUTE
94324 +static bool suid_ban_expired(struct user_struct *user)
94325 +{
94326 + if (user->suid_ban_expires != ~0UL && time_after_eq(get_seconds(), user->suid_ban_expires)) {
94327 + user->suid_banned = 0;
94328 + user->suid_ban_expires = 0;
94329 + free_uid(user);
94330 + return true;
94331 + }
94332 +
94333 + return false;
94334 +}
94335 +#endif
94336 +
94337 +int gr_process_kernel_exec_ban(void)
94338 +{
94339 +#ifdef CONFIG_GRKERNSEC_KERN_LOCKOUT
94340 + if (unlikely(current->cred->user->kernel_banned))
94341 + return -EPERM;
94342 +#endif
94343 + return 0;
94344 +}
94345 +
94346 +int gr_process_kernel_setuid_ban(struct user_struct *user)
94347 +{
94348 +#ifdef CONFIG_GRKERNSEC_KERN_LOCKOUT
94349 + if (unlikely(user->kernel_banned))
94350 + gr_fake_force_sig(SIGKILL, current);
94351 +#endif
94352 + return 0;
94353 +}
94354 +
94355 +int gr_process_suid_exec_ban(const struct linux_binprm *bprm)
94356 +{
94357 +#ifdef CONFIG_GRKERNSEC_BRUTE
94358 + struct user_struct *user = current->cred->user;
94359 + if (unlikely(user->suid_banned)) {
94360 + if (suid_ban_expired(user))
94361 + return 0;
94362 + /* disallow execution of suid binaries only */
94363 + else if (!uid_eq(bprm->cred->euid, current->cred->uid))
94364 + return -EPERM;
94365 + }
94366 +#endif
94367 + return 0;
94368 +}
94369 diff --git a/grsecurity/grsec_sock.c b/grsecurity/grsec_sock.c
94370 new file mode 100644
94371 index 0000000..a523bd2
94372 --- /dev/null
94373 +++ b/grsecurity/grsec_sock.c
94374 @@ -0,0 +1,244 @@
94375 +#include <linux/kernel.h>
94376 +#include <linux/module.h>
94377 +#include <linux/sched.h>
94378 +#include <linux/file.h>
94379 +#include <linux/net.h>
94380 +#include <linux/in.h>
94381 +#include <linux/ip.h>
94382 +#include <net/sock.h>
94383 +#include <net/inet_sock.h>
94384 +#include <linux/grsecurity.h>
94385 +#include <linux/grinternal.h>
94386 +#include <linux/gracl.h>
94387 +
94388 +extern int gr_search_udp_recvmsg(const struct sock *sk, const struct sk_buff *skb);
94389 +extern int gr_search_udp_sendmsg(const struct sock *sk, const struct sockaddr_in *addr);
94390 +
94391 +EXPORT_SYMBOL_GPL(gr_search_udp_recvmsg);
94392 +EXPORT_SYMBOL_GPL(gr_search_udp_sendmsg);
94393 +
94394 +#ifdef CONFIG_UNIX_MODULE
94395 +EXPORT_SYMBOL_GPL(gr_acl_handle_unix);
94396 +EXPORT_SYMBOL_GPL(gr_acl_handle_mknod);
94397 +EXPORT_SYMBOL_GPL(gr_handle_chroot_unix);
94398 +EXPORT_SYMBOL_GPL(gr_handle_create);
94399 +#endif
94400 +
94401 +#ifdef CONFIG_GRKERNSEC
94402 +#define gr_conn_table_size 32749
94403 +struct conn_table_entry {
94404 + struct conn_table_entry *next;
94405 + struct signal_struct *sig;
94406 +};
94407 +
94408 +struct conn_table_entry *gr_conn_table[gr_conn_table_size];
94409 +DEFINE_SPINLOCK(gr_conn_table_lock);
94410 +
94411 +extern const char * gr_socktype_to_name(unsigned char type);
94412 +extern const char * gr_proto_to_name(unsigned char proto);
94413 +extern const char * gr_sockfamily_to_name(unsigned char family);
94414 +
94415 +static int
94416 +conn_hash(__u32 saddr, __u32 daddr, __u16 sport, __u16 dport, unsigned int size)
94417 +{
94418 + return ((daddr + saddr + (sport << 8) + (dport << 16)) % size);
94419 +}
94420 +
94421 +static int
94422 +conn_match(const struct signal_struct *sig, __u32 saddr, __u32 daddr,
94423 + __u16 sport, __u16 dport)
94424 +{
94425 + if (unlikely(sig->gr_saddr == saddr && sig->gr_daddr == daddr &&
94426 + sig->gr_sport == sport && sig->gr_dport == dport))
94427 + return 1;
94428 + else
94429 + return 0;
94430 +}
94431 +
94432 +static void gr_add_to_task_ip_table_nolock(struct signal_struct *sig, struct conn_table_entry *newent)
94433 +{
94434 + struct conn_table_entry **match;
94435 + unsigned int index;
94436 +
94437 + index = conn_hash(sig->gr_saddr, sig->gr_daddr,
94438 + sig->gr_sport, sig->gr_dport,
94439 + gr_conn_table_size);
94440 +
94441 + newent->sig = sig;
94442 +
94443 + match = &gr_conn_table[index];
94444 + newent->next = *match;
94445 + *match = newent;
94446 +
94447 + return;
94448 +}
94449 +
94450 +static void gr_del_task_from_ip_table_nolock(struct signal_struct *sig)
94451 +{
94452 + struct conn_table_entry *match, *last = NULL;
94453 + unsigned int index;
94454 +
94455 + index = conn_hash(sig->gr_saddr, sig->gr_daddr,
94456 + sig->gr_sport, sig->gr_dport,
94457 + gr_conn_table_size);
94458 +
94459 + match = gr_conn_table[index];
94460 + while (match && !conn_match(match->sig,
94461 + sig->gr_saddr, sig->gr_daddr, sig->gr_sport,
94462 + sig->gr_dport)) {
94463 + last = match;
94464 + match = match->next;
94465 + }
94466 +
94467 + if (match) {
94468 + if (last)
94469 + last->next = match->next;
94470 + else
94471 + gr_conn_table[index] = NULL;
94472 + kfree(match);
94473 + }
94474 +
94475 + return;
94476 +}
94477 +
94478 +static struct signal_struct * gr_lookup_task_ip_table(__u32 saddr, __u32 daddr,
94479 + __u16 sport, __u16 dport)
94480 +{
94481 + struct conn_table_entry *match;
94482 + unsigned int index;
94483 +
94484 + index = conn_hash(saddr, daddr, sport, dport, gr_conn_table_size);
94485 +
94486 + match = gr_conn_table[index];
94487 + while (match && !conn_match(match->sig, saddr, daddr, sport, dport))
94488 + match = match->next;
94489 +
94490 + if (match)
94491 + return match->sig;
94492 + else
94493 + return NULL;
94494 +}
94495 +
94496 +#endif
94497 +
94498 +void gr_update_task_in_ip_table(const struct inet_sock *inet)
94499 +{
94500 +#ifdef CONFIG_GRKERNSEC
94501 + struct signal_struct *sig = current->signal;
94502 + struct conn_table_entry *newent;
94503 +
94504 + newent = kmalloc(sizeof(struct conn_table_entry), GFP_ATOMIC);
94505 + if (newent == NULL)
94506 + return;
94507 + /* no bh lock needed since we are called with bh disabled */
94508 + spin_lock(&gr_conn_table_lock);
94509 + gr_del_task_from_ip_table_nolock(sig);
94510 + sig->gr_saddr = inet->inet_rcv_saddr;
94511 + sig->gr_daddr = inet->inet_daddr;
94512 + sig->gr_sport = inet->inet_sport;
94513 + sig->gr_dport = inet->inet_dport;
94514 + gr_add_to_task_ip_table_nolock(sig, newent);
94515 + spin_unlock(&gr_conn_table_lock);
94516 +#endif
94517 + return;
94518 +}
94519 +
94520 +void gr_del_task_from_ip_table(struct task_struct *task)
94521 +{
94522 +#ifdef CONFIG_GRKERNSEC
94523 + spin_lock_bh(&gr_conn_table_lock);
94524 + gr_del_task_from_ip_table_nolock(task->signal);
94525 + spin_unlock_bh(&gr_conn_table_lock);
94526 +#endif
94527 + return;
94528 +}
94529 +
94530 +void
94531 +gr_attach_curr_ip(const struct sock *sk)
94532 +{
94533 +#ifdef CONFIG_GRKERNSEC
94534 + struct signal_struct *p, *set;
94535 + const struct inet_sock *inet = inet_sk(sk);
94536 +
94537 + if (unlikely(sk->sk_protocol != IPPROTO_TCP))
94538 + return;
94539 +
94540 + set = current->signal;
94541 +
94542 + spin_lock_bh(&gr_conn_table_lock);
94543 + p = gr_lookup_task_ip_table(inet->inet_daddr, inet->inet_rcv_saddr,
94544 + inet->inet_dport, inet->inet_sport);
94545 + if (unlikely(p != NULL)) {
94546 + set->curr_ip = p->curr_ip;
94547 + set->used_accept = 1;
94548 + gr_del_task_from_ip_table_nolock(p);
94549 + spin_unlock_bh(&gr_conn_table_lock);
94550 + return;
94551 + }
94552 + spin_unlock_bh(&gr_conn_table_lock);
94553 +
94554 + set->curr_ip = inet->inet_daddr;
94555 + set->used_accept = 1;
94556 +#endif
94557 + return;
94558 +}
94559 +
94560 +int
94561 +gr_handle_sock_all(const int family, const int type, const int protocol)
94562 +{
94563 +#ifdef CONFIG_GRKERNSEC_SOCKET_ALL
94564 + if (grsec_enable_socket_all && in_group_p(grsec_socket_all_gid) &&
94565 + (family != AF_UNIX)) {
94566 + if (family == AF_INET)
94567 + gr_log_str3(GR_DONT_AUDIT, GR_SOCK_MSG, gr_sockfamily_to_name(family), gr_socktype_to_name(type), gr_proto_to_name(protocol));
94568 + else
94569 + gr_log_str2_int(GR_DONT_AUDIT, GR_SOCK_NOINET_MSG, gr_sockfamily_to_name(family), gr_socktype_to_name(type), protocol);
94570 + return -EACCES;
94571 + }
94572 +#endif
94573 + return 0;
94574 +}
94575 +
94576 +int
94577 +gr_handle_sock_server(const struct sockaddr *sck)
94578 +{
94579 +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER
94580 + if (grsec_enable_socket_server &&
94581 + in_group_p(grsec_socket_server_gid) &&
94582 + sck && (sck->sa_family != AF_UNIX) &&
94583 + (sck->sa_family != AF_LOCAL)) {
94584 + gr_log_noargs(GR_DONT_AUDIT, GR_BIND_MSG);
94585 + return -EACCES;
94586 + }
94587 +#endif
94588 + return 0;
94589 +}
94590 +
94591 +int
94592 +gr_handle_sock_server_other(const struct sock *sck)
94593 +{
94594 +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER
94595 + if (grsec_enable_socket_server &&
94596 + in_group_p(grsec_socket_server_gid) &&
94597 + sck && (sck->sk_family != AF_UNIX) &&
94598 + (sck->sk_family != AF_LOCAL)) {
94599 + gr_log_noargs(GR_DONT_AUDIT, GR_BIND_MSG);
94600 + return -EACCES;
94601 + }
94602 +#endif
94603 + return 0;
94604 +}
94605 +
94606 +int
94607 +gr_handle_sock_client(const struct sockaddr *sck)
94608 +{
94609 +#ifdef CONFIG_GRKERNSEC_SOCKET_CLIENT
94610 + if (grsec_enable_socket_client && in_group_p(grsec_socket_client_gid) &&
94611 + sck && (sck->sa_family != AF_UNIX) &&
94612 + (sck->sa_family != AF_LOCAL)) {
94613 + gr_log_noargs(GR_DONT_AUDIT, GR_CONNECT_MSG);
94614 + return -EACCES;
94615 + }
94616 +#endif
94617 + return 0;
94618 +}
94619 diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c
94620 new file mode 100644
94621 index 0000000..aaec43c
94622 --- /dev/null
94623 +++ b/grsecurity/grsec_sysctl.c
94624 @@ -0,0 +1,488 @@
94625 +#include <linux/kernel.h>
94626 +#include <linux/sched.h>
94627 +#include <linux/sysctl.h>
94628 +#include <linux/grsecurity.h>
94629 +#include <linux/grinternal.h>
94630 +
94631 +int
94632 +gr_handle_sysctl_mod(const char *dirname, const char *name, const int op)
94633 +{
94634 +#ifdef CONFIG_GRKERNSEC_SYSCTL
94635 + if (dirname == NULL || name == NULL)
94636 + return 0;
94637 + if (!strcmp(dirname, "grsecurity") && grsec_lock && (op & MAY_WRITE)) {
94638 + gr_log_str(GR_DONT_AUDIT, GR_SYSCTL_MSG, name);
94639 + return -EACCES;
94640 + }
94641 +#endif
94642 + return 0;
94643 +}
94644 +
94645 +#if defined(CONFIG_GRKERNSEC_ROFS) || defined(CONFIG_GRKERNSEC_DENYUSB)
94646 +static int __maybe_unused __read_only one = 1;
94647 +#endif
94648 +
94649 +#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_ROFS) || \
94650 + defined(CONFIG_GRKERNSEC_DENYUSB)
94651 +struct ctl_table grsecurity_table[] = {
94652 +#ifdef CONFIG_GRKERNSEC_SYSCTL
94653 +#ifdef CONFIG_GRKERNSEC_SYSCTL_DISTRO
94654 +#ifdef CONFIG_GRKERNSEC_IO
94655 + {
94656 + .procname = "disable_priv_io",
94657 + .data = &grsec_disable_privio,
94658 + .maxlen = sizeof(int),
94659 + .mode = 0600,
94660 + .proc_handler = &proc_dointvec_secure,
94661 + },
94662 +#endif
94663 +#endif
94664 +#ifdef CONFIG_GRKERNSEC_LINK
94665 + {
94666 + .procname = "linking_restrictions",
94667 + .data = &grsec_enable_link,
94668 + .maxlen = sizeof(int),
94669 + .mode = 0600,
94670 + .proc_handler = &proc_dointvec_secure,
94671 + },
94672 +#endif
94673 +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN
94674 + {
94675 + .procname = "enforce_symlinksifowner",
94676 + .data = &grsec_enable_symlinkown,
94677 + .maxlen = sizeof(int),
94678 + .mode = 0600,
94679 + .proc_handler = &proc_dointvec_secure,
94680 + },
94681 + {
94682 + .procname = "symlinkown_gid",
94683 + .data = &grsec_symlinkown_gid,
94684 + .maxlen = sizeof(int),
94685 + .mode = 0600,
94686 + .proc_handler = &proc_dointvec_secure,
94687 + },
94688 +#endif
94689 +#ifdef CONFIG_GRKERNSEC_BRUTE
94690 + {
94691 + .procname = "deter_bruteforce",
94692 + .data = &grsec_enable_brute,
94693 + .maxlen = sizeof(int),
94694 + .mode = 0600,
94695 + .proc_handler = &proc_dointvec_secure,
94696 + },
94697 +#endif
94698 +#ifdef CONFIG_GRKERNSEC_FIFO
94699 + {
94700 + .procname = "fifo_restrictions",
94701 + .data = &grsec_enable_fifo,
94702 + .maxlen = sizeof(int),
94703 + .mode = 0600,
94704 + .proc_handler = &proc_dointvec_secure,
94705 + },
94706 +#endif
94707 +#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
94708 + {
94709 + .procname = "ptrace_readexec",
94710 + .data = &grsec_enable_ptrace_readexec,
94711 + .maxlen = sizeof(int),
94712 + .mode = 0600,
94713 + .proc_handler = &proc_dointvec_secure,
94714 + },
94715 +#endif
94716 +#ifdef CONFIG_GRKERNSEC_SETXID
94717 + {
94718 + .procname = "consistent_setxid",
94719 + .data = &grsec_enable_setxid,
94720 + .maxlen = sizeof(int),
94721 + .mode = 0600,
94722 + .proc_handler = &proc_dointvec_secure,
94723 + },
94724 +#endif
94725 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
94726 + {
94727 + .procname = "ip_blackhole",
94728 + .data = &grsec_enable_blackhole,
94729 + .maxlen = sizeof(int),
94730 + .mode = 0600,
94731 + .proc_handler = &proc_dointvec_secure,
94732 + },
94733 + {
94734 + .procname = "lastack_retries",
94735 + .data = &grsec_lastack_retries,
94736 + .maxlen = sizeof(int),
94737 + .mode = 0600,
94738 + .proc_handler = &proc_dointvec_secure,
94739 + },
94740 +#endif
94741 +#ifdef CONFIG_GRKERNSEC_EXECLOG
94742 + {
94743 + .procname = "exec_logging",
94744 + .data = &grsec_enable_execlog,
94745 + .maxlen = sizeof(int),
94746 + .mode = 0600,
94747 + .proc_handler = &proc_dointvec_secure,
94748 + },
94749 +#endif
94750 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
94751 + {
94752 + .procname = "rwxmap_logging",
94753 + .data = &grsec_enable_log_rwxmaps,
94754 + .maxlen = sizeof(int),
94755 + .mode = 0600,
94756 + .proc_handler = &proc_dointvec_secure,
94757 + },
94758 +#endif
94759 +#ifdef CONFIG_GRKERNSEC_SIGNAL
94760 + {
94761 + .procname = "signal_logging",
94762 + .data = &grsec_enable_signal,
94763 + .maxlen = sizeof(int),
94764 + .mode = 0600,
94765 + .proc_handler = &proc_dointvec_secure,
94766 + },
94767 +#endif
94768 +#ifdef CONFIG_GRKERNSEC_FORKFAIL
94769 + {
94770 + .procname = "forkfail_logging",
94771 + .data = &grsec_enable_forkfail,
94772 + .maxlen = sizeof(int),
94773 + .mode = 0600,
94774 + .proc_handler = &proc_dointvec_secure,
94775 + },
94776 +#endif
94777 +#ifdef CONFIG_GRKERNSEC_TIME
94778 + {
94779 + .procname = "timechange_logging",
94780 + .data = &grsec_enable_time,
94781 + .maxlen = sizeof(int),
94782 + .mode = 0600,
94783 + .proc_handler = &proc_dointvec_secure,
94784 + },
94785 +#endif
94786 +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT
94787 + {
94788 + .procname = "chroot_deny_shmat",
94789 + .data = &grsec_enable_chroot_shmat,
94790 + .maxlen = sizeof(int),
94791 + .mode = 0600,
94792 + .proc_handler = &proc_dointvec_secure,
94793 + },
94794 +#endif
94795 +#ifdef CONFIG_GRKERNSEC_CHROOT_UNIX
94796 + {
94797 + .procname = "chroot_deny_unix",
94798 + .data = &grsec_enable_chroot_unix,
94799 + .maxlen = sizeof(int),
94800 + .mode = 0600,
94801 + .proc_handler = &proc_dointvec_secure,
94802 + },
94803 +#endif
94804 +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT
94805 + {
94806 + .procname = "chroot_deny_mount",
94807 + .data = &grsec_enable_chroot_mount,
94808 + .maxlen = sizeof(int),
94809 + .mode = 0600,
94810 + .proc_handler = &proc_dointvec_secure,
94811 + },
94812 +#endif
94813 +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR
94814 + {
94815 + .procname = "chroot_deny_fchdir",
94816 + .data = &grsec_enable_chroot_fchdir,
94817 + .maxlen = sizeof(int),
94818 + .mode = 0600,
94819 + .proc_handler = &proc_dointvec_secure,
94820 + },
94821 +#endif
94822 +#ifdef CONFIG_GRKERNSEC_CHROOT_DOUBLE
94823 + {
94824 + .procname = "chroot_deny_chroot",
94825 + .data = &grsec_enable_chroot_double,
94826 + .maxlen = sizeof(int),
94827 + .mode = 0600,
94828 + .proc_handler = &proc_dointvec_secure,
94829 + },
94830 +#endif
94831 +#ifdef CONFIG_GRKERNSEC_CHROOT_PIVOT
94832 + {
94833 + .procname = "chroot_deny_pivot",
94834 + .data = &grsec_enable_chroot_pivot,
94835 + .maxlen = sizeof(int),
94836 + .mode = 0600,
94837 + .proc_handler = &proc_dointvec_secure,
94838 + },
94839 +#endif
94840 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHDIR
94841 + {
94842 + .procname = "chroot_enforce_chdir",
94843 + .data = &grsec_enable_chroot_chdir,
94844 + .maxlen = sizeof(int),
94845 + .mode = 0600,
94846 + .proc_handler = &proc_dointvec_secure,
94847 + },
94848 +#endif
94849 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD
94850 + {
94851 + .procname = "chroot_deny_chmod",
94852 + .data = &grsec_enable_chroot_chmod,
94853 + .maxlen = sizeof(int),
94854 + .mode = 0600,
94855 + .proc_handler = &proc_dointvec_secure,
94856 + },
94857 +#endif
94858 +#ifdef CONFIG_GRKERNSEC_CHROOT_MKNOD
94859 + {
94860 + .procname = "chroot_deny_mknod",
94861 + .data = &grsec_enable_chroot_mknod,
94862 + .maxlen = sizeof(int),
94863 + .mode = 0600,
94864 + .proc_handler = &proc_dointvec_secure,
94865 + },
94866 +#endif
94867 +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE
94868 + {
94869 + .procname = "chroot_restrict_nice",
94870 + .data = &grsec_enable_chroot_nice,
94871 + .maxlen = sizeof(int),
94872 + .mode = 0600,
94873 + .proc_handler = &proc_dointvec_secure,
94874 + },
94875 +#endif
94876 +#ifdef CONFIG_GRKERNSEC_CHROOT_EXECLOG
94877 + {
94878 + .procname = "chroot_execlog",
94879 + .data = &grsec_enable_chroot_execlog,
94880 + .maxlen = sizeof(int),
94881 + .mode = 0600,
94882 + .proc_handler = &proc_dointvec_secure,
94883 + },
94884 +#endif
94885 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
94886 + {
94887 + .procname = "chroot_caps",
94888 + .data = &grsec_enable_chroot_caps,
94889 + .maxlen = sizeof(int),
94890 + .mode = 0600,
94891 + .proc_handler = &proc_dointvec_secure,
94892 + },
94893 +#endif
94894 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
94895 + {
94896 + .procname = "chroot_deny_bad_rename",
94897 + .data = &grsec_enable_chroot_rename,
94898 + .maxlen = sizeof(int),
94899 + .mode = 0600,
94900 + .proc_handler = &proc_dointvec_secure,
94901 + },
94902 +#endif
94903 +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL
94904 + {
94905 + .procname = "chroot_deny_sysctl",
94906 + .data = &grsec_enable_chroot_sysctl,
94907 + .maxlen = sizeof(int),
94908 + .mode = 0600,
94909 + .proc_handler = &proc_dointvec_secure,
94910 + },
94911 +#endif
94912 +#ifdef CONFIG_GRKERNSEC_TPE
94913 + {
94914 + .procname = "tpe",
94915 + .data = &grsec_enable_tpe,
94916 + .maxlen = sizeof(int),
94917 + .mode = 0600,
94918 + .proc_handler = &proc_dointvec_secure,
94919 + },
94920 + {
94921 + .procname = "tpe_gid",
94922 + .data = &grsec_tpe_gid,
94923 + .maxlen = sizeof(int),
94924 + .mode = 0600,
94925 + .proc_handler = &proc_dointvec_secure,
94926 + },
94927 +#endif
94928 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
94929 + {
94930 + .procname = "tpe_invert",
94931 + .data = &grsec_enable_tpe_invert,
94932 + .maxlen = sizeof(int),
94933 + .mode = 0600,
94934 + .proc_handler = &proc_dointvec_secure,
94935 + },
94936 +#endif
94937 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
94938 + {
94939 + .procname = "tpe_restrict_all",
94940 + .data = &grsec_enable_tpe_all,
94941 + .maxlen = sizeof(int),
94942 + .mode = 0600,
94943 + .proc_handler = &proc_dointvec_secure,
94944 + },
94945 +#endif
94946 +#ifdef CONFIG_GRKERNSEC_SOCKET_ALL
94947 + {
94948 + .procname = "socket_all",
94949 + .data = &grsec_enable_socket_all,
94950 + .maxlen = sizeof(int),
94951 + .mode = 0600,
94952 + .proc_handler = &proc_dointvec_secure,
94953 + },
94954 + {
94955 + .procname = "socket_all_gid",
94956 + .data = &grsec_socket_all_gid,
94957 + .maxlen = sizeof(int),
94958 + .mode = 0600,
94959 + .proc_handler = &proc_dointvec_secure,
94960 + },
94961 +#endif
94962 +#ifdef CONFIG_GRKERNSEC_SOCKET_CLIENT
94963 + {
94964 + .procname = "socket_client",
94965 + .data = &grsec_enable_socket_client,
94966 + .maxlen = sizeof(int),
94967 + .mode = 0600,
94968 + .proc_handler = &proc_dointvec_secure,
94969 + },
94970 + {
94971 + .procname = "socket_client_gid",
94972 + .data = &grsec_socket_client_gid,
94973 + .maxlen = sizeof(int),
94974 + .mode = 0600,
94975 + .proc_handler = &proc_dointvec_secure,
94976 + },
94977 +#endif
94978 +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER
94979 + {
94980 + .procname = "socket_server",
94981 + .data = &grsec_enable_socket_server,
94982 + .maxlen = sizeof(int),
94983 + .mode = 0600,
94984 + .proc_handler = &proc_dointvec_secure,
94985 + },
94986 + {
94987 + .procname = "socket_server_gid",
94988 + .data = &grsec_socket_server_gid,
94989 + .maxlen = sizeof(int),
94990 + .mode = 0600,
94991 + .proc_handler = &proc_dointvec_secure,
94992 + },
94993 +#endif
94994 +#ifdef CONFIG_GRKERNSEC_AUDIT_GROUP
94995 + {
94996 + .procname = "audit_group",
94997 + .data = &grsec_enable_group,
94998 + .maxlen = sizeof(int),
94999 + .mode = 0600,
95000 + .proc_handler = &proc_dointvec_secure,
95001 + },
95002 + {
95003 + .procname = "audit_gid",
95004 + .data = &grsec_audit_gid,
95005 + .maxlen = sizeof(int),
95006 + .mode = 0600,
95007 + .proc_handler = &proc_dointvec_secure,
95008 + },
95009 +#endif
95010 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
95011 + {
95012 + .procname = "audit_chdir",
95013 + .data = &grsec_enable_chdir,
95014 + .maxlen = sizeof(int),
95015 + .mode = 0600,
95016 + .proc_handler = &proc_dointvec_secure,
95017 + },
95018 +#endif
95019 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
95020 + {
95021 + .procname = "audit_mount",
95022 + .data = &grsec_enable_mount,
95023 + .maxlen = sizeof(int),
95024 + .mode = 0600,
95025 + .proc_handler = &proc_dointvec_secure,
95026 + },
95027 +#endif
95028 +#ifdef CONFIG_GRKERNSEC_DMESG
95029 + {
95030 + .procname = "dmesg",
95031 + .data = &grsec_enable_dmesg,
95032 + .maxlen = sizeof(int),
95033 + .mode = 0600,
95034 + .proc_handler = &proc_dointvec_secure,
95035 + },
95036 +#endif
95037 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
95038 + {
95039 + .procname = "chroot_findtask",
95040 + .data = &grsec_enable_chroot_findtask,
95041 + .maxlen = sizeof(int),
95042 + .mode = 0600,
95043 + .proc_handler = &proc_dointvec_secure,
95044 + },
95045 +#endif
95046 +#ifdef CONFIG_GRKERNSEC_RESLOG
95047 + {
95048 + .procname = "resource_logging",
95049 + .data = &grsec_resource_logging,
95050 + .maxlen = sizeof(int),
95051 + .mode = 0600,
95052 + .proc_handler = &proc_dointvec_secure,
95053 + },
95054 +#endif
95055 +#ifdef CONFIG_GRKERNSEC_AUDIT_PTRACE
95056 + {
95057 + .procname = "audit_ptrace",
95058 + .data = &grsec_enable_audit_ptrace,
95059 + .maxlen = sizeof(int),
95060 + .mode = 0600,
95061 + .proc_handler = &proc_dointvec_secure,
95062 + },
95063 +#endif
95064 +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE
95065 + {
95066 + .procname = "harden_ptrace",
95067 + .data = &grsec_enable_harden_ptrace,
95068 + .maxlen = sizeof(int),
95069 + .mode = 0600,
95070 + .proc_handler = &proc_dointvec_secure,
95071 + },
95072 +#endif
95073 +#ifdef CONFIG_GRKERNSEC_HARDEN_IPC
95074 + {
95075 + .procname = "harden_ipc",
95076 + .data = &grsec_enable_harden_ipc,
95077 + .maxlen = sizeof(int),
95078 + .mode = 0600,
95079 + .proc_handler = &proc_dointvec_secure,
95080 + },
95081 +#endif
95082 + {
95083 + .procname = "grsec_lock",
95084 + .data = &grsec_lock,
95085 + .maxlen = sizeof(int),
95086 + .mode = 0600,
95087 + .proc_handler = &proc_dointvec_secure,
95088 + },
95089 +#endif
95090 +#ifdef CONFIG_GRKERNSEC_ROFS
95091 + {
95092 + .procname = "romount_protect",
95093 + .data = &grsec_enable_rofs,
95094 + .maxlen = sizeof(int),
95095 + .mode = 0600,
95096 + .proc_handler = &proc_dointvec_minmax_secure,
95097 + .extra1 = &one,
95098 + .extra2 = &one,
95099 + },
95100 +#endif
95101 +#if defined(CONFIG_GRKERNSEC_DENYUSB) && !defined(CONFIG_GRKERNSEC_DENYUSB_FORCE)
95102 + {
95103 + .procname = "deny_new_usb",
95104 + .data = &grsec_deny_new_usb,
95105 + .maxlen = sizeof(int),
95106 + .mode = 0600,
95107 + .proc_handler = &proc_dointvec_secure,
95108 + },
95109 +#endif
95110 + { }
95111 +};
95112 +#endif
95113 diff --git a/grsecurity/grsec_time.c b/grsecurity/grsec_time.c
95114 new file mode 100644
95115 index 0000000..61b514e
95116 --- /dev/null
95117 +++ b/grsecurity/grsec_time.c
95118 @@ -0,0 +1,16 @@
95119 +#include <linux/kernel.h>
95120 +#include <linux/sched.h>
95121 +#include <linux/grinternal.h>
95122 +#include <linux/module.h>
95123 +
95124 +void
95125 +gr_log_timechange(void)
95126 +{
95127 +#ifdef CONFIG_GRKERNSEC_TIME
95128 + if (grsec_enable_time)
95129 + gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_TIME_MSG);
95130 +#endif
95131 + return;
95132 +}
95133 +
95134 +EXPORT_SYMBOL_GPL(gr_log_timechange);
95135 diff --git a/grsecurity/grsec_tpe.c b/grsecurity/grsec_tpe.c
95136 new file mode 100644
95137 index 0000000..9786671
95138 --- /dev/null
95139 +++ b/grsecurity/grsec_tpe.c
95140 @@ -0,0 +1,78 @@
95141 +#include <linux/kernel.h>
95142 +#include <linux/sched.h>
95143 +#include <linux/file.h>
95144 +#include <linux/fs.h>
95145 +#include <linux/grinternal.h>
95146 +
95147 +extern int gr_acl_tpe_check(void);
95148 +
95149 +int
95150 +gr_tpe_allow(const struct file *file)
95151 +{
95152 +#ifdef CONFIG_GRKERNSEC
95153 + struct inode *inode = d_backing_inode(file->f_path.dentry->d_parent);
95154 + struct inode *file_inode = d_backing_inode(file->f_path.dentry);
95155 + const struct cred *cred = current_cred();
95156 + char *msg = NULL;
95157 + char *msg2 = NULL;
95158 +
95159 + // never restrict root
95160 + if (gr_is_global_root(cred->uid))
95161 + return 1;
95162 +
95163 + if (grsec_enable_tpe) {
95164 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
95165 + if (grsec_enable_tpe_invert && !in_group_p(grsec_tpe_gid))
95166 + msg = "not being in trusted group";
95167 + else if (!grsec_enable_tpe_invert && in_group_p(grsec_tpe_gid))
95168 + msg = "being in untrusted group";
95169 +#else
95170 + if (in_group_p(grsec_tpe_gid))
95171 + msg = "being in untrusted group";
95172 +#endif
95173 + }
95174 + if (!msg && gr_acl_tpe_check())
95175 + msg = "being in untrusted role";
95176 +
95177 + // not in any affected group/role
95178 + if (!msg)
95179 + goto next_check;
95180 +
95181 + if (gr_is_global_nonroot(inode->i_uid))
95182 + msg2 = "file in non-root-owned directory";
95183 + else if (inode->i_mode & S_IWOTH)
95184 + msg2 = "file in world-writable directory";
95185 + else if (inode->i_mode & S_IWGRP)
95186 + msg2 = "file in group-writable directory";
95187 + else if (file_inode->i_mode & S_IWOTH)
95188 + msg2 = "file is world-writable";
95189 +
95190 + if (msg && msg2) {
95191 + char fullmsg[70] = {0};
95192 + snprintf(fullmsg, sizeof(fullmsg)-1, "%s and %s", msg, msg2);
95193 + gr_log_str_fs(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, fullmsg, file->f_path.dentry, file->f_path.mnt);
95194 + return 0;
95195 + }
95196 + msg = NULL;
95197 +next_check:
95198 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
95199 + if (!grsec_enable_tpe || !grsec_enable_tpe_all)
95200 + return 1;
95201 +
95202 + if (gr_is_global_nonroot(inode->i_uid) && !uid_eq(inode->i_uid, cred->uid))
95203 + msg = "directory not owned by user";
95204 + else if (inode->i_mode & S_IWOTH)
95205 + msg = "file in world-writable directory";
95206 + else if (inode->i_mode & S_IWGRP)
95207 + msg = "file in group-writable directory";
95208 + else if (file_inode->i_mode & S_IWOTH)
95209 + msg = "file is world-writable";
95210 +
95211 + if (msg) {
95212 + gr_log_str_fs(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, msg, file->f_path.dentry, file->f_path.mnt);
95213 + return 0;
95214 + }
95215 +#endif
95216 +#endif
95217 + return 1;
95218 +}
95219 diff --git a/grsecurity/grsec_usb.c b/grsecurity/grsec_usb.c
95220 new file mode 100644
95221 index 0000000..ae02d8e
95222 --- /dev/null
95223 +++ b/grsecurity/grsec_usb.c
95224 @@ -0,0 +1,15 @@
95225 +#include <linux/kernel.h>
95226 +#include <linux/grinternal.h>
95227 +#include <linux/module.h>
95228 +
95229 +int gr_handle_new_usb(void)
95230 +{
95231 +#ifdef CONFIG_GRKERNSEC_DENYUSB
95232 + if (grsec_deny_new_usb) {
95233 + printk(KERN_ALERT "grsec: denied insert of new USB device\n");
95234 + return 1;
95235 + }
95236 +#endif
95237 + return 0;
95238 +}
95239 +EXPORT_SYMBOL_GPL(gr_handle_new_usb);
95240 diff --git a/grsecurity/grsum.c b/grsecurity/grsum.c
95241 new file mode 100644
95242 index 0000000..158b330
95243 --- /dev/null
95244 +++ b/grsecurity/grsum.c
95245 @@ -0,0 +1,64 @@
95246 +#include <linux/err.h>
95247 +#include <linux/kernel.h>
95248 +#include <linux/sched.h>
95249 +#include <linux/mm.h>
95250 +#include <linux/scatterlist.h>
95251 +#include <linux/crypto.h>
95252 +#include <linux/gracl.h>
95253 +
95254 +
95255 +#if !defined(CONFIG_CRYPTO) || defined(CONFIG_CRYPTO_MODULE) || !defined(CONFIG_CRYPTO_SHA256) || defined(CONFIG_CRYPTO_SHA256_MODULE)
95256 +#error "crypto and sha256 must be built into the kernel"
95257 +#endif
95258 +
95259 +int
95260 +chkpw(struct gr_arg *entry, unsigned char *salt, unsigned char *sum)
95261 +{
95262 + struct crypto_hash *tfm;
95263 + struct hash_desc desc;
95264 + struct scatterlist sg[2];
95265 + unsigned char temp_sum[GR_SHA_LEN] __attribute__((aligned(__alignof__(unsigned long))));
95266 + unsigned long *tmpsumptr = (unsigned long *)temp_sum;
95267 + unsigned long *sumptr = (unsigned long *)sum;
95268 + int cryptres;
95269 + int retval = 1;
95270 + volatile int mismatched = 0;
95271 + volatile int dummy = 0;
95272 + unsigned int i;
95273 +
95274 + tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC);
95275 + if (IS_ERR(tfm)) {
95276 + /* should never happen, since sha256 should be built in */
95277 + memset(entry->pw, 0, GR_PW_LEN);
95278 + return 1;
95279 + }
95280 +
95281 + sg_init_table(sg, 2);
95282 + sg_set_buf(&sg[0], salt, GR_SALT_LEN);
95283 + sg_set_buf(&sg[1], entry->pw, strlen(entry->pw));
95284 +
95285 + desc.tfm = tfm;
95286 + desc.flags = 0;
95287 +
95288 + cryptres = crypto_hash_digest(&desc, sg, GR_SALT_LEN + strlen(entry->pw),
95289 + temp_sum);
95290 +
95291 + memset(entry->pw, 0, GR_PW_LEN);
95292 +
95293 + if (cryptres)
95294 + goto out;
95295 +
95296 + for (i = 0; i < GR_SHA_LEN/sizeof(tmpsumptr[0]); i++)
95297 + if (sumptr[i] != tmpsumptr[i])
95298 + mismatched = 1;
95299 + else
95300 + dummy = 1; // waste a cycle
95301 +
95302 + if (!mismatched)
95303 + retval = dummy - 1;
95304 +
95305 +out:
95306 + crypto_free_hash(tfm);
95307 +
95308 + return retval;
95309 +}
95310 diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h
95311 index 5bdab6b..9ae82fe 100644
95312 --- a/include/asm-generic/4level-fixup.h
95313 +++ b/include/asm-generic/4level-fixup.h
95314 @@ -14,8 +14,10 @@
95315 #define pmd_alloc(mm, pud, address) \
95316 ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))? \
95317 NULL: pmd_offset(pud, address))
95318 +#define pmd_alloc_kernel(mm, pud, address) pmd_alloc((mm), (pud), (address))
95319
95320 #define pud_alloc(mm, pgd, address) (pgd)
95321 +#define pud_alloc_kernel(mm, pgd, address) pud_alloc((mm), (pgd), (address))
95322 #define pud_offset(pgd, start) (pgd)
95323 #define pud_none(pud) 0
95324 #define pud_bad(pud) 0
95325 diff --git a/include/asm-generic/atomic-long.h b/include/asm-generic/atomic-long.h
95326 index b7babf0..1e4b4f1 100644
95327 --- a/include/asm-generic/atomic-long.h
95328 +++ b/include/asm-generic/atomic-long.h
95329 @@ -22,6 +22,12 @@
95330
95331 typedef atomic64_t atomic_long_t;
95332
95333 +#ifdef CONFIG_PAX_REFCOUNT
95334 +typedef atomic64_unchecked_t atomic_long_unchecked_t;
95335 +#else
95336 +typedef atomic64_t atomic_long_unchecked_t;
95337 +#endif
95338 +
95339 #define ATOMIC_LONG_INIT(i) ATOMIC64_INIT(i)
95340
95341 static inline long atomic_long_read(atomic_long_t *l)
95342 @@ -31,6 +37,15 @@ static inline long atomic_long_read(atomic_long_t *l)
95343 return (long)atomic64_read(v);
95344 }
95345
95346 +#ifdef CONFIG_PAX_REFCOUNT
95347 +static inline long atomic_long_read_unchecked(atomic_long_unchecked_t *l)
95348 +{
95349 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95350 +
95351 + return (long)atomic64_read_unchecked(v);
95352 +}
95353 +#endif
95354 +
95355 static inline void atomic_long_set(atomic_long_t *l, long i)
95356 {
95357 atomic64_t *v = (atomic64_t *)l;
95358 @@ -38,6 +53,15 @@ static inline void atomic_long_set(atomic_long_t *l, long i)
95359 atomic64_set(v, i);
95360 }
95361
95362 +#ifdef CONFIG_PAX_REFCOUNT
95363 +static inline void atomic_long_set_unchecked(atomic_long_unchecked_t *l, long i)
95364 +{
95365 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95366 +
95367 + atomic64_set_unchecked(v, i);
95368 +}
95369 +#endif
95370 +
95371 static inline void atomic_long_inc(atomic_long_t *l)
95372 {
95373 atomic64_t *v = (atomic64_t *)l;
95374 @@ -45,6 +69,15 @@ static inline void atomic_long_inc(atomic_long_t *l)
95375 atomic64_inc(v);
95376 }
95377
95378 +#ifdef CONFIG_PAX_REFCOUNT
95379 +static inline void atomic_long_inc_unchecked(atomic_long_unchecked_t *l)
95380 +{
95381 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95382 +
95383 + atomic64_inc_unchecked(v);
95384 +}
95385 +#endif
95386 +
95387 static inline void atomic_long_dec(atomic_long_t *l)
95388 {
95389 atomic64_t *v = (atomic64_t *)l;
95390 @@ -52,6 +85,15 @@ static inline void atomic_long_dec(atomic_long_t *l)
95391 atomic64_dec(v);
95392 }
95393
95394 +#ifdef CONFIG_PAX_REFCOUNT
95395 +static inline void atomic_long_dec_unchecked(atomic_long_unchecked_t *l)
95396 +{
95397 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95398 +
95399 + atomic64_dec_unchecked(v);
95400 +}
95401 +#endif
95402 +
95403 static inline void atomic_long_add(long i, atomic_long_t *l)
95404 {
95405 atomic64_t *v = (atomic64_t *)l;
95406 @@ -59,6 +101,15 @@ static inline void atomic_long_add(long i, atomic_long_t *l)
95407 atomic64_add(i, v);
95408 }
95409
95410 +#ifdef CONFIG_PAX_REFCOUNT
95411 +static inline void atomic_long_add_unchecked(long i, atomic_long_unchecked_t *l)
95412 +{
95413 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95414 +
95415 + atomic64_add_unchecked(i, v);
95416 +}
95417 +#endif
95418 +
95419 static inline void atomic_long_sub(long i, atomic_long_t *l)
95420 {
95421 atomic64_t *v = (atomic64_t *)l;
95422 @@ -66,6 +117,15 @@ static inline void atomic_long_sub(long i, atomic_long_t *l)
95423 atomic64_sub(i, v);
95424 }
95425
95426 +#ifdef CONFIG_PAX_REFCOUNT
95427 +static inline void atomic_long_sub_unchecked(long i, atomic_long_unchecked_t *l)
95428 +{
95429 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95430 +
95431 + atomic64_sub_unchecked(i, v);
95432 +}
95433 +#endif
95434 +
95435 static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
95436 {
95437 atomic64_t *v = (atomic64_t *)l;
95438 @@ -94,13 +154,22 @@ static inline int atomic_long_add_negative(long i, atomic_long_t *l)
95439 return atomic64_add_negative(i, v);
95440 }
95441
95442 -static inline long atomic_long_add_return(long i, atomic_long_t *l)
95443 +static inline long __intentional_overflow(-1) atomic_long_add_return(long i, atomic_long_t *l)
95444 {
95445 atomic64_t *v = (atomic64_t *)l;
95446
95447 return (long)atomic64_add_return(i, v);
95448 }
95449
95450 +#ifdef CONFIG_PAX_REFCOUNT
95451 +static inline long atomic_long_add_return_unchecked(long i, atomic_long_unchecked_t *l)
95452 +{
95453 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95454 +
95455 + return (long)atomic64_add_return_unchecked(i, v);
95456 +}
95457 +#endif
95458 +
95459 static inline long atomic_long_sub_return(long i, atomic_long_t *l)
95460 {
95461 atomic64_t *v = (atomic64_t *)l;
95462 @@ -115,6 +184,15 @@ static inline long atomic_long_inc_return(atomic_long_t *l)
95463 return (long)atomic64_inc_return(v);
95464 }
95465
95466 +#ifdef CONFIG_PAX_REFCOUNT
95467 +static inline long atomic_long_inc_return_unchecked(atomic_long_unchecked_t *l)
95468 +{
95469 + atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
95470 +
95471 + return (long)atomic64_inc_return_unchecked(v);
95472 +}
95473 +#endif
95474 +
95475 static inline long atomic_long_dec_return(atomic_long_t *l)
95476 {
95477 atomic64_t *v = (atomic64_t *)l;
95478 @@ -140,6 +218,12 @@ static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)
95479
95480 typedef atomic_t atomic_long_t;
95481
95482 +#ifdef CONFIG_PAX_REFCOUNT
95483 +typedef atomic_unchecked_t atomic_long_unchecked_t;
95484 +#else
95485 +typedef atomic_t atomic_long_unchecked_t;
95486 +#endif
95487 +
95488 #define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i)
95489 static inline long atomic_long_read(atomic_long_t *l)
95490 {
95491 @@ -148,6 +232,15 @@ static inline long atomic_long_read(atomic_long_t *l)
95492 return (long)atomic_read(v);
95493 }
95494
95495 +#ifdef CONFIG_PAX_REFCOUNT
95496 +static inline long atomic_long_read_unchecked(atomic_long_unchecked_t *l)
95497 +{
95498 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95499 +
95500 + return (long)atomic_read_unchecked(v);
95501 +}
95502 +#endif
95503 +
95504 static inline void atomic_long_set(atomic_long_t *l, long i)
95505 {
95506 atomic_t *v = (atomic_t *)l;
95507 @@ -155,6 +248,15 @@ static inline void atomic_long_set(atomic_long_t *l, long i)
95508 atomic_set(v, i);
95509 }
95510
95511 +#ifdef CONFIG_PAX_REFCOUNT
95512 +static inline void atomic_long_set_unchecked(atomic_long_unchecked_t *l, long i)
95513 +{
95514 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95515 +
95516 + atomic_set_unchecked(v, i);
95517 +}
95518 +#endif
95519 +
95520 static inline void atomic_long_inc(atomic_long_t *l)
95521 {
95522 atomic_t *v = (atomic_t *)l;
95523 @@ -162,6 +264,15 @@ static inline void atomic_long_inc(atomic_long_t *l)
95524 atomic_inc(v);
95525 }
95526
95527 +#ifdef CONFIG_PAX_REFCOUNT
95528 +static inline void atomic_long_inc_unchecked(atomic_long_unchecked_t *l)
95529 +{
95530 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95531 +
95532 + atomic_inc_unchecked(v);
95533 +}
95534 +#endif
95535 +
95536 static inline void atomic_long_dec(atomic_long_t *l)
95537 {
95538 atomic_t *v = (atomic_t *)l;
95539 @@ -169,6 +280,15 @@ static inline void atomic_long_dec(atomic_long_t *l)
95540 atomic_dec(v);
95541 }
95542
95543 +#ifdef CONFIG_PAX_REFCOUNT
95544 +static inline void atomic_long_dec_unchecked(atomic_long_unchecked_t *l)
95545 +{
95546 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95547 +
95548 + atomic_dec_unchecked(v);
95549 +}
95550 +#endif
95551 +
95552 static inline void atomic_long_add(long i, atomic_long_t *l)
95553 {
95554 atomic_t *v = (atomic_t *)l;
95555 @@ -176,6 +296,15 @@ static inline void atomic_long_add(long i, atomic_long_t *l)
95556 atomic_add(i, v);
95557 }
95558
95559 +#ifdef CONFIG_PAX_REFCOUNT
95560 +static inline void atomic_long_add_unchecked(long i, atomic_long_unchecked_t *l)
95561 +{
95562 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95563 +
95564 + atomic_add_unchecked(i, v);
95565 +}
95566 +#endif
95567 +
95568 static inline void atomic_long_sub(long i, atomic_long_t *l)
95569 {
95570 atomic_t *v = (atomic_t *)l;
95571 @@ -183,6 +312,15 @@ static inline void atomic_long_sub(long i, atomic_long_t *l)
95572 atomic_sub(i, v);
95573 }
95574
95575 +#ifdef CONFIG_PAX_REFCOUNT
95576 +static inline void atomic_long_sub_unchecked(long i, atomic_long_unchecked_t *l)
95577 +{
95578 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95579 +
95580 + atomic_sub_unchecked(i, v);
95581 +}
95582 +#endif
95583 +
95584 static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
95585 {
95586 atomic_t *v = (atomic_t *)l;
95587 @@ -211,13 +349,23 @@ static inline int atomic_long_add_negative(long i, atomic_long_t *l)
95588 return atomic_add_negative(i, v);
95589 }
95590
95591 -static inline long atomic_long_add_return(long i, atomic_long_t *l)
95592 +static inline long __intentional_overflow(-1) atomic_long_add_return(long i, atomic_long_t *l)
95593 {
95594 atomic_t *v = (atomic_t *)l;
95595
95596 return (long)atomic_add_return(i, v);
95597 }
95598
95599 +#ifdef CONFIG_PAX_REFCOUNT
95600 +static inline long atomic_long_add_return_unchecked(long i, atomic_long_unchecked_t *l)
95601 +{
95602 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95603 +
95604 + return (long)atomic_add_return_unchecked(i, v);
95605 +}
95606 +
95607 +#endif
95608 +
95609 static inline long atomic_long_sub_return(long i, atomic_long_t *l)
95610 {
95611 atomic_t *v = (atomic_t *)l;
95612 @@ -232,6 +380,15 @@ static inline long atomic_long_inc_return(atomic_long_t *l)
95613 return (long)atomic_inc_return(v);
95614 }
95615
95616 +#ifdef CONFIG_PAX_REFCOUNT
95617 +static inline long atomic_long_inc_return_unchecked(atomic_long_unchecked_t *l)
95618 +{
95619 + atomic_unchecked_t *v = (atomic_unchecked_t *)l;
95620 +
95621 + return (long)atomic_inc_return_unchecked(v);
95622 +}
95623 +#endif
95624 +
95625 static inline long atomic_long_dec_return(atomic_long_t *l)
95626 {
95627 atomic_t *v = (atomic_t *)l;
95628 @@ -255,4 +412,57 @@ static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)
95629
95630 #endif /* BITS_PER_LONG == 64 */
95631
95632 +#ifdef CONFIG_PAX_REFCOUNT
95633 +static inline void pax_refcount_needs_these_functions(void)
95634 +{
95635 + atomic_read_unchecked((atomic_unchecked_t *)NULL);
95636 + atomic_set_unchecked((atomic_unchecked_t *)NULL, 0);
95637 + atomic_add_unchecked(0, (atomic_unchecked_t *)NULL);
95638 + atomic_sub_unchecked(0, (atomic_unchecked_t *)NULL);
95639 + atomic_inc_unchecked((atomic_unchecked_t *)NULL);
95640 + (void)atomic_inc_and_test_unchecked((atomic_unchecked_t *)NULL);
95641 + atomic_inc_return_unchecked((atomic_unchecked_t *)NULL);
95642 + atomic_add_return_unchecked(0, (atomic_unchecked_t *)NULL);
95643 + atomic_dec_unchecked((atomic_unchecked_t *)NULL);
95644 + atomic_cmpxchg_unchecked((atomic_unchecked_t *)NULL, 0, 0);
95645 + (void)atomic_xchg_unchecked((atomic_unchecked_t *)NULL, 0);
95646 +#ifdef CONFIG_X86
95647 + atomic_clear_mask_unchecked(0, NULL);
95648 + atomic_set_mask_unchecked(0, NULL);
95649 +#endif
95650 +
95651 + atomic_long_read_unchecked((atomic_long_unchecked_t *)NULL);
95652 + atomic_long_set_unchecked((atomic_long_unchecked_t *)NULL, 0);
95653 + atomic_long_add_unchecked(0, (atomic_long_unchecked_t *)NULL);
95654 + atomic_long_sub_unchecked(0, (atomic_long_unchecked_t *)NULL);
95655 + atomic_long_inc_unchecked((atomic_long_unchecked_t *)NULL);
95656 + atomic_long_add_return_unchecked(0, (atomic_long_unchecked_t *)NULL);
95657 + atomic_long_inc_return_unchecked((atomic_long_unchecked_t *)NULL);
95658 + atomic_long_dec_unchecked((atomic_long_unchecked_t *)NULL);
95659 +}
95660 +#else
95661 +#define atomic_read_unchecked(v) atomic_read(v)
95662 +#define atomic_set_unchecked(v, i) atomic_set((v), (i))
95663 +#define atomic_add_unchecked(i, v) atomic_add((i), (v))
95664 +#define atomic_sub_unchecked(i, v) atomic_sub((i), (v))
95665 +#define atomic_inc_unchecked(v) atomic_inc(v)
95666 +#define atomic_inc_and_test_unchecked(v) atomic_inc_and_test(v)
95667 +#define atomic_inc_return_unchecked(v) atomic_inc_return(v)
95668 +#define atomic_add_return_unchecked(i, v) atomic_add_return((i), (v))
95669 +#define atomic_dec_unchecked(v) atomic_dec(v)
95670 +#define atomic_cmpxchg_unchecked(v, o, n) atomic_cmpxchg((v), (o), (n))
95671 +#define atomic_xchg_unchecked(v, i) atomic_xchg((v), (i))
95672 +#define atomic_clear_mask_unchecked(mask, v) atomic_clear_mask((mask), (v))
95673 +#define atomic_set_mask_unchecked(mask, v) atomic_set_mask((mask), (v))
95674 +
95675 +#define atomic_long_read_unchecked(v) atomic_long_read(v)
95676 +#define atomic_long_set_unchecked(v, i) atomic_long_set((v), (i))
95677 +#define atomic_long_add_unchecked(i, v) atomic_long_add((i), (v))
95678 +#define atomic_long_sub_unchecked(i, v) atomic_long_sub((i), (v))
95679 +#define atomic_long_inc_unchecked(v) atomic_long_inc(v)
95680 +#define atomic_long_add_return_unchecked(i, v) atomic_long_add_return((i), (v))
95681 +#define atomic_long_inc_return_unchecked(v) atomic_long_inc_return(v)
95682 +#define atomic_long_dec_unchecked(v) atomic_long_dec(v)
95683 +#endif
95684 +
95685 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
95686 diff --git a/include/asm-generic/atomic64.h b/include/asm-generic/atomic64.h
95687 index 30ad9c8..c70c170 100644
95688 --- a/include/asm-generic/atomic64.h
95689 +++ b/include/asm-generic/atomic64.h
95690 @@ -16,6 +16,8 @@ typedef struct {
95691 long long counter;
95692 } atomic64_t;
95693
95694 +typedef atomic64_t atomic64_unchecked_t;
95695 +
95696 #define ATOMIC64_INIT(i) { (i) }
95697
95698 extern long long atomic64_read(const atomic64_t *v);
95699 @@ -51,4 +53,14 @@ extern int atomic64_add_unless(atomic64_t *v, long long a, long long u);
95700 #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0)
95701 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL)
95702
95703 +#define atomic64_read_unchecked(v) atomic64_read(v)
95704 +#define atomic64_set_unchecked(v, i) atomic64_set((v), (i))
95705 +#define atomic64_add_unchecked(a, v) atomic64_add((a), (v))
95706 +#define atomic64_add_return_unchecked(a, v) atomic64_add_return((a), (v))
95707 +#define atomic64_sub_unchecked(a, v) atomic64_sub((a), (v))
95708 +#define atomic64_inc_unchecked(v) atomic64_inc(v)
95709 +#define atomic64_inc_return_unchecked(v) atomic64_inc_return(v)
95710 +#define atomic64_dec_unchecked(v) atomic64_dec(v)
95711 +#define atomic64_cmpxchg_unchecked(v, o, n) atomic64_cmpxchg((v), (o), (n))
95712 +
95713 #endif /* _ASM_GENERIC_ATOMIC64_H */
95714 diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h
95715 index 55e3abc..104e2a1 100644
95716 --- a/include/asm-generic/barrier.h
95717 +++ b/include/asm-generic/barrier.h
95718 @@ -108,7 +108,7 @@
95719 do { \
95720 compiletime_assert_atomic_type(*p); \
95721 smp_mb(); \
95722 - ACCESS_ONCE(*p) = (v); \
95723 + ACCESS_ONCE_RW(*p) = (v); \
95724 } while (0)
95725
95726 #define smp_load_acquire(p) \
95727 diff --git a/include/asm-generic/bitops/__fls.h b/include/asm-generic/bitops/__fls.h
95728 index a60a7cc..0fe12f2 100644
95729 --- a/include/asm-generic/bitops/__fls.h
95730 +++ b/include/asm-generic/bitops/__fls.h
95731 @@ -9,7 +9,7 @@
95732 *
95733 * Undefined if no set bit exists, so code should check against 0 first.
95734 */
95735 -static __always_inline unsigned long __fls(unsigned long word)
95736 +static __always_inline unsigned long __intentional_overflow(-1) __fls(unsigned long word)
95737 {
95738 int num = BITS_PER_LONG - 1;
95739
95740 diff --git a/include/asm-generic/bitops/fls.h b/include/asm-generic/bitops/fls.h
95741 index 0576d1f..dad6c71 100644
95742 --- a/include/asm-generic/bitops/fls.h
95743 +++ b/include/asm-generic/bitops/fls.h
95744 @@ -9,7 +9,7 @@
95745 * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
95746 */
95747
95748 -static __always_inline int fls(int x)
95749 +static __always_inline int __intentional_overflow(-1) fls(int x)
95750 {
95751 int r = 32;
95752
95753 diff --git a/include/asm-generic/bitops/fls64.h b/include/asm-generic/bitops/fls64.h
95754 index b097cf8..3d40e14 100644
95755 --- a/include/asm-generic/bitops/fls64.h
95756 +++ b/include/asm-generic/bitops/fls64.h
95757 @@ -15,7 +15,7 @@
95758 * at position 64.
95759 */
95760 #if BITS_PER_LONG == 32
95761 -static __always_inline int fls64(__u64 x)
95762 +static __always_inline int __intentional_overflow(-1) fls64(__u64 x)
95763 {
95764 __u32 h = x >> 32;
95765 if (h)
95766 @@ -23,7 +23,7 @@ static __always_inline int fls64(__u64 x)
95767 return fls(x);
95768 }
95769 #elif BITS_PER_LONG == 64
95770 -static __always_inline int fls64(__u64 x)
95771 +static __always_inline int __intentional_overflow(-1) fls64(__u64 x)
95772 {
95773 if (x == 0)
95774 return 0;
95775 diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
95776 index 630dd23..8c1dcb6b 100644
95777 --- a/include/asm-generic/bug.h
95778 +++ b/include/asm-generic/bug.h
95779 @@ -62,13 +62,13 @@ struct bug_entry {
95780 * to provide better diagnostics.
95781 */
95782 #ifndef __WARN_TAINT
95783 -extern __printf(3, 4)
95784 +extern __printf(3, 4) __nocapture(1, 3, 4)
95785 void warn_slowpath_fmt(const char *file, const int line,
95786 const char *fmt, ...);
95787 -extern __printf(4, 5)
95788 +extern __printf(4, 5) __nocapture(1, 4, 5)
95789 void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint,
95790 const char *fmt, ...);
95791 -extern void warn_slowpath_null(const char *file, const int line);
95792 +extern __nocapture(1) void warn_slowpath_null(const char *file, const int line);
95793 #define WANT_WARN_ON_SLOWPATH
95794 #define __WARN() warn_slowpath_null(__FILE__, __LINE__)
95795 #define __WARN_printf(arg...) warn_slowpath_fmt(__FILE__, __LINE__, arg)
95796 diff --git a/include/asm-generic/cache.h b/include/asm-generic/cache.h
95797 index 1bfcfe5..e04c5c9 100644
95798 --- a/include/asm-generic/cache.h
95799 +++ b/include/asm-generic/cache.h
95800 @@ -6,7 +6,7 @@
95801 * cache lines need to provide their own cache.h.
95802 */
95803
95804 -#define L1_CACHE_SHIFT 5
95805 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
95806 +#define L1_CACHE_SHIFT 5UL
95807 +#define L1_CACHE_BYTES (1UL << L1_CACHE_SHIFT)
95808
95809 #endif /* __ASM_GENERIC_CACHE_H */
95810 diff --git a/include/asm-generic/emergency-restart.h b/include/asm-generic/emergency-restart.h
95811 index 0d68a1e..b74a761 100644
95812 --- a/include/asm-generic/emergency-restart.h
95813 +++ b/include/asm-generic/emergency-restart.h
95814 @@ -1,7 +1,7 @@
95815 #ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
95816 #define _ASM_GENERIC_EMERGENCY_RESTART_H
95817
95818 -static inline void machine_emergency_restart(void)
95819 +static inline __noreturn void machine_emergency_restart(void)
95820 {
95821 machine_restart(NULL);
95822 }
95823 diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h
95824 index 90f99c7..00ce236 100644
95825 --- a/include/asm-generic/kmap_types.h
95826 +++ b/include/asm-generic/kmap_types.h
95827 @@ -2,9 +2,9 @@
95828 #define _ASM_GENERIC_KMAP_TYPES_H
95829
95830 #ifdef __WITH_KM_FENCE
95831 -# define KM_TYPE_NR 41
95832 +# define KM_TYPE_NR 42
95833 #else
95834 -# define KM_TYPE_NR 20
95835 +# define KM_TYPE_NR 21
95836 #endif
95837
95838 #endif
95839 diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h
95840 index 9ceb03b..62b0b8f 100644
95841 --- a/include/asm-generic/local.h
95842 +++ b/include/asm-generic/local.h
95843 @@ -23,24 +23,37 @@ typedef struct
95844 atomic_long_t a;
95845 } local_t;
95846
95847 +typedef struct {
95848 + atomic_long_unchecked_t a;
95849 +} local_unchecked_t;
95850 +
95851 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
95852
95853 #define local_read(l) atomic_long_read(&(l)->a)
95854 +#define local_read_unchecked(l) atomic_long_read_unchecked(&(l)->a)
95855 #define local_set(l,i) atomic_long_set((&(l)->a),(i))
95856 +#define local_set_unchecked(l,i) atomic_long_set_unchecked((&(l)->a),(i))
95857 #define local_inc(l) atomic_long_inc(&(l)->a)
95858 +#define local_inc_unchecked(l) atomic_long_inc_unchecked(&(l)->a)
95859 #define local_dec(l) atomic_long_dec(&(l)->a)
95860 +#define local_dec_unchecked(l) atomic_long_dec_unchecked(&(l)->a)
95861 #define local_add(i,l) atomic_long_add((i),(&(l)->a))
95862 +#define local_add_unchecked(i,l) atomic_long_add_unchecked((i),(&(l)->a))
95863 #define local_sub(i,l) atomic_long_sub((i),(&(l)->a))
95864 +#define local_sub_unchecked(i,l) atomic_long_sub_unchecked((i),(&(l)->a))
95865
95866 #define local_sub_and_test(i, l) atomic_long_sub_and_test((i), (&(l)->a))
95867 #define local_dec_and_test(l) atomic_long_dec_and_test(&(l)->a)
95868 #define local_inc_and_test(l) atomic_long_inc_and_test(&(l)->a)
95869 #define local_add_negative(i, l) atomic_long_add_negative((i), (&(l)->a))
95870 #define local_add_return(i, l) atomic_long_add_return((i), (&(l)->a))
95871 +#define local_add_return_unchecked(i, l) atomic_long_add_return_unchecked((i), (&(l)->a))
95872 #define local_sub_return(i, l) atomic_long_sub_return((i), (&(l)->a))
95873 #define local_inc_return(l) atomic_long_inc_return(&(l)->a)
95874 +#define local_dec_return(l) atomic_long_dec_return(&(l)->a)
95875
95876 #define local_cmpxchg(l, o, n) atomic_long_cmpxchg((&(l)->a), (o), (n))
95877 +#define local_cmpxchg_unchecked(l, o, n) atomic_long_cmpxchg((&(l)->a), (o), (n))
95878 #define local_xchg(l, n) atomic_long_xchg((&(l)->a), (n))
95879 #define local_add_unless(l, _a, u) atomic_long_add_unless((&(l)->a), (_a), (u))
95880 #define local_inc_not_zero(l) atomic_long_inc_not_zero(&(l)->a)
95881 diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
95882 index 725612b..9cc513a 100644
95883 --- a/include/asm-generic/pgtable-nopmd.h
95884 +++ b/include/asm-generic/pgtable-nopmd.h
95885 @@ -1,14 +1,19 @@
95886 #ifndef _PGTABLE_NOPMD_H
95887 #define _PGTABLE_NOPMD_H
95888
95889 -#ifndef __ASSEMBLY__
95890 -
95891 #include <asm-generic/pgtable-nopud.h>
95892
95893 -struct mm_struct;
95894 -
95895 #define __PAGETABLE_PMD_FOLDED
95896
95897 +#define PMD_SHIFT PUD_SHIFT
95898 +#define PTRS_PER_PMD 1
95899 +#define PMD_SIZE (_AC(1,UL) << PMD_SHIFT)
95900 +#define PMD_MASK (~(PMD_SIZE-1))
95901 +
95902 +#ifndef __ASSEMBLY__
95903 +
95904 +struct mm_struct;
95905 +
95906 /*
95907 * Having the pmd type consist of a pud gets the size right, and allows
95908 * us to conceptually access the pud entry that this pmd is folded into
95909 @@ -16,11 +21,6 @@ struct mm_struct;
95910 */
95911 typedef struct { pud_t pud; } pmd_t;
95912
95913 -#define PMD_SHIFT PUD_SHIFT
95914 -#define PTRS_PER_PMD 1
95915 -#define PMD_SIZE (1UL << PMD_SHIFT)
95916 -#define PMD_MASK (~(PMD_SIZE-1))
95917 -
95918 /*
95919 * The "pud_xxx()" functions here are trivial for a folded two-level
95920 * setup: the pmd is never bad, and a pmd always exists (as it's folded
95921 diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h
95922 index 810431d..0ec4804f 100644
95923 --- a/include/asm-generic/pgtable-nopud.h
95924 +++ b/include/asm-generic/pgtable-nopud.h
95925 @@ -1,10 +1,15 @@
95926 #ifndef _PGTABLE_NOPUD_H
95927 #define _PGTABLE_NOPUD_H
95928
95929 -#ifndef __ASSEMBLY__
95930 -
95931 #define __PAGETABLE_PUD_FOLDED
95932
95933 +#define PUD_SHIFT PGDIR_SHIFT
95934 +#define PTRS_PER_PUD 1
95935 +#define PUD_SIZE (_AC(1,UL) << PUD_SHIFT)
95936 +#define PUD_MASK (~(PUD_SIZE-1))
95937 +
95938 +#ifndef __ASSEMBLY__
95939 +
95940 /*
95941 * Having the pud type consist of a pgd gets the size right, and allows
95942 * us to conceptually access the pgd entry that this pud is folded into
95943 @@ -12,11 +17,6 @@
95944 */
95945 typedef struct { pgd_t pgd; } pud_t;
95946
95947 -#define PUD_SHIFT PGDIR_SHIFT
95948 -#define PTRS_PER_PUD 1
95949 -#define PUD_SIZE (1UL << PUD_SHIFT)
95950 -#define PUD_MASK (~(PUD_SIZE-1))
95951 -
95952 /*
95953 * The "pgd_xxx()" functions here are trivial for a folded two-level
95954 * setup: the pud is never bad, and a pud always exists (as it's folded
95955 @@ -29,6 +29,7 @@ static inline void pgd_clear(pgd_t *pgd) { }
95956 #define pud_ERROR(pud) (pgd_ERROR((pud).pgd))
95957
95958 #define pgd_populate(mm, pgd, pud) do { } while (0)
95959 +#define pgd_populate_kernel(mm, pgd, pud) do { } while (0)
95960 /*
95961 * (puds are folded into pgds so this doesn't get actually called,
95962 * but the define is needed for a generic inline function.)
95963 diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
95964 index 29c57b2..da571a2 100644
95965 --- a/include/asm-generic/pgtable.h
95966 +++ b/include/asm-generic/pgtable.h
95967 @@ -715,6 +715,22 @@ static inline int pmd_protnone(pmd_t pmd)
95968 }
95969 #endif /* CONFIG_NUMA_BALANCING */
95970
95971 +#ifndef __HAVE_ARCH_PAX_OPEN_KERNEL
95972 +#ifdef CONFIG_PAX_KERNEXEC
95973 +#error KERNEXEC requires pax_open_kernel
95974 +#else
95975 +static inline unsigned long pax_open_kernel(void) { return 0; }
95976 +#endif
95977 +#endif
95978 +
95979 +#ifndef __HAVE_ARCH_PAX_CLOSE_KERNEL
95980 +#ifdef CONFIG_PAX_KERNEXEC
95981 +#error KERNEXEC requires pax_close_kernel
95982 +#else
95983 +static inline unsigned long pax_close_kernel(void) { return 0; }
95984 +#endif
95985 +#endif
95986 +
95987 #endif /* CONFIG_MMU */
95988
95989 #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP
95990 diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
95991 index b58fd66..6cfae67 100644
95992 --- a/include/asm-generic/sections.h
95993 +++ b/include/asm-generic/sections.h
95994 @@ -30,6 +30,7 @@ extern char _data[], _sdata[], _edata[];
95995 extern char __bss_start[], __bss_stop[];
95996 extern char __init_begin[], __init_end[];
95997 extern char _sinittext[], _einittext[];
95998 +extern char _sinitdata[], _einitdata[];
95999 extern char _end[];
96000 extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[];
96001 extern char __kprobes_text_start[], __kprobes_text_end[];
96002 diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
96003 index 72d8803..cb9749c 100644
96004 --- a/include/asm-generic/uaccess.h
96005 +++ b/include/asm-generic/uaccess.h
96006 @@ -343,4 +343,20 @@ clear_user(void __user *to, unsigned long n)
96007 return __clear_user(to, n);
96008 }
96009
96010 +#ifndef __HAVE_ARCH_PAX_OPEN_USERLAND
96011 +#ifdef CONFIG_PAX_MEMORY_UDEREF
96012 +#error UDEREF requires pax_open_userland
96013 +#else
96014 +static inline unsigned long pax_open_userland(void) { return 0; }
96015 +#endif
96016 +#endif
96017 +
96018 +#ifndef __HAVE_ARCH_PAX_CLOSE_USERLAND
96019 +#ifdef CONFIG_PAX_MEMORY_UDEREF
96020 +#error UDEREF requires pax_close_userland
96021 +#else
96022 +static inline unsigned long pax_close_userland(void) { return 0; }
96023 +#endif
96024 +#endif
96025 +
96026 #endif /* __ASM_GENERIC_UACCESS_H */
96027 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
96028 index 8bd374d..2665ce3 100644
96029 --- a/include/asm-generic/vmlinux.lds.h
96030 +++ b/include/asm-generic/vmlinux.lds.h
96031 @@ -246,6 +246,7 @@
96032 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
96033 VMLINUX_SYMBOL(__start_rodata) = .; \
96034 *(.rodata) *(.rodata.*) \
96035 + *(.data..read_only) \
96036 *(__vermagic) /* Kernel version magic */ \
96037 . = ALIGN(8); \
96038 VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \
96039 @@ -504,6 +505,7 @@
96040 KERNEL_CTORS() \
96041 MCOUNT_REC() \
96042 *(.init.rodata) \
96043 + *(.init.rodata.*) \
96044 FTRACE_EVENTS() \
96045 TRACE_SYSCALLS() \
96046 KPROBE_BLACKLIST() \
96047 @@ -525,6 +527,8 @@
96048
96049 #define EXIT_DATA \
96050 *(.exit.data) \
96051 + *(.exit.rodata) \
96052 + *(.exit.rodata.*) \
96053 MEM_DISCARD(exit.data) \
96054 MEM_DISCARD(exit.rodata)
96055
96056 @@ -741,17 +745,18 @@
96057 * section in the linker script will go there too. @phdr should have
96058 * a leading colon.
96059 *
96060 - * Note that this macros defines __per_cpu_load as an absolute symbol.
96061 + * Note that this macros defines per_cpu_load as an absolute symbol.
96062 * If there is no need to put the percpu section at a predetermined
96063 * address, use PERCPU_SECTION.
96064 */
96065 #define PERCPU_VADDR(cacheline, vaddr, phdr) \
96066 - VMLINUX_SYMBOL(__per_cpu_load) = .; \
96067 - .data..percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \
96068 + per_cpu_load = .; \
96069 + .data..percpu vaddr : AT(VMLINUX_SYMBOL(per_cpu_load) \
96070 - LOAD_OFFSET) { \
96071 + VMLINUX_SYMBOL(__per_cpu_load) = . + per_cpu_load; \
96072 PERCPU_INPUT(cacheline) \
96073 } phdr \
96074 - . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data..percpu);
96075 + . = VMLINUX_SYMBOL(per_cpu_load) + SIZEOF(.data..percpu);
96076
96077 /**
96078 * PERCPU_SECTION - define output section for percpu area, simple version
96079 @@ -813,12 +818,14 @@
96080
96081 #define INIT_DATA_SECTION(initsetup_align) \
96082 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { \
96083 + VMLINUX_SYMBOL(_sinitdata) = .; \
96084 INIT_DATA \
96085 INIT_SETUP(initsetup_align) \
96086 INIT_CALLS \
96087 CON_INITCALL \
96088 SECURITY_INITCALL \
96089 INIT_RAM_FS \
96090 + VMLINUX_SYMBOL(_einitdata) = .; \
96091 }
96092
96093 #define BSS_SECTION(sbss_align, bss_align, stop_align) \
96094 diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
96095 index d4ebf6e..ca4bd35 100644
96096 --- a/include/crypto/algapi.h
96097 +++ b/include/crypto/algapi.h
96098 @@ -35,7 +35,7 @@ struct crypto_type {
96099 unsigned int maskclear;
96100 unsigned int maskset;
96101 unsigned int tfmsize;
96102 -};
96103 +} __do_const;
96104
96105 struct crypto_instance {
96106 struct crypto_alg alg;
96107 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
96108 index 5aa5197..e4ca348 100644
96109 --- a/include/drm/drmP.h
96110 +++ b/include/drm/drmP.h
96111 @@ -59,6 +59,7 @@
96112
96113 #include <asm/mman.h>
96114 #include <asm/pgalloc.h>
96115 +#include <asm/local.h>
96116 #include <asm/uaccess.h>
96117
96118 #include <uapi/drm/drm.h>
96119 @@ -137,17 +138,18 @@ void drm_err(const char *format, ...);
96120 /*@{*/
96121
96122 /* driver capabilities and requirements mask */
96123 -#define DRIVER_USE_AGP 0x1
96124 -#define DRIVER_PCI_DMA 0x8
96125 -#define DRIVER_SG 0x10
96126 -#define DRIVER_HAVE_DMA 0x20
96127 -#define DRIVER_HAVE_IRQ 0x40
96128 -#define DRIVER_IRQ_SHARED 0x80
96129 -#define DRIVER_GEM 0x1000
96130 -#define DRIVER_MODESET 0x2000
96131 -#define DRIVER_PRIME 0x4000
96132 -#define DRIVER_RENDER 0x8000
96133 -#define DRIVER_ATOMIC 0x10000
96134 +#define DRIVER_USE_AGP 0x1
96135 +#define DRIVER_PCI_DMA 0x8
96136 +#define DRIVER_SG 0x10
96137 +#define DRIVER_HAVE_DMA 0x20
96138 +#define DRIVER_HAVE_IRQ 0x40
96139 +#define DRIVER_IRQ_SHARED 0x80
96140 +#define DRIVER_GEM 0x1000
96141 +#define DRIVER_MODESET 0x2000
96142 +#define DRIVER_PRIME 0x4000
96143 +#define DRIVER_RENDER 0x8000
96144 +#define DRIVER_ATOMIC 0x10000
96145 +#define DRIVER_KMS_LEGACY_CONTEXT 0x20000
96146
96147 /***********************************************************************/
96148 /** \name Macros to make printk easier */
96149 @@ -233,10 +235,12 @@ void drm_err(const char *format, ...);
96150 * \param cmd command.
96151 * \param arg argument.
96152 */
96153 -typedef int drm_ioctl_t(struct drm_device *dev, void *data,
96154 +typedef int (* const drm_ioctl_t)(struct drm_device *dev, void *data,
96155 + struct drm_file *file_priv);
96156 +typedef int (* drm_ioctl_no_const_t)(struct drm_device *dev, void *data,
96157 struct drm_file *file_priv);
96158
96159 -typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
96160 +typedef int (* const drm_ioctl_compat_t)(struct file *filp, unsigned int cmd,
96161 unsigned long arg);
96162
96163 #define DRM_IOCTL_NR(n) _IOC_NR(n)
96164 @@ -252,9 +256,9 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
96165 struct drm_ioctl_desc {
96166 unsigned int cmd;
96167 int flags;
96168 - drm_ioctl_t *func;
96169 + drm_ioctl_t func;
96170 const char *name;
96171 -};
96172 +} __do_const;
96173
96174 /**
96175 * Creates a driver or general drm_ioctl_desc array entry for the given
96176 @@ -647,7 +651,8 @@ struct drm_info_list {
96177 int (*show)(struct seq_file*, void*); /** show callback */
96178 u32 driver_features; /**< Required driver features for this entry */
96179 void *data;
96180 -};
96181 +} __do_const;
96182 +typedef struct drm_info_list __no_const drm_info_list_no_const;
96183
96184 /**
96185 * debugfs node structure. This structure represents a debugfs file.
96186 @@ -735,7 +740,7 @@ struct drm_device {
96187
96188 /** \name Usage Counters */
96189 /*@{ */
96190 - int open_count; /**< Outstanding files open, protected by drm_global_mutex. */
96191 + local_t open_count; /**< Outstanding files open, protected by drm_global_mutex. */
96192 spinlock_t buf_lock; /**< For drm_device::buf_use and a few other things. */
96193 int buf_use; /**< Buffers in use -- cannot alloc */
96194 atomic_t buf_alloc; /**< Buffer allocation in progress */
96195 diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
96196 index 918aa68..f162a8a 100644
96197 --- a/include/drm/drm_crtc_helper.h
96198 +++ b/include/drm/drm_crtc_helper.h
96199 @@ -161,7 +161,7 @@ struct drm_encoder_helper_funcs {
96200 int (*atomic_check)(struct drm_encoder *encoder,
96201 struct drm_crtc_state *crtc_state,
96202 struct drm_connector_state *conn_state);
96203 -};
96204 +} __no_const;
96205
96206 /**
96207 * struct drm_connector_helper_funcs - helper operations for connectors
96208 diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
96209 index 0de6290..600f107 100644
96210 --- a/include/drm/drm_mm.h
96211 +++ b/include/drm/drm_mm.h
96212 @@ -297,7 +297,7 @@ void drm_mm_remove_node(struct drm_mm_node *node);
96213 void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new);
96214 void drm_mm_init(struct drm_mm *mm,
96215 u64 start,
96216 - u64 size);
96217 + u64 size) __intentional_overflow(-1);
96218 void drm_mm_takedown(struct drm_mm *mm);
96219 bool drm_mm_clean(struct drm_mm *mm);
96220
96221 diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h
96222 index 17c4456..da0c5eb 100644
96223 --- a/include/drm/i915_pciids.h
96224 +++ b/include/drm/i915_pciids.h
96225 @@ -37,7 +37,7 @@
96226 */
96227 #define INTEL_VGA_DEVICE(id, info) { \
96228 0x8086, id, \
96229 - ~0, ~0, \
96230 + PCI_ANY_ID, PCI_ANY_ID, \
96231 0x030000, 0xff0000, \
96232 (unsigned long) info }
96233
96234 diff --git a/include/drm/intel-gtt.h b/include/drm/intel-gtt.h
96235 index b08bdad..21e6054 100644
96236 --- a/include/drm/intel-gtt.h
96237 +++ b/include/drm/intel-gtt.h
96238 @@ -3,8 +3,8 @@
96239 #ifndef _DRM_INTEL_GTT_H
96240 #define _DRM_INTEL_GTT_H
96241
96242 -void intel_gtt_get(size_t *gtt_total, size_t *stolen_size,
96243 - phys_addr_t *mappable_base, unsigned long *mappable_end);
96244 +void intel_gtt_get(uint64_t *gtt_total, uint64_t *stolen_size,
96245 + uint64_t *mappable_base, uint64_t *mappable_end);
96246
96247 int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
96248 struct agp_bridge_data *bridge);
96249 diff --git a/include/drm/ttm/ttm_memory.h b/include/drm/ttm/ttm_memory.h
96250 index 72dcbe8..8db58d7 100644
96251 --- a/include/drm/ttm/ttm_memory.h
96252 +++ b/include/drm/ttm/ttm_memory.h
96253 @@ -48,7 +48,7 @@
96254
96255 struct ttm_mem_shrink {
96256 int (*do_shrink) (struct ttm_mem_shrink *);
96257 -};
96258 +} __no_const;
96259
96260 /**
96261 * struct ttm_mem_global - Global memory accounting structure.
96262 diff --git a/include/drm/ttm/ttm_page_alloc.h b/include/drm/ttm/ttm_page_alloc.h
96263 index 49a8284..9643967 100644
96264 --- a/include/drm/ttm/ttm_page_alloc.h
96265 +++ b/include/drm/ttm/ttm_page_alloc.h
96266 @@ -80,6 +80,7 @@ void ttm_dma_page_alloc_fini(void);
96267 */
96268 extern int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data);
96269
96270 +struct device;
96271 extern int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev);
96272 extern void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev);
96273
96274 diff --git a/include/keys/asymmetric-subtype.h b/include/keys/asymmetric-subtype.h
96275 index 4b840e8..155d235 100644
96276 --- a/include/keys/asymmetric-subtype.h
96277 +++ b/include/keys/asymmetric-subtype.h
96278 @@ -37,7 +37,7 @@ struct asymmetric_key_subtype {
96279 /* Verify the signature on a key of this subtype (optional) */
96280 int (*verify_signature)(const struct key *key,
96281 const struct public_key_signature *sig);
96282 -};
96283 +} __do_const;
96284
96285 /**
96286 * asymmetric_key_subtype - Get the subtype from an asymmetric key
96287 diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h
96288 index c1da539..1dcec55 100644
96289 --- a/include/linux/atmdev.h
96290 +++ b/include/linux/atmdev.h
96291 @@ -28,7 +28,7 @@ struct compat_atm_iobuf {
96292 #endif
96293
96294 struct k_atm_aal_stats {
96295 -#define __HANDLE_ITEM(i) atomic_t i
96296 +#define __HANDLE_ITEM(i) atomic_unchecked_t i
96297 __AAL_STAT_ITEMS
96298 #undef __HANDLE_ITEM
96299 };
96300 @@ -200,7 +200,7 @@ struct atmdev_ops { /* only send is required */
96301 int (*change_qos)(struct atm_vcc *vcc,struct atm_qos *qos,int flags);
96302 int (*proc_read)(struct atm_dev *dev,loff_t *pos,char *page);
96303 struct module *owner;
96304 -};
96305 +} __do_const ;
96306
96307 struct atmphy_ops {
96308 int (*start)(struct atm_dev *dev);
96309 diff --git a/include/linux/atomic.h b/include/linux/atomic.h
96310 index 5b08a85..60922fb 100644
96311 --- a/include/linux/atomic.h
96312 +++ b/include/linux/atomic.h
96313 @@ -12,7 +12,7 @@
96314 * Atomically adds @a to @v, so long as @v was not already @u.
96315 * Returns non-zero if @v was not @u, and zero otherwise.
96316 */
96317 -static inline int atomic_add_unless(atomic_t *v, int a, int u)
96318 +static inline int __intentional_overflow(-1) atomic_add_unless(atomic_t *v, int a, int u)
96319 {
96320 return __atomic_add_unless(v, a, u) != u;
96321 }
96322 diff --git a/include/linux/audit.h b/include/linux/audit.h
96323 index c2e7e3a..8bfc0e1 100644
96324 --- a/include/linux/audit.h
96325 +++ b/include/linux/audit.h
96326 @@ -223,7 +223,7 @@ static inline void audit_ptrace(struct task_struct *t)
96327 extern unsigned int audit_serial(void);
96328 extern int auditsc_get_stamp(struct audit_context *ctx,
96329 struct timespec *t, unsigned int *serial);
96330 -extern int audit_set_loginuid(kuid_t loginuid);
96331 +extern int __intentional_overflow(-1) audit_set_loginuid(kuid_t loginuid);
96332
96333 static inline kuid_t audit_get_loginuid(struct task_struct *tsk)
96334 {
96335 diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
96336 index 576e463..28fd926 100644
96337 --- a/include/linux/binfmts.h
96338 +++ b/include/linux/binfmts.h
96339 @@ -44,7 +44,7 @@ struct linux_binprm {
96340 unsigned interp_flags;
96341 unsigned interp_data;
96342 unsigned long loader, exec;
96343 -};
96344 +} __randomize_layout;
96345
96346 #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0
96347 #define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT)
96348 @@ -77,8 +77,10 @@ struct linux_binfmt {
96349 int (*load_binary)(struct linux_binprm *);
96350 int (*load_shlib)(struct file *);
96351 int (*core_dump)(struct coredump_params *cprm);
96352 + void (*handle_mprotect)(struct vm_area_struct *vma, unsigned long newflags);
96353 + void (*handle_mmap)(struct file *);
96354 unsigned long min_coredump; /* minimal dump size */
96355 -};
96356 +} __do_const __randomize_layout;
96357
96358 extern void __register_binfmt(struct linux_binfmt *fmt, int insert);
96359
96360 diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
96361 index ea17cca..dd56e56 100644
96362 --- a/include/linux/bitmap.h
96363 +++ b/include/linux/bitmap.h
96364 @@ -295,7 +295,7 @@ static inline int bitmap_full(const unsigned long *src, unsigned int nbits)
96365 return find_first_zero_bit(src, nbits) == nbits;
96366 }
96367
96368 -static inline int bitmap_weight(const unsigned long *src, unsigned int nbits)
96369 +static inline int __intentional_overflow(-1) bitmap_weight(const unsigned long *src, unsigned int nbits)
96370 {
96371 if (small_const_nbits(nbits))
96372 return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits));
96373 diff --git a/include/linux/bitops.h b/include/linux/bitops.h
96374 index 297f5bd..5892caa 100644
96375 --- a/include/linux/bitops.h
96376 +++ b/include/linux/bitops.h
96377 @@ -75,7 +75,7 @@ static __inline__ int get_count_order(unsigned int count)
96378 return order;
96379 }
96380
96381 -static inline unsigned long hweight_long(unsigned long w)
96382 +static inline unsigned long __intentional_overflow(-1) hweight_long(unsigned long w)
96383 {
96384 return sizeof(w) == 4 ? hweight32(w) : hweight64(w);
96385 }
96386 @@ -105,7 +105,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
96387 * @word: value to rotate
96388 * @shift: bits to roll
96389 */
96390 -static inline __u32 rol32(__u32 word, unsigned int shift)
96391 +static inline __u32 __intentional_overflow(-1) rol32(__u32 word, unsigned int shift)
96392 {
96393 return (word << shift) | (word >> (32 - shift));
96394 }
96395 @@ -115,7 +115,7 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
96396 * @word: value to rotate
96397 * @shift: bits to roll
96398 */
96399 -static inline __u32 ror32(__u32 word, unsigned int shift)
96400 +static inline __u32 __intentional_overflow(-1) ror32(__u32 word, unsigned int shift)
96401 {
96402 return (word >> shift) | (word << (32 - shift));
96403 }
96404 @@ -171,7 +171,7 @@ static inline __s32 sign_extend32(__u32 value, int index)
96405 return (__s32)(value << shift) >> shift;
96406 }
96407
96408 -static inline unsigned fls_long(unsigned long l)
96409 +static inline unsigned __intentional_overflow(-1) fls_long(unsigned long l)
96410 {
96411 if (sizeof(l) == 4)
96412 return fls(l);
96413 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
96414 index d4068c1..77159a1 100644
96415 --- a/include/linux/blkdev.h
96416 +++ b/include/linux/blkdev.h
96417 @@ -1567,7 +1567,7 @@ struct block_device_operations {
96418 /* this callback is with swap_lock and sometimes page table lock held */
96419 void (*swap_slot_free_notify) (struct block_device *, unsigned long);
96420 struct module *owner;
96421 -};
96422 +} __do_const;
96423
96424 extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
96425 unsigned long);
96426 diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
96427 index afc1343..9735539 100644
96428 --- a/include/linux/blktrace_api.h
96429 +++ b/include/linux/blktrace_api.h
96430 @@ -25,7 +25,7 @@ struct blk_trace {
96431 struct dentry *dropped_file;
96432 struct dentry *msg_file;
96433 struct list_head running_list;
96434 - atomic_t dropped;
96435 + atomic_unchecked_t dropped;
96436 };
96437
96438 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
96439 diff --git a/include/linux/cache.h b/include/linux/cache.h
96440 index 17e7e82..1d7da26 100644
96441 --- a/include/linux/cache.h
96442 +++ b/include/linux/cache.h
96443 @@ -16,6 +16,14 @@
96444 #define __read_mostly
96445 #endif
96446
96447 +#ifndef __read_only
96448 +#ifdef CONFIG_PAX_KERNEXEC
96449 +#error KERNEXEC requires __read_only
96450 +#else
96451 +#define __read_only __read_mostly
96452 +#endif
96453 +#endif
96454 +
96455 #ifndef ____cacheline_aligned
96456 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
96457 #endif
96458 diff --git a/include/linux/capability.h b/include/linux/capability.h
96459 index af9f0b9..71a5e5c 100644
96460 --- a/include/linux/capability.h
96461 +++ b/include/linux/capability.h
96462 @@ -237,15 +237,28 @@ static inline bool capable(int cap)
96463 {
96464 return true;
96465 }
96466 +static inline bool capable_nolog(int cap)
96467 +{
96468 + return true;
96469 +}
96470 static inline bool ns_capable(struct user_namespace *ns, int cap)
96471 {
96472 return true;
96473 }
96474 +static inline bool ns_capable_nolog(struct user_namespace *ns, int cap)
96475 +{
96476 + return true;
96477 +}
96478 #endif /* CONFIG_MULTIUSER */
96479 extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap);
96480 +extern bool capable_wrt_inode_uidgid_nolog(const struct inode *inode, int cap);
96481 extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);
96482 +extern bool capable_nolog(int cap);
96483 +extern bool ns_capable_nolog(struct user_namespace *ns, int cap);
96484
96485 /* audit system wants to get cap info from files as well */
96486 extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps);
96487
96488 +extern int is_privileged_binary(const struct dentry *dentry);
96489 +
96490 #endif /* !_LINUX_CAPABILITY_H */
96491 diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h
96492 index 8609d57..86e4d79 100644
96493 --- a/include/linux/cdrom.h
96494 +++ b/include/linux/cdrom.h
96495 @@ -87,7 +87,6 @@ struct cdrom_device_ops {
96496
96497 /* driver specifications */
96498 const int capability; /* capability flags */
96499 - int n_minors; /* number of active minor devices */
96500 /* handle uniform packets for scsi type devices (scsi,atapi) */
96501 int (*generic_packet) (struct cdrom_device_info *,
96502 struct packet_command *);
96503 diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h
96504 index bda5ec0b4..51d8ea1 100644
96505 --- a/include/linux/cleancache.h
96506 +++ b/include/linux/cleancache.h
96507 @@ -35,7 +35,7 @@ struct cleancache_ops {
96508 void (*invalidate_page)(int, struct cleancache_filekey, pgoff_t);
96509 void (*invalidate_inode)(int, struct cleancache_filekey);
96510 void (*invalidate_fs)(int);
96511 -};
96512 +} __no_const;
96513
96514 extern int cleancache_register_ops(struct cleancache_ops *ops);
96515 extern void __cleancache_init_fs(struct super_block *);
96516 diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
96517 index 78842f4..7e7f81f 100644
96518 --- a/include/linux/clk-provider.h
96519 +++ b/include/linux/clk-provider.h
96520 @@ -196,6 +196,7 @@ struct clk_ops {
96521 void (*init)(struct clk_hw *hw);
96522 int (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
96523 };
96524 +typedef struct clk_ops __no_const clk_ops_no_const;
96525
96526 /**
96527 * struct clk_init_data - holds init data that's common to all clocks and is
96528 diff --git a/include/linux/compat.h b/include/linux/compat.h
96529 index a76c917..63b52db 100644
96530 --- a/include/linux/compat.h
96531 +++ b/include/linux/compat.h
96532 @@ -316,7 +316,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
96533 compat_size_t __user *len_ptr);
96534
96535 asmlinkage long compat_sys_ipc(u32, int, int, u32, compat_uptr_t, u32);
96536 -asmlinkage long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg);
96537 +asmlinkage long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg) __intentional_overflow(0);
96538 asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg);
96539 asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp,
96540 compat_ssize_t msgsz, int msgflg);
96541 @@ -325,7 +325,7 @@ asmlinkage long compat_sys_msgrcv(int msqid, compat_uptr_t msgp,
96542 long compat_sys_msgctl(int first, int second, void __user *uptr);
96543 long compat_sys_shmctl(int first, int second, void __user *uptr);
96544 long compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
96545 - unsigned nsems, const struct compat_timespec __user *timeout);
96546 + compat_long_t nsems, const struct compat_timespec __user *timeout);
96547 asmlinkage long compat_sys_keyctl(u32 option,
96548 u32 arg2, u32 arg3, u32 arg4, u32 arg5);
96549 asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32);
96550 @@ -439,7 +439,7 @@ extern int compat_ptrace_request(struct task_struct *child,
96551 extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
96552 compat_ulong_t addr, compat_ulong_t data);
96553 asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
96554 - compat_long_t addr, compat_long_t data);
96555 + compat_ulong_t addr, compat_ulong_t data);
96556
96557 asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, compat_size_t);
96558 /*
96559 diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
96560 index dfaa7b3..58cebfb 100644
96561 --- a/include/linux/compiler-gcc.h
96562 +++ b/include/linux/compiler-gcc.h
96563 @@ -116,8 +116,8 @@
96564 */
96565 #define __pure __attribute__((pure))
96566 #define __aligned(x) __attribute__((aligned(x)))
96567 -#define __printf(a, b) __attribute__((format(printf, a, b)))
96568 -#define __scanf(a, b) __attribute__((format(scanf, a, b)))
96569 +#define __printf(a, b) __attribute__((format(printf, a, b))) __nocapture(a, b)
96570 +#define __scanf(a, b) __attribute__((format(scanf, a, b))) __nocapture(a, b)
96571 #define __attribute_const__ __attribute__((__const__))
96572 #define __maybe_unused __attribute__((unused))
96573 #define __always_unused __attribute__((unused))
96574 @@ -184,9 +184,38 @@
96575 # define __compiletime_warning(message) __attribute__((warning(message)))
96576 # define __compiletime_error(message) __attribute__((error(message)))
96577 #endif /* __CHECKER__ */
96578 +
96579 +#define __alloc_size(...) __attribute((alloc_size(__VA_ARGS__)))
96580 +#define __bos(ptr, arg) __builtin_object_size((ptr), (arg))
96581 +#define __bos0(ptr) __bos((ptr), 0)
96582 +#define __bos1(ptr) __bos((ptr), 1)
96583 #endif /* GCC_VERSION >= 40300 */
96584
96585 #if GCC_VERSION >= 40500
96586 +
96587 +#ifdef RANDSTRUCT_PLUGIN
96588 +#define __randomize_layout __attribute__((randomize_layout))
96589 +#define __no_randomize_layout __attribute__((no_randomize_layout))
96590 +#endif
96591 +
96592 +#ifdef CONSTIFY_PLUGIN
96593 +#define __no_const __attribute__((no_const))
96594 +#define __do_const __attribute__((do_const))
96595 +#endif
96596 +
96597 +#ifdef SIZE_OVERFLOW_PLUGIN
96598 +#define __size_overflow(...) __attribute__((size_overflow(__VA_ARGS__)))
96599 +#define __intentional_overflow(...) __attribute__((intentional_overflow(__VA_ARGS__)))
96600 +#endif
96601 +
96602 +#ifdef LATENT_ENTROPY_PLUGIN
96603 +#define __latent_entropy __attribute__((latent_entropy))
96604 +#endif
96605 +
96606 +#ifdef INITIFY_PLUGIN
96607 +#define __nocapture(...) __attribute__((nocapture(__VA_ARGS__)))
96608 +#endif
96609 +
96610 /*
96611 * Mark a position in code as unreachable. This can be used to
96612 * suppress control flow warnings after asm blocks that transfer
96613 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
96614 index e08a6ae..2e5e776 100644
96615 --- a/include/linux/compiler.h
96616 +++ b/include/linux/compiler.h
96617 @@ -5,11 +5,14 @@
96618
96619 #ifdef __CHECKER__
96620 # define __user __attribute__((noderef, address_space(1)))
96621 +# define __force_user __force __user
96622 # define __kernel __attribute__((address_space(0)))
96623 +# define __force_kernel __force __kernel
96624 # define __safe __attribute__((safe))
96625 # define __force __attribute__((force))
96626 # define __nocast __attribute__((nocast))
96627 # define __iomem __attribute__((noderef, address_space(2)))
96628 +# define __force_iomem __force __iomem
96629 # define __must_hold(x) __attribute__((context(x,1,1)))
96630 # define __acquires(x) __attribute__((context(x,0,1)))
96631 # define __releases(x) __attribute__((context(x,1,0)))
96632 @@ -17,21 +20,39 @@
96633 # define __release(x) __context__(x,-1)
96634 # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
96635 # define __percpu __attribute__((noderef, address_space(3)))
96636 +# define __force_percpu __force __percpu
96637 # define __pmem __attribute__((noderef, address_space(5)))
96638 +# define __force_pmem __force __pmem
96639 #ifdef CONFIG_SPARSE_RCU_POINTER
96640 # define __rcu __attribute__((noderef, address_space(4)))
96641 +# define __force_rcu __force __rcu
96642 #else
96643 # define __rcu
96644 +# define __force_rcu
96645 #endif
96646 extern void __chk_user_ptr(const volatile void __user *);
96647 extern void __chk_io_ptr(const volatile void __iomem *);
96648 #else
96649 -# define __user
96650 -# define __kernel
96651 +# ifdef CHECKER_PLUGIN
96652 +//# define __user
96653 +//# define __force_user
96654 +//# define __kernel
96655 +//# define __force_kernel
96656 +# else
96657 +# ifdef STRUCTLEAK_PLUGIN
96658 +# define __user __attribute__((user))
96659 +# else
96660 +# define __user
96661 +# endif
96662 +# define __force_user
96663 +# define __kernel
96664 +# define __force_kernel
96665 +# endif
96666 # define __safe
96667 # define __force
96668 # define __nocast
96669 # define __iomem
96670 +# define __force_iomem
96671 # define __chk_user_ptr(x) (void)0
96672 # define __chk_io_ptr(x) (void)0
96673 # define __builtin_warning(x, y...) (1)
96674 @@ -42,8 +63,11 @@ extern void __chk_io_ptr(const volatile void __iomem *);
96675 # define __release(x) (void)0
96676 # define __cond_lock(x,c) (c)
96677 # define __percpu
96678 +# define __force_percpu
96679 # define __rcu
96680 +# define __force_rcu
96681 # define __pmem
96682 +# define __force_pmem
96683 #endif
96684
96685 /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
96686 @@ -201,27 +225,27 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
96687 static __always_inline void __read_once_size(const volatile void *p, void *res, int size)
96688 {
96689 switch (size) {
96690 - case 1: *(__u8 *)res = *(volatile __u8 *)p; break;
96691 - case 2: *(__u16 *)res = *(volatile __u16 *)p; break;
96692 - case 4: *(__u32 *)res = *(volatile __u32 *)p; break;
96693 - case 8: *(__u64 *)res = *(volatile __u64 *)p; break;
96694 + case 1: *(__u8 *)res = *(const volatile __u8 *)p; break;
96695 + case 2: *(__u16 *)res = *(const volatile __u16 *)p; break;
96696 + case 4: *(__u32 *)res = *(const volatile __u32 *)p; break;
96697 + case 8: *(__u64 *)res = *(const volatile __u64 *)p; break;
96698 default:
96699 barrier();
96700 - __builtin_memcpy((void *)res, (const void *)p, size);
96701 + __builtin_memcpy(res, (const void *)p, size);
96702 barrier();
96703 }
96704 }
96705
96706 -static __always_inline void __write_once_size(volatile void *p, void *res, int size)
96707 +static __always_inline void __write_once_size(volatile void *p, const void *res, int size)
96708 {
96709 switch (size) {
96710 - case 1: *(volatile __u8 *)p = *(__u8 *)res; break;
96711 - case 2: *(volatile __u16 *)p = *(__u16 *)res; break;
96712 - case 4: *(volatile __u32 *)p = *(__u32 *)res; break;
96713 - case 8: *(volatile __u64 *)p = *(__u64 *)res; break;
96714 + case 1: *(volatile __u8 *)p = *(const __u8 *)res; break;
96715 + case 2: *(volatile __u16 *)p = *(const __u16 *)res; break;
96716 + case 4: *(volatile __u32 *)p = *(const __u32 *)res; break;
96717 + case 8: *(volatile __u64 *)p = *(const __u64 *)res; break;
96718 default:
96719 barrier();
96720 - __builtin_memcpy((void *)p, (const void *)res, size);
96721 + __builtin_memcpy((void *)p, res, size);
96722 barrier();
96723 }
96724 }
96725 @@ -370,6 +394,38 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
96726 # define __attribute_const__ /* unimplemented */
96727 #endif
96728
96729 +#ifndef __randomize_layout
96730 +# define __randomize_layout
96731 +#endif
96732 +
96733 +#ifndef __no_randomize_layout
96734 +# define __no_randomize_layout
96735 +#endif
96736 +
96737 +#ifndef __no_const
96738 +# define __no_const
96739 +#endif
96740 +
96741 +#ifndef __do_const
96742 +# define __do_const
96743 +#endif
96744 +
96745 +#ifndef __size_overflow
96746 +# define __size_overflow(...)
96747 +#endif
96748 +
96749 +#ifndef __intentional_overflow
96750 +# define __intentional_overflow(...)
96751 +#endif
96752 +
96753 +#ifndef __latent_entropy
96754 +# define __latent_entropy
96755 +#endif
96756 +
96757 +#ifndef __nocapture
96758 +# define __nocapture(...)
96759 +#endif
96760 +
96761 /*
96762 * Tell gcc if a function is cold. The compiler will assume any path
96763 * directly leading to the call is unlikely.
96764 @@ -379,6 +435,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
96765 #define __cold
96766 #endif
96767
96768 +#ifndef __alloc_size
96769 +#define __alloc_size(...)
96770 +#endif
96771 +
96772 +#ifndef __bos
96773 +#define __bos(ptr, arg)
96774 +#endif
96775 +
96776 +#ifndef __bos0
96777 +#define __bos0(ptr)
96778 +#endif
96779 +
96780 +#ifndef __bos1
96781 +#define __bos1(ptr)
96782 +#endif
96783 +
96784 /* Simple shorthand for a section definition */
96785 #ifndef __section
96786 # define __section(S) __attribute__ ((__section__(#S)))
96787 @@ -393,6 +465,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
96788 # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
96789 #endif
96790
96791 +#define __type_is_unsigned(t) (__same_type((t)0, 0UL) || __same_type((t)0, 0U) || __same_type((t)0, (unsigned short)0) || __same_type((t)0, (unsigned char)0))
96792 +
96793 /* Is this type a native word size -- useful for atomic operations */
96794 #ifndef __native_word
96795 # define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
96796 @@ -472,8 +546,9 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
96797 */
96798 #define __ACCESS_ONCE(x) ({ \
96799 __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \
96800 - (volatile typeof(x) *)&(x); })
96801 + (volatile const typeof(x) *)&(x); })
96802 #define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))
96803 +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x))
96804
96805 /**
96806 * lockless_dereference() - safely load a pointer for later dereference
96807 diff --git a/include/linux/completion.h b/include/linux/completion.h
96808 index 5d5aaae..0ea9b84 100644
96809 --- a/include/linux/completion.h
96810 +++ b/include/linux/completion.h
96811 @@ -90,16 +90,16 @@ static inline void reinit_completion(struct completion *x)
96812
96813 extern void wait_for_completion(struct completion *);
96814 extern void wait_for_completion_io(struct completion *);
96815 -extern int wait_for_completion_interruptible(struct completion *x);
96816 -extern int wait_for_completion_killable(struct completion *x);
96817 +extern int wait_for_completion_interruptible(struct completion *x) __intentional_overflow(-1);
96818 +extern int wait_for_completion_killable(struct completion *x) __intentional_overflow(-1);
96819 extern unsigned long wait_for_completion_timeout(struct completion *x,
96820 - unsigned long timeout);
96821 + unsigned long timeout) __intentional_overflow(-1);
96822 extern unsigned long wait_for_completion_io_timeout(struct completion *x,
96823 - unsigned long timeout);
96824 + unsigned long timeout) __intentional_overflow(-1);
96825 extern long wait_for_completion_interruptible_timeout(
96826 - struct completion *x, unsigned long timeout);
96827 + struct completion *x, unsigned long timeout) __intentional_overflow(-1);
96828 extern long wait_for_completion_killable_timeout(
96829 - struct completion *x, unsigned long timeout);
96830 + struct completion *x, unsigned long timeout) __intentional_overflow(-1);
96831 extern bool try_wait_for_completion(struct completion *x);
96832 extern bool completion_done(struct completion *x);
96833
96834 diff --git a/include/linux/configfs.h b/include/linux/configfs.h
96835 index 63a36e8..26b0825 100644
96836 --- a/include/linux/configfs.h
96837 +++ b/include/linux/configfs.h
96838 @@ -125,7 +125,7 @@ struct configfs_attribute {
96839 const char *ca_name;
96840 struct module *ca_owner;
96841 umode_t ca_mode;
96842 -};
96843 +} __do_const;
96844
96845 /*
96846 * Users often need to create attribute structures for their configurable
96847 diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
96848 index bde1e56..168de74 100644
96849 --- a/include/linux/cpufreq.h
96850 +++ b/include/linux/cpufreq.h
96851 @@ -211,6 +211,7 @@ struct global_attr {
96852 ssize_t (*store)(struct kobject *a, struct attribute *b,
96853 const char *c, size_t count);
96854 };
96855 +typedef struct global_attr __no_const global_attr_no_const;
96856
96857 #define define_one_global_ro(_name) \
96858 static struct global_attr _name = \
96859 @@ -282,7 +283,7 @@ struct cpufreq_driver {
96860 bool boost_supported;
96861 bool boost_enabled;
96862 int (*set_boost)(int state);
96863 -};
96864 +} __do_const;
96865
96866 /* flags */
96867 #define CPUFREQ_STICKY (1 << 0) /* driver isn't removed even if
96868 diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
96869 index d075d34..3b6734a 100644
96870 --- a/include/linux/cpuidle.h
96871 +++ b/include/linux/cpuidle.h
96872 @@ -59,7 +59,8 @@ struct cpuidle_state {
96873 void (*enter_freeze) (struct cpuidle_device *dev,
96874 struct cpuidle_driver *drv,
96875 int index);
96876 -};
96877 +} __do_const;
96878 +typedef struct cpuidle_state __no_const cpuidle_state_no_const;
96879
96880 /* Idle State Flags */
96881 #define CPUIDLE_FLAG_COUPLED (0x02) /* state applies to multiple cpus */
96882 @@ -235,7 +236,7 @@ struct cpuidle_governor {
96883 void (*reflect) (struct cpuidle_device *dev, int index);
96884
96885 struct module *owner;
96886 -};
96887 +} __do_const;
96888
96889 #ifdef CONFIG_CPU_IDLE
96890 extern int cpuidle_register_governor(struct cpuidle_governor *gov);
96891 diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
96892 index 59915ea..81ebec0 100644
96893 --- a/include/linux/cpumask.h
96894 +++ b/include/linux/cpumask.h
96895 @@ -127,17 +127,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
96896 }
96897
96898 /* Valid inputs for n are -1 and 0. */
96899 -static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
96900 +static inline unsigned int __intentional_overflow(-1) cpumask_next(int n, const struct cpumask *srcp)
96901 {
96902 return n+1;
96903 }
96904
96905 -static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
96906 +static inline unsigned int __intentional_overflow(-1) cpumask_next_zero(int n, const struct cpumask *srcp)
96907 {
96908 return n+1;
96909 }
96910
96911 -static inline unsigned int cpumask_next_and(int n,
96912 +static inline unsigned int __intentional_overflow(-1) cpumask_next_and(int n,
96913 const struct cpumask *srcp,
96914 const struct cpumask *andp)
96915 {
96916 @@ -181,7 +181,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
96917 *
96918 * Returns >= nr_cpu_ids if no further cpus set.
96919 */
96920 -static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
96921 +static inline unsigned int __intentional_overflow(-1) cpumask_next(int n, const struct cpumask *srcp)
96922 {
96923 /* -1 is a legal arg here. */
96924 if (n != -1)
96925 @@ -196,7 +196,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
96926 *
96927 * Returns >= nr_cpu_ids if no further cpus unset.
96928 */
96929 -static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
96930 +static inline unsigned int __intentional_overflow(-1) cpumask_next_zero(int n, const struct cpumask *srcp)
96931 {
96932 /* -1 is a legal arg here. */
96933 if (n != -1)
96934 @@ -204,7 +204,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
96935 return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
96936 }
96937
96938 -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *);
96939 +int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *) __intentional_overflow(-1);
96940 int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
96941 unsigned int cpumask_local_spread(unsigned int i, int node);
96942
96943 @@ -471,7 +471,7 @@ static inline bool cpumask_full(const struct cpumask *srcp)
96944 * cpumask_weight - Count of bits in *srcp
96945 * @srcp: the cpumask to count bits (< nr_cpu_ids) in.
96946 */
96947 -static inline unsigned int cpumask_weight(const struct cpumask *srcp)
96948 +static inline unsigned int __intentional_overflow(-1) cpumask_weight(const struct cpumask *srcp)
96949 {
96950 return bitmap_weight(cpumask_bits(srcp), nr_cpumask_bits);
96951 }
96952 diff --git a/include/linux/cred.h b/include/linux/cred.h
96953 index 8b6c083..51cb9f5 100644
96954 --- a/include/linux/cred.h
96955 +++ b/include/linux/cred.h
96956 @@ -35,7 +35,7 @@ struct group_info {
96957 int nblocks;
96958 kgid_t small_block[NGROUPS_SMALL];
96959 kgid_t *blocks[0];
96960 -};
96961 +} __randomize_layout;
96962
96963 /**
96964 * get_group_info - Get a reference to a group info structure
96965 @@ -152,7 +152,7 @@ struct cred {
96966 struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */
96967 struct group_info *group_info; /* supplementary groups for euid/fsgid */
96968 struct rcu_head rcu; /* RCU deletion hook */
96969 -};
96970 +} __randomize_layout;
96971
96972 extern void __put_cred(struct cred *);
96973 extern void exit_creds(struct task_struct *);
96974 @@ -210,6 +210,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk)
96975 static inline void validate_process_creds(void)
96976 {
96977 }
96978 +static inline void validate_task_creds(struct task_struct *task)
96979 +{
96980 +}
96981 #endif
96982
96983 /**
96984 @@ -347,6 +350,7 @@ static inline void put_cred(const struct cred *_cred)
96985
96986 #define task_uid(task) (task_cred_xxx((task), uid))
96987 #define task_euid(task) (task_cred_xxx((task), euid))
96988 +#define task_securebits(task) (task_cred_xxx((task), securebits))
96989
96990 #define current_cred_xxx(xxx) \
96991 ({ \
96992 diff --git a/include/linux/crypto.h b/include/linux/crypto.h
96993 index 81ef938..9ec0fdb 100644
96994 --- a/include/linux/crypto.h
96995 +++ b/include/linux/crypto.h
96996 @@ -569,7 +569,7 @@ struct cipher_tfm {
96997 const u8 *key, unsigned int keylen);
96998 void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
96999 void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
97000 -};
97001 +} __no_const;
97002
97003 struct hash_tfm {
97004 int (*init)(struct hash_desc *desc);
97005 @@ -590,7 +590,7 @@ struct compress_tfm {
97006 int (*cot_decompress)(struct crypto_tfm *tfm,
97007 const u8 *src, unsigned int slen,
97008 u8 *dst, unsigned int *dlen);
97009 -};
97010 +} __no_const;
97011
97012 #define crt_ablkcipher crt_u.ablkcipher
97013 #define crt_blkcipher crt_u.blkcipher
97014 diff --git a/include/linux/ctype.h b/include/linux/ctype.h
97015 index 653589e..4ef254a 100644
97016 --- a/include/linux/ctype.h
97017 +++ b/include/linux/ctype.h
97018 @@ -56,7 +56,7 @@ static inline unsigned char __toupper(unsigned char c)
97019 * Fast implementation of tolower() for internal usage. Do not use in your
97020 * code.
97021 */
97022 -static inline char _tolower(const char c)
97023 +static inline unsigned char _tolower(const unsigned char c)
97024 {
97025 return c | 0x20;
97026 }
97027 diff --git a/include/linux/dcache.h b/include/linux/dcache.h
97028 index d67ae11..9ec20d2 100644
97029 --- a/include/linux/dcache.h
97030 +++ b/include/linux/dcache.h
97031 @@ -123,6 +123,9 @@ struct dentry {
97032 unsigned long d_time; /* used by d_revalidate */
97033 void *d_fsdata; /* fs-specific data */
97034
97035 +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME
97036 + atomic_t chroot_refcnt; /* tracks use of directory in chroot */
97037 +#endif
97038 struct list_head d_lru; /* LRU list */
97039 struct list_head d_child; /* child of parent list */
97040 struct list_head d_subdirs; /* our children */
97041 @@ -133,7 +136,7 @@ struct dentry {
97042 struct hlist_node d_alias; /* inode alias list */
97043 struct rcu_head d_rcu;
97044 } d_u;
97045 -};
97046 +} __randomize_layout;
97047
97048 /*
97049 * dentry->d_lock spinlock nesting subclasses:
97050 @@ -321,7 +324,7 @@ extern struct dentry *__d_lookup_rcu(const struct dentry *parent,
97051
97052 static inline unsigned d_count(const struct dentry *dentry)
97053 {
97054 - return dentry->d_lockref.count;
97055 + return __lockref_read(&dentry->d_lockref);
97056 }
97057
97058 /*
97059 @@ -350,7 +353,7 @@ extern char *dentry_path(struct dentry *, char *, int);
97060 static inline struct dentry *dget_dlock(struct dentry *dentry)
97061 {
97062 if (dentry)
97063 - dentry->d_lockref.count++;
97064 + __lockref_inc(&dentry->d_lockref);
97065 return dentry;
97066 }
97067
97068 diff --git a/include/linux/decompress/mm.h b/include/linux/decompress/mm.h
97069 index 7925bf0..d5143d2 100644
97070 --- a/include/linux/decompress/mm.h
97071 +++ b/include/linux/decompress/mm.h
97072 @@ -77,7 +77,7 @@ static void free(void *where)
97073 * warnings when not needed (indeed large_malloc / large_free are not
97074 * needed by inflate */
97075
97076 -#define malloc(a) kmalloc(a, GFP_KERNEL)
97077 +#define malloc(a) kmalloc((a), GFP_KERNEL)
97078 #define free(a) kfree(a)
97079
97080 #define large_malloc(a) vmalloc(a)
97081 diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
97082 index ce447f0..83c66bd 100644
97083 --- a/include/linux/devfreq.h
97084 +++ b/include/linux/devfreq.h
97085 @@ -114,7 +114,7 @@ struct devfreq_governor {
97086 int (*get_target_freq)(struct devfreq *this, unsigned long *freq);
97087 int (*event_handler)(struct devfreq *devfreq,
97088 unsigned int event, void *data);
97089 -};
97090 +} __do_const;
97091
97092 /**
97093 * struct devfreq - Device devfreq structure
97094 diff --git a/include/linux/device.h b/include/linux/device.h
97095 index a2b4ea7..b07dddd 100644
97096 --- a/include/linux/device.h
97097 +++ b/include/linux/device.h
97098 @@ -342,7 +342,7 @@ struct subsys_interface {
97099 struct list_head node;
97100 int (*add_dev)(struct device *dev, struct subsys_interface *sif);
97101 int (*remove_dev)(struct device *dev, struct subsys_interface *sif);
97102 -};
97103 +} __do_const;
97104
97105 int subsys_interface_register(struct subsys_interface *sif);
97106 void subsys_interface_unregister(struct subsys_interface *sif);
97107 @@ -538,7 +538,7 @@ struct device_type {
97108 void (*release)(struct device *dev);
97109
97110 const struct dev_pm_ops *pm;
97111 -};
97112 +} __do_const;
97113
97114 /* interface for exporting device attributes */
97115 struct device_attribute {
97116 @@ -548,11 +548,12 @@ struct device_attribute {
97117 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
97118 const char *buf, size_t count);
97119 };
97120 +typedef struct device_attribute __no_const device_attribute_no_const;
97121
97122 struct dev_ext_attribute {
97123 struct device_attribute attr;
97124 void *var;
97125 -};
97126 +} __do_const;
97127
97128 ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
97129 char *buf);
97130 diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
97131 index ac07ff0..edff186 100644
97132 --- a/include/linux/dma-mapping.h
97133 +++ b/include/linux/dma-mapping.h
97134 @@ -64,7 +64,7 @@ struct dma_map_ops {
97135 u64 (*get_required_mask)(struct device *dev);
97136 #endif
97137 int is_phys;
97138 -};
97139 +} __do_const;
97140
97141 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
97142
97143 diff --git a/include/linux/efi.h b/include/linux/efi.h
97144 index 85ef051..2714c3b 100644
97145 --- a/include/linux/efi.h
97146 +++ b/include/linux/efi.h
97147 @@ -1073,6 +1073,7 @@ struct efivar_operations {
97148 efi_set_variable_nonblocking_t *set_variable_nonblocking;
97149 efi_query_variable_store_t *query_variable_store;
97150 };
97151 +typedef struct efivar_operations __no_const efivar_operations_no_const;
97152
97153 struct efivars {
97154 /*
97155 diff --git a/include/linux/elf.h b/include/linux/elf.h
97156 index 20fa8d8..3d0dd18 100644
97157 --- a/include/linux/elf.h
97158 +++ b/include/linux/elf.h
97159 @@ -29,6 +29,7 @@ extern Elf32_Dyn _DYNAMIC [];
97160 #define elf_note elf32_note
97161 #define elf_addr_t Elf32_Off
97162 #define Elf_Half Elf32_Half
97163 +#define elf_dyn Elf32_Dyn
97164
97165 #else
97166
97167 @@ -39,6 +40,7 @@ extern Elf64_Dyn _DYNAMIC [];
97168 #define elf_note elf64_note
97169 #define elf_addr_t Elf64_Off
97170 #define Elf_Half Elf64_Half
97171 +#define elf_dyn Elf64_Dyn
97172
97173 #endif
97174
97175 diff --git a/include/linux/err.h b/include/linux/err.h
97176 index a729120..6ede2c9 100644
97177 --- a/include/linux/err.h
97178 +++ b/include/linux/err.h
97179 @@ -20,12 +20,12 @@
97180
97181 #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
97182
97183 -static inline void * __must_check ERR_PTR(long error)
97184 +static inline void * __must_check __intentional_overflow(-1) ERR_PTR(long error)
97185 {
97186 return (void *) error;
97187 }
97188
97189 -static inline long __must_check PTR_ERR(__force const void *ptr)
97190 +static inline long __must_check __intentional_overflow(-1) PTR_ERR(__force const void *ptr)
97191 {
97192 return (long) ptr;
97193 }
97194 diff --git a/include/linux/extcon.h b/include/linux/extcon.h
97195 index b16d929..d389bf1 100644
97196 --- a/include/linux/extcon.h
97197 +++ b/include/linux/extcon.h
97198 @@ -120,7 +120,7 @@ struct extcon_dev {
97199 /* /sys/class/extcon/.../mutually_exclusive/... */
97200 struct attribute_group attr_g_muex;
97201 struct attribute **attrs_muex;
97202 - struct device_attribute *d_attrs_muex;
97203 + device_attribute_no_const *d_attrs_muex;
97204 };
97205
97206 /**
97207 diff --git a/include/linux/fb.h b/include/linux/fb.h
97208 index 043f328..180ccbf 100644
97209 --- a/include/linux/fb.h
97210 +++ b/include/linux/fb.h
97211 @@ -305,7 +305,8 @@ struct fb_ops {
97212 /* called at KDB enter and leave time to prepare the console */
97213 int (*fb_debug_enter)(struct fb_info *info);
97214 int (*fb_debug_leave)(struct fb_info *info);
97215 -};
97216 +} __do_const;
97217 +typedef struct fb_ops __no_const fb_ops_no_const;
97218
97219 #ifdef CONFIG_FB_TILEBLITTING
97220 #define FB_TILE_CURSOR_NONE 0
97221 diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h
97222 index fbb8874..15c61e7 100644
97223 --- a/include/linux/fdtable.h
97224 +++ b/include/linux/fdtable.h
97225 @@ -103,7 +103,7 @@ struct files_struct *get_files_struct(struct task_struct *);
97226 void put_files_struct(struct files_struct *fs);
97227 void reset_files_struct(struct files_struct *);
97228 int unshare_files(struct files_struct **);
97229 -struct files_struct *dup_fd(struct files_struct *, int *);
97230 +struct files_struct *dup_fd(struct files_struct *, int *) __latent_entropy;
97231 void do_close_on_exec(struct files_struct *);
97232 int iterate_fd(struct files_struct *, unsigned,
97233 int (*)(const void *, struct file *, unsigned),
97234 diff --git a/include/linux/fs.h b/include/linux/fs.h
97235 index 84b783f..b31767d 100644
97236 --- a/include/linux/fs.h
97237 +++ b/include/linux/fs.h
97238 @@ -439,7 +439,7 @@ struct address_space {
97239 spinlock_t private_lock; /* for use by the address_space */
97240 struct list_head private_list; /* ditto */
97241 void *private_data; /* ditto */
97242 -} __attribute__((aligned(sizeof(long))));
97243 +} __attribute__((aligned(sizeof(long)))) __randomize_layout;
97244 /*
97245 * On most architectures that alignment is already the case; but
97246 * must be enforced here for CRIS, to let the least significant bit
97247 @@ -482,7 +482,7 @@ struct block_device {
97248 int bd_fsfreeze_count;
97249 /* Mutex for freeze */
97250 struct mutex bd_fsfreeze_mutex;
97251 -};
97252 +} __randomize_layout;
97253
97254 /*
97255 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
97256 @@ -677,7 +677,7 @@ struct inode {
97257 #endif
97258
97259 void *i_private; /* fs or device private pointer */
97260 -};
97261 +} __randomize_layout;
97262
97263 static inline int inode_unhashed(struct inode *inode)
97264 {
97265 @@ -872,7 +872,7 @@ struct file {
97266 struct list_head f_tfile_llink;
97267 #endif /* #ifdef CONFIG_EPOLL */
97268 struct address_space *f_mapping;
97269 -} __attribute__((aligned(4))); /* lest something weird decides that 2 is OK */
97270 +} __attribute__((aligned(4))) __randomize_layout; /* lest something weird decides that 2 is OK */
97271
97272 struct file_handle {
97273 __u32 handle_bytes;
97274 @@ -1001,7 +1001,7 @@ struct file_lock {
97275 int state; /* state of grant or error if -ve */
97276 } afs;
97277 } fl_u;
97278 -};
97279 +} __randomize_layout;
97280
97281 struct file_lock_context {
97282 spinlock_t flc_lock;
97283 @@ -1380,7 +1380,7 @@ struct super_block {
97284 * Indicates how deep in a filesystem stack this SB is
97285 */
97286 int s_stack_depth;
97287 -};
97288 +} __randomize_layout;
97289
97290 extern struct timespec current_fs_time(struct super_block *sb);
97291
97292 @@ -1632,7 +1632,8 @@ struct file_operations {
97293 #ifndef CONFIG_MMU
97294 unsigned (*mmap_capabilities)(struct file *);
97295 #endif
97296 -};
97297 +} __do_const __randomize_layout;
97298 +typedef struct file_operations __no_const file_operations_no_const;
97299
97300 struct inode_operations {
97301 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
97302 @@ -2341,7 +2342,7 @@ extern int register_chrdev_region(dev_t, unsigned, const char *);
97303 extern int __register_chrdev(unsigned int major, unsigned int baseminor,
97304 unsigned int count, const char *name,
97305 const struct file_operations *fops);
97306 -extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,
97307 +extern __nocapture(4) void __unregister_chrdev(unsigned int major, unsigned int baseminor,
97308 unsigned int count, const char *name);
97309 extern void unregister_chrdev_region(dev_t, unsigned);
97310 extern void chrdev_show(struct seq_file *,off_t);
97311 @@ -3041,4 +3042,14 @@ static inline bool dir_relax(struct inode *inode)
97312 return !IS_DEADDIR(inode);
97313 }
97314
97315 +static inline bool is_sidechannel_device(const struct inode *inode)
97316 +{
97317 +#ifdef CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL
97318 + umode_t mode = inode->i_mode;
97319 + return ((S_ISCHR(mode) || S_ISBLK(mode)) && (mode & (S_IROTH | S_IWOTH)));
97320 +#else
97321 + return false;
97322 +#endif
97323 +}
97324 +
97325 #endif /* _LINUX_FS_H */
97326 diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h
97327 index 0efc3e6..fd23610 100644
97328 --- a/include/linux/fs_struct.h
97329 +++ b/include/linux/fs_struct.h
97330 @@ -6,13 +6,13 @@
97331 #include <linux/seqlock.h>
97332
97333 struct fs_struct {
97334 - int users;
97335 + atomic_t users;
97336 spinlock_t lock;
97337 seqcount_t seq;
97338 int umask;
97339 int in_exec;
97340 struct path root, pwd;
97341 -};
97342 +} __randomize_layout;
97343
97344 extern struct kmem_cache *fs_cachep;
97345
97346 diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
97347 index 604e152..5954d0d 100644
97348 --- a/include/linux/fscache-cache.h
97349 +++ b/include/linux/fscache-cache.h
97350 @@ -117,7 +117,7 @@ struct fscache_operation {
97351 fscache_operation_release_t release;
97352 };
97353
97354 -extern atomic_t fscache_op_debug_id;
97355 +extern atomic_unchecked_t fscache_op_debug_id;
97356 extern void fscache_op_work_func(struct work_struct *work);
97357
97358 extern void fscache_enqueue_operation(struct fscache_operation *);
97359 diff --git a/include/linux/fscache.h b/include/linux/fscache.h
97360 index 115bb81..e7b812b 100644
97361 --- a/include/linux/fscache.h
97362 +++ b/include/linux/fscache.h
97363 @@ -152,7 +152,7 @@ struct fscache_cookie_def {
97364 * - this is mandatory for any object that may have data
97365 */
97366 void (*now_uncached)(void *cookie_netfs_data);
97367 -};
97368 +} __do_const;
97369
97370 /*
97371 * fscache cached network filesystem type
97372 diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
97373 index 7ee1774..72505b8 100644
97374 --- a/include/linux/fsnotify.h
97375 +++ b/include/linux/fsnotify.h
97376 @@ -197,6 +197,9 @@ static inline void fsnotify_access(struct file *file)
97377 struct inode *inode = file_inode(file);
97378 __u32 mask = FS_ACCESS;
97379
97380 + if (is_sidechannel_device(inode))
97381 + return;
97382 +
97383 if (S_ISDIR(inode->i_mode))
97384 mask |= FS_ISDIR;
97385
97386 @@ -215,6 +218,9 @@ static inline void fsnotify_modify(struct file *file)
97387 struct inode *inode = file_inode(file);
97388 __u32 mask = FS_MODIFY;
97389
97390 + if (is_sidechannel_device(inode))
97391 + return;
97392 +
97393 if (S_ISDIR(inode->i_mode))
97394 mask |= FS_ISDIR;
97395
97396 @@ -317,7 +323,7 @@ static inline void fsnotify_change(struct dentry *dentry, unsigned int ia_valid)
97397 */
97398 static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name)
97399 {
97400 - return kstrdup(name, GFP_KERNEL);
97401 + return (const unsigned char *)kstrdup((const char *)name, GFP_KERNEL);
97402 }
97403
97404 /*
97405 diff --git a/include/linux/genhd.h b/include/linux/genhd.h
97406 index ec274e0..e678159 100644
97407 --- a/include/linux/genhd.h
97408 +++ b/include/linux/genhd.h
97409 @@ -194,7 +194,7 @@ struct gendisk {
97410 struct kobject *slave_dir;
97411
97412 struct timer_rand_state *random;
97413 - atomic_t sync_io; /* RAID */
97414 + atomic_unchecked_t sync_io; /* RAID */
97415 struct disk_events *ev;
97416 #ifdef CONFIG_BLK_DEV_INTEGRITY
97417 struct blk_integrity *integrity;
97418 @@ -435,7 +435,7 @@ extern void disk_flush_events(struct gendisk *disk, unsigned int mask);
97419 extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask);
97420
97421 /* drivers/char/random.c */
97422 -extern void add_disk_randomness(struct gendisk *disk);
97423 +extern void add_disk_randomness(struct gendisk *disk) __latent_entropy;
97424 extern void rand_initialize_disk(struct gendisk *disk);
97425
97426 static inline sector_t get_start_sect(struct block_device *bdev)
97427 diff --git a/include/linux/genl_magic_func.h b/include/linux/genl_magic_func.h
97428 index 667c311..abac2a7 100644
97429 --- a/include/linux/genl_magic_func.h
97430 +++ b/include/linux/genl_magic_func.h
97431 @@ -246,7 +246,7 @@ const char *CONCAT_(GENL_MAGIC_FAMILY, _genl_cmd_to_str)(__u8 cmd)
97432 },
97433
97434 #define ZZZ_genl_ops CONCAT_(GENL_MAGIC_FAMILY, _genl_ops)
97435 -static struct genl_ops ZZZ_genl_ops[] __read_mostly = {
97436 +static struct genl_ops ZZZ_genl_ops[] = {
97437 #include GENL_MAGIC_INCLUDE_FILE
97438 };
97439
97440 diff --git a/include/linux/gfp.h b/include/linux/gfp.h
97441 index ad35f30..30b1916 100644
97442 --- a/include/linux/gfp.h
97443 +++ b/include/linux/gfp.h
97444 @@ -35,6 +35,13 @@ struct vm_area_struct;
97445 #define ___GFP_NO_KSWAPD 0x400000u
97446 #define ___GFP_OTHER_NODE 0x800000u
97447 #define ___GFP_WRITE 0x1000000u
97448 +
97449 +#ifdef CONFIG_PAX_USERCOPY_SLABS
97450 +#define ___GFP_USERCOPY 0x2000000u
97451 +#else
97452 +#define ___GFP_USERCOPY 0
97453 +#endif
97454 +
97455 /* If the above are modified, __GFP_BITS_SHIFT may need updating */
97456
97457 /*
97458 @@ -94,6 +101,7 @@ struct vm_area_struct;
97459 #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD)
97460 #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */
97461 #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */
97462 +#define __GFP_USERCOPY ((__force gfp_t)___GFP_USERCOPY)/* Allocator intends to copy page to/from userland */
97463
97464 /*
97465 * This may seem redundant, but it's a way of annotating false positives vs.
97466 @@ -101,7 +109,7 @@ struct vm_area_struct;
97467 */
97468 #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
97469
97470 -#define __GFP_BITS_SHIFT 25 /* Room for N __GFP_FOO bits */
97471 +#define __GFP_BITS_SHIFT 26 /* Room for N __GFP_FOO bits */
97472 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
97473
97474 /* This equals 0, but use constants in case they ever change */
97475 @@ -146,6 +154,8 @@ struct vm_area_struct;
97476 /* 4GB DMA on some platforms */
97477 #define GFP_DMA32 __GFP_DMA32
97478
97479 +#define GFP_USERCOPY __GFP_USERCOPY
97480 +
97481 /* Convert GFP flags to their corresponding migrate type */
97482 static inline int gfpflags_to_migratetype(const gfp_t gfp_flags)
97483 {
97484 diff --git a/include/linux/gracl.h b/include/linux/gracl.h
97485 new file mode 100644
97486 index 0000000..91858e4
97487 --- /dev/null
97488 +++ b/include/linux/gracl.h
97489 @@ -0,0 +1,342 @@
97490 +#ifndef GR_ACL_H
97491 +#define GR_ACL_H
97492 +
97493 +#include <linux/grdefs.h>
97494 +#include <linux/resource.h>
97495 +#include <linux/capability.h>
97496 +#include <linux/dcache.h>
97497 +#include <asm/resource.h>
97498 +
97499 +/* Major status information */
97500 +
97501 +#define GR_VERSION "grsecurity 3.1"
97502 +#define GRSECURITY_VERSION 0x3100
97503 +
97504 +enum {
97505 + GR_SHUTDOWN = 0,
97506 + GR_ENABLE = 1,
97507 + GR_SPROLE = 2,
97508 + GR_OLDRELOAD = 3,
97509 + GR_SEGVMOD = 4,
97510 + GR_STATUS = 5,
97511 + GR_UNSPROLE = 6,
97512 + GR_PASSSET = 7,
97513 + GR_SPROLEPAM = 8,
97514 + GR_RELOAD = 9,
97515 +};
97516 +
97517 +/* Password setup definitions
97518 + * kernel/grhash.c */
97519 +enum {
97520 + GR_PW_LEN = 128,
97521 + GR_SALT_LEN = 16,
97522 + GR_SHA_LEN = 32,
97523 +};
97524 +
97525 +enum {
97526 + GR_SPROLE_LEN = 64,
97527 +};
97528 +
97529 +enum {
97530 + GR_NO_GLOB = 0,
97531 + GR_REG_GLOB,
97532 + GR_CREATE_GLOB
97533 +};
97534 +
97535 +#define GR_NLIMITS 32
97536 +
97537 +/* Begin Data Structures */
97538 +
97539 +struct sprole_pw {
97540 + unsigned char *rolename;
97541 + unsigned char salt[GR_SALT_LEN];
97542 + unsigned char sum[GR_SHA_LEN]; /* 256-bit SHA hash of the password */
97543 +};
97544 +
97545 +struct name_entry {
97546 + __u32 key;
97547 + u64 inode;
97548 + dev_t device;
97549 + char *name;
97550 + __u16 len;
97551 + __u8 deleted;
97552 + struct name_entry *prev;
97553 + struct name_entry *next;
97554 +};
97555 +
97556 +struct inodev_entry {
97557 + struct name_entry *nentry;
97558 + struct inodev_entry *prev;
97559 + struct inodev_entry *next;
97560 +};
97561 +
97562 +struct acl_role_db {
97563 + struct acl_role_label **r_hash;
97564 + __u32 r_size;
97565 +};
97566 +
97567 +struct inodev_db {
97568 + struct inodev_entry **i_hash;
97569 + __u32 i_size;
97570 +};
97571 +
97572 +struct name_db {
97573 + struct name_entry **n_hash;
97574 + __u32 n_size;
97575 +};
97576 +
97577 +struct crash_uid {
97578 + uid_t uid;
97579 + unsigned long expires;
97580 +};
97581 +
97582 +struct gr_hash_struct {
97583 + void **table;
97584 + void **nametable;
97585 + void *first;
97586 + __u32 table_size;
97587 + __u32 used_size;
97588 + int type;
97589 +};
97590 +
97591 +/* Userspace Grsecurity ACL data structures */
97592 +
97593 +struct acl_subject_label {
97594 + char *filename;
97595 + u64 inode;
97596 + dev_t device;
97597 + __u32 mode;
97598 + kernel_cap_t cap_mask;
97599 + kernel_cap_t cap_lower;
97600 + kernel_cap_t cap_invert_audit;
97601 +
97602 + struct rlimit res[GR_NLIMITS];
97603 + __u32 resmask;
97604 +
97605 + __u8 user_trans_type;
97606 + __u8 group_trans_type;
97607 + uid_t *user_transitions;
97608 + gid_t *group_transitions;
97609 + __u16 user_trans_num;
97610 + __u16 group_trans_num;
97611 +
97612 + __u32 sock_families[2];
97613 + __u32 ip_proto[8];
97614 + __u32 ip_type;
97615 + struct acl_ip_label **ips;
97616 + __u32 ip_num;
97617 + __u32 inaddr_any_override;
97618 +
97619 + __u32 crashes;
97620 + unsigned long expires;
97621 +
97622 + struct acl_subject_label *parent_subject;
97623 + struct gr_hash_struct *hash;
97624 + struct acl_subject_label *prev;
97625 + struct acl_subject_label *next;
97626 +
97627 + struct acl_object_label **obj_hash;
97628 + __u32 obj_hash_size;
97629 + __u16 pax_flags;
97630 +};
97631 +
97632 +struct role_allowed_ip {
97633 + __u32 addr;
97634 + __u32 netmask;
97635 +
97636 + struct role_allowed_ip *prev;
97637 + struct role_allowed_ip *next;
97638 +};
97639 +
97640 +struct role_transition {
97641 + char *rolename;
97642 +
97643 + struct role_transition *prev;
97644 + struct role_transition *next;
97645 +};
97646 +
97647 +struct acl_role_label {
97648 + char *rolename;
97649 + uid_t uidgid;
97650 + __u16 roletype;
97651 +
97652 + __u16 auth_attempts;
97653 + unsigned long expires;
97654 +
97655 + struct acl_subject_label *root_label;
97656 + struct gr_hash_struct *hash;
97657 +
97658 + struct acl_role_label *prev;
97659 + struct acl_role_label *next;
97660 +
97661 + struct role_transition *transitions;
97662 + struct role_allowed_ip *allowed_ips;
97663 + uid_t *domain_children;
97664 + __u16 domain_child_num;
97665 +
97666 + umode_t umask;
97667 +
97668 + struct acl_subject_label **subj_hash;
97669 + __u32 subj_hash_size;
97670 +};
97671 +
97672 +struct user_acl_role_db {
97673 + struct acl_role_label **r_table;
97674 + __u32 num_pointers; /* Number of allocations to track */
97675 + __u32 num_roles; /* Number of roles */
97676 + __u32 num_domain_children; /* Number of domain children */
97677 + __u32 num_subjects; /* Number of subjects */
97678 + __u32 num_objects; /* Number of objects */
97679 +};
97680 +
97681 +struct acl_object_label {
97682 + char *filename;
97683 + u64 inode;
97684 + dev_t device;
97685 + __u32 mode;
97686 +
97687 + struct acl_subject_label *nested;
97688 + struct acl_object_label *globbed;
97689 +
97690 + /* next two structures not used */
97691 +
97692 + struct acl_object_label *prev;
97693 + struct acl_object_label *next;
97694 +};
97695 +
97696 +struct acl_ip_label {
97697 + char *iface;
97698 + __u32 addr;
97699 + __u32 netmask;
97700 + __u16 low, high;
97701 + __u8 mode;
97702 + __u32 type;
97703 + __u32 proto[8];
97704 +
97705 + /* next two structures not used */
97706 +
97707 + struct acl_ip_label *prev;
97708 + struct acl_ip_label *next;
97709 +};
97710 +
97711 +struct gr_arg {
97712 + struct user_acl_role_db role_db;
97713 + unsigned char pw[GR_PW_LEN];
97714 + unsigned char salt[GR_SALT_LEN];
97715 + unsigned char sum[GR_SHA_LEN];
97716 + unsigned char sp_role[GR_SPROLE_LEN];
97717 + struct sprole_pw *sprole_pws;
97718 + dev_t segv_device;
97719 + u64 segv_inode;
97720 + uid_t segv_uid;
97721 + __u16 num_sprole_pws;
97722 + __u16 mode;
97723 +};
97724 +
97725 +struct gr_arg_wrapper {
97726 + struct gr_arg *arg;
97727 + __u32 version;
97728 + __u32 size;
97729 +};
97730 +
97731 +struct subject_map {
97732 + struct acl_subject_label *user;
97733 + struct acl_subject_label *kernel;
97734 + struct subject_map *prev;
97735 + struct subject_map *next;
97736 +};
97737 +
97738 +struct acl_subj_map_db {
97739 + struct subject_map **s_hash;
97740 + __u32 s_size;
97741 +};
97742 +
97743 +struct gr_policy_state {
97744 + struct sprole_pw **acl_special_roles;
97745 + __u16 num_sprole_pws;
97746 + struct acl_role_label *kernel_role;
97747 + struct acl_role_label *role_list;
97748 + struct acl_role_label *default_role;
97749 + struct acl_role_db acl_role_set;
97750 + struct acl_subj_map_db subj_map_set;
97751 + struct name_db name_set;
97752 + struct inodev_db inodev_set;
97753 +};
97754 +
97755 +struct gr_alloc_state {
97756 + unsigned long alloc_stack_next;
97757 + unsigned long alloc_stack_size;
97758 + void **alloc_stack;
97759 +};
97760 +
97761 +struct gr_reload_state {
97762 + struct gr_policy_state oldpolicy;
97763 + struct gr_alloc_state oldalloc;
97764 + struct gr_policy_state newpolicy;
97765 + struct gr_alloc_state newalloc;
97766 + struct gr_policy_state *oldpolicy_ptr;
97767 + struct gr_alloc_state *oldalloc_ptr;
97768 + unsigned char oldmode;
97769 +};
97770 +
97771 +/* End Data Structures Section */
97772 +
97773 +/* Hash functions generated by empirical testing by Brad Spengler
97774 + Makes good use of the low bits of the inode. Generally 0-1 times
97775 + in loop for successful match. 0-3 for unsuccessful match.
97776 + Shift/add algorithm with modulus of table size and an XOR*/
97777 +
97778 +static __inline__ unsigned int
97779 +gr_rhash(const uid_t uid, const __u16 type, const unsigned int sz)
97780 +{
97781 + return ((((uid + type) << (16 + type)) ^ uid) % sz);
97782 +}
97783 +
97784 + static __inline__ unsigned int
97785 +gr_shash(const struct acl_subject_label *userp, const unsigned int sz)
97786 +{
97787 + return ((const unsigned long)userp % sz);
97788 +}
97789 +
97790 +static __inline__ unsigned int
97791 +gr_fhash(const u64 ino, const dev_t dev, const unsigned int sz)
97792 +{
97793 + unsigned int rem;
97794 + div_u64_rem((ino + dev) ^ ((ino << 13) + (ino << 23) + (dev << 9)), sz, &rem);
97795 + return rem;
97796 +}
97797 +
97798 +static __inline__ unsigned int
97799 +gr_nhash(const char *name, const __u16 len, const unsigned int sz)
97800 +{
97801 + return full_name_hash((const unsigned char *)name, len) % sz;
97802 +}
97803 +
97804 +#define FOR_EACH_SUBJECT_START(role,subj,iter) \
97805 + subj = NULL; \
97806 + iter = 0; \
97807 + while (iter < role->subj_hash_size) { \
97808 + if (subj == NULL) \
97809 + subj = role->subj_hash[iter]; \
97810 + if (subj == NULL) { \
97811 + iter++; \
97812 + continue; \
97813 + }
97814 +
97815 +#define FOR_EACH_SUBJECT_END(subj,iter) \
97816 + subj = subj->next; \
97817 + if (subj == NULL) \
97818 + iter++; \
97819 + }
97820 +
97821 +
97822 +#define FOR_EACH_NESTED_SUBJECT_START(role,subj) \
97823 + subj = role->hash->first; \
97824 + while (subj != NULL) {
97825 +
97826 +#define FOR_EACH_NESTED_SUBJECT_END(subj) \
97827 + subj = subj->next; \
97828 + }
97829 +
97830 +#endif
97831 +
97832 diff --git a/include/linux/gracl_compat.h b/include/linux/gracl_compat.h
97833 new file mode 100644
97834 index 0000000..af64092
97835 --- /dev/null
97836 +++ b/include/linux/gracl_compat.h
97837 @@ -0,0 +1,156 @@
97838 +#ifndef GR_ACL_COMPAT_H
97839 +#define GR_ACL_COMPAT_H
97840 +
97841 +#include <linux/resource.h>
97842 +#include <asm/resource.h>
97843 +
97844 +struct sprole_pw_compat {
97845 + compat_uptr_t rolename;
97846 + unsigned char salt[GR_SALT_LEN];
97847 + unsigned char sum[GR_SHA_LEN];
97848 +};
97849 +
97850 +struct gr_hash_struct_compat {
97851 + compat_uptr_t table;
97852 + compat_uptr_t nametable;
97853 + compat_uptr_t first;
97854 + __u32 table_size;
97855 + __u32 used_size;
97856 + int type;
97857 +};
97858 +
97859 +struct acl_subject_label_compat {
97860 + compat_uptr_t filename;
97861 + compat_u64 inode;
97862 + __u32 device;
97863 + __u32 mode;
97864 + kernel_cap_t cap_mask;
97865 + kernel_cap_t cap_lower;
97866 + kernel_cap_t cap_invert_audit;
97867 +
97868 + struct compat_rlimit res[GR_NLIMITS];
97869 + __u32 resmask;
97870 +
97871 + __u8 user_trans_type;
97872 + __u8 group_trans_type;
97873 + compat_uptr_t user_transitions;
97874 + compat_uptr_t group_transitions;
97875 + __u16 user_trans_num;
97876 + __u16 group_trans_num;
97877 +
97878 + __u32 sock_families[2];
97879 + __u32 ip_proto[8];
97880 + __u32 ip_type;
97881 + compat_uptr_t ips;
97882 + __u32 ip_num;
97883 + __u32 inaddr_any_override;
97884 +
97885 + __u32 crashes;
97886 + compat_ulong_t expires;
97887 +
97888 + compat_uptr_t parent_subject;
97889 + compat_uptr_t hash;
97890 + compat_uptr_t prev;
97891 + compat_uptr_t next;
97892 +
97893 + compat_uptr_t obj_hash;
97894 + __u32 obj_hash_size;
97895 + __u16 pax_flags;
97896 +};
97897 +
97898 +struct role_allowed_ip_compat {
97899 + __u32 addr;
97900 + __u32 netmask;
97901 +
97902 + compat_uptr_t prev;
97903 + compat_uptr_t next;
97904 +};
97905 +
97906 +struct role_transition_compat {
97907 + compat_uptr_t rolename;
97908 +
97909 + compat_uptr_t prev;
97910 + compat_uptr_t next;
97911 +};
97912 +
97913 +struct acl_role_label_compat {
97914 + compat_uptr_t rolename;
97915 + uid_t uidgid;
97916 + __u16 roletype;
97917 +
97918 + __u16 auth_attempts;
97919 + compat_ulong_t expires;
97920 +
97921 + compat_uptr_t root_label;
97922 + compat_uptr_t hash;
97923 +
97924 + compat_uptr_t prev;
97925 + compat_uptr_t next;
97926 +
97927 + compat_uptr_t transitions;
97928 + compat_uptr_t allowed_ips;
97929 + compat_uptr_t domain_children;
97930 + __u16 domain_child_num;
97931 +
97932 + umode_t umask;
97933 +
97934 + compat_uptr_t subj_hash;
97935 + __u32 subj_hash_size;
97936 +};
97937 +
97938 +struct user_acl_role_db_compat {
97939 + compat_uptr_t r_table;
97940 + __u32 num_pointers;
97941 + __u32 num_roles;
97942 + __u32 num_domain_children;
97943 + __u32 num_subjects;
97944 + __u32 num_objects;
97945 +};
97946 +
97947 +struct acl_object_label_compat {
97948 + compat_uptr_t filename;
97949 + compat_u64 inode;
97950 + __u32 device;
97951 + __u32 mode;
97952 +
97953 + compat_uptr_t nested;
97954 + compat_uptr_t globbed;
97955 +
97956 + compat_uptr_t prev;
97957 + compat_uptr_t next;
97958 +};
97959 +
97960 +struct acl_ip_label_compat {
97961 + compat_uptr_t iface;
97962 + __u32 addr;
97963 + __u32 netmask;
97964 + __u16 low, high;
97965 + __u8 mode;
97966 + __u32 type;
97967 + __u32 proto[8];
97968 +
97969 + compat_uptr_t prev;
97970 + compat_uptr_t next;
97971 +};
97972 +
97973 +struct gr_arg_compat {
97974 + struct user_acl_role_db_compat role_db;
97975 + unsigned char pw[GR_PW_LEN];
97976 + unsigned char salt[GR_SALT_LEN];
97977 + unsigned char sum[GR_SHA_LEN];
97978 + unsigned char sp_role[GR_SPROLE_LEN];
97979 + compat_uptr_t sprole_pws;
97980 + __u32 segv_device;
97981 + compat_u64 segv_inode;
97982 + uid_t segv_uid;
97983 + __u16 num_sprole_pws;
97984 + __u16 mode;
97985 +};
97986 +
97987 +struct gr_arg_wrapper_compat {
97988 + compat_uptr_t arg;
97989 + __u32 version;
97990 + __u32 size;
97991 +};
97992 +
97993 +#endif
97994 diff --git a/include/linux/gralloc.h b/include/linux/gralloc.h
97995 new file mode 100644
97996 index 0000000..323ecf2
97997 --- /dev/null
97998 +++ b/include/linux/gralloc.h
97999 @@ -0,0 +1,9 @@
98000 +#ifndef __GRALLOC_H
98001 +#define __GRALLOC_H
98002 +
98003 +void acl_free_all(void);
98004 +int acl_alloc_stack_init(unsigned long size);
98005 +void *acl_alloc(unsigned long len);
98006 +void *acl_alloc_num(unsigned long num, unsigned long len);
98007 +
98008 +#endif
98009 diff --git a/include/linux/grdefs.h b/include/linux/grdefs.h
98010 new file mode 100644
98011 index 0000000..be66033
98012 --- /dev/null
98013 +++ b/include/linux/grdefs.h
98014 @@ -0,0 +1,140 @@
98015 +#ifndef GRDEFS_H
98016 +#define GRDEFS_H
98017 +
98018 +/* Begin grsecurity status declarations */
98019 +
98020 +enum {
98021 + GR_READY = 0x01,
98022 + GR_STATUS_INIT = 0x00 // disabled state
98023 +};
98024 +
98025 +/* Begin ACL declarations */
98026 +
98027 +/* Role flags */
98028 +
98029 +enum {
98030 + GR_ROLE_USER = 0x0001,
98031 + GR_ROLE_GROUP = 0x0002,
98032 + GR_ROLE_DEFAULT = 0x0004,
98033 + GR_ROLE_SPECIAL = 0x0008,
98034 + GR_ROLE_AUTH = 0x0010,
98035 + GR_ROLE_NOPW = 0x0020,
98036 + GR_ROLE_GOD = 0x0040,
98037 + GR_ROLE_LEARN = 0x0080,
98038 + GR_ROLE_TPE = 0x0100,
98039 + GR_ROLE_DOMAIN = 0x0200,
98040 + GR_ROLE_PAM = 0x0400,
98041 + GR_ROLE_PERSIST = 0x0800
98042 +};
98043 +
98044 +/* ACL Subject and Object mode flags */
98045 +enum {
98046 + GR_DELETED = 0x80000000
98047 +};
98048 +
98049 +/* ACL Object-only mode flags */
98050 +enum {
98051 + GR_READ = 0x00000001,
98052 + GR_APPEND = 0x00000002,
98053 + GR_WRITE = 0x00000004,
98054 + GR_EXEC = 0x00000008,
98055 + GR_FIND = 0x00000010,
98056 + GR_INHERIT = 0x00000020,
98057 + GR_SETID = 0x00000040,
98058 + GR_CREATE = 0x00000080,
98059 + GR_DELETE = 0x00000100,
98060 + GR_LINK = 0x00000200,
98061 + GR_AUDIT_READ = 0x00000400,
98062 + GR_AUDIT_APPEND = 0x00000800,
98063 + GR_AUDIT_WRITE = 0x00001000,
98064 + GR_AUDIT_EXEC = 0x00002000,
98065 + GR_AUDIT_FIND = 0x00004000,
98066 + GR_AUDIT_INHERIT= 0x00008000,
98067 + GR_AUDIT_SETID = 0x00010000,
98068 + GR_AUDIT_CREATE = 0x00020000,
98069 + GR_AUDIT_DELETE = 0x00040000,
98070 + GR_AUDIT_LINK = 0x00080000,
98071 + GR_PTRACERD = 0x00100000,
98072 + GR_NOPTRACE = 0x00200000,
98073 + GR_SUPPRESS = 0x00400000,
98074 + GR_NOLEARN = 0x00800000,
98075 + GR_INIT_TRANSFER= 0x01000000
98076 +};
98077 +
98078 +#define GR_AUDITS (GR_AUDIT_READ | GR_AUDIT_WRITE | GR_AUDIT_APPEND | GR_AUDIT_EXEC | \
98079 + GR_AUDIT_FIND | GR_AUDIT_INHERIT | GR_AUDIT_SETID | \
98080 + GR_AUDIT_CREATE | GR_AUDIT_DELETE | GR_AUDIT_LINK)
98081 +
98082 +/* ACL subject-only mode flags */
98083 +enum {
98084 + GR_KILL = 0x00000001,
98085 + GR_VIEW = 0x00000002,
98086 + GR_PROTECTED = 0x00000004,
98087 + GR_LEARN = 0x00000008,
98088 + GR_OVERRIDE = 0x00000010,
98089 + /* just a placeholder, this mode is only used in userspace */
98090 + GR_DUMMY = 0x00000020,
98091 + GR_PROTSHM = 0x00000040,
98092 + GR_KILLPROC = 0x00000080,
98093 + GR_KILLIPPROC = 0x00000100,
98094 + /* just a placeholder, this mode is only used in userspace */
98095 + GR_NOTROJAN = 0x00000200,
98096 + GR_PROTPROCFD = 0x00000400,
98097 + GR_PROCACCT = 0x00000800,
98098 + GR_RELAXPTRACE = 0x00001000,
98099 + //GR_NESTED = 0x00002000,
98100 + GR_INHERITLEARN = 0x00004000,
98101 + GR_PROCFIND = 0x00008000,
98102 + GR_POVERRIDE = 0x00010000,
98103 + GR_KERNELAUTH = 0x00020000,
98104 + GR_ATSECURE = 0x00040000,
98105 + GR_SHMEXEC = 0x00080000
98106 +};
98107 +
98108 +enum {
98109 + GR_PAX_ENABLE_SEGMEXEC = 0x0001,
98110 + GR_PAX_ENABLE_PAGEEXEC = 0x0002,
98111 + GR_PAX_ENABLE_MPROTECT = 0x0004,
98112 + GR_PAX_ENABLE_RANDMMAP = 0x0008,
98113 + GR_PAX_ENABLE_EMUTRAMP = 0x0010,
98114 + GR_PAX_DISABLE_SEGMEXEC = 0x0100,
98115 + GR_PAX_DISABLE_PAGEEXEC = 0x0200,
98116 + GR_PAX_DISABLE_MPROTECT = 0x0400,
98117 + GR_PAX_DISABLE_RANDMMAP = 0x0800,
98118 + GR_PAX_DISABLE_EMUTRAMP = 0x1000,
98119 +};
98120 +
98121 +enum {
98122 + GR_ID_USER = 0x01,
98123 + GR_ID_GROUP = 0x02,
98124 +};
98125 +
98126 +enum {
98127 + GR_ID_ALLOW = 0x01,
98128 + GR_ID_DENY = 0x02,
98129 +};
98130 +
98131 +#define GR_CRASH_RES 31
98132 +#define GR_UIDTABLE_MAX 500
98133 +
98134 +/* begin resource learning section */
98135 +enum {
98136 + GR_RLIM_CPU_BUMP = 60,
98137 + GR_RLIM_FSIZE_BUMP = 50000,
98138 + GR_RLIM_DATA_BUMP = 10000,
98139 + GR_RLIM_STACK_BUMP = 1000,
98140 + GR_RLIM_CORE_BUMP = 10000,
98141 + GR_RLIM_RSS_BUMP = 500000,
98142 + GR_RLIM_NPROC_BUMP = 1,
98143 + GR_RLIM_NOFILE_BUMP = 5,
98144 + GR_RLIM_MEMLOCK_BUMP = 50000,
98145 + GR_RLIM_AS_BUMP = 500000,
98146 + GR_RLIM_LOCKS_BUMP = 2,
98147 + GR_RLIM_SIGPENDING_BUMP = 5,
98148 + GR_RLIM_MSGQUEUE_BUMP = 10000,
98149 + GR_RLIM_NICE_BUMP = 1,
98150 + GR_RLIM_RTPRIO_BUMP = 1,
98151 + GR_RLIM_RTTIME_BUMP = 1000000
98152 +};
98153 +
98154 +#endif
98155 diff --git a/include/linux/grinternal.h b/include/linux/grinternal.h
98156 new file mode 100644
98157 index 0000000..6245f9e
98158 --- /dev/null
98159 +++ b/include/linux/grinternal.h
98160 @@ -0,0 +1,230 @@
98161 +#ifndef __GRINTERNAL_H
98162 +#define __GRINTERNAL_H
98163 +
98164 +#ifdef CONFIG_GRKERNSEC
98165 +
98166 +#include <linux/fs.h>
98167 +#include <linux/mnt_namespace.h>
98168 +#include <linux/nsproxy.h>
98169 +#include <linux/gracl.h>
98170 +#include <linux/grdefs.h>
98171 +#include <linux/grmsg.h>
98172 +
98173 +void gr_add_learn_entry(const char *fmt, ...)
98174 + __attribute__ ((format (printf, 1, 2)));
98175 +__u32 gr_search_file(const struct dentry *dentry, const __u32 mode,
98176 + const struct vfsmount *mnt);
98177 +__u32 gr_check_create(const struct dentry *new_dentry,
98178 + const struct dentry *parent,
98179 + const struct vfsmount *mnt, const __u32 mode);
98180 +int gr_check_protected_task(const struct task_struct *task);
98181 +__u32 to_gr_audit(const __u32 reqmode);
98182 +int gr_set_acls(const int type);
98183 +int gr_acl_is_enabled(void);
98184 +char gr_roletype_to_char(void);
98185 +
98186 +void gr_handle_alertkill(struct task_struct *task);
98187 +char *gr_to_filename(const struct dentry *dentry,
98188 + const struct vfsmount *mnt);
98189 +char *gr_to_filename1(const struct dentry *dentry,
98190 + const struct vfsmount *mnt);
98191 +char *gr_to_filename2(const struct dentry *dentry,
98192 + const struct vfsmount *mnt);
98193 +char *gr_to_filename3(const struct dentry *dentry,
98194 + const struct vfsmount *mnt);
98195 +
98196 +extern int grsec_enable_ptrace_readexec;
98197 +extern int grsec_enable_harden_ptrace;
98198 +extern int grsec_enable_link;
98199 +extern int grsec_enable_fifo;
98200 +extern int grsec_enable_execve;
98201 +extern int grsec_enable_shm;
98202 +extern int grsec_enable_execlog;
98203 +extern int grsec_enable_signal;
98204 +extern int grsec_enable_audit_ptrace;
98205 +extern int grsec_enable_forkfail;
98206 +extern int grsec_enable_time;
98207 +extern int grsec_enable_rofs;
98208 +extern int grsec_deny_new_usb;
98209 +extern int grsec_enable_chroot_shmat;
98210 +extern int grsec_enable_chroot_mount;
98211 +extern int grsec_enable_chroot_double;
98212 +extern int grsec_enable_chroot_pivot;
98213 +extern int grsec_enable_chroot_chdir;
98214 +extern int grsec_enable_chroot_chmod;
98215 +extern int grsec_enable_chroot_mknod;
98216 +extern int grsec_enable_chroot_fchdir;
98217 +extern int grsec_enable_chroot_nice;
98218 +extern int grsec_enable_chroot_execlog;
98219 +extern int grsec_enable_chroot_caps;
98220 +extern int grsec_enable_chroot_rename;
98221 +extern int grsec_enable_chroot_sysctl;
98222 +extern int grsec_enable_chroot_unix;
98223 +extern int grsec_enable_symlinkown;
98224 +extern kgid_t grsec_symlinkown_gid;
98225 +extern int grsec_enable_tpe;
98226 +extern kgid_t grsec_tpe_gid;
98227 +extern int grsec_enable_tpe_all;
98228 +extern int grsec_enable_tpe_invert;
98229 +extern int grsec_enable_socket_all;
98230 +extern kgid_t grsec_socket_all_gid;
98231 +extern int grsec_enable_socket_client;
98232 +extern kgid_t grsec_socket_client_gid;
98233 +extern int grsec_enable_socket_server;
98234 +extern kgid_t grsec_socket_server_gid;
98235 +extern kgid_t grsec_audit_gid;
98236 +extern int grsec_enable_group;
98237 +extern int grsec_enable_log_rwxmaps;
98238 +extern int grsec_enable_mount;
98239 +extern int grsec_enable_chdir;
98240 +extern int grsec_resource_logging;
98241 +extern int grsec_enable_blackhole;
98242 +extern int grsec_lastack_retries;
98243 +extern int grsec_enable_brute;
98244 +extern int grsec_enable_harden_ipc;
98245 +extern int grsec_lock;
98246 +
98247 +extern spinlock_t grsec_alert_lock;
98248 +extern unsigned long grsec_alert_wtime;
98249 +extern unsigned long grsec_alert_fyet;
98250 +
98251 +extern spinlock_t grsec_audit_lock;
98252 +
98253 +extern rwlock_t grsec_exec_file_lock;
98254 +
98255 +#define gr_task_fullpath(tsk) ((tsk)->exec_file ? \
98256 + gr_to_filename2((tsk)->exec_file->f_path.dentry, \
98257 + (tsk)->exec_file->f_path.mnt) : "/")
98258 +
98259 +#define gr_parent_task_fullpath(tsk) ((tsk)->real_parent->exec_file ? \
98260 + gr_to_filename3((tsk)->real_parent->exec_file->f_path.dentry, \
98261 + (tsk)->real_parent->exec_file->f_path.mnt) : "/")
98262 +
98263 +#define gr_task_fullpath0(tsk) ((tsk)->exec_file ? \
98264 + gr_to_filename((tsk)->exec_file->f_path.dentry, \
98265 + (tsk)->exec_file->f_path.mnt) : "/")
98266 +
98267 +#define gr_parent_task_fullpath0(tsk) ((tsk)->real_parent->exec_file ? \
98268 + gr_to_filename1((tsk)->real_parent->exec_file->f_path.dentry, \
98269 + (tsk)->real_parent->exec_file->f_path.mnt) : "/")
98270 +
98271 +#define proc_is_chrooted(tsk_a) ((tsk_a)->gr_is_chrooted)
98272 +
98273 +#define have_same_root(tsk_a,tsk_b) ((tsk_a)->gr_chroot_dentry == (tsk_b)->gr_chroot_dentry)
98274 +
98275 +static inline bool gr_is_same_file(const struct file *file1, const struct file *file2)
98276 +{
98277 + if (file1 && file2) {
98278 + const struct inode *inode1 = file1->f_path.dentry->d_inode;
98279 + const struct inode *inode2 = file2->f_path.dentry->d_inode;
98280 + if (inode1->i_ino == inode2->i_ino && inode1->i_sb->s_dev == inode2->i_sb->s_dev)
98281 + return true;
98282 + }
98283 +
98284 + return false;
98285 +}
98286 +
98287 +#define GR_CHROOT_CAPS {{ \
98288 + CAP_TO_MASK(CAP_LINUX_IMMUTABLE) | CAP_TO_MASK(CAP_NET_ADMIN) | \
98289 + CAP_TO_MASK(CAP_SYS_MODULE) | CAP_TO_MASK(CAP_SYS_RAWIO) | \
98290 + CAP_TO_MASK(CAP_SYS_PACCT) | CAP_TO_MASK(CAP_SYS_ADMIN) | \
98291 + CAP_TO_MASK(CAP_SYS_BOOT) | CAP_TO_MASK(CAP_SYS_TIME) | \
98292 + CAP_TO_MASK(CAP_NET_RAW) | CAP_TO_MASK(CAP_SYS_TTY_CONFIG) | \
98293 + CAP_TO_MASK(CAP_IPC_OWNER) | CAP_TO_MASK(CAP_SETFCAP), \
98294 + CAP_TO_MASK(CAP_SYSLOG) | CAP_TO_MASK(CAP_MAC_ADMIN) }}
98295 +
98296 +#define security_learn(normal_msg,args...) \
98297 +({ \
98298 + read_lock(&grsec_exec_file_lock); \
98299 + gr_add_learn_entry(normal_msg "\n", ## args); \
98300 + read_unlock(&grsec_exec_file_lock); \
98301 +})
98302 +
98303 +enum {
98304 + GR_DO_AUDIT,
98305 + GR_DONT_AUDIT,
98306 + /* used for non-audit messages that we shouldn't kill the task on */
98307 + GR_DONT_AUDIT_GOOD
98308 +};
98309 +
98310 +enum {
98311 + GR_TTYSNIFF,
98312 + GR_RBAC,
98313 + GR_RBAC_STR,
98314 + GR_STR_RBAC,
98315 + GR_RBAC_MODE2,
98316 + GR_RBAC_MODE3,
98317 + GR_FILENAME,
98318 + GR_SYSCTL_HIDDEN,
98319 + GR_NOARGS,
98320 + GR_ONE_INT,
98321 + GR_ONE_INT_TWO_STR,
98322 + GR_ONE_STR,
98323 + GR_STR_INT,
98324 + GR_TWO_STR_INT,
98325 + GR_TWO_INT,
98326 + GR_TWO_U64,
98327 + GR_THREE_INT,
98328 + GR_FIVE_INT_TWO_STR,
98329 + GR_TWO_STR,
98330 + GR_THREE_STR,
98331 + GR_FOUR_STR,
98332 + GR_STR_FILENAME,
98333 + GR_FILENAME_STR,
98334 + GR_FILENAME_TWO_INT,
98335 + GR_FILENAME_TWO_INT_STR,
98336 + GR_TEXTREL,
98337 + GR_PTRACE,
98338 + GR_RESOURCE,
98339 + GR_CAP,
98340 + GR_SIG,
98341 + GR_SIG2,
98342 + GR_CRASH1,
98343 + GR_CRASH2,
98344 + GR_PSACCT,
98345 + GR_RWXMAP,
98346 + GR_RWXMAPVMA
98347 +};
98348 +
98349 +#define gr_log_hidden_sysctl(audit, msg, str) gr_log_varargs(audit, msg, GR_SYSCTL_HIDDEN, str)
98350 +#define gr_log_ttysniff(audit, msg, task) gr_log_varargs(audit, msg, GR_TTYSNIFF, task)
98351 +#define gr_log_fs_rbac_generic(audit, msg, dentry, mnt) gr_log_varargs(audit, msg, GR_RBAC, dentry, mnt)
98352 +#define gr_log_fs_rbac_str(audit, msg, dentry, mnt, str) gr_log_varargs(audit, msg, GR_RBAC_STR, dentry, mnt, str)
98353 +#define gr_log_fs_str_rbac(audit, msg, str, dentry, mnt) gr_log_varargs(audit, msg, GR_STR_RBAC, str, dentry, mnt)
98354 +#define gr_log_fs_rbac_mode2(audit, msg, dentry, mnt, str1, str2) gr_log_varargs(audit, msg, GR_RBAC_MODE2, dentry, mnt, str1, str2)
98355 +#define gr_log_fs_rbac_mode3(audit, msg, dentry, mnt, str1, str2, str3) gr_log_varargs(audit, msg, GR_RBAC_MODE3, dentry, mnt, str1, str2, str3)
98356 +#define gr_log_fs_generic(audit, msg, dentry, mnt) gr_log_varargs(audit, msg, GR_FILENAME, dentry, mnt)
98357 +#define gr_log_noargs(audit, msg) gr_log_varargs(audit, msg, GR_NOARGS)
98358 +#define gr_log_int(audit, msg, num) gr_log_varargs(audit, msg, GR_ONE_INT, num)
98359 +#define gr_log_int_str2(audit, msg, num, str1, str2) gr_log_varargs(audit, msg, GR_ONE_INT_TWO_STR, num, str1, str2)
98360 +#define gr_log_str(audit, msg, str) gr_log_varargs(audit, msg, GR_ONE_STR, str)
98361 +#define gr_log_str_int(audit, msg, str, num) gr_log_varargs(audit, msg, GR_STR_INT, str, num)
98362 +#define gr_log_int_int(audit, msg, num1, num2) gr_log_varargs(audit, msg, GR_TWO_INT, num1, num2)
98363 +#define gr_log_two_u64(audit, msg, num1, num2) gr_log_varargs(audit, msg, GR_TWO_U64, num1, num2)
98364 +#define gr_log_int3(audit, msg, num1, num2, num3) gr_log_varargs(audit, msg, GR_THREE_INT, num1, num2, num3)
98365 +#define gr_log_int5_str2(audit, msg, num1, num2, str1, str2) gr_log_varargs(audit, msg, GR_FIVE_INT_TWO_STR, num1, num2, str1, str2)
98366 +#define gr_log_str_str(audit, msg, str1, str2) gr_log_varargs(audit, msg, GR_TWO_STR, str1, str2)
98367 +#define gr_log_str2_int(audit, msg, str1, str2, num) gr_log_varargs(audit, msg, GR_TWO_STR_INT, str1, str2, num)
98368 +#define gr_log_str3(audit, msg, str1, str2, str3) gr_log_varargs(audit, msg, GR_THREE_STR, str1, str2, str3)
98369 +#define gr_log_str4(audit, msg, str1, str2, str3, str4) gr_log_varargs(audit, msg, GR_FOUR_STR, str1, str2, str3, str4)
98370 +#define gr_log_str_fs(audit, msg, str, dentry, mnt) gr_log_varargs(audit, msg, GR_STR_FILENAME, str, dentry, mnt)
98371 +#define gr_log_fs_str(audit, msg, dentry, mnt, str) gr_log_varargs(audit, msg, GR_FILENAME_STR, dentry, mnt, str)
98372 +#define gr_log_fs_int2(audit, msg, dentry, mnt, num1, num2) gr_log_varargs(audit, msg, GR_FILENAME_TWO_INT, dentry, mnt, num1, num2)
98373 +#define gr_log_fs_int2_str(audit, msg, dentry, mnt, num1, num2, str) gr_log_varargs(audit, msg, GR_FILENAME_TWO_INT_STR, dentry, mnt, num1, num2, str)
98374 +#define gr_log_textrel_ulong_ulong(audit, msg, str, file, ulong1, ulong2) gr_log_varargs(audit, msg, GR_TEXTREL, str, file, ulong1, ulong2)
98375 +#define gr_log_ptrace(audit, msg, task) gr_log_varargs(audit, msg, GR_PTRACE, task)
98376 +#define gr_log_res_ulong2_str(audit, msg, task, ulong1, str, ulong2) gr_log_varargs(audit, msg, GR_RESOURCE, task, ulong1, str, ulong2)
98377 +#define gr_log_cap(audit, msg, task, str) gr_log_varargs(audit, msg, GR_CAP, task, str)
98378 +#define gr_log_sig_addr(audit, msg, str, addr) gr_log_varargs(audit, msg, GR_SIG, str, addr)
98379 +#define gr_log_sig_task(audit, msg, task, num) gr_log_varargs(audit, msg, GR_SIG2, task, num)
98380 +#define gr_log_crash1(audit, msg, task, ulong) gr_log_varargs(audit, msg, GR_CRASH1, task, ulong)
98381 +#define gr_log_crash2(audit, msg, task, ulong1) gr_log_varargs(audit, msg, GR_CRASH2, task, ulong1)
98382 +#define gr_log_procacct(audit, msg, task, num1, num2, num3, num4, num5, num6, num7, num8, num9) gr_log_varargs(audit, msg, GR_PSACCT, task, num1, num2, num3, num4, num5, num6, num7, num8, num9)
98383 +#define gr_log_rwxmap(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAP, str)
98384 +#define gr_log_rwxmap_vma(audit, msg, str) gr_log_varargs(audit, msg, GR_RWXMAPVMA, str)
98385 +
98386 +void gr_log_varargs(int audit, const char *msg, int argtypes, ...);
98387 +
98388 +#endif
98389 +
98390 +#endif
98391 diff --git a/include/linux/grmsg.h b/include/linux/grmsg.h
98392 new file mode 100644
98393 index 0000000..3092b3c
98394 --- /dev/null
98395 +++ b/include/linux/grmsg.h
98396 @@ -0,0 +1,118 @@
98397 +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
98398 +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
98399 +#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by "
98400 +#define GR_STOPMOD_MSG "denied modification of module state by "
98401 +#define GR_ROFS_BLOCKWRITE_MSG "denied write to block device %.950s by "
98402 +#define GR_ROFS_MOUNT_MSG "denied writable mount of %.950s by "
98403 +#define GR_IOPERM_MSG "denied use of ioperm() by "
98404 +#define GR_IOPL_MSG "denied use of iopl() by "
98405 +#define GR_SHMAT_ACL_MSG "denied attach of shared memory of UID %u, PID %d, ID %u by "
98406 +#define GR_UNIX_CHROOT_MSG "denied connect() to abstract AF_UNIX socket outside of chroot by "
98407 +#define GR_SHMAT_CHROOT_MSG "denied attach of shared memory outside of chroot by "
98408 +#define GR_MEM_READWRITE_MSG "denied access of range %Lx -> %Lx in /dev/mem by "
98409 +#define GR_SYMLINK_MSG "not following symlink %.950s owned by %d.%d by "
98410 +#define GR_LEARN_AUDIT_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%lu\t%lu\t%.4095s\t%lu\t%pI4"
98411 +#define GR_ID_LEARN_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%c\t%d\t%d\t%d\t%pI4"
98412 +#define GR_HIDDEN_ACL_MSG "%s access to hidden file %.950s by "
98413 +#define GR_OPEN_ACL_MSG "%s open of %.950s for%s%s by "
98414 +#define GR_CREATE_ACL_MSG "%s create of %.950s for%s%s by "
98415 +#define GR_FIFO_MSG "denied writing FIFO %.950s of %d.%d by "
98416 +#define GR_MKNOD_CHROOT_MSG "denied mknod of %.950s from chroot by "
98417 +#define GR_MKNOD_ACL_MSG "%s mknod of %.950s by "
98418 +#define GR_UNIXCONNECT_ACL_MSG "%s connect() to the unix domain socket %.950s by "
98419 +#define GR_TTYSNIFF_ACL_MSG "terminal being sniffed by IP:%pI4 %.480s[%.16s:%d], parent %.480s[%.16s:%d] against "
98420 +#define GR_MKDIR_ACL_MSG "%s mkdir of %.950s by "
98421 +#define GR_RMDIR_ACL_MSG "%s rmdir of %.950s by "
98422 +#define GR_UNLINK_ACL_MSG "%s unlink of %.950s by "
98423 +#define GR_SYMLINK_ACL_MSG "%s symlink from %.480s to %.480s by "
98424 +#define GR_HARDLINK_MSG "denied hardlink of %.930s (owned by %d.%d) to %.30s for "
98425 +#define GR_LINK_ACL_MSG "%s link of %.480s to %.480s by "
98426 +#define GR_INHERIT_ACL_MSG "successful inherit of %.480s's ACL for %.480s by "
98427 +#define GR_RENAME_ACL_MSG "%s rename of %.480s to %.480s by "
98428 +#define GR_UNSAFESHARE_EXEC_ACL_MSG "denied exec with cloned fs of %.950s by "
98429 +#define GR_PTRACE_EXEC_ACL_MSG "denied ptrace of %.950s by "
98430 +#define GR_EXEC_ACL_MSG "%s execution of %.950s by "
98431 +#define GR_EXEC_TPE_MSG "denied untrusted exec (due to %.70s) of %.950s by "
98432 +#define GR_SEGVSTART_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning uid %u from login for %lu seconds"
98433 +#define GR_SEGVNOSUID_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning execution for %lu seconds"
98434 +#define GR_MOUNT_CHROOT_MSG "denied mount of %.256s as %.930s from chroot by "
98435 +#define GR_PIVOT_CHROOT_MSG "denied pivot_root from chroot by "
98436 +#define GR_TRUNCATE_ACL_MSG "%s truncate of %.950s by "
98437 +#define GR_ATIME_ACL_MSG "%s access time change of %.950s by "
98438 +#define GR_ACCESS_ACL_MSG "%s access of %.950s for%s%s%s by "
98439 +#define GR_CHROOT_CHROOT_MSG "denied double chroot to %.950s by "
98440 +#define GR_CHROOT_RENAME_MSG "denied bad rename of %.950s out of a chroot by "
98441 +#define GR_CHMOD_CHROOT_MSG "denied chmod +s of %.950s by "
98442 +#define GR_CHMOD_ACL_MSG "%s chmod of %.950s by "
98443 +#define GR_CHROOT_FCHDIR_MSG "denied fchdir outside of chroot to %.950s by "
98444 +#define GR_CHROOT_FHANDLE_MSG "denied use of file handles inside chroot by "
98445 +#define GR_CHOWN_ACL_MSG "%s chown of %.950s by "
98446 +#define GR_SETXATTR_ACL_MSG "%s setting extended attribute of %.950s by "
98447 +#define GR_REMOVEXATTR_ACL_MSG "%s removing extended attribute of %.950s by "
98448 +#define GR_WRITLIB_ACL_MSG "denied load of writable library %.950s by "
98449 +#define GR_INITF_ACL_MSG "init_variables() failed %s by "
98450 +#define GR_DISABLED_ACL_MSG "Error loading %s, trying to run kernel with acls disabled. To disable acls at startup use <kernel image name> gracl=off from your boot loader"
98451 +#define GR_DEV_ACL_MSG "/dev/grsec: %d bytes sent %d required, being fed garbage by "
98452 +#define GR_SHUTS_ACL_MSG "shutdown auth success for "
98453 +#define GR_SHUTF_ACL_MSG "shutdown auth failure for "
98454 +#define GR_SHUTI_ACL_MSG "ignoring shutdown for disabled RBAC system for "
98455 +#define GR_SEGVMODS_ACL_MSG "segvmod auth success for "
98456 +#define GR_SEGVMODF_ACL_MSG "segvmod auth failure for "
98457 +#define GR_SEGVMODI_ACL_MSG "ignoring segvmod for disabled RBAC system for "
98458 +#define GR_ENABLE_ACL_MSG "%s RBAC system loaded by "
98459 +#define GR_ENABLEF_ACL_MSG "unable to load %s for "
98460 +#define GR_RELOADI_ACL_MSG "ignoring reload request for disabled RBAC system"
98461 +#define GR_RELOAD_ACL_MSG "%s RBAC system reloaded by "
98462 +#define GR_RELOADF_ACL_MSG "failed reload of %s for "
98463 +#define GR_SPROLEI_ACL_MSG "ignoring change to special role for disabled RBAC system for "
98464 +#define GR_SPROLES_ACL_MSG "successful change to special role %s (id %d) by "
98465 +#define GR_SPROLEL_ACL_MSG "special role %s (id %d) exited by "
98466 +#define GR_SPROLEF_ACL_MSG "special role %s failure for "
98467 +#define GR_UNSPROLEI_ACL_MSG "ignoring unauth of special role for disabled RBAC system for "
98468 +#define GR_UNSPROLES_ACL_MSG "successful unauth of special role %s (id %d) by "
98469 +#define GR_INVMODE_ACL_MSG "invalid mode %d by "
98470 +#define GR_PRIORITY_CHROOT_MSG "denied priority change of process (%.16s:%d) by "
98471 +#define GR_FAILFORK_MSG "failed fork with errno %s by "
98472 +#define GR_NICE_CHROOT_MSG "denied priority change by "
98473 +#define GR_UNISIGLOG_MSG "%.32s occurred at %p in "
98474 +#define GR_DUALSIGLOG_MSG "signal %d sent to " DEFAULTSECMSG " by "
98475 +#define GR_SIG_ACL_MSG "denied send of signal %d to protected task " DEFAULTSECMSG " by "
98476 +#define GR_SYSCTL_MSG "denied modification of grsecurity sysctl value : %.32s by "
98477 +#define GR_SYSCTL_ACL_MSG "%s sysctl of %.950s for%s%s by "
98478 +#define GR_TIME_MSG "time set by "
98479 +#define GR_DEFACL_MSG "fatal: unable to find subject for (%.16s:%d), loaded by "
98480 +#define GR_MMAP_ACL_MSG "%s executable mmap of %.950s by "
98481 +#define GR_MPROTECT_ACL_MSG "%s executable mprotect of %.950s by "
98482 +#define GR_SOCK_MSG "denied socket(%.16s,%.16s,%.16s) by "
98483 +#define GR_SOCK_NOINET_MSG "denied socket(%.16s,%.16s,%d) by "
98484 +#define GR_BIND_MSG "denied bind() by "
98485 +#define GR_CONNECT_MSG "denied connect() by "
98486 +#define GR_BIND_ACL_MSG "denied bind() to %pI4 port %u sock type %.16s protocol %.16s by "
98487 +#define GR_CONNECT_ACL_MSG "denied connect() to %pI4 port %u sock type %.16s protocol %.16s by "
98488 +#define GR_IP_LEARN_MSG "%s\t%u\t%u\t%u\t%.4095s\t%.4095s\t%pI4\t%u\t%u\t%u\t%u\t%pI4"
98489 +#define GR_EXEC_CHROOT_MSG "exec of %.980s within chroot by process "
98490 +#define GR_CAP_ACL_MSG "use of %s denied for "
98491 +#define GR_CAP_CHROOT_MSG "use of %s in chroot denied for "
98492 +#define GR_CAP_ACL_MSG2 "use of %s permitted for "
98493 +#define GR_USRCHANGE_ACL_MSG "change to uid %u denied for "
98494 +#define GR_GRPCHANGE_ACL_MSG "change to gid %u denied for "
98495 +#define GR_REMOUNT_AUDIT_MSG "remount of %.256s by "
98496 +#define GR_UNMOUNT_AUDIT_MSG "unmount of %.256s by "
98497 +#define GR_MOUNT_AUDIT_MSG "mount of %.256s to %.256s by "
98498 +#define GR_CHDIR_AUDIT_MSG "chdir to %.980s by "
98499 +#define GR_EXEC_AUDIT_MSG "exec of %.930s (%.128s) by "
98500 +#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for "
98501 +#define GR_RWXMMAP_MSG "denied RWX mmap of %.950s by "
98502 +#define GR_RWXMPROTECT_MSG "denied RWX mprotect of %.950s by "
98503 +#define GR_TEXTREL_AUDIT_MSG "allowed %s text relocation transition in %.950s, VMA:0x%08lx 0x%08lx by "
98504 +#define GR_PTGNUSTACK_MSG "denied marking stack executable as requested by PT_GNU_STACK marking in %.950s by "
98505 +#define GR_VM86_MSG "denied use of vm86 by "
98506 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
98507 +#define GR_PTRACE_READEXEC_MSG "denied ptrace of unreadable binary %.950s by "
98508 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
98509 +#define GR_BADPROCPID_MSG "denied read of sensitive /proc/pid/%s entry via fd passed across exec by "
98510 +#define GR_SYMLINKOWNER_MSG "denied following symlink %.950s since symlink owner %u does not match target owner %u, by "
98511 +#define GR_BRUTE_DAEMON_MSG "bruteforce prevention initiated for the next 30 minutes or until service restarted, stalling each fork 30 seconds. Please investigate the crash report for "
98512 +#define GR_BRUTE_SUID_MSG "bruteforce prevention initiated due to crash of %.950s against uid %u, banning suid/sgid execs for %u minutes. Please investigate the crash report for "
98513 +#define GR_IPC_DENIED_MSG "denied %s of overly-permissive IPC object with creator uid %u by "
98514 +#define GR_MSRWRITE_MSG "denied write to CPU MSR by "
98515 diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
98516 new file mode 100644
98517 index 0000000..bdf5c8b
98518 --- /dev/null
98519 +++ b/include/linux/grsecurity.h
98520 @@ -0,0 +1,249 @@
98521 +#ifndef GR_SECURITY_H
98522 +#define GR_SECURITY_H
98523 +#include <linux/fs.h>
98524 +#include <linux/fs_struct.h>
98525 +#include <linux/binfmts.h>
98526 +#include <linux/gracl.h>
98527 +
98528 +/* notify of brain-dead configs */
98529 +#if defined(CONFIG_GRKERNSEC_PROC_USER) && defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
98530 +#error "CONFIG_GRKERNSEC_PROC_USER and CONFIG_GRKERNSEC_PROC_USERGROUP cannot both be enabled."
98531 +#endif
98532 +#if defined(CONFIG_GRKERNSEC_PROC) && !defined(CONFIG_GRKERNSEC_PROC_USER) && !defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
98533 +#error "CONFIG_GRKERNSEC_PROC enabled, but neither CONFIG_GRKERNSEC_PROC_USER nor CONFIG_GRKERNSEC_PROC_USERGROUP enabled"
98534 +#endif
98535 +#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
98536 +#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
98537 +#endif
98538 +#if defined(CONFIG_PAX_ASLR) && !defined(CONFIG_PAX_RANDKSTACK) && !defined(CONFIG_PAX_RANDUSTACK) && !defined(CONFIG_PAX_RANDMMAP)
98539 +#error "CONFIG_PAX_ASLR enabled, but RANDKSTACK, RANDUSTACK, and RANDMMAP are disabled."
98540 +#endif
98541 +#if defined(CONFIG_PAX) && !defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_ASLR)
98542 +#error "CONFIG_PAX enabled, but no PaX options are enabled."
98543 +#endif
98544 +
98545 +int gr_handle_new_usb(void);
98546 +
98547 +void gr_handle_brute_attach(int dumpable);
98548 +void gr_handle_brute_check(void);
98549 +void gr_handle_kernel_exploit(void);
98550 +
98551 +char gr_roletype_to_char(void);
98552 +
98553 +int gr_proc_is_restricted(void);
98554 +
98555 +int gr_acl_enable_at_secure(void);
98556 +
98557 +int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs);
98558 +int gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs);
98559 +
98560 +int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap);
98561 +
98562 +void gr_del_task_from_ip_table(struct task_struct *p);
98563 +
98564 +int gr_pid_is_chrooted(struct task_struct *p);
98565 +int gr_handle_chroot_fowner(struct pid *pid, enum pid_type type);
98566 +int gr_handle_chroot_nice(void);
98567 +int gr_handle_chroot_sysctl(const int op);
98568 +int gr_handle_chroot_setpriority(struct task_struct *p,
98569 + const int niceval);
98570 +int gr_chroot_fchdir(struct dentry *u_dentry, struct vfsmount *u_mnt);
98571 +int gr_chroot_fhandle(void);
98572 +int gr_handle_chroot_chroot(const struct dentry *dentry,
98573 + const struct vfsmount *mnt);
98574 +void gr_handle_chroot_chdir(const struct path *path);
98575 +int gr_handle_chroot_chmod(const struct dentry *dentry,
98576 + const struct vfsmount *mnt, const int mode);
98577 +int gr_handle_chroot_mknod(const struct dentry *dentry,
98578 + const struct vfsmount *mnt, const int mode);
98579 +int gr_handle_chroot_mount(const struct dentry *dentry,
98580 + const struct vfsmount *mnt,
98581 + const char *dev_name);
98582 +int gr_handle_chroot_pivot(void);
98583 +int gr_handle_chroot_unix(const pid_t pid);
98584 +
98585 +int gr_handle_rawio(const struct inode *inode);
98586 +
98587 +void gr_handle_ioperm(void);
98588 +void gr_handle_iopl(void);
98589 +void gr_handle_msr_write(void);
98590 +
98591 +umode_t gr_acl_umask(void);
98592 +
98593 +int gr_tpe_allow(const struct file *file);
98594 +
98595 +void gr_set_chroot_entries(struct task_struct *task, const struct path *path);
98596 +void gr_clear_chroot_entries(struct task_struct *task);
98597 +
98598 +void gr_log_forkfail(const int retval);
98599 +void gr_log_timechange(void);
98600 +void gr_log_signal(const int sig, const void *addr, const struct task_struct *t);
98601 +void gr_log_chdir(const struct dentry *dentry,
98602 + const struct vfsmount *mnt);
98603 +void gr_log_chroot_exec(const struct dentry *dentry,
98604 + const struct vfsmount *mnt);
98605 +void gr_log_remount(const char *devname, const int retval);
98606 +void gr_log_unmount(const char *devname, const int retval);
98607 +void gr_log_mount(const char *from, struct path *to, const int retval);
98608 +void gr_log_textrel(struct vm_area_struct *vma, bool is_textrel_rw);
98609 +void gr_log_ptgnustack(struct file *file);
98610 +void gr_log_rwxmmap(struct file *file);
98611 +void gr_log_rwxmprotect(struct vm_area_struct *vma);
98612 +
98613 +int gr_handle_follow_link(const struct dentry *dentry,
98614 + const struct vfsmount *mnt);
98615 +int gr_handle_fifo(const struct dentry *dentry,
98616 + const struct vfsmount *mnt,
98617 + const struct dentry *dir, const int flag,
98618 + const int acc_mode);
98619 +int gr_handle_hardlink(const struct dentry *dentry,
98620 + const struct vfsmount *mnt,
98621 + const struct filename *to);
98622 +
98623 +int gr_is_capable(const int cap);
98624 +int gr_is_capable_nolog(const int cap);
98625 +int gr_task_is_capable(const struct task_struct *task, const struct cred *cred, const int cap);
98626 +int gr_task_is_capable_nolog(const struct task_struct *task, const int cap);
98627 +
98628 +void gr_copy_label(struct task_struct *tsk);
98629 +void gr_handle_crash(struct task_struct *task, const int sig);
98630 +int gr_handle_signal(const struct task_struct *p, const int sig);
98631 +int gr_check_crash_uid(const kuid_t uid);
98632 +int gr_check_protected_task(const struct task_struct *task);
98633 +int gr_check_protected_task_fowner(struct pid *pid, enum pid_type type);
98634 +int gr_acl_handle_mmap(const struct file *file,
98635 + const unsigned long prot);
98636 +int gr_acl_handle_mprotect(const struct file *file,
98637 + const unsigned long prot);
98638 +int gr_check_hidden_task(const struct task_struct *tsk);
98639 +__u32 gr_acl_handle_truncate(const struct dentry *dentry,
98640 + const struct vfsmount *mnt);
98641 +__u32 gr_acl_handle_utime(const struct dentry *dentry,
98642 + const struct vfsmount *mnt);
98643 +__u32 gr_acl_handle_access(const struct dentry *dentry,
98644 + const struct vfsmount *mnt, const int fmode);
98645 +__u32 gr_acl_handle_chmod(const struct dentry *dentry,
98646 + const struct vfsmount *mnt, umode_t *mode);
98647 +__u32 gr_acl_handle_chown(const struct dentry *dentry,
98648 + const struct vfsmount *mnt);
98649 +__u32 gr_acl_handle_setxattr(const struct dentry *dentry,
98650 + const struct vfsmount *mnt);
98651 +__u32 gr_acl_handle_removexattr(const struct dentry *dentry,
98652 + const struct vfsmount *mnt);
98653 +int gr_handle_ptrace(struct task_struct *task, const long request);
98654 +int gr_handle_proc_ptrace(struct task_struct *task);
98655 +__u32 gr_acl_handle_execve(const struct dentry *dentry,
98656 + const struct vfsmount *mnt);
98657 +int gr_check_crash_exec(const struct file *filp);
98658 +int gr_acl_is_enabled(void);
98659 +void gr_set_role_label(struct task_struct *task, const kuid_t uid,
98660 + const kgid_t gid);
98661 +int gr_set_proc_label(const struct dentry *dentry,
98662 + const struct vfsmount *mnt,
98663 + const int unsafe_flags);
98664 +__u32 gr_acl_handle_hidden_file(const struct dentry *dentry,
98665 + const struct vfsmount *mnt);
98666 +__u32 gr_acl_handle_open(const struct dentry *dentry,
98667 + const struct vfsmount *mnt, int acc_mode);
98668 +__u32 gr_acl_handle_creat(const struct dentry *dentry,
98669 + const struct dentry *p_dentry,
98670 + const struct vfsmount *p_mnt,
98671 + int open_flags, int acc_mode, const int imode);
98672 +void gr_handle_create(const struct dentry *dentry,
98673 + const struct vfsmount *mnt);
98674 +void gr_handle_proc_create(const struct dentry *dentry,
98675 + const struct inode *inode);
98676 +__u32 gr_acl_handle_mknod(const struct dentry *new_dentry,
98677 + const struct dentry *parent_dentry,
98678 + const struct vfsmount *parent_mnt,
98679 + const int mode);
98680 +__u32 gr_acl_handle_mkdir(const struct dentry *new_dentry,
98681 + const struct dentry *parent_dentry,
98682 + const struct vfsmount *parent_mnt);
98683 +__u32 gr_acl_handle_rmdir(const struct dentry *dentry,
98684 + const struct vfsmount *mnt);
98685 +void gr_handle_delete(const u64 ino, const dev_t dev);
98686 +__u32 gr_acl_handle_unlink(const struct dentry *dentry,
98687 + const struct vfsmount *mnt);
98688 +__u32 gr_acl_handle_symlink(const struct dentry *new_dentry,
98689 + const struct dentry *parent_dentry,
98690 + const struct vfsmount *parent_mnt,
98691 + const struct filename *from);
98692 +__u32 gr_acl_handle_link(const struct dentry *new_dentry,
98693 + const struct dentry *parent_dentry,
98694 + const struct vfsmount *parent_mnt,
98695 + const struct dentry *old_dentry,
98696 + const struct vfsmount *old_mnt, const struct filename *to);
98697 +int gr_handle_symlink_owner(const struct path *link, const struct inode *target);
98698 +int gr_acl_handle_rename(struct dentry *new_dentry,
98699 + struct dentry *parent_dentry,
98700 + const struct vfsmount *parent_mnt,
98701 + struct dentry *old_dentry,
98702 + struct inode *old_parent_inode,
98703 + struct vfsmount *old_mnt, const struct filename *newname, unsigned int flags);
98704 +void gr_handle_rename(struct inode *old_dir, struct inode *new_dir,
98705 + struct dentry *old_dentry,
98706 + struct dentry *new_dentry,
98707 + struct vfsmount *mnt, const __u8 replace, unsigned int flags);
98708 +__u32 gr_check_link(const struct dentry *new_dentry,
98709 + const struct dentry *parent_dentry,
98710 + const struct vfsmount *parent_mnt,
98711 + const struct dentry *old_dentry,
98712 + const struct vfsmount *old_mnt);
98713 +int gr_acl_handle_filldir(const struct file *file, const char *name,
98714 + const unsigned int namelen, const u64 ino);
98715 +
98716 +__u32 gr_acl_handle_unix(const struct dentry *dentry,
98717 + const struct vfsmount *mnt);
98718 +void gr_acl_handle_exit(void);
98719 +void gr_acl_handle_psacct(struct task_struct *task, const long code);
98720 +int gr_acl_handle_procpidmem(const struct task_struct *task);
98721 +int gr_handle_rofs_mount(struct dentry *dentry, struct vfsmount *mnt, int mnt_flags);
98722 +int gr_handle_rofs_blockwrite(struct dentry *dentry, struct vfsmount *mnt, int acc_mode);
98723 +void gr_audit_ptrace(struct task_struct *task);
98724 +dev_t gr_get_dev_from_dentry(struct dentry *dentry);
98725 +u64 gr_get_ino_from_dentry(struct dentry *dentry);
98726 +void gr_put_exec_file(struct task_struct *task);
98727 +
98728 +int gr_get_symlinkown_enabled(void);
98729 +
98730 +int gr_ptrace_readexec(struct file *file, int unsafe_flags);
98731 +
98732 +void gr_inc_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt);
98733 +void gr_dec_chroot_refcnts(struct dentry *dentry, struct vfsmount *mnt);
98734 +int gr_bad_chroot_rename(struct dentry *olddentry, struct vfsmount *oldmnt,
98735 + struct dentry *newdentry, struct vfsmount *newmnt);
98736 +
98737 +#ifdef CONFIG_GRKERNSEC_RESLOG
98738 +extern void gr_log_resource(const struct task_struct *task, const int res,
98739 + const unsigned long wanted, const int gt);
98740 +#else
98741 +static inline void gr_log_resource(const struct task_struct *task, const int res,
98742 + const unsigned long wanted, const int gt)
98743 +{
98744 +}
98745 +#endif
98746 +
98747 +#ifdef CONFIG_GRKERNSEC
98748 +void task_grsec_rbac(struct seq_file *m, struct task_struct *p);
98749 +void gr_handle_vm86(void);
98750 +void gr_handle_mem_readwrite(u64 from, u64 to);
98751 +
98752 +void gr_log_badprocpid(const char *entry);
98753 +
98754 +extern int grsec_enable_dmesg;
98755 +extern int grsec_disable_privio;
98756 +
98757 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
98758 +extern kgid_t grsec_proc_gid;
98759 +#endif
98760 +
98761 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
98762 +extern int grsec_enable_chroot_findtask;
98763 +#endif
98764 +#ifdef CONFIG_GRKERNSEC_SETXID
98765 +extern int grsec_enable_setxid;
98766 +#endif
98767 +#endif
98768 +
98769 +#endif
98770 diff --git a/include/linux/grsock.h b/include/linux/grsock.h
98771 new file mode 100644
98772 index 0000000..e7ffaaf
98773 --- /dev/null
98774 +++ b/include/linux/grsock.h
98775 @@ -0,0 +1,19 @@
98776 +#ifndef __GRSOCK_H
98777 +#define __GRSOCK_H
98778 +
98779 +extern void gr_attach_curr_ip(const struct sock *sk);
98780 +extern int gr_handle_sock_all(const int family, const int type,
98781 + const int protocol);
98782 +extern int gr_handle_sock_server(const struct sockaddr *sck);
98783 +extern int gr_handle_sock_server_other(const struct sock *sck);
98784 +extern int gr_handle_sock_client(const struct sockaddr *sck);
98785 +extern int gr_search_connect(struct socket * sock,
98786 + struct sockaddr_in * addr);
98787 +extern int gr_search_bind(struct socket * sock,
98788 + struct sockaddr_in * addr);
98789 +extern int gr_search_listen(struct socket * sock);
98790 +extern int gr_search_accept(struct socket * sock);
98791 +extern int gr_search_socket(const int domain, const int type,
98792 + const int protocol);
98793 +
98794 +#endif
98795 diff --git a/include/linux/highmem.h b/include/linux/highmem.h
98796 index 6aefcd0..98b81dc 100644
98797 --- a/include/linux/highmem.h
98798 +++ b/include/linux/highmem.h
98799 @@ -191,6 +191,18 @@ static inline void clear_highpage(struct page *page)
98800 kunmap_atomic(kaddr);
98801 }
98802
98803 +static inline void sanitize_highpage(struct page *page)
98804 +{
98805 + void *kaddr;
98806 + unsigned long flags;
98807 +
98808 + local_irq_save(flags);
98809 + kaddr = kmap_atomic(page);
98810 + clear_page(kaddr);
98811 + kunmap_atomic(kaddr);
98812 + local_irq_restore(flags);
98813 +}
98814 +
98815 static inline void zero_user_segments(struct page *page,
98816 unsigned start1, unsigned end1,
98817 unsigned start2, unsigned end2)
98818 diff --git a/include/linux/hwmon-sysfs.h b/include/linux/hwmon-sysfs.h
98819 index 1c7b89a..7dda400 100644
98820 --- a/include/linux/hwmon-sysfs.h
98821 +++ b/include/linux/hwmon-sysfs.h
98822 @@ -25,7 +25,8 @@
98823 struct sensor_device_attribute{
98824 struct device_attribute dev_attr;
98825 int index;
98826 -};
98827 +} __do_const;
98828 +typedef struct sensor_device_attribute __no_const sensor_device_attribute_no_const;
98829 #define to_sensor_dev_attr(_dev_attr) \
98830 container_of(_dev_attr, struct sensor_device_attribute, dev_attr)
98831
98832 @@ -41,7 +42,8 @@ struct sensor_device_attribute_2 {
98833 struct device_attribute dev_attr;
98834 u8 index;
98835 u8 nr;
98836 -};
98837 +} __do_const;
98838 +typedef struct sensor_device_attribute_2 __no_const sensor_device_attribute_2_no_const;
98839 #define to_sensor_dev_attr_2(_dev_attr) \
98840 container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr)
98841
98842 diff --git a/include/linux/i2c.h b/include/linux/i2c.h
98843 index e83a738..8b323fa 100644
98844 --- a/include/linux/i2c.h
98845 +++ b/include/linux/i2c.h
98846 @@ -409,6 +409,7 @@ struct i2c_algorithm {
98847 int (*unreg_slave)(struct i2c_client *client);
98848 #endif
98849 };
98850 +typedef struct i2c_algorithm __no_const i2c_algorithm_no_const;
98851
98852 /**
98853 * struct i2c_bus_recovery_info - I2C bus recovery information
98854 diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
98855 index b49cf92..0c29072 100644
98856 --- a/include/linux/if_pppox.h
98857 +++ b/include/linux/if_pppox.h
98858 @@ -78,7 +78,7 @@ struct pppox_proto {
98859 int (*ioctl)(struct socket *sock, unsigned int cmd,
98860 unsigned long arg);
98861 struct module *owner;
98862 -};
98863 +} __do_const;
98864
98865 extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
98866 extern void unregister_pppox_proto(int proto_num);
98867 diff --git a/include/linux/init.h b/include/linux/init.h
98868 index b449f37..61005b3 100644
98869 --- a/include/linux/init.h
98870 +++ b/include/linux/init.h
98871 @@ -37,9 +37,17 @@
98872 * section.
98873 */
98874
98875 +#define add_init_latent_entropy __latent_entropy
98876 +
98877 +#ifdef CONFIG_MEMORY_HOTPLUG
98878 +#define add_meminit_latent_entropy
98879 +#else
98880 +#define add_meminit_latent_entropy __latent_entropy
98881 +#endif
98882 +
98883 /* These are for everybody (although not all archs will actually
98884 discard it in modules) */
98885 -#define __init __section(.init.text) __cold notrace
98886 +#define __init __section(.init.text) __cold notrace add_init_latent_entropy
98887 #define __initdata __section(.init.data)
98888 #define __initconst __constsection(.init.rodata)
98889 #define __exitdata __section(.exit.data)
98890 @@ -92,7 +100,7 @@
98891 #define __exit __section(.exit.text) __exitused __cold notrace
98892
98893 /* Used for MEMORY_HOTPLUG */
98894 -#define __meminit __section(.meminit.text) __cold notrace
98895 +#define __meminit __section(.meminit.text) __cold notrace add_meminit_latent_entropy
98896 #define __meminitdata __section(.meminit.data)
98897 #define __meminitconst __constsection(.meminit.rodata)
98898 #define __memexit __section(.memexit.text) __exitused __cold notrace
98899 diff --git a/include/linux/init_task.h b/include/linux/init_task.h
98900 index e8493fe..8684844 100644
98901 --- a/include/linux/init_task.h
98902 +++ b/include/linux/init_task.h
98903 @@ -149,6 +149,12 @@ extern struct task_group root_task_group;
98904
98905 #define INIT_TASK_COMM "swapper"
98906
98907 +#ifdef CONFIG_X86
98908 +#define INIT_TASK_THREAD_INFO .tinfo = INIT_THREAD_INFO,
98909 +#else
98910 +#define INIT_TASK_THREAD_INFO
98911 +#endif
98912 +
98913 #ifdef CONFIG_RT_MUTEXES
98914 # define INIT_RT_MUTEXES(tsk) \
98915 .pi_waiters = RB_ROOT, \
98916 @@ -215,6 +221,7 @@ extern struct task_group root_task_group;
98917 RCU_POINTER_INITIALIZER(cred, &init_cred), \
98918 .comm = INIT_TASK_COMM, \
98919 .thread = INIT_THREAD, \
98920 + INIT_TASK_THREAD_INFO \
98921 .fs = &init_fs, \
98922 .files = &init_files, \
98923 .signal = &init_signals, \
98924 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
98925 index be7e75c..09bec77 100644
98926 --- a/include/linux/interrupt.h
98927 +++ b/include/linux/interrupt.h
98928 @@ -433,8 +433,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
98929
98930 struct softirq_action
98931 {
98932 - void (*action)(struct softirq_action *);
98933 -};
98934 + void (*action)(void);
98935 +} __no_const;
98936
98937 asmlinkage void do_softirq(void);
98938 asmlinkage void __do_softirq(void);
98939 @@ -448,7 +448,7 @@ static inline void do_softirq_own_stack(void)
98940 }
98941 #endif
98942
98943 -extern void open_softirq(int nr, void (*action)(struct softirq_action *));
98944 +extern void open_softirq(int nr, void (*action)(void));
98945 extern void softirq_init(void);
98946 extern void __raise_softirq_irqoff(unsigned int nr);
98947
98948 diff --git a/include/linux/iommu.h b/include/linux/iommu.h
98949 index f9c1b6d..db7d6f5 100644
98950 --- a/include/linux/iommu.h
98951 +++ b/include/linux/iommu.h
98952 @@ -192,7 +192,7 @@ struct iommu_ops {
98953
98954 unsigned long pgsize_bitmap;
98955 void *priv;
98956 -};
98957 +} __do_const;
98958
98959 #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */
98960 #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */
98961 diff --git a/include/linux/ioport.h b/include/linux/ioport.h
98962 index 388e3ae..d7e45a1 100644
98963 --- a/include/linux/ioport.h
98964 +++ b/include/linux/ioport.h
98965 @@ -161,7 +161,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start);
98966 int adjust_resource(struct resource *res, resource_size_t start,
98967 resource_size_t size);
98968 resource_size_t resource_alignment(struct resource *res);
98969 -static inline resource_size_t resource_size(const struct resource *res)
98970 +static inline resource_size_t __intentional_overflow(-1) resource_size(const struct resource *res)
98971 {
98972 return res->end - res->start + 1;
98973 }
98974 diff --git a/include/linux/ipc.h b/include/linux/ipc.h
98975 index 9d84942..12d5bdf 100644
98976 --- a/include/linux/ipc.h
98977 +++ b/include/linux/ipc.h
98978 @@ -19,8 +19,8 @@ struct kern_ipc_perm
98979 kuid_t cuid;
98980 kgid_t cgid;
98981 umode_t mode;
98982 - unsigned long seq;
98983 + unsigned long seq __intentional_overflow(-1);
98984 void *security;
98985 -};
98986 +} __randomize_layout;
98987
98988 #endif /* _LINUX_IPC_H */
98989 diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h
98990 index 1eee6bc..9cf4912 100644
98991 --- a/include/linux/ipc_namespace.h
98992 +++ b/include/linux/ipc_namespace.h
98993 @@ -60,7 +60,7 @@ struct ipc_namespace {
98994 struct user_namespace *user_ns;
98995
98996 struct ns_common ns;
98997 -};
98998 +} __randomize_layout;
98999
99000 extern struct ipc_namespace init_ipc_ns;
99001 extern atomic_t nr_ipc_ns;
99002 diff --git a/include/linux/irq.h b/include/linux/irq.h
99003 index 51744bc..e902653 100644
99004 --- a/include/linux/irq.h
99005 +++ b/include/linux/irq.h
99006 @@ -383,7 +383,10 @@ struct irq_chip {
99007 int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info);
99008
99009 unsigned long flags;
99010 -};
99011 +} __do_const;
99012 +#ifndef _LINUX_IRQDOMAIN_H
99013 +typedef struct irq_chip __no_const irq_chip_no_const;
99014 +#endif
99015
99016 /*
99017 * irq_chip specific flags
99018 diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
99019 index fcea4e4..cff381d 100644
99020 --- a/include/linux/irqdesc.h
99021 +++ b/include/linux/irqdesc.h
99022 @@ -59,7 +59,7 @@ struct irq_desc {
99023 unsigned int irq_count; /* For detecting broken IRQs */
99024 unsigned long last_unhandled; /* Aging timer for unhandled count */
99025 unsigned int irqs_unhandled;
99026 - atomic_t threads_handled;
99027 + atomic_unchecked_t threads_handled;
99028 int threads_handled_last;
99029 raw_spinlock_t lock;
99030 struct cpumask *percpu_enabled;
99031 diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
99032 index 744ac0e..382b1a6 100644
99033 --- a/include/linux/irqdomain.h
99034 +++ b/include/linux/irqdomain.h
99035 @@ -40,6 +40,9 @@ struct device_node;
99036 struct irq_domain;
99037 struct of_device_id;
99038 struct irq_chip;
99039 +#ifndef _LINUX_IRQ_H
99040 +typedef struct irq_chip __no_const irq_chip_no_const;
99041 +#endif
99042 struct irq_data;
99043
99044 /* Number of irqs reserved for a legacy isa controller */
99045 diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
99046 index 535fd3b..74d73e6 100644
99047 --- a/include/linux/jiffies.h
99048 +++ b/include/linux/jiffies.h
99049 @@ -75,7 +75,7 @@ extern int register_refined_jiffies(long clock_tick_rate);
99050 * get_jiffies_64() will do this for you as appropriate.
99051 */
99052 extern u64 __jiffy_data jiffies_64;
99053 -extern unsigned long volatile __jiffy_data jiffies;
99054 +extern unsigned long volatile __jiffy_data __intentional_overflow(-1) jiffies;
99055
99056 #if (BITS_PER_LONG < 64)
99057 u64 get_jiffies_64(void);
99058 @@ -281,22 +281,22 @@ extern unsigned long preset_lpj;
99059 /*
99060 * Convert various time units to each other:
99061 */
99062 -extern unsigned int jiffies_to_msecs(const unsigned long j);
99063 -extern unsigned int jiffies_to_usecs(const unsigned long j);
99064 +extern unsigned int jiffies_to_msecs(const unsigned long j) __intentional_overflow(-1);
99065 +extern unsigned int jiffies_to_usecs(const unsigned long j) __intentional_overflow(-1);
99066
99067 -static inline u64 jiffies_to_nsecs(const unsigned long j)
99068 +static inline u64 __intentional_overflow(-1) jiffies_to_nsecs(const unsigned long j)
99069 {
99070 return (u64)jiffies_to_usecs(j) * NSEC_PER_USEC;
99071 }
99072
99073 -extern unsigned long __msecs_to_jiffies(const unsigned int m);
99074 +extern unsigned long __msecs_to_jiffies(const unsigned int m) __intentional_overflow(-1);
99075 #if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ)
99076 /*
99077 * HZ is equal to or smaller than 1000, and 1000 is a nice round
99078 * multiple of HZ, divide with the factor between them, but round
99079 * upwards:
99080 */
99081 -static inline unsigned long _msecs_to_jiffies(const unsigned int m)
99082 +static inline unsigned long __intentional_overflow(-1) _msecs_to_jiffies(const unsigned int m)
99083 {
99084 return (m + (MSEC_PER_SEC / HZ) - 1) / (MSEC_PER_SEC / HZ);
99085 }
99086 @@ -307,7 +307,7 @@ static inline unsigned long _msecs_to_jiffies(const unsigned int m)
99087 *
99088 * But first make sure the multiplication result cannot overflow:
99089 */
99090 -static inline unsigned long _msecs_to_jiffies(const unsigned int m)
99091 +static inline unsigned long __intentional_overflow(-1) _msecs_to_jiffies(const unsigned int m)
99092 {
99093 if (m > jiffies_to_msecs(MAX_JIFFY_OFFSET))
99094 return MAX_JIFFY_OFFSET;
99095 @@ -318,7 +318,7 @@ static inline unsigned long _msecs_to_jiffies(const unsigned int m)
99096 * Generic case - multiply, round and divide. But first check that if
99097 * we are doing a net multiplication, that we wouldn't overflow:
99098 */
99099 -static inline unsigned long _msecs_to_jiffies(const unsigned int m)
99100 +static inline unsigned long __intentional_overflow(-1) _msecs_to_jiffies(const unsigned int m)
99101 {
99102 if (HZ > MSEC_PER_SEC && m > jiffies_to_msecs(MAX_JIFFY_OFFSET))
99103 return MAX_JIFFY_OFFSET;
99104 @@ -362,21 +362,19 @@ static inline unsigned long msecs_to_jiffies(const unsigned int m)
99105 }
99106 }
99107
99108 -extern unsigned long __usecs_to_jiffies(const unsigned int u);
99109 +extern unsigned long __usecs_to_jiffies(const unsigned int u) __intentional_overflow(-1);
99110 #if HZ <= USEC_PER_SEC && !(USEC_PER_SEC % HZ)
99111 -static inline unsigned long _usecs_to_jiffies(const unsigned int u)
99112 +static inline unsigned long __intentional_overflow(-1) _usecs_to_jiffies(const unsigned int u)
99113 {
99114 return (u + (USEC_PER_SEC / HZ) - 1) / (USEC_PER_SEC / HZ);
99115 }
99116 #elif HZ > USEC_PER_SEC && !(HZ % USEC_PER_SEC)
99117 -static inline unsigned long _usecs_to_jiffies(const unsigned int u)
99118 +static inline unsigned long __intentional_overflow(-1) _usecs_to_jiffies(const unsigned int u)
99119 {
99120 return u * (HZ / USEC_PER_SEC);
99121 }
99122 -static inline unsigned long _usecs_to_jiffies(const unsigned int u)
99123 -{
99124 #else
99125 -static inline unsigned long _usecs_to_jiffies(const unsigned int u)
99126 +static inline unsigned long __intentional_overflow(-1) _usecs_to_jiffies(const unsigned int u)
99127 {
99128 return (USEC_TO_HZ_MUL32 * u + USEC_TO_HZ_ADJ32)
99129 >> USEC_TO_HZ_SHR32;
99130 @@ -418,8 +416,8 @@ static inline unsigned long usecs_to_jiffies(const unsigned int u)
99131
99132 extern unsigned long timespec_to_jiffies(const struct timespec *value);
99133 extern void jiffies_to_timespec(const unsigned long jiffies,
99134 - struct timespec *value);
99135 -extern unsigned long timeval_to_jiffies(const struct timeval *value);
99136 + struct timespec *value) __intentional_overflow(-1);
99137 +extern unsigned long timeval_to_jiffies(const struct timeval *value) __intentional_overflow(-1);
99138 extern void jiffies_to_timeval(const unsigned long jiffies,
99139 struct timeval *value);
99140
99141 diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h
99142 index 6883e19..e854fcb 100644
99143 --- a/include/linux/kallsyms.h
99144 +++ b/include/linux/kallsyms.h
99145 @@ -15,7 +15,8 @@
99146
99147 struct module;
99148
99149 -#ifdef CONFIG_KALLSYMS
99150 +#if !defined(__INCLUDED_BY_HIDESYM) || !defined(CONFIG_KALLSYMS)
99151 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
99152 /* Lookup the address for a symbol. Returns 0 if not found. */
99153 unsigned long kallsyms_lookup_name(const char *name);
99154
99155 @@ -106,6 +107,21 @@ static inline int lookup_symbol_attrs(unsigned long addr, unsigned long *size, u
99156 /* Stupid that this does nothing, but I didn't create this mess. */
99157 #define __print_symbol(fmt, addr)
99158 #endif /*CONFIG_KALLSYMS*/
99159 +#else /* when included by kallsyms.c, vsnprintf.c, kprobes.c, or
99160 + arch/x86/kernel/dumpstack.c, with HIDESYM enabled */
99161 +extern unsigned long kallsyms_lookup_name(const char *name);
99162 +extern void __print_symbol(const char *fmt, unsigned long address);
99163 +extern int sprint_backtrace(char *buffer, unsigned long address);
99164 +extern int sprint_symbol(char *buffer, unsigned long address);
99165 +extern int sprint_symbol_no_offset(char *buffer, unsigned long address);
99166 +const char *kallsyms_lookup(unsigned long addr,
99167 + unsigned long *symbolsize,
99168 + unsigned long *offset,
99169 + char **modname, char *namebuf);
99170 +extern int kallsyms_lookup_size_offset(unsigned long addr,
99171 + unsigned long *symbolsize,
99172 + unsigned long *offset);
99173 +#endif
99174
99175 /* This macro allows us to keep printk typechecking */
99176 static __printf(1, 2)
99177 diff --git a/include/linux/kernel.h b/include/linux/kernel.h
99178 index 5582410..13ecc80 100644
99179 --- a/include/linux/kernel.h
99180 +++ b/include/linux/kernel.h
99181 @@ -391,7 +391,7 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t
99182 /* Obsolete, do not use. Use kstrto<foo> instead */
99183
99184 extern unsigned long simple_strtoul(const char *,char **,unsigned int);
99185 -extern long simple_strtol(const char *,char **,unsigned int);
99186 +extern long simple_strtol(const char *,char **,unsigned int) __intentional_overflow(-1);
99187 extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
99188 extern long long simple_strtoll(const char *,char **,unsigned int);
99189
99190 diff --git a/include/linux/key-type.h b/include/linux/key-type.h
99191 index ff9f1d3..6712be5 100644
99192 --- a/include/linux/key-type.h
99193 +++ b/include/linux/key-type.h
99194 @@ -152,7 +152,7 @@ struct key_type {
99195 /* internal fields */
99196 struct list_head link; /* link in types list */
99197 struct lock_class_key lock_class; /* key->sem lock class */
99198 -};
99199 +} __do_const;
99200
99201 extern struct key_type key_type_keyring;
99202
99203 diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
99204 index e465bb1..19f605fd 100644
99205 --- a/include/linux/kgdb.h
99206 +++ b/include/linux/kgdb.h
99207 @@ -52,7 +52,7 @@ extern int kgdb_connected;
99208 extern int kgdb_io_module_registered;
99209
99210 extern atomic_t kgdb_setting_breakpoint;
99211 -extern atomic_t kgdb_cpu_doing_single_step;
99212 +extern atomic_unchecked_t kgdb_cpu_doing_single_step;
99213
99214 extern struct task_struct *kgdb_usethread;
99215 extern struct task_struct *kgdb_contthread;
99216 @@ -254,7 +254,7 @@ struct kgdb_arch {
99217 void (*correct_hw_break)(void);
99218
99219 void (*enable_nmi)(bool on);
99220 -};
99221 +} __do_const;
99222
99223 /**
99224 * struct kgdb_io - Describe the interface for an I/O driver to talk with KGDB.
99225 @@ -279,7 +279,7 @@ struct kgdb_io {
99226 void (*pre_exception) (void);
99227 void (*post_exception) (void);
99228 int is_console;
99229 -};
99230 +} __do_const;
99231
99232 extern struct kgdb_arch arch_kgdb_ops;
99233
99234 diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h
99235 index d0a1f99..0bd8b7c 100644
99236 --- a/include/linux/kmemleak.h
99237 +++ b/include/linux/kmemleak.h
99238 @@ -27,7 +27,7 @@
99239
99240 extern void kmemleak_init(void) __ref;
99241 extern void kmemleak_alloc(const void *ptr, size_t size, int min_count,
99242 - gfp_t gfp) __ref;
99243 + gfp_t gfp) __ref __size_overflow(2);
99244 extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
99245 gfp_t gfp) __ref;
99246 extern void kmemleak_free(const void *ptr) __ref;
99247 @@ -63,7 +63,7 @@ static inline void kmemleak_erase(void **ptr)
99248 static inline void kmemleak_init(void)
99249 {
99250 }
99251 -static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count,
99252 +static inline void __size_overflow(2) kmemleak_alloc(const void *ptr, size_t size, int min_count,
99253 gfp_t gfp)
99254 {
99255 }
99256 diff --git a/include/linux/kmod.h b/include/linux/kmod.h
99257 index 0555cc6..40116ce 100644
99258 --- a/include/linux/kmod.h
99259 +++ b/include/linux/kmod.h
99260 @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysctl */
99261 * usually useless though. */
99262 extern __printf(2, 3)
99263 int __request_module(bool wait, const char *name, ...);
99264 +extern __printf(3, 4)
99265 +int ___request_module(bool wait, char *param_name, const char *name, ...);
99266 #define request_module(mod...) __request_module(true, mod)
99267 #define request_module_nowait(mod...) __request_module(false, mod)
99268 #define try_then_request_module(x, mod...) \
99269 @@ -57,6 +59,9 @@ struct subprocess_info {
99270 struct work_struct work;
99271 struct completion *complete;
99272 char *path;
99273 +#ifdef CONFIG_GRKERNSEC
99274 + char *origpath;
99275 +#endif
99276 char **argv;
99277 char **envp;
99278 int wait;
99279 diff --git a/include/linux/kobject.h b/include/linux/kobject.h
99280 index 637f670..3d69945 100644
99281 --- a/include/linux/kobject.h
99282 +++ b/include/linux/kobject.h
99283 @@ -119,7 +119,7 @@ struct kobj_type {
99284 struct attribute **default_attrs;
99285 const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
99286 const void *(*namespace)(struct kobject *kobj);
99287 -};
99288 +} __do_const;
99289
99290 struct kobj_uevent_env {
99291 char *argv[3];
99292 @@ -143,6 +143,7 @@ struct kobj_attribute {
99293 ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,
99294 const char *buf, size_t count);
99295 };
99296 +typedef struct kobj_attribute __no_const kobj_attribute_no_const;
99297
99298 extern const struct sysfs_ops kobj_sysfs_ops;
99299
99300 @@ -170,7 +171,7 @@ struct kset {
99301 spinlock_t list_lock;
99302 struct kobject kobj;
99303 const struct kset_uevent_ops *uevent_ops;
99304 -};
99305 +} __randomize_layout;
99306
99307 extern void kset_init(struct kset *kset);
99308 extern int __must_check kset_register(struct kset *kset);
99309 diff --git a/include/linux/kobject_ns.h b/include/linux/kobject_ns.h
99310 index df32d25..fb52e27 100644
99311 --- a/include/linux/kobject_ns.h
99312 +++ b/include/linux/kobject_ns.h
99313 @@ -44,7 +44,7 @@ struct kobj_ns_type_operations {
99314 const void *(*netlink_ns)(struct sock *sk);
99315 const void *(*initial_ns)(void);
99316 void (*drop_ns)(void *);
99317 -};
99318 +} __do_const;
99319
99320 int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);
99321 int kobj_ns_type_registered(enum kobj_ns_type type);
99322 diff --git a/include/linux/kref.h b/include/linux/kref.h
99323 index 484604d..0f6c5b6 100644
99324 --- a/include/linux/kref.h
99325 +++ b/include/linux/kref.h
99326 @@ -68,7 +68,7 @@ static inline void kref_get(struct kref *kref)
99327 static inline int kref_sub(struct kref *kref, unsigned int count,
99328 void (*release)(struct kref *kref))
99329 {
99330 - WARN_ON(release == NULL);
99331 + BUG_ON(release == NULL);
99332
99333 if (atomic_sub_and_test((int) count, &kref->refcount)) {
99334 release(kref);
99335 diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
99336 index 05e99b8..484b1f97 100644
99337 --- a/include/linux/kvm_host.h
99338 +++ b/include/linux/kvm_host.h
99339 @@ -468,7 +468,7 @@ static inline void kvm_irqfd_exit(void)
99340 {
99341 }
99342 #endif
99343 -int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
99344 +int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align,
99345 struct module *module);
99346 void kvm_exit(void);
99347
99348 @@ -678,7 +678,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
99349 struct kvm_guest_debug *dbg);
99350 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
99351
99352 -int kvm_arch_init(void *opaque);
99353 +int kvm_arch_init(const void *opaque);
99354 void kvm_arch_exit(void);
99355
99356 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
99357 diff --git a/include/linux/libata.h b/include/linux/libata.h
99358 index c9cfbcd..46986db 100644
99359 --- a/include/linux/libata.h
99360 +++ b/include/linux/libata.h
99361 @@ -990,7 +990,7 @@ struct ata_port_operations {
99362 * fields must be pointers.
99363 */
99364 const struct ata_port_operations *inherits;
99365 -};
99366 +} __do_const;
99367
99368 struct ata_port_info {
99369 unsigned long flags;
99370 diff --git a/include/linux/linkage.h b/include/linux/linkage.h
99371 index a6a42dd..6c5ebce 100644
99372 --- a/include/linux/linkage.h
99373 +++ b/include/linux/linkage.h
99374 @@ -36,6 +36,7 @@
99375 #endif
99376
99377 #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE)
99378 +#define __page_aligned_rodata __read_only __aligned(PAGE_SIZE)
99379 #define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE)
99380
99381 /*
99382 diff --git a/include/linux/list.h b/include/linux/list.h
99383 index feb773c..98f3075 100644
99384 --- a/include/linux/list.h
99385 +++ b/include/linux/list.h
99386 @@ -113,6 +113,19 @@ extern void __list_del_entry(struct list_head *entry);
99387 extern void list_del(struct list_head *entry);
99388 #endif
99389
99390 +extern void __pax_list_add(struct list_head *new,
99391 + struct list_head *prev,
99392 + struct list_head *next);
99393 +static inline void pax_list_add(struct list_head *new, struct list_head *head)
99394 +{
99395 + __pax_list_add(new, head, head->next);
99396 +}
99397 +static inline void pax_list_add_tail(struct list_head *new, struct list_head *head)
99398 +{
99399 + __pax_list_add(new, head->prev, head);
99400 +}
99401 +extern void pax_list_del(struct list_head *entry);
99402 +
99403 /**
99404 * list_replace - replace old entry by new one
99405 * @old : the element to be replaced
99406 @@ -146,6 +159,8 @@ static inline void list_del_init(struct list_head *entry)
99407 INIT_LIST_HEAD(entry);
99408 }
99409
99410 +extern void pax_list_del_init(struct list_head *entry);
99411 +
99412 /**
99413 * list_move - delete from one list and add as another's head
99414 * @list: the entry to move
99415 diff --git a/include/linux/lockref.h b/include/linux/lockref.h
99416 index b10b122..d37b3de 100644
99417 --- a/include/linux/lockref.h
99418 +++ b/include/linux/lockref.h
99419 @@ -28,7 +28,7 @@ struct lockref {
99420 #endif
99421 struct {
99422 spinlock_t lock;
99423 - int count;
99424 + atomic_t count;
99425 };
99426 };
99427 };
99428 @@ -43,9 +43,29 @@ extern void lockref_mark_dead(struct lockref *);
99429 extern int lockref_get_not_dead(struct lockref *);
99430
99431 /* Must be called under spinlock for reliable results */
99432 -static inline int __lockref_is_dead(const struct lockref *l)
99433 +static inline int __lockref_is_dead(const struct lockref *lockref)
99434 {
99435 - return ((int)l->count < 0);
99436 + return atomic_read(&lockref->count) < 0;
99437 +}
99438 +
99439 +static inline int __lockref_read(const struct lockref *lockref)
99440 +{
99441 + return atomic_read(&lockref->count);
99442 +}
99443 +
99444 +static inline void __lockref_set(struct lockref *lockref, int count)
99445 +{
99446 + atomic_set(&lockref->count, count);
99447 +}
99448 +
99449 +static inline void __lockref_inc(struct lockref *lockref)
99450 +{
99451 + atomic_inc(&lockref->count);
99452 +}
99453 +
99454 +static inline void __lockref_dec(struct lockref *lockref)
99455 +{
99456 + atomic_dec(&lockref->count);
99457 }
99458
99459 #endif /* __LINUX_LOCKREF_H */
99460 diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
99461 index 9429f05..a5d5425 100644
99462 --- a/include/linux/lsm_hooks.h
99463 +++ b/include/linux/lsm_hooks.h
99464 @@ -1824,7 +1824,7 @@ struct security_hook_heads {
99465 struct list_head audit_rule_match;
99466 struct list_head audit_rule_free;
99467 #endif /* CONFIG_AUDIT */
99468 -};
99469 +} __randomize_layout;
99470
99471 /*
99472 * Security module hook list structure.
99473 @@ -1834,7 +1834,7 @@ struct security_hook_list {
99474 struct list_head list;
99475 struct list_head *head;
99476 union security_list_options hook;
99477 -};
99478 +} __randomize_layout;
99479
99480 /*
99481 * Initializing a security_hook_list structure takes
99482 diff --git a/include/linux/math64.h b/include/linux/math64.h
99483 index c45c089..298841c 100644
99484 --- a/include/linux/math64.h
99485 +++ b/include/linux/math64.h
99486 @@ -15,7 +15,7 @@
99487 * This is commonly provided by 32bit archs to provide an optimized 64bit
99488 * divide.
99489 */
99490 -static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
99491 +static inline u64 __intentional_overflow(-1) div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
99492 {
99493 *remainder = dividend % divisor;
99494 return dividend / divisor;
99495 @@ -42,7 +42,7 @@ static inline u64 div64_u64_rem(u64 dividend, u64 divisor, u64 *remainder)
99496 /**
99497 * div64_u64 - unsigned 64bit divide with 64bit divisor
99498 */
99499 -static inline u64 div64_u64(u64 dividend, u64 divisor)
99500 +static inline u64 __intentional_overflow(-1) div64_u64(u64 dividend, u64 divisor)
99501 {
99502 return dividend / divisor;
99503 }
99504 @@ -61,7 +61,7 @@ static inline s64 div64_s64(s64 dividend, s64 divisor)
99505 #define div64_ul(x, y) div_u64((x), (y))
99506
99507 #ifndef div_u64_rem
99508 -static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
99509 +static inline u64 __intentional_overflow(-1) div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
99510 {
99511 *remainder = do_div(dividend, divisor);
99512 return dividend;
99513 @@ -77,7 +77,7 @@ extern u64 div64_u64_rem(u64 dividend, u64 divisor, u64 *remainder);
99514 #endif
99515
99516 #ifndef div64_u64
99517 -extern u64 div64_u64(u64 dividend, u64 divisor);
99518 +extern u64 __intentional_overflow(-1) div64_u64(u64 dividend, u64 divisor);
99519 #endif
99520
99521 #ifndef div64_s64
99522 @@ -94,7 +94,7 @@ extern s64 div64_s64(s64 dividend, s64 divisor);
99523 * divide.
99524 */
99525 #ifndef div_u64
99526 -static inline u64 div_u64(u64 dividend, u32 divisor)
99527 +static inline u64 __intentional_overflow(-1) div_u64(u64 dividend, u32 divisor)
99528 {
99529 u32 remainder;
99530 return div_u64_rem(dividend, divisor, &remainder);
99531 diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
99532 index 3d385c8..deacb6a 100644
99533 --- a/include/linux/mempolicy.h
99534 +++ b/include/linux/mempolicy.h
99535 @@ -91,6 +91,10 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol)
99536 }
99537
99538 #define vma_policy(vma) ((vma)->vm_policy)
99539 +static inline void set_vma_policy(struct vm_area_struct *vma, struct mempolicy *pol)
99540 +{
99541 + vma->vm_policy = pol;
99542 +}
99543
99544 static inline void mpol_get(struct mempolicy *pol)
99545 {
99546 @@ -229,6 +233,9 @@ static inline void mpol_free_shared_policy(struct shared_policy *p)
99547 }
99548
99549 #define vma_policy(vma) NULL
99550 +static inline void set_vma_policy(struct vm_area_struct *vma, struct mempolicy *pol)
99551 +{
99552 +}
99553
99554 static inline int
99555 vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
99556 diff --git a/include/linux/mm.h b/include/linux/mm.h
99557 index bf6f117..0bcd7ea 100644
99558 --- a/include/linux/mm.h
99559 +++ b/include/linux/mm.h
99560 @@ -136,6 +136,11 @@ extern unsigned int kobjsize(const void *objp);
99561
99562 #define VM_DONTCOPY 0x00020000 /* Do not copy this vma on fork */
99563 #define VM_DONTEXPAND 0x00040000 /* Cannot expand with mremap() */
99564 +
99565 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_X86_32)
99566 +#define VM_PAGEEXEC 0x00080000 /* vma->vm_page_prot needs special handling */
99567 +#endif
99568 +
99569 #define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
99570 #define VM_NORESERVE 0x00200000 /* should the VM suppress accounting */
99571 #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
99572 @@ -258,8 +263,8 @@ struct vm_operations_struct {
99573 /* called by access_process_vm when get_user_pages() fails, typically
99574 * for use by special VMAs that can switch between memory and hardware
99575 */
99576 - int (*access)(struct vm_area_struct *vma, unsigned long addr,
99577 - void *buf, int len, int write);
99578 + ssize_t (*access)(struct vm_area_struct *vma, unsigned long addr,
99579 + void *buf, size_t len, int write);
99580
99581 /* Called by the /proc/PID/maps code to ask the vma whether it
99582 * has a special name. Returning non-NULL will also cause this
99583 @@ -297,6 +302,7 @@ struct vm_operations_struct {
99584 struct page *(*find_special_page)(struct vm_area_struct *vma,
99585 unsigned long addr);
99586 };
99587 +typedef struct vm_operations_struct __no_const vm_operations_struct_no_const;
99588
99589 struct mmu_gather;
99590 struct inode;
99591 @@ -1160,8 +1166,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
99592 unsigned long *pfn);
99593 int follow_phys(struct vm_area_struct *vma, unsigned long address,
99594 unsigned int flags, unsigned long *prot, resource_size_t *phys);
99595 -int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
99596 - void *buf, int len, int write);
99597 +ssize_t generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
99598 + void *buf, size_t len, int write);
99599
99600 static inline void unmap_shared_mapping_range(struct address_space *mapping,
99601 loff_t const holebegin, loff_t const holelen)
99602 @@ -1201,9 +1207,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
99603 }
99604 #endif
99605
99606 -extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
99607 -extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
99608 - void *buf, int len, int write);
99609 +extern ssize_t access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, size_t len, int write);
99610 +extern ssize_t access_remote_vm(struct mm_struct *mm, unsigned long addr,
99611 + void *buf, size_t len, int write);
99612
99613 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
99614 unsigned long start, unsigned long nr_pages,
99615 @@ -1251,34 +1257,6 @@ int clear_page_dirty_for_io(struct page *page);
99616
99617 int get_cmdline(struct task_struct *task, char *buffer, int buflen);
99618
99619 -/* Is the vma a continuation of the stack vma above it? */
99620 -static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr)
99621 -{
99622 - return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);
99623 -}
99624 -
99625 -static inline int stack_guard_page_start(struct vm_area_struct *vma,
99626 - unsigned long addr)
99627 -{
99628 - return (vma->vm_flags & VM_GROWSDOWN) &&
99629 - (vma->vm_start == addr) &&
99630 - !vma_growsdown(vma->vm_prev, addr);
99631 -}
99632 -
99633 -/* Is the vma a continuation of the stack vma below it? */
99634 -static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr)
99635 -{
99636 - return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP);
99637 -}
99638 -
99639 -static inline int stack_guard_page_end(struct vm_area_struct *vma,
99640 - unsigned long addr)
99641 -{
99642 - return (vma->vm_flags & VM_GROWSUP) &&
99643 - (vma->vm_end == addr) &&
99644 - !vma_growsup(vma->vm_next, addr);
99645 -}
99646 -
99647 extern struct task_struct *task_of_stack(struct task_struct *task,
99648 struct vm_area_struct *vma, bool in_group);
99649
99650 @@ -1401,8 +1379,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
99651 {
99652 return 0;
99653 }
99654 +
99655 +static inline int __pud_alloc_kernel(struct mm_struct *mm, pgd_t *pgd,
99656 + unsigned long address)
99657 +{
99658 + return 0;
99659 +}
99660 #else
99661 int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address);
99662 +int __pud_alloc_kernel(struct mm_struct *mm, pgd_t *pgd, unsigned long address);
99663 #endif
99664
99665 #if defined(__PAGETABLE_PMD_FOLDED) || !defined(CONFIG_MMU)
99666 @@ -1412,6 +1397,12 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
99667 return 0;
99668 }
99669
99670 +static inline int __pmd_alloc_kernel(struct mm_struct *mm, pud_t *pud,
99671 + unsigned long address)
99672 +{
99673 + return 0;
99674 +}
99675 +
99676 static inline void mm_nr_pmds_init(struct mm_struct *mm) {}
99677
99678 static inline unsigned long mm_nr_pmds(struct mm_struct *mm)
99679 @@ -1424,6 +1415,7 @@ static inline void mm_dec_nr_pmds(struct mm_struct *mm) {}
99680
99681 #else
99682 int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address);
99683 +int __pmd_alloc_kernel(struct mm_struct *mm, pud_t *pud, unsigned long address);
99684
99685 static inline void mm_nr_pmds_init(struct mm_struct *mm)
99686 {
99687 @@ -1461,11 +1453,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
99688 NULL: pud_offset(pgd, address);
99689 }
99690
99691 +static inline pud_t *pud_alloc_kernel(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
99692 +{
99693 + return (unlikely(pgd_none(*pgd)) && __pud_alloc_kernel(mm, pgd, address))?
99694 + NULL: pud_offset(pgd, address);
99695 +}
99696 +
99697 static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
99698 {
99699 return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))?
99700 NULL: pmd_offset(pud, address);
99701 }
99702 +
99703 +static inline pmd_t *pmd_alloc_kernel(struct mm_struct *mm, pud_t *pud, unsigned long address)
99704 +{
99705 + return (unlikely(pud_none(*pud)) && __pmd_alloc_kernel(mm, pud, address))?
99706 + NULL: pmd_offset(pud, address);
99707 +}
99708 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
99709
99710 #if USE_SPLIT_PTE_PTLOCKS
99711 @@ -1846,12 +1850,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **,
99712 bool *need_rmap_locks);
99713 extern void exit_mmap(struct mm_struct *);
99714
99715 +#if defined(CONFIG_GRKERNSEC) && (defined(CONFIG_GRKERNSEC_RESLOG) || !defined(CONFIG_GRKERNSEC_NO_RBAC))
99716 +extern void gr_learn_resource(const struct task_struct *task, const int res,
99717 + const unsigned long wanted, const int gt);
99718 +#else
99719 +static inline void gr_learn_resource(const struct task_struct *task, const int res,
99720 + const unsigned long wanted, const int gt)
99721 +{
99722 +}
99723 +#endif
99724 +
99725 static inline int check_data_rlimit(unsigned long rlim,
99726 unsigned long new,
99727 unsigned long start,
99728 unsigned long end_data,
99729 unsigned long start_data)
99730 {
99731 + gr_learn_resource(current, RLIMIT_DATA, (new - start) + (end_data - start_data), 1);
99732 if (rlim < RLIM_INFINITY) {
99733 if (((new - start) + (end_data - start_data)) > rlim)
99734 return -ENOSPC;
99735 @@ -1876,7 +1891,7 @@ extern int install_special_mapping(struct mm_struct *mm,
99736 unsigned long addr, unsigned long len,
99737 unsigned long flags, struct page **pages);
99738
99739 -extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
99740 +extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long) __intentional_overflow(-1);
99741
99742 extern unsigned long mmap_region(struct file *file, unsigned long addr,
99743 unsigned long len, vm_flags_t vm_flags, unsigned long pgoff);
99744 @@ -1884,6 +1899,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
99745 unsigned long len, unsigned long prot, unsigned long flags,
99746 unsigned long pgoff, unsigned long *populate);
99747 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
99748 +extern int __do_munmap(struct mm_struct *, unsigned long, size_t);
99749
99750 #ifdef CONFIG_MMU
99751 extern int __mm_populate(unsigned long addr, unsigned long len,
99752 @@ -1912,10 +1928,11 @@ struct vm_unmapped_area_info {
99753 unsigned long high_limit;
99754 unsigned long align_mask;
99755 unsigned long align_offset;
99756 + unsigned long threadstack_offset;
99757 };
99758
99759 -extern unsigned long unmapped_area(struct vm_unmapped_area_info *info);
99760 -extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
99761 +extern unsigned long unmapped_area(const struct vm_unmapped_area_info *info);
99762 +extern unsigned long unmapped_area_topdown(const struct vm_unmapped_area_info *info);
99763
99764 /*
99765 * Search for an unmapped address range.
99766 @@ -1927,7 +1944,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
99767 * - satisfies (begin_addr & align_mask) == (align_offset & align_mask)
99768 */
99769 static inline unsigned long
99770 -vm_unmapped_area(struct vm_unmapped_area_info *info)
99771 +vm_unmapped_area(const struct vm_unmapped_area_info *info)
99772 {
99773 if (info->flags & VM_UNMAPPED_AREA_TOPDOWN)
99774 return unmapped_area_topdown(info);
99775 @@ -1989,6 +2006,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
99776 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
99777 struct vm_area_struct **pprev);
99778
99779 +extern struct vm_area_struct *pax_find_mirror_vma(struct vm_area_struct *vma);
99780 +extern __must_check long pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma);
99781 +extern void pax_mirror_file_pte(struct vm_area_struct *vma, unsigned long address, struct page *page_m, spinlock_t *ptl);
99782 +
99783 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
99784 NULL if none. Assume start_addr < end_addr. */
99785 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
99786 @@ -2018,10 +2039,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
99787 }
99788
99789 #ifdef CONFIG_MMU
99790 -pgprot_t vm_get_page_prot(unsigned long vm_flags);
99791 +pgprot_t vm_get_page_prot(vm_flags_t vm_flags);
99792 void vma_set_page_prot(struct vm_area_struct *vma);
99793 #else
99794 -static inline pgprot_t vm_get_page_prot(unsigned long vm_flags)
99795 +static inline pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
99796 {
99797 return __pgprot(0);
99798 }
99799 @@ -2083,6 +2104,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
99800 static inline void vm_stat_account(struct mm_struct *mm,
99801 unsigned long flags, struct file *file, long pages)
99802 {
99803 +
99804 +#ifdef CONFIG_PAX_RANDMMAP
99805 + if (!(mm->pax_flags & MF_PAX_RANDMMAP) || (flags & (VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)))
99806 +#endif
99807 +
99808 mm->total_vm += pages;
99809 }
99810 #endif /* CONFIG_PROC_FS */
99811 @@ -2186,7 +2212,7 @@ extern int get_hwpoison_page(struct page *page);
99812 extern int sysctl_memory_failure_early_kill;
99813 extern int sysctl_memory_failure_recovery;
99814 extern void shake_page(struct page *p, int access);
99815 -extern atomic_long_t num_poisoned_pages;
99816 +extern atomic_long_unchecked_t num_poisoned_pages;
99817 extern int soft_offline_page(struct page *page, int flags);
99818
99819
99820 @@ -2271,5 +2297,11 @@ void __init setup_nr_node_ids(void);
99821 static inline void setup_nr_node_ids(void) {}
99822 #endif
99823
99824 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
99825 +extern void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot);
99826 +#else
99827 +static inline void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot) {}
99828 +#endif
99829 +
99830 #endif /* __KERNEL__ */
99831 #endif /* _LINUX_MM_H */
99832 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
99833 index 1554957..0973bc5 100644
99834 --- a/include/linux/mm_types.h
99835 +++ b/include/linux/mm_types.h
99836 @@ -322,7 +322,9 @@ struct vm_area_struct {
99837 #ifdef CONFIG_NUMA
99838 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
99839 #endif
99840 -};
99841 +
99842 + struct vm_area_struct *vm_mirror;/* PaX: mirror vma or NULL */
99843 +} __randomize_layout;
99844
99845 struct core_thread {
99846 struct task_struct *task;
99847 @@ -475,7 +477,25 @@ struct mm_struct {
99848 /* address of the bounds directory */
99849 void __user *bd_addr;
99850 #endif
99851 -};
99852 +
99853 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
99854 + unsigned long pax_flags;
99855 +#endif
99856 +
99857 +#ifdef CONFIG_PAX_DLRESOLVE
99858 + unsigned long call_dl_resolve;
99859 +#endif
99860 +
99861 +#if defined(CONFIG_PPC32) && defined(CONFIG_PAX_EMUSIGRT)
99862 + unsigned long call_syscall;
99863 +#endif
99864 +
99865 +#ifdef CONFIG_PAX_ASLR
99866 + unsigned long delta_mmap; /* randomized offset */
99867 + unsigned long delta_stack; /* randomized offset */
99868 +#endif
99869 +
99870 +} __randomize_layout;
99871
99872 static inline void mm_init_cpumask(struct mm_struct *mm)
99873 {
99874 diff --git a/include/linux/mmiotrace.h b/include/linux/mmiotrace.h
99875 index 3ba327a..85cd5ce 100644
99876 --- a/include/linux/mmiotrace.h
99877 +++ b/include/linux/mmiotrace.h
99878 @@ -46,7 +46,7 @@ extern int kmmio_handler(struct pt_regs *regs, unsigned long addr);
99879 /* Called from ioremap.c */
99880 extern void mmiotrace_ioremap(resource_size_t offset, unsigned long size,
99881 void __iomem *addr);
99882 -extern void mmiotrace_iounmap(volatile void __iomem *addr);
99883 +extern void mmiotrace_iounmap(const volatile void __iomem *addr);
99884
99885 /* For anyone to insert markers. Remember trailing newline. */
99886 extern __printf(1, 2) int mmiotrace_printk(const char *fmt, ...);
99887 @@ -66,7 +66,7 @@ static inline void mmiotrace_ioremap(resource_size_t offset,
99888 {
99889 }
99890
99891 -static inline void mmiotrace_iounmap(volatile void __iomem *addr)
99892 +static inline void mmiotrace_iounmap(const volatile void __iomem *addr)
99893 {
99894 }
99895
99896 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
99897 index 754c259..7b65ac6 100644
99898 --- a/include/linux/mmzone.h
99899 +++ b/include/linux/mmzone.h
99900 @@ -526,7 +526,7 @@ struct zone {
99901
99902 ZONE_PADDING(_pad3_)
99903 /* Zone statistics */
99904 - atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
99905 + atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
99906 } ____cacheline_internodealigned_in_smp;
99907
99908 enum zone_flags {
99909 diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
99910 index 34f25b7..0586069 100644
99911 --- a/include/linux/mod_devicetable.h
99912 +++ b/include/linux/mod_devicetable.h
99913 @@ -139,7 +139,7 @@ struct usb_device_id {
99914 #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200
99915 #define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400
99916
99917 -#define HID_ANY_ID (~0)
99918 +#define HID_ANY_ID (~0U)
99919 #define HID_BUS_ANY 0xffff
99920 #define HID_GROUP_ANY 0x0000
99921
99922 @@ -472,7 +472,7 @@ struct dmi_system_id {
99923 const char *ident;
99924 struct dmi_strmatch matches[4];
99925 void *driver_data;
99926 -};
99927 +} __do_const;
99928 /*
99929 * struct dmi_device_id appears during expansion of
99930 * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it
99931 diff --git a/include/linux/module.h b/include/linux/module.h
99932 index 3a19c79..dea8c47 100644
99933 --- a/include/linux/module.h
99934 +++ b/include/linux/module.h
99935 @@ -19,9 +19,11 @@
99936 #include <linux/jump_label.h>
99937 #include <linux/export.h>
99938 #include <linux/rbtree_latch.h>
99939 +#include <linux/fs.h>
99940
99941 #include <linux/percpu.h>
99942 #include <asm/module.h>
99943 +#include <asm/pgtable.h>
99944
99945 /* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */
99946 #define MODULE_SIG_STRING "~Module signature appended~\n"
99947 @@ -44,7 +46,7 @@ struct module_kobject {
99948 struct kobject *drivers_dir;
99949 struct module_param_attrs *mp;
99950 struct completion *kobj_completion;
99951 -};
99952 +} __randomize_layout;
99953
99954 struct module_attribute {
99955 struct attribute attr;
99956 @@ -56,12 +58,13 @@ struct module_attribute {
99957 int (*test)(struct module *);
99958 void (*free)(struct module *);
99959 };
99960 +typedef struct module_attribute __no_const module_attribute_no_const;
99961
99962 struct module_version_attribute {
99963 struct module_attribute mattr;
99964 const char *module_name;
99965 const char *version;
99966 -} __attribute__ ((__aligned__(sizeof(void *))));
99967 +} __do_const __attribute__ ((__aligned__(sizeof(void *))));
99968
99969 extern ssize_t __modver_version_show(struct module_attribute *,
99970 struct module_kobject *, char *);
99971 @@ -313,7 +316,7 @@ struct module {
99972
99973 /* Sysfs stuff. */
99974 struct module_kobject mkobj;
99975 - struct module_attribute *modinfo_attrs;
99976 + module_attribute_no_const *modinfo_attrs;
99977 const char *version;
99978 const char *srcversion;
99979 struct kobject *holders_dir;
99980 @@ -370,20 +373,21 @@ struct module {
99981 * If this is non-NULL, vfree() after init() returns.
99982 *
99983 * Cacheline align here, such that:
99984 - * module_init, module_core, init_size, core_size,
99985 + * module_init_*, module_core_*, init_size_*, core_size_*,
99986 * init_text_size, core_text_size and mtn_core::{mod,node[0]}
99987 * are on the same cacheline.
99988 */
99989 - void *module_init ____cacheline_aligned;
99990 + void *module_init_rw ____cacheline_aligned;
99991 + void *module_init_rx;
99992
99993 /* Here is the actual code + data, vfree'd on unload. */
99994 - void *module_core;
99995 + void *module_core_rx, *module_core_rw;
99996
99997 /* Here are the sizes of the init and core sections */
99998 - unsigned int init_size, core_size;
99999 + unsigned int init_size_rw, core_size_rw;
100000
100001 /* The size of the executable code in each section. */
100002 - unsigned int init_text_size, core_text_size;
100003 + unsigned int init_size_rx, core_size_rx;
100004
100005 #ifdef CONFIG_MODULES_TREE_LOOKUP
100006 /*
100007 @@ -391,13 +395,12 @@ struct module {
100008 * above entries such that a regular lookup will only touch one
100009 * cacheline.
100010 */
100011 - struct mod_tree_node mtn_core;
100012 - struct mod_tree_node mtn_init;
100013 + struct mod_tree_node mtn_core_rw;
100014 + struct mod_tree_node mtn_core_rx;
100015 + struct mod_tree_node mtn_init_rw;
100016 + struct mod_tree_node mtn_init_rx;
100017 #endif
100018
100019 - /* Size of RO sections of the module (text+rodata) */
100020 - unsigned int init_ro_size, core_ro_size;
100021 -
100022 /* Arch-specific module values */
100023 struct mod_arch_specific arch;
100024
100025 @@ -454,6 +457,10 @@ struct module {
100026 unsigned int num_trace_events;
100027 struct trace_enum_map **trace_enums;
100028 unsigned int num_trace_enums;
100029 + struct file_operations trace_id;
100030 + struct file_operations trace_enable;
100031 + struct file_operations trace_format;
100032 + struct file_operations trace_filter;
100033 #endif
100034 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
100035 unsigned int num_ftrace_callsites;
100036 @@ -481,7 +488,8 @@ struct module {
100037 ctor_fn_t *ctors;
100038 unsigned int num_ctors;
100039 #endif
100040 -} ____cacheline_aligned;
100041 +} ____cacheline_aligned __randomize_layout;
100042 +
100043 #ifndef MODULE_ARCH_INIT
100044 #define MODULE_ARCH_INIT {}
100045 #endif
100046 @@ -502,18 +510,48 @@ bool is_module_address(unsigned long addr);
100047 bool is_module_percpu_address(unsigned long addr);
100048 bool is_module_text_address(unsigned long addr);
100049
100050 +static inline int within_module_range(unsigned long addr, void *start, unsigned long size)
100051 +{
100052 +
100053 +#ifdef CONFIG_PAX_KERNEXEC
100054 + if (ktla_ktva(addr) >= (unsigned long)start &&
100055 + ktla_ktva(addr) < (unsigned long)start + size)
100056 + return 1;
100057 +#endif
100058 +
100059 + return ((void *)addr >= start && (void *)addr < start + size);
100060 +}
100061 +
100062 +static inline int within_module_core_rx(unsigned long addr, const struct module *mod)
100063 +{
100064 + return within_module_range(addr, mod->module_core_rx, mod->core_size_rx);
100065 +}
100066 +
100067 +static inline int within_module_core_rw(unsigned long addr, const struct module *mod)
100068 +{
100069 + return within_module_range(addr, mod->module_core_rw, mod->core_size_rw);
100070 +}
100071 +
100072 +static inline int within_module_init_rx(unsigned long addr, const struct module *mod)
100073 +{
100074 + return within_module_range(addr, mod->module_init_rx, mod->init_size_rx);
100075 +}
100076 +
100077 +static inline int within_module_init_rw(unsigned long addr, const struct module *mod)
100078 +{
100079 + return within_module_range(addr, mod->module_init_rw, mod->init_size_rw);
100080 +}
100081 +
100082 static inline bool within_module_core(unsigned long addr,
100083 const struct module *mod)
100084 {
100085 - return (unsigned long)mod->module_core <= addr &&
100086 - addr < (unsigned long)mod->module_core + mod->core_size;
100087 + return within_module_core_rx(addr, mod) || within_module_core_rw(addr, mod);
100088 }
100089
100090 static inline bool within_module_init(unsigned long addr,
100091 const struct module *mod)
100092 {
100093 - return (unsigned long)mod->module_init <= addr &&
100094 - addr < (unsigned long)mod->module_init + mod->init_size;
100095 + return within_module_init_rx(addr, mod) || within_module_init_rw(addr, mod);
100096 }
100097
100098 static inline bool within_module(unsigned long addr, const struct module *mod)
100099 diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
100100 index 4d0cb9b..3169ac7 100644
100101 --- a/include/linux/moduleloader.h
100102 +++ b/include/linux/moduleloader.h
100103 @@ -25,9 +25,21 @@ unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
100104 sections. Returns NULL on failure. */
100105 void *module_alloc(unsigned long size);
100106
100107 +#ifdef CONFIG_PAX_KERNEXEC
100108 +void *module_alloc_exec(unsigned long size);
100109 +#else
100110 +#define module_alloc_exec(x) module_alloc(x)
100111 +#endif
100112 +
100113 /* Free memory returned from module_alloc. */
100114 void module_memfree(void *module_region);
100115
100116 +#ifdef CONFIG_PAX_KERNEXEC
100117 +void module_memfree_exec(void *module_region);
100118 +#else
100119 +#define module_memfree_exec(x) module_memfree((x))
100120 +#endif
100121 +
100122 /*
100123 * Apply the given relocation to the (simplified) ELF. Return -error
100124 * or 0.
100125 @@ -45,8 +57,10 @@ static inline int apply_relocate(Elf_Shdr *sechdrs,
100126 unsigned int relsec,
100127 struct module *me)
100128 {
100129 +#ifdef CONFIG_MODULES
100130 printk(KERN_ERR "module %s: REL relocation unsupported\n",
100131 module_name(me));
100132 +#endif
100133 return -ENOEXEC;
100134 }
100135 #endif
100136 @@ -68,8 +82,10 @@ static inline int apply_relocate_add(Elf_Shdr *sechdrs,
100137 unsigned int relsec,
100138 struct module *me)
100139 {
100140 +#ifdef CONFIG_MODULES
100141 printk(KERN_ERR "module %s: REL relocation unsupported\n",
100142 module_name(me));
100143 +#endif
100144 return -ENOEXEC;
100145 }
100146 #endif
100147 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
100148 index c12f214..3ef907f 100644
100149 --- a/include/linux/moduleparam.h
100150 +++ b/include/linux/moduleparam.h
100151 @@ -289,7 +289,7 @@ static inline void kernel_param_unlock(struct module *mod)
100152 * @len is usually just sizeof(string).
100153 */
100154 #define module_param_string(name, string, len, perm) \
100155 - static const struct kparam_string __param_string_##name \
100156 + static const struct kparam_string __param_string_##name __used \
100157 = { len, string }; \
100158 __module_param_call(MODULE_PARAM_PREFIX, name, \
100159 &param_ops_string, \
100160 @@ -440,7 +440,7 @@ extern int param_set_bint(const char *val, const struct kernel_param *kp);
100161 */
100162 #define module_param_array_named(name, array, type, nump, perm) \
100163 param_check_##type(name, &(array)[0]); \
100164 - static const struct kparam_array __param_arr_##name \
100165 + static const struct kparam_array __param_arr_##name __used \
100166 = { .max = ARRAY_SIZE(array), .num = nump, \
100167 .ops = &param_ops_##type, \
100168 .elemsize = sizeof(array[0]), .elem = array }; \
100169 diff --git a/include/linux/mount.h b/include/linux/mount.h
100170 index f822c3c..958ca0a 100644
100171 --- a/include/linux/mount.h
100172 +++ b/include/linux/mount.h
100173 @@ -67,7 +67,7 @@ struct vfsmount {
100174 struct dentry *mnt_root; /* root of the mounted tree */
100175 struct super_block *mnt_sb; /* pointer to superblock */
100176 int mnt_flags;
100177 -};
100178 +} __randomize_layout;
100179
100180 struct file; /* forward dec */
100181 struct path;
100182 diff --git a/include/linux/net.h b/include/linux/net.h
100183 index 04aa068..8a24df5 100644
100184 --- a/include/linux/net.h
100185 +++ b/include/linux/net.h
100186 @@ -189,7 +189,7 @@ struct net_proto_family {
100187 int (*create)(struct net *net, struct socket *sock,
100188 int protocol, int kern);
100189 struct module *owner;
100190 -};
100191 +} __do_const;
100192
100193 struct iovec;
100194 struct kvec;
100195 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
100196 index e20979d..3c7827b 100644
100197 --- a/include/linux/netdevice.h
100198 +++ b/include/linux/netdevice.h
100199 @@ -1212,6 +1212,7 @@ struct net_device_ops {
100200 u32 maxrate);
100201 int (*ndo_get_iflink)(const struct net_device *dev);
100202 };
100203 +typedef struct net_device_ops __no_const net_device_ops_no_const;
100204
100205 /**
100206 * enum net_device_priv_flags - &struct net_device priv_flags
100207 @@ -1519,7 +1520,7 @@ struct net_device {
100208 unsigned long base_addr;
100209 int irq;
100210
100211 - atomic_t carrier_changes;
100212 + atomic_unchecked_t carrier_changes;
100213
100214 /*
100215 * Some hardware also needs these fields (state,dev_list,
100216 @@ -1558,8 +1559,8 @@ struct net_device {
100217
100218 struct net_device_stats stats;
100219
100220 - atomic_long_t rx_dropped;
100221 - atomic_long_t tx_dropped;
100222 + atomic_long_unchecked_t rx_dropped;
100223 + atomic_long_unchecked_t tx_dropped;
100224
100225 #ifdef CONFIG_WIRELESS_EXT
100226 const struct iw_handler_def * wireless_handlers;
100227 diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
100228 index 00050df..0bc7081 100644
100229 --- a/include/linux/netfilter.h
100230 +++ b/include/linux/netfilter.h
100231 @@ -115,7 +115,7 @@ struct nf_sockopt_ops {
100232 #endif
100233 /* Use the module struct to lock set/get code in place */
100234 struct module *owner;
100235 -};
100236 +} __do_const;
100237
100238 /* Function to register/unregister hook points. */
100239 int nf_register_hook(struct nf_hook_ops *reg);
100240 diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h
100241 index e955d47..04a5338 100644
100242 --- a/include/linux/netfilter/nfnetlink.h
100243 +++ b/include/linux/netfilter/nfnetlink.h
100244 @@ -19,7 +19,7 @@ struct nfnl_callback {
100245 const struct nlattr * const cda[]);
100246 const struct nla_policy *policy; /* netlink attribute policy */
100247 const u_int16_t attr_count; /* number of nlattr's */
100248 -};
100249 +} __do_const;
100250
100251 struct nfnetlink_subsystem {
100252 const char *name;
100253 diff --git a/include/linux/netfilter/xt_gradm.h b/include/linux/netfilter/xt_gradm.h
100254 new file mode 100644
100255 index 0000000..33f4af8
100256 --- /dev/null
100257 +++ b/include/linux/netfilter/xt_gradm.h
100258 @@ -0,0 +1,9 @@
100259 +#ifndef _LINUX_NETFILTER_XT_GRADM_H
100260 +#define _LINUX_NETFILTER_XT_GRADM_H 1
100261 +
100262 +struct xt_gradm_mtinfo {
100263 + __u16 flags;
100264 + __u16 invflags;
100265 +};
100266 +
100267 +#endif
100268 diff --git a/include/linux/nls.h b/include/linux/nls.h
100269 index 520681b..2b7fabb 100644
100270 --- a/include/linux/nls.h
100271 +++ b/include/linux/nls.h
100272 @@ -31,7 +31,7 @@ struct nls_table {
100273 const unsigned char *charset2upper;
100274 struct module *owner;
100275 struct nls_table *next;
100276 -};
100277 +} __do_const;
100278
100279 /* this value hold the maximum octet of charset */
100280 #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
100281 @@ -46,7 +46,7 @@ enum utf16_endian {
100282 /* nls_base.c */
100283 extern int __register_nls(struct nls_table *, struct module *);
100284 extern int unregister_nls(struct nls_table *);
100285 -extern struct nls_table *load_nls(char *);
100286 +extern struct nls_table *load_nls(const char *);
100287 extern void unload_nls(struct nls_table *);
100288 extern struct nls_table *load_nls_default(void);
100289 #define register_nls(nls) __register_nls((nls), THIS_MODULE)
100290 diff --git a/include/linux/notifier.h b/include/linux/notifier.h
100291 index d14a4c3..a078786 100644
100292 --- a/include/linux/notifier.h
100293 +++ b/include/linux/notifier.h
100294 @@ -54,7 +54,8 @@ struct notifier_block {
100295 notifier_fn_t notifier_call;
100296 struct notifier_block __rcu *next;
100297 int priority;
100298 -};
100299 +} __do_const;
100300 +typedef struct notifier_block __no_const notifier_block_no_const;
100301
100302 struct atomic_notifier_head {
100303 spinlock_t lock;
100304 diff --git a/include/linux/oprofile.h b/include/linux/oprofile.h
100305 index b2a0f15..4d7da32 100644
100306 --- a/include/linux/oprofile.h
100307 +++ b/include/linux/oprofile.h
100308 @@ -138,9 +138,9 @@ int oprofilefs_create_ulong(struct dentry * root,
100309 int oprofilefs_create_ro_ulong(struct dentry * root,
100310 char const * name, ulong * val);
100311
100312 -/** Create a file for read-only access to an atomic_t. */
100313 +/** Create a file for read-only access to an atomic_unchecked_t. */
100314 int oprofilefs_create_ro_atomic(struct dentry * root,
100315 - char const * name, atomic_t * val);
100316 + char const * name, atomic_unchecked_t * val);
100317
100318 /** create a directory */
100319 struct dentry *oprofilefs_mkdir(struct dentry *parent, char const *name);
100320 diff --git a/include/linux/padata.h b/include/linux/padata.h
100321 index 4386946..f50c615 100644
100322 --- a/include/linux/padata.h
100323 +++ b/include/linux/padata.h
100324 @@ -129,7 +129,7 @@ struct parallel_data {
100325 struct padata_serial_queue __percpu *squeue;
100326 atomic_t reorder_objects;
100327 atomic_t refcnt;
100328 - atomic_t seq_nr;
100329 + atomic_unchecked_t seq_nr;
100330 struct padata_cpumask cpumask;
100331 spinlock_t lock ____cacheline_aligned;
100332 unsigned int processed;
100333 diff --git a/include/linux/path.h b/include/linux/path.h
100334 index d137218..be0c176 100644
100335 --- a/include/linux/path.h
100336 +++ b/include/linux/path.h
100337 @@ -1,13 +1,15 @@
100338 #ifndef _LINUX_PATH_H
100339 #define _LINUX_PATH_H
100340
100341 +#include <linux/compiler.h>
100342 +
100343 struct dentry;
100344 struct vfsmount;
100345
100346 struct path {
100347 struct vfsmount *mnt;
100348 struct dentry *dentry;
100349 -};
100350 +} __randomize_layout;
100351
100352 extern void path_get(const struct path *);
100353 extern void path_put(const struct path *);
100354 diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h
100355 index 8c78950..0d74ed9 100644
100356 --- a/include/linux/pci_hotplug.h
100357 +++ b/include/linux/pci_hotplug.h
100358 @@ -71,7 +71,8 @@ struct hotplug_slot_ops {
100359 int (*get_latch_status) (struct hotplug_slot *slot, u8 *value);
100360 int (*get_adapter_status) (struct hotplug_slot *slot, u8 *value);
100361 int (*reset_slot) (struct hotplug_slot *slot, int probe);
100362 -};
100363 +} __do_const;
100364 +typedef struct hotplug_slot_ops __no_const hotplug_slot_ops_no_const;
100365
100366 /**
100367 * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot
100368 diff --git a/include/linux/percpu.h b/include/linux/percpu.h
100369 index caebf2a..4c3ae9d 100644
100370 --- a/include/linux/percpu.h
100371 +++ b/include/linux/percpu.h
100372 @@ -34,7 +34,7 @@
100373 * preallocate for this. Keep PERCPU_DYNAMIC_RESERVE equal to or
100374 * larger than PERCPU_DYNAMIC_EARLY_SIZE.
100375 */
100376 -#define PERCPU_DYNAMIC_EARLY_SLOTS 128
100377 +#define PERCPU_DYNAMIC_EARLY_SLOTS 256
100378 #define PERCPU_DYNAMIC_EARLY_SIZE (12 << 10)
100379
100380 /*
100381 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
100382 index 2027809..c9cd38e 100644
100383 --- a/include/linux/perf_event.h
100384 +++ b/include/linux/perf_event.h
100385 @@ -384,8 +384,8 @@ struct perf_event {
100386
100387 enum perf_event_active_state state;
100388 unsigned int attach_state;
100389 - local64_t count;
100390 - atomic64_t child_count;
100391 + local64_t count; /* PaX: fix it one day */
100392 + atomic64_unchecked_t child_count;
100393
100394 /*
100395 * These are the total time in nanoseconds that the event
100396 @@ -436,8 +436,8 @@ struct perf_event {
100397 * These accumulate total time (in nanoseconds) that children
100398 * events have been enabled and running, respectively.
100399 */
100400 - atomic64_t child_total_time_enabled;
100401 - atomic64_t child_total_time_running;
100402 + atomic64_unchecked_t child_total_time_enabled;
100403 + atomic64_unchecked_t child_total_time_running;
100404
100405 /*
100406 * Protect attach/detach and child_list:
100407 @@ -859,7 +859,7 @@ static inline void perf_event_task_sched_out(struct task_struct *prev,
100408
100409 static inline u64 __perf_event_count(struct perf_event *event)
100410 {
100411 - return local64_read(&event->count) + atomic64_read(&event->child_count);
100412 + return local64_read(&event->count) + atomic64_read_unchecked(&event->child_count);
100413 }
100414
100415 extern void perf_event_mmap(struct vm_area_struct *vma);
100416 @@ -883,7 +883,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
100417 entry->ip[entry->nr++] = ip;
100418 }
100419
100420 -extern int sysctl_perf_event_paranoid;
100421 +extern int sysctl_perf_event_legitimately_concerned;
100422 extern int sysctl_perf_event_mlock;
100423 extern int sysctl_perf_event_sample_rate;
100424 extern int sysctl_perf_cpu_time_max_percent;
100425 @@ -898,19 +898,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
100426 loff_t *ppos);
100427
100428
100429 +static inline bool perf_paranoid_any(void)
100430 +{
100431 + return sysctl_perf_event_legitimately_concerned > 2;
100432 +}
100433 +
100434 static inline bool perf_paranoid_tracepoint_raw(void)
100435 {
100436 - return sysctl_perf_event_paranoid > -1;
100437 + return sysctl_perf_event_legitimately_concerned > -1;
100438 }
100439
100440 static inline bool perf_paranoid_cpu(void)
100441 {
100442 - return sysctl_perf_event_paranoid > 0;
100443 + return sysctl_perf_event_legitimately_concerned > 0;
100444 }
100445
100446 static inline bool perf_paranoid_kernel(void)
100447 {
100448 - return sysctl_perf_event_paranoid > 1;
100449 + return sysctl_perf_event_legitimately_concerned > 1;
100450 }
100451
100452 extern void perf_event_init(void);
100453 @@ -1066,7 +1071,7 @@ struct perf_pmu_events_attr {
100454 struct device_attribute attr;
100455 u64 id;
100456 const char *event_str;
100457 -};
100458 +} __do_const;
100459
100460 ssize_t perf_event_sysfs_show(struct device *dev, struct device_attribute *attr,
100461 char *page);
100462 diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h
100463 index 918b117..7af374b7 100644
100464 --- a/include/linux/pid_namespace.h
100465 +++ b/include/linux/pid_namespace.h
100466 @@ -45,7 +45,7 @@ struct pid_namespace {
100467 int hide_pid;
100468 int reboot; /* group exit code if this pidns was rebooted */
100469 struct ns_common ns;
100470 -};
100471 +} __randomize_layout;
100472
100473 extern struct pid_namespace init_pid_ns;
100474
100475 diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
100476 index eb8b8ac..62649e1 100644
100477 --- a/include/linux/pipe_fs_i.h
100478 +++ b/include/linux/pipe_fs_i.h
100479 @@ -47,10 +47,10 @@ struct pipe_inode_info {
100480 struct mutex mutex;
100481 wait_queue_head_t wait;
100482 unsigned int nrbufs, curbuf, buffers;
100483 - unsigned int readers;
100484 - unsigned int writers;
100485 - unsigned int files;
100486 - unsigned int waiting_writers;
100487 + atomic_t readers;
100488 + atomic_t writers;
100489 + atomic_t files;
100490 + atomic_t waiting_writers;
100491 unsigned int r_counter;
100492 unsigned int w_counter;
100493 struct page *tmp_page;
100494 diff --git a/include/linux/pm.h b/include/linux/pm.h
100495 index 35d599e..c604209 100644
100496 --- a/include/linux/pm.h
100497 +++ b/include/linux/pm.h
100498 @@ -630,6 +630,7 @@ struct dev_pm_domain {
100499 void (*sync)(struct device *dev);
100500 void (*dismiss)(struct device *dev);
100501 };
100502 +typedef struct dev_pm_domain __no_const dev_pm_domain_no_const;
100503
100504 /*
100505 * The PM_EVENT_ messages are also used by drivers implementing the legacy
100506 diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
100507 index 681ccb0..a90e0b7 100644
100508 --- a/include/linux/pm_domain.h
100509 +++ b/include/linux/pm_domain.h
100510 @@ -39,11 +39,11 @@ struct gpd_dev_ops {
100511 int (*save_state)(struct device *dev);
100512 int (*restore_state)(struct device *dev);
100513 bool (*active_wakeup)(struct device *dev);
100514 -};
100515 +} __no_const;
100516
100517 struct gpd_cpuidle_data {
100518 unsigned int saved_exit_latency;
100519 - struct cpuidle_state *idle_state;
100520 + cpuidle_state_no_const *idle_state;
100521 };
100522
100523 struct generic_pm_domain {
100524 diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
100525 index 30e84d4..22278b4 100644
100526 --- a/include/linux/pm_runtime.h
100527 +++ b/include/linux/pm_runtime.h
100528 @@ -115,7 +115,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
100529
100530 static inline void pm_runtime_mark_last_busy(struct device *dev)
100531 {
100532 - ACCESS_ONCE(dev->power.last_busy) = jiffies;
100533 + ACCESS_ONCE_RW(dev->power.last_busy) = jiffies;
100534 }
100535
100536 static inline bool pm_runtime_is_irq_safe(struct device *dev)
100537 diff --git a/include/linux/pnp.h b/include/linux/pnp.h
100538 index 5df733b..d55f252 100644
100539 --- a/include/linux/pnp.h
100540 +++ b/include/linux/pnp.h
100541 @@ -298,7 +298,7 @@ static inline void pnp_set_drvdata(struct pnp_dev *pdev, void *data)
100542 struct pnp_fixup {
100543 char id[7];
100544 void (*quirk_function) (struct pnp_dev * dev); /* fixup function */
100545 -};
100546 +} __do_const;
100547
100548 /* config parameters */
100549 #define PNP_CONFIG_NORMAL 0x0001
100550 diff --git a/include/linux/poison.h b/include/linux/poison.h
100551 index 2110a81..13a11bb 100644
100552 --- a/include/linux/poison.h
100553 +++ b/include/linux/poison.h
100554 @@ -19,8 +19,8 @@
100555 * under normal circumstances, used to verify that nobody uses
100556 * non-initialized list entries.
100557 */
100558 -#define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA)
100559 -#define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA)
100560 +#define LIST_POISON1 ((void *) (long)0xFFFFFF01)
100561 +#define LIST_POISON2 ((void *) (long)0xFFFFFF02)
100562
100563 /********** include/linux/timer.h **********/
100564 /*
100565 diff --git a/include/linux/power/smartreflex.h b/include/linux/power/smartreflex.h
100566 index d8b187c3..9a9257a 100644
100567 --- a/include/linux/power/smartreflex.h
100568 +++ b/include/linux/power/smartreflex.h
100569 @@ -238,7 +238,7 @@ struct omap_sr_class_data {
100570 int (*notify)(struct omap_sr *sr, u32 status);
100571 u8 notify_flags;
100572 u8 class_type;
100573 -};
100574 +} __do_const;
100575
100576 /**
100577 * struct omap_sr_nvalue_table - Smartreflex n-target value info
100578 diff --git a/include/linux/ppp-comp.h b/include/linux/ppp-comp.h
100579 index 4ea1d37..80f4b33 100644
100580 --- a/include/linux/ppp-comp.h
100581 +++ b/include/linux/ppp-comp.h
100582 @@ -84,7 +84,7 @@ struct compressor {
100583 struct module *owner;
100584 /* Extra skb space needed by the compressor algorithm */
100585 unsigned int comp_extra;
100586 -};
100587 +} __do_const;
100588
100589 /*
100590 * The return value from decompress routine is the length of the
100591 diff --git a/include/linux/preempt.h b/include/linux/preempt.h
100592 index 84991f1..6f23603 100644
100593 --- a/include/linux/preempt.h
100594 +++ b/include/linux/preempt.h
100595 @@ -131,11 +131,16 @@ extern void preempt_count_sub(int val);
100596 #define preempt_count_dec_and_test() __preempt_count_dec_and_test()
100597 #endif
100598
100599 +#define raw_preempt_count_add(val) __preempt_count_add(val)
100600 +#define raw_preempt_count_sub(val) __preempt_count_sub(val)
100601 +
100602 #define __preempt_count_inc() __preempt_count_add(1)
100603 #define __preempt_count_dec() __preempt_count_sub(1)
100604
100605 #define preempt_count_inc() preempt_count_add(1)
100606 +#define raw_preempt_count_inc() raw_preempt_count_add(1)
100607 #define preempt_count_dec() preempt_count_sub(1)
100608 +#define raw_preempt_count_dec() raw_preempt_count_sub(1)
100609
100610 #define preempt_active_enter() \
100611 do { \
100612 @@ -157,6 +162,12 @@ do { \
100613 barrier(); \
100614 } while (0)
100615
100616 +#define raw_preempt_disable() \
100617 +do { \
100618 + raw_preempt_count_inc(); \
100619 + barrier(); \
100620 +} while (0)
100621 +
100622 #define sched_preempt_enable_no_resched() \
100623 do { \
100624 barrier(); \
100625 @@ -165,6 +176,12 @@ do { \
100626
100627 #define preempt_enable_no_resched() sched_preempt_enable_no_resched()
100628
100629 +#define raw_preempt_enable_no_resched() \
100630 +do { \
100631 + barrier(); \
100632 + raw_preempt_count_dec(); \
100633 +} while (0)
100634 +
100635 #define preemptible() (preempt_count() == 0 && !irqs_disabled())
100636
100637 #ifdef CONFIG_PREEMPT
100638 @@ -225,8 +242,10 @@ do { \
100639 * region.
100640 */
100641 #define preempt_disable() barrier()
100642 +#define raw_preempt_disable() barrier()
100643 #define sched_preempt_enable_no_resched() barrier()
100644 #define preempt_enable_no_resched() barrier()
100645 +#define raw_preempt_enable_no_resched() barrier()
100646 #define preempt_enable() barrier()
100647 #define preempt_check_resched() do { } while (0)
100648
100649 @@ -241,11 +260,13 @@ do { \
100650 /*
100651 * Modules have no business playing preemption tricks.
100652 */
100653 +#ifndef CONFIG_PAX_KERNEXEC
100654 #undef sched_preempt_enable_no_resched
100655 #undef preempt_enable_no_resched
100656 #undef preempt_enable_no_resched_notrace
100657 #undef preempt_check_resched
100658 #endif
100659 +#endif
100660
100661 #define preempt_set_need_resched() \
100662 do { \
100663 diff --git a/include/linux/printk.h b/include/linux/printk.h
100664 index a6298b2..57fe982 100644
100665 --- a/include/linux/printk.h
100666 +++ b/include/linux/printk.h
100667 @@ -123,6 +123,7 @@ void early_printk(const char *s, ...) { }
100668 #endif
100669
100670 typedef __printf(1, 0) int (*printk_func_t)(const char *fmt, va_list args);
100671 +extern int kptr_restrict;
100672
100673 #ifdef CONFIG_PRINTK
100674 asmlinkage __printf(5, 0)
100675 @@ -158,7 +159,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
100676
100677 extern int printk_delay_msec;
100678 extern int dmesg_restrict;
100679 -extern int kptr_restrict;
100680
100681 extern void wake_up_klogd(void);
100682
100683 diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
100684 index b97bf2e..f14c92d4 100644
100685 --- a/include/linux/proc_fs.h
100686 +++ b/include/linux/proc_fs.h
100687 @@ -17,8 +17,11 @@ extern void proc_flush_task(struct task_struct *);
100688 extern struct proc_dir_entry *proc_symlink(const char *,
100689 struct proc_dir_entry *, const char *);
100690 extern struct proc_dir_entry *proc_mkdir(const char *, struct proc_dir_entry *);
100691 +extern struct proc_dir_entry *proc_mkdir_restrict(const char *, struct proc_dir_entry *);
100692 extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t,
100693 struct proc_dir_entry *, void *);
100694 +extern struct proc_dir_entry *proc_mkdir_data_restrict(const char *, umode_t,
100695 + struct proc_dir_entry *, void *);
100696 extern struct proc_dir_entry *proc_mkdir_mode(const char *, umode_t,
100697 struct proc_dir_entry *);
100698
100699 @@ -34,6 +37,19 @@ static inline struct proc_dir_entry *proc_create(
100700 return proc_create_data(name, mode, parent, proc_fops, NULL);
100701 }
100702
100703 +static inline struct proc_dir_entry *proc_create_grsec(const char *name, umode_t mode,
100704 + struct proc_dir_entry *parent, const struct file_operations *proc_fops)
100705 +{
100706 +#ifdef CONFIG_GRKERNSEC_PROC_USER
100707 + return proc_create_data(name, S_IRUSR, parent, proc_fops, NULL);
100708 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
100709 + return proc_create_data(name, S_IRUSR | S_IRGRP, parent, proc_fops, NULL);
100710 +#else
100711 + return proc_create_data(name, mode, parent, proc_fops, NULL);
100712 +#endif
100713 +}
100714 +
100715 +
100716 extern void proc_set_size(struct proc_dir_entry *, loff_t);
100717 extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);
100718 extern void *PDE_DATA(const struct inode *);
100719 @@ -56,8 +72,12 @@ static inline struct proc_dir_entry *proc_symlink(const char *name,
100720 struct proc_dir_entry *parent,const char *dest) { return NULL;}
100721 static inline struct proc_dir_entry *proc_mkdir(const char *name,
100722 struct proc_dir_entry *parent) {return NULL;}
100723 +static inline struct proc_dir_entry *proc_mkdir_restrict(const char *name,
100724 + struct proc_dir_entry *parent) { return NULL; }
100725 static inline struct proc_dir_entry *proc_mkdir_data(const char *name,
100726 umode_t mode, struct proc_dir_entry *parent, void *data) { return NULL; }
100727 +static inline struct proc_dir_entry *proc_mkdir_data_restrict(const char *name,
100728 + umode_t mode, struct proc_dir_entry *parent, void *data) { return NULL; }
100729 static inline struct proc_dir_entry *proc_mkdir_mode(const char *name,
100730 umode_t mode, struct proc_dir_entry *parent) { return NULL; }
100731 #define proc_create(name, mode, parent, proc_fops) ({NULL;})
100732 @@ -79,7 +99,7 @@ struct net;
100733 static inline struct proc_dir_entry *proc_net_mkdir(
100734 struct net *net, const char *name, struct proc_dir_entry *parent)
100735 {
100736 - return proc_mkdir_data(name, 0, parent, net);
100737 + return proc_mkdir_data_restrict(name, 0, parent, net);
100738 }
100739
100740 #endif /* _LINUX_PROC_FS_H */
100741 diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h
100742 index 42dfc61..8113a99 100644
100743 --- a/include/linux/proc_ns.h
100744 +++ b/include/linux/proc_ns.h
100745 @@ -16,7 +16,7 @@ struct proc_ns_operations {
100746 struct ns_common *(*get)(struct task_struct *task);
100747 void (*put)(struct ns_common *ns);
100748 int (*install)(struct nsproxy *nsproxy, struct ns_common *ns);
100749 -};
100750 +} __do_const __randomize_layout;
100751
100752 extern const struct proc_ns_operations netns_operations;
100753 extern const struct proc_ns_operations utsns_operations;
100754 diff --git a/include/linux/quota.h b/include/linux/quota.h
100755 index b2505ac..5f7ab55 100644
100756 --- a/include/linux/quota.h
100757 +++ b/include/linux/quota.h
100758 @@ -76,7 +76,7 @@ struct kqid { /* Type in which we store the quota identifier */
100759
100760 extern bool qid_eq(struct kqid left, struct kqid right);
100761 extern bool qid_lt(struct kqid left, struct kqid right);
100762 -extern qid_t from_kqid(struct user_namespace *to, struct kqid qid);
100763 +extern qid_t from_kqid(struct user_namespace *to, struct kqid qid) __intentional_overflow(-1);
100764 extern qid_t from_kqid_munged(struct user_namespace *to, struct kqid qid);
100765 extern bool qid_valid(struct kqid qid);
100766
100767 diff --git a/include/linux/random.h b/include/linux/random.h
100768 index e651874..8ab1592 100644
100769 --- a/include/linux/random.h
100770 +++ b/include/linux/random.h
100771 @@ -16,9 +16,19 @@ struct random_ready_callback {
100772 };
100773
100774 extern void add_device_randomness(const void *, unsigned int);
100775 +
100776 +static inline void add_latent_entropy(void)
100777 +{
100778 +
100779 +#ifdef LATENT_ENTROPY_PLUGIN
100780 + add_device_randomness((const void *)&latent_entropy, sizeof(latent_entropy));
100781 +#endif
100782 +
100783 +}
100784 +
100785 extern void add_input_randomness(unsigned int type, unsigned int code,
100786 - unsigned int value);
100787 -extern void add_interrupt_randomness(int irq, int irq_flags);
100788 + unsigned int value) __latent_entropy;
100789 +extern void add_interrupt_randomness(int irq, int irq_flags) __latent_entropy;
100790
100791 extern void get_random_bytes(void *buf, int nbytes);
100792 extern int add_random_ready_callback(struct random_ready_callback *rdy);
100793 @@ -31,10 +41,10 @@ extern int random_int_secret_init(void);
100794 extern const struct file_operations random_fops, urandom_fops;
100795 #endif
100796
100797 -unsigned int get_random_int(void);
100798 +unsigned int __intentional_overflow(-1) get_random_int(void);
100799 unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len);
100800
100801 -u32 prandom_u32(void);
100802 +u32 prandom_u32(void) __intentional_overflow(-1);
100803 void prandom_bytes(void *buf, size_t nbytes);
100804 void prandom_seed(u32 seed);
100805 void prandom_reseed_late(void);
100806 @@ -46,6 +56,11 @@ struct rnd_state {
100807 u32 prandom_u32_state(struct rnd_state *state);
100808 void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
100809
100810 +static inline unsigned long __intentional_overflow(-1) pax_get_random_long(void)
100811 +{
100812 + return prandom_u32() + (sizeof(long) > 4 ? (unsigned long)prandom_u32() << 32 : 0);
100813 +}
100814 +
100815 /**
100816 * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro)
100817 * @ep_ro: right open interval endpoint
100818 @@ -58,7 +73,7 @@ void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
100819 *
100820 * Returns: pseudo-random number in interval [0, ep_ro)
100821 */
100822 -static inline u32 prandom_u32_max(u32 ep_ro)
100823 +static inline u32 __intentional_overflow(-1) prandom_u32_max(u32 ep_ro)
100824 {
100825 return (u32)(((u64) prandom_u32() * ep_ro) >> 32);
100826 }
100827 diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h
100828 index 14d7b83..a1edf56 100644
100829 --- a/include/linux/rbtree_augmented.h
100830 +++ b/include/linux/rbtree_augmented.h
100831 @@ -90,7 +90,9 @@ rbname ## _rotate(struct rb_node *rb_old, struct rb_node *rb_new) \
100832 old->rbaugmented = rbcompute(old); \
100833 } \
100834 rbstatic const struct rb_augment_callbacks rbname = { \
100835 - rbname ## _propagate, rbname ## _copy, rbname ## _rotate \
100836 + .propagate = rbname ## _propagate, \
100837 + .copy = rbname ## _copy, \
100838 + .rotate = rbname ## _rotate \
100839 };
100840
100841
100842 diff --git a/include/linux/rculist.h b/include/linux/rculist.h
100843 index 17c6b1f..a65e3f8 100644
100844 --- a/include/linux/rculist.h
100845 +++ b/include/linux/rculist.h
100846 @@ -59,6 +59,9 @@ void __list_add_rcu(struct list_head *new,
100847 struct list_head *prev, struct list_head *next);
100848 #endif
100849
100850 +void __pax_list_add_rcu(struct list_head *new,
100851 + struct list_head *prev, struct list_head *next);
100852 +
100853 /**
100854 * list_add_rcu - add a new entry to rcu-protected list
100855 * @new: new entry to be added
100856 @@ -80,6 +83,11 @@ static inline void list_add_rcu(struct list_head *new, struct list_head *head)
100857 __list_add_rcu(new, head, head->next);
100858 }
100859
100860 +static inline void pax_list_add_rcu(struct list_head *new, struct list_head *head)
100861 +{
100862 + __pax_list_add_rcu(new, head, head->next);
100863 +}
100864 +
100865 /**
100866 * list_add_tail_rcu - add a new entry to rcu-protected list
100867 * @new: new entry to be added
100868 @@ -102,6 +110,12 @@ static inline void list_add_tail_rcu(struct list_head *new,
100869 __list_add_rcu(new, head->prev, head);
100870 }
100871
100872 +static inline void pax_list_add_tail_rcu(struct list_head *new,
100873 + struct list_head *head)
100874 +{
100875 + __pax_list_add_rcu(new, head->prev, head);
100876 +}
100877 +
100878 /**
100879 * list_del_rcu - deletes entry from list without re-initialization
100880 * @entry: the element to delete from the list.
100881 @@ -132,6 +146,8 @@ static inline void list_del_rcu(struct list_head *entry)
100882 entry->prev = LIST_POISON2;
100883 }
100884
100885 +extern void pax_list_del_rcu(struct list_head *entry);
100886 +
100887 /**
100888 * hlist_del_init_rcu - deletes entry from hash list with re-initialization
100889 * @n: the element to delete from the hash list.
100890 diff --git a/include/linux/reboot.h b/include/linux/reboot.h
100891 index a7ff409..03e2fa8 100644
100892 --- a/include/linux/reboot.h
100893 +++ b/include/linux/reboot.h
100894 @@ -47,9 +47,9 @@ extern void do_kernel_restart(char *cmd);
100895 */
100896
100897 extern void migrate_to_reboot_cpu(void);
100898 -extern void machine_restart(char *cmd);
100899 -extern void machine_halt(void);
100900 -extern void machine_power_off(void);
100901 +extern void machine_restart(char *cmd) __noreturn;
100902 +extern void machine_halt(void) __noreturn;
100903 +extern void machine_power_off(void) __noreturn;
100904
100905 extern void machine_shutdown(void);
100906 struct pt_regs;
100907 @@ -60,9 +60,9 @@ extern void machine_crash_shutdown(struct pt_regs *);
100908 */
100909
100910 extern void kernel_restart_prepare(char *cmd);
100911 -extern void kernel_restart(char *cmd);
100912 -extern void kernel_halt(void);
100913 -extern void kernel_power_off(void);
100914 +extern void kernel_restart(char *cmd) __noreturn;
100915 +extern void kernel_halt(void) __noreturn;
100916 +extern void kernel_power_off(void) __noreturn;
100917
100918 extern int C_A_D; /* for sysctl */
100919 void ctrl_alt_del(void);
100920 @@ -77,7 +77,7 @@ extern void orderly_reboot(void);
100921 * Emergency restart, callable from an interrupt handler.
100922 */
100923
100924 -extern void emergency_restart(void);
100925 +extern void emergency_restart(void) __noreturn;
100926 #include <asm/emergency-restart.h>
100927
100928 #endif /* _LINUX_REBOOT_H */
100929 diff --git a/include/linux/regset.h b/include/linux/regset.h
100930 index 8e0c9fe..ac4d221 100644
100931 --- a/include/linux/regset.h
100932 +++ b/include/linux/regset.h
100933 @@ -161,7 +161,8 @@ struct user_regset {
100934 unsigned int align;
100935 unsigned int bias;
100936 unsigned int core_note_type;
100937 -};
100938 +} __do_const;
100939 +typedef struct user_regset __no_const user_regset_no_const;
100940
100941 /**
100942 * struct user_regset_view - available regsets
100943 diff --git a/include/linux/relay.h b/include/linux/relay.h
100944 index d7c8359..818daf5 100644
100945 --- a/include/linux/relay.h
100946 +++ b/include/linux/relay.h
100947 @@ -157,7 +157,7 @@ struct rchan_callbacks
100948 * The callback should return 0 if successful, negative if not.
100949 */
100950 int (*remove_buf_file)(struct dentry *dentry);
100951 -};
100952 +} __no_const;
100953
100954 /*
100955 * CONFIG_RELAY kernel API, kernel/relay.c
100956 diff --git a/include/linux/rio.h b/include/linux/rio.h
100957 index cde976e..ebd6033 100644
100958 --- a/include/linux/rio.h
100959 +++ b/include/linux/rio.h
100960 @@ -358,7 +358,7 @@ struct rio_ops {
100961 int (*map_inb)(struct rio_mport *mport, dma_addr_t lstart,
100962 u64 rstart, u32 size, u32 flags);
100963 void (*unmap_inb)(struct rio_mport *mport, dma_addr_t lstart);
100964 -};
100965 +} __no_const;
100966
100967 #define RIO_RESOURCE_MEM 0x00000100
100968 #define RIO_RESOURCE_DOORBELL 0x00000200
100969 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
100970 index c89c53a..aa0a65a 100644
100971 --- a/include/linux/rmap.h
100972 +++ b/include/linux/rmap.h
100973 @@ -146,8 +146,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
100974 void anon_vma_init(void); /* create anon_vma_cachep */
100975 int anon_vma_prepare(struct vm_area_struct *);
100976 void unlink_anon_vmas(struct vm_area_struct *);
100977 -int anon_vma_clone(struct vm_area_struct *, struct vm_area_struct *);
100978 -int anon_vma_fork(struct vm_area_struct *, struct vm_area_struct *);
100979 +int anon_vma_clone(struct vm_area_struct *, const struct vm_area_struct *);
100980 +int anon_vma_fork(struct vm_area_struct *, const struct vm_area_struct *);
100981
100982 static inline void anon_vma_merge(struct vm_area_struct *vma,
100983 struct vm_area_struct *next)
100984 diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
100985 index 9b1ef0c..9fa3feb 100644
100986 --- a/include/linux/scatterlist.h
100987 +++ b/include/linux/scatterlist.h
100988 @@ -1,6 +1,7 @@
100989 #ifndef _LINUX_SCATTERLIST_H
100990 #define _LINUX_SCATTERLIST_H
100991
100992 +#include <linux/sched.h>
100993 #include <linux/string.h>
100994 #include <linux/types.h>
100995 #include <linux/bug.h>
100996 @@ -136,10 +137,17 @@ static inline struct page *sg_page(struct scatterlist *sg)
100997 static inline void sg_set_buf(struct scatterlist *sg, const void *buf,
100998 unsigned int buflen)
100999 {
101000 + const void *realbuf = buf;
101001 +
101002 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
101003 + if (object_starts_on_stack(buf))
101004 + realbuf = buf - current->stack + current->lowmem_stack;
101005 +#endif
101006 +
101007 #ifdef CONFIG_DEBUG_SG
101008 - BUG_ON(!virt_addr_valid(buf));
101009 + BUG_ON(!virt_addr_valid(realbuf));
101010 #endif
101011 - sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf));
101012 + sg_set_page(sg, virt_to_page(realbuf), buflen, offset_in_page(realbuf));
101013 }
101014
101015 /*
101016 diff --git a/include/linux/sched.h b/include/linux/sched.h
101017 index 04b5ada..9a2d1d0 100644
101018 --- a/include/linux/sched.h
101019 +++ b/include/linux/sched.h
101020 @@ -7,7 +7,7 @@
101021
101022
101023 struct sched_param {
101024 - int sched_priority;
101025 + unsigned int sched_priority;
101026 };
101027
101028 #include <asm/param.h> /* for HZ */
101029 @@ -134,6 +134,7 @@ struct perf_event_context;
101030 struct blk_plug;
101031 struct filename;
101032 struct nameidata;
101033 +struct linux_binprm;
101034
101035 #define VMACACHE_BITS 2
101036 #define VMACACHE_SIZE (1U << VMACACHE_BITS)
101037 @@ -418,7 +419,7 @@ extern char __sched_text_start[], __sched_text_end[];
101038 extern int in_sched_functions(unsigned long addr);
101039
101040 #define MAX_SCHEDULE_TIMEOUT LONG_MAX
101041 -extern signed long schedule_timeout(signed long timeout);
101042 +extern signed long schedule_timeout(signed long timeout) __intentional_overflow(-1);
101043 extern signed long schedule_timeout_interruptible(signed long timeout);
101044 extern signed long schedule_timeout_killable(signed long timeout);
101045 extern signed long schedule_timeout_uninterruptible(signed long timeout);
101046 @@ -436,6 +437,19 @@ struct nsproxy;
101047 struct user_namespace;
101048
101049 #ifdef CONFIG_MMU
101050 +
101051 +#ifdef CONFIG_GRKERNSEC_RAND_THREADSTACK
101052 +extern unsigned long gr_rand_threadstack_offset(const struct mm_struct *mm, const struct file *filp, unsigned long flags);
101053 +#else
101054 +static inline unsigned long gr_rand_threadstack_offset(const struct mm_struct *mm, const struct file *filp, unsigned long flags)
101055 +{
101056 + return 0;
101057 +}
101058 +#endif
101059 +
101060 +extern bool check_heap_stack_gap(const struct vm_area_struct *vma, unsigned long addr, unsigned long len, unsigned long offset);
101061 +extern unsigned long skip_heap_stack_gap(const struct vm_area_struct *vma, unsigned long len, unsigned long offset);
101062 +
101063 extern void arch_pick_mmap_layout(struct mm_struct *mm);
101064 extern unsigned long
101065 arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
101066 @@ -749,6 +763,17 @@ struct signal_struct {
101067 #ifdef CONFIG_TASKSTATS
101068 struct taskstats *stats;
101069 #endif
101070 +
101071 +#ifdef CONFIG_GRKERNSEC
101072 + u32 curr_ip;
101073 + u32 saved_ip;
101074 + u32 gr_saddr;
101075 + u32 gr_daddr;
101076 + u16 gr_sport;
101077 + u16 gr_dport;
101078 + u8 used_accept:1;
101079 +#endif
101080 +
101081 #ifdef CONFIG_AUDIT
101082 unsigned audit_tty;
101083 unsigned audit_tty_log_passwd;
101084 @@ -763,7 +788,7 @@ struct signal_struct {
101085 struct mutex cred_guard_mutex; /* guard against foreign influences on
101086 * credential calculations
101087 * (notably. ptrace) */
101088 -};
101089 +} __randomize_layout;
101090
101091 /*
101092 * Bits in flags field of signal_struct.
101093 @@ -816,6 +841,14 @@ struct user_struct {
101094 struct key *session_keyring; /* UID's default session keyring */
101095 #endif
101096
101097 +#ifdef CONFIG_GRKERNSEC_KERN_LOCKOUT
101098 + unsigned char kernel_banned;
101099 +#endif
101100 +#ifdef CONFIG_GRKERNSEC_BRUTE
101101 + unsigned char suid_banned;
101102 + unsigned long suid_ban_expires;
101103 +#endif
101104 +
101105 /* Hash table maintenance information */
101106 struct hlist_node uidhash_node;
101107 kuid_t uid;
101108 @@ -823,7 +856,7 @@ struct user_struct {
101109 #ifdef CONFIG_PERF_EVENTS
101110 atomic_long_t locked_vm;
101111 #endif
101112 -};
101113 +} __randomize_layout;
101114
101115 extern int uids_sysfs_init(void);
101116
101117 @@ -1344,6 +1377,9 @@ enum perf_event_task_context {
101118 struct task_struct {
101119 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
101120 void *stack;
101121 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
101122 + void *lowmem_stack;
101123 +#endif
101124 atomic_t usage;
101125 unsigned int flags; /* per process flags, defined below */
101126 unsigned int ptrace;
101127 @@ -1476,8 +1512,8 @@ struct task_struct {
101128 struct list_head thread_node;
101129
101130 struct completion *vfork_done; /* for vfork() */
101131 - int __user *set_child_tid; /* CLONE_CHILD_SETTID */
101132 - int __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */
101133 + pid_t __user *set_child_tid; /* CLONE_CHILD_SETTID */
101134 + pid_t __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */
101135
101136 cputime_t utime, stime, utimescaled, stimescaled;
101137 cputime_t gtime;
101138 @@ -1502,11 +1538,6 @@ struct task_struct {
101139 struct task_cputime cputime_expires;
101140 struct list_head cpu_timers[3];
101141
101142 -/* process credentials */
101143 - const struct cred __rcu *real_cred; /* objective and real subjective task
101144 - * credentials (COW) */
101145 - const struct cred __rcu *cred; /* effective (overridable) subjective task
101146 - * credentials (COW) */
101147 char comm[TASK_COMM_LEN]; /* executable name excluding path
101148 - access with [gs]et_task_comm (which lock
101149 it with task_lock())
101150 @@ -1598,6 +1629,10 @@ struct task_struct {
101151 gfp_t lockdep_reclaim_gfp;
101152 #endif
101153
101154 +/* process credentials */
101155 + const struct cred __rcu *real_cred; /* objective and real subjective task
101156 + * credentials (COW) */
101157 +
101158 /* journalling filesystem info */
101159 void *journal_info;
101160
101161 @@ -1636,6 +1671,10 @@ struct task_struct {
101162 /* cg_list protected by css_set_lock and tsk->alloc_lock */
101163 struct list_head cg_list;
101164 #endif
101165 +
101166 + const struct cred __rcu *cred; /* effective (overridable) subjective task
101167 + * credentials (COW) */
101168 +
101169 #ifdef CONFIG_FUTEX
101170 struct robust_list_head __user *robust_list;
101171 #ifdef CONFIG_COMPAT
101172 @@ -1747,7 +1786,7 @@ struct task_struct {
101173 * Number of functions that haven't been traced
101174 * because of depth overrun.
101175 */
101176 - atomic_t trace_overrun;
101177 + atomic_unchecked_t trace_overrun;
101178 /* Pause for the tracing */
101179 atomic_t tracing_graph_pause;
101180 #endif
101181 @@ -1776,22 +1815,91 @@ struct task_struct {
101182 unsigned long task_state_change;
101183 #endif
101184 int pagefault_disabled;
101185 +
101186 +#ifdef CONFIG_GRKERNSEC
101187 + /* grsecurity */
101188 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
101189 + u64 exec_id;
101190 +#endif
101191 +#ifdef CONFIG_GRKERNSEC_SETXID
101192 + const struct cred *delayed_cred;
101193 +#endif
101194 + struct dentry *gr_chroot_dentry;
101195 + struct acl_subject_label *acl;
101196 + struct acl_subject_label *tmpacl;
101197 + struct acl_role_label *role;
101198 + struct file *exec_file;
101199 + unsigned long brute_expires;
101200 + u16 acl_role_id;
101201 + u8 inherited;
101202 + /* is this the task that authenticated to the special role */
101203 + u8 acl_sp_role;
101204 + u8 is_writable;
101205 + u8 brute;
101206 + u8 gr_is_chrooted;
101207 +#endif
101208 +
101209 +/* thread_info moved to task_struct */
101210 +#ifdef CONFIG_X86
101211 + struct thread_info tinfo;
101212 +#endif
101213 /* CPU-specific state of this task */
101214 struct thread_struct thread;
101215 -/*
101216 - * WARNING: on x86, 'thread_struct' contains a variable-sized
101217 - * structure. It *MUST* be at the end of 'task_struct'.
101218 - *
101219 - * Do not put anything below here!
101220 - */
101221 -};
101222 +} __randomize_layout;
101223
101224 #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
101225 -extern int arch_task_struct_size __read_mostly;
101226 +extern size_t arch_task_struct_size __read_mostly;
101227 #else
101228 # define arch_task_struct_size (sizeof(struct task_struct))
101229 #endif
101230
101231 +#define MF_PAX_PAGEEXEC 0x01000000 /* Paging based non-executable pages */
101232 +#define MF_PAX_EMUTRAMP 0x02000000 /* Emulate trampolines */
101233 +#define MF_PAX_MPROTECT 0x04000000 /* Restrict mprotect() */
101234 +#define MF_PAX_RANDMMAP 0x08000000 /* Randomize mmap() base */
101235 +/*#define MF_PAX_RANDEXEC 0x10000000*/ /* Randomize ET_EXEC base */
101236 +#define MF_PAX_SEGMEXEC 0x20000000 /* Segmentation based non-executable pages */
101237 +
101238 +#ifdef CONFIG_PAX_SOFTMODE
101239 +extern int pax_softmode;
101240 +#endif
101241 +
101242 +extern int pax_check_flags(unsigned long *);
101243 +#define PAX_PARSE_FLAGS_FALLBACK (~0UL)
101244 +
101245 +/* if tsk != current then task_lock must be held on it */
101246 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
101247 +static inline unsigned long pax_get_flags(struct task_struct *tsk)
101248 +{
101249 + if (likely(tsk->mm))
101250 + return tsk->mm->pax_flags;
101251 + else
101252 + return 0UL;
101253 +}
101254 +
101255 +/* if tsk != current then task_lock must be held on it */
101256 +static inline long pax_set_flags(struct task_struct *tsk, unsigned long flags)
101257 +{
101258 + if (likely(tsk->mm)) {
101259 + tsk->mm->pax_flags = flags;
101260 + return 0;
101261 + }
101262 + return -EINVAL;
101263 +}
101264 +#endif
101265 +
101266 +#ifdef CONFIG_PAX_HAVE_ACL_FLAGS
101267 +extern void pax_set_initial_flags(struct linux_binprm *bprm);
101268 +#elif defined(CONFIG_PAX_HOOK_ACL_FLAGS)
101269 +extern void (*pax_set_initial_flags_func)(struct linux_binprm *bprm);
101270 +#endif
101271 +
101272 +struct path;
101273 +extern char *pax_get_path(const struct path *path, char *buf, int buflen);
101274 +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp);
101275 +extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp);
101276 +extern void pax_report_refcount_overflow(struct pt_regs *regs);
101277 +
101278 /* Future-safe accessor for struct task_struct's cpus_allowed. */
101279 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
101280
101281 @@ -1873,7 +1981,7 @@ struct pid_namespace;
101282 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
101283 struct pid_namespace *ns);
101284
101285 -static inline pid_t task_pid_nr(struct task_struct *tsk)
101286 +static inline pid_t task_pid_nr(const struct task_struct *tsk)
101287 {
101288 return tsk->pid;
101289 }
101290 @@ -2241,6 +2349,25 @@ extern u64 sched_clock_cpu(int cpu);
101291
101292 extern void sched_clock_init(void);
101293
101294 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
101295 +static inline void populate_stack(void)
101296 +{
101297 + struct task_struct *curtask = current;
101298 + int c;
101299 + int *ptr = curtask->stack;
101300 + int *end = curtask->stack + THREAD_SIZE;
101301 +
101302 + while (ptr < end) {
101303 + c = *(volatile int *)ptr;
101304 + ptr += PAGE_SIZE/sizeof(int);
101305 + }
101306 +}
101307 +#else
101308 +static inline void populate_stack(void)
101309 +{
101310 +}
101311 +#endif
101312 +
101313 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
101314 static inline void sched_clock_tick(void)
101315 {
101316 @@ -2369,7 +2496,9 @@ extern void set_curr_task(int cpu, struct task_struct *p);
101317 void yield(void);
101318
101319 union thread_union {
101320 +#ifndef CONFIG_X86
101321 struct thread_info thread_info;
101322 +#endif
101323 unsigned long stack[THREAD_SIZE/sizeof(long)];
101324 };
101325
101326 @@ -2402,6 +2531,7 @@ extern struct pid_namespace init_pid_ns;
101327 */
101328
101329 extern struct task_struct *find_task_by_vpid(pid_t nr);
101330 +extern struct task_struct *find_task_by_vpid_unrestricted(pid_t nr);
101331 extern struct task_struct *find_task_by_pid_ns(pid_t nr,
101332 struct pid_namespace *ns);
101333
101334 @@ -2579,7 +2709,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
101335 extern void exit_itimers(struct signal_struct *);
101336 extern void flush_itimer_signals(void);
101337
101338 -extern void do_group_exit(int);
101339 +extern __noreturn void do_group_exit(int);
101340
101341 extern int do_execve(struct filename *,
101342 const char __user * const __user *,
101343 @@ -2784,9 +2914,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
101344 #define task_stack_end_corrupted(task) \
101345 (*(end_of_stack(task)) != STACK_END_MAGIC)
101346
101347 -static inline int object_is_on_stack(void *obj)
101348 +static inline int object_starts_on_stack(const void *obj)
101349 {
101350 - void *stack = task_stack_page(current);
101351 + const void *stack = task_stack_page(current);
101352
101353 return (obj >= stack) && (obj < (stack + THREAD_SIZE));
101354 }
101355 diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
101356 index c9e4731..c716293 100644
101357 --- a/include/linux/sched/sysctl.h
101358 +++ b/include/linux/sched/sysctl.h
101359 @@ -34,6 +34,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
101360 #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
101361
101362 extern int sysctl_max_map_count;
101363 +extern unsigned long sysctl_heap_stack_gap;
101364
101365 extern unsigned int sysctl_sched_latency;
101366 extern unsigned int sysctl_sched_min_granularity;
101367 diff --git a/include/linux/security.h b/include/linux/security.h
101368 index 79d85dd..5bc05d7 100644
101369 --- a/include/linux/security.h
101370 +++ b/include/linux/security.h
101371 @@ -28,6 +28,7 @@
101372 #include <linux/err.h>
101373 #include <linux/string.h>
101374 #include <linux/mm.h>
101375 +#include <linux/grsecurity.h>
101376
101377 struct linux_binprm;
101378 struct cred;
101379 @@ -946,7 +947,7 @@ static inline int security_task_prctl(int option, unsigned long arg2,
101380 unsigned long arg4,
101381 unsigned long arg5)
101382 {
101383 - return cap_task_prctl(option, arg2, arg3, arg3, arg5);
101384 + return cap_task_prctl(option, arg2, arg3, arg4, arg5);
101385 }
101386
101387 static inline void security_task_to_inode(struct task_struct *p, struct inode *inode)
101388 diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h
101389 index dc368b8..e895209 100644
101390 --- a/include/linux/semaphore.h
101391 +++ b/include/linux/semaphore.h
101392 @@ -37,7 +37,7 @@ static inline void sema_init(struct semaphore *sem, int val)
101393 }
101394
101395 extern void down(struct semaphore *sem);
101396 -extern int __must_check down_interruptible(struct semaphore *sem);
101397 +extern int __must_check down_interruptible(struct semaphore *sem) __intentional_overflow(-1);
101398 extern int __must_check down_killable(struct semaphore *sem);
101399 extern int __must_check down_trylock(struct semaphore *sem);
101400 extern int __must_check down_timeout(struct semaphore *sem, long jiffies);
101401 diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
101402 index d4c7271..abf5706 100644
101403 --- a/include/linux/seq_file.h
101404 +++ b/include/linux/seq_file.h
101405 @@ -27,6 +27,9 @@ struct seq_file {
101406 struct mutex lock;
101407 const struct seq_operations *op;
101408 int poll_event;
101409 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
101410 + u64 exec_id;
101411 +#endif
101412 #ifdef CONFIG_USER_NS
101413 struct user_namespace *user_ns;
101414 #endif
101415 @@ -39,6 +42,7 @@ struct seq_operations {
101416 void * (*next) (struct seq_file *m, void *v, loff_t *pos);
101417 int (*show) (struct seq_file *m, void *v);
101418 };
101419 +typedef struct seq_operations __no_const seq_operations_no_const;
101420
101421 #define SEQ_SKIP 1
101422
101423 @@ -111,6 +115,7 @@ void seq_pad(struct seq_file *m, char c);
101424
101425 char *mangle_path(char *s, const char *p, const char *esc);
101426 int seq_open(struct file *, const struct seq_operations *);
101427 +int seq_open_restrict(struct file *, const struct seq_operations *);
101428 ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
101429 loff_t seq_lseek(struct file *, loff_t, int);
101430 int seq_release(struct inode *, struct file *);
101431 @@ -129,6 +134,7 @@ int seq_path_root(struct seq_file *m, const struct path *path,
101432 const struct path *root, const char *esc);
101433
101434 int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
101435 +int single_open_restrict(struct file *, int (*)(struct seq_file *, void *), void *);
101436 int single_open_size(struct file *, int (*)(struct seq_file *, void *), void *, size_t);
101437 int single_release(struct inode *, struct file *);
101438 void *__seq_open_private(struct file *, const struct seq_operations *, int);
101439 diff --git a/include/linux/shm.h b/include/linux/shm.h
101440 index 6fb8016..2cf60e7 100644
101441 --- a/include/linux/shm.h
101442 +++ b/include/linux/shm.h
101443 @@ -22,7 +22,11 @@ struct shmid_kernel /* private to the kernel */
101444 /* The task created the shm object. NULL if the task is dead. */
101445 struct task_struct *shm_creator;
101446 struct list_head shm_clist; /* list by creator */
101447 -};
101448 +#ifdef CONFIG_GRKERNSEC
101449 + u64 shm_createtime;
101450 + pid_t shm_lapid;
101451 +#endif
101452 +} __randomize_layout;
101453
101454 /* shm_mode upper byte flags */
101455 #define SHM_DEST 01000 /* segment will be destroyed on last detach */
101456 diff --git a/include/linux/signal.h b/include/linux/signal.h
101457 index ab1e039..ad4229e 100644
101458 --- a/include/linux/signal.h
101459 +++ b/include/linux/signal.h
101460 @@ -289,7 +289,7 @@ static inline void allow_signal(int sig)
101461 * know it'll be handled, so that they don't get converted to
101462 * SIGKILL or just silently dropped.
101463 */
101464 - kernel_sigaction(sig, (__force __sighandler_t)2);
101465 + kernel_sigaction(sig, (__force_user __sighandler_t)2);
101466 }
101467
101468 static inline void disallow_signal(int sig)
101469 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
101470 index 9b88536..6a15c44 100644
101471 --- a/include/linux/skbuff.h
101472 +++ b/include/linux/skbuff.h
101473 @@ -784,7 +784,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
101474 int node);
101475 struct sk_buff *__build_skb(void *data, unsigned int frag_size);
101476 struct sk_buff *build_skb(void *data, unsigned int frag_size);
101477 -static inline struct sk_buff *alloc_skb(unsigned int size,
101478 +static inline struct sk_buff * __intentional_overflow(0) alloc_skb(unsigned int size,
101479 gfp_t priority)
101480 {
101481 return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
101482 @@ -1979,7 +1979,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
101483 return skb->inner_transport_header - skb->inner_network_header;
101484 }
101485
101486 -static inline int skb_network_offset(const struct sk_buff *skb)
101487 +static inline int __intentional_overflow(0) skb_network_offset(const struct sk_buff *skb)
101488 {
101489 return skb_network_header(skb) - skb->data;
101490 }
101491 @@ -2039,7 +2039,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
101492 * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
101493 */
101494 #ifndef NET_SKB_PAD
101495 -#define NET_SKB_PAD max(32, L1_CACHE_BYTES)
101496 +#define NET_SKB_PAD max(_AC(32,UL), L1_CACHE_BYTES)
101497 #endif
101498
101499 int ___pskb_trim(struct sk_buff *skb, unsigned int len);
101500 @@ -2682,9 +2682,9 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
101501 int *err);
101502 unsigned int datagram_poll(struct file *file, struct socket *sock,
101503 struct poll_table_struct *wait);
101504 -int skb_copy_datagram_iter(const struct sk_buff *from, int offset,
101505 +int __intentional_overflow(0) skb_copy_datagram_iter(const struct sk_buff *from, int offset,
101506 struct iov_iter *to, int size);
101507 -static inline int skb_copy_datagram_msg(const struct sk_buff *from, int offset,
101508 +static inline int __intentional_overflow(2,4) skb_copy_datagram_msg(const struct sk_buff *from, int offset,
101509 struct msghdr *msg, int size)
101510 {
101511 return skb_copy_datagram_iter(from, offset, &msg->msg_iter, size);
101512 @@ -3213,6 +3213,9 @@ static inline void nf_reset(struct sk_buff *skb)
101513 nf_bridge_put(skb->nf_bridge);
101514 skb->nf_bridge = NULL;
101515 #endif
101516 +#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE)
101517 + skb->nf_trace = 0;
101518 +#endif
101519 }
101520
101521 static inline void nf_reset_trace(struct sk_buff *skb)
101522 diff --git a/include/linux/slab.h b/include/linux/slab.h
101523 index a99f0e5..4efa730 100644
101524 --- a/include/linux/slab.h
101525 +++ b/include/linux/slab.h
101526 @@ -15,14 +15,29 @@
101527 #include <linux/types.h>
101528 #include <linux/workqueue.h>
101529
101530 +#include <linux/err.h>
101531
101532 /*
101533 * Flags to pass to kmem_cache_create().
101534 * The ones marked DEBUG are only valid if CONFIG_DEBUG_SLAB is set.
101535 */
101536 #define SLAB_DEBUG_FREE 0x00000100UL /* DEBUG: Perform (expensive) checks on free */
101537 +
101538 +#ifdef CONFIG_PAX_USERCOPY_SLABS
101539 +#define SLAB_USERCOPY 0x00000200UL /* PaX: Allow copying objs to/from userland */
101540 +#else
101541 +#define SLAB_USERCOPY 0x00000000UL
101542 +#endif
101543 +
101544 #define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */
101545 #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */
101546 +
101547 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
101548 +#define SLAB_NO_SANITIZE 0x00001000UL /* PaX: Do not sanitize objs on free */
101549 +#else
101550 +#define SLAB_NO_SANITIZE 0x00000000UL
101551 +#endif
101552 +
101553 #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */
101554 #define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */
101555 #define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */
101556 @@ -98,10 +113,13 @@
101557 * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can.
101558 * Both make kfree a no-op.
101559 */
101560 -#define ZERO_SIZE_PTR ((void *)16)
101561 +#define ZERO_SIZE_PTR \
101562 +({ \
101563 + BUILD_BUG_ON(!(MAX_ERRNO & ~PAGE_MASK));\
101564 + (void *)(-MAX_ERRNO-1L); \
101565 +})
101566
101567 -#define ZERO_OR_NULL_PTR(x) ((unsigned long)(x) <= \
101568 - (unsigned long)ZERO_SIZE_PTR)
101569 +#define ZERO_OR_NULL_PTR(x) ((unsigned long)(x) - 1 >= (unsigned long)ZERO_SIZE_PTR - 1)
101570
101571 #include <linux/kmemleak.h>
101572 #include <linux/kasan.h>
101573 @@ -143,6 +161,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
101574 void kfree(const void *);
101575 void kzfree(const void *);
101576 size_t ksize(const void *);
101577 +const char *check_heap_object(const void *ptr, unsigned long n);
101578 +bool is_usercopy_object(const void *ptr);
101579
101580 /*
101581 * Some archs want to perform DMA into kmalloc caches and need a guaranteed
101582 @@ -235,6 +255,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
101583 extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
101584 #endif
101585
101586 +#ifdef CONFIG_PAX_USERCOPY_SLABS
101587 +extern struct kmem_cache *kmalloc_usercopy_caches[KMALLOC_SHIFT_HIGH + 1];
101588 +#endif
101589 +
101590 /*
101591 * Figure out which kmalloc slab an allocation of a certain size
101592 * belongs to.
101593 @@ -243,7 +267,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
101594 * 2 = 129 .. 192 bytes
101595 * n = 2^(n-1)+1 .. 2^n
101596 */
101597 -static __always_inline int kmalloc_index(size_t size)
101598 +static __always_inline __size_overflow(1) int kmalloc_index(size_t size)
101599 {
101600 if (!size)
101601 return 0;
101602 @@ -286,15 +310,15 @@ static __always_inline int kmalloc_index(size_t size)
101603 }
101604 #endif /* !CONFIG_SLOB */
101605
101606 -void *__kmalloc(size_t size, gfp_t flags);
101607 +void *__kmalloc(size_t size, gfp_t flags) __alloc_size(1) __size_overflow(1);
101608 void *kmem_cache_alloc(struct kmem_cache *, gfp_t flags);
101609 void kmem_cache_free(struct kmem_cache *, void *);
101610
101611 #ifdef CONFIG_NUMA
101612 -void *__kmalloc_node(size_t size, gfp_t flags, int node);
101613 +void *__kmalloc_node(size_t size, gfp_t flags, int node) __alloc_size(1) __size_overflow(1);
101614 void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node);
101615 #else
101616 -static __always_inline void *__kmalloc_node(size_t size, gfp_t flags, int node)
101617 +static __always_inline void * __size_overflow(1) __kmalloc_node(size_t size, gfp_t flags, int node)
101618 {
101619 return __kmalloc(size, flags);
101620 }
101621 diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
101622 index 33d0490..70a6313 100644
101623 --- a/include/linux/slab_def.h
101624 +++ b/include/linux/slab_def.h
101625 @@ -40,7 +40,7 @@ struct kmem_cache {
101626 /* 4) cache creation/removal */
101627 const char *name;
101628 struct list_head list;
101629 - int refcount;
101630 + atomic_t refcount;
101631 int object_size;
101632 int align;
101633
101634 @@ -56,10 +56,14 @@ struct kmem_cache {
101635 unsigned long node_allocs;
101636 unsigned long node_frees;
101637 unsigned long node_overflow;
101638 - atomic_t allochit;
101639 - atomic_t allocmiss;
101640 - atomic_t freehit;
101641 - atomic_t freemiss;
101642 + atomic_unchecked_t allochit;
101643 + atomic_unchecked_t allocmiss;
101644 + atomic_unchecked_t freehit;
101645 + atomic_unchecked_t freemiss;
101646 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
101647 + atomic_unchecked_t sanitized;
101648 + atomic_unchecked_t not_sanitized;
101649 +#endif
101650
101651 /*
101652 * If debugging is enabled, then the allocator can add additional
101653 diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
101654 index 3388511..6252f90 100644
101655 --- a/include/linux/slub_def.h
101656 +++ b/include/linux/slub_def.h
101657 @@ -74,7 +74,7 @@ struct kmem_cache {
101658 struct kmem_cache_order_objects max;
101659 struct kmem_cache_order_objects min;
101660 gfp_t allocflags; /* gfp flags to use on each alloc */
101661 - int refcount; /* Refcount for slab cache destroy */
101662 + atomic_t refcount; /* Refcount for slab cache destroy */
101663 void (*ctor)(void *);
101664 int inuse; /* Offset to metadata */
101665 int align; /* Alignment */
101666 diff --git a/include/linux/smp.h b/include/linux/smp.h
101667 index c441407..f487b83 100644
101668 --- a/include/linux/smp.h
101669 +++ b/include/linux/smp.h
101670 @@ -183,7 +183,9 @@ static inline void smp_init(void) { }
101671 #endif
101672
101673 #define get_cpu() ({ preempt_disable(); smp_processor_id(); })
101674 +#define raw_get_cpu() ({ raw_preempt_disable(); raw_smp_processor_id(); })
101675 #define put_cpu() preempt_enable()
101676 +#define raw_put_cpu_no_resched() raw_preempt_enable_no_resched()
101677
101678 /*
101679 * Callback to arch code if there's nosmp or maxcpus=0 on the
101680 diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
101681 index fddebc6..6f0ae39 100644
101682 --- a/include/linux/sock_diag.h
101683 +++ b/include/linux/sock_diag.h
101684 @@ -15,7 +15,7 @@ struct sock_diag_handler {
101685 __u8 family;
101686 int (*dump)(struct sk_buff *skb, struct nlmsghdr *nlh);
101687 int (*get_info)(struct sk_buff *skb, struct sock *sk);
101688 -};
101689 +} __do_const;
101690
101691 int sock_diag_register(const struct sock_diag_handler *h);
101692 void sock_diag_unregister(const struct sock_diag_handler *h);
101693 diff --git a/include/linux/sonet.h b/include/linux/sonet.h
101694 index 680f9a3..f13aeb0 100644
101695 --- a/include/linux/sonet.h
101696 +++ b/include/linux/sonet.h
101697 @@ -7,7 +7,7 @@
101698 #include <uapi/linux/sonet.h>
101699
101700 struct k_sonet_stats {
101701 -#define __HANDLE_ITEM(i) atomic_t i
101702 +#define __HANDLE_ITEM(i) atomic_unchecked_t i
101703 __SONET_ITEMS
101704 #undef __HANDLE_ITEM
101705 };
101706 diff --git a/include/linux/sunrpc/addr.h b/include/linux/sunrpc/addr.h
101707 index 07d8e53..dc934c9 100644
101708 --- a/include/linux/sunrpc/addr.h
101709 +++ b/include/linux/sunrpc/addr.h
101710 @@ -23,9 +23,9 @@ static inline unsigned short rpc_get_port(const struct sockaddr *sap)
101711 {
101712 switch (sap->sa_family) {
101713 case AF_INET:
101714 - return ntohs(((struct sockaddr_in *)sap)->sin_port);
101715 + return ntohs(((const struct sockaddr_in *)sap)->sin_port);
101716 case AF_INET6:
101717 - return ntohs(((struct sockaddr_in6 *)sap)->sin6_port);
101718 + return ntohs(((const struct sockaddr_in6 *)sap)->sin6_port);
101719 }
101720 return 0;
101721 }
101722 @@ -58,7 +58,7 @@ static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1,
101723 static inline bool __rpc_copy_addr4(struct sockaddr *dst,
101724 const struct sockaddr *src)
101725 {
101726 - const struct sockaddr_in *ssin = (struct sockaddr_in *) src;
101727 + const struct sockaddr_in *ssin = (const struct sockaddr_in *) src;
101728 struct sockaddr_in *dsin = (struct sockaddr_in *) dst;
101729
101730 dsin->sin_family = ssin->sin_family;
101731 @@ -164,7 +164,7 @@ static inline u32 rpc_get_scope_id(const struct sockaddr *sa)
101732 if (sa->sa_family != AF_INET6)
101733 return 0;
101734
101735 - return ((struct sockaddr_in6 *) sa)->sin6_scope_id;
101736 + return ((const struct sockaddr_in6 *) sa)->sin6_scope_id;
101737 }
101738
101739 #endif /* _LINUX_SUNRPC_ADDR_H */
101740 diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
101741 index 131032f..5f9378a 100644
101742 --- a/include/linux/sunrpc/clnt.h
101743 +++ b/include/linux/sunrpc/clnt.h
101744 @@ -101,7 +101,7 @@ struct rpc_procinfo {
101745 unsigned int p_timer; /* Which RTT timer to use */
101746 u32 p_statidx; /* Which procedure to account */
101747 const char * p_name; /* name of procedure */
101748 -};
101749 +} __do_const;
101750
101751 #ifdef __KERNEL__
101752
101753 diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
101754 index fae6fb9..023fbcd 100644
101755 --- a/include/linux/sunrpc/svc.h
101756 +++ b/include/linux/sunrpc/svc.h
101757 @@ -420,7 +420,7 @@ struct svc_procedure {
101758 unsigned int pc_count; /* call count */
101759 unsigned int pc_cachetype; /* cache info (NFS) */
101760 unsigned int pc_xdrressize; /* maximum size of XDR reply */
101761 -};
101762 +} __do_const;
101763
101764 /*
101765 * Function prototypes.
101766 diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
101767 index 4929a8a..b8f29e9 100644
101768 --- a/include/linux/sunrpc/svc_rdma.h
101769 +++ b/include/linux/sunrpc/svc_rdma.h
101770 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
101771 extern unsigned int svcrdma_max_requests;
101772 extern unsigned int svcrdma_max_req_size;
101773
101774 -extern atomic_t rdma_stat_recv;
101775 -extern atomic_t rdma_stat_read;
101776 -extern atomic_t rdma_stat_write;
101777 -extern atomic_t rdma_stat_sq_starve;
101778 -extern atomic_t rdma_stat_rq_starve;
101779 -extern atomic_t rdma_stat_rq_poll;
101780 -extern atomic_t rdma_stat_rq_prod;
101781 -extern atomic_t rdma_stat_sq_poll;
101782 -extern atomic_t rdma_stat_sq_prod;
101783 +extern atomic_unchecked_t rdma_stat_recv;
101784 +extern atomic_unchecked_t rdma_stat_read;
101785 +extern atomic_unchecked_t rdma_stat_write;
101786 +extern atomic_unchecked_t rdma_stat_sq_starve;
101787 +extern atomic_unchecked_t rdma_stat_rq_starve;
101788 +extern atomic_unchecked_t rdma_stat_rq_poll;
101789 +extern atomic_unchecked_t rdma_stat_rq_prod;
101790 +extern atomic_unchecked_t rdma_stat_sq_poll;
101791 +extern atomic_unchecked_t rdma_stat_sq_prod;
101792
101793 /*
101794 * Contexts are built when an RDMA request is created and are a
101795 diff --git a/include/linux/sunrpc/svcauth.h b/include/linux/sunrpc/svcauth.h
101796 index 8d71d65..f79586e 100644
101797 --- a/include/linux/sunrpc/svcauth.h
101798 +++ b/include/linux/sunrpc/svcauth.h
101799 @@ -120,7 +120,7 @@ struct auth_ops {
101800 int (*release)(struct svc_rqst *rq);
101801 void (*domain_release)(struct auth_domain *);
101802 int (*set_client)(struct svc_rqst *rq);
101803 -};
101804 +} __do_const;
101805
101806 #define SVC_GARBAGE 1
101807 #define SVC_SYSERR 2
101808 diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
101809 index e7a018e..49f8b17 100644
101810 --- a/include/linux/swiotlb.h
101811 +++ b/include/linux/swiotlb.h
101812 @@ -60,7 +60,8 @@ extern void
101813
101814 extern void
101815 swiotlb_free_coherent(struct device *hwdev, size_t size,
101816 - void *vaddr, dma_addr_t dma_handle);
101817 + void *vaddr, dma_addr_t dma_handle,
101818 + struct dma_attrs *attrs);
101819
101820 extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
101821 unsigned long offset, size_t size,
101822 diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
101823 index b45c45b..a6ae64c 100644
101824 --- a/include/linux/syscalls.h
101825 +++ b/include/linux/syscalls.h
101826 @@ -102,7 +102,12 @@ union bpf_attr;
101827 #define __TYPE_IS_L(t) (__same_type((t)0, 0L))
101828 #define __TYPE_IS_UL(t) (__same_type((t)0, 0UL))
101829 #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL))
101830 -#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a
101831 +#define __SC_LONG(t, a) __typeof__( \
101832 + __builtin_choose_expr( \
101833 + sizeof(t) > sizeof(int), \
101834 + (t) 0, \
101835 + __builtin_choose_expr(__type_is_unsigned(t), 0UL, 0L) \
101836 + )) a
101837 #define __SC_CAST(t, a) (t) a
101838 #define __SC_ARGS(t, a) a
101839 #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
101840 @@ -384,11 +389,11 @@ asmlinkage long sys_sync(void);
101841 asmlinkage long sys_fsync(unsigned int fd);
101842 asmlinkage long sys_fdatasync(unsigned int fd);
101843 asmlinkage long sys_bdflush(int func, long data);
101844 -asmlinkage long sys_mount(char __user *dev_name, char __user *dir_name,
101845 - char __user *type, unsigned long flags,
101846 +asmlinkage long sys_mount(const char __user *dev_name, const char __user *dir_name,
101847 + const char __user *type, unsigned long flags,
101848 void __user *data);
101849 -asmlinkage long sys_umount(char __user *name, int flags);
101850 -asmlinkage long sys_oldumount(char __user *name);
101851 +asmlinkage long sys_umount(const char __user *name, int flags);
101852 +asmlinkage long sys_oldumount(const char __user *name);
101853 asmlinkage long sys_truncate(const char __user *path, long length);
101854 asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length);
101855 asmlinkage long sys_stat(const char __user *filename,
101856 @@ -604,7 +609,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *);
101857 asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *);
101858 asmlinkage long sys_send(int, void __user *, size_t, unsigned);
101859 asmlinkage long sys_sendto(int, void __user *, size_t, unsigned,
101860 - struct sockaddr __user *, int);
101861 + struct sockaddr __user *, int) __intentional_overflow(0);
101862 asmlinkage long sys_sendmsg(int fd, struct user_msghdr __user *msg, unsigned flags);
101863 asmlinkage long sys_sendmmsg(int fd, struct mmsghdr __user *msg,
101864 unsigned int vlen, unsigned flags);
101865 @@ -663,10 +668,10 @@ asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf);
101866
101867 asmlinkage long sys_semget(key_t key, int nsems, int semflg);
101868 asmlinkage long sys_semop(int semid, struct sembuf __user *sops,
101869 - unsigned nsops);
101870 + long nsops);
101871 asmlinkage long sys_semctl(int semid, int semnum, int cmd, unsigned long arg);
101872 asmlinkage long sys_semtimedop(int semid, struct sembuf __user *sops,
101873 - unsigned nsops,
101874 + long nsops,
101875 const struct timespec __user *timeout);
101876 asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg);
101877 asmlinkage long sys_shmget(key_t key, size_t size, int flag);
101878 diff --git a/include/linux/syscore_ops.h b/include/linux/syscore_ops.h
101879 index 27b3b0b..e093dd9 100644
101880 --- a/include/linux/syscore_ops.h
101881 +++ b/include/linux/syscore_ops.h
101882 @@ -16,7 +16,7 @@ struct syscore_ops {
101883 int (*suspend)(void);
101884 void (*resume)(void);
101885 void (*shutdown)(void);
101886 -};
101887 +} __do_const;
101888
101889 extern void register_syscore_ops(struct syscore_ops *ops);
101890 extern void unregister_syscore_ops(struct syscore_ops *ops);
101891 diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
101892 index fa7bc29..0d96561 100644
101893 --- a/include/linux/sysctl.h
101894 +++ b/include/linux/sysctl.h
101895 @@ -39,10 +39,16 @@ typedef int proc_handler (struct ctl_table *ctl, int write,
101896
101897 extern int proc_dostring(struct ctl_table *, int,
101898 void __user *, size_t *, loff_t *);
101899 +extern int proc_dostring_modpriv(struct ctl_table *, int,
101900 + void __user *, size_t *, loff_t *);
101901 extern int proc_dointvec(struct ctl_table *, int,
101902 void __user *, size_t *, loff_t *);
101903 +extern int proc_dointvec_secure(struct ctl_table *, int,
101904 + void __user *, size_t *, loff_t *);
101905 extern int proc_dointvec_minmax(struct ctl_table *, int,
101906 void __user *, size_t *, loff_t *);
101907 +extern int proc_dointvec_minmax_secure(struct ctl_table *, int,
101908 + void __user *, size_t *, loff_t *);
101909 extern int proc_dointvec_jiffies(struct ctl_table *, int,
101910 void __user *, size_t *, loff_t *);
101911 extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int,
101912 @@ -113,7 +119,8 @@ struct ctl_table
101913 struct ctl_table_poll *poll;
101914 void *extra1;
101915 void *extra2;
101916 -};
101917 +} __do_const __randomize_layout;
101918 +typedef struct ctl_table __no_const ctl_table_no_const;
101919
101920 struct ctl_node {
101921 struct rb_node node;
101922 diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
101923 index 9f65758..487a6f1 100644
101924 --- a/include/linux/sysfs.h
101925 +++ b/include/linux/sysfs.h
101926 @@ -34,7 +34,8 @@ struct attribute {
101927 struct lock_class_key *key;
101928 struct lock_class_key skey;
101929 #endif
101930 -};
101931 +} __do_const;
101932 +typedef struct attribute __no_const attribute_no_const;
101933
101934 /**
101935 * sysfs_attr_init - initialize a dynamically allocated sysfs attribute
101936 @@ -78,7 +79,8 @@ struct attribute_group {
101937 struct attribute *, int);
101938 struct attribute **attrs;
101939 struct bin_attribute **bin_attrs;
101940 -};
101941 +} __do_const;
101942 +typedef struct attribute_group __no_const attribute_group_no_const;
101943
101944 /**
101945 * Use these macros to make defining attributes easier. See include/linux/device.h
101946 @@ -152,7 +154,8 @@ struct bin_attribute {
101947 char *, loff_t, size_t);
101948 int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,
101949 struct vm_area_struct *vma);
101950 -};
101951 +} __do_const;
101952 +typedef struct bin_attribute __no_const bin_attribute_no_const;
101953
101954 /**
101955 * sysfs_bin_attr_init - initialize a dynamically allocated bin_attribute
101956 diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
101957 index 387fa7d..3fcde6b 100644
101958 --- a/include/linux/sysrq.h
101959 +++ b/include/linux/sysrq.h
101960 @@ -16,6 +16,7 @@
101961
101962 #include <linux/errno.h>
101963 #include <linux/types.h>
101964 +#include <linux/compiler.h>
101965
101966 /* Possible values of bitmask for enabling sysrq functions */
101967 /* 0x0001 is reserved for enable everything */
101968 @@ -33,7 +34,7 @@ struct sysrq_key_op {
101969 char *help_msg;
101970 char *action_msg;
101971 int enable_mask;
101972 -};
101973 +} __do_const;
101974
101975 #ifdef CONFIG_MAGIC_SYSRQ
101976
101977 diff --git a/include/linux/tcp.h b/include/linux/tcp.h
101978 index 48c3696..e7a7ba6 100644
101979 --- a/include/linux/tcp.h
101980 +++ b/include/linux/tcp.h
101981 @@ -63,13 +63,13 @@ struct tcp_fastopen_cookie {
101982
101983 /* This defines a selective acknowledgement block. */
101984 struct tcp_sack_block_wire {
101985 - __be32 start_seq;
101986 - __be32 end_seq;
101987 + __be32 start_seq __intentional_overflow(-1);
101988 + __be32 end_seq __intentional_overflow(-1);
101989 };
101990
101991 struct tcp_sack_block {
101992 - u32 start_seq;
101993 - u32 end_seq;
101994 + u32 start_seq __intentional_overflow(-1);
101995 + u32 end_seq __intentional_overflow(-1);
101996 };
101997
101998 /*These are used to set the sack_ok field in struct tcp_options_received */
101999 @@ -153,7 +153,7 @@ struct tcp_sock {
102000 * total number of segments in.
102001 */
102002 u32 rcv_nxt; /* What we want to receive next */
102003 - u32 copied_seq; /* Head of yet unread data */
102004 + u32 copied_seq __intentional_overflow(-1); /* Head of yet unread data */
102005 u32 rcv_wup; /* rcv_nxt on last window update sent */
102006 u32 snd_nxt; /* Next sequence we send */
102007 u32 segs_out; /* RFC4898 tcpEStatsPerfSegsOut
102008 @@ -248,7 +248,7 @@ struct tcp_sock {
102009 u32 prr_out; /* Total number of pkts sent during Recovery. */
102010
102011 u32 rcv_wnd; /* Current receiver window */
102012 - u32 write_seq; /* Tail(+1) of data held in tcp send buffer */
102013 + u32 write_seq __intentional_overflow(-1); /* Tail(+1) of data held in tcp send buffer */
102014 u32 notsent_lowat; /* TCP_NOTSENT_LOWAT */
102015 u32 pushed_seq; /* Last pushed seq, required to talk to windows */
102016 u32 lost_out; /* Lost packets */
102017 @@ -291,7 +291,7 @@ struct tcp_sock {
102018 int undo_retrans; /* number of undoable retransmissions. */
102019 u32 total_retrans; /* Total retransmits for entire connection */
102020
102021 - u32 urg_seq; /* Seq of received urgent pointer */
102022 + u32 urg_seq __intentional_overflow(-1); /* Seq of received urgent pointer */
102023 unsigned int keepalive_time; /* time before keep alive takes place */
102024 unsigned int keepalive_intvl; /* time interval between keep alive probes */
102025
102026 diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
102027 index ff307b5..f1a4468 100644
102028 --- a/include/linux/thread_info.h
102029 +++ b/include/linux/thread_info.h
102030 @@ -145,6 +145,13 @@ static inline bool test_and_clear_restore_sigmask(void)
102031 #error "no set_restore_sigmask() provided and default one won't work"
102032 #endif
102033
102034 +extern void __check_object_size(const void *ptr, unsigned long n, bool to_user, bool const_size);
102035 +
102036 +static inline void check_object_size(const void *ptr, unsigned long n, bool to_user)
102037 +{
102038 + __check_object_size(ptr, n, to_user, __builtin_constant_p(n));
102039 +}
102040 +
102041 #endif /* __KERNEL__ */
102042
102043 #endif /* _LINUX_THREAD_INFO_H */
102044 diff --git a/include/linux/tty.h b/include/linux/tty.h
102045 index ad6c891..93a8f45 100644
102046 --- a/include/linux/tty.h
102047 +++ b/include/linux/tty.h
102048 @@ -225,7 +225,7 @@ struct tty_port {
102049 const struct tty_port_operations *ops; /* Port operations */
102050 spinlock_t lock; /* Lock protecting tty field */
102051 int blocked_open; /* Waiting to open */
102052 - int count; /* Usage count */
102053 + atomic_t count; /* Usage count */
102054 wait_queue_head_t open_wait; /* Open waiters */
102055 wait_queue_head_t close_wait; /* Close waiters */
102056 wait_queue_head_t delta_msr_wait; /* Modem status change */
102057 @@ -313,7 +313,7 @@ struct tty_struct {
102058 /* If the tty has a pending do_SAK, queue it here - akpm */
102059 struct work_struct SAK_work;
102060 struct tty_port *port;
102061 -};
102062 +} __randomize_layout;
102063
102064 /* Each of a tty's open files has private_data pointing to tty_file_private */
102065 struct tty_file_private {
102066 @@ -573,7 +573,7 @@ extern int tty_port_open(struct tty_port *port,
102067 struct tty_struct *tty, struct file *filp);
102068 static inline int tty_port_users(struct tty_port *port)
102069 {
102070 - return port->count + port->blocked_open;
102071 + return atomic_read(&port->count) + port->blocked_open;
102072 }
102073
102074 extern int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc);
102075 diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
102076 index 92e337c..f46757b 100644
102077 --- a/include/linux/tty_driver.h
102078 +++ b/include/linux/tty_driver.h
102079 @@ -291,7 +291,7 @@ struct tty_operations {
102080 void (*poll_put_char)(struct tty_driver *driver, int line, char ch);
102081 #endif
102082 const struct file_operations *proc_fops;
102083 -};
102084 +} __do_const __randomize_layout;
102085
102086 struct tty_driver {
102087 int magic; /* magic number for this structure */
102088 @@ -325,7 +325,7 @@ struct tty_driver {
102089
102090 const struct tty_operations *ops;
102091 struct list_head tty_drivers;
102092 -};
102093 +} __randomize_layout;
102094
102095 extern struct list_head tty_drivers;
102096
102097 diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
102098 index 00c9d68..bc0188b 100644
102099 --- a/include/linux/tty_ldisc.h
102100 +++ b/include/linux/tty_ldisc.h
102101 @@ -215,7 +215,7 @@ struct tty_ldisc_ops {
102102
102103 struct module *owner;
102104
102105 - int refcount;
102106 + atomic_t refcount;
102107 };
102108
102109 struct tty_ldisc {
102110 diff --git a/include/linux/types.h b/include/linux/types.h
102111 index 8715287..1be77ee 100644
102112 --- a/include/linux/types.h
102113 +++ b/include/linux/types.h
102114 @@ -176,10 +176,26 @@ typedef struct {
102115 int counter;
102116 } atomic_t;
102117
102118 +#ifdef CONFIG_PAX_REFCOUNT
102119 +typedef struct {
102120 + int counter;
102121 +} atomic_unchecked_t;
102122 +#else
102123 +typedef atomic_t atomic_unchecked_t;
102124 +#endif
102125 +
102126 #ifdef CONFIG_64BIT
102127 typedef struct {
102128 long counter;
102129 } atomic64_t;
102130 +
102131 +#ifdef CONFIG_PAX_REFCOUNT
102132 +typedef struct {
102133 + long counter;
102134 +} atomic64_unchecked_t;
102135 +#else
102136 +typedef atomic64_t atomic64_unchecked_t;
102137 +#endif
102138 #endif
102139
102140 struct list_head {
102141 diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
102142 index ae572c1..73bd4ec 100644
102143 --- a/include/linux/uaccess.h
102144 +++ b/include/linux/uaccess.h
102145 @@ -97,11 +97,11 @@ static inline unsigned long __copy_from_user_nocache(void *to,
102146 long ret; \
102147 mm_segment_t old_fs = get_fs(); \
102148 \
102149 - set_fs(KERNEL_DS); \
102150 pagefault_disable(); \
102151 - ret = __copy_from_user_inatomic(&(retval), (__force typeof(retval) __user *)(addr), sizeof(retval)); \
102152 - pagefault_enable(); \
102153 + set_fs(KERNEL_DS); \
102154 + ret = __copy_from_user_inatomic(&(retval), (typeof(retval) __force_user *)(addr), sizeof(retval)); \
102155 set_fs(old_fs); \
102156 + pagefault_enable(); \
102157 ret; \
102158 })
102159
102160 diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h
102161 index 0383552..a0125dd 100644
102162 --- a/include/linux/uidgid.h
102163 +++ b/include/linux/uidgid.h
102164 @@ -187,4 +187,9 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid)
102165
102166 #endif /* CONFIG_USER_NS */
102167
102168 +#define GR_GLOBAL_UID(x) from_kuid_munged(&init_user_ns, (x))
102169 +#define GR_GLOBAL_GID(x) from_kgid_munged(&init_user_ns, (x))
102170 +#define gr_is_global_root(x) uid_eq((x), GLOBAL_ROOT_UID)
102171 +#define gr_is_global_nonroot(x) (!uid_eq((x), GLOBAL_ROOT_UID))
102172 +
102173 #endif /* _LINUX_UIDGID_H */
102174 diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
102175 index 32c0e83..671eb35 100644
102176 --- a/include/linux/uio_driver.h
102177 +++ b/include/linux/uio_driver.h
102178 @@ -67,7 +67,7 @@ struct uio_device {
102179 struct module *owner;
102180 struct device *dev;
102181 int minor;
102182 - atomic_t event;
102183 + atomic_unchecked_t event;
102184 struct fasync_struct *async_queue;
102185 wait_queue_head_t wait;
102186 struct uio_info *info;
102187 diff --git a/include/linux/unaligned/access_ok.h b/include/linux/unaligned/access_ok.h
102188 index 99c1b4d..562e6f3 100644
102189 --- a/include/linux/unaligned/access_ok.h
102190 +++ b/include/linux/unaligned/access_ok.h
102191 @@ -4,34 +4,34 @@
102192 #include <linux/kernel.h>
102193 #include <asm/byteorder.h>
102194
102195 -static inline u16 get_unaligned_le16(const void *p)
102196 +static inline u16 __intentional_overflow(-1) get_unaligned_le16(const void *p)
102197 {
102198 - return le16_to_cpup((__le16 *)p);
102199 + return le16_to_cpup((const __le16 *)p);
102200 }
102201
102202 -static inline u32 get_unaligned_le32(const void *p)
102203 +static inline u32 __intentional_overflow(-1) get_unaligned_le32(const void *p)
102204 {
102205 - return le32_to_cpup((__le32 *)p);
102206 + return le32_to_cpup((const __le32 *)p);
102207 }
102208
102209 -static inline u64 get_unaligned_le64(const void *p)
102210 +static inline u64 __intentional_overflow(-1) get_unaligned_le64(const void *p)
102211 {
102212 - return le64_to_cpup((__le64 *)p);
102213 + return le64_to_cpup((const __le64 *)p);
102214 }
102215
102216 -static inline u16 get_unaligned_be16(const void *p)
102217 +static inline u16 __intentional_overflow(-1) get_unaligned_be16(const void *p)
102218 {
102219 - return be16_to_cpup((__be16 *)p);
102220 + return be16_to_cpup((const __be16 *)p);
102221 }
102222
102223 -static inline u32 get_unaligned_be32(const void *p)
102224 +static inline u32 __intentional_overflow(-1) get_unaligned_be32(const void *p)
102225 {
102226 - return be32_to_cpup((__be32 *)p);
102227 + return be32_to_cpup((const __be32 *)p);
102228 }
102229
102230 -static inline u64 get_unaligned_be64(const void *p)
102231 +static inline u64 __intentional_overflow(-1) get_unaligned_be64(const void *p)
102232 {
102233 - return be64_to_cpup((__be64 *)p);
102234 + return be64_to_cpup((const __be64 *)p);
102235 }
102236
102237 static inline void put_unaligned_le16(u16 val, void *p)
102238 diff --git a/include/linux/usb.h b/include/linux/usb.h
102239 index 447fe29..1424a9a 100644
102240 --- a/include/linux/usb.h
102241 +++ b/include/linux/usb.h
102242 @@ -363,7 +363,7 @@ struct usb_bus {
102243 * with the URB_SHORT_NOT_OK flag set.
102244 */
102245 unsigned no_sg_constraint:1; /* no sg constraint */
102246 - unsigned sg_tablesize; /* 0 or largest number of sg list entries */
102247 + unsigned short sg_tablesize; /* 0 or largest number of sg list entries */
102248
102249 int devnum_next; /* Next open device number in
102250 * round-robin allocation */
102251 @@ -592,7 +592,7 @@ struct usb_device {
102252 int maxchild;
102253
102254 u32 quirks;
102255 - atomic_t urbnum;
102256 + atomic_unchecked_t urbnum;
102257
102258 unsigned long active_duration;
102259
102260 @@ -1676,7 +1676,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
102261
102262 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
102263 __u8 request, __u8 requesttype, __u16 value, __u16 index,
102264 - void *data, __u16 size, int timeout);
102265 + void *data, __u16 size, int timeout) __intentional_overflow(-1);
102266 extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
102267 void *data, int len, int *actual_length, int timeout);
102268 extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
102269 diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
102270 index c9aa779..46d6f69 100644
102271 --- a/include/linux/usb/hcd.h
102272 +++ b/include/linux/usb/hcd.h
102273 @@ -23,6 +23,7 @@
102274
102275 #include <linux/rwsem.h>
102276 #include <linux/interrupt.h>
102277 +#include <scsi/scsi_host.h>
102278
102279 #define MAX_TOPO_LEVEL 6
102280
102281 diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
102282 index 3dd5a78..ed69d7b 100644
102283 --- a/include/linux/usb/renesas_usbhs.h
102284 +++ b/include/linux/usb/renesas_usbhs.h
102285 @@ -39,7 +39,7 @@ enum {
102286 */
102287 struct renesas_usbhs_driver_callback {
102288 int (*notify_hotplug)(struct platform_device *pdev);
102289 -};
102290 +} __no_const;
102291
102292 /*
102293 * callback functions for platform
102294 diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
102295 index 8297e5b..0dfae27 100644
102296 --- a/include/linux/user_namespace.h
102297 +++ b/include/linux/user_namespace.h
102298 @@ -39,7 +39,7 @@ struct user_namespace {
102299 struct key *persistent_keyring_register;
102300 struct rw_semaphore persistent_keyring_register_sem;
102301 #endif
102302 -};
102303 +} __randomize_layout;
102304
102305 extern struct user_namespace init_user_ns;
102306
102307 diff --git a/include/linux/utsname.h b/include/linux/utsname.h
102308 index 5093f58..c103e58 100644
102309 --- a/include/linux/utsname.h
102310 +++ b/include/linux/utsname.h
102311 @@ -25,7 +25,7 @@ struct uts_namespace {
102312 struct new_utsname name;
102313 struct user_namespace *user_ns;
102314 struct ns_common ns;
102315 -};
102316 +} __randomize_layout;
102317 extern struct uts_namespace init_uts_ns;
102318
102319 #ifdef CONFIG_UTS_NS
102320 diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h
102321 index 6f8fbcf..4efc177 100644
102322 --- a/include/linux/vermagic.h
102323 +++ b/include/linux/vermagic.h
102324 @@ -25,9 +25,42 @@
102325 #define MODULE_ARCH_VERMAGIC ""
102326 #endif
102327
102328 +#ifdef CONFIG_PAX_REFCOUNT
102329 +#define MODULE_PAX_REFCOUNT "REFCOUNT "
102330 +#else
102331 +#define MODULE_PAX_REFCOUNT ""
102332 +#endif
102333 +
102334 +#ifdef CONSTIFY_PLUGIN
102335 +#define MODULE_CONSTIFY_PLUGIN "CONSTIFY_PLUGIN "
102336 +#else
102337 +#define MODULE_CONSTIFY_PLUGIN ""
102338 +#endif
102339 +
102340 +#ifdef STACKLEAK_PLUGIN
102341 +#define MODULE_STACKLEAK_PLUGIN "STACKLEAK_PLUGIN "
102342 +#else
102343 +#define MODULE_STACKLEAK_PLUGIN ""
102344 +#endif
102345 +
102346 +#ifdef RANDSTRUCT_PLUGIN
102347 +#include <generated/randomize_layout_hash.h>
102348 +#define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED
102349 +#else
102350 +#define MODULE_RANDSTRUCT_PLUGIN
102351 +#endif
102352 +
102353 +#ifdef CONFIG_GRKERNSEC
102354 +#define MODULE_GRSEC "GRSEC "
102355 +#else
102356 +#define MODULE_GRSEC ""
102357 +#endif
102358 +
102359 #define VERMAGIC_STRING \
102360 UTS_RELEASE " " \
102361 MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
102362 MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
102363 - MODULE_ARCH_VERMAGIC
102364 + MODULE_ARCH_VERMAGIC \
102365 + MODULE_PAX_REFCOUNT MODULE_CONSTIFY_PLUGIN MODULE_STACKLEAK_PLUGIN \
102366 + MODULE_GRSEC MODULE_RANDSTRUCT_PLUGIN
102367
102368 diff --git a/include/linux/vga_switcheroo.h b/include/linux/vga_switcheroo.h
102369 index b483abd..af305ad 100644
102370 --- a/include/linux/vga_switcheroo.h
102371 +++ b/include/linux/vga_switcheroo.h
102372 @@ -63,9 +63,9 @@ int vga_switcheroo_get_client_state(struct pci_dev *dev);
102373
102374 void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic);
102375
102376 -int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain);
102377 +int vga_switcheroo_init_domain_pm_ops(struct device *dev, dev_pm_domain_no_const *domain);
102378 void vga_switcheroo_fini_domain_pm_ops(struct device *dev);
102379 -int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain);
102380 +int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, dev_pm_domain_no_const *domain);
102381 #else
102382
102383 static inline void vga_switcheroo_unregister_client(struct pci_dev *dev) {}
102384 @@ -82,9 +82,9 @@ static inline int vga_switcheroo_get_client_state(struct pci_dev *dev) { return
102385
102386 static inline void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic) {}
102387
102388 -static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
102389 +static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, dev_pm_domain_no_const *domain) { return -EINVAL; }
102390 static inline void vga_switcheroo_fini_domain_pm_ops(struct device *dev) {}
102391 -static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
102392 +static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, dev_pm_domain_no_const *domain) { return -EINVAL; }
102393
102394 #endif
102395 #endif /* _LINUX_VGA_SWITCHEROO_H_ */
102396 diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
102397 index 0ec5983..d5888bb 100644
102398 --- a/include/linux/vmalloc.h
102399 +++ b/include/linux/vmalloc.h
102400 @@ -18,6 +18,14 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */
102401 #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */
102402 #define VM_NO_GUARD 0x00000040 /* don't add guard page */
102403 #define VM_KASAN 0x00000080 /* has allocated kasan shadow memory */
102404 +
102405 +#if defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
102406 +#define VM_KERNEXEC 0x00000100 /* allocate from executable kernel memory range */
102407 +#endif
102408 +
102409 +#define VM_USERCOPY 0x00000200 /* allocation intended for copies to userland */
102410 +
102411 +
102412 /* bits [20..32] reserved for arch specific ioremap internals */
102413
102414 /*
102415 @@ -67,6 +75,7 @@ static inline void vmalloc_init(void)
102416 #endif
102417
102418 extern void *vmalloc(unsigned long size);
102419 +extern void *vmalloc_usercopy(unsigned long size);
102420 extern void *vzalloc(unsigned long size);
102421 extern void *vmalloc_user(unsigned long size);
102422 extern void *vmalloc_node(unsigned long size, int node);
102423 @@ -86,6 +95,10 @@ extern void *vmap(struct page **pages, unsigned int count,
102424 unsigned long flags, pgprot_t prot);
102425 extern void vunmap(const void *addr);
102426
102427 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
102428 +extern void unmap_process_stacks(struct task_struct *task);
102429 +#endif
102430 +
102431 extern int remap_vmalloc_range_partial(struct vm_area_struct *vma,
102432 unsigned long uaddr, void *kaddr,
102433 unsigned long size);
102434 @@ -150,7 +163,7 @@ extern void free_vm_area(struct vm_struct *area);
102435
102436 /* for /dev/kmem */
102437 extern long vread(char *buf, char *addr, unsigned long count);
102438 -extern long vwrite(char *buf, char *addr, unsigned long count);
102439 +extern long vwrite(char *buf, char *addr, unsigned long count) __size_overflow(3);
102440
102441 /*
102442 * Internals. Dont't use..
102443 diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
102444 index 82e7db7..f8ce3d0 100644
102445 --- a/include/linux/vmstat.h
102446 +++ b/include/linux/vmstat.h
102447 @@ -108,18 +108,18 @@ static inline void vm_events_fold_cpu(int cpu)
102448 /*
102449 * Zone based page accounting with per cpu differentials.
102450 */
102451 -extern atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
102452 +extern atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
102453
102454 static inline void zone_page_state_add(long x, struct zone *zone,
102455 enum zone_stat_item item)
102456 {
102457 - atomic_long_add(x, &zone->vm_stat[item]);
102458 - atomic_long_add(x, &vm_stat[item]);
102459 + atomic_long_add_unchecked(x, &zone->vm_stat[item]);
102460 + atomic_long_add_unchecked(x, &vm_stat[item]);
102461 }
102462
102463 -static inline unsigned long global_page_state(enum zone_stat_item item)
102464 +static inline unsigned long __intentional_overflow(-1) global_page_state(enum zone_stat_item item)
102465 {
102466 - long x = atomic_long_read(&vm_stat[item]);
102467 + long x = atomic_long_read_unchecked(&vm_stat[item]);
102468 #ifdef CONFIG_SMP
102469 if (x < 0)
102470 x = 0;
102471 @@ -127,10 +127,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
102472 return x;
102473 }
102474
102475 -static inline unsigned long zone_page_state(struct zone *zone,
102476 +static inline unsigned long __intentional_overflow(-1) zone_page_state(struct zone *zone,
102477 enum zone_stat_item item)
102478 {
102479 - long x = atomic_long_read(&zone->vm_stat[item]);
102480 + long x = atomic_long_read_unchecked(&zone->vm_stat[item]);
102481 #ifdef CONFIG_SMP
102482 if (x < 0)
102483 x = 0;
102484 @@ -147,7 +147,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
102485 static inline unsigned long zone_page_state_snapshot(struct zone *zone,
102486 enum zone_stat_item item)
102487 {
102488 - long x = atomic_long_read(&zone->vm_stat[item]);
102489 + long x = atomic_long_read_unchecked(&zone->vm_stat[item]);
102490
102491 #ifdef CONFIG_SMP
102492 int cpu;
102493 @@ -234,14 +234,14 @@ static inline void __mod_zone_page_state(struct zone *zone,
102494
102495 static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
102496 {
102497 - atomic_long_inc(&zone->vm_stat[item]);
102498 - atomic_long_inc(&vm_stat[item]);
102499 + atomic_long_inc_unchecked(&zone->vm_stat[item]);
102500 + atomic_long_inc_unchecked(&vm_stat[item]);
102501 }
102502
102503 static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
102504 {
102505 - atomic_long_dec(&zone->vm_stat[item]);
102506 - atomic_long_dec(&vm_stat[item]);
102507 + atomic_long_dec_unchecked(&zone->vm_stat[item]);
102508 + atomic_long_dec_unchecked(&vm_stat[item]);
102509 }
102510
102511 static inline void __inc_zone_page_state(struct page *page,
102512 diff --git a/include/linux/xattr.h b/include/linux/xattr.h
102513 index 91b0a68..0e9adf6 100644
102514 --- a/include/linux/xattr.h
102515 +++ b/include/linux/xattr.h
102516 @@ -28,7 +28,7 @@ struct xattr_handler {
102517 size_t size, int handler_flags);
102518 int (*set)(struct dentry *dentry, const char *name, const void *buffer,
102519 size_t size, int flags, int handler_flags);
102520 -};
102521 +} __do_const;
102522
102523 struct xattr {
102524 const char *name;
102525 @@ -37,6 +37,9 @@ struct xattr {
102526 };
102527
102528 ssize_t xattr_getsecurity(struct inode *, const char *, void *, size_t);
102529 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
102530 +ssize_t pax_getxattr(struct dentry *, void *, size_t);
102531 +#endif
102532 ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t);
102533 ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
102534 int __vfs_setxattr_noperm(struct dentry *, const char *, const void *, size_t, int);
102535 diff --git a/include/linux/zlib.h b/include/linux/zlib.h
102536 index 92dbbd3..13ab0b3 100644
102537 --- a/include/linux/zlib.h
102538 +++ b/include/linux/zlib.h
102539 @@ -31,6 +31,7 @@
102540 #define _ZLIB_H
102541
102542 #include <linux/zconf.h>
102543 +#include <linux/compiler.h>
102544
102545 /* zlib deflate based on ZLIB_VERSION "1.1.3" */
102546 /* zlib inflate based on ZLIB_VERSION "1.2.3" */
102547 @@ -179,7 +180,7 @@ typedef z_stream *z_streamp;
102548
102549 /* basic functions */
102550
102551 -extern int zlib_deflate_workspacesize (int windowBits, int memLevel);
102552 +extern int zlib_deflate_workspacesize (int windowBits, int memLevel) __intentional_overflow(0);
102553 /*
102554 Returns the number of bytes that needs to be allocated for a per-
102555 stream workspace with the specified parameters. A pointer to this
102556 diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
102557 index acbcd2f..c3abe84 100644
102558 --- a/include/media/v4l2-dev.h
102559 +++ b/include/media/v4l2-dev.h
102560 @@ -74,7 +74,7 @@ struct v4l2_file_operations {
102561 int (*mmap) (struct file *, struct vm_area_struct *);
102562 int (*open) (struct file *);
102563 int (*release) (struct file *);
102564 -};
102565 +} __do_const;
102566
102567 /*
102568 * Newer version of video_device, handled by videodev2.c
102569 diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h
102570 index 9c58157..d86ebf5 100644
102571 --- a/include/media/v4l2-device.h
102572 +++ b/include/media/v4l2-device.h
102573 @@ -93,7 +93,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4
102574 this function returns 0. If the name ends with a digit (e.g. cx18),
102575 then the name will be set to cx18-0 since cx180 looks really odd. */
102576 int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
102577 - atomic_t *instance);
102578 + atomic_unchecked_t *instance);
102579
102580 /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects.
102581 Since the parent disappears this ensures that v4l2_dev doesn't have an
102582 diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h
102583 index 5122b5e..598b440 100644
102584 --- a/include/net/9p/transport.h
102585 +++ b/include/net/9p/transport.h
102586 @@ -62,7 +62,7 @@ struct p9_trans_module {
102587 int (*cancelled)(struct p9_client *, struct p9_req_t *req);
102588 int (*zc_request)(struct p9_client *, struct p9_req_t *,
102589 struct iov_iter *, struct iov_iter *, int , int, int);
102590 -};
102591 +} __do_const;
102592
102593 void v9fs_register_trans(struct p9_trans_module *m);
102594 void v9fs_unregister_trans(struct p9_trans_module *m);
102595 diff --git a/include/net/af_unix.h b/include/net/af_unix.h
102596 index 4a167b3..73dcbb3 100644
102597 --- a/include/net/af_unix.h
102598 +++ b/include/net/af_unix.h
102599 @@ -36,7 +36,7 @@ struct unix_skb_parms {
102600 u32 secid; /* Security ID */
102601 #endif
102602 u32 consumed;
102603 -};
102604 +} __randomize_layout;
102605
102606 #define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
102607
102608 diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
102609 index 2239a37..a83461f 100644
102610 --- a/include/net/bluetooth/l2cap.h
102611 +++ b/include/net/bluetooth/l2cap.h
102612 @@ -609,7 +609,7 @@ struct l2cap_ops {
102613 struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan,
102614 unsigned long hdr_len,
102615 unsigned long len, int nb);
102616 -};
102617 +} __do_const;
102618
102619 struct l2cap_conn {
102620 struct hci_conn *hcon;
102621 diff --git a/include/net/bonding.h b/include/net/bonding.h
102622 index 20defc0..3072903 100644
102623 --- a/include/net/bonding.h
102624 +++ b/include/net/bonding.h
102625 @@ -661,7 +661,7 @@ extern struct rtnl_link_ops bond_link_ops;
102626
102627 static inline void bond_tx_drop(struct net_device *dev, struct sk_buff *skb)
102628 {
102629 - atomic_long_inc(&dev->tx_dropped);
102630 + atomic_long_inc_unchecked(&dev->tx_dropped);
102631 dev_kfree_skb_any(skb);
102632 }
102633
102634 diff --git a/include/net/caif/cfctrl.h b/include/net/caif/cfctrl.h
102635 index f2ae33d..c457cf0 100644
102636 --- a/include/net/caif/cfctrl.h
102637 +++ b/include/net/caif/cfctrl.h
102638 @@ -52,7 +52,7 @@ struct cfctrl_rsp {
102639 void (*radioset_rsp)(void);
102640 void (*reject_rsp)(struct cflayer *layer, u8 linkid,
102641 struct cflayer *client_layer);
102642 -};
102643 +} __no_const;
102644
102645 /* Link Setup Parameters for CAIF-Links. */
102646 struct cfctrl_link_param {
102647 @@ -101,8 +101,8 @@ struct cfctrl_request_info {
102648 struct cfctrl {
102649 struct cfsrvl serv;
102650 struct cfctrl_rsp res;
102651 - atomic_t req_seq_no;
102652 - atomic_t rsp_seq_no;
102653 + atomic_unchecked_t req_seq_no;
102654 + atomic_unchecked_t rsp_seq_no;
102655 struct list_head list;
102656 /* Protects from simultaneous access to first_req list */
102657 spinlock_t info_list_lock;
102658 diff --git a/include/net/flow.h b/include/net/flow.h
102659 index 8109a15..504466d 100644
102660 --- a/include/net/flow.h
102661 +++ b/include/net/flow.h
102662 @@ -231,6 +231,6 @@ void flow_cache_fini(struct net *net);
102663
102664 void flow_cache_flush(struct net *net);
102665 void flow_cache_flush_deferred(struct net *net);
102666 -extern atomic_t flow_cache_genid;
102667 +extern atomic_unchecked_t flow_cache_genid;
102668
102669 #endif
102670 diff --git a/include/net/genetlink.h b/include/net/genetlink.h
102671 index a9af1cc..1f3fa7b 100644
102672 --- a/include/net/genetlink.h
102673 +++ b/include/net/genetlink.h
102674 @@ -128,7 +128,7 @@ struct genl_ops {
102675 u8 cmd;
102676 u8 internal_flags;
102677 u8 flags;
102678 -};
102679 +} __do_const;
102680
102681 int __genl_register_family(struct genl_family *family);
102682
102683 diff --git a/include/net/gro_cells.h b/include/net/gro_cells.h
102684 index 0f712c0..cd762c4 100644
102685 --- a/include/net/gro_cells.h
102686 +++ b/include/net/gro_cells.h
102687 @@ -27,7 +27,7 @@ static inline void gro_cells_receive(struct gro_cells *gcells, struct sk_buff *s
102688 cell = this_cpu_ptr(gcells->cells);
102689
102690 if (skb_queue_len(&cell->napi_skbs) > netdev_max_backlog) {
102691 - atomic_long_inc(&dev->rx_dropped);
102692 + atomic_long_inc_unchecked(&dev->rx_dropped);
102693 kfree_skb(skb);
102694 return;
102695 }
102696 diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
102697 index 0320bbb..938789c 100644
102698 --- a/include/net/inet_connection_sock.h
102699 +++ b/include/net/inet_connection_sock.h
102700 @@ -63,7 +63,7 @@ struct inet_connection_sock_af_ops {
102701 int (*bind_conflict)(const struct sock *sk,
102702 const struct inet_bind_bucket *tb, bool relax);
102703 void (*mtu_reduced)(struct sock *sk);
102704 -};
102705 +} __do_const;
102706
102707 /** inet_connection_sock - INET connection oriented sock
102708 *
102709 diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
102710 index 47eb67b..0e733b2 100644
102711 --- a/include/net/inet_sock.h
102712 +++ b/include/net/inet_sock.h
102713 @@ -43,7 +43,7 @@
102714 struct ip_options {
102715 __be32 faddr;
102716 __be32 nexthop;
102717 - unsigned char optlen;
102718 + unsigned char optlen __intentional_overflow(0);
102719 unsigned char srr;
102720 unsigned char rr;
102721 unsigned char ts;
102722 diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
102723 index d5332dd..10a5c3c 100644
102724 --- a/include/net/inetpeer.h
102725 +++ b/include/net/inetpeer.h
102726 @@ -48,7 +48,7 @@ struct inet_peer {
102727 */
102728 union {
102729 struct {
102730 - atomic_t rid; /* Frag reception counter */
102731 + atomic_unchecked_t rid; /* Frag reception counter */
102732 };
102733 struct rcu_head rcu;
102734 struct inet_peer *gc_next;
102735 diff --git a/include/net/ip.h b/include/net/ip.h
102736 index d5fe9f2..8da10ed 100644
102737 --- a/include/net/ip.h
102738 +++ b/include/net/ip.h
102739 @@ -319,7 +319,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb)
102740 }
102741 }
102742
102743 -u32 ip_idents_reserve(u32 hash, int segs);
102744 +u32 ip_idents_reserve(u32 hash, int segs) __intentional_overflow(-1);
102745 void __ip_select_ident(struct net *net, struct iphdr *iph, int segs);
102746
102747 static inline void ip_select_ident_segs(struct net *net, struct sk_buff *skb,
102748 diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
102749 index 5fa643b..d871e20 100644
102750 --- a/include/net/ip_fib.h
102751 +++ b/include/net/ip_fib.h
102752 @@ -170,7 +170,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh);
102753
102754 #define FIB_RES_SADDR(net, res) \
102755 ((FIB_RES_NH(res).nh_saddr_genid == \
102756 - atomic_read(&(net)->ipv4.dev_addr_genid)) ? \
102757 + atomic_read_unchecked(&(net)->ipv4.dev_addr_genid)) ? \
102758 FIB_RES_NH(res).nh_saddr : \
102759 fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
102760 #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw)
102761 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
102762 index 4e3731e..a242e28 100644
102763 --- a/include/net/ip_vs.h
102764 +++ b/include/net/ip_vs.h
102765 @@ -551,7 +551,7 @@ struct ip_vs_conn {
102766 struct ip_vs_conn *control; /* Master control connection */
102767 atomic_t n_control; /* Number of controlled ones */
102768 struct ip_vs_dest *dest; /* real server */
102769 - atomic_t in_pkts; /* incoming packet counter */
102770 + atomic_unchecked_t in_pkts; /* incoming packet counter */
102771
102772 /* Packet transmitter for different forwarding methods. If it
102773 * mangles the packet, it must return NF_DROP or better NF_STOLEN,
102774 @@ -699,7 +699,7 @@ struct ip_vs_dest {
102775 __be16 port; /* port number of the server */
102776 union nf_inet_addr addr; /* IP address of the server */
102777 volatile unsigned int flags; /* dest status flags */
102778 - atomic_t conn_flags; /* flags to copy to conn */
102779 + atomic_unchecked_t conn_flags; /* flags to copy to conn */
102780 atomic_t weight; /* server weight */
102781
102782 atomic_t refcnt; /* reference counter */
102783 @@ -946,11 +946,11 @@ struct netns_ipvs {
102784 /* ip_vs_lblc */
102785 int sysctl_lblc_expiration;
102786 struct ctl_table_header *lblc_ctl_header;
102787 - struct ctl_table *lblc_ctl_table;
102788 + ctl_table_no_const *lblc_ctl_table;
102789 /* ip_vs_lblcr */
102790 int sysctl_lblcr_expiration;
102791 struct ctl_table_header *lblcr_ctl_header;
102792 - struct ctl_table *lblcr_ctl_table;
102793 + ctl_table_no_const *lblcr_ctl_table;
102794 /* ip_vs_est */
102795 struct list_head est_list; /* estimator list */
102796 spinlock_t est_lock;
102797 diff --git a/include/net/irda/ircomm_tty.h b/include/net/irda/ircomm_tty.h
102798 index 8d4f588..2e37ad2 100644
102799 --- a/include/net/irda/ircomm_tty.h
102800 +++ b/include/net/irda/ircomm_tty.h
102801 @@ -33,6 +33,7 @@
102802 #include <linux/termios.h>
102803 #include <linux/timer.h>
102804 #include <linux/tty.h> /* struct tty_struct */
102805 +#include <asm/local.h>
102806
102807 #include <net/irda/irias_object.h>
102808 #include <net/irda/ircomm_core.h>
102809 diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h
102810 index 714cc9a..ea05f3e 100644
102811 --- a/include/net/iucv/af_iucv.h
102812 +++ b/include/net/iucv/af_iucv.h
102813 @@ -149,7 +149,7 @@ struct iucv_skb_cb {
102814 struct iucv_sock_list {
102815 struct hlist_head head;
102816 rwlock_t lock;
102817 - atomic_t autobind_name;
102818 + atomic_unchecked_t autobind_name;
102819 };
102820
102821 unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
102822 diff --git a/include/net/llc_c_ac.h b/include/net/llc_c_ac.h
102823 index f3be818..bf46196 100644
102824 --- a/include/net/llc_c_ac.h
102825 +++ b/include/net/llc_c_ac.h
102826 @@ -87,7 +87,7 @@
102827 #define LLC_CONN_AC_STOP_SENDACK_TMR 70
102828 #define LLC_CONN_AC_START_SENDACK_TMR_IF_NOT_RUNNING 71
102829
102830 -typedef int (*llc_conn_action_t)(struct sock *sk, struct sk_buff *skb);
102831 +typedef int (* const llc_conn_action_t)(struct sock *sk, struct sk_buff *skb);
102832
102833 int llc_conn_ac_clear_remote_busy(struct sock *sk, struct sk_buff *skb);
102834 int llc_conn_ac_conn_ind(struct sock *sk, struct sk_buff *skb);
102835 diff --git a/include/net/llc_c_ev.h b/include/net/llc_c_ev.h
102836 index 3948cf1..83b28c4 100644
102837 --- a/include/net/llc_c_ev.h
102838 +++ b/include/net/llc_c_ev.h
102839 @@ -125,8 +125,8 @@ static __inline__ struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb)
102840 return (struct llc_conn_state_ev *)skb->cb;
102841 }
102842
102843 -typedef int (*llc_conn_ev_t)(struct sock *sk, struct sk_buff *skb);
102844 -typedef int (*llc_conn_ev_qfyr_t)(struct sock *sk, struct sk_buff *skb);
102845 +typedef int (* const llc_conn_ev_t)(struct sock *sk, struct sk_buff *skb);
102846 +typedef int (* const llc_conn_ev_qfyr_t)(struct sock *sk, struct sk_buff *skb);
102847
102848 int llc_conn_ev_conn_req(struct sock *sk, struct sk_buff *skb);
102849 int llc_conn_ev_data_req(struct sock *sk, struct sk_buff *skb);
102850 diff --git a/include/net/llc_c_st.h b/include/net/llc_c_st.h
102851 index 48f3f89..0e92c50 100644
102852 --- a/include/net/llc_c_st.h
102853 +++ b/include/net/llc_c_st.h
102854 @@ -37,7 +37,7 @@ struct llc_conn_state_trans {
102855 u8 next_state;
102856 const llc_conn_ev_qfyr_t *ev_qualifiers;
102857 const llc_conn_action_t *ev_actions;
102858 -};
102859 +} __do_const;
102860
102861 struct llc_conn_state {
102862 u8 current_state;
102863 diff --git a/include/net/llc_s_ac.h b/include/net/llc_s_ac.h
102864 index a61b98c..aade1eb 100644
102865 --- a/include/net/llc_s_ac.h
102866 +++ b/include/net/llc_s_ac.h
102867 @@ -23,7 +23,7 @@
102868 #define SAP_ACT_TEST_IND 9
102869
102870 /* All action functions must look like this */
102871 -typedef int (*llc_sap_action_t)(struct llc_sap *sap, struct sk_buff *skb);
102872 +typedef int (* const llc_sap_action_t)(struct llc_sap *sap, struct sk_buff *skb);
102873
102874 int llc_sap_action_unitdata_ind(struct llc_sap *sap, struct sk_buff *skb);
102875 int llc_sap_action_send_ui(struct llc_sap *sap, struct sk_buff *skb);
102876 diff --git a/include/net/llc_s_st.h b/include/net/llc_s_st.h
102877 index c4359e2..76dbc4a 100644
102878 --- a/include/net/llc_s_st.h
102879 +++ b/include/net/llc_s_st.h
102880 @@ -20,7 +20,7 @@ struct llc_sap_state_trans {
102881 llc_sap_ev_t ev;
102882 u8 next_state;
102883 const llc_sap_action_t *ev_actions;
102884 -};
102885 +} __do_const;
102886
102887 struct llc_sap_state {
102888 u8 curr_state;
102889 diff --git a/include/net/mac80211.h b/include/net/mac80211.h
102890 index 6b1077c..7b72f67 100644
102891 --- a/include/net/mac80211.h
102892 +++ b/include/net/mac80211.h
102893 @@ -5106,7 +5106,7 @@ struct ieee80211_tx_rate_control {
102894 struct sk_buff *skb;
102895 struct ieee80211_tx_rate reported_rate;
102896 bool rts, short_preamble;
102897 - u8 max_rate_idx;
102898 + s8 max_rate_idx;
102899 u32 rate_idx_mask;
102900 u8 *rate_idx_mcs_mask;
102901 bool bss;
102902 @@ -5143,7 +5143,7 @@ struct rate_control_ops {
102903 void (*remove_sta_debugfs)(void *priv, void *priv_sta);
102904
102905 u32 (*get_expected_throughput)(void *priv_sta);
102906 -};
102907 +} __do_const;
102908
102909 static inline int rate_supported(struct ieee80211_sta *sta,
102910 enum ieee80211_band band,
102911 diff --git a/include/net/neighbour.h b/include/net/neighbour.h
102912 index bd33e66..6508d00 100644
102913 --- a/include/net/neighbour.h
102914 +++ b/include/net/neighbour.h
102915 @@ -162,7 +162,7 @@ struct neigh_ops {
102916 void (*error_report)(struct neighbour *, struct sk_buff *);
102917 int (*output)(struct neighbour *, struct sk_buff *);
102918 int (*connected_output)(struct neighbour *, struct sk_buff *);
102919 -};
102920 +} __do_const;
102921
102922 struct pneigh_entry {
102923 struct pneigh_entry *next;
102924 @@ -216,7 +216,7 @@ struct neigh_table {
102925 struct neigh_statistics __percpu *stats;
102926 struct neigh_hash_table __rcu *nht;
102927 struct pneigh_entry **phash_buckets;
102928 -};
102929 +} __randomize_layout;
102930
102931 enum {
102932 NEIGH_ARP_TABLE = 0,
102933 diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
102934 index e951453..0685f5b 100644
102935 --- a/include/net/net_namespace.h
102936 +++ b/include/net/net_namespace.h
102937 @@ -53,7 +53,7 @@ struct net {
102938 */
102939 spinlock_t rules_mod_lock;
102940
102941 - atomic64_t cookie_gen;
102942 + atomic64_unchecked_t cookie_gen;
102943
102944 struct list_head list; /* list of network namespaces */
102945 struct list_head cleanup_list; /* namespaces on death row */
102946 @@ -135,8 +135,8 @@ struct net {
102947 struct netns_mpls mpls;
102948 #endif
102949 struct sock *diag_nlsk;
102950 - atomic_t fnhe_genid;
102951 -};
102952 + atomic_unchecked_t fnhe_genid;
102953 +} __randomize_layout;
102954
102955 #include <linux/seq_file_net.h>
102956
102957 @@ -271,7 +271,11 @@ static inline struct net *read_pnet(const possible_net_t *pnet)
102958 #define __net_init __init
102959 #define __net_exit __exit_refok
102960 #define __net_initdata __initdata
102961 +#ifdef CONSTIFY_PLUGIN
102962 #define __net_initconst __initconst
102963 +#else
102964 +#define __net_initconst __initdata
102965 +#endif
102966 #endif
102967
102968 int peernet2id_alloc(struct net *net, struct net *peer);
102969 @@ -286,7 +290,7 @@ struct pernet_operations {
102970 void (*exit_batch)(struct list_head *net_exit_list);
102971 int *id;
102972 size_t size;
102973 -};
102974 +} __do_const;
102975
102976 /*
102977 * Use these carefully. If you implement a network device and it
102978 @@ -334,12 +338,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)
102979
102980 static inline int rt_genid_ipv4(struct net *net)
102981 {
102982 - return atomic_read(&net->ipv4.rt_genid);
102983 + return atomic_read_unchecked(&net->ipv4.rt_genid);
102984 }
102985
102986 static inline void rt_genid_bump_ipv4(struct net *net)
102987 {
102988 - atomic_inc(&net->ipv4.rt_genid);
102989 + atomic_inc_unchecked(&net->ipv4.rt_genid);
102990 }
102991
102992 extern void (*__fib6_flush_trees)(struct net *net);
102993 @@ -366,12 +370,12 @@ static inline void rt_genid_bump_all(struct net *net)
102994
102995 static inline int fnhe_genid(struct net *net)
102996 {
102997 - return atomic_read(&net->fnhe_genid);
102998 + return atomic_read_unchecked(&net->fnhe_genid);
102999 }
103000
103001 static inline void fnhe_genid_bump(struct net *net)
103002 {
103003 - atomic_inc(&net->fnhe_genid);
103004 + atomic_inc_unchecked(&net->fnhe_genid);
103005 }
103006
103007 #endif /* __NET_NET_NAMESPACE_H */
103008 diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
103009 index 37cd391..4023c4c 100644
103010 --- a/include/net/netfilter/nf_conntrack.h
103011 +++ b/include/net/netfilter/nf_conntrack.h
103012 @@ -292,6 +292,7 @@ extern unsigned int nf_conntrack_hash_rnd;
103013 void init_nf_conntrack_hash_rnd(void);
103014
103015 struct nf_conn *nf_ct_tmpl_alloc(struct net *net, u16 zone, gfp_t flags);
103016 +void nf_ct_tmpl_free(struct nf_conn *tmpl);
103017
103018 #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count)
103019 #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count)
103020 diff --git a/include/net/netlink.h b/include/net/netlink.h
103021 index 2a5dbcc..8243656 100644
103022 --- a/include/net/netlink.h
103023 +++ b/include/net/netlink.h
103024 @@ -521,7 +521,7 @@ static inline void nlmsg_trim(struct sk_buff *skb, const void *mark)
103025 {
103026 if (mark) {
103027 WARN_ON((unsigned char *) mark < skb->data);
103028 - skb_trim(skb, (unsigned char *) mark - skb->data);
103029 + skb_trim(skb, (const unsigned char *) mark - skb->data);
103030 }
103031 }
103032
103033 diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
103034 index 723b61c..4386367 100644
103035 --- a/include/net/netns/conntrack.h
103036 +++ b/include/net/netns/conntrack.h
103037 @@ -14,10 +14,10 @@ struct nf_conntrack_ecache;
103038 struct nf_proto_net {
103039 #ifdef CONFIG_SYSCTL
103040 struct ctl_table_header *ctl_table_header;
103041 - struct ctl_table *ctl_table;
103042 + ctl_table_no_const *ctl_table;
103043 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
103044 struct ctl_table_header *ctl_compat_header;
103045 - struct ctl_table *ctl_compat_table;
103046 + ctl_table_no_const *ctl_compat_table;
103047 #endif
103048 #endif
103049 unsigned int users;
103050 @@ -60,7 +60,7 @@ struct nf_ip_net {
103051 struct nf_icmp_net icmpv6;
103052 #if defined(CONFIG_SYSCTL) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT)
103053 struct ctl_table_header *ctl_table_header;
103054 - struct ctl_table *ctl_table;
103055 + ctl_table_no_const *ctl_table;
103056 #endif
103057 };
103058
103059 diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
103060 index c68926b..106c147 100644
103061 --- a/include/net/netns/ipv4.h
103062 +++ b/include/net/netns/ipv4.h
103063 @@ -93,7 +93,7 @@ struct netns_ipv4 {
103064
103065 struct ping_group_range ping_group_range;
103066
103067 - atomic_t dev_addr_genid;
103068 + atomic_unchecked_t dev_addr_genid;
103069
103070 #ifdef CONFIG_SYSCTL
103071 unsigned long *sysctl_local_reserved_ports;
103072 @@ -107,6 +107,6 @@ struct netns_ipv4 {
103073 struct fib_rules_ops *mr_rules_ops;
103074 #endif
103075 #endif
103076 - atomic_t rt_genid;
103077 + atomic_unchecked_t rt_genid;
103078 };
103079 #endif
103080 diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
103081 index 8d93544..05c3e89 100644
103082 --- a/include/net/netns/ipv6.h
103083 +++ b/include/net/netns/ipv6.h
103084 @@ -79,8 +79,8 @@ struct netns_ipv6 {
103085 struct fib_rules_ops *mr6_rules_ops;
103086 #endif
103087 #endif
103088 - atomic_t dev_addr_genid;
103089 - atomic_t fib6_sernum;
103090 + atomic_unchecked_t dev_addr_genid;
103091 + atomic_unchecked_t fib6_sernum;
103092 };
103093
103094 #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
103095 diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
103096 index 730d82a..045f2c4 100644
103097 --- a/include/net/netns/xfrm.h
103098 +++ b/include/net/netns/xfrm.h
103099 @@ -78,7 +78,7 @@ struct netns_xfrm {
103100
103101 /* flow cache part */
103102 struct flow_cache flow_cache_global;
103103 - atomic_t flow_cache_genid;
103104 + atomic_unchecked_t flow_cache_genid;
103105 struct list_head flow_cache_gc_list;
103106 spinlock_t flow_cache_gc_lock;
103107 struct work_struct flow_cache_gc_work;
103108 diff --git a/include/net/ping.h b/include/net/ping.h
103109 index ac80cb4..ec1ed09 100644
103110 --- a/include/net/ping.h
103111 +++ b/include/net/ping.h
103112 @@ -54,7 +54,7 @@ struct ping_iter_state {
103113
103114 extern struct proto ping_prot;
103115 #if IS_ENABLED(CONFIG_IPV6)
103116 -extern struct pingv6_ops pingv6_ops;
103117 +extern struct pingv6_ops *pingv6_ops;
103118 #endif
103119
103120 struct pingfakehdr {
103121 diff --git a/include/net/protocol.h b/include/net/protocol.h
103122 index d6fcc1f..ca277058 100644
103123 --- a/include/net/protocol.h
103124 +++ b/include/net/protocol.h
103125 @@ -49,7 +49,7 @@ struct net_protocol {
103126 * socket lookup?
103127 */
103128 icmp_strict_tag_validation:1;
103129 -};
103130 +} __do_const;
103131
103132 #if IS_ENABLED(CONFIG_IPV6)
103133 struct inet6_protocol {
103134 @@ -62,7 +62,7 @@ struct inet6_protocol {
103135 u8 type, u8 code, int offset,
103136 __be32 info);
103137 unsigned int flags; /* INET6_PROTO_xxx */
103138 -};
103139 +} __do_const;
103140
103141 #define INET6_PROTO_NOPOLICY 0x1
103142 #define INET6_PROTO_FINAL 0x2
103143 diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
103144 index 343d922..7959cde 100644
103145 --- a/include/net/rtnetlink.h
103146 +++ b/include/net/rtnetlink.h
103147 @@ -95,7 +95,7 @@ struct rtnl_link_ops {
103148 const struct net_device *dev,
103149 const struct net_device *slave_dev);
103150 struct net *(*get_link_net)(const struct net_device *dev);
103151 -};
103152 +} __do_const;
103153
103154 int __rtnl_link_register(struct rtnl_link_ops *ops);
103155 void __rtnl_link_unregister(struct rtnl_link_ops *ops);
103156 diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h
103157 index 4a5b9a3..ca27d73 100644
103158 --- a/include/net/sctp/checksum.h
103159 +++ b/include/net/sctp/checksum.h
103160 @@ -61,8 +61,8 @@ static inline __le32 sctp_compute_cksum(const struct sk_buff *skb,
103161 unsigned int offset)
103162 {
103163 struct sctphdr *sh = sctp_hdr(skb);
103164 - __le32 ret, old = sh->checksum;
103165 - const struct skb_checksum_ops ops = {
103166 + __le32 ret, old = sh->checksum;
103167 + static const struct skb_checksum_ops ops = {
103168 .update = sctp_csum_update,
103169 .combine = sctp_csum_combine,
103170 };
103171 diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
103172 index 487ef34..d457f98 100644
103173 --- a/include/net/sctp/sm.h
103174 +++ b/include/net/sctp/sm.h
103175 @@ -80,7 +80,7 @@ typedef void (sctp_timer_event_t) (unsigned long);
103176 typedef struct {
103177 sctp_state_fn_t *fn;
103178 const char *name;
103179 -} sctp_sm_table_entry_t;
103180 +} __do_const sctp_sm_table_entry_t;
103181
103182 /* A naming convention of "sctp_sf_xxx" applies to all the state functions
103183 * currently in use.
103184 @@ -292,7 +292,7 @@ __u32 sctp_generate_tag(const struct sctp_endpoint *);
103185 __u32 sctp_generate_tsn(const struct sctp_endpoint *);
103186
103187 /* Extern declarations for major data structures. */
103188 -extern sctp_timer_event_t *sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES];
103189 +extern sctp_timer_event_t * const sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES];
103190
103191
103192 /* Get the size of a DATA chunk payload. */
103193 diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
103194 index 495c87e..5b327ff 100644
103195 --- a/include/net/sctp/structs.h
103196 +++ b/include/net/sctp/structs.h
103197 @@ -513,7 +513,7 @@ struct sctp_pf {
103198 void (*to_sk_saddr)(union sctp_addr *, struct sock *sk);
103199 void (*to_sk_daddr)(union sctp_addr *, struct sock *sk);
103200 struct sctp_af *af;
103201 -};
103202 +} __do_const;
103203
103204
103205 /* Structure to track chunk fragments that have been acked, but peer
103206 diff --git a/include/net/sock.h b/include/net/sock.h
103207 index f21f070..29ac73e 100644
103208 --- a/include/net/sock.h
103209 +++ b/include/net/sock.h
103210 @@ -198,7 +198,7 @@ struct sock_common {
103211 struct in6_addr skc_v6_rcv_saddr;
103212 #endif
103213
103214 - atomic64_t skc_cookie;
103215 + atomic64_unchecked_t skc_cookie;
103216
103217 /*
103218 * fields between dontcopy_begin/dontcopy_end
103219 @@ -364,7 +364,7 @@ struct sock {
103220 unsigned int sk_napi_id;
103221 unsigned int sk_ll_usec;
103222 #endif
103223 - atomic_t sk_drops;
103224 + atomic_unchecked_t sk_drops;
103225 int sk_rcvbuf;
103226
103227 struct sk_filter __rcu *sk_filter;
103228 @@ -1038,7 +1038,7 @@ struct proto {
103229 void (*destroy_cgroup)(struct mem_cgroup *memcg);
103230 struct cg_proto *(*proto_cgroup)(struct mem_cgroup *memcg);
103231 #endif
103232 -};
103233 +} __randomize_layout;
103234
103235 /*
103236 * Bits in struct cg_proto.flags
103237 @@ -1211,7 +1211,7 @@ static inline void memcg_memory_allocated_sub(struct cg_proto *prot,
103238 page_counter_uncharge(&prot->memory_allocated, amt);
103239 }
103240
103241 -static inline long
103242 +static inline long __intentional_overflow(-1)
103243 sk_memory_allocated(const struct sock *sk)
103244 {
103245 struct proto *prot = sk->sk_prot;
103246 @@ -1776,7 +1776,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
103247 }
103248
103249 static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
103250 - struct iov_iter *from, char *to,
103251 + struct iov_iter *from, unsigned char *to,
103252 int copy, int offset)
103253 {
103254 if (skb->ip_summed == CHECKSUM_NONE) {
103255 @@ -2023,7 +2023,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
103256 }
103257 }
103258
103259 -struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp,
103260 +struct sk_buff * __intentional_overflow(0) sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp,
103261 bool force_schedule);
103262
103263 /**
103264 @@ -2099,7 +2099,7 @@ struct sock_skb_cb {
103265 static inline void
103266 sock_skb_set_dropcount(const struct sock *sk, struct sk_buff *skb)
103267 {
103268 - SOCK_SKB_CB(skb)->dropcount = atomic_read(&sk->sk_drops);
103269 + SOCK_SKB_CB(skb)->dropcount = atomic_read_unchecked(&sk->sk_drops);
103270 }
103271
103272 void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
103273 diff --git a/include/net/tcp.h b/include/net/tcp.h
103274 index 950cfec..0bf9d85 100644
103275 --- a/include/net/tcp.h
103276 +++ b/include/net/tcp.h
103277 @@ -546,7 +546,7 @@ void tcp_retransmit_timer(struct sock *sk);
103278 void tcp_xmit_retransmit_queue(struct sock *);
103279 void tcp_simple_retransmit(struct sock *);
103280 int tcp_trim_head(struct sock *, struct sk_buff *, u32);
103281 -int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
103282 +int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t) __intentional_overflow(3);
103283
103284 void tcp_send_probe0(struct sock *);
103285 void tcp_send_partial(struct sock *);
103286 @@ -724,8 +724,8 @@ static inline u32 tcp_skb_timestamp(const struct sk_buff *skb)
103287 * If this grows please adjust skbuff.h:skbuff->cb[xxx] size appropriately.
103288 */
103289 struct tcp_skb_cb {
103290 - __u32 seq; /* Starting sequence number */
103291 - __u32 end_seq; /* SEQ + FIN + SYN + datalen */
103292 + __u32 seq __intentional_overflow(-1); /* Starting sequence number */
103293 + __u32 end_seq __intentional_overflow(-1); /* SEQ + FIN + SYN + datalen */
103294 union {
103295 /* Note : tcp_tw_isn is used in input path only
103296 * (isn chosen by tcp_timewait_state_process())
103297 @@ -753,7 +753,7 @@ struct tcp_skb_cb {
103298
103299 __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */
103300 /* 1 byte hole */
103301 - __u32 ack_seq; /* Sequence number ACK'd */
103302 + __u32 ack_seq __intentional_overflow(-1); /* Sequence number ACK'd */
103303 union {
103304 struct inet_skb_parm h4;
103305 #if IS_ENABLED(CONFIG_IPV6)
103306 diff --git a/include/net/xfrm.h b/include/net/xfrm.h
103307 index f0ee97e..73e2b5a 100644
103308 --- a/include/net/xfrm.h
103309 +++ b/include/net/xfrm.h
103310 @@ -284,7 +284,6 @@ struct xfrm_dst;
103311 struct xfrm_policy_afinfo {
103312 unsigned short family;
103313 struct dst_ops *dst_ops;
103314 - void (*garbage_collect)(struct net *net);
103315 struct dst_entry *(*dst_lookup)(struct net *net, int tos,
103316 const xfrm_address_t *saddr,
103317 const xfrm_address_t *daddr);
103318 @@ -302,7 +301,7 @@ struct xfrm_policy_afinfo {
103319 struct net_device *dev,
103320 const struct flowi *fl);
103321 struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig);
103322 -};
103323 +} __do_const;
103324
103325 int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo);
103326 int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo);
103327 @@ -341,7 +340,7 @@ struct xfrm_state_afinfo {
103328 int (*transport_finish)(struct sk_buff *skb,
103329 int async);
103330 void (*local_error)(struct sk_buff *skb, u32 mtu);
103331 -};
103332 +} __do_const;
103333
103334 int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo);
103335 int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo);
103336 @@ -436,7 +435,7 @@ struct xfrm_mode {
103337 struct module *owner;
103338 unsigned int encap;
103339 int flags;
103340 -};
103341 +} __do_const;
103342
103343 /* Flags for xfrm_mode. */
103344 enum {
103345 @@ -531,7 +530,7 @@ struct xfrm_policy {
103346 struct timer_list timer;
103347
103348 struct flow_cache_object flo;
103349 - atomic_t genid;
103350 + atomic_unchecked_t genid;
103351 u32 priority;
103352 u32 index;
103353 struct xfrm_mark mark;
103354 @@ -1164,6 +1163,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
103355 }
103356
103357 void xfrm_garbage_collect(struct net *net);
103358 +void xfrm_garbage_collect_deferred(struct net *net);
103359
103360 #else
103361
103362 @@ -1202,6 +1202,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
103363 static inline void xfrm_garbage_collect(struct net *net)
103364 {
103365 }
103366 +static inline void xfrm_garbage_collect_deferred(struct net *net)
103367 +{
103368 +}
103369 #endif
103370
103371 static __inline__
103372 diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h
103373 index 036bd27..c0d7f17 100644
103374 --- a/include/rdma/iw_cm.h
103375 +++ b/include/rdma/iw_cm.h
103376 @@ -123,7 +123,7 @@ struct iw_cm_verbs {
103377 int backlog);
103378
103379 int (*destroy_listen)(struct iw_cm_id *cm_id);
103380 -};
103381 +} __no_const;
103382
103383 /**
103384 * iw_create_cm_id - Create an IW CM identifier.
103385 diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
103386 index 93d14da..734b3d8 100644
103387 --- a/include/scsi/libfc.h
103388 +++ b/include/scsi/libfc.h
103389 @@ -771,6 +771,7 @@ struct libfc_function_template {
103390 */
103391 void (*disc_stop_final) (struct fc_lport *);
103392 };
103393 +typedef struct libfc_function_template __no_const libfc_function_template_no_const;
103394
103395 /**
103396 * struct fc_disc - Discovery context
103397 @@ -875,7 +876,7 @@ struct fc_lport {
103398 struct fc_vport *vport;
103399
103400 /* Operational Information */
103401 - struct libfc_function_template tt;
103402 + libfc_function_template_no_const tt;
103403 u8 link_up;
103404 u8 qfull;
103405 enum fc_lport_state state;
103406 diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
103407 index ae84b22..7954097 100644
103408 --- a/include/scsi/scsi_device.h
103409 +++ b/include/scsi/scsi_device.h
103410 @@ -185,9 +185,9 @@ struct scsi_device {
103411 unsigned int max_device_blocked; /* what device_blocked counts down from */
103412 #define SCSI_DEFAULT_DEVICE_BLOCKED 3
103413
103414 - atomic_t iorequest_cnt;
103415 - atomic_t iodone_cnt;
103416 - atomic_t ioerr_cnt;
103417 + atomic_unchecked_t iorequest_cnt;
103418 + atomic_unchecked_t iodone_cnt;
103419 + atomic_unchecked_t ioerr_cnt;
103420
103421 struct device sdev_gendev,
103422 sdev_dev;
103423 diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h
103424 index 891a658..fcd68df 100644
103425 --- a/include/scsi/scsi_driver.h
103426 +++ b/include/scsi/scsi_driver.h
103427 @@ -14,7 +14,7 @@ struct scsi_driver {
103428 void (*rescan)(struct device *);
103429 int (*init_command)(struct scsi_cmnd *);
103430 void (*uninit_command)(struct scsi_cmnd *);
103431 - int (*done)(struct scsi_cmnd *);
103432 + unsigned int (*done)(struct scsi_cmnd *);
103433 int (*eh_action)(struct scsi_cmnd *, int);
103434 };
103435 #define to_scsi_driver(drv) \
103436 diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
103437 index 784bc2c..855a04c 100644
103438 --- a/include/scsi/scsi_transport_fc.h
103439 +++ b/include/scsi/scsi_transport_fc.h
103440 @@ -757,7 +757,8 @@ struct fc_function_template {
103441 unsigned long show_host_system_hostname:1;
103442
103443 unsigned long disable_target_scan:1;
103444 -};
103445 +} __do_const;
103446 +typedef struct fc_function_template __no_const fc_function_template_no_const;
103447
103448
103449 /**
103450 diff --git a/include/scsi/sg.h b/include/scsi/sg.h
103451 index 3afec70..b196b43 100644
103452 --- a/include/scsi/sg.h
103453 +++ b/include/scsi/sg.h
103454 @@ -52,7 +52,7 @@ typedef struct sg_io_hdr
103455 or scatter gather list */
103456 unsigned char __user *cmdp; /* [i], [*i] points to command to perform */
103457 void __user *sbp; /* [i], [*o] points to sense_buffer memory */
103458 - unsigned int timeout; /* [i] MAX_UINT->no timeout (unit: millisec) */
103459 + unsigned int timeout __intentional_overflow(-1); /* [i] MAX_UINT->no timeout (unit: millisec) */
103460 unsigned int flags; /* [i] 0 -> default, see SG_FLAG... */
103461 int pack_id; /* [i->o] unused internally (normally) */
103462 void __user * usr_ptr; /* [i->o] unused internally */
103463 diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
103464 index fa1d055..3647940 100644
103465 --- a/include/sound/compress_driver.h
103466 +++ b/include/sound/compress_driver.h
103467 @@ -130,7 +130,7 @@ struct snd_compr_ops {
103468 struct snd_compr_caps *caps);
103469 int (*get_codec_caps) (struct snd_compr_stream *stream,
103470 struct snd_compr_codec_caps *codec);
103471 -};
103472 +} __no_const;
103473
103474 /**
103475 * struct snd_compr: Compressed device
103476 diff --git a/include/sound/soc.h b/include/sound/soc.h
103477 index 93df8bf..c84577b 100644
103478 --- a/include/sound/soc.h
103479 +++ b/include/sound/soc.h
103480 @@ -883,7 +883,7 @@ struct snd_soc_codec_driver {
103481 enum snd_soc_dapm_type, int);
103482
103483 bool ignore_pmdown_time; /* Doesn't benefit from pmdown delay */
103484 -};
103485 +} __do_const;
103486
103487 /* SoC platform interface */
103488 struct snd_soc_platform_driver {
103489 @@ -910,7 +910,7 @@ struct snd_soc_platform_driver {
103490 const struct snd_compr_ops *compr_ops;
103491
103492 int (*bespoke_trigger)(struct snd_pcm_substream *, int);
103493 -};
103494 +} __do_const;
103495
103496 struct snd_soc_dai_link_component {
103497 const char *name;
103498 diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
103499 index 17ae2d6..2c06382 100644
103500 --- a/include/target/target_core_base.h
103501 +++ b/include/target/target_core_base.h
103502 @@ -751,7 +751,7 @@ struct se_device {
103503 atomic_long_t write_bytes;
103504 /* Active commands on this virtual SE device */
103505 atomic_t simple_cmds;
103506 - atomic_t dev_ordered_id;
103507 + atomic_unchecked_t dev_ordered_id;
103508 atomic_t dev_ordered_sync;
103509 atomic_t dev_qf_count;
103510 u32 export_count;
103511 diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
103512 new file mode 100644
103513 index 0000000..fb634b7
103514 --- /dev/null
103515 +++ b/include/trace/events/fs.h
103516 @@ -0,0 +1,53 @@
103517 +#undef TRACE_SYSTEM
103518 +#define TRACE_SYSTEM fs
103519 +
103520 +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ)
103521 +#define _TRACE_FS_H
103522 +
103523 +#include <linux/fs.h>
103524 +#include <linux/tracepoint.h>
103525 +
103526 +TRACE_EVENT(do_sys_open,
103527 +
103528 + TP_PROTO(const char *filename, int flags, int mode),
103529 +
103530 + TP_ARGS(filename, flags, mode),
103531 +
103532 + TP_STRUCT__entry(
103533 + __string( filename, filename )
103534 + __field( int, flags )
103535 + __field( int, mode )
103536 + ),
103537 +
103538 + TP_fast_assign(
103539 + __assign_str(filename, filename);
103540 + __entry->flags = flags;
103541 + __entry->mode = mode;
103542 + ),
103543 +
103544 + TP_printk("\"%s\" %x %o",
103545 + __get_str(filename), __entry->flags, __entry->mode)
103546 +);
103547 +
103548 +TRACE_EVENT(open_exec,
103549 +
103550 + TP_PROTO(const char *filename),
103551 +
103552 + TP_ARGS(filename),
103553 +
103554 + TP_STRUCT__entry(
103555 + __string( filename, filename )
103556 + ),
103557 +
103558 + TP_fast_assign(
103559 + __assign_str(filename, filename);
103560 + ),
103561 +
103562 + TP_printk("\"%s\"",
103563 + __get_str(filename))
103564 +);
103565 +
103566 +#endif /* _TRACE_FS_H */
103567 +
103568 +/* This part must be outside protection */
103569 +#include <trace/define_trace.h>
103570 diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
103571 index ff8f6c0..6b6bae3 100644
103572 --- a/include/trace/events/irq.h
103573 +++ b/include/trace/events/irq.h
103574 @@ -51,7 +51,7 @@ SOFTIRQ_NAME_LIST
103575 */
103576 TRACE_EVENT(irq_handler_entry,
103577
103578 - TP_PROTO(int irq, struct irqaction *action),
103579 + TP_PROTO(int irq, const struct irqaction *action),
103580
103581 TP_ARGS(irq, action),
103582
103583 @@ -81,7 +81,7 @@ TRACE_EVENT(irq_handler_entry,
103584 */
103585 TRACE_EVENT(irq_handler_exit,
103586
103587 - TP_PROTO(int irq, struct irqaction *action, int ret),
103588 + TP_PROTO(int irq, const struct irqaction *action, int ret),
103589
103590 TP_ARGS(irq, action, ret),
103591
103592 diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
103593 index db809b7..05a44aa 100644
103594 --- a/include/uapi/drm/i915_drm.h
103595 +++ b/include/uapi/drm/i915_drm.h
103596 @@ -354,6 +354,7 @@ typedef struct drm_i915_irq_wait {
103597 #define I915_PARAM_REVISION 32
103598 #define I915_PARAM_SUBSLICE_TOTAL 33
103599 #define I915_PARAM_EU_TOTAL 34
103600 +#define I915_PARAM_HAS_LEGACY_CONTEXT 35
103601
103602 typedef struct drm_i915_getparam {
103603 int param;
103604 diff --git a/include/uapi/linux/a.out.h b/include/uapi/linux/a.out.h
103605 index 7caf44c..23c6f27 100644
103606 --- a/include/uapi/linux/a.out.h
103607 +++ b/include/uapi/linux/a.out.h
103608 @@ -39,6 +39,14 @@ enum machine_type {
103609 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */
103610 };
103611
103612 +/* Constants for the N_FLAGS field */
103613 +#define F_PAX_PAGEEXEC 1 /* Paging based non-executable pages */
103614 +#define F_PAX_EMUTRAMP 2 /* Emulate trampolines */
103615 +#define F_PAX_MPROTECT 4 /* Restrict mprotect() */
103616 +#define F_PAX_RANDMMAP 8 /* Randomize mmap() base */
103617 +/*#define F_PAX_RANDEXEC 16*/ /* Randomize ET_EXEC base */
103618 +#define F_PAX_SEGMEXEC 32 /* Segmentation based non-executable pages */
103619 +
103620 #if !defined (N_MAGIC)
103621 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
103622 #endif
103623 diff --git a/include/uapi/linux/bcache.h b/include/uapi/linux/bcache.h
103624 index 22b6ad3..aeba37e 100644
103625 --- a/include/uapi/linux/bcache.h
103626 +++ b/include/uapi/linux/bcache.h
103627 @@ -5,6 +5,7 @@
103628 * Bcache on disk data structures
103629 */
103630
103631 +#include <linux/compiler.h>
103632 #include <asm/types.h>
103633
103634 #define BITMASK(name, type, field, offset, size) \
103635 @@ -20,8 +21,8 @@ static inline void SET_##name(type *k, __u64 v) \
103636 /* Btree keys - all units are in sectors */
103637
103638 struct bkey {
103639 - __u64 high;
103640 - __u64 low;
103641 + __u64 high __intentional_overflow(-1);
103642 + __u64 low __intentional_overflow(-1);
103643 __u64 ptr[];
103644 };
103645
103646 diff --git a/include/uapi/linux/byteorder/little_endian.h b/include/uapi/linux/byteorder/little_endian.h
103647 index d876736..ccce5c0 100644
103648 --- a/include/uapi/linux/byteorder/little_endian.h
103649 +++ b/include/uapi/linux/byteorder/little_endian.h
103650 @@ -42,51 +42,51 @@
103651
103652 static inline __le64 __cpu_to_le64p(const __u64 *p)
103653 {
103654 - return (__force __le64)*p;
103655 + return (__force const __le64)*p;
103656 }
103657 -static inline __u64 __le64_to_cpup(const __le64 *p)
103658 +static inline __u64 __intentional_overflow(-1) __le64_to_cpup(const __le64 *p)
103659 {
103660 - return (__force __u64)*p;
103661 + return (__force const __u64)*p;
103662 }
103663 static inline __le32 __cpu_to_le32p(const __u32 *p)
103664 {
103665 - return (__force __le32)*p;
103666 + return (__force const __le32)*p;
103667 }
103668 static inline __u32 __le32_to_cpup(const __le32 *p)
103669 {
103670 - return (__force __u32)*p;
103671 + return (__force const __u32)*p;
103672 }
103673 static inline __le16 __cpu_to_le16p(const __u16 *p)
103674 {
103675 - return (__force __le16)*p;
103676 + return (__force const __le16)*p;
103677 }
103678 static inline __u16 __le16_to_cpup(const __le16 *p)
103679 {
103680 - return (__force __u16)*p;
103681 + return (__force const __u16)*p;
103682 }
103683 static inline __be64 __cpu_to_be64p(const __u64 *p)
103684 {
103685 - return (__force __be64)__swab64p(p);
103686 + return (__force const __be64)__swab64p(p);
103687 }
103688 static inline __u64 __be64_to_cpup(const __be64 *p)
103689 {
103690 - return __swab64p((__u64 *)p);
103691 + return __swab64p((const __u64 *)p);
103692 }
103693 static inline __be32 __cpu_to_be32p(const __u32 *p)
103694 {
103695 - return (__force __be32)__swab32p(p);
103696 + return (__force const __be32)__swab32p(p);
103697 }
103698 -static inline __u32 __be32_to_cpup(const __be32 *p)
103699 +static inline __u32 __intentional_overflow(-1) __be32_to_cpup(const __be32 *p)
103700 {
103701 - return __swab32p((__u32 *)p);
103702 + return __swab32p((const __u32 *)p);
103703 }
103704 static inline __be16 __cpu_to_be16p(const __u16 *p)
103705 {
103706 - return (__force __be16)__swab16p(p);
103707 + return (__force const __be16)__swab16p(p);
103708 }
103709 static inline __u16 __be16_to_cpup(const __be16 *p)
103710 {
103711 - return __swab16p((__u16 *)p);
103712 + return __swab16p((const __u16 *)p);
103713 }
103714 #define __cpu_to_le64s(x) do { (void)(x); } while (0)
103715 #define __le64_to_cpus(x) do { (void)(x); } while (0)
103716 diff --git a/include/uapi/linux/connector.h b/include/uapi/linux/connector.h
103717 index 4cb2835..cfbc4e2 100644
103718 --- a/include/uapi/linux/connector.h
103719 +++ b/include/uapi/linux/connector.h
103720 @@ -69,7 +69,7 @@ struct cb_id {
103721 struct cn_msg {
103722 struct cb_id id;
103723
103724 - __u32 seq;
103725 + __u32 seq __intentional_overflow(-1);
103726 __u32 ack;
103727
103728 __u16 len; /* Length of the following data */
103729 diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
103730 index 71e1d0e..6cc9caf 100644
103731 --- a/include/uapi/linux/elf.h
103732 +++ b/include/uapi/linux/elf.h
103733 @@ -37,6 +37,17 @@ typedef __s64 Elf64_Sxword;
103734 #define PT_GNU_EH_FRAME 0x6474e550
103735
103736 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
103737 +#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
103738 +
103739 +#define PT_PAX_FLAGS (PT_LOOS + 0x5041580)
103740 +
103741 +/* Constants for the e_flags field */
103742 +#define EF_PAX_PAGEEXEC 1 /* Paging based non-executable pages */
103743 +#define EF_PAX_EMUTRAMP 2 /* Emulate trampolines */
103744 +#define EF_PAX_MPROTECT 4 /* Restrict mprotect() */
103745 +#define EF_PAX_RANDMMAP 8 /* Randomize mmap() base */
103746 +/*#define EF_PAX_RANDEXEC 16*/ /* Randomize ET_EXEC base */
103747 +#define EF_PAX_SEGMEXEC 32 /* Segmentation based non-executable pages */
103748
103749 /*
103750 * Extended Numbering
103751 @@ -94,6 +105,8 @@ typedef __s64 Elf64_Sxword;
103752 #define DT_DEBUG 21
103753 #define DT_TEXTREL 22
103754 #define DT_JMPREL 23
103755 +#define DT_FLAGS 30
103756 + #define DF_TEXTREL 0x00000004
103757 #define DT_ENCODING 32
103758 #define OLD_DT_LOOS 0x60000000
103759 #define DT_LOOS 0x6000000d
103760 @@ -240,6 +253,19 @@ typedef struct elf64_hdr {
103761 #define PF_W 0x2
103762 #define PF_X 0x1
103763
103764 +#define PF_PAGEEXEC (1U << 4) /* Enable PAGEEXEC */
103765 +#define PF_NOPAGEEXEC (1U << 5) /* Disable PAGEEXEC */
103766 +#define PF_SEGMEXEC (1U << 6) /* Enable SEGMEXEC */
103767 +#define PF_NOSEGMEXEC (1U << 7) /* Disable SEGMEXEC */
103768 +#define PF_MPROTECT (1U << 8) /* Enable MPROTECT */
103769 +#define PF_NOMPROTECT (1U << 9) /* Disable MPROTECT */
103770 +/*#define PF_RANDEXEC (1U << 10)*/ /* Enable RANDEXEC */
103771 +/*#define PF_NORANDEXEC (1U << 11)*/ /* Disable RANDEXEC */
103772 +#define PF_EMUTRAMP (1U << 12) /* Enable EMUTRAMP */
103773 +#define PF_NOEMUTRAMP (1U << 13) /* Disable EMUTRAMP */
103774 +#define PF_RANDMMAP (1U << 14) /* Enable RANDMMAP */
103775 +#define PF_NORANDMMAP (1U << 15) /* Disable RANDMMAP */
103776 +
103777 typedef struct elf32_phdr{
103778 Elf32_Word p_type;
103779 Elf32_Off p_offset;
103780 @@ -332,6 +358,8 @@ typedef struct elf64_shdr {
103781 #define EI_OSABI 7
103782 #define EI_PAD 8
103783
103784 +#define EI_PAX 14
103785 +
103786 #define ELFMAG0 0x7f /* EI_MAG */
103787 #define ELFMAG1 'E'
103788 #define ELFMAG2 'L'
103789 diff --git a/include/uapi/linux/personality.h b/include/uapi/linux/personality.h
103790 index aa169c4..6a2771d 100644
103791 --- a/include/uapi/linux/personality.h
103792 +++ b/include/uapi/linux/personality.h
103793 @@ -30,6 +30,7 @@ enum {
103794 #define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | \
103795 ADDR_NO_RANDOMIZE | \
103796 ADDR_COMPAT_LAYOUT | \
103797 + ADDR_LIMIT_3GB | \
103798 MMAP_PAGE_ZERO)
103799
103800 /*
103801 diff --git a/include/uapi/linux/screen_info.h b/include/uapi/linux/screen_info.h
103802 index 7530e74..e714828 100644
103803 --- a/include/uapi/linux/screen_info.h
103804 +++ b/include/uapi/linux/screen_info.h
103805 @@ -43,7 +43,8 @@ struct screen_info {
103806 __u16 pages; /* 0x32 */
103807 __u16 vesa_attributes; /* 0x34 */
103808 __u32 capabilities; /* 0x36 */
103809 - __u8 _reserved[6]; /* 0x3a */
103810 + __u16 vesapm_size; /* 0x3a */
103811 + __u8 _reserved[4]; /* 0x3c */
103812 } __attribute__((packed));
103813
103814 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */
103815 diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h
103816 index 0e011eb..82681b1 100644
103817 --- a/include/uapi/linux/swab.h
103818 +++ b/include/uapi/linux/swab.h
103819 @@ -43,7 +43,7 @@
103820 * ___swab16, ___swab32, ___swab64, ___swahw32, ___swahb32
103821 */
103822
103823 -static inline __attribute_const__ __u16 __fswab16(__u16 val)
103824 +static inline __intentional_overflow(-1) __attribute_const__ __u16 __fswab16(__u16 val)
103825 {
103826 #ifdef __HAVE_BUILTIN_BSWAP16__
103827 return __builtin_bswap16(val);
103828 @@ -54,7 +54,7 @@ static inline __attribute_const__ __u16 __fswab16(__u16 val)
103829 #endif
103830 }
103831
103832 -static inline __attribute_const__ __u32 __fswab32(__u32 val)
103833 +static inline __intentional_overflow(-1) __attribute_const__ __u32 __fswab32(__u32 val)
103834 {
103835 #ifdef __HAVE_BUILTIN_BSWAP32__
103836 return __builtin_bswap32(val);
103837 @@ -65,7 +65,7 @@ static inline __attribute_const__ __u32 __fswab32(__u32 val)
103838 #endif
103839 }
103840
103841 -static inline __attribute_const__ __u64 __fswab64(__u64 val)
103842 +static inline __intentional_overflow(-1) __attribute_const__ __u64 __fswab64(__u64 val)
103843 {
103844 #ifdef __HAVE_BUILTIN_BSWAP64__
103845 return __builtin_bswap64(val);
103846 diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
103847 index 1590c49..5eab462 100644
103848 --- a/include/uapi/linux/xattr.h
103849 +++ b/include/uapi/linux/xattr.h
103850 @@ -73,5 +73,9 @@
103851 #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
103852 #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
103853
103854 +/* User namespace */
103855 +#define XATTR_PAX_PREFIX XATTR_USER_PREFIX "pax."
103856 +#define XATTR_PAX_FLAGS_SUFFIX "flags"
103857 +#define XATTR_NAME_PAX_FLAGS XATTR_PAX_PREFIX XATTR_PAX_FLAGS_SUFFIX
103858
103859 #endif /* _UAPI_LINUX_XATTR_H */
103860 diff --git a/include/video/udlfb.h b/include/video/udlfb.h
103861 index f9466fa..f4e2b81 100644
103862 --- a/include/video/udlfb.h
103863 +++ b/include/video/udlfb.h
103864 @@ -53,10 +53,10 @@ struct dlfb_data {
103865 u32 pseudo_palette[256];
103866 int blank_mode; /*one of FB_BLANK_ */
103867 /* blit-only rendering path metrics, exposed through sysfs */
103868 - atomic_t bytes_rendered; /* raw pixel-bytes driver asked to render */
103869 - atomic_t bytes_identical; /* saved effort with backbuffer comparison */
103870 - atomic_t bytes_sent; /* to usb, after compression including overhead */
103871 - atomic_t cpu_kcycles_used; /* transpired during pixel processing */
103872 + atomic_unchecked_t bytes_rendered; /* raw pixel-bytes driver asked to render */
103873 + atomic_unchecked_t bytes_identical; /* saved effort with backbuffer comparison */
103874 + atomic_unchecked_t bytes_sent; /* to usb, after compression including overhead */
103875 + atomic_unchecked_t cpu_kcycles_used; /* transpired during pixel processing */
103876 };
103877
103878 #define NR_USB_REQUEST_I2C_SUB_IO 0x02
103879 diff --git a/include/video/uvesafb.h b/include/video/uvesafb.h
103880 index 30f5362..8ed8ac9 100644
103881 --- a/include/video/uvesafb.h
103882 +++ b/include/video/uvesafb.h
103883 @@ -122,6 +122,7 @@ struct uvesafb_par {
103884 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
103885 u8 pmi_setpal; /* PMI for palette changes */
103886 u16 *pmi_base; /* protected mode interface location */
103887 + u8 *pmi_code; /* protected mode code location */
103888 void *pmi_start;
103889 void *pmi_pal;
103890 u8 *vbe_state_orig; /*
103891 diff --git a/init/Kconfig b/init/Kconfig
103892 index af09b4f..17fcb78 100644
103893 --- a/init/Kconfig
103894 +++ b/init/Kconfig
103895 @@ -1139,6 +1139,7 @@ endif # CGROUPS
103896 config CHECKPOINT_RESTORE
103897 bool "Checkpoint/restore support" if EXPERT
103898 select PROC_CHILDREN
103899 + depends on !GRKERNSEC
103900 default n
103901 help
103902 Enables additional kernel features in a sake of checkpoint/restore.
103903 @@ -1664,7 +1665,7 @@ config SLUB_DEBUG
103904
103905 config COMPAT_BRK
103906 bool "Disable heap randomization"
103907 - default y
103908 + default n
103909 help
103910 Randomizing heap placement makes heap exploits harder, but it
103911 also breaks ancient binaries (including anything libc5 based).
103912 @@ -1994,7 +1995,7 @@ config INIT_ALL_POSSIBLE
103913 config STOP_MACHINE
103914 bool
103915 default y
103916 - depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
103917 + depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU || GRKERNSEC
103918 help
103919 Need stop_machine() primitive.
103920
103921 diff --git a/init/Makefile b/init/Makefile
103922 index 7bc47ee..6da2dc7 100644
103923 --- a/init/Makefile
103924 +++ b/init/Makefile
103925 @@ -2,6 +2,9 @@
103926 # Makefile for the linux kernel.
103927 #
103928
103929 +ccflags-y := $(GCC_PLUGINS_CFLAGS)
103930 +asflags-y := $(GCC_PLUGINS_AFLAGS)
103931 +
103932 obj-y := main.o version.o mounts.o
103933 ifneq ($(CONFIG_BLK_DEV_INITRD),y)
103934 obj-y += noinitramfs.o
103935 diff --git a/init/do_mounts.c b/init/do_mounts.c
103936 index dea5de9..bbdbb5f 100644
103937 --- a/init/do_mounts.c
103938 +++ b/init/do_mounts.c
103939 @@ -363,11 +363,11 @@ static void __init get_fs_names(char *page)
103940 static int __init do_mount_root(char *name, char *fs, int flags, void *data)
103941 {
103942 struct super_block *s;
103943 - int err = sys_mount(name, "/root", fs, flags, data);
103944 + int err = sys_mount((char __force_user *)name, (char __force_user *)"/root", (char __force_user *)fs, flags, (void __force_user *)data);
103945 if (err)
103946 return err;
103947
103948 - sys_chdir("/root");
103949 + sys_chdir((const char __force_user *)"/root");
103950 s = current->fs->pwd.dentry->d_sb;
103951 ROOT_DEV = s->s_dev;
103952 printk(KERN_INFO
103953 @@ -490,18 +490,18 @@ void __init change_floppy(char *fmt, ...)
103954 va_start(args, fmt);
103955 vsprintf(buf, fmt, args);
103956 va_end(args);
103957 - fd = sys_open("/dev/root", O_RDWR | O_NDELAY, 0);
103958 + fd = sys_open((char __user *)"/dev/root", O_RDWR | O_NDELAY, 0);
103959 if (fd >= 0) {
103960 sys_ioctl(fd, FDEJECT, 0);
103961 sys_close(fd);
103962 }
103963 printk(KERN_NOTICE "VFS: Insert %s and press ENTER\n", buf);
103964 - fd = sys_open("/dev/console", O_RDWR, 0);
103965 + fd = sys_open((__force const char __user *)"/dev/console", O_RDWR, 0);
103966 if (fd >= 0) {
103967 sys_ioctl(fd, TCGETS, (long)&termios);
103968 termios.c_lflag &= ~ICANON;
103969 sys_ioctl(fd, TCSETSF, (long)&termios);
103970 - sys_read(fd, &c, 1);
103971 + sys_read(fd, (char __user *)&c, 1);
103972 termios.c_lflag |= ICANON;
103973 sys_ioctl(fd, TCSETSF, (long)&termios);
103974 sys_close(fd);
103975 @@ -600,8 +600,8 @@ void __init prepare_namespace(void)
103976 mount_root();
103977 out:
103978 devtmpfs_mount("dev");
103979 - sys_mount(".", "/", NULL, MS_MOVE, NULL);
103980 - sys_chroot(".");
103981 + sys_mount((char __force_user *)".", (char __force_user *)"/", NULL, MS_MOVE, NULL);
103982 + sys_chroot((const char __force_user *)".");
103983 }
103984
103985 static bool is_tmpfs;
103986 diff --git a/init/do_mounts.h b/init/do_mounts.h
103987 index f5b978a..69dbfe8 100644
103988 --- a/init/do_mounts.h
103989 +++ b/init/do_mounts.h
103990 @@ -15,15 +15,15 @@ extern int root_mountflags;
103991
103992 static inline int create_dev(char *name, dev_t dev)
103993 {
103994 - sys_unlink(name);
103995 - return sys_mknod(name, S_IFBLK|0600, new_encode_dev(dev));
103996 + sys_unlink((char __force_user *)name);
103997 + return sys_mknod((char __force_user *)name, S_IFBLK|0600, new_encode_dev(dev));
103998 }
103999
104000 #if BITS_PER_LONG == 32
104001 static inline u32 bstat(char *name)
104002 {
104003 struct stat64 stat;
104004 - if (sys_stat64(name, &stat) != 0)
104005 + if (sys_stat64((char __force_user *)name, (struct stat64 __force_user *)&stat) != 0)
104006 return 0;
104007 if (!S_ISBLK(stat.st_mode))
104008 return 0;
104009 @@ -35,7 +35,7 @@ static inline u32 bstat(char *name)
104010 static inline u32 bstat(char *name)
104011 {
104012 struct stat stat;
104013 - if (sys_newstat(name, &stat) != 0)
104014 + if (sys_newstat((const char __force_user *)name, (struct stat __force_user *)&stat) != 0)
104015 return 0;
104016 if (!S_ISBLK(stat.st_mode))
104017 return 0;
104018 diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c
104019 index 3e0878e..8a9d7a0 100644
104020 --- a/init/do_mounts_initrd.c
104021 +++ b/init/do_mounts_initrd.c
104022 @@ -37,13 +37,13 @@ static int init_linuxrc(struct subprocess_info *info, struct cred *new)
104023 {
104024 sys_unshare(CLONE_FS | CLONE_FILES);
104025 /* stdin/stdout/stderr for /linuxrc */
104026 - sys_open("/dev/console", O_RDWR, 0);
104027 + sys_open((const char __force_user *)"/dev/console", O_RDWR, 0);
104028 sys_dup(0);
104029 sys_dup(0);
104030 /* move initrd over / and chdir/chroot in initrd root */
104031 - sys_chdir("/root");
104032 - sys_mount(".", "/", NULL, MS_MOVE, NULL);
104033 - sys_chroot(".");
104034 + sys_chdir((const char __force_user *)"/root");
104035 + sys_mount((char __force_user *)".", (char __force_user *)"/", NULL, MS_MOVE, NULL);
104036 + sys_chroot((const char __force_user *)".");
104037 sys_setsid();
104038 return 0;
104039 }
104040 @@ -59,8 +59,8 @@ static void __init handle_initrd(void)
104041 create_dev("/dev/root.old", Root_RAM0);
104042 /* mount initrd on rootfs' /root */
104043 mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY);
104044 - sys_mkdir("/old", 0700);
104045 - sys_chdir("/old");
104046 + sys_mkdir((const char __force_user *)"/old", 0700);
104047 + sys_chdir((const char __force_user *)"/old");
104048
104049 /* try loading default modules from initrd */
104050 load_default_modules();
104051 @@ -80,31 +80,31 @@ static void __init handle_initrd(void)
104052 current->flags &= ~PF_FREEZER_SKIP;
104053
104054 /* move initrd to rootfs' /old */
104055 - sys_mount("..", ".", NULL, MS_MOVE, NULL);
104056 + sys_mount((char __force_user *)"..", (char __force_user *)".", NULL, MS_MOVE, NULL);
104057 /* switch root and cwd back to / of rootfs */
104058 - sys_chroot("..");
104059 + sys_chroot((const char __force_user *)"..");
104060
104061 if (new_decode_dev(real_root_dev) == Root_RAM0) {
104062 - sys_chdir("/old");
104063 + sys_chdir((const char __force_user *)"/old");
104064 return;
104065 }
104066
104067 - sys_chdir("/");
104068 + sys_chdir((const char __force_user *)"/");
104069 ROOT_DEV = new_decode_dev(real_root_dev);
104070 mount_root();
104071
104072 printk(KERN_NOTICE "Trying to move old root to /initrd ... ");
104073 - error = sys_mount("/old", "/root/initrd", NULL, MS_MOVE, NULL);
104074 + error = sys_mount((char __force_user *)"/old", (char __force_user *)"/root/initrd", NULL, MS_MOVE, NULL);
104075 if (!error)
104076 printk("okay\n");
104077 else {
104078 - int fd = sys_open("/dev/root.old", O_RDWR, 0);
104079 + int fd = sys_open((const char __force_user *)"/dev/root.old", O_RDWR, 0);
104080 if (error == -ENOENT)
104081 printk("/initrd does not exist. Ignored.\n");
104082 else
104083 printk("failed\n");
104084 printk(KERN_NOTICE "Unmounting old root\n");
104085 - sys_umount("/old", MNT_DETACH);
104086 + sys_umount((char __force_user *)"/old", MNT_DETACH);
104087 printk(KERN_NOTICE "Trying to free ramdisk memory ... ");
104088 if (fd < 0) {
104089 error = fd;
104090 @@ -127,11 +127,11 @@ int __init initrd_load(void)
104091 * mounted in the normal path.
104092 */
104093 if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
104094 - sys_unlink("/initrd.image");
104095 + sys_unlink((const char __force_user *)"/initrd.image");
104096 handle_initrd();
104097 return 1;
104098 }
104099 }
104100 - sys_unlink("/initrd.image");
104101 + sys_unlink((const char __force_user *)"/initrd.image");
104102 return 0;
104103 }
104104 diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
104105 index 8cb6db5..d729f50 100644
104106 --- a/init/do_mounts_md.c
104107 +++ b/init/do_mounts_md.c
104108 @@ -180,7 +180,7 @@ static void __init md_setup_drive(void)
104109 partitioned ? "_d" : "", minor,
104110 md_setup_args[ent].device_names);
104111
104112 - fd = sys_open(name, 0, 0);
104113 + fd = sys_open((char __force_user *)name, 0, 0);
104114 if (fd < 0) {
104115 printk(KERN_ERR "md: open failed - cannot start "
104116 "array %s\n", name);
104117 @@ -243,7 +243,7 @@ static void __init md_setup_drive(void)
104118 * array without it
104119 */
104120 sys_close(fd);
104121 - fd = sys_open(name, 0, 0);
104122 + fd = sys_open((char __force_user *)name, 0, 0);
104123 sys_ioctl(fd, BLKRRPART, 0);
104124 }
104125 sys_close(fd);
104126 @@ -293,7 +293,7 @@ static void __init autodetect_raid(void)
104127
104128 wait_for_device_probe();
104129
104130 - fd = sys_open("/dev/md0", 0, 0);
104131 + fd = sys_open((const char __force_user *) "/dev/md0", 0, 0);
104132 if (fd >= 0) {
104133 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
104134 sys_close(fd);
104135 diff --git a/init/init_task.c b/init/init_task.c
104136 index ba0a7f36..2bcf1d5 100644
104137 --- a/init/init_task.c
104138 +++ b/init/init_task.c
104139 @@ -22,5 +22,9 @@ EXPORT_SYMBOL(init_task);
104140 * Initial thread structure. Alignment of this is handled by a special
104141 * linker map entry.
104142 */
104143 +#ifdef CONFIG_X86
104144 +union thread_union init_thread_union __init_task_data;
104145 +#else
104146 union thread_union init_thread_union __init_task_data =
104147 { INIT_THREAD_INFO(init_task) };
104148 +#endif
104149 diff --git a/init/initramfs.c b/init/initramfs.c
104150 index ad1bd77..dca2c1b 100644
104151 --- a/init/initramfs.c
104152 +++ b/init/initramfs.c
104153 @@ -25,7 +25,7 @@ static ssize_t __init xwrite(int fd, const char *p, size_t count)
104154
104155 /* sys_write only can write MAX_RW_COUNT aka 2G-4K bytes at most */
104156 while (count) {
104157 - ssize_t rv = sys_write(fd, p, count);
104158 + ssize_t rv = sys_write(fd, (char __force_user *)p, count);
104159
104160 if (rv < 0) {
104161 if (rv == -EINTR || rv == -EAGAIN)
104162 @@ -107,7 +107,7 @@ static void __init free_hash(void)
104163 }
104164 }
104165
104166 -static long __init do_utime(char *filename, time_t mtime)
104167 +static long __init do_utime(char __force_user *filename, time_t mtime)
104168 {
104169 struct timespec t[2];
104170
104171 @@ -142,7 +142,7 @@ static void __init dir_utime(void)
104172 struct dir_entry *de, *tmp;
104173 list_for_each_entry_safe(de, tmp, &dir_list, list) {
104174 list_del(&de->list);
104175 - do_utime(de->name, de->mtime);
104176 + do_utime((char __force_user *)de->name, de->mtime);
104177 kfree(de->name);
104178 kfree(de);
104179 }
104180 @@ -304,7 +304,7 @@ static int __init maybe_link(void)
104181 if (nlink >= 2) {
104182 char *old = find_link(major, minor, ino, mode, collected);
104183 if (old)
104184 - return (sys_link(old, collected) < 0) ? -1 : 1;
104185 + return (sys_link((char __force_user *)old, (char __force_user *)collected) < 0) ? -1 : 1;
104186 }
104187 return 0;
104188 }
104189 @@ -313,11 +313,11 @@ static void __init clean_path(char *path, umode_t fmode)
104190 {
104191 struct stat st;
104192
104193 - if (!sys_newlstat(path, &st) && (st.st_mode ^ fmode) & S_IFMT) {
104194 + if (!sys_newlstat((char __force_user *)path, (struct stat __force_user *)&st) && (st.st_mode ^ fmode) & S_IFMT) {
104195 if (S_ISDIR(st.st_mode))
104196 - sys_rmdir(path);
104197 + sys_rmdir((char __force_user *)path);
104198 else
104199 - sys_unlink(path);
104200 + sys_unlink((char __force_user *)path);
104201 }
104202 }
104203
104204 @@ -338,7 +338,7 @@ static int __init do_name(void)
104205 int openflags = O_WRONLY|O_CREAT;
104206 if (ml != 1)
104207 openflags |= O_TRUNC;
104208 - wfd = sys_open(collected, openflags, mode);
104209 + wfd = sys_open((char __force_user *)collected, openflags, mode);
104210
104211 if (wfd >= 0) {
104212 sys_fchown(wfd, uid, gid);
104213 @@ -350,17 +350,17 @@ static int __init do_name(void)
104214 }
104215 }
104216 } else if (S_ISDIR(mode)) {
104217 - sys_mkdir(collected, mode);
104218 - sys_chown(collected, uid, gid);
104219 - sys_chmod(collected, mode);
104220 + sys_mkdir((char __force_user *)collected, mode);
104221 + sys_chown((char __force_user *)collected, uid, gid);
104222 + sys_chmod((char __force_user *)collected, mode);
104223 dir_add(collected, mtime);
104224 } else if (S_ISBLK(mode) || S_ISCHR(mode) ||
104225 S_ISFIFO(mode) || S_ISSOCK(mode)) {
104226 if (maybe_link() == 0) {
104227 - sys_mknod(collected, mode, rdev);
104228 - sys_chown(collected, uid, gid);
104229 - sys_chmod(collected, mode);
104230 - do_utime(collected, mtime);
104231 + sys_mknod((char __force_user *)collected, mode, rdev);
104232 + sys_chown((char __force_user *)collected, uid, gid);
104233 + sys_chmod((char __force_user *)collected, mode);
104234 + do_utime((char __force_user *)collected, mtime);
104235 }
104236 }
104237 return 0;
104238 @@ -372,7 +372,7 @@ static int __init do_copy(void)
104239 if (xwrite(wfd, victim, body_len) != body_len)
104240 error("write error");
104241 sys_close(wfd);
104242 - do_utime(vcollected, mtime);
104243 + do_utime((char __force_user *)vcollected, mtime);
104244 kfree(vcollected);
104245 eat(body_len);
104246 state = SkipIt;
104247 @@ -390,9 +390,9 @@ static int __init do_symlink(void)
104248 {
104249 collected[N_ALIGN(name_len) + body_len] = '\0';
104250 clean_path(collected, 0);
104251 - sys_symlink(collected + N_ALIGN(name_len), collected);
104252 - sys_lchown(collected, uid, gid);
104253 - do_utime(collected, mtime);
104254 + sys_symlink((char __force_user *)collected + N_ALIGN(name_len), (char __force_user *)collected);
104255 + sys_lchown((char __force_user *)collected, uid, gid);
104256 + do_utime((char __force_user *)collected, mtime);
104257 state = SkipIt;
104258 next_state = Reset;
104259 return 0;
104260 diff --git a/init/main.c b/init/main.c
104261 index 5650655..937d1b1 100644
104262 --- a/init/main.c
104263 +++ b/init/main.c
104264 @@ -97,6 +97,8 @@ extern void radix_tree_init(void);
104265 static inline void mark_rodata_ro(void) { }
104266 #endif
104267
104268 +extern void grsecurity_init(void);
104269 +
104270 /*
104271 * Debug helper: via this flag we know that we are in 'early bootup code'
104272 * where only the boot processor is running with IRQ disabled. This means
104273 @@ -158,6 +160,37 @@ static int __init set_reset_devices(char *str)
104274
104275 __setup("reset_devices", set_reset_devices);
104276
104277 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
104278 +kgid_t grsec_proc_gid = KGIDT_INIT(CONFIG_GRKERNSEC_PROC_GID);
104279 +static int __init setup_grsec_proc_gid(char *str)
104280 +{
104281 + grsec_proc_gid = KGIDT_INIT(simple_strtol(str, NULL, 0));
104282 + return 1;
104283 +}
104284 +__setup("grsec_proc_gid=", setup_grsec_proc_gid);
104285 +#endif
104286 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
104287 +int grsec_enable_sysfs_restrict = 1;
104288 +static int __init setup_grsec_sysfs_restrict(char *str)
104289 +{
104290 + if (!simple_strtol(str, NULL, 0))
104291 + grsec_enable_sysfs_restrict = 0;
104292 + return 1;
104293 +}
104294 +__setup("grsec_sysfs_restrict", setup_grsec_sysfs_restrict);
104295 +#endif
104296 +
104297 +#ifdef CONFIG_PAX_SOFTMODE
104298 +int pax_softmode;
104299 +
104300 +static int __init setup_pax_softmode(char *str)
104301 +{
104302 + get_option(&str, &pax_softmode);
104303 + return 1;
104304 +}
104305 +__setup("pax_softmode=", setup_pax_softmode);
104306 +#endif
104307 +
104308 static const char *argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
104309 const char *envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
104310 static const char *panic_later, *panic_param;
104311 @@ -731,7 +764,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn)
104312 struct blacklist_entry *entry;
104313 char *fn_name;
104314
104315 - fn_name = kasprintf(GFP_KERNEL, "%pf", fn);
104316 + fn_name = kasprintf(GFP_KERNEL, "%pX", fn);
104317 if (!fn_name)
104318 return false;
104319
104320 @@ -783,7 +816,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
104321 {
104322 int count = preempt_count();
104323 int ret;
104324 - char msgbuf[64];
104325 + const char *msg1 = "", *msg2 = "";
104326
104327 if (initcall_blacklisted(fn))
104328 return -EPERM;
104329 @@ -793,18 +826,17 @@ int __init_or_module do_one_initcall(initcall_t fn)
104330 else
104331 ret = fn();
104332
104333 - msgbuf[0] = 0;
104334 -
104335 if (preempt_count() != count) {
104336 - sprintf(msgbuf, "preemption imbalance ");
104337 + msg1 = " preemption imbalance";
104338 preempt_count_set(count);
104339 }
104340 if (irqs_disabled()) {
104341 - strlcat(msgbuf, "disabled interrupts ", sizeof(msgbuf));
104342 + msg2 = " disabled interrupts";
104343 local_irq_enable();
104344 }
104345 - WARN(msgbuf[0], "initcall %pF returned with %s\n", fn, msgbuf);
104346 + WARN(*msg1 || *msg2, "initcall %pF returned with%s%s\n", fn, msg1, msg2);
104347
104348 + add_latent_entropy();
104349 return ret;
104350 }
104351
104352 @@ -910,8 +942,8 @@ static int run_init_process(const char *init_filename)
104353 {
104354 argv_init[0] = init_filename;
104355 return do_execve(getname_kernel(init_filename),
104356 - (const char __user *const __user *)argv_init,
104357 - (const char __user *const __user *)envp_init);
104358 + (const char __user *const __force_user *)argv_init,
104359 + (const char __user *const __force_user *)envp_init);
104360 }
104361
104362 static int try_to_run_init_process(const char *init_filename)
104363 @@ -928,6 +960,10 @@ static int try_to_run_init_process(const char *init_filename)
104364 return ret;
104365 }
104366
104367 +#ifdef CONFIG_GRKERNSEC_CHROOT_INITRD
104368 +extern int gr_init_ran;
104369 +#endif
104370 +
104371 static noinline void __init kernel_init_freeable(void);
104372
104373 static int __ref kernel_init(void *unused)
104374 @@ -952,6 +988,11 @@ static int __ref kernel_init(void *unused)
104375 ramdisk_execute_command, ret);
104376 }
104377
104378 +#ifdef CONFIG_GRKERNSEC_CHROOT_INITRD
104379 + /* if no initrd was used, be extra sure we enforce chroot restrictions */
104380 + gr_init_ran = 1;
104381 +#endif
104382 +
104383 /*
104384 * We try each of these until one succeeds.
104385 *
104386 @@ -1009,7 +1050,7 @@ static noinline void __init kernel_init_freeable(void)
104387 do_basic_setup();
104388
104389 /* Open the /dev/console on the rootfs, this should never fail */
104390 - if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
104391 + if (sys_open((const char __force_user *) "/dev/console", O_RDWR, 0) < 0)
104392 pr_err("Warning: unable to open an initial console.\n");
104393
104394 (void) sys_dup(0);
104395 @@ -1022,11 +1063,13 @@ static noinline void __init kernel_init_freeable(void)
104396 if (!ramdisk_execute_command)
104397 ramdisk_execute_command = "/init";
104398
104399 - if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
104400 + if (sys_access((const char __force_user *) ramdisk_execute_command, 0) != 0) {
104401 ramdisk_execute_command = NULL;
104402 prepare_namespace();
104403 }
104404
104405 + grsecurity_init();
104406 +
104407 /*
104408 * Ok, we have completed the initial bootup, and
104409 * we're essentially up and running. Get rid of the
104410 diff --git a/ipc/compat.c b/ipc/compat.c
104411 index 9b3c85f..5266b0f 100644
104412 --- a/ipc/compat.c
104413 +++ b/ipc/compat.c
104414 @@ -396,7 +396,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
104415 COMPAT_SHMLBA);
104416 if (err < 0)
104417 return err;
104418 - return put_user(raddr, (compat_ulong_t *)compat_ptr(third));
104419 + return put_user(raddr, (compat_ulong_t __user *)compat_ptr(third));
104420 }
104421 case SHMDT:
104422 return sys_shmdt(compat_ptr(ptr));
104423 @@ -747,7 +747,7 @@ COMPAT_SYSCALL_DEFINE3(shmctl, int, first, int, second, void __user *, uptr)
104424 }
104425
104426 COMPAT_SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsems,
104427 - unsigned, nsops,
104428 + compat_long_t, nsops,
104429 const struct compat_timespec __user *, timeout)
104430 {
104431 struct timespec __user *ts64;
104432 diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
104433 index 8ad93c2..efd80f8 100644
104434 --- a/ipc/ipc_sysctl.c
104435 +++ b/ipc/ipc_sysctl.c
104436 @@ -30,7 +30,7 @@ static void *get_ipc(struct ctl_table *table)
104437 static int proc_ipc_dointvec(struct ctl_table *table, int write,
104438 void __user *buffer, size_t *lenp, loff_t *ppos)
104439 {
104440 - struct ctl_table ipc_table;
104441 + ctl_table_no_const ipc_table;
104442
104443 memcpy(&ipc_table, table, sizeof(ipc_table));
104444 ipc_table.data = get_ipc(table);
104445 @@ -41,7 +41,7 @@ static int proc_ipc_dointvec(struct ctl_table *table, int write,
104446 static int proc_ipc_dointvec_minmax(struct ctl_table *table, int write,
104447 void __user *buffer, size_t *lenp, loff_t *ppos)
104448 {
104449 - struct ctl_table ipc_table;
104450 + ctl_table_no_const ipc_table;
104451
104452 memcpy(&ipc_table, table, sizeof(ipc_table));
104453 ipc_table.data = get_ipc(table);
104454 @@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(struct ctl_table *table, int write,
104455 static int proc_ipc_doulongvec_minmax(struct ctl_table *table, int write,
104456 void __user *buffer, size_t *lenp, loff_t *ppos)
104457 {
104458 - struct ctl_table ipc_table;
104459 + ctl_table_no_const ipc_table;
104460 memcpy(&ipc_table, table, sizeof(ipc_table));
104461 ipc_table.data = get_ipc(table);
104462
104463 @@ -76,7 +76,7 @@ static int proc_ipc_doulongvec_minmax(struct ctl_table *table, int write,
104464 static int proc_ipc_auto_msgmni(struct ctl_table *table, int write,
104465 void __user *buffer, size_t *lenp, loff_t *ppos)
104466 {
104467 - struct ctl_table ipc_table;
104468 + ctl_table_no_const ipc_table;
104469 int dummy = 0;
104470
104471 memcpy(&ipc_table, table, sizeof(ipc_table));
104472 diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c
104473 index 68d4e95..1477ded 100644
104474 --- a/ipc/mq_sysctl.c
104475 +++ b/ipc/mq_sysctl.c
104476 @@ -25,7 +25,7 @@ static void *get_mq(struct ctl_table *table)
104477 static int proc_mq_dointvec(struct ctl_table *table, int write,
104478 void __user *buffer, size_t *lenp, loff_t *ppos)
104479 {
104480 - struct ctl_table mq_table;
104481 + ctl_table_no_const mq_table;
104482 memcpy(&mq_table, table, sizeof(mq_table));
104483 mq_table.data = get_mq(table);
104484
104485 @@ -35,7 +35,7 @@ static int proc_mq_dointvec(struct ctl_table *table, int write,
104486 static int proc_mq_dointvec_minmax(struct ctl_table *table, int write,
104487 void __user *buffer, size_t *lenp, loff_t *ppos)
104488 {
104489 - struct ctl_table mq_table;
104490 + ctl_table_no_const mq_table;
104491 memcpy(&mq_table, table, sizeof(mq_table));
104492 mq_table.data = get_mq(table);
104493
104494 diff --git a/ipc/mqueue.c b/ipc/mqueue.c
104495 index 161a180..be31d93 100644
104496 --- a/ipc/mqueue.c
104497 +++ b/ipc/mqueue.c
104498 @@ -274,6 +274,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
104499 mq_bytes = mq_treesize + (info->attr.mq_maxmsg *
104500 info->attr.mq_msgsize);
104501
104502 + gr_learn_resource(current, RLIMIT_MSGQUEUE, u->mq_bytes + mq_bytes, 1);
104503 spin_lock(&mq_lock);
104504 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
104505 u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) {
104506 diff --git a/ipc/msg.c b/ipc/msg.c
104507 index 66c4f56..1471db9 100644
104508 --- a/ipc/msg.c
104509 +++ b/ipc/msg.c
104510 @@ -137,13 +137,6 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params)
104511 return retval;
104512 }
104513
104514 - /* ipc_addid() locks msq upon success. */
104515 - id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni);
104516 - if (id < 0) {
104517 - ipc_rcu_putref(msq, msg_rcu_free);
104518 - return id;
104519 - }
104520 -
104521 msq->q_stime = msq->q_rtime = 0;
104522 msq->q_ctime = get_seconds();
104523 msq->q_cbytes = msq->q_qnum = 0;
104524 @@ -153,6 +146,13 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params)
104525 INIT_LIST_HEAD(&msq->q_receivers);
104526 INIT_LIST_HEAD(&msq->q_senders);
104527
104528 + /* ipc_addid() locks msq upon success. */
104529 + id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni);
104530 + if (id < 0) {
104531 + ipc_rcu_putref(msq, msg_rcu_free);
104532 + return id;
104533 + }
104534 +
104535 ipc_unlock_object(&msq->q_perm);
104536 rcu_read_unlock();
104537
104538 diff --git a/ipc/sem.c b/ipc/sem.c
104539 index b471e5a..89aef1d 100644
104540 --- a/ipc/sem.c
104541 +++ b/ipc/sem.c
104542 @@ -1790,7 +1790,7 @@ static int get_queue_result(struct sem_queue *q)
104543 }
104544
104545 SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops,
104546 - unsigned, nsops, const struct timespec __user *, timeout)
104547 + long, nsops, const struct timespec __user *, timeout)
104548 {
104549 int error = -EINVAL;
104550 struct sem_array *sma;
104551 @@ -2025,7 +2025,7 @@ out_free:
104552 }
104553
104554 SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops,
104555 - unsigned, nsops)
104556 + long, nsops)
104557 {
104558 return sys_semtimedop(semid, tsops, nsops, NULL);
104559 }
104560 diff --git a/ipc/shm.c b/ipc/shm.c
104561 index 4aef24d..c545631 100644
104562 --- a/ipc/shm.c
104563 +++ b/ipc/shm.c
104564 @@ -72,6 +72,14 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp);
104565 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
104566 #endif
104567
104568 +#ifdef CONFIG_GRKERNSEC
104569 +extern int gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
104570 + const u64 shm_createtime, const kuid_t cuid,
104571 + const int shmid);
104572 +extern int gr_chroot_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
104573 + const u64 shm_createtime);
104574 +#endif
104575 +
104576 void shm_init_ns(struct ipc_namespace *ns)
104577 {
104578 ns->shm_ctlmax = SHMMAX;
104579 @@ -551,20 +559,24 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
104580 if (IS_ERR(file))
104581 goto no_file;
104582
104583 - id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
104584 - if (id < 0) {
104585 - error = id;
104586 - goto no_id;
104587 - }
104588 -
104589 shp->shm_cprid = task_tgid_vnr(current);
104590 shp->shm_lprid = 0;
104591 shp->shm_atim = shp->shm_dtim = 0;
104592 shp->shm_ctim = get_seconds();
104593 +#ifdef CONFIG_GRKERNSEC
104594 + shp->shm_createtime = ktime_get_ns();
104595 +#endif
104596 shp->shm_segsz = size;
104597 shp->shm_nattch = 0;
104598 shp->shm_file = file;
104599 shp->shm_creator = current;
104600 +
104601 + id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
104602 + if (id < 0) {
104603 + error = id;
104604 + goto no_id;
104605 + }
104606 +
104607 list_add(&shp->shm_clist, &current->sysvshm.shm_clist);
104608
104609 /*
104610 @@ -1097,6 +1109,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
104611 f_mode = FMODE_READ | FMODE_WRITE;
104612 }
104613 if (shmflg & SHM_EXEC) {
104614 +
104615 +#ifdef CONFIG_PAX_MPROTECT
104616 + if (current->mm->pax_flags & MF_PAX_MPROTECT)
104617 + goto out;
104618 +#endif
104619 +
104620 prot |= PROT_EXEC;
104621 acc_mode |= S_IXUGO;
104622 }
104623 @@ -1121,6 +1139,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
104624 if (err)
104625 goto out_unlock;
104626
104627 +#ifdef CONFIG_GRKERNSEC
104628 + if (!gr_handle_shmat(shp->shm_cprid, shp->shm_lapid, shp->shm_createtime,
104629 + shp->shm_perm.cuid, shmid) ||
104630 + !gr_chroot_shmat(shp->shm_cprid, shp->shm_lapid, shp->shm_createtime)) {
104631 + err = -EACCES;
104632 + goto out_unlock;
104633 + }
104634 +#endif
104635 +
104636 ipc_lock_object(&shp->shm_perm);
104637
104638 /* check if shm_destroy() is tearing down shp */
104639 @@ -1133,6 +1160,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
104640 path = shp->shm_file->f_path;
104641 path_get(&path);
104642 shp->shm_nattch++;
104643 +#ifdef CONFIG_GRKERNSEC
104644 + shp->shm_lapid = current->pid;
104645 +#endif
104646 size = i_size_read(d_inode(path.dentry));
104647 ipc_unlock_object(&shp->shm_perm);
104648 rcu_read_unlock();
104649 diff --git a/ipc/util.c b/ipc/util.c
104650 index be42300..049b0ff 100644
104651 --- a/ipc/util.c
104652 +++ b/ipc/util.c
104653 @@ -71,6 +71,8 @@ struct ipc_proc_iface {
104654 int (*show)(struct seq_file *, void *);
104655 };
104656
104657 +extern int gr_ipc_permitted(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, int requested_mode, int granted_mode);
104658 +
104659 /**
104660 * ipc_init - initialise ipc subsystem
104661 *
104662 @@ -237,6 +239,10 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size)
104663 rcu_read_lock();
104664 spin_lock(&new->lock);
104665
104666 + current_euid_egid(&euid, &egid);
104667 + new->cuid = new->uid = euid;
104668 + new->gid = new->cgid = egid;
104669 +
104670 id = idr_alloc(&ids->ipcs_idr, new,
104671 (next_id < 0) ? 0 : ipcid_to_idx(next_id), 0,
104672 GFP_NOWAIT);
104673 @@ -249,10 +255,6 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size)
104674
104675 ids->in_use++;
104676
104677 - current_euid_egid(&euid, &egid);
104678 - new->cuid = new->uid = euid;
104679 - new->gid = new->cgid = egid;
104680 -
104681 if (next_id < 0) {
104682 new->seq = ids->seq++;
104683 if (ids->seq > IPCID_SEQ_MAX)
104684 @@ -494,6 +496,10 @@ int ipcperms(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp, short flag)
104685 granted_mode >>= 6;
104686 else if (in_group_p(ipcp->cgid) || in_group_p(ipcp->gid))
104687 granted_mode >>= 3;
104688 +
104689 + if (!gr_ipc_permitted(ns, ipcp, requested_mode, granted_mode))
104690 + return -1;
104691 +
104692 /* is there some bit set in requested_mode but not in granted_mode? */
104693 if ((requested_mode & ~granted_mode & 0007) &&
104694 !ns_capable(ns->user_ns, CAP_IPC_OWNER))
104695 diff --git a/kernel/audit.c b/kernel/audit.c
104696 index f9e6065..3fcb6ab 100644
104697 --- a/kernel/audit.c
104698 +++ b/kernel/audit.c
104699 @@ -124,7 +124,7 @@ u32 audit_sig_sid = 0;
104700 3) suppressed due to audit_rate_limit
104701 4) suppressed due to audit_backlog_limit
104702 */
104703 -static atomic_t audit_lost = ATOMIC_INIT(0);
104704 +static atomic_unchecked_t audit_lost = ATOMIC_INIT(0);
104705
104706 /* The netlink socket. */
104707 static struct sock *audit_sock;
104708 @@ -258,7 +258,7 @@ void audit_log_lost(const char *message)
104709 unsigned long now;
104710 int print;
104711
104712 - atomic_inc(&audit_lost);
104713 + atomic_inc_unchecked(&audit_lost);
104714
104715 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit);
104716
104717 @@ -275,7 +275,7 @@ void audit_log_lost(const char *message)
104718 if (print) {
104719 if (printk_ratelimit())
104720 pr_warn("audit_lost=%u audit_rate_limit=%u audit_backlog_limit=%u\n",
104721 - atomic_read(&audit_lost),
104722 + atomic_read_unchecked(&audit_lost),
104723 audit_rate_limit,
104724 audit_backlog_limit);
104725 audit_panic(message);
104726 @@ -833,7 +833,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
104727 s.pid = audit_pid;
104728 s.rate_limit = audit_rate_limit;
104729 s.backlog_limit = audit_backlog_limit;
104730 - s.lost = atomic_read(&audit_lost);
104731 + s.lost = atomic_read_unchecked(&audit_lost);
104732 s.backlog = skb_queue_len(&audit_skb_queue);
104733 s.feature_bitmap = AUDIT_FEATURE_BITMAP_ALL;
104734 s.backlog_wait_time = audit_backlog_wait_time_master;
104735 diff --git a/kernel/auditsc.c b/kernel/auditsc.c
104736 index e85bdfd..441a638 100644
104737 --- a/kernel/auditsc.c
104738 +++ b/kernel/auditsc.c
104739 @@ -1021,7 +1021,7 @@ static int audit_log_single_execve_arg(struct audit_context *context,
104740 * for strings that are too long, we should not have created
104741 * any.
104742 */
104743 - if (WARN_ON_ONCE(len < 0 || len > MAX_ARG_STRLEN - 1)) {
104744 + if (WARN_ON_ONCE(len > MAX_ARG_STRLEN - 1)) {
104745 send_sig(SIGKILL, current, 0);
104746 return -1;
104747 }
104748 @@ -1952,7 +1952,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
104749 }
104750
104751 /* global counter which is incremented every time something logs in */
104752 -static atomic_t session_id = ATOMIC_INIT(0);
104753 +static atomic_unchecked_t session_id = ATOMIC_INIT(0);
104754
104755 static int audit_set_loginuid_perm(kuid_t loginuid)
104756 {
104757 @@ -2019,7 +2019,7 @@ int audit_set_loginuid(kuid_t loginuid)
104758
104759 /* are we setting or clearing? */
104760 if (uid_valid(loginuid))
104761 - sessionid = (unsigned int)atomic_inc_return(&session_id);
104762 + sessionid = (unsigned int)atomic_inc_return_unchecked(&session_id);
104763
104764 task->sessionid = sessionid;
104765 task->loginuid = loginuid;
104766 diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
104767 index c5bedc8..6ec8715 100644
104768 --- a/kernel/bpf/core.c
104769 +++ b/kernel/bpf/core.c
104770 @@ -145,14 +145,17 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
104771 * random section of illegal instructions.
104772 */
104773 size = round_up(proglen + sizeof(*hdr) + 128, PAGE_SIZE);
104774 - hdr = module_alloc(size);
104775 + hdr = module_alloc_exec(size);
104776 if (hdr == NULL)
104777 return NULL;
104778
104779 /* Fill space with illegal/arch-dep instructions. */
104780 bpf_fill_ill_insns(hdr, size);
104781
104782 + pax_open_kernel();
104783 hdr->pages = size / PAGE_SIZE;
104784 + pax_close_kernel();
104785 +
104786 hole = min_t(unsigned int, size - (proglen + sizeof(*hdr)),
104787 PAGE_SIZE - sizeof(*hdr));
104788 start = (prandom_u32() % hole) & ~(alignment - 1);
104789 @@ -165,7 +168,7 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
104790
104791 void bpf_jit_binary_free(struct bpf_binary_header *hdr)
104792 {
104793 - module_memfree(hdr);
104794 + module_memfree_exec(hdr);
104795 }
104796 #endif /* CONFIG_BPF_JIT */
104797
104798 diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
104799 index a1b14d1..7dce5d9 100644
104800 --- a/kernel/bpf/syscall.c
104801 +++ b/kernel/bpf/syscall.c
104802 @@ -592,11 +592,15 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz
104803 int err;
104804
104805 /* the syscall is limited to root temporarily. This restriction will be
104806 - * lifted when security audit is clean. Note that eBPF+tracing must have
104807 - * this restriction, since it may pass kernel data to user space
104808 + * lifted by upstream when a half-assed security audit is clean. Note
104809 + * that eBPF+tracing must have this restriction, since it may pass
104810 + * kernel data to user space
104811 */
104812 if (!capable(CAP_SYS_ADMIN))
104813 return -EPERM;
104814 +#ifdef CONFIG_GRKERNSEC
104815 + return -EPERM;
104816 +#endif
104817
104818 if (!access_ok(VERIFY_READ, uattr, 1))
104819 return -EFAULT;
104820 diff --git a/kernel/capability.c b/kernel/capability.c
104821 index 45432b5..988f1e4 100644
104822 --- a/kernel/capability.c
104823 +++ b/kernel/capability.c
104824 @@ -193,6 +193,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
104825 * before modification is attempted and the application
104826 * fails.
104827 */
104828 + if (tocopy > ARRAY_SIZE(kdata))
104829 + return -EFAULT;
104830 +
104831 if (copy_to_user(dataptr, kdata, tocopy
104832 * sizeof(struct __user_cap_data_struct))) {
104833 return -EFAULT;
104834 @@ -298,10 +301,11 @@ bool has_ns_capability(struct task_struct *t,
104835 int ret;
104836
104837 rcu_read_lock();
104838 - ret = security_capable(__task_cred(t), ns, cap);
104839 + ret = security_capable(__task_cred(t), ns, cap) == 0 &&
104840 + gr_task_is_capable(t, __task_cred(t), cap);
104841 rcu_read_unlock();
104842
104843 - return (ret == 0);
104844 + return ret;
104845 }
104846
104847 /**
104848 @@ -338,10 +342,10 @@ bool has_ns_capability_noaudit(struct task_struct *t,
104849 int ret;
104850
104851 rcu_read_lock();
104852 - ret = security_capable_noaudit(__task_cred(t), ns, cap);
104853 + ret = security_capable_noaudit(__task_cred(t), ns, cap) == 0 && gr_task_is_capable_nolog(t, cap);
104854 rcu_read_unlock();
104855
104856 - return (ret == 0);
104857 + return ret;
104858 }
104859
104860 /**
104861 @@ -379,7 +383,7 @@ bool ns_capable(struct user_namespace *ns, int cap)
104862 BUG();
104863 }
104864
104865 - if (security_capable(current_cred(), ns, cap) == 0) {
104866 + if (security_capable(current_cred(), ns, cap) == 0 && gr_is_capable(cap)) {
104867 current->flags |= PF_SUPERPRIV;
104868 return true;
104869 }
104870 @@ -387,6 +391,20 @@ bool ns_capable(struct user_namespace *ns, int cap)
104871 }
104872 EXPORT_SYMBOL(ns_capable);
104873
104874 +bool ns_capable_nolog(struct user_namespace *ns, int cap)
104875 +{
104876 + if (unlikely(!cap_valid(cap))) {
104877 + pr_crit("capable_nolog() called with invalid cap=%u\n", cap);
104878 + BUG();
104879 + }
104880 +
104881 + if (security_capable_noaudit(current_cred(), ns, cap) == 0 && gr_is_capable_nolog(cap)) {
104882 + current->flags |= PF_SUPERPRIV;
104883 + return true;
104884 + }
104885 + return false;
104886 +}
104887 +EXPORT_SYMBOL(ns_capable_nolog);
104888
104889 /**
104890 * capable - Determine if the current task has a superior capability in effect
104891 @@ -403,6 +421,13 @@ bool capable(int cap)
104892 return ns_capable(&init_user_ns, cap);
104893 }
104894 EXPORT_SYMBOL(capable);
104895 +
104896 +bool capable_nolog(int cap)
104897 +{
104898 + return ns_capable_nolog(&init_user_ns, cap);
104899 +}
104900 +EXPORT_SYMBOL(capable_nolog);
104901 +
104902 #endif /* CONFIG_MULTIUSER */
104903
104904 /**
104905 @@ -447,3 +472,12 @@ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap)
104906 kgid_has_mapping(ns, inode->i_gid);
104907 }
104908 EXPORT_SYMBOL(capable_wrt_inode_uidgid);
104909 +
104910 +bool capable_wrt_inode_uidgid_nolog(const struct inode *inode, int cap)
104911 +{
104912 + struct user_namespace *ns = current_user_ns();
104913 +
104914 + return ns_capable_nolog(ns, cap) && kuid_has_mapping(ns, inode->i_uid) &&
104915 + kgid_has_mapping(ns, inode->i_gid);
104916 +}
104917 +EXPORT_SYMBOL(capable_wrt_inode_uidgid_nolog);
104918 diff --git a/kernel/cgroup.c b/kernel/cgroup.c
104919 index c6c4240..8af0064 100644
104920 --- a/kernel/cgroup.c
104921 +++ b/kernel/cgroup.c
104922 @@ -5367,6 +5367,9 @@ static void cgroup_release_agent(struct work_struct *work)
104923 if (!pathbuf || !agentbuf)
104924 goto out;
104925
104926 + if (agentbuf[0] == '\0')
104927 + goto out;
104928 +
104929 path = cgroup_path(cgrp, pathbuf, PATH_MAX);
104930 if (!path)
104931 goto out;
104932 @@ -5552,7 +5555,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
104933 struct task_struct *task;
104934 int count = 0;
104935
104936 - seq_printf(seq, "css_set %p\n", cset);
104937 + seq_printf(seq, "css_set %pK\n", cset);
104938
104939 list_for_each_entry(task, &cset->tasks, cg_list) {
104940 if (count++ > MAX_TASKS_SHOWN_PER_CSS)
104941 diff --git a/kernel/compat.c b/kernel/compat.c
104942 index 333d364..762ec00 100644
104943 --- a/kernel/compat.c
104944 +++ b/kernel/compat.c
104945 @@ -13,6 +13,7 @@
104946
104947 #include <linux/linkage.h>
104948 #include <linux/compat.h>
104949 +#include <linux/module.h>
104950 #include <linux/errno.h>
104951 #include <linux/time.h>
104952 #include <linux/signal.h>
104953 @@ -220,7 +221,7 @@ static long compat_nanosleep_restart(struct restart_block *restart)
104954 mm_segment_t oldfs;
104955 long ret;
104956
104957 - restart->nanosleep.rmtp = (struct timespec __user *) &rmt;
104958 + restart->nanosleep.rmtp = (struct timespec __force_user *) &rmt;
104959 oldfs = get_fs();
104960 set_fs(KERNEL_DS);
104961 ret = hrtimer_nanosleep_restart(restart);
104962 @@ -252,7 +253,7 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp,
104963 oldfs = get_fs();
104964 set_fs(KERNEL_DS);
104965 ret = hrtimer_nanosleep(&tu,
104966 - rmtp ? (struct timespec __user *)&rmt : NULL,
104967 + rmtp ? (struct timespec __force_user *)&rmt : NULL,
104968 HRTIMER_MODE_REL, CLOCK_MONOTONIC);
104969 set_fs(oldfs);
104970
104971 @@ -378,7 +379,7 @@ COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set)
104972 mm_segment_t old_fs = get_fs();
104973
104974 set_fs(KERNEL_DS);
104975 - ret = sys_sigpending((old_sigset_t __user *) &s);
104976 + ret = sys_sigpending((old_sigset_t __force_user *) &s);
104977 set_fs(old_fs);
104978 if (ret == 0)
104979 ret = put_user(s, set);
104980 @@ -468,7 +469,7 @@ COMPAT_SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
104981 mm_segment_t old_fs = get_fs();
104982
104983 set_fs(KERNEL_DS);
104984 - ret = sys_old_getrlimit(resource, (struct rlimit __user *)&r);
104985 + ret = sys_old_getrlimit(resource, (struct rlimit __force_user *)&r);
104986 set_fs(old_fs);
104987
104988 if (!ret) {
104989 @@ -550,8 +551,8 @@ COMPAT_SYSCALL_DEFINE4(wait4,
104990 set_fs (KERNEL_DS);
104991 ret = sys_wait4(pid,
104992 (stat_addr ?
104993 - (unsigned int __user *) &status : NULL),
104994 - options, (struct rusage __user *) &r);
104995 + (unsigned int __force_user *) &status : NULL),
104996 + options, (struct rusage __force_user *) &r);
104997 set_fs (old_fs);
104998
104999 if (ret > 0) {
105000 @@ -577,8 +578,8 @@ COMPAT_SYSCALL_DEFINE5(waitid,
105001 memset(&info, 0, sizeof(info));
105002
105003 set_fs(KERNEL_DS);
105004 - ret = sys_waitid(which, pid, (siginfo_t __user *)&info, options,
105005 - uru ? (struct rusage __user *)&ru : NULL);
105006 + ret = sys_waitid(which, pid, (siginfo_t __force_user *)&info, options,
105007 + uru ? (struct rusage __force_user *)&ru : NULL);
105008 set_fs(old_fs);
105009
105010 if ((ret < 0) || (info.si_signo == 0))
105011 @@ -712,8 +713,8 @@ COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
105012 oldfs = get_fs();
105013 set_fs(KERNEL_DS);
105014 err = sys_timer_settime(timer_id, flags,
105015 - (struct itimerspec __user *) &newts,
105016 - (struct itimerspec __user *) &oldts);
105017 + (struct itimerspec __force_user *) &newts,
105018 + (struct itimerspec __force_user *) &oldts);
105019 set_fs(oldfs);
105020 if (!err && old && put_compat_itimerspec(old, &oldts))
105021 return -EFAULT;
105022 @@ -730,7 +731,7 @@ COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
105023 oldfs = get_fs();
105024 set_fs(KERNEL_DS);
105025 err = sys_timer_gettime(timer_id,
105026 - (struct itimerspec __user *) &ts);
105027 + (struct itimerspec __force_user *) &ts);
105028 set_fs(oldfs);
105029 if (!err && put_compat_itimerspec(setting, &ts))
105030 return -EFAULT;
105031 @@ -749,7 +750,7 @@ COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock,
105032 oldfs = get_fs();
105033 set_fs(KERNEL_DS);
105034 err = sys_clock_settime(which_clock,
105035 - (struct timespec __user *) &ts);
105036 + (struct timespec __force_user *) &ts);
105037 set_fs(oldfs);
105038 return err;
105039 }
105040 @@ -764,7 +765,7 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock,
105041 oldfs = get_fs();
105042 set_fs(KERNEL_DS);
105043 err = sys_clock_gettime(which_clock,
105044 - (struct timespec __user *) &ts);
105045 + (struct timespec __force_user *) &ts);
105046 set_fs(oldfs);
105047 if (!err && compat_put_timespec(&ts, tp))
105048 return -EFAULT;
105049 @@ -784,7 +785,7 @@ COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock,
105050
105051 oldfs = get_fs();
105052 set_fs(KERNEL_DS);
105053 - ret = sys_clock_adjtime(which_clock, (struct timex __user *) &txc);
105054 + ret = sys_clock_adjtime(which_clock, (struct timex __force_user *) &txc);
105055 set_fs(oldfs);
105056
105057 err = compat_put_timex(utp, &txc);
105058 @@ -804,7 +805,7 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock,
105059 oldfs = get_fs();
105060 set_fs(KERNEL_DS);
105061 err = sys_clock_getres(which_clock,
105062 - (struct timespec __user *) &ts);
105063 + (struct timespec __force_user *) &ts);
105064 set_fs(oldfs);
105065 if (!err && tp && compat_put_timespec(&ts, tp))
105066 return -EFAULT;
105067 @@ -818,7 +819,7 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
105068 struct timespec tu;
105069 struct compat_timespec __user *rmtp = restart->nanosleep.compat_rmtp;
105070
105071 - restart->nanosleep.rmtp = (struct timespec __user *) &tu;
105072 + restart->nanosleep.rmtp = (struct timespec __force_user *) &tu;
105073 oldfs = get_fs();
105074 set_fs(KERNEL_DS);
105075 err = clock_nanosleep_restart(restart);
105076 @@ -850,8 +851,8 @@ COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags,
105077 oldfs = get_fs();
105078 set_fs(KERNEL_DS);
105079 err = sys_clock_nanosleep(which_clock, flags,
105080 - (struct timespec __user *) &in,
105081 - (struct timespec __user *) &out);
105082 + (struct timespec __force_user *) &in,
105083 + (struct timespec __force_user *) &out);
105084 set_fs(oldfs);
105085
105086 if ((err == -ERESTART_RESTARTBLOCK) && rmtp &&
105087 @@ -1147,7 +1148,7 @@ COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
105088 mm_segment_t old_fs = get_fs();
105089
105090 set_fs(KERNEL_DS);
105091 - ret = sys_sched_rr_get_interval(pid, (struct timespec __user *)&t);
105092 + ret = sys_sched_rr_get_interval(pid, (struct timespec __force_user *)&t);
105093 set_fs(old_fs);
105094 if (compat_put_timespec(&t, interval))
105095 return -EFAULT;
105096 diff --git a/kernel/configs.c b/kernel/configs.c
105097 index c18b1f1..b9a0132 100644
105098 --- a/kernel/configs.c
105099 +++ b/kernel/configs.c
105100 @@ -74,8 +74,19 @@ static int __init ikconfig_init(void)
105101 struct proc_dir_entry *entry;
105102
105103 /* create the current config file */
105104 +#if defined(CONFIG_GRKERNSEC_PROC_ADD) || defined(CONFIG_GRKERNSEC_HIDESYM)
105105 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_HIDESYM)
105106 + entry = proc_create("config.gz", S_IFREG | S_IRUSR, NULL,
105107 + &ikconfig_file_ops);
105108 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
105109 + entry = proc_create("config.gz", S_IFREG | S_IRUSR | S_IRGRP, NULL,
105110 + &ikconfig_file_ops);
105111 +#endif
105112 +#else
105113 entry = proc_create("config.gz", S_IFREG | S_IRUGO, NULL,
105114 &ikconfig_file_ops);
105115 +#endif
105116 +
105117 if (!entry)
105118 return -ENOMEM;
105119
105120 diff --git a/kernel/cred.c b/kernel/cred.c
105121 index ec1c076..7da8a0e 100644
105122 --- a/kernel/cred.c
105123 +++ b/kernel/cred.c
105124 @@ -167,6 +167,15 @@ void exit_creds(struct task_struct *tsk)
105125 validate_creds(cred);
105126 alter_cred_subscribers(cred, -1);
105127 put_cred(cred);
105128 +
105129 +#ifdef CONFIG_GRKERNSEC_SETXID
105130 + cred = (struct cred *) tsk->delayed_cred;
105131 + if (cred != NULL) {
105132 + tsk->delayed_cred = NULL;
105133 + validate_creds(cred);
105134 + put_cred(cred);
105135 + }
105136 +#endif
105137 }
105138
105139 /**
105140 @@ -414,7 +423,7 @@ static bool cred_cap_issubset(const struct cred *set, const struct cred *subset)
105141 * Always returns 0 thus allowing this function to be tail-called at the end
105142 * of, say, sys_setgid().
105143 */
105144 -int commit_creds(struct cred *new)
105145 +static int __commit_creds(struct cred *new)
105146 {
105147 struct task_struct *task = current;
105148 const struct cred *old = task->real_cred;
105149 @@ -433,6 +442,8 @@ int commit_creds(struct cred *new)
105150
105151 get_cred(new); /* we will require a ref for the subj creds too */
105152
105153 + gr_set_role_label(task, new->uid, new->gid);
105154 +
105155 /* dumpability changes */
105156 if (!uid_eq(old->euid, new->euid) ||
105157 !gid_eq(old->egid, new->egid) ||
105158 @@ -482,6 +493,105 @@ int commit_creds(struct cred *new)
105159 put_cred(old);
105160 return 0;
105161 }
105162 +#ifdef CONFIG_GRKERNSEC_SETXID
105163 +extern int set_user(struct cred *new);
105164 +
105165 +void gr_delayed_cred_worker(void)
105166 +{
105167 + const struct cred *new = current->delayed_cred;
105168 + struct cred *ncred;
105169 +
105170 + current->delayed_cred = NULL;
105171 +
105172 + if (!uid_eq(current_uid(), GLOBAL_ROOT_UID) && new != NULL) {
105173 + // from doing get_cred on it when queueing this
105174 + put_cred(new);
105175 + return;
105176 + } else if (new == NULL)
105177 + return;
105178 +
105179 + ncred = prepare_creds();
105180 + if (!ncred)
105181 + goto die;
105182 + // uids
105183 + ncred->uid = new->uid;
105184 + ncred->euid = new->euid;
105185 + ncred->suid = new->suid;
105186 + ncred->fsuid = new->fsuid;
105187 + // gids
105188 + ncred->gid = new->gid;
105189 + ncred->egid = new->egid;
105190 + ncred->sgid = new->sgid;
105191 + ncred->fsgid = new->fsgid;
105192 + // groups
105193 + set_groups(ncred, new->group_info);
105194 + // caps
105195 + ncred->securebits = new->securebits;
105196 + ncred->cap_inheritable = new->cap_inheritable;
105197 + ncred->cap_permitted = new->cap_permitted;
105198 + ncred->cap_effective = new->cap_effective;
105199 + ncred->cap_bset = new->cap_bset;
105200 +
105201 + if (set_user(ncred)) {
105202 + abort_creds(ncred);
105203 + goto die;
105204 + }
105205 +
105206 + // from doing get_cred on it when queueing this
105207 + put_cred(new);
105208 +
105209 + __commit_creds(ncred);
105210 + return;
105211 +die:
105212 + // from doing get_cred on it when queueing this
105213 + put_cred(new);
105214 + do_group_exit(SIGKILL);
105215 +}
105216 +#endif
105217 +
105218 +int commit_creds(struct cred *new)
105219 +{
105220 +#ifdef CONFIG_GRKERNSEC_SETXID
105221 + int ret;
105222 + int schedule_it = 0;
105223 + struct task_struct *t;
105224 + unsigned oldsecurebits = current_cred()->securebits;
105225 +
105226 + /* we won't get called with tasklist_lock held for writing
105227 + and interrupts disabled as the cred struct in that case is
105228 + init_cred
105229 + */
105230 + if (grsec_enable_setxid && !current_is_single_threaded() &&
105231 + uid_eq(current_uid(), GLOBAL_ROOT_UID) &&
105232 + !uid_eq(new->uid, GLOBAL_ROOT_UID)) {
105233 + schedule_it = 1;
105234 + }
105235 + ret = __commit_creds(new);
105236 + if (schedule_it) {
105237 + rcu_read_lock();
105238 + read_lock(&tasklist_lock);
105239 + for (t = next_thread(current); t != current;
105240 + t = next_thread(t)) {
105241 + /* we'll check if the thread has uid 0 in
105242 + * the delayed worker routine
105243 + */
105244 + if (task_securebits(t) == oldsecurebits &&
105245 + t->delayed_cred == NULL) {
105246 + t->delayed_cred = get_cred(new);
105247 + set_tsk_thread_flag(t, TIF_GRSEC_SETXID);
105248 + set_tsk_need_resched(t);
105249 + }
105250 + }
105251 + read_unlock(&tasklist_lock);
105252 + rcu_read_unlock();
105253 + }
105254 +
105255 + return ret;
105256 +#else
105257 + return __commit_creds(new);
105258 +#endif
105259 +}
105260 +
105261 EXPORT_SYMBOL(commit_creds);
105262
105263 /**
105264 diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
105265 index 0874e2e..5b32cc9 100644
105266 --- a/kernel/debug/debug_core.c
105267 +++ b/kernel/debug/debug_core.c
105268 @@ -127,7 +127,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock);
105269 */
105270 static atomic_t masters_in_kgdb;
105271 static atomic_t slaves_in_kgdb;
105272 -static atomic_t kgdb_break_tasklet_var;
105273 +static atomic_unchecked_t kgdb_break_tasklet_var;
105274 atomic_t kgdb_setting_breakpoint;
105275
105276 struct task_struct *kgdb_usethread;
105277 @@ -137,7 +137,7 @@ int kgdb_single_step;
105278 static pid_t kgdb_sstep_pid;
105279
105280 /* to keep track of the CPU which is doing the single stepping*/
105281 -atomic_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
105282 +atomic_unchecked_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
105283
105284 /*
105285 * If you are debugging a problem where roundup (the collection of
105286 @@ -552,7 +552,7 @@ return_normal:
105287 * kernel will only try for the value of sstep_tries before
105288 * giving up and continuing on.
105289 */
105290 - if (atomic_read(&kgdb_cpu_doing_single_step) != -1 &&
105291 + if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1 &&
105292 (kgdb_info[cpu].task &&
105293 kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) {
105294 atomic_set(&kgdb_active, -1);
105295 @@ -654,8 +654,8 @@ cpu_master_loop:
105296 }
105297
105298 kgdb_restore:
105299 - if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
105300 - int sstep_cpu = atomic_read(&kgdb_cpu_doing_single_step);
105301 + if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
105302 + int sstep_cpu = atomic_read_unchecked(&kgdb_cpu_doing_single_step);
105303 if (kgdb_info[sstep_cpu].task)
105304 kgdb_sstep_pid = kgdb_info[sstep_cpu].task->pid;
105305 else
105306 @@ -949,18 +949,18 @@ static void kgdb_unregister_callbacks(void)
105307 static void kgdb_tasklet_bpt(unsigned long ing)
105308 {
105309 kgdb_breakpoint();
105310 - atomic_set(&kgdb_break_tasklet_var, 0);
105311 + atomic_set_unchecked(&kgdb_break_tasklet_var, 0);
105312 }
105313
105314 static DECLARE_TASKLET(kgdb_tasklet_breakpoint, kgdb_tasklet_bpt, 0);
105315
105316 void kgdb_schedule_breakpoint(void)
105317 {
105318 - if (atomic_read(&kgdb_break_tasklet_var) ||
105319 + if (atomic_read_unchecked(&kgdb_break_tasklet_var) ||
105320 atomic_read(&kgdb_active) != -1 ||
105321 atomic_read(&kgdb_setting_breakpoint))
105322 return;
105323 - atomic_inc(&kgdb_break_tasklet_var);
105324 + atomic_inc_unchecked(&kgdb_break_tasklet_var);
105325 tasklet_schedule(&kgdb_tasklet_breakpoint);
105326 }
105327 EXPORT_SYMBOL_GPL(kgdb_schedule_breakpoint);
105328 diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
105329 index 41213454..861e178 100644
105330 --- a/kernel/debug/kdb/kdb_main.c
105331 +++ b/kernel/debug/kdb/kdb_main.c
105332 @@ -2021,7 +2021,7 @@ static int kdb_lsmod(int argc, const char **argv)
105333 continue;
105334
105335 kdb_printf("%-20s%8u 0x%p ", mod->name,
105336 - mod->core_size, (void *)mod);
105337 + mod->core_size_rx + mod->core_size_rw, (void *)mod);
105338 #ifdef CONFIG_MODULE_UNLOAD
105339 kdb_printf("%4d ", module_refcount(mod));
105340 #endif
105341 @@ -2031,7 +2031,7 @@ static int kdb_lsmod(int argc, const char **argv)
105342 kdb_printf(" (Loading)");
105343 else
105344 kdb_printf(" (Live)");
105345 - kdb_printf(" 0x%p", mod->module_core);
105346 + kdb_printf(" 0x%p 0x%p", mod->module_core_rx, mod->module_core_rw);
105347
105348 #ifdef CONFIG_MODULE_UNLOAD
105349 {
105350 diff --git a/kernel/events/core.c b/kernel/events/core.c
105351 index e6feb51..470c853 100644
105352 --- a/kernel/events/core.c
105353 +++ b/kernel/events/core.c
105354 @@ -174,8 +174,15 @@ static struct srcu_struct pmus_srcu;
105355 * 0 - disallow raw tracepoint access for unpriv
105356 * 1 - disallow cpu events for unpriv
105357 * 2 - disallow kernel profiling for unpriv
105358 + * 3 - disallow all unpriv perf event use
105359 */
105360 -int sysctl_perf_event_paranoid __read_mostly = 1;
105361 +#ifdef CONFIG_GRKERNSEC_PERF_HARDEN
105362 +int sysctl_perf_event_legitimately_concerned __read_only = 3;
105363 +#elif defined(CONFIG_GRKERNSEC_HIDESYM)
105364 +int sysctl_perf_event_legitimately_concerned __read_only = 2;
105365 +#else
105366 +int sysctl_perf_event_legitimately_concerned __read_only = 1;
105367 +#endif
105368
105369 /* Minimum for 512 kiB + 1 user control page */
105370 int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
105371 @@ -201,7 +208,7 @@ void update_perf_cpu_limits(void)
105372
105373 tmp *= sysctl_perf_cpu_time_max_percent;
105374 do_div(tmp, 100);
105375 - ACCESS_ONCE(perf_sample_allowed_ns) = tmp;
105376 + ACCESS_ONCE_RW(perf_sample_allowed_ns) = tmp;
105377 }
105378
105379 static int perf_rotate_context(struct perf_cpu_context *cpuctx);
105380 @@ -307,7 +314,7 @@ void perf_sample_event_took(u64 sample_len_ns)
105381 }
105382 }
105383
105384 -static atomic64_t perf_event_id;
105385 +static atomic64_unchecked_t perf_event_id;
105386
105387 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
105388 enum event_type_t event_type);
105389 @@ -3753,9 +3760,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
105390 mutex_lock(&event->child_mutex);
105391 total += perf_event_read(event);
105392 *enabled += event->total_time_enabled +
105393 - atomic64_read(&event->child_total_time_enabled);
105394 + atomic64_read_unchecked(&event->child_total_time_enabled);
105395 *running += event->total_time_running +
105396 - atomic64_read(&event->child_total_time_running);
105397 + atomic64_read_unchecked(&event->child_total_time_running);
105398
105399 list_for_each_entry(child, &event->child_list, child_list) {
105400 total += perf_event_read(child);
105401 @@ -4285,10 +4292,10 @@ void perf_event_update_userpage(struct perf_event *event)
105402 userpg->offset -= local64_read(&event->hw.prev_count);
105403
105404 userpg->time_enabled = enabled +
105405 - atomic64_read(&event->child_total_time_enabled);
105406 + atomic64_read_unchecked(&event->child_total_time_enabled);
105407
105408 userpg->time_running = running +
105409 - atomic64_read(&event->child_total_time_running);
105410 + atomic64_read_unchecked(&event->child_total_time_running);
105411
105412 arch_perf_update_userpage(event, userpg, now);
105413
105414 @@ -4963,7 +4970,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
105415
105416 /* Data. */
105417 sp = perf_user_stack_pointer(regs);
105418 - rem = __output_copy_user(handle, (void *) sp, dump_size);
105419 + rem = __output_copy_user(handle, (void __user *) sp, dump_size);
105420 dyn_size = dump_size - rem;
105421
105422 perf_output_skip(handle, rem);
105423 @@ -5054,11 +5061,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
105424 values[n++] = perf_event_count(event);
105425 if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
105426 values[n++] = enabled +
105427 - atomic64_read(&event->child_total_time_enabled);
105428 + atomic64_read_unchecked(&event->child_total_time_enabled);
105429 }
105430 if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
105431 values[n++] = running +
105432 - atomic64_read(&event->child_total_time_running);
105433 + atomic64_read_unchecked(&event->child_total_time_running);
105434 }
105435 if (read_format & PERF_FORMAT_ID)
105436 values[n++] = primary_event_id(event);
105437 @@ -7588,7 +7595,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
105438 event->parent = parent_event;
105439
105440 event->ns = get_pid_ns(task_active_pid_ns(current));
105441 - event->id = atomic64_inc_return(&perf_event_id);
105442 + event->id = atomic64_inc_return_unchecked(&perf_event_id);
105443
105444 event->state = PERF_EVENT_STATE_INACTIVE;
105445
105446 @@ -7947,6 +7954,11 @@ SYSCALL_DEFINE5(perf_event_open,
105447 if (flags & ~PERF_FLAG_ALL)
105448 return -EINVAL;
105449
105450 +#ifdef CONFIG_GRKERNSEC_PERF_HARDEN
105451 + if (perf_paranoid_any() && !capable(CAP_SYS_ADMIN))
105452 + return -EACCES;
105453 +#endif
105454 +
105455 err = perf_copy_attr(attr_uptr, &attr);
105456 if (err)
105457 return err;
105458 @@ -8395,10 +8407,10 @@ static void sync_child_event(struct perf_event *child_event,
105459 /*
105460 * Add back the child's count to the parent's count:
105461 */
105462 - atomic64_add(child_val, &parent_event->child_count);
105463 - atomic64_add(child_event->total_time_enabled,
105464 + atomic64_add_unchecked(child_val, &parent_event->child_count);
105465 + atomic64_add_unchecked(child_event->total_time_enabled,
105466 &parent_event->child_total_time_enabled);
105467 - atomic64_add(child_event->total_time_running,
105468 + atomic64_add_unchecked(child_event->total_time_running,
105469 &parent_event->child_total_time_running);
105470
105471 /*
105472 diff --git a/kernel/events/internal.h b/kernel/events/internal.h
105473 index 2bbad9c..056f20c 100644
105474 --- a/kernel/events/internal.h
105475 +++ b/kernel/events/internal.h
105476 @@ -115,10 +115,10 @@ static inline unsigned long perf_aux_size(struct ring_buffer *rb)
105477 return rb->aux_nr_pages << PAGE_SHIFT;
105478 }
105479
105480 -#define DEFINE_OUTPUT_COPY(func_name, memcpy_func) \
105481 +#define DEFINE_OUTPUT_COPY(func_name, memcpy_func, user) \
105482 static inline unsigned long \
105483 func_name(struct perf_output_handle *handle, \
105484 - const void *buf, unsigned long len) \
105485 + const void user *buf, unsigned long len) \
105486 { \
105487 unsigned long size, written; \
105488 \
105489 @@ -151,7 +151,7 @@ memcpy_common(void *dst, const void *src, unsigned long n)
105490 return 0;
105491 }
105492
105493 -DEFINE_OUTPUT_COPY(__output_copy, memcpy_common)
105494 +DEFINE_OUTPUT_COPY(__output_copy, memcpy_common, )
105495
105496 static inline unsigned long
105497 memcpy_skip(void *dst, const void *src, unsigned long n)
105498 @@ -159,7 +159,7 @@ memcpy_skip(void *dst, const void *src, unsigned long n)
105499 return 0;
105500 }
105501
105502 -DEFINE_OUTPUT_COPY(__output_skip, memcpy_skip)
105503 +DEFINE_OUTPUT_COPY(__output_skip, memcpy_skip, )
105504
105505 #ifndef arch_perf_out_copy_user
105506 #define arch_perf_out_copy_user arch_perf_out_copy_user
105507 @@ -177,7 +177,7 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n)
105508 }
105509 #endif
105510
105511 -DEFINE_OUTPUT_COPY(__output_copy_user, arch_perf_out_copy_user)
105512 +DEFINE_OUTPUT_COPY(__output_copy_user, arch_perf_out_copy_user, __user)
105513
105514 /* Callchain handling */
105515 extern struct perf_callchain_entry *
105516 diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
105517 index cb346f2..e4dc317 100644
105518 --- a/kernel/events/uprobes.c
105519 +++ b/kernel/events/uprobes.c
105520 @@ -1670,7 +1670,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
105521 {
105522 struct page *page;
105523 uprobe_opcode_t opcode;
105524 - int result;
105525 + long result;
105526
105527 pagefault_disable();
105528 result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr,
105529 diff --git a/kernel/exit.c b/kernel/exit.c
105530 index 031325e..c6342c4 100644
105531 --- a/kernel/exit.c
105532 +++ b/kernel/exit.c
105533 @@ -171,6 +171,10 @@ void release_task(struct task_struct *p)
105534 struct task_struct *leader;
105535 int zap_leader;
105536 repeat:
105537 +#ifdef CONFIG_NET
105538 + gr_del_task_from_ip_table(p);
105539 +#endif
105540 +
105541 /* don't need to get the RCU readlock here - the process is dead and
105542 * can't be modifying its own credentials. But shut RCU-lockdep up */
105543 rcu_read_lock();
105544 @@ -656,6 +660,8 @@ void do_exit(long code)
105545 int group_dead;
105546 TASKS_RCU(int tasks_rcu_i);
105547
105548 + set_fs(USER_DS);
105549 +
105550 profile_task_exit(tsk);
105551
105552 WARN_ON(blk_needs_flush_plug(tsk));
105553 @@ -672,7 +678,6 @@ void do_exit(long code)
105554 * mm_release()->clear_child_tid() from writing to a user-controlled
105555 * kernel address.
105556 */
105557 - set_fs(USER_DS);
105558
105559 ptrace_event(PTRACE_EVENT_EXIT, code);
105560
105561 @@ -730,6 +735,9 @@ void do_exit(long code)
105562 tsk->exit_code = code;
105563 taskstats_exit(tsk, group_dead);
105564
105565 + gr_acl_handle_psacct(tsk, code);
105566 + gr_acl_handle_exit();
105567 +
105568 exit_mm(tsk);
105569
105570 if (group_dead)
105571 @@ -847,7 +855,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
105572 * Take down every thread in the group. This is called by fatal signals
105573 * as well as by sys_exit_group (below).
105574 */
105575 -void
105576 +__noreturn void
105577 do_group_exit(int exit_code)
105578 {
105579 struct signal_struct *sig = current->signal;
105580 diff --git a/kernel/fork.c b/kernel/fork.c
105581 index 26a70dc..74efe33 100644
105582 --- a/kernel/fork.c
105583 +++ b/kernel/fork.c
105584 @@ -188,12 +188,54 @@ static void free_thread_info(struct thread_info *ti)
105585 void thread_info_cache_init(void)
105586 {
105587 thread_info_cache = kmem_cache_create("thread_info", THREAD_SIZE,
105588 - THREAD_SIZE, 0, NULL);
105589 + THREAD_SIZE, SLAB_USERCOPY, NULL);
105590 BUG_ON(thread_info_cache == NULL);
105591 }
105592 # endif
105593 #endif
105594
105595 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
105596 +static inline struct thread_info *gr_alloc_thread_info_node(struct task_struct *tsk,
105597 + int node, void **lowmem_stack)
105598 +{
105599 + struct page *pages[THREAD_SIZE / PAGE_SIZE];
105600 + void *ret = NULL;
105601 + unsigned int i;
105602 +
105603 + *lowmem_stack = alloc_thread_info_node(tsk, node);
105604 + if (*lowmem_stack == NULL)
105605 + goto out;
105606 +
105607 + for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++)
105608 + pages[i] = virt_to_page(*lowmem_stack + (i * PAGE_SIZE));
105609 +
105610 + /* use VM_IOREMAP to gain THREAD_SIZE alignment */
105611 + ret = vmap(pages, THREAD_SIZE / PAGE_SIZE, VM_IOREMAP, PAGE_KERNEL);
105612 + if (ret == NULL) {
105613 + free_thread_info(*lowmem_stack);
105614 + *lowmem_stack = NULL;
105615 + }
105616 +
105617 +out:
105618 + return ret;
105619 +}
105620 +
105621 +static inline void gr_free_thread_info(struct task_struct *tsk, struct thread_info *ti)
105622 +{
105623 + unmap_process_stacks(tsk);
105624 +}
105625 +#else
105626 +static inline struct thread_info *gr_alloc_thread_info_node(struct task_struct *tsk,
105627 + int node, void **lowmem_stack)
105628 +{
105629 + return alloc_thread_info_node(tsk, node);
105630 +}
105631 +static inline void gr_free_thread_info(struct task_struct *tsk, struct thread_info *ti)
105632 +{
105633 + free_thread_info(ti);
105634 +}
105635 +#endif
105636 +
105637 /* SLAB cache for signal_struct structures (tsk->signal) */
105638 static struct kmem_cache *signal_cachep;
105639
105640 @@ -212,18 +254,22 @@ struct kmem_cache *vm_area_cachep;
105641 /* SLAB cache for mm_struct structures (tsk->mm) */
105642 static struct kmem_cache *mm_cachep;
105643
105644 -static void account_kernel_stack(struct thread_info *ti, int account)
105645 +static void account_kernel_stack(struct task_struct *tsk, struct thread_info *ti, int account)
105646 {
105647 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
105648 + struct zone *zone = page_zone(virt_to_page(tsk->lowmem_stack));
105649 +#else
105650 struct zone *zone = page_zone(virt_to_page(ti));
105651 +#endif
105652
105653 mod_zone_page_state(zone, NR_KERNEL_STACK, account);
105654 }
105655
105656 void free_task(struct task_struct *tsk)
105657 {
105658 - account_kernel_stack(tsk->stack, -1);
105659 + account_kernel_stack(tsk, tsk->stack, -1);
105660 arch_release_thread_info(tsk->stack);
105661 - free_thread_info(tsk->stack);
105662 + gr_free_thread_info(tsk, tsk->stack);
105663 rt_mutex_debug_task_free(tsk);
105664 ftrace_graph_exit_task(tsk);
105665 put_seccomp_filter(tsk);
105666 @@ -289,7 +335,7 @@ static void set_max_threads(unsigned int max_threads_suggested)
105667
105668 #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
105669 /* Initialized by the architecture: */
105670 -int arch_task_struct_size __read_mostly;
105671 +size_t arch_task_struct_size __read_mostly;
105672 #endif
105673
105674 void __init fork_init(void)
105675 @@ -334,6 +380,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
105676 {
105677 struct task_struct *tsk;
105678 struct thread_info *ti;
105679 + void *lowmem_stack;
105680 int node = tsk_fork_get_node(orig);
105681 int err;
105682
105683 @@ -341,7 +388,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
105684 if (!tsk)
105685 return NULL;
105686
105687 - ti = alloc_thread_info_node(tsk, node);
105688 + ti = gr_alloc_thread_info_node(tsk, node, &lowmem_stack);
105689 if (!ti)
105690 goto free_tsk;
105691
105692 @@ -350,6 +397,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
105693 goto free_ti;
105694
105695 tsk->stack = ti;
105696 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
105697 + tsk->lowmem_stack = lowmem_stack;
105698 +#endif
105699 #ifdef CONFIG_SECCOMP
105700 /*
105701 * We must handle setting up seccomp filters once we're under
105702 @@ -366,7 +416,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
105703 set_task_stack_end_magic(tsk);
105704
105705 #ifdef CONFIG_CC_STACKPROTECTOR
105706 - tsk->stack_canary = get_random_int();
105707 + tsk->stack_canary = pax_get_random_long();
105708 #endif
105709
105710 /*
105711 @@ -380,24 +430,89 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
105712 tsk->splice_pipe = NULL;
105713 tsk->task_frag.page = NULL;
105714
105715 - account_kernel_stack(ti, 1);
105716 + account_kernel_stack(tsk, ti, 1);
105717
105718 return tsk;
105719
105720 free_ti:
105721 - free_thread_info(ti);
105722 + gr_free_thread_info(tsk, ti);
105723 free_tsk:
105724 free_task_struct(tsk);
105725 return NULL;
105726 }
105727
105728 #ifdef CONFIG_MMU
105729 -static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
105730 +static struct vm_area_struct *dup_vma(struct mm_struct *mm, struct mm_struct *oldmm, struct vm_area_struct *mpnt)
105731 +{
105732 + struct vm_area_struct *tmp;
105733 + unsigned long charge;
105734 + struct file *file;
105735 + int retval;
105736 +
105737 + charge = 0;
105738 + if (mpnt->vm_flags & VM_ACCOUNT) {
105739 + unsigned long len = vma_pages(mpnt);
105740 +
105741 + if (security_vm_enough_memory_mm(oldmm, len)) /* sic */
105742 + goto fail_nomem;
105743 + charge = len;
105744 + }
105745 + tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
105746 + if (!tmp)
105747 + goto fail_nomem;
105748 + *tmp = *mpnt;
105749 + tmp->vm_mm = mm;
105750 + INIT_LIST_HEAD(&tmp->anon_vma_chain);
105751 + retval = vma_dup_policy(mpnt, tmp);
105752 + if (retval)
105753 + goto fail_nomem_policy;
105754 + if (anon_vma_fork(tmp, mpnt))
105755 + goto fail_nomem_anon_vma_fork;
105756 + tmp->vm_flags &= ~VM_LOCKED;
105757 + tmp->vm_next = tmp->vm_prev = NULL;
105758 + tmp->vm_mirror = NULL;
105759 + file = tmp->vm_file;
105760 + if (file) {
105761 + struct inode *inode = file_inode(file);
105762 + struct address_space *mapping = file->f_mapping;
105763 +
105764 + get_file(file);
105765 + if (tmp->vm_flags & VM_DENYWRITE)
105766 + atomic_dec(&inode->i_writecount);
105767 + i_mmap_lock_write(mapping);
105768 + if (tmp->vm_flags & VM_SHARED)
105769 + atomic_inc(&mapping->i_mmap_writable);
105770 + flush_dcache_mmap_lock(mapping);
105771 + /* insert tmp into the share list, just after mpnt */
105772 + vma_interval_tree_insert_after(tmp, mpnt, &mapping->i_mmap);
105773 + flush_dcache_mmap_unlock(mapping);
105774 + i_mmap_unlock_write(mapping);
105775 + }
105776 +
105777 + /*
105778 + * Clear hugetlb-related page reserves for children. This only
105779 + * affects MAP_PRIVATE mappings. Faults generated by the child
105780 + * are not guaranteed to succeed, even if read-only
105781 + */
105782 + if (is_vm_hugetlb_page(tmp))
105783 + reset_vma_resv_huge_pages(tmp);
105784 +
105785 + return tmp;
105786 +
105787 +fail_nomem_anon_vma_fork:
105788 + mpol_put(vma_policy(tmp));
105789 +fail_nomem_policy:
105790 + kmem_cache_free(vm_area_cachep, tmp);
105791 +fail_nomem:
105792 + vm_unacct_memory(charge);
105793 + return NULL;
105794 +}
105795 +
105796 +static __latent_entropy int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
105797 {
105798 struct vm_area_struct *mpnt, *tmp, *prev, **pprev;
105799 struct rb_node **rb_link, *rb_parent;
105800 int retval;
105801 - unsigned long charge;
105802
105803 uprobe_start_dup_mmap();
105804 down_write(&oldmm->mmap_sem);
105805 @@ -428,51 +543,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
105806
105807 prev = NULL;
105808 for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
105809 - struct file *file;
105810 -
105811 if (mpnt->vm_flags & VM_DONTCOPY) {
105812 vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file,
105813 -vma_pages(mpnt));
105814 continue;
105815 }
105816 - charge = 0;
105817 - if (mpnt->vm_flags & VM_ACCOUNT) {
105818 - unsigned long len = vma_pages(mpnt);
105819 -
105820 - if (security_vm_enough_memory_mm(oldmm, len)) /* sic */
105821 - goto fail_nomem;
105822 - charge = len;
105823 - }
105824 - tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
105825 - if (!tmp)
105826 - goto fail_nomem;
105827 - *tmp = *mpnt;
105828 - INIT_LIST_HEAD(&tmp->anon_vma_chain);
105829 - retval = vma_dup_policy(mpnt, tmp);
105830 - if (retval)
105831 - goto fail_nomem_policy;
105832 - tmp->vm_mm = mm;
105833 - if (anon_vma_fork(tmp, mpnt))
105834 - goto fail_nomem_anon_vma_fork;
105835 - tmp->vm_flags &= ~VM_LOCKED;
105836 - tmp->vm_next = tmp->vm_prev = NULL;
105837 - file = tmp->vm_file;
105838 - if (file) {
105839 - struct inode *inode = file_inode(file);
105840 - struct address_space *mapping = file->f_mapping;
105841 -
105842 - get_file(file);
105843 - if (tmp->vm_flags & VM_DENYWRITE)
105844 - atomic_dec(&inode->i_writecount);
105845 - i_mmap_lock_write(mapping);
105846 - if (tmp->vm_flags & VM_SHARED)
105847 - atomic_inc(&mapping->i_mmap_writable);
105848 - flush_dcache_mmap_lock(mapping);
105849 - /* insert tmp into the share list, just after mpnt */
105850 - vma_interval_tree_insert_after(tmp, mpnt,
105851 - &mapping->i_mmap);
105852 - flush_dcache_mmap_unlock(mapping);
105853 - i_mmap_unlock_write(mapping);
105854 + tmp = dup_vma(mm, oldmm, mpnt);
105855 + if (!tmp) {
105856 + retval = -ENOMEM;
105857 + goto out;
105858 }
105859
105860 /*
105861 @@ -504,6 +583,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
105862 if (retval)
105863 goto out;
105864 }
105865 +
105866 +#ifdef CONFIG_PAX_SEGMEXEC
105867 + if (oldmm->pax_flags & MF_PAX_SEGMEXEC) {
105868 + struct vm_area_struct *mpnt_m;
105869 +
105870 + for (mpnt = oldmm->mmap, mpnt_m = mm->mmap; mpnt; mpnt = mpnt->vm_next, mpnt_m = mpnt_m->vm_next) {
105871 + BUG_ON(!mpnt_m || mpnt_m->vm_mirror || mpnt->vm_mm != oldmm || mpnt_m->vm_mm != mm);
105872 +
105873 + if (!mpnt->vm_mirror)
105874 + continue;
105875 +
105876 + if (mpnt->vm_end <= SEGMEXEC_TASK_SIZE) {
105877 + BUG_ON(mpnt->vm_mirror->vm_mirror != mpnt);
105878 + mpnt->vm_mirror = mpnt_m;
105879 + } else {
105880 + BUG_ON(mpnt->vm_mirror->vm_mirror == mpnt || mpnt->vm_mirror->vm_mirror->vm_mm != mm);
105881 + mpnt_m->vm_mirror = mpnt->vm_mirror->vm_mirror;
105882 + mpnt_m->vm_mirror->vm_mirror = mpnt_m;
105883 + mpnt->vm_mirror->vm_mirror = mpnt;
105884 + }
105885 + }
105886 + BUG_ON(mpnt_m);
105887 + }
105888 +#endif
105889 +
105890 /* a new mm has just been created */
105891 arch_dup_mmap(oldmm, mm);
105892 retval = 0;
105893 @@ -513,14 +617,6 @@ out:
105894 up_write(&oldmm->mmap_sem);
105895 uprobe_end_dup_mmap();
105896 return retval;
105897 -fail_nomem_anon_vma_fork:
105898 - mpol_put(vma_policy(tmp));
105899 -fail_nomem_policy:
105900 - kmem_cache_free(vm_area_cachep, tmp);
105901 -fail_nomem:
105902 - retval = -ENOMEM;
105903 - vm_unacct_memory(charge);
105904 - goto out;
105905 }
105906
105907 static inline int mm_alloc_pgd(struct mm_struct *mm)
105908 @@ -795,8 +891,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
105909 return ERR_PTR(err);
105910
105911 mm = get_task_mm(task);
105912 - if (mm && mm != current->mm &&
105913 - !ptrace_may_access(task, mode)) {
105914 + if (mm && ((mm != current->mm && !ptrace_may_access(task, mode)) ||
105915 + (mode == PTRACE_MODE_ATTACH && (gr_handle_proc_ptrace(task) || gr_acl_handle_procpidmem(task))))) {
105916 mmput(mm);
105917 mm = ERR_PTR(-EACCES);
105918 }
105919 @@ -997,13 +1093,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
105920 spin_unlock(&fs->lock);
105921 return -EAGAIN;
105922 }
105923 - fs->users++;
105924 + atomic_inc(&fs->users);
105925 spin_unlock(&fs->lock);
105926 return 0;
105927 }
105928 tsk->fs = copy_fs_struct(fs);
105929 if (!tsk->fs)
105930 return -ENOMEM;
105931 + /* Carry through gr_chroot_dentry and is_chrooted instead
105932 + of recomputing it here. Already copied when the task struct
105933 + is duplicated. This allows pivot_root to not be treated as
105934 + a chroot
105935 + */
105936 + //gr_set_chroot_entries(tsk, &tsk->fs->root);
105937 +
105938 return 0;
105939 }
105940
105941 @@ -1234,7 +1337,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid)
105942 * parts of the process environment (as per the clone
105943 * flags). The actual kick-off is left to the caller.
105944 */
105945 -static struct task_struct *copy_process(unsigned long clone_flags,
105946 +static __latent_entropy struct task_struct *copy_process(unsigned long clone_flags,
105947 unsigned long stack_start,
105948 unsigned long stack_size,
105949 int __user *child_tidptr,
105950 @@ -1306,6 +1409,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
105951 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
105952 #endif
105953 retval = -EAGAIN;
105954 +
105955 + gr_learn_resource(p, RLIMIT_NPROC, atomic_read(&p->real_cred->user->processes), 0);
105956 +
105957 if (atomic_read(&p->real_cred->user->processes) >=
105958 task_rlimit(p, RLIMIT_NPROC)) {
105959 if (p->real_cred->user != INIT_USER &&
105960 @@ -1556,6 +1662,11 @@ static struct task_struct *copy_process(unsigned long clone_flags,
105961 goto bad_fork_free_pid;
105962 }
105963
105964 + /* synchronizes with gr_set_acls()
105965 + we need to call this past the point of no return for fork()
105966 + */
105967 + gr_copy_label(p);
105968 +
105969 if (likely(p->pid)) {
105970 ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
105971
105972 @@ -1645,6 +1756,8 @@ bad_fork_cleanup_count:
105973 bad_fork_free:
105974 free_task(p);
105975 fork_out:
105976 + gr_log_forkfail(retval);
105977 +
105978 return ERR_PTR(retval);
105979 }
105980
105981 @@ -1707,6 +1820,7 @@ long _do_fork(unsigned long clone_flags,
105982
105983 p = copy_process(clone_flags, stack_start, stack_size,
105984 child_tidptr, NULL, trace, tls);
105985 + add_latent_entropy();
105986 /*
105987 * Do this prior waking up the new thread - the thread pointer
105988 * might get invalid after that point, if the thread exits quickly.
105989 @@ -1723,6 +1837,8 @@ long _do_fork(unsigned long clone_flags,
105990 if (clone_flags & CLONE_PARENT_SETTID)
105991 put_user(nr, parent_tidptr);
105992
105993 + gr_handle_brute_check();
105994 +
105995 if (clone_flags & CLONE_VFORK) {
105996 p->vfork_done = &vfork;
105997 init_completion(&vfork);
105998 @@ -1855,7 +1971,7 @@ void __init proc_caches_init(void)
105999 mm_cachep = kmem_cache_create("mm_struct",
106000 sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,
106001 SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
106002 - vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC);
106003 + vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC | SLAB_NO_SANITIZE);
106004 mmap_init();
106005 nsproxy_cache_init();
106006 }
106007 @@ -1903,7 +2019,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
106008 return 0;
106009
106010 /* don't need lock here; in the worst case we'll do useless copy */
106011 - if (fs->users == 1)
106012 + if (atomic_read(&fs->users) == 1)
106013 return 0;
106014
106015 *new_fsp = copy_fs_struct(fs);
106016 @@ -2015,7 +2131,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
106017 fs = current->fs;
106018 spin_lock(&fs->lock);
106019 current->fs = new_fs;
106020 - if (--fs->users)
106021 + gr_set_chroot_entries(current, &current->fs->root);
106022 + if (atomic_dec_return(&fs->users))
106023 new_fs = NULL;
106024 else
106025 new_fs = fs;
106026 @@ -2079,7 +2196,7 @@ int unshare_files(struct files_struct **displaced)
106027 int sysctl_max_threads(struct ctl_table *table, int write,
106028 void __user *buffer, size_t *lenp, loff_t *ppos)
106029 {
106030 - struct ctl_table t;
106031 + ctl_table_no_const t;
106032 int ret;
106033 int threads = max_threads;
106034 int min = MIN_THREADS;
106035 diff --git a/kernel/futex.c b/kernel/futex.c
106036 index c4a182f..e789324 100644
106037 --- a/kernel/futex.c
106038 +++ b/kernel/futex.c
106039 @@ -201,7 +201,7 @@ struct futex_pi_state {
106040 atomic_t refcount;
106041
106042 union futex_key key;
106043 -};
106044 +} __randomize_layout;
106045
106046 /**
106047 * struct futex_q - The hashed futex queue entry, one per waiting task
106048 @@ -235,7 +235,7 @@ struct futex_q {
106049 struct rt_mutex_waiter *rt_waiter;
106050 union futex_key *requeue_pi_key;
106051 u32 bitset;
106052 -};
106053 +} __randomize_layout;
106054
106055 static const struct futex_q futex_q_init = {
106056 /* list gets initialized in queue_me()*/
106057 @@ -402,6 +402,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
106058 struct page *page, *page_head;
106059 int err, ro = 0;
106060
106061 +#ifdef CONFIG_PAX_SEGMEXEC
106062 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && address >= SEGMEXEC_TASK_SIZE)
106063 + return -EFAULT;
106064 +#endif
106065 +
106066 /*
106067 * The futex address must be "naturally" aligned.
106068 */
106069 @@ -601,7 +606,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr,
106070
106071 static int get_futex_value_locked(u32 *dest, u32 __user *from)
106072 {
106073 - int ret;
106074 + unsigned long ret;
106075
106076 pagefault_disable();
106077 ret = __copy_from_user_inatomic(dest, from, sizeof(u32));
106078 @@ -3030,6 +3035,7 @@ static void __init futex_detect_cmpxchg(void)
106079 {
106080 #ifndef CONFIG_HAVE_FUTEX_CMPXCHG
106081 u32 curval;
106082 + mm_segment_t oldfs;
106083
106084 /*
106085 * This will fail and we want it. Some arch implementations do
106086 @@ -3041,8 +3047,11 @@ static void __init futex_detect_cmpxchg(void)
106087 * implementation, the non-functional ones will return
106088 * -ENOSYS.
106089 */
106090 + oldfs = get_fs();
106091 + set_fs(USER_DS);
106092 if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
106093 futex_cmpxchg_enabled = 1;
106094 + set_fs(oldfs);
106095 #endif
106096 }
106097
106098 diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
106099 index 55c8c93..9ba7ad6 100644
106100 --- a/kernel/futex_compat.c
106101 +++ b/kernel/futex_compat.c
106102 @@ -32,7 +32,7 @@ fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry,
106103 return 0;
106104 }
106105
106106 -static void __user *futex_uaddr(struct robust_list __user *entry,
106107 +static void __user __intentional_overflow(-1) *futex_uaddr(struct robust_list __user *entry,
106108 compat_long_t futex_offset)
106109 {
106110 compat_uptr_t base = ptr_to_compat(entry);
106111 diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c
106112 index 7080ae1..c9b3761 100644
106113 --- a/kernel/gcov/base.c
106114 +++ b/kernel/gcov/base.c
106115 @@ -123,11 +123,6 @@ void gcov_enable_events(void)
106116 }
106117
106118 #ifdef CONFIG_MODULES
106119 -static inline int within(void *addr, void *start, unsigned long size)
106120 -{
106121 - return ((addr >= start) && (addr < start + size));
106122 -}
106123 -
106124 /* Update list and generate events when modules are unloaded. */
106125 static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
106126 void *data)
106127 @@ -142,7 +137,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
106128
106129 /* Remove entries located in module from linked list. */
106130 while ((info = gcov_info_next(info))) {
106131 - if (within(info, mod->module_core, mod->core_size)) {
106132 + if (within_module_core_rw((unsigned long)info, mod)) {
106133 gcov_info_unlink(prev, info);
106134 if (gcov_events_enabled)
106135 gcov_event(GCOV_REMOVE, info);
106136 diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
106137 index f974485..c5b8afd 100644
106138 --- a/kernel/irq/manage.c
106139 +++ b/kernel/irq/manage.c
106140 @@ -937,7 +937,7 @@ static int irq_thread(void *data)
106141
106142 action_ret = handler_fn(desc, action);
106143 if (action_ret == IRQ_HANDLED)
106144 - atomic_inc(&desc->threads_handled);
106145 + atomic_inc_unchecked(&desc->threads_handled);
106146
106147 wake_threads_waitq(desc);
106148 }
106149 diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c
106150 index 7bf1f1b..d73e508 100644
106151 --- a/kernel/irq/msi.c
106152 +++ b/kernel/irq/msi.c
106153 @@ -195,16 +195,18 @@ static void msi_domain_update_dom_ops(struct msi_domain_info *info)
106154 return;
106155 }
106156
106157 + pax_open_kernel();
106158 if (ops->get_hwirq == NULL)
106159 - ops->get_hwirq = msi_domain_ops_default.get_hwirq;
106160 + *(void **)&ops->get_hwirq = msi_domain_ops_default.get_hwirq;
106161 if (ops->msi_init == NULL)
106162 - ops->msi_init = msi_domain_ops_default.msi_init;
106163 + *(void **)&ops->msi_init = msi_domain_ops_default.msi_init;
106164 if (ops->msi_check == NULL)
106165 - ops->msi_check = msi_domain_ops_default.msi_check;
106166 + *(void **)&ops->msi_check = msi_domain_ops_default.msi_check;
106167 if (ops->msi_prepare == NULL)
106168 - ops->msi_prepare = msi_domain_ops_default.msi_prepare;
106169 + *(void **)&ops->msi_prepare = msi_domain_ops_default.msi_prepare;
106170 if (ops->set_desc == NULL)
106171 - ops->set_desc = msi_domain_ops_default.set_desc;
106172 + *(void **)&ops->set_desc = msi_domain_ops_default.set_desc;
106173 + pax_close_kernel();
106174 }
106175
106176 static void msi_domain_update_chip_ops(struct msi_domain_info *info)
106177 @@ -212,12 +214,14 @@ static void msi_domain_update_chip_ops(struct msi_domain_info *info)
106178 struct irq_chip *chip = info->chip;
106179
106180 BUG_ON(!chip);
106181 + pax_open_kernel();
106182 if (!chip->irq_mask)
106183 - chip->irq_mask = pci_msi_mask_irq;
106184 + *(void **)&chip->irq_mask = pci_msi_mask_irq;
106185 if (!chip->irq_unmask)
106186 - chip->irq_unmask = pci_msi_unmask_irq;
106187 + *(void **)&chip->irq_unmask = pci_msi_unmask_irq;
106188 if (!chip->irq_set_affinity)
106189 - chip->irq_set_affinity = msi_domain_set_affinity;
106190 + *(void **)&chip->irq_set_affinity = msi_domain_set_affinity;
106191 + pax_close_kernel();
106192 }
106193
106194 /**
106195 diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
106196 index e2514b0..de3dfe0 100644
106197 --- a/kernel/irq/spurious.c
106198 +++ b/kernel/irq/spurious.c
106199 @@ -337,7 +337,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
106200 * count. We just care about the count being
106201 * different than the one we saw before.
106202 */
106203 - handled = atomic_read(&desc->threads_handled);
106204 + handled = atomic_read_unchecked(&desc->threads_handled);
106205 handled |= SPURIOUS_DEFERRED;
106206 if (handled != desc->threads_handled_last) {
106207 action_ret = IRQ_HANDLED;
106208 diff --git a/kernel/jump_label.c b/kernel/jump_label.c
106209 index 52ebaca..ec6f5cb 100644
106210 --- a/kernel/jump_label.c
106211 +++ b/kernel/jump_label.c
106212 @@ -14,6 +14,7 @@
106213 #include <linux/err.h>
106214 #include <linux/static_key.h>
106215 #include <linux/jump_label_ratelimit.h>
106216 +#include <linux/mm.h>
106217
106218 #ifdef HAVE_JUMP_LABEL
106219
106220 @@ -51,7 +52,9 @@ jump_label_sort_entries(struct jump_entry *start, struct jump_entry *stop)
106221
106222 size = (((unsigned long)stop - (unsigned long)start)
106223 / sizeof(struct jump_entry));
106224 + pax_open_kernel();
106225 sort(start, size, sizeof(struct jump_entry), jump_label_cmp, NULL);
106226 + pax_close_kernel();
106227 }
106228
106229 static void jump_label_update(struct static_key *key, int enable);
106230 @@ -363,10 +366,12 @@ static void jump_label_invalidate_module_init(struct module *mod)
106231 struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
106232 struct jump_entry *iter;
106233
106234 + pax_open_kernel();
106235 for (iter = iter_start; iter < iter_stop; iter++) {
106236 if (within_module_init(iter->code, mod))
106237 iter->code = 0;
106238 }
106239 + pax_close_kernel();
106240 }
106241
106242 static int
106243 diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
106244 index 5c5987f..bc502b0 100644
106245 --- a/kernel/kallsyms.c
106246 +++ b/kernel/kallsyms.c
106247 @@ -11,6 +11,9 @@
106248 * Changed the compression method from stem compression to "table lookup"
106249 * compression (see scripts/kallsyms.c for a more complete description)
106250 */
106251 +#ifdef CONFIG_GRKERNSEC_HIDESYM
106252 +#define __INCLUDED_BY_HIDESYM 1
106253 +#endif
106254 #include <linux/kallsyms.h>
106255 #include <linux/module.h>
106256 #include <linux/init.h>
106257 @@ -54,12 +57,33 @@ extern const unsigned long kallsyms_markers[] __weak;
106258
106259 static inline int is_kernel_inittext(unsigned long addr)
106260 {
106261 + if (system_state != SYSTEM_BOOTING)
106262 + return 0;
106263 +
106264 if (addr >= (unsigned long)_sinittext
106265 && addr <= (unsigned long)_einittext)
106266 return 1;
106267 return 0;
106268 }
106269
106270 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
106271 +#ifdef CONFIG_MODULES
106272 +static inline int is_module_text(unsigned long addr)
106273 +{
106274 + if ((unsigned long)MODULES_EXEC_VADDR <= addr && addr <= (unsigned long)MODULES_EXEC_END)
106275 + return 1;
106276 +
106277 + addr = ktla_ktva(addr);
106278 + return (unsigned long)MODULES_EXEC_VADDR <= addr && addr <= (unsigned long)MODULES_EXEC_END;
106279 +}
106280 +#else
106281 +static inline int is_module_text(unsigned long addr)
106282 +{
106283 + return 0;
106284 +}
106285 +#endif
106286 +#endif
106287 +
106288 static inline int is_kernel_text(unsigned long addr)
106289 {
106290 if ((addr >= (unsigned long)_stext && addr <= (unsigned long)_etext) ||
106291 @@ -70,13 +94,28 @@ static inline int is_kernel_text(unsigned long addr)
106292
106293 static inline int is_kernel(unsigned long addr)
106294 {
106295 +
106296 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
106297 + if (is_kernel_text(addr) || is_kernel_inittext(addr))
106298 + return 1;
106299 +
106300 + if (ktla_ktva((unsigned long)_text) <= addr && addr < (unsigned long)_end)
106301 +#else
106302 if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end)
106303 +#endif
106304 +
106305 return 1;
106306 return in_gate_area_no_mm(addr);
106307 }
106308
106309 static int is_ksym_addr(unsigned long addr)
106310 {
106311 +
106312 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
106313 + if (is_module_text(addr))
106314 + return 0;
106315 +#endif
106316 +
106317 if (all_var)
106318 return is_kernel(addr);
106319
106320 @@ -481,7 +520,6 @@ static unsigned long get_ksymbol_core(struct kallsym_iter *iter)
106321
106322 static void reset_iter(struct kallsym_iter *iter, loff_t new_pos)
106323 {
106324 - iter->name[0] = '\0';
106325 iter->nameoff = get_symbol_offset(new_pos);
106326 iter->pos = new_pos;
106327 }
106328 @@ -529,6 +567,11 @@ static int s_show(struct seq_file *m, void *p)
106329 {
106330 struct kallsym_iter *iter = m->private;
106331
106332 +#ifdef CONFIG_GRKERNSEC_HIDESYM
106333 + if (!uid_eq(current_uid(), GLOBAL_ROOT_UID))
106334 + return 0;
106335 +#endif
106336 +
106337 /* Some debugging symbols have no name. Ignore them. */
106338 if (!iter->name[0])
106339 return 0;
106340 @@ -542,6 +585,7 @@ static int s_show(struct seq_file *m, void *p)
106341 */
106342 type = iter->exported ? toupper(iter->type) :
106343 tolower(iter->type);
106344 +
106345 seq_printf(m, "%pK %c %s\t[%s]\n", (void *)iter->value,
106346 type, iter->name, iter->module_name);
106347 } else
106348 diff --git a/kernel/kcmp.c b/kernel/kcmp.c
106349 index 0aa69ea..a7fcafb 100644
106350 --- a/kernel/kcmp.c
106351 +++ b/kernel/kcmp.c
106352 @@ -100,6 +100,10 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type,
106353 struct task_struct *task1, *task2;
106354 int ret;
106355
106356 +#ifdef CONFIG_GRKERNSEC
106357 + return -ENOSYS;
106358 +#endif
106359 +
106360 rcu_read_lock();
106361
106362 /*
106363 diff --git a/kernel/kexec.c b/kernel/kexec.c
106364 index a785c10..6dbb06f 100644
106365 --- a/kernel/kexec.c
106366 +++ b/kernel/kexec.c
106367 @@ -1243,7 +1243,7 @@ static int kimage_load_segment(struct kimage *image,
106368 */
106369 struct kimage *kexec_image;
106370 struct kimage *kexec_crash_image;
106371 -int kexec_load_disabled;
106372 +int kexec_load_disabled __read_only;
106373
106374 static DEFINE_MUTEX(kexec_mutex);
106375
106376 @@ -1359,7 +1359,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
106377 compat_ulong_t, flags)
106378 {
106379 struct compat_kexec_segment in;
106380 - struct kexec_segment out, __user *ksegments;
106381 + struct kexec_segment out;
106382 + struct kexec_segment __user *ksegments;
106383 unsigned long i, result;
106384
106385 /* Don't allow clients that don't understand the native
106386 diff --git a/kernel/kmod.c b/kernel/kmod.c
106387 index 2777f40..a689506 100644
106388 --- a/kernel/kmod.c
106389 +++ b/kernel/kmod.c
106390 @@ -68,7 +68,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
106391 kfree(info->argv);
106392 }
106393
106394 -static int call_modprobe(char *module_name, int wait)
106395 +static int call_modprobe(char *module_name, char *module_param, int wait)
106396 {
106397 struct subprocess_info *info;
106398 static char *envp[] = {
106399 @@ -78,7 +78,7 @@ static int call_modprobe(char *module_name, int wait)
106400 NULL
106401 };
106402
106403 - char **argv = kmalloc(sizeof(char *[5]), GFP_KERNEL);
106404 + char **argv = kmalloc(sizeof(char *[6]), GFP_KERNEL);
106405 if (!argv)
106406 goto out;
106407
106408 @@ -90,7 +90,8 @@ static int call_modprobe(char *module_name, int wait)
106409 argv[1] = "-q";
106410 argv[2] = "--";
106411 argv[3] = module_name; /* check free_modprobe_argv() */
106412 - argv[4] = NULL;
106413 + argv[4] = module_param;
106414 + argv[5] = NULL;
106415
106416 info = call_usermodehelper_setup(modprobe_path, argv, envp, GFP_KERNEL,
106417 NULL, free_modprobe_argv, NULL);
106418 @@ -122,9 +123,8 @@ out:
106419 * If module auto-loading support is disabled then this function
106420 * becomes a no-operation.
106421 */
106422 -int __request_module(bool wait, const char *fmt, ...)
106423 +static int ____request_module(bool wait, char *module_param, const char *fmt, va_list ap)
106424 {
106425 - va_list args;
106426 char module_name[MODULE_NAME_LEN];
106427 unsigned int max_modprobes;
106428 int ret;
106429 @@ -143,9 +143,7 @@ int __request_module(bool wait, const char *fmt, ...)
106430 if (!modprobe_path[0])
106431 return 0;
106432
106433 - va_start(args, fmt);
106434 - ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args);
106435 - va_end(args);
106436 + ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, ap);
106437 if (ret >= MODULE_NAME_LEN)
106438 return -ENAMETOOLONG;
106439
106440 @@ -153,6 +151,20 @@ int __request_module(bool wait, const char *fmt, ...)
106441 if (ret)
106442 return ret;
106443
106444 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
106445 + if (uid_eq(current_uid(), GLOBAL_ROOT_UID)) {
106446 + /* hack to workaround consolekit/udisks stupidity */
106447 + read_lock(&tasklist_lock);
106448 + if (!strcmp(current->comm, "mount") &&
106449 + current->real_parent && !strncmp(current->real_parent->comm, "udisk", 5)) {
106450 + read_unlock(&tasklist_lock);
106451 + printk(KERN_ALERT "grsec: denied attempt to auto-load fs module %.64s by udisks\n", module_name);
106452 + return -EPERM;
106453 + }
106454 + read_unlock(&tasklist_lock);
106455 + }
106456 +#endif
106457 +
106458 /* If modprobe needs a service that is in a module, we get a recursive
106459 * loop. Limit the number of running kmod threads to max_threads/2 or
106460 * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method
106461 @@ -181,16 +193,61 @@ int __request_module(bool wait, const char *fmt, ...)
106462
106463 trace_module_request(module_name, wait, _RET_IP_);
106464
106465 - ret = call_modprobe(module_name, wait ? UMH_WAIT_PROC : UMH_WAIT_EXEC);
106466 + ret = call_modprobe(module_name, module_param, wait ? UMH_WAIT_PROC : UMH_WAIT_EXEC);
106467
106468 atomic_dec(&kmod_concurrent);
106469 return ret;
106470 }
106471 +
106472 +int ___request_module(bool wait, char *module_param, const char *fmt, ...)
106473 +{
106474 + va_list args;
106475 + int ret;
106476 +
106477 + va_start(args, fmt);
106478 + ret = ____request_module(wait, module_param, fmt, args);
106479 + va_end(args);
106480 +
106481 + return ret;
106482 +}
106483 +
106484 +int __request_module(bool wait, const char *fmt, ...)
106485 +{
106486 + va_list args;
106487 + int ret;
106488 +
106489 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
106490 + if (!uid_eq(current_uid(), GLOBAL_ROOT_UID)) {
106491 + char module_param[MODULE_NAME_LEN];
106492 +
106493 + memset(module_param, 0, sizeof(module_param));
106494 +
106495 + snprintf(module_param, sizeof(module_param) - 1, "grsec_modharden_normal%u_", GR_GLOBAL_UID(current_uid()));
106496 +
106497 + va_start(args, fmt);
106498 + ret = ____request_module(wait, module_param, fmt, args);
106499 + va_end(args);
106500 +
106501 + return ret;
106502 + }
106503 +#endif
106504 +
106505 + va_start(args, fmt);
106506 + ret = ____request_module(wait, NULL, fmt, args);
106507 + va_end(args);
106508 +
106509 + return ret;
106510 +}
106511 +
106512 EXPORT_SYMBOL(__request_module);
106513 #endif /* CONFIG_MODULES */
106514
106515 static void call_usermodehelper_freeinfo(struct subprocess_info *info)
106516 {
106517 +#ifdef CONFIG_GRKERNSEC
106518 + kfree(info->path);
106519 + info->path = info->origpath;
106520 +#endif
106521 if (info->cleanup)
106522 (*info->cleanup)(info);
106523 kfree(info);
106524 @@ -232,6 +289,21 @@ static int ____call_usermodehelper(void *data)
106525 */
106526 set_user_nice(current, 0);
106527
106528 +#ifdef CONFIG_GRKERNSEC
106529 + /* this is race-free as far as userland is concerned as we copied
106530 + out the path to be used prior to this point and are now operating
106531 + on that copy
106532 + */
106533 + if ((strncmp(sub_info->path, "/sbin/", 6) && strncmp(sub_info->path, "/usr/lib/", 9) &&
106534 + strncmp(sub_info->path, "/lib/", 5) && strncmp(sub_info->path, "/lib64/", 7) &&
106535 + strncmp(sub_info->path, "/usr/libexec/", 13) && strncmp(sub_info->path, "/usr/bin/", 9) &&
106536 + strcmp(sub_info->path, "/usr/share/apport/apport")) || strstr(sub_info->path, "..")) {
106537 + printk(KERN_ALERT "grsec: denied exec of usermode helper binary %.950s located outside of permitted system paths\n", sub_info->path);
106538 + retval = -EPERM;
106539 + goto out;
106540 + }
106541 +#endif
106542 +
106543 retval = -ENOMEM;
106544 new = prepare_kernel_cred(current);
106545 if (!new)
106546 @@ -254,8 +326,8 @@ static int ____call_usermodehelper(void *data)
106547 commit_creds(new);
106548
106549 retval = do_execve(getname_kernel(sub_info->path),
106550 - (const char __user *const __user *)sub_info->argv,
106551 - (const char __user *const __user *)sub_info->envp);
106552 + (const char __user *const __force_user *)sub_info->argv,
106553 + (const char __user *const __force_user *)sub_info->envp);
106554 out:
106555 sub_info->retval = retval;
106556 /* wait_for_helper() will call umh_complete if UHM_WAIT_PROC. */
106557 @@ -288,7 +360,7 @@ static int wait_for_helper(void *data)
106558 *
106559 * Thus the __user pointer cast is valid here.
106560 */
106561 - sys_wait4(pid, (int __user *)&ret, 0, NULL);
106562 + sys_wait4(pid, (int __force_user *)&ret, 0, NULL);
106563
106564 /*
106565 * If ret is 0, either ____call_usermodehelper failed and the
106566 @@ -510,7 +582,12 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
106567 goto out;
106568
106569 INIT_WORK(&sub_info->work, __call_usermodehelper);
106570 +#ifdef CONFIG_GRKERNSEC
106571 + sub_info->origpath = path;
106572 + sub_info->path = kstrdup(path, gfp_mask);
106573 +#else
106574 sub_info->path = path;
106575 +#endif
106576 sub_info->argv = argv;
106577 sub_info->envp = envp;
106578
106579 @@ -612,7 +689,7 @@ EXPORT_SYMBOL(call_usermodehelper);
106580 static int proc_cap_handler(struct ctl_table *table, int write,
106581 void __user *buffer, size_t *lenp, loff_t *ppos)
106582 {
106583 - struct ctl_table t;
106584 + ctl_table_no_const t;
106585 unsigned long cap_array[_KERNEL_CAPABILITY_U32S];
106586 kernel_cap_t new_cap;
106587 int err, i;
106588 diff --git a/kernel/kprobes.c b/kernel/kprobes.c
106589 index c90e417..e6c515d 100644
106590 --- a/kernel/kprobes.c
106591 +++ b/kernel/kprobes.c
106592 @@ -31,6 +31,9 @@
106593 * <jkenisto@us.ibm.com> and Prasanna S Panchamukhi
106594 * <prasanna@in.ibm.com> added function-return probes.
106595 */
106596 +#ifdef CONFIG_GRKERNSEC_HIDESYM
106597 +#define __INCLUDED_BY_HIDESYM 1
106598 +#endif
106599 #include <linux/kprobes.h>
106600 #include <linux/hash.h>
106601 #include <linux/init.h>
106602 @@ -122,12 +125,12 @@ enum kprobe_slot_state {
106603
106604 static void *alloc_insn_page(void)
106605 {
106606 - return module_alloc(PAGE_SIZE);
106607 + return module_alloc_exec(PAGE_SIZE);
106608 }
106609
106610 static void free_insn_page(void *page)
106611 {
106612 - module_memfree(page);
106613 + module_memfree_exec(page);
106614 }
106615
106616 struct kprobe_insn_cache kprobe_insn_slots = {
106617 @@ -2198,11 +2201,11 @@ static void report_probe(struct seq_file *pi, struct kprobe *p,
106618 kprobe_type = "k";
106619
106620 if (sym)
106621 - seq_printf(pi, "%p %s %s+0x%x %s ",
106622 + seq_printf(pi, "%pK %s %s+0x%x %s ",
106623 p->addr, kprobe_type, sym, offset,
106624 (modname ? modname : " "));
106625 else
106626 - seq_printf(pi, "%p %s %p ",
106627 + seq_printf(pi, "%pK %s %pK ",
106628 p->addr, kprobe_type, p->addr);
106629
106630 if (!pp)
106631 diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
106632 index 6683cce..daf8999 100644
106633 --- a/kernel/ksysfs.c
106634 +++ b/kernel/ksysfs.c
106635 @@ -50,6 +50,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
106636 {
106637 if (count+1 > UEVENT_HELPER_PATH_LEN)
106638 return -ENOENT;
106639 + if (!capable(CAP_SYS_ADMIN))
106640 + return -EPERM;
106641 memcpy(uevent_helper, buf, count);
106642 uevent_helper[count] = '\0';
106643 if (count && uevent_helper[count-1] == '\n')
106644 @@ -176,7 +178,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
106645 return count;
106646 }
106647
106648 -static struct bin_attribute notes_attr = {
106649 +static bin_attribute_no_const notes_attr __read_only = {
106650 .attr = {
106651 .name = "notes",
106652 .mode = S_IRUGO,
106653 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
106654 index 8acfbf7..0c5a34a 100644
106655 --- a/kernel/locking/lockdep.c
106656 +++ b/kernel/locking/lockdep.c
106657 @@ -613,6 +613,10 @@ static int static_obj(void *obj)
106658 end = (unsigned long) &_end,
106659 addr = (unsigned long) obj;
106660
106661 +#ifdef CONFIG_PAX_KERNEXEC
106662 + start = ktla_ktva(start);
106663 +#endif
106664 +
106665 /*
106666 * static variable?
106667 */
106668 @@ -757,6 +761,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
106669 if (!static_obj(lock->key)) {
106670 debug_locks_off();
106671 printk("INFO: trying to register non-static key.\n");
106672 + printk("lock:%pS key:%pS.\n", lock, lock->key);
106673 printk("the code is fine but needs lockdep annotation.\n");
106674 printk("turning off the locking correctness validator.\n");
106675 dump_stack();
106676 @@ -3102,7 +3107,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
106677 if (!class)
106678 return 0;
106679 }
106680 - atomic_inc((atomic_t *)&class->ops);
106681 + atomic_long_inc_unchecked((atomic_long_unchecked_t *)&class->ops);
106682 if (very_verbose(class)) {
106683 printk("\nacquire class [%p] %s", class->key, class->name);
106684 if (class->name_version > 1)
106685 diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c
106686 index d83d798..ea3120d 100644
106687 --- a/kernel/locking/lockdep_proc.c
106688 +++ b/kernel/locking/lockdep_proc.c
106689 @@ -65,7 +65,7 @@ static int l_show(struct seq_file *m, void *v)
106690 return 0;
106691 }
106692
106693 - seq_printf(m, "%p", class->key);
106694 + seq_printf(m, "%pK", class->key);
106695 #ifdef CONFIG_DEBUG_LOCKDEP
106696 seq_printf(m, " OPS:%8ld", class->ops);
106697 #endif
106698 @@ -83,7 +83,7 @@ static int l_show(struct seq_file *m, void *v)
106699
106700 list_for_each_entry(entry, &class->locks_after, entry) {
106701 if (entry->distance == 1) {
106702 - seq_printf(m, " -> [%p] ", entry->class->key);
106703 + seq_printf(m, " -> [%pK] ", entry->class->key);
106704 print_name(m, entry->class);
106705 seq_puts(m, "\n");
106706 }
106707 @@ -152,7 +152,7 @@ static int lc_show(struct seq_file *m, void *v)
106708 if (!class->key)
106709 continue;
106710
106711 - seq_printf(m, "[%p] ", class->key);
106712 + seq_printf(m, "[%pK] ", class->key);
106713 print_name(m, class);
106714 seq_puts(m, "\n");
106715 }
106716 @@ -508,7 +508,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
106717 if (!i)
106718 seq_line(m, '-', 40-namelen, namelen);
106719
106720 - snprintf(ip, sizeof(ip), "[<%p>]",
106721 + snprintf(ip, sizeof(ip), "[<%pK>]",
106722 (void *)class->contention_point[i]);
106723 seq_printf(m, "%40s %14lu %29s %pS\n",
106724 name, stats->contention_point[i],
106725 @@ -523,7 +523,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
106726 if (!i)
106727 seq_line(m, '-', 40-namelen, namelen);
106728
106729 - snprintf(ip, sizeof(ip), "[<%p>]",
106730 + snprintf(ip, sizeof(ip), "[<%pK>]",
106731 (void *)class->contending_point[i]);
106732 seq_printf(m, "%40s %14lu %29s %pS\n",
106733 name, stats->contending_point[i],
106734 diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c
106735 index 3ef3736..9c951fa 100644
106736 --- a/kernel/locking/mutex-debug.c
106737 +++ b/kernel/locking/mutex-debug.c
106738 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter)
106739 }
106740
106741 void debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter,
106742 - struct thread_info *ti)
106743 + struct task_struct *task)
106744 {
106745 SMP_DEBUG_LOCKS_WARN_ON(!spin_is_locked(&lock->wait_lock));
106746
106747 /* Mark the current thread as blocked on the lock: */
106748 - ti->task->blocked_on = waiter;
106749 + task->blocked_on = waiter;
106750 }
106751
106752 void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
106753 - struct thread_info *ti)
106754 + struct task_struct *task)
106755 {
106756 DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list));
106757 - DEBUG_LOCKS_WARN_ON(waiter->task != ti->task);
106758 - DEBUG_LOCKS_WARN_ON(ti->task->blocked_on != waiter);
106759 - ti->task->blocked_on = NULL;
106760 + DEBUG_LOCKS_WARN_ON(waiter->task != task);
106761 + DEBUG_LOCKS_WARN_ON(task->blocked_on != waiter);
106762 + task->blocked_on = NULL;
106763
106764 list_del_init(&waiter->list);
106765 waiter->task = NULL;
106766 diff --git a/kernel/locking/mutex-debug.h b/kernel/locking/mutex-debug.h
106767 index 0799fd3..d06ae3b 100644
106768 --- a/kernel/locking/mutex-debug.h
106769 +++ b/kernel/locking/mutex-debug.h
106770 @@ -20,9 +20,9 @@ extern void debug_mutex_wake_waiter(struct mutex *lock,
106771 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
106772 extern void debug_mutex_add_waiter(struct mutex *lock,
106773 struct mutex_waiter *waiter,
106774 - struct thread_info *ti);
106775 + struct task_struct *task);
106776 extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
106777 - struct thread_info *ti);
106778 + struct task_struct *task);
106779 extern void debug_mutex_unlock(struct mutex *lock);
106780 extern void debug_mutex_init(struct mutex *lock, const char *name,
106781 struct lock_class_key *key);
106782 diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
106783 index 4cccea6..4382db9 100644
106784 --- a/kernel/locking/mutex.c
106785 +++ b/kernel/locking/mutex.c
106786 @@ -533,7 +533,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
106787 goto skip_wait;
106788
106789 debug_mutex_lock_common(lock, &waiter);
106790 - debug_mutex_add_waiter(lock, &waiter, task_thread_info(task));
106791 + debug_mutex_add_waiter(lock, &waiter, task);
106792
106793 /* add waiting tasks to the end of the waitqueue (FIFO): */
106794 list_add_tail(&waiter.list, &lock->wait_list);
106795 @@ -580,7 +580,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
106796 }
106797 __set_task_state(task, TASK_RUNNING);
106798
106799 - mutex_remove_waiter(lock, &waiter, current_thread_info());
106800 + mutex_remove_waiter(lock, &waiter, task);
106801 /* set it to 0 if there are no waiters left: */
106802 if (likely(list_empty(&lock->wait_list)))
106803 atomic_set(&lock->count, 0);
106804 @@ -601,7 +601,7 @@ skip_wait:
106805 return 0;
106806
106807 err:
106808 - mutex_remove_waiter(lock, &waiter, task_thread_info(task));
106809 + mutex_remove_waiter(lock, &waiter, task);
106810 spin_unlock_mutex(&lock->wait_lock, flags);
106811 debug_mutex_free_waiter(&waiter);
106812 mutex_release(&lock->dep_map, 1, ip);
106813 diff --git a/kernel/locking/rtmutex-tester.c b/kernel/locking/rtmutex-tester.c
106814 index 1d96dd0..994ff19 100644
106815 --- a/kernel/locking/rtmutex-tester.c
106816 +++ b/kernel/locking/rtmutex-tester.c
106817 @@ -22,7 +22,7 @@
106818 #define MAX_RT_TEST_MUTEXES 8
106819
106820 static spinlock_t rttest_lock;
106821 -static atomic_t rttest_event;
106822 +static atomic_unchecked_t rttest_event;
106823
106824 struct test_thread_data {
106825 int opcode;
106826 @@ -63,7 +63,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
106827
106828 case RTTEST_LOCKCONT:
106829 td->mutexes[td->opdata] = 1;
106830 - td->event = atomic_add_return(1, &rttest_event);
106831 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106832 return 0;
106833
106834 case RTTEST_RESET:
106835 @@ -76,7 +76,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
106836 return 0;
106837
106838 case RTTEST_RESETEVENT:
106839 - atomic_set(&rttest_event, 0);
106840 + atomic_set_unchecked(&rttest_event, 0);
106841 return 0;
106842
106843 default:
106844 @@ -93,9 +93,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
106845 return ret;
106846
106847 td->mutexes[id] = 1;
106848 - td->event = atomic_add_return(1, &rttest_event);
106849 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106850 rt_mutex_lock(&mutexes[id]);
106851 - td->event = atomic_add_return(1, &rttest_event);
106852 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106853 td->mutexes[id] = 4;
106854 return 0;
106855
106856 @@ -106,9 +106,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
106857 return ret;
106858
106859 td->mutexes[id] = 1;
106860 - td->event = atomic_add_return(1, &rttest_event);
106861 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106862 ret = rt_mutex_lock_interruptible(&mutexes[id], 0);
106863 - td->event = atomic_add_return(1, &rttest_event);
106864 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106865 td->mutexes[id] = ret ? 0 : 4;
106866 return ret ? -EINTR : 0;
106867
106868 @@ -117,9 +117,9 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
106869 if (id < 0 || id >= MAX_RT_TEST_MUTEXES || td->mutexes[id] != 4)
106870 return ret;
106871
106872 - td->event = atomic_add_return(1, &rttest_event);
106873 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106874 rt_mutex_unlock(&mutexes[id]);
106875 - td->event = atomic_add_return(1, &rttest_event);
106876 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106877 td->mutexes[id] = 0;
106878 return 0;
106879
106880 @@ -166,7 +166,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex)
106881 break;
106882
106883 td->mutexes[dat] = 2;
106884 - td->event = atomic_add_return(1, &rttest_event);
106885 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106886 break;
106887
106888 default:
106889 @@ -186,7 +186,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex)
106890 return;
106891
106892 td->mutexes[dat] = 3;
106893 - td->event = atomic_add_return(1, &rttest_event);
106894 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106895 break;
106896
106897 case RTTEST_LOCKNOWAIT:
106898 @@ -198,7 +198,7 @@ void schedule_rt_mutex_test(struct rt_mutex *mutex)
106899 return;
106900
106901 td->mutexes[dat] = 1;
106902 - td->event = atomic_add_return(1, &rttest_event);
106903 + td->event = atomic_add_return_unchecked(1, &rttest_event);
106904 return;
106905
106906 default:
106907 diff --git a/kernel/module.c b/kernel/module.c
106908 index b86b7bf..f5eaa56 100644
106909 --- a/kernel/module.c
106910 +++ b/kernel/module.c
106911 @@ -59,6 +59,7 @@
106912 #include <linux/jump_label.h>
106913 #include <linux/pfn.h>
106914 #include <linux/bsearch.h>
106915 +#include <linux/grsecurity.h>
106916 #include <uapi/linux/module.h>
106917 #include "module-internal.h"
106918
106919 @@ -108,7 +109,7 @@ static LIST_HEAD(modules);
106920 * Use a latched RB-tree for __module_address(); this allows us to use
106921 * RCU-sched lookups of the address from any context.
106922 *
106923 - * Because modules have two address ranges: init and core, we need two
106924 + * Because modules have four address ranges: init_{rw,rx} and core_{rw,rx}, we need four
106925 * latch_tree_nodes entries. Therefore we need the back-pointer from
106926 * mod_tree_node.
106927 *
106928 @@ -125,10 +126,14 @@ static __always_inline unsigned long __mod_tree_val(struct latch_tree_node *n)
106929 struct mod_tree_node *mtn = container_of(n, struct mod_tree_node, node);
106930 struct module *mod = mtn->mod;
106931
106932 - if (unlikely(mtn == &mod->mtn_init))
106933 - return (unsigned long)mod->module_init;
106934 + if (unlikely(mtn == &mod->mtn_init_rw))
106935 + return (unsigned long)mod->module_init_rw;
106936 + if (unlikely(mtn == &mod->mtn_init_rx))
106937 + return (unsigned long)mod->module_init_rx;
106938
106939 - return (unsigned long)mod->module_core;
106940 + if (unlikely(mtn == &mod->mtn_core_rw))
106941 + return (unsigned long)mod->module_core_rw;
106942 + return (unsigned long)mod->module_core_rx;
106943 }
106944
106945 static __always_inline unsigned long __mod_tree_size(struct latch_tree_node *n)
106946 @@ -136,10 +141,14 @@ static __always_inline unsigned long __mod_tree_size(struct latch_tree_node *n)
106947 struct mod_tree_node *mtn = container_of(n, struct mod_tree_node, node);
106948 struct module *mod = mtn->mod;
106949
106950 - if (unlikely(mtn == &mod->mtn_init))
106951 - return (unsigned long)mod->init_size;
106952 + if (unlikely(mtn == &mod->mtn_init_rw))
106953 + return (unsigned long)mod->init_size_rw;
106954 + if (unlikely(mtn == &mod->mtn_init_rx))
106955 + return (unsigned long)mod->init_size_rx;
106956
106957 - return (unsigned long)mod->core_size;
106958 + if (unlikely(mtn == &mod->mtn_core_rw))
106959 + return (unsigned long)mod->core_size_rw;
106960 + return (unsigned long)mod->core_size_rx;
106961 }
106962
106963 static __always_inline bool
106964 @@ -172,14 +181,19 @@ static const struct latch_tree_ops mod_tree_ops = {
106965
106966 static struct mod_tree_root {
106967 struct latch_tree_root root;
106968 - unsigned long addr_min;
106969 - unsigned long addr_max;
106970 + unsigned long addr_min_rw;
106971 + unsigned long addr_min_rx;
106972 + unsigned long addr_max_rw;
106973 + unsigned long addr_max_rx;
106974 } mod_tree __cacheline_aligned = {
106975 - .addr_min = -1UL,
106976 + .addr_min_rw = -1UL,
106977 + .addr_min_rx = -1UL,
106978 };
106979
106980 -#define module_addr_min mod_tree.addr_min
106981 -#define module_addr_max mod_tree.addr_max
106982 +#define module_addr_min_rw mod_tree.addr_min_rw
106983 +#define module_addr_min_rx mod_tree.addr_min_rx
106984 +#define module_addr_max_rw mod_tree.addr_max_rw
106985 +#define module_addr_max_rx mod_tree.addr_max_rx
106986
106987 static noinline void __mod_tree_insert(struct mod_tree_node *node)
106988 {
106989 @@ -197,23 +211,31 @@ static void __mod_tree_remove(struct mod_tree_node *node)
106990 */
106991 static void mod_tree_insert(struct module *mod)
106992 {
106993 - mod->mtn_core.mod = mod;
106994 - mod->mtn_init.mod = mod;
106995 + mod->mtn_core_rw.mod = mod;
106996 + mod->mtn_core_rx.mod = mod;
106997 + mod->mtn_init_rw.mod = mod;
106998 + mod->mtn_init_rx.mod = mod;
106999
107000 - __mod_tree_insert(&mod->mtn_core);
107001 - if (mod->init_size)
107002 - __mod_tree_insert(&mod->mtn_init);
107003 + __mod_tree_insert(&mod->mtn_core_rw);
107004 + __mod_tree_insert(&mod->mtn_core_rx);
107005 + if (mod->init_size_rw)
107006 + __mod_tree_insert(&mod->mtn_init_rw);
107007 + if (mod->init_size_rx)
107008 + __mod_tree_insert(&mod->mtn_init_rx);
107009 }
107010
107011 static void mod_tree_remove_init(struct module *mod)
107012 {
107013 - if (mod->init_size)
107014 - __mod_tree_remove(&mod->mtn_init);
107015 + if (mod->init_size_rw)
107016 + __mod_tree_remove(&mod->mtn_init_rw);
107017 + if (mod->init_size_rx)
107018 + __mod_tree_remove(&mod->mtn_init_rx);
107019 }
107020
107021 static void mod_tree_remove(struct module *mod)
107022 {
107023 - __mod_tree_remove(&mod->mtn_core);
107024 + __mod_tree_remove(&mod->mtn_core_rw);
107025 + __mod_tree_remove(&mod->mtn_core_rx);
107026 mod_tree_remove_init(mod);
107027 }
107028
107029 @@ -230,7 +252,8 @@ static struct module *mod_find(unsigned long addr)
107030
107031 #else /* MODULES_TREE_LOOKUP */
107032
107033 -static unsigned long module_addr_min = -1UL, module_addr_max = 0;
107034 +static unsigned long module_addr_min_rw = -1UL, module_addr_max_rw = 0;
107035 +static unsigned long module_addr_min_rx = -1UL, module_addr_max_rx = 0;
107036
107037 static void mod_tree_insert(struct module *mod) { }
107038 static void mod_tree_remove_init(struct module *mod) { }
107039 @@ -254,22 +277,36 @@ static struct module *mod_find(unsigned long addr)
107040 * Bounds of module text, for speeding up __module_address.
107041 * Protected by module_mutex.
107042 */
107043 -static void __mod_update_bounds(void *base, unsigned int size)
107044 +static void __mod_update_bounds_rw(void *base, unsigned int size)
107045 {
107046 unsigned long min = (unsigned long)base;
107047 unsigned long max = min + size;
107048
107049 - if (min < module_addr_min)
107050 - module_addr_min = min;
107051 - if (max > module_addr_max)
107052 - module_addr_max = max;
107053 + if (min < module_addr_min_rw)
107054 + module_addr_min_rw = min;
107055 + if (max > module_addr_max_rw)
107056 + module_addr_max_rw = max;
107057 +}
107058 +
107059 +static void __mod_update_bounds_rx(void *base, unsigned int size)
107060 +{
107061 + unsigned long min = (unsigned long)base;
107062 + unsigned long max = min + size;
107063 +
107064 + if (min < module_addr_min_rx)
107065 + module_addr_min_rx = min;
107066 + if (max > module_addr_max_rx)
107067 + module_addr_max_rx = max;
107068 }
107069
107070 static void mod_update_bounds(struct module *mod)
107071 {
107072 - __mod_update_bounds(mod->module_core, mod->core_size);
107073 - if (mod->init_size)
107074 - __mod_update_bounds(mod->module_init, mod->init_size);
107075 + __mod_update_bounds_rw(mod->module_core_rw, mod->core_size_rw);
107076 + __mod_update_bounds_rx(mod->module_core_rx, mod->core_size_rx);
107077 + if (mod->init_size_rw)
107078 + __mod_update_bounds_rw(mod->module_init_rw, mod->init_size_rw);
107079 + if (mod->init_size_rx)
107080 + __mod_update_bounds_rx(mod->module_init_rx, mod->init_size_rx);
107081 }
107082
107083 #ifdef CONFIG_KGDB_KDB
107084 @@ -298,7 +335,7 @@ module_param(sig_enforce, bool_enable_only, 0644);
107085 #endif /* !CONFIG_MODULE_SIG_FORCE */
107086
107087 /* Block module loading/unloading? */
107088 -int modules_disabled = 0;
107089 +int modules_disabled __read_only = 0;
107090 core_param(nomodule, modules_disabled, bint, 0);
107091
107092 /* Waiting for a module to finish initializing? */
107093 @@ -473,7 +510,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
107094 return true;
107095
107096 list_for_each_entry_rcu(mod, &modules, list) {
107097 - struct symsearch arr[] = {
107098 + struct symsearch modarr[] = {
107099 { mod->syms, mod->syms + mod->num_syms, mod->crcs,
107100 NOT_GPL_ONLY, false },
107101 { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms,
107102 @@ -498,7 +535,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
107103 if (mod->state == MODULE_STATE_UNFORMED)
107104 continue;
107105
107106 - if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data))
107107 + if (each_symbol_in_section(modarr, ARRAY_SIZE(modarr), mod, fn, data))
107108 return true;
107109 }
107110 return false;
107111 @@ -644,7 +681,7 @@ static int percpu_modalloc(struct module *mod, struct load_info *info)
107112 if (!pcpusec->sh_size)
107113 return 0;
107114
107115 - if (align > PAGE_SIZE) {
107116 + if (align-1 >= PAGE_SIZE) {
107117 pr_warn("%s: per-cpu alignment %li > %li\n",
107118 mod->name, align, PAGE_SIZE);
107119 align = PAGE_SIZE;
107120 @@ -1210,7 +1247,7 @@ struct module_attribute module_uevent =
107121 static ssize_t show_coresize(struct module_attribute *mattr,
107122 struct module_kobject *mk, char *buffer)
107123 {
107124 - return sprintf(buffer, "%u\n", mk->mod->core_size);
107125 + return sprintf(buffer, "%u\n", mk->mod->core_size_rx + mk->mod->core_size_rw);
107126 }
107127
107128 static struct module_attribute modinfo_coresize =
107129 @@ -1219,7 +1256,7 @@ static struct module_attribute modinfo_coresize =
107130 static ssize_t show_initsize(struct module_attribute *mattr,
107131 struct module_kobject *mk, char *buffer)
107132 {
107133 - return sprintf(buffer, "%u\n", mk->mod->init_size);
107134 + return sprintf(buffer, "%u\n", mk->mod->init_size_rx + mk->mod->init_size_rw);
107135 }
107136
107137 static struct module_attribute modinfo_initsize =
107138 @@ -1311,12 +1348,29 @@ static int check_version(Elf_Shdr *sechdrs,
107139 goto bad_version;
107140 }
107141
107142 +#ifdef CONFIG_GRKERNSEC_RANDSTRUCT
107143 + /*
107144 + * avoid potentially printing jibberish on attempted load
107145 + * of a module randomized with a different seed
107146 + */
107147 + pr_warn("no symbol version for %s\n", symname);
107148 +#else
107149 pr_warn("%s: no symbol version for %s\n", mod->name, symname);
107150 +#endif
107151 return 0;
107152
107153 bad_version:
107154 +#ifdef CONFIG_GRKERNSEC_RANDSTRUCT
107155 + /*
107156 + * avoid potentially printing jibberish on attempted load
107157 + * of a module randomized with a different seed
107158 + */
107159 + pr_warn("attempted module disagrees about version of symbol %s\n",
107160 + symname);
107161 +#else
107162 pr_warn("%s: disagrees about version of symbol %s\n",
107163 mod->name, symname);
107164 +#endif
107165 return 0;
107166 }
107167
107168 @@ -1444,7 +1498,7 @@ resolve_symbol_wait(struct module *mod,
107169 */
107170 #ifdef CONFIG_SYSFS
107171
107172 -#ifdef CONFIG_KALLSYMS
107173 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
107174 static inline bool sect_empty(const Elf_Shdr *sect)
107175 {
107176 return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
107177 @@ -1582,7 +1636,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info)
107178 {
107179 unsigned int notes, loaded, i;
107180 struct module_notes_attrs *notes_attrs;
107181 - struct bin_attribute *nattr;
107182 + bin_attribute_no_const *nattr;
107183
107184 /* failed to create section attributes, so can't create notes */
107185 if (!mod->sect_attrs)
107186 @@ -1694,7 +1748,7 @@ static void del_usage_links(struct module *mod)
107187 static int module_add_modinfo_attrs(struct module *mod)
107188 {
107189 struct module_attribute *attr;
107190 - struct module_attribute *temp_attr;
107191 + module_attribute_no_const *temp_attr;
107192 int error = 0;
107193 int i;
107194
107195 @@ -1911,21 +1965,21 @@ static void set_section_ro_nx(void *base,
107196
107197 static void unset_module_core_ro_nx(struct module *mod)
107198 {
107199 - set_page_attributes(mod->module_core + mod->core_text_size,
107200 - mod->module_core + mod->core_size,
107201 + set_page_attributes(mod->module_core_rw,
107202 + mod->module_core_rw + mod->core_size_rw,
107203 set_memory_x);
107204 - set_page_attributes(mod->module_core,
107205 - mod->module_core + mod->core_ro_size,
107206 + set_page_attributes(mod->module_core_rx,
107207 + mod->module_core_rx + mod->core_size_rx,
107208 set_memory_rw);
107209 }
107210
107211 static void unset_module_init_ro_nx(struct module *mod)
107212 {
107213 - set_page_attributes(mod->module_init + mod->init_text_size,
107214 - mod->module_init + mod->init_size,
107215 + set_page_attributes(mod->module_init_rw,
107216 + mod->module_init_rw + mod->init_size_rw,
107217 set_memory_x);
107218 - set_page_attributes(mod->module_init,
107219 - mod->module_init + mod->init_ro_size,
107220 + set_page_attributes(mod->module_init_rx,
107221 + mod->module_init_rx + mod->init_size_rx,
107222 set_memory_rw);
107223 }
107224
107225 @@ -1938,14 +1992,14 @@ void set_all_modules_text_rw(void)
107226 list_for_each_entry_rcu(mod, &modules, list) {
107227 if (mod->state == MODULE_STATE_UNFORMED)
107228 continue;
107229 - if ((mod->module_core) && (mod->core_text_size)) {
107230 - set_page_attributes(mod->module_core,
107231 - mod->module_core + mod->core_text_size,
107232 + if ((mod->module_core_rx) && (mod->core_size_rx)) {
107233 + set_page_attributes(mod->module_core_rx,
107234 + mod->module_core_rx + mod->core_size_rx,
107235 set_memory_rw);
107236 }
107237 - if ((mod->module_init) && (mod->init_text_size)) {
107238 - set_page_attributes(mod->module_init,
107239 - mod->module_init + mod->init_text_size,
107240 + if ((mod->module_init_rx) && (mod->init_size_rx)) {
107241 + set_page_attributes(mod->module_init_rx,
107242 + mod->module_init_rx + mod->init_size_rx,
107243 set_memory_rw);
107244 }
107245 }
107246 @@ -1961,14 +2015,14 @@ void set_all_modules_text_ro(void)
107247 list_for_each_entry_rcu(mod, &modules, list) {
107248 if (mod->state == MODULE_STATE_UNFORMED)
107249 continue;
107250 - if ((mod->module_core) && (mod->core_text_size)) {
107251 - set_page_attributes(mod->module_core,
107252 - mod->module_core + mod->core_text_size,
107253 + if ((mod->module_core_rx) && (mod->core_size_rx)) {
107254 + set_page_attributes(mod->module_core_rx,
107255 + mod->module_core_rx + mod->core_size_rx,
107256 set_memory_ro);
107257 }
107258 - if ((mod->module_init) && (mod->init_text_size)) {
107259 - set_page_attributes(mod->module_init,
107260 - mod->module_init + mod->init_text_size,
107261 + if ((mod->module_init_rx) && (mod->init_size_rx)) {
107262 + set_page_attributes(mod->module_init_rx,
107263 + mod->module_init_rx + mod->init_size_rx,
107264 set_memory_ro);
107265 }
107266 }
107267 @@ -1977,7 +2031,15 @@ void set_all_modules_text_ro(void)
107268 #else
107269 static inline void set_section_ro_nx(void *base, unsigned long text_size, unsigned long ro_size, unsigned long total_size) { }
107270 static void unset_module_core_ro_nx(struct module *mod) { }
107271 -static void unset_module_init_ro_nx(struct module *mod) { }
107272 +static void unset_module_init_ro_nx(struct module *mod)
107273 +{
107274 +
107275 +#ifdef CONFIG_PAX_KERNEXEC
107276 + set_memory_nx((unsigned long)mod->module_init_rx, PFN_UP(mod->init_size_rx));
107277 + set_memory_rw((unsigned long)mod->module_init_rx, PFN_UP(mod->init_size_rx));
107278 +#endif
107279 +
107280 +}
107281 #endif
107282
107283 void __weak module_memfree(void *module_region)
107284 @@ -2032,16 +2094,19 @@ static void free_module(struct module *mod)
107285 /* This may be NULL, but that's OK */
107286 unset_module_init_ro_nx(mod);
107287 module_arch_freeing_init(mod);
107288 - module_memfree(mod->module_init);
107289 + module_memfree(mod->module_init_rw);
107290 + module_memfree_exec(mod->module_init_rx);
107291 kfree(mod->args);
107292 percpu_modfree(mod);
107293
107294 /* Free lock-classes; relies on the preceding sync_rcu(). */
107295 - lockdep_free_key_range(mod->module_core, mod->core_size);
107296 + lockdep_free_key_range(mod->module_core_rx, mod->core_size_rx);
107297 + lockdep_free_key_range(mod->module_core_rw, mod->core_size_rw);
107298
107299 /* Finally, free the core (containing the module structure) */
107300 unset_module_core_ro_nx(mod);
107301 - module_memfree(mod->module_core);
107302 + module_memfree_exec(mod->module_core_rx);
107303 + module_memfree(mod->module_core_rw);
107304
107305 #ifdef CONFIG_MPU
107306 update_protections(current->mm);
107307 @@ -2110,9 +2175,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
107308 int ret = 0;
107309 const struct kernel_symbol *ksym;
107310
107311 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
107312 + int is_fs_load = 0;
107313 + int register_filesystem_found = 0;
107314 + char *p;
107315 +
107316 + p = strstr(mod->args, "grsec_modharden_fs");
107317 + if (p) {
107318 + char *endptr = p + sizeof("grsec_modharden_fs") - 1;
107319 + /* copy \0 as well */
107320 + memmove(p, endptr, strlen(mod->args) - (unsigned int)(endptr - mod->args) + 1);
107321 + is_fs_load = 1;
107322 + }
107323 +#endif
107324 +
107325 for (i = 1; i < symsec->sh_size / sizeof(Elf_Sym); i++) {
107326 const char *name = info->strtab + sym[i].st_name;
107327
107328 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
107329 + /* it's a real shame this will never get ripped and copied
107330 + upstream! ;(
107331 + */
107332 + if (is_fs_load && !strcmp(name, "register_filesystem"))
107333 + register_filesystem_found = 1;
107334 +#endif
107335 +
107336 switch (sym[i].st_shndx) {
107337 case SHN_COMMON:
107338 /* Ignore common symbols */
107339 @@ -2137,7 +2224,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
107340 ksym = resolve_symbol_wait(mod, info, name);
107341 /* Ok if resolved. */
107342 if (ksym && !IS_ERR(ksym)) {
107343 + pax_open_kernel();
107344 sym[i].st_value = ksym->value;
107345 + pax_close_kernel();
107346 break;
107347 }
107348
107349 @@ -2156,11 +2245,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
107350 secbase = (unsigned long)mod_percpu(mod);
107351 else
107352 secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
107353 + pax_open_kernel();
107354 sym[i].st_value += secbase;
107355 + pax_close_kernel();
107356 break;
107357 }
107358 }
107359
107360 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
107361 + if (is_fs_load && !register_filesystem_found) {
107362 + printk(KERN_ALERT "grsec: Denied attempt to load non-fs module %.64s through mount\n", mod->name);
107363 + ret = -EPERM;
107364 + }
107365 +#endif
107366 +
107367 return ret;
107368 }
107369
107370 @@ -2244,22 +2342,12 @@ static void layout_sections(struct module *mod, struct load_info *info)
107371 || s->sh_entsize != ~0UL
107372 || strstarts(sname, ".init"))
107373 continue;
107374 - s->sh_entsize = get_offset(mod, &mod->core_size, s, i);
107375 + if ((s->sh_flags & SHF_WRITE) || !(s->sh_flags & SHF_ALLOC))
107376 + s->sh_entsize = get_offset(mod, &mod->core_size_rw, s, i);
107377 + else
107378 + s->sh_entsize = get_offset(mod, &mod->core_size_rx, s, i);
107379 pr_debug("\t%s\n", sname);
107380 }
107381 - switch (m) {
107382 - case 0: /* executable */
107383 - mod->core_size = debug_align(mod->core_size);
107384 - mod->core_text_size = mod->core_size;
107385 - break;
107386 - case 1: /* RO: text and ro-data */
107387 - mod->core_size = debug_align(mod->core_size);
107388 - mod->core_ro_size = mod->core_size;
107389 - break;
107390 - case 3: /* whole core */
107391 - mod->core_size = debug_align(mod->core_size);
107392 - break;
107393 - }
107394 }
107395
107396 pr_debug("Init section allocation order:\n");
107397 @@ -2273,23 +2361,13 @@ static void layout_sections(struct module *mod, struct load_info *info)
107398 || s->sh_entsize != ~0UL
107399 || !strstarts(sname, ".init"))
107400 continue;
107401 - s->sh_entsize = (get_offset(mod, &mod->init_size, s, i)
107402 - | INIT_OFFSET_MASK);
107403 + if ((s->sh_flags & SHF_WRITE) || !(s->sh_flags & SHF_ALLOC))
107404 + s->sh_entsize = get_offset(mod, &mod->init_size_rw, s, i);
107405 + else
107406 + s->sh_entsize = get_offset(mod, &mod->init_size_rx, s, i);
107407 + s->sh_entsize |= INIT_OFFSET_MASK;
107408 pr_debug("\t%s\n", sname);
107409 }
107410 - switch (m) {
107411 - case 0: /* executable */
107412 - mod->init_size = debug_align(mod->init_size);
107413 - mod->init_text_size = mod->init_size;
107414 - break;
107415 - case 1: /* RO: text and ro-data */
107416 - mod->init_size = debug_align(mod->init_size);
107417 - mod->init_ro_size = mod->init_size;
107418 - break;
107419 - case 3: /* whole init */
107420 - mod->init_size = debug_align(mod->init_size);
107421 - break;
107422 - }
107423 }
107424 }
107425
107426 @@ -2462,7 +2540,7 @@ static void layout_symtab(struct module *mod, struct load_info *info)
107427
107428 /* Put symbol section at end of init part of module. */
107429 symsect->sh_flags |= SHF_ALLOC;
107430 - symsect->sh_entsize = get_offset(mod, &mod->init_size, symsect,
107431 + symsect->sh_entsize = get_offset(mod, &mod->init_size_rx, symsect,
107432 info->index.sym) | INIT_OFFSET_MASK;
107433 pr_debug("\t%s\n", info->secstrings + symsect->sh_name);
107434
107435 @@ -2479,16 +2557,16 @@ static void layout_symtab(struct module *mod, struct load_info *info)
107436 }
107437
107438 /* Append room for core symbols at end of core part. */
107439 - info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1);
107440 - info->stroffs = mod->core_size = info->symoffs + ndst * sizeof(Elf_Sym);
107441 - mod->core_size += strtab_size;
107442 - mod->core_size = debug_align(mod->core_size);
107443 + info->symoffs = ALIGN(mod->core_size_rx, symsect->sh_addralign ?: 1);
107444 + info->stroffs = mod->core_size_rx = info->symoffs + ndst * sizeof(Elf_Sym);
107445 + mod->core_size_rx += strtab_size;
107446 + mod->core_size_rx = debug_align(mod->core_size_rx);
107447
107448 /* Put string table section at end of init part of module. */
107449 strsect->sh_flags |= SHF_ALLOC;
107450 - strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect,
107451 + strsect->sh_entsize = get_offset(mod, &mod->init_size_rx, strsect,
107452 info->index.str) | INIT_OFFSET_MASK;
107453 - mod->init_size = debug_align(mod->init_size);
107454 + mod->init_size_rx = debug_align(mod->init_size_rx);
107455 pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
107456 }
107457
107458 @@ -2505,12 +2583,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
107459 /* Make sure we get permanent strtab: don't use info->strtab. */
107460 mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
107461
107462 + pax_open_kernel();
107463 +
107464 /* Set types up while we still have access to sections. */
107465 for (i = 0; i < mod->num_symtab; i++)
107466 mod->symtab[i].st_info = elf_type(&mod->symtab[i], info);
107467
107468 - mod->core_symtab = dst = mod->module_core + info->symoffs;
107469 - mod->core_strtab = s = mod->module_core + info->stroffs;
107470 + mod->core_symtab = dst = mod->module_core_rx + info->symoffs;
107471 + mod->core_strtab = s = mod->module_core_rx + info->stroffs;
107472 src = mod->symtab;
107473 for (ndst = i = 0; i < mod->num_symtab; i++) {
107474 if (i == 0 ||
107475 @@ -2522,6 +2602,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
107476 }
107477 }
107478 mod->core_num_syms = ndst;
107479 +
107480 + pax_close_kernel();
107481 }
107482 #else
107483 static inline void layout_symtab(struct module *mod, struct load_info *info)
107484 @@ -2821,7 +2903,15 @@ static struct module *setup_load_info(struct load_info *info, int flags)
107485 mod = (void *)info->sechdrs[info->index.mod].sh_addr;
107486
107487 if (info->index.sym == 0) {
107488 +#ifdef CONFIG_GRKERNSEC_RANDSTRUCT
107489 + /*
107490 + * avoid potentially printing jibberish on attempted load
107491 + * of a module randomized with a different seed
107492 + */
107493 + pr_warn("module has no symbols (stripped?)\n");
107494 +#else
107495 pr_warn("%s: module has no symbols (stripped?)\n", mod->name);
107496 +#endif
107497 return ERR_PTR(-ENOEXEC);
107498 }
107499
107500 @@ -2837,8 +2927,14 @@ static struct module *setup_load_info(struct load_info *info, int flags)
107501 static int check_modinfo(struct module *mod, struct load_info *info, int flags)
107502 {
107503 const char *modmagic = get_modinfo(info, "vermagic");
107504 + const char *license = get_modinfo(info, "license");
107505 int err;
107506
107507 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR
107508 + if (!license || !license_is_gpl_compatible(license))
107509 + return -ENOEXEC;
107510 +#endif
107511 +
107512 if (flags & MODULE_INIT_IGNORE_VERMAGIC)
107513 modmagic = NULL;
107514
107515 @@ -2863,7 +2959,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
107516 }
107517
107518 /* Set up license info based on the info section */
107519 - set_license(mod, get_modinfo(info, "license"));
107520 + set_license(mod, license);
107521
107522 return 0;
107523 }
107524 @@ -2960,7 +3056,7 @@ static int move_module(struct module *mod, struct load_info *info)
107525 void *ptr;
107526
107527 /* Do the allocs. */
107528 - ptr = module_alloc(mod->core_size);
107529 + ptr = module_alloc(mod->core_size_rw);
107530 /*
107531 * The pointer to this block is stored in the module structure
107532 * which is inside the block. Just mark it as not being a
107533 @@ -2970,11 +3066,11 @@ static int move_module(struct module *mod, struct load_info *info)
107534 if (!ptr)
107535 return -ENOMEM;
107536
107537 - memset(ptr, 0, mod->core_size);
107538 - mod->module_core = ptr;
107539 + memset(ptr, 0, mod->core_size_rw);
107540 + mod->module_core_rw = ptr;
107541
107542 - if (mod->init_size) {
107543 - ptr = module_alloc(mod->init_size);
107544 + if (mod->init_size_rw) {
107545 + ptr = module_alloc(mod->init_size_rw);
107546 /*
107547 * The pointer to this block is stored in the module structure
107548 * which is inside the block. This block doesn't need to be
107549 @@ -2983,13 +3079,45 @@ static int move_module(struct module *mod, struct load_info *info)
107550 */
107551 kmemleak_ignore(ptr);
107552 if (!ptr) {
107553 - module_memfree(mod->module_core);
107554 + module_memfree(mod->module_core_rw);
107555 return -ENOMEM;
107556 }
107557 - memset(ptr, 0, mod->init_size);
107558 - mod->module_init = ptr;
107559 + memset(ptr, 0, mod->init_size_rw);
107560 + mod->module_init_rw = ptr;
107561 } else
107562 - mod->module_init = NULL;
107563 + mod->module_init_rw = NULL;
107564 +
107565 + ptr = module_alloc_exec(mod->core_size_rx);
107566 + kmemleak_not_leak(ptr);
107567 + if (!ptr) {
107568 + if (mod->module_init_rw)
107569 + module_memfree(mod->module_init_rw);
107570 + module_memfree(mod->module_core_rw);
107571 + return -ENOMEM;
107572 + }
107573 +
107574 + pax_open_kernel();
107575 + memset(ptr, 0, mod->core_size_rx);
107576 + pax_close_kernel();
107577 + mod->module_core_rx = ptr;
107578 +
107579 + if (mod->init_size_rx) {
107580 + ptr = module_alloc_exec(mod->init_size_rx);
107581 + kmemleak_ignore(ptr);
107582 + if (!ptr && mod->init_size_rx) {
107583 + module_memfree_exec(mod->module_core_rx);
107584 + if (mod->module_init_rw)
107585 + module_memfree(mod->module_init_rw);
107586 + module_memfree(mod->module_core_rw);
107587 + return -ENOMEM;
107588 + }
107589 +
107590 + pax_open_kernel();
107591 + memset(ptr, 0, mod->init_size_rx);
107592 + pax_close_kernel();
107593 + mod->module_init_rx = ptr;
107594 + } else
107595 + mod->module_init_rx = NULL;
107596
107597 /* Transfer each section which specifies SHF_ALLOC */
107598 pr_debug("final section addresses:\n");
107599 @@ -3000,16 +3128,45 @@ static int move_module(struct module *mod, struct load_info *info)
107600 if (!(shdr->sh_flags & SHF_ALLOC))
107601 continue;
107602
107603 - if (shdr->sh_entsize & INIT_OFFSET_MASK)
107604 - dest = mod->module_init
107605 - + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
107606 - else
107607 - dest = mod->module_core + shdr->sh_entsize;
107608 + if (shdr->sh_entsize & INIT_OFFSET_MASK) {
107609 + if ((shdr->sh_flags & SHF_WRITE) || !(shdr->sh_flags & SHF_ALLOC))
107610 + dest = mod->module_init_rw
107611 + + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
107612 + else
107613 + dest = mod->module_init_rx
107614 + + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
107615 + } else {
107616 + if ((shdr->sh_flags & SHF_WRITE) || !(shdr->sh_flags & SHF_ALLOC))
107617 + dest = mod->module_core_rw + shdr->sh_entsize;
107618 + else
107619 + dest = mod->module_core_rx + shdr->sh_entsize;
107620 + }
107621 +
107622 + if (shdr->sh_type != SHT_NOBITS) {
107623 +
107624 +#ifdef CONFIG_PAX_KERNEXEC
107625 +#ifdef CONFIG_X86_64
107626 + if ((shdr->sh_flags & SHF_WRITE) && (shdr->sh_flags & SHF_EXECINSTR))
107627 + set_memory_x((unsigned long)dest, (shdr->sh_size + PAGE_SIZE) >> PAGE_SHIFT);
107628 +#endif
107629 + if (!(shdr->sh_flags & SHF_WRITE) && (shdr->sh_flags & SHF_ALLOC)) {
107630 + pax_open_kernel();
107631 + memcpy(dest, (void *)shdr->sh_addr, shdr->sh_size);
107632 + pax_close_kernel();
107633 + } else
107634 +#endif
107635
107636 - if (shdr->sh_type != SHT_NOBITS)
107637 memcpy(dest, (void *)shdr->sh_addr, shdr->sh_size);
107638 + }
107639 /* Update sh_addr to point to copy in image. */
107640 - shdr->sh_addr = (unsigned long)dest;
107641 +
107642 +#ifdef CONFIG_PAX_KERNEXEC
107643 + if (shdr->sh_flags & SHF_EXECINSTR)
107644 + shdr->sh_addr = ktva_ktla((unsigned long)dest);
107645 + else
107646 +#endif
107647 +
107648 + shdr->sh_addr = (unsigned long)dest;
107649 pr_debug("\t0x%lx %s\n",
107650 (long)shdr->sh_addr, info->secstrings + shdr->sh_name);
107651 }
107652 @@ -3066,12 +3223,12 @@ static void flush_module_icache(const struct module *mod)
107653 * Do it before processing of module parameters, so the module
107654 * can provide parameter accessor functions of its own.
107655 */
107656 - if (mod->module_init)
107657 - flush_icache_range((unsigned long)mod->module_init,
107658 - (unsigned long)mod->module_init
107659 - + mod->init_size);
107660 - flush_icache_range((unsigned long)mod->module_core,
107661 - (unsigned long)mod->module_core + mod->core_size);
107662 + if (mod->module_init_rx)
107663 + flush_icache_range((unsigned long)mod->module_init_rx,
107664 + (unsigned long)mod->module_init_rx
107665 + + mod->init_size_rx);
107666 + flush_icache_range((unsigned long)mod->module_core_rx,
107667 + (unsigned long)mod->module_core_rx + mod->core_size_rx);
107668
107669 set_fs(old_fs);
107670 }
107671 @@ -3129,8 +3286,10 @@ static void module_deallocate(struct module *mod, struct load_info *info)
107672 {
107673 percpu_modfree(mod);
107674 module_arch_freeing_init(mod);
107675 - module_memfree(mod->module_init);
107676 - module_memfree(mod->module_core);
107677 + module_memfree_exec(mod->module_init_rx);
107678 + module_memfree_exec(mod->module_core_rx);
107679 + module_memfree(mod->module_init_rw);
107680 + module_memfree(mod->module_core_rw);
107681 }
107682
107683 int __weak module_finalize(const Elf_Ehdr *hdr,
107684 @@ -3143,7 +3302,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr,
107685 static int post_relocation(struct module *mod, const struct load_info *info)
107686 {
107687 /* Sort exception table now relocations are done. */
107688 + pax_open_kernel();
107689 sort_extable(mod->extable, mod->extable + mod->num_exentries);
107690 + pax_close_kernel();
107691
107692 /* Copy relocated percpu area over. */
107693 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr,
107694 @@ -3191,13 +3352,15 @@ static void do_mod_ctors(struct module *mod)
107695 /* For freeing module_init on success, in case kallsyms traversing */
107696 struct mod_initfree {
107697 struct rcu_head rcu;
107698 - void *module_init;
107699 + void *module_init_rw;
107700 + void *module_init_rx;
107701 };
107702
107703 static void do_free_init(struct rcu_head *head)
107704 {
107705 struct mod_initfree *m = container_of(head, struct mod_initfree, rcu);
107706 - module_memfree(m->module_init);
107707 + module_memfree(m->module_init_rw);
107708 + module_memfree_exec(m->module_init_rx);
107709 kfree(m);
107710 }
107711
107712 @@ -3217,7 +3380,8 @@ static noinline int do_init_module(struct module *mod)
107713 ret = -ENOMEM;
107714 goto fail;
107715 }
107716 - freeinit->module_init = mod->module_init;
107717 + freeinit->module_init_rw = mod->module_init_rw;
107718 + freeinit->module_init_rx = mod->module_init_rx;
107719
107720 /*
107721 * We want to find out whether @mod uses async during init. Clear
107722 @@ -3277,10 +3441,10 @@ static noinline int do_init_module(struct module *mod)
107723 mod_tree_remove_init(mod);
107724 unset_module_init_ro_nx(mod);
107725 module_arch_freeing_init(mod);
107726 - mod->module_init = NULL;
107727 - mod->init_size = 0;
107728 - mod->init_ro_size = 0;
107729 - mod->init_text_size = 0;
107730 + mod->module_init_rw = NULL;
107731 + mod->module_init_rx = NULL;
107732 + mod->init_size_rw = 0;
107733 + mod->init_size_rx = 0;
107734 /*
107735 * We want to free module_init, but be aware that kallsyms may be
107736 * walking this with preempt disabled. In all the failure paths, we
107737 @@ -3370,16 +3534,16 @@ static int complete_formation(struct module *mod, struct load_info *info)
107738 module_bug_finalize(info->hdr, info->sechdrs, mod);
107739
107740 /* Set RO and NX regions for core */
107741 - set_section_ro_nx(mod->module_core,
107742 - mod->core_text_size,
107743 - mod->core_ro_size,
107744 - mod->core_size);
107745 + set_section_ro_nx(mod->module_core_rx,
107746 + mod->core_size_rx,
107747 + mod->core_size_rx,
107748 + mod->core_size_rx);
107749
107750 /* Set RO and NX regions for init */
107751 - set_section_ro_nx(mod->module_init,
107752 - mod->init_text_size,
107753 - mod->init_ro_size,
107754 - mod->init_size);
107755 + set_section_ro_nx(mod->module_init_rx,
107756 + mod->init_size_rx,
107757 + mod->init_size_rx,
107758 + mod->init_size_rx);
107759
107760 /* Mark state as coming so strong_try_module_get() ignores us,
107761 * but kallsyms etc. can see us. */
107762 @@ -3474,9 +3638,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
107763 if (err)
107764 goto free_unload;
107765
107766 + /* Now copy in args */
107767 + mod->args = strndup_user(uargs, ~0UL >> 1);
107768 + if (IS_ERR(mod->args)) {
107769 + err = PTR_ERR(mod->args);
107770 + goto free_unload;
107771 + }
107772 +
107773 /* Set up MODINFO_ATTR fields */
107774 setup_modinfo(mod, info);
107775
107776 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
107777 + {
107778 + char *p, *p2;
107779 +
107780 + if (strstr(mod->args, "grsec_modharden_netdev")) {
107781 + printk(KERN_ALERT "grsec: denied auto-loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%.64s instead.", mod->name);
107782 + err = -EPERM;
107783 + goto free_modinfo;
107784 + } else if ((p = strstr(mod->args, "grsec_modharden_normal"))) {
107785 + p += sizeof("grsec_modharden_normal") - 1;
107786 + p2 = strstr(p, "_");
107787 + if (p2) {
107788 + *p2 = '\0';
107789 + printk(KERN_ALERT "grsec: denied kernel module auto-load of %.64s by uid %.9s\n", mod->name, p);
107790 + *p2 = '_';
107791 + }
107792 + err = -EPERM;
107793 + goto free_modinfo;
107794 + }
107795 + }
107796 +#endif
107797 +
107798 /* Fix up syms, so that st_value is a pointer to location. */
107799 err = simplify_symbols(mod, info);
107800 if (err < 0)
107801 @@ -3492,13 +3685,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
107802
107803 flush_module_icache(mod);
107804
107805 - /* Now copy in args */
107806 - mod->args = strndup_user(uargs, ~0UL >> 1);
107807 - if (IS_ERR(mod->args)) {
107808 - err = PTR_ERR(mod->args);
107809 - goto free_arch_cleanup;
107810 - }
107811 -
107812 dynamic_debug_setup(info->debug, info->num_debug);
107813
107814 /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */
107815 @@ -3550,11 +3736,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
107816 ddebug_cleanup:
107817 dynamic_debug_remove(info->debug);
107818 synchronize_sched();
107819 - kfree(mod->args);
107820 - free_arch_cleanup:
107821 module_arch_cleanup(mod);
107822 free_modinfo:
107823 free_modinfo(mod);
107824 + kfree(mod->args);
107825 free_unload:
107826 module_unload_free(mod);
107827 unlink_mod:
107828 @@ -3568,7 +3753,8 @@ static int load_module(struct load_info *info, const char __user *uargs,
107829 mutex_unlock(&module_mutex);
107830 free_module:
107831 /* Free lock-classes; relies on the preceding sync_rcu() */
107832 - lockdep_free_key_range(mod->module_core, mod->core_size);
107833 + lockdep_free_key_range(mod->module_core_rx, mod->core_size_rx);
107834 + lockdep_free_key_range(mod->module_core_rw, mod->core_size_rw);
107835
107836 module_deallocate(mod, info);
107837 free_copy:
107838 @@ -3645,10 +3831,16 @@ static const char *get_ksymbol(struct module *mod,
107839 unsigned long nextval;
107840
107841 /* At worse, next value is at end of module */
107842 - if (within_module_init(addr, mod))
107843 - nextval = (unsigned long)mod->module_init+mod->init_text_size;
107844 + if (within_module_init_rx(addr, mod))
107845 + nextval = (unsigned long)mod->module_init_rx+mod->init_size_rx;
107846 + else if (within_module_init_rw(addr, mod))
107847 + nextval = (unsigned long)mod->module_init_rw+mod->init_size_rw;
107848 + else if (within_module_core_rx(addr, mod))
107849 + nextval = (unsigned long)mod->module_core_rx+mod->core_size_rx;
107850 + else if (within_module_core_rw(addr, mod))
107851 + nextval = (unsigned long)mod->module_core_rw+mod->core_size_rw;
107852 else
107853 - nextval = (unsigned long)mod->module_core+mod->core_text_size;
107854 + return NULL;
107855
107856 /* Scan for closest preceding symbol, and next symbol. (ELF
107857 starts real symbols at 1). */
107858 @@ -3895,7 +4087,7 @@ static int m_show(struct seq_file *m, void *p)
107859 return 0;
107860
107861 seq_printf(m, "%s %u",
107862 - mod->name, mod->init_size + mod->core_size);
107863 + mod->name, mod->init_size_rx + mod->init_size_rw + mod->core_size_rx + mod->core_size_rw);
107864 print_unload_info(m, mod);
107865
107866 /* Informative for users. */
107867 @@ -3904,7 +4096,7 @@ static int m_show(struct seq_file *m, void *p)
107868 mod->state == MODULE_STATE_COMING ? "Loading" :
107869 "Live");
107870 /* Used by oprofile and other similar tools. */
107871 - seq_printf(m, " 0x%pK", mod->module_core);
107872 + seq_printf(m, " 0x%pK 0x%pK", mod->module_core_rx, mod->module_core_rw);
107873
107874 /* Taints info */
107875 if (mod->taints)
107876 @@ -3940,7 +4132,17 @@ static const struct file_operations proc_modules_operations = {
107877
107878 static int __init proc_modules_init(void)
107879 {
107880 +#ifndef CONFIG_GRKERNSEC_HIDESYM
107881 +#ifdef CONFIG_GRKERNSEC_PROC_USER
107882 + proc_create("modules", S_IRUSR, NULL, &proc_modules_operations);
107883 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
107884 + proc_create("modules", S_IRUSR | S_IRGRP, NULL, &proc_modules_operations);
107885 +#else
107886 proc_create("modules", 0, NULL, &proc_modules_operations);
107887 +#endif
107888 +#else
107889 + proc_create("modules", S_IRUSR, NULL, &proc_modules_operations);
107890 +#endif
107891 return 0;
107892 }
107893 module_init(proc_modules_init);
107894 @@ -4001,7 +4203,8 @@ struct module *__module_address(unsigned long addr)
107895 {
107896 struct module *mod;
107897
107898 - if (addr < module_addr_min || addr > module_addr_max)
107899 + if ((addr < module_addr_min_rx || addr > module_addr_max_rx) &&
107900 + (addr < module_addr_min_rw || addr > module_addr_max_rw))
107901 return NULL;
107902
107903 module_assert_mutex_or_preempt();
107904 @@ -4044,11 +4247,20 @@ bool is_module_text_address(unsigned long addr)
107905 */
107906 struct module *__module_text_address(unsigned long addr)
107907 {
107908 - struct module *mod = __module_address(addr);
107909 + struct module *mod;
107910 +
107911 +#ifdef CONFIG_X86_32
107912 + addr = ktla_ktva(addr);
107913 +#endif
107914 +
107915 + if (addr < module_addr_min_rx || addr > module_addr_max_rx)
107916 + return NULL;
107917 +
107918 + mod = __module_address(addr);
107919 +
107920 if (mod) {
107921 /* Make sure it's within the text section. */
107922 - if (!within(addr, mod->module_init, mod->init_text_size)
107923 - && !within(addr, mod->module_core, mod->core_text_size))
107924 + if (!within_module_init_rx(addr, mod) && !within_module_core_rx(addr, mod))
107925 mod = NULL;
107926 }
107927 return mod;
107928 diff --git a/kernel/notifier.c b/kernel/notifier.c
107929 index ae9fc7c..5085fbf 100644
107930 --- a/kernel/notifier.c
107931 +++ b/kernel/notifier.c
107932 @@ -5,6 +5,7 @@
107933 #include <linux/rcupdate.h>
107934 #include <linux/vmalloc.h>
107935 #include <linux/reboot.h>
107936 +#include <linux/mm.h>
107937
107938 /*
107939 * Notifier list for kernel code which wants to be called
107940 @@ -24,10 +25,12 @@ static int notifier_chain_register(struct notifier_block **nl,
107941 while ((*nl) != NULL) {
107942 if (n->priority > (*nl)->priority)
107943 break;
107944 - nl = &((*nl)->next);
107945 + nl = (struct notifier_block **)&((*nl)->next);
107946 }
107947 - n->next = *nl;
107948 + pax_open_kernel();
107949 + *(const void **)&n->next = *nl;
107950 rcu_assign_pointer(*nl, n);
107951 + pax_close_kernel();
107952 return 0;
107953 }
107954
107955 @@ -39,10 +42,12 @@ static int notifier_chain_cond_register(struct notifier_block **nl,
107956 return 0;
107957 if (n->priority > (*nl)->priority)
107958 break;
107959 - nl = &((*nl)->next);
107960 + nl = (struct notifier_block **)&((*nl)->next);
107961 }
107962 - n->next = *nl;
107963 + pax_open_kernel();
107964 + *(const void **)&n->next = *nl;
107965 rcu_assign_pointer(*nl, n);
107966 + pax_close_kernel();
107967 return 0;
107968 }
107969
107970 @@ -51,10 +56,12 @@ static int notifier_chain_unregister(struct notifier_block **nl,
107971 {
107972 while ((*nl) != NULL) {
107973 if ((*nl) == n) {
107974 + pax_open_kernel();
107975 rcu_assign_pointer(*nl, n->next);
107976 + pax_close_kernel();
107977 return 0;
107978 }
107979 - nl = &((*nl)->next);
107980 + nl = (struct notifier_block **)&((*nl)->next);
107981 }
107982 return -ENOENT;
107983 }
107984 diff --git a/kernel/padata.c b/kernel/padata.c
107985 index b38bea9..91acfbe 100644
107986 --- a/kernel/padata.c
107987 +++ b/kernel/padata.c
107988 @@ -54,7 +54,7 @@ static int padata_cpu_hash(struct parallel_data *pd)
107989 * seq_nr mod. number of cpus in use.
107990 */
107991
107992 - seq_nr = atomic_inc_return(&pd->seq_nr);
107993 + seq_nr = atomic_inc_return_unchecked(&pd->seq_nr);
107994 cpu_index = seq_nr % cpumask_weight(pd->cpumask.pcpu);
107995
107996 return padata_index_to_cpu(pd, cpu_index);
107997 @@ -428,7 +428,7 @@ static struct parallel_data *padata_alloc_pd(struct padata_instance *pinst,
107998 padata_init_pqueues(pd);
107999 padata_init_squeues(pd);
108000 setup_timer(&pd->timer, padata_reorder_timer, (unsigned long)pd);
108001 - atomic_set(&pd->seq_nr, -1);
108002 + atomic_set_unchecked(&pd->seq_nr, -1);
108003 atomic_set(&pd->reorder_objects, 0);
108004 atomic_set(&pd->refcnt, 0);
108005 pd->pinst = pinst;
108006 diff --git a/kernel/panic.c b/kernel/panic.c
108007 index 04e91ff..2419384 100644
108008 --- a/kernel/panic.c
108009 +++ b/kernel/panic.c
108010 @@ -54,7 +54,7 @@ EXPORT_SYMBOL(panic_blink);
108011 /*
108012 * Stop ourself in panic -- architecture code may override this
108013 */
108014 -void __weak panic_smp_self_stop(void)
108015 +void __weak __noreturn panic_smp_self_stop(void)
108016 {
108017 while (1)
108018 cpu_relax();
108019 @@ -426,7 +426,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
108020 disable_trace_on_warning();
108021
108022 pr_warn("------------[ cut here ]------------\n");
108023 - pr_warn("WARNING: CPU: %d PID: %d at %s:%d %pS()\n",
108024 + pr_warn("WARNING: CPU: %d PID: %d at %s:%d %pA()\n",
108025 raw_smp_processor_id(), current->pid, file, line, caller);
108026
108027 if (args)
108028 @@ -491,7 +491,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
108029 */
108030 __visible void __stack_chk_fail(void)
108031 {
108032 - panic("stack-protector: Kernel stack is corrupted in: %p\n",
108033 + dump_stack();
108034 + panic("stack-protector: Kernel stack is corrupted in: %pA\n",
108035 __builtin_return_address(0));
108036 }
108037 EXPORT_SYMBOL(__stack_chk_fail);
108038 diff --git a/kernel/pid.c b/kernel/pid.c
108039 index 4fd07d5..02bce4f 100644
108040 --- a/kernel/pid.c
108041 +++ b/kernel/pid.c
108042 @@ -33,6 +33,7 @@
108043 #include <linux/rculist.h>
108044 #include <linux/bootmem.h>
108045 #include <linux/hash.h>
108046 +#include <linux/security.h>
108047 #include <linux/pid_namespace.h>
108048 #include <linux/init_task.h>
108049 #include <linux/syscalls.h>
108050 @@ -47,7 +48,7 @@ struct pid init_struct_pid = INIT_STRUCT_PID;
108051
108052 int pid_max = PID_MAX_DEFAULT;
108053
108054 -#define RESERVED_PIDS 300
108055 +#define RESERVED_PIDS 500
108056
108057 int pid_max_min = RESERVED_PIDS + 1;
108058 int pid_max_max = PID_MAX_LIMIT;
108059 @@ -451,10 +452,18 @@ EXPORT_SYMBOL(pid_task);
108060 */
108061 struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
108062 {
108063 + struct task_struct *task;
108064 +
108065 rcu_lockdep_assert(rcu_read_lock_held(),
108066 "find_task_by_pid_ns() needs rcu_read_lock()"
108067 " protection");
108068 - return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
108069 +
108070 + task = pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
108071 +
108072 + if (gr_pid_is_chrooted(task))
108073 + return NULL;
108074 +
108075 + return task;
108076 }
108077
108078 struct task_struct *find_task_by_vpid(pid_t vnr)
108079 @@ -462,6 +471,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
108080 return find_task_by_pid_ns(vnr, task_active_pid_ns(current));
108081 }
108082
108083 +struct task_struct *find_task_by_vpid_unrestricted(pid_t vnr)
108084 +{
108085 + rcu_lockdep_assert(rcu_read_lock_held(),
108086 + "find_task_by_pid_ns() needs rcu_read_lock()"
108087 + " protection");
108088 + return pid_task(find_pid_ns(vnr, task_active_pid_ns(current)), PIDTYPE_PID);
108089 +}
108090 +
108091 struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
108092 {
108093 struct pid *pid;
108094 diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c
108095 index a65ba13..f600dbb 100644
108096 --- a/kernel/pid_namespace.c
108097 +++ b/kernel/pid_namespace.c
108098 @@ -274,7 +274,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write,
108099 void __user *buffer, size_t *lenp, loff_t *ppos)
108100 {
108101 struct pid_namespace *pid_ns = task_active_pid_ns(current);
108102 - struct ctl_table tmp = *table;
108103 + ctl_table_no_const tmp = *table;
108104
108105 if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN))
108106 return -EPERM;
108107 diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
108108 index 9e30231..75a6d97 100644
108109 --- a/kernel/power/Kconfig
108110 +++ b/kernel/power/Kconfig
108111 @@ -24,6 +24,8 @@ config HIBERNATE_CALLBACKS
108112 config HIBERNATION
108113 bool "Hibernation (aka 'suspend to disk')"
108114 depends on SWAP && ARCH_HIBERNATION_POSSIBLE
108115 + depends on !GRKERNSEC_KMEM
108116 + depends on !PAX_MEMORY_SANITIZE
108117 select HIBERNATE_CALLBACKS
108118 select LZO_COMPRESS
108119 select LZO_DECOMPRESS
108120 diff --git a/kernel/power/process.c b/kernel/power/process.c
108121 index 564f786..361a18e 100644
108122 --- a/kernel/power/process.c
108123 +++ b/kernel/power/process.c
108124 @@ -35,6 +35,7 @@ static int try_to_freeze_tasks(bool user_only)
108125 unsigned int elapsed_msecs;
108126 bool wakeup = false;
108127 int sleep_usecs = USEC_PER_MSEC;
108128 + bool timedout = false;
108129
108130 do_gettimeofday(&start);
108131
108132 @@ -45,13 +46,20 @@ static int try_to_freeze_tasks(bool user_only)
108133
108134 while (true) {
108135 todo = 0;
108136 + if (time_after(jiffies, end_time))
108137 + timedout = true;
108138 read_lock(&tasklist_lock);
108139 for_each_process_thread(g, p) {
108140 if (p == current || !freeze_task(p))
108141 continue;
108142
108143 - if (!freezer_should_skip(p))
108144 + if (!freezer_should_skip(p)) {
108145 todo++;
108146 + if (timedout) {
108147 + printk(KERN_ERR "Task refusing to freeze:\n");
108148 + sched_show_task(p);
108149 + }
108150 + }
108151 }
108152 read_unlock(&tasklist_lock);
108153
108154 @@ -60,7 +68,7 @@ static int try_to_freeze_tasks(bool user_only)
108155 todo += wq_busy;
108156 }
108157
108158 - if (!todo || time_after(jiffies, end_time))
108159 + if (!todo || timedout)
108160 break;
108161
108162 if (pm_wakeup_pending()) {
108163 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
108164 index cf8c242..84e7843 100644
108165 --- a/kernel/printk/printk.c
108166 +++ b/kernel/printk/printk.c
108167 @@ -475,7 +475,7 @@ static int log_store(int facility, int level,
108168 return msg->text_len;
108169 }
108170
108171 -int dmesg_restrict = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT);
108172 +int dmesg_restrict __read_only = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT);
108173
108174 static int syslog_action_restricted(int type)
108175 {
108176 @@ -498,6 +498,11 @@ int check_syslog_permissions(int type, int source)
108177 if (source == SYSLOG_FROM_PROC && type != SYSLOG_ACTION_OPEN)
108178 goto ok;
108179
108180 +#ifdef CONFIG_GRKERNSEC_DMESG
108181 + if (grsec_enable_dmesg && !capable(CAP_SYSLOG) && !capable_nolog(CAP_SYS_ADMIN))
108182 + return -EPERM;
108183 +#endif
108184 +
108185 if (syslog_action_restricted(type)) {
108186 if (capable(CAP_SYSLOG))
108187 goto ok;
108188 diff --git a/kernel/profile.c b/kernel/profile.c
108189 index a7bcd28..5b368fa 100644
108190 --- a/kernel/profile.c
108191 +++ b/kernel/profile.c
108192 @@ -37,7 +37,7 @@ struct profile_hit {
108193 #define NR_PROFILE_HIT (PAGE_SIZE/sizeof(struct profile_hit))
108194 #define NR_PROFILE_GRP (NR_PROFILE_HIT/PROFILE_GRPSZ)
108195
108196 -static atomic_t *prof_buffer;
108197 +static atomic_unchecked_t *prof_buffer;
108198 static unsigned long prof_len, prof_shift;
108199
108200 int prof_on __read_mostly;
108201 @@ -256,7 +256,7 @@ static void profile_flip_buffers(void)
108202 hits[i].pc = 0;
108203 continue;
108204 }
108205 - atomic_add(hits[i].hits, &prof_buffer[hits[i].pc]);
108206 + atomic_add_unchecked(hits[i].hits, &prof_buffer[hits[i].pc]);
108207 hits[i].hits = hits[i].pc = 0;
108208 }
108209 }
108210 @@ -317,9 +317,9 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
108211 * Add the current hit(s) and flush the write-queue out
108212 * to the global buffer:
108213 */
108214 - atomic_add(nr_hits, &prof_buffer[pc]);
108215 + atomic_add_unchecked(nr_hits, &prof_buffer[pc]);
108216 for (i = 0; i < NR_PROFILE_HIT; ++i) {
108217 - atomic_add(hits[i].hits, &prof_buffer[hits[i].pc]);
108218 + atomic_add_unchecked(hits[i].hits, &prof_buffer[hits[i].pc]);
108219 hits[i].pc = hits[i].hits = 0;
108220 }
108221 out:
108222 @@ -394,7 +394,7 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
108223 {
108224 unsigned long pc;
108225 pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
108226 - atomic_add(nr_hits, &prof_buffer[min(pc, prof_len - 1)]);
108227 + atomic_add_unchecked(nr_hits, &prof_buffer[min(pc, prof_len - 1)]);
108228 }
108229 #endif /* !CONFIG_SMP */
108230
108231 @@ -489,7 +489,7 @@ read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
108232 return -EFAULT;
108233 buf++; p++; count--; read++;
108234 }
108235 - pnt = (char *)prof_buffer + p - sizeof(atomic_t);
108236 + pnt = (char *)prof_buffer + p - sizeof(atomic_unchecked_t);
108237 if (copy_to_user(buf, (void *)pnt, count))
108238 return -EFAULT;
108239 read += count;
108240 @@ -520,7 +520,7 @@ static ssize_t write_profile(struct file *file, const char __user *buf,
108241 }
108242 #endif
108243 profile_discard_flip_buffers();
108244 - memset(prof_buffer, 0, prof_len * sizeof(atomic_t));
108245 + memset(prof_buffer, 0, prof_len * sizeof(atomic_unchecked_t));
108246 return count;
108247 }
108248
108249 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
108250 index c8e0e05..2be5614 100644
108251 --- a/kernel/ptrace.c
108252 +++ b/kernel/ptrace.c
108253 @@ -321,7 +321,7 @@ static int ptrace_attach(struct task_struct *task, long request,
108254 if (seize)
108255 flags |= PT_SEIZED;
108256 rcu_read_lock();
108257 - if (ns_capable(__task_cred(task)->user_ns, CAP_SYS_PTRACE))
108258 + if (ns_capable_nolog(__task_cred(task)->user_ns, CAP_SYS_PTRACE))
108259 flags |= PT_PTRACE_CAP;
108260 rcu_read_unlock();
108261 task->ptrace = flags;
108262 @@ -514,7 +514,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
108263 break;
108264 return -EIO;
108265 }
108266 - if (copy_to_user(dst, buf, retval))
108267 + if (retval > sizeof(buf) || copy_to_user(dst, buf, retval))
108268 return -EFAULT;
108269 copied += retval;
108270 src += retval;
108271 @@ -802,7 +802,7 @@ int ptrace_request(struct task_struct *child, long request,
108272 bool seized = child->ptrace & PT_SEIZED;
108273 int ret = -EIO;
108274 siginfo_t siginfo, *si;
108275 - void __user *datavp = (void __user *) data;
108276 + void __user *datavp = (__force void __user *) data;
108277 unsigned long __user *datalp = datavp;
108278 unsigned long flags;
108279
108280 @@ -1048,14 +1048,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
108281 goto out;
108282 }
108283
108284 + if (gr_handle_ptrace(child, request)) {
108285 + ret = -EPERM;
108286 + goto out_put_task_struct;
108287 + }
108288 +
108289 if (request == PTRACE_ATTACH || request == PTRACE_SEIZE) {
108290 ret = ptrace_attach(child, request, addr, data);
108291 /*
108292 * Some architectures need to do book-keeping after
108293 * a ptrace attach.
108294 */
108295 - if (!ret)
108296 + if (!ret) {
108297 arch_ptrace_attach(child);
108298 + gr_audit_ptrace(child);
108299 + }
108300 goto out_put_task_struct;
108301 }
108302
108303 @@ -1083,7 +1090,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
108304 copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
108305 if (copied != sizeof(tmp))
108306 return -EIO;
108307 - return put_user(tmp, (unsigned long __user *)data);
108308 + return put_user(tmp, (__force unsigned long __user *)data);
108309 }
108310
108311 int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
108312 @@ -1176,7 +1183,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
108313 }
108314
108315 COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
108316 - compat_long_t, addr, compat_long_t, data)
108317 + compat_ulong_t, addr, compat_ulong_t, data)
108318 {
108319 struct task_struct *child;
108320 long ret;
108321 @@ -1192,14 +1199,21 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
108322 goto out;
108323 }
108324
108325 + if (gr_handle_ptrace(child, request)) {
108326 + ret = -EPERM;
108327 + goto out_put_task_struct;
108328 + }
108329 +
108330 if (request == PTRACE_ATTACH || request == PTRACE_SEIZE) {
108331 ret = ptrace_attach(child, request, addr, data);
108332 /*
108333 * Some architectures need to do book-keeping after
108334 * a ptrace attach.
108335 */
108336 - if (!ret)
108337 + if (!ret) {
108338 arch_ptrace_attach(child);
108339 + gr_audit_ptrace(child);
108340 + }
108341 goto out_put_task_struct;
108342 }
108343
108344 diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
108345 index 59e32684..d2eb3d9 100644
108346 --- a/kernel/rcu/rcutorture.c
108347 +++ b/kernel/rcu/rcutorture.c
108348 @@ -134,12 +134,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
108349 rcu_torture_count) = { 0 };
108350 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
108351 rcu_torture_batch) = { 0 };
108352 -static atomic_t rcu_torture_wcount[RCU_TORTURE_PIPE_LEN + 1];
108353 -static atomic_t n_rcu_torture_alloc;
108354 -static atomic_t n_rcu_torture_alloc_fail;
108355 -static atomic_t n_rcu_torture_free;
108356 -static atomic_t n_rcu_torture_mberror;
108357 -static atomic_t n_rcu_torture_error;
108358 +static atomic_unchecked_t rcu_torture_wcount[RCU_TORTURE_PIPE_LEN + 1];
108359 +static atomic_unchecked_t n_rcu_torture_alloc;
108360 +static atomic_unchecked_t n_rcu_torture_alloc_fail;
108361 +static atomic_unchecked_t n_rcu_torture_free;
108362 +static atomic_unchecked_t n_rcu_torture_mberror;
108363 +static atomic_unchecked_t n_rcu_torture_error;
108364 static long n_rcu_torture_barrier_error;
108365 static long n_rcu_torture_boost_ktrerror;
108366 static long n_rcu_torture_boost_rterror;
108367 @@ -148,7 +148,7 @@ static long n_rcu_torture_boosts;
108368 static long n_rcu_torture_timers;
108369 static long n_barrier_attempts;
108370 static long n_barrier_successes;
108371 -static atomic_long_t n_cbfloods;
108372 +static atomic_long_unchecked_t n_cbfloods;
108373 static struct list_head rcu_torture_removed;
108374
108375 static int rcu_torture_writer_state;
108376 @@ -211,11 +211,11 @@ rcu_torture_alloc(void)
108377
108378 spin_lock_bh(&rcu_torture_lock);
108379 if (list_empty(&rcu_torture_freelist)) {
108380 - atomic_inc(&n_rcu_torture_alloc_fail);
108381 + atomic_inc_unchecked(&n_rcu_torture_alloc_fail);
108382 spin_unlock_bh(&rcu_torture_lock);
108383 return NULL;
108384 }
108385 - atomic_inc(&n_rcu_torture_alloc);
108386 + atomic_inc_unchecked(&n_rcu_torture_alloc);
108387 p = rcu_torture_freelist.next;
108388 list_del_init(p);
108389 spin_unlock_bh(&rcu_torture_lock);
108390 @@ -228,7 +228,7 @@ rcu_torture_alloc(void)
108391 static void
108392 rcu_torture_free(struct rcu_torture *p)
108393 {
108394 - atomic_inc(&n_rcu_torture_free);
108395 + atomic_inc_unchecked(&n_rcu_torture_free);
108396 spin_lock_bh(&rcu_torture_lock);
108397 list_add_tail(&p->rtort_free, &rcu_torture_freelist);
108398 spin_unlock_bh(&rcu_torture_lock);
108399 @@ -309,7 +309,7 @@ rcu_torture_pipe_update_one(struct rcu_torture *rp)
108400 i = rp->rtort_pipe_count;
108401 if (i > RCU_TORTURE_PIPE_LEN)
108402 i = RCU_TORTURE_PIPE_LEN;
108403 - atomic_inc(&rcu_torture_wcount[i]);
108404 + atomic_inc_unchecked(&rcu_torture_wcount[i]);
108405 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
108406 rp->rtort_mbtest = 0;
108407 return true;
108408 @@ -830,7 +830,7 @@ rcu_torture_cbflood(void *arg)
108409 VERBOSE_TOROUT_STRING("rcu_torture_cbflood task started");
108410 do {
108411 schedule_timeout_interruptible(cbflood_inter_holdoff);
108412 - atomic_long_inc(&n_cbfloods);
108413 + atomic_long_inc_unchecked(&n_cbfloods);
108414 WARN_ON(signal_pending(current));
108415 for (i = 0; i < cbflood_n_burst; i++) {
108416 for (j = 0; j < cbflood_n_per_burst; j++) {
108417 @@ -957,7 +957,7 @@ rcu_torture_writer(void *arg)
108418 i = old_rp->rtort_pipe_count;
108419 if (i > RCU_TORTURE_PIPE_LEN)
108420 i = RCU_TORTURE_PIPE_LEN;
108421 - atomic_inc(&rcu_torture_wcount[i]);
108422 + atomic_inc_unchecked(&rcu_torture_wcount[i]);
108423 old_rp->rtort_pipe_count++;
108424 switch (synctype[torture_random(&rand) % nsynctypes]) {
108425 case RTWS_DEF_FREE:
108426 @@ -1095,7 +1095,7 @@ static void rcu_torture_timer(unsigned long unused)
108427 return;
108428 }
108429 if (p->rtort_mbtest == 0)
108430 - atomic_inc(&n_rcu_torture_mberror);
108431 + atomic_inc_unchecked(&n_rcu_torture_mberror);
108432 spin_lock(&rand_lock);
108433 cur_ops->read_delay(&rand);
108434 n_rcu_torture_timers++;
108435 @@ -1170,7 +1170,7 @@ rcu_torture_reader(void *arg)
108436 continue;
108437 }
108438 if (p->rtort_mbtest == 0)
108439 - atomic_inc(&n_rcu_torture_mberror);
108440 + atomic_inc_unchecked(&n_rcu_torture_mberror);
108441 cur_ops->read_delay(&rand);
108442 preempt_disable();
108443 pipe_count = p->rtort_pipe_count;
108444 @@ -1239,11 +1239,11 @@ rcu_torture_stats_print(void)
108445 rcu_torture_current,
108446 rcu_torture_current_version,
108447 list_empty(&rcu_torture_freelist),
108448 - atomic_read(&n_rcu_torture_alloc),
108449 - atomic_read(&n_rcu_torture_alloc_fail),
108450 - atomic_read(&n_rcu_torture_free));
108451 + atomic_read_unchecked(&n_rcu_torture_alloc),
108452 + atomic_read_unchecked(&n_rcu_torture_alloc_fail),
108453 + atomic_read_unchecked(&n_rcu_torture_free));
108454 pr_cont("rtmbe: %d rtbke: %ld rtbre: %ld ",
108455 - atomic_read(&n_rcu_torture_mberror),
108456 + atomic_read_unchecked(&n_rcu_torture_mberror),
108457 n_rcu_torture_boost_ktrerror,
108458 n_rcu_torture_boost_rterror);
108459 pr_cont("rtbf: %ld rtb: %ld nt: %ld ",
108460 @@ -1255,17 +1255,17 @@ rcu_torture_stats_print(void)
108461 n_barrier_successes,
108462 n_barrier_attempts,
108463 n_rcu_torture_barrier_error);
108464 - pr_cont("cbflood: %ld\n", atomic_long_read(&n_cbfloods));
108465 + pr_cont("cbflood: %ld\n", atomic_long_read_unchecked(&n_cbfloods));
108466
108467 pr_alert("%s%s ", torture_type, TORTURE_FLAG);
108468 - if (atomic_read(&n_rcu_torture_mberror) != 0 ||
108469 + if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0 ||
108470 n_rcu_torture_barrier_error != 0 ||
108471 n_rcu_torture_boost_ktrerror != 0 ||
108472 n_rcu_torture_boost_rterror != 0 ||
108473 n_rcu_torture_boost_failure != 0 ||
108474 i > 1) {
108475 pr_cont("%s", "!!! ");
108476 - atomic_inc(&n_rcu_torture_error);
108477 + atomic_inc_unchecked(&n_rcu_torture_error);
108478 WARN_ON_ONCE(1);
108479 }
108480 pr_cont("Reader Pipe: ");
108481 @@ -1282,7 +1282,7 @@ rcu_torture_stats_print(void)
108482 pr_alert("%s%s ", torture_type, TORTURE_FLAG);
108483 pr_cont("Free-Block Circulation: ");
108484 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
108485 - pr_cont(" %d", atomic_read(&rcu_torture_wcount[i]));
108486 + pr_cont(" %d", atomic_read_unchecked(&rcu_torture_wcount[i]));
108487 }
108488 pr_cont("\n");
108489
108490 @@ -1636,7 +1636,7 @@ rcu_torture_cleanup(void)
108491
108492 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */
108493
108494 - if (atomic_read(&n_rcu_torture_error) || n_rcu_torture_barrier_error)
108495 + if (atomic_read_unchecked(&n_rcu_torture_error) || n_rcu_torture_barrier_error)
108496 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
108497 else if (torture_onoff_failures())
108498 rcu_torture_print_module_parms(cur_ops,
108499 @@ -1761,18 +1761,18 @@ rcu_torture_init(void)
108500
108501 rcu_torture_current = NULL;
108502 rcu_torture_current_version = 0;
108503 - atomic_set(&n_rcu_torture_alloc, 0);
108504 - atomic_set(&n_rcu_torture_alloc_fail, 0);
108505 - atomic_set(&n_rcu_torture_free, 0);
108506 - atomic_set(&n_rcu_torture_mberror, 0);
108507 - atomic_set(&n_rcu_torture_error, 0);
108508 + atomic_set_unchecked(&n_rcu_torture_alloc, 0);
108509 + atomic_set_unchecked(&n_rcu_torture_alloc_fail, 0);
108510 + atomic_set_unchecked(&n_rcu_torture_free, 0);
108511 + atomic_set_unchecked(&n_rcu_torture_mberror, 0);
108512 + atomic_set_unchecked(&n_rcu_torture_error, 0);
108513 n_rcu_torture_barrier_error = 0;
108514 n_rcu_torture_boost_ktrerror = 0;
108515 n_rcu_torture_boost_rterror = 0;
108516 n_rcu_torture_boost_failure = 0;
108517 n_rcu_torture_boosts = 0;
108518 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++)
108519 - atomic_set(&rcu_torture_wcount[i], 0);
108520 + atomic_set_unchecked(&rcu_torture_wcount[i], 0);
108521 for_each_possible_cpu(cpu) {
108522 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
108523 per_cpu(rcu_torture_count, cpu)[i] = 0;
108524 diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c
108525 index c291bd6..8a01679 100644
108526 --- a/kernel/rcu/tiny.c
108527 +++ b/kernel/rcu/tiny.c
108528 @@ -42,7 +42,7 @@
108529 /* Forward declarations for tiny_plugin.h. */
108530 struct rcu_ctrlblk;
108531 static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp);
108532 -static void rcu_process_callbacks(struct softirq_action *unused);
108533 +static void rcu_process_callbacks(void);
108534 static void __call_rcu(struct rcu_head *head,
108535 void (*func)(struct rcu_head *rcu),
108536 struct rcu_ctrlblk *rcp);
108537 @@ -170,7 +170,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
108538 false));
108539 }
108540
108541 -static void rcu_process_callbacks(struct softirq_action *unused)
108542 +static __latent_entropy void rcu_process_callbacks(void)
108543 {
108544 __rcu_process_callbacks(&rcu_sched_ctrlblk);
108545 __rcu_process_callbacks(&rcu_bh_ctrlblk);
108546 diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
108547 index 65137bc..775d7ad 100644
108548 --- a/kernel/rcu/tree.c
108549 +++ b/kernel/rcu/tree.c
108550 @@ -326,7 +326,7 @@ static void rcu_momentary_dyntick_idle(void)
108551 */
108552 rdtp = this_cpu_ptr(&rcu_dynticks);
108553 smp_mb__before_atomic(); /* Earlier stuff before QS. */
108554 - atomic_add(2, &rdtp->dynticks); /* QS. */
108555 + atomic_add_unchecked(2, &rdtp->dynticks); /* QS. */
108556 smp_mb__after_atomic(); /* Later stuff after QS. */
108557 break;
108558 }
108559 @@ -639,10 +639,10 @@ static void rcu_eqs_enter_common(long long oldval, bool user)
108560 rcu_prepare_for_idle();
108561 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
108562 smp_mb__before_atomic(); /* See above. */
108563 - atomic_inc(&rdtp->dynticks);
108564 + atomic_inc_unchecked(&rdtp->dynticks);
108565 smp_mb__after_atomic(); /* Force ordering with next sojourn. */
108566 WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) &&
108567 - atomic_read(&rdtp->dynticks) & 0x1);
108568 + atomic_read_unchecked(&rdtp->dynticks) & 0x1);
108569 rcu_dynticks_task_enter();
108570
108571 /*
108572 @@ -765,11 +765,11 @@ static void rcu_eqs_exit_common(long long oldval, int user)
108573
108574 rcu_dynticks_task_exit();
108575 smp_mb__before_atomic(); /* Force ordering w/previous sojourn. */
108576 - atomic_inc(&rdtp->dynticks);
108577 + atomic_inc_unchecked(&rdtp->dynticks);
108578 /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
108579 smp_mb__after_atomic(); /* See above. */
108580 WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) &&
108581 - !(atomic_read(&rdtp->dynticks) & 0x1));
108582 + !(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
108583 rcu_cleanup_after_idle();
108584 trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting);
108585 if (IS_ENABLED(CONFIG_RCU_EQS_DEBUG) &&
108586 @@ -905,12 +905,12 @@ void rcu_nmi_enter(void)
108587 * to be in the outermost NMI handler that interrupted an RCU-idle
108588 * period (observation due to Andy Lutomirski).
108589 */
108590 - if (!(atomic_read(&rdtp->dynticks) & 0x1)) {
108591 + if (!(atomic_read_unchecked(&rdtp->dynticks) & 0x1)) {
108592 smp_mb__before_atomic(); /* Force delay from prior write. */
108593 - atomic_inc(&rdtp->dynticks);
108594 + atomic_inc_unchecked(&rdtp->dynticks);
108595 /* atomic_inc() before later RCU read-side crit sects */
108596 smp_mb__after_atomic(); /* See above. */
108597 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
108598 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
108599 incby = 1;
108600 }
108601 rdtp->dynticks_nmi_nesting += incby;
108602 @@ -935,7 +935,7 @@ void rcu_nmi_exit(void)
108603 * to us!)
108604 */
108605 WARN_ON_ONCE(rdtp->dynticks_nmi_nesting <= 0);
108606 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
108607 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
108608
108609 /*
108610 * If the nesting level is not 1, the CPU wasn't RCU-idle, so
108611 @@ -950,9 +950,9 @@ void rcu_nmi_exit(void)
108612 rdtp->dynticks_nmi_nesting = 0;
108613 /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
108614 smp_mb__before_atomic(); /* See above. */
108615 - atomic_inc(&rdtp->dynticks);
108616 + atomic_inc_unchecked(&rdtp->dynticks);
108617 smp_mb__after_atomic(); /* Force delay to next write. */
108618 - WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
108619 + WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
108620 }
108621
108622 /**
108623 @@ -965,7 +965,7 @@ void rcu_nmi_exit(void)
108624 */
108625 bool notrace __rcu_is_watching(void)
108626 {
108627 - return atomic_read(this_cpu_ptr(&rcu_dynticks.dynticks)) & 0x1;
108628 + return atomic_read_unchecked(this_cpu_ptr(&rcu_dynticks.dynticks)) & 0x1;
108629 }
108630
108631 /**
108632 @@ -1048,7 +1048,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
108633 static int dyntick_save_progress_counter(struct rcu_data *rdp,
108634 bool *isidle, unsigned long *maxj)
108635 {
108636 - rdp->dynticks_snap = atomic_add_return(0, &rdp->dynticks->dynticks);
108637 + rdp->dynticks_snap = atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
108638 rcu_sysidle_check_cpu(rdp, isidle, maxj);
108639 if ((rdp->dynticks_snap & 0x1) == 0) {
108640 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
108641 @@ -1074,7 +1074,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
108642 int *rcrmp;
108643 unsigned int snap;
108644
108645 - curr = (unsigned int)atomic_add_return(0, &rdp->dynticks->dynticks);
108646 + curr = (unsigned int)atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
108647 snap = (unsigned int)rdp->dynticks_snap;
108648
108649 /*
108650 @@ -2895,7 +2895,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
108651 /*
108652 * Do RCU core processing for the current CPU.
108653 */
108654 -static void rcu_process_callbacks(struct softirq_action *unused)
108655 +static void rcu_process_callbacks(void)
108656 {
108657 struct rcu_state *rsp;
108658
108659 @@ -3319,11 +3319,11 @@ void synchronize_sched_expedited(void)
108660 * counter wrap on a 32-bit system. Quite a few more CPUs would of
108661 * course be required on a 64-bit system.
108662 */
108663 - if (ULONG_CMP_GE((ulong)atomic_long_read(&rsp->expedited_start),
108664 + if (ULONG_CMP_GE((ulong)atomic_long_read_unchecked(&rsp->expedited_start),
108665 (ulong)atomic_long_read(&rsp->expedited_done) +
108666 ULONG_MAX / 8)) {
108667 wait_rcu_gp(call_rcu_sched);
108668 - atomic_long_inc(&rsp->expedited_wrap);
108669 + atomic_long_inc_return_unchecked(&rsp->expedited_wrap);
108670 return;
108671 }
108672
108673 @@ -3331,12 +3331,12 @@ void synchronize_sched_expedited(void)
108674 * Take a ticket. Note that atomic_inc_return() implies a
108675 * full memory barrier.
108676 */
108677 - snap = atomic_long_inc_return(&rsp->expedited_start);
108678 + snap = atomic_long_inc_return_unchecked(&rsp->expedited_start);
108679 firstsnap = snap;
108680 if (!try_get_online_cpus()) {
108681 /* CPU hotplug operation in flight, fall back to normal GP. */
108682 wait_rcu_gp(call_rcu_sched);
108683 - atomic_long_inc(&rsp->expedited_normal);
108684 + atomic_long_inc_unchecked(&rsp->expedited_normal);
108685 return;
108686 }
108687 WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
108688 @@ -3349,7 +3349,7 @@ void synchronize_sched_expedited(void)
108689 for_each_cpu(cpu, cm) {
108690 struct rcu_dynticks *rdtp = &per_cpu(rcu_dynticks, cpu);
108691
108692 - if (!(atomic_add_return(0, &rdtp->dynticks) & 0x1))
108693 + if (!(atomic_add_return_unchecked(0, &rdtp->dynticks) & 0x1))
108694 cpumask_clear_cpu(cpu, cm);
108695 }
108696 if (cpumask_weight(cm) == 0)
108697 @@ -3364,14 +3364,14 @@ void synchronize_sched_expedited(void)
108698 synchronize_sched_expedited_cpu_stop,
108699 NULL) == -EAGAIN) {
108700 put_online_cpus();
108701 - atomic_long_inc(&rsp->expedited_tryfail);
108702 + atomic_long_inc_unchecked(&rsp->expedited_tryfail);
108703
108704 /* Check to see if someone else did our work for us. */
108705 s = atomic_long_read(&rsp->expedited_done);
108706 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
108707 /* ensure test happens before caller kfree */
108708 smp_mb__before_atomic(); /* ^^^ */
108709 - atomic_long_inc(&rsp->expedited_workdone1);
108710 + atomic_long_inc_unchecked(&rsp->expedited_workdone1);
108711 free_cpumask_var(cm);
108712 return;
108713 }
108714 @@ -3381,7 +3381,7 @@ void synchronize_sched_expedited(void)
108715 udelay(trycount * num_online_cpus());
108716 } else {
108717 wait_rcu_gp(call_rcu_sched);
108718 - atomic_long_inc(&rsp->expedited_normal);
108719 + atomic_long_inc_unchecked(&rsp->expedited_normal);
108720 free_cpumask_var(cm);
108721 return;
108722 }
108723 @@ -3391,7 +3391,7 @@ void synchronize_sched_expedited(void)
108724 if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
108725 /* ensure test happens before caller kfree */
108726 smp_mb__before_atomic(); /* ^^^ */
108727 - atomic_long_inc(&rsp->expedited_workdone2);
108728 + atomic_long_inc_unchecked(&rsp->expedited_workdone2);
108729 free_cpumask_var(cm);
108730 return;
108731 }
108732 @@ -3406,14 +3406,14 @@ void synchronize_sched_expedited(void)
108733 if (!try_get_online_cpus()) {
108734 /* CPU hotplug operation in flight, use normal GP. */
108735 wait_rcu_gp(call_rcu_sched);
108736 - atomic_long_inc(&rsp->expedited_normal);
108737 + atomic_long_inc_unchecked(&rsp->expedited_normal);
108738 free_cpumask_var(cm);
108739 return;
108740 }
108741 - snap = atomic_long_read(&rsp->expedited_start);
108742 + snap = atomic_long_read_unchecked(&rsp->expedited_start);
108743 smp_mb(); /* ensure read is before try_stop_cpus(). */
108744 }
108745 - atomic_long_inc(&rsp->expedited_stoppedcpus);
108746 + atomic_long_inc_unchecked(&rsp->expedited_stoppedcpus);
108747
108748 all_cpus_idle:
108749 free_cpumask_var(cm);
108750 @@ -3425,16 +3425,16 @@ all_cpus_idle:
108751 * than we did already did their update.
108752 */
108753 do {
108754 - atomic_long_inc(&rsp->expedited_done_tries);
108755 + atomic_long_inc_unchecked(&rsp->expedited_done_tries);
108756 s = atomic_long_read(&rsp->expedited_done);
108757 if (ULONG_CMP_GE((ulong)s, (ulong)snap)) {
108758 /* ensure test happens before caller kfree */
108759 smp_mb__before_atomic(); /* ^^^ */
108760 - atomic_long_inc(&rsp->expedited_done_lost);
108761 + atomic_long_inc_unchecked(&rsp->expedited_done_lost);
108762 break;
108763 }
108764 } while (atomic_long_cmpxchg(&rsp->expedited_done, s, snap) != s);
108765 - atomic_long_inc(&rsp->expedited_done_exit);
108766 + atomic_long_inc_unchecked(&rsp->expedited_done_exit);
108767
108768 put_online_cpus();
108769 }
108770 @@ -3767,7 +3767,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
108771 rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo);
108772 rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
108773 WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE);
108774 - WARN_ON_ONCE(atomic_read(&rdp->dynticks->dynticks) != 1);
108775 + WARN_ON_ONCE(atomic_read_unchecked(&rdp->dynticks->dynticks) != 1);
108776 rdp->cpu = cpu;
108777 rdp->rsp = rsp;
108778 rcu_boot_init_nocb_percpu_data(rdp);
108779 @@ -3798,8 +3798,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp)
108780 init_callback_list(rdp); /* Re-enable callbacks on this CPU. */
108781 rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
108782 rcu_sysidle_init_percpu_data(rdp->dynticks);
108783 - atomic_set(&rdp->dynticks->dynticks,
108784 - (atomic_read(&rdp->dynticks->dynticks) & ~0x1) + 1);
108785 + atomic_set_unchecked(&rdp->dynticks->dynticks,
108786 + (atomic_read_unchecked(&rdp->dynticks->dynticks) & ~0x1) + 1);
108787 raw_spin_unlock(&rnp->lock); /* irqs remain disabled. */
108788
108789 /*
108790 diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
108791 index 4adb7ca..20910e6 100644
108792 --- a/kernel/rcu/tree.h
108793 +++ b/kernel/rcu/tree.h
108794 @@ -108,11 +108,11 @@ struct rcu_dynticks {
108795 long long dynticks_nesting; /* Track irq/process nesting level. */
108796 /* Process level is worth LLONG_MAX/2. */
108797 int dynticks_nmi_nesting; /* Track NMI nesting level. */
108798 - atomic_t dynticks; /* Even value for idle, else odd. */
108799 + atomic_unchecked_t dynticks;/* Even value for idle, else odd. */
108800 #ifdef CONFIG_NO_HZ_FULL_SYSIDLE
108801 long long dynticks_idle_nesting;
108802 /* irq/process nesting level from idle. */
108803 - atomic_t dynticks_idle; /* Even value for idle, else odd. */
108804 + atomic_unchecked_t dynticks_idle;/* Even value for idle, else odd. */
108805 /* "Idle" excludes userspace execution. */
108806 unsigned long dynticks_idle_jiffies;
108807 /* End of last non-NMI non-idle period. */
108808 @@ -483,17 +483,17 @@ struct rcu_state {
108809 /* _rcu_barrier(). */
108810 /* End of fields guarded by barrier_mutex. */
108811
108812 - atomic_long_t expedited_start; /* Starting ticket. */
108813 - atomic_long_t expedited_done; /* Done ticket. */
108814 - atomic_long_t expedited_wrap; /* # near-wrap incidents. */
108815 - atomic_long_t expedited_tryfail; /* # acquisition failures. */
108816 - atomic_long_t expedited_workdone1; /* # done by others #1. */
108817 - atomic_long_t expedited_workdone2; /* # done by others #2. */
108818 - atomic_long_t expedited_normal; /* # fallbacks to normal. */
108819 - atomic_long_t expedited_stoppedcpus; /* # successful stop_cpus. */
108820 - atomic_long_t expedited_done_tries; /* # tries to update _done. */
108821 - atomic_long_t expedited_done_lost; /* # times beaten to _done. */
108822 - atomic_long_t expedited_done_exit; /* # times exited _done loop. */
108823 + atomic_long_unchecked_t expedited_start; /* Starting ticket. */
108824 + atomic_long_t expedited_done; /* Done ticket. */
108825 + atomic_long_unchecked_t expedited_wrap; /* # near-wrap incidents. */
108826 + atomic_long_unchecked_t expedited_tryfail; /* # acquisition failures. */
108827 + atomic_long_unchecked_t expedited_workdone1; /* # done by others #1. */
108828 + atomic_long_unchecked_t expedited_workdone2; /* # done by others #2. */
108829 + atomic_long_unchecked_t expedited_normal; /* # fallbacks to normal. */
108830 + atomic_long_unchecked_t expedited_stoppedcpus; /* # successful stop_cpus. */
108831 + atomic_long_unchecked_t expedited_done_tries; /* # tries to update _done. */
108832 + atomic_long_unchecked_t expedited_done_lost; /* # times beaten to _done. */
108833 + atomic_long_unchecked_t expedited_done_exit; /* # times exited _done loop. */
108834
108835 unsigned long jiffies_force_qs; /* Time at which to invoke */
108836 /* force_quiescent_state(). */
108837 diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
108838 index 013485f..2e678db 100644
108839 --- a/kernel/rcu/tree_plugin.h
108840 +++ b/kernel/rcu/tree_plugin.h
108841 @@ -1294,7 +1294,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
108842 free_cpumask_var(cm);
108843 }
108844
108845 -static struct smp_hotplug_thread rcu_cpu_thread_spec = {
108846 +static struct smp_hotplug_thread rcu_cpu_thread_spec __read_only = {
108847 .store = &rcu_cpu_kthread_task,
108848 .thread_should_run = rcu_cpu_kthread_should_run,
108849 .thread_fn = rcu_cpu_kthread,
108850 @@ -1767,7 +1767,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
108851 print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
108852 pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u fqs=%ld %s\n",
108853 cpu, ticks_value, ticks_title,
108854 - atomic_read(&rdtp->dynticks) & 0xfff,
108855 + atomic_read_unchecked(&rdtp->dynticks) & 0xfff,
108856 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
108857 rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
108858 READ_ONCE(rsp->n_force_qs) - rsp->n_force_qs_gpstart,
108859 @@ -2675,9 +2675,9 @@ static void rcu_sysidle_enter(int irq)
108860 j = jiffies;
108861 WRITE_ONCE(rdtp->dynticks_idle_jiffies, j);
108862 smp_mb__before_atomic();
108863 - atomic_inc(&rdtp->dynticks_idle);
108864 + atomic_inc_unchecked(&rdtp->dynticks_idle);
108865 smp_mb__after_atomic();
108866 - WARN_ON_ONCE(atomic_read(&rdtp->dynticks_idle) & 0x1);
108867 + WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1);
108868 }
108869
108870 /*
108871 @@ -2748,9 +2748,9 @@ static void rcu_sysidle_exit(int irq)
108872
108873 /* Record end of idle period. */
108874 smp_mb__before_atomic();
108875 - atomic_inc(&rdtp->dynticks_idle);
108876 + atomic_inc_unchecked(&rdtp->dynticks_idle);
108877 smp_mb__after_atomic();
108878 - WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks_idle) & 0x1));
108879 + WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1));
108880
108881 /*
108882 * If we are the timekeeping CPU, we are permitted to be non-idle
108883 @@ -2796,7 +2796,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
108884 WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu);
108885
108886 /* Pick up current idle and NMI-nesting counter and check. */
108887 - cur = atomic_read(&rdtp->dynticks_idle);
108888 + cur = atomic_read_unchecked(&rdtp->dynticks_idle);
108889 if (cur & 0x1) {
108890 *isidle = false; /* We are not idle! */
108891 return;
108892 diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c
108893 index 3ea7ffc..cb06f2d 100644
108894 --- a/kernel/rcu/tree_trace.c
108895 +++ b/kernel/rcu/tree_trace.c
108896 @@ -125,7 +125,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
108897 rdp->rcu_qs_ctr_snap == per_cpu(rcu_qs_ctr, rdp->cpu),
108898 rdp->qs_pending);
108899 seq_printf(m, " dt=%d/%llx/%d df=%lu",
108900 - atomic_read(&rdp->dynticks->dynticks),
108901 + atomic_read_unchecked(&rdp->dynticks->dynticks),
108902 rdp->dynticks->dynticks_nesting,
108903 rdp->dynticks->dynticks_nmi_nesting,
108904 rdp->dynticks_fqs);
108905 @@ -186,17 +186,17 @@ static int show_rcuexp(struct seq_file *m, void *v)
108906 struct rcu_state *rsp = (struct rcu_state *)m->private;
108907
108908 seq_printf(m, "s=%lu d=%lu w=%lu tf=%lu wd1=%lu wd2=%lu n=%lu sc=%lu dt=%lu dl=%lu dx=%lu\n",
108909 - atomic_long_read(&rsp->expedited_start),
108910 + atomic_long_read_unchecked(&rsp->expedited_start),
108911 atomic_long_read(&rsp->expedited_done),
108912 - atomic_long_read(&rsp->expedited_wrap),
108913 - atomic_long_read(&rsp->expedited_tryfail),
108914 - atomic_long_read(&rsp->expedited_workdone1),
108915 - atomic_long_read(&rsp->expedited_workdone2),
108916 - atomic_long_read(&rsp->expedited_normal),
108917 - atomic_long_read(&rsp->expedited_stoppedcpus),
108918 - atomic_long_read(&rsp->expedited_done_tries),
108919 - atomic_long_read(&rsp->expedited_done_lost),
108920 - atomic_long_read(&rsp->expedited_done_exit));
108921 + atomic_long_read_unchecked(&rsp->expedited_wrap),
108922 + atomic_long_read_unchecked(&rsp->expedited_tryfail),
108923 + atomic_long_read_unchecked(&rsp->expedited_workdone1),
108924 + atomic_long_read_unchecked(&rsp->expedited_workdone2),
108925 + atomic_long_read_unchecked(&rsp->expedited_normal),
108926 + atomic_long_read_unchecked(&rsp->expedited_stoppedcpus),
108927 + atomic_long_read_unchecked(&rsp->expedited_done_tries),
108928 + atomic_long_read_unchecked(&rsp->expedited_done_lost),
108929 + atomic_long_read_unchecked(&rsp->expedited_done_exit));
108930 return 0;
108931 }
108932
108933 diff --git a/kernel/resource.c b/kernel/resource.c
108934 index fed052a..ad13346 100644
108935 --- a/kernel/resource.c
108936 +++ b/kernel/resource.c
108937 @@ -162,8 +162,18 @@ static const struct file_operations proc_iomem_operations = {
108938
108939 static int __init ioresources_init(void)
108940 {
108941 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
108942 +#ifdef CONFIG_GRKERNSEC_PROC_USER
108943 + proc_create("ioports", S_IRUSR, NULL, &proc_ioports_operations);
108944 + proc_create("iomem", S_IRUSR, NULL, &proc_iomem_operations);
108945 +#elif defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
108946 + proc_create("ioports", S_IRUSR | S_IRGRP, NULL, &proc_ioports_operations);
108947 + proc_create("iomem", S_IRUSR | S_IRGRP, NULL, &proc_iomem_operations);
108948 +#endif
108949 +#else
108950 proc_create("ioports", 0, NULL, &proc_ioports_operations);
108951 proc_create("iomem", 0, NULL, &proc_iomem_operations);
108952 +#endif
108953 return 0;
108954 }
108955 __initcall(ioresources_init);
108956 diff --git a/kernel/sched/auto_group.c b/kernel/sched/auto_group.c
108957 index 750ed60..eb01466 100644
108958 --- a/kernel/sched/auto_group.c
108959 +++ b/kernel/sched/auto_group.c
108960 @@ -9,7 +9,7 @@
108961
108962 unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
108963 static struct autogroup autogroup_default;
108964 -static atomic_t autogroup_seq_nr;
108965 +static atomic_unchecked_t autogroup_seq_nr;
108966
108967 void __init autogroup_init(struct task_struct *init_task)
108968 {
108969 @@ -77,7 +77,7 @@ static inline struct autogroup *autogroup_create(void)
108970
108971 kref_init(&ag->kref);
108972 init_rwsem(&ag->lock);
108973 - ag->id = atomic_inc_return(&autogroup_seq_nr);
108974 + ag->id = atomic_inc_return_unchecked(&autogroup_seq_nr);
108975 ag->tg = tg;
108976 #ifdef CONFIG_RT_GROUP_SCHED
108977 /*
108978 diff --git a/kernel/sched/completion.c b/kernel/sched/completion.c
108979 index 8d0f35d..c16360d 100644
108980 --- a/kernel/sched/completion.c
108981 +++ b/kernel/sched/completion.c
108982 @@ -205,7 +205,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible);
108983 * Return: -ERESTARTSYS if interrupted, 0 if timed out, positive (at least 1,
108984 * or number of jiffies left till timeout) if completed.
108985 */
108986 -long __sched
108987 +long __sched __intentional_overflow(-1)
108988 wait_for_completion_interruptible_timeout(struct completion *x,
108989 unsigned long timeout)
108990 {
108991 @@ -222,7 +222,7 @@ EXPORT_SYMBOL(wait_for_completion_interruptible_timeout);
108992 *
108993 * Return: -ERESTARTSYS if interrupted, 0 if completed.
108994 */
108995 -int __sched wait_for_completion_killable(struct completion *x)
108996 +int __sched __intentional_overflow(-1) wait_for_completion_killable(struct completion *x)
108997 {
108998 long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE);
108999 if (t == -ERESTARTSYS)
109000 @@ -243,7 +243,7 @@ EXPORT_SYMBOL(wait_for_completion_killable);
109001 * Return: -ERESTARTSYS if interrupted, 0 if timed out, positive (at least 1,
109002 * or number of jiffies left till timeout) if completed.
109003 */
109004 -long __sched
109005 +long __sched __intentional_overflow(-1)
109006 wait_for_completion_killable_timeout(struct completion *x,
109007 unsigned long timeout)
109008 {
109009 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
109010 index e967343..5064e2f 100644
109011 --- a/kernel/sched/core.c
109012 +++ b/kernel/sched/core.c
109013 @@ -2080,7 +2080,7 @@ void set_numabalancing_state(bool enabled)
109014 int sysctl_numa_balancing(struct ctl_table *table, int write,
109015 void __user *buffer, size_t *lenp, loff_t *ppos)
109016 {
109017 - struct ctl_table t;
109018 + ctl_table_no_const t;
109019 int err;
109020 int state = numabalancing_enabled;
109021
109022 @@ -2573,8 +2573,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
109023 next->active_mm = oldmm;
109024 atomic_inc(&oldmm->mm_count);
109025 enter_lazy_tlb(oldmm, next);
109026 - } else
109027 + } else {
109028 switch_mm(oldmm, mm, next);
109029 + populate_stack();
109030 + }
109031
109032 if (!prev->mm) {
109033 prev->active_mm = NULL;
109034 @@ -3386,6 +3388,8 @@ int can_nice(const struct task_struct *p, const int nice)
109035 /* convert nice value [19,-20] to rlimit style value [1,40] */
109036 int nice_rlim = nice_to_rlimit(nice);
109037
109038 + gr_learn_resource(p, RLIMIT_NICE, nice_rlim, 1);
109039 +
109040 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
109041 capable(CAP_SYS_NICE));
109042 }
109043 @@ -3412,7 +3416,8 @@ SYSCALL_DEFINE1(nice, int, increment)
109044 nice = task_nice(current) + increment;
109045
109046 nice = clamp_val(nice, MIN_NICE, MAX_NICE);
109047 - if (increment < 0 && !can_nice(current, nice))
109048 + if (increment < 0 && (!can_nice(current, nice) ||
109049 + gr_handle_chroot_nice()))
109050 return -EPERM;
109051
109052 retval = security_task_setnice(current, nice);
109053 @@ -3724,6 +3729,7 @@ recheck:
109054 if (policy != p->policy && !rlim_rtprio)
109055 return -EPERM;
109056
109057 + gr_learn_resource(p, RLIMIT_RTPRIO, attr->sched_priority, 1);
109058 /* can't increase priority */
109059 if (attr->sched_priority > p->rt_priority &&
109060 attr->sched_priority > rlim_rtprio)
109061 @@ -5048,6 +5054,7 @@ void idle_task_exit(void)
109062
109063 if (mm != &init_mm) {
109064 switch_mm(mm, &init_mm, current);
109065 + populate_stack();
109066 finish_arch_post_lock_switch();
109067 }
109068 mmdrop(mm);
109069 @@ -5150,7 +5157,7 @@ static void migrate_tasks(struct rq *dead_rq)
109070
109071 #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
109072
109073 -static struct ctl_table sd_ctl_dir[] = {
109074 +static ctl_table_no_const sd_ctl_dir[] __read_only = {
109075 {
109076 .procname = "sched_domain",
109077 .mode = 0555,
109078 @@ -5167,17 +5174,17 @@ static struct ctl_table sd_ctl_root[] = {
109079 {}
109080 };
109081
109082 -static struct ctl_table *sd_alloc_ctl_entry(int n)
109083 +static ctl_table_no_const *sd_alloc_ctl_entry(int n)
109084 {
109085 - struct ctl_table *entry =
109086 + ctl_table_no_const *entry =
109087 kcalloc(n, sizeof(struct ctl_table), GFP_KERNEL);
109088
109089 return entry;
109090 }
109091
109092 -static void sd_free_ctl_entry(struct ctl_table **tablep)
109093 +static void sd_free_ctl_entry(ctl_table_no_const *tablep)
109094 {
109095 - struct ctl_table *entry;
109096 + ctl_table_no_const *entry;
109097
109098 /*
109099 * In the intermediate directories, both the child directory and
109100 @@ -5185,22 +5192,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
109101 * will always be set. In the lowest directory the names are
109102 * static strings and all have proc handlers.
109103 */
109104 - for (entry = *tablep; entry->mode; entry++) {
109105 - if (entry->child)
109106 - sd_free_ctl_entry(&entry->child);
109107 + for (entry = tablep; entry->mode; entry++) {
109108 + if (entry->child) {
109109 + sd_free_ctl_entry(entry->child);
109110 + pax_open_kernel();
109111 + entry->child = NULL;
109112 + pax_close_kernel();
109113 + }
109114 if (entry->proc_handler == NULL)
109115 kfree(entry->procname);
109116 }
109117
109118 - kfree(*tablep);
109119 - *tablep = NULL;
109120 + kfree(tablep);
109121 }
109122
109123 static int min_load_idx = 0;
109124 static int max_load_idx = CPU_LOAD_IDX_MAX-1;
109125
109126 static void
109127 -set_table_entry(struct ctl_table *entry,
109128 +set_table_entry(ctl_table_no_const *entry,
109129 const char *procname, void *data, int maxlen,
109130 umode_t mode, proc_handler *proc_handler,
109131 bool load_idx)
109132 @@ -5220,7 +5230,7 @@ set_table_entry(struct ctl_table *entry,
109133 static struct ctl_table *
109134 sd_alloc_ctl_domain_table(struct sched_domain *sd)
109135 {
109136 - struct ctl_table *table = sd_alloc_ctl_entry(14);
109137 + ctl_table_no_const *table = sd_alloc_ctl_entry(14);
109138
109139 if (table == NULL)
109140 return NULL;
109141 @@ -5258,9 +5268,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
109142 return table;
109143 }
109144
109145 -static struct ctl_table *sd_alloc_ctl_cpu_table(int cpu)
109146 +static ctl_table_no_const *sd_alloc_ctl_cpu_table(int cpu)
109147 {
109148 - struct ctl_table *entry, *table;
109149 + ctl_table_no_const *entry, *table;
109150 struct sched_domain *sd;
109151 int domain_num = 0, i;
109152 char buf[32];
109153 @@ -5287,11 +5297,13 @@ static struct ctl_table_header *sd_sysctl_header;
109154 static void register_sched_domain_sysctl(void)
109155 {
109156 int i, cpu_num = num_possible_cpus();
109157 - struct ctl_table *entry = sd_alloc_ctl_entry(cpu_num + 1);
109158 + ctl_table_no_const *entry = sd_alloc_ctl_entry(cpu_num + 1);
109159 char buf[32];
109160
109161 WARN_ON(sd_ctl_dir[0].child);
109162 + pax_open_kernel();
109163 sd_ctl_dir[0].child = entry;
109164 + pax_close_kernel();
109165
109166 if (entry == NULL)
109167 return;
109168 @@ -5314,8 +5326,12 @@ static void unregister_sched_domain_sysctl(void)
109169 if (sd_sysctl_header)
109170 unregister_sysctl_table(sd_sysctl_header);
109171 sd_sysctl_header = NULL;
109172 - if (sd_ctl_dir[0].child)
109173 - sd_free_ctl_entry(&sd_ctl_dir[0].child);
109174 + if (sd_ctl_dir[0].child) {
109175 + sd_free_ctl_entry(sd_ctl_dir[0].child);
109176 + pax_open_kernel();
109177 + sd_ctl_dir[0].child = NULL;
109178 + pax_close_kernel();
109179 + }
109180 }
109181 #else
109182 static void register_sched_domain_sysctl(void)
109183 diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
109184 index d113c3b..91a6fcc 100644
109185 --- a/kernel/sched/fair.c
109186 +++ b/kernel/sched/fair.c
109187 @@ -7958,7 +7958,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
109188 * run_rebalance_domains is triggered when needed from the scheduler tick.
109189 * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
109190 */
109191 -static void run_rebalance_domains(struct softirq_action *h)
109192 +static __latent_entropy void run_rebalance_domains(void)
109193 {
109194 struct rq *this_rq = this_rq();
109195 enum cpu_idle_type idle = this_rq->idle_balance ?
109196 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
109197 index 84d4879..cf3ed33 100644
109198 --- a/kernel/sched/sched.h
109199 +++ b/kernel/sched/sched.h
109200 @@ -1241,7 +1241,7 @@ struct sched_class {
109201 #ifdef CONFIG_FAIR_GROUP_SCHED
109202 void (*task_move_group) (struct task_struct *p, int on_rq);
109203 #endif
109204 -};
109205 +} __do_const;
109206
109207 static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
109208 {
109209 diff --git a/kernel/signal.c b/kernel/signal.c
109210 index 0f6bbbe..d77d2c3 100644
109211 --- a/kernel/signal.c
109212 +++ b/kernel/signal.c
109213 @@ -53,12 +53,12 @@ static struct kmem_cache *sigqueue_cachep;
109214
109215 int print_fatal_signals __read_mostly;
109216
109217 -static void __user *sig_handler(struct task_struct *t, int sig)
109218 +static __sighandler_t sig_handler(struct task_struct *t, int sig)
109219 {
109220 return t->sighand->action[sig - 1].sa.sa_handler;
109221 }
109222
109223 -static int sig_handler_ignored(void __user *handler, int sig)
109224 +static int sig_handler_ignored(__sighandler_t handler, int sig)
109225 {
109226 /* Is it explicitly or implicitly ignored? */
109227 return handler == SIG_IGN ||
109228 @@ -67,7 +67,7 @@ static int sig_handler_ignored(void __user *handler, int sig)
109229
109230 static int sig_task_ignored(struct task_struct *t, int sig, bool force)
109231 {
109232 - void __user *handler;
109233 + __sighandler_t handler;
109234
109235 handler = sig_handler(t, sig);
109236
109237 @@ -372,6 +372,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
109238 atomic_inc(&user->sigpending);
109239 rcu_read_unlock();
109240
109241 + if (!override_rlimit)
109242 + gr_learn_resource(t, RLIMIT_SIGPENDING, atomic_read(&user->sigpending), 1);
109243 +
109244 if (override_rlimit ||
109245 atomic_read(&user->sigpending) <=
109246 task_rlimit(t, RLIMIT_SIGPENDING)) {
109247 @@ -494,7 +497,7 @@ flush_signal_handlers(struct task_struct *t, int force_default)
109248
109249 int unhandled_signal(struct task_struct *tsk, int sig)
109250 {
109251 - void __user *handler = tsk->sighand->action[sig-1].sa.sa_handler;
109252 + __sighandler_t handler = tsk->sighand->action[sig-1].sa.sa_handler;
109253 if (is_global_init(tsk))
109254 return 1;
109255 if (handler != SIG_IGN && handler != SIG_DFL)
109256 @@ -788,6 +791,13 @@ static int check_kill_permission(int sig, struct siginfo *info,
109257 }
109258 }
109259
109260 + /* allow glibc communication via tgkill to other threads in our
109261 + thread group */
109262 + if ((info == SEND_SIG_NOINFO || info->si_code != SI_TKILL ||
109263 + sig != (SIGRTMIN+1) || task_tgid_vnr(t) != info->si_pid)
109264 + && gr_handle_signal(t, sig))
109265 + return -EPERM;
109266 +
109267 return security_task_kill(t, info, sig, 0);
109268 }
109269
109270 @@ -1171,7 +1181,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
109271 return send_signal(sig, info, p, 1);
109272 }
109273
109274 -static int
109275 +int
109276 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
109277 {
109278 return send_signal(sig, info, t, 0);
109279 @@ -1208,6 +1218,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
109280 unsigned long int flags;
109281 int ret, blocked, ignored;
109282 struct k_sigaction *action;
109283 + int is_unhandled = 0;
109284
109285 spin_lock_irqsave(&t->sighand->siglock, flags);
109286 action = &t->sighand->action[sig-1];
109287 @@ -1222,9 +1233,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
109288 }
109289 if (action->sa.sa_handler == SIG_DFL)
109290 t->signal->flags &= ~SIGNAL_UNKILLABLE;
109291 + if (action->sa.sa_handler == SIG_IGN || action->sa.sa_handler == SIG_DFL)
109292 + is_unhandled = 1;
109293 ret = specific_send_sig_info(sig, info, t);
109294 spin_unlock_irqrestore(&t->sighand->siglock, flags);
109295
109296 + /* only deal with unhandled signals, java etc trigger SIGSEGV during
109297 + normal operation */
109298 + if (is_unhandled) {
109299 + gr_log_signal(sig, !is_si_special(info) ? info->si_addr : NULL, t);
109300 + gr_handle_crash(t, sig);
109301 + }
109302 +
109303 return ret;
109304 }
109305
109306 @@ -1305,8 +1325,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
109307 ret = check_kill_permission(sig, info, p);
109308 rcu_read_unlock();
109309
109310 - if (!ret && sig)
109311 + if (!ret && sig) {
109312 ret = do_send_sig_info(sig, info, p, true);
109313 + if (!ret)
109314 + gr_log_signal(sig, !is_si_special(info) ? info->si_addr : NULL, p);
109315 + }
109316
109317 return ret;
109318 }
109319 @@ -2913,7 +2936,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
109320 int error = -ESRCH;
109321
109322 rcu_read_lock();
109323 - p = find_task_by_vpid(pid);
109324 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
109325 + /* allow glibc communication via tgkill to other threads in our
109326 + thread group */
109327 + if (grsec_enable_chroot_findtask && info->si_code == SI_TKILL &&
109328 + sig == (SIGRTMIN+1) && tgid == info->si_pid)
109329 + p = find_task_by_vpid_unrestricted(pid);
109330 + else
109331 +#endif
109332 + p = find_task_by_vpid(pid);
109333 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
109334 error = check_kill_permission(sig, info, p);
109335 /*
109336 @@ -3242,8 +3273,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
109337 }
109338 seg = get_fs();
109339 set_fs(KERNEL_DS);
109340 - ret = do_sigaltstack((stack_t __force __user *) (uss_ptr ? &uss : NULL),
109341 - (stack_t __force __user *) &uoss,
109342 + ret = do_sigaltstack((stack_t __force_user *) (uss_ptr ? &uss : NULL),
109343 + (stack_t __force_user *) &uoss,
109344 compat_user_stack_pointer());
109345 set_fs(seg);
109346 if (ret >= 0 && uoss_ptr) {
109347 diff --git a/kernel/smpboot.c b/kernel/smpboot.c
109348 index 7c434c3..155d90a 100644
109349 --- a/kernel/smpboot.c
109350 +++ b/kernel/smpboot.c
109351 @@ -305,7 +305,7 @@ int smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread)
109352 }
109353 smpboot_unpark_thread(plug_thread, cpu);
109354 }
109355 - list_add(&plug_thread->list, &hotplug_threads);
109356 + pax_list_add(&plug_thread->list, &hotplug_threads);
109357 out:
109358 mutex_unlock(&smpboot_threads_lock);
109359 put_online_cpus();
109360 @@ -323,7 +323,7 @@ void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread)
109361 {
109362 get_online_cpus();
109363 mutex_lock(&smpboot_threads_lock);
109364 - list_del(&plug_thread->list);
109365 + pax_list_del(&plug_thread->list);
109366 smpboot_destroy_threads(plug_thread);
109367 mutex_unlock(&smpboot_threads_lock);
109368 put_online_cpus();
109369 diff --git a/kernel/softirq.c b/kernel/softirq.c
109370 index 479e443..66d845e1 100644
109371 --- a/kernel/softirq.c
109372 +++ b/kernel/softirq.c
109373 @@ -53,7 +53,7 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned;
109374 EXPORT_SYMBOL(irq_stat);
109375 #endif
109376
109377 -static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp;
109378 +static struct softirq_action softirq_vec[NR_SOFTIRQS] __read_only __aligned(PAGE_SIZE);
109379
109380 DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
109381
109382 @@ -270,7 +270,7 @@ restart:
109383 kstat_incr_softirqs_this_cpu(vec_nr);
109384
109385 trace_softirq_entry(vec_nr);
109386 - h->action(h);
109387 + h->action();
109388 trace_softirq_exit(vec_nr);
109389 if (unlikely(prev_count != preempt_count())) {
109390 pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n",
109391 @@ -430,7 +430,7 @@ void __raise_softirq_irqoff(unsigned int nr)
109392 or_softirq_pending(1UL << nr);
109393 }
109394
109395 -void open_softirq(int nr, void (*action)(struct softirq_action *))
109396 +void __init open_softirq(int nr, void (*action)(void))
109397 {
109398 softirq_vec[nr].action = action;
109399 }
109400 @@ -482,7 +482,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
109401 }
109402 EXPORT_SYMBOL(__tasklet_hi_schedule_first);
109403
109404 -static void tasklet_action(struct softirq_action *a)
109405 +static void tasklet_action(void)
109406 {
109407 struct tasklet_struct *list;
109408
109409 @@ -518,7 +518,7 @@ static void tasklet_action(struct softirq_action *a)
109410 }
109411 }
109412
109413 -static void tasklet_hi_action(struct softirq_action *a)
109414 +static __latent_entropy void tasklet_hi_action(void)
109415 {
109416 struct tasklet_struct *list;
109417
109418 @@ -744,7 +744,7 @@ static struct notifier_block cpu_nfb = {
109419 .notifier_call = cpu_callback
109420 };
109421
109422 -static struct smp_hotplug_thread softirq_threads = {
109423 +static struct smp_hotplug_thread softirq_threads __read_only = {
109424 .store = &ksoftirqd,
109425 .thread_should_run = ksoftirqd_should_run,
109426 .thread_fn = run_ksoftirqd,
109427 diff --git a/kernel/sys.c b/kernel/sys.c
109428 index 259fda2..e824a93 100644
109429 --- a/kernel/sys.c
109430 +++ b/kernel/sys.c
109431 @@ -160,6 +160,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
109432 error = -EACCES;
109433 goto out;
109434 }
109435 +
109436 + if (gr_handle_chroot_setpriority(p, niceval)) {
109437 + error = -EACCES;
109438 + goto out;
109439 + }
109440 +
109441 no_nice = security_task_setnice(p, niceval);
109442 if (no_nice) {
109443 error = no_nice;
109444 @@ -366,6 +372,20 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
109445 goto error;
109446 }
109447
109448 + if (gr_check_group_change(new->gid, new->egid, INVALID_GID))
109449 + goto error;
109450 +
109451 + if (!gid_eq(new->gid, old->gid)) {
109452 + /* make sure we generate a learn log for what will
109453 + end up being a role transition after a full-learning
109454 + policy is generated
109455 + CAP_SETGID is required to perform a transition
109456 + we may not log a CAP_SETGID check above, e.g.
109457 + in the case where new rgid = old egid
109458 + */
109459 + gr_learn_cap(current, new, CAP_SETGID);
109460 + }
109461 +
109462 if (rgid != (gid_t) -1 ||
109463 (egid != (gid_t) -1 && !gid_eq(kegid, old->gid)))
109464 new->sgid = new->egid;
109465 @@ -401,6 +421,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
109466 old = current_cred();
109467
109468 retval = -EPERM;
109469 +
109470 + if (gr_check_group_change(kgid, kgid, kgid))
109471 + goto error;
109472 +
109473 if (ns_capable(old->user_ns, CAP_SETGID))
109474 new->gid = new->egid = new->sgid = new->fsgid = kgid;
109475 else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid))
109476 @@ -418,7 +442,7 @@ error:
109477 /*
109478 * change the user struct in a credentials set to match the new UID
109479 */
109480 -static int set_user(struct cred *new)
109481 +int set_user(struct cred *new)
109482 {
109483 struct user_struct *new_user;
109484
109485 @@ -498,7 +522,18 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
109486 goto error;
109487 }
109488
109489 + if (gr_check_user_change(new->uid, new->euid, INVALID_UID))
109490 + goto error;
109491 +
109492 if (!uid_eq(new->uid, old->uid)) {
109493 + /* make sure we generate a learn log for what will
109494 + end up being a role transition after a full-learning
109495 + policy is generated
109496 + CAP_SETUID is required to perform a transition
109497 + we may not log a CAP_SETUID check above, e.g.
109498 + in the case where new ruid = old euid
109499 + */
109500 + gr_learn_cap(current, new, CAP_SETUID);
109501 retval = set_user(new);
109502 if (retval < 0)
109503 goto error;
109504 @@ -548,6 +583,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
109505 old = current_cred();
109506
109507 retval = -EPERM;
109508 +
109509 + if (gr_check_crash_uid(kuid))
109510 + goto error;
109511 + if (gr_check_user_change(kuid, kuid, kuid))
109512 + goto error;
109513 +
109514 if (ns_capable(old->user_ns, CAP_SETUID)) {
109515 new->suid = new->uid = kuid;
109516 if (!uid_eq(kuid, old->uid)) {
109517 @@ -617,6 +658,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
109518 goto error;
109519 }
109520
109521 + if (gr_check_user_change(kruid, keuid, INVALID_UID))
109522 + goto error;
109523 +
109524 if (ruid != (uid_t) -1) {
109525 new->uid = kruid;
109526 if (!uid_eq(kruid, old->uid)) {
109527 @@ -701,6 +745,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
109528 goto error;
109529 }
109530
109531 + if (gr_check_group_change(krgid, kegid, INVALID_GID))
109532 + goto error;
109533 +
109534 if (rgid != (gid_t) -1)
109535 new->gid = krgid;
109536 if (egid != (gid_t) -1)
109537 @@ -765,12 +812,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
109538 uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) ||
109539 ns_capable(old->user_ns, CAP_SETUID)) {
109540 if (!uid_eq(kuid, old->fsuid)) {
109541 + if (gr_check_user_change(INVALID_UID, INVALID_UID, kuid))
109542 + goto error;
109543 +
109544 new->fsuid = kuid;
109545 if (security_task_fix_setuid(new, old, LSM_SETID_FS) == 0)
109546 goto change_okay;
109547 }
109548 }
109549
109550 +error:
109551 abort_creds(new);
109552 return old_fsuid;
109553
109554 @@ -803,12 +854,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
109555 if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->egid) ||
109556 gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) ||
109557 ns_capable(old->user_ns, CAP_SETGID)) {
109558 + if (gr_check_group_change(INVALID_GID, INVALID_GID, kgid))
109559 + goto error;
109560 +
109561 if (!gid_eq(kgid, old->fsgid)) {
109562 new->fsgid = kgid;
109563 goto change_okay;
109564 }
109565 }
109566
109567 +error:
109568 abort_creds(new);
109569 return old_fsgid;
109570
109571 @@ -1187,19 +1242,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
109572 return -EFAULT;
109573
109574 down_read(&uts_sem);
109575 - error = __copy_to_user(&name->sysname, &utsname()->sysname,
109576 + error = __copy_to_user(name->sysname, &utsname()->sysname,
109577 __OLD_UTS_LEN);
109578 error |= __put_user(0, name->sysname + __OLD_UTS_LEN);
109579 - error |= __copy_to_user(&name->nodename, &utsname()->nodename,
109580 + error |= __copy_to_user(name->nodename, &utsname()->nodename,
109581 __OLD_UTS_LEN);
109582 error |= __put_user(0, name->nodename + __OLD_UTS_LEN);
109583 - error |= __copy_to_user(&name->release, &utsname()->release,
109584 + error |= __copy_to_user(name->release, &utsname()->release,
109585 __OLD_UTS_LEN);
109586 error |= __put_user(0, name->release + __OLD_UTS_LEN);
109587 - error |= __copy_to_user(&name->version, &utsname()->version,
109588 + error |= __copy_to_user(name->version, &utsname()->version,
109589 __OLD_UTS_LEN);
109590 error |= __put_user(0, name->version + __OLD_UTS_LEN);
109591 - error |= __copy_to_user(&name->machine, &utsname()->machine,
109592 + error |= __copy_to_user(name->machine, &utsname()->machine,
109593 __OLD_UTS_LEN);
109594 error |= __put_user(0, name->machine + __OLD_UTS_LEN);
109595 up_read(&uts_sem);
109596 @@ -1400,6 +1455,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
109597 */
109598 new_rlim->rlim_cur = 1;
109599 }
109600 + /* Handle the case where a fork and setuid occur and then RLIMIT_NPROC
109601 + is changed to a lower value. Since tasks can be created by the same
109602 + user in between this limit change and an execve by this task, force
109603 + a recheck only for this task by setting PF_NPROC_EXCEEDED
109604 + */
109605 + if (resource == RLIMIT_NPROC && tsk->real_cred->user != INIT_USER)
109606 + tsk->flags |= PF_NPROC_EXCEEDED;
109607 }
109608 if (!retval) {
109609 if (old_rlim)
109610 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
109611 index 19b62b5..74cc287 100644
109612 --- a/kernel/sysctl.c
109613 +++ b/kernel/sysctl.c
109614 @@ -94,7 +94,6 @@
109615 #endif
109616
109617 #if defined(CONFIG_SYSCTL)
109618 -
109619 /* External variables not in a header file. */
109620 extern int suid_dumpable;
109621 #ifdef CONFIG_COREDUMP
109622 @@ -111,22 +110,24 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
109623 #ifndef CONFIG_MMU
109624 extern int sysctl_nr_trim_pages;
109625 #endif
109626 +extern int sysctl_modify_ldt;
109627
109628 /* Constants used for minimum and maximum */
109629 #ifdef CONFIG_LOCKUP_DETECTOR
109630 -static int sixty = 60;
109631 +static int sixty __read_only = 60;
109632 #endif
109633
109634 -static int __maybe_unused neg_one = -1;
109635 +static int __maybe_unused neg_one __read_only = -1;
109636
109637 -static int zero;
109638 -static int __maybe_unused one = 1;
109639 -static int __maybe_unused two = 2;
109640 -static int __maybe_unused four = 4;
109641 -static unsigned long one_ul = 1;
109642 -static int one_hundred = 100;
109643 +static int zero __read_only = 0;
109644 +static int __maybe_unused one __read_only = 1;
109645 +static int __maybe_unused two __read_only = 2;
109646 +static int __maybe_unused three __read_only = 3;
109647 +static int __maybe_unused four __read_only = 4;
109648 +static unsigned long one_ul __read_only = 1;
109649 +static int one_hundred __read_only = 100;
109650 #ifdef CONFIG_PRINTK
109651 -static int ten_thousand = 10000;
109652 +static int ten_thousand __read_only = 10000;
109653 #endif
109654
109655 /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
109656 @@ -180,10 +181,8 @@ static int proc_taint(struct ctl_table *table, int write,
109657 void __user *buffer, size_t *lenp, loff_t *ppos);
109658 #endif
109659
109660 -#ifdef CONFIG_PRINTK
109661 -static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
109662 +static int proc_dointvec_minmax_secure_sysadmin(struct ctl_table *table, int write,
109663 void __user *buffer, size_t *lenp, loff_t *ppos);
109664 -#endif
109665
109666 static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
109667 void __user *buffer, size_t *lenp, loff_t *ppos);
109668 @@ -214,6 +213,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write,
109669
109670 #endif
109671
109672 +extern struct ctl_table grsecurity_table[];
109673 +
109674 static struct ctl_table kern_table[];
109675 static struct ctl_table vm_table[];
109676 static struct ctl_table fs_table[];
109677 @@ -228,6 +229,20 @@ extern struct ctl_table epoll_table[];
109678 int sysctl_legacy_va_layout;
109679 #endif
109680
109681 +#ifdef CONFIG_PAX_SOFTMODE
109682 +static struct ctl_table pax_table[] = {
109683 + {
109684 + .procname = "softmode",
109685 + .data = &pax_softmode,
109686 + .maxlen = sizeof(unsigned int),
109687 + .mode = 0600,
109688 + .proc_handler = &proc_dointvec,
109689 + },
109690 +
109691 + { }
109692 +};
109693 +#endif
109694 +
109695 /* The default sysctl tables: */
109696
109697 static struct ctl_table sysctl_base_table[] = {
109698 @@ -276,6 +291,22 @@ static int max_extfrag_threshold = 1000;
109699 #endif
109700
109701 static struct ctl_table kern_table[] = {
109702 +#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_ROFS)
109703 + {
109704 + .procname = "grsecurity",
109705 + .mode = 0500,
109706 + .child = grsecurity_table,
109707 + },
109708 +#endif
109709 +
109710 +#ifdef CONFIG_PAX_SOFTMODE
109711 + {
109712 + .procname = "pax",
109713 + .mode = 0500,
109714 + .child = pax_table,
109715 + },
109716 +#endif
109717 +
109718 {
109719 .procname = "sched_child_runs_first",
109720 .data = &sysctl_sched_child_runs_first,
109721 @@ -628,7 +659,7 @@ static struct ctl_table kern_table[] = {
109722 .maxlen = sizeof(int),
109723 .mode = 0644,
109724 /* only handle a transition from default "0" to "1" */
109725 - .proc_handler = proc_dointvec_minmax,
109726 + .proc_handler = proc_dointvec_minmax_secure,
109727 .extra1 = &one,
109728 .extra2 = &one,
109729 },
109730 @@ -639,7 +670,7 @@ static struct ctl_table kern_table[] = {
109731 .data = &modprobe_path,
109732 .maxlen = KMOD_PATH_LEN,
109733 .mode = 0644,
109734 - .proc_handler = proc_dostring,
109735 + .proc_handler = proc_dostring_modpriv,
109736 },
109737 {
109738 .procname = "modules_disabled",
109739 @@ -647,7 +678,7 @@ static struct ctl_table kern_table[] = {
109740 .maxlen = sizeof(int),
109741 .mode = 0644,
109742 /* only handle a transition from default "0" to "1" */
109743 - .proc_handler = proc_dointvec_minmax,
109744 + .proc_handler = proc_dointvec_minmax_secure,
109745 .extra1 = &one,
109746 .extra2 = &one,
109747 },
109748 @@ -802,20 +833,24 @@ static struct ctl_table kern_table[] = {
109749 .data = &dmesg_restrict,
109750 .maxlen = sizeof(int),
109751 .mode = 0644,
109752 - .proc_handler = proc_dointvec_minmax_sysadmin,
109753 + .proc_handler = proc_dointvec_minmax_secure_sysadmin,
109754 .extra1 = &zero,
109755 .extra2 = &one,
109756 },
109757 +#endif
109758 {
109759 .procname = "kptr_restrict",
109760 .data = &kptr_restrict,
109761 .maxlen = sizeof(int),
109762 .mode = 0644,
109763 - .proc_handler = proc_dointvec_minmax_sysadmin,
109764 + .proc_handler = proc_dointvec_minmax_secure_sysadmin,
109765 +#ifdef CONFIG_GRKERNSEC_HIDESYM
109766 + .extra1 = &two,
109767 +#else
109768 .extra1 = &zero,
109769 +#endif
109770 .extra2 = &two,
109771 },
109772 -#endif
109773 {
109774 .procname = "ngroups_max",
109775 .data = &ngroups_max,
109776 @@ -960,6 +995,15 @@ static struct ctl_table kern_table[] = {
109777 .mode = 0644,
109778 .proc_handler = proc_dointvec,
109779 },
109780 + {
109781 + .procname = "modify_ldt",
109782 + .data = &sysctl_modify_ldt,
109783 + .maxlen = sizeof(int),
109784 + .mode = 0644,
109785 + .proc_handler = proc_dointvec_minmax_secure_sysadmin,
109786 + .extra1 = &zero,
109787 + .extra2 = &one,
109788 + },
109789 #endif
109790 #if defined(CONFIG_MMU)
109791 {
109792 @@ -1082,10 +1126,17 @@ static struct ctl_table kern_table[] = {
109793 */
109794 {
109795 .procname = "perf_event_paranoid",
109796 - .data = &sysctl_perf_event_paranoid,
109797 - .maxlen = sizeof(sysctl_perf_event_paranoid),
109798 + .data = &sysctl_perf_event_legitimately_concerned,
109799 + .maxlen = sizeof(sysctl_perf_event_legitimately_concerned),
109800 .mode = 0644,
109801 - .proc_handler = proc_dointvec,
109802 + /* go ahead, be a hero */
109803 + .proc_handler = proc_dointvec_minmax_secure_sysadmin,
109804 + .extra1 = &neg_one,
109805 +#ifdef CONFIG_GRKERNSEC_PERF_HARDEN
109806 + .extra2 = &three,
109807 +#else
109808 + .extra2 = &two,
109809 +#endif
109810 },
109811 {
109812 .procname = "perf_event_mlock_kb",
109813 @@ -1376,6 +1427,13 @@ static struct ctl_table vm_table[] = {
109814 .proc_handler = proc_dointvec_minmax,
109815 .extra1 = &zero,
109816 },
109817 + {
109818 + .procname = "heap_stack_gap",
109819 + .data = &sysctl_heap_stack_gap,
109820 + .maxlen = sizeof(sysctl_heap_stack_gap),
109821 + .mode = 0644,
109822 + .proc_handler = proc_doulongvec_minmax,
109823 + },
109824 #else
109825 {
109826 .procname = "nr_trim_pages",
109827 @@ -1852,6 +1910,16 @@ int proc_dostring(struct ctl_table *table, int write,
109828 (char __user *)buffer, lenp, ppos);
109829 }
109830
109831 +int proc_dostring_modpriv(struct ctl_table *table, int write,
109832 + void __user *buffer, size_t *lenp, loff_t *ppos)
109833 +{
109834 + if (write && !capable(CAP_SYS_MODULE))
109835 + return -EPERM;
109836 +
109837 + return _proc_do_string(table->data, table->maxlen, write,
109838 + buffer, lenp, ppos);
109839 +}
109840 +
109841 static size_t proc_skip_spaces(char **buf)
109842 {
109843 size_t ret;
109844 @@ -1957,6 +2025,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
109845 len = strlen(tmp);
109846 if (len > *size)
109847 len = *size;
109848 + if (len > sizeof(tmp))
109849 + len = sizeof(tmp);
109850 if (copy_to_user(*buf, tmp, len))
109851 return -EFAULT;
109852 *size -= len;
109853 @@ -1995,7 +2065,7 @@ static int do_proc_dointvec_conv(bool *negp, unsigned long *lvalp,
109854 int val = *valp;
109855 if (val < 0) {
109856 *negp = true;
109857 - *lvalp = (unsigned long)-val;
109858 + *lvalp = -(unsigned long)val;
109859 } else {
109860 *negp = false;
109861 *lvalp = (unsigned long)val;
109862 @@ -2135,6 +2205,44 @@ int proc_dointvec(struct ctl_table *table, int write,
109863 NULL,NULL);
109864 }
109865
109866 +static int do_proc_dointvec_conv_secure(bool *negp, unsigned long *lvalp,
109867 + int *valp,
109868 + int write, void *data)
109869 +{
109870 + if (write) {
109871 + if (*negp) {
109872 + if (*lvalp > (unsigned long) INT_MAX + 1)
109873 + return -EINVAL;
109874 + pax_open_kernel();
109875 + *valp = -*lvalp;
109876 + pax_close_kernel();
109877 + } else {
109878 + if (*lvalp > (unsigned long) INT_MAX)
109879 + return -EINVAL;
109880 + pax_open_kernel();
109881 + *valp = *lvalp;
109882 + pax_close_kernel();
109883 + }
109884 + } else {
109885 + int val = *valp;
109886 + if (val < 0) {
109887 + *negp = true;
109888 + *lvalp = -(unsigned long)val;
109889 + } else {
109890 + *negp = false;
109891 + *lvalp = (unsigned long)val;
109892 + }
109893 + }
109894 + return 0;
109895 +}
109896 +
109897 +int proc_dointvec_secure(struct ctl_table *table, int write,
109898 + void __user *buffer, size_t *lenp, loff_t *ppos)
109899 +{
109900 + return do_proc_dointvec(table,write,buffer,lenp,ppos,
109901 + do_proc_dointvec_conv_secure,NULL);
109902 +}
109903 +
109904 /*
109905 * Taint values can only be increased
109906 * This means we can safely use a temporary.
109907 @@ -2142,7 +2250,7 @@ int proc_dointvec(struct ctl_table *table, int write,
109908 static int proc_taint(struct ctl_table *table, int write,
109909 void __user *buffer, size_t *lenp, loff_t *ppos)
109910 {
109911 - struct ctl_table t;
109912 + ctl_table_no_const t;
109913 unsigned long tmptaint = get_taint();
109914 int err;
109915
109916 @@ -2170,16 +2278,14 @@ static int proc_taint(struct ctl_table *table, int write,
109917 return err;
109918 }
109919
109920 -#ifdef CONFIG_PRINTK
109921 -static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
109922 +static int proc_dointvec_minmax_secure_sysadmin(struct ctl_table *table, int write,
109923 void __user *buffer, size_t *lenp, loff_t *ppos)
109924 {
109925 if (write && !capable(CAP_SYS_ADMIN))
109926 return -EPERM;
109927
109928 - return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
109929 + return proc_dointvec_minmax_secure(table, write, buffer, lenp, ppos);
109930 }
109931 -#endif
109932
109933 struct do_proc_dointvec_minmax_conv_param {
109934 int *min;
109935 @@ -2201,7 +2307,33 @@ static int do_proc_dointvec_minmax_conv(bool *negp, unsigned long *lvalp,
109936 int val = *valp;
109937 if (val < 0) {
109938 *negp = true;
109939 - *lvalp = (unsigned long)-val;
109940 + *lvalp = -(unsigned long)val;
109941 + } else {
109942 + *negp = false;
109943 + *lvalp = (unsigned long)val;
109944 + }
109945 + }
109946 + return 0;
109947 +}
109948 +
109949 +static int do_proc_dointvec_minmax_conv_secure(bool *negp, unsigned long *lvalp,
109950 + int *valp,
109951 + int write, void *data)
109952 +{
109953 + struct do_proc_dointvec_minmax_conv_param *param = data;
109954 + if (write) {
109955 + int val = *negp ? -*lvalp : *lvalp;
109956 + if ((param->min && *param->min > val) ||
109957 + (param->max && *param->max < val))
109958 + return -EINVAL;
109959 + pax_open_kernel();
109960 + *valp = val;
109961 + pax_close_kernel();
109962 + } else {
109963 + int val = *valp;
109964 + if (val < 0) {
109965 + *negp = true;
109966 + *lvalp = -(unsigned long)val;
109967 } else {
109968 *negp = false;
109969 *lvalp = (unsigned long)val;
109970 @@ -2237,6 +2369,17 @@ int proc_dointvec_minmax(struct ctl_table *table, int write,
109971 do_proc_dointvec_minmax_conv, &param);
109972 }
109973
109974 +int proc_dointvec_minmax_secure(struct ctl_table *table, int write,
109975 + void __user *buffer, size_t *lenp, loff_t *ppos)
109976 +{
109977 + struct do_proc_dointvec_minmax_conv_param param = {
109978 + .min = (int *) table->extra1,
109979 + .max = (int *) table->extra2,
109980 + };
109981 + return do_proc_dointvec(table, write, buffer, lenp, ppos,
109982 + do_proc_dointvec_minmax_conv_secure, &param);
109983 +}
109984 +
109985 static void validate_coredump_safety(void)
109986 {
109987 #ifdef CONFIG_COREDUMP
109988 @@ -2436,7 +2579,7 @@ static int do_proc_dointvec_jiffies_conv(bool *negp, unsigned long *lvalp,
109989 unsigned long lval;
109990 if (val < 0) {
109991 *negp = true;
109992 - lval = (unsigned long)-val;
109993 + lval = -(unsigned long)val;
109994 } else {
109995 *negp = false;
109996 lval = (unsigned long)val;
109997 @@ -2459,7 +2602,7 @@ static int do_proc_dointvec_userhz_jiffies_conv(bool *negp, unsigned long *lvalp
109998 unsigned long lval;
109999 if (val < 0) {
110000 *negp = true;
110001 - lval = (unsigned long)-val;
110002 + lval = -(unsigned long)val;
110003 } else {
110004 *negp = false;
110005 lval = (unsigned long)val;
110006 @@ -2484,7 +2627,7 @@ static int do_proc_dointvec_ms_jiffies_conv(bool *negp, unsigned long *lvalp,
110007 unsigned long lval;
110008 if (val < 0) {
110009 *negp = true;
110010 - lval = (unsigned long)-val;
110011 + lval = -(unsigned long)val;
110012 } else {
110013 *negp = false;
110014 lval = (unsigned long)val;
110015 @@ -2739,6 +2882,12 @@ int proc_dostring(struct ctl_table *table, int write,
110016 return -ENOSYS;
110017 }
110018
110019 +int proc_dostring_modpriv(struct ctl_table *table, int write,
110020 + void __user *buffer, size_t *lenp, loff_t *ppos)
110021 +{
110022 + return -ENOSYS;
110023 +}
110024 +
110025 int proc_dointvec(struct ctl_table *table, int write,
110026 void __user *buffer, size_t *lenp, loff_t *ppos)
110027 {
110028 @@ -2795,5 +2944,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
110029 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
110030 EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
110031 EXPORT_SYMBOL(proc_dostring);
110032 +EXPORT_SYMBOL(proc_dostring_modpriv);
110033 EXPORT_SYMBOL(proc_doulongvec_minmax);
110034 EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
110035 diff --git a/kernel/taskstats.c b/kernel/taskstats.c
110036 index 21f82c2..c1984e5 100644
110037 --- a/kernel/taskstats.c
110038 +++ b/kernel/taskstats.c
110039 @@ -28,9 +28,12 @@
110040 #include <linux/fs.h>
110041 #include <linux/file.h>
110042 #include <linux/pid_namespace.h>
110043 +#include <linux/grsecurity.h>
110044 #include <net/genetlink.h>
110045 #include <linux/atomic.h>
110046
110047 +extern int gr_is_taskstats_denied(int pid);
110048 +
110049 /*
110050 * Maximum length of a cpumask that can be specified in
110051 * the TASKSTATS_CMD_ATTR_REGISTER/DEREGISTER_CPUMASK attribute
110052 @@ -567,6 +570,9 @@ err:
110053
110054 static int taskstats_user_cmd(struct sk_buff *skb, struct genl_info *info)
110055 {
110056 + if (gr_is_taskstats_denied(current->pid))
110057 + return -EACCES;
110058 +
110059 if (info->attrs[TASKSTATS_CMD_ATTR_REGISTER_CPUMASK])
110060 return cmd_attr_register_cpumask(info);
110061 else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
110062 diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
110063 index 7fbba635..7cc64ae 100644
110064 --- a/kernel/time/alarmtimer.c
110065 +++ b/kernel/time/alarmtimer.c
110066 @@ -820,7 +820,7 @@ static int __init alarmtimer_init(void)
110067 struct platform_device *pdev;
110068 int error = 0;
110069 int i;
110070 - struct k_clock alarm_clock = {
110071 + static struct k_clock alarm_clock = {
110072 .clock_getres = alarm_clock_getres,
110073 .clock_get = alarm_clock_get,
110074 .timer_create = alarm_timer_create,
110075 diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
110076 index 892e3da..cb71aa5 100644
110077 --- a/kernel/time/posix-cpu-timers.c
110078 +++ b/kernel/time/posix-cpu-timers.c
110079 @@ -1470,14 +1470,14 @@ struct k_clock clock_posix_cpu = {
110080
110081 static __init int init_posix_cpu_timers(void)
110082 {
110083 - struct k_clock process = {
110084 + static struct k_clock process = {
110085 .clock_getres = process_cpu_clock_getres,
110086 .clock_get = process_cpu_clock_get,
110087 .timer_create = process_cpu_timer_create,
110088 .nsleep = process_cpu_nsleep,
110089 .nsleep_restart = process_cpu_nsleep_restart,
110090 };
110091 - struct k_clock thread = {
110092 + static struct k_clock thread = {
110093 .clock_getres = thread_cpu_clock_getres,
110094 .clock_get = thread_cpu_clock_get,
110095 .timer_create = thread_cpu_timer_create,
110096 diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
110097 index 31d11ac..5a3bb13 100644
110098 --- a/kernel/time/posix-timers.c
110099 +++ b/kernel/time/posix-timers.c
110100 @@ -43,6 +43,7 @@
110101 #include <linux/hash.h>
110102 #include <linux/posix-clock.h>
110103 #include <linux/posix-timers.h>
110104 +#include <linux/grsecurity.h>
110105 #include <linux/syscalls.h>
110106 #include <linux/wait.h>
110107 #include <linux/workqueue.h>
110108 @@ -124,7 +125,7 @@ static DEFINE_SPINLOCK(hash_lock);
110109 * which we beg off on and pass to do_sys_settimeofday().
110110 */
110111
110112 -static struct k_clock posix_clocks[MAX_CLOCKS];
110113 +static struct k_clock *posix_clocks[MAX_CLOCKS];
110114
110115 /*
110116 * These ones are defined below.
110117 @@ -284,7 +285,7 @@ static int posix_get_hrtimer_res(clockid_t which_clock, struct timespec *tp)
110118 */
110119 static __init int init_posix_timers(void)
110120 {
110121 - struct k_clock clock_realtime = {
110122 + static struct k_clock clock_realtime = {
110123 .clock_getres = posix_get_hrtimer_res,
110124 .clock_get = posix_clock_realtime_get,
110125 .clock_set = posix_clock_realtime_set,
110126 @@ -296,7 +297,7 @@ static __init int init_posix_timers(void)
110127 .timer_get = common_timer_get,
110128 .timer_del = common_timer_del,
110129 };
110130 - struct k_clock clock_monotonic = {
110131 + static struct k_clock clock_monotonic = {
110132 .clock_getres = posix_get_hrtimer_res,
110133 .clock_get = posix_ktime_get_ts,
110134 .nsleep = common_nsleep,
110135 @@ -306,19 +307,19 @@ static __init int init_posix_timers(void)
110136 .timer_get = common_timer_get,
110137 .timer_del = common_timer_del,
110138 };
110139 - struct k_clock clock_monotonic_raw = {
110140 + static struct k_clock clock_monotonic_raw = {
110141 .clock_getres = posix_get_hrtimer_res,
110142 .clock_get = posix_get_monotonic_raw,
110143 };
110144 - struct k_clock clock_realtime_coarse = {
110145 + static struct k_clock clock_realtime_coarse = {
110146 .clock_getres = posix_get_coarse_res,
110147 .clock_get = posix_get_realtime_coarse,
110148 };
110149 - struct k_clock clock_monotonic_coarse = {
110150 + static struct k_clock clock_monotonic_coarse = {
110151 .clock_getres = posix_get_coarse_res,
110152 .clock_get = posix_get_monotonic_coarse,
110153 };
110154 - struct k_clock clock_tai = {
110155 + static struct k_clock clock_tai = {
110156 .clock_getres = posix_get_hrtimer_res,
110157 .clock_get = posix_get_tai,
110158 .nsleep = common_nsleep,
110159 @@ -328,7 +329,7 @@ static __init int init_posix_timers(void)
110160 .timer_get = common_timer_get,
110161 .timer_del = common_timer_del,
110162 };
110163 - struct k_clock clock_boottime = {
110164 + static struct k_clock clock_boottime = {
110165 .clock_getres = posix_get_hrtimer_res,
110166 .clock_get = posix_get_boottime,
110167 .nsleep = common_nsleep,
110168 @@ -540,7 +541,7 @@ void posix_timers_register_clock(const clockid_t clock_id,
110169 return;
110170 }
110171
110172 - posix_clocks[clock_id] = *new_clock;
110173 + posix_clocks[clock_id] = new_clock;
110174 }
110175 EXPORT_SYMBOL_GPL(posix_timers_register_clock);
110176
110177 @@ -586,9 +587,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id)
110178 return (id & CLOCKFD_MASK) == CLOCKFD ?
110179 &clock_posix_dynamic : &clock_posix_cpu;
110180
110181 - if (id >= MAX_CLOCKS || !posix_clocks[id].clock_getres)
110182 + if (id >= MAX_CLOCKS || !posix_clocks[id] || !posix_clocks[id]->clock_getres)
110183 return NULL;
110184 - return &posix_clocks[id];
110185 + return posix_clocks[id];
110186 }
110187
110188 static int common_timer_create(struct k_itimer *new_timer)
110189 @@ -606,7 +607,7 @@ SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
110190 struct k_clock *kc = clockid_to_kclock(which_clock);
110191 struct k_itimer *new_timer;
110192 int error, new_timer_id;
110193 - sigevent_t event;
110194 + sigevent_t event = { };
110195 int it_id_set = IT_ID_NOT_SET;
110196
110197 if (!kc)
110198 @@ -1021,6 +1022,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
110199 if (copy_from_user(&new_tp, tp, sizeof (*tp)))
110200 return -EFAULT;
110201
110202 + /* only the CLOCK_REALTIME clock can be set, all other clocks
110203 + have their clock_set fptr set to a nosettime dummy function
110204 + CLOCK_REALTIME has a NULL clock_set fptr which causes it to
110205 + call common_clock_set, which calls do_sys_settimeofday, which
110206 + we hook
110207 + */
110208 +
110209 return kc->clock_set(which_clock, &new_tp);
110210 }
110211
110212 diff --git a/kernel/time/time.c b/kernel/time/time.c
110213 index 85d5bb1..aeca463 100644
110214 --- a/kernel/time/time.c
110215 +++ b/kernel/time/time.c
110216 @@ -177,6 +177,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
110217 if (tz->tz_minuteswest > 15*60 || tz->tz_minuteswest < -15*60)
110218 return -EINVAL;
110219
110220 + /* we log in do_settimeofday called below, so don't log twice
110221 + */
110222 + if (!tv)
110223 + gr_log_timechange();
110224 +
110225 sys_tz = *tz;
110226 update_vsyscall_tz();
110227 if (firsttime) {
110228 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
110229 index bca3667..2745765 100644
110230 --- a/kernel/time/timekeeping.c
110231 +++ b/kernel/time/timekeeping.c
110232 @@ -15,6 +15,7 @@
110233 #include <linux/init.h>
110234 #include <linux/mm.h>
110235 #include <linux/sched.h>
110236 +#include <linux/grsecurity.h>
110237 #include <linux/syscore_ops.h>
110238 #include <linux/clocksource.h>
110239 #include <linux/jiffies.h>
110240 @@ -915,6 +916,8 @@ int do_settimeofday64(const struct timespec64 *ts)
110241 if (!timespec64_valid_strict(ts))
110242 return -EINVAL;
110243
110244 + gr_log_timechange();
110245 +
110246 raw_spin_lock_irqsave(&timekeeper_lock, flags);
110247 write_seqcount_begin(&tk_core.seq);
110248
110249 diff --git a/kernel/time/timer.c b/kernel/time/timer.c
110250 index 84190f0..5cd9067 100644
110251 --- a/kernel/time/timer.c
110252 +++ b/kernel/time/timer.c
110253 @@ -1406,7 +1406,7 @@ void update_process_times(int user_tick)
110254 /*
110255 * This function runs timers and the timer-tq in bottom half context.
110256 */
110257 -static void run_timer_softirq(struct softirq_action *h)
110258 +static __latent_entropy void run_timer_softirq(void)
110259 {
110260 struct tvec_base *base = this_cpu_ptr(&tvec_bases);
110261
110262 @@ -1467,7 +1467,7 @@ static void process_timeout(unsigned long __data)
110263 *
110264 * In all cases the return value is guaranteed to be non-negative.
110265 */
110266 -signed long __sched schedule_timeout(signed long timeout)
110267 +signed long __sched __intentional_overflow(-1) schedule_timeout(signed long timeout)
110268 {
110269 struct timer_list timer;
110270 unsigned long expire;
110271 diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
110272 index a4536e1..5d8774c 100644
110273 --- a/kernel/time/timer_list.c
110274 +++ b/kernel/time/timer_list.c
110275 @@ -50,12 +50,16 @@ static void SEQ_printf(struct seq_file *m, const char *fmt, ...)
110276
110277 static void print_name_offset(struct seq_file *m, void *sym)
110278 {
110279 +#ifdef CONFIG_GRKERNSEC_HIDESYM
110280 + SEQ_printf(m, "<%p>", NULL);
110281 +#else
110282 char symname[KSYM_NAME_LEN];
110283
110284 if (lookup_symbol_name((unsigned long)sym, symname) < 0)
110285 SEQ_printf(m, "<%pK>", sym);
110286 else
110287 SEQ_printf(m, "%s", symname);
110288 +#endif
110289 }
110290
110291 static void
110292 @@ -124,11 +128,14 @@ next_one:
110293 static void
110294 print_base(struct seq_file *m, struct hrtimer_clock_base *base, u64 now)
110295 {
110296 +#ifdef CONFIG_GRKERNSEC_HIDESYM
110297 + SEQ_printf(m, " .base: %p\n", NULL);
110298 +#else
110299 SEQ_printf(m, " .base: %pK\n", base);
110300 +#endif
110301 SEQ_printf(m, " .index: %d\n", base->index);
110302
110303 SEQ_printf(m, " .resolution: %u nsecs\n", (unsigned) hrtimer_resolution);
110304 -
110305 SEQ_printf(m, " .get_time: ");
110306 print_name_offset(m, base->get_time);
110307 SEQ_printf(m, "\n");
110308 @@ -399,7 +406,11 @@ static int __init init_timer_list_procfs(void)
110309 {
110310 struct proc_dir_entry *pe;
110311
110312 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
110313 + pe = proc_create("timer_list", 0400, NULL, &timer_list_fops);
110314 +#else
110315 pe = proc_create("timer_list", 0444, NULL, &timer_list_fops);
110316 +#endif
110317 if (!pe)
110318 return -ENOMEM;
110319 return 0;
110320 diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c
110321 index 1adecb4..b4fb631 100644
110322 --- a/kernel/time/timer_stats.c
110323 +++ b/kernel/time/timer_stats.c
110324 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
110325 static unsigned long nr_entries;
110326 static struct entry entries[MAX_ENTRIES];
110327
110328 -static atomic_t overflow_count;
110329 +static atomic_unchecked_t overflow_count;
110330
110331 /*
110332 * The entries are in a hash-table, for fast lookup:
110333 @@ -140,7 +140,7 @@ static void reset_entries(void)
110334 nr_entries = 0;
110335 memset(entries, 0, sizeof(entries));
110336 memset(tstat_hash_table, 0, sizeof(tstat_hash_table));
110337 - atomic_set(&overflow_count, 0);
110338 + atomic_set_unchecked(&overflow_count, 0);
110339 }
110340
110341 static struct entry *alloc_entry(void)
110342 @@ -261,7 +261,7 @@ void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
110343 if (likely(entry))
110344 entry->count++;
110345 else
110346 - atomic_inc(&overflow_count);
110347 + atomic_inc_unchecked(&overflow_count);
110348
110349 out_unlock:
110350 raw_spin_unlock_irqrestore(lock, flags);
110351 @@ -269,12 +269,16 @@ void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
110352
110353 static void print_name_offset(struct seq_file *m, unsigned long addr)
110354 {
110355 +#ifdef CONFIG_GRKERNSEC_HIDESYM
110356 + seq_printf(m, "<%p>", NULL);
110357 +#else
110358 char symname[KSYM_NAME_LEN];
110359
110360 if (lookup_symbol_name(addr, symname) < 0)
110361 - seq_printf(m, "<%p>", (void *)addr);
110362 + seq_printf(m, "<%pK>", (void *)addr);
110363 else
110364 seq_printf(m, "%s", symname);
110365 +#endif
110366 }
110367
110368 static int tstats_show(struct seq_file *m, void *v)
110369 @@ -300,8 +304,8 @@ static int tstats_show(struct seq_file *m, void *v)
110370
110371 seq_puts(m, "Timer Stats Version: v0.3\n");
110372 seq_printf(m, "Sample period: %ld.%03ld s\n", period.tv_sec, ms);
110373 - if (atomic_read(&overflow_count))
110374 - seq_printf(m, "Overflow: %d entries\n", atomic_read(&overflow_count));
110375 + if (atomic_read_unchecked(&overflow_count))
110376 + seq_printf(m, "Overflow: %d entries\n", atomic_read_unchecked(&overflow_count));
110377 seq_printf(m, "Collection: %s\n", timer_stats_active ? "active" : "inactive");
110378
110379 for (i = 0; i < nr_entries; i++) {
110380 @@ -417,7 +421,11 @@ static int __init init_tstats_procfs(void)
110381 {
110382 struct proc_dir_entry *pe;
110383
110384 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
110385 + pe = proc_create("timer_stats", 0600, NULL, &tstats_fops);
110386 +#else
110387 pe = proc_create("timer_stats", 0644, NULL, &tstats_fops);
110388 +#endif
110389 if (!pe)
110390 return -ENOMEM;
110391 return 0;
110392 diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
110393 index b3e6b39..719099b 100644
110394 --- a/kernel/trace/blktrace.c
110395 +++ b/kernel/trace/blktrace.c
110396 @@ -328,7 +328,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer,
110397 struct blk_trace *bt = filp->private_data;
110398 char buf[16];
110399
110400 - snprintf(buf, sizeof(buf), "%u\n", atomic_read(&bt->dropped));
110401 + snprintf(buf, sizeof(buf), "%u\n", atomic_read_unchecked(&bt->dropped));
110402
110403 return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
110404 }
110405 @@ -386,7 +386,7 @@ static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
110406 return 1;
110407
110408 bt = buf->chan->private_data;
110409 - atomic_inc(&bt->dropped);
110410 + atomic_inc_unchecked(&bt->dropped);
110411 return 0;
110412 }
110413
110414 @@ -485,7 +485,7 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
110415
110416 bt->dir = dir;
110417 bt->dev = dev;
110418 - atomic_set(&bt->dropped, 0);
110419 + atomic_set_unchecked(&bt->dropped, 0);
110420 INIT_LIST_HEAD(&bt->running_list);
110421
110422 ret = -EIO;
110423 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
110424 index eb11011..43adc29 100644
110425 --- a/kernel/trace/ftrace.c
110426 +++ b/kernel/trace/ftrace.c
110427 @@ -2413,12 +2413,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
110428 if (unlikely(ftrace_disabled))
110429 return 0;
110430
110431 + ret = ftrace_arch_code_modify_prepare();
110432 + FTRACE_WARN_ON(ret);
110433 + if (ret)
110434 + return 0;
110435 +
110436 ret = ftrace_make_nop(mod, rec, MCOUNT_ADDR);
110437 + FTRACE_WARN_ON(ftrace_arch_code_modify_post_process());
110438 if (ret) {
110439 ftrace_bug(ret, rec);
110440 - return 0;
110441 }
110442 - return 1;
110443 + return ret ? 0 : 1;
110444 }
110445
110446 /*
110447 @@ -4807,8 +4812,10 @@ static int ftrace_process_locs(struct module *mod,
110448 if (!count)
110449 return 0;
110450
110451 + pax_open_kernel();
110452 sort(start, count, sizeof(*start),
110453 ftrace_cmp_ips, ftrace_swap_ips);
110454 + pax_close_kernel();
110455
110456 start_pg = ftrace_allocate_pages(count);
110457 if (!start_pg)
110458 @@ -5675,7 +5682,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list)
110459
110460 if (t->ret_stack == NULL) {
110461 atomic_set(&t->tracing_graph_pause, 0);
110462 - atomic_set(&t->trace_overrun, 0);
110463 + atomic_set_unchecked(&t->trace_overrun, 0);
110464 t->curr_ret_stack = -1;
110465 /* Make sure the tasks see the -1 first: */
110466 smp_wmb();
110467 @@ -5898,7 +5905,7 @@ static void
110468 graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack)
110469 {
110470 atomic_set(&t->tracing_graph_pause, 0);
110471 - atomic_set(&t->trace_overrun, 0);
110472 + atomic_set_unchecked(&t->trace_overrun, 0);
110473 t->ftrace_timestamp = 0;
110474 /* make curr_ret_stack visible before we add the ret_stack */
110475 smp_wmb();
110476 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
110477 index 6260717..b9bd83c 100644
110478 --- a/kernel/trace/ring_buffer.c
110479 +++ b/kernel/trace/ring_buffer.c
110480 @@ -296,9 +296,9 @@ struct buffer_data_page {
110481 */
110482 struct buffer_page {
110483 struct list_head list; /* list of buffer pages */
110484 - local_t write; /* index for next write */
110485 + local_unchecked_t write; /* index for next write */
110486 unsigned read; /* index for next read */
110487 - local_t entries; /* entries on this page */
110488 + local_unchecked_t entries; /* entries on this page */
110489 unsigned long real_end; /* real end of data */
110490 struct buffer_data_page *page; /* Actual data page */
110491 };
110492 @@ -437,11 +437,11 @@ struct ring_buffer_per_cpu {
110493 unsigned long last_overrun;
110494 local_t entries_bytes;
110495 local_t entries;
110496 - local_t overrun;
110497 - local_t commit_overrun;
110498 - local_t dropped_events;
110499 + local_unchecked_t overrun;
110500 + local_unchecked_t commit_overrun;
110501 + local_unchecked_t dropped_events;
110502 local_t committing;
110503 - local_t commits;
110504 + local_unchecked_t commits;
110505 unsigned long read;
110506 unsigned long read_bytes;
110507 u64 write_stamp;
110508 @@ -1011,8 +1011,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
110509 *
110510 * We add a counter to the write field to denote this.
110511 */
110512 - old_write = local_add_return(RB_WRITE_INTCNT, &next_page->write);
110513 - old_entries = local_add_return(RB_WRITE_INTCNT, &next_page->entries);
110514 + old_write = local_add_return_unchecked(RB_WRITE_INTCNT, &next_page->write);
110515 + old_entries = local_add_return_unchecked(RB_WRITE_INTCNT, &next_page->entries);
110516
110517 /*
110518 * Just make sure we have seen our old_write and synchronize
110519 @@ -1040,8 +1040,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
110520 * cmpxchg to only update if an interrupt did not already
110521 * do it for us. If the cmpxchg fails, we don't care.
110522 */
110523 - (void)local_cmpxchg(&next_page->write, old_write, val);
110524 - (void)local_cmpxchg(&next_page->entries, old_entries, eval);
110525 + (void)local_cmpxchg_unchecked(&next_page->write, old_write, val);
110526 + (void)local_cmpxchg_unchecked(&next_page->entries, old_entries, eval);
110527
110528 /*
110529 * No need to worry about races with clearing out the commit.
110530 @@ -1409,12 +1409,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
110531
110532 static inline unsigned long rb_page_entries(struct buffer_page *bpage)
110533 {
110534 - return local_read(&bpage->entries) & RB_WRITE_MASK;
110535 + return local_read_unchecked(&bpage->entries) & RB_WRITE_MASK;
110536 }
110537
110538 static inline unsigned long rb_page_write(struct buffer_page *bpage)
110539 {
110540 - return local_read(&bpage->write) & RB_WRITE_MASK;
110541 + return local_read_unchecked(&bpage->write) & RB_WRITE_MASK;
110542 }
110543
110544 static int
110545 @@ -1509,7 +1509,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
110546 * bytes consumed in ring buffer from here.
110547 * Increment overrun to account for the lost events.
110548 */
110549 - local_add(page_entries, &cpu_buffer->overrun);
110550 + local_add_unchecked(page_entries, &cpu_buffer->overrun);
110551 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
110552 }
110553
110554 @@ -2071,7 +2071,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
110555 * it is our responsibility to update
110556 * the counters.
110557 */
110558 - local_add(entries, &cpu_buffer->overrun);
110559 + local_add_unchecked(entries, &cpu_buffer->overrun);
110560 local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
110561
110562 /*
110563 @@ -2221,7 +2221,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
110564 if (tail == BUF_PAGE_SIZE)
110565 tail_page->real_end = 0;
110566
110567 - local_sub(length, &tail_page->write);
110568 + local_sub_unchecked(length, &tail_page->write);
110569 return;
110570 }
110571
110572 @@ -2256,7 +2256,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
110573 rb_event_set_padding(event);
110574
110575 /* Set the write back to the previous setting */
110576 - local_sub(length, &tail_page->write);
110577 + local_sub_unchecked(length, &tail_page->write);
110578 return;
110579 }
110580
110581 @@ -2268,7 +2268,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
110582
110583 /* Set write to end of buffer */
110584 length = (tail + length) - BUF_PAGE_SIZE;
110585 - local_sub(length, &tail_page->write);
110586 + local_sub_unchecked(length, &tail_page->write);
110587 }
110588
110589 /*
110590 @@ -2294,7 +2294,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
110591 * about it.
110592 */
110593 if (unlikely(next_page == commit_page)) {
110594 - local_inc(&cpu_buffer->commit_overrun);
110595 + local_inc_unchecked(&cpu_buffer->commit_overrun);
110596 goto out_reset;
110597 }
110598
110599 @@ -2324,7 +2324,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
110600 * this is easy, just stop here.
110601 */
110602 if (!(buffer->flags & RB_FL_OVERWRITE)) {
110603 - local_inc(&cpu_buffer->dropped_events);
110604 + local_inc_unchecked(&cpu_buffer->dropped_events);
110605 goto out_reset;
110606 }
110607
110608 @@ -2350,7 +2350,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
110609 cpu_buffer->tail_page) &&
110610 (cpu_buffer->commit_page ==
110611 cpu_buffer->reader_page))) {
110612 - local_inc(&cpu_buffer->commit_overrun);
110613 + local_inc_unchecked(&cpu_buffer->commit_overrun);
110614 goto out_reset;
110615 }
110616 }
110617 @@ -2398,7 +2398,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
110618 length += RB_LEN_TIME_EXTEND;
110619
110620 tail_page = cpu_buffer->tail_page;
110621 - write = local_add_return(length, &tail_page->write);
110622 + write = local_add_return_unchecked(length, &tail_page->write);
110623
110624 /* set write to only the index of the write */
110625 write &= RB_WRITE_MASK;
110626 @@ -2422,7 +2422,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
110627 kmemcheck_annotate_bitfield(event, bitfield);
110628 rb_update_event(cpu_buffer, event, length, add_timestamp, delta);
110629
110630 - local_inc(&tail_page->entries);
110631 + local_inc_unchecked(&tail_page->entries);
110632
110633 /*
110634 * If this is the first commit on the page, then update
110635 @@ -2455,7 +2455,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
110636
110637 if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) {
110638 unsigned long write_mask =
110639 - local_read(&bpage->write) & ~RB_WRITE_MASK;
110640 + local_read_unchecked(&bpage->write) & ~RB_WRITE_MASK;
110641 unsigned long event_length = rb_event_length(event);
110642 /*
110643 * This is on the tail page. It is possible that
110644 @@ -2465,7 +2465,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
110645 */
110646 old_index += write_mask;
110647 new_index += write_mask;
110648 - index = local_cmpxchg(&bpage->write, old_index, new_index);
110649 + index = local_cmpxchg_unchecked(&bpage->write, old_index, new_index);
110650 if (index == old_index) {
110651 /* update counters */
110652 local_sub(event_length, &cpu_buffer->entries_bytes);
110653 @@ -2480,7 +2480,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
110654 static void rb_start_commit(struct ring_buffer_per_cpu *cpu_buffer)
110655 {
110656 local_inc(&cpu_buffer->committing);
110657 - local_inc(&cpu_buffer->commits);
110658 + local_inc_unchecked(&cpu_buffer->commits);
110659 }
110660
110661 static inline void rb_end_commit(struct ring_buffer_per_cpu *cpu_buffer)
110662 @@ -2492,7 +2492,7 @@ static inline void rb_end_commit(struct ring_buffer_per_cpu *cpu_buffer)
110663 return;
110664
110665 again:
110666 - commits = local_read(&cpu_buffer->commits);
110667 + commits = local_read_unchecked(&cpu_buffer->commits);
110668 /* synchronize with interrupts */
110669 barrier();
110670 if (local_read(&cpu_buffer->committing) == 1)
110671 @@ -2508,7 +2508,7 @@ static inline void rb_end_commit(struct ring_buffer_per_cpu *cpu_buffer)
110672 * updating of the commit page and the clearing of the
110673 * committing counter.
110674 */
110675 - if (unlikely(local_read(&cpu_buffer->commits) != commits) &&
110676 + if (unlikely(local_read_unchecked(&cpu_buffer->commits) != commits) &&
110677 !local_read(&cpu_buffer->committing)) {
110678 local_inc(&cpu_buffer->committing);
110679 goto again;
110680 @@ -2538,7 +2538,7 @@ rb_reserve_next_event(struct ring_buffer *buffer,
110681 barrier();
110682 if (unlikely(ACCESS_ONCE(cpu_buffer->buffer) != buffer)) {
110683 local_dec(&cpu_buffer->committing);
110684 - local_dec(&cpu_buffer->commits);
110685 + local_dec_unchecked(&cpu_buffer->commits);
110686 return NULL;
110687 }
110688 #endif
110689 @@ -2852,7 +2852,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
110690
110691 /* Do the likely case first */
110692 if (likely(bpage->page == (void *)addr)) {
110693 - local_dec(&bpage->entries);
110694 + local_dec_unchecked(&bpage->entries);
110695 return;
110696 }
110697
110698 @@ -2864,7 +2864,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
110699 start = bpage;
110700 do {
110701 if (bpage->page == (void *)addr) {
110702 - local_dec(&bpage->entries);
110703 + local_dec_unchecked(&bpage->entries);
110704 return;
110705 }
110706 rb_inc_page(cpu_buffer, &bpage);
110707 @@ -3152,7 +3152,7 @@ static inline unsigned long
110708 rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer)
110709 {
110710 return local_read(&cpu_buffer->entries) -
110711 - (local_read(&cpu_buffer->overrun) + cpu_buffer->read);
110712 + (local_read_unchecked(&cpu_buffer->overrun) + cpu_buffer->read);
110713 }
110714
110715 /**
110716 @@ -3241,7 +3241,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
110717 return 0;
110718
110719 cpu_buffer = buffer->buffers[cpu];
110720 - ret = local_read(&cpu_buffer->overrun);
110721 + ret = local_read_unchecked(&cpu_buffer->overrun);
110722
110723 return ret;
110724 }
110725 @@ -3264,7 +3264,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
110726 return 0;
110727
110728 cpu_buffer = buffer->buffers[cpu];
110729 - ret = local_read(&cpu_buffer->commit_overrun);
110730 + ret = local_read_unchecked(&cpu_buffer->commit_overrun);
110731
110732 return ret;
110733 }
110734 @@ -3286,7 +3286,7 @@ ring_buffer_dropped_events_cpu(struct ring_buffer *buffer, int cpu)
110735 return 0;
110736
110737 cpu_buffer = buffer->buffers[cpu];
110738 - ret = local_read(&cpu_buffer->dropped_events);
110739 + ret = local_read_unchecked(&cpu_buffer->dropped_events);
110740
110741 return ret;
110742 }
110743 @@ -3349,7 +3349,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
110744 /* if you care about this being correct, lock the buffer */
110745 for_each_buffer_cpu(buffer, cpu) {
110746 cpu_buffer = buffer->buffers[cpu];
110747 - overruns += local_read(&cpu_buffer->overrun);
110748 + overruns += local_read_unchecked(&cpu_buffer->overrun);
110749 }
110750
110751 return overruns;
110752 @@ -3520,8 +3520,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
110753 /*
110754 * Reset the reader page to size zero.
110755 */
110756 - local_set(&cpu_buffer->reader_page->write, 0);
110757 - local_set(&cpu_buffer->reader_page->entries, 0);
110758 + local_set_unchecked(&cpu_buffer->reader_page->write, 0);
110759 + local_set_unchecked(&cpu_buffer->reader_page->entries, 0);
110760 local_set(&cpu_buffer->reader_page->page->commit, 0);
110761 cpu_buffer->reader_page->real_end = 0;
110762
110763 @@ -3555,7 +3555,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
110764 * want to compare with the last_overrun.
110765 */
110766 smp_mb();
110767 - overwrite = local_read(&(cpu_buffer->overrun));
110768 + overwrite = local_read_unchecked(&(cpu_buffer->overrun));
110769
110770 /*
110771 * Here's the tricky part.
110772 @@ -4137,8 +4137,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
110773
110774 cpu_buffer->head_page
110775 = list_entry(cpu_buffer->pages, struct buffer_page, list);
110776 - local_set(&cpu_buffer->head_page->write, 0);
110777 - local_set(&cpu_buffer->head_page->entries, 0);
110778 + local_set_unchecked(&cpu_buffer->head_page->write, 0);
110779 + local_set_unchecked(&cpu_buffer->head_page->entries, 0);
110780 local_set(&cpu_buffer->head_page->page->commit, 0);
110781
110782 cpu_buffer->head_page->read = 0;
110783 @@ -4148,18 +4148,18 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
110784
110785 INIT_LIST_HEAD(&cpu_buffer->reader_page->list);
110786 INIT_LIST_HEAD(&cpu_buffer->new_pages);
110787 - local_set(&cpu_buffer->reader_page->write, 0);
110788 - local_set(&cpu_buffer->reader_page->entries, 0);
110789 + local_set_unchecked(&cpu_buffer->reader_page->write, 0);
110790 + local_set_unchecked(&cpu_buffer->reader_page->entries, 0);
110791 local_set(&cpu_buffer->reader_page->page->commit, 0);
110792 cpu_buffer->reader_page->read = 0;
110793
110794 local_set(&cpu_buffer->entries_bytes, 0);
110795 - local_set(&cpu_buffer->overrun, 0);
110796 - local_set(&cpu_buffer->commit_overrun, 0);
110797 - local_set(&cpu_buffer->dropped_events, 0);
110798 + local_set_unchecked(&cpu_buffer->overrun, 0);
110799 + local_set_unchecked(&cpu_buffer->commit_overrun, 0);
110800 + local_set_unchecked(&cpu_buffer->dropped_events, 0);
110801 local_set(&cpu_buffer->entries, 0);
110802 local_set(&cpu_buffer->committing, 0);
110803 - local_set(&cpu_buffer->commits, 0);
110804 + local_set_unchecked(&cpu_buffer->commits, 0);
110805 cpu_buffer->read = 0;
110806 cpu_buffer->read_bytes = 0;
110807
110808 @@ -4549,8 +4549,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
110809 rb_init_page(bpage);
110810 bpage = reader->page;
110811 reader->page = *data_page;
110812 - local_set(&reader->write, 0);
110813 - local_set(&reader->entries, 0);
110814 + local_set_unchecked(&reader->write, 0);
110815 + local_set_unchecked(&reader->entries, 0);
110816 reader->read = 0;
110817 *data_page = bpage;
110818
110819 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
110820 index abcbf7f..ef8b6fe 100644
110821 --- a/kernel/trace/trace.c
110822 +++ b/kernel/trace/trace.c
110823 @@ -3539,7 +3539,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
110824 return 0;
110825 }
110826
110827 -int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled)
110828 +int set_tracer_flag(struct trace_array *tr, unsigned long mask, int enabled)
110829 {
110830 /* do nothing if flag is already set */
110831 if (!!(trace_flags & mask) == !!enabled)
110832 diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
110833 index 74bde81..f9abfd4 100644
110834 --- a/kernel/trace/trace.h
110835 +++ b/kernel/trace/trace.h
110836 @@ -1272,7 +1272,7 @@ extern const char *__stop___tracepoint_str[];
110837 void trace_printk_init_buffers(void);
110838 void trace_printk_start_comm(void);
110839 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);
110840 -int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled);
110841 +int set_tracer_flag(struct trace_array *tr, unsigned long mask, int enabled);
110842
110843 /*
110844 * Normal trace_printk() and friends allocates special buffers
110845 diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c
110846 index 0f06532..247c8e7 100644
110847 --- a/kernel/trace/trace_clock.c
110848 +++ b/kernel/trace/trace_clock.c
110849 @@ -127,7 +127,7 @@ u64 notrace trace_clock_global(void)
110850 }
110851 EXPORT_SYMBOL_GPL(trace_clock_global);
110852
110853 -static atomic64_t trace_counter;
110854 +static atomic64_unchecked_t trace_counter;
110855
110856 /*
110857 * trace_clock_counter(): simply an atomic counter.
110858 @@ -136,5 +136,5 @@ static atomic64_t trace_counter;
110859 */
110860 u64 notrace trace_clock_counter(void)
110861 {
110862 - return atomic64_add_return(1, &trace_counter);
110863 + return atomic64_inc_return_unchecked(&trace_counter);
110864 }
110865 diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
110866 index 404a372..d9e5547 100644
110867 --- a/kernel/trace/trace_events.c
110868 +++ b/kernel/trace/trace_events.c
110869 @@ -1887,7 +1887,6 @@ __trace_early_add_new_event(struct trace_event_call *call,
110870 return 0;
110871 }
110872
110873 -struct ftrace_module_file_ops;
110874 static void __add_event_to_tracers(struct trace_event_call *call);
110875
110876 /* Add an additional event_call dynamically */
110877 diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
110878 index 8968bf7..e6623fc 100644
110879 --- a/kernel/trace/trace_functions_graph.c
110880 +++ b/kernel/trace/trace_functions_graph.c
110881 @@ -132,7 +132,7 @@ ftrace_push_return_trace(unsigned long ret, unsigned long func, int *depth,
110882
110883 /* The return trace stack is full */
110884 if (current->curr_ret_stack == FTRACE_RETFUNC_DEPTH - 1) {
110885 - atomic_inc(&current->trace_overrun);
110886 + atomic_inc_unchecked(&current->trace_overrun);
110887 return -EBUSY;
110888 }
110889
110890 @@ -229,7 +229,7 @@ ftrace_pop_return_trace(struct ftrace_graph_ret *trace, unsigned long *ret,
110891 *ret = current->ret_stack[index].ret;
110892 trace->func = current->ret_stack[index].func;
110893 trace->calltime = current->ret_stack[index].calltime;
110894 - trace->overrun = atomic_read(&current->trace_overrun);
110895 + trace->overrun = atomic_read_unchecked(&current->trace_overrun);
110896 trace->depth = index;
110897 }
110898
110899 diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c
110900 index 638e110..99b73b2 100644
110901 --- a/kernel/trace/trace_mmiotrace.c
110902 +++ b/kernel/trace/trace_mmiotrace.c
110903 @@ -24,7 +24,7 @@ struct header_iter {
110904 static struct trace_array *mmio_trace_array;
110905 static bool overrun_detected;
110906 static unsigned long prev_overruns;
110907 -static atomic_t dropped_count;
110908 +static atomic_unchecked_t dropped_count;
110909
110910 static void mmio_reset_data(struct trace_array *tr)
110911 {
110912 @@ -124,7 +124,7 @@ static void mmio_close(struct trace_iterator *iter)
110913
110914 static unsigned long count_overruns(struct trace_iterator *iter)
110915 {
110916 - unsigned long cnt = atomic_xchg(&dropped_count, 0);
110917 + unsigned long cnt = atomic_xchg_unchecked(&dropped_count, 0);
110918 unsigned long over = ring_buffer_overruns(iter->trace_buffer->buffer);
110919
110920 if (over > prev_overruns)
110921 @@ -307,7 +307,7 @@ static void __trace_mmiotrace_rw(struct trace_array *tr,
110922 event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_RW,
110923 sizeof(*entry), 0, pc);
110924 if (!event) {
110925 - atomic_inc(&dropped_count);
110926 + atomic_inc_unchecked(&dropped_count);
110927 return;
110928 }
110929 entry = ring_buffer_event_data(event);
110930 @@ -337,7 +337,7 @@ static void __trace_mmiotrace_map(struct trace_array *tr,
110931 event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_MAP,
110932 sizeof(*entry), 0, pc);
110933 if (!event) {
110934 - atomic_inc(&dropped_count);
110935 + atomic_inc_unchecked(&dropped_count);
110936 return;
110937 }
110938 entry = ring_buffer_event_data(event);
110939 diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
110940 index dfab253..8e9b477 100644
110941 --- a/kernel/trace/trace_output.c
110942 +++ b/kernel/trace/trace_output.c
110943 @@ -752,14 +752,16 @@ int register_trace_event(struct trace_event *event)
110944 goto out;
110945 }
110946
110947 + pax_open_kernel();
110948 if (event->funcs->trace == NULL)
110949 - event->funcs->trace = trace_nop_print;
110950 + *(void **)&event->funcs->trace = trace_nop_print;
110951 if (event->funcs->raw == NULL)
110952 - event->funcs->raw = trace_nop_print;
110953 + *(void **)&event->funcs->raw = trace_nop_print;
110954 if (event->funcs->hex == NULL)
110955 - event->funcs->hex = trace_nop_print;
110956 + *(void **)&event->funcs->hex = trace_nop_print;
110957 if (event->funcs->binary == NULL)
110958 - event->funcs->binary = trace_nop_print;
110959 + *(void **)&event->funcs->binary = trace_nop_print;
110960 + pax_close_kernel();
110961
110962 key = event->type & (EVENT_HASHSIZE - 1);
110963
110964 diff --git a/kernel/trace/trace_seq.c b/kernel/trace/trace_seq.c
110965 index e694c9f..6775a38 100644
110966 --- a/kernel/trace/trace_seq.c
110967 +++ b/kernel/trace/trace_seq.c
110968 @@ -337,7 +337,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path)
110969 return 0;
110970 }
110971
110972 - seq_buf_path(&s->seq, path, "\n");
110973 + seq_buf_path(&s->seq, path, "\n\\");
110974
110975 if (unlikely(seq_buf_has_overflowed(&s->seq))) {
110976 s->seq.len = save_len;
110977 diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
110978 index 3f34496..0492d95 100644
110979 --- a/kernel/trace/trace_stack.c
110980 +++ b/kernel/trace/trace_stack.c
110981 @@ -88,7 +88,7 @@ check_stack(unsigned long ip, unsigned long *stack)
110982 return;
110983
110984 /* we do not handle interrupt stacks yet */
110985 - if (!object_is_on_stack(stack))
110986 + if (!object_starts_on_stack(stack))
110987 return;
110988
110989 local_irq_save(flags);
110990 diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
110991 index 7d567a4..407a28d 100644
110992 --- a/kernel/trace/trace_syscalls.c
110993 +++ b/kernel/trace/trace_syscalls.c
110994 @@ -590,6 +590,8 @@ static int perf_sysenter_enable(struct trace_event_call *call)
110995 int num;
110996
110997 num = ((struct syscall_metadata *)call->data)->syscall_nr;
110998 + if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
110999 + return -EINVAL;
111000
111001 mutex_lock(&syscall_trace_lock);
111002 if (!sys_perf_refcount_enter)
111003 @@ -610,6 +612,8 @@ static void perf_sysenter_disable(struct trace_event_call *call)
111004 int num;
111005
111006 num = ((struct syscall_metadata *)call->data)->syscall_nr;
111007 + if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
111008 + return;
111009
111010 mutex_lock(&syscall_trace_lock);
111011 sys_perf_refcount_enter--;
111012 @@ -662,6 +666,8 @@ static int perf_sysexit_enable(struct trace_event_call *call)
111013 int num;
111014
111015 num = ((struct syscall_metadata *)call->data)->syscall_nr;
111016 + if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
111017 + return -EINVAL;
111018
111019 mutex_lock(&syscall_trace_lock);
111020 if (!sys_perf_refcount_exit)
111021 @@ -682,6 +688,8 @@ static void perf_sysexit_disable(struct trace_event_call *call)
111022 int num;
111023
111024 num = ((struct syscall_metadata *)call->data)->syscall_nr;
111025 + if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
111026 + return;
111027
111028 mutex_lock(&syscall_trace_lock);
111029 sys_perf_refcount_exit--;
111030 diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
111031 index 4109f83..fe1f830 100644
111032 --- a/kernel/user_namespace.c
111033 +++ b/kernel/user_namespace.c
111034 @@ -83,6 +83,21 @@ int create_user_ns(struct cred *new)
111035 !kgid_has_mapping(parent_ns, group))
111036 return -EPERM;
111037
111038 +#ifdef CONFIG_GRKERNSEC
111039 + /*
111040 + * This doesn't really inspire confidence:
111041 + * http://marc.info/?l=linux-kernel&m=135543612731939&w=2
111042 + * http://marc.info/?l=linux-kernel&m=135545831607095&w=2
111043 + * Increases kernel attack surface in areas developers
111044 + * previously cared little about ("low importance due
111045 + * to requiring "root" capability")
111046 + * To be removed when this code receives *proper* review
111047 + */
111048 + if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SETUID) ||
111049 + !capable(CAP_SETGID))
111050 + return -EPERM;
111051 +#endif
111052 +
111053 ns = kmem_cache_zalloc(user_ns_cachep, GFP_KERNEL);
111054 if (!ns)
111055 return -ENOMEM;
111056 @@ -980,7 +995,7 @@ static int userns_install(struct nsproxy *nsproxy, struct ns_common *ns)
111057 if (atomic_read(&current->mm->mm_users) > 1)
111058 return -EINVAL;
111059
111060 - if (current->fs->users != 1)
111061 + if (atomic_read(&current->fs->users) != 1)
111062 return -EINVAL;
111063
111064 if (!ns_capable(user_ns, CAP_SYS_ADMIN))
111065 diff --git a/kernel/utsname_sysctl.c b/kernel/utsname_sysctl.c
111066 index c8eac43..4b5f08f 100644
111067 --- a/kernel/utsname_sysctl.c
111068 +++ b/kernel/utsname_sysctl.c
111069 @@ -47,7 +47,7 @@ static void put_uts(struct ctl_table *table, int write, void *which)
111070 static int proc_do_uts_string(struct ctl_table *table, int write,
111071 void __user *buffer, size_t *lenp, loff_t *ppos)
111072 {
111073 - struct ctl_table uts_table;
111074 + ctl_table_no_const uts_table;
111075 int r;
111076 memcpy(&uts_table, table, sizeof(uts_table));
111077 uts_table.data = get_uts(table, write);
111078 diff --git a/kernel/watchdog.c b/kernel/watchdog.c
111079 index a6ffa43..e48103b 100644
111080 --- a/kernel/watchdog.c
111081 +++ b/kernel/watchdog.c
111082 @@ -655,7 +655,7 @@ void watchdog_nmi_enable_all(void) {}
111083 void watchdog_nmi_disable_all(void) {}
111084 #endif /* CONFIG_HARDLOCKUP_DETECTOR */
111085
111086 -static struct smp_hotplug_thread watchdog_threads = {
111087 +static struct smp_hotplug_thread watchdog_threads __read_only = {
111088 .store = &softlockup_watchdog,
111089 .thread_should_run = watchdog_should_run,
111090 .thread_fn = watchdog,
111091 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
111092 index a413acb..9c3d36a 100644
111093 --- a/kernel/workqueue.c
111094 +++ b/kernel/workqueue.c
111095 @@ -4452,7 +4452,7 @@ static void rebind_workers(struct worker_pool *pool)
111096 WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND));
111097 worker_flags |= WORKER_REBOUND;
111098 worker_flags &= ~WORKER_UNBOUND;
111099 - ACCESS_ONCE(worker->flags) = worker_flags;
111100 + ACCESS_ONCE_RW(worker->flags) = worker_flags;
111101 }
111102
111103 spin_unlock_irq(&pool->lock);
111104 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
111105 index e2894b2..e841553 100644
111106 --- a/lib/Kconfig.debug
111107 +++ b/lib/Kconfig.debug
111108 @@ -941,7 +941,7 @@ config DEBUG_MUTEXES
111109
111110 config DEBUG_WW_MUTEX_SLOWPATH
111111 bool "Wait/wound mutex debugging: Slowpath testing"
111112 - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
111113 + depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !PAX_CONSTIFY_PLUGIN
111114 select DEBUG_LOCK_ALLOC
111115 select DEBUG_SPINLOCK
111116 select DEBUG_MUTEXES
111117 @@ -958,7 +958,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
111118
111119 config DEBUG_LOCK_ALLOC
111120 bool "Lock debugging: detect incorrect freeing of live locks"
111121 - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
111122 + depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !PAX_CONSTIFY_PLUGIN
111123 select DEBUG_SPINLOCK
111124 select DEBUG_MUTEXES
111125 select LOCKDEP
111126 @@ -972,7 +972,7 @@ config DEBUG_LOCK_ALLOC
111127
111128 config PROVE_LOCKING
111129 bool "Lock debugging: prove locking correctness"
111130 - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
111131 + depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !PAX_CONSTIFY_PLUGIN
111132 select LOCKDEP
111133 select DEBUG_SPINLOCK
111134 select DEBUG_MUTEXES
111135 @@ -1023,7 +1023,7 @@ config LOCKDEP
111136
111137 config LOCK_STAT
111138 bool "Lock usage statistics"
111139 - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
111140 + depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !PAX_CONSTIFY_PLUGIN
111141 select LOCKDEP
111142 select DEBUG_SPINLOCK
111143 select DEBUG_MUTEXES
111144 @@ -1563,6 +1563,7 @@ config LATENCYTOP
111145 depends on DEBUG_KERNEL
111146 depends on STACKTRACE_SUPPORT
111147 depends on PROC_FS
111148 + depends on !GRKERNSEC_HIDESYM
111149 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
111150 select KALLSYMS
111151 select KALLSYMS_ALL
111152 @@ -1579,7 +1580,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
111153 config DEBUG_STRICT_USER_COPY_CHECKS
111154 bool "Strict user copy size checks"
111155 depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
111156 - depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
111157 + depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING && !PAX_SIZE_OVERFLOW
111158 help
111159 Enabling this option turns a certain set of sanity checks for user
111160 copy operations into compile time failures.
111161 @@ -1710,7 +1711,7 @@ endmenu # runtime tests
111162
111163 config PROVIDE_OHCI1394_DMA_INIT
111164 bool "Remote debugging over FireWire early on boot"
111165 - depends on PCI && X86
111166 + depends on PCI && X86 && !GRKERNSEC
111167 help
111168 If you want to debug problems which hang or crash the kernel early
111169 on boot and the crashing machine has a FireWire port, you can use
111170 diff --git a/lib/Makefile b/lib/Makefile
111171 index 6897b52..466bda9 100644
111172 --- a/lib/Makefile
111173 +++ b/lib/Makefile
111174 @@ -62,7 +62,7 @@ obj-$(CONFIG_BTREE) += btree.o
111175 obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o
111176 obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
111177 obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
111178 -obj-$(CONFIG_DEBUG_LIST) += list_debug.o
111179 +obj-y += list_debug.o
111180 obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o
111181
111182 ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
111183 diff --git a/lib/average.c b/lib/average.c
111184 index 114d1be..ab0350c 100644
111185 --- a/lib/average.c
111186 +++ b/lib/average.c
111187 @@ -55,7 +55,7 @@ struct ewma *ewma_add(struct ewma *avg, unsigned long val)
111188 {
111189 unsigned long internal = ACCESS_ONCE(avg->internal);
111190
111191 - ACCESS_ONCE(avg->internal) = internal ?
111192 + ACCESS_ONCE_RW(avg->internal) = internal ?
111193 (((internal << avg->weight) - internal) +
111194 (val << avg->factor)) >> avg->weight :
111195 (val << avg->factor);
111196 diff --git a/lib/bitmap.c b/lib/bitmap.c
111197 index a578a01..7d4dcfd 100644
111198 --- a/lib/bitmap.c
111199 +++ b/lib/bitmap.c
111200 @@ -234,7 +234,7 @@ int __bitmap_subset(const unsigned long *bitmap1,
111201 }
111202 EXPORT_SYMBOL(__bitmap_subset);
111203
111204 -int __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
111205 +int __intentional_overflow(-1) __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
111206 {
111207 unsigned int k, lim = bits/BITS_PER_LONG;
111208 int w = 0;
111209 @@ -361,7 +361,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
111210 {
111211 int c, old_c, totaldigits, ndigits, nchunks, nbits;
111212 u32 chunk;
111213 - const char __user __force *ubuf = (const char __user __force *)buf;
111214 + const char __user *ubuf = (const char __force_user *)buf;
111215
111216 bitmap_zero(maskp, nmaskbits);
111217
111218 @@ -446,7 +446,7 @@ int bitmap_parse_user(const char __user *ubuf,
111219 {
111220 if (!access_ok(VERIFY_READ, ubuf, ulen))
111221 return -EFAULT;
111222 - return __bitmap_parse((const char __force *)ubuf,
111223 + return __bitmap_parse((const char __force_kernel *)ubuf,
111224 ulen, 1, maskp, nmaskbits);
111225
111226 }
111227 @@ -506,7 +506,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
111228 {
111229 unsigned a, b;
111230 int c, old_c, totaldigits;
111231 - const char __user __force *ubuf = (const char __user __force *)buf;
111232 + const char __user *ubuf = (const char __force_user *)buf;
111233 int at_start, in_range;
111234
111235 totaldigits = c = 0;
111236 @@ -602,7 +602,7 @@ int bitmap_parselist_user(const char __user *ubuf,
111237 {
111238 if (!access_ok(VERIFY_READ, ubuf, ulen))
111239 return -EFAULT;
111240 - return __bitmap_parselist((const char __force *)ubuf,
111241 + return __bitmap_parselist((const char __force_kernel *)ubuf,
111242 ulen, 1, maskp, nmaskbits);
111243 }
111244 EXPORT_SYMBOL(bitmap_parselist_user);
111245 diff --git a/lib/bug.c b/lib/bug.c
111246 index cff145f..724a0b8 100644
111247 --- a/lib/bug.c
111248 +++ b/lib/bug.c
111249 @@ -148,6 +148,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
111250 return BUG_TRAP_TYPE_NONE;
111251
111252 bug = find_bug(bugaddr);
111253 + if (!bug)
111254 + return BUG_TRAP_TYPE_NONE;
111255
111256 file = NULL;
111257 line = 0;
111258 diff --git a/lib/debugobjects.c b/lib/debugobjects.c
111259 index 547f7f9..a6d4ba0 100644
111260 --- a/lib/debugobjects.c
111261 +++ b/lib/debugobjects.c
111262 @@ -289,7 +289,7 @@ static void debug_object_is_on_stack(void *addr, int onstack)
111263 if (limit > 4)
111264 return;
111265
111266 - is_on_stack = object_is_on_stack(addr);
111267 + is_on_stack = object_starts_on_stack(addr);
111268 if (is_on_stack == onstack)
111269 return;
111270
111271 diff --git a/lib/decompress_bunzip2.c b/lib/decompress_bunzip2.c
111272 index 0234361..41a411c 100644
111273 --- a/lib/decompress_bunzip2.c
111274 +++ b/lib/decompress_bunzip2.c
111275 @@ -665,7 +665,8 @@ static int INIT start_bunzip(struct bunzip_data **bdp, void *inbuf, long len,
111276
111277 /* Fourth byte (ascii '1'-'9'), indicates block size in units of 100k of
111278 uncompressed data. Allocate intermediate buffer for block. */
111279 - bd->dbufSize = 100000*(i-BZh0);
111280 + i -= BZh0;
111281 + bd->dbufSize = 100000 * i;
111282
111283 bd->dbuf = large_malloc(bd->dbufSize * sizeof(int));
111284 if (!bd->dbuf)
111285 diff --git a/lib/decompress_unlzma.c b/lib/decompress_unlzma.c
111286 index decb646..8d6441a 100644
111287 --- a/lib/decompress_unlzma.c
111288 +++ b/lib/decompress_unlzma.c
111289 @@ -39,10 +39,10 @@
111290
111291 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
111292
111293 -static long long INIT read_int(unsigned char *ptr, int size)
111294 +static unsigned long long INIT read_int(unsigned char *ptr, int size)
111295 {
111296 int i;
111297 - long long ret = 0;
111298 + unsigned long long ret = 0;
111299
111300 for (i = 0; i < size; i++)
111301 ret = (ret << 8) | ptr[size-i-1];
111302 diff --git a/lib/div64.c b/lib/div64.c
111303 index 19ea7ed..20cac21 100644
111304 --- a/lib/div64.c
111305 +++ b/lib/div64.c
111306 @@ -59,7 +59,7 @@ uint32_t __attribute__((weak)) __div64_32(uint64_t *n, uint32_t base)
111307 EXPORT_SYMBOL(__div64_32);
111308
111309 #ifndef div_s64_rem
111310 -s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder)
111311 +s64 __intentional_overflow(-1) div_s64_rem(s64 dividend, s32 divisor, s32 *remainder)
111312 {
111313 u64 quotient;
111314
111315 @@ -130,7 +130,7 @@ EXPORT_SYMBOL(div64_u64_rem);
111316 * 'http://www.hackersdelight.org/hdcodetxt/divDouble.c.txt'
111317 */
111318 #ifndef div64_u64
111319 -u64 div64_u64(u64 dividend, u64 divisor)
111320 +u64 __intentional_overflow(-1) div64_u64(u64 dividend, u64 divisor)
111321 {
111322 u32 high = divisor >> 32;
111323 u64 quot;
111324 diff --git a/lib/dma-debug.c b/lib/dma-debug.c
111325 index dace71f..13da37b 100644
111326 --- a/lib/dma-debug.c
111327 +++ b/lib/dma-debug.c
111328 @@ -982,7 +982,7 @@ static int dma_debug_device_change(struct notifier_block *nb, unsigned long acti
111329
111330 void dma_debug_add_bus(struct bus_type *bus)
111331 {
111332 - struct notifier_block *nb;
111333 + notifier_block_no_const *nb;
111334
111335 if (dma_debug_disabled())
111336 return;
111337 @@ -1164,7 +1164,7 @@ static void check_unmap(struct dma_debug_entry *ref)
111338
111339 static void check_for_stack(struct device *dev, void *addr)
111340 {
111341 - if (object_is_on_stack(addr))
111342 + if (object_starts_on_stack(addr))
111343 err_printk(dev, NULL, "DMA-API: device driver maps memory from "
111344 "stack [addr=%p]\n", addr);
111345 }
111346 diff --git a/lib/inflate.c b/lib/inflate.c
111347 index 013a761..c28f3fc 100644
111348 --- a/lib/inflate.c
111349 +++ b/lib/inflate.c
111350 @@ -269,7 +269,7 @@ static void free(void *where)
111351 malloc_ptr = free_mem_ptr;
111352 }
111353 #else
111354 -#define malloc(a) kmalloc(a, GFP_KERNEL)
111355 +#define malloc(a) kmalloc((a), GFP_KERNEL)
111356 #define free(a) kfree(a)
111357 #endif
111358
111359 diff --git a/lib/ioremap.c b/lib/ioremap.c
111360 index 86c8911..f5bfc34 100644
111361 --- a/lib/ioremap.c
111362 +++ b/lib/ioremap.c
111363 @@ -75,7 +75,7 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr,
111364 unsigned long next;
111365
111366 phys_addr -= addr;
111367 - pmd = pmd_alloc(&init_mm, pud, addr);
111368 + pmd = pmd_alloc_kernel(&init_mm, pud, addr);
111369 if (!pmd)
111370 return -ENOMEM;
111371 do {
111372 @@ -101,7 +101,7 @@ static inline int ioremap_pud_range(pgd_t *pgd, unsigned long addr,
111373 unsigned long next;
111374
111375 phys_addr -= addr;
111376 - pud = pud_alloc(&init_mm, pgd, addr);
111377 + pud = pud_alloc_kernel(&init_mm, pgd, addr);
111378 if (!pud)
111379 return -ENOMEM;
111380 do {
111381 diff --git a/lib/is_single_threaded.c b/lib/is_single_threaded.c
111382 index bd2bea9..6b3c95e 100644
111383 --- a/lib/is_single_threaded.c
111384 +++ b/lib/is_single_threaded.c
111385 @@ -22,6 +22,9 @@ bool current_is_single_threaded(void)
111386 struct task_struct *p, *t;
111387 bool ret;
111388
111389 + if (!mm)
111390 + return true;
111391 +
111392 if (atomic_read(&task->signal->live) != 1)
111393 return false;
111394
111395 diff --git a/lib/kobject.c b/lib/kobject.c
111396 index 3e3a5c3..4a12109 100644
111397 --- a/lib/kobject.c
111398 +++ b/lib/kobject.c
111399 @@ -935,9 +935,9 @@ EXPORT_SYMBOL_GPL(kset_create_and_add);
111400
111401
111402 static DEFINE_SPINLOCK(kobj_ns_type_lock);
111403 -static const struct kobj_ns_type_operations *kobj_ns_ops_tbl[KOBJ_NS_TYPES];
111404 +static const struct kobj_ns_type_operations *kobj_ns_ops_tbl[KOBJ_NS_TYPES] __read_only;
111405
111406 -int kobj_ns_type_register(const struct kobj_ns_type_operations *ops)
111407 +int __init kobj_ns_type_register(const struct kobj_ns_type_operations *ops)
111408 {
111409 enum kobj_ns_type type = ops->type;
111410 int error;
111411 diff --git a/lib/list_debug.c b/lib/list_debug.c
111412 index c24c2f7..f0296f4 100644
111413 --- a/lib/list_debug.c
111414 +++ b/lib/list_debug.c
111415 @@ -11,7 +11,9 @@
111416 #include <linux/bug.h>
111417 #include <linux/kernel.h>
111418 #include <linux/rculist.h>
111419 +#include <linux/mm.h>
111420
111421 +#ifdef CONFIG_DEBUG_LIST
111422 /*
111423 * Insert a new entry between two known consecutive entries.
111424 *
111425 @@ -19,21 +21,40 @@
111426 * the prev/next entries already!
111427 */
111428
111429 +static bool __list_add_debug(struct list_head *new,
111430 + struct list_head *prev,
111431 + struct list_head *next)
111432 +{
111433 + if (unlikely(next->prev != prev)) {
111434 + printk(KERN_ERR "list_add corruption. next->prev should be "
111435 + "prev (%p), but was %p. (next=%p).\n",
111436 + prev, next->prev, next);
111437 + BUG();
111438 + return false;
111439 + }
111440 + if (unlikely(prev->next != next)) {
111441 + printk(KERN_ERR "list_add corruption. prev->next should be "
111442 + "next (%p), but was %p. (prev=%p).\n",
111443 + next, prev->next, prev);
111444 + BUG();
111445 + return false;
111446 + }
111447 + if (unlikely(new == prev || new == next)) {
111448 + printk(KERN_ERR "list_add double add: new=%p, prev=%p, next=%p.\n",
111449 + new, prev, next);
111450 + BUG();
111451 + return false;
111452 + }
111453 + return true;
111454 +}
111455 +
111456 void __list_add(struct list_head *new,
111457 - struct list_head *prev,
111458 - struct list_head *next)
111459 + struct list_head *prev,
111460 + struct list_head *next)
111461 {
111462 - WARN(next->prev != prev,
111463 - "list_add corruption. next->prev should be "
111464 - "prev (%p), but was %p. (next=%p).\n",
111465 - prev, next->prev, next);
111466 - WARN(prev->next != next,
111467 - "list_add corruption. prev->next should be "
111468 - "next (%p), but was %p. (prev=%p).\n",
111469 - next, prev->next, prev);
111470 - WARN(new == prev || new == next,
111471 - "list_add double add: new=%p, prev=%p, next=%p.\n",
111472 - new, prev, next);
111473 + if (!__list_add_debug(new, prev, next))
111474 + return;
111475 +
111476 next->prev = new;
111477 new->next = next;
111478 new->prev = prev;
111479 @@ -41,28 +62,46 @@ void __list_add(struct list_head *new,
111480 }
111481 EXPORT_SYMBOL(__list_add);
111482
111483 -void __list_del_entry(struct list_head *entry)
111484 +static bool __list_del_entry_debug(struct list_head *entry)
111485 {
111486 struct list_head *prev, *next;
111487
111488 prev = entry->prev;
111489 next = entry->next;
111490
111491 - if (WARN(next == LIST_POISON1,
111492 - "list_del corruption, %p->next is LIST_POISON1 (%p)\n",
111493 - entry, LIST_POISON1) ||
111494 - WARN(prev == LIST_POISON2,
111495 - "list_del corruption, %p->prev is LIST_POISON2 (%p)\n",
111496 - entry, LIST_POISON2) ||
111497 - WARN(prev->next != entry,
111498 - "list_del corruption. prev->next should be %p, "
111499 - "but was %p\n", entry, prev->next) ||
111500 - WARN(next->prev != entry,
111501 - "list_del corruption. next->prev should be %p, "
111502 - "but was %p\n", entry, next->prev))
111503 + if (unlikely(next == LIST_POISON1)) {
111504 + printk(KERN_ERR "list_del corruption, %p->next is LIST_POISON1 (%p)\n",
111505 + entry, LIST_POISON1);
111506 + BUG();
111507 + return false;
111508 + }
111509 + if (unlikely(prev == LIST_POISON2)) {
111510 + printk(KERN_ERR "list_del corruption, %p->prev is LIST_POISON2 (%p)\n",
111511 + entry, LIST_POISON2);
111512 + BUG();
111513 + return false;
111514 + }
111515 + if (unlikely(entry->prev->next != entry)) {
111516 + printk(KERN_ERR "list_del corruption. prev->next should be %p, "
111517 + "but was %p\n", entry, prev->next);
111518 + BUG();
111519 + return false;
111520 + }
111521 + if (unlikely(entry->next->prev != entry)) {
111522 + printk(KERN_ERR "list_del corruption. next->prev should be %p, "
111523 + "but was %p\n", entry, next->prev);
111524 + BUG();
111525 + return false;
111526 + }
111527 + return true;
111528 +}
111529 +
111530 +void __list_del_entry(struct list_head *entry)
111531 +{
111532 + if (!__list_del_entry_debug(entry))
111533 return;
111534
111535 - __list_del(prev, next);
111536 + __list_del(entry->prev, entry->next);
111537 }
111538 EXPORT_SYMBOL(__list_del_entry);
111539
111540 @@ -86,15 +125,85 @@ EXPORT_SYMBOL(list_del);
111541 void __list_add_rcu(struct list_head *new,
111542 struct list_head *prev, struct list_head *next)
111543 {
111544 - WARN(next->prev != prev,
111545 - "list_add_rcu corruption. next->prev should be prev (%p), but was %p. (next=%p).\n",
111546 - prev, next->prev, next);
111547 - WARN(prev->next != next,
111548 - "list_add_rcu corruption. prev->next should be next (%p), but was %p. (prev=%p).\n",
111549 - next, prev->next, prev);
111550 + if (!__list_add_debug(new, prev, next))
111551 + return;
111552 +
111553 new->next = next;
111554 new->prev = prev;
111555 rcu_assign_pointer(list_next_rcu(prev), new);
111556 next->prev = new;
111557 }
111558 EXPORT_SYMBOL(__list_add_rcu);
111559 +#endif
111560 +
111561 +void __pax_list_add(struct list_head *new, struct list_head *prev, struct list_head *next)
111562 +{
111563 +#ifdef CONFIG_DEBUG_LIST
111564 + if (!__list_add_debug(new, prev, next))
111565 + return;
111566 +#endif
111567 +
111568 + pax_open_kernel();
111569 + next->prev = new;
111570 + new->next = next;
111571 + new->prev = prev;
111572 + prev->next = new;
111573 + pax_close_kernel();
111574 +}
111575 +EXPORT_SYMBOL(__pax_list_add);
111576 +
111577 +void pax_list_del(struct list_head *entry)
111578 +{
111579 +#ifdef CONFIG_DEBUG_LIST
111580 + if (!__list_del_entry_debug(entry))
111581 + return;
111582 +#endif
111583 +
111584 + pax_open_kernel();
111585 + __list_del(entry->prev, entry->next);
111586 + entry->next = LIST_POISON1;
111587 + entry->prev = LIST_POISON2;
111588 + pax_close_kernel();
111589 +}
111590 +EXPORT_SYMBOL(pax_list_del);
111591 +
111592 +void pax_list_del_init(struct list_head *entry)
111593 +{
111594 + pax_open_kernel();
111595 + __list_del(entry->prev, entry->next);
111596 + INIT_LIST_HEAD(entry);
111597 + pax_close_kernel();
111598 +}
111599 +EXPORT_SYMBOL(pax_list_del_init);
111600 +
111601 +void __pax_list_add_rcu(struct list_head *new,
111602 + struct list_head *prev, struct list_head *next)
111603 +{
111604 +#ifdef CONFIG_DEBUG_LIST
111605 + if (!__list_add_debug(new, prev, next))
111606 + return;
111607 +#endif
111608 +
111609 + pax_open_kernel();
111610 + new->next = next;
111611 + new->prev = prev;
111612 + rcu_assign_pointer(list_next_rcu(prev), new);
111613 + next->prev = new;
111614 + pax_close_kernel();
111615 +}
111616 +EXPORT_SYMBOL(__pax_list_add_rcu);
111617 +
111618 +void pax_list_del_rcu(struct list_head *entry)
111619 +{
111620 +#ifdef CONFIG_DEBUG_LIST
111621 + if (!__list_del_entry_debug(entry))
111622 + return;
111623 +#endif
111624 +
111625 + pax_open_kernel();
111626 + __list_del(entry->prev, entry->next);
111627 + entry->next = LIST_POISON1;
111628 + entry->prev = LIST_POISON2;
111629 + pax_close_kernel();
111630 +}
111631 +EXPORT_SYMBOL(pax_list_del_rcu);
111632 diff --git a/lib/lockref.c b/lib/lockref.c
111633 index 494994b..65caf94 100644
111634 --- a/lib/lockref.c
111635 +++ b/lib/lockref.c
111636 @@ -48,13 +48,13 @@
111637 void lockref_get(struct lockref *lockref)
111638 {
111639 CMPXCHG_LOOP(
111640 - new.count++;
111641 + __lockref_inc(&new);
111642 ,
111643 return;
111644 );
111645
111646 spin_lock(&lockref->lock);
111647 - lockref->count++;
111648 + __lockref_inc(lockref);
111649 spin_unlock(&lockref->lock);
111650 }
111651 EXPORT_SYMBOL(lockref_get);
111652 @@ -69,8 +69,8 @@ int lockref_get_not_zero(struct lockref *lockref)
111653 int retval;
111654
111655 CMPXCHG_LOOP(
111656 - new.count++;
111657 - if (old.count <= 0)
111658 + __lockref_inc(&new);
111659 + if (__lockref_read(&old) <= 0)
111660 return 0;
111661 ,
111662 return 1;
111663 @@ -78,8 +78,8 @@ int lockref_get_not_zero(struct lockref *lockref)
111664
111665 spin_lock(&lockref->lock);
111666 retval = 0;
111667 - if (lockref->count > 0) {
111668 - lockref->count++;
111669 + if (__lockref_read(lockref) > 0) {
111670 + __lockref_inc(lockref);
111671 retval = 1;
111672 }
111673 spin_unlock(&lockref->lock);
111674 @@ -96,17 +96,17 @@ EXPORT_SYMBOL(lockref_get_not_zero);
111675 int lockref_get_or_lock(struct lockref *lockref)
111676 {
111677 CMPXCHG_LOOP(
111678 - new.count++;
111679 - if (old.count <= 0)
111680 + __lockref_inc(&new);
111681 + if (__lockref_read(&old) <= 0)
111682 break;
111683 ,
111684 return 1;
111685 );
111686
111687 spin_lock(&lockref->lock);
111688 - if (lockref->count <= 0)
111689 + if (__lockref_read(lockref) <= 0)
111690 return 0;
111691 - lockref->count++;
111692 + __lockref_inc(lockref);
111693 spin_unlock(&lockref->lock);
111694 return 1;
111695 }
111696 @@ -122,11 +122,11 @@ EXPORT_SYMBOL(lockref_get_or_lock);
111697 int lockref_put_return(struct lockref *lockref)
111698 {
111699 CMPXCHG_LOOP(
111700 - new.count--;
111701 - if (old.count <= 0)
111702 + __lockref_dec(&new);
111703 + if (__lockref_read(&old) <= 0)
111704 return -1;
111705 ,
111706 - return new.count;
111707 + return __lockref_read(&new);
111708 );
111709 return -1;
111710 }
111711 @@ -140,17 +140,17 @@ EXPORT_SYMBOL(lockref_put_return);
111712 int lockref_put_or_lock(struct lockref *lockref)
111713 {
111714 CMPXCHG_LOOP(
111715 - new.count--;
111716 - if (old.count <= 1)
111717 + __lockref_dec(&new);
111718 + if (__lockref_read(&old) <= 1)
111719 break;
111720 ,
111721 return 1;
111722 );
111723
111724 spin_lock(&lockref->lock);
111725 - if (lockref->count <= 1)
111726 + if (__lockref_read(lockref) <= 1)
111727 return 0;
111728 - lockref->count--;
111729 + __lockref_dec(lockref);
111730 spin_unlock(&lockref->lock);
111731 return 1;
111732 }
111733 @@ -163,7 +163,7 @@ EXPORT_SYMBOL(lockref_put_or_lock);
111734 void lockref_mark_dead(struct lockref *lockref)
111735 {
111736 assert_spin_locked(&lockref->lock);
111737 - lockref->count = -128;
111738 + __lockref_set(lockref, -128);
111739 }
111740 EXPORT_SYMBOL(lockref_mark_dead);
111741
111742 @@ -177,8 +177,8 @@ int lockref_get_not_dead(struct lockref *lockref)
111743 int retval;
111744
111745 CMPXCHG_LOOP(
111746 - new.count++;
111747 - if (old.count < 0)
111748 + __lockref_inc(&new);
111749 + if (__lockref_read(&old) < 0)
111750 return 0;
111751 ,
111752 return 1;
111753 @@ -186,8 +186,8 @@ int lockref_get_not_dead(struct lockref *lockref)
111754
111755 spin_lock(&lockref->lock);
111756 retval = 0;
111757 - if (lockref->count >= 0) {
111758 - lockref->count++;
111759 + if (__lockref_read(lockref) >= 0) {
111760 + __lockref_inc(lockref);
111761 retval = 1;
111762 }
111763 spin_unlock(&lockref->lock);
111764 diff --git a/lib/nlattr.c b/lib/nlattr.c
111765 index f5907d2..36072be 100644
111766 --- a/lib/nlattr.c
111767 +++ b/lib/nlattr.c
111768 @@ -278,6 +278,8 @@ int nla_memcpy(void *dest, const struct nlattr *src, int count)
111769 {
111770 int minlen = min_t(int, count, nla_len(src));
111771
111772 + BUG_ON(minlen < 0);
111773 +
111774 memcpy(dest, nla_data(src), minlen);
111775 if (count > minlen)
111776 memset(dest + minlen, 0, count - minlen);
111777 diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
111778 index 6111bcb..02e816b 100644
111779 --- a/lib/percpu-refcount.c
111780 +++ b/lib/percpu-refcount.c
111781 @@ -31,7 +31,7 @@
111782 * atomic_long_t can't hit 0 before we've added up all the percpu refs.
111783 */
111784
111785 -#define PERCPU_COUNT_BIAS (1LU << (BITS_PER_LONG - 1))
111786 +#define PERCPU_COUNT_BIAS (1LU << (BITS_PER_LONG - 2))
111787
111788 static DECLARE_WAIT_QUEUE_HEAD(percpu_ref_switch_waitq);
111789
111790 diff --git a/lib/radix-tree.c b/lib/radix-tree.c
111791 index f9ebe1c..e985666 100644
111792 --- a/lib/radix-tree.c
111793 +++ b/lib/radix-tree.c
111794 @@ -68,7 +68,7 @@ struct radix_tree_preload {
111795 /* nodes->private_data points to next preallocated node */
111796 struct radix_tree_node *nodes;
111797 };
111798 -static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, };
111799 +static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads);
111800
111801 static inline void *ptr_to_indirect(void *ptr)
111802 {
111803 diff --git a/lib/random32.c b/lib/random32.c
111804 index 0bee183..526f12f 100644
111805 --- a/lib/random32.c
111806 +++ b/lib/random32.c
111807 @@ -47,7 +47,7 @@ static inline void prandom_state_selftest(void)
111808 }
111809 #endif
111810
111811 -static DEFINE_PER_CPU(struct rnd_state, net_rand_state);
111812 +static DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
111813
111814 /**
111815 * prandom_u32_state - seeded pseudo-random number generator.
111816 diff --git a/lib/rbtree.c b/lib/rbtree.c
111817 index 1356454..70ce6c6 100644
111818 --- a/lib/rbtree.c
111819 +++ b/lib/rbtree.c
111820 @@ -412,7 +412,9 @@ static inline void dummy_copy(struct rb_node *old, struct rb_node *new) {}
111821 static inline void dummy_rotate(struct rb_node *old, struct rb_node *new) {}
111822
111823 static const struct rb_augment_callbacks dummy_callbacks = {
111824 - dummy_propagate, dummy_copy, dummy_rotate
111825 + .propagate = dummy_propagate,
111826 + .copy = dummy_copy,
111827 + .rotate = dummy_rotate
111828 };
111829
111830 void rb_insert_color(struct rb_node *node, struct rb_root *root)
111831 diff --git a/lib/show_mem.c b/lib/show_mem.c
111832 index adc98e18..0ce83c2 100644
111833 --- a/lib/show_mem.c
111834 +++ b/lib/show_mem.c
111835 @@ -49,6 +49,6 @@ void show_mem(unsigned int filter)
111836 quicklist_total_size());
111837 #endif
111838 #ifdef CONFIG_MEMORY_FAILURE
111839 - printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
111840 + printk("%lu pages hwpoisoned\n", atomic_long_read_unchecked(&num_poisoned_pages));
111841 #endif
111842 }
111843 diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c
111844 index e0af6ff..fcc9f15 100644
111845 --- a/lib/strncpy_from_user.c
111846 +++ b/lib/strncpy_from_user.c
111847 @@ -22,7 +22,7 @@
111848 */
111849 static inline long do_strncpy_from_user(char *dst, const char __user *src, long count, unsigned long max)
111850 {
111851 - const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
111852 + static const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
111853 long res = 0;
111854
111855 /*
111856 diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c
111857 index 3a5f2b3..102f1ff 100644
111858 --- a/lib/strnlen_user.c
111859 +++ b/lib/strnlen_user.c
111860 @@ -26,7 +26,7 @@
111861 */
111862 static inline long do_strnlen_user(const char __user *src, unsigned long count, unsigned long max)
111863 {
111864 - const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
111865 + static const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
111866 long align, res = 0;
111867 unsigned long c;
111868
111869 diff --git a/lib/swiotlb.c b/lib/swiotlb.c
111870 index 76f29ec..1a5316f 100644
111871 --- a/lib/swiotlb.c
111872 +++ b/lib/swiotlb.c
111873 @@ -690,7 +690,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
111874
111875 void
111876 swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
111877 - dma_addr_t dev_addr)
111878 + dma_addr_t dev_addr, struct dma_attrs *attrs)
111879 {
111880 phys_addr_t paddr = dma_to_phys(hwdev, dev_addr);
111881
111882 diff --git a/lib/usercopy.c b/lib/usercopy.c
111883 index 4f5b1dd..7cab418 100644
111884 --- a/lib/usercopy.c
111885 +++ b/lib/usercopy.c
111886 @@ -7,3 +7,9 @@ void copy_from_user_overflow(void)
111887 WARN(1, "Buffer overflow detected!\n");
111888 }
111889 EXPORT_SYMBOL(copy_from_user_overflow);
111890 +
111891 +void copy_to_user_overflow(void)
111892 +{
111893 + WARN(1, "Buffer overflow detected!\n");
111894 +}
111895 +EXPORT_SYMBOL(copy_to_user_overflow);
111896 diff --git a/lib/vsprintf.c b/lib/vsprintf.c
111897 index da39c60..ac91239 100644
111898 --- a/lib/vsprintf.c
111899 +++ b/lib/vsprintf.c
111900 @@ -16,6 +16,9 @@
111901 * - scnprintf and vscnprintf
111902 */
111903
111904 +#ifdef CONFIG_GRKERNSEC_HIDESYM
111905 +#define __INCLUDED_BY_HIDESYM 1
111906 +#endif
111907 #include <stdarg.h>
111908 #include <linux/clk-provider.h>
111909 #include <linux/module.h> /* for KSYM_SYMBOL_LEN */
111910 @@ -628,7 +631,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
111911 #ifdef CONFIG_KALLSYMS
111912 if (*fmt == 'B')
111913 sprint_backtrace(sym, value);
111914 - else if (*fmt != 'f' && *fmt != 's')
111915 + else if (*fmt != 'f' && *fmt != 's' && *fmt != 'X')
111916 sprint_symbol(sym, value);
111917 else
111918 sprint_symbol_no_offset(sym, value);
111919 @@ -1360,7 +1363,11 @@ char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec,
111920 }
111921 }
111922
111923 -int kptr_restrict __read_mostly;
111924 +#ifdef CONFIG_GRKERNSEC_HIDESYM
111925 +int kptr_restrict __read_only = 2;
111926 +#else
111927 +int kptr_restrict __read_only;
111928 +#endif
111929
111930 /*
111931 * Show a '%p' thing. A kernel extension is that the '%p' is followed
111932 @@ -1371,8 +1378,10 @@ int kptr_restrict __read_mostly;
111933 *
111934 * - 'F' For symbolic function descriptor pointers with offset
111935 * - 'f' For simple symbolic function names without offset
111936 + * - 'X' For simple symbolic function names without offset approved for use with GRKERNSEC_HIDESYM
111937 * - 'S' For symbolic direct pointers with offset
111938 * - 's' For symbolic direct pointers without offset
111939 + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM
111940 * - '[FfSs]R' as above with __builtin_extract_return_addr() translation
111941 * - 'B' For backtraced symbolic direct pointers with offset
111942 * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
111943 @@ -1460,12 +1469,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
111944
111945 if (!ptr && *fmt != 'K') {
111946 /*
111947 - * Print (null) with the same width as a pointer so it makes
111948 + * Print (nil) with the same width as a pointer so it makes
111949 * tabular output look nice.
111950 */
111951 if (spec.field_width == -1)
111952 spec.field_width = default_width;
111953 - return string(buf, end, "(null)", spec);
111954 + return string(buf, end, "(nil)", spec);
111955 }
111956
111957 switch (*fmt) {
111958 @@ -1475,6 +1484,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
111959 /* Fallthrough */
111960 case 'S':
111961 case 's':
111962 +#ifdef CONFIG_GRKERNSEC_HIDESYM
111963 + break;
111964 +#else
111965 + return symbol_string(buf, end, ptr, spec, fmt);
111966 +#endif
111967 + case 'X':
111968 + ptr = dereference_function_descriptor(ptr);
111969 + case 'A':
111970 case 'B':
111971 return symbol_string(buf, end, ptr, spec, fmt);
111972 case 'R':
111973 @@ -1539,6 +1556,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
111974 va_end(va);
111975 return buf;
111976 }
111977 + case 'P':
111978 + break;
111979 case 'K':
111980 /*
111981 * %pK cannot be used in IRQ context because its test
111982 @@ -1598,6 +1617,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
111983 ((const struct file *)ptr)->f_path.dentry,
111984 spec, fmt);
111985 }
111986 +
111987 +#ifdef CONFIG_GRKERNSEC_HIDESYM
111988 + /* 'P' = approved pointers to copy to userland,
111989 + as in the /proc/kallsyms case, as we make it display nothing
111990 + for non-root users, and the real contents for root users
111991 + 'X' = approved simple symbols
111992 + Also ignore 'K' pointers, since we force their NULLing for non-root users
111993 + above
111994 + */
111995 + if ((unsigned long)ptr > TASK_SIZE && *fmt != 'P' && *fmt != 'X' && *fmt != 'K' && is_usercopy_object(buf)) {
111996 + printk(KERN_ALERT "grsec: kernel infoleak detected! Please report this log to spender@grsecurity.net.\n");
111997 + dump_stack();
111998 + ptr = NULL;
111999 + }
112000 +#endif
112001 +
112002 spec.flags |= SMALL;
112003 if (spec.field_width == -1) {
112004 spec.field_width = default_width;
112005 @@ -2296,11 +2331,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
112006 typeof(type) value; \
112007 if (sizeof(type) == 8) { \
112008 args = PTR_ALIGN(args, sizeof(u32)); \
112009 - *(u32 *)&value = *(u32 *)args; \
112010 - *((u32 *)&value + 1) = *(u32 *)(args + 4); \
112011 + *(u32 *)&value = *(const u32 *)args; \
112012 + *((u32 *)&value + 1) = *(const u32 *)(args + 4); \
112013 } else { \
112014 args = PTR_ALIGN(args, sizeof(type)); \
112015 - value = *(typeof(type) *)args; \
112016 + value = *(const typeof(type) *)args; \
112017 } \
112018 args += sizeof(type); \
112019 value; \
112020 @@ -2363,7 +2398,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
112021 case FORMAT_TYPE_STR: {
112022 const char *str_arg = args;
112023 args += strlen(str_arg) + 1;
112024 - str = string(str, end, (char *)str_arg, spec);
112025 + str = string(str, end, str_arg, spec);
112026 break;
112027 }
112028
112029 diff --git a/localversion-grsec b/localversion-grsec
112030 new file mode 100644
112031 index 0000000..7cd6065
112032 --- /dev/null
112033 +++ b/localversion-grsec
112034 @@ -0,0 +1 @@
112035 +-grsec
112036 diff --git a/mm/Kconfig b/mm/Kconfig
112037 index e79de2b..a1a98eb 100644
112038 --- a/mm/Kconfig
112039 +++ b/mm/Kconfig
112040 @@ -342,10 +342,11 @@ config KSM
112041 root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
112042
112043 config DEFAULT_MMAP_MIN_ADDR
112044 - int "Low address space to protect from user allocation"
112045 + int "Low address space to protect from user allocation"
112046 depends on MMU
112047 - default 4096
112048 - help
112049 + default 32768 if ALPHA || ARM || PARISC || SPARC32
112050 + default 65536
112051 + help
112052 This is the portion of low virtual memory which should be protected
112053 from userspace allocation. Keeping a user from writing to low pages
112054 can help reduce the impact of kernel NULL pointer bugs.
112055 @@ -377,7 +378,7 @@ config MEMORY_FAILURE
112056
112057 config HWPOISON_INJECT
112058 tristate "HWPoison pages injector"
112059 - depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS
112060 + depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS && !GRKERNSEC
112061 select PROC_PAGE_MONITOR
112062
112063 config NOMMU_INITIAL_TRIM_EXCESS
112064 diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
112065 index 957d3da..1d34e20 100644
112066 --- a/mm/Kconfig.debug
112067 +++ b/mm/Kconfig.debug
112068 @@ -10,6 +10,7 @@ config PAGE_EXTENSION
112069 config DEBUG_PAGEALLOC
112070 bool "Debug page memory allocations"
112071 depends on DEBUG_KERNEL
112072 + depends on !PAX_MEMORY_SANITIZE
112073 depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
112074 depends on !KMEMCHECK
112075 select PAGE_EXTENSION
112076 diff --git a/mm/backing-dev.c b/mm/backing-dev.c
112077 index dac5bf5..d8c02ce 100644
112078 --- a/mm/backing-dev.c
112079 +++ b/mm/backing-dev.c
112080 @@ -12,7 +12,7 @@
112081 #include <linux/device.h>
112082 #include <trace/events/writeback.h>
112083
112084 -static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0);
112085 +static atomic_long_unchecked_t bdi_seq = ATOMIC_LONG_INIT(0);
112086
112087 struct backing_dev_info noop_backing_dev_info = {
112088 .name = "noop",
112089 @@ -855,7 +855,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name)
112090 return err;
112091
112092 err = bdi_register(bdi, NULL, "%.28s-%ld", name,
112093 - atomic_long_inc_return(&bdi_seq));
112094 + atomic_long_inc_return_unchecked(&bdi_seq));
112095 if (err) {
112096 bdi_destroy(bdi);
112097 return err;
112098 diff --git a/mm/dmapool.c b/mm/dmapool.c
112099 index fd5fe43..39ea317 100644
112100 --- a/mm/dmapool.c
112101 +++ b/mm/dmapool.c
112102 @@ -386,7 +386,7 @@ static struct dma_page *pool_find_page(struct dma_pool *pool, dma_addr_t dma)
112103 list_for_each_entry(page, &pool->page_list, page_list) {
112104 if (dma < page->dma)
112105 continue;
112106 - if (dma < (page->dma + pool->allocation))
112107 + if ((dma - page->dma) < pool->allocation)
112108 return page;
112109 }
112110 return NULL;
112111 diff --git a/mm/filemap.c b/mm/filemap.c
112112 index 1283fc8..a0347d5 100644
112113 --- a/mm/filemap.c
112114 +++ b/mm/filemap.c
112115 @@ -2122,7 +2122,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
112116 struct address_space *mapping = file->f_mapping;
112117
112118 if (!mapping->a_ops->readpage)
112119 - return -ENOEXEC;
112120 + return -ENODEV;
112121 file_accessed(file);
112122 vma->vm_ops = &generic_file_vm_ops;
112123 return 0;
112124 @@ -2303,6 +2303,7 @@ inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from)
112125 pos = iocb->ki_pos;
112126
112127 if (limit != RLIM_INFINITY) {
112128 + gr_learn_resource(current, RLIMIT_FSIZE, iocb->ki_pos, 0);
112129 if (iocb->ki_pos >= limit) {
112130 send_sig(SIGXFSZ, current, 0);
112131 return -EFBIG;
112132 diff --git a/mm/gup.c b/mm/gup.c
112133 index 6297f6b..7652403 100644
112134 --- a/mm/gup.c
112135 +++ b/mm/gup.c
112136 @@ -265,11 +265,6 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
112137 unsigned int fault_flags = 0;
112138 int ret;
112139
112140 - /* For mm_populate(), just skip the stack guard page. */
112141 - if ((*flags & FOLL_POPULATE) &&
112142 - (stack_guard_page_start(vma, address) ||
112143 - stack_guard_page_end(vma, address + PAGE_SIZE)))
112144 - return -ENOENT;
112145 if (*flags & FOLL_WRITE)
112146 fault_flags |= FAULT_FLAG_WRITE;
112147 if (nonblocking)
112148 @@ -435,14 +430,14 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
112149 if (!(gup_flags & FOLL_FORCE))
112150 gup_flags |= FOLL_NUMA;
112151
112152 - do {
112153 + while (nr_pages) {
112154 struct page *page;
112155 unsigned int foll_flags = gup_flags;
112156 unsigned int page_increm;
112157
112158 /* first iteration or cross vma bound */
112159 if (!vma || start >= vma->vm_end) {
112160 - vma = find_extend_vma(mm, start);
112161 + vma = find_vma(mm, start);
112162 if (!vma && in_gate_area(mm, start)) {
112163 int ret;
112164 ret = get_gate_page(mm, start & PAGE_MASK,
112165 @@ -454,7 +449,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
112166 goto next_page;
112167 }
112168
112169 - if (!vma || check_vma_flags(vma, gup_flags))
112170 + if (!vma || start < vma->vm_start || check_vma_flags(vma, gup_flags))
112171 return i ? : -EFAULT;
112172 if (is_vm_hugetlb_page(vma)) {
112173 i = follow_hugetlb_page(mm, vma, pages, vmas,
112174 @@ -509,7 +504,7 @@ next_page:
112175 i += page_increm;
112176 start += page_increm * PAGE_SIZE;
112177 nr_pages -= page_increm;
112178 - } while (nr_pages);
112179 + }
112180 return i;
112181 }
112182 EXPORT_SYMBOL(__get_user_pages);
112183 diff --git a/mm/highmem.c b/mm/highmem.c
112184 index 123bcd3..07e8516 100644
112185 --- a/mm/highmem.c
112186 +++ b/mm/highmem.c
112187 @@ -196,7 +196,6 @@ static void flush_all_zero_pkmaps(void)
112188 */
112189 page = pte_page(pkmap_page_table[i]);
112190 pte_clear(&init_mm, PKMAP_ADDR(i), &pkmap_page_table[i]);
112191 -
112192 set_page_address(page, NULL);
112193 need_flush = 1;
112194 }
112195 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
112196 index a8c3087..ec431dc 100644
112197 --- a/mm/hugetlb.c
112198 +++ b/mm/hugetlb.c
112199 @@ -2442,6 +2442,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
112200 struct ctl_table *table, int write,
112201 void __user *buffer, size_t *length, loff_t *ppos)
112202 {
112203 + ctl_table_no_const t;
112204 struct hstate *h = &default_hstate;
112205 unsigned long tmp = h->max_huge_pages;
112206 int ret;
112207 @@ -2449,9 +2450,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
112208 if (!hugepages_supported())
112209 return -ENOTSUPP;
112210
112211 - table->data = &tmp;
112212 - table->maxlen = sizeof(unsigned long);
112213 - ret = proc_doulongvec_minmax(table, write, buffer, length, ppos);
112214 + t = *table;
112215 + t.data = &tmp;
112216 + t.maxlen = sizeof(unsigned long);
112217 + ret = proc_doulongvec_minmax(&t, write, buffer, length, ppos);
112218 if (ret)
112219 goto out;
112220
112221 @@ -2486,6 +2488,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
112222 struct hstate *h = &default_hstate;
112223 unsigned long tmp;
112224 int ret;
112225 + ctl_table_no_const hugetlb_table;
112226
112227 if (!hugepages_supported())
112228 return -ENOTSUPP;
112229 @@ -2495,9 +2498,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
112230 if (write && hstate_is_gigantic(h))
112231 return -EINVAL;
112232
112233 - table->data = &tmp;
112234 - table->maxlen = sizeof(unsigned long);
112235 - ret = proc_doulongvec_minmax(table, write, buffer, length, ppos);
112236 + hugetlb_table = *table;
112237 + hugetlb_table.data = &tmp;
112238 + hugetlb_table.maxlen = sizeof(unsigned long);
112239 + ret = proc_doulongvec_minmax(&hugetlb_table, write, buffer, length, ppos);
112240 if (ret)
112241 goto out;
112242
112243 @@ -2974,6 +2978,14 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
112244 continue;
112245
112246 /*
112247 + * Shared VMAs have their own reserves and do not affect
112248 + * MAP_PRIVATE accounting but it is possible that a shared
112249 + * VMA is using the same page so check and skip such VMAs.
112250 + */
112251 + if (iter_vma->vm_flags & VM_MAYSHARE)
112252 + continue;
112253 +
112254 + /*
112255 * Unmap the page from other VMAs without their own reserves.
112256 * They get marked to be SIGKILLed if they fault in these
112257 * areas. This is because a future no-page fault on this VMA
112258 @@ -2987,6 +2999,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
112259 i_mmap_unlock_write(mapping);
112260 }
112261
112262 +#ifdef CONFIG_PAX_SEGMEXEC
112263 +static void pax_mirror_huge_pte(struct vm_area_struct *vma, unsigned long address, struct page *page_m)
112264 +{
112265 + struct mm_struct *mm = vma->vm_mm;
112266 + struct vm_area_struct *vma_m;
112267 + unsigned long address_m;
112268 + pte_t *ptep_m;
112269 +
112270 + vma_m = pax_find_mirror_vma(vma);
112271 + if (!vma_m)
112272 + return;
112273 +
112274 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
112275 + address_m = address + SEGMEXEC_TASK_SIZE;
112276 + ptep_m = huge_pte_offset(mm, address_m & HPAGE_MASK);
112277 + get_page(page_m);
112278 + hugepage_add_anon_rmap(page_m, vma_m, address_m);
112279 + set_huge_pte_at(mm, address_m, ptep_m, make_huge_pte(vma_m, page_m, 0));
112280 +}
112281 +#endif
112282 +
112283 /*
112284 * Hugetlb_cow() should be called with page lock of the original hugepage held.
112285 * Called with hugetlb_instantiation_mutex held and pte_page locked so we
112286 @@ -3100,6 +3133,11 @@ retry_avoidcopy:
112287 make_huge_pte(vma, new_page, 1));
112288 page_remove_rmap(old_page);
112289 hugepage_add_new_anon_rmap(new_page, vma, address);
112290 +
112291 +#ifdef CONFIG_PAX_SEGMEXEC
112292 + pax_mirror_huge_pte(vma, address, new_page);
112293 +#endif
112294 +
112295 /* Make the old page be freed below */
112296 new_page = old_page;
112297 }
112298 @@ -3261,6 +3299,10 @@ retry:
112299 && (vma->vm_flags & VM_SHARED)));
112300 set_huge_pte_at(mm, address, ptep, new_pte);
112301
112302 +#ifdef CONFIG_PAX_SEGMEXEC
112303 + pax_mirror_huge_pte(vma, address, page);
112304 +#endif
112305 +
112306 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
112307 /* Optimization, do the COW without a second fault */
112308 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl);
112309 @@ -3328,6 +3370,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
112310 struct address_space *mapping;
112311 int need_wait_lock = 0;
112312
112313 +#ifdef CONFIG_PAX_SEGMEXEC
112314 + struct vm_area_struct *vma_m;
112315 +#endif
112316 +
112317 address &= huge_page_mask(h);
112318
112319 ptep = huge_pte_offset(mm, address);
112320 @@ -3341,6 +3387,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
112321 VM_FAULT_SET_HINDEX(hstate_index(h));
112322 }
112323
112324 +#ifdef CONFIG_PAX_SEGMEXEC
112325 + vma_m = pax_find_mirror_vma(vma);
112326 + if (vma_m) {
112327 + unsigned long address_m;
112328 +
112329 + if (vma->vm_start > vma_m->vm_start) {
112330 + address_m = address;
112331 + address -= SEGMEXEC_TASK_SIZE;
112332 + vma = vma_m;
112333 + h = hstate_vma(vma);
112334 + } else
112335 + address_m = address + SEGMEXEC_TASK_SIZE;
112336 +
112337 + if (!huge_pte_alloc(mm, address_m, huge_page_size(h)))
112338 + return VM_FAULT_OOM;
112339 + address_m &= HPAGE_MASK;
112340 + unmap_hugepage_range(vma, address_m, address_m + HPAGE_SIZE, NULL);
112341 + }
112342 +#endif
112343 +
112344 ptep = huge_pte_alloc(mm, address, huge_page_size(h));
112345 if (!ptep)
112346 return VM_FAULT_OOM;
112347 diff --git a/mm/internal.h b/mm/internal.h
112348 index 36b23f1..0787474 100644
112349 --- a/mm/internal.h
112350 +++ b/mm/internal.h
112351 @@ -157,6 +157,7 @@ __find_buddy_index(unsigned long page_idx, unsigned int order)
112352 extern int __isolate_free_page(struct page *page, unsigned int order);
112353 extern void __free_pages_bootmem(struct page *page, unsigned long pfn,
112354 unsigned int order);
112355 +extern void free_compound_page(struct page *page);
112356 extern void prep_compound_page(struct page *page, unsigned long order);
112357 #ifdef CONFIG_MEMORY_FAILURE
112358 extern bool is_free_buddy_page(struct page *page);
112359 @@ -406,7 +407,7 @@ extern u32 hwpoison_filter_enable;
112360
112361 extern unsigned long vm_mmap_pgoff(struct file *, unsigned long,
112362 unsigned long, unsigned long,
112363 - unsigned long, unsigned long);
112364 + unsigned long, unsigned long) __intentional_overflow(-1);
112365
112366 extern void set_pageblock_order(void);
112367 unsigned long reclaim_clean_pages_from_list(struct zone *zone,
112368 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
112369 index cf79f11..254224e 100644
112370 --- a/mm/kmemleak.c
112371 +++ b/mm/kmemleak.c
112372 @@ -375,7 +375,7 @@ static void print_unreferenced(struct seq_file *seq,
112373
112374 for (i = 0; i < object->trace_len; i++) {
112375 void *ptr = (void *)object->trace[i];
112376 - seq_printf(seq, " [<%p>] %pS\n", ptr, ptr);
112377 + seq_printf(seq, " [<%pP>] %pA\n", ptr, ptr);
112378 }
112379 }
112380
112381 @@ -1966,7 +1966,7 @@ static int __init kmemleak_late_init(void)
112382 return -ENOMEM;
112383 }
112384
112385 - dentry = debugfs_create_file("kmemleak", S_IRUGO, NULL, NULL,
112386 + dentry = debugfs_create_file("kmemleak", S_IRUSR, NULL, NULL,
112387 &kmemleak_fops);
112388 if (!dentry)
112389 pr_warning("Failed to create the debugfs kmemleak file\n");
112390 diff --git a/mm/maccess.c b/mm/maccess.c
112391 index d53adf9..03a24bf 100644
112392 --- a/mm/maccess.c
112393 +++ b/mm/maccess.c
112394 @@ -26,7 +26,7 @@ long __probe_kernel_read(void *dst, const void *src, size_t size)
112395 set_fs(KERNEL_DS);
112396 pagefault_disable();
112397 ret = __copy_from_user_inatomic(dst,
112398 - (__force const void __user *)src, size);
112399 + (const void __force_user *)src, size);
112400 pagefault_enable();
112401 set_fs(old_fs);
112402
112403 @@ -53,7 +53,7 @@ long __probe_kernel_write(void *dst, const void *src, size_t size)
112404
112405 set_fs(KERNEL_DS);
112406 pagefault_disable();
112407 - ret = __copy_to_user_inatomic((__force void __user *)dst, src, size);
112408 + ret = __copy_to_user_inatomic((void __force_user *)dst, src, size);
112409 pagefault_enable();
112410 set_fs(old_fs);
112411
112412 diff --git a/mm/madvise.c b/mm/madvise.c
112413 index 64bb8a2..68e4be5 100644
112414 --- a/mm/madvise.c
112415 +++ b/mm/madvise.c
112416 @@ -52,6 +52,10 @@ static long madvise_behavior(struct vm_area_struct *vma,
112417 pgoff_t pgoff;
112418 unsigned long new_flags = vma->vm_flags;
112419
112420 +#ifdef CONFIG_PAX_SEGMEXEC
112421 + struct vm_area_struct *vma_m;
112422 +#endif
112423 +
112424 switch (behavior) {
112425 case MADV_NORMAL:
112426 new_flags = new_flags & ~VM_RAND_READ & ~VM_SEQ_READ;
112427 @@ -127,6 +131,13 @@ success:
112428 /*
112429 * vm_flags is protected by the mmap_sem held in write mode.
112430 */
112431 +
112432 +#ifdef CONFIG_PAX_SEGMEXEC
112433 + vma_m = pax_find_mirror_vma(vma);
112434 + if (vma_m)
112435 + vma_m->vm_flags = new_flags & ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT);
112436 +#endif
112437 +
112438 vma->vm_flags = new_flags;
112439
112440 out:
112441 @@ -278,11 +289,27 @@ static long madvise_dontneed(struct vm_area_struct *vma,
112442 struct vm_area_struct **prev,
112443 unsigned long start, unsigned long end)
112444 {
112445 +
112446 +#ifdef CONFIG_PAX_SEGMEXEC
112447 + struct vm_area_struct *vma_m;
112448 +#endif
112449 +
112450 *prev = vma;
112451 if (vma->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_PFNMAP))
112452 return -EINVAL;
112453
112454 zap_page_range(vma, start, end - start, NULL);
112455 +
112456 +#ifdef CONFIG_PAX_SEGMEXEC
112457 + vma_m = pax_find_mirror_vma(vma);
112458 + if (vma_m) {
112459 + if (vma_m->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_PFNMAP))
112460 + return -EINVAL;
112461 +
112462 + zap_page_range(vma_m, start + SEGMEXEC_TASK_SIZE, end - start, NULL);
112463 + }
112464 +#endif
112465 +
112466 return 0;
112467 }
112468
112469 @@ -485,6 +512,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
112470 if (end < start)
112471 return error;
112472
112473 +#ifdef CONFIG_PAX_SEGMEXEC
112474 + if (current->mm->pax_flags & MF_PAX_SEGMEXEC) {
112475 + if (end > SEGMEXEC_TASK_SIZE)
112476 + return error;
112477 + } else
112478 +#endif
112479 +
112480 + if (end > TASK_SIZE)
112481 + return error;
112482 +
112483 error = 0;
112484 if (end == start)
112485 return error;
112486 diff --git a/mm/memcontrol.c b/mm/memcontrol.c
112487 index acb93c5..237d468 100644
112488 --- a/mm/memcontrol.c
112489 +++ b/mm/memcontrol.c
112490 @@ -806,12 +806,14 @@ mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_zone *mctz)
112491 }
112492
112493 /*
112494 + * Return page count for single (non recursive) @memcg.
112495 + *
112496 * Implementation Note: reading percpu statistics for memcg.
112497 *
112498 * Both of vmstat[] and percpu_counter has threshold and do periodic
112499 * synchronization to implement "quick" read. There are trade-off between
112500 * reading cost and precision of value. Then, we may have a chance to implement
112501 - * a periodic synchronizion of counter in memcg's counter.
112502 + * a periodic synchronization of counter in memcg's counter.
112503 *
112504 * But this _read() function is used for user interface now. The user accounts
112505 * memory usage by memory cgroup and he _always_ requires exact value because
112506 @@ -821,17 +823,24 @@ mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_zone *mctz)
112507 *
112508 * If there are kernel internal actions which can make use of some not-exact
112509 * value, and reading all cpu value can be performance bottleneck in some
112510 - * common workload, threashold and synchonization as vmstat[] should be
112511 + * common workload, threshold and synchronization as vmstat[] should be
112512 * implemented.
112513 */
112514 -static long mem_cgroup_read_stat(struct mem_cgroup *memcg,
112515 - enum mem_cgroup_stat_index idx)
112516 +static unsigned long
112517 +mem_cgroup_read_stat(struct mem_cgroup *memcg, enum mem_cgroup_stat_index idx)
112518 {
112519 long val = 0;
112520 int cpu;
112521
112522 + /* Per-cpu values can be negative, use a signed accumulator */
112523 for_each_possible_cpu(cpu)
112524 val += per_cpu(memcg->stat->count[idx], cpu);
112525 + /*
112526 + * Summing races with updates, so val may be negative. Avoid exposing
112527 + * transient negative values.
112528 + */
112529 + if (val < 0)
112530 + val = 0;
112531 return val;
112532 }
112533
112534 @@ -1498,7 +1507,7 @@ void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
112535 for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
112536 if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
112537 continue;
112538 - pr_cont(" %s:%ldKB", mem_cgroup_stat_names[i],
112539 + pr_cont(" %s:%luKB", mem_cgroup_stat_names[i],
112540 K(mem_cgroup_read_stat(iter, i)));
112541 }
112542
112543 @@ -3119,14 +3128,11 @@ static unsigned long tree_stat(struct mem_cgroup *memcg,
112544 enum mem_cgroup_stat_index idx)
112545 {
112546 struct mem_cgroup *iter;
112547 - long val = 0;
112548 + unsigned long val = 0;
112549
112550 - /* Per-cpu values can be negative, use a signed accumulator */
112551 for_each_mem_cgroup_tree(iter, memcg)
112552 val += mem_cgroup_read_stat(iter, idx);
112553
112554 - if (val < 0) /* race ? */
112555 - val = 0;
112556 return val;
112557 }
112558
112559 @@ -3469,7 +3475,7 @@ static int memcg_stat_show(struct seq_file *m, void *v)
112560 for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
112561 if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
112562 continue;
112563 - seq_printf(m, "%s %ld\n", mem_cgroup_stat_names[i],
112564 + seq_printf(m, "%s %lu\n", mem_cgroup_stat_names[i],
112565 mem_cgroup_read_stat(memcg, i) * PAGE_SIZE);
112566 }
112567
112568 @@ -3494,13 +3500,13 @@ static int memcg_stat_show(struct seq_file *m, void *v)
112569 (u64)memsw * PAGE_SIZE);
112570
112571 for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
112572 - long long val = 0;
112573 + unsigned long long val = 0;
112574
112575 if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
112576 continue;
112577 for_each_mem_cgroup_tree(mi, memcg)
112578 val += mem_cgroup_read_stat(mi, i) * PAGE_SIZE;
112579 - seq_printf(m, "total_%s %lld\n", mem_cgroup_stat_names[i], val);
112580 + seq_printf(m, "total_%s %llu\n", mem_cgroup_stat_names[i], val);
112581 }
112582
112583 for (i = 0; i < MEM_CGROUP_EVENTS_NSTATS; i++) {
112584 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
112585 index 1f4446a..47abb4e 100644
112586 --- a/mm/memory-failure.c
112587 +++ b/mm/memory-failure.c
112588 @@ -63,7 +63,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
112589
112590 int sysctl_memory_failure_recovery __read_mostly = 1;
112591
112592 -atomic_long_t num_poisoned_pages __read_mostly = ATOMIC_LONG_INIT(0);
112593 +atomic_long_unchecked_t num_poisoned_pages __read_mostly = ATOMIC_LONG_INIT(0);
112594
112595 #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE)
112596
112597 @@ -200,7 +200,7 @@ static int kill_proc(struct task_struct *t, unsigned long addr, int trapno,
112598 pfn, t->comm, t->pid);
112599 si.si_signo = SIGBUS;
112600 si.si_errno = 0;
112601 - si.si_addr = (void *)addr;
112602 + si.si_addr = (void __user *)addr;
112603 #ifdef __ARCH_SI_TRAPNO
112604 si.si_trapno = trapno;
112605 #endif
112606 @@ -797,7 +797,7 @@ static struct page_state {
112607 unsigned long res;
112608 enum mf_action_page_type type;
112609 int (*action)(struct page *p, unsigned long pfn);
112610 -} error_states[] = {
112611 +} __do_const error_states[] = {
112612 { reserved, reserved, MF_MSG_KERNEL, me_kernel },
112613 /*
112614 * free pages are specially detected outside this table:
112615 @@ -1100,7 +1100,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
112616 nr_pages = 1 << compound_order(hpage);
112617 else /* normal page or thp */
112618 nr_pages = 1;
112619 - atomic_long_add(nr_pages, &num_poisoned_pages);
112620 + atomic_long_add_unchecked(nr_pages, &num_poisoned_pages);
112621
112622 /*
112623 * We need/can do nothing about count=0 pages.
112624 @@ -1128,7 +1128,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
112625 if (PageHWPoison(hpage)) {
112626 if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
112627 || (p != hpage && TestSetPageHWPoison(hpage))) {
112628 - atomic_long_sub(nr_pages, &num_poisoned_pages);
112629 + atomic_long_sub_unchecked(nr_pages, &num_poisoned_pages);
112630 unlock_page(hpage);
112631 return 0;
112632 }
112633 @@ -1152,7 +1152,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
112634 else
112635 pr_err("MCE: %#lx: thp split failed\n", pfn);
112636 if (TestClearPageHWPoison(p))
112637 - atomic_long_sub(nr_pages, &num_poisoned_pages);
112638 + atomic_long_sub_unchecked(nr_pages, &num_poisoned_pages);
112639 put_page(p);
112640 if (p != hpage)
112641 put_page(hpage);
112642 @@ -1214,14 +1214,14 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
112643 */
112644 if (!PageHWPoison(p)) {
112645 printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn);
112646 - atomic_long_sub(nr_pages, &num_poisoned_pages);
112647 + atomic_long_sub_unchecked(nr_pages, &num_poisoned_pages);
112648 unlock_page(hpage);
112649 put_page(hpage);
112650 return 0;
112651 }
112652 if (hwpoison_filter(p)) {
112653 if (TestClearPageHWPoison(p))
112654 - atomic_long_sub(nr_pages, &num_poisoned_pages);
112655 + atomic_long_sub_unchecked(nr_pages, &num_poisoned_pages);
112656 unlock_page(hpage);
112657 put_page(hpage);
112658 return 0;
112659 @@ -1450,7 +1450,7 @@ int unpoison_memory(unsigned long pfn)
112660 return 0;
112661 }
112662 if (TestClearPageHWPoison(p))
112663 - atomic_long_dec(&num_poisoned_pages);
112664 + atomic_long_dec_unchecked(&num_poisoned_pages);
112665 pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
112666 return 0;
112667 }
112668 @@ -1464,7 +1464,7 @@ int unpoison_memory(unsigned long pfn)
112669 */
112670 if (TestClearPageHWPoison(page)) {
112671 pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
112672 - atomic_long_sub(nr_pages, &num_poisoned_pages);
112673 + atomic_long_sub_unchecked(nr_pages, &num_poisoned_pages);
112674 freeit = 1;
112675 if (PageHuge(page))
112676 clear_page_hwpoison_huge_page(page);
112677 @@ -1600,11 +1600,11 @@ static int soft_offline_huge_page(struct page *page, int flags)
112678 if (PageHuge(page)) {
112679 set_page_hwpoison_huge_page(hpage);
112680 dequeue_hwpoisoned_huge_page(hpage);
112681 - atomic_long_add(1 << compound_order(hpage),
112682 + atomic_long_add_unchecked(1 << compound_order(hpage),
112683 &num_poisoned_pages);
112684 } else {
112685 SetPageHWPoison(page);
112686 - atomic_long_inc(&num_poisoned_pages);
112687 + atomic_long_inc_unchecked(&num_poisoned_pages);
112688 }
112689 }
112690 return ret;
112691 @@ -1643,7 +1643,7 @@ static int __soft_offline_page(struct page *page, int flags)
112692 put_page(page);
112693 pr_info("soft_offline: %#lx: invalidated\n", pfn);
112694 SetPageHWPoison(page);
112695 - atomic_long_inc(&num_poisoned_pages);
112696 + atomic_long_inc_unchecked(&num_poisoned_pages);
112697 return 0;
112698 }
112699
112700 @@ -1664,7 +1664,7 @@ static int __soft_offline_page(struct page *page, int flags)
112701 page_is_file_cache(page));
112702 list_add(&page->lru, &pagelist);
112703 if (!TestSetPageHWPoison(page))
112704 - atomic_long_inc(&num_poisoned_pages);
112705 + atomic_long_inc_unchecked(&num_poisoned_pages);
112706 ret = migrate_pages(&pagelist, new_page, NULL, MPOL_MF_MOVE_ALL,
112707 MIGRATE_SYNC, MR_MEMORY_FAILURE);
112708 if (ret) {
112709 @@ -1680,7 +1680,7 @@ static int __soft_offline_page(struct page *page, int flags)
112710 if (ret > 0)
112711 ret = -EIO;
112712 if (TestClearPageHWPoison(page))
112713 - atomic_long_dec(&num_poisoned_pages);
112714 + atomic_long_dec_unchecked(&num_poisoned_pages);
112715 }
112716 } else {
112717 pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n",
112718 @@ -1742,11 +1742,11 @@ int soft_offline_page(struct page *page, int flags)
112719 if (PageHuge(page)) {
112720 set_page_hwpoison_huge_page(hpage);
112721 if (!dequeue_hwpoisoned_huge_page(hpage))
112722 - atomic_long_add(1 << compound_order(hpage),
112723 + atomic_long_add_unchecked(1 << compound_order(hpage),
112724 &num_poisoned_pages);
112725 } else {
112726 if (!TestSetPageHWPoison(page))
112727 - atomic_long_inc(&num_poisoned_pages);
112728 + atomic_long_inc_unchecked(&num_poisoned_pages);
112729 }
112730 }
112731 return ret;
112732 diff --git a/mm/memory.c b/mm/memory.c
112733 index 388dcf9..82aa351 100644
112734 --- a/mm/memory.c
112735 +++ b/mm/memory.c
112736 @@ -414,6 +414,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
112737 free_pte_range(tlb, pmd, addr);
112738 } while (pmd++, addr = next, addr != end);
112739
112740 +#if !defined(CONFIG_X86_32) || !defined(CONFIG_PAX_PER_CPU_PGD)
112741 start &= PUD_MASK;
112742 if (start < floor)
112743 return;
112744 @@ -429,6 +430,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
112745 pud_clear(pud);
112746 pmd_free_tlb(tlb, pmd, start);
112747 mm_dec_nr_pmds(tlb->mm);
112748 +#endif
112749 }
112750
112751 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
112752 @@ -448,6 +450,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
112753 free_pmd_range(tlb, pud, addr, next, floor, ceiling);
112754 } while (pud++, addr = next, addr != end);
112755
112756 +#if !defined(CONFIG_X86_64) || !defined(CONFIG_PAX_PER_CPU_PGD)
112757 start &= PGDIR_MASK;
112758 if (start < floor)
112759 return;
112760 @@ -462,6 +465,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
112761 pud = pud_offset(pgd, start);
112762 pgd_clear(pgd);
112763 pud_free_tlb(tlb, pud, start);
112764 +#endif
112765 +
112766 }
112767
112768 /*
112769 @@ -690,7 +695,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
112770 /*
112771 * Choose text because data symbols depend on CONFIG_KALLSYMS_ALL=y
112772 */
112773 - pr_alert("file:%pD fault:%pf mmap:%pf readpage:%pf\n",
112774 + pr_alert("file:%pD fault:%pX mmap:%pX readpage:%pX\n",
112775 vma->vm_file,
112776 vma->vm_ops ? vma->vm_ops->fault : NULL,
112777 vma->vm_file ? vma->vm_file->f_op->mmap : NULL,
112778 @@ -1463,6 +1468,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
112779 page_add_file_rmap(page);
112780 set_pte_at(mm, addr, pte, mk_pte(page, prot));
112781
112782 +#ifdef CONFIG_PAX_SEGMEXEC
112783 + pax_mirror_file_pte(vma, addr, page, ptl);
112784 +#endif
112785 +
112786 retval = 0;
112787 pte_unmap_unlock(pte, ptl);
112788 return retval;
112789 @@ -1507,9 +1516,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
112790 if (!page_count(page))
112791 return -EINVAL;
112792 if (!(vma->vm_flags & VM_MIXEDMAP)) {
112793 +
112794 +#ifdef CONFIG_PAX_SEGMEXEC
112795 + struct vm_area_struct *vma_m;
112796 +#endif
112797 +
112798 BUG_ON(down_read_trylock(&vma->vm_mm->mmap_sem));
112799 BUG_ON(vma->vm_flags & VM_PFNMAP);
112800 vma->vm_flags |= VM_MIXEDMAP;
112801 +
112802 +#ifdef CONFIG_PAX_SEGMEXEC
112803 + vma_m = pax_find_mirror_vma(vma);
112804 + if (vma_m)
112805 + vma_m->vm_flags |= VM_MIXEDMAP;
112806 +#endif
112807 +
112808 }
112809 return insert_page(vma, addr, page, vma->vm_page_prot);
112810 }
112811 @@ -1592,6 +1613,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
112812 unsigned long pfn)
112813 {
112814 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
112815 + BUG_ON(vma->vm_mirror);
112816
112817 if (addr < vma->vm_start || addr >= vma->vm_end)
112818 return -EFAULT;
112819 @@ -1839,7 +1861,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
112820
112821 BUG_ON(pud_huge(*pud));
112822
112823 - pmd = pmd_alloc(mm, pud, addr);
112824 + pmd = (mm == &init_mm) ?
112825 + pmd_alloc_kernel(mm, pud, addr) :
112826 + pmd_alloc(mm, pud, addr);
112827 if (!pmd)
112828 return -ENOMEM;
112829 do {
112830 @@ -1859,7 +1883,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
112831 unsigned long next;
112832 int err;
112833
112834 - pud = pud_alloc(mm, pgd, addr);
112835 + pud = (mm == &init_mm) ?
112836 + pud_alloc_kernel(mm, pgd, addr) :
112837 + pud_alloc(mm, pgd, addr);
112838 if (!pud)
112839 return -ENOMEM;
112840 do {
112841 @@ -2040,6 +2066,196 @@ static inline int wp_page_reuse(struct mm_struct *mm,
112842 return VM_FAULT_WRITE;
112843 }
112844
112845 +#ifdef CONFIG_PAX_SEGMEXEC
112846 +static void pax_unmap_mirror_pte(struct vm_area_struct *vma, unsigned long address, pmd_t *pmd)
112847 +{
112848 + struct mm_struct *mm = vma->vm_mm;
112849 + spinlock_t *ptl;
112850 + pte_t *pte, entry;
112851 +
112852 + pte = pte_offset_map_lock(mm, pmd, address, &ptl);
112853 + entry = *pte;
112854 + if (pte_none(entry))
112855 + ;
112856 + else if (!pte_present(entry)) {
112857 + swp_entry_t swapentry;
112858 +
112859 + swapentry = pte_to_swp_entry(entry);
112860 + if (!non_swap_entry(swapentry))
112861 + dec_mm_counter_fast(mm, MM_SWAPENTS);
112862 + else if (is_migration_entry(swapentry)) {
112863 + if (PageAnon(migration_entry_to_page(swapentry)))
112864 + dec_mm_counter_fast(mm, MM_ANONPAGES);
112865 + else
112866 + dec_mm_counter_fast(mm, MM_FILEPAGES);
112867 + }
112868 + free_swap_and_cache(swapentry);
112869 + pte_clear_not_present_full(mm, address, pte, 0);
112870 + } else {
112871 + struct page *page;
112872 +
112873 + flush_cache_page(vma, address, pte_pfn(entry));
112874 + entry = ptep_clear_flush(vma, address, pte);
112875 + BUG_ON(pte_dirty(entry));
112876 + page = vm_normal_page(vma, address, entry);
112877 + if (page) {
112878 + update_hiwater_rss(mm);
112879 + if (PageAnon(page))
112880 + dec_mm_counter_fast(mm, MM_ANONPAGES);
112881 + else
112882 + dec_mm_counter_fast(mm, MM_FILEPAGES);
112883 + page_remove_rmap(page);
112884 + page_cache_release(page);
112885 + }
112886 + }
112887 + pte_unmap_unlock(pte, ptl);
112888 +}
112889 +
112890 +/* PaX: if vma is mirrored, synchronize the mirror's PTE
112891 + *
112892 + * the ptl of the lower mapped page is held on entry and is not released on exit
112893 + * or inside to ensure atomic changes to the PTE states (swapout, mremap, munmap, etc)
112894 + */
112895 +static void pax_mirror_anon_pte(struct vm_area_struct *vma, unsigned long address, struct page *page_m, spinlock_t *ptl)
112896 +{
112897 + struct mm_struct *mm = vma->vm_mm;
112898 + unsigned long address_m;
112899 + spinlock_t *ptl_m;
112900 + struct vm_area_struct *vma_m;
112901 + pmd_t *pmd_m;
112902 + pte_t *pte_m, entry_m;
112903 +
112904 + BUG_ON(!page_m || !PageAnon(page_m));
112905 +
112906 + vma_m = pax_find_mirror_vma(vma);
112907 + if (!vma_m)
112908 + return;
112909 +
112910 + BUG_ON(!PageLocked(page_m));
112911 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
112912 + address_m = address + SEGMEXEC_TASK_SIZE;
112913 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
112914 + pte_m = pte_offset_map(pmd_m, address_m);
112915 + ptl_m = pte_lockptr(mm, pmd_m);
112916 + if (ptl != ptl_m) {
112917 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
112918 + if (!pte_none(*pte_m))
112919 + goto out;
112920 + }
112921 +
112922 + entry_m = pfn_pte(page_to_pfn(page_m), vma_m->vm_page_prot);
112923 + page_cache_get(page_m);
112924 + page_add_anon_rmap(page_m, vma_m, address_m);
112925 + inc_mm_counter_fast(mm, MM_ANONPAGES);
112926 + set_pte_at(mm, address_m, pte_m, entry_m);
112927 + update_mmu_cache(vma_m, address_m, pte_m);
112928 +out:
112929 + if (ptl != ptl_m)
112930 + spin_unlock(ptl_m);
112931 + pte_unmap(pte_m);
112932 + unlock_page(page_m);
112933 +}
112934 +
112935 +void pax_mirror_file_pte(struct vm_area_struct *vma, unsigned long address, struct page *page_m, spinlock_t *ptl)
112936 +{
112937 + struct mm_struct *mm = vma->vm_mm;
112938 + unsigned long address_m;
112939 + spinlock_t *ptl_m;
112940 + struct vm_area_struct *vma_m;
112941 + pmd_t *pmd_m;
112942 + pte_t *pte_m, entry_m;
112943 +
112944 + BUG_ON(!page_m || PageAnon(page_m));
112945 +
112946 + vma_m = pax_find_mirror_vma(vma);
112947 + if (!vma_m)
112948 + return;
112949 +
112950 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
112951 + address_m = address + SEGMEXEC_TASK_SIZE;
112952 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
112953 + pte_m = pte_offset_map(pmd_m, address_m);
112954 + ptl_m = pte_lockptr(mm, pmd_m);
112955 + if (ptl != ptl_m) {
112956 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
112957 + if (!pte_none(*pte_m))
112958 + goto out;
112959 + }
112960 +
112961 + entry_m = pfn_pte(page_to_pfn(page_m), vma_m->vm_page_prot);
112962 + page_cache_get(page_m);
112963 + page_add_file_rmap(page_m);
112964 + inc_mm_counter_fast(mm, MM_FILEPAGES);
112965 + set_pte_at(mm, address_m, pte_m, entry_m);
112966 + update_mmu_cache(vma_m, address_m, pte_m);
112967 +out:
112968 + if (ptl != ptl_m)
112969 + spin_unlock(ptl_m);
112970 + pte_unmap(pte_m);
112971 +}
112972 +
112973 +static void pax_mirror_pfn_pte(struct vm_area_struct *vma, unsigned long address, unsigned long pfn_m, spinlock_t *ptl)
112974 +{
112975 + struct mm_struct *mm = vma->vm_mm;
112976 + unsigned long address_m;
112977 + spinlock_t *ptl_m;
112978 + struct vm_area_struct *vma_m;
112979 + pmd_t *pmd_m;
112980 + pte_t *pte_m, entry_m;
112981 +
112982 + vma_m = pax_find_mirror_vma(vma);
112983 + if (!vma_m)
112984 + return;
112985 +
112986 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
112987 + address_m = address + SEGMEXEC_TASK_SIZE;
112988 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
112989 + pte_m = pte_offset_map(pmd_m, address_m);
112990 + ptl_m = pte_lockptr(mm, pmd_m);
112991 + if (ptl != ptl_m) {
112992 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
112993 + if (!pte_none(*pte_m))
112994 + goto out;
112995 + }
112996 +
112997 + entry_m = pfn_pte(pfn_m, vma_m->vm_page_prot);
112998 + set_pte_at(mm, address_m, pte_m, entry_m);
112999 +out:
113000 + if (ptl != ptl_m)
113001 + spin_unlock(ptl_m);
113002 + pte_unmap(pte_m);
113003 +}
113004 +
113005 +static void pax_mirror_pte(struct vm_area_struct *vma, unsigned long address, pte_t *pte, pmd_t *pmd, spinlock_t *ptl)
113006 +{
113007 + struct page *page_m;
113008 + pte_t entry;
113009 +
113010 + if (!(vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC))
113011 + goto out;
113012 +
113013 + entry = *pte;
113014 + page_m = vm_normal_page(vma, address, entry);
113015 + if (!page_m)
113016 + pax_mirror_pfn_pte(vma, address, pte_pfn(entry), ptl);
113017 + else if (PageAnon(page_m)) {
113018 + if (pax_find_mirror_vma(vma)) {
113019 + pte_unmap_unlock(pte, ptl);
113020 + lock_page(page_m);
113021 + pte = pte_offset_map_lock(vma->vm_mm, pmd, address, &ptl);
113022 + if (pte_same(entry, *pte))
113023 + pax_mirror_anon_pte(vma, address, page_m, ptl);
113024 + else
113025 + unlock_page(page_m);
113026 + }
113027 + } else
113028 + pax_mirror_file_pte(vma, address, page_m, ptl);
113029 +
113030 +out:
113031 + pte_unmap_unlock(pte, ptl);
113032 +}
113033 +#endif
113034 +
113035 /*
113036 * Handle the case of a page which we actually need to copy to a new page.
113037 *
113038 @@ -2094,6 +2310,12 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma,
113039 */
113040 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
113041 if (likely(pte_same(*page_table, orig_pte))) {
113042 +
113043 +#ifdef CONFIG_PAX_SEGMEXEC
113044 + if (pax_find_mirror_vma(vma))
113045 + BUG_ON(!trylock_page(new_page));
113046 +#endif
113047 +
113048 if (old_page) {
113049 if (!PageAnon(old_page)) {
113050 dec_mm_counter_fast(mm, MM_FILEPAGES);
113051 @@ -2148,6 +2370,10 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma,
113052 page_remove_rmap(old_page);
113053 }
113054
113055 +#ifdef CONFIG_PAX_SEGMEXEC
113056 + pax_mirror_anon_pte(vma, address, new_page, ptl);
113057 +#endif
113058 +
113059 /* Free the old page.. */
113060 new_page = old_page;
113061 page_copied = 1;
113062 @@ -2579,6 +2805,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
113063 swap_free(entry);
113064 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
113065 try_to_free_swap(page);
113066 +
113067 +#ifdef CONFIG_PAX_SEGMEXEC
113068 + if ((flags & FAULT_FLAG_WRITE) || !pax_find_mirror_vma(vma))
113069 +#endif
113070 +
113071 unlock_page(page);
113072 if (page != swapcache) {
113073 /*
113074 @@ -2602,6 +2833,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
113075
113076 /* No need to invalidate - it was non-present before */
113077 update_mmu_cache(vma, address, page_table);
113078 +
113079 +#ifdef CONFIG_PAX_SEGMEXEC
113080 + pax_mirror_anon_pte(vma, address, page, ptl);
113081 +#endif
113082 +
113083 unlock:
113084 pte_unmap_unlock(page_table, ptl);
113085 out:
113086 @@ -2621,40 +2857,6 @@ out_release:
113087 }
113088
113089 /*
113090 - * This is like a special single-page "expand_{down|up}wards()",
113091 - * except we must first make sure that 'address{-|+}PAGE_SIZE'
113092 - * doesn't hit another vma.
113093 - */
113094 -static inline int check_stack_guard_page(struct vm_area_struct *vma, unsigned long address)
113095 -{
113096 - address &= PAGE_MASK;
113097 - if ((vma->vm_flags & VM_GROWSDOWN) && address == vma->vm_start) {
113098 - struct vm_area_struct *prev = vma->vm_prev;
113099 -
113100 - /*
113101 - * Is there a mapping abutting this one below?
113102 - *
113103 - * That's only ok if it's the same stack mapping
113104 - * that has gotten split..
113105 - */
113106 - if (prev && prev->vm_end == address)
113107 - return prev->vm_flags & VM_GROWSDOWN ? 0 : -ENOMEM;
113108 -
113109 - return expand_downwards(vma, address - PAGE_SIZE);
113110 - }
113111 - if ((vma->vm_flags & VM_GROWSUP) && address + PAGE_SIZE == vma->vm_end) {
113112 - struct vm_area_struct *next = vma->vm_next;
113113 -
113114 - /* As VM_GROWSDOWN but s/below/above/ */
113115 - if (next && next->vm_start == address + PAGE_SIZE)
113116 - return next->vm_flags & VM_GROWSUP ? 0 : -ENOMEM;
113117 -
113118 - return expand_upwards(vma, address + PAGE_SIZE);
113119 - }
113120 - return 0;
113121 -}
113122 -
113123 -/*
113124 * We enter with non-exclusive mmap_sem (to exclude vma changes,
113125 * but allow concurrent faults), and pte mapped but not yet locked.
113126 * We return with mmap_sem still held, but pte unmapped and unlocked.
113127 @@ -2664,31 +2866,29 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
113128 unsigned int flags)
113129 {
113130 struct mem_cgroup *memcg;
113131 - struct page *page;
113132 + struct page *page = NULL;
113133 spinlock_t *ptl;
113134 pte_t entry;
113135
113136 - pte_unmap(page_table);
113137 -
113138 /* File mapping without ->vm_ops ? */
113139 - if (vma->vm_flags & VM_SHARED)
113140 + if (vma->vm_flags & VM_SHARED) {
113141 + pte_unmap(page_table);
113142 return VM_FAULT_SIGBUS;
113143 + }
113144
113145 - /* Check if we need to add a guard page to the stack */
113146 - if (check_stack_guard_page(vma, address) < 0)
113147 - return VM_FAULT_SIGSEGV;
113148 -
113149 - /* Use the zero-page for reads */
113150 if (!(flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(mm)) {
113151 entry = pte_mkspecial(pfn_pte(my_zero_pfn(address),
113152 vma->vm_page_prot));
113153 - page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
113154 + ptl = pte_lockptr(mm, pmd);
113155 + spin_lock(ptl);
113156 if (!pte_none(*page_table))
113157 goto unlock;
113158 goto setpte;
113159 }
113160
113161 /* Allocate our own private page. */
113162 + pte_unmap(page_table);
113163 +
113164 if (unlikely(anon_vma_prepare(vma)))
113165 goto oom;
113166 page = alloc_zeroed_user_highpage_movable(vma, address);
113167 @@ -2713,6 +2913,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
113168 if (!pte_none(*page_table))
113169 goto release;
113170
113171 +#ifdef CONFIG_PAX_SEGMEXEC
113172 + if (pax_find_mirror_vma(vma))
113173 + BUG_ON(!trylock_page(page));
113174 +#endif
113175 +
113176 inc_mm_counter_fast(mm, MM_ANONPAGES);
113177 page_add_new_anon_rmap(page, vma, address);
113178 mem_cgroup_commit_charge(page, memcg, false);
113179 @@ -2722,6 +2927,12 @@ setpte:
113180
113181 /* No need to invalidate - it was non-present before */
113182 update_mmu_cache(vma, address, page_table);
113183 +
113184 +#ifdef CONFIG_PAX_SEGMEXEC
113185 + if (page)
113186 + pax_mirror_anon_pte(vma, address, page, ptl);
113187 +#endif
113188 +
113189 unlock:
113190 pte_unmap_unlock(page_table, ptl);
113191 return 0;
113192 @@ -2954,6 +3165,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
113193 return ret;
113194 }
113195 do_set_pte(vma, address, fault_page, pte, false, false);
113196 +
113197 +#ifdef CONFIG_PAX_SEGMEXEC
113198 + pax_mirror_file_pte(vma, address, fault_page, ptl);
113199 +#endif
113200 +
113201 unlock_page(fault_page);
113202 unlock_out:
113203 pte_unmap_unlock(pte, ptl);
113204 @@ -3005,7 +3221,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma,
113205 }
113206 goto uncharge_out;
113207 }
113208 +
113209 +#ifdef CONFIG_PAX_SEGMEXEC
113210 + if (pax_find_mirror_vma(vma))
113211 + BUG_ON(!trylock_page(new_page));
113212 +#endif
113213 +
113214 do_set_pte(vma, address, new_page, pte, true, true);
113215 +
113216 +#ifdef CONFIG_PAX_SEGMEXEC
113217 + pax_mirror_anon_pte(vma, address, new_page, ptl);
113218 +#endif
113219 +
113220 mem_cgroup_commit_charge(new_page, memcg, false);
113221 lru_cache_add_active_or_unevictable(new_page, vma);
113222 pte_unmap_unlock(pte, ptl);
113223 @@ -3063,6 +3290,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma,
113224 return ret;
113225 }
113226 do_set_pte(vma, address, fault_page, pte, true, false);
113227 +
113228 +#ifdef CONFIG_PAX_SEGMEXEC
113229 + pax_mirror_file_pte(vma, address, fault_page, ptl);
113230 +#endif
113231 +
113232 pte_unmap_unlock(pte, ptl);
113233
113234 if (set_page_dirty(fault_page))
113235 @@ -3288,6 +3520,12 @@ static int handle_pte_fault(struct mm_struct *mm,
113236 if (flags & FAULT_FLAG_WRITE)
113237 flush_tlb_fix_spurious_fault(vma, address);
113238 }
113239 +
113240 +#ifdef CONFIG_PAX_SEGMEXEC
113241 + pax_mirror_pte(vma, address, pte, pmd, ptl);
113242 + return 0;
113243 +#endif
113244 +
113245 unlock:
113246 pte_unmap_unlock(pte, ptl);
113247 return 0;
113248 @@ -3307,9 +3545,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
113249 pmd_t *pmd;
113250 pte_t *pte;
113251
113252 +#ifdef CONFIG_PAX_SEGMEXEC
113253 + struct vm_area_struct *vma_m;
113254 +#endif
113255 +
113256 if (unlikely(is_vm_hugetlb_page(vma)))
113257 return hugetlb_fault(mm, vma, address, flags);
113258
113259 +#ifdef CONFIG_PAX_SEGMEXEC
113260 + vma_m = pax_find_mirror_vma(vma);
113261 + if (vma_m) {
113262 + unsigned long address_m;
113263 + pgd_t *pgd_m;
113264 + pud_t *pud_m;
113265 + pmd_t *pmd_m;
113266 +
113267 + if (vma->vm_start > vma_m->vm_start) {
113268 + address_m = address;
113269 + address -= SEGMEXEC_TASK_SIZE;
113270 + vma = vma_m;
113271 + } else
113272 + address_m = address + SEGMEXEC_TASK_SIZE;
113273 +
113274 + pgd_m = pgd_offset(mm, address_m);
113275 + pud_m = pud_alloc(mm, pgd_m, address_m);
113276 + if (!pud_m)
113277 + return VM_FAULT_OOM;
113278 + pmd_m = pmd_alloc(mm, pud_m, address_m);
113279 + if (!pmd_m)
113280 + return VM_FAULT_OOM;
113281 + if (!pmd_present(*pmd_m) && __pte_alloc(mm, vma_m, pmd_m, address_m))
113282 + return VM_FAULT_OOM;
113283 + pax_unmap_mirror_pte(vma_m, address_m, pmd_m);
113284 + }
113285 +#endif
113286 +
113287 pgd = pgd_offset(mm, address);
113288 pud = pud_alloc(mm, pgd, address);
113289 if (!pud)
113290 @@ -3444,6 +3714,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
113291 spin_unlock(&mm->page_table_lock);
113292 return 0;
113293 }
113294 +
113295 +int __pud_alloc_kernel(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
113296 +{
113297 + pud_t *new = pud_alloc_one(mm, address);
113298 + if (!new)
113299 + return -ENOMEM;
113300 +
113301 + smp_wmb(); /* See comment in __pte_alloc */
113302 +
113303 + spin_lock(&mm->page_table_lock);
113304 + if (pgd_present(*pgd)) /* Another has populated it */
113305 + pud_free(mm, new);
113306 + else
113307 + pgd_populate_kernel(mm, pgd, new);
113308 + spin_unlock(&mm->page_table_lock);
113309 + return 0;
113310 +}
113311 #endif /* __PAGETABLE_PUD_FOLDED */
113312
113313 #ifndef __PAGETABLE_PMD_FOLDED
113314 @@ -3476,6 +3763,32 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
113315 spin_unlock(&mm->page_table_lock);
113316 return 0;
113317 }
113318 +
113319 +int __pmd_alloc_kernel(struct mm_struct *mm, pud_t *pud, unsigned long address)
113320 +{
113321 + pmd_t *new = pmd_alloc_one(mm, address);
113322 + if (!new)
113323 + return -ENOMEM;
113324 +
113325 + smp_wmb(); /* See comment in __pte_alloc */
113326 +
113327 + spin_lock(&mm->page_table_lock);
113328 +#ifndef __ARCH_HAS_4LEVEL_HACK
113329 + if (!pud_present(*pud)) {
113330 + mm_inc_nr_pmds(mm);
113331 + pud_populate_kernel(mm, pud, new);
113332 + } else /* Another has populated it */
113333 + pmd_free(mm, new);
113334 +#else
113335 + if (!pgd_present(*pud)) {
113336 + mm_inc_nr_pmds(mm);
113337 + pgd_populate_kernel(mm, pud, new);
113338 + } else /* Another has populated it */
113339 + pmd_free(mm, new);
113340 +#endif /* __ARCH_HAS_4LEVEL_HACK */
113341 + spin_unlock(&mm->page_table_lock);
113342 + return 0;
113343 +}
113344 #endif /* __PAGETABLE_PMD_FOLDED */
113345
113346 static int __follow_pte(struct mm_struct *mm, unsigned long address,
113347 @@ -3585,8 +3898,8 @@ out:
113348 return ret;
113349 }
113350
113351 -int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
113352 - void *buf, int len, int write)
113353 +ssize_t generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
113354 + void *buf, size_t len, int write)
113355 {
113356 resource_size_t phys_addr;
113357 unsigned long prot = 0;
113358 @@ -3612,8 +3925,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
113359 * Access another process' address space as given in mm. If non-NULL, use the
113360 * given task for page fault accounting.
113361 */
113362 -static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
113363 - unsigned long addr, void *buf, int len, int write)
113364 +static ssize_t __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
113365 + unsigned long addr, void *buf, size_t len, int write)
113366 {
113367 struct vm_area_struct *vma;
113368 void *old_buf = buf;
113369 @@ -3621,7 +3934,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
113370 down_read(&mm->mmap_sem);
113371 /* ignore errors, just check how much was successfully transferred */
113372 while (len) {
113373 - int bytes, ret, offset;
113374 + ssize_t bytes, ret, offset;
113375 void *maddr;
113376 struct page *page = NULL;
113377
113378 @@ -3682,8 +3995,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
113379 *
113380 * The caller must hold a reference on @mm.
113381 */
113382 -int access_remote_vm(struct mm_struct *mm, unsigned long addr,
113383 - void *buf, int len, int write)
113384 +ssize_t access_remote_vm(struct mm_struct *mm, unsigned long addr,
113385 + void *buf, size_t len, int write)
113386 {
113387 return __access_remote_vm(NULL, mm, addr, buf, len, write);
113388 }
113389 @@ -3693,11 +4006,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
113390 * Source/target buffer must be kernel space,
113391 * Do not walk the page table directly, use get_user_pages
113392 */
113393 -int access_process_vm(struct task_struct *tsk, unsigned long addr,
113394 - void *buf, int len, int write)
113395 +ssize_t access_process_vm(struct task_struct *tsk, unsigned long addr,
113396 + void *buf, size_t len, int write)
113397 {
113398 struct mm_struct *mm;
113399 - int ret;
113400 + ssize_t ret;
113401
113402 mm = get_task_mm(tsk);
113403 if (!mm)
113404 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
113405 index 99d4c1d..a577817 100644
113406 --- a/mm/mempolicy.c
113407 +++ b/mm/mempolicy.c
113408 @@ -703,6 +703,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
113409 unsigned long vmstart;
113410 unsigned long vmend;
113411
113412 +#ifdef CONFIG_PAX_SEGMEXEC
113413 + struct vm_area_struct *vma_m;
113414 +#endif
113415 +
113416 vma = find_vma(mm, start);
113417 if (!vma || vma->vm_start > start)
113418 return -EFAULT;
113419 @@ -746,6 +750,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
113420 err = vma_replace_policy(vma, new_pol);
113421 if (err)
113422 goto out;
113423 +
113424 +#ifdef CONFIG_PAX_SEGMEXEC
113425 + vma_m = pax_find_mirror_vma(vma);
113426 + if (vma_m) {
113427 + err = vma_replace_policy(vma_m, new_pol);
113428 + if (err)
113429 + goto out;
113430 + }
113431 +#endif
113432 +
113433 }
113434
113435 out:
113436 @@ -1161,6 +1175,17 @@ static long do_mbind(unsigned long start, unsigned long len,
113437
113438 if (end < start)
113439 return -EINVAL;
113440 +
113441 +#ifdef CONFIG_PAX_SEGMEXEC
113442 + if (mm->pax_flags & MF_PAX_SEGMEXEC) {
113443 + if (end > SEGMEXEC_TASK_SIZE)
113444 + return -EINVAL;
113445 + } else
113446 +#endif
113447 +
113448 + if (end > TASK_SIZE)
113449 + return -EINVAL;
113450 +
113451 if (end == start)
113452 return 0;
113453
113454 @@ -1386,8 +1411,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
113455 */
113456 tcred = __task_cred(task);
113457 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
113458 - !uid_eq(cred->uid, tcred->suid) && !uid_eq(cred->uid, tcred->uid) &&
113459 - !capable(CAP_SYS_NICE)) {
113460 + !uid_eq(cred->uid, tcred->suid) && !capable(CAP_SYS_NICE)) {
113461 rcu_read_unlock();
113462 err = -EPERM;
113463 goto out_put;
113464 @@ -1418,6 +1442,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
113465 goto out;
113466 }
113467
113468 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
113469 + if (mm != current->mm &&
113470 + (mm->pax_flags & MF_PAX_RANDMMAP || mm->pax_flags & MF_PAX_SEGMEXEC)) {
113471 + mmput(mm);
113472 + err = -EPERM;
113473 + goto out;
113474 + }
113475 +#endif
113476 +
113477 err = do_migrate_pages(mm, old, new,
113478 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
113479
113480 diff --git a/mm/migrate.c b/mm/migrate.c
113481 index eb42671..9f2f3ea 100644
113482 --- a/mm/migrate.c
113483 +++ b/mm/migrate.c
113484 @@ -1491,8 +1491,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
113485 */
113486 tcred = __task_cred(task);
113487 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
113488 - !uid_eq(cred->uid, tcred->suid) && !uid_eq(cred->uid, tcred->uid) &&
113489 - !capable(CAP_SYS_NICE)) {
113490 + !uid_eq(cred->uid, tcred->suid) && !capable(CAP_SYS_NICE)) {
113491 rcu_read_unlock();
113492 err = -EPERM;
113493 goto out;
113494 diff --git a/mm/mlock.c b/mm/mlock.c
113495 index 6fd2cf1..cbae765 100644
113496 --- a/mm/mlock.c
113497 +++ b/mm/mlock.c
113498 @@ -14,6 +14,7 @@
113499 #include <linux/pagevec.h>
113500 #include <linux/mempolicy.h>
113501 #include <linux/syscalls.h>
113502 +#include <linux/security.h>
113503 #include <linux/sched.h>
113504 #include <linux/export.h>
113505 #include <linux/rmap.h>
113506 @@ -557,7 +558,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
113507 {
113508 unsigned long nstart, end, tmp;
113509 struct vm_area_struct * vma, * prev;
113510 - int error;
113511 + int error = 0;
113512
113513 VM_BUG_ON(start & ~PAGE_MASK);
113514 VM_BUG_ON(len != PAGE_ALIGN(len));
113515 @@ -566,6 +567,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
113516 return -EINVAL;
113517 if (end == start)
113518 return 0;
113519 + if (end > TASK_SIZE)
113520 + return -EINVAL;
113521 +
113522 vma = find_vma(current->mm, start);
113523 if (!vma || vma->vm_start > start)
113524 return -ENOMEM;
113525 @@ -577,6 +581,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
113526 for (nstart = start ; ; ) {
113527 vm_flags_t newflags;
113528
113529 +#ifdef CONFIG_PAX_SEGMEXEC
113530 + if ((current->mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_start >= SEGMEXEC_TASK_SIZE))
113531 + break;
113532 +#endif
113533 +
113534 /* Here we know that vma->vm_start <= nstart < vma->vm_end. */
113535
113536 newflags = vma->vm_flags & ~VM_LOCKED;
113537 @@ -627,6 +636,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
113538 locked += current->mm->locked_vm;
113539
113540 /* check against resource limits */
113541 + gr_learn_resource(current, RLIMIT_MEMLOCK, (current->mm->locked_vm << PAGE_SHIFT) + len, 1);
113542 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
113543 error = do_mlock(start, len, 1);
113544
113545 @@ -668,6 +678,11 @@ static int do_mlockall(int flags)
113546 for (vma = current->mm->mmap; vma ; vma = prev->vm_next) {
113547 vm_flags_t newflags;
113548
113549 +#ifdef CONFIG_PAX_SEGMEXEC
113550 + if ((current->mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_start >= SEGMEXEC_TASK_SIZE))
113551 + break;
113552 +#endif
113553 +
113554 newflags = vma->vm_flags & ~VM_LOCKED;
113555 if (flags & MCL_CURRENT)
113556 newflags |= VM_LOCKED;
113557 @@ -699,8 +714,10 @@ SYSCALL_DEFINE1(mlockall, int, flags)
113558 lock_limit >>= PAGE_SHIFT;
113559
113560 ret = -ENOMEM;
113561 +
113562 + gr_learn_resource(current, RLIMIT_MEMLOCK, current->mm->total_vm << PAGE_SHIFT, 1);
113563 +
113564 down_write(&current->mm->mmap_sem);
113565 -
113566 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
113567 capable(CAP_IPC_LOCK))
113568 ret = do_mlockall(flags);
113569 diff --git a/mm/mm_init.c b/mm/mm_init.c
113570 index fdadf91..5f527d1 100644
113571 --- a/mm/mm_init.c
113572 +++ b/mm/mm_init.c
113573 @@ -170,7 +170,7 @@ static int __meminit mm_compute_batch_notifier(struct notifier_block *self,
113574 return NOTIFY_OK;
113575 }
113576
113577 -static struct notifier_block compute_batch_nb __meminitdata = {
113578 +static struct notifier_block compute_batch_nb __meminitconst = {
113579 .notifier_call = mm_compute_batch_notifier,
113580 .priority = IPC_CALLBACK_PRI, /* use lowest priority */
113581 };
113582 diff --git a/mm/mmap.c b/mm/mmap.c
113583 index aa632ad..13456342 100644
113584 --- a/mm/mmap.c
113585 +++ b/mm/mmap.c
113586 @@ -41,6 +41,7 @@
113587 #include <linux/notifier.h>
113588 #include <linux/memory.h>
113589 #include <linux/printk.h>
113590 +#include <linux/random.h>
113591
113592 #include <asm/uaccess.h>
113593 #include <asm/cacheflush.h>
113594 @@ -57,6 +58,16 @@
113595 #define arch_rebalance_pgtables(addr, len) (addr)
113596 #endif
113597
113598 +static inline void verify_mm_writelocked(struct mm_struct *mm)
113599 +{
113600 +#if defined(CONFIG_DEBUG_VM) || defined(CONFIG_PAX)
113601 + if (unlikely(down_read_trylock(&mm->mmap_sem))) {
113602 + up_read(&mm->mmap_sem);
113603 + BUG();
113604 + }
113605 +#endif
113606 +}
113607 +
113608 static void unmap_region(struct mm_struct *mm,
113609 struct vm_area_struct *vma, struct vm_area_struct *prev,
113610 unsigned long start, unsigned long end);
113611 @@ -76,16 +87,25 @@ static void unmap_region(struct mm_struct *mm,
113612 * x: (no) no x: (no) yes x: (no) yes x: (yes) yes
113613 *
113614 */
113615 -pgprot_t protection_map[16] = {
113616 +pgprot_t protection_map[16] __read_only = {
113617 __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
113618 __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
113619 };
113620
113621 -pgprot_t vm_get_page_prot(unsigned long vm_flags)
113622 +pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
113623 {
113624 - return __pgprot(pgprot_val(protection_map[vm_flags &
113625 + pgprot_t prot = __pgprot(pgprot_val(protection_map[vm_flags &
113626 (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]) |
113627 pgprot_val(arch_vm_get_page_prot(vm_flags)));
113628 +
113629 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_X86_32)
113630 + if (!(__supported_pte_mask & _PAGE_NX) &&
113631 + (vm_flags & (VM_PAGEEXEC | VM_EXEC)) == VM_PAGEEXEC &&
113632 + (vm_flags & (VM_READ | VM_WRITE)))
113633 + prot = __pgprot(pte_val(pte_exprotect(__pte(pgprot_val(prot)))));
113634 +#endif
113635 +
113636 + return prot;
113637 }
113638 EXPORT_SYMBOL(vm_get_page_prot);
113639
113640 @@ -114,6 +134,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
113641 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
113642 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
113643 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
113644 +unsigned long sysctl_heap_stack_gap __read_mostly = 64*1024;
113645 /*
113646 * Make sure vm_committed_as in one cacheline and not cacheline shared with
113647 * other variables. It can be updated by several CPUs frequently.
113648 @@ -271,6 +292,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
113649 struct vm_area_struct *next = vma->vm_next;
113650
113651 might_sleep();
113652 + BUG_ON(vma->vm_mirror);
113653 if (vma->vm_ops && vma->vm_ops->close)
113654 vma->vm_ops->close(vma);
113655 if (vma->vm_file)
113656 @@ -284,6 +306,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len);
113657
113658 SYSCALL_DEFINE1(brk, unsigned long, brk)
113659 {
113660 + unsigned long rlim;
113661 unsigned long retval;
113662 unsigned long newbrk, oldbrk;
113663 struct mm_struct *mm = current->mm;
113664 @@ -314,7 +337,13 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
113665 * segment grow beyond its set limit the in case where the limit is
113666 * not page aligned -Ram Gupta
113667 */
113668 - if (check_data_rlimit(rlimit(RLIMIT_DATA), brk, mm->start_brk,
113669 + rlim = rlimit(RLIMIT_DATA);
113670 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
113671 + /* force a minimum 16MB brk heap on setuid/setgid binaries */
113672 + if (rlim < PAGE_SIZE && (get_dumpable(mm) != SUID_DUMP_USER) && gr_is_global_nonroot(current_uid()))
113673 + rlim = 4096 * PAGE_SIZE;
113674 +#endif
113675 + if (check_data_rlimit(rlim, brk, mm->start_brk,
113676 mm->end_data, mm->start_data))
113677 goto out;
113678
113679 @@ -967,6 +996,12 @@ static int
113680 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
113681 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
113682 {
113683 +
113684 +#ifdef CONFIG_PAX_SEGMEXEC
113685 + if ((vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) && vma->vm_start == SEGMEXEC_TASK_SIZE)
113686 + return 0;
113687 +#endif
113688 +
113689 if (is_mergeable_vma(vma, file, vm_flags) &&
113690 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
113691 if (vma->vm_pgoff == vm_pgoff)
113692 @@ -986,6 +1021,12 @@ static int
113693 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
113694 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
113695 {
113696 +
113697 +#ifdef CONFIG_PAX_SEGMEXEC
113698 + if ((vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) && vma->vm_end == SEGMEXEC_TASK_SIZE)
113699 + return 0;
113700 +#endif
113701 +
113702 if (is_mergeable_vma(vma, file, vm_flags) &&
113703 is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
113704 pgoff_t vm_pglen;
113705 @@ -1035,6 +1076,13 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
113706 struct vm_area_struct *area, *next;
113707 int err;
113708
113709 +#ifdef CONFIG_PAX_SEGMEXEC
113710 + unsigned long addr_m = addr + SEGMEXEC_TASK_SIZE, end_m = end + SEGMEXEC_TASK_SIZE;
113711 + struct vm_area_struct *area_m = NULL, *next_m = NULL, *prev_m = NULL;
113712 +
113713 + BUG_ON((mm->pax_flags & MF_PAX_SEGMEXEC) && SEGMEXEC_TASK_SIZE < end);
113714 +#endif
113715 +
113716 /*
113717 * We later require that vma->vm_flags == vm_flags,
113718 * so this tests vma->vm_flags & VM_SPECIAL, too.
113719 @@ -1050,6 +1098,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
113720 if (next && next->vm_end == end) /* cases 6, 7, 8 */
113721 next = next->vm_next;
113722
113723 +#ifdef CONFIG_PAX_SEGMEXEC
113724 + if (prev)
113725 + prev_m = pax_find_mirror_vma(prev);
113726 + if (area)
113727 + area_m = pax_find_mirror_vma(area);
113728 + if (next)
113729 + next_m = pax_find_mirror_vma(next);
113730 +#endif
113731 +
113732 /*
113733 * Can it merge with the predecessor?
113734 */
113735 @@ -1069,9 +1126,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
113736 /* cases 1, 6 */
113737 err = vma_adjust(prev, prev->vm_start,
113738 next->vm_end, prev->vm_pgoff, NULL);
113739 - } else /* cases 2, 5, 7 */
113740 +
113741 +#ifdef CONFIG_PAX_SEGMEXEC
113742 + if (!err && prev_m)
113743 + err = vma_adjust(prev_m, prev_m->vm_start,
113744 + next_m->vm_end, prev_m->vm_pgoff, NULL);
113745 +#endif
113746 +
113747 + } else { /* cases 2, 5, 7 */
113748 err = vma_adjust(prev, prev->vm_start,
113749 end, prev->vm_pgoff, NULL);
113750 +
113751 +#ifdef CONFIG_PAX_SEGMEXEC
113752 + if (!err && prev_m)
113753 + err = vma_adjust(prev_m, prev_m->vm_start,
113754 + end_m, prev_m->vm_pgoff, NULL);
113755 +#endif
113756 +
113757 + }
113758 if (err)
113759 return NULL;
113760 khugepaged_enter_vma_merge(prev, vm_flags);
113761 @@ -1085,12 +1157,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
113762 mpol_equal(policy, vma_policy(next)) &&
113763 can_vma_merge_before(next, vm_flags,
113764 anon_vma, file, pgoff+pglen)) {
113765 - if (prev && addr < prev->vm_end) /* case 4 */
113766 + if (prev && addr < prev->vm_end) { /* case 4 */
113767 err = vma_adjust(prev, prev->vm_start,
113768 addr, prev->vm_pgoff, NULL);
113769 - else /* cases 3, 8 */
113770 +
113771 +#ifdef CONFIG_PAX_SEGMEXEC
113772 + if (!err && prev_m)
113773 + err = vma_adjust(prev_m, prev_m->vm_start,
113774 + addr_m, prev_m->vm_pgoff, NULL);
113775 +#endif
113776 +
113777 + } else { /* cases 3, 8 */
113778 err = vma_adjust(area, addr, next->vm_end,
113779 next->vm_pgoff - pglen, NULL);
113780 +
113781 +#ifdef CONFIG_PAX_SEGMEXEC
113782 + if (!err && area_m)
113783 + err = vma_adjust(area_m, addr_m, next_m->vm_end,
113784 + next_m->vm_pgoff - pglen, NULL);
113785 +#endif
113786 +
113787 + }
113788 if (err)
113789 return NULL;
113790 khugepaged_enter_vma_merge(area, vm_flags);
113791 @@ -1199,8 +1286,10 @@ none:
113792 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
113793 struct file *file, long pages)
113794 {
113795 - const unsigned long stack_flags
113796 - = VM_STACK_FLAGS & (VM_GROWSUP|VM_GROWSDOWN);
113797 +
113798 +#ifdef CONFIG_PAX_RANDMMAP
113799 + if (!(mm->pax_flags & MF_PAX_RANDMMAP) || (flags & (VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)))
113800 +#endif
113801
113802 mm->total_vm += pages;
113803
113804 @@ -1208,7 +1297,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
113805 mm->shared_vm += pages;
113806 if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC)
113807 mm->exec_vm += pages;
113808 - } else if (flags & stack_flags)
113809 + } else if (flags & (VM_GROWSUP|VM_GROWSDOWN))
113810 mm->stack_vm += pages;
113811 }
113812 #endif /* CONFIG_PROC_FS */
113813 @@ -1238,6 +1327,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
113814 locked += mm->locked_vm;
113815 lock_limit = rlimit(RLIMIT_MEMLOCK);
113816 lock_limit >>= PAGE_SHIFT;
113817 + gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
113818 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
113819 return -EAGAIN;
113820 }
113821 @@ -1267,7 +1357,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
113822 * (the exception is when the underlying filesystem is noexec
113823 * mounted, in which case we dont add PROT_EXEC.)
113824 */
113825 - if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
113826 + if ((prot & (PROT_READ | PROT_WRITE)) && (current->personality & READ_IMPLIES_EXEC))
113827 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
113828 prot |= PROT_EXEC;
113829
113830 @@ -1290,7 +1380,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
113831 /* Obtain the address to map to. we verify (or select) it and ensure
113832 * that it represents a valid section of the address space.
113833 */
113834 - addr = get_unmapped_area(file, addr, len, pgoff, flags);
113835 + addr = get_unmapped_area(file, addr, len, pgoff, flags | ((prot & PROT_EXEC) ? MAP_EXECUTABLE : 0));
113836 if (addr & ~PAGE_MASK)
113837 return addr;
113838
113839 @@ -1301,6 +1391,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
113840 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
113841 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
113842
113843 +#ifdef CONFIG_PAX_MPROTECT
113844 + if (mm->pax_flags & MF_PAX_MPROTECT) {
113845 +
113846 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
113847 + if (file && !pgoff && (vm_flags & VM_EXEC) && mm->binfmt &&
113848 + mm->binfmt->handle_mmap)
113849 + mm->binfmt->handle_mmap(file);
113850 +#endif
113851 +
113852 +#ifndef CONFIG_PAX_MPROTECT_COMPAT
113853 + if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC)) {
113854 + gr_log_rwxmmap(file);
113855 +
113856 +#ifdef CONFIG_PAX_EMUPLT
113857 + vm_flags &= ~VM_EXEC;
113858 +#else
113859 + return -EPERM;
113860 +#endif
113861 +
113862 + }
113863 +
113864 + if (!(vm_flags & VM_EXEC))
113865 + vm_flags &= ~VM_MAYEXEC;
113866 +#else
113867 + if ((vm_flags & (VM_WRITE | VM_EXEC)) != VM_EXEC)
113868 + vm_flags &= ~(VM_EXEC | VM_MAYEXEC);
113869 +#endif
113870 + else
113871 + vm_flags &= ~VM_MAYWRITE;
113872 + }
113873 +#endif
113874 +
113875 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_X86_32)
113876 + if ((mm->pax_flags & MF_PAX_PAGEEXEC) && file)
113877 + vm_flags &= ~VM_PAGEEXEC;
113878 +#endif
113879 +
113880 if (flags & MAP_LOCKED)
113881 if (!can_do_mlock())
113882 return -EPERM;
113883 @@ -1388,6 +1515,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
113884 vm_flags |= VM_NORESERVE;
113885 }
113886
113887 + if (!gr_acl_handle_mmap(file, prot))
113888 + return -EACCES;
113889 +
113890 addr = mmap_region(file, addr, len, vm_flags, pgoff);
113891 if (!IS_ERR_VALUE(addr) &&
113892 ((vm_flags & VM_LOCKED) ||
113893 @@ -1481,7 +1611,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
113894 vm_flags_t vm_flags = vma->vm_flags;
113895
113896 /* If it was private or non-writable, the write bit is already clear */
113897 - if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED)))
113898 + if ((vm_flags & (VM_WRITE|VM_SHARED)) != (VM_WRITE|VM_SHARED))
113899 return 0;
113900
113901 /* The backer wishes to know when pages are first written to? */
113902 @@ -1532,7 +1662,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
113903 struct rb_node **rb_link, *rb_parent;
113904 unsigned long charged = 0;
113905
113906 +#ifdef CONFIG_PAX_SEGMEXEC
113907 + struct vm_area_struct *vma_m = NULL;
113908 +#endif
113909 +
113910 + /*
113911 + * mm->mmap_sem is required to protect against another thread
113912 + * changing the mappings in case we sleep.
113913 + */
113914 + verify_mm_writelocked(mm);
113915 +
113916 /* Check against address space limit. */
113917 +
113918 +#ifdef CONFIG_PAX_RANDMMAP
113919 + if (!(mm->pax_flags & MF_PAX_RANDMMAP) || (vm_flags & (VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)))
113920 +#endif
113921 +
113922 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) {
113923 unsigned long nr_pages;
113924
113925 @@ -1555,6 +1700,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
113926 &rb_parent)) {
113927 if (do_munmap(mm, addr, len))
113928 return -ENOMEM;
113929 + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent));
113930 }
113931
113932 /*
113933 @@ -1586,6 +1732,16 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
113934 goto unacct_error;
113935 }
113936
113937 +#ifdef CONFIG_PAX_SEGMEXEC
113938 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && (vm_flags & VM_EXEC)) {
113939 + vma_m = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
113940 + if (!vma_m) {
113941 + error = -ENOMEM;
113942 + goto free_vma;
113943 + }
113944 + }
113945 +#endif
113946 +
113947 vma->vm_mm = mm;
113948 vma->vm_start = addr;
113949 vma->vm_end = addr + len;
113950 @@ -1616,6 +1772,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
113951 if (error)
113952 goto unmap_and_free_vma;
113953
113954 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_X86_32)
113955 + if ((mm->pax_flags & MF_PAX_PAGEEXEC) && !(vma->vm_flags & VM_SPECIAL)) {
113956 + vma->vm_flags |= VM_PAGEEXEC;
113957 + vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
113958 + }
113959 +#endif
113960 +
113961 /* Can addr have changed??
113962 *
113963 * Answer: Yes, several device drivers can do it in their
113964 @@ -1634,6 +1797,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
113965 }
113966
113967 vma_link(mm, vma, prev, rb_link, rb_parent);
113968 +
113969 +#ifdef CONFIG_PAX_SEGMEXEC
113970 + if (vma_m)
113971 + BUG_ON(pax_mirror_vma(vma_m, vma));
113972 +#endif
113973 +
113974 /* Once vma denies write, undo our temporary denial count */
113975 if (file) {
113976 if (vm_flags & VM_SHARED)
113977 @@ -1646,6 +1815,7 @@ out:
113978 perf_event_mmap(vma);
113979
113980 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
113981 + track_exec_limit(mm, addr, addr + len, vm_flags);
113982 if (vm_flags & VM_LOCKED) {
113983 if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) ||
113984 vma == get_gate_vma(current->mm)))
113985 @@ -1683,6 +1853,12 @@ allow_write_and_free_vma:
113986 if (vm_flags & VM_DENYWRITE)
113987 allow_write_access(file);
113988 free_vma:
113989 +
113990 +#ifdef CONFIG_PAX_SEGMEXEC
113991 + if (vma_m)
113992 + kmem_cache_free(vm_area_cachep, vma_m);
113993 +#endif
113994 +
113995 kmem_cache_free(vm_area_cachep, vma);
113996 unacct_error:
113997 if (charged)
113998 @@ -1690,7 +1866,63 @@ unacct_error:
113999 return error;
114000 }
114001
114002 -unsigned long unmapped_area(struct vm_unmapped_area_info *info)
114003 +#ifdef CONFIG_GRKERNSEC_RAND_THREADSTACK
114004 +unsigned long gr_rand_threadstack_offset(const struct mm_struct *mm, const struct file *filp, unsigned long flags)
114005 +{
114006 + if ((mm->pax_flags & MF_PAX_RANDMMAP) && !filp && (flags & MAP_STACK))
114007 + return ((prandom_u32() & 0xFF) + 1) << PAGE_SHIFT;
114008 +
114009 + return 0;
114010 +}
114011 +#endif
114012 +
114013 +bool check_heap_stack_gap(const struct vm_area_struct *vma, unsigned long addr, unsigned long len, unsigned long offset)
114014 +{
114015 + if (!vma) {
114016 +#ifdef CONFIG_STACK_GROWSUP
114017 + if (addr > sysctl_heap_stack_gap)
114018 + vma = find_vma(current->mm, addr - sysctl_heap_stack_gap);
114019 + else
114020 + vma = find_vma(current->mm, 0);
114021 + if (vma && (vma->vm_flags & VM_GROWSUP))
114022 + return false;
114023 +#endif
114024 + return true;
114025 + }
114026 +
114027 + if (addr + len > vma->vm_start)
114028 + return false;
114029 +
114030 + if (vma->vm_flags & VM_GROWSDOWN)
114031 + return sysctl_heap_stack_gap <= vma->vm_start - addr - len;
114032 +#ifdef CONFIG_STACK_GROWSUP
114033 + else if (vma->vm_prev && (vma->vm_prev->vm_flags & VM_GROWSUP))
114034 + return addr - vma->vm_prev->vm_end >= sysctl_heap_stack_gap;
114035 +#endif
114036 + else if (offset)
114037 + return offset <= vma->vm_start - addr - len;
114038 +
114039 + return true;
114040 +}
114041 +
114042 +unsigned long skip_heap_stack_gap(const struct vm_area_struct *vma, unsigned long len, unsigned long offset)
114043 +{
114044 + if (vma->vm_start < len)
114045 + return -ENOMEM;
114046 +
114047 + if (!(vma->vm_flags & VM_GROWSDOWN)) {
114048 + if (offset <= vma->vm_start - len)
114049 + return vma->vm_start - len - offset;
114050 + else
114051 + return -ENOMEM;
114052 + }
114053 +
114054 + if (sysctl_heap_stack_gap <= vma->vm_start - len)
114055 + return vma->vm_start - len - sysctl_heap_stack_gap;
114056 + return -ENOMEM;
114057 +}
114058 +
114059 +unsigned long unmapped_area(const struct vm_unmapped_area_info *info)
114060 {
114061 /*
114062 * We implement the search by looking for an rbtree node that
114063 @@ -1738,11 +1970,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
114064 }
114065 }
114066
114067 - gap_start = vma->vm_prev ? vma->vm_prev->vm_end : 0;
114068 + gap_start = vma->vm_prev ? vma->vm_prev->vm_end: 0;
114069 check_current:
114070 /* Check if current node has a suitable gap */
114071 if (gap_start > high_limit)
114072 return -ENOMEM;
114073 +
114074 + if (gap_end - gap_start > info->threadstack_offset)
114075 + gap_start += info->threadstack_offset;
114076 + else
114077 + gap_start = gap_end;
114078 +
114079 + if (vma->vm_prev && (vma->vm_prev->vm_flags & VM_GROWSUP)) {
114080 + if (gap_end - gap_start > sysctl_heap_stack_gap)
114081 + gap_start += sysctl_heap_stack_gap;
114082 + else
114083 + gap_start = gap_end;
114084 + }
114085 + if (vma->vm_flags & VM_GROWSDOWN) {
114086 + if (gap_end - gap_start > sysctl_heap_stack_gap)
114087 + gap_end -= sysctl_heap_stack_gap;
114088 + else
114089 + gap_end = gap_start;
114090 + }
114091 if (gap_end >= low_limit && gap_end - gap_start >= length)
114092 goto found;
114093
114094 @@ -1792,7 +2042,7 @@ found:
114095 return gap_start;
114096 }
114097
114098 -unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
114099 +unsigned long unmapped_area_topdown(const struct vm_unmapped_area_info *info)
114100 {
114101 struct mm_struct *mm = current->mm;
114102 struct vm_area_struct *vma;
114103 @@ -1846,6 +2096,24 @@ check_current:
114104 gap_end = vma->vm_start;
114105 if (gap_end < low_limit)
114106 return -ENOMEM;
114107 +
114108 + if (gap_end - gap_start > info->threadstack_offset)
114109 + gap_end -= info->threadstack_offset;
114110 + else
114111 + gap_end = gap_start;
114112 +
114113 + if (vma->vm_prev && (vma->vm_prev->vm_flags & VM_GROWSUP)) {
114114 + if (gap_end - gap_start > sysctl_heap_stack_gap)
114115 + gap_start += sysctl_heap_stack_gap;
114116 + else
114117 + gap_start = gap_end;
114118 + }
114119 + if (vma->vm_flags & VM_GROWSDOWN) {
114120 + if (gap_end - gap_start > sysctl_heap_stack_gap)
114121 + gap_end -= sysctl_heap_stack_gap;
114122 + else
114123 + gap_end = gap_start;
114124 + }
114125 if (gap_start <= high_limit && gap_end - gap_start >= length)
114126 goto found;
114127
114128 @@ -1909,6 +2177,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
114129 struct mm_struct *mm = current->mm;
114130 struct vm_area_struct *vma;
114131 struct vm_unmapped_area_info info;
114132 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
114133
114134 if (len > TASK_SIZE - mmap_min_addr)
114135 return -ENOMEM;
114136 @@ -1916,11 +2185,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
114137 if (flags & MAP_FIXED)
114138 return addr;
114139
114140 +#ifdef CONFIG_PAX_RANDMMAP
114141 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
114142 +#endif
114143 +
114144 if (addr) {
114145 addr = PAGE_ALIGN(addr);
114146 vma = find_vma(mm, addr);
114147 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
114148 - (!vma || addr + len <= vma->vm_start))
114149 + check_heap_stack_gap(vma, addr, len, offset))
114150 return addr;
114151 }
114152
114153 @@ -1929,6 +2202,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
114154 info.low_limit = mm->mmap_base;
114155 info.high_limit = TASK_SIZE;
114156 info.align_mask = 0;
114157 + info.threadstack_offset = offset;
114158 return vm_unmapped_area(&info);
114159 }
114160 #endif
114161 @@ -1947,6 +2221,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
114162 struct mm_struct *mm = current->mm;
114163 unsigned long addr = addr0;
114164 struct vm_unmapped_area_info info;
114165 + unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
114166
114167 /* requested length too big for entire address space */
114168 if (len > TASK_SIZE - mmap_min_addr)
114169 @@ -1955,12 +2230,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
114170 if (flags & MAP_FIXED)
114171 return addr;
114172
114173 +#ifdef CONFIG_PAX_RANDMMAP
114174 + if (!(mm->pax_flags & MF_PAX_RANDMMAP))
114175 +#endif
114176 +
114177 /* requesting a specific address */
114178 if (addr) {
114179 addr = PAGE_ALIGN(addr);
114180 vma = find_vma(mm, addr);
114181 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
114182 - (!vma || addr + len <= vma->vm_start))
114183 + check_heap_stack_gap(vma, addr, len, offset))
114184 return addr;
114185 }
114186
114187 @@ -1969,6 +2248,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
114188 info.low_limit = max(PAGE_SIZE, mmap_min_addr);
114189 info.high_limit = mm->mmap_base;
114190 info.align_mask = 0;
114191 + info.threadstack_offset = offset;
114192 addr = vm_unmapped_area(&info);
114193
114194 /*
114195 @@ -1981,6 +2261,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
114196 VM_BUG_ON(addr != -ENOMEM);
114197 info.flags = 0;
114198 info.low_limit = TASK_UNMAPPED_BASE;
114199 +
114200 +#ifdef CONFIG_PAX_RANDMMAP
114201 + if (mm->pax_flags & MF_PAX_RANDMMAP)
114202 + info.low_limit += mm->delta_mmap;
114203 +#endif
114204 +
114205 info.high_limit = TASK_SIZE;
114206 addr = vm_unmapped_area(&info);
114207 }
114208 @@ -2081,6 +2367,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
114209 return vma;
114210 }
114211
114212 +#ifdef CONFIG_PAX_SEGMEXEC
114213 +struct vm_area_struct *pax_find_mirror_vma(struct vm_area_struct *vma)
114214 +{
114215 + struct vm_area_struct *vma_m;
114216 +
114217 + BUG_ON(!vma || vma->vm_start >= vma->vm_end);
114218 + if (!(vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) || !(vma->vm_flags & VM_EXEC)) {
114219 + BUG_ON(vma->vm_mirror);
114220 + return NULL;
114221 + }
114222 + BUG_ON(vma->vm_start < SEGMEXEC_TASK_SIZE && SEGMEXEC_TASK_SIZE < vma->vm_end);
114223 + vma_m = vma->vm_mirror;
114224 + BUG_ON(!vma_m || vma_m->vm_mirror != vma);
114225 + BUG_ON(vma->vm_file != vma_m->vm_file);
114226 + BUG_ON(vma->vm_end - vma->vm_start != vma_m->vm_end - vma_m->vm_start);
114227 + BUG_ON(vma->vm_pgoff != vma_m->vm_pgoff);
114228 + BUG_ON(vma->anon_vma != vma_m->anon_vma && vma->anon_vma->root != vma_m->anon_vma->root);
114229 + BUG_ON((vma->vm_flags ^ vma_m->vm_flags) & ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT | VM_LOCKED));
114230 + return vma_m;
114231 +}
114232 +#endif
114233 +
114234 /*
114235 * Verify that the stack growth is acceptable and
114236 * update accounting. This is shared with both the
114237 @@ -2098,8 +2406,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
114238
114239 /* Stack limit test */
114240 actual_size = size;
114241 - if (size && (vma->vm_flags & (VM_GROWSUP | VM_GROWSDOWN)))
114242 - actual_size -= PAGE_SIZE;
114243 + gr_learn_resource(current, RLIMIT_STACK, actual_size, 1);
114244 if (actual_size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur))
114245 return -ENOMEM;
114246
114247 @@ -2110,6 +2417,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
114248 locked = mm->locked_vm + grow;
114249 limit = READ_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
114250 limit >>= PAGE_SHIFT;
114251 + gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
114252 if (locked > limit && !capable(CAP_IPC_LOCK))
114253 return -ENOMEM;
114254 }
114255 @@ -2139,37 +2447,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
114256 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
114257 * vma is the last one with address > vma->vm_end. Have to extend vma.
114258 */
114259 +#ifndef CONFIG_IA64
114260 +static
114261 +#endif
114262 int expand_upwards(struct vm_area_struct *vma, unsigned long address)
114263 {
114264 int error;
114265 + bool locknext;
114266
114267 if (!(vma->vm_flags & VM_GROWSUP))
114268 return -EFAULT;
114269
114270 + /* Also guard against wrapping around to address 0. */
114271 + if (address < PAGE_ALIGN(address+1))
114272 + address = PAGE_ALIGN(address+1);
114273 + else
114274 + return -ENOMEM;
114275 +
114276 /*
114277 * We must make sure the anon_vma is allocated
114278 * so that the anon_vma locking is not a noop.
114279 */
114280 if (unlikely(anon_vma_prepare(vma)))
114281 return -ENOMEM;
114282 + locknext = vma->vm_next && (vma->vm_next->vm_flags & VM_GROWSDOWN);
114283 + if (locknext && anon_vma_prepare(vma->vm_next))
114284 + return -ENOMEM;
114285 vma_lock_anon_vma(vma);
114286 + if (locknext)
114287 + vma_lock_anon_vma(vma->vm_next);
114288
114289 /*
114290 * vma->vm_start/vm_end cannot change under us because the caller
114291 * is required to hold the mmap_sem in read mode. We need the
114292 - * anon_vma lock to serialize against concurrent expand_stacks.
114293 - * Also guard against wrapping around to address 0.
114294 + * anon_vma locks to serialize against concurrent expand_stacks
114295 + * and expand_upwards.
114296 */
114297 - if (address < PAGE_ALIGN(address+4))
114298 - address = PAGE_ALIGN(address+4);
114299 - else {
114300 - vma_unlock_anon_vma(vma);
114301 - return -ENOMEM;
114302 - }
114303 error = 0;
114304
114305 /* Somebody else might have raced and expanded it already */
114306 - if (address > vma->vm_end) {
114307 + if (vma->vm_next && (vma->vm_next->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)) && vma->vm_next->vm_start - address < sysctl_heap_stack_gap)
114308 + error = -ENOMEM;
114309 + else if (address > vma->vm_end && (!locknext || vma->vm_next->vm_start >= address)) {
114310 unsigned long size, grow;
114311
114312 size = address - vma->vm_start;
114313 @@ -2204,6 +2523,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
114314 }
114315 }
114316 }
114317 + if (locknext)
114318 + vma_unlock_anon_vma(vma->vm_next);
114319 vma_unlock_anon_vma(vma);
114320 khugepaged_enter_vma_merge(vma, vma->vm_flags);
114321 validate_mm(vma->vm_mm);
114322 @@ -2218,6 +2539,8 @@ int expand_downwards(struct vm_area_struct *vma,
114323 unsigned long address)
114324 {
114325 int error;
114326 + bool lockprev = false;
114327 + struct vm_area_struct *prev;
114328
114329 /*
114330 * We must make sure the anon_vma is allocated
114331 @@ -2231,6 +2554,15 @@ int expand_downwards(struct vm_area_struct *vma,
114332 if (error)
114333 return error;
114334
114335 + prev = vma->vm_prev;
114336 +#if defined(CONFIG_STACK_GROWSUP) || defined(CONFIG_IA64)
114337 + lockprev = prev && (prev->vm_flags & VM_GROWSUP);
114338 +#endif
114339 + if (lockprev && anon_vma_prepare(prev))
114340 + return -ENOMEM;
114341 + if (lockprev)
114342 + vma_lock_anon_vma(prev);
114343 +
114344 vma_lock_anon_vma(vma);
114345
114346 /*
114347 @@ -2240,9 +2572,17 @@ int expand_downwards(struct vm_area_struct *vma,
114348 */
114349
114350 /* Somebody else might have raced and expanded it already */
114351 - if (address < vma->vm_start) {
114352 + if (prev && (prev->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)) && address - prev->vm_end < sysctl_heap_stack_gap)
114353 + error = -ENOMEM;
114354 + else if (address < vma->vm_start && (!lockprev || prev->vm_end <= address)) {
114355 unsigned long size, grow;
114356
114357 +#ifdef CONFIG_PAX_SEGMEXEC
114358 + struct vm_area_struct *vma_m;
114359 +
114360 + vma_m = pax_find_mirror_vma(vma);
114361 +#endif
114362 +
114363 size = vma->vm_end - address;
114364 grow = (vma->vm_start - address) >> PAGE_SHIFT;
114365
114366 @@ -2267,13 +2607,27 @@ int expand_downwards(struct vm_area_struct *vma,
114367 vma->vm_pgoff -= grow;
114368 anon_vma_interval_tree_post_update_vma(vma);
114369 vma_gap_update(vma);
114370 +
114371 +#ifdef CONFIG_PAX_SEGMEXEC
114372 + if (vma_m) {
114373 + anon_vma_interval_tree_pre_update_vma(vma_m);
114374 + vma_m->vm_start -= grow << PAGE_SHIFT;
114375 + vma_m->vm_pgoff -= grow;
114376 + anon_vma_interval_tree_post_update_vma(vma_m);
114377 + vma_gap_update(vma_m);
114378 + }
114379 +#endif
114380 +
114381 spin_unlock(&vma->vm_mm->page_table_lock);
114382
114383 + track_exec_limit(vma->vm_mm, vma->vm_start, vma->vm_end, vma->vm_flags);
114384 perf_event_mmap(vma);
114385 }
114386 }
114387 }
114388 vma_unlock_anon_vma(vma);
114389 + if (lockprev)
114390 + vma_unlock_anon_vma(prev);
114391 khugepaged_enter_vma_merge(vma, vma->vm_flags);
114392 validate_mm(vma->vm_mm);
114393 return error;
114394 @@ -2373,6 +2727,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
114395 do {
114396 long nrpages = vma_pages(vma);
114397
114398 +#ifdef CONFIG_PAX_SEGMEXEC
114399 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_start >= SEGMEXEC_TASK_SIZE)) {
114400 + vma = remove_vma(vma);
114401 + continue;
114402 + }
114403 +#endif
114404 +
114405 if (vma->vm_flags & VM_ACCOUNT)
114406 nr_accounted += nrpages;
114407 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
114408 @@ -2417,6 +2778,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
114409 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
114410 vma->vm_prev = NULL;
114411 do {
114412 +
114413 +#ifdef CONFIG_PAX_SEGMEXEC
114414 + if (vma->vm_mirror) {
114415 + BUG_ON(!vma->vm_mirror->vm_mirror || vma->vm_mirror->vm_mirror != vma);
114416 + vma->vm_mirror->vm_mirror = NULL;
114417 + vma->vm_mirror->vm_flags &= ~VM_EXEC;
114418 + vma->vm_mirror = NULL;
114419 + }
114420 +#endif
114421 +
114422 vma_rb_erase(vma, &mm->mm_rb);
114423 mm->map_count--;
114424 tail_vma = vma;
114425 @@ -2444,14 +2815,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114426 struct vm_area_struct *new;
114427 int err = -ENOMEM;
114428
114429 +#ifdef CONFIG_PAX_SEGMEXEC
114430 + struct vm_area_struct *vma_m, *new_m = NULL;
114431 + unsigned long addr_m = addr + SEGMEXEC_TASK_SIZE;
114432 +#endif
114433 +
114434 if (is_vm_hugetlb_page(vma) && (addr &
114435 ~(huge_page_mask(hstate_vma(vma)))))
114436 return -EINVAL;
114437
114438 +#ifdef CONFIG_PAX_SEGMEXEC
114439 + vma_m = pax_find_mirror_vma(vma);
114440 +#endif
114441 +
114442 new = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
114443 if (!new)
114444 goto out_err;
114445
114446 +#ifdef CONFIG_PAX_SEGMEXEC
114447 + if (vma_m) {
114448 + new_m = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
114449 + if (!new_m) {
114450 + kmem_cache_free(vm_area_cachep, new);
114451 + goto out_err;
114452 + }
114453 + }
114454 +#endif
114455 +
114456 /* most fields are the same, copy all, and then fixup */
114457 *new = *vma;
114458
114459 @@ -2464,6 +2854,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114460 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
114461 }
114462
114463 +#ifdef CONFIG_PAX_SEGMEXEC
114464 + if (vma_m) {
114465 + *new_m = *vma_m;
114466 + INIT_LIST_HEAD(&new_m->anon_vma_chain);
114467 + new_m->vm_mirror = new;
114468 + new->vm_mirror = new_m;
114469 +
114470 + if (new_below)
114471 + new_m->vm_end = addr_m;
114472 + else {
114473 + new_m->vm_start = addr_m;
114474 + new_m->vm_pgoff += ((addr_m - vma_m->vm_start) >> PAGE_SHIFT);
114475 + }
114476 + }
114477 +#endif
114478 +
114479 err = vma_dup_policy(vma, new);
114480 if (err)
114481 goto out_free_vma;
114482 @@ -2484,6 +2890,38 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114483 else
114484 err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
114485
114486 +#ifdef CONFIG_PAX_SEGMEXEC
114487 + if (!err && vma_m) {
114488 + struct mempolicy *pol = vma_policy(new);
114489 +
114490 + if (anon_vma_clone(new_m, vma_m))
114491 + goto out_free_mpol;
114492 +
114493 + mpol_get(pol);
114494 + set_vma_policy(new_m, pol);
114495 +
114496 + if (new_m->vm_file)
114497 + get_file(new_m->vm_file);
114498 +
114499 + if (new_m->vm_ops && new_m->vm_ops->open)
114500 + new_m->vm_ops->open(new_m);
114501 +
114502 + if (new_below)
114503 + err = vma_adjust(vma_m, addr_m, vma_m->vm_end, vma_m->vm_pgoff +
114504 + ((addr_m - new_m->vm_start) >> PAGE_SHIFT), new_m);
114505 + else
114506 + err = vma_adjust(vma_m, vma_m->vm_start, addr_m, vma_m->vm_pgoff, new_m);
114507 +
114508 + if (err) {
114509 + if (new_m->vm_ops && new_m->vm_ops->close)
114510 + new_m->vm_ops->close(new_m);
114511 + if (new_m->vm_file)
114512 + fput(new_m->vm_file);
114513 + mpol_put(pol);
114514 + }
114515 + }
114516 +#endif
114517 +
114518 /* Success. */
114519 if (!err)
114520 return 0;
114521 @@ -2493,10 +2931,18 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114522 new->vm_ops->close(new);
114523 if (new->vm_file)
114524 fput(new->vm_file);
114525 - unlink_anon_vmas(new);
114526 out_free_mpol:
114527 mpol_put(vma_policy(new));
114528 out_free_vma:
114529 +
114530 +#ifdef CONFIG_PAX_SEGMEXEC
114531 + if (new_m) {
114532 + unlink_anon_vmas(new_m);
114533 + kmem_cache_free(vm_area_cachep, new_m);
114534 + }
114535 +#endif
114536 +
114537 + unlink_anon_vmas(new);
114538 kmem_cache_free(vm_area_cachep, new);
114539 out_err:
114540 return err;
114541 @@ -2509,6 +2955,15 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114542 int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114543 unsigned long addr, int new_below)
114544 {
114545 +
114546 +#ifdef CONFIG_PAX_SEGMEXEC
114547 + if (mm->pax_flags & MF_PAX_SEGMEXEC) {
114548 + BUG_ON(vma->vm_end > SEGMEXEC_TASK_SIZE);
114549 + if (mm->map_count >= sysctl_max_map_count-1)
114550 + return -ENOMEM;
114551 + } else
114552 +#endif
114553 +
114554 if (mm->map_count >= sysctl_max_map_count)
114555 return -ENOMEM;
114556
114557 @@ -2520,11 +2975,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
114558 * work. This now handles partial unmappings.
114559 * Jeremy Fitzhardinge <jeremy@goop.org>
114560 */
114561 +#ifdef CONFIG_PAX_SEGMEXEC
114562 int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
114563 {
114564 + int ret = __do_munmap(mm, start, len);
114565 + if (ret || !(mm->pax_flags & MF_PAX_SEGMEXEC))
114566 + return ret;
114567 +
114568 + return __do_munmap(mm, start + SEGMEXEC_TASK_SIZE, len);
114569 +}
114570 +
114571 +int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
114572 +#else
114573 +int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
114574 +#endif
114575 +{
114576 unsigned long end;
114577 struct vm_area_struct *vma, *prev, *last;
114578
114579 + /*
114580 + * mm->mmap_sem is required to protect against another thread
114581 + * changing the mappings in case we sleep.
114582 + */
114583 + verify_mm_writelocked(mm);
114584 +
114585 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
114586 return -EINVAL;
114587
114588 @@ -2602,6 +3076,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
114589 /* Fix up all other VM information */
114590 remove_vma_list(mm, vma);
114591
114592 + track_exec_limit(mm, start, end, 0UL);
114593 +
114594 return 0;
114595 }
114596
114597 @@ -2610,6 +3086,13 @@ int vm_munmap(unsigned long start, size_t len)
114598 int ret;
114599 struct mm_struct *mm = current->mm;
114600
114601 +
114602 +#ifdef CONFIG_PAX_SEGMEXEC
114603 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) &&
114604 + (len > SEGMEXEC_TASK_SIZE || start > SEGMEXEC_TASK_SIZE-len))
114605 + return -EINVAL;
114606 +#endif
114607 +
114608 down_write(&mm->mmap_sem);
114609 ret = do_munmap(mm, start, len);
114610 up_write(&mm->mmap_sem);
114611 @@ -2656,6 +3139,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
114612 down_write(&mm->mmap_sem);
114613 vma = find_vma(mm, start);
114614
114615 +#ifdef CONFIG_PAX_SEGMEXEC
114616 + if (vma && (mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_flags & VM_MAYEXEC))
114617 + goto out;
114618 +#endif
114619 +
114620 if (!vma || !(vma->vm_flags & VM_SHARED))
114621 goto out;
114622
114623 @@ -2692,16 +3180,6 @@ out:
114624 return ret;
114625 }
114626
114627 -static inline void verify_mm_writelocked(struct mm_struct *mm)
114628 -{
114629 -#ifdef CONFIG_DEBUG_VM
114630 - if (unlikely(down_read_trylock(&mm->mmap_sem))) {
114631 - WARN_ON(1);
114632 - up_read(&mm->mmap_sem);
114633 - }
114634 -#endif
114635 -}
114636 -
114637 /*
114638 * this is really a simplified "do_mmap". it only handles
114639 * anonymous maps. eventually we may be able to do some
114640 @@ -2715,6 +3193,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
114641 struct rb_node **rb_link, *rb_parent;
114642 pgoff_t pgoff = addr >> PAGE_SHIFT;
114643 int error;
114644 + unsigned long charged;
114645
114646 len = PAGE_ALIGN(len);
114647 if (!len)
114648 @@ -2722,10 +3201,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
114649
114650 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
114651
114652 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
114653 + if (mm->pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
114654 + flags &= ~VM_EXEC;
114655 +
114656 +#ifdef CONFIG_PAX_MPROTECT
114657 + if (mm->pax_flags & MF_PAX_MPROTECT)
114658 + flags &= ~VM_MAYEXEC;
114659 +#endif
114660 +
114661 + }
114662 +#endif
114663 +
114664 error = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED);
114665 if (error & ~PAGE_MASK)
114666 return error;
114667
114668 + charged = len >> PAGE_SHIFT;
114669 +
114670 error = mlock_future_check(mm, mm->def_flags, len);
114671 if (error)
114672 return error;
114673 @@ -2743,16 +3236,17 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
114674 &rb_parent)) {
114675 if (do_munmap(mm, addr, len))
114676 return -ENOMEM;
114677 + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent));
114678 }
114679
114680 /* Check against address space limits *after* clearing old maps... */
114681 - if (!may_expand_vm(mm, len >> PAGE_SHIFT))
114682 + if (!may_expand_vm(mm, charged))
114683 return -ENOMEM;
114684
114685 if (mm->map_count > sysctl_max_map_count)
114686 return -ENOMEM;
114687
114688 - if (security_vm_enough_memory_mm(mm, len >> PAGE_SHIFT))
114689 + if (security_vm_enough_memory_mm(mm, charged))
114690 return -ENOMEM;
114691
114692 /* Can we just expand an old private anonymous mapping? */
114693 @@ -2766,7 +3260,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
114694 */
114695 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
114696 if (!vma) {
114697 - vm_unacct_memory(len >> PAGE_SHIFT);
114698 + vm_unacct_memory(charged);
114699 return -ENOMEM;
114700 }
114701
114702 @@ -2780,10 +3274,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
114703 vma_link(mm, vma, prev, rb_link, rb_parent);
114704 out:
114705 perf_event_mmap(vma);
114706 - mm->total_vm += len >> PAGE_SHIFT;
114707 + mm->total_vm += charged;
114708 if (flags & VM_LOCKED)
114709 - mm->locked_vm += (len >> PAGE_SHIFT);
114710 + mm->locked_vm += charged;
114711 vma->vm_flags |= VM_SOFTDIRTY;
114712 + track_exec_limit(mm, addr, addr + len, flags);
114713 return addr;
114714 }
114715
114716 @@ -2845,6 +3340,7 @@ void exit_mmap(struct mm_struct *mm)
114717 while (vma) {
114718 if (vma->vm_flags & VM_ACCOUNT)
114719 nr_accounted += vma_pages(vma);
114720 + vma->vm_mirror = NULL;
114721 vma = remove_vma(vma);
114722 }
114723 vm_unacct_memory(nr_accounted);
114724 @@ -2859,6 +3355,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
114725 struct vm_area_struct *prev;
114726 struct rb_node **rb_link, *rb_parent;
114727
114728 +#ifdef CONFIG_PAX_SEGMEXEC
114729 + struct vm_area_struct *vma_m = NULL;
114730 +#endif
114731 +
114732 + if (security_mmap_addr(vma->vm_start))
114733 + return -EPERM;
114734 +
114735 /*
114736 * The vm_pgoff of a purely anonymous vma should be irrelevant
114737 * until its first write fault, when page's anon_vma and index
114738 @@ -2882,7 +3385,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
114739 security_vm_enough_memory_mm(mm, vma_pages(vma)))
114740 return -ENOMEM;
114741
114742 +#ifdef CONFIG_PAX_SEGMEXEC
114743 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_flags & VM_EXEC)) {
114744 + vma_m = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
114745 + if (!vma_m)
114746 + return -ENOMEM;
114747 + }
114748 +#endif
114749 +
114750 vma_link(mm, vma, prev, rb_link, rb_parent);
114751 +
114752 +#ifdef CONFIG_PAX_SEGMEXEC
114753 + if (vma_m)
114754 + BUG_ON(pax_mirror_vma(vma_m, vma));
114755 +#endif
114756 +
114757 return 0;
114758 }
114759
114760 @@ -2901,6 +3418,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
114761 struct rb_node **rb_link, *rb_parent;
114762 bool faulted_in_anon_vma = true;
114763
114764 + BUG_ON(vma->vm_mirror);
114765 +
114766 /*
114767 * If anonymous vma has not yet been faulted, update new pgoff
114768 * to match new location, to increase its chance of merging.
114769 @@ -2965,6 +3484,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
114770 return NULL;
114771 }
114772
114773 +#ifdef CONFIG_PAX_SEGMEXEC
114774 +long pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma)
114775 +{
114776 + struct vm_area_struct *prev_m;
114777 + struct rb_node **rb_link_m, *rb_parent_m;
114778 + struct mempolicy *pol_m;
114779 +
114780 + BUG_ON(!(vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) || !(vma->vm_flags & VM_EXEC));
114781 + BUG_ON(vma->vm_mirror || vma_m->vm_mirror);
114782 + BUG_ON(!mpol_equal(vma_policy(vma), vma_policy(vma_m)));
114783 + *vma_m = *vma;
114784 + INIT_LIST_HEAD(&vma_m->anon_vma_chain);
114785 + if (anon_vma_clone(vma_m, vma))
114786 + return -ENOMEM;
114787 + pol_m = vma_policy(vma_m);
114788 + mpol_get(pol_m);
114789 + set_vma_policy(vma_m, pol_m);
114790 + vma_m->vm_start += SEGMEXEC_TASK_SIZE;
114791 + vma_m->vm_end += SEGMEXEC_TASK_SIZE;
114792 + vma_m->vm_flags &= ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT | VM_LOCKED);
114793 + vma_m->vm_page_prot = vm_get_page_prot(vma_m->vm_flags);
114794 + if (vma_m->vm_file)
114795 + get_file(vma_m->vm_file);
114796 + if (vma_m->vm_ops && vma_m->vm_ops->open)
114797 + vma_m->vm_ops->open(vma_m);
114798 + BUG_ON(find_vma_links(vma->vm_mm, vma_m->vm_start, vma_m->vm_end, &prev_m, &rb_link_m, &rb_parent_m));
114799 + vma_link(vma->vm_mm, vma_m, prev_m, rb_link_m, rb_parent_m);
114800 + vma_m->vm_mirror = vma;
114801 + vma->vm_mirror = vma_m;
114802 + return 0;
114803 +}
114804 +#endif
114805 +
114806 /*
114807 * Return true if the calling process may expand its vm space by the passed
114808 * number of pages
114809 @@ -2976,6 +3528,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
114810
114811 lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
114812
114813 + gr_learn_resource(current, RLIMIT_AS, (cur + npages) << PAGE_SHIFT, 1);
114814 if (cur + npages > lim)
114815 return 0;
114816 return 1;
114817 @@ -3058,6 +3611,22 @@ static struct vm_area_struct *__install_special_mapping(
114818 vma->vm_start = addr;
114819 vma->vm_end = addr + len;
114820
114821 +#ifdef CONFIG_PAX_MPROTECT
114822 + if (mm->pax_flags & MF_PAX_MPROTECT) {
114823 +#ifndef CONFIG_PAX_MPROTECT_COMPAT
114824 + if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC))
114825 + return ERR_PTR(-EPERM);
114826 + if (!(vm_flags & VM_EXEC))
114827 + vm_flags &= ~VM_MAYEXEC;
114828 +#else
114829 + if ((vm_flags & (VM_WRITE | VM_EXEC)) != VM_EXEC)
114830 + vm_flags &= ~(VM_EXEC | VM_MAYEXEC);
114831 +#endif
114832 + else
114833 + vm_flags &= ~VM_MAYWRITE;
114834 + }
114835 +#endif
114836 +
114837 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND | VM_SOFTDIRTY;
114838 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
114839
114840 diff --git a/mm/mprotect.c b/mm/mprotect.c
114841 index e7d6f11..6116007 100644
114842 --- a/mm/mprotect.c
114843 +++ b/mm/mprotect.c
114844 @@ -24,10 +24,18 @@
114845 #include <linux/migrate.h>
114846 #include <linux/perf_event.h>
114847 #include <linux/ksm.h>
114848 +#include <linux/sched/sysctl.h>
114849 +
114850 +#ifdef CONFIG_PAX_MPROTECT
114851 +#include <linux/elf.h>
114852 +#include <linux/binfmts.h>
114853 +#endif
114854 +
114855 #include <asm/uaccess.h>
114856 #include <asm/pgtable.h>
114857 #include <asm/cacheflush.h>
114858 #include <asm/tlbflush.h>
114859 +#include <asm/mmu_context.h>
114860
114861 #include "internal.h"
114862
114863 @@ -254,6 +262,48 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start,
114864 return pages;
114865 }
114866
114867 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
114868 +/* called while holding the mmap semaphor for writing except stack expansion */
114869 +void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot)
114870 +{
114871 + unsigned long oldlimit, newlimit = 0UL;
114872 +
114873 + if (!(mm->pax_flags & MF_PAX_PAGEEXEC) || (__supported_pte_mask & _PAGE_NX))
114874 + return;
114875 +
114876 + spin_lock(&mm->page_table_lock);
114877 + oldlimit = mm->context.user_cs_limit;
114878 + if ((prot & VM_EXEC) && oldlimit < end)
114879 + /* USER_CS limit moved up */
114880 + newlimit = end;
114881 + else if (!(prot & VM_EXEC) && start < oldlimit && oldlimit <= end)
114882 + /* USER_CS limit moved down */
114883 + newlimit = start;
114884 +
114885 + if (newlimit) {
114886 + mm->context.user_cs_limit = newlimit;
114887 +
114888 +#ifdef CONFIG_SMP
114889 + wmb();
114890 + cpumask_clear(&mm->context.cpu_user_cs_mask);
114891 + cpumask_set_cpu(smp_processor_id(), &mm->context.cpu_user_cs_mask);
114892 +#endif
114893 +
114894 + set_user_cs(mm->context.user_cs_base, mm->context.user_cs_limit, smp_processor_id());
114895 + }
114896 + spin_unlock(&mm->page_table_lock);
114897 + if (newlimit == end) {
114898 + struct vm_area_struct *vma = find_vma(mm, oldlimit);
114899 +
114900 + for (; vma && vma->vm_start < end; vma = vma->vm_next)
114901 + if (is_vm_hugetlb_page(vma))
114902 + hugetlb_change_protection(vma, vma->vm_start, vma->vm_end, vma->vm_page_prot);
114903 + else
114904 + change_protection(vma, vma->vm_start, vma->vm_end, vma->vm_page_prot, vma_wants_writenotify(vma), 0);
114905 + }
114906 +}
114907 +#endif
114908 +
114909 int
114910 mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
114911 unsigned long start, unsigned long end, unsigned long newflags)
114912 @@ -266,11 +316,29 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
114913 int error;
114914 int dirty_accountable = 0;
114915
114916 +#ifdef CONFIG_PAX_SEGMEXEC
114917 + struct vm_area_struct *vma_m = NULL;
114918 + unsigned long start_m, end_m;
114919 +
114920 + start_m = start + SEGMEXEC_TASK_SIZE;
114921 + end_m = end + SEGMEXEC_TASK_SIZE;
114922 +#endif
114923 +
114924 if (newflags == oldflags) {
114925 *pprev = vma;
114926 return 0;
114927 }
114928
114929 + if (newflags & (VM_READ | VM_WRITE | VM_EXEC)) {
114930 + struct vm_area_struct *prev = vma->vm_prev, *next = vma->vm_next;
114931 +
114932 + if (next && (next->vm_flags & VM_GROWSDOWN) && sysctl_heap_stack_gap > next->vm_start - end)
114933 + return -ENOMEM;
114934 +
114935 + if (prev && (prev->vm_flags & VM_GROWSUP) && sysctl_heap_stack_gap > start - prev->vm_end)
114936 + return -ENOMEM;
114937 + }
114938 +
114939 /*
114940 * If we make a private mapping writable we increase our commit;
114941 * but (without finer accounting) cannot reduce our commit if we
114942 @@ -287,6 +355,42 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
114943 }
114944 }
114945
114946 +#ifdef CONFIG_PAX_SEGMEXEC
114947 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && ((oldflags ^ newflags) & VM_EXEC)) {
114948 + if (start != vma->vm_start) {
114949 + error = split_vma(mm, vma, start, 1);
114950 + if (error)
114951 + goto fail;
114952 + BUG_ON(!*pprev || (*pprev)->vm_next == vma);
114953 + *pprev = (*pprev)->vm_next;
114954 + }
114955 +
114956 + if (end != vma->vm_end) {
114957 + error = split_vma(mm, vma, end, 0);
114958 + if (error)
114959 + goto fail;
114960 + }
114961 +
114962 + if (pax_find_mirror_vma(vma)) {
114963 + error = __do_munmap(mm, start_m, end_m - start_m);
114964 + if (error)
114965 + goto fail;
114966 + } else {
114967 + vma_m = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
114968 + if (!vma_m) {
114969 + error = -ENOMEM;
114970 + goto fail;
114971 + }
114972 + vma->vm_flags = newflags;
114973 + error = pax_mirror_vma(vma_m, vma);
114974 + if (error) {
114975 + vma->vm_flags = oldflags;
114976 + goto fail;
114977 + }
114978 + }
114979 + }
114980 +#endif
114981 +
114982 /*
114983 * First try to merge with previous and/or next vma.
114984 */
114985 @@ -317,7 +421,19 @@ success:
114986 * vm_flags and vm_page_prot are protected by the mmap_sem
114987 * held in write mode.
114988 */
114989 +
114990 +#ifdef CONFIG_PAX_SEGMEXEC
114991 + if ((mm->pax_flags & MF_PAX_SEGMEXEC) && (newflags & VM_EXEC) && ((vma->vm_flags ^ newflags) & VM_READ))
114992 + pax_find_mirror_vma(vma)->vm_flags ^= VM_READ;
114993 +#endif
114994 +
114995 vma->vm_flags = newflags;
114996 +
114997 +#ifdef CONFIG_PAX_MPROTECT
114998 + if (mm->binfmt && mm->binfmt->handle_mprotect)
114999 + mm->binfmt->handle_mprotect(vma, newflags);
115000 +#endif
115001 +
115002 dirty_accountable = vma_wants_writenotify(vma);
115003 vma_set_page_prot(vma);
115004
115005 @@ -362,6 +478,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
115006 end = start + len;
115007 if (end <= start)
115008 return -ENOMEM;
115009 +
115010 +#ifdef CONFIG_PAX_SEGMEXEC
115011 + if (current->mm->pax_flags & MF_PAX_SEGMEXEC) {
115012 + if (end > SEGMEXEC_TASK_SIZE)
115013 + return -EINVAL;
115014 + } else
115015 +#endif
115016 +
115017 + if (end > TASK_SIZE)
115018 + return -EINVAL;
115019 +
115020 if (!arch_validate_prot(prot))
115021 return -EINVAL;
115022
115023 @@ -369,7 +496,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
115024 /*
115025 * Does the application expect PROT_READ to imply PROT_EXEC:
115026 */
115027 - if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
115028 + if ((prot & (PROT_READ | PROT_WRITE)) && (current->personality & READ_IMPLIES_EXEC))
115029 prot |= PROT_EXEC;
115030
115031 vm_flags = calc_vm_prot_bits(prot);
115032 @@ -401,6 +528,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
115033 if (start > vma->vm_start)
115034 prev = vma;
115035
115036 +#ifdef CONFIG_PAX_MPROTECT
115037 + if (current->mm->binfmt && current->mm->binfmt->handle_mprotect)
115038 + current->mm->binfmt->handle_mprotect(vma, vm_flags);
115039 +#endif
115040 +
115041 for (nstart = start ; ; ) {
115042 unsigned long newflags;
115043
115044 @@ -411,6 +543,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
115045
115046 /* newflags >> 4 shift VM_MAY% in place of VM_% */
115047 if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) {
115048 + if (prot & (PROT_WRITE | PROT_EXEC))
115049 + gr_log_rwxmprotect(vma);
115050 +
115051 + error = -EACCES;
115052 + goto out;
115053 + }
115054 +
115055 + if (!gr_acl_handle_mprotect(vma->vm_file, prot)) {
115056 error = -EACCES;
115057 goto out;
115058 }
115059 @@ -425,6 +565,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
115060 error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
115061 if (error)
115062 goto out;
115063 +
115064 + track_exec_limit(current->mm, nstart, tmp, vm_flags);
115065 +
115066 nstart = tmp;
115067
115068 if (nstart < prev->vm_end)
115069 diff --git a/mm/mremap.c b/mm/mremap.c
115070 index a7c93ec..69c2949 100644
115071 --- a/mm/mremap.c
115072 +++ b/mm/mremap.c
115073 @@ -143,6 +143,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
115074 continue;
115075 pte = ptep_get_and_clear(mm, old_addr, old_pte);
115076 pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr);
115077 +
115078 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
115079 + if (!(__supported_pte_mask & _PAGE_NX) && pte_present(pte) && (new_vma->vm_flags & (VM_PAGEEXEC | VM_EXEC)) == VM_PAGEEXEC)
115080 + pte = pte_exprotect(pte);
115081 +#endif
115082 +
115083 pte = move_soft_dirty_pte(pte);
115084 set_pte_at(mm, new_addr, new_pte, pte);
115085 }
115086 @@ -355,6 +361,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
115087 if (is_vm_hugetlb_page(vma))
115088 return ERR_PTR(-EINVAL);
115089
115090 +#ifdef CONFIG_PAX_SEGMEXEC
115091 + if (pax_find_mirror_vma(vma))
115092 + return ERR_PTR(-EINVAL);
115093 +#endif
115094 +
115095 /* We can't remap across vm area boundaries */
115096 if (old_len > vma->vm_end - addr)
115097 return ERR_PTR(-EFAULT);
115098 @@ -401,20 +412,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
115099 unsigned long ret = -EINVAL;
115100 unsigned long charged = 0;
115101 unsigned long map_flags;
115102 + unsigned long pax_task_size = TASK_SIZE;
115103
115104 if (new_addr & ~PAGE_MASK)
115105 goto out;
115106
115107 - if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
115108 +#ifdef CONFIG_PAX_SEGMEXEC
115109 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
115110 + pax_task_size = SEGMEXEC_TASK_SIZE;
115111 +#endif
115112 +
115113 + pax_task_size -= PAGE_SIZE;
115114 +
115115 + if (new_len > TASK_SIZE || new_addr > pax_task_size - new_len)
115116 goto out;
115117
115118 /* Check if the location we're moving into overlaps the
115119 * old location at all, and fail if it does.
115120 */
115121 - if ((new_addr <= addr) && (new_addr+new_len) > addr)
115122 - goto out;
115123 -
115124 - if ((addr <= new_addr) && (addr+old_len) > new_addr)
115125 + if (addr + old_len > new_addr && new_addr + new_len > addr)
115126 goto out;
115127
115128 ret = do_munmap(mm, new_addr, new_len);
115129 @@ -483,6 +499,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
115130 unsigned long ret = -EINVAL;
115131 unsigned long charged = 0;
115132 bool locked = false;
115133 + unsigned long pax_task_size = TASK_SIZE;
115134
115135 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
115136 return ret;
115137 @@ -504,6 +521,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
115138 if (!new_len)
115139 return ret;
115140
115141 +#ifdef CONFIG_PAX_SEGMEXEC
115142 + if (mm->pax_flags & MF_PAX_SEGMEXEC)
115143 + pax_task_size = SEGMEXEC_TASK_SIZE;
115144 +#endif
115145 +
115146 + pax_task_size -= PAGE_SIZE;
115147 +
115148 + if (new_len > pax_task_size || addr > pax_task_size-new_len ||
115149 + old_len > pax_task_size || addr > pax_task_size-old_len)
115150 + return ret;
115151 +
115152 down_write(&current->mm->mmap_sem);
115153
115154 if (flags & MREMAP_FIXED) {
115155 @@ -554,6 +582,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
115156 new_addr = addr;
115157 }
115158 ret = addr;
115159 + track_exec_limit(vma->vm_mm, vma->vm_start, addr + new_len, vma->vm_flags);
115160 goto out;
115161 }
115162 }
115163 @@ -577,7 +606,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
115164 goto out;
115165 }
115166
115167 + map_flags = vma->vm_flags;
115168 ret = move_vma(vma, addr, old_len, new_len, new_addr, &locked);
115169 + if (!(ret & ~PAGE_MASK)) {
115170 + track_exec_limit(current->mm, addr, addr + old_len, 0UL);
115171 + track_exec_limit(current->mm, new_addr, new_addr + new_len, map_flags);
115172 + }
115173 }
115174 out:
115175 if (ret & ~PAGE_MASK)
115176 diff --git a/mm/nommu.c b/mm/nommu.c
115177 index 58ea364..7b01d28 100644
115178 --- a/mm/nommu.c
115179 +++ b/mm/nommu.c
115180 @@ -56,7 +56,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
115181 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
115182 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
115183 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
115184 -int heap_stack_gap = 0;
115185
115186 atomic_long_t mmap_pages_allocated;
115187
115188 @@ -863,15 +862,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
115189 EXPORT_SYMBOL(find_vma);
115190
115191 /*
115192 - * find a VMA
115193 - * - we don't extend stack VMAs under NOMMU conditions
115194 - */
115195 -struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr)
115196 -{
115197 - return find_vma(mm, addr);
115198 -}
115199 -
115200 -/*
115201 * expand a stack to a given address
115202 * - not supported under NOMMU conditions
115203 */
115204 @@ -1535,6 +1525,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
115205
115206 /* most fields are the same, copy all, and then fixup */
115207 *new = *vma;
115208 + INIT_LIST_HEAD(&new->anon_vma_chain);
115209 *region = *vma->vm_region;
115210 new->vm_region = region;
115211
115212 @@ -1935,8 +1926,8 @@ void filemap_map_pages(struct vm_area_struct *vma, struct vm_fault *vmf)
115213 }
115214 EXPORT_SYMBOL(filemap_map_pages);
115215
115216 -static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
115217 - unsigned long addr, void *buf, int len, int write)
115218 +static ssize_t __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
115219 + unsigned long addr, void *buf, size_t len, int write)
115220 {
115221 struct vm_area_struct *vma;
115222
115223 @@ -1977,8 +1968,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
115224 *
115225 * The caller must hold a reference on @mm.
115226 */
115227 -int access_remote_vm(struct mm_struct *mm, unsigned long addr,
115228 - void *buf, int len, int write)
115229 +ssize_t access_remote_vm(struct mm_struct *mm, unsigned long addr,
115230 + void *buf, size_t len, int write)
115231 {
115232 return __access_remote_vm(NULL, mm, addr, buf, len, write);
115233 }
115234 @@ -1987,7 +1978,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
115235 * Access another process' address space.
115236 * - source/target buffer must be kernel space
115237 */
115238 -int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write)
115239 +ssize_t access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, size_t len, int write)
115240 {
115241 struct mm_struct *mm;
115242
115243 diff --git a/mm/page-writeback.c b/mm/page-writeback.c
115244 index 5cccc12..1872e56 100644
115245 --- a/mm/page-writeback.c
115246 +++ b/mm/page-writeback.c
115247 @@ -852,7 +852,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
115248 * card's wb_dirty may rush to many times higher than wb_setpoint.
115249 * - the wb dirty thresh drops quickly due to change of JBOD workload
115250 */
115251 -static void wb_position_ratio(struct dirty_throttle_control *dtc)
115252 +static void __intentional_overflow(-1) wb_position_ratio(struct dirty_throttle_control *dtc)
115253 {
115254 struct bdi_writeback *wb = dtc->wb;
115255 unsigned long write_bw = wb->avg_write_bandwidth;
115256 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
115257 index 5b5240b..2bc0996 100644
115258 --- a/mm/page_alloc.c
115259 +++ b/mm/page_alloc.c
115260 @@ -62,6 +62,7 @@
115261 #include <linux/sched/rt.h>
115262 #include <linux/page_owner.h>
115263 #include <linux/kthread.h>
115264 +#include <linux/random.h>
115265
115266 #include <asm/sections.h>
115267 #include <asm/tlbflush.h>
115268 @@ -427,7 +428,7 @@ out:
115269 * This usage means that zero-order pages may not be compound.
115270 */
115271
115272 -static void free_compound_page(struct page *page)
115273 +void free_compound_page(struct page *page)
115274 {
115275 __free_pages_ok(page, compound_order(page));
115276 }
115277 @@ -536,7 +537,7 @@ static inline void clear_page_guard(struct zone *zone, struct page *page,
115278 __mod_zone_freepage_state(zone, (1 << order), migratetype);
115279 }
115280 #else
115281 -struct page_ext_operations debug_guardpage_ops = { NULL, };
115282 +struct page_ext_operations debug_guardpage_ops = { .need = NULL, .init = NULL };
115283 static inline void set_page_guard(struct zone *zone, struct page *page,
115284 unsigned int order, int migratetype) {}
115285 static inline void clear_page_guard(struct zone *zone, struct page *page,
115286 @@ -908,6 +909,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
115287 bool compound = PageCompound(page);
115288 int i, bad = 0;
115289
115290 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115291 + unsigned long index = 1UL << order;
115292 +#endif
115293 +
115294 VM_BUG_ON_PAGE(PageTail(page), page);
115295 VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);
115296
115297 @@ -934,6 +939,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
115298 debug_check_no_obj_freed(page_address(page),
115299 PAGE_SIZE << order);
115300 }
115301 +
115302 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115303 + for (; index; --index)
115304 + sanitize_highpage(page + index - 1);
115305 +#endif
115306 +
115307 arch_free_page(page, order);
115308 kernel_map_pages(page, 1 << order, 0);
115309
115310 @@ -957,6 +968,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
115311 local_irq_restore(flags);
115312 }
115313
115314 +#ifdef CONFIG_PAX_LATENT_ENTROPY
115315 +bool __meminitdata extra_latent_entropy;
115316 +
115317 +static int __init setup_pax_extra_latent_entropy(char *str)
115318 +{
115319 + extra_latent_entropy = true;
115320 + return 0;
115321 +}
115322 +early_param("pax_extra_latent_entropy", setup_pax_extra_latent_entropy);
115323 +
115324 +volatile u64 latent_entropy __latent_entropy;
115325 +EXPORT_SYMBOL(latent_entropy);
115326 +#endif
115327 +
115328 static void __init __free_pages_boot_core(struct page *page,
115329 unsigned long pfn, unsigned int order)
115330 {
115331 @@ -973,6 +998,19 @@ static void __init __free_pages_boot_core(struct page *page,
115332 __ClearPageReserved(p);
115333 set_page_count(p, 0);
115334
115335 +#ifdef CONFIG_PAX_LATENT_ENTROPY
115336 + if (extra_latent_entropy && !PageHighMem(page) && page_to_pfn(page) < 0x100000) {
115337 + u64 hash = 0;
115338 + size_t index, end = PAGE_SIZE * nr_pages / sizeof hash;
115339 + const u64 *data = lowmem_page_address(page);
115340 +
115341 + for (index = 0; index < end; index++)
115342 + hash ^= hash + data[index];
115343 + latent_entropy ^= hash;
115344 + add_device_randomness((const void *)&latent_entropy, sizeof(latent_entropy));
115345 + }
115346 +#endif
115347 +
115348 page_zone(page)->managed_pages += nr_pages;
115349 set_page_refcounted(page);
115350 __free_pages(page, order);
115351 @@ -1029,7 +1067,6 @@ static inline bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node,
115352 }
115353 #endif
115354
115355 -
115356 void __init __free_pages_bootmem(struct page *page, unsigned long pfn,
115357 unsigned int order)
115358 {
115359 @@ -1333,9 +1370,11 @@ static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
115360 kernel_map_pages(page, 1 << order, 1);
115361 kasan_alloc_pages(page, order);
115362
115363 +#ifndef CONFIG_PAX_MEMORY_SANITIZE
115364 if (gfp_flags & __GFP_ZERO)
115365 for (i = 0; i < (1 << order); i++)
115366 clear_highpage(page + i);
115367 +#endif
115368
115369 if (order && (gfp_flags & __GFP_COMP))
115370 prep_compound_page(page, order);
115371 @@ -2116,7 +2155,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
115372 }
115373
115374 __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order));
115375 - if (atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 &&
115376 + if (atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 &&
115377 !test_bit(ZONE_FAIR_DEPLETED, &zone->flags))
115378 set_bit(ZONE_FAIR_DEPLETED, &zone->flags);
115379
115380 @@ -2435,7 +2474,7 @@ static void reset_alloc_batches(struct zone *preferred_zone)
115381 do {
115382 mod_zone_page_state(zone, NR_ALLOC_BATCH,
115383 high_wmark_pages(zone) - low_wmark_pages(zone) -
115384 - atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]));
115385 + atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]));
115386 clear_bit(ZONE_FAIR_DEPLETED, &zone->flags);
115387 } while (zone++ != preferred_zone);
115388 }
115389 @@ -6184,7 +6223,7 @@ static void __setup_per_zone_wmarks(void)
115390
115391 __mod_zone_page_state(zone, NR_ALLOC_BATCH,
115392 high_wmark_pages(zone) - low_wmark_pages(zone) -
115393 - atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]));
115394 + atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]));
115395
115396 setup_zone_migrate_reserve(zone);
115397 spin_unlock_irqrestore(&zone->lock, flags);
115398 diff --git a/mm/percpu.c b/mm/percpu.c
115399 index 2dd7448..9bb6305 100644
115400 --- a/mm/percpu.c
115401 +++ b/mm/percpu.c
115402 @@ -131,7 +131,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly;
115403 static unsigned int pcpu_high_unit_cpu __read_mostly;
115404
115405 /* the address of the first chunk which starts with the kernel static area */
115406 -void *pcpu_base_addr __read_mostly;
115407 +void *pcpu_base_addr __read_only;
115408 EXPORT_SYMBOL_GPL(pcpu_base_addr);
115409
115410 static const int *pcpu_unit_map __read_mostly; /* cpu -> unit */
115411 diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c
115412 index e88d071..d80e01a 100644
115413 --- a/mm/process_vm_access.c
115414 +++ b/mm/process_vm_access.c
115415 @@ -13,6 +13,7 @@
115416 #include <linux/uio.h>
115417 #include <linux/sched.h>
115418 #include <linux/highmem.h>
115419 +#include <linux/security.h>
115420 #include <linux/ptrace.h>
115421 #include <linux/slab.h>
115422 #include <linux/syscalls.h>
115423 @@ -154,19 +155,19 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
115424 ssize_t iov_len;
115425 size_t total_len = iov_iter_count(iter);
115426
115427 + return -ENOSYS; // PaX: until properly audited
115428 +
115429 /*
115430 * Work out how many pages of struct pages we're going to need
115431 * when eventually calling get_user_pages
115432 */
115433 for (i = 0; i < riovcnt; i++) {
115434 iov_len = rvec[i].iov_len;
115435 - if (iov_len > 0) {
115436 - nr_pages_iov = ((unsigned long)rvec[i].iov_base
115437 - + iov_len)
115438 - / PAGE_SIZE - (unsigned long)rvec[i].iov_base
115439 - / PAGE_SIZE + 1;
115440 - nr_pages = max(nr_pages, nr_pages_iov);
115441 - }
115442 + if (iov_len <= 0)
115443 + continue;
115444 + nr_pages_iov = ((unsigned long)rvec[i].iov_base + iov_len) / PAGE_SIZE -
115445 + (unsigned long)rvec[i].iov_base / PAGE_SIZE + 1;
115446 + nr_pages = max(nr_pages, nr_pages_iov);
115447 }
115448
115449 if (nr_pages == 0)
115450 @@ -194,6 +195,11 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
115451 goto free_proc_pages;
115452 }
115453
115454 + if (gr_handle_ptrace(task, vm_write ? PTRACE_POKETEXT : PTRACE_ATTACH)) {
115455 + rc = -EPERM;
115456 + goto put_task_struct;
115457 + }
115458 +
115459 mm = mm_access(task, PTRACE_MODE_ATTACH);
115460 if (!mm || IS_ERR(mm)) {
115461 rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
115462 diff --git a/mm/rmap.c b/mm/rmap.c
115463 index 171b687..1a4b7e8 100644
115464 --- a/mm/rmap.c
115465 +++ b/mm/rmap.c
115466 @@ -168,6 +168,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
115467 struct anon_vma *anon_vma = vma->anon_vma;
115468 struct anon_vma_chain *avc;
115469
115470 +#ifdef CONFIG_PAX_SEGMEXEC
115471 + struct anon_vma_chain *avc_m = NULL;
115472 +#endif
115473 +
115474 might_sleep();
115475 if (unlikely(!anon_vma)) {
115476 struct mm_struct *mm = vma->vm_mm;
115477 @@ -177,6 +181,12 @@ int anon_vma_prepare(struct vm_area_struct *vma)
115478 if (!avc)
115479 goto out_enomem;
115480
115481 +#ifdef CONFIG_PAX_SEGMEXEC
115482 + avc_m = anon_vma_chain_alloc(GFP_KERNEL);
115483 + if (!avc_m)
115484 + goto out_enomem_free_avc;
115485 +#endif
115486 +
115487 anon_vma = find_mergeable_anon_vma(vma);
115488 allocated = NULL;
115489 if (!anon_vma) {
115490 @@ -190,6 +200,19 @@ int anon_vma_prepare(struct vm_area_struct *vma)
115491 /* page_table_lock to protect against threads */
115492 spin_lock(&mm->page_table_lock);
115493 if (likely(!vma->anon_vma)) {
115494 +
115495 +#ifdef CONFIG_PAX_SEGMEXEC
115496 + struct vm_area_struct *vma_m = pax_find_mirror_vma(vma);
115497 +
115498 + if (vma_m) {
115499 + BUG_ON(vma_m->anon_vma);
115500 + vma_m->anon_vma = anon_vma;
115501 + anon_vma_chain_link(vma_m, avc_m, anon_vma);
115502 + anon_vma->degree++;
115503 + avc_m = NULL;
115504 + }
115505 +#endif
115506 +
115507 vma->anon_vma = anon_vma;
115508 anon_vma_chain_link(vma, avc, anon_vma);
115509 /* vma reference or self-parent link for new root */
115510 @@ -202,12 +225,24 @@ int anon_vma_prepare(struct vm_area_struct *vma)
115511
115512 if (unlikely(allocated))
115513 put_anon_vma(allocated);
115514 +
115515 +#ifdef CONFIG_PAX_SEGMEXEC
115516 + if (unlikely(avc_m))
115517 + anon_vma_chain_free(avc_m);
115518 +#endif
115519 +
115520 if (unlikely(avc))
115521 anon_vma_chain_free(avc);
115522 }
115523 return 0;
115524
115525 out_enomem_free_avc:
115526 +
115527 +#ifdef CONFIG_PAX_SEGMEXEC
115528 + if (avc_m)
115529 + anon_vma_chain_free(avc_m);
115530 +#endif
115531 +
115532 anon_vma_chain_free(avc);
115533 out_enomem:
115534 return -ENOMEM;
115535 @@ -251,7 +286,7 @@ static inline void unlock_anon_vma_root(struct anon_vma *root)
115536 * good chance of avoiding scanning the whole hierarchy when it searches where
115537 * page is mapped.
115538 */
115539 -int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
115540 +int anon_vma_clone(struct vm_area_struct *dst, const struct vm_area_struct *src)
115541 {
115542 struct anon_vma_chain *avc, *pavc;
115543 struct anon_vma *root = NULL;
115544 @@ -305,7 +340,7 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
115545 * the corresponding VMA in the parent process is attached to.
115546 * Returns 0 on success, non-zero on failure.
115547 */
115548 -int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
115549 +int anon_vma_fork(struct vm_area_struct *vma, const struct vm_area_struct *pvma)
115550 {
115551 struct anon_vma_chain *avc;
115552 struct anon_vma *anon_vma;
115553 @@ -425,8 +460,10 @@ static void anon_vma_ctor(void *data)
115554 void __init anon_vma_init(void)
115555 {
115556 anon_vma_cachep = kmem_cache_create("anon_vma", sizeof(struct anon_vma),
115557 - 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC, anon_vma_ctor);
115558 - anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain, SLAB_PANIC);
115559 + 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC|SLAB_NO_SANITIZE,
115560 + anon_vma_ctor);
115561 + anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain,
115562 + SLAB_PANIC|SLAB_NO_SANITIZE);
115563 }
115564
115565 /*
115566 diff --git a/mm/shmem.c b/mm/shmem.c
115567 index dbe0c1e..22c16c7 100644
115568 --- a/mm/shmem.c
115569 +++ b/mm/shmem.c
115570 @@ -33,7 +33,7 @@
115571 #include <linux/swap.h>
115572 #include <linux/uio.h>
115573
115574 -static struct vfsmount *shm_mnt;
115575 +struct vfsmount *shm_mnt;
115576
115577 #ifdef CONFIG_SHMEM
115578 /*
115579 @@ -80,7 +80,7 @@ static struct vfsmount *shm_mnt;
115580 #define BOGO_DIRENT_SIZE 20
115581
115582 /* Symlink up to this size is kmalloc'ed instead of using a swappable page */
115583 -#define SHORT_SYMLINK_LEN 128
115584 +#define SHORT_SYMLINK_LEN 64
115585
115586 /*
115587 * shmem_fallocate communicates with shmem_fault or shmem_writepage via
115588 @@ -2549,6 +2549,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
115589 static int shmem_xattr_validate(const char *name)
115590 {
115591 struct { const char *prefix; size_t len; } arr[] = {
115592 +
115593 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
115594 + { XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN},
115595 +#endif
115596 +
115597 { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN },
115598 { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN }
115599 };
115600 @@ -2604,6 +2609,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
115601 if (err)
115602 return err;
115603
115604 +#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
115605 + if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
115606 + if (strcmp(name, XATTR_NAME_PAX_FLAGS))
115607 + return -EOPNOTSUPP;
115608 + if (size > 8)
115609 + return -EINVAL;
115610 + }
115611 +#endif
115612 +
115613 return simple_xattr_set(&info->xattrs, name, value, size, flags);
115614 }
115615
115616 @@ -2987,8 +3001,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
115617 int err = -ENOMEM;
115618
115619 /* Round up to L1_CACHE_BYTES to resist false sharing */
115620 - sbinfo = kzalloc(max((int)sizeof(struct shmem_sb_info),
115621 - L1_CACHE_BYTES), GFP_KERNEL);
115622 + sbinfo = kzalloc(max(sizeof(struct shmem_sb_info), L1_CACHE_BYTES), GFP_KERNEL);
115623 if (!sbinfo)
115624 return -ENOMEM;
115625
115626 diff --git a/mm/slab.c b/mm/slab.c
115627 index bbd0b47..eb6af9e 100644
115628 --- a/mm/slab.c
115629 +++ b/mm/slab.c
115630 @@ -116,6 +116,7 @@
115631 #include <linux/kmemcheck.h>
115632 #include <linux/memory.h>
115633 #include <linux/prefetch.h>
115634 +#include <linux/vmalloc.h>
115635
115636 #include <net/sock.h>
115637
115638 @@ -314,10 +315,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
115639 if ((x)->max_freeable < i) \
115640 (x)->max_freeable = i; \
115641 } while (0)
115642 -#define STATS_INC_ALLOCHIT(x) atomic_inc(&(x)->allochit)
115643 -#define STATS_INC_ALLOCMISS(x) atomic_inc(&(x)->allocmiss)
115644 -#define STATS_INC_FREEHIT(x) atomic_inc(&(x)->freehit)
115645 -#define STATS_INC_FREEMISS(x) atomic_inc(&(x)->freemiss)
115646 +#define STATS_INC_ALLOCHIT(x) atomic_inc_unchecked(&(x)->allochit)
115647 +#define STATS_INC_ALLOCMISS(x) atomic_inc_unchecked(&(x)->allocmiss)
115648 +#define STATS_INC_FREEHIT(x) atomic_inc_unchecked(&(x)->freehit)
115649 +#define STATS_INC_FREEMISS(x) atomic_inc_unchecked(&(x)->freemiss)
115650 +#define STATS_INC_SANITIZED(x) atomic_inc_unchecked(&(x)->sanitized)
115651 +#define STATS_INC_NOT_SANITIZED(x) atomic_inc_unchecked(&(x)->not_sanitized)
115652 #else
115653 #define STATS_INC_ACTIVE(x) do { } while (0)
115654 #define STATS_DEC_ACTIVE(x) do { } while (0)
115655 @@ -334,6 +337,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
115656 #define STATS_INC_ALLOCMISS(x) do { } while (0)
115657 #define STATS_INC_FREEHIT(x) do { } while (0)
115658 #define STATS_INC_FREEMISS(x) do { } while (0)
115659 +#define STATS_INC_SANITIZED(x) do { } while (0)
115660 +#define STATS_INC_NOT_SANITIZED(x) do { } while (0)
115661 #endif
115662
115663 #if DEBUG
115664 @@ -450,7 +455,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct page *page,
115665 * reciprocal_divide(offset, cache->reciprocal_buffer_size)
115666 */
115667 static inline unsigned int obj_to_index(const struct kmem_cache *cache,
115668 - const struct page *page, void *obj)
115669 + const struct page *page, const void *obj)
115670 {
115671 u32 offset = (obj - page->s_mem);
115672 return reciprocal_divide(offset, cache->reciprocal_buffer_size);
115673 @@ -1452,7 +1457,7 @@ void __init kmem_cache_init(void)
115674 * structures first. Without this, further allocations will bug.
115675 */
115676 kmalloc_caches[INDEX_NODE] = create_kmalloc_cache("kmalloc-node",
115677 - kmalloc_size(INDEX_NODE), ARCH_KMALLOC_FLAGS);
115678 + kmalloc_size(INDEX_NODE), SLAB_USERCOPY | ARCH_KMALLOC_FLAGS);
115679 slab_state = PARTIAL_NODE;
115680 setup_kmalloc_cache_index_table();
115681
115682 @@ -2074,7 +2079,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
115683
115684 cachep = find_mergeable(size, align, flags, name, ctor);
115685 if (cachep) {
115686 - cachep->refcount++;
115687 + atomic_inc(&cachep->refcount);
115688
115689 /*
115690 * Adjust the object sizes so that we clear
115691 @@ -2190,9 +2195,16 @@ __kmem_cache_create (struct kmem_cache *cachep, unsigned long flags)
115692 size += BYTES_PER_WORD;
115693 }
115694 #if FORCED_DEBUG && defined(CONFIG_DEBUG_PAGEALLOC)
115695 - if (size >= kmalloc_size(INDEX_NODE + 1)
115696 - && cachep->object_size > cache_line_size()
115697 - && ALIGN(size, cachep->align) < PAGE_SIZE) {
115698 + /*
115699 + * To activate debug pagealloc, off-slab management is necessary
115700 + * requirement. In early phase of initialization, small sized slab
115701 + * doesn't get initialized so it would not be possible. So, we need
115702 + * to check size >= 256. It guarantees that all necessary small
115703 + * sized slab is initialized in current slab initialization sequence.
115704 + */
115705 + if (!slab_early_init && size >= kmalloc_size(INDEX_NODE) &&
115706 + size >= 256 && cachep->object_size > cache_line_size() &&
115707 + ALIGN(size, cachep->align) < PAGE_SIZE) {
115708 cachep->obj_offset += PAGE_SIZE - ALIGN(size, cachep->align);
115709 size = PAGE_SIZE;
115710 }
115711 @@ -3372,6 +3384,20 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
115712 struct array_cache *ac = cpu_cache_get(cachep);
115713
115714 check_irq_off();
115715 +
115716 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115717 + if (cachep->flags & (SLAB_POISON | SLAB_NO_SANITIZE))
115718 + STATS_INC_NOT_SANITIZED(cachep);
115719 + else {
115720 + memset(objp, PAX_MEMORY_SANITIZE_VALUE, cachep->object_size);
115721 +
115722 + if (cachep->ctor)
115723 + cachep->ctor(objp);
115724 +
115725 + STATS_INC_SANITIZED(cachep);
115726 + }
115727 +#endif
115728 +
115729 kmemleak_free_recursive(objp, cachep->flags);
115730 objp = cache_free_debugcheck(cachep, objp, caller);
115731
115732 @@ -3484,7 +3510,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller)
115733 return kmem_cache_alloc_node_trace(cachep, flags, node, size);
115734 }
115735
115736 -void *__kmalloc_node(size_t size, gfp_t flags, int node)
115737 +void * __size_overflow(1) __kmalloc_node(size_t size, gfp_t flags, int node)
115738 {
115739 return __do_kmalloc_node(size, flags, node, _RET_IP_);
115740 }
115741 @@ -3504,7 +3530,7 @@ EXPORT_SYMBOL(__kmalloc_node_track_caller);
115742 * @flags: the type of memory to allocate (see kmalloc).
115743 * @caller: function caller for debug tracking of the caller
115744 */
115745 -static __always_inline void *__do_kmalloc(size_t size, gfp_t flags,
115746 +static __always_inline void * __size_overflow(1) __do_kmalloc(size_t size, gfp_t flags,
115747 unsigned long caller)
115748 {
115749 struct kmem_cache *cachep;
115750 @@ -3577,6 +3603,7 @@ void kfree(const void *objp)
115751
115752 if (unlikely(ZERO_OR_NULL_PTR(objp)))
115753 return;
115754 + VM_BUG_ON(!virt_addr_valid(objp));
115755 local_irq_save(flags);
115756 kfree_debugcheck(objp);
115757 c = virt_to_cache(objp);
115758 @@ -3996,14 +4023,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
115759 }
115760 /* cpu stats */
115761 {
115762 - unsigned long allochit = atomic_read(&cachep->allochit);
115763 - unsigned long allocmiss = atomic_read(&cachep->allocmiss);
115764 - unsigned long freehit = atomic_read(&cachep->freehit);
115765 - unsigned long freemiss = atomic_read(&cachep->freemiss);
115766 + unsigned long allochit = atomic_read_unchecked(&cachep->allochit);
115767 + unsigned long allocmiss = atomic_read_unchecked(&cachep->allocmiss);
115768 + unsigned long freehit = atomic_read_unchecked(&cachep->freehit);
115769 + unsigned long freemiss = atomic_read_unchecked(&cachep->freemiss);
115770
115771 seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
115772 allochit, allocmiss, freehit, freemiss);
115773 }
115774 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115775 + {
115776 + unsigned long sanitized = atomic_read_unchecked(&cachep->sanitized);
115777 + unsigned long not_sanitized = atomic_read_unchecked(&cachep->not_sanitized);
115778 +
115779 + seq_printf(m, " : pax %6lu %6lu", sanitized, not_sanitized);
115780 + }
115781 +#endif
115782 #endif
115783 }
115784
115785 @@ -4211,13 +4246,80 @@ static const struct file_operations proc_slabstats_operations = {
115786 static int __init slab_proc_init(void)
115787 {
115788 #ifdef CONFIG_DEBUG_SLAB_LEAK
115789 - proc_create("slab_allocators", 0, NULL, &proc_slabstats_operations);
115790 + proc_create("slab_allocators", S_IRUSR, NULL, &proc_slabstats_operations);
115791 #endif
115792 return 0;
115793 }
115794 module_init(slab_proc_init);
115795 #endif
115796
115797 +bool is_usercopy_object(const void *ptr)
115798 +{
115799 + struct page *page;
115800 + struct kmem_cache *cachep;
115801 +
115802 + if (ZERO_OR_NULL_PTR(ptr))
115803 + return false;
115804 +
115805 + if (!slab_is_available())
115806 + return false;
115807 +
115808 + if (is_vmalloc_addr(ptr)
115809 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
115810 + && !object_starts_on_stack(ptr)
115811 +#endif
115812 + ) {
115813 + struct vm_struct *vm = find_vm_area(ptr);
115814 + if (vm && (vm->flags & VM_USERCOPY))
115815 + return true;
115816 + return false;
115817 + }
115818 +
115819 + if (!virt_addr_valid(ptr))
115820 + return false;
115821 +
115822 + page = virt_to_head_page(ptr);
115823 +
115824 + if (!PageSlab(page))
115825 + return false;
115826 +
115827 + cachep = page->slab_cache;
115828 + return cachep->flags & SLAB_USERCOPY;
115829 +}
115830 +
115831 +#ifdef CONFIG_PAX_USERCOPY
115832 +const char *check_heap_object(const void *ptr, unsigned long n)
115833 +{
115834 + struct page *page;
115835 + struct kmem_cache *cachep;
115836 + unsigned int objnr;
115837 + unsigned long offset;
115838 +
115839 + if (ZERO_OR_NULL_PTR(ptr))
115840 + return "<null>";
115841 +
115842 + if (!virt_addr_valid(ptr))
115843 + return NULL;
115844 +
115845 + page = virt_to_head_page(ptr);
115846 +
115847 + if (!PageSlab(page))
115848 + return NULL;
115849 +
115850 + cachep = page->slab_cache;
115851 + if (!(cachep->flags & SLAB_USERCOPY))
115852 + return cachep->name;
115853 +
115854 + objnr = obj_to_index(cachep, page, ptr);
115855 + BUG_ON(objnr >= cachep->num);
115856 + offset = ptr - index_to_obj(cachep, page, objnr) - obj_offset(cachep);
115857 + if (offset <= cachep->object_size && n <= cachep->object_size - offset)
115858 + return NULL;
115859 +
115860 + return cachep->name;
115861 +}
115862 +#endif
115863 +
115864 /**
115865 * ksize - get the actual amount of memory allocated for a given object
115866 * @objp: Pointer to the object
115867 diff --git a/mm/slab.h b/mm/slab.h
115868 index 8da63e4..50c423b 100644
115869 --- a/mm/slab.h
115870 +++ b/mm/slab.h
115871 @@ -22,7 +22,7 @@ struct kmem_cache {
115872 unsigned int align; /* Alignment as calculated */
115873 unsigned long flags; /* Active flags on the slab */
115874 const char *name; /* Slab name for sysfs */
115875 - int refcount; /* Use counter */
115876 + atomic_t refcount; /* Use counter */
115877 void (*ctor)(void *); /* Called on object slot creation */
115878 struct list_head list; /* List of all slab caches on the system */
115879 };
115880 @@ -66,6 +66,20 @@ extern struct list_head slab_caches;
115881 /* The slab cache that manages slab cache information */
115882 extern struct kmem_cache *kmem_cache;
115883
115884 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115885 +#ifdef CONFIG_X86_64
115886 +#define PAX_MEMORY_SANITIZE_VALUE '\xfe'
115887 +#else
115888 +#define PAX_MEMORY_SANITIZE_VALUE '\xff'
115889 +#endif
115890 +enum pax_sanitize_mode {
115891 + PAX_SANITIZE_SLAB_OFF = 0,
115892 + PAX_SANITIZE_SLAB_FAST,
115893 + PAX_SANITIZE_SLAB_FULL,
115894 +};
115895 +extern enum pax_sanitize_mode pax_sanitize_slab;
115896 +#endif
115897 +
115898 unsigned long calculate_alignment(unsigned long flags,
115899 unsigned long align, unsigned long size);
115900
115901 @@ -115,7 +129,8 @@ static inline unsigned long kmem_cache_flags(unsigned long object_size,
115902
115903 /* Legal flag mask for kmem_cache_create(), for various configurations */
115904 #define SLAB_CORE_FLAGS (SLAB_HWCACHE_ALIGN | SLAB_CACHE_DMA | SLAB_PANIC | \
115905 - SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS )
115906 + SLAB_DESTROY_BY_RCU | SLAB_DEBUG_OBJECTS | \
115907 + SLAB_USERCOPY | SLAB_NO_SANITIZE)
115908
115909 #if defined(CONFIG_DEBUG_SLAB)
115910 #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER)
115911 @@ -316,6 +331,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
115912 return s;
115913
115914 page = virt_to_head_page(x);
115915 +
115916 + BUG_ON(!PageSlab(page));
115917 +
115918 cachep = page->slab_cache;
115919 if (slab_equal_or_root(cachep, s))
115920 return cachep;
115921 diff --git a/mm/slab_common.c b/mm/slab_common.c
115922 index 8683110..916e2c5 100644
115923 --- a/mm/slab_common.c
115924 +++ b/mm/slab_common.c
115925 @@ -25,11 +25,35 @@
115926
115927 #include "slab.h"
115928
115929 -enum slab_state slab_state;
115930 +enum slab_state slab_state __read_only;
115931 LIST_HEAD(slab_caches);
115932 DEFINE_MUTEX(slab_mutex);
115933 struct kmem_cache *kmem_cache;
115934
115935 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115936 +enum pax_sanitize_mode pax_sanitize_slab __read_only = PAX_SANITIZE_SLAB_FAST;
115937 +static int __init pax_sanitize_slab_setup(char *str)
115938 +{
115939 + if (!str)
115940 + return 0;
115941 +
115942 + if (!strcmp(str, "0") || !strcmp(str, "off")) {
115943 + pr_info("PaX slab sanitization: %s\n", "disabled");
115944 + pax_sanitize_slab = PAX_SANITIZE_SLAB_OFF;
115945 + } else if (!strcmp(str, "1") || !strcmp(str, "fast")) {
115946 + pr_info("PaX slab sanitization: %s\n", "fast");
115947 + pax_sanitize_slab = PAX_SANITIZE_SLAB_FAST;
115948 + } else if (!strcmp(str, "full")) {
115949 + pr_info("PaX slab sanitization: %s\n", "full");
115950 + pax_sanitize_slab = PAX_SANITIZE_SLAB_FULL;
115951 + } else
115952 + pr_err("PaX slab sanitization: unsupported option '%s'\n", str);
115953 +
115954 + return 0;
115955 +}
115956 +early_param("pax_sanitize_slab", pax_sanitize_slab_setup);
115957 +#endif
115958 +
115959 /*
115960 * Set of flags that will prevent slab merging
115961 */
115962 @@ -43,7 +67,7 @@ struct kmem_cache *kmem_cache;
115963 * Merge control. If this is set then no merging of slab caches will occur.
115964 * (Could be removed. This was introduced to pacify the merge skeptics.)
115965 */
115966 -static int slab_nomerge;
115967 +static int slab_nomerge = 1;
115968
115969 static int __init setup_slab_nomerge(char *str)
115970 {
115971 @@ -216,7 +240,7 @@ int slab_unmergeable(struct kmem_cache *s)
115972 /*
115973 * We may have set a slab to be unmergeable during bootstrap.
115974 */
115975 - if (s->refcount < 0)
115976 + if (atomic_read(&s->refcount) < 0)
115977 return 1;
115978
115979 return 0;
115980 @@ -320,7 +344,7 @@ do_kmem_cache_create(const char *name, size_t object_size, size_t size,
115981 if (err)
115982 goto out_free_cache;
115983
115984 - s->refcount = 1;
115985 + atomic_set(&s->refcount, 1);
115986 list_add(&s->list, &slab_caches);
115987 out:
115988 if (err)
115989 @@ -385,6 +409,13 @@ kmem_cache_create(const char *name, size_t size, size_t align,
115990 */
115991 flags &= CACHE_CREATE_MASK;
115992
115993 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
115994 + if (pax_sanitize_slab == PAX_SANITIZE_SLAB_OFF || (flags & SLAB_DESTROY_BY_RCU))
115995 + flags |= SLAB_NO_SANITIZE;
115996 + else if (pax_sanitize_slab == PAX_SANITIZE_SLAB_FULL)
115997 + flags &= ~SLAB_NO_SANITIZE;
115998 +#endif
115999 +
116000 s = __kmem_cache_alias(name, size, align, flags, ctor);
116001 if (s)
116002 goto out_unlock;
116003 @@ -455,7 +486,7 @@ static void do_kmem_cache_release(struct list_head *release,
116004 rcu_barrier();
116005
116006 list_for_each_entry_safe(s, s2, release, list) {
116007 -#ifdef SLAB_SUPPORTS_SYSFS
116008 +#if defined(SLAB_SUPPORTS_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116009 sysfs_slab_remove(s);
116010 #else
116011 slab_kmem_cache_release(s);
116012 @@ -624,8 +655,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
116013
116014 mutex_lock(&slab_mutex);
116015
116016 - s->refcount--;
116017 - if (s->refcount)
116018 + if (!atomic_dec_and_test(&s->refcount))
116019 goto out_unlock;
116020
116021 for_each_memcg_cache_safe(c, c2, s) {
116022 @@ -690,7 +720,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
116023 panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n",
116024 name, size, err);
116025
116026 - s->refcount = -1; /* Exempt from merging for now */
116027 + atomic_set(&s->refcount, -1); /* Exempt from merging for now */
116028 }
116029
116030 struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
116031 @@ -703,7 +733,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
116032
116033 create_boot_cache(s, name, size, flags);
116034 list_add(&s->list, &slab_caches);
116035 - s->refcount = 1;
116036 + atomic_set(&s->refcount, 1);
116037 return s;
116038 }
116039
116040 @@ -715,6 +745,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
116041 EXPORT_SYMBOL(kmalloc_dma_caches);
116042 #endif
116043
116044 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116045 +struct kmem_cache *kmalloc_usercopy_caches[KMALLOC_SHIFT_HIGH + 1];
116046 +EXPORT_SYMBOL(kmalloc_usercopy_caches);
116047 +#endif
116048 +
116049 /*
116050 * Conversion table for small slabs sizes / 8 to the index in the
116051 * kmalloc array. This is necessary for slabs < 192 since we have non power
116052 @@ -779,6 +814,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
116053 return kmalloc_dma_caches[index];
116054
116055 #endif
116056 +
116057 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116058 + if (unlikely((flags & GFP_USERCOPY)))
116059 + return kmalloc_usercopy_caches[index];
116060 +
116061 +#endif
116062 +
116063 return kmalloc_caches[index];
116064 }
116065
116066 @@ -871,7 +913,7 @@ void __init create_kmalloc_caches(unsigned long flags)
116067
116068 for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
116069 if (!kmalloc_caches[i])
116070 - new_kmalloc_cache(i, flags);
116071 + new_kmalloc_cache(i, SLAB_USERCOPY | flags);
116072
116073 /*
116074 * Caches that are not of the two-to-the-power-of size.
116075 @@ -879,9 +921,9 @@ void __init create_kmalloc_caches(unsigned long flags)
116076 * earlier power of two caches
116077 */
116078 if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6)
116079 - new_kmalloc_cache(1, flags);
116080 + new_kmalloc_cache(1, SLAB_USERCOPY | flags);
116081 if (KMALLOC_MIN_SIZE <= 64 && !kmalloc_caches[2] && i == 7)
116082 - new_kmalloc_cache(2, flags);
116083 + new_kmalloc_cache(2, SLAB_USERCOPY | flags);
116084 }
116085
116086 /* Kmalloc array is now usable */
116087 @@ -902,6 +944,23 @@ void __init create_kmalloc_caches(unsigned long flags)
116088 }
116089 }
116090 #endif
116091 +
116092 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116093 + for (i = 0; i <= KMALLOC_SHIFT_HIGH; i++) {
116094 + struct kmem_cache *s = kmalloc_caches[i];
116095 +
116096 + if (s) {
116097 + int size = kmalloc_size(i);
116098 + char *n = kasprintf(GFP_NOWAIT,
116099 + "usercopy-kmalloc-%d", size);
116100 +
116101 + BUG_ON(!n);
116102 + kmalloc_usercopy_caches[i] = create_kmalloc_cache(n,
116103 + size, SLAB_USERCOPY | flags);
116104 + }
116105 + }
116106 +#endif
116107 +
116108 }
116109 #endif /* !CONFIG_SLOB */
116110
116111 @@ -961,6 +1020,9 @@ static void print_slabinfo_header(struct seq_file *m)
116112 seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
116113 "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
116114 seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
116115 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116116 + seq_puts(m, " : pax <sanitized> <not_sanitized>");
116117 +#endif
116118 #endif
116119 seq_putc(m, '\n');
116120 }
116121 @@ -1090,7 +1152,7 @@ static int __init slab_proc_init(void)
116122 module_init(slab_proc_init);
116123 #endif /* CONFIG_SLABINFO */
116124
116125 -static __always_inline void *__do_krealloc(const void *p, size_t new_size,
116126 +static __always_inline void * __size_overflow(2) __do_krealloc(const void *p, size_t new_size,
116127 gfp_t flags)
116128 {
116129 void *ret;
116130 diff --git a/mm/slob.c b/mm/slob.c
116131 index 4765f65..5dec45e 100644
116132 --- a/mm/slob.c
116133 +++ b/mm/slob.c
116134 @@ -67,6 +67,7 @@
116135 #include <linux/rcupdate.h>
116136 #include <linux/list.h>
116137 #include <linux/kmemleak.h>
116138 +#include <linux/vmalloc.h>
116139
116140 #include <trace/events/kmem.h>
116141
116142 @@ -157,7 +158,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next)
116143 /*
116144 * Return the size of a slob block.
116145 */
116146 -static slobidx_t slob_units(slob_t *s)
116147 +static slobidx_t slob_units(const slob_t *s)
116148 {
116149 if (s->units > 0)
116150 return s->units;
116151 @@ -167,7 +168,7 @@ static slobidx_t slob_units(slob_t *s)
116152 /*
116153 * Return the next free slob block pointer after this one.
116154 */
116155 -static slob_t *slob_next(slob_t *s)
116156 +static slob_t *slob_next(const slob_t *s)
116157 {
116158 slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK);
116159 slobidx_t next;
116160 @@ -182,14 +183,14 @@ static slob_t *slob_next(slob_t *s)
116161 /*
116162 * Returns true if s is the last free block in its page.
116163 */
116164 -static int slob_last(slob_t *s)
116165 +static int slob_last(const slob_t *s)
116166 {
116167 return !((unsigned long)slob_next(s) & ~PAGE_MASK);
116168 }
116169
116170 -static void *slob_new_pages(gfp_t gfp, int order, int node)
116171 +static struct page *slob_new_pages(gfp_t gfp, unsigned int order, int node)
116172 {
116173 - void *page;
116174 + struct page *page;
116175
116176 #ifdef CONFIG_NUMA
116177 if (node != NUMA_NO_NODE)
116178 @@ -201,14 +202,18 @@ static void *slob_new_pages(gfp_t gfp, int order, int node)
116179 if (!page)
116180 return NULL;
116181
116182 - return page_address(page);
116183 + __SetPageSlab(page);
116184 + return page;
116185 }
116186
116187 -static void slob_free_pages(void *b, int order)
116188 +static void slob_free_pages(struct page *sp, int order)
116189 {
116190 if (current->reclaim_state)
116191 current->reclaim_state->reclaimed_slab += 1 << order;
116192 - free_pages((unsigned long)b, order);
116193 + __ClearPageSlab(sp);
116194 + page_mapcount_reset(sp);
116195 + sp->private = 0;
116196 + __free_pages(sp, order);
116197 }
116198
116199 /*
116200 @@ -313,15 +318,15 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
116201
116202 /* Not enough space: must allocate a new page */
116203 if (!b) {
116204 - b = slob_new_pages(gfp & ~__GFP_ZERO, 0, node);
116205 - if (!b)
116206 + sp = slob_new_pages(gfp & ~__GFP_ZERO, 0, node);
116207 + if (!sp)
116208 return NULL;
116209 - sp = virt_to_page(b);
116210 - __SetPageSlab(sp);
116211 + b = page_address(sp);
116212
116213 spin_lock_irqsave(&slob_lock, flags);
116214 sp->units = SLOB_UNITS(PAGE_SIZE);
116215 sp->freelist = b;
116216 + sp->private = 0;
116217 INIT_LIST_HEAD(&sp->lru);
116218 set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE));
116219 set_slob_page_free(sp, slob_list);
116220 @@ -337,7 +342,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
116221 /*
116222 * slob_free: entry point into the slob allocator.
116223 */
116224 -static void slob_free(void *block, int size)
116225 +static void slob_free(struct kmem_cache *c, void *block, int size)
116226 {
116227 struct page *sp;
116228 slob_t *prev, *next, *b = (slob_t *)block;
116229 @@ -359,12 +364,15 @@ static void slob_free(void *block, int size)
116230 if (slob_page_free(sp))
116231 clear_slob_page_free(sp);
116232 spin_unlock_irqrestore(&slob_lock, flags);
116233 - __ClearPageSlab(sp);
116234 - page_mapcount_reset(sp);
116235 - slob_free_pages(b, 0);
116236 + slob_free_pages(sp, 0);
116237 return;
116238 }
116239
116240 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116241 + if (pax_sanitize_slab && !(c && (c->flags & SLAB_NO_SANITIZE)))
116242 + memset(block, PAX_MEMORY_SANITIZE_VALUE, size);
116243 +#endif
116244 +
116245 if (!slob_page_free(sp)) {
116246 /* This slob page is about to become partially free. Easy! */
116247 sp->units = units;
116248 @@ -424,11 +432,10 @@ out:
116249 */
116250
116251 static __always_inline void *
116252 -__do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller)
116253 +__do_kmalloc_node_align(size_t size, gfp_t gfp, int node, unsigned long caller, int align)
116254 {
116255 - unsigned int *m;
116256 - int align = max_t(size_t, ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
116257 - void *ret;
116258 + slob_t *m;
116259 + void *ret = NULL;
116260
116261 gfp &= gfp_allowed_mask;
116262
116263 @@ -442,27 +449,45 @@ __do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller)
116264
116265 if (!m)
116266 return NULL;
116267 - *m = size;
116268 + BUILD_BUG_ON(ARCH_KMALLOC_MINALIGN < 2 * SLOB_UNIT);
116269 + BUILD_BUG_ON(ARCH_SLAB_MINALIGN < 2 * SLOB_UNIT);
116270 + m[0].units = size;
116271 + m[1].units = align;
116272 ret = (void *)m + align;
116273
116274 trace_kmalloc_node(caller, ret,
116275 size, size + align, gfp, node);
116276 } else {
116277 unsigned int order = get_order(size);
116278 + struct page *page;
116279
116280 if (likely(order))
116281 gfp |= __GFP_COMP;
116282 - ret = slob_new_pages(gfp, order, node);
116283 + page = slob_new_pages(gfp, order, node);
116284 + if (page) {
116285 + ret = page_address(page);
116286 + page->private = size;
116287 + }
116288
116289 trace_kmalloc_node(caller, ret,
116290 size, PAGE_SIZE << order, gfp, node);
116291 }
116292
116293 - kmemleak_alloc(ret, size, 1, gfp);
116294 return ret;
116295 }
116296
116297 -void *__kmalloc(size_t size, gfp_t gfp)
116298 +static __always_inline void *
116299 +__do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller)
116300 +{
116301 + int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
116302 + void *ret = __do_kmalloc_node_align(size, gfp, node, caller, align);
116303 +
116304 + if (!ZERO_OR_NULL_PTR(ret))
116305 + kmemleak_alloc(ret, size, 1, gfp);
116306 + return ret;
116307 +}
116308 +
116309 +void * __size_overflow(1) __kmalloc(size_t size, gfp_t gfp)
116310 {
116311 return __do_kmalloc_node(size, gfp, NUMA_NO_NODE, _RET_IP_);
116312 }
116313 @@ -491,34 +516,123 @@ void kfree(const void *block)
116314 return;
116315 kmemleak_free(block);
116316
116317 + VM_BUG_ON(!virt_addr_valid(block));
116318 sp = virt_to_page(block);
116319 - if (PageSlab(sp)) {
116320 + VM_BUG_ON(!PageSlab(sp));
116321 + if (!sp->private) {
116322 int align = max_t(size_t, ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
116323 - unsigned int *m = (unsigned int *)(block - align);
116324 - slob_free(m, *m + align);
116325 - } else
116326 + slob_t *m = (slob_t *)(block - align);
116327 + slob_free(NULL, m, m[0].units + align);
116328 + } else {
116329 + __ClearPageSlab(sp);
116330 + page_mapcount_reset(sp);
116331 + sp->private = 0;
116332 __free_pages(sp, compound_order(sp));
116333 + }
116334 }
116335 EXPORT_SYMBOL(kfree);
116336
116337 +bool is_usercopy_object(const void *ptr)
116338 +{
116339 + if (!slab_is_available())
116340 + return false;
116341 +
116342 + if (is_vmalloc_addr(ptr)
116343 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
116344 + && !object_starts_on_stack(ptr)
116345 +#endif
116346 + ) {
116347 + struct vm_struct *vm = find_vm_area(ptr);
116348 + if (vm && (vm->flags & VM_USERCOPY))
116349 + return true;
116350 + return false;
116351 + }
116352 +
116353 + // PAX: TODO
116354 +
116355 + return false;
116356 +}
116357 +
116358 +#ifdef CONFIG_PAX_USERCOPY
116359 +const char *check_heap_object(const void *ptr, unsigned long n)
116360 +{
116361 + struct page *page;
116362 + const slob_t *free;
116363 + const void *base;
116364 + unsigned long flags;
116365 +
116366 + if (ZERO_OR_NULL_PTR(ptr))
116367 + return "<null>";
116368 +
116369 + if (!virt_addr_valid(ptr))
116370 + return NULL;
116371 +
116372 + page = virt_to_head_page(ptr);
116373 + if (!PageSlab(page))
116374 + return NULL;
116375 +
116376 + if (page->private) {
116377 + base = page;
116378 + if (base <= ptr && n <= page->private - (ptr - base))
116379 + return NULL;
116380 + return "<slob>";
116381 + }
116382 +
116383 + /* some tricky double walking to find the chunk */
116384 + spin_lock_irqsave(&slob_lock, flags);
116385 + base = (void *)((unsigned long)ptr & PAGE_MASK);
116386 + free = page->freelist;
116387 +
116388 + while (!slob_last(free) && (void *)free <= ptr) {
116389 + base = free + slob_units(free);
116390 + free = slob_next(free);
116391 + }
116392 +
116393 + while (base < (void *)free) {
116394 + slobidx_t m = ((slob_t *)base)[0].units, align = ((slob_t *)base)[1].units;
116395 + int size = SLOB_UNIT * SLOB_UNITS(m + align);
116396 + int offset;
116397 +
116398 + if (ptr < base + align)
116399 + break;
116400 +
116401 + offset = ptr - base - align;
116402 + if (offset >= m) {
116403 + base += size;
116404 + continue;
116405 + }
116406 +
116407 + if (n > m - offset)
116408 + break;
116409 +
116410 + spin_unlock_irqrestore(&slob_lock, flags);
116411 + return NULL;
116412 + }
116413 +
116414 + spin_unlock_irqrestore(&slob_lock, flags);
116415 + return "<slob>";
116416 +}
116417 +#endif
116418 +
116419 /* can't use ksize for kmem_cache_alloc memory, only kmalloc */
116420 size_t ksize(const void *block)
116421 {
116422 struct page *sp;
116423 int align;
116424 - unsigned int *m;
116425 + slob_t *m;
116426
116427 BUG_ON(!block);
116428 if (unlikely(block == ZERO_SIZE_PTR))
116429 return 0;
116430
116431 sp = virt_to_page(block);
116432 - if (unlikely(!PageSlab(sp)))
116433 - return PAGE_SIZE << compound_order(sp);
116434 + VM_BUG_ON(!PageSlab(sp));
116435 + if (sp->private)
116436 + return sp->private;
116437
116438 align = max_t(size_t, ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
116439 - m = (unsigned int *)(block - align);
116440 - return SLOB_UNITS(*m) * SLOB_UNIT;
116441 + m = (slob_t *)(block - align);
116442 + return SLOB_UNITS(m[0].units) * SLOB_UNIT;
116443 }
116444 EXPORT_SYMBOL(ksize);
116445
116446 @@ -534,23 +648,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags)
116447
116448 static void *slob_alloc_node(struct kmem_cache *c, gfp_t flags, int node)
116449 {
116450 - void *b;
116451 + void *b = NULL;
116452
116453 flags &= gfp_allowed_mask;
116454
116455 lockdep_trace_alloc(flags);
116456
116457 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116458 + b = __do_kmalloc_node_align(c->size, flags, node, _RET_IP_, c->align);
116459 +#else
116460 if (c->size < PAGE_SIZE) {
116461 b = slob_alloc(c->size, flags, c->align, node);
116462 trace_kmem_cache_alloc_node(_RET_IP_, b, c->object_size,
116463 SLOB_UNITS(c->size) * SLOB_UNIT,
116464 flags, node);
116465 } else {
116466 - b = slob_new_pages(flags, get_order(c->size), node);
116467 + struct page *sp;
116468 +
116469 + sp = slob_new_pages(flags, get_order(c->size), node);
116470 + if (sp) {
116471 + b = page_address(sp);
116472 + sp->private = c->size;
116473 + }
116474 trace_kmem_cache_alloc_node(_RET_IP_, b, c->object_size,
116475 PAGE_SIZE << get_order(c->size),
116476 flags, node);
116477 }
116478 +#endif
116479
116480 if (b && c->ctor)
116481 c->ctor(b);
116482 @@ -566,7 +690,7 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags)
116483 EXPORT_SYMBOL(kmem_cache_alloc);
116484
116485 #ifdef CONFIG_NUMA
116486 -void *__kmalloc_node(size_t size, gfp_t gfp, int node)
116487 +void * __size_overflow(1) __kmalloc_node(size_t size, gfp_t gfp, int node)
116488 {
116489 return __do_kmalloc_node(size, gfp, node, _RET_IP_);
116490 }
116491 @@ -579,12 +703,16 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t gfp, int node)
116492 EXPORT_SYMBOL(kmem_cache_alloc_node);
116493 #endif
116494
116495 -static void __kmem_cache_free(void *b, int size)
116496 +static void __kmem_cache_free(struct kmem_cache *c, void *b, int size)
116497 {
116498 - if (size < PAGE_SIZE)
116499 - slob_free(b, size);
116500 + struct page *sp;
116501 +
116502 + sp = virt_to_page(b);
116503 + BUG_ON(!PageSlab(sp));
116504 + if (!sp->private)
116505 + slob_free(c, b, size);
116506 else
116507 - slob_free_pages(b, get_order(size));
116508 + slob_free_pages(sp, get_order(size));
116509 }
116510
116511 static void kmem_rcu_free(struct rcu_head *head)
116512 @@ -592,22 +720,36 @@ static void kmem_rcu_free(struct rcu_head *head)
116513 struct slob_rcu *slob_rcu = (struct slob_rcu *)head;
116514 void *b = (void *)slob_rcu - (slob_rcu->size - sizeof(struct slob_rcu));
116515
116516 - __kmem_cache_free(b, slob_rcu->size);
116517 + __kmem_cache_free(NULL, b, slob_rcu->size);
116518 }
116519
116520 void kmem_cache_free(struct kmem_cache *c, void *b)
116521 {
116522 + int size = c->size;
116523 +
116524 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116525 + if (size + c->align < PAGE_SIZE) {
116526 + size += c->align;
116527 + b -= c->align;
116528 + }
116529 +#endif
116530 +
116531 kmemleak_free_recursive(b, c->flags);
116532 if (unlikely(c->flags & SLAB_DESTROY_BY_RCU)) {
116533 struct slob_rcu *slob_rcu;
116534 - slob_rcu = b + (c->size - sizeof(struct slob_rcu));
116535 - slob_rcu->size = c->size;
116536 + slob_rcu = b + (size - sizeof(struct slob_rcu));
116537 + slob_rcu->size = size;
116538 call_rcu(&slob_rcu->head, kmem_rcu_free);
116539 } else {
116540 - __kmem_cache_free(b, c->size);
116541 + __kmem_cache_free(c, b, size);
116542 }
116543
116544 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116545 + trace_kfree(_RET_IP_, b);
116546 +#else
116547 trace_kmem_cache_free(_RET_IP_, b);
116548 +#endif
116549 +
116550 }
116551 EXPORT_SYMBOL(kmem_cache_free);
116552
116553 diff --git a/mm/slub.c b/mm/slub.c
116554 index f68c0e5..eb77178 100644
116555 --- a/mm/slub.c
116556 +++ b/mm/slub.c
116557 @@ -34,6 +34,7 @@
116558 #include <linux/stacktrace.h>
116559 #include <linux/prefetch.h>
116560 #include <linux/memcontrol.h>
116561 +#include <linux/vmalloc.h>
116562
116563 #include <trace/events/kmem.h>
116564
116565 @@ -198,7 +199,7 @@ struct track {
116566
116567 enum track_item { TRACK_ALLOC, TRACK_FREE };
116568
116569 -#ifdef CONFIG_SYSFS
116570 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116571 static int sysfs_slab_add(struct kmem_cache *);
116572 static int sysfs_slab_alias(struct kmem_cache *, const char *);
116573 static void memcg_propagate_slab_attrs(struct kmem_cache *s);
116574 @@ -556,7 +557,7 @@ static void print_track(const char *s, struct track *t)
116575 if (!t->addr)
116576 return;
116577
116578 - pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
116579 + pr_err("INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
116580 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
116581 #ifdef CONFIG_STACKTRACE
116582 {
116583 @@ -2707,6 +2708,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
116584
116585 slab_free_hook(s, x);
116586
116587 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116588 + if (!(s->flags & SLAB_NO_SANITIZE)) {
116589 + memset(x, PAX_MEMORY_SANITIZE_VALUE, s->object_size);
116590 + if (s->ctor)
116591 + s->ctor(x);
116592 + }
116593 +#endif
116594 +
116595 redo:
116596 /*
116597 * Determine the currently cpus per cpu slab.
116598 @@ -3048,6 +3057,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
116599 s->inuse = size;
116600
116601 if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
116602 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116603 + (!(flags & SLAB_NO_SANITIZE)) ||
116604 +#endif
116605 s->ctor)) {
116606 /*
116607 * Relocate free pointer after the object if it is not
116608 @@ -3302,7 +3314,7 @@ static int __init setup_slub_min_objects(char *str)
116609
116610 __setup("slub_min_objects=", setup_slub_min_objects);
116611
116612 -void *__kmalloc(size_t size, gfp_t flags)
116613 +void * __size_overflow(1) __kmalloc(size_t size, gfp_t flags)
116614 {
116615 struct kmem_cache *s;
116616 void *ret;
116617 @@ -3340,7 +3352,7 @@ static void *kmalloc_large_node(size_t size, gfp_t flags, int node)
116618 return ptr;
116619 }
116620
116621 -void *__kmalloc_node(size_t size, gfp_t flags, int node)
116622 +void * __size_overflow(1) __kmalloc_node(size_t size, gfp_t flags, int node)
116623 {
116624 struct kmem_cache *s;
116625 void *ret;
116626 @@ -3388,6 +3400,70 @@ static size_t __ksize(const void *object)
116627 return slab_ksize(page->slab_cache);
116628 }
116629
116630 +bool is_usercopy_object(const void *ptr)
116631 +{
116632 + struct page *page;
116633 + struct kmem_cache *s;
116634 +
116635 + if (ZERO_OR_NULL_PTR(ptr))
116636 + return false;
116637 +
116638 + if (!slab_is_available())
116639 + return false;
116640 +
116641 + if (is_vmalloc_addr(ptr)
116642 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
116643 + && !object_starts_on_stack(ptr)
116644 +#endif
116645 + ) {
116646 + struct vm_struct *vm = find_vm_area(ptr);
116647 + if (vm && (vm->flags & VM_USERCOPY))
116648 + return true;
116649 + return false;
116650 + }
116651 +
116652 + if (!virt_addr_valid(ptr))
116653 + return false;
116654 +
116655 + page = virt_to_head_page(ptr);
116656 +
116657 + if (!PageSlab(page))
116658 + return false;
116659 +
116660 + s = page->slab_cache;
116661 + return s->flags & SLAB_USERCOPY;
116662 +}
116663 +
116664 +#ifdef CONFIG_PAX_USERCOPY
116665 +const char *check_heap_object(const void *ptr, unsigned long n)
116666 +{
116667 + struct page *page;
116668 + struct kmem_cache *s;
116669 + unsigned long offset;
116670 +
116671 + if (ZERO_OR_NULL_PTR(ptr))
116672 + return "<null>";
116673 +
116674 + if (!virt_addr_valid(ptr))
116675 + return NULL;
116676 +
116677 + page = virt_to_head_page(ptr);
116678 +
116679 + if (!PageSlab(page))
116680 + return NULL;
116681 +
116682 + s = page->slab_cache;
116683 + if (!(s->flags & SLAB_USERCOPY))
116684 + return s->name;
116685 +
116686 + offset = (ptr - page_address(page)) % s->size;
116687 + if (offset <= s->object_size && n <= s->object_size - offset)
116688 + return NULL;
116689 +
116690 + return s->name;
116691 +}
116692 +#endif
116693 +
116694 size_t ksize(const void *object)
116695 {
116696 size_t size = __ksize(object);
116697 @@ -3408,6 +3484,7 @@ void kfree(const void *x)
116698 if (unlikely(ZERO_OR_NULL_PTR(x)))
116699 return;
116700
116701 + VM_BUG_ON(!virt_addr_valid(x));
116702 page = virt_to_head_page(x);
116703 if (unlikely(!PageSlab(page))) {
116704 BUG_ON(!PageCompound(page));
116705 @@ -3725,7 +3802,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
116706
116707 s = find_mergeable(size, align, flags, name, ctor);
116708 if (s) {
116709 - s->refcount++;
116710 + atomic_inc(&s->refcount);
116711
116712 /*
116713 * Adjust the object sizes so that we clear
116714 @@ -3741,7 +3818,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
116715 }
116716
116717 if (sysfs_slab_alias(s, name)) {
116718 - s->refcount--;
116719 + atomic_dec(&s->refcount);
116720 s = NULL;
116721 }
116722 }
116723 @@ -3858,7 +3935,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
116724 }
116725 #endif
116726
116727 -#ifdef CONFIG_SYSFS
116728 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116729 static int count_inuse(struct page *page)
116730 {
116731 return page->inuse;
116732 @@ -4139,7 +4216,11 @@ static int list_locations(struct kmem_cache *s, char *buf,
116733 len += sprintf(buf + len, "%7ld ", l->count);
116734
116735 if (l->addr)
116736 +#ifdef CONFIG_GRKERNSEC_HIDESYM
116737 + len += sprintf(buf + len, "%pS", NULL);
116738 +#else
116739 len += sprintf(buf + len, "%pS", (void *)l->addr);
116740 +#endif
116741 else
116742 len += sprintf(buf + len, "<not-available>");
116743
116744 @@ -4237,12 +4318,12 @@ static void __init resiliency_test(void)
116745 validate_slab_cache(kmalloc_caches[9]);
116746 }
116747 #else
116748 -#ifdef CONFIG_SYSFS
116749 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116750 static void resiliency_test(void) {};
116751 #endif
116752 #endif
116753
116754 -#ifdef CONFIG_SYSFS
116755 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116756 enum slab_stat_type {
116757 SL_ALL, /* All slabs */
116758 SL_PARTIAL, /* Only partially allocated slabs */
116759 @@ -4479,13 +4560,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
116760 {
116761 if (!s->ctor)
116762 return 0;
116763 +#ifdef CONFIG_GRKERNSEC_HIDESYM
116764 + return sprintf(buf, "%pS\n", NULL);
116765 +#else
116766 return sprintf(buf, "%pS\n", s->ctor);
116767 +#endif
116768 }
116769 SLAB_ATTR_RO(ctor);
116770
116771 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
116772 {
116773 - return sprintf(buf, "%d\n", s->refcount < 0 ? 0 : s->refcount - 1);
116774 + return sprintf(buf, "%d\n", atomic_read(&s->refcount) < 0 ? 0 : atomic_read(&s->refcount) - 1);
116775 }
116776 SLAB_ATTR_RO(aliases);
116777
116778 @@ -4573,6 +4658,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
116779 SLAB_ATTR_RO(cache_dma);
116780 #endif
116781
116782 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116783 +static ssize_t usercopy_show(struct kmem_cache *s, char *buf)
116784 +{
116785 + return sprintf(buf, "%d\n", !!(s->flags & SLAB_USERCOPY));
116786 +}
116787 +SLAB_ATTR_RO(usercopy);
116788 +#endif
116789 +
116790 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116791 +static ssize_t sanitize_show(struct kmem_cache *s, char *buf)
116792 +{
116793 + return sprintf(buf, "%d\n", !(s->flags & SLAB_NO_SANITIZE));
116794 +}
116795 +SLAB_ATTR_RO(sanitize);
116796 +#endif
116797 +
116798 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
116799 {
116800 return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU));
116801 @@ -4628,7 +4729,7 @@ static ssize_t trace_store(struct kmem_cache *s, const char *buf,
116802 * as well as cause other issues like converting a mergeable
116803 * cache into an umergeable one.
116804 */
116805 - if (s->refcount > 1)
116806 + if (atomic_read(&s->refcount) > 1)
116807 return -EINVAL;
116808
116809 s->flags &= ~SLAB_TRACE;
116810 @@ -4748,7 +4849,7 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf)
116811 static ssize_t failslab_store(struct kmem_cache *s, const char *buf,
116812 size_t length)
116813 {
116814 - if (s->refcount > 1)
116815 + if (atomic_read(&s->refcount) > 1)
116816 return -EINVAL;
116817
116818 s->flags &= ~SLAB_FAILSLAB;
116819 @@ -4915,6 +5016,12 @@ static struct attribute *slab_attrs[] = {
116820 #ifdef CONFIG_ZONE_DMA
116821 &cache_dma_attr.attr,
116822 #endif
116823 +#ifdef CONFIG_PAX_USERCOPY_SLABS
116824 + &usercopy_attr.attr,
116825 +#endif
116826 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
116827 + &sanitize_attr.attr,
116828 +#endif
116829 #ifdef CONFIG_NUMA
116830 &remote_node_defrag_ratio_attr.attr,
116831 #endif
116832 @@ -5156,6 +5263,7 @@ static char *create_unique_id(struct kmem_cache *s)
116833 return name;
116834 }
116835
116836 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116837 static int sysfs_slab_add(struct kmem_cache *s)
116838 {
116839 int err;
116840 @@ -5229,6 +5337,7 @@ void sysfs_slab_remove(struct kmem_cache *s)
116841 kobject_del(&s->kobj);
116842 kobject_put(&s->kobj);
116843 }
116844 +#endif
116845
116846 /*
116847 * Need to buffer aliases during bootup until sysfs becomes
116848 @@ -5242,6 +5351,7 @@ struct saved_alias {
116849
116850 static struct saved_alias *alias_list;
116851
116852 +#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
116853 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
116854 {
116855 struct saved_alias *al;
116856 @@ -5264,6 +5374,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
116857 alias_list = al;
116858 return 0;
116859 }
116860 +#endif
116861
116862 static int __init slab_sysfs_init(void)
116863 {
116864 diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
116865 index 4cba9c2..b4f9fcc 100644
116866 --- a/mm/sparse-vmemmap.c
116867 +++ b/mm/sparse-vmemmap.c
116868 @@ -131,7 +131,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node)
116869 void *p = vmemmap_alloc_block(PAGE_SIZE, node);
116870 if (!p)
116871 return NULL;
116872 - pud_populate(&init_mm, pud, p);
116873 + pud_populate_kernel(&init_mm, pud, p);
116874 }
116875 return pud;
116876 }
116877 @@ -143,7 +143,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node)
116878 void *p = vmemmap_alloc_block(PAGE_SIZE, node);
116879 if (!p)
116880 return NULL;
116881 - pgd_populate(&init_mm, pgd, p);
116882 + pgd_populate_kernel(&init_mm, pgd, p);
116883 }
116884 return pgd;
116885 }
116886 diff --git a/mm/sparse.c b/mm/sparse.c
116887 index d1b48b6..6e8590e 100644
116888 --- a/mm/sparse.c
116889 +++ b/mm/sparse.c
116890 @@ -750,7 +750,7 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages)
116891
116892 for (i = 0; i < PAGES_PER_SECTION; i++) {
116893 if (PageHWPoison(&memmap[i])) {
116894 - atomic_long_sub(1, &num_poisoned_pages);
116895 + atomic_long_sub_unchecked(1, &num_poisoned_pages);
116896 ClearPageHWPoison(&memmap[i]);
116897 }
116898 }
116899 diff --git a/mm/swap.c b/mm/swap.c
116900 index a3a0a2f..915d436 100644
116901 --- a/mm/swap.c
116902 +++ b/mm/swap.c
116903 @@ -85,6 +85,8 @@ static void __put_compound_page(struct page *page)
116904 if (!PageHuge(page))
116905 __page_cache_release(page);
116906 dtor = get_compound_page_dtor(page);
116907 + if (!PageHuge(page))
116908 + BUG_ON(dtor != free_compound_page);
116909 (*dtor)(page);
116910 }
116911
116912 diff --git a/mm/swapfile.c b/mm/swapfile.c
116913 index 41e4581..6c452c9 100644
116914 --- a/mm/swapfile.c
116915 +++ b/mm/swapfile.c
116916 @@ -84,7 +84,7 @@ static DEFINE_MUTEX(swapon_mutex);
116917
116918 static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
116919 /* Activity counter to indicate that a swapon or swapoff has occurred */
116920 -static atomic_t proc_poll_event = ATOMIC_INIT(0);
116921 +static atomic_unchecked_t proc_poll_event = ATOMIC_INIT(0);
116922
116923 static inline unsigned char swap_count(unsigned char ent)
116924 {
116925 @@ -1944,7 +1944,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
116926 spin_unlock(&swap_lock);
116927
116928 err = 0;
116929 - atomic_inc(&proc_poll_event);
116930 + atomic_inc_unchecked(&proc_poll_event);
116931 wake_up_interruptible(&proc_poll_wait);
116932
116933 out_dput:
116934 @@ -1961,8 +1961,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
116935
116936 poll_wait(file, &proc_poll_wait, wait);
116937
116938 - if (seq->poll_event != atomic_read(&proc_poll_event)) {
116939 - seq->poll_event = atomic_read(&proc_poll_event);
116940 + if (seq->poll_event != atomic_read_unchecked(&proc_poll_event)) {
116941 + seq->poll_event = atomic_read_unchecked(&proc_poll_event);
116942 return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
116943 }
116944
116945 @@ -2060,7 +2060,7 @@ static int swaps_open(struct inode *inode, struct file *file)
116946 return ret;
116947
116948 seq = file->private_data;
116949 - seq->poll_event = atomic_read(&proc_poll_event);
116950 + seq->poll_event = atomic_read_unchecked(&proc_poll_event);
116951 return 0;
116952 }
116953
116954 @@ -2520,7 +2520,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
116955 (frontswap_map) ? "FS" : "");
116956
116957 mutex_unlock(&swapon_mutex);
116958 - atomic_inc(&proc_poll_event);
116959 + atomic_inc_unchecked(&proc_poll_event);
116960 wake_up_interruptible(&proc_poll_wait);
116961
116962 if (S_ISREG(inode->i_mode))
116963 diff --git a/mm/util.c b/mm/util.c
116964 index 68ff8a5..40c7a70 100644
116965 --- a/mm/util.c
116966 +++ b/mm/util.c
116967 @@ -233,6 +233,12 @@ struct task_struct *task_of_stack(struct task_struct *task,
116968 void arch_pick_mmap_layout(struct mm_struct *mm)
116969 {
116970 mm->mmap_base = TASK_UNMAPPED_BASE;
116971 +
116972 +#ifdef CONFIG_PAX_RANDMMAP
116973 + if (mm->pax_flags & MF_PAX_RANDMMAP)
116974 + mm->mmap_base += mm->delta_mmap;
116975 +#endif
116976 +
116977 mm->get_unmapped_area = arch_get_unmapped_area;
116978 }
116979 #endif
116980 @@ -434,6 +440,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen)
116981 if (!mm->arg_end)
116982 goto out_mm; /* Shh! No looking before we're done */
116983
116984 + if (gr_acl_handle_procpidmem(task))
116985 + goto out_mm;
116986 +
116987 len = mm->arg_end - mm->arg_start;
116988
116989 if (len > buflen)
116990 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
116991 index 2faaa29..14881ba 100644
116992 --- a/mm/vmalloc.c
116993 +++ b/mm/vmalloc.c
116994 @@ -40,20 +40,65 @@ struct vfree_deferred {
116995 struct work_struct wq;
116996 };
116997 static DEFINE_PER_CPU(struct vfree_deferred, vfree_deferred);
116998 +static DEFINE_PER_CPU(struct vfree_deferred, vunmap_deferred);
116999 +
117000 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
117001 +struct stack_deferred_llist {
117002 + struct llist_head list;
117003 + void *stack;
117004 + void *lowmem_stack;
117005 +};
117006 +
117007 +struct stack_deferred {
117008 + struct stack_deferred_llist list;
117009 + struct work_struct wq;
117010 +};
117011 +
117012 +static DEFINE_PER_CPU(struct stack_deferred, stack_deferred);
117013 +#endif
117014
117015 static void __vunmap(const void *, int);
117016
117017 -static void free_work(struct work_struct *w)
117018 +static void vfree_work(struct work_struct *w)
117019 {
117020 struct vfree_deferred *p = container_of(w, struct vfree_deferred, wq);
117021 struct llist_node *llnode = llist_del_all(&p->list);
117022 while (llnode) {
117023 - void *p = llnode;
117024 + void *x = llnode;
117025 llnode = llist_next(llnode);
117026 - __vunmap(p, 1);
117027 + __vunmap(x, 1);
117028 }
117029 }
117030
117031 +static void vunmap_work(struct work_struct *w)
117032 +{
117033 + struct vfree_deferred *p = container_of(w, struct vfree_deferred, wq);
117034 + struct llist_node *llnode = llist_del_all(&p->list);
117035 + while (llnode) {
117036 + void *x = llnode;
117037 + llnode = llist_next(llnode);
117038 + __vunmap(x, 0);
117039 + }
117040 +}
117041 +
117042 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
117043 +static void unmap_work(struct work_struct *w)
117044 +{
117045 + struct stack_deferred *p = container_of(w, struct stack_deferred, wq);
117046 + struct llist_node *llnode = llist_del_all(&p->list.list);
117047 + while (llnode) {
117048 + struct stack_deferred_llist *x =
117049 + llist_entry((struct llist_head *)llnode,
117050 + struct stack_deferred_llist, list);
117051 + void *stack = ACCESS_ONCE(x->stack);
117052 + void *lowmem_stack = ACCESS_ONCE(x->lowmem_stack);
117053 + llnode = llist_next(llnode);
117054 + __vunmap(stack, 0);
117055 + free_kmem_pages((unsigned long)lowmem_stack, THREAD_SIZE_ORDER);
117056 + }
117057 +}
117058 +#endif
117059 +
117060 /*** Page table manipulation functions ***/
117061
117062 static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end)
117063 @@ -62,8 +107,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end)
117064
117065 pte = pte_offset_kernel(pmd, addr);
117066 do {
117067 - pte_t ptent = ptep_get_and_clear(&init_mm, addr, pte);
117068 - WARN_ON(!pte_none(ptent) && !pte_present(ptent));
117069 +
117070 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
117071 + if ((unsigned long)MODULES_EXEC_VADDR <= addr && addr < (unsigned long)MODULES_EXEC_END) {
117072 + BUG_ON(!pte_exec(*pte));
117073 + set_pte_at(&init_mm, addr, pte, pfn_pte(__pa(addr) >> PAGE_SHIFT, PAGE_KERNEL_EXEC));
117074 + continue;
117075 + }
117076 +#endif
117077 +
117078 + {
117079 + pte_t ptent = ptep_get_and_clear(&init_mm, addr, pte);
117080 + WARN_ON(!pte_none(ptent) && !pte_present(ptent));
117081 + }
117082 } while (pte++, addr += PAGE_SIZE, addr != end);
117083 }
117084
117085 @@ -130,10 +186,18 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr,
117086 do {
117087 struct page *page = pages[*nr];
117088
117089 - if (WARN_ON(!pte_none(*pte)))
117090 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
117091 + if (pgprot_val(prot) & _PAGE_NX)
117092 +#endif
117093 +
117094 + if (!pte_none(*pte)) {
117095 + WARN_ON(1);
117096 return -EBUSY;
117097 - if (WARN_ON(!page))
117098 + }
117099 + if (!page) {
117100 + WARN_ON(1);
117101 return -ENOMEM;
117102 + }
117103 set_pte_at(&init_mm, addr, pte, mk_pte(page, prot));
117104 (*nr)++;
117105 } while (pte++, addr += PAGE_SIZE, addr != end);
117106 @@ -146,7 +210,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr,
117107 pmd_t *pmd;
117108 unsigned long next;
117109
117110 - pmd = pmd_alloc(&init_mm, pud, addr);
117111 + pmd = pmd_alloc_kernel(&init_mm, pud, addr);
117112 if (!pmd)
117113 return -ENOMEM;
117114 do {
117115 @@ -163,7 +227,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr,
117116 pud_t *pud;
117117 unsigned long next;
117118
117119 - pud = pud_alloc(&init_mm, pgd, addr);
117120 + pud = pud_alloc_kernel(&init_mm, pgd, addr);
117121 if (!pud)
117122 return -ENOMEM;
117123 do {
117124 @@ -223,6 +287,12 @@ int is_vmalloc_or_module_addr(const void *x)
117125 if (addr >= MODULES_VADDR && addr < MODULES_END)
117126 return 1;
117127 #endif
117128 +
117129 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
117130 + if (x >= (const void *)MODULES_EXEC_VADDR && x < (const void *)MODULES_EXEC_END)
117131 + return 1;
117132 +#endif
117133 +
117134 return is_vmalloc_addr(x);
117135 }
117136
117137 @@ -243,8 +313,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr)
117138
117139 if (!pgd_none(*pgd)) {
117140 pud_t *pud = pud_offset(pgd, addr);
117141 +#ifdef CONFIG_X86
117142 + if (!pud_large(*pud))
117143 +#endif
117144 if (!pud_none(*pud)) {
117145 pmd_t *pmd = pmd_offset(pud, addr);
117146 +#ifdef CONFIG_X86
117147 + if (!pmd_large(*pmd))
117148 +#endif
117149 if (!pmd_none(*pmd)) {
117150 pte_t *ptep, pte;
117151
117152 @@ -346,7 +422,7 @@ static void purge_vmap_area_lazy(void);
117153 * Allocate a region of KVA of the specified size and alignment, within the
117154 * vstart and vend.
117155 */
117156 -static struct vmap_area *alloc_vmap_area(unsigned long size,
117157 +static struct vmap_area * __size_overflow(1) alloc_vmap_area(unsigned long size,
117158 unsigned long align,
117159 unsigned long vstart, unsigned long vend,
117160 int node, gfp_t gfp_mask)
117161 @@ -1202,13 +1278,27 @@ void __init vmalloc_init(void)
117162 for_each_possible_cpu(i) {
117163 struct vmap_block_queue *vbq;
117164 struct vfree_deferred *p;
117165 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
117166 + struct stack_deferred *p2;
117167 +#endif
117168
117169 vbq = &per_cpu(vmap_block_queue, i);
117170 spin_lock_init(&vbq->lock);
117171 INIT_LIST_HEAD(&vbq->free);
117172 +
117173 p = &per_cpu(vfree_deferred, i);
117174 init_llist_head(&p->list);
117175 - INIT_WORK(&p->wq, free_work);
117176 + INIT_WORK(&p->wq, vfree_work);
117177 +
117178 + p = &per_cpu(vunmap_deferred, i);
117179 + init_llist_head(&p->list);
117180 + INIT_WORK(&p->wq, vunmap_work);
117181 +
117182 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
117183 + p2 = &per_cpu(stack_deferred, i);
117184 + init_llist_head(&p2->list.list);
117185 + INIT_WORK(&p2->wq, unmap_work);
117186 +#endif
117187 }
117188
117189 /* Import existing vmlist entries. */
117190 @@ -1333,6 +1423,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
117191 struct vm_struct *area;
117192
117193 BUG_ON(in_interrupt());
117194 +
117195 +#if defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
117196 + if (flags & VM_KERNEXEC) {
117197 + if (start != VMALLOC_START || end != VMALLOC_END)
117198 + return NULL;
117199 + start = (unsigned long)MODULES_EXEC_VADDR;
117200 + end = (unsigned long)MODULES_EXEC_END;
117201 + }
117202 +#endif
117203 +
117204 if (flags & VM_IOREMAP)
117205 align = 1ul << clamp_t(int, fls_long(size),
117206 PAGE_SHIFT, IOREMAP_MAX_ORDER);
117207 @@ -1531,13 +1631,36 @@ EXPORT_SYMBOL(vfree);
117208 */
117209 void vunmap(const void *addr)
117210 {
117211 - BUG_ON(in_interrupt());
117212 - might_sleep();
117213 - if (addr)
117214 + if (!addr)
117215 + return;
117216 + if (unlikely(in_interrupt())) {
117217 + struct vfree_deferred *p = this_cpu_ptr(&vunmap_deferred);
117218 + if (llist_add((struct llist_node *)addr, &p->list))
117219 + schedule_work(&p->wq);
117220 + } else {
117221 + might_sleep();
117222 __vunmap(addr, 0);
117223 + }
117224 }
117225 EXPORT_SYMBOL(vunmap);
117226
117227 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
117228 +void unmap_process_stacks(struct task_struct *task)
117229 +{
117230 + if (unlikely(in_interrupt())) {
117231 + struct stack_deferred *p = this_cpu_ptr(&stack_deferred);
117232 + struct stack_deferred_llist *list = task->stack;
117233 + list->stack = task->stack;
117234 + list->lowmem_stack = task->lowmem_stack;
117235 + if (llist_add((struct llist_node *)&list->list, &p->list.list))
117236 + schedule_work(&p->wq);
117237 + } else {
117238 + __vunmap(task->stack, 0);
117239 + free_kmem_pages((unsigned long)task->lowmem_stack, THREAD_SIZE_ORDER);
117240 + }
117241 +}
117242 +#endif
117243 +
117244 /**
117245 * vmap - map an array of pages into virtually contiguous space
117246 * @pages: array of page pointers
117247 @@ -1558,6 +1681,11 @@ void *vmap(struct page **pages, unsigned int count,
117248 if (count > totalram_pages)
117249 return NULL;
117250
117251 +#if defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
117252 + if (!(pgprot_val(prot) & _PAGE_NX))
117253 + flags |= VM_KERNEXEC;
117254 +#endif
117255 +
117256 area = get_vm_area_caller((count << PAGE_SHIFT), flags,
117257 __builtin_return_address(0));
117258 if (!area)
117259 @@ -1662,6 +1790,14 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
117260 if (!size || (size >> PAGE_SHIFT) > totalram_pages)
117261 goto fail;
117262
117263 +#if defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
117264 + if (!(pgprot_val(prot) & _PAGE_NX)) {
117265 + vm_flags |= VM_KERNEXEC;
117266 + start = VMALLOC_START;
117267 + end = VMALLOC_END;
117268 + }
117269 +#endif
117270 +
117271 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED |
117272 vm_flags, start, end, node, gfp_mask, caller);
117273 if (!area)
117274 @@ -1715,6 +1851,14 @@ static void *__vmalloc_node(unsigned long size, unsigned long align,
117275 gfp_mask, prot, 0, node, caller);
117276 }
117277
117278 +void *vmalloc_usercopy(unsigned long size)
117279 +{
117280 + return __vmalloc_node_range(size, 1, VMALLOC_START, VMALLOC_END,
117281 + GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
117282 + VM_USERCOPY, NUMA_NO_NODE,
117283 + __builtin_return_address(0));
117284 +}
117285 +
117286 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
117287 {
117288 return __vmalloc_node(size, 1, gfp_mask, prot, NUMA_NO_NODE,
117289 @@ -1838,10 +1982,9 @@ EXPORT_SYMBOL(vzalloc_node);
117290 * For tight control over page level allocator and protection flags
117291 * use __vmalloc() instead.
117292 */
117293 -
117294 void *vmalloc_exec(unsigned long size)
117295 {
117296 - return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
117297 + return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, PAGE_KERNEL_EXEC,
117298 NUMA_NO_NODE, __builtin_return_address(0));
117299 }
117300
117301 @@ -2148,6 +2291,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
117302 {
117303 struct vm_struct *area;
117304
117305 + BUG_ON(vma->vm_mirror);
117306 +
117307 size = PAGE_ALIGN(size);
117308
117309 if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr))
117310 @@ -2630,7 +2775,11 @@ static int s_show(struct seq_file *m, void *p)
117311 v->addr, v->addr + v->size, v->size);
117312
117313 if (v->caller)
117314 +#ifdef CONFIG_GRKERNSEC_HIDESYM
117315 + seq_printf(m, " %pK", v->caller);
117316 +#else
117317 seq_printf(m, " %pS", v->caller);
117318 +#endif
117319
117320 if (v->nr_pages)
117321 seq_printf(m, " pages=%d", v->nr_pages);
117322 diff --git a/mm/vmstat.c b/mm/vmstat.c
117323 index 4f5cd97..9fb715a 100644
117324 --- a/mm/vmstat.c
117325 +++ b/mm/vmstat.c
117326 @@ -27,6 +27,7 @@
117327 #include <linux/mm_inline.h>
117328 #include <linux/page_ext.h>
117329 #include <linux/page_owner.h>
117330 +#include <linux/grsecurity.h>
117331
117332 #include "internal.h"
117333
117334 @@ -86,7 +87,7 @@ void vm_events_fold_cpu(int cpu)
117335 *
117336 * vm_stat contains the global counters
117337 */
117338 -atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS] __cacheline_aligned_in_smp;
117339 +atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS] __cacheline_aligned_in_smp;
117340 EXPORT_SYMBOL(vm_stat);
117341
117342 #ifdef CONFIG_SMP
117343 @@ -438,7 +439,7 @@ static int fold_diff(int *diff)
117344
117345 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
117346 if (diff[i]) {
117347 - atomic_long_add(diff[i], &vm_stat[i]);
117348 + atomic_long_add_unchecked(diff[i], &vm_stat[i]);
117349 changes++;
117350 }
117351 return changes;
117352 @@ -476,7 +477,7 @@ static int refresh_cpu_vm_stats(void)
117353 v = this_cpu_xchg(p->vm_stat_diff[i], 0);
117354 if (v) {
117355
117356 - atomic_long_add(v, &zone->vm_stat[i]);
117357 + atomic_long_add_unchecked(v, &zone->vm_stat[i]);
117358 global_diff[i] += v;
117359 #ifdef CONFIG_NUMA
117360 /* 3 seconds idle till flush */
117361 @@ -540,7 +541,7 @@ void cpu_vm_stats_fold(int cpu)
117362
117363 v = p->vm_stat_diff[i];
117364 p->vm_stat_diff[i] = 0;
117365 - atomic_long_add(v, &zone->vm_stat[i]);
117366 + atomic_long_add_unchecked(v, &zone->vm_stat[i]);
117367 global_diff[i] += v;
117368 }
117369 }
117370 @@ -560,8 +561,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset)
117371 if (pset->vm_stat_diff[i]) {
117372 int v = pset->vm_stat_diff[i];
117373 pset->vm_stat_diff[i] = 0;
117374 - atomic_long_add(v, &zone->vm_stat[i]);
117375 - atomic_long_add(v, &vm_stat[i]);
117376 + atomic_long_add_unchecked(v, &zone->vm_stat[i]);
117377 + atomic_long_add_unchecked(v, &vm_stat[i]);
117378 }
117379 }
117380 #endif
117381 @@ -1293,10 +1294,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
117382 stat_items_size += sizeof(struct vm_event_state);
117383 #endif
117384
117385 - v = kmalloc(stat_items_size, GFP_KERNEL);
117386 + v = kzalloc(stat_items_size, GFP_KERNEL);
117387 m->private = v;
117388 if (!v)
117389 return ERR_PTR(-ENOMEM);
117390 +
117391 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
117392 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
117393 + if (!uid_eq(current_uid(), GLOBAL_ROOT_UID)
117394 +#ifdef CONFIG_GRKERNSEC_PROC_USERGROUP
117395 + && !in_group_p(grsec_proc_gid)
117396 +#endif
117397 + )
117398 + return (unsigned long *)m->private + *pos;
117399 +#endif
117400 +#endif
117401 +
117402 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
117403 v[i] = global_page_state(i);
117404 v += NR_VM_ZONE_STAT_ITEMS;
117405 @@ -1528,10 +1541,16 @@ static int __init setup_vmstat(void)
117406 cpu_notifier_register_done();
117407 #endif
117408 #ifdef CONFIG_PROC_FS
117409 - proc_create("buddyinfo", S_IRUGO, NULL, &fragmentation_file_operations);
117410 - proc_create("pagetypeinfo", S_IRUGO, NULL, &pagetypeinfo_file_ops);
117411 - proc_create("vmstat", S_IRUGO, NULL, &proc_vmstat_file_operations);
117412 - proc_create("zoneinfo", S_IRUGO, NULL, &proc_zoneinfo_file_operations);
117413 + {
117414 + mode_t gr_mode = S_IRUGO;
117415 +#ifdef CONFIG_GRKERNSEC_PROC_ADD
117416 + gr_mode = S_IRUSR;
117417 +#endif
117418 + proc_create("buddyinfo", gr_mode, NULL, &fragmentation_file_operations);
117419 + proc_create("pagetypeinfo", gr_mode, NULL, &pagetypeinfo_file_ops);
117420 + proc_create("vmstat", S_IRUGO, NULL, &proc_vmstat_file_operations);
117421 + proc_create("zoneinfo", gr_mode, NULL, &proc_zoneinfo_file_operations);
117422 + }
117423 #endif
117424 return 0;
117425 }
117426 diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
117427 index d2cd9de..501c186 100644
117428 --- a/net/8021q/vlan.c
117429 +++ b/net/8021q/vlan.c
117430 @@ -491,7 +491,7 @@ out:
117431 return NOTIFY_DONE;
117432 }
117433
117434 -static struct notifier_block vlan_notifier_block __read_mostly = {
117435 +static struct notifier_block vlan_notifier_block = {
117436 .notifier_call = vlan_device_event,
117437 };
117438
117439 @@ -566,8 +566,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
117440 err = -EPERM;
117441 if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
117442 break;
117443 - if ((args.u.name_type >= 0) &&
117444 - (args.u.name_type < VLAN_NAME_TYPE_HIGHEST)) {
117445 + if (args.u.name_type < VLAN_NAME_TYPE_HIGHEST) {
117446 struct vlan_net *vn;
117447
117448 vn = net_generic(net, vlan_net_id);
117449 diff --git a/net/8021q/vlan_netlink.c b/net/8021q/vlan_netlink.c
117450 index c92b52f..006c052 100644
117451 --- a/net/8021q/vlan_netlink.c
117452 +++ b/net/8021q/vlan_netlink.c
117453 @@ -245,7 +245,7 @@ static struct net *vlan_get_link_net(const struct net_device *dev)
117454 return dev_net(real_dev);
117455 }
117456
117457 -struct rtnl_link_ops vlan_link_ops __read_mostly = {
117458 +struct rtnl_link_ops vlan_link_ops = {
117459 .kind = "vlan",
117460 .maxtype = IFLA_VLAN_MAX,
117461 .policy = vlan_policy,
117462 diff --git a/net/9p/mod.c b/net/9p/mod.c
117463 index 6ab36ae..6f1841b 100644
117464 --- a/net/9p/mod.c
117465 +++ b/net/9p/mod.c
117466 @@ -84,7 +84,7 @@ static LIST_HEAD(v9fs_trans_list);
117467 void v9fs_register_trans(struct p9_trans_module *m)
117468 {
117469 spin_lock(&v9fs_trans_lock);
117470 - list_add_tail(&m->list, &v9fs_trans_list);
117471 + pax_list_add_tail((struct list_head *)&m->list, &v9fs_trans_list);
117472 spin_unlock(&v9fs_trans_lock);
117473 }
117474 EXPORT_SYMBOL(v9fs_register_trans);
117475 @@ -97,7 +97,7 @@ EXPORT_SYMBOL(v9fs_register_trans);
117476 void v9fs_unregister_trans(struct p9_trans_module *m)
117477 {
117478 spin_lock(&v9fs_trans_lock);
117479 - list_del_init(&m->list);
117480 + pax_list_del_init((struct list_head *)&m->list);
117481 spin_unlock(&v9fs_trans_lock);
117482 }
117483 EXPORT_SYMBOL(v9fs_unregister_trans);
117484 diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
117485 index bced8c0..ef253b7 100644
117486 --- a/net/9p/trans_fd.c
117487 +++ b/net/9p/trans_fd.c
117488 @@ -428,7 +428,7 @@ static int p9_fd_write(struct p9_client *client, void *v, int len)
117489 oldfs = get_fs();
117490 set_fs(get_ds());
117491 /* The cast to a user pointer is valid due to the set_fs() */
117492 - ret = vfs_write(ts->wr, (__force void __user *)v, len, &ts->wr->f_pos);
117493 + ret = vfs_write(ts->wr, (void __force_user *)v, len, &ts->wr->f_pos);
117494 set_fs(oldfs);
117495
117496 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
117497 diff --git a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c
117498 index af46bc4..f9adfcd 100644
117499 --- a/net/appletalk/atalk_proc.c
117500 +++ b/net/appletalk/atalk_proc.c
117501 @@ -256,7 +256,7 @@ int __init atalk_proc_init(void)
117502 struct proc_dir_entry *p;
117503 int rc = -ENOMEM;
117504
117505 - atalk_proc_dir = proc_mkdir("atalk", init_net.proc_net);
117506 + atalk_proc_dir = proc_mkdir_restrict("atalk", init_net.proc_net);
117507 if (!atalk_proc_dir)
117508 goto out;
117509
117510 diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c
117511 index 876fbe8..8bbea9f 100644
117512 --- a/net/atm/atm_misc.c
117513 +++ b/net/atm/atm_misc.c
117514 @@ -17,7 +17,7 @@ int atm_charge(struct atm_vcc *vcc, int truesize)
117515 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf)
117516 return 1;
117517 atm_return(vcc, truesize);
117518 - atomic_inc(&vcc->stats->rx_drop);
117519 + atomic_inc_unchecked(&vcc->stats->rx_drop);
117520 return 0;
117521 }
117522 EXPORT_SYMBOL(atm_charge);
117523 @@ -39,7 +39,7 @@ struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc, int pdu_size,
117524 }
117525 }
117526 atm_return(vcc, guess);
117527 - atomic_inc(&vcc->stats->rx_drop);
117528 + atomic_inc_unchecked(&vcc->stats->rx_drop);
117529 return NULL;
117530 }
117531 EXPORT_SYMBOL(atm_alloc_charge);
117532 @@ -86,7 +86,7 @@ EXPORT_SYMBOL(atm_pcr_goal);
117533
117534 void sonet_copy_stats(struct k_sonet_stats *from, struct sonet_stats *to)
117535 {
117536 -#define __HANDLE_ITEM(i) to->i = atomic_read(&from->i)
117537 +#define __HANDLE_ITEM(i) to->i = atomic_read_unchecked(&from->i)
117538 __SONET_ITEMS
117539 #undef __HANDLE_ITEM
117540 }
117541 @@ -94,7 +94,7 @@ EXPORT_SYMBOL(sonet_copy_stats);
117542
117543 void sonet_subtract_stats(struct k_sonet_stats *from, struct sonet_stats *to)
117544 {
117545 -#define __HANDLE_ITEM(i) atomic_sub(to->i, &from->i)
117546 +#define __HANDLE_ITEM(i) atomic_sub_unchecked(to->i,&from->i)
117547 __SONET_ITEMS
117548 #undef __HANDLE_ITEM
117549 }
117550 diff --git a/net/atm/lec.c b/net/atm/lec.c
117551 index cd3b379..977a3c9 100644
117552 --- a/net/atm/lec.c
117553 +++ b/net/atm/lec.c
117554 @@ -111,9 +111,9 @@ static inline void lec_arp_put(struct lec_arp_table *entry)
117555 }
117556
117557 static struct lane2_ops lane2_ops = {
117558 - lane2_resolve, /* resolve, spec 3.1.3 */
117559 - lane2_associate_req, /* associate_req, spec 3.1.4 */
117560 - NULL /* associate indicator, spec 3.1.5 */
117561 + .resolve = lane2_resolve,
117562 + .associate_req = lane2_associate_req,
117563 + .associate_indicator = NULL
117564 };
117565
117566 static unsigned char bus_mac[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
117567 diff --git a/net/atm/lec.h b/net/atm/lec.h
117568 index 4149db1..f2ab682 100644
117569 --- a/net/atm/lec.h
117570 +++ b/net/atm/lec.h
117571 @@ -48,7 +48,7 @@ struct lane2_ops {
117572 const u8 *tlvs, u32 sizeoftlvs);
117573 void (*associate_indicator) (struct net_device *dev, const u8 *mac_addr,
117574 const u8 *tlvs, u32 sizeoftlvs);
117575 -};
117576 +} __no_const;
117577
117578 /*
117579 * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType
117580 diff --git a/net/atm/mpoa_caches.c b/net/atm/mpoa_caches.c
117581 index d1b2d9a..d549f7f 100644
117582 --- a/net/atm/mpoa_caches.c
117583 +++ b/net/atm/mpoa_caches.c
117584 @@ -535,30 +535,30 @@ static void eg_destroy_cache(struct mpoa_client *mpc)
117585
117586
117587 static struct in_cache_ops ingress_ops = {
117588 - in_cache_add_entry, /* add_entry */
117589 - in_cache_get, /* get */
117590 - in_cache_get_with_mask, /* get_with_mask */
117591 - in_cache_get_by_vcc, /* get_by_vcc */
117592 - in_cache_put, /* put */
117593 - in_cache_remove_entry, /* remove_entry */
117594 - cache_hit, /* cache_hit */
117595 - clear_count_and_expired, /* clear_count */
117596 - check_resolving_entries, /* check_resolving */
117597 - refresh_entries, /* refresh */
117598 - in_destroy_cache /* destroy_cache */
117599 + .add_entry = in_cache_add_entry,
117600 + .get = in_cache_get,
117601 + .get_with_mask = in_cache_get_with_mask,
117602 + .get_by_vcc = in_cache_get_by_vcc,
117603 + .put = in_cache_put,
117604 + .remove_entry = in_cache_remove_entry,
117605 + .cache_hit = cache_hit,
117606 + .clear_count = clear_count_and_expired,
117607 + .check_resolving = check_resolving_entries,
117608 + .refresh = refresh_entries,
117609 + .destroy_cache = in_destroy_cache
117610 };
117611
117612 static struct eg_cache_ops egress_ops = {
117613 - eg_cache_add_entry, /* add_entry */
117614 - eg_cache_get_by_cache_id, /* get_by_cache_id */
117615 - eg_cache_get_by_tag, /* get_by_tag */
117616 - eg_cache_get_by_vcc, /* get_by_vcc */
117617 - eg_cache_get_by_src_ip, /* get_by_src_ip */
117618 - eg_cache_put, /* put */
117619 - eg_cache_remove_entry, /* remove_entry */
117620 - update_eg_cache_entry, /* update */
117621 - clear_expired, /* clear_expired */
117622 - eg_destroy_cache /* destroy_cache */
117623 + .add_entry = eg_cache_add_entry,
117624 + .get_by_cache_id = eg_cache_get_by_cache_id,
117625 + .get_by_tag = eg_cache_get_by_tag,
117626 + .get_by_vcc = eg_cache_get_by_vcc,
117627 + .get_by_src_ip = eg_cache_get_by_src_ip,
117628 + .put = eg_cache_put,
117629 + .remove_entry = eg_cache_remove_entry,
117630 + .update = update_eg_cache_entry,
117631 + .clear_expired = clear_expired,
117632 + .destroy_cache = eg_destroy_cache
117633 };
117634
117635
117636 diff --git a/net/atm/proc.c b/net/atm/proc.c
117637 index bbb6461..cf04016 100644
117638 --- a/net/atm/proc.c
117639 +++ b/net/atm/proc.c
117640 @@ -45,9 +45,9 @@ static void add_stats(struct seq_file *seq, const char *aal,
117641 const struct k_atm_aal_stats *stats)
117642 {
117643 seq_printf(seq, "%s ( %d %d %d %d %d )", aal,
117644 - atomic_read(&stats->tx), atomic_read(&stats->tx_err),
117645 - atomic_read(&stats->rx), atomic_read(&stats->rx_err),
117646 - atomic_read(&stats->rx_drop));
117647 + atomic_read_unchecked(&stats->tx),atomic_read_unchecked(&stats->tx_err),
117648 + atomic_read_unchecked(&stats->rx),atomic_read_unchecked(&stats->rx_err),
117649 + atomic_read_unchecked(&stats->rx_drop));
117650 }
117651
117652 static void atm_dev_info(struct seq_file *seq, const struct atm_dev *dev)
117653 diff --git a/net/atm/resources.c b/net/atm/resources.c
117654 index 0447d5d..3cf4728 100644
117655 --- a/net/atm/resources.c
117656 +++ b/net/atm/resources.c
117657 @@ -160,7 +160,7 @@ EXPORT_SYMBOL(atm_dev_deregister);
117658 static void copy_aal_stats(struct k_atm_aal_stats *from,
117659 struct atm_aal_stats *to)
117660 {
117661 -#define __HANDLE_ITEM(i) to->i = atomic_read(&from->i)
117662 +#define __HANDLE_ITEM(i) to->i = atomic_read_unchecked(&from->i)
117663 __AAL_STAT_ITEMS
117664 #undef __HANDLE_ITEM
117665 }
117666 @@ -168,7 +168,7 @@ static void copy_aal_stats(struct k_atm_aal_stats *from,
117667 static void subtract_aal_stats(struct k_atm_aal_stats *from,
117668 struct atm_aal_stats *to)
117669 {
117670 -#define __HANDLE_ITEM(i) atomic_sub(to->i, &from->i)
117671 +#define __HANDLE_ITEM(i) atomic_sub_unchecked(to->i, &from->i)
117672 __AAL_STAT_ITEMS
117673 #undef __HANDLE_ITEM
117674 }
117675 diff --git a/net/ax25/sysctl_net_ax25.c b/net/ax25/sysctl_net_ax25.c
117676 index 919a5ce..cc6b444 100644
117677 --- a/net/ax25/sysctl_net_ax25.c
117678 +++ b/net/ax25/sysctl_net_ax25.c
117679 @@ -152,7 +152,7 @@ int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
117680 {
117681 char path[sizeof("net/ax25/") + IFNAMSIZ];
117682 int k;
117683 - struct ctl_table *table;
117684 + ctl_table_no_const *table;
117685
117686 table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL);
117687 if (!table)
117688 diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
117689 index 753383c..32d12d9 100644
117690 --- a/net/batman-adv/bat_iv_ogm.c
117691 +++ b/net/batman-adv/bat_iv_ogm.c
117692 @@ -343,7 +343,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
117693
117694 /* randomize initial seqno to avoid collision */
117695 get_random_bytes(&random_seqno, sizeof(random_seqno));
117696 - atomic_set(&hard_iface->bat_iv.ogm_seqno, random_seqno);
117697 + atomic_set_unchecked(&hard_iface->bat_iv.ogm_seqno, random_seqno);
117698
117699 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN;
117700 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC);
117701 @@ -947,9 +947,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
117702 batadv_ogm_packet->tvlv_len = htons(tvlv_len);
117703
117704 /* change sequence number to network order */
117705 - seqno = (uint32_t)atomic_read(&hard_iface->bat_iv.ogm_seqno);
117706 + seqno = (uint32_t)atomic_read_unchecked(&hard_iface->bat_iv.ogm_seqno);
117707 batadv_ogm_packet->seqno = htonl(seqno);
117708 - atomic_inc(&hard_iface->bat_iv.ogm_seqno);
117709 + atomic_inc_unchecked(&hard_iface->bat_iv.ogm_seqno);
117710
117711 batadv_iv_ogm_slide_own_bcast_window(hard_iface);
117712
117713 @@ -1626,7 +1626,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
117714 return;
117715
117716 /* could be changed by schedule_own_packet() */
117717 - if_incoming_seqno = atomic_read(&if_incoming->bat_iv.ogm_seqno);
117718 + if_incoming_seqno = atomic_read_unchecked(&if_incoming->bat_iv.ogm_seqno);
117719
117720 if (ogm_packet->flags & BATADV_DIRECTLINK)
117721 has_directlink_flag = true;
117722 diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
117723 index c0f0d01..725928a 100644
117724 --- a/net/batman-adv/fragmentation.c
117725 +++ b/net/batman-adv/fragmentation.c
117726 @@ -465,7 +465,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
117727 frag_header.packet_type = BATADV_UNICAST_FRAG;
117728 frag_header.version = BATADV_COMPAT_VERSION;
117729 frag_header.ttl = BATADV_TTL;
117730 - frag_header.seqno = htons(atomic_inc_return(&bat_priv->frag_seqno));
117731 + frag_header.seqno = htons(atomic_inc_return_unchecked(&bat_priv->frag_seqno));
117732 frag_header.reserved = 0;
117733 frag_header.no = 0;
117734 frag_header.total_size = htons(skb->len);
117735 diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
117736 index a2fc843..0f8059e 100644
117737 --- a/net/batman-adv/soft-interface.c
117738 +++ b/net/batman-adv/soft-interface.c
117739 @@ -325,7 +325,7 @@ send:
117740 primary_if->net_dev->dev_addr);
117741
117742 /* set broadcast sequence number */
117743 - seqno = atomic_inc_return(&bat_priv->bcast_seqno);
117744 + seqno = atomic_inc_return_unchecked(&bat_priv->bcast_seqno);
117745 bcast_packet->seqno = htonl(seqno);
117746
117747 batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay);
117748 @@ -793,7 +793,7 @@ static int batadv_softif_init_late(struct net_device *dev)
117749 atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN);
117750
117751 atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE);
117752 - atomic_set(&bat_priv->bcast_seqno, 1);
117753 + atomic_set_unchecked(&bat_priv->bcast_seqno, 1);
117754 atomic_set(&bat_priv->tt.vn, 0);
117755 atomic_set(&bat_priv->tt.local_changes, 0);
117756 atomic_set(&bat_priv->tt.ogm_append_cnt, 0);
117757 @@ -807,7 +807,7 @@ static int batadv_softif_init_late(struct net_device *dev)
117758
117759 /* randomize initial seqno to avoid collision */
117760 get_random_bytes(&random_seqno, sizeof(random_seqno));
117761 - atomic_set(&bat_priv->frag_seqno, random_seqno);
117762 + atomic_set_unchecked(&bat_priv->frag_seqno, random_seqno);
117763
117764 bat_priv->primary_if = NULL;
117765 bat_priv->num_ifaces = 0;
117766 @@ -1015,7 +1015,7 @@ int batadv_softif_is_valid(const struct net_device *net_dev)
117767 return 0;
117768 }
117769
117770 -struct rtnl_link_ops batadv_link_ops __read_mostly = {
117771 +struct rtnl_link_ops batadv_link_ops = {
117772 .kind = "batadv",
117773 .priv_size = sizeof(struct batadv_priv),
117774 .setup = batadv_softif_init_early,
117775 diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
117776 index 67d6348..4358755 100644
117777 --- a/net/batman-adv/types.h
117778 +++ b/net/batman-adv/types.h
117779 @@ -81,7 +81,7 @@ enum batadv_dhcp_recipient {
117780 struct batadv_hard_iface_bat_iv {
117781 unsigned char *ogm_buff;
117782 int ogm_buff_len;
117783 - atomic_t ogm_seqno;
117784 + atomic_unchecked_t ogm_seqno;
117785 };
117786
117787 /**
117788 @@ -783,7 +783,7 @@ struct batadv_priv {
117789 atomic_t bonding;
117790 atomic_t fragmentation;
117791 atomic_t packet_size_max;
117792 - atomic_t frag_seqno;
117793 + atomic_unchecked_t frag_seqno;
117794 #ifdef CONFIG_BATMAN_ADV_BLA
117795 atomic_t bridge_loop_avoidance;
117796 #endif
117797 @@ -802,7 +802,7 @@ struct batadv_priv {
117798 #endif
117799 uint32_t isolation_mark;
117800 uint32_t isolation_mark_mask;
117801 - atomic_t bcast_seqno;
117802 + atomic_unchecked_t bcast_seqno;
117803 atomic_t bcast_queue_left;
117804 atomic_t batman_queue_left;
117805 char num_ifaces;
117806 diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
117807 index f2d30d1..0573933 100644
117808 --- a/net/bluetooth/hci_sock.c
117809 +++ b/net/bluetooth/hci_sock.c
117810 @@ -1253,7 +1253,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
117811 uf.event_mask[1] = *((u32 *) f->event_mask + 1);
117812 }
117813
117814 - len = min_t(unsigned int, len, sizeof(uf));
117815 + len = min((size_t)len, sizeof(uf));
117816 if (copy_from_user(&uf, optval, len)) {
117817 err = -EFAULT;
117818 break;
117819 diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
117820 index 45fffa4..c5ad848 100644
117821 --- a/net/bluetooth/l2cap_core.c
117822 +++ b/net/bluetooth/l2cap_core.c
117823 @@ -3537,8 +3537,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
117824 break;
117825
117826 case L2CAP_CONF_RFC:
117827 - if (olen == sizeof(rfc))
117828 - memcpy(&rfc, (void *)val, olen);
117829 + if (olen != sizeof(rfc))
117830 + break;
117831 +
117832 + memcpy(&rfc, (void *)val, olen);
117833
117834 if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
117835 rfc.mode != chan->mode)
117836 diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
117837 index 2442877..24ddcd1 100644
117838 --- a/net/bluetooth/l2cap_sock.c
117839 +++ b/net/bluetooth/l2cap_sock.c
117840 @@ -633,7 +633,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
117841 struct sock *sk = sock->sk;
117842 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
117843 struct l2cap_options opts;
117844 - int len, err = 0;
117845 + int err = 0;
117846 + size_t len = optlen;
117847 u32 opt;
117848
117849 BT_DBG("sk %p", sk);
117850 @@ -660,7 +661,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
117851 opts.max_tx = chan->max_tx;
117852 opts.txwin_size = chan->tx_win;
117853
117854 - len = min_t(unsigned int, sizeof(opts), optlen);
117855 + len = min(sizeof(opts), len);
117856 if (copy_from_user((char *) &opts, optval, len)) {
117857 err = -EFAULT;
117858 break;
117859 @@ -747,7 +748,8 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
117860 struct bt_security sec;
117861 struct bt_power pwr;
117862 struct l2cap_conn *conn;
117863 - int len, err = 0;
117864 + int err = 0;
117865 + size_t len = optlen;
117866 u32 opt;
117867
117868 BT_DBG("sk %p", sk);
117869 @@ -771,7 +773,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
117870
117871 sec.level = BT_SECURITY_LOW;
117872
117873 - len = min_t(unsigned int, sizeof(sec), optlen);
117874 + len = min(sizeof(sec), len);
117875 if (copy_from_user((char *) &sec, optval, len)) {
117876 err = -EFAULT;
117877 break;
117878 @@ -867,7 +869,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
117879
117880 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
117881
117882 - len = min_t(unsigned int, sizeof(pwr), optlen);
117883 + len = min(sizeof(pwr), len);
117884 if (copy_from_user((char *) &pwr, optval, len)) {
117885 err = -EFAULT;
117886 break;
117887 diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
117888 index 7511df7..a670df3 100644
117889 --- a/net/bluetooth/rfcomm/sock.c
117890 +++ b/net/bluetooth/rfcomm/sock.c
117891 @@ -690,7 +690,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c
117892 struct sock *sk = sock->sk;
117893 struct bt_security sec;
117894 int err = 0;
117895 - size_t len;
117896 + size_t len = optlen;
117897 u32 opt;
117898
117899 BT_DBG("sk %p", sk);
117900 @@ -712,7 +712,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c
117901
117902 sec.level = BT_SECURITY_LOW;
117903
117904 - len = min_t(unsigned int, sizeof(sec), optlen);
117905 + len = min(sizeof(sec), len);
117906 if (copy_from_user((char *) &sec, optval, len)) {
117907 err = -EFAULT;
117908 break;
117909 diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
117910 index 8e385a0..a5bdd8e 100644
117911 --- a/net/bluetooth/rfcomm/tty.c
117912 +++ b/net/bluetooth/rfcomm/tty.c
117913 @@ -752,7 +752,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
117914 BT_DBG("tty %p id %d", tty, tty->index);
117915
117916 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst,
117917 - dev->channel, dev->port.count);
117918 + dev->channel, atomic_read(&dev->port.count));
117919
117920 err = tty_port_open(&dev->port, tty, filp);
117921 if (err)
117922 @@ -775,7 +775,7 @@ static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
117923 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
117924
117925 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
117926 - dev->port.count);
117927 + atomic_read(&dev->port.count));
117928
117929 tty_port_close(&dev->port, tty, filp);
117930 }
117931 diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
117932 index 4d74a06..f37f9c2 100644
117933 --- a/net/bridge/br_netlink.c
117934 +++ b/net/bridge/br_netlink.c
117935 @@ -835,7 +835,7 @@ static struct rtnl_af_ops br_af_ops __read_mostly = {
117936 .get_link_af_size = br_get_link_af_size,
117937 };
117938
117939 -struct rtnl_link_ops br_link_ops __read_mostly = {
117940 +struct rtnl_link_ops br_link_ops = {
117941 .kind = "bridge",
117942 .priv_size = sizeof(struct net_bridge),
117943 .setup = br_dev_setup,
117944 diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
117945 index 18ca4b2..7e8d731 100644
117946 --- a/net/bridge/netfilter/ebtables.c
117947 +++ b/net/bridge/netfilter/ebtables.c
117948 @@ -1533,7 +1533,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
117949 tmp.valid_hooks = t->table->valid_hooks;
117950 }
117951 mutex_unlock(&ebt_mutex);
117952 - if (copy_to_user(user, &tmp, *len) != 0) {
117953 + if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0) {
117954 BUGPRINT("c2u Didn't work\n");
117955 ret = -EFAULT;
117956 break;
117957 @@ -2339,7 +2339,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
117958 goto out;
117959 tmp.valid_hooks = t->valid_hooks;
117960
117961 - if (copy_to_user(user, &tmp, *len) != 0) {
117962 + if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0) {
117963 ret = -EFAULT;
117964 break;
117965 }
117966 @@ -2350,7 +2350,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
117967 tmp.entries_size = t->table->entries_size;
117968 tmp.valid_hooks = t->table->valid_hooks;
117969
117970 - if (copy_to_user(user, &tmp, *len) != 0) {
117971 + if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0) {
117972 ret = -EFAULT;
117973 break;
117974 }
117975 diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
117976 index f5afda1..dcf770a 100644
117977 --- a/net/caif/cfctrl.c
117978 +++ b/net/caif/cfctrl.c
117979 @@ -10,6 +10,7 @@
117980 #include <linux/spinlock.h>
117981 #include <linux/slab.h>
117982 #include <linux/pkt_sched.h>
117983 +#include <linux/sched.h>
117984 #include <net/caif/caif_layer.h>
117985 #include <net/caif/cfpkt.h>
117986 #include <net/caif/cfctrl.h>
117987 @@ -43,8 +44,8 @@ struct cflayer *cfctrl_create(void)
117988 memset(&dev_info, 0, sizeof(dev_info));
117989 dev_info.id = 0xff;
117990 cfsrvl_init(&this->serv, 0, &dev_info, false);
117991 - atomic_set(&this->req_seq_no, 1);
117992 - atomic_set(&this->rsp_seq_no, 1);
117993 + atomic_set_unchecked(&this->req_seq_no, 1);
117994 + atomic_set_unchecked(&this->rsp_seq_no, 1);
117995 this->serv.layer.receive = cfctrl_recv;
117996 sprintf(this->serv.layer.name, "ctrl");
117997 this->serv.layer.ctrlcmd = cfctrl_ctrlcmd;
117998 @@ -130,8 +131,8 @@ static void cfctrl_insert_req(struct cfctrl *ctrl,
117999 struct cfctrl_request_info *req)
118000 {
118001 spin_lock_bh(&ctrl->info_list_lock);
118002 - atomic_inc(&ctrl->req_seq_no);
118003 - req->sequence_no = atomic_read(&ctrl->req_seq_no);
118004 + atomic_inc_unchecked(&ctrl->req_seq_no);
118005 + req->sequence_no = atomic_read_unchecked(&ctrl->req_seq_no);
118006 list_add_tail(&req->list, &ctrl->list);
118007 spin_unlock_bh(&ctrl->info_list_lock);
118008 }
118009 @@ -149,7 +150,7 @@ static struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl,
118010 if (p != first)
118011 pr_warn("Requests are not received in order\n");
118012
118013 - atomic_set(&ctrl->rsp_seq_no,
118014 + atomic_set_unchecked(&ctrl->rsp_seq_no,
118015 p->sequence_no);
118016 list_del(&p->list);
118017 goto out;
118018 diff --git a/net/caif/chnl_net.c b/net/caif/chnl_net.c
118019 index 67a4a36..8d28068 100644
118020 --- a/net/caif/chnl_net.c
118021 +++ b/net/caif/chnl_net.c
118022 @@ -515,7 +515,7 @@ static const struct nla_policy ipcaif_policy[IFLA_CAIF_MAX + 1] = {
118023 };
118024
118025
118026 -static struct rtnl_link_ops ipcaif_link_ops __read_mostly = {
118027 +static struct rtnl_link_ops ipcaif_link_ops = {
118028 .kind = "caif",
118029 .priv_size = sizeof(struct chnl_net),
118030 .setup = ipcaif_net_setup,
118031 diff --git a/net/can/af_can.c b/net/can/af_can.c
118032 index 166d436..2920816 100644
118033 --- a/net/can/af_can.c
118034 +++ b/net/can/af_can.c
118035 @@ -890,7 +890,7 @@ static const struct net_proto_family can_family_ops = {
118036 };
118037
118038 /* notifier block for netdevice event */
118039 -static struct notifier_block can_netdev_notifier __read_mostly = {
118040 +static struct notifier_block can_netdev_notifier = {
118041 .notifier_call = can_notifier,
118042 };
118043
118044 diff --git a/net/can/bcm.c b/net/can/bcm.c
118045 index a1ba687..aafaec5 100644
118046 --- a/net/can/bcm.c
118047 +++ b/net/can/bcm.c
118048 @@ -1620,7 +1620,7 @@ static int __init bcm_module_init(void)
118049 }
118050
118051 /* create /proc/net/can-bcm directory */
118052 - proc_dir = proc_mkdir("can-bcm", init_net.proc_net);
118053 + proc_dir = proc_mkdir_restrict("can-bcm", init_net.proc_net);
118054 return 0;
118055 }
118056
118057 diff --git a/net/can/gw.c b/net/can/gw.c
118058 index 4551687..4e82e9b 100644
118059 --- a/net/can/gw.c
118060 +++ b/net/can/gw.c
118061 @@ -80,7 +80,6 @@ MODULE_PARM_DESC(max_hops,
118062 "default: " __stringify(CGW_DEFAULT_HOPS) ")");
118063
118064 static HLIST_HEAD(cgw_list);
118065 -static struct notifier_block notifier;
118066
118067 static struct kmem_cache *cgw_cache __read_mostly;
118068
118069 @@ -992,6 +991,10 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh)
118070 return err;
118071 }
118072
118073 +static struct notifier_block notifier = {
118074 + .notifier_call = cgw_notifier
118075 +};
118076 +
118077 static __init int cgw_module_init(void)
118078 {
118079 /* sanitize given module parameter */
118080 @@ -1007,7 +1010,6 @@ static __init int cgw_module_init(void)
118081 return -ENOMEM;
118082
118083 /* set notifier */
118084 - notifier.notifier_call = cgw_notifier;
118085 register_netdevice_notifier(&notifier);
118086
118087 if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) {
118088 diff --git a/net/can/proc.c b/net/can/proc.c
118089 index 1a19b98..df2b4ec 100644
118090 --- a/net/can/proc.c
118091 +++ b/net/can/proc.c
118092 @@ -514,7 +514,7 @@ static void can_remove_proc_readentry(const char *name)
118093 void can_init_proc(void)
118094 {
118095 /* create /proc/net/can directory */
118096 - can_dir = proc_mkdir("can", init_net.proc_net);
118097 + can_dir = proc_mkdir_restrict("can", init_net.proc_net);
118098
118099 if (!can_dir) {
118100 printk(KERN_INFO "can: failed to create /proc/net/can . "
118101 diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
118102 index e3be1d2..254c555 100644
118103 --- a/net/ceph/messenger.c
118104 +++ b/net/ceph/messenger.c
118105 @@ -189,7 +189,7 @@ static void con_fault(struct ceph_connection *con);
118106 #define MAX_ADDR_STR_LEN 64 /* 54 is enough */
118107
118108 static char addr_str[ADDR_STR_COUNT][MAX_ADDR_STR_LEN];
118109 -static atomic_t addr_str_seq = ATOMIC_INIT(0);
118110 +static atomic_unchecked_t addr_str_seq = ATOMIC_INIT(0);
118111
118112 static struct page *zero_page; /* used in certain error cases */
118113
118114 @@ -200,7 +200,7 @@ const char *ceph_pr_addr(const struct sockaddr_storage *ss)
118115 struct sockaddr_in *in4 = (struct sockaddr_in *) ss;
118116 struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) ss;
118117
118118 - i = atomic_inc_return(&addr_str_seq) & ADDR_STR_COUNT_MASK;
118119 + i = atomic_inc_return_unchecked(&addr_str_seq) & ADDR_STR_COUNT_MASK;
118120 s = addr_str[i];
118121
118122 switch (ss->ss_family) {
118123 diff --git a/net/compat.c b/net/compat.c
118124 index 5cfd26a..7e43828 100644
118125 --- a/net/compat.c
118126 +++ b/net/compat.c
118127 @@ -98,20 +98,20 @@ int get_compat_msghdr(struct msghdr *kmsg,
118128
118129 #define CMSG_COMPAT_FIRSTHDR(msg) \
118130 (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ? \
118131 - (struct compat_cmsghdr __user *)((msg)->msg_control) : \
118132 + (struct compat_cmsghdr __force_user *)((msg)->msg_control) : \
118133 (struct compat_cmsghdr __user *)NULL)
118134
118135 #define CMSG_COMPAT_OK(ucmlen, ucmsg, mhdr) \
118136 ((ucmlen) >= sizeof(struct compat_cmsghdr) && \
118137 (ucmlen) <= (unsigned long) \
118138 ((mhdr)->msg_controllen - \
118139 - ((char *)(ucmsg) - (char *)(mhdr)->msg_control)))
118140 + ((char __force_kernel *)(ucmsg) - (char *)(mhdr)->msg_control)))
118141
118142 static inline struct compat_cmsghdr __user *cmsg_compat_nxthdr(struct msghdr *msg,
118143 struct compat_cmsghdr __user *cmsg, int cmsg_len)
118144 {
118145 char __user *ptr = (char __user *)cmsg + CMSG_COMPAT_ALIGN(cmsg_len);
118146 - if ((unsigned long)(ptr + 1 - (char __user *)msg->msg_control) >
118147 + if ((unsigned long)(ptr + 1 - (char __force_user *)msg->msg_control) >
118148 msg->msg_controllen)
118149 return NULL;
118150 return (struct compat_cmsghdr __user *)ptr;
118151 @@ -201,7 +201,7 @@ Efault:
118152
118153 int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *data)
118154 {
118155 - struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __user *) kmsg->msg_control;
118156 + struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __force_user *) kmsg->msg_control;
118157 struct compat_cmsghdr cmhdr;
118158 struct compat_timeval ctv;
118159 struct compat_timespec cts[3];
118160 @@ -257,7 +257,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
118161
118162 void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
118163 {
118164 - struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __user *) kmsg->msg_control;
118165 + struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __force_user *) kmsg->msg_control;
118166 int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int);
118167 int fdnum = scm->fp->count;
118168 struct file **fp = scm->fp->fp;
118169 @@ -345,7 +345,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
118170 return -EFAULT;
118171 old_fs = get_fs();
118172 set_fs(KERNEL_DS);
118173 - err = sock_setsockopt(sock, level, optname, (char *)&ktime, sizeof(ktime));
118174 + err = sock_setsockopt(sock, level, optname, (char __force_user *)&ktime, sizeof(ktime));
118175 set_fs(old_fs);
118176
118177 return err;
118178 @@ -406,7 +406,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
118179 len = sizeof(ktime);
118180 old_fs = get_fs();
118181 set_fs(KERNEL_DS);
118182 - err = sock_getsockopt(sock, level, optname, (char *) &ktime, &len);
118183 + err = sock_getsockopt(sock, level, optname, (char __force_user *) &ktime, (int __force_user *)&len);
118184 set_fs(old_fs);
118185
118186 if (!err) {
118187 @@ -549,7 +549,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
118188 case MCAST_JOIN_GROUP:
118189 case MCAST_LEAVE_GROUP:
118190 {
118191 - struct compat_group_req __user *gr32 = (void *)optval;
118192 + struct compat_group_req __user *gr32 = (void __user *)optval;
118193 struct group_req __user *kgr =
118194 compat_alloc_user_space(sizeof(struct group_req));
118195 u32 interface;
118196 @@ -570,7 +570,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
118197 case MCAST_BLOCK_SOURCE:
118198 case MCAST_UNBLOCK_SOURCE:
118199 {
118200 - struct compat_group_source_req __user *gsr32 = (void *)optval;
118201 + struct compat_group_source_req __user *gsr32 = (void __user *)optval;
118202 struct group_source_req __user *kgsr = compat_alloc_user_space(
118203 sizeof(struct group_source_req));
118204 u32 interface;
118205 @@ -591,7 +591,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
118206 }
118207 case MCAST_MSFILTER:
118208 {
118209 - struct compat_group_filter __user *gf32 = (void *)optval;
118210 + struct compat_group_filter __user *gf32 = (void __user *)optval;
118211 struct group_filter __user *kgf;
118212 u32 interface, fmode, numsrc;
118213
118214 @@ -629,7 +629,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
118215 char __user *optval, int __user *optlen,
118216 int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
118217 {
118218 - struct compat_group_filter __user *gf32 = (void *)optval;
118219 + struct compat_group_filter __user *gf32 = (void __user *)optval;
118220 struct group_filter __user *kgf;
118221 int __user *koptlen;
118222 u32 interface, fmode, numsrc;
118223 @@ -773,7 +773,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
118224
118225 if (call < SYS_SOCKET || call > SYS_SENDMMSG)
118226 return -EINVAL;
118227 - if (copy_from_user(a, args, nas[call]))
118228 + if (nas[call] > sizeof a || copy_from_user(a, args, nas[call]))
118229 return -EFAULT;
118230 a0 = a[0];
118231 a1 = a[1];
118232 diff --git a/net/core/datagram.c b/net/core/datagram.c
118233 index 617088a..0364f4f 100644
118234 --- a/net/core/datagram.c
118235 +++ b/net/core/datagram.c
118236 @@ -338,7 +338,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
118237 }
118238
118239 kfree_skb(skb);
118240 - atomic_inc(&sk->sk_drops);
118241 + atomic_inc_unchecked(&sk->sk_drops);
118242 sk_mem_reclaim_partial(sk);
118243
118244 return err;
118245 diff --git a/net/core/dev.c b/net/core/dev.c
118246 index a8e4dd4..aab06f7 100644
118247 --- a/net/core/dev.c
118248 +++ b/net/core/dev.c
118249 @@ -1721,7 +1721,7 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
118250 {
118251 if (skb_orphan_frags(skb, GFP_ATOMIC) ||
118252 unlikely(!is_skb_forwardable(dev, skb))) {
118253 - atomic_long_inc(&dev->rx_dropped);
118254 + atomic_long_inc_unchecked(&dev->rx_dropped);
118255 kfree_skb(skb);
118256 return NET_RX_DROP;
118257 }
118258 @@ -3125,7 +3125,7 @@ recursion_alert:
118259 drop:
118260 rcu_read_unlock_bh();
118261
118262 - atomic_long_inc(&dev->tx_dropped);
118263 + atomic_long_inc_unchecked(&dev->tx_dropped);
118264 kfree_skb_list(skb);
118265 return rc;
118266 out:
118267 @@ -3477,7 +3477,7 @@ drop:
118268
118269 local_irq_restore(flags);
118270
118271 - atomic_long_inc(&skb->dev->rx_dropped);
118272 + atomic_long_inc_unchecked(&skb->dev->rx_dropped);
118273 kfree_skb(skb);
118274 return NET_RX_DROP;
118275 }
118276 @@ -3554,7 +3554,7 @@ int netif_rx_ni(struct sk_buff *skb)
118277 }
118278 EXPORT_SYMBOL(netif_rx_ni);
118279
118280 -static void net_tx_action(struct softirq_action *h)
118281 +static __latent_entropy void net_tx_action(void)
118282 {
118283 struct softnet_data *sd = this_cpu_ptr(&softnet_data);
118284
118285 @@ -3892,7 +3892,7 @@ ncls:
118286 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
118287 } else {
118288 drop:
118289 - atomic_long_inc(&skb->dev->rx_dropped);
118290 + atomic_long_inc_unchecked(&skb->dev->rx_dropped);
118291 kfree_skb(skb);
118292 /* Jamal, now you will not able to escape explaining
118293 * me how you were going to use this. :-)
118294 @@ -4783,7 +4783,7 @@ out_unlock:
118295 return work;
118296 }
118297
118298 -static void net_rx_action(struct softirq_action *h)
118299 +static __latent_entropy void net_rx_action(void)
118300 {
118301 struct softnet_data *sd = this_cpu_ptr(&softnet_data);
118302 unsigned long time_limit = jiffies + 2;
118303 @@ -6843,8 +6843,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
118304 } else {
118305 netdev_stats_to_stats64(storage, &dev->stats);
118306 }
118307 - storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
118308 - storage->tx_dropped += atomic_long_read(&dev->tx_dropped);
118309 + storage->rx_dropped += atomic_long_read_unchecked(&dev->rx_dropped);
118310 + storage->tx_dropped += atomic_long_read_unchecked(&dev->tx_dropped);
118311 return storage;
118312 }
118313 EXPORT_SYMBOL(dev_get_stats);
118314 diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
118315 index b94b1d2..da3ed7c 100644
118316 --- a/net/core/dev_ioctl.c
118317 +++ b/net/core/dev_ioctl.c
118318 @@ -368,8 +368,13 @@ void dev_load(struct net *net, const char *name)
118319 no_module = !dev;
118320 if (no_module && capable(CAP_NET_ADMIN))
118321 no_module = request_module("netdev-%s", name);
118322 - if (no_module && capable(CAP_SYS_MODULE))
118323 + if (no_module && capable(CAP_SYS_MODULE)) {
118324 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
118325 + ___request_module(true, "grsec_modharden_netdev", "%s", name);
118326 +#else
118327 request_module("%s", name);
118328 +#endif
118329 + }
118330 }
118331 EXPORT_SYMBOL(dev_load);
118332
118333 diff --git a/net/core/filter.c b/net/core/filter.c
118334 index be3098f..51ee477 100644
118335 --- a/net/core/filter.c
118336 +++ b/net/core/filter.c
118337 @@ -582,7 +582,11 @@ do_pass:
118338
118339 /* Unknown instruction. */
118340 default:
118341 - goto err;
118342 + WARN(1, KERN_ALERT "Unknown sock filter code:%u jt:%u tf:%u k:%u\n",
118343 + fp->code, fp->jt, fp->jf, fp->k);
118344 + kfree(addrs);
118345 + BUG();
118346 + return -EINVAL;
118347 }
118348
118349 insn++;
118350 @@ -626,7 +630,7 @@ static int check_load_and_stores(const struct sock_filter *filter, int flen)
118351 u16 *masks, memvalid = 0; /* One bit per cell, 16 cells */
118352 int pc, ret = 0;
118353
118354 - BUILD_BUG_ON(BPF_MEMWORDS > 16);
118355 + BUILD_BUG_ON(BPF_MEMWORDS != 16);
118356
118357 masks = kmalloc_array(flen, sizeof(*masks), GFP_KERNEL);
118358 if (!masks)
118359 @@ -1055,7 +1059,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog)
118360 if (!fp)
118361 return -ENOMEM;
118362
118363 - memcpy(fp->insns, fprog->filter, fsize);
118364 + memcpy(fp->insns, (void __force_kernel *)fprog->filter, fsize);
118365
118366 fp->len = fprog->len;
118367 /* Since unattached filters are not copied back to user
118368 @@ -1701,9 +1705,13 @@ int sk_get_filter(struct sock *sk, struct sock_filter __user *ubuf,
118369 goto out;
118370
118371 /* We're copying the filter that has been originally attached,
118372 - * so no conversion/decode needed anymore.
118373 + * so no conversion/decode needed anymore. eBPF programs that
118374 + * have no original program cannot be dumped through this.
118375 */
118376 + ret = -EACCES;
118377 fprog = filter->prog->orig_prog;
118378 + if (!fprog)
118379 + goto out;
118380
118381 ret = fprog->len;
118382 if (!len)
118383 diff --git a/net/core/flow.c b/net/core/flow.c
118384 index 1033725..340f65d 100644
118385 --- a/net/core/flow.c
118386 +++ b/net/core/flow.c
118387 @@ -65,7 +65,7 @@ static void flow_cache_new_hashrnd(unsigned long arg)
118388 static int flow_entry_valid(struct flow_cache_entry *fle,
118389 struct netns_xfrm *xfrm)
118390 {
118391 - if (atomic_read(&xfrm->flow_cache_genid) != fle->genid)
118392 + if (atomic_read_unchecked(&xfrm->flow_cache_genid) != fle->genid)
118393 return 0;
118394 if (fle->object && !fle->object->ops->check(fle->object))
118395 return 0;
118396 @@ -242,7 +242,7 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
118397 hlist_add_head(&fle->u.hlist, &fcp->hash_table[hash]);
118398 fcp->hash_count++;
118399 }
118400 - } else if (likely(fle->genid == atomic_read(&net->xfrm.flow_cache_genid))) {
118401 + } else if (likely(fle->genid == atomic_read_unchecked(&net->xfrm.flow_cache_genid))) {
118402 flo = fle->object;
118403 if (!flo)
118404 goto ret_object;
118405 @@ -263,7 +263,7 @@ nocache:
118406 }
118407 flo = resolver(net, key, family, dir, flo, ctx);
118408 if (fle) {
118409 - fle->genid = atomic_read(&net->xfrm.flow_cache_genid);
118410 + fle->genid = atomic_read_unchecked(&net->xfrm.flow_cache_genid);
118411 if (!IS_ERR(flo))
118412 fle->object = flo;
118413 else
118414 diff --git a/net/core/neighbour.c b/net/core/neighbour.c
118415 index 84195da..035c7a7 100644
118416 --- a/net/core/neighbour.c
118417 +++ b/net/core/neighbour.c
118418 @@ -2821,7 +2821,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write,
118419 void __user *buffer, size_t *lenp, loff_t *ppos)
118420 {
118421 int size, ret;
118422 - struct ctl_table tmp = *ctl;
118423 + ctl_table_no_const tmp = *ctl;
118424
118425 tmp.extra1 = &zero;
118426 tmp.extra2 = &unres_qlen_max;
118427 @@ -2883,7 +2883,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write,
118428 void __user *buffer,
118429 size_t *lenp, loff_t *ppos)
118430 {
118431 - struct ctl_table tmp = *ctl;
118432 + ctl_table_no_const tmp = *ctl;
118433 int ret;
118434
118435 tmp.extra1 = &zero;
118436 diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
118437 index 2bf8329..2eb1423 100644
118438 --- a/net/core/net-procfs.c
118439 +++ b/net/core/net-procfs.c
118440 @@ -79,7 +79,13 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
118441 struct rtnl_link_stats64 temp;
118442 const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
118443
118444 - seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
118445 + if (gr_proc_is_restricted())
118446 + seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
118447 + "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
118448 + dev->name, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL,
118449 + 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL);
118450 + else
118451 + seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
118452 "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
118453 dev->name, stats->rx_bytes, stats->rx_packets,
118454 stats->rx_errors,
118455 @@ -166,7 +172,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v)
118456 return 0;
118457 }
118458
118459 -static const struct seq_operations dev_seq_ops = {
118460 +const struct seq_operations dev_seq_ops = {
118461 .start = dev_seq_start,
118462 .next = dev_seq_next,
118463 .stop = dev_seq_stop,
118464 @@ -196,7 +202,7 @@ static const struct seq_operations softnet_seq_ops = {
118465
118466 static int softnet_seq_open(struct inode *inode, struct file *file)
118467 {
118468 - return seq_open(file, &softnet_seq_ops);
118469 + return seq_open_restrict(file, &softnet_seq_ops);
118470 }
118471
118472 static const struct file_operations softnet_seq_fops = {
118473 @@ -283,8 +289,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
118474 else
118475 seq_printf(seq, "%04x", ntohs(pt->type));
118476
118477 +#ifdef CONFIG_GRKERNSEC_HIDESYM
118478 + seq_printf(seq, " %-8s %pf\n",
118479 + pt->dev ? pt->dev->name : "", NULL);
118480 +#else
118481 seq_printf(seq, " %-8s %pf\n",
118482 pt->dev ? pt->dev->name : "", pt->func);
118483 +#endif
118484 }
118485
118486 return 0;
118487 diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
118488 index 18b34d7..faecc1d 100644
118489 --- a/net/core/net-sysfs.c
118490 +++ b/net/core/net-sysfs.c
118491 @@ -288,7 +288,7 @@ static ssize_t carrier_changes_show(struct device *dev,
118492 {
118493 struct net_device *netdev = to_net_dev(dev);
118494 return sprintf(buf, fmt_dec,
118495 - atomic_read(&netdev->carrier_changes));
118496 + atomic_read_unchecked(&netdev->carrier_changes));
118497 }
118498 static DEVICE_ATTR_RO(carrier_changes);
118499
118500 diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
118501 index 2c2eb1b..a53be3e 100644
118502 --- a/net/core/net_namespace.c
118503 +++ b/net/core/net_namespace.c
118504 @@ -775,7 +775,7 @@ static int __register_pernet_operations(struct list_head *list,
118505 int error;
118506 LIST_HEAD(net_exit_list);
118507
118508 - list_add_tail(&ops->list, list);
118509 + pax_list_add_tail((struct list_head *)&ops->list, list);
118510 if (ops->init || (ops->id && ops->size)) {
118511 for_each_net(net) {
118512 error = ops_init(ops, net);
118513 @@ -788,7 +788,7 @@ static int __register_pernet_operations(struct list_head *list,
118514
118515 out_undo:
118516 /* If I have an error cleanup all namespaces I initialized */
118517 - list_del(&ops->list);
118518 + pax_list_del((struct list_head *)&ops->list);
118519 ops_exit_list(ops, &net_exit_list);
118520 ops_free_list(ops, &net_exit_list);
118521 return error;
118522 @@ -799,7 +799,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops)
118523 struct net *net;
118524 LIST_HEAD(net_exit_list);
118525
118526 - list_del(&ops->list);
118527 + pax_list_del((struct list_head *)&ops->list);
118528 for_each_net(net)
118529 list_add_tail(&net->exit_list, &net_exit_list);
118530 ops_exit_list(ops, &net_exit_list);
118531 @@ -933,7 +933,7 @@ int register_pernet_device(struct pernet_operations *ops)
118532 mutex_lock(&net_mutex);
118533 error = register_pernet_operations(&pernet_list, ops);
118534 if (!error && (first_device == &pernet_list))
118535 - first_device = &ops->list;
118536 + first_device = (struct list_head *)&ops->list;
118537 mutex_unlock(&net_mutex);
118538 return error;
118539 }
118540 diff --git a/net/core/netpoll.c b/net/core/netpoll.c
118541 index c126a87..10ad89d 100644
118542 --- a/net/core/netpoll.c
118543 +++ b/net/core/netpoll.c
118544 @@ -377,7 +377,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
118545 struct udphdr *udph;
118546 struct iphdr *iph;
118547 struct ethhdr *eth;
118548 - static atomic_t ip_ident;
118549 + static atomic_unchecked_t ip_ident;
118550 struct ipv6hdr *ip6h;
118551
118552 udp_len = len + sizeof(*udph);
118553 @@ -448,7 +448,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
118554 put_unaligned(0x45, (unsigned char *)iph);
118555 iph->tos = 0;
118556 put_unaligned(htons(ip_len), &(iph->tot_len));
118557 - iph->id = htons(atomic_inc_return(&ip_ident));
118558 + iph->id = htons(atomic_inc_return_unchecked(&ip_ident));
118559 iph->frag_off = 0;
118560 iph->ttl = 64;
118561 iph->protocol = IPPROTO_UDP;
118562 diff --git a/net/core/pktgen.c b/net/core/pktgen.c
118563 index 1cbd209..9553598 100644
118564 --- a/net/core/pktgen.c
118565 +++ b/net/core/pktgen.c
118566 @@ -3828,7 +3828,7 @@ static int __net_init pg_net_init(struct net *net)
118567 pn->net = net;
118568 INIT_LIST_HEAD(&pn->pktgen_threads);
118569 pn->pktgen_exiting = false;
118570 - pn->proc_dir = proc_mkdir(PG_PROC_DIR, pn->net->proc_net);
118571 + pn->proc_dir = proc_mkdir_restrict(PG_PROC_DIR, pn->net->proc_net);
118572 if (!pn->proc_dir) {
118573 pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR);
118574 return -ENODEV;
118575 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
118576 index 0861018..1fd388b 100644
118577 --- a/net/core/rtnetlink.c
118578 +++ b/net/core/rtnetlink.c
118579 @@ -61,7 +61,7 @@ struct rtnl_link {
118580 rtnl_doit_func doit;
118581 rtnl_dumpit_func dumpit;
118582 rtnl_calcit_func calcit;
118583 -};
118584 +} __no_const;
118585
118586 static DEFINE_MUTEX(rtnl_mutex);
118587
118588 @@ -307,10 +307,13 @@ int __rtnl_link_register(struct rtnl_link_ops *ops)
118589 * to use the ops for creating device. So do not
118590 * fill up dellink as well. That disables rtnl_dellink.
118591 */
118592 - if (ops->setup && !ops->dellink)
118593 - ops->dellink = unregister_netdevice_queue;
118594 + if (ops->setup && !ops->dellink) {
118595 + pax_open_kernel();
118596 + *(void **)&ops->dellink = unregister_netdevice_queue;
118597 + pax_close_kernel();
118598 + }
118599
118600 - list_add_tail(&ops->list, &link_ops);
118601 + pax_list_add_tail((struct list_head *)&ops->list, &link_ops);
118602 return 0;
118603 }
118604 EXPORT_SYMBOL_GPL(__rtnl_link_register);
118605 @@ -357,7 +360,7 @@ void __rtnl_link_unregister(struct rtnl_link_ops *ops)
118606 for_each_net(net) {
118607 __rtnl_kill_links(net, ops);
118608 }
118609 - list_del(&ops->list);
118610 + pax_list_del((struct list_head *)&ops->list);
118611 }
118612 EXPORT_SYMBOL_GPL(__rtnl_link_unregister);
118613
118614 @@ -1082,7 +1085,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
118615 (dev->ifalias &&
118616 nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) ||
118617 nla_put_u32(skb, IFLA_CARRIER_CHANGES,
118618 - atomic_read(&dev->carrier_changes)))
118619 + atomic_read_unchecked(&dev->carrier_changes)))
118620 goto nla_put_failure;
118621
118622 if (1) {
118623 diff --git a/net/core/scm.c b/net/core/scm.c
118624 index 3b6899b..cf36238 100644
118625 --- a/net/core/scm.c
118626 +++ b/net/core/scm.c
118627 @@ -209,7 +209,7 @@ EXPORT_SYMBOL(__scm_send);
118628 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
118629 {
118630 struct cmsghdr __user *cm
118631 - = (__force struct cmsghdr __user *)msg->msg_control;
118632 + = (struct cmsghdr __force_user *)msg->msg_control;
118633 struct cmsghdr cmhdr;
118634 int cmlen = CMSG_LEN(len);
118635 int err;
118636 @@ -232,7 +232,7 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
118637 err = -EFAULT;
118638 if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
118639 goto out;
118640 - if (copy_to_user(CMSG_DATA(cm), data, cmlen - sizeof(struct cmsghdr)))
118641 + if (copy_to_user((void __force_user *)CMSG_DATA((void __force_kernel *)cm), data, cmlen - sizeof(struct cmsghdr)))
118642 goto out;
118643 cmlen = CMSG_SPACE(len);
118644 if (msg->msg_controllen < cmlen)
118645 @@ -248,7 +248,7 @@ EXPORT_SYMBOL(put_cmsg);
118646 void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
118647 {
118648 struct cmsghdr __user *cm
118649 - = (__force struct cmsghdr __user*)msg->msg_control;
118650 + = (struct cmsghdr __force_user *)msg->msg_control;
118651
118652 int fdmax = 0;
118653 int fdnum = scm->fp->count;
118654 @@ -268,7 +268,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
118655 if (fdnum < fdmax)
118656 fdmax = fdnum;
118657
118658 - for (i=0, cmfptr=(__force int __user *)CMSG_DATA(cm); i<fdmax;
118659 + for (i=0, cmfptr=(int __force_user *)CMSG_DATA((void __force_kernel *)cm); i<fdmax;
118660 i++, cmfptr++)
118661 {
118662 struct socket *sock;
118663 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
118664 index 7b84330..e0f5a86 100644
118665 --- a/net/core/skbuff.c
118666 +++ b/net/core/skbuff.c
118667 @@ -2103,7 +2103,7 @@ EXPORT_SYMBOL(__skb_checksum);
118668 __wsum skb_checksum(const struct sk_buff *skb, int offset,
118669 int len, __wsum csum)
118670 {
118671 - const struct skb_checksum_ops ops = {
118672 + static const struct skb_checksum_ops ops = {
118673 .update = csum_partial_ext,
118674 .combine = csum_block_add_ext,
118675 };
118676 @@ -3317,12 +3317,14 @@ void __init skb_init(void)
118677 skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
118678 sizeof(struct sk_buff),
118679 0,
118680 - SLAB_HWCACHE_ALIGN|SLAB_PANIC,
118681 + SLAB_HWCACHE_ALIGN|SLAB_PANIC|
118682 + SLAB_NO_SANITIZE,
118683 NULL);
118684 skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache",
118685 sizeof(struct sk_buff_fclones),
118686 0,
118687 - SLAB_HWCACHE_ALIGN|SLAB_PANIC,
118688 + SLAB_HWCACHE_ALIGN|SLAB_PANIC|
118689 + SLAB_NO_SANITIZE,
118690 NULL);
118691 }
118692
118693 diff --git a/net/core/sock.c b/net/core/sock.c
118694 index 193901d..33094ab 100644
118695 --- a/net/core/sock.c
118696 +++ b/net/core/sock.c
118697 @@ -441,7 +441,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
118698 struct sk_buff_head *list = &sk->sk_receive_queue;
118699
118700 if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) {
118701 - atomic_inc(&sk->sk_drops);
118702 + atomic_inc_unchecked(&sk->sk_drops);
118703 trace_sock_rcvqueue_full(sk, skb);
118704 return -ENOMEM;
118705 }
118706 @@ -451,7 +451,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
118707 return err;
118708
118709 if (!sk_rmem_schedule(sk, skb, skb->truesize)) {
118710 - atomic_inc(&sk->sk_drops);
118711 + atomic_inc_unchecked(&sk->sk_drops);
118712 return -ENOBUFS;
118713 }
118714
118715 @@ -484,7 +484,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
118716 skb->dev = NULL;
118717
118718 if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) {
118719 - atomic_inc(&sk->sk_drops);
118720 + atomic_inc_unchecked(&sk->sk_drops);
118721 goto discard_and_relse;
118722 }
118723 if (nested)
118724 @@ -502,7 +502,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
118725 mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
118726 } else if (sk_add_backlog(sk, skb, sk->sk_rcvbuf)) {
118727 bh_unlock_sock(sk);
118728 - atomic_inc(&sk->sk_drops);
118729 + atomic_inc_unchecked(&sk->sk_drops);
118730 goto discard_and_relse;
118731 }
118732
118733 @@ -908,6 +908,7 @@ set_rcvbuf:
118734 }
118735 break;
118736
118737 +#ifndef GRKERNSEC_BPF_HARDEN
118738 case SO_ATTACH_BPF:
118739 ret = -EINVAL;
118740 if (optlen == sizeof(u32)) {
118741 @@ -920,7 +921,7 @@ set_rcvbuf:
118742 ret = sk_attach_bpf(ufd, sk);
118743 }
118744 break;
118745 -
118746 +#endif
118747 case SO_DETACH_FILTER:
118748 ret = sk_detach_filter(sk);
118749 break;
118750 @@ -1022,12 +1023,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
118751 struct timeval tm;
118752 } v;
118753
118754 - int lv = sizeof(int);
118755 - int len;
118756 + unsigned int lv = sizeof(int);
118757 + unsigned int len;
118758
118759 if (get_user(len, optlen))
118760 return -EFAULT;
118761 - if (len < 0)
118762 + if (len > INT_MAX)
118763 return -EINVAL;
118764
118765 memset(&v, 0, sizeof(v));
118766 @@ -1165,11 +1166,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
118767
118768 case SO_PEERNAME:
118769 {
118770 - char address[128];
118771 + char address[_K_SS_MAXSIZE];
118772
118773 if (sock->ops->getname(sock, (struct sockaddr *)address, &lv, 2))
118774 return -ENOTCONN;
118775 - if (lv < len)
118776 + if (lv < len || sizeof address < len)
118777 return -EINVAL;
118778 if (copy_to_user(optval, address, len))
118779 return -EFAULT;
118780 @@ -1257,7 +1258,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
118781
118782 if (len > lv)
118783 len = lv;
118784 - if (copy_to_user(optval, &v, len))
118785 + if (len > sizeof(v) || copy_to_user(optval, &v, len))
118786 return -EFAULT;
118787 lenout:
118788 if (put_user(len, optlen))
118789 @@ -1550,7 +1551,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)
118790 newsk->sk_err = 0;
118791 newsk->sk_priority = 0;
118792 newsk->sk_incoming_cpu = raw_smp_processor_id();
118793 - atomic64_set(&newsk->sk_cookie, 0);
118794 + atomic64_set_unchecked(&newsk->sk_cookie, 0);
118795 /*
118796 * Before updating sk_refcnt, we must commit prior changes to memory
118797 * (Documentation/RCU/rculist_nulls.txt for details)
118798 @@ -2359,7 +2360,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
118799 */
118800 smp_wmb();
118801 atomic_set(&sk->sk_refcnt, 1);
118802 - atomic_set(&sk->sk_drops, 0);
118803 + atomic_set_unchecked(&sk->sk_drops, 0);
118804 }
118805 EXPORT_SYMBOL(sock_init_data);
118806
118807 @@ -2487,6 +2488,7 @@ void sock_enable_timestamp(struct sock *sk, int flag)
118808 int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
118809 int level, int type)
118810 {
118811 + struct sock_extended_err ee;
118812 struct sock_exterr_skb *serr;
118813 struct sk_buff *skb;
118814 int copied, err;
118815 @@ -2508,7 +2510,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
118816 sock_recv_timestamp(msg, sk, skb);
118817
118818 serr = SKB_EXT_ERR(skb);
118819 - put_cmsg(msg, level, type, sizeof(serr->ee), &serr->ee);
118820 + ee = serr->ee;
118821 + put_cmsg(msg, level, type, sizeof ee, &ee);
118822
118823 msg->msg_flags |= MSG_ERRQUEUE;
118824 err = copied;
118825 diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
118826 index 817622f..2577b26 100644
118827 --- a/net/core/sock_diag.c
118828 +++ b/net/core/sock_diag.c
118829 @@ -12,7 +12,7 @@
118830 #include <linux/inet_diag.h>
118831 #include <linux/sock_diag.h>
118832
118833 -static const struct sock_diag_handler *sock_diag_handlers[AF_MAX];
118834 +static const struct sock_diag_handler *sock_diag_handlers[AF_MAX] __read_only;
118835 static int (*inet_rcv_compat)(struct sk_buff *skb, struct nlmsghdr *nlh);
118836 static DEFINE_MUTEX(sock_diag_table_mutex);
118837 static struct workqueue_struct *broadcast_wq;
118838 @@ -20,12 +20,12 @@ static struct workqueue_struct *broadcast_wq;
118839 static u64 sock_gen_cookie(struct sock *sk)
118840 {
118841 while (1) {
118842 - u64 res = atomic64_read(&sk->sk_cookie);
118843 + u64 res = atomic64_read_unchecked(&sk->sk_cookie);
118844
118845 if (res)
118846 return res;
118847 - res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
118848 - atomic64_cmpxchg(&sk->sk_cookie, 0, res);
118849 + res = atomic64_inc_return_unchecked(&sock_net(sk)->cookie_gen);
118850 + atomic64_cmpxchg_unchecked(&sk->sk_cookie, 0, res);
118851 }
118852 }
118853
118854 @@ -190,8 +190,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl)
118855 mutex_lock(&sock_diag_table_mutex);
118856 if (sock_diag_handlers[hndl->family])
118857 err = -EBUSY;
118858 - else
118859 + else {
118860 + pax_open_kernel();
118861 sock_diag_handlers[hndl->family] = hndl;
118862 + pax_close_kernel();
118863 + }
118864 mutex_unlock(&sock_diag_table_mutex);
118865
118866 return err;
118867 @@ -207,7 +210,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld)
118868
118869 mutex_lock(&sock_diag_table_mutex);
118870 BUG_ON(sock_diag_handlers[family] != hnld);
118871 + pax_open_kernel();
118872 sock_diag_handlers[family] = NULL;
118873 + pax_close_kernel();
118874 mutex_unlock(&sock_diag_table_mutex);
118875 }
118876 EXPORT_SYMBOL_GPL(sock_diag_unregister);
118877 diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
118878 index 95b6139..3048623 100644
118879 --- a/net/core/sysctl_net_core.c
118880 +++ b/net/core/sysctl_net_core.c
118881 @@ -35,7 +35,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write,
118882 {
118883 unsigned int orig_size, size;
118884 int ret, i;
118885 - struct ctl_table tmp = {
118886 + ctl_table_no_const tmp = {
118887 .data = &size,
118888 .maxlen = sizeof(size),
118889 .mode = table->mode
118890 @@ -203,7 +203,7 @@ static int set_default_qdisc(struct ctl_table *table, int write,
118891 void __user *buffer, size_t *lenp, loff_t *ppos)
118892 {
118893 char id[IFNAMSIZ];
118894 - struct ctl_table tbl = {
118895 + ctl_table_no_const tbl = {
118896 .data = id,
118897 .maxlen = IFNAMSIZ,
118898 };
118899 @@ -221,7 +221,7 @@ static int set_default_qdisc(struct ctl_table *table, int write,
118900 static int proc_do_rss_key(struct ctl_table *table, int write,
118901 void __user *buffer, size_t *lenp, loff_t *ppos)
118902 {
118903 - struct ctl_table fake_table;
118904 + ctl_table_no_const fake_table;
118905 char buf[NETDEV_RSS_KEY_LEN * 3];
118906
118907 snprintf(buf, sizeof(buf), "%*phC", NETDEV_RSS_KEY_LEN, netdev_rss_key);
118908 @@ -285,7 +285,7 @@ static struct ctl_table net_core_table[] = {
118909 .mode = 0444,
118910 .proc_handler = proc_do_rss_key,
118911 },
118912 -#ifdef CONFIG_BPF_JIT
118913 +#if defined(CONFIG_BPF_JIT) && !defined(CONFIG_GRKERNSEC_BPF_HARDEN)
118914 {
118915 .procname = "bpf_jit_enable",
118916 .data = &bpf_jit_enable,
118917 @@ -409,13 +409,12 @@ static struct ctl_table netns_core_table[] = {
118918
118919 static __net_init int sysctl_core_net_init(struct net *net)
118920 {
118921 - struct ctl_table *tbl;
118922 + ctl_table_no_const *tbl = NULL;
118923
118924 net->core.sysctl_somaxconn = SOMAXCONN;
118925
118926 - tbl = netns_core_table;
118927 if (!net_eq(net, &init_net)) {
118928 - tbl = kmemdup(tbl, sizeof(netns_core_table), GFP_KERNEL);
118929 + tbl = kmemdup(netns_core_table, sizeof(netns_core_table), GFP_KERNEL);
118930 if (tbl == NULL)
118931 goto err_dup;
118932
118933 @@ -425,17 +424,16 @@ static __net_init int sysctl_core_net_init(struct net *net)
118934 if (net->user_ns != &init_user_ns) {
118935 tbl[0].procname = NULL;
118936 }
118937 - }
118938 -
118939 - net->core.sysctl_hdr = register_net_sysctl(net, "net/core", tbl);
118940 + net->core.sysctl_hdr = register_net_sysctl(net, "net/core", tbl);
118941 + } else
118942 + net->core.sysctl_hdr = register_net_sysctl(net, "net/core", netns_core_table);
118943 if (net->core.sysctl_hdr == NULL)
118944 goto err_reg;
118945
118946 return 0;
118947
118948 err_reg:
118949 - if (tbl != netns_core_table)
118950 - kfree(tbl);
118951 + kfree(tbl);
118952 err_dup:
118953 return -ENOMEM;
118954 }
118955 @@ -450,7 +448,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net)
118956 kfree(tbl);
118957 }
118958
118959 -static __net_initdata struct pernet_operations sysctl_core_ops = {
118960 +static __net_initconst struct pernet_operations sysctl_core_ops = {
118961 .init = sysctl_core_net_init,
118962 .exit = sysctl_core_net_exit,
118963 };
118964 diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
118965 index 675cf94..9279a75 100644
118966 --- a/net/decnet/af_decnet.c
118967 +++ b/net/decnet/af_decnet.c
118968 @@ -466,6 +466,7 @@ static struct proto dn_proto = {
118969 .sysctl_rmem = sysctl_decnet_rmem,
118970 .max_header = DN_MAX_NSP_DATA_HEADER + 64,
118971 .obj_size = sizeof(struct dn_sock),
118972 + .slab_flags = SLAB_USERCOPY,
118973 };
118974
118975 static struct sock *dn_alloc_sock(struct net *net, struct socket *sock, gfp_t gfp, int kern)
118976 diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
118977 index b2c26b0..41f803e 100644
118978 --- a/net/decnet/dn_dev.c
118979 +++ b/net/decnet/dn_dev.c
118980 @@ -201,7 +201,7 @@ static struct dn_dev_sysctl_table {
118981 .extra1 = &min_t3,
118982 .extra2 = &max_t3
118983 },
118984 - {0}
118985 + { }
118986 },
118987 };
118988
118989 diff --git a/net/decnet/sysctl_net_decnet.c b/net/decnet/sysctl_net_decnet.c
118990 index 5325b54..a0d4d69 100644
118991 --- a/net/decnet/sysctl_net_decnet.c
118992 +++ b/net/decnet/sysctl_net_decnet.c
118993 @@ -174,7 +174,7 @@ static int dn_node_address_handler(struct ctl_table *table, int write,
118994
118995 if (len > *lenp) len = *lenp;
118996
118997 - if (copy_to_user(buffer, addr, len))
118998 + if (len > sizeof addr || copy_to_user(buffer, addr, len))
118999 return -EFAULT;
119000
119001 *lenp = len;
119002 @@ -237,7 +237,7 @@ static int dn_def_dev_handler(struct ctl_table *table, int write,
119003
119004 if (len > *lenp) len = *lenp;
119005
119006 - if (copy_to_user(buffer, devname, len))
119007 + if (len > sizeof devname || copy_to_user(buffer, devname, len))
119008 return -EFAULT;
119009
119010 *lenp = len;
119011 diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
119012 index b445d49..13e8538 100644
119013 --- a/net/dsa/dsa.c
119014 +++ b/net/dsa/dsa.c
119015 @@ -851,7 +851,7 @@ static struct packet_type dsa_pack_type __read_mostly = {
119016 .func = dsa_switch_rcv,
119017 };
119018
119019 -static struct notifier_block dsa_netdevice_nb __read_mostly = {
119020 +static struct notifier_block dsa_netdevice_nb = {
119021 .notifier_call = dsa_slave_netdevice_event,
119022 };
119023
119024 diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
119025 index a2c7e4c..3dc9f67 100644
119026 --- a/net/hsr/hsr_netlink.c
119027 +++ b/net/hsr/hsr_netlink.c
119028 @@ -102,7 +102,7 @@ nla_put_failure:
119029 return -EMSGSIZE;
119030 }
119031
119032 -static struct rtnl_link_ops hsr_link_ops __read_mostly = {
119033 +static struct rtnl_link_ops hsr_link_ops = {
119034 .kind = "hsr",
119035 .maxtype = IFLA_HSR_MAX,
119036 .policy = hsr_policy,
119037 diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
119038 index f20a387..2058892 100644
119039 --- a/net/ieee802154/6lowpan/core.c
119040 +++ b/net/ieee802154/6lowpan/core.c
119041 @@ -191,7 +191,7 @@ static void lowpan_dellink(struct net_device *dev, struct list_head *head)
119042 dev_put(real_dev);
119043 }
119044
119045 -static struct rtnl_link_ops lowpan_link_ops __read_mostly = {
119046 +static struct rtnl_link_ops lowpan_link_ops = {
119047 .kind = "lowpan",
119048 .priv_size = sizeof(struct lowpan_dev_info),
119049 .setup = lowpan_setup,
119050 diff --git a/net/ieee802154/6lowpan/reassembly.c b/net/ieee802154/6lowpan/reassembly.c
119051 index 214d44a..dcb7f86 100644
119052 --- a/net/ieee802154/6lowpan/reassembly.c
119053 +++ b/net/ieee802154/6lowpan/reassembly.c
119054 @@ -435,14 +435,13 @@ static struct ctl_table lowpan_frags_ctl_table[] = {
119055
119056 static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
119057 {
119058 - struct ctl_table *table;
119059 + ctl_table_no_const *table = NULL;
119060 struct ctl_table_header *hdr;
119061 struct netns_ieee802154_lowpan *ieee802154_lowpan =
119062 net_ieee802154_lowpan(net);
119063
119064 - table = lowpan_frags_ns_ctl_table;
119065 if (!net_eq(net, &init_net)) {
119066 - table = kmemdup(table, sizeof(lowpan_frags_ns_ctl_table),
119067 + table = kmemdup(lowpan_frags_ns_ctl_table, sizeof(lowpan_frags_ns_ctl_table),
119068 GFP_KERNEL);
119069 if (table == NULL)
119070 goto err_alloc;
119071 @@ -457,9 +456,9 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
119072 /* Don't export sysctls to unprivileged users */
119073 if (net->user_ns != &init_user_ns)
119074 table[0].procname = NULL;
119075 - }
119076 -
119077 - hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", table);
119078 + hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", table);
119079 + } else
119080 + hdr = register_net_sysctl(net, "net/ieee802154/6lowpan", lowpan_frags_ns_ctl_table);
119081 if (hdr == NULL)
119082 goto err_reg;
119083
119084 @@ -467,8 +466,7 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
119085 return 0;
119086
119087 err_reg:
119088 - if (!net_eq(net, &init_net))
119089 - kfree(table);
119090 + kfree(table);
119091 err_alloc:
119092 return -ENOMEM;
119093 }
119094 diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
119095 index 9532ee8..020410a 100644
119096 --- a/net/ipv4/af_inet.c
119097 +++ b/net/ipv4/af_inet.c
119098 @@ -1392,7 +1392,7 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
119099 return ip_recv_error(sk, msg, len, addr_len);
119100 #if IS_ENABLED(CONFIG_IPV6)
119101 if (sk->sk_family == AF_INET6)
119102 - return pingv6_ops.ipv6_recv_error(sk, msg, len, addr_len);
119103 + return pingv6_ops->ipv6_recv_error(sk, msg, len, addr_len);
119104 #endif
119105 return -EINVAL;
119106 }
119107 diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
119108 index 2d9cb17..20ae904 100644
119109 --- a/net/ipv4/devinet.c
119110 +++ b/net/ipv4/devinet.c
119111 @@ -69,7 +69,8 @@
119112
119113 static struct ipv4_devconf ipv4_devconf = {
119114 .data = {
119115 - [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
119116 + [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0,
119117 + [IPV4_DEVCONF_RP_FILTER - 1] = 1,
119118 [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
119119 [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
119120 [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
119121 @@ -80,7 +81,8 @@ static struct ipv4_devconf ipv4_devconf = {
119122
119123 static struct ipv4_devconf ipv4_devconf_dflt = {
119124 .data = {
119125 - [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
119126 + [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0,
119127 + [IPV4_DEVCONF_RP_FILTER - 1] = 1,
119128 [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
119129 [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
119130 [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
119131 @@ -1579,7 +1581,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
119132 idx = 0;
119133 head = &net->dev_index_head[h];
119134 rcu_read_lock();
119135 - cb->seq = atomic_read(&net->ipv4.dev_addr_genid) ^
119136 + cb->seq = atomic_read_unchecked(&net->ipv4.dev_addr_genid) ^
119137 net->dev_base_seq;
119138 hlist_for_each_entry_rcu(dev, head, index_hlist) {
119139 if (idx < s_idx)
119140 @@ -1905,7 +1907,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
119141 idx = 0;
119142 head = &net->dev_index_head[h];
119143 rcu_read_lock();
119144 - cb->seq = atomic_read(&net->ipv4.dev_addr_genid) ^
119145 + cb->seq = atomic_read_unchecked(&net->ipv4.dev_addr_genid) ^
119146 net->dev_base_seq;
119147 hlist_for_each_entry_rcu(dev, head, index_hlist) {
119148 if (idx < s_idx)
119149 @@ -2146,7 +2148,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
119150 #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
119151 DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
119152
119153 -static struct devinet_sysctl_table {
119154 +static const struct devinet_sysctl_table {
119155 struct ctl_table_header *sysctl_header;
119156 struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX];
119157 } devinet_sysctl = {
119158 @@ -2280,7 +2282,7 @@ static __net_init int devinet_init_net(struct net *net)
119159 int err;
119160 struct ipv4_devconf *all, *dflt;
119161 #ifdef CONFIG_SYSCTL
119162 - struct ctl_table *tbl = ctl_forward_entry;
119163 + ctl_table_no_const *tbl = NULL;
119164 struct ctl_table_header *forw_hdr;
119165 #endif
119166
119167 @@ -2298,7 +2300,7 @@ static __net_init int devinet_init_net(struct net *net)
119168 goto err_alloc_dflt;
119169
119170 #ifdef CONFIG_SYSCTL
119171 - tbl = kmemdup(tbl, sizeof(ctl_forward_entry), GFP_KERNEL);
119172 + tbl = kmemdup(ctl_forward_entry, sizeof(ctl_forward_entry), GFP_KERNEL);
119173 if (!tbl)
119174 goto err_alloc_ctl;
119175
119176 @@ -2318,7 +2320,10 @@ static __net_init int devinet_init_net(struct net *net)
119177 goto err_reg_dflt;
119178
119179 err = -ENOMEM;
119180 - forw_hdr = register_net_sysctl(net, "net/ipv4", tbl);
119181 + if (!net_eq(net, &init_net))
119182 + forw_hdr = register_net_sysctl(net, "net/ipv4", tbl);
119183 + else
119184 + forw_hdr = register_net_sysctl(net, "net/ipv4", ctl_forward_entry);
119185 if (!forw_hdr)
119186 goto err_reg_ctl;
119187 net->ipv4.forw_hdr = forw_hdr;
119188 @@ -2334,8 +2339,7 @@ err_reg_ctl:
119189 err_reg_dflt:
119190 __devinet_sysctl_unregister(all);
119191 err_reg_all:
119192 - if (tbl != ctl_forward_entry)
119193 - kfree(tbl);
119194 + kfree(tbl);
119195 err_alloc_ctl:
119196 #endif
119197 if (dflt != &ipv4_devconf_dflt)
119198 diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
119199 index 6bbc549..28d74951 100644
119200 --- a/net/ipv4/fib_frontend.c
119201 +++ b/net/ipv4/fib_frontend.c
119202 @@ -1083,12 +1083,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
119203 #ifdef CONFIG_IP_ROUTE_MULTIPATH
119204 fib_sync_up(dev, RTNH_F_DEAD);
119205 #endif
119206 - atomic_inc(&net->ipv4.dev_addr_genid);
119207 + atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
119208 rt_cache_flush(dev_net(dev));
119209 break;
119210 case NETDEV_DOWN:
119211 fib_del_ifaddr(ifa, NULL);
119212 - atomic_inc(&net->ipv4.dev_addr_genid);
119213 + atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
119214 if (!ifa->ifa_dev->ifa_list) {
119215 /* Last address was deleted from this interface.
119216 * Disable IP.
119217 @@ -1127,7 +1127,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
119218 #ifdef CONFIG_IP_ROUTE_MULTIPATH
119219 fib_sync_up(dev, RTNH_F_DEAD);
119220 #endif
119221 - atomic_inc(&net->ipv4.dev_addr_genid);
119222 + atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
119223 rt_cache_flush(net);
119224 break;
119225 case NETDEV_DOWN:
119226 diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
119227 index 3a06586..1020c5b 100644
119228 --- a/net/ipv4/fib_semantics.c
119229 +++ b/net/ipv4/fib_semantics.c
119230 @@ -755,7 +755,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh)
119231 nh->nh_saddr = inet_select_addr(nh->nh_dev,
119232 nh->nh_gw,
119233 nh->nh_parent->fib_scope);
119234 - nh->nh_saddr_genid = atomic_read(&net->ipv4.dev_addr_genid);
119235 + nh->nh_saddr_genid = atomic_read_unchecked(&net->ipv4.dev_addr_genid);
119236
119237 return nh->nh_saddr;
119238 }
119239 diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
119240 index 1349571..e136d6e 100644
119241 --- a/net/ipv4/inet_connection_sock.c
119242 +++ b/net/ipv4/inet_connection_sock.c
119243 @@ -728,8 +728,8 @@ struct sock *inet_csk_clone_lock(const struct sock *sk,
119244 newsk->sk_write_space = sk_stream_write_space;
119245
119246 newsk->sk_mark = inet_rsk(req)->ir_mark;
119247 - atomic64_set(&newsk->sk_cookie,
119248 - atomic64_read(&inet_rsk(req)->ir_cookie));
119249 + atomic64_set_unchecked(&newsk->sk_cookie,
119250 + atomic64_read_unchecked(&inet_rsk(req)->ir_cookie));
119251
119252 newicsk->icsk_retransmits = 0;
119253 newicsk->icsk_backoff = 0;
119254 diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
119255 index 0cb9165..8589720 100644
119256 --- a/net/ipv4/inet_hashtables.c
119257 +++ b/net/ipv4/inet_hashtables.c
119258 @@ -19,6 +19,7 @@
119259 #include <linux/slab.h>
119260 #include <linux/wait.h>
119261 #include <linux/vmalloc.h>
119262 +#include <linux/security.h>
119263
119264 #include <net/inet_connection_sock.h>
119265 #include <net/inet_hashtables.h>
119266 @@ -54,6 +55,8 @@ u32 sk_ehashfn(const struct sock *sk)
119267 sk->sk_daddr, sk->sk_dport);
119268 }
119269
119270 +extern void gr_update_task_in_ip_table(const struct inet_sock *inet);
119271 +
119272 /*
119273 * Allocate and initialize a new local port bind bucket.
119274 * The bindhash mutex for snum's hash chain must be held here.
119275 @@ -566,6 +569,8 @@ ok:
119276 twrefcnt += inet_twsk_bind_unhash(tw, hinfo);
119277 spin_unlock(&head->lock);
119278
119279 + gr_update_task_in_ip_table(inet_sk(sk));
119280 +
119281 if (tw) {
119282 inet_twsk_deschedule(tw);
119283 while (twrefcnt) {
119284 diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c
119285 index 2ffbd16..6e94995 100644
119286 --- a/net/ipv4/inet_timewait_sock.c
119287 +++ b/net/ipv4/inet_timewait_sock.c
119288 @@ -214,7 +214,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk,
119289 tw->tw_ipv6only = 0;
119290 tw->tw_transparent = inet->transparent;
119291 tw->tw_prot = sk->sk_prot_creator;
119292 - atomic64_set(&tw->tw_cookie, atomic64_read(&sk->sk_cookie));
119293 + atomic64_set_unchecked(&tw->tw_cookie, atomic64_read_unchecked(&sk->sk_cookie));
119294 twsk_net_set(tw, sock_net(sk));
119295 setup_timer(&tw->tw_timer, tw_timer_handler, (unsigned long)tw);
119296 /*
119297 diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
119298 index 241afd7..31b95d5 100644
119299 --- a/net/ipv4/inetpeer.c
119300 +++ b/net/ipv4/inetpeer.c
119301 @@ -461,7 +461,7 @@ relookup:
119302 if (p) {
119303 p->daddr = *daddr;
119304 atomic_set(&p->refcnt, 1);
119305 - atomic_set(&p->rid, 0);
119306 + atomic_set_unchecked(&p->rid, 0);
119307 p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW;
119308 p->rate_tokens = 0;
119309 /* 60*HZ is arbitrary, but chosen enough high so that the first
119310 diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
119311 index 921138f..1e011ff 100644
119312 --- a/net/ipv4/ip_fragment.c
119313 +++ b/net/ipv4/ip_fragment.c
119314 @@ -276,7 +276,7 @@ static int ip_frag_too_far(struct ipq *qp)
119315 return 0;
119316
119317 start = qp->rid;
119318 - end = atomic_inc_return(&peer->rid);
119319 + end = atomic_inc_return_unchecked(&peer->rid);
119320 qp->rid = end;
119321
119322 rc = qp->q.fragments && (end - start) > max;
119323 @@ -780,12 +780,11 @@ static struct ctl_table ip4_frags_ctl_table[] = {
119324
119325 static int __net_init ip4_frags_ns_ctl_register(struct net *net)
119326 {
119327 - struct ctl_table *table;
119328 + ctl_table_no_const *table = NULL;
119329 struct ctl_table_header *hdr;
119330
119331 - table = ip4_frags_ns_ctl_table;
119332 if (!net_eq(net, &init_net)) {
119333 - table = kmemdup(table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL);
119334 + table = kmemdup(ip4_frags_ns_ctl_table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL);
119335 if (!table)
119336 goto err_alloc;
119337
119338 @@ -799,9 +798,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
119339 /* Don't export sysctls to unprivileged users */
119340 if (net->user_ns != &init_user_ns)
119341 table[0].procname = NULL;
119342 - }
119343 + hdr = register_net_sysctl(net, "net/ipv4", table);
119344 + } else
119345 + hdr = register_net_sysctl(net, "net/ipv4", ip4_frags_ns_ctl_table);
119346
119347 - hdr = register_net_sysctl(net, "net/ipv4", table);
119348 if (!hdr)
119349 goto err_reg;
119350
119351 @@ -809,8 +809,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
119352 return 0;
119353
119354 err_reg:
119355 - if (!net_eq(net, &init_net))
119356 - kfree(table);
119357 + kfree(table);
119358 err_alloc:
119359 return -ENOMEM;
119360 }
119361 diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
119362 index 5fd7064..d13d75f 100644
119363 --- a/net/ipv4/ip_gre.c
119364 +++ b/net/ipv4/ip_gre.c
119365 @@ -115,7 +115,7 @@ static bool log_ecn_error = true;
119366 module_param(log_ecn_error, bool, 0644);
119367 MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
119368
119369 -static struct rtnl_link_ops ipgre_link_ops __read_mostly;
119370 +static struct rtnl_link_ops ipgre_link_ops;
119371 static int ipgre_tunnel_init(struct net_device *dev);
119372
119373 static int ipgre_net_id __read_mostly;
119374 @@ -819,7 +819,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
119375 [IFLA_GRE_ENCAP_DPORT] = { .type = NLA_U16 },
119376 };
119377
119378 -static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
119379 +static struct rtnl_link_ops ipgre_link_ops = {
119380 .kind = "gre",
119381 .maxtype = IFLA_GRE_MAX,
119382 .policy = ipgre_policy,
119383 @@ -834,7 +834,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
119384 .get_link_net = ip_tunnel_get_link_net,
119385 };
119386
119387 -static struct rtnl_link_ops ipgre_tap_ops __read_mostly = {
119388 +static struct rtnl_link_ops ipgre_tap_ops = {
119389 .kind = "gretap",
119390 .maxtype = IFLA_GRE_MAX,
119391 .policy = ipgre_policy,
119392 diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
119393 index 2db4c87..4db9282 100644
119394 --- a/net/ipv4/ip_input.c
119395 +++ b/net/ipv4/ip_input.c
119396 @@ -147,6 +147,10 @@
119397 #include <linux/mroute.h>
119398 #include <linux/netlink.h>
119399
119400 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
119401 +extern int grsec_enable_blackhole;
119402 +#endif
119403 +
119404 /*
119405 * Process Router Attention IP option (RFC 2113)
119406 */
119407 @@ -223,6 +227,9 @@ static int ip_local_deliver_finish(struct sock *sk, struct sk_buff *skb)
119408 if (!raw) {
119409 if (xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) {
119410 IP_INC_STATS_BH(net, IPSTATS_MIB_INUNKNOWNPROTOS);
119411 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
119412 + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK))
119413 +#endif
119414 icmp_send(skb, ICMP_DEST_UNREACH,
119415 ICMP_PROT_UNREACH, 0);
119416 }
119417 diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
119418 index c3c359a..504edc6 100644
119419 --- a/net/ipv4/ip_sockglue.c
119420 +++ b/net/ipv4/ip_sockglue.c
119421 @@ -1295,7 +1295,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
119422 len = min_t(unsigned int, len, opt->optlen);
119423 if (put_user(len, optlen))
119424 return -EFAULT;
119425 - if (copy_to_user(optval, opt->__data, len))
119426 + if ((len > (sizeof(optbuf) - sizeof(struct ip_options))) ||
119427 + copy_to_user(optval, opt->__data, len))
119428 return -EFAULT;
119429 return 0;
119430 }
119431 @@ -1432,7 +1433,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
119432 if (sk->sk_type != SOCK_STREAM)
119433 return -ENOPROTOOPT;
119434
119435 - msg.msg_control = (__force void *) optval;
119436 + msg.msg_control = (__force_kernel void *) optval;
119437 msg.msg_controllen = len;
119438 msg.msg_flags = flags;
119439
119440 diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
119441 index 0c15208..a3a76c5 100644
119442 --- a/net/ipv4/ip_vti.c
119443 +++ b/net/ipv4/ip_vti.c
119444 @@ -45,7 +45,7 @@
119445 #include <net/net_namespace.h>
119446 #include <net/netns/generic.h>
119447
119448 -static struct rtnl_link_ops vti_link_ops __read_mostly;
119449 +static struct rtnl_link_ops vti_link_ops;
119450
119451 static int vti_net_id __read_mostly;
119452 static int vti_tunnel_init(struct net_device *dev);
119453 @@ -525,7 +525,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
119454 [IFLA_VTI_REMOTE] = { .len = FIELD_SIZEOF(struct iphdr, daddr) },
119455 };
119456
119457 -static struct rtnl_link_ops vti_link_ops __read_mostly = {
119458 +static struct rtnl_link_ops vti_link_ops = {
119459 .kind = "vti",
119460 .maxtype = IFLA_VTI_MAX,
119461 .policy = vti_policy,
119462 diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
119463 index 8e7328c..9bd7ed3 100644
119464 --- a/net/ipv4/ipconfig.c
119465 +++ b/net/ipv4/ipconfig.c
119466 @@ -333,7 +333,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
119467
119468 mm_segment_t oldfs = get_fs();
119469 set_fs(get_ds());
119470 - res = devinet_ioctl(&init_net, cmd, (struct ifreq __user *) arg);
119471 + res = devinet_ioctl(&init_net, cmd, (struct ifreq __force_user *) arg);
119472 set_fs(oldfs);
119473 return res;
119474 }
119475 @@ -344,7 +344,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
119476
119477 mm_segment_t oldfs = get_fs();
119478 set_fs(get_ds());
119479 - res = dev_ioctl(&init_net, cmd, (struct ifreq __user *) arg);
119480 + res = dev_ioctl(&init_net, cmd, (struct ifreq __force_user *) arg);
119481 set_fs(oldfs);
119482 return res;
119483 }
119484 @@ -355,7 +355,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
119485
119486 mm_segment_t oldfs = get_fs();
119487 set_fs(get_ds());
119488 - res = ip_rt_ioctl(&init_net, cmd, (void __user *) arg);
119489 + res = ip_rt_ioctl(&init_net, cmd, (void __force_user *) arg);
119490 set_fs(oldfs);
119491 return res;
119492 }
119493 diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
119494 index 254238d..82c19a2 100644
119495 --- a/net/ipv4/ipip.c
119496 +++ b/net/ipv4/ipip.c
119497 @@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
119498 static int ipip_net_id __read_mostly;
119499
119500 static int ipip_tunnel_init(struct net_device *dev);
119501 -static struct rtnl_link_ops ipip_link_ops __read_mostly;
119502 +static struct rtnl_link_ops ipip_link_ops;
119503
119504 static int ipip_err(struct sk_buff *skb, u32 info)
119505 {
119506 @@ -488,7 +488,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = {
119507 [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
119508 };
119509
119510 -static struct rtnl_link_ops ipip_link_ops __read_mostly = {
119511 +static struct rtnl_link_ops ipip_link_ops = {
119512 .kind = "ipip",
119513 .maxtype = IFLA_IPTUN_MAX,
119514 .policy = ipip_policy,
119515 diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
119516 index 92305a1..0a5b349 100644
119517 --- a/net/ipv4/netfilter/arp_tables.c
119518 +++ b/net/ipv4/netfilter/arp_tables.c
119519 @@ -896,14 +896,14 @@ static int compat_table_info(const struct xt_table_info *info,
119520 #endif
119521
119522 static int get_info(struct net *net, void __user *user,
119523 - const int *len, int compat)
119524 + int len, int compat)
119525 {
119526 char name[XT_TABLE_MAXNAMELEN];
119527 struct xt_table *t;
119528 int ret;
119529
119530 - if (*len != sizeof(struct arpt_getinfo)) {
119531 - duprintf("length %u != %Zu\n", *len,
119532 + if (len != sizeof(struct arpt_getinfo)) {
119533 + duprintf("length %u != %Zu\n", len,
119534 sizeof(struct arpt_getinfo));
119535 return -EINVAL;
119536 }
119537 @@ -940,7 +940,7 @@ static int get_info(struct net *net, void __user *user,
119538 info.size = private->size;
119539 strcpy(info.name, name);
119540
119541 - if (copy_to_user(user, &info, *len) != 0)
119542 + if (copy_to_user(user, &info, len) != 0)
119543 ret = -EFAULT;
119544 else
119545 ret = 0;
119546 @@ -1705,7 +1705,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user,
119547
119548 switch (cmd) {
119549 case ARPT_SO_GET_INFO:
119550 - ret = get_info(sock_net(sk), user, len, 1);
119551 + ret = get_info(sock_net(sk), user, *len, 1);
119552 break;
119553 case ARPT_SO_GET_ENTRIES:
119554 ret = compat_get_entries(sock_net(sk), user, len);
119555 @@ -1750,7 +1750,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len
119556
119557 switch (cmd) {
119558 case ARPT_SO_GET_INFO:
119559 - ret = get_info(sock_net(sk), user, len, 0);
119560 + ret = get_info(sock_net(sk), user, *len, 0);
119561 break;
119562
119563 case ARPT_SO_GET_ENTRIES:
119564 diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
119565 index 6c72fbb..ce47b05 100644
119566 --- a/net/ipv4/netfilter/ip_tables.c
119567 +++ b/net/ipv4/netfilter/ip_tables.c
119568 @@ -1073,14 +1073,14 @@ static int compat_table_info(const struct xt_table_info *info,
119569 #endif
119570
119571 static int get_info(struct net *net, void __user *user,
119572 - const int *len, int compat)
119573 + int len, int compat)
119574 {
119575 char name[XT_TABLE_MAXNAMELEN];
119576 struct xt_table *t;
119577 int ret;
119578
119579 - if (*len != sizeof(struct ipt_getinfo)) {
119580 - duprintf("length %u != %zu\n", *len,
119581 + if (len != sizeof(struct ipt_getinfo)) {
119582 + duprintf("length %u != %zu\n", len,
119583 sizeof(struct ipt_getinfo));
119584 return -EINVAL;
119585 }
119586 @@ -1117,7 +1117,7 @@ static int get_info(struct net *net, void __user *user,
119587 info.size = private->size;
119588 strcpy(info.name, name);
119589
119590 - if (copy_to_user(user, &info, *len) != 0)
119591 + if (copy_to_user(user, &info, len) != 0)
119592 ret = -EFAULT;
119593 else
119594 ret = 0;
119595 @@ -1968,7 +1968,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
119596
119597 switch (cmd) {
119598 case IPT_SO_GET_INFO:
119599 - ret = get_info(sock_net(sk), user, len, 1);
119600 + ret = get_info(sock_net(sk), user, *len, 1);
119601 break;
119602 case IPT_SO_GET_ENTRIES:
119603 ret = compat_get_entries(sock_net(sk), user, len);
119604 @@ -2015,7 +2015,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
119605
119606 switch (cmd) {
119607 case IPT_SO_GET_INFO:
119608 - ret = get_info(sock_net(sk), user, len, 0);
119609 + ret = get_info(sock_net(sk), user, *len, 0);
119610 break;
119611
119612 case IPT_SO_GET_ENTRIES:
119613 diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
119614 index 45cb16a..cef4ecd 100644
119615 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
119616 +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
119617 @@ -730,7 +730,7 @@ static int clusterip_net_init(struct net *net)
119618 spin_lock_init(&cn->lock);
119619
119620 #ifdef CONFIG_PROC_FS
119621 - cn->procdir = proc_mkdir("ipt_CLUSTERIP", net->proc_net);
119622 + cn->procdir = proc_mkdir_restrict("ipt_CLUSTERIP", net->proc_net);
119623 if (!cn->procdir) {
119624 pr_err("Unable to proc dir entry\n");
119625 return -ENOMEM;
119626 diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
119627 index 05ff44b..da00000 100644
119628 --- a/net/ipv4/ping.c
119629 +++ b/net/ipv4/ping.c
119630 @@ -59,7 +59,7 @@ struct ping_table {
119631 };
119632
119633 static struct ping_table ping_table;
119634 -struct pingv6_ops pingv6_ops;
119635 +struct pingv6_ops *pingv6_ops;
119636 EXPORT_SYMBOL_GPL(pingv6_ops);
119637
119638 static u16 ping_port_rover;
119639 @@ -359,7 +359,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
119640 return -ENODEV;
119641 }
119642 }
119643 - has_addr = pingv6_ops.ipv6_chk_addr(net, &addr->sin6_addr, dev,
119644 + has_addr = pingv6_ops->ipv6_chk_addr(net, &addr->sin6_addr, dev,
119645 scoped);
119646 rcu_read_unlock();
119647
119648 @@ -567,7 +567,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
119649 }
119650 #if IS_ENABLED(CONFIG_IPV6)
119651 } else if (skb->protocol == htons(ETH_P_IPV6)) {
119652 - harderr = pingv6_ops.icmpv6_err_convert(type, code, &err);
119653 + harderr = pingv6_ops->icmpv6_err_convert(type, code, &err);
119654 #endif
119655 }
119656
119657 @@ -585,7 +585,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
119658 info, (u8 *)icmph);
119659 #if IS_ENABLED(CONFIG_IPV6)
119660 } else if (family == AF_INET6) {
119661 - pingv6_ops.ipv6_icmp_error(sk, skb, err, 0,
119662 + pingv6_ops->ipv6_icmp_error(sk, skb, err, 0,
119663 info, (u8 *)icmph);
119664 #endif
119665 }
119666 @@ -918,10 +918,10 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
119667 }
119668
119669 if (inet6_sk(sk)->rxopt.all)
119670 - pingv6_ops.ip6_datagram_recv_common_ctl(sk, msg, skb);
119671 + pingv6_ops->ip6_datagram_recv_common_ctl(sk, msg, skb);
119672 if (skb->protocol == htons(ETH_P_IPV6) &&
119673 inet6_sk(sk)->rxopt.all)
119674 - pingv6_ops.ip6_datagram_recv_specific_ctl(sk, msg, skb);
119675 + pingv6_ops->ip6_datagram_recv_specific_ctl(sk, msg, skb);
119676 else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags)
119677 ip_cmsg_recv(msg, skb);
119678 #endif
119679 @@ -1116,7 +1116,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
119680 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
119681 0, sock_i_ino(sp),
119682 atomic_read(&sp->sk_refcnt), sp,
119683 - atomic_read(&sp->sk_drops));
119684 + atomic_read_unchecked(&sp->sk_drops));
119685 }
119686
119687 static int ping_v4_seq_show(struct seq_file *seq, void *v)
119688 diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
119689 index 561cd4b..a32a155 100644
119690 --- a/net/ipv4/raw.c
119691 +++ b/net/ipv4/raw.c
119692 @@ -323,7 +323,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
119693 int raw_rcv(struct sock *sk, struct sk_buff *skb)
119694 {
119695 if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
119696 - atomic_inc(&sk->sk_drops);
119697 + atomic_inc_unchecked(&sk->sk_drops);
119698 kfree_skb(skb);
119699 return NET_RX_DROP;
119700 }
119701 @@ -771,16 +771,20 @@ static int raw_init(struct sock *sk)
119702
119703 static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
119704 {
119705 + struct icmp_filter filter;
119706 +
119707 if (optlen > sizeof(struct icmp_filter))
119708 optlen = sizeof(struct icmp_filter);
119709 - if (copy_from_user(&raw_sk(sk)->filter, optval, optlen))
119710 + if (copy_from_user(&filter, optval, optlen))
119711 return -EFAULT;
119712 + raw_sk(sk)->filter = filter;
119713 return 0;
119714 }
119715
119716 static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *optlen)
119717 {
119718 int len, ret = -EFAULT;
119719 + struct icmp_filter filter;
119720
119721 if (get_user(len, optlen))
119722 goto out;
119723 @@ -790,8 +794,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
119724 if (len > sizeof(struct icmp_filter))
119725 len = sizeof(struct icmp_filter);
119726 ret = -EFAULT;
119727 - if (put_user(len, optlen) ||
119728 - copy_to_user(optval, &raw_sk(sk)->filter, len))
119729 + filter = raw_sk(sk)->filter;
119730 + if (put_user(len, optlen) || len > sizeof filter || copy_to_user(optval, &filter, len))
119731 goto out;
119732 ret = 0;
119733 out: return ret;
119734 @@ -1020,7 +1024,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
119735 0, 0L, 0,
119736 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
119737 0, sock_i_ino(sp),
119738 - atomic_read(&sp->sk_refcnt), sp, atomic_read(&sp->sk_drops));
119739 + atomic_read(&sp->sk_refcnt), sp, atomic_read_unchecked(&sp->sk_drops));
119740 }
119741
119742 static int raw_seq_show(struct seq_file *seq, void *v)
119743 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
119744 index e681b85..8a43a65 100644
119745 --- a/net/ipv4/route.c
119746 +++ b/net/ipv4/route.c
119747 @@ -227,7 +227,7 @@ static const struct seq_operations rt_cache_seq_ops = {
119748
119749 static int rt_cache_seq_open(struct inode *inode, struct file *file)
119750 {
119751 - return seq_open(file, &rt_cache_seq_ops);
119752 + return seq_open_restrict(file, &rt_cache_seq_ops);
119753 }
119754
119755 static const struct file_operations rt_cache_seq_fops = {
119756 @@ -318,7 +318,7 @@ static const struct seq_operations rt_cpu_seq_ops = {
119757
119758 static int rt_cpu_seq_open(struct inode *inode, struct file *file)
119759 {
119760 - return seq_open(file, &rt_cpu_seq_ops);
119761 + return seq_open_restrict(file, &rt_cpu_seq_ops);
119762 }
119763
119764 static const struct file_operations rt_cpu_seq_fops = {
119765 @@ -356,7 +356,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v)
119766
119767 static int rt_acct_proc_open(struct inode *inode, struct file *file)
119768 {
119769 - return single_open(file, rt_acct_proc_show, NULL);
119770 + return single_open_restrict(file, rt_acct_proc_show, NULL);
119771 }
119772
119773 static const struct file_operations rt_acct_proc_fops = {
119774 @@ -458,7 +458,7 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
119775
119776 #define IP_IDENTS_SZ 2048u
119777
119778 -static atomic_t *ip_idents __read_mostly;
119779 +static atomic_unchecked_t ip_idents[IP_IDENTS_SZ] __read_mostly;
119780 static u32 *ip_tstamps __read_mostly;
119781
119782 /* In order to protect privacy, we add a perturbation to identifiers
119783 @@ -468,7 +468,7 @@ static u32 *ip_tstamps __read_mostly;
119784 u32 ip_idents_reserve(u32 hash, int segs)
119785 {
119786 u32 *p_tstamp = ip_tstamps + hash % IP_IDENTS_SZ;
119787 - atomic_t *p_id = ip_idents + hash % IP_IDENTS_SZ;
119788 + atomic_unchecked_t *p_id = ip_idents + hash % IP_IDENTS_SZ;
119789 u32 old = ACCESS_ONCE(*p_tstamp);
119790 u32 now = (u32)jiffies;
119791 u32 delta = 0;
119792 @@ -476,7 +476,7 @@ u32 ip_idents_reserve(u32 hash, int segs)
119793 if (old != now && cmpxchg(p_tstamp, old, now) == old)
119794 delta = prandom_u32_max(now - old);
119795
119796 - return atomic_add_return(segs + delta, p_id) - segs;
119797 + return atomic_add_return_unchecked(segs + delta, p_id) - segs;
119798 }
119799 EXPORT_SYMBOL(ip_idents_reserve);
119800
119801 @@ -2640,34 +2640,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
119802 .maxlen = sizeof(int),
119803 .mode = 0200,
119804 .proc_handler = ipv4_sysctl_rtcache_flush,
119805 + .extra1 = &init_net,
119806 },
119807 { },
119808 };
119809
119810 static __net_init int sysctl_route_net_init(struct net *net)
119811 {
119812 - struct ctl_table *tbl;
119813 + ctl_table_no_const *tbl = NULL;
119814
119815 - tbl = ipv4_route_flush_table;
119816 if (!net_eq(net, &init_net)) {
119817 - tbl = kmemdup(tbl, sizeof(ipv4_route_flush_table), GFP_KERNEL);
119818 + tbl = kmemdup(ipv4_route_flush_table, sizeof(ipv4_route_flush_table), GFP_KERNEL);
119819 if (!tbl)
119820 goto err_dup;
119821
119822 /* Don't export sysctls to unprivileged users */
119823 if (net->user_ns != &init_user_ns)
119824 tbl[0].procname = NULL;
119825 - }
119826 - tbl[0].extra1 = net;
119827 + tbl[0].extra1 = net;
119828 + net->ipv4.route_hdr = register_net_sysctl(net, "net/ipv4/route", tbl);
119829 + } else
119830 + net->ipv4.route_hdr = register_net_sysctl(net, "net/ipv4/route", ipv4_route_flush_table);
119831
119832 - net->ipv4.route_hdr = register_net_sysctl(net, "net/ipv4/route", tbl);
119833 if (!net->ipv4.route_hdr)
119834 goto err_reg;
119835 return 0;
119836
119837 err_reg:
119838 - if (tbl != ipv4_route_flush_table)
119839 - kfree(tbl);
119840 + kfree(tbl);
119841 err_dup:
119842 return -ENOMEM;
119843 }
119844 @@ -2690,8 +2690,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
119845
119846 static __net_init int rt_genid_init(struct net *net)
119847 {
119848 - atomic_set(&net->ipv4.rt_genid, 0);
119849 - atomic_set(&net->fnhe_genid, 0);
119850 + atomic_set_unchecked(&net->ipv4.rt_genid, 0);
119851 + atomic_set_unchecked(&net->fnhe_genid, 0);
119852 get_random_bytes(&net->ipv4.dev_addr_genid,
119853 sizeof(net->ipv4.dev_addr_genid));
119854 return 0;
119855 @@ -2735,11 +2735,7 @@ int __init ip_rt_init(void)
119856 int rc = 0;
119857 int cpu;
119858
119859 - ip_idents = kmalloc(IP_IDENTS_SZ * sizeof(*ip_idents), GFP_KERNEL);
119860 - if (!ip_idents)
119861 - panic("IP: failed to allocate ip_idents\n");
119862 -
119863 - prandom_bytes(ip_idents, IP_IDENTS_SZ * sizeof(*ip_idents));
119864 + prandom_bytes(ip_idents, sizeof(ip_idents));
119865
119866 ip_tstamps = kcalloc(IP_IDENTS_SZ, sizeof(*ip_tstamps), GFP_KERNEL);
119867 if (!ip_tstamps)
119868 diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
119869 index 0330ab2..4745d2c 100644
119870 --- a/net/ipv4/sysctl_net_ipv4.c
119871 +++ b/net/ipv4/sysctl_net_ipv4.c
119872 @@ -66,7 +66,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write,
119873 container_of(table->data, struct net, ipv4.ip_local_ports.range);
119874 int ret;
119875 int range[2];
119876 - struct ctl_table tmp = {
119877 + ctl_table_no_const tmp = {
119878 .data = &range,
119879 .maxlen = sizeof(range),
119880 .mode = table->mode,
119881 @@ -124,7 +124,7 @@ static int ipv4_ping_group_range(struct ctl_table *table, int write,
119882 int ret;
119883 gid_t urange[2];
119884 kgid_t low, high;
119885 - struct ctl_table tmp = {
119886 + ctl_table_no_const tmp = {
119887 .data = &urange,
119888 .maxlen = sizeof(urange),
119889 .mode = table->mode,
119890 @@ -155,7 +155,7 @@ static int proc_tcp_congestion_control(struct ctl_table *ctl, int write,
119891 void __user *buffer, size_t *lenp, loff_t *ppos)
119892 {
119893 char val[TCP_CA_NAME_MAX];
119894 - struct ctl_table tbl = {
119895 + ctl_table_no_const tbl = {
119896 .data = val,
119897 .maxlen = TCP_CA_NAME_MAX,
119898 };
119899 @@ -174,7 +174,7 @@ static int proc_tcp_available_congestion_control(struct ctl_table *ctl,
119900 void __user *buffer, size_t *lenp,
119901 loff_t *ppos)
119902 {
119903 - struct ctl_table tbl = { .maxlen = TCP_CA_BUF_MAX, };
119904 + ctl_table_no_const tbl = { .maxlen = TCP_CA_BUF_MAX, };
119905 int ret;
119906
119907 tbl.data = kmalloc(tbl.maxlen, GFP_USER);
119908 @@ -191,7 +191,7 @@ static int proc_allowed_congestion_control(struct ctl_table *ctl,
119909 void __user *buffer, size_t *lenp,
119910 loff_t *ppos)
119911 {
119912 - struct ctl_table tbl = { .maxlen = TCP_CA_BUF_MAX };
119913 + ctl_table_no_const tbl = { .maxlen = TCP_CA_BUF_MAX };
119914 int ret;
119915
119916 tbl.data = kmalloc(tbl.maxlen, GFP_USER);
119917 @@ -210,7 +210,7 @@ static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write,
119918 void __user *buffer, size_t *lenp,
119919 loff_t *ppos)
119920 {
119921 - struct ctl_table tbl = { .maxlen = (TCP_FASTOPEN_KEY_LENGTH * 2 + 10) };
119922 + ctl_table_no_const tbl = { .maxlen = (TCP_FASTOPEN_KEY_LENGTH * 2 + 10) };
119923 struct tcp_fastopen_context *ctxt;
119924 int ret;
119925 u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */
119926 @@ -915,13 +915,12 @@ static struct ctl_table ipv4_net_table[] = {
119927
119928 static __net_init int ipv4_sysctl_init_net(struct net *net)
119929 {
119930 - struct ctl_table *table;
119931 + ctl_table_no_const *table = NULL;
119932
119933 - table = ipv4_net_table;
119934 if (!net_eq(net, &init_net)) {
119935 int i;
119936
119937 - table = kmemdup(table, sizeof(ipv4_net_table), GFP_KERNEL);
119938 + table = kmemdup(ipv4_net_table, sizeof(ipv4_net_table), GFP_KERNEL);
119939 if (!table)
119940 goto err_alloc;
119941
119942 @@ -930,7 +929,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
119943 table[i].data += (void *)net - (void *)&init_net;
119944 }
119945
119946 - net->ipv4.ipv4_hdr = register_net_sysctl(net, "net/ipv4", table);
119947 + if (!net_eq(net, &init_net))
119948 + net->ipv4.ipv4_hdr = register_net_sysctl(net, "net/ipv4", table);
119949 + else
119950 + net->ipv4.ipv4_hdr = register_net_sysctl(net, "net/ipv4", ipv4_net_table);
119951 if (!net->ipv4.ipv4_hdr)
119952 goto err_reg;
119953
119954 diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
119955 index 728f5b3..dc51cbe 100644
119956 --- a/net/ipv4/tcp_input.c
119957 +++ b/net/ipv4/tcp_input.c
119958 @@ -767,7 +767,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
119959 * without any lock. We want to make sure compiler wont store
119960 * intermediate values in this location.
119961 */
119962 - ACCESS_ONCE(sk->sk_pacing_rate) = min_t(u64, rate,
119963 + ACCESS_ONCE_RW(sk->sk_pacing_rate) = min_t(u64, rate,
119964 sk->sk_max_pacing_rate);
119965 }
119966
119967 @@ -4608,7 +4608,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
119968 * simplifies code)
119969 */
119970 static void
119971 -tcp_collapse(struct sock *sk, struct sk_buff_head *list,
119972 +__intentional_overflow(5,6) tcp_collapse(struct sock *sk, struct sk_buff_head *list,
119973 struct sk_buff *head, struct sk_buff *tail,
119974 u32 start, u32 end)
119975 {
119976 @@ -5603,6 +5603,7 @@ discard:
119977 tcp_paws_reject(&tp->rx_opt, 0))
119978 goto discard_and_undo;
119979
119980 +#ifndef CONFIG_GRKERNSEC_NO_SIMULT_CONNECT
119981 if (th->syn) {
119982 /* We see SYN without ACK. It is attempt of
119983 * simultaneous connect with crossed SYNs.
119984 @@ -5653,6 +5654,7 @@ discard:
119985 goto discard;
119986 #endif
119987 }
119988 +#endif
119989 /* "fifth, if neither of the SYN or RST bits is set then
119990 * drop the segment and return."
119991 */
119992 @@ -5699,7 +5701,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
119993 goto discard;
119994
119995 if (th->syn) {
119996 - if (th->fin)
119997 + if (th->fin || th->urg || th->psh)
119998 goto discard;
119999 if (icsk->icsk_af_ops->conn_request(sk, skb) < 0)
120000 return 1;
120001 @@ -6026,7 +6028,7 @@ struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops,
120002
120003 kmemcheck_annotate_bitfield(ireq, flags);
120004 ireq->opt = NULL;
120005 - atomic64_set(&ireq->ir_cookie, 0);
120006 + atomic64_set_unchecked(&ireq->ir_cookie, 0);
120007 ireq->ireq_state = TCP_NEW_SYN_RECV;
120008 write_pnet(&ireq->ireq_net, sock_net(sk_listener));
120009 ireq->ireq_family = sk_listener->sk_family;
120010 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
120011 index 0ea2e1c..a4d1c48 100644
120012 --- a/net/ipv4/tcp_ipv4.c
120013 +++ b/net/ipv4/tcp_ipv4.c
120014 @@ -89,6 +89,10 @@ int sysctl_tcp_tw_reuse __read_mostly;
120015 int sysctl_tcp_low_latency __read_mostly;
120016 EXPORT_SYMBOL(sysctl_tcp_low_latency);
120017
120018 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120019 +extern int grsec_enable_blackhole;
120020 +#endif
120021 +
120022 #ifdef CONFIG_TCP_MD5SIG
120023 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
120024 __be32 daddr, __be32 saddr, const struct tcphdr *th);
120025 @@ -1427,6 +1431,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
120026 return 0;
120027
120028 reset:
120029 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120030 + if (!grsec_enable_blackhole)
120031 +#endif
120032 tcp_v4_send_reset(rsk, skb);
120033 discard:
120034 kfree_skb(skb);
120035 @@ -1591,12 +1598,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
120036 TCP_SKB_CB(skb)->sacked = 0;
120037
120038 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
120039 - if (!sk)
120040 + if (!sk) {
120041 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120042 + ret = 1;
120043 +#endif
120044 goto no_tcp_socket;
120045 -
120046 + }
120047 process:
120048 - if (sk->sk_state == TCP_TIME_WAIT)
120049 + if (sk->sk_state == TCP_TIME_WAIT) {
120050 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120051 + ret = 2;
120052 +#endif
120053 goto do_time_wait;
120054 + }
120055
120056 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
120057 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
120058 @@ -1653,6 +1667,10 @@ csum_error:
120059 bad_packet:
120060 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
120061 } else {
120062 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120063 + if (!grsec_enable_blackhole || (ret == 1 &&
120064 + (skb->dev->flags & IFF_LOOPBACK)))
120065 +#endif
120066 tcp_v4_send_reset(NULL, skb);
120067 }
120068
120069 diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
120070 index 4bc00cb..d024adf 100644
120071 --- a/net/ipv4/tcp_minisocks.c
120072 +++ b/net/ipv4/tcp_minisocks.c
120073 @@ -27,6 +27,10 @@
120074 #include <net/inet_common.h>
120075 #include <net/xfrm.h>
120076
120077 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120078 +extern int grsec_enable_blackhole;
120079 +#endif
120080 +
120081 int sysctl_tcp_syncookies __read_mostly = 1;
120082 EXPORT_SYMBOL(sysctl_tcp_syncookies);
120083
120084 @@ -782,7 +786,10 @@ embryonic_reset:
120085 * avoid becoming vulnerable to outside attack aiming at
120086 * resetting legit local connections.
120087 */
120088 - req->rsk_ops->send_reset(sk, skb);
120089 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120090 + if (!grsec_enable_blackhole)
120091 +#endif
120092 + req->rsk_ops->send_reset(sk, skb);
120093 } else if (fastopen) { /* received a valid RST pkt */
120094 reqsk_fastopen_remove(sk, req, true);
120095 tcp_reset(sk);
120096 diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
120097 index ebf5ff5..4d1ff32 100644
120098 --- a/net/ipv4/tcp_probe.c
120099 +++ b/net/ipv4/tcp_probe.c
120100 @@ -236,7 +236,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf,
120101 if (cnt + width >= len)
120102 break;
120103
120104 - if (copy_to_user(buf + cnt, tbuf, width))
120105 + if (width > sizeof tbuf || copy_to_user(buf + cnt, tbuf, width))
120106 return -EFAULT;
120107 cnt += width;
120108 }
120109 diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
120110 index 5b752f5..9594bb2 100644
120111 --- a/net/ipv4/tcp_timer.c
120112 +++ b/net/ipv4/tcp_timer.c
120113 @@ -22,6 +22,10 @@
120114 #include <linux/gfp.h>
120115 #include <net/tcp.h>
120116
120117 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120118 +extern int grsec_lastack_retries;
120119 +#endif
120120 +
120121 int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
120122 int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
120123 int sysctl_tcp_keepalive_time __read_mostly = TCP_KEEPALIVE_TIME;
120124 @@ -195,6 +199,13 @@ static int tcp_write_timeout(struct sock *sk)
120125 }
120126 }
120127
120128 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120129 + if ((sk->sk_state == TCP_LAST_ACK) &&
120130 + (grsec_lastack_retries > 0) &&
120131 + (grsec_lastack_retries < retry_until))
120132 + retry_until = grsec_lastack_retries;
120133 +#endif
120134 +
120135 if (retransmits_timed_out(sk, retry_until,
120136 syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
120137 /* Has it gone just too far? */
120138 diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
120139 index 1b8c5ba..e1f0542 100644
120140 --- a/net/ipv4/udp.c
120141 +++ b/net/ipv4/udp.c
120142 @@ -87,6 +87,7 @@
120143 #include <linux/types.h>
120144 #include <linux/fcntl.h>
120145 #include <linux/module.h>
120146 +#include <linux/security.h>
120147 #include <linux/socket.h>
120148 #include <linux/sockios.h>
120149 #include <linux/igmp.h>
120150 @@ -115,6 +116,10 @@
120151 #include <net/busy_poll.h>
120152 #include "udp_impl.h"
120153
120154 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120155 +extern int grsec_enable_blackhole;
120156 +#endif
120157 +
120158 struct udp_table udp_table __read_mostly;
120159 EXPORT_SYMBOL(udp_table);
120160
120161 @@ -608,6 +613,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk,
120162 return true;
120163 }
120164
120165 +extern int gr_search_udp_recvmsg(struct sock *sk, const struct sk_buff *skb);
120166 +extern int gr_search_udp_sendmsg(struct sock *sk, struct sockaddr_in *addr);
120167 +
120168 /*
120169 * This routine is called by the ICMP module when it gets some
120170 * sort of error condition. If err < 0 then the socket should
120171 @@ -944,9 +952,18 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
120172 dport = usin->sin_port;
120173 if (dport == 0)
120174 return -EINVAL;
120175 +
120176 + err = gr_search_udp_sendmsg(sk, usin);
120177 + if (err)
120178 + return err;
120179 } else {
120180 if (sk->sk_state != TCP_ESTABLISHED)
120181 return -EDESTADDRREQ;
120182 +
120183 + err = gr_search_udp_sendmsg(sk, NULL);
120184 + if (err)
120185 + return err;
120186 +
120187 daddr = inet->inet_daddr;
120188 dport = inet->inet_dport;
120189 /* Open fast path for connected socket.
120190 @@ -1193,7 +1210,7 @@ static unsigned int first_packet_length(struct sock *sk)
120191 IS_UDPLITE(sk));
120192 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
120193 IS_UDPLITE(sk));
120194 - atomic_inc(&sk->sk_drops);
120195 + atomic_inc_unchecked(&sk->sk_drops);
120196 __skb_unlink(skb, rcvq);
120197 __skb_queue_tail(&list_kill, skb);
120198 }
120199 @@ -1273,6 +1290,10 @@ try_again:
120200 if (!skb)
120201 goto out;
120202
120203 + err = gr_search_udp_recvmsg(sk, skb);
120204 + if (err)
120205 + goto out_free;
120206 +
120207 ulen = skb->len - sizeof(struct udphdr);
120208 copied = len;
120209 if (copied > ulen)
120210 @@ -1305,7 +1326,7 @@ try_again:
120211 if (unlikely(err)) {
120212 trace_kfree_skb(skb, udp_recvmsg);
120213 if (!peeked) {
120214 - atomic_inc(&sk->sk_drops);
120215 + atomic_inc_unchecked(&sk->sk_drops);
120216 UDP_INC_STATS_USER(sock_net(sk),
120217 UDP_MIB_INERRORS, is_udplite);
120218 }
120219 @@ -1599,7 +1620,7 @@ csum_error:
120220 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
120221 drop:
120222 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
120223 - atomic_inc(&sk->sk_drops);
120224 + atomic_inc_unchecked(&sk->sk_drops);
120225 kfree_skb(skb);
120226 return -1;
120227 }
120228 @@ -1617,7 +1638,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
120229 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
120230
120231 if (!skb1) {
120232 - atomic_inc(&sk->sk_drops);
120233 + atomic_inc_unchecked(&sk->sk_drops);
120234 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
120235 IS_UDPLITE(sk));
120236 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
120237 @@ -1823,6 +1844,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
120238 goto csum_error;
120239
120240 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
120241 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120242 + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK))
120243 +#endif
120244 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
120245
120246 /*
120247 @@ -2427,7 +2451,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
120248 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
120249 0, sock_i_ino(sp),
120250 atomic_read(&sp->sk_refcnt), sp,
120251 - atomic_read(&sp->sk_drops));
120252 + atomic_read_unchecked(&sp->sk_drops));
120253 }
120254
120255 int udp4_seq_show(struct seq_file *seq, void *v)
120256 diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c
120257 index bff6974..c63736c 100644
120258 --- a/net/ipv4/xfrm4_policy.c
120259 +++ b/net/ipv4/xfrm4_policy.c
120260 @@ -186,11 +186,11 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse)
120261 fl4->flowi4_tos = iph->tos;
120262 }
120263
120264 -static inline int xfrm4_garbage_collect(struct dst_ops *ops)
120265 +static int xfrm4_garbage_collect(struct dst_ops *ops)
120266 {
120267 struct net *net = container_of(ops, struct net, xfrm.xfrm4_dst_ops);
120268
120269 - xfrm4_policy_afinfo.garbage_collect(net);
120270 + xfrm_garbage_collect_deferred(net);
120271 return (dst_entries_get_slow(ops) > ops->gc_thresh * 2);
120272 }
120273
120274 @@ -268,19 +268,18 @@ static struct ctl_table xfrm4_policy_table[] = {
120275
120276 static int __net_init xfrm4_net_init(struct net *net)
120277 {
120278 - struct ctl_table *table;
120279 + ctl_table_no_const *table = NULL;
120280 struct ctl_table_header *hdr;
120281
120282 - table = xfrm4_policy_table;
120283 if (!net_eq(net, &init_net)) {
120284 - table = kmemdup(table, sizeof(xfrm4_policy_table), GFP_KERNEL);
120285 + table = kmemdup(xfrm4_policy_table, sizeof(xfrm4_policy_table), GFP_KERNEL);
120286 if (!table)
120287 goto err_alloc;
120288
120289 table[0].data = &net->xfrm.xfrm4_dst_ops.gc_thresh;
120290 - }
120291 -
120292 - hdr = register_net_sysctl(net, "net/ipv4", table);
120293 + hdr = register_net_sysctl(net, "net/ipv4", table);
120294 + } else
120295 + hdr = register_net_sysctl(net, "net/ipv4", xfrm4_policy_table);
120296 if (!hdr)
120297 goto err_reg;
120298
120299 @@ -288,8 +287,7 @@ static int __net_init xfrm4_net_init(struct net *net)
120300 return 0;
120301
120302 err_reg:
120303 - if (!net_eq(net, &init_net))
120304 - kfree(table);
120305 + kfree(table);
120306 err_alloc:
120307 return -ENOMEM;
120308 }
120309 diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
120310 index 21c2c81..373c1ba 100644
120311 --- a/net/ipv6/addrconf.c
120312 +++ b/net/ipv6/addrconf.c
120313 @@ -178,7 +178,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
120314 .hop_limit = IPV6_DEFAULT_HOPLIMIT,
120315 .mtu6 = IPV6_MIN_MTU,
120316 .accept_ra = 1,
120317 - .accept_redirects = 1,
120318 + .accept_redirects = 0,
120319 .autoconf = 1,
120320 .force_mld_version = 0,
120321 .mldv1_unsolicited_report_interval = 10 * HZ,
120322 @@ -219,7 +219,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
120323 .hop_limit = IPV6_DEFAULT_HOPLIMIT,
120324 .mtu6 = IPV6_MIN_MTU,
120325 .accept_ra = 1,
120326 - .accept_redirects = 1,
120327 + .accept_redirects = 0,
120328 .autoconf = 1,
120329 .force_mld_version = 0,
120330 .mldv1_unsolicited_report_interval = 10 * HZ,
120331 @@ -620,7 +620,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
120332 idx = 0;
120333 head = &net->dev_index_head[h];
120334 rcu_read_lock();
120335 - cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^
120336 + cb->seq = atomic_read_unchecked(&net->ipv6.dev_addr_genid) ^
120337 net->dev_base_seq;
120338 hlist_for_each_entry_rcu(dev, head, index_hlist) {
120339 if (idx < s_idx)
120340 @@ -2508,7 +2508,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
120341 p.iph.ihl = 5;
120342 p.iph.protocol = IPPROTO_IPV6;
120343 p.iph.ttl = 64;
120344 - ifr.ifr_ifru.ifru_data = (__force void __user *)&p;
120345 + ifr.ifr_ifru.ifru_data = (void __force_user *)&p;
120346
120347 if (ops->ndo_do_ioctl) {
120348 mm_segment_t oldfs = get_fs();
120349 @@ -3774,16 +3774,23 @@ static const struct file_operations if6_fops = {
120350 .release = seq_release_net,
120351 };
120352
120353 +extern void register_ipv6_seq_ops_addr(struct seq_operations *addr);
120354 +extern void unregister_ipv6_seq_ops_addr(void);
120355 +
120356 static int __net_init if6_proc_net_init(struct net *net)
120357 {
120358 - if (!proc_create("if_inet6", S_IRUGO, net->proc_net, &if6_fops))
120359 + register_ipv6_seq_ops_addr(&if6_seq_ops);
120360 + if (!proc_create("if_inet6", S_IRUGO, net->proc_net, &if6_fops)) {
120361 + unregister_ipv6_seq_ops_addr();
120362 return -ENOMEM;
120363 + }
120364 return 0;
120365 }
120366
120367 static void __net_exit if6_proc_net_exit(struct net *net)
120368 {
120369 remove_proc_entry("if_inet6", net->proc_net);
120370 + unregister_ipv6_seq_ops_addr();
120371 }
120372
120373 static struct pernet_operations if6_proc_net_ops = {
120374 @@ -4402,7 +4409,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
120375 s_ip_idx = ip_idx = cb->args[2];
120376
120377 rcu_read_lock();
120378 - cb->seq = atomic_read(&net->ipv6.dev_addr_genid) ^ net->dev_base_seq;
120379 + cb->seq = atomic_read_unchecked(&net->ipv6.dev_addr_genid) ^ net->dev_base_seq;
120380 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
120381 idx = 0;
120382 head = &net->dev_index_head[h];
120383 @@ -5059,7 +5066,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
120384 rt_genid_bump_ipv6(net);
120385 break;
120386 }
120387 - atomic_inc(&net->ipv6.dev_addr_genid);
120388 + atomic_inc_unchecked(&net->ipv6.dev_addr_genid);
120389 }
120390
120391 static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
120392 @@ -5079,7 +5086,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
120393 int *valp = ctl->data;
120394 int val = *valp;
120395 loff_t pos = *ppos;
120396 - struct ctl_table lctl;
120397 + ctl_table_no_const lctl;
120398 int ret;
120399
120400 /*
120401 @@ -5104,7 +5111,7 @@ int addrconf_sysctl_mtu(struct ctl_table *ctl, int write,
120402 {
120403 struct inet6_dev *idev = ctl->extra1;
120404 int min_mtu = IPV6_MIN_MTU;
120405 - struct ctl_table lctl;
120406 + ctl_table_no_const lctl;
120407
120408 lctl = *ctl;
120409 lctl.extra1 = &min_mtu;
120410 @@ -5179,7 +5186,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
120411 int *valp = ctl->data;
120412 int val = *valp;
120413 loff_t pos = *ppos;
120414 - struct ctl_table lctl;
120415 + ctl_table_no_const lctl;
120416 int ret;
120417
120418 /*
120419 @@ -5244,7 +5251,7 @@ static int addrconf_sysctl_stable_secret(struct ctl_table *ctl, int write,
120420 int err;
120421 struct in6_addr addr;
120422 char str[IPV6_MAX_STRLEN];
120423 - struct ctl_table lctl = *ctl;
120424 + ctl_table_no_const lctl = *ctl;
120425 struct net *net = ctl->extra2;
120426 struct ipv6_stable_secret *secret = ctl->data;
120427
120428 diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
120429 index 7de52b6..ce7fb94 100644
120430 --- a/net/ipv6/af_inet6.c
120431 +++ b/net/ipv6/af_inet6.c
120432 @@ -770,7 +770,7 @@ static int __net_init inet6_net_init(struct net *net)
120433 net->ipv6.sysctl.idgen_retries = 3;
120434 net->ipv6.sysctl.idgen_delay = 1 * HZ;
120435 net->ipv6.sysctl.flowlabel_state_ranges = 1;
120436 - atomic_set(&net->ipv6.fib6_sernum, 1);
120437 + atomic_set_unchecked(&net->ipv6.fib6_sernum, 1);
120438
120439 err = ipv6_init_mibs(net);
120440 if (err)
120441 diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
120442 index b10a889..e881e1f 100644
120443 --- a/net/ipv6/datagram.c
120444 +++ b/net/ipv6/datagram.c
120445 @@ -977,5 +977,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
120446 0,
120447 sock_i_ino(sp),
120448 atomic_read(&sp->sk_refcnt), sp,
120449 - atomic_read(&sp->sk_drops));
120450 + atomic_read_unchecked(&sp->sk_drops));
120451 }
120452 diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
120453 index 713d743..8eec687 100644
120454 --- a/net/ipv6/icmp.c
120455 +++ b/net/ipv6/icmp.c
120456 @@ -1004,7 +1004,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
120457
120458 struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net)
120459 {
120460 - struct ctl_table *table;
120461 + ctl_table_no_const *table;
120462
120463 table = kmemdup(ipv6_icmp_table_template,
120464 sizeof(ipv6_icmp_table_template),
120465 diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
120466 index 548c623..bc8ec4f 100644
120467 --- a/net/ipv6/ip6_fib.c
120468 +++ b/net/ipv6/ip6_fib.c
120469 @@ -99,9 +99,9 @@ static int fib6_new_sernum(struct net *net)
120470 int new, old;
120471
120472 do {
120473 - old = atomic_read(&net->ipv6.fib6_sernum);
120474 + old = atomic_read_unchecked(&net->ipv6.fib6_sernum);
120475 new = old < INT_MAX ? old + 1 : 1;
120476 - } while (atomic_cmpxchg(&net->ipv6.fib6_sernum,
120477 + } while (atomic_cmpxchg_unchecked(&net->ipv6.fib6_sernum,
120478 old, new) != old);
120479 return new;
120480 }
120481 diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
120482 index 69f4f68..1f97524 100644
120483 --- a/net/ipv6/ip6_gre.c
120484 +++ b/net/ipv6/ip6_gre.c
120485 @@ -71,8 +71,8 @@ struct ip6gre_net {
120486 struct net_device *fb_tunnel_dev;
120487 };
120488
120489 -static struct rtnl_link_ops ip6gre_link_ops __read_mostly;
120490 -static struct rtnl_link_ops ip6gre_tap_ops __read_mostly;
120491 +static struct rtnl_link_ops ip6gre_link_ops;
120492 +static struct rtnl_link_ops ip6gre_tap_ops;
120493 static int ip6gre_tunnel_init(struct net_device *dev);
120494 static void ip6gre_tunnel_setup(struct net_device *dev);
120495 static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t);
120496 @@ -1281,7 +1281,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
120497 }
120498
120499
120500 -static struct inet6_protocol ip6gre_protocol __read_mostly = {
120501 +static struct inet6_protocol ip6gre_protocol = {
120502 .handler = ip6gre_rcv,
120503 .err_handler = ip6gre_err,
120504 .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
120505 @@ -1640,7 +1640,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
120506 [IFLA_GRE_FLAGS] = { .type = NLA_U32 },
120507 };
120508
120509 -static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
120510 +static struct rtnl_link_ops ip6gre_link_ops = {
120511 .kind = "ip6gre",
120512 .maxtype = IFLA_GRE_MAX,
120513 .policy = ip6gre_policy,
120514 @@ -1655,7 +1655,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
120515 .get_link_net = ip6_tnl_get_link_net,
120516 };
120517
120518 -static struct rtnl_link_ops ip6gre_tap_ops __read_mostly = {
120519 +static struct rtnl_link_ops ip6gre_tap_ops = {
120520 .kind = "ip6gretap",
120521 .maxtype = IFLA_GRE_MAX,
120522 .policy = ip6gre_policy,
120523 diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
120524 index 2e67b66..b816b34 100644
120525 --- a/net/ipv6/ip6_tunnel.c
120526 +++ b/net/ipv6/ip6_tunnel.c
120527 @@ -80,7 +80,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
120528
120529 static int ip6_tnl_dev_init(struct net_device *dev);
120530 static void ip6_tnl_dev_setup(struct net_device *dev);
120531 -static struct rtnl_link_ops ip6_link_ops __read_mostly;
120532 +static struct rtnl_link_ops ip6_link_ops;
120533
120534 static int ip6_tnl_net_id __read_mostly;
120535 struct ip6_tnl_net {
120536 @@ -1776,7 +1776,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = {
120537 [IFLA_IPTUN_PROTO] = { .type = NLA_U8 },
120538 };
120539
120540 -static struct rtnl_link_ops ip6_link_ops __read_mostly = {
120541 +static struct rtnl_link_ops ip6_link_ops = {
120542 .kind = "ip6tnl",
120543 .maxtype = IFLA_IPTUN_MAX,
120544 .policy = ip6_tnl_policy,
120545 diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
120546 index 0224c03..c5ec3d9 100644
120547 --- a/net/ipv6/ip6_vti.c
120548 +++ b/net/ipv6/ip6_vti.c
120549 @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
120550
120551 static int vti6_dev_init(struct net_device *dev);
120552 static void vti6_dev_setup(struct net_device *dev);
120553 -static struct rtnl_link_ops vti6_link_ops __read_mostly;
120554 +static struct rtnl_link_ops vti6_link_ops;
120555
120556 static int vti6_net_id __read_mostly;
120557 struct vti6_net {
120558 @@ -1019,7 +1019,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
120559 [IFLA_VTI_OKEY] = { .type = NLA_U32 },
120560 };
120561
120562 -static struct rtnl_link_ops vti6_link_ops __read_mostly = {
120563 +static struct rtnl_link_ops vti6_link_ops = {
120564 .kind = "vti6",
120565 .maxtype = IFLA_VTI_MAX,
120566 .policy = vti6_policy,
120567 diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
120568 index 63e6956..ebbbcf6 100644
120569 --- a/net/ipv6/ipv6_sockglue.c
120570 +++ b/net/ipv6/ipv6_sockglue.c
120571 @@ -1015,7 +1015,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
120572 if (sk->sk_type != SOCK_STREAM)
120573 return -ENOPROTOOPT;
120574
120575 - msg.msg_control = optval;
120576 + msg.msg_control = (void __force_kernel *)optval;
120577 msg.msg_controllen = len;
120578 msg.msg_flags = flags;
120579
120580 diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
120581 index 3c35ced..2e6882f 100644
120582 --- a/net/ipv6/netfilter/ip6_tables.c
120583 +++ b/net/ipv6/netfilter/ip6_tables.c
120584 @@ -1086,14 +1086,14 @@ static int compat_table_info(const struct xt_table_info *info,
120585 #endif
120586
120587 static int get_info(struct net *net, void __user *user,
120588 - const int *len, int compat)
120589 + int len, int compat)
120590 {
120591 char name[XT_TABLE_MAXNAMELEN];
120592 struct xt_table *t;
120593 int ret;
120594
120595 - if (*len != sizeof(struct ip6t_getinfo)) {
120596 - duprintf("length %u != %zu\n", *len,
120597 + if (len != sizeof(struct ip6t_getinfo)) {
120598 + duprintf("length %u != %zu\n", len,
120599 sizeof(struct ip6t_getinfo));
120600 return -EINVAL;
120601 }
120602 @@ -1130,7 +1130,7 @@ static int get_info(struct net *net, void __user *user,
120603 info.size = private->size;
120604 strcpy(info.name, name);
120605
120606 - if (copy_to_user(user, &info, *len) != 0)
120607 + if (copy_to_user(user, &info, len) != 0)
120608 ret = -EFAULT;
120609 else
120610 ret = 0;
120611 @@ -1978,7 +1978,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
120612
120613 switch (cmd) {
120614 case IP6T_SO_GET_INFO:
120615 - ret = get_info(sock_net(sk), user, len, 1);
120616 + ret = get_info(sock_net(sk), user, *len, 1);
120617 break;
120618 case IP6T_SO_GET_ENTRIES:
120619 ret = compat_get_entries(sock_net(sk), user, len);
120620 @@ -2025,7 +2025,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
120621
120622 switch (cmd) {
120623 case IP6T_SO_GET_INFO:
120624 - ret = get_info(sock_net(sk), user, len, 0);
120625 + ret = get_info(sock_net(sk), user, *len, 0);
120626 break;
120627
120628 case IP6T_SO_GET_ENTRIES:
120629 diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
120630 index 6d02498..55e564f 100644
120631 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c
120632 +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
120633 @@ -96,12 +96,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = {
120634
120635 static int nf_ct_frag6_sysctl_register(struct net *net)
120636 {
120637 - struct ctl_table *table;
120638 + ctl_table_no_const *table = NULL;
120639 struct ctl_table_header *hdr;
120640
120641 - table = nf_ct_frag6_sysctl_table;
120642 if (!net_eq(net, &init_net)) {
120643 - table = kmemdup(table, sizeof(nf_ct_frag6_sysctl_table),
120644 + table = kmemdup(nf_ct_frag6_sysctl_table, sizeof(nf_ct_frag6_sysctl_table),
120645 GFP_KERNEL);
120646 if (table == NULL)
120647 goto err_alloc;
120648 @@ -112,9 +111,9 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
120649 table[2].data = &net->nf_frag.frags.high_thresh;
120650 table[2].extra1 = &net->nf_frag.frags.low_thresh;
120651 table[2].extra2 = &init_net.nf_frag.frags.high_thresh;
120652 - }
120653 -
120654 - hdr = register_net_sysctl(net, "net/netfilter", table);
120655 + hdr = register_net_sysctl(net, "net/netfilter", table);
120656 + } else
120657 + hdr = register_net_sysctl(net, "net/netfilter", nf_ct_frag6_sysctl_table);
120658 if (hdr == NULL)
120659 goto err_reg;
120660
120661 @@ -122,8 +121,7 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
120662 return 0;
120663
120664 err_reg:
120665 - if (!net_eq(net, &init_net))
120666 - kfree(table);
120667 + kfree(table);
120668 err_alloc:
120669 return -ENOMEM;
120670 }
120671 diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
120672 index 263a516..692f738 100644
120673 --- a/net/ipv6/ping.c
120674 +++ b/net/ipv6/ping.c
120675 @@ -240,6 +240,24 @@ static struct pernet_operations ping_v6_net_ops = {
120676 };
120677 #endif
120678
120679 +static struct pingv6_ops real_pingv6_ops = {
120680 + .ipv6_recv_error = ipv6_recv_error,
120681 + .ip6_datagram_recv_common_ctl = ip6_datagram_recv_common_ctl,
120682 + .ip6_datagram_recv_specific_ctl = ip6_datagram_recv_specific_ctl,
120683 + .icmpv6_err_convert = icmpv6_err_convert,
120684 + .ipv6_icmp_error = ipv6_icmp_error,
120685 + .ipv6_chk_addr = ipv6_chk_addr,
120686 +};
120687 +
120688 +static struct pingv6_ops dummy_pingv6_ops = {
120689 + .ipv6_recv_error = dummy_ipv6_recv_error,
120690 + .ip6_datagram_recv_common_ctl = dummy_ip6_datagram_recv_ctl,
120691 + .ip6_datagram_recv_specific_ctl = dummy_ip6_datagram_recv_ctl,
120692 + .icmpv6_err_convert = dummy_icmpv6_err_convert,
120693 + .ipv6_icmp_error = dummy_ipv6_icmp_error,
120694 + .ipv6_chk_addr = dummy_ipv6_chk_addr,
120695 +};
120696 +
120697 int __init pingv6_init(void)
120698 {
120699 #ifdef CONFIG_PROC_FS
120700 @@ -247,13 +265,7 @@ int __init pingv6_init(void)
120701 if (ret)
120702 return ret;
120703 #endif
120704 - pingv6_ops.ipv6_recv_error = ipv6_recv_error;
120705 - pingv6_ops.ip6_datagram_recv_common_ctl = ip6_datagram_recv_common_ctl;
120706 - pingv6_ops.ip6_datagram_recv_specific_ctl =
120707 - ip6_datagram_recv_specific_ctl;
120708 - pingv6_ops.icmpv6_err_convert = icmpv6_err_convert;
120709 - pingv6_ops.ipv6_icmp_error = ipv6_icmp_error;
120710 - pingv6_ops.ipv6_chk_addr = ipv6_chk_addr;
120711 + pingv6_ops = &real_pingv6_ops;
120712 return inet6_register_protosw(&pingv6_protosw);
120713 }
120714
120715 @@ -262,14 +274,9 @@ int __init pingv6_init(void)
120716 */
120717 void pingv6_exit(void)
120718 {
120719 - pingv6_ops.ipv6_recv_error = dummy_ipv6_recv_error;
120720 - pingv6_ops.ip6_datagram_recv_common_ctl = dummy_ip6_datagram_recv_ctl;
120721 - pingv6_ops.ip6_datagram_recv_specific_ctl = dummy_ip6_datagram_recv_ctl;
120722 - pingv6_ops.icmpv6_err_convert = dummy_icmpv6_err_convert;
120723 - pingv6_ops.ipv6_icmp_error = dummy_ipv6_icmp_error;
120724 - pingv6_ops.ipv6_chk_addr = dummy_ipv6_chk_addr;
120725 #ifdef CONFIG_PROC_FS
120726 unregister_pernet_subsys(&ping_v6_net_ops);
120727 #endif
120728 + pingv6_ops = &dummy_pingv6_ops;
120729 inet6_unregister_protosw(&pingv6_protosw);
120730 }
120731 diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
120732 index 679253d0..70b653c 100644
120733 --- a/net/ipv6/proc.c
120734 +++ b/net/ipv6/proc.c
120735 @@ -310,7 +310,7 @@ static int __net_init ipv6_proc_init_net(struct net *net)
120736 if (!proc_create("snmp6", S_IRUGO, net->proc_net, &snmp6_seq_fops))
120737 goto proc_snmp6_fail;
120738
120739 - net->mib.proc_net_devsnmp6 = proc_mkdir("dev_snmp6", net->proc_net);
120740 + net->mib.proc_net_devsnmp6 = proc_mkdir_restrict("dev_snmp6", net->proc_net);
120741 if (!net->mib.proc_net_devsnmp6)
120742 goto proc_dev_snmp6_fail;
120743 return 0;
120744 diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
120745 index ca4700c..e44c0f9 100644
120746 --- a/net/ipv6/raw.c
120747 +++ b/net/ipv6/raw.c
120748 @@ -388,7 +388,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
120749 {
120750 if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) &&
120751 skb_checksum_complete(skb)) {
120752 - atomic_inc(&sk->sk_drops);
120753 + atomic_inc_unchecked(&sk->sk_drops);
120754 kfree_skb(skb);
120755 return NET_RX_DROP;
120756 }
120757 @@ -416,7 +416,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
120758 struct raw6_sock *rp = raw6_sk(sk);
120759
120760 if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) {
120761 - atomic_inc(&sk->sk_drops);
120762 + atomic_inc_unchecked(&sk->sk_drops);
120763 kfree_skb(skb);
120764 return NET_RX_DROP;
120765 }
120766 @@ -440,7 +440,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
120767
120768 if (inet->hdrincl) {
120769 if (skb_checksum_complete(skb)) {
120770 - atomic_inc(&sk->sk_drops);
120771 + atomic_inc_unchecked(&sk->sk_drops);
120772 kfree_skb(skb);
120773 return NET_RX_DROP;
120774 }
120775 @@ -608,7 +608,7 @@ out:
120776 return err;
120777 }
120778
120779 -static int rawv6_send_hdrinc(struct sock *sk, struct msghdr *msg, int length,
120780 +static int rawv6_send_hdrinc(struct sock *sk, struct msghdr *msg, unsigned int length,
120781 struct flowi6 *fl6, struct dst_entry **dstp,
120782 unsigned int flags)
120783 {
120784 @@ -916,12 +916,15 @@ do_confirm:
120785 static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
120786 char __user *optval, int optlen)
120787 {
120788 + struct icmp6_filter filter;
120789 +
120790 switch (optname) {
120791 case ICMPV6_FILTER:
120792 if (optlen > sizeof(struct icmp6_filter))
120793 optlen = sizeof(struct icmp6_filter);
120794 - if (copy_from_user(&raw6_sk(sk)->filter, optval, optlen))
120795 + if (copy_from_user(&filter, optval, optlen))
120796 return -EFAULT;
120797 + raw6_sk(sk)->filter = filter;
120798 return 0;
120799 default:
120800 return -ENOPROTOOPT;
120801 @@ -934,6 +937,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
120802 char __user *optval, int __user *optlen)
120803 {
120804 int len;
120805 + struct icmp6_filter filter;
120806
120807 switch (optname) {
120808 case ICMPV6_FILTER:
120809 @@ -945,7 +949,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
120810 len = sizeof(struct icmp6_filter);
120811 if (put_user(len, optlen))
120812 return -EFAULT;
120813 - if (copy_to_user(optval, &raw6_sk(sk)->filter, len))
120814 + filter = raw6_sk(sk)->filter;
120815 + if (len > sizeof filter || copy_to_user(optval, &filter, len))
120816 return -EFAULT;
120817 return 0;
120818 default:
120819 diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
120820 index f1159bb..0db5dad 100644
120821 --- a/net/ipv6/reassembly.c
120822 +++ b/net/ipv6/reassembly.c
120823 @@ -626,12 +626,11 @@ static struct ctl_table ip6_frags_ctl_table[] = {
120824
120825 static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
120826 {
120827 - struct ctl_table *table;
120828 + ctl_table_no_const *table = NULL;
120829 struct ctl_table_header *hdr;
120830
120831 - table = ip6_frags_ns_ctl_table;
120832 if (!net_eq(net, &init_net)) {
120833 - table = kmemdup(table, sizeof(ip6_frags_ns_ctl_table), GFP_KERNEL);
120834 + table = kmemdup(ip6_frags_ns_ctl_table, sizeof(ip6_frags_ns_ctl_table), GFP_KERNEL);
120835 if (!table)
120836 goto err_alloc;
120837
120838 @@ -645,9 +644,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
120839 /* Don't export sysctls to unprivileged users */
120840 if (net->user_ns != &init_user_ns)
120841 table[0].procname = NULL;
120842 - }
120843 + hdr = register_net_sysctl(net, "net/ipv6", table);
120844 + } else
120845 + hdr = register_net_sysctl(net, "net/ipv6", ip6_frags_ns_ctl_table);
120846
120847 - hdr = register_net_sysctl(net, "net/ipv6", table);
120848 if (!hdr)
120849 goto err_reg;
120850
120851 @@ -655,8 +655,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
120852 return 0;
120853
120854 err_reg:
120855 - if (!net_eq(net, &init_net))
120856 - kfree(table);
120857 + kfree(table);
120858 err_alloc:
120859 return -ENOMEM;
120860 }
120861 diff --git a/net/ipv6/route.c b/net/ipv6/route.c
120862 index 00b64d4..da5099e 100644
120863 --- a/net/ipv6/route.c
120864 +++ b/net/ipv6/route.c
120865 @@ -3430,7 +3430,7 @@ struct ctl_table ipv6_route_table_template[] = {
120866
120867 struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net)
120868 {
120869 - struct ctl_table *table;
120870 + ctl_table_no_const *table;
120871
120872 table = kmemdup(ipv6_route_table_template,
120873 sizeof(ipv6_route_table_template),
120874 diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
120875 index ac35a28..070cc8c 100644
120876 --- a/net/ipv6/sit.c
120877 +++ b/net/ipv6/sit.c
120878 @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev);
120879 static void ipip6_dev_free(struct net_device *dev);
120880 static bool check_6rd(struct ip_tunnel *tunnel, const struct in6_addr *v6dst,
120881 __be32 *v4dst);
120882 -static struct rtnl_link_ops sit_link_ops __read_mostly;
120883 +static struct rtnl_link_ops sit_link_ops;
120884
120885 static int sit_net_id __read_mostly;
120886 struct sit_net {
120887 @@ -1749,7 +1749,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head)
120888 unregister_netdevice_queue(dev, head);
120889 }
120890
120891 -static struct rtnl_link_ops sit_link_ops __read_mostly = {
120892 +static struct rtnl_link_ops sit_link_ops = {
120893 .kind = "sit",
120894 .maxtype = IFLA_IPTUN_MAX,
120895 .policy = ipip6_policy,
120896 diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
120897 index 4e705ad..9ba8db8 100644
120898 --- a/net/ipv6/sysctl_net_ipv6.c
120899 +++ b/net/ipv6/sysctl_net_ipv6.c
120900 @@ -99,7 +99,7 @@ static struct ctl_table ipv6_rotable[] = {
120901
120902 static int __net_init ipv6_sysctl_net_init(struct net *net)
120903 {
120904 - struct ctl_table *ipv6_table;
120905 + ctl_table_no_const *ipv6_table;
120906 struct ctl_table *ipv6_route_table;
120907 struct ctl_table *ipv6_icmp_table;
120908 int err;
120909 diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
120910 index 7a6cea5..1a99e26 100644
120911 --- a/net/ipv6/tcp_ipv6.c
120912 +++ b/net/ipv6/tcp_ipv6.c
120913 @@ -103,6 +103,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
120914 }
120915 }
120916
120917 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120918 +extern int grsec_enable_blackhole;
120919 +#endif
120920 +
120921 static __u32 tcp_v6_init_sequence(const struct sk_buff *skb)
120922 {
120923 return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32,
120924 @@ -1280,6 +1284,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
120925 return 0;
120926
120927 reset:
120928 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120929 + if (!grsec_enable_blackhole)
120930 +#endif
120931 tcp_v6_send_reset(sk, skb);
120932 discard:
120933 if (opt_skb)
120934 @@ -1389,12 +1396,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
120935
120936 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest,
120937 inet6_iif(skb));
120938 - if (!sk)
120939 + if (!sk) {
120940 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120941 + ret = 1;
120942 +#endif
120943 goto no_tcp_socket;
120944 + }
120945
120946 process:
120947 - if (sk->sk_state == TCP_TIME_WAIT)
120948 + if (sk->sk_state == TCP_TIME_WAIT) {
120949 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120950 + ret = 2;
120951 +#endif
120952 goto do_time_wait;
120953 + }
120954
120955 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
120956 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
120957 @@ -1446,6 +1461,10 @@ csum_error:
120958 bad_packet:
120959 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
120960 } else {
120961 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120962 + if (!grsec_enable_blackhole || (ret == 1 &&
120963 + (skb->dev->flags & IFF_LOOPBACK)))
120964 +#endif
120965 tcp_v6_send_reset(NULL, skb);
120966 }
120967
120968 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
120969 index e51fc3e..8f04229 100644
120970 --- a/net/ipv6/udp.c
120971 +++ b/net/ipv6/udp.c
120972 @@ -76,6 +76,10 @@ static u32 udp6_ehashfn(const struct net *net,
120973 udp_ipv6_hash_secret + net_hash_mix(net));
120974 }
120975
120976 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
120977 +extern int grsec_enable_blackhole;
120978 +#endif
120979 +
120980 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
120981 {
120982 const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2);
120983 @@ -445,7 +449,7 @@ try_again:
120984 if (unlikely(err)) {
120985 trace_kfree_skb(skb, udpv6_recvmsg);
120986 if (!peeked) {
120987 - atomic_inc(&sk->sk_drops);
120988 + atomic_inc_unchecked(&sk->sk_drops);
120989 if (is_udp4)
120990 UDP_INC_STATS_USER(sock_net(sk),
120991 UDP_MIB_INERRORS,
120992 @@ -709,7 +713,7 @@ csum_error:
120993 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
120994 drop:
120995 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
120996 - atomic_inc(&sk->sk_drops);
120997 + atomic_inc_unchecked(&sk->sk_drops);
120998 kfree_skb(skb);
120999 return -1;
121000 }
121001 @@ -750,7 +754,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
121002 if (likely(!skb1))
121003 skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
121004 if (!skb1) {
121005 - atomic_inc(&sk->sk_drops);
121006 + atomic_inc_unchecked(&sk->sk_drops);
121007 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
121008 IS_UDPLITE(sk));
121009 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
121010 @@ -934,6 +938,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
121011 goto csum_error;
121012
121013 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
121014 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
121015 + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK))
121016 +#endif
121017 icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
121018
121019 kfree_skb(skb);
121020 diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
121021 index ed0583c..606962a 100644
121022 --- a/net/ipv6/xfrm6_policy.c
121023 +++ b/net/ipv6/xfrm6_policy.c
121024 @@ -174,7 +174,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
121025 return;
121026
121027 case IPPROTO_ICMPV6:
121028 - if (!onlyproto && pskb_may_pull(skb, nh + offset + 2 - skb->data)) {
121029 + if (!onlyproto && (nh + offset + 2 < skb->data ||
121030 + pskb_may_pull(skb, nh + offset + 2 - skb->data))) {
121031 u8 *icmp;
121032
121033 nh = skb_network_header(skb);
121034 @@ -188,7 +189,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
121035 #if IS_ENABLED(CONFIG_IPV6_MIP6)
121036 case IPPROTO_MH:
121037 offset += ipv6_optlen(exthdr);
121038 - if (!onlyproto && pskb_may_pull(skb, nh + offset + 3 - skb->data)) {
121039 + if (!onlyproto && (nh + offset + 3 < skb->data ||
121040 + pskb_may_pull(skb, nh + offset + 3 - skb->data))) {
121041 struct ip6_mh *mh;
121042
121043 nh = skb_network_header(skb);
121044 @@ -211,11 +213,11 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
121045 }
121046 }
121047
121048 -static inline int xfrm6_garbage_collect(struct dst_ops *ops)
121049 +static int xfrm6_garbage_collect(struct dst_ops *ops)
121050 {
121051 struct net *net = container_of(ops, struct net, xfrm.xfrm6_dst_ops);
121052
121053 - xfrm6_policy_afinfo.garbage_collect(net);
121054 + xfrm_garbage_collect_deferred(net);
121055 return dst_entries_get_fast(ops) > ops->gc_thresh * 2;
121056 }
121057
121058 @@ -322,19 +324,19 @@ static struct ctl_table xfrm6_policy_table[] = {
121059
121060 static int __net_init xfrm6_net_init(struct net *net)
121061 {
121062 - struct ctl_table *table;
121063 + ctl_table_no_const *table = NULL;
121064 struct ctl_table_header *hdr;
121065
121066 - table = xfrm6_policy_table;
121067 if (!net_eq(net, &init_net)) {
121068 - table = kmemdup(table, sizeof(xfrm6_policy_table), GFP_KERNEL);
121069 + table = kmemdup(xfrm6_policy_table, sizeof(xfrm6_policy_table), GFP_KERNEL);
121070 if (!table)
121071 goto err_alloc;
121072
121073 table[0].data = &net->xfrm.xfrm6_dst_ops.gc_thresh;
121074 - }
121075 + hdr = register_net_sysctl(net, "net/ipv6", table);
121076 + } else
121077 + hdr = register_net_sysctl(net, "net/ipv6", xfrm6_policy_table);
121078
121079 - hdr = register_net_sysctl(net, "net/ipv6", table);
121080 if (!hdr)
121081 goto err_reg;
121082
121083 @@ -342,8 +344,7 @@ static int __net_init xfrm6_net_init(struct net *net)
121084 return 0;
121085
121086 err_reg:
121087 - if (!net_eq(net, &init_net))
121088 - kfree(table);
121089 + kfree(table);
121090 err_alloc:
121091 return -ENOMEM;
121092 }
121093 diff --git a/net/ipx/ipx_proc.c b/net/ipx/ipx_proc.c
121094 index c1d247e..9e5949d 100644
121095 --- a/net/ipx/ipx_proc.c
121096 +++ b/net/ipx/ipx_proc.c
121097 @@ -289,7 +289,7 @@ int __init ipx_proc_init(void)
121098 struct proc_dir_entry *p;
121099 int rc = -ENOMEM;
121100
121101 - ipx_proc_dir = proc_mkdir("ipx", init_net.proc_net);
121102 + ipx_proc_dir = proc_mkdir_restrict("ipx", init_net.proc_net);
121103
121104 if (!ipx_proc_dir)
121105 goto out;
121106 diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
121107 index 683346d..cb0e12d 100644
121108 --- a/net/irda/ircomm/ircomm_tty.c
121109 +++ b/net/irda/ircomm/ircomm_tty.c
121110 @@ -310,10 +310,10 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
121111 add_wait_queue(&port->open_wait, &wait);
121112
121113 pr_debug("%s(%d):block_til_ready before block on %s open_count=%d\n",
121114 - __FILE__, __LINE__, tty->driver->name, port->count);
121115 + __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
121116
121117 spin_lock_irqsave(&port->lock, flags);
121118 - port->count--;
121119 + atomic_dec(&port->count);
121120 port->blocked_open++;
121121 spin_unlock_irqrestore(&port->lock, flags);
121122
121123 @@ -348,7 +348,7 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
121124 }
121125
121126 pr_debug("%s(%d):block_til_ready blocking on %s open_count=%d\n",
121127 - __FILE__, __LINE__, tty->driver->name, port->count);
121128 + __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
121129
121130 schedule();
121131 }
121132 @@ -358,12 +358,12 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
121133
121134 spin_lock_irqsave(&port->lock, flags);
121135 if (!tty_hung_up_p(filp))
121136 - port->count++;
121137 + atomic_inc(&port->count);
121138 port->blocked_open--;
121139 spin_unlock_irqrestore(&port->lock, flags);
121140
121141 pr_debug("%s(%d):block_til_ready after blocking on %s open_count=%d\n",
121142 - __FILE__, __LINE__, tty->driver->name, port->count);
121143 + __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
121144
121145 if (!retval)
121146 port->flags |= ASYNC_NORMAL_ACTIVE;
121147 @@ -433,12 +433,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp)
121148
121149 /* ++ is not atomic, so this should be protected - Jean II */
121150 spin_lock_irqsave(&self->port.lock, flags);
121151 - self->port.count++;
121152 + atomic_inc(&self->port.count);
121153 spin_unlock_irqrestore(&self->port.lock, flags);
121154 tty_port_tty_set(&self->port, tty);
121155
121156 pr_debug("%s(), %s%d, count = %d\n", __func__ , tty->driver->name,
121157 - self->line, self->port.count);
121158 + self->line, atomic_read(&self->port.count));
121159
121160 /* Not really used by us, but lets do it anyway */
121161 self->port.low_latency = (self->port.flags & ASYNC_LOW_LATENCY) ? 1 : 0;
121162 @@ -961,7 +961,7 @@ static void ircomm_tty_hangup(struct tty_struct *tty)
121163 tty_kref_put(port->tty);
121164 }
121165 port->tty = NULL;
121166 - port->count = 0;
121167 + atomic_set(&port->count, 0);
121168 spin_unlock_irqrestore(&port->lock, flags);
121169
121170 wake_up_interruptible(&port->open_wait);
121171 @@ -1308,7 +1308,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m)
121172 seq_putc(m, '\n');
121173
121174 seq_printf(m, "Role: %s\n", self->client ? "client" : "server");
121175 - seq_printf(m, "Open count: %d\n", self->port.count);
121176 + seq_printf(m, "Open count: %d\n", atomic_read(&self->port.count));
121177 seq_printf(m, "Max data size: %d\n", self->max_data_size);
121178 seq_printf(m, "Max header size: %d\n", self->max_header_size);
121179
121180 diff --git a/net/irda/irproc.c b/net/irda/irproc.c
121181 index b9ac598..f88cc56 100644
121182 --- a/net/irda/irproc.c
121183 +++ b/net/irda/irproc.c
121184 @@ -66,7 +66,7 @@ void __init irda_proc_register(void)
121185 {
121186 int i;
121187
121188 - proc_irda = proc_mkdir("irda", init_net.proc_net);
121189 + proc_irda = proc_mkdir_restrict("irda", init_net.proc_net);
121190 if (proc_irda == NULL)
121191 return;
121192
121193 diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
121194 index 918151c..5bbe95a 100644
121195 --- a/net/iucv/af_iucv.c
121196 +++ b/net/iucv/af_iucv.c
121197 @@ -686,10 +686,10 @@ static void __iucv_auto_name(struct iucv_sock *iucv)
121198 {
121199 char name[12];
121200
121201 - sprintf(name, "%08x", atomic_inc_return(&iucv_sk_list.autobind_name));
121202 + sprintf(name, "%08x", atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
121203 while (__iucv_get_sock_by_name(name)) {
121204 sprintf(name, "%08x",
121205 - atomic_inc_return(&iucv_sk_list.autobind_name));
121206 + atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
121207 }
121208 memcpy(iucv->src_name, name, 8);
121209 }
121210 diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c
121211 index 2a6a1fd..6c112b0 100644
121212 --- a/net/iucv/iucv.c
121213 +++ b/net/iucv/iucv.c
121214 @@ -702,7 +702,7 @@ static int iucv_cpu_notify(struct notifier_block *self,
121215 return NOTIFY_OK;
121216 }
121217
121218 -static struct notifier_block __refdata iucv_cpu_notifier = {
121219 +static struct notifier_block iucv_cpu_notifier = {
121220 .notifier_call = iucv_cpu_notify,
121221 };
121222
121223 diff --git a/net/key/af_key.c b/net/key/af_key.c
121224 index 83a7068..facf2f0 100644
121225 --- a/net/key/af_key.c
121226 +++ b/net/key/af_key.c
121227 @@ -3050,10 +3050,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
121228 static u32 get_acqseq(void)
121229 {
121230 u32 res;
121231 - static atomic_t acqseq;
121232 + static atomic_unchecked_t acqseq;
121233
121234 do {
121235 - res = atomic_inc_return(&acqseq);
121236 + res = atomic_inc_return_unchecked(&acqseq);
121237 } while (!res);
121238 return res;
121239 }
121240 diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
121241 index 4b55287..bd247f7 100644
121242 --- a/net/l2tp/l2tp_eth.c
121243 +++ b/net/l2tp/l2tp_eth.c
121244 @@ -42,12 +42,12 @@ struct l2tp_eth {
121245 struct sock *tunnel_sock;
121246 struct l2tp_session *session;
121247 struct list_head list;
121248 - atomic_long_t tx_bytes;
121249 - atomic_long_t tx_packets;
121250 - atomic_long_t tx_dropped;
121251 - atomic_long_t rx_bytes;
121252 - atomic_long_t rx_packets;
121253 - atomic_long_t rx_errors;
121254 + atomic_long_unchecked_t tx_bytes;
121255 + atomic_long_unchecked_t tx_packets;
121256 + atomic_long_unchecked_t tx_dropped;
121257 + atomic_long_unchecked_t rx_bytes;
121258 + atomic_long_unchecked_t rx_packets;
121259 + atomic_long_unchecked_t rx_errors;
121260 };
121261
121262 /* via l2tp_session_priv() */
121263 @@ -98,10 +98,10 @@ static int l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev)
121264 int ret = l2tp_xmit_skb(session, skb, session->hdr_len);
121265
121266 if (likely(ret == NET_XMIT_SUCCESS)) {
121267 - atomic_long_add(len, &priv->tx_bytes);
121268 - atomic_long_inc(&priv->tx_packets);
121269 + atomic_long_add_unchecked(len, &priv->tx_bytes);
121270 + atomic_long_inc_unchecked(&priv->tx_packets);
121271 } else {
121272 - atomic_long_inc(&priv->tx_dropped);
121273 + atomic_long_inc_unchecked(&priv->tx_dropped);
121274 }
121275 return NETDEV_TX_OK;
121276 }
121277 @@ -111,12 +111,12 @@ static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev,
121278 {
121279 struct l2tp_eth *priv = netdev_priv(dev);
121280
121281 - stats->tx_bytes = atomic_long_read(&priv->tx_bytes);
121282 - stats->tx_packets = atomic_long_read(&priv->tx_packets);
121283 - stats->tx_dropped = atomic_long_read(&priv->tx_dropped);
121284 - stats->rx_bytes = atomic_long_read(&priv->rx_bytes);
121285 - stats->rx_packets = atomic_long_read(&priv->rx_packets);
121286 - stats->rx_errors = atomic_long_read(&priv->rx_errors);
121287 + stats->tx_bytes = atomic_long_read_unchecked(&priv->tx_bytes);
121288 + stats->tx_packets = atomic_long_read_unchecked(&priv->tx_packets);
121289 + stats->tx_dropped = atomic_long_read_unchecked(&priv->tx_dropped);
121290 + stats->rx_bytes = atomic_long_read_unchecked(&priv->rx_bytes);
121291 + stats->rx_packets = atomic_long_read_unchecked(&priv->rx_packets);
121292 + stats->rx_errors = atomic_long_read_unchecked(&priv->rx_errors);
121293 return stats;
121294 }
121295
121296 @@ -167,15 +167,15 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
121297 nf_reset(skb);
121298
121299 if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) {
121300 - atomic_long_inc(&priv->rx_packets);
121301 - atomic_long_add(data_len, &priv->rx_bytes);
121302 + atomic_long_inc_unchecked(&priv->rx_packets);
121303 + atomic_long_add_unchecked(data_len, &priv->rx_bytes);
121304 } else {
121305 - atomic_long_inc(&priv->rx_errors);
121306 + atomic_long_inc_unchecked(&priv->rx_errors);
121307 }
121308 return;
121309
121310 error:
121311 - atomic_long_inc(&priv->rx_errors);
121312 + atomic_long_inc_unchecked(&priv->rx_errors);
121313 kfree_skb(skb);
121314 }
121315
121316 diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
121317 index 7964993..2c48a3a 100644
121318 --- a/net/l2tp/l2tp_ip.c
121319 +++ b/net/l2tp/l2tp_ip.c
121320 @@ -608,7 +608,7 @@ static struct inet_protosw l2tp_ip_protosw = {
121321 .ops = &l2tp_ip_ops,
121322 };
121323
121324 -static struct net_protocol l2tp_ip_protocol __read_mostly = {
121325 +static const struct net_protocol l2tp_ip_protocol = {
121326 .handler = l2tp_ip_recv,
121327 .netns_ok = 1,
121328 };
121329 diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c
121330 index d1ded37..c0d1e49 100644
121331 --- a/net/l2tp/l2tp_ip6.c
121332 +++ b/net/l2tp/l2tp_ip6.c
121333 @@ -755,7 +755,7 @@ static struct inet_protosw l2tp_ip6_protosw = {
121334 .ops = &l2tp_ip6_ops,
121335 };
121336
121337 -static struct inet6_protocol l2tp_ip6_protocol __read_mostly = {
121338 +static const struct inet6_protocol l2tp_ip6_protocol = {
121339 .handler = l2tp_ip6_recv,
121340 };
121341
121342 diff --git a/net/llc/llc_proc.c b/net/llc/llc_proc.c
121343 index 1a3c7e0..80f8b0c 100644
121344 --- a/net/llc/llc_proc.c
121345 +++ b/net/llc/llc_proc.c
121346 @@ -247,7 +247,7 @@ int __init llc_proc_init(void)
121347 int rc = -ENOMEM;
121348 struct proc_dir_entry *p;
121349
121350 - llc_proc_dir = proc_mkdir("llc", init_net.proc_net);
121351 + llc_proc_dir = proc_mkdir_restrict("llc", init_net.proc_net);
121352 if (!llc_proc_dir)
121353 goto out;
121354
121355 diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
121356 index bf7023f..86a5bc6 100644
121357 --- a/net/mac80211/cfg.c
121358 +++ b/net/mac80211/cfg.c
121359 @@ -580,7 +580,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
121360 ret = ieee80211_vif_use_channel(sdata, chandef,
121361 IEEE80211_CHANCTX_EXCLUSIVE);
121362 }
121363 - } else if (local->open_count == local->monitors) {
121364 + } else if (local_read(&local->open_count) == local->monitors) {
121365 local->_oper_chandef = *chandef;
121366 ieee80211_hw_config(local, 0);
121367 }
121368 @@ -3488,7 +3488,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
121369 else
121370 local->probe_req_reg--;
121371
121372 - if (!local->open_count)
121373 + if (!local_read(&local->open_count))
121374 break;
121375
121376 ieee80211_queue_work(&local->hw, &local->reconfig_filter);
121377 @@ -3637,8 +3637,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
121378 if (chanctx_conf) {
121379 *chandef = sdata->vif.bss_conf.chandef;
121380 ret = 0;
121381 - } else if (local->open_count > 0 &&
121382 - local->open_count == local->monitors &&
121383 + } else if (local_read(&local->open_count) > 0 &&
121384 + local_read(&local->open_count) == local->monitors &&
121385 sdata->vif.type == NL80211_IFTYPE_MONITOR) {
121386 if (local->use_chanctx)
121387 *chandef = local->monitor_chandef;
121388 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
121389 index b12f615..a264a60 100644
121390 --- a/net/mac80211/ieee80211_i.h
121391 +++ b/net/mac80211/ieee80211_i.h
121392 @@ -30,6 +30,7 @@
121393 #include <net/ieee80211_radiotap.h>
121394 #include <net/cfg80211.h>
121395 #include <net/mac80211.h>
121396 +#include <asm/local.h>
121397 #include "key.h"
121398 #include "sta_info.h"
121399 #include "debug.h"
121400 @@ -1112,7 +1113,7 @@ struct ieee80211_local {
121401 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
121402 spinlock_t queue_stop_reason_lock;
121403
121404 - int open_count;
121405 + local_t open_count;
121406 int monitors, cooked_mntrs;
121407 /* number of interfaces with corresponding FIF_ flags */
121408 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
121409 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
121410 index 553ac6d..d2480da 100644
121411 --- a/net/mac80211/iface.c
121412 +++ b/net/mac80211/iface.c
121413 @@ -550,7 +550,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
121414 break;
121415 }
121416
121417 - if (local->open_count == 0) {
121418 + if (local_read(&local->open_count) == 0) {
121419 res = drv_start(local);
121420 if (res)
121421 goto err_del_bss;
121422 @@ -597,7 +597,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
121423 res = drv_add_interface(local, sdata);
121424 if (res)
121425 goto err_stop;
121426 - } else if (local->monitors == 0 && local->open_count == 0) {
121427 + } else if (local->monitors == 0 && local_read(&local->open_count) == 0) {
121428 res = ieee80211_add_virtual_monitor(local);
121429 if (res)
121430 goto err_stop;
121431 @@ -704,7 +704,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
121432 atomic_inc(&local->iff_allmultis);
121433
121434 if (coming_up)
121435 - local->open_count++;
121436 + local_inc(&local->open_count);
121437
121438 if (hw_reconf_flags)
121439 ieee80211_hw_config(local, hw_reconf_flags);
121440 @@ -742,7 +742,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
121441 err_del_interface:
121442 drv_remove_interface(local, sdata);
121443 err_stop:
121444 - if (!local->open_count)
121445 + if (!local_read(&local->open_count))
121446 drv_stop(local);
121447 err_del_bss:
121448 sdata->bss = NULL;
121449 @@ -909,7 +909,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
121450 }
121451
121452 if (going_down)
121453 - local->open_count--;
121454 + local_dec(&local->open_count);
121455
121456 switch (sdata->vif.type) {
121457 case NL80211_IFTYPE_AP_VLAN:
121458 @@ -978,7 +978,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
121459 atomic_set(&sdata->txqs_len[txqi->txq.ac], 0);
121460 }
121461
121462 - if (local->open_count == 0)
121463 + if (local_read(&local->open_count) == 0)
121464 ieee80211_clear_tx_pending(local);
121465
121466 /*
121467 @@ -1021,7 +1021,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
121468 if (cancel_scan)
121469 flush_delayed_work(&local->scan_work);
121470
121471 - if (local->open_count == 0) {
121472 + if (local_read(&local->open_count) == 0) {
121473 ieee80211_stop_device(local);
121474
121475 /* no reconfiguring after stop! */
121476 @@ -1032,7 +1032,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
121477 ieee80211_configure_filter(local);
121478 ieee80211_hw_config(local, hw_reconf_flags);
121479
121480 - if (local->monitors == local->open_count)
121481 + if (local->monitors == local_read(&local->open_count))
121482 ieee80211_add_virtual_monitor(local);
121483 }
121484
121485 @@ -1884,8 +1884,8 @@ void ieee80211_remove_interfaces(struct ieee80211_local *local)
121486 */
121487 cfg80211_shutdown_all_interfaces(local->hw.wiphy);
121488
121489 - WARN(local->open_count, "%s: open count remains %d\n",
121490 - wiphy_name(local->hw.wiphy), local->open_count);
121491 + WARN(local_read(&local->open_count), "%s: open count remains %ld\n",
121492 + wiphy_name(local->hw.wiphy), local_read(&local->open_count));
121493
121494 mutex_lock(&local->iflist_mtx);
121495 list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
121496 diff --git a/net/mac80211/main.c b/net/mac80211/main.c
121497 index 3c63468..b5c285f 100644
121498 --- a/net/mac80211/main.c
121499 +++ b/net/mac80211/main.c
121500 @@ -172,7 +172,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
121501 changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL |
121502 IEEE80211_CONF_CHANGE_POWER);
121503
121504 - if (changed && local->open_count) {
121505 + if (changed && local_read(&local->open_count)) {
121506 ret = drv_config(local, changed);
121507 /*
121508 * Goal:
121509 diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
121510 index b676b9f..395dd95 100644
121511 --- a/net/mac80211/pm.c
121512 +++ b/net/mac80211/pm.c
121513 @@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
121514 struct ieee80211_sub_if_data *sdata;
121515 struct sta_info *sta;
121516
121517 - if (!local->open_count)
121518 + if (!local_read(&local->open_count))
121519 goto suspend;
121520
121521 ieee80211_scan_cancel(local);
121522 @@ -166,7 +166,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
121523 WARN_ON(!list_empty(&local->chanctx_list));
121524
121525 /* stop hardware - this must stop RX */
121526 - if (local->open_count)
121527 + if (local_read(&local->open_count))
121528 ieee80211_stop_device(local);
121529
121530 suspend:
121531 diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
121532 index fda33f9..0e7d4c0 100644
121533 --- a/net/mac80211/rate.c
121534 +++ b/net/mac80211/rate.c
121535 @@ -730,7 +730,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
121536
121537 ASSERT_RTNL();
121538
121539 - if (local->open_count)
121540 + if (local_read(&local->open_count))
121541 return -EBUSY;
121542
121543 if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) {
121544 diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
121545 index 666ddac..0cad93b 100644
121546 --- a/net/mac80211/sta_info.c
121547 +++ b/net/mac80211/sta_info.c
121548 @@ -341,7 +341,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
121549 int size = sizeof(struct txq_info) +
121550 ALIGN(hw->txq_data_size, sizeof(void *));
121551
121552 - txq_data = kcalloc(ARRAY_SIZE(sta->sta.txq), size, gfp);
121553 + txq_data = kcalloc(size, ARRAY_SIZE(sta->sta.txq), gfp);
121554 if (!txq_data)
121555 goto free;
121556
121557 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
121558 index 43e5aad..d117c3a 100644
121559 --- a/net/mac80211/util.c
121560 +++ b/net/mac80211/util.c
121561 @@ -1761,7 +1761,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
121562 bool sched_scan_stopped = false;
121563
121564 /* nothing to do if HW shouldn't run */
121565 - if (!local->open_count)
121566 + if (!local_read(&local->open_count))
121567 goto wake_up;
121568
121569 #ifdef CONFIG_PM
121570 @@ -2033,7 +2033,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
121571 local->in_reconfig = false;
121572 barrier();
121573
121574 - if (local->monitors == local->open_count && local->monitors > 0)
121575 + if (local->monitors == local_read(&local->open_count) && local->monitors > 0)
121576 ieee80211_add_virtual_monitor(local);
121577
121578 /*
121579 @@ -2088,7 +2088,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
121580 * If this is for hw restart things are still running.
121581 * We may want to change that later, however.
121582 */
121583 - if (local->open_count && (!local->suspended || reconfig_due_to_wowlan))
121584 + if (local_read(&local->open_count) && (!local->suspended || reconfig_due_to_wowlan))
121585 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_RESTART);
121586
121587 if (!local->suspended)
121588 @@ -2112,7 +2112,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
121589 flush_delayed_work(&local->scan_work);
121590 }
121591
121592 - if (local->open_count && !reconfig_due_to_wowlan)
121593 + if (local_read(&local->open_count) && !reconfig_due_to_wowlan)
121594 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_SUSPEND);
121595
121596 list_for_each_entry(sdata, &local->interfaces, list) {
121597 diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
121598 index 1f93a59..96faa29 100644
121599 --- a/net/mpls/af_mpls.c
121600 +++ b/net/mpls/af_mpls.c
121601 @@ -456,7 +456,7 @@ static int mpls_dev_sysctl_register(struct net_device *dev,
121602 struct mpls_dev *mdev)
121603 {
121604 char path[sizeof("net/mpls/conf/") + IFNAMSIZ];
121605 - struct ctl_table *table;
121606 + ctl_table_no_const *table;
121607 int i;
121608
121609 table = kmemdup(&mpls_dev_table, sizeof(mpls_dev_table), GFP_KERNEL);
121610 @@ -1025,7 +1025,7 @@ static int mpls_platform_labels(struct ctl_table *table, int write,
121611 struct net *net = table->data;
121612 int platform_labels = net->mpls.platform_labels;
121613 int ret;
121614 - struct ctl_table tmp = {
121615 + ctl_table_no_const tmp = {
121616 .procname = table->procname,
121617 .data = &platform_labels,
121618 .maxlen = sizeof(int),
121619 @@ -1055,7 +1055,7 @@ static const struct ctl_table mpls_table[] = {
121620
121621 static int mpls_net_init(struct net *net)
121622 {
121623 - struct ctl_table *table;
121624 + ctl_table_no_const *table;
121625
121626 net->mpls.platform_labels = 0;
121627 net->mpls.platform_label = NULL;
121628 diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
121629 index 6eae69a..ccccba8 100644
121630 --- a/net/netfilter/Kconfig
121631 +++ b/net/netfilter/Kconfig
121632 @@ -1125,6 +1125,16 @@ config NETFILTER_XT_MATCH_ESP
121633
121634 To compile it as a module, choose M here. If unsure, say N.
121635
121636 +config NETFILTER_XT_MATCH_GRADM
121637 + tristate '"gradm" match support'
121638 + depends on NETFILTER_XTABLES && NETFILTER_ADVANCED
121639 + depends on GRKERNSEC && !GRKERNSEC_NO_RBAC
121640 + ---help---
121641 + The gradm match allows to match on grsecurity RBAC being enabled.
121642 + It is useful when iptables rules are applied early on bootup to
121643 + prevent connections to the machine (except from a trusted host)
121644 + while the RBAC system is disabled.
121645 +
121646 config NETFILTER_XT_MATCH_HASHLIMIT
121647 tristate '"hashlimit" match support'
121648 depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
121649 diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
121650 index 70d026d..c400590 100644
121651 --- a/net/netfilter/Makefile
121652 +++ b/net/netfilter/Makefile
121653 @@ -140,6 +140,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
121654 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
121655 obj-$(CONFIG_NETFILTER_XT_MATCH_ECN) += xt_ecn.o
121656 obj-$(CONFIG_NETFILTER_XT_MATCH_ESP) += xt_esp.o
121657 +obj-$(CONFIG_NETFILTER_XT_MATCH_GRADM) += xt_gradm.o
121658 obj-$(CONFIG_NETFILTER_XT_MATCH_HASHLIMIT) += xt_hashlimit.o
121659 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
121660 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
121661 diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
121662 index 338b404..839dcb0 100644
121663 --- a/net/netfilter/ipset/ip_set_core.c
121664 +++ b/net/netfilter/ipset/ip_set_core.c
121665 @@ -1998,7 +1998,7 @@ done:
121666 return ret;
121667 }
121668
121669 -static struct nf_sockopt_ops so_set __read_mostly = {
121670 +static struct nf_sockopt_ops so_set = {
121671 .pf = PF_INET,
121672 .get_optmin = SO_IP_SET,
121673 .get_optmax = SO_IP_SET + 1,
121674 diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
121675 index b0f7b62..0541842 100644
121676 --- a/net/netfilter/ipvs/ip_vs_conn.c
121677 +++ b/net/netfilter/ipvs/ip_vs_conn.c
121678 @@ -572,7 +572,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
121679 /* Increase the refcnt counter of the dest */
121680 ip_vs_dest_hold(dest);
121681
121682 - conn_flags = atomic_read(&dest->conn_flags);
121683 + conn_flags = atomic_read_unchecked(&dest->conn_flags);
121684 if (cp->protocol != IPPROTO_UDP)
121685 conn_flags &= ~IP_VS_CONN_F_ONE_PACKET;
121686 flags = cp->flags;
121687 @@ -922,7 +922,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af,
121688
121689 cp->control = NULL;
121690 atomic_set(&cp->n_control, 0);
121691 - atomic_set(&cp->in_pkts, 0);
121692 + atomic_set_unchecked(&cp->in_pkts, 0);
121693
121694 cp->packet_xmit = NULL;
121695 cp->app = NULL;
121696 @@ -1229,7 +1229,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
121697
121698 /* Don't drop the entry if its number of incoming packets is not
121699 located in [0, 8] */
121700 - i = atomic_read(&cp->in_pkts);
121701 + i = atomic_read_unchecked(&cp->in_pkts);
121702 if (i > 8 || i < 0) return 0;
121703
121704 if (!todrop_rate[i]) return 0;
121705 diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
121706 index 38fbc19..4272cb4 100644
121707 --- a/net/netfilter/ipvs/ip_vs_core.c
121708 +++ b/net/netfilter/ipvs/ip_vs_core.c
121709 @@ -586,7 +586,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
121710 ret = cp->packet_xmit(skb, cp, pd->pp, iph);
121711 /* do not touch skb anymore */
121712
121713 - atomic_inc(&cp->in_pkts);
121714 + atomic_inc_unchecked(&cp->in_pkts);
121715 ip_vs_conn_put(cp);
121716 return ret;
121717 }
121718 @@ -1762,7 +1762,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
121719 if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
121720 pkts = sysctl_sync_threshold(ipvs);
121721 else
121722 - pkts = atomic_add_return(1, &cp->in_pkts);
121723 + pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
121724
121725 if (ipvs->sync_state & IP_VS_STATE_MASTER)
121726 ip_vs_sync_conn(net, cp, pkts);
121727 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
121728 index 24c5542..e9fd3e5 100644
121729 --- a/net/netfilter/ipvs/ip_vs_ctl.c
121730 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
121731 @@ -814,7 +814,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
121732 */
121733 ip_vs_rs_hash(ipvs, dest);
121734 }
121735 - atomic_set(&dest->conn_flags, conn_flags);
121736 + atomic_set_unchecked(&dest->conn_flags, conn_flags);
121737
121738 /* bind the service */
121739 old_svc = rcu_dereference_protected(dest->svc, 1);
121740 @@ -1694,7 +1694,7 @@ proc_do_sync_ports(struct ctl_table *table, int write,
121741 * align with netns init in ip_vs_control_net_init()
121742 */
121743
121744 -static struct ctl_table vs_vars[] = {
121745 +static ctl_table_no_const vs_vars[] __read_only = {
121746 {
121747 .procname = "amemthresh",
121748 .maxlen = sizeof(int),
121749 @@ -2036,7 +2036,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
121750 " %-7s %-6d %-10d %-10d\n",
121751 &dest->addr.in6,
121752 ntohs(dest->port),
121753 - ip_vs_fwd_name(atomic_read(&dest->conn_flags)),
121754 + ip_vs_fwd_name(atomic_read_unchecked(&dest->conn_flags)),
121755 atomic_read(&dest->weight),
121756 atomic_read(&dest->activeconns),
121757 atomic_read(&dest->inactconns));
121758 @@ -2047,7 +2047,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
121759 "%-7s %-6d %-10d %-10d\n",
121760 ntohl(dest->addr.ip),
121761 ntohs(dest->port),
121762 - ip_vs_fwd_name(atomic_read(&dest->conn_flags)),
121763 + ip_vs_fwd_name(atomic_read_unchecked(&dest->conn_flags)),
121764 atomic_read(&dest->weight),
121765 atomic_read(&dest->activeconns),
121766 atomic_read(&dest->inactconns));
121767 @@ -2546,7 +2546,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get,
121768
121769 entry.addr = dest->addr.ip;
121770 entry.port = dest->port;
121771 - entry.conn_flags = atomic_read(&dest->conn_flags);
121772 + entry.conn_flags = atomic_read_unchecked(&dest->conn_flags);
121773 entry.weight = atomic_read(&dest->weight);
121774 entry.u_threshold = dest->u_threshold;
121775 entry.l_threshold = dest->l_threshold;
121776 @@ -3121,7 +3121,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
121777 if (nla_put(skb, IPVS_DEST_ATTR_ADDR, sizeof(dest->addr), &dest->addr) ||
121778 nla_put_be16(skb, IPVS_DEST_ATTR_PORT, dest->port) ||
121779 nla_put_u32(skb, IPVS_DEST_ATTR_FWD_METHOD,
121780 - (atomic_read(&dest->conn_flags) &
121781 + (atomic_read_unchecked(&dest->conn_flags) &
121782 IP_VS_CONN_F_FWD_MASK)) ||
121783 nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT,
121784 atomic_read(&dest->weight)) ||
121785 @@ -3759,7 +3759,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net)
121786 {
121787 int idx;
121788 struct netns_ipvs *ipvs = net_ipvs(net);
121789 - struct ctl_table *tbl;
121790 + ctl_table_no_const *tbl;
121791
121792 atomic_set(&ipvs->dropentry, 0);
121793 spin_lock_init(&ipvs->dropentry_lock);
121794 diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c
121795 index 127f140..553d652 100644
121796 --- a/net/netfilter/ipvs/ip_vs_lblc.c
121797 +++ b/net/netfilter/ipvs/ip_vs_lblc.c
121798 @@ -118,7 +118,7 @@ struct ip_vs_lblc_table {
121799 * IPVS LBLC sysctl table
121800 */
121801 #ifdef CONFIG_SYSCTL
121802 -static struct ctl_table vs_vars_table[] = {
121803 +static ctl_table_no_const vs_vars_table[] __read_only = {
121804 {
121805 .procname = "lblc_expiration",
121806 .data = NULL,
121807 diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c
121808 index 2229d2d..b32b785 100644
121809 --- a/net/netfilter/ipvs/ip_vs_lblcr.c
121810 +++ b/net/netfilter/ipvs/ip_vs_lblcr.c
121811 @@ -289,7 +289,7 @@ struct ip_vs_lblcr_table {
121812 * IPVS LBLCR sysctl table
121813 */
121814
121815 -static struct ctl_table vs_vars_table[] = {
121816 +static ctl_table_no_const vs_vars_table[] __read_only = {
121817 {
121818 .procname = "lblcr_expiration",
121819 .data = NULL,
121820 diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
121821 index d99ad93..09bd6dc 100644
121822 --- a/net/netfilter/ipvs/ip_vs_sync.c
121823 +++ b/net/netfilter/ipvs/ip_vs_sync.c
121824 @@ -609,7 +609,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp,
121825 cp = cp->control;
121826 if (cp) {
121827 if (cp->flags & IP_VS_CONN_F_TEMPLATE)
121828 - pkts = atomic_add_return(1, &cp->in_pkts);
121829 + pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
121830 else
121831 pkts = sysctl_sync_threshold(ipvs);
121832 ip_vs_sync_conn(net, cp, pkts);
121833 @@ -771,7 +771,7 @@ control:
121834 if (!cp)
121835 return;
121836 if (cp->flags & IP_VS_CONN_F_TEMPLATE)
121837 - pkts = atomic_add_return(1, &cp->in_pkts);
121838 + pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
121839 else
121840 pkts = sysctl_sync_threshold(ipvs);
121841 goto sloop;
121842 @@ -919,7 +919,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param,
121843
121844 if (opt)
121845 memcpy(&cp->in_seq, opt, sizeof(*opt));
121846 - atomic_set(&cp->in_pkts, sysctl_sync_threshold(ipvs));
121847 + atomic_set_unchecked(&cp->in_pkts, sysctl_sync_threshold(ipvs));
121848 cp->state = state;
121849 cp->old_state = cp->state;
121850 /*
121851 diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
121852 index 258a0b0..2082f50 100644
121853 --- a/net/netfilter/ipvs/ip_vs_xmit.c
121854 +++ b/net/netfilter/ipvs/ip_vs_xmit.c
121855 @@ -1259,7 +1259,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
121856 else
121857 rc = NF_ACCEPT;
121858 /* do not touch skb anymore */
121859 - atomic_inc(&cp->in_pkts);
121860 + atomic_inc_unchecked(&cp->in_pkts);
121861 goto out;
121862 }
121863
121864 @@ -1352,7 +1352,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
121865 else
121866 rc = NF_ACCEPT;
121867 /* do not touch skb anymore */
121868 - atomic_inc(&cp->in_pkts);
121869 + atomic_inc_unchecked(&cp->in_pkts);
121870 goto out;
121871 }
121872
121873 diff --git a/net/netfilter/nf_conntrack_acct.c b/net/netfilter/nf_conntrack_acct.c
121874 index 45da11a..ef3e5dc 100644
121875 --- a/net/netfilter/nf_conntrack_acct.c
121876 +++ b/net/netfilter/nf_conntrack_acct.c
121877 @@ -64,7 +64,7 @@ static struct nf_ct_ext_type acct_extend __read_mostly = {
121878 #ifdef CONFIG_SYSCTL
121879 static int nf_conntrack_acct_init_sysctl(struct net *net)
121880 {
121881 - struct ctl_table *table;
121882 + ctl_table_no_const *table;
121883
121884 table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table),
121885 GFP_KERNEL);
121886 diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
121887 index 3c20d02..b2c15f4 100644
121888 --- a/net/netfilter/nf_conntrack_core.c
121889 +++ b/net/netfilter/nf_conntrack_core.c
121890 @@ -320,12 +320,13 @@ out_free:
121891 }
121892 EXPORT_SYMBOL_GPL(nf_ct_tmpl_alloc);
121893
121894 -static void nf_ct_tmpl_free(struct nf_conn *tmpl)
121895 +void nf_ct_tmpl_free(struct nf_conn *tmpl)
121896 {
121897 nf_ct_ext_destroy(tmpl);
121898 nf_ct_ext_free(tmpl);
121899 kfree(tmpl);
121900 }
121901 +EXPORT_SYMBOL_GPL(nf_ct_tmpl_free);
121902
121903 static void
121904 destroy_conntrack(struct nf_conntrack *nfct)
121905 @@ -1753,6 +1754,10 @@ void nf_conntrack_init_end(void)
121906 #define DYING_NULLS_VAL ((1<<30)+1)
121907 #define TEMPLATE_NULLS_VAL ((1<<30)+2)
121908
121909 +#ifdef CONFIG_GRKERNSEC_HIDESYM
121910 +static atomic_unchecked_t conntrack_cache_id = ATOMIC_INIT(0);
121911 +#endif
121912 +
121913 int nf_conntrack_init_net(struct net *net)
121914 {
121915 int ret = -ENOMEM;
121916 @@ -1777,7 +1782,11 @@ int nf_conntrack_init_net(struct net *net)
121917 if (!net->ct.stat)
121918 goto err_pcpu_lists;
121919
121920 +#ifdef CONFIG_GRKERNSEC_HIDESYM
121921 + net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08x", atomic_inc_return_unchecked(&conntrack_cache_id));
121922 +#else
121923 net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net);
121924 +#endif
121925 if (!net->ct.slabname)
121926 goto err_slabname;
121927
121928 diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c
121929 index 4e78c57..ec8fb74 100644
121930 --- a/net/netfilter/nf_conntrack_ecache.c
121931 +++ b/net/netfilter/nf_conntrack_ecache.c
121932 @@ -264,7 +264,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = {
121933 #ifdef CONFIG_SYSCTL
121934 static int nf_conntrack_event_init_sysctl(struct net *net)
121935 {
121936 - struct ctl_table *table;
121937 + ctl_table_no_const *table;
121938
121939 table = kmemdup(event_sysctl_table, sizeof(event_sysctl_table),
121940 GFP_KERNEL);
121941 diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c
121942 index bd9d315..989947e 100644
121943 --- a/net/netfilter/nf_conntrack_helper.c
121944 +++ b/net/netfilter/nf_conntrack_helper.c
121945 @@ -57,7 +57,7 @@ static struct ctl_table helper_sysctl_table[] = {
121946
121947 static int nf_conntrack_helper_init_sysctl(struct net *net)
121948 {
121949 - struct ctl_table *table;
121950 + ctl_table_no_const *table;
121951
121952 table = kmemdup(helper_sysctl_table, sizeof(helper_sysctl_table),
121953 GFP_KERNEL);
121954 diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c
121955 index b65d586..beec902 100644
121956 --- a/net/netfilter/nf_conntrack_proto.c
121957 +++ b/net/netfilter/nf_conntrack_proto.c
121958 @@ -52,7 +52,7 @@ nf_ct_register_sysctl(struct net *net,
121959
121960 static void
121961 nf_ct_unregister_sysctl(struct ctl_table_header **header,
121962 - struct ctl_table **table,
121963 + ctl_table_no_const **table,
121964 unsigned int users)
121965 {
121966 if (users > 0)
121967 diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
121968 index fc823fa..8311af3 100644
121969 --- a/net/netfilter/nf_conntrack_standalone.c
121970 +++ b/net/netfilter/nf_conntrack_standalone.c
121971 @@ -468,7 +468,7 @@ static struct ctl_table nf_ct_netfilter_table[] = {
121972
121973 static int nf_conntrack_standalone_init_sysctl(struct net *net)
121974 {
121975 - struct ctl_table *table;
121976 + ctl_table_no_const *table;
121977
121978 table = kmemdup(nf_ct_sysctl_table, sizeof(nf_ct_sysctl_table),
121979 GFP_KERNEL);
121980 diff --git a/net/netfilter/nf_conntrack_timestamp.c b/net/netfilter/nf_conntrack_timestamp.c
121981 index 7a394df..bd91a8a 100644
121982 --- a/net/netfilter/nf_conntrack_timestamp.c
121983 +++ b/net/netfilter/nf_conntrack_timestamp.c
121984 @@ -42,7 +42,7 @@ static struct nf_ct_ext_type tstamp_extend __read_mostly = {
121985 #ifdef CONFIG_SYSCTL
121986 static int nf_conntrack_tstamp_init_sysctl(struct net *net)
121987 {
121988 - struct ctl_table *table;
121989 + ctl_table_no_const *table;
121990
121991 table = kmemdup(tstamp_sysctl_table, sizeof(tstamp_sysctl_table),
121992 GFP_KERNEL);
121993 diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
121994 index 675d12c..b36e825 100644
121995 --- a/net/netfilter/nf_log.c
121996 +++ b/net/netfilter/nf_log.c
121997 @@ -386,7 +386,7 @@ static const struct file_operations nflog_file_ops = {
121998
121999 #ifdef CONFIG_SYSCTL
122000 static char nf_log_sysctl_fnames[NFPROTO_NUMPROTO-NFPROTO_UNSPEC][3];
122001 -static struct ctl_table nf_log_sysctl_table[NFPROTO_NUMPROTO+1];
122002 +static ctl_table_no_const nf_log_sysctl_table[NFPROTO_NUMPROTO+1] __read_only;
122003
122004 static int nf_log_proc_dostring(struct ctl_table *table, int write,
122005 void __user *buffer, size_t *lenp, loff_t *ppos)
122006 @@ -417,13 +417,15 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
122007 rcu_assign_pointer(net->nf.nf_loggers[tindex], logger);
122008 mutex_unlock(&nf_log_mutex);
122009 } else {
122010 + ctl_table_no_const nf_log_table = *table;
122011 +
122012 mutex_lock(&nf_log_mutex);
122013 logger = nft_log_dereference(net->nf.nf_loggers[tindex]);
122014 if (!logger)
122015 - table->data = "NONE";
122016 + nf_log_table.data = "NONE";
122017 else
122018 - table->data = logger->name;
122019 - r = proc_dostring(table, write, buffer, lenp, ppos);
122020 + nf_log_table.data = logger->name;
122021 + r = proc_dostring(&nf_log_table, write, buffer, lenp, ppos);
122022 mutex_unlock(&nf_log_mutex);
122023 }
122024
122025 diff --git a/net/netfilter/nf_sockopt.c b/net/netfilter/nf_sockopt.c
122026 index c68c1e5..8b5d670 100644
122027 --- a/net/netfilter/nf_sockopt.c
122028 +++ b/net/netfilter/nf_sockopt.c
122029 @@ -43,7 +43,7 @@ int nf_register_sockopt(struct nf_sockopt_ops *reg)
122030 }
122031 }
122032
122033 - list_add(&reg->list, &nf_sockopts);
122034 + pax_list_add((struct list_head *)&reg->list, &nf_sockopts);
122035 out:
122036 mutex_unlock(&nf_sockopt_mutex);
122037 return ret;
122038 @@ -53,7 +53,7 @@ EXPORT_SYMBOL(nf_register_sockopt);
122039 void nf_unregister_sockopt(struct nf_sockopt_ops *reg)
122040 {
122041 mutex_lock(&nf_sockopt_mutex);
122042 - list_del(&reg->list);
122043 + pax_list_del((struct list_head *)&reg->list);
122044 mutex_unlock(&nf_sockopt_mutex);
122045 }
122046 EXPORT_SYMBOL(nf_unregister_sockopt);
122047 diff --git a/net/netfilter/nf_synproxy_core.c b/net/netfilter/nf_synproxy_core.c
122048 index d7f1685..d6ee8f8 100644
122049 --- a/net/netfilter/nf_synproxy_core.c
122050 +++ b/net/netfilter/nf_synproxy_core.c
122051 @@ -378,7 +378,7 @@ static int __net_init synproxy_net_init(struct net *net)
122052 err3:
122053 free_percpu(snet->stats);
122054 err2:
122055 - nf_conntrack_free(ct);
122056 + nf_ct_tmpl_free(ct);
122057 err1:
122058 return err;
122059 }
122060 diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
122061 index 4670821..a6c3c47d 100644
122062 --- a/net/netfilter/nfnetlink_log.c
122063 +++ b/net/netfilter/nfnetlink_log.c
122064 @@ -84,7 +84,7 @@ static int nfnl_log_net_id __read_mostly;
122065 struct nfnl_log_net {
122066 spinlock_t instances_lock;
122067 struct hlist_head instance_table[INSTANCE_BUCKETS];
122068 - atomic_t global_seq;
122069 + atomic_unchecked_t global_seq;
122070 };
122071
122072 static struct nfnl_log_net *nfnl_log_pernet(struct net *net)
122073 @@ -572,7 +572,7 @@ __build_packet_message(struct nfnl_log_net *log,
122074 /* global sequence number */
122075 if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) &&
122076 nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL,
122077 - htonl(atomic_inc_return(&log->global_seq))))
122078 + htonl(atomic_inc_return_unchecked(&log->global_seq))))
122079 goto nla_put_failure;
122080
122081 if (data_len) {
122082 diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c
122083 index 66def31..d64a66d 100644
122084 --- a/net/netfilter/nft_compat.c
122085 +++ b/net/netfilter/nft_compat.c
122086 @@ -322,14 +322,7 @@ static void nft_match_eval(const struct nft_expr *expr,
122087 return;
122088 }
122089
122090 - switch (ret ? 1 : 0) {
122091 - case 1:
122092 - regs->verdict.code = NFT_CONTINUE;
122093 - break;
122094 - case 0:
122095 - regs->verdict.code = NFT_BREAK;
122096 - break;
122097 - }
122098 + regs->verdict.code = ret ? NFT_CONTINUE : NFT_BREAK;
122099 }
122100
122101 static const struct nla_policy nft_match_policy[NFTA_MATCH_MAX + 1] = {
122102 diff --git a/net/netfilter/xt_CT.c b/net/netfilter/xt_CT.c
122103 index 43ddeee..f3377ce 100644
122104 --- a/net/netfilter/xt_CT.c
122105 +++ b/net/netfilter/xt_CT.c
122106 @@ -233,7 +233,7 @@ out:
122107 return 0;
122108
122109 err3:
122110 - nf_conntrack_free(ct);
122111 + nf_ct_tmpl_free(ct);
122112 err2:
122113 nf_ct_l3proto_module_put(par->family);
122114 err1:
122115 diff --git a/net/netfilter/xt_gradm.c b/net/netfilter/xt_gradm.c
122116 new file mode 100644
122117 index 0000000..c566332
122118 --- /dev/null
122119 +++ b/net/netfilter/xt_gradm.c
122120 @@ -0,0 +1,51 @@
122121 +/*
122122 + * gradm match for netfilter
122123 + * Copyright © Zbigniew Krzystolik, 2010
122124 + *
122125 + * This program is free software; you can redistribute it and/or modify
122126 + * it under the terms of the GNU General Public License; either version
122127 + * 2 or 3 as published by the Free Software Foundation.
122128 + */
122129 +#include <linux/module.h>
122130 +#include <linux/moduleparam.h>
122131 +#include <linux/skbuff.h>
122132 +#include <linux/netfilter/x_tables.h>
122133 +#include <linux/grsecurity.h>
122134 +#include <linux/netfilter/xt_gradm.h>
122135 +
122136 +static bool
122137 +gradm_mt(const struct sk_buff *skb, struct xt_action_param *par)
122138 +{
122139 + const struct xt_gradm_mtinfo *info = par->matchinfo;
122140 + bool retval = false;
122141 + if (gr_acl_is_enabled())
122142 + retval = true;
122143 + return retval ^ info->invflags;
122144 +}
122145 +
122146 +static struct xt_match gradm_mt_reg __read_mostly = {
122147 + .name = "gradm",
122148 + .revision = 0,
122149 + .family = NFPROTO_UNSPEC,
122150 + .match = gradm_mt,
122151 + .matchsize = XT_ALIGN(sizeof(struct xt_gradm_mtinfo)),
122152 + .me = THIS_MODULE,
122153 +};
122154 +
122155 +static int __init gradm_mt_init(void)
122156 +{
122157 + return xt_register_match(&gradm_mt_reg);
122158 +}
122159 +
122160 +static void __exit gradm_mt_exit(void)
122161 +{
122162 + xt_unregister_match(&gradm_mt_reg);
122163 +}
122164 +
122165 +module_init(gradm_mt_init);
122166 +module_exit(gradm_mt_exit);
122167 +MODULE_AUTHOR("Zbigniew Krzystolik <zbyniu@destrukcja.pl>");
122168 +MODULE_DESCRIPTION("Xtables: Grsecurity RBAC match");
122169 +MODULE_LICENSE("GPL");
122170 +MODULE_ALIAS("ipt_gradm");
122171 +MODULE_ALIAS("ip6t_gradm");
122172 diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
122173 index 1786968..1ec6dac 100644
122174 --- a/net/netfilter/xt_hashlimit.c
122175 +++ b/net/netfilter/xt_hashlimit.c
122176 @@ -869,11 +869,11 @@ static int __net_init hashlimit_proc_net_init(struct net *net)
122177 {
122178 struct hashlimit_net *hashlimit_net = hashlimit_pernet(net);
122179
122180 - hashlimit_net->ipt_hashlimit = proc_mkdir("ipt_hashlimit", net->proc_net);
122181 + hashlimit_net->ipt_hashlimit = proc_mkdir_restrict("ipt_hashlimit", net->proc_net);
122182 if (!hashlimit_net->ipt_hashlimit)
122183 return -ENOMEM;
122184 #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
122185 - hashlimit_net->ip6t_hashlimit = proc_mkdir("ip6t_hashlimit", net->proc_net);
122186 + hashlimit_net->ip6t_hashlimit = proc_mkdir_restrict("ip6t_hashlimit", net->proc_net);
122187 if (!hashlimit_net->ip6t_hashlimit) {
122188 remove_proc_entry("ipt_hashlimit", net->proc_net);
122189 return -ENOMEM;
122190 diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c
122191 index 45e1b30..a764f94 100644
122192 --- a/net/netfilter/xt_recent.c
122193 +++ b/net/netfilter/xt_recent.c
122194 @@ -642,7 +642,7 @@ static int __net_init recent_proc_net_init(struct net *net)
122195 {
122196 struct recent_net *recent_net = recent_pernet(net);
122197
122198 - recent_net->xt_recent = proc_mkdir("xt_recent", net->proc_net);
122199 + recent_net->xt_recent = proc_mkdir_restrict("xt_recent", net->proc_net);
122200 if (!recent_net->xt_recent)
122201 return -ENOMEM;
122202 return 0;
122203 diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c
122204 index 11de55e..f25e448 100644
122205 --- a/net/netfilter/xt_statistic.c
122206 +++ b/net/netfilter/xt_statistic.c
122207 @@ -19,7 +19,7 @@
122208 #include <linux/module.h>
122209
122210 struct xt_statistic_priv {
122211 - atomic_t count;
122212 + atomic_unchecked_t count;
122213 } ____cacheline_aligned_in_smp;
122214
122215 MODULE_LICENSE("GPL");
122216 @@ -42,9 +42,9 @@ statistic_mt(const struct sk_buff *skb, struct xt_action_param *par)
122217 break;
122218 case XT_STATISTIC_MODE_NTH:
122219 do {
122220 - oval = atomic_read(&info->master->count);
122221 + oval = atomic_read_unchecked(&info->master->count);
122222 nval = (oval == info->u.nth.every) ? 0 : oval + 1;
122223 - } while (atomic_cmpxchg(&info->master->count, oval, nval) != oval);
122224 + } while (atomic_cmpxchg_unchecked(&info->master->count, oval, nval) != oval);
122225 if (nval == 0)
122226 ret = !ret;
122227 break;
122228 @@ -64,7 +64,7 @@ static int statistic_mt_check(const struct xt_mtchk_param *par)
122229 info->master = kzalloc(sizeof(*info->master), GFP_KERNEL);
122230 if (info->master == NULL)
122231 return -ENOMEM;
122232 - atomic_set(&info->master->count, info->u.nth.count);
122233 + atomic_set_unchecked(&info->master->count, info->u.nth.count);
122234
122235 return 0;
122236 }
122237 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
122238 index 0857f72..e534fee 100644
122239 --- a/net/netlink/af_netlink.c
122240 +++ b/net/netlink/af_netlink.c
122241 @@ -286,7 +286,7 @@ static void netlink_overrun(struct sock *sk)
122242 sk->sk_error_report(sk);
122243 }
122244 }
122245 - atomic_inc(&sk->sk_drops);
122246 + atomic_inc_unchecked(&sk->sk_drops);
122247 }
122248
122249 static void netlink_rcv_wake(struct sock *sk)
122250 @@ -3135,7 +3135,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
122251 sk_wmem_alloc_get(s),
122252 nlk->cb_running,
122253 atomic_read(&s->sk_refcnt),
122254 - atomic_read(&s->sk_drops),
122255 + atomic_read_unchecked(&s->sk_drops),
122256 sock_i_ino(s)
122257 );
122258
122259 diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
122260 index 6a55f71..e88c937 100644
122261 --- a/net/openvswitch/vport-internal_dev.c
122262 +++ b/net/openvswitch/vport-internal_dev.c
122263 @@ -124,7 +124,7 @@ static const struct net_device_ops internal_dev_netdev_ops = {
122264 .ndo_get_stats64 = internal_dev_get_stats,
122265 };
122266
122267 -static struct rtnl_link_ops internal_dev_link_ops __read_mostly = {
122268 +static struct rtnl_link_ops internal_dev_link_ops = {
122269 .kind = "openvswitch",
122270 };
122271
122272 diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c
122273 index 067a3ff..9ecc05c 100644
122274 --- a/net/openvswitch/vport.c
122275 +++ b/net/openvswitch/vport.c
122276 @@ -303,10 +303,10 @@ void ovs_vport_get_stats(struct vport *vport, struct ovs_vport_stats *stats)
122277 * netdev-stats can be directly read over netlink-ioctl.
122278 */
122279
122280 - stats->rx_errors = atomic_long_read(&vport->err_stats.rx_errors);
122281 - stats->tx_errors = atomic_long_read(&vport->err_stats.tx_errors);
122282 - stats->tx_dropped = atomic_long_read(&vport->err_stats.tx_dropped);
122283 - stats->rx_dropped = atomic_long_read(&vport->err_stats.rx_dropped);
122284 + stats->rx_errors = atomic_long_read_unchecked(&vport->err_stats.rx_errors);
122285 + stats->tx_errors = atomic_long_read_unchecked(&vport->err_stats.tx_errors);
122286 + stats->tx_dropped = atomic_long_read_unchecked(&vport->err_stats.tx_dropped);
122287 + stats->rx_dropped = atomic_long_read_unchecked(&vport->err_stats.rx_dropped);
122288
122289 for_each_possible_cpu(i) {
122290 const struct pcpu_sw_netstats *percpu_stats;
122291 @@ -538,19 +538,19 @@ static void ovs_vport_record_error(struct vport *vport,
122292 {
122293 switch (err_type) {
122294 case VPORT_E_RX_DROPPED:
122295 - atomic_long_inc(&vport->err_stats.rx_dropped);
122296 + atomic_long_inc_unchecked(&vport->err_stats.rx_dropped);
122297 break;
122298
122299 case VPORT_E_RX_ERROR:
122300 - atomic_long_inc(&vport->err_stats.rx_errors);
122301 + atomic_long_inc_unchecked(&vport->err_stats.rx_errors);
122302 break;
122303
122304 case VPORT_E_TX_DROPPED:
122305 - atomic_long_inc(&vport->err_stats.tx_dropped);
122306 + atomic_long_inc_unchecked(&vport->err_stats.tx_dropped);
122307 break;
122308
122309 case VPORT_E_TX_ERROR:
122310 - atomic_long_inc(&vport->err_stats.tx_errors);
122311 + atomic_long_inc_unchecked(&vport->err_stats.tx_errors);
122312 break;
122313 }
122314
122315 diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h
122316 index bc85331..0d3dce0 100644
122317 --- a/net/openvswitch/vport.h
122318 +++ b/net/openvswitch/vport.h
122319 @@ -71,10 +71,10 @@ int ovs_vport_get_egress_tun_info(struct vport *vport, struct sk_buff *skb,
122320 /* The following definitions are for implementers of vport devices: */
122321
122322 struct vport_err_stats {
122323 - atomic_long_t rx_dropped;
122324 - atomic_long_t rx_errors;
122325 - atomic_long_t tx_dropped;
122326 - atomic_long_t tx_errors;
122327 + atomic_long_unchecked_t rx_dropped;
122328 + atomic_long_unchecked_t rx_errors;
122329 + atomic_long_unchecked_t tx_dropped;
122330 + atomic_long_unchecked_t tx_errors;
122331 };
122332 /**
122333 * struct vport_portids - array of netlink portids of a vport.
122334 diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
122335 index 7851b12..b665c0c 100644
122336 --- a/net/packet/af_packet.c
122337 +++ b/net/packet/af_packet.c
122338 @@ -277,7 +277,7 @@ static int packet_direct_xmit(struct sk_buff *skb)
122339
122340 return ret;
122341 drop:
122342 - atomic_long_inc(&dev->tx_dropped);
122343 + atomic_long_inc_unchecked(&dev->tx_dropped);
122344 kfree_skb(skb);
122345 return NET_XMIT_DROP;
122346 }
122347 @@ -1946,7 +1946,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
122348 drop_n_acct:
122349 spin_lock(&sk->sk_receive_queue.lock);
122350 po->stats.stats1.tp_drops++;
122351 - atomic_inc(&sk->sk_drops);
122352 + atomic_inc_unchecked(&sk->sk_drops);
122353 spin_unlock(&sk->sk_receive_queue.lock);
122354
122355 drop_n_restore:
122356 @@ -3616,7 +3616,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
122357 case PACKET_HDRLEN:
122358 if (len > sizeof(int))
122359 len = sizeof(int);
122360 - if (copy_from_user(&val, optval, len))
122361 + if (len > sizeof(val) || copy_from_user(&val, optval, len))
122362 return -EFAULT;
122363 switch (val) {
122364 case TPACKET_V1:
122365 @@ -3671,7 +3671,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
122366 len = lv;
122367 if (put_user(len, optlen))
122368 return -EFAULT;
122369 - if (copy_to_user(optval, data, len))
122370 + if (len > sizeof(st) || copy_to_user(optval, data, len))
122371 return -EFAULT;
122372 return 0;
122373 }
122374 diff --git a/net/phonet/pep.c b/net/phonet/pep.c
122375 index 850a86c..8884a37 100644
122376 --- a/net/phonet/pep.c
122377 +++ b/net/phonet/pep.c
122378 @@ -388,7 +388,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
122379
122380 case PNS_PEP_CTRL_REQ:
122381 if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) {
122382 - atomic_inc(&sk->sk_drops);
122383 + atomic_inc_unchecked(&sk->sk_drops);
122384 break;
122385 }
122386 __skb_pull(skb, 4);
122387 @@ -409,7 +409,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
122388 }
122389
122390 if (pn->rx_credits == 0) {
122391 - atomic_inc(&sk->sk_drops);
122392 + atomic_inc_unchecked(&sk->sk_drops);
122393 err = -ENOBUFS;
122394 break;
122395 }
122396 @@ -579,7 +579,7 @@ static int pipe_handler_do_rcv(struct sock *sk, struct sk_buff *skb)
122397 }
122398
122399 if (pn->rx_credits == 0) {
122400 - atomic_inc(&sk->sk_drops);
122401 + atomic_inc_unchecked(&sk->sk_drops);
122402 err = NET_RX_DROP;
122403 break;
122404 }
122405 diff --git a/net/phonet/socket.c b/net/phonet/socket.c
122406 index d575ef4..1dedc31 100644
122407 --- a/net/phonet/socket.c
122408 +++ b/net/phonet/socket.c
122409 @@ -611,7 +611,7 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v)
122410 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sk)),
122411 sock_i_ino(sk),
122412 atomic_read(&sk->sk_refcnt), sk,
122413 - atomic_read(&sk->sk_drops));
122414 + atomic_read_unchecked(&sk->sk_drops));
122415 }
122416 seq_pad(seq, '\n');
122417 return 0;
122418 diff --git a/net/phonet/sysctl.c b/net/phonet/sysctl.c
122419 index c02a8c4..3c5b600 100644
122420 --- a/net/phonet/sysctl.c
122421 +++ b/net/phonet/sysctl.c
122422 @@ -67,7 +67,7 @@ static int proc_local_port_range(struct ctl_table *table, int write,
122423 {
122424 int ret;
122425 int range[2] = {local_port_range[0], local_port_range[1]};
122426 - struct ctl_table tmp = {
122427 + ctl_table_no_const tmp = {
122428 .data = &range,
122429 .maxlen = sizeof(range),
122430 .mode = table->mode,
122431 diff --git a/net/rds/cong.c b/net/rds/cong.c
122432 index e6144b8..4f9fda6 100644
122433 --- a/net/rds/cong.c
122434 +++ b/net/rds/cong.c
122435 @@ -78,7 +78,7 @@
122436 * finds that the saved generation number is smaller than the global generation
122437 * number, it wakes up the process.
122438 */
122439 -static atomic_t rds_cong_generation = ATOMIC_INIT(0);
122440 +static atomic_unchecked_t rds_cong_generation = ATOMIC_INIT(0);
122441
122442 /*
122443 * Congestion monitoring
122444 @@ -247,7 +247,7 @@ void rds_cong_map_updated(struct rds_cong_map *map, uint64_t portmask)
122445 rdsdebug("waking map %p for %pI4\n",
122446 map, &map->m_addr);
122447 rds_stats_inc(s_cong_update_received);
122448 - atomic_inc(&rds_cong_generation);
122449 + atomic_inc_unchecked(&rds_cong_generation);
122450 if (waitqueue_active(&map->m_waitq))
122451 wake_up(&map->m_waitq);
122452 if (waitqueue_active(&rds_poll_waitq))
122453 @@ -273,7 +273,7 @@ EXPORT_SYMBOL_GPL(rds_cong_map_updated);
122454
122455 int rds_cong_updated_since(unsigned long *recent)
122456 {
122457 - unsigned long gen = atomic_read(&rds_cong_generation);
122458 + unsigned long gen = atomic_read_unchecked(&rds_cong_generation);
122459
122460 if (likely(*recent == gen))
122461 return 0;
122462 diff --git a/net/rds/ib.h b/net/rds/ib.h
122463 index 86d88ec..b5461c2 100644
122464 --- a/net/rds/ib.h
122465 +++ b/net/rds/ib.h
122466 @@ -128,7 +128,7 @@ struct rds_ib_connection {
122467 /* sending acks */
122468 unsigned long i_ack_flags;
122469 #ifdef KERNEL_HAS_ATOMIC64
122470 - atomic64_t i_ack_next; /* next ACK to send */
122471 + atomic64_unchecked_t i_ack_next; /* next ACK to send */
122472 #else
122473 spinlock_t i_ack_lock; /* protect i_ack_next */
122474 u64 i_ack_next; /* next ACK to send */
122475 diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
122476 index 0da2a45..388ae0b 100644
122477 --- a/net/rds/ib_cm.c
122478 +++ b/net/rds/ib_cm.c
122479 @@ -699,7 +699,7 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
122480 /* Clear the ACK state */
122481 clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
122482 #ifdef KERNEL_HAS_ATOMIC64
122483 - atomic64_set(&ic->i_ack_next, 0);
122484 + atomic64_set_unchecked(&ic->i_ack_next, 0);
122485 #else
122486 ic->i_ack_next = 0;
122487 #endif
122488 diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c
122489 index cac5b45..9a6f263 100644
122490 --- a/net/rds/ib_recv.c
122491 +++ b/net/rds/ib_recv.c
122492 @@ -581,7 +581,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
122493 static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq,
122494 int ack_required)
122495 {
122496 - atomic64_set(&ic->i_ack_next, seq);
122497 + atomic64_set_unchecked(&ic->i_ack_next, seq);
122498 if (ack_required) {
122499 smp_mb__before_atomic();
122500 set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
122501 @@ -593,7 +593,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
122502 clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
122503 smp_mb__after_atomic();
122504
122505 - return atomic64_read(&ic->i_ack_next);
122506 + return atomic64_read_unchecked(&ic->i_ack_next);
122507 }
122508 #endif
122509
122510 diff --git a/net/rds/iw.h b/net/rds/iw.h
122511 index cbe6674..dc9eb89 100644
122512 --- a/net/rds/iw.h
122513 +++ b/net/rds/iw.h
122514 @@ -134,7 +134,7 @@ struct rds_iw_connection {
122515 /* sending acks */
122516 unsigned long i_ack_flags;
122517 #ifdef KERNEL_HAS_ATOMIC64
122518 - atomic64_t i_ack_next; /* next ACK to send */
122519 + atomic64_unchecked_t i_ack_next; /* next ACK to send */
122520 #else
122521 spinlock_t i_ack_lock; /* protect i_ack_next */
122522 u64 i_ack_next; /* next ACK to send */
122523 diff --git a/net/rds/iw_cm.c b/net/rds/iw_cm.c
122524 index 8f486fa..7849d8c 100644
122525 --- a/net/rds/iw_cm.c
122526 +++ b/net/rds/iw_cm.c
122527 @@ -666,7 +666,7 @@ void rds_iw_conn_shutdown(struct rds_connection *conn)
122528 /* Clear the ACK state */
122529 clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
122530 #ifdef KERNEL_HAS_ATOMIC64
122531 - atomic64_set(&ic->i_ack_next, 0);
122532 + atomic64_set_unchecked(&ic->i_ack_next, 0);
122533 #else
122534 ic->i_ack_next = 0;
122535 #endif
122536 diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c
122537 index a66d179..cf1e258 100644
122538 --- a/net/rds/iw_recv.c
122539 +++ b/net/rds/iw_recv.c
122540 @@ -412,7 +412,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
122541 static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq,
122542 int ack_required)
122543 {
122544 - atomic64_set(&ic->i_ack_next, seq);
122545 + atomic64_set_unchecked(&ic->i_ack_next, seq);
122546 if (ack_required) {
122547 smp_mb__before_atomic();
122548 set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
122549 @@ -424,7 +424,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
122550 clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
122551 smp_mb__after_atomic();
122552
122553 - return atomic64_read(&ic->i_ack_next);
122554 + return atomic64_read_unchecked(&ic->i_ack_next);
122555 }
122556 #endif
122557
122558 diff --git a/net/rds/rds.h b/net/rds/rds.h
122559 index 2260c1e4..4ea4a57 100644
122560 --- a/net/rds/rds.h
122561 +++ b/net/rds/rds.h
122562 @@ -446,7 +446,7 @@ struct rds_transport {
122563 void (*sync_mr)(void *trans_private, int direction);
122564 void (*free_mr)(void *trans_private, int invalidate);
122565 void (*flush_mrs)(void);
122566 -};
122567 +} __do_const;
122568
122569 struct rds_sock {
122570 struct sock rs_sk;
122571 diff --git a/net/rds/tcp.c b/net/rds/tcp.c
122572 index edac9ef..16bcb98 100644
122573 --- a/net/rds/tcp.c
122574 +++ b/net/rds/tcp.c
122575 @@ -59,7 +59,7 @@ void rds_tcp_nonagle(struct socket *sock)
122576 int val = 1;
122577
122578 set_fs(KERNEL_DS);
122579 - sock->ops->setsockopt(sock, SOL_TCP, TCP_NODELAY, (char __user *)&val,
122580 + sock->ops->setsockopt(sock, SOL_TCP, TCP_NODELAY, (char __force_user *)&val,
122581 sizeof(val));
122582 set_fs(oldfs);
122583 }
122584 diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c
122585 index 53b17ca..45463e7 100644
122586 --- a/net/rds/tcp_send.c
122587 +++ b/net/rds/tcp_send.c
122588 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *sock, int val)
122589
122590 oldfs = get_fs();
122591 set_fs(KERNEL_DS);
122592 - sock->ops->setsockopt(sock, SOL_TCP, TCP_CORK, (char __user *)&val,
122593 + sock->ops->setsockopt(sock, SOL_TCP, TCP_CORK, (char __force_user *)&val,
122594 sizeof(val));
122595 set_fs(oldfs);
122596 }
122597 diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c
122598 index 25d60ed..ec9ae2c 100644
122599 --- a/net/rxrpc/af_rxrpc.c
122600 +++ b/net/rxrpc/af_rxrpc.c
122601 @@ -40,7 +40,7 @@ static const struct proto_ops rxrpc_rpc_ops;
122602 __be32 rxrpc_epoch;
122603
122604 /* current debugging ID */
122605 -atomic_t rxrpc_debug_id;
122606 +atomic_unchecked_t rxrpc_debug_id;
122607
122608 /* count of skbs currently in use */
122609 atomic_t rxrpc_n_skbs;
122610 diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c
122611 index e0547f5..a171f7a 100644
122612 --- a/net/rxrpc/ar-ack.c
122613 +++ b/net/rxrpc/ar-ack.c
122614 @@ -224,7 +224,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
122615
122616 _enter("{%d,%d,%d,%d},",
122617 call->acks_hard, call->acks_unacked,
122618 - atomic_read(&call->sequence),
122619 + atomic_read_unchecked(&call->sequence),
122620 CIRC_CNT(call->acks_head, call->acks_tail, call->acks_winsz));
122621
122622 stop = false;
122623 @@ -248,7 +248,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
122624
122625 /* each Tx packet has a new serial number */
122626 sp->hdr.serial =
122627 - htonl(atomic_inc_return(&call->conn->serial));
122628 + htonl(atomic_inc_return_unchecked(&call->conn->serial));
122629
122630 hdr = (struct rxrpc_header *) txb->head;
122631 hdr->serial = sp->hdr.serial;
122632 @@ -452,7 +452,7 @@ static void rxrpc_rotate_tx_window(struct rxrpc_call *call, u32 hard)
122633 */
122634 static void rxrpc_clear_tx_window(struct rxrpc_call *call)
122635 {
122636 - rxrpc_rotate_tx_window(call, atomic_read(&call->sequence));
122637 + rxrpc_rotate_tx_window(call, atomic_read_unchecked(&call->sequence));
122638 }
122639
122640 /*
122641 @@ -678,7 +678,7 @@ process_further:
122642
122643 latest = ntohl(sp->hdr.serial);
122644 hard = ntohl(ack.firstPacket);
122645 - tx = atomic_read(&call->sequence);
122646 + tx = atomic_read_unchecked(&call->sequence);
122647
122648 _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
122649 latest,
122650 @@ -1210,7 +1210,7 @@ void rxrpc_process_call(struct work_struct *work)
122651 goto maybe_reschedule;
122652
122653 send_ACK_with_skew:
122654 - ack.maxSkew = htons(atomic_read(&call->conn->hi_serial) -
122655 + ack.maxSkew = htons(atomic_read_unchecked(&call->conn->hi_serial) -
122656 ntohl(ack.serial));
122657 send_ACK:
122658 mtu = call->conn->trans->peer->if_mtu;
122659 @@ -1222,7 +1222,7 @@ send_ACK:
122660 ackinfo.rxMTU = htonl(rxrpc_rx_mtu);
122661 ackinfo.jumbo_max = htonl(rxrpc_rx_jumbo_max);
122662
122663 - hdr.serial = htonl(atomic_inc_return(&call->conn->serial));
122664 + hdr.serial = htonl(atomic_inc_return_unchecked(&call->conn->serial));
122665 _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
122666 ntohl(hdr.serial),
122667 ntohs(ack.maxSkew),
122668 @@ -1240,7 +1240,7 @@ send_ACK:
122669 send_message:
122670 _debug("send message");
122671
122672 - hdr.serial = htonl(atomic_inc_return(&call->conn->serial));
122673 + hdr.serial = htonl(atomic_inc_return_unchecked(&call->conn->serial));
122674 _proto("Tx %s %%%u", rxrpc_pkts[hdr.type], ntohl(hdr.serial));
122675 send_message_2:
122676
122677 diff --git a/net/rxrpc/ar-call.c b/net/rxrpc/ar-call.c
122678 index a9e05db..194e793 100644
122679 --- a/net/rxrpc/ar-call.c
122680 +++ b/net/rxrpc/ar-call.c
122681 @@ -232,7 +232,7 @@ static struct rxrpc_call *rxrpc_alloc_call(gfp_t gfp)
122682 spin_lock_init(&call->lock);
122683 rwlock_init(&call->state_lock);
122684 atomic_set(&call->usage, 1);
122685 - call->debug_id = atomic_inc_return(&rxrpc_debug_id);
122686 + call->debug_id = atomic_inc_return_unchecked(&rxrpc_debug_id);
122687 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST;
122688
122689 memset(&call->sock_node, 0xed, sizeof(call->sock_node));
122690 diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c
122691 index 6631f4f..bfdf056 100644
122692 --- a/net/rxrpc/ar-connection.c
122693 +++ b/net/rxrpc/ar-connection.c
122694 @@ -210,7 +210,7 @@ static struct rxrpc_connection *rxrpc_alloc_connection(gfp_t gfp)
122695 rwlock_init(&conn->lock);
122696 spin_lock_init(&conn->state_lock);
122697 atomic_set(&conn->usage, 1);
122698 - conn->debug_id = atomic_inc_return(&rxrpc_debug_id);
122699 + conn->debug_id = atomic_inc_return_unchecked(&rxrpc_debug_id);
122700 conn->avail_calls = RXRPC_MAXCALLS;
122701 conn->size_align = 4;
122702 conn->header_size = sizeof(struct rxrpc_header);
122703 diff --git a/net/rxrpc/ar-connevent.c b/net/rxrpc/ar-connevent.c
122704 index e7ed43a..6afa140 100644
122705 --- a/net/rxrpc/ar-connevent.c
122706 +++ b/net/rxrpc/ar-connevent.c
122707 @@ -109,7 +109,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn,
122708
122709 len = iov[0].iov_len + iov[1].iov_len;
122710
122711 - hdr.serial = htonl(atomic_inc_return(&conn->serial));
122712 + hdr.serial = htonl(atomic_inc_return_unchecked(&conn->serial));
122713 _proto("Tx CONN ABORT %%%u { %d }", ntohl(hdr.serial), abort_code);
122714
122715 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
122716 diff --git a/net/rxrpc/ar-input.c b/net/rxrpc/ar-input.c
122717 index 4505a69..fe73096 100644
122718 --- a/net/rxrpc/ar-input.c
122719 +++ b/net/rxrpc/ar-input.c
122720 @@ -331,9 +331,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb)
122721 /* track the latest serial number on this connection for ACK packet
122722 * information */
122723 serial = ntohl(sp->hdr.serial);
122724 - hi_serial = atomic_read(&call->conn->hi_serial);
122725 + hi_serial = atomic_read_unchecked(&call->conn->hi_serial);
122726 while (serial > hi_serial)
122727 - hi_serial = atomic_cmpxchg(&call->conn->hi_serial, hi_serial,
122728 + hi_serial = atomic_cmpxchg_unchecked(&call->conn->hi_serial, hi_serial,
122729 serial);
122730
122731 /* request ACK generation for any ACK or DATA packet that requests
122732 diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
122733 index aef1bd2..97736c3 100644
122734 --- a/net/rxrpc/ar-internal.h
122735 +++ b/net/rxrpc/ar-internal.h
122736 @@ -274,8 +274,8 @@ struct rxrpc_connection {
122737 int error; /* error code for local abort */
122738 int debug_id; /* debug ID for printks */
122739 unsigned int call_counter; /* call ID counter */
122740 - atomic_t serial; /* packet serial number counter */
122741 - atomic_t hi_serial; /* highest serial number received */
122742 + atomic_unchecked_t serial; /* packet serial number counter */
122743 + atomic_unchecked_t hi_serial; /* highest serial number received */
122744 u8 avail_calls; /* number of calls available */
122745 u8 size_align; /* data size alignment (for security) */
122746 u8 header_size; /* rxrpc + security header size */
122747 @@ -348,7 +348,7 @@ struct rxrpc_call {
122748 spinlock_t lock;
122749 rwlock_t state_lock; /* lock for state transition */
122750 atomic_t usage;
122751 - atomic_t sequence; /* Tx data packet sequence counter */
122752 + atomic_unchecked_t sequence; /* Tx data packet sequence counter */
122753 u32 abort_code; /* local/remote abort code */
122754 enum { /* current state of call */
122755 RXRPC_CALL_CLIENT_SEND_REQUEST, /* - client sending request phase */
122756 @@ -433,7 +433,7 @@ static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code)
122757 */
122758 extern atomic_t rxrpc_n_skbs;
122759 extern __be32 rxrpc_epoch;
122760 -extern atomic_t rxrpc_debug_id;
122761 +extern atomic_unchecked_t rxrpc_debug_id;
122762 extern struct workqueue_struct *rxrpc_workqueue;
122763
122764 /*
122765 diff --git a/net/rxrpc/ar-local.c b/net/rxrpc/ar-local.c
122766 index 78483b4..b1c0e1e 100644
122767 --- a/net/rxrpc/ar-local.c
122768 +++ b/net/rxrpc/ar-local.c
122769 @@ -53,7 +53,7 @@ struct rxrpc_local *rxrpc_alloc_local(struct sockaddr_rxrpc *srx)
122770 spin_lock_init(&local->lock);
122771 rwlock_init(&local->services_lock);
122772 atomic_set(&local->usage, 1);
122773 - local->debug_id = atomic_inc_return(&rxrpc_debug_id);
122774 + local->debug_id = atomic_inc_return_unchecked(&rxrpc_debug_id);
122775 memcpy(&local->srx, srx, sizeof(*srx));
122776 }
122777
122778 diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c
122779 index c004280..ab1ed5a 100644
122780 --- a/net/rxrpc/ar-output.c
122781 +++ b/net/rxrpc/ar-output.c
122782 @@ -648,14 +648,14 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
122783 memset(skb_put(skb, pad), 0, pad);
122784 }
122785
122786 - seq = atomic_inc_return(&call->sequence);
122787 + seq = atomic_inc_return_unchecked(&call->sequence);
122788
122789 sp->hdr.epoch = conn->epoch;
122790 sp->hdr.cid = call->cid;
122791 sp->hdr.callNumber = call->call_id;
122792 sp->hdr.seq = htonl(seq);
122793 sp->hdr.serial =
122794 - htonl(atomic_inc_return(&conn->serial));
122795 + htonl(atomic_inc_return_unchecked(&conn->serial));
122796 sp->hdr.type = RXRPC_PACKET_TYPE_DATA;
122797 sp->hdr.userStatus = 0;
122798 sp->hdr.securityIndex = conn->security_ix;
122799 diff --git a/net/rxrpc/ar-peer.c b/net/rxrpc/ar-peer.c
122800 index bebaa43..2644591 100644
122801 --- a/net/rxrpc/ar-peer.c
122802 +++ b/net/rxrpc/ar-peer.c
122803 @@ -72,7 +72,7 @@ static struct rxrpc_peer *rxrpc_alloc_peer(struct sockaddr_rxrpc *srx,
122804 INIT_LIST_HEAD(&peer->error_targets);
122805 spin_lock_init(&peer->lock);
122806 atomic_set(&peer->usage, 1);
122807 - peer->debug_id = atomic_inc_return(&rxrpc_debug_id);
122808 + peer->debug_id = atomic_inc_return_unchecked(&rxrpc_debug_id);
122809 memcpy(&peer->srx, srx, sizeof(*srx));
122810
122811 rxrpc_assess_MTU_size(peer);
122812 diff --git a/net/rxrpc/ar-proc.c b/net/rxrpc/ar-proc.c
122813 index 38047f7..9f48511 100644
122814 --- a/net/rxrpc/ar-proc.c
122815 +++ b/net/rxrpc/ar-proc.c
122816 @@ -164,8 +164,8 @@ static int rxrpc_connection_seq_show(struct seq_file *seq, void *v)
122817 atomic_read(&conn->usage),
122818 rxrpc_conn_states[conn->state],
122819 key_serial(conn->key),
122820 - atomic_read(&conn->serial),
122821 - atomic_read(&conn->hi_serial));
122822 + atomic_read_unchecked(&conn->serial),
122823 + atomic_read_unchecked(&conn->hi_serial));
122824
122825 return 0;
122826 }
122827 diff --git a/net/rxrpc/ar-transport.c b/net/rxrpc/ar-transport.c
122828 index 1976dec..aa70be5 100644
122829 --- a/net/rxrpc/ar-transport.c
122830 +++ b/net/rxrpc/ar-transport.c
122831 @@ -51,7 +51,7 @@ static struct rxrpc_transport *rxrpc_alloc_transport(struct rxrpc_local *local,
122832 spin_lock_init(&trans->client_lock);
122833 rwlock_init(&trans->conn_lock);
122834 atomic_set(&trans->usage, 1);
122835 - trans->debug_id = atomic_inc_return(&rxrpc_debug_id);
122836 + trans->debug_id = atomic_inc_return_unchecked(&rxrpc_debug_id);
122837
122838 if (peer->srx.transport.family == AF_INET) {
122839 switch (peer->srx.transport_type) {
122840 diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c
122841 index f226709..0e735a8 100644
122842 --- a/net/rxrpc/rxkad.c
122843 +++ b/net/rxrpc/rxkad.c
122844 @@ -610,7 +610,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
122845
122846 len = iov[0].iov_len + iov[1].iov_len;
122847
122848 - hdr.serial = htonl(atomic_inc_return(&conn->serial));
122849 + hdr.serial = htonl(atomic_inc_return_unchecked(&conn->serial));
122850 _proto("Tx CHALLENGE %%%u", ntohl(hdr.serial));
122851
122852 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
122853 @@ -660,7 +660,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn,
122854
122855 len = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
122856
122857 - hdr->serial = htonl(atomic_inc_return(&conn->serial));
122858 + hdr->serial = htonl(atomic_inc_return_unchecked(&conn->serial));
122859 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
122860
122861 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
122862 diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
122863 index 6efca30..1259f82 100644
122864 --- a/net/sched/sch_generic.c
122865 +++ b/net/sched/sch_generic.c
122866 @@ -349,7 +349,7 @@ void netif_carrier_on(struct net_device *dev)
122867 if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) {
122868 if (dev->reg_state == NETREG_UNINITIALIZED)
122869 return;
122870 - atomic_inc(&dev->carrier_changes);
122871 + atomic_inc_unchecked(&dev->carrier_changes);
122872 linkwatch_fire_event(dev);
122873 if (netif_running(dev))
122874 __netdev_watchdog_up(dev);
122875 @@ -368,7 +368,7 @@ void netif_carrier_off(struct net_device *dev)
122876 if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) {
122877 if (dev->reg_state == NETREG_UNINITIALIZED)
122878 return;
122879 - atomic_inc(&dev->carrier_changes);
122880 + atomic_inc_unchecked(&dev->carrier_changes);
122881 linkwatch_fire_event(dev);
122882 }
122883 }
122884 diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
122885 index e917d27..13e2a4c 100644
122886 --- a/net/sctp/ipv6.c
122887 +++ b/net/sctp/ipv6.c
122888 @@ -973,7 +973,7 @@ static const struct inet6_protocol sctpv6_protocol = {
122889 .flags = INET6_PROTO_NOPOLICY | INET6_PROTO_FINAL,
122890 };
122891
122892 -static struct sctp_af sctp_af_inet6 = {
122893 +static struct sctp_af sctp_af_inet6 __read_only = {
122894 .sa_family = AF_INET6,
122895 .sctp_xmit = sctp_v6_xmit,
122896 .setsockopt = ipv6_setsockopt,
122897 @@ -1003,7 +1003,7 @@ static struct sctp_af sctp_af_inet6 = {
122898 #endif
122899 };
122900
122901 -static struct sctp_pf sctp_pf_inet6 = {
122902 +static struct sctp_pf sctp_pf_inet6 __read_only = {
122903 .event_msgname = sctp_inet6_event_msgname,
122904 .skb_msgname = sctp_inet6_skb_msgname,
122905 .af_supported = sctp_inet6_af_supported,
122906 @@ -1030,7 +1030,7 @@ void sctp_v6_pf_init(void)
122907
122908 void sctp_v6_pf_exit(void)
122909 {
122910 - list_del(&sctp_af_inet6.list);
122911 + pax_list_del(&sctp_af_inet6.list);
122912 }
122913
122914 /* Initialize IPv6 support and register with socket layer. */
122915 diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
122916 index 3ac604f..e1b6dec 100644
122917 --- a/net/sctp/protocol.c
122918 +++ b/net/sctp/protocol.c
122919 @@ -836,8 +836,10 @@ int sctp_register_af(struct sctp_af *af)
122920 return 0;
122921 }
122922
122923 + pax_open_kernel();
122924 INIT_LIST_HEAD(&af->list);
122925 - list_add_tail(&af->list, &sctp_address_families);
122926 + pax_close_kernel();
122927 + pax_list_add_tail(&af->list, &sctp_address_families);
122928 return 1;
122929 }
122930
122931 @@ -967,7 +969,7 @@ static inline int sctp_v4_xmit(struct sk_buff *skb,
122932
122933 static struct sctp_af sctp_af_inet;
122934
122935 -static struct sctp_pf sctp_pf_inet = {
122936 +static struct sctp_pf sctp_pf_inet __read_only = {
122937 .event_msgname = sctp_inet_event_msgname,
122938 .skb_msgname = sctp_inet_skb_msgname,
122939 .af_supported = sctp_inet_af_supported,
122940 @@ -1039,7 +1041,7 @@ static const struct net_protocol sctp_protocol = {
122941 };
122942
122943 /* IPv4 address related functions. */
122944 -static struct sctp_af sctp_af_inet = {
122945 +static struct sctp_af sctp_af_inet __read_only = {
122946 .sa_family = AF_INET,
122947 .sctp_xmit = sctp_v4_xmit,
122948 .setsockopt = ip_setsockopt,
122949 @@ -1123,7 +1125,7 @@ static void sctp_v4_pf_init(void)
122950
122951 static void sctp_v4_pf_exit(void)
122952 {
122953 - list_del(&sctp_af_inet.list);
122954 + pax_list_del(&sctp_af_inet.list);
122955 }
122956
122957 static int sctp_v4_protosw_init(void)
122958 diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
122959 index 85e6f03..d41c1ad 100644
122960 --- a/net/sctp/sm_sideeffect.c
122961 +++ b/net/sctp/sm_sideeffect.c
122962 @@ -439,7 +439,7 @@ static void sctp_generate_sack_event(unsigned long data)
122963 sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK);
122964 }
122965
122966 -sctp_timer_event_t *sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES] = {
122967 +sctp_timer_event_t * const sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES] = {
122968 NULL,
122969 sctp_generate_t1_cookie_event,
122970 sctp_generate_t1_init_event,
122971 diff --git a/net/sctp/socket.c b/net/sctp/socket.c
122972 index 17bef01..46f1473 100644
122973 --- a/net/sctp/socket.c
122974 +++ b/net/sctp/socket.c
122975 @@ -2194,11 +2194,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
122976 {
122977 struct sctp_association *asoc;
122978 struct sctp_ulpevent *event;
122979 + struct sctp_event_subscribe subscribe;
122980
122981 if (optlen > sizeof(struct sctp_event_subscribe))
122982 return -EINVAL;
122983 - if (copy_from_user(&sctp_sk(sk)->subscribe, optval, optlen))
122984 + if (copy_from_user(&subscribe, optval, optlen))
122985 return -EFAULT;
122986 + sctp_sk(sk)->subscribe = subscribe;
122987
122988 /* At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT,
122989 * if there is no data to be sent or retransmit, the stack will
122990 @@ -4373,13 +4375,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
122991 static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
122992 int __user *optlen)
122993 {
122994 + struct sctp_event_subscribe subscribe;
122995 +
122996 if (len <= 0)
122997 return -EINVAL;
122998 if (len > sizeof(struct sctp_event_subscribe))
122999 len = sizeof(struct sctp_event_subscribe);
123000 if (put_user(len, optlen))
123001 return -EFAULT;
123002 - if (copy_to_user(optval, &sctp_sk(sk)->subscribe, len))
123003 + subscribe = sctp_sk(sk)->subscribe;
123004 + if (copy_to_user(optval, &subscribe, len))
123005 return -EFAULT;
123006 return 0;
123007 }
123008 @@ -4397,6 +4402,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
123009 */
123010 static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen)
123011 {
123012 + __u32 autoclose;
123013 +
123014 /* Applicable to UDP-style socket only */
123015 if (sctp_style(sk, TCP))
123016 return -EOPNOTSUPP;
123017 @@ -4405,7 +4412,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
123018 len = sizeof(int);
123019 if (put_user(len, optlen))
123020 return -EFAULT;
123021 - if (copy_to_user(optval, &sctp_sk(sk)->autoclose, sizeof(int)))
123022 + autoclose = sctp_sk(sk)->autoclose;
123023 + if (copy_to_user(optval, &autoclose, sizeof(int)))
123024 return -EFAULT;
123025 return 0;
123026 }
123027 @@ -4779,12 +4787,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
123028 */
123029 static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen)
123030 {
123031 + struct sctp_initmsg initmsg;
123032 +
123033 if (len < sizeof(struct sctp_initmsg))
123034 return -EINVAL;
123035 len = sizeof(struct sctp_initmsg);
123036 if (put_user(len, optlen))
123037 return -EFAULT;
123038 - if (copy_to_user(optval, &sctp_sk(sk)->initmsg, len))
123039 + initmsg = sctp_sk(sk)->initmsg;
123040 + if (copy_to_user(optval, &initmsg, len))
123041 return -EFAULT;
123042 return 0;
123043 }
123044 @@ -4825,6 +4836,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
123045 ->addr_to_user(sp, &temp);
123046 if (space_left < addrlen)
123047 return -ENOMEM;
123048 + if (addrlen > sizeof(temp) || addrlen < 0)
123049 + return -EFAULT;
123050 if (copy_to_user(to, &temp, addrlen))
123051 return -EFAULT;
123052 to += addrlen;
123053 diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
123054 index 26d50c5..dfae665 100644
123055 --- a/net/sctp/sysctl.c
123056 +++ b/net/sctp/sysctl.c
123057 @@ -317,7 +317,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
123058 loff_t *ppos)
123059 {
123060 struct net *net = current->nsproxy->net_ns;
123061 - struct ctl_table tbl;
123062 + ctl_table_no_const tbl;
123063 bool changed = false;
123064 char *none = "none";
123065 char tmp[8];
123066 @@ -365,7 +365,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
123067 struct net *net = current->nsproxy->net_ns;
123068 unsigned int min = *(unsigned int *) ctl->extra1;
123069 unsigned int max = *(unsigned int *) ctl->extra2;
123070 - struct ctl_table tbl;
123071 + ctl_table_no_const tbl;
123072 int ret, new_value;
123073
123074 memset(&tbl, 0, sizeof(struct ctl_table));
123075 @@ -394,7 +394,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
123076 struct net *net = current->nsproxy->net_ns;
123077 unsigned int min = *(unsigned int *) ctl->extra1;
123078 unsigned int max = *(unsigned int *) ctl->extra2;
123079 - struct ctl_table tbl;
123080 + ctl_table_no_const tbl;
123081 int ret, new_value;
123082
123083 memset(&tbl, 0, sizeof(struct ctl_table));
123084 @@ -432,7 +432,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
123085 loff_t *ppos)
123086 {
123087 struct net *net = current->nsproxy->net_ns;
123088 - struct ctl_table tbl;
123089 + ctl_table_no_const tbl;
123090 int new_value, ret;
123091
123092 memset(&tbl, 0, sizeof(struct ctl_table));
123093 @@ -459,7 +459,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
123094
123095 int sctp_sysctl_net_register(struct net *net)
123096 {
123097 - struct ctl_table *table;
123098 + ctl_table_no_const *table;
123099 int i;
123100
123101 table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
123102 diff --git a/net/socket.c b/net/socket.c
123103 index 9963a0b..77c79d6 100644
123104 --- a/net/socket.c
123105 +++ b/net/socket.c
123106 @@ -89,6 +89,7 @@
123107 #include <linux/magic.h>
123108 #include <linux/slab.h>
123109 #include <linux/xattr.h>
123110 +#include <linux/in.h>
123111
123112 #include <asm/uaccess.h>
123113 #include <asm/unistd.h>
123114 @@ -107,6 +108,7 @@
123115 #include <linux/atalk.h>
123116 #include <net/busy_poll.h>
123117 #include <linux/errqueue.h>
123118 +#include <linux/grsock.h>
123119
123120 #ifdef CONFIG_NET_RX_BUSY_POLL
123121 unsigned int sysctl_net_busy_read __read_mostly;
123122 @@ -160,7 +162,7 @@ static const struct file_operations socket_file_ops = {
123123 */
123124
123125 static DEFINE_SPINLOCK(net_family_lock);
123126 -static const struct net_proto_family __rcu *net_families[NPROTO] __read_mostly;
123127 +const struct net_proto_family __rcu *net_families[NPROTO] __read_mostly;
123128
123129 /*
123130 * Statistics counters of the socket lists
123131 @@ -326,7 +328,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type,
123132 &sockfs_dentry_operations, SOCKFS_MAGIC);
123133 }
123134
123135 -static struct vfsmount *sock_mnt __read_mostly;
123136 +struct vfsmount *sock_mnt __read_mostly;
123137
123138 static struct file_system_type sock_fs_type = {
123139 .name = "sockfs",
123140 @@ -1105,6 +1107,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
123141 return -EAFNOSUPPORT;
123142 if (type < 0 || type >= SOCK_MAX)
123143 return -EINVAL;
123144 + if (protocol < 0)
123145 + return -EINVAL;
123146
123147 /* Compatibility.
123148
123149 @@ -1125,6 +1129,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
123150 if (err)
123151 return err;
123152
123153 + if(!kern && !gr_search_socket(family, type, protocol)) {
123154 + if (rcu_access_pointer(net_families[family]) == NULL)
123155 + return -EAFNOSUPPORT;
123156 + else
123157 + return -EACCES;
123158 + }
123159 +
123160 + if (!kern && gr_handle_sock_all(family, type, protocol)) {
123161 + if (rcu_access_pointer(net_families[family]) == NULL)
123162 + return -EAFNOSUPPORT;
123163 + else
123164 + return -EACCES;
123165 + }
123166 +
123167 /*
123168 * Allocate the socket and allow the family to set things up. if
123169 * the protocol is 0, the family is instructed to select an appropriate
123170 @@ -1376,6 +1394,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
123171 if (sock) {
123172 err = move_addr_to_kernel(umyaddr, addrlen, &address);
123173 if (err >= 0) {
123174 + if (gr_handle_sock_server((struct sockaddr *)&address)) {
123175 + err = -EACCES;
123176 + goto error;
123177 + }
123178 + err = gr_search_bind(sock, (struct sockaddr_in *)&address);
123179 + if (err)
123180 + goto error;
123181 +
123182 err = security_socket_bind(sock,
123183 (struct sockaddr *)&address,
123184 addrlen);
123185 @@ -1384,6 +1410,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
123186 (struct sockaddr *)
123187 &address, addrlen);
123188 }
123189 +error:
123190 fput_light(sock->file, fput_needed);
123191 }
123192 return err;
123193 @@ -1407,10 +1434,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
123194 if ((unsigned int)backlog > somaxconn)
123195 backlog = somaxconn;
123196
123197 + if (gr_handle_sock_server_other(sock->sk)) {
123198 + err = -EPERM;
123199 + goto error;
123200 + }
123201 +
123202 + err = gr_search_listen(sock);
123203 + if (err)
123204 + goto error;
123205 +
123206 err = security_socket_listen(sock, backlog);
123207 if (!err)
123208 err = sock->ops->listen(sock, backlog);
123209
123210 +error:
123211 fput_light(sock->file, fput_needed);
123212 }
123213 return err;
123214 @@ -1454,6 +1491,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
123215 newsock->type = sock->type;
123216 newsock->ops = sock->ops;
123217
123218 + if (gr_handle_sock_server_other(sock->sk)) {
123219 + err = -EPERM;
123220 + sock_release(newsock);
123221 + goto out_put;
123222 + }
123223 +
123224 + err = gr_search_accept(sock);
123225 + if (err) {
123226 + sock_release(newsock);
123227 + goto out_put;
123228 + }
123229 +
123230 /*
123231 * We don't need try_module_get here, as the listening socket (sock)
123232 * has the protocol module (sock->ops->owner) held.
123233 @@ -1499,6 +1548,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
123234 fd_install(newfd, newfile);
123235 err = newfd;
123236
123237 + gr_attach_curr_ip(newsock->sk);
123238 +
123239 out_put:
123240 fput_light(sock->file, fput_needed);
123241 out:
123242 @@ -1531,6 +1582,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
123243 int, addrlen)
123244 {
123245 struct socket *sock;
123246 + struct sockaddr *sck;
123247 struct sockaddr_storage address;
123248 int err, fput_needed;
123249
123250 @@ -1541,6 +1593,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
123251 if (err < 0)
123252 goto out_put;
123253
123254 + sck = (struct sockaddr *)&address;
123255 +
123256 + if (gr_handle_sock_client(sck)) {
123257 + err = -EACCES;
123258 + goto out_put;
123259 + }
123260 +
123261 + err = gr_search_connect(sock, (struct sockaddr_in *)sck);
123262 + if (err)
123263 + goto out_put;
123264 +
123265 err =
123266 security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
123267 if (err)
123268 @@ -1622,6 +1685,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
123269 * the protocol.
123270 */
123271
123272 +asmlinkage long sys_sendto(int, void __user *, size_t, unsigned, struct sockaddr __user *, int);
123273 +
123274 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
123275 unsigned int, flags, struct sockaddr __user *, addr,
123276 int, addr_len)
123277 @@ -1685,7 +1750,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
123278 struct socket *sock;
123279 struct iovec iov;
123280 struct msghdr msg;
123281 - struct sockaddr_storage address;
123282 + struct sockaddr_storage address = { };
123283 int err, err2;
123284 int fput_needed;
123285
123286 @@ -1927,7 +1992,7 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg,
123287 * checking falls down on this.
123288 */
123289 if (copy_from_user(ctl_buf,
123290 - (void __user __force *)msg_sys->msg_control,
123291 + (void __force_user *)msg_sys->msg_control,
123292 ctl_len))
123293 goto out_freectl;
123294 msg_sys->msg_control = ctl_buf;
123295 @@ -2077,7 +2142,7 @@ static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg,
123296 ssize_t err;
123297
123298 /* kernel mode address */
123299 - struct sockaddr_storage addr;
123300 + struct sockaddr_storage addr = { };
123301
123302 /* user mode address pointers */
123303 struct sockaddr __user *uaddr;
123304 @@ -2722,7 +2787,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
123305 ifr = compat_alloc_user_space(buf_size);
123306 rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
123307
123308 - if (copy_in_user(&ifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
123309 + if (copy_in_user(ifr->ifr_name, ifr32->ifr_name, IFNAMSIZ))
123310 return -EFAULT;
123311
123312 if (put_user(convert_in ? rxnfc : compat_ptr(data),
123313 @@ -2833,7 +2898,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
123314 old_fs = get_fs();
123315 set_fs(KERNEL_DS);
123316 err = dev_ioctl(net, cmd,
123317 - (struct ifreq __user __force *) &kifr);
123318 + (struct ifreq __force_user *) &kifr);
123319 set_fs(old_fs);
123320
123321 return err;
123322 @@ -2926,7 +2991,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
123323
123324 old_fs = get_fs();
123325 set_fs(KERNEL_DS);
123326 - err = dev_ioctl(net, cmd, (void __user __force *)&ifr);
123327 + err = dev_ioctl(net, cmd, (void __force_user *)&ifr);
123328 set_fs(old_fs);
123329
123330 if (cmd == SIOCGIFMAP && !err) {
123331 @@ -3010,7 +3075,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
123332 ret |= get_user(rtdev, &(ur4->rt_dev));
123333 if (rtdev) {
123334 ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
123335 - r4.rt_dev = (char __user __force *)devname;
123336 + r4.rt_dev = (char __force_user *)devname;
123337 devname[15] = 0;
123338 } else
123339 r4.rt_dev = NULL;
123340 @@ -3237,8 +3302,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
123341 int __user *uoptlen;
123342 int err;
123343
123344 - uoptval = (char __user __force *) optval;
123345 - uoptlen = (int __user __force *) optlen;
123346 + uoptval = (char __force_user *) optval;
123347 + uoptlen = (int __force_user *) optlen;
123348
123349 set_fs(KERNEL_DS);
123350 if (level == SOL_SOCKET)
123351 @@ -3258,7 +3323,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
123352 char __user *uoptval;
123353 int err;
123354
123355 - uoptval = (char __user __force *) optval;
123356 + uoptval = (char __force_user *) optval;
123357
123358 set_fs(KERNEL_DS);
123359 if (level == SOL_SOCKET)
123360 diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
123361 index 1095be9..815d777 100644
123362 --- a/net/sunrpc/auth_gss/svcauth_gss.c
123363 +++ b/net/sunrpc/auth_gss/svcauth_gss.c
123364 @@ -1142,7 +1142,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd,
123365 uint64_t *handle)
123366 {
123367 struct rsc rsci, *rscp = NULL;
123368 - static atomic64_t ctxhctr;
123369 + static atomic64_unchecked_t ctxhctr = ATOMIC64_INIT(0);
123370 long long ctxh;
123371 struct gss_api_mech *gm = NULL;
123372 time_t expiry;
123373 @@ -1153,7 +1153,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd,
123374 status = -ENOMEM;
123375 /* the handle needs to be just a unique id,
123376 * use a static counter */
123377 - ctxh = atomic64_inc_return(&ctxhctr);
123378 + ctxh = atomic64_inc_return_unchecked(&ctxhctr);
123379
123380 /* make a copy for the caller */
123381 *handle = ctxh;
123382 diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
123383 index 2928aff..6f9efeb 100644
123384 --- a/net/sunrpc/cache.c
123385 +++ b/net/sunrpc/cache.c
123386 @@ -1597,7 +1597,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net)
123387 struct sunrpc_net *sn;
123388
123389 sn = net_generic(net, sunrpc_net_id);
123390 - cd->u.procfs.proc_ent = proc_mkdir(cd->name, sn->proc_net_rpc);
123391 + cd->u.procfs.proc_ent = proc_mkdir_restrict(cd->name, sn->proc_net_rpc);
123392 if (cd->u.procfs.proc_ent == NULL)
123393 goto out_nomem;
123394 cd->u.procfs.channel_ent = NULL;
123395 diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
123396 index 23608eb..f2b5208 100644
123397 --- a/net/sunrpc/clnt.c
123398 +++ b/net/sunrpc/clnt.c
123399 @@ -1428,7 +1428,9 @@ call_start(struct rpc_task *task)
123400 (RPC_IS_ASYNC(task) ? "async" : "sync"));
123401
123402 /* Increment call count */
123403 - task->tk_msg.rpc_proc->p_count++;
123404 + pax_open_kernel();
123405 + (*(unsigned int *)&task->tk_msg.rpc_proc->p_count)++;
123406 + pax_close_kernel();
123407 clnt->cl_stats->rpccnt++;
123408 task->tk_action = call_reserve;
123409 }
123410 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
123411 index 337ca85..42feae8 100644
123412 --- a/net/sunrpc/sched.c
123413 +++ b/net/sunrpc/sched.c
123414 @@ -261,9 +261,9 @@ static int rpc_wait_bit_killable(struct wait_bit_key *key)
123415 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) || IS_ENABLED(CONFIG_TRACEPOINTS)
123416 static void rpc_task_set_debuginfo(struct rpc_task *task)
123417 {
123418 - static atomic_t rpc_pid;
123419 + static atomic_unchecked_t rpc_pid;
123420
123421 - task->tk_pid = atomic_inc_return(&rpc_pid);
123422 + task->tk_pid = atomic_inc_return_unchecked(&rpc_pid);
123423 }
123424 #else
123425 static inline void rpc_task_set_debuginfo(struct rpc_task *task)
123426 diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
123427 index 2ecb994..5afb49f 100644
123428 --- a/net/sunrpc/stats.c
123429 +++ b/net/sunrpc/stats.c
123430 @@ -290,7 +290,7 @@ int rpc_proc_init(struct net *net)
123431
123432 dprintk("RPC: registering /proc/net/rpc\n");
123433 sn = net_generic(net, sunrpc_net_id);
123434 - sn->proc_net_rpc = proc_mkdir("rpc", net->proc_net);
123435 + sn->proc_net_rpc = proc_mkdir_restrict("rpc", net->proc_net);
123436 if (sn->proc_net_rpc == NULL)
123437 return -ENOMEM;
123438
123439 diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
123440 index 5a16d8d..bafbc6f 100644
123441 --- a/net/sunrpc/svc.c
123442 +++ b/net/sunrpc/svc.c
123443 @@ -1169,7 +1169,9 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
123444 svc_putnl(resv, RPC_SUCCESS);
123445
123446 /* Bump per-procedure stats counter */
123447 - procp->pc_count++;
123448 + pax_open_kernel();
123449 + (*(unsigned int *)&procp->pc_count)++;
123450 + pax_close_kernel();
123451
123452 /* Initialize storage for argp and resp */
123453 memset(rqstp->rq_argp, 0, procp->pc_argsize);
123454 diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
123455 index 621ca7b..59421dd 100644
123456 --- a/net/sunrpc/svcauth_unix.c
123457 +++ b/net/sunrpc/svcauth_unix.c
123458 @@ -414,7 +414,7 @@ struct unix_gid {
123459 struct group_info *gi;
123460 };
123461
123462 -static int unix_gid_hash(kuid_t uid)
123463 +static int __intentional_overflow(-1) unix_gid_hash(kuid_t uid)
123464 {
123465 return hash_long(from_kuid(&init_user_ns, uid), GID_HASHBITS);
123466 }
123467 @@ -470,7 +470,7 @@ static void unix_gid_request(struct cache_detail *cd,
123468 (*bpp)[-1] = '\n';
123469 }
123470
123471 -static struct unix_gid *unix_gid_lookup(struct cache_detail *cd, kuid_t uid);
123472 +static struct unix_gid * __intentional_overflow(-1) unix_gid_lookup(struct cache_detail *cd, kuid_t uid);
123473
123474 static int unix_gid_parse(struct cache_detail *cd,
123475 char *mesg, int mlen)
123476 diff --git a/net/sunrpc/xprtrdma/svc_rdma.c b/net/sunrpc/xprtrdma/svc_rdma.c
123477 index 2cd252f..eefac51 100644
123478 --- a/net/sunrpc/xprtrdma/svc_rdma.c
123479 +++ b/net/sunrpc/xprtrdma/svc_rdma.c
123480 @@ -61,15 +61,15 @@ unsigned int svcrdma_max_req_size = RPCRDMA_MAX_REQ_SIZE;
123481 static unsigned int min_max_inline = 4096;
123482 static unsigned int max_max_inline = 65536;
123483
123484 -atomic_t rdma_stat_recv;
123485 -atomic_t rdma_stat_read;
123486 -atomic_t rdma_stat_write;
123487 -atomic_t rdma_stat_sq_starve;
123488 -atomic_t rdma_stat_rq_starve;
123489 -atomic_t rdma_stat_rq_poll;
123490 -atomic_t rdma_stat_rq_prod;
123491 -atomic_t rdma_stat_sq_poll;
123492 -atomic_t rdma_stat_sq_prod;
123493 +atomic_unchecked_t rdma_stat_recv;
123494 +atomic_unchecked_t rdma_stat_read;
123495 +atomic_unchecked_t rdma_stat_write;
123496 +atomic_unchecked_t rdma_stat_sq_starve;
123497 +atomic_unchecked_t rdma_stat_rq_starve;
123498 +atomic_unchecked_t rdma_stat_rq_poll;
123499 +atomic_unchecked_t rdma_stat_rq_prod;
123500 +atomic_unchecked_t rdma_stat_sq_poll;
123501 +atomic_unchecked_t rdma_stat_sq_prod;
123502
123503 /* Temporary NFS request map and context caches */
123504 struct kmem_cache *svc_rdma_map_cachep;
123505 @@ -109,7 +109,7 @@ static int read_reset_stat(struct ctl_table *table, int write,
123506 len -= *ppos;
123507 if (len > *lenp)
123508 len = *lenp;
123509 - if (len && copy_to_user(buffer, str_buf, len))
123510 + if (len > sizeof str_buf || (len && copy_to_user(buffer, str_buf, len)))
123511 return -EFAULT;
123512 *lenp = len;
123513 *ppos += len;
123514 @@ -150,63 +150,63 @@ static struct ctl_table svcrdma_parm_table[] = {
123515 {
123516 .procname = "rdma_stat_read",
123517 .data = &rdma_stat_read,
123518 - .maxlen = sizeof(atomic_t),
123519 + .maxlen = sizeof(atomic_unchecked_t),
123520 .mode = 0644,
123521 .proc_handler = read_reset_stat,
123522 },
123523 {
123524 .procname = "rdma_stat_recv",
123525 .data = &rdma_stat_recv,
123526 - .maxlen = sizeof(atomic_t),
123527 + .maxlen = sizeof(atomic_unchecked_t),
123528 .mode = 0644,
123529 .proc_handler = read_reset_stat,
123530 },
123531 {
123532 .procname = "rdma_stat_write",
123533 .data = &rdma_stat_write,
123534 - .maxlen = sizeof(atomic_t),
123535 + .maxlen = sizeof(atomic_unchecked_t),
123536 .mode = 0644,
123537 .proc_handler = read_reset_stat,
123538 },
123539 {
123540 .procname = "rdma_stat_sq_starve",
123541 .data = &rdma_stat_sq_starve,
123542 - .maxlen = sizeof(atomic_t),
123543 + .maxlen = sizeof(atomic_unchecked_t),
123544 .mode = 0644,
123545 .proc_handler = read_reset_stat,
123546 },
123547 {
123548 .procname = "rdma_stat_rq_starve",
123549 .data = &rdma_stat_rq_starve,
123550 - .maxlen = sizeof(atomic_t),
123551 + .maxlen = sizeof(atomic_unchecked_t),
123552 .mode = 0644,
123553 .proc_handler = read_reset_stat,
123554 },
123555 {
123556 .procname = "rdma_stat_rq_poll",
123557 .data = &rdma_stat_rq_poll,
123558 - .maxlen = sizeof(atomic_t),
123559 + .maxlen = sizeof(atomic_unchecked_t),
123560 .mode = 0644,
123561 .proc_handler = read_reset_stat,
123562 },
123563 {
123564 .procname = "rdma_stat_rq_prod",
123565 .data = &rdma_stat_rq_prod,
123566 - .maxlen = sizeof(atomic_t),
123567 + .maxlen = sizeof(atomic_unchecked_t),
123568 .mode = 0644,
123569 .proc_handler = read_reset_stat,
123570 },
123571 {
123572 .procname = "rdma_stat_sq_poll",
123573 .data = &rdma_stat_sq_poll,
123574 - .maxlen = sizeof(atomic_t),
123575 + .maxlen = sizeof(atomic_unchecked_t),
123576 .mode = 0644,
123577 .proc_handler = read_reset_stat,
123578 },
123579 {
123580 .procname = "rdma_stat_sq_prod",
123581 .data = &rdma_stat_sq_prod,
123582 - .maxlen = sizeof(atomic_t),
123583 + .maxlen = sizeof(atomic_unchecked_t),
123584 .mode = 0644,
123585 .proc_handler = read_reset_stat,
123586 },
123587 diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
123588 index 2e1348b..2d3b463 100644
123589 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
123590 +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
123591 @@ -209,7 +209,7 @@ int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
123592 *page_no = pg_no;
123593 *page_offset = pg_off;
123594 ret = read;
123595 - atomic_inc(&rdma_stat_read);
123596 + atomic_inc_unchecked(&rdma_stat_read);
123597 return ret;
123598 err:
123599 svc_rdma_unmap_dma(ctxt);
123600 @@ -345,7 +345,7 @@ int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
123601 *page_no = pg_no;
123602 *page_offset = pg_off;
123603 ret = read;
123604 - atomic_inc(&rdma_stat_read);
123605 + atomic_inc_unchecked(&rdma_stat_read);
123606 return ret;
123607 err:
123608 svc_rdma_unmap_dma(ctxt);
123609 @@ -599,7 +599,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
123610 dto_q);
123611 list_del_init(&ctxt->dto_q);
123612 } else {
123613 - atomic_inc(&rdma_stat_rq_starve);
123614 + atomic_inc_unchecked(&rdma_stat_rq_starve);
123615 clear_bit(XPT_DATA, &xprt->xpt_flags);
123616 ctxt = NULL;
123617 }
123618 @@ -617,7 +617,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
123619 }
123620 dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n",
123621 ctxt, rdma_xprt, rqstp, ctxt->wc_status);
123622 - atomic_inc(&rdma_stat_recv);
123623 + atomic_inc_unchecked(&rdma_stat_recv);
123624
123625 /* Build up the XDR from the receive buffers. */
123626 rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
123627 diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
123628 index d25cd43..1f5cb46 100644
123629 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
123630 +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
123631 @@ -218,7 +218,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
123632 write_wr.wr.rdma.remote_addr = to;
123633
123634 /* Post It */
123635 - atomic_inc(&rdma_stat_write);
123636 + atomic_inc_unchecked(&rdma_stat_write);
123637 if (svc_rdma_send(xprt, &write_wr))
123638 goto err;
123639 return write_len - bc;
123640 diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
123641 index 48f6de9..e89176b 100644
123642 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
123643 +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
123644 @@ -288,7 +288,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
123645 return;
123646
123647 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
123648 - atomic_inc(&rdma_stat_rq_poll);
123649 + atomic_inc_unchecked(&rdma_stat_rq_poll);
123650
123651 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
123652 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
123653 @@ -310,7 +310,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
123654 }
123655
123656 if (ctxt)
123657 - atomic_inc(&rdma_stat_rq_prod);
123658 + atomic_inc_unchecked(&rdma_stat_rq_prod);
123659
123660 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
123661 /*
123662 @@ -389,7 +389,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
123663 return;
123664
123665 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
123666 - atomic_inc(&rdma_stat_sq_poll);
123667 + atomic_inc_unchecked(&rdma_stat_sq_poll);
123668 while ((ret = ib_poll_cq(cq, ARRAY_SIZE(wc_a), wc_a)) > 0) {
123669 int i;
123670
123671 @@ -418,7 +418,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
123672 }
123673
123674 if (ctxt)
123675 - atomic_inc(&rdma_stat_sq_prod);
123676 + atomic_inc_unchecked(&rdma_stat_sq_prod);
123677 }
123678
123679 static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
123680 @@ -1254,7 +1254,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
123681 spin_lock_bh(&xprt->sc_lock);
123682 if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
123683 spin_unlock_bh(&xprt->sc_lock);
123684 - atomic_inc(&rdma_stat_sq_starve);
123685 + atomic_inc_unchecked(&rdma_stat_sq_starve);
123686
123687 /* See if we can opportunistically reap SQ WR to make room */
123688 sq_cq_reap(xprt);
123689 diff --git a/net/sysctl_net.c b/net/sysctl_net.c
123690 index e7000be..e3b0ba7 100644
123691 --- a/net/sysctl_net.c
123692 +++ b/net/sysctl_net.c
123693 @@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ctl_table_header *head,
123694 kgid_t root_gid = make_kgid(net->user_ns, 0);
123695
123696 /* Allow network administrator to have same access as root. */
123697 - if (ns_capable(net->user_ns, CAP_NET_ADMIN) ||
123698 + if (ns_capable_nolog(net->user_ns, CAP_NET_ADMIN) ||
123699 uid_eq(root_uid, current_euid())) {
123700 int mode = (table->mode >> 6) & 7;
123701 return (mode << 6) | (mode << 3) | mode;
123702 diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c
123703 index 53e0fee..ed24ca6 100644
123704 --- a/net/tipc/netlink_compat.c
123705 +++ b/net/tipc/netlink_compat.c
123706 @@ -65,13 +65,13 @@ struct tipc_nl_compat_cmd_dump {
123707 int (*header)(struct tipc_nl_compat_msg *);
123708 int (*dumpit)(struct sk_buff *, struct netlink_callback *);
123709 int (*format)(struct tipc_nl_compat_msg *msg, struct nlattr **attrs);
123710 -};
123711 +} __no_const;
123712
123713 struct tipc_nl_compat_cmd_doit {
123714 int (*doit)(struct sk_buff *skb, struct genl_info *info);
123715 int (*transcode)(struct tipc_nl_compat_cmd_doit *cmd,
123716 struct sk_buff *skb, struct tipc_nl_compat_msg *msg);
123717 -};
123718 +} __no_const;
123719
123720 static int tipc_skb_tailroom(struct sk_buff *skb)
123721 {
123722 @@ -836,7 +836,10 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock)
123723 void *hdr;
123724 struct nlattr *nest;
123725 struct sk_buff *args;
123726 - struct tipc_nl_compat_cmd_dump dump;
123727 + static struct tipc_nl_compat_cmd_dump dump = {
123728 + .dumpit = tipc_nl_publ_dump,
123729 + .format = __tipc_nl_compat_publ_dump,
123730 + };
123731
123732 args = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
123733 if (!args)
123734 @@ -859,9 +862,6 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock)
123735 nla_nest_end(args, nest);
123736 genlmsg_end(args, hdr);
123737
123738 - dump.dumpit = tipc_nl_publ_dump;
123739 - dump.format = __tipc_nl_compat_publ_dump;
123740 -
123741 err = __tipc_nl_compat_dumpit(&dump, msg, args);
123742
123743 kfree_skb(args);
123744 diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
123745 index 350cca3..a108fc5 100644
123746 --- a/net/tipc/subscr.c
123747 +++ b/net/tipc/subscr.c
123748 @@ -75,7 +75,7 @@ static void tipc_subscrp_send_event(struct tipc_subscription *sub,
123749 struct tipc_subscriber *subscriber = sub->subscriber;
123750 struct kvec msg_sect;
123751
123752 - msg_sect.iov_base = (void *)&sub->evt;
123753 + msg_sect.iov_base = &sub->evt;
123754 msg_sect.iov_len = sizeof(struct tipc_event);
123755 sub->evt.event = htohl(event, sub->swap);
123756 sub->evt.found_lower = htohl(found_lower, sub->swap);
123757 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
123758 index 03ee4d3..55f7125 100644
123759 --- a/net/unix/af_unix.c
123760 +++ b/net/unix/af_unix.c
123761 @@ -802,6 +802,12 @@ static struct sock *unix_find_other(struct net *net,
123762 err = -ECONNREFUSED;
123763 if (!S_ISSOCK(inode->i_mode))
123764 goto put_fail;
123765 +
123766 + if (!gr_acl_handle_unix(path.dentry, path.mnt)) {
123767 + err = -EACCES;
123768 + goto put_fail;
123769 + }
123770 +
123771 u = unix_find_socket_byinode(inode);
123772 if (!u)
123773 goto put_fail;
123774 @@ -822,6 +828,13 @@ static struct sock *unix_find_other(struct net *net,
123775 if (u) {
123776 struct dentry *dentry;
123777 dentry = unix_sk(u)->path.dentry;
123778 +
123779 + if (!gr_handle_chroot_unix(pid_vnr(u->sk_peer_pid))) {
123780 + err = -EPERM;
123781 + sock_put(u);
123782 + goto fail;
123783 + }
123784 +
123785 if (dentry)
123786 touch_atime(&unix_sk(u)->path);
123787 } else
123788 @@ -855,12 +868,18 @@ static int unix_mknod(const char *sun_path, umode_t mode, struct path *res)
123789 */
123790 err = security_path_mknod(&path, dentry, mode, 0);
123791 if (!err) {
123792 + if (!gr_acl_handle_mknod(dentry, path.dentry, path.mnt, mode)) {
123793 + err = -EACCES;
123794 + goto out;
123795 + }
123796 err = vfs_mknod(d_inode(path.dentry), dentry, mode, 0);
123797 if (!err) {
123798 res->mnt = mntget(path.mnt);
123799 res->dentry = dget(dentry);
123800 + gr_handle_create(dentry, path.mnt);
123801 }
123802 }
123803 +out:
123804 done_path_create(&path, dentry);
123805 return err;
123806 }
123807 @@ -2440,11 +2459,14 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock,
123808 writable = unix_writable(sk);
123809 other = unix_peer_get(sk);
123810 if (other) {
123811 - if (unix_peer(other) != sk) {
123812 + unix_state_lock(other);
123813 + if (!sock_flag(other, SOCK_DEAD) && unix_peer(other) != sk) {
123814 + unix_state_unlock(other);
123815 sock_poll_wait(file, &unix_sk(other)->peer_wait, wait);
123816 if (unix_recvq_full(other))
123817 writable = 0;
123818 - }
123819 + } else
123820 + unix_state_unlock(other);
123821 sock_put(other);
123822 }
123823
123824 @@ -2541,9 +2563,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
123825 seq_puts(seq, "Num RefCount Protocol Flags Type St "
123826 "Inode Path\n");
123827 else {
123828 - struct sock *s = v;
123829 + struct sock *s = v, *peer;
123830 struct unix_sock *u = unix_sk(s);
123831 unix_state_lock(s);
123832 + peer = unix_peer(s);
123833 + unix_state_unlock(s);
123834 +
123835 + unix_state_double_lock(s, peer);
123836
123837 seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu",
123838 s,
123839 @@ -2568,10 +2594,29 @@ static int unix_seq_show(struct seq_file *seq, void *v)
123840 seq_putc(seq, '@');
123841 i++;
123842 }
123843 - for ( ; i < len; i++)
123844 - seq_putc(seq, u->addr->name->sun_path[i]);
123845 - }
123846 - unix_state_unlock(s);
123847 + for ( ; i < len; i++) {
123848 + char c = u->addr->name->sun_path[i];
123849 + switch (c) {
123850 + case '\n':
123851 + seq_putc(seq, '\\');
123852 + seq_putc(seq, 'n');
123853 + break;
123854 + case '\t':
123855 + seq_putc(seq, '\\');
123856 + seq_putc(seq, 't');
123857 + break;
123858 + case '\\':
123859 + seq_putc(seq, '\\');
123860 + seq_putc(seq, '\\');
123861 + break;
123862 + default:
123863 + seq_putc(seq, c);
123864 + }
123865 + }
123866 + } else if (peer)
123867 + seq_printf(seq, " P%lu", sock_i_ino(peer));
123868 +
123869 + unix_state_double_unlock(s, peer);
123870 seq_putc(seq, '\n');
123871 }
123872
123873 diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c
123874 index b3d5150..ff3a837 100644
123875 --- a/net/unix/sysctl_net_unix.c
123876 +++ b/net/unix/sysctl_net_unix.c
123877 @@ -28,7 +28,7 @@ static struct ctl_table unix_table[] = {
123878
123879 int __net_init unix_sysctl_register(struct net *net)
123880 {
123881 - struct ctl_table *table;
123882 + ctl_table_no_const *table;
123883
123884 table = kmemdup(unix_table, sizeof(unix_table), GFP_KERNEL);
123885 if (table == NULL)
123886 diff --git a/net/vmw_vsock/vmci_transport_notify.c b/net/vmw_vsock/vmci_transport_notify.c
123887 index 9b7f207..2596621 100644
123888 --- a/net/vmw_vsock/vmci_transport_notify.c
123889 +++ b/net/vmw_vsock/vmci_transport_notify.c
123890 @@ -662,19 +662,19 @@ static void vmci_transport_notify_pkt_process_negotiate(struct sock *sk)
123891
123892 /* Socket control packet based operations. */
123893 struct vmci_transport_notify_ops vmci_transport_notify_pkt_ops = {
123894 - vmci_transport_notify_pkt_socket_init,
123895 - vmci_transport_notify_pkt_socket_destruct,
123896 - vmci_transport_notify_pkt_poll_in,
123897 - vmci_transport_notify_pkt_poll_out,
123898 - vmci_transport_notify_pkt_handle_pkt,
123899 - vmci_transport_notify_pkt_recv_init,
123900 - vmci_transport_notify_pkt_recv_pre_block,
123901 - vmci_transport_notify_pkt_recv_pre_dequeue,
123902 - vmci_transport_notify_pkt_recv_post_dequeue,
123903 - vmci_transport_notify_pkt_send_init,
123904 - vmci_transport_notify_pkt_send_pre_block,
123905 - vmci_transport_notify_pkt_send_pre_enqueue,
123906 - vmci_transport_notify_pkt_send_post_enqueue,
123907 - vmci_transport_notify_pkt_process_request,
123908 - vmci_transport_notify_pkt_process_negotiate,
123909 + .socket_init = vmci_transport_notify_pkt_socket_init,
123910 + .socket_destruct = vmci_transport_notify_pkt_socket_destruct,
123911 + .poll_in = vmci_transport_notify_pkt_poll_in,
123912 + .poll_out = vmci_transport_notify_pkt_poll_out,
123913 + .handle_notify_pkt = vmci_transport_notify_pkt_handle_pkt,
123914 + .recv_init = vmci_transport_notify_pkt_recv_init,
123915 + .recv_pre_block = vmci_transport_notify_pkt_recv_pre_block,
123916 + .recv_pre_dequeue = vmci_transport_notify_pkt_recv_pre_dequeue,
123917 + .recv_post_dequeue = vmci_transport_notify_pkt_recv_post_dequeue,
123918 + .send_init = vmci_transport_notify_pkt_send_init,
123919 + .send_pre_block = vmci_transport_notify_pkt_send_pre_block,
123920 + .send_pre_enqueue = vmci_transport_notify_pkt_send_pre_enqueue,
123921 + .send_post_enqueue = vmci_transport_notify_pkt_send_post_enqueue,
123922 + .process_request = vmci_transport_notify_pkt_process_request,
123923 + .process_negotiate = vmci_transport_notify_pkt_process_negotiate,
123924 };
123925 diff --git a/net/vmw_vsock/vmci_transport_notify_qstate.c b/net/vmw_vsock/vmci_transport_notify_qstate.c
123926 index dc9c792..3089de0 100644
123927 --- a/net/vmw_vsock/vmci_transport_notify_qstate.c
123928 +++ b/net/vmw_vsock/vmci_transport_notify_qstate.c
123929 @@ -420,19 +420,19 @@ vmci_transport_notify_pkt_send_pre_enqueue(
123930
123931 /* Socket always on control packet based operations. */
123932 struct vmci_transport_notify_ops vmci_transport_notify_pkt_q_state_ops = {
123933 - vmci_transport_notify_pkt_socket_init,
123934 - vmci_transport_notify_pkt_socket_destruct,
123935 - vmci_transport_notify_pkt_poll_in,
123936 - vmci_transport_notify_pkt_poll_out,
123937 - vmci_transport_notify_pkt_handle_pkt,
123938 - vmci_transport_notify_pkt_recv_init,
123939 - vmci_transport_notify_pkt_recv_pre_block,
123940 - vmci_transport_notify_pkt_recv_pre_dequeue,
123941 - vmci_transport_notify_pkt_recv_post_dequeue,
123942 - vmci_transport_notify_pkt_send_init,
123943 - vmci_transport_notify_pkt_send_pre_block,
123944 - vmci_transport_notify_pkt_send_pre_enqueue,
123945 - vmci_transport_notify_pkt_send_post_enqueue,
123946 - vmci_transport_notify_pkt_process_request,
123947 - vmci_transport_notify_pkt_process_negotiate,
123948 + .socket_init = vmci_transport_notify_pkt_socket_init,
123949 + .socket_destruct = vmci_transport_notify_pkt_socket_destruct,
123950 + .poll_in = vmci_transport_notify_pkt_poll_in,
123951 + .poll_out = vmci_transport_notify_pkt_poll_out,
123952 + .handle_notify_pkt = vmci_transport_notify_pkt_handle_pkt,
123953 + .recv_init = vmci_transport_notify_pkt_recv_init,
123954 + .recv_pre_block = vmci_transport_notify_pkt_recv_pre_block,
123955 + .recv_pre_dequeue = vmci_transport_notify_pkt_recv_pre_dequeue,
123956 + .recv_post_dequeue = vmci_transport_notify_pkt_recv_post_dequeue,
123957 + .send_init = vmci_transport_notify_pkt_send_init,
123958 + .send_pre_block = vmci_transport_notify_pkt_send_pre_block,
123959 + .send_pre_enqueue = vmci_transport_notify_pkt_send_pre_enqueue,
123960 + .send_post_enqueue = vmci_transport_notify_pkt_send_post_enqueue,
123961 + .process_request = vmci_transport_notify_pkt_process_request,
123962 + .process_negotiate = vmci_transport_notify_pkt_process_negotiate,
123963 };
123964 diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
123965 index c8717c1..08539f5 100644
123966 --- a/net/wireless/wext-core.c
123967 +++ b/net/wireless/wext-core.c
123968 @@ -748,8 +748,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
123969 */
123970
123971 /* Support for very large requests */
123972 - if ((descr->flags & IW_DESCR_FLAG_NOMAX) &&
123973 - (user_length > descr->max_tokens)) {
123974 + if (user_length > descr->max_tokens) {
123975 /* Allow userspace to GET more than max so
123976 * we can support any size GET requests.
123977 * There is still a limit : -ENOMEM.
123978 @@ -788,22 +787,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
123979 }
123980 }
123981
123982 - if (IW_IS_GET(cmd) && !(descr->flags & IW_DESCR_FLAG_NOMAX)) {
123983 - /*
123984 - * If this is a GET, but not NOMAX, it means that the extra
123985 - * data is not bounded by userspace, but by max_tokens. Thus
123986 - * set the length to max_tokens. This matches the extra data
123987 - * allocation.
123988 - * The driver should fill it with the number of tokens it
123989 - * provided, and it may check iwp->length rather than having
123990 - * knowledge of max_tokens. If the driver doesn't change the
123991 - * iwp->length, this ioctl just copies back max_token tokens
123992 - * filled with zeroes. Hopefully the driver isn't claiming
123993 - * them to be valid data.
123994 - */
123995 - iwp->length = descr->max_tokens;
123996 - }
123997 -
123998 err = handler(dev, info, (union iwreq_data *) iwp, extra);
123999
124000 iwp->length += essid_compat;
124001 diff --git a/net/x25/sysctl_net_x25.c b/net/x25/sysctl_net_x25.c
124002 index 4323952..a06dfe1 100644
124003 --- a/net/x25/sysctl_net_x25.c
124004 +++ b/net/x25/sysctl_net_x25.c
124005 @@ -70,7 +70,7 @@ static struct ctl_table x25_table[] = {
124006 .mode = 0644,
124007 .proc_handler = proc_dointvec,
124008 },
124009 - { 0, },
124010 + { },
124011 };
124012
124013 void __init x25_register_sysctl(void)
124014 diff --git a/net/x25/x25_proc.c b/net/x25/x25_proc.c
124015 index 0917f04..f4e3d8c 100644
124016 --- a/net/x25/x25_proc.c
124017 +++ b/net/x25/x25_proc.c
124018 @@ -209,7 +209,7 @@ static const struct file_operations x25_seq_forward_fops = {
124019
124020 int __init x25_proc_init(void)
124021 {
124022 - if (!proc_mkdir("x25", init_net.proc_net))
124023 + if (!proc_mkdir_restrict("x25", init_net.proc_net))
124024 return -ENOMEM;
124025
124026 if (!proc_create("x25/route", S_IRUGO, init_net.proc_net,
124027 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
124028 index 18cead7..1cf90dc 100644
124029 --- a/net/xfrm/xfrm_policy.c
124030 +++ b/net/xfrm/xfrm_policy.c
124031 @@ -323,7 +323,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
124032 {
124033 policy->walk.dead = 1;
124034
124035 - atomic_inc(&policy->genid);
124036 + atomic_inc_unchecked(&policy->genid);
124037
124038 if (del_timer(&policy->polq.hold_timer))
124039 xfrm_pol_put(policy);
124040 @@ -773,7 +773,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
124041 else
124042 hlist_add_head(&policy->bydst, chain);
124043 __xfrm_policy_link(policy, dir);
124044 - atomic_inc(&net->xfrm.flow_cache_genid);
124045 + atomic_inc_unchecked(&net->xfrm.flow_cache_genid);
124046
124047 /* After previous checking, family can either be AF_INET or AF_INET6 */
124048 if (policy->family == AF_INET)
124049 @@ -1874,7 +1874,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
124050
124051 xdst->num_pols = num_pols;
124052 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols);
124053 - xdst->policy_genid = atomic_read(&pols[0]->genid);
124054 + xdst->policy_genid = atomic_read_unchecked(&pols[0]->genid);
124055
124056 return xdst;
124057 }
124058 @@ -2687,10 +2687,11 @@ void xfrm_garbage_collect(struct net *net)
124059 }
124060 EXPORT_SYMBOL(xfrm_garbage_collect);
124061
124062 -static void xfrm_garbage_collect_deferred(struct net *net)
124063 +void xfrm_garbage_collect_deferred(struct net *net)
124064 {
124065 flow_cache_flush_deferred(net);
124066 }
124067 +EXPORT_SYMBOL(xfrm_garbage_collect_deferred);
124068
124069 static void xfrm_init_pmtu(struct dst_entry *dst)
124070 {
124071 @@ -2740,7 +2741,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
124072 if (xdst->xfrm_genid != dst->xfrm->genid)
124073 return 0;
124074 if (xdst->num_pols > 0 &&
124075 - xdst->policy_genid != atomic_read(&xdst->pols[0]->genid))
124076 + xdst->policy_genid != atomic_read_unchecked(&xdst->pols[0]->genid))
124077 return 0;
124078
124079 mtu = dst_mtu(dst->child);
124080 @@ -2828,8 +2829,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
124081 dst_ops->link_failure = xfrm_link_failure;
124082 if (likely(dst_ops->neigh_lookup == NULL))
124083 dst_ops->neigh_lookup = xfrm_neigh_lookup;
124084 - if (likely(afinfo->garbage_collect == NULL))
124085 - afinfo->garbage_collect = xfrm_garbage_collect_deferred;
124086 rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo);
124087 }
124088 spin_unlock(&xfrm_policy_afinfo_lock);
124089 @@ -2883,7 +2882,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
124090 dst_ops->check = NULL;
124091 dst_ops->negative_advice = NULL;
124092 dst_ops->link_failure = NULL;
124093 - afinfo->garbage_collect = NULL;
124094 }
124095 return err;
124096 }
124097 @@ -3281,7 +3279,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
124098 sizeof(pol->xfrm_vec[i].saddr));
124099 pol->xfrm_vec[i].encap_family = mp->new_family;
124100 /* flush bundles */
124101 - atomic_inc(&pol->genid);
124102 + atomic_inc_unchecked(&pol->genid);
124103 }
124104 }
124105
124106 diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
124107 index 9895a8c..e1f3bfb 100644
124108 --- a/net/xfrm/xfrm_state.c
124109 +++ b/net/xfrm/xfrm_state.c
124110 @@ -166,12 +166,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family)
124111
124112 if (unlikely(afinfo == NULL))
124113 return -EAFNOSUPPORT;
124114 - typemap = afinfo->type_map;
124115 + typemap = (const struct xfrm_type **)afinfo->type_map;
124116 spin_lock_bh(&xfrm_type_lock);
124117
124118 - if (likely(typemap[type->proto] == NULL))
124119 + if (likely(typemap[type->proto] == NULL)) {
124120 + pax_open_kernel();
124121 typemap[type->proto] = type;
124122 - else
124123 + pax_close_kernel();
124124 + } else
124125 err = -EEXIST;
124126 spin_unlock_bh(&xfrm_type_lock);
124127 xfrm_state_put_afinfo(afinfo);
124128 @@ -187,13 +189,16 @@ int xfrm_unregister_type(const struct xfrm_type *type, unsigned short family)
124129
124130 if (unlikely(afinfo == NULL))
124131 return -EAFNOSUPPORT;
124132 - typemap = afinfo->type_map;
124133 + typemap = (const struct xfrm_type **)afinfo->type_map;
124134 spin_lock_bh(&xfrm_type_lock);
124135
124136 if (unlikely(typemap[type->proto] != type))
124137 err = -ENOENT;
124138 - else
124139 + else {
124140 + pax_open_kernel();
124141 typemap[type->proto] = NULL;
124142 + pax_close_kernel();
124143 + }
124144 spin_unlock_bh(&xfrm_type_lock);
124145 xfrm_state_put_afinfo(afinfo);
124146 return err;
124147 @@ -203,7 +208,6 @@ EXPORT_SYMBOL(xfrm_unregister_type);
124148 static const struct xfrm_type *xfrm_get_type(u8 proto, unsigned short family)
124149 {
124150 struct xfrm_state_afinfo *afinfo;
124151 - const struct xfrm_type **typemap;
124152 const struct xfrm_type *type;
124153 int modload_attempted = 0;
124154
124155 @@ -211,9 +215,8 @@ retry:
124156 afinfo = xfrm_state_get_afinfo(family);
124157 if (unlikely(afinfo == NULL))
124158 return NULL;
124159 - typemap = afinfo->type_map;
124160
124161 - type = typemap[proto];
124162 + type = afinfo->type_map[proto];
124163 if (unlikely(type && !try_module_get(type->owner)))
124164 type = NULL;
124165 if (!type && !modload_attempted) {
124166 @@ -247,7 +250,7 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
124167 return -EAFNOSUPPORT;
124168
124169 err = -EEXIST;
124170 - modemap = afinfo->mode_map;
124171 + modemap = (struct xfrm_mode **)afinfo->mode_map;
124172 spin_lock_bh(&xfrm_mode_lock);
124173 if (modemap[mode->encap])
124174 goto out;
124175 @@ -256,8 +259,10 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
124176 if (!try_module_get(afinfo->owner))
124177 goto out;
124178
124179 - mode->afinfo = afinfo;
124180 + pax_open_kernel();
124181 + *(const void **)&mode->afinfo = afinfo;
124182 modemap[mode->encap] = mode;
124183 + pax_close_kernel();
124184 err = 0;
124185
124186 out:
124187 @@ -281,10 +286,12 @@ int xfrm_unregister_mode(struct xfrm_mode *mode, int family)
124188 return -EAFNOSUPPORT;
124189
124190 err = -ENOENT;
124191 - modemap = afinfo->mode_map;
124192 + modemap = (struct xfrm_mode **)afinfo->mode_map;
124193 spin_lock_bh(&xfrm_mode_lock);
124194 if (likely(modemap[mode->encap] == mode)) {
124195 + pax_open_kernel();
124196 modemap[mode->encap] = NULL;
124197 + pax_close_kernel();
124198 module_put(mode->afinfo->owner);
124199 err = 0;
124200 }
124201 @@ -1505,10 +1512,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
124202 u32 xfrm_get_acqseq(void)
124203 {
124204 u32 res;
124205 - static atomic_t acqseq;
124206 + static atomic_unchecked_t acqseq;
124207
124208 do {
124209 - res = atomic_inc_return(&acqseq);
124210 + res = atomic_inc_return_unchecked(&acqseq);
124211 } while (!res);
124212
124213 return res;
124214 diff --git a/net/xfrm/xfrm_sysctl.c b/net/xfrm/xfrm_sysctl.c
124215 index 05a6e3d..6716ec9 100644
124216 --- a/net/xfrm/xfrm_sysctl.c
124217 +++ b/net/xfrm/xfrm_sysctl.c
124218 @@ -42,7 +42,7 @@ static struct ctl_table xfrm_table[] = {
124219
124220 int __net_init xfrm_sysctl_init(struct net *net)
124221 {
124222 - struct ctl_table *table;
124223 + ctl_table_no_const *table;
124224
124225 __xfrm_sysctl_init(net);
124226
124227 diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
124228 index d3437b8..6c3becb 100644
124229 --- a/scripts/Kbuild.include
124230 +++ b/scripts/Kbuild.include
124231 @@ -142,7 +142,7 @@ cc-ifversion = $(shell [ $(cc-version) $(1) $(2) ] && echo $(3) || echo $(4))
124232 # cc-ldoption
124233 # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both)
124234 cc-ldoption = $(call try-run,\
124235 - $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
124236 + $(CC) $(1) -Wl,-r -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
124237
124238 # ld-option
124239 # Usage: LDFLAGS += $(call ld-option, -X)
124240 diff --git a/scripts/Makefile.build b/scripts/Makefile.build
124241 index 01df30a..b687dbf 100644
124242 --- a/scripts/Makefile.build
124243 +++ b/scripts/Makefile.build
124244 @@ -60,7 +60,7 @@ endif
124245 endif
124246
124247 # Do not include host rules unless needed
124248 -ifneq ($(hostprogs-y)$(hostprogs-m),)
124249 +ifneq ($(hostprogs-y)$(hostprogs-m)$(hostlibs-y)$(hostlibs-m)$(hostcxxlibs-y)$(hostcxxlibs-m),)
124250 include scripts/Makefile.host
124251 endif
124252
124253 diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean
124254 index 55c96cb..e4e88ab 100644
124255 --- a/scripts/Makefile.clean
124256 +++ b/scripts/Makefile.clean
124257 @@ -38,7 +38,8 @@ subdir-ymn := $(addprefix $(obj)/,$(subdir-ymn))
124258 __clean-files := $(extra-y) $(extra-m) $(extra-) \
124259 $(always) $(targets) $(clean-files) \
124260 $(host-progs) \
124261 - $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
124262 + $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \
124263 + $(hostlibs-y) $(hostlibs-m) $(hostlibs-)
124264
124265 __clean-files := $(filter-out $(no-clean-files), $(__clean-files))
124266
124267 diff --git a/scripts/Makefile.host b/scripts/Makefile.host
124268 index 133edfa..c9aa07f 100644
124269 --- a/scripts/Makefile.host
124270 +++ b/scripts/Makefile.host
124271 @@ -20,7 +20,19 @@
124272 # Will compile qconf as a C++ program, and menu as a C program.
124273 # They are linked as C++ code to the executable qconf
124274
124275 +# hostprogs-y := conf
124276 +# conf-objs := conf.o libkconfig.so
124277 +# libkconfig-objs := expr.o type.o
124278 +# Will create a shared library named libkconfig.so that consists of
124279 +# expr.o and type.o (they are both compiled as C code and the object files
124280 +# are made as position independent code).
124281 +# conf.c is compiled as a C program, and conf.o is linked together with
124282 +# libkconfig.so as the executable conf.
124283 +# Note: Shared libraries consisting of C++ files are not supported
124284 +
124285 __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
124286 +__hostlibs := $(sort $(hostlibs-y) $(hostlibs-m))
124287 +__hostcxxlibs := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m))
124288
124289 # C code
124290 # Executables compiled from a single .c file
124291 @@ -42,6 +54,19 @@ host-cxxmulti := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m)))
124292 # C++ Object (.o) files compiled from .cc files
124293 host-cxxobjs := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
124294
124295 +# Shared libaries (only .c supported)
124296 +# Shared libraries (.so) - all .so files referenced in "xxx-objs"
124297 +host-cshlib := $(sort $(filter %.so, $(host-cobjs)))
124298 +host-cshlib += $(sort $(filter %.so, $(__hostlibs)))
124299 +host-cxxshlib := $(sort $(filter %.so, $(__hostcxxlibs)))
124300 +# Remove .so files from "xxx-objs"
124301 +host-cobjs := $(filter-out %.so,$(host-cobjs))
124302 +host-cxxobjs := $(filter-out %.so,$(host-cxxobjs))
124303 +
124304 +# Object (.o) files used by the shared libaries
124305 +host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))
124306 +host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs))))
124307 +
124308 # output directory for programs/.o files
124309 # hostprogs-y := tools/build may have been specified.
124310 # Retrieve also directory of .o files from prog-objs or prog-cxxobjs notation
124311 @@ -56,6 +81,10 @@ host-cmulti := $(addprefix $(obj)/,$(host-cmulti))
124312 host-cobjs := $(addprefix $(obj)/,$(host-cobjs))
124313 host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti))
124314 host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs))
124315 +host-cshlib := $(addprefix $(obj)/,$(host-cshlib))
124316 +host-cxxshlib := $(addprefix $(obj)/,$(host-cxxshlib))
124317 +host-cshobjs := $(addprefix $(obj)/,$(host-cshobjs))
124318 +host-cxxshobjs := $(addprefix $(obj)/,$(host-cxxshobjs))
124319 host-objdirs := $(addprefix $(obj)/,$(host-objdirs))
124320
124321 obj-dirs += $(host-objdirs)
124322 @@ -124,5 +153,37 @@ quiet_cmd_host-cxxobjs = HOSTCXX $@
124323 $(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE
124324 $(call if_changed_dep,host-cxxobjs)
124325
124326 +# Compile .c file, create position independent .o file
124327 +# host-cshobjs -> .o
124328 +quiet_cmd_host-cshobjs = HOSTCC -fPIC $@
124329 + cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $<
124330 +$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE
124331 + $(call if_changed_dep,host-cshobjs)
124332 +
124333 +# Compile .c file, create position independent .o file
124334 +# host-cxxshobjs -> .o
124335 +quiet_cmd_host-cxxshobjs = HOSTCXX -fPIC $@
124336 + cmd_host-cxxshobjs = $(HOSTCXX) $(hostcxx_flags) -fPIC -c -o $@ $<
124337 +$(host-cxxshobjs): $(obj)/%.o: $(src)/%.c FORCE
124338 + $(call if_changed_dep,host-cxxshobjs)
124339 +
124340 +# Link a shared library, based on position independent .o files
124341 +# *.o -> .so shared library (host-cshlib)
124342 +quiet_cmd_host-cshlib = HOSTLLD -shared $@
124343 + cmd_host-cshlib = $(HOSTCC) $(HOSTLDFLAGS) -shared -o $@ \
124344 + $(addprefix $(obj)/,$($(@F:.so=-objs))) \
124345 + $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
124346 +$(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
124347 + $(call if_changed,host-cshlib)
124348 +
124349 +# Link a shared library, based on position independent .o files
124350 +# *.o -> .so shared library (host-cxxshlib)
124351 +quiet_cmd_host-cxxshlib = HOSTLLD -shared $@
124352 + cmd_host-cxxshlib = $(HOSTCXX) $(HOSTLDFLAGS) -shared -o $@ \
124353 + $(addprefix $(obj)/,$($(@F:.so=-objs))) \
124354 + $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
124355 +$(host-cxxshlib): $(obj)/%: $(host-cxxshobjs) FORCE
124356 + $(call if_changed,host-cxxshlib)
124357 +
124358 targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\
124359 - $(host-cxxmulti) $(host-cxxobjs)
124360 + $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs)
124361 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
124362 index b304068..462d24e 100644
124363 --- a/scripts/basic/fixdep.c
124364 +++ b/scripts/basic/fixdep.c
124365 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz)
124366 /*
124367 * Lookup a value in the configuration string.
124368 */
124369 -static int is_defined_config(const char *name, int len, unsigned int hash)
124370 +static int is_defined_config(const char *name, unsigned int len, unsigned int hash)
124371 {
124372 struct item *aux;
124373
124374 @@ -211,10 +211,10 @@ static void clear_config(void)
124375 /*
124376 * Record the use of a CONFIG_* word.
124377 */
124378 -static void use_config(const char *m, int slen)
124379 +static void use_config(const char *m, unsigned int slen)
124380 {
124381 unsigned int hash = strhash(m, slen);
124382 - int c, i;
124383 + unsigned int c, i;
124384
124385 if (is_defined_config(m, slen, hash))
124386 return;
124387 @@ -235,9 +235,9 @@ static void use_config(const char *m, int slen)
124388
124389 static void parse_config_file(const char *map, size_t len)
124390 {
124391 - const int *end = (const int *) (map + len);
124392 + const unsigned int *end = (const unsigned int *) (map + len);
124393 /* start at +1, so that p can never be < map */
124394 - const int *m = (const int *) map + 1;
124395 + const unsigned int *m = (const unsigned int *) map + 1;
124396 const char *p, *q;
124397
124398 for (; m < end; m++) {
124399 @@ -435,7 +435,7 @@ static void print_deps(void)
124400 static void traps(void)
124401 {
124402 static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
124403 - int *p = (int *)test;
124404 + unsigned int *p = (unsigned int *)test;
124405
124406 if (*p != INT_CONF) {
124407 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n",
124408 diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
124409 index e81a8c7..a615ad7 100644
124410 --- a/scripts/dtc/checks.c
124411 +++ b/scripts/dtc/checks.c
124412 @@ -277,7 +277,7 @@ NODE_ERROR(duplicate_property_names, NULL);
124413 static void check_node_name_chars(struct check *c, struct node *dt,
124414 struct node *node)
124415 {
124416 - int n = strspn(node->name, c->data);
124417 + size_t n = strspn(node->name, c->data);
124418
124419 if (n < strlen(node->name))
124420 FAIL(c, "Bad character '%c' in node %s",
124421 @@ -297,7 +297,7 @@ NODE_ERROR(node_name_format, NULL, &node_name_chars);
124422 static void check_property_name_chars(struct check *c, struct node *dt,
124423 struct node *node, struct property *prop)
124424 {
124425 - int n = strspn(prop->name, c->data);
124426 + size_t n = strspn(prop->name, c->data);
124427
124428 if (n < strlen(prop->name))
124429 FAIL(c, "Bad character '%c' in property name \"%s\", node %s",
124430 @@ -399,7 +399,7 @@ static void check_explicit_phandles(struct check *c, struct node *root,
124431
124432 phandle = propval_cell(prop);
124433
124434 - if ((phandle == 0) || (phandle == -1)) {
124435 + if ((phandle == 0) || (phandle == ~0U)) {
124436 FAIL(c, "%s has bad value (0x%x) in %s property",
124437 node->fullpath, phandle, prop->name);
124438 return;
124439 @@ -462,7 +462,7 @@ static void fixup_phandle_references(struct check *c, struct node *dt,
124440 cell_t phandle;
124441
124442 for_each_marker_of_type(m, REF_PHANDLE) {
124443 - assert(m->offset + sizeof(cell_t) <= prop->val.len);
124444 + assert(m->offset + (int)sizeof(cell_t) <= prop->val.len);
124445
124446 refnode = get_node_by_ref(dt, m->ref);
124447 if (! refnode) {
124448 @@ -688,7 +688,7 @@ static void enable_warning_error(struct check *c, bool warn, bool error)
124449
124450 static void disable_warning_error(struct check *c, bool warn, bool error)
124451 {
124452 - int i;
124453 + size_t i;
124454
124455 /* Lowering level, also lower it for things this is the prereq
124456 * for */
124457 @@ -709,7 +709,7 @@ static void disable_warning_error(struct check *c, bool warn, bool error)
124458
124459 void parse_checks_option(bool warn, bool error, const char *arg)
124460 {
124461 - int i;
124462 + size_t i;
124463 const char *name = arg;
124464 bool enable = true;
124465
124466 @@ -737,7 +737,7 @@ void parse_checks_option(bool warn, bool error, const char *arg)
124467 void process_checks(bool force, struct boot_info *bi)
124468 {
124469 struct node *dt = bi->dt;
124470 - int i;
124471 + size_t i;
124472 int error = 0;
124473
124474 for (i = 0; i < ARRAY_SIZE(check_table); i++) {
124475 diff --git a/scripts/dtc/data.c b/scripts/dtc/data.c
124476 index 8cae237..dcdab66 100644
124477 --- a/scripts/dtc/data.c
124478 +++ b/scripts/dtc/data.c
124479 @@ -94,10 +94,10 @@ struct data data_copy_file(FILE *f, size_t maxlen)
124480 {
124481 struct data d = empty_data;
124482
124483 - while (!feof(f) && (d.len < maxlen)) {
124484 + while (!feof(f) && ((size_t)d.len < maxlen)) {
124485 size_t chunksize, ret;
124486
124487 - if (maxlen == -1)
124488 + if (maxlen == ~0UL)
124489 chunksize = 4096;
124490 else
124491 chunksize = maxlen - d.len;
124492 @@ -108,7 +108,7 @@ struct data data_copy_file(FILE *f, size_t maxlen)
124493 if (ferror(f))
124494 die("Error reading file into data: %s", strerror(errno));
124495
124496 - if (d.len + ret < d.len)
124497 + if (d.len + ret < (size_t)d.len)
124498 die("Overflow reading file into data\n");
124499
124500 d.len += ret;
124501 diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c
124502 index bd99fa2..e04d08d 100644
124503 --- a/scripts/dtc/flattree.c
124504 +++ b/scripts/dtc/flattree.c
124505 @@ -178,7 +178,7 @@ static void asm_emit_data(void *e, struct data d)
124506 for_each_marker_of_type(m, LABEL)
124507 emit_offset_label(f, m->ref, m->offset);
124508
124509 - while ((d.len - off) >= sizeof(uint32_t)) {
124510 + while ((d.len - off) >= (int)sizeof(uint32_t)) {
124511 asm_emit_cell(e, fdt32_to_cpu(*((uint32_t *)(d.val+off))));
124512 off += sizeof(uint32_t);
124513 }
124514 @@ -369,7 +369,7 @@ static void make_fdt_header(struct fdt_header *fdt,
124515 void dt_to_blob(FILE *f, struct boot_info *bi, int version)
124516 {
124517 struct version_info *vi = NULL;
124518 - int i;
124519 + size_t i;
124520 struct data blob = empty_data;
124521 struct data reservebuf = empty_data;
124522 struct data dtbuf = empty_data;
124523 @@ -463,7 +463,7 @@ static void dump_stringtable_asm(FILE *f, struct data strbuf)
124524 void dt_to_asm(FILE *f, struct boot_info *bi, int version)
124525 {
124526 struct version_info *vi = NULL;
124527 - int i;
124528 + size_t i;
124529 struct data strbuf = empty_data;
124530 struct reserve_info *re;
124531 const char *symprefix = "dt";
124532 @@ -543,7 +543,7 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version)
124533 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size >> 32));
124534 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size & 0xffffffff));
124535 }
124536 - for (i = 0; i < reservenum; i++) {
124537 + for (i = 0; i < (size_t)reservenum; i++) {
124538 fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n");
124539 }
124540
124541 diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c
124542 index e229b84..7141e8e 100644
124543 --- a/scripts/dtc/livetree.c
124544 +++ b/scripts/dtc/livetree.c
124545 @@ -492,7 +492,7 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle)
124546 {
124547 struct node *child, *node;
124548
124549 - assert((phandle != 0) && (phandle != -1));
124550 + assert((phandle != 0) && (phandle != ~0U));
124551
124552 if (tree->phandle == phandle) {
124553 if (tree->deleted)
124554 @@ -523,7 +523,7 @@ cell_t get_node_phandle(struct node *root, struct node *node)
124555 {
124556 static cell_t phandle = 1; /* FIXME: ick, static local */
124557
124558 - if ((node->phandle != 0) && (node->phandle != -1))
124559 + if ((node->phandle != 0) && (node->phandle != ~0U))
124560 return node->phandle;
124561
124562 while (get_node_by_phandle(root, phandle))
124563 diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh
124564 new file mode 100644
124565 index 0000000..eaa4fce
124566 --- /dev/null
124567 +++ b/scripts/gcc-plugin.sh
124568 @@ -0,0 +1,51 @@
124569 +#!/bin/sh
124570 +srctree=$(dirname "$0")
124571 +gccplugins_dir=$($3 -print-file-name=plugin)
124572 +plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/../tools/gcc -I"${gccplugins_dir}"/include 2>&1 <<EOF
124573 +#include "gcc-common.h"
124574 +#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)
124575 +#warning $2 CXX
124576 +#else
124577 +#warning $1 CC
124578 +#endif
124579 +EOF
124580 +)
124581 +
124582 +if [ $? -ne 0 ]
124583 +then
124584 + exit 1
124585 +fi
124586 +
124587 +case "$plugincc" in
124588 + *"$1 CC"*)
124589 + echo "$1"
124590 + exit 0
124591 + ;;
124592 +
124593 + *"$2 CXX"*)
124594 + # the c++ compiler needs another test, see below
124595 + ;;
124596 +
124597 + *)
124598 + exit 1
124599 + ;;
124600 +esac
124601 +
124602 +# we need a c++ compiler that supports the designated initializer GNU extension
124603 +plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/../tools/gcc -I"${gccplugins_dir}"/include 2>&1 <<EOF
124604 +#include "gcc-common.h"
124605 +class test {
124606 +public:
124607 + int test;
124608 +} test = {
124609 + .test = 1
124610 +};
124611 +EOF
124612 +)
124613 +
124614 +if [ $? -eq 0 ]
124615 +then
124616 + echo "$2"
124617 + exit 0
124618 +fi
124619 +exit 1
124620 diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
124621 index fdebd66..a349e33 100755
124622 --- a/scripts/headers_install.sh
124623 +++ b/scripts/headers_install.sh
124624 @@ -32,6 +32,7 @@ do
124625 FILE="$(basename "$i")"
124626 sed -r \
124627 -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \
124628 + -e 's/__intentional_overflow\([- \t,0-9]*\)//g' \
124629 -e 's/__attribute_const__([ \t]|$)/\1/g' \
124630 -e 's@^#include <linux/compiler.h>@@' \
124631 -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
124632 diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
124633 index 8fa81e8..a9ac144 100644
124634 --- a/scripts/kallsyms.c
124635 +++ b/scripts/kallsyms.c
124636 @@ -89,7 +89,7 @@ static inline int is_arm_mapping_symbol(const char *str)
124637 }
124638
124639 static int check_symbol_range(const char *sym, unsigned long long addr,
124640 - struct addr_range *ranges, int entries)
124641 + struct addr_range *ranges, size_t entries)
124642 {
124643 size_t i;
124644 struct addr_range *ar;
124645 @@ -178,7 +178,7 @@ static int read_symbol(FILE *in, struct sym_entry *s)
124646 }
124647
124648 static int symbol_in_range(struct sym_entry *s, struct addr_range *ranges,
124649 - int entries)
124650 + size_t entries)
124651 {
124652 size_t i;
124653 struct addr_range *ar;
124654 diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
124655 index 91ca126..5f7cad6 100644
124656 --- a/scripts/kconfig/lkc.h
124657 +++ b/scripts/kconfig/lkc.h
124658 @@ -108,7 +108,8 @@ void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
124659 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
124660 void menu_add_option(int token, char *arg);
124661 void menu_finalize(struct menu *parent);
124662 -void menu_set_type(int type);
124663 +enum symbol_type;
124664 +void menu_set_type(enum symbol_type type);
124665
124666 /* util.c */
124667 struct file *file_lookup(const char *name);
124668 @@ -123,7 +124,7 @@ struct gstr {
124669 * when max_width is not zero long lines in string s (if any) get
124670 * wrapped not to exceed the max_width value
124671 */
124672 - int max_width;
124673 + size_t max_width;
124674 };
124675 struct gstr str_new(void);
124676 void str_free(struct gstr *gs);
124677 diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
124678 index b05cc3d..72fb2a8 100644
124679 --- a/scripts/kconfig/menu.c
124680 +++ b/scripts/kconfig/menu.c
124681 @@ -109,7 +109,7 @@ void menu_add_dep(struct expr *dep)
124682 current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
124683 }
124684
124685 -void menu_set_type(int type)
124686 +void menu_set_type(enum symbol_type type)
124687 {
124688 struct symbol *sym = current_entry->sym;
124689
124690 diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
124691 index 70c5ee1..3126ab6 100644
124692 --- a/scripts/kconfig/symbol.c
124693 +++ b/scripts/kconfig/symbol.c
124694 @@ -957,7 +957,7 @@ const char *sym_escape_string_value(const char *in)
124695
124696 struct sym_match {
124697 struct symbol *sym;
124698 - off_t so, eo;
124699 + regoff_t so, eo;
124700 };
124701
124702 /* Compare matched symbols as thus:
124703 @@ -979,8 +979,8 @@ static int sym_rel_comp(const void *sym1, const void *sym2)
124704 * exactly; if this is the case, we can't decide which comes first,
124705 * and we fallback to sorting alphabetically.
124706 */
124707 - exact1 = (s1->eo - s1->so) == strlen(s1->sym->name);
124708 - exact2 = (s2->eo - s2->so) == strlen(s2->sym->name);
124709 + exact1 = (s1->eo - s1->so) == (long)strlen(s1->sym->name);
124710 + exact2 = (s2->eo - s2->so) == (long)strlen(s2->sym->name);
124711 if (exact1 && !exact2)
124712 return -1;
124713 if (!exact1 && exact2)
124714 diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
124715 index 1a10d8a..843fdce 100755
124716 --- a/scripts/link-vmlinux.sh
124717 +++ b/scripts/link-vmlinux.sh
124718 @@ -179,7 +179,7 @@ else
124719 fi;
124720
124721 # final build of init/
124722 -${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init
124723 +${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init GCC_PLUGINS_CFLAGS="${GCC_PLUGINS_CFLAGS}" GCC_PLUGINS_AFLAGS="${GCC_PLUGINS_AFLAGS}"
124724
124725 kallsymso=""
124726 kallsyms_vmlinux=""
124727 diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
124728 index 5f20882..d914642 100644
124729 --- a/scripts/mod/file2alias.c
124730 +++ b/scripts/mod/file2alias.c
124731 @@ -154,7 +154,7 @@ static void device_id_check(const char *modname, const char *device_id,
124732 unsigned long size, unsigned long id_size,
124733 void *symval)
124734 {
124735 - int i;
124736 + unsigned int i;
124737
124738 if (size % id_size || size < id_size) {
124739 fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo "
124740 @@ -183,7 +183,7 @@ static void device_id_check(const char *modname, const char *device_id,
124741 /* USB is special because the bcdDevice can be matched against a numeric range */
124742 /* Looks like "usb:vNpNdNdcNdscNdpNicNiscNipNinN" */
124743 static void do_usb_entry(void *symval,
124744 - unsigned int bcdDevice_initial, int bcdDevice_initial_digits,
124745 + unsigned int bcdDevice_initial, unsigned int bcdDevice_initial_digits,
124746 unsigned char range_lo, unsigned char range_hi,
124747 unsigned char max, struct module *mod)
124748 {
124749 @@ -293,7 +293,7 @@ static void do_usb_entry_multi(void *symval, struct module *mod)
124750 {
124751 unsigned int devlo, devhi;
124752 unsigned char chi, clo, max;
124753 - int ndigits;
124754 + unsigned int ndigits;
124755
124756 DEF_FIELD(symval, usb_device_id, match_flags);
124757 DEF_FIELD(symval, usb_device_id, idVendor);
124758 @@ -574,7 +574,7 @@ static void do_pnp_device_entry(void *symval, unsigned long size,
124759 for (i = 0; i < count; i++) {
124760 DEF_FIELD_ADDR(symval + i*id_size, pnp_device_id, id);
124761 char acpi_id[sizeof(*id)];
124762 - int j;
124763 + unsigned int j;
124764
124765 buf_printf(&mod->dev_table_buf,
124766 "MODULE_ALIAS(\"pnp:d%s*\");\n", *id);
124767 @@ -603,7 +603,7 @@ static void do_pnp_card_entries(void *symval, unsigned long size,
124768
124769 for (j = 0; j < PNP_MAX_DEVICES; j++) {
124770 const char *id = (char *)(*devs)[j].id;
124771 - int i2, j2;
124772 + unsigned int i2, j2;
124773 int dup = 0;
124774
124775 if (!id[0])
124776 @@ -629,7 +629,7 @@ static void do_pnp_card_entries(void *symval, unsigned long size,
124777 /* add an individual alias for every device entry */
124778 if (!dup) {
124779 char acpi_id[PNP_ID_LEN];
124780 - int k;
124781 + unsigned int k;
124782
124783 buf_printf(&mod->dev_table_buf,
124784 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
124785 @@ -979,7 +979,7 @@ static void dmi_ascii_filter(char *d, const char *s)
124786 static int do_dmi_entry(const char *filename, void *symval,
124787 char *alias)
124788 {
124789 - int i, j;
124790 + unsigned int i, j;
124791 DEF_FIELD_ADDR(symval, dmi_system_id, matches);
124792 sprintf(alias, "dmi*");
124793
124794 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
124795 index 12d3db3..be51548 100644
124796 --- a/scripts/mod/modpost.c
124797 +++ b/scripts/mod/modpost.c
124798 @@ -943,6 +943,7 @@ enum mismatch {
124799 ANY_EXIT_TO_ANY_INIT,
124800 EXPORT_TO_INIT_EXIT,
124801 EXTABLE_TO_NON_TEXT,
124802 + DATA_TO_TEXT
124803 };
124804
124805 /**
124806 @@ -1069,6 +1070,12 @@ static const struct sectioncheck sectioncheck[] = {
124807 .good_tosec = {ALL_TEXT_SECTIONS , NULL},
124808 .mismatch = EXTABLE_TO_NON_TEXT,
124809 .handler = extable_mismatch_handler,
124810 +},
124811 +/* Do not reference code from writable data */
124812 +{
124813 + .fromsec = { DATA_SECTIONS, NULL },
124814 + .bad_tosec = { ALL_TEXT_SECTIONS, NULL },
124815 + .mismatch = DATA_TO_TEXT
124816 }
124817 };
124818
124819 @@ -1218,10 +1225,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr,
124820 continue;
124821 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
124822 continue;
124823 - if (sym->st_value == addr)
124824 - return sym;
124825 /* Find a symbol nearby - addr are maybe negative */
124826 d = sym->st_value - addr;
124827 + if (d == 0)
124828 + return sym;
124829 if (d < 0)
124830 d = addr - sym->st_value;
124831 if (d < distance) {
124832 @@ -1504,6 +1511,14 @@ static void report_sec_mismatch(const char *modname,
124833 fatal("There's a special handler for this mismatch type, "
124834 "we should never get here.");
124835 break;
124836 + case DATA_TO_TEXT:
124837 +#if 0
124838 + fprintf(stderr,
124839 + "The %s %s:%s references\n"
124840 + "the %s %s:%s%s\n",
124841 + from, fromsec, fromsym, to, tosec, tosym, to_p);
124842 +#endif
124843 + break;
124844 }
124845 fprintf(stderr, "\n");
124846 }
124847 @@ -1893,7 +1908,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
124848 static void check_sec_ref(struct module *mod, const char *modname,
124849 struct elf_info *elf)
124850 {
124851 - int i;
124852 + unsigned int i;
124853 Elf_Shdr *sechdrs = elf->sechdrs;
124854
124855 /* Walk through all sections */
124856 @@ -2024,7 +2039,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf,
124857 va_end(ap);
124858 }
124859
124860 -void buf_write(struct buffer *buf, const char *s, int len)
124861 +void buf_write(struct buffer *buf, const char *s, unsigned int len)
124862 {
124863 if (buf->size - buf->pos < len) {
124864 buf->size += len + SZ;
124865 @@ -2243,7 +2258,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
124866 if (fstat(fileno(file), &st) < 0)
124867 goto close_write;
124868
124869 - if (st.st_size != b->pos)
124870 + if (st.st_size != (off_t)b->pos)
124871 goto close_write;
124872
124873 tmp = NOFAIL(malloc(b->pos));
124874 diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
124875 index 168b43d..77914bf 100644
124876 --- a/scripts/mod/modpost.h
124877 +++ b/scripts/mod/modpost.h
124878 @@ -92,15 +92,15 @@ void *do_nofail(void *ptr, const char *expr);
124879
124880 struct buffer {
124881 char *p;
124882 - int pos;
124883 - int size;
124884 + unsigned int pos;
124885 + unsigned int size;
124886 };
124887
124888 void __attribute__((format(printf, 2, 3)))
124889 buf_printf(struct buffer *buf, const char *fmt, ...);
124890
124891 void
124892 -buf_write(struct buffer *buf, const char *s, int len);
124893 +buf_write(struct buffer *buf, const char *s, unsigned int len);
124894
124895 struct module {
124896 struct module *next;
124897 diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
124898 index 944418d..15291e4 100644
124899 --- a/scripts/mod/sumversion.c
124900 +++ b/scripts/mod/sumversion.c
124901 @@ -470,7 +470,7 @@ static void write_version(const char *filename, const char *sum,
124902 goto out;
124903 }
124904
124905 - if (write(fd, sum, strlen(sum)+1) != strlen(sum)+1) {
124906 + if (write(fd, sum, strlen(sum)+1) != (ssize_t)strlen(sum)+1) {
124907 warn("writing sum in %s failed: %s\n",
124908 filename, strerror(errno));
124909 goto out;
124910 diff --git a/scripts/module-common.lds b/scripts/module-common.lds
124911 index 73a2c7d..df11b31 100644
124912 --- a/scripts/module-common.lds
124913 +++ b/scripts/module-common.lds
124914 @@ -6,6 +6,10 @@
124915 SECTIONS {
124916 /DISCARD/ : { *(.discard) }
124917
124918 + .rodata 0: {
124919 + *(.rodata) *(.rodata.*)
124920 + *(.data..read_only)
124921 + }
124922 __ksymtab 0 : { *(SORT(___ksymtab+*)) }
124923 __ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) }
124924 __ksymtab_unused 0 : { *(SORT(___ksymtab_unused+*)) }
124925 diff --git a/scripts/package/Makefile b/scripts/package/Makefile
124926 index 99ca6e7..3a1a1a1 100644
124927 --- a/scripts/package/Makefile
124928 +++ b/scripts/package/Makefile
124929 @@ -46,7 +46,7 @@ rpm-pkg rpm: FORCE
124930 ln -sf $(srctree) $(KERNELPATH)
124931 $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
124932 $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
124933 - tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
124934 + tar --owner=root --group=root -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
124935 rm $(KERNELPATH)
124936 rm -f $(objtree)/.scmversion
124937 $(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
124938 diff --git a/scripts/package/builddeb b/scripts/package/builddeb
124939 index 88dbf23..d1b4291 100755
124940 --- a/scripts/package/builddeb
124941 +++ b/scripts/package/builddeb
124942 @@ -304,6 +304,7 @@ fi
124943 (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
124944 (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
124945 (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
124946 +(cd $objtree; find tools/gcc -name \*.so >> "$objtree/debian/hdrobjfiles")
124947 destdir=$kernel_headers_dir/usr/src/linux-headers-$version
124948 mkdir -p "$destdir"
124949 (cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
124950 diff --git a/scripts/package/mkspec b/scripts/package/mkspec
124951 index d9ab94b..eb7f04c 100755
124952 --- a/scripts/package/mkspec
124953 +++ b/scripts/package/mkspec
124954 @@ -122,30 +122,41 @@ echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}"
124955 echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE"
124956 echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\""
124957 echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)"
124958 -echo 'cd $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE"
124959 -echo "ln -sf /usr/src/kernels/$KERNELRELEASE build"
124960 -echo "ln -sf /usr/src/kernels/$KERNELRELEASE source"
124961 fi
124962
124963 echo ""
124964 echo "%clean"
124965 echo 'rm -rf $RPM_BUILD_ROOT'
124966 echo ""
124967 +echo "%pre"
124968 +echo 'chmod -f 0500 /boot'
124969 +echo 'if [ -d /lib/modules ]; then'
124970 +echo 'chmod -f 0500 /lib/modules'
124971 +echo 'fi'
124972 +echo 'if [ -d /lib32/modules ]; then'
124973 +echo 'chmod -f 0500 /lib32/modules'
124974 +echo 'fi'
124975 +echo 'if [ -d /lib64/modules ]; then'
124976 +echo 'chmod -f 0500 /lib64/modules'
124977 +echo 'fi'
124978 +echo ""
124979 +echo "%post devel"
124980 +echo "ln -sf /usr/src/kernels/$KERNELRELEASE /lib/modules/$KERNELRELEASE/build"
124981 +echo "ln -sf /usr/src/kernels/$KERNELRELEASE /lib/modules/$KERNELRELEASE/source"
124982 +echo ""
124983 echo "%post"
124984 -echo "if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then"
124985 -echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm"
124986 -echo "cp /boot/System.map-$KERNELRELEASE /boot/System.map-$KERNELRELEASE-rpm"
124987 -echo "rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE"
124988 -echo "/sbin/installkernel $KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
124989 -echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
124990 +echo "if [ -x /sbin/dracut ]; then"
124991 +echo '/sbin/new-kernel-pkg --dracut --mkinitrd --depmod --install --make-default '"$KERNELRELEASE"' || exit $?'
124992 +echo "else"
124993 +echo '/sbin/new-kernel-pkg --mkinitrd --depmod --install --make-default '"$KERNELRELEASE"' || exit $?'
124994 echo "fi"
124995 echo ""
124996 echo "%files"
124997 -echo '%defattr (-, root, root)'
124998 +echo '%defattr (400, root, root, 500)'
124999 echo "%dir /lib/modules"
125000 -echo "/lib/modules/$KERNELRELEASE"
125001 echo "%exclude /lib/modules/$KERNELRELEASE/build"
125002 echo "%exclude /lib/modules/$KERNELRELEASE/source"
125003 +echo "/lib/modules/$KERNELRELEASE"
125004 echo "/lib/firmware/$KERNELRELEASE"
125005 echo "/boot/*"
125006 echo ""
125007 @@ -155,9 +166,8 @@ echo "/usr/include"
125008 echo ""
125009 if ! $PREBUILT; then
125010 echo "%files devel"
125011 -echo '%defattr (-, root, root)'
125012 +echo '%defattr (400, root, root, 500)'
125013 +echo "%dir /lib/modules/$KERNELRELEASE"
125014 echo "/usr/src/kernels/$KERNELRELEASE"
125015 -echo "/lib/modules/$KERNELRELEASE/build"
125016 -echo "/lib/modules/$KERNELRELEASE/source"
125017 echo ""
125018 fi
125019 diff --git a/scripts/pnmtologo.c b/scripts/pnmtologo.c
125020 index 4718d78..9220d58 100644
125021 --- a/scripts/pnmtologo.c
125022 +++ b/scripts/pnmtologo.c
125023 @@ -244,14 +244,14 @@ static void write_header(void)
125024 fprintf(out, " * Linux logo %s\n", logoname);
125025 fputs(" */\n\n", out);
125026 fputs("#include <linux/linux_logo.h>\n\n", out);
125027 - fprintf(out, "static unsigned char %s_data[] __initdata = {\n",
125028 + fprintf(out, "static unsigned char %s_data[] = {\n",
125029 logoname);
125030 }
125031
125032 static void write_footer(void)
125033 {
125034 fputs("\n};\n\n", out);
125035 - fprintf(out, "const struct linux_logo %s __initconst = {\n", logoname);
125036 + fprintf(out, "const struct linux_logo %s = {\n", logoname);
125037 fprintf(out, "\t.type\t\t= %s,\n", logo_types[logo_type]);
125038 fprintf(out, "\t.width\t\t= %d,\n", logo_width);
125039 fprintf(out, "\t.height\t\t= %d,\n", logo_height);
125040 @@ -381,7 +381,7 @@ static void write_logo_clut224(void)
125041 fputs("\n};\n\n", out);
125042
125043 /* write logo clut */
125044 - fprintf(out, "static unsigned char %s_clut[] __initdata = {\n",
125045 + fprintf(out, "static unsigned char %s_clut[] = {\n",
125046 logoname);
125047 write_hex_cnt = 0;
125048 for (i = 0; i < logo_clutsize; i++) {
125049 diff --git a/scripts/sortextable.h b/scripts/sortextable.h
125050 index ba87004..3f4852c 100644
125051 --- a/scripts/sortextable.h
125052 +++ b/scripts/sortextable.h
125053 @@ -108,9 +108,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort)
125054 const char *secstrtab;
125055 const char *strtab;
125056 char *extab_image;
125057 - int extab_index = 0;
125058 - int i;
125059 - int idx;
125060 + unsigned int extab_index = 0;
125061 + unsigned int i;
125062 + unsigned int idx;
125063 unsigned int num_sections;
125064 unsigned int secindex_strings;
125065
125066 diff --git a/scripts/tags.sh b/scripts/tags.sh
125067 index c0a932d..817c587 100755
125068 --- a/scripts/tags.sh
125069 +++ b/scripts/tags.sh
125070 @@ -26,7 +26,7 @@ else
125071 fi
125072
125073 # ignore userspace tools
125074 -ignore="$ignore ( -path ${tree}tools ) -prune -o"
125075 +ignore="$ignore ( -path \"${tree}tools/[^g]*\" ) -prune -o"
125076
125077 # Find all available archs
125078 find_all_archs()
125079 diff --git a/security/Kconfig b/security/Kconfig
125080 index bf4ec46..20e8f1f 100644
125081 --- a/security/Kconfig
125082 +++ b/security/Kconfig
125083 @@ -4,6 +4,981 @@
125084
125085 menu "Security options"
125086
125087 +menu "Grsecurity"
125088 +
125089 + config ARCH_TRACK_EXEC_LIMIT
125090 + bool
125091 +
125092 + config PAX_KERNEXEC_PLUGIN
125093 + bool
125094 +
125095 + config PAX_PER_CPU_PGD
125096 + bool
125097 +
125098 + config TASK_SIZE_MAX_SHIFT
125099 + int
125100 + depends on X86_64
125101 + default 47 if !PAX_PER_CPU_PGD
125102 + default 42 if PAX_PER_CPU_PGD
125103 +
125104 + config PAX_ENABLE_PAE
125105 + bool
125106 + default y if (X86_32 && (MPENTIUM4 || MK8 || MPSC || MCORE2 || MATOM))
125107 +
125108 + config PAX_USERCOPY_SLABS
125109 + bool
125110 +
125111 +config GRKERNSEC
125112 + bool "Grsecurity"
125113 + select CRYPTO
125114 + select CRYPTO_SHA256
125115 + select PROC_FS
125116 + select STOP_MACHINE
125117 + select TTY
125118 + select DEBUG_KERNEL
125119 + select DEBUG_LIST
125120 + select MULTIUSER
125121 + help
125122 + If you say Y here, you will be able to configure many features
125123 + that will enhance the security of your system. It is highly
125124 + recommended that you say Y here and read through the help
125125 + for each option so that you fully understand the features and
125126 + can evaluate their usefulness for your machine.
125127 +
125128 +choice
125129 + prompt "Configuration Method"
125130 + depends on GRKERNSEC
125131 + default GRKERNSEC_CONFIG_CUSTOM
125132 + help
125133 +
125134 +config GRKERNSEC_CONFIG_AUTO
125135 + bool "Automatic"
125136 + help
125137 + If you choose this configuration method, you'll be able to answer a small
125138 + number of simple questions about how you plan to use this kernel.
125139 + The settings of grsecurity and PaX will be automatically configured for
125140 + the highest commonly-used settings within the provided constraints.
125141 +
125142 + If you require additional configuration, custom changes can still be made
125143 + from the "custom configuration" menu.
125144 +
125145 +config GRKERNSEC_CONFIG_CUSTOM
125146 + bool "Custom"
125147 + help
125148 + If you choose this configuration method, you'll be able to configure all
125149 + grsecurity and PaX settings manually. Via this method, no options are
125150 + automatically enabled.
125151 +
125152 + Take note that if menuconfig is exited with this configuration method
125153 + chosen, you will not be able to use the automatic configuration methods
125154 + without starting again with a kernel configuration with no grsecurity
125155 + or PaX options specified inside.
125156 +
125157 +endchoice
125158 +
125159 +choice
125160 + prompt "Usage Type"
125161 + depends on (GRKERNSEC && GRKERNSEC_CONFIG_AUTO)
125162 + default GRKERNSEC_CONFIG_SERVER
125163 + help
125164 +
125165 +config GRKERNSEC_CONFIG_SERVER
125166 + bool "Server"
125167 + help
125168 + Choose this option if you plan to use this kernel on a server.
125169 +
125170 +config GRKERNSEC_CONFIG_DESKTOP
125171 + bool "Desktop"
125172 + help
125173 + Choose this option if you plan to use this kernel on a desktop.
125174 +
125175 +endchoice
125176 +
125177 +choice
125178 + prompt "Virtualization Type"
125179 + depends on (GRKERNSEC && X86 && GRKERNSEC_CONFIG_AUTO)
125180 + default GRKERNSEC_CONFIG_VIRT_NONE
125181 + help
125182 +
125183 +config GRKERNSEC_CONFIG_VIRT_NONE
125184 + bool "None"
125185 + help
125186 + Choose this option if this kernel will be run on bare metal.
125187 +
125188 +config GRKERNSEC_CONFIG_VIRT_GUEST
125189 + bool "Guest"
125190 + help
125191 + Choose this option if this kernel will be run as a VM guest.
125192 +
125193 +config GRKERNSEC_CONFIG_VIRT_HOST
125194 + bool "Host"
125195 + help
125196 + Choose this option if this kernel will be run as a VM host.
125197 +
125198 +endchoice
125199 +
125200 +choice
125201 + prompt "Virtualization Hardware"
125202 + depends on (GRKERNSEC && X86 && GRKERNSEC_CONFIG_AUTO && (GRKERNSEC_CONFIG_VIRT_GUEST || GRKERNSEC_CONFIG_VIRT_HOST))
125203 + help
125204 +
125205 +config GRKERNSEC_CONFIG_VIRT_EPT
125206 + bool "EPT/RVI Processor Support"
125207 + depends on X86
125208 + help
125209 + Choose this option if your CPU supports the EPT or RVI features of 2nd-gen
125210 + hardware virtualization. This allows for additional kernel hardening protections
125211 + to operate without additional performance impact.
125212 +
125213 + To see if your Intel processor supports EPT, see:
125214 + http://ark.intel.com/Products/VirtualizationTechnology
125215 + (Most Core i3/5/7 support EPT)
125216 +
125217 + To see if your AMD processor supports RVI, see:
125218 + http://support.amd.com/us/kbarticles/Pages/GPU120AMDRVICPUsHyperVWin8.aspx
125219 +
125220 +config GRKERNSEC_CONFIG_VIRT_SOFT
125221 + bool "First-gen/No Hardware Virtualization"
125222 + help
125223 + Choose this option if you use an Atom/Pentium/Core 2 processor that either doesn't
125224 + support hardware virtualization or doesn't support the EPT/RVI extensions.
125225 +
125226 +endchoice
125227 +
125228 +choice
125229 + prompt "Virtualization Software"
125230 + depends on (GRKERNSEC && GRKERNSEC_CONFIG_AUTO && (GRKERNSEC_CONFIG_VIRT_GUEST || GRKERNSEC_CONFIG_VIRT_HOST))
125231 + help
125232 +
125233 +config GRKERNSEC_CONFIG_VIRT_XEN
125234 + bool "Xen"
125235 + help
125236 + Choose this option if this kernel is running as a Xen guest or host.
125237 +
125238 +config GRKERNSEC_CONFIG_VIRT_VMWARE
125239 + bool "VMWare"
125240 + help
125241 + Choose this option if this kernel is running as a VMWare guest or host.
125242 +
125243 +config GRKERNSEC_CONFIG_VIRT_KVM
125244 + bool "KVM"
125245 + help
125246 + Choose this option if this kernel is running as a KVM guest or host.
125247 +
125248 +config GRKERNSEC_CONFIG_VIRT_VIRTUALBOX
125249 + bool "VirtualBox"
125250 + help
125251 + Choose this option if this kernel is running as a VirtualBox guest or host.
125252 +
125253 +config GRKERNSEC_CONFIG_VIRT_HYPERV
125254 + bool "Hyper-V"
125255 + help
125256 + Choose this option if this kernel is running as a Hyper-V guest.
125257 +
125258 +endchoice
125259 +
125260 +choice
125261 + prompt "Required Priorities"
125262 + depends on (GRKERNSEC && GRKERNSEC_CONFIG_AUTO)
125263 + default GRKERNSEC_CONFIG_PRIORITY_PERF
125264 + help
125265 +
125266 +config GRKERNSEC_CONFIG_PRIORITY_PERF
125267 + bool "Performance"
125268 + help
125269 + Choose this option if performance is of highest priority for this deployment
125270 + of grsecurity. Features like UDEREF on a 64bit kernel, kernel stack clearing,
125271 + clearing of structures intended for userland, and freed memory sanitizing will
125272 + be disabled.
125273 +
125274 +config GRKERNSEC_CONFIG_PRIORITY_SECURITY
125275 + bool "Security"
125276 + help
125277 + Choose this option if security is of highest priority for this deployment of
125278 + grsecurity. UDEREF, kernel stack clearing, clearing of structures intended
125279 + for userland, and freed memory sanitizing will be enabled for this kernel.
125280 + In a worst-case scenario, these features can introduce a 20% performance hit
125281 + (UDEREF on x64 contributing half of this hit).
125282 +
125283 +endchoice
125284 +
125285 +menu "Default Special Groups"
125286 +depends on (GRKERNSEC && GRKERNSEC_CONFIG_AUTO)
125287 +
125288 +config GRKERNSEC_PROC_GID
125289 + int "GID exempted from /proc restrictions"
125290 + default 1001
125291 + help
125292 + Setting this GID determines which group will be exempted from
125293 + grsecurity's /proc restrictions, allowing users of the specified
125294 + group to view network statistics and the existence of other users'
125295 + processes on the system. This GID may also be chosen at boot time
125296 + via "grsec_proc_gid=" on the kernel commandline.
125297 +
125298 +config GRKERNSEC_TPE_UNTRUSTED_GID
125299 + int "GID for TPE-untrusted users"
125300 + depends on GRKERNSEC_CONFIG_SERVER && GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT
125301 + default 1005
125302 + help
125303 + Setting this GID determines which group untrusted users should
125304 + be added to. These users will be placed under grsecurity's Trusted Path
125305 + Execution mechanism, preventing them from executing their own binaries.
125306 + The users will only be able to execute binaries in directories owned and
125307 + writable only by the root user. If the sysctl option is enabled, a sysctl
125308 + option with name "tpe_gid" is created.
125309 +
125310 +config GRKERNSEC_TPE_TRUSTED_GID
125311 + int "GID for TPE-trusted users"
125312 + depends on GRKERNSEC_CONFIG_SERVER && GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT
125313 + default 1005
125314 + help
125315 + Setting this GID determines what group TPE restrictions will be
125316 + *disabled* for. If the sysctl option is enabled, a sysctl option
125317 + with name "tpe_gid" is created.
125318 +
125319 +config GRKERNSEC_SYMLINKOWN_GID
125320 + int "GID for users with kernel-enforced SymlinksIfOwnerMatch"
125321 + depends on GRKERNSEC_CONFIG_SERVER
125322 + default 1006
125323 + help
125324 + Setting this GID determines what group kernel-enforced
125325 + SymlinksIfOwnerMatch will be enabled for. If the sysctl option
125326 + is enabled, a sysctl option with name "symlinkown_gid" is created.
125327 +
125328 +
125329 +endmenu
125330 +
125331 +menu "Customize Configuration"
125332 +depends on GRKERNSEC
125333 +
125334 +menu "PaX"
125335 +
125336 +config PAX
125337 + bool "Enable various PaX features"
125338 + default y if GRKERNSEC_CONFIG_AUTO
125339 + depends on GRKERNSEC && (ALPHA || ARM || AVR32 || IA64 || MIPS || PARISC || PPC || SPARC || X86)
125340 + help
125341 + This allows you to enable various PaX features. PaX adds
125342 + intrusion prevention mechanisms to the kernel that reduce
125343 + the risks posed by exploitable memory corruption bugs.
125344 +
125345 +menu "PaX Control"
125346 + depends on PAX
125347 +
125348 +config PAX_SOFTMODE
125349 + bool 'Support soft mode'
125350 + help
125351 + Enabling this option will allow you to run PaX in soft mode, that
125352 + is, PaX features will not be enforced by default, only on executables
125353 + marked explicitly. You must also enable PT_PAX_FLAGS or XATTR_PAX_FLAGS
125354 + support as they are the only way to mark executables for soft mode use.
125355 +
125356 + Soft mode can be activated by using the "pax_softmode=1" kernel command
125357 + line option on boot. Furthermore you can control various PaX features
125358 + at runtime via the entries in /proc/sys/kernel/pax.
125359 +
125360 +config PAX_EI_PAX
125361 + bool 'Use legacy ELF header marking'
125362 + default y if GRKERNSEC_CONFIG_AUTO
125363 + help
125364 + Enabling this option will allow you to control PaX features on
125365 + a per executable basis via the 'chpax' utility available at
125366 + http://pax.grsecurity.net/. The control flags will be read from
125367 + an otherwise reserved part of the ELF header. This marking has
125368 + numerous drawbacks (no support for soft-mode, toolchain does not
125369 + know about the non-standard use of the ELF header) therefore it
125370 + has been deprecated in favour of PT_PAX_FLAGS and XATTR_PAX_FLAGS
125371 + support.
125372 +
125373 + Note that if you enable PT_PAX_FLAGS or XATTR_PAX_FLAGS marking
125374 + support as well, they will override the legacy EI_PAX marks.
125375 +
125376 + If you enable none of the marking options then all applications
125377 + will run with PaX enabled on them by default.
125378 +
125379 +config PAX_PT_PAX_FLAGS
125380 + bool 'Use ELF program header marking'
125381 + default y if GRKERNSEC_CONFIG_AUTO
125382 + help
125383 + Enabling this option will allow you to control PaX features on
125384 + a per executable basis via the 'paxctl' utility available at
125385 + http://pax.grsecurity.net/. The control flags will be read from
125386 + a PaX specific ELF program header (PT_PAX_FLAGS). This marking
125387 + has the benefits of supporting both soft mode and being fully
125388 + integrated into the toolchain (the binutils patch is available
125389 + from http://pax.grsecurity.net).
125390 +
125391 + Note that if you enable the legacy EI_PAX marking support as well,
125392 + the EI_PAX marks will be overridden by the PT_PAX_FLAGS marks.
125393 +
125394 + If you enable both PT_PAX_FLAGS and XATTR_PAX_FLAGS support then you
125395 + must make sure that the marks are the same if a binary has both marks.
125396 +
125397 + If you enable none of the marking options then all applications
125398 + will run with PaX enabled on them by default.
125399 +
125400 +config PAX_XATTR_PAX_FLAGS
125401 + bool 'Use filesystem extended attributes marking'
125402 + default y if GRKERNSEC_CONFIG_AUTO
125403 + select CIFS_XATTR if CIFS
125404 + select EXT2_FS_XATTR if EXT2_FS
125405 + select EXT3_FS_XATTR if EXT3_FS
125406 + select F2FS_FS_XATTR if F2FS_FS
125407 + select JFFS2_FS_XATTR if JFFS2_FS
125408 + select REISERFS_FS_XATTR if REISERFS_FS
125409 + select SQUASHFS_XATTR if SQUASHFS
125410 + select TMPFS_XATTR if TMPFS
125411 + help
125412 + Enabling this option will allow you to control PaX features on
125413 + a per executable basis via the 'setfattr' utility. The control
125414 + flags will be read from the user.pax.flags extended attribute of
125415 + the file. This marking has the benefit of supporting binary-only
125416 + applications that self-check themselves (e.g., skype) and would
125417 + not tolerate chpax/paxctl changes. The main drawback is that
125418 + extended attributes are not supported by some filesystems (e.g.,
125419 + isofs, udf, vfat) so copying files through such filesystems will
125420 + lose the extended attributes and these PaX markings.
125421 +
125422 + Note that if you enable the legacy EI_PAX marking support as well,
125423 + the EI_PAX marks will be overridden by the XATTR_PAX_FLAGS marks.
125424 +
125425 + If you enable both PT_PAX_FLAGS and XATTR_PAX_FLAGS support then you
125426 + must make sure that the marks are the same if a binary has both marks.
125427 +
125428 + If you enable none of the marking options then all applications
125429 + will run with PaX enabled on them by default.
125430 +
125431 +choice
125432 + prompt 'MAC system integration'
125433 + default PAX_HAVE_ACL_FLAGS
125434 + help
125435 + Mandatory Access Control systems have the option of controlling
125436 + PaX flags on a per executable basis, choose the method supported
125437 + by your particular system.
125438 +
125439 + - "none": if your MAC system does not interact with PaX,
125440 + - "direct": if your MAC system defines pax_set_initial_flags() itself,
125441 + - "hook": if your MAC system uses the pax_set_initial_flags_func callback.
125442 +
125443 + NOTE: this option is for developers/integrators only.
125444 +
125445 + config PAX_NO_ACL_FLAGS
125446 + bool 'none'
125447 +
125448 + config PAX_HAVE_ACL_FLAGS
125449 + bool 'direct'
125450 +
125451 + config PAX_HOOK_ACL_FLAGS
125452 + bool 'hook'
125453 +endchoice
125454 +
125455 +endmenu
125456 +
125457 +menu "Non-executable pages"
125458 + depends on PAX
125459 +
125460 +config PAX_NOEXEC
125461 + bool "Enforce non-executable pages"
125462 + default y if GRKERNSEC_CONFIG_AUTO
125463 + depends on ALPHA || (ARM && (CPU_V6 || CPU_V6K || CPU_V7)) || IA64 || MIPS || PARISC || PPC || S390 || SPARC || X86
125464 + help
125465 + By design some architectures do not allow for protecting memory
125466 + pages against execution or even if they do, Linux does not make
125467 + use of this feature. In practice this means that if a page is
125468 + readable (such as the stack or heap) it is also executable.
125469 +
125470 + There is a well known exploit technique that makes use of this
125471 + fact and a common programming mistake where an attacker can
125472 + introduce code of his choice somewhere in the attacked program's
125473 + memory (typically the stack or the heap) and then execute it.
125474 +
125475 + If the attacked program was running with different (typically
125476 + higher) privileges than that of the attacker, then he can elevate
125477 + his own privilege level (e.g. get a root shell, write to files for
125478 + which he does not have write access to, etc).
125479 +
125480 + Enabling this option will let you choose from various features
125481 + that prevent the injection and execution of 'foreign' code in
125482 + a program.
125483 +
125484 + This will also break programs that rely on the old behaviour and
125485 + expect that dynamically allocated memory via the malloc() family
125486 + of functions is executable (which it is not). Notable examples
125487 + are the XFree86 4.x server, the java runtime and wine.
125488 +
125489 +config PAX_PAGEEXEC
125490 + bool "Paging based non-executable pages"
125491 + default y if GRKERNSEC_CONFIG_AUTO
125492 + depends on PAX_NOEXEC && (!X86_32 || M586 || M586TSC || M586MMX || M686 || MPENTIUMII || MPENTIUMIII || MPENTIUMM || MCORE2 || MATOM || MPENTIUM4 || MPSC || MK7 || MK8 || MWINCHIPC6 || MWINCHIP2 || MWINCHIP3D || MVIAC3_2 || MVIAC7)
125493 + select ARCH_TRACK_EXEC_LIMIT if X86_32
125494 + help
125495 + This implementation is based on the paging feature of the CPU.
125496 + On i386 without hardware non-executable bit support there is a
125497 + variable but usually low performance impact, however on Intel's
125498 + P4 core based CPUs it is very high so you should not enable this
125499 + for kernels meant to be used on such CPUs.
125500 +
125501 + On alpha, avr32, ia64, parisc, sparc, sparc64, x86_64 and i386
125502 + with hardware non-executable bit support there is no performance
125503 + impact, on ppc the impact is negligible.
125504 +
125505 + Note that several architectures require various emulations due to
125506 + badly designed userland ABIs, this will cause a performance impact
125507 + but will disappear as soon as userland is fixed. For example, ppc
125508 + userland MUST have been built with secure-plt by a recent toolchain.
125509 +
125510 +config PAX_SEGMEXEC
125511 + bool "Segmentation based non-executable pages"
125512 + default y if GRKERNSEC_CONFIG_AUTO
125513 + depends on PAX_NOEXEC && X86_32
125514 + help
125515 + This implementation is based on the segmentation feature of the
125516 + CPU and has a very small performance impact, however applications
125517 + will be limited to a 1.5 GB address space instead of the normal
125518 + 3 GB.
125519 +
125520 +config PAX_EMUTRAMP
125521 + bool "Emulate trampolines"
125522 + default y if PARISC || GRKERNSEC_CONFIG_AUTO
125523 + depends on (PAX_PAGEEXEC || PAX_SEGMEXEC) && (PARISC || X86)
125524 + help
125525 + There are some programs and libraries that for one reason or
125526 + another attempt to execute special small code snippets from
125527 + non-executable memory pages. Most notable examples are the
125528 + signal handler return code generated by the kernel itself and
125529 + the GCC trampolines.
125530 +
125531 + If you enabled CONFIG_PAX_PAGEEXEC or CONFIG_PAX_SEGMEXEC then
125532 + such programs will no longer work under your kernel.
125533 +
125534 + As a remedy you can say Y here and use the 'chpax' or 'paxctl'
125535 + utilities to enable trampoline emulation for the affected programs
125536 + yet still have the protection provided by the non-executable pages.
125537 +
125538 + On parisc you MUST enable this option and EMUSIGRT as well, otherwise
125539 + your system will not even boot.
125540 +
125541 + Alternatively you can say N here and use the 'chpax' or 'paxctl'
125542 + utilities to disable CONFIG_PAX_PAGEEXEC and CONFIG_PAX_SEGMEXEC
125543 + for the affected files.
125544 +
125545 + NOTE: enabling this feature *may* open up a loophole in the
125546 + protection provided by non-executable pages that an attacker
125547 + could abuse. Therefore the best solution is to not have any
125548 + files on your system that would require this option. This can
125549 + be achieved by not using libc5 (which relies on the kernel
125550 + signal handler return code) and not using or rewriting programs
125551 + that make use of the nested function implementation of GCC.
125552 + Skilled users can just fix GCC itself so that it implements
125553 + nested function calls in a way that does not interfere with PaX.
125554 +
125555 +config PAX_EMUSIGRT
125556 + bool "Automatically emulate sigreturn trampolines"
125557 + depends on PAX_EMUTRAMP && PARISC
125558 + default y
125559 + help
125560 + Enabling this option will have the kernel automatically detect
125561 + and emulate signal return trampolines executing on the stack
125562 + that would otherwise lead to task termination.
125563 +
125564 + This solution is intended as a temporary one for users with
125565 + legacy versions of libc (libc5, glibc 2.0, uClibc before 0.9.17,
125566 + Modula-3 runtime, etc) or executables linked to such, basically
125567 + everything that does not specify its own SA_RESTORER function in
125568 + normal executable memory like glibc 2.1+ does.
125569 +
125570 + On parisc you MUST enable this option, otherwise your system will
125571 + not even boot.
125572 +
125573 + NOTE: this feature cannot be disabled on a per executable basis
125574 + and since it *does* open up a loophole in the protection provided
125575 + by non-executable pages, the best solution is to not have any
125576 + files on your system that would require this option.
125577 +
125578 +config PAX_MPROTECT
125579 + bool "Restrict mprotect()"
125580 + default y if GRKERNSEC_CONFIG_AUTO
125581 + depends on (PAX_PAGEEXEC || PAX_SEGMEXEC)
125582 + help
125583 + Enabling this option will prevent programs from
125584 + - changing the executable status of memory pages that were
125585 + not originally created as executable,
125586 + - making read-only executable pages writable again,
125587 + - creating executable pages from anonymous memory,
125588 + - making read-only-after-relocations (RELRO) data pages writable again.
125589 +
125590 + You should say Y here to complete the protection provided by
125591 + the enforcement of non-executable pages.
125592 +
125593 + NOTE: you can use the 'chpax' or 'paxctl' utilities to control
125594 + this feature on a per file basis.
125595 +
125596 +config PAX_MPROTECT_COMPAT
125597 + bool "Use legacy/compat protection demoting (read help)"
125598 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_DESKTOP)
125599 + depends on PAX_MPROTECT
125600 + help
125601 + The current implementation of PAX_MPROTECT denies RWX allocations/mprotects
125602 + by sending the proper error code to the application. For some broken
125603 + userland, this can cause problems with Python or other applications. The
125604 + current implementation however allows for applications like clamav to
125605 + detect if JIT compilation/execution is allowed and to fall back gracefully
125606 + to an interpreter-based mode if it does not. While we encourage everyone
125607 + to use the current implementation as-is and push upstream to fix broken
125608 + userland (note that the RWX logging option can assist with this), in some
125609 + environments this may not be possible. Having to disable MPROTECT
125610 + completely on certain binaries reduces the security benefit of PaX,
125611 + so this option is provided for those environments to revert to the old
125612 + behavior.
125613 +
125614 +config PAX_ELFRELOCS
125615 + bool "Allow ELF text relocations (read help)"
125616 + depends on PAX_MPROTECT
125617 + default n
125618 + help
125619 + Non-executable pages and mprotect() restrictions are effective
125620 + in preventing the introduction of new executable code into an
125621 + attacked task's address space. There remain only two venues
125622 + for this kind of attack: if the attacker can execute already
125623 + existing code in the attacked task then he can either have it
125624 + create and mmap() a file containing his code or have it mmap()
125625 + an already existing ELF library that does not have position
125626 + independent code in it and use mprotect() on it to make it
125627 + writable and copy his code there. While protecting against
125628 + the former approach is beyond PaX, the latter can be prevented
125629 + by having only PIC ELF libraries on one's system (which do not
125630 + need to relocate their code). If you are sure this is your case,
125631 + as is the case with all modern Linux distributions, then leave
125632 + this option disabled. You should say 'n' here.
125633 +
125634 +config PAX_ETEXECRELOCS
125635 + bool "Allow ELF ET_EXEC text relocations"
125636 + depends on PAX_MPROTECT && (ALPHA || IA64 || PARISC)
125637 + select PAX_ELFRELOCS
125638 + default y
125639 + help
125640 + On some architectures there are incorrectly created applications
125641 + that require text relocations and would not work without enabling
125642 + this option. If you are an alpha, ia64 or parisc user, you should
125643 + enable this option and disable it once you have made sure that
125644 + none of your applications need it.
125645 +
125646 +config PAX_EMUPLT
125647 + bool "Automatically emulate ELF PLT"
125648 + depends on PAX_MPROTECT && (ALPHA || PARISC || SPARC)
125649 + default y
125650 + help
125651 + Enabling this option will have the kernel automatically detect
125652 + and emulate the Procedure Linkage Table entries in ELF files.
125653 + On some architectures such entries are in writable memory, and
125654 + become non-executable leading to task termination. Therefore
125655 + it is mandatory that you enable this option on alpha, parisc,
125656 + sparc and sparc64, otherwise your system would not even boot.
125657 +
125658 + NOTE: this feature *does* open up a loophole in the protection
125659 + provided by the non-executable pages, therefore the proper
125660 + solution is to modify the toolchain to produce a PLT that does
125661 + not need to be writable.
125662 +
125663 +config PAX_DLRESOLVE
125664 + bool 'Emulate old glibc resolver stub'
125665 + depends on PAX_EMUPLT && SPARC
125666 + default n
125667 + help
125668 + This option is needed if userland has an old glibc (before 2.4)
125669 + that puts a 'save' instruction into the runtime generated resolver
125670 + stub that needs special emulation.
125671 +
125672 +config PAX_KERNEXEC
125673 + bool "Enforce non-executable kernel pages"
125674 + 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))
125675 + depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !(ARM_LPAE && MODULES))) && !XEN
125676 + select PAX_PER_CPU_PGD if X86_64 || (X86_32 && X86_PAE)
125677 + select PAX_KERNEXEC_PLUGIN if X86_64
125678 + select ARM_KERNMEM_PERMS if ARM
125679 + help
125680 + This is the kernel land equivalent of PAGEEXEC and MPROTECT,
125681 + that is, enabling this option will make it harder to inject
125682 + and execute 'foreign' code in kernel memory itself.
125683 +
125684 + Note that on amd64, CONFIG_EFI enabled with "efi=old_map" on
125685 + the kernel command-line will result in an RWX physical map.
125686 +
125687 + Likewise, the EFI runtime services are necessarily mapped as
125688 + RWX. If CONFIG_EFI is enabled on an EFI-capable system, it
125689 + is recommended that you boot with "noefi" on the kernel
125690 + command-line if possible to eliminate the mapping.
125691 +
125692 +choice
125693 + prompt "Return Address Instrumentation Method"
125694 + default PAX_KERNEXEC_PLUGIN_METHOD_BTS
125695 + depends on PAX_KERNEXEC_PLUGIN
125696 + help
125697 + Select the method used to instrument function pointer dereferences.
125698 + Note that binary modules cannot be instrumented by this approach.
125699 +
125700 + Note that the implementation requires a gcc with plugin support,
125701 + i.e., gcc 4.5 or newer. You may need to install the supporting
125702 + headers explicitly in addition to the normal gcc package.
125703 +
125704 + config PAX_KERNEXEC_PLUGIN_METHOD_BTS
125705 + bool "bts"
125706 + help
125707 + This method is compatible with binary only modules but has
125708 + a higher runtime overhead.
125709 +
125710 + config PAX_KERNEXEC_PLUGIN_METHOD_OR
125711 + bool "or"
125712 + depends on !PARAVIRT
125713 + help
125714 + This method is incompatible with binary only modules but has
125715 + a lower runtime overhead.
125716 +endchoice
125717 +
125718 +config PAX_KERNEXEC_PLUGIN_METHOD
125719 + string
125720 + default "bts" if PAX_KERNEXEC_PLUGIN_METHOD_BTS
125721 + default "or" if PAX_KERNEXEC_PLUGIN_METHOD_OR
125722 + default ""
125723 +
125724 +config PAX_KERNEXEC_MODULE_TEXT
125725 + int "Minimum amount of memory reserved for module code"
125726 + default "8" if (!GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_SERVER)
125727 + default "12" if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_DESKTOP)
125728 + depends on PAX_KERNEXEC && X86_32
125729 + help
125730 + Due to implementation details the kernel must reserve a fixed
125731 + amount of memory for runtime allocated code (such as modules)
125732 + at compile time that cannot be changed at runtime. Here you
125733 + can specify the minimum amount in MB that will be reserved.
125734 + Due to the same implementation details this size will always
125735 + be rounded up to the next 2/4 MB boundary (depends on PAE) so
125736 + the actually available memory for runtime allocated code will
125737 + usually be more than this minimum.
125738 +
125739 + The default 4 MB should be enough for most users but if you have
125740 + an excessive number of modules (e.g., most distribution configs
125741 + compile many drivers as modules) or use huge modules such as
125742 + nvidia's kernel driver, you will need to adjust this amount.
125743 + A good rule of thumb is to look at your currently loaded kernel
125744 + modules and add up their sizes.
125745 +
125746 +endmenu
125747 +
125748 +menu "Address Space Layout Randomization"
125749 + depends on PAX
125750 +
125751 +config PAX_ASLR
125752 + bool "Address Space Layout Randomization"
125753 + default y if GRKERNSEC_CONFIG_AUTO
125754 + help
125755 + Many if not most exploit techniques rely on the knowledge of
125756 + certain addresses in the attacked program. The following options
125757 + will allow the kernel to apply a certain amount of randomization
125758 + to specific parts of the program thereby forcing an attacker to
125759 + guess them in most cases. Any failed guess will most likely crash
125760 + the attacked program which allows the kernel to detect such attempts
125761 + and react on them. PaX itself provides no reaction mechanisms,
125762 + instead it is strongly encouraged that you make use of grsecurity's
125763 + (http://www.grsecurity.net/) built-in crash detection features or
125764 + develop one yourself.
125765 +
125766 + By saying Y here you can choose to randomize the following areas:
125767 + - top of the task's kernel stack
125768 + - top of the task's userland stack
125769 + - base address for mmap() requests that do not specify one
125770 + (this includes all libraries)
125771 + - base address of the main executable
125772 +
125773 + It is strongly recommended to say Y here as address space layout
125774 + randomization has negligible impact on performance yet it provides
125775 + a very effective protection.
125776 +
125777 + NOTE: you can use the 'chpax' or 'paxctl' utilities to control
125778 + this feature on a per file basis.
125779 +
125780 +config PAX_RANDKSTACK
125781 + bool "Randomize kernel stack base"
125782 + default y if GRKERNSEC_CONFIG_AUTO && !(GRKERNSEC_CONFIG_VIRT_HOST && GRKERNSEC_CONFIG_VIRT_VIRTUALBOX)
125783 + depends on X86_TSC && X86
125784 + help
125785 + By saying Y here the kernel will randomize every task's kernel
125786 + stack on every system call. This will not only force an attacker
125787 + to guess it but also prevent him from making use of possible
125788 + leaked information about it.
125789 +
125790 + Since the kernel stack is a rather scarce resource, randomization
125791 + may cause unexpected stack overflows, therefore you should very
125792 + carefully test your system. Note that once enabled in the kernel
125793 + configuration, this feature cannot be disabled on a per file basis.
125794 +
125795 +config PAX_RANDUSTACK
125796 + bool
125797 +
125798 +config PAX_RANDMMAP
125799 + bool "Randomize user stack and mmap() bases"
125800 + default y if GRKERNSEC_CONFIG_AUTO
125801 + depends on PAX_ASLR
125802 + select PAX_RANDUSTACK
125803 + help
125804 + By saying Y here the kernel will randomize every task's userland
125805 + stack and use a randomized base address for mmap() requests that
125806 + do not specify one themselves.
125807 +
125808 + The stack randomization is done in two steps where the second
125809 + one may apply a big amount of shift to the top of the stack and
125810 + cause problems for programs that want to use lots of memory (more
125811 + than 2.5 GB if SEGMEXEC is not active, or 1.25 GB when it is).
125812 +
125813 + As a result of mmap randomization all dynamically loaded libraries
125814 + will appear at random addresses and therefore be harder to exploit
125815 + by a technique where an attacker attempts to execute library code
125816 + for his purposes (e.g. spawn a shell from an exploited program that
125817 + is running at an elevated privilege level).
125818 +
125819 + Furthermore, if a program is relinked as a dynamic ELF file, its
125820 + base address will be randomized as well, completing the full
125821 + randomization of the address space layout. Attacking such programs
125822 + becomes a guess game. You can find an example of doing this at
125823 + http://pax.grsecurity.net/et_dyn.tar.gz and practical samples at
125824 + http://www.grsecurity.net/grsec-gcc-specs.tar.gz .
125825 +
125826 + NOTE: you can use the 'chpax' or 'paxctl' utilities to control this
125827 + feature on a per file basis.
125828 +
125829 +endmenu
125830 +
125831 +menu "Miscellaneous hardening features"
125832 +
125833 +config PAX_MEMORY_SANITIZE
125834 + bool "Sanitize all freed memory"
125835 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_PRIORITY_SECURITY)
125836 + help
125837 + By saying Y here the kernel will erase memory pages and slab objects
125838 + as soon as they are freed. This in turn reduces the lifetime of data
125839 + stored in them, making it less likely that sensitive information such
125840 + as passwords, cryptographic secrets, etc stay in memory for too long.
125841 +
125842 + This is especially useful for programs whose runtime is short, long
125843 + lived processes and the kernel itself benefit from this as long as
125844 + they ensure timely freeing of memory that may hold sensitive
125845 + information.
125846 +
125847 + A nice side effect of the sanitization of slab objects is the
125848 + reduction of possible info leaks caused by padding bytes within the
125849 + leaky structures. Use-after-free bugs for structures containing
125850 + pointers can also be detected as dereferencing the sanitized pointer
125851 + will generate an access violation.
125852 +
125853 + The tradeoff is performance impact, on a single CPU system kernel
125854 + compilation sees a 3% slowdown, other systems and workloads may vary
125855 + and you are advised to test this feature on your expected workload
125856 + before deploying it.
125857 +
125858 + The slab sanitization feature excludes a few slab caches per default
125859 + for performance reasons. To extend the feature to cover those as
125860 + well, pass "pax_sanitize_slab=full" as kernel command line parameter.
125861 +
125862 + To reduce the performance penalty by sanitizing pages only, albeit
125863 + limiting the effectiveness of this feature at the same time, slab
125864 + sanitization can be disabled with the kernel command line parameter
125865 + "pax_sanitize_slab=off".
125866 +
125867 + Note that this feature does not protect data stored in live pages,
125868 + e.g., process memory swapped to disk may stay there for a long time.
125869 +
125870 +config PAX_MEMORY_STACKLEAK
125871 + bool "Sanitize kernel stack"
125872 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_PRIORITY_SECURITY)
125873 + depends on X86
125874 + help
125875 + By saying Y here the kernel will erase the kernel stack before it
125876 + returns from a system call. This in turn reduces the information
125877 + that a kernel stack leak bug can reveal.
125878 +
125879 + Note that such a bug can still leak information that was put on
125880 + the stack by the current system call (the one eventually triggering
125881 + the bug) but traces of earlier system calls on the kernel stack
125882 + cannot leak anymore.
125883 +
125884 + The tradeoff is performance impact: on a single CPU system kernel
125885 + compilation sees a 1% slowdown, other systems and workloads may vary
125886 + and you are advised to test this feature on your expected workload
125887 + before deploying it.
125888 +
125889 + Note that the full feature requires a gcc with plugin support,
125890 + i.e., gcc 4.5 or newer. You may need to install the supporting
125891 + headers explicitly in addition to the normal gcc package. Using
125892 + older gcc versions means that functions with large enough stack
125893 + frames may leave uninitialized memory behind that may be exposed
125894 + to a later syscall leaking the stack.
125895 +
125896 +config PAX_MEMORY_STRUCTLEAK
125897 + bool "Forcibly initialize local variables copied to userland"
125898 + default y if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_PRIORITY_SECURITY)
125899 + help
125900 + By saying Y here the kernel will zero initialize some local
125901 + variables that are going to be copied to userland. This in
125902 + turn prevents unintended information leakage from the kernel
125903 + stack should later code forget to explicitly set all parts of
125904 + the copied variable.
125905 +
125906 + The tradeoff is less performance impact than PAX_MEMORY_STACKLEAK
125907 + at a much smaller coverage.
125908 +
125909 + Note that the implementation requires a gcc with plugin support,
125910 + i.e., gcc 4.5 or newer. You may need to install the supporting
125911 + headers explicitly in addition to the normal gcc package.
125912 +
125913 +config PAX_MEMORY_UDEREF
125914 + bool "Prevent invalid userland pointer dereference"
125915 + default y if GRKERNSEC_CONFIG_AUTO && !(X86_64 && GRKERNSEC_CONFIG_PRIORITY_PERF) && (!X86 || GRKERNSEC_CONFIG_VIRT_NONE || GRKERNSEC_CONFIG_VIRT_EPT)
125916 + depends on (X86 || (ARM && (CPU_V6 || CPU_V6K || CPU_V7) && !ARM_LPAE)) && !UML_X86 && !XEN
125917 + select PAX_PER_CPU_PGD if X86_64
125918 + help
125919 + By saying Y here the kernel will be prevented from dereferencing
125920 + userland pointers in contexts where the kernel expects only kernel
125921 + pointers. This is both a useful runtime debugging feature and a
125922 + security measure that prevents exploiting a class of kernel bugs.
125923 +
125924 + The tradeoff is that some virtualization solutions may experience
125925 + a huge slowdown and therefore you should not enable this feature
125926 + for kernels meant to run in such environments. Whether a given VM
125927 + solution is affected or not is best determined by simply trying it
125928 + out, the performance impact will be obvious right on boot as this
125929 + mechanism engages from very early on. A good rule of thumb is that
125930 + VMs running on CPUs without hardware virtualization support (i.e.,
125931 + the majority of IA-32 CPUs) will likely experience the slowdown.
125932 +
125933 + On X86_64 the kernel will make use of PCID support when available
125934 + (Intel's Westmere, Sandy Bridge, etc) for better security (default)
125935 + or performance impact. Pass pax_weakuderef on the kernel command
125936 + line to choose the latter.
125937 +
125938 +config PAX_REFCOUNT
125939 + bool "Prevent various kernel object reference counter overflows"
125940 + default y if GRKERNSEC_CONFIG_AUTO
125941 + depends on GRKERNSEC && ((ARM && (CPU_V6 || CPU_V6K || CPU_V7)) || MIPS || PPC || SPARC64 || X86)
125942 + help
125943 + By saying Y here the kernel will detect and prevent overflowing
125944 + various (but not all) kinds of object reference counters. Such
125945 + overflows can normally occur due to bugs only and are often, if
125946 + not always, exploitable.
125947 +
125948 + The tradeoff is that data structures protected by an overflowed
125949 + refcount will never be freed and therefore will leak memory. Note
125950 + that this leak also happens even without this protection but in
125951 + that case the overflow can eventually trigger the freeing of the
125952 + data structure while it is still being used elsewhere, resulting
125953 + in the exploitable situation that this feature prevents.
125954 +
125955 + Since this has a negligible performance impact, you should enable
125956 + this feature.
125957 +
125958 +config PAX_CONSTIFY_PLUGIN
125959 + bool "Automatically constify eligible structures"
125960 + default y
125961 + depends on !UML && PAX_KERNEXEC
125962 + help
125963 + By saying Y here the compiler will automatically constify a class
125964 + of types that contain only function pointers. This reduces the
125965 + kernel's attack surface and also produces a better memory layout.
125966 +
125967 + Note that the implementation requires a gcc with plugin support,
125968 + i.e., gcc 4.5 or newer. You may need to install the supporting
125969 + headers explicitly in addition to the normal gcc package.
125970 +
125971 + Note that if some code really has to modify constified variables
125972 + then the source code will have to be patched to allow it. Examples
125973 + can be found in PaX itself (the no_const attribute) and for some
125974 + out-of-tree modules at http://www.grsecurity.net/~paxguy1/ .
125975 +
125976 +config PAX_USERCOPY
125977 + bool "Harden heap object copies between kernel and userland"
125978 + default y if GRKERNSEC_CONFIG_AUTO
125979 + depends on ARM || IA64 || PPC || SPARC || X86
125980 + depends on GRKERNSEC && (SLAB || SLUB || SLOB)
125981 + select PAX_USERCOPY_SLABS
125982 + help
125983 + By saying Y here the kernel will enforce the size of heap objects
125984 + when they are copied in either direction between the kernel and
125985 + userland, even if only a part of the heap object is copied.
125986 +
125987 + Specifically, this checking prevents information leaking from the
125988 + kernel heap during kernel to userland copies (if the kernel heap
125989 + object is otherwise fully initialized) and prevents kernel heap
125990 + overflows during userland to kernel copies.
125991 +
125992 + Note that the current implementation provides the strictest bounds
125993 + checks for the SLUB allocator.
125994 +
125995 + Enabling this option also enables per-slab cache protection against
125996 + data in a given cache being copied into/out of via userland
125997 + accessors. Though the whitelist of regions will be reduced over
125998 + time, it notably protects important data structures like task structs.
125999 +
126000 + If frame pointers are enabled on x86, this option will also restrict
126001 + copies into and out of the kernel stack to local variables within a
126002 + single frame.
126003 +
126004 + Since this has a negligible performance impact, you should enable
126005 + this feature.
126006 +
126007 +config PAX_USERCOPY_DEBUG
126008 + bool
126009 + depends on X86 && PAX_USERCOPY
126010 + default n
126011 +
126012 +config PAX_SIZE_OVERFLOW
126013 + bool "Prevent various integer overflows in function size parameters"
126014 + default y if GRKERNSEC_CONFIG_AUTO
126015 + depends on BROKEN
126016 + help
126017 + By saying Y here the kernel recomputes expressions of function
126018 + arguments marked by a size_overflow attribute with double integer
126019 + precision (DImode/TImode for 32/64 bit integer types).
126020 +
126021 + The recomputed argument is checked against TYPE_MAX and an event
126022 + is logged on overflow and the triggering process is killed.
126023 +
126024 + Homepage: https://github.com/ephox-gcc-plugins
126025 +
126026 + Note that the implementation requires a gcc with plugin support,
126027 + i.e., gcc 4.5 or newer. You may need to install the supporting
126028 + headers explicitly in addition to the normal gcc package.
126029 +
126030 +config PAX_LATENT_ENTROPY
126031 + bool "Generate some entropy during boot and runtime"
126032 + default y if GRKERNSEC_CONFIG_AUTO
126033 + help
126034 + By saying Y here the kernel will instrument some kernel code to
126035 + extract some entropy from both original and artificially created
126036 + program state. This will help especially embedded systems where
126037 + there is little 'natural' source of entropy normally. The cost
126038 + is some slowdown of the boot process and fork and irq processing.
126039 +
126040 + When pax_extra_latent_entropy is passed on the kernel command line,
126041 + entropy will be extracted from up to the first 4GB of RAM while the
126042 + runtime memory allocator is being initialized. This costs even more
126043 + slowdown of the boot process.
126044 +
126045 + Note that the implementation requires a gcc with plugin support,
126046 + i.e., gcc 4.5 or newer. You may need to install the supporting
126047 + headers explicitly in addition to the normal gcc package.
126048 +
126049 + Note that entropy extracted this way is not cryptographically
126050 + secure!
126051 +
126052 +endmenu
126053 +
126054 +endmenu
126055 +
126056 +source grsecurity/Kconfig
126057 +
126058 +endmenu
126059 +
126060 +endmenu
126061 +
126062 source security/keys/Kconfig
126063
126064 config SECURITY_DMESG_RESTRICT
126065 @@ -104,7 +1079,7 @@ config INTEL_TXT
126066 config LSM_MMAP_MIN_ADDR
126067 int "Low address space for LSM to protect from user allocation"
126068 depends on SECURITY && SECURITY_SELINUX
126069 - default 32768 if ARM || (ARM64 && COMPAT)
126070 + default 32768 if ALPHA || ARM || (ARM64 && COMPAT) || PARISC || SPARC32
126071 default 65536
126072 help
126073 This is the portion of low virtual memory which should be protected
126074 diff --git a/security/apparmor/file.c b/security/apparmor/file.c
126075 index 913f377..6e392d5 100644
126076 --- a/security/apparmor/file.c
126077 +++ b/security/apparmor/file.c
126078 @@ -348,8 +348,8 @@ static inline bool xindex_is_subset(u32 link, u32 target)
126079 int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry,
126080 struct path *new_dir, struct dentry *new_dentry)
126081 {
126082 - struct path link = { new_dir->mnt, new_dentry };
126083 - struct path target = { new_dir->mnt, old_dentry };
126084 + struct path link = { .mnt = new_dir->mnt, .dentry = new_dentry };
126085 + struct path target = { .mnt = new_dir->mnt, .dentry = old_dentry };
126086 struct path_cond cond = {
126087 d_backing_inode(old_dentry)->i_uid,
126088 d_backing_inode(old_dentry)->i_mode
126089 diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
126090 index dec607c..2f291ad9 100644
126091 --- a/security/apparmor/lsm.c
126092 +++ b/security/apparmor/lsm.c
126093 @@ -176,7 +176,7 @@ static int common_perm_dir_dentry(int op, struct path *dir,
126094 struct dentry *dentry, u32 mask,
126095 struct path_cond *cond)
126096 {
126097 - struct path path = { dir->mnt, dentry };
126098 + struct path path = { .mnt = dir->mnt, .dentry = dentry };
126099
126100 return common_perm(op, &path, mask, cond);
126101 }
126102 @@ -193,7 +193,7 @@ static int common_perm_dir_dentry(int op, struct path *dir,
126103 static int common_perm_mnt_dentry(int op, struct vfsmount *mnt,
126104 struct dentry *dentry, u32 mask)
126105 {
126106 - struct path path = { mnt, dentry };
126107 + struct path path = { .mnt = mnt, .dentry = dentry };
126108 struct path_cond cond = { d_backing_inode(dentry)->i_uid,
126109 d_backing_inode(dentry)->i_mode
126110 };
126111 @@ -315,8 +315,8 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry,
126112
126113 profile = aa_current_profile();
126114 if (!unconfined(profile)) {
126115 - struct path old_path = { old_dir->mnt, old_dentry };
126116 - struct path new_path = { new_dir->mnt, new_dentry };
126117 + struct path old_path = { .mnt = old_dir->mnt, .dentry = old_dentry };
126118 + struct path new_path = { .mnt = new_dir->mnt, .dentry = new_dentry };
126119 struct path_cond cond = { d_backing_inode(old_dentry)->i_uid,
126120 d_backing_inode(old_dentry)->i_mode
126121 };
126122 diff --git a/security/commoncap.c b/security/commoncap.c
126123 index d103f5a4..3f7369a 100644
126124 --- a/security/commoncap.c
126125 +++ b/security/commoncap.c
126126 @@ -422,6 +422,32 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data
126127 return 0;
126128 }
126129
126130 +/* returns:
126131 + 1 for suid privilege
126132 + 2 for sgid privilege
126133 + 3 for fscap privilege
126134 +*/
126135 +int is_privileged_binary(const struct dentry *dentry)
126136 +{
126137 + struct cpu_vfs_cap_data capdata;
126138 + struct inode *inode = dentry->d_inode;
126139 +
126140 + if (!inode || S_ISDIR(inode->i_mode))
126141 + return 0;
126142 +
126143 + if (inode->i_mode & S_ISUID)
126144 + return 1;
126145 + if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))
126146 + return 2;
126147 +
126148 + if (!get_vfs_caps_from_disk(dentry, &capdata)) {
126149 + if (!cap_isclear(capdata.inheritable) || !cap_isclear(capdata.permitted))
126150 + return 3;
126151 + }
126152 +
126153 + return 0;
126154 +}
126155 +
126156 /*
126157 * Attempt to get the on-exec apply capability sets for an executable file from
126158 * its xattrs and, if present, apply them to the proposed credentials being
126159 @@ -586,6 +612,9 @@ int cap_bprm_secureexec(struct linux_binprm *bprm)
126160 const struct cred *cred = current_cred();
126161 kuid_t root_uid = make_kuid(cred->user_ns, 0);
126162
126163 + if (gr_acl_enable_at_secure())
126164 + return 1;
126165 +
126166 if (!uid_eq(cred->uid, root_uid)) {
126167 if (bprm->cap_effective)
126168 return 1;
126169 diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
126170 index e2a60c3..2e41dd3 100644
126171 --- a/security/integrity/ima/ima.h
126172 +++ b/security/integrity/ima/ima.h
126173 @@ -125,8 +125,8 @@ int ima_init_template(void);
126174 extern spinlock_t ima_queue_lock;
126175
126176 struct ima_h_table {
126177 - atomic_long_t len; /* number of stored measurements in the list */
126178 - atomic_long_t violations;
126179 + atomic_long_unchecked_t len; /* number of stored measurements in the list */
126180 + atomic_long_unchecked_t violations;
126181 struct hlist_head queue[IMA_MEASURE_HTABLE_SIZE];
126182 };
126183 extern struct ima_h_table ima_htable;
126184 diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
126185 index 1d950fb..a8f4eab 100644
126186 --- a/security/integrity/ima/ima_api.c
126187 +++ b/security/integrity/ima/ima_api.c
126188 @@ -137,7 +137,7 @@ void ima_add_violation(struct file *file, const unsigned char *filename,
126189 int result;
126190
126191 /* can overflow, only indicator */
126192 - atomic_long_inc(&ima_htable.violations);
126193 + atomic_long_inc_unchecked(&ima_htable.violations);
126194
126195 result = ima_alloc_init_template(&event_data, &entry);
126196 if (result < 0) {
126197 diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c
126198 index 816d175..20079ae 100644
126199 --- a/security/integrity/ima/ima_fs.c
126200 +++ b/security/integrity/ima/ima_fs.c
126201 @@ -28,12 +28,12 @@
126202 static int valid_policy = 1;
126203 #define TMPBUFLEN 12
126204 static ssize_t ima_show_htable_value(char __user *buf, size_t count,
126205 - loff_t *ppos, atomic_long_t *val)
126206 + loff_t *ppos, atomic_long_unchecked_t *val)
126207 {
126208 char tmpbuf[TMPBUFLEN];
126209 ssize_t len;
126210
126211 - len = scnprintf(tmpbuf, TMPBUFLEN, "%li\n", atomic_long_read(val));
126212 + len = scnprintf(tmpbuf, TMPBUFLEN, "%li\n", atomic_long_read_unchecked(val));
126213 return simple_read_from_buffer(buf, count, ppos, tmpbuf, len);
126214 }
126215
126216 diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
126217 index 552705d..9920f4fb 100644
126218 --- a/security/integrity/ima/ima_queue.c
126219 +++ b/security/integrity/ima/ima_queue.c
126220 @@ -83,7 +83,7 @@ static int ima_add_digest_entry(struct ima_template_entry *entry)
126221 INIT_LIST_HEAD(&qe->later);
126222 list_add_tail_rcu(&qe->later, &ima_measurements);
126223
126224 - atomic_long_inc(&ima_htable.len);
126225 + atomic_long_inc_unchecked(&ima_htable.len);
126226 key = ima_hash_key(entry->digest);
126227 hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
126228 return 0;
126229 diff --git a/security/keys/key.c b/security/keys/key.c
126230 index aee2ec5..c276071 100644
126231 --- a/security/keys/key.c
126232 +++ b/security/keys/key.c
126233 @@ -283,7 +283,7 @@ struct key *key_alloc(struct key_type *type, const char *desc,
126234
126235 atomic_set(&key->usage, 1);
126236 init_rwsem(&key->sem);
126237 - lockdep_set_class(&key->sem, &type->lock_class);
126238 + lockdep_set_class(&key->sem, (struct lock_class_key *)&type->lock_class);
126239 key->index_key.type = type;
126240 key->user = user;
126241 key->quotalen = quotalen;
126242 @@ -1073,7 +1073,9 @@ int register_key_type(struct key_type *ktype)
126243 struct key_type *p;
126244 int ret;
126245
126246 - memset(&ktype->lock_class, 0, sizeof(ktype->lock_class));
126247 + pax_open_kernel();
126248 + memset((void *)&ktype->lock_class, 0, sizeof(ktype->lock_class));
126249 + pax_close_kernel();
126250
126251 ret = -EEXIST;
126252 down_write(&key_types_sem);
126253 @@ -1085,7 +1087,7 @@ int register_key_type(struct key_type *ktype)
126254 }
126255
126256 /* store the type */
126257 - list_add(&ktype->link, &key_types_list);
126258 + pax_list_add((struct list_head *)&ktype->link, &key_types_list);
126259
126260 pr_notice("Key type %s registered\n", ktype->name);
126261 ret = 0;
126262 @@ -1107,7 +1109,7 @@ EXPORT_SYMBOL(register_key_type);
126263 void unregister_key_type(struct key_type *ktype)
126264 {
126265 down_write(&key_types_sem);
126266 - list_del_init(&ktype->link);
126267 + pax_list_del_init((struct list_head *)&ktype->link);
126268 downgrade_write(&key_types_sem);
126269 key_gc_keytype(ktype);
126270 pr_notice("Key type %s unregistered\n", ktype->name);
126271 @@ -1125,10 +1127,10 @@ void __init key_init(void)
126272 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
126273
126274 /* add the special key types */
126275 - list_add_tail(&key_type_keyring.link, &key_types_list);
126276 - list_add_tail(&key_type_dead.link, &key_types_list);
126277 - list_add_tail(&key_type_user.link, &key_types_list);
126278 - list_add_tail(&key_type_logon.link, &key_types_list);
126279 + pax_list_add_tail((struct list_head *)&key_type_keyring.link, &key_types_list);
126280 + pax_list_add_tail((struct list_head *)&key_type_dead.link, &key_types_list);
126281 + pax_list_add_tail((struct list_head *)&key_type_user.link, &key_types_list);
126282 + pax_list_add_tail((struct list_head *)&key_type_logon.link, &key_types_list);
126283
126284 /* record the root user tracking */
126285 rb_link_node(&root_key_user.node,
126286 diff --git a/security/min_addr.c b/security/min_addr.c
126287 index f728728..6457a0c 100644
126288 --- a/security/min_addr.c
126289 +++ b/security/min_addr.c
126290 @@ -14,6 +14,7 @@ unsigned long dac_mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
126291 */
126292 static void update_mmap_min_addr(void)
126293 {
126294 +#ifndef SPARC
126295 #ifdef CONFIG_LSM_MMAP_MIN_ADDR
126296 if (dac_mmap_min_addr > CONFIG_LSM_MMAP_MIN_ADDR)
126297 mmap_min_addr = dac_mmap_min_addr;
126298 @@ -22,6 +23,7 @@ static void update_mmap_min_addr(void)
126299 #else
126300 mmap_min_addr = dac_mmap_min_addr;
126301 #endif
126302 +#endif
126303 }
126304
126305 /*
126306 diff --git a/security/selinux/avc.c b/security/selinux/avc.c
126307 index 0b122b1..d9f9568 100644
126308 --- a/security/selinux/avc.c
126309 +++ b/security/selinux/avc.c
126310 @@ -59,7 +59,7 @@ struct avc_node {
126311 struct avc_cache {
126312 struct hlist_head slots[AVC_CACHE_SLOTS]; /* head for avc_node->list */
126313 spinlock_t slots_lock[AVC_CACHE_SLOTS]; /* lock for writes */
126314 - atomic_t lru_hint; /* LRU hint for reclaim scan */
126315 + atomic_unchecked_t lru_hint; /* LRU hint for reclaim scan */
126316 atomic_t active_nodes;
126317 u32 latest_notif; /* latest revocation notification */
126318 };
126319 @@ -167,7 +167,7 @@ void __init avc_init(void)
126320 spin_lock_init(&avc_cache.slots_lock[i]);
126321 }
126322 atomic_set(&avc_cache.active_nodes, 0);
126323 - atomic_set(&avc_cache.lru_hint, 0);
126324 + atomic_set_unchecked(&avc_cache.lru_hint, 0);
126325
126326 avc_node_cachep = kmem_cache_create("avc_node", sizeof(struct avc_node),
126327 0, SLAB_PANIC, NULL);
126328 @@ -242,7 +242,7 @@ static inline int avc_reclaim_node(void)
126329 spinlock_t *lock;
126330
126331 for (try = 0, ecx = 0; try < AVC_CACHE_SLOTS; try++) {
126332 - hvalue = atomic_inc_return(&avc_cache.lru_hint) & (AVC_CACHE_SLOTS - 1);
126333 + hvalue = atomic_inc_return_unchecked(&avc_cache.lru_hint) & (AVC_CACHE_SLOTS - 1);
126334 head = &avc_cache.slots[hvalue];
126335 lock = &avc_cache.slots_lock[hvalue];
126336
126337 diff --git a/security/selinux/include/xfrm.h b/security/selinux/include/xfrm.h
126338 index 1450f85..a91e0bc 100644
126339 --- a/security/selinux/include/xfrm.h
126340 +++ b/security/selinux/include/xfrm.h
126341 @@ -48,7 +48,7 @@ static inline void selinux_xfrm_notify_policyload(void)
126342
126343 rtnl_lock();
126344 for_each_net(net) {
126345 - atomic_inc(&net->xfrm.flow_cache_genid);
126346 + atomic_inc_unchecked(&net->xfrm.flow_cache_genid);
126347 rt_genid_bump_all(net);
126348 }
126349 rtnl_unlock();
126350 diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c
126351 index 2367b10..a0c3c51 100644
126352 --- a/security/tomoyo/file.c
126353 +++ b/security/tomoyo/file.c
126354 @@ -692,7 +692,7 @@ int tomoyo_path_number_perm(const u8 type, struct path *path,
126355 {
126356 struct tomoyo_request_info r;
126357 struct tomoyo_obj_info obj = {
126358 - .path1 = *path,
126359 + .path1 = { .mnt = path->mnt, .dentry = path->dentry },
126360 };
126361 int error = -ENOMEM;
126362 struct tomoyo_path_info buf;
126363 @@ -740,7 +740,7 @@ int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,
126364 struct tomoyo_path_info buf;
126365 struct tomoyo_request_info r;
126366 struct tomoyo_obj_info obj = {
126367 - .path1 = *path,
126368 + .path1 = { .mnt = path->mnt, .dentry = path->dentry },
126369 };
126370 int idx;
126371
126372 @@ -786,7 +786,7 @@ int tomoyo_path_perm(const u8 operation, const struct path *path, const char *ta
126373 {
126374 struct tomoyo_request_info r;
126375 struct tomoyo_obj_info obj = {
126376 - .path1 = *path,
126377 + .path1 = { .mnt = path->mnt, .dentry = path->dentry },
126378 };
126379 int error;
126380 struct tomoyo_path_info buf;
126381 @@ -843,7 +843,7 @@ int tomoyo_mkdev_perm(const u8 operation, struct path *path,
126382 {
126383 struct tomoyo_request_info r;
126384 struct tomoyo_obj_info obj = {
126385 - .path1 = *path,
126386 + .path1 = { .mnt = path->mnt, .dentry = path->dentry },
126387 };
126388 int error = -ENOMEM;
126389 struct tomoyo_path_info buf;
126390 @@ -890,8 +890,8 @@ int tomoyo_path2_perm(const u8 operation, struct path *path1,
126391 struct tomoyo_path_info buf2;
126392 struct tomoyo_request_info r;
126393 struct tomoyo_obj_info obj = {
126394 - .path1 = *path1,
126395 - .path2 = *path2,
126396 + .path1 = { .mnt = path1->mnt, .dentry = path1->dentry },
126397 + .path2 = { .mnt = path2->mnt, .dentry = path2->dentry }
126398 };
126399 int idx;
126400
126401 diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c
126402 index 390c646..f2f8db3 100644
126403 --- a/security/tomoyo/mount.c
126404 +++ b/security/tomoyo/mount.c
126405 @@ -118,6 +118,10 @@ static int tomoyo_mount_acl(struct tomoyo_request_info *r,
126406 type == tomoyo_mounts[TOMOYO_MOUNT_MOVE]) {
126407 need_dev = -1; /* dev_name is a directory */
126408 } else {
126409 + if (!capable(CAP_SYS_ADMIN)) {
126410 + error = -EPERM;
126411 + goto out;
126412 + }
126413 fstype = get_fs_type(type);
126414 if (!fstype) {
126415 error = -ENODEV;
126416 diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
126417 index cbf3df4..22b11df 100644
126418 --- a/security/tomoyo/tomoyo.c
126419 +++ b/security/tomoyo/tomoyo.c
126420 @@ -165,7 +165,7 @@ static int tomoyo_path_truncate(struct path *path)
126421 */
126422 static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry)
126423 {
126424 - struct path path = { parent->mnt, dentry };
126425 + struct path path = { .mnt = parent->mnt, .dentry = dentry };
126426 return tomoyo_path_perm(TOMOYO_TYPE_UNLINK, &path, NULL);
126427 }
126428
126429 @@ -181,7 +181,7 @@ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry)
126430 static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry,
126431 umode_t mode)
126432 {
126433 - struct path path = { parent->mnt, dentry };
126434 + struct path path = { .mnt = parent->mnt, .dentry = dentry };
126435 return tomoyo_path_number_perm(TOMOYO_TYPE_MKDIR, &path,
126436 mode & S_IALLUGO);
126437 }
126438 @@ -196,7 +196,7 @@ static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry,
126439 */
126440 static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry)
126441 {
126442 - struct path path = { parent->mnt, dentry };
126443 + struct path path = { .mnt = parent->mnt, .dentry = dentry };
126444 return tomoyo_path_perm(TOMOYO_TYPE_RMDIR, &path, NULL);
126445 }
126446
126447 @@ -212,7 +212,7 @@ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry)
126448 static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry,
126449 const char *old_name)
126450 {
126451 - struct path path = { parent->mnt, dentry };
126452 + struct path path = { .mnt = parent->mnt, .dentry = dentry };
126453 return tomoyo_path_perm(TOMOYO_TYPE_SYMLINK, &path, old_name);
126454 }
126455
126456 @@ -229,7 +229,7 @@ static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry,
126457 static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry,
126458 umode_t mode, unsigned int dev)
126459 {
126460 - struct path path = { parent->mnt, dentry };
126461 + struct path path = { .mnt = parent->mnt, .dentry = dentry };
126462 int type = TOMOYO_TYPE_CREATE;
126463 const unsigned int perm = mode & S_IALLUGO;
126464
126465 @@ -268,8 +268,8 @@ static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry,
126466 static int tomoyo_path_link(struct dentry *old_dentry, struct path *new_dir,
126467 struct dentry *new_dentry)
126468 {
126469 - struct path path1 = { new_dir->mnt, old_dentry };
126470 - struct path path2 = { new_dir->mnt, new_dentry };
126471 + struct path path1 = { .mnt = new_dir->mnt, .dentry = old_dentry };
126472 + struct path path2 = { .mnt = new_dir->mnt, .dentry = new_dentry };
126473 return tomoyo_path2_perm(TOMOYO_TYPE_LINK, &path1, &path2);
126474 }
126475
126476 @@ -288,8 +288,8 @@ static int tomoyo_path_rename(struct path *old_parent,
126477 struct path *new_parent,
126478 struct dentry *new_dentry)
126479 {
126480 - struct path path1 = { old_parent->mnt, old_dentry };
126481 - struct path path2 = { new_parent->mnt, new_dentry };
126482 + struct path path1 = { .mnt = old_parent->mnt, .dentry = old_dentry };
126483 + struct path path2 = { .mnt = new_parent->mnt, .dentry = new_dentry };
126484 return tomoyo_path2_perm(TOMOYO_TYPE_RENAME, &path1, &path2);
126485 }
126486
126487 @@ -417,7 +417,7 @@ static int tomoyo_sb_mount(const char *dev_name, struct path *path,
126488 */
126489 static int tomoyo_sb_umount(struct vfsmount *mnt, int flags)
126490 {
126491 - struct path path = { mnt, mnt->mnt_root };
126492 + struct path path = { .mnt = mnt, .dentry = mnt->mnt_root };
126493 return tomoyo_path_perm(TOMOYO_TYPE_UMOUNT, &path, NULL);
126494 }
126495
126496 diff --git a/security/yama/Kconfig b/security/yama/Kconfig
126497 index 3123e1d..951f48d 100644
126498 --- a/security/yama/Kconfig
126499 +++ b/security/yama/Kconfig
126500 @@ -1,6 +1,6 @@
126501 config SECURITY_YAMA
126502 bool "Yama support"
126503 - depends on SECURITY
126504 + depends on SECURITY && !GRKERNSEC
126505 default n
126506 help
126507 This selects Yama, which extends DAC support with additional
126508 diff --git a/security/yama/yama_lsm.c b/security/yama/yama_lsm.c
126509 index 5ebb896..68147a2 100644
126510 --- a/security/yama/yama_lsm.c
126511 +++ b/security/yama/yama_lsm.c
126512 @@ -362,7 +362,7 @@ void __init yama_add_hooks(void)
126513 static int yama_dointvec_minmax(struct ctl_table *table, int write,
126514 void __user *buffer, size_t *lenp, loff_t *ppos)
126515 {
126516 - struct ctl_table table_copy;
126517 + ctl_table_no_const table_copy;
126518
126519 if (write && !capable(CAP_SYS_PTRACE))
126520 return -EPERM;
126521 diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
126522 index 23c371e..da7c25e 100644
126523 --- a/sound/aoa/codecs/onyx.c
126524 +++ b/sound/aoa/codecs/onyx.c
126525 @@ -54,7 +54,7 @@ struct onyx {
126526 spdif_locked:1,
126527 analog_locked:1,
126528 original_mute:2;
126529 - int open_count;
126530 + local_t open_count;
126531 struct codec_info *codec_info;
126532
126533 /* mutex serializes concurrent access to the device
126534 @@ -747,7 +747,7 @@ static int onyx_open(struct codec_info_item *cii,
126535 struct onyx *onyx = cii->codec_data;
126536
126537 mutex_lock(&onyx->mutex);
126538 - onyx->open_count++;
126539 + local_inc(&onyx->open_count);
126540 mutex_unlock(&onyx->mutex);
126541
126542 return 0;
126543 @@ -759,8 +759,7 @@ static int onyx_close(struct codec_info_item *cii,
126544 struct onyx *onyx = cii->codec_data;
126545
126546 mutex_lock(&onyx->mutex);
126547 - onyx->open_count--;
126548 - if (!onyx->open_count)
126549 + if (local_dec_and_test(&onyx->open_count))
126550 onyx->spdif_locked = onyx->analog_locked = 0;
126551 mutex_unlock(&onyx->mutex);
126552
126553 diff --git a/sound/aoa/codecs/onyx.h b/sound/aoa/codecs/onyx.h
126554 index ffd2025..df062c9 100644
126555 --- a/sound/aoa/codecs/onyx.h
126556 +++ b/sound/aoa/codecs/onyx.h
126557 @@ -11,6 +11,7 @@
126558 #include <linux/i2c.h>
126559 #include <asm/pmac_low_i2c.h>
126560 #include <asm/prom.h>
126561 +#include <asm/local.h>
126562
126563 /* PCM3052 register definitions */
126564
126565 diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
126566 index 58550cc..4687a93 100644
126567 --- a/sound/core/oss/pcm_oss.c
126568 +++ b/sound/core/oss/pcm_oss.c
126569 @@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(struct snd_pcm_substream *substream, const
126570 if (in_kernel) {
126571 mm_segment_t fs;
126572 fs = snd_enter_user();
126573 - ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames);
126574 + ret = snd_pcm_lib_write(substream, (void __force_user *)ptr, frames);
126575 snd_leave_user(fs);
126576 } else {
126577 - ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames);
126578 + ret = snd_pcm_lib_write(substream, (void __force_user *)ptr, frames);
126579 }
126580 if (ret != -EPIPE && ret != -ESTRPIPE)
126581 break;
126582 @@ -1232,10 +1232,10 @@ snd_pcm_sframes_t snd_pcm_oss_read3(struct snd_pcm_substream *substream, char *p
126583 if (in_kernel) {
126584 mm_segment_t fs;
126585 fs = snd_enter_user();
126586 - ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames);
126587 + ret = snd_pcm_lib_read(substream, (void __force_user *)ptr, frames);
126588 snd_leave_user(fs);
126589 } else {
126590 - ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames);
126591 + ret = snd_pcm_lib_read(substream, (void __force_user *)ptr, frames);
126592 }
126593 if (ret == -EPIPE) {
126594 if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) {
126595 @@ -1331,7 +1331,7 @@ static ssize_t snd_pcm_oss_write2(struct snd_pcm_substream *substream, const cha
126596 struct snd_pcm_plugin_channel *channels;
126597 size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_format.channels) / 8;
126598 if (!in_kernel) {
126599 - if (copy_from_user(runtime->oss.buffer, (const char __force __user *)buf, bytes))
126600 + if (copy_from_user(runtime->oss.buffer, (const char __force_user *)buf, bytes))
126601 return -EFAULT;
126602 buf = runtime->oss.buffer;
126603 }
126604 @@ -1401,7 +1401,7 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha
126605 }
126606 } else {
126607 tmp = snd_pcm_oss_write2(substream,
126608 - (const char __force *)buf,
126609 + (const char __force_kernel *)buf,
126610 runtime->oss.period_bytes, 0);
126611 if (tmp <= 0)
126612 goto err;
126613 @@ -1427,7 +1427,7 @@ static ssize_t snd_pcm_oss_read2(struct snd_pcm_substream *substream, char *buf,
126614 struct snd_pcm_runtime *runtime = substream->runtime;
126615 snd_pcm_sframes_t frames, frames1;
126616 #ifdef CONFIG_SND_PCM_OSS_PLUGINS
126617 - char __user *final_dst = (char __force __user *)buf;
126618 + char __user *final_dst = (char __force_user *)buf;
126619 if (runtime->oss.plugin_first) {
126620 struct snd_pcm_plugin_channel *channels;
126621 size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_format.channels) / 8;
126622 @@ -1489,7 +1489,7 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use
126623 xfer += tmp;
126624 runtime->oss.buffer_used -= tmp;
126625 } else {
126626 - tmp = snd_pcm_oss_read2(substream, (char __force *)buf,
126627 + tmp = snd_pcm_oss_read2(substream, (char __force_kernel *)buf,
126628 runtime->oss.period_bytes, 0);
126629 if (tmp <= 0)
126630 goto err;
126631 @@ -1658,7 +1658,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file)
126632 size1);
126633 size1 /= runtime->channels; /* frames */
126634 fs = snd_enter_user();
126635 - snd_pcm_lib_write(substream, (void __force __user *)runtime->oss.buffer, size1);
126636 + snd_pcm_lib_write(substream, (void __force_user *)runtime->oss.buffer, size1);
126637 snd_leave_user(fs);
126638 }
126639 } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) {
126640 diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
126641 index b48b434..e2ba787 100644
126642 --- a/sound/core/pcm_compat.c
126643 +++ b/sound/core/pcm_compat.c
126644 @@ -31,7 +31,7 @@ static int snd_pcm_ioctl_delay_compat(struct snd_pcm_substream *substream,
126645 int err;
126646
126647 fs = snd_enter_user();
126648 - err = snd_pcm_delay(substream, &delay);
126649 + err = snd_pcm_delay(substream, (snd_pcm_sframes_t __force_user *)&delay);
126650 snd_leave_user(fs);
126651 if (err < 0)
126652 return err;
126653 diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
126654 index 75888dd..c940854 100644
126655 --- a/sound/core/pcm_native.c
126656 +++ b/sound/core/pcm_native.c
126657 @@ -3004,11 +3004,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
126658 switch (substream->stream) {
126659 case SNDRV_PCM_STREAM_PLAYBACK:
126660 result = snd_pcm_playback_ioctl1(NULL, substream, cmd,
126661 - (void __user *)arg);
126662 + (void __force_user *)arg);
126663 break;
126664 case SNDRV_PCM_STREAM_CAPTURE:
126665 result = snd_pcm_capture_ioctl1(NULL, substream, cmd,
126666 - (void __user *)arg);
126667 + (void __force_user *)arg);
126668 break;
126669 default:
126670 result = -EINVAL;
126671 diff --git a/sound/core/sound.c b/sound/core/sound.c
126672 index 175f9e4..3518d31 100644
126673 --- a/sound/core/sound.c
126674 +++ b/sound/core/sound.c
126675 @@ -86,7 +86,7 @@ static void snd_request_other(int minor)
126676 case SNDRV_MINOR_TIMER: str = "snd-timer"; break;
126677 default: return;
126678 }
126679 - request_module(str);
126680 + request_module("%s", str);
126681 }
126682
126683 #endif /* modular kernel */
126684 diff --git a/sound/drivers/mts64.c b/sound/drivers/mts64.c
126685 index 2a008a9..a1efb3f 100644
126686 --- a/sound/drivers/mts64.c
126687 +++ b/sound/drivers/mts64.c
126688 @@ -29,6 +29,7 @@
126689 #include <sound/initval.h>
126690 #include <sound/rawmidi.h>
126691 #include <sound/control.h>
126692 +#include <asm/local.h>
126693
126694 #define CARD_NAME "Miditerminal 4140"
126695 #define DRIVER_NAME "MTS64"
126696 @@ -67,7 +68,7 @@ struct mts64 {
126697 struct pardevice *pardev;
126698 int pardev_claimed;
126699
126700 - int open_count;
126701 + local_t open_count;
126702 int current_midi_output_port;
126703 int current_midi_input_port;
126704 u8 mode[MTS64_NUM_INPUT_PORTS];
126705 @@ -687,7 +688,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
126706 {
126707 struct mts64 *mts = substream->rmidi->private_data;
126708
126709 - if (mts->open_count == 0) {
126710 + if (local_read(&mts->open_count) == 0) {
126711 /* We don't need a spinlock here, because this is just called
126712 if the device has not been opened before.
126713 So there aren't any IRQs from the device */
126714 @@ -695,7 +696,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
126715
126716 msleep(50);
126717 }
126718 - ++(mts->open_count);
126719 + local_inc(&mts->open_count);
126720
126721 return 0;
126722 }
126723 @@ -705,8 +706,7 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
126724 struct mts64 *mts = substream->rmidi->private_data;
126725 unsigned long flags;
126726
126727 - --(mts->open_count);
126728 - if (mts->open_count == 0) {
126729 + if (local_dec_return(&mts->open_count) == 0) {
126730 /* We need the spinlock_irqsave here because we can still
126731 have IRQs at this point */
126732 spin_lock_irqsave(&mts->lock, flags);
126733 @@ -715,8 +715,8 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
126734
126735 msleep(500);
126736
126737 - } else if (mts->open_count < 0)
126738 - mts->open_count = 0;
126739 + } else if (local_read(&mts->open_count) < 0)
126740 + local_set(&mts->open_count, 0);
126741
126742 return 0;
126743 }
126744 diff --git a/sound/drivers/opl4/opl4_lib.c b/sound/drivers/opl4/opl4_lib.c
126745 index 89c7aa0..6d75e49 100644
126746 --- a/sound/drivers/opl4/opl4_lib.c
126747 +++ b/sound/drivers/opl4/opl4_lib.c
126748 @@ -29,7 +29,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
126749 MODULE_DESCRIPTION("OPL4 driver");
126750 MODULE_LICENSE("GPL");
126751
126752 -static void inline snd_opl4_wait(struct snd_opl4 *opl4)
126753 +static inline void snd_opl4_wait(struct snd_opl4 *opl4)
126754 {
126755 int timeout = 10;
126756 while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
126757 diff --git a/sound/drivers/portman2x4.c b/sound/drivers/portman2x4.c
126758 index 464385a..46ab3f6 100644
126759 --- a/sound/drivers/portman2x4.c
126760 +++ b/sound/drivers/portman2x4.c
126761 @@ -48,6 +48,7 @@
126762 #include <sound/initval.h>
126763 #include <sound/rawmidi.h>
126764 #include <sound/control.h>
126765 +#include <asm/local.h>
126766
126767 #define CARD_NAME "Portman 2x4"
126768 #define DRIVER_NAME "portman"
126769 @@ -85,7 +86,7 @@ struct portman {
126770 struct pardevice *pardev;
126771 int pardev_claimed;
126772
126773 - int open_count;
126774 + local_t open_count;
126775 int mode[PORTMAN_NUM_INPUT_PORTS];
126776 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
126777 };
126778 diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
126779 index 2a153d2..185af02 100644
126780 --- a/sound/firewire/amdtp.c
126781 +++ b/sound/firewire/amdtp.c
126782 @@ -591,7 +591,7 @@ static void update_pcm_pointers(struct amdtp_stream *s,
126783 ptr = s->pcm_buffer_pointer + frames;
126784 if (ptr >= pcm->runtime->buffer_size)
126785 ptr -= pcm->runtime->buffer_size;
126786 - ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
126787 + ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
126788
126789 s->pcm_period_pointer += frames;
126790 if (s->pcm_period_pointer >= pcm->runtime->period_size) {
126791 @@ -1056,7 +1056,7 @@ EXPORT_SYMBOL(amdtp_stream_pcm_pointer);
126792 void amdtp_stream_update(struct amdtp_stream *s)
126793 {
126794 /* Precomputing. */
126795 - ACCESS_ONCE(s->source_node_id_field) =
126796 + ACCESS_ONCE_RW(s->source_node_id_field) =
126797 (fw_parent_device(s->unit)->card->node_id << CIP_SID_SHIFT) &
126798 CIP_SID_MASK;
126799 }
126800 diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h
126801 index b2cf9e7..e11623a 100644
126802 --- a/sound/firewire/amdtp.h
126803 +++ b/sound/firewire/amdtp.h
126804 @@ -237,7 +237,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s)
126805 static inline void amdtp_stream_pcm_trigger(struct amdtp_stream *s,
126806 struct snd_pcm_substream *pcm)
126807 {
126808 - ACCESS_ONCE(s->pcm) = pcm;
126809 + ACCESS_ONCE_RW(s->pcm) = pcm;
126810 }
126811
126812 /**
126813 @@ -255,7 +255,7 @@ static inline void amdtp_stream_midi_trigger(struct amdtp_stream *s,
126814 struct snd_rawmidi_substream *midi)
126815 {
126816 if (port < s->midi_ports)
126817 - ACCESS_ONCE(s->midi[port]) = midi;
126818 + ACCESS_ONCE_RW(s->midi[port]) = midi;
126819 }
126820
126821 static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc)
126822 diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
126823 index 48d6dca..a0266c23 100644
126824 --- a/sound/firewire/isight.c
126825 +++ b/sound/firewire/isight.c
126826 @@ -96,7 +96,7 @@ static void isight_update_pointers(struct isight *isight, unsigned int count)
126827 ptr += count;
126828 if (ptr >= runtime->buffer_size)
126829 ptr -= runtime->buffer_size;
126830 - ACCESS_ONCE(isight->buffer_pointer) = ptr;
126831 + ACCESS_ONCE_RW(isight->buffer_pointer) = ptr;
126832
126833 isight->period_counter += count;
126834 if (isight->period_counter >= runtime->period_size) {
126835 @@ -293,7 +293,7 @@ static int isight_hw_params(struct snd_pcm_substream *substream,
126836 if (err < 0)
126837 return err;
126838
126839 - ACCESS_ONCE(isight->pcm_active) = true;
126840 + ACCESS_ONCE_RW(isight->pcm_active) = true;
126841
126842 return 0;
126843 }
126844 @@ -331,7 +331,7 @@ static int isight_hw_free(struct snd_pcm_substream *substream)
126845 {
126846 struct isight *isight = substream->private_data;
126847
126848 - ACCESS_ONCE(isight->pcm_active) = false;
126849 + ACCESS_ONCE_RW(isight->pcm_active) = false;
126850
126851 mutex_lock(&isight->mutex);
126852 isight_stop_streaming(isight);
126853 @@ -424,10 +424,10 @@ static int isight_trigger(struct snd_pcm_substream *substream, int cmd)
126854
126855 switch (cmd) {
126856 case SNDRV_PCM_TRIGGER_START:
126857 - ACCESS_ONCE(isight->pcm_running) = true;
126858 + ACCESS_ONCE_RW(isight->pcm_running) = true;
126859 break;
126860 case SNDRV_PCM_TRIGGER_STOP:
126861 - ACCESS_ONCE(isight->pcm_running) = false;
126862 + ACCESS_ONCE_RW(isight->pcm_running) = false;
126863 break;
126864 default:
126865 return -EINVAL;
126866 diff --git a/sound/firewire/scs1x.c b/sound/firewire/scs1x.c
126867 index 2dba848..c682aef 100644
126868 --- a/sound/firewire/scs1x.c
126869 +++ b/sound/firewire/scs1x.c
126870 @@ -74,7 +74,7 @@ static void scs_output_trigger(struct snd_rawmidi_substream *stream, int up)
126871 {
126872 struct scs *scs = stream->rmidi->private_data;
126873
126874 - ACCESS_ONCE(scs->output) = up ? stream : NULL;
126875 + ACCESS_ONCE_RW(scs->output) = up ? stream : NULL;
126876 if (up) {
126877 scs->output_idle = false;
126878 tasklet_schedule(&scs->tasklet);
126879 @@ -257,7 +257,7 @@ static void scs_input_trigger(struct snd_rawmidi_substream *stream, int up)
126880 {
126881 struct scs *scs = stream->rmidi->private_data;
126882
126883 - ACCESS_ONCE(scs->input) = up ? stream : NULL;
126884 + ACCESS_ONCE_RW(scs->input) = up ? stream : NULL;
126885 }
126886
126887 static void scs_input_escaped_byte(struct snd_rawmidi_substream *stream,
126888 @@ -473,8 +473,8 @@ static void scs_remove(struct fw_unit *unit)
126889
126890 snd_card_disconnect(scs->card);
126891
126892 - ACCESS_ONCE(scs->output) = NULL;
126893 - ACCESS_ONCE(scs->input) = NULL;
126894 + ACCESS_ONCE_RW(scs->output) = NULL;
126895 + ACCESS_ONCE_RW(scs->input) = NULL;
126896
126897 wait_event(scs->idle_wait, scs->output_idle);
126898
126899 diff --git a/sound/oss/sb_audio.c b/sound/oss/sb_audio.c
126900 index dc91072..d85a10a 100644
126901 --- a/sound/oss/sb_audio.c
126902 +++ b/sound/oss/sb_audio.c
126903 @@ -900,7 +900,7 @@ sb16_copy_from_user(int dev,
126904 buf16 = (signed short *)(localbuf + localoffs);
126905 while (c)
126906 {
126907 - locallen = (c >= LBUFCOPYSIZE ? LBUFCOPYSIZE : c);
126908 + locallen = ((unsigned)c >= LBUFCOPYSIZE ? LBUFCOPYSIZE : c);
126909 if (copy_from_user(lbuf8,
126910 userbuf+useroffs + p,
126911 locallen))
126912 diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
126913 index 213a416..aeab5c9 100644
126914 --- a/sound/oss/swarm_cs4297a.c
126915 +++ b/sound/oss/swarm_cs4297a.c
126916 @@ -2623,7 +2623,6 @@ static int __init cs4297a_init(void)
126917 {
126918 struct cs4297a_state *s;
126919 u32 pwr, id;
126920 - mm_segment_t fs;
126921 int rval;
126922 u64 cfg;
126923 int mdio_val;
126924 @@ -2709,22 +2708,23 @@ static int __init cs4297a_init(void)
126925 if (!rval) {
126926 char *sb1250_duart_present;
126927
126928 +#if 0
126929 + mm_segment_t fs;
126930 fs = get_fs();
126931 set_fs(KERNEL_DS);
126932 -#if 0
126933 val = SOUND_MASK_LINE;
126934 mixer_ioctl(s, SOUND_MIXER_WRITE_RECSRC, (unsigned long) &val);
126935 for (i = 0; i < ARRAY_SIZE(initvol); i++) {
126936 val = initvol[i].vol;
126937 mixer_ioctl(s, initvol[i].mixch, (unsigned long) &val);
126938 }
126939 + set_fs(fs);
126940 // cs4297a_write_ac97(s, 0x18, 0x0808);
126941 #else
126942 // cs4297a_write_ac97(s, 0x5e, 0x180);
126943 cs4297a_write_ac97(s, 0x02, 0x0808);
126944 cs4297a_write_ac97(s, 0x18, 0x0808);
126945 #endif
126946 - set_fs(fs);
126947
126948 list_add(&s->list, &cs4297a_devs);
126949
126950 diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
126951 index d1a2cb6..8b3ff00 100644
126952 --- a/sound/pci/hda/hda_codec.c
126953 +++ b/sound/pci/hda/hda_codec.c
126954 @@ -1857,7 +1857,7 @@ static int get_kctl_0dB_offset(struct hda_codec *codec,
126955 /* FIXME: set_fs() hack for obtaining user-space TLV data */
126956 mm_segment_t fs = get_fs();
126957 set_fs(get_ds());
126958 - if (!kctl->tlv.c(kctl, 0, sizeof(_tlv), _tlv))
126959 + if (!kctl->tlv.c(kctl, 0, sizeof(_tlv), (unsigned int __force_user *)_tlv))
126960 tlv = _tlv;
126961 set_fs(fs);
126962 } else if (kctl->vd[0].access & SNDRV_CTL_ELEM_ACCESS_TLV_READ)
126963 diff --git a/sound/pci/ymfpci/ymfpci.h b/sound/pci/ymfpci/ymfpci.h
126964 index 149d4cb..7784769 100644
126965 --- a/sound/pci/ymfpci/ymfpci.h
126966 +++ b/sound/pci/ymfpci/ymfpci.h
126967 @@ -358,7 +358,7 @@ struct snd_ymfpci {
126968 spinlock_t reg_lock;
126969 spinlock_t voice_lock;
126970 wait_queue_head_t interrupt_sleep;
126971 - atomic_t interrupt_sleep_count;
126972 + atomic_unchecked_t interrupt_sleep_count;
126973 struct snd_info_entry *proc_entry;
126974 const struct firmware *dsp_microcode;
126975 const struct firmware *controller_microcode;
126976 diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
126977 index 4c26076..a13f370 100644
126978 --- a/sound/pci/ymfpci/ymfpci_main.c
126979 +++ b/sound/pci/ymfpci/ymfpci_main.c
126980 @@ -204,8 +204,8 @@ static void snd_ymfpci_hw_stop(struct snd_ymfpci *chip)
126981 if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
126982 break;
126983 }
126984 - if (atomic_read(&chip->interrupt_sleep_count)) {
126985 - atomic_set(&chip->interrupt_sleep_count, 0);
126986 + if (atomic_read_unchecked(&chip->interrupt_sleep_count)) {
126987 + atomic_set_unchecked(&chip->interrupt_sleep_count, 0);
126988 wake_up(&chip->interrupt_sleep);
126989 }
126990 __end:
126991 @@ -789,7 +789,7 @@ static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip)
126992 continue;
126993 init_waitqueue_entry(&wait, current);
126994 add_wait_queue(&chip->interrupt_sleep, &wait);
126995 - atomic_inc(&chip->interrupt_sleep_count);
126996 + atomic_inc_unchecked(&chip->interrupt_sleep_count);
126997 schedule_timeout_uninterruptible(msecs_to_jiffies(50));
126998 remove_wait_queue(&chip->interrupt_sleep, &wait);
126999 }
127000 @@ -827,8 +827,8 @@ static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id)
127001 snd_ymfpci_writel(chip, YDSXGR_MODE, mode);
127002 spin_unlock(&chip->reg_lock);
127003
127004 - if (atomic_read(&chip->interrupt_sleep_count)) {
127005 - atomic_set(&chip->interrupt_sleep_count, 0);
127006 + if (atomic_read_unchecked(&chip->interrupt_sleep_count)) {
127007 + atomic_set_unchecked(&chip->interrupt_sleep_count, 0);
127008 wake_up(&chip->interrupt_sleep);
127009 }
127010 }
127011 @@ -2384,7 +2384,7 @@ int snd_ymfpci_create(struct snd_card *card,
127012 spin_lock_init(&chip->reg_lock);
127013 spin_lock_init(&chip->voice_lock);
127014 init_waitqueue_head(&chip->interrupt_sleep);
127015 - atomic_set(&chip->interrupt_sleep_count, 0);
127016 + atomic_set_unchecked(&chip->interrupt_sleep_count, 0);
127017 chip->card = card;
127018 chip->pci = pci;
127019 chip->irq = -1;
127020 diff --git a/sound/soc/soc-ac97.c b/sound/soc/soc-ac97.c
127021 index 08d7259..0336224 100644
127022 --- a/sound/soc/soc-ac97.c
127023 +++ b/sound/soc/soc-ac97.c
127024 @@ -271,8 +271,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
127025 if (ret)
127026 return ret;
127027
127028 - ops->warm_reset = snd_soc_ac97_warm_reset;
127029 - ops->reset = snd_soc_ac97_reset;
127030 + pax_open_kernel();
127031 + *(void **)&ops->warm_reset = snd_soc_ac97_warm_reset;
127032 + *(void **)&ops->reset = snd_soc_ac97_reset;
127033 + pax_close_kernel();
127034
127035 snd_ac97_rst_cfg = cfg;
127036 return 0;
127037 diff --git a/sound/soc/xtensa/xtfpga-i2s.c b/sound/soc/xtensa/xtfpga-i2s.c
127038 index 1cfb19e..6e5731a 100644
127039 --- a/sound/soc/xtensa/xtfpga-i2s.c
127040 +++ b/sound/soc/xtensa/xtfpga-i2s.c
127041 @@ -437,7 +437,7 @@ static int xtfpga_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
127042 case SNDRV_PCM_TRIGGER_START:
127043 case SNDRV_PCM_TRIGGER_RESUME:
127044 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
127045 - ACCESS_ONCE(i2s->tx_ptr) = 0;
127046 + ACCESS_ONCE_RW(i2s->tx_ptr) = 0;
127047 rcu_assign_pointer(i2s->tx_substream, substream);
127048 xtfpga_pcm_refill_fifo(i2s);
127049 break;
127050 diff --git a/sound/synth/emux/emux_seq.c b/sound/synth/emux/emux_seq.c
127051 index a020920..55579f6 100644
127052 --- a/sound/synth/emux/emux_seq.c
127053 +++ b/sound/synth/emux/emux_seq.c
127054 @@ -33,13 +33,13 @@ static int snd_emux_unuse(void *private_data, struct snd_seq_port_subscribe *inf
127055 * MIDI emulation operators
127056 */
127057 static struct snd_midi_op emux_ops = {
127058 - snd_emux_note_on,
127059 - snd_emux_note_off,
127060 - snd_emux_key_press,
127061 - snd_emux_terminate_note,
127062 - snd_emux_control,
127063 - snd_emux_nrpn,
127064 - snd_emux_sysex,
127065 + .note_on = snd_emux_note_on,
127066 + .note_off = snd_emux_note_off,
127067 + .key_press = snd_emux_key_press,
127068 + .note_terminate = snd_emux_terminate_note,
127069 + .control = snd_emux_control,
127070 + .nrpn = snd_emux_nrpn,
127071 + .sysex = snd_emux_sysex,
127072 };
127073
127074
127075 diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
127076 index 81b7da8..bb2676f 100644
127077 --- a/sound/usb/line6/driver.c
127078 +++ b/sound/usb/line6/driver.c
127079 @@ -307,7 +307,7 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
127080 {
127081 struct usb_device *usbdev = line6->usbdev;
127082 int ret;
127083 - unsigned char len;
127084 + unsigned char *plen;
127085 unsigned count;
127086
127087 if (address > 0xffff || datalen > 0xff)
127088 @@ -324,6 +324,10 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
127089 return ret;
127090 }
127091
127092 + plen = kmalloc(1, GFP_KERNEL);
127093 + if (plen == NULL)
127094 + return -ENOMEM;
127095 +
127096 /* Wait for data length. We'll get 0xff until length arrives. */
127097 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
127098 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
127099 @@ -331,30 +335,35 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
127100 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
127101 USB_TYPE_VENDOR | USB_RECIP_DEVICE |
127102 USB_DIR_IN,
127103 - 0x0012, 0x0000, &len, 1,
127104 + 0x0012, 0x0000, plen, 1,
127105 LINE6_TIMEOUT * HZ);
127106 if (ret < 0) {
127107 dev_err(line6->ifcdev,
127108 "receive length failed (error %d)\n", ret);
127109 + kfree(plen);
127110 return ret;
127111 }
127112
127113 - if (len != 0xff)
127114 + if (*plen != 0xff)
127115 break;
127116 }
127117
127118 - if (len == 0xff) {
127119 + if (*plen == 0xff) {
127120 dev_err(line6->ifcdev, "read failed after %d retries\n",
127121 count);
127122 + kfree(plen);
127123 return -EIO;
127124 - } else if (len != datalen) {
127125 + } else if (*plen != datalen) {
127126 /* should be equal or something went wrong */
127127 dev_err(line6->ifcdev,
127128 "length mismatch (expected %d, got %d)\n",
127129 - (int)datalen, (int)len);
127130 + (int)datalen, (int)*plen);
127131 + kfree(plen);
127132 return -EIO;
127133 }
127134
127135 + kfree(plen);
127136 +
127137 /* receive the result: */
127138 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
127139 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
127140 @@ -378,7 +387,7 @@ int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
127141 {
127142 struct usb_device *usbdev = line6->usbdev;
127143 int ret;
127144 - unsigned char status;
127145 + unsigned char *status;
127146 int count;
127147
127148 if (address > 0xffff || datalen > 0xffff)
127149 @@ -395,6 +404,10 @@ int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
127150 return ret;
127151 }
127152
127153 + status = kmalloc(1, GFP_KERNEL);
127154 + if (status == NULL)
127155 + return -ENOMEM;
127156 +
127157 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
127158 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
127159
127160 @@ -403,27 +416,32 @@ int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
127161 USB_TYPE_VENDOR | USB_RECIP_DEVICE |
127162 USB_DIR_IN,
127163 0x0012, 0x0000,
127164 - &status, 1, LINE6_TIMEOUT * HZ);
127165 + status, 1, LINE6_TIMEOUT * HZ);
127166
127167 if (ret < 0) {
127168 dev_err(line6->ifcdev,
127169 "receiving status failed (error %d)\n", ret);
127170 + kfree(status);
127171 return ret;
127172 }
127173
127174 - if (status != 0xff)
127175 + if (*status != 0xff)
127176 break;
127177 }
127178
127179 - if (status == 0xff) {
127180 + if (*status == 0xff) {
127181 dev_err(line6->ifcdev, "write failed after %d retries\n",
127182 count);
127183 + kfree(status);
127184 return -EIO;
127185 - } else if (status != 0) {
127186 + } else if (*status != 0) {
127187 dev_err(line6->ifcdev, "write failed (error %d)\n", ret);
127188 + kfree(status);
127189 return -EIO;
127190 }
127191
127192 + kfree(status);
127193 +
127194 return 0;
127195 }
127196 EXPORT_SYMBOL_GPL(line6_write_data);
127197 diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
127198 index 6d4c50c..aa658c8 100644
127199 --- a/sound/usb/line6/toneport.c
127200 +++ b/sound/usb/line6/toneport.c
127201 @@ -367,13 +367,19 @@ static bool toneport_has_source_select(struct usb_line6_toneport *toneport)
127202 */
127203 static void toneport_setup(struct usb_line6_toneport *toneport)
127204 {
127205 - int ticks;
127206 + int *ticks;
127207 struct usb_line6 *line6 = &toneport->line6;
127208 struct usb_device *usbdev = line6->usbdev;
127209
127210 + ticks = kmalloc(sizeof(int), GFP_KERNEL);
127211 + if (ticks == NULL)
127212 + return;
127213 +
127214 /* sync time on device with host: */
127215 - ticks = (int)get_seconds();
127216 - line6_write_data(line6, 0x80c6, &ticks, 4);
127217 + *ticks = (int)get_seconds();
127218 + line6_write_data(line6, 0x80c6, ticks, sizeof(int));
127219 +
127220 + kfree(ticks);
127221
127222 /* enable device: */
127223 toneport_send_cmd(usbdev, 0x0301, 0x0000);
127224 diff --git a/tools/gcc/.gitignore b/tools/gcc/.gitignore
127225 new file mode 100644
127226 index 0000000..de92ed9
127227 --- /dev/null
127228 +++ b/tools/gcc/.gitignore
127229 @@ -0,0 +1 @@
127230 +randomize_layout_seed.h
127231 diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile
127232 new file mode 100644
127233 index 0000000..4945d82
127234 --- /dev/null
127235 +++ b/tools/gcc/Makefile
127236 @@ -0,0 +1,54 @@
127237 +#CC := gcc
127238 +#PLUGIN_SOURCE_FILES := pax_plugin.c
127239 +#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
127240 +GCCPLUGINS_DIR := $(shell $(CC) -print-file-name=plugin)
127241 +#CFLAGS += -I$(GCCPLUGINS_DIR)/include -fPIC -O2 -Wall -W -std=gnu99
127242 +
127243 +ifeq ($(PLUGINCC),$(HOSTCC))
127244 +HOSTLIBS := hostlibs
127245 +HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include -I$(src) -std=gnu99 -ggdb
127246 +export HOST_EXTRACFLAGS
127247 +else
127248 +HOSTLIBS := hostcxxlibs
127249 +HOST_EXTRACXXFLAGS += -I$(GCCPLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti -fno-exceptions -fasynchronous-unwind-tables -ggdb -Wno-unused-parameter -Wno-narrowing -Wno-unused-variable
127250 +export HOST_EXTRACXXFLAGS
127251 +endif
127252 +
127253 +export GCCPLUGINS_DIR HOSTLIBS
127254 +
127255 +$(HOSTLIBS)-$(CONFIG_PAX_CONSTIFY_PLUGIN) := constify_plugin.so
127256 +$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so
127257 +$(HOSTLIBS)-$(CONFIG_KALLOCSTAT_PLUGIN) += kallocstat_plugin.so
127258 +$(HOSTLIBS)-$(CONFIG_PAX_KERNEXEC_PLUGIN) += kernexec_plugin.so
127259 +$(HOSTLIBS)-$(CONFIG_CHECKER_PLUGIN) += checker_plugin.so
127260 +$(HOSTLIBS)-y += colorize_plugin.so
127261 +$(HOSTLIBS)-$(CONFIG_PAX_LATENT_ENTROPY) += latent_entropy_plugin.so
127262 +$(HOSTLIBS)-$(CONFIG_PAX_MEMORY_STRUCTLEAK) += structleak_plugin.so
127263 +$(HOSTLIBS)-y += initify_plugin.so
127264 +$(HOSTLIBS)-$(CONFIG_GRKERNSEC_RANDSTRUCT) += randomize_layout_plugin.so
127265 +
127266 +subdir-$(CONFIG_PAX_SIZE_OVERFLOW) := size_overflow_plugin
127267 +subdir- += size_overflow_plugin
127268 +
127269 +always := $($(HOSTLIBS)-y)
127270 +
127271 +constify_plugin-objs := constify_plugin.o
127272 +stackleak_plugin-objs := stackleak_plugin.o
127273 +kallocstat_plugin-objs := kallocstat_plugin.o
127274 +kernexec_plugin-objs := kernexec_plugin.o
127275 +checker_plugin-objs := checker_plugin.o
127276 +colorize_plugin-objs := colorize_plugin.o
127277 +latent_entropy_plugin-objs := latent_entropy_plugin.o
127278 +structleak_plugin-objs := structleak_plugin.o
127279 +initify_plugin-objs := initify_plugin.o
127280 +randomize_layout_plugin-objs := randomize_layout_plugin.o
127281 +
127282 +$(obj)/randomize_layout_plugin.o: $(objtree)/$(obj)/randomize_layout_seed.h
127283 +
127284 +quiet_cmd_create_randomize_layout_seed = GENSEED $@
127285 + cmd_create_randomize_layout_seed = \
127286 + $(CONFIG_SHELL) $(srctree)/$(src)/gen-random-seed.sh $@ $(objtree)/include/generated/randomize_layout_hash.h
127287 +$(objtree)/$(obj)/randomize_layout_seed.h: FORCE
127288 + $(call if_changed,create_randomize_layout_seed)
127289 +
127290 +targets += randomize_layout_seed.h randomize_layout_hash.h
127291 diff --git a/tools/gcc/checker_plugin.c b/tools/gcc/checker_plugin.c
127292 new file mode 100644
127293 index 0000000..5452feea
127294 --- /dev/null
127295 +++ b/tools/gcc/checker_plugin.c
127296 @@ -0,0 +1,150 @@
127297 +/*
127298 + * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu>
127299 + * Licensed under the GPL v2
127300 + *
127301 + * Note: the choice of the license means that the compilation process is
127302 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
127303 + * but for the kernel it doesn't matter since it doesn't link against
127304 + * any of the gcc libraries
127305 + *
127306 + * gcc plugin to implement various sparse (source code checker) features
127307 + *
127308 + * TODO:
127309 + * - define separate __iomem, __percpu and __rcu address spaces (lots of code to patch)
127310 + *
127311 + * BUGS:
127312 + * - none known
127313 + */
127314 +
127315 +#include "gcc-common.h"
127316 +
127317 +extern void c_register_addr_space (const char *str, addr_space_t as);
127318 +extern enum machine_mode default_addr_space_pointer_mode (addr_space_t);
127319 +extern enum machine_mode default_addr_space_address_mode (addr_space_t);
127320 +extern bool default_addr_space_valid_pointer_mode(enum machine_mode mode, addr_space_t as);
127321 +extern bool default_addr_space_legitimate_address_p(enum machine_mode mode, rtx mem, bool strict, addr_space_t as);
127322 +extern rtx default_addr_space_legitimize_address(rtx x, rtx oldx, enum machine_mode mode, addr_space_t as);
127323 +
127324 +int plugin_is_GPL_compatible;
127325 +
127326 +static struct plugin_info checker_plugin_info = {
127327 + .version = "201304082245",
127328 + .help = NULL,
127329 +};
127330 +
127331 +#define ADDR_SPACE_KERNEL 0
127332 +#define ADDR_SPACE_FORCE_KERNEL 1
127333 +#define ADDR_SPACE_USER 2
127334 +#define ADDR_SPACE_FORCE_USER 3
127335 +#define ADDR_SPACE_IOMEM 0
127336 +#define ADDR_SPACE_FORCE_IOMEM 0
127337 +#define ADDR_SPACE_PERCPU 0
127338 +#define ADDR_SPACE_FORCE_PERCPU 0
127339 +#define ADDR_SPACE_RCU 0
127340 +#define ADDR_SPACE_FORCE_RCU 0
127341 +
127342 +static enum machine_mode checker_addr_space_pointer_mode(addr_space_t addrspace)
127343 +{
127344 + return default_addr_space_pointer_mode(ADDR_SPACE_GENERIC);
127345 +}
127346 +
127347 +static enum machine_mode checker_addr_space_address_mode(addr_space_t addrspace)
127348 +{
127349 + return default_addr_space_address_mode(ADDR_SPACE_GENERIC);
127350 +}
127351 +
127352 +static bool checker_addr_space_valid_pointer_mode(enum machine_mode mode, addr_space_t as)
127353 +{
127354 + return default_addr_space_valid_pointer_mode(mode, as);
127355 +}
127356 +
127357 +static bool checker_addr_space_legitimate_address_p(enum machine_mode mode, rtx mem, bool strict, addr_space_t as)
127358 +{
127359 + return default_addr_space_legitimate_address_p(mode, mem, strict, ADDR_SPACE_GENERIC);
127360 +}
127361 +
127362 +static rtx checker_addr_space_legitimize_address(rtx x, rtx oldx, enum machine_mode mode, addr_space_t as)
127363 +{
127364 + return default_addr_space_legitimize_address(x, oldx, mode, as);
127365 +}
127366 +
127367 +static bool checker_addr_space_subset_p(addr_space_t subset, addr_space_t superset)
127368 +{
127369 + if (subset == ADDR_SPACE_FORCE_KERNEL && superset == ADDR_SPACE_KERNEL)
127370 + return true;
127371 +
127372 + if (subset == ADDR_SPACE_FORCE_USER && superset == ADDR_SPACE_USER)
127373 + return true;
127374 +
127375 + if (subset == ADDR_SPACE_FORCE_IOMEM && superset == ADDR_SPACE_IOMEM)
127376 + return true;
127377 +
127378 + if (subset == ADDR_SPACE_KERNEL && superset == ADDR_SPACE_FORCE_USER)
127379 + return true;
127380 +
127381 + if (subset == ADDR_SPACE_KERNEL && superset == ADDR_SPACE_FORCE_IOMEM)
127382 + return true;
127383 +
127384 + if (subset == ADDR_SPACE_USER && superset == ADDR_SPACE_FORCE_KERNEL)
127385 + return true;
127386 +
127387 + if (subset == ADDR_SPACE_IOMEM && superset == ADDR_SPACE_FORCE_KERNEL)
127388 + return true;
127389 +
127390 + return subset == superset;
127391 +}
127392 +
127393 +static rtx checker_addr_space_convert(rtx op, tree from_type, tree to_type)
127394 +{
127395 +// addr_space_t from_as = TYPE_ADDR_SPACE(TREE_TYPE(from_type));
127396 +// addr_space_t to_as = TYPE_ADDR_SPACE(TREE_TYPE(to_type));
127397 +
127398 + return op;
127399 +}
127400 +
127401 +static void register_checker_address_spaces(void *event_data, void *data)
127402 +{
127403 + c_register_addr_space("__kernel", ADDR_SPACE_KERNEL);
127404 + c_register_addr_space("__force_kernel", ADDR_SPACE_FORCE_KERNEL);
127405 + c_register_addr_space("__user", ADDR_SPACE_USER);
127406 + c_register_addr_space("__force_user", ADDR_SPACE_FORCE_USER);
127407 +// c_register_addr_space("__iomem", ADDR_SPACE_IOMEM);
127408 +// c_register_addr_space("__force_iomem", ADDR_SPACE_FORCE_IOMEM);
127409 +// c_register_addr_space("__percpu", ADDR_SPACE_PERCPU);
127410 +// c_register_addr_space("__force_percpu", ADDR_SPACE_FORCE_PERCPU);
127411 +// c_register_addr_space("__rcu", ADDR_SPACE_RCU);
127412 +// c_register_addr_space("__force_rcu", ADDR_SPACE_FORCE_RCU);
127413 +
127414 + targetm.addr_space.pointer_mode = checker_addr_space_pointer_mode;
127415 + targetm.addr_space.address_mode = checker_addr_space_address_mode;
127416 + targetm.addr_space.valid_pointer_mode = checker_addr_space_valid_pointer_mode;
127417 + targetm.addr_space.legitimate_address_p = checker_addr_space_legitimate_address_p;
127418 +// targetm.addr_space.legitimize_address = checker_addr_space_legitimize_address;
127419 + targetm.addr_space.subset_p = checker_addr_space_subset_p;
127420 + targetm.addr_space.convert = checker_addr_space_convert;
127421 +}
127422 +
127423 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
127424 +{
127425 + const char * const plugin_name = plugin_info->base_name;
127426 + const int argc = plugin_info->argc;
127427 + const struct plugin_argument * const argv = plugin_info->argv;
127428 + int i;
127429 +
127430 + if (!plugin_default_version_check(version, &gcc_version)) {
127431 + error(G_("incompatible gcc/plugin versions"));
127432 + return 1;
127433 + }
127434 +
127435 + register_callback(plugin_name, PLUGIN_INFO, NULL, &checker_plugin_info);
127436 +
127437 + for (i = 0; i < argc; ++i)
127438 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
127439 +
127440 + if (TARGET_64BIT == 0)
127441 + return 0;
127442 +
127443 + register_callback(plugin_name, PLUGIN_PRAGMAS, register_checker_address_spaces, NULL);
127444 +
127445 + return 0;
127446 +}
127447 diff --git a/tools/gcc/colorize_plugin.c b/tools/gcc/colorize_plugin.c
127448 new file mode 100644
127449 index 0000000..0c96d8a
127450 --- /dev/null
127451 +++ b/tools/gcc/colorize_plugin.c
127452 @@ -0,0 +1,215 @@
127453 +/*
127454 + * Copyright 2012-2015 by PaX Team <pageexec@freemail.hu>
127455 + * Licensed under the GPL v2
127456 + *
127457 + * Note: the choice of the license means that the compilation process is
127458 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
127459 + * but for the kernel it doesn't matter since it doesn't link against
127460 + * any of the gcc libraries
127461 + *
127462 + * gcc plugin to colorize diagnostic output
127463 + *
127464 + */
127465 +
127466 +#include "gcc-common.h"
127467 +
127468 +int plugin_is_GPL_compatible;
127469 +
127470 +static struct plugin_info colorize_plugin_info = {
127471 + .version = "201404202350",
127472 + .help = "color=[never|always|auto]\tdetermine when to colorize\n",
127473 +};
127474 +
127475 +#define GREEN "\033[32m\033[K"
127476 +#define LIGHTGREEN "\033[1;32m\033[K"
127477 +#define YELLOW "\033[33m\033[K"
127478 +#define LIGHTYELLOW "\033[1;33m\033[K"
127479 +#define RED "\033[31m\033[K"
127480 +#define LIGHTRED "\033[1;31m\033[K"
127481 +#define BLUE "\033[34m\033[K"
127482 +#define LIGHTBLUE "\033[1;34m\033[K"
127483 +#define BRIGHT "\033[1;m\033[K"
127484 +#define NORMAL "\033[m\033[K"
127485 +
127486 +static diagnostic_starter_fn old_starter;
127487 +static diagnostic_finalizer_fn old_finalizer;
127488 +
127489 +static void start_colorize(diagnostic_context *context, diagnostic_info *diagnostic)
127490 +{
127491 + const char *color;
127492 + char *newprefix;
127493 +
127494 + switch (diagnostic->kind) {
127495 + case DK_NOTE:
127496 + color = LIGHTBLUE;
127497 + break;
127498 +
127499 + case DK_PEDWARN:
127500 + case DK_WARNING:
127501 + color = LIGHTYELLOW;
127502 + break;
127503 +
127504 + case DK_ERROR:
127505 + case DK_FATAL:
127506 + case DK_ICE:
127507 + case DK_PERMERROR:
127508 + case DK_SORRY:
127509 + color = LIGHTRED;
127510 + break;
127511 +
127512 + default:
127513 + color = NORMAL;
127514 + }
127515 +
127516 + old_starter(context, diagnostic);
127517 + if (-1 == asprintf(&newprefix, "%s%s" NORMAL, color, context->printer->prefix))
127518 + return;
127519 + pp_destroy_prefix(context->printer);
127520 + pp_set_prefix(context->printer, newprefix);
127521 +}
127522 +
127523 +static void finalize_colorize(diagnostic_context *context, diagnostic_info *diagnostic)
127524 +{
127525 + old_finalizer(context, diagnostic);
127526 +}
127527 +
127528 +static void colorize_arm(void)
127529 +{
127530 + old_starter = diagnostic_starter(global_dc);
127531 + old_finalizer = diagnostic_finalizer(global_dc);
127532 +
127533 + diagnostic_starter(global_dc) = start_colorize;
127534 + diagnostic_finalizer(global_dc) = finalize_colorize;
127535 +}
127536 +
127537 +static unsigned int execute_colorize_rearm(void)
127538 +{
127539 + if (diagnostic_starter(global_dc) == start_colorize)
127540 + return 0;
127541 +
127542 + colorize_arm();
127543 + return 0;
127544 +}
127545 +
127546 +#if BUILDING_GCC_VERSION >= 4009
127547 +namespace {
127548 +static const struct pass_data colorize_rearm_pass_data = {
127549 +#else
127550 +struct simple_ipa_opt_pass colorize_rearm_pass = {
127551 + .pass = {
127552 +#endif
127553 + .type = SIMPLE_IPA_PASS,
127554 + .name = "colorize_rearm",
127555 +#if BUILDING_GCC_VERSION >= 4008
127556 + .optinfo_flags = OPTGROUP_NONE,
127557 +#endif
127558 +#if BUILDING_GCC_VERSION >= 5000
127559 +#elif BUILDING_GCC_VERSION == 4009
127560 + .has_gate = false,
127561 + .has_execute = true,
127562 +#else
127563 + .gate = NULL,
127564 + .execute = execute_colorize_rearm,
127565 + .sub = NULL,
127566 + .next = NULL,
127567 + .static_pass_number = 0,
127568 +#endif
127569 + .tv_id = TV_NONE,
127570 + .properties_required = 0,
127571 + .properties_provided = 0,
127572 + .properties_destroyed = 0,
127573 + .todo_flags_start = 0,
127574 + .todo_flags_finish = 0
127575 +#if BUILDING_GCC_VERSION < 4009
127576 + }
127577 +#endif
127578 +};
127579 +
127580 +#if BUILDING_GCC_VERSION >= 4009
127581 +class colorize_rearm_pass : public simple_ipa_opt_pass {
127582 +public:
127583 + colorize_rearm_pass() : simple_ipa_opt_pass(colorize_rearm_pass_data, g) {}
127584 +#if BUILDING_GCC_VERSION >= 5000
127585 + virtual unsigned int execute(function *) { return execute_colorize_rearm(); }
127586 +#else
127587 + unsigned int execute() { return execute_colorize_rearm(); }
127588 +#endif
127589 +};
127590 +}
127591 +
127592 +static opt_pass *make_colorize_rearm_pass(void)
127593 +{
127594 + return new colorize_rearm_pass();
127595 +}
127596 +#else
127597 +static struct opt_pass *make_colorize_rearm_pass(void)
127598 +{
127599 + return &colorize_rearm_pass.pass;
127600 +}
127601 +#endif
127602 +
127603 +static void colorize_start_unit(void *gcc_data, void *user_data)
127604 +{
127605 + colorize_arm();
127606 +}
127607 +
127608 +static bool should_colorize(void)
127609 +{
127610 +#if BUILDING_GCC_VERSION >= 4009
127611 + return false;
127612 +#else
127613 + char const *t = getenv("TERM");
127614 +
127615 + return t && strcmp(t, "dumb") && isatty(STDERR_FILENO);
127616 +#endif
127617 +}
127618 +
127619 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
127620 +{
127621 + const char * const plugin_name = plugin_info->base_name;
127622 + const int argc = plugin_info->argc;
127623 + const struct plugin_argument * const argv = plugin_info->argv;
127624 + int i;
127625 + struct register_pass_info colorize_rearm_pass_info;
127626 + bool colorize;
127627 +
127628 + colorize_rearm_pass_info.pass = make_colorize_rearm_pass();
127629 + colorize_rearm_pass_info.reference_pass_name = "*free_lang_data";
127630 + colorize_rearm_pass_info.ref_pass_instance_number = 1;
127631 + colorize_rearm_pass_info.pos_op = PASS_POS_INSERT_AFTER;
127632 +
127633 + if (!plugin_default_version_check(version, &gcc_version)) {
127634 + error(G_("incompatible gcc/plugin versions"));
127635 + return 1;
127636 + }
127637 +
127638 + register_callback(plugin_name, PLUGIN_INFO, NULL, &colorize_plugin_info);
127639 +
127640 + colorize = getenv("GCC_COLORS") ? should_colorize() : false;
127641 +
127642 + for (i = 0; i < argc; ++i) {
127643 + if (!strcmp(argv[i].key, "color")) {
127644 + if (!argv[i].value) {
127645 + error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
127646 + continue;
127647 + }
127648 + if (!strcmp(argv[i].value, "always"))
127649 + colorize = true;
127650 + else if (!strcmp(argv[i].value, "never"))
127651 + colorize = false;
127652 + else if (!strcmp(argv[i].value, "auto"))
127653 + colorize = should_colorize();
127654 + else
127655 + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value);
127656 + continue;
127657 + }
127658 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
127659 + }
127660 +
127661 + if (colorize) {
127662 + // TODO: parse GCC_COLORS as used by gcc 4.9+
127663 + register_callback(plugin_name, PLUGIN_START_UNIT, &colorize_start_unit, NULL);
127664 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &colorize_rearm_pass_info);
127665 + }
127666 + return 0;
127667 +}
127668 diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c
127669 new file mode 100644
127670 index 0000000..b884a56
127671 --- /dev/null
127672 +++ b/tools/gcc/constify_plugin.c
127673 @@ -0,0 +1,564 @@
127674 +/*
127675 + * Copyright 2011 by Emese Revfy <re.emese@gmail.com>
127676 + * Copyright 2011-2015 by PaX Team <pageexec@freemail.hu>
127677 + * Licensed under the GPL v2, or (at your option) v3
127678 + *
127679 + * This gcc plugin constifies all structures which contain only function pointers or are explicitly marked for constification.
127680 + *
127681 + * Homepage:
127682 + * http://www.grsecurity.net/~ephox/const_plugin/
127683 + *
127684 + * Usage:
127685 + * $ gcc -I`gcc -print-file-name=plugin`/include -fPIC -shared -O2 -o constify_plugin.so constify_plugin.c
127686 + * $ gcc -fplugin=constify_plugin.so test.c -O2
127687 + */
127688 +
127689 +#include "gcc-common.h"
127690 +
127691 +// unused C type flag in all versions 4.5-5.0
127692 +#define TYPE_CONSTIFY_VISITED(TYPE) TYPE_LANG_FLAG_4(TYPE)
127693 +
127694 +int plugin_is_GPL_compatible;
127695 +
127696 +static struct plugin_info const_plugin_info = {
127697 + .version = "201401270210",
127698 + .help = "no-constify\tturn off constification\n",
127699 +};
127700 +
127701 +typedef struct {
127702 + bool has_fptr_field;
127703 + bool has_writable_field;
127704 + bool has_do_const_field;
127705 + bool has_no_const_field;
127706 +} constify_info;
127707 +
127708 +static const_tree get_field_type(const_tree field)
127709 +{
127710 + return strip_array_types(TREE_TYPE(field));
127711 +}
127712 +
127713 +static bool is_fptr(const_tree field)
127714 +{
127715 + const_tree ptr = get_field_type(field);
127716 +
127717 + if (TREE_CODE(ptr) != POINTER_TYPE)
127718 + return false;
127719 +
127720 + return TREE_CODE(TREE_TYPE(ptr)) == FUNCTION_TYPE;
127721 +}
127722 +
127723 +/*
127724 + * determine whether the given structure type meets the requirements for automatic constification,
127725 + * including the constification attributes on nested structure types
127726 + */
127727 +static void constifiable(const_tree node, constify_info *cinfo)
127728 +{
127729 + const_tree field;
127730 +
127731 + gcc_assert(TREE_CODE(node) == RECORD_TYPE || TREE_CODE(node) == UNION_TYPE);
127732 +
127733 + // e.g., pointer to structure fields while still constructing the structure type
127734 + if (TYPE_FIELDS(node) == NULL_TREE)
127735 + return;
127736 +
127737 + for (field = TYPE_FIELDS(node); field; field = TREE_CHAIN(field)) {
127738 + const_tree type = get_field_type(field);
127739 + enum tree_code code = TREE_CODE(type);
127740 +
127741 + if (node == type)
127742 + continue;
127743 +
127744 + if (is_fptr(field))
127745 + cinfo->has_fptr_field = true;
127746 + else if (!TREE_READONLY(field))
127747 + cinfo->has_writable_field = true;
127748 +
127749 + if (code == RECORD_TYPE || code == UNION_TYPE) {
127750 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(type)))
127751 + cinfo->has_do_const_field = true;
127752 + else if (lookup_attribute("no_const", TYPE_ATTRIBUTES(type)))
127753 + cinfo->has_no_const_field = true;
127754 + else
127755 + constifiable(type, cinfo);
127756 + }
127757 + }
127758 +}
127759 +
127760 +static bool constified(const_tree node)
127761 +{
127762 + constify_info cinfo = {
127763 + .has_fptr_field = false,
127764 + .has_writable_field = false,
127765 + .has_do_const_field = false,
127766 + .has_no_const_field = false
127767 + };
127768 +
127769 + gcc_assert(TREE_CODE(node) == RECORD_TYPE || TREE_CODE(node) == UNION_TYPE);
127770 +
127771 + if (lookup_attribute("no_const", TYPE_ATTRIBUTES(node))) {
127772 +// gcc_assert(!TYPE_READONLY(node));
127773 + return false;
127774 + }
127775 +
127776 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(node))) {
127777 + gcc_assert(TYPE_READONLY(node));
127778 + return true;
127779 + }
127780 +
127781 + constifiable(node, &cinfo);
127782 + if ((!cinfo.has_fptr_field || cinfo.has_writable_field) && !cinfo.has_do_const_field)
127783 + return false;
127784 +
127785 + return TYPE_READONLY(node);
127786 +}
127787 +
127788 +static void deconstify_tree(tree node);
127789 +
127790 +static void deconstify_type(tree type)
127791 +{
127792 + tree field;
127793 +
127794 + gcc_assert(TREE_CODE(type) == RECORD_TYPE || TREE_CODE(type) == UNION_TYPE);
127795 +
127796 + for (field = TYPE_FIELDS(type); field; field = TREE_CHAIN(field)) {
127797 + const_tree fieldtype = get_field_type(field);
127798 +
127799 + // special case handling of simple ptr-to-same-array-type members
127800 + if (TREE_CODE(TREE_TYPE(field)) == POINTER_TYPE) {
127801 + tree ptrtype = TREE_TYPE(TREE_TYPE(field));
127802 +
127803 + if (TREE_TYPE(TREE_TYPE(field)) == type)
127804 + continue;
127805 + if (TREE_CODE(ptrtype) != RECORD_TYPE && TREE_CODE(ptrtype) != UNION_TYPE)
127806 + continue;
127807 + if (!constified(ptrtype))
127808 + continue;
127809 + if (TYPE_MAIN_VARIANT(ptrtype) == TYPE_MAIN_VARIANT(type)) {
127810 + TREE_TYPE(field) = copy_node(TREE_TYPE(field));
127811 + TREE_TYPE(TREE_TYPE(field)) = build_qualified_type(type, TYPE_QUALS(ptrtype) & ~TYPE_QUAL_CONST);
127812 + }
127813 + continue;
127814 + }
127815 + if (TREE_CODE(fieldtype) != RECORD_TYPE && TREE_CODE(fieldtype) != UNION_TYPE)
127816 + continue;
127817 + if (!constified(fieldtype))
127818 + continue;
127819 +
127820 + deconstify_tree(field);
127821 + TREE_READONLY(field) = 0;
127822 + }
127823 + TYPE_READONLY(type) = 0;
127824 + C_TYPE_FIELDS_READONLY(type) = 0;
127825 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(type))) {
127826 + TYPE_ATTRIBUTES(type) = copy_list(TYPE_ATTRIBUTES(type));
127827 + TYPE_ATTRIBUTES(type) = remove_attribute("do_const", TYPE_ATTRIBUTES(type));
127828 + }
127829 +}
127830 +
127831 +static void deconstify_tree(tree node)
127832 +{
127833 + tree old_type, new_type, field;
127834 +
127835 + old_type = TREE_TYPE(node);
127836 + while (TREE_CODE(old_type) == ARRAY_TYPE && TREE_CODE(TREE_TYPE(old_type)) != ARRAY_TYPE) {
127837 + node = TREE_TYPE(node) = copy_node(old_type);
127838 + old_type = TREE_TYPE(old_type);
127839 + }
127840 +
127841 + gcc_assert(TREE_CODE(old_type) == RECORD_TYPE || TREE_CODE(old_type) == UNION_TYPE);
127842 + gcc_assert(TYPE_READONLY(old_type) && (TYPE_QUALS(old_type) & TYPE_QUAL_CONST));
127843 +
127844 + new_type = build_qualified_type(old_type, TYPE_QUALS(old_type) & ~TYPE_QUAL_CONST);
127845 + TYPE_FIELDS(new_type) = copy_list(TYPE_FIELDS(new_type));
127846 + for (field = TYPE_FIELDS(new_type); field; field = TREE_CHAIN(field))
127847 + DECL_FIELD_CONTEXT(field) = new_type;
127848 +
127849 + deconstify_type(new_type);
127850 +
127851 + TREE_TYPE(node) = new_type;
127852 +}
127853 +
127854 +static tree handle_no_const_attribute(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
127855 +{
127856 + tree type;
127857 + constify_info cinfo = {
127858 + .has_fptr_field = false,
127859 + .has_writable_field = false,
127860 + .has_do_const_field = false,
127861 + .has_no_const_field = false
127862 + };
127863 +
127864 + *no_add_attrs = true;
127865 + if (TREE_CODE(*node) == FUNCTION_DECL) {
127866 + error("%qE attribute does not apply to functions (%qF)", name, *node);
127867 + return NULL_TREE;
127868 + }
127869 +
127870 + if (TREE_CODE(*node) == PARM_DECL) {
127871 + error("%qE attribute does not apply to function parameters (%qD)", name, *node);
127872 + return NULL_TREE;
127873 + }
127874 +
127875 + if (TREE_CODE(*node) == VAR_DECL) {
127876 + error("%qE attribute does not apply to variables (%qD)", name, *node);
127877 + return NULL_TREE;
127878 + }
127879 +
127880 + if (TYPE_P(*node)) {
127881 + type = *node;
127882 + } else {
127883 + gcc_assert(TREE_CODE(*node) == TYPE_DECL);
127884 + type = TREE_TYPE(*node);
127885 + }
127886 +
127887 + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE) {
127888 + error("%qE attribute used on %qT applies to struct and union types only", name, type);
127889 + return NULL_TREE;
127890 + }
127891 +
127892 + if (lookup_attribute(IDENTIFIER_POINTER(name), TYPE_ATTRIBUTES(type))) {
127893 + error("%qE attribute is already applied to the type %qT", name, type);
127894 + return NULL_TREE;
127895 + }
127896 +
127897 + if (TYPE_P(*node)) {
127898 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(type)))
127899 + error("%qE attribute used on type %qT is incompatible with 'do_const'", name, type);
127900 + else
127901 + *no_add_attrs = false;
127902 + return NULL_TREE;
127903 + }
127904 +
127905 + constifiable(type, &cinfo);
127906 + if ((cinfo.has_fptr_field && !cinfo.has_writable_field) || lookup_attribute("do_const", TYPE_ATTRIBUTES(type))) {
127907 + deconstify_tree(*node);
127908 + TYPE_CONSTIFY_VISITED(TREE_TYPE(*node)) = 1;
127909 + return NULL_TREE;
127910 + }
127911 +
127912 + if (TYPE_FIELDS(type))
127913 + error("%qE attribute used on type %qT that is not constified", name, type);
127914 + return NULL_TREE;
127915 +}
127916 +
127917 +static void constify_type(tree type)
127918 +{
127919 + TYPE_READONLY(type) = 1;
127920 + C_TYPE_FIELDS_READONLY(type) = 1;
127921 + TYPE_CONSTIFY_VISITED(type) = 1;
127922 +// TYPE_ATTRIBUTES(type) = copy_list(TYPE_ATTRIBUTES(type));
127923 +// TYPE_ATTRIBUTES(type) = tree_cons(get_identifier("do_const"), NULL_TREE, TYPE_ATTRIBUTES(type));
127924 +}
127925 +
127926 +static tree handle_do_const_attribute(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
127927 +{
127928 + *no_add_attrs = true;
127929 + if (!TYPE_P(*node)) {
127930 + error("%qE attribute applies to types only (%qD)", name, *node);
127931 + return NULL_TREE;
127932 + }
127933 +
127934 + if (TREE_CODE(*node) != RECORD_TYPE && TREE_CODE(*node) != UNION_TYPE) {
127935 + error("%qE attribute used on %qT applies to struct and union types only", name, *node);
127936 + return NULL_TREE;
127937 + }
127938 +
127939 + if (lookup_attribute(IDENTIFIER_POINTER(name), TYPE_ATTRIBUTES(*node))) {
127940 + error("%qE attribute used on %qT is already applied to the type", name, *node);
127941 + return NULL_TREE;
127942 + }
127943 +
127944 + if (lookup_attribute("no_const", TYPE_ATTRIBUTES(*node))) {
127945 + error("%qE attribute used on %qT is incompatible with 'no_const'", name, *node);
127946 + return NULL_TREE;
127947 + }
127948 +
127949 + *no_add_attrs = false;
127950 + return NULL_TREE;
127951 +}
127952 +
127953 +static struct attribute_spec no_const_attr = {
127954 + .name = "no_const",
127955 + .min_length = 0,
127956 + .max_length = 0,
127957 + .decl_required = false,
127958 + .type_required = false,
127959 + .function_type_required = false,
127960 + .handler = handle_no_const_attribute,
127961 +#if BUILDING_GCC_VERSION >= 4007
127962 + .affects_type_identity = true
127963 +#endif
127964 +};
127965 +
127966 +static struct attribute_spec do_const_attr = {
127967 + .name = "do_const",
127968 + .min_length = 0,
127969 + .max_length = 0,
127970 + .decl_required = false,
127971 + .type_required = false,
127972 + .function_type_required = false,
127973 + .handler = handle_do_const_attribute,
127974 +#if BUILDING_GCC_VERSION >= 4007
127975 + .affects_type_identity = true
127976 +#endif
127977 +};
127978 +
127979 +static void register_attributes(void *event_data, void *data)
127980 +{
127981 + register_attribute(&no_const_attr);
127982 + register_attribute(&do_const_attr);
127983 +}
127984 +
127985 +static void finish_type(void *event_data, void *data)
127986 +{
127987 + tree type = (tree)event_data;
127988 + constify_info cinfo = {
127989 + .has_fptr_field = false,
127990 + .has_writable_field = false,
127991 + .has_do_const_field = false,
127992 + .has_no_const_field = false
127993 + };
127994 +
127995 + if (type == NULL_TREE || type == error_mark_node)
127996 + return;
127997 +
127998 +#if BUILDING_GCC_VERSION >= 5000
127999 + if (TREE_CODE(type) == ENUMERAL_TYPE)
128000 + return;
128001 +#endif
128002 +
128003 + if (TYPE_FIELDS(type) == NULL_TREE || TYPE_CONSTIFY_VISITED(type))
128004 + return;
128005 +
128006 + constifiable(type, &cinfo);
128007 +
128008 + if (lookup_attribute("no_const", TYPE_ATTRIBUTES(type))) {
128009 + if ((cinfo.has_fptr_field && !cinfo.has_writable_field) || cinfo.has_do_const_field) {
128010 + deconstify_type(type);
128011 + TYPE_CONSTIFY_VISITED(type) = 1;
128012 + } else
128013 + error("'no_const' attribute used on type %qT that is not constified", type);
128014 + return;
128015 + }
128016 +
128017 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(type))) {
128018 + if (!cinfo.has_writable_field) {
128019 + error("'do_const' attribute used on type %qT that is%sconstified", type, cinfo.has_fptr_field ? " " : " not ");
128020 + return;
128021 + }
128022 + constify_type(type);
128023 + return;
128024 + }
128025 +
128026 + if (cinfo.has_fptr_field && !cinfo.has_writable_field) {
128027 + if (lookup_attribute("do_const", TYPE_ATTRIBUTES(type))) {
128028 + error("'do_const' attribute used on type %qT that is constified", type);
128029 + return;
128030 + }
128031 + constify_type(type);
128032 + return;
128033 + }
128034 +
128035 + deconstify_type(type);
128036 + TYPE_CONSTIFY_VISITED(type) = 1;
128037 +}
128038 +
128039 +static void check_global_variables(void *event_data, void *data)
128040 +{
128041 + varpool_node_ptr node;
128042 +
128043 + FOR_EACH_VARIABLE(node) {
128044 + tree var = NODE_DECL(node);
128045 + tree type = TREE_TYPE(var);
128046 +
128047 + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE)
128048 + continue;
128049 +
128050 + if (!TYPE_READONLY(type) || !C_TYPE_FIELDS_READONLY(type))
128051 + continue;
128052 +
128053 + if (!TYPE_CONSTIFY_VISITED(type))
128054 + continue;
128055 +
128056 + if (DECL_EXTERNAL(var))
128057 + continue;
128058 +
128059 + if (DECL_INITIAL(var))
128060 + continue;
128061 +
128062 + // this works around a gcc bug/feature where uninitialized globals
128063 + // are moved into the .bss section regardless of any constification
128064 + DECL_INITIAL(var) = build_constructor(type, NULL);
128065 +// inform(DECL_SOURCE_LOCATION(var), "constified variable %qE moved into .rodata", var);
128066 + }
128067 +}
128068 +
128069 +static unsigned int check_local_variables(void)
128070 +{
128071 + unsigned int ret = 0;
128072 + tree var;
128073 +
128074 + unsigned int i;
128075 +
128076 + FOR_EACH_LOCAL_DECL(cfun, i, var) {
128077 + tree type = TREE_TYPE(var);
128078 +
128079 + gcc_assert(DECL_P(var));
128080 + if (is_global_var(var))
128081 + continue;
128082 +
128083 + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE)
128084 + continue;
128085 +
128086 + if (!TYPE_READONLY(type) || !C_TYPE_FIELDS_READONLY(type))
128087 + continue;
128088 +
128089 + if (!TYPE_CONSTIFY_VISITED(type))
128090 + continue;
128091 +
128092 + error_at(DECL_SOURCE_LOCATION(var), "constified variable %qE cannot be local", var);
128093 + ret = 1;
128094 + }
128095 + return ret;
128096 +}
128097 +
128098 +#if BUILDING_GCC_VERSION >= 4009
128099 +namespace {
128100 +static const struct pass_data check_local_variables_pass_data = {
128101 +#else
128102 +static struct gimple_opt_pass check_local_variables_pass = {
128103 + .pass = {
128104 +#endif
128105 + .type = GIMPLE_PASS,
128106 + .name = "check_local_variables",
128107 +#if BUILDING_GCC_VERSION >= 4008
128108 + .optinfo_flags = OPTGROUP_NONE,
128109 +#endif
128110 +#if BUILDING_GCC_VERSION >= 5000
128111 +#elif BUILDING_GCC_VERSION == 4009
128112 + .has_gate = false,
128113 + .has_execute = true,
128114 +#else
128115 + .gate = NULL,
128116 + .execute = check_local_variables,
128117 + .sub = NULL,
128118 + .next = NULL,
128119 + .static_pass_number = 0,
128120 +#endif
128121 + .tv_id = TV_NONE,
128122 + .properties_required = 0,
128123 + .properties_provided = 0,
128124 + .properties_destroyed = 0,
128125 + .todo_flags_start = 0,
128126 + .todo_flags_finish = 0
128127 +#if BUILDING_GCC_VERSION < 4009
128128 + }
128129 +#endif
128130 +};
128131 +
128132 +#if BUILDING_GCC_VERSION >= 4009
128133 +class check_local_variables_pass : public gimple_opt_pass {
128134 +public:
128135 + check_local_variables_pass() : gimple_opt_pass(check_local_variables_pass_data, g) {}
128136 +#if BUILDING_GCC_VERSION >= 5000
128137 + virtual unsigned int execute(function *) { return check_local_variables(); }
128138 +#else
128139 + unsigned int execute() { return check_local_variables(); }
128140 +#endif
128141 +};
128142 +}
128143 +
128144 +static opt_pass *make_check_local_variables_pass(void)
128145 +{
128146 + return new check_local_variables_pass();
128147 +}
128148 +#else
128149 +static struct opt_pass *make_check_local_variables_pass(void)
128150 +{
128151 + return &check_local_variables_pass.pass;
128152 +}
128153 +#endif
128154 +
128155 +static struct {
128156 + const char *name;
128157 + const char *asm_op;
128158 +} sections[] = {
128159 + {".init.rodata", "\t.section\t.init.rodata,\"a\""},
128160 + {".ref.rodata", "\t.section\t.ref.rodata,\"a\""},
128161 + {".devinit.rodata", "\t.section\t.devinit.rodata,\"a\""},
128162 + {".devexit.rodata", "\t.section\t.devexit.rodata,\"a\""},
128163 + {".cpuinit.rodata", "\t.section\t.cpuinit.rodata,\"a\""},
128164 + {".cpuexit.rodata", "\t.section\t.cpuexit.rodata,\"a\""},
128165 + {".meminit.rodata", "\t.section\t.meminit.rodata,\"a\""},
128166 + {".memexit.rodata", "\t.section\t.memexit.rodata,\"a\""},
128167 + {".data..read_only", "\t.section\t.data..read_only,\"a\""},
128168 +};
128169 +
128170 +static unsigned int (*old_section_type_flags)(tree decl, const char *name, int reloc);
128171 +
128172 +static unsigned int constify_section_type_flags(tree decl, const char *name, int reloc)
128173 +{
128174 + size_t i;
128175 +
128176 + for (i = 0; i < ARRAY_SIZE(sections); i++)
128177 + if (!strcmp(sections[i].name, name))
128178 + return 0;
128179 + return old_section_type_flags(decl, name, reloc);
128180 +}
128181 +
128182 +static void constify_start_unit(void *gcc_data, void *user_data)
128183 +{
128184 +// size_t i;
128185 +
128186 +// for (i = 0; i < ARRAY_SIZE(sections); i++)
128187 +// sections[i].section = get_unnamed_section(0, output_section_asm_op, sections[i].asm_op);
128188 +// sections[i].section = get_section(sections[i].name, 0, NULL);
128189 +
128190 + old_section_type_flags = targetm.section_type_flags;
128191 + targetm.section_type_flags = constify_section_type_flags;
128192 +}
128193 +
128194 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
128195 +{
128196 + const char * const plugin_name = plugin_info->base_name;
128197 + const int argc = plugin_info->argc;
128198 + const struct plugin_argument * const argv = plugin_info->argv;
128199 + int i;
128200 + bool constify = true;
128201 +
128202 + struct register_pass_info check_local_variables_pass_info;
128203 +
128204 + check_local_variables_pass_info.pass = make_check_local_variables_pass();
128205 + check_local_variables_pass_info.reference_pass_name = "ssa";
128206 + check_local_variables_pass_info.ref_pass_instance_number = 1;
128207 + check_local_variables_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
128208 +
128209 + if (!plugin_default_version_check(version, &gcc_version)) {
128210 + error(G_("incompatible gcc/plugin versions"));
128211 + return 1;
128212 + }
128213 +
128214 + for (i = 0; i < argc; ++i) {
128215 + if (!(strcmp(argv[i].key, "no-constify"))) {
128216 + constify = false;
128217 + continue;
128218 + }
128219 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
128220 + }
128221 +
128222 + if (strncmp(lang_hooks.name, "GNU C", 5) && !strncmp(lang_hooks.name, "GNU C+", 6)) {
128223 + inform(UNKNOWN_LOCATION, G_("%s supports C only, not %s"), plugin_name, lang_hooks.name);
128224 + constify = false;
128225 + }
128226 +
128227 + register_callback(plugin_name, PLUGIN_INFO, NULL, &const_plugin_info);
128228 + if (constify) {
128229 + register_callback(plugin_name, PLUGIN_ALL_IPA_PASSES_START, check_global_variables, NULL);
128230 + register_callback(plugin_name, PLUGIN_FINISH_TYPE, finish_type, NULL);
128231 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &check_local_variables_pass_info);
128232 + register_callback(plugin_name, PLUGIN_START_UNIT, constify_start_unit, NULL);
128233 + }
128234 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
128235 +
128236 + return 0;
128237 +}
128238 diff --git a/tools/gcc/gcc-common.h b/tools/gcc/gcc-common.h
128239 new file mode 100644
128240 index 0000000..9660b09
128241 --- /dev/null
128242 +++ b/tools/gcc/gcc-common.h
128243 @@ -0,0 +1,790 @@
128244 +#ifndef GCC_COMMON_H_INCLUDED
128245 +#define GCC_COMMON_H_INCLUDED
128246 +
128247 +#include "plugin.h"
128248 +#include "bversion.h"
128249 +#include "plugin-version.h"
128250 +#include "config.h"
128251 +#include "system.h"
128252 +#include "coretypes.h"
128253 +#include "tm.h"
128254 +#include "line-map.h"
128255 +#include "input.h"
128256 +#include "tree.h"
128257 +
128258 +#include "tree-inline.h"
128259 +#include "version.h"
128260 +#include "rtl.h"
128261 +#include "tm_p.h"
128262 +#include "flags.h"
128263 +//#include "insn-attr.h"
128264 +//#include "insn-config.h"
128265 +//#include "insn-flags.h"
128266 +#include "hard-reg-set.h"
128267 +//#include "recog.h"
128268 +#include "output.h"
128269 +#include "except.h"
128270 +#include "function.h"
128271 +#include "toplev.h"
128272 +//#include "expr.h"
128273 +#include "basic-block.h"
128274 +#include "intl.h"
128275 +#include "ggc.h"
128276 +//#include "regs.h"
128277 +#include "timevar.h"
128278 +
128279 +#include "params.h"
128280 +
128281 +#if BUILDING_GCC_VERSION <= 4009
128282 +#include "pointer-set.h"
128283 +#else
128284 +#include "hash-map.h"
128285 +#endif
128286 +
128287 +#include "emit-rtl.h"
128288 +//#include "reload.h"
128289 +//#include "ira.h"
128290 +//#include "dwarf2asm.h"
128291 +#include "debug.h"
128292 +#include "target.h"
128293 +#include "langhooks.h"
128294 +#include "cfgloop.h"
128295 +//#include "hosthooks.h"
128296 +#include "cgraph.h"
128297 +#include "opts.h"
128298 +//#include "coverage.h"
128299 +//#include "value-prof.h"
128300 +
128301 +#if BUILDING_GCC_VERSION == 4005
128302 +#include <sys/mman.h>
128303 +#endif
128304 +
128305 +#if BUILDING_GCC_VERSION >= 4007
128306 +#include "tree-pretty-print.h"
128307 +#include "gimple-pretty-print.h"
128308 +#endif
128309 +
128310 +#if BUILDING_GCC_VERSION >= 4006
128311 +//#include "c-tree.h"
128312 +//#include "cp/cp-tree.h"
128313 +#include "c-family/c-common.h"
128314 +#else
128315 +#include "c-common.h"
128316 +#endif
128317 +
128318 +#if BUILDING_GCC_VERSION <= 4008
128319 +#include "tree-flow.h"
128320 +#else
128321 +#include "tree-cfgcleanup.h"
128322 +#include "tree-ssa-operands.h"
128323 +#include "tree-into-ssa.h"
128324 +#endif
128325 +
128326 +#if BUILDING_GCC_VERSION >= 4008
128327 +#include "is-a.h"
128328 +#endif
128329 +
128330 +#include "diagnostic.h"
128331 +//#include "tree-diagnostic.h"
128332 +#include "tree-dump.h"
128333 +#include "tree-pass.h"
128334 +//#include "df.h"
128335 +#include "predict.h"
128336 +#include "ipa-utils.h"
128337 +
128338 +#if BUILDING_GCC_VERSION >= 4009
128339 +#include "varasm.h"
128340 +#include "stor-layout.h"
128341 +#include "internal-fn.h"
128342 +#include "gimple-expr.h"
128343 +#include "gimple-fold.h"
128344 +//#include "diagnostic-color.h"
128345 +#include "context.h"
128346 +#include "tree-ssa-alias.h"
128347 +#include "tree-ssa.h"
128348 +#include "stringpool.h"
128349 +#include "tree-ssanames.h"
128350 +#include "print-tree.h"
128351 +#include "tree-eh.h"
128352 +#include "stmt.h"
128353 +#include "gimplify.h"
128354 +#endif
128355 +
128356 +#include "gimple.h"
128357 +
128358 +#if BUILDING_GCC_VERSION >= 4009
128359 +#include "tree-ssa-operands.h"
128360 +#include "tree-phinodes.h"
128361 +#include "tree-cfg.h"
128362 +#include "gimple-iterator.h"
128363 +#include "gimple-ssa.h"
128364 +#include "ssa-iterators.h"
128365 +#endif
128366 +
128367 +//#include "lto/lto.h"
128368 +#if BUILDING_GCC_VERSION >= 4007
128369 +//#include "data-streamer.h"
128370 +#else
128371 +//#include "lto-streamer.h"
128372 +#endif
128373 +//#include "lto-compress.h"
128374 +#if BUILDING_GCC_VERSION >= 5000
128375 +//#include "lto-section-names.h"
128376 +#include "builtins.h"
128377 +#endif
128378 +
128379 +//#include "expr.h" where are you...
128380 +extern rtx emit_move_insn(rtx x, rtx y);
128381 +
128382 +// missing from basic_block.h...
128383 +extern void debug_dominance_info(enum cdi_direction dir);
128384 +extern void debug_dominance_tree(enum cdi_direction dir, basic_block root);
128385 +
128386 +#ifdef __cplusplus
128387 +static inline void debug_tree(const_tree t)
128388 +{
128389 + debug_tree(CONST_CAST_TREE(t));
128390 +}
128391 +#else
128392 +#define debug_tree(t) debug_tree(CONST_CAST_TREE(t))
128393 +#endif
128394 +
128395 +#define __unused __attribute__((__unused__))
128396 +
128397 +#define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node))
128398 +#define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node))
128399 +#define TYPE_NAME_POINTER(node) IDENTIFIER_POINTER(TYPE_NAME(node))
128400 +#define TYPE_NAME_LENGTH(node) IDENTIFIER_LENGTH(TYPE_NAME(node))
128401 +
128402 +// should come from c-tree.h if only it were installed for gcc 4.5...
128403 +#define C_TYPE_FIELDS_READONLY(TYPE) TREE_LANG_FLAG_1(TYPE)
128404 +
128405 +#if BUILDING_GCC_VERSION == 4005
128406 +#define FOR_EACH_LOCAL_DECL(FUN, I, D) for (tree vars = (FUN)->local_decls, (I) = 0; vars && ((D) = TREE_VALUE(vars)); vars = TREE_CHAIN(vars), (I)++)
128407 +#define DECL_CHAIN(NODE) (TREE_CHAIN(DECL_MINIMAL_CHECK(NODE)))
128408 +#define FOR_EACH_VEC_ELT(T, V, I, P) for (I = 0; VEC_iterate(T, (V), (I), (P)); ++(I))
128409 +#define TODO_rebuild_cgraph_edges 0
128410 +#define SCOPE_FILE_SCOPE_P(EXP) (!(EXP))
128411 +
128412 +#ifndef O_BINARY
128413 +#define O_BINARY 0
128414 +#endif
128415 +
128416 +typedef struct varpool_node *varpool_node_ptr;
128417 +
128418 +static inline bool gimple_call_builtin_p(gimple stmt, enum built_in_function code)
128419 +{
128420 + tree fndecl;
128421 +
128422 + if (!is_gimple_call(stmt))
128423 + return false;
128424 + fndecl = gimple_call_fndecl(stmt);
128425 + if (!fndecl || DECL_BUILT_IN_CLASS(fndecl) != BUILT_IN_NORMAL)
128426 + return false;
128427 +// print_node(stderr, "pax", fndecl, 4);
128428 + return DECL_FUNCTION_CODE(fndecl) == code;
128429 +}
128430 +
128431 +static inline bool is_simple_builtin(tree decl)
128432 +{
128433 + if (decl && DECL_BUILT_IN_CLASS(decl) != BUILT_IN_NORMAL)
128434 + return false;
128435 +
128436 + switch (DECL_FUNCTION_CODE(decl)) {
128437 + /* Builtins that expand to constants. */
128438 + case BUILT_IN_CONSTANT_P:
128439 + case BUILT_IN_EXPECT:
128440 + case BUILT_IN_OBJECT_SIZE:
128441 + case BUILT_IN_UNREACHABLE:
128442 + /* Simple register moves or loads from stack. */
128443 + case BUILT_IN_RETURN_ADDRESS:
128444 + case BUILT_IN_EXTRACT_RETURN_ADDR:
128445 + case BUILT_IN_FROB_RETURN_ADDR:
128446 + case BUILT_IN_RETURN:
128447 + case BUILT_IN_AGGREGATE_INCOMING_ADDRESS:
128448 + case BUILT_IN_FRAME_ADDRESS:
128449 + case BUILT_IN_VA_END:
128450 + case BUILT_IN_STACK_SAVE:
128451 + case BUILT_IN_STACK_RESTORE:
128452 + /* Exception state returns or moves registers around. */
128453 + case BUILT_IN_EH_FILTER:
128454 + case BUILT_IN_EH_POINTER:
128455 + case BUILT_IN_EH_COPY_VALUES:
128456 + return true;
128457 +
128458 + default:
128459 + return false;
128460 + }
128461 +}
128462 +
128463 +static inline void add_local_decl(struct function *fun, tree d)
128464 +{
128465 + gcc_assert(TREE_CODE(d) == VAR_DECL);
128466 + fun->local_decls = tree_cons(NULL_TREE, d, fun->local_decls);
128467 +}
128468 +#endif
128469 +
128470 +#if BUILDING_GCC_VERSION <= 4006
128471 +#define ANY_RETURN_P(rtx) (GET_CODE(rtx) == RETURN)
128472 +#define C_DECL_REGISTER(EXP) DECL_LANG_FLAG_4(EXP)
128473 +#define EDGE_PRESERVE 0ULL
128474 +#define HOST_WIDE_INT_PRINT_HEX_PURE "%" HOST_WIDE_INT_PRINT "x"
128475 +#define flag_fat_lto_objects true
128476 +
128477 +#define get_random_seed(noinit) ({ \
128478 + unsigned HOST_WIDE_INT seed; \
128479 + sscanf(get_random_seed(noinit), "%" HOST_WIDE_INT_PRINT "x", &seed); \
128480 + seed * seed; })
128481 +
128482 +#define int_const_binop(code, arg1, arg2) int_const_binop((code), (arg1), (arg2), 0)
128483 +
128484 +static inline bool gimple_clobber_p(gimple s __unused)
128485 +{
128486 + return false;
128487 +}
128488 +
128489 +static inline bool gimple_asm_clobbers_memory_p(const_gimple stmt)
128490 +{
128491 + unsigned i;
128492 +
128493 + for (i = 0; i < gimple_asm_nclobbers(stmt); i++) {
128494 + tree op = gimple_asm_clobber_op(stmt, i);
128495 + if (!strcmp(TREE_STRING_POINTER(TREE_VALUE(op)), "memory"))
128496 + return true;
128497 + }
128498 +
128499 + return false;
128500 +}
128501 +
128502 +static inline tree builtin_decl_implicit(enum built_in_function fncode)
128503 +{
128504 + return implicit_built_in_decls[fncode];
128505 +}
128506 +
128507 +static inline int ipa_reverse_postorder(struct cgraph_node **order)
128508 +{
128509 + return cgraph_postorder(order);
128510 +}
128511 +
128512 +static inline struct cgraph_node *cgraph_get_create_node(tree decl)
128513 +{
128514 + struct cgraph_node *node = cgraph_get_node(decl);
128515 +
128516 + return node ? node : cgraph_node(decl);
128517 +}
128518 +
128519 +static inline bool cgraph_function_with_gimple_body_p(struct cgraph_node *node)
128520 +{
128521 + return node->analyzed && !node->thunk.thunk_p && !node->alias;
128522 +}
128523 +
128524 +static inline struct cgraph_node *cgraph_first_function_with_gimple_body(void)
128525 +{
128526 + struct cgraph_node *node;
128527 +
128528 + for (node = cgraph_nodes; node; node = node->next)
128529 + if (cgraph_function_with_gimple_body_p(node))
128530 + return node;
128531 + return NULL;
128532 +}
128533 +
128534 +static inline struct cgraph_node *cgraph_next_function_with_gimple_body(struct cgraph_node *node)
128535 +{
128536 + for (node = node->next; node; node = node->next)
128537 + if (cgraph_function_with_gimple_body_p(node))
128538 + return node;
128539 + return NULL;
128540 +}
128541 +
128542 +#define FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) \
128543 + for ((node) = cgraph_first_function_with_gimple_body(); (node); \
128544 + (node) = cgraph_next_function_with_gimple_body(node))
128545 +
128546 +static inline void varpool_add_new_variable(tree decl)
128547 +{
128548 + varpool_finalize_decl(decl);
128549 +}
128550 +#endif
128551 +
128552 +#if BUILDING_GCC_VERSION == 4006
128553 +extern void debug_gimple_stmt(gimple);
128554 +extern void debug_gimple_seq(gimple_seq);
128555 +extern void print_gimple_seq(FILE *, gimple_seq, int, int);
128556 +extern void print_gimple_stmt(FILE *, gimple, int, int);
128557 +extern void print_gimple_expr(FILE *, gimple, int, int);
128558 +extern void dump_gimple_stmt(pretty_printer *, gimple, int, int);
128559 +#endif
128560 +
128561 +#if BUILDING_GCC_VERSION <= 4007
128562 +#define FOR_EACH_FUNCTION(node) for (node = cgraph_nodes; node; node = node->next)
128563 +#define FOR_EACH_VARIABLE(node) for (node = varpool_nodes; node; node = node->next)
128564 +#define PROP_loops 0
128565 +#define NODE_SYMBOL(node) (node)
128566 +#define NODE_DECL(node) (node)->decl
128567 +#define INSN_LOCATION(INSN) RTL_LOCATION(INSN)
128568 +
128569 +static inline int bb_loop_depth(const_basic_block bb)
128570 +{
128571 + return bb->loop_father ? loop_depth(bb->loop_father) : 0;
128572 +}
128573 +
128574 +static inline bool gimple_store_p(gimple gs)
128575 +{
128576 + tree lhs = gimple_get_lhs(gs);
128577 + return lhs && !is_gimple_reg(lhs);
128578 +}
128579 +#endif
128580 +
128581 +#if BUILDING_GCC_VERSION == 4007 || BUILDING_GCC_VERSION == 4008
128582 +static inline struct cgraph_node *cgraph_alias_target(struct cgraph_node *n)
128583 +{
128584 + return cgraph_alias_aliased_node(n);
128585 +}
128586 +#endif
128587 +
128588 +#if BUILDING_GCC_VERSION >= 4007 && BUILDING_GCC_VERSION <= 4009
128589 +#define cgraph_create_edge(caller, callee, call_stmt, count, freq, nest) \
128590 + cgraph_create_edge((caller), (callee), (call_stmt), (count), (freq))
128591 +#define cgraph_create_edge_including_clones(caller, callee, old_call_stmt, call_stmt, count, freq, nest, reason) \
128592 + cgraph_create_edge_including_clones((caller), (callee), (old_call_stmt), (call_stmt), (count), (freq), (reason))
128593 +#endif
128594 +
128595 +#if BUILDING_GCC_VERSION <= 4008
128596 +#define ENTRY_BLOCK_PTR_FOR_FN(FN) ENTRY_BLOCK_PTR_FOR_FUNCTION(FN)
128597 +#define EXIT_BLOCK_PTR_FOR_FN(FN) EXIT_BLOCK_PTR_FOR_FUNCTION(FN)
128598 +#define basic_block_info_for_fn(FN) ((FN)->cfg->x_basic_block_info)
128599 +#define n_basic_blocks_for_fn(FN) ((FN)->cfg->x_n_basic_blocks)
128600 +#define n_edges_for_fn(FN) ((FN)->cfg->x_n_edges)
128601 +#define last_basic_block_for_fn(FN) ((FN)->cfg->x_last_basic_block)
128602 +#define label_to_block_map_for_fn(FN) ((FN)->cfg->x_label_to_block_map)
128603 +#define profile_status_for_fn(FN) ((FN)->cfg->x_profile_status)
128604 +#define BASIC_BLOCK_FOR_FN(FN, N) BASIC_BLOCK_FOR_FUNCTION((FN), (N))
128605 +#define NODE_IMPLICIT_ALIAS(node) (node)->same_body_alias
128606 +#define VAR_P(NODE) (TREE_CODE(NODE) == VAR_DECL)
128607 +
128608 +static inline bool tree_fits_shwi_p(const_tree t)
128609 +{
128610 + if (t == NULL_TREE || TREE_CODE(t) != INTEGER_CST)
128611 + return false;
128612 +
128613 + if (TREE_INT_CST_HIGH(t) == 0 && (HOST_WIDE_INT)TREE_INT_CST_LOW(t) >= 0)
128614 + return true;
128615 +
128616 + if (TREE_INT_CST_HIGH(t) == -1 && (HOST_WIDE_INT)TREE_INT_CST_LOW(t) < 0 && !TYPE_UNSIGNED(TREE_TYPE(t)))
128617 + return true;
128618 +
128619 + return false;
128620 +}
128621 +
128622 +static inline bool tree_fits_uhwi_p(const_tree t)
128623 +{
128624 + if (t == NULL_TREE || TREE_CODE(t) != INTEGER_CST)
128625 + return false;
128626 +
128627 + return TREE_INT_CST_HIGH(t) == 0;
128628 +}
128629 +
128630 +static inline HOST_WIDE_INT tree_to_shwi(const_tree t)
128631 +{
128632 + gcc_assert(tree_fits_shwi_p(t));
128633 + return TREE_INT_CST_LOW(t);
128634 +}
128635 +
128636 +static inline unsigned HOST_WIDE_INT tree_to_uhwi(const_tree t)
128637 +{
128638 + gcc_assert(tree_fits_uhwi_p(t));
128639 + return TREE_INT_CST_LOW(t);
128640 +}
128641 +
128642 +static inline const char *get_tree_code_name(enum tree_code code)
128643 +{
128644 + gcc_assert(code < MAX_TREE_CODES);
128645 + return tree_code_name[code];
128646 +}
128647 +
128648 +#define ipa_remove_stmt_references(cnode, stmt)
128649 +
128650 +typedef union gimple_statement_d gasm;
128651 +typedef union gimple_statement_d gassign;
128652 +typedef union gimple_statement_d gcall;
128653 +typedef union gimple_statement_d gcond;
128654 +typedef union gimple_statement_d gdebug;
128655 +typedef union gimple_statement_d gphi;
128656 +typedef union gimple_statement_d greturn;
128657 +
128658 +static inline gasm *as_a_gasm(gimple stmt)
128659 +{
128660 + return stmt;
128661 +}
128662 +
128663 +static inline const gasm *as_a_const_gasm(const_gimple stmt)
128664 +{
128665 + return stmt;
128666 +}
128667 +
128668 +static inline gassign *as_a_gassign(gimple stmt)
128669 +{
128670 + return stmt;
128671 +}
128672 +
128673 +static inline const gassign *as_a_const_gassign(const_gimple stmt)
128674 +{
128675 + return stmt;
128676 +}
128677 +
128678 +static inline gcall *as_a_gcall(gimple stmt)
128679 +{
128680 + return stmt;
128681 +}
128682 +
128683 +static inline const gcall *as_a_const_gcall(const_gimple stmt)
128684 +{
128685 + return stmt;
128686 +}
128687 +
128688 +static inline gcond *as_a_gcond(gimple stmt)
128689 +{
128690 + return stmt;
128691 +}
128692 +
128693 +static inline const gcond *as_a_const_gcond(const_gimple stmt)
128694 +{
128695 + return stmt;
128696 +}
128697 +
128698 +static inline gdebug *as_a_gdebug(gimple stmt)
128699 +{
128700 + return stmt;
128701 +}
128702 +
128703 +static inline const gdebug *as_a_const_gdebug(const_gimple stmt)
128704 +{
128705 + return stmt;
128706 +}
128707 +
128708 +static inline gphi *as_a_gphi(gimple stmt)
128709 +{
128710 + return stmt;
128711 +}
128712 +
128713 +static inline const gphi *as_a_const_gphi(const_gimple stmt)
128714 +{
128715 + return stmt;
128716 +}
128717 +
128718 +static inline greturn *as_a_greturn(gimple stmt)
128719 +{
128720 + return stmt;
128721 +}
128722 +
128723 +static inline const greturn *as_a_const_greturn(const_gimple stmt)
128724 +{
128725 + return stmt;
128726 +}
128727 +#endif
128728 +
128729 +#if BUILDING_GCC_VERSION == 4008
128730 +#define NODE_SYMBOL(node) (&(node)->symbol)
128731 +#define NODE_DECL(node) (node)->symbol.decl
128732 +#endif
128733 +
128734 +#if BUILDING_GCC_VERSION >= 4008
128735 +#define add_referenced_var(var)
128736 +#define mark_sym_for_renaming(var)
128737 +#define varpool_mark_needed_node(node)
128738 +#define create_var_ann(var)
128739 +#define TODO_dump_func 0
128740 +#define TODO_dump_cgraph 0
128741 +#endif
128742 +
128743 +#if BUILDING_GCC_VERSION <= 4009
128744 +#define TODO_verify_il 0
128745 +#define AVAIL_INTERPOSABLE AVAIL_OVERWRITABLE
128746 +
128747 +#define section_name_prefix LTO_SECTION_NAME_PREFIX
128748 +#define fatal_error(loc, gmsgid, ...) fatal_error((gmsgid), __VA_ARGS__)
128749 +
128750 +typedef struct rtx_def rtx_insn;
128751 +
128752 +static inline void set_decl_section_name(tree node, const char *value)
128753 +{
128754 + DECL_SECTION_NAME(node) = build_string(strlen(value) + 1, value);
128755 +}
128756 +#endif
128757 +
128758 +#if BUILDING_GCC_VERSION == 4009
128759 +typedef struct gimple_statement_asm gasm;
128760 +typedef struct gimple_statement_base gassign;
128761 +typedef struct gimple_statement_call gcall;
128762 +typedef struct gimple_statement_base gcond;
128763 +typedef struct gimple_statement_base gdebug;
128764 +typedef struct gimple_statement_phi gphi;
128765 +typedef struct gimple_statement_base greturn;
128766 +
128767 +static inline gasm *as_a_gasm(gimple stmt)
128768 +{
128769 + return as_a<gasm>(stmt);
128770 +}
128771 +
128772 +static inline const gasm *as_a_const_gasm(const_gimple stmt)
128773 +{
128774 + return as_a<const gasm>(stmt);
128775 +}
128776 +
128777 +static inline gassign *as_a_gassign(gimple stmt)
128778 +{
128779 + return stmt;
128780 +}
128781 +
128782 +static inline const gassign *as_a_const_gassign(const_gimple stmt)
128783 +{
128784 + return stmt;
128785 +}
128786 +
128787 +static inline gcall *as_a_gcall(gimple stmt)
128788 +{
128789 + return as_a<gcall>(stmt);
128790 +}
128791 +
128792 +static inline const gcall *as_a_const_gcall(const_gimple stmt)
128793 +{
128794 + return as_a<const gcall>(stmt);
128795 +}
128796 +
128797 +static inline gcond *as_a_gcond(gimple stmt)
128798 +{
128799 + return stmt;
128800 +}
128801 +
128802 +static inline const gcond *as_a_const_gcond(const_gimple stmt)
128803 +{
128804 + return stmt;
128805 +}
128806 +
128807 +static inline gdebug *as_a_gdebug(gimple stmt)
128808 +{
128809 + return stmt;
128810 +}
128811 +
128812 +static inline const gdebug *as_a_const_gdebug(const_gimple stmt)
128813 +{
128814 + return stmt;
128815 +}
128816 +
128817 +static inline gphi *as_a_gphi(gimple stmt)
128818 +{
128819 + return as_a<gphi>(stmt);
128820 +}
128821 +
128822 +static inline const gphi *as_a_const_gphi(const_gimple stmt)
128823 +{
128824 + return as_a<const gphi>(stmt);
128825 +}
128826 +
128827 +static inline greturn *as_a_greturn(gimple stmt)
128828 +{
128829 + return stmt;
128830 +}
128831 +
128832 +static inline const greturn *as_a_const_greturn(const_gimple stmt)
128833 +{
128834 + return stmt;
128835 +}
128836 +#endif
128837 +
128838 +#if BUILDING_GCC_VERSION >= 4009
128839 +#define TODO_ggc_collect 0
128840 +#define NODE_SYMBOL(node) (node)
128841 +#define NODE_DECL(node) (node)->decl
128842 +#define cgraph_node_name(node) (node)->name()
128843 +#define NODE_IMPLICIT_ALIAS(node) (node)->cpp_implicit_alias
128844 +#endif
128845 +
128846 +#if BUILDING_GCC_VERSION >= 5000
128847 +#define TODO_verify_ssa TODO_verify_il
128848 +#define TODO_verify_flow TODO_verify_il
128849 +#define TODO_verify_stmts TODO_verify_il
128850 +#define TODO_verify_rtl_sharing TODO_verify_il
128851 +
128852 +//#define TREE_INT_CST_HIGH(NODE) ({ TREE_INT_CST_EXT_NUNITS(NODE) > 1 ? (unsigned HOST_WIDE_INT)TREE_INT_CST_ELT(NODE, 1) : 0; })
128853 +
128854 +#define INSN_DELETED_P(insn) (insn)->deleted()
128855 +
128856 +// symtab/cgraph related
128857 +#define debug_cgraph_node(node) (node)->debug()
128858 +#define cgraph_get_node(decl) cgraph_node::get(decl)
128859 +#define cgraph_get_create_node(decl) cgraph_node::get_create(decl)
128860 +#define cgraph_n_nodes symtab->cgraph_count
128861 +#define cgraph_max_uid symtab->cgraph_max_uid
128862 +#define varpool_get_node(decl) varpool_node::get(decl)
128863 +
128864 +#define cgraph_create_edge(caller, callee, call_stmt, count, freq, nest) \
128865 + (caller)->create_edge((callee), (call_stmt), (count), (freq))
128866 +#define cgraph_create_edge_including_clones(caller, callee, old_call_stmt, call_stmt, count, freq, nest, reason) \
128867 + (caller)->create_edge_including_clones((callee), (old_call_stmt), (call_stmt), (count), (freq), (reason))
128868 +
128869 +typedef struct cgraph_node *cgraph_node_ptr;
128870 +typedef struct cgraph_edge *cgraph_edge_p;
128871 +typedef struct varpool_node *varpool_node_ptr;
128872 +
128873 +static inline void change_decl_assembler_name(tree decl, tree name)
128874 +{
128875 + symtab->change_decl_assembler_name(decl, name);
128876 +}
128877 +
128878 +static inline void varpool_finalize_decl(tree decl)
128879 +{
128880 + varpool_node::finalize_decl(decl);
128881 +}
128882 +
128883 +static inline void varpool_add_new_variable(tree decl)
128884 +{
128885 + varpool_node::add(decl);
128886 +}
128887 +
128888 +static inline unsigned int rebuild_cgraph_edges(void)
128889 +{
128890 + return cgraph_edge::rebuild_edges();
128891 +}
128892 +
128893 +static inline cgraph_node_ptr cgraph_function_node(cgraph_node_ptr node, enum availability *availability)
128894 +{
128895 + return node->function_symbol(availability);
128896 +}
128897 +
128898 +static inline cgraph_node_ptr cgraph_function_or_thunk_node(cgraph_node_ptr node, enum availability *availability = NULL)
128899 +{
128900 + return node->ultimate_alias_target(availability);
128901 +}
128902 +
128903 +static inline bool cgraph_only_called_directly_p(cgraph_node_ptr node)
128904 +{
128905 + return node->only_called_directly_p();
128906 +}
128907 +
128908 +static inline enum availability cgraph_function_body_availability(cgraph_node_ptr node)
128909 +{
128910 + return node->get_availability();
128911 +}
128912 +
128913 +static inline cgraph_node_ptr cgraph_alias_target(cgraph_node_ptr node)
128914 +{
128915 + return node->get_alias_target();
128916 +}
128917 +
128918 +static inline struct cgraph_node_hook_list *cgraph_add_function_insertion_hook(cgraph_node_hook hook, void *data)
128919 +{
128920 + return symtab->add_cgraph_insertion_hook(hook, data);
128921 +}
128922 +
128923 +static inline void cgraph_remove_function_insertion_hook(struct cgraph_node_hook_list *entry)
128924 +{
128925 + symtab->remove_cgraph_insertion_hook(entry);
128926 +}
128927 +
128928 +static inline struct cgraph_node_hook_list *cgraph_add_node_removal_hook(cgraph_node_hook hook, void *data)
128929 +{
128930 + return symtab->add_cgraph_removal_hook(hook, data);
128931 +}
128932 +
128933 +static inline void cgraph_remove_node_removal_hook(struct cgraph_node_hook_list *entry)
128934 +{
128935 + symtab->remove_cgraph_removal_hook(entry);
128936 +}
128937 +
128938 +static inline struct cgraph_2node_hook_list *cgraph_add_node_duplication_hook(cgraph_2node_hook hook, void *data)
128939 +{
128940 + return symtab->add_cgraph_duplication_hook(hook, data);
128941 +}
128942 +
128943 +static inline void cgraph_remove_node_duplication_hook(struct cgraph_2node_hook_list *entry)
128944 +{
128945 + symtab->remove_cgraph_duplication_hook(entry);
128946 +}
128947 +
128948 +// gimple related
128949 +static inline gimple gimple_build_assign_with_ops(enum tree_code subcode, tree lhs, tree op1, tree op2 MEM_STAT_DECL)
128950 +{
128951 + return gimple_build_assign(lhs, subcode, op1, op2 PASS_MEM_STAT);
128952 +}
128953 +
128954 +template <>
128955 +template <>
128956 +inline bool is_a_helper<const gassign *>::test(const_gimple gs)
128957 +{
128958 + return gs->code == GIMPLE_ASSIGN;
128959 +}
128960 +
128961 +template <>
128962 +template <>
128963 +inline bool is_a_helper<const greturn *>::test(const_gimple gs)
128964 +{
128965 + return gs->code == GIMPLE_RETURN;
128966 +}
128967 +
128968 +static inline gasm *as_a_gasm(gimple stmt)
128969 +{
128970 + return as_a<gasm *>(stmt);
128971 +}
128972 +
128973 +static inline const gasm *as_a_const_gasm(const_gimple stmt)
128974 +{
128975 + return as_a<const gasm *>(stmt);
128976 +}
128977 +
128978 +static inline gassign *as_a_gassign(gimple stmt)
128979 +{
128980 + return as_a<gassign *>(stmt);
128981 +}
128982 +
128983 +static inline const gassign *as_a_const_gassign(const_gimple stmt)
128984 +{
128985 + return as_a<const gassign *>(stmt);
128986 +}
128987 +
128988 +static inline gcall *as_a_gcall(gimple stmt)
128989 +{
128990 + return as_a<gcall *>(stmt);
128991 +}
128992 +
128993 +static inline const gcall *as_a_const_gcall(const_gimple stmt)
128994 +{
128995 + return as_a<const gcall *>(stmt);
128996 +}
128997 +
128998 +static inline gphi *as_a_gphi(gimple stmt)
128999 +{
129000 + return as_a<gphi *>(stmt);
129001 +}
129002 +
129003 +static inline const gphi *as_a_const_gphi(const_gimple stmt)
129004 +{
129005 + return as_a<const gphi *>(stmt);
129006 +}
129007 +
129008 +static inline greturn *as_a_greturn(gimple stmt)
129009 +{
129010 + return as_a<greturn *>(stmt);
129011 +}
129012 +
129013 +static inline const greturn *as_a_const_greturn(const_gimple stmt)
129014 +{
129015 + return as_a<const greturn *>(stmt);
129016 +}
129017 +
129018 +// IPA/LTO related
129019 +#define ipa_ref_list_referring_iterate(L,I,P) (L)->referring.iterate((I), &(P))
129020 +#define ipa_ref_list_reference_iterate(L,I,P) (L)->reference.iterate((I), &(P))
129021 +
129022 +static inline cgraph_node_ptr ipa_ref_referring_node(struct ipa_ref *ref)
129023 +{
129024 + return dyn_cast<cgraph_node_ptr>(ref->referring);
129025 +}
129026 +
129027 +static inline void ipa_remove_stmt_references(symtab_node *referring_node, gimple stmt)
129028 +{
129029 + referring_node->remove_stmt_references(stmt);
129030 +}
129031 +#endif
129032 +
129033 +#endif
129034 diff --git a/tools/gcc/gen-random-seed.sh b/tools/gcc/gen-random-seed.sh
129035 new file mode 100644
129036 index 0000000..7514850
129037 --- /dev/null
129038 +++ b/tools/gcc/gen-random-seed.sh
129039 @@ -0,0 +1,8 @@
129040 +#!/bin/sh
129041 +
129042 +if [ ! -f "$1" ]; then
129043 + SEED=`od -A n -t x8 -N 32 /dev/urandom | tr -d ' \n'`
129044 + echo "const char *randstruct_seed = \"$SEED\";" > "$1"
129045 + HASH=`echo -n "$SEED" | sha256sum | cut -d" " -f1 | tr -d ' \n'`
129046 + echo "#define RANDSTRUCT_HASHED_SEED \"$HASH\"" > "$2"
129047 +fi
129048 diff --git a/tools/gcc/initify_plugin.c b/tools/gcc/initify_plugin.c
129049 new file mode 100644
129050 index 0000000..294ac43
129051 --- /dev/null
129052 +++ b/tools/gcc/initify_plugin.c
129053 @@ -0,0 +1,450 @@
129054 +/*
129055 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
129056 + * Licensed under the GPL v2, or (at your option) v3
129057 + *
129058 + * Homepage:
129059 + * https://github.com/ephox-gcc-plugins/initify
129060 + *
129061 + * Move string constants (__func__ and function string arguments marked by the nocapture attribute)
129062 + * only referenced in __init/__exit functions to __initconst/__exitconst sections.
129063 + *
129064 + * Usage:
129065 + * $ make
129066 + * $ make run
129067 + */
129068 +
129069 +#include "gcc-common.h"
129070 +
129071 +int plugin_is_GPL_compatible;
129072 +
129073 +static bool verbose = false;
129074 +
129075 +static struct plugin_info initify_plugin_info = {
129076 + .version = "20150524a",
129077 + .help = "initify_plugin\n",
129078 +};
129079 +
129080 +static tree handle_nocapture_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs)
129081 +{
129082 + tree orig_attr, arg;
129083 +
129084 + *no_add_attrs = true;
129085 + switch (TREE_CODE(*node)) {
129086 + case FUNCTION_DECL:
129087 + case FUNCTION_TYPE:
129088 + case METHOD_TYPE:
129089 + break;
129090 +
129091 + case TYPE_DECL: {
129092 + const_tree fntype = TREE_TYPE(*node);
129093 +
129094 + if (TREE_CODE(fntype) == POINTER_TYPE)
129095 + fntype = TREE_TYPE(fntype);
129096 + if (TREE_CODE(fntype) == FUNCTION_TYPE || TREE_CODE(fntype) == METHOD_TYPE)
129097 + break;
129098 + // FALLTHROUGH
129099 + }
129100 +
129101 + default:
129102 + error("%s: %qE attribute only applies to functions", __func__, name);
129103 + debug_tree(*node);
129104 + return NULL_TREE;
129105 + }
129106 +
129107 + for (arg = args; arg; arg = TREE_CHAIN(arg)) {
129108 + tree position = TREE_VALUE(arg);
129109 +
129110 + if (TREE_CODE(position) != INTEGER_CST) {
129111 + error("%s: parameter isn't an integer", __func__);
129112 + debug_tree(arg);
129113 + return NULL_TREE;
129114 + }
129115 + }
129116 +
129117 + orig_attr = lookup_attribute("nocapture", DECL_ATTRIBUTES(*node));
129118 + if (orig_attr)
129119 + chainon(TREE_VALUE(orig_attr), args);
129120 + else
129121 + *no_add_attrs = false;
129122 +
129123 + return NULL_TREE;
129124 +}
129125 +
129126 +static struct attribute_spec nocapture_attr = {
129127 + .name = "nocapture",
129128 + .min_length = 1,
129129 + .max_length = -1,
129130 + .decl_required = true,
129131 + .type_required = false,
129132 + .function_type_required = false,
129133 + .handler = handle_nocapture_attribute,
129134 +#if BUILDING_GCC_VERSION >= 4007
129135 + .affects_type_identity = false
129136 +#endif
129137 +};
129138 +
129139 +static void register_attributes(void __unused *event_data, void __unused *data)
129140 +{
129141 + register_attribute(&nocapture_attr);
129142 +}
129143 +
129144 +static const char *get_init_exit_section(const_tree decl)
129145 +{
129146 + const_tree section;
129147 + tree attr_value;
129148 +
129149 + section = lookup_attribute("section", DECL_ATTRIBUTES(decl));
129150 + if (!section)
129151 + return NULL;
129152 +
129153 + gcc_assert(TREE_VALUE(section));
129154 + for (attr_value = TREE_VALUE(section); attr_value; attr_value = TREE_CHAIN(attr_value)) {
129155 + const char *str = TREE_STRING_POINTER(TREE_VALUE(attr_value));
129156 +
129157 + if (!strncmp(str, ".init.", 6))
129158 + return str;
129159 +
129160 + if (!strncmp(str, ".exit.", 6))
129161 + return str;
129162 + }
129163 +
129164 + return NULL;
129165 +}
129166 +
129167 +static tree get_string_cst(tree var)
129168 +{
129169 + if (var == NULL_TREE)
129170 + return NULL_TREE;
129171 +
129172 + if (TREE_CODE(var) == STRING_CST)
129173 + return var;
129174 +
129175 + switch (TREE_CODE_CLASS(TREE_CODE(var))) {
129176 + case tcc_expression:
129177 + case tcc_reference: {
129178 + int i;
129179 +
129180 + for (i = 0; i < TREE_OPERAND_LENGTH(var); i++) {
129181 + tree ret = get_string_cst(TREE_OPERAND(var, i));
129182 + if (ret != NULL_TREE)
129183 + return ret;
129184 + }
129185 + break;
129186 + }
129187 +
129188 + default:
129189 + break;
129190 + }
129191 +
129192 + return NULL_TREE;
129193 +}
129194 +
129195 +static bool set_init_exit_section(tree decl, bool initexit)
129196 +{
129197 + const char *str;
129198 +
129199 + gcc_assert(DECL_P(decl));
129200 +
129201 + str = get_init_exit_section(decl);
129202 + if (str)
129203 + return false;
129204 +
129205 + if (initexit)
129206 + set_decl_section_name(decl, ".init.rodata.str");
129207 + else
129208 + set_decl_section_name(decl, ".exit.rodata.str");
129209 + return true;
129210 +}
129211 +
129212 +static void search_local_strs(bool initexit)
129213 +{
129214 + unsigned int i;
129215 + tree var;
129216 +
129217 + FOR_EACH_LOCAL_DECL(cfun, i, var) {
129218 + tree str, init_val = DECL_INITIAL(var);
129219 +
129220 + if (init_val == NULL_TREE)
129221 + continue;
129222 + if (strcmp(DECL_NAME_POINTER(var), "__func__"))
129223 + continue;
129224 +
129225 + str = get_string_cst(init_val);
129226 + gcc_assert(str);
129227 +
129228 + if (set_init_exit_section(var, initexit) && verbose)
129229 + inform(DECL_SOURCE_LOCATION(var), "initified local var: %s: %s", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str));
129230 + }
129231 +}
129232 +
129233 +static tree create_tmp_assign(gcall *stmt, unsigned int num)
129234 +{
129235 + tree str, type, decl, arg = gimple_call_arg(stmt, num);
129236 +
129237 + str = get_string_cst(arg);
129238 + decl = build_decl(DECL_SOURCE_LOCATION(current_function_decl), VAR_DECL, create_tmp_var_name("cicus"), TREE_TYPE(str));
129239 +
129240 + type = TREE_TYPE(TREE_TYPE(decl));
129241 + type = build_qualified_type(type, TYPE_QUALS(type) | TYPE_QUAL_CONST);
129242 + TYPE_READONLY(type) = 1;
129243 + TREE_PUBLIC(type) = 0;
129244 +
129245 + DECL_INITIAL(decl) = str;
129246 + DECL_CONTEXT(decl) = current_function_decl;
129247 + DECL_ARTIFICIAL(decl) = 1;
129248 +
129249 + TREE_STATIC(decl) = 1;
129250 + TREE_READONLY(decl) = 1;
129251 + TREE_ADDRESSABLE(decl) = 1;
129252 + TREE_USED(decl) = 1;
129253 +
129254 + add_referenced_var(decl);
129255 + add_local_decl(cfun, decl);
129256 +
129257 + varpool_add_new_variable(decl);
129258 + varpool_mark_needed_node(varpool_node(decl));
129259 +
129260 + DECL_CHAIN(decl) = BLOCK_VARS(DECL_INITIAL(current_function_decl));
129261 + BLOCK_VARS(DECL_INITIAL (current_function_decl)) = decl;
129262 +
129263 + decl = build_fold_addr_expr_loc(DECL_SOURCE_LOCATION(current_function_decl), decl);
129264 + gimple_call_set_arg(stmt, num, decl);
129265 + update_stmt(stmt);
129266 +
129267 + return TREE_OPERAND(decl, 0);
129268 +}
129269 +
129270 +static bool is_syscall(const_tree fn)
129271 +{
129272 + if (!strncmp(DECL_NAME_POINTER(fn), "sys_", 4))
129273 + return true;
129274 +
129275 + if (!strncmp(DECL_NAME_POINTER(fn), "sys32_", 6))
129276 + return true;
129277 +
129278 + if (!strncmp(DECL_NAME_POINTER(fn), "compat_sys_", 11))
129279 + return true;
129280 +
129281 + return false;
129282 +}
129283 +
129284 +static bool is_vararg(const_tree fn)
129285 +{
129286 + tree arg_list;
129287 +
129288 + arg_list = TYPE_ARG_TYPES(TREE_TYPE(fn));
129289 + if (arg_list == NULL_TREE)
129290 + return false;
129291 +
129292 + return tree_last(arg_list) != void_list_node;
129293 +}
129294 +
129295 +// __printf(1, 0), 0: turn off the varargs checking
129296 +static bool check_varargs(const_tree attr)
129297 +{
129298 + const_tree attr_val;
129299 +
129300 + for (attr_val = TREE_VALUE(attr); attr_val; attr_val = TREE_CHAIN(attr_val)) {
129301 + if (TREE_VALUE(attr_val) == integer_zero_node)
129302 + return false;
129303 + }
129304 + return true;
129305 +}
129306 +
129307 +static bool is_nocapture_param(const_gimple stmt, unsigned int num)
129308 +{
129309 + unsigned int attr_arg_val = 0;
129310 + tree attr_val;
129311 + const_tree attr;
129312 + const_tree fndecl = gimple_call_fndecl(stmt);
129313 +
129314 + gcc_assert(DECL_ABSTRACT_ORIGIN(fndecl) == NULL_TREE);
129315 +
129316 + if (is_syscall(fndecl))
129317 + return true;
129318 +
129319 + attr = lookup_attribute("nocapture", DECL_ATTRIBUTES(fndecl));
129320 + for (attr_val = TREE_VALUE(attr); attr_val; attr_val = TREE_CHAIN(attr_val)) {
129321 + attr_arg_val = (unsigned int)tree_to_uhwi(TREE_VALUE(attr_val));
129322 +
129323 + if (attr_arg_val == num + 1)
129324 + return true;
129325 + }
129326 +
129327 + if (!is_vararg(fndecl))
129328 + return false;
129329 + if (!check_varargs(attr))
129330 + return false;
129331 + return attr_arg_val < num + 1;
129332 +}
129333 +
129334 +static void search_str_param(gcall *stmt, bool initexit)
129335 +{
129336 + unsigned int num;
129337 +
129338 + for (num = 0; num < gimple_call_num_args(stmt); num++) {
129339 + tree var, str, arg = gimple_call_arg(stmt, num);
129340 +
129341 + str = get_string_cst(arg);
129342 + if (str == NULL_TREE)
129343 + continue;
129344 +
129345 + if (!is_nocapture_param(stmt, num))
129346 + continue;
129347 +
129348 + var = create_tmp_assign(stmt, num);
129349 + if (set_init_exit_section(var, initexit) && verbose)
129350 + inform(gimple_location(stmt), "initified function arg: %s: [%s]", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str));
129351 + }
129352 +}
129353 +
129354 +static bool has_nocapture_param(const gcall *stmt)
129355 +{
129356 + const_tree attr, fndecl = gimple_call_fndecl(stmt);
129357 +
129358 + if (fndecl == NULL_TREE)
129359 + return false;
129360 +
129361 + if (is_syscall(fndecl))
129362 + return true;
129363 +
129364 + attr = lookup_attribute("nocapture", DECL_ATTRIBUTES(fndecl));
129365 + return attr != NULL_TREE;
129366 +}
129367 +
129368 +static void search_const_strs(bool initexit)
129369 +{
129370 + basic_block bb;
129371 +
129372 + FOR_ALL_BB_FN(bb, cfun) {
129373 + gimple_stmt_iterator gsi;
129374 +
129375 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
129376 + gcall *call_stmt;
129377 + gimple stmt = gsi_stmt(gsi);
129378 +
129379 + if (!is_gimple_call(stmt))
129380 + continue;
129381 +
129382 + call_stmt = as_a_gcall(stmt);
129383 + if (has_nocapture_param(call_stmt))
129384 + search_str_param(call_stmt, initexit);
129385 + }
129386 + }
129387 +}
129388 +
129389 +static unsigned int handle_function(void)
129390 +{
129391 + bool initexit;
129392 + const char *section = get_init_exit_section(current_function_decl);
129393 +
129394 + if (!section)
129395 + return 0;
129396 +
129397 + initexit = !strncmp(section, ".init.", 6);
129398 + search_local_strs(initexit);
129399 + search_const_strs(initexit);
129400 +
129401 + return 0;
129402 +}
129403 +
129404 +#if BUILDING_GCC_VERSION >= 4009
129405 +namespace {
129406 +static const struct pass_data initify_plugin_pass_data = {
129407 +#else
129408 +static struct gimple_opt_pass initify_plugin_pass = {
129409 + .pass = {
129410 +#endif
129411 + .type = GIMPLE_PASS,
129412 + .name = "initify_plugin",
129413 +#if BUILDING_GCC_VERSION >= 4008
129414 + .optinfo_flags = OPTGROUP_NONE,
129415 +#endif
129416 +#if BUILDING_GCC_VERSION >= 5000
129417 +#elif BUILDING_GCC_VERSION >= 4009
129418 + .has_gate = false,
129419 + .has_execute = true,
129420 +#else
129421 + .gate = NULL,
129422 + .execute = handle_function,
129423 + .sub = NULL,
129424 + .next = NULL,
129425 + .static_pass_number = 0,
129426 +#endif
129427 + .tv_id = TV_NONE,
129428 + .properties_required = 0,
129429 + .properties_provided = 0,
129430 + .properties_destroyed = 0,
129431 + .todo_flags_start = 0,
129432 + .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
129433 +#if BUILDING_GCC_VERSION < 4009
129434 + }
129435 +#endif
129436 +};
129437 +
129438 +#if BUILDING_GCC_VERSION >= 4009
129439 +class initify_plugin_pass : public gimple_opt_pass {
129440 +public:
129441 + initify_plugin_pass() : gimple_opt_pass(initify_plugin_pass_data, g) {}
129442 +#if BUILDING_GCC_VERSION >= 5000
129443 + virtual unsigned int execute(function *) { return handle_function(); }
129444 +#else
129445 + unsigned int execute() { return handle_function(); }
129446 +#endif
129447 +};
129448 +}
129449 +
129450 +static struct opt_pass *make_initify_plugin_pass(void)
129451 +{
129452 + return new initify_plugin_pass();
129453 +}
129454 +#else
129455 +static struct opt_pass *make_initify_plugin_pass(void)
129456 +{
129457 + return &initify_plugin_pass.pass;
129458 +}
129459 +#endif
129460 +
129461 +static unsigned int (*old_section_type_flags)(tree decl, const char *name, int reloc);
129462 +
129463 +static unsigned int initify_section_type_flags(tree decl, const char *name, int reloc)
129464 +{
129465 + if (!strcmp(name, ".init.rodata.str") || !strcmp(name, ".exit.rodata.str")) {
129466 + gcc_assert(TREE_CODE(decl) == VAR_DECL);
129467 + gcc_assert(DECL_INITIAL(decl));
129468 + gcc_assert(TREE_CODE(DECL_INITIAL(decl)) == STRING_CST);
129469 +
129470 + return 1 | SECTION_MERGE | SECTION_STRINGS;
129471 + }
129472 +
129473 + return old_section_type_flags(decl, name, reloc);
129474 +}
129475 +
129476 +static void initify_start_unit(void __unused *gcc_data, void __unused *user_data)
129477 +{
129478 + old_section_type_flags = targetm.section_type_flags;
129479 + targetm.section_type_flags = initify_section_type_flags;
129480 +}
129481 +
129482 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
129483 +{
129484 + const char * const plugin_name = plugin_info->base_name;
129485 + struct register_pass_info initify_plugin_pass_info;
129486 +
129487 + initify_plugin_pass_info.pass = make_initify_plugin_pass();
129488 + initify_plugin_pass_info.reference_pass_name = "nrv";
129489 + initify_plugin_pass_info.ref_pass_instance_number = 1;
129490 + initify_plugin_pass_info.pos_op = PASS_POS_INSERT_AFTER;
129491 +
129492 + if (!plugin_default_version_check(version, &gcc_version)) {
129493 + error(G_("incompatible gcc/plugin versions"));
129494 + return 1;
129495 + }
129496 +
129497 + register_callback(plugin_name, PLUGIN_INFO, NULL, &initify_plugin_info);
129498 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &initify_plugin_pass_info);
129499 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
129500 + register_callback(plugin_name, PLUGIN_START_UNIT, initify_start_unit, NULL);
129501 +
129502 + return 0;
129503 +}
129504 diff --git a/tools/gcc/kallocstat_plugin.c b/tools/gcc/kallocstat_plugin.c
129505 new file mode 100644
129506 index 0000000..457d54e
129507 --- /dev/null
129508 +++ b/tools/gcc/kallocstat_plugin.c
129509 @@ -0,0 +1,188 @@
129510 +/*
129511 + * Copyright 2011-2015 by the PaX Team <pageexec@freemail.hu>
129512 + * Licensed under the GPL v2
129513 + *
129514 + * Note: the choice of the license means that the compilation process is
129515 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
129516 + * but for the kernel it doesn't matter since it doesn't link against
129517 + * any of the gcc libraries
129518 + *
129519 + * gcc plugin to find the distribution of k*alloc sizes
129520 + *
129521 + * TODO:
129522 + *
129523 + * BUGS:
129524 + * - none known
129525 + */
129526 +
129527 +#include "gcc-common.h"
129528 +
129529 +int plugin_is_GPL_compatible;
129530 +
129531 +static struct plugin_info kallocstat_plugin_info = {
129532 + .version = "201401260140",
129533 + .help = NULL
129534 +};
129535 +
129536 +static const char * const kalloc_functions[] = {
129537 + "__kmalloc",
129538 + "kmalloc",
129539 + "kmalloc_large",
129540 + "kmalloc_node",
129541 + "kmalloc_order",
129542 + "kmalloc_order_trace",
129543 + "kmalloc_slab",
129544 + "kzalloc",
129545 + "kzalloc_node",
129546 +};
129547 +
129548 +static bool is_kalloc(const char *fnname)
129549 +{
129550 + size_t i;
129551 +
129552 + for (i = 0; i < ARRAY_SIZE(kalloc_functions); i++)
129553 + if (!strcmp(fnname, kalloc_functions[i]))
129554 + return true;
129555 + return false;
129556 +}
129557 +
129558 +static unsigned int execute_kallocstat(void)
129559 +{
129560 + basic_block bb;
129561 +
129562 + // 1. loop through BBs and GIMPLE statements
129563 + FOR_EACH_BB_FN(bb, cfun) {
129564 + gimple_stmt_iterator gsi;
129565 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
129566 + // gimple match:
129567 + tree fndecl, size;
129568 + gimple stmt;
129569 + const char *fnname;
129570 +
129571 + // is it a call
129572 + stmt = gsi_stmt(gsi);
129573 + if (!is_gimple_call(stmt))
129574 + continue;
129575 + fndecl = gimple_call_fndecl(stmt);
129576 + if (fndecl == NULL_TREE)
129577 + continue;
129578 + if (TREE_CODE(fndecl) != FUNCTION_DECL)
129579 + continue;
129580 +
129581 + // is it a call to k*alloc
129582 + fnname = DECL_NAME_POINTER(fndecl);
129583 + if (!is_kalloc(fnname))
129584 + continue;
129585 +
129586 + // is the size arg const or the result of a simple const assignment
129587 + size = gimple_call_arg(stmt, 0);
129588 + while (true) {
129589 + expanded_location xloc;
129590 + size_t size_val;
129591 +
129592 + if (TREE_CONSTANT(size)) {
129593 + xloc = expand_location(gimple_location(stmt));
129594 + if (!xloc.file)
129595 + xloc = expand_location(DECL_SOURCE_LOCATION(current_function_decl));
129596 + size_val = TREE_INT_CST_LOW(size);
129597 + fprintf(stderr, "kallocsize: %8zu %8zx %s %s:%u\n", size_val, size_val, fnname, xloc.file, xloc.line);
129598 + break;
129599 + }
129600 +
129601 + if (TREE_CODE(size) != SSA_NAME)
129602 + break;
129603 + stmt = SSA_NAME_DEF_STMT(size);
129604 +//debug_gimple_stmt(stmt);
129605 +//debug_tree(size);
129606 + if (!stmt || !is_gimple_assign(stmt))
129607 + break;
129608 + if (gimple_num_ops(stmt) != 2)
129609 + break;
129610 + size = gimple_assign_rhs1(stmt);
129611 + }
129612 +//print_gimple_stmt(stderr, call_stmt, 0, TDF_LINENO);
129613 +//debug_tree(gimple_call_fn(call_stmt));
129614 +//print_node(stderr, "pax", fndecl, 4);
129615 + }
129616 + }
129617 +
129618 + return 0;
129619 +}
129620 +
129621 +#if BUILDING_GCC_VERSION >= 4009
129622 +namespace {
129623 +static const struct pass_data kallocstat_pass_data = {
129624 +#else
129625 +static struct gimple_opt_pass kallocstat_pass = {
129626 + .pass = {
129627 +#endif
129628 + .type = GIMPLE_PASS,
129629 + .name = "kallocstat",
129630 +#if BUILDING_GCC_VERSION >= 4008
129631 + .optinfo_flags = OPTGROUP_NONE,
129632 +#endif
129633 +#if BUILDING_GCC_VERSION >= 5000
129634 +#elif BUILDING_GCC_VERSION == 4009
129635 + .has_gate = false,
129636 + .has_execute = true,
129637 +#else
129638 + .gate = NULL,
129639 + .execute = execute_kallocstat,
129640 + .sub = NULL,
129641 + .next = NULL,
129642 + .static_pass_number = 0,
129643 +#endif
129644 + .tv_id = TV_NONE,
129645 + .properties_required = 0,
129646 + .properties_provided = 0,
129647 + .properties_destroyed = 0,
129648 + .todo_flags_start = 0,
129649 + .todo_flags_finish = 0
129650 +#if BUILDING_GCC_VERSION < 4009
129651 + }
129652 +#endif
129653 +};
129654 +
129655 +#if BUILDING_GCC_VERSION >= 4009
129656 +class kallocstat_pass : public gimple_opt_pass {
129657 +public:
129658 + kallocstat_pass() : gimple_opt_pass(kallocstat_pass_data, g) {}
129659 +#if BUILDING_GCC_VERSION >= 5000
129660 + virtual unsigned int execute(function *) { return execute_kallocstat(); }
129661 +#else
129662 + unsigned int execute() { return execute_kallocstat(); }
129663 +#endif
129664 +};
129665 +}
129666 +
129667 +static opt_pass *make_kallocstat_pass(void)
129668 +{
129669 + return new kallocstat_pass();
129670 +}
129671 +#else
129672 +static struct opt_pass *make_kallocstat_pass(void)
129673 +{
129674 + return &kallocstat_pass.pass;
129675 +}
129676 +#endif
129677 +
129678 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
129679 +{
129680 + const char * const plugin_name = plugin_info->base_name;
129681 + struct register_pass_info kallocstat_pass_info;
129682 +
129683 + kallocstat_pass_info.pass = make_kallocstat_pass();
129684 + kallocstat_pass_info.reference_pass_name = "ssa";
129685 + kallocstat_pass_info.ref_pass_instance_number = 1;
129686 + kallocstat_pass_info.pos_op = PASS_POS_INSERT_AFTER;
129687 +
129688 + if (!plugin_default_version_check(version, &gcc_version)) {
129689 + error(G_("incompatible gcc/plugin versions"));
129690 + return 1;
129691 + }
129692 +
129693 + register_callback(plugin_name, PLUGIN_INFO, NULL, &kallocstat_plugin_info);
129694 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kallocstat_pass_info);
129695 +
129696 + return 0;
129697 +}
129698 diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c
129699 new file mode 100644
129700 index 0000000..4838c8a
129701 --- /dev/null
129702 +++ b/tools/gcc/kernexec_plugin.c
129703 @@ -0,0 +1,551 @@
129704 +/*
129705 + * Copyright 2011-2015 by the PaX Team <pageexec@freemail.hu>
129706 + * Licensed under the GPL v2
129707 + *
129708 + * Note: the choice of the license means that the compilation process is
129709 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
129710 + * but for the kernel it doesn't matter since it doesn't link against
129711 + * any of the gcc libraries
129712 + *
129713 + * gcc plugin to make KERNEXEC/amd64 almost as good as it is on i386
129714 + *
129715 + * TODO:
129716 + *
129717 + * BUGS:
129718 + * - none known
129719 + */
129720 +
129721 +#include "gcc-common.h"
129722 +
129723 +int plugin_is_GPL_compatible;
129724 +
129725 +static struct plugin_info kernexec_plugin_info = {
129726 + .version = "201401260140",
129727 + .help = "method=[bts|or]\tinstrumentation method\n"
129728 +};
129729 +
129730 +static void (*kernexec_instrument_fptr)(gimple_stmt_iterator *);
129731 +static void (*kernexec_instrument_retaddr)(rtx);
129732 +
129733 +/*
129734 + * add special KERNEXEC instrumentation: reload %r12 after it has been clobbered
129735 + */
129736 +static void kernexec_reload_fptr_mask(gimple_stmt_iterator *gsi)
129737 +{
129738 + gimple stmt;
129739 + gasm *asm_movabs_stmt;
129740 +
129741 + // build asm volatile("movabs $0x8000000000000000, %%r12\n\t" : : : );
129742 + stmt = gimple_build_asm_vec("movabs $0x8000000000000000, %%r12\n\t", NULL, NULL, NULL, NULL);
129743 + asm_movabs_stmt = as_a_gasm(stmt);
129744 + gimple_asm_set_volatile(asm_movabs_stmt, true);
129745 + gsi_insert_after(gsi, asm_movabs_stmt, GSI_CONTINUE_LINKING);
129746 + update_stmt(asm_movabs_stmt);
129747 +}
129748 +
129749 +/*
129750 + * find all asm() stmts that clobber r12 and add a reload of r12
129751 + */
129752 +static unsigned int execute_kernexec_reload(void)
129753 +{
129754 + basic_block bb;
129755 +
129756 + // 1. loop through BBs and GIMPLE statements
129757 + FOR_EACH_BB_FN(bb, cfun) {
129758 + gimple_stmt_iterator gsi;
129759 +
129760 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
129761 + // gimple match: __asm__ ("" : : : "r12");
129762 + gimple stmt;
129763 + gasm *asm_stmt;
129764 + size_t nclobbers;
129765 +
129766 + // is it an asm ...
129767 + stmt = gsi_stmt(gsi);
129768 + if (gimple_code(stmt) != GIMPLE_ASM)
129769 + continue;
129770 +
129771 + asm_stmt = as_a_gasm(stmt);
129772 +
129773 + // ... clobbering r12
129774 + nclobbers = gimple_asm_nclobbers(asm_stmt);
129775 + while (nclobbers--) {
129776 + tree op = gimple_asm_clobber_op(asm_stmt, nclobbers);
129777 + if (strcmp(TREE_STRING_POINTER(TREE_VALUE(op)), "r12"))
129778 + continue;
129779 + kernexec_reload_fptr_mask(&gsi);
129780 +//print_gimple_stmt(stderr, asm_stmt, 0, TDF_LINENO);
129781 + break;
129782 + }
129783 + }
129784 + }
129785 +
129786 + return 0;
129787 +}
129788 +
129789 +/*
129790 + * add special KERNEXEC instrumentation: force MSB of fptr to 1, which will produce
129791 + * a non-canonical address from a userland ptr and will just trigger a GPF on dereference
129792 + */
129793 +static void kernexec_instrument_fptr_bts(gimple_stmt_iterator *gsi)
129794 +{
129795 + gimple assign_intptr, assign_new_fptr;
129796 + gcall *call_stmt;
129797 + tree intptr, orptr, old_fptr, new_fptr, kernexec_mask;
129798 +
129799 + call_stmt = as_a_gcall(gsi_stmt(*gsi));
129800 + old_fptr = gimple_call_fn(call_stmt);
129801 +
129802 + // create temporary unsigned long variable used for bitops and cast fptr to it
129803 + intptr = create_tmp_var(long_unsigned_type_node, "kernexec_bts");
129804 + add_referenced_var(intptr);
129805 + intptr = make_ssa_name(intptr, NULL);
129806 + assign_intptr = gimple_build_assign(intptr, fold_convert(long_unsigned_type_node, old_fptr));
129807 + SSA_NAME_DEF_STMT(intptr) = assign_intptr;
129808 + gsi_insert_before(gsi, assign_intptr, GSI_SAME_STMT);
129809 + update_stmt(assign_intptr);
129810 +
129811 + // apply logical or to temporary unsigned long and bitmask
129812 + kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0x8000000000000000LL);
129813 +// kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0xffffffff80000000LL);
129814 + orptr = fold_build2(BIT_IOR_EXPR, long_long_unsigned_type_node, intptr, kernexec_mask);
129815 + intptr = make_ssa_name(SSA_NAME_VAR(intptr), NULL);
129816 + assign_intptr = gimple_build_assign(intptr, orptr);
129817 + SSA_NAME_DEF_STMT(intptr) = assign_intptr;
129818 + gsi_insert_before(gsi, assign_intptr, GSI_SAME_STMT);
129819 + update_stmt(assign_intptr);
129820 +
129821 + // cast temporary unsigned long back to a temporary fptr variable
129822 + new_fptr = create_tmp_var(TREE_TYPE(old_fptr), "kernexec_fptr");
129823 + add_referenced_var(new_fptr);
129824 + new_fptr = make_ssa_name(new_fptr, NULL);
129825 + assign_new_fptr = gimple_build_assign(new_fptr, fold_convert(TREE_TYPE(old_fptr), intptr));
129826 + SSA_NAME_DEF_STMT(new_fptr) = assign_new_fptr;
129827 + gsi_insert_before(gsi, assign_new_fptr, GSI_SAME_STMT);
129828 + update_stmt(assign_new_fptr);
129829 +
129830 + // replace call stmt fn with the new fptr
129831 + gimple_call_set_fn(call_stmt, new_fptr);
129832 + update_stmt(call_stmt);
129833 +}
129834 +
129835 +static void kernexec_instrument_fptr_or(gimple_stmt_iterator *gsi)
129836 +{
129837 + gimple stmt;
129838 + gasm *asm_or_stmt;
129839 + gcall *call_stmt;
129840 + tree old_fptr, new_fptr, input, output;
129841 +#if BUILDING_GCC_VERSION <= 4007
129842 + VEC(tree, gc) *inputs = NULL;
129843 + VEC(tree, gc) *outputs = NULL;
129844 +#else
129845 + vec<tree, va_gc> *inputs = NULL;
129846 + vec<tree, va_gc> *outputs = NULL;
129847 +#endif
129848 +
129849 + call_stmt = as_a_gcall(gsi_stmt(*gsi));
129850 + old_fptr = gimple_call_fn(call_stmt);
129851 +
129852 + // create temporary fptr variable
129853 + new_fptr = create_tmp_var(TREE_TYPE(old_fptr), "kernexec_or");
129854 + add_referenced_var(new_fptr);
129855 + new_fptr = make_ssa_name(new_fptr, NULL);
129856 +
129857 + // build asm volatile("orq %%r12, %0\n\t" : "=r"(new_fptr) : "0"(old_fptr));
129858 + input = build_tree_list(NULL_TREE, build_string(2, "0"));
129859 + input = chainon(NULL_TREE, build_tree_list(input, old_fptr));
129860 + output = build_tree_list(NULL_TREE, build_string(3, "=r"));
129861 + output = chainon(NULL_TREE, build_tree_list(output, new_fptr));
129862 +#if BUILDING_GCC_VERSION <= 4007
129863 + VEC_safe_push(tree, gc, inputs, input);
129864 + VEC_safe_push(tree, gc, outputs, output);
129865 +#else
129866 + vec_safe_push(inputs, input);
129867 + vec_safe_push(outputs, output);
129868 +#endif
129869 + stmt = gimple_build_asm_vec("orq %%r12, %0\n\t", inputs, outputs, NULL, NULL);
129870 + asm_or_stmt = as_a_gasm(stmt);
129871 + SSA_NAME_DEF_STMT(new_fptr) = asm_or_stmt;
129872 + gimple_asm_set_volatile(asm_or_stmt, true);
129873 + gsi_insert_before(gsi, asm_or_stmt, GSI_SAME_STMT);
129874 + update_stmt(asm_or_stmt);
129875 +
129876 + // replace call stmt fn with the new fptr
129877 + gimple_call_set_fn(call_stmt, new_fptr);
129878 + update_stmt(call_stmt);
129879 +}
129880 +
129881 +/*
129882 + * find all C level function pointer dereferences and forcibly set the highest bit of the pointer
129883 + */
129884 +static unsigned int execute_kernexec_fptr(void)
129885 +{
129886 + basic_block bb;
129887 +
129888 + // 1. loop through BBs and GIMPLE statements
129889 + FOR_EACH_BB_FN(bb, cfun) {
129890 + gimple_stmt_iterator gsi;
129891 +
129892 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
129893 + // gimple match: h_1 = get_fptr (); D.2709_3 = h_1 (x_2(D));
129894 + tree fn;
129895 + gimple stmt;
129896 + gcall *call_stmt;
129897 +
129898 + // is it a call ...
129899 + stmt = gsi_stmt(gsi);
129900 + if (!is_gimple_call(stmt))
129901 + continue;
129902 + call_stmt = as_a_gcall(stmt);
129903 + fn = gimple_call_fn(call_stmt);
129904 + if (TREE_CODE(fn) == ADDR_EXPR)
129905 + continue;
129906 + if (TREE_CODE(fn) != SSA_NAME)
129907 + gcc_unreachable();
129908 +
129909 + // ... through a function pointer
129910 + if (SSA_NAME_VAR(fn) != NULL_TREE) {
129911 + fn = SSA_NAME_VAR(fn);
129912 + if (TREE_CODE(fn) != VAR_DECL && TREE_CODE(fn) != PARM_DECL) {
129913 + debug_tree(fn);
129914 + gcc_unreachable();
129915 + }
129916 + }
129917 + fn = TREE_TYPE(fn);
129918 + if (TREE_CODE(fn) != POINTER_TYPE)
129919 + continue;
129920 + fn = TREE_TYPE(fn);
129921 + if (TREE_CODE(fn) != FUNCTION_TYPE)
129922 + continue;
129923 +
129924 + kernexec_instrument_fptr(&gsi);
129925 +
129926 +//debug_tree(gimple_call_fn(call_stmt));
129927 +//print_gimple_stmt(stderr, call_stmt, 0, TDF_LINENO);
129928 + }
129929 + }
129930 +
129931 + return 0;
129932 +}
129933 +
129934 +// add special KERNEXEC instrumentation: btsq $63,(%rsp) just before retn
129935 +static void kernexec_instrument_retaddr_bts(rtx insn)
129936 +{
129937 + rtx btsq;
129938 + rtvec argvec, constraintvec, labelvec;
129939 + int line;
129940 +
129941 + // create asm volatile("btsq $63,(%%rsp)":::)
129942 + argvec = rtvec_alloc(0);
129943 + constraintvec = rtvec_alloc(0);
129944 + labelvec = rtvec_alloc(0);
129945 + line = expand_location(RTL_LOCATION(insn)).line;
129946 + btsq = gen_rtx_ASM_OPERANDS(VOIDmode, "btsq $63,(%%rsp)", empty_string, 0, argvec, constraintvec, labelvec, line);
129947 + MEM_VOLATILE_P(btsq) = 1;
129948 +// RTX_FRAME_RELATED_P(btsq) = 1; // not for ASM_OPERANDS
129949 + emit_insn_before(btsq, insn);
129950 +}
129951 +
129952 +// add special KERNEXEC instrumentation: orq %r12,(%rsp) just before retn
129953 +static void kernexec_instrument_retaddr_or(rtx insn)
129954 +{
129955 + rtx orq;
129956 + rtvec argvec, constraintvec, labelvec;
129957 + int line;
129958 +
129959 + // create asm volatile("orq %%r12,(%%rsp)":::)
129960 + argvec = rtvec_alloc(0);
129961 + constraintvec = rtvec_alloc(0);
129962 + labelvec = rtvec_alloc(0);
129963 + line = expand_location(RTL_LOCATION(insn)).line;
129964 + orq = gen_rtx_ASM_OPERANDS(VOIDmode, "orq %%r12,(%%rsp)", empty_string, 0, argvec, constraintvec, labelvec, line);
129965 + MEM_VOLATILE_P(orq) = 1;
129966 +// RTX_FRAME_RELATED_P(orq) = 1; // not for ASM_OPERANDS
129967 + emit_insn_before(orq, insn);
129968 +}
129969 +
129970 +/*
129971 + * find all asm level function returns and forcibly set the highest bit of the return address
129972 + */
129973 +static unsigned int execute_kernexec_retaddr(void)
129974 +{
129975 + rtx_insn *insn;
129976 +
129977 +// if (stack_realign_drap)
129978 +// inform(DECL_SOURCE_LOCATION(current_function_decl), "drap detected in %s\n", IDENTIFIER_POINTER(DECL_NAME(current_function_decl)));
129979 +
129980 + // 1. find function returns
129981 + for (insn = get_insns(); insn; insn = NEXT_INSN(insn)) {
129982 + // rtl match: (jump_insn 41 40 42 2 (return) fptr.c:42 634 {return_internal} (nil))
129983 + // (jump_insn 12 9 11 2 (parallel [ (return) (unspec [ (0) ] UNSPEC_REP) ]) fptr.c:46 635 {return_internal_long} (nil))
129984 + // (jump_insn 97 96 98 6 (simple_return) fptr.c:50 -1 (nil) -> simple_return)
129985 + rtx body;
129986 +
129987 + // is it a retn
129988 + if (!JUMP_P(insn))
129989 + continue;
129990 + body = PATTERN(insn);
129991 + if (GET_CODE(body) == PARALLEL)
129992 + body = XVECEXP(body, 0, 0);
129993 + if (!ANY_RETURN_P(body))
129994 + continue;
129995 + kernexec_instrument_retaddr(insn);
129996 + }
129997 +
129998 +// print_simple_rtl(stderr, get_insns());
129999 +// print_rtl(stderr, get_insns());
130000 +
130001 + return 0;
130002 +}
130003 +
130004 +static bool kernexec_cmodel_check(void)
130005 +{
130006 + tree section;
130007 +
130008 + if (ix86_cmodel != CM_KERNEL)
130009 + return false;
130010 +
130011 + section = lookup_attribute("section", DECL_ATTRIBUTES(current_function_decl));
130012 + if (!section || !TREE_VALUE(section))
130013 + return true;
130014 +
130015 + section = TREE_VALUE(TREE_VALUE(section));
130016 + if (strncmp(TREE_STRING_POINTER(section), ".vsyscall_", 10))
130017 + return true;
130018 +
130019 + return false;
130020 +}
130021 +
130022 +#if BUILDING_GCC_VERSION >= 4009
130023 +namespace {
130024 +static const struct pass_data kernexec_reload_pass_data = {
130025 +#else
130026 +static struct gimple_opt_pass kernexec_reload_pass = {
130027 + .pass = {
130028 +#endif
130029 + .type = GIMPLE_PASS,
130030 + .name = "kernexec_reload",
130031 +#if BUILDING_GCC_VERSION >= 4008
130032 + .optinfo_flags = OPTGROUP_NONE,
130033 +#endif
130034 +#if BUILDING_GCC_VERSION >= 5000
130035 +#elif BUILDING_GCC_VERSION == 4009
130036 + .has_gate = true,
130037 + .has_execute = true,
130038 +#else
130039 + .gate = kernexec_cmodel_check,
130040 + .execute = execute_kernexec_reload,
130041 + .sub = NULL,
130042 + .next = NULL,
130043 + .static_pass_number = 0,
130044 +#endif
130045 + .tv_id = TV_NONE,
130046 + .properties_required = 0,
130047 + .properties_provided = 0,
130048 + .properties_destroyed = 0,
130049 + .todo_flags_start = 0,
130050 + .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa_no_phi
130051 +#if BUILDING_GCC_VERSION < 4009
130052 + }
130053 +#endif
130054 +};
130055 +
130056 +#if BUILDING_GCC_VERSION >= 4009
130057 +static const struct pass_data kernexec_fptr_pass_data = {
130058 +#else
130059 +static struct gimple_opt_pass kernexec_fptr_pass = {
130060 + .pass = {
130061 +#endif
130062 + .type = GIMPLE_PASS,
130063 + .name = "kernexec_fptr",
130064 +#if BUILDING_GCC_VERSION >= 4008
130065 + .optinfo_flags = OPTGROUP_NONE,
130066 +#endif
130067 +#if BUILDING_GCC_VERSION >= 5000
130068 +#elif BUILDING_GCC_VERSION == 4009
130069 + .has_gate = true,
130070 + .has_execute = true,
130071 +#else
130072 + .gate = kernexec_cmodel_check,
130073 + .execute = execute_kernexec_fptr,
130074 + .sub = NULL,
130075 + .next = NULL,
130076 + .static_pass_number = 0,
130077 +#endif
130078 + .tv_id = TV_NONE,
130079 + .properties_required = 0,
130080 + .properties_provided = 0,
130081 + .properties_destroyed = 0,
130082 + .todo_flags_start = 0,
130083 + .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa_no_phi
130084 +#if BUILDING_GCC_VERSION < 4009
130085 + }
130086 +#endif
130087 +};
130088 +
130089 +#if BUILDING_GCC_VERSION >= 4009
130090 +static const struct pass_data kernexec_retaddr_pass_data = {
130091 +#else
130092 +static struct rtl_opt_pass kernexec_retaddr_pass = {
130093 + .pass = {
130094 +#endif
130095 + .type = RTL_PASS,
130096 + .name = "kernexec_retaddr",
130097 +#if BUILDING_GCC_VERSION >= 4008
130098 + .optinfo_flags = OPTGROUP_NONE,
130099 +#endif
130100 +#if BUILDING_GCC_VERSION >= 5000
130101 +#elif BUILDING_GCC_VERSION == 4009
130102 + .has_gate = true,
130103 + .has_execute = true,
130104 +#else
130105 + .gate = kernexec_cmodel_check,
130106 + .execute = execute_kernexec_retaddr,
130107 + .sub = NULL,
130108 + .next = NULL,
130109 + .static_pass_number = 0,
130110 +#endif
130111 + .tv_id = TV_NONE,
130112 + .properties_required = 0,
130113 + .properties_provided = 0,
130114 + .properties_destroyed = 0,
130115 + .todo_flags_start = 0,
130116 + .todo_flags_finish = TODO_dump_func | TODO_ggc_collect
130117 +#if BUILDING_GCC_VERSION < 4009
130118 + }
130119 +#endif
130120 +};
130121 +
130122 +#if BUILDING_GCC_VERSION >= 4009
130123 +class kernexec_reload_pass : public gimple_opt_pass {
130124 +public:
130125 + kernexec_reload_pass() : gimple_opt_pass(kernexec_reload_pass_data, g) {}
130126 +#if BUILDING_GCC_VERSION >= 5000
130127 + virtual bool gate(function *) { return kernexec_cmodel_check(); }
130128 + virtual unsigned int execute(function *) { return execute_kernexec_reload(); }
130129 +#else
130130 + bool gate() { return kernexec_cmodel_check(); }
130131 + unsigned int execute() { return execute_kernexec_reload(); }
130132 +#endif
130133 +};
130134 +
130135 +class kernexec_fptr_pass : public gimple_opt_pass {
130136 +public:
130137 + kernexec_fptr_pass() : gimple_opt_pass(kernexec_fptr_pass_data, g) {}
130138 +#if BUILDING_GCC_VERSION >= 5000
130139 + virtual bool gate(function *) { return kernexec_cmodel_check(); }
130140 + virtual unsigned int execute(function *) { return execute_kernexec_fptr(); }
130141 +#else
130142 + bool gate() { return kernexec_cmodel_check(); }
130143 + unsigned int execute() { return execute_kernexec_fptr(); }
130144 +#endif
130145 +};
130146 +
130147 +class kernexec_retaddr_pass : public rtl_opt_pass {
130148 +public:
130149 + kernexec_retaddr_pass() : rtl_opt_pass(kernexec_retaddr_pass_data, g) {}
130150 +#if BUILDING_GCC_VERSION >= 5000
130151 + virtual bool gate(function *) { return kernexec_cmodel_check(); }
130152 + virtual unsigned int execute(function *) { return execute_kernexec_retaddr(); }
130153 +#else
130154 + bool gate() { return kernexec_cmodel_check(); }
130155 + unsigned int execute() { return execute_kernexec_retaddr(); }
130156 +#endif
130157 +};
130158 +}
130159 +
130160 +static opt_pass *make_kernexec_reload_pass(void)
130161 +{
130162 + return new kernexec_reload_pass();
130163 +}
130164 +
130165 +static opt_pass *make_kernexec_fptr_pass(void)
130166 +{
130167 + return new kernexec_fptr_pass();
130168 +}
130169 +
130170 +static opt_pass *make_kernexec_retaddr_pass(void)
130171 +{
130172 + return new kernexec_retaddr_pass();
130173 +}
130174 +#else
130175 +static struct opt_pass *make_kernexec_reload_pass(void)
130176 +{
130177 + return &kernexec_reload_pass.pass;
130178 +}
130179 +
130180 +static struct opt_pass *make_kernexec_fptr_pass(void)
130181 +{
130182 + return &kernexec_fptr_pass.pass;
130183 +}
130184 +
130185 +static struct opt_pass *make_kernexec_retaddr_pass(void)
130186 +{
130187 + return &kernexec_retaddr_pass.pass;
130188 +}
130189 +#endif
130190 +
130191 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
130192 +{
130193 + const char * const plugin_name = plugin_info->base_name;
130194 + const int argc = plugin_info->argc;
130195 + const struct plugin_argument * const argv = plugin_info->argv;
130196 + int i;
130197 + struct register_pass_info kernexec_reload_pass_info;
130198 + struct register_pass_info kernexec_fptr_pass_info;
130199 + struct register_pass_info kernexec_retaddr_pass_info;
130200 +
130201 + kernexec_reload_pass_info.pass = make_kernexec_reload_pass();
130202 + kernexec_reload_pass_info.reference_pass_name = "ssa";
130203 + kernexec_reload_pass_info.ref_pass_instance_number = 1;
130204 + kernexec_reload_pass_info.pos_op = PASS_POS_INSERT_AFTER;
130205 +
130206 + kernexec_fptr_pass_info.pass = make_kernexec_fptr_pass();
130207 + kernexec_fptr_pass_info.reference_pass_name = "ssa";
130208 + kernexec_fptr_pass_info.ref_pass_instance_number = 1;
130209 + kernexec_fptr_pass_info.pos_op = PASS_POS_INSERT_AFTER;
130210 +
130211 + kernexec_retaddr_pass_info.pass = make_kernexec_retaddr_pass();
130212 + kernexec_retaddr_pass_info.reference_pass_name = "pro_and_epilogue";
130213 + kernexec_retaddr_pass_info.ref_pass_instance_number = 1;
130214 + kernexec_retaddr_pass_info.pos_op = PASS_POS_INSERT_AFTER;
130215 +
130216 + if (!plugin_default_version_check(version, &gcc_version)) {
130217 + error(G_("incompatible gcc/plugin versions"));
130218 + return 1;
130219 + }
130220 +
130221 + register_callback(plugin_name, PLUGIN_INFO, NULL, &kernexec_plugin_info);
130222 +
130223 + if (TARGET_64BIT == 0)
130224 + return 0;
130225 +
130226 + for (i = 0; i < argc; ++i) {
130227 + if (!strcmp(argv[i].key, "method")) {
130228 + if (!argv[i].value) {
130229 + error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
130230 + continue;
130231 + }
130232 + if (!strcmp(argv[i].value, "bts")) {
130233 + kernexec_instrument_fptr = kernexec_instrument_fptr_bts;
130234 + kernexec_instrument_retaddr = kernexec_instrument_retaddr_bts;
130235 + } else if (!strcmp(argv[i].value, "or")) {
130236 + kernexec_instrument_fptr = kernexec_instrument_fptr_or;
130237 + kernexec_instrument_retaddr = kernexec_instrument_retaddr_or;
130238 + fix_register("r12", 1, 1);
130239 + } else
130240 + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value);
130241 + continue;
130242 + }
130243 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
130244 + }
130245 + if (!kernexec_instrument_fptr || !kernexec_instrument_retaddr)
130246 + error(G_("no instrumentation method was selected via '-fplugin-arg-%s-method'"), plugin_name);
130247 +
130248 + if (kernexec_instrument_fptr == kernexec_instrument_fptr_or)
130249 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_reload_pass_info);
130250 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_fptr_pass_info);
130251 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_retaddr_pass_info);
130252 +
130253 + return 0;
130254 +}
130255 diff --git a/tools/gcc/latent_entropy_plugin.c b/tools/gcc/latent_entropy_plugin.c
130256 new file mode 100644
130257 index 0000000..f76c1c6
130258 --- /dev/null
130259 +++ b/tools/gcc/latent_entropy_plugin.c
130260 @@ -0,0 +1,470 @@
130261 +/*
130262 + * Copyright 2012-2015 by the PaX Team <pageexec@freemail.hu>
130263 + * Licensed under the GPL v2
130264 + *
130265 + * Note: the choice of the license means that the compilation process is
130266 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
130267 + * but for the kernel it doesn't matter since it doesn't link against
130268 + * any of the gcc libraries
130269 + *
130270 + * gcc plugin to help generate a little bit of entropy from program state,
130271 + * used throughout the uptime of the kernel
130272 + *
130273 + * TODO:
130274 + * - add ipa pass to identify not explicitly marked candidate functions
130275 + * - mix in more program state (function arguments/return values, loop variables, etc)
130276 + * - more instrumentation control via attribute parameters
130277 + *
130278 + * BUGS:
130279 + * - none known
130280 + */
130281 +
130282 +#include "gcc-common.h"
130283 +
130284 +int plugin_is_GPL_compatible;
130285 +
130286 +static GTY(()) tree latent_entropy_decl;
130287 +
130288 +static struct plugin_info latent_entropy_plugin_info = {
130289 + .version = "201504282240",
130290 + .help = NULL
130291 +};
130292 +
130293 +static unsigned HOST_WIDE_INT seed;
130294 +static unsigned HOST_WIDE_INT get_random_const(void)
130295 +{
130296 + unsigned int i;
130297 + unsigned HOST_WIDE_INT ret = 0;
130298 +
130299 + for (i = 0; i < 8 * sizeof ret; i++) {
130300 + ret = (ret << 1) | (seed & 1);
130301 + seed >>= 1;
130302 + if (ret & 1)
130303 + seed ^= 0xD800000000000000ULL;
130304 + }
130305 +
130306 + return ret;
130307 +}
130308 +
130309 +static tree handle_latent_entropy_attribute(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
130310 +{
130311 + tree type;
130312 + unsigned long long mask;
130313 +#if BUILDING_GCC_VERSION <= 4007
130314 + VEC(constructor_elt, gc) *vals;
130315 +#else
130316 + vec<constructor_elt, va_gc> *vals;
130317 +#endif
130318 +
130319 + switch (TREE_CODE(*node)) {
130320 + default:
130321 + *no_add_attrs = true;
130322 + error("%qE attribute only applies to functions and variables", name);
130323 + break;
130324 +
130325 + case VAR_DECL:
130326 + if (DECL_INITIAL(*node)) {
130327 + *no_add_attrs = true;
130328 + error("variable %qD with %qE attribute must not be initialized", *node, name);
130329 + break;
130330 + }
130331 +
130332 + if (!TREE_STATIC(*node)) {
130333 + *no_add_attrs = true;
130334 + error("variable %qD with %qE attribute must not be local", *node, name);
130335 + break;
130336 + }
130337 +
130338 + type = TREE_TYPE(*node);
130339 + switch (TREE_CODE(type)) {
130340 + default:
130341 + *no_add_attrs = true;
130342 + error("variable %qD with %qE attribute must be an integer or a fixed length integer array type or a fixed sized structure with integer fields", *node, name);
130343 + break;
130344 +
130345 + case RECORD_TYPE: {
130346 + tree field;
130347 + unsigned int nelt = 0;
130348 +
130349 + for (field = TYPE_FIELDS(type); field; nelt++, field = TREE_CHAIN(field)) {
130350 + tree fieldtype;
130351 +
130352 + fieldtype = TREE_TYPE(field);
130353 + if (TREE_CODE(fieldtype) != INTEGER_TYPE) {
130354 + *no_add_attrs = true;
130355 + error("structure variable %qD with %qE attribute has a non-integer field %qE", *node, name, field);
130356 + break;
130357 + }
130358 + }
130359 +
130360 + if (field)
130361 + break;
130362 +
130363 +#if BUILDING_GCC_VERSION <= 4007
130364 + vals = VEC_alloc(constructor_elt, gc, nelt);
130365 +#else
130366 + vec_alloc(vals, nelt);
130367 +#endif
130368 +
130369 + for (field = TYPE_FIELDS(type); field; field = TREE_CHAIN(field)) {
130370 + tree fieldtype;
130371 +
130372 + fieldtype = TREE_TYPE(field);
130373 + mask = 1ULL << (TREE_INT_CST_LOW(TYPE_SIZE(fieldtype)) - 1);
130374 + mask = 2 * (mask - 1) + 1;
130375 +
130376 + if (TYPE_UNSIGNED(fieldtype))
130377 + CONSTRUCTOR_APPEND_ELT(vals, field, build_int_cstu(fieldtype, mask & get_random_const()));
130378 + else
130379 + CONSTRUCTOR_APPEND_ELT(vals, field, build_int_cst(fieldtype, mask & get_random_const()));
130380 + }
130381 +
130382 + DECL_INITIAL(*node) = build_constructor(type, vals);
130383 +//debug_tree(DECL_INITIAL(*node));
130384 + break;
130385 + }
130386 +
130387 + case INTEGER_TYPE:
130388 + mask = 1ULL << (TREE_INT_CST_LOW(TYPE_SIZE(type)) - 1);
130389 + mask = 2 * (mask - 1) + 1;
130390 +
130391 + if (TYPE_UNSIGNED(type))
130392 + DECL_INITIAL(*node) = build_int_cstu(type, mask & get_random_const());
130393 + else
130394 + DECL_INITIAL(*node) = build_int_cst(type, mask & get_random_const());
130395 + break;
130396 +
130397 + case ARRAY_TYPE: {
130398 + tree elt_type, array_size, elt_size;
130399 + unsigned int i, nelt;
130400 +
130401 + elt_type = TREE_TYPE(type);
130402 + elt_size = TYPE_SIZE_UNIT(TREE_TYPE(type));
130403 + array_size = TYPE_SIZE_UNIT(type);
130404 +
130405 + if (TREE_CODE(elt_type) != INTEGER_TYPE || !array_size || TREE_CODE(array_size) != INTEGER_CST) {
130406 + *no_add_attrs = true;
130407 + error("array variable %qD with %qE attribute must be a fixed length integer array type", *node, name);
130408 + break;
130409 + }
130410 +
130411 + nelt = TREE_INT_CST_LOW(array_size) / TREE_INT_CST_LOW(elt_size);
130412 +#if BUILDING_GCC_VERSION <= 4007
130413 + vals = VEC_alloc(constructor_elt, gc, nelt);
130414 +#else
130415 + vec_alloc(vals, nelt);
130416 +#endif
130417 +
130418 + mask = 1ULL << (TREE_INT_CST_LOW(TYPE_SIZE(elt_type)) - 1);
130419 + mask = 2 * (mask - 1) + 1;
130420 +
130421 + for (i = 0; i < nelt; i++)
130422 + if (TYPE_UNSIGNED(elt_type))
130423 + CONSTRUCTOR_APPEND_ELT(vals, size_int(i), build_int_cstu(elt_type, mask & get_random_const()));
130424 + else
130425 + CONSTRUCTOR_APPEND_ELT(vals, size_int(i), build_int_cst(elt_type, mask & get_random_const()));
130426 +
130427 + DECL_INITIAL(*node) = build_constructor(type, vals);
130428 +//debug_tree(DECL_INITIAL(*node));
130429 + break;
130430 + }
130431 + }
130432 + break;
130433 +
130434 + case FUNCTION_DECL:
130435 + break;
130436 + }
130437 +
130438 + return NULL_TREE;
130439 +}
130440 +
130441 +static struct attribute_spec latent_entropy_attr = {
130442 + .name = "latent_entropy",
130443 + .min_length = 0,
130444 + .max_length = 0,
130445 + .decl_required = true,
130446 + .type_required = false,
130447 + .function_type_required = false,
130448 + .handler = handle_latent_entropy_attribute,
130449 +#if BUILDING_GCC_VERSION >= 4007
130450 + .affects_type_identity = false
130451 +#endif
130452 +};
130453 +
130454 +static void register_attributes(void *event_data, void *data)
130455 +{
130456 + register_attribute(&latent_entropy_attr);
130457 +}
130458 +
130459 +static bool gate_latent_entropy(void)
130460 +{
130461 + // don't bother with noreturn functions for now
130462 + if (TREE_THIS_VOLATILE(current_function_decl))
130463 + return false;
130464 +
130465 + // gcc-4.5 doesn't discover some trivial noreturn functions
130466 + if (EDGE_COUNT(EXIT_BLOCK_PTR_FOR_FN(cfun)->preds) == 0)
130467 + return false;
130468 +
130469 + return lookup_attribute("latent_entropy", DECL_ATTRIBUTES(current_function_decl)) != NULL_TREE;
130470 +}
130471 +
130472 +static enum tree_code get_op(tree *rhs)
130473 +{
130474 + static enum tree_code op;
130475 + unsigned HOST_WIDE_INT random_const;
130476 +
130477 + random_const = get_random_const();
130478 +
130479 + switch (op) {
130480 + case BIT_XOR_EXPR:
130481 + op = PLUS_EXPR;
130482 + break;
130483 +
130484 + case PLUS_EXPR:
130485 + if (rhs) {
130486 + op = LROTATE_EXPR;
130487 + random_const &= HOST_BITS_PER_WIDE_INT - 1;
130488 + break;
130489 + }
130490 +
130491 + case LROTATE_EXPR:
130492 + default:
130493 + op = BIT_XOR_EXPR;
130494 + break;
130495 + }
130496 + if (rhs)
130497 + *rhs = build_int_cstu(unsigned_intDI_type_node, random_const);
130498 + return op;
130499 +}
130500 +
130501 +static void perturb_local_entropy(basic_block bb, tree local_entropy)
130502 +{
130503 + gimple_stmt_iterator gsi;
130504 + gimple assign;
130505 + tree addxorrol, rhs;
130506 + enum tree_code op;
130507 +
130508 + op = get_op(&rhs);
130509 + addxorrol = fold_build2_loc(UNKNOWN_LOCATION, op, unsigned_intDI_type_node, local_entropy, rhs);
130510 + assign = gimple_build_assign(local_entropy, addxorrol);
130511 + gsi = gsi_after_labels(bb);
130512 + gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
130513 + update_stmt(assign);
130514 +//debug_bb(bb);
130515 +}
130516 +
130517 +static void perturb_latent_entropy(basic_block bb, tree rhs)
130518 +{
130519 + gimple_stmt_iterator gsi;
130520 + gimple assign;
130521 + tree addxorrol, temp;
130522 +
130523 + // 1. create temporary copy of latent_entropy
130524 + temp = create_tmp_var(unsigned_intDI_type_node, "temp_latent_entropy");
130525 + add_referenced_var(temp);
130526 +
130527 + // 2. read...
130528 + temp = make_ssa_name(temp, NULL);
130529 + assign = gimple_build_assign(temp, latent_entropy_decl);
130530 + SSA_NAME_DEF_STMT(temp) = assign;
130531 + add_referenced_var(latent_entropy_decl);
130532 + gsi = gsi_after_labels(bb);
130533 + gsi_insert_after(&gsi, assign, GSI_NEW_STMT);
130534 + update_stmt(assign);
130535 +
130536 + // 3. ...modify...
130537 + addxorrol = fold_build2_loc(UNKNOWN_LOCATION, get_op(NULL), unsigned_intDI_type_node, temp, rhs);
130538 + temp = make_ssa_name(SSA_NAME_VAR(temp), NULL);
130539 + assign = gimple_build_assign(temp, addxorrol);
130540 + SSA_NAME_DEF_STMT(temp) = assign;
130541 + gsi_insert_after(&gsi, assign, GSI_NEW_STMT);
130542 + update_stmt(assign);
130543 +
130544 + // 4. ...write latent_entropy
130545 + assign = gimple_build_assign(latent_entropy_decl, temp);
130546 + gsi_insert_after(&gsi, assign, GSI_NEW_STMT);
130547 + update_stmt(assign);
130548 +}
130549 +
130550 +static unsigned int execute_latent_entropy(void)
130551 +{
130552 + basic_block bb;
130553 + gimple assign;
130554 + gimple_stmt_iterator gsi;
130555 + tree local_entropy;
130556 +
130557 + if (!latent_entropy_decl) {
130558 + varpool_node_ptr node;
130559 +
130560 + FOR_EACH_VARIABLE(node) {
130561 + tree var = NODE_DECL(node);
130562 +
130563 + if (DECL_NAME_LENGTH(var) < sizeof("latent_entropy") - 1)
130564 + continue;
130565 + if (strcmp(IDENTIFIER_POINTER(DECL_NAME(var)), "latent_entropy"))
130566 + continue;
130567 + latent_entropy_decl = var;
130568 +// debug_tree(var);
130569 + break;
130570 + }
130571 + if (!latent_entropy_decl) {
130572 +// debug_tree(current_function_decl);
130573 + return 0;
130574 + }
130575 + }
130576 +
130577 +//fprintf(stderr, "latent_entropy: %s\n", IDENTIFIER_POINTER(DECL_NAME(current_function_decl)));
130578 +
130579 + // 1. create local entropy variable
130580 + local_entropy = create_tmp_var(unsigned_intDI_type_node, "local_entropy");
130581 + add_referenced_var(local_entropy);
130582 + mark_sym_for_renaming(local_entropy);
130583 +
130584 + // 2. initialize local entropy variable
130585 + bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
130586 + if (dom_info_available_p(CDI_DOMINATORS))
130587 + set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
130588 + gsi = gsi_start_bb(bb);
130589 +
130590 + assign = gimple_build_assign(local_entropy, build_int_cstu(unsigned_intDI_type_node, get_random_const()));
130591 +// gimple_set_location(assign, loc);
130592 + gsi_insert_after(&gsi, assign, GSI_NEW_STMT);
130593 + update_stmt(assign);
130594 +//debug_bb(bb);
130595 + gcc_assert(single_succ_p(bb));
130596 + bb = single_succ(bb);
130597 +
130598 + // 3. instrument each BB with an operation on the local entropy variable
130599 + while (bb != EXIT_BLOCK_PTR_FOR_FN(cfun)) {
130600 + perturb_local_entropy(bb, local_entropy);
130601 +//debug_bb(bb);
130602 + bb = bb->next_bb;
130603 + };
130604 +
130605 + // 4. mix local entropy into the global entropy variable
130606 + gcc_assert(single_pred_p(EXIT_BLOCK_PTR_FOR_FN(cfun)));
130607 + perturb_latent_entropy(single_pred(EXIT_BLOCK_PTR_FOR_FN(cfun)), local_entropy);
130608 +//debug_bb(single_pred(EXIT_BLOCK_PTR_FOR_FN(cfun)));
130609 + return 0;
130610 +}
130611 +
130612 +static void latent_entropy_start_unit(void *gcc_data, void *user_data)
130613 +{
130614 + tree latent_entropy_type;
130615 +
130616 + seed = get_random_seed(false);
130617 +
130618 + if (in_lto_p)
130619 + return;
130620 +
130621 + // extern volatile u64 latent_entropy
130622 + gcc_assert(TYPE_PRECISION(long_long_unsigned_type_node) == 64);
130623 + latent_entropy_type = build_qualified_type(long_long_unsigned_type_node, TYPE_QUALS(long_long_unsigned_type_node) | TYPE_QUAL_VOLATILE);
130624 + latent_entropy_decl = build_decl(UNKNOWN_LOCATION, VAR_DECL, get_identifier("latent_entropy"), latent_entropy_type);
130625 +
130626 + TREE_STATIC(latent_entropy_decl) = 1;
130627 + TREE_PUBLIC(latent_entropy_decl) = 1;
130628 + TREE_USED(latent_entropy_decl) = 1;
130629 + DECL_PRESERVE_P(latent_entropy_decl) = 1;
130630 + TREE_THIS_VOLATILE(latent_entropy_decl) = 1;
130631 + DECL_EXTERNAL(latent_entropy_decl) = 1;
130632 + DECL_ARTIFICIAL(latent_entropy_decl) = 1;
130633 + lang_hooks.decls.pushdecl(latent_entropy_decl);
130634 +// DECL_ASSEMBLER_NAME(latent_entropy_decl);
130635 +// varpool_finalize_decl(latent_entropy_decl);
130636 +// varpool_mark_needed_node(latent_entropy_decl);
130637 +}
130638 +
130639 +#if BUILDING_GCC_VERSION >= 4009
130640 +namespace {
130641 +static const struct pass_data latent_entropy_pass_data = {
130642 +#else
130643 +static struct gimple_opt_pass latent_entropy_pass = {
130644 + .pass = {
130645 +#endif
130646 + .type = GIMPLE_PASS,
130647 + .name = "latent_entropy",
130648 +#if BUILDING_GCC_VERSION >= 4008
130649 + .optinfo_flags = OPTGROUP_NONE,
130650 +#endif
130651 +#if BUILDING_GCC_VERSION >= 5000
130652 +#elif BUILDING_GCC_VERSION == 4009
130653 + .has_gate = true,
130654 + .has_execute = true,
130655 +#else
130656 + .gate = gate_latent_entropy,
130657 + .execute = execute_latent_entropy,
130658 + .sub = NULL,
130659 + .next = NULL,
130660 + .static_pass_number = 0,
130661 +#endif
130662 + .tv_id = TV_NONE,
130663 + .properties_required = PROP_gimple_leh | PROP_cfg,
130664 + .properties_provided = 0,
130665 + .properties_destroyed = 0,
130666 + .todo_flags_start = 0, //TODO_verify_ssa | TODO_verify_flow | TODO_verify_stmts,
130667 + .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_update_ssa
130668 +#if BUILDING_GCC_VERSION < 4009
130669 + }
130670 +#endif
130671 +};
130672 +
130673 +#if BUILDING_GCC_VERSION >= 4009
130674 +class latent_entropy_pass : public gimple_opt_pass {
130675 +public:
130676 + latent_entropy_pass() : gimple_opt_pass(latent_entropy_pass_data, g) {}
130677 +#if BUILDING_GCC_VERSION >= 5000
130678 + virtual bool gate(function *) { return gate_latent_entropy(); }
130679 + virtual unsigned int execute(function *) { return execute_latent_entropy(); }
130680 +#else
130681 + bool gate() { return gate_latent_entropy(); }
130682 + unsigned int execute() { return execute_latent_entropy(); }
130683 +#endif
130684 +};
130685 +}
130686 +
130687 +static opt_pass *make_latent_entropy_pass(void)
130688 +{
130689 + return new latent_entropy_pass();
130690 +}
130691 +#else
130692 +static struct opt_pass *make_latent_entropy_pass(void)
130693 +{
130694 + return &latent_entropy_pass.pass;
130695 +}
130696 +#endif
130697 +
130698 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
130699 +{
130700 + const char * const plugin_name = plugin_info->base_name;
130701 + struct register_pass_info latent_entropy_pass_info;
130702 +
130703 + latent_entropy_pass_info.pass = make_latent_entropy_pass();
130704 + latent_entropy_pass_info.reference_pass_name = "optimized";
130705 + latent_entropy_pass_info.ref_pass_instance_number = 1;
130706 + latent_entropy_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
130707 + static const struct ggc_root_tab gt_ggc_r_gt_latent_entropy[] = {
130708 + {
130709 + .base = &latent_entropy_decl,
130710 + .nelt = 1,
130711 + .stride = sizeof(latent_entropy_decl),
130712 + .cb = &gt_ggc_mx_tree_node,
130713 + .pchw = &gt_pch_nx_tree_node
130714 + },
130715 + LAST_GGC_ROOT_TAB
130716 + };
130717 +
130718 + if (!plugin_default_version_check(version, &gcc_version)) {
130719 + error(G_("incompatible gcc/plugin versions"));
130720 + return 1;
130721 + }
130722 +
130723 + register_callback(plugin_name, PLUGIN_INFO, NULL, &latent_entropy_plugin_info);
130724 + register_callback(plugin_name, PLUGIN_START_UNIT, &latent_entropy_start_unit, NULL);
130725 + register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_latent_entropy);
130726 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &latent_entropy_pass_info);
130727 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
130728 +
130729 + return 0;
130730 +}
130731 diff --git a/tools/gcc/randomize_layout_plugin.c b/tools/gcc/randomize_layout_plugin.c
130732 new file mode 100644
130733 index 0000000..06a039c
130734 --- /dev/null
130735 +++ b/tools/gcc/randomize_layout_plugin.c
130736 @@ -0,0 +1,930 @@
130737 +/*
130738 + * Copyright 2014,2015 by Open Source Security, Inc., Brad Spengler <spender@grsecurity.net>
130739 + * and PaX Team <pageexec@freemail.hu>
130740 + * Licensed under the GPL v2
130741 + *
130742 + * Usage:
130743 + * $ # for 4.5/4.6/C based 4.7
130744 + * $ gcc -I`gcc -print-file-name=plugin`/include -I`gcc -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o randomize_layout_plugin.so randomize_layout_plugin.c
130745 + * $ # for C++ based 4.7/4.8+
130746 + * $ g++ -I`g++ -print-file-name=plugin`/include -I`g++ -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o randomize_layout_plugin.so randomize_layout_plugin.c
130747 + * $ gcc -fplugin=./randomize_layout_plugin.so test.c -O2
130748 + */
130749 +
130750 +#include "gcc-common.h"
130751 +#include "randomize_layout_seed.h"
130752 +
130753 +#if BUILDING_GCC_MAJOR < 4 || (BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR < 6) || \
130754 + (BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR == 6 && BUILDING_GCC_PATCHLEVEL < 4)
130755 +#error "The RANDSTRUCT plugin requires GCC 4.6.4 or newer."
130756 +#endif
130757 +
130758 +#define ORIG_TYPE_NAME(node) \
130759 + (TYPE_NAME(TYPE_MAIN_VARIANT(node)) != NULL_TREE ? ((const unsigned char *)IDENTIFIER_POINTER(TYPE_NAME(TYPE_MAIN_VARIANT(node)))) : (const unsigned char *)"anonymous")
130760 +
130761 +int plugin_is_GPL_compatible;
130762 +
130763 +static int performance_mode;
130764 +
130765 +static struct plugin_info randomize_layout_plugin_info = {
130766 + .version = "201402201816",
130767 + .help = "disable\t\t\tdo not activate plugin\n"
130768 + "performance-mode\tenable cacheline-aware layout randomization\n"
130769 +};
130770 +
130771 +/* from old Linux dcache.h */
130772 +static inline unsigned long
130773 +partial_name_hash(unsigned long c, unsigned long prevhash)
130774 +{
130775 + return (prevhash + (c << 4) + (c >> 4)) * 11;
130776 +}
130777 +static inline unsigned int
130778 +name_hash(const unsigned char *name)
130779 +{
130780 + unsigned long hash = 0;
130781 + unsigned int len = strlen((const char *)name);
130782 + while (len--)
130783 + hash = partial_name_hash(*name++, hash);
130784 + return (unsigned int)hash;
130785 +}
130786 +
130787 +static tree handle_randomize_layout_attr(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
130788 +{
130789 + tree type;
130790 +
130791 + *no_add_attrs = true;
130792 + if (TREE_CODE(*node) == FUNCTION_DECL) {
130793 + error("%qE attribute does not apply to functions (%qF)", name, *node);
130794 + return NULL_TREE;
130795 + }
130796 +
130797 + if (TREE_CODE(*node) == PARM_DECL) {
130798 + error("%qE attribute does not apply to function parameters (%qD)", name, *node);
130799 + return NULL_TREE;
130800 + }
130801 +
130802 + if (TREE_CODE(*node) == VAR_DECL) {
130803 + error("%qE attribute does not apply to variables (%qD)", name, *node);
130804 + return NULL_TREE;
130805 + }
130806 +
130807 + if (TYPE_P(*node)) {
130808 + type = *node;
130809 + } else {
130810 + gcc_assert(TREE_CODE(*node) == TYPE_DECL);
130811 + type = TREE_TYPE(*node);
130812 + }
130813 +
130814 + if (TREE_CODE(type) != RECORD_TYPE) {
130815 + error("%qE attribute used on %qT applies to struct types only", name, type);
130816 + return NULL_TREE;
130817 + }
130818 +
130819 + if (lookup_attribute(IDENTIFIER_POINTER(name), TYPE_ATTRIBUTES(type))) {
130820 + error("%qE attribute is already applied to the type %qT", name, type);
130821 + return NULL_TREE;
130822 + }
130823 +
130824 + *no_add_attrs = false;
130825 +
130826 + return NULL_TREE;
130827 +}
130828 +
130829 +/* set on complete types that we don't need to inspect further at all */
130830 +static tree handle_randomize_considered_attr(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
130831 +{
130832 + *no_add_attrs = false;
130833 + return NULL_TREE;
130834 +}
130835 +
130836 +/*
130837 + * set on types that we've performed a shuffle on, to prevent re-shuffling
130838 + * this does not preclude us from inspecting its fields for potential shuffles
130839 + */
130840 +static tree handle_randomize_performed_attr(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
130841 +{
130842 + *no_add_attrs = false;
130843 + return NULL_TREE;
130844 +}
130845 +
130846 +/*
130847 + * 64bit variant of Bob Jenkins' public domain PRNG
130848 + * 256 bits of internal state
130849 + */
130850 +
130851 +typedef unsigned long long u64;
130852 +
130853 +typedef struct ranctx { u64 a; u64 b; u64 c; u64 d; } ranctx;
130854 +
130855 +#define rot(x,k) (((x)<<(k))|((x)>>(64-(k))))
130856 +static u64 ranval(ranctx *x) {
130857 + u64 e = x->a - rot(x->b, 7);
130858 + x->a = x->b ^ rot(x->c, 13);
130859 + x->b = x->c + rot(x->d, 37);
130860 + x->c = x->d + e;
130861 + x->d = e + x->a;
130862 + return x->d;
130863 +}
130864 +
130865 +static void raninit(ranctx *x, u64 *seed) {
130866 + int i;
130867 +
130868 + x->a = seed[0];
130869 + x->b = seed[1];
130870 + x->c = seed[2];
130871 + x->d = seed[3];
130872 +
130873 + for (i=0; i < 30; ++i)
130874 + (void)ranval(x);
130875 +}
130876 +
130877 +static u64 shuffle_seed[4];
130878 +
130879 +struct partition_group {
130880 + tree tree_start;
130881 + unsigned long start;
130882 + unsigned long length;
130883 +};
130884 +
130885 +static void partition_struct(tree *fields, unsigned long length, struct partition_group *size_groups, unsigned long *num_groups)
130886 +{
130887 + unsigned long i;
130888 + unsigned long accum_size = 0;
130889 + unsigned long accum_length = 0;
130890 + unsigned long group_idx = 0;
130891 +
130892 + gcc_assert(length < INT_MAX);
130893 +
130894 + memset(size_groups, 0, sizeof(struct partition_group) * length);
130895 +
130896 + for (i = 0; i < length; i++) {
130897 + if (size_groups[group_idx].tree_start == NULL_TREE) {
130898 + size_groups[group_idx].tree_start = fields[i];
130899 + size_groups[group_idx].start = i;
130900 + accum_length = 0;
130901 + accum_size = 0;
130902 + }
130903 + accum_size += (unsigned long)int_size_in_bytes(TREE_TYPE(fields[i]));
130904 + accum_length++;
130905 + if (accum_size >= 64) {
130906 + size_groups[group_idx].length = accum_length;
130907 + accum_length = 0;
130908 + group_idx++;
130909 + }
130910 + }
130911 +
130912 + if (size_groups[group_idx].tree_start != NULL_TREE &&
130913 + !size_groups[group_idx].length) {
130914 + size_groups[group_idx].length = accum_length;
130915 + group_idx++;
130916 + }
130917 +
130918 + *num_groups = group_idx;
130919 +}
130920 +
130921 +static void performance_shuffle(tree *newtree, unsigned long length, ranctx *prng_state)
130922 +{
130923 + unsigned long i, x;
130924 + struct partition_group size_group[length];
130925 + unsigned long num_groups = 0;
130926 + unsigned long randnum;
130927 +
130928 + partition_struct(newtree, length, (struct partition_group *)&size_group, &num_groups);
130929 + for (i = num_groups - 1; i > 0; i--) {
130930 + struct partition_group tmp;
130931 + randnum = ranval(prng_state) % (i + 1);
130932 + tmp = size_group[i];
130933 + size_group[i] = size_group[randnum];
130934 + size_group[randnum] = tmp;
130935 + }
130936 +
130937 + for (x = 0; x < num_groups; x++) {
130938 + for (i = size_group[x].start + size_group[x].length - 1; i > size_group[x].start; i--) {
130939 + tree tmp;
130940 + if (DECL_BIT_FIELD_TYPE(newtree[i]))
130941 + continue;
130942 + randnum = ranval(prng_state) % (i + 1);
130943 + // we could handle this case differently if desired
130944 + if (DECL_BIT_FIELD_TYPE(newtree[randnum]))
130945 + continue;
130946 + tmp = newtree[i];
130947 + newtree[i] = newtree[randnum];
130948 + newtree[randnum] = tmp;
130949 + }
130950 + }
130951 +}
130952 +
130953 +static void full_shuffle(tree *newtree, unsigned long length, ranctx *prng_state)
130954 +{
130955 + unsigned long i, randnum;
130956 +
130957 + for (i = length - 1; i > 0; i--) {
130958 + tree tmp;
130959 + randnum = ranval(prng_state) % (i + 1);
130960 + tmp = newtree[i];
130961 + newtree[i] = newtree[randnum];
130962 + newtree[randnum] = tmp;
130963 + }
130964 +}
130965 +
130966 +/* modern in-place Fisher-Yates shuffle */
130967 +static void shuffle(const_tree type, tree *newtree, unsigned long length)
130968 +{
130969 + unsigned long i;
130970 + u64 seed[4];
130971 + ranctx prng_state;
130972 + const unsigned char *structname;
130973 +
130974 + if (length == 0)
130975 + return;
130976 +
130977 + gcc_assert(TREE_CODE(type) == RECORD_TYPE);
130978 +
130979 + structname = ORIG_TYPE_NAME(type);
130980 +
130981 +#ifdef __DEBUG_PLUGIN
130982 + fprintf(stderr, "Shuffling struct %s %p\n", (const char *)structname, type);
130983 +#ifdef __DEBUG_VERBOSE
130984 + debug_tree((tree)type);
130985 +#endif
130986 +#endif
130987 +
130988 + for (i = 0; i < 4; i++) {
130989 + seed[i] = shuffle_seed[i];
130990 + seed[i] ^= name_hash(structname);
130991 + }
130992 +
130993 + raninit(&prng_state, (u64 *)&seed);
130994 +
130995 + if (performance_mode)
130996 + performance_shuffle(newtree, length, &prng_state);
130997 + else
130998 + full_shuffle(newtree, length, &prng_state);
130999 +}
131000 +
131001 +static bool is_flexible_array(const_tree field)
131002 +{
131003 + const_tree fieldtype;
131004 + const_tree typesize;
131005 + const_tree elemtype;
131006 + const_tree elemsize;
131007 +
131008 + fieldtype = TREE_TYPE(field);
131009 + typesize = TYPE_SIZE(fieldtype);
131010 +
131011 + if (TREE_CODE(fieldtype) != ARRAY_TYPE)
131012 + return false;
131013 +
131014 + elemtype = TREE_TYPE(fieldtype);
131015 + elemsize = TYPE_SIZE(elemtype);
131016 +
131017 + /* size of type is represented in bits */
131018 +
131019 + if (typesize == NULL_TREE && TYPE_DOMAIN(fieldtype) != NULL_TREE &&
131020 + TYPE_MAX_VALUE(TYPE_DOMAIN(fieldtype)) == NULL_TREE)
131021 + return true;
131022 +
131023 + if (typesize != NULL_TREE &&
131024 + (TREE_CONSTANT(typesize) && (!TREE_INT_CST_LOW(typesize) ||
131025 + TREE_INT_CST_LOW(typesize) == TREE_INT_CST_LOW(elemsize))))
131026 + return true;
131027 +
131028 + return false;
131029 +}
131030 +
131031 +static int relayout_struct(tree type)
131032 +{
131033 + unsigned long num_fields = (unsigned long)list_length(TYPE_FIELDS(type));
131034 + unsigned long shuffle_length = num_fields;
131035 + tree field;
131036 + tree newtree[num_fields];
131037 + unsigned long i;
131038 + tree list;
131039 + tree variant;
131040 + tree main_variant;
131041 + expanded_location xloc;
131042 +
131043 + if (TYPE_FIELDS(type) == NULL_TREE)
131044 + return 0;
131045 +
131046 + if (num_fields < 2)
131047 + return 0;
131048 +
131049 + gcc_assert(TREE_CODE(type) == RECORD_TYPE);
131050 +
131051 + gcc_assert(num_fields < INT_MAX);
131052 +
131053 + if (lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(type)) ||
131054 + lookup_attribute("no_randomize_layout", TYPE_ATTRIBUTES(TYPE_MAIN_VARIANT(type))))
131055 + return 0;
131056 +
131057 + /* Workaround for 3rd-party VirtualBox source that we can't modify ourselves */
131058 + if (!strcmp((const char *)ORIG_TYPE_NAME(type), "INTNETTRUNKFACTORY") ||
131059 + !strcmp((const char *)ORIG_TYPE_NAME(type), "RAWPCIFACTORY"))
131060 + return 0;
131061 +
131062 + /* throw out any structs in uapi */
131063 + xloc = expand_location(DECL_SOURCE_LOCATION(TYPE_FIELDS(type)));
131064 +
131065 + if (strstr(xloc.file, "/uapi/"))
131066 + error(G_("attempted to randomize userland API struct %s"), ORIG_TYPE_NAME(type));
131067 +
131068 + for (field = TYPE_FIELDS(type), i = 0; field; field = TREE_CHAIN(field), i++) {
131069 + gcc_assert(TREE_CODE(field) == FIELD_DECL);
131070 + newtree[i] = field;
131071 + }
131072 +
131073 + /*
131074 + * enforce that we don't randomize the layout of the last
131075 + * element of a struct if it's a 0 or 1-length array
131076 + * or a proper flexible array
131077 + */
131078 + if (is_flexible_array(newtree[num_fields - 1]))
131079 + shuffle_length--;
131080 +
131081 + shuffle(type, (tree *)newtree, shuffle_length);
131082 +
131083 + /*
131084 + * set up a bogus anonymous struct field designed to error out on unnamed struct initializers
131085 + * as gcc provides no other way to detect such code
131086 + */
131087 + list = make_node(FIELD_DECL);
131088 + TREE_CHAIN(list) = newtree[0];
131089 + TREE_TYPE(list) = void_type_node;
131090 + DECL_SIZE(list) = bitsize_zero_node;
131091 + DECL_NONADDRESSABLE_P(list) = 1;
131092 + DECL_FIELD_BIT_OFFSET(list) = bitsize_zero_node;
131093 + DECL_SIZE_UNIT(list) = size_zero_node;
131094 + DECL_FIELD_OFFSET(list) = size_zero_node;
131095 + DECL_CONTEXT(list) = type;
131096 + // to satisfy the constify plugin
131097 + TREE_READONLY(list) = 1;
131098 +
131099 + for (i = 0; i < num_fields - 1; i++)
131100 + TREE_CHAIN(newtree[i]) = newtree[i+1];
131101 + TREE_CHAIN(newtree[num_fields - 1]) = NULL_TREE;
131102 +
131103 + main_variant = TYPE_MAIN_VARIANT(type);
131104 + for (variant = main_variant; variant; variant = TYPE_NEXT_VARIANT(variant)) {
131105 + TYPE_FIELDS(variant) = list;
131106 + TYPE_ATTRIBUTES(variant) = copy_list(TYPE_ATTRIBUTES(variant));
131107 + TYPE_ATTRIBUTES(variant) = tree_cons(get_identifier("randomize_performed"), NULL_TREE, TYPE_ATTRIBUTES(variant));
131108 + }
131109 +
131110 + /*
131111 + * force a re-layout of the main variant
131112 + * the TYPE_SIZE for all variants will be recomputed
131113 + * by finalize_type_size()
131114 + */
131115 + TYPE_SIZE(main_variant) = NULL_TREE;
131116 + layout_type(main_variant);
131117 + gcc_assert(TYPE_SIZE(main_variant) != NULL_TREE);
131118 +
131119 + return 1;
131120 +}
131121 +
131122 +/* from constify plugin */
131123 +static const_tree get_field_type(const_tree field)
131124 +{
131125 + return strip_array_types(TREE_TYPE(field));
131126 +}
131127 +
131128 +/* from constify plugin */
131129 +static bool is_fptr(const_tree fieldtype)
131130 +{
131131 + if (TREE_CODE(fieldtype) != POINTER_TYPE)
131132 + return false;
131133 +
131134 + return TREE_CODE(TREE_TYPE(fieldtype)) == FUNCTION_TYPE;
131135 +}
131136 +
131137 +/* derived from constify plugin */
131138 +static int is_pure_ops_struct(const_tree node)
131139 +{
131140 + const_tree field;
131141 +
131142 + gcc_assert(TREE_CODE(node) == RECORD_TYPE || TREE_CODE(node) == UNION_TYPE);
131143 +
131144 + for (field = TYPE_FIELDS(node); field; field = TREE_CHAIN(field)) {
131145 + const_tree fieldtype = get_field_type(field);
131146 + enum tree_code code = TREE_CODE(fieldtype);
131147 +
131148 + if (node == fieldtype)
131149 + continue;
131150 +
131151 + if (!is_fptr(fieldtype))
131152 + return 0;
131153 +
131154 + if (code != RECORD_TYPE && code != UNION_TYPE)
131155 + continue;
131156 +
131157 + if (!is_pure_ops_struct(fieldtype))
131158 + return 0;
131159 + }
131160 +
131161 + return 1;
131162 +}
131163 +
131164 +static void randomize_type(tree type)
131165 +{
131166 + tree variant;
131167 +
131168 + gcc_assert(TREE_CODE(type) == RECORD_TYPE);
131169 +
131170 + if (lookup_attribute("randomize_considered", TYPE_ATTRIBUTES(type)))
131171 + return;
131172 +
131173 + if (lookup_attribute("randomize_layout", TYPE_ATTRIBUTES(TYPE_MAIN_VARIANT(type))) || is_pure_ops_struct(type))
131174 + relayout_struct(type);
131175 +
131176 + for (variant = TYPE_MAIN_VARIANT(type); variant; variant = TYPE_NEXT_VARIANT(variant)) {
131177 + TYPE_ATTRIBUTES(type) = copy_list(TYPE_ATTRIBUTES(type));
131178 + TYPE_ATTRIBUTES(type) = tree_cons(get_identifier("randomize_considered"), NULL_TREE, TYPE_ATTRIBUTES(type));
131179 + }
131180 +#ifdef __DEBUG_PLUGIN
131181 + fprintf(stderr, "Marking randomize_considered on struct %s\n", ORIG_TYPE_NAME(type));
131182 +#ifdef __DEBUG_VERBOSE
131183 + debug_tree(type);
131184 +#endif
131185 +#endif
131186 +}
131187 +
131188 +static void randomize_layout_finish_decl(void *event_data, void *data)
131189 +{
131190 + tree decl = (tree)event_data;
131191 + tree type;
131192 +
131193 + if (decl == NULL_TREE || decl == error_mark_node)
131194 + return;
131195 +
131196 + type = TREE_TYPE(decl);
131197 +
131198 + if (TREE_CODE(decl) != VAR_DECL)
131199 + return;
131200 +
131201 + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE)
131202 + return;
131203 +
131204 + if (!lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(type)))
131205 + return;
131206 +
131207 + relayout_decl(decl);
131208 +}
131209 +
131210 +static void finish_type(void *event_data, void *data)
131211 +{
131212 + tree type = (tree)event_data;
131213 +
131214 + if (type == NULL_TREE || type == error_mark_node)
131215 + return;
131216 +
131217 + if (TREE_CODE(type) != RECORD_TYPE)
131218 + return;
131219 +
131220 + if (TYPE_FIELDS(type) == NULL_TREE)
131221 + return;
131222 +
131223 + if (lookup_attribute("randomize_considered", TYPE_ATTRIBUTES(type)))
131224 + return;
131225 +
131226 +#ifdef __DEBUG_PLUGIN
131227 + fprintf(stderr, "Calling randomize_type on %s\n", ORIG_TYPE_NAME(type));
131228 +#endif
131229 +#ifdef __DEBUG_VERBOSE
131230 + debug_tree(type);
131231 +#endif
131232 + randomize_type(type);
131233 +
131234 + return;
131235 +}
131236 +
131237 +static struct attribute_spec randomize_layout_attr = {
131238 + .name = "randomize_layout",
131239 + // related to args
131240 + .min_length = 0,
131241 + .max_length = 0,
131242 + .decl_required = false,
131243 + // need type declaration
131244 + .type_required = true,
131245 + .function_type_required = false,
131246 + .handler = handle_randomize_layout_attr,
131247 +#if BUILDING_GCC_VERSION >= 4007
131248 + .affects_type_identity = true
131249 +#endif
131250 +};
131251 +
131252 +static struct attribute_spec no_randomize_layout_attr = {
131253 + .name = "no_randomize_layout",
131254 + // related to args
131255 + .min_length = 0,
131256 + .max_length = 0,
131257 + .decl_required = false,
131258 + // need type declaration
131259 + .type_required = true,
131260 + .function_type_required = false,
131261 + .handler = handle_randomize_layout_attr,
131262 +#if BUILDING_GCC_VERSION >= 4007
131263 + .affects_type_identity = true
131264 +#endif
131265 +};
131266 +
131267 +static struct attribute_spec randomize_considered_attr = {
131268 + .name = "randomize_considered",
131269 + // related to args
131270 + .min_length = 0,
131271 + .max_length = 0,
131272 + .decl_required = false,
131273 + // need type declaration
131274 + .type_required = true,
131275 + .function_type_required = false,
131276 + .handler = handle_randomize_considered_attr,
131277 +#if BUILDING_GCC_VERSION >= 4007
131278 + .affects_type_identity = false
131279 +#endif
131280 +};
131281 +
131282 +static struct attribute_spec randomize_performed_attr = {
131283 + .name = "randomize_performed",
131284 + // related to args
131285 + .min_length = 0,
131286 + .max_length = 0,
131287 + .decl_required = false,
131288 + // need type declaration
131289 + .type_required = true,
131290 + .function_type_required = false,
131291 + .handler = handle_randomize_performed_attr,
131292 +#if BUILDING_GCC_VERSION >= 4007
131293 + .affects_type_identity = false
131294 +#endif
131295 +};
131296 +
131297 +static void register_attributes(void *event_data, void *data)
131298 +{
131299 + register_attribute(&randomize_layout_attr);
131300 + register_attribute(&no_randomize_layout_attr);
131301 + register_attribute(&randomize_considered_attr);
131302 + register_attribute(&randomize_performed_attr);
131303 +}
131304 +
131305 +static void check_bad_casts_in_constructor(tree var, tree init)
131306 +{
131307 + unsigned HOST_WIDE_INT idx;
131308 + tree field, val;
131309 + tree field_type, val_type;
131310 +
131311 + FOR_EACH_CONSTRUCTOR_ELT(CONSTRUCTOR_ELTS(init), idx, field, val) {
131312 + if (TREE_CODE(val) == CONSTRUCTOR) {
131313 + check_bad_casts_in_constructor(var, val);
131314 + continue;
131315 + }
131316 +
131317 + /* pipacs' plugin creates franken-arrays that differ from those produced by
131318 + normal code which all have valid 'field' trees. work around this */
131319 + if (field == NULL_TREE)
131320 + continue;
131321 + field_type = TREE_TYPE(field);
131322 + val_type = TREE_TYPE(val);
131323 +
131324 + if (TREE_CODE(field_type) != POINTER_TYPE || TREE_CODE(val_type) != POINTER_TYPE)
131325 + continue;
131326 +
131327 + if (field_type == val_type)
131328 + continue;
131329 +
131330 + field_type = TYPE_MAIN_VARIANT(strip_array_types(TYPE_MAIN_VARIANT(TREE_TYPE(field_type))));
131331 + val_type = TYPE_MAIN_VARIANT(strip_array_types(TYPE_MAIN_VARIANT(TREE_TYPE(val_type))));
131332 +
131333 + if (field_type == void_type_node)
131334 + continue;
131335 + if (field_type == val_type)
131336 + continue;
131337 + if (TREE_CODE(val_type) != RECORD_TYPE)
131338 + continue;
131339 +
131340 + if (!lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(val_type)))
131341 + continue;
131342 + inform(DECL_SOURCE_LOCATION(var), "found mismatched struct pointer types: %qT and %qT\n", TYPE_MAIN_VARIANT(field_type), TYPE_MAIN_VARIANT(val_type));
131343 + }
131344 +}
131345 +
131346 +/* derived from the constify plugin */
131347 +static void check_global_variables(void *event_data, void *data)
131348 +{
131349 + struct varpool_node *node;
131350 + tree init;
131351 +
131352 + FOR_EACH_VARIABLE(node) {
131353 + tree var = NODE_DECL(node);
131354 + init = DECL_INITIAL(var);
131355 + if (init == NULL_TREE)
131356 + continue;
131357 +
131358 + if (TREE_CODE(init) != CONSTRUCTOR)
131359 + continue;
131360 +
131361 + check_bad_casts_in_constructor(var, init);
131362 + }
131363 +}
131364 +
131365 +static bool dominated_by_is_err(const_tree rhs, basic_block bb)
131366 +{
131367 + basic_block dom;
131368 + gimple dom_stmt;
131369 + gimple call_stmt;
131370 + const_tree dom_lhs;
131371 + const_tree poss_is_err_cond;
131372 + const_tree poss_is_err_func;
131373 + const_tree is_err_arg;
131374 +
131375 + dom = get_immediate_dominator(CDI_DOMINATORS, bb);
131376 + if (!dom)
131377 + return false;
131378 +
131379 + dom_stmt = last_stmt(dom);
131380 + if (!dom_stmt)
131381 + return false;
131382 +
131383 + if (gimple_code(dom_stmt) != GIMPLE_COND)
131384 + return false;
131385 +
131386 + if (gimple_cond_code(dom_stmt) != NE_EXPR)
131387 + return false;
131388 +
131389 + if (!integer_zerop(gimple_cond_rhs(dom_stmt)))
131390 + return false;
131391 +
131392 + poss_is_err_cond = gimple_cond_lhs(dom_stmt);
131393 +
131394 + if (TREE_CODE(poss_is_err_cond) != SSA_NAME)
131395 + return false;
131396 +
131397 + call_stmt = SSA_NAME_DEF_STMT(poss_is_err_cond);
131398 +
131399 + if (gimple_code(call_stmt) != GIMPLE_CALL)
131400 + return false;
131401 +
131402 + dom_lhs = gimple_get_lhs(call_stmt);
131403 + poss_is_err_func = gimple_call_fndecl(call_stmt);
131404 + if (!poss_is_err_func)
131405 + return false;
131406 + if (dom_lhs != poss_is_err_cond)
131407 + return false;
131408 + if (strcmp(DECL_NAME_POINTER(poss_is_err_func), "IS_ERR"))
131409 + return false;
131410 +
131411 + is_err_arg = gimple_call_arg(call_stmt, 0);
131412 + if (!is_err_arg)
131413 + return false;
131414 +
131415 + if (is_err_arg != rhs)
131416 + return false;
131417 +
131418 + return true;
131419 +}
131420 +
131421 +static void handle_local_var_initializers(void)
131422 +{
131423 + tree var;
131424 + unsigned int i;
131425 +
131426 + FOR_EACH_LOCAL_DECL(cfun, i, var) {
131427 + tree init = DECL_INITIAL(var);
131428 + if (!init)
131429 + continue;
131430 + if (TREE_CODE(init) != CONSTRUCTOR)
131431 + continue;
131432 + check_bad_casts_in_constructor(var, init);
131433 + }
131434 +}
131435 +
131436 +/*
131437 + * iterate over all statements to find "bad" casts:
131438 + * those where the address of the start of a structure is cast
131439 + * to a pointer of a structure of a different type, or a
131440 + * structure pointer type is cast to a different structure pointer type
131441 + */
131442 +static unsigned int find_bad_casts(void)
131443 +{
131444 + basic_block bb;
131445 +
131446 + handle_local_var_initializers();
131447 +
131448 + FOR_ALL_BB_FN(bb, cfun) {
131449 + gimple_stmt_iterator gsi;
131450 +
131451 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
131452 + gimple stmt;
131453 + const_tree lhs;
131454 + const_tree lhs_type;
131455 + const_tree rhs1;
131456 + const_tree rhs_type;
131457 + const_tree ptr_lhs_type;
131458 + const_tree ptr_rhs_type;
131459 + const_tree op0;
131460 + const_tree op0_type;
131461 + enum tree_code rhs_code;
131462 +
131463 + stmt = gsi_stmt(gsi);
131464 +
131465 +#ifdef __DEBUG_PLUGIN
131466 +#ifdef __DEBUG_VERBOSE
131467 + debug_gimple_stmt(stmt);
131468 + debug_tree(gimple_get_lhs(stmt));
131469 +#endif
131470 +#endif
131471 +
131472 + if (gimple_code(stmt) != GIMPLE_ASSIGN)
131473 + continue;
131474 +
131475 +#ifdef __DEBUG_PLUGIN
131476 +#ifdef __DEBUG_VERBOSE
131477 + debug_tree(gimple_assign_rhs1(stmt));
131478 +#endif
131479 +#endif
131480 +
131481 + rhs_code = gimple_assign_rhs_code(stmt);
131482 +
131483 + if (rhs_code != ADDR_EXPR && rhs_code != SSA_NAME)
131484 + continue;
131485 +
131486 + lhs = gimple_get_lhs(stmt);
131487 + lhs_type = TREE_TYPE(lhs);
131488 + rhs1 = gimple_assign_rhs1(stmt);
131489 + rhs_type = TREE_TYPE(rhs1);
131490 +
131491 + if (TREE_CODE(rhs_type) != POINTER_TYPE ||
131492 + TREE_CODE(lhs_type) != POINTER_TYPE)
131493 + continue;
131494 +
131495 + ptr_lhs_type = TYPE_MAIN_VARIANT(strip_array_types(TYPE_MAIN_VARIANT(TREE_TYPE(lhs_type))));
131496 + ptr_rhs_type = TYPE_MAIN_VARIANT(strip_array_types(TYPE_MAIN_VARIANT(TREE_TYPE(rhs_type))));
131497 +
131498 + if (ptr_rhs_type == void_type_node)
131499 + continue;
131500 +
131501 + if (ptr_lhs_type == void_type_node)
131502 + continue;
131503 +
131504 + if (dominated_by_is_err(rhs1, bb))
131505 + continue;
131506 +
131507 + if (TREE_CODE(ptr_rhs_type) != RECORD_TYPE) {
131508 +#ifndef __DEBUG_PLUGIN
131509 + if (lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(ptr_lhs_type)))
131510 +#endif
131511 + inform(gimple_location(stmt), "found mismatched struct pointer types: %qT and %qT\n", ptr_lhs_type, ptr_rhs_type);
131512 + continue;
131513 + }
131514 +
131515 + if (rhs_code == SSA_NAME && ptr_lhs_type == ptr_rhs_type)
131516 + continue;
131517 +
131518 + if (rhs_code == ADDR_EXPR) {
131519 + op0 = TREE_OPERAND(rhs1, 0);
131520 +
131521 + if (op0 == NULL_TREE)
131522 + continue;
131523 +
131524 + if (TREE_CODE(op0) != VAR_DECL)
131525 + continue;
131526 +
131527 + op0_type = TYPE_MAIN_VARIANT(strip_array_types(TYPE_MAIN_VARIANT(TREE_TYPE(op0))));
131528 + if (op0_type == ptr_lhs_type)
131529 + continue;
131530 +
131531 +#ifndef __DEBUG_PLUGIN
131532 + if (lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(op0_type)))
131533 +#endif
131534 + inform(gimple_location(stmt), "found mismatched struct pointer types: %qT and %qT\n", ptr_lhs_type, op0_type);
131535 + } else {
131536 + const_tree ssa_name_var = SSA_NAME_VAR(rhs1);
131537 + /* skip bogus type casts introduced by container_of */
131538 + if (ssa_name_var != NULL_TREE && DECL_NAME(ssa_name_var) &&
131539 + !strcmp((const char *)DECL_NAME_POINTER(ssa_name_var), "__mptr"))
131540 + continue;
131541 +#ifndef __DEBUG_PLUGIN
131542 + if (lookup_attribute("randomize_performed", TYPE_ATTRIBUTES(ptr_rhs_type)))
131543 +#endif
131544 + inform(gimple_location(stmt), "found mismatched struct pointer types: %qT and %qT\n", ptr_lhs_type, ptr_rhs_type);
131545 + }
131546 +
131547 + }
131548 + }
131549 + return 0;
131550 +}
131551 +
131552 +#if BUILDING_GCC_VERSION >= 4009
131553 +static const struct pass_data randomize_layout_bad_cast_data = {
131554 +#else
131555 +static struct gimple_opt_pass randomize_layout_bad_cast = {
131556 + .pass = {
131557 +#endif
131558 + .type = GIMPLE_PASS,
131559 + .name = "randomize_layout_bad_cast",
131560 +#if BUILDING_GCC_VERSION >= 4008
131561 + .optinfo_flags = OPTGROUP_NONE,
131562 +#endif
131563 +#if BUILDING_GCC_VERSION >= 5000
131564 +#elif BUILDING_GCC_VERSION >= 4009
131565 + .has_gate = false,
131566 + .has_execute = true,
131567 +#else
131568 + .gate = NULL,
131569 + .execute = find_bad_casts,
131570 + .sub = NULL,
131571 + .next = NULL,
131572 + .static_pass_number = 0,
131573 +#endif
131574 + .tv_id = TV_NONE,
131575 + .properties_required = PROP_cfg,
131576 + .properties_provided = 0,
131577 + .properties_destroyed = 0,
131578 + .todo_flags_start = 0,
131579 + .todo_flags_finish = TODO_dump_func
131580 +#if BUILDING_GCC_VERSION < 4009
131581 + }
131582 +#endif
131583 +};
131584 +
131585 +#if BUILDING_GCC_VERSION >= 4009
131586 +namespace {
131587 +class randomize_layout_bad_cast : public gimple_opt_pass {
131588 +public:
131589 + randomize_layout_bad_cast() : gimple_opt_pass(randomize_layout_bad_cast_data, g) {}
131590 +#if BUILDING_GCC_VERSION >= 5000
131591 + virtual unsigned int execute(function *) { return find_bad_casts(); }
131592 +#else
131593 + unsigned int execute() { return find_bad_casts(); }
131594 +#endif
131595 +};
131596 +}
131597 +#endif
131598 +
131599 +static struct opt_pass *make_randomize_layout_bad_cast(void)
131600 +{
131601 +#if BUILDING_GCC_VERSION >= 4009
131602 + return new randomize_layout_bad_cast();
131603 +#else
131604 + return &randomize_layout_bad_cast.pass;
131605 +#endif
131606 +}
131607 +
131608 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
131609 +{
131610 + int i;
131611 + const char * const plugin_name = plugin_info->base_name;
131612 + const int argc = plugin_info->argc;
131613 + const struct plugin_argument * const argv = plugin_info->argv;
131614 + bool enable = true;
131615 + int obtained_seed = 0;
131616 + struct register_pass_info randomize_layout_bad_cast_info;
131617 +
131618 + randomize_layout_bad_cast_info.pass = make_randomize_layout_bad_cast();
131619 + randomize_layout_bad_cast_info.reference_pass_name = "ssa";
131620 + randomize_layout_bad_cast_info.ref_pass_instance_number = 1;
131621 + randomize_layout_bad_cast_info.pos_op = PASS_POS_INSERT_AFTER;
131622 +
131623 + if (!plugin_default_version_check(version, &gcc_version)) {
131624 + error(G_("incompatible gcc/plugin versions"));
131625 + return 1;
131626 + }
131627 +
131628 + if (strncmp(lang_hooks.name, "GNU C", 5) && !strncmp(lang_hooks.name, "GNU C+", 6)) {
131629 + inform(UNKNOWN_LOCATION, G_("%s supports C only, not %s"), plugin_name, lang_hooks.name);
131630 + enable = false;
131631 + }
131632 +
131633 + for (i = 0; i < argc; ++i) {
131634 + if (!strcmp(argv[i].key, "disable")) {
131635 + enable = false;
131636 + continue;
131637 + }
131638 + if (!strcmp(argv[i].key, "performance-mode")) {
131639 + performance_mode = 1;
131640 + continue;
131641 + }
131642 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
131643 + }
131644 +
131645 + if (strlen(randstruct_seed) != 64) {
131646 + error(G_("invalid seed value supplied for %s plugin"), plugin_name);
131647 + return 1;
131648 + }
131649 + obtained_seed = sscanf(randstruct_seed, "%016llx%016llx%016llx%016llx",
131650 + &shuffle_seed[0], &shuffle_seed[1], &shuffle_seed[2], &shuffle_seed[3]);
131651 + if (obtained_seed != 4) {
131652 + error(G_("Invalid seed supplied for %s plugin"), plugin_name);
131653 + return 1;
131654 + }
131655 +
131656 + register_callback(plugin_name, PLUGIN_INFO, NULL, &randomize_layout_plugin_info);
131657 + if (enable) {
131658 + register_callback(plugin_name, PLUGIN_ALL_IPA_PASSES_START, check_global_variables, NULL);
131659 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &randomize_layout_bad_cast_info);
131660 + register_callback(plugin_name, PLUGIN_FINISH_TYPE, finish_type, NULL);
131661 + register_callback(plugin_name, PLUGIN_FINISH_DECL, randomize_layout_finish_decl, NULL);
131662 + }
131663 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
131664 +
131665 + return 0;
131666 +}
131667 diff --git a/tools/gcc/size_overflow_plugin/.gitignore b/tools/gcc/size_overflow_plugin/.gitignore
131668 new file mode 100644
131669 index 0000000..c4b24b9
131670 --- /dev/null
131671 +++ b/tools/gcc/size_overflow_plugin/.gitignore
131672 @@ -0,0 +1,3 @@
131673 +disable_size_overflow_hash.h
131674 +size_overflow_hash.h
131675 +size_overflow_hash_aux.h
131676 diff --git a/tools/gcc/size_overflow_plugin/Makefile b/tools/gcc/size_overflow_plugin/Makefile
131677 new file mode 100644
131678 index 0000000..4c7f7c6
131679 --- /dev/null
131680 +++ b/tools/gcc/size_overflow_plugin/Makefile
131681 @@ -0,0 +1,26 @@
131682 +$(HOSTLIBS)-$(CONFIG_PAX_SIZE_OVERFLOW) += size_overflow_plugin.so
131683 +always := $($(HOSTLIBS)-y)
131684 +
131685 +size_overflow_plugin-objs := $(patsubst $(srctree)/$(src)/%.c,%.o,$(wildcard $(srctree)/$(src)/*.c))
131686 +
131687 +$(patsubst $(srctree)/$(src)/%.c,$(obj)/%.o,$(wildcard $(srctree)/$(src)/*.c)): $(objtree)/$(obj)/size_overflow_hash.h $(objtree)/$(obj)/size_overflow_hash_aux.h $(objtree)/$(obj)/disable_size_overflow_hash.h
131688 +
131689 +quiet_cmd_build_size_overflow_hash = GENHASH $@
131690 + cmd_build_size_overflow_hash = \
131691 + $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -s size_overflow_hash -d $< -o $@
131692 +$(objtree)/$(obj)/size_overflow_hash.h: $(src)/size_overflow_hash.data FORCE
131693 + $(call if_changed,build_size_overflow_hash)
131694 +
131695 +quiet_cmd_build_size_overflow_hash_aux = GENHASH $@
131696 + cmd_build_size_overflow_hash_aux = \
131697 + $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -s size_overflow_hash_aux -d $< -o $@
131698 +$(objtree)/$(obj)/size_overflow_hash_aux.h: $(src)/size_overflow_hash_aux.data FORCE
131699 + $(call if_changed,build_size_overflow_hash_aux)
131700 +
131701 +quiet_cmd_build_disable_size_overflow_hash = GENHASH $@
131702 + cmd_build_disable_size_overflow_hash = \
131703 + $(CONFIG_SHELL) $(srctree)/$(src)/generate_size_overflow_hash.sh -s disable_size_overflow_hash -d $< -o $@
131704 +$(objtree)/$(obj)/disable_size_overflow_hash.h: $(src)/disable_size_overflow_hash.data FORCE
131705 + $(call if_changed,build_disable_size_overflow_hash)
131706 +
131707 +targets += size_overflow_hash.h size_overflow_hash_aux.h disable_size_overflow_hash.h
131708 diff --git a/tools/gcc/size_overflow_plugin/disable_size_overflow_hash.data b/tools/gcc/size_overflow_plugin/disable_size_overflow_hash.data
131709 new file mode 100644
131710 index 0000000..d2ec980
131711 --- /dev/null
131712 +++ b/tools/gcc/size_overflow_plugin/disable_size_overflow_hash.data
131713 @@ -0,0 +1,11008 @@
131714 +disable_so_iwl_mvm_allocate_int_sta_fndecl_1 iwl_mvm_allocate_int_sta fndecl 0 1 NULL
131715 +disable_so_hdsp_9632_get_peak_fndecl_2 hdsp_9632_get_peak fndecl 0 2 NULL
131716 +disable_so_pt3_probe_fndecl_3 pt3_probe fndecl 0 3 NULL nohasharray
131717 +disable_so_sb_register_oss_fndecl_3 sb_register_oss fndecl 0 3 &disable_so_pt3_probe_fndecl_3
131718 +disable_so_logi_dj_recv_query_paired_devices_fndecl_13 logi_dj_recv_query_paired_devices fndecl 0 13 NULL
131719 +disable_so_dma_buf_sz_sxgbe_priv_data_24 dma_buf_sz sxgbe_priv_data 0 24 NULL
131720 +disable_so_ocfs2_xattr_get_clusters_fndecl_34 ocfs2_xattr_get_clusters fndecl 0 34 NULL
131721 +disable_so___key_link_begin_fndecl_35 __key_link_begin fndecl 0 35 NULL
131722 +disable_so_osst_reposition_and_retry_fndecl_55 osst_reposition_and_retry fndecl 0 55 NULL
131723 +disable_so_mwl8k_cmd_get_watchdog_bitmap_fndecl_56 mwl8k_cmd_get_watchdog_bitmap fndecl 0 56 NULL
131724 +disable_so___bond_opt_set_fndecl_60 __bond_opt_set fndecl 0 60 NULL
131725 +disable_so_hdsp_check_for_iobox_fndecl_62 hdsp_check_for_iobox fndecl 0 62 NULL
131726 +disable_so_ncp_do_request_fndecl_102 ncp_do_request fndecl 0 102 NULL
131727 +disable_so_kvm_read_guest_fndecl_107 kvm_read_guest fndecl 0 107 NULL nohasharray
131728 +disable_so_do_dmabuf_define_gmrfb_fndecl_107 do_dmabuf_define_gmrfb fndecl 0 107 &disable_so_kvm_read_guest_fndecl_107
131729 +disable_so_sys_sendmsg_fndecl_108 sys_sendmsg fndecl 0 108 NULL
131730 +disable_so__osd_req_finalize_get_attr_list_fndecl_110 _osd_req_finalize_get_attr_list fndecl 0 110 NULL
131731 +disable_so_sst_ipc_tx_message_wait_fndecl_123 sst_ipc_tx_message_wait fndecl 0 123 NULL
131732 +disable_so__ore_read_mirror_fndecl_142 _ore_read_mirror fndecl 0 142 NULL
131733 +disable_so_i1480_cmd_reset_fndecl_144 i1480_cmd_reset fndecl 0 144 NULL
131734 +disable_so_download_boot_block_fndecl_146 download_boot_block fndecl 0 146 NULL
131735 +disable_so_uvc_endpoint_max_bpi_fndecl_155 uvc_endpoint_max_bpi fndecl 0 155 NULL
131736 +disable_so_lpfcdiag_loop_post_rxbufs_fndecl_159 lpfcdiag_loop_post_rxbufs fndecl 0 159 NULL
131737 +disable_so_zd_usb_iowrite16v_async_fndecl_163 zd_usb_iowrite16v_async fndecl 0 163 NULL
131738 +disable_so_vfs_write_fndecl_176 vfs_write fndecl 0 176 NULL
131739 +disable_so_ufx_read_edid_fndecl_184 ufx_read_edid fndecl 0 184 NULL
131740 +disable_so_sch56xx_send_cmd_fndecl_185 sch56xx_send_cmd fndecl 0 185 NULL
131741 +disable_so_mptctl_do_fw_download_fndecl_190 mptctl_do_fw_download fndecl 0 190 NULL
131742 +disable_so_snd_ctl_elem_info_user_fndecl_193 snd_ctl_elem_info_user fndecl 0 193 NULL
131743 +disable_so_give_pages_fndecl_198 give_pages fndecl 0 198 NULL nohasharray
131744 +disable_so_mtrr_tom2_vardecl_198 mtrr_tom2 vardecl 0 198 &disable_so_give_pages_fndecl_198
131745 +disable_so_ocfs2_info_handle_uuid_fndecl_202 ocfs2_info_handle_uuid fndecl 0 202 NULL
131746 +disable_so_snd_asihpi_meter_add_fndecl_207 snd_asihpi_meter_add fndecl 0 207 NULL
131747 +disable_so_teles_probe_fndecl_208 teles_probe fndecl 0 208 NULL
131748 +disable_so_atm_tc_change_fndecl_212 atm_tc_change fndecl 0 212 NULL
131749 +disable_so_sens_read_fndecl_217 sens_read fndecl 0 217 NULL
131750 +disable_so_nouveau_bo_pin_fndecl_220 nouveau_bo_pin fndecl 0 220 NULL nohasharray
131751 +disable_so_wl1251_acx_cca_threshold_fndecl_220 wl1251_acx_cca_threshold fndecl 0 220 &disable_so_nouveau_bo_pin_fndecl_220
131752 +disable_so_intel_ring_idle_fndecl_221 intel_ring_idle fndecl 0 221 NULL
131753 +disable_so_wl1271_acx_ac_cfg_fndecl_224 wl1271_acx_ac_cfg fndecl 0 224 NULL
131754 +disable_so_sony_nc_kbd_backlight_setup_fndecl_226 sony_nc_kbd_backlight_setup fndecl 0 226 NULL
131755 +disable_so_ipath_setrcvhdrsize_fndecl_231 ipath_setrcvhdrsize fndecl 0 231 NULL
131756 +disable_so_iscsit_process_text_cmd_fndecl_237 iscsit_process_text_cmd fndecl 0 237 NULL
131757 +disable_so_saved_skb_len_nfc_digital_dev_251 saved_skb_len nfc_digital_dev 0 251 NULL
131758 +disable_so_snd_ak4117_create_fndecl_253 snd_ak4117_create fndecl 0 253 NULL
131759 +disable_so_get_host_u32_fndecl_254 get_host_u32 fndecl 0 254 NULL
131760 +disable_so_mwl8k_cmd_radio_control_fndecl_258 mwl8k_cmd_radio_control fndecl 0 258 NULL
131761 +disable_so__regmap_select_page_fndecl_260 _regmap_select_page fndecl 0 260 NULL
131762 +disable_so___netpoll_setup_fndecl_265 __netpoll_setup fndecl 0 265 NULL
131763 +disable_so_drbd_send_ack_ex_fndecl_266 drbd_send_ack_ex fndecl 0 266 NULL
131764 +disable_so_smi_dvbsky_m88rs6000_fe_attach_fndecl_267 smi_dvbsky_m88rs6000_fe_attach fndecl 0 267 NULL
131765 +disable_so_max_can_queue_fc_fcp_internal_270 max_can_queue fc_fcp_internal 0 270 NULL
131766 +disable_so_dbg_leb_change_fndecl_272 dbg_leb_change fndecl 0 272 NULL
131767 +disable_so_tcp_current_mss_fndecl_275 tcp_current_mss fndecl 0 275 NULL
131768 +disable_so__hardware_enqueue_fndecl_277 _hardware_enqueue fndecl 0 277 NULL
131769 +disable_so_c2_del_addr_fndecl_280 c2_del_addr fndecl 0 280 NULL
131770 +disable_so_do_mmap_pgoff_fndecl_291 do_mmap_pgoff fndecl 0 291 NULL
131771 +disable_so_islpci_mgt_transaction_fndecl_297 islpci_mgt_transaction fndecl 0 297 NULL
131772 +disable_so__ctl_diag_unregister_fndecl_300 _ctl_diag_unregister fndecl 0 300 NULL
131773 +disable_so_xfs_qm_dqread_fndecl_302 xfs_qm_dqread fndecl 0 302 NULL
131774 +disable_so_xfpregs_get_fndecl_305 xfpregs_get fndecl 0 305 NULL nohasharray
131775 +disable_so_efx_mcdi_init_fndecl_305 efx_mcdi_init fndecl 0 305 &disable_so_xfpregs_get_fndecl_305
131776 +disable_so_err_hci_request_321 err hci_request 0 321 NULL
131777 +disable_so_done_status_atmel_spi_338 done_status atmel_spi 0 338 NULL
131778 +disable_so_ocfs2_journal_access_fndecl_339 ocfs2_journal_access fndecl 0 339 NULL
131779 +disable_so_b43_sdio_probe_fndecl_341 b43_sdio_probe fndecl 0 341 NULL
131780 +disable_so_send_message_failure_fndecl_346 send_message_failure fndecl 0 346 NULL
131781 +disable_so_sur40_probe_fndecl_348 sur40_probe fndecl 0 348 NULL
131782 +disable_so_tx_idx_bchannel_355 tx_idx bchannel 0 355 NULL
131783 +disable_so_cfg80211_vendor_cmd_reply_fndecl_358 cfg80211_vendor_cmd_reply fndecl 0 358 NULL
131784 +disable_so_iwl_mvm_add_int_sta_common_fndecl_365 iwl_mvm_add_int_sta_common fndecl 0 365 NULL
131785 +disable_so_ufx_disable_fndecl_369 ufx_disable fndecl 0 369 NULL
131786 +disable_so_setup_ctxt_fndecl_374 setup_ctxt fndecl 0 374 NULL
131787 +disable_so_drbd_adm_attach_fndecl_389 drbd_adm_attach fndecl 0 389 NULL
131788 +disable_so_btrfs_insert_delayed_item_fndecl_394 btrfs_insert_delayed_item fndecl 0 394 NULL
131789 +disable_so_keyspan_pda_write_fndecl_398 keyspan_pda_write fndecl 0 398 NULL
131790 +disable_so_t4_sge_init_soft_fndecl_407 t4_sge_init_soft fndecl 0 407 NULL
131791 +disable_so_ovl_copy_xattr_fndecl_409 ovl_copy_xattr fndecl 0 409 NULL
131792 +disable_so_ieee80211_mgd_assoc_fndecl_415 ieee80211_mgd_assoc fndecl 0 415 NULL
131793 +disable_so_rx_buf_sz_rhine_private_435 rx_buf_sz rhine_private 0 435 NULL
131794 +disable_so_wl12xx_cmd_channel_switch_fndecl_438 wl12xx_cmd_channel_switch fndecl 0 438 NULL
131795 +disable_so_snd_pcm_hw_refine_fndecl_442 snd_pcm_hw_refine fndecl 0 442 NULL
131796 +disable_so___kfifo_max_r_fndecl_459 __kfifo_max_r fndecl 0 459 NULL
131797 +disable_so_mon_bin_open_fndecl_469 mon_bin_open fndecl 0 469 NULL
131798 +disable_so_ath6kl_read_fwlogs_fndecl_477 ath6kl_read_fwlogs fndecl 0 477 NULL
131799 +disable_so_ocfs2_replace_cow_fndecl_488 ocfs2_replace_cow fndecl 0 488 NULL
131800 +disable_so_cciss_getbustypes_fndecl_491 cciss_getbustypes fndecl 0 491 NULL
131801 +disable_so_usbtv_setup_iso_transfer_fndecl_503 usbtv_setup_iso_transfer fndecl 0 503 NULL
131802 +disable_so_nr_add_node_fndecl_504 nr_add_node fndecl 0 504 NULL
131803 +disable_so_wa_xfer_status_to_errno_fndecl_506 wa_xfer_status_to_errno fndecl 0 506 NULL
131804 +disable_so_length_qib_sge_516 length qib_sge 0 516 NULL
131805 +disable_so_grow_gnttab_list_fndecl_523 grow_gnttab_list fndecl 0 523 NULL
131806 +disable_so_prepare_pages_fndecl_526 prepare_pages fndecl 0 526 NULL
131807 +disable_so_vr_nor_pci_probe_fndecl_527 vr_nor_pci_probe fndecl 0 527 NULL
131808 +disable_so_compat_wext_handle_ioctl_fndecl_531 compat_wext_handle_ioctl fndecl 0 531 NULL
131809 +disable_so___flush_pasid_fndecl_533 __flush_pasid fndecl 0 533 NULL
131810 +disable_so_chipio_write_data_fndecl_537 chipio_write_data fndecl 0 537 NULL
131811 +disable_so_r600_do_wait_for_fifo_fndecl_555 r600_do_wait_for_fifo fndecl 0 555 NULL
131812 +disable_so_try_alloc_port_fndecl_557 try_alloc_port fndecl 0 557 NULL
131813 +disable_so_ubifs_recover_master_node_fndecl_560 ubifs_recover_master_node fndecl 0 560 NULL
131814 +disable_so_xfs_parseargs_fndecl_561 xfs_parseargs fndecl 0 561 NULL
131815 +disable_so_pch_dma_probe_fndecl_562 pch_dma_probe fndecl 0 562 NULL
131816 +disable_so_ext4_swap_extents_fndecl_577 ext4_swap_extents fndecl 0 577 NULL
131817 +disable_so_mwl8k_cmd_bss_start_fndecl_598 mwl8k_cmd_bss_start fndecl 0 598 NULL
131818 +disable_so_usb_bulk_urb_init_fndecl_599 usb_bulk_urb_init fndecl 0 599 NULL
131819 +disable_so_max_send_sge_ib_qp_cap_601 max_send_sge ib_qp_cap 0 601 NULL
131820 +disable_so_xfs_bmapi_read_fndecl_603 xfs_bmapi_read fndecl 0 603 NULL
131821 +disable_so_populate_msi_sysfs_fndecl_604 populate_msi_sysfs fndecl 0 604 NULL
131822 +disable_so_getxattr_fndecl_605 getxattr fndecl 0 605 NULL
131823 +disable_so_rocker_group_l3_unicast_fndecl_612 rocker_group_l3_unicast fndecl 0 612 NULL
131824 +disable_so_maxsize_tm6000_endpoint_618 maxsize tm6000_endpoint 0 618 NULL
131825 +disable_so_xfs_ioc_bulkstat_fndecl_624 xfs_ioc_bulkstat fndecl 0 624 NULL
131826 +disable_so_nvme_trans_log_supp_pages_fndecl_625 nvme_trans_log_supp_pages fndecl 0 625 NULL
131827 +disable_so_sixpack_open_fndecl_626 sixpack_open fndecl 0 626 NULL nohasharray
131828 +disable_so_hopper_pci_probe_fndecl_626 hopper_pci_probe fndecl 0 626 &disable_so_sixpack_open_fndecl_626
131829 +disable_so_x86_cache_max_rmid_cpuinfo_x86_631 x86_cache_max_rmid cpuinfo_x86 0 631 NULL
131830 +disable_so_fat_sync_bhs_fndecl_655 fat_sync_bhs fndecl 0 655 NULL
131831 +disable_so_rtsx_usb_read_ppbuf_fndecl_659 rtsx_usb_read_ppbuf fndecl 0 659 NULL
131832 +disable_so_netup_ci_init_fndecl_660 netup_ci_init fndecl 0 660 NULL
131833 +disable_so_tx_max_size_cxgbi_device_664 tx_max_size cxgbi_device 0 664 NULL nohasharray
131834 +disable_so_evdev_do_ioctl_fndecl_664 evdev_do_ioctl fndecl 0 664 &disable_so_tx_max_size_cxgbi_device_664
131835 +disable_so_mac_len_sk_buff_676 mac_len sk_buff 0 676 NULL
131836 +disable_so_slip_ioctl_fndecl_681 slip_ioctl fndecl 0 681 NULL
131837 +disable_so_snd_pcm_hw_param_first_fndecl_692 snd_pcm_hw_param_first fndecl 0 692 NULL
131838 +disable_so_fragThresh_ConfigRid_700 fragThresh ConfigRid 0 700 NULL
131839 +disable_so_netlink_proto_init_fndecl_703 netlink_proto_init fndecl 0 703 NULL
131840 +disable_so_nilfs_ifile_get_inode_block_fndecl_709 nilfs_ifile_get_inode_block fndecl 0 709 NULL nohasharray
131841 +disable_so_wl1251_acx_service_period_timeout_fndecl_709 wl1251_acx_service_period_timeout fndecl 0 709 &disable_so_nilfs_ifile_get_inode_block_fndecl_709
131842 +disable_so_fuse_notify_retrieve_fndecl_721 fuse_notify_retrieve fndecl 0 721 NULL
131843 +disable_so_mlx4_init_fw_fndecl_723 mlx4_init_fw fndecl 0 723 NULL
131844 +disable_so_flexonenand_addr_fndecl_731 flexonenand_addr fndecl 0 731 NULL
131845 +disable_so_tsi148_alloc_resource_fndecl_736 tsi148_alloc_resource fndecl 0 736 NULL
131846 +disable_so_ocfs2_extent_map_lookup_fndecl_746 ocfs2_extent_map_lookup fndecl 0 746 NULL
131847 +disable_so_vmw_validate_buffers_fndecl_767 vmw_validate_buffers fndecl 0 767 NULL
131848 +disable_so_len_vnic_dev_bar_768 len vnic_dev_bar 0 768 NULL
131849 +disable_so_objectid_btrfs_fid_769 objectid btrfs_fid 0 769 NULL
131850 +disable_so_loopback_open_fndecl_780 loopback_open fndecl 0 780 NULL
131851 +disable_so_iwl_send_bt_init_conf_fndecl_789 iwl_send_bt_init_conf fndecl 0 789 NULL
131852 +disable_so_qp_alloc_hypercall_fndecl_791 qp_alloc_hypercall fndecl 0 791 NULL nohasharray
131853 +disable_so__ctl_btdh_mapping_fndecl_791 _ctl_btdh_mapping fndecl 0 791 &disable_so_qp_alloc_hypercall_fndecl_791
131854 +disable_so_nv_device_resource_start_fndecl_792 nv_device_resource_start fndecl 0 792 NULL
131855 +disable_so_hv_ringbuffer_write_fndecl_801 hv_ringbuffer_write fndecl 0 801 NULL
131856 +disable_so_iwlagn_set_pan_params_fndecl_805 iwlagn_set_pan_params fndecl 0 805 NULL
131857 +disable_so_ib_link_query_port_fndecl_806 ib_link_query_port fndecl 0 806 NULL
131858 +disable_so_asd_find_dir_entry_fndecl_831 asd_find_dir_entry fndecl 0 831 NULL
131859 +disable_so_iommu_alloc_root_entry_fndecl_835 iommu_alloc_root_entry fndecl 0 835 NULL
131860 +disable_so_ipxrtr_ioctl_fndecl_839 ipxrtr_ioctl fndecl 0 839 NULL
131861 +disable_so_trim_bitmaps_fndecl_845 trim_bitmaps fndecl 0 845 NULL
131862 +disable_so_bnx2x_hwtstamp_ioctl_fndecl_846 bnx2x_hwtstamp_ioctl fndecl 0 846 NULL
131863 +disable_so_xfs_btree_increment_fndecl_856 xfs_btree_increment fndecl 0 856 NULL
131864 +disable_so_proc_get_long_fndecl_857 proc_get_long fndecl 0 857 NULL
131865 +disable_so_nilfs_inode_by_name_fndecl_858 nilfs_inode_by_name fndecl 0 858 NULL
131866 +disable_so_adu_read_fndecl_866 adu_read fndecl 0 866 NULL
131867 +disable_so_ad1848_init_fndecl_875 ad1848_init fndecl 0 875 NULL
131868 +disable_so_vt_move_to_console_fndecl_884 vt_move_to_console fndecl 0 884 NULL
131869 +disable_so_efx_ef10_mtd_probe_partition_fndecl_885 efx_ef10_mtd_probe_partition fndecl 0 885 NULL
131870 +disable_so_cx231xx_audio_init_fndecl_888 cx231xx_audio_init fndecl 0 888 NULL
131871 +disable_so_il3945_get_adjacent_rate_fndecl_892 il3945_get_adjacent_rate fndecl 0 892 NULL nohasharray
131872 +disable_so_acpi_pci_link_set_fndecl_892 acpi_pci_link_set fndecl 0 892 &disable_so_il3945_get_adjacent_rate_fndecl_892
131873 +disable_so_mwifiex_send_cmd_fndecl_908 mwifiex_send_cmd fndecl 0 908 NULL
131874 +disable_so_good_bytes_nfs_pgio_header_909 good_bytes nfs_pgio_header 0 909 NULL
131875 +disable_so_chipio_read_fndecl_910 chipio_read fndecl 0 910 NULL
131876 +disable_so_evdev_handle_get_keycode_v2_fndecl_937 evdev_handle_get_keycode_v2 fndecl 0 937 NULL
131877 +disable_so_xpad_init_output_fndecl_941 xpad_init_output fndecl 0 941 NULL
131878 +disable_so_niu_rbr_fill_fndecl_945 niu_rbr_fill fndecl 0 945 NULL
131879 +disable_so_mei_amthif_read_fndecl_947 mei_amthif_read fndecl 0 947 NULL
131880 +disable_so_xfs_bmap_rtalloc_fndecl_958 xfs_bmap_rtalloc fndecl 0 958 NULL
131881 +disable_so_nilfs_segctor_add_super_root_fndecl_966 nilfs_segctor_add_super_root fndecl 0 966 NULL nohasharray
131882 +disable_so_pvr2_hdw_set_streaming_fndecl_966 pvr2_hdw_set_streaming fndecl 0 966 &disable_so_nilfs_segctor_add_super_root_fndecl_966
131883 +disable_so_vmw_fence_obj_init_fndecl_969 vmw_fence_obj_init fndecl 0 969 NULL
131884 +disable_so_em28xx_alloc_urbs_fndecl_983 em28xx_alloc_urbs fndecl 0 983 NULL
131885 +disable_so_crypto_register_ahash_fndecl_984 crypto_register_ahash fndecl 0 984 NULL
131886 +disable_so_logfs_remove_inode_fndecl_986 logfs_remove_inode fndecl 0 986 NULL
131887 +disable_so_bnx2x_alloc_mem_cnic_fndecl_990 bnx2x_alloc_mem_cnic fndecl 0 990 NULL
131888 +disable_so_qxl_debugfs_add_files_fndecl_992 qxl_debugfs_add_files fndecl 0 992 NULL
131889 +disable_so_calc_baud_rate_divisor_fndecl_995 calc_baud_rate_divisor fndecl 0 995 NULL
131890 +disable_so___ims_pcu_execute_bl_command_fndecl_997 __ims_pcu_execute_bl_command fndecl 0 997 NULL
131891 +disable_so_reserve_metadata_bytes_fndecl_1002 reserve_metadata_bytes fndecl 0 1002 NULL nohasharray
131892 +disable_so_check_target_fndecl_1002 check_target fndecl 0 1002 &disable_so_reserve_metadata_bytes_fndecl_1002
131893 +disable_so_hpsa_bmic_ctrl_mode_sense_fndecl_1003 hpsa_bmic_ctrl_mode_sense fndecl 0 1003 NULL
131894 +disable_so_i2c_smbus_check_pec_fndecl_1018 i2c_smbus_check_pec fndecl 0 1018 NULL
131895 +disable_so_update_input_line_level_fndecl_1027 update_input_line_level fndecl 0 1027 NULL
131896 +disable_so_ssb_attach_queued_buses_fndecl_1038 ssb_attach_queued_buses fndecl 0 1038 NULL
131897 +disable_so_write_dir_fndecl_1040 write_dir fndecl 0 1040 NULL nohasharray
131898 +disable_so_ethtool_set_coalesce_fndecl_1040 ethtool_set_coalesce fndecl 0 1040 &disable_so_write_dir_fndecl_1040
131899 +disable_so_rocker_dma_test_offset_fndecl_1055 rocker_dma_test_offset fndecl 0 1055 NULL
131900 +disable_so_hpsa_ioctl_fndecl_1060 hpsa_ioctl fndecl 0 1060 NULL
131901 +disable_so_ene_probe_fndecl_1062 ene_probe fndecl 0 1062 NULL
131902 +disable_so_restore_dsp_rettings_fndecl_1076 restore_dsp_rettings fndecl 0 1076 NULL nohasharray
131903 +disable_so_snd_soc_add_controls_fndecl_1076 snd_soc_add_controls fndecl 0 1076 &disable_so_restore_dsp_rettings_fndecl_1076
131904 +disable_so_cls_bpf_modify_existing_fndecl_1082 cls_bpf_modify_existing fndecl 0 1082 NULL
131905 +disable_so_max_srq_sz_mthca_dev_lim_1088 max_srq_sz mthca_dev_lim 0 1088 NULL
131906 +disable_so___smsc95xx_read_reg_fndecl_1109 __smsc95xx_read_reg fndecl 0 1109 NULL
131907 +disable_so_nfs4_realloc_slot_table_fndecl_1112 nfs4_realloc_slot_table fndecl 0 1112 NULL
131908 +disable_so_asd_reset_flash_fndecl_1113 asd_reset_flash fndecl 0 1113 NULL
131909 +disable_so_jffs2_reserve_space_gc_fndecl_1131 jffs2_reserve_space_gc fndecl 0 1131 NULL
131910 +disable_so_st5481_setup_in_fndecl_1133 st5481_setup_in fndecl 0 1133 NULL
131911 +disable_so_vmw_execbuf_process_fndecl_1142 vmw_execbuf_process fndecl 0 1142 NULL
131912 +disable_so_vmlfb_alloc_vram_fndecl_1154 vmlfb_alloc_vram fndecl 0 1154 NULL nohasharray
131913 +disable_so_sr_get_mcn_fndecl_1154 sr_get_mcn fndecl 0 1154 &disable_so_vmlfb_alloc_vram_fndecl_1154
131914 +disable_so_uwb_rc_set_ie_fndecl_1156 uwb_rc_set_ie fndecl 0 1156 NULL
131915 +disable_so_tipc_subscr_start_fndecl_1158 tipc_subscr_start fndecl 0 1158 NULL
131916 +disable_so_xstateregs_set_fndecl_1159 xstateregs_set fndecl 0 1159 NULL
131917 +disable_so_rtsx_usb_write_ppbuf_fndecl_1165 rtsx_usb_write_ppbuf fndecl 0 1165 NULL nohasharray
131918 +disable_so_bio_copy_to_iter_fndecl_1165 bio_copy_to_iter fndecl 0 1165 &disable_so_rtsx_usb_write_ppbuf_fndecl_1165
131919 +disable_so_intel_overlay_release_old_vid_fndecl_1169 intel_overlay_release_old_vid fndecl 0 1169 NULL
131920 +disable_so___set_xattr_fndecl_1176 __set_xattr fndecl 0 1176 NULL
131921 +disable_so_mwl8k_cmd_get_hw_spec_sta_fndecl_1177 mwl8k_cmd_get_hw_spec_sta fndecl 0 1177 NULL nohasharray
131922 +disable_so_br_vlan_add_fndecl_1177 br_vlan_add fndecl 0 1177 &disable_so_mwl8k_cmd_get_hw_spec_sta_fndecl_1177
131923 +disable_so_add_single_ctl_with_resume_fndecl_1179 add_single_ctl_with_resume fndecl 0 1179 NULL
131924 +disable_so_c4_send_config_fndecl_1180 c4_send_config fndecl 0 1180 NULL
131925 +disable_so_c67x00_ll_reset_fndecl_1182 c67x00_ll_reset fndecl 0 1182 NULL nohasharray
131926 +disable_so_asus_new_rfkill_fndecl_1182 asus_new_rfkill fndecl 0 1182 &disable_so_c67x00_ll_reset_fndecl_1182
131927 +disable_so_hsi_claim_port_fndecl_1191 hsi_claim_port fndecl 0 1191 NULL
131928 +disable_so_nv50_sor_create_fndecl_1201 nv50_sor_create fndecl 0 1201 NULL
131929 +disable_so_max_pkt_size_au0828_dev_1222 max_pkt_size au0828_dev 0 1222 NULL
131930 +disable_so_kxtj9_setup_polled_device_fndecl_1225 kxtj9_setup_polled_device fndecl 0 1225 NULL
131931 +disable_so_subscribe_port_fndecl_1232 subscribe_port fndecl 0 1232 NULL
131932 +disable_so_usb_get_langid_fndecl_1236 usb_get_langid fndecl 0 1236 NULL
131933 +disable_so_ocfs2_refcount_cow_xattr_fndecl_1254 ocfs2_refcount_cow_xattr fndecl 0 1254 NULL
131934 +disable_so_dln2_check_hw_fndecl_1259 dln2_check_hw fndecl 0 1259 NULL
131935 +disable_so_rv7xx_parse_power_table_fndecl_1260 rv7xx_parse_power_table fndecl 0 1260 NULL nohasharray
131936 +disable_so_advansys_eisa_probe_fndecl_1260 advansys_eisa_probe fndecl 0 1260 &disable_so_rv7xx_parse_power_table_fndecl_1260
131937 +disable_so__efx_mcdi_rpc_fndecl_1263 _efx_mcdi_rpc fndecl 0 1263 NULL
131938 +disable_so_bnx2x_nvram_read_dword_fndecl_1283 bnx2x_nvram_read_dword fndecl 0 1283 NULL
131939 +disable_so_ath6kl_configure_target_fndecl_1284 ath6kl_configure_target fndecl 0 1284 NULL
131940 +disable_so_ocfs2_read_extent_block_fndecl_1285 ocfs2_read_extent_block fndecl 0 1285 NULL
131941 +disable_so_qxl_execbuffer_ioctl_fndecl_1286 qxl_execbuffer_ioctl fndecl 0 1286 NULL
131942 +disable_so_qat_hal_batch_wr_lm_fndecl_1289 qat_hal_batch_wr_lm fndecl 0 1289 NULL
131943 +disable_so_evergreen_cs_parse_fndecl_1290 evergreen_cs_parse fndecl 0 1290 NULL
131944 +disable_so_snd_cmipci_mixer_new_fndecl_1300 snd_cmipci_mixer_new fndecl 0 1300 NULL
131945 +disable_so_br_del_if_fndecl_1305 br_del_if fndecl 0 1305 NULL
131946 +disable_so_mwl8k_cmd_update_stadb_del_fndecl_1307 mwl8k_cmd_update_stadb_del fndecl 0 1307 NULL
131947 +disable_so_usb_serial_bus_register_fndecl_1309 usb_serial_bus_register fndecl 0 1309 NULL
131948 +disable_so_curr_resync_mddev_1313 curr_resync mddev 0 1313 NULL
131949 +disable_so_simple_fill_super_fndecl_1319 simple_fill_super fndecl 0 1319 NULL
131950 +disable_so_dbFindCtl_fndecl_1320 dbFindCtl fndecl 0 1320 NULL
131951 +disable_so_kvm_vm_ioctl_set_msix_entry_fndecl_1334 kvm_vm_ioctl_set_msix_entry fndecl 0 1334 NULL
131952 +disable_so_ct_pcm_playback_open_fndecl_1344 ct_pcm_playback_open fndecl 0 1344 NULL
131953 +disable_so_pci200_ioctl_fndecl_1345 pci200_ioctl fndecl 0 1345 NULL
131954 +disable_so_qxl_ttm_init_fndecl_1350 qxl_ttm_init fndecl 0 1350 NULL
131955 +disable_so_btrfs_delalloc_reserve_space_fndecl_1354 btrfs_delalloc_reserve_space fndecl 0 1354 NULL
131956 +disable_so_snd_sbdsp_create_fndecl_1362 snd_sbdsp_create fndecl 0 1362 NULL
131957 +disable_so_redrat3_dev_probe_fndecl_1363 redrat3_dev_probe fndecl 0 1363 NULL
131958 +disable_so_usb_urb_alloc_isoc_urbs_fndecl_1366 usb_urb_alloc_isoc_urbs fndecl 0 1366 NULL
131959 +disable_so_pci_dev_specific_reset_fndecl_1374 pci_dev_specific_reset fndecl 0 1374 NULL
131960 +disable_so_tb_eeprom_ctl_write_fndecl_1380 tb_eeprom_ctl_write fndecl 0 1380 NULL
131961 +disable_so_iwl_mvm_mac_ctxt_cmd_ibss_fndecl_1381 iwl_mvm_mac_ctxt_cmd_ibss fndecl 0 1381 NULL
131962 +disable_so_snd_seq_queue_timer_set_tempo_fndecl_1388 snd_seq_queue_timer_set_tempo fndecl 0 1388 NULL
131963 +disable_so_asd_get_bios_chim_fndecl_1390 asd_get_bios_chim fndecl 0 1390 NULL
131964 +disable_so__maybe_not_all_in_one_io_fndecl_1393 _maybe_not_all_in_one_io fndecl 0 1393 NULL
131965 +disable_so_c2_llp_accept_fndecl_1394 c2_llp_accept fndecl 0 1394 NULL
131966 +disable_so_jffs2_scan_eraseblock_fndecl_1397 jffs2_scan_eraseblock fndecl 0 1397 NULL
131967 +disable_so_usb_transport_fail_vub300_mmc_host_1403 usb_transport_fail vub300_mmc_host 0 1403 NULL
131968 +disable_so_allocate_threshold_blocks_fndecl_1411 allocate_threshold_blocks fndecl 0 1411 NULL
131969 +disable_so_ubifs_leb_write_fndecl_1412 ubifs_leb_write fndecl 0 1412 NULL
131970 +disable_so_tnc_insert_fndecl_1431 tnc_insert fndecl 0 1431 NULL
131971 +disable_so_nv50_oimm_create_fndecl_1433 nv50_oimm_create fndecl 0 1433 NULL
131972 +disable_so_br_stp_set_port_priority_fndecl_1434 br_stp_set_port_priority fndecl 0 1434 NULL
131973 +disable_so_compat_fd_ioctl_fndecl_1461 compat_fd_ioctl fndecl 0 1461 NULL
131974 +disable_so_size_fw_sec_1464 size fw_sec 0 1464 NULL
131975 +disable_so_ocfs2_begin_local_alloc_recovery_fndecl_1474 ocfs2_begin_local_alloc_recovery fndecl 0 1474 NULL nohasharray
131976 +disable_so_xenbus_map_ring_valloc_pv_fndecl_1474 xenbus_map_ring_valloc_pv fndecl 0 1474 &disable_so_ocfs2_begin_local_alloc_recovery_fndecl_1474
131977 +disable_so_mxuport_send_ctrl_urb_fndecl_1488 mxuport_send_ctrl_urb fndecl 0 1488 NULL
131978 +disable_so_filename_trans_read_fndecl_1497 filename_trans_read fndecl 0 1497 NULL
131979 +disable_so_capi20_manufacturer_fndecl_1498 capi20_manufacturer fndecl 0 1498 NULL
131980 +disable_so_vt_do_kbkeycode_ioctl_fndecl_1502 vt_do_kbkeycode_ioctl fndecl 0 1502 NULL
131981 +disable_so_nilfs_mdt_submit_block_fndecl_1507 nilfs_mdt_submit_block fndecl 0 1507 NULL
131982 +disable_so_dma_data_req_size_ivtv_1512 dma_data_req_size ivtv 0 1512 NULL
131983 +disable_so_lpfc_sli_ring_map_fndecl_1520 lpfc_sli_ring_map fndecl 0 1520 NULL
131984 +disable_so_sky2_alloc_buffers_fndecl_1521 sky2_alloc_buffers fndecl 0 1521 NULL
131985 +disable_so_mlx4_init_pd_table_fndecl_1525 mlx4_init_pd_table fndecl 0 1525 NULL
131986 +disable_so_qlcnic_sriov_init_fndecl_1529 qlcnic_sriov_init fndecl 0 1529 NULL
131987 +disable_so_snd_ctl_elem_write_fndecl_1532 snd_ctl_elem_write fndecl 0 1532 NULL
131988 +disable_so_hif_usb_send_regout_fndecl_1537 hif_usb_send_regout fndecl 0 1537 NULL
131989 +disable_so___es_remove_extent_fndecl_1544 __es_remove_extent fndecl 0 1544 NULL
131990 +disable_so_kxtj9_setup_input_device_fndecl_1552 kxtj9_setup_input_device fndecl 0 1552 NULL
131991 +disable_so_sock_queue_rcv_skb_fndecl_1560 sock_queue_rcv_skb fndecl 0 1560 NULL
131992 +disable_so_mxt_t6_command_fndecl_1573 mxt_t6_command fndecl 0 1573 NULL
131993 +disable_so_gf2k_connect_fndecl_1576 gf2k_connect fndecl 0 1576 NULL
131994 +disable_so_svc_addparty_fndecl_1582 svc_addparty fndecl 0 1582 NULL
131995 +disable_so_vb2_dvb_register_adapter_fndecl_1588 vb2_dvb_register_adapter fndecl 0 1588 NULL
131996 +disable_so_pt1_init_tables_fndecl_1602 pt1_init_tables fndecl 0 1602 NULL
131997 +disable_so_nlmsg_notify_fndecl_1604 nlmsg_notify fndecl 0 1604 NULL
131998 +disable_so_onenand_default_bbt_fndecl_1623 onenand_default_bbt fndecl 0 1623 NULL
131999 +disable_so_max_frame_size_usb_usbvision_1625 max_frame_size usb_usbvision 0 1625 NULL
132000 +disable_so_size_bin_attribute_1632 size bin_attribute 0 1632 NULL
132001 +disable_so_dev_prepare_static_identity_mapping_fndecl_1636 dev_prepare_static_identity_mapping fndecl 0 1636 NULL
132002 +disable_so_mwifiex_cmd_802_11_key_material_v1_fndecl_1646 mwifiex_cmd_802_11_key_material_v1 fndecl 0 1646 NULL
132003 +disable_so_nouveau_gem_pushbuf_validate_fndecl_1651 nouveau_gem_pushbuf_validate fndecl 0 1651 NULL
132004 +disable_so_vram_window_mga_mc_1653 vram_window mga_mc 0 1653 NULL
132005 +disable_so_st_set_pages_fndecl_1655 st_set_pages fndecl 0 1655 NULL
132006 +disable_so_hidraw_send_report_fndecl_1674 hidraw_send_report fndecl 0 1674 NULL
132007 +disable_so_gpiod_export_fndecl_1680 gpiod_export fndecl 0 1680 NULL nohasharray
132008 +disable_so_rdma_translate_ip_fndecl_1680 rdma_translate_ip fndecl 0 1680 &disable_so_gpiod_export_fndecl_1680
132009 +disable_so_add_inode_ref_fndecl_1682 add_inode_ref fndecl 0 1682 NULL
132010 +disable_so_vivid_fb_ioctl_fndecl_1685 vivid_fb_ioctl fndecl 0 1685 NULL
132011 +disable_so_rsrc_len_usb_hcd_1686 rsrc_len usb_hcd 0 1686 NULL
132012 +disable_so_avtab_alloc_fndecl_1695 avtab_alloc fndecl 0 1695 NULL
132013 +disable_so_com20020_probe_fndecl_1699 com20020_probe fndecl 0 1699 NULL
132014 +disable_so_compat_sys_mq_getsetattr_fndecl_1704 compat_sys_mq_getsetattr fndecl 0 1704 NULL
132015 +disable_so_res_get_fndecl_1725 res_get fndecl 0 1725 NULL
132016 +disable_so_fw_change_fndecl_1731 fw_change fndecl 0 1731 NULL
132017 +disable_so___gfn_to_hva_many_fndecl_1735 __gfn_to_hva_many fndecl 0 1735 NULL nohasharray
132018 +disable_so_tomoyo_find_next_domain_fndecl_1735 tomoyo_find_next_domain fndecl 0 1735 &disable_so___gfn_to_hva_many_fndecl_1735
132019 +disable_so_read_pnode_fndecl_1737 read_pnode fndecl 0 1737 NULL
132020 +disable_so_uvc_status_start_fndecl_1743 uvc_status_start fndecl 0 1743 NULL
132021 +disable_so_acpi_processor_hotadd_init_fndecl_1758 acpi_processor_hotadd_init fndecl 0 1758 NULL
132022 +disable_so___es_insert_extent_fndecl_1764 __es_insert_extent fndecl 0 1764 NULL nohasharray
132023 +disable_so_rotary_encoder_probe_fndecl_1764 rotary_encoder_probe fndecl 0 1764 &disable_so___es_insert_extent_fndecl_1764
132024 +disable_so_xen_allocate_irq_gsi_fndecl_1769 xen_allocate_irq_gsi fndecl 0 1769 NULL
132025 +disable_so_rslt_reset_vscsifrnt_shadow_1771 rslt_reset vscsifrnt_shadow 0 1771 NULL
132026 +disable_so_user_update_fndecl_1789 user_update fndecl 0 1789 NULL
132027 +disable_so_reiserfs_add_entry_fndecl_1797 reiserfs_add_entry fndecl 0 1797 NULL
132028 +disable_so_radeon_cs_packet_parse_fndecl_1808 radeon_cs_packet_parse fndecl 0 1808 NULL
132029 +disable_so_picolcd_probe_lcd_fndecl_1810 picolcd_probe_lcd fndecl 0 1810 NULL
132030 +disable_so_scan_write_bbt_fndecl_1812 scan_write_bbt fndecl 0 1812 NULL
132031 +disable_so_lleft_ext4_allocation_request_1823 lleft ext4_allocation_request 0 1823 NULL
132032 +disable_so___add_prelim_ref_fndecl_1828 __add_prelim_ref fndecl 0 1828 NULL
132033 +disable_so_wiphy_register_fndecl_1832 wiphy_register fndecl 0 1832 NULL
132034 +disable_so___eql_insert_slave_fndecl_1848 __eql_insert_slave fndecl 0 1848 NULL
132035 +disable_so_msi001_probe_fndecl_1855 msi001_probe fndecl 0 1855 NULL
132036 +disable_so_vmw_cmd_check_fndecl_1869 vmw_cmd_check fndecl 0 1869 NULL
132037 +disable_so_kernfs_rename_ns_fndecl_1873 kernfs_rename_ns fndecl 0 1873 NULL nohasharray
132038 +disable_so_rxq_req_tg3_1873 rxq_req tg3 0 1873 &disable_so_kernfs_rename_ns_fndecl_1873
132039 +disable_so_mwl8k_cmd_set_beacon_fndecl_1877 mwl8k_cmd_set_beacon fndecl 0 1877 NULL
132040 +disable_so_wm831x_set_bits_fndecl_1893 wm831x_set_bits fndecl 0 1893 NULL
132041 +disable_so_qat_hal_exec_micro_init_lm_fndecl_1895 qat_hal_exec_micro_init_lm fndecl 0 1895 NULL
132042 +disable_so_video_begin_fndecl_1900 video_begin fndecl 0 1900 NULL
132043 +disable_so_em28xx_write_regs_req_fndecl_1905 em28xx_write_regs_req fndecl 0 1905 NULL
132044 +disable_so_address_acpi_resource_fixed_memory32_1923 address acpi_resource_fixed_memory32 0 1923 NULL
132045 +disable_so_fix_unclean_leb_fndecl_1927 fix_unclean_leb fndecl 0 1927 NULL
132046 +disable_so___audit_sockaddr_fndecl_1929 __audit_sockaddr fndecl 0 1929 NULL
132047 +disable_so_wacom_send_setup_string_fndecl_1938 wacom_send_setup_string fndecl 0 1938 NULL
132048 +disable_so_ni_init_smc_spll_table_fndecl_1944 ni_init_smc_spll_table fndecl 0 1944 NULL
132049 +disable_so_usblp_write_fndecl_1945 usblp_write fndecl 0 1945 NULL nohasharray
132050 +disable_so_vsp1_video_open_fndecl_1945 vsp1_video_open fndecl 0 1945 &disable_so_usblp_write_fndecl_1945
132051 +disable_so_sd_init_fndecl_1946 sd_init fndecl 0 1946 NULL
132052 +disable_so_sv_resid_sym_ccb_1947 sv_resid sym_ccb 0 1947 NULL
132053 +disable_so_radeon_ttm_tt_populate_fndecl_1967 radeon_ttm_tt_populate fndecl 0 1967 NULL nohasharray
132054 +disable_so_tty_buffer_request_room_fndecl_1967 tty_buffer_request_room fndecl 0 1967 &disable_so_radeon_ttm_tt_populate_fndecl_1967
132055 +disable_so_con_get_cmap_fndecl_1969 con_get_cmap fndecl 0 1969 NULL
132056 +disable_so_add_oui_reg_req_fndecl_1976 add_oui_reg_req fndecl 0 1976 NULL
132057 +disable_so_i5k_find_amb_registers_fndecl_1986 i5k_find_amb_registers fndecl 0 1986 NULL
132058 +disable_so_mlx4_write_mtt_fndecl_1987 mlx4_write_mtt fndecl 0 1987 NULL
132059 +disable_so_b43legacy_wireless_core_attach_fndecl_1992 b43legacy_wireless_core_attach fndecl 0 1992 NULL
132060 +disable_so_mmc_gpio_request_ro_fndecl_1993 mmc_gpio_request_ro fndecl 0 1993 NULL
132061 +disable_so_mwl8k_cmd_set_rateadapt_mode_fndecl_2004 mwl8k_cmd_set_rateadapt_mode fndecl 0 2004 NULL
132062 +disable_so_x25_del_route_fndecl_2013 x25_del_route fndecl 0 2013 NULL
132063 +disable_so_doc_probe_fndecl_2022 doc_probe fndecl 0 2022 NULL nohasharray
132064 +disable_so_ec_i2c_count_message_fndecl_2022 ec_i2c_count_message fndecl 0 2022 &disable_so_doc_probe_fndecl_2022
132065 +disable_so_cx18_s_stream_vbi_fmt_fndecl_2028 cx18_s_stream_vbi_fmt fndecl 0 2028 NULL
132066 +disable_so_ib_umem_odp_map_dma_single_page_fndecl_2040 ib_umem_odp_map_dma_single_page fndecl 0 2040 NULL
132067 +disable_so_ads7846_probe_fndecl_2075 ads7846_probe fndecl 0 2075 NULL
132068 +disable_so___ocfs2_cluster_lock_fndecl_2087 __ocfs2_cluster_lock fndecl 0 2087 NULL
132069 +disable_so_mei_io_cb_alloc_buf_fndecl_2088 mei_io_cb_alloc_buf fndecl 0 2088 NULL
132070 +disable_so___kernel_write_fndecl_2090 __kernel_write fndecl 0 2090 NULL
132071 +disable_so_fib6_del_fndecl_2099 fib6_del fndecl 0 2099 NULL
132072 +disable_so_agaw_intel_iommu_2100 agaw intel_iommu 0 2100 NULL
132073 +disable_so_ufx_config_ddr2_fndecl_2103 ufx_config_ddr2 fndecl 0 2103 NULL
132074 +disable_so_min_odd_fndecl_2105 min_odd fndecl 0 2105 NULL
132075 +disable_so_block_truncate_page_fndecl_2113 block_truncate_page fndecl 0 2113 NULL
132076 +disable_so_ieee80211_init_cipher_suites_fndecl_2114 ieee80211_init_cipher_suites fndecl 0 2114 NULL
132077 +disable_so_lpfc_sli4_cq_event_pool_create_fndecl_2122 lpfc_sli4_cq_event_pool_create fndecl 0 2122 NULL
132078 +disable_so_wl1271_acx_beacon_filter_opt_fndecl_2124 wl1271_acx_beacon_filter_opt fndecl 0 2124 NULL
132079 +disable_so_load_asic_fndecl_2139 load_asic fndecl 0 2139 NULL
132080 +disable_so_security_compute_sid_fndecl_2145 security_compute_sid fndecl 0 2145 NULL
132081 +disable_so_set_rq_size_fndecl_2155 set_rq_size fndecl 0 2155 NULL
132082 +disable_so_xfs_growfs_log_private_fndecl_2158 xfs_growfs_log_private fndecl 0 2158 NULL nohasharray
132083 +disable_so_mei_amthif_send_cmd_fndecl_2158 mei_amthif_send_cmd fndecl 0 2158 &disable_so_xfs_growfs_log_private_fndecl_2158
132084 +disable_so_class_check_fndecl_2160 class_check fndecl 0 2160 NULL
132085 +disable_so_wl1271_acx_rssi_snr_avg_weights_fndecl_2165 wl1271_acx_rssi_snr_avg_weights fndecl 0 2165 NULL
132086 +disable_so_simtec_i2c_probe_fndecl_2169 simtec_i2c_probe fndecl 0 2169 NULL
132087 +disable_so_msix_capability_init_fndecl_2173 msix_capability_init fndecl 0 2173 NULL
132088 +disable_so___logfs_write_rec_fndecl_2176 __logfs_write_rec fndecl 0 2176 NULL nohasharray
132089 +disable_so_r600_cs_common_vline_parse_fndecl_2176 r600_cs_common_vline_parse fndecl 0 2176 &disable_so___logfs_write_rec_fndecl_2176 nohasharray
132090 +disable_so_mlx4_init_mcg_table_fndecl_2176 mlx4_init_mcg_table fndecl 0 2176 &disable_so_r600_cs_common_vline_parse_fndecl_2176
132091 +disable_so_dbAllocCtl_fndecl_2180 dbAllocCtl fndecl 0 2180 NULL
132092 +disable_so__drbd_send_zc_ee_fndecl_2191 _drbd_send_zc_ee fndecl 0 2191 NULL nohasharray
132093 +disable_so_nfnl_cthelper_parse_expect_policy_fndecl_2191 nfnl_cthelper_parse_expect_policy fndecl 0 2191 &disable_so__drbd_send_zc_ee_fndecl_2191
132094 +disable_so_sk_err_soft_sock_2192 sk_err_soft sock 0 2192 NULL
132095 +disable_so_xhci_configure_endpoint_result_fndecl_2207 xhci_configure_endpoint_result fndecl 0 2207 NULL
132096 +disable_so_valuelen_xfs_attr_inactive_list_2216 valuelen xfs_attr_inactive_list 0 2216 NULL
132097 +disable_so_wl1271_cmd_general_parms_fndecl_2223 wl1271_cmd_general_parms fndecl 0 2223 NULL
132098 +disable_so_walk_down_tree_fndecl_2241 walk_down_tree fndecl 0 2241 NULL
132099 +disable_so_s_mb_group_prealloc_ext4_sb_info_2246 s_mb_group_prealloc ext4_sb_info 0 2246 NULL
132100 +disable_so___build_xattrs_fndecl_2248 __build_xattrs fndecl 0 2248 NULL
132101 +disable_so_chipio_write_address_fndecl_2270 chipio_write_address fndecl 0 2270 NULL
132102 +disable_so_compat_rw_copy_check_uvector_fndecl_2274 compat_rw_copy_check_uvector fndecl 0 2274 NULL
132103 +disable_so_wl1251_acx_tsf_info_fndecl_2284 wl1251_acx_tsf_info fndecl 0 2284 NULL
132104 +disable_so_xen_bind_pirq_msi_to_irq_fndecl_2289 xen_bind_pirq_msi_to_irq fndecl 0 2289 NULL
132105 +disable_so_snd_hdsp_hwdep_ioctl_fndecl_2291 snd_hdsp_hwdep_ioctl fndecl 0 2291 NULL
132106 +disable_so_proc_sched_autogroup_set_nice_fndecl_2296 proc_sched_autogroup_set_nice fndecl 0 2296 NULL
132107 +disable_so_snd_card_saa7134_capture_open_fndecl_2297 snd_card_saa7134_capture_open fndecl 0 2297 NULL
132108 +disable_so_sensf_res_len_nfc_target_2304 sensf_res_len nfc_target 0 2304 NULL
132109 +disable_so_af9033_wr_regs_fndecl_2314 af9033_wr_regs fndecl 0 2314 NULL
132110 +disable_so_gen_replace_estimator_fndecl_2319 gen_replace_estimator fndecl 0 2319 NULL
132111 +disable_so_saa7146_stop_preview_fndecl_2327 saa7146_stop_preview fndecl 0 2327 NULL
132112 +disable_so_brcmf_p2p_act_frm_search_fndecl_2336 brcmf_p2p_act_frm_search fndecl 0 2336 NULL
132113 +disable_so_size_debugfs_blob_wrapper_2338 size debugfs_blob_wrapper 0 2338 NULL
132114 +disable_so_nvif_client_new_fndecl_2344 nvif_client_new fndecl 0 2344 NULL
132115 +disable_so_osdblk_sysfs_init_fndecl_2348 osdblk_sysfs_init fndecl 0 2348 NULL nohasharray
132116 +disable_so_snd_ice1712_delta_init_fndecl_2348 snd_ice1712_delta_init fndecl 0 2348 &disable_so_osdblk_sysfs_init_fndecl_2348
132117 +disable_so_btrfs_qgroup_record_ref_fndecl_2356 btrfs_qgroup_record_ref fndecl 0 2356 NULL
132118 +disable_so_cipso_v4_map_cat_enum_hton_fndecl_2359 cipso_v4_map_cat_enum_hton fndecl 0 2359 NULL
132119 +disable_so_xfs_compat_ioc_bulkstat_fndecl_2368 xfs_compat_ioc_bulkstat fndecl 0 2368 NULL
132120 +disable_so_nv17_fence_create_fndecl_2370 nv17_fence_create fndecl 0 2370 NULL
132121 +disable_so_snd_es1968_playback_open_fndecl_2371 snd_es1968_playback_open fndecl 0 2371 NULL
132122 +disable_so_budget_ci_attach_fndecl_2382 budget_ci_attach fndecl 0 2382 NULL
132123 +disable_so_loadfirmware_fndecl_2387 loadfirmware fndecl 0 2387 NULL
132124 +disable_so_hash_ipportnet4_add_fndecl_2389 hash_ipportnet4_add fndecl 0 2389 NULL
132125 +disable_so_decompressed_size_regcache_lzo_ctx_2401 decompressed_size regcache_lzo_ctx 0 2401 NULL
132126 +disable_so_qlcnic_alloc_tx_rings_fndecl_2403 qlcnic_alloc_tx_rings fndecl 0 2403 NULL
132127 +disable_so_wl18xx_acx_set_peer_cap_fndecl_2404 wl18xx_acx_set_peer_cap fndecl 0 2404 NULL
132128 +disable_so___jfs_getxattr_fndecl_2412 __jfs_getxattr fndecl 0 2412 NULL
132129 +disable_so_ocfs2_refcount_cow_hunk_fndecl_2413 ocfs2_refcount_cow_hunk fndecl 0 2413 NULL
132130 +disable_so_ocfs2_info_handle_request_fndecl_2415 ocfs2_info_handle_request fndecl 0 2415 NULL
132131 +disable_so_dbg_check_orphans_fndecl_2420 dbg_check_orphans fndecl 0 2420 NULL
132132 +disable_so_ibmpex_find_sensors_fndecl_2430 ibmpex_find_sensors fndecl 0 2430 NULL
132133 +disable_so_dtSplitPage_fndecl_2436 dtSplitPage fndecl 0 2436 NULL
132134 +disable_so_mtip_submit_request_fndecl_2437 mtip_submit_request fndecl 0 2437 NULL nohasharray
132135 +disable_so_iwl_set_power_fndecl_2437 iwl_set_power fndecl 0 2437 &disable_so_mtip_submit_request_fndecl_2437
132136 +disable_so_ncp_symlink_fndecl_2440 ncp_symlink fndecl 0 2440 NULL
132137 +disable_so_mwl8k_cmd_bbp_reg_access_fndecl_2442 mwl8k_cmd_bbp_reg_access fndecl 0 2442 NULL
132138 +disable_so___irq_alloc_descs_fndecl_2452 __irq_alloc_descs fndecl 0 2452 NULL
132139 +disable_so_validate_nnode_fndecl_2453 validate_nnode fndecl 0 2453 NULL
132140 +disable_so_fb_base_bochs_device_2461 fb_base bochs_device 0 2461 NULL
132141 +disable_so_maxpacket_usb_ep_2473 maxpacket usb_ep 0 2473 NULL
132142 +disable_so_lpfc_sli4_cfg_post_extnts_fndecl_2484 lpfc_sli4_cfg_post_extnts fndecl 0 2484 NULL
132143 +disable_so_pci_hp_change_slot_info_fndecl_2485 pci_hp_change_slot_info fndecl 0 2485 NULL
132144 +disable_so_ocfs2_xattr_get_nolock_fndecl_2493 ocfs2_xattr_get_nolock fndecl 0 2493 NULL
132145 +disable_so_xfs_btree_insert_fndecl_2499 xfs_btree_insert fndecl 0 2499 NULL
132146 +disable_so_kobject_uevent_env_fndecl_2516 kobject_uevent_env fndecl 0 2516 NULL
132147 +disable_so_savage_dispatch_dma_idx_fndecl_2522 savage_dispatch_dma_idx fndecl 0 2522 NULL
132148 +disable_so_snd_azf3328_mixer_new_fndecl_2527 snd_azf3328_mixer_new fndecl 0 2527 NULL
132149 +disable_so_hpt366_init_one_fndecl_2533 hpt366_init_one fndecl 0 2533 NULL
132150 +disable_so_qlcnic_83xx_get_fw_info_fndecl_2539 qlcnic_83xx_get_fw_info fndecl 0 2539 NULL
132151 +disable_so___wa_seg_submit_fndecl_2547 __wa_seg_submit fndecl 0 2547 NULL
132152 +disable_so_snd_m3_create_fndecl_2559 snd_m3_create fndecl 0 2559 NULL
132153 +disable_so___cw1200_reg_read_fndecl_2561 __cw1200_reg_read fndecl 0 2561 NULL
132154 +disable_so_idetape_space_over_filemarks_fndecl_2569 idetape_space_over_filemarks fndecl 0 2569 NULL
132155 +disable_so___tun_chr_ioctl_fndecl_2575 __tun_chr_ioctl fndecl 0 2575 NULL
132156 +disable_so_ipmi_get_my_address_fndecl_2581 ipmi_get_my_address fndecl 0 2581 NULL
132157 +disable_so___gdth_execute_fndecl_2594 __gdth_execute fndecl 0 2594 NULL
132158 +disable_so_vt_do_kdskbmode_fndecl_2597 vt_do_kdskbmode fndecl 0 2597 NULL
132159 +disable_so_page_cache_tree_insert_fndecl_2600 page_cache_tree_insert fndecl 0 2600 NULL
132160 +disable_so_mixart_enum_physio_fndecl_2603 mixart_enum_physio fndecl 0 2603 NULL
132161 +disable_so_xfs_set_dmattrs_fndecl_2609 xfs_set_dmattrs fndecl 0 2609 NULL nohasharray
132162 +disable_so_vivid_create_instance_fndecl_2609 vivid_create_instance fndecl 0 2609 &disable_so_xfs_set_dmattrs_fndecl_2609
132163 +disable_so_e1000_write_eeprom_fndecl_2611 e1000_write_eeprom fndecl 0 2611 NULL
132164 +disable_so_raw_ctl_ioctl_fndecl_2632 raw_ctl_ioctl fndecl 0 2632 NULL
132165 +disable_so_agp_create_segment_fndecl_2634 agp_create_segment fndecl 0 2634 NULL
132166 +disable_so_build_ntlmssp_auth_blob_fndecl_2637 build_ntlmssp_auth_blob fndecl 0 2637 NULL
132167 +disable_so_msix_vectors_megasas_instance_2643 msix_vectors megasas_instance 0 2643 NULL
132168 +disable_so_at76_load_external_fw_fndecl_2649 at76_load_external_fw fndecl 0 2649 NULL
132169 +disable_so_cn_queue_add_callback_fndecl_2655 cn_queue_add_callback fndecl 0 2655 NULL
132170 +disable_so_wl1251_acx_frame_rates_fndecl_2657 wl1251_acx_frame_rates fndecl 0 2657 NULL
132171 +disable_so_resync_max_mddev_2658 resync_max mddev 0 2658 NULL
132172 +disable_so_parse_longlink_mfc_fndecl_2662 parse_longlink_mfc fndecl 0 2662 NULL
132173 +disable_so_mlx4_dev_cap_fndecl_2664 mlx4_dev_cap fndecl 0 2664 NULL
132174 +disable_so_snd_cmipci_create_fndecl_2666 snd_cmipci_create fndecl 0 2666 NULL
132175 +disable_so_ocfs2_assign_bh_fndecl_2667 ocfs2_assign_bh fndecl 0 2667 NULL
132176 +disable_so_xpc_allocate_recv_msg_slot_uv_fndecl_2673 xpc_allocate_recv_msg_slot_uv fndecl 0 2673 NULL
132177 +disable_so_dbg_check_znode_fndecl_2674 dbg_check_znode fndecl 0 2674 NULL
132178 +disable_so_nr_proto_init_fndecl_2676 nr_proto_init fndecl 0 2676 NULL
132179 +disable_so_ufx_reg_clear_bits_fndecl_2677 ufx_reg_clear_bits fndecl 0 2677 NULL
132180 +disable_so_result_ncp_request_reply_2680 result ncp_request_reply 0 2680 NULL
132181 +disable_so_queue_reply_fndecl_2691 queue_reply fndecl 0 2691 NULL
132182 +disable_so_ecryptfs_encrypt_filename_fndecl_2695 ecryptfs_encrypt_filename fndecl 0 2695 NULL
132183 +disable_so_intel_overlay_continue_fndecl_2697 intel_overlay_continue fndecl 0 2697 NULL
132184 +disable_so_xfs_rtmount_init_fndecl_2702 xfs_rtmount_init fndecl 0 2702 NULL
132185 +disable_so_vb2_internal_qbuf_fndecl_2707 vb2_internal_qbuf fndecl 0 2707 NULL
132186 +disable_so_snd_trident_mixer_fndecl_2712 snd_trident_mixer fndecl 0 2712 NULL
132187 +disable_so_nvme_trans_security_protocol_fndecl_2717 nvme_trans_security_protocol fndecl 0 2717 NULL nohasharray
132188 +disable_so_bytesused_v4l2_buffer_2717 bytesused v4l2_buffer 0 2717 &disable_so_nvme_trans_security_protocol_fndecl_2717
132189 +disable_so_rfd_ftl_writesect_fndecl_2728 rfd_ftl_writesect fndecl 0 2728 NULL
132190 +disable_so_nvme_trans_report_luns_fndecl_2749 nvme_trans_report_luns fndecl 0 2749 NULL
132191 +disable_so_kone_init_specials_fndecl_2764 kone_init_specials fndecl 0 2764 NULL
132192 +disable_so_btrfs_write_out_cache_fndecl_2772 btrfs_write_out_cache fndecl 0 2772 NULL
132193 +disable_so_mptctl_readtest_fndecl_2780 mptctl_readtest fndecl 0 2780 NULL
132194 +disable_so_addr_vring_desc_2784 addr vring_desc 0 2784 NULL
132195 +disable_so_uhci_result_common_fndecl_2788 uhci_result_common fndecl 0 2788 NULL
132196 +disable_so_cciss_getfirmver_fndecl_2793 cciss_getfirmver fndecl 0 2793 NULL
132197 +disable_so_ixgbe_ptp_set_timestamp_mode_fndecl_2796 ixgbe_ptp_set_timestamp_mode fndecl 0 2796 NULL nohasharray
132198 +disable_so_parse_block_size_fndecl_2796 parse_block_size fndecl 0 2796 &disable_so_ixgbe_ptp_set_timestamp_mode_fndecl_2796
132199 +disable_so_trim_no_bitmap_fndecl_2799 trim_no_bitmap fndecl 0 2799 NULL
132200 +disable_so_btrfs_ioctl_fitrim_fndecl_2802 btrfs_ioctl_fitrim fndecl 0 2802 NULL nohasharray
132201 +disable_so_si_copy_vbios_mc_reg_table_fndecl_2802 si_copy_vbios_mc_reg_table fndecl 0 2802 &disable_so_btrfs_ioctl_fitrim_fndecl_2802
132202 +disable_so_flashgchar_fndecl_2807 flashgchar fndecl 0 2807 NULL
132203 +disable_so_mutex_lock_interruptible_fndecl_2810 mutex_lock_interruptible fndecl 0 2810 NULL
132204 +disable_so_tmff_init_fndecl_2815 tmff_init fndecl 0 2815 NULL
132205 +disable_so__sp2d_min_pg_fndecl_2819 _sp2d_min_pg fndecl 0 2819 NULL
132206 +disable_so_rtsx_pci_dma_map_sg_fndecl_2820 rtsx_pci_dma_map_sg fndecl 0 2820 NULL nohasharray
132207 +disable_so_lookup_metapath_fndecl_2820 lookup_metapath fndecl 0 2820 &disable_so_rtsx_pci_dma_map_sg_fndecl_2820
132208 +disable_so_binder_ioctl_write_read_fndecl_2825 binder_ioctl_write_read fndecl 0 2825 NULL
132209 +disable_so_flashcard_fndecl_2828 flashcard fndecl 0 2828 NULL
132210 +disable_so_ocfs2_reserve_cluster_bitmap_bits_fndecl_2835 ocfs2_reserve_cluster_bitmap_bits fndecl 0 2835 NULL
132211 +disable_so_cachefiles_check_object_xattr_fndecl_2838 cachefiles_check_object_xattr fndecl 0 2838 NULL
132212 +disable_so_ib_mad_post_receive_mads_fndecl_2840 ib_mad_post_receive_mads fndecl 0 2840 NULL
132213 +disable_so_ib_query_qp_fndecl_2842 ib_query_qp fndecl 0 2842 NULL
132214 +disable_so_snd_cs46xx_create_fndecl_2847 snd_cs46xx_create fndecl 0 2847 NULL
132215 +disable_so_mlx4_multi_func_init_fndecl_2849 mlx4_multi_func_init fndecl 0 2849 NULL
132216 +disable_so_mlx5_cmd_status_to_err_v2_fndecl_2851 mlx5_cmd_status_to_err_v2 fndecl 0 2851 NULL
132217 +disable_so_vmw_kms_init_screen_object_display_fndecl_2858 vmw_kms_init_screen_object_display fndecl 0 2858 NULL
132218 +disable_so_btrfsic_handle_extent_data_fndecl_2864 btrfsic_handle_extent_data fndecl 0 2864 NULL
132219 +disable_so_nilfs_segctor_wait_fndecl_2866 nilfs_segctor_wait fndecl 0 2866 NULL nohasharray
132220 +disable_so_zd_usb_read_fw_fndecl_2866 zd_usb_read_fw fndecl 0 2866 &disable_so_nilfs_segctor_wait_fndecl_2866
132221 +disable_so_lcd_probe_fndecl_2867 lcd_probe fndecl 0 2867 NULL
132222 +disable_so_get_next_block_fndecl_2868 get_next_block fndecl 0 2868 NULL
132223 +disable_so_create_speaker_out_ctls_fndecl_2871 create_speaker_out_ctls fndecl 0 2871 NULL
132224 +disable_so_rndis_error_status_fndecl_2884 rndis_error_status fndecl 0 2884 NULL
132225 +disable_so_find_free_port_fndecl_2891 find_free_port fndecl 0 2891 NULL
132226 +disable_so_erst_check_table_fndecl_2896 erst_check_table fndecl 0 2896 NULL
132227 +disable_so_right_margin_fb_videomode_2901 right_margin fb_videomode 0 2901 NULL
132228 +disable_so_mem_rw_fndecl_2902 mem_rw fndecl 0 2902 NULL nohasharray
132229 +disable_so_sb1000_end_get_set_command_fndecl_2902 sb1000_end_get_set_command fndecl 0 2902 &disable_so_mem_rw_fndecl_2902
132230 +disable_so_get_results_fndecl_2913 get_results fndecl 0 2913 NULL
132231 +disable_so_jffs2_build_inode_fragtree_fndecl_2915 jffs2_build_inode_fragtree fndecl 0 2915 NULL
132232 +disable_so_reset_atmel_card_fndecl_2924 reset_atmel_card fndecl 0 2924 NULL
132233 +disable_so_tx_ring_count_ixgbevf_adapter_2933 tx_ring_count ixgbevf_adapter 0 2933 NULL
132234 +disable_so_rtsx_pci_init_hw_fndecl_2938 rtsx_pci_init_hw fndecl 0 2938 NULL
132235 +disable_so_addrconf_set_dstaddr_fndecl_2945 addrconf_set_dstaddr fndecl 0 2945 NULL
132236 +disable_so_tx_idx_dchannel_2947 tx_idx dchannel 0 2947 NULL
132237 +disable_so_pci_request_region_fndecl_2951 pci_request_region fndecl 0 2951 NULL
132238 +disable_so_reiserfs_paste_into_item_fndecl_2953 reiserfs_paste_into_item fndecl 0 2953 NULL
132239 +disable_so___kfifo_alloc_fndecl_2958 __kfifo_alloc fndecl 0 2958 NULL
132240 +disable_so_pn533_dep_link_up_fndecl_2969 pn533_dep_link_up fndecl 0 2969 NULL nohasharray
132241 +disable_so_qlcnic_83xx_check_heartbeat_fndecl_2969 qlcnic_83xx_check_heartbeat fndecl 0 2969 &disable_so_pn533_dep_link_up_fndecl_2969
132242 +disable_so_reiserfs_new_directory_fndecl_2988 reiserfs_new_directory fndecl 0 2988 NULL
132243 +disable_so_validate_init_fndecl_3001 validate_init fndecl 0 3001 NULL
132244 +disable_so_mwl8k_cmd_set_pre_scan_fndecl_3018 mwl8k_cmd_set_pre_scan fndecl 0 3018 NULL
132245 +disable_so_dev_ifsioc_locked_fndecl_3019 dev_ifsioc_locked fndecl 0 3019 NULL
132246 +disable_so_ptrace_setsiginfo_fndecl_3034 ptrace_setsiginfo fndecl 0 3034 NULL
132247 +disable_so_xfs_bulkstat_grab_ichunk_fndecl_3041 xfs_bulkstat_grab_ichunk fndecl 0 3041 NULL
132248 +disable_so_add_res_tree_fndecl_3044 add_res_tree fndecl 0 3044 NULL
132249 +disable_so_input_open_device_fndecl_3048 input_open_device fndecl 0 3048 NULL
132250 +disable_so_prepare_to_wait_event_fndecl_3060 prepare_to_wait_event fndecl 0 3060 NULL
132251 +disable_so_gref_grant_3074 gref grant 0 3074 NULL
132252 +disable_so_enic_set_niccfg_fndecl_3078 enic_set_niccfg fndecl 0 3078 NULL
132253 +disable_so_brcmf_p2p_escan_fndecl_3080 brcmf_p2p_escan fndecl 0 3080 NULL nohasharray
132254 +disable_so_mnt_clone_write_fndecl_3080 mnt_clone_write fndecl 0 3080 &disable_so_brcmf_p2p_escan_fndecl_3080
132255 +disable_so_ubi_io_read_fndecl_3084 ubi_io_read fndecl 0 3084 NULL nohasharray
132256 +disable_so_cx88_ir_init_fndecl_3084 cx88_ir_init fndecl 0 3084 &disable_so_ubi_io_read_fndecl_3084
132257 +disable_so_cluster_next_swap_info_struct_3087 cluster_next swap_info_struct 0 3087 NULL
132258 +disable_so_as102_fw_upload_fndecl_3094 as102_fw_upload fndecl 0 3094 NULL
132259 +disable_so_mlx4_cmd_use_events_fndecl_3101 mlx4_cmd_use_events fndecl 0 3101 NULL
132260 +disable_so_nouveau_page_flip_emit_fndecl_3110 nouveau_page_flip_emit fndecl 0 3110 NULL
132261 +disable_so_fb_alloc_cmap_gfp_fndecl_3115 fb_alloc_cmap_gfp fndecl 0 3115 NULL
132262 +disable_so_make_rate_fndecl_3144 make_rate fndecl 0 3144 NULL
132263 +disable_so_map_id_up_fndecl_3145 map_id_up fndecl 0 3145 NULL
132264 +disable_so_iseg_base_mlx5_core_dev_3151 iseg_base mlx5_core_dev 0 3151 NULL
132265 +disable_so_receive_uuids_fndecl_3156 receive_uuids fndecl 0 3156 NULL
132266 +disable_so_mmio_size_drm_mga_private_3160 mmio_size drm_mga_private 0 3160 NULL
132267 +disable_so_wl12xx_acx_sg_cfg_fndecl_3163 wl12xx_acx_sg_cfg fndecl 0 3163 NULL nohasharray
132268 +disable_so_dib0700_rc_setup_fndecl_3163 dib0700_rc_setup fndecl 0 3163 &disable_so_wl12xx_acx_sg_cfg_fndecl_3163
132269 +disable_so_parse_parts_fndecl_3169 parse_parts fndecl 0 3169 NULL
132270 +disable_so_usb_serial_generic_submit_read_urb_fndecl_3171 usb_serial_generic_submit_read_urb fndecl 0 3171 NULL
132271 +disable_so_vfio_iommu_type1_ioctl_fndecl_3178 vfio_iommu_type1_ioctl fndecl 0 3178 NULL nohasharray
132272 +disable_so_stinger_connect_fndecl_3178 stinger_connect fndecl 0 3178 &disable_so_vfio_iommu_type1_ioctl_fndecl_3178
132273 +disable_so_nvme_trans_supported_vpd_pages_fndecl_3196 nvme_trans_supported_vpd_pages fndecl 0 3196 NULL
132274 +disable_so_hidp_sock_ioctl_fndecl_3199 hidp_sock_ioctl fndecl 0 3199 NULL
132275 +disable_so_sdr_adc_freq_vivid_dev_3202 sdr_adc_freq vivid_dev 0 3202 NULL
132276 +disable_so_sm501fb_start_fndecl_3203 sm501fb_start fndecl 0 3203 NULL
132277 +disable_so_wl1251_cmd_read_memory_fndecl_3204 wl1251_cmd_read_memory fndecl 0 3204 NULL
132278 +disable_so_ocrdma_copy_cq_uresp_fndecl_3210 ocrdma_copy_cq_uresp fndecl 0 3210 NULL
132279 +disable_so_copy_params_fndecl_3213 copy_params fndecl 0 3213 NULL nohasharray
132280 +disable_so_tx_dma_spi_transfer_3213 tx_dma spi_transfer 0 3213 &disable_so_copy_params_fndecl_3213
132281 +disable_so_iwl_mvm_switch_to_d3_fndecl_3217 iwl_mvm_switch_to_d3 fndecl 0 3217 NULL
132282 +disable_so_pvr2_hdw_gpio_chg_out_fndecl_3221 pvr2_hdw_gpio_chg_out fndecl 0 3221 NULL
132283 +disable_so_usb6fire_midi_init_fndecl_3224 usb6fire_midi_init fndecl 0 3224 NULL
132284 +disable_so_i1480_usb_create_fndecl_3226 i1480_usb_create fndecl 0 3226 NULL
132285 +disable_so_command_setexposure_fndecl_3231 command_setexposure fndecl 0 3231 NULL
132286 +disable_so___insert_pg_pool_fndecl_3233 __insert_pg_pool fndecl 0 3233 NULL
132287 +disable_so_sq_num_entries_c4iw_qp_attributes_3234 sq_num_entries c4iw_qp_attributes 0 3234 NULL
132288 +disable_so_smsc95xx_autosuspend_fndecl_3244 smsc95xx_autosuspend fndecl 0 3244 NULL nohasharray
132289 +disable_so_sctp_del_bind_addr_fndecl_3244 sctp_del_bind_addr fndecl 0 3244 &disable_so_smsc95xx_autosuspend_fndecl_3244
132290 +disable_so_cmpc_add_acpi_notify_device_fndecl_3255 cmpc_add_acpi_notify_device fndecl 0 3255 NULL
132291 +disable_so_vfio_msi_enable_fndecl_3257 vfio_msi_enable fndecl 0 3257 NULL
132292 +disable_so_snd_pcm_open_file_fndecl_3264 snd_pcm_open_file fndecl 0 3264 NULL
132293 +disable_so_vub300_response_error_fndecl_3270 vub300_response_error fndecl 0 3270 NULL nohasharray
132294 +disable_so_acpi_thermal_get_trip_points_fndecl_3270 acpi_thermal_get_trip_points fndecl 0 3270 &disable_so_vub300_response_error_fndecl_3270
132295 +disable_so_altera_set_ir_post_fndecl_3271 altera_set_ir_post fndecl 0 3271 NULL
132296 +disable_so_ath10k_ce_send_nolock_fndecl_3274 ath10k_ce_send_nolock fndecl 0 3274 NULL
132297 +disable_so_copy_ctl_value_from_user_fndecl_3276 copy_ctl_value_from_user fndecl 0 3276 NULL
132298 +disable_so_error_mmc_data_3279 error mmc_data 0 3279 NULL
132299 +disable_so_check_stack_boundary_fndecl_3282 check_stack_boundary fndecl 0 3282 NULL nohasharray
132300 +disable_so_ms_write_bytes_fndecl_3282 ms_write_bytes fndecl 0 3282 &disable_so_check_stack_boundary_fndecl_3282
132301 +disable_so_zd1201_drvr_start_fndecl_3286 zd1201_drvr_start fndecl 0 3286 NULL
132302 +disable_so_check_eofblocks_fl_fndecl_3293 check_eofblocks_fl fndecl 0 3293 NULL
132303 +disable_so_eeepc_acpi_init_fndecl_3300 eeepc_acpi_init fndecl 0 3300 NULL
132304 +disable_so_mpt2sas_base_attach_fndecl_3302 mpt2sas_base_attach fndecl 0 3302 NULL
132305 +disable_so_vmw_context_init_fndecl_3303 vmw_context_init fndecl 0 3303 NULL
132306 +disable_so_qxl_create_monitors_object_fndecl_3308 qxl_create_monitors_object fndecl 0 3308 NULL
132307 +disable_so_srpt_ch_qp_rtr_fndecl_3316 srpt_ch_qp_rtr fndecl 0 3316 NULL
132308 +disable_so_vmw_stream_init_fndecl_3319 vmw_stream_init fndecl 0 3319 NULL
132309 +disable_so_pn533_acr122_poweron_rdr_fndecl_3339 pn533_acr122_poweron_rdr fndecl 0 3339 NULL nohasharray
132310 +disable_so_cw1200_indirect_read_fndecl_3339 cw1200_indirect_read fndecl 0 3339 &disable_so_pn533_acr122_poweron_rdr_fndecl_3339
132311 +disable_so_pkt_setup_dev_fndecl_3344 pkt_setup_dev fndecl 0 3344 NULL
132312 +disable_so_ext4_finish_convert_inline_dir_fndecl_3350 ext4_finish_convert_inline_dir fndecl 0 3350 NULL
132313 +disable_so_try_preserve_large_page_fndecl_3359 try_preserve_large_page fndecl 0 3359 NULL
132314 +disable_so_acpi_ex_opcode_3A_1T_1R_fndecl_3369 acpi_ex_opcode_3A_1T_1R fndecl 0 3369 NULL
132315 +disable_so_iio_map_array_register_fndecl_3374 iio_map_array_register fndecl 0 3374 NULL
132316 +disable_so_mwifiex_cmd_802_11_subsc_evt_fndecl_3375 mwifiex_cmd_802_11_subsc_evt fndecl 0 3375 NULL
132317 +disable_so_pccard_loop_tuple_fndecl_3378 pccard_loop_tuple fndecl 0 3378 NULL
132318 +disable_so_link_free_space_fndecl_3379 link_free_space fndecl 0 3379 NULL
132319 +disable_so_phys_hw_bank_3381 phys hw_bank 0 3381 NULL
132320 +disable_so_pgoff_vm_fault_3385 pgoff vm_fault 0 3385 NULL
132321 +disable_so_xfs_bmap_isaeof_fndecl_3401 xfs_bmap_isaeof fndecl 0 3401 NULL
132322 +disable_so_ip6_mroute_setsockopt_fndecl_3406 ip6_mroute_setsockopt fndecl 0 3406 NULL
132323 +disable_so_get_port_status_fndecl_3424 get_port_status fndecl 0 3424 NULL
132324 +disable_so_resprc_efx_mcdi_iface_3430 resprc efx_mcdi_iface 0 3430 NULL
132325 +disable_so_saa7706h_set_reg16_fndecl_3435 saa7706h_set_reg16 fndecl 0 3435 NULL
132326 +disable_so_command_setcolourbalance_fndecl_3441 command_setcolourbalance fndecl 0 3441 NULL nohasharray
132327 +disable_so_wl1271_acx_sta_rate_policies_fndecl_3441 wl1271_acx_sta_rate_policies fndecl 0 3441 &disable_so_command_setcolourbalance_fndecl_3441
132328 +disable_so_pti_pci_probe_fndecl_3442 pti_pci_probe fndecl 0 3442 NULL
132329 +disable_so_uwb_rc_dev_addr_mgmt_fndecl_3445 uwb_rc_dev_addr_mgmt fndecl 0 3445 NULL
132330 +disable_so_agp_3_5_enable_fndecl_3452 agp_3_5_enable fndecl 0 3452 NULL
132331 +disable_so_rpipe_check_aim_fndecl_3456 rpipe_check_aim fndecl 0 3456 NULL
132332 +disable_so_qib_qsfp_write_fndecl_3477 qib_qsfp_write fndecl 0 3477 NULL nohasharray
132333 +disable_so_nftl_scan_bbt_fndecl_3477 nftl_scan_bbt fndecl 0 3477 &disable_so_qib_qsfp_write_fndecl_3477
132334 +disable_so_flashpchar_fndecl_3481 flashpchar fndecl 0 3481 NULL
132335 +disable_so_gen8_ppgtt_init_fndecl_3483 gen8_ppgtt_init fndecl 0 3483 NULL
132336 +disable_so_ixgbe_open_fndecl_3492 ixgbe_open fndecl 0 3492 NULL
132337 +disable_so_hotkey_init_fndecl_3500 hotkey_init fndecl 0 3500 NULL
132338 +disable_so_set_pages_wb_fndecl_3502 set_pages_wb fndecl 0 3502 NULL
132339 +disable_so_kfifo_copy_to_user_fndecl_3509 kfifo_copy_to_user fndecl 0 3509 NULL
132340 +disable_so_jbd2_journal_skip_recovery_fndecl_3515 jbd2_journal_skip_recovery fndecl 0 3515 NULL
132341 +disable_so_data_blkaddr_dnode_of_data_3521 data_blkaddr dnode_of_data 0 3521 NULL
132342 +disable_so_ipath_user_sdma_coalesce_fndecl_3523 ipath_user_sdma_coalesce fndecl 0 3523 NULL
132343 +disable_so_cross_eof_fndecl_3526 cross_eof fndecl 0 3526 NULL
132344 +disable_so_sys_rt_tgsigqueueinfo_fndecl_3528 sys_rt_tgsigqueueinfo fndecl 0 3528 NULL
132345 +disable_so_cipso_v4_gentag_rng_fndecl_3532 cipso_v4_gentag_rng fndecl 0 3532 NULL
132346 +disable_so_btrfs_qgroup_reserve_fndecl_3543 btrfs_qgroup_reserve fndecl 0 3543 NULL
132347 +disable_so_ocfs2_read_xattr_bucket_fndecl_3553 ocfs2_read_xattr_bucket fndecl 0 3553 NULL
132348 +disable_so_dlm_user_cancel_fndecl_3558 dlm_user_cancel fndecl 0 3558 NULL
132349 +disable_so_roles_init_fndecl_3571 roles_init fndecl 0 3571 NULL
132350 +disable_so_snd_solo_pcm_copy_fndecl_3572 snd_solo_pcm_copy fndecl 0 3572 NULL
132351 +disable_so__snd_pcm_new_fndecl_3575 _snd_pcm_new fndecl 0 3575 NULL
132352 +disable_so_open_substream_fndecl_3592 open_substream fndecl 0 3592 NULL
132353 +disable_so_xfs_alloc_ag_vextent_size_fndecl_3599 xfs_alloc_ag_vextent_size fndecl 0 3599 NULL
132354 +disable_so_hash_net6_add_fndecl_3600 hash_net6_add fndecl 0 3600 NULL
132355 +disable_so_viacam_probe_fndecl_3606 viacam_probe fndecl 0 3606 NULL
132356 +disable_so_xenbus_probe_node_fndecl_3611 xenbus_probe_node fndecl 0 3611 NULL
132357 +disable_so_net_rx_queue_update_kobjects_fndecl_3617 net_rx_queue_update_kobjects fndecl 0 3617 NULL
132358 +disable_so_drm_universal_plane_init_fndecl_3619 drm_universal_plane_init fndecl 0 3619 NULL
132359 +disable_so_pyra_get_profile_settings_fndecl_3620 pyra_get_profile_settings fndecl 0 3620 NULL
132360 +disable_so_bytes_btrfs_dio_private_3624 bytes btrfs_dio_private 0 3624 NULL
132361 +disable_so_add_res_range_fndecl_3629 add_res_range fndecl 0 3629 NULL
132362 +disable_so_pega_rfkill_init_fndecl_3630 pega_rfkill_init fndecl 0 3630 NULL
132363 +disable_so_vmci_transport_queue_pair_alloc_fndecl_3639 vmci_transport_queue_pair_alloc fndecl 0 3639 NULL
132364 +disable_so_t4vf_wr_mbox_core_fndecl_3640 t4vf_wr_mbox_core fndecl 0 3640 NULL
132365 +disable_so_pyra_init_specials_fndecl_3647 pyra_init_specials fndecl 0 3647 NULL
132366 +disable_so_pcxhr_send_msg_nolock_fndecl_3648 pcxhr_send_msg_nolock fndecl 0 3648 NULL
132367 +disable_so_i40e_vsi_mem_alloc_fndecl_3663 i40e_vsi_mem_alloc fndecl 0 3663 NULL
132368 +disable_so_megasas_set_crash_dump_params_ioctl_fndecl_3664 megasas_set_crash_dump_params_ioctl fndecl 0 3664 NULL
132369 +disable_so_ide_config_fndecl_3684 ide_config fndecl 0 3684 NULL
132370 +disable_so_vm_insert_page_fndecl_3687 vm_insert_page fndecl 0 3687 NULL
132371 +disable_so_get_labels_fndecl_3704 get_labels fndecl 0 3704 NULL
132372 +disable_so_ip_getsockopt_fndecl_3711 ip_getsockopt fndecl 0 3711 NULL
132373 +disable_so_byte_len_ib_wc_3716 byte_len ib_wc 0 3716 NULL
132374 +disable_so_usb_mdc800_init_fndecl_3718 usb_mdc800_init fndecl 0 3718 NULL
132375 +disable_so_get_v4l2_edid32_fndecl_3722 get_v4l2_edid32 fndecl 0 3722 NULL
132376 +disable_so___media_entity_setup_link_notify_fndecl_3727 __media_entity_setup_link_notify fndecl 0 3727 NULL
132377 +disable_so_mcs_wrap_fir_skb_fndecl_3729 mcs_wrap_fir_skb fndecl 0 3729 NULL
132378 +disable_so_uwb_rsv_establish_fndecl_3733 uwb_rsv_establish fndecl 0 3733 NULL
132379 +disable_so_snd_seq_event_dup_fndecl_3744 snd_seq_event_dup fndecl 0 3744 NULL
132380 +disable_so_fsloc_parse_fndecl_3745 fsloc_parse fndecl 0 3745 NULL
132381 +disable_so_ntrig_probe_fndecl_3757 ntrig_probe fndecl 0 3757 NULL
132382 +disable_so_cirrus_vram_init_fndecl_3758 cirrus_vram_init fndecl 0 3758 NULL
132383 +disable_so_sas_configure_present_fndecl_3760 sas_configure_present fndecl 0 3760 NULL
132384 +disable_so_mlx4_init_slave_fndecl_3765 mlx4_init_slave fndecl 0 3765 NULL
132385 +disable_so_pvr2_ioread_avail_fndecl_3770 pvr2_ioread_avail fndecl 0 3770 NULL
132386 +disable_so_kvm_vm_ioctl_assign_irq_fndecl_3776 kvm_vm_ioctl_assign_irq fndecl 0 3776 NULL
132387 +disable_so_snd_hda_bus_new_fndecl_3781 snd_hda_bus_new fndecl 0 3781 NULL
132388 +disable_so_savage_verify_state_s4_fndecl_3798 savage_verify_state_s4 fndecl 0 3798 NULL
132389 +disable_so_b43_plcp_get_bitrate_idx_cck_fndecl_3842 b43_plcp_get_bitrate_idx_cck fndecl 0 3842 NULL
132390 +disable_so_btrfs_dirty_pages_fndecl_3848 btrfs_dirty_pages fndecl 0 3848 NULL nohasharray
132391 +disable_so_slow_avc_audit_fndecl_3848 slow_avc_audit fndecl 0 3848 &disable_so_btrfs_dirty_pages_fndecl_3848
132392 +disable_so_iwl_mvm_load_ucode_wait_alive_fndecl_3859 iwl_mvm_load_ucode_wait_alive fndecl 0 3859 NULL
132393 +disable_so_verify_reserved_gdb_fndecl_3861 verify_reserved_gdb fndecl 0 3861 NULL
132394 +disable_so_iwl_phy_db_get_section_data_fndecl_3869 iwl_phy_db_get_section_data fndecl 0 3869 NULL
132395 +disable_so_i40e_alloc_adminq_asq_ring_fndecl_3882 i40e_alloc_adminq_asq_ring fndecl 0 3882 NULL
132396 +disable_so_arch_gnttab_init_fndecl_3893 arch_gnttab_init fndecl 0 3893 NULL nohasharray
132397 +disable_so_read_page_fndecl_3893 read_page fndecl 0 3893 &disable_so_arch_gnttab_init_fndecl_3893
132398 +disable_so_xfs_btree_new_root_fndecl_3895 xfs_btree_new_root fndecl 0 3895 NULL
132399 +disable_so_ieee802154_hdr_push_addr_fndecl_3915 ieee802154_hdr_push_addr fndecl 0 3915 NULL
132400 +disable_so_snd_hdsp_create_midi_fndecl_3916 snd_hdsp_create_midi fndecl 0 3916 NULL
132401 +disable_so_drm_debugfs_init_fndecl_3923 drm_debugfs_init fndecl 0 3923 NULL
132402 +disable_so_btrfs_ioctl_defrag_fndecl_3936 btrfs_ioctl_defrag fndecl 0 3936 NULL
132403 +disable_so_write_boot_mem_fndecl_3940 write_boot_mem fndecl 0 3940 NULL
132404 +disable_so_aac_intr_normal_fndecl_3942 aac_intr_normal fndecl 0 3942 NULL
132405 +disable_so_ath6kl_send_go_probe_resp_fndecl_3946 ath6kl_send_go_probe_resp fndecl 0 3946 NULL
132406 +disable_so__efx_mcdi_rpc_async_fndecl_3948 _efx_mcdi_rpc_async fndecl 0 3948 NULL
132407 +disable_so_resync_min_mddev_3957 resync_min mddev 0 3957 NULL
132408 +disable_so_airspy_ctrl_msg_fndecl_3964 airspy_ctrl_msg fndecl 0 3964 NULL
132409 +disable_so_nv50_crtc_create_fndecl_3969 nv50_crtc_create fndecl 0 3969 NULL
132410 +disable_so_ocfs2_block_check_validate_fndecl_3982 ocfs2_block_check_validate fndecl 0 3982 NULL
132411 +disable_so_tp_len_tpacket2_hdr_3990 tp_len tpacket2_hdr 0 3990 NULL
132412 +disable_so_st_gyro_buffer_postenable_fndecl_3995 st_gyro_buffer_postenable fndecl 0 3995 NULL
132413 +disable_so_buffer_bytes_max_snd_pcm_hardware_4001 buffer_bytes_max snd_pcm_hardware 0 4001 NULL
132414 +disable_so_jffs2_add_frag_to_fragtree_fndecl_4009 jffs2_add_frag_to_fragtree fndecl 0 4009 NULL
132415 +disable_so_build_deemphasis_fndecl_4023 build_deemphasis fndecl 0 4023 NULL
132416 +disable_so_vmw_fb_init_fndecl_4035 vmw_fb_init fndecl 0 4035 NULL nohasharray
132417 +disable_so_rx_buf_sz_netdev_private_4035 rx_buf_sz netdev_private 0 4035 &disable_so_vmw_fb_init_fndecl_4035
132418 +disable_so_brcmf_sdio_txpkt_hdalign_fndecl_4040 brcmf_sdio_txpkt_hdalign fndecl 0 4040 NULL nohasharray
132419 +disable_so_mgr_get_resource_fndecl_4040 mgr_get_resource fndecl 0 4040 &disable_so_brcmf_sdio_txpkt_hdalign_fndecl_4040
132420 +disable_so_acpi_video_bus_add_fndecl_4041 acpi_video_bus_add fndecl 0 4041 NULL
132421 +disable_so_nl80211_parse_wowlan_tcp_fndecl_4048 nl80211_parse_wowlan_tcp fndecl 0 4048 NULL
132422 +disable_so_btrfs_add_root_ref_fndecl_4049 btrfs_add_root_ref fndecl 0 4049 NULL
132423 +disable_so_pvr2_hdw_gpio_chg_dir_fndecl_4058 pvr2_hdw_gpio_chg_dir fndecl 0 4058 NULL
132424 +disable_so_i40e_acquire_nvm_fndecl_4059 i40e_acquire_nvm fndecl 0 4059 NULL nohasharray
132425 +disable_so_wanxl_pci_init_one_fndecl_4059 wanxl_pci_init_one fndecl 0 4059 &disable_so_i40e_acquire_nvm_fndecl_4059
132426 +disable_so_fscache_wait_for_operation_activation_fndecl_4064 fscache_wait_for_operation_activation fndecl 0 4064 NULL
132427 +disable_so_nx_p3_sre_macaddr_change_fndecl_4068 nx_p3_sre_macaddr_change fndecl 0 4068 NULL
132428 +disable_so_input_ff_create_fndecl_4075 input_ff_create fndecl 0 4075 NULL
132429 +disable_so_osst_ioctl_fndecl_4077 osst_ioctl fndecl 0 4077 NULL
132430 +disable_so_t4_wr_mbox_meat_fndecl_4090 t4_wr_mbox_meat fndecl 0 4090 NULL
132431 +disable_so_v4l2_device_register_fndecl_4096 v4l2_device_register fndecl 0 4096 NULL
132432 +disable_so_ae_res_sd_4099 ae_res sd 0 4099 NULL
132433 +disable_so_asd_read_ocm_dir_fndecl_4102 asd_read_ocm_dir fndecl 0 4102 NULL
132434 +disable_so_carl9170_usb_send_rx_irq_urb_fndecl_4103 carl9170_usb_send_rx_irq_urb fndecl 0 4103 NULL
132435 +disable_so_ata_pci_bmdma_init_one_fndecl_4105 ata_pci_bmdma_init_one fndecl 0 4105 NULL
132436 +disable_so_iwlagn_commit_rxon_fndecl_4106 iwlagn_commit_rxon fndecl 0 4106 NULL
132437 +disable_so_blkno_xfs_da_args_4112 blkno xfs_da_args 0 4112 NULL
132438 +disable_so_btrfs_write_marked_extents_fndecl_4123 btrfs_write_marked_extents fndecl 0 4123 NULL
132439 +disable_so_osst_recover_wait_frame_fndecl_4133 osst_recover_wait_frame fndecl 0 4133 NULL
132440 +disable_so_ocfs2_read_group_descriptor_fndecl_4136 ocfs2_read_group_descriptor fndecl 0 4136 NULL nohasharray
132441 +disable_so_pss_coproc_ioctl_fndecl_4136 pss_coproc_ioctl fndecl 0 4136 &disable_so_ocfs2_read_group_descriptor_fndecl_4136
132442 +disable_so_cciss_getluninfo_fndecl_4139 cciss_getluninfo fndecl 0 4139 NULL
132443 +disable_so_fsp_init_fndecl_4146 fsp_init fndecl 0 4146 NULL
132444 +disable_so_broadsheet_spiflash_write_sector_fndecl_4156 broadsheet_spiflash_write_sector fndecl 0 4156 NULL nohasharray
132445 +disable_so_num_msix_vec_be_adapter_4156 num_msix_vec be_adapter 0 4156 &disable_so_broadsheet_spiflash_write_sector_fndecl_4156
132446 +disable_so_cond_read_bool_fndecl_4159 cond_read_bool fndecl 0 4159 NULL
132447 +disable_so_check_acpi_ids_fndecl_4169 check_acpi_ids fndecl 0 4169 NULL
132448 +disable_so_snd_pcm_oss_get_active_substream_fndecl_4181 snd_pcm_oss_get_active_substream fndecl 0 4181 NULL
132449 +disable_so_ttm_mem_init_kernel_zone_fndecl_4186 ttm_mem_init_kernel_zone fndecl 0 4186 NULL
132450 +disable_so_mwifiex_set_frag_fndecl_4197 mwifiex_set_frag fndecl 0 4197 NULL
132451 +disable_so_xfs_bmap_add_extent_hole_real_fndecl_4199 xfs_bmap_add_extent_hole_real fndecl 0 4199 NULL
132452 +disable_so_key_validate_fndecl_4201 key_validate fndecl 0 4201 NULL
132453 +disable_so_vfs_getxattr_fndecl_4203 vfs_getxattr fndecl 0 4203 NULL
132454 +disable_so___vfs_setxattr_noperm_fndecl_4205 __vfs_setxattr_noperm fndecl 0 4205 NULL
132455 +disable_so_mlx4_ib_mcg_port_init_fndecl_4208 mlx4_ib_mcg_port_init fndecl 0 4208 NULL
132456 +disable_so_nci_hci_set_param_fndecl_4215 nci_hci_set_param fndecl 0 4215 NULL
132457 +disable_so_iwl_dbgfs_disable_power_off_write_fndecl_4220 iwl_dbgfs_disable_power_off_write fndecl 0 4220 NULL
132458 +disable_so_dlm_lock_fndecl_4225 dlm_lock fndecl 0 4225 NULL
132459 +disable_so_oti6858_open_fndecl_4249 oti6858_open fndecl 0 4249 NULL
132460 +disable_so_user_width_soc_camera_device_4262 user_width soc_camera_device 0 4262 NULL
132461 +disable_so_fuse_ioctl_copy_user_fndecl_4279 fuse_ioctl_copy_user fndecl 0 4279 NULL
132462 +disable_so_dvd_read_bca_fndecl_4284 dvd_read_bca fndecl 0 4284 NULL
132463 +disable_so_add_pending_dir_move_fndecl_4285 add_pending_dir_move fndecl 0 4285 NULL
132464 +disable_so_read_index_list_fndecl_4294 read_index_list fndecl 0 4294 NULL
132465 +disable_so_si_parse_power_table_fndecl_4296 si_parse_power_table fndecl 0 4296 NULL
132466 +disable_so_uvc_ctrl_fill_xu_info_fndecl_4304 uvc_ctrl_fill_xu_info fndecl 0 4304 NULL
132467 +disable_so___ath_regd_init_fndecl_4314 __ath_regd_init fndecl 0 4314 NULL nohasharray
132468 +disable_so_tfrc_li_init_fndecl_4314 tfrc_li_init fndecl 0 4314 &disable_so___ath_regd_init_fndecl_4314
132469 +disable_so_zd_ioread32v_locked_fndecl_4322 zd_ioread32v_locked fndecl 0 4322 NULL
132470 +disable_so_ethtool_set_rxfh_indir_fndecl_4336 ethtool_set_rxfh_indir fndecl 0 4336 NULL
132471 +disable_so_snd_ctl_elem_remove_fndecl_4337 snd_ctl_elem_remove fndecl 0 4337 NULL
132472 +disable_so_cxgb4vf_pci_probe_fndecl_4349 cxgb4vf_pci_probe fndecl 0 4349 NULL
132473 +disable_so_refill_pi_state_cache_fndecl_4358 refill_pi_state_cache fndecl 0 4358 NULL
132474 +disable_so_lanai_pci_start_fndecl_4362 lanai_pci_start fndecl 0 4362 NULL
132475 +disable_so_check_reg_arg_fndecl_4371 check_reg_arg fndecl 0 4371 NULL nohasharray
132476 +disable_so_kfd_build_sysfs_node_entry_fndecl_4371 kfd_build_sysfs_node_entry fndecl 0 4371 &disable_so_check_reg_arg_fndecl_4371
132477 +disable_so_mwifiex_ret_reg_access_fndecl_4373 mwifiex_ret_reg_access fndecl 0 4373 NULL
132478 +disable_so_vme_register_bridge_fndecl_4375 vme_register_bridge fndecl 0 4375 NULL
132479 +disable_so_adp5589_probe_fndecl_4379 adp5589_probe fndecl 0 4379 NULL
132480 +disable_so_sctp_cmd_interpreter_fndecl_4381 sctp_cmd_interpreter fndecl 0 4381 NULL
132481 +disable_so_adpt_i2o_passthru_fndecl_4383 adpt_i2o_passthru fndecl 0 4383 NULL
132482 +disable_so_security_inode_setxattr_fndecl_4385 security_inode_setxattr fndecl 0 4385 NULL
132483 +disable_so_rio_setup_inb_dbell_fndecl_4391 rio_setup_inb_dbell fndecl 0 4391 NULL
132484 +disable_so_mgag200_bo_create_fndecl_4398 mgag200_bo_create fndecl 0 4398 NULL
132485 +disable_so_snd_usbmidi_out_endpoint_create_fndecl_4407 snd_usbmidi_out_endpoint_create fndecl 0 4407 NULL nohasharray
132486 +disable_so_page_ofs__ntfs_inode_4407 page_ofs _ntfs_inode 0 4407 &disable_so_snd_usbmidi_out_endpoint_create_fndecl_4407
132487 +disable_so_kstrtoll_from_user_fndecl_4415 kstrtoll_from_user fndecl 0 4415 NULL
132488 +disable_so_mlx5_core_get_caps_fndecl_4421 mlx5_core_get_caps fndecl 0 4421 NULL
132489 +disable_so_pcrlock_fndecl_4429 pcrlock fndecl 0 4429 NULL
132490 +disable_so_nand_scan_bbt_fndecl_4431 nand_scan_bbt fndecl 0 4431 NULL
132491 +disable_so_fr_del_pvc_fndecl_4437 fr_del_pvc fndecl 0 4437 NULL
132492 +disable_so_apei_exec_pre_map_gars_fndecl_4442 apei_exec_pre_map_gars fndecl 0 4442 NULL nohasharray
132493 +disable_so_hot_add_disk_fndecl_4442 hot_add_disk fndecl 0 4442 &disable_so_apei_exec_pre_map_gars_fndecl_4442
132494 +disable_so_gunzip_fndecl_4465 gunzip fndecl 0 4465 NULL
132495 +disable_so_poll_select_copy_remaining_fndecl_4468 poll_select_copy_remaining fndecl 0 4468 NULL
132496 +disable_so_ttm_eu_reserve_buffers_fndecl_4473 ttm_eu_reserve_buffers fndecl 0 4473 NULL
132497 +disable_so_tm6000_i2c_register_fndecl_4474 tm6000_i2c_register fndecl 0 4474 NULL
132498 +disable_so_sddr09_read22_fndecl_4476 sddr09_read22 fndecl 0 4476 NULL
132499 +disable_so_snd_emu10k1_verify_controls_fndecl_4480 snd_emu10k1_verify_controls fndecl 0 4480 NULL
132500 +disable_so_ablkcipher_walk_first_fndecl_4483 ablkcipher_walk_first fndecl 0 4483 NULL
132501 +disable_so_em28xx_probe_i2c_ir_fndecl_4488 em28xx_probe_i2c_ir fndecl 0 4488 NULL
132502 +disable_so_efx_mcdi_handle_assertion_fndecl_4494 efx_mcdi_handle_assertion fndecl 0 4494 NULL
132503 +disable_so_edt_ft5x06_factory_mode_fndecl_4518 edt_ft5x06_factory_mode fndecl 0 4518 NULL
132504 +disable_so___mei_cl_recv_fndecl_4519 __mei_cl_recv fndecl 0 4519 NULL
132505 +disable_so_wl1271_acx_beacon_filter_table_fndecl_4546 wl1271_acx_beacon_filter_table fndecl 0 4546 NULL
132506 +disable_so_hsc_break_send_fndecl_4547 hsc_break_send fndecl 0 4547 NULL
132507 +disable_so_f_rf_hackrf_dev_4551 f_rf hackrf_dev 0 4551 NULL
132508 +disable_so_usbnet_write_cmd_fndecl_4556 usbnet_write_cmd fndecl 0 4556 NULL
132509 +disable_so_logfs_delete_dd_fndecl_4561 logfs_delete_dd fndecl 0 4561 NULL
132510 +disable_so_xfs_attr_args_init_fndecl_4564 xfs_attr_args_init fndecl 0 4564 NULL nohasharray
132511 +disable_so_oaktrail_hdmi_i2c_init_fndecl_4564 oaktrail_hdmi_i2c_init fndecl 0 4564 &disable_so_xfs_attr_args_init_fndecl_4564
132512 +disable_so_osst_position_tape_and_confirm_fndecl_4566 osst_position_tape_and_confirm fndecl 0 4566 NULL
132513 +disable_so_iwl_dbgfs_pm_params_write_fndecl_4575 iwl_dbgfs_pm_params_write fndecl 0 4575 NULL
132514 +disable_so_posix_timer_add_fndecl_4591 posix_timer_add fndecl 0 4591 NULL
132515 +disable_so_lpfc_sli4_driver_resource_setup_fndecl_4594 lpfc_sli4_driver_resource_setup fndecl 0 4594 NULL
132516 +disable_so_my_dvb_dmxdev_ts_card_init_fndecl_4595 my_dvb_dmxdev_ts_card_init fndecl 0 4595 NULL
132517 +disable_so_pm8001_chip_fw_flash_update_build_fndecl_4598 pm8001_chip_fw_flash_update_build fndecl 0 4598 NULL
132518 +disable_so_ecryptfs_verify_auth_tok_from_key_fndecl_4599 ecryptfs_verify_auth_tok_from_key fndecl 0 4599 NULL
132519 +disable_so_header_size_partition_4606 header_size partition 0 4606 NULL
132520 +disable_so_usb_serial_probe_fndecl_4608 usb_serial_probe fndecl 0 4608 NULL
132521 +disable_so_irq_nvecs_bnx2_4644 irq_nvecs bnx2 0 4644 NULL
132522 +disable_so_ti_command_in_sync_fndecl_4646 ti_command_in_sync fndecl 0 4646 NULL
132523 +disable_so___rds_rdma_map_fndecl_4652 __rds_rdma_map fndecl 0 4652 NULL
132524 +disable_so_generic_rndis_bind_fndecl_4656 generic_rndis_bind fndecl 0 4656 NULL
132525 +disable_so_create_pnp_modalias_fndecl_4657 create_pnp_modalias fndecl 0 4657 NULL
132526 +disable_so_fuse_copy_args_fndecl_4668 fuse_copy_args fndecl 0 4668 NULL
132527 +disable_so_dlci_add_fndecl_4669 dlci_add fndecl 0 4669 NULL
132528 +disable_so_do_one_pass_fndecl_4673 do_one_pass fndecl 0 4673 NULL
132529 +disable_so_bcache_major_vardecl_super_c_4677 bcache_major vardecl_super.c 0 4677 NULL
132530 +disable_so_ocfs2_initialize_super_fndecl_4685 ocfs2_initialize_super fndecl 0 4685 NULL nohasharray
132531 +disable_so_cmtp_sock_ioctl_fndecl_4685 cmtp_sock_ioctl fndecl 0 4685 &disable_so_ocfs2_initialize_super_fndecl_4685
132532 +disable_so_snd_pcm_hw_param_near_fndecl_4691 snd_pcm_hw_param_near fndecl 0 4691 NULL nohasharray
132533 +disable_so_rxrpc_krb5_decode_principal_fndecl_4691 rxrpc_krb5_decode_principal fndecl 0 4691 &disable_so_snd_pcm_hw_param_near_fndecl_4691
132534 +disable_so_optlen_ip_options_4698 optlen ip_options 0 4698 NULL
132535 +disable_so_single_open_fndecl_4702 single_open fndecl 0 4702 NULL
132536 +disable_so_lpt_gc_fndecl_4706 lpt_gc fndecl 0 4706 NULL
132537 +disable_so_gfs2_glock_nq_m_fndecl_4712 gfs2_glock_nq_m fndecl 0 4712 NULL
132538 +disable_so_si2157_cmd_execute_fndecl_4717 si2157_cmd_execute fndecl 0 4717 NULL
132539 +disable_so_t3_seeprom_read_fndecl_4718 t3_seeprom_read fndecl 0 4718 NULL
132540 +disable_so_alloc_pidmap_fndecl_4720 alloc_pidmap fndecl 0 4720 NULL
132541 +disable_so_vx_send_msg_nolock_fndecl_4721 vx_send_msg_nolock fndecl 0 4721 NULL
132542 +disable_so_register_blkdev_fndecl_4723 register_blkdev fndecl 0 4723 NULL
132543 +disable_so_rsxx_dma_setup_fndecl_4732 rsxx_dma_setup fndecl 0 4732 NULL
132544 +disable_so_wl1271_acx_keep_alive_mode_fndecl_4743 wl1271_acx_keep_alive_mode fndecl 0 4743 NULL
132545 +disable_so_if_version_fndecl_4744 if_version fndecl 0 4744 NULL
132546 +disable_so_snd_compr_set_metadata_fndecl_4766 snd_compr_set_metadata fndecl 0 4766 NULL
132547 +disable_so_atc_create_hw_devs_fndecl_4772 atc_create_hw_devs fndecl 0 4772 NULL
132548 +disable_so_wl1271_acx_sg_enable_fndecl_4780 wl1271_acx_sg_enable fndecl 0 4780 NULL
132549 +disable_so_user_reset_fdc_fndecl_4790 user_reset_fdc fndecl 0 4790 NULL
132550 +disable_so_img_height_s5p_mfc_ctx_4793 img_height s5p_mfc_ctx 0 4793 NULL
132551 +disable_so_nr_del_neigh_fndecl_4807 nr_del_neigh fndecl 0 4807 NULL
132552 +disable_so_drm_mode_vrefresh_fndecl_4817 drm_mode_vrefresh fndecl 0 4817 NULL
132553 +disable_so_period_bytes_snd_card_asihpi_pcm_4828 period_bytes snd_card_asihpi_pcm 0 4828 NULL
132554 +disable_so___cw1200_irq_enable_fndecl_4837 __cw1200_irq_enable fndecl 0 4837 NULL
132555 +disable_so_mlx5_alloc_uuars_fndecl_4845 mlx5_alloc_uuars fndecl 0 4845 NULL
132556 +disable_so_hci_bdaddr_list_del_fndecl_4856 hci_bdaddr_list_del fndecl 0 4856 NULL
132557 +disable_so_do_ipv6_getsockopt_fndecl_4859 do_ipv6_getsockopt fndecl 0 4859 NULL
132558 +disable_so_attach_hdlc_protocol_fndecl_4865 attach_hdlc_protocol fndecl 0 4865 NULL
132559 +disable_so_ib_register_device_fndecl_4869 ib_register_device fndecl 0 4869 NULL
132560 +disable_so_rdmsr_safe_regs_on_cpu_fndecl_4918 rdmsr_safe_regs_on_cpu fndecl 0 4918 NULL
132561 +disable_so_alloc_reserved_tree_block_fndecl_4920 alloc_reserved_tree_block fndecl 0 4920 NULL nohasharray
132562 +disable_so_if_spi_prog_helper_firmware_fndecl_4920 if_spi_prog_helper_firmware fndecl 0 4920 &disable_so_alloc_reserved_tree_block_fndecl_4920
132563 +disable_so_inofreefwd_iag_4921 inofreefwd iag 0 4921 NULL
132564 +disable_so_ui_size_ubifs_inode_4934 ui_size ubifs_inode 0 4934 NULL
132565 +disable_so_usX2Y_urbs_allocate_fndecl_4935 usX2Y_urbs_allocate fndecl 0 4935 NULL
132566 +disable_so_wl1271_acx_cts_protect_fndecl_4951 wl1271_acx_cts_protect fndecl 0 4951 NULL
132567 +disable_so_jbd2_journal_create_slab_fndecl_4952 jbd2_journal_create_slab fndecl 0 4952 NULL
132568 +disable_so_scsi_dev_info_add_list_fndecl_4961 scsi_dev_info_add_list fndecl 0 4961 NULL
132569 +disable_so_elo_probe_fndecl_4969 elo_probe fndecl 0 4969 NULL
132570 +disable_so_evdev_handle_set_keycode_fndecl_4972 evdev_handle_set_keycode fndecl 0 4972 NULL
132571 +disable_so_eeprom_wr_phys_fndecl_4984 eeprom_wr_phys fndecl 0 4984 NULL
132572 +disable_so_mlx5_ib_query_qp_fndecl_4986 mlx5_ib_query_qp fndecl 0 4986 NULL
132573 +disable_so_sk_err_sock_5000 sk_err sock 0 5000 NULL
132574 +disable_so_xfs_qm_dqget_fndecl_5012 xfs_qm_dqget fndecl 0 5012 NULL nohasharray
132575 +disable_so_mgmt_limited_event_fndecl_5012 mgmt_limited_event fndecl 0 5012 &disable_so_xfs_qm_dqget_fndecl_5012
132576 +disable_so_rerr_wdm_device_5023 rerr wdm_device 0 5023 NULL
132577 +disable_so_vt_disallocate_fndecl_5036 vt_disallocate fndecl 0 5036 NULL
132578 +disable_so_self_check_vid_hdr_fndecl_5040 self_check_vid_hdr fndecl 0 5040 NULL
132579 +disable_so_zr364xx_probe_fndecl_5044 zr364xx_probe fndecl 0 5044 NULL
132580 +disable_so_compress_raw_buf_fndecl_5055 compress_raw_buf fndecl 0 5055 NULL
132581 +disable_so_ppp_asynctty_open_fndecl_5057 ppp_asynctty_open fndecl 0 5057 NULL
132582 +disable_so_len_BufferControl_5068 len BufferControl 0 5068 NULL
132583 +disable_so_unpack_ltab_fndecl_5077 unpack_ltab fndecl 0 5077 NULL
132584 +disable_so_udf_bitmap_new_block_fndecl_5093 udf_bitmap_new_block fndecl 0 5093 NULL
132585 +disable_so_kbd_connect_fndecl_5100 kbd_connect fndecl 0 5100 NULL
132586 +disable_so___radix_tree_create_fndecl_5102 __radix_tree_create fndecl 0 5102 NULL
132587 +disable_so_qxl_alloc_surface_release_reserved_fndecl_5103 qxl_alloc_surface_release_reserved fndecl 0 5103 NULL
132588 +disable_so_errno_ipc_message_5111 errno ipc_message 0 5111 NULL
132589 +disable_so_phy_init_hw_fndecl_5115 phy_init_hw fndecl 0 5115 NULL nohasharray
132590 +disable_so_a3d_connect_fndecl_5115 a3d_connect fndecl 0 5115 &disable_so_phy_init_hw_fndecl_5115
132591 +disable_so_binder_thread_write_fndecl_5119 binder_thread_write fndecl 0 5119 NULL
132592 +disable_so_ocfs2_trim_extent_fndecl_5124 ocfs2_trim_extent fndecl 0 5124 NULL
132593 +disable_so_ccp_init_sg_workarea_fndecl_5128 ccp_init_sg_workarea fndecl 0 5128 NULL
132594 +disable_so_emsff_init_fndecl_5130 emsff_init fndecl 0 5130 NULL
132595 +disable_so_fuse_dev_splice_write_fndecl_5131 fuse_dev_splice_write fndecl 0 5131 NULL
132596 +disable_so_rate_num_snd_pcm_hw_params_5135 rate_num snd_pcm_hw_params 0 5135 NULL
132597 +disable_so_read_local_oob_ext_data_fndecl_5137 read_local_oob_ext_data fndecl 0 5137 NULL
132598 +disable_so_lbs_set_snmp_mib_fndecl_5141 lbs_set_snmp_mib fndecl 0 5141 NULL nohasharray
132599 +disable_so_nl80211_parse_coalesce_rule_fndecl_5141 nl80211_parse_coalesce_rule fndecl 0 5141 &disable_so_lbs_set_snmp_mib_fndecl_5141
132600 +disable_so_snd_seq_timer_set_ppq_fndecl_5142 snd_seq_timer_set_ppq fndecl 0 5142 NULL
132601 +disable_so_total_in_z_stream_s_5155 total_in z_stream_s 0 5155 NULL
132602 +disable_so_ext4_es_insert_extent_fndecl_5178 ext4_es_insert_extent fndecl 0 5178 NULL
132603 +disable_so_parse_ipsecrequest_fndecl_5195 parse_ipsecrequest fndecl 0 5195 NULL
132604 +disable_so_em2874_ir_change_protocol_fndecl_5226 em2874_ir_change_protocol fndecl 0 5226 NULL
132605 +disable_so_sq905_read_data_fndecl_5229 sq905_read_data fndecl 0 5229 NULL
132606 +disable_so_usb_reset_configuration_fndecl_5232 usb_reset_configuration fndecl 0 5232 NULL
132607 +disable_so_nfc_hci_get_param_fndecl_5242 nfc_hci_get_param fndecl 0 5242 NULL nohasharray
132608 +disable_so_nr_extents__ntfs_inode_5242 nr_extents _ntfs_inode 0 5242 &disable_so_nfc_hci_get_param_fndecl_5242
132609 +disable_so_sync_lock_fndecl_5244 sync_lock fndecl 0 5244 NULL
132610 +disable_so_prism2_ioctl_set_encryption_fndecl_5245 prism2_ioctl_set_encryption fndecl 0 5245 NULL nohasharray
132611 +disable_so_nj_probe_fndecl_5245 nj_probe fndecl 0 5245 &disable_so_prism2_ioctl_set_encryption_fndecl_5245
132612 +disable_so_vidioc_reqbufs_fndecl_5252 vidioc_reqbufs fndecl 0 5252 NULL
132613 +disable_so_jffs2_sum_add_kvec_fndecl_5270 jffs2_sum_add_kvec fndecl 0 5270 NULL
132614 +disable_so_softing_load_fw_fndecl_5272 softing_load_fw fndecl 0 5272 NULL
132615 +disable_so_snd_sbmixer_init_fndecl_5274 snd_sbmixer_init fndecl 0 5274 NULL
132616 +disable_so_hid_connect_fndecl_5279 hid_connect fndecl 0 5279 NULL
132617 +disable_so_check_func_arg_fndecl_5294 check_func_arg fndecl 0 5294 NULL
132618 +disable_so_ubifs_tnc_locate_fndecl_5295 ubifs_tnc_locate fndecl 0 5295 NULL
132619 +disable_so_drm_ht_create_fndecl_5302 drm_ht_create fndecl 0 5302 NULL
132620 +disable_so_init_mtdram_fndecl_5310 init_mtdram fndecl 0 5310 NULL
132621 +disable_so_overwrite_item_fndecl_5315 overwrite_item fndecl 0 5315 NULL
132622 +disable_so_ati_remote_initialize_fndecl_5324 ati_remote_initialize fndecl 0 5324 NULL
132623 +disable_so_snd_opl3_play_note_fndecl_5340 snd_opl3_play_note fndecl 0 5340 NULL
132624 +disable_so_pci_esp_probe_one_fndecl_5344 pci_esp_probe_one fndecl 0 5344 NULL
132625 +disable_so_idetape_flush_tape_buffers_fndecl_5349 idetape_flush_tape_buffers fndecl 0 5349 NULL
132626 +disable_so_mtrr_del_fndecl_5356 mtrr_del fndecl 0 5356 NULL
132627 +disable_so_compute_blocknr_fndecl_5361 compute_blocknr fndecl 0 5361 NULL
132628 +disable_so_xfs_buf_read_uncached_fndecl_5369 xfs_buf_read_uncached fndecl 0 5369 NULL
132629 +disable_so_snd_mixart_create_pcm_fndecl_5376 snd_mixart_create_pcm fndecl 0 5376 NULL
132630 +disable_so_midi_port_sonicvibes_5377 midi_port sonicvibes 0 5377 NULL
132631 +disable_so_asus_wmi_add_fndecl_5382 asus_wmi_add fndecl 0 5382 NULL
132632 +disable_so_snd_hda_get_connections_fndecl_5398 snd_hda_get_connections fndecl 0 5398 NULL
132633 +disable_so_match_number_fndecl_5399 match_number fndecl 0 5399 NULL
132634 +disable_so_ide_pci_configure_fndecl_5401 ide_pci_configure fndecl 0 5401 NULL
132635 +disable_so_iwl_mvm_mac_ctxt_send_cmd_fndecl_5410 iwl_mvm_mac_ctxt_send_cmd fndecl 0 5410 NULL
132636 +disable_so_snd_pcm_plugin_build_mulaw_fndecl_5412 snd_pcm_plugin_build_mulaw fndecl 0 5412 NULL
132637 +disable_so_value_xen_pci_op_5416 value xen_pci_op 0 5416 NULL
132638 +disable_so_mlx5_debug_eq_add_fndecl_5441 mlx5_debug_eq_add fndecl 0 5441 NULL
132639 +disable_so_clk_fetch_parent_index_fndecl_5463 clk_fetch_parent_index fndecl 0 5463 NULL
132640 +disable_so___block_write_begin_fndecl_5468 __block_write_begin fndecl 0 5468 NULL
132641 +disable_so_r600_packet0_check_fndecl_5471 r600_packet0_check fndecl 0 5471 NULL nohasharray
132642 +disable_so_i915_gem_object_wait_fence_fndecl_5471 i915_gem_object_wait_fence fndecl 0 5471 &disable_so_r600_packet0_check_fndecl_5471
132643 +disable_so_at76_alloc_urbs_fndecl_5472 at76_alloc_urbs fndecl 0 5472 NULL
132644 +disable_so_redrat3_enable_detector_fndecl_5475 redrat3_enable_detector fndecl 0 5475 NULL
132645 +disable_so_nilfs_segctor_sync_fndecl_5478 nilfs_segctor_sync fndecl 0 5478 NULL
132646 +disable_so_push_insn_fndecl_5489 push_insn fndecl 0 5489 NULL
132647 +disable_so_via_ircc_open_fndecl_5491 via_ircc_open fndecl 0 5491 NULL
132648 +disable_so_do_select_fndecl_5492 do_select fndecl 0 5492 NULL
132649 +disable_so_prism2_plx_probe_fndecl_5496 prism2_plx_probe fndecl 0 5496 NULL
132650 +disable_so_skcipher_recvmsg_async_fndecl_5497 skcipher_recvmsg_async fndecl 0 5497 NULL
132651 +disable_so_vlan_vids_add_by_dev_fndecl_5498 vlan_vids_add_by_dev fndecl 0 5498 NULL
132652 +disable_so_mwifiex_set_rts_fndecl_5503 mwifiex_set_rts fndecl 0 5503 NULL
132653 +disable_so_mlx4_multicast_attach_fndecl_5506 mlx4_multicast_attach fndecl 0 5506 NULL
132654 +disable_so_ath6kl_bmi_reg_read_fndecl_5512 ath6kl_bmi_reg_read fndecl 0 5512 NULL
132655 +disable_so_irda_usb_probe_fndecl_5516 irda_usb_probe fndecl 0 5516 NULL
132656 +disable_so_vb2_streamon_fndecl_5521 vb2_streamon fndecl 0 5521 NULL
132657 +disable_so_ptrace_detach_fndecl_5523 ptrace_detach fndecl 0 5523 NULL
132658 +disable_so_smk_write_rules_list_fndecl_5526 smk_write_rules_list fndecl 0 5526 NULL
132659 +disable_so_bma150_register_input_device_fndecl_5529 bma150_register_input_device fndecl 0 5529 NULL
132660 +disable_so_pcxhr_prepair_pipe_start_fndecl_5537 pcxhr_prepair_pipe_start fndecl 0 5537 NULL
132661 +disable_so_pci_parent_bus_reset_fndecl_5544 pci_parent_bus_reset fndecl 0 5544 NULL
132662 +disable_so_logical_ext4_allocation_request_5548 logical ext4_allocation_request 0 5548 NULL
132663 +disable_so_ims_pcu_setup_buttons_fndecl_5550 ims_pcu_setup_buttons fndecl 0 5550 NULL
132664 +disable_so_xfs_btree_read_bufl_fndecl_5558 xfs_btree_read_bufl fndecl 0 5558 NULL nohasharray
132665 +disable_so_wlcore_boot_static_data_fndecl_5558 wlcore_boot_static_data fndecl 0 5558 &disable_so_xfs_btree_read_bufl_fndecl_5558
132666 +disable_so_filemap_fdatawait_range_fndecl_5563 filemap_fdatawait_range fndecl 0 5563 NULL
132667 +disable_so_mxser_ioctl_fndecl_5565 mxser_ioctl fndecl 0 5565 NULL nohasharray
132668 +disable_so_virtblk_probe_fndecl_5565 virtblk_probe fndecl 0 5565 &disable_so_mxser_ioctl_fndecl_5565
132669 +disable_so_iowarrior_write_fndecl_5567 iowarrior_write fndecl 0 5567 NULL
132670 +disable_so_uart_startup_fndecl_5570 uart_startup fndecl 0 5570 NULL nohasharray
132671 +disable_so_rocker_flow_tbl_term_mac_fndecl_5570 rocker_flow_tbl_term_mac fndecl 0 5570 &disable_so_uart_startup_fndecl_5570
132672 +disable_so_session_udf_options_5571 session udf_options 0 5571 NULL nohasharray
132673 +disable_so_vnic_dev_cmd_fndecl_5571 vnic_dev_cmd fndecl 0 5571 &disable_so_session_udf_options_5571
132674 +disable_so_nblocks_range2trim_5574 nblocks range2trim 0 5574 NULL
132675 +disable_so_qxl_bo_init_fndecl_5610 qxl_bo_init fndecl 0 5610 NULL
132676 +disable_so_bnx2x_mcast_setup_e1_fndecl_5614 bnx2x_mcast_setup_e1 fndecl 0 5614 NULL
132677 +disable_so_snd_pcm_oss_write3_fndecl_5618 snd_pcm_oss_write3 fndecl 0 5618 NULL nohasharray
132678 +disable_so_lpfc_bsg_issue_mbox_fndecl_5618 lpfc_bsg_issue_mbox fndecl 0 5618 &disable_so_snd_pcm_oss_write3_fndecl_5618
132679 +disable_so_gpiod_request_fndecl_5619 gpiod_request fndecl 0 5619 NULL
132680 +disable_so_zr36060_basic_test_fndecl_5621 zr36060_basic_test fndecl 0 5621 NULL
132681 +disable_so_gtt_end_radeon_mc_5628 gtt_end radeon_mc 0 5628 NULL
132682 +disable_so_id_iio_dev_5631 id iio_dev 0 5631 NULL
132683 +disable_so___spi_map_msg_fndecl_5657 __spi_map_msg fndecl 0 5657 NULL
132684 +disable_so_snd_riptide_playback_open_fndecl_5662 snd_riptide_playback_open fndecl 0 5662 NULL
132685 +disable_so__base_event_notification_fndecl_5664 _base_event_notification fndecl 0 5664 NULL
132686 +disable_so_mtip_block_compat_ioctl_fndecl_5667 mtip_block_compat_ioctl fndecl 0 5667 NULL
132687 +disable_so_block_mask_htc_target_5671 block_mask htc_target 0 5671 NULL
132688 +disable_so_write_one_cache_group_fndecl_5678 write_one_cache_group fndecl 0 5678 NULL
132689 +disable_so_vnic_dev_cmd_proxy_fndecl_5683 vnic_dev_cmd_proxy fndecl 0 5683 NULL
132690 +disable_so_ata_pci_sff_activate_host_fndecl_5685 ata_pci_sff_activate_host fndecl 0 5685 NULL
132691 +disable_so_set_machine_constraints_fndecl_5696 set_machine_constraints fndecl 0 5696 NULL
132692 +disable_so_bmap_hash_id_fndecl_5706 bmap_hash_id fndecl 0 5706 NULL
132693 +disable_so_csio_hw_fw_dload_fndecl_5707 csio_hw_fw_dload fndecl 0 5707 NULL nohasharray
132694 +disable_so_piix4_add_adapter_fndecl_5707 piix4_add_adapter fndecl 0 5707 &disable_so_csio_hw_fw_dload_fndecl_5707
132695 +disable_so_sr_is_xa_fndecl_5709 sr_is_xa fndecl 0 5709 NULL
132696 +disable_so_snd_es1938_create_fndecl_5715 snd_es1938_create fndecl 0 5715 NULL
132697 +disable_so_ci_copy_vbios_mc_reg_table_fndecl_5718 ci_copy_vbios_mc_reg_table fndecl 0 5718 NULL
132698 +disable_so_ntb_create_callbacks_fndecl_5757 ntb_create_callbacks fndecl 0 5757 NULL
132699 +disable_so_setup_extent_mapping_fndecl_5768 setup_extent_mapping fndecl 0 5768 NULL
132700 +disable_so_et131x_init_eeprom_fndecl_5771 et131x_init_eeprom fndecl 0 5771 NULL
132701 +disable_so_smscore_register_client_fndecl_5772 smscore_register_client fndecl 0 5772 NULL
132702 +disable_so_musb_urb_enqueue_fndecl_5773 musb_urb_enqueue fndecl 0 5773 NULL
132703 +disable_so_usb_ftdi_elan_edset_output_fndecl_5808 usb_ftdi_elan_edset_output fndecl 0 5808 NULL
132704 +disable_so_csio_hw_sf1_read_fndecl_5813 csio_hw_sf1_read fndecl 0 5813 NULL
132705 +disable_so_mwifiex_ret_802_11d_domain_info_fndecl_5834 mwifiex_ret_802_11d_domain_info fndecl 0 5834 NULL
132706 +disable_so_interpret_user_input_fndecl_5842 interpret_user_input fndecl 0 5842 NULL
132707 +disable_so_sound_insert_unit_fndecl_5861 sound_insert_unit fndecl 0 5861 NULL
132708 +disable_so_pcxhr_config_pipes_fndecl_5863 pcxhr_config_pipes fndecl 0 5863 NULL
132709 +disable_so_mmc_test_area_init_fndecl_5870 mmc_test_area_init fndecl 0 5870 NULL nohasharray
132710 +disable_so_rfkill_connect_fndecl_5870 rfkill_connect fndecl 0 5870 &disable_so_mmc_test_area_init_fndecl_5870
132711 +disable_so_vicam_dostream_fndecl_5871 vicam_dostream fndecl 0 5871 NULL
132712 +disable_so_snd_seq_ioctl_delete_port_fndecl_5874 snd_seq_ioctl_delete_port fndecl 0 5874 NULL
132713 +disable_so_SMB2_set_hardlink_fndecl_5883 SMB2_set_hardlink fndecl 0 5883 NULL
132714 +disable_so_xfs_qm_vop_dqalloc_fndecl_5887 xfs_qm_vop_dqalloc fndecl 0 5887 NULL
132715 +disable_so___br_netpoll_enable_fndecl_5914 __br_netpoll_enable fndecl 0 5914 NULL
132716 +disable_so_softing_load_app_fw_fndecl_5918 softing_load_app_fw fndecl 0 5918 NULL
132717 +disable_so_layout_in_gaps_fndecl_5933 layout_in_gaps fndecl 0 5933 NULL
132718 +disable_so_lx_init_ethersound_config_fndecl_5939 lx_init_ethersound_config fndecl 0 5939 NULL
132719 +disable_so_denali_pci_probe_fndecl_5941 denali_pci_probe fndecl 0 5941 NULL
132720 +disable_so_tfrc_tx_packet_history_init_fndecl_5945 tfrc_tx_packet_history_init fndecl 0 5945 NULL
132721 +disable_so_tty_write_lock_fndecl_5948 tty_write_lock fndecl 0 5948 NULL
132722 +disable_so_dma_address_scatterlist_5955 dma_address scatterlist 0 5955 NULL
132723 +disable_so_init_dma_pools_fndecl_5958 init_dma_pools fndecl 0 5958 NULL
132724 +disable_so_ocfs2_steal_resource_fndecl_5967 ocfs2_steal_resource fndecl 0 5967 NULL
132725 +disable_so_wait_port_writable_fndecl_5968 wait_port_writable fndecl 0 5968 NULL
132726 +disable_so_tmiofb_acc_write_fndecl_5969 tmiofb_acc_write fndecl 0 5969 NULL
132727 +disable_so_brcmf_flowring_create_fndecl_5971 brcmf_flowring_create fndecl 0 5971 NULL
132728 +disable_so_dlm_recover_directory_fndecl_5976 dlm_recover_directory fndecl 0 5976 NULL
132729 +disable_so_mtd_get_fact_prot_info_fndecl_5982 mtd_get_fact_prot_info fndecl 0 5982 NULL
132730 +disable_so_nouveau_crtc_page_flip_fndecl_5984 nouveau_crtc_page_flip fndecl 0 5984 NULL
132731 +disable_so_fst_init_card_fndecl_5986 fst_init_card fndecl 0 5986 NULL
132732 +disable_so_get_log_header_fndecl_5988 get_log_header fndecl 0 5988 NULL
132733 +disable_so_allocated_size__ntfs_inode_5992 allocated_size _ntfs_inode 0 5992 NULL
132734 +disable_so_setup_instance_fndecl_5995 setup_instance fndecl 0 5995 NULL nohasharray
132735 +disable_so_create_gpadl_header_fndecl_5995 create_gpadl_header fndecl 0 5995 &disable_so_setup_instance_fndecl_5995
132736 +disable_so_twidjoy_connect_fndecl_6001 twidjoy_connect fndecl 0 6001 NULL
132737 +disable_so_ttm_tt_bind_fndecl_6002 ttm_tt_bind fndecl 0 6002 NULL
132738 +disable_so_nfc_genl_se_io_fndecl_6005 nfc_genl_se_io fndecl 0 6005 NULL
132739 +disable_so_drm_fb_helper_init_fndecl_6007 drm_fb_helper_init fndecl 0 6007 NULL
132740 +disable_so_dwc3_gadget_init_hw_endpoints_fndecl_6012 dwc3_gadget_init_hw_endpoints fndecl 0 6012 NULL
132741 +disable_so_max_discard_sectors_queue_limits_6023 max_discard_sectors queue_limits 0 6023 NULL
132742 +disable_so_snd_pcm_oss_period_size_fndecl_6030 snd_pcm_oss_period_size fndecl 0 6030 NULL
132743 +disable_so_ntb_pci_probe_fndecl_6045 ntb_pci_probe fndecl 0 6045 NULL nohasharray
132744 +disable_so_ethtool_get_value_fndecl_6045 ethtool_get_value fndecl 0 6045 &disable_so_ntb_pci_probe_fndecl_6045
132745 +disable_so_snd_compr_stop_fndecl_6048 snd_compr_stop fndecl 0 6048 NULL
132746 +disable_so_map_base_tpm_inf_dev_6056 map_base tpm_inf_dev 0 6056 NULL
132747 +disable_so_cifs_readv_from_socket_fndecl_6070 cifs_readv_from_socket fndecl 0 6070 NULL
132748 +disable_so_evtchn_bind_to_user_fndecl_6073 evtchn_bind_to_user fndecl 0 6073 NULL
132749 +disable_so_ipheth_get_macaddr_fndecl_6074 ipheth_get_macaddr fndecl 0 6074 NULL
132750 +disable_so_tty_unregister_ldisc_fndecl_6083 tty_unregister_ldisc fndecl 0 6083 NULL
132751 +disable_so_ext3_reserve_inode_write_fndecl_6088 ext3_reserve_inode_write fndecl 0 6088 NULL
132752 +disable_so_tg3_test_nvram_fndecl_6096 tg3_test_nvram fndecl 0 6096 NULL nohasharray
132753 +disable_so_snd_dmaengine_pcm_open_fndecl_6096 snd_dmaengine_pcm_open fndecl 0 6096 &disable_so_tg3_test_nvram_fndecl_6096
132754 +disable_so_btrfs_run_delayed_refs_fndecl_6098 btrfs_run_delayed_refs fndecl 0 6098 NULL nohasharray
132755 +disable_so___gfs2_xattr_set_fndecl_6098 __gfs2_xattr_set fndecl 0 6098 &disable_so_btrfs_run_delayed_refs_fndecl_6098
132756 +disable_so_mls_context_to_sid_fndecl_6108 mls_context_to_sid fndecl 0 6108 NULL
132757 +disable_so_rate_min_snd_pcm_hardware_6109 rate_min snd_pcm_hardware 0 6109 NULL nohasharray
132758 +disable_so_blkdev_issue_discard_fndecl_6109 blkdev_issue_discard fndecl 0 6109 &disable_so_rate_min_snd_pcm_hardware_6109
132759 +disable_so_resid_scsi_data_buffer_6113 resid scsi_data_buffer 0 6113 NULL
132760 +disable_so_check_lpt_crc_fndecl_6116 check_lpt_crc fndecl 0 6116 NULL nohasharray
132761 +disable_so_tree_mod_log_insert_root_fndecl_6116 tree_mod_log_insert_root fndecl 0 6116 &disable_so_check_lpt_crc_fndecl_6116
132762 +disable_so_ilf_blkno_xfs_inode_log_format_6118 ilf_blkno xfs_inode_log_format 0 6118 NULL
132763 +disable_so_suspend_prepare_fndecl_6122 suspend_prepare fndecl 0 6122 NULL
132764 +disable_so_vmw_user_dmabuf_alloc_fndecl_6126 vmw_user_dmabuf_alloc fndecl 0 6126 NULL
132765 +disable_so_ene_hw_detect_fndecl_6132 ene_hw_detect fndecl 0 6132 NULL
132766 +disable_so_check_prereq_fndecl_6141 check_prereq fndecl 0 6141 NULL
132767 +disable_so_ctrl_freq_au0828_dev_6155 ctrl_freq au0828_dev 0 6155 NULL
132768 +disable_so_kernel_write_fndecl_6162 kernel_write fndecl 0 6162 NULL
132769 +disable_so_get_v4l2_window32_fndecl_6165 get_v4l2_window32 fndecl 0 6165 NULL
132770 +disable_so_t4_query_params_fndecl_6167 t4_query_params fndecl 0 6167 NULL
132771 +disable_so_bond_opt_check_deps_fndecl_6175 bond_opt_check_deps fndecl 0 6175 NULL
132772 +disable_so_zd_usb_ioread16v_fndecl_6176 zd_usb_ioread16v fndecl 0 6176 NULL
132773 +disable_so_cpuidle_register_device_fndecl_6179 cpuidle_register_device fndecl 0 6179 NULL
132774 +disable_so_arizona_calc_fratio_fndecl_6185 arizona_calc_fratio fndecl 0 6185 NULL
132775 +disable_so_con_set_trans_old_fndecl_6192 con_set_trans_old fndecl 0 6192 NULL nohasharray
132776 +disable_so_gigaset_isdn_regdev_fndecl_6192 gigaset_isdn_regdev fndecl 0 6192 &disable_so_con_set_trans_old_fndecl_6192
132777 +disable_so_ep_create_wakeup_source_fndecl_6196 ep_create_wakeup_source fndecl 0 6196 NULL
132778 +disable_so_xen_acpi_processor_init_fndecl_6207 xen_acpi_processor_init fndecl 0 6207 NULL
132779 +disable_so_mmc_spi_readtoken_fndecl_6208 mmc_spi_readtoken fndecl 0 6208 NULL
132780 +disable_so_gpio_request_fndecl_6213 gpio_request fndecl 0 6213 NULL
132781 +disable_so_mgsl_adapter_test_fndecl_6227 mgsl_adapter_test fndecl 0 6227 NULL
132782 +disable_so_pcpu_alloc_area_fndecl_6230 pcpu_alloc_area fndecl 0 6230 NULL
132783 +disable_so_bytenr_backref_node_6238 bytenr backref_node 0 6238 NULL
132784 +disable_so_buffer_size_bna_rxq_6244 buffer_size bna_rxq 0 6244 NULL
132785 +disable_so_hub_port_wait_reset_fndecl_6246 hub_port_wait_reset fndecl 0 6246 NULL
132786 +disable_so_rxq_cnt_tg3_6249 rxq_cnt tg3 0 6249 NULL
132787 +disable_so_ubifs_leb_change_fndecl_6254 ubifs_leb_change fndecl 0 6254 NULL
132788 +disable_so_add_durable_context_fndecl_6256 add_durable_context fndecl 0 6256 NULL nohasharray
132789 +disable_so_dvb_bt8xx_probe_fndecl_6256 dvb_bt8xx_probe fndecl 0 6256 &disable_so_add_durable_context_fndecl_6256 nohasharray
132790 +disable_so_ccp_copy_to_from_ksb_fndecl_6256 ccp_copy_to_from_ksb fndecl 0 6256 &disable_so_dvb_bt8xx_probe_fndecl_6256
132791 +disable_so_insert_extent_data_ref_fndecl_6261 insert_extent_data_ref fndecl 0 6261 NULL
132792 +disable_so_blkno_xfs_bmalloca_6265 blkno xfs_bmalloca 0 6265 NULL
132793 +disable_so_do_send_specific_fndecl_6271 do_send_specific fndecl 0 6271 NULL nohasharray
132794 +disable_so_cifs_push_posix_locks_fndecl_6271 cifs_push_posix_locks fndecl 0 6271 &disable_so_do_send_specific_fndecl_6271
132795 +disable_so_command_setsensorfps_fndecl_6277 command_setsensorfps fndecl 0 6277 NULL nohasharray
132796 +disable_so_xhci_queue_ctrl_tx_fndecl_6277 xhci_queue_ctrl_tx fndecl 0 6277 &disable_so_command_setsensorfps_fndecl_6277
132797 +disable_so_copy_out_args_fndecl_6283 copy_out_args fndecl 0 6283 NULL
132798 +disable_so_netvsc_init_buf_fndecl_6288 netvsc_init_buf fndecl 0 6288 NULL
132799 +disable_so__iwl_dbgfs_set_nic_temperature_write_fndecl_6303 _iwl_dbgfs_set_nic_temperature_write fndecl 0 6303 NULL
132800 +disable_so_tcp_repair_options_est_fndecl_6305 tcp_repair_options_est fndecl 0 6305 NULL
132801 +disable_so_get_termio_fndecl_6309 get_termio fndecl 0 6309 NULL
132802 +disable_so_digital_tg_listen_mdaa_fndecl_6312 digital_tg_listen_mdaa fndecl 0 6312 NULL
132803 +disable_so_sysfs_rename_link_ns_fndecl_6315 sysfs_rename_link_ns fndecl 0 6315 NULL
132804 +disable_so___netdev_adjacent_dev_link_fndecl_6321 __netdev_adjacent_dev_link fndecl 0 6321 NULL
132805 +disable_so_velocity_init_td_ring_fndecl_6322 velocity_init_td_ring fndecl 0 6322 NULL
132806 +disable_so_ch_ioctl_fndecl_6333 ch_ioctl fndecl 0 6333 NULL
132807 +disable_so_cipso_v4_gentag_rbm_fndecl_6335 cipso_v4_gentag_rbm fndecl 0 6335 NULL
132808 +disable_so___blkdev_driver_ioctl_fndecl_6340 __blkdev_driver_ioctl fndecl 0 6340 NULL
132809 +disable_so_n_o_ps_usb_stream_kernel_6346 n_o_ps usb_stream_kernel 0 6346 NULL
132810 +disable_so_iwl_dbgfs_bcast_filters_macs_write_fndecl_6348 iwl_dbgfs_bcast_filters_macs_write fndecl 0 6348 NULL
132811 +disable_so_as102_alloc_usb_stream_buffer_fndecl_6350 as102_alloc_usb_stream_buffer fndecl 0 6350 NULL
132812 +disable_so_pcpu_fit_in_area_fndecl_6362 pcpu_fit_in_area fndecl 0 6362 NULL
132813 +disable_so_sisusb_send_bulk_msg_fndecl_6363 sisusb_send_bulk_msg fndecl 0 6363 NULL
132814 +disable_so_brcmf_cfg80211_mgmt_tx_fndecl_6377 brcmf_cfg80211_mgmt_tx fndecl 0 6377 NULL nohasharray
132815 +disable_so_dccp_feat_register_sp_fndecl_6377 dccp_feat_register_sp fndecl 0 6377 &disable_so_brcmf_cfg80211_mgmt_tx_fndecl_6377
132816 +disable_so_xfs_rtallocate_extent_near_fndecl_6383 xfs_rtallocate_extent_near fndecl 0 6383 NULL nohasharray
132817 +disable_so_compat_check_entry_fndecl_6383 compat_check_entry fndecl 0 6383 &disable_so_xfs_rtallocate_extent_near_fndecl_6383
132818 +disable_so_snd_soc_dapm_new_controls_fndecl_6389 snd_soc_dapm_new_controls fndecl 0 6389 NULL
132819 +disable_so_dbExtend_fndecl_6406 dbExtend fndecl 0 6406 NULL
132820 +disable_so_copy_from_iter_fndecl_6410 copy_from_iter fndecl 0 6410 NULL
132821 +disable_so_edt_ft5x06_register_write_fndecl_6422 edt_ft5x06_register_write fndecl 0 6422 NULL
132822 +disable_so_acpi_battery_update_fndecl_6426 acpi_battery_update fndecl 0 6426 NULL
132823 +disable_so_hfsplus_part_find_fndecl_6428 hfsplus_part_find fndecl 0 6428 NULL
132824 +disable_so_mlx4_init_hca_fndecl_6431 mlx4_init_hca fndecl 0 6431 NULL
132825 +disable_so_pcxhr_set_pipe_state_fndecl_6445 pcxhr_set_pipe_state fndecl 0 6445 NULL
132826 +disable_so_snd_hda_parse_generic_codec_fndecl_6448 snd_hda_parse_generic_codec fndecl 0 6448 NULL nohasharray
132827 +disable_so_max_packet_sz_tx_musb_hw_ep_6448 max_packet_sz_tx musb_hw_ep 0 6448 &disable_so_snd_hda_parse_generic_codec_fndecl_6448
132828 +disable_so_lpt_init_rd_fndecl_6451 lpt_init_rd fndecl 0 6451 NULL
132829 +disable_so_qib_init_pportdata_fndecl_6452 qib_init_pportdata fndecl 0 6452 NULL
132830 +disable_so_xfs_btree_lshift_fndecl_6459 xfs_btree_lshift fndecl 0 6459 NULL
132831 +disable_so_hidpp_send_message_sync_fndecl_6461 hidpp_send_message_sync fndecl 0 6461 NULL
132832 +disable_so_lookup_tree_block_ref_fndecl_6469 lookup_tree_block_ref fndecl 0 6469 NULL
132833 +disable_so_xfs_mod_fdblocks_fndecl_6483 xfs_mod_fdblocks fndecl 0 6483 NULL
132834 +disable_so_ch_read_element_status_fndecl_6486 ch_read_element_status fndecl 0 6486 NULL
132835 +disable_so_wl1271_acx_dco_itrim_params_fndecl_6496 wl1271_acx_dco_itrim_params fndecl 0 6496 NULL
132836 +disable_so_bcmgenet_init_rx_ring_fndecl_6500 bcmgenet_init_rx_ring fndecl 0 6500 NULL
132837 +disable_so_rsc_init_fndecl_6508 rsc_init fndecl 0 6508 NULL
132838 +disable_so_rds_get_mr_fndecl_6513 rds_get_mr fndecl 0 6513 NULL
132839 +disable_so_copy_page_from_iter_fndecl_6523 copy_page_from_iter fndecl 0 6523 NULL
132840 +disable_so_dbell_link_fndecl_6529 dbell_link fndecl 0 6529 NULL
132841 +disable_so_size_ubifs_wbuf_6537 size ubifs_wbuf 0 6537 NULL
132842 +disable_so_tx_ring_size_vmxnet3_adapter_6541 tx_ring_size vmxnet3_adapter 0 6541 NULL
132843 +disable_so_crypt_set_key_fndecl_6546 crypt_set_key fndecl 0 6546 NULL
132844 +disable_so_tmdc_setup_port_fndecl_6552 tmdc_setup_port fndecl 0 6552 NULL
132845 +disable_so_msix_vector_ctlr_info_6565 msix_vector ctlr_info 0 6565 NULL
132846 +disable_so_command_setcolourparams_fndecl_6571 command_setcolourparams fndecl 0 6571 NULL
132847 +disable_so_mptctl_do_mpt_command_fndecl_6578 mptctl_do_mpt_command fndecl 0 6578 NULL
132848 +disable_so_wil_write_file_rxon_fndecl_6590 wil_write_file_rxon fndecl 0 6590 NULL
132849 +disable_so_mptspi_probe_fndecl_6608 mptspi_probe fndecl 0 6608 NULL
132850 +disable_so_svc_export_parse_fndecl_6612 svc_export_parse fndecl 0 6612 NULL
132851 +disable_so_proc_allowed_congestion_control_fndecl_6617 proc_allowed_congestion_control fndecl 0 6617 NULL
132852 +disable_so_result_mlx4_cmd_context_6619 result mlx4_cmd_context 0 6619 NULL
132853 +disable_so_carl9170_register_hwrng_fndecl_6621 carl9170_register_hwrng fndecl 0 6621 NULL
132854 +disable_so_packet_setsockopt_fndecl_6637 packet_setsockopt fndecl 0 6637 NULL
132855 +disable_so_replay_one_name_fndecl_6644 replay_one_name fndecl 0 6644 NULL
132856 +disable_so_kvaser_usb_simple_msg_async_fndecl_6650 kvaser_usb_simple_msg_async fndecl 0 6650 NULL nohasharray
132857 +disable_so_purge_port_fndecl_6650 purge_port fndecl 0 6650 &disable_so_kvaser_usb_simple_msg_async_fndecl_6650
132858 +disable_so_vcc_setsockopt_fndecl_6652 vcc_setsockopt fndecl 0 6652 NULL
132859 +disable_so_check_map_access_fndecl_6656 check_map_access fndecl 0 6656 NULL
132860 +disable_so_init_multi_port_fndecl_6683 init_multi_port fndecl 0 6683 NULL
132861 +disable_so_ethoc_mdio_probe_fndecl_6692 ethoc_mdio_probe fndecl 0 6692 NULL
132862 +disable_so_si_set_smc_sram_address_fndecl_6696 si_set_smc_sram_address fndecl 0 6696 NULL
132863 +disable_so_genl_validate_ops_fndecl_6702 genl_validate_ops fndecl 0 6702 NULL
132864 +disable_so_read_rindex_entry_fndecl_6710 read_rindex_entry fndecl 0 6710 NULL
132865 +disable_so_pcmcia_enable_device_fndecl_6713 pcmcia_enable_device fndecl 0 6713 NULL
132866 +disable_so_sample_rate_mixart_mgr_6716 sample_rate mixart_mgr 0 6716 NULL
132867 +disable_so_mlx4_ib_alloc_eqs_fndecl_6731 mlx4_ib_alloc_eqs fndecl 0 6731 NULL
132868 +disable_so_regcache_lzo_prepare_fndecl_6739 regcache_lzo_prepare fndecl 0 6739 NULL
132869 +disable_so_jffs2_read_dnode_fndecl_6743 jffs2_read_dnode fndecl 0 6743 NULL
132870 +disable_so_osst_wait_ready_fndecl_6748 osst_wait_ready fndecl 0 6748 NULL
132871 +disable_so_e1000_setup_all_rx_resources_fndecl_6749 e1000_setup_all_rx_resources fndecl 0 6749 NULL nohasharray
132872 +disable_so_rfcomm_sock_setsockopt_fndecl_6749 rfcomm_sock_setsockopt fndecl 0 6749 &disable_so_e1000_setup_all_rx_resources_fndecl_6749
132873 +disable_so_radeon_driver_open_kms_fndecl_6751 radeon_driver_open_kms fndecl 0 6751 NULL
132874 +disable_so_um_idi_write_fndecl_6758 um_idi_write fndecl 0 6758 NULL
132875 +disable_so_tun_opts_len_sw_flow_key_6759 tun_opts_len sw_flow_key 0 6759 NULL
132876 +disable_so_chipio_write_data_multiple_fndecl_6764 chipio_write_data_multiple fndecl 0 6764 NULL
132877 +disable_so_get_v4l2_framebuffer32_fndecl_6775 get_v4l2_framebuffer32 fndecl 0 6775 NULL
132878 +disable_so_lx_init_xilinx_test_fndecl_6777 lx_init_xilinx_test fndecl 0 6777 NULL
132879 +disable_so_mmc_send_bus_test_fndecl_6782 mmc_send_bus_test fndecl 0 6782 NULL
132880 +disable_so_ocfs2_validate_and_adjust_move_goal_fndecl_6784 ocfs2_validate_and_adjust_move_goal fndecl 0 6784 NULL nohasharray
132881 +disable_so_nvme_trans_log_sense_fndecl_6784 nvme_trans_log_sense fndecl 0 6784 &disable_so_ocfs2_validate_and_adjust_move_goal_fndecl_6784
132882 +disable_so_alloc_and_copy_string_fndecl_6786 alloc_and_copy_string fndecl 0 6786 NULL
132883 +disable_so_osst_space_over_filemarks_forward_fast_fndecl_6802 osst_space_over_filemarks_forward_fast fndecl 0 6802 NULL
132884 +disable_so_dwc3_alloc_trb_pool_fndecl_6808 dwc3_alloc_trb_pool fndecl 0 6808 NULL
132885 +disable_so_validate_hwmon_pack_fndecl_6814 validate_hwmon_pack fndecl 0 6814 NULL
132886 +disable_so_wacom_probe_fndecl_6819 wacom_probe fndecl 0 6819 NULL
132887 +disable_so_btrfs_start_dirty_block_groups_fndecl_6825 btrfs_start_dirty_block_groups fndecl 0 6825 NULL
132888 +disable_so_fw_core_add_descriptor_fndecl_6826 fw_core_add_descriptor fndecl 0 6826 NULL
132889 +disable_so_blk_complete_sghdr_rq_fndecl_6838 blk_complete_sghdr_rq fndecl 0 6838 NULL
132890 +disable_so_copy_page_to_iter_fndecl_6842 copy_page_to_iter fndecl 0 6842 NULL
132891 +disable_so_lcd_proc_write_fndecl_6844 lcd_proc_write fndecl 0 6844 NULL
132892 +disable_so_intel_framebuffer_size_for_mode_fndecl_6849 intel_framebuffer_size_for_mode fndecl 0 6849 NULL nohasharray
132893 +disable_so___ceph_getxattr_fndecl_6849 __ceph_getxattr fndecl 0 6849 &disable_so_intel_framebuffer_size_for_mode_fndecl_6849
132894 +disable_so_ocfs2_info_handle_freeinode_fndecl_6850 ocfs2_info_handle_freeinode fndecl 0 6850 NULL
132895 +disable_so_acpi_processor_get_performance_states_fndecl_6854 acpi_processor_get_performance_states fndecl 0 6854 NULL
132896 +disable_so_btrfs_update_inode_fndecl_6857 btrfs_update_inode fndecl 0 6857 NULL
132897 +disable_so_sf1_read_fndecl_6858 sf1_read fndecl 0 6858 NULL
132898 +disable_so___video_register_device_fndecl_6860 __video_register_device fndecl 0 6860 NULL
132899 +disable_so_qib_user_sdma_num_pages_fndecl_6864 qib_user_sdma_num_pages fndecl 0 6864 NULL
132900 +disable_so_nvif_device_init_fndecl_6881 nvif_device_init fndecl 0 6881 NULL
132901 +disable_so_usbnet_write_cmd_nopm_fndecl_6889 usbnet_write_cmd_nopm fndecl 0 6889 NULL
132902 +disable_so_c2_llp_connect_fndecl_6892 c2_llp_connect fndecl 0 6892 NULL
132903 +disable_so_hpfs_bplus_lookup_fndecl_6896 hpfs_bplus_lookup fndecl 0 6896 NULL nohasharray
132904 +disable_so_btrfs_rmap_block_fndecl_6896 btrfs_rmap_block fndecl 0 6896 &disable_so_hpfs_bplus_lookup_fndecl_6896
132905 +disable_so_pci_save_pcix_state_fndecl_6905 pci_save_pcix_state fndecl 0 6905 NULL
132906 +disable_so_ip6_mc_msfget_fndecl_6920 ip6_mc_msfget fndecl 0 6920 NULL
132907 +disable_so_vif_delete_fndecl_6936 vif_delete fndecl 0 6936 NULL
132908 +disable_so_pppol2tp_tunnel_ioctl_fndecl_6951 pppol2tp_tunnel_ioctl fndecl 0 6951 NULL
132909 +disable_so_iwlagn_disconn_pan_fndecl_6953 iwlagn_disconn_pan fndecl 0 6953 NULL
132910 +disable_so_mtip_hw_init_fndecl_6959 mtip_hw_init fndecl 0 6959 NULL
132911 +disable_so_tlv_put_u64_fndecl_6968 tlv_put_u64 fndecl 0 6968 NULL
132912 +disable_so_pvr2_v4l2_read_fndecl_6981 pvr2_v4l2_read fndecl 0 6981 NULL
132913 +disable_so_async_set_registers_fndecl_6987 async_set_registers fndecl 0 6987 NULL
132914 +disable_so_sq_spare_wqes_mlx4_ib_qp_6994 sq_spare_wqes mlx4_ib_qp 0 6994 NULL
132915 +disable_so_myri10ge_allocate_rings_fndecl_7000 myri10ge_allocate_rings fndecl 0 7000 NULL
132916 +disable_so___posix_lock_file_fndecl_7008 __posix_lock_file fndecl 0 7008 NULL
132917 +disable_so___mlx4_ib_query_port_fndecl_7019 __mlx4_ib_query_port fndecl 0 7019 NULL
132918 +disable_so_channels_snd_pcm_plugin_format_7026 channels snd_pcm_plugin_format 0 7026 NULL
132919 +disable_so_h_sync_strt_wid_crtc_7033 h_sync_strt_wid crtc 0 7033 NULL
132920 +disable_so_fpregs_get_fndecl_7041 fpregs_get fndecl 0 7041 NULL
132921 +disable_so_i2400mu_notification_setup_fndecl_7042 i2400mu_notification_setup fndecl 0 7042 NULL
132922 +disable_so_process_measurement_fndecl_7043 process_measurement fndecl 0 7043 NULL
132923 +disable_so_kvm_read_guest_page_fndecl_7049 kvm_read_guest_page fndecl 0 7049 NULL
132924 +disable_so_reiserfs_symlink_fndecl_7052 reiserfs_symlink fndecl 0 7052 NULL
132925 +disable_so_ddebug_proc_write_fndecl_7060 ddebug_proc_write fndecl 0 7060 NULL
132926 +disable_so_softing_bootloader_command_fndecl_7061 softing_bootloader_command fndecl 0 7061 NULL
132927 +disable_so_policydb_load_isids_fndecl_7063 policydb_load_isids fndecl 0 7063 NULL
132928 +disable_so_no_overlapping_node_fndecl_7068 no_overlapping_node fndecl 0 7068 NULL
132929 +disable_so_fst_add_one_fndecl_7069 fst_add_one fndecl 0 7069 NULL
132930 +disable_so_bcmgenet_init_rx_queues_fndecl_7071 bcmgenet_init_rx_queues fndecl 0 7071 NULL
132931 +disable_so_dma_bytes_snd_pcm_runtime_7108 dma_bytes snd_pcm_runtime 0 7108 NULL
132932 +disable_so_setup_speedfax_fndecl_7111 setup_speedfax fndecl 0 7111 NULL
132933 +disable_so_sctp_bind_addr_copy_fndecl_7122 sctp_bind_addr_copy fndecl 0 7122 NULL
132934 +disable_so_ocfs2_check_new_group_fndecl_7129 ocfs2_check_new_group fndecl 0 7129 NULL
132935 +disable_so_setup_commands_fndecl_7144 setup_commands fndecl 0 7144 NULL
132936 +disable_so_ea_secno_fnode_7151 ea_secno fnode 0 7151 NULL
132937 +disable_so_cf_command_fndecl_7154 cf_command fndecl 0 7154 NULL
132938 +disable_so___add_to_page_cache_locked_fndecl_7168 __add_to_page_cache_locked fndecl 0 7168 NULL
132939 +disable_so_smi_fe_init_fndecl_7172 smi_fe_init fndecl 0 7172 NULL
132940 +disable_so_mfd_add_devices_fndecl_7183 mfd_add_devices fndecl 0 7183 NULL
132941 +disable_so_ino_node_footer_7185 ino node_footer 0 7185 NULL
132942 +disable_so_mmc_calc_max_discard_fndecl_7198 mmc_calc_max_discard fndecl 0 7198 NULL
132943 +disable_so___wa_populate_dto_urb_fndecl_7208 __wa_populate_dto_urb fndecl 0 7208 NULL
132944 +disable_so_drbd_drain_block_fndecl_7210 drbd_drain_block fndecl 0 7210 NULL
132945 +disable_so_slow_copy_fndecl_7211 slow_copy fndecl 0 7211 NULL
132946 +disable_so__iwl_dbgfs_bt_force_ant_write_fndecl_7214 _iwl_dbgfs_bt_force_ant_write fndecl 0 7214 NULL
132947 +disable_so_moxa_real_load_code_fndecl_7221 moxa_real_load_code fndecl 0 7221 NULL
132948 +disable_so_udl_fbdev_init_fndecl_7222 udl_fbdev_init fndecl 0 7222 NULL
132949 +disable_so_iwl_mvm_fw_dbg_collect_fndecl_7228 iwl_mvm_fw_dbg_collect fndecl 0 7228 NULL
132950 +disable_so_sky2_alloc_rx_skbs_fndecl_7237 sky2_alloc_rx_skbs fndecl 0 7237 NULL
132951 +disable_so_synusb_probe_fndecl_7240 synusb_probe fndecl 0 7240 NULL
132952 +disable_so_mptsas_probe_fndecl_7247 mptsas_probe fndecl 0 7247 NULL
132953 +disable_so_verify_extent_fndecl_7249 verify_extent fndecl 0 7249 NULL
132954 +disable_so_lpfc_new_scsi_buf_s4_fndecl_7265 lpfc_new_scsi_buf_s4 fndecl 0 7265 NULL
132955 +disable_so_qlcnic_83xx_init_fndecl_7270 qlcnic_83xx_init fndecl 0 7270 NULL
132956 +disable_so_setup_routing_entry_fndecl_7281 setup_routing_entry fndecl 0 7281 NULL
132957 +disable_so_cafe_smbus_setup_fndecl_7294 cafe_smbus_setup fndecl 0 7294 NULL
132958 +disable_so_hv_kbd_connect_to_vsp_fndecl_7320 hv_kbd_connect_to_vsp fndecl 0 7320 NULL
132959 +disable_so_vmw_cmdbuf_res_add_fndecl_7324 vmw_cmdbuf_res_add fndecl 0 7324 NULL
132960 +disable_so_mc13xxx_irq_request_fndecl_7349 mc13xxx_irq_request fndecl 0 7349 NULL
132961 +disable_so_i40e_sw_init_fndecl_7352 i40e_sw_init fndecl 0 7352 NULL
132962 +disable_so_avc_write_fndecl_7365 avc_write fndecl 0 7365 NULL nohasharray
132963 +disable_so_gtt_phys_addr__intel_private_7365 gtt_phys_addr _intel_private 0 7365 &disable_so_avc_write_fndecl_7365
132964 +disable_so_btree_lookup_raw_fndecl_7367 btree_lookup_raw fndecl 0 7367 NULL
132965 +disable_so_freeze_super_fndecl_7368 freeze_super fndecl 0 7368 NULL
132966 +disable_so_c67x00_create_td_fndecl_7377 c67x00_create_td fndecl 0 7377 NULL
132967 +disable_so_try_get_dev_id_fndecl_7380 try_get_dev_id fndecl 0 7380 NULL
132968 +disable_so_v_tot_disp_crtc_7400 v_tot_disp crtc 0 7400 NULL
132969 +disable_so_ext4_ext_zeroout_fndecl_7404 ext4_ext_zeroout fndecl 0 7404 NULL
132970 +disable_so_xfs_iget_fndecl_7419 xfs_iget fndecl 0 7419 NULL nohasharray
132971 +disable_so_alloc_idx_lebs_fndecl_7419 alloc_idx_lebs fndecl 0 7419 &disable_so_xfs_iget_fndecl_7419
132972 +disable_so_old_deviceless_fndecl_7429 old_deviceless fndecl 0 7429 NULL
132973 +disable_so_iwl_dbgfs_prph_reg_write_fndecl_7432 iwl_dbgfs_prph_reg_write fndecl 0 7432 NULL
132974 +disable_so_crypto_ahash_final_fndecl_7433 crypto_ahash_final fndecl 0 7433 NULL
132975 +disable_so_nvme_sg_io_fndecl_7434 nvme_sg_io fndecl 0 7434 NULL
132976 +disable_so_iio_device_add_event_fndecl_7439 iio_device_add_event fndecl 0 7439 NULL
132977 +disable_so_radio_open_fndecl_7444 radio_open fndecl 0 7444 NULL
132978 +disable_so_kvm_deassign_irq_fndecl_7458 kvm_deassign_irq fndecl 0 7458 NULL
132979 +disable_so_len_sk_buff_7460 len sk_buff 0 7460 NULL
132980 +disable_so_hpfs_alloc_sector_fndecl_7462 hpfs_alloc_sector fndecl 0 7462 NULL
132981 +disable_so_vmw_user_dmabuf_lookup_fndecl_7469 vmw_user_dmabuf_lookup fndecl 0 7469 NULL
132982 +disable_so_xfs_btree_check_block_fndecl_7472 xfs_btree_check_block fndecl 0 7472 NULL
132983 +disable_so__regulator_do_set_voltage_fndecl_7477 _regulator_do_set_voltage fndecl 0 7477 NULL
132984 +disable_so_mcs_rate_info_7481 mcs rate_info 0 7481 NULL
132985 +disable_so_nilfs_bmap_insert_fndecl_7485 nilfs_bmap_insert fndecl 0 7485 NULL
132986 +disable_so_con_set_unimap_fndecl_7487 con_set_unimap fndecl 0 7487 NULL
132987 +disable_so_osst_chk_result_fndecl_7500 osst_chk_result fndecl 0 7500 NULL
132988 +disable_so_sf1_read_fndecl_7504 sf1_read fndecl 0 7504 NULL
132989 +disable_so_calculate_inocache_hashsize_fndecl_7506 calculate_inocache_hashsize fndecl 0 7506 NULL
132990 +disable_so_as102_firmware_upload_fndecl_7509 as102_firmware_upload fndecl 0 7509 NULL
132991 +disable_so_netlink_change_ngroups_fndecl_7514 netlink_change_ngroups fndecl 0 7514 NULL
132992 +disable_so_ccp_register_aes_alg_fndecl_7517 ccp_register_aes_alg fndecl 0 7517 NULL
132993 +disable_so_validate_request_fndecl_7523 validate_request fndecl 0 7523 NULL
132994 +disable_so_ecryptfs_get_tfm_and_mutex_for_cipher_name_fndecl_7524 ecryptfs_get_tfm_and_mutex_for_cipher_name fndecl 0 7524 NULL
132995 +disable_so_filemap_write_and_wait_fndecl_7529 filemap_write_and_wait fndecl 0 7529 NULL
132996 +disable_so_capi_read_fndecl_7532 capi_read fndecl 0 7532 NULL
132997 +disable_so_analog_init_masks_fndecl_7535 analog_init_masks fndecl 0 7535 NULL
132998 +disable_so_radeon_bo_pin_fndecl_7538 radeon_bo_pin fndecl 0 7538 NULL
132999 +disable_so_acpi_pcc_probe_fndecl_7544 acpi_pcc_probe fndecl 0 7544 NULL
133000 +disable_so_ocfs2_block_group_set_bits_fndecl_7547 ocfs2_block_group_set_bits fndecl 0 7547 NULL
133001 +disable_so_snd_seq_client_enqueue_event_fndecl_7554 snd_seq_client_enqueue_event fndecl 0 7554 NULL
133002 +disable_so_ahash_save_req_fndecl_7557 ahash_save_req fndecl 0 7557 NULL
133003 +disable_so_qib_user_sdma_queue_pkts_fndecl_7563 qib_user_sdma_queue_pkts fndecl 0 7563 NULL
133004 +disable_so_start_this_handle_fndecl_7572 start_this_handle fndecl 0 7572 NULL
133005 +disable_so_rtsx_usb_send_cmd_fndecl_7578 rtsx_usb_send_cmd fndecl 0 7578 NULL
133006 +disable_so_alloc_mmu_pages_fndecl_7579 alloc_mmu_pages fndecl 0 7579 NULL
133007 +disable_so_ftdi_elan_edset_input_fndecl_7588 ftdi_elan_edset_input fndecl 0 7588 NULL
133008 +disable_so_ipw_fw_dma_add_buffer_fndecl_7589 ipw_fw_dma_add_buffer fndecl 0 7589 NULL
133009 +disable_so_daio_rsc_init_fndecl_7594 daio_rsc_init fndecl 0 7594 NULL
133010 +disable_so_lpfc_bsg_handle_sli_cfg_ebuf_fndecl_7596 lpfc_bsg_handle_sli_cfg_ebuf fndecl 0 7596 NULL
133011 +disable_so_q_blkno_xfs_dquot_7601 q_blkno xfs_dquot 0 7601 NULL
133012 +disable_so_find_available_queue_slot_fndecl_7603 find_available_queue_slot fndecl 0 7603 NULL
133013 +disable_so_assoc_array_gc_fndecl_7605 assoc_array_gc fndecl 0 7605 NULL
133014 +disable_so_parse_metadata_dev_fndecl_7613 parse_metadata_dev fndecl 0 7613 NULL
133015 +disable_so_ixgbe_setup_all_tx_resources_fndecl_7625 ixgbe_setup_all_tx_resources fndecl 0 7625 NULL
133016 +disable_so_virt_to_scatterlist_fndecl_7637 virt_to_scatterlist fndecl 0 7637 NULL
133017 +disable_so_talk_to_blkback_fndecl_7651 talk_to_blkback fndecl 0 7651 NULL
133018 +disable_so_display_crc_ctl_parse_fndecl_7656 display_crc_ctl_parse fndecl 0 7656 NULL
133019 +disable_so_solo_tw28_init_fndecl_7657 solo_tw28_init fndecl 0 7657 NULL
133020 +disable_so_btrfs_end_transaction_fndecl_7665 btrfs_end_transaction fndecl 0 7665 NULL
133021 +disable_so_btrfs_wait_marked_extents_fndecl_7668 btrfs_wait_marked_extents fndecl 0 7668 NULL
133022 +disable_so_mpi_get_buffer_fndecl_7669 mpi_get_buffer fndecl 0 7669 NULL
133023 +disable_so_ipath_create_user_egr_fndecl_7684 ipath_create_user_egr fndecl 0 7684 NULL
133024 +disable_so_genphy_soft_reset_fndecl_7697 genphy_soft_reset fndecl 0 7697 NULL
133025 +disable_so_t4_fw_reset_fndecl_7702 t4_fw_reset fndecl 0 7702 NULL nohasharray
133026 +disable_so_mxt_upload_cfg_mem_fndecl_7702 mxt_upload_cfg_mem fndecl 0 7702 &disable_so_t4_fw_reset_fndecl_7702
133027 +disable_so_send_subvol_begin_fndecl_7706 send_subvol_begin fndecl 0 7706 NULL
133028 +disable_so_wl1271_cmd_ps_mode_fndecl_7707 wl1271_cmd_ps_mode fndecl 0 7707 NULL
133029 +disable_so_zr36050_setup_fndecl_7709 zr36050_setup fndecl 0 7709 NULL
133030 +disable_so_iwl_read_eeprom_fndecl_7723 iwl_read_eeprom fndecl 0 7723 NULL
133031 +disable_so_vfs_ioctl_fndecl_7728 vfs_ioctl fndecl 0 7728 NULL nohasharray
133032 +disable_so_sess_alloc_buffer_fndecl_7728 sess_alloc_buffer fndecl 0 7728 &disable_so_vfs_ioctl_fndecl_7728
133033 +disable_so_xfs_initialize_perag_data_fndecl_7735 xfs_initialize_perag_data fndecl 0 7735 NULL
133034 +disable_so_level_tree_block_7744 level tree_block 0 7744 NULL
133035 +disable_so_base_addr_net_device_7745 base_addr net_device 0 7745 NULL
133036 +disable_so_beiscsi_create_wrb_rings_fndecl_7749 beiscsi_create_wrb_rings fndecl 0 7749 NULL
133037 +disable_so_snd_usb_mixer_controls_fndecl_7753 snd_usb_mixer_controls fndecl 0 7753 NULL
133038 +disable_so_mlx4_enable_sriov_fndecl_7756 mlx4_enable_sriov fndecl 0 7756 NULL
133039 +disable_so_qla24xx_enable_msix_fndecl_7770 qla24xx_enable_msix fndecl 0 7770 NULL
133040 +disable_so_alloc_reserved_file_extent_fndecl_7776 alloc_reserved_file_extent fndecl 0 7776 NULL
133041 +disable_so_setup_blkring_fndecl_7778 setup_blkring fndecl 0 7778 NULL
133042 +disable_so_mmu_private_affs_inode_info_7785 mmu_private affs_inode_info 0 7785 NULL
133043 +disable_so_ubi_io_sync_erase_fndecl_7797 ubi_io_sync_erase fndecl 0 7797 NULL
133044 +disable_so_xt_check_target_fndecl_7809 xt_check_target fndecl 0 7809 NULL
133045 +disable_so_plen_hci_event_hdr_7815 plen hci_event_hdr 0 7815 NULL
133046 +disable_so_ext4_xattr_ibody_inline_set_fndecl_7828 ext4_xattr_ibody_inline_set fndecl 0 7828 NULL
133047 +disable_so_check_board_id_and_rev_fndecl_7835 check_board_id_and_rev fndecl 0 7835 NULL
133048 +disable_so_sirdev_get_dongle_fndecl_7836 sirdev_get_dongle fndecl 0 7836 NULL
133049 +disable_so_init_iommu_one_fndecl_7837 init_iommu_one fndecl 0 7837 NULL
133050 +disable_so_io_fritz_adapter_7853 io fritz_adapter 0 7853 NULL
133051 +disable_so_rds_get_mr_for_dest_fndecl_7856 rds_get_mr_for_dest fndecl 0 7856 NULL
133052 +disable_so_snd_register_device_fndecl_7864 snd_register_device fndecl 0 7864 NULL
133053 +disable_so_debug_fill_super_fndecl_7866 debug_fill_super fndecl 0 7866 NULL
133054 +disable_so_ims_pcu_setup_gamepad_fndecl_7867 ims_pcu_setup_gamepad fndecl 0 7867 NULL
133055 +disable_so_rocker_flow_tbl_do_fndecl_7870 rocker_flow_tbl_do fndecl 0 7870 NULL
133056 +disable_so_proc_do_submiturb_fndecl_7876 proc_do_submiturb fndecl 0 7876 NULL
133057 +disable_so_flock_to_posix_lock_fndecl_7882 flock_to_posix_lock fndecl 0 7882 NULL
133058 +disable_so_sd_read_data_fndecl_7884 sd_read_data fndecl 0 7884 NULL
133059 +disable_so_atmel_probe_fndecl_7906 atmel_probe fndecl 0 7906 NULL nohasharray
133060 +disable_so_ath6kl_wmi_info_req_cmd_fndecl_7906 ath6kl_wmi_info_req_cmd fndecl 0 7906 &disable_so_atmel_probe_fndecl_7906
133061 +disable_so_rx_ring_size_vmxnet3_adapter_7917 rx_ring_size vmxnet3_adapter 0 7917 NULL
133062 +disable_so_saa7706h_get_reg16_fndecl_7919 saa7706h_get_reg16 fndecl 0 7919 NULL
133063 +disable_so_savage_dispatch_draw_fndecl_7920 savage_dispatch_draw fndecl 0 7920 NULL
133064 +disable_so_uvesafb_setpalette_fndecl_7922 uvesafb_setpalette fndecl 0 7922 NULL
133065 +disable_so_blacklisted_vardecl_acpi_cpufreq_c_7931 blacklisted vardecl_acpi-cpufreq.c 0 7931 NULL
133066 +disable_so_handle_outgoing_dr_smp_fndecl_7932 handle_outgoing_dr_smp fndecl 0 7932 NULL
133067 +disable_so_hfrontporch_v4l2_bt_timings_7935 hfrontporch v4l2_bt_timings 0 7935 NULL
133068 +disable_so_i40evf_verify_api_ver_fndecl_7937 i40evf_verify_api_ver fndecl 0 7937 NULL
133069 +disable_so_brcmf_sdiod_freezer_attach_fndecl_7945 brcmf_sdiod_freezer_attach fndecl 0 7945 NULL
133070 +disable_so_ath6kl_init_hw_start_fndecl_7946 ath6kl_init_hw_start fndecl 0 7946 NULL
133071 +disable_so_xhci_queue_intr_tx_fndecl_7952 xhci_queue_intr_tx fndecl 0 7952 NULL
133072 +disable_so_sd_start_fndecl_7964 sd_start fndecl 0 7964 NULL
133073 +disable_so_nilfs_segctor_update_payload_blocknr_fndecl_7999 nilfs_segctor_update_payload_blocknr fndecl 0 7999 NULL
133074 +disable_so_rds_cmsg_rdma_args_fndecl_8024 rds_cmsg_rdma_args fndecl 0 8024 NULL
133075 +disable_so_mcast_mtu_ipoib_dev_priv_8033 mcast_mtu ipoib_dev_priv 0 8033 NULL
133076 +disable_so_gtt_base_align_radeon_mc_8035 gtt_base_align radeon_mc 0 8035 NULL
133077 +disable_so_do_check_fndecl_8046 do_check fndecl 0 8046 NULL
133078 +disable_so_cb710_check_event_fndecl_8054 cb710_check_event fndecl 0 8054 NULL nohasharray
133079 +disable_so_dsp_dma_setup_fndecl_8054 dsp_dma_setup fndecl 0 8054 &disable_so_cb710_check_event_fndecl_8054
133080 +disable_so_deleterule_fndecl_8057 deleterule fndecl 0 8057 NULL
133081 +disable_so___dev_change_flags_fndecl_8062 __dev_change_flags fndecl 0 8062 NULL
133082 +disable_so_btrfs_unlink_inode_fndecl_8064 btrfs_unlink_inode fndecl 0 8064 NULL
133083 +disable_so_detect_cache_attributes_fndecl_8075 detect_cache_attributes fndecl 0 8075 NULL
133084 +disable_so_copy_counters_to_user_fndecl_8080 copy_counters_to_user fndecl 0 8080 NULL
133085 +disable_so_via_dmablit_grab_slot_fndecl_8081 via_dmablit_grab_slot fndecl 0 8081 NULL
133086 +disable_so_build_dac_controls_fndecl_8088 build_dac_controls fndecl 0 8088 NULL
133087 +disable_so_ethtool_get_dump_data_fndecl_8090 ethtool_get_dump_data fndecl 0 8090 NULL nohasharray
133088 +disable_so_hash_ip4_add_fndecl_8090 hash_ip4_add fndecl 0 8090 &disable_so_ethtool_get_dump_data_fndecl_8090
133089 +disable_so_ali1535_smba_vardecl_i2c_ali1535_c_8095 ali1535_smba vardecl_i2c-ali1535.c 0 8095 NULL
133090 +disable_so_brcmf_sdiod_probe_fndecl_8105 brcmf_sdiod_probe fndecl 0 8105 NULL
133091 +disable_so_smsc95xx_read_reg_fndecl_8113 smsc95xx_read_reg fndecl 0 8113 NULL
133092 +disable_so_prepend_fndecl_8120 prepend fndecl 0 8120 NULL
133093 +disable_so__base_get_port_facts_fndecl_8125 _base_get_port_facts fndecl 0 8125 NULL
133094 +disable_so_jffs2_scan_inode_node_fndecl_8132 jffs2_scan_inode_node fndecl 0 8132 NULL
133095 +disable_so_nct6683_find_fndecl_8139 nct6683_find fndecl 0 8139 NULL
133096 +disable_so_fuse_direct_IO_fndecl_8163 fuse_direct_IO fndecl 0 8163 NULL
133097 +disable_so_tx_ring_count_igb_adapter_8171 tx_ring_count igb_adapter 0 8171 NULL
133098 +disable_so_avail_ubifs_wbuf_8176 avail ubifs_wbuf 0 8176 NULL
133099 +disable_so_smsc95xx_enter_suspend3_fndecl_8189 smsc95xx_enter_suspend3 fndecl 0 8189 NULL
133100 +disable_so_snd_cmipci_pcm_spdif_new_fndecl_8194 snd_cmipci_pcm_spdif_new fndecl 0 8194 NULL
133101 +disable_so_evm_protect_xattr_fndecl_8195 evm_protect_xattr fndecl 0 8195 NULL nohasharray
133102 +disable_so_ethtool_get_rxfh_fndecl_8195 ethtool_get_rxfh fndecl 0 8195 &disable_so_evm_protect_xattr_fndecl_8195
133103 +disable_so_ccp_copy_from_ksb_fndecl_8196 ccp_copy_from_ksb fndecl 0 8196 NULL
133104 +disable_so_resource_alignment_fndecl_8199 resource_alignment fndecl 0 8199 NULL
133105 +disable_so_ath6kl_core_init_fndecl_8208 ath6kl_core_init fndecl 0 8208 NULL
133106 +disable_so_tx_ring_count_fm10k_intfc_8210 tx_ring_count fm10k_intfc 0 8210 NULL
133107 +disable_so_snd_usb_audio_create_fndecl_8211 snd_usb_audio_create fndecl 0 8211 NULL
133108 +disable_so_snd_asihpi_level_add_fndecl_8213 snd_asihpi_level_add fndecl 0 8213 NULL
133109 +disable_so_flush_buffer_fndecl_8236 flush_buffer fndecl 0 8236 NULL
133110 +disable_so_ene_ub6250_probe_fndecl_8238 ene_ub6250_probe fndecl 0 8238 NULL
133111 +disable_so_osst_set_frame_position_fndecl_8253 osst_set_frame_position fndecl 0 8253 NULL
133112 +disable_so_ath6kl_init_upload_fndecl_8260 ath6kl_init_upload fndecl 0 8260 NULL
133113 +disable_so_ieee80211_mesh_csa_beacon_fndecl_8273 ieee80211_mesh_csa_beacon fndecl 0 8273 NULL
133114 +disable_so_ret_regulator_bulk_data_8277 ret regulator_bulk_data 0 8277 NULL
133115 +disable_so_emi62_load_firmware_fndecl_8284 emi62_load_firmware fndecl 0 8284 NULL
133116 +disable_so_dm_ulog_tfr_init_fndecl_8291 dm_ulog_tfr_init fndecl 0 8291 NULL
133117 +disable_so_proc_pid_stack_fndecl_8296 proc_pid_stack fndecl 0 8296 NULL
133118 +disable_so_ip6mr_sk_done_fndecl_8297 ip6mr_sk_done fndecl 0 8297 NULL
133119 +disable_so_common_read_fndecl_8298 common_read fndecl 0 8298 NULL
133120 +disable_so_bond_netpoll_setup_fndecl_8309 bond_netpoll_setup fndecl 0 8309 NULL
133121 +disable_so_alloc_pwms_fndecl_8311 alloc_pwms fndecl 0 8311 NULL
133122 +disable_so_sctp_outq_flush_rtx_fndecl_8326 sctp_outq_flush_rtx fndecl 0 8326 NULL
133123 +disable_so_xfs_bmap_longest_free_extent_fndecl_8327 xfs_bmap_longest_free_extent fndecl 0 8327 NULL nohasharray
133124 +disable_so_vidioc_s_fmt_vid_overlay_fndecl_8327 vidioc_s_fmt_vid_overlay fndecl 0 8327 &disable_so_xfs_bmap_longest_free_extent_fndecl_8327
133125 +disable_so_ttm_bo_move_buffer_fndecl_8328 ttm_bo_move_buffer fndecl 0 8328 NULL nohasharray
133126 +disable_so_check_call_fndecl_8328 check_call fndecl 0 8328 &disable_so_ttm_bo_move_buffer_fndecl_8328
133127 +disable_so_hash_rem_ccp_aes_cmac_req_ctx_8330 hash_rem ccp_aes_cmac_req_ctx 0 8330 NULL
133128 +disable_so_gntalloc_mmap_fndecl_8332 gntalloc_mmap fndecl 0 8332 NULL
133129 +disable_so_vhci_urb_dequeue_fndecl_8333 vhci_urb_dequeue fndecl 0 8333 NULL
133130 +disable_so_netlink_dump_fndecl_8338 netlink_dump fndecl 0 8338 NULL
133131 +disable_so_kobject_add_internal_fndecl_8342 kobject_add_internal fndecl 0 8342 NULL
133132 +disable_so_rfkill_register_fndecl_8346 rfkill_register fndecl 0 8346 NULL
133133 +disable_so_i40e_setup_pf_filter_control_fndecl_8352 i40e_setup_pf_filter_control fndecl 0 8352 NULL
133134 +disable_so_i2c_smbus_write_byte_data_fndecl_8369 i2c_smbus_write_byte_data fndecl 0 8369 NULL
133135 +disable_so_btrfs_split_item_fndecl_8375 btrfs_split_item fndecl 0 8375 NULL
133136 +disable_so_group_send_sig_info_fndecl_8378 group_send_sig_info fndecl 0 8378 NULL
133137 +disable_so_acpi_map_cpu_fndecl_8400 acpi_map_cpu fndecl 0 8400 NULL
133138 +disable_so_ni_copy_vbios_mc_reg_table_fndecl_8405 ni_copy_vbios_mc_reg_table fndecl 0 8405 NULL
133139 +disable_so_ubi_wl_scrub_peb_fndecl_8407 ubi_wl_scrub_peb fndecl 0 8407 NULL
133140 +disable_so_bitrate_snd_at73c213_8409 bitrate snd_at73c213 0 8409 NULL
133141 +disable_so_ttm_dma_populate_fndecl_8425 ttm_dma_populate fndecl 0 8425 NULL
133142 +disable_so_i_ino_inode_8428 i_ino inode 0 8428 NULL
133143 +disable_so___wl18xx_scan_stop_fndecl_8429 __wl18xx_scan_stop fndecl 0 8429 NULL
133144 +disable_so_rtsx_pci_dma_transfer_fndecl_8439 rtsx_pci_dma_transfer fndecl 0 8439 NULL
133145 +disable_so_set_memory_wb_fndecl_8450 set_memory_wb fndecl 0 8450 NULL
133146 +disable_so___g450_setclk_fndecl_8454 __g450_setclk fndecl 0 8454 NULL
133147 +disable_so_adp5589_gpio_add_fndecl_8458 adp5589_gpio_add fndecl 0 8458 NULL
133148 +disable_so_inputs_snd_soc_dapm_widget_8459 inputs snd_soc_dapm_widget 0 8459 NULL
133149 +disable_so_crypto_register_alg_fndecl_8460 crypto_register_alg fndecl 0 8460 NULL
133150 +disable_so_read_id_reg_fndecl_8461 read_id_reg fndecl 0 8461 NULL
133151 +disable_so_mtd_read_user_prot_reg_fndecl_8465 mtd_read_user_prot_reg fndecl 0 8465 NULL
133152 +disable_so_snd_seq_device_new_fndecl_8474 snd_seq_device_new fndecl 0 8474 NULL
133153 +disable_so_isp1362_urb_enqueue_fndecl_8524 isp1362_urb_enqueue fndecl 0 8524 NULL
133154 +disable_so___bond_release_one_fndecl_8527 __bond_release_one fndecl 0 8527 NULL
133155 +disable_so_get_msg_fndecl_8532 get_msg fndecl 0 8532 NULL
133156 +disable_so_rtsx_usb_write_register_fndecl_8533 rtsx_usb_write_register fndecl 0 8533 NULL
133157 +disable_so_overlay_out_left_vivid_dev_8540 overlay_out_left vivid_dev 0 8540 NULL
133158 +disable_so_parse_manfid_fndecl_8549 parse_manfid fndecl 0 8549 NULL
133159 +disable_so_velocity_init_rd_ring_fndecl_8573 velocity_init_rd_ring fndecl 0 8573 NULL
133160 +disable_so_ext4_get_acl_fndecl_8590 ext4_get_acl fndecl 0 8590 NULL
133161 +disable_so_ubifs_lpt_start_commit_fndecl_8607 ubifs_lpt_start_commit fndecl 0 8607 NULL nohasharray
133162 +disable_so_setup_queues_fndecl_8607 setup_queues fndecl 0 8607 &disable_so_ubifs_lpt_start_commit_fndecl_8607
133163 +disable_so_irq_spi_device_8610 irq spi_device 0 8610 NULL
133164 +disable_so_riptide_reset_fndecl_8612 riptide_reset fndecl 0 8612 NULL
133165 +disable_so_xattr_permission_fndecl_8624 xattr_permission fndecl 0 8624 NULL
133166 +disable_so_svcauth_gss_register_pseudoflavor_fndecl_8630 svcauth_gss_register_pseudoflavor fndecl 0 8630 NULL
133167 +disable_so_compat_sock_get_timestamp_fndecl_8635 compat_sock_get_timestamp fndecl 0 8635 NULL
133168 +disable_so_acpi_add_power_resource_fndecl_8651 acpi_add_power_resource fndecl 0 8651 NULL
133169 +disable_so_nvme_trans_mode_sense_fndecl_8652 nvme_trans_mode_sense fndecl 0 8652 NULL
133170 +disable_so_si4713_send_startup_command_fndecl_8663 si4713_send_startup_command fndecl 0 8663 NULL
133171 +disable_so_io_emu_8664 io emu 0 8664 NULL
133172 +disable_so_dvb_usbv2_adapter_init_fndecl_8691 dvb_usbv2_adapter_init fndecl 0 8691 NULL
133173 +disable_so_alps_set_protocol_fndecl_8695 alps_set_protocol fndecl 0 8695 NULL
133174 +disable_so_digital_in_send_fndecl_8698 digital_in_send fndecl 0 8698 NULL
133175 +disable_so_vx_read_status_fndecl_8701 vx_read_status fndecl 0 8701 NULL
133176 +disable_so_lanai_open_fndecl_8702 lanai_open fndecl 0 8702 NULL nohasharray
133177 +disable_so_nl80211_parse_random_mac_fndecl_8702 nl80211_parse_random_mac fndecl 0 8702 &disable_so_lanai_open_fndecl_8702
133178 +disable_so_netlbl_cipsov4_add_common_fndecl_8708 netlbl_cipsov4_add_common fndecl 0 8708 NULL
133179 +disable_so_suni_init_fndecl_8712 suni_init fndecl 0 8712 NULL
133180 +disable_so_normalize_ioctl_fndecl_8717 normalize_ioctl fndecl 0 8717 NULL
133181 +disable_so_ocfs2_local_alloc_reserve_for_window_fndecl_8725 ocfs2_local_alloc_reserve_for_window fndecl 0 8725 NULL
133182 +disable_so_qsfp_read_fndecl_8729 qsfp_read fndecl 0 8729 NULL
133183 +disable_so_vmw_resource_validate_fndecl_8731 vmw_resource_validate fndecl 0 8731 NULL
133184 +disable_so___blockdev_direct_IO_fndecl_8738 __blockdev_direct_IO fndecl 0 8738 NULL
133185 +disable_so_size_kmem_cache_8740 size kmem_cache 0 8740 NULL
133186 +disable_so_perf_ustack_task_size_fndecl_8746 perf_ustack_task_size fndecl 0 8746 NULL
133187 +disable_so___vlan_add_fndecl_8748 __vlan_add fndecl 0 8748 NULL
133188 +disable_so_cpufreq_frequency_table_cpuinfo_fndecl_8758 cpufreq_frequency_table_cpuinfo fndecl 0 8758 NULL
133189 +disable_so_assign_guest_irq_fndecl_8769 assign_guest_irq fndecl 0 8769 NULL
133190 +disable_so_set_output_gain_fndecl_8771 set_output_gain fndecl 0 8771 NULL
133191 +disable_so_nilfs_dat_prepare_alloc_fndecl_8773 nilfs_dat_prepare_alloc fndecl 0 8773 NULL
133192 +disable_so_team_port_add_fndecl_8775 team_port_add fndecl 0 8775 NULL
133193 +disable_so_gfs2_adjust_quota_fndecl_8777 gfs2_adjust_quota fndecl 0 8777 NULL
133194 +disable_so_ino_btrfs_dir_list_8780 ino btrfs_dir_list 0 8780 NULL
133195 +disable_so_wq_sleep_fndecl_8790 wq_sleep fndecl 0 8790 NULL nohasharray
133196 +disable_so_cbaf_check_fndecl_8790 cbaf_check fndecl 0 8790 &disable_so_wq_sleep_fndecl_8790
133197 +disable_so_matroxfb_g450_setclk_fndecl_8803 matroxfb_g450_setclk fndecl 0 8803 NULL
133198 +disable_so_pt3_attach_fe_fndecl_8812 pt3_attach_fe fndecl 0 8812 NULL nohasharray
133199 +disable_so_nilfs_cpfile_get_checkpoint_fndecl_8812 nilfs_cpfile_get_checkpoint fndecl 0 8812 &disable_so_pt3_attach_fe_fndecl_8812
133200 +disable_so_sys_set_mempolicy_fndecl_8819 sys_set_mempolicy fndecl 0 8819 NULL
133201 +disable_so_replace_page_cache_page_fndecl_8822 replace_page_cache_page fndecl 0 8822 NULL
133202 +disable_so___pci_request_region_fndecl_8825 __pci_request_region fndecl 0 8825 NULL
133203 +disable_so_memtype_rb_check_conflict_fndecl_8830 memtype_rb_check_conflict fndecl 0 8830 NULL
133204 +disable_so_snd_soc_add_platform_fndecl_8834 snd_soc_add_platform fndecl 0 8834 NULL
133205 +disable_so_blkno2_xfs_da_args_8858 blkno2 xfs_da_args 0 8858 NULL
133206 +disable_so_hash_netiface6_add_fndecl_8863 hash_netiface6_add fndecl 0 8863 NULL
133207 +disable_so_cma_bind_loopback_fndecl_8866 cma_bind_loopback fndecl 0 8866 NULL
133208 +disable_so_if_usb_probe_fndecl_8868 if_usb_probe fndecl 0 8868 NULL
133209 +disable_so_dm_set_target_max_io_len_fndecl_8872 dm_set_target_max_io_len fndecl 0 8872 NULL
133210 +disable_so_apei_res_add_fndecl_8881 apei_res_add fndecl 0 8881 NULL
133211 +disable_so_move_addr_to_kernel_fndecl_8882 move_addr_to_kernel fndecl 0 8882 NULL
133212 +disable_so_port100_in_send_cmd_fndecl_8886 port100_in_send_cmd fndecl 0 8886 NULL
133213 +disable_so_lp_read_fndecl_8888 lp_read fndecl 0 8888 NULL
133214 +disable_so_ct_mixer_get_mem_fndecl_8893 ct_mixer_get_mem fndecl 0 8893 NULL
133215 +disable_so_rpm_resume_fndecl_8909 rpm_resume fndecl 0 8909 NULL
133216 +disable_so_check_bdq_fndecl_8915 check_bdq fndecl 0 8915 NULL
133217 +disable_so_xfs_filestream_new_ag_fndecl_8916 xfs_filestream_new_ag fndecl 0 8916 NULL nohasharray
133218 +disable_so___drbd_cfg_context_from_attrs_fndecl_8916 __drbd_cfg_context_from_attrs fndecl 0 8916 &disable_so_xfs_filestream_new_ag_fndecl_8916
133219 +disable_so_xfs_bmbt_update_fndecl_8922 xfs_bmbt_update fndecl 0 8922 NULL
133220 +disable_so_rt2x00debug_read_queue_dump_fndecl_8923 rt2x00debug_read_queue_dump fndecl 0 8923 NULL
133221 +disable_so_data_size_mdp_superblock_1_8925 data_size mdp_superblock_1 0 8925 NULL
133222 +disable_so_begin_cmd_fndecl_8941 begin_cmd fndecl 0 8941 NULL
133223 +disable_so_nforce2_s4985_init_fndecl_8948 nforce2_s4985_init fndecl 0 8948 NULL
133224 +disable_so_e1000_alloc_ring_dma_fndecl_8950 e1000_alloc_ring_dma fndecl 0 8950 NULL
133225 +disable_so_pch_gpio_probe_fndecl_8970 pch_gpio_probe fndecl 0 8970 NULL
133226 +disable_so_pc300_ioctl_fndecl_8981 pc300_ioctl fndecl 0 8981 NULL
133227 +disable_so_ocfs2_xattr_find_entry_fndecl_8983 ocfs2_xattr_find_entry fndecl 0 8983 NULL
133228 +disable_so_i40e_init_arq_fndecl_8988 i40e_init_arq fndecl 0 8988 NULL
133229 +disable_so_ubifs_read_master_fndecl_8999 ubifs_read_master fndecl 0 8999 NULL nohasharray
133230 +disable_so_mlx4_ib_steer_qp_reg_fndecl_8999 mlx4_ib_steer_qp_reg fndecl 0 8999 &disable_so_ubifs_read_master_fndecl_8999 nohasharray
133231 +disable_so_ethtool_flash_device_fndecl_8999 ethtool_flash_device fndecl 0 8999 &disable_so_mlx4_ib_steer_qp_reg_fndecl_8999
133232 +disable_so_mpu401_ioctl_fndecl_9007 mpu401_ioctl fndecl 0 9007 NULL
133233 +disable_so_tcp_v4_init_req_fndecl_9009 tcp_v4_init_req fndecl 0 9009 NULL
133234 +disable_so_vb2_dvb_register_frontend_fndecl_9015 vb2_dvb_register_frontend fndecl 0 9015 NULL
133235 +disable_so_size_amd_smbus_9016 size amd_smbus 0 9016 NULL
133236 +disable_so_mwifiex_sdio_probe_fndecl_9021 mwifiex_sdio_probe fndecl 0 9021 NULL
133237 +disable_so_find_ci_fndecl_9022 find_ci fndecl 0 9022 NULL
133238 +disable_so_cinergyt2_streaming_ctrl_fndecl_9023 cinergyt2_streaming_ctrl fndecl 0 9023 NULL
133239 +disable_so_xfs_bmap_extsize_align_fndecl_9025 xfs_bmap_extsize_align fndecl 0 9025 NULL
133240 +disable_so_decode_rc_list_fndecl_9042 decode_rc_list fndecl 0 9042 NULL nohasharray
133241 +disable_so_slave_update_fndecl_9042 slave_update fndecl 0 9042 &disable_so_decode_rc_list_fndecl_9042
133242 +disable_so_usb_isoc_urb_init_fndecl_9062 usb_isoc_urb_init fndecl 0 9062 NULL
133243 +disable_so__drbd_bm_find_next_fndecl_9063 _drbd_bm_find_next fndecl 0 9063 NULL
133244 +disable_so_ocrdma_get_mbx_cqe_errno_fndecl_9064 ocrdma_get_mbx_cqe_errno fndecl 0 9064 NULL
133245 +disable_so_usbtmc_read_fndecl_9066 usbtmc_read fndecl 0 9066 NULL
133246 +disable_so_klsi_105_get_line_state_fndecl_9067 klsi_105_get_line_state fndecl 0 9067 NULL
133247 +disable_so_vl600_bind_fndecl_9068 vl600_bind fndecl 0 9068 NULL
133248 +disable_so_gspca_input_connect_fndecl_9074 gspca_input_connect fndecl 0 9074 NULL
133249 +disable_so_ahc_linux_register_host_fndecl_9076 ahc_linux_register_host fndecl 0 9076 NULL
133250 +disable_so_con_set_trans_new_fndecl_9078 con_set_trans_new fndecl 0 9078 NULL
133251 +disable_so_hashtab_insert_fndecl_9087 hashtab_insert fndecl 0 9087 NULL
133252 +disable_so___add_missing_keys_fndecl_9089 __add_missing_keys fndecl 0 9089 NULL nohasharray
133253 +disable_so_vnic_dev_set_ig_vlan_rewrite_mode_fndecl_9089 vnic_dev_set_ig_vlan_rewrite_mode fndecl 0 9089 &disable_so___add_missing_keys_fndecl_9089
133254 +disable_so_width_fb_fillrect_9090 width fb_fillrect 0 9090 NULL
133255 +disable_so_vmci_qp_alloc_fndecl_9094 vmci_qp_alloc fndecl 0 9094 NULL
133256 +disable_so_dbReAlloc_fndecl_9096 dbReAlloc fndecl 0 9096 NULL
133257 +disable_so_xfs_rtmount_inodes_fndecl_9101 xfs_rtmount_inodes fndecl 0 9101 NULL
133258 +disable_so_init_iommu_from_acpi_fndecl_9116 init_iommu_from_acpi fndecl 0 9116 NULL
133259 +disable_so_get_version_fndecl_9117 get_version fndecl 0 9117 NULL
133260 +disable_so_init_card_fndecl_9118 init_card fndecl 0 9118 NULL nohasharray
133261 +disable_so_ati_remote_probe_fndecl_9118 ati_remote_probe fndecl 0 9118 &disable_so_init_card_fndecl_9118
133262 +disable_so_ip6_route_add_fndecl_9121 ip6_route_add fndecl 0 9121 NULL
133263 +disable_so_xfs_alloc_put_freelist_fndecl_9126 xfs_alloc_put_freelist fndecl 0 9126 NULL
133264 +disable_so_hwarc_get_version_fndecl_9154 hwarc_get_version fndecl 0 9154 NULL
133265 +disable_so_fill_readbuf_fndecl_9155 fill_readbuf fndecl 0 9155 NULL
133266 +disable_so_dlm_callback_start_fndecl_9162 dlm_callback_start fndecl 0 9162 NULL
133267 +disable_so_ore_io_execute_fndecl_9164 ore_io_execute fndecl 0 9164 NULL
133268 +disable_so___ext4_handle_dirty_super_fndecl_9177 __ext4_handle_dirty_super fndecl 0 9177 NULL
133269 +disable_so_snd_pcm_sync_ptr_fndecl_9182 snd_pcm_sync_ptr fndecl 0 9182 NULL
133270 +disable_so_findintfep_fndecl_9185 findintfep fndecl 0 9185 NULL nohasharray
133271 +disable_so_drm_i2c_encoder_init_fndecl_9185 drm_i2c_encoder_init fndecl 0 9185 &disable_so_findintfep_fndecl_9185
133272 +disable_so_ib_sa_service_rec_query_fndecl_9194 ib_sa_service_rec_query fndecl 0 9194 NULL
133273 +disable_so_file_id_object_info_9209 file_id object_info 0 9209 NULL
133274 +disable_so_radeon_do_wait_for_idle_fndecl_9212 radeon_do_wait_for_idle fndecl 0 9212 NULL nohasharray
133275 +disable_so_parse_hex_line_fndecl_9212 parse_hex_line fndecl 0 9212 &disable_so_radeon_do_wait_for_idle_fndecl_9212
133276 +disable_so_write_rcvrd_mst_node_fndecl_9217 write_rcvrd_mst_node fndecl 0 9217 NULL
133277 +disable_so_loop_get_status_fndecl_9218 loop_get_status fndecl 0 9218 NULL
133278 +disable_so_ieee80211_mgd_auth_fndecl_9219 ieee80211_mgd_auth fndecl 0 9219 NULL
133279 +disable_so_vmci_transport_recv_connecting_client_negotiate_fndecl_9222 vmci_transport_recv_connecting_client_negotiate fndecl 0 9222 NULL
133280 +disable_so_virtnet_find_vqs_fndecl_9223 virtnet_find_vqs fndecl 0 9223 NULL
133281 +disable_so_new_steering_entry_fndecl_9227 new_steering_entry fndecl 0 9227 NULL
133282 +disable_so___netdev_upper_dev_link_fndecl_9231 __netdev_upper_dev_link fndecl 0 9231 NULL nohasharray
133283 +disable_so_acpi_processor_add_fndecl_9231 acpi_processor_add fndecl 0 9231 &disable_so___netdev_upper_dev_link_fndecl_9231
133284 +disable_so_add_probe_files_fndecl_9236 add_probe_files fndecl 0 9236 NULL
133285 +disable_so_is_valid_state_fndecl_9240 is_valid_state fndecl 0 9240 NULL nohasharray
133286 +disable_so_snd_intel8x0_ich_chip_init_fndecl_9240 snd_intel8x0_ich_chip_init fndecl 0 9240 &disable_so_is_valid_state_fndecl_9240
133287 +disable_so_r600_cs_check_reg_fndecl_9245 r600_cs_check_reg fndecl 0 9245 NULL
133288 +disable_so_i2400mu_rx_size_grow_fndecl_9246 i2400mu_rx_size_grow fndecl 0 9246 NULL
133289 +disable_so_phys_pmd_init_fndecl_9251 phys_pmd_init fndecl 0 9251 NULL
133290 +disable_so_dynapro_connect_fndecl_9254 dynapro_connect fndecl 0 9254 NULL
133291 +disable_so_sk_priority_sock_9258 sk_priority sock 0 9258 NULL
133292 +disable_so_node_probe_fndecl_9271 node_probe fndecl 0 9271 NULL
133293 +disable_so_c4iw_id_alloc_fndecl_9298 c4iw_id_alloc fndecl 0 9298 NULL
133294 +disable_so___smsc75xx_mdio_read_fndecl_9301 __smsc75xx_mdio_read fndecl 0 9301 NULL
133295 +disable_so_snd_tea575x_val_to_freq_fndecl_9302 snd_tea575x_val_to_freq fndecl 0 9302 NULL
133296 +disable_so_addr_resolve_fndecl_9304 addr_resolve fndecl 0 9304 NULL
133297 +disable_so_address_mic_vqconfig_9306 address mic_vqconfig 0 9306 NULL nohasharray
133298 +disable_so_ubifs_add_orphan_fndecl_9306 ubifs_add_orphan fndecl 0 9306 &disable_so_address_mic_vqconfig_9306
133299 +disable_so_ttm_bo_move_memcpy_fndecl_9320 ttm_bo_move_memcpy fndecl 0 9320 NULL
133300 +disable_so_update_eth_regs_async_fndecl_9322 update_eth_regs_async fndecl 0 9322 NULL
133301 +disable_so_queue_sendconfig_fndecl_9328 queue_sendconfig fndecl 0 9328 NULL
133302 +disable_so_utimes_common_fndecl_9330 utimes_common fndecl 0 9330 NULL
133303 +disable_so_sys_mincore_fndecl_9332 sys_mincore fndecl 0 9332 NULL
133304 +disable_so_create_multi_channel_mode_fndecl_9334 create_multi_channel_mode fndecl 0 9334 NULL
133305 +disable_so_ttm_bo_ioremap_fndecl_9337 ttm_bo_ioremap fndecl 0 9337 NULL
133306 +disable_so_rpc_localaddr_fndecl_9346 rpc_localaddr fndecl 0 9346 NULL
133307 +disable_so_cap_validate_magic_fndecl_9351 cap_validate_magic fndecl 0 9351 NULL
133308 +disable_so__cancel_lock_fndecl_9353 _cancel_lock fndecl 0 9353 NULL
133309 +disable_so_tse_init_rx_buffer_fndecl_9354 tse_init_rx_buffer fndecl 0 9354 NULL
133310 +disable_so_register_vlan_dev_fndecl_9363 register_vlan_dev fndecl 0 9363 NULL
133311 +disable_so_packed_depth_bytes_fndecl_9364 packed_depth_bytes fndecl 0 9364 NULL
133312 +disable_so_string_to_context_struct_fndecl_9366 string_to_context_struct fndecl 0 9366 NULL nohasharray
133313 +disable_so_compat_sys_get_mempolicy_fndecl_9366 compat_sys_get_mempolicy fndecl 0 9366 &disable_so_string_to_context_struct_fndecl_9366
133314 +disable_so_build_node_manager_fndecl_9367 build_node_manager fndecl 0 9367 NULL nohasharray
133315 +disable_so_ax25_uid_ioctl_fndecl_9367 ax25_uid_ioctl fndecl 0 9367 &disable_so_build_node_manager_fndecl_9367
133316 +disable_so_pega_accel_init_fndecl_9404 pega_accel_init fndecl 0 9404 NULL
133317 +disable_so___gpiod_request_fndecl_9416 __gpiod_request fndecl 0 9416 NULL
133318 +disable_so_cls_bpf_prog_from_ops_fndecl_9425 cls_bpf_prog_from_ops fndecl 0 9425 NULL
133319 +disable_so__regulator_do_disable_fndecl_9428 _regulator_do_disable fndecl 0 9428 NULL nohasharray
133320 +disable_so_pktgen_thread_write_fndecl_9428 pktgen_thread_write fndecl 0 9428 &disable_so__regulator_do_disable_fndecl_9428
133321 +disable_so_pci_create_capabilities_sysfs_fndecl_9445 pci_create_capabilities_sysfs fndecl 0 9445 NULL
133322 +disable_so_atm_get_addr_fndecl_9446 atm_get_addr fndecl 0 9446 NULL
133323 +disable_so_e1000_setup_rx_resources_fndecl_9453 e1000_setup_rx_resources fndecl 0 9453 NULL
133324 +disable_so_parse_redboot_partitions_fndecl_9455 parse_redboot_partitions fndecl 0 9455 NULL
133325 +disable_so_snd_pcm_plugin_build_rate_fndecl_9456 snd_pcm_plugin_build_rate fndecl 0 9456 NULL
133326 +disable_so_mtdchar_readoob_fndecl_9459 mtdchar_readoob fndecl 0 9459 NULL
133327 +disable_so_get_rx_bufs_fndecl_9461 get_rx_bufs fndecl 0 9461 NULL
133328 +disable_so_mtip_pci_probe_fndecl_9463 mtip_pci_probe fndecl 0 9463 NULL
133329 +disable_so_fr_add_pvc_fndecl_9467 fr_add_pvc fndecl 0 9467 NULL
133330 +disable_so_hub_port_status_fndecl_9473 hub_port_status fndecl 0 9473 NULL nohasharray
133331 +disable_so_usif_notify_put_fndecl_9473 usif_notify_put fndecl 0 9473 &disable_so_hub_port_status_fndecl_9473
133332 +disable_so_ldm_partition_fndecl_9478 ldm_partition fndecl 0 9478 NULL
133333 +disable_so_nfs_probe_destination_fndecl_9482 nfs_probe_destination fndecl 0 9482 NULL
133334 +disable_so_radeon_fence_wait_next_fndecl_9505 radeon_fence_wait_next fndecl 0 9505 NULL
133335 +disable_so_fillonedir_fndecl_9511 fillonedir fndecl 0 9511 NULL
133336 +disable_so_iwl_mvm_phy_ctxt_add_fndecl_9527 iwl_mvm_phy_ctxt_add fndecl 0 9527 NULL
133337 +disable_so_i2c_type_bootmode_fndecl_9529 i2c_type_bootmode fndecl 0 9529 NULL
133338 +disable_so_mmc_ioctl_cdrom_read_audio_fndecl_9531 mmc_ioctl_cdrom_read_audio fndecl 0 9531 NULL
133339 +disable_so_ath10k_pci_bmi_wait_fndecl_9533 ath10k_pci_bmi_wait fndecl 0 9533 NULL
133340 +disable_so_nv50_display_create_fndecl_9534 nv50_display_create fndecl 0 9534 NULL
133341 +disable_so_populate_cache_leaves_fndecl_9539 populate_cache_leaves fndecl 0 9539 NULL
133342 +disable_so_ax_changedmtu_fndecl_9549 ax_changedmtu fndecl 0 9549 NULL
133343 +disable_so_do_execute_ddcb_fndecl_9553 do_execute_ddcb fndecl 0 9553 NULL
133344 +disable_so_ip_vs_del_dest_fndecl_9560 ip_vs_del_dest fndecl 0 9560 NULL
133345 +disable_so_mlx4_load_fw_fndecl_9570 mlx4_load_fw fndecl 0 9570 NULL
133346 +disable_so_sctp_setsockopt_auth_chunk_fndecl_9576 sctp_setsockopt_auth_chunk fndecl 0 9576 NULL
133347 +disable_so_splice_from_pipe_next_fndecl_9588 splice_from_pipe_next fndecl 0 9588 NULL
133348 +disable_so_get_resource_fndecl_9591 get_resource fndecl 0 9591 NULL
133349 +disable_so_xlog_grant_head_wait_fndecl_9598 xlog_grant_head_wait fndecl 0 9598 NULL
133350 +disable_so_dbg_check_key_order_fndecl_9600 dbg_check_key_order fndecl 0 9600 NULL
133351 +disable_so_dlm_device_register_fndecl_9601 dlm_device_register fndecl 0 9601 NULL
133352 +disable_so_fallible_read_node_fndecl_9604 fallible_read_node fndecl 0 9604 NULL
133353 +disable_so_efx_ef10_get_sysclk_freq_fndecl_9605 efx_ef10_get_sysclk_freq fndecl 0 9605 NULL
133354 +disable_so_pega_rfkill_setup_fndecl_9617 pega_rfkill_setup fndecl 0 9617 NULL
133355 +disable_so_xpc_allocate_send_msg_slot_uv_fndecl_9624 xpc_allocate_send_msg_slot_uv fndecl 0 9624 NULL
133356 +disable_so_copy_to_iter_fndecl_9638 copy_to_iter fndecl 0 9638 NULL
133357 +disable_so_rocker_port_vlan_flood_group_fndecl_9647 rocker_port_vlan_flood_group fndecl 0 9647 NULL
133358 +disable_so_gpio_request_one_fndecl_9650 gpio_request_one fndecl 0 9650 NULL
133359 +disable_so_mwifiex_cmd_802_11_ad_hoc_join_fndecl_9664 mwifiex_cmd_802_11_ad_hoc_join fndecl 0 9664 NULL
133360 +disable_so_digi_port_init_fndecl_9671 digi_port_init fndecl 0 9671 NULL
133361 +disable_so_tsi148_crcsr_init_fndecl_9675 tsi148_crcsr_init fndecl 0 9675 NULL
133362 +disable_so_sctp_do_bind_fndecl_9676 sctp_do_bind fndecl 0 9676 NULL
133363 +disable_so_length_hpfs_dirent_9682 length hpfs_dirent 0 9682 NULL
133364 +disable_so_ext4_mb_alloc_groupinfo_fndecl_9683 ext4_mb_alloc_groupinfo fndecl 0 9683 NULL
133365 +disable_so_scrub_pages_for_parity_fndecl_9684 scrub_pages_for_parity fndecl 0 9684 NULL
133366 +disable_so_osd_req_decode_sense_full_fndecl_9685 osd_req_decode_sense_full fndecl 0 9685 NULL
133367 +disable_so_parent_objectid_btrfs_fid_9687 parent_objectid btrfs_fid 0 9687 NULL
133368 +disable_so_lpfc_sli4_alloc_resource_identifiers_fndecl_9694 lpfc_sli4_alloc_resource_identifiers fndecl 0 9694 NULL
133369 +disable_so_find_free_dev_extent_fndecl_9696 find_free_dev_extent fndecl 0 9696 NULL
133370 +disable_so_dev_pm_qos_expose_latency_limit_fndecl_9720 dev_pm_qos_expose_latency_limit fndecl 0 9720 NULL
133371 +disable_so_reserve_space_fndecl_9722 reserve_space fndecl 0 9722 NULL
133372 +disable_so_start_bidx_of_node_fndecl_9724 start_bidx_of_node fndecl 0 9724 NULL
133373 +disable_so_mtd_block_markbad_fndecl_9740 mtd_block_markbad fndecl 0 9740 NULL
133374 +disable_so_iterate_object_props_fndecl_9747 iterate_object_props fndecl 0 9747 NULL
133375 +disable_so_uwb_rc_mac_addr_setup_fndecl_9754 uwb_rc_mac_addr_setup fndecl 0 9754 NULL
133376 +disable_so_il4965_hwrate_to_plcp_idx_fndecl_9755 il4965_hwrate_to_plcp_idx fndecl 0 9755 NULL
133377 +disable_so_snd_ac97_bus_fndecl_9773 snd_ac97_bus fndecl 0 9773 NULL
133378 +disable_so_encap_hlen_ip_tunnel_9779 encap_hlen ip_tunnel 0 9779 NULL
133379 +disable_so_wacom_set_report_fndecl_9783 wacom_set_report fndecl 0 9783 NULL
133380 +disable_so_r600_parse_extended_power_table_fndecl_9801 r600_parse_extended_power_table fndecl 0 9801 NULL
133381 +disable_so_logi_dj_probe_fndecl_9808 logi_dj_probe fndecl 0 9808 NULL
133382 +disable_so_phy_attach_direct_fndecl_9815 phy_attach_direct fndecl 0 9815 NULL
133383 +disable_so_snd_mpu401_uart_new_fndecl_9822 snd_mpu401_uart_new fndecl 0 9822 NULL
133384 +disable_so_digi_startup_fndecl_9836 digi_startup fndecl 0 9836 NULL
133385 +disable_so_softing_chip_poweron_fndecl_9839 softing_chip_poweron fndecl 0 9839 NULL
133386 +disable_so_kobject_set_name_fndecl_9842 kobject_set_name fndecl 0 9842 NULL
133387 +disable_so_flash_wait_op_fndecl_9849 flash_wait_op fndecl 0 9849 NULL
133388 +disable_so_hpwdt_ioctl_fndecl_9853 hpwdt_ioctl fndecl 0 9853 NULL
133389 +disable_so_snd_cx23885_hw_params_fndecl_9863 snd_cx23885_hw_params fndecl 0 9863 NULL
133390 +disable_so_t4vf_sge_init_fndecl_9865 t4vf_sge_init fndecl 0 9865 NULL
133391 +disable_so_memcg_init_list_lru_fndecl_9871 memcg_init_list_lru fndecl 0 9871 NULL
133392 +disable_so_rx_dma_spi_transfer_9878 rx_dma spi_transfer 0 9878 NULL
133393 +disable_so_mwifiex_update_autoindex_ies_fndecl_9881 mwifiex_update_autoindex_ies fndecl 0 9881 NULL
133394 +disable_so_ipwireless_ppp_start_xmit_fndecl_9891 ipwireless_ppp_start_xmit fndecl 0 9891 NULL
133395 +disable_so_rocker_flow_tbl_del_fndecl_9910 rocker_flow_tbl_del fndecl 0 9910 NULL
133396 +disable_so_ip_rfc1001_connect_fndecl_9917 ip_rfc1001_connect fndecl 0 9917 NULL
133397 +disable_so_wl1251_acx_slot_fndecl_9920 wl1251_acx_slot fndecl 0 9920 NULL
133398 +disable_so_init_pwm_fndecl_9944 init_pwm fndecl 0 9944 NULL
133399 +disable_so_jbd2_journal_load_fndecl_9949 jbd2_journal_load fndecl 0 9949 NULL
133400 +disable_so_mwifiex_process_sta_cmdresp_fndecl_9953 mwifiex_process_sta_cmdresp fndecl 0 9953 NULL
133401 +disable_so_ath6kl_wmi_send_probe_response_cmd_fndecl_9955 ath6kl_wmi_send_probe_response_cmd fndecl 0 9955 NULL
133402 +disable_so_skcipher_wait_for_data_fndecl_9959 skcipher_wait_for_data fndecl 0 9959 NULL
133403 +disable_so_eeepc_setup_pci_hotplug_fndecl_9962 eeepc_setup_pci_hotplug fndecl 0 9962 NULL
133404 +disable_so_apply_constraint_fndecl_9969 apply_constraint fndecl 0 9969 NULL
133405 +disable_so_gru_dump_tgh_fndecl_9976 gru_dump_tgh fndecl 0 9976 NULL
133406 +disable_so_threshold_create_bank_fndecl_9985 threshold_create_bank fndecl 0 9985 NULL
133407 +disable_so_dm_rh_region_to_sector_fndecl_9992 dm_rh_region_to_sector fndecl 0 9992 NULL
133408 +disable_so_storvsc_probe_fndecl_9994 storvsc_probe fndecl 0 9994 NULL
133409 +disable_so_ide_pci_init_two_fndecl_10000 ide_pci_init_two fndecl 0 10000 NULL
133410 +disable_so_SMB2_sess_setup_fndecl_10002 SMB2_sess_setup fndecl 0 10002 NULL nohasharray
133411 +disable_so_sample_bits_twl4030_priv_10002 sample_bits twl4030_priv 0 10002 &disable_so_SMB2_sess_setup_fndecl_10002
133412 +disable_so_tty_check_change_fndecl_10011 tty_check_change fndecl 0 10011 NULL
133413 +disable_so_prism2_hostapd_sta_clear_stats_fndecl_10021 prism2_hostapd_sta_clear_stats fndecl 0 10021 NULL
133414 +disable_so_add_dataflash_otp_fndecl_10031 add_dataflash_otp fndecl 0 10031 NULL
133415 +disable_so_max3100_probe_fndecl_10064 max3100_probe fndecl 0 10064 NULL
133416 +disable_so_qlcnic_sriov_channel_cfg_cmd_fndecl_10084 qlcnic_sriov_channel_cfg_cmd fndecl 0 10084 NULL
133417 +disable_so_snd_seq_enqueue_event_fndecl_10087 snd_seq_enqueue_event fndecl 0 10087 NULL
133418 +disable_so_sound_install_audiodrv_fndecl_10090 sound_install_audiodrv fndecl 0 10090 NULL
133419 +disable_so_radix_tree_insert_fndecl_10107 radix_tree_insert fndecl 0 10107 NULL
133420 +disable_so_platform_device_add_fndecl_10111 platform_device_add fndecl 0 10111 NULL
133421 +disable_so_xen_pcibk_config_quirks_add_field_fndecl_10112 xen_pcibk_config_quirks_add_field fndecl 0 10112 NULL
133422 +disable_so_pc300_pci_init_one_fndecl_10118 pc300_pci_init_one fndecl 0 10118 NULL
133423 +disable_so_netlbl_mgmt_add_common_fndecl_10121 netlbl_mgmt_add_common fndecl 0 10121 NULL
133424 +disable_so_i40e_add_del_fdir_udpv4_fndecl_10137 i40e_add_del_fdir_udpv4 fndecl 0 10137 NULL
133425 +disable_so_lowpan_newlink_fndecl_10146 lowpan_newlink fndecl 0 10146 NULL
133426 +disable_so_i915_gem_object_put_fence_fndecl_10150 i915_gem_object_put_fence fndecl 0 10150 NULL
133427 +disable_so_wl12xx_cmd_croc_fndecl_10157 wl12xx_cmd_croc fndecl 0 10157 NULL
133428 +disable_so_efx_mcdi_loopback_modes_fndecl_10161 efx_mcdi_loopback_modes fndecl 0 10161 NULL
133429 +disable_so_qd_fish_fndecl_10166 qd_fish fndecl 0 10166 NULL
133430 +disable_so_iscsi_target_locate_portal_fndecl_10172 iscsi_target_locate_portal fndecl 0 10172 NULL
133431 +disable_so__set_memory_uc_fndecl_10180 _set_memory_uc fndecl 0 10180 NULL
133432 +disable_so_transport_alloc_session_tags_fndecl_10186 transport_alloc_session_tags fndecl 0 10186 NULL
133433 +disable_so_iio_buffer_add_demux_fndecl_10190 iio_buffer_add_demux fndecl 0 10190 NULL
133434 +disable_so_rose_ioctl_fndecl_10193 rose_ioctl fndecl 0 10193 NULL
133435 +disable_so_queue_sendconfigword_fndecl_10203 queue_sendconfigword fndecl 0 10203 NULL nohasharray
133436 +disable_so_iuu_open_fndecl_10203 iuu_open fndecl 0 10203 &disable_so_queue_sendconfigword_fndecl_10203
133437 +disable_so___ext4_journal_get_write_access_fndecl_10217 __ext4_journal_get_write_access fndecl 0 10217 NULL
133438 +disable_so__regmap_update_bits_fndecl_10227 _regmap_update_bits fndecl 0 10227 NULL
133439 +disable_so_nvkm_vm_get_fndecl_10228 nvkm_vm_get fndecl 0 10228 NULL nohasharray
133440 +disable_so_ubifs_log_end_commit_fndecl_10228 ubifs_log_end_commit fndecl 0 10228 &disable_so_nvkm_vm_get_fndecl_10228
133441 +disable_so_ld_usb_probe_fndecl_10229 ld_usb_probe fndecl 0 10229 NULL
133442 +disable_so_input_get_new_minor_fndecl_10235 input_get_new_minor fndecl 0 10235 NULL
133443 +disable_so_bv_len_bio_vec_10239 bv_len bio_vec 0 10239 NULL
133444 +disable_so_radeon_sync_rings_fndecl_10243 radeon_sync_rings fndecl 0 10243 NULL
133445 +disable_so_register_one_node_fndecl_10246 register_one_node fndecl 0 10246 NULL
133446 +disable_so_bnx2x_test_nvram_tbl_fndecl_10260 bnx2x_test_nvram_tbl fndecl 0 10260 NULL nohasharray
133447 +disable_so_snd_soc_add_card_controls_fndecl_10260 snd_soc_add_card_controls fndecl 0 10260 &disable_so_bnx2x_test_nvram_tbl_fndecl_10260 nohasharray
133448 +disable_so_dma_addr_snd_pcm_runtime_10260 dma_addr snd_pcm_runtime 0 10260 &disable_so_snd_soc_add_card_controls_fndecl_10260
133449 +disable_so_jffs2_scan_dirent_node_fndecl_10268 jffs2_scan_dirent_node fndecl 0 10268 NULL
133450 +disable_so_fb_get_hblank_by_dclk_fndecl_10269 fb_get_hblank_by_dclk fndecl 0 10269 NULL
133451 +disable_so_vmw_resource_buf_alloc_fndecl_10284 vmw_resource_buf_alloc fndecl 0 10284 NULL nohasharray
133452 +disable_so_acpi_memory_device_add_fndecl_10284 acpi_memory_device_add fndecl 0 10284 &disable_so_vmw_resource_buf_alloc_fndecl_10284
133453 +disable_so_snd_ali_create_fndecl_10288 snd_ali_create fndecl 0 10288 NULL
133454 +disable_so_o_width_g2d_frame_10291 o_width g2d_frame 0 10291 NULL
133455 +disable_so_arch_setup_dmar_msi_fndecl_10299 arch_setup_dmar_msi fndecl 0 10299 NULL
133456 +disable_so_rsi_send_auto_rate_request_fndecl_10318 rsi_send_auto_rate_request fndecl 0 10318 NULL
133457 +disable_so_blkcipher_walk_next_fndecl_10321 blkcipher_walk_next fndecl 0 10321 NULL
133458 +disable_so_add_nonoui_reg_req_fndecl_10322 add_nonoui_reg_req fndecl 0 10322 NULL
133459 +disable_so_dev_mem_write_fndecl_10335 dev_mem_write fndecl 0 10335 NULL
133460 +disable_so_proc_tcp_available_congestion_control_fndecl_10342 proc_tcp_available_congestion_control fndecl 0 10342 NULL
133461 +disable_so_snd_seq_timer_open_fndecl_10350 snd_seq_timer_open fndecl 0 10350 NULL
133462 +disable_so_cinergyt2_fe_read_snr_fndecl_10358 cinergyt2_fe_read_snr fndecl 0 10358 NULL
133463 +disable_so_bnx2fc_send_rrq_fndecl_10360 bnx2fc_send_rrq fndecl 0 10360 NULL
133464 +disable_so___pci_request_selected_regions_fndecl_10361 __pci_request_selected_regions fndecl 0 10361 NULL
133465 +disable_so_check_rcom_config_fndecl_10384 check_rcom_config fndecl 0 10384 NULL
133466 +disable_so_tipc_node_add_conn_fndecl_10387 tipc_node_add_conn fndecl 0 10387 NULL
133467 +disable_so_vt_do_kdskbmeta_fndecl_10389 vt_do_kdskbmeta fndecl 0 10389 NULL
133468 +disable_so_iomem_base_myri10ge_priv_10393 iomem_base myri10ge_priv 0 10393 NULL
133469 +disable_so_sunkbd_connect_fndecl_10399 sunkbd_connect fndecl 0 10399 NULL
133470 +disable_so_ihead_offs_ubifs_info_10400 ihead_offs ubifs_info 0 10400 NULL
133471 +disable_so_romfs_blk_strnlen_fndecl_10402 romfs_blk_strnlen fndecl 0 10402 NULL
133472 +disable_so_snd_pcm_stream_proc_init_fndecl_10407 snd_pcm_stream_proc_init fndecl 0 10407 NULL nohasharray
133473 +disable_so_iwl_find_otp_image_fndecl_10407 iwl_find_otp_image fndecl 0 10407 &disable_so_snd_pcm_stream_proc_init_fndecl_10407
133474 +disable_so_qib_user_sdma_coalesce_fndecl_10414 qib_user_sdma_coalesce fndecl 0 10414 NULL
133475 +disable_so_ivtvfb_init_card_fndecl_10415 ivtvfb_init_card fndecl 0 10415 NULL nohasharray
133476 +disable_so_size_xt_table_info_10415 size xt_table_info 0 10415 &disable_so_ivtvfb_init_card_fndecl_10415
133477 +disable_so_xfs_iget_cache_miss_fndecl_10416 xfs_iget_cache_miss fndecl 0 10416 NULL
133478 +disable_so_spi_async_locked_fndecl_10422 spi_async_locked fndecl 0 10422 NULL
133479 +disable_so_prism2_download_fndecl_10423 prism2_download fndecl 0 10423 NULL
133480 +disable_so_loop_set_status_fndecl_10431 loop_set_status fndecl 0 10431 NULL
133481 +disable_so_bnx2x_nvram_crc_fndecl_10438 bnx2x_nvram_crc fndecl 0 10438 NULL
133482 +disable_so_mwifiex_cmd_802_11_ad_hoc_start_fndecl_10446 mwifiex_cmd_802_11_ad_hoc_start fndecl 0 10446 NULL
133483 +disable_so___ww_mutex_lock_fndecl_10447 __ww_mutex_lock fndecl 0 10447 NULL
133484 +disable_so_nfs_idmap_lookup_name_fndecl_10449 nfs_idmap_lookup_name fndecl 0 10449 NULL nohasharray
133485 +disable_so_start_transfer_fndecl_10449 start_transfer fndecl 0 10449 &disable_so_nfs_idmap_lookup_name_fndecl_10449
133486 +disable_so_page_shift_nand_chip_10453 page_shift nand_chip 0 10453 NULL
133487 +disable_so_ib_cm_init_qp_attr_fndecl_10455 ib_cm_init_qp_attr fndecl 0 10455 NULL
133488 +disable_so_prism2_ioctl_get_encryption_fndecl_10458 prism2_ioctl_get_encryption fndecl 0 10458 NULL
133489 +disable_so_cirrusfb_create_object_fndecl_10467 cirrusfb_create_object fndecl 0 10467 NULL nohasharray
133490 +disable_so_hrz_open_fndecl_10467 hrz_open fndecl 0 10467 &disable_so_cirrusfb_create_object_fndecl_10467
133491 +disable_so_ip_mc_leave_group_fndecl_10472 ip_mc_leave_group fndecl 0 10472 NULL nohasharray
133492 +disable_so_usblp_ioctl_fndecl_10472 usblp_ioctl fndecl 0 10472 &disable_so_ip_mc_leave_group_fndecl_10472
133493 +disable_so_nfsd4_get_drc_mem_fndecl_10473 nfsd4_get_drc_mem fndecl 0 10473 NULL
133494 +disable_so_lis3lv02d_get_pwron_wait_fndecl_10484 lis3lv02d_get_pwron_wait fndecl 0 10484 NULL
133495 +disable_so_drbd_nla_check_mandatory_fndecl_10496 drbd_nla_check_mandatory fndecl 0 10496 NULL
133496 +disable_so_mptctl_replace_fw_fndecl_10497 mptctl_replace_fw fndecl 0 10497 NULL
133497 +disable_so_wl1251_acx_station_id_fndecl_10503 wl1251_acx_station_id fndecl 0 10503 NULL
133498 +disable_so_sas_smp_phy_control_fndecl_10516 sas_smp_phy_control fndecl 0 10516 NULL
133499 +disable_so_osst_get_sector_fndecl_10528 osst_get_sector fndecl 0 10528 NULL
133500 +disable_so_alloc_host_sq_fndecl_10529 alloc_host_sq fndecl 0 10529 NULL
133501 +disable_so_register_dvb_fndecl_10534 register_dvb fndecl 0 10534 NULL
133502 +disable_so_emi62_writememory_fndecl_10544 emi62_writememory fndecl 0 10544 NULL
133503 +disable_so_saa7134_s_fmt_vid_overlay_fndecl_10547 saa7134_s_fmt_vid_overlay fndecl 0 10547 NULL
133504 +disable_so_read_cis_cache_fndecl_10548 read_cis_cache fndecl 0 10548 NULL
133505 +disable_so_xfs_btree_read_buf_block_fndecl_10555 xfs_btree_read_buf_block fndecl 0 10555 NULL
133506 +disable_so_device_user_deadlock_fndecl_10557 device_user_deadlock fndecl 0 10557 NULL
133507 +disable_so_wcn36xx_start_fndecl_10566 wcn36xx_start fndecl 0 10566 NULL
133508 +disable_so_tg3_irq_count_fndecl_10569 tg3_irq_count fndecl 0 10569 NULL
133509 +disable_so_tsc_connect_fndecl_10581 tsc_connect fndecl 0 10581 NULL
133510 +disable_so_vmw_compat_shader_add_fndecl_10585 vmw_compat_shader_add fndecl 0 10585 NULL
133511 +disable_so_refresh_fb_videomode_10587 refresh fb_videomode 0 10587 NULL
133512 +disable_so_tsi148_dma_list_add_fndecl_10592 tsi148_dma_list_add fndecl 0 10592 NULL
133513 +disable_so_wcn36xx_smd_send_and_wait_fndecl_10595 wcn36xx_smd_send_and_wait fndecl 0 10595 NULL
133514 +disable_so_wl1271_acx_ap_max_tx_retry_fndecl_10603 wl1271_acx_ap_max_tx_retry fndecl 0 10603 NULL
133515 +disable_so_i40e_init_asq_fndecl_10606 i40e_init_asq fndecl 0 10606 NULL
133516 +disable_so_dbAlloc_fndecl_10609 dbAlloc fndecl 0 10609 NULL
133517 +disable_so_ext4_trim_all_free_fndecl_10621 ext4_trim_all_free fndecl 0 10621 NULL
133518 +disable_so_amd_iommu_bind_pasid_fndecl_10635 amd_iommu_bind_pasid fndecl 0 10635 NULL nohasharray
133519 +disable_so_sdio_read_cis_fndecl_10635 sdio_read_cis fndecl 0 10635 &disable_so_amd_iommu_bind_pasid_fndecl_10635
133520 +disable_so_find_writable_block_fndecl_10636 find_writable_block fndecl 0 10636 NULL nohasharray
133521 +disable_so_qib_create_ctxts_fndecl_10636 qib_create_ctxts fndecl 0 10636 &disable_so_find_writable_block_fndecl_10636 nohasharray
133522 +disable_so_pgbase_nfs_pgio_args_10636 pgbase nfs_pgio_args 0 10636 &disable_so_qib_create_ctxts_fndecl_10636
133523 +disable_so_sge_length_ipath_sge_10646 sge_length ipath_sge 0 10646 NULL
133524 +disable_so_il4965_request_scan_fndecl_10649 il4965_request_scan fndecl 0 10649 NULL
133525 +disable_so_ib_send_cm_rep_fndecl_10651 ib_send_cm_rep fndecl 0 10651 NULL
133526 +disable_so_tlv_put_fndecl_10659 tlv_put fndecl 0 10659 NULL
133527 +disable_so_find_free_ctxt_fndecl_10669 find_free_ctxt fndecl 0 10669 NULL nohasharray
133528 +disable_so_nfc_targets_found_fndecl_10669 nfc_targets_found fndecl 0 10669 &disable_so_find_free_ctxt_fndecl_10669
133529 +disable_so_eni_start_fndecl_10672 eni_start fndecl 0 10672 NULL
133530 +disable_so_mmc_test_simple_transfer_fndecl_10675 mmc_test_simple_transfer fndecl 0 10675 NULL
133531 +disable_so___dev_pm_qos_update_request_fndecl_10676 __dev_pm_qos_update_request fndecl 0 10676 NULL
133532 +disable_so_lm8333_probe_fndecl_10677 lm8333_probe fndecl 0 10677 NULL
133533 +disable_so_snd_m3_assp_client_init_fndecl_10678 snd_m3_assp_client_init fndecl 0 10678 NULL
133534 +disable_so_xfs_rtfind_forw_fndecl_10681 xfs_rtfind_forw fndecl 0 10681 NULL
133535 +disable_so_ioctl_add_descriptor_fndecl_10692 ioctl_add_descriptor fndecl 0 10692 NULL
133536 +disable_so_i40e_init_nvm_fndecl_10701 i40e_init_nvm fndecl 0 10701 NULL
133537 +disable_so___mcam_cam_reset_fndecl_10703 __mcam_cam_reset fndecl 0 10703 NULL
133538 +disable_so_afs_write_begin_fndecl_10704 afs_write_begin fndecl 0 10704 NULL
133539 +disable_so_budget_av_attach_fndecl_10707 budget_av_attach fndecl 0 10707 NULL
133540 +disable_so_xfs_alloc_read_agf_fndecl_10710 xfs_alloc_read_agf fndecl 0 10710 NULL
133541 +disable_so_ahash_prepare_alg_fndecl_10721 ahash_prepare_alg fndecl 0 10721 NULL
133542 +disable_so_ib_ucm_path_get_fndecl_10723 ib_ucm_path_get fndecl 0 10723 NULL
133543 +disable_so_security_transition_sid_fndecl_10727 security_transition_sid fndecl 0 10727 NULL
133544 +disable_so_xen_p2m_size_vardecl_10730 xen_p2m_size vardecl 0 10730 NULL
133545 +disable_so_i915_switch_context_fndecl_10731 i915_switch_context fndecl 0 10731 NULL
133546 +disable_so_prism2_hostapd_set_flags_sta_fndecl_10734 prism2_hostapd_set_flags_sta fndecl 0 10734 NULL
133547 +disable_so_nvme_trans_write_buffer_fndecl_10741 nvme_trans_write_buffer fndecl 0 10741 NULL nohasharray
133548 +disable_so_x_offset_mxr_crop_10741 x_offset mxr_crop 0 10741 &disable_so_nvme_trans_write_buffer_fndecl_10741
133549 +disable_so_sisusb_ioctl_fndecl_10744 sisusb_ioctl fndecl 0 10744 NULL
133550 +disable_so_next_blkoff_curseg_info_10751 next_blkoff curseg_info 0 10751 NULL
133551 +disable_so_write_head_fndecl_10754 write_head fndecl 0 10754 NULL
133552 +disable_so_inet_diag_init_fndecl_10755 inet_diag_init fndecl 0 10755 NULL
133553 +disable_so_adu_write_fndecl_10756 adu_write fndecl 0 10756 NULL
133554 +disable_so_policydb_index_fndecl_10760 policydb_index fndecl 0 10760 NULL nohasharray
133555 +disable_so_mxt_object_show_fndecl_10760 mxt_object_show fndecl 0 10760 &disable_so_policydb_index_fndecl_10760
133556 +disable_so_atrtr_delete_fndecl_10761 atrtr_delete fndecl 0 10761 NULL
133557 +disable_so_audio_read_fndecl_10762 audio_read fndecl 0 10762 NULL
133558 +disable_so___cfg80211_join_ibss_fndecl_10765 __cfg80211_join_ibss fndecl 0 10765 NULL
133559 +disable_so_vmci_doorbell_create_fndecl_10781 vmci_doorbell_create fndecl 0 10781 NULL
133560 +disable_so__snd_emu10k1_init_efx_fndecl_10790 _snd_emu10k1_init_efx fndecl 0 10790 NULL
133561 +disable_so_ea_write_fndecl_10791 ea_write fndecl 0 10791 NULL
133562 +disable_so_drm_vblank_get_fndecl_10795 drm_vblank_get fndecl 0 10795 NULL
133563 +disable_so_set_config_fndecl_10797 set_config fndecl 0 10797 NULL
133564 +disable_so_verify_window_lock_fndecl_10802 verify_window_lock fndecl 0 10802 NULL
133565 +disable_so_xfs_setattr_nonsize_fndecl_10821 xfs_setattr_nonsize fndecl 0 10821 NULL nohasharray
133566 +disable_so_ipoctal_probe_fndecl_10821 ipoctal_probe fndecl 0 10821 &disable_so_xfs_setattr_nonsize_fndecl_10821
133567 +disable_so_usb_serial_generic_open_fndecl_10826 usb_serial_generic_open fndecl 0 10826 NULL
133568 +disable_so_mtd_writev_fndecl_10834 mtd_writev fndecl 0 10834 NULL
133569 +disable_so_rsrc_start_usb_hcd_10839 rsrc_start usb_hcd 0 10839 NULL
133570 +disable_so_moxa_get_serial_info_fndecl_10841 moxa_get_serial_info fndecl 0 10841 NULL
133571 +disable_so_do_generic_file_read_fndecl_10842 do_generic_file_read fndecl 0 10842 NULL
133572 +disable_so_si470x_start_usb_fndecl_10843 si470x_start_usb fndecl 0 10843 NULL
133573 +disable_so_efx_nic_alloc_buffer_fndecl_10851 efx_nic_alloc_buffer fndecl 0 10851 NULL
133574 +disable_so_scan_all_fndecl_10856 scan_all fndecl 0 10856 NULL
133575 +disable_so_snd_hdsp_enable_io_fndecl_10858 snd_hdsp_enable_io fndecl 0 10858 NULL
133576 +disable_so_ntb_bwd_setup_fndecl_10861 ntb_bwd_setup fndecl 0 10861 NULL
133577 +disable_so_xlated_setup_gnttab_pages_fndecl_10863 xlated_setup_gnttab_pages fndecl 0 10863 NULL
133578 +disable_so_io_ctl_check_crc_fndecl_10871 io_ctl_check_crc fndecl 0 10871 NULL
133579 +disable_so_pstore_register_fndecl_10875 pstore_register fndecl 0 10875 NULL
133580 +disable_so_snd_hdspm_create_hwdep_fndecl_10879 snd_hdspm_create_hwdep fndecl 0 10879 NULL
133581 +disable_so_kovaplus_get_profile_buttons_fndecl_10886 kovaplus_get_profile_buttons fndecl 0 10886 NULL
133582 +disable_so_init_uevent_argv_fndecl_10895 init_uevent_argv fndecl 0 10895 NULL
133583 +disable_so_atc_pcm_playback_prepare_fndecl_10897 atc_pcm_playback_prepare fndecl 0 10897 NULL
133584 +disable_so_snd_hdsp_create_pcm_fndecl_10898 snd_hdsp_create_pcm fndecl 0 10898 NULL
133585 +disable_so_hfsplus_delete_attr_fndecl_10903 hfsplus_delete_attr fndecl 0 10903 NULL
133586 +disable_so_ieee802154_max_payload_fndecl_10928 ieee802154_max_payload fndecl 0 10928 NULL
133587 +disable_so_bd_queue_allocate_fndecl_10931 bd_queue_allocate fndecl 0 10931 NULL
133588 +disable_so_ath6kl_fetch_testscript_file_fndecl_10936 ath6kl_fetch_testscript_file fndecl 0 10936 NULL
133589 +disable_so_daio_mgr_get_rsc_fndecl_10938 daio_mgr_get_rsc fndecl 0 10938 NULL
133590 +disable_so_garmin_init_session_fndecl_10950 garmin_init_session fndecl 0 10950 NULL
133591 +disable_so_pt3_alloc_dmabuf_fndecl_10951 pt3_alloc_dmabuf fndecl 0 10951 NULL
133592 +disable_so_vxge_probe_fw_update_fndecl_10961 vxge_probe_fw_update fndecl 0 10961 NULL
133593 +disable_so_blkfront_probe_fndecl_10965 blkfront_probe fndecl 0 10965 NULL
133594 +disable_so_jffs2_flash_read_fndecl_10968 jffs2_flash_read fndecl 0 10968 NULL
133595 +disable_so_fw_iso_buffer_map_dma_fndecl_10979 fw_iso_buffer_map_dma fndecl 0 10979 NULL
133596 +disable_so_wdt_start_fndecl_10986 wdt_start fndecl 0 10986 NULL
133597 +disable_so_msize_vardecl_pmc551_c_10989 msize vardecl_pmc551.c 0 10989 NULL
133598 +disable_so_bcma_get_next_core_fndecl_10990 bcma_get_next_core fndecl 0 10990 NULL
133599 +disable_so_height_v4l2_rect_10995 height v4l2_rect 0 10995 NULL
133600 +disable_so_config_port_tpm_inf_dev_10998 config_port tpm_inf_dev 0 10998 NULL
133601 +disable_so_sctp_v4_protosw_init_fndecl_11004 sctp_v4_protosw_init fndecl 0 11004 NULL
133602 +disable_so_xfs_bmap_add_extent_unwritten_real_fndecl_11006 xfs_bmap_add_extent_unwritten_real fndecl 0 11006 NULL nohasharray
133603 +disable_so_iwl_dbgfs_set_nic_temperature_write_fndecl_11006 iwl_dbgfs_set_nic_temperature_write fndecl 0 11006 &disable_so_xfs_bmap_add_extent_unwritten_real_fndecl_11006
133604 +disable_so_snd_vt1724_create_fndecl_11008 snd_vt1724_create fndecl 0 11008 NULL
133605 +disable_so_height_v4l2_pix_format_mplane_11015 height v4l2_pix_format_mplane 0 11015 NULL
133606 +disable_so_em28xx_write_reg_fndecl_11020 em28xx_write_reg fndecl 0 11020 NULL
133607 +disable_so_register_virtio_driver_fndecl_11025 register_virtio_driver fndecl 0 11025 NULL
133608 +disable_so_ocfs2_info_freefrag_scan_bitmap_fndecl_11032 ocfs2_info_freefrag_scan_bitmap fndecl 0 11032 NULL
133609 +disable_so_iscsit_reject_cmd_fndecl_11037 iscsit_reject_cmd fndecl 0 11037 NULL
133610 +disable_so_ocrdma_copy_pd_uresp_fndecl_11039 ocrdma_copy_pd_uresp fndecl 0 11039 NULL
133611 +disable_so_softing_card_boot_fndecl_11042 softing_card_boot fndecl 0 11042 NULL
133612 +disable_so_gru_dump_chiplet_request_fndecl_11046 gru_dump_chiplet_request fndecl 0 11046 NULL
133613 +disable_so_ocfs2_info_handle_fs_features_fndecl_11047 ocfs2_info_handle_fs_features fndecl 0 11047 NULL nohasharray
133614 +disable_so_snd_seq_deliver_event_fndecl_11047 snd_seq_deliver_event fndecl 0 11047 &disable_so_ocfs2_info_handle_fs_features_fndecl_11047
133615 +disable_so_io_vardecl_sc1200wdt_c_11051 io vardecl_sc1200wdt.c 0 11051 NULL
133616 +disable_so_migrate_page_fndecl_11073 migrate_page fndecl 0 11073 NULL
133617 +disable_so_ir_create_table_fndecl_11084 ir_create_table fndecl 0 11084 NULL
133618 +disable_so___av7110_send_fw_cmd_fndecl_11087 __av7110_send_fw_cmd fndecl 0 11087 NULL
133619 +disable_so_nilfs_segbuf_extend_payload_fndecl_11091 nilfs_segbuf_extend_payload fndecl 0 11091 NULL nohasharray
133620 +disable_so_snd_pcm_new_internal_fndecl_11091 snd_pcm_new_internal fndecl 0 11091 &disable_so_nilfs_segbuf_extend_payload_fndecl_11091
133621 +disable_so_scsi_mq_setup_tags_fndecl_11093 scsi_mq_setup_tags fndecl 0 11093 NULL
133622 +disable_so_chameleon_parse_cells_fndecl_11094 chameleon_parse_cells fndecl 0 11094 NULL
133623 +disable_so_hw_io_ene_device_11095 hw_io ene_device 0 11095 NULL
133624 +disable_so__ctl_send_release_fndecl_11102 _ctl_send_release fndecl 0 11102 NULL
133625 +disable_so_mwl8k_cmd_update_encryption_enable_fndecl_11119 mwl8k_cmd_update_encryption_enable fndecl 0 11119 NULL
133626 +disable_so_gfs2_trans_begin_fndecl_11140 gfs2_trans_begin fndecl 0 11140 NULL
133627 +disable_so_pci_pm_reset_fndecl_11149 pci_pm_reset fndecl 0 11149 NULL
133628 +disable_so_generic_ptrace_pokedata_fndecl_11153 generic_ptrace_pokedata fndecl 0 11153 NULL
133629 +disable_so_evergreen_cs_track_check_fndecl_11175 evergreen_cs_track_check fndecl 0 11175 NULL nohasharray
133630 +disable_so_fdtv_dvb_register_fndecl_11175 fdtv_dvb_register fndecl 0 11175 &disable_so_evergreen_cs_track_check_fndecl_11175
133631 +disable_so_c4iw_init_resource_fndecl_11178 c4iw_init_resource fndecl 0 11178 NULL
133632 +disable_so_sb_pnp_probe_fndecl_11179 sb_pnp_probe fndecl 0 11179 NULL
133633 +disable_so_e1000e_setup_tx_resources_fndecl_11181 e1000e_setup_tx_resources fndecl 0 11181 NULL
133634 +disable_so_sys_get_mempolicy_fndecl_11192 sys_get_mempolicy fndecl 0 11192 NULL
133635 +disable_so_nilfs_sufile_updatev_fndecl_11196 nilfs_sufile_updatev fndecl 0 11196 NULL
133636 +disable_so_wl1271_acx_fm_coex_fndecl_11197 wl1271_acx_fm_coex fndecl 0 11197 NULL
133637 +disable_so_ibmasm_init_one_fndecl_11199 ibmasm_init_one fndecl 0 11199 NULL
133638 +disable_so_mlx4_init_eq_table_fndecl_11204 mlx4_init_eq_table fndecl 0 11204 NULL
133639 +disable_so_usb_register_driver_fndecl_11216 usb_register_driver fndecl 0 11216 NULL
133640 +disable_so_macvlan_port_create_fndecl_11218 macvlan_port_create fndecl 0 11218 NULL
133641 +disable_so__drbd_bm_find_next_zero_fndecl_11228 _drbd_bm_find_next_zero fndecl 0 11228 NULL
133642 +disable_so_btusb_submit_isoc_urb_fndecl_11230 btusb_submit_isoc_urb fndecl 0 11230 NULL
133643 +disable_so_nilfs_sync_super_fndecl_11236 nilfs_sync_super fndecl 0 11236 NULL
133644 +disable_so_qlcnic_83xx_check_cmd_peg_status_fndecl_11237 qlcnic_83xx_check_cmd_peg_status fndecl 0 11237 NULL
133645 +disable_so_ni_initialize_mc_reg_table_fndecl_11247 ni_initialize_mc_reg_table fndecl 0 11247 NULL
133646 +disable_so_tb_drom_parse_entries_fndecl_11257 tb_drom_parse_entries fndecl 0 11257 NULL
133647 +disable_so_pm8001_get_phy_settings_info_fndecl_11263 pm8001_get_phy_settings_info fndecl 0 11263 NULL
133648 +disable_so_xfs_alloc_update_fndecl_11301 xfs_alloc_update fndecl 0 11301 NULL
133649 +disable_so_vmw_resource_do_evict_fndecl_11311 vmw_resource_do_evict fndecl 0 11311 NULL
133650 +disable_so_btrfs_trim_block_group_fndecl_11312 btrfs_trim_block_group fndecl 0 11312 NULL
133651 +disable_so_write_queue_xenstore_keys_fndecl_11330 write_queue_xenstore_keys fndecl 0 11330 NULL
133652 +disable_so_read_alloc_fndecl_11341 read_alloc fndecl 0 11341 NULL
133653 +disable_so_bma150_probe_fndecl_11347 bma150_probe fndecl 0 11347 NULL
133654 +disable_so_fdb_insert_fndecl_11352 fdb_insert fndecl 0 11352 NULL
133655 +disable_so_ciGetLeafPrefixKey_fndecl_11365 ciGetLeafPrefixKey fndecl 0 11365 NULL
133656 +disable_so_open_tx_first_fndecl_11368 open_tx_first fndecl 0 11368 NULL
133657 +disable_so_mraid_mm_setup_dma_pools_fndecl_11371 mraid_mm_setup_dma_pools fndecl 0 11371 NULL
133658 +disable_so_ixgbe_setup_all_rx_resources_fndecl_11372 ixgbe_setup_all_rx_resources fndecl 0 11372 NULL
133659 +disable_so_send_request_fndecl_11373 send_request fndecl 0 11373 NULL
133660 +disable_so_comp_pool_mlx4_caps_11376 comp_pool mlx4_caps 0 11376 NULL
133661 +disable_so_memblock_alloc_base_nid_fndecl_11395 memblock_alloc_base_nid fndecl 0 11395 NULL nohasharray
133662 +disable_so_tp3780I_StartDSP_fndecl_11395 tp3780I_StartDSP fndecl 0 11395 &disable_so_memblock_alloc_base_nid_fndecl_11395
133663 +disable_so_nv84_fence_context_new_fndecl_11404 nv84_fence_context_new fndecl 0 11404 NULL
133664 +disable_so_xfs_alloc_ag_vextent_small_fndecl_11407 xfs_alloc_ag_vextent_small fndecl 0 11407 NULL
133665 +disable_so_csio_hw_flash_fw_fndecl_11408 csio_hw_flash_fw fndecl 0 11408 NULL
133666 +disable_so_iso_packets_buffer_init_fndecl_11414 iso_packets_buffer_init fndecl 0 11414 NULL
133667 +disable_so_xhci_queue_isoc_tx_prepare_fndecl_11415 xhci_queue_isoc_tx_prepare fndecl 0 11415 NULL
133668 +disable_so_acpi_processor_get_performance_info_fndecl_11419 acpi_processor_get_performance_info fndecl 0 11419 NULL
133669 +disable_so_claim_interface_fndecl_11421 claim_interface fndecl 0 11421 NULL nohasharray
133670 +disable_so_ocrdma_mbx_rdma_stats_fndecl_11421 ocrdma_mbx_rdma_stats fndecl 0 11421 &disable_so_claim_interface_fndecl_11421
133671 +disable_so_hash_rem_ccp_sha_req_ctx_11427 hash_rem ccp_sha_req_ctx 0 11427 NULL
133672 +disable_so_ddebug_exec_query_fndecl_11430 ddebug_exec_query fndecl 0 11430 NULL
133673 +disable_so_ccp_init_dm_workarea_fndecl_11450 ccp_init_dm_workarea fndecl 0 11450 NULL
133674 +disable_so_proc_scsi_write_fndecl_11461 proc_scsi_write fndecl 0 11461 NULL
133675 +disable_so_ni_convert_power_level_to_smc_fndecl_11464 ni_convert_power_level_to_smc fndecl 0 11464 NULL
133676 +disable_so_lower_margin_fb_var_screeninfo_11469 lower_margin fb_var_screeninfo 0 11469 NULL
133677 +disable_so_tg3_set_eeprom_fndecl_11481 tg3_set_eeprom fndecl 0 11481 NULL
133678 +disable_so_context_struct_to_string_fndecl_11502 context_struct_to_string fndecl 0 11502 NULL
133679 +disable_so_policydb_write_fndecl_11509 policydb_write fndecl 0 11509 NULL
133680 +disable_so_cxgb4_write_rss_fndecl_11556 cxgb4_write_rss fndecl 0 11556 NULL
133681 +disable_so_spi_sync_locked_fndecl_11557 spi_sync_locked fndecl 0 11557 NULL
133682 +disable_so_avail_in_z_stream_s_11562 avail_in z_stream_s 0 11562 NULL
133683 +disable_so_balance_level_fndecl_11568 balance_level fndecl 0 11568 NULL
133684 +disable_so_zd_ep_regs_out_msg_fndecl_11574 zd_ep_regs_out_msg fndecl 0 11574 NULL
133685 +disable_so_brcmf_fil_iovar_data_get_fndecl_11579 brcmf_fil_iovar_data_get fndecl 0 11579 NULL
133686 +disable_so_kxtj9_probe_fndecl_11592 kxtj9_probe fndecl 0 11592 NULL
133687 +disable_so_nv50_dmac_create_fndecl_11593 nv50_dmac_create fndecl 0 11593 NULL
133688 +disable_so_adf_init_bank_fndecl_11599 adf_init_bank fndecl 0 11599 NULL
133689 +disable_so_regulator_ena_gpio_request_fndecl_11602 regulator_ena_gpio_request fndecl 0 11602 NULL
133690 +disable_so_snd_i2c_device_create_fndecl_11605 snd_i2c_device_create fndecl 0 11605 NULL
133691 +disable_so_compat_sock_get_timestampns_fndecl_11614 compat_sock_get_timestampns fndecl 0 11614 NULL
133692 +disable_so_hexium_attach_fndecl_11629 hexium_attach fndecl 0 11629 NULL
133693 +disable_so_ima_lsm_rule_init_fndecl_11642 ima_lsm_rule_init fndecl 0 11642 NULL
133694 +disable_so_drbd_cfg_context_from_attrs_fndecl_11647 drbd_cfg_context_from_attrs fndecl 0 11647 NULL
133695 +disable_so_iwl_send_bt_init_conf_old_fndecl_11653 iwl_send_bt_init_conf_old fndecl 0 11653 NULL
133696 +disable_so_cdrom_number_of_slots_fndecl_11662 cdrom_number_of_slots fndecl 0 11662 NULL
133697 +disable_so_bulk_size_cam_11663 bulk_size cam 0 11663 NULL
133698 +disable_so_lpfc_sli4_bsg_set_internal_loopback_fndecl_11664 lpfc_sli4_bsg_set_internal_loopback fndecl 0 11664 NULL
133699 +disable_so_sel_write_member_fndecl_11667 sel_write_member fndecl 0 11667 NULL
133700 +disable_so_do_writesect_fndecl_11673 do_writesect fndecl 0 11673 NULL
133701 +disable_so_psmouse_connect_fndecl_11680 psmouse_connect fndecl 0 11680 NULL
133702 +disable_so___btrfs_find_all_roots_fndecl_11682 __btrfs_find_all_roots fndecl 0 11682 NULL
133703 +disable_so_ssb_bus_powerup_fndecl_11684 ssb_bus_powerup fndecl 0 11684 NULL
133704 +disable_so_astfb_create_object_fndecl_11697 astfb_create_object fndecl 0 11697 NULL
133705 +disable_so_ablkcipher_walk_done_fndecl_11708 ablkcipher_walk_done fndecl 0 11708 NULL
133706 +disable_so_netxen_get_minidump_template_size_fndecl_11727 netxen_get_minidump_template_size fndecl 0 11727 NULL
133707 +disable_so_create_of_modalias_fndecl_11729 create_of_modalias fndecl 0 11729 NULL
133708 +disable_so_evtchn_make_refcounted_fndecl_11745 evtchn_make_refcounted fndecl 0 11745 NULL
133709 +disable_so_pci_reset_hotplug_slot_fndecl_11748 pci_reset_hotplug_slot fndecl 0 11748 NULL
133710 +disable_so_snd_virmidi_new_fndecl_11751 snd_virmidi_new fndecl 0 11751 NULL nohasharray
133711 +disable_so_sctp_copy_laddrs_fndecl_11751 sctp_copy_laddrs fndecl 0 11751 &disable_so_snd_virmidi_new_fndecl_11751
133712 +disable_so_get_video_status_fndecl_11753 get_video_status fndecl 0 11753 NULL
133713 +disable_so_tcp_md5_do_add_fndecl_11755 tcp_md5_do_add fndecl 0 11755 NULL
133714 +disable_so_count_nfs_pgio_res_11763 count nfs_pgio_res 0 11763 NULL
133715 +disable_so_azx_alloc_stream_pages_fndecl_11771 azx_alloc_stream_pages fndecl 0 11771 NULL
133716 +disable_so_radeon_cs_ib_fill_fndecl_11777 radeon_cs_ib_fill fndecl 0 11777 NULL
133717 +disable_so_wait_on_sem_fndecl_11778 wait_on_sem fndecl 0 11778 NULL
133718 +disable_so_mlx4_init_srq_table_fndecl_11789 mlx4_init_srq_table fndecl 0 11789 NULL
133719 +disable_so_build_constructor_string_fndecl_11792 build_constructor_string fndecl 0 11792 NULL nohasharray
133720 +disable_so_svc_pool_map_init_percpu_fndecl_11792 svc_pool_map_init_percpu fndecl 0 11792 &disable_so_build_constructor_string_fndecl_11792
133721 +disable_so_cifs_sign_smb_fndecl_11793 cifs_sign_smb fndecl 0 11793 NULL
133722 +disable_so_usif_notify_get_fndecl_11798 usif_notify_get fndecl 0 11798 NULL
133723 +disable_so_gma_intel_setup_gmbus_fndecl_11800 gma_intel_setup_gmbus fndecl 0 11800 NULL
133724 +disable_so___threshold_add_blocks_fndecl_11803 __threshold_add_blocks fndecl 0 11803 NULL nohasharray
133725 +disable_so_ifx_spi_spi_probe_fndecl_11803 ifx_spi_spi_probe fndecl 0 11803 &disable_so___threshold_add_blocks_fndecl_11803 nohasharray
133726 +disable_so_ioc_lockdrv_fndecl_11803 ioc_lockdrv fndecl 0 11803 &disable_so_ifx_spi_spi_probe_fndecl_11803
133727 +disable_so_build_curseg_fndecl_11820 build_curseg fndecl 0 11820 NULL
133728 +disable_so_pci_enable_device_mem_fndecl_11823 pci_enable_device_mem fndecl 0 11823 NULL
133729 +disable_so_asus_led_init_fndecl_11830 asus_led_init fndecl 0 11830 NULL
133730 +disable_so_mpu_io_snd_azf3328_11833 mpu_io snd_azf3328 0 11833 NULL
133731 +disable_so_pci_enable_msix_fndecl_11847 pci_enable_msix fndecl 0 11847 NULL
133732 +disable_so_mic_vringh_copy_fndecl_11848 mic_vringh_copy fndecl 0 11848 NULL
133733 +disable_so_unix_autobind_fndecl_11849 unix_autobind fndecl 0 11849 NULL
133734 +disable_so_ath6kl_cfg80211_init_fndecl_11850 ath6kl_cfg80211_init fndecl 0 11850 NULL
133735 +disable_so_stub_send_ret_submit_fndecl_11852 stub_send_ret_submit fndecl 0 11852 NULL
133736 +disable_so_et131x_adapter_memory_alloc_fndecl_11853 et131x_adapter_memory_alloc fndecl 0 11853 NULL nohasharray
133737 +disable_so_number_of_packets_urb_11853 number_of_packets urb 0 11853 &disable_so_et131x_adapter_memory_alloc_fndecl_11853 nohasharray
133738 +disable_so_add_to_page_cache_lru_fndecl_11853 add_to_page_cache_lru fndecl 0 11853 &disable_so_number_of_packets_urb_11853
133739 +disable_so_i2c_add_adapter_fndecl_11856 i2c_add_adapter fndecl 0 11856 NULL
133740 +disable_so_query_mf_symlink_fndecl_11858 query_mf_symlink fndecl 0 11858 NULL
133741 +disable_so_btmrvl_pscmd_write_fndecl_11859 btmrvl_pscmd_write fndecl 0 11859 NULL
133742 +disable_so_frame_rate_sd_11862 frame_rate sd 0 11862 NULL
133743 +disable_so_iwl_mvm_send_remote_wake_cfg_fndecl_11868 iwl_mvm_send_remote_wake_cfg fndecl 0 11868 NULL
133744 +disable_so_calc_ntlmv2_hash_fndecl_11869 calc_ntlmv2_hash fndecl 0 11869 NULL
133745 +disable_so_dln2_probe_fndecl_11874 dln2_probe fndecl 0 11874 NULL nohasharray
133746 +disable_so_mwifiex_scan_networks_fndecl_11874 mwifiex_scan_networks fndecl 0 11874 &disable_so_dln2_probe_fndecl_11874
133747 +disable_so_idetape_queue_rw_tail_fndecl_11881 idetape_queue_rw_tail fndecl 0 11881 NULL
133748 +disable_so_alloc_empty_pages_fndecl_11885 alloc_empty_pages fndecl 0 11885 NULL nohasharray
133749 +disable_so_leaf_dealloc_fndecl_11885 leaf_dealloc fndecl 0 11885 &disable_so_alloc_empty_pages_fndecl_11885
133750 +disable_so_nilfs_palloc_prepare_alloc_entry_fndecl_11889 nilfs_palloc_prepare_alloc_entry fndecl 0 11889 NULL
133751 +disable_so_vfs_read_fndecl_11892 vfs_read fndecl 0 11892 NULL
133752 +disable_so_init_hash_table_fndecl_11901 init_hash_table fndecl 0 11901 NULL
133753 +disable_so_scs_probe_fndecl_11902 scs_probe fndecl 0 11902 NULL
133754 +disable_so_snd_device_new_fndecl_11911 snd_device_new fndecl 0 11911 NULL
133755 +disable_so_p9_fd_read_fndecl_11921 p9_fd_read fndecl 0 11921 NULL
133756 +disable_so_dvb_ca_en50221_write_data_fndecl_11925 dvb_ca_en50221_write_data fndecl 0 11925 NULL
133757 +disable_so_smscore_set_device_mode_fndecl_11931 smscore_set_device_mode fndecl 0 11931 NULL
133758 +disable_so_verify_preview_fndecl_11943 verify_preview fndecl 0 11943 NULL
133759 +disable_so_dvb_usbv2_adapter_stream_init_fndecl_11945 dvb_usbv2_adapter_stream_init fndecl 0 11945 NULL
133760 +disable_so_gfs2_alloc_blocks_fndecl_11949 gfs2_alloc_blocks fndecl 0 11949 NULL
133761 +disable_so_hci_bdaddr_list_add_fndecl_11954 hci_bdaddr_list_add fndecl 0 11954 NULL
133762 +disable_so_rocker_flow_tbl_vlan_fndecl_11955 rocker_flow_tbl_vlan fndecl 0 11955 NULL
133763 +disable_so_mtip_hw_ioctl_fndecl_11960 mtip_hw_ioctl fndecl 0 11960 NULL
133764 +disable_so_uwb_rc_stop_beacon_fndecl_11970 uwb_rc_stop_beacon fndecl 0 11970 NULL
133765 +disable_so_cttimeout_new_timeout_fndecl_11971 cttimeout_new_timeout fndecl 0 11971 NULL
133766 +disable_so_i_xattr_nid_f2fs_inode_info_11976 i_xattr_nid f2fs_inode_info 0 11976 NULL
133767 +disable_so__regulator_do_enable_fndecl_11979 _regulator_do_enable fndecl 0 11979 NULL
133768 +disable_so_snd_emu10k1_add_controls_fndecl_12004 snd_emu10k1_add_controls fndecl 0 12004 NULL
133769 +disable_so_mlx4_qp_alloc_fndecl_12009 mlx4_qp_alloc fndecl 0 12009 NULL
133770 +disable_so_snd_ctl_remove_user_ctl_fndecl_12011 snd_ctl_remove_user_ctl fndecl 0 12011 NULL
133771 +disable_so_jbd2_journal_restart_fndecl_12015 jbd2_journal_restart fndecl 0 12015 NULL
133772 +disable_so_loop_get_status64_fndecl_12021 loop_get_status64 fndecl 0 12021 NULL
133773 +disable_so_sisusb_write_mem_bulk_fndecl_12029 sisusb_write_mem_bulk fndecl 0 12029 NULL
133774 +disable_so_logi_dj_recv_switch_to_dj_mode_fndecl_12054 logi_dj_recv_switch_to_dj_mode fndecl 0 12054 NULL
133775 +disable_so_mwifiex_adhoc_start_fndecl_12056 mwifiex_adhoc_start fndecl 0 12056 NULL
133776 +disable_so_sun4i_get_temp_fndecl_12058 sun4i_get_temp fndecl 0 12058 NULL
133777 +disable_so_get_ref_objectid_v0_fndecl_12059 get_ref_objectid_v0 fndecl 0 12059 NULL
133778 +disable_so_recover_peb_fndecl_12069 recover_peb fndecl 0 12069 NULL
133779 +disable_so_init_card_fndecl_12072 init_card fndecl 0 12072 NULL nohasharray
133780 +disable_so_rw_verify_area_fndecl_12072 rw_verify_area fndecl 0 12072 &disable_so_init_card_fndecl_12072
133781 +disable_so_lirc_register_driver_fndecl_12073 lirc_register_driver fndecl 0 12073 NULL nohasharray
133782 +disable_so_evdev_handle_get_val_fndecl_12073 evdev_handle_get_val fndecl 0 12073 &disable_so_lirc_register_driver_fndecl_12073
133783 +disable_so_cirrus_bo_create_fndecl_12083 cirrus_bo_create fndecl 0 12083 NULL
133784 +disable_so_nvme_trans_copy_from_user_fndecl_12088 nvme_trans_copy_from_user fndecl 0 12088 NULL
133785 +disable_so_nla_len_nlattr_12092 nla_len nlattr 0 12092 NULL
133786 +disable_so_et131x_tx_dma_memory_alloc_fndecl_12096 et131x_tx_dma_memory_alloc fndecl 0 12096 NULL
133787 +disable_so_prism2_set_genericelement_fndecl_12110 prism2_set_genericelement fndecl 0 12110 NULL nohasharray
133788 +disable_so_length_framebuf_12110 length framebuf 0 12110 &disable_so_prism2_set_genericelement_fndecl_12110
133789 +disable_so_alloc_system_page_fndecl_12111 alloc_system_page fndecl 0 12111 NULL
133790 +disable_so_sta_info_insert_check_fndecl_12113 sta_info_insert_check fndecl 0 12113 NULL
133791 +disable_so_security_context_to_sid_core_fndecl_12115 security_context_to_sid_core fndecl 0 12115 NULL
133792 +disable_so_alc_codec_rename_fndecl_12119 alc_codec_rename fndecl 0 12119 NULL
133793 +disable_so_xfs_bmap_btree_to_extents_fndecl_12130 xfs_bmap_btree_to_extents fndecl 0 12130 NULL
133794 +disable_so_qxl_release_bo_alloc_fndecl_12144 qxl_release_bo_alloc fndecl 0 12144 NULL
133795 +disable_so_gfs2_rgrp_send_discards_fndecl_12149 gfs2_rgrp_send_discards fndecl 0 12149 NULL
133796 +disable_so_joydev_open_fndecl_12150 joydev_open fndecl 0 12150 NULL
133797 +disable_so_range_read_fndecl_12152 range_read fndecl 0 12152 NULL
133798 +disable_so_iwl_mvm_send_cmd_pdu_status_fndecl_12155 iwl_mvm_send_cmd_pdu_status fndecl 0 12155 NULL
133799 +disable_so_set_page_fndecl_12165 set_page fndecl 0 12165 NULL
133800 +disable_so_xfs_bmbt_change_owner_fndecl_12190 xfs_bmbt_change_owner fndecl 0 12190 NULL
133801 +disable_so_i40e_add_del_fdir_tcpv4_fndecl_12196 i40e_add_del_fdir_tcpv4 fndecl 0 12196 NULL
133802 +disable_so_gpiochip_find_base_fndecl_12197 gpiochip_find_base fndecl 0 12197 NULL
133803 +disable_so_lpfc_bsg_diag_mode_enter_fndecl_12200 lpfc_bsg_diag_mode_enter fndecl 0 12200 NULL
133804 +disable_so_pn533_submit_urb_for_response_fndecl_12203 pn533_submit_urb_for_response fndecl 0 12203 NULL
133805 +disable_so_l2cap_sock_setsockopt_old_fndecl_12209 l2cap_sock_setsockopt_old fndecl 0 12209 NULL
133806 +disable_so_efx_mcdi_get_phy_cfg_fndecl_12212 efx_mcdi_get_phy_cfg fndecl 0 12212 NULL
133807 +disable_so_lx_pcm_create_fndecl_12227 lx_pcm_create fndecl 0 12227 NULL
133808 +disable_so_fuse_fill_super_fndecl_12248 fuse_fill_super fndecl 0 12248 NULL nohasharray
133809 +disable_so_cbaf_probe_fndecl_12248 cbaf_probe fndecl 0 12248 &disable_so_fuse_fill_super_fndecl_12248
133810 +disable_so_init_fndecl_12261 init fndecl 0 12261 NULL
133811 +disable_so_btrfs_run_delayed_items_fndecl_12263 btrfs_run_delayed_items fndecl 0 12263 NULL
133812 +disable_so_devid_ptp_clock_12277 devid ptp_clock 0 12277 NULL
133813 +disable_so_ocfs2_xattr_bucket_journal_access_fndecl_12278 ocfs2_xattr_bucket_journal_access fndecl 0 12278 NULL
133814 +disable_so_i915_gem_check_olr_fndecl_12280 i915_gem_check_olr fndecl 0 12280 NULL nohasharray
133815 +disable_so_softing_fct_cmd_fndecl_12280 softing_fct_cmd fndecl 0 12280 &disable_so_i915_gem_check_olr_fndecl_12280
133816 +disable_so_get_esi_asic_fndecl_12282 get_esi_asic fndecl 0 12282 NULL
133817 +disable_so_cp2112_probe_fndecl_12283 cp2112_probe fndecl 0 12283 NULL
133818 +disable_so_usif_notify_new_fndecl_12288 usif_notify_new fndecl 0 12288 NULL
133819 +disable_so_tioclinux_fndecl_12291 tioclinux fndecl 0 12291 NULL
133820 +disable_so_t4_write_flash_fndecl_12294 t4_write_flash fndecl 0 12294 NULL
133821 +disable_so_adjust_tp_fndecl_12297 adjust_tp fndecl 0 12297 NULL
133822 +disable_so_bm_find_next_fndecl_12298 bm_find_next fndecl 0 12298 NULL nohasharray
133823 +disable_so_fat_add_entries_fndecl_12298 fat_add_entries fndecl 0 12298 &disable_so_bm_find_next_fndecl_12298
133824 +disable_so_t4vf_get_vfres_fndecl_12300 t4vf_get_vfres fndecl 0 12300 NULL
133825 +disable_so_mlx4_CONF_SPECIAL_QP_fndecl_12312 mlx4_CONF_SPECIAL_QP fndecl 0 12312 NULL
133826 +disable_so_mwifiex_bss_start_fndecl_12325 mwifiex_bss_start fndecl 0 12325 NULL
133827 +disable_so_ec168_ctrl_msg_fndecl_12328 ec168_ctrl_msg fndecl 0 12328 NULL
133828 +disable_so_enic_set_rss_nic_cfg_fndecl_12333 enic_set_rss_nic_cfg fndecl 0 12333 NULL nohasharray
133829 +disable_so_snd_cs5530_create_fndecl_12333 snd_cs5530_create fndecl 0 12333 &disable_so_enic_set_rss_nic_cfg_fndecl_12333
133830 +disable_so_snd_hdac_bus_exec_verb_unlocked_fndecl_12335 snd_hdac_bus_exec_verb_unlocked fndecl 0 12335 NULL
133831 +disable_so_sctp_outq_tail_fndecl_12338 sctp_outq_tail fndecl 0 12338 NULL
133832 +disable_so_ptrace_resume_fndecl_12341 ptrace_resume fndecl 0 12341 NULL
133833 +disable_so_dccps_iss_dccp_sock_12346 dccps_iss dccp_sock 0 12346 NULL
133834 +disable_so_dlmfs_file_open_fndecl_12353 dlmfs_file_open fndecl 0 12353 NULL
133835 +disable_so_limit_scaled_size_lock_fndecl_12359 limit_scaled_size_lock fndecl 0 12359 NULL
133836 +disable_so_create_setup_data_nodes_fndecl_12366 create_setup_data_nodes fndecl 0 12366 NULL
133837 +disable_so_xfs_alloc_fixup_trees_fndecl_12372 xfs_alloc_fixup_trees fndecl 0 12372 NULL nohasharray
133838 +disable_so_b43legacy_upload_initvals_fndecl_12372 b43legacy_upload_initvals fndecl 0 12372 &disable_so_xfs_alloc_fixup_trees_fndecl_12372
133839 +disable_so_nilfs_btree_get_new_block_fndecl_12377 nilfs_btree_get_new_block fndecl 0 12377 NULL
133840 +disable_so_pci_enable_device_flags_fndecl_12378 pci_enable_device_flags fndecl 0 12378 NULL
133841 +disable_so_ntfs_decompress_fndecl_12387 ntfs_decompress fndecl 0 12387 NULL
133842 +disable_so_udf_translate_to_linux_fndecl_12396 udf_translate_to_linux fndecl 0 12396 NULL nohasharray
133843 +disable_so_w_e_end_ov_reply_fndecl_12396 w_e_end_ov_reply fndecl 0 12396 &disable_so_udf_translate_to_linux_fndecl_12396
133844 +disable_so_mwifiex_adhoc_join_fndecl_12397 mwifiex_adhoc_join fndecl 0 12397 NULL
133845 +disable_so_esd_usb2_setup_rx_urbs_fndecl_12400 esd_usb2_setup_rx_urbs fndecl 0 12400 NULL
133846 +disable_so_edt_ft5x06_debugfs_raw_data_read_fndecl_12401 edt_ft5x06_debugfs_raw_data_read fndecl 0 12401 NULL
133847 +disable_so_btusb_submit_intr_urb_fndecl_12415 btusb_submit_intr_urb fndecl 0 12415 NULL
133848 +disable_so_p9_fd_write_fndecl_12417 p9_fd_write fndecl 0 12417 NULL
133849 +disable_so_cx231xx_init_vbi_isoc_fndecl_12422 cx231xx_init_vbi_isoc fndecl 0 12422 NULL
133850 +disable_so_kovaplus_init_kovaplus_device_struct_fndecl_12427 kovaplus_init_kovaplus_device_struct fndecl 0 12427 NULL
133851 +disable_so_tea5764_i2c_read_fndecl_12428 tea5764_i2c_read fndecl 0 12428 NULL
133852 +disable_so_dvb_usbv2_remote_init_fndecl_12432 dvb_usbv2_remote_init fndecl 0 12432 NULL
133853 +disable_so_sixpack_ioctl_fndecl_12452 sixpack_ioctl fndecl 0 12452 NULL
133854 +disable_so_ttm_bo_mem_space_fndecl_12456 ttm_bo_mem_space fndecl 0 12456 NULL nohasharray
133855 +disable_so_rsxx_reg_access_fndecl_12456 rsxx_reg_access fndecl 0 12456 &disable_so_ttm_bo_mem_space_fndecl_12456
133856 +disable_so_platform_get_irq_fndecl_12459 platform_get_irq fndecl 0 12459 NULL
133857 +disable_so_stk_camera_probe_fndecl_12462 stk_camera_probe fndecl 0 12462 NULL
133858 +disable_so_do_register_framebuffer_fndecl_12464 do_register_framebuffer fndecl 0 12464 NULL
133859 +disable_so_cx25821_alsa_dma_map_fndecl_12470 cx25821_alsa_dma_map fndecl 0 12470 NULL
133860 +disable_so_mlx5_core_mad_ifc_fndecl_12472 mlx5_core_mad_ifc fndecl 0 12472 NULL
133861 +disable_so_peak_pciec_probe_fndecl_12485 peak_pciec_probe fndecl 0 12485 NULL
133862 +disable_so_iwlagn_send_patterns_fndecl_12496 iwlagn_send_patterns fndecl 0 12496 NULL
133863 +disable_so_lanai_dev_open_fndecl_12497 lanai_dev_open fndecl 0 12497 NULL
133864 +disable_so_map_off_xfs_dir2_leaf_map_info_12499 map_off xfs_dir2_leaf_map_info 0 12499 NULL
133865 +disable_so_stream_next_buffer_fndecl_12502 stream_next_buffer fndecl 0 12502 NULL
133866 +disable_so_validate_master_fndecl_12511 validate_master fndecl 0 12511 NULL
133867 +disable_so_ethtool_set_channels_fndecl_12521 ethtool_set_channels fndecl 0 12521 NULL
133868 +disable_so_ethtool_get_features_fndecl_12526 ethtool_get_features fndecl 0 12526 NULL
133869 +disable_so_snd_compr_get_params_fndecl_12529 snd_compr_get_params fndecl 0 12529 NULL
133870 +disable_so_bttv_input_init_fndecl_12536 bttv_input_init fndecl 0 12536 NULL
133871 +disable_so_cdrom_read_cdda_old_fndecl_12547 cdrom_read_cdda_old fndecl 0 12547 NULL
133872 +disable_so_fs_path_add_from_extent_buffer_fndecl_12581 fs_path_add_from_extent_buffer fndecl 0 12581 NULL
133873 +disable_so_ide_do_start_stop_fndecl_12589 ide_do_start_stop fndecl 0 12589 NULL
133874 +disable_so_raid_disk_md_rdev_12590 raid_disk md_rdev 0 12590 NULL
133875 +disable_so_get_floppy_geometry_fndecl_12593 get_floppy_geometry fndecl 0 12593 NULL
133876 +disable_so_asd_process_ctrl_a_user_fndecl_12599 asd_process_ctrl_a_user fndecl 0 12599 NULL
133877 +disable_so_sx_fb_copyarea_12600 sx fb_copyarea 0 12600 NULL
133878 +disable_so_mraid_mm_register_adp_fndecl_12605 mraid_mm_register_adp fndecl 0 12605 NULL nohasharray
133879 +disable_so_dvd_read_disckey_fndecl_12605 dvd_read_disckey fndecl 0 12605 &disable_so_mraid_mm_register_adp_fndecl_12605
133880 +disable_so_ima_protect_xattr_fndecl_12614 ima_protect_xattr fndecl 0 12614 NULL
133881 +disable_so_xfs_attrmulti_attr_get_fndecl_12623 xfs_attrmulti_attr_get fndecl 0 12623 NULL
133882 +disable_so_atmel_ioctl_fndecl_12624 atmel_ioctl fndecl 0 12624 NULL
133883 +disable_so_data_sock_ioctl_bound_fndecl_12629 data_sock_ioctl_bound fndecl 0 12629 NULL
133884 +disable_so_stir421x_fw_upload_fndecl_12630 stir421x_fw_upload fndecl 0 12630 NULL
133885 +disable_so_check_lpt_type_fndecl_12642 check_lpt_type fndecl 0 12642 NULL
133886 +disable_so_cx24117_cmd_execute_nolock_fndecl_12650 cx24117_cmd_execute_nolock fndecl 0 12650 NULL
133887 +disable_so_ccp_crypto_enqueue_cmd_fndecl_12657 ccp_crypto_enqueue_cmd fndecl 0 12657 NULL
133888 +disable_so_machine_constraints_voltage_fndecl_12658 machine_constraints_voltage fndecl 0 12658 NULL
133889 +disable_so_hidpp_send_rap_command_sync_fndecl_12667 hidpp_send_rap_command_sync fndecl 0 12667 NULL nohasharray
133890 +disable_so_sg_offset_iscsi_segment_12667 sg_offset iscsi_segment 0 12667 &disable_so_hidpp_send_rap_command_sync_fndecl_12667
133891 +disable_so_hfc_probe_fndecl_12670 hfc_probe fndecl 0 12670 NULL
133892 +disable_so_ax25_fwd_ioctl_fndecl_12674 ax25_fwd_ioctl fndecl 0 12674 NULL
133893 +disable_so_HST_kyrofb_info_12685 HST kyrofb_info 0 12685 NULL
133894 +disable_so_savage_dispatch_vb_idx_fndecl_12688 savage_dispatch_vb_idx fndecl 0 12688 NULL
133895 +disable_so_sched_group_set_shares_fndecl_12689 sched_group_set_shares fndecl 0 12689 NULL
133896 +disable_so_snd_component_add_fndecl_12699 snd_component_add fndecl 0 12699 NULL
133897 +disable_so_smk_set_access_fndecl_12730 smk_set_access fndecl 0 12730 NULL
133898 +disable_so_relocate_entry_gtt_fndecl_12745 relocate_entry_gtt fndecl 0 12745 NULL
133899 +disable_so_input_ff_create_memless_fndecl_12746 input_ff_create_memless fndecl 0 12746 NULL
133900 +disable_so_snd_es1968_capture_open_fndecl_12747 snd_es1968_capture_open fndecl 0 12747 NULL
133901 +disable_so_get_sum_rsc_fndecl_12757 get_sum_rsc fndecl 0 12757 NULL
133902 +disable_so_reserve_memtype_fndecl_12762 reserve_memtype fndecl 0 12762 NULL
133903 +disable_so_null_add_dev_fndecl_12763 null_add_dev fndecl 0 12763 NULL
133904 +disable_so_set_evtchn_to_irq_fndecl_12766 set_evtchn_to_irq fndecl 0 12766 NULL
133905 +disable_so_carl9170_led_set_state_fndecl_12779 carl9170_led_set_state fndecl 0 12779 NULL
133906 +disable_so_tcp_v6_parse_md5_keys_fndecl_12783 tcp_v6_parse_md5_keys fndecl 0 12783 NULL
133907 +disable_so_i5k_amb_probe_fndecl_12793 i5k_amb_probe fndecl 0 12793 NULL
133908 +disable_so_sbni_ioctl_fndecl_12797 sbni_ioctl fndecl 0 12797 NULL
133909 +disable_so_set_memory_uc_fndecl_12804 set_memory_uc fndecl 0 12804 NULL
133910 +disable_so_asd_read_ocm_fndecl_12806 asd_read_ocm fndecl 0 12806 NULL
133911 +disable_so_lpfc_sli4_queue_verify_fndecl_12812 lpfc_sli4_queue_verify fndecl 0 12812 NULL
133912 +disable_so_get_extent_allocation_hint_fndecl_12820 get_extent_allocation_hint fndecl 0 12820 NULL
133913 +disable_so___videobuf_mmap_setup_fndecl_12822 __videobuf_mmap_setup fndecl 0 12822 NULL
133914 +disable_so_vfio_msi_cap_len_fndecl_12827 vfio_msi_cap_len fndecl 0 12827 NULL
133915 +disable_so_create_urbs_fndecl_12837 create_urbs fndecl 0 12837 NULL
133916 +disable_so_tb_eeprom_ctl_read_fndecl_12839 tb_eeprom_ctl_read fndecl 0 12839 NULL
133917 +disable_so_psb_do_init_fndecl_12848 psb_do_init fndecl 0 12848 NULL
133918 +disable_so_xfs_rtfind_back_fndecl_12849 xfs_rtfind_back fndecl 0 12849 NULL
133919 +disable_so_iwl_mvm_bt_udpate_ctrl_kill_msk_fndecl_12852 iwl_mvm_bt_udpate_ctrl_kill_msk fndecl 0 12852 NULL
133920 +disable_so_snd_interval_refine_max_fndecl_12865 snd_interval_refine_max fndecl 0 12865 NULL
133921 +disable_so__conn_rq_cond_fndecl_12878 _conn_rq_cond fndecl 0 12878 NULL
133922 +disable_so_sony_nc_thermal_setup_fndecl_12886 sony_nc_thermal_setup fndecl 0 12886 NULL
133923 +disable_so_be_get_resources_fndecl_12890 be_get_resources fndecl 0 12890 NULL
133924 +disable_so_spu_set_bus_mode_fndecl_12909 spu_set_bus_mode fndecl 0 12909 NULL
133925 +disable_so_dwc3_gadget_init_endpoints_fndecl_12911 dwc3_gadget_init_endpoints fndecl 0 12911 NULL
133926 +disable_so_si4713_register_i2c_adapter_fndecl_12912 si4713_register_i2c_adapter fndecl 0 12912 NULL
133927 +disable_so_efx_mcdi_rpc_quiet_fndecl_12914 efx_mcdi_rpc_quiet fndecl 0 12914 NULL
133928 +disable_so_mxr_acquire_clocks_fndecl_12918 mxr_acquire_clocks fndecl 0 12918 NULL nohasharray
133929 +disable_so_cfg80211_calculate_bitrate_fndecl_12918 cfg80211_calculate_bitrate fndecl 0 12918 &disable_so_mxr_acquire_clocks_fndecl_12918
133930 +disable_so_m_lblk_ext4_map_blocks_12920 m_lblk ext4_map_blocks 0 12920 NULL
133931 +disable_so_idetape_mtioctop_fndecl_12923 idetape_mtioctop fndecl 0 12923 NULL
133932 +disable_so_sel_loadlut_fndecl_12933 sel_loadlut fndecl 0 12933 NULL
133933 +disable_so_phys_pud_init_fndecl_12941 phys_pud_init fndecl 0 12941 NULL
133934 +disable_so_gfs2_meta_indirect_buffer_fndecl_12942 gfs2_meta_indirect_buffer fndecl 0 12942 NULL
133935 +disable_so_max_select_fd_fndecl_12949 max_select_fd fndecl 0 12949 NULL
133936 +disable_so_b43legacy_debugfs_write_fndecl_12959 b43legacy_debugfs_write fndecl 0 12959 NULL
133937 +disable_so_get_srcimp_rsc_fndecl_12964 get_srcimp_rsc fndecl 0 12964 NULL
133938 +disable_so_megasas_mgmt_fw_ioctl_fndecl_12968 megasas_mgmt_fw_ioctl fndecl 0 12968 NULL
133939 +disable_so_snd_card_asihpi_capture_open_fndecl_12972 snd_card_asihpi_capture_open fndecl 0 12972 NULL
133940 +disable_so_qxl_hw_surface_alloc_fndecl_12980 qxl_hw_surface_alloc fndecl 0 12980 NULL
133941 +disable_so_nv50_fbdma_init_fndecl_12991 nv50_fbdma_init fndecl 0 12991 NULL
133942 +disable_so_mwifiex_update_uap_custom_ie_fndecl_12992 mwifiex_update_uap_custom_ie fndecl 0 12992 NULL
133943 +disable_so_cls_bpf_change_fndecl_12994 cls_bpf_change fndecl 0 12994 NULL
133944 +disable_so_nvme_trans_request_sense_fndecl_12997 nvme_trans_request_sense fndecl 0 12997 NULL
133945 +disable_so_evergreen_surface_check_1d_fndecl_12998 evergreen_surface_check_1d fndecl 0 12998 NULL
133946 +disable_so_patch_conexant_auto_fndecl_13003 patch_conexant_auto fndecl 0 13003 NULL
133947 +disable_so_vprbrd_probe_fndecl_13005 vprbrd_probe fndecl 0 13005 NULL
133948 +disable_so_ocfs2_info_handle_clustersize_fndecl_13008 ocfs2_info_handle_clustersize fndecl 0 13008 NULL
133949 +disable_so_tg3_nvram_exec_cmd_fndecl_13010 tg3_nvram_exec_cmd fndecl 0 13010 NULL
133950 +disable_so_iwlagn_disable_pan_fndecl_13013 iwlagn_disable_pan fndecl 0 13013 NULL
133951 +disable_so_sg_alloc_table_from_pages_fndecl_13015 sg_alloc_table_from_pages fndecl 0 13015 NULL
133952 +disable_so_srpt_cm_req_recv_fndecl_13017 srpt_cm_req_recv fndecl 0 13017 NULL
133953 +disable_so_mcp230xx_probe_fndecl_13018 mcp230xx_probe fndecl 0 13018 NULL
133954 +disable_so_r600_do_wait_for_idle_fndecl_13022 r600_do_wait_for_idle fndecl 0 13022 NULL
133955 +disable_so___free_memory_core_fndecl_13029 __free_memory_core fndecl 0 13029 NULL
133956 +disable_so_xfs_bmap_finish_fndecl_13047 xfs_bmap_finish fndecl 0 13047 NULL
133957 +disable_so_gaff_init_fndecl_13050 gaff_init fndecl 0 13050 NULL
133958 +disable_so_status_mwifiex_wait_queue_13055 status mwifiex_wait_queue 0 13055 NULL
133959 +disable_so_xfs_bunmapi_fndecl_13063 xfs_bunmapi fndecl 0 13063 NULL
133960 +disable_so_create_20k1_hw_obj_fndecl_13071 create_20k1_hw_obj fndecl 0 13071 NULL
133961 +disable_so_t3_seeprom_write_fndecl_13072 t3_seeprom_write fndecl 0 13072 NULL
133962 +disable_so_snd_card_asihpi_playback_open_fndecl_13083 snd_card_asihpi_playback_open fndecl 0 13083 NULL
133963 +disable_so_hard_mtu_usbnet_13093 hard_mtu usbnet 0 13093 NULL nohasharray
133964 +disable_so_cursg_ofs_ide_cmd_13093 cursg_ofs ide_cmd 0 13093 &disable_so_hard_mtu_usbnet_13093
133965 +disable_so_ping_members_fndecl_13099 ping_members fndecl 0 13099 NULL
133966 +disable_so_cifs_reconnect_tcon_fndecl_13115 cifs_reconnect_tcon fndecl 0 13115 NULL
133967 +disable_so_c4iw_ofld_send_fndecl_13116 c4iw_ofld_send fndecl 0 13116 NULL
133968 +disable_so_mwifiex_prog_fw_w_helper_fndecl_13117 mwifiex_prog_fw_w_helper fndecl 0 13117 NULL
133969 +disable_so_stex_common_handshake_fndecl_13142 stex_common_handshake fndecl 0 13142 NULL
133970 +disable_so_nilfs_sysfs_create_checkpoints_group_fndecl_13149 nilfs_sysfs_create_checkpoints_group fndecl 0 13149 NULL
133971 +disable_so_avtab_read_fndecl_13155 avtab_read fndecl 0 13155 NULL
133972 +disable_so_tm6000_v4l2_register_fndecl_13161 tm6000_v4l2_register fndecl 0 13161 NULL
133973 +disable_so_gp2a_probe_fndecl_13162 gp2a_probe fndecl 0 13162 NULL
133974 +disable_so_ivtvfb_init_vidmode_fndecl_13165 ivtvfb_init_vidmode fndecl 0 13165 NULL
133975 +disable_so_missbufcnt_lpfc_sli_ring_13167 missbufcnt lpfc_sli_ring 0 13167 NULL
133976 +disable_so_mif6_add_fndecl_13190 mif6_add fndecl 0 13190 NULL
133977 +disable_so_get_manuf_info_fndecl_13200 get_manuf_info fndecl 0 13200 NULL
133978 +disable_so_ocfs2_stack_driver_get_fndecl_13214 ocfs2_stack_driver_get fndecl 0 13214 NULL
133979 +disable_so_kstrtos16_from_user_fndecl_13215 kstrtos16_from_user fndecl 0 13215 NULL
133980 +disable_so_total_xfer_len_sas_task_13219 total_xfer_len sas_task 0 13219 NULL
133981 +disable_so_kvm_vfio_create_fndecl_13221 kvm_vfio_create fndecl 0 13221 NULL
133982 +disable_so_qlcnic_get_act_pci_func_fndecl_13224 qlcnic_get_act_pci_func fndecl 0 13224 NULL
133983 +disable_so_mtdram_init_device_fndecl_13236 mtdram_init_device fndecl 0 13236 NULL
133984 +disable_so_card_send_command_fndecl_13238 card_send_command fndecl 0 13238 NULL
133985 +disable_so_cciss_getnodename_fndecl_13239 cciss_getnodename fndecl 0 13239 NULL
133986 +disable_so_ocfs2_get_truncate_log_info_fndecl_13243 ocfs2_get_truncate_log_info fndecl 0 13243 NULL
133987 +disable_so_tty_change_softcar_fndecl_13244 tty_change_softcar fndecl 0 13244 NULL
133988 +disable_so_efx_ef10_get_mac_address_fndecl_13249 efx_ef10_get_mac_address fndecl 0 13249 NULL
133989 +disable_so_vmw_present_readback_ioctl_fndecl_13262 vmw_present_readback_ioctl fndecl 0 13262 NULL
133990 +disable_so_get_indirect_fndecl_13265 get_indirect fndecl 0 13265 NULL
133991 +disable_so_zlib_inflate_fndecl_13271 zlib_inflate fndecl 0 13271 NULL
133992 +disable_so_kovaplus_get_profile_settings_fndecl_13285 kovaplus_get_profile_settings fndecl 0 13285 NULL nohasharray
133993 +disable_so_iwl6000_hw_channel_switch_fndecl_13285 iwl6000_hw_channel_switch fndecl 0 13285 &disable_so_kovaplus_get_profile_settings_fndecl_13285
133994 +disable_so_status_usb_iso_packet_descriptor_13287 status usb_iso_packet_descriptor 0 13287 NULL
133995 +disable_so_vb2_internal_streamon_fndecl_13298 vb2_internal_streamon fndecl 0 13298 NULL
133996 +disable_so_ioc_general_fndecl_13301 ioc_general fndecl 0 13301 NULL
133997 +disable_so_mwifiex_associate_fndecl_13309 mwifiex_associate fndecl 0 13309 NULL
133998 +disable_so_iwl_alive_start_fndecl_13313 iwl_alive_start fndecl 0 13313 NULL
133999 +disable_so_vringh_getdesc_kern_fndecl_13322 vringh_getdesc_kern fndecl 0 13322 NULL
134000 +disable_so_acpi_add_single_object_fndecl_13325 acpi_add_single_object fndecl 0 13325 NULL nohasharray
134001 +disable_so_skb_zerocopy_headlen_fndecl_13325 skb_zerocopy_headlen fndecl 0 13325 &disable_so_acpi_add_single_object_fndecl_13325
134002 +disable_so_brcmf_usb_dl_cmd_fndecl_13344 brcmf_usb_dl_cmd fndecl 0 13344 NULL
134003 +disable_so_rndis_command_fndecl_13350 rndis_command fndecl 0 13350 NULL
134004 +disable_so_sst_wait_timeout_fndecl_13353 sst_wait_timeout fndecl 0 13353 NULL
134005 +disable_so_nouveau_dma_wait_fndecl_13361 nouveau_dma_wait fndecl 0 13361 NULL
134006 +disable_so_unit_mddev_13365 unit mddev 0 13365 NULL
134007 +disable_so_addr_bcma_device_13366 addr bcma_device 0 13366 NULL
134008 +disable_so_crypto_check_alg_fndecl_13376 crypto_check_alg fndecl 0 13376 NULL
134009 +disable_so_add_fake_paths_fndecl_13378 add_fake_paths fndecl 0 13378 NULL
134010 +disable_so_x25_asy_ioctl_fndecl_13379 x25_asy_ioctl fndecl 0 13379 NULL
134011 +disable_so_port_capicardparams_13383 port capicardparams 0 13383 NULL
134012 +disable_so_adpt_i2o_post_this_fndecl_13388 adpt_i2o_post_this fndecl 0 13388 NULL
134013 +disable_so_squashfs_read_data_fndecl_13399 squashfs_read_data fndecl 0 13399 NULL
134014 +disable_so_rmmio_base_cirrus_device_13402 rmmio_base cirrus_device 0 13402 NULL
134015 +disable_so_rate_adav80x_13411 rate adav80x 0 13411 NULL
134016 +disable_so_ti_get_lsr_fndecl_13413 ti_get_lsr fndecl 0 13413 NULL
134017 +disable_so_qlcnic_alloc_adapter_resources_fndecl_13420 qlcnic_alloc_adapter_resources fndecl 0 13420 NULL
134018 +disable_so_i2c_smbus_xfer_fndecl_13421 i2c_smbus_xfer fndecl 0 13421 NULL nohasharray
134019 +disable_so_ath6kl_upload_firmware_fndecl_13421 ath6kl_upload_firmware fndecl 0 13421 &disable_so_i2c_smbus_xfer_fndecl_13421
134020 +disable_so_nouveau_channel_prep_fndecl_13435 nouveau_channel_prep fndecl 0 13435 NULL
134021 +disable_so_mwl8k_fw_lock_fndecl_13436 mwl8k_fw_lock fndecl 0 13436 NULL
134022 +disable_so_calc_dflt_lpt_geom_fndecl_13447 calc_dflt_lpt_geom fndecl 0 13447 NULL
134023 +disable_so_team_dev_type_check_change_fndecl_13450 team_dev_type_check_change fndecl 0 13450 NULL
134024 +disable_so_mtd_add_device_partitions_fndecl_13453 mtd_add_device_partitions fndecl 0 13453 NULL
134025 +disable_so_idetape_write_filemark_fndecl_13455 idetape_write_filemark fndecl 0 13455 NULL
134026 +disable_so_pvr2_channel_claim_stream_fndecl_13457 pvr2_channel_claim_stream fndecl 0 13457 NULL
134027 +disable_so_layout_in_empty_space_fndecl_13467 layout_in_empty_space fndecl 0 13467 NULL
134028 +disable_so_set_offload_fndecl_13468 set_offload fndecl 0 13468 NULL
134029 +disable_so_lg4ff_init_fndecl_13469 lg4ff_init fndecl 0 13469 NULL
134030 +disable_so_ubifs_validate_entry_fndecl_13470 ubifs_validate_entry fndecl 0 13470 NULL
134031 +disable_so_snd_ctl_new_fndecl_13472 snd_ctl_new fndecl 0 13472 NULL
134032 +disable_so_height_bttv_fh_13473 height bttv_fh 0 13473 NULL
134033 +disable_so_wl1251_acx_aid_fndecl_13506 wl1251_acx_aid fndecl 0 13506 NULL nohasharray
134034 +disable_so_btmrvl_hscmd_write_fndecl_13506 btmrvl_hscmd_write fndecl 0 13506 &disable_so_wl1251_acx_aid_fndecl_13506
134035 +disable_so_nilfs_sysfs_create_device_group_fndecl_13508 nilfs_sysfs_create_device_group fndecl 0 13508 NULL
134036 +disable_so_ocrdma_get_mbx_errno_fndecl_13522 ocrdma_get_mbx_errno fndecl 0 13522 NULL
134037 +disable_so_cn_netlink_send_fndecl_13523 cn_netlink_send fndecl 0 13523 NULL
134038 +disable_so_max_out_size_ims_pcu_13527 max_out_size ims_pcu 0 13527 NULL
134039 +disable_so_find_rsb_nodir_fndecl_13537 find_rsb_nodir fndecl 0 13537 NULL
134040 +disable_so_rocker_cmd_exec_fndecl_13546 rocker_cmd_exec fndecl 0 13546 NULL
134041 +disable_so_mlx4_bf_alloc_fndecl_13547 mlx4_bf_alloc fndecl 0 13547 NULL
134042 +disable_so_bcma_host_pci_probe_fndecl_13551 bcma_host_pci_probe fndecl 0 13551 NULL
134043 +disable_so___devcgroup_inode_permission_fndecl_13559 __devcgroup_inode_permission fndecl 0 13559 NULL
134044 +disable_so_capture_periodsize_rme96_13564 capture_periodsize rme96 0 13564 NULL
134045 +disable_so_i915_gem_execbuffer_relocate_slow_fndecl_13567 i915_gem_execbuffer_relocate_slow fndecl 0 13567 NULL
134046 +disable_so_edt_ft5x06_ts_readwrite_fndecl_13570 edt_ft5x06_ts_readwrite fndecl 0 13570 NULL
134047 +disable_so_dvb_bt8xx_load_card_fndecl_13591 dvb_bt8xx_load_card fndecl 0 13591 NULL
134048 +disable_so_drm_ht_find_item_fndecl_13598 drm_ht_find_item fndecl 0 13598 NULL
134049 +disable_so_bnx2x_queue_state_change_fndecl_13603 bnx2x_queue_state_change fndecl 0 13603 NULL
134050 +disable_so_cipso_v4_map_cat_rbm_hton_fndecl_13611 cipso_v4_map_cat_rbm_hton fndecl 0 13611 NULL
134051 +disable_so_ext4_try_to_evict_inline_data_fndecl_13620 ext4_try_to_evict_inline_data fndecl 0 13620 NULL
134052 +disable_so_snd_ali_chip_init_fndecl_13621 snd_ali_chip_init fndecl 0 13621 NULL
134053 +disable_so_usb_reset_device_fndecl_13622 usb_reset_device fndecl 0 13622 NULL
134054 +disable_so__set_pages_array_fndecl_13631 _set_pages_array fndecl 0 13631 NULL
134055 +disable_so_xenbus_map_ring_valloc_hvm_fndecl_13638 xenbus_map_ring_valloc_hvm fndecl 0 13638 NULL
134056 +disable_so_smsc95xx_read_reg_nopm_fndecl_13641 smsc95xx_read_reg_nopm fndecl 0 13641 NULL
134057 +disable_so_nbytes_ata_queued_cmd_13642 nbytes ata_queued_cmd 0 13642 NULL
134058 +disable_so_npools_svc_pool_map_13643 npools svc_pool_map 0 13643 NULL
134059 +disable_so_number_mdp_device_descriptor_s_13645 number mdp_device_descriptor_s 0 13645 NULL
134060 +disable_so_page_len_xdr_buf_13652 page_len xdr_buf 0 13652 NULL
134061 +disable_so_snd_rawmidi_new_fndecl_13671 snd_rawmidi_new fndecl 0 13671 NULL
134062 +disable_so_hfsplus_initxattrs_fndecl_13672 hfsplus_initxattrs fndecl 0 13672 NULL
134063 +disable_so_fixup_pmc551_fndecl_13679 fixup_pmc551 fndecl 0 13679 NULL
134064 +disable_so_adf_init_etr_data_fndecl_13681 adf_init_etr_data fndecl 0 13681 NULL
134065 +disable_so_send_message_queue_full_fndecl_13693 send_message_queue_full fndecl 0 13693 NULL
134066 +disable_so_br_set_hello_time_fndecl_13706 br_set_hello_time fndecl 0 13706 NULL
134067 +disable_so_xen_pcibk_enable_msix_fndecl_13716 xen_pcibk_enable_msix fndecl 0 13716 NULL
134068 +disable_so_axff_init_fndecl_13719 axff_init fndecl 0 13719 NULL
134069 +disable_so_iwlagn_request_scan_fndecl_13732 iwlagn_request_scan fndecl 0 13732 NULL
134070 +disable_so_mfd_add_device_fndecl_13737 mfd_add_device fndecl 0 13737 NULL
134071 +disable_so_cirrus_ttm_global_init_fndecl_13742 cirrus_ttm_global_init fndecl 0 13742 NULL
134072 +disable_so_cipso_v4_genopt_fndecl_13743 cipso_v4_genopt fndecl 0 13743 NULL
134073 +disable_so_intel_pin_and_fence_fb_obj_fndecl_13747 intel_pin_and_fence_fb_obj fndecl 0 13747 NULL
134074 +disable_so_select_sec_fndecl_13756 select_sec fndecl 0 13756 NULL
134075 +disable_so_xfs_alloc_pagf_init_fndecl_13761 xfs_alloc_pagf_init fndecl 0 13761 NULL nohasharray
134076 +disable_so_i2c_hid_set_power_fndecl_13761 i2c_hid_set_power fndecl 0 13761 &disable_so_xfs_alloc_pagf_init_fndecl_13761
134077 +disable_so_ibmasm_init_remote_input_dev_fndecl_13762 ibmasm_init_remote_input_dev fndecl 0 13762 NULL
134078 +disable_so_subdev_fh_init_fndecl_13766 subdev_fh_init fndecl 0 13766 NULL
134079 +disable_so_usbhs_dma_calc_received_size_fndecl_13783 usbhs_dma_calc_received_size fndecl 0 13783 NULL
134080 +disable_so_ci_set_mc_special_registers_fndecl_13784 ci_set_mc_special_registers fndecl 0 13784 NULL nohasharray
134081 +disable_so_ehset_single_step_set_feature_fndecl_13784 ehset_single_step_set_feature fndecl 0 13784 &disable_so_ci_set_mc_special_registers_fndecl_13784
134082 +disable_so_lbs_setup_firmware_fndecl_13786 lbs_setup_firmware fndecl 0 13786 NULL
134083 +disable_so_ib_uverbs_attach_mcast_fndecl_13787 ib_uverbs_attach_mcast fndecl 0 13787 NULL
134084 +disable_so_tg3_nvram_read_be32_fndecl_13791 tg3_nvram_read_be32 fndecl 0 13791 NULL nohasharray
134085 +disable_so_acpi_create_platform_device_fndecl_13791 acpi_create_platform_device fndecl 0 13791 &disable_so_tg3_nvram_read_be32_fndecl_13791
134086 +disable_so_xhci_queue_isoc_tx_fndecl_13795 xhci_queue_isoc_tx fndecl 0 13795 NULL
134087 +disable_so_ixgbe_dcb_hw_pfc_config_fndecl_13799 ixgbe_dcb_hw_pfc_config fndecl 0 13799 NULL
134088 +disable_so_rproc_handle_vdev_fndecl_13805 rproc_handle_vdev fndecl 0 13805 NULL
134089 +disable_so_phys_pte_init_fndecl_13824 phys_pte_init fndecl 0 13824 NULL
134090 +disable_so_uwb_rc_mac_addr_get_fndecl_13834 uwb_rc_mac_addr_get fndecl 0 13834 NULL
134091 +disable_so_acpi_os_get_root_pointer_fndecl_13835 acpi_os_get_root_pointer fndecl 0 13835 NULL
134092 +disable_so_ocfs2_refcount_cal_cow_clusters_fndecl_13837 ocfs2_refcount_cal_cow_clusters fndecl 0 13837 NULL nohasharray
134093 +disable_so_evm_inode_init_security_fndecl_13837 evm_inode_init_security fndecl 0 13837 &disable_so_ocfs2_refcount_cal_cow_clusters_fndecl_13837
134094 +disable_so_init_memory_mapping_fndecl_13840 init_memory_mapping fndecl 0 13840 NULL
134095 +disable_so_bfad_iocmd_ioc_disable_fndecl_13857 bfad_iocmd_ioc_disable fndecl 0 13857 NULL
134096 +disable_so_sddr09_read_data_fndecl_13860 sddr09_read_data fndecl 0 13860 NULL
134097 +disable_so_i915_wait_request_fndecl_13866 i915_wait_request fndecl 0 13866 NULL nohasharray
134098 +disable_so_pch_spi_set_tx_fndecl_13866 pch_spi_set_tx fndecl 0 13866 &disable_so_i915_wait_request_fndecl_13866
134099 +disable_so_xfs_btree_lookup_get_block_fndecl_13867 xfs_btree_lookup_get_block fndecl 0 13867 NULL
134100 +disable_so_lock_torture_init_fndecl_13870 lock_torture_init fndecl 0 13870 NULL nohasharray
134101 +disable_so_ufx_reg_set_bits_fndecl_13870 ufx_reg_set_bits fndecl 0 13870 &disable_so_lock_torture_init_fndecl_13870
134102 +disable_so_iwl_send_phy_db_data_fndecl_13872 iwl_send_phy_db_data fndecl 0 13872 NULL nohasharray
134103 +disable_so_i40e_pf_reset_fndecl_13872 i40e_pf_reset fndecl 0 13872 &disable_so_iwl_send_phy_db_data_fndecl_13872
134104 +disable_so_front_len_ceph_msg_header_13876 front_len ceph_msg_header 0 13876 NULL nohasharray
134105 +disable_so_sca_offset__synclinkmp_info_13876 sca_offset _synclinkmp_info 0 13876 &disable_so_front_len_ceph_msg_header_13876
134106 +disable_so_pt1_init_buffer_fndecl_13877 pt1_init_buffer fndecl 0 13877 NULL
134107 +disable_so_csio_hw_sf1_write_fndecl_13879 csio_hw_sf1_write fndecl 0 13879 NULL
134108 +disable_so___f2fs_get_acl_fndecl_13905 __f2fs_get_acl fndecl 0 13905 NULL
134109 +disable_so_hermes_apply_pda_fndecl_13906 hermes_apply_pda fndecl 0 13906 NULL
134110 +disable_so_ep93xx_spi_chip_setup_fndecl_13909 ep93xx_spi_chip_setup fndecl 0 13909 NULL nohasharray
134111 +disable_so_vmw_event_fence_action_queue_fndecl_13909 vmw_event_fence_action_queue fndecl 0 13909 &disable_so_ep93xx_spi_chip_setup_fndecl_13909
134112 +disable_so_rocker_probe_ports_fndecl_13924 rocker_probe_ports fndecl 0 13924 NULL
134113 +disable_so_gru_dump_context_data_fndecl_13938 gru_dump_context_data fndecl 0 13938 NULL
134114 +disable_so_vmw_bo_map_dma_fndecl_13948 vmw_bo_map_dma fndecl 0 13948 NULL
134115 +disable_so___usbnet_write_cmd_fndecl_13951 __usbnet_write_cmd fndecl 0 13951 NULL
134116 +disable_so_journal_bmap_fndecl_13958 journal_bmap fndecl 0 13958 NULL
134117 +disable_so_dlm_send_nodeinfo_fndecl_13962 dlm_send_nodeinfo fndecl 0 13962 NULL
134118 +disable_so_base_addr_cx18_13974 base_addr cx18 0 13974 NULL
134119 +disable_so_usb_ma901radio_probe_fndecl_13976 usb_ma901radio_probe fndecl 0 13976 NULL
134120 +disable_so_ipath_user_sdma_queue_pkts_fndecl_13981 ipath_user_sdma_queue_pkts fndecl 0 13981 NULL
134121 +disable_so_tpmfront_probe_fndecl_13992 tpmfront_probe fndecl 0 13992 NULL
134122 +disable_so_uwb_rc_setup_fndecl_13998 uwb_rc_setup fndecl 0 13998 NULL
134123 +disable_so_parse_audio_processing_unit_fndecl_14002 parse_audio_processing_unit fndecl 0 14002 NULL
134124 +disable_so_blkno_xfs_da_state_blk_14003 blkno xfs_da_state_blk 0 14003 NULL
134125 +disable_so_read_download_mem_fndecl_14009 read_download_mem fndecl 0 14009 NULL
134126 +disable_so_ino_logfs_transaction_14011 ino logfs_transaction 0 14011 NULL
134127 +disable_so_nct6775_find_fndecl_14019 nct6775_find fndecl 0 14019 NULL nohasharray
134128 +disable_so_nl80211_key_allowed_fndecl_14019 nl80211_key_allowed fndecl 0 14019 &disable_so_nct6775_find_fndecl_14019
134129 +disable_so_lbs_get_firmware_fndecl_14026 lbs_get_firmware fndecl 0 14026 NULL
134130 +disable_so_jffs2_scan_medium_fndecl_14030 jffs2_scan_medium fndecl 0 14030 NULL
134131 +disable_so_mlx4_en_ethtool_to_net_trans_rule_fndecl_14051 mlx4_en_ethtool_to_net_trans_rule fndecl 0 14051 NULL
134132 +disable_so_send_i2c_cmd_fndecl_14054 send_i2c_cmd fndecl 0 14054 NULL
134133 +disable_so_ocfs2_xattr_ibody_get_fndecl_14057 ocfs2_xattr_ibody_get fndecl 0 14057 NULL nohasharray
134134 +disable_so_xfs_alloc_vextent_fndecl_14057 xfs_alloc_vextent fndecl 0 14057 &disable_so_ocfs2_xattr_ibody_get_fndecl_14057
134135 +disable_so_msg_len_dvb_diseqc_slave_reply_14073 msg_len dvb_diseqc_slave_reply 0 14073 NULL
134136 +disable_so___falcon_reset_hw_fndecl_14076 __falcon_reset_hw fndecl 0 14076 NULL
134137 +disable_so___ext4_handle_dirty_metadata_fndecl_14098 __ext4_handle_dirty_metadata fndecl 0 14098 NULL
134138 +disable_so_btmrvl_hscfgcmd_write_fndecl_14100 btmrvl_hscfgcmd_write fndecl 0 14100 NULL
134139 +disable_so_tmdc_connect_fndecl_14103 tmdc_connect fndecl 0 14103 NULL
134140 +disable_so_usbnet_probe_fndecl_14109 usbnet_probe fndecl 0 14109 NULL
134141 +disable_so_basic_change_fndecl_14112 basic_change fndecl 0 14112 NULL
134142 +disable_so_megaraid_probe_one_fndecl_14124 megaraid_probe_one fndecl 0 14124 NULL
134143 +disable_so_mantis_stream_control_fndecl_14142 mantis_stream_control fndecl 0 14142 NULL
134144 +disable_so_write_kmem_fndecl_14154 write_kmem fndecl 0 14154 NULL
134145 +disable_so_mrp_init_port_fndecl_14155 mrp_init_port fndecl 0 14155 NULL nohasharray
134146 +disable_so_cinergyt2_fe_set_frontend_fndecl_14155 cinergyt2_fe_set_frontend fndecl 0 14155 &disable_so_mrp_init_port_fndecl_14155
134147 +disable_so_dbAllocAG_fndecl_14159 dbAllocAG fndecl 0 14159 NULL
134148 +disable_so_try_smi_init_fndecl_14163 try_smi_init fndecl 0 14163 NULL
134149 +disable_so_ocfs2_read_blocks_sync_fndecl_14169 ocfs2_read_blocks_sync fndecl 0 14169 NULL
134150 +disable_so_whcrc_setup_rc_umc_fndecl_14175 whcrc_setup_rc_umc fndecl 0 14175 NULL
134151 +disable_so_parport_probe_fndecl_14177 parport_probe fndecl 0 14177 NULL
134152 +disable_so__ore_add_parity_unit_fndecl_14182 _ore_add_parity_unit fndecl 0 14182 NULL
134153 +disable_so_mlx4_cmd_reset_flow_fndecl_14184 mlx4_cmd_reset_flow fndecl 0 14184 NULL
134154 +disable_so_middle_len_ceph_msg_header_14196 middle_len ceph_msg_header 0 14196 NULL
134155 +disable_so_solo_snd_pcm_init_fndecl_14197 solo_snd_pcm_init fndecl 0 14197 NULL
134156 +disable_so_ocfs2_journal_access_path_fndecl_14200 ocfs2_journal_access_path fndecl 0 14200 NULL
134157 +disable_so_kone_get_settings_fndecl_14214 kone_get_settings fndecl 0 14214 NULL
134158 +disable_so_mpt_send_handshake_request_fndecl_14215 mpt_send_handshake_request fndecl 0 14215 NULL
134159 +disable_so_snd_compr_get_codec_caps_fndecl_14217 snd_compr_get_codec_caps fndecl 0 14217 NULL
134160 +disable_so_usb_submit_urb_fndecl_14237 usb_submit_urb fndecl 0 14237 NULL
134161 +disable_so_tsi148_probe_fndecl_14239 tsi148_probe fndecl 0 14239 NULL
134162 +disable_so_ntb_register_event_callback_fndecl_14242 ntb_register_event_callback fndecl 0 14242 NULL
134163 +disable_so_spi_init_fndecl_14246 spi_init fndecl 0 14246 NULL
134164 +disable_so_write_buf_fndecl_14247 write_buf fndecl 0 14247 NULL
134165 +disable_so_wl1251_acx_rate_policies_fndecl_14248 wl1251_acx_rate_policies fndecl 0 14248 NULL
134166 +disable_so___wmi_send_fndecl_14259 __wmi_send fndecl 0 14259 NULL
134167 +disable_so_pmtu_qib_qp_14287 pmtu qib_qp 0 14287 NULL
134168 +disable_so_snd_pcm_oss_write2_fndecl_14295 snd_pcm_oss_write2 fndecl 0 14295 NULL
134169 +disable_so_p54u_firmware_reset_3887_fndecl_14320 p54u_firmware_reset_3887 fndecl 0 14320 NULL
134170 +disable_so_tpacpi_new_rfkill_fndecl_14366 tpacpi_new_rfkill fndecl 0 14366 NULL
134171 +disable_so_scsi_remove_single_device_fndecl_14368 scsi_remove_single_device fndecl 0 14368 NULL
134172 +disable_so_dvb_usbv2_i2c_init_fndecl_14370 dvb_usbv2_i2c_init fndecl 0 14370 NULL
134173 +disable_so_send_purge_fndecl_14372 send_purge fndecl 0 14372 NULL
134174 +disable_so_nvme_trans_mode_page_create_fndecl_14375 nvme_trans_mode_page_create fndecl 0 14375 NULL
134175 +disable_so_start_extent_map_14377 start extent_map 0 14377 NULL
134176 +disable_so_jffs2_do_crccheck_inode_fndecl_14393 jffs2_do_crccheck_inode fndecl 0 14393 NULL
134177 +disable_so_quota_getstatev_fndecl_14396 quota_getstatev fndecl 0 14396 NULL
134178 +disable_so_min_snd_interval_14412 min snd_interval 0 14412 NULL
134179 +disable_so_cw1200_register_common_fndecl_14426 cw1200_register_common fndecl 0 14426 NULL
134180 +disable_so_perf_reg_validate_fndecl_14438 perf_reg_validate fndecl 0 14438 NULL
134181 +disable_so_gigaset_probe_fndecl_14457 gigaset_probe fndecl 0 14457 NULL
134182 +disable_so_logfs_write_direct_fndecl_14465 logfs_write_direct fndecl 0 14465 NULL
134183 +disable_so_mxser_activate_fndecl_14484 mxser_activate fndecl 0 14484 NULL nohasharray
134184 +disable_so_ath6kl_fetch_patch_file_fndecl_14484 ath6kl_fetch_patch_file fndecl 0 14484 &disable_so_mxser_activate_fndecl_14484
134185 +disable_so_lpfc_sli4_hba_setup_fndecl_14492 lpfc_sli4_hba_setup fndecl 0 14492 NULL
134186 +disable_so_asus_rfkill_setup_fndecl_14494 asus_rfkill_setup fndecl 0 14494 NULL
134187 +disable_so_ntfs_perform_write_fndecl_14496 ntfs_perform_write fndecl 0 14496 NULL
134188 +disable_so_i915_gem_set_tiling_fndecl_14497 i915_gem_set_tiling fndecl 0 14497 NULL
134189 +disable_so_snd_cmipci_create_fm_fndecl_14519 snd_cmipci_create_fm fndecl 0 14519 NULL
134190 +disable_so_ppp_register_channel_fndecl_14521 ppp_register_channel fndecl 0 14521 NULL
134191 +disable_so_irda_getsockopt_fndecl_14523 irda_getsockopt fndecl 0 14523 NULL
134192 +disable_so_tb_eeprom_in_fndecl_14527 tb_eeprom_in fndecl 0 14527 NULL
134193 +disable_so_rdma_join_multicast_fndecl_14539 rdma_join_multicast fndecl 0 14539 NULL
134194 +disable_so_size_ichxrom_window_14540 size ichxrom_window 0 14540 NULL nohasharray
134195 +disable_so_r600_cp_dispatch_texture_fndecl_14540 r600_cp_dispatch_texture fndecl 0 14540 &disable_so_size_ichxrom_window_14540
134196 +disable_so_senddata_fndecl_14550 senddata fndecl 0 14550 NULL
134197 +disable_so_ext4_handle_dirty_dirent_node_fndecl_14563 ext4_handle_dirty_dirent_node fndecl 0 14563 NULL nohasharray
134198 +disable_so_hotkey_mask_set_fndecl_14563 hotkey_mask_set fndecl 0 14563 &disable_so_ext4_handle_dirty_dirent_node_fndecl_14563
134199 +disable_so_dup_ref_fndecl_14567 dup_ref fndecl 0 14567 NULL
134200 +disable_so_cmd_rsv_terminate_fndecl_14570 cmd_rsv_terminate fndecl 0 14570 NULL
134201 +disable_so_snd_tea575x_init_fndecl_14576 snd_tea575x_init fndecl 0 14576 NULL
134202 +disable_so_netxen_send_cmd_descs_fndecl_14577 netxen_send_cmd_descs fndecl 0 14577 NULL
134203 +disable_so_pcim_iomap_regions_fndecl_14583 pcim_iomap_regions fndecl 0 14583 NULL
134204 +disable_so_hwarc_probe_fndecl_14586 hwarc_probe fndecl 0 14586 NULL
134205 +disable_so_open_tx_fndecl_14614 open_tx fndecl 0 14614 NULL
134206 +disable_so_vmw_context_define_ioctl_fndecl_14623 vmw_context_define_ioctl fndecl 0 14623 NULL
134207 +disable_so_jffs2_ubivol_setup_fndecl_14625 jffs2_ubivol_setup fndecl 0 14625 NULL
134208 +disable_so_snd_usb_soundblaster_remote_init_fndecl_14632 snd_usb_soundblaster_remote_init fndecl 0 14632 NULL
134209 +disable_so___wa_xfer_abort_fndecl_14634 __wa_xfer_abort fndecl 0 14634 NULL
134210 +disable_so_mlx4_init_uar_table_fndecl_14638 mlx4_init_uar_table fndecl 0 14638 NULL
134211 +disable_so_bnx2fc_send_logo_fndecl_14641 bnx2fc_send_logo fndecl 0 14641 NULL
134212 +disable_so_efx_mcdi_reset_func_fndecl_14642 efx_mcdi_reset_func fndecl 0 14642 NULL
134213 +disable_so_dln2_gpio_get_pin_count_fndecl_14646 dln2_gpio_get_pin_count fndecl 0 14646 NULL
134214 +disable_so_mtd_is_locked_fndecl_14652 mtd_is_locked fndecl 0 14652 NULL
134215 +disable_so_snd_pcm_hw_constraint_mask_fndecl_14654 snd_pcm_hw_constraint_mask fndecl 0 14654 NULL
134216 +disable_so_ext2_try_to_allocate_fndecl_14672 ext2_try_to_allocate fndecl 0 14672 NULL
134217 +disable_so_ath6kl_bmi_write_fndecl_14689 ath6kl_bmi_write fndecl 0 14689 NULL
134218 +disable_so_dvb_usb_device_init_fndecl_14700 dvb_usb_device_init fndecl 0 14700 NULL
134219 +disable_so_userspace_ctr_fndecl_14703 userspace_ctr fndecl 0 14703 NULL
134220 +disable_so___blk_rq_unmap_user_fndecl_14719 __blk_rq_unmap_user fndecl 0 14719 NULL
134221 +disable_so_inexio_connect_fndecl_14720 inexio_connect fndecl 0 14720 NULL
134222 +disable_so_cur_rate_snd_usb_substream_14726 cur_rate snd_usb_substream 0 14726 NULL
134223 +disable_so_watchdog_enable_fndecl_14738 watchdog_enable fndecl 0 14738 NULL
134224 +disable_so_ext2_find_near_fndecl_14741 ext2_find_near fndecl 0 14741 NULL
134225 +disable_so_cifs_read_from_socket_fndecl_14743 cifs_read_from_socket fndecl 0 14743 NULL
134226 +disable_so__softing_fct_cmd_fndecl_14748 _softing_fct_cmd fndecl 0 14748 NULL nohasharray
134227 +disable_so__mic_virtio_copy_fndecl_14748 _mic_virtio_copy fndecl 0 14748 &disable_so__softing_fct_cmd_fndecl_14748
134228 +disable_so_tfilter_notify_fndecl_14754 tfilter_notify fndecl 0 14754 NULL
134229 +disable_so_pci_dev_reset_slot_function_fndecl_14766 pci_dev_reset_slot_function fndecl 0 14766 NULL
134230 +disable_so_radeon_cp_vertex2_fndecl_14767 radeon_cp_vertex2 fndecl 0 14767 NULL
134231 +disable_so_ivtvfb_prep_frame_fndecl_14770 ivtvfb_prep_frame fndecl 0 14770 NULL
134232 +disable_so_ethtool_get_eee_fndecl_14777 ethtool_get_eee fndecl 0 14777 NULL
134233 +disable_so_xfs_alloc_ag_vextent_exact_fndecl_14785 xfs_alloc_ag_vextent_exact fndecl 0 14785 NULL
134234 +disable_so_kset_register_fndecl_14788 kset_register fndecl 0 14788 NULL
134235 +disable_so__acpi_map_lsapic_fndecl_14794 _acpi_map_lsapic fndecl 0 14794 NULL
134236 +disable_so__regulator_call_set_voltage_fndecl_14805 _regulator_call_set_voltage fndecl 0 14805 NULL
134237 +disable_so_parport_read_fndecl_14828 parport_read fndecl 0 14828 NULL nohasharray
134238 +disable_so_kfd_topology_init_fndecl_14828 kfd_topology_init fndecl 0 14828 &disable_so_parport_read_fndecl_14828
134239 +disable_so_bnx2fc_send_srr_fndecl_14842 bnx2fc_send_srr fndecl 0 14842 NULL
134240 +disable_so_dbg_check_bud_bytes_fndecl_14851 dbg_check_bud_bytes fndecl 0 14851 NULL
134241 +disable_so_if_spi_probe_fndecl_14857 if_spi_probe fndecl 0 14857 NULL
134242 +disable_so_qib_create_rcvhdrq_fndecl_14863 qib_create_rcvhdrq fndecl 0 14863 NULL
134243 +disable_so_tipc_work_start_fndecl_14866 tipc_work_start fndecl 0 14866 NULL
134244 +disable_so___class_register_fndecl_14901 __class_register fndecl 0 14901 NULL
134245 +disable_so_orinoco_dl_firmware_fndecl_14909 orinoco_dl_firmware fndecl 0 14909 NULL
134246 +disable_so_entry_size_neigh_table_14911 entry_size neigh_table 0 14911 NULL
134247 +disable_so_root_inode_defrag_14921 root inode_defrag 0 14921 NULL
134248 +disable_so_blkif_recover_fndecl_14923 blkif_recover fndecl 0 14923 NULL
134249 +disable_so_type_read_fndecl_14935 type_read fndecl 0 14935 NULL
134250 +disable_so_len_hif_scatter_item_14940 len hif_scatter_item 0 14940 NULL
134251 +disable_so_security_inode_setsecurity_fndecl_14949 security_inode_setsecurity fndecl 0 14949 NULL nohasharray
134252 +disable_so_wl1251_acx_beacon_filter_opt_fndecl_14949 wl1251_acx_beacon_filter_opt fndecl 0 14949 &disable_so_security_inode_setsecurity_fndecl_14949
134253 +disable_so_wl1251_op_set_key_fndecl_14950 wl1251_op_set_key fndecl 0 14950 NULL
134254 +disable_so_iwl_power_set_mode_fndecl_14952 iwl_power_set_mode fndecl 0 14952 NULL
134255 +disable_so_msi_verify_entries_fndecl_14953 msi_verify_entries fndecl 0 14953 NULL
134256 +disable_so_vfio_pin_pages_fndecl_14957 vfio_pin_pages fndecl 0 14957 NULL
134257 +disable_so_cfg80211_mlme_assoc_fndecl_14967 cfg80211_mlme_assoc fndecl 0 14967 NULL
134258 +disable_so_cifs_calc_signature_fndecl_14970 cifs_calc_signature fndecl 0 14970 NULL
134259 +disable_so_con_get_trans_new_fndecl_14971 con_get_trans_new fndecl 0 14971 NULL
134260 +disable_so_drm_crtc_vblank_get_fndecl_14972 drm_crtc_vblank_get fndecl 0 14972 NULL
134261 +disable_so_snd_asihpi_sampleclock_add_fndecl_14973 snd_asihpi_sampleclock_add fndecl 0 14973 NULL
134262 +disable_so_snd_hdspm_create_fndecl_14991 snd_hdspm_create fndecl 0 14991 NULL
134263 +disable_so_snd_seq_oss_readq_pick_fndecl_14997 snd_seq_oss_readq_pick fndecl 0 14997 NULL
134264 +disable_so_mantis_pci_init_fndecl_15005 mantis_pci_init fndecl 0 15005 NULL nohasharray
134265 +disable_so_alloc_gtt_mem_fndecl_15005 alloc_gtt_mem fndecl 0 15005 &disable_so_mantis_pci_init_fndecl_15005
134266 +disable_so_rs780_dpm_init_fndecl_15006 rs780_dpm_init fndecl 0 15006 NULL
134267 +disable_so_lmc_proto_open_fndecl_15015 lmc_proto_open fndecl 0 15015 NULL
134268 +disable_so_macvtap_do_read_fndecl_15021 macvtap_do_read fndecl 0 15021 NULL nohasharray
134269 +disable_so_cifs_posix_mkdir_fndecl_15021 cifs_posix_mkdir fndecl 0 15021 &disable_so_macvtap_do_read_fndecl_15021
134270 +disable_so_create_extra_outs_fndecl_15023 create_extra_outs fndecl 0 15023 NULL
134271 +disable_so_intel_overlay_do_wait_request_fndecl_15025 intel_overlay_do_wait_request fndecl 0 15025 NULL
134272 +disable_so_vnic_intr_alloc_fndecl_15028 vnic_intr_alloc fndecl 0 15028 NULL
134273 +disable_so_exec_drive_taskfile_fndecl_15029 exec_drive_taskfile fndecl 0 15029 NULL
134274 +disable_so_ea_remove_unstuffed_fndecl_15041 ea_remove_unstuffed fndecl 0 15041 NULL nohasharray
134275 +disable_so_carl9170_register_wps_button_fndecl_15041 carl9170_register_wps_button fndecl 0 15041 &disable_so_ea_remove_unstuffed_fndecl_15041
134276 +disable_so_ipmi_request_supply_msgs_fndecl_15049 ipmi_request_supply_msgs fndecl 0 15049 NULL nohasharray
134277 +disable_so_sas_register_phys_fndecl_15049 sas_register_phys fndecl 0 15049 &disable_so_ipmi_request_supply_msgs_fndecl_15049
134278 +disable_so_ext4_destroy_inline_data_nolock_fndecl_15056 ext4_destroy_inline_data_nolock fndecl 0 15056 NULL
134279 +disable_so_xfs_rtcheck_range_fndecl_15077 xfs_rtcheck_range fndecl 0 15077 NULL
134280 +disable_so_drm_map_handle_fndecl_15083 drm_map_handle fndecl 0 15083 NULL
134281 +disable_so_megasas_mgmt_ioctl_aen_fndecl_15087 megasas_mgmt_ioctl_aen fndecl 0 15087 NULL
134282 +disable_so_jffs2_sum_init_fndecl_15091 jffs2_sum_init fndecl 0 15091 NULL
134283 +disable_so_et131x_rx_dma_memory_alloc_fndecl_15108 et131x_rx_dma_memory_alloc fndecl 0 15108 NULL
134284 +disable_so_trinity_parse_power_table_fndecl_15116 trinity_parse_power_table fndecl 0 15116 NULL
134285 +disable_so_read_sb_page_fndecl_15124 read_sb_page fndecl 0 15124 NULL
134286 +disable_so_intel_wrap_ring_buffer_fndecl_15126 intel_wrap_ring_buffer fndecl 0 15126 NULL
134287 +disable_so_cache_block_group_fndecl_15128 cache_block_group fndecl 0 15128 NULL
134288 +disable_so_hfcmulti_init_fndecl_15134 hfcmulti_init fndecl 0 15134 NULL
134289 +disable_so_read_mode_page_fndecl_15138 read_mode_page fndecl 0 15138 NULL
134290 +disable_so_gfs2_xattr_acl_get_fndecl_15141 gfs2_xattr_acl_get fndecl 0 15141 NULL nohasharray
134291 +disable_so_pci_reset_function_fndecl_15141 pci_reset_function fndecl 0 15141 &disable_so_gfs2_xattr_acl_get_fndecl_15141
134292 +disable_so_copy_oldmem_page_fndecl_15143 copy_oldmem_page fndecl 0 15143 NULL
134293 +disable_so_mtd_unlock_fndecl_15150 mtd_unlock fndecl 0 15150 NULL
134294 +disable_so_sas_get_report_phy_sata_fndecl_15166 sas_get_report_phy_sata fndecl 0 15166 NULL
134295 +disable_so_iwl_mvm_enable_beacon_filter_fndecl_15169 iwl_mvm_enable_beacon_filter fndecl 0 15169 NULL
134296 +disable_so_fuse_reverse_inval_entry_fndecl_15170 fuse_reverse_inval_entry fndecl 0 15170 NULL nohasharray
134297 +disable_so_rts_threshold_wiphy_15170 rts_threshold wiphy 0 15170 &disable_so_fuse_reverse_inval_entry_fndecl_15170
134298 +disable_so_alloc_name_fndecl_15177 alloc_name fndecl 0 15177 NULL
134299 +disable_so_nr_pages_videobuf_dmabuf_15190 nr_pages videobuf_dmabuf 0 15190 NULL
134300 +disable_so_set_chunk_size_fndecl_15193 set_chunk_size fndecl 0 15193 NULL
134301 +disable_so_error_btrfsic_stack_frame_15195 error btrfsic_stack_frame 0 15195 NULL
134302 +disable_so_ethtool_set_eee_fndecl_15198 ethtool_set_eee fndecl 0 15198 NULL
134303 +disable_so_w8001_setup_fndecl_15200 w8001_setup fndecl 0 15200 NULL
134304 +disable_so_team_upper_dev_link_fndecl_15203 team_upper_dev_link fndecl 0 15203 NULL nohasharray
134305 +disable_so_size_nforce2_smbus_15203 size nforce2_smbus 0 15203 &disable_so_team_upper_dev_link_fndecl_15203
134306 +disable_so_simple_setattr_fndecl_15209 simple_setattr fndecl 0 15209 NULL
134307 +disable_so_write_tag_66_packet_fndecl_15216 write_tag_66_packet fndecl 0 15216 NULL
134308 +disable_so_platform_device_register_fndecl_15221 platform_device_register fndecl 0 15221 NULL
134309 +disable_so_sisusb_bulkout_msg_fndecl_15233 sisusb_bulkout_msg fndecl 0 15233 NULL
134310 +disable_so_evergreen_cs_track_validate_stencil_fndecl_15243 evergreen_cs_track_validate_stencil fndecl 0 15243 NULL
134311 +disable_so_beiscsi_mccq_compl_fndecl_15248 beiscsi_mccq_compl fndecl 0 15248 NULL
134312 +disable_so_smsc95xx_enter_suspend1_fndecl_15249 smsc95xx_enter_suspend1 fndecl 0 15249 NULL
134313 +disable_so_kernfs_get_open_node_fndecl_15253 kernfs_get_open_node fndecl 0 15253 NULL
134314 +disable_so_size_write_fndecl_15267 size_write fndecl 0 15267 NULL nohasharray
134315 +disable_so_iio_buffer_update_demux_fndecl_15267 iio_buffer_update_demux fndecl 0 15267 &disable_so_size_write_fndecl_15267
134316 +disable_so_loop_set_status_old_fndecl_15268 loop_set_status_old fndecl 0 15268 NULL
134317 +disable_so_wl1251_acx_low_rssi_fndecl_15276 wl1251_acx_low_rssi fndecl 0 15276 NULL
134318 +disable_so_qlcnic_sriov_set_guest_vlan_mode_fndecl_15284 qlcnic_sriov_set_guest_vlan_mode fndecl 0 15284 NULL nohasharray
134319 +disable_so_apei_resources_request_fndecl_15284 apei_resources_request fndecl 0 15284 &disable_so_qlcnic_sriov_set_guest_vlan_mode_fndecl_15284
134320 +disable_so_crypto_ctxsize_fndecl_15285 crypto_ctxsize fndecl 0 15285 NULL
134321 +disable_so_atk_add_sensor_fndecl_15288 atk_add_sensor fndecl 0 15288 NULL
134322 +disable_so_nvme_trans_fmt_send_cmd_fndecl_15289 nvme_trans_fmt_send_cmd fndecl 0 15289 NULL
134323 +disable_so_alloc_oc_sq_fndecl_15290 alloc_oc_sq fndecl 0 15290 NULL nohasharray
134324 +disable_so_ip_vs_edit_dest_fndecl_15290 ip_vs_edit_dest fndecl 0 15290 &disable_so_alloc_oc_sq_fndecl_15290
134325 +disable_so_wacom_set_device_mode_fndecl_15291 wacom_set_device_mode fndecl 0 15291 NULL
134326 +disable_so_show_temp_fndecl_15296 show_temp fndecl 0 15296 NULL
134327 +disable_so___sg_alloc_table_fndecl_15308 __sg_alloc_table fndecl 0 15308 NULL
134328 +disable_so_ttusb_dec_send_command_fndecl_15309 ttusb_dec_send_command fndecl 0 15309 NULL
134329 +disable_so_unpack_pnode_fndecl_15310 unpack_pnode fndecl 0 15310 NULL
134330 +disable_so_snd_pcm_plug_client_channels_buf_fndecl_15318 snd_pcm_plug_client_channels_buf fndecl 0 15318 NULL
134331 +disable_so_xhci_reset_fndecl_15323 xhci_reset fndecl 0 15323 NULL
134332 +disable_so_p54_fill_band_bitrates_fndecl_15329 p54_fill_band_bitrates fndecl 0 15329 NULL
134333 +disable_so_w_e_end_ov_req_fndecl_15345 w_e_end_ov_req fndecl 0 15345 NULL
134334 +disable_so_sc18is602_txrx_fndecl_15346 sc18is602_txrx fndecl 0 15346 NULL
134335 +disable_so_wcn36xx_dxe_allocate_mem_pools_fndecl_15351 wcn36xx_dxe_allocate_mem_pools fndecl 0 15351 NULL
134336 +disable_so_snd_vx_check_reg_bit_fndecl_15355 snd_vx_check_reg_bit fndecl 0 15355 NULL
134337 +disable_so_mwl8k_cmd_set_rts_threshold_fndecl_15364 mwl8k_cmd_set_rts_threshold fndecl 0 15364 NULL
134338 +disable_so_cifs_negotiate_protocol_fndecl_15375 cifs_negotiate_protocol fndecl 0 15375 NULL
134339 +disable_so_udf_get_filename_fndecl_15376 udf_get_filename fndecl 0 15376 NULL
134340 +disable_so_mpt3sas_base_attach_fndecl_15377 mpt3sas_base_attach fndecl 0 15377 NULL
134341 +disable_so_pmu_dev_alloc_fndecl_15381 pmu_dev_alloc fndecl 0 15381 NULL
134342 +disable_so_fujitsu_connect_fndecl_15386 fujitsu_connect fndecl 0 15386 NULL
134343 +disable_so_sys_mq_timedreceive_fndecl_15392 sys_mq_timedreceive fndecl 0 15392 NULL
134344 +disable_so_size_mtd_info_15393 size mtd_info 0 15393 NULL
134345 +disable_so_raw_geticmpfilter_fndecl_15394 raw_geticmpfilter fndecl 0 15394 NULL
134346 +disable_so_id_mic_device_15395 id mic_device 0 15395 NULL
134347 +disable_so_elsa_cs_probe_fndecl_15409 elsa_cs_probe fndecl 0 15409 NULL
134348 +disable_so__base_get_ioc_facts_fndecl_15418 _base_get_ioc_facts fndecl 0 15418 NULL
134349 +disable_so___send_signal_fndecl_15424 __send_signal fndecl 0 15424 NULL
134350 +disable_so_ddr_base_intel_sst_drv_15431 ddr_base intel_sst_drv 0 15431 NULL
134351 +disable_so_xfs_qm_dqattach_fndecl_15441 xfs_qm_dqattach fndecl 0 15441 NULL
134352 +disable_so_ip_mroute_getsockopt_fndecl_15443 ip_mroute_getsockopt fndecl 0 15443 NULL
134353 +disable_so_work_start_fndecl_15450 work_start fndecl 0 15450 NULL
134354 +disable_so_rtsx_pci_write_ppbuf_fndecl_15464 rtsx_pci_write_ppbuf fndecl 0 15464 NULL nohasharray
134355 +disable_so_ubi_io_read_ec_hdr_fndecl_15464 ubi_io_read_ec_hdr fndecl 0 15464 &disable_so_rtsx_pci_write_ppbuf_fndecl_15464 nohasharray
134356 +disable_so_bnx2fc_send_adisc_fndecl_15464 bnx2fc_send_adisc fndecl 0 15464 &disable_so_ubi_io_read_ec_hdr_fndecl_15464
134357 +disable_so_netlbl_cipsov4_add_std_fndecl_15465 netlbl_cipsov4_add_std fndecl 0 15465 NULL
134358 +disable_so_ieee80211_mesh_build_beacon_fndecl_15468 ieee80211_mesh_build_beacon fndecl 0 15468 NULL
134359 +disable_so_set_geometry_fndecl_15469 set_geometry fndecl 0 15469 NULL
134360 +disable_so_cifs_fill_dirent_fndecl_15470 cifs_fill_dirent fndecl 0 15470 NULL
134361 +disable_so_mmio_len_fb_fix_screeninfo_15477 mmio_len fb_fix_screeninfo 0 15477 NULL
134362 +disable_so_ocfs2_grab_pages_fndecl_15485 ocfs2_grab_pages fndecl 0 15485 NULL
134363 +disable_so_mce_chrdev_read_fndecl_15502 mce_chrdev_read fndecl 0 15502 NULL
134364 +disable_so_sumo_dpm_init_fndecl_15505 sumo_dpm_init fndecl 0 15505 NULL
134365 +disable_so_sys_rt_sigpending_fndecl_15506 sys_rt_sigpending fndecl 0 15506 NULL
134366 +disable_so_ide_task_ioctl_fndecl_15509 ide_task_ioctl fndecl 0 15509 NULL
134367 +disable_so_ensure_wear_leveling_fndecl_15512 ensure_wear_leveling fndecl 0 15512 NULL
134368 +disable_so_arp_ioctl_fndecl_15525 arp_ioctl fndecl 0 15525 NULL
134369 +disable_so_wl1273_fm_get_tx_ctune_fndecl_15534 wl1273_fm_get_tx_ctune fndecl 0 15534 NULL nohasharray
134370 +disable_so_nand_update_bbt_fndecl_15534 nand_update_bbt fndecl 0 15534 &disable_so_wl1273_fm_get_tx_ctune_fndecl_15534
134371 +disable_so_slot_get_fndecl_15540 slot_get fndecl 0 15540 NULL
134372 +disable_so_genwqe_user_vmap_fndecl_15544 genwqe_user_vmap fndecl 0 15544 NULL
134373 +disable_so_index_btframe_15545 index btframe 0 15545 NULL
134374 +disable_so_mwl8k_encryption_set_cmd_info_fndecl_15550 mwl8k_encryption_set_cmd_info fndecl 0 15550 NULL
134375 +disable_so_wlcore_cmd_send_failsafe_fndecl_15553 wlcore_cmd_send_failsafe fndecl 0 15553 NULL
134376 +disable_so_brcmf_pcie_setup_fndecl_15556 brcmf_pcie_setup fndecl 0 15556 NULL
134377 +disable_so_wl1271_acx_pm_config_fndecl_15563 wl1271_acx_pm_config fndecl 0 15563 NULL nohasharray
134378 +disable_so_s5p_mfc_enc_ctrls_setup_fndecl_15563 s5p_mfc_enc_ctrls_setup fndecl 0 15563 &disable_so_wl1271_acx_pm_config_fndecl_15563
134379 +disable_so_hw_ep_prime_fndecl_15564 hw_ep_prime fndecl 0 15564 NULL
134380 +disable_so_format_mf_symlink_fndecl_15566 format_mf_symlink fndecl 0 15566 NULL nohasharray
134381 +disable_so_push_frame_fndecl_15566 push_frame fndecl 0 15566 &disable_so_format_mf_symlink_fndecl_15566
134382 +disable_so_iwl_read_otp_word_fndecl_15572 iwl_read_otp_word fndecl 0 15572 NULL
134383 +disable_so_gpiod_set_debounce_fndecl_15579 gpiod_set_debounce fndecl 0 15579 NULL
134384 +disable_so_acpi20_efi_15582 acpi20 efi 0 15582 NULL
134385 +disable_so_enic_set_intr_mode_fndecl_15594 enic_set_intr_mode fndecl 0 15594 NULL
134386 +disable_so_tx_ring_count_ixgbe_adapter_15595 tx_ring_count ixgbe_adapter 0 15595 NULL
134387 +disable_so_genwqe_map_pages_fndecl_15600 genwqe_map_pages fndecl 0 15600 NULL
134388 +disable_so_drm_addmap_core_fndecl_15627 drm_addmap_core fndecl 0 15627 NULL nohasharray
134389 +disable_so_nents_sg_table_15627 nents sg_table 0 15627 &disable_so_drm_addmap_core_fndecl_15627
134390 +disable_so_phantom_probe_fndecl_15628 phantom_probe fndecl 0 15628 NULL
134391 +disable_so_mcs_wrap_mir_skb_fndecl_15633 mcs_wrap_mir_skb fndecl 0 15633 NULL
134392 +disable_so_ast_fbdev_init_fndecl_15634 ast_fbdev_init fndecl 0 15634 NULL
134393 +disable_so_snd_pcm_hw_rule_noresample_fndecl_15636 snd_pcm_hw_rule_noresample fndecl 0 15636 NULL
134394 +disable_so_pci_af_flr_fndecl_15645 pci_af_flr fndecl 0 15645 NULL
134395 +disable_so_broadsheet_spiflash_erase_sector_fndecl_15653 broadsheet_spiflash_erase_sector fndecl 0 15653 NULL
134396 +disable_so_jffs2_verify_write_fndecl_15662 jffs2_verify_write fndecl 0 15662 NULL nohasharray
134397 +disable_so_eeprom_rd_phys_fndecl_15662 eeprom_rd_phys fndecl 0 15662 &disable_so_jffs2_verify_write_fndecl_15662
134398 +disable_so_mmc_app_send_scr_fndecl_15679 mmc_app_send_scr fndecl 0 15679 NULL
134399 +disable_so_vt_waitactive_fndecl_15695 vt_waitactive fndecl 0 15695 NULL
134400 +disable_so_iov_len_kvec_15702 iov_len kvec 0 15702 NULL
134401 +disable_so_blk_rq_err_bytes_fndecl_15705 blk_rq_err_bytes fndecl 0 15705 NULL
134402 +disable_so_ethtool_set_value_fndecl_15721 ethtool_set_value fndecl 0 15721 NULL
134403 +disable_so_vfat_add_entry_fndecl_15735 vfat_add_entry fndecl 0 15735 NULL
134404 +disable_so___mlx4_qp_alloc_icm_fndecl_15743 __mlx4_qp_alloc_icm fndecl 0 15743 NULL
134405 +disable_so_st_int_ioctl_fndecl_15750 st_int_ioctl fndecl 0 15750 NULL
134406 +disable_so___btrfs_run_delayed_refs_fndecl_15751 __btrfs_run_delayed_refs fndecl 0 15751 NULL nohasharray
134407 +disable_so_ocrdma_mbx_get_ctrl_attribs_fndecl_15751 ocrdma_mbx_get_ctrl_attribs fndecl 0 15751 &disable_so___btrfs_run_delayed_refs_fndecl_15751
134408 +disable_so_ath6kl_init_hw_params_fndecl_15755 ath6kl_init_hw_params fndecl 0 15755 NULL
134409 +disable_so_vidioc_try_fmt_vid_overlay_fndecl_15757 vidioc_try_fmt_vid_overlay fndecl 0 15757 NULL
134410 +disable_so_wait_transaction_complete_fndecl_15768 wait_transaction_complete fndecl 0 15768 NULL
134411 +disable_so_start_bunzip_fndecl_15772 start_bunzip fndecl 0 15772 NULL
134412 +disable_so___amd_iommu_flush_tlb_fndecl_15777 __amd_iommu_flush_tlb fndecl 0 15777 NULL
134413 +disable_so_brcmf_cfg80211_connect_fndecl_15784 brcmf_cfg80211_connect fndecl 0 15784 NULL
134414 +disable_so_next_id_ipc_ids_15788 next_id ipc_ids 0 15788 NULL
134415 +disable_so_eeepc_rfkill_init_fndecl_15807 eeepc_rfkill_init fndecl 0 15807 NULL
134416 +disable_so_hidp_sock_compat_ioctl_fndecl_15808 hidp_sock_compat_ioctl fndecl 0 15808 NULL
134417 +disable_so_check_stack_read_fndecl_15812 check_stack_read fndecl 0 15812 NULL
134418 +disable_so_cache_read_fndecl_15813 cache_read fndecl 0 15813 NULL
134419 +disable_so_target_xcopy_issue_pt_cmd_fndecl_15814 target_xcopy_issue_pt_cmd fndecl 0 15814 NULL
134420 +disable_so_i915_gem_check_wedge_fndecl_15818 i915_gem_check_wedge fndecl 0 15818 NULL
134421 +disable_so_zd1201_docmd_fndecl_15830 zd1201_docmd fndecl 0 15830 NULL
134422 +disable_so_s_fmask_ufs_sb_private_info_15833 s_fmask ufs_sb_private_info 0 15833 NULL nohasharray
134423 +disable_so_em28xx_audio_setup_fndecl_15833 em28xx_audio_setup fndecl 0 15833 &disable_so_s_fmask_ufs_sb_private_info_15833
134424 +disable_so_ocfs2_read_blocks_fndecl_15834 ocfs2_read_blocks fndecl 0 15834 NULL
134425 +disable_so_set_config_fndecl_15835 set_config fndecl 0 15835 NULL
134426 +disable_so_irq_set_msi_desc_fndecl_15846 irq_set_msi_desc fndecl 0 15846 NULL
134427 +disable_so_pci200_pci_init_one_fndecl_15849 pci200_pci_init_one fndecl 0 15849 NULL
134428 +disable_so_retlen_mtd_oob_ops_15862 retlen mtd_oob_ops 0 15862 NULL
134429 +disable_so_mwifiex_is_network_compatible_fndecl_15865 mwifiex_is_network_compatible fndecl 0 15865 NULL
134430 +disable_so_mmc_send_tuning_fndecl_15868 mmc_send_tuning fndecl 0 15868 NULL
134431 +disable_so_unix_mkname_fndecl_15883 unix_mkname fndecl 0 15883 NULL
134432 +disable_so_wl1251_cmd_send_fndecl_15885 wl1251_cmd_send fndecl 0 15885 NULL nohasharray
134433 +disable_so_goku_probe_fndecl_15885 goku_probe fndecl 0 15885 &disable_so_wl1251_cmd_send_fndecl_15885
134434 +disable_so_sn9c2028_read1_fndecl_15891 sn9c2028_read1 fndecl 0 15891 NULL
134435 +disable_so_interrupt_out_size_usb_serial_port_15896 interrupt_out_size usb_serial_port 0 15896 NULL
134436 +disable_so_cpia_usb_transferCmd_fndecl_15901 cpia_usb_transferCmd fndecl 0 15901 NULL
134437 +disable_so_rh_queue_status_fndecl_15921 rh_queue_status fndecl 0 15921 NULL
134438 +disable_so_svc_ioctl_fndecl_15923 svc_ioctl fndecl 0 15923 NULL
134439 +disable_so__ctl_do_reset_fndecl_15929 _ctl_do_reset fndecl 0 15929 NULL
134440 +disable_so_command_setyuvtresh_fndecl_15933 command_setyuvtresh fndecl 0 15933 NULL
134441 +disable_so_v4l2_m2m_dqbuf_fndecl_15936 v4l2_m2m_dqbuf fndecl 0 15936 NULL
134442 +disable_so___mlx4_write_mtt_fndecl_15938 __mlx4_write_mtt fndecl 0 15938 NULL
134443 +disable_so_wl18xx_scan_send_fndecl_15944 wl18xx_scan_send fndecl 0 15944 NULL
134444 +disable_so_uwb_est_register_fndecl_15947 uwb_est_register fndecl 0 15947 NULL
134445 +disable_so_sis96x_smbus_base_vardecl_i2c_sis96x_c_15949 sis96x_smbus_base vardecl_i2c-sis96x.c 0 15949 NULL
134446 +disable_so_xfs_ialloc_pagi_init_fndecl_15952 xfs_ialloc_pagi_init fndecl 0 15952 NULL
134447 +disable_so_post_recv_fndecl_15953 post_recv fndecl 0 15953 NULL
134448 +disable_so__gpiod_direction_output_raw_fndecl_15957 _gpiod_direction_output_raw fndecl 0 15957 NULL
134449 +disable_so_ebt_buf_add_pad_fndecl_15958 ebt_buf_add_pad fndecl 0 15958 NULL
134450 +disable_so_check_alu_op_fndecl_15961 check_alu_op fndecl 0 15961 NULL
134451 +disable_so_src_mgr_create_fndecl_15963 src_mgr_create fndecl 0 15963 NULL
134452 +disable_so_dspxfr_one_seg_fndecl_15971 dspxfr_one_seg fndecl 0 15971 NULL
134453 +disable_so_ath6kl_wmi_beginscan_cmd_fndecl_15973 ath6kl_wmi_beginscan_cmd fndecl 0 15973 NULL
134454 +disable_so_treo_attach_fndecl_15976 treo_attach fndecl 0 15976 NULL
134455 +disable_so_usb6fire_control_add_virtual_fndecl_15981 usb6fire_control_add_virtual fndecl 0 15981 NULL
134456 +disable_so_mmc_test_area_io_fndecl_15982 mmc_test_area_io fndecl 0 15982 NULL
134457 +disable_so_sel_open_policy_fndecl_15989 sel_open_policy fndecl 0 15989 NULL
134458 +disable_so_xfs_qm_dqtobp_fndecl_15995 xfs_qm_dqtobp fndecl 0 15995 NULL
134459 +disable_so_nilfs_cpfile_get_blkoff_fndecl_15997 nilfs_cpfile_get_blkoff fndecl 0 15997 NULL
134460 +disable_so_do_tcp_setsockopt_fndecl_16004 do_tcp_setsockopt fndecl 0 16004 NULL
134461 +disable_so_xen_irq_info_evtchn_setup_fndecl_16009 xen_irq_info_evtchn_setup fndecl 0 16009 NULL
134462 +disable_so_ivtv_buf_copy_from_user_fndecl_16013 ivtv_buf_copy_from_user fndecl 0 16013 NULL
134463 +disable_so_num_stripes_map_lookup_16016 num_stripes map_lookup 0 16016 NULL
134464 +disable_so_wacom_get_report_fndecl_16028 wacom_get_report fndecl 0 16028 NULL
134465 +disable_so_sb_permission_fndecl_16032 sb_permission fndecl 0 16032 NULL
134466 +disable_so_ct_atc_create_fndecl_16033 ct_atc_create fndecl 0 16033 NULL
134467 +disable_so_put_v4l2_standard32_fndecl_16045 put_v4l2_standard32 fndecl 0 16045 NULL
134468 +disable_so_snd_pcm_plugin_build_fndecl_16050 snd_pcm_plugin_build fndecl 0 16050 NULL
134469 +disable_so_nouveau_bo_new_fndecl_16051 nouveau_bo_new fndecl 0 16051 NULL
134470 +disable_so_sys_waitid_fndecl_16055 sys_waitid fndecl 0 16055 NULL nohasharray
134471 +disable_so_store_new_id_fndecl_16055 store_new_id fndecl 0 16055 &disable_so_sys_waitid_fndecl_16055
134472 +disable_so_xfs_alloc_fix_freelist_fndecl_16057 xfs_alloc_fix_freelist fndecl 0 16057 NULL
134473 +disable_so_sidtab_insert_fndecl_16071 sidtab_insert fndecl 0 16071 NULL
134474 +disable_so_ethtool_set_eeprom_fndecl_16072 ethtool_set_eeprom fndecl 0 16072 NULL
134475 +disable_so_ext3_get_inode_loc_fndecl_16085 ext3_get_inode_loc fndecl 0 16085 NULL nohasharray
134476 +disable_so_iwl_mvm_send_cmd_status_fndecl_16085 iwl_mvm_send_cmd_status fndecl 0 16085 &disable_so_ext3_get_inode_loc_fndecl_16085
134477 +disable_so_check_kill_permission_fndecl_16095 check_kill_permission fndecl 0 16095 NULL
134478 +disable_so_blk_addr_f2fs_io_info_16107 blk_addr f2fs_io_info 0 16107 NULL
134479 +disable_so_hfsplus_removexattr_fndecl_16108 hfsplus_removexattr fndecl 0 16108 NULL
134480 +disable_so_isdn_ppp_set_compressor_fndecl_16109 isdn_ppp_set_compressor fndecl 0 16109 NULL
134481 +disable_so_wl1271_cmd_set_ap_key_fndecl_16110 wl1271_cmd_set_ap_key fndecl 0 16110 NULL
134482 +disable_so_falcon_read_nvram_fndecl_16115 falcon_read_nvram fndecl 0 16115 NULL
134483 +disable_so_efx_ptp_ts_init_fndecl_16116 efx_ptp_ts_init fndecl 0 16116 NULL
134484 +disable_so_SMB2_request_res_key_fndecl_16126 SMB2_request_res_key fndecl 0 16126 NULL nohasharray
134485 +disable_so_compat_table_info_fndecl_16126 compat_table_info fndecl 0 16126 &disable_so_SMB2_request_res_key_fndecl_16126
134486 +disable_so_irq_cpu_rmap_add_fndecl_16131 irq_cpu_rmap_add fndecl 0 16131 NULL
134487 +disable_so_smb2_reconnect_fndecl_16136 smb2_reconnect fndecl 0 16136 NULL
134488 +disable_so_ironlake_compute_dpll_fndecl_16138 ironlake_compute_dpll fndecl 0 16138 NULL
134489 +disable_so_mlx4_cmd_poll_fndecl_16139 mlx4_cmd_poll fndecl 0 16139 NULL
134490 +disable_so_iwl_dbgfs_tx_flush_write_fndecl_16144 iwl_dbgfs_tx_flush_write fndecl 0 16144 NULL
134491 +disable_so_samples_per_line_v4l2_vbi_format_16148 samples_per_line v4l2_vbi_format 0 16148 NULL nohasharray
134492 +disable_so_pci_bus_set_aer_ops_fndecl_16148 pci_bus_set_aer_ops fndecl 0 16148 &disable_so_samples_per_line_v4l2_vbi_format_16148
134493 +disable_so_register_shrinker_fndecl_16156 register_shrinker fndecl 0 16156 NULL
134494 +disable_so_read_widget_caps_fndecl_16163 read_widget_caps fndecl 0 16163 NULL
134495 +disable_so_ip_set_create_fndecl_16168 ip_set_create fndecl 0 16168 NULL
134496 +disable_so_reiserfs_commit_write_fndecl_16171 reiserfs_commit_write fndecl 0 16171 NULL
134497 +disable_so_rbt_memtype_check_insert_fndecl_16175 rbt_memtype_check_insert fndecl 0 16175 NULL
134498 +disable_so_minor_lirc_driver_16182 minor lirc_driver 0 16182 NULL nohasharray
134499 +disable_so_board_span_myri10ge_priv_16182 board_span myri10ge_priv 0 16182 &disable_so_minor_lirc_driver_16182
134500 +disable_so_wl18xx_acx_set_checksum_state_fndecl_16183 wl18xx_acx_set_checksum_state fndecl 0 16183 NULL
134501 +disable_so__snd_emu10k1_audigy_init_efx_fndecl_16185 _snd_emu10k1_audigy_init_efx fndecl 0 16185 NULL
134502 +disable_so_vid_hdr_offs_mtd_dev_param_16199 vid_hdr_offs mtd_dev_param 0 16199 NULL
134503 +disable_so___ims_pcu_execute_command_fndecl_16201 __ims_pcu_execute_command fndecl 0 16201 NULL nohasharray
134504 +disable_so_sctp_getsockopt_local_addrs_fndecl_16201 sctp_getsockopt_local_addrs fndecl 0 16201 &disable_so___ims_pcu_execute_command_fndecl_16201
134505 +disable_so_snd_rawmidi_info_user_fndecl_16206 snd_rawmidi_info_user fndecl 0 16206 NULL
134506 +disable_so_lpfc_sli_chipset_init_fndecl_16214 lpfc_sli_chipset_init fndecl 0 16214 NULL
134507 +disable_so_ipath_init_qp_table_fndecl_16220 ipath_init_qp_table fndecl 0 16220 NULL
134508 +disable_so_port_hdspm_16225 port hdspm 0 16225 NULL
134509 +disable_so_cx25821_riscmem_alloc_fndecl_16226 cx25821_riscmem_alloc fndecl 0 16226 NULL
134510 +disable_so_add_tree_block_fndecl_16239 add_tree_block fndecl 0 16239 NULL
134511 +disable_so_tipc_server_start_fndecl_16258 tipc_server_start fndecl 0 16258 NULL
134512 +disable_so___hfsplus_delete_attr_fndecl_16262 __hfsplus_delete_attr fndecl 0 16262 NULL
134513 +disable_so_open_rx_first_fndecl_16279 open_rx_first fndecl 0 16279 NULL
134514 +disable_so_ieee80211_start_tx_ba_session_fndecl_16286 ieee80211_start_tx_ba_session fndecl 0 16286 NULL
134515 +disable_so_dvbdev_get_free_adapter_num_fndecl_16292 dvbdev_get_free_adapter_num fndecl 0 16292 NULL
134516 +disable_so_w_e_send_csum_fndecl_16297 w_e_send_csum fndecl 0 16297 NULL
134517 +disable_so_tb_cfg_read_fndecl_16303 tb_cfg_read fndecl 0 16303 NULL
134518 +disable_so_aac_fib_send_fndecl_16315 aac_fib_send fndecl 0 16315 NULL
134519 +disable_so_AscGetMaxDmaCount_fndecl_16326 AscGetMaxDmaCount fndecl 0 16326 NULL
134520 +disable_so_ubifs_wbuf_init_fndecl_16337 ubifs_wbuf_init fndecl 0 16337 NULL
134521 +disable_so_timerfd_setup_fndecl_16363 timerfd_setup fndecl 0 16363 NULL
134522 +disable_so_atmel_open_fndecl_16364 atmel_open fndecl 0 16364 NULL
134523 +disable_so_intel_shared_dpll_start_config_fndecl_16383 intel_shared_dpll_start_config fndecl 0 16383 NULL
134524 +disable_so_spi_setup_fndecl_16385 spi_setup fndecl 0 16385 NULL
134525 +disable_so_zd_mac_preinit_hw_fndecl_16386 zd_mac_preinit_hw fndecl 0 16386 NULL
134526 +disable_so_sr_set_blocklength_fndecl_16390 sr_set_blocklength fndecl 0 16390 NULL
134527 +disable_so___logfs_seek_data_fndecl_16398 __logfs_seek_data fndecl 0 16398 NULL
134528 +disable_so_make_node_dirty_fndecl_16399 make_node_dirty fndecl 0 16399 NULL
134529 +disable_so_omap_hsmmc_setup_dma_transfer_fndecl_16407 omap_hsmmc_setup_dma_transfer fndecl 0 16407 NULL
134530 +disable_so_nci_hci_connect_gate_fndecl_16408 nci_hci_connect_gate fndecl 0 16408 NULL
134531 +disable_so_ci_dpm_init_fndecl_16421 ci_dpm_init fndecl 0 16421 NULL
134532 +disable_so_snd_seq_ioctl_unsubscribe_port_fndecl_16426 snd_seq_ioctl_unsubscribe_port fndecl 0 16426 NULL
134533 +disable_so_vmw_translate_guest_ptr_fndecl_16432 vmw_translate_guest_ptr fndecl 0 16432 NULL nohasharray
134534 +disable_so_mtip_read_log_page_fndecl_16432 mtip_read_log_page fndecl 0 16432 &disable_so_vmw_translate_guest_ptr_fndecl_16432
134535 +disable_so_snd_m3_pcm_fndecl_16433 snd_m3_pcm fndecl 0 16433 NULL
134536 +disable_so_astfb_create_fndecl_16434 astfb_create fndecl 0 16434 NULL
134537 +disable_so_iwl_eeprom_verify_signature_fndecl_16440 iwl_eeprom_verify_signature fndecl 0 16440 NULL
134538 +disable_so_frame_size_au0828_dev_16447 frame_size au0828_dev 0 16447 NULL
134539 +disable_so_mwl8k_cmd_finalize_join_fndecl_16459 mwl8k_cmd_finalize_join fndecl 0 16459 NULL
134540 +disable_so_snd_pcm_lib_read1_fndecl_16464 snd_pcm_lib_read1 fndecl 0 16464 NULL
134541 +disable_so_ipath_create_qp_fndecl_16467 ipath_create_qp fndecl 0 16467 NULL
134542 +disable_so_bcma_erom_get_addr_desc_fndecl_16484 bcma_erom_get_addr_desc fndecl 0 16484 NULL
134543 +disable_so_xenbus_grant_ring_fndecl_16488 xenbus_grant_ring fndecl 0 16488 NULL
134544 +disable_so_snd_pcm_plugin_build_route_fndecl_16492 snd_pcm_plugin_build_route fndecl 0 16492 NULL
134545 +disable_so_smb_send_rqst_fndecl_16494 smb_send_rqst fndecl 0 16494 NULL
134546 +disable_so_ttm_page_alloc_init_fndecl_16498 ttm_page_alloc_init fndecl 0 16498 NULL
134547 +disable_so_max_srq_wqes_mthca_limits_16499 max_srq_wqes mthca_limits 0 16499 NULL
134548 +disable_so_lpfc_setup_endian_order_fndecl_16512 lpfc_setup_endian_order fndecl 0 16512 NULL
134549 +disable_so_mptctl_do_reset_fndecl_16536 mptctl_do_reset fndecl 0 16536 NULL
134550 +disable_so___uvc_ctrl_add_mapping_fndecl_16541 __uvc_ctrl_add_mapping fndecl 0 16541 NULL
134551 +disable_so_snd_cs8427_init_fndecl_16549 snd_cs8427_init fndecl 0 16549 NULL
134552 +disable_so_sk_peek_off_sock_16562 sk_peek_off sock 0 16562 NULL
134553 +disable_so_snd_usbmidi_create_rawmidi_fndecl_16564 snd_usbmidi_create_rawmidi fndecl 0 16564 NULL
134554 +disable_so_ext3_try_to_allocate_fndecl_16565 ext3_try_to_allocate fndecl 0 16565 NULL
134555 +disable_so_result_wa_xfer_16568 result wa_xfer 0 16568 NULL
134556 +disable_so_pre_rsb_struct_fndecl_16572 pre_rsb_struct fndecl 0 16572 NULL
134557 +disable_so__ctl_ioctl_main_fndecl_16588 _ctl_ioctl_main fndecl 0 16588 NULL
134558 +disable_so_ethtool_set_ringparam_fndecl_16591 ethtool_set_ringparam fndecl 0 16591 NULL
134559 +disable_so_prism2_ioctl_get_rid_fndecl_16596 prism2_ioctl_get_rid fndecl 0 16596 NULL
134560 +disable_so_prism2_download_volatile_fndecl_16597 prism2_download_volatile fndecl 0 16597 NULL
134561 +disable_so_ipmi_get_my_LUN_fndecl_16605 ipmi_get_my_LUN fndecl 0 16605 NULL
134562 +disable_so_io_ctl_init_fndecl_16611 io_ctl_init fndecl 0 16611 NULL
134563 +disable_so_xfs_bmap_btalloc_nullfb_fndecl_16629 xfs_bmap_btalloc_nullfb fndecl 0 16629 NULL
134564 +disable_so_ipath_sdma_get_inflight_fndecl_16631 ipath_sdma_get_inflight fndecl 0 16631 NULL
134565 +disable_so_jffs2_add_full_dnode_to_inode_fndecl_16637 jffs2_add_full_dnode_to_inode fndecl 0 16637 NULL
134566 +disable_so_snd_pcm_hw_constraints_init_fndecl_16638 snd_pcm_hw_constraints_init fndecl 0 16638 NULL
134567 +disable_so_cinergyt2_fe_read_unc_blocks_fndecl_16642 cinergyt2_fe_read_unc_blocks fndecl 0 16642 NULL
134568 +disable_so_svc_pool_map_init_pernode_fndecl_16648 svc_pool_map_init_pernode fndecl 0 16648 NULL
134569 +disable_so_torture_shuffle_init_fndecl_16651 torture_shuffle_init fndecl 0 16651 NULL
134570 +disable_so_ttm_bo_move_ttm_fndecl_16652 ttm_bo_move_ttm fndecl 0 16652 NULL
134571 +disable_so_ath6kl_fetch_fw_file_fndecl_16656 ath6kl_fetch_fw_file fndecl 0 16656 NULL
134572 +disable_so_core_alua_write_tpg_metadata_fndecl_16659 core_alua_write_tpg_metadata fndecl 0 16659 NULL nohasharray
134573 +disable_so_isdn_net_setcfg_fndecl_16659 isdn_net_setcfg fndecl 0 16659 &disable_so_core_alua_write_tpg_metadata_fndecl_16659
134574 +disable_so_usb_add_gadget_udc_fndecl_16673 usb_add_gadget_udc fndecl 0 16673 NULL
134575 +disable_so_usblp_wtest_fndecl_16680 usblp_wtest fndecl 0 16680 NULL
134576 +disable_so_i40evf_map_queues_fndecl_16686 i40evf_map_queues fndecl 0 16686 NULL
134577 +disable_so_jffs2_scan_xref_node_fndecl_16692 jffs2_scan_xref_node fndecl 0 16692 NULL
134578 +disable_so_adjd_s311_update_scan_mode_fndecl_16699 adjd_s311_update_scan_mode fndecl 0 16699 NULL
134579 +disable_so___audit_socketcall_fndecl_16707 __audit_socketcall fndecl 0 16707 NULL
134580 +disable_so_mmc_read_ssr_fndecl_16717 mmc_read_ssr fndecl 0 16717 NULL
134581 +disable_so_mwl8k_cmd_set_aid_fndecl_16718 mwl8k_cmd_set_aid fndecl 0 16718 NULL
134582 +disable_so_rocker_flow_tbl_acl_fndecl_16722 rocker_flow_tbl_acl fndecl 0 16722 NULL
134583 +disable_so_ad7877_probe_fndecl_16736 ad7877_probe fndecl 0 16736 NULL
134584 +disable_so_deflect_extern_action_fndecl_16762 deflect_extern_action fndecl 0 16762 NULL
134585 +disable_so___vfs_write_fndecl_16765 __vfs_write fndecl 0 16765 NULL
134586 +disable_so_cfg80211_classify8021d_fndecl_16771 cfg80211_classify8021d fndecl 0 16771 NULL
134587 +disable_so_vlv_get_dsi_pclk_fndecl_16773 vlv_get_dsi_pclk fndecl 0 16773 NULL nohasharray
134588 +disable_so_key_len_iw_encode_ext_16773 key_len iw_encode_ext 0 16773 &disable_so_vlv_get_dsi_pclk_fndecl_16773
134589 +disable_so_snd_rawmidi_output_params_fndecl_16782 snd_rawmidi_output_params fndecl 0 16782 NULL
134590 +disable_so_parse_reg_rule_fndecl_16785 parse_reg_rule fndecl 0 16785 NULL
134591 +disable_so_sctp_primitive_ASSOCIATE_fndecl_16788 sctp_primitive_ASSOCIATE fndecl 0 16788 NULL
134592 +disable_so_get_string_fndecl_16789 get_string fndecl 0 16789 NULL
134593 +disable_so_mlx4_write_mtt_chunk_fndecl_16793 mlx4_write_mtt_chunk fndecl 0 16793 NULL
134594 +disable_so_do_md_stop_fndecl_16820 do_md_stop fndecl 0 16820 NULL
134595 +disable_so_validate_params_fndecl_16833 validate_params fndecl 0 16833 NULL
134596 +disable_so_mwl8k_check_ba_fndecl_16841 mwl8k_check_ba fndecl 0 16841 NULL
134597 +disable_so_xfs_btree_delete_fndecl_16843 xfs_btree_delete fndecl 0 16843 NULL
134598 +disable_so___add_delayed_refs_fndecl_16846 __add_delayed_refs fndecl 0 16846 NULL
134599 +disable_so_hidp_session_new_fndecl_16848 hidp_session_new fndecl 0 16848 NULL
134600 +disable_so_adf_probe_fndecl_16860 adf_probe fndecl 0 16860 NULL
134601 +disable_so_radeon_bo_create_fndecl_16863 radeon_bo_create fndecl 0 16863 NULL
134602 +disable_so_lpfc_sli4_init_rpi_hdrs_fndecl_16865 lpfc_sli4_init_rpi_hdrs fndecl 0 16865 NULL
134603 +disable_so_cnic_alloc_new_id_fndecl_16866 cnic_alloc_new_id fndecl 0 16866 NULL
134604 +disable_so__ore_add_stripe_unit_fndecl_16884 _ore_add_stripe_unit fndecl 0 16884 NULL
134605 +disable_so_do_sysctl_fndecl_16886 do_sysctl fndecl 0 16886 NULL
134606 +disable_so___rtc_read_time_fndecl_16890 __rtc_read_time fndecl 0 16890 NULL
134607 +disable_so_audmux_read_file_fndecl_16891 audmux_read_file fndecl 0 16891 NULL
134608 +disable_so_c4iw_register_device_fndecl_16897 c4iw_register_device fndecl 0 16897 NULL
134609 +disable_so_ubifs_lpt_post_commit_fndecl_16899 ubifs_lpt_post_commit fndecl 0 16899 NULL
134610 +disable_so_bl_parse_slice_fndecl_16901 bl_parse_slice fndecl 0 16901 NULL
134611 +disable_so_megasas_issue_blocked_abort_cmd_fndecl_16913 megasas_issue_blocked_abort_cmd fndecl 0 16913 NULL
134612 +disable_so_iwl_dbgfs_bt_force_ant_write_fndecl_16914 iwl_dbgfs_bt_force_ant_write fndecl 0 16914 NULL
134613 +disable_so_u32_change_fndecl_16915 u32_change fndecl 0 16915 NULL
134614 +disable_so_wl1271_cmd_ext_radio_parms_fndecl_16917 wl1271_cmd_ext_radio_parms fndecl 0 16917 NULL
134615 +disable_so_read_progstatus_fndecl_16921 read_progstatus fndecl 0 16921 NULL
134616 +disable_so_pinctrl_get_group_selector_fndecl_16925 pinctrl_get_group_selector fndecl 0 16925 NULL
134617 +disable_so_snd_rawmidi_transmit_fndecl_16928 snd_rawmidi_transmit fndecl 0 16928 NULL
134618 +disable_so_wl1251_acx_event_mbox_mask_fndecl_16929 wl1251_acx_event_mbox_mask fndecl 0 16929 NULL
134619 +disable_so_sys_mbind_fndecl_16933 sys_mbind fndecl 0 16933 NULL
134620 +disable_so_ubi_wl_init_fndecl_16945 ubi_wl_init fndecl 0 16945 NULL
134621 +disable_so_vidioc_dqbuf_fndecl_16948 vidioc_dqbuf fndecl 0 16948 NULL
134622 +disable_so_nv50_dac_create_fndecl_16955 nv50_dac_create fndecl 0 16955 NULL
134623 +disable_so_intel_framebuffer_pitch_for_width_fndecl_16956 intel_framebuffer_pitch_for_width fndecl 0 16956 NULL
134624 +disable_so_dlm_user_convert_fndecl_16957 dlm_user_convert fndecl 0 16957 NULL
134625 +disable_so_wl12xx_cmd_role_start_dev_fndecl_16959 wl12xx_cmd_role_start_dev fndecl 0 16959 NULL
134626 +disable_so_admin_mtu_ipoib_dev_priv_16960 admin_mtu ipoib_dev_priv 0 16960 NULL
134627 +disable_so_vcs_read_fndecl_16962 vcs_read fndecl 0 16962 NULL
134628 +disable_so_ipmi_set_timeout_fndecl_16982 ipmi_set_timeout fndecl 0 16982 NULL
134629 +disable_so_SendReceiveBlockingLock_fndecl_16985 SendReceiveBlockingLock fndecl 0 16985 NULL
134630 +disable_so_fuse_read_single_forget_fndecl_17001 fuse_read_single_forget fndecl 0 17001 NULL
134631 +disable_so_id_rtc_device_17005 id rtc_device 0 17005 NULL
134632 +disable_so_fuse_copy_fill_fndecl_17009 fuse_copy_fill fndecl 0 17009 NULL nohasharray
134633 +disable_so_snd_hdac_bus_exec_verb_fndecl_17009 snd_hdac_bus_exec_verb fndecl 0 17009 &disable_so_fuse_copy_fill_fndecl_17009
134634 +disable_so_vmw_cmd_check_not_3d_fndecl_17022 vmw_cmd_check_not_3d fndecl 0 17022 NULL
134635 +disable_so_em28xx_ir_change_protocol_fndecl_17023 em28xx_ir_change_protocol fndecl 0 17023 NULL
134636 +disable_so_mlx5_ib_query_pkey_fndecl_17025 mlx5_ib_query_pkey fndecl 0 17025 NULL
134637 +disable_so_ext4_mb_load_buddy_fndecl_17030 ext4_mb_load_buddy fndecl 0 17030 NULL
134638 +disable_so_rx_buf_len_i40e_ring_17034 rx_buf_len i40e_ring 0 17034 NULL
134639 +disable_so_ext4_ext_map_blocks_fndecl_17053 ext4_ext_map_blocks fndecl 0 17053 NULL
134640 +disable_so_add_port_fndecl_17054 add_port fndecl 0 17054 NULL
134641 +disable_so_command_setcompressiontarget_fndecl_17055 command_setcompressiontarget fndecl 0 17055 NULL
134642 +disable_so_logfs_rename_cross_fndecl_17066 logfs_rename_cross fndecl 0 17066 NULL
134643 +disable_so_gp2ap020a00f_buffer_postenable_fndecl_17067 gp2ap020a00f_buffer_postenable fndecl 0 17067 NULL
134644 +disable_so__base_request_irq_fndecl_17069 _base_request_irq fndecl 0 17069 NULL
134645 +disable_so_target_fabric_tf_ops_check_fndecl_17079 target_fabric_tf_ops_check fndecl 0 17079 NULL
134646 +disable_so_offset_xen_netif_tx_request_17081 offset xen_netif_tx_request 0 17081 NULL
134647 +disable_so_obfuscate_tx_buffer_fndecl_17095 obfuscate_tx_buffer fndecl 0 17095 NULL
134648 +disable_so_mpt3sas_send_diag_release_fndecl_17099 mpt3sas_send_diag_release fndecl 0 17099 NULL
134649 +disable_so_phys_base_fore200e_17100 phys_base fore200e 0 17100 NULL
134650 +disable_so_dlm_user_request_fndecl_17104 dlm_user_request fndecl 0 17104 NULL
134651 +disable_so_sdio_readsb_fndecl_17108 sdio_readsb fndecl 0 17108 NULL
134652 +disable_so_sample_rate_pcxhr_mgr_17120 sample_rate pcxhr_mgr 0 17120 NULL
134653 +disable_so_ore_truncate_fndecl_17126 ore_truncate fndecl 0 17126 NULL
134654 +disable_so_create_20k2_hw_obj_fndecl_17132 create_20k2_hw_obj fndecl 0 17132 NULL
134655 +disable_so_read_register_count_fndecl_17146 read_register_count fndecl 0 17146 NULL
134656 +disable_so_ufshcd_wait_for_dev_cmd_fndecl_17147 ufshcd_wait_for_dev_cmd fndecl 0 17147 NULL
134657 +disable_so_avc_general_set_sig_fmt_fndecl_17151 avc_general_set_sig_fmt fndecl 0 17151 NULL
134658 +disable_so_isdn_open_fndecl_17163 isdn_open fndecl 0 17163 NULL
134659 +disable_so_nilfs_segbuf_write_fndecl_17165 nilfs_segbuf_write fndecl 0 17165 NULL
134660 +disable_so_nvme_trans_inquiry_fndecl_17167 nvme_trans_inquiry fndecl 0 17167 NULL
134661 +disable_so_b43legacy_upload_microcode_fndecl_17168 b43legacy_upload_microcode fndecl 0 17168 NULL
134662 +disable_so_ip_options_get_finish_fndecl_17176 ip_options_get_finish fndecl 0 17176 NULL
134663 +disable_so_command_addr_acpi_ec_17177 command_addr acpi_ec 0 17177 NULL
134664 +disable_so_wl1271_acx_set_ht_information_fndecl_17180 wl1271_acx_set_ht_information fndecl 0 17180 NULL
134665 +disable_so_pci_raw_set_power_state_fndecl_17186 pci_raw_set_power_state fndecl 0 17186 NULL
134666 +disable_so_dbg_check_cats_fndecl_17202 dbg_check_cats fndecl 0 17202 NULL
134667 +disable_so_acpi_device_add_fndecl_17204 acpi_device_add fndecl 0 17204 NULL
134668 +disable_so_hdcs_probe_1020_fndecl_17205 hdcs_probe_1020 fndecl 0 17205 NULL
134669 +disable_so_dvb_frontend_ioctl_properties_fndecl_17211 dvb_frontend_ioctl_properties fndecl 0 17211 NULL
134670 +disable_so_hsc_tx_set_fndecl_17213 hsc_tx_set fndecl 0 17213 NULL nohasharray
134671 +disable_so_offset_btrfs_key_17213 offset btrfs_key 0 17213 &disable_so_hsc_tx_set_fndecl_17213
134672 +disable_so_snd_seq_ioctl_set_queue_timer_fndecl_17219 snd_seq_ioctl_set_queue_timer fndecl 0 17219 NULL
134673 +disable_so_ubi_io_read_vid_hdr_fndecl_17221 ubi_io_read_vid_hdr fndecl 0 17221 NULL nohasharray
134674 +disable_so_usb_hub_create_port_device_fndecl_17221 usb_hub_create_port_device fndecl 0 17221 &disable_so_ubi_io_read_vid_hdr_fndecl_17221
134675 +disable_so_snd_seq_set_queue_tempo_fndecl_17240 snd_seq_set_queue_tempo fndecl 0 17240 NULL nohasharray
134676 +disable_so_wmfw_add_ctl_fndecl_17240 wmfw_add_ctl fndecl 0 17240 &disable_so_snd_seq_set_queue_tempo_fndecl_17240
134677 +disable_so_vxge_device_register_fndecl_17243 vxge_device_register fndecl 0 17243 NULL
134678 +disable_so_ims_pcu_get_info_fndecl_17247 ims_pcu_get_info fndecl 0 17247 NULL
134679 +disable_so_bm_resync_fo_drbd_device_17253 bm_resync_fo drbd_device 0 17253 NULL
134680 +disable_so_tegra_spi_start_transfer_one_fndecl_17260 tegra_spi_start_transfer_one fndecl 0 17260 NULL
134681 +disable_so_nv_probe_fndecl_17262 nv_probe fndecl 0 17262 NULL
134682 +disable_so_line_uart_port_17263 line uart_port 0 17263 NULL
134683 +disable_so_wcn36xx_smd_open_fndecl_17264 wcn36xx_smd_open fndecl 0 17264 NULL
134684 +disable_so_wl18xx_acx_peer_ht_operation_mode_fndecl_17275 wl18xx_acx_peer_ht_operation_mode fndecl 0 17275 NULL
134685 +disable_so_b43_validate_chipaccess_fndecl_17276 b43_validate_chipaccess fndecl 0 17276 NULL
134686 +disable_so_bnx2_nvram_write_fndecl_17277 bnx2_nvram_write fndecl 0 17277 NULL
134687 +disable_so_ubifs_leb_read_fndecl_17287 ubifs_leb_read fndecl 0 17287 NULL nohasharray
134688 +disable_so_brcmf_sdiod_request_data_fndecl_17287 brcmf_sdiod_request_data fndecl 0 17287 &disable_so_ubifs_leb_read_fndecl_17287
134689 +disable_so_brcmf_p2p_run_escan_fndecl_17289 brcmf_p2p_run_escan fndecl 0 17289 NULL
134690 +disable_so_set_eeprom_fndecl_17290 set_eeprom fndecl 0 17290 NULL
134691 +disable_so_fsp_activate_protocol_fndecl_17291 fsp_activate_protocol fndecl 0 17291 NULL nohasharray
134692 +disable_so_i2c_detect_address_fndecl_17291 i2c_detect_address fndecl 0 17291 &disable_so_fsp_activate_protocol_fndecl_17291
134693 +disable_so_xfs_alloc_find_best_extent_fndecl_17294 xfs_alloc_find_best_extent fndecl 0 17294 NULL
134694 +disable_so_adi_init_input_fndecl_17297 adi_init_input fndecl 0 17297 NULL
134695 +disable_so_ps2mult_connect_fndecl_17300 ps2mult_connect fndecl 0 17300 NULL
134696 +disable_so_wacom_connect_fndecl_17315 wacom_connect fndecl 0 17315 NULL
134697 +disable_so_ib_sa_mcmember_rec_query_fndecl_17324 ib_sa_mcmember_rec_query fndecl 0 17324 NULL
134698 +disable_so_snd_opl3_new_fndecl_17330 snd_opl3_new fndecl 0 17330 NULL
134699 +disable_so_vsp1_device_get_fndecl_17336 vsp1_device_get fndecl 0 17336 NULL
134700 +disable_so_port100_send_cmd_async_fndecl_17354 port100_send_cmd_async fndecl 0 17354 NULL
134701 +disable_so_ims_pcu_get_device_info_fndecl_17357 ims_pcu_get_device_info fndecl 0 17357 NULL
134702 +disable_so_config_desc_fndecl_17365 config_desc fndecl 0 17365 NULL
134703 +disable_so_nilfs_sufile_mark_dirty_fndecl_17370 nilfs_sufile_mark_dirty fndecl 0 17370 NULL
134704 +disable_so_search_start___reiserfs_blocknr_hint_17391 search_start __reiserfs_blocknr_hint 0 17391 NULL
134705 +disable_so_snd_usb_parse_audio_interface_fndecl_17399 snd_usb_parse_audio_interface fndecl 0 17399 NULL
134706 +disable_so_acpi_video_bus_get_one_device_fndecl_17409 acpi_video_bus_get_one_device fndecl 0 17409 NULL
134707 +disable_so_lnum_scan_data_17412 lnum scan_data 0 17412 NULL
134708 +disable_so_irq_base_da9055_17413 irq_base da9055 0 17413 NULL
134709 +disable_so_dlm_master_lookup_fndecl_17417 dlm_master_lookup fndecl 0 17417 NULL
134710 +disable_so_ufx_setup_modes_fndecl_17419 ufx_setup_modes fndecl 0 17419 NULL
134711 +disable_so_do_lock_fndecl_17420 do_lock fndecl 0 17420 NULL
134712 +disable_so_rv6xx_parse_power_table_fndecl_17438 rv6xx_parse_power_table fndecl 0 17438 NULL
134713 +disable_so_reply_size_ncp_server_17456 reply_size ncp_server 0 17456 NULL nohasharray
134714 +disable_so_as5011_probe_fndecl_17456 as5011_probe fndecl 0 17456 &disable_so_reply_size_ncp_server_17456
134715 +disable_so_add_to_list_fndecl_17458 add_to_list fndecl 0 17458 NULL
134716 +disable_so_parse_audio_selector_unit_fndecl_17463 parse_audio_selector_unit fndecl 0 17463 NULL
134717 +disable_so_i915_gem_object_wait_rendering_fndecl_17469 i915_gem_object_wait_rendering fndecl 0 17469 NULL
134718 +disable_so_cipso_v4_map_lvl_hton_fndecl_17481 cipso_v4_map_lvl_hton fndecl 0 17481 NULL
134719 +disable_so_sddr09_write_inplace_fndecl_17484 sddr09_write_inplace fndecl 0 17484 NULL
134720 +disable_so_hash_ipport6_add_fndecl_17508 hash_ipport6_add fndecl 0 17508 NULL
134721 +disable_so_brcmf_fil_iovar_data_set_fndecl_17512 brcmf_fil_iovar_data_set fndecl 0 17512 NULL
134722 +disable_so_dvb_dmxdev_init_fndecl_17523 dvb_dmxdev_init fndecl 0 17523 NULL
134723 +disable_so_id_rtsx_pcr_17526 id rtsx_pcr 0 17526 NULL
134724 +disable_so_mei_read_fndecl_17528 mei_read fndecl 0 17528 NULL
134725 +disable_so_i40e_aq_read_nvm_fndecl_17529 i40e_aq_read_nvm fndecl 0 17529 NULL
134726 +disable_so_recv_mesg_maxlen_netns_ipvs_17535 recv_mesg_maxlen netns_ipvs 0 17535 NULL nohasharray
134727 +disable_so_ssb_pcmcia_switch_coreidx_fndecl_17535 ssb_pcmcia_switch_coreidx fndecl 0 17535 &disable_so_recv_mesg_maxlen_netns_ipvs_17535
134728 +disable_so_rndis_set_oid_fndecl_17536 rndis_set_oid fndecl 0 17536 NULL
134729 +disable_so_snd_pcm_plugin_build_copy_fndecl_17537 snd_pcm_plugin_build_copy fndecl 0 17537 NULL
134730 +disable_so_megasas_register_aen_fndecl_17542 megasas_register_aen fndecl 0 17542 NULL nohasharray
134731 +disable_so_wdm_read_fndecl_17542 wdm_read fndecl 0 17542 &disable_so_megasas_register_aen_fndecl_17542
134732 +disable_so_fb_alloc_cmap_fndecl_17545 fb_alloc_cmap fndecl 0 17545 NULL
134733 +disable_so_lanai_normalize_ci_fndecl_17546 lanai_normalize_ci fndecl 0 17546 NULL nohasharray
134734 +disable_so_dvb_usbv2_probe_fndecl_17546 dvb_usbv2_probe fndecl 0 17546 &disable_so_lanai_normalize_ci_fndecl_17546
134735 +disable_so_mchip_comp_read_frame_fndecl_17555 mchip_comp_read_frame fndecl 0 17555 NULL
134736 +disable_so_mmc_test_area_erase_fndecl_17564 mmc_test_area_erase fndecl 0 17564 NULL
134737 +disable_so_snd_timer_dev_register_fndecl_17565 snd_timer_dev_register fndecl 0 17565 NULL
134738 +disable_so_gref_xenkbd_info_17575 gref xenkbd_info 0 17575 NULL
134739 +disable_so_usif_notify_del_fndecl_17583 usif_notify_del fndecl 0 17583 NULL
134740 +disable_so_s2255_probe_v4l_fndecl_17591 s2255_probe_v4l fndecl 0 17591 NULL
134741 +disable_so_smsc75xx_phy_initialize_fndecl_17595 smsc75xx_phy_initialize fndecl 0 17595 NULL
134742 +disable_so_nilfs_construct_segment_fndecl_17615 nilfs_construct_segment fndecl 0 17615 NULL
134743 +disable_so_cir_addr_nvt_dev_17619 cir_addr nvt_dev 0 17619 NULL
134744 +disable_so_pcxhr_setup_firmware_fndecl_17628 pcxhr_setup_firmware fndecl 0 17628 NULL
134745 +disable_so_usbip_recv_iso_fndecl_17639 usbip_recv_iso fndecl 0 17639 NULL
134746 +disable_so_snd_usb_caiaq_send_command_fndecl_17645 snd_usb_caiaq_send_command fndecl 0 17645 NULL
134747 +disable_so_dvb_dmx_init_fndecl_17652 dvb_dmx_init fndecl 0 17652 NULL
134748 +disable_so_wacom_send_and_wait_fndecl_17661 wacom_send_and_wait fndecl 0 17661 NULL
134749 +disable_so_ims_pcu_buffers_alloc_fndecl_17671 ims_pcu_buffers_alloc fndecl 0 17671 NULL
134750 +disable_so_qlcnic_83xx_configure_opmode_fndecl_17672 qlcnic_83xx_configure_opmode fndecl 0 17672 NULL nohasharray
134751 +disable_so_gref_id_gntalloc_gref_17672 gref_id gntalloc_gref 0 17672 &disable_so_qlcnic_83xx_configure_opmode_fndecl_17672
134752 +disable_so_mxt_get_object_table_fndecl_17675 mxt_get_object_table fndecl 0 17675 NULL
134753 +disable_so_watchdog_disable_fndecl_17678 watchdog_disable fndecl 0 17678 NULL
134754 +disable_so_wl1251_cmd_template_set_fndecl_17679 wl1251_cmd_template_set fndecl 0 17679 NULL
134755 +disable_so_vmbus_connect_fndecl_17693 vmbus_connect fndecl 0 17693 NULL
134756 +disable_so__snd_pcm_hw_param_max_fndecl_17702 _snd_pcm_hw_param_max fndecl 0 17702 NULL nohasharray
134757 +disable_so_i915_gem_execbuffer_move_to_gpu_fndecl_17702 i915_gem_execbuffer_move_to_gpu fndecl 0 17702 &disable_so__snd_pcm_hw_param_max_fndecl_17702
134758 +disable_so_wl12xx_cmd_stop_fwlog_fndecl_17712 wl12xx_cmd_stop_fwlog fndecl 0 17712 NULL
134759 +disable_so_csio_wr_alloc_q_fndecl_17717 csio_wr_alloc_q fndecl 0 17717 NULL
134760 +disable_so_evergreen_cs_track_validate_texture_fndecl_17725 evergreen_cs_track_validate_texture fndecl 0 17725 NULL
134761 +disable_so_qp_host_get_user_memory_fndecl_17726 qp_host_get_user_memory fndecl 0 17726 NULL
134762 +disable_so_i40e_config_arq_regs_fndecl_17730 i40e_config_arq_regs fndecl 0 17730 NULL
134763 +disable_so_minor_video_device_17733 minor video_device 0 17733 NULL
134764 +disable_so_ios_per_ctrl_hba_parameters_17734 ios_per_ctrl hba_parameters 0 17734 NULL nohasharray
134765 +disable_so_ata_host_register_fndecl_17734 ata_host_register fndecl 0 17734 &disable_so_ios_per_ctrl_hba_parameters_17734
134766 +disable_so_parse_audio_format_rates_v2_fndecl_17736 parse_audio_format_rates_v2 fndecl 0 17736 NULL
134767 +disable_so_dib0700_jumpram_fndecl_17742 dib0700_jumpram fndecl 0 17742 NULL
134768 +disable_so_num_desc_blocks_fndecl_17744 num_desc_blocks fndecl 0 17744 NULL nohasharray
134769 +disable_so_iwl_dvm_send_cmd_pdu_fndecl_17744 iwl_dvm_send_cmd_pdu fndecl 0 17744 &disable_so_num_desc_blocks_fndecl_17744
134770 +disable_so_timbuart_probe_fndecl_17747 timbuart_probe fndecl 0 17747 NULL
134771 +disable_so_ksdazzle_probe_fndecl_17749 ksdazzle_probe fndecl 0 17749 NULL
134772 +disable_so_read_config_rom_fndecl_17752 read_config_rom fndecl 0 17752 NULL
134773 +disable_so_cmd_per_lun_Scsi_Host_17757 cmd_per_lun Scsi_Host 0 17757 NULL
134774 +disable_so_dev_change_name_fndecl_17771 dev_change_name fndecl 0 17771 NULL
134775 +disable_so_transport_subsystem_register_fndecl_17775 transport_subsystem_register fndecl 0 17775 NULL
134776 +disable_so_do_load_unload_fndecl_17778 do_load_unload fndecl 0 17778 NULL
134777 +disable_so__base_make_ioc_ready_fndecl_17781 _base_make_ioc_ready fndecl 0 17781 NULL
134778 +disable_so_snd_emu10k1_playback_open_fndecl_17787 snd_emu10k1_playback_open fndecl 0 17787 NULL
134779 +disable_so_usX2Y_audio_stream_new_fndecl_17792 usX2Y_audio_stream_new fndecl 0 17792 NULL
134780 +disable_so_onenand_scan_bbt_fndecl_17796 onenand_scan_bbt fndecl 0 17796 NULL
134781 +disable_so_acpi_ut_copy_simple_object_fndecl_17798 acpi_ut_copy_simple_object fndecl 0 17798 NULL
134782 +disable_so_list_size_acpi_pnp_device_id_list_17814 list_size acpi_pnp_device_id_list 0 17814 NULL
134783 +disable_so_snd_hda_override_conn_list_fndecl_17817 snd_hda_override_conn_list fndecl 0 17817 NULL nohasharray
134784 +disable_so_xenbus_file_write_fndecl_17817 xenbus_file_write fndecl 0 17817 &disable_so_snd_hda_override_conn_list_fndecl_17817
134785 +disable_so_nv04_gart_manager_new_fndecl_17819 nv04_gart_manager_new fndecl 0 17819 NULL nohasharray
134786 +disable_so_applesmc_init_index_fndecl_17819 applesmc_init_index fndecl 0 17819 &disable_so_nv04_gart_manager_new_fndecl_17819
134787 +disable_so_ceph_crypto_key_unarmor_fndecl_17821 ceph_crypto_key_unarmor fndecl 0 17821 NULL
134788 +disable_so_key_unseal_fndecl_17822 key_unseal fndecl 0 17822 NULL
134789 +disable_so_ieee80211_init_rate_ctrl_alg_fndecl_17825 ieee80211_init_rate_ctrl_alg fndecl 0 17825 NULL
134790 +disable_so___netdev_adjacent_dev_link_neighbour_fndecl_17826 __netdev_adjacent_dev_link_neighbour fndecl 0 17826 NULL
134791 +disable_so_build_maps_fndecl_17828 build_maps fndecl 0 17828 NULL
134792 +disable_so_exclude_super_stripes_fndecl_17829 exclude_super_stripes fndecl 0 17829 NULL
134793 +disable_so_ibm_get_table_from_acpi_fndecl_17834 ibm_get_table_from_acpi fndecl 0 17834 NULL
134794 +disable_so_xenvif_count_requests_fndecl_17849 xenvif_count_requests fndecl 0 17849 NULL
134795 +disable_so_balance_fndecl_17851 balance fndecl 0 17851 NULL
134796 +disable_so_tmiofb_acc_wait_fndecl_17852 tmiofb_acc_wait fndecl 0 17852 NULL
134797 +disable_so_cifs_lockv_fndecl_17853 cifs_lockv fndecl 0 17853 NULL
134798 +disable_so_kvm_io_bus_register_dev_fndecl_17857 kvm_io_bus_register_dev fndecl 0 17857 NULL
134799 +disable_so_btrfs_ioctl_tree_search_fndecl_17881 btrfs_ioctl_tree_search fndecl 0 17881 NULL
134800 +disable_so_xfs_bmap_extents_to_btree_fndecl_17888 xfs_bmap_extents_to_btree fndecl 0 17888 NULL
134801 +disable_so_mwl8k_cmd_set_new_stn_add_self_fndecl_17904 mwl8k_cmd_set_new_stn_add_self fndecl 0 17904 NULL
134802 +disable_so_netdev_queue_add_kobject_fndecl_17908 netdev_queue_add_kobject fndecl 0 17908 NULL
134803 +disable_so_arch_gnttab_valloc_fndecl_17911 arch_gnttab_valloc fndecl 0 17911 NULL
134804 +disable_so_translate_compat_table_fndecl_17917 translate_compat_table fndecl 0 17917 NULL nohasharray
134805 +disable_so_trinity_parse_sys_info_table_fndecl_17917 trinity_parse_sys_info_table fndecl 0 17917 &disable_so_translate_compat_table_fndecl_17917
134806 +disable_so_ufx_realloc_framebuffer_fndecl_17920 ufx_realloc_framebuffer fndecl 0 17920 NULL
134807 +disable_so_create_multi_out_ctls_fndecl_17921 create_multi_out_ctls fndecl 0 17921 NULL
134808 +disable_so_ipath_verbs_send_dma_fndecl_17922 ipath_verbs_send_dma fndecl 0 17922 NULL
134809 +disable_so_mmio_base_sis_video_info_17941 mmio_base sis_video_info 0 17941 NULL
134810 +disable_so_vb2_internal_dqbuf_fndecl_17949 vb2_internal_dqbuf fndecl 0 17949 NULL
134811 +disable_so_check_max_sdu_fndecl_17952 check_max_sdu fndecl 0 17952 NULL
134812 +disable_so_start_tx_fndecl_17955 start_tx fndecl 0 17955 NULL
134813 +disable_so_ubifs_decompress_fndecl_17965 ubifs_decompress fndecl 0 17965 NULL
134814 +disable_so_qsfp_cks_fndecl_17970 qsfp_cks fndecl 0 17970 NULL
134815 +disable_so_hugetlbfs_fill_super_fndecl_17975 hugetlbfs_fill_super fndecl 0 17975 NULL
134816 +disable_so_tg3_nvram_write_block_unbuffered_fndecl_17976 tg3_nvram_write_block_unbuffered fndecl 0 17976 NULL
134817 +disable_so_nilfs_segctor_extend_segments_fndecl_17980 nilfs_segctor_extend_segments fndecl 0 17980 NULL
134818 +disable_so_vector_msix_entry_17987 vector msix_entry 0 17987 NULL
134819 +disable_so_dtExtendPage_fndecl_17991 dtExtendPage fndecl 0 17991 NULL
134820 +disable_so_b43legacy_phy_init_fndecl_17992 b43legacy_phy_init fndecl 0 17992 NULL
134821 +disable_so_cipso_v4_gentag_enum_fndecl_17997 cipso_v4_gentag_enum fndecl 0 17997 NULL
134822 +disable_so_target_xcopy_read_source_fndecl_18003 target_xcopy_read_source fndecl 0 18003 NULL
134823 +disable_so_mlx4_init_one_fndecl_18009 mlx4_init_one fndecl 0 18009 NULL
134824 +disable_so_ath9k_tx99_init_fndecl_18022 ath9k_tx99_init fndecl 0 18022 NULL
134825 +disable_so_loop_init_xfer_fndecl_18032 loop_init_xfer fndecl 0 18032 NULL
134826 +disable_so_fi_ino_nilfs_finfo_18034 fi_ino nilfs_finfo 0 18034 NULL
134827 +disable_so_copy_items_fndecl_18039 copy_items fndecl 0 18039 NULL
134828 +disable_so_set_caps_fndecl_18044 set_caps fndecl 0 18044 NULL
134829 +disable_so_ld_usb_write_fndecl_18045 ld_usb_write fndecl 0 18045 NULL
134830 +disable_so_va1j5jf8007t_prepare_fndecl_18046 va1j5jf8007t_prepare fndecl 0 18046 NULL
134831 +disable_so_set_termios_fndecl_18062 set_termios fndecl 0 18062 NULL
134832 +disable_so_cciss_alloc_drive_info_fndecl_18064 cciss_alloc_drive_info fndecl 0 18064 NULL
134833 +disable_so_pci_probe_fndecl_18073 pci_probe fndecl 0 18073 NULL
134834 +disable_so_ecryptfs_add_new_key_tfm_fndecl_18084 ecryptfs_add_new_key_tfm fndecl 0 18084 NULL
134835 +disable_so_mipi_dsi_device_transfer_fndecl_18088 mipi_dsi_device_transfer fndecl 0 18088 NULL
134836 +disable_so_kernfs_fop_open_fndecl_18091 kernfs_fop_open fndecl 0 18091 NULL
134837 +disable_so_rndis_query_oid_fndecl_18117 rndis_query_oid fndecl 0 18117 NULL
134838 +disable_so_nvme_trans_fill_blk_desc_fndecl_18128 nvme_trans_fill_blk_desc fndecl 0 18128 NULL
134839 +disable_so_lpfc_bsg_sli_cfg_write_cmd_ext_fndecl_18140 lpfc_bsg_sli_cfg_write_cmd_ext fndecl 0 18140 NULL
134840 +disable_so_nilfs_mdt_insert_new_block_fndecl_18141 nilfs_mdt_insert_new_block fndecl 0 18141 NULL nohasharray
134841 +disable_so_upgrade_mode_fndecl_18141 upgrade_mode fndecl 0 18141 &disable_so_nilfs_mdt_insert_new_block_fndecl_18141
134842 +disable_so_ed_schedule_fndecl_18142 ed_schedule fndecl 0 18142 NULL
134843 +disable_so_iwl_pcie_alloc_dma_ptr_fndecl_18144 iwl_pcie_alloc_dma_ptr fndecl 0 18144 NULL
134844 +disable_so_mtu_net_device_18148 mtu net_device 0 18148 NULL
134845 +disable_so_ioctl_probe_fndecl_18173 ioctl_probe fndecl 0 18173 NULL
134846 +disable_so_brcmf_fil_cmd_data_fndecl_18197 brcmf_fil_cmd_data fndecl 0 18197 NULL
134847 +disable_so_usbnet_get_ethernet_addr_fndecl_18204 usbnet_get_ethernet_addr fndecl 0 18204 NULL nohasharray
134848 +disable_so_hci_sock_blacklist_del_fndecl_18204 hci_sock_blacklist_del fndecl 0 18204 &disable_so_usbnet_get_ethernet_addr_fndecl_18204
134849 +disable_so_dccp_ackvec_init_fndecl_18207 dccp_ackvec_init fndecl 0 18207 NULL
134850 +disable_so_snd_sonicvibes_create_fndecl_18209 snd_sonicvibes_create fndecl 0 18209 NULL
134851 +disable_so_ibmpex_query_sensor_count_fndecl_18214 ibmpex_query_sensor_count fndecl 0 18214 NULL
134852 +disable_so_nilfs_sysfs_create_segctor_group_fndecl_18224 nilfs_sysfs_create_segctor_group fndecl 0 18224 NULL
134853 +disable_so_pvscsi_allocate_rings_fndecl_18226 pvscsi_allocate_rings fndecl 0 18226 NULL
134854 +disable_so_btrfs_lookup_csums_range_fndecl_18235 btrfs_lookup_csums_range fndecl 0 18235 NULL
134855 +disable_so_tree_mod_log_free_eb_fndecl_18239 tree_mod_log_free_eb fndecl 0 18239 NULL
134856 +disable_so_t4_sge_init_fndecl_18244 t4_sge_init fndecl 0 18244 NULL
134857 +disable_so_airo_config_fndecl_18253 airo_config fndecl 0 18253 NULL nohasharray
134858 +disable_so_check_entry_size_and_hooks_fndecl_18253 check_entry_size_and_hooks fndecl 0 18253 &disable_so_airo_config_fndecl_18253
134859 +disable_so_video_proc_write_fndecl_18263 video_proc_write fndecl 0 18263 NULL
134860 +disable_so_otp_select_filemode_fndecl_18264 otp_select_filemode fndecl 0 18264 NULL
134861 +disable_so_rds_rdma_pages_fndecl_18268 rds_rdma_pages fndecl 0 18268 NULL
134862 +disable_so_dccp_feat_push_change_fndecl_18270 dccp_feat_push_change fndecl 0 18270 NULL
134863 +disable_so_cciss_engage_scsi_fndecl_18295 cciss_engage_scsi fndecl 0 18295 NULL
134864 +disable_so_mwl8k_cmd_set_new_stn_add_fndecl_18299 mwl8k_cmd_set_new_stn_add fndecl 0 18299 NULL
134865 +disable_so_twl4030_init_irq_fndecl_18308 twl4030_init_irq fndecl 0 18308 NULL
134866 +disable_so_e820_end_of_low_ram_pfn_fndecl_18324 e820_end_of_low_ram_pfn fndecl 0 18324 NULL
134867 +disable_so_kvm_vcpu_ioctl_set_cpuid_fndecl_18333 kvm_vcpu_ioctl_set_cpuid fndecl 0 18333 NULL
134868 +disable_so_con_get_unimap_fndecl_18340 con_get_unimap fndecl 0 18340 NULL
134869 +disable_so_mon_bin_read_fndecl_18346 mon_bin_read fndecl 0 18346 NULL
134870 +disable_so_vm_pgoff_vm_area_struct_18357 vm_pgoff vm_area_struct 0 18357 NULL
134871 +disable_so_next_blkaddr_node_footer_18360 next_blkaddr node_footer 0 18360 NULL
134872 +disable_so_ecryptfs_write_lower_fndecl_18373 ecryptfs_write_lower fndecl 0 18373 NULL
134873 +disable_so_debugfs_parse_options_fndecl_18377 debugfs_parse_options fndecl 0 18377 NULL
134874 +disable_so_kvm_arch_vcpu_init_fndecl_18379 kvm_arch_vcpu_init fndecl 0 18379 NULL
134875 +disable_so_acpi_get_object_info_fndecl_18381 acpi_get_object_info fndecl 0 18381 NULL
134876 +disable_so_rocker_port_ipv4_neigh_fndecl_18383 rocker_port_ipv4_neigh fndecl 0 18383 NULL
134877 +disable_so_xfs_rtany_summary_fndecl_18384 xfs_rtany_summary fndecl 0 18384 NULL
134878 +disable_so_kvm_ioctl_create_device_fndecl_18390 kvm_ioctl_create_device fndecl 0 18390 NULL
134879 +disable_so_nilfs_segctor_collect_blocks_fndecl_18391 nilfs_segctor_collect_blocks fndecl 0 18391 NULL nohasharray
134880 +disable_so_iwl_dbgfs_d0i3_refs_write_fndecl_18391 iwl_dbgfs_d0i3_refs_write fndecl 0 18391 &disable_so_nilfs_segctor_collect_blocks_fndecl_18391
134881 +disable_so_reply_payload_rcv_len_fc_bsg_reply_18392 reply_payload_rcv_len fc_bsg_reply 0 18392 NULL
134882 +disable_so_bcma_bus_scan_fndecl_18393 bcma_bus_scan fndecl 0 18393 NULL
134883 +disable_so_vmw_surface_define_ioctl_fndecl_18403 vmw_surface_define_ioctl fndecl 0 18403 NULL
134884 +disable_so_populate_pmd_fndecl_18408 populate_pmd fndecl 0 18408 NULL
134885 +disable_so_wl1251_hw_init_data_path_config_fndecl_18413 wl1251_hw_init_data_path_config fndecl 0 18413 NULL
134886 +disable_so_storvsc_queuecommand_fndecl_18420 storvsc_queuecommand fndecl 0 18420 NULL
134887 +disable_so_raw_seticmpfilter_fndecl_18427 raw_seticmpfilter fndecl 0 18427 NULL
134888 +disable_so_vmw_resource_reserve_fndecl_18435 vmw_resource_reserve fndecl 0 18435 NULL
134889 +disable_so_count_iov_iter_18447 count iov_iter 0 18447 NULL
134890 +disable_so_atp_handle_geyser_fndecl_18448 atp_handle_geyser fndecl 0 18448 NULL
134891 +disable_so_xfs_free_extent_fndecl_18480 xfs_free_extent fndecl 0 18480 NULL
134892 +disable_so_drm_mode_page_flip_ioctl_fndecl_18483 drm_mode_page_flip_ioctl fndecl 0 18483 NULL
134893 +disable_so_acpi_video_device_lcd_set_level_fndecl_18496 acpi_video_device_lcd_set_level fndecl 0 18496 NULL
134894 +disable_so_at76_start_monitor_fndecl_18497 at76_start_monitor fndecl 0 18497 NULL
134895 +disable_so_cciss_find_cfg_addrs_fndecl_18500 cciss_find_cfg_addrs fndecl 0 18500 NULL
134896 +disable_so_netlbl_af6list_add_fndecl_18503 netlbl_af6list_add fndecl 0 18503 NULL
134897 +disable_so_send_pbl_messages_fndecl_18506 send_pbl_messages fndecl 0 18506 NULL
134898 +disable_so_ide_tape_read_position_fndecl_18511 ide_tape_read_position fndecl 0 18511 NULL
134899 +disable_so_build_sec_desc_fndecl_18515 build_sec_desc fndecl 0 18515 NULL
134900 +disable_so_ttm_bo_init_fndecl_18524 ttm_bo_init fndecl 0 18524 NULL
134901 +disable_so_brcmf_do_escan_fndecl_18528 brcmf_do_escan fndecl 0 18528 NULL
134902 +disable_so_dlm_user_deadlock_fndecl_18533 dlm_user_deadlock fndecl 0 18533 NULL nohasharray
134903 +disable_so_tty_write_fndecl_18533 tty_write fndecl 0 18533 &disable_so_dlm_user_deadlock_fndecl_18533
134904 +disable_so___percpu_counter_init_fndecl_18536 __percpu_counter_init fndecl 0 18536 NULL
134905 +disable_so_c67x00_drv_probe_fndecl_18547 c67x00_drv_probe fndecl 0 18547 NULL
134906 +disable_so_ubi_leb_write_fndecl_18549 ubi_leb_write fndecl 0 18549 NULL
134907 +disable_so_cros_ec_cmd_xfer_i2c_fndecl_18558 cros_ec_cmd_xfer_i2c fndecl 0 18558 NULL
134908 +disable_so_b43legacy_generate_probe_resp_fndecl_18568 b43legacy_generate_probe_resp fndecl 0 18568 NULL
134909 +disable_so_stop_cpus_fndecl_18570 stop_cpus fndecl 0 18570 NULL
134910 +disable_so_ipxitf_delete_fndecl_18571 ipxitf_delete fndecl 0 18571 NULL
134911 +disable_so_prepare_transfer_fndecl_18573 prepare_transfer fndecl 0 18573 NULL
134912 +disable_so_receive_protocol_fndecl_18600 receive_protocol fndecl 0 18600 NULL
134913 +disable_so_gfs2_extent_map_fndecl_18602 gfs2_extent_map fndecl 0 18602 NULL
134914 +disable_so_ch341_port_probe_fndecl_18616 ch341_port_probe fndecl 0 18616 NULL
134915 +disable_so_mmc_wait_for_app_cmd_fndecl_18618 mmc_wait_for_app_cmd fndecl 0 18618 NULL
134916 +disable_so_reservation_object_reserve_shared_fndecl_18645 reservation_object_reserve_shared fndecl 0 18645 NULL
134917 +disable_so___remove_suid_fndecl_18657 __remove_suid fndecl 0 18657 NULL
134918 +disable_so_compat_copy_entries_fndecl_18658 compat_copy_entries fndecl 0 18658 NULL
134919 +disable_so_ocfs2_validate_gd_self_fndecl_18659 ocfs2_validate_gd_self fndecl 0 18659 NULL
134920 +disable_so_gfs2_unstuffer_page_fndecl_18663 gfs2_unstuffer_page fndecl 0 18663 NULL
134921 +disable_so_ramoops_probe_fndecl_18666 ramoops_probe fndecl 0 18666 NULL
134922 +disable_so_mISDN_register_device_fndecl_18669 mISDN_register_device fndecl 0 18669 NULL
134923 +disable_so_enic_set_nic_cfg_fndecl_18671 enic_set_nic_cfg fndecl 0 18671 NULL
134924 +disable_so_erase_block_fndecl_18678 erase_block fndecl 0 18678 NULL
134925 +disable_so_ipmi_set_my_address_fndecl_18680 ipmi_set_my_address fndecl 0 18680 NULL
134926 +disable_so_il_enqueue_hcmd_fndecl_18688 il_enqueue_hcmd fndecl 0 18688 NULL
134927 +disable_so_compat_target_to_user_fndecl_18697 compat_target_to_user fndecl 0 18697 NULL
134928 +disable_so_dsp_dma_start_fndecl_18710 dsp_dma_start fndecl 0 18710 NULL
134929 +disable_so_tcf_em_validate_fndecl_18720 tcf_em_validate fndecl 0 18720 NULL
134930 +disable_so_pcxhr_init_board_fndecl_18723 pcxhr_init_board fndecl 0 18723 NULL
134931 +disable_so_datablob_parse_fndecl_18730 datablob_parse fndecl 0 18730 NULL
134932 +disable_so_subdev_open_fndecl_18736 subdev_open fndecl 0 18736 NULL
134933 +disable_so_htb_change_class_fndecl_18745 htb_change_class fndecl 0 18745 NULL
134934 +disable_so_max_sges_ocrdma_qp_hwq_info_18746 max_sges ocrdma_qp_hwq_info 0 18746 NULL
134935 +disable_so_bnx2x_register_cnic_fndecl_18755 bnx2x_register_cnic fndecl 0 18755 NULL
134936 +disable_so_read_blocklist_fndecl_18762 read_blocklist fndecl 0 18762 NULL
134937 +disable_so_claimintf_fndecl_18773 claimintf fndecl 0 18773 NULL
134938 +disable_so___jfs_set_acl_fndecl_18781 __jfs_set_acl fndecl 0 18781 NULL
134939 +disable_so_iwl_power_update_mode_fndecl_18784 iwl_power_update_mode fndecl 0 18784 NULL
134940 +disable_so_max_low_pfn_vardecl_18798 max_low_pfn vardecl 0 18798 NULL
134941 +disable_so_wait_for_response_fndecl_18814 wait_for_response fndecl 0 18814 NULL
134942 +disable_so_scsi_ioctl_block_when_processing_errors_fndecl_18819 scsi_ioctl_block_when_processing_errors fndecl 0 18819 NULL nohasharray
134943 +disable_so_tx_cnt_IsdnCardState_18819 tx_cnt IsdnCardState 0 18819 &disable_so_scsi_ioctl_block_when_processing_errors_fndecl_18819
134944 +disable_so_rxrpc_krb5_decode_tagged_data_fndecl_18821 rxrpc_krb5_decode_tagged_data fndecl 0 18821 NULL
134945 +disable_so_usb_descriptor_fillbuf_fndecl_18853 usb_descriptor_fillbuf fndecl 0 18853 NULL
134946 +disable_so__set_memory_wb_fndecl_18854 _set_memory_wb fndecl 0 18854 NULL
134947 +disable_so_grow_inode_fndecl_18860 grow_inode fndecl 0 18860 NULL
134948 +disable_so__efx_mcdi_rpc_finish_fndecl_18861 _efx_mcdi_rpc_finish fndecl 0 18861 NULL
134949 +disable_so_xlog_recover_finish_fndecl_18867 xlog_recover_finish fndecl 0 18867 NULL
134950 +disable_so_mlx5_core_qp_modify_fndecl_18869 mlx5_core_qp_modify fndecl 0 18869 NULL
134951 +disable_so_iommu_domain_identity_map_fndecl_18871 iommu_domain_identity_map fndecl 0 18871 NULL
134952 +disable_so___smsc95xx_write_reg_fndecl_18876 __smsc95xx_write_reg fndecl 0 18876 NULL
134953 +disable_so_osd_y_pan_yuv_playback_info_18877 osd_y_pan yuv_playback_info 0 18877 NULL
134954 +disable_so_nr_rt_ioctl_fndecl_18886 nr_rt_ioctl fndecl 0 18886 NULL nohasharray
134955 +disable_so_ovs_nla_get_identifier_fndecl_18886 ovs_nla_get_identifier fndecl 0 18886 &disable_so_nr_rt_ioctl_fndecl_18886
134956 +disable_so_nilfs_max_size_fndecl_18901 nilfs_max_size fndecl 0 18901 NULL
134957 +disable_so_rv770_dpm_init_fndecl_18904 rv770_dpm_init fndecl 0 18904 NULL
134958 +disable_so_snd_compr_get_caps_fndecl_18913 snd_compr_get_caps fndecl 0 18913 NULL
134959 +disable_so_chipio_send_fndecl_18924 chipio_send fndecl 0 18924 NULL
134960 +disable_so_ipxrtr_create_fndecl_18938 ipxrtr_create fndecl 0 18938 NULL
134961 +disable_so_xfs_init_percpu_counters_fndecl_18941 xfs_init_percpu_counters fndecl 0 18941 NULL nohasharray
134962 +disable_so_ocfs2_figure_hole_clusters_fndecl_18941 ocfs2_figure_hole_clusters fndecl 0 18941 &disable_so_xfs_init_percpu_counters_fndecl_18941
134963 +disable_so_netlbl_unlhsh_add_addr6_fndecl_18945 netlbl_unlhsh_add_addr6 fndecl 0 18945 NULL
134964 +disable_so_qlcnic_sriov_cfg_bc_intr_fndecl_18946 qlcnic_sriov_cfg_bc_intr fndecl 0 18946 NULL
134965 +disable_so_cookie_sg_count_realtek_pci_sdmmc_18954 cookie_sg_count realtek_pci_sdmmc 0 18954 NULL
134966 +disable_so_dm1105_probe_fndecl_18970 dm1105_probe fndecl 0 18970 NULL
134967 +disable_so_mwifiex_ret_tdls_oper_fndecl_18972 mwifiex_ret_tdls_oper fndecl 0 18972 NULL
134968 +disable_so_mlx4_en_create_tx_ring_fndecl_18977 mlx4_en_create_tx_ring fndecl 0 18977 NULL nohasharray
134969 +disable_so_sctp_bindx_rem_fndecl_18977 sctp_bindx_rem fndecl 0 18977 &disable_so_mlx4_en_create_tx_ring_fndecl_18977
134970 +disable_so_rtsx_usb_read_register_fndecl_18981 rtsx_usb_read_register fndecl 0 18981 NULL nohasharray
134971 +disable_so_target_xcopy_setup_pt_fndecl_18981 target_xcopy_setup_pt fndecl 0 18981 &disable_so_rtsx_usb_read_register_fndecl_18981
134972 +disable_so_efivars_pstore_init_fndecl_18983 efivars_pstore_init fndecl 0 18983 NULL
134973 +disable_so_p9_get_mapped_pages_fndecl_18988 p9_get_mapped_pages fndecl 0 18988 NULL
134974 +disable_so_ttm_bo_kmap_ttm_fndecl_18993 ttm_bo_kmap_ttm fndecl 0 18993 NULL
134975 +disable_so_usb_hcd_check_unlink_urb_fndecl_18999 usb_hcd_check_unlink_urb fndecl 0 18999 NULL nohasharray
134976 +disable_so_isl29003_probe_fndecl_18999 isl29003_probe fndecl 0 18999 &disable_so_usb_hcd_check_unlink_urb_fndecl_18999
134977 +disable_so_ni_parse_power_table_fndecl_19003 ni_parse_power_table fndecl 0 19003 NULL
134978 +disable_so_xpad_led_probe_fndecl_19006 xpad_led_probe fndecl 0 19006 NULL
134979 +disable_so_add_single_cap_ctl_fndecl_19012 add_single_cap_ctl fndecl 0 19012 NULL
134980 +disable_so_xen_irq_info_pirq_setup_fndecl_19014 xen_irq_info_pirq_setup fndecl 0 19014 NULL
134981 +disable_so_do_sigaction_fndecl_19020 do_sigaction fndecl 0 19020 NULL
134982 +disable_so_xen_pcibk_config_init_dev_fndecl_19030 xen_pcibk_config_init_dev fndecl 0 19030 NULL
134983 +disable_so_sony_call_snc_handle_fndecl_19031 sony_call_snc_handle fndecl 0 19031 NULL
134984 +disable_so_ccp_crypto_enqueue_request_fndecl_19035 ccp_crypto_enqueue_request fndecl 0 19035 NULL
134985 +disable_so_netif_set_real_num_rx_queues_fndecl_19036 netif_set_real_num_rx_queues fndecl 0 19036 NULL
134986 +disable_so_kill_pid_info_fndecl_19038 kill_pid_info fndecl 0 19038 NULL
134987 +disable_so_snd_opl3_hwdep_new_fndecl_19051 snd_opl3_hwdep_new fndecl 0 19051 NULL
134988 +disable_so_compat_sys_timer_create_fndecl_19053 compat_sys_timer_create fndecl 0 19053 NULL
134989 +disable_so_ib_send_cm_req_fndecl_19056 ib_send_cm_req fndecl 0 19056 NULL
134990 +disable_so_eeepc_led_init_fndecl_19057 eeepc_led_init fndecl 0 19057 NULL
134991 +disable_so_mod_len_extent_map_19058 mod_len extent_map 0 19058 NULL
134992 +disable_so_mei_cl_read_start_fndecl_19077 mei_cl_read_start fndecl 0 19077 NULL
134993 +disable_so_parse_acl_data_fndecl_19080 parse_acl_data fndecl 0 19080 NULL
134994 +disable_so_ttm_copy_io_ttm_page_fndecl_19101 ttm_copy_io_ttm_page fndecl 0 19101 NULL
134995 +disable_so_get_disk_info_fndecl_19106 get_disk_info fndecl 0 19106 NULL
134996 +disable_so_ceph_entity_name_encode_fndecl_19115 ceph_entity_name_encode fndecl 0 19115 NULL
134997 +disable_so_sd_set_bus_speed_mode_fndecl_19116 sd_set_bus_speed_mode fndecl 0 19116 NULL
134998 +disable_so_ipmi_register_for_cmd_fndecl_19131 ipmi_register_for_cmd fndecl 0 19131 NULL
134999 +disable_so_logfs_write_dir_fndecl_19140 logfs_write_dir fndecl 0 19140 NULL
135000 +disable_so_alloc_mad_fndecl_19141 alloc_mad fndecl 0 19141 NULL nohasharray
135001 +disable_so_snd_seq_queue_alloc_fndecl_19141 snd_seq_queue_alloc fndecl 0 19141 &disable_so_alloc_mad_fndecl_19141
135002 +disable_so_start_vivitar_cam_fndecl_19144 start_vivitar_cam fndecl 0 19144 NULL nohasharray
135003 +disable_so_pch_udc_pcd_queue_fndecl_19144 pch_udc_pcd_queue fndecl 0 19144 &disable_so_start_vivitar_cam_fndecl_19144
135004 +disable_so_pvr2_ioread_set_enabled_fndecl_19158 pvr2_ioread_set_enabled fndecl 0 19158 NULL nohasharray
135005 +disable_so_pt1_reset_pci_fndecl_19158 pt1_reset_pci fndecl 0 19158 &disable_so_pvr2_ioread_set_enabled_fndecl_19158
135006 +disable_so___mnt_want_write_fndecl_19160 __mnt_want_write fndecl 0 19160 NULL
135007 +disable_so_ivb_pipe_crc_ctl_reg_fndecl_19163 ivb_pipe_crc_ctl_reg fndecl 0 19163 NULL
135008 +disable_so_matrix_keypad_build_keymap_fndecl_19170 matrix_keypad_build_keymap fndecl 0 19170 NULL
135009 +disable_so_xfs_mru_cache_insert_fndecl_19180 xfs_mru_cache_insert fndecl 0 19180 NULL
135010 +disable_so_xen_max_p2m_pfn_vardecl_19189 xen_max_p2m_pfn vardecl 0 19189 NULL
135011 +disable_so_edge_startup_fndecl_19192 edge_startup fndecl 0 19192 NULL
135012 +disable_so_tp3780I_ReadWriteDspDStore_fndecl_19200 tp3780I_ReadWriteDspDStore fndecl 0 19200 NULL
135013 +disable_so_jffs2_prealloc_raw_node_refs_fndecl_19201 jffs2_prealloc_raw_node_refs fndecl 0 19201 NULL
135014 +disable_so_WaitForDoorbellInt_fndecl_19205 WaitForDoorbellInt fndecl 0 19205 NULL
135015 +disable_so_qt2_attach_fndecl_19214 qt2_attach fndecl 0 19214 NULL nohasharray
135016 +disable_so_ext4_xattr_get_fndecl_19214 ext4_xattr_get fndecl 0 19214 &disable_so_qt2_attach_fndecl_19214
135017 +disable_so_uhid_hid_get_report_fndecl_19215 uhid_hid_get_report fndecl 0 19215 NULL
135018 +disable_so_ctnl_timeout_parse_policy_fndecl_19218 ctnl_timeout_parse_policy fndecl 0 19218 NULL
135019 +disable_so_com20020_config_fndecl_19221 com20020_config fndecl 0 19221 NULL nohasharray
135020 +disable_so__base_send_port_enable_fndecl_19221 _base_send_port_enable fndecl 0 19221 &disable_so_com20020_config_fndecl_19221
135021 +disable_so_mga_driver_load_fndecl_19222 mga_driver_load fndecl 0 19222 NULL
135022 +disable_so_vfio_iommu_replay_fndecl_19225 vfio_iommu_replay fndecl 0 19225 NULL
135023 +disable_so_cport_addr_nm256_19228 cport_addr nm256 0 19228 NULL
135024 +disable_so_snd_pcm_plugin_build_linear_fndecl_19229 snd_pcm_plugin_build_linear fndecl 0 19229 NULL
135025 +disable_so_ci_register_patching_mc_seq_fndecl_19230 ci_register_patching_mc_seq fndecl 0 19230 NULL
135026 +disable_so_add_stereo_vol_fndecl_19241 add_stereo_vol fndecl 0 19241 NULL
135027 +disable_so_pcxhr_dsp_allocate_pipe_fndecl_19242 pcxhr_dsp_allocate_pipe fndecl 0 19242 NULL
135028 +disable_so_get_arg_fndecl_19245 get_arg fndecl 0 19245 NULL
135029 +disable_so_wl1251_acx_conn_monit_params_fndecl_19252 wl1251_acx_conn_monit_params fndecl 0 19252 NULL
135030 +disable_so_idt77252_init_cbr_fndecl_19260 idt77252_init_cbr fndecl 0 19260 NULL
135031 +disable_so_vmw_kms_readback_fndecl_19276 vmw_kms_readback fndecl 0 19276 NULL nohasharray
135032 +disable_so_wl1271_cmd_interrogate_fndecl_19276 wl1271_cmd_interrogate fndecl 0 19276 &disable_so_vmw_kms_readback_fndecl_19276
135033 +disable_so_amd8111_probe_fndecl_19288 amd8111_probe fndecl 0 19288 NULL
135034 +disable_so_parse_org_fndecl_19289 parse_org fndecl 0 19289 NULL
135035 +disable_so_ubi_calc_fm_size_fndecl_19302 ubi_calc_fm_size fndecl 0 19302 NULL
135036 +disable_so_mtip_dma_alloc_fndecl_19310 mtip_dma_alloc fndecl 0 19310 NULL
135037 +disable_so_tcf_ipt_init_fndecl_19319 tcf_ipt_init fndecl 0 19319 NULL
135038 +disable_so_sys_getcwd_fndecl_19324 sys_getcwd fndecl 0 19324 NULL
135039 +disable_so_sctp_listen_for_all_fndecl_19327 sctp_listen_for_all fndecl 0 19327 NULL
135040 +disable_so_mlx4_alloc_resize_buf_fndecl_19329 mlx4_alloc_resize_buf fndecl 0 19329 NULL
135041 +disable_so_s2250_probe_fndecl_19353 s2250_probe fndecl 0 19353 NULL
135042 +disable_so_relocate_entry_clflush_fndecl_19355 relocate_entry_clflush fndecl 0 19355 NULL
135043 +disable_so_minimum_acpi_resource_io_19359 minimum acpi_resource_io 0 19359 NULL
135044 +disable_so_rfcomm_sock_setsockopt_old_fndecl_19366 rfcomm_sock_setsockopt_old fndecl 0 19366 NULL
135045 +disable_so___insert_pg_mapping_fndecl_19370 __insert_pg_mapping fndecl 0 19370 NULL
135046 +disable_so_size_mdu_array_info_s_19374 size mdu_array_info_s 0 19374 NULL
135047 +disable_so_nvme_trans_bdev_char_page_fndecl_19382 nvme_trans_bdev_char_page fndecl 0 19382 NULL
135048 +disable_so_hci_sock_blacklist_add_fndecl_19392 hci_sock_blacklist_add fndecl 0 19392 NULL
135049 +disable_so_send_channel_info_cmd_fndecl_19393 send_channel_info_cmd fndecl 0 19393 NULL
135050 +disable_so_dln2_print_serialno_fndecl_19395 dln2_print_serialno fndecl 0 19395 NULL
135051 +disable_so_dirid_reiserfs_iget_args_19401 dirid reiserfs_iget_args 0 19401 NULL
135052 +disable_so_netdev_adjacent_sysfs_add_fndecl_19406 netdev_adjacent_sysfs_add fndecl 0 19406 NULL
135053 +disable_so_srpt_init_ch_qp_fndecl_19410 srpt_init_ch_qp fndecl 0 19410 NULL
135054 +disable_so_dm_tm_ref_fndecl_19416 dm_tm_ref fndecl 0 19416 NULL
135055 +disable_so_uwb_rc_dev_addr_set_fndecl_19418 uwb_rc_dev_addr_set fndecl 0 19418 NULL
135056 +disable_so_kvm_get_dirty_log_protect_fndecl_19422 kvm_get_dirty_log_protect fndecl 0 19422 NULL
135057 +disable_so_snd_cx25821_hw_params_fndecl_19424 snd_cx25821_hw_params fndecl 0 19424 NULL
135058 +disable_so_ide_setup_pci_controller_fndecl_19430 ide_setup_pci_controller fndecl 0 19430 NULL nohasharray
135059 +disable_so_iwl_dbgfs_scan_ant_rxchain_write_fndecl_19430 iwl_dbgfs_scan_ant_rxchain_write fndecl 0 19430 &disable_so_ide_setup_pci_controller_fndecl_19430 nohasharray
135060 +disable_so_snd_usbmidi_get_ms_info_fndecl_19430 snd_usbmidi_get_ms_info fndecl 0 19430 &disable_so_iwl_dbgfs_scan_ant_rxchain_write_fndecl_19430
135061 +disable_so_coretemp_device_add_fndecl_19434 coretemp_device_add fndecl 0 19434 NULL
135062 +disable_so_config_buf_fndecl_19445 config_buf fndecl 0 19445 NULL nohasharray
135063 +disable_so_sn9c2028_long_command_fndecl_19445 sn9c2028_long_command fndecl 0 19445 &disable_so_config_buf_fndecl_19445
135064 +disable_so_ssb_pcmcia_cfg_write_fndecl_19446 ssb_pcmcia_cfg_write fndecl 0 19446 NULL
135065 +disable_so_i_parent_dir_hpfs_inode_info_19451 i_parent_dir hpfs_inode_info 0 19451 NULL
135066 +disable_so_vcc_connect_fndecl_19469 vcc_connect fndecl 0 19469 NULL
135067 +disable_so_snd_seq_ioctl_create_queue_fndecl_19472 snd_seq_ioctl_create_queue fndecl 0 19472 NULL
135068 +disable_so_orig_block_len_extent_map_19476 orig_block_len extent_map 0 19476 NULL
135069 +disable_so_falcon_probe_board_fndecl_19478 falcon_probe_board fndecl 0 19478 NULL
135070 +disable_so_check_addr_fndecl_19483 check_addr fndecl 0 19483 NULL
135071 +disable_so_lookup_string_fndecl_19486 lookup_string fndecl 0 19486 NULL
135072 +disable_so_reg_read_fndecl_19498 reg_read fndecl 0 19498 NULL
135073 +disable_so_cxacru_cm_get_array_fndecl_19503 cxacru_cm_get_array fndecl 0 19503 NULL
135074 +disable_so_ocfs2_update_last_group_and_inode_fndecl_19520 ocfs2_update_last_group_and_inode fndecl 0 19520 NULL
135075 +disable_so_snd_soc_register_component_fndecl_19525 snd_soc_register_component fndecl 0 19525 NULL
135076 +disable_so_ttm_mem_io_reserve_fndecl_19530 ttm_mem_io_reserve fndecl 0 19530 NULL
135077 +disable_so_sirdev_set_dongle_fndecl_19533 sirdev_set_dongle fndecl 0 19533 NULL
135078 +disable_so_netdev_register_kobject_fndecl_19535 netdev_register_kobject fndecl 0 19535 NULL
135079 +disable_so_reclaim_block_fndecl_19552 reclaim_block fndecl 0 19552 NULL
135080 +disable_so_drm_ioctl_permit_fndecl_19554 drm_ioctl_permit fndecl 0 19554 NULL
135081 +disable_so_at76_set_card_command_fndecl_19556 at76_set_card_command fndecl 0 19556 NULL
135082 +disable_so_cir_addr_fintek_dev_19561 cir_addr fintek_dev 0 19561 NULL
135083 +disable_so_iio_device_register_sysfs_fndecl_19565 iio_device_register_sysfs fndecl 0 19565 NULL
135084 +disable_so_rtsx_pci_card_exclusive_check_fndecl_19570 rtsx_pci_card_exclusive_check fndecl 0 19570 NULL
135085 +disable_so_rx_max_pending_ethtool_ringparam_19591 rx_max_pending ethtool_ringparam 0 19591 NULL
135086 +disable_so_snd_seq_expand_var_event_fndecl_19602 snd_seq_expand_var_event fndecl 0 19602 NULL
135087 +disable_so_sock_create_kern_fndecl_19603 sock_create_kern fndecl 0 19603 NULL
135088 +disable_so_container_device_attach_fndecl_19605 container_device_attach fndecl 0 19605 NULL
135089 +disable_so_vmbus_establish_gpadl_fndecl_19612 vmbus_establish_gpadl fndecl 0 19612 NULL
135090 +disable_so_smi_probe_fndecl_19618 smi_probe fndecl 0 19618 NULL
135091 +disable_so_logical_io_failure_record_19631 logical io_failure_record 0 19631 NULL
135092 +disable_so_bpa10x_open_fndecl_19638 bpa10x_open fndecl 0 19638 NULL
135093 +disable_so_write_cnodes_fndecl_19640 write_cnodes fndecl 0 19640 NULL
135094 +disable_so_sdio_io_rw_ext_helper_fndecl_19641 sdio_io_rw_ext_helper fndecl 0 19641 NULL
135095 +disable_so_afs_fill_page_fndecl_19642 afs_fill_page fndecl 0 19642 NULL
135096 +disable_so_af9033_rd_regs_fndecl_19652 af9033_rd_regs fndecl 0 19652 NULL
135097 +disable_so_ioctl_send_fib_fndecl_19664 ioctl_send_fib fndecl 0 19664 NULL
135098 +disable_so_usdhi6_error_code_fndecl_19670 usdhi6_error_code fndecl 0 19670 NULL
135099 +disable_so_ocfs2_refcount_lock_fndecl_19680 ocfs2_refcount_lock fndecl 0 19680 NULL
135100 +disable_so_softing_netdev_register_fndecl_19690 softing_netdev_register fndecl 0 19690 NULL
135101 +disable_so_nl80211_set_qos_map_fndecl_19697 nl80211_set_qos_map fndecl 0 19697 NULL
135102 +disable_so_commit_orphans_fndecl_19707 commit_orphans fndecl 0 19707 NULL
135103 +disable_so_snd_ymfpci_create_fndecl_19712 snd_ymfpci_create fndecl 0 19712 NULL
135104 +disable_so_isdn_net_rm_fndecl_19726 isdn_net_rm fndecl 0 19726 NULL
135105 +disable_so_write_tag_64_packet_fndecl_19729 write_tag_64_packet fndecl 0 19729 NULL
135106 +disable_so_small_smb_init_no_tc_fndecl_19738 small_smb_init_no_tc fndecl 0 19738 NULL
135107 +disable_so_configfs_setattr_fndecl_19740 configfs_setattr fndecl 0 19740 NULL
135108 +disable_so_bytesperline_v4l2_pix_format_19741 bytesperline v4l2_pix_format 0 19741 NULL
135109 +disable_so_mon_text_read_u_fndecl_19744 mon_text_read_u fndecl 0 19744 NULL
135110 +disable_so_nv17_fence_context_new_fndecl_19752 nv17_fence_context_new fndecl 0 19752 NULL
135111 +disable_so_acpi_bus_get_device_fndecl_19754 acpi_bus_get_device fndecl 0 19754 NULL
135112 +disable_so_i40e_asq_send_command_fndecl_19755 i40e_asq_send_command fndecl 0 19755 NULL
135113 +disable_so_stop_sync_thread_fndecl_19756 stop_sync_thread fndecl 0 19756 NULL
135114 +disable_so_snd_asihpi_aesebu_tx_add_fndecl_19760 snd_asihpi_aesebu_tx_add fndecl 0 19760 NULL nohasharray
135115 +disable_so_curr_hash_dir_private_info_19760 curr_hash dir_private_info 0 19760 &disable_so_snd_asihpi_aesebu_tx_add_fndecl_19760
135116 +disable_so_alloc_sq_fndecl_19766 alloc_sq fndecl 0 19766 NULL
135117 +disable_so_ccp_register_sha_alg_fndecl_19771 ccp_register_sha_alg fndecl 0 19771 NULL
135118 +disable_so_sst_cache_and_parse_fw_fndecl_19774 sst_cache_and_parse_fw fndecl 0 19774 NULL
135119 +disable_so_mixart_enum_connectors_fndecl_19785 mixart_enum_connectors fndecl 0 19785 NULL
135120 +disable_so_hbackporch_v4l2_bt_timings_19806 hbackporch v4l2_bt_timings 0 19806 NULL
135121 +disable_so_vq_wait_for_reply_fndecl_19808 vq_wait_for_reply fndecl 0 19808 NULL
135122 +disable_so_try_to_load_firmware_fndecl_19815 try_to_load_firmware fndecl 0 19815 NULL
135123 +disable_so_insert_extent_backref_fndecl_19826 insert_extent_backref fndecl 0 19826 NULL
135124 +disable_so_team_port_enable_netpoll_fndecl_19840 team_port_enable_netpoll fndecl 0 19840 NULL nohasharray
135125 +disable_so_ubi_update_fastmap_fndecl_19840 ubi_update_fastmap fndecl 0 19840 &disable_so_team_port_enable_netpoll_fndecl_19840
135126 +disable_so_i5k_channel_probe_fndecl_19853 i5k_channel_probe fndecl 0 19853 NULL nohasharray
135127 +disable_so_iobase_w6692_hw_19853 iobase w6692_hw 0 19853 &disable_so_i5k_channel_probe_fndecl_19853
135128 +disable_so_mwifiex_sta_prepare_cmd_fndecl_19854 mwifiex_sta_prepare_cmd fndecl 0 19854 NULL
135129 +disable_so_iwlagn_send_rxon_assoc_fndecl_19855 iwlagn_send_rxon_assoc fndecl 0 19855 NULL
135130 +disable_so_si4713_start_seq_fndecl_19859 si4713_start_seq fndecl 0 19859 NULL
135131 +disable_so_dm_get_table_device_fndecl_19869 dm_get_table_device fndecl 0 19869 NULL
135132 +disable_so_snd_pcm_oss_change_params_fndecl_19874 snd_pcm_oss_change_params fndecl 0 19874 NULL
135133 +disable_so_si_initialize_mc_reg_table_fndecl_19877 si_initialize_mc_reg_table fndecl 0 19877 NULL
135134 +disable_so_snd_mixer_oss_build_input_fndecl_19886 snd_mixer_oss_build_input fndecl 0 19886 NULL
135135 +disable_so___dev_pm_qos_add_request_fndecl_19895 __dev_pm_qos_add_request fndecl 0 19895 NULL
135136 +disable_so_go7007_snd_init_fndecl_19905 go7007_snd_init fndecl 0 19905 NULL
135137 +disable_so_nf_logger_find_get_fndecl_19906 nf_logger_find_get fndecl 0 19906 NULL
135138 +disable_so_ethtool_get_drvinfo_fndecl_19915 ethtool_get_drvinfo fndecl 0 19915 NULL
135139 +disable_so_xt_compat_add_offset_fndecl_19922 xt_compat_add_offset fndecl 0 19922 NULL
135140 +disable_so_vmci_event_dispatch_fndecl_19925 vmci_event_dispatch fndecl 0 19925 NULL
135141 +disable_so___usbnet_read_cmd_fndecl_19928 __usbnet_read_cmd fndecl 0 19928 NULL nohasharray
135142 +disable_so_alloc_shaper_fndecl_19928 alloc_shaper fndecl 0 19928 &disable_so___usbnet_read_cmd_fndecl_19928
135143 +disable_so_create_qp_fndecl_19931 create_qp fndecl 0 19931 NULL
135144 +disable_so_fw_read_file_contents_fndecl_19934 fw_read_file_contents fndecl 0 19934 NULL
135145 +disable_so_alloc_carmine_fb_fndecl_19940 alloc_carmine_fb fndecl 0 19940 NULL
135146 +disable_so_open_dummy_log_fndecl_19942 open_dummy_log fndecl 0 19942 NULL
135147 +disable_so_parse_funcid_fndecl_19943 parse_funcid fndecl 0 19943 NULL
135148 +disable_so_lg_probe_fndecl_19944 lg_probe fndecl 0 19944 NULL
135149 +disable_so_rate_snd_pcm_runtime_19986 rate snd_pcm_runtime 0 19986 NULL
135150 +disable_so_tower_probe_fndecl_19987 tower_probe fndecl 0 19987 NULL
135151 +disable_so_qlcnic_82xx_alloc_mbx_args_fndecl_20002 qlcnic_82xx_alloc_mbx_args fndecl 0 20002 NULL
135152 +disable_so_nilfs_segbuf_reset_fndecl_20003 nilfs_segbuf_reset fndecl 0 20003 NULL
135153 +disable_so_ipv6_route_ioctl_fndecl_20010 ipv6_route_ioctl fndecl 0 20010 NULL
135154 +disable_so___team_option_inst_add_port_fndecl_20013 __team_option_inst_add_port fndecl 0 20013 NULL
135155 +disable_so_sample_rate_lola_20032 sample_rate lola 0 20032 NULL
135156 +disable_so_cipso_v4_doi_add_fndecl_20044 cipso_v4_doi_add fndecl 0 20044 NULL
135157 +disable_so_get_config_fndecl_20051 get_config fndecl 0 20051 NULL
135158 +disable_so_bfad_iocmd_port_cfg_bbcr_fndecl_20055 bfad_iocmd_port_cfg_bbcr fndecl 0 20055 NULL
135159 +disable_so_adf_dev_init_fndecl_20057 adf_dev_init fndecl 0 20057 NULL
135160 +disable_so_avc_general_get_plug_info_fndecl_20062 avc_general_get_plug_info fndecl 0 20062 NULL
135161 +disable_so_cm4000_config_fndecl_20064 cm4000_config fndecl 0 20064 NULL
135162 +disable_so_i40e_get_eeprom_fndecl_20080 i40e_get_eeprom fndecl 0 20080 NULL
135163 +disable_so_vfio_iommu_type1_attach_group_fndecl_20081 vfio_iommu_type1_attach_group fndecl 0 20081 NULL
135164 +disable_so_wext_permission_check_fndecl_20087 wext_permission_check fndecl 0 20087 NULL
135165 +disable_so_get_stripe_fndecl_20094 get_stripe fndecl 0 20094 NULL
135166 +disable_so_xhci_urb_enqueue_fndecl_20103 xhci_urb_enqueue fndecl 0 20103 NULL
135167 +disable_so_do_mincore_fndecl_20105 do_mincore fndecl 0 20105 NULL
135168 +disable_so_do_sync_erase_fndecl_20135 do_sync_erase fndecl 0 20135 NULL
135169 +disable_so_mtd_device_parse_register_fndecl_20147 mtd_device_parse_register fndecl 0 20147 NULL
135170 +disable_so_tpci200_create_device_fndecl_20157 tpci200_create_device fndecl 0 20157 NULL
135171 +disable_so_cx23885_alsa_dma_map_fndecl_20168 cx23885_alsa_dma_map fndecl 0 20168 NULL
135172 +disable_so_tpm_ascii_bios_measurements_open_fndecl_20175 tpm_ascii_bios_measurements_open fndecl 0 20175 NULL
135173 +disable_so_usb_ftdi_elan_edset_single_fndecl_20181 usb_ftdi_elan_edset_single fndecl 0 20181 NULL
135174 +disable_so_iram_base_intel_sst_drv_20196 iram_base intel_sst_drv 0 20196 NULL
135175 +disable_so_alloc_init_skbufs_fndecl_20198 alloc_init_skbufs fndecl 0 20198 NULL
135176 +disable_so_broadsheet_spiflash_wait_for_bit_fndecl_20202 broadsheet_spiflash_wait_for_bit fndecl 0 20202 NULL
135177 +disable_so_kfifo_copy_from_user_fndecl_20208 kfifo_copy_from_user fndecl 0 20208 NULL
135178 +disable_so_pcxhr_toggle_pipes_fndecl_20211 pcxhr_toggle_pipes fndecl 0 20211 NULL nohasharray
135179 +disable_so_prepend_path_fndecl_20211 prepend_path fndecl 0 20211 &disable_so_pcxhr_toggle_pipes_fndecl_20211
135180 +disable_so_mtrr_ioctl_fndecl_20213 mtrr_ioctl fndecl 0 20213 NULL
135181 +disable_so_ati_remote2_urb_init_fndecl_20216 ati_remote2_urb_init fndecl 0 20216 NULL
135182 +disable_so_smscore_sendrequest_and_wait_fndecl_20222 smscore_sendrequest_and_wait fndecl 0 20222 NULL
135183 +disable_so_check_ld_abs_fndecl_20236 check_ld_abs fndecl 0 20236 NULL
135184 +disable_so_mxb_probe_fndecl_20252 mxb_probe fndecl 0 20252 NULL
135185 +disable_so_ip_vs_edit_service_fndecl_20260 ip_vs_edit_service fndecl 0 20260 NULL
135186 +disable_so_efx_ef10_filter_rx_match_pri_fndecl_20263 efx_ef10_filter_rx_match_pri fndecl 0 20263 NULL
135187 +disable_so_qxl_process_single_command_fndecl_20268 qxl_process_single_command fndecl 0 20268 NULL nohasharray
135188 +disable_so_sigd_attach_fndecl_20268 sigd_attach fndecl 0 20268 &disable_so_qxl_process_single_command_fndecl_20268
135189 +disable_so_ioh_gpio_probe_fndecl_20270 ioh_gpio_probe fndecl 0 20270 NULL
135190 +disable_so_r600_cs_parser_relocs_legacy_fndecl_20285 r600_cs_parser_relocs_legacy fndecl 0 20285 NULL
135191 +disable_so_ixgbe_dcbnl_ieee_setets_fndecl_20286 ixgbe_dcbnl_ieee_setets fndecl 0 20286 NULL
135192 +disable_so_soc_mbus_bytes_per_line_fndecl_20288 soc_mbus_bytes_per_line fndecl 0 20288 NULL
135193 +disable_so_kone_receive_fndecl_20289 kone_receive fndecl 0 20289 NULL
135194 +disable_so_register_queue_kobjects_fndecl_20291 register_queue_kobjects fndecl 0 20291 NULL
135195 +disable_so_link_to_fixup_dir_fndecl_20296 link_to_fixup_dir fndecl 0 20296 NULL
135196 +disable_so_mwl8k_cmd_encryption_remove_key_fndecl_20303 mwl8k_cmd_encryption_remove_key fndecl 0 20303 NULL
135197 +disable_so_fw_lookup_and_allocate_buf_fndecl_20320 fw_lookup_and_allocate_buf fndecl 0 20320 NULL
135198 +disable_so_ttm_prime_object_init_fndecl_20321 ttm_prime_object_init fndecl 0 20321 NULL
135199 +disable_so_fallback_migrate_page_fndecl_20325 fallback_migrate_page fndecl 0 20325 NULL
135200 +disable_so_smsusb_init_device_fndecl_20328 smsusb_init_device fndecl 0 20328 NULL
135201 +disable_so_qlf_blkno_xfs_dq_logformat_20330 qlf_blkno xfs_dq_logformat 0 20330 NULL
135202 +disable_so_enic_dev_open_fndecl_20336 enic_dev_open fndecl 0 20336 NULL
135203 +disable_so_scsifront_action_handler_fndecl_20337 scsifront_action_handler fndecl 0 20337 NULL
135204 +disable_so_toshiba_haps_protection_level_fndecl_20340 toshiba_haps_protection_level fndecl 0 20340 NULL
135205 +disable_so_memblock_find_in_range_fndecl_20356 memblock_find_in_range fndecl 0 20356 NULL
135206 +disable_so__alloc_get_attr_list_fndecl_20363 _alloc_get_attr_list fndecl 0 20363 NULL
135207 +disable_so_ceph_set_acl_fndecl_20364 ceph_set_acl fndecl 0 20364 NULL
135208 +disable_so_kfd_parse_crat_table_fndecl_20378 kfd_parse_crat_table fndecl 0 20378 NULL
135209 +disable_so_ms_transfer_data_fndecl_20384 ms_transfer_data fndecl 0 20384 NULL
135210 +disable_so_uwb_drp_avail_reserve_pending_fndecl_20385 uwb_drp_avail_reserve_pending fndecl 0 20385 NULL
135211 +disable_so_build_segment_manager_fndecl_20389 build_segment_manager fndecl 0 20389 NULL
135212 +disable_so___mlx4_ib_destroy_flow_fndecl_20405 __mlx4_ib_destroy_flow fndecl 0 20405 NULL
135213 +disable_so_esd_usb2_start_fndecl_20424 esd_usb2_start fndecl 0 20424 NULL
135214 +disable_so_ioc_resetdrv_fndecl_20436 ioc_resetdrv fndecl 0 20436 NULL
135215 +disable_so_raw_skid_size_x509_certificate_20437 raw_skid_size x509_certificate 0 20437 NULL
135216 +disable_so_ncp__vol2io_fndecl_20439 ncp__vol2io fndecl 0 20439 NULL
135217 +disable_so_lpfc_pci_function_reset_fndecl_20449 lpfc_pci_function_reset fndecl 0 20449 NULL
135218 +disable_so_hub_port_init_fndecl_20450 hub_port_init fndecl 0 20450 NULL
135219 +disable_so_vfat_build_slots_fndecl_20458 vfat_build_slots fndecl 0 20458 NULL
135220 +disable_so_xfs_setsize_buftarg_fndecl_20465 xfs_setsize_buftarg fndecl 0 20465 NULL
135221 +disable_so_sysfs_move_dir_ns_fndecl_20468 sysfs_move_dir_ns fndecl 0 20468 NULL
135222 +disable_so_set_protocol_fndecl_20470 set_protocol fndecl 0 20470 NULL
135223 +disable_so_pn533_send_cmd_direct_async_fndecl_20472 pn533_send_cmd_direct_async fndecl 0 20472 NULL
135224 +disable_so_amradio_set_stereo_fndecl_20478 amradio_set_stereo fndecl 0 20478 NULL
135225 +disable_so_pn533_setup_fndecl_20485 pn533_setup fndecl 0 20485 NULL
135226 +disable_so_wext_ioctl_dispatch_fndecl_20490 wext_ioctl_dispatch fndecl 0 20490 NULL
135227 +disable_so_qp_notify_peer_local_fndecl_20493 qp_notify_peer_local fndecl 0 20493 NULL
135228 +disable_so_elo_connect_fndecl_20495 elo_connect fndecl 0 20495 NULL
135229 +disable_so_id_platform_device_20503 id platform_device 0 20503 NULL
135230 +disable_so_uvc_ioctl_ctrl_map_fndecl_20508 uvc_ioctl_ctrl_map fndecl 0 20508 NULL
135231 +disable_so_ubi_io_write_ec_hdr_fndecl_20510 ubi_io_write_ec_hdr fndecl 0 20510 NULL
135232 +disable_so_s5p_mfc_open_mfc_inst_fndecl_20512 s5p_mfc_open_mfc_inst fndecl 0 20512 NULL
135233 +disable_so_vdc_mem_base_vml_par_20521 vdc_mem_base vml_par 0 20521 NULL
135234 +disable_so___ww_mutex_lock_interruptible_slowpath_fndecl_20533 __ww_mutex_lock_interruptible_slowpath fndecl 0 20533 NULL
135235 +disable_so_nilfs_segctor_fill_in_checkpoint_fndecl_20538 nilfs_segctor_fill_in_checkpoint fndecl 0 20538 NULL
135236 +disable_so_mwifiex_alloc_cmd_buffer_fndecl_20543 mwifiex_alloc_cmd_buffer fndecl 0 20543 NULL
135237 +disable_so_dti_buf_size_wahc_20547 dti_buf_size wahc 0 20547 NULL
135238 +disable_so_set_location_fndecl_20548 set_location fndecl 0 20548 NULL
135239 +disable_so_broadsheet_spiflash_write_byte_fndecl_20549 broadsheet_spiflash_write_byte fndecl 0 20549 NULL
135240 +disable_so_dlm_lowcomms_start_fndecl_20555 dlm_lowcomms_start fndecl 0 20555 NULL
135241 +disable_so_isdn_readbchan_fndecl_20570 isdn_readbchan fndecl 0 20570 NULL
135242 +disable_so_snd_opl3_set_mode_fndecl_20578 snd_opl3_set_mode fndecl 0 20578 NULL
135243 +disable_so_map_single_fndecl_20586 map_single fndecl 0 20586 NULL
135244 +disable_so_ncp_symlink_readpage_fndecl_20587 ncp_symlink_readpage fndecl 0 20587 NULL
135245 +disable_so_nrof_flowrings_brcmf_pcie_shared_info_20590 nrof_flowrings brcmf_pcie_shared_info 0 20590 NULL
135246 +disable_so_i1480_rceb_check_fndecl_20605 i1480_rceb_check fndecl 0 20605 NULL
135247 +disable_so_apei_hest_parse_fndecl_20616 apei_hest_parse fndecl 0 20616 NULL nohasharray
135248 +disable_so_nl802154_dump_wpan_phy_fndecl_20616 nl802154_dump_wpan_phy fndecl 0 20616 &disable_so_apei_hest_parse_fndecl_20616
135249 +disable_so_nvme_trans_bdev_limits_page_fndecl_20626 nvme_trans_bdev_limits_page fndecl 0 20626 NULL
135250 +disable_so_get_version_fndecl_20653 get_version fndecl 0 20653 NULL
135251 +disable_so_ipw_poll_bit_fndecl_20657 ipw_poll_bit fndecl 0 20657 NULL
135252 +disable_so_security_context_to_sid_default_fndecl_20663 security_context_to_sid_default fndecl 0 20663 NULL
135253 +disable_so_nv50_ovly_create_fndecl_20667 nv50_ovly_create fndecl 0 20667 NULL
135254 +disable_so_run_one_delayed_ref_fndecl_20668 run_one_delayed_ref fndecl 0 20668 NULL
135255 +disable_so_sas_ex_manuf_info_fndecl_20676 sas_ex_manuf_info fndecl 0 20676 NULL
135256 +disable_so_nouveau_fence_new_fndecl_20678 nouveau_fence_new fndecl 0 20678 NULL
135257 +disable_so_max_qp_wr_ib_device_attr_20681 max_qp_wr ib_device_attr 0 20681 NULL
135258 +disable_so_snd_seq_timer_set_tempo_fndecl_20683 snd_seq_timer_set_tempo fndecl 0 20683 NULL
135259 +disable_so_num_evt_qs_be_adapter_20688 num_evt_qs be_adapter 0 20688 NULL
135260 +disable_so_snd_aw2_create_fndecl_20694 snd_aw2_create fndecl 0 20694 NULL
135261 +disable_so_hpsa_hba_mode_enabled_fndecl_20701 hpsa_hba_mode_enabled fndecl 0 20701 NULL
135262 +disable_so_iommu_map_fndecl_20721 iommu_map fndecl 0 20721 NULL
135263 +disable_so_ethtool_get_one_feature_fndecl_20724 ethtool_get_one_feature fndecl 0 20724 NULL
135264 +disable_so_i915_gem_execbuffer_reserve_fndecl_20725 i915_gem_execbuffer_reserve fndecl 0 20725 NULL
135265 +disable_so_msb_ftl_initialize_fndecl_20726 msb_ftl_initialize fndecl 0 20726 NULL
135266 +disable_so_nilfs_dat_translate_fndecl_20729 nilfs_dat_translate fndecl 0 20729 NULL
135267 +disable_so_stv0680_set_video_mode_fndecl_20735 stv0680_set_video_mode fndecl 0 20735 NULL
135268 +disable_so_wl1271_acx_service_period_timeout_fndecl_20736 wl1271_acx_service_period_timeout fndecl 0 20736 NULL
135269 +disable_so_qce_ahash_register_one_fndecl_20743 qce_ahash_register_one fndecl 0 20743 NULL
135270 +disable_so_airspy_probe_fndecl_20747 airspy_probe fndecl 0 20747 NULL
135271 +disable_so_ext4_convert_inline_data_nolock_fndecl_20748 ext4_convert_inline_data_nolock fndecl 0 20748 NULL
135272 +disable_so_adf_dev_configure_fndecl_20750 adf_dev_configure fndecl 0 20750 NULL
135273 +disable_so_acpi_battery_set_alarm_fndecl_20751 acpi_battery_set_alarm fndecl 0 20751 NULL
135274 +disable_so_vmw_setup_otable_base_fndecl_20754 vmw_setup_otable_base fndecl 0 20754 NULL
135275 +disable_so_stripe_ctr_fndecl_20764 stripe_ctr fndecl 0 20764 NULL
135276 +disable_so_iwlagn_send_beacon_cmd_fndecl_20769 iwlagn_send_beacon_cmd fndecl 0 20769 NULL
135277 +disable_so_proc_disconnect_claim_fndecl_20774 proc_disconnect_claim fndecl 0 20774 NULL
135278 +disable_so_holtekff_init_fndecl_20789 holtekff_init fndecl 0 20789 NULL
135279 +disable_so_qib_user_sdma_init_payload_fndecl_20792 qib_user_sdma_init_payload fndecl 0 20792 NULL
135280 +disable_so_compat_sys_migrate_pages_fndecl_20806 compat_sys_migrate_pages fndecl 0 20806 NULL
135281 +disable_so_tcf_em_tree_validate_fndecl_20807 tcf_em_tree_validate fndecl 0 20807 NULL
135282 +disable_so_map_smb_to_linux_error_fndecl_20808 map_smb_to_linux_error fndecl 0 20808 NULL
135283 +disable_so_ubifs_orphan_end_commit_fndecl_20810 ubifs_orphan_end_commit fndecl 0 20810 NULL
135284 +disable_so_gfs2_rindex_update_fndecl_20814 gfs2_rindex_update fndecl 0 20814 NULL
135285 +disable_so_lpfc_config_port_prep_fndecl_20815 lpfc_config_port_prep fndecl 0 20815 NULL
135286 +disable_so_mwifiex_check_network_compatibility_fndecl_20827 mwifiex_check_network_compatibility fndecl 0 20827 NULL
135287 +disable_so_drm_fb_helper_single_fb_probe_fndecl_20828 drm_fb_helper_single_fb_probe fndecl 0 20828 NULL nohasharray
135288 +disable_so_vmw_mob_pt_populate_fndecl_20828 vmw_mob_pt_populate fndecl 0 20828 &disable_so_drm_fb_helper_single_fb_probe_fndecl_20828
135289 +disable_so_sh_vou_open_fndecl_20832 sh_vou_open fndecl 0 20832 NULL
135290 +disable_so_beb_rsvd_pebs_ubi_device_20863 beb_rsvd_pebs ubi_device 0 20863 NULL
135291 +disable_so_ssif_detect_fndecl_20866 ssif_detect fndecl 0 20866 NULL
135292 +disable_so_fill_trt_fndecl_20867 fill_trt fndecl 0 20867 NULL
135293 +disable_so_acpi_smbus_write_fndecl_20882 acpi_smbus_write fndecl 0 20882 NULL
135294 +disable_so___readpages_done_fndecl_20894 __readpages_done fndecl 0 20894 NULL nohasharray
135295 +disable_so_nv84_fence_create_fndecl_20894 nv84_fence_create fndecl 0 20894 &disable_so___readpages_done_fndecl_20894
135296 +disable_so_page_counter_memparse_fndecl_20902 page_counter_memparse fndecl 0 20902 NULL
135297 +disable_so_mei_amthif_write_fndecl_20907 mei_amthif_write fndecl 0 20907 NULL
135298 +disable_so_init_node_data_fndecl_20913 init_node_data fndecl 0 20913 NULL
135299 +disable_so_prism2_hostapd_remove_sta_fndecl_20914 prism2_hostapd_remove_sta fndecl 0 20914 NULL
135300 +disable_so_btrfs_next_leaf_fndecl_20915 btrfs_next_leaf fndecl 0 20915 NULL
135301 +disable_so_ext3_xattr_find_entry_fndecl_20918 ext3_xattr_find_entry fndecl 0 20918 NULL
135302 +disable_so_e1000e_setup_rx_resources_fndecl_20919 e1000e_setup_rx_resources fndecl 0 20919 NULL
135303 +disable_so_vmw_get_cap_3d_ioctl_fndecl_20926 vmw_get_cap_3d_ioctl fndecl 0 20926 NULL
135304 +disable_so_add_widget_node_fndecl_20927 add_widget_node fndecl 0 20927 NULL
135305 +disable_so__iwl_dbgfs_d3_sram_write_fndecl_20960 _iwl_dbgfs_d3_sram_write fndecl 0 20960 NULL
135306 +disable_so_logfs_replace_inode_fndecl_20961 logfs_replace_inode fndecl 0 20961 NULL
135307 +disable_so_range_start_writeback_control_20965 range_start writeback_control 0 20965 NULL
135308 +disable_so___mlx4_init_one_fndecl_20968 __mlx4_init_one fndecl 0 20968 NULL
135309 +disable_so_dbDiscardAG_fndecl_20969 dbDiscardAG fndecl 0 20969 NULL
135310 +disable_so_pm_qos_sysfs_add_flags_fndecl_20982 pm_qos_sysfs_add_flags fndecl 0 20982 NULL
135311 +disable_so___set_extent_bit_fndecl_20986 __set_extent_bit fndecl 0 20986 NULL
135312 +disable_so_id_to_sid_fndecl_20990 id_to_sid fndecl 0 20990 NULL
135313 +disable_so_ocfs2_get_acl_nolock_fndecl_20995 ocfs2_get_acl_nolock fndecl 0 20995 NULL
135314 +disable_so_c67x00_urb_enqueue_fndecl_20997 c67x00_urb_enqueue fndecl 0 20997 NULL
135315 +disable_so_si_initialize_smc_dte_tables_fndecl_21002 si_initialize_smc_dte_tables fndecl 0 21002 NULL
135316 +disable_so_hfsplus_create_attr_fndecl_21003 hfsplus_create_attr fndecl 0 21003 NULL
135317 +disable_so_br_fdb_insert_fndecl_21006 br_fdb_insert fndecl 0 21006 NULL
135318 +disable_so_sst_hsw_module_set_param_fndecl_21007 sst_hsw_module_set_param fndecl 0 21007 NULL
135319 +disable_so_fuse_try_move_page_fndecl_21009 fuse_try_move_page fndecl 0 21009 NULL
135320 +disable_so_ubi_eba_read_leb_fndecl_21012 ubi_eba_read_leb fndecl 0 21012 NULL nohasharray
135321 +disable_so_isdn_ppp_bundle_fndecl_21012 isdn_ppp_bundle fndecl 0 21012 &disable_so_ubi_eba_read_leb_fndecl_21012
135322 +disable_so___buf_prepare_fndecl_21013 __buf_prepare fndecl 0 21013 NULL
135323 +disable_so_acpi_bind_one_fndecl_21014 acpi_bind_one fndecl 0 21014 NULL
135324 +disable_so_wlcore_boot_parse_fw_ver_fndecl_21017 wlcore_boot_parse_fw_ver fndecl 0 21017 NULL
135325 +disable_so_gpiochip_add_pingroup_range_fndecl_21018 gpiochip_add_pingroup_range fndecl 0 21018 NULL
135326 +disable_so_reg_set_rd_country_ie_fndecl_21022 reg_set_rd_country_ie fndecl 0 21022 NULL
135327 +disable_so_bfad_iocmd_lport_get_rports_fndecl_21027 bfad_iocmd_lport_get_rports fndecl 0 21027 NULL
135328 +disable_so_apei_res_sub_fndecl_21042 apei_res_sub fndecl 0 21042 NULL
135329 +disable_so_digsig_verify_rsa_fndecl_21054 digsig_verify_rsa fndecl 0 21054 NULL
135330 +disable_so_w1_f1C_add_slave_fndecl_21066 w1_f1C_add_slave fndecl 0 21066 NULL
135331 +disable_so_usbip_recv_fndecl_21076 usbip_recv fndecl 0 21076 NULL
135332 +disable_so_dbg_check_old_index_fndecl_21077 dbg_check_old_index fndecl 0 21077 NULL nohasharray
135333 +disable_so_vcs_write_fndecl_21077 vcs_write fndecl 0 21077 &disable_so_dbg_check_old_index_fndecl_21077
135334 +disable_so_rose_proto_init_fndecl_21078 rose_proto_init fndecl 0 21078 NULL
135335 +disable_so_ceph_unarmor_fndecl_21088 ceph_unarmor fndecl 0 21088 NULL
135336 +disable_so_ext4_read_inline_dir_fndecl_21094 ext4_read_inline_dir fndecl 0 21094 NULL nohasharray
135337 +disable_so_pn533_send_data_async_fndecl_21094 pn533_send_data_async fndecl 0 21094 &disable_so_ext4_read_inline_dir_fndecl_21094 nohasharray
135338 +disable_so_ieee80211_rate_control_register_fndecl_21094 ieee80211_rate_control_register fndecl 0 21094 &disable_so_pn533_send_data_async_fndecl_21094
135339 +disable_so_iwl_load_ucode_wait_alive_fndecl_21107 iwl_load_ucode_wait_alive fndecl 0 21107 NULL
135340 +disable_so___vfs_read_fndecl_21109 __vfs_read fndecl 0 21109 NULL
135341 +disable_so_apei_clear_mce_fndecl_21119 apei_clear_mce fndecl 0 21119 NULL
135342 +disable_so___osst_write_header_fndecl_21126 __osst_write_header fndecl 0 21126 NULL nohasharray
135343 +disable_so_ubifs_run_commit_fndecl_21126 ubifs_run_commit fndecl 0 21126 &disable_so___osst_write_header_fndecl_21126
135344 +disable_so_virtfn_add_fndecl_21127 virtfn_add fndecl 0 21127 NULL
135345 +disable_so_iwl_mvm_mac_ctxt_cmd_sta_fndecl_21134 iwl_mvm_mac_ctxt_cmd_sta fndecl 0 21134 NULL
135346 +disable_so_hiddev_ioctl_usage_fndecl_21140 hiddev_ioctl_usage fndecl 0 21140 NULL
135347 +disable_so_gh_error_gfs2_holder_21149 gh_error gfs2_holder 0 21149 NULL
135348 +disable_so_mptbase_sas_persist_operation_fndecl_21152 mptbase_sas_persist_operation fndecl 0 21152 NULL
135349 +disable_so__request_firmware_fndecl_21158 _request_firmware fndecl 0 21158 NULL
135350 +disable_so_ext4_xattr_find_entry_fndecl_21162 ext4_xattr_find_entry fndecl 0 21162 NULL
135351 +disable_so_fb_cvt_hsync_fndecl_21171 fb_cvt_hsync fndecl 0 21171 NULL nohasharray
135352 +disable_so_io_addr_blogic_probeinfo_21171 io_addr blogic_probeinfo 0 21171 &disable_so_fb_cvt_hsync_fndecl_21171
135353 +disable_so_gfs2_dir_get_existing_buffer_fndecl_21172 gfs2_dir_get_existing_buffer fndecl 0 21172 NULL
135354 +disable_so_mei_write_fndecl_21174 mei_write fndecl 0 21174 NULL
135355 +disable_so_bcm_rx_setup_fndecl_21181 bcm_rx_setup fndecl 0 21181 NULL
135356 +disable_so_usbnet_write_cmd_async_fndecl_21200 usbnet_write_cmd_async fndecl 0 21200 NULL
135357 +disable_so_xfs_free_ag_extent_fndecl_21207 xfs_free_ag_extent fndecl 0 21207 NULL
135358 +disable_so_ast_mm_init_fndecl_21211 ast_mm_init fndecl 0 21211 NULL
135359 +disable_so_stk1160_video_register_fndecl_21218 stk1160_video_register fndecl 0 21218 NULL
135360 +disable_so_wl12xx_acx_set_ba_receiver_session_fndecl_21221 wl12xx_acx_set_ba_receiver_session fndecl 0 21221 NULL
135361 +disable_so_wm0010_firmware_load_fndecl_21231 wm0010_firmware_load fndecl 0 21231 NULL
135362 +disable_so_basic_set_parms_fndecl_21232 basic_set_parms fndecl 0 21232 NULL
135363 +disable_so_blkcipher_walk_done_fndecl_21256 blkcipher_walk_done fndecl 0 21256 NULL
135364 +disable_so_hsync_len_fb_var_screeninfo_21279 hsync_len fb_var_screeninfo 0 21279 NULL
135365 +disable_so_mlx4_init_cq_table_fndecl_21286 mlx4_init_cq_table fndecl 0 21286 NULL
135366 +disable_so_count_nfsd3_readdirres_21299 count nfsd3_readdirres 0 21299 NULL
135367 +disable_so_cmtp_del_connection_fndecl_21300 cmtp_del_connection fndecl 0 21300 NULL
135368 +disable_so_mtrr_file_del_fndecl_21306 mtrr_file_del fndecl 0 21306 NULL
135369 +disable_so_fuse_copy_page_fndecl_21316 fuse_copy_page fndecl 0 21316 NULL
135370 +disable_so_setup_ntlm_response_fndecl_21319 setup_ntlm_response fndecl 0 21319 NULL
135371 +disable_so__iwl_dbgfs_tx_flush_write_fndecl_21320 _iwl_dbgfs_tx_flush_write fndecl 0 21320 NULL
135372 +disable_so_packet_present_len_cfg80211_wowlan_wakeup_21321 packet_present_len cfg80211_wowlan_wakeup 0 21321 NULL
135373 +disable_so__il_poll_bit_fndecl_21338 _il_poll_bit fndecl 0 21338 NULL
135374 +disable_so_tomoyo_supervisor_fndecl_21342 tomoyo_supervisor fndecl 0 21342 NULL
135375 +disable_so_qib_user_sdma_page_to_frags_fndecl_21343 qib_user_sdma_page_to_frags fndecl 0 21343 NULL
135376 +disable_so_raw_cmd_ioctl_fndecl_21345 raw_cmd_ioctl fndecl 0 21345 NULL
135377 +disable_so___netdev_adjacent_dev_link_lists_fndecl_21346 __netdev_adjacent_dev_link_lists fndecl 0 21346 NULL nohasharray
135378 +disable_so_snd_rawmidi_info_select_fndecl_21346 snd_rawmidi_info_select fndecl 0 21346 &disable_so___netdev_adjacent_dev_link_lists_fndecl_21346
135379 +disable_so_brcmf_fil_cmd_int_set_fndecl_21347 brcmf_fil_cmd_int_set fndecl 0 21347 NULL
135380 +disable_so_amd_iommu_domain_set_gcr3_fndecl_21348 amd_iommu_domain_set_gcr3 fndecl 0 21348 NULL
135381 +disable_so_r600_cs_packet_parse_vline_fndecl_21350 r600_cs_packet_parse_vline fndecl 0 21350 NULL
135382 +disable_so_nfs_direct_wait_fndecl_21357 nfs_direct_wait fndecl 0 21357 NULL nohasharray
135383 +disable_so_mwifiex_update_bss_desc_with_ie_fndecl_21357 mwifiex_update_bss_desc_with_ie fndecl 0 21357 &disable_so_nfs_direct_wait_fndecl_21357
135384 +disable_so_read_boot_mem_fndecl_21358 read_boot_mem fndecl 0 21358 NULL
135385 +disable_so_snd_rawmidi_info_fndecl_21360 snd_rawmidi_info fndecl 0 21360 NULL
135386 +disable_so_pvr2_ioread_start_fndecl_21361 pvr2_ioread_start fndecl 0 21361 NULL nohasharray
135387 +disable_so_cfg_elsa_hw_21361 cfg elsa_hw 0 21361 &disable_so_pvr2_ioread_start_fndecl_21361
135388 +disable_so_val_wm831x_auxadc_req_21364 val wm831x_auxadc_req 0 21364 NULL
135389 +disable_so_ax25_listen_register_fndecl_21370 ax25_listen_register fndecl 0 21370 NULL nohasharray
135390 +disable_so_bit_offset_bm_xfer_ctx_21370 bit_offset bm_xfer_ctx 0 21370 &disable_so_ax25_listen_register_fndecl_21370
135391 +disable_so_dma_mask_platform_device_info_21377 dma_mask platform_device_info 0 21377 NULL nohasharray
135392 +disable_so_omap_hsmmc_pre_dma_transfer_fndecl_21377 omap_hsmmc_pre_dma_transfer fndecl 0 21377 &disable_so_dma_mask_platform_device_info_21377
135393 +disable_so_ocfs2_info_handle_label_fndecl_21387 ocfs2_info_handle_label fndecl 0 21387 NULL
135394 +disable_so_fixed_phy_update_regs_fndecl_21388 fixed_phy_update_regs fndecl 0 21388 NULL
135395 +disable_so_check_node_data_fndecl_21393 check_node_data fndecl 0 21393 NULL
135396 +disable_so_parse_longlink_fndecl_21404 parse_longlink fndecl 0 21404 NULL
135397 +disable_so_v4l2_fh_open_fndecl_21406 v4l2_fh_open fndecl 0 21406 NULL nohasharray
135398 +disable_so_create_single_cap_vol_ctl_fndecl_21406 create_single_cap_vol_ctl fndecl 0 21406 &disable_so_v4l2_fh_open_fndecl_21406
135399 +disable_so_ext4_inode_blocks_set_fndecl_21407 ext4_inode_blocks_set fndecl 0 21407 NULL nohasharray
135400 +disable_so_dvb_frontend_ioctl_legacy_fndecl_21407 dvb_frontend_ioctl_legacy fndecl 0 21407 &disable_so_ext4_inode_blocks_set_fndecl_21407
135401 +disable_so_sctp_copy_one_addr_fndecl_21416 sctp_copy_one_addr fndecl 0 21416 NULL nohasharray
135402 +disable_so_lpfc_sli4_xri_sgl_update_fndecl_21416 lpfc_sli4_xri_sgl_update fndecl 0 21416 &disable_so_sctp_copy_one_addr_fndecl_21416
135403 +disable_so_lola_create_fndecl_21431 lola_create fndecl 0 21431 NULL
135404 +disable_so_btrfs_run_dev_replace_fndecl_21436 btrfs_run_dev_replace fndecl 0 21436 NULL
135405 +disable_so_set_disk_faulty_fndecl_21442 set_disk_faulty fndecl 0 21442 NULL
135406 +disable_so_wait_til_done_fndecl_21462 wait_til_done fndecl 0 21462 NULL
135407 +disable_so_dvd_read_physical_fndecl_21470 dvd_read_physical fndecl 0 21470 NULL
135408 +disable_so_wl1251_acx_wake_up_conditions_fndecl_21474 wl1251_acx_wake_up_conditions fndecl 0 21474 NULL
135409 +disable_so_nci_nfcee_mode_set_fndecl_21476 nci_nfcee_mode_set fndecl 0 21476 NULL
135410 +disable_so_iwl_eeprom_acquire_semaphore_fndecl_21479 iwl_eeprom_acquire_semaphore fndecl 0 21479 NULL
135411 +disable_so_mmio_start_fb_fix_screeninfo_21486 mmio_start fb_fix_screeninfo 0 21486 NULL
135412 +disable_so_sm501_plat_probe_fndecl_21487 sm501_plat_probe fndecl 0 21487 NULL
135413 +disable_so_vidioc_g_fmt_vid_out_overlay_fndecl_21493 vidioc_g_fmt_vid_out_overlay fndecl 0 21493 NULL
135414 +disable_so_bnx2x_execute_vlan_mac_fndecl_21506 bnx2x_execute_vlan_mac fndecl 0 21506 NULL
135415 +disable_so_fiemap_check_ranges_fndecl_21519 fiemap_check_ranges fndecl 0 21519 NULL nohasharray
135416 +disable_so_drbg_instantiate_fndecl_21519 drbg_instantiate fndecl 0 21519 &disable_so_fiemap_check_ranges_fndecl_21519
135417 +disable_so_parse_vers_1_fndecl_21523 parse_vers_1 fndecl 0 21523 NULL
135418 +disable_so_snd_cmipci_pcm2_new_fndecl_21524 snd_cmipci_pcm2_new fndecl 0 21524 NULL
135419 +disable_so_ooblen_mtd_oob_ops_21531 ooblen mtd_oob_ops 0 21531 NULL
135420 +disable_so__add_parity_units_fndecl_21539 _add_parity_units fndecl 0 21539 NULL
135421 +disable_so_mthca_init_db_tab_fndecl_21542 mthca_init_db_tab fndecl 0 21542 NULL
135422 +disable_so___mlx4_register_mac_fndecl_21544 __mlx4_register_mac fndecl 0 21544 NULL
135423 +disable_so_lpfc_bsg_handle_sli_cfg_mbox_fndecl_21546 lpfc_bsg_handle_sli_cfg_mbox fndecl 0 21546 NULL
135424 +disable_so_smscore_register_device_fndecl_21555 smscore_register_device fndecl 0 21555 NULL
135425 +disable_so___erst_read_to_erange_fndecl_21558 __erst_read_to_erange fndecl 0 21558 NULL
135426 +disable_so_smscore_load_firmware_from_file_fndecl_21561 smscore_load_firmware_from_file fndecl 0 21561 NULL
135427 +disable_so_init_queue_fndecl_21563 init_queue fndecl 0 21563 NULL
135428 +disable_so_snd_seq_ioctl_get_queue_client_fndecl_21564 snd_seq_ioctl_get_queue_client fndecl 0 21564 NULL
135429 +disable_so_ocfs2_steal_inode_fndecl_21569 ocfs2_steal_inode fndecl 0 21569 NULL
135430 +disable_so_dma_mask_snd_emu10k1_21570 dma_mask snd_emu10k1 0 21570 NULL
135431 +disable_so_start_resource_21572 start resource 0 21572 NULL
135432 +disable_so_s2255_probe_fndecl_21578 s2255_probe fndecl 0 21578 NULL
135433 +disable_so_pcie_flr_fndecl_21585 pcie_flr fndecl 0 21585 NULL
135434 +disable_so_xfs_buf_map_from_irec_fndecl_21587 xfs_buf_map_from_irec fndecl 0 21587 NULL
135435 +disable_so_usX2Y_In04_init_fndecl_21591 usX2Y_In04_init fndecl 0 21591 NULL
135436 +disable_so_proc_put_long_fndecl_21603 proc_put_long fndecl 0 21603 NULL
135437 +disable_so__ctl_diag_register_2_fndecl_21605 _ctl_diag_register_2 fndecl 0 21605 NULL
135438 +disable_so_eql_enslave_fndecl_21614 eql_enslave fndecl 0 21614 NULL
135439 +disable_so_ceph_x_init_fndecl_21629 ceph_x_init fndecl 0 21629 NULL
135440 +disable_so_dquot_alloc_inode_fndecl_21630 dquot_alloc_inode fndecl 0 21630 NULL
135441 +disable_so_set_array_info_fndecl_21631 set_array_info fndecl 0 21631 NULL
135442 +disable_so_lbs_start_card_fndecl_21633 lbs_start_card fndecl 0 21633 NULL
135443 +disable_so_dev_pm_qos_expose_flags_fndecl_21638 dev_pm_qos_expose_flags fndecl 0 21638 NULL
135444 +disable_so_ieee80211_register_hw_fndecl_21643 ieee80211_register_hw fndecl 0 21643 NULL
135445 +disable_so_machine_constraints_current_fndecl_21662 machine_constraints_current fndecl 0 21662 NULL
135446 +disable_so_overlay_cap_left_vivid_dev_21663 overlay_cap_left vivid_dev 0 21663 NULL
135447 +disable_so_widget_tree_create_fndecl_21677 widget_tree_create fndecl 0 21677 NULL
135448 +disable_so_resync_max_sectors_mddev_21693 resync_max_sectors mddev 0 21693 NULL
135449 +disable_so_nilfs_palloc_get_desc_block_fndecl_21696 nilfs_palloc_get_desc_block fndecl 0 21696 NULL
135450 +disable_so_btc_dpm_init_fndecl_21698 btc_dpm_init fndecl 0 21698 NULL
135451 +disable_so_bond_master_upper_dev_link_fndecl_21701 bond_master_upper_dev_link fndecl 0 21701 NULL
135452 +disable_so_ext4_get_inode_loc_fndecl_21703 ext4_get_inode_loc fndecl 0 21703 NULL
135453 +disable_so_nfsacl_encode_fndecl_21708 nfsacl_encode fndecl 0 21708 NULL
135454 +disable_so_blk_rq_unmap_user_fndecl_21714 blk_rq_unmap_user fndecl 0 21714 NULL
135455 +disable_so_ieee80211_prep_connection_fndecl_21718 ieee80211_prep_connection fndecl 0 21718 NULL
135456 +disable_so_dvb_usb_i2c_init_fndecl_21725 dvb_usb_i2c_init fndecl 0 21725 NULL
135457 +disable_so_ata_host_start_fndecl_21730 ata_host_start fndecl 0 21730 NULL
135458 +disable_so_ceph_crypto_key_clone_fndecl_21734 ceph_crypto_key_clone fndecl 0 21734 NULL
135459 +disable_so_moxa_load_fw_fndecl_21739 moxa_load_fw fndecl 0 21739 NULL
135460 +disable_so_ocrdma_mbx_cmd_fndecl_21740 ocrdma_mbx_cmd fndecl 0 21740 NULL
135461 +disable_so_sdricoh_blockio_fndecl_21744 sdricoh_blockio fndecl 0 21744 NULL
135462 +disable_so___ceph_setxattr_fndecl_21751 __ceph_setxattr fndecl 0 21751 NULL
135463 +disable_so_regmap_get_val_bytes_fndecl_21774 regmap_get_val_bytes fndecl 0 21774 NULL
135464 +disable_so_find_group_dir_fndecl_21790 find_group_dir fndecl 0 21790 NULL
135465 +disable_so_idetape_chrdev_read_fndecl_21794 idetape_chrdev_read fndecl 0 21794 NULL
135466 +disable_so_set_unlock_args_fndecl_21795 set_unlock_args fndecl 0 21795 NULL
135467 +disable_so_ecryptfs_encrypt_and_encode_filename_fndecl_21806 ecryptfs_encrypt_and_encode_filename fndecl 0 21806 NULL
135468 +disable_so_snd_pcm_plug_slave_format_fndecl_21831 snd_pcm_plug_slave_format fndecl 0 21831 NULL
135469 +disable_so_i40e_vsi_alloc_arrays_fndecl_21833 i40e_vsi_alloc_arrays fndecl 0 21833 NULL
135470 +disable_so_submit_single_step_set_feature_fndecl_21835 submit_single_step_set_feature fndecl 0 21835 NULL
135471 +disable_so_bond_slave_info_query_fndecl_21839 bond_slave_info_query fndecl 0 21839 NULL
135472 +disable_so_brcmf_set_wsec_mode_fndecl_21841 brcmf_set_wsec_mode fndecl 0 21841 NULL
135473 +disable_so_snd_interval_refine_last_fndecl_21852 snd_interval_refine_last fndecl 0 21852 NULL
135474 +disable_so_rtsx_pci_transfer_data_fndecl_21860 rtsx_pci_transfer_data fndecl 0 21860 NULL
135475 +disable_so__ore_get_io_state_fndecl_21861 _ore_get_io_state fndecl 0 21861 NULL
135476 +disable_so_ore_read_fndecl_21868 ore_read fndecl 0 21868 NULL
135477 +disable_so_sizeimage_vim2m_q_data_21875 sizeimage vim2m_q_data 0 21875 NULL
135478 +disable_so_mlx4_init_icm_table_fndecl_21876 mlx4_init_icm_table fndecl 0 21876 NULL
135479 +disable_so_mtip_block_initialize_fndecl_21877 mtip_block_initialize fndecl 0 21877 NULL
135480 +disable_so__drbd_send_page_fndecl_21886 _drbd_send_page fndecl 0 21886 NULL
135481 +disable_so_cbq_change_class_fndecl_21887 cbq_change_class fndecl 0 21887 NULL
135482 +disable_so_wl1271_acx_init_mem_config_fndecl_21892 wl1271_acx_init_mem_config fndecl 0 21892 NULL
135483 +disable_so_netdev_master_upper_dev_link_fndecl_21901 netdev_master_upper_dev_link fndecl 0 21901 NULL
135484 +disable_so_inftl_scan_bbt_fndecl_21903 inftl_scan_bbt fndecl 0 21903 NULL
135485 +disable_so_sym_compute_residual_fndecl_21916 sym_compute_residual fndecl 0 21916 NULL
135486 +disable_so_iwl_wait_notification_fndecl_21920 iwl_wait_notification fndecl 0 21920 NULL
135487 +disable_so_membase_pm8001_hba_memspace_21924 membase pm8001_hba_memspace 0 21924 NULL
135488 +disable_so_error_memstick_request_21931 error memstick_request 0 21931 NULL
135489 +disable_so_ocfs2_compute_replay_slots_fndecl_21944 ocfs2_compute_replay_slots fndecl 0 21944 NULL
135490 +disable_so_do_update_counters_fndecl_21952 do_update_counters fndecl 0 21952 NULL
135491 +disable_so_con_font_copy_fndecl_21954 con_font_copy fndecl 0 21954 NULL
135492 +disable_so_sel_write_avc_cache_threshold_fndecl_21955 sel_write_avc_cache_threshold fndecl 0 21955 NULL
135493 +disable_so___ocfs2_journal_access_fndecl_21970 __ocfs2_journal_access fndecl 0 21970 NULL
135494 +disable_so_nand_erase_nand_fndecl_21971 nand_erase_nand fndecl 0 21971 NULL nohasharray
135495 +disable_so_r600_do_cp_idle_fndecl_21971 r600_do_cp_idle fndecl 0 21971 &disable_so_nand_erase_nand_fndecl_21971
135496 +disable_so_mlx4_buddy_init_fndecl_21975 mlx4_buddy_init fndecl 0 21975 NULL
135497 +disable_so_mwifiex_scan_specific_ssid_fndecl_21976 mwifiex_scan_specific_ssid fndecl 0 21976 NULL
135498 +disable_so_length_ib_sge_22002 length ib_sge 0 22002 NULL
135499 +disable_so__iwl_mvm_enable_beacon_filter_fndecl_22004 _iwl_mvm_enable_beacon_filter fndecl 0 22004 NULL
135500 +disable_so_vmci_resource_add_fndecl_22007 vmci_resource_add fndecl 0 22007 NULL
135501 +disable_so_udf_get_last_block_fndecl_22014 udf_get_last_block fndecl 0 22014 NULL
135502 +disable_so_wait_for_avail_fndecl_22028 wait_for_avail fndecl 0 22028 NULL
135503 +disable_so_lpfc_config_port_post_fndecl_22037 lpfc_config_port_post fndecl 0 22037 NULL nohasharray
135504 +disable_so_wusbhc_mmcie_set_fndecl_22037 wusbhc_mmcie_set fndecl 0 22037 &disable_so_lpfc_config_port_post_fndecl_22037
135505 +disable_so_dm_exception_store_set_chunk_size_fndecl_22042 dm_exception_store_set_chunk_size fndecl 0 22042 NULL
135506 +disable_so_hsr_portdev_setup_fndecl_22044 hsr_portdev_setup fndecl 0 22044 NULL
135507 +disable_so_result_wacom_22052 result wacom 0 22052 NULL
135508 +disable_so_efx_mcdi_reset_fndecl_22053 efx_mcdi_reset fndecl 0 22053 NULL
135509 +disable_so_pcxhr_check_reg_bit_fndecl_22067 pcxhr_check_reg_bit fndecl 0 22067 NULL nohasharray
135510 +disable_so_rom_base_qxl_device_22067 rom_base qxl_device 0 22067 &disable_so_pcxhr_check_reg_bit_fndecl_22067
135511 +disable_so_proc_init_fndecl_22093 proc_init fndecl 0 22093 NULL
135512 +disable_so_mlx5_ib_query_srq_fndecl_22103 mlx5_ib_query_srq fndecl 0 22103 NULL
135513 +disable_so_sw_connect_fndecl_22111 sw_connect fndecl 0 22111 NULL
135514 +disable_so_mls_from_string_fndecl_22113 mls_from_string fndecl 0 22113 NULL
135515 +disable_so_hotkey_status_set_fndecl_22123 hotkey_status_set fndecl 0 22123 NULL
135516 +disable_so_softing_pdev_probe_fndecl_22126 softing_pdev_probe fndecl 0 22126 NULL
135517 +disable_so_ore_check_io_fndecl_22131 ore_check_io fndecl 0 22131 NULL
135518 +disable_so_nfs_idmap_prepare_message_fndecl_22147 nfs_idmap_prepare_message fndecl 0 22147 NULL
135519 +disable_so_nl80211_set_coalesce_fndecl_22166 nl80211_set_coalesce fndecl 0 22166 NULL nohasharray
135520 +disable_so_netlbl_domhsh_add_default_fndecl_22166 netlbl_domhsh_add_default fndecl 0 22166 &disable_so_nl80211_set_coalesce_fndecl_22166
135521 +disable_so_vb2_queue_or_prepare_buf_fndecl_22189 vb2_queue_or_prepare_buf fndecl 0 22189 NULL
135522 +disable_so_set_vmixer_gain_fndecl_22193 set_vmixer_gain fndecl 0 22193 NULL
135523 +disable_so_wdt_get_status_fndecl_22200 wdt_get_status fndecl 0 22200 NULL
135524 +disable_so_usbnet_cdc_bind_fndecl_22214 usbnet_cdc_bind fndecl 0 22214 NULL
135525 +disable_so_ipack_device_init_fndecl_22230 ipack_device_init fndecl 0 22230 NULL nohasharray
135526 +disable_so_asd_ms_get_connector_map_fndecl_22230 asd_ms_get_connector_map fndecl 0 22230 &disable_so_ipack_device_init_fndecl_22230
135527 +disable_so_do_dmabuf_dirty_sou_fndecl_22234 do_dmabuf_dirty_sou fndecl 0 22234 NULL
135528 +disable_so_btrfs_add_block_group_cache_fndecl_22235 btrfs_add_block_group_cache fndecl 0 22235 NULL
135529 +disable_so_cx231xx_init_audio_isoc_fndecl_22238 cx231xx_init_audio_isoc fndecl 0 22238 NULL
135530 +disable_so_st_flush_write_buffer_fndecl_22242 st_flush_write_buffer fndecl 0 22242 NULL
135531 +disable_so_mwl8k_post_cmd_fndecl_22243 mwl8k_post_cmd fndecl 0 22243 NULL
135532 +disable_so_hfsplus_asc2uni_fndecl_22252 hfsplus_asc2uni fndecl 0 22252 NULL
135533 +disable_so_qp_alloc_ppn_set_fndecl_22255 qp_alloc_ppn_set fndecl 0 22255 NULL
135534 +disable_so___tty_perform_flush_fndecl_22259 __tty_perform_flush fndecl 0 22259 NULL
135535 +disable_so_first_logical_byte_btrfs_fs_info_22264 first_logical_byte btrfs_fs_info 0 22264 NULL
135536 +disable_so_mwl8k_post_pervif_cmd_fndecl_22265 mwl8k_post_pervif_cmd fndecl 0 22265 NULL
135537 +disable_so_smsc75xx_reset_fndecl_22270 smsc75xx_reset fndecl 0 22270 NULL
135538 +disable_so_snd_ice1712_ews88mt_chip_select_fndecl_22272 snd_ice1712_ews88mt_chip_select fndecl 0 22272 NULL
135539 +disable_so_rsxx_creg_setup_fndecl_22276 rsxx_creg_setup fndecl 0 22276 NULL
135540 +disable_so_eni_init_one_fndecl_22281 eni_init_one fndecl 0 22281 NULL
135541 +disable_so_mspro_block_wait_for_ced_fndecl_22282 mspro_block_wait_for_ced fndecl 0 22282 NULL
135542 +disable_so_gsmld_config_fndecl_22287 gsmld_config fndecl 0 22287 NULL
135543 +disable_so_ilo_ccb_setup_fndecl_22289 ilo_ccb_setup fndecl 0 22289 NULL
135544 +disable_so_sn9c2028_read4_fndecl_22290 sn9c2028_read4 fndecl 0 22290 NULL
135545 +disable_so_csio_hw_flash_wait_op_fndecl_22298 csio_hw_flash_wait_op fndecl 0 22298 NULL
135546 +disable_so_pcm_sanity_check_fndecl_22301 pcm_sanity_check fndecl 0 22301 NULL
135547 +disable_so_cb710_mmc_receive_fndecl_22303 cb710_mmc_receive fndecl 0 22303 NULL
135548 +disable_so_i40e_aq_get_switch_config_fndecl_22308 i40e_aq_get_switch_config fndecl 0 22308 NULL
135549 +disable_so_ns_init_module_fndecl_22310 ns_init_module fndecl 0 22310 NULL
135550 +disable_so_isac_ale_ix1_hw_22313 isac_ale ix1_hw 0 22313 NULL
135551 +disable_so_decode_sessionid_fndecl_22317 decode_sessionid fndecl 0 22317 NULL
135552 +disable_so_snd_asihpi_volume_add_fndecl_22318 snd_asihpi_volume_add fndecl 0 22318 NULL
135553 +disable_so_cx8802_register_driver_fndecl_22323 cx8802_register_driver fndecl 0 22323 NULL
135554 +disable_so_xen_upload_processor_pm_data_fndecl_22332 xen_upload_processor_pm_data fndecl 0 22332 NULL nohasharray
135555 +disable_so_mod_init_fndecl_22332 mod_init fndecl 0 22332 &disable_so_xen_upload_processor_pm_data_fndecl_22332
135556 +disable_so_do_flash_update_fndecl_22336 do_flash_update fndecl 0 22336 NULL
135557 +disable_so_f2fs_getxattr_fndecl_22337 f2fs_getxattr fndecl 0 22337 NULL
135558 +disable_so_xfs_bulkstat_fndecl_22342 xfs_bulkstat fndecl 0 22342 NULL
135559 +disable_so_lpfc_sli_config_port_fndecl_22351 lpfc_sli_config_port fndecl 0 22351 NULL
135560 +disable_so_tlv_put_string_fndecl_22356 tlv_put_string fndecl 0 22356 NULL
135561 +disable_so_wl1251_acx_bet_enable_fndecl_22357 wl1251_acx_bet_enable fndecl 0 22357 NULL
135562 +disable_so_genwqe_alloc_sync_sgl_fndecl_22358 genwqe_alloc_sync_sgl fndecl 0 22358 NULL
135563 +disable_so_kvm_send_userspace_msi_fndecl_22362 kvm_send_userspace_msi fndecl 0 22362 NULL
135564 +disable_so__proc_do_string_fndecl_22363 _proc_do_string fndecl 0 22363 NULL
135565 +disable_so_jbd2_journal_wipe_fndecl_22380 jbd2_journal_wipe fndecl 0 22380 NULL
135566 +disable_so_wl1251_acx_arp_ip_filter_fndecl_22386 wl1251_acx_arp_ip_filter fndecl 0 22386 NULL
135567 +disable_so_ath6kl_bmi_lz_data_fndecl_22397 ath6kl_bmi_lz_data fndecl 0 22397 NULL
135568 +disable_so_btrfs_finish_chunk_alloc_fndecl_22400 btrfs_finish_chunk_alloc fndecl 0 22400 NULL
135569 +disable_so___load_free_space_cache_fndecl_22402 __load_free_space_cache fndecl 0 22402 NULL
135570 +disable_so_btc_copy_vbios_mc_reg_table_fndecl_22406 btc_copy_vbios_mc_reg_table fndecl 0 22406 NULL
135571 +disable_so_twl4030_init_sih_modules_fndecl_22411 twl4030_init_sih_modules fndecl 0 22411 NULL nohasharray
135572 +disable_so_parse_badblocks_fndecl_22411 parse_badblocks fndecl 0 22411 &disable_so_twl4030_init_sih_modules_fndecl_22411
135573 +disable_so_t4_flash_erase_sectors_fndecl_22412 t4_flash_erase_sectors fndecl 0 22412 NULL
135574 +disable_so_gpiod_direction_input_fndecl_22413 gpiod_direction_input fndecl 0 22413 NULL
135575 +disable_so_zatm_init_fndecl_22419 zatm_init fndecl 0 22419 NULL
135576 +disable_so_qgroup_subtree_accounting_fndecl_22437 qgroup_subtree_accounting fndecl 0 22437 NULL
135577 +disable_so_s5p_mfc_init_hw_fndecl_22440 s5p_mfc_init_hw fndecl 0 22440 NULL
135578 +disable_so_mon_bin_ioctl_fndecl_22464 mon_bin_ioctl fndecl 0 22464 NULL
135579 +disable_so_vmbus_sendpacket_fndecl_22469 vmbus_sendpacket fndecl 0 22469 NULL nohasharray
135580 +disable_so_drm_crtc_convert_umode_fndecl_22469 drm_crtc_convert_umode fndecl 0 22469 &disable_so_vmbus_sendpacket_fndecl_22469
135581 +disable_so_dn_dev_insert_ifa_fndecl_22474 dn_dev_insert_ifa fndecl 0 22474 NULL
135582 +disable_so_s_data_blksize_affs_sb_info_22478 s_data_blksize affs_sb_info 0 22478 NULL
135583 +disable_so_validate_lock_args_fndecl_22479 validate_lock_args fndecl 0 22479 NULL
135584 +disable_so_find_group_other_fndecl_22490 find_group_other fndecl 0 22490 NULL
135585 +disable_so_cciss_allocate_cmd_pool_fndecl_22492 cciss_allocate_cmd_pool fndecl 0 22492 NULL
135586 +disable_so_mxt_prepare_cfg_mem_fndecl_22499 mxt_prepare_cfg_mem fndecl 0 22499 NULL
135587 +disable_so_pccard_read_tuple_fndecl_22506 pccard_read_tuple fndecl 0 22506 NULL
135588 +disable_so_matroxfb_enable_irq_fndecl_22511 matroxfb_enable_irq fndecl 0 22511 NULL
135589 +disable_so_ext4_check_all_de_fndecl_22527 ext4_check_all_de fndecl 0 22527 NULL nohasharray
135590 +disable_so_vnic_dev_spec_fndecl_22527 vnic_dev_spec fndecl 0 22527 &disable_so_ext4_check_all_de_fndecl_22527
135591 +disable_so_build_sit_info_fndecl_22528 build_sit_info fndecl 0 22528 NULL
135592 +disable_so_sdio_enable_func_fndecl_22530 sdio_enable_func fndecl 0 22530 NULL
135593 +disable_so_count_pch_gbe_tx_ring_22534 count pch_gbe_tx_ring 0 22534 NULL
135594 +disable_so_user_read_fndecl_22553 user_read fndecl 0 22553 NULL nohasharray
135595 +disable_so_ath6kl_sdio_config_fndecl_22553 ath6kl_sdio_config fndecl 0 22553 &disable_so_user_read_fndecl_22553
135596 +disable_so_max_frame_size_pch_gbe_mac_info_22562 max_frame_size pch_gbe_mac_info 0 22562 NULL
135597 +disable_so_mwifiex_init_sdio_fndecl_22563 mwifiex_init_sdio fndecl 0 22563 NULL
135598 +disable_so_btrfs_trim_fs_fndecl_22579 btrfs_trim_fs fndecl 0 22579 NULL
135599 +disable_so_e1000e_config_hwtstamp_fndecl_22585 e1000e_config_hwtstamp fndecl 0 22585 NULL
135600 +disable_so_push_node_left_fndecl_22588 push_node_left fndecl 0 22588 NULL
135601 +disable_so_c4iw_rdev_open_fndecl_22593 c4iw_rdev_open fndecl 0 22593 NULL
135602 +disable_so_snd_seq_ioctl_set_client_pool_fndecl_22601 snd_seq_ioctl_set_client_pool fndecl 0 22601 NULL
135603 +disable_so_lpfc_bsg_read_ebuf_get_fndecl_22602 lpfc_bsg_read_ebuf_get fndecl 0 22602 NULL
135604 +disable_so_brcmf_fil_cmd_data_get_fndecl_22605 brcmf_fil_cmd_data_get fndecl 0 22605 NULL
135605 +disable_so_snd_pcm_lib_write1_fndecl_22621 snd_pcm_lib_write1 fndecl 0 22621 NULL
135606 +disable_so_em28xx_set_audio_source_fndecl_22623 em28xx_set_audio_source fndecl 0 22623 NULL
135607 +disable_so_try_to_bring_up_master_fndecl_22629 try_to_bring_up_master fndecl 0 22629 NULL nohasharray
135608 +disable_so_channels_snd_pcm_oss_runtime_22629 channels snd_pcm_oss_runtime 0 22629 &disable_so_try_to_bring_up_master_fndecl_22629
135609 +disable_so_buf_height_s5p_mfc_ctx_22637 buf_height s5p_mfc_ctx 0 22637 NULL
135610 +disable_so_snd_hdspm_create_midi_fndecl_22643 snd_hdspm_create_midi fndecl 0 22643 NULL
135611 +disable_so_hci_inquiry_fndecl_22647 hci_inquiry fndecl 0 22647 NULL
135612 +disable_so_tg3_nvram_write_block_buffered_fndecl_22652 tg3_nvram_write_block_buffered fndecl 0 22652 NULL
135613 +disable_so_em_meta_change_fndecl_22662 em_meta_change fndecl 0 22662 NULL
135614 +disable_so_cpia2_read_fndecl_22665 cpia2_read fndecl 0 22665 NULL
135615 +disable_so_mlx4_WRITE_ENTRY_fndecl_22673 mlx4_WRITE_ENTRY fndecl 0 22673 NULL
135616 +disable_so_install_resident_loader_fndecl_22681 install_resident_loader fndecl 0 22681 NULL
135617 +disable_so_smk_parse_long_rule_fndecl_22694 smk_parse_long_rule fndecl 0 22694 NULL
135618 +disable_so_len_vring_desc_22700 len vring_desc 0 22700 NULL
135619 +disable_so_btrfs_insert_file_extent_fndecl_22702 btrfs_insert_file_extent fndecl 0 22702 NULL
135620 +disable_so_kernfs_name_hash_fndecl_22704 kernfs_name_hash fndecl 0 22704 NULL
135621 +disable_so_tail_inbuf_t_22719 tail inbuf_t 0 22719 NULL
135622 +disable_so_iwl_dbgfs_bt_tx_prio_write_fndecl_22726 iwl_dbgfs_bt_tx_prio_write fndecl 0 22726 NULL
135623 +disable_so_intel_ctrl_x86_pmu_22729 intel_ctrl x86_pmu 0 22729 NULL
135624 +disable_so_fpregs_set_fndecl_22730 fpregs_set fndecl 0 22730 NULL
135625 +disable_so_samsung_sabi_init_fndecl_22743 samsung_sabi_init fndecl 0 22743 NULL
135626 +disable_so_drm_fb_helper_single_add_all_connectors_fndecl_22752 drm_fb_helper_single_add_all_connectors fndecl 0 22752 NULL
135627 +disable_so_addr6_resolve_fndecl_22753 addr6_resolve fndecl 0 22753 NULL
135628 +disable_so_ocfs2_alloc_dinode_update_counts_fndecl_22768 ocfs2_alloc_dinode_update_counts fndecl 0 22768 NULL
135629 +disable_so_myri10ge_validate_firmware_fndecl_22784 myri10ge_validate_firmware fndecl 0 22784 NULL
135630 +disable_so_radio_tea5777_init_fndecl_22794 radio_tea5777_init fndecl 0 22794 NULL
135631 +disable_so_vmw_fence_create_fndecl_22798 vmw_fence_create fndecl 0 22798 NULL
135632 +disable_so_c2_qp_set_read_limits_fndecl_22801 c2_qp_set_read_limits fndecl 0 22801 NULL
135633 +disable_so___cpuidle_register_driver_fndecl_22806 __cpuidle_register_driver fndecl 0 22806 NULL
135634 +disable_so_adis_update_scan_mode_fndecl_22812 adis_update_scan_mode fndecl 0 22812 NULL
135635 +disable_so_snd_es1968_create_fndecl_22817 snd_es1968_create fndecl 0 22817 NULL
135636 +disable_so_writeout_fndecl_22818 writeout fndecl 0 22818 NULL nohasharray
135637 +disable_so_mlx4_create_eq_fndecl_22818 mlx4_create_eq fndecl 0 22818 &disable_so_writeout_fndecl_22818
135638 +disable_so_snd_vortex_create_fndecl_22822 snd_vortex_create fndecl 0 22822 NULL
135639 +disable_so_brcmf_bss_roaming_done_fndecl_22832 brcmf_bss_roaming_done fndecl 0 22832 NULL
135640 +disable_so_hiddev_ioctl_string_fndecl_22841 hiddev_ioctl_string fndecl 0 22841 NULL
135641 +disable_so_vnic_dev_get_mac_addr_fndecl_22860 vnic_dev_get_mac_addr fndecl 0 22860 NULL
135642 +disable_so_b43legacy_phy_versioning_fndecl_22862 b43legacy_phy_versioning fndecl 0 22862 NULL nohasharray
135643 +disable_so_sst_fill_and_send_cmd_unlocked_fndecl_22862 sst_fill_and_send_cmd_unlocked fndecl 0 22862 &disable_so_b43legacy_phy_versioning_fndecl_22862
135644 +disable_so_xfs_growfs_data_private_fndecl_22868 xfs_growfs_data_private fndecl 0 22868 NULL
135645 +disable_so_objectid_btrfs_key_22871 objectid btrfs_key 0 22871 NULL
135646 +disable_so_regulatory_hint_found_beacon_fndecl_22881 regulatory_hint_found_beacon fndecl 0 22881 NULL
135647 +disable_so_mpt3sas_base_map_resources_fndecl_22882 mpt3sas_base_map_resources fndecl 0 22882 NULL nohasharray
135648 +disable_so_max_wrs_rds_iw_device_22882 max_wrs rds_iw_device 0 22882 &disable_so_mpt3sas_base_map_resources_fndecl_22882
135649 +disable_so_snd_hdsp_load_firmware_from_cache_fndecl_22903 snd_hdsp_load_firmware_from_cache fndecl 0 22903 NULL nohasharray
135650 +disable_so_snd_azf3328_create_fndecl_22903 snd_azf3328_create fndecl 0 22903 &disable_so_snd_hdsp_load_firmware_from_cache_fndecl_22903
135651 +disable_so_receive_SyncParam_fndecl_22905 receive_SyncParam fndecl 0 22905 NULL
135652 +disable_so_membase_phys_efx_nic_22907 membase_phys efx_nic 0 22907 NULL
135653 +disable_so__nfs4_proc_exchange_id_fndecl_22910 _nfs4_proc_exchange_id fndecl 0 22910 NULL
135654 +disable_so_port100_send_frame_async_fndecl_22927 port100_send_frame_async fndecl 0 22927 NULL
135655 +disable_so_create_hw_obj_fndecl_22932 create_hw_obj fndecl 0 22932 NULL
135656 +disable_so_ssb_pcihost_probe_fndecl_22936 ssb_pcihost_probe fndecl 0 22936 NULL
135657 +disable_so_usb_parse_interface_fndecl_22946 usb_parse_interface fndecl 0 22946 NULL
135658 +disable_so_check_overlay_dst_fndecl_22951 check_overlay_dst fndecl 0 22951 NULL
135659 +disable_so_lpfc_fof_queue_setup_fndecl_22955 lpfc_fof_queue_setup fndecl 0 22955 NULL
135660 +disable_so_hid_pidff_init_fndecl_22958 hid_pidff_init fndecl 0 22958 NULL
135661 +disable_so_pb0100_init_controls_fndecl_22964 pb0100_init_controls fndecl 0 22964 NULL
135662 +disable_so_alloc_seq_queue_fndecl_22971 alloc_seq_queue fndecl 0 22971 NULL
135663 +disable_so_port_rcvegrbuf_chunks_ipath_portdata_22973 port_rcvegrbuf_chunks ipath_portdata 0 22973 NULL
135664 +disable_so___mlx4_register_vlan_fndecl_22985 __mlx4_register_vlan fndecl 0 22985 NULL
135665 +disable_so_acpi_battery_write_alarm_fndecl_22987 acpi_battery_write_alarm fndecl 0 22987 NULL
135666 +disable_so_snd_hdac_read_fndecl_22990 snd_hdac_read fndecl 0 22990 NULL
135667 +disable_so_ufx_lite_reset_fndecl_22992 ufx_lite_reset fndecl 0 22992 NULL
135668 +disable_so_mlx4_table_get_fndecl_22993 mlx4_table_get fndecl 0 22993 NULL
135669 +disable_so_dvb_register_adapter_fndecl_23000 dvb_register_adapter fndecl 0 23000 NULL
135670 +disable_so_xhci_check_maxpacket_fndecl_23002 xhci_check_maxpacket fndecl 0 23002 NULL
135671 +disable_so_rocker_group_l2_fan_out_fndecl_23010 rocker_group_l2_fan_out fndecl 0 23010 NULL
135672 +disable_so_open_inline_log_fndecl_23021 open_inline_log fndecl 0 23021 NULL
135673 +disable_so_qlcnic_sriov_alloc_bc_mbx_args_fndecl_23042 qlcnic_sriov_alloc_bc_mbx_args fndecl 0 23042 NULL
135674 +disable_so_trailen_authenc_esn_request_ctx_23047 trailen authenc_esn_request_ctx 0 23047 NULL
135675 +disable_so_i40e_allocate_dma_mem_d_fndecl_23049 i40e_allocate_dma_mem_d fndecl 0 23049 NULL
135676 +disable_so_mpt3sas_config_get_volume_handle_fndecl_23053 mpt3sas_config_get_volume_handle fndecl 0 23053 NULL
135677 +disable_so_genfs_read_fndecl_23054 genfs_read fndecl 0 23054 NULL
135678 +disable_so_shdma_setup_slave_fndecl_23060 shdma_setup_slave fndecl 0 23060 NULL
135679 +disable_so_mmc_test_area_fill_fndecl_23061 mmc_test_area_fill fndecl 0 23061 NULL
135680 +disable_so_ni_populate_sclk_value_fndecl_23068 ni_populate_sclk_value fndecl 0 23068 NULL
135681 +disable_so_to_clkrc_fndecl_23074 to_clkrc fndecl 0 23074 NULL
135682 +disable_so_bnx2_nvram_erase_page_fndecl_23079 bnx2_nvram_erase_page fndecl 0 23079 NULL
135683 +disable_so_set_lcd_brightness_fndecl_23092 set_lcd_brightness fndecl 0 23092 NULL
135684 +disable_so_bnx2x_nvram_read32_fndecl_23100 bnx2x_nvram_read32 fndecl 0 23100 NULL
135685 +disable_so_warrior_connect_fndecl_23115 warrior_connect fndecl 0 23115 NULL
135686 +disable_so_snd_cs4281_create_fndecl_23120 snd_cs4281_create fndecl 0 23120 NULL
135687 +disable_so_sq_max_sges_c4iw_qp_attributes_23123 sq_max_sges c4iw_qp_attributes 0 23123 NULL
135688 +disable_so_cx231xx_init_audio_bulk_fndecl_23133 cx231xx_init_audio_bulk fndecl 0 23133 NULL
135689 +disable_so_thin_ctr_fndecl_23135 thin_ctr fndecl 0 23135 NULL
135690 +disable_so_rtsx_usb_ms_issue_cmd_fndecl_23136 rtsx_usb_ms_issue_cmd fndecl 0 23136 NULL
135691 +disable_so_mxr_acquire_plat_resources_fndecl_23150 mxr_acquire_plat_resources fndecl 0 23150 NULL
135692 +disable_so_dvb_usb_adapter_dvb_init_fndecl_23152 dvb_usb_adapter_dvb_init fndecl 0 23152 NULL nohasharray
135693 +disable_so_sock_getsockopt_fndecl_23152 sock_getsockopt fndecl 0 23152 &disable_so_dvb_usb_adapter_dvb_init_fndecl_23152
135694 +disable_so_memblock_alloc_base_fndecl_23169 memblock_alloc_base fndecl 0 23169 NULL nohasharray
135695 +disable_so_MaxIoCommands_aac_init_23169 MaxIoCommands aac_init 0 23169 &disable_so_memblock_alloc_base_fndecl_23169
135696 +disable_so_xfs_sb_verify_fndecl_23173 xfs_sb_verify fndecl 0 23173 NULL
135697 +disable_so_nvif_object_sclass_fndecl_23175 nvif_object_sclass fndecl 0 23175 NULL
135698 +disable_so_dvbv3_set_delivery_system_fndecl_23206 dvbv3_set_delivery_system fndecl 0 23206 NULL
135699 +disable_so___logfs_delete_fndecl_23208 __logfs_delete fndecl 0 23208 NULL
135700 +disable_so_ttusb_probe_fndecl_23217 ttusb_probe fndecl 0 23217 NULL
135701 +disable_so___assign_irq_vector_fndecl_23226 __assign_irq_vector fndecl 0 23226 NULL
135702 +disable_so__major_vardecl_dm_c_23233 _major vardecl_dm.c 0 23233 NULL
135703 +disable_so_usb_get_status_fndecl_23239 usb_get_status fndecl 0 23239 NULL
135704 +disable_so_dir_per_block_bits_msdos_sb_info_23245 dir_per_block_bits msdos_sb_info 0 23245 NULL
135705 +disable_so_ebitmap_read_fndecl_23268 ebitmap_read fndecl 0 23268 NULL
135706 +disable_so_adi_connect_fndecl_23270 adi_connect fndecl 0 23270 NULL
135707 +disable_so_snd_compr_get_metadata_fndecl_23281 snd_compr_get_metadata fndecl 0 23281 NULL
135708 +disable_so_nv50_fence_create_fndecl_23283 nv50_fence_create fndecl 0 23283 NULL
135709 +disable_so_ino_node_info_23289 ino node_info 0 23289 NULL
135710 +disable_so_gsmtty_ioctl_fndecl_23293 gsmtty_ioctl fndecl 0 23293 NULL
135711 +disable_so_device_check_fndecl_23306 device_check fndecl 0 23306 NULL
135712 +disable_so___ww_mutex_lock_interruptible_fndecl_23308 __ww_mutex_lock_interruptible fndecl 0 23308 NULL
135713 +disable_so_default_mtd_writev_fndecl_23319 default_mtd_writev fndecl 0 23319 NULL
135714 +disable_so_snd_timer_global_register_fndecl_23326 snd_timer_global_register fndecl 0 23326 NULL
135715 +disable_so_extent_from_logical_fndecl_23330 extent_from_logical fndecl 0 23330 NULL
135716 +disable_so_ipmi_unregister_for_cmd_fndecl_23336 ipmi_unregister_for_cmd fndecl 0 23336 NULL
135717 +disable_so_smscore_start_device_fndecl_23345 smscore_start_device fndecl 0 23345 NULL
135718 +disable_so_ssu100_open_fndecl_23350 ssu100_open fndecl 0 23350 NULL
135719 +disable_so_pci_iov_virtfn_devfn_fndecl_23353 pci_iov_virtfn_devfn fndecl 0 23353 NULL
135720 +disable_so_ioctl_allocate_fndecl_23355 ioctl_allocate fndecl 0 23355 NULL
135721 +disable_so_bfad_iocmd_handler_fndecl_23357 bfad_iocmd_handler fndecl 0 23357 NULL
135722 +disable_so_vxres_crtc_23359 vxres crtc 0 23359 NULL nohasharray
135723 +disable_so___rtc_set_alarm_fndecl_23359 __rtc_set_alarm fndecl 0 23359 &disable_so_vxres_crtc_23359
135724 +disable_so_wl1271_ap_init_deauth_template_fndecl_23362 wl1271_ap_init_deauth_template fndecl 0 23362 NULL
135725 +disable_so_amd_iommu_domain_enable_v2_fndecl_23368 amd_iommu_domain_enable_v2 fndecl 0 23368 NULL
135726 +disable_so_default_blksize_st_modedef_23371 default_blksize st_modedef 0 23371 NULL
135727 +disable_so_vfio_dma_do_unmap_fndecl_23395 vfio_dma_do_unmap fndecl 0 23395 NULL
135728 +disable_so_tpm_send_fndecl_23396 tpm_send fndecl 0 23396 NULL
135729 +disable_so_ipwireless_attach_fndecl_23403 ipwireless_attach fndecl 0 23403 NULL
135730 +disable_so_numerator_v4l2_fract_23413 numerator v4l2_fract 0 23413 NULL
135731 +disable_so_run_delayed_extent_op_fndecl_23414 run_delayed_extent_op fndecl 0 23414 NULL
135732 +disable_so_rsb_insert_fndecl_23415 rsb_insert fndecl 0 23415 NULL
135733 +disable_so_mlx4_alloc_eq_table_fndecl_23418 mlx4_alloc_eq_table fndecl 0 23418 NULL
135734 +disable_so_max_snd_interval_23422 max snd_interval 0 23422 NULL
135735 +disable_so___qib_get_user_pages_fndecl_23426 __qib_get_user_pages fndecl 0 23426 NULL
135736 +disable_so_mei_cl_recv_fndecl_23442 mei_cl_recv fndecl 0 23442 NULL
135737 +disable_so_sony_nc_thermal_mode_get_fndecl_23443 sony_nc_thermal_mode_get fndecl 0 23443 NULL
135738 +disable_so_ethtool_get_eeprom_fndecl_23446 ethtool_get_eeprom fndecl 0 23446 NULL
135739 +disable_so_seg_size_wa_xfer_23450 seg_size wa_xfer 0 23450 NULL
135740 +disable_so_ocfs2_reserve_new_inode_fndecl_23458 ocfs2_reserve_new_inode fndecl 0 23458 NULL
135741 +disable_so_ufx_blank_fndecl_23464 ufx_blank fndecl 0 23464 NULL
135742 +disable_so_sl811_cs_probe_fndecl_23469 sl811_cs_probe fndecl 0 23469 NULL
135743 +disable_so_drbd_adm_net_opts_fndecl_23471 drbd_adm_net_opts fndecl 0 23471 NULL
135744 +disable_so_hermes_program_fndecl_23485 hermes_program fndecl 0 23485 NULL
135745 +disable_so_cw1200_reg_read_fndecl_23491 cw1200_reg_read fndecl 0 23491 NULL
135746 +disable_so_mptfc_probe_fndecl_23493 mptfc_probe fndecl 0 23493 NULL
135747 +disable_so_iwlagn_suspend_fndecl_23494 iwlagn_suspend fndecl 0 23494 NULL
135748 +disable_so_mxt_read_and_process_messages_fndecl_23502 mxt_read_and_process_messages fndecl 0 23502 NULL
135749 +disable_so_zd1201_getconfig_fndecl_23519 zd1201_getconfig fndecl 0 23519 NULL
135750 +disable_so___genwqe_enqueue_ddcb_fndecl_23525 __genwqe_enqueue_ddcb fndecl 0 23525 NULL
135751 +disable_so_init_irq_fndecl_23530 init_irq fndecl 0 23530 NULL
135752 +disable_so_parse_strings_fndecl_23535 parse_strings fndecl 0 23535 NULL
135753 +disable_so_mem_size_pch_dev_23541 mem_size pch_dev 0 23541 NULL
135754 +disable_so_ebt_size_mwt_fndecl_23547 ebt_size_mwt fndecl 0 23547 NULL nohasharray
135755 +disable_so_blkfront_setup_indirect_fndecl_23547 blkfront_setup_indirect fndecl 0 23547 &disable_so_ebt_size_mwt_fndecl_23547
135756 +disable_so___mlx4_qp_reserve_range_fndecl_23550 __mlx4_qp_reserve_range fndecl 0 23550 NULL nohasharray
135757 +disable_so_inode_no_exofs_dir_entry_23550 inode_no exofs_dir_entry 0 23550 &disable_so___mlx4_qp_reserve_range_fndecl_23550
135758 +disable_so_xfs_dabuf_map_fndecl_23558 xfs_dabuf_map fndecl 0 23558 NULL
135759 +disable_so_ecryptfs_find_global_auth_tok_for_sig_fndecl_23563 ecryptfs_find_global_auth_tok_for_sig fndecl 0 23563 NULL
135760 +disable_so_sctp_assoc_set_bind_addr_from_ep_fndecl_23572 sctp_assoc_set_bind_addr_from_ep fndecl 0 23572 NULL
135761 +disable_so_rx_max_size_cxgbi_device_23582 rx_max_size cxgbi_device 0 23582 NULL
135762 +disable_so_ttusb_dec_start_sec_feed_fndecl_23585 ttusb_dec_start_sec_feed fndecl 0 23585 NULL
135763 +disable_so_tipc_skb_tailroom_fndecl_23586 tipc_skb_tailroom fndecl 0 23586 NULL
135764 +disable_so_wl1251_cmd_interrogate_fndecl_23588 wl1251_cmd_interrogate fndecl 0 23588 NULL
135765 +disable_so_eeprom_ptov_fndecl_23589 eeprom_ptov fndecl 0 23589 NULL nohasharray
135766 +disable_so_platform_device_add_data_fndecl_23589 platform_device_add_data fndecl 0 23589 &disable_so_eeprom_ptov_fndecl_23589
135767 +disable_so_lirc_cdev_add_fndecl_23605 lirc_cdev_add fndecl 0 23605 NULL
135768 +disable_so_i40e_config_asq_regs_fndecl_23608 i40e_config_asq_regs fndecl 0 23608 NULL
135769 +disable_so_snd_rawmidi_info_select_user_fndecl_23616 snd_rawmidi_info_select_user fndecl 0 23616 NULL
135770 +disable_so_send_cmd_write_baud_rate_fndecl_23620 send_cmd_write_baud_rate fndecl 0 23620 NULL
135771 +disable_so_mthca_alloc_fndecl_23622 mthca_alloc fndecl 0 23622 NULL
135772 +disable_so_drbg_seed_fndecl_23631 drbg_seed fndecl 0 23631 NULL
135773 +disable_so_snd_seq_delete_port_fndecl_23633 snd_seq_delete_port fndecl 0 23633 NULL
135774 +disable_so_btrfs_calc_avail_data_space_fndecl_23642 btrfs_calc_avail_data_space fndecl 0 23642 NULL
135775 +disable_so_initio_probe_one_fndecl_23644 initio_probe_one fndecl 0 23644 NULL
135776 +disable_so_map_urb_for_dma_fndecl_23647 map_urb_for_dma fndecl 0 23647 NULL nohasharray
135777 +disable_so_netdev_get_name_fndecl_23647 netdev_get_name fndecl 0 23647 &disable_so_map_urb_for_dma_fndecl_23647
135778 +disable_so_snd_mixart_setup_firmware_fndecl_23657 snd_mixart_setup_firmware fndecl 0 23657 NULL
135779 +disable_so_add_automute_mode_enum_fndecl_23665 add_automute_mode_enum fndecl 0 23665 NULL nohasharray
135780 +disable_so_DMAbuf_getrdbuffer_fndecl_23665 DMAbuf_getrdbuffer fndecl 0 23665 &disable_so_add_automute_mode_enum_fndecl_23665
135781 +disable_so_if_spi_prog_main_firmware_fndecl_23674 if_spi_prog_main_firmware fndecl 0 23674 NULL nohasharray
135782 +disable_so_mlx5_core_access_reg_fndecl_23674 mlx5_core_access_reg fndecl 0 23674 &disable_so_if_spi_prog_main_firmware_fndecl_23674
135783 +disable_so_ebitmap_cpy_fndecl_23688 ebitmap_cpy fndecl 0 23688 NULL
135784 +disable_so___bitmap_parselist_fndecl_23689 __bitmap_parselist fndecl 0 23689 NULL nohasharray
135785 +disable_so_aio_read_events_ring_fndecl_23689 aio_read_events_ring fndecl 0 23689 &disable_so___bitmap_parselist_fndecl_23689 nohasharray
135786 +disable_so_vnic_dev_init_fndecl_23689 vnic_dev_init fndecl 0 23689 &disable_so_aio_read_events_ring_fndecl_23689
135787 +disable_so_size_ubifs_ino_node_23699 size ubifs_ino_node 0 23699 NULL
135788 +disable_so_interrupt_out_endpoint_size_ld_usb_23705 interrupt_out_endpoint_size ld_usb 0 23705 NULL
135789 +disable_so_gp2ap020a00f_exec_cmd_fndecl_23708 gp2ap020a00f_exec_cmd fndecl 0 23708 NULL
135790 +disable_so_drm_atomic_plane_get_property_fndecl_23712 drm_atomic_plane_get_property fndecl 0 23712 NULL
135791 +disable_so_tx_wait_done_fndecl_23720 tx_wait_done fndecl 0 23720 NULL
135792 +disable_so_efx_ef10_filter_insert_fndecl_23723 efx_ef10_filter_insert fndecl 0 23723 NULL
135793 +disable_so_moxa_load_320b_fndecl_23731 moxa_load_320b fndecl 0 23731 NULL
135794 +disable_so___jffs2_flush_wbuf_fndecl_23735 __jffs2_flush_wbuf fndecl 0 23735 NULL
135795 +disable_so_translate_table_fndecl_23742 translate_table fndecl 0 23742 NULL
135796 +disable_so_regcache_lzo_compress_fndecl_23747 regcache_lzo_compress fndecl 0 23747 NULL
135797 +disable_so_writesize_acm_23756 writesize acm 0 23756 NULL
135798 +disable_so_videobuf_streamon_fndecl_23798 videobuf_streamon fndecl 0 23798 NULL
135799 +disable_so_nvme_trans_modesel_data_fndecl_23803 nvme_trans_modesel_data fndecl 0 23803 NULL
135800 +disable_so_storvsc_connect_to_vsp_fndecl_23813 storvsc_connect_to_vsp fndecl 0 23813 NULL
135801 +disable_so_pcxhr_create_mixer_fndecl_23817 pcxhr_create_mixer fndecl 0 23817 NULL
135802 +disable_so_snd_hwdep_new_fndecl_23819 snd_hwdep_new fndecl 0 23819 NULL
135803 +disable_so_ocfs2_get_refcount_tree_fndecl_23824 ocfs2_get_refcount_tree fndecl 0 23824 NULL nohasharray
135804 +disable_so_bmp085_detect_fndecl_23824 bmp085_detect fndecl 0 23824 &disable_so_ocfs2_get_refcount_tree_fndecl_23824
135805 +disable_so_iwl_set_tx_power_fndecl_23826 iwl_set_tx_power fndecl 0 23826 NULL nohasharray
135806 +disable_so_nbytes_ahash_request_23826 nbytes ahash_request 0 23826 &disable_so_iwl_set_tx_power_fndecl_23826
135807 +disable_so_ct_mixer_create_fndecl_23837 ct_mixer_create fndecl 0 23837 NULL
135808 +disable_so_iscsit_build_sendtargets_response_fndecl_23839 iscsit_build_sendtargets_response fndecl 0 23839 NULL
135809 +disable_so_iwlagn_rxon_connect_fndecl_23846 iwlagn_rxon_connect fndecl 0 23846 NULL
135810 +disable_so___do_proc_doulongvec_minmax_fndecl_23874 __do_proc_doulongvec_minmax fndecl 0 23874 NULL
135811 +disable_so_uwb_rsv_setup_fndecl_23877 uwb_rsv_setup fndecl 0 23877 NULL
135812 +disable_so_logi_dj_recv_send_report_fndecl_23882 logi_dj_recv_send_report fndecl 0 23882 NULL nohasharray
135813 +disable_so_x25_asy_open_fndecl_23882 x25_asy_open fndecl 0 23882 &disable_so_logi_dj_recv_send_report_fndecl_23882
135814 +disable_so_kvm_iommu_map_guest_fndecl_23884 kvm_iommu_map_guest fndecl 0 23884 NULL
135815 +disable_so_mm_take_all_locks_fndecl_23890 mm_take_all_locks fndecl 0 23890 NULL nohasharray
135816 +disable_so_bytes_snd_dma_buffer_23890 bytes snd_dma_buffer 0 23890 &disable_so_mm_take_all_locks_fndecl_23890
135817 +disable_so_quota_getxstatev_fndecl_23899 quota_getxstatev fndecl 0 23899 NULL
135818 +disable_so_xfs_ioc_fsgeometry_v1_fndecl_23903 xfs_ioc_fsgeometry_v1 fndecl 0 23903 NULL
135819 +disable_so_nilfs_transaction_commit_fndecl_23908 nilfs_transaction_commit fndecl 0 23908 NULL
135820 +disable_so_write_all_supers_fndecl_23910 write_all_supers fndecl 0 23910 NULL
135821 +disable_so_intel_crtc_page_flip_fndecl_23911 intel_crtc_page_flip fndecl 0 23911 NULL
135822 +disable_so_carl9170_register_fndecl_23913 carl9170_register fndecl 0 23913 NULL
135823 +disable_so_error_receiving_pkg_23916 error receiving_pkg 0 23916 NULL
135824 +disable_so_is_valid_soft_transition_fndecl_23918 is_valid_soft_transition fndecl 0 23918 NULL
135825 +disable_so_sys_sendmmsg_fndecl_23922 sys_sendmmsg fndecl 0 23922 NULL
135826 +disable_so_acpi_battery_add_fs_fndecl_23940 acpi_battery_add_fs fndecl 0 23940 NULL
135827 +disable_so_guillemot_connect_fndecl_23945 guillemot_connect fndecl 0 23945 NULL
135828 +disable_so_daio_mgr_create_fndecl_23947 daio_mgr_create fndecl 0 23947 NULL
135829 +disable_so_pvr2_buffer_queue_fndecl_23974 pvr2_buffer_queue fndecl 0 23974 NULL
135830 +disable_so_drm_atomic_connector_get_property_fndecl_23984 drm_atomic_connector_get_property fndecl 0 23984 NULL
135831 +disable_so_vsync_len_fb_var_screeninfo_23987 vsync_len fb_var_screeninfo 0 23987 NULL
135832 +disable_so_length_acpi_object_string_23992 length acpi_object_string 0 23992 NULL
135833 +disable_so_pci_request_selected_regions_fndecl_23994 pci_request_selected_regions fndecl 0 23994 NULL
135834 +disable_so_t4vf_get_rss_glb_config_fndecl_23999 t4vf_get_rss_glb_config fndecl 0 23999 NULL
135835 +disable_so___pn533_send_async_fndecl_24001 __pn533_send_async fndecl 0 24001 NULL
135836 +disable_so_create_bind_cap_vol_ctl_fndecl_24002 create_bind_cap_vol_ctl fndecl 0 24002 NULL
135837 +disable_so_sb1000_get_PIDs_fndecl_24007 sb1000_get_PIDs fndecl 0 24007 NULL
135838 +disable_so_get_array_info_fndecl_24011 get_array_info fndecl 0 24011 NULL
135839 +disable_so_ath6kl_wmi_bssfilter_cmd_fndecl_24014 ath6kl_wmi_bssfilter_cmd fndecl 0 24014 NULL nohasharray
135840 +disable_so_tcp_skb_seglen_fndecl_24014 tcp_skb_seglen fndecl 0 24014 &disable_so_ath6kl_wmi_bssfilter_cmd_fndecl_24014
135841 +disable_so_xfs_bmap_btalloc_fndecl_24019 xfs_bmap_btalloc fndecl 0 24019 NULL
135842 +disable_so_drbd_send_ack_fndecl_24022 drbd_send_ack fndecl 0 24022 NULL
135843 +disable_so_dbg_leb_map_fndecl_24031 dbg_leb_map fndecl 0 24031 NULL
135844 +disable_so_ore_write_fndecl_24032 ore_write fndecl 0 24032 NULL
135845 +disable_so_erase_shift_mmc_card_24051 erase_shift mmc_card 0 24051 NULL
135846 +disable_so_osst_int_ioctl_fndecl_24052 osst_int_ioctl fndecl 0 24052 NULL
135847 +disable_so_netlbl_unlhsh_remove_fndecl_24062 netlbl_unlhsh_remove fndecl 0 24062 NULL
135848 +disable_so_jbd2_journal_dirty_metadata_fndecl_24067 jbd2_journal_dirty_metadata fndecl 0 24067 NULL
135849 +disable_so___resolve_indirect_refs_fndecl_24085 __resolve_indirect_refs fndecl 0 24085 NULL nohasharray
135850 +disable_so_bnep_sock_ioctl_fndecl_24085 bnep_sock_ioctl fndecl 0 24085 &disable_so___resolve_indirect_refs_fndecl_24085
135851 +disable_so_dbg_check_tnc_fndecl_24088 dbg_check_tnc fndecl 0 24088 NULL
135852 +disable_so_radeon_atom_get_clock_dividers_fndecl_24091 radeon_atom_get_clock_dividers fndecl 0 24091 NULL
135853 +disable_so_do_vcc_ioctl_fndecl_24098 do_vcc_ioctl fndecl 0 24098 NULL
135854 +disable_so_max_ib_mtu_ipoib_dev_priv_24105 max_ib_mtu ipoib_dev_priv 0 24105 NULL
135855 +disable_so_init_victim_secmap_fndecl_24113 init_victim_secmap fndecl 0 24113 NULL
135856 +disable_so_driver_sysfs_add_fndecl_24122 driver_sysfs_add fndecl 0 24122 NULL
135857 +disable_so___tipc_nl_compat_doit_fndecl_24133 __tipc_nl_compat_doit fndecl 0 24133 NULL
135858 +disable_so_inet_ctl_sock_create_fndecl_24137 inet_ctl_sock_create fndecl 0 24137 NULL
135859 +disable_so_segs_wa_xfer_24141 segs wa_xfer 0 24141 NULL
135860 +disable_so_reqbufs_output_fndecl_24143 reqbufs_output fndecl 0 24143 NULL
135861 +disable_so_check_mf_symlink_fndecl_24146 check_mf_symlink fndecl 0 24146 NULL
135862 +disable_so_load_asic_generic_fndecl_24151 load_asic_generic fndecl 0 24151 NULL
135863 +disable_so_iuu_uart_on_fndecl_24161 iuu_uart_on fndecl 0 24161 NULL
135864 +disable_so_top_v4l2_rect_24176 top v4l2_rect 0 24176 NULL
135865 +disable_so_pcmcia_read_cis_mem_fndecl_24181 pcmcia_read_cis_mem fndecl 0 24181 NULL
135866 +disable_so_hfsplus_setxattr_fndecl_24182 hfsplus_setxattr fndecl 0 24182 NULL
135867 +disable_so_parse_origin_dev_fndecl_24183 parse_origin_dev fndecl 0 24183 NULL
135868 +disable_so_link_mem_sections_fndecl_24189 link_mem_sections fndecl 0 24189 NULL
135869 +disable_so___reqbufs_fndecl_24202 __reqbufs fndecl 0 24202 NULL
135870 +disable_so_regulator_bulk_enable_fndecl_24212 regulator_bulk_enable fndecl 0 24212 NULL
135871 +disable_so_ieee80211_start_sw_scan_fndecl_24213 ieee80211_start_sw_scan fndecl 0 24213 NULL
135872 +disable_so_read_local_ssp_oob_req_fndecl_24216 read_local_ssp_oob_req fndecl 0 24216 NULL
135873 +disable_so_mixart_first_init_fndecl_24234 mixart_first_init fndecl 0 24234 NULL
135874 +disable_so_pcicfg_base_sst_pdata_24243 pcicfg_base sst_pdata 0 24243 NULL
135875 +disable_so_cx23885_risc_databuffer_fndecl_24257 cx23885_risc_databuffer fndecl 0 24257 NULL
135876 +disable_so_rts_thresh_orinoco_private_24258 rts_thresh orinoco_private 0 24258 NULL
135877 +disable_so_intel_fbdev_init_fndecl_24264 intel_fbdev_init fndecl 0 24264 NULL
135878 +disable_so_kone_get_profile_fndecl_24270 kone_get_profile fndecl 0 24270 NULL
135879 +disable_so_dvb_usbv2_adapter_frontend_init_fndecl_24281 dvb_usbv2_adapter_frontend_init fndecl 0 24281 NULL
135880 +disable_so___drm_modeset_lock_all_fndecl_24284 __drm_modeset_lock_all fndecl 0 24284 NULL
135881 +disable_so_ocfs2_info_scan_inode_alloc_fndecl_24310 ocfs2_info_scan_inode_alloc fndecl 0 24310 NULL
135882 +disable_so_init_vq_fndecl_24313 init_vq fndecl 0 24313 NULL
135883 +disable_so_pch_udc_create_dma_chain_fndecl_24314 pch_udc_create_dma_chain fndecl 0 24314 NULL
135884 +disable_so__snd_pcm_hw_param_first_fndecl_24343 _snd_pcm_hw_param_first fndecl 0 24343 NULL
135885 +disable_so_ocfs2_validate_meta_ecc_bhs_fndecl_24348 ocfs2_validate_meta_ecc_bhs fndecl 0 24348 NULL nohasharray
135886 +disable_so_sdio_claim_irq_fndecl_24348 sdio_claim_irq fndecl 0 24348 &disable_so_ocfs2_validate_meta_ecc_bhs_fndecl_24348
135887 +disable_so_ib_device_register_sysfs_fndecl_24354 ib_device_register_sysfs fndecl 0 24354 NULL
135888 +disable_so_wl12xx_cmd_role_stop_ap_fndecl_24356 wl12xx_cmd_role_stop_ap fndecl 0 24356 NULL
135889 +disable_so_i1480_fw_is_running_q_fndecl_24363 i1480_fw_is_running_q fndecl 0 24363 NULL
135890 +disable_so_dst_h_yuv_frame_info_24364 dst_h yuv_frame_info 0 24364 NULL
135891 +disable_so_broadsheet_spiflash_read_range_fndecl_24368 broadsheet_spiflash_read_range fndecl 0 24368 NULL
135892 +disable_so_do_unregister_framebuffer_fndecl_24369 do_unregister_framebuffer fndecl 0 24369 NULL
135893 +disable_so_dspio_write_multiple_fndecl_24378 dspio_write_multiple fndecl 0 24378 NULL
135894 +disable_so_i1480_pre_fw_upload_fndecl_24382 i1480_pre_fw_upload fndecl 0 24382 NULL
135895 +disable_so_rproc_handle_carveout_fndecl_24387 rproc_handle_carveout fndecl 0 24387 NULL
135896 +disable_so_altera_execute_fndecl_24393 altera_execute fndecl 0 24393 NULL
135897 +disable_so_wl1251_acx_wr_tbtt_and_dtim_fndecl_24394 wl1251_acx_wr_tbtt_and_dtim fndecl 0 24394 NULL
135898 +disable_so_tail_sk_buff_24399 tail sk_buff 0 24399 NULL
135899 +disable_so_fw_base_sst_pdata_24402 fw_base sst_pdata 0 24402 NULL
135900 +disable_so_read_rom_fndecl_24403 read_rom fndecl 0 24403 NULL
135901 +disable_so_fb_check_caps_fndecl_24410 fb_check_caps fndecl 0 24410 NULL
135902 +disable_so_rsxx_dma_ctrl_init_fndecl_24415 rsxx_dma_ctrl_init fndecl 0 24415 NULL
135903 +disable_so_md_ioctl_fndecl_24418 md_ioctl fndecl 0 24418 NULL
135904 +disable_so_bus_for_each_drv_fndecl_24425 bus_for_each_drv fndecl 0 24425 NULL
135905 +disable_so_rtl8187_probe_fndecl_24427 rtl8187_probe fndecl 0 24427 NULL
135906 +disable_so_i40e_get_capabilities_fndecl_24431 i40e_get_capabilities fndecl 0 24431 NULL
135907 +disable_so_size_tty_buffer_24438 size tty_buffer 0 24438 NULL
135908 +disable_so_genwqe_pin_mem_fndecl_24439 genwqe_pin_mem fndecl 0 24439 NULL
135909 +disable_so_btrfs_add_system_chunk_fndecl_24440 btrfs_add_system_chunk fndecl 0 24440 NULL
135910 +disable_so_sb_init_legacy_fndecl_24448 sb_init_legacy fndecl 0 24448 NULL
135911 +disable_so_nvif_notify_new_fndecl_24460 nvif_notify_new fndecl 0 24460 NULL
135912 +disable_so_drbd_bm_find_next_fndecl_24464 drbd_bm_find_next fndecl 0 24464 NULL
135913 +disable_so_con_insert_unipair_fndecl_24468 con_insert_unipair fndecl 0 24468 NULL
135914 +disable_so_unlink_queued_fndecl_24470 unlink_queued fndecl 0 24470 NULL
135915 +disable_so_device_bind_driver_fndecl_24472 device_bind_driver fndecl 0 24472 NULL
135916 +disable_so_evdev_ungrab_fndecl_24475 evdev_ungrab fndecl 0 24475 NULL
135917 +disable_so_tg3_nvram_read_fndecl_24485 tg3_nvram_read fndecl 0 24485 NULL
135918 +disable_so_matroxfb_dh_ioctl_fndecl_24489 matroxfb_dh_ioctl fndecl 0 24489 NULL nohasharray
135919 +disable_so_vfio_cap_init_fndecl_24489 vfio_cap_init fndecl 0 24489 &disable_so_matroxfb_dh_ioctl_fndecl_24489 nohasharray
135920 +disable_so_shim_phy_add_intel_sst_drv_24489 shim_phy_add intel_sst_drv 0 24489 &disable_so_vfio_cap_init_fndecl_24489
135921 +disable_so_check_match_fndecl_24490 check_match fndecl 0 24490 NULL
135922 +disable_so_snd_seq_cell_alloc_fndecl_24491 snd_seq_cell_alloc fndecl 0 24491 NULL
135923 +disable_so_idt77252_init_tx_fndecl_24505 idt77252_init_tx fndecl 0 24505 NULL
135924 +disable_so_ecryptfs_get_lower_file_fndecl_24519 ecryptfs_get_lower_file fndecl 0 24519 NULL
135925 +disable_so_sctp_setsockopt_peer_addr_params_fndecl_24525 sctp_setsockopt_peer_addr_params fndecl 0 24525 NULL
135926 +disable_so_mxuport_download_fw_fndecl_24527 mxuport_download_fw fndecl 0 24527 NULL
135927 +disable_so_rocker_port_ig_tbl_fndecl_24534 rocker_port_ig_tbl fndecl 0 24534 NULL
135928 +disable_so_add_stereo_sw_fndecl_24552 add_stereo_sw fndecl 0 24552 NULL
135929 +disable_so_ptrace_getsiginfo_fndecl_24555 ptrace_getsiginfo fndecl 0 24555 NULL
135930 +disable_so_srp_send_req_fndecl_24575 srp_send_req fndecl 0 24575 NULL
135931 +disable_so__conn_request_state_fndecl_24576 _conn_request_state fndecl 0 24576 NULL
135932 +disable_so_security_old_inode_init_security_fndecl_24577 security_old_inode_init_security fndecl 0 24577 NULL nohasharray
135933 +disable_so_isdn_ioctl_fndecl_24577 isdn_ioctl fndecl 0 24577 &disable_so_security_old_inode_init_security_fndecl_24577
135934 +disable_so_joydev_handle_JSIOCSBTNMAP_fndecl_24584 joydev_handle_JSIOCSBTNMAP fndecl 0 24584 NULL
135935 +disable_so_mgmt_exec_nonemb_cmd_fndecl_24591 mgmt_exec_nonemb_cmd fndecl 0 24591 NULL
135936 +disable_so_mic_map_fndecl_24593 mic_map fndecl 0 24593 NULL
135937 +disable_so_img_width_zoran_jpg_settings_24594 img_width zoran_jpg_settings 0 24594 NULL
135938 +disable_so_set_regdom_fndecl_24600 set_regdom fndecl 0 24600 NULL
135939 +disable_so_ubifs_add_bud_to_log_fndecl_24607 ubifs_add_bud_to_log fndecl 0 24607 NULL nohasharray
135940 +disable_so_xhci_handshake_fndecl_24607 xhci_handshake fndecl 0 24607 &disable_so_ubifs_add_bud_to_log_fndecl_24607
135941 +disable_so_idetape_init_rw_fndecl_24612 idetape_init_rw fndecl 0 24612 NULL
135942 +disable_so_unix_bind_fndecl_24615 unix_bind fndecl 0 24615 NULL
135943 +disable_so_snd_pcm_hw_constraints_complete_fndecl_24621 snd_pcm_hw_constraints_complete fndecl 0 24621 NULL
135944 +disable_so_fs_path_add_fndecl_24627 fs_path_add fndecl 0 24627 NULL
135945 +disable_so_plx_pci_add_card_fndecl_24631 plx_pci_add_card fndecl 0 24631 NULL
135946 +disable_so_efx_mcdi_set_workaround_fndecl_24636 efx_mcdi_set_workaround fndecl 0 24636 NULL
135947 +disable_so_i915_gem_object_set_to_cpu_domain_fndecl_24650 i915_gem_object_set_to_cpu_domain fndecl 0 24650 NULL
135948 +disable_so_iwch_register_device_fndecl_24672 iwch_register_device fndecl 0 24672 NULL
135949 +disable_so_id_platform_device_info_24673 id platform_device_info 0 24673 NULL
135950 +disable_so_uhci_fixup_short_transfer_fndecl_24676 uhci_fixup_short_transfer fndecl 0 24676 NULL
135951 +disable_so_ea_alloc_skeleton_fndecl_24683 ea_alloc_skeleton fndecl 0 24683 NULL
135952 +disable_so_tun_set_iff_fndecl_24687 tun_set_iff fndecl 0 24687 NULL
135953 +disable_so_inet_insert_ifa_fndecl_24688 inet_insert_ifa fndecl 0 24688 NULL
135954 +disable_so__base_send_ioc_init_fndecl_24690 _base_send_ioc_init fndecl 0 24690 NULL
135955 +disable_so_mlx4_READ_ENTRY_fndecl_24692 mlx4_READ_ENTRY fndecl 0 24692 NULL
135956 +disable_so_full_height_mxr_crop_24694 full_height mxr_crop 0 24694 NULL
135957 +disable_so_rio_request_inb_dbell_fndecl_24701 rio_request_inb_dbell fndecl 0 24701 NULL
135958 +disable_so_bitmap_search_next_usable_block_fndecl_24705 bitmap_search_next_usable_block fndecl 0 24705 NULL
135959 +disable_so___tree_mod_log_insert_fndecl_24723 __tree_mod_log_insert fndecl 0 24723 NULL
135960 +disable_so_VBP_kyrofb_info_24731 VBP kyrofb_info 0 24731 NULL
135961 +disable_so_dsp_allocate_ports_format_fndecl_24734 dsp_allocate_ports_format fndecl 0 24734 NULL
135962 +disable_so_u32_set_parms_fndecl_24736 u32_set_parms fndecl 0 24736 NULL
135963 +disable_so_i915_gem_init_seqno_fndecl_24738 i915_gem_init_seqno fndecl 0 24738 NULL
135964 +disable_so_sb_pquotino_xfs_sb_24739 sb_pquotino xfs_sb 0 24739 NULL nohasharray
135965 +disable_so_irq_base_da9063_24739 irq_base da9063 0 24739 &disable_so_sb_pquotino_xfs_sb_24739
135966 +disable_so_mtd_lock_user_prot_reg_fndecl_24748 mtd_lock_user_prot_reg fndecl 0 24748 NULL
135967 +disable_so_ocfs2_ioctl_fndecl_24760 ocfs2_ioctl fndecl 0 24760 NULL
135968 +disable_so_td_probe_fndecl_24771 td_probe fndecl 0 24771 NULL
135969 +disable_so_i_disksize_ext3_inode_info_24774 i_disksize ext3_inode_info 0 24774 NULL
135970 +disable_so_usbatm_atm_init_fndecl_24793 usbatm_atm_init fndecl 0 24793 NULL
135971 +disable_so_gnttab_expand_fndecl_24794 gnttab_expand fndecl 0 24794 NULL
135972 +disable_so_write_file_tx99_fndecl_24803 write_file_tx99 fndecl 0 24803 NULL
135973 +disable_so_ceph_auth_build_hello_fndecl_24808 ceph_auth_build_hello fndecl 0 24808 NULL
135974 +disable_so_ubi_io_write_fndecl_24813 ubi_io_write fndecl 0 24813 NULL
135975 +disable_so_array_resync_offset_dm_raid_superblock_24815 array_resync_offset dm_raid_superblock 0 24815 NULL nohasharray
135976 +disable_so_snd_compr_ioctl_fndecl_24815 snd_compr_ioctl fndecl 0 24815 &disable_so_array_resync_offset_dm_raid_superblock_24815
135977 +disable_so_HBP_kyrofb_info_24818 HBP kyrofb_info 0 24818 NULL
135978 +disable_so_swsmi_wireless_status_fndecl_24834 swsmi_wireless_status fndecl 0 24834 NULL
135979 +disable_so_i915_gem_execbuffer_relocate_vma_slow_fndecl_24835 i915_gem_execbuffer_relocate_vma_slow fndecl 0 24835 NULL
135980 +disable_so_lnc_add_directly_fndecl_24843 lnc_add_directly fndecl 0 24843 NULL
135981 +disable_so_cx88_alsa_dma_init_fndecl_24851 cx88_alsa_dma_init fndecl 0 24851 NULL
135982 +disable_so_r592_transfer_fifo_dma_fndecl_24869 r592_transfer_fifo_dma fndecl 0 24869 NULL
135983 +disable_so_xen_pcibk_config_header_add_fields_fndecl_24874 xen_pcibk_config_header_add_fields fndecl 0 24874 NULL
135984 +disable_so___videobuf_copy_to_user_fndecl_24876 __videobuf_copy_to_user fndecl 0 24876 NULL
135985 +disable_so_mlx4_cmd_wait_fndecl_24884 mlx4_cmd_wait fndecl 0 24884 NULL
135986 +disable_so__regmap_read_fndecl_24887 _regmap_read fndecl 0 24887 NULL nohasharray
135987 +disable_so_snd_hdsp_create_controls_fndecl_24887 snd_hdsp_create_controls fndecl 0 24887 &disable_so__regmap_read_fndecl_24887
135988 +disable_so_mei_amthif_run_next_cmd_fndecl_24894 mei_amthif_run_next_cmd fndecl 0 24894 NULL
135989 +disable_so_cifs_push_mandatory_locks_fndecl_24907 cifs_push_mandatory_locks fndecl 0 24907 NULL
135990 +disable_so_uvc_parse_streaming_fndecl_24925 uvc_parse_streaming fndecl 0 24925 NULL nohasharray
135991 +disable_so_tcp_mtu_to_mss_fndecl_24925 tcp_mtu_to_mss fndecl 0 24925 &disable_so_uvc_parse_streaming_fndecl_24925
135992 +disable_so___mutex_lock_killable_slowpath_fndecl_24931 __mutex_lock_killable_slowpath fndecl 0 24931 NULL
135993 +disable_so_devm_gpio_request_one_fndecl_24938 devm_gpio_request_one fndecl 0 24938 NULL
135994 +disable_so_bd_link_disk_holder_fndecl_24944 bd_link_disk_holder fndecl 0 24944 NULL
135995 +disable_so_brcmf_set_auth_type_fndecl_24948 brcmf_set_auth_type fndecl 0 24948 NULL
135996 +disable_so_msb_init_card_fndecl_24960 msb_init_card fndecl 0 24960 NULL
135997 +disable_so_mwl8k_load_fw_image_fndecl_24967 mwl8k_load_fw_image fndecl 0 24967 NULL
135998 +disable_so_nfs4_update_server_fndecl_24968 nfs4_update_server fndecl 0 24968 NULL
135999 +disable_so_nvme_trans_io_fndecl_24970 nvme_trans_io fndecl 0 24970 NULL
136000 +disable_so_ata_pci_sff_prepare_host_fndecl_24973 ata_pci_sff_prepare_host fndecl 0 24973 NULL
136001 +disable_so_max_dma_count_asc_dvc_var_24975 max_dma_count asc_dvc_var 0 24975 NULL nohasharray
136002 +disable_so_netlbl_cfg_cipsov4_map_add_fndecl_24975 netlbl_cfg_cipsov4_map_add fndecl 0 24975 &disable_so_max_dma_count_asc_dvc_var_24975
136003 +disable_so_csio_hw_init_fndecl_24980 csio_hw_init fndecl 0 24980 NULL
136004 +disable_so_exofs_inode_by_name_fndecl_24982 exofs_inode_by_name fndecl 0 24982 NULL
136005 +disable_so_srp_init_qp_fndecl_24993 srp_init_qp fndecl 0 24993 NULL
136006 +disable_so_bnx2x_enable_ptp_packets_fndecl_24996 bnx2x_enable_ptp_packets fndecl 0 24996 NULL
136007 +disable_so_wait_block_group_cache_done_fndecl_24999 wait_block_group_cache_done fndecl 0 24999 NULL
136008 +disable_so_sb1000_get_firmware_version_fndecl_25003 sb1000_get_firmware_version fndecl 0 25003 NULL
136009 +disable_so_rx_jumbo_pending_ethtool_ringparam_25018 rx_jumbo_pending ethtool_ringparam 0 25018 NULL
136010 +disable_so_quota_getxstate_fndecl_25022 quota_getxstate fndecl 0 25022 NULL
136011 +disable_so_iwl_nvm_read_section_fndecl_25027 iwl_nvm_read_section fndecl 0 25027 NULL nohasharray
136012 +disable_so_height_fb_fillrect_25027 height fb_fillrect 0 25027 &disable_so_iwl_nvm_read_section_fndecl_25027
136013 +disable_so_error_nfs_direct_req_25028 error nfs_direct_req 0 25028 NULL
136014 +disable_so_mmc_spi_probe_fndecl_25030 mmc_spi_probe fndecl 0 25030 NULL nohasharray
136015 +disable_so_size_sym_tblmove_25030 size sym_tblmove 0 25030 &disable_so_mmc_spi_probe_fndecl_25030
136016 +disable_so_snd_pcm_channel_info_fndecl_25031 snd_pcm_channel_info fndecl 0 25031 NULL
136017 +disable_so_ide_pci_init_one_fndecl_25041 ide_pci_init_one fndecl 0 25041 NULL
136018 +disable_so_create_capture_mixers_fndecl_25049 create_capture_mixers fndecl 0 25049 NULL
136019 +disable_so_acpi_gpio_count_fndecl_25052 acpi_gpio_count fndecl 0 25052 NULL
136020 +disable_so_x25_route_ioctl_fndecl_25060 x25_route_ioctl fndecl 0 25060 NULL
136021 +disable_so_len_ocrdma_sge_25084 len ocrdma_sge 0 25084 NULL
136022 +disable_so_pcrypt_sysfs_add_fndecl_25092 pcrypt_sysfs_add fndecl 0 25092 NULL
136023 +disable_so_ext4_xattr_block_get_fndecl_25095 ext4_xattr_block_get fndecl 0 25095 NULL nohasharray
136024 +disable_so_snd_cs46xx_chip_init_fndecl_25095 snd_cs46xx_chip_init fndecl 0 25095 &disable_so_ext4_xattr_block_get_fndecl_25095
136025 +disable_so_wdt_stop_fndecl_25099 wdt_stop fndecl 0 25099 NULL
136026 +disable_so_compat_sys_select_fndecl_25104 compat_sys_select fndecl 0 25104 NULL nohasharray
136027 +disable_so_ethtool_set_features_fndecl_25104 ethtool_set_features fndecl 0 25104 &disable_so_compat_sys_select_fndecl_25104
136028 +disable_so___ethtool_get_settings_fndecl_25119 __ethtool_get_settings fndecl 0 25119 NULL
136029 +disable_so_stex_probe_fndecl_25121 stex_probe fndecl 0 25121 NULL
136030 +disable_so_vmw_ttm_map_for_dma_fndecl_25123 vmw_ttm_map_for_dma fndecl 0 25123 NULL
136031 +disable_so_i40e_allocate_virt_mem_d_fndecl_25132 i40e_allocate_virt_mem_d fndecl 0 25132 NULL
136032 +disable_so_osd_finalize_request_fndecl_25136 osd_finalize_request fndecl 0 25136 NULL
136033 +disable_so___hw_addr_create_ex_fndecl_25138 __hw_addr_create_ex fndecl 0 25138 NULL
136034 +disable_so_rate_max_snd_pcm_hardware_25149 rate_max snd_pcm_hardware 0 25149 NULL
136035 +disable_so_pcxhr_download_dsp_fndecl_25154 pcxhr_download_dsp fndecl 0 25154 NULL
136036 +disable_so_vram_base_cirrus_mc_25157 vram_base cirrus_mc 0 25157 NULL
136037 +disable_so_xpc_discovery_fndecl_25160 xpc_discovery fndecl 0 25160 NULL
136038 +disable_so_rdma_request_fndecl_25168 rdma_request fndecl 0 25168 NULL
136039 +disable_so_tcp_syn_options_fndecl_25174 tcp_syn_options fndecl 0 25174 NULL
136040 +disable_so_cipso_v4_map_cat_rng_hton_fndecl_25176 cipso_v4_map_cat_rng_hton fndecl 0 25176 NULL
136041 +disable_so_usb6fire_control_init_fndecl_25186 usb6fire_control_init fndecl 0 25186 NULL
136042 +disable_so_i2c_detect_fndecl_25195 i2c_detect fndecl 0 25195 NULL
136043 +disable_so_crypto_gcm_setkey_fndecl_25197 crypto_gcm_setkey fndecl 0 25197 NULL nohasharray
136044 +disable_so_vmw_user_resource_lookup_handle_fndecl_25197 vmw_user_resource_lookup_handle fndecl 0 25197 &disable_so_crypto_gcm_setkey_fndecl_25197
136045 +disable_so_ip_set_elem_len_fndecl_25209 ip_set_elem_len fndecl 0 25209 NULL nohasharray
136046 +disable_so_wl12xx_cmd_set_peer_state_fndecl_25209 wl12xx_cmd_set_peer_state fndecl 0 25209 &disable_so_ip_set_elem_len_fndecl_25209
136047 +disable_so_pcxhr_dsp_load_fndecl_25226 pcxhr_dsp_load fndecl 0 25226 NULL
136048 +disable_so_regcache_rbtree_insert_to_block_fndecl_25230 regcache_rbtree_insert_to_block fndecl 0 25230 NULL
136049 +disable_so_ocfs2_stack_driver_request_fndecl_25233 ocfs2_stack_driver_request fndecl 0 25233 NULL
136050 +disable_so_vmw_wait_lag_fndecl_25239 vmw_wait_lag fndecl 0 25239 NULL
136051 +disable_so_evm_inode_setxattr_fndecl_25242 evm_inode_setxattr fndecl 0 25242 NULL
136052 +disable_so_icmpv6_sk_init_fndecl_25246 icmpv6_sk_init fndecl 0 25246 NULL
136053 +disable_so_fc_req_to_bsgjob_fndecl_25250 fc_req_to_bsgjob fndecl 0 25250 NULL
136054 +disable_so_ixgbe_setup_fcoe_ddp_resources_fndecl_25252 ixgbe_setup_fcoe_ddp_resources fndecl 0 25252 NULL
136055 +disable_so_snd_ice1712_create_fndecl_25269 snd_ice1712_create fndecl 0 25269 NULL
136056 +disable_so_dlm_wait_function_fndecl_25297 dlm_wait_function fndecl 0 25297 NULL
136057 +disable_so_hsr_add_port_fndecl_25299 hsr_add_port fndecl 0 25299 NULL
136058 +disable_so_wl1251_hw_init_tx_queue_config_fndecl_25326 wl1251_hw_init_tx_queue_config fndecl 0 25326 NULL
136059 +disable_so_btrfs_insert_item_fndecl_25334 btrfs_insert_item fndecl 0 25334 NULL
136060 +disable_so_xfs_inobt_lookup_fndecl_25340 xfs_inobt_lookup fndecl 0 25340 NULL
136061 +disable_so_pci_go_44_fndecl_25348 pci_go_44 fndecl 0 25348 NULL
136062 +disable_so_sctp_apply_peer_addr_params_fndecl_25357 sctp_apply_peer_addr_params fndecl 0 25357 NULL
136063 +disable_so___mptctl_ioctl_fndecl_25360 __mptctl_ioctl fndecl 0 25360 NULL
136064 +disable_so_wl18xx_cmd_dfs_master_restart_fndecl_25368 wl18xx_cmd_dfs_master_restart fndecl 0 25368 NULL
136065 +disable_so_ati_remote2_input_init_fndecl_25371 ati_remote2_input_init fndecl 0 25371 NULL
136066 +disable_so_hfs_fill_super_fndecl_25379 hfs_fill_super fndecl 0 25379 NULL
136067 +disable_so_create_link_fndecl_25385 create_link fndecl 0 25385 NULL
136068 +disable_so_xfs_log_mount_finish_fndecl_25393 xfs_log_mount_finish fndecl 0 25393 NULL
136069 +disable_so_sst_parse_module_memcpy_fndecl_25414 sst_parse_module_memcpy fndecl 0 25414 NULL
136070 +disable_so_find_rsb_fndecl_25421 find_rsb fndecl 0 25421 NULL
136071 +disable_so_mwifiex_cmd_mac_control_fndecl_25438 mwifiex_cmd_mac_control fndecl 0 25438 NULL
136072 +disable_so_compat_sys_old_select_fndecl_25440 compat_sys_old_select fndecl 0 25440 NULL nohasharray
136073 +disable_so_size_xen_netif_tx_request_25440 size xen_netif_tx_request 0 25440 &disable_so_compat_sys_old_select_fndecl_25440
136074 +disable_so_mls_read_range_helper_fndecl_25457 mls_read_range_helper fndecl 0 25457 NULL
136075 +disable_so_sddr09_send_scsi_command_fndecl_25467 sddr09_send_scsi_command fndecl 0 25467 NULL
136076 +disable_so_gnttab_map_refs_fndecl_25468 gnttab_map_refs fndecl 0 25468 NULL
136077 +disable_so_frame_alloc_fndecl_25470 frame_alloc fndecl 0 25470 NULL
136078 +disable_so_dev_alloc_name_fndecl_25472 dev_alloc_name fndecl 0 25472 NULL
136079 +disable_so_ite_probe_fndecl_25479 ite_probe fndecl 0 25479 NULL nohasharray
136080 +disable_so_playback_periodsize_rme96_25479 playback_periodsize rme96 0 25479 &disable_so_ite_probe_fndecl_25479
136081 +disable_so_mlx4_qp_reserve_range_fndecl_25481 mlx4_qp_reserve_range fndecl 0 25481 NULL
136082 +disable_so_iwlagn_rxon_disconn_fndecl_25488 iwlagn_rxon_disconn fndecl 0 25488 NULL
136083 +disable_so_hdpvr_register_videodev_fndecl_25497 hdpvr_register_videodev fndecl 0 25497 NULL
136084 +disable_so_do_wait_fndecl_25504 do_wait fndecl 0 25504 NULL
136085 +disable_so_size_map_info_25510 size map_info 0 25510 NULL
136086 +disable_so_wl1251_acx_rx_config_fndecl_25521 wl1251_acx_rx_config fndecl 0 25521 NULL
136087 +disable_so_f_adc_rtl2832_sdr_dev_25544 f_adc rtl2832_sdr_dev 0 25544 NULL
136088 +disable_so_ni_dpm_init_fndecl_25550 ni_dpm_init fndecl 0 25550 NULL
136089 +disable_so_via_init_one_fndecl_25551 via_init_one fndecl 0 25551 NULL nohasharray
136090 +disable_so_wl1271_acx_tx_power_fndecl_25551 wl1271_acx_tx_power fndecl 0 25551 &disable_so_via_init_one_fndecl_25551
136091 +disable_so_gfs2_jdesc_check_fndecl_25577 gfs2_jdesc_check fndecl 0 25577 NULL
136092 +disable_so_mwl8k_cmd_set_post_scan_fndecl_25578 mwl8k_cmd_set_post_scan fndecl 0 25578 NULL
136093 +disable_so_last_page_snd_emu10k1_memblk_25591 last_page snd_emu10k1_memblk 0 25591 NULL
136094 +disable_so__submit_bh_fndecl_25593 _submit_bh fndecl 0 25593 NULL
136095 +disable_so_ocfs2_steal_meta_fndecl_25625 ocfs2_steal_meta fndecl 0 25625 NULL
136096 +disable_so_pcxhr_load_boot_binary_fndecl_25627 pcxhr_load_boot_binary fndecl 0 25627 NULL
136097 +disable_so_ocfs2_trim_group_fndecl_25634 ocfs2_trim_group fndecl 0 25634 NULL
136098 +disable_so_dbJoin_fndecl_25639 dbJoin fndecl 0 25639 NULL
136099 +disable_so_klsi_105_open_fndecl_25646 klsi_105_open fndecl 0 25646 NULL
136100 +disable_so___intel_ring_prepare_fndecl_25649 __intel_ring_prepare fndecl 0 25649 NULL nohasharray
136101 +disable_so_ufshcd_compose_dev_cmd_fndecl_25649 ufshcd_compose_dev_cmd fndecl 0 25649 &disable_so___intel_ring_prepare_fndecl_25649
136102 +disable_so_rpipe_get_by_ep_fndecl_25656 rpipe_get_by_ep fndecl 0 25656 NULL
136103 +disable_so_tps6507x_ts_probe_fndecl_25658 tps6507x_ts_probe fndecl 0 25658 NULL
136104 +disable_so_set_foreign_p2m_mapping_fndecl_25664 set_foreign_p2m_mapping fndecl 0 25664 NULL
136105 +disable_so_do_fb_ioctl_fndecl_25669 do_fb_ioctl fndecl 0 25669 NULL
136106 +disable_so_nvme_trans_log_info_exceptions_fndecl_25670 nvme_trans_log_info_exceptions fndecl 0 25670 NULL
136107 +disable_so_class_create_file_ns_fndecl_25671 class_create_file_ns fndecl 0 25671 NULL
136108 +disable_so_hash_netport6_add_fndecl_25683 hash_netport6_add fndecl 0 25683 NULL
136109 +disable_so_nv50_base_create_fndecl_25703 nv50_base_create fndecl 0 25703 NULL
136110 +disable_so_drm_crtc_check_viewport_fndecl_25704 drm_crtc_check_viewport fndecl 0 25704 NULL
136111 +disable_so_ib_attach_mcast_fndecl_25705 ib_attach_mcast fndecl 0 25705 NULL
136112 +disable_so_vfd_write_fndecl_25710 vfd_write fndecl 0 25710 NULL nohasharray
136113 +disable_so_pvr2_v4l2_open_fndecl_25710 pvr2_v4l2_open fndecl 0 25710 &disable_so_vfd_write_fndecl_25710 nohasharray
136114 +disable_so_tb_eeprom_active_fndecl_25710 tb_eeprom_active fndecl 0 25710 &disable_so_pvr2_v4l2_open_fndecl_25710
136115 +disable_so_acpi_battery_get_status_fndecl_25712 acpi_battery_get_status fndecl 0 25712 NULL
136116 +disable_so_find_shared_port_fndecl_25714 find_shared_port fndecl 0 25714 NULL
136117 +disable_so_left_margin_fb_var_screeninfo_25722 left_margin fb_var_screeninfo 0 25722 NULL
136118 +disable_so_efi_query_variable_store_fndecl_25737 efi_query_variable_store fndecl 0 25737 NULL
136119 +disable_so_sh_mobile_ceu_get_formats_fndecl_25743 sh_mobile_ceu_get_formats fndecl 0 25743 NULL
136120 +disable_so_add_gid_entry_fndecl_25744 add_gid_entry fndecl 0 25744 NULL nohasharray
136121 +disable_so_inet_listen_fndecl_25744 inet_listen fndecl 0 25744 &disable_so_add_gid_entry_fndecl_25744
136122 +disable_so_rh_urb_enqueue_fndecl_25758 rh_urb_enqueue fndecl 0 25758 NULL nohasharray
136123 +disable_so_port100_tg_send_cmd_fndecl_25758 port100_tg_send_cmd fndecl 0 25758 &disable_so_rh_urb_enqueue_fndecl_25758
136124 +disable_so_deliver_to_subscribers_fndecl_25762 deliver_to_subscribers fndecl 0 25762 NULL
136125 +disable_so_atp_probe_fndecl_25764 atp_probe fndecl 0 25764 NULL
136126 +disable_so_ide_pci_enable_fndecl_25778 ide_pci_enable fndecl 0 25778 NULL
136127 +disable_so_send_mad_fndecl_25791 send_mad fndecl 0 25791 NULL
136128 +disable_so_snd_compr_partial_drain_fndecl_25793 snd_compr_partial_drain fndecl 0 25793 NULL
136129 +disable_so_xen_wdt_kick_fndecl_25810 xen_wdt_kick fndecl 0 25810 NULL
136130 +disable_so_mwifiex_parse_single_response_buf_fndecl_25812 mwifiex_parse_single_response_buf fndecl 0 25812 NULL
136131 +disable_so_snd_ymfpci_request_firmware_fndecl_25818 snd_ymfpci_request_firmware fndecl 0 25818 NULL
136132 +disable_so_mmc_test_area_map_fndecl_25839 mmc_test_area_map fndecl 0 25839 NULL
136133 +disable_so_compat_copy_entry_to_user_fndecl_25850 compat_copy_entry_to_user fndecl 0 25850 NULL
136134 +disable_so_xfs_btree_kill_iroot_fndecl_25851 xfs_btree_kill_iroot fndecl 0 25851 NULL
136135 +disable_so___dev_open_fndecl_25859 __dev_open fndecl 0 25859 NULL
136136 +disable_so_netdev_upper_dev_link_fndecl_25874 netdev_upper_dev_link fndecl 0 25874 NULL nohasharray
136137 +disable_so_ch341_get_status_fndecl_25874 ch341_get_status fndecl 0 25874 &disable_so_netdev_upper_dev_link_fndecl_25874
136138 +disable_so_zlib_inflateSyncPacket_fndecl_25887 zlib_inflateSyncPacket fndecl 0 25887 NULL
136139 +disable_so_download_fw_fndecl_25903 download_fw fndecl 0 25903 NULL
136140 +disable_so_snd_ctl_elem_add_fndecl_25909 snd_ctl_elem_add fndecl 0 25909 NULL
136141 +disable_so_snd_ctl_create_fndecl_25914 snd_ctl_create fndecl 0 25914 NULL
136142 +disable_so_peak_usb_create_dev_fndecl_25919 peak_usb_create_dev fndecl 0 25919 NULL
136143 +disable_so_mtdchar_read_fndecl_25922 mtdchar_read fndecl 0 25922 NULL
136144 +disable_so___ring_enqueue_fndecl_25924 __ring_enqueue fndecl 0 25924 NULL nohasharray
136145 +disable_so___smsc95xx_phy_wait_not_busy_fndecl_25924 __smsc95xx_phy_wait_not_busy fndecl 0 25924 &disable_so___ring_enqueue_fndecl_25924
136146 +disable_so_cx23885_input_init_fndecl_25927 cx23885_input_init fndecl 0 25927 NULL
136147 +disable_so_prism2_download_genesis_fndecl_25935 prism2_download_genesis fndecl 0 25935 NULL
136148 +disable_so_brcmf_run_escan_fndecl_25949 brcmf_run_escan fndecl 0 25949 NULL
136149 +disable_so_rocker_group_tbl_del_fndecl_25952 rocker_group_tbl_del fndecl 0 25952 NULL
136150 +disable_so_radeon_ib_get_fndecl_25957 radeon_ib_get fndecl 0 25957 NULL
136151 +disable_so_scsi_add_single_device_fndecl_25962 scsi_add_single_device fndecl 0 25962 NULL
136152 +disable_so_scsi_esp_register_fndecl_25963 scsi_esp_register fndecl 0 25963 NULL
136153 +disable_so__iwl_dbgfs_sram_write_fndecl_25972 _iwl_dbgfs_sram_write fndecl 0 25972 NULL
136154 +disable_so_be_mbox_notify_wait_fndecl_25976 be_mbox_notify_wait fndecl 0 25976 NULL
136155 +disable_so_acpi_video_bqc_quirk_fndecl_25980 acpi_video_bqc_quirk fndecl 0 25980 NULL
136156 +disable_so_split_state_fndecl_25992 split_state fndecl 0 25992 NULL
136157 +disable_so_rivafb_probe_fndecl_25996 rivafb_probe fndecl 0 25996 NULL
136158 +disable_so_hash_ipmark4_add_fndecl_25998 hash_ipmark4_add fndecl 0 25998 NULL
136159 +disable_so_soc_camera_client_g_rect_fndecl_25999 soc_camera_client_g_rect fndecl 0 25999 NULL
136160 +disable_so_br_add_bridge_fndecl_26001 br_add_bridge fndecl 0 26001 NULL
136161 +disable_so_carl9170_parse_eeprom_fndecl_26011 carl9170_parse_eeprom fndecl 0 26011 NULL
136162 +disable_so_lnum_ubifs_lprops_26017 lnum ubifs_lprops 0 26017 NULL
136163 +disable_so_hugetlbfs_parse_options_fndecl_26038 hugetlbfs_parse_options fndecl 0 26038 NULL
136164 +disable_so_c4iw_rqtpool_create_fndecl_26044 c4iw_rqtpool_create fndecl 0 26044 NULL
136165 +disable_so_data_sock_ioctl_fndecl_26047 data_sock_ioctl fndecl 0 26047 NULL
136166 +disable_so_density_mask_onenand_chip_26051 density_mask onenand_chip 0 26051 NULL
136167 +disable_so_t4_wait_op_done_val_fndecl_26053 t4_wait_op_done_val fndecl 0 26053 NULL
136168 +disable_so_snd_rawmidi_drain_output_fndecl_26059 snd_rawmidi_drain_output fndecl 0 26059 NULL
136169 +disable_so_snd_rawmidi_alloc_substreams_fndecl_26060 snd_rawmidi_alloc_substreams fndecl 0 26060 NULL
136170 +disable_so_update_filter_fndecl_26062 update_filter fndecl 0 26062 NULL
136171 +disable_so_coherent_dma_mask_device_26068 coherent_dma_mask device 0 26068 NULL
136172 +disable_so_nfc_hci_hcp_message_tx_fndecl_26069 nfc_hci_hcp_message_tx fndecl 0 26069 NULL
136173 +disable_so_mfd_platform_add_cell_fndecl_26071 mfd_platform_add_cell fndecl 0 26071 NULL
136174 +disable_so_acpi_memory_get_device_resources_fndecl_26073 acpi_memory_get_device_resources fndecl 0 26073 NULL
136175 +disable_so_nouveau_fence_sync_fndecl_26080 nouveau_fence_sync fndecl 0 26080 NULL
136176 +disable_so_idmap_pipe_downcall_fndecl_26092 idmap_pipe_downcall fndecl 0 26092 NULL
136177 +disable_so_check_ctrlrecip_fndecl_26095 check_ctrlrecip fndecl 0 26095 NULL
136178 +disable_so_wmi_rxon_fndecl_26109 wmi_rxon fndecl 0 26109 NULL
136179 +disable_so_ath6kl_sdio_probe_fndecl_26111 ath6kl_sdio_probe fndecl 0 26111 NULL
136180 +disable_so_acpi_ut_execute_HID_fndecl_26123 acpi_ut_execute_HID fndecl 0 26123 NULL
136181 +disable_so_bind_virq_to_irqhandler_fndecl_26128 bind_virq_to_irqhandler fndecl 0 26128 NULL
136182 +disable_so_target_core_init_configfs_fndecl_26136 target_core_init_configfs fndecl 0 26136 NULL
136183 +disable_so__config_request_fndecl_26142 _config_request fndecl 0 26142 NULL
136184 +disable_so_btrfs_submit_compressed_read_fndecl_26150 btrfs_submit_compressed_read fndecl 0 26150 NULL
136185 +disable_so_usb6fire_fw_ezusb_upload_fndecl_26158 usb6fire_fw_ezusb_upload fndecl 0 26158 NULL
136186 +disable_so_snd_usbmidi_detect_roland_fndecl_26163 snd_usbmidi_detect_roland fndecl 0 26163 NULL
136187 +disable_so_iommu_bus_init_fndecl_26168 iommu_bus_init fndecl 0 26168 NULL nohasharray
136188 +disable_so_tfrc_lib_init_fndecl_26168 tfrc_lib_init fndecl 0 26168 &disable_so_iommu_bus_init_fndecl_26168
136189 +disable_so_nft_log_init_fndecl_26173 nft_log_init fndecl 0 26173 NULL
136190 +disable_so_efx_test_loopback_fndecl_26178 efx_test_loopback fndecl 0 26178 NULL
136191 +disable_so_zram_major_vardecl_zram_drv_c_26180 zram_major vardecl_zram_drv.c 0 26180 NULL
136192 +disable_so_qlcnic_sriov_vf_init_fndecl_26187 qlcnic_sriov_vf_init fndecl 0 26187 NULL
136193 +disable_so_cxgb3_offload_activate_fndecl_26191 cxgb3_offload_activate fndecl 0 26191 NULL
136194 +disable_so_self_check_not_bad_fndecl_26196 self_check_not_bad fndecl 0 26196 NULL
136195 +disable_so_ocontext_read_fndecl_26201 ocontext_read fndecl 0 26201 NULL
136196 +disable_so_ath9k_hif_usb_probe_fndecl_26204 ath9k_hif_usb_probe fndecl 0 26204 NULL
136197 +disable_so_simplefb_probe_fndecl_26209 simplefb_probe fndecl 0 26209 NULL
136198 +disable_so_xen_irq_info_virq_setup_fndecl_26212 xen_irq_info_virq_setup fndecl 0 26212 NULL
136199 +disable_so_rt2x00lib_probe_hw_modes_fndecl_26219 rt2x00lib_probe_hw_modes fndecl 0 26219 NULL
136200 +disable_so_base_snd_cs46xx_region_26223 base snd_cs46xx_region 0 26223 NULL
136201 +disable_so_command_setflickerctrl_fndecl_26233 command_setflickerctrl fndecl 0 26233 NULL
136202 +disable_so_csio_wrm_init_fndecl_26236 csio_wrm_init fndecl 0 26236 NULL
136203 +disable_so_csio_hw_get_vpd_params_fndecl_26238 csio_hw_get_vpd_params fndecl 0 26238 NULL
136204 +disable_so_pci_go_64_fndecl_26242 pci_go_64 fndecl 0 26242 NULL nohasharray
136205 +disable_so_max_srq_wr_ib_device_attr_26242 max_srq_wr ib_device_attr 0 26242 &disable_so_pci_go_64_fndecl_26242
136206 +disable_so_if_config_fndecl_26243 if_config fndecl 0 26243 NULL
136207 +disable_so_xfs_ioc_getxflags_fndecl_26247 xfs_ioc_getxflags fndecl 0 26247 NULL
136208 +disable_so_scsiback_gnttab_data_map_fndecl_26254 scsiback_gnttab_data_map fndecl 0 26254 NULL
136209 +disable_so_iwl_dbgfs_sram_write_fndecl_26260 iwl_dbgfs_sram_write fndecl 0 26260 NULL
136210 +disable_so_mlx4_setup_hca_fndecl_26261 mlx4_setup_hca fndecl 0 26261 NULL
136211 +disable_so_src_len_regcache_lzo_ctx_26272 src_len regcache_lzo_ctx 0 26272 NULL
136212 +disable_so_jumbo_size_qset_params_26273 jumbo_size qset_params 0 26273 NULL
136213 +disable_so_qib_sdma_get_complete_fndecl_26283 qib_sdma_get_complete fndecl 0 26283 NULL
136214 +disable_so_send_write_fndecl_26285 send_write fndecl 0 26285 NULL
136215 +disable_so_sumo_parse_sys_info_table_fndecl_26286 sumo_parse_sys_info_table fndecl 0 26286 NULL
136216 +disable_so_wacom_led_putimage_fndecl_26291 wacom_led_putimage fndecl 0 26291 NULL
136217 +disable_so_sc_max_sge_svcxprt_rdma_26292 sc_max_sge svcxprt_rdma 0 26292 NULL
136218 +disable_so_w_e_end_csum_rs_req_fndecl_26294 w_e_end_csum_rs_req fndecl 0 26294 NULL
136219 +disable_so_evergreen_cs_check_reg_fndecl_26309 evergreen_cs_check_reg fndecl 0 26309 NULL
136220 +disable_so_packet_set_ring_fndecl_26311 packet_set_ring fndecl 0 26311 NULL
136221 +disable_so_snd_ctl_elem_read_fndecl_26312 snd_ctl_elem_read fndecl 0 26312 NULL
136222 +disable_so_dev_ifname_fndecl_26324 dev_ifname fndecl 0 26324 NULL
136223 +disable_so_ocfs2_read_refcount_block_fndecl_26330 ocfs2_read_refcount_block fndecl 0 26330 NULL
136224 +disable_so_i40e_fetch_switch_configuration_fndecl_26343 i40e_fetch_switch_configuration fndecl 0 26343 NULL
136225 +disable_so_bpf_size_to_bytes_fndecl_26355 bpf_size_to_bytes fndecl 0 26355 NULL
136226 +disable_so_send_cancel_fndecl_26375 send_cancel fndecl 0 26375 NULL
136227 +disable_so_cm4000_probe_fndecl_26376 cm4000_probe fndecl 0 26376 NULL
136228 +disable_so_mlx4_init_qp_table_fndecl_26383 mlx4_init_qp_table fndecl 0 26383 NULL
136229 +disable_so_ipvlan_port_create_fndecl_26390 ipvlan_port_create fndecl 0 26390 NULL
136230 +disable_so_lcd_write_fndecl_26394 lcd_write fndecl 0 26394 NULL
136231 +disable_so_ea_init_fndecl_26400 ea_init fndecl 0 26400 NULL nohasharray
136232 +disable_so_sm501fb_start_one_fndecl_26400 sm501fb_start_one fndecl 0 26400 &disable_so_ea_init_fndecl_26400
136233 +disable_so_bad_peb_limit_ubi_device_26403 bad_peb_limit ubi_device 0 26403 NULL
136234 +disable_so_loop_set_status64_fndecl_26405 loop_set_status64 fndecl 0 26405 NULL
136235 +disable_so_regmap_irq_get_virq_fndecl_26413 regmap_irq_get_virq fndecl 0 26413 NULL
136236 +disable_so_fixed_phy_add_fndecl_26416 fixed_phy_add fndecl 0 26416 NULL
136237 +disable_so_perm_read_fndecl_26417 perm_read fndecl 0 26417 NULL
136238 +disable_so_xfs_bmapi_convert_unwritten_fndecl_26421 xfs_bmapi_convert_unwritten fndecl 0 26421 NULL
136239 +disable_so_mmc_spi_readblock_fndecl_26424 mmc_spi_readblock fndecl 0 26424 NULL
136240 +disable_so_mod_start_extent_map_26431 mod_start extent_map 0 26431 NULL
136241 +disable_so_ath6kl_cfg80211_scan_fndecl_26436 ath6kl_cfg80211_scan fndecl 0 26436 NULL
136242 +disable_so_ima_calc_file_hash_atfm_fndecl_26437 ima_calc_file_hash_atfm fndecl 0 26437 NULL nohasharray
136243 +disable_so_nvt_probe_fndecl_26437 nvt_probe fndecl 0 26437 &disable_so_ima_calc_file_hash_atfm_fndecl_26437
136244 +disable_so_start_cif_cam_fndecl_26442 start_cif_cam fndecl 0 26442 NULL
136245 +disable_so_t4vf_port_init_fndecl_26445 t4vf_port_init fndecl 0 26445 NULL
136246 +disable_so_mtdchar_blkpg_ioctl_fndecl_26450 mtdchar_blkpg_ioctl fndecl 0 26450 NULL
136247 +disable_so_ecryptfs_parse_packet_length_fndecl_26457 ecryptfs_parse_packet_length fndecl 0 26457 NULL
136248 +disable_so_xlog_recover_process_efi_fndecl_26460 xlog_recover_process_efi fndecl 0 26460 NULL
136249 +disable_so_snd_pcm_open_substream_fndecl_26469 snd_pcm_open_substream fndecl 0 26469 NULL
136250 +disable_so_reiserfs_end_persistent_transaction_fndecl_26470 reiserfs_end_persistent_transaction fndecl 0 26470 NULL
136251 +disable_so_iscsi_conn_context_id_iscsi_kcqe_26475 iscsi_conn_context_id iscsi_kcqe 0 26475 NULL
136252 +disable_so_xfrm_policy_insert_fndecl_26479 xfrm_policy_insert fndecl 0 26479 NULL
136253 +disable_so_cm_init_qp_init_attr_fndecl_26486 cm_init_qp_init_attr fndecl 0 26486 NULL
136254 +disable_so_i915_vma_unbind_fndecl_26489 i915_vma_unbind fndecl 0 26489 NULL
136255 +disable_so_xen_pcibk_config_quirks_init_fndecl_26500 xen_pcibk_config_quirks_init fndecl 0 26500 NULL
136256 +disable_so_snd_echo_create_fndecl_26502 snd_echo_create fndecl 0 26502 NULL
136257 +disable_so_ipddp_create_fndecl_26508 ipddp_create fndecl 0 26508 NULL nohasharray
136258 +disable_so_usb_serial_register_drivers_fndecl_26508 usb_serial_register_drivers fndecl 0 26508 &disable_so_ipddp_create_fndecl_26508
136259 +disable_so_readahead_cache_fndecl_26518 readahead_cache fndecl 0 26518 NULL
136260 +disable_so_bnx2x_setup_queue_fndecl_26522 bnx2x_setup_queue fndecl 0 26522 NULL
136261 +disable_so_SMBQueryInformation_fndecl_26523 SMBQueryInformation fndecl 0 26523 NULL
136262 +disable_so_rdma_addr_find_dmac_by_grh_fndecl_26530 rdma_addr_find_dmac_by_grh fndecl 0 26530 NULL
136263 +disable_so_drbd_adm_resize_fndecl_26550 drbd_adm_resize fndecl 0 26550 NULL
136264 +disable_so_ops_init_fndecl_26556 ops_init fndecl 0 26556 NULL
136265 +disable_so_pci_irq_pcmcia_socket_26558 pci_irq pcmcia_socket 0 26558 NULL
136266 +disable_so_enic_probe_fndecl_26561 enic_probe fndecl 0 26561 NULL
136267 +disable_so_pcxhr_load_xilinx_binary_fndecl_26586 pcxhr_load_xilinx_binary fndecl 0 26586 NULL
136268 +disable_so_xfs_btree_insrec_fndecl_26593 xfs_btree_insrec fndecl 0 26593 NULL
136269 +disable_so_btrfs_readpage_fndecl_26597 btrfs_readpage fndecl 0 26597 NULL nohasharray
136270 +disable_so_nvme_trans_completion_fndecl_26597 nvme_trans_completion fndecl 0 26597 &disable_so_btrfs_readpage_fndecl_26597
136271 +disable_so_usbfs_increase_memory_usage_fndecl_26598 usbfs_increase_memory_usage fndecl 0 26598 NULL
136272 +disable_so_snd_pcm_hw_constraint_pow2_fndecl_26604 snd_pcm_hw_constraint_pow2 fndecl 0 26604 NULL
136273 +disable_so_ib_resolve_eth_l2_attrs_fndecl_26613 ib_resolve_eth_l2_attrs fndecl 0 26613 NULL
136274 +disable_so_smscore_load_firmware_family2_fndecl_26621 smscore_load_firmware_family2 fndecl 0 26621 NULL
136275 +disable_so_i40evf_allocate_dma_mem_d_fndecl_26622 i40evf_allocate_dma_mem_d fndecl 0 26622 NULL
136276 +disable_so_siena_mtd_probe_partition_fndecl_26626 siena_mtd_probe_partition fndecl 0 26626 NULL
136277 +disable_so_make_rate_with_tolerance_fndecl_26635 make_rate_with_tolerance fndecl 0 26635 NULL
136278 +disable_so_sky2_probe_fndecl_26637 sky2_probe fndecl 0 26637 NULL
136279 +disable_so___xenbus_map_ring_fndecl_26646 __xenbus_map_ring fndecl 0 26646 NULL
136280 +disable_so_efx_ef10_probe_fndecl_26659 efx_ef10_probe fndecl 0 26659 NULL
136281 +disable_so_cirrus_driver_load_fndecl_26662 cirrus_driver_load fndecl 0 26662 NULL
136282 +disable_so_iio_device_add_event_sysfs_fndecl_26664 iio_device_add_event_sysfs fndecl 0 26664 NULL
136283 +disable_so_snd_create_std_mono_ctl_offset_fndecl_26675 snd_create_std_mono_ctl_offset fndecl 0 26675 NULL
136284 +disable_so_et131x_pci_setup_fndecl_26677 et131x_pci_setup fndecl 0 26677 NULL
136285 +disable_so__ctl_diag_release_fndecl_26685 _ctl_diag_release fndecl 0 26685 NULL
136286 +disable_so_omap1_spi100k_txrx_pio_fndecl_26692 omap1_spi100k_txrx_pio fndecl 0 26692 NULL nohasharray
136287 +disable_so_ocfs2_info_handle_maxslots_fndecl_26692 ocfs2_info_handle_maxslots fndecl 0 26692 &disable_so_omap1_spi100k_txrx_pio_fndecl_26692
136288 +disable_so_device_rename_fndecl_26694 device_rename fndecl 0 26694 NULL
136289 +disable_so_xfs_swap_extents_check_format_fndecl_26703 xfs_swap_extents_check_format fndecl 0 26703 NULL
136290 +disable_so_ocfs2_get_clusters_nocache_fndecl_26705 ocfs2_get_clusters_nocache fndecl 0 26705 NULL
136291 +disable_so_lnum_ubifs_zbranch_26709 lnum ubifs_zbranch 0 26709 NULL
136292 +disable_so_mlx4_comm_cmd_fndecl_26710 mlx4_comm_cmd fndecl 0 26710 NULL
136293 +disable_so_sm501fb_probe_fndecl_26716 sm501fb_probe fndecl 0 26716 NULL
136294 +disable_so_dvb_usb_generic_rw_fndecl_26722 dvb_usb_generic_rw fndecl 0 26722 NULL
136295 +disable_so_wl1271_acx_init_rx_interrupt_fndecl_26727 wl1271_acx_init_rx_interrupt fndecl 0 26727 NULL
136296 +disable_so_i40e_setup_misc_vector_fndecl_26728 i40e_setup_misc_vector fndecl 0 26728 NULL
136297 +disable_so_fuse_copy_pages_fndecl_26731 fuse_copy_pages fndecl 0 26731 NULL
136298 +disable_so_igb_ptp_set_timestamp_mode_fndecl_26748 igb_ptp_set_timestamp_mode fndecl 0 26748 NULL
136299 +disable_so____sys_sendmsg_fndecl_26753 ___sys_sendmsg fndecl 0 26753 NULL
136300 +disable_so_nilfs_btree_convert_and_insert_fndecl_26755 nilfs_btree_convert_and_insert fndecl 0 26755 NULL
136301 +disable_so_acpi_video_init_brightness_fndecl_26763 acpi_video_init_brightness fndecl 0 26763 NULL
136302 +disable_so_wl12xx_cmd_role_start_ap_fndecl_26768 wl12xx_cmd_role_start_ap fndecl 0 26768 NULL
136303 +disable_so_pt1_init_frontends_fndecl_26774 pt1_init_frontends fndecl 0 26774 NULL
136304 +disable_so_nvme_trans_power_state_fndecl_26775 nvme_trans_power_state fndecl 0 26775 NULL nohasharray
136305 +disable_so_kvm_set_msi_fndecl_26775 kvm_set_msi fndecl 0 26775 &disable_so_nvme_trans_power_state_fndecl_26775
136306 +disable_so_fw_iso_buffer_alloc_fndecl_26779 fw_iso_buffer_alloc fndecl 0 26779 NULL
136307 +disable_so_osst_space_over_filemarks_forward_slow_fndecl_26780 osst_space_over_filemarks_forward_slow fndecl 0 26780 NULL
136308 +disable_so_lbmLogInit_fndecl_26799 lbmLogInit fndecl 0 26799 NULL
136309 +disable_so_width_v4l2_rect_26802 width v4l2_rect 0 26802 NULL
136310 +disable_so_i2cdev_ioctl_smbus_fndecl_26818 i2cdev_ioctl_smbus fndecl 0 26818 NULL
136311 +disable_so_pinconf_validate_map_fndecl_26832 pinconf_validate_map fndecl 0 26832 NULL
136312 +disable_so_edid_size_ufx_data_26833 edid_size ufx_data 0 26833 NULL
136313 +disable_so_acpi_processor_power_init_fndecl_26840 acpi_processor_power_init fndecl 0 26840 NULL
136314 +disable_so_nv50_ram_get_fndecl_26846 nv50_ram_get fndecl 0 26846 NULL
136315 +disable_so_cypress_load_firmware_fndecl_26853 cypress_load_firmware fndecl 0 26853 NULL
136316 +disable_so_read_commands_fndecl_26856 read_commands fndecl 0 26856 NULL
136317 +disable_so_gfs2_xattr_remove_fndecl_26859 gfs2_xattr_remove fndecl 0 26859 NULL
136318 +disable_so____mei_cl_send_fndecl_26862 ___mei_cl_send fndecl 0 26862 NULL
136319 +disable_so_timekeeping_inject_offset_fndecl_26867 timekeeping_inject_offset fndecl 0 26867 NULL
136320 +disable_so_migrate_pages_fndecl_26870 migrate_pages fndecl 0 26870 NULL
136321 +disable_so_iscsit_execute_cmd_fndecl_26872 iscsit_execute_cmd fndecl 0 26872 NULL
136322 +disable_so_mtip_hw_get_identify_fndecl_26889 mtip_hw_get_identify fndecl 0 26889 NULL
136323 +disable_so_kfd_topology_update_sysfs_fndecl_26908 kfd_topology_update_sysfs fndecl 0 26908 NULL
136324 +disable_so_compat_sys_sysctl_fndecl_26910 compat_sys_sysctl fndecl 0 26910 NULL
136325 +disable_so_snd_ctl_elem_info_fndecl_26912 snd_ctl_elem_info fndecl 0 26912 NULL
136326 +disable_so_jffs2_flash_writev_fndecl_26915 jffs2_flash_writev fndecl 0 26915 NULL
136327 +disable_so_get_wep_key_fndecl_26919 get_wep_key fndecl 0 26919 NULL nohasharray
136328 +disable_so_xfs_btree_delrec_fndecl_26919 xfs_btree_delrec fndecl 0 26919 &disable_so_get_wep_key_fndecl_26919 nohasharray
136329 +disable_so_cache_ctr_fndecl_26919 cache_ctr fndecl 0 26919 &disable_so_xfs_btree_delrec_fndecl_26919
136330 +disable_so_logfs_mtd_can_write_buf_fndecl_26923 logfs_mtd_can_write_buf fndecl 0 26923 NULL
136331 +disable_so_req_submit_fndecl_26935 req_submit fndecl 0 26935 NULL
136332 +disable_so_width_v4l2_pix_format_mplane_26950 width v4l2_pix_format_mplane 0 26950 NULL
136333 +disable_so_cid_cnic_context_26952 cid cnic_context 0 26952 NULL
136334 +disable_so_mwifiex_ret_802_11_scan_fndecl_26957 mwifiex_ret_802_11_scan fndecl 0 26957 NULL
136335 +disable_so_sctp_wait_for_connect_fndecl_26960 sctp_wait_for_connect fndecl 0 26960 NULL
136336 +disable_so_addr_fritzcard_26973 addr fritzcard 0 26973 NULL
136337 +disable_so_request_firmware_nowait_fndecl_26988 request_firmware_nowait fndecl 0 26988 NULL
136338 +disable_so_smb_sendv_fndecl_26990 smb_sendv fndecl 0 26990 NULL
136339 +disable_so_delete_empty_dnode_fndecl_26994 delete_empty_dnode fndecl 0 26994 NULL
136340 +disable_so_ocfs2_inode_lock_update_fndecl_26997 ocfs2_inode_lock_update fndecl 0 26997 NULL nohasharray
136341 +disable_so_qib_sdma_get_inflight_fndecl_26997 qib_sdma_get_inflight fndecl 0 26997 &disable_so_ocfs2_inode_lock_update_fndecl_26997
136342 +disable_so_plff_init_fndecl_27008 plff_init fndecl 0 27008 NULL
136343 +disable_so_via_parse_command_stream_fndecl_27010 via_parse_command_stream fndecl 0 27010 NULL nohasharray
136344 +disable_so_pm8001_chip_get_nvmd_req_fndecl_27010 pm8001_chip_get_nvmd_req fndecl 0 27010 &disable_so_via_parse_command_stream_fndecl_27010
136345 +disable_so_acpi_thermal_get_temperature_fndecl_27014 acpi_thermal_get_temperature fndecl 0 27014 NULL
136346 +disable_so_lpfcdiag_loop_self_reg_fndecl_27022 lpfcdiag_loop_self_reg fndecl 0 27022 NULL nohasharray
136347 +disable_so_snd_cx88_hw_params_fndecl_27022 snd_cx88_hw_params fndecl 0 27022 &disable_so_lpfcdiag_loop_self_reg_fndecl_27022
136348 +disable_so_dx_fb_copyarea_27025 dx fb_copyarea 0 27025 NULL
136349 +disable_so_sctp_setsockopt_peer_primary_addr_fndecl_27027 sctp_setsockopt_peer_primary_addr fndecl 0 27027 NULL
136350 +disable_so_lanai_get_sized_buffer_fndecl_27035 lanai_get_sized_buffer fndecl 0 27035 NULL
136351 +disable_so_mif6_delete_fndecl_27036 mif6_delete fndecl 0 27036 NULL
136352 +disable_so_compat_do_ebt_get_ctl_fndecl_27044 compat_do_ebt_get_ctl fndecl 0 27044 NULL
136353 +disable_so_ata_pci_bmdma_prepare_host_fndecl_27045 ata_pci_bmdma_prepare_host fndecl 0 27045 NULL nohasharray
136354 +disable_so_qib_write_umem32_fndecl_27045 qib_write_umem32 fndecl 0 27045 &disable_so_ata_pci_bmdma_prepare_host_fndecl_27045
136355 +disable_so_brcmf_sdiod_ramrw_fndecl_27055 brcmf_sdiod_ramrw fndecl 0 27055 NULL
136356 +disable_so_cciss_kdump_hard_reset_controller_fndecl_27056 cciss_kdump_hard_reset_controller fndecl 0 27056 NULL
136357 +disable_so_l3_access_valid_fndecl_27064 l3_access_valid fndecl 0 27064 NULL
136358 +disable_so_sb_init_dio_done_wq_fndecl_27065 sb_init_dio_done_wq fndecl 0 27065 NULL nohasharray
136359 +disable_so_radeon_do_cp_idle_fndecl_27065 radeon_do_cp_idle fndecl 0 27065 &disable_so_sb_init_dio_done_wq_fndecl_27065
136360 +disable_so_logfs_delete_fndecl_27067 logfs_delete fndecl 0 27067 NULL
136361 +disable_so_request_any_context_irq_fndecl_27081 request_any_context_irq fndecl 0 27081 NULL
136362 +disable_so_new_layout_mddev_27083 new_layout mddev 0 27083 NULL
136363 +disable_so_far_set_size_geom_27088 far_set_size geom 0 27088 NULL
136364 +disable_so_via_lock_all_dma_pages_fndecl_27092 via_lock_all_dma_pages fndecl 0 27092 NULL
136365 +disable_so_br_set_forward_delay_fndecl_27097 br_set_forward_delay fndecl 0 27097 NULL
136366 +disable_so_dsp_dma_setup_common_fndecl_27104 dsp_dma_setup_common fndecl 0 27104 NULL
136367 +disable_so___btrfs_alloc_chunk_fndecl_27105 __btrfs_alloc_chunk fndecl 0 27105 NULL
136368 +disable_so_migrate_page_move_mapping_fndecl_27111 migrate_page_move_mapping fndecl 0 27111 NULL
136369 +disable_so_usb_hcd_link_urb_to_ep_fndecl_27115 usb_hcd_link_urb_to_ep fndecl 0 27115 NULL nohasharray
136370 +disable_so_query_pkey_block_fndecl_27115 query_pkey_block fndecl 0 27115 &disable_so_usb_hcd_link_urb_to_ep_fndecl_27115 nohasharray
136371 +disable_so_len_lpfc_debug_27115 len lpfc_debug 0 27115 &disable_so_query_pkey_block_fndecl_27115
136372 +disable_so_wcn36xx_smd_start_fndecl_27123 wcn36xx_smd_start fndecl 0 27123 NULL
136373 +disable_so_dln2_hw_init_fndecl_27126 dln2_hw_init fndecl 0 27126 NULL
136374 +disable_so_vfio_cap_len_fndecl_27134 vfio_cap_len fndecl 0 27134 NULL
136375 +disable_so_snd_seq_ioctl_set_queue_tempo_fndecl_27138 snd_seq_ioctl_set_queue_tempo fndecl 0 27138 NULL
136376 +disable_so_cond_read_av_list_fndecl_27158 cond_read_av_list fndecl 0 27158 NULL nohasharray
136377 +disable_so_samsung_init_fndecl_27158 samsung_init fndecl 0 27158 &disable_so_cond_read_av_list_fndecl_27158
136378 +disable_so_sco_sock_getsockopt_old_fndecl_27165 sco_sock_getsockopt_old fndecl 0 27165 NULL
136379 +disable_so_r600_get_platform_caps_fndecl_27170 r600_get_platform_caps fndecl 0 27170 NULL
136380 +disable_so_btmrvl_sdio_download_helper_fndecl_27175 btmrvl_sdio_download_helper fndecl 0 27175 NULL
136381 +disable_so_snd_sbmixer_new_fndecl_27176 snd_sbmixer_new fndecl 0 27176 NULL
136382 +disable_so_enic_set_mac_addr_fndecl_27188 enic_set_mac_addr fndecl 0 27188 NULL
136383 +disable_so_wil_cfg80211_mgmt_tx_fndecl_27195 wil_cfg80211_mgmt_tx fndecl 0 27195 NULL
136384 +disable_so_hotkey_mask_get_fndecl_27198 hotkey_mask_get fndecl 0 27198 NULL
136385 +disable_so_do_write_inode_fndecl_27201 do_write_inode fndecl 0 27201 NULL nohasharray
136386 +disable_so_hfs_parse_new_pmap_fndecl_27201 hfs_parse_new_pmap fndecl 0 27201 &disable_so_do_write_inode_fndecl_27201
136387 +disable_so_t4vf_prep_adapter_fndecl_27217 t4vf_prep_adapter fndecl 0 27217 NULL nohasharray
136388 +disable_so_ethtool_get_ringparam_fndecl_27217 ethtool_get_ringparam fndecl 0 27217 &disable_so_t4vf_prep_adapter_fndecl_27217
136389 +disable_so_sdio_memcpy_fromio_fndecl_27218 sdio_memcpy_fromio fndecl 0 27218 NULL
136390 +disable_so_bm_bn_xfs_buf_map_27223 bm_bn xfs_buf_map 0 27223 NULL
136391 +disable_so_sctp_outq_uncork_fndecl_27237 sctp_outq_uncork fndecl 0 27237 NULL
136392 +disable_so_cancel_lock_fndecl_27244 cancel_lock fndecl 0 27244 NULL
136393 +disable_so_sisusb_recv_bulk_msg_fndecl_27246 sisusb_recv_bulk_msg fndecl 0 27246 NULL
136394 +disable_so_isert_map_rdma_fndecl_27256 isert_map_rdma fndecl 0 27256 NULL
136395 +disable_so_wl1251_acx_pd_threshold_fndecl_27265 wl1251_acx_pd_threshold fndecl 0 27265 NULL
136396 +disable_so_sector_drbd_interval_27266 sector drbd_interval 0 27266 NULL
136397 +disable_so_proc_do_large_bitmap_fndecl_27272 proc_do_large_bitmap fndecl 0 27272 NULL
136398 +disable_so_intel_overlay_off_fndecl_27294 intel_overlay_off fndecl 0 27294 NULL
136399 +disable_so_ubifs_write_master_fndecl_27297 ubifs_write_master fndecl 0 27297 NULL
136400 +disable_so_c_rotor_ufs_cg_private_info_27304 c_rotor ufs_cg_private_info 0 27304 NULL
136401 +disable_so_gpu_mem_size_vml_par_27308 gpu_mem_size vml_par 0 27308 NULL
136402 +disable_so_memblock_alloc_range_nid_fndecl_27321 memblock_alloc_range_nid fndecl 0 27321 NULL
136403 +disable_so_rxrpc_krb5_decode_ticket_fndecl_27329 rxrpc_krb5_decode_ticket fndecl 0 27329 NULL
136404 +disable_so_n_tracerouter_init_fndecl_27335 n_tracerouter_init fndecl 0 27335 NULL
136405 +disable_so_update_rgrp_lvb_fndecl_27340 update_rgrp_lvb fndecl 0 27340 NULL
136406 +disable_so_stex_set_dma_mask_fndecl_27343 stex_set_dma_mask fndecl 0 27343 NULL
136407 +disable_so_offset_gtt_range_27356 offset gtt_range 0 27356 NULL
136408 +disable_so_ptrace_do_wait_fndecl_27360 ptrace_do_wait fndecl 0 27360 NULL
136409 +disable_so_find_new_extents_fndecl_27368 find_new_extents fndecl 0 27368 NULL
136410 +disable_so_snd_ice1712_ews_init_fndecl_27373 snd_ice1712_ews_init fndecl 0 27373 NULL
136411 +disable_so_urb_size_tm6000_core_27374 urb_size tm6000_core 0 27374 NULL
136412 +disable_so_iwl_alive_notify_fndecl_27377 iwl_alive_notify fndecl 0 27377 NULL
136413 +disable_so_i2c_add_numbered_adapter_fndecl_27380 i2c_add_numbered_adapter fndecl 0 27380 NULL
136414 +disable_so_mem_base_pch_dev_27386 mem_base pch_dev 0 27386 NULL
136415 +disable_so_i915_gem_object_finish_gpu_fndecl_27387 i915_gem_object_finish_gpu fndecl 0 27387 NULL
136416 +disable_so_i2c_bit_add_bus_fndecl_27395 i2c_bit_add_bus fndecl 0 27395 NULL
136417 +disable_so_wl1251_cmd_trigger_scan_to_fndecl_27398 wl1251_cmd_trigger_scan_to fndecl 0 27398 NULL
136418 +disable_so_mptctl_mpt_command_fndecl_27401 mptctl_mpt_command fndecl 0 27401 NULL
136419 +disable_so_iwl_mvm_add_aux_sta_fndecl_27408 iwl_mvm_add_aux_sta fndecl 0 27408 NULL
136420 +disable_so_i40e_add_fdir_ethtool_fndecl_27413 i40e_add_fdir_ethtool fndecl 0 27413 NULL
136421 +disable_so_softingcs_probe_fndecl_27420 softingcs_probe fndecl 0 27420 NULL nohasharray
136422 +disable_so_mxr_probe_fndecl_27420 mxr_probe fndecl 0 27420 &disable_so_softingcs_probe_fndecl_27420
136423 +disable_so_tmiofb_ioctl_fndecl_27430 tmiofb_ioctl fndecl 0 27430 NULL
136424 +disable_so_vlan_dev_change_flags_fndecl_27458 vlan_dev_change_flags fndecl 0 27458 NULL
136425 +disable_so_next_header_vardecl_initramfs_c_27464 next_header vardecl_initramfs.c 0 27464 NULL
136426 +disable_so_is_inode_existent_fndecl_27466 is_inode_existent fndecl 0 27466 NULL
136427 +disable_so_rocker_port_ipv4_resolve_fndecl_27472 rocker_port_ipv4_resolve fndecl 0 27472 NULL
136428 +disable_so_snd_seq_fifo_resize_fndecl_27486 snd_seq_fifo_resize fndecl 0 27486 NULL
136429 +disable_so_exofs_parent_ino_fndecl_27488 exofs_parent_ino fndecl 0 27488 NULL
136430 +disable_so_drbd_send_drequest_csum_fndecl_27489 drbd_send_drequest_csum fndecl 0 27489 NULL
136431 +disable_so_ext3_xattr_block_get_fndecl_27491 ext3_xattr_block_get fndecl 0 27491 NULL
136432 +disable_so_wb_index_nfs_page_27494 wb_index nfs_page 0 27494 NULL
136433 +disable_so_host_perf_guest_switch_msr_27498 host perf_guest_switch_msr 0 27498 NULL
136434 +disable_so_vc_allocate_fndecl_27499 vc_allocate fndecl 0 27499 NULL
136435 +disable_so_ocfs2_get_request_ptr_fndecl_27507 ocfs2_get_request_ptr fndecl 0 27507 NULL
136436 +disable_so_max_qp_sz_mthca_dev_lim_27511 max_qp_sz mthca_dev_lim 0 27511 NULL
136437 +disable_so_vis_h_yuv_frame_info_27514 vis_h yuv_frame_info 0 27514 NULL
136438 +disable_so_chipio_write_multiple_fndecl_27518 chipio_write_multiple fndecl 0 27518 NULL
136439 +disable_so__ctl_compat_mpt_command_fndecl_27521 _ctl_compat_mpt_command fndecl 0 27521 NULL
136440 +disable_so_crypto_register_template_fndecl_27525 crypto_register_template fndecl 0 27525 NULL nohasharray
136441 +disable_so_snd_ca0106_create_fndecl_27525 snd_ca0106_create fndecl 0 27525 &disable_so_crypto_register_template_fndecl_27525
136442 +disable_so_qlcnic_sriov_get_vf_vport_info_fndecl_27529 qlcnic_sriov_get_vf_vport_info fndecl 0 27529 NULL
136443 +disable_so_sm501fb_init_fb_fndecl_27534 sm501fb_init_fb fndecl 0 27534 NULL
136444 +disable_so_snd_pcm_plug_slave_size_fndecl_27548 snd_pcm_plug_slave_size fndecl 0 27548 NULL
136445 +disable_so_emi26_set_reset_fndecl_27551 emi26_set_reset fndecl 0 27551 NULL
136446 +disable_so_concat_erase_fndecl_27560 concat_erase fndecl 0 27560 NULL
136447 +disable_so_sddr09_write_data_fndecl_27565 sddr09_write_data fndecl 0 27565 NULL
136448 +disable_so_test_ready_fndecl_27574 test_ready fndecl 0 27574 NULL
136449 +disable_so_snd_atiixp_create_fndecl_27584 snd_atiixp_create fndecl 0 27584 NULL
136450 +disable_so_rdma_addr_find_smac_by_sgid_fndecl_27591 rdma_addr_find_smac_by_sgid fndecl 0 27591 NULL
136451 +disable_so_xfs_bmap_alloc_fndecl_27599 xfs_bmap_alloc fndecl 0 27599 NULL
136452 +disable_so_patch_cmi9880_fndecl_27601 patch_cmi9880 fndecl 0 27601 NULL
136453 +disable_so_hidp_get_connlist_fndecl_27620 hidp_get_connlist fndecl 0 27620 NULL
136454 +disable_so_file_ioctl_fndecl_27628 file_ioctl fndecl 0 27628 NULL nohasharray
136455 +disable_so_nfc_se_io_fndecl_27628 nfc_se_io fndecl 0 27628 &disable_so_file_ioctl_fndecl_27628
136456 +disable_so_gnttab_init_fndecl_27630 gnttab_init fndecl 0 27630 NULL
136457 +disable_so_hampshire_connect_fndecl_27639 hampshire_connect fndecl 0 27639 NULL
136458 +disable_so_create_mf_symlink_fndecl_27647 create_mf_symlink fndecl 0 27647 NULL
136459 +disable_so_error_res_proc_context_27648 error res_proc_context 0 27648 NULL
136460 +disable_so___smsc75xx_write_reg_fndecl_27650 __smsc75xx_write_reg fndecl 0 27650 NULL
136461 +disable_so_nvkm_event_init_fndecl_27654 nvkm_event_init fndecl 0 27654 NULL
136462 +disable_so_vt_do_diacrit_fndecl_27660 vt_do_diacrit fndecl 0 27660 NULL
136463 +disable_so_intel_overlay_put_image_fndecl_27662 intel_overlay_put_image fndecl 0 27662 NULL
136464 +disable_so_send_convert_fndecl_27675 send_convert fndecl 0 27675 NULL
136465 +disable_so_snd_pcm_substream_proc_init_fndecl_27677 snd_pcm_substream_proc_init fndecl 0 27677 NULL
136466 +disable_so__iwl_dbgfs_prph_reg_write_fndecl_27686 _iwl_dbgfs_prph_reg_write fndecl 0 27686 NULL
136467 +disable_so_bnx2x_iov_init_one_fndecl_27687 bnx2x_iov_init_one fndecl 0 27687 NULL
136468 +disable_so_ath10k_ce_send_fndecl_27688 ath10k_ce_send fndecl 0 27688 NULL
136469 +disable_so_rtc_timer_enqueue_fndecl_27693 rtc_timer_enqueue fndecl 0 27693 NULL
136470 +disable_so_snd_pcm_plugin_alloc_fndecl_27703 snd_pcm_plugin_alloc fndecl 0 27703 NULL
136471 +disable_so_snd_asihpi_tuner_add_fndecl_27715 snd_asihpi_tuner_add fndecl 0 27715 NULL
136472 +disable_so_wl18xx_acx_ap_sleep_fndecl_27719 wl18xx_acx_ap_sleep fndecl 0 27719 NULL
136473 +disable_so_azx_first_init_fndecl_27721 azx_first_init fndecl 0 27721 NULL
136474 +disable_so_qxl_ttm_global_init_fndecl_27729 qxl_ttm_global_init fndecl 0 27729 NULL
136475 +disable_so_cx82310_bind_fndecl_27730 cx82310_bind fndecl 0 27730 NULL
136476 +disable_so_kone_init_kone_device_struct_fndecl_27734 kone_init_kone_device_struct fndecl 0 27734 NULL
136477 +disable_so_sidtab_init_fndecl_27779 sidtab_init fndecl 0 27779 NULL
136478 +disable_so_sst_parse_fw_memcpy_fndecl_27798 sst_parse_fw_memcpy fndecl 0 27798 NULL
136479 +disable_so_mlx5_query_ext_port_caps_fndecl_27803 mlx5_query_ext_port_caps fndecl 0 27803 NULL
136480 +disable_so_br_set_max_age_fndecl_27806 br_set_max_age fndecl 0 27806 NULL
136481 +disable_so_sizeimage_v4l2_pix_format_27824 sizeimage v4l2_pix_format 0 27824 NULL
136482 +disable_so_ipath_physaddr_ipath_devdata_27830 ipath_physaddr ipath_devdata 0 27830 NULL
136483 +disable_so_pn533_send_cmd_async_fndecl_27840 pn533_send_cmd_async fndecl 0 27840 NULL nohasharray
136484 +disable_so_sp2_probe_fndecl_27840 sp2_probe fndecl 0 27840 &disable_so_pn533_send_cmd_async_fndecl_27840
136485 +disable_so_ignore_remaining_packet_fndecl_27850 ignore_remaining_packet fndecl 0 27850 NULL
136486 +disable_so_osst_write_filemark_fndecl_27859 osst_write_filemark fndecl 0 27859 NULL
136487 +disable_so_pb_count_s5p_mfc_ctx_27861 pb_count s5p_mfc_ctx 0 27861 NULL
136488 +disable_so_pktgen_setup_dev_fndecl_27866 pktgen_setup_dev fndecl 0 27866 NULL
136489 +disable_so_vmw_stream_claim_ioctl_fndecl_27869 vmw_stream_claim_ioctl fndecl 0 27869 NULL
136490 +disable_so_run_delayed_data_ref_fndecl_27870 run_delayed_data_ref fndecl 0 27870 NULL nohasharray
136491 +disable_so_ptrace_setoptions_fndecl_27870 ptrace_setoptions fndecl 0 27870 &disable_so_run_delayed_data_ref_fndecl_27870 nohasharray
136492 +disable_so___validate_exception_handover_fndecl_27870 __validate_exception_handover fndecl 0 27870 &disable_so_ptrace_setoptions_fndecl_27870
136493 +disable_so_e1000_setup_all_tx_resources_fndecl_27873 e1000_setup_all_tx_resources fndecl 0 27873 NULL
136494 +disable_so_wl1271_acx_aid_fndecl_27879 wl1271_acx_aid fndecl 0 27879 NULL
136495 +disable_so_listxattr_fndecl_27890 listxattr fndecl 0 27890 NULL
136496 +disable_so_check_ci_fndecl_27892 check_ci fndecl 0 27892 NULL
136497 +disable_so_mwl8k_cmd_mimo_config_fndecl_27913 mwl8k_cmd_mimo_config fndecl 0 27913 NULL
136498 +disable_so_fou_create_fndecl_27920 fou_create fndecl 0 27920 NULL
136499 +disable_so_setup_io_fndecl_27921 setup_io fndecl 0 27921 NULL
136500 +disable_so_sta_info_insert_rcu_fndecl_27938 sta_info_insert_rcu fndecl 0 27938 NULL
136501 +disable_so_dev_ifsioc_fndecl_27939 dev_ifsioc fndecl 0 27939 NULL
136502 +disable_so_pn544_hci_i2c_fw_secure_write_frame_cmd_fndecl_27941 pn544_hci_i2c_fw_secure_write_frame_cmd fndecl 0 27941 NULL
136503 +disable_so_capacity_cdrom_device_info_27942 capacity cdrom_device_info 0 27942 NULL
136504 +disable_so_dib0700_download_firmware_fndecl_27951 dib0700_download_firmware fndecl 0 27951 NULL
136505 +disable_so_ufshcd_copy_query_response_fndecl_27959 ufshcd_copy_query_response fndecl 0 27959 NULL
136506 +disable_so_xfs_bmap_last_extent_fndecl_27964 xfs_bmap_last_extent fndecl 0 27964 NULL
136507 +disable_so___btrfs_set_acl_fndecl_27979 __btrfs_set_acl fndecl 0 27979 NULL
136508 +disable_so_dpcm_path_get_fndecl_27982 dpcm_path_get fndecl 0 27982 NULL
136509 +disable_so_sxgbe_init_rx_buffers_fndecl_27984 sxgbe_init_rx_buffers fndecl 0 27984 NULL
136510 +disable_so_rproc_handle_devmem_fndecl_27999 rproc_handle_devmem fndecl 0 27999 NULL
136511 +disable_so_midi_synth_ioctl_fndecl_28002 midi_synth_ioctl fndecl 0 28002 NULL
136512 +disable_so_bytes_str_to_int_fndecl_28004 bytes_str_to_int fndecl 0 28004 NULL
136513 +disable_so_mp_map_pin_to_irq_fndecl_28025 mp_map_pin_to_irq fndecl 0 28025 NULL
136514 +disable_so_block_group_ext3_iloc_28034 block_group ext3_iloc 0 28034 NULL
136515 +disable_so_mos7840_open_fndecl_28036 mos7840_open fndecl 0 28036 NULL
136516 +disable_so_nilfs_segctor_write_fndecl_28042 nilfs_segctor_write fndecl 0 28042 NULL
136517 +disable_so_new_chunk_dm_exception_28044 new_chunk dm_exception 0 28044 NULL
136518 +disable_so_pcmciamtd_probe_fndecl_28045 pcmciamtd_probe fndecl 0 28045 NULL
136519 +disable_so_nilfs_wait_on_logs_fndecl_28049 nilfs_wait_on_logs fndecl 0 28049 NULL
136520 +disable_so_hbucket_elem_add_fndecl_28051 hbucket_elem_add fndecl 0 28051 NULL
136521 +disable_so_maxpacket_usbnet_28054 maxpacket usbnet 0 28054 NULL
136522 +disable_so_wait_noreap_copyout_fndecl_28056 wait_noreap_copyout fndecl 0 28056 NULL
136523 +disable_so_sst_create_block_and_ipc_msg_fndecl_28074 sst_create_block_and_ipc_msg fndecl 0 28074 NULL
136524 +disable_so_bind_rdev_to_array_fndecl_28077 bind_rdev_to_array fndecl 0 28077 NULL
136525 +disable_so_abituguru_detect_fndecl_28078 abituguru_detect fndecl 0 28078 NULL
136526 +disable_so_buflen_qce_sha_reqctx_28088 buflen qce_sha_reqctx 0 28088 NULL
136527 +disable_so_nvkm_engine_create__fndecl_28089 nvkm_engine_create_ fndecl 0 28089 NULL
136528 +disable_so_aac_probe_container_fndecl_28093 aac_probe_container fndecl 0 28093 NULL
136529 +disable_so_mark_sector_deleted_fndecl_28098 mark_sector_deleted fndecl 0 28098 NULL
136530 +disable_so_vmw_fb_create_bo_fndecl_28101 vmw_fb_create_bo fndecl 0 28101 NULL
136531 +disable_so_ath6kl_wmi_set_wmm_txop_fndecl_28102 ath6kl_wmi_set_wmm_txop fndecl 0 28102 NULL
136532 +disable_so_stream_next_buffer_check_queue_fndecl_28114 stream_next_buffer_check_queue fndecl 0 28114 NULL
136533 +disable_so_nfs4_check_cl_exchange_flags_fndecl_28119 nfs4_check_cl_exchange_flags fndecl 0 28119 NULL
136534 +disable_so_si_domain_init_fndecl_28122 si_domain_init fndecl 0 28122 NULL
136535 +disable_so_wLength_usb_ctrlrequest_28143 wLength usb_ctrlrequest 0 28143 NULL
136536 +disable_so_fifo_set_limit_fndecl_28151 fifo_set_limit fndecl 0 28151 NULL nohasharray
136537 +disable_so_rc_framerate_denom_s5p_mfc_enc_params_28151 rc_framerate_denom s5p_mfc_enc_params 0 28151 &disable_so_fifo_set_limit_fndecl_28151
136538 +disable_so_ufshcd_compose_upiu_fndecl_28167 ufshcd_compose_upiu fndecl 0 28167 NULL
136539 +disable_so_xpnet_init_fndecl_28171 xpnet_init fndecl 0 28171 NULL nohasharray
136540 +disable_so_ti_do_config_fndecl_28171 ti_do_config fndecl 0 28171 &disable_so_xpnet_init_fndecl_28171
136541 +disable_so_pmcraid_check_ioctl_buffer_fndecl_28178 pmcraid_check_ioctl_buffer fndecl 0 28178 NULL
136542 +disable_so_t4vf_query_params_fndecl_28182 t4vf_query_params fndecl 0 28182 NULL
136543 +disable_so___dn_setsockopt_fndecl_28183 __dn_setsockopt fndecl 0 28183 NULL
136544 +disable_so_bind_evtchn_to_irq_fndecl_28186 bind_evtchn_to_irq fndecl 0 28186 NULL
136545 +disable_so_ubi_leb_map_fndecl_28192 ubi_leb_map fndecl 0 28192 NULL
136546 +disable_so_ttm_dma_pool_alloc_new_pages_fndecl_28194 ttm_dma_pool_alloc_new_pages fndecl 0 28194 NULL
136547 +disable_so_cirrus_gem_create_fndecl_28197 cirrus_gem_create fndecl 0 28197 NULL
136548 +disable_so_matroxfb_wait_for_sync_fndecl_28200 matroxfb_wait_for_sync fndecl 0 28200 NULL
136549 +disable_so_pyra_send_control_fndecl_28203 pyra_send_control fndecl 0 28203 NULL
136550 +disable_so_region_shift_dm_region_hash_28205 region_shift dm_region_hash 0 28205 NULL
136551 +disable_so_xattr_getsecurity_fndecl_28209 xattr_getsecurity fndecl 0 28209 NULL nohasharray
136552 +disable_so_ast_bo_create_fndecl_28209 ast_bo_create fndecl 0 28209 &disable_so_xattr_getsecurity_fndecl_28209
136553 +disable_so_pcmcia_loop_config_fndecl_28216 pcmcia_loop_config fndecl 0 28216 NULL
136554 +disable_so_pvr2_upload_firmware1_fndecl_28225 pvr2_upload_firmware1 fndecl 0 28225 NULL
136555 +disable_so_nbytes_orig_qce_sha_reqctx_28228 nbytes_orig qce_sha_reqctx 0 28228 NULL
136556 +disable_so_ext4_xattr_ibody_find_fndecl_28245 ext4_xattr_ibody_find fndecl 0 28245 NULL
136557 +disable_so_freqshift_snd_usb_endpoint_28255 freqshift snd_usb_endpoint 0 28255 NULL
136558 +disable_so_diva_um_idi_write_fndecl_28257 diva_um_idi_write fndecl 0 28257 NULL
136559 +disable_so_dev_ifconf_fndecl_28260 dev_ifconf fndecl 0 28260 NULL
136560 +disable_so_ea_set_i_fndecl_28261 ea_set_i fndecl 0 28261 NULL
136561 +disable_so_CIFSPOSIXCreate_fndecl_28262 CIFSPOSIXCreate fndecl 0 28262 NULL
136562 +disable_so_configfs_create_fndecl_28263 configfs_create fndecl 0 28263 NULL
136563 +disable_so_vcc_table_allocate_fndecl_28266 vcc_table_allocate fndecl 0 28266 NULL
136564 +disable_so_snd_soc_register_dais_fndecl_28270 snd_soc_register_dais fndecl 0 28270 NULL
136565 +disable_so_needed_headroom_net_device_28272 needed_headroom net_device 0 28272 NULL
136566 +disable_so_vnic_dev_alloc_desc_ring_fndecl_28277 vnic_dev_alloc_desc_ring fndecl 0 28277 NULL
136567 +disable_so_update_vol_fndecl_28286 update_vol fndecl 0 28286 NULL
136568 +disable_so_mem_cgroup_try_charge_fndecl_28289 mem_cgroup_try_charge fndecl 0 28289 NULL
136569 +disable_so_iwl_mvm_config_sched_scan_profiles_fndecl_28291 iwl_mvm_config_sched_scan_profiles fndecl 0 28291 NULL
136570 +disable_so_ilk_pipe_crc_ctl_reg_fndecl_28295 ilk_pipe_crc_ctl_reg fndecl 0 28295 NULL
136571 +disable_so_save_total_len_pch_spi_data_28296 save_total_len pch_spi_data 0 28296 NULL
136572 +disable_so__iwl_dbgfs_disable_power_off_write_fndecl_28328 _iwl_dbgfs_disable_power_off_write fndecl 0 28328 NULL
136573 +disable_so_check_input_term_fndecl_28330 check_input_term fndecl 0 28330 NULL
136574 +disable_so_rs_get_adjacent_rate_fndecl_28334 rs_get_adjacent_rate fndecl 0 28334 NULL nohasharray
136575 +disable_so_asix_read_cmd_fndecl_28334 asix_read_cmd fndecl 0 28334 &disable_so_rs_get_adjacent_rate_fndecl_28334
136576 +disable_so_wm_adsp_setup_algs_fndecl_28362 wm_adsp_setup_algs fndecl 0 28362 NULL
136577 +disable_so_snd_emu10k1_fx8010_tram_setup_fndecl_28371 snd_emu10k1_fx8010_tram_setup fndecl 0 28371 NULL
136578 +disable_so_init_tid_tabs_fndecl_28375 init_tid_tabs fndecl 0 28375 NULL
136579 +disable_so_prism2_ioctl_mlme_fndecl_28376 prism2_ioctl_mlme fndecl 0 28376 NULL
136580 +disable_so_snd_opl3_ioctl_fndecl_28378 snd_opl3_ioctl fndecl 0 28378 NULL
136581 +disable_so_dev_mc_del_global_fndecl_28384 dev_mc_del_global fndecl 0 28384 NULL
136582 +disable_so_nouveau_gem_object_open_fndecl_28393 nouveau_gem_object_open fndecl 0 28393 NULL
136583 +disable_so_udc_pci_probe_fndecl_28405 udc_pci_probe fndecl 0 28405 NULL
136584 +disable_so_platform_device_add_resources_fndecl_28410 platform_device_add_resources fndecl 0 28410 NULL
136585 +disable_so___inet_insert_ifa_fndecl_28418 __inet_insert_ifa fndecl 0 28418 NULL
136586 +disable_so_get_full_pkey_table_fndecl_28420 get_full_pkey_table fndecl 0 28420 NULL
136587 +disable_so_tlv_put_uuid_fndecl_28427 tlv_put_uuid fndecl 0 28427 NULL
136588 +disable_so_ioctl_fibmap_fndecl_28430 ioctl_fibmap fndecl 0 28430 NULL
136589 +disable_so_vp702x_usb_in_op_unlocked_fndecl_28434 vp702x_usb_in_op_unlocked fndecl 0 28434 NULL
136590 +disable_so_ipath_sdma_verbs_send_fndecl_28436 ipath_sdma_verbs_send fndecl 0 28436 NULL
136591 +disable_so_nilfs_bmap_do_insert_fndecl_28453 nilfs_bmap_do_insert fndecl 0 28453 NULL
136592 +disable_so_ib_post_send_mad_fndecl_28456 ib_post_send_mad fndecl 0 28456 NULL nohasharray
136593 +disable_so_iio_buffer_alloc_sysfs_and_mask_fndecl_28456 iio_buffer_alloc_sysfs_and_mask fndecl 0 28456 &disable_so_ib_post_send_mad_fndecl_28456
136594 +disable_so_gfs2_log_reserve_fndecl_28464 gfs2_log_reserve fndecl 0 28464 NULL
136595 +disable_so_get_l2cap_conn_fndecl_28468 get_l2cap_conn fndecl 0 28468 NULL
136596 +disable_so_wl1271_scan_sched_scan_config_fndecl_28469 wl1271_scan_sched_scan_config fndecl 0 28469 NULL nohasharray
136597 +disable_so_ethtool_tunable_valid_fndecl_28469 ethtool_tunable_valid fndecl 0 28469 &disable_so_wl1271_scan_sched_scan_config_fndecl_28469
136598 +disable_so_hfsc_change_class_fndecl_28473 hfsc_change_class fndecl 0 28473 NULL
136599 +disable_so___decode_primary_temp_fndecl_28481 __decode_primary_temp fndecl 0 28481 NULL
136600 +disable_so_lpfc_bsg_handle_sli_cfg_ext_fndecl_28491 lpfc_bsg_handle_sli_cfg_ext fndecl 0 28491 NULL nohasharray
136601 +disable_so_bl_alloc_extent_fndecl_28491 bl_alloc_extent fndecl 0 28491 &disable_so_lpfc_bsg_handle_sli_cfg_ext_fndecl_28491
136602 +disable_so_get_leb_cnt_fndecl_28495 get_leb_cnt fndecl 0 28495 NULL
136603 +disable_so_xfs_rtallocate_extent_exact_fndecl_28498 xfs_rtallocate_extent_exact fndecl 0 28498 NULL
136604 +disable_so_v4l2_device_register_subdev_nodes_fndecl_28501 v4l2_device_register_subdev_nodes fndecl 0 28501 NULL
136605 +disable_so_ubi_eba_copy_leb_fndecl_28506 ubi_eba_copy_leb fndecl 0 28506 NULL
136606 +disable_so_kvm_request_irq_source_id_fndecl_28509 kvm_request_irq_source_id fndecl 0 28509 NULL nohasharray
136607 +disable_so_saa7706h_probe_fndecl_28509 saa7706h_probe fndecl 0 28509 &disable_so_kvm_request_irq_source_id_fndecl_28509 nohasharray
136608 +disable_so_read_pin_defaults_fndecl_28509 read_pin_defaults fndecl 0 28509 &disable_so_saa7706h_probe_fndecl_28509
136609 +disable_so_dln2_send_wait_fndecl_28510 dln2_send_wait fndecl 0 28510 NULL
136610 +disable_so_brcmf_set_key_mgmt_fndecl_28523 brcmf_set_key_mgmt fndecl 0 28523 NULL
136611 +disable_so__regmap_raw_read_fndecl_28533 _regmap_raw_read fndecl 0 28533 NULL
136612 +disable_so_hpsa_allocate_sg_chain_blocks_fndecl_28541 hpsa_allocate_sg_chain_blocks fndecl 0 28541 NULL
136613 +disable_so_target_register_template_fndecl_28551 target_register_template fndecl 0 28551 NULL
136614 +disable_so_raw_cmd_copyin_fndecl_28554 raw_cmd_copyin fndecl 0 28554 NULL
136615 +disable_so_scan_fast_fndecl_28572 scan_fast fndecl 0 28572 NULL
136616 +disable_so_ufx_i2c_wait_busy_fndecl_28574 ufx_i2c_wait_busy fndecl 0 28574 NULL nohasharray
136617 +disable_so_binder_thread_read_fndecl_28574 binder_thread_read fndecl 0 28574 &disable_so_ufx_i2c_wait_busy_fndecl_28574
136618 +disable_so_lock_trace_fndecl_28579 lock_trace fndecl 0 28579 NULL
136619 +disable_so_wl1251_acx_tid_cfg_fndecl_28584 wl1251_acx_tid_cfg fndecl 0 28584 NULL
136620 +disable_so__iwl_dbgfs_ss_force_write_fndecl_28587 _iwl_dbgfs_ss_force_write fndecl 0 28587 NULL
136621 +disable_so_uhci_map_status_fndecl_28591 uhci_map_status fndecl 0 28591 NULL
136622 +disable_so_ip_vs_add_dest_fndecl_28592 ip_vs_add_dest fndecl 0 28592 NULL
136623 +disable_so_snd_seq_prioq_cell_in_fndecl_28598 snd_seq_prioq_cell_in fndecl 0 28598 NULL
136624 +disable_so_iwl_mvm_read_external_nvm_fndecl_28604 iwl_mvm_read_external_nvm fndecl 0 28604 NULL
136625 +disable_so_is_valid_transition_fndecl_28610 is_valid_transition fndecl 0 28610 NULL
136626 +disable_so_ubifs_scan_a_node_fndecl_28611 ubifs_scan_a_node fndecl 0 28611 NULL
136627 +disable_so_bytesused_v4l2_plane_28616 bytesused v4l2_plane 0 28616 NULL
136628 +disable_so_ocfs2_dentry_attach_lock_fndecl_28620 ocfs2_dentry_attach_lock fndecl 0 28620 NULL
136629 +disable_so_mgmt_get_if_info_fndecl_28624 mgmt_get_if_info fndecl 0 28624 NULL
136630 +disable_so_late_analysis_fndecl_28627 late_analysis fndecl 0 28627 NULL
136631 +disable_so__get_block_create_0_fndecl_28632 _get_block_create_0 fndecl 0 28632 NULL
136632 +disable_so_drbd_recv_all_fndecl_28633 drbd_recv_all fndecl 0 28633 NULL
136633 +disable_so_ilo_ccb_verify_fndecl_28639 ilo_ccb_verify fndecl 0 28639 NULL
136634 +disable_so_ipath_register_ib_device_fndecl_28659 ipath_register_ib_device fndecl 0 28659 NULL
136635 +disable_so_btrfs_write_dirty_block_groups_fndecl_28661 btrfs_write_dirty_block_groups fndecl 0 28661 NULL
136636 +disable_so_hif_usb_send_mgmt_fndecl_28677 hif_usb_send_mgmt fndecl 0 28677 NULL
136637 +disable_so_set_input_gain_fndecl_28682 set_input_gain fndecl 0 28682 NULL
136638 +disable_so_ethtool_set_rxnfc_fndecl_28684 ethtool_set_rxnfc fndecl 0 28684 NULL
136639 +disable_so_xfs_swap_extents_fndecl_28692 xfs_swap_extents fndecl 0 28692 NULL
136640 +disable_so_data_len_rndis_data_hdr_28701 data_len rndis_data_hdr 0 28701 NULL
136641 +disable_so_snd_ac97_mixer_fndecl_28704 snd_ac97_mixer fndecl 0 28704 NULL
136642 +disable_so_mlx4_init_cmpt_table_fndecl_28706 mlx4_init_cmpt_table fndecl 0 28706 NULL
136643 +disable_so_zr36016_basic_test_fndecl_28711 zr36016_basic_test fndecl 0 28711 NULL
136644 +disable_so_radix_tree_extend_fndecl_28720 radix_tree_extend fndecl 0 28720 NULL nohasharray
136645 +disable_so_getexposure_fndecl_28720 getexposure fndecl 0 28720 &disable_so_radix_tree_extend_fndecl_28720
136646 +disable_so_xfs_rtcheck_alloc_range_fndecl_28722 xfs_rtcheck_alloc_range fndecl 0 28722 NULL
136647 +disable_so_iio_compute_scan_bytes_fndecl_28726 iio_compute_scan_bytes fndecl 0 28726 NULL
136648 +disable_so_build_avpair_blob_fndecl_28733 build_avpair_blob fndecl 0 28733 NULL
136649 +disable_so_skb_cow_data_fndecl_28734 skb_cow_data fndecl 0 28734 NULL
136650 +disable_so___audit_signal_info_fndecl_28736 __audit_signal_info fndecl 0 28736 NULL
136651 +disable_so_read_unconf_index_list_fndecl_28739 read_unconf_index_list fndecl 0 28739 NULL
136652 +disable_so_si_init_smc_spll_table_fndecl_28744 si_init_smc_spll_table fndecl 0 28744 NULL
136653 +disable_so_stk1160_vb2_setup_fndecl_28753 stk1160_vb2_setup fndecl 0 28753 NULL
136654 +disable_so_tm6000_ir_init_fndecl_28754 tm6000_ir_init fndecl 0 28754 NULL
136655 +disable_so___issue_creg_rw_fndecl_28778 __issue_creg_rw fndecl 0 28778 NULL
136656 +disable_so_matches_name_fndecl_28779 matches_name fndecl 0 28779 NULL
136657 +disable_so_airo_probe_fndecl_28785 airo_probe fndecl 0 28785 NULL
136658 +disable_so_ext4_xattr_block_find_fndecl_28788 ext4_xattr_block_find fndecl 0 28788 NULL
136659 +disable_so_parse_mf_symlink_fndecl_28795 parse_mf_symlink fndecl 0 28795 NULL
136660 +disable_so___btrfs_run_delayed_items_fndecl_28804 __btrfs_run_delayed_items fndecl 0 28804 NULL
136661 +disable_so_brcmf_fil_bsscfg_data_set_fndecl_28806 brcmf_fil_bsscfg_data_set fndecl 0 28806 NULL
136662 +disable_so_ide_queue_pc_tail_fndecl_28810 ide_queue_pc_tail fndecl 0 28810 NULL nohasharray
136663 +disable_so_bond_release_fndecl_28810 bond_release fndecl 0 28810 &disable_so_ide_queue_pc_tail_fndecl_28810
136664 +disable_so_vnic_wq_alloc_fndecl_28819 vnic_wq_alloc fndecl 0 28819 NULL
136665 +disable_so_ceph_build_auth_fndecl_28825 ceph_build_auth fndecl 0 28825 NULL
136666 +disable_so_sdio_memcpy_toio_fndecl_28828 sdio_memcpy_toio fndecl 0 28828 NULL
136667 +disable_so_isdn_net_force_dial_lp_fndecl_28829 isdn_net_force_dial_lp fndecl 0 28829 NULL
136668 +disable_so_vram_end_radeon_mc_28831 vram_end radeon_mc 0 28831 NULL
136669 +disable_so_br_mdb_copy_fndecl_28834 br_mdb_copy fndecl 0 28834 NULL
136670 +disable_so_ipmr_mfc_add_fndecl_28843 ipmr_mfc_add fndecl 0 28843 NULL
136671 +disable_so_get_ctl_type_fndecl_28853 get_ctl_type fndecl 0 28853 NULL
136672 +disable_so_dvb_usbv2_download_firmware_fndecl_28854 dvb_usbv2_download_firmware fndecl 0 28854 NULL
136673 +disable_so_tx_pending_ethtool_ringparam_28864 tx_pending ethtool_ringparam 0 28864 NULL
136674 +disable_so_i2c_master_recv_fndecl_28869 i2c_master_recv fndecl 0 28869 NULL
136675 +disable_so_rate_snd_pcm_oss_runtime_28878 rate snd_pcm_oss_runtime 0 28878 NULL
136676 +disable_so_rndis_bind_fndecl_28884 rndis_bind fndecl 0 28884 NULL
136677 +disable_so_zlib_inflateInit2_fndecl_28887 zlib_inflateInit2 fndecl 0 28887 NULL
136678 +disable_so_snd_p16v_pcm_open_playback_channel_fndecl_28905 snd_p16v_pcm_open_playback_channel fndecl 0 28905 NULL
136679 +disable_so_ocfs2_relink_block_group_fndecl_28906 ocfs2_relink_block_group fndecl 0 28906 NULL
136680 +disable_so_port_c67x00_urb_priv_28917 port c67x00_urb_priv 0 28917 NULL
136681 +disable_so___pm_runtime_resume_fndecl_28918 __pm_runtime_resume fndecl 0 28918 NULL
136682 +disable_so_irq_set_affinity_notifier_fndecl_28923 irq_set_affinity_notifier fndecl 0 28923 NULL nohasharray
136683 +disable_so_suspend_nvs_register_fndecl_28923 suspend_nvs_register fndecl 0 28923 &disable_so_irq_set_affinity_notifier_fndecl_28923
136684 +disable_so_config_reg_read_fndecl_28931 config_reg_read fndecl 0 28931 NULL
136685 +disable_so_qlcnic_set_real_num_queues_fndecl_28941 qlcnic_set_real_num_queues fndecl 0 28941 NULL
136686 +disable_so_vidioc_qbuf_fndecl_28964 vidioc_qbuf fndecl 0 28964 NULL
136687 +disable_so_ssb_pcmcia_cor_setup_fndecl_28983 ssb_pcmcia_cor_setup fndecl 0 28983 NULL
136688 +disable_so_prodigy192_init_fndecl_28988 prodigy192_init fndecl 0 28988 NULL
136689 +disable_so_vr_nor_mtd_setup_fndecl_29002 vr_nor_mtd_setup fndecl 0 29002 NULL nohasharray
136690 +disable_so_sel_write_create_fndecl_29002 sel_write_create fndecl 0 29002 &disable_so_vr_nor_mtd_setup_fndecl_29002
136691 +disable_so_snd_dmaengine_pcm_register_fndecl_29006 snd_dmaengine_pcm_register fndecl 0 29006 NULL
136692 +disable_so_ivtvfb_prep_dec_dma_to_device_fndecl_29011 ivtvfb_prep_dec_dma_to_device fndecl 0 29011 NULL
136693 +disable_so_elsa_cs_config_fndecl_29013 elsa_cs_config fndecl 0 29013 NULL
136694 +disable_so_wait_on_ctr_state_fndecl_29015 wait_on_ctr_state fndecl 0 29015 NULL
136695 +disable_so_ufx_enable_fndecl_29017 ufx_enable fndecl 0 29017 NULL
136696 +disable_so_setup_cs_fndecl_29019 setup_cs fndecl 0 29019 NULL
136697 +disable_so_dev_uc_add_fndecl_29020 dev_uc_add fndecl 0 29020 NULL nohasharray
136698 +disable_so_init_line_levels_fndecl_29020 init_line_levels fndecl 0 29020 &disable_so_dev_uc_add_fndecl_29020
136699 +disable_so_addr_ib_sge_29021 addr ib_sge 0 29021 NULL
136700 +disable_so___spi_queued_transfer_fndecl_29024 __spi_queued_transfer fndecl 0 29024 NULL
136701 +disable_so_dma_subdivide_fndecl_29027 dma_subdivide fndecl 0 29027 NULL
136702 +disable_so_gssx_dec_option_array_fndecl_29031 gssx_dec_option_array fndecl 0 29031 NULL
136703 +disable_so_mlx4_WRITE_PROMISC_fndecl_29038 mlx4_WRITE_PROMISC fndecl 0 29038 NULL
136704 +disable_so_pcan_usb_pro_drv_loaded_fndecl_29040 pcan_usb_pro_drv_loaded fndecl 0 29040 NULL
136705 +disable_so_drm_vblank_init_fndecl_29041 drm_vblank_init fndecl 0 29041 NULL
136706 +disable_so_create_input_ctls_fndecl_29043 create_input_ctls fndecl 0 29043 NULL
136707 +disable_so_nla_parse_fndecl_29053 nla_parse fndecl 0 29053 NULL
136708 +disable_so_str_to_user_fndecl_29056 str_to_user fndecl 0 29056 NULL
136709 +disable_so_dm_pool_open_thin_device_fndecl_29057 dm_pool_open_thin_device fndecl 0 29057 NULL
136710 +disable_so_uvc_query_ctrl_fndecl_29063 uvc_query_ctrl fndecl 0 29063 NULL
136711 +disable_so_mlx4_create_zones_fndecl_29064 mlx4_create_zones fndecl 0 29064 NULL
136712 +disable_so_xfs_btree_lookup_fndecl_29066 xfs_btree_lookup fndecl 0 29066 NULL
136713 +disable_so_qib_write_fndecl_29073 qib_write fndecl 0 29073 NULL
136714 +disable_so_ip_mc_add1_src_fndecl_29081 ip_mc_add1_src fndecl 0 29081 NULL
136715 +disable_so_ioc_hdrlist_fndecl_29102 ioc_hdrlist fndecl 0 29102 NULL
136716 +disable_so_iwl_mvm_power_send_cmd_fndecl_29104 iwl_mvm_power_send_cmd fndecl 0 29104 NULL
136717 +disable_so_dlm_ls_start_fndecl_29106 dlm_ls_start fndecl 0 29106 NULL
136718 +disable_so_do_ebt_get_ctl_fndecl_29117 do_ebt_get_ctl fndecl 0 29117 NULL
136719 +disable_so_bnx2x_load_cnic_fndecl_29122 bnx2x_load_cnic fndecl 0 29122 NULL
136720 +disable_so_pci_set_power_state_fndecl_29124 pci_set_power_state fndecl 0 29124 NULL
136721 +disable_so_rv6xx_dpm_init_fndecl_29134 rv6xx_dpm_init fndecl 0 29134 NULL
136722 +disable_so_brcmf_usb_probe_cb_fndecl_29142 brcmf_usb_probe_cb fndecl 0 29142 NULL nohasharray
136723 +disable_so_genprobe_ident_chips_fndecl_29142 genprobe_ident_chips fndecl 0 29142 &disable_so_brcmf_usb_probe_cb_fndecl_29142
136724 +disable_so_ti_command_out_sync_fndecl_29168 ti_command_out_sync fndecl 0 29168 NULL
136725 +disable_so_solo_g723_init_fndecl_29171 solo_g723_init fndecl 0 29171 NULL
136726 +disable_so_pvr2_v4l2_iosetup_fndecl_29174 pvr2_v4l2_iosetup fndecl 0 29174 NULL
136727 +disable_so_ext4_mb_init_backend_fndecl_29179 ext4_mb_init_backend fndecl 0 29179 NULL
136728 +disable_so_em28xx_i2c_read_block_fndecl_29188 em28xx_i2c_read_block fndecl 0 29188 NULL
136729 +disable_so_nl80211_set_reg_fndecl_29190 nl80211_set_reg fndecl 0 29190 NULL
136730 +disable_so_cciss_setintinfo_fndecl_29192 cciss_setintinfo fndecl 0 29192 NULL
136731 +disable_so_brcmf_config_wowl_pattern_fndecl_29198 brcmf_config_wowl_pattern fndecl 0 29198 NULL
136732 +disable_so_x25_parse_facilities_fndecl_29207 x25_parse_facilities fndecl 0 29207 NULL
136733 +disable_so_did_overwrite_ref_fndecl_29213 did_overwrite_ref fndecl 0 29213 NULL nohasharray
136734 +disable_so_ax25_rt_del_fndecl_29213 ax25_rt_del fndecl 0 29213 &disable_so_did_overwrite_ref_fndecl_29213
136735 +disable_so_efx_mcdi_check_supported_fndecl_29217 efx_mcdi_check_supported fndecl 0 29217 NULL
136736 +disable_so_register_pernet_operations_fndecl_29226 register_pernet_operations fndecl 0 29226 NULL
136737 +disable_so_au8522_probe_fndecl_29228 au8522_probe fndecl 0 29228 NULL
136738 +disable_so_nv50_pior_create_fndecl_29233 nv50_pior_create fndecl 0 29233 NULL
136739 +disable_so_dvb_dmxdev_buffer_write_fndecl_29234 dvb_dmxdev_buffer_write fndecl 0 29234 NULL
136740 +disable_so_wl12xx_acx_config_ps_fndecl_29242 wl12xx_acx_config_ps fndecl 0 29242 NULL
136741 +disable_so_gfs2_find_jhead_fndecl_29254 gfs2_find_jhead fndecl 0 29254 NULL
136742 +disable_so_nv50_fence_context_new_fndecl_29259 nv50_fence_context_new fndecl 0 29259 NULL
136743 +disable_so___i915_wait_request_fndecl_29260 __i915_wait_request fndecl 0 29260 NULL
136744 +disable_so_wait_for_msg_done_fndecl_29269 wait_for_msg_done fndecl 0 29269 NULL
136745 +disable_so_ssb_pcmcia_hardware_setup_fndecl_29276 ssb_pcmcia_hardware_setup fndecl 0 29276 NULL
136746 +disable_so_sst_validate_fw_image_fndecl_29278 sst_validate_fw_image fndecl 0 29278 NULL
136747 +disable_so_vmbus_open_fndecl_29289 vmbus_open fndecl 0 29289 NULL
136748 +disable_so_btmrvl_sdio_host_to_card_fndecl_29291 btmrvl_sdio_host_to_card fndecl 0 29291 NULL
136749 +disable_so_leb_start_ubi_device_29292 leb_start ubi_device 0 29292 NULL
136750 +disable_so_idetape_position_tape_fndecl_29294 idetape_position_tape fndecl 0 29294 NULL
136751 +disable_so_mmio_len_bnad_29303 mmio_len bnad 0 29303 NULL
136752 +disable_so_tail_ivtv_dma_page_info_29306 tail ivtv_dma_page_info 0 29306 NULL
136753 +disable_so_gnttab_grant_foreign_access_fndecl_29308 gnttab_grant_foreign_access fndecl 0 29308 NULL
136754 +disable_so_soc_mbus_image_size_fndecl_29311 soc_mbus_image_size fndecl 0 29311 NULL
136755 +disable_so_dwc3_gadget_init_fndecl_29327 dwc3_gadget_init fndecl 0 29327 NULL
136756 +disable_so_scan_map_fndecl_29331 scan_map fndecl 0 29331 NULL
136757 +disable_so_xfs_open_devices_fndecl_29337 xfs_open_devices fndecl 0 29337 NULL
136758 +disable_so_bnx2x_test_nvram_dirs_fndecl_29338 bnx2x_test_nvram_dirs fndecl 0 29338 NULL
136759 +disable_so_usb_driver_claim_interface_fndecl_29347 usb_driver_claim_interface fndecl 0 29347 NULL
136760 +disable_so_vmw_fill_compat_cap_fndecl_29350 vmw_fill_compat_cap fndecl 0 29350 NULL
136761 +disable_so_xfs_attr3_leaf_read_fndecl_29357 xfs_attr3_leaf_read fndecl 0 29357 NULL
136762 +disable_so_intel_fill_fb_ggtt_view_fndecl_29359 intel_fill_fb_ggtt_view fndecl 0 29359 NULL
136763 +disable_so_smsc75xx_set_mac_address_fndecl_29364 smsc75xx_set_mac_address fndecl 0 29364 NULL
136764 +disable_so_get_setup_data_size_fndecl_29366 get_setup_data_size fndecl 0 29366 NULL
136765 +disable_so_sta_info_insert_finish_fndecl_29367 sta_info_insert_finish fndecl 0 29367 NULL
136766 +disable_so_smscore_detect_mode_fndecl_29368 smscore_detect_mode fndecl 0 29368 NULL
136767 +disable_so_wl1251_set_key_type_fndecl_29371 wl1251_set_key_type fndecl 0 29371 NULL
136768 +disable_so_dummy_perform_transfer_fndecl_29372 dummy_perform_transfer fndecl 0 29372 NULL
136769 +disable_so_rt2800usb_autorun_detect_fndecl_29399 rt2800usb_autorun_detect fndecl 0 29399 NULL
136770 +disable_so_irq_set_msi_desc_off_fndecl_29400 irq_set_msi_desc_off fndecl 0 29400 NULL
136771 +disable_so_mls_compute_sid_fndecl_29416 mls_compute_sid fndecl 0 29416 NULL
136772 +disable_so_nfc_add_se_fndecl_29425 nfc_add_se fndecl 0 29425 NULL
136773 +disable_so_btrfsic_process_metablock_fndecl_29434 btrfsic_process_metablock fndecl 0 29434 NULL
136774 +disable_so_add_sctp_bind_addr_fndecl_29438 add_sctp_bind_addr fndecl 0 29438 NULL
136775 +disable_so_xfs_attr3_rmt_blocks_fndecl_29445 xfs_attr3_rmt_blocks fndecl 0 29445 NULL
136776 +disable_so_uvesafb_vbe_init_mode_fndecl_29455 uvesafb_vbe_init_mode fndecl 0 29455 NULL
136777 +disable_so_ebt_buf_add_fndecl_29456 ebt_buf_add fndecl 0 29456 NULL
136778 +disable_so_kvm_apic_has_interrupt_fndecl_29462 kvm_apic_has_interrupt fndecl 0 29462 NULL nohasharray
136779 +disable_so_mwifiex_cmd_reg_access_fndecl_29462 mwifiex_cmd_reg_access fndecl 0 29462 &disable_so_kvm_apic_has_interrupt_fndecl_29462
136780 +disable_so_umc_device_register_fndecl_29475 umc_device_register fndecl 0 29475 NULL
136781 +disable_so_macvtap_put_user_fndecl_29476 macvtap_put_user fndecl 0 29476 NULL nohasharray
136782 +disable_so_mwifiex_scan_channel_list_fndecl_29476 mwifiex_scan_channel_list fndecl 0 29476 &disable_so_macvtap_put_user_fndecl_29476
136783 +disable_so_gsmld_ioctl_fndecl_29477 gsmld_ioctl fndecl 0 29477 NULL
136784 +disable_so_osst_read_back_buffer_and_rewrite_fndecl_29478 osst_read_back_buffer_and_rewrite fndecl 0 29478 NULL
136785 +disable_so_rds_ib_recv_alloc_cache_fndecl_29494 rds_ib_recv_alloc_cache fndecl 0 29494 NULL
136786 +disable_so_cx23885_alsa_dma_init_fndecl_29499 cx23885_alsa_dma_init fndecl 0 29499 NULL
136787 +disable_so_ast_ttm_global_init_fndecl_29512 ast_ttm_global_init fndecl 0 29512 NULL
136788 +disable_so_ecryptfs_copy_filename_fndecl_29519 ecryptfs_copy_filename fndecl 0 29519 NULL
136789 +disable_so_avc_has_perm_fndecl_29523 avc_has_perm fndecl 0 29523 NULL
136790 +disable_so_sum_mgr_create_fndecl_29524 sum_mgr_create fndecl 0 29524 NULL
136791 +disable_so_amd64_configure_fndecl_29528 amd64_configure fndecl 0 29528 NULL
136792 +disable_so_ipath_user_sdma_init_payload_fndecl_29529 ipath_user_sdma_init_payload fndecl 0 29529 NULL
136793 +disable_so_vp702x_usb_inout_op_fndecl_29530 vp702x_usb_inout_op fndecl 0 29530 NULL
136794 +disable_so_proc_submiturb_fndecl_29531 proc_submiturb fndecl 0 29531 NULL
136795 +disable_so_pci_enable_msix_range_fndecl_29535 pci_enable_msix_range fndecl 0 29535 NULL
136796 +disable_so_nvme_error_status_fndecl_29541 nvme_error_status fndecl 0 29541 NULL
136797 +disable_so_uwb_rc_ie_add_one_fndecl_29542 uwb_rc_ie_add_one fndecl 0 29542 NULL
136798 +disable_so_zone_mem_ttm_mem_zone_29551 zone_mem ttm_mem_zone 0 29551 NULL
136799 +disable_so_get_daio_rsc_fndecl_29556 get_daio_rsc fndecl 0 29556 NULL
136800 +disable_so_btrfs_qgroup_account_fndecl_29557 btrfs_qgroup_account fndecl 0 29557 NULL
136801 +disable_so_iwl_mvm_send_cmd_pdu_fndecl_29560 iwl_mvm_send_cmd_pdu fndecl 0 29560 NULL
136802 +disable_so_nfnetlink_send_fndecl_29561 nfnetlink_send fndecl 0 29561 NULL
136803 +disable_so_calculate_iosize_fndecl_29562 calculate_iosize fndecl 0 29562 NULL
136804 +disable_so_xstateregs_get_fndecl_29585 xstateregs_get fndecl 0 29585 NULL
136805 +disable_so_main_first_ubifs_info_29606 main_first ubifs_info 0 29606 NULL
136806 +disable_so_atrtr_create_fndecl_29616 atrtr_create fndecl 0 29616 NULL
136807 +disable_so_eeepc_new_rfkill_fndecl_29627 eeepc_new_rfkill fndecl 0 29627 NULL
136808 +disable_so_fill_art_fndecl_29631 fill_art fndecl 0 29631 NULL
136809 +disable_so_read_and_add_raw_conns_fndecl_29632 read_and_add_raw_conns fndecl 0 29632 NULL
136810 +disable_so_vb_bytes_per_frame_cx18_stream_29644 vb_bytes_per_frame cx18_stream 0 29644 NULL
136811 +disable_so_syscall_result_st_buffer_29649 syscall_result st_buffer 0 29649 NULL
136812 +disable_so_ax25_rt_ioctl_fndecl_29652 ax25_rt_ioctl fndecl 0 29652 NULL
136813 +disable_so_ixgbe_dcb_hw_ets_fndecl_29654 ixgbe_dcb_hw_ets fndecl 0 29654 NULL
136814 +disable_so_rate_idx_ieee80211_rx_status_29659 rate_idx ieee80211_rx_status 0 29659 NULL
136815 +disable_so_ethtool_get_wol_fndecl_29662 ethtool_get_wol fndecl 0 29662 NULL
136816 +disable_so_intel_init_ring_buffer_fndecl_29667 intel_init_ring_buffer fndecl 0 29667 NULL
136817 +disable_so_rtsx_usb_seq_read_register_fndecl_29680 rtsx_usb_seq_read_register fndecl 0 29680 NULL
136818 +disable_so_is_connected_input_ep_fndecl_29693 is_connected_input_ep fndecl 0 29693 NULL
136819 +disable_so_mmc_app_set_bus_width_fndecl_29701 mmc_app_set_bus_width fndecl 0 29701 NULL
136820 +disable_so_hspi_status_check_timeout_fndecl_29712 hspi_status_check_timeout fndecl 0 29712 NULL
136821 +disable_so_usdhi6_cmd_flags_fndecl_29713 usdhi6_cmd_flags fndecl 0 29713 NULL
136822 +disable_so_ca91cx42_alloc_resource_fndecl_29717 ca91cx42_alloc_resource fndecl 0 29717 NULL
136823 +disable_so_ubifs_jnl_update_fndecl_29731 ubifs_jnl_update fndecl 0 29731 NULL
136824 +disable_so_add_control_with_pfx_fndecl_29746 add_control_with_pfx fndecl 0 29746 NULL
136825 +disable_so_mtd_lock_fndecl_29757 mtd_lock fndecl 0 29757 NULL
136826 +disable_so_wl1271_acx_ps_rx_streaming_fndecl_29764 wl1271_acx_ps_rx_streaming fndecl 0 29764 NULL
136827 +disable_so_snd_asihpi_mux_add_fndecl_29765 snd_asihpi_mux_add fndecl 0 29765 NULL
136828 +disable_so_cfg_reg_gazel_hw_29767 cfg_reg gazel_hw 0 29767 NULL
136829 +disable_so_drm_primary_helper_update_fndecl_29776 drm_primary_helper_update fndecl 0 29776 NULL
136830 +disable_so_mccic_register_fndecl_29782 mccic_register fndecl 0 29782 NULL
136831 +disable_so_bit_line_usb_fifo_29792 bit_line usb_fifo 0 29792 NULL
136832 +disable_so_flow_change_fndecl_29805 flow_change fndecl 0 29805 NULL
136833 +disable_so_i_disksize_ext4_inode_info_29807 i_disksize ext4_inode_info 0 29807 NULL
136834 +disable_so_dsp_free_router_ports_fndecl_29810 dsp_free_router_ports fndecl 0 29810 NULL
136835 +disable_so_ushc_hw_get_caps_fndecl_29835 ushc_hw_get_caps fndecl 0 29835 NULL
136836 +disable_so_write_orph_node_fndecl_29837 write_orph_node fndecl 0 29837 NULL
136837 +disable_so_mcam_cam_init_fndecl_29853 mcam_cam_init fndecl 0 29853 NULL nohasharray
136838 +disable_so_b43_phy_versioning_fndecl_29853 b43_phy_versioning fndecl 0 29853 &disable_so_mcam_cam_init_fndecl_29853
136839 +disable_so_snd_usb_mixer_status_create_fndecl_29856 snd_usb_mixer_status_create fndecl 0 29856 NULL
136840 +disable_so_mlx4_map_clr_int_fndecl_29867 mlx4_map_clr_int fndecl 0 29867 NULL
136841 +disable_so_mantis_dvb_init_fndecl_29877 mantis_dvb_init fndecl 0 29877 NULL
136842 +disable_so___fib_validate_source_fndecl_29878 __fib_validate_source fndecl 0 29878 NULL
136843 +disable_so_ubi_io_write_vid_hdr_fndecl_29879 ubi_io_write_vid_hdr fndecl 0 29879 NULL
136844 +disable_so_send_unlock_fndecl_29881 send_unlock fndecl 0 29881 NULL
136845 +disable_so_snd_emu10k1_tram_poke_fndecl_29884 snd_emu10k1_tram_poke fndecl 0 29884 NULL
136846 +disable_so_parport_write_fndecl_29886 parport_write fndecl 0 29886 NULL
136847 +disable_so_map_data_for_request_fndecl_29893 map_data_for_request fndecl 0 29893 NULL
136848 +disable_so_residual_st_cmdstatus_29897 residual st_cmdstatus 0 29897 NULL
136849 +disable_so_kvm_irqfd_fndecl_29901 kvm_irqfd fndecl 0 29901 NULL
136850 +disable_so___cached_dev_store_fndecl_29908 __cached_dev_store fndecl 0 29908 NULL
136851 +disable_so_ubi_wl_get_peb_fndecl_29912 ubi_wl_get_peb fndecl 0 29912 NULL
136852 +disable_so_create_endpoint_and_queue_bulk_fndecl_29913 create_endpoint_and_queue_bulk fndecl 0 29913 NULL
136853 +disable_so_ttm_ref_object_add_fndecl_29935 ttm_ref_object_add fndecl 0 29935 NULL
136854 +disable_so_pvr2_ioread_read_fndecl_29939 pvr2_ioread_read fndecl 0 29939 NULL
136855 +disable_so_spi_sync_fndecl_29944 spi_sync fndecl 0 29944 NULL
136856 +disable_so__ctl_eventenable_fndecl_29949 _ctl_eventenable fndecl 0 29949 NULL
136857 +disable_so_cciss_proc_write_fndecl_29952 cciss_proc_write fndecl 0 29952 NULL
136858 +disable_so_gpiochip_add_to_list_fndecl_29957 gpiochip_add_to_list fndecl 0 29957 NULL
136859 +disable_so_mutex_lock_killable_fndecl_29975 mutex_lock_killable fndecl 0 29975 NULL
136860 +disable_so_ubi_leb_change_fndecl_29986 ubi_leb_change fndecl 0 29986 NULL
136861 +disable_so_version_lock_fndecl_29995 version_lock fndecl 0 29995 NULL
136862 +disable_so_via_build_sg_info_fndecl_29998 via_build_sg_info fndecl 0 29998 NULL
136863 +disable_so_nvif_object_new_fndecl_29999 nvif_object_new fndecl 0 29999 NULL
136864 +disable_so_add_keys_fndecl_30015 add_keys fndecl 0 30015 NULL
136865 +disable_so__base_make_ioc_operational_fndecl_30016 _base_make_ioc_operational fndecl 0 30016 NULL
136866 +disable_so_atm_init_fndecl_30019 atm_init fndecl 0 30019 NULL
136867 +disable_so_netlbl_catmap_setbit_fndecl_30024 netlbl_catmap_setbit fndecl 0 30024 NULL
136868 +disable_so_ubi_leb_read_fndecl_30027 ubi_leb_read fndecl 0 30027 NULL
136869 +disable_so_wl1271_acx_bet_enable_fndecl_30031 wl1271_acx_bet_enable fndecl 0 30031 NULL
136870 +disable_so_ax88772_bind_fndecl_30032 ax88772_bind fndecl 0 30032 NULL
136871 +disable_so_max_wqes_mthca_limits_30037 max_wqes mthca_limits 0 30037 NULL
136872 +disable_so_dbAllocAny_fndecl_30049 dbAllocAny fndecl 0 30049 NULL
136873 +disable_so_tef6862_probe_fndecl_30050 tef6862_probe fndecl 0 30050 NULL
136874 +disable_so_add_swap_extent_fndecl_30065 add_swap_extent fndecl 0 30065 NULL
136875 +disable_so_b43_aphy_init_tssi2dbm_table_fndecl_30066 b43_aphy_init_tssi2dbm_table fndecl 0 30066 NULL
136876 +disable_so___smb_init_fndecl_30067 __smb_init fndecl 0 30067 NULL
136877 +disable_so_em28xx_read_reg_req_len_fndecl_30071 em28xx_read_reg_req_len fndecl 0 30071 NULL
136878 +disable_so_dvb_usb_download_firmware_fndecl_30076 dvb_usb_download_firmware fndecl 0 30076 NULL nohasharray
136879 +disable_so_pcmidi_snd_initialise_fndecl_30076 pcmidi_snd_initialise fndecl 0 30076 &disable_so_dvb_usb_download_firmware_fndecl_30076
136880 +disable_so_whci_add_cap_fndecl_30077 whci_add_cap fndecl 0 30077 NULL
136881 +disable_so_arp_req_get_fndecl_30093 arp_req_get fndecl 0 30093 NULL
136882 +disable_so_parse_policy_fndecl_30094 parse_policy fndecl 0 30094 NULL nohasharray
136883 +disable_so_id_watchdog_device_30094 id watchdog_device 0 30094 &disable_so_parse_policy_fndecl_30094
136884 +disable_so_phy_connect_direct_fndecl_30101 phy_connect_direct fndecl 0 30101 NULL
136885 +disable_so_ecryptfs_decode_and_decrypt_filename_fndecl_30104 ecryptfs_decode_and_decrypt_filename fndecl 0 30104 NULL
136886 +disable_so_reiserfs_security_init_fndecl_30105 reiserfs_security_init fndecl 0 30105 NULL
136887 +disable_so_lis3lv02d_init_device_fndecl_30115 lis3lv02d_init_device fndecl 0 30115 NULL
136888 +disable_so_ima_fw_from_file_fndecl_30119 ima_fw_from_file fndecl 0 30119 NULL
136889 +disable_so_iommu_group_add_device_fndecl_30137 iommu_group_add_device fndecl 0 30137 NULL
136890 +disable_so_invalidate_fastmap_fndecl_30142 invalidate_fastmap fndecl 0 30142 NULL
136891 +disable_so_iwl_mvm_load_d3_fw_fndecl_30160 iwl_mvm_load_d3_fw fndecl 0 30160 NULL
136892 +disable_so_mmio_base_drm_mga_private_30161 mmio_base drm_mga_private 0 30161 NULL
136893 +disable_so_dlm_add_member_fndecl_30166 dlm_add_member fndecl 0 30166 NULL
136894 +disable_so_tailsz_cifs_writedata_30171 tailsz cifs_writedata 0 30171 NULL
136895 +disable_so_dvb_init_fndecl_30176 dvb_init fndecl 0 30176 NULL
136896 +disable_so_kvm_vm_ioctl_get_dirty_log_fndecl_30180 kvm_vm_ioctl_get_dirty_log fndecl 0 30180 NULL
136897 +disable_so_codec_send_command_fndecl_30183 codec_send_command fndecl 0 30183 NULL
136898 +disable_so_i915_gem_setup_global_gtt_fndecl_30202 i915_gem_setup_global_gtt fndecl 0 30202 NULL nohasharray
136899 +disable_so_add_controls_fndecl_30202 add_controls fndecl 0 30202 &disable_so_i915_gem_setup_global_gtt_fndecl_30202
136900 +disable_so_dcbnl_cee_fill_fndecl_30203 dcbnl_cee_fill fndecl 0 30203 NULL
136901 +disable_so_fdtv_write_fndecl_30214 fdtv_write fndecl 0 30214 NULL
136902 +disable_so_ttm_copy_ttm_io_page_fndecl_30216 ttm_copy_ttm_io_page fndecl 0 30216 NULL
136903 +disable_so_nvme_trans_mode_select_fndecl_30218 nvme_trans_mode_select fndecl 0 30218 NULL
136904 +disable_so_tegra_spi_start_rx_dma_fndecl_30226 tegra_spi_start_rx_dma fndecl 0 30226 NULL
136905 +disable_so_digital_in_iso_dep_push_sod_fndecl_30227 digital_in_iso_dep_push_sod fndecl 0 30227 NULL
136906 +disable_so___add_keyed_refs_fndecl_30230 __add_keyed_refs fndecl 0 30230 NULL
136907 +disable_so_ipmi_init_msghandler_fndecl_30237 ipmi_init_msghandler fndecl 0 30237 NULL
136908 +disable_so_spdif_passthru_playback_get_resources_fndecl_30238 spdif_passthru_playback_get_resources fndecl 0 30238 NULL
136909 +disable_so_insert_inline_extent_backref_fndecl_30244 insert_inline_extent_backref fndecl 0 30244 NULL
136910 +disable_so_bond_enslave_fndecl_30253 bond_enslave fndecl 0 30253 NULL
136911 +disable_so_kvm_vcpu_ioctl_set_cpuid2_fndecl_30258 kvm_vcpu_ioctl_set_cpuid2 fndecl 0 30258 NULL nohasharray
136912 +disable_so_read_adv_features_fndecl_30258 read_adv_features fndecl 0 30258 &disable_so_kvm_vcpu_ioctl_set_cpuid2_fndecl_30258
136913 +disable_so_pci_msi_vec_count_fndecl_30261 pci_msi_vec_count fndecl 0 30261 NULL
136914 +disable_so_fm_drv_init_fndecl_30275 fm_drv_init fndecl 0 30275 NULL
136915 +disable_so_lpt_gc_lnum_fndecl_30290 lpt_gc_lnum fndecl 0 30290 NULL
136916 +disable_so_virtio_pci_legacy_probe_fndecl_30291 virtio_pci_legacy_probe fndecl 0 30291 NULL
136917 +disable_so_tcp_send_mss_fndecl_30292 tcp_send_mss fndecl 0 30292 NULL
136918 +disable_so_ethtool_get_tunable_fndecl_30294 ethtool_get_tunable fndecl 0 30294 NULL
136919 +disable_so_drm_modeset_lock_all_crtcs_fndecl_30295 drm_modeset_lock_all_crtcs fndecl 0 30295 NULL
136920 +disable_so_smsusb_start_streaming_fndecl_30299 smsusb_start_streaming fndecl 0 30299 NULL
136921 +disable_so_dlfb_realloc_framebuffer_fndecl_30318 dlfb_realloc_framebuffer fndecl 0 30318 NULL
136922 +disable_so_check_corruption_fndecl_30320 check_corruption fndecl 0 30320 NULL
136923 +disable_so_kvm_write_guest_cached_fndecl_30321 kvm_write_guest_cached fndecl 0 30321 NULL
136924 +disable_so_hfs_cat_find_brec_fndecl_30338 hfs_cat_find_brec fndecl 0 30338 NULL
136925 +disable_so_scan_pool_fndecl_30343 scan_pool fndecl 0 30343 NULL
136926 +disable_so_slcan_ioctl_fndecl_30348 slcan_ioctl fndecl 0 30348 NULL
136927 +disable_so_mic_setup_callbacks_fndecl_30356 mic_setup_callbacks fndecl 0 30356 NULL
136928 +disable_so_uvesafb_vbe_find_mode_fndecl_30365 uvesafb_vbe_find_mode fndecl 0 30365 NULL
136929 +disable_so_drm_gem_handle_create_tail_fndecl_30376 drm_gem_handle_create_tail fndecl 0 30376 NULL nohasharray
136930 +disable_so_ath6kl_bmi_reg_write_fndecl_30376 ath6kl_bmi_reg_write fndecl 0 30376 &disable_so_drm_gem_handle_create_tail_fndecl_30376
136931 +disable_so_devm_add_action_fndecl_30380 devm_add_action fndecl 0 30380 NULL
136932 +disable_so_get_callback_via_fndecl_30387 get_callback_via fndecl 0 30387 NULL
136933 +disable_so_dlm_user_unlock_fndecl_30393 dlm_user_unlock fndecl 0 30393 NULL
136934 +disable_so_zd_submit_waiting_urb_fndecl_30400 zd_submit_waiting_urb fndecl 0 30400 NULL
136935 +disable_so_sq_overhead_fndecl_30401 sq_overhead fndecl 0 30401 NULL nohasharray
136936 +disable_so_qlcnic_probe_fndecl_30401 qlcnic_probe fndecl 0 30401 &disable_so_sq_overhead_fndecl_30401
136937 +disable_so_decode_opaque_fixed_fndecl_30421 decode_opaque_fixed fndecl 0 30421 NULL
136938 +disable_so_fb_set_var_fndecl_30424 fb_set_var fndecl 0 30424 NULL
136939 +disable_so_ba0_addr_snd_cs46xx_30426 ba0_addr snd_cs46xx 0 30426 NULL
136940 +disable_so_ufx_usb_probe_fndecl_30427 ufx_usb_probe fndecl 0 30427 NULL
136941 +disable_so_width_bttv_fh_30432 width bttv_fh 0 30432 NULL
136942 +disable_so_xfs_uuid_mount_fndecl_30439 xfs_uuid_mount fndecl 0 30439 NULL
136943 +disable_so_ubifs_write_node_fndecl_30441 ubifs_write_node fndecl 0 30441 NULL nohasharray
136944 +disable_so_dlci_ioctl_fndecl_30441 dlci_ioctl fndecl 0 30441 &disable_so_ubifs_write_node_fndecl_30441
136945 +disable_so_ip6mr_sk_init_fndecl_30442 ip6mr_sk_init fndecl 0 30442 NULL
136946 +disable_so_hash_ipportip4_add_fndecl_30446 hash_ipportip4_add fndecl 0 30446 NULL
136947 +disable_so_zatm_init_one_fndecl_30459 zatm_init_one fndecl 0 30459 NULL
136948 +disable_so_mmap_region_fndecl_30460 mmap_region fndecl 0 30460 NULL
136949 +disable_so_call_usermodehelper_fndecl_30462 call_usermodehelper fndecl 0 30462 NULL
136950 +disable_so_setkeycode_fndecl_30472 setkeycode fndecl 0 30472 NULL
136951 +disable_so_nouveau_gem_new_fndecl_30476 nouveau_gem_new fndecl 0 30476 NULL
136952 +disable_so_conn_is_valid_transition_fndecl_30478 conn_is_valid_transition fndecl 0 30478 NULL
136953 +disable_so_tsl2550_probe_fndecl_30485 tsl2550_probe fndecl 0 30485 NULL
136954 +disable_so_rd_build_prot_space_fndecl_30490 rd_build_prot_space fndecl 0 30490 NULL
136955 +disable_so_iwl_dbgfs_netdetect_write_fndecl_30494 iwl_dbgfs_netdetect_write fndecl 0 30494 NULL
136956 +disable_so_saa7706h_mute_fndecl_30502 saa7706h_mute fndecl 0 30502 NULL
136957 +disable_so_mlx5_core_modify_cq_fndecl_30507 mlx5_core_modify_cq fndecl 0 30507 NULL
136958 +disable_so_i915_gem_wait_for_error_fndecl_30516 i915_gem_wait_for_error fndecl 0 30516 NULL
136959 +disable_so_enic_get_vnic_config_fndecl_30522 enic_get_vnic_config fndecl 0 30522 NULL
136960 +disable_so_i40e_alloc_arq_bufs_fndecl_30532 i40e_alloc_arq_bufs fndecl 0 30532 NULL
136961 +disable_so_wl1271_acx_set_preamble_fndecl_30548 wl1271_acx_set_preamble fndecl 0 30548 NULL
136962 +disable_so_ubifs_log_start_commit_fndecl_30550 ubifs_log_start_commit fndecl 0 30550 NULL
136963 +disable_so_mmc_io_rw_direct_host_fndecl_30553 mmc_io_rw_direct_host fndecl 0 30553 NULL nohasharray
136964 +disable_so_b43legacy_write_initvals_fndecl_30553 b43legacy_write_initvals fndecl 0 30553 &disable_so_mmc_io_rw_direct_host_fndecl_30553
136965 +disable_so_nfs_idmap_legacy_upcall_fndecl_30554 nfs_idmap_legacy_upcall fndecl 0 30554 NULL
136966 +disable_so_snd_hda_attach_beep_device_fndecl_30559 snd_hda_attach_beep_device fndecl 0 30559 NULL
136967 +disable_so___find_set_type_get_fndecl_30570 __find_set_type_get fndecl 0 30570 NULL
136968 +disable_so_snd_pcm_oss_write1_fndecl_30571 snd_pcm_oss_write1 fndecl 0 30571 NULL
136969 +disable_so_drm_ht_insert_item_fndecl_30574 drm_ht_insert_item fndecl 0 30574 NULL
136970 +disable_so_ni_set_mc_special_registers_fndecl_30577 ni_set_mc_special_registers fndecl 0 30577 NULL
136971 +disable_so___do_proc_dointvec_fndecl_30579 __do_proc_dointvec fndecl 0 30579 NULL
136972 +disable_so_ida_get_new_above_fndecl_30582 ida_get_new_above fndecl 0 30582 NULL
136973 +disable_so_readsize_acm_30592 readsize acm 0 30592 NULL
136974 +disable_so___ipath_get_user_pages_fndecl_30595 __ipath_get_user_pages fndecl 0 30595 NULL
136975 +disable_so_gru_dump_tfm_fndecl_30606 gru_dump_tfm fndecl 0 30606 NULL
136976 +disable_so_snd_compr_set_params_fndecl_30613 snd_compr_set_params fndecl 0 30613 NULL
136977 +disable_so_iscsit_handle_task_mgt_cmd_fndecl_30614 iscsit_handle_task_mgt_cmd fndecl 0 30614 NULL
136978 +disable_so___put_v4l2_format32_fndecl_30617 __put_v4l2_format32 fndecl 0 30617 NULL
136979 +disable_so_cm_init_qp_rts_attr_fndecl_30621 cm_init_qp_rts_attr fndecl 0 30621 NULL nohasharray
136980 +disable_so_bnx2x_test_nvram_ext_dirs_fndecl_30621 bnx2x_test_nvram_ext_dirs fndecl 0 30621 &disable_so_cm_init_qp_rts_attr_fndecl_30621
136981 +disable_so_ip_mc_join_group_fndecl_30625 ip_mc_join_group fndecl 0 30625 NULL
136982 +disable_so_vmw_resource_val_add_fndecl_30627 vmw_resource_val_add fndecl 0 30627 NULL
136983 +disable_so_ttusb_dec_boot_dsp_fndecl_30631 ttusb_dec_boot_dsp fndecl 0 30631 NULL
136984 +disable_so_evdev_handle_set_keycode_v2_fndecl_30633 evdev_handle_set_keycode_v2 fndecl 0 30633 NULL
136985 +disable_so_kobject_add_fndecl_30644 kobject_add fndecl 0 30644 NULL
136986 +disable_so_bond_sysfs_slave_add_fndecl_30658 bond_sysfs_slave_add fndecl 0 30658 NULL
136987 +disable_so_atk_add_fndecl_30669 atk_add fndecl 0 30669 NULL
136988 +disable_so_tun_put_user_fndecl_30676 tun_put_user fndecl 0 30676 NULL
136989 +disable_so_amd_iommu_init_device_fndecl_30684 amd_iommu_init_device fndecl 0 30684 NULL
136990 +disable_so_snd_hda_do_attach_fndecl_30688 snd_hda_do_attach fndecl 0 30688 NULL
136991 +disable_so_status_urb_30696 status urb 0 30696 NULL
136992 +disable_so_security_get_bools_fndecl_30703 security_get_bools fndecl 0 30703 NULL
136993 +disable_so_i1480_mac_fw_upload_fndecl_30710 i1480_mac_fw_upload fndecl 0 30710 NULL
136994 +disable_so_sched_autogroup_write_fndecl_30715 sched_autogroup_write fndecl 0 30715 NULL
136995 +disable_so_edd_init_fndecl_30717 edd_init fndecl 0 30717 NULL
136996 +disable_so_init_fpu_fndecl_30719 init_fpu fndecl 0 30719 NULL
136997 +disable_so_parse_device_fndecl_30723 parse_device fndecl 0 30723 NULL
136998 +disable_so_i40e_alloc_adminq_arq_ring_fndecl_30740 i40e_alloc_adminq_arq_ring fndecl 0 30740 NULL
136999 +disable_so_command_setvloffset_fndecl_30761 command_setvloffset fndecl 0 30761 NULL
137000 +disable_so_read_more_fndecl_30767 read_more fndecl 0 30767 NULL
137001 +disable_so_rc_register_device_fndecl_30771 rc_register_device fndecl 0 30771 NULL
137002 +disable_so_lp_write_fndecl_30772 lp_write fndecl 0 30772 NULL
137003 +disable_so_cx88_risc_databuffer_fndecl_30776 cx88_risc_databuffer fndecl 0 30776 NULL
137004 +disable_so_netup_write_i2c_fndecl_30793 netup_write_i2c fndecl 0 30793 NULL
137005 +disable_so_ipath_get_user_pages_fndecl_30794 ipath_get_user_pages fndecl 0 30794 NULL
137006 +disable_so_mtd_del_partition_fndecl_30795 mtd_del_partition fndecl 0 30795 NULL
137007 +disable_so_kobj_map_fndecl_30797 kobj_map fndecl 0 30797 NULL nohasharray
137008 +disable_so_set_mixer_defaults_fndecl_30797 set_mixer_defaults fndecl 0 30797 &disable_so_kobj_map_fndecl_30797 nohasharray
137009 +disable_so_drm_mode_group_init_legacy_group_fndecl_30797 drm_mode_group_init_legacy_group fndecl 0 30797 &disable_so_set_mixer_defaults_fndecl_30797
137010 +disable_so_mvs_pci_init_fndecl_30802 mvs_pci_init fndecl 0 30802 NULL
137011 +disable_so_xfs_ialloc_read_agi_fndecl_30810 xfs_ialloc_read_agi fndecl 0 30810 NULL
137012 +disable_so_wl1271_acx_slot_fndecl_30813 wl1271_acx_slot fndecl 0 30813 NULL
137013 +disable_so_ivtvfb_ioctl_fndecl_30818 ivtvfb_ioctl fndecl 0 30818 NULL
137014 +disable_so_tg3_nvram_write_block_using_eeprom_fndecl_30823 tg3_nvram_write_block_using_eeprom fndecl 0 30823 NULL
137015 +disable_so_wl1271_cmd_configure_fndecl_30829 wl1271_cmd_configure fndecl 0 30829 NULL
137016 +disable_so_nj_init_card_fndecl_30845 nj_init_card fndecl 0 30845 NULL nohasharray
137017 +disable_so_mlx4_NOP_fndecl_30845 mlx4_NOP fndecl 0 30845 &disable_so_nj_init_card_fndecl_30845
137018 +disable_so_copy_msghdr_from_user_fndecl_30861 copy_msghdr_from_user fndecl 0 30861 NULL
137019 +disable_so_spi_sh_send_fndecl_30862 spi_sh_send fndecl 0 30862 NULL
137020 +disable_so_pre_write_mst_fixup_fndecl_30866 pre_write_mst_fixup fndecl 0 30866 NULL
137021 +disable_so_xfs_qm_dqattach_one_fndecl_30870 xfs_qm_dqattach_one fndecl 0 30870 NULL
137022 +disable_so_do_sync_fndecl_30871 do_sync fndecl 0 30871 NULL
137023 +disable_so_sddr09_send_command_fndecl_30873 sddr09_send_command fndecl 0 30873 NULL
137024 +disable_so_ocfs2_claim_suballoc_bits_fndecl_30876 ocfs2_claim_suballoc_bits fndecl 0 30876 NULL
137025 +disable_so_wa_create_fndecl_30883 wa_create fndecl 0 30883 NULL
137026 +disable_so_snd_seq_ioctl_set_queue_client_fndecl_30884 snd_seq_ioctl_set_queue_client fndecl 0 30884 NULL
137027 +disable_so_mmc_sd_switch_hs_fndecl_30885 mmc_sd_switch_hs fndecl 0 30885 NULL
137028 +disable_so_ocfs2_xattr_get_rec_fndecl_30887 ocfs2_xattr_get_rec fndecl 0 30887 NULL
137029 +disable_so_addr_nvkm_fifo_chan_30902 addr nvkm_fifo_chan 0 30902 NULL
137030 +disable_so_lmLogInit_fndecl_30904 lmLogInit fndecl 0 30904 NULL
137031 +disable_so_crypto_register_algs_fndecl_30905 crypto_register_algs fndecl 0 30905 NULL
137032 +disable_so_tb_eeprom_read_n_fndecl_30916 tb_eeprom_read_n fndecl 0 30916 NULL
137033 +disable_so___erst_read_from_storage_fndecl_30921 __erst_read_from_storage fndecl 0 30921 NULL
137034 +disable_so_chipio_write_fndecl_30923 chipio_write fndecl 0 30923 NULL
137035 +disable_so_cudlength_x25_calluserdata_30930 cudlength x25_calluserdata 0 30930 NULL
137036 +disable_so_dvb_usb_adapter_frontend_init_fndecl_30936 dvb_usb_adapter_frontend_init fndecl 0 30936 NULL
137037 +disable_so_xenbus_printf_fndecl_30938 xenbus_printf fndecl 0 30938 NULL
137038 +disable_so_snd_rawmidi_open_fndecl_30943 snd_rawmidi_open fndecl 0 30943 NULL
137039 +disable_so_status_autofs_wait_queue_30950 status autofs_wait_queue 0 30950 NULL
137040 +disable_so_lowpan_control_write_fndecl_30960 lowpan_control_write fndecl 0 30960 NULL
137041 +disable_so_ax25_rt_opt_fndecl_30962 ax25_rt_opt fndecl 0 30962 NULL
137042 +disable_so_vx_transfer_end_fndecl_30966 vx_transfer_end fndecl 0 30966 NULL
137043 +disable_so_get_leaf_fndecl_30972 get_leaf fndecl 0 30972 NULL
137044 +disable_so_avail_out_z_stream_s_30974 avail_out z_stream_s 0 30974 NULL
137045 +disable_so_ext4_mark_iloc_dirty_fndecl_30980 ext4_mark_iloc_dirty fndecl 0 30980 NULL
137046 +disable_so_samsung_debugfs_init_fndecl_30993 samsung_debugfs_init fndecl 0 30993 NULL
137047 +disable_so_s_victim_ino_logfs_super_30996 s_victim_ino logfs_super 0 30996 NULL
137048 +disable_so_smb2_clone_range_fndecl_31004 smb2_clone_range fndecl 0 31004 NULL
137049 +disable_so_btrfs_search_slot_fndecl_31011 btrfs_search_slot fndecl 0 31011 NULL
137050 +disable_so_snd_riptide_create_fndecl_31012 snd_riptide_create fndecl 0 31012 NULL
137051 +disable_so_mount_ubifs_fndecl_31018 mount_ubifs fndecl 0 31018 NULL
137052 +disable_so_mic_sync_dma_fndecl_31034 mic_sync_dma fndecl 0 31034 NULL
137053 +disable_so_iwlagn_mac_resume_fndecl_31035 iwlagn_mac_resume fndecl 0 31035 NULL
137054 +disable_so_i40e_set_num_rings_in_vsi_fndecl_31040 i40e_set_num_rings_in_vsi fndecl 0 31040 NULL
137055 +disable_so_mlx4_SET_ICM_SIZE_fndecl_31042 mlx4_SET_ICM_SIZE fndecl 0 31042 NULL
137056 +disable_so_dsp_registers_phys_echoaudio_31045 dsp_registers_phys echoaudio 0 31045 NULL
137057 +disable_so_submit_urbs_fndecl_31064 submit_urbs fndecl 0 31064 NULL nohasharray
137058 +disable_so_si_lf_eblk_bfs_sb_info_31064 si_lf_eblk bfs_sb_info 0 31064 &disable_so_submit_urbs_fndecl_31064
137059 +disable_so___fuse_direct_read_fndecl_31067 __fuse_direct_read fndecl 0 31067 NULL
137060 +disable_so_rfcomm_sock_getsockopt_old_fndecl_31070 rfcomm_sock_getsockopt_old fndecl 0 31070 NULL
137061 +disable_so_cpufreq_table_validate_and_show_fndecl_31074 cpufreq_table_validate_and_show fndecl 0 31074 NULL
137062 +disable_so_memblock_find_in_range_node_fndecl_31075 memblock_find_in_range_node fndecl 0 31075 NULL
137063 +disable_so_drm_mode_group_init_fndecl_31080 drm_mode_group_init fndecl 0 31080 NULL
137064 +disable_so_nvme_trans_fmt_get_parm_header_fndecl_31087 nvme_trans_fmt_get_parm_header fndecl 0 31087 NULL
137065 +disable_so_tm6000_set_reg_fndecl_31090 tm6000_set_reg fndecl 0 31090 NULL
137066 +disable_so_max3421_transfer_in_done_fndecl_31109 max3421_transfer_in_done fndecl 0 31109 NULL
137067 +disable_so___decode_pools_fndecl_31115 __decode_pools fndecl 0 31115 NULL
137068 +disable_so_mwifiex_usb_probe_fndecl_31127 mwifiex_usb_probe fndecl 0 31127 NULL
137069 +disable_so_xfs_da_mount_fndecl_31130 xfs_da_mount fndecl 0 31130 NULL
137070 +disable_so_mlx4_bitmap_init_fndecl_31138 mlx4_bitmap_init fndecl 0 31138 NULL
137071 +disable_so_cpuidle_register_driver_fndecl_31155 cpuidle_register_driver fndecl 0 31155 NULL
137072 +disable_so_pcrypt_cpumask_change_notify_fndecl_31162 pcrypt_cpumask_change_notify fndecl 0 31162 NULL
137073 +disable_so_compat_get_fd_set_fndecl_31173 compat_get_fd_set fndecl 0 31173 NULL
137074 +disable_so_sel_netnode_sid_slow_fndecl_31175 sel_netnode_sid_slow fndecl 0 31175 NULL
137075 +disable_so_ocfs2_last_eb_is_empty_fndecl_31181 ocfs2_last_eb_is_empty fndecl 0 31181 NULL
137076 +disable_so_asix_set_eeprom_fndecl_31183 asix_set_eeprom fndecl 0 31183 NULL
137077 +disable_so_con_do_clear_unimap_fndecl_31185 con_do_clear_unimap fndecl 0 31185 NULL
137078 +disable_so_ch_set_voltag_fndecl_31201 ch_set_voltag fndecl 0 31201 NULL
137079 +disable_so_check_i2c_image_fndecl_31225 check_i2c_image fndecl 0 31225 NULL
137080 +disable_so_choose_log_fs_mgm_entry_size_fndecl_31228 choose_log_fs_mgm_entry_size fndecl 0 31228 NULL
137081 +disable_so_kaweth_control_fndecl_31233 kaweth_control fndecl 0 31233 NULL
137082 +disable_so_drbd_adm_connect_fndecl_31239 drbd_adm_connect fndecl 0 31239 NULL
137083 +disable_so_cmd_error_zd_usb_31242 cmd_error zd_usb 0 31242 NULL
137084 +disable_so_check_tp_fndecl_31244 check_tp fndecl 0 31244 NULL
137085 +disable_so_rsvp_change_fndecl_31249 rsvp_change fndecl 0 31249 NULL
137086 +disable_so___list_lru_init_fndecl_31251 __list_lru_init fndecl 0 31251 NULL
137087 +disable_so_mgmt_alloc_cmd_data_fndecl_31270 mgmt_alloc_cmd_data fndecl 0 31270 NULL
137088 +disable_so_hpsa_ioctl32_big_passthru_fndecl_31278 hpsa_ioctl32_big_passthru fndecl 0 31278 NULL
137089 +disable_so_irq_pcmcia_device_31283 irq pcmcia_device 0 31283 NULL
137090 +disable_so_mmap_base_kioctx_31285 mmap_base kioctx 0 31285 NULL
137091 +disable_so_igb_enable_sriov_fndecl_31288 igb_enable_sriov fndecl 0 31288 NULL
137092 +disable_so_isdn_net_getpeer_fndecl_31297 isdn_net_getpeer fndecl 0 31297 NULL
137093 +disable_so_copy_urb_data_to_user_fndecl_31298 copy_urb_data_to_user fndecl 0 31298 NULL
137094 +disable_so_send_common_fndecl_31299 send_common fndecl 0 31299 NULL
137095 +disable_so_ar_context_init_fndecl_31300 ar_context_init fndecl 0 31300 NULL nohasharray
137096 +disable_so_vcc_getsockopt_fndecl_31300 vcc_getsockopt fndecl 0 31300 &disable_so_ar_context_init_fndecl_31300
137097 +disable_so_tty_send_xchar_fndecl_31302 tty_send_xchar fndecl 0 31302 NULL
137098 +disable_so_mgmt_cmd_status_fndecl_31306 mgmt_cmd_status fndecl 0 31306 NULL
137099 +disable_so_wl1271_acx_bcn_dtim_options_fndecl_31312 wl1271_acx_bcn_dtim_options fndecl 0 31312 NULL
137100 +disable_so_regulator_ena_gpio_ctrl_fndecl_31318 regulator_ena_gpio_ctrl fndecl 0 31318 NULL nohasharray
137101 +disable_so_mlx4_en_config_rss_qp_fndecl_31318 mlx4_en_config_rss_qp fndecl 0 31318 &disable_so_regulator_ena_gpio_ctrl_fndecl_31318
137102 +disable_so_isl29003_init_client_fndecl_31327 isl29003_init_client fndecl 0 31327 NULL
137103 +disable_so_sctp_primitive_ASCONF_fndecl_31329 sctp_primitive_ASCONF fndecl 0 31329 NULL
137104 +disable_so_ubifs_tnc_add_fndecl_31332 ubifs_tnc_add fndecl 0 31332 NULL
137105 +disable_so_picolcd_init_leds_fndecl_31333 picolcd_init_leds fndecl 0 31333 NULL
137106 +disable_so_ufs_bitmap_search_fndecl_31338 ufs_bitmap_search fndecl 0 31338 NULL
137107 +disable_so_xfs_btree_check_lptr_fndecl_31339 xfs_btree_check_lptr fndecl 0 31339 NULL nohasharray
137108 +disable_so_retval_subprocess_info_31339 retval subprocess_info 0 31339 &disable_so_xfs_btree_check_lptr_fndecl_31339
137109 +disable_so_rocker_desc_err_fndecl_31340 rocker_desc_err fndecl 0 31340 NULL
137110 +disable_so_get_elem_size_fndecl_31341 get_elem_size fndecl 0 31341 NULL
137111 +disable_so_sdio_writesb_fndecl_31345 sdio_writesb fndecl 0 31345 NULL
137112 +disable_so_wl1271_acx_feature_cfg_fndecl_31346 wl1271_acx_feature_cfg fndecl 0 31346 NULL
137113 +disable_so_xfs_attr_rmtval_get_fndecl_31359 xfs_attr_rmtval_get fndecl 0 31359 NULL nohasharray
137114 +disable_so_codec_set_converter_format_fndecl_31359 codec_set_converter_format fndecl 0 31359 &disable_so_xfs_attr_rmtval_get_fndecl_31359
137115 +disable_so_zr36050_basic_test_fndecl_31365 zr36050_basic_test fndecl 0 31365 NULL
137116 +disable_so_dev_get_valid_name_fndecl_31369 dev_get_valid_name fndecl 0 31369 NULL
137117 +disable_so_wl1271_acx_rts_threshold_fndecl_31375 wl1271_acx_rts_threshold fndecl 0 31375 NULL
137118 +disable_so_gfs2_meta_read_fndecl_31379 gfs2_meta_read fndecl 0 31379 NULL
137119 +disable_so_do_send_sig_info_fndecl_31385 do_send_sig_info fndecl 0 31385 NULL
137120 +disable_so_wl1271_acx_host_if_cfg_bitmap_fndecl_31391 wl1271_acx_host_if_cfg_bitmap fndecl 0 31391 NULL
137121 +disable_so_asd_store_update_bios_fndecl_31398 asd_store_update_bios fndecl 0 31398 NULL nohasharray
137122 +disable_so_ip_tunnel_bind_dev_fndecl_31398 ip_tunnel_bind_dev fndecl 0 31398 &disable_so_asd_store_update_bios_fndecl_31398
137123 +disable_so_snd_virmidi_dev_attach_seq_fndecl_31399 snd_virmidi_dev_attach_seq fndecl 0 31399 NULL
137124 +disable_so_ieee80211_probe_auth_fndecl_31410 ieee80211_probe_auth fndecl 0 31410 NULL
137125 +disable_so___dev_mc_add_fndecl_31419 __dev_mc_add fndecl 0 31419 NULL
137126 +disable_so_ima_calc_file_hash_tfm_fndecl_31422 ima_calc_file_hash_tfm fndecl 0 31422 NULL
137127 +disable_so_recovery_offset_md_rdev_31426 recovery_offset md_rdev 0 31426 NULL
137128 +disable_so_snd_intel8x0_ich_chip_reset_fndecl_31440 snd_intel8x0_ich_chip_reset fndecl 0 31440 NULL
137129 +disable_so_igb_ptp_set_ts_config_fndecl_31444 igb_ptp_set_ts_config fndecl 0 31444 NULL
137130 +disable_so_sram_test_and_clear_fndecl_31449 sram_test_and_clear fndecl 0 31449 NULL
137131 +disable_so___ppa_attach_fndecl_31450 __ppa_attach fndecl 0 31450 NULL
137132 +disable_so_snd_pcm_hw_constraint_mask64_fndecl_31457 snd_pcm_hw_constraint_mask64 fndecl 0 31457 NULL
137133 +disable_so_ima_parse_add_rule_fndecl_31458 ima_parse_add_rule fndecl 0 31458 NULL
137134 +disable_so_drbd_send_all_fndecl_31468 drbd_send_all fndecl 0 31468 NULL
137135 +disable_so_ip_encap_hlen_fndecl_31469 ip_encap_hlen fndecl 0 31469 NULL
137136 +disable_so_c2_register_device_fndecl_31480 c2_register_device fndecl 0 31480 NULL
137137 +disable_so_old_dev_ioctl_fndecl_31483 old_dev_ioctl fndecl 0 31483 NULL
137138 +disable_so_xfs_rtcopy_summary_fndecl_31484 xfs_rtcopy_summary fndecl 0 31484 NULL
137139 +disable_so_xfs_attr_rmtval_copyout_fndecl_31485 xfs_attr_rmtval_copyout fndecl 0 31485 NULL
137140 +disable_so_ocfs2_init_slot_info_fndecl_31488 ocfs2_init_slot_info fndecl 0 31488 NULL
137141 +disable_so_alloc_pa_mkey_fndecl_31501 alloc_pa_mkey fndecl 0 31501 NULL
137142 +disable_so_ipc_tx_message_fndecl_31507 ipc_tx_message fndecl 0 31507 NULL
137143 +disable_so_eni_open_fndecl_31521 eni_open fndecl 0 31521 NULL
137144 +disable_so_ext4_mb_init_group_fndecl_31530 ext4_mb_init_group fndecl 0 31530 NULL nohasharray
137145 +disable_so_dvb_usbv2_init_fndecl_31530 dvb_usbv2_init fndecl 0 31530 &disable_so_ext4_mb_init_group_fndecl_31530
137146 +disable_so_t4vf_get_sge_params_fndecl_31538 t4vf_get_sge_params fndecl 0 31538 NULL
137147 +disable_so_sctp_send_asconf_del_ip_fndecl_31540 sctp_send_asconf_del_ip fndecl 0 31540 NULL
137148 +disable_so_do_sigpending_fndecl_31541 do_sigpending fndecl 0 31541 NULL
137149 +disable_so_btrfs_write_and_wait_transaction_fndecl_31547 btrfs_write_and_wait_transaction fndecl 0 31547 NULL
137150 +disable_so_e1000_do_write_eeprom_fndecl_31552 e1000_do_write_eeprom fndecl 0 31552 NULL
137151 +disable_so_kernel_physical_mapping_init_fndecl_31561 kernel_physical_mapping_init fndecl 0 31561 NULL
137152 +disable_so_ihead_lnum_ubifs_info_31563 ihead_lnum ubifs_info 0 31563 NULL nohasharray
137153 +disable_so_ip_rt_ioctl_fndecl_31563 ip_rt_ioctl fndecl 0 31563 &disable_so_ihead_lnum_ubifs_info_31563
137154 +disable_so__regmap_write_fndecl_31576 _regmap_write fndecl 0 31576 NULL
137155 +disable_so_sr_do_ioctl_fndecl_31593 sr_do_ioctl fndecl 0 31593 NULL
137156 +disable_so_ino_cache_progress_btrfs_root_31596 ino_cache_progress btrfs_root 0 31596 NULL
137157 +disable_so_smscore_gpio_set_level_fndecl_31608 smscore_gpio_set_level fndecl 0 31608 NULL
137158 +disable_so_wil_read_file_ioblob_fndecl_31621 wil_read_file_ioblob fndecl 0 31621 NULL
137159 +disable_so_wl1271_cmd_radio_parms_fndecl_31629 wl1271_cmd_radio_parms fndecl 0 31629 NULL
137160 +disable_so_snd_als300_new_pcm_fndecl_31630 snd_als300_new_pcm fndecl 0 31630 NULL
137161 +disable_so_ci_parse_power_table_fndecl_31641 ci_parse_power_table fndecl 0 31641 NULL
137162 +disable_so_mlx5_create_map_eq_fndecl_31646 mlx5_create_map_eq fndecl 0 31646 NULL
137163 +disable_so_ext4_xattr_set_entry_fndecl_31652 ext4_xattr_set_entry fndecl 0 31652 NULL
137164 +disable_so_init_hw_fndecl_31653 init_hw fndecl 0 31653 NULL
137165 +disable_so_suspend_set_state_fndecl_31655 suspend_set_state fndecl 0 31655 NULL
137166 +disable_so_ttm_agp_tt_populate_fndecl_31656 ttm_agp_tt_populate fndecl 0 31656 NULL
137167 +disable_so_hidp_connection_del_fndecl_31658 hidp_connection_del fndecl 0 31658 NULL
137168 +disable_so_e1000_write_eeprom_microwire_fndecl_31659 e1000_write_eeprom_microwire fndecl 0 31659 NULL
137169 +disable_so_ext4_map_blocks_fndecl_31663 ext4_map_blocks fndecl 0 31663 NULL
137170 +disable_so_hp_hpet_phys_hpets_31664 hp_hpet_phys hpets 0 31664 NULL
137171 +disable_so_sf1_write_fndecl_31676 sf1_write fndecl 0 31676 NULL
137172 +disable_so_sctp_v6_protosw_init_fndecl_31685 sctp_v6_protosw_init fndecl 0 31685 NULL
137173 +disable_so_gt215_link_train_fndecl_31694 gt215_link_train fndecl 0 31694 NULL
137174 +disable_so_put_v4l2_edid32_fndecl_31716 put_v4l2_edid32 fndecl 0 31716 NULL
137175 +disable_so_btrfs_add_link_fndecl_31718 btrfs_add_link fndecl 0 31718 NULL
137176 +disable_so___genwqe_execute_raw_ddcb_fndecl_31720 __genwqe_execute_raw_ddcb fndecl 0 31720 NULL
137177 +disable_so_scsiback_gnttab_data_map_batch_fndecl_31722 scsiback_gnttab_data_map_batch fndecl 0 31722 NULL
137178 +disable_so_offset_nfs_pgio_args_31727 offset nfs_pgio_args 0 31727 NULL
137179 +disable_so_snd_bt87x_create_fndecl_31731 snd_bt87x_create fndecl 0 31731 NULL nohasharray
137180 +disable_so_iwl_mvm_legacy_rate_to_mac80211_idx_fndecl_31731 iwl_mvm_legacy_rate_to_mac80211_idx fndecl 0 31731 &disable_so_snd_bt87x_create_fndecl_31731
137181 +disable_so_r100_packet3_check_fndecl_31741 r100_packet3_check fndecl 0 31741 NULL
137182 +disable_so_isdn_ppp_dev_ioctl_stats_fndecl_31746 isdn_ppp_dev_ioctl_stats fndecl 0 31746 NULL
137183 +disable_so_asd_write_flash_seg_fndecl_31748 asd_write_flash_seg fndecl 0 31748 NULL
137184 +disable_so_wl12xx_cmd_stop_channel_switch_fndecl_31750 wl12xx_cmd_stop_channel_switch fndecl 0 31750 NULL
137185 +disable_so_uwb_rc_add_fndecl_31759 uwb_rc_add fndecl 0 31759 NULL
137186 +disable_so_ring_wait_for_space_fndecl_31770 ring_wait_for_space fndecl 0 31770 NULL
137187 +disable_so_i40e_init_msix_fndecl_31776 i40e_init_msix fndecl 0 31776 NULL
137188 +disable_so_dm_exception_store_create_fndecl_31777 dm_exception_store_create fndecl 0 31777 NULL
137189 +disable_so_endpt_ubifs_scan_leb_31792 endpt ubifs_scan_leb 0 31792 NULL
137190 +disable_so_snd_timer_open_fndecl_31807 snd_timer_open fndecl 0 31807 NULL
137191 +disable_so_ethtool_get_sset_info_fndecl_31811 ethtool_get_sset_info fndecl 0 31811 NULL
137192 +disable_so_secure_dccp_sequence_number_fndecl_31815 secure_dccp_sequence_number fndecl 0 31815 NULL
137193 +disable_so_spu_read_fndecl_31817 spu_read fndecl 0 31817 NULL
137194 +disable_so_disarm_req_delay_fndecl_31821 disarm_req_delay fndecl 0 31821 NULL
137195 +disable_so_intel_alloc_ringbuffer_obj_fndecl_31840 intel_alloc_ringbuffer_obj fndecl 0 31840 NULL
137196 +disable_so_bcma_sprom_check_crc_fndecl_31852 bcma_sprom_check_crc fndecl 0 31852 NULL
137197 +disable_so_isdn_ppp_dev_ioctl_fndecl_31861 isdn_ppp_dev_ioctl fndecl 0 31861 NULL
137198 +disable_so_hso_create_shared_int_fndecl_31862 hso_create_shared_int fndecl 0 31862 NULL
137199 +disable_so_ps2mult_create_port_fndecl_31863 ps2mult_create_port fndecl 0 31863 NULL
137200 +disable_so_nvme_trans_format_unit_fndecl_31865 nvme_trans_format_unit fndecl 0 31865 NULL
137201 +disable_so_error_getset_keycode_data_31871 error getset_keycode_data 0 31871 NULL
137202 +disable_so_set_pages_array_uc_fndecl_31887 set_pages_array_uc fndecl 0 31887 NULL
137203 +disable_so_ocfs2_reserve_local_alloc_bits_fndecl_31894 ocfs2_reserve_local_alloc_bits fndecl 0 31894 NULL
137204 +disable_so_tower_write_fndecl_31895 tower_write fndecl 0 31895 NULL
137205 +disable_so_msb_reset_fndecl_31902 msb_reset fndecl 0 31902 NULL
137206 +disable_so_xfs_qm_dqattach_locked_fndecl_31906 xfs_qm_dqattach_locked fndecl 0 31906 NULL
137207 +disable_so_i_ipmi_set_timeout_fndecl_31922 i_ipmi_set_timeout fndecl 0 31922 NULL
137208 +disable_so___dev_set_allmulti_fndecl_31933 __dev_set_allmulti fndecl 0 31933 NULL
137209 +disable_so_rmmio_size_radeon_device_31934 rmmio_size radeon_device 0 31934 NULL
137210 +disable_so_shash_setkey_unaligned_fndecl_31935 shash_setkey_unaligned fndecl 0 31935 NULL
137211 +disable_so_interact_connect_fndecl_31939 interact_connect fndecl 0 31939 NULL
137212 +disable_so_snd_mixer_oss_open_fndecl_31941 snd_mixer_oss_open fndecl 0 31941 NULL
137213 +disable_so_sas_smp_get_phy_events_fndecl_31982 sas_smp_get_phy_events fndecl 0 31982 NULL
137214 +disable_so_rebuild_lun_table_fndecl_31987 rebuild_lun_table fndecl 0 31987 NULL
137215 +disable_so_ax25_rt_autobind_fndecl_31989 ax25_rt_autobind fndecl 0 31989 NULL
137216 +disable_so_qib_create_qp_fndecl_31990 qib_create_qp fndecl 0 31990 NULL
137217 +disable_so_ath9k_tx99_send_fndecl_31993 ath9k_tx99_send fndecl 0 31993 NULL
137218 +disable_so_mls_read_level_fndecl_31997 mls_read_level fndecl 0 31997 NULL
137219 +disable_so_pppoatm_assign_vcc_fndecl_32002 pppoatm_assign_vcc fndecl 0 32002 NULL
137220 +disable_so_nvme_trans_fmt_set_blk_size_count_fndecl_32010 nvme_trans_fmt_set_blk_size_count fndecl 0 32010 NULL
137221 +disable_so_try_enable_event_buffer_fndecl_32018 try_enable_event_buffer fndecl 0 32018 NULL
137222 +disable_so_isert_handle_text_cmd_fndecl_32022 isert_handle_text_cmd fndecl 0 32022 NULL
137223 +disable_so_update_cowonly_root_fndecl_32027 update_cowonly_root fndecl 0 32027 NULL
137224 +disable_so___find_rev_next_zero_bit_fndecl_32028 __find_rev_next_zero_bit fndecl 0 32028 NULL nohasharray
137225 +disable_so___ocfs2_lock_refcount_tree_fndecl_32028 __ocfs2_lock_refcount_tree fndecl 0 32028 &disable_so___find_rev_next_zero_bit_fndecl_32028
137226 +disable_so_mlx5_core_qp_query_fndecl_32037 mlx5_core_qp_query fndecl 0 32037 NULL
137227 +disable_so_ttm_tt_set_caching_fndecl_32055 ttm_tt_set_caching fndecl 0 32055 NULL
137228 +disable_so_reply_atmsvc_msg_32056 reply atmsvc_msg 0 32056 NULL
137229 +disable_so_altera_wait_cycles_fndecl_32072 altera_wait_cycles fndecl 0 32072 NULL
137230 +disable_so_tcp_listen_for_all_fndecl_32078 tcp_listen_for_all fndecl 0 32078 NULL
137231 +disable_so_ipw_up_fndecl_32079 ipw_up fndecl 0 32079 NULL
137232 +disable_so_usb6fire_comm_write8_fndecl_32085 usb6fire_comm_write8 fndecl 0 32085 NULL
137233 +disable_so_dspxfr_hci_write_fndecl_32094 dspxfr_hci_write fndecl 0 32094 NULL
137234 +disable_so_controller_reset_failed_fndecl_32099 controller_reset_failed fndecl 0 32099 NULL
137235 +disable_so_create_l1_fndecl_32104 create_l1 fndecl 0 32104 NULL
137236 +disable_so_mlx5_core_create_mkey_fndecl_32113 mlx5_core_create_mkey fndecl 0 32113 NULL
137237 +disable_so_ieee80211_if_add_fndecl_32114 ieee80211_if_add fndecl 0 32114 NULL
137238 +disable_so_jffs2_sum_scan_sumnode_fndecl_32116 jffs2_sum_scan_sumnode fndecl 0 32116 NULL
137239 +disable_so_teles_cs_config_fndecl_32121 teles_cs_config fndecl 0 32121 NULL
137240 +disable_so_bnx2fc_send_rls_fndecl_32130 bnx2fc_send_rls fndecl 0 32130 NULL
137241 +disable_so_sb_gquotino_xfs_sb_32131 sb_gquotino xfs_sb 0 32131 NULL
137242 +disable_so_snd_pcm_update_state_fndecl_32147 snd_pcm_update_state fndecl 0 32147 NULL
137243 +disable_so_iscsit_add_reject_fndecl_32148 iscsit_add_reject fndecl 0 32148 NULL
137244 +disable_so_acpi_parse_trt_fndecl_32157 acpi_parse_trt fndecl 0 32157 NULL
137245 +disable_so_max_recv_dlength_iscsi_conn_32168 max_recv_dlength iscsi_conn 0 32168 NULL
137246 +disable_so_mwifiex_set_mef_filter_fndecl_32174 mwifiex_set_mef_filter fndecl 0 32174 NULL
137247 +disable_so_ax88172a_init_mdio_fndecl_32176 ax88172a_init_mdio fndecl 0 32176 NULL
137248 +disable_so_open_candev_fndecl_32177 open_candev fndecl 0 32177 NULL
137249 +disable_so_batadv_sysfs_add_vlan_fndecl_32185 batadv_sysfs_add_vlan fndecl 0 32185 NULL
137250 +disable_so_tail_len_beacon_data_32194 tail_len beacon_data 0 32194 NULL
137251 +disable_so_brcmf_set_wpa_version_fndecl_32203 brcmf_set_wpa_version fndecl 0 32203 NULL
137252 +disable_so_wm831x_auxadc_read_irq_fndecl_32212 wm831x_auxadc_read_irq fndecl 0 32212 NULL
137253 +disable_so_residual_task_status_struct_32220 residual task_status_struct 0 32220 NULL
137254 +disable_so_acpi_cpufreq_blacklist_fndecl_32230 acpi_cpufreq_blacklist fndecl 0 32230 NULL nohasharray
137255 +disable_so_irq_create_mapping_fndecl_32230 irq_create_mapping fndecl 0 32230 &disable_so_acpi_cpufreq_blacklist_fndecl_32230
137256 +disable_so_snd_usb_ctl_msg_fndecl_32231 snd_usb_ctl_msg fndecl 0 32231 NULL
137257 +disable_so_hdpvr_register_i2c_adapter_fndecl_32244 hdpvr_register_i2c_adapter fndecl 0 32244 NULL
137258 +disable_so_vivid_create_controls_fndecl_32250 vivid_create_controls fndecl 0 32250 NULL
137259 +disable_so_bochs_mm_init_fndecl_32253 bochs_mm_init fndecl 0 32253 NULL nohasharray
137260 +disable_so_spi_master_initialize_queue_fndecl_32253 spi_master_initialize_queue fndecl 0 32253 &disable_so_bochs_mm_init_fndecl_32253
137261 +disable_so_bfad_im_bsg_vendor_request_fndecl_32260 bfad_im_bsg_vendor_request fndecl 0 32260 NULL
137262 +disable_so_wacom_send_fndecl_32267 wacom_send fndecl 0 32267 NULL
137263 +disable_so_usb_allocate_stream_buffers_fndecl_32279 usb_allocate_stream_buffers fndecl 0 32279 NULL
137264 +disable_so_wl1271_acx_tid_cfg_fndecl_32281 wl1271_acx_tid_cfg fndecl 0 32281 NULL
137265 +disable_so_get_pipes_fndecl_32291 get_pipes fndecl 0 32291 NULL
137266 +disable_so_xfs_inobt_get_rec_fndecl_32300 xfs_inobt_get_rec fndecl 0 32300 NULL nohasharray
137267 +disable_so_pvscsi_probe_fndecl_32300 pvscsi_probe fndecl 0 32300 &disable_so_xfs_inobt_get_rec_fndecl_32300
137268 +disable_so_moxa_set_serial_info_fndecl_32304 moxa_set_serial_info fndecl 0 32304 NULL
137269 +disable_so_nla_put_fndecl_32321 nla_put fndecl 0 32321 NULL
137270 +disable_so_tpm_chip_register_fndecl_32325 tpm_chip_register fndecl 0 32325 NULL
137271 +disable_so_ntp_validate_timex_fndecl_32329 ntp_validate_timex fndecl 0 32329 NULL
137272 +disable_so_mem_start_net_device_32337 mem_start net_device 0 32337 NULL
137273 +disable_so_pkt_ctl_ioctl_fndecl_32343 pkt_ctl_ioctl fndecl 0 32343 NULL
137274 +disable_so_ssb_bus_sdiobus_register_fndecl_32347 ssb_bus_sdiobus_register fndecl 0 32347 NULL
137275 +disable_so_wl1271_probe_fndecl_32348 wl1271_probe fndecl 0 32348 NULL
137276 +disable_so_scrub_raid56_parity_fndecl_32354 scrub_raid56_parity fndecl 0 32354 NULL
137277 +disable_so_jhead_scan_fndecl_32389 jhead_scan fndecl 0 32389 NULL
137278 +disable_so_agbno_xfs_alloc_arg_32410 agbno xfs_alloc_arg 0 32410 NULL
137279 +disable_so_tcp_v4_parse_md5_keys_fndecl_32414 tcp_v4_parse_md5_keys fndecl 0 32414 NULL
137280 +disable_so_dsp_allocate_router_ports_fndecl_32418 dsp_allocate_router_ports fndecl 0 32418 NULL
137281 +disable_so_ims_pcu_parse_cdc_data_fndecl_32424 ims_pcu_parse_cdc_data fndecl 0 32424 NULL
137282 +disable_so_apei_resources_merge_fndecl_32430 apei_resources_merge fndecl 0 32430 NULL
137283 +disable_so_dcbnl_cee_pg_fill_fndecl_32441 dcbnl_cee_pg_fill fndecl 0 32441 NULL
137284 +disable_so_io_ctl_read_bitmap_fndecl_32461 io_ctl_read_bitmap fndecl 0 32461 NULL
137285 +disable_so_blk_execute_rq_fndecl_32470 blk_execute_rq fndecl 0 32470 NULL
137286 +disable_so_atmel_wakeup_firmware_fndecl_32471 atmel_wakeup_firmware fndecl 0 32471 NULL
137287 +disable_so_xfs_btree_rshift_fndecl_32496 xfs_btree_rshift fndecl 0 32496 NULL
137288 +disable_so_c4iw_pblpool_create_fndecl_32501 c4iw_pblpool_create fndecl 0 32501 NULL nohasharray
137289 +disable_so_proc_control_fndecl_32501 proc_control fndecl 0 32501 &disable_so_c4iw_pblpool_create_fndecl_32501
137290 +disable_so_altera_swap_ir_fndecl_32505 altera_swap_ir fndecl 0 32505 NULL
137291 +disable_so_write_bitmap_entries_fndecl_32527 write_bitmap_entries fndecl 0 32527 NULL
137292 +disable_so_map_iommu_fndecl_32528 map_iommu fndecl 0 32528 NULL
137293 +disable_so_hsync_fb_cvt_data_32542 hsync fb_cvt_data 0 32542 NULL
137294 +disable_so_ocfs2_find_path_fndecl_32545 ocfs2_find_path fndecl 0 32545 NULL
137295 +disable_so_pcxhr_start_pipes_fndecl_32546 pcxhr_start_pipes fndecl 0 32546 NULL
137296 +disable_so_SMB2_tcon_fndecl_32552 SMB2_tcon fndecl 0 32552 NULL
137297 +disable_so_cciss_ioctl32_passthru_fndecl_32553 cciss_ioctl32_passthru fndecl 0 32553 NULL
137298 +disable_so_yurex_write_fndecl_32554 yurex_write fndecl 0 32554 NULL
137299 +disable_so_xfs_attr_shortform_getvalue_fndecl_32555 xfs_attr_shortform_getvalue fndecl 0 32555 NULL
137300 +disable_so_joydev_compat_ioctl_fndecl_32558 joydev_compat_ioctl fndecl 0 32558 NULL nohasharray
137301 +disable_so_pfkey_spdadd_fndecl_32558 pfkey_spdadd fndecl 0 32558 &disable_so_joydev_compat_ioctl_fndecl_32558
137302 +disable_so_p54u_upload_firmware_3887_fndecl_32559 p54u_upload_firmware_3887 fndecl 0 32559 NULL
137303 +disable_so_check_tape_fndecl_32571 check_tape fndecl 0 32571 NULL
137304 +disable_so_iov_iter_zero_fndecl_32575 iov_iter_zero fndecl 0 32575 NULL
137305 +disable_so_assign_type_fndecl_32579 assign_type fndecl 0 32579 NULL
137306 +disable_so_uart_set_info_user_fndecl_32581 uart_set_info_user fndecl 0 32581 NULL
137307 +disable_so_inode_ext3_dir_entry_2_32583 inode ext3_dir_entry_2 0 32583 NULL
137308 +disable_so_ubifs_leb_map_fndecl_32592 ubifs_leb_map fndecl 0 32592 NULL
137309 +disable_so_st_accel_buffer_postenable_fndecl_32596 st_accel_buffer_postenable fndecl 0 32596 NULL
137310 +disable_so_extent_read_full_page_fndecl_32617 extent_read_full_page fndecl 0 32617 NULL nohasharray
137311 +disable_so_usb_alloc_streams_fndecl_32617 usb_alloc_streams fndecl 0 32617 &disable_so_extent_read_full_page_fndecl_32617
137312 +disable_so_nilfs_segctor_reset_segment_buffer_fndecl_32618 nilfs_segctor_reset_segment_buffer fndecl 0 32618 NULL
137313 +disable_so_st21nfcb_hci_network_init_fndecl_32623 st21nfcb_hci_network_init fndecl 0 32623 NULL
137314 +disable_so_intel_ring_begin_fndecl_32635 intel_ring_begin fndecl 0 32635 NULL
137315 +disable_so_lpfc_mq_create_fndecl_32637 lpfc_mq_create fndecl 0 32637 NULL
137316 +disable_so_bnx2_nvram_write_dword_fndecl_32639 bnx2_nvram_write_dword fndecl 0 32639 NULL
137317 +disable_so_ahash_op_unaligned_fndecl_32645 ahash_op_unaligned fndecl 0 32645 NULL
137318 +disable_so_pci_save_vc_state_fndecl_32649 pci_save_vc_state fndecl 0 32649 NULL
137319 +disable_so_ivtvfb_init_io_fndecl_32653 ivtvfb_init_io fndecl 0 32653 NULL
137320 +disable_so_mmc_wait_for_cmd_fndecl_32659 mmc_wait_for_cmd fndecl 0 32659 NULL nohasharray
137321 +disable_so_i40e_alloc_asq_bufs_fndecl_32659 i40e_alloc_asq_bufs fndecl 0 32659 &disable_so_mmc_wait_for_cmd_fndecl_32659
137322 +disable_so_nilfs_mdt_get_block_fndecl_32660 nilfs_mdt_get_block fndecl 0 32660 NULL
137323 +disable_so_rtsx_usb_transfer_data_fndecl_32669 rtsx_usb_transfer_data fndecl 0 32669 NULL
137324 +disable_so_wl1271_acx_default_rx_filter_enable_fndecl_32678 wl1271_acx_default_rx_filter_enable fndecl 0 32678 NULL nohasharray
137325 +disable_so_drff_init_fndecl_32678 drff_init fndecl 0 32678 &disable_so_wl1271_acx_default_rx_filter_enable_fndecl_32678
137326 +disable_so_engine_start_viafb_dev_32681 engine_start viafb_dev 0 32681 NULL
137327 +disable_so_ath6kl_upload_patch_fndecl_32682 ath6kl_upload_patch fndecl 0 32682 NULL
137328 +disable_so_lpfc_mem_alloc_active_rrq_pool_s4_fndecl_32683 lpfc_mem_alloc_active_rrq_pool_s4 fndecl 0 32683 NULL
137329 +disable_so_intel_vgt_balloon_fndecl_32684 intel_vgt_balloon fndecl 0 32684 NULL
137330 +disable_so_sysfs_merge_group_fndecl_32710 sysfs_merge_group fndecl 0 32710 NULL nohasharray
137331 +disable_so_hash_net4_add_fndecl_32710 hash_net4_add fndecl 0 32710 &disable_so_sysfs_merge_group_fndecl_32710
137332 +disable_so_br_stp_set_path_cost_fndecl_32712 br_stp_set_path_cost fndecl 0 32712 NULL
137333 +disable_so_layout_commit_fndecl_32717 layout_commit fndecl 0 32717 NULL
137334 +disable_so___change_page_attr_fndecl_32738 __change_page_attr fndecl 0 32738 NULL
137335 +disable_so_goto_low_power_fndecl_32741 goto_low_power fndecl 0 32741 NULL
137336 +disable_so_cp2112_hid_get_fndecl_32758 cp2112_hid_get fndecl 0 32758 NULL
137337 +disable_so_mgag200fb_create_fndecl_32762 mgag200fb_create fndecl 0 32762 NULL
137338 +disable_so_enslave_fndecl_32781 enslave fndecl 0 32781 NULL
137339 +disable_so_xfs_fsb_to_db_fndecl_32785 xfs_fsb_to_db fndecl 0 32785 NULL
137340 +disable_so_efx_mcdi_read_assertion_fndecl_32802 efx_mcdi_read_assertion fndecl 0 32802 NULL
137341 +disable_so_alps_identify_fndecl_32806 alps_identify fndecl 0 32806 NULL
137342 +disable_so_smi_port_attach_fndecl_32808 smi_port_attach fndecl 0 32808 NULL
137343 +disable_so_gen8_ppgtt_allocate_page_directories_fndecl_32821 gen8_ppgtt_allocate_page_directories fndecl 0 32821 NULL
137344 +disable_so_nvme_trans_log_temperature_fndecl_32822 nvme_trans_log_temperature fndecl 0 32822 NULL nohasharray
137345 +disable_so_dlci_del_fndecl_32822 dlci_del fndecl 0 32822 &disable_so_nvme_trans_log_temperature_fndecl_32822
137346 +disable_so_lpfc_sli4_bsg_set_link_diag_state_fndecl_32836 lpfc_sli4_bsg_set_link_diag_state fndecl 0 32836 NULL
137347 +disable_so_tg3_nvram_write_block_fndecl_32841 tg3_nvram_write_block fndecl 0 32841 NULL
137348 +disable_so_kvm_get_apic_interrupt_fndecl_32843 kvm_get_apic_interrupt fndecl 0 32843 NULL
137349 +disable_so_mlx5_ib_query_device_fndecl_32849 mlx5_ib_query_device fndecl 0 32849 NULL
137350 +disable_so_gather_array_fndecl_32850 gather_array fndecl 0 32850 NULL
137351 +disable_so_br_startoff_xfs_bmbt_irec_32854 br_startoff xfs_bmbt_irec 0 32854 NULL
137352 +disable_so_lookup_extent_backref_fndecl_32855 lookup_extent_backref fndecl 0 32855 NULL
137353 +disable_so_snd_card_register_fndecl_32859 snd_card_register fndecl 0 32859 NULL
137354 +disable_so_vt_ioctl_fndecl_32867 vt_ioctl fndecl 0 32867 NULL
137355 +disable_so_dvb_ringbuffer_read_user_fndecl_32877 dvb_ringbuffer_read_user fndecl 0 32877 NULL
137356 +disable_so_mtd_erase_fndecl_32885 mtd_erase fndecl 0 32885 NULL
137357 +disable_so_ttm_set_pages_caching_fndecl_32891 ttm_set_pages_caching fndecl 0 32891 NULL
137358 +disable_so_rds_cmsg_atomic_fndecl_32895 rds_cmsg_atomic fndecl 0 32895 NULL
137359 +disable_so___hw_addr_add_ex_fndecl_32899 __hw_addr_add_ex fndecl 0 32899 NULL
137360 +disable_so___wa_xfer_setup_segs_fndecl_32902 __wa_xfer_setup_segs fndecl 0 32902 NULL
137361 +disable_so_get_master_node_fndecl_32907 get_master_node fndecl 0 32907 NULL
137362 +disable_so_ipv6_getsockopt_sticky_fndecl_32916 ipv6_getsockopt_sticky fndecl 0 32916 NULL
137363 +disable_so_lx_proc_create_fndecl_32920 lx_proc_create fndecl 0 32920 NULL
137364 +disable_so_xfs_btree_decrement_fndecl_32925 xfs_btree_decrement fndecl 0 32925 NULL nohasharray
137365 +disable_so_nr_events_kioctx_32925 nr_events kioctx 0 32925 &disable_so_xfs_btree_decrement_fndecl_32925
137366 +disable_so_vram_base_mga_mc_32927 vram_base mga_mc 0 32927 NULL
137367 +disable_so_niu_alloc_channels_fndecl_32951 niu_alloc_channels fndecl 0 32951 NULL
137368 +disable_so_write_cache_extent_entries_fndecl_32966 write_cache_extent_entries fndecl 0 32966 NULL
137369 +disable_so_ttm_alloc_new_pages_fndecl_32971 ttm_alloc_new_pages fndecl 0 32971 NULL
137370 +disable_so_add_class_attrs_fndecl_32984 add_class_attrs fndecl 0 32984 NULL nohasharray
137371 +disable_so_ore_get_io_state_fndecl_32984 ore_get_io_state fndecl 0 32984 &disable_so_add_class_attrs_fndecl_32984
137372 +disable_so_resid_len_request_32994 resid_len request 0 32994 NULL
137373 +disable_so_usb_shark_probe_fndecl_33002 usb_shark_probe fndecl 0 33002 NULL
137374 +disable_so_mtdchar_write_fndecl_33004 mtdchar_write fndecl 0 33004 NULL
137375 +disable_so_mwl8k_cmd_set_slot_fndecl_33005 mwl8k_cmd_set_slot fndecl 0 33005 NULL
137376 +disable_so_mlx5_query_odp_caps_fndecl_33011 mlx5_query_odp_caps fndecl 0 33011 NULL
137377 +disable_so_read_indexes_fndecl_33014 read_indexes fndecl 0 33014 NULL
137378 +disable_so_exofs_update_inode_fndecl_33018 exofs_update_inode fndecl 0 33018 NULL
137379 +disable_so_skge_probe_fndecl_33026 skge_probe fndecl 0 33026 NULL
137380 +disable_so_configfs_create_link_fndecl_33030 configfs_create_link fndecl 0 33030 NULL
137381 +disable_so_w8001_command_fndecl_33033 w8001_command fndecl 0 33033 NULL
137382 +disable_so_rsi_sdio_read_register_multiple_fndecl_33035 rsi_sdio_read_register_multiple fndecl 0 33035 NULL
137383 +disable_so___fscache_check_consistency_fndecl_33049 __fscache_check_consistency fndecl 0 33049 NULL
137384 +disable_so_qlcnic_register_dcb_fndecl_33057 qlcnic_register_dcb fndecl 0 33057 NULL
137385 +disable_so_dev_read_fndecl_33058 dev_read fndecl 0 33058 NULL
137386 +disable_so_sctp_cmd_process_sack_fndecl_33059 sctp_cmd_process_sack fndecl 0 33059 NULL nohasharray
137387 +disable_so_iov_iter_copy_from_user_atomic_fndecl_33059 iov_iter_copy_from_user_atomic fndecl 0 33059 &disable_so_sctp_cmd_process_sack_fndecl_33059
137388 +disable_so_size_ec168_req_33061 size ec168_req 0 33061 NULL
137389 +disable_so_iio_device_add_info_mask_type_fndecl_33062 iio_device_add_info_mask_type fndecl 0 33062 NULL
137390 +disable_so_fx_init_fndecl_33066 fx_init fndecl 0 33066 NULL
137391 +disable_so_key_seal_fndecl_33069 key_seal fndecl 0 33069 NULL
137392 +disable_so_qd_get_fndecl_33086 qd_get fndecl 0 33086 NULL
137393 +disable_so_garp_init_port_fndecl_33089 garp_init_port fndecl 0 33089 NULL
137394 +disable_so_SMB2_open_fndecl_33092 SMB2_open fndecl 0 33092 NULL
137395 +disable_so_vram_size_cirrus_mc_33094 vram_size cirrus_mc 0 33094 NULL
137396 +disable_so_write_gssp_fndecl_33095 write_gssp fndecl 0 33095 NULL
137397 +disable_so_drm_legacy_dma_setup_fndecl_33096 drm_legacy_dma_setup fndecl 0 33096 NULL
137398 +disable_so_do_get_write_access_fndecl_33097 do_get_write_access fndecl 0 33097 NULL
137399 +disable_so_pt3_fe_init_fndecl_33111 pt3_fe_init fndecl 0 33111 NULL
137400 +disable_so_nla_strlcpy_fndecl_33113 nla_strlcpy fndecl 0 33113 NULL
137401 +disable_so_usb6fire_fw_fpga_upload_fndecl_33123 usb6fire_fw_fpga_upload fndecl 0 33123 NULL
137402 +disable_so_gnttab_map_fndecl_33124 gnttab_map fndecl 0 33124 NULL
137403 +disable_so_carl9170_rng_get_fndecl_33125 carl9170_rng_get fndecl 0 33125 NULL
137404 +disable_so_check_asic_status_fndecl_33127 check_asic_status fndecl 0 33127 NULL
137405 +disable_so_i915_gem_object_sync_fndecl_33138 i915_gem_object_sync fndecl 0 33138 NULL
137406 +disable_so_dlm_request_join_fndecl_33145 dlm_request_join fndecl 0 33145 NULL
137407 +disable_so_wl1271_acx_ap_rate_policy_fndecl_33149 wl1271_acx_ap_rate_policy fndecl 0 33149 NULL
137408 +disable_so_cmm_ioctl_fndecl_33157 cmm_ioctl fndecl 0 33157 NULL
137409 +disable_so_domain_context_mapping_one_fndecl_33159 domain_context_mapping_one fndecl 0 33159 NULL
137410 +disable_so_sisusb_reset_text_mode_fndecl_33163 sisusb_reset_text_mode fndecl 0 33163 NULL
137411 +disable_so_ata_scsi_add_hosts_fndecl_33171 ata_scsi_add_hosts fndecl 0 33171 NULL
137412 +disable_so_wl1271_acx_sleep_auth_fndecl_33172 wl1271_acx_sleep_auth fndecl 0 33172 NULL
137413 +disable_so_cx231xx_init_isoc_fndecl_33174 cx231xx_init_isoc fndecl 0 33174 NULL
137414 +disable_so_sis_drm_alloc_fndecl_33181 sis_drm_alloc fndecl 0 33181 NULL nohasharray
137415 +disable_so_bmp085_probe_fndecl_33181 bmp085_probe fndecl 0 33181 &disable_so_sis_drm_alloc_fndecl_33181
137416 +disable_so_regcache_lzo_decompress_fndecl_33184 regcache_lzo_decompress fndecl 0 33184 NULL
137417 +disable_so_t4_fw_restart_fndecl_33188 t4_fw_restart fndecl 0 33188 NULL
137418 +disable_so_snd_usb_add_audio_stream_fndecl_33192 snd_usb_add_audio_stream fndecl 0 33192 NULL
137419 +disable_so_efx_mcdi_rpc_start_fndecl_33197 efx_mcdi_rpc_start fndecl 0 33197 NULL nohasharray
137420 +disable_so_sf1_write_fndecl_33197 sf1_write fndecl 0 33197 &disable_so_efx_mcdi_rpc_start_fndecl_33197
137421 +disable_so_wl1271_cmd_template_set_fndecl_33203 wl1271_cmd_template_set fndecl 0 33203 NULL
137422 +disable_so_virtio_pci_probe_fndecl_33204 virtio_pci_probe fndecl 0 33204 NULL
137423 +disable_so_wbcir_probe_fndecl_33218 wbcir_probe fndecl 0 33218 NULL
137424 +disable_so_psbfb_create_fndecl_33223 psbfb_create fndecl 0 33223 NULL
137425 +disable_so_ia_open_fndecl_33228 ia_open fndecl 0 33228 NULL
137426 +disable_so_vmci_datagram_get_priv_flags_fndecl_33231 vmci_datagram_get_priv_flags fndecl 0 33231 NULL
137427 +disable_so_ext4_zeroout_es_fndecl_33233 ext4_zeroout_es fndecl 0 33233 NULL
137428 +disable_so_phase22_init_fndecl_33237 phase22_init fndecl 0 33237 NULL
137429 +disable_so_bnx2x_alloc_fp_mem_cnic_fndecl_33238 bnx2x_alloc_fp_mem_cnic fndecl 0 33238 NULL
137430 +disable_so_error_mmc_command_33242 error mmc_command 0 33242 NULL
137431 +disable_so_lx_init_dsp_fndecl_33250 lx_init_dsp fndecl 0 33250 NULL
137432 +disable_so_wb_offset_nfs_page_33255 wb_offset nfs_page 0 33255 NULL
137433 +disable_so_mem_end_net_device_33270 mem_end net_device 0 33270 NULL
137434 +disable_so___ethtool_get_module_info_fndecl_33275 __ethtool_get_module_info fndecl 0 33275 NULL
137435 +disable_so_ixgbe_ptp_set_ts_config_fndecl_33277 ixgbe_ptp_set_ts_config fndecl 0 33277 NULL
137436 +disable_so_compat_agpioc_reserve_wrap_fndecl_33280 compat_agpioc_reserve_wrap fndecl 0 33280 NULL
137437 +disable_so_snd_via82xx_create_fndecl_33286 snd_via82xx_create fndecl 0 33286 NULL
137438 +disable_so_i40evf_clean_arq_element_fndecl_33288 i40evf_clean_arq_element fndecl 0 33288 NULL
137439 +disable_so_cipso_v4_gentag_loc_fndecl_33292 cipso_v4_gentag_loc fndecl 0 33292 NULL
137440 +disable_so_mwl8k_tx_wait_empty_fndecl_33293 mwl8k_tx_wait_empty fndecl 0 33293 NULL nohasharray
137441 +disable_so_mlx4_slave_cap_fndecl_33293 mlx4_slave_cap fndecl 0 33293 &disable_so_mwl8k_tx_wait_empty_fndecl_33293
137442 +disable_so_nvme_trans_read_capacity_fndecl_33300 nvme_trans_read_capacity fndecl 0 33300 NULL
137443 +disable_so_aac_get_containers_fndecl_33311 aac_get_containers fndecl 0 33311 NULL nohasharray
137444 +disable_so_mmc_ext_csd_open_fndecl_33311 mmc_ext_csd_open fndecl 0 33311 &disable_so_aac_get_containers_fndecl_33311
137445 +disable_so_tpm_seal_fndecl_33313 tpm_seal fndecl 0 33313 NULL
137446 +disable_so_mmc_io_rw_direct_fndecl_33314 mmc_io_rw_direct fndecl 0 33314 NULL
137447 +disable_so__iwl_dbgfs_bf_params_write_fndecl_33318 _iwl_dbgfs_bf_params_write fndecl 0 33318 NULL
137448 +disable_so_lpfcdiag_loop_get_xri_fndecl_33329 lpfcdiag_loop_get_xri fndecl 0 33329 NULL
137449 +disable_so_sc1200_init_one_fndecl_33333 sc1200_init_one fndecl 0 33333 NULL
137450 +disable_so_amd_cache_northbridges_fndecl_33342 amd_cache_northbridges fndecl 0 33342 NULL
137451 +disable_so_average_read_fndecl_33348 average_read fndecl 0 33348 NULL
137452 +disable_so_xfs_attr3_leaf_lookup_int_fndecl_33362 xfs_attr3_leaf_lookup_int fndecl 0 33362 NULL
137453 +disable_so_smsusb_submit_urb_fndecl_33365 smsusb_submit_urb fndecl 0 33365 NULL
137454 +disable_so_bus_register_fndecl_33374 bus_register fndecl 0 33374 NULL
137455 +disable_so_nilfs_btree_prepare_convert_and_insert_fndecl_33375 nilfs_btree_prepare_convert_and_insert fndecl 0 33375 NULL
137456 +disable_so_hash_netiface4_add_fndecl_33376 hash_netiface4_add fndecl 0 33376 NULL
137457 +disable_so_netxen_get_minidump_template_fndecl_33380 netxen_get_minidump_template fndecl 0 33380 NULL
137458 +disable_so_parse_weakpages_fndecl_33384 parse_weakpages fndecl 0 33384 NULL
137459 +disable_so_lp_check_status_fndecl_33385 lp_check_status fndecl 0 33385 NULL
137460 +disable_so_bnx2_init_board_fndecl_33388 bnx2_init_board fndecl 0 33388 NULL
137461 +disable_so_ncp__io2vol_fndecl_33390 ncp__io2vol fndecl 0 33390 NULL
137462 +disable_so_ct_map_audio_buffer_fndecl_33392 ct_map_audio_buffer fndecl 0 33392 NULL
137463 +disable_so_ieee80211_mesh_rebuild_beacon_fndecl_33396 ieee80211_mesh_rebuild_beacon fndecl 0 33396 NULL
137464 +disable_so_msp430_ir_init_fndecl_33398 msp430_ir_init fndecl 0 33398 NULL
137465 +disable_so_ocfs2_claim_metadata_fndecl_33403 ocfs2_claim_metadata fndecl 0 33403 NULL
137466 +disable_so_get_cs_sqnum_fndecl_33407 get_cs_sqnum fndecl 0 33407 NULL
137467 +disable_so_dreq_gss_dccp_request_sock_33423 dreq_gss dccp_request_sock 0 33423 NULL
137468 +disable_so_mmc_test_area_io_seq_fndecl_33440 mmc_test_area_io_seq fndecl 0 33440 NULL
137469 +disable_so_usb_parse_configuration_fndecl_33445 usb_parse_configuration fndecl 0 33445 NULL
137470 +disable_so___inet_stream_connect_fndecl_33446 __inet_stream_connect fndecl 0 33446 NULL
137471 +disable_so_emi62_set_reset_fndecl_33450 emi62_set_reset fndecl 0 33450 NULL
137472 +disable_so_usb_gadget_map_request_fndecl_33451 usb_gadget_map_request fndecl 0 33451 NULL
137473 +disable_so_oprofilefs_ulong_from_user_fndecl_33456 oprofilefs_ulong_from_user fndecl 0 33456 NULL
137474 +disable_so_ip6_convert_metrics_fndecl_33458 ip6_convert_metrics fndecl 0 33458 NULL
137475 +disable_so_wl12xx_cmd_add_peer_fndecl_33461 wl12xx_cmd_add_peer fndecl 0 33461 NULL
137476 +disable_so_pcrypt_init_padata_fndecl_33463 pcrypt_init_padata fndecl 0 33463 NULL
137477 +disable_so_dm_get_device_fndecl_33475 dm_get_device fndecl 0 33475 NULL
137478 +disable_so_get_endpoints_fndecl_33476 get_endpoints fndecl 0 33476 NULL
137479 +disable_so_ftdi_elan_write_fndecl_33486 ftdi_elan_write fndecl 0 33486 NULL
137480 +disable_so_ath6kl_wmi_cmd_send_fndecl_33493 ath6kl_wmi_cmd_send fndecl 0 33493 NULL
137481 +disable_so_nbufs_dma_buffparms_33497 nbufs dma_buffparms 0 33497 NULL
137482 +disable_so_hub_configure_fndecl_33501 hub_configure fndecl 0 33501 NULL
137483 +disable_so_whci_probe_fndecl_33514 whci_probe fndecl 0 33514 NULL
137484 +disable_so_xfs_iread_fndecl_33522 xfs_iread fndecl 0 33522 NULL
137485 +disable_so___mxt_write_reg_fndecl_33533 __mxt_write_reg fndecl 0 33533 NULL
137486 +disable_so_ieee802154_hdr_addr_len_fndecl_33535 ieee802154_hdr_addr_len fndecl 0 33535 NULL
137487 +disable_so_mlx4_en_get_qp_fndecl_33536 mlx4_en_get_qp fndecl 0 33536 NULL
137488 +disable_so_mlx5_buf_alloc_fndecl_33539 mlx5_buf_alloc fndecl 0 33539 NULL nohasharray
137489 +disable_so_sas_get_phy_discover_fndecl_33539 sas_get_phy_discover fndecl 0 33539 &disable_so_mlx5_buf_alloc_fndecl_33539
137490 +disable_so_gfs2_set_acl_fndecl_33543 gfs2_set_acl fndecl 0 33543 NULL
137491 +disable_so_fuse_ctl_add_conn_fndecl_33545 fuse_ctl_add_conn fndecl 0 33545 NULL
137492 +disable_so_dlfb_setup_modes_fndecl_33548 dlfb_setup_modes fndecl 0 33548 NULL
137493 +disable_so_hdpvr_probe_fndecl_33557 hdpvr_probe fndecl 0 33557 NULL
137494 +disable_so_rtc_irq_set_freq_fndecl_33559 rtc_irq_set_freq fndecl 0 33559 NULL nohasharray
137495 +disable_so_snd_mixart_probe_fndecl_33559 snd_mixart_probe fndecl 0 33559 &disable_so_rtc_irq_set_freq_fndecl_33559
137496 +disable_so_ext3_xattr_ibody_get_fndecl_33571 ext3_xattr_ibody_get fndecl 0 33571 NULL
137497 +disable_so_bitmap_init_from_disk_fndecl_33575 bitmap_init_from_disk fndecl 0 33575 NULL
137498 +disable_so_sas_get_phy_change_count_fndecl_33581 sas_get_phy_change_count fndecl 0 33581 NULL
137499 +disable_so_check_export_fndecl_33586 check_export fndecl 0 33586 NULL
137500 +disable_so_siena_probe_nvconfig_fndecl_33590 siena_probe_nvconfig fndecl 0 33590 NULL
137501 +disable_so_hci_mgmt_cmd_fndecl_33591 hci_mgmt_cmd fndecl 0 33591 NULL
137502 +disable_so_i915_gem_object_pin_to_display_plane_fndecl_33596 i915_gem_object_pin_to_display_plane fndecl 0 33596 NULL
137503 +disable_so_mwl8k_cmd_get_stat_fndecl_33599 mwl8k_cmd_get_stat fndecl 0 33599 NULL
137504 +disable_so_r852_probe_fndecl_33614 r852_probe fndecl 0 33614 NULL
137505 +disable_so_hfsplus_find_cat_fndecl_33616 hfsplus_find_cat fndecl 0 33616 NULL
137506 +disable_so_pktgen_add_device_fndecl_33617 pktgen_add_device fndecl 0 33617 NULL
137507 +disable_so_fm10k_pfvf_mbx_init_fndecl_33628 fm10k_pfvf_mbx_init fndecl 0 33628 NULL
137508 +disable_so_rc_framerate_num_s5p_mfc_enc_params_33630 rc_framerate_num s5p_mfc_enc_params 0 33630 NULL
137509 +disable_so_parse_cache_dev_fndecl_33635 parse_cache_dev fndecl 0 33635 NULL
137510 +disable_so_iwl_send_static_wepkey_cmd_fndecl_33646 iwl_send_static_wepkey_cmd fndecl 0 33646 NULL
137511 +disable_so_wl12xx_scan_stop_fndecl_33649 wl12xx_scan_stop fndecl 0 33649 NULL
137512 +disable_so_bond_alb_init_slave_fndecl_33659 bond_alb_init_slave fndecl 0 33659 NULL
137513 +disable_so_xfs_alloc_ag_vextent_fndecl_33660 xfs_alloc_ag_vextent fndecl 0 33660 NULL
137514 +disable_so_sys_sysctl_fndecl_33667 sys_sysctl fndecl 0 33667 NULL
137515 +disable_so_acpi_processor_get_info_fndecl_33670 acpi_processor_get_info fndecl 0 33670 NULL
137516 +disable_so_fore200e_send_fndecl_33696 fore200e_send fndecl 0 33696 NULL
137517 +disable_so_ide_cdrom_probe_capabilities_fndecl_33699 ide_cdrom_probe_capabilities fndecl 0 33699 NULL
137518 +disable_so_rtentry_to_fib_config_fndecl_33700 rtentry_to_fib_config fndecl 0 33700 NULL
137519 +disable_so_mmc_test_map_sg_max_scatter_fndecl_33705 mmc_test_map_sg_max_scatter fndecl 0 33705 NULL
137520 +disable_so_calculate_memsize_fndecl_33706 calculate_memsize fndecl 0 33706 NULL
137521 +disable_so_io_ctl_read_entry_fndecl_33707 io_ctl_read_entry fndecl 0 33707 NULL
137522 +disable_so_network_header_sk_buff_33708 network_header sk_buff 0 33708 NULL
137523 +disable_so_diolan_u2c_probe_fndecl_33713 diolan_u2c_probe fndecl 0 33713 NULL
137524 +disable_so_consolidate_fndecl_33722 consolidate fndecl 0 33722 NULL
137525 +disable_so_rionet_add_dev_fndecl_33728 rionet_add_dev fndecl 0 33728 NULL
137526 +disable_so_dlm_rcom_status_fndecl_33733 dlm_rcom_status fndecl 0 33733 NULL
137527 +disable_so_raw_cmd_copyout_fndecl_33741 raw_cmd_copyout fndecl 0 33741 NULL
137528 +disable_so_force_hpet_address_vardecl_33758 force_hpet_address vardecl 0 33758 NULL
137529 +disable_so_wmi_send_fndecl_33768 wmi_send fndecl 0 33768 NULL
137530 +disable_so_udp_sock_create4_fndecl_33782 udp_sock_create4 fndecl 0 33782 NULL
137531 +disable_so_sd_write_data_fndecl_33792 sd_write_data fndecl 0 33792 NULL
137532 +disable_so_sidtab_context_to_sid_fndecl_33793 sidtab_context_to_sid fndecl 0 33793 NULL
137533 +disable_so_edt_ft5x06_register_read_fndecl_33803 edt_ft5x06_register_read fndecl 0 33803 NULL
137534 +disable_so_snd_find_free_minor_fndecl_33820 snd_find_free_minor fndecl 0 33820 NULL
137535 +disable_so_pch_gbe_set_ringparam_fndecl_33836 pch_gbe_set_ringparam fndecl 0 33836 NULL
137536 +disable_so_mgmt_cmd_complete_fndecl_33845 mgmt_cmd_complete fndecl 0 33845 NULL nohasharray
137537 +disable_so_init_hardware_fndecl_33845 init_hardware fndecl 0 33845 &disable_so_mgmt_cmd_complete_fndecl_33845
137538 +disable_so_ufx_reg_write_fndecl_33849 ufx_reg_write fndecl 0 33849 NULL
137539 +disable_so_snd_cs8427_create_fndecl_33866 snd_cs8427_create fndecl 0 33866 NULL
137540 +disable_so_tomoyo_audit_path_log_fndecl_33869 tomoyo_audit_path_log fndecl 0 33869 NULL
137541 +disable_so_r100_cs_parse_packet0_fndecl_33873 r100_cs_parse_packet0 fndecl 0 33873 NULL
137542 +disable_so_intel_lr_context_pin_fndecl_33877 intel_lr_context_pin fndecl 0 33877 NULL
137543 +disable_so_snd_pcm_hw_param_last_fndecl_33883 snd_pcm_hw_param_last fndecl 0 33883 NULL
137544 +disable_so_pktgen_if_write_fndecl_33887 pktgen_if_write fndecl 0 33887 NULL
137545 +disable_so_sst_send_algo_cmd_fndecl_33891 sst_send_algo_cmd fndecl 0 33891 NULL
137546 +disable_so_ieee80211_assign_beacon_fndecl_33893 ieee80211_assign_beacon fndecl 0 33893 NULL
137547 +disable_so_wl18xx_acx_interrupt_notify_config_fndecl_33899 wl18xx_acx_interrupt_notify_config fndecl 0 33899 NULL
137548 +disable_so_drm_atomic_crtc_get_property_fndecl_33900 drm_atomic_crtc_get_property fndecl 0 33900 NULL
137549 +disable_so_add_loopback_list_fndecl_33901 add_loopback_list fndecl 0 33901 NULL
137550 +disable_so_direct2indirect_fndecl_33902 direct2indirect fndecl 0 33902 NULL
137551 +disable_so_vxlan_fdb_append_fndecl_33909 vxlan_fdb_append fndecl 0 33909 NULL
137552 +disable_so_niu_alloc_rx_ring_info_fndecl_33913 niu_alloc_rx_ring_info fndecl 0 33913 NULL
137553 +disable_so_dvb_usb_adapter_init_fndecl_33915 dvb_usb_adapter_init fndecl 0 33915 NULL
137554 +disable_so_ocfs2_validate_meta_ecc_fndecl_33919 ocfs2_validate_meta_ecc fndecl 0 33919 NULL
137555 +disable_so_rocker_port_fdb_learn_fndecl_33924 rocker_port_fdb_learn fndecl 0 33924 NULL
137556 +disable_so_genl_allocate_reserve_groups_fndecl_33930 genl_allocate_reserve_groups fndecl 0 33930 NULL
137557 +disable_so_old_capi_manufacturer_fndecl_33934 old_capi_manufacturer fndecl 0 33934 NULL
137558 +disable_so_ib_rate_to_mlx5_fndecl_33939 ib_rate_to_mlx5 fndecl 0 33939 NULL
137559 +disable_so_wMaxPacketSize_usb_endpoint_descriptor_33942 wMaxPacketSize usb_endpoint_descriptor 0 33942 NULL
137560 +disable_so_amixer_mgr_create_fndecl_33947 amixer_mgr_create fndecl 0 33947 NULL
137561 +disable_so_radeon_semaphore_create_fndecl_33953 radeon_semaphore_create fndecl 0 33953 NULL
137562 +disable_so_jffs2_fill_super_fndecl_33956 jffs2_fill_super fndecl 0 33956 NULL
137563 +disable_so_gfs2_quota_init_fndecl_33965 gfs2_quota_init fndecl 0 33965 NULL
137564 +disable_so_uwb_rsv_get_stream_fndecl_33968 uwb_rsv_get_stream fndecl 0 33968 NULL
137565 +disable_so_nfc_hci_send_cmd_fndecl_33969 nfc_hci_send_cmd fndecl 0 33969 NULL
137566 +disable_so_queue_snd_seq_queue_33970 queue snd_seq_queue 0 33970 NULL
137567 +disable_so_ocfs2_lock_refcount_tree_fndecl_33972 ocfs2_lock_refcount_tree fndecl 0 33972 NULL
137568 +disable_so_pm8001_store_update_fw_fndecl_33975 pm8001_store_update_fw fndecl 0 33975 NULL
137569 +disable_so_ethtool_copy_validate_indir_fndecl_33994 ethtool_copy_validate_indir fndecl 0 33994 NULL
137570 +disable_so_vp702x_usb_probe_fndecl_34003 vp702x_usb_probe fndecl 0 34003 NULL
137571 +disable_so_snd_rawmidi_runtime_create_fndecl_34008 snd_rawmidi_runtime_create fndecl 0 34008 NULL nohasharray
137572 +disable_so_ia_ioctl_fndecl_34008 ia_ioctl fndecl 0 34008 &disable_so_snd_rawmidi_runtime_create_fndecl_34008 nohasharray
137573 +disable_so_cx23888_ir_probe_fndecl_34008 cx23888_ir_probe fndecl 0 34008 &disable_so_ia_ioctl_fndecl_34008
137574 +disable_so___cpuidle_register_device_fndecl_34012 __cpuidle_register_device fndecl 0 34012 NULL
137575 +disable_so_length_p9_wstat_34022 length p9_wstat 0 34022 NULL nohasharray
137576 +disable_so_data_addr_acpi_ec_34022 data_addr acpi_ec 0 34022 &disable_so_length_p9_wstat_34022
137577 +disable_so_read_factory_bbt_fndecl_34029 read_factory_bbt fndecl 0 34029 NULL
137578 +disable_so_membase_jsm_board_34030 membase jsm_board 0 34030 NULL
137579 +disable_so_scs_create_midi_fndecl_34031 scs_create_midi fndecl 0 34031 NULL
137580 +disable_so_cy_startup_fndecl_34038 cy_startup fndecl 0 34038 NULL
137581 +disable_so_it821x_init_one_fndecl_34048 it821x_init_one fndecl 0 34048 NULL
137582 +disable_so_radeon_do_wait_for_fifo_fndecl_34050 radeon_do_wait_for_fifo fndecl 0 34050 NULL
137583 +disable_so_atk_enumerate_old_hwmon_fndecl_34065 atk_enumerate_old_hwmon fndecl 0 34065 NULL
137584 +disable_so_wl1271_acx_wake_up_conditions_fndecl_34066 wl1271_acx_wake_up_conditions fndecl 0 34066 NULL
137585 +disable_so_sys_epoll_ctl_fndecl_34068 sys_epoll_ctl fndecl 0 34068 NULL
137586 +disable_so_qp_alloc_guest_work_fndecl_34074 qp_alloc_guest_work fndecl 0 34074 NULL
137587 +disable_so_init_one_instance_fndecl_34076 init_one_instance fndecl 0 34076 NULL
137588 +disable_so_btusb_submit_bulk_urb_fndecl_34082 btusb_submit_bulk_urb fndecl 0 34082 NULL
137589 +disable_so_device_user_lock_fndecl_34085 device_user_lock fndecl 0 34085 NULL
137590 +disable_so___memblock_alloc_base_fndecl_34092 __memblock_alloc_base fndecl 0 34092 NULL
137591 +disable_so_user_to_new_fndecl_34093 user_to_new fndecl 0 34093 NULL
137592 +disable_so_set_termiox_fndecl_34106 set_termiox fndecl 0 34106 NULL
137593 +disable_so___wa_xfer_setup_sizes_fndecl_34109 __wa_xfer_setup_sizes fndecl 0 34109 NULL
137594 +disable_so_ap192_ak4114_init_fndecl_34114 ap192_ak4114_init fndecl 0 34114 NULL
137595 +disable_so_qxl_alloc_bo_reserved_fndecl_34119 qxl_alloc_bo_reserved fndecl 0 34119 NULL
137596 +disable_so_do_command_fndecl_34128 do_command fndecl 0 34128 NULL
137597 +disable_so_cpuidle_enable_device_fndecl_34132 cpuidle_enable_device fndecl 0 34132 NULL nohasharray
137598 +disable_so_vb2_reqbufs_fndecl_34132 vb2_reqbufs fndecl 0 34132 &disable_so_cpuidle_enable_device_fndecl_34132
137599 +disable_so_sync_erase_fndecl_34134 sync_erase fndecl 0 34134 NULL nohasharray
137600 +disable_so_data_regs_tpm_inf_dev_34134 data_regs tpm_inf_dev 0 34134 &disable_so_sync_erase_fndecl_34134
137601 +disable_so_kfd_parse_subtype_iolink_fndecl_34136 kfd_parse_subtype_iolink fndecl 0 34136 NULL
137602 +disable_so_nilfs_sysfs_create_segments_group_fndecl_34137 nilfs_sysfs_create_segments_group fndecl 0 34137 NULL
137603 +disable_so_vmax_packet_size_pwc_device_34153 vmax_packet_size pwc_device 0 34153 NULL
137604 +disable_so_add_evtchn_fndecl_34157 add_evtchn fndecl 0 34157 NULL
137605 +disable_so_max_requests_rpcrdma_create_data_internal_34158 max_requests rpcrdma_create_data_internal 0 34158 NULL
137606 +disable_so_wl12xx_cmd_start_fwlog_fndecl_34160 wl12xx_cmd_start_fwlog fndecl 0 34160 NULL
137607 +disable_so___domain_mapping_fndecl_34162 __domain_mapping fndecl 0 34162 NULL
137608 +disable_so_bnx2x_set_real_num_queues_fndecl_34164 bnx2x_set_real_num_queues fndecl 0 34164 NULL
137609 +disable_so_genl_family_rcv_msg_fndecl_34170 genl_family_rcv_msg fndecl 0 34170 NULL
137610 +disable_so_osst_seek_sector_fndecl_34173 osst_seek_sector fndecl 0 34173 NULL
137611 +disable_so_vt_do_kdsk_ioctl_fndecl_34183 vt_do_kdsk_ioctl fndecl 0 34183 NULL
137612 +disable_so__base_allocate_memory_pools_fndecl_34194 _base_allocate_memory_pools fndecl 0 34194 NULL nohasharray
137613 +disable_so_nouveau_cli_create_fndecl_34194 nouveau_cli_create fndecl 0 34194 &disable_so__base_allocate_memory_pools_fndecl_34194
137614 +disable_so_qxl_device_init_fndecl_34198 qxl_device_init fndecl 0 34198 NULL
137615 +disable_so_ufshcd_exec_dev_cmd_fndecl_34212 ufshcd_exec_dev_cmd fndecl 0 34212 NULL
137616 +disable_so_usb_urb_initv2_fndecl_34229 usb_urb_initv2 fndecl 0 34229 NULL nohasharray
137617 +disable_so_ath6kl_wmi_simple_cmd_fndecl_34229 ath6kl_wmi_simple_cmd fndecl 0 34229 &disable_so_usb_urb_initv2_fndecl_34229 nohasharray
137618 +disable_so_wl1271_acx_arp_ip_filter_fndecl_34229 wl1271_acx_arp_ip_filter fndecl 0 34229 &disable_so_ath6kl_wmi_simple_cmd_fndecl_34229
137619 +disable_so_snd_tea575x_hw_init_fndecl_34232 snd_tea575x_hw_init fndecl 0 34232 NULL
137620 +disable_so_isdnhdlc_decode_fndecl_34233 isdnhdlc_decode fndecl 0 34233 NULL
137621 +disable_so_addr_uio_mem_34242 addr uio_mem 0 34242 NULL
137622 +disable_so_xfs_btree_split_fndecl_34248 xfs_btree_split fndecl 0 34248 NULL nohasharray
137623 +disable_so_snd_emu10k1x_create_fndecl_34248 snd_emu10k1x_create fndecl 0 34248 &disable_so_xfs_btree_split_fndecl_34248
137624 +disable_so_mwl8k_cmd_encryption_set_key_fndecl_34254 mwl8k_cmd_encryption_set_key fndecl 0 34254 NULL
137625 +disable_so_count_igbvf_ring_34264 count igbvf_ring 0 34264 NULL
137626 +disable_so_ti_startup_fndecl_34277 ti_startup fndecl 0 34277 NULL
137627 +disable_so_ea_get_fndecl_34289 ea_get fndecl 0 34289 NULL nohasharray
137628 +disable_so_osst_reset_header_fndecl_34289 osst_reset_header fndecl 0 34289 &disable_so_ea_get_fndecl_34289
137629 +disable_so_kvm_set_memory_region_fndecl_34290 kvm_set_memory_region fndecl 0 34290 NULL
137630 +disable_so_irq_pm80x_onkey_info_34294 irq pm80x_onkey_info 0 34294 NULL
137631 +disable_so_acpi_power_get_state_fndecl_34304 acpi_power_get_state fndecl 0 34304 NULL
137632 +disable_so_mptsas_sas_expander_pg0_fndecl_34312 mptsas_sas_expander_pg0 fndecl 0 34312 NULL
137633 +disable_so_flock64_to_posix_lock_fndecl_34317 flock64_to_posix_lock fndecl 0 34317 NULL nohasharray
137634 +disable_so_hidp_session_dev_init_fndecl_34317 hidp_session_dev_init fndecl 0 34317 &disable_so_flock64_to_posix_lock_fndecl_34317
137635 +disable_so_acpi_battery_add_fndecl_34326 acpi_battery_add fndecl 0 34326 NULL
137636 +disable_so_nilfs_segctor_create_checkpoint_fndecl_34333 nilfs_segctor_create_checkpoint fndecl 0 34333 NULL
137637 +disable_so_acpi_pci_link_get_current_fndecl_34338 acpi_pci_link_get_current fndecl 0 34338 NULL
137638 +disable_so_kvm_cpu_get_extint_fndecl_34341 kvm_cpu_get_extint fndecl 0 34341 NULL
137639 +disable_so_usb_alloc_stream_buffers_fndecl_34344 usb_alloc_stream_buffers fndecl 0 34344 NULL
137640 +disable_so_snd_compress_new_fndecl_34346 snd_compress_new fndecl 0 34346 NULL
137641 +disable_so_logical_ring_alloc_request_fndecl_34356 logical_ring_alloc_request fndecl 0 34356 NULL
137642 +disable_so_em28xx_write_reg_bits_fndecl_34360 em28xx_write_reg_bits fndecl 0 34360 NULL
137643 +disable_so_src_rsc_init_fndecl_34366 src_rsc_init fndecl 0 34366 NULL
137644 +disable_so_qlcnic_sriov_check_dev_ready_fndecl_34367 qlcnic_sriov_check_dev_ready fndecl 0 34367 NULL
137645 +disable_so_check_auto_mute_availability_fndecl_34373 check_auto_mute_availability fndecl 0 34373 NULL
137646 +disable_so_get_bad_peb_limit_fndecl_34374 get_bad_peb_limit fndecl 0 34374 NULL
137647 +disable_so___uwb_rc_cmd_fndecl_34375 __uwb_rc_cmd fndecl 0 34375 NULL nohasharray
137648 +disable_so_gntalloc_ioctl_alloc_fndecl_34375 gntalloc_ioctl_alloc fndecl 0 34375 &disable_so___uwb_rc_cmd_fndecl_34375
137649 +disable_so_netlbl_cfg_unlbl_static_del_fndecl_34381 netlbl_cfg_unlbl_static_del fndecl 0 34381 NULL
137650 +disable_so_add_extent_mapping_fndecl_34382 add_extent_mapping fndecl 0 34382 NULL nohasharray
137651 +disable_so_uvesafb_setcolreg_fndecl_34382 uvesafb_setcolreg fndecl 0 34382 &disable_so_add_extent_mapping_fndecl_34382
137652 +disable_so_sctp_add_bind_addr_fndecl_34385 sctp_add_bind_addr fndecl 0 34385 NULL nohasharray
137653 +disable_so_pfn_mthca_uar_34385 pfn mthca_uar 0 34385 &disable_so_sctp_add_bind_addr_fndecl_34385
137654 +disable_so_new_to_user_fndecl_34390 new_to_user fndecl 0 34390 NULL
137655 +disable_so_fs_open_fndecl_34392 fs_open fndecl 0 34392 NULL
137656 +disable_so_probe_sysfs_permissions_fndecl_34406 probe_sysfs_permissions fndecl 0 34406 NULL
137657 +disable_so___i2c_transfer_fndecl_34417 __i2c_transfer fndecl 0 34417 NULL
137658 +disable_so_bnx2x_nvram_read_fndecl_34425 bnx2x_nvram_read fndecl 0 34425 NULL
137659 +disable_so_ocfs2_journal_access_gd_fndecl_34434 ocfs2_journal_access_gd fndecl 0 34434 NULL
137660 +disable_so_update_space_info_fndecl_34438 update_space_info fndecl 0 34438 NULL
137661 +disable_so_isp116x_urb_enqueue_fndecl_34440 isp116x_urb_enqueue fndecl 0 34440 NULL
137662 +disable_so_smb2_push_mandatory_locks_fndecl_34449 smb2_push_mandatory_locks fndecl 0 34449 NULL
137663 +disable_so_owner_btrfs_header_34453 owner btrfs_header 0 34453 NULL
137664 +disable_so_hpsa_passthru_ioctl_fndecl_34471 hpsa_passthru_ioctl fndecl 0 34471 NULL
137665 +disable_so_vmw_resource_context_res_add_fndecl_34474 vmw_resource_context_res_add fndecl 0 34474 NULL
137666 +disable_so_i2c_hid_command_fndecl_34481 i2c_hid_command fndecl 0 34481 NULL
137667 +disable_so_tomoyo_execute_permission_fndecl_34482 tomoyo_execute_permission fndecl 0 34482 NULL nohasharray
137668 +disable_so_iwl_dbgfs_bcast_filters_write_fndecl_34482 iwl_dbgfs_bcast_filters_write fndecl 0 34482 &disable_so_tomoyo_execute_permission_fndecl_34482
137669 +disable_so_ocfs2_find_xe_in_bucket_fndecl_34483 ocfs2_find_xe_in_bucket fndecl 0 34483 NULL
137670 +disable_so_iguanair_get_features_fndecl_34486 iguanair_get_features fndecl 0 34486 NULL
137671 +disable_so_ufshcd_query_descriptor_fndecl_34495 ufshcd_query_descriptor fndecl 0 34495 NULL
137672 +disable_so_bnx2x_test_dir_entry_fndecl_34498 bnx2x_test_dir_entry fndecl 0 34498 NULL
137673 +disable_so_pci_dev_reset_fndecl_34510 pci_dev_reset fndecl 0 34510 NULL
137674 +disable_so_qib_set_part_key_fndecl_34520 qib_set_part_key fndecl 0 34520 NULL
137675 +disable_so_clk_enable_fndecl_34522 clk_enable fndecl 0 34522 NULL
137676 +disable_so_p9pdu_vreadf_fndecl_34524 p9pdu_vreadf fndecl 0 34524 NULL
137677 +disable_so_validate_pnode_fndecl_34528 validate_pnode fndecl 0 34528 NULL nohasharray
137678 +disable_so_register_mem_sect_under_node_fndecl_34528 register_mem_sect_under_node fndecl 0 34528 &disable_so_validate_pnode_fndecl_34528
137679 +disable_so_ppp_register_net_channel_fndecl_34529 ppp_register_net_channel fndecl 0 34529 NULL
137680 +disable_so_resid_sg_io_hdr_34541 resid sg_io_hdr 0 34541 NULL
137681 +disable_so_mxr_acquire_resources_fndecl_34555 mxr_acquire_resources fndecl 0 34555 NULL
137682 +disable_so_ubifs_tnc_end_commit_fndecl_34559 ubifs_tnc_end_commit fndecl 0 34559 NULL nohasharray
137683 +disable_so_iwl_mvm_mac_ctxt_cmd_ap_fndecl_34559 iwl_mvm_mac_ctxt_cmd_ap fndecl 0 34559 &disable_so_ubifs_tnc_end_commit_fndecl_34559
137684 +disable_so_get_amixer_rsc_fndecl_34565 get_amixer_rsc fndecl 0 34565 NULL
137685 +disable_so_maxpacket_limit_usb_ep_34566 maxpacket_limit usb_ep 0 34566 NULL
137686 +disable_so_ppp_sync_open_fndecl_34577 ppp_sync_open fndecl 0 34577 NULL
137687 +disable_so_inum_ubifs_dent_node_34584 inum ubifs_dent_node 0 34584 NULL
137688 +disable_so_hcd_alloc_coherent_fndecl_34597 hcd_alloc_coherent fndecl 0 34597 NULL
137689 +disable_so_ath6kl_wmi_data_hdr_add_fndecl_34601 ath6kl_wmi_data_hdr_add fndecl 0 34601 NULL
137690 +disable_so_goldfish_fb_probe_fndecl_34602 goldfish_fb_probe fndecl 0 34602 NULL
137691 +disable_so___check_block_validity_fndecl_34606 __check_block_validity fndecl 0 34606 NULL
137692 +disable_so_bcm63xx_hsspi_do_txrx_fndecl_34614 bcm63xx_hsspi_do_txrx fndecl 0 34614 NULL
137693 +disable_so_nvme_trans_unmap_fndecl_34641 nvme_trans_unmap fndecl 0 34641 NULL
137694 +disable_so_nfs4_try_replacing_one_location_fndecl_34642 nfs4_try_replacing_one_location fndecl 0 34642 NULL
137695 +disable_so_tm6000_audio_init_fndecl_34654 tm6000_audio_init fndecl 0 34654 NULL
137696 +disable_so_init_evtlog_size_iwl_fw_34663 init_evtlog_size iwl_fw 0 34663 NULL
137697 +disable_so_brcmf_sdio_readconsole_fndecl_34668 brcmf_sdio_readconsole fndecl 0 34668 NULL
137698 +disable_so_storvsc_channel_init_fndecl_34674 storvsc_channel_init fndecl 0 34674 NULL
137699 +disable_so_inode_ext4_dir_entry_2_34680 inode ext4_dir_entry_2 0 34680 NULL
137700 +disable_so___mlx5_ib_modify_qp_fndecl_34683 __mlx5_ib_modify_qp fndecl 0 34683 NULL
137701 +disable_so_iscsit_do_build_pdu_and_seq_lists_fndecl_34717 iscsit_do_build_pdu_and_seq_lists fndecl 0 34717 NULL
137702 +disable_so_mlx4_init_xrcd_table_fndecl_34726 mlx4_init_xrcd_table fndecl 0 34726 NULL
137703 +disable_so_wa_xfer_create_subset_sg_fndecl_34731 wa_xfer_create_subset_sg fndecl 0 34731 NULL
137704 +disable_so_error_v4l2_ctrl_handler_34735 error v4l2_ctrl_handler 0 34735 NULL
137705 +disable_so_init_subctxts_fndecl_34737 init_subctxts fndecl 0 34737 NULL nohasharray
137706 +disable_so_vx_alloc_pipe_fndecl_34737 vx_alloc_pipe fndecl 0 34737 &disable_so_init_subctxts_fndecl_34737
137707 +disable_so___smsc95xx_mdio_read_fndecl_34751 __smsc95xx_mdio_read fndecl 0 34751 NULL
137708 +disable_so_sdr_fm_freq_vivid_dev_34755 sdr_fm_freq vivid_dev 0 34755 NULL
137709 +disable_so_mlx4_init_counters_table_fndecl_34756 mlx4_init_counters_table fndecl 0 34756 NULL
137710 +disable_so_ssb_bus_pcmciabus_register_fndecl_34759 ssb_bus_pcmciabus_register fndecl 0 34759 NULL
137711 +disable_so_options_len_ovs_tunnel_info_34769 options_len ovs_tunnel_info 0 34769 NULL
137712 +disable_so_qxl_image_alloc_objects_fndecl_34790 qxl_image_alloc_objects fndecl 0 34790 NULL
137713 +disable_so_result_sir_fsm_34791 result sir_fsm 0 34791 NULL
137714 +disable_so_mwifiex_wait_queue_complete_fndecl_34794 mwifiex_wait_queue_complete fndecl 0 34794 NULL
137715 +disable_so_hdlcdrv_ioctl_fndecl_34799 hdlcdrv_ioctl fndecl 0 34799 NULL
137716 +disable_so_vmci_ctx_enqueue_datagram_fndecl_34800 vmci_ctx_enqueue_datagram fndecl 0 34800 NULL
137717 +disable_so_num_q_vectors_ixgbe_adapter_34808 num_q_vectors ixgbe_adapter 0 34808 NULL
137718 +disable_so_i915_reset_gen7_sol_offsets_fndecl_34816 i915_reset_gen7_sol_offsets fndecl 0 34816 NULL
137719 +disable_so_i915_gem_get_seqno_fndecl_34824 i915_gem_get_seqno fndecl 0 34824 NULL
137720 +disable_so_add_chmap_fndecl_34831 add_chmap fndecl 0 34831 NULL
137721 +disable_so_ipip6_tunnel_add_prl_fndecl_34838 ipip6_tunnel_add_prl fndecl 0 34838 NULL
137722 +disable_so_new_analog_input_fndecl_34845 new_analog_input fndecl 0 34845 NULL
137723 +disable_so_eeepc_platform_init_fndecl_34846 eeepc_platform_init fndecl 0 34846 NULL
137724 +disable_so_afs_deliver_cb_callback_fndecl_34848 afs_deliver_cb_callback fndecl 0 34848 NULL
137725 +disable_so_fw_iso_buffer_init_fndecl_34853 fw_iso_buffer_init fndecl 0 34853 NULL
137726 +disable_so_siena_mtd_get_fw_subtypes_fndecl_34858 siena_mtd_get_fw_subtypes fndecl 0 34858 NULL
137727 +disable_so_btrfs_update_inode_item_fndecl_34866 btrfs_update_inode_item fndecl 0 34866 NULL nohasharray
137728 +disable_so_size_g2d_frame_34866 size g2d_frame 0 34866 &disable_so_btrfs_update_inode_item_fndecl_34866
137729 +disable_so_sddr09_writeX_fndecl_34870 sddr09_writeX fndecl 0 34870 NULL
137730 +disable_so_sbp_update_unit_directory_fndecl_34888 sbp_update_unit_directory fndecl 0 34888 NULL
137731 +disable_so_evdev_open_device_fndecl_34889 evdev_open_device fndecl 0 34889 NULL
137732 +disable_so_scsiback_gnttab_data_map_list_fndecl_34890 scsiback_gnttab_data_map_list fndecl 0 34890 NULL
137733 +disable_so_create_sensor_fndecl_34898 create_sensor fndecl 0 34898 NULL
137734 +disable_so_fat_ent_read_fndecl_34902 fat_ent_read fndecl 0 34902 NULL
137735 +disable_so_mptsas_probe_hba_phys_fndecl_34910 mptsas_probe_hba_phys fndecl 0 34910 NULL
137736 +disable_so_drm_helper_crtc_mode_set_base_fndecl_34920 drm_helper_crtc_mode_set_base fndecl 0 34920 NULL
137737 +disable_so_ubifs_wbuf_sync_nolock_fndecl_34924 ubifs_wbuf_sync_nolock fndecl 0 34924 NULL nohasharray
137738 +disable_so__regulator_enable_fndecl_34924 _regulator_enable fndecl 0 34924 &disable_so_ubifs_wbuf_sync_nolock_fndecl_34924
137739 +disable_so_r100_cs_track_check_pkt3_indx_buffer_fndecl_34925 r100_cs_track_check_pkt3_indx_buffer fndecl 0 34925 NULL
137740 +disable_so_port_fops_write_fndecl_34928 port_fops_write fndecl 0 34928 NULL
137741 +disable_so_fs_path_add_path_fndecl_34955 fs_path_add_path fndecl 0 34955 NULL
137742 +disable_so_gigaset_enterconfigmode_fndecl_34956 gigaset_enterconfigmode fndecl 0 34956 NULL
137743 +disable_so_snd_emux_register_fndecl_34962 snd_emux_register fndecl 0 34962 NULL
137744 +disable_so_snd_pcm_attach_substream_fndecl_34963 snd_pcm_attach_substream fndecl 0 34963 NULL
137745 +disable_so_bus_add_device_fndecl_34970 bus_add_device fndecl 0 34970 NULL
137746 +disable_so_usb_8dev_cmd_version_fndecl_34982 usb_8dev_cmd_version fndecl 0 34982 NULL
137747 +disable_so_IO_APIC_get_PCI_irq_vector_fndecl_34998 IO_APIC_get_PCI_irq_vector fndecl 0 34998 NULL nohasharray
137748 +disable_so_i915_gem_ringbuffer_submission_fndecl_34998 i915_gem_ringbuffer_submission fndecl 0 34998 &disable_so_IO_APIC_get_PCI_irq_vector_fndecl_34998
137749 +disable_so_xhci_mem_init_fndecl_34999 xhci_mem_init fndecl 0 34999 NULL
137750 +disable_so_hdlc_ioctl_fndecl_35002 hdlc_ioctl fndecl 0 35002 NULL
137751 +disable_so_rx_ring_count_ixgbe_adapter_35004 rx_ring_count ixgbe_adapter 0 35004 NULL
137752 +disable_so_platform_get_irq_byname_fndecl_35007 platform_get_irq_byname fndecl 0 35007 NULL
137753 +disable_so_do_trimming_fndecl_35014 do_trimming fndecl 0 35014 NULL
137754 +disable_so_prepend_name_fndecl_35015 prepend_name fndecl 0 35015 NULL
137755 +disable_so_dlm_lowcomms_connect_node_fndecl_35023 dlm_lowcomms_connect_node fndecl 0 35023 NULL nohasharray
137756 +disable_so_radeon_fbdev_init_fndecl_35023 radeon_fbdev_init fndecl 0 35023 &disable_so_dlm_lowcomms_connect_node_fndecl_35023 nohasharray
137757 +disable_so_whcrc_probe_fndecl_35023 whcrc_probe fndecl 0 35023 &disable_so_radeon_fbdev_init_fndecl_35023
137758 +disable_so_vSync_width_panel_info_35029 vSync_width panel_info 0 35029 NULL
137759 +disable_so_evdev_handle_get_keycode_fndecl_35030 evdev_handle_get_keycode fndecl 0 35030 NULL
137760 +disable_so_ipip6_tunnel_del_prl_fndecl_35034 ipip6_tunnel_del_prl fndecl 0 35034 NULL nohasharray
137761 +disable_so_hfc4s8s_probe_fndecl_35034 hfc4s8s_probe fndecl 0 35034 &disable_so_ipip6_tunnel_del_prl_fndecl_35034
137762 +disable_so_build_tce_table_fndecl_35046 build_tce_table fndecl 0 35046 NULL
137763 +disable_so_gpiochip_add_fndecl_35054 gpiochip_add fndecl 0 35054 NULL
137764 +disable_so_jffs2_flash_direct_write_fndecl_35070 jffs2_flash_direct_write fndecl 0 35070 NULL
137765 +disable_so_altera_set_dr_post_fndecl_35072 altera_set_dr_post fndecl 0 35072 NULL
137766 +disable_so_watchdog_trigger_fndecl_35073 watchdog_trigger fndecl 0 35073 NULL
137767 +disable_so_ttm_mem_global_alloc_fndecl_35080 ttm_mem_global_alloc fndecl 0 35080 NULL
137768 +disable_so_get_iovec_page_array_fndecl_35081 get_iovec_page_array fndecl 0 35081 NULL
137769 +disable_so_reclaim_pages_fndecl_35086 reclaim_pages fndecl 0 35086 NULL
137770 +disable_so_wl1251_cmd_ps_mode_fndecl_35104 wl1251_cmd_ps_mode fndecl 0 35104 NULL
137771 +disable_so_cifs_readdir_fndecl_35106 cifs_readdir fndecl 0 35106 NULL
137772 +disable_so_l2cap_sock_getsockopt_old_fndecl_35114 l2cap_sock_getsockopt_old fndecl 0 35114 NULL
137773 +disable_so_mlx4_en_create_rx_ring_fndecl_35128 mlx4_en_create_rx_ring fndecl 0 35128 NULL
137774 +disable_so_msb_ftl_scan_fndecl_35133 msb_ftl_scan fndecl 0 35133 NULL
137775 +disable_so__osd_realloc_seg_fndecl_35139 _osd_realloc_seg fndecl 0 35139 NULL
137776 +disable_so_usb_urb_alloc_bulk_urbs_fndecl_35145 usb_urb_alloc_bulk_urbs fndecl 0 35145 NULL
137777 +disable_so_lg2ff_init_fndecl_35164 lg2ff_init fndecl 0 35164 NULL
137778 +disable_so_snd_pcm_oss_read2_fndecl_35168 snd_pcm_oss_read2 fndecl 0 35168 NULL
137779 +disable_so_wl1271_acx_cca_threshold_fndecl_35170 wl1271_acx_cca_threshold fndecl 0 35170 NULL nohasharray
137780 +disable_so_tb_eeprom_get_drom_offset_fndecl_35170 tb_eeprom_get_drom_offset fndecl 0 35170 &disable_so_wl1271_acx_cca_threshold_fndecl_35170
137781 +disable_so_cifs_is_path_accessible_fndecl_35177 cifs_is_path_accessible fndecl 0 35177 NULL
137782 +disable_so___sound_insert_unit_fndecl_35186 __sound_insert_unit fndecl 0 35186 NULL
137783 +disable_so_sd_set_current_limit_fndecl_35195 sd_set_current_limit fndecl 0 35195 NULL
137784 +disable_so_kvm_vm_ioctl_set_pci_irq_mask_fndecl_35200 kvm_vm_ioctl_set_pci_irq_mask fndecl 0 35200 NULL
137785 +disable_so_tm6000_usb_probe_fndecl_35206 tm6000_usb_probe fndecl 0 35206 NULL
137786 +disable_so_new_lockspace_fndecl_35208 new_lockspace fndecl 0 35208 NULL
137787 +disable_so_nilfs_palloc_get_block_fndecl_35210 nilfs_palloc_get_block fndecl 0 35210 NULL
137788 +disable_so_xlog_recover_process_efis_fndecl_35212 xlog_recover_process_efis fndecl 0 35212 NULL
137789 +disable_so_iommu_queue_command_sync_fndecl_35215 iommu_queue_command_sync fndecl 0 35215 NULL
137790 +disable_so_set_gss_proxy_fndecl_35219 set_gss_proxy fndecl 0 35219 NULL
137791 +disable_so_snd_pcm_add_chmap_ctls_fndecl_35223 snd_pcm_add_chmap_ctls fndecl 0 35223 NULL
137792 +disable_so_vmbus_sendpacket_ctl_fndecl_35225 vmbus_sendpacket_ctl fndecl 0 35225 NULL
137793 +disable_so_timerfd_fget_fndecl_35235 timerfd_fget fndecl 0 35235 NULL
137794 +disable_so_xlate_to_uni_fndecl_35237 xlate_to_uni fndecl 0 35237 NULL
137795 +disable_so_wl18xx_cmd_smart_config_stop_fndecl_35241 wl18xx_cmd_smart_config_stop fndecl 0 35241 NULL
137796 +disable_so_populate_pgd_fndecl_35261 populate_pgd fndecl 0 35261 NULL
137797 +disable_so_ttm_base_object_init_fndecl_35262 ttm_base_object_init fndecl 0 35262 NULL
137798 +disable_so_fuse_notify_inval_entry_fndecl_35266 fuse_notify_inval_entry fndecl 0 35266 NULL
137799 +disable_so_r592_test_io_error_fndecl_35267 r592_test_io_error fndecl 0 35267 NULL
137800 +disable_so_swiotlb_tbl_map_single_fndecl_35276 swiotlb_tbl_map_single fndecl 0 35276 NULL
137801 +disable_so_osst_write_header_fndecl_35282 osst_write_header fndecl 0 35282 NULL
137802 +disable_so_create_lkb_fndecl_35302 create_lkb fndecl 0 35302 NULL
137803 +disable_so_channels_twl4030_priv_35329 channels twl4030_priv 0 35329 NULL
137804 +disable_so_efx_mcdi_port_get_number_fndecl_35338 efx_mcdi_port_get_number fndecl 0 35338 NULL
137805 +disable_so_wanxl_ioctl_fndecl_35339 wanxl_ioctl fndecl 0 35339 NULL
137806 +disable_so_evergreen_cs_track_validate_htile_fndecl_35346 evergreen_cs_track_validate_htile fndecl 0 35346 NULL
137807 +disable_so___pci_dev_reset_fndecl_35361 __pci_dev_reset fndecl 0 35361 NULL
137808 +disable_so_solo_p2m_dma_t_fndecl_35365 solo_p2m_dma_t fndecl 0 35365 NULL
137809 +disable_so_wm0010_stage2_load_fndecl_35375 wm0010_stage2_load fndecl 0 35375 NULL
137810 +disable_so_lanai_setup_tx_vci_fndecl_35377 lanai_setup_tx_vci fndecl 0 35377 NULL nohasharray
137811 +disable_so_selinux_xfrm_alloc_user_fndecl_35377 selinux_xfrm_alloc_user fndecl 0 35377 &disable_so_lanai_setup_tx_vci_fndecl_35377
137812 +disable_so_mmio_base_phys_radeonfb_info_35378 mmio_base_phys radeonfb_info 0 35378 NULL
137813 +disable_so_fuse_read_interrupt_fndecl_35386 fuse_read_interrupt fndecl 0 35386 NULL
137814 +disable_so_lnc_add_fndecl_35390 lnc_add fndecl 0 35390 NULL
137815 +disable_so_pcf50633_adc_async_read_fndecl_35404 pcf50633_adc_async_read fndecl 0 35404 NULL
137816 +disable_so_crypto_ahash_setkey_fndecl_35405 crypto_ahash_setkey fndecl 0 35405 NULL nohasharray
137817 +disable_so_nci_hci_dev_connect_gates_fndecl_35405 nci_hci_dev_connect_gates fndecl 0 35405 &disable_so_crypto_ahash_setkey_fndecl_35405
137818 +disable_so_xfs_bulkstat_one_compat_fndecl_35428 xfs_bulkstat_one_compat fndecl 0 35428 NULL
137819 +disable_so_reiserfs_security_write_fndecl_35431 reiserfs_security_write fndecl 0 35431 NULL
137820 +disable_so_verify_reserved_gdb_fndecl_35439 verify_reserved_gdb fndecl 0 35439 NULL
137821 +disable_so_major_gendisk_35443 major gendisk 0 35443 NULL
137822 +disable_so_intel_ring_alloc_request_fndecl_35444 intel_ring_alloc_request fndecl 0 35444 NULL
137823 +disable_so_crypto_gcm_module_init_fndecl_35446 crypto_gcm_module_init fndecl 0 35446 NULL
137824 +disable_so_gfs2_ri_update_fndecl_35458 gfs2_ri_update fndecl 0 35458 NULL
137825 +disable_so_add_symlink_fndecl_35459 add_symlink fndecl 0 35459 NULL
137826 +disable_so_drbd_send_fndecl_35461 drbd_send fndecl 0 35461 NULL
137827 +disable_so_alloc_lpt_leb_fndecl_35462 alloc_lpt_leb fndecl 0 35462 NULL
137828 +disable_so_sel_write_relabel_fndecl_35464 sel_write_relabel fndecl 0 35464 NULL
137829 +disable_so_dtv_property_process_get_fndecl_35467 dtv_property_process_get fndecl 0 35467 NULL
137830 +disable_so_osst_get_frame_position_fndecl_35475 osst_get_frame_position fndecl 0 35475 NULL
137831 +disable_so___rpipe_set_descr_fndecl_35478 __rpipe_set_descr fndecl 0 35478 NULL
137832 +disable_so_ubi_attach_fastmap_fndecl_35490 ubi_attach_fastmap fndecl 0 35490 NULL
137833 +disable_so_uvc_v4l2_open_fndecl_35491 uvc_v4l2_open fndecl 0 35491 NULL
137834 +disable_so_mantis_i2c_init_fndecl_35492 mantis_i2c_init fndecl 0 35492 NULL
137835 +disable_so_mantis_pci_probe_fndecl_35495 mantis_pci_probe fndecl 0 35495 NULL
137836 +disable_so_dbAllocDmap_fndecl_35496 dbAllocDmap fndecl 0 35496 NULL
137837 +disable_so_torture_peb_fndecl_35497 torture_peb fndecl 0 35497 NULL
137838 +disable_so_acpi_nvs_register_fndecl_35515 acpi_nvs_register fndecl 0 35515 NULL
137839 +disable_so_do_raw_setsockopt_fndecl_35516 do_raw_setsockopt fndecl 0 35516 NULL
137840 +disable_so_cx24117_firmware_ondemand_fndecl_35527 cx24117_firmware_ondemand fndecl 0 35527 NULL
137841 +disable_so_xhci_evaluate_context_result_fndecl_35529 xhci_evaluate_context_result fndecl 0 35529 NULL
137842 +disable_so_regcache_rbtree_init_fndecl_35556 regcache_rbtree_init fndecl 0 35556 NULL
137843 +disable_so_si_set_mc_special_registers_fndecl_35559 si_set_mc_special_registers fndecl 0 35559 NULL
137844 +disable_so_snd_seq_queue_use_fndecl_35562 snd_seq_queue_use fndecl 0 35562 NULL
137845 +disable_so_ptrace_request_fndecl_35563 ptrace_request fndecl 0 35563 NULL
137846 +disable_so_output_sleep_fndecl_35570 output_sleep fndecl 0 35570 NULL
137847 +disable_so_ip_vs_add_service_fndecl_35575 ip_vs_add_service fndecl 0 35575 NULL
137848 +disable_so_cfg80211_mlme_auth_fndecl_35577 cfg80211_mlme_auth fndecl 0 35577 NULL
137849 +disable_so_ext3_find_goal_fndecl_35586 ext3_find_goal fndecl 0 35586 NULL
137850 +disable_so_actual_length_usb_iso_packet_descriptor_35588 actual_length usb_iso_packet_descriptor 0 35588 NULL
137851 +disable_so_xfs_rtallocate_extent_block_fndecl_35604 xfs_rtallocate_extent_block fndecl 0 35604 NULL
137852 +disable_so_nci_hci_dev_session_init_fndecl_35609 nci_hci_dev_session_init fndecl 0 35609 NULL
137853 +disable_so_offset_lv_35617 offset lv 0 35617 NULL
137854 +disable_so_validate_nla_fndecl_35618 validate_nla fndecl 0 35618 NULL
137855 +disable_so_generic_perform_write_fndecl_35619 generic_perform_write fndecl 0 35619 NULL
137856 +disable_so_to_mlx5_st_fndecl_35624 to_mlx5_st fndecl 0 35624 NULL
137857 +disable_so_qxl_driver_load_fndecl_35625 qxl_driver_load fndecl 0 35625 NULL
137858 +disable_so_rocker_flow_tbl_add_fndecl_35629 rocker_flow_tbl_add fndecl 0 35629 NULL
137859 +disable_so_prepare_dma_fndecl_35630 prepare_dma fndecl 0 35630 NULL
137860 +disable_so_cciss_add_gendisk_fndecl_35636 cciss_add_gendisk fndecl 0 35636 NULL
137861 +disable_so_broadsheet_spiflash_rewrite_sector_fndecl_35651 broadsheet_spiflash_rewrite_sector fndecl 0 35651 NULL
137862 +disable_so_snd_intel8x0_create_fndecl_35655 snd_intel8x0_create fndecl 0 35655 NULL
137863 +disable_so_xfs_alloc_read_agfl_fndecl_35660 xfs_alloc_read_agfl fndecl 0 35660 NULL
137864 +disable_so_assign_irq_vector_fndecl_35671 assign_irq_vector fndecl 0 35671 NULL nohasharray
137865 +disable_so_reset_controller_fndecl_35671 reset_controller fndecl 0 35671 &disable_so_assign_irq_vector_fndecl_35671
137866 +disable_so_isert_map_data_buf_fndecl_35701 isert_map_data_buf fndecl 0 35701 NULL
137867 +disable_so_populate_pud_fndecl_35706 populate_pud fndecl 0 35706 NULL
137868 +disable_so_send_cmd_write_uart_register_fndecl_35714 send_cmd_write_uart_register fndecl 0 35714 NULL
137869 +disable_so_credits_csio_q_35715 credits csio_q 0 35715 NULL
137870 +disable_so_snd_opl3_load_patch_seq_oss_fndecl_35720 snd_opl3_load_patch_seq_oss fndecl 0 35720 NULL
137871 +disable_so_kobject_set_name_vargs_fndecl_35730 kobject_set_name_vargs fndecl 0 35730 NULL
137872 +disable_so_offset_ext4_io_end_35743 offset ext4_io_end 0 35743 NULL
137873 +disable_so_vidioc_g_fmt_vid_overlay_fndecl_35748 vidioc_g_fmt_vid_overlay fndecl 0 35748 NULL
137874 +disable_so_hash_ipportip6_add_fndecl_35750 hash_ipportip6_add fndecl 0 35750 NULL
137875 +disable_so_make_rate_fndecl_35764 make_rate fndecl 0 35764 NULL
137876 +disable_so_nvkm_mm_tail_fndecl_35767 nvkm_mm_tail fndecl 0 35767 NULL nohasharray
137877 +disable_so_channels_snd_usb_substream_35767 channels snd_usb_substream 0 35767 &disable_so_nvkm_mm_tail_fndecl_35767
137878 +disable_so_btrfs_run_dev_stats_fndecl_35768 btrfs_run_dev_stats fndecl 0 35768 NULL
137879 +disable_so_arizona_find_fratio_fndecl_35779 arizona_find_fratio fndecl 0 35779 NULL
137880 +disable_so_wl18xx_cmd_channel_switch_fndecl_35791 wl18xx_cmd_channel_switch fndecl 0 35791 NULL
137881 +disable_so_ubi_change_vtbl_record_fndecl_35792 ubi_change_vtbl_record fndecl 0 35792 NULL
137882 +disable_so_mwave_ioctl_fndecl_35793 mwave_ioctl fndecl 0 35793 NULL
137883 +disable_so_nci_hci_get_param_fndecl_35805 nci_hci_get_param fndecl 0 35805 NULL
137884 +disable_so_ext3_xattr_get_fndecl_35806 ext3_xattr_get fndecl 0 35806 NULL
137885 +disable_so_snd_usbmidi_detect_per_port_endpoints_fndecl_35809 snd_usbmidi_detect_per_port_endpoints fndecl 0 35809 NULL
137886 +disable_so_node_req_fndecl_35812 node_req fndecl 0 35812 NULL
137887 +disable_so_ubifs_read_node_wbuf_fndecl_35817 ubifs_read_node_wbuf fndecl 0 35817 NULL
137888 +disable_so_write_ctree_super_fndecl_35820 write_ctree_super fndecl 0 35820 NULL
137889 +disable_so_headroom_caifsock_35821 headroom caifsock 0 35821 NULL
137890 +disable_so_wl1251_cmd_vbm_fndecl_35826 wl1251_cmd_vbm fndecl 0 35826 NULL nohasharray
137891 +disable_so_VFP_kyrofb_info_35826 VFP kyrofb_info 0 35826 &disable_so_wl1251_cmd_vbm_fndecl_35826
137892 +disable_so_usbtv_audio_init_fndecl_35830 usbtv_audio_init fndecl 0 35830 NULL
137893 +disable_so_ecryptfs_find_auth_tok_for_sig_fndecl_35831 ecryptfs_find_auth_tok_for_sig fndecl 0 35831 NULL
137894 +disable_so_srq_size_srpt_device_35833 srq_size srpt_device 0 35833 NULL
137895 +disable_so_clk_core_enable_fndecl_35844 clk_core_enable fndecl 0 35844 NULL
137896 +disable_so_jffs2_do_read_inode_internal_fndecl_35847 jffs2_do_read_inode_internal fndecl 0 35847 NULL
137897 +disable_so_dbAllocNext_fndecl_35857 dbAllocNext fndecl 0 35857 NULL
137898 +disable_so_atm_del_addr_fndecl_35861 atm_del_addr fndecl 0 35861 NULL
137899 +disable_so_ea_remove_stuffed_fndecl_35870 ea_remove_stuffed fndecl 0 35870 NULL
137900 +disable_so_ubifs_jnl_write_inode_fndecl_35889 ubifs_jnl_write_inode fndecl 0 35889 NULL
137901 +disable_so_dapm_connect_mux_fndecl_35904 dapm_connect_mux fndecl 0 35904 NULL
137902 +disable_so_sctp_do_sm_fndecl_35914 sctp_do_sm fndecl 0 35914 NULL
137903 +disable_so_smsc75xx_write_reg_fndecl_35920 smsc75xx_write_reg fndecl 0 35920 NULL
137904 +disable_so_isdn_net_addphone_fndecl_35925 isdn_net_addphone fndecl 0 35925 NULL
137905 +disable_so_ieee802154_hdr_minlen_fndecl_35927 ieee802154_hdr_minlen fndecl 0 35927 NULL
137906 +disable_so_prism2_hostapd_add_sta_fndecl_35928 prism2_hostapd_add_sta fndecl 0 35928 NULL
137907 +disable_so_length_isp1362_ep_35933 length isp1362_ep 0 35933 NULL
137908 +disable_so_snd_pcm_new_stream_fndecl_35934 snd_pcm_new_stream fndecl 0 35934 NULL
137909 +disable_so_alloc_iommu_fndecl_35951 alloc_iommu fndecl 0 35951 NULL
137910 +disable_so_qlcnic_setup_pci_map_fndecl_35980 qlcnic_setup_pci_map fndecl 0 35980 NULL
137911 +disable_so_if_spi_prog_main_firmware_check_len_fndecl_35990 if_spi_prog_main_firmware_check_len fndecl 0 35990 NULL
137912 +disable_so_mss_cache_tcp_sock_35995 mss_cache tcp_sock 0 35995 NULL
137913 +disable_so_fuse_fill_write_pages_fndecl_36001 fuse_fill_write_pages fndecl 0 36001 NULL
137914 +disable_so_create_in_jack_mode_fndecl_36002 create_in_jack_mode fndecl 0 36002 NULL
137915 +disable_so_hwrng_register_fndecl_36015 hwrng_register fndecl 0 36015 NULL
137916 +disable_so_reiserfs_fill_super_fndecl_36029 reiserfs_fill_super fndecl 0 36029 NULL
137917 +disable_so_setup_fndecl_36030 setup fndecl 0 36030 NULL
137918 +disable_so_domain_add_dev_info_fndecl_36049 domain_add_dev_info fndecl 0 36049 NULL
137919 +disable_so_iwl_mvm_mac_ctxt_cmd_go_fndecl_36050 iwl_mvm_mac_ctxt_cmd_go fndecl 0 36050 NULL
137920 +disable_so_manual_retry_count_local_info_36060 manual_retry_count local_info 0 36060 NULL
137921 +disable_so_iwl_mvm_send_patterns_fndecl_36067 iwl_mvm_send_patterns fndecl 0 36067 NULL
137922 +disable_so_wdm_write_fndecl_36084 wdm_write fndecl 0 36084 NULL
137923 +disable_so_ext3_try_to_allocate_with_rsv_fndecl_36090 ext3_try_to_allocate_with_rsv fndecl 0 36090 NULL
137924 +disable_so_vmw_overlay_claim_fndecl_36097 vmw_overlay_claim fndecl 0 36097 NULL
137925 +disable_so_nvme_trans_start_stop_fndecl_36101 nvme_trans_start_stop fndecl 0 36101 NULL
137926 +disable_so_br_del_bridge_fndecl_36110 br_del_bridge fndecl 0 36110 NULL
137927 +disable_so_cypress_probe_fndecl_36118 cypress_probe fndecl 0 36118 NULL
137928 +disable_so_bcmgenet_alloc_rx_buffers_fndecl_36120 bcmgenet_alloc_rx_buffers fndecl 0 36120 NULL
137929 +disable_so_xfs_trans_read_buf_map_fndecl_36121 xfs_trans_read_buf_map fndecl 0 36121 NULL
137930 +disable_so_i40e_init_interrupt_scheme_fndecl_36136 i40e_init_interrupt_scheme fndecl 0 36136 NULL
137931 +disable_so_efi_call_phys_prolog_fndecl_36142 efi_call_phys_prolog fndecl 0 36142 NULL
137932 +disable_so_spi_xcomm_sync_config_fndecl_36146 spi_xcomm_sync_config fndecl 0 36146 NULL
137933 +disable_so_r600_cs_parse_packet0_fndecl_36148 r600_cs_parse_packet0 fndecl 0 36148 NULL
137934 +disable_so_payload_camif_vp_36153 payload camif_vp 0 36153 NULL
137935 +disable_so_brcmf_fil_bsscfg_int_get_fndecl_36168 brcmf_fil_bsscfg_int_get fndecl 0 36168 NULL
137936 +disable_so_do_cpuid_ent_fndecl_36174 do_cpuid_ent fndecl 0 36174 NULL
137937 +disable_so_setup_leaf_for_split_fndecl_36179 setup_leaf_for_split fndecl 0 36179 NULL
137938 +disable_so_bunzip2_fndecl_36183 bunzip2 fndecl 0 36183 NULL
137939 +disable_so_vmw_resource_relocation_add_fndecl_36188 vmw_resource_relocation_add fndecl 0 36188 NULL
137940 +disable_so_efx_mcdi_poll_fndecl_36196 efx_mcdi_poll fndecl 0 36196 NULL
137941 +disable_so_sock_setbindtodevice_fndecl_36202 sock_setbindtodevice fndecl 0 36202 NULL
137942 +disable_so_is_valid_conn_transition_fndecl_36205 is_valid_conn_transition fndecl 0 36205 NULL
137943 +disable_so_netlbl_unlhsh_add_addr4_fndecl_36206 netlbl_unlhsh_add_addr4 fndecl 0 36206 NULL
137944 +disable_so_netdev_master_upper_dev_link_private_fndecl_36208 netdev_master_upper_dev_link_private fndecl 0 36208 NULL
137945 +disable_so_btrfs_find_all_roots_fndecl_36213 btrfs_find_all_roots fndecl 0 36213 NULL
137946 +disable_so_snd_register_oss_device_fndecl_36225 snd_register_oss_device fndecl 0 36225 NULL
137947 +disable_so_mmc_get_ext_csd_fndecl_36226 mmc_get_ext_csd fndecl 0 36226 NULL
137948 +disable_so___start_delalloc_inodes_fndecl_36227 __start_delalloc_inodes fndecl 0 36227 NULL nohasharray
137949 +disable_so_nid_node_footer_36227 nid node_footer 0 36227 &disable_so___start_delalloc_inodes_fndecl_36227
137950 +disable_so_xfs_imap_fndecl_36254 xfs_imap fndecl 0 36254 NULL
137951 +disable_so_tpci200_register_fndecl_36256 tpci200_register fndecl 0 36256 NULL
137952 +disable_so_mcp23s08_probe_one_fndecl_36262 mcp23s08_probe_one fndecl 0 36262 NULL
137953 +disable_so_rocker_group_tbl_add_fndecl_36270 rocker_group_tbl_add fndecl 0 36270 NULL
137954 +disable_so_snd_mixart_create_mixer_fndecl_36272 snd_mixart_create_mixer fndecl 0 36272 NULL
137955 +disable_so_iwl_pcie_txq_alloc_fndecl_36278 iwl_pcie_txq_alloc fndecl 0 36278 NULL
137956 +disable_so_cx24117_load_firmware_fndecl_36281 cx24117_load_firmware fndecl 0 36281 NULL nohasharray
137957 +disable_so__dump_buf_dif_order_vardecl_36281 _dump_buf_dif_order vardecl 0 36281 &disable_so_cx24117_load_firmware_fndecl_36281
137958 +disable_so_uwb_radio_change_channel_fndecl_36287 uwb_radio_change_channel fndecl 0 36287 NULL
137959 +disable_so_create_qp_common_fndecl_36289 create_qp_common fndecl 0 36289 NULL
137960 +disable_so___btrfs_lookup_bio_sums_fndecl_36290 __btrfs_lookup_bio_sums fndecl 0 36290 NULL
137961 +disable_so_get_v4l2_create32_fndecl_36301 get_v4l2_create32 fndecl 0 36301 NULL
137962 +disable_so_snd_dma_alloc_pages_fndecl_36308 snd_dma_alloc_pages fndecl 0 36308 NULL
137963 +disable_so_wl18xx_cmd_smart_config_start_fndecl_36313 wl18xx_cmd_smart_config_start fndecl 0 36313 NULL
137964 +disable_so_fsbno_xfs_alloc_arg_36318 fsbno xfs_alloc_arg 0 36318 NULL
137965 +disable_so_create_extra_out_fndecl_36320 create_extra_out fndecl 0 36320 NULL
137966 +disable_so_do_verify_xattr_datum_fndecl_36328 do_verify_xattr_datum fndecl 0 36328 NULL
137967 +disable_so_r600_check_texture_resource_fndecl_36351 r600_check_texture_resource fndecl 0 36351 NULL
137968 +disable_so_scan_switchcore_fndecl_36364 scan_switchcore fndecl 0 36364 NULL
137969 +disable_so_denali_init_fndecl_36376 denali_init fndecl 0 36376 NULL
137970 +disable_so_snd_riptide_capture_open_fndecl_36379 snd_riptide_capture_open fndecl 0 36379 NULL
137971 +disable_so_get_src_rsc_fndecl_36395 get_src_rsc fndecl 0 36395 NULL
137972 +disable_so_b43legacy_phy_init_tssi2dbm_table_fndecl_36400 b43legacy_phy_init_tssi2dbm_table fndecl 0 36400 NULL
137973 +disable_so_bpf_check_fndecl_36403 bpf_check fndecl 0 36403 NULL
137974 +disable_so_cirrus_device_init_fndecl_36408 cirrus_device_init fndecl 0 36408 NULL
137975 +disable_so_iter_file_splice_write_fndecl_36415 iter_file_splice_write fndecl 0 36415 NULL
137976 +disable_so_ks959_probe_fndecl_36416 ks959_probe fndecl 0 36416 NULL
137977 +disable_so_altera_set_ir_pre_fndecl_36420 altera_set_ir_pre fndecl 0 36420 NULL
137978 +disable_so_gru_send_message_gpa_fndecl_36429 gru_send_message_gpa fndecl 0 36429 NULL
137979 +disable_so_snd_compr_resume_fndecl_36432 snd_compr_resume fndecl 0 36432 NULL
137980 +disable_so_pci_create_resource_files_fndecl_36443 pci_create_resource_files fndecl 0 36443 NULL
137981 +disable_so_regcache_hw_init_fndecl_36444 regcache_hw_init fndecl 0 36444 NULL
137982 +disable_so_vnic_rq_alloc_bufs_fndecl_36449 vnic_rq_alloc_bufs fndecl 0 36449 NULL
137983 +disable_so_hdsp_get_peak_fndecl_36451 hdsp_get_peak fndecl 0 36451 NULL
137984 +disable_so_hSync_width_panel_info_36455 hSync_width panel_info 0 36455 NULL
137985 +disable_so_ov511_i2c_r_fndecl_36459 ov511_i2c_r fndecl 0 36459 NULL
137986 +disable_so_ocfs2_write_block_fndecl_36468 ocfs2_write_block fndecl 0 36468 NULL
137987 +disable_so_strn_len_fndecl_36473 strn_len fndecl 0 36473 NULL
137988 +disable_so_usbip_alloc_iso_desc_pdu_fndecl_36514 usbip_alloc_iso_desc_pdu fndecl 0 36514 NULL
137989 +disable_so_ubifs_check_node_fndecl_36519 ubifs_check_node fndecl 0 36519 NULL
137990 +disable_so_ili210x_i2c_probe_fndecl_36523 ili210x_i2c_probe fndecl 0 36523 NULL
137991 +disable_so_mlx4_config_mad_demux_fndecl_36525 mlx4_config_mad_demux fndecl 0 36525 NULL
137992 +disable_so_ctl_freq_cx231xx_36526 ctl_freq cx231xx 0 36526 NULL
137993 +disable_so_length_ipath_sge_36528 length ipath_sge 0 36528 NULL
137994 +disable_so_ftdi_elan_edset_output_fndecl_36530 ftdi_elan_edset_output fndecl 0 36530 NULL nohasharray
137995 +disable_so_tb_eeprom_transfer_fndecl_36530 tb_eeprom_transfer fndecl 0 36530 &disable_so_ftdi_elan_edset_output_fndecl_36530
137996 +disable_so_inode_doinit_with_dentry_fndecl_36543 inode_doinit_with_dentry fndecl 0 36543 NULL
137997 +disable_so_cm_validate_req_param_fndecl_36546 cm_validate_req_param fndecl 0 36546 NULL
137998 +disable_so_mtd_read_oob_fndecl_36553 mtd_read_oob fndecl 0 36553 NULL
137999 +disable_so_get_a_ctxt_fndecl_36556 get_a_ctxt fndecl 0 36556 NULL
138000 +disable_so_cciss_getpciinfo_fndecl_36557 cciss_getpciinfo fndecl 0 36557 NULL nohasharray
138001 +disable_so_ocfs2_verify_group_and_input_fndecl_36557 ocfs2_verify_group_and_input fndecl 0 36557 &disable_so_cciss_getpciinfo_fndecl_36557
138002 +disable_so_devm_request_threaded_irq_fndecl_36564 devm_request_threaded_irq fndecl 0 36564 NULL
138003 +disable_so_sc_sq_depth_svcxprt_rdma_36568 sc_sq_depth svcxprt_rdma 0 36568 NULL
138004 +disable_so_frag_thresh_orinoco_private_36570 frag_thresh orinoco_private 0 36570 NULL
138005 +disable_so_do_sys_poll_fndecl_36574 do_sys_poll fndecl 0 36574 NULL
138006 +disable_so_t4_load_fw_fndecl_36579 t4_load_fw fndecl 0 36579 NULL nohasharray
138007 +disable_so__ctl_getiocinfo_fndecl_36579 _ctl_getiocinfo fndecl 0 36579 &disable_so_t4_load_fw_fndecl_36579
138008 +disable_so_asus_wmi_get_devstate_bits_fndecl_36582 asus_wmi_get_devstate_bits fndecl 0 36582 NULL nohasharray
138009 +disable_so_audio_write_fndecl_36582 audio_write fndecl 0 36582 &disable_so_asus_wmi_get_devstate_bits_fndecl_36582
138010 +disable_so_status_ctrl_ctx_36584 status ctrl_ctx 0 36584 NULL
138011 +disable_so_vnic_wq_alloc_bufs_fndecl_36597 vnic_wq_alloc_bufs fndecl 0 36597 NULL
138012 +disable_so_update_block_group_fndecl_36600 update_block_group fndecl 0 36600 NULL
138013 +disable_so_jbd2__journal_restart_fndecl_36602 jbd2__journal_restart fndecl 0 36602 NULL
138014 +disable_so_barrier_all_devices_fndecl_36605 barrier_all_devices fndecl 0 36605 NULL
138015 +disable_so_drm_mm_insert_node_generic_fndecl_36608 drm_mm_insert_node_generic fndecl 0 36608 NULL
138016 +disable_so_snd_usbmidi_create_endpoints_midiman_fndecl_36614 snd_usbmidi_create_endpoints_midiman fndecl 0 36614 NULL
138017 +disable_so_ethtool_get_any_eeprom_fndecl_36627 ethtool_get_any_eeprom fndecl 0 36627 NULL
138018 +disable_so_cciss_bigpassthru_fndecl_36634 cciss_bigpassthru fndecl 0 36634 NULL
138019 +disable_so_proc_bulk_fndecl_36643 proc_bulk fndecl 0 36643 NULL
138020 +disable_so_call_usermodehelper_exec_fndecl_36658 call_usermodehelper_exec fndecl 0 36658 NULL
138021 +disable_so_qp_alloc_host_work_fndecl_36661 qp_alloc_host_work fndecl 0 36661 NULL
138022 +disable_so_qlcnic_sriov_setup_vf_fndecl_36669 qlcnic_sriov_setup_vf fndecl 0 36669 NULL
138023 +disable_so_mptctl_hp_hostinfo_fndecl_36671 mptctl_hp_hostinfo fndecl 0 36671 NULL
138024 +disable_so_bio_map_user_iov_fndecl_36677 bio_map_user_iov fndecl 0 36677 NULL
138025 +disable_so_snd_ak4114_create_fndecl_36681 snd_ak4114_create fndecl 0 36681 NULL
138026 +disable_so_wcn36xx_smd_rsp_status_check_fndecl_36705 wcn36xx_smd_rsp_status_check fndecl 0 36705 NULL
138027 +disable_so_pcmcia_parse_tuple_fndecl_36710 pcmcia_parse_tuple fndecl 0 36710 NULL
138028 +disable_so_mwifiex_cmd_tdls_oper_fndecl_36711 mwifiex_cmd_tdls_oper fndecl 0 36711 NULL
138029 +disable_so_cur_to_user_fndecl_36717 cur_to_user fndecl 0 36717 NULL
138030 +disable_so_null_major_vardecl_null_blk_c_36718 null_major vardecl_null_blk.c 0 36718 NULL nohasharray
138031 +disable_so_osst_space_over_filemarks_backward_fndecl_36718 osst_space_over_filemarks_backward fndecl 0 36718 &disable_so_null_major_vardecl_null_blk_c_36718 nohasharray
138032 +disable_so_packet_dev_mc_fndecl_36718 packet_dev_mc fndecl 0 36718 &disable_so_osst_space_over_filemarks_backward_fndecl_36718
138033 +disable_so_reader_probe_fndecl_36731 reader_probe fndecl 0 36731 NULL
138034 +disable_so_ipip6_tunnel_update_6rd_fndecl_36733 ipip6_tunnel_update_6rd fndecl 0 36733 NULL
138035 +disable_so_via_dispatch_cmdbuffer_fndecl_36738 via_dispatch_cmdbuffer fndecl 0 36738 NULL
138036 +disable_so_posix_acl_chmod_fndecl_36739 posix_acl_chmod fndecl 0 36739 NULL
138037 +disable_so_pppol2tp_session_ioctl_fndecl_36749 pppol2tp_session_ioctl fndecl 0 36749 NULL
138038 +disable_so_saved_raid_disk_md_rdev_36752 saved_raid_disk md_rdev 0 36752 NULL
138039 +disable_so_get_v4l2_plane32_fndecl_36757 get_v4l2_plane32 fndecl 0 36757 NULL
138040 +disable_so_sysrq_connect_fndecl_36760 sysrq_connect fndecl 0 36760 NULL
138041 +disable_so_mlx4_en_alloc_resources_fndecl_36767 mlx4_en_alloc_resources fndecl 0 36767 NULL
138042 +disable_so_ilo_map_device_fndecl_36777 ilo_map_device fndecl 0 36777 NULL
138043 +disable_so_sum_rsc_init_fndecl_36783 sum_rsc_init fndecl 0 36783 NULL
138044 +disable_so_do_switch_fndecl_36787 do_switch fndecl 0 36787 NULL
138045 +disable_so_mmio_base_controller_36793 mmio_base controller 0 36793 NULL
138046 +disable_so_set_pages_uc_fndecl_36811 set_pages_uc fndecl 0 36811 NULL nohasharray
138047 +disable_so_idetape_chrdev_write_fndecl_36811 idetape_chrdev_write fndecl 0 36811 &disable_so_set_pages_uc_fndecl_36811
138048 +disable_so_rx_pg_ring_size_bnx2_36835 rx_pg_ring_size bnx2 0 36835 NULL
138049 +disable_so_update_qgroup_status_item_fndecl_36841 update_qgroup_status_item fndecl 0 36841 NULL
138050 +disable_so_sta_info_insert_fndecl_36842 sta_info_insert fndecl 0 36842 NULL
138051 +disable_so_hfsplus_attr_build_key_fndecl_36846 hfsplus_attr_build_key fndecl 0 36846 NULL nohasharray
138052 +disable_so_sas_get_ex_change_count_fndecl_36846 sas_get_ex_change_count fndecl 0 36846 &disable_so_hfsplus_attr_build_key_fndecl_36846
138053 +disable_so_sl811h_urb_enqueue_fndecl_36853 sl811h_urb_enqueue fndecl 0 36853 NULL
138054 +disable_so_tsi148_dma_set_vme_src_attributes_fndecl_36857 tsi148_dma_set_vme_src_attributes fndecl 0 36857 NULL
138055 +disable_so_myri10ge_adopt_running_firmware_fndecl_36865 myri10ge_adopt_running_firmware fndecl 0 36865 NULL
138056 +disable_so_sysfs_create_link_nowarn_fndecl_36867 sysfs_create_link_nowarn fndecl 0 36867 NULL
138057 +disable_so_stex_handshake_fndecl_36868 stex_handshake fndecl 0 36868 NULL
138058 +disable_so_xfs_alloc_get_rec_fndecl_36869 xfs_alloc_get_rec fndecl 0 36869 NULL
138059 +disable_so_snd_hda_codec_new_fndecl_36870 snd_hda_codec_new fndecl 0 36870 NULL
138060 +disable_so_cciss_pci_find_memory_BAR_fndecl_36879 cciss_pci_find_memory_BAR fndecl 0 36879 NULL
138061 +disable_so_cciss_controller_hard_reset_fndecl_36880 cciss_controller_hard_reset fndecl 0 36880 NULL
138062 +disable_so_mptctl_hp_targetinfo_fndecl_36882 mptctl_hp_targetinfo fndecl 0 36882 NULL
138063 +disable_so_pch_udc_probe_fndecl_36886 pch_udc_probe fndecl 0 36886 NULL
138064 +disable_so_mega_m_to_n_fndecl_36888 mega_m_to_n fndecl 0 36888 NULL
138065 +disable_so_rdma_resolve_ip_fndecl_36896 rdma_resolve_ip fndecl 0 36896 NULL
138066 +disable_so_add_ip_rule_fndecl_36902 add_ip_rule fndecl 0 36902 NULL
138067 +disable_so_zd_iowrite32a_locked_fndecl_36909 zd_iowrite32a_locked fndecl 0 36909 NULL
138068 +disable_so_nfsacl_decode_fndecl_36931 nfsacl_decode fndecl 0 36931 NULL nohasharray
138069 +disable_so_dapm_connect_mixer_fndecl_36931 dapm_connect_mixer fndecl 0 36931 &disable_so_nfsacl_decode_fndecl_36931
138070 +disable_so_pt3_alloc_adapter_fndecl_36944 pt3_alloc_adapter fndecl 0 36944 NULL
138071 +disable_so_mxuport_set_rts_fndecl_36947 mxuport_set_rts fndecl 0 36947 NULL
138072 +disable_so_snd_asihpi_aesebu_rx_add_fndecl_36956 snd_asihpi_aesebu_rx_add fndecl 0 36956 NULL
138073 +disable_so_snd_pcm_sw_params_fndecl_36961 snd_pcm_sw_params fndecl 0 36961 NULL
138074 +disable_so_s_rename_dir_logfs_super_36976 s_rename_dir logfs_super 0 36976 NULL
138075 +disable_so_smi_i2c_init_fndecl_37000 smi_i2c_init fndecl 0 37000 NULL
138076 +disable_so_ip_mc_gsfget_fndecl_37002 ip_mc_gsfget fndecl 0 37002 NULL
138077 +disable_so_bcma_sprom_get_fndecl_37013 bcma_sprom_get fndecl 0 37013 NULL
138078 +disable_so_copy_user_acl_fndecl_37021 copy_user_acl fndecl 0 37021 NULL
138079 +disable_so_result_fc_bsg_reply_37029 result fc_bsg_reply 0 37029 NULL
138080 +disable_so_ath6kl_bmi_lz_stream_start_fndecl_37030 ath6kl_bmi_lz_stream_start fndecl 0 37030 NULL
138081 +disable_so_posix_acl_equiv_mode_fndecl_37033 posix_acl_equiv_mode fndecl 0 37033 NULL
138082 +disable_so_moxa_ioctl_fndecl_37039 moxa_ioctl fndecl 0 37039 NULL
138083 +disable_so_pm8001_pci_probe_fndecl_37045 pm8001_pci_probe fndecl 0 37045 NULL
138084 +disable_so_wait_task_stopped_fndecl_37046 wait_task_stopped fndecl 0 37046 NULL
138085 +disable_so_init_node_manager_fndecl_37054 init_node_manager fndecl 0 37054 NULL nohasharray
138086 +disable_so_parse_funce_fndecl_37054 parse_funce fndecl 0 37054 &disable_so_init_node_manager_fndecl_37054
138087 +disable_so_evergreen_cs_track_validate_cb_fndecl_37072 evergreen_cs_track_validate_cb fndecl 0 37072 NULL
138088 +disable_so_rq_xprt_hlen_svc_rqst_37082 rq_xprt_hlen svc_rqst 0 37082 NULL
138089 +disable_so_snd_compr_start_fndecl_37085 snd_compr_start fndecl 0 37085 NULL
138090 +disable_so_fib_nl_newrule_fndecl_37087 fib_nl_newrule fndecl 0 37087 NULL
138091 +disable_so_find_cifs_entry_fndecl_37107 find_cifs_entry fndecl 0 37107 NULL
138092 +disable_so_uart_port_startup_fndecl_37124 uart_port_startup fndecl 0 37124 NULL
138093 +disable_so_ocrdma_mbx_alloc_pd_range_fndecl_37125 ocrdma_mbx_alloc_pd_range fndecl 0 37125 NULL
138094 +disable_so_create_port_fndecl_37126 create_port fndecl 0 37126 NULL
138095 +disable_so_ax88178_bind_fndecl_37133 ax88178_bind fndecl 0 37133 NULL
138096 +disable_so_radeon_master_create_fndecl_37134 radeon_master_create fndecl 0 37134 NULL nohasharray
138097 +disable_so_rd_build_device_space_fndecl_37134 rd_build_device_space fndecl 0 37134 &disable_so_radeon_master_create_fndecl_37134
138098 +disable_so_ufx_set_vid_mode_fndecl_37136 ufx_set_vid_mode fndecl 0 37136 NULL
138099 +disable_so_l2cap_sock_getsockopt_fndecl_37142 l2cap_sock_getsockopt fndecl 0 37142 NULL
138100 +disable_so_ntb_bus_init_fndecl_37143 ntb_bus_init fndecl 0 37143 NULL
138101 +disable_so_qib_init_7322_variables_fndecl_37169 qib_init_7322_variables fndecl 0 37169 NULL
138102 +disable_so_do_sigaltstack_fndecl_37173 do_sigaltstack fndecl 0 37173 NULL
138103 +disable_so_sisusbcon_do_font_op_fndecl_37180 sisusbcon_do_font_op fndecl 0 37180 NULL
138104 +disable_so_f_rf_airspy_37194 f_rf airspy 0 37194 NULL
138105 +disable_so_nr_add_neigh_fndecl_37229 nr_add_neigh fndecl 0 37229 NULL
138106 +disable_so_si470x_set_chan_fndecl_37242 si470x_set_chan fndecl 0 37242 NULL
138107 +disable_so_snd_m3_mixer_fndecl_37247 snd_m3_mixer fndecl 0 37247 NULL
138108 +disable_so_ipath_set_part_key_fndecl_37249 ipath_set_part_key fndecl 0 37249 NULL
138109 +disable_so_hfsplus_find_attr_fndecl_37253 hfsplus_find_attr fndecl 0 37253 NULL
138110 +disable_so_ocfs2_journal_access_eb_fndecl_37258 ocfs2_journal_access_eb fndecl 0 37258 NULL nohasharray
138111 +disable_so_pcxhr_create_pcm_fndecl_37258 pcxhr_create_pcm fndecl 0 37258 &disable_so_ocfs2_journal_access_eb_fndecl_37258
138112 +disable_so_iwl_nvm_init_fndecl_37261 iwl_nvm_init fndecl 0 37261 NULL
138113 +disable_so_gsm_create_network_fndecl_37262 gsm_create_network fndecl 0 37262 NULL
138114 +disable_so_fuse_get_res_by_io_fndecl_37271 fuse_get_res_by_io fndecl 0 37271 NULL
138115 +disable_so_max_packet_sz_rx_musb_hw_ep_37278 max_packet_sz_rx musb_hw_ep 0 37278 NULL
138116 +disable_so_do_ncp_rpc_call_fndecl_37285 do_ncp_rpc_call fndecl 0 37285 NULL
138117 +disable_so_ccp_register_aes_xts_alg_fndecl_37292 ccp_register_aes_xts_alg fndecl 0 37292 NULL
138118 +disable_so_nilfs_segctor_collect_dirty_files_fndecl_37294 nilfs_segctor_collect_dirty_files fndecl 0 37294 NULL
138119 +disable_so_task_has_security_fndecl_37297 task_has_security fndecl 0 37297 NULL
138120 +disable_so_brcmf_usb_probe_fndecl_37305 brcmf_usb_probe fndecl 0 37305 NULL
138121 +disable_so_aer_inject_write_fndecl_37308 aer_inject_write fndecl 0 37308 NULL
138122 +disable_so_mpu_port_es1938_37310 mpu_port es1938 0 37310 NULL
138123 +disable_so_emi26_load_firmware_fndecl_37312 emi26_load_firmware fndecl 0 37312 NULL
138124 +disable_so_sst_prepare_and_post_msg_fndecl_37320 sst_prepare_and_post_msg fndecl 0 37320 NULL
138125 +disable_so_do_md_run_fndecl_37331 do_md_run fndecl 0 37331 NULL
138126 +disable_so_asd_find_flash_de_fndecl_37342 asd_find_flash_de fndecl 0 37342 NULL
138127 +disable_so_sctp_packet_transmit_fndecl_37344 sctp_packet_transmit fndecl 0 37344 NULL
138128 +disable_so_pdev_id_sm501_devdata_37360 pdev_id sm501_devdata 0 37360 NULL
138129 +disable_so_iwl_restore_default_wep_keys_fndecl_37372 iwl_restore_default_wep_keys fndecl 0 37372 NULL
138130 +disable_so_grip_connect_fndecl_37382 grip_connect fndecl 0 37382 NULL
138131 +disable_so_isdn_net_getphones_fndecl_37393 isdn_net_getphones fndecl 0 37393 NULL
138132 +disable_so_via_mem_alloc_fndecl_37419 via_mem_alloc fndecl 0 37419 NULL
138133 +disable_so_ethtool_get_module_eeprom_fndecl_37424 ethtool_get_module_eeprom fndecl 0 37424 NULL
138134 +disable_so_xfs_rtfree_extent_fndecl_37427 xfs_rtfree_extent fndecl 0 37427 NULL
138135 +disable_so_handle_send_req_fndecl_37428 handle_send_req fndecl 0 37428 NULL
138136 +disable_so_wl1251_hw_init_txq_fill_fndecl_37429 wl1251_hw_init_txq_fill fndecl 0 37429 NULL
138137 +disable_so_nv50_chan_create_fndecl_37436 nv50_chan_create fndecl 0 37436 NULL nohasharray
138138 +disable_so_mlx5_cmd_query_adapter_fndecl_37436 mlx5_cmd_query_adapter fndecl 0 37436 &disable_so_nv50_chan_create_fndecl_37436
138139 +disable_so_wl12xx_allocate_link_fndecl_37437 wl12xx_allocate_link fndecl 0 37437 NULL
138140 +disable_so_dib0700_ctrl_rd_fndecl_37445 dib0700_ctrl_rd fndecl 0 37445 NULL
138141 +disable_so_create_cq_kernel_fndecl_37447 create_cq_kernel fndecl 0 37447 NULL
138142 +disable_so_hd_phys_address_hpet_data_37448 hd_phys_address hpet_data 0 37448 NULL
138143 +disable_so_right_margin_fb_var_screeninfo_37453 right_margin fb_var_screeninfo 0 37453 NULL
138144 +disable_so_efx_ef10_mtd_probe_fndecl_37455 efx_ef10_mtd_probe fndecl 0 37455 NULL
138145 +disable_so_snd_compr_drain_fndecl_37457 snd_compr_drain fndecl 0 37457 NULL
138146 +disable_so_kvm_iommu_map_memslots_fndecl_37461 kvm_iommu_map_memslots fndecl 0 37461 NULL
138147 +disable_so_kobject_uevent_fndecl_37466 kobject_uevent fndecl 0 37466 NULL
138148 +disable_so_bi_sector_bvec_iter_37467 bi_sector bvec_iter 0 37467 NULL
138149 +disable_so_cdrom_read_tocentry_fndecl_37469 cdrom_read_tocentry fndecl 0 37469 NULL
138150 +disable_so_ath6kl_fetch_fw_api1_fndecl_37476 ath6kl_fetch_fw_api1 fndecl 0 37476 NULL
138151 +disable_so_xhci_configure_endpoint_fndecl_37477 xhci_configure_endpoint fndecl 0 37477 NULL
138152 +disable_so_ixgbe_setup_rx_resources_fndecl_37484 ixgbe_setup_rx_resources fndecl 0 37484 NULL
138153 +disable_so_snd_sbdsp_probe_fndecl_37489 snd_sbdsp_probe fndecl 0 37489 NULL
138154 +disable_so_i40e_set_ringparam_fndecl_37498 i40e_set_ringparam fndecl 0 37498 NULL
138155 +disable_so_privcmd_ioctl_mmap_batch_fndecl_37509 privcmd_ioctl_mmap_batch fndecl 0 37509 NULL
138156 +disable_so_inode_newsize_ok_fndecl_37511 inode_newsize_ok fndecl 0 37511 NULL
138157 +disable_so_find_domain_name_fndecl_37518 find_domain_name fndecl 0 37518 NULL
138158 +disable_so_maxiradio_probe_fndecl_37522 maxiradio_probe fndecl 0 37522 NULL
138159 +disable_so_rtsx_usb_get_card_status_fndecl_37527 rtsx_usb_get_card_status fndecl 0 37527 NULL
138160 +disable_so_find_good_lh_fndecl_37548 find_good_lh fndecl 0 37548 NULL
138161 +disable_so_btrfs_update_device_fndecl_37550 btrfs_update_device fndecl 0 37550 NULL
138162 +disable_so___team_option_inst_add_fndecl_37553 __team_option_inst_add fndecl 0 37553 NULL
138163 +disable_so_dln2_transfer_fndecl_37576 dln2_transfer fndecl 0 37576 NULL
138164 +disable_so_parse_vers_2_fndecl_37577 parse_vers_2 fndecl 0 37577 NULL nohasharray
138165 +disable_so_cir_wake_addr_nvt_dev_37577 cir_wake_addr nvt_dev 0 37577 &disable_so_parse_vers_2_fndecl_37577
138166 +disable_so_xfs_btree_updkey_fndecl_37592 xfs_btree_updkey fndecl 0 37592 NULL
138167 +disable_so_mlx4_master_process_vhcr_fndecl_37604 mlx4_master_process_vhcr fndecl 0 37604 NULL
138168 +disable_so_hash_ipportnet6_add_fndecl_37613 hash_ipportnet6_add fndecl 0 37613 NULL
138169 +disable_so_tun_do_read_fndecl_37614 tun_do_read fndecl 0 37614 NULL
138170 +disable_so_smsc75xx_wait_ready_fndecl_37618 smsc75xx_wait_ready fndecl 0 37618 NULL
138171 +disable_so_gen8_ppgtt_alloc_fndecl_37622 gen8_ppgtt_alloc fndecl 0 37622 NULL
138172 +disable_so_qp_broker_attach_fndecl_37627 qp_broker_attach fndecl 0 37627 NULL
138173 +disable_so_balloon_hotplug_balloon_stats_37629 balloon_hotplug balloon_stats 0 37629 NULL
138174 +disable_so_snd_card_proc_new_fndecl_37633 snd_card_proc_new fndecl 0 37633 NULL
138175 +disable_so_rmtblkcnt2_xfs_da_args_37635 rmtblkcnt2 xfs_da_args 0 37635 NULL
138176 +disable_so_copy_ctr_args_fndecl_37642 copy_ctr_args fndecl 0 37642 NULL
138177 +disable_so_ext4_inode_blocks_fndecl_37646 ext4_inode_blocks fndecl 0 37646 NULL
138178 +disable_so_route4_change_fndecl_37658 route4_change fndecl 0 37658 NULL
138179 +disable_so_s5p_mfc_dec_ctrls_setup_fndecl_37675 s5p_mfc_dec_ctrls_setup fndecl 0 37675 NULL
138180 +disable_so_snd_seq_ioctl_subscribe_port_fndecl_37679 snd_seq_ioctl_subscribe_port fndecl 0 37679 NULL
138181 +disable_so_mwl8k_cmd_use_fixed_rate_ap_fndecl_37682 mwl8k_cmd_use_fixed_rate_ap fndecl 0 37682 NULL
138182 +disable_so_nvme_trans_ext_inq_page_fndecl_37691 nvme_trans_ext_inq_page fndecl 0 37691 NULL
138183 +disable_so_wm_adsp_load_fndecl_37692 wm_adsp_load fndecl 0 37692 NULL
138184 +disable_so_usb_ftdi_elan_edset_setup_fndecl_37695 usb_ftdi_elan_edset_setup fndecl 0 37695 NULL
138185 +disable_so_handle_hca_cap_fndecl_37696 handle_hca_cap fndecl 0 37696 NULL
138186 +disable_so_ath6kl_wmi_meta_add_fndecl_37698 ath6kl_wmi_meta_add fndecl 0 37698 NULL
138187 +disable_so_sctp_send_asconf_fndecl_37700 sctp_send_asconf fndecl 0 37700 NULL
138188 +disable_so_ib_modify_qp_fndecl_37707 ib_modify_qp fndecl 0 37707 NULL
138189 +disable_so_assoc_array_insert_mid_shortcut_fndecl_37716 assoc_array_insert_mid_shortcut fndecl 0 37716 NULL
138190 +disable_so_layout_cnodes_fndecl_37718 layout_cnodes fndecl 0 37718 NULL
138191 +disable_so_run_start_commands_fndecl_37723 run_start_commands fndecl 0 37723 NULL
138192 +disable_so_len_cap_mon_bin_hdr_37739 len_cap mon_bin_hdr 0 37739 NULL
138193 +disable_so_mon_bin_get_event_fndecl_37740 mon_bin_get_event fndecl 0 37740 NULL
138194 +disable_so_qib_read_umem64_fndecl_37747 qib_read_umem64 fndecl 0 37747 NULL
138195 +disable_so_qp_host_register_user_memory_fndecl_37756 qp_host_register_user_memory fndecl 0 37756 NULL
138196 +disable_so_ttm_bo_wait_fndecl_37762 ttm_bo_wait fndecl 0 37762 NULL
138197 +disable_so_at76_load_internal_fw_fndecl_37775 at76_load_internal_fw fndecl 0 37775 NULL
138198 +disable_so_dspxfr_image_fndecl_37777 dspxfr_image fndecl 0 37777 NULL
138199 +disable_so_send_request_dev_dep_msg_in_fndecl_37783 send_request_dev_dep_msg_in fndecl 0 37783 NULL
138200 +disable_so_b43_one_core_attach_fndecl_37814 b43_one_core_attach fndecl 0 37814 NULL
138201 +disable_so_savage_dispatch_dma_prim_fndecl_37822 savage_dispatch_dma_prim fndecl 0 37822 NULL
138202 +disable_so_treeid_btrfs_ioctl_ino_lookup_args_37824 treeid btrfs_ioctl_ino_lookup_args 0 37824 NULL
138203 +disable_so_con_get_trans_old_fndecl_37825 con_get_trans_old fndecl 0 37825 NULL
138204 +disable_so_ath6kl_fetch_testmode_file_fndecl_37832 ath6kl_fetch_testmode_file fndecl 0 37832 NULL
138205 +disable_so_restore_curseg_summaries_fndecl_37839 restore_curseg_summaries fndecl 0 37839 NULL
138206 +disable_so_split_large_page_fndecl_37840 split_large_page fndecl 0 37840 NULL
138207 +disable_so_cfg80211_conn_scan_fndecl_37841 cfg80211_conn_scan fndecl 0 37841 NULL
138208 +disable_so_mptctl_eventenable_fndecl_37843 mptctl_eventenable fndecl 0 37843 NULL
138209 +disable_so_nofill_fndecl_37857 nofill fndecl 0 37857 NULL
138210 +disable_so_xfs_attr_leaf_get_fndecl_37860 xfs_attr_leaf_get fndecl 0 37860 NULL
138211 +disable_so_sst_media_open_fndecl_37861 sst_media_open fndecl 0 37861 NULL
138212 +disable_so_lx_message_send_atomic_fndecl_37862 lx_message_send_atomic fndecl 0 37862 NULL
138213 +disable_so_sd_write_long_data_fndecl_37870 sd_write_long_data fndecl 0 37870 NULL
138214 +disable_so_regulator_bulk_register_supply_alias_fndecl_37875 regulator_bulk_register_supply_alias fndecl 0 37875 NULL nohasharray
138215 +disable_so_snd_card_file_add_fndecl_37875 snd_card_file_add fndecl 0 37875 &disable_so_regulator_bulk_register_supply_alias_fndecl_37875
138216 +disable_so_mic_smpt_op_fndecl_37878 mic_smpt_op fndecl 0 37878 NULL
138217 +disable_so___vlan_vid_add_fndecl_37888 __vlan_vid_add fndecl 0 37888 NULL
138218 +disable_so_init_status_fndecl_37891 init_status fndecl 0 37891 NULL
138219 +disable_so_calc_send_wqe_fndecl_37899 calc_send_wqe fndecl 0 37899 NULL nohasharray
138220 +disable_so_lpfc_sli4_read_rev_fndecl_37899 lpfc_sli4_read_rev fndecl 0 37899 &disable_so_calc_send_wqe_fndecl_37899
138221 +disable_so_ocfs2_info_handle_unknown_fndecl_37900 ocfs2_info_handle_unknown fndecl 0 37900 NULL
138222 +disable_so_nvkm_vm_create_fndecl_37913 nvkm_vm_create fndecl 0 37913 NULL
138223 +disable_so_count_trail_chars_fndecl_37916 count_trail_chars fndecl 0 37916 NULL
138224 +disable_so_init_vqs_fndecl_37928 init_vqs fndecl 0 37928 NULL
138225 +disable_so_snd_timer_register_system_fndecl_37941 snd_timer_register_system fndecl 0 37941 NULL
138226 +disable_so_relocate_entry_cpu_fndecl_37945 relocate_entry_cpu fndecl 0 37945 NULL
138227 +disable_so_htree_inlinedir_to_tree_fndecl_37948 htree_inlinedir_to_tree fndecl 0 37948 NULL
138228 +disable_so___cpa_process_fault_fndecl_37949 __cpa_process_fault fndecl 0 37949 NULL
138229 +disable_so_fuse_read_batch_forget_fndecl_37950 fuse_read_batch_forget fndecl 0 37950 NULL
138230 +disable_so_phys_memory_base_mgsl_struct_37952 phys_memory_base mgsl_struct 0 37952 NULL
138231 +disable_so_rx_ring_count_fm10k_intfc_37957 rx_ring_count fm10k_intfc 0 37957 NULL
138232 +disable_so_r600_packet3_check_fndecl_37963 r600_packet3_check fndecl 0 37963 NULL
138233 +disable_so_cw1200_register_bh_fndecl_37969 cw1200_register_bh fndecl 0 37969 NULL
138234 +disable_so_snd_mixart_create_fndecl_37973 snd_mixart_create fndecl 0 37973 NULL
138235 +disable_so_va1j5jf8007s_prepare_1_fndecl_37988 va1j5jf8007s_prepare_1 fndecl 0 37988 NULL
138236 +disable_so_netlink_broadcast_fndecl_37990 netlink_broadcast fndecl 0 37990 NULL
138237 +disable_so_intel_overlay_recover_from_interrupt_fndecl_37996 intel_overlay_recover_from_interrupt fndecl 0 37996 NULL
138238 +disable_so_addrconf_del_ifaddr_fndecl_37998 addrconf_del_ifaddr fndecl 0 37998 NULL
138239 +disable_so_sddr09_write_lba_fndecl_38000 sddr09_write_lba fndecl 0 38000 NULL
138240 +disable_so_security_kernel_fw_from_file_fndecl_38002 security_kernel_fw_from_file fndecl 0 38002 NULL
138241 +disable_so_brcmf_fil_bsscfg_int_set_fndecl_38020 brcmf_fil_bsscfg_int_set fndecl 0 38020 NULL
138242 +disable_so_get_cur_path_fndecl_38038 get_cur_path fndecl 0 38038 NULL nohasharray
138243 +disable_so_snd_interval_refine_first_fndecl_38038 snd_interval_refine_first fndecl 0 38038 &disable_so_get_cur_path_fndecl_38038 nohasharray
138244 +disable_so__regulator_force_disable_fndecl_38038 _regulator_force_disable fndecl 0 38038 &disable_so_snd_interval_refine_first_fndecl_38038
138245 +disable_so_x25_negotiate_facilities_fndecl_38044 x25_negotiate_facilities fndecl 0 38044 NULL
138246 +disable_so_asus_input_init_fndecl_38053 asus_input_init fndecl 0 38053 NULL
138247 +disable_so_ethoc_probe_fndecl_38057 ethoc_probe fndecl 0 38057 NULL
138248 +disable_so_write_i2c_mem_fndecl_38067 write_i2c_mem fndecl 0 38067 NULL
138249 +disable_so_isdn_net_getcfg_fndecl_38084 isdn_net_getcfg fndecl 0 38084 NULL
138250 +disable_so_xfs_iformat_btree_fndecl_38096 xfs_iformat_btree fndecl 0 38096 NULL
138251 +disable_so_p54_generate_band_fndecl_38106 p54_generate_band fndecl 0 38106 NULL
138252 +disable_so_length_floppy_raw_cmd_38116 length floppy_raw_cmd 0 38116 NULL
138253 +disable_so_sel_write_access_fndecl_38123 sel_write_access fndecl 0 38123 NULL
138254 +disable_so_page_size_mic_smpt_hw_info_38124 page_size mic_smpt_hw_info 0 38124 NULL
138255 +disable_so_ocfs2_info_handle_blocksize_fndecl_38147 ocfs2_info_handle_blocksize fndecl 0 38147 NULL
138256 +disable_so_nfnl_cthelper_create_fndecl_38150 nfnl_cthelper_create fndecl 0 38150 NULL
138257 +disable_so_btrfs_get_io_failure_record_fndecl_38153 btrfs_get_io_failure_record fndecl 0 38153 NULL
138258 +disable_so_il4965_hwrate_to_mac80211_idx_fndecl_38156 il4965_hwrate_to_mac80211_idx fndecl 0 38156 NULL
138259 +disable_so_nand_scan_fndecl_38167 nand_scan fndecl 0 38167 NULL
138260 +disable_so___mxt_read_reg_fndecl_38178 __mxt_read_reg fndecl 0 38178 NULL
138261 +disable_so_prism2_ioctl_priv_hostapd_fndecl_38194 prism2_ioctl_priv_hostapd fndecl 0 38194 NULL
138262 +disable_so_nilfs_cpfile_checkpoints_in_block_fndecl_38197 nilfs_cpfile_checkpoints_in_block fndecl 0 38197 NULL
138263 +disable_so_goto_high_power_fndecl_38198 goto_high_power fndecl 0 38198 NULL
138264 +disable_so_si470x_usb_driver_probe_fndecl_38207 si470x_usb_driver_probe fndecl 0 38207 NULL
138265 +disable_so___get_cur_name_and_parent_fndecl_38208 __get_cur_name_and_parent fndecl 0 38208 NULL
138266 +disable_so_target_alloc_sgl_fndecl_38227 target_alloc_sgl fndecl 0 38227 NULL
138267 +disable_so_sh_mmcif_error_manage_fndecl_38230 sh_mmcif_error_manage fndecl 0 38230 NULL
138268 +disable_so_tpm_binary_bios_measurements_open_fndecl_38232 tpm_binary_bios_measurements_open fndecl 0 38232 NULL
138269 +disable_so_softing_reset_chip_fndecl_38234 softing_reset_chip fndecl 0 38234 NULL nohasharray
138270 +disable_so_pm8001_tag_alloc_fndecl_38234 pm8001_tag_alloc fndecl 0 38234 &disable_so_softing_reset_chip_fndecl_38234
138271 +disable_so_ext4_xattr_ibody_set_fndecl_38243 ext4_xattr_ibody_set fndecl 0 38243 NULL nohasharray
138272 +disable_so_snd_seq_port_connect_fndecl_38243 snd_seq_port_connect fndecl 0 38243 &disable_so_ext4_xattr_ibody_set_fndecl_38243
138273 +disable_so_ocfs2_read_inode_block_fndecl_38244 ocfs2_read_inode_block fndecl 0 38244 NULL
138274 +disable_so_evergreen_cs_parse_packet0_fndecl_38247 evergreen_cs_parse_packet0 fndecl 0 38247 NULL
138275 +disable_so_ext2_xattr_get_fndecl_38252 ext2_xattr_get fndecl 0 38252 NULL
138276 +disable_so_mpt2sas_base_map_resources_fndecl_38259 mpt2sas_base_map_resources fndecl 0 38259 NULL
138277 +disable_so_ccp_run_sha_cmd_fndecl_38264 ccp_run_sha_cmd fndecl 0 38264 NULL nohasharray
138278 +disable_so_nv_set_ringparam_fndecl_38264 nv_set_ringparam fndecl 0 38264 &disable_so_ccp_run_sha_cmd_fndecl_38264
138279 +disable_so_nouveau_gem_set_domain_fndecl_38273 nouveau_gem_set_domain fndecl 0 38273 NULL
138280 +disable_so_isdn_net_force_hangup_fndecl_38274 isdn_net_force_hangup fndecl 0 38274 NULL
138281 +disable_so_ipw2100_tx_allocate_fndecl_38276 ipw2100_tx_allocate fndecl 0 38276 NULL
138282 +disable_so_parse_audio_unit_fndecl_38299 parse_audio_unit fndecl 0 38299 NULL
138283 +disable_so_device_user_purge_fndecl_38303 device_user_purge fndecl 0 38303 NULL nohasharray
138284 +disable_so_img_width_s5p_mfc_ctx_38303 img_width s5p_mfc_ctx 0 38303 &disable_so_device_user_purge_fndecl_38303
138285 +disable_so_pinmux_validate_map_fndecl_38314 pinmux_validate_map fndecl 0 38314 NULL nohasharray
138286 +disable_so_fat_fill_super_fndecl_38314 fat_fill_super fndecl 0 38314 &disable_so_pinmux_validate_map_fndecl_38314 nohasharray
138287 +disable_so_f2fs_ioc_fitrim_fndecl_38314 f2fs_ioc_fitrim fndecl 0 38314 &disable_so_fat_fill_super_fndecl_38314
138288 +disable_so_wl1251_acx_bcn_dtim_options_fndecl_38321 wl1251_acx_bcn_dtim_options fndecl 0 38321 NULL
138289 +disable_so_pch_i2c_probe_fndecl_38325 pch_i2c_probe fndecl 0 38325 NULL
138290 +disable_so_ipheth_probe_fndecl_38337 ipheth_probe fndecl 0 38337 NULL
138291 +disable_so_iwl_mvm_mac_ctxt_cmd_p2p_device_fndecl_38338 iwl_mvm_mac_ctxt_cmd_p2p_device fndecl 0 38338 NULL
138292 +disable_so_io_ctl_prepare_pages_fndecl_38340 io_ctl_prepare_pages fndecl 0 38340 NULL
138293 +disable_so_get_first_ref_fndecl_38342 get_first_ref fndecl 0 38342 NULL
138294 +disable_so_smi_dvb_init_fndecl_38343 smi_dvb_init fndecl 0 38343 NULL
138295 +disable_so_kovaplus_init_specials_fndecl_38348 kovaplus_init_specials fndecl 0 38348 NULL
138296 +disable_so___btrfs_end_transaction_fndecl_38351 __btrfs_end_transaction fndecl 0 38351 NULL
138297 +disable_so_sys_recvmsg_fndecl_38354 sys_recvmsg fndecl 0 38354 NULL
138298 +disable_so_azx_attach_pcm_stream_fndecl_38356 azx_attach_pcm_stream fndecl 0 38356 NULL
138299 +disable_so_rate_snd_soc_dai_38358 rate snd_soc_dai 0 38358 NULL
138300 +disable_so_mlx4_cmd_init_fndecl_38360 mlx4_cmd_init fndecl 0 38360 NULL nohasharray
138301 +disable_so_enic_addfltr_5t_fndecl_38360 enic_addfltr_5t fndecl 0 38360 &disable_so_mlx4_cmd_init_fndecl_38360
138302 +disable_so_dvb_register_frontend_fndecl_38382 dvb_register_frontend fndecl 0 38382 NULL
138303 +disable_so_mwifiex_cmd_802_11_key_material_fndecl_38388 mwifiex_cmd_802_11_key_material fndecl 0 38388 NULL nohasharray
138304 +disable_so_gigaset_start_fndecl_38388 gigaset_start fndecl 0 38388 &disable_so_mwifiex_cmd_802_11_key_material_fndecl_38388
138305 +disable_so_hfsplus_brec_read_fndecl_38399 hfsplus_brec_read fndecl 0 38399 NULL
138306 +disable_so_loop_get_status_old_fndecl_38405 loop_get_status_old fndecl 0 38405 NULL
138307 +disable_so___detect_osd_fndecl_38410 __detect_osd fndecl 0 38410 NULL
138308 +disable_so_xdr_xcode_array2_fndecl_38417 xdr_xcode_array2 fndecl 0 38417 NULL nohasharray
138309 +disable_so_device_create_lockspace_fndecl_38417 device_create_lockspace fndecl 0 38417 &disable_so_xdr_xcode_array2_fndecl_38417
138310 +disable_so_prism2_hostapd_get_info_sta_fndecl_38426 prism2_hostapd_get_info_sta fndecl 0 38426 NULL
138311 +disable_so_lpfc_issue_reg_vfi_fndecl_38430 lpfc_issue_reg_vfi fndecl 0 38430 NULL nohasharray
138312 +disable_so_dvb_usbv2_adapter_dvb_init_fndecl_38430 dvb_usbv2_adapter_dvb_init fndecl 0 38430 &disable_so_lpfc_issue_reg_vfi_fndecl_38430
138313 +disable_so_pipe_crc_set_source_fndecl_38431 pipe_crc_set_source fndecl 0 38431 NULL
138314 +disable_so_r100_packet3_load_vbpntr_fndecl_38439 r100_packet3_load_vbpntr fndecl 0 38439 NULL
138315 +disable_so_prodigy192_ak4114_init_fndecl_38440 prodigy192_ak4114_init fndecl 0 38440 NULL
138316 +disable_so_ide_cmd_ioctl_fndecl_38443 ide_cmd_ioctl fndecl 0 38443 NULL
138317 +disable_so___imm_attach_fndecl_38446 __imm_attach fndecl 0 38446 NULL
138318 +disable_so_kvm_create_lapic_fndecl_38456 kvm_create_lapic fndecl 0 38456 NULL
138319 +disable_so_wacom_led_control_fndecl_38461 wacom_led_control fndecl 0 38461 NULL
138320 +disable_so_dln2_setup_rx_urbs_fndecl_38469 dln2_setup_rx_urbs fndecl 0 38469 NULL
138321 +disable_so_ti_write_byte_fndecl_38472 ti_write_byte fndecl 0 38472 NULL
138322 +disable_so_ath6kl_init_fetch_firmwares_fndecl_38475 ath6kl_init_fetch_firmwares fndecl 0 38475 NULL
138323 +disable_so_validate_ctrls_fndecl_38478 validate_ctrls fndecl 0 38478 NULL
138324 +disable_so_dspio_scp_fndecl_38481 dspio_scp fndecl 0 38481 NULL
138325 +disable_so_via_dispatch_pci_cmdbuffer_fndecl_38496 via_dispatch_pci_cmdbuffer fndecl 0 38496 NULL
138326 +disable_so_create_rcom_fndecl_38501 create_rcom fndecl 0 38501 NULL
138327 +disable_so_smi_port_init_fndecl_38510 smi_port_init fndecl 0 38510 NULL
138328 +disable_so_max_sg_mthca_limits_38517 max_sg mthca_limits 0 38517 NULL
138329 +disable_so_nfs_remount_fndecl_38525 nfs_remount fndecl 0 38525 NULL
138330 +disable_so_usb_cypress_load_firmware_fndecl_38527 usb_cypress_load_firmware fndecl 0 38527 NULL
138331 +disable_so_nouveau_bo_map_fndecl_38545 nouveau_bo_map fndecl 0 38545 NULL
138332 +disable_so_ulist_add_merge_fndecl_38547 ulist_add_merge fndecl 0 38547 NULL
138333 +disable_so_fb_base_phys_radeonfb_info_38551 fb_base_phys radeonfb_info 0 38551 NULL
138334 +disable_so_nvme_major_vardecl_nvme_core_c_38572 nvme_major vardecl_nvme-core.c 0 38572 NULL nohasharray
138335 +disable_so_efx_end_loopback_fndecl_38572 efx_end_loopback fndecl 0 38572 &disable_so_nvme_major_vardecl_nvme_core_c_38572
138336 +disable_so_snd_pcm_channel_info_user_fndecl_38580 snd_pcm_channel_info_user fndecl 0 38580 NULL
138337 +disable_so_xfs_btree_change_owner_fndecl_38586 xfs_btree_change_owner fndecl 0 38586 NULL
138338 +disable_so_sub_alloc_fndecl_38591 sub_alloc fndecl 0 38591 NULL
138339 +disable_so_irq_xencons_info_38597 irq xencons_info 0 38597 NULL
138340 +disable_so_SendEventNotification_fndecl_38611 SendEventNotification fndecl 0 38611 NULL
138341 +disable_so_ppa_init_fndecl_38621 ppa_init fndecl 0 38621 NULL
138342 +disable_so_fintek_probe_fndecl_38623 fintek_probe fndecl 0 38623 NULL
138343 +disable_so_ipmr_mfc_delete_fndecl_38624 ipmr_mfc_delete fndecl 0 38624 NULL
138344 +disable_so_s5p_mfc_load_firmware_fndecl_38627 s5p_mfc_load_firmware fndecl 0 38627 NULL
138345 +disable_so_ioc_event_fndecl_38637 ioc_event fndecl 0 38637 NULL
138346 +disable_so_file_dirty_fndecl_38641 file_dirty fndecl 0 38641 NULL nohasharray
138347 +disable_so_trusted_update_fndecl_38641 trusted_update fndecl 0 38641 &disable_so_file_dirty_fndecl_38641
138348 +disable_so_xfs_ioc_fssetxattr_fndecl_38645 xfs_ioc_fssetxattr fndecl 0 38645 NULL
138349 +disable_so_find_lkb_fndecl_38648 find_lkb fndecl 0 38648 NULL nohasharray
138350 +disable_so_prepare_ring_fndecl_38648 prepare_ring fndecl 0 38648 &disable_so_find_lkb_fndecl_38648
138351 +disable_so_str_read_fndecl_38656 str_read fndecl 0 38656 NULL
138352 +disable_so_type_set_read_fndecl_38657 type_set_read fndecl 0 38657 NULL
138353 +disable_so_hid_parse_report_fndecl_38666 hid_parse_report fndecl 0 38666 NULL
138354 +disable_so_irq_alloc_hwirqs_fndecl_38673 irq_alloc_hwirqs fndecl 0 38673 NULL
138355 +disable_so_ath6kl_get_fw_fndecl_38674 ath6kl_get_fw fndecl 0 38674 NULL
138356 +disable_so_iio_buffer_add_channel_sysfs_fndecl_38693 iio_buffer_add_channel_sysfs fndecl 0 38693 NULL
138357 +disable_so_prism2_ioctl_set_rid_fndecl_38707 prism2_ioctl_set_rid fndecl 0 38707 NULL
138358 +disable_so_nvme_trans_status_code_fndecl_38708 nvme_trans_status_code fndecl 0 38708 NULL
138359 +disable_so_res_tracker_insert_fndecl_38718 res_tracker_insert fndecl 0 38718 NULL
138360 +disable_so_hfsplus_listxattr_fndecl_38727 hfsplus_listxattr fndecl 0 38727 NULL
138361 +disable_so_ipmi_smi_add_proc_entry_fndecl_38728 ipmi_smi_add_proc_entry fndecl 0 38728 NULL
138362 +disable_so_acpi_table_parse_entries_fndecl_38730 acpi_table_parse_entries fndecl 0 38730 NULL
138363 +disable_so_dvd_read_manufact_fndecl_38735 dvd_read_manufact fndecl 0 38735 NULL
138364 +disable_so_o_height_g2d_frame_38760 o_height g2d_frame 0 38760 NULL
138365 +disable_so_usb_8dev_probe_fndecl_38762 usb_8dev_probe fndecl 0 38762 NULL
138366 +disable_so_rbd_dev_v1_header_info_fndecl_38766 rbd_dev_v1_header_info fndecl 0 38766 NULL
138367 +disable_so_nl80211_dump_wiphy_fndecl_38767 nl80211_dump_wiphy fndecl 0 38767 NULL
138368 +disable_so_cciss_init_reset_devices_fndecl_38772 cciss_init_reset_devices fndecl 0 38772 NULL
138369 +disable_so_parse_options_fndecl_38779 parse_options fndecl 0 38779 NULL
138370 +disable_so_wl1251_acx_sg_enable_fndecl_38803 wl1251_acx_sg_enable fndecl 0 38803 NULL
138371 +disable_so_size_esb2rom_window_38804 size esb2rom_window 0 38804 NULL
138372 +disable_so_dbAdjCtl_fndecl_38819 dbAdjCtl fndecl 0 38819 NULL
138373 +disable_so_commit_fs_roots_fndecl_38825 commit_fs_roots fndecl 0 38825 NULL
138374 +disable_so_solo_p2m_dma_fndecl_38828 solo_p2m_dma fndecl 0 38828 NULL
138375 +disable_so_algorithm_r5conf_38831 algorithm r5conf 0 38831 NULL
138376 +disable_so_memblock_alloc_fndecl_38847 memblock_alloc fndecl 0 38847 NULL
138377 +disable_so_count_ixgbevf_ring_38867 count ixgbevf_ring 0 38867 NULL
138378 +disable_so_wmi_set_ie_fndecl_38876 wmi_set_ie fndecl 0 38876 NULL
138379 +disable_so_mmc_spi_skip_fndecl_38879 mmc_spi_skip fndecl 0 38879 NULL nohasharray
138380 +disable_so_error_dvb_ringbuffer_38879 error dvb_ringbuffer 0 38879 &disable_so_mmc_spi_skip_fndecl_38879
138381 +disable_so_i2c_hid_parse_fndecl_38882 i2c_hid_parse fndecl 0 38882 NULL
138382 +disable_so__ctl_diag_register_fndecl_38888 _ctl_diag_register fndecl 0 38888 NULL
138383 +disable_so_beb_rsvd_level_ubi_device_38898 beb_rsvd_level ubi_device 0 38898 NULL
138384 +disable_so_asus_laptop_get_info_fndecl_38900 asus_laptop_get_info fndecl 0 38900 NULL
138385 +disable_so_ecryptfs_parse_tag_70_packet_fndecl_38906 ecryptfs_parse_tag_70_packet fndecl 0 38906 NULL
138386 +disable_so_usb_amradio_init_fndecl_38916 usb_amradio_init fndecl 0 38916 NULL
138387 +disable_so_device_create_sys_dev_entry_fndecl_38921 device_create_sys_dev_entry fndecl 0 38921 NULL
138388 +disable_so_mipi_dsi_dcs_write_buffer_fndecl_38924 mipi_dsi_dcs_write_buffer fndecl 0 38924 NULL
138389 +disable_so_usb_sg_init_fndecl_38925 usb_sg_init fndecl 0 38925 NULL
138390 +disable_so_mon_bin_fetch_fndecl_38929 mon_bin_fetch fndecl 0 38929 NULL
138391 +disable_so_ccp_register_aes_cmac_algs_fndecl_38933 ccp_register_aes_cmac_algs fndecl 0 38933 NULL
138392 +disable_so_xfs_alloc_update_counters_fndecl_38938 xfs_alloc_update_counters fndecl 0 38938 NULL
138393 +disable_so_mlx4_init_icm_fndecl_38940 mlx4_init_icm fndecl 0 38940 NULL
138394 +disable_so_pcm_open_fndecl_38941 pcm_open fndecl 0 38941 NULL
138395 +disable_so_cmdreset_fndecl_38947 cmdreset fndecl 0 38947 NULL
138396 +disable_so_mmc_ioctl_dvd_read_struct_fndecl_38948 mmc_ioctl_dvd_read_struct fndecl 0 38948 NULL
138397 +disable_so_xfs_iformat_extents_fndecl_38949 xfs_iformat_extents fndecl 0 38949 NULL
138398 +disable_so_gfs2_block_map_fndecl_38959 gfs2_block_map fndecl 0 38959 NULL
138399 +disable_so_snd_rawmidi_input_params_fndecl_38967 snd_rawmidi_input_params fndecl 0 38967 NULL
138400 +disable_so_cdrom_read_cdda_fndecl_38973 cdrom_read_cdda fndecl 0 38973 NULL
138401 +disable_so_remove_conflicting_framebuffers_fndecl_38982 remove_conflicting_framebuffers fndecl 0 38982 NULL
138402 +disable_so_lpfc_rq_create_fndecl_38991 lpfc_rq_create fndecl 0 38991 NULL nohasharray
138403 +disable_so_hsc_read_fndecl_38991 hsc_read fndecl 0 38991 &disable_so_lpfc_rq_create_fndecl_38991
138404 +disable_so_rxrpc_preparse_xdr_rxkad_fndecl_38996 rxrpc_preparse_xdr_rxkad fndecl 0 38996 NULL
138405 +disable_so_sh_mmcif_data_trans_fndecl_39002 sh_mmcif_data_trans fndecl 0 39002 NULL
138406 +disable_so_load_dsp_fndecl_39014 load_dsp fndecl 0 39014 NULL
138407 +disable_so_vmw_kms_init_legacy_display_system_fndecl_39016 vmw_kms_init_legacy_display_system fndecl 0 39016 NULL
138408 +disable_so_ath6kl_set_ap_probe_resp_ies_fndecl_39032 ath6kl_set_ap_probe_resp_ies fndecl 0 39032 NULL
138409 +disable_so_wlcore_set_partition_fndecl_39033 wlcore_set_partition fndecl 0 39033 NULL nohasharray
138410 +disable_so_velocity_init_rings_fndecl_39033 velocity_init_rings fndecl 0 39033 &disable_so_wlcore_set_partition_fndecl_39033
138411 +disable_so_bh_get_fndecl_39036 bh_get fndecl 0 39036 NULL
138412 +disable_so_security_read_policy_fndecl_39053 security_read_policy fndecl 0 39053 NULL
138413 +disable_so_self_check_peb_vid_hdr_fndecl_39056 self_check_peb_vid_hdr fndecl 0 39056 NULL
138414 +disable_so_saa7146_vv_init_fndecl_39066 saa7146_vv_init fndecl 0 39066 NULL
138415 +disable_so_vmbus_teardown_gpadl_fndecl_39073 vmbus_teardown_gpadl fndecl 0 39073 NULL
138416 +disable_so_add_uevent_var_fndecl_39087 add_uevent_var fndecl 0 39087 NULL
138417 +disable_so_ccp_copy_to_ksb_fndecl_39090 ccp_copy_to_ksb fndecl 0 39090 NULL
138418 +disable_so_vfat_create_shortname_fndecl_39101 vfat_create_shortname fndecl 0 39101 NULL
138419 +disable_so_xillybus_write_fndecl_39102 xillybus_write fndecl 0 39102 NULL
138420 +disable_so_dmar_set_interrupt_fndecl_39106 dmar_set_interrupt fndecl 0 39106 NULL
138421 +disable_so_prism2_ioctl_scan_req_fndecl_39108 prism2_ioctl_scan_req fndecl 0 39108 NULL
138422 +disable_so_gfs2_unstuff_dinode_fndecl_39111 gfs2_unstuff_dinode fndecl 0 39111 NULL
138423 +disable_so_put_v4l2_create32_fndecl_39123 put_v4l2_create32 fndecl 0 39123 NULL
138424 +disable_so_regcache_rbtree_write_fndecl_39126 regcache_rbtree_write fndecl 0 39126 NULL
138425 +disable_so_cciss_getheartbeat_fndecl_39146 cciss_getheartbeat fndecl 0 39146 NULL
138426 +disable_so_size_intel_initial_plane_config_39155 size intel_initial_plane_config 0 39155 NULL
138427 +disable_so_result_xfs_btree_split_args_39161 result xfs_btree_split_args 0 39161 NULL
138428 +disable_so_ast_gem_create_fndecl_39167 ast_gem_create fndecl 0 39167 NULL
138429 +disable_so_l2cap_sock_setsockopt_fndecl_39180 l2cap_sock_setsockopt fndecl 0 39180 NULL
138430 +disable_so_ext3_do_update_inode_fndecl_39185 ext3_do_update_inode fndecl 0 39185 NULL
138431 +disable_so_mon_bin_compat_ioctl_fndecl_39209 mon_bin_compat_ioctl fndecl 0 39209 NULL
138432 +disable_so_focaltech_switch_protocol_fndecl_39213 focaltech_switch_protocol fndecl 0 39213 NULL
138433 +disable_so_seq_buf_to_user_fndecl_39222 seq_buf_to_user fndecl 0 39222 NULL
138434 +disable_so_afs_extract_data_fndecl_39238 afs_extract_data fndecl 0 39238 NULL
138435 +disable_so_sel_start_vardecl_selection_c_39245 sel_start vardecl_selection.c 0 39245 NULL
138436 +disable_so_btrfs_issue_discard_fndecl_39257 btrfs_issue_discard fndecl 0 39257 NULL
138437 +disable_so_bind_virq_for_mce_fndecl_39266 bind_virq_for_mce fndecl 0 39266 NULL
138438 +disable_so_ocfs2_map_slot_buffers_fndecl_39268 ocfs2_map_slot_buffers fndecl 0 39268 NULL
138439 +disable_so_vidioc_streamon_fndecl_39272 vidioc_streamon fndecl 0 39272 NULL
138440 +disable_so_soc_codec_reg_show_fndecl_39277 soc_codec_reg_show fndecl 0 39277 NULL
138441 +disable_so_cfg80211_conn_do_work_fndecl_39278 cfg80211_conn_do_work fndecl 0 39278 NULL
138442 +disable_so_watchdog_get_timeleft_fndecl_39280 watchdog_get_timeleft fndecl 0 39280 NULL
138443 +disable_so_find_parent_nodes_fndecl_39282 find_parent_nodes fndecl 0 39282 NULL
138444 +disable_so___i915_add_request_fndecl_39283 __i915_add_request fndecl 0 39283 NULL
138445 +disable_so_pcxhr_load_dsp_binary_fndecl_39293 pcxhr_load_dsp_binary fndecl 0 39293 NULL
138446 +disable_so_nvif_client_init_fndecl_39302 nvif_client_init fndecl 0 39302 NULL
138447 +disable_so_signal_rxdone_entry_desc_39307 signal rxdone_entry_desc 0 39307 NULL
138448 +disable_so_nvme_trans_synchronize_cache_fndecl_39313 nvme_trans_synchronize_cache fndecl 0 39313 NULL
138449 +disable_so_e820_end_of_ram_pfn_fndecl_39315 e820_end_of_ram_pfn fndecl 0 39315 NULL
138450 +disable_so_pwmchip_add_fndecl_39316 pwmchip_add fndecl 0 39316 NULL
138451 +disable_so_pch_gbe_alloc_rx_buffers_pool_fndecl_39317 pch_gbe_alloc_rx_buffers_pool fndecl 0 39317 NULL
138452 +disable_so_cond_init_bool_indexes_fndecl_39321 cond_init_bool_indexes fndecl 0 39321 NULL nohasharray
138453 +disable_so_e1000_set_ringparam_fndecl_39321 e1000_set_ringparam fndecl 0 39321 &disable_so_cond_init_bool_indexes_fndecl_39321
138454 +disable_so_isdn_ppp_read_fndecl_39335 isdn_ppp_read fndecl 0 39335 NULL
138455 +disable_so_nilfs_sufile_segment_usages_in_block_fndecl_39336 nilfs_sufile_segment_usages_in_block fndecl 0 39336 NULL
138456 +disable_so_address_acpi_resource_fixed_io_39338 address acpi_resource_fixed_io 0 39338 NULL
138457 +disable_so_nvkm_mm_head_fndecl_39339 nvkm_mm_head fndecl 0 39339 NULL
138458 +disable_so_ret_vardecl_xpc_uv_c_39340 ret vardecl_xpc_uv.c 0 39340 NULL
138459 +disable_so_r300_cs_parse_fndecl_39348 r300_cs_parse fndecl 0 39348 NULL nohasharray
138460 +disable_so_snd_nm256_peek_for_sig_fndecl_39348 snd_nm256_peek_for_sig fndecl 0 39348 &disable_so_r300_cs_parse_fndecl_39348
138461 +disable_so_sr_cd_check_fndecl_39352 sr_cd_check fndecl 0 39352 NULL
138462 +disable_so_qxl_ttm_debugfs_init_fndecl_39357 qxl_ttm_debugfs_init fndecl 0 39357 NULL
138463 +disable_so_mspro_block_init_disk_fndecl_39362 mspro_block_init_disk fndecl 0 39362 NULL
138464 +disable_so_choose_config_fndecl_39365 choose_config fndecl 0 39365 NULL
138465 +disable_so_pcan_probe_fndecl_39394 pcan_probe fndecl 0 39394 NULL
138466 +disable_so_bl_parse_deviceid_fndecl_39396 bl_parse_deviceid fndecl 0 39396 NULL
138467 +disable_so_validate_acl_mac_addrs_fndecl_39406 validate_acl_mac_addrs fndecl 0 39406 NULL
138468 +disable_so_snd_es1968_alloc_apu_pair_fndecl_39410 snd_es1968_alloc_apu_pair fndecl 0 39410 NULL
138469 +disable_so_board_sample_rate_lx6464es_39420 board_sample_rate lx6464es 0 39420 NULL
138470 +disable_so_cw1200_core_probe_fndecl_39429 cw1200_core_probe fndecl 0 39429 NULL
138471 +disable_so_pm_qos_sysfs_add_resume_latency_fndecl_39430 pm_qos_sysfs_add_resume_latency fndecl 0 39430 NULL
138472 +disable_so_btrfs_del_csums_fndecl_39434 btrfs_del_csums fndecl 0 39434 NULL
138473 +disable_so_btrfs_real_readdir_fndecl_39435 btrfs_real_readdir fndecl 0 39435 NULL
138474 +disable_so_iov_len_iovec_39437 iov_len iovec 0 39437 NULL
138475 +disable_so_last_byte_to_unpin_btrfs_block_group_cache_39442 last_byte_to_unpin btrfs_block_group_cache 0 39442 NULL
138476 +disable_so_dtv_property_process_set_fndecl_39457 dtv_property_process_set fndecl 0 39457 NULL
138477 +disable_so_recovery_cp_mddev_39459 recovery_cp mddev 0 39459 NULL
138478 +disable_so_l1oip_init_fndecl_39492 l1oip_init fndecl 0 39492 NULL
138479 +disable_so_ax25_rt_add_fndecl_39505 ax25_rt_add fndecl 0 39505 NULL
138480 +disable_so_brcmf_proto_attach_fndecl_39510 brcmf_proto_attach fndecl 0 39510 NULL
138481 +disable_so_user_cluster_connect_fndecl_39523 user_cluster_connect fndecl 0 39523 NULL
138482 +disable_so_uwb_est_create_fndecl_39524 uwb_est_create fndecl 0 39524 NULL
138483 +disable_so_rsc_mgr_init_fndecl_39528 rsc_mgr_init fndecl 0 39528 NULL nohasharray
138484 +disable_so_put_v4l2_buffer32_fndecl_39528 put_v4l2_buffer32 fndecl 0 39528 &disable_so_rsc_mgr_init_fndecl_39528
138485 +disable_so_req_run_fndecl_39537 req_run fndecl 0 39537 NULL
138486 +disable_so_compat_copy_entry_to_user_fndecl_39540 compat_copy_entry_to_user fndecl 0 39540 NULL
138487 +disable_so_mlx5_core_query_srq_fndecl_39545 mlx5_core_query_srq fndecl 0 39545 NULL
138488 +disable_so_kaweth_internal_control_msg_fndecl_39552 kaweth_internal_control_msg fndecl 0 39552 NULL
138489 +disable_so_brcmf_sdiod_regrw_helper_fndecl_39558 brcmf_sdiod_regrw_helper fndecl 0 39558 NULL
138490 +disable_so_hci_req_run_skb_fndecl_39561 hci_req_run_skb fndecl 0 39561 NULL
138491 +disable_so___ocfs2_find_path_fndecl_39563 __ocfs2_find_path fndecl 0 39563 NULL
138492 +disable_so_ims_pcu_init_application_mode_fndecl_39566 ims_pcu_init_application_mode fndecl 0 39566 NULL
138493 +disable_so_snd_pcm_hw_rule_add_fndecl_39569 snd_pcm_hw_rule_add fndecl 0 39569 NULL
138494 +disable_so_zatm_open_fndecl_39574 zatm_open fndecl 0 39574 NULL
138495 +disable_so_i915_kick_out_firmware_fb_fndecl_39594 i915_kick_out_firmware_fb fndecl 0 39594 NULL nohasharray
138496 +disable_so_count_snd_ctl_elem_info_39594 count snd_ctl_elem_info 0 39594 &disable_so_i915_kick_out_firmware_fb_fndecl_39594
138497 +disable_so_dm_consult_userspace_fndecl_39601 dm_consult_userspace fndecl 0 39601 NULL
138498 +disable_so_e1000e_hwtstamp_set_fndecl_39607 e1000e_hwtstamp_set fndecl 0 39607 NULL
138499 +disable_so_garmin_port_probe_fndecl_39610 garmin_port_probe fndecl 0 39610 NULL
138500 +disable_so_iwl_set_Xtal_calib_fndecl_39611 iwl_set_Xtal_calib fndecl 0 39611 NULL
138501 +disable_so_qlcnic_setup_idc_param_fndecl_39616 qlcnic_setup_idc_param fndecl 0 39616 NULL nohasharray
138502 +disable_so_snd_usbmidi_create_endpoints_fndecl_39616 snd_usbmidi_create_endpoints fndecl 0 39616 &disable_so_qlcnic_setup_idc_param_fndecl_39616
138503 +disable_so_ssb_pci_switch_coreidx_fndecl_39636 ssb_pci_switch_coreidx fndecl 0 39636 NULL
138504 +disable_so__sess_auth_rawntlmssp_assemble_req_fndecl_39638 _sess_auth_rawntlmssp_assemble_req fndecl 0 39638 NULL
138505 +disable_so_lmc_ioctl_fndecl_39642 lmc_ioctl fndecl 0 39642 NULL
138506 +disable_so_tsi148_dma_set_vme_dest_attributes_fndecl_39653 tsi148_dma_set_vme_dest_attributes fndecl 0 39653 NULL
138507 +disable_so_nouveau_display_create_fndecl_39657 nouveau_display_create fndecl 0 39657 NULL
138508 +disable_so_viafb_get_fb_size_from_pci_fndecl_39663 viafb_get_fb_size_from_pci fndecl 0 39663 NULL
138509 +disable_so_snd_rawmidi_transmit_peek_fndecl_39668 snd_rawmidi_transmit_peek fndecl 0 39668 NULL nohasharray
138510 +disable_so_intel_overlay_switch_off_fndecl_39668 intel_overlay_switch_off fndecl 0 39668 &disable_so_snd_rawmidi_transmit_peek_fndecl_39668
138511 +disable_so_dev_mem_read_fndecl_39681 dev_mem_read fndecl 0 39681 NULL
138512 +disable_so_acpi_battery_get_info_fndecl_39690 acpi_battery_get_info fndecl 0 39690 NULL
138513 +disable_so_sedlbauer_probe_fndecl_39692 sedlbauer_probe fndecl 0 39692 NULL
138514 +disable_so_i2c_smbus_read_byte_data_fndecl_39698 i2c_smbus_read_byte_data fndecl 0 39698 NULL
138515 +disable_so__ep_queue_fndecl_39703 _ep_queue fndecl 0 39703 NULL
138516 +disable_so_mrp_init_applicant_fndecl_39717 mrp_init_applicant fndecl 0 39717 NULL
138517 +disable_so___ext3_get_inode_loc_fndecl_39723 __ext3_get_inode_loc fndecl 0 39723 NULL
138518 +disable_so_qlcnic_83xx_idc_init_fndecl_39728 qlcnic_83xx_idc_init fndecl 0 39728 NULL
138519 +disable_so_sel_netif_insert_fndecl_39736 sel_netif_insert fndecl 0 39736 NULL
138520 +disable_so_tm6000_read_write_usb_fndecl_39749 tm6000_read_write_usb fndecl 0 39749 NULL
138521 +disable_so_ocfs2_xattr_block_get_fndecl_39750 ocfs2_xattr_block_get fndecl 0 39750 NULL
138522 +disable_so_delta_disks_mddev_39759 delta_disks mddev 0 39759 NULL
138523 +disable_so_cciss_ioctl32_big_passthru_fndecl_39767 cciss_ioctl32_big_passthru fndecl 0 39767 NULL
138524 +disable_so_policydb_read_fndecl_39769 policydb_read fndecl 0 39769 NULL
138525 +disable_so_acpi_processor_register_performance_fndecl_39773 acpi_processor_register_performance fndecl 0 39773 NULL
138526 +disable_so_scsi_cmd_blk_ioctl_fndecl_39775 scsi_cmd_blk_ioctl fndecl 0 39775 NULL
138527 +disable_so__regulator_call_set_voltage_sel_fndecl_39777 _regulator_call_set_voltage_sel fndecl 0 39777 NULL
138528 +disable_so_xenkbd_connect_backend_fndecl_39778 xenkbd_connect_backend fndecl 0 39778 NULL
138529 +disable_so_i810_dma_initialize_fndecl_39779 i810_dma_initialize fndecl 0 39779 NULL
138530 +disable_so_jmb38x_ms_probe_fndecl_39794 jmb38x_ms_probe fndecl 0 39794 NULL
138531 +disable_so_ecryptfs_write_inode_size_to_metadata_fndecl_39810 ecryptfs_write_inode_size_to_metadata fndecl 0 39810 NULL
138532 +disable_so_btrfs_search_slot_for_read_fndecl_39816 btrfs_search_slot_for_read fndecl 0 39816 NULL
138533 +disable_so_register_pernet_subsys_fndecl_39817 register_pernet_subsys fndecl 0 39817 NULL
138534 +disable_so_change_page_attr_set_clr_fndecl_39828 change_page_attr_set_clr fndecl 0 39828 NULL
138535 +disable_so_init_rx_ring_fndecl_39832 init_rx_ring fndecl 0 39832 NULL nohasharray
138536 +disable_so_wl1251_cmd_data_path_tx_fndecl_39832 wl1251_cmd_data_path_tx fndecl 0 39832 &disable_so_init_rx_ring_fndecl_39832 nohasharray
138537 +disable_so_zhenhua_connect_fndecl_39832 zhenhua_connect fndecl 0 39832 &disable_so_wl1251_cmd_data_path_tx_fndecl_39832
138538 +disable_so_ttm_pool_populate_fndecl_39842 ttm_pool_populate fndecl 0 39842 NULL
138539 +disable_so_radeon_cs_packet_next_reloc_fndecl_39847 radeon_cs_packet_next_reloc fndecl 0 39847 NULL
138540 +disable_so_brcmf_vif_set_mgmt_ie_fndecl_39850 brcmf_vif_set_mgmt_ie fndecl 0 39850 NULL
138541 +disable_so_unmap_and_move_fndecl_39855 unmap_and_move fndecl 0 39855 NULL
138542 +disable_so_carl9170_debugfs_write_fndecl_39866 carl9170_debugfs_write fndecl 0 39866 NULL
138543 +disable_so_self_check_write_fndecl_39867 self_check_write fndecl 0 39867 NULL
138544 +disable_so_xfs_alloc_get_freelist_fndecl_39881 xfs_alloc_get_freelist fndecl 0 39881 NULL
138545 +disable_so_resync_offset_mdp_superblock_1_39883 resync_offset mdp_superblock_1 0 39883 NULL
138546 +disable_so_nvkm_mm_init_fndecl_39887 nvkm_mm_init fndecl 0 39887 NULL nohasharray
138547 +disable_so_ttm_mem_init_dma32_zone_fndecl_39887 ttm_mem_init_dma32_zone fndecl 0 39887 &disable_so_nvkm_mm_init_fndecl_39887
138548 +disable_so_mmc_app_sd_status_fndecl_39893 mmc_app_sd_status fndecl 0 39893 NULL
138549 +disable_so_pch_spi_probe_fndecl_39894 pch_spi_probe fndecl 0 39894 NULL
138550 +disable_so_btrfs_insert_inode_ref_fndecl_39895 btrfs_insert_inode_ref fndecl 0 39895 NULL
138551 +disable_so_mlx5_cmd_status_to_err_fndecl_39896 mlx5_cmd_status_to_err fndecl 0 39896 NULL
138552 +disable_so_v4l2_ctrl_add_handler_fndecl_39899 v4l2_ctrl_add_handler fndecl 0 39899 NULL
138553 +disable_so_hsr_check_dev_ok_fndecl_39904 hsr_check_dev_ok fndecl 0 39904 NULL
138554 +disable_so_dvb_frontend_get_event_fndecl_39909 dvb_frontend_get_event fndecl 0 39909 NULL
138555 +disable_so_spi_map_buf_fndecl_39919 spi_map_buf fndecl 0 39919 NULL
138556 +disable_so_isdn_ppp_ioctl_fndecl_39920 isdn_ppp_ioctl fndecl 0 39920 NULL
138557 +disable_so_em28xx_dvb_init_fndecl_39929 em28xx_dvb_init fndecl 0 39929 NULL
138558 +disable_so_au0828_rc_register_fndecl_39935 au0828_rc_register fndecl 0 39935 NULL
138559 +disable_so_gfs2_quota_check_fndecl_39937 gfs2_quota_check fndecl 0 39937 NULL
138560 +disable_so_reply_size_uwb_rc_cmd_done_params_39948 reply_size uwb_rc_cmd_done_params 0 39948 NULL nohasharray
138561 +disable_so_iwl_mvm_wowlan_config_fndecl_39948 iwl_mvm_wowlan_config fndecl 0 39948 &disable_so_reply_size_uwb_rc_cmd_done_params_39948
138562 +disable_so___mce_read_apei_fndecl_39956 __mce_read_apei fndecl 0 39956 NULL
138563 +disable_so_acpi_check_resource_conflict_fndecl_39967 acpi_check_resource_conflict fndecl 0 39967 NULL
138564 +disable_so_crtc_clock_drm_display_mode_39969 crtc_clock drm_display_mode 0 39969 NULL
138565 +disable_so_st_chk_result_fndecl_39971 st_chk_result fndecl 0 39971 NULL
138566 +disable_so_be_mcc_compl_process_fndecl_39973 be_mcc_compl_process fndecl 0 39973 NULL
138567 +disable_so___hfsplus_getxattr_fndecl_39975 __hfsplus_getxattr fndecl 0 39975 NULL
138568 +disable_so_agp_3_5_isochronous_node_enable_fndecl_39978 agp_3_5_isochronous_node_enable fndecl 0 39978 NULL
138569 +disable_so_synusb_open_fndecl_39983 synusb_open fndecl 0 39983 NULL
138570 +disable_so_sctp_auth_asoc_init_active_key_fndecl_39985 sctp_auth_asoc_init_active_key fndecl 0 39985 NULL
138571 +disable_so___crypto_alloc_tfm_fndecl_39987 __crypto_alloc_tfm fndecl 0 39987 NULL
138572 +disable_so_i915_gem_object_set_to_gtt_domain_fndecl_39993 i915_gem_object_set_to_gtt_domain fndecl 0 39993 NULL nohasharray
138573 +disable_so_ubi_ensure_anchor_pebs_fndecl_39993 ubi_ensure_anchor_pebs fndecl 0 39993 &disable_so_i915_gem_object_set_to_gtt_domain_fndecl_39993
138574 +disable_so_map_id_range_down_fndecl_40006 map_id_range_down fndecl 0 40006 NULL
138575 +disable_so_mpt_findImVolumes_fndecl_40008 mpt_findImVolumes fndecl 0 40008 NULL
138576 +disable_so_snd_hdac_bus_add_device_fndecl_40016 snd_hdac_bus_add_device fndecl 0 40016 NULL
138577 +disable_so_xfs_iformat_local_fndecl_40019 xfs_iformat_local fndecl 0 40019 NULL
138578 +disable_so_verify_alg_len_net_conf_40020 verify_alg_len net_conf 0 40020 NULL
138579 +disable_so_vmw_mob_calculate_pt_pages_fndecl_40022 vmw_mob_calculate_pt_pages fndecl 0 40022 NULL
138580 +disable_so_b43legacy_validate_chipaccess_fndecl_40024 b43legacy_validate_chipaccess fndecl 0 40024 NULL
138581 +disable_so_dn_dev_ioctl_fndecl_40034 dn_dev_ioctl fndecl 0 40034 NULL
138582 +disable_so_jfs_get_acl_fndecl_40045 jfs_get_acl fndecl 0 40045 NULL
138583 +disable_so_analog_connect_fndecl_40047 analog_connect fndecl 0 40047 NULL
138584 +disable_so_cls_cgroup_change_fndecl_40053 cls_cgroup_change fndecl 0 40053 NULL
138585 +disable_so_smp_execute_task_fndecl_40062 smp_execute_task fndecl 0 40062 NULL
138586 +disable_so_rx_queue_add_kobject_fndecl_40068 rx_queue_add_kobject fndecl 0 40068 NULL
138587 +disable_so_do_rt_tgsigqueueinfo_fndecl_40071 do_rt_tgsigqueueinfo fndecl 0 40071 NULL
138588 +disable_so_proc_dev_atm_read_fndecl_40072 proc_dev_atm_read fndecl 0 40072 NULL
138589 +disable_so_gfs2_quota_lock_fndecl_40096 gfs2_quota_lock fndecl 0 40096 NULL
138590 +disable_so_ocfs2_cluster_connect_fndecl_40103 ocfs2_cluster_connect fndecl 0 40103 NULL nohasharray
138591 +disable_so_hash_netportnet6_add_fndecl_40103 hash_netportnet6_add fndecl 0 40103 &disable_so_ocfs2_cluster_connect_fndecl_40103
138592 +disable_so_evm_inode_setattr_fndecl_40105 evm_inode_setattr fndecl 0 40105 NULL
138593 +disable_so_usdhi6_rq_start_fndecl_40120 usdhi6_rq_start fndecl 0 40120 NULL
138594 +disable_so_rp_ioctl_fndecl_40123 rp_ioctl fndecl 0 40123 NULL
138595 +disable_so_mmc_gpio_request_cd_fndecl_40125 mmc_gpio_request_cd fndecl 0 40125 NULL
138596 +disable_so_v4l2_m2m_qbuf_fndecl_40136 v4l2_m2m_qbuf fndecl 0 40136 NULL
138597 +disable_so_ceph_key_preparse_fndecl_40145 ceph_key_preparse fndecl 0 40145 NULL
138598 +disable_so_nouveau_bo_validate_fndecl_40153 nouveau_bo_validate fndecl 0 40153 NULL
138599 +disable_so_ftdi_elan_edset_single_fndecl_40157 ftdi_elan_edset_single fndecl 0 40157 NULL nohasharray
138600 +disable_so_mptctl_gettargetinfo_fndecl_40157 mptctl_gettargetinfo fndecl 0 40157 &disable_so_ftdi_elan_edset_single_fndecl_40157
138601 +disable_so_getrusage_fndecl_40162 getrusage fndecl 0 40162 NULL
138602 +disable_so_slcan_init_fndecl_40166 slcan_init fndecl 0 40166 NULL
138603 +disable_so_ethtool_get_rxnfc_fndecl_40180 ethtool_get_rxnfc fndecl 0 40180 NULL
138604 +disable_so_command_setlights_fndecl_40187 command_setlights fndecl 0 40187 NULL
138605 +disable_so___jfs_setxattr_fndecl_40196 __jfs_setxattr fndecl 0 40196 NULL
138606 +disable_so_ipw_queue_tx_init_fndecl_40218 ipw_queue_tx_init fndecl 0 40218 NULL
138607 +disable_so_smsc95xx_enter_suspend0_fndecl_40219 smsc95xx_enter_suspend0 fndecl 0 40219 NULL
138608 +disable_so_fuse_notify_poll_fndecl_40221 fuse_notify_poll fndecl 0 40221 NULL
138609 +disable_so_bochs_bo_create_fndecl_40223 bochs_bo_create fndecl 0 40223 NULL nohasharray
138610 +disable_so_snd_hdspm_create_alsa_devices_fndecl_40223 snd_hdspm_create_alsa_devices fndecl 0 40223 &disable_so_bochs_bo_create_fndecl_40223
138611 +disable_so_do_jffs2_getxattr_fndecl_40233 do_jffs2_getxattr fndecl 0 40233 NULL
138612 +disable_so_vmw_fallback_wait_fndecl_40237 vmw_fallback_wait fndecl 0 40237 NULL
138613 +disable_so__iwl_dbgfs_netdetect_write_fndecl_40255 _iwl_dbgfs_netdetect_write fndecl 0 40255 NULL
138614 +disable_so_es_len_extent_status_40276 es_len extent_status 0 40276 NULL
138615 +disable_so_toshiba_haps_add_fndecl_40284 toshiba_haps_add fndecl 0 40284 NULL
138616 +disable_so___smsc75xx_read_reg_fndecl_40291 __smsc75xx_read_reg fndecl 0 40291 NULL
138617 +disable_so_mmc_sd_init_uhs_card_fndecl_40292 mmc_sd_init_uhs_card fndecl 0 40292 NULL
138618 +disable_so_height_v4l2_bt_timings_40304 height v4l2_bt_timings 0 40304 NULL
138619 +disable_so_assigned_device_enable_host_msi_fndecl_40309 assigned_device_enable_host_msi fndecl 0 40309 NULL
138620 +disable_so_max_scaled_width_bttv_crop_40325 max_scaled_width bttv_crop 0 40325 NULL
138621 +disable_so_nilfs_bmap_assign_fndecl_40337 nilfs_bmap_assign fndecl 0 40337 NULL
138622 +disable_so___ext4_ext_dirty_fndecl_40343 __ext4_ext_dirty fndecl 0 40343 NULL nohasharray
138623 +disable_so_minimum_acpi_resource_memory32_40343 minimum acpi_resource_memory32 0 40343 &disable_so___ext4_ext_dirty_fndecl_40343
138624 +disable_so_send_msg_fndecl_40349 send_msg fndecl 0 40349 NULL
138625 +disable_so_bind_virq_to_irq_fndecl_40360 bind_virq_to_irq fndecl 0 40360 NULL
138626 +disable_so_blk_complete_sgv4_hdr_rq_fndecl_40361 blk_complete_sgv4_hdr_rq fndecl 0 40361 NULL
138627 +disable_so_ath6kl_bmi_get_target_info_fndecl_40364 ath6kl_bmi_get_target_info fndecl 0 40364 NULL nohasharray
138628 +disable_so_usbnet_suspend_fndecl_40364 usbnet_suspend fndecl 0 40364 &disable_so_ath6kl_bmi_get_target_info_fndecl_40364 nohasharray
138629 +disable_so_max_wrs_rds_ib_device_40364 max_wrs rds_ib_device 0 40364 &disable_so_usbnet_suspend_fndecl_40364
138630 +disable_so_align_kmem_cache_40377 align kmem_cache 0 40377 NULL
138631 +disable_so_cfg_reg_ix1_hw_40383 cfg_reg ix1_hw 0 40383 NULL
138632 +disable_so_t3_seeprom_wp_fndecl_40384 t3_seeprom_wp fndecl 0 40384 NULL
138633 +disable_so_mxser_ioctl_special_fndecl_40386 mxser_ioctl_special fndecl 0 40386 NULL
138634 +disable_so_snd_cs5535audio_create_fndecl_40393 snd_cs5535audio_create fndecl 0 40393 NULL
138635 +disable_so_ubifs_jnl_rename_fndecl_40403 ubifs_jnl_rename fndecl 0 40403 NULL
138636 +disable_so_max_scaled_height_bttv_crop_40404 max_scaled_height bttv_crop 0 40404 NULL
138637 +disable_so_joydev_ioctl_common_fndecl_40412 joydev_ioctl_common fndecl 0 40412 NULL
138638 +disable_so_uart_add_one_port_fndecl_40430 uart_add_one_port fndecl 0 40430 NULL
138639 +disable_so_rndis_set_config_parameter_fndecl_40434 rndis_set_config_parameter fndecl 0 40434 NULL
138640 +disable_so_test_ctrl_queue_fndecl_40461 test_ctrl_queue fndecl 0 40461 NULL
138641 +disable_so_cfi_staa_writev_fndecl_40463 cfi_staa_writev fndecl 0 40463 NULL
138642 +disable_so_cafe_pci_probe_fndecl_40464 cafe_pci_probe fndecl 0 40464 NULL
138643 +disable_so_nr_i2c_adapter_40466 nr i2c_adapter 0 40466 NULL
138644 +disable_so_skbd_connect_fndecl_40470 skbd_connect fndecl 0 40470 NULL
138645 +disable_so_get_v4l2_buffer32_fndecl_40473 get_v4l2_buffer32 fndecl 0 40473 NULL
138646 +disable_so_add_new_gdb_fndecl_40490 add_new_gdb fndecl 0 40490 NULL
138647 +disable_so_saa7706h_i2c_transfer_fndecl_40502 saa7706h_i2c_transfer fndecl 0 40502 NULL
138648 +disable_so_dn_mss_from_pmtu_fndecl_40520 dn_mss_from_pmtu fndecl 0 40520 NULL
138649 +disable_so_wext_handle_ioctl_fndecl_40525 wext_handle_ioctl fndecl 0 40525 NULL
138650 +disable_so_smb2_lockv_fndecl_40533 smb2_lockv fndecl 0 40533 NULL
138651 +disable_so_ipxitf_add_local_route_fndecl_40543 ipxitf_add_local_route fndecl 0 40543 NULL
138652 +disable_so_amixer_rsc_init_fndecl_40544 amixer_rsc_init fndecl 0 40544 NULL
138653 +disable_so_base_start_aac_dev_40550 base_start aac_dev 0 40550 NULL
138654 +disable_so_lpfc_bsg_sli_cfg_read_cmd_ext_fndecl_40551 lpfc_bsg_sli_cfg_read_cmd_ext fndecl 0 40551 NULL
138655 +disable_so_wait_for_free_request_fndecl_40555 wait_for_free_request fndecl 0 40555 NULL nohasharray
138656 +disable_so_dbg_chk_lpt_free_spc_fndecl_40555 dbg_chk_lpt_free_spc fndecl 0 40555 &disable_so_wait_for_free_request_fndecl_40555
138657 +disable_so_wl1251_hw_init_mem_config_fndecl_40558 wl1251_hw_init_mem_config fndecl 0 40558 NULL
138658 +disable_so_move_to_new_page_fndecl_40564 move_to_new_page fndecl 0 40564 NULL
138659 +disable_so_isdn_read_fndecl_40566 isdn_read fndecl 0 40566 NULL
138660 +disable_so_ip_mc_msfget_fndecl_40572 ip_mc_msfget fndecl 0 40572 NULL
138661 +disable_so_ts2020_writereg_fndecl_40589 ts2020_writereg fndecl 0 40589 NULL
138662 +disable_so_write_mode_page_fndecl_40592 write_mode_page fndecl 0 40592 NULL
138663 +disable_so_sctp_copy_local_addr_list_fndecl_40597 sctp_copy_local_addr_list fndecl 0 40597 NULL
138664 +disable_so_atrtr_ioctl_fndecl_40601 atrtr_ioctl fndecl 0 40601 NULL
138665 +disable_so_vyres_aty128_crtc_40610 vyres aty128_crtc 0 40610 NULL
138666 +disable_so_asus_rfkill_init_fndecl_40611 asus_rfkill_init fndecl 0 40611 NULL
138667 +disable_so_uwb_rc_beacon_fndecl_40613 uwb_rc_beacon fndecl 0 40613 NULL
138668 +disable_so_moxa_load_bios_fndecl_40615 moxa_load_bios fndecl 0 40615 NULL
138669 +disable_so_savage_verify_texaddr_fndecl_40623 savage_verify_texaddr fndecl 0 40623 NULL
138670 +disable_so_altera_swap_dr_fndecl_40633 altera_swap_dr fndecl 0 40633 NULL
138671 +disable_so_sock_setsockopt_fndecl_40635 sock_setsockopt fndecl 0 40635 NULL
138672 +disable_so_mei_cl_flow_ctrl_reduce_fndecl_40650 mei_cl_flow_ctrl_reduce fndecl 0 40650 NULL nohasharray
138673 +disable_so_compat_copy_ebt_replace_from_user_fndecl_40650 compat_copy_ebt_replace_from_user fndecl 0 40650 &disable_so_mei_cl_flow_ctrl_reduce_fndecl_40650
138674 +disable_so_mon_text_read_t_fndecl_40656 mon_text_read_t fndecl 0 40656 NULL
138675 +disable_so_partition_tape_fndecl_40664 partition_tape fndecl 0 40664 NULL
138676 +disable_so_valid_csum_fndecl_40666 valid_csum fndecl 0 40666 NULL
138677 +disable_so_ocfs2_search_one_group_fndecl_40670 ocfs2_search_one_group fndecl 0 40670 NULL
138678 +disable_so_iscsi_switch_str_param_fndecl_40671 iscsi_switch_str_param fndecl 0 40671 NULL
138679 +disable_so_nf_log_proc_dostring_fndecl_40684 nf_log_proc_dostring fndecl 0 40684 NULL
138680 +disable_so_ubi_resize_volume_fndecl_40687 ubi_resize_volume fndecl 0 40687 NULL
138681 +disable_so_build_audio_procunit_fndecl_40694 build_audio_procunit fndecl 0 40694 NULL
138682 +disable_so_xfs_bwrite_fndecl_40697 xfs_bwrite fndecl 0 40697 NULL
138683 +disable_so_kim_probe_fndecl_40698 kim_probe fndecl 0 40698 NULL
138684 +disable_so_q0_buf_size_bna_rx_config_40699 q0_buf_size bna_rx_config 0 40699 NULL
138685 +disable_so_enic_delfltr_fndecl_40701 enic_delfltr fndecl 0 40701 NULL
138686 +disable_so___hci_req_sync_fndecl_40707 __hci_req_sync fndecl 0 40707 NULL
138687 +disable_so_evdev_set_clk_type_fndecl_40712 evdev_set_clk_type fndecl 0 40712 NULL
138688 +disable_so_len_mtd_oob_ops_40721 len mtd_oob_ops 0 40721 NULL
138689 +disable_so_match_int_fndecl_40731 match_int fndecl 0 40731 NULL
138690 +disable_so_do_splice_to_fndecl_40737 do_splice_to fndecl 0 40737 NULL
138691 +disable_so_nfc_hci_target_discovered_fndecl_40739 nfc_hci_target_discovered fndecl 0 40739 NULL
138692 +disable_so_intel_gtt_mappable_entries_fndecl_40740 intel_gtt_mappable_entries fndecl 0 40740 NULL
138693 +disable_so_irtty_ioctl_fndecl_40758 irtty_ioctl fndecl 0 40758 NULL
138694 +disable_so_vfs_iter_write_fndecl_40761 vfs_iter_write fndecl 0 40761 NULL
138695 +disable_so_radeon_fence_wait_any_fndecl_40769 radeon_fence_wait_any fndecl 0 40769 NULL
138696 +disable_so_dev_pm_qos_constraints_allocate_fndecl_40784 dev_pm_qos_constraints_allocate fndecl 0 40784 NULL
138697 +disable_so_write_exec_fndecl_40794 write_exec fndecl 0 40794 NULL
138698 +disable_so_check_frame_fndecl_40798 check_frame fndecl 0 40798 NULL
138699 +disable_so_ath6kl_fetch_board_file_fndecl_40802 ath6kl_fetch_board_file fndecl 0 40802 NULL
138700 +disable_so_snd_ctl_elem_add_compat_fndecl_40806 snd_ctl_elem_add_compat fndecl 0 40806 NULL
138701 +disable_so_xfs_buf_submit_wait_fndecl_40833 xfs_buf_submit_wait fndecl 0 40833 NULL
138702 +disable_so_osst_flush_drive_buffer_fndecl_40846 osst_flush_drive_buffer fndecl 0 40846 NULL
138703 +disable_so_nilfs_ioctl_wrap_copy_fndecl_40869 nilfs_ioctl_wrap_copy fndecl 0 40869 NULL
138704 +disable_so_osst_set_options_fndecl_40884 osst_set_options fndecl 0 40884 NULL nohasharray
138705 +disable_so_add_uuid_fndecl_40884 add_uuid fndecl 0 40884 &disable_so_osst_set_options_fndecl_40884
138706 +disable_so_wl1251_acx_cts_protect_fndecl_40887 wl1251_acx_cts_protect fndecl 0 40887 NULL
138707 +disable_so_ntb_setup_msix_fndecl_40890 ntb_setup_msix fndecl 0 40890 NULL
138708 +disable_so_do_sync_erase_fndecl_40893 do_sync_erase fndecl 0 40893 NULL nohasharray
138709 +disable_so_pci_add_dynid_fndecl_40893 pci_add_dynid fndecl 0 40893 &disable_so_do_sync_erase_fndecl_40893
138710 +disable_so_ath6kl_fwlog_block_read_fndecl_40895 ath6kl_fwlog_block_read fndecl 0 40895 NULL
138711 +disable_so_ip6mr_mfc_delete_fndecl_40901 ip6mr_mfc_delete fndecl 0 40901 NULL
138712 +disable_so_snd_hdac_device_init_fndecl_40902 snd_hdac_device_init fndecl 0 40902 NULL
138713 +disable_so_qxl_modeset_init_fndecl_40918 qxl_modeset_init fndecl 0 40918 NULL
138714 +disable_so_e1000_setup_tx_resources_fndecl_40920 e1000_setup_tx_resources fndecl 0 40920 NULL
138715 +disable_so_sctp_setsockopt_bindx_fndecl_40925 sctp_setsockopt_bindx fndecl 0 40925 NULL
138716 +disable_so_ea_put_fndecl_40928 ea_put fndecl 0 40928 NULL
138717 +disable_so_uwb_radio_setup_fndecl_40939 uwb_radio_setup fndecl 0 40939 NULL
138718 +disable_so_brcmf_construct_chaninfo_fndecl_40940 brcmf_construct_chaninfo fndecl 0 40940 NULL
138719 +disable_so_write_control_reg_fndecl_40949 write_control_reg fndecl 0 40949 NULL
138720 +disable_so_e1000e_get_base_timinca_fndecl_40950 e1000e_get_base_timinca fndecl 0 40950 NULL
138721 +disable_so_kvm_iommu_map_pages_fndecl_40951 kvm_iommu_map_pages fndecl 0 40951 NULL
138722 +disable_so_ftdi_elan_probe_fndecl_40955 ftdi_elan_probe fndecl 0 40955 NULL
138723 +disable_so_iuu_uart_flush_fndecl_40963 iuu_uart_flush fndecl 0 40963 NULL
138724 +disable_so_security_netif_sid_fndecl_40980 security_netif_sid fndecl 0 40980 NULL
138725 +disable_so_convert_ctx_accesses_fndecl_40981 convert_ctx_accesses fndecl 0 40981 NULL
138726 +disable_so_kstrtos8_fndecl_40989 kstrtos8 fndecl 0 40989 NULL
138727 +disable_so_rndis_query_fndecl_40991 rndis_query fndecl 0 40991 NULL
138728 +disable_so_vaddr_get_pfn_fndecl_40993 vaddr_get_pfn fndecl 0 40993 NULL nohasharray
138729 +disable_so_snd_ca0106_pcm_open_playback_channel_fndecl_40993 snd_ca0106_pcm_open_playback_channel fndecl 0 40993 &disable_so_vaddr_get_pfn_fndecl_40993
138730 +disable_so_afs_deliver_cb_probe_uuid_fndecl_40998 afs_deliver_cb_probe_uuid fndecl 0 40998 NULL
138731 +disable_so_ath6kl_target_config_wlan_params_fndecl_41017 ath6kl_target_config_wlan_params fndecl 0 41017 NULL
138732 +disable_so_rxrpc_preparse_xdr_fndecl_41023 rxrpc_preparse_xdr fndecl 0 41023 NULL
138733 +disable_so_do_request_fndecl_41030 do_request fndecl 0 41030 NULL
138734 +disable_so_altera_set_dr_pre_fndecl_41037 altera_set_dr_pre fndecl 0 41037 NULL
138735 +disable_so_ieee802154_hdr_pull_fndecl_41051 ieee802154_hdr_pull fndecl 0 41051 NULL
138736 +disable_so_ems_pci_add_card_fndecl_41065 ems_pci_add_card fndecl 0 41065 NULL
138737 +disable_so_vdc_mem_size_vml_par_41069 vdc_mem_size vml_par 0 41069 NULL
138738 +disable_so_ext4_mb_init_cache_fndecl_41081 ext4_mb_init_cache fndecl 0 41081 NULL
138739 +disable_so_pci_vc_do_save_buffer_fndecl_41087 pci_vc_do_save_buffer fndecl 0 41087 NULL
138740 +disable_so_fat_get_cluster_fndecl_41092 fat_get_cluster fndecl 0 41092 NULL nohasharray
138741 +disable_so_wl1271_acx_event_mbox_mask_fndecl_41092 wl1271_acx_event_mbox_mask fndecl 0 41092 &disable_so_fat_get_cluster_fndecl_41092
138742 +disable_so_av7110_send_fw_cmd_fndecl_41109 av7110_send_fw_cmd fndecl 0 41109 NULL
138743 +disable_so_xfs_imap_lookup_fndecl_41113 xfs_imap_lookup fndecl 0 41113 NULL
138744 +disable_so_ubifs_wbuf_write_nolock_fndecl_41121 ubifs_wbuf_write_nolock fndecl 0 41121 NULL
138745 +disable_so_rt2x00lib_probe_hw_fndecl_41122 rt2x00lib_probe_hw fndecl 0 41122 NULL
138746 +disable_so_check_effect_access_fndecl_41129 check_effect_access fndecl 0 41129 NULL
138747 +disable_so_ip_options_get_from_user_fndecl_41133 ip_options_get_from_user fndecl 0 41133 NULL
138748 +disable_so_moxa_init_board_fndecl_41136 moxa_init_board fndecl 0 41136 NULL nohasharray
138749 +disable_so_cmpc_accel_add_fndecl_41136 cmpc_accel_add fndecl 0 41136 &disable_so_moxa_init_board_fndecl_41136
138750 +disable_so_nilfs_sufile_get_blkoff_fndecl_41139 nilfs_sufile_get_blkoff fndecl 0 41139 NULL
138751 +disable_so_usb_reset_and_verify_device_fndecl_41142 usb_reset_and_verify_device fndecl 0 41142 NULL
138752 +disable_so_xfs_setup_devices_fndecl_41174 xfs_setup_devices fndecl 0 41174 NULL
138753 +disable_so_e1000_write_eeprom_spi_fndecl_41180 e1000_write_eeprom_spi fndecl 0 41180 NULL
138754 +disable_so_wl1271_acx_rssi_snr_trigger_fndecl_41181 wl1271_acx_rssi_snr_trigger fndecl 0 41181 NULL
138755 +disable_so_tg3_nvram_lock_fndecl_41185 tg3_nvram_lock fndecl 0 41185 NULL
138756 +disable_so_wl12xx_cmd_set_default_wep_key_fndecl_41191 wl12xx_cmd_set_default_wep_key fndecl 0 41191 NULL
138757 +disable_so_gfs2_open_common_fndecl_41198 gfs2_open_common fndecl 0 41198 NULL
138758 +disable_so_pyra_init_pyra_device_struct_fndecl_41210 pyra_init_pyra_device_struct fndecl 0 41210 NULL
138759 +disable_so_ceph_get_acl_fndecl_41215 ceph_get_acl fndecl 0 41215 NULL
138760 +disable_so_ttm_mem_io_evict_fndecl_41219 ttm_mem_io_evict fndecl 0 41219 NULL
138761 +disable_so_prctl_set_mm_fndecl_41225 prctl_set_mm fndecl 0 41225 NULL
138762 +disable_so_security_sid_to_context_core_fndecl_41236 security_sid_to_context_core fndecl 0 41236 NULL
138763 +disable_so_avtab_read_item_fndecl_41245 avtab_read_item fndecl 0 41245 NULL
138764 +disable_so___apei_exec_run_fndecl_41248 __apei_exec_run fndecl 0 41248 NULL
138765 +disable_so___spi_sync_fndecl_41250 __spi_sync fndecl 0 41250 NULL
138766 +disable_so_asd_check_flash_type_fndecl_41253 asd_check_flash_type fndecl 0 41253 NULL
138767 +disable_so_xpc_setup_msg_structures_uv_fndecl_41257 xpc_setup_msg_structures_uv fndecl 0 41257 NULL
138768 +disable_so_ipw_load_ucode_fndecl_41262 ipw_load_ucode fndecl 0 41262 NULL
138769 +disable_so_blkdev_issue_zeroout_fndecl_41272 blkdev_issue_zeroout fndecl 0 41272 NULL
138770 +disable_so_mwl8k_cmd_set_new_stn_del_fndecl_41285 mwl8k_cmd_set_new_stn_del fndecl 0 41285 NULL
138771 +disable_so_dy_fb_fillrect_41289 dy fb_fillrect 0 41289 NULL
138772 +disable_so_vb2_queue_init_fndecl_41292 vb2_queue_init fndecl 0 41292 NULL
138773 +disable_so_register_vlan_device_fndecl_41310 register_vlan_device fndecl 0 41310 NULL
138774 +disable_so_block_start_extent_map_41316 block_start extent_map 0 41316 NULL
138775 +disable_so_ret_c4iw_wr_wait_41319 ret c4iw_wr_wait 0 41319 NULL
138776 +disable_so_msb_cache_init_fndecl_41321 msb_cache_init fndecl 0 41321 NULL
138777 +disable_so_drm_vma_node_allow_fndecl_41322 drm_vma_node_allow fndecl 0 41322 NULL
138778 +disable_so_jffs2_flash_direct_writev_fndecl_41324 jffs2_flash_direct_writev fndecl 0 41324 NULL
138779 +disable_so_pcmcia_request_irq_fndecl_41338 pcmcia_request_irq fndecl 0 41338 NULL
138780 +disable_so_fanotify_write_fndecl_41340 fanotify_write fndecl 0 41340 NULL
138781 +disable_so_ocfs2_read_xattr_block_fndecl_41350 ocfs2_read_xattr_block fndecl 0 41350 NULL
138782 +disable_so_r600_parse_clk_voltage_dep_table_fndecl_41360 r600_parse_clk_voltage_dep_table fndecl 0 41360 NULL
138783 +disable_so_bus_create_file_fndecl_41361 bus_create_file fndecl 0 41361 NULL nohasharray
138784 +disable_so__iwl_dbgfs_d0i3_refs_write_fndecl_41361 _iwl_dbgfs_d0i3_refs_write fndecl 0 41361 &disable_so_bus_create_file_fndecl_41361
138785 +disable_so_do_device_access_fndecl_41373 do_device_access fndecl 0 41373 NULL nohasharray
138786 +disable_so_pidff_request_effect_upload_fndecl_41373 pidff_request_effect_upload fndecl 0 41373 &disable_so_do_device_access_fndecl_41373
138787 +disable_so_snd_seq_ioctl_delete_queue_fndecl_41377 snd_seq_ioctl_delete_queue fndecl 0 41377 NULL
138788 +disable_so_rsxx_pci_probe_fndecl_41382 rsxx_pci_probe fndecl 0 41382 NULL
138789 +disable_so_si_calculate_sclk_params_fndecl_41383 si_calculate_sclk_params fndecl 0 41383 NULL
138790 +disable_so_iwl_send_rxon_timing_fndecl_41386 iwl_send_rxon_timing fndecl 0 41386 NULL
138791 +disable_so_radeon_crtc_page_flip_fndecl_41394 radeon_crtc_page_flip fndecl 0 41394 NULL
138792 +disable_so_sctp_v6_add_protocol_fndecl_41404 sctp_v6_add_protocol fndecl 0 41404 NULL
138793 +disable_so_cw1200_load_firmware_fndecl_41406 cw1200_load_firmware fndecl 0 41406 NULL
138794 +disable_so_rtc_dev_ioctl_fndecl_41421 rtc_dev_ioctl fndecl 0 41421 NULL
138795 +disable_so___dev_mc_del_fndecl_41422 __dev_mc_del fndecl 0 41422 NULL
138796 +disable_so_uart_set_info_fndecl_41426 uart_set_info fndecl 0 41426 NULL
138797 +disable_so___feat_register_sp_fndecl_41435 __feat_register_sp fndecl 0 41435 NULL
138798 +disable_so_uea_bind_fndecl_41443 uea_bind fndecl 0 41443 NULL
138799 +disable_so_mwifiex_set_tx_power_fndecl_41451 mwifiex_set_tx_power fndecl 0 41451 NULL
138800 +disable_so_iforce_serio_connect_fndecl_41456 iforce_serio_connect fndecl 0 41456 NULL
138801 +disable_so_gssx_dec_buffer_fndecl_41466 gssx_dec_buffer fndecl 0 41466 NULL
138802 +disable_so_sd_qc_per_block_gfs2_sbd_41469 sd_qc_per_block gfs2_sbd 0 41469 NULL
138803 +disable_so_check_ctx_access_fndecl_41470 check_ctx_access fndecl 0 41470 NULL
138804 +disable_so_major_nr_vardecl_umem_c_41471 major_nr vardecl_umem.c 0 41471 NULL
138805 +disable_so_wl18xx_cmd_smart_config_set_group_key_fndecl_41480 wl18xx_cmd_smart_config_set_group_key fndecl 0 41480 NULL
138806 +disable_so_rsi_init_sdio_interface_fndecl_41482 rsi_init_sdio_interface fndecl 0 41482 NULL
138807 +disable_so_get_var_len_fndecl_41483 get_var_len fndecl 0 41483 NULL
138808 +disable_so_sas_register_ha_fndecl_41489 sas_register_ha fndecl 0 41489 NULL
138809 +disable_so_xfs_btree_check_ptr_fndecl_41490 xfs_btree_check_ptr fndecl 0 41490 NULL
138810 +disable_so_compat_core_sys_select_fndecl_41494 compat_core_sys_select fndecl 0 41494 NULL
138811 +disable_so_pccard_get_next_tuple_fndecl_41495 pccard_get_next_tuple fndecl 0 41495 NULL
138812 +disable_so_pidff_init_fields_fndecl_41512 pidff_init_fields fndecl 0 41512 NULL
138813 +disable_so_qtet_init_fndecl_41520 qtet_init fndecl 0 41520 NULL
138814 +disable_so_register_tpacpi_subdriver_fndecl_41522 register_tpacpi_subdriver fndecl 0 41522 NULL
138815 +disable_so_write_acpi_int_fndecl_41529 write_acpi_int fndecl 0 41529 NULL
138816 +disable_so___set_gcr3_fndecl_41533 __set_gcr3 fndecl 0 41533 NULL
138817 +disable_so_pci_vpd_find_tag_fndecl_41534 pci_vpd_find_tag fndecl 0 41534 NULL
138818 +disable_so_b43_phy_allocate_fndecl_41536 b43_phy_allocate fndecl 0 41536 NULL
138819 +disable_so_mxt_write_reg_fndecl_41544 mxt_write_reg fndecl 0 41544 NULL
138820 +disable_so_velocity_change_mtu_fndecl_41548 velocity_change_mtu fndecl 0 41548 NULL
138821 +disable_so_pcan_usb_pro_init_fndecl_41556 pcan_usb_pro_init fndecl 0 41556 NULL
138822 +disable_so__drbd_send_ack_fndecl_41564 _drbd_send_ack fndecl 0 41564 NULL
138823 +disable_so_ttpci_budget_init_fndecl_41578 ttpci_budget_init fndecl 0 41578 NULL
138824 +disable_so_mtd_get_device_size_fndecl_41579 mtd_get_device_size fndecl 0 41579 NULL
138825 +disable_so_iio_device_add_channel_sysfs_fndecl_41581 iio_device_add_channel_sysfs fndecl 0 41581 NULL
138826 +disable_so_rxrpc_krb5_decode_tagged_array_fndecl_41583 rxrpc_krb5_decode_tagged_array fndecl 0 41583 NULL
138827 +disable_so_rocker_port_ipv4_nh_fndecl_41596 rocker_port_ipv4_nh fndecl 0 41596 NULL
138828 +disable_so_edge_open_fndecl_41616 edge_open fndecl 0 41616 NULL
138829 +disable_so_read_buf_fndecl_41631 read_buf fndecl 0 41631 NULL
138830 +disable_so_ttusb_alloc_iso_urbs_fndecl_41633 ttusb_alloc_iso_urbs fndecl 0 41633 NULL
138831 +disable_so_ipath_tid_free_fndecl_41640 ipath_tid_free fndecl 0 41640 NULL
138832 +disable_so_rate_twl4030_priv_41642 rate twl4030_priv 0 41642 NULL
138833 +disable_so_ipw_stop_master_fndecl_41651 ipw_stop_master fndecl 0 41651 NULL
138834 +disable_so_snd_opl3_write_fndecl_41652 snd_opl3_write fndecl 0 41652 NULL
138835 +disable_so_mlx4_comm_cmd_poll_fndecl_41654 mlx4_comm_cmd_poll fndecl 0 41654 NULL
138836 +disable_so_bl_parse_concat_fndecl_41656 bl_parse_concat fndecl 0 41656 NULL
138837 +disable_so_sky2_test_msi_fndecl_41662 sky2_test_msi fndecl 0 41662 NULL
138838 +disable_so_frag_threshold_atmel_private_41669 frag_threshold atmel_private 0 41669 NULL
138839 +disable_so_lookup_inline_extent_backref_fndecl_41670 lookup_inline_extent_backref fndecl 0 41670 NULL
138840 +disable_so_vram_start_vmw_private_41679 vram_start vmw_private 0 41679 NULL
138841 +disable_so_xfs_alloc_lookup_ge_fndecl_41690 xfs_alloc_lookup_ge fndecl 0 41690 NULL
138842 +disable_so_nvme_trans_standard_inquiry_page_fndecl_41701 nvme_trans_standard_inquiry_page fndecl 0 41701 NULL
138843 +disable_so_tree_mod_log_eb_copy_fndecl_41708 tree_mod_log_eb_copy fndecl 0 41708 NULL
138844 +disable_so_cma_resolve_ib_addr_fndecl_41710 cma_resolve_ib_addr fndecl 0 41710 NULL
138845 +disable_so_if_lock_fndecl_41713 if_lock fndecl 0 41713 NULL
138846 +disable_so_setup_window_lock_fndecl_41715 setup_window_lock fndecl 0 41715 NULL
138847 +disable_so_pci_enable_msi_range_fndecl_41728 pci_enable_msi_range fndecl 0 41728 NULL
138848 +disable_so_v4l2_ctrl_handler_init_class_fndecl_41742 v4l2_ctrl_handler_init_class fndecl 0 41742 NULL
138849 +disable_so_validate_t2_fndecl_41749 validate_t2 fndecl 0 41749 NULL
138850 +disable_so_intel_fb_align_height_fndecl_41750 intel_fb_align_height fndecl 0 41750 NULL
138851 +disable_so_mounts_open_common_fndecl_41752 mounts_open_common fndecl 0 41752 NULL
138852 +disable_so_i_metasize_romfs_inode_info_41756 i_metasize romfs_inode_info 0 41756 NULL
138853 +disable_so_bbt_erase_shift_nand_chip_41764 bbt_erase_shift nand_chip 0 41764 NULL
138854 +disable_so_pcibios_enable_device_fndecl_41776 pcibios_enable_device fndecl 0 41776 NULL nohasharray
138855 +disable_so___erst_record_id_cache_add_one_fndecl_41776 __erst_record_id_cache_add_one fndecl 0 41776 &disable_so_pcibios_enable_device_fndecl_41776
138856 +disable_so_mwifiex_cmd_802_11_associate_fndecl_41779 mwifiex_cmd_802_11_associate fndecl 0 41779 NULL
138857 +disable_so_minor_macvlan_dev_41793 minor macvlan_dev 0 41793 NULL
138858 +disable_so_scsi_add_host_with_dma_fndecl_41814 scsi_add_host_with_dma fndecl 0 41814 NULL
138859 +disable_so_mxt_soft_reset_fndecl_41818 mxt_soft_reset fndecl 0 41818 NULL
138860 +disable_so_snd_emu10k1_ipcm_poke_fndecl_41832 snd_emu10k1_ipcm_poke fndecl 0 41832 NULL
138861 +disable_so_bcma_fill_sprom_with_fallback_fndecl_41833 bcma_fill_sprom_with_fallback fndecl 0 41833 NULL
138862 +disable_so_check_xadd_fndecl_41838 check_xadd fndecl 0 41838 NULL
138863 +disable_so_ino_nilfs_fid_41858 ino nilfs_fid 0 41858 NULL
138864 +disable_so_i2c_smbus_xfer_emulated_fndecl_41868 i2c_smbus_xfer_emulated fndecl 0 41868 NULL nohasharray
138865 +disable_so_ssb_bus_register_fndecl_41868 ssb_bus_register fndecl 0 41868 &disable_so_i2c_smbus_xfer_emulated_fndecl_41868 nohasharray
138866 +disable_so_evergreen_packet3_check_fndecl_41868 evergreen_packet3_check fndecl 0 41868 &disable_so_ssb_bus_register_fndecl_41868
138867 +disable_so_snd_rme96_capture_getrate_fndecl_41874 snd_rme96_capture_getrate fndecl 0 41874 NULL
138868 +disable_so_truncate_upper_fndecl_41884 truncate_upper fndecl 0 41884 NULL
138869 +disable_so_sedlbauer_config_fndecl_41892 sedlbauer_config fndecl 0 41892 NULL
138870 +disable_so_kfd_parse_subtype_mem_fndecl_41902 kfd_parse_subtype_mem fndecl 0 41902 NULL
138871 +disable_so_erase_effect_fndecl_41911 erase_effect fndecl 0 41911 NULL
138872 +disable_so_card_wait_for_busy_clear_fndecl_41919 card_wait_for_busy_clear fndecl 0 41919 NULL
138873 +disable_so_create_indep_hp_ctls_fndecl_41921 create_indep_hp_ctls fndecl 0 41921 NULL
138874 +disable_so_snd_nm256_mixer_fndecl_41925 snd_nm256_mixer fndecl 0 41925 NULL
138875 +disable_so_ath6kl_upload_board_file_fndecl_41927 ath6kl_upload_board_file fndecl 0 41927 NULL nohasharray
138876 +disable_so_ipac_gazel_hw_41927 ipac gazel_hw 0 41927 &disable_so_ath6kl_upload_board_file_fndecl_41927
138877 +disable_so_journal_get_write_access_fndecl_41928 journal_get_write_access fndecl 0 41928 NULL
138878 +disable_so_qgroup_shared_accounting_fndecl_41929 qgroup_shared_accounting fndecl 0 41929 NULL
138879 +disable_so_r100_cs_track_cube_fndecl_41931 r100_cs_track_cube fndecl 0 41931 NULL
138880 +disable_so_whci_n_caps_fndecl_41932 whci_n_caps fndecl 0 41932 NULL
138881 +disable_so_cma_resolve_ib_dev_fndecl_41940 cma_resolve_ib_dev fndecl 0 41940 NULL
138882 +disable_so_rmmio_size_cirrus_device_41950 rmmio_size cirrus_device 0 41950 NULL
138883 +disable_so_i915_gem_object_ggtt_pin_fndecl_41959 i915_gem_object_ggtt_pin fndecl 0 41959 NULL
138884 +disable_so_handler_new_ref_fndecl_41960 handler_new_ref fndecl 0 41960 NULL
138885 +disable_so_hpsa_big_passthru_ioctl_fndecl_41962 hpsa_big_passthru_ioctl fndecl 0 41962 NULL
138886 +disable_so_toshiba_acpi_add_fndecl_41964 toshiba_acpi_add fndecl 0 41964 NULL
138887 +disable_so_ctl_mapbase_timberdale_device_41969 ctl_mapbase timberdale_device 0 41969 NULL
138888 +disable_so_width_fb_copyarea_41973 width fb_copyarea 0 41973 NULL
138889 +disable_so_snd_pcm_oss_read1_fndecl_41992 snd_pcm_oss_read1 fndecl 0 41992 NULL
138890 +disable_so_set_flicker_fndecl_42011 set_flicker fndecl 0 42011 NULL
138891 +disable_so_svc_rdma_xdr_decode_req_fndecl_42015 svc_rdma_xdr_decode_req fndecl 0 42015 NULL
138892 +disable_so_create_setup_data_node_fndecl_42017 create_setup_data_node fndecl 0 42017 NULL
138893 +disable_so_ocfs2_recovery_init_fndecl_42023 ocfs2_recovery_init fndecl 0 42023 NULL
138894 +disable_so_copy_nodes_to_user_fndecl_42028 copy_nodes_to_user fndecl 0 42028 NULL
138895 +disable_so_ohci_urb_enqueue_fndecl_42032 ohci_urb_enqueue fndecl 0 42032 NULL
138896 +disable_so_logfs_inode_write_fndecl_42034 logfs_inode_write fndecl 0 42034 NULL
138897 +disable_so_reiserfs_new_inode_fndecl_42039 reiserfs_new_inode fndecl 0 42039 NULL
138898 +disable_so_user_to_ptr_fndecl_42040 user_to_ptr fndecl 0 42040 NULL
138899 +disable_so_sel_write_load_fndecl_42053 sel_write_load fndecl 0 42053 NULL
138900 +disable_so_fat_add_new_entries_fndecl_42062 fat_add_new_entries fndecl 0 42062 NULL
138901 +disable_so_dvb_usb_get_hexline_fndecl_42063 dvb_usb_get_hexline fndecl 0 42063 NULL
138902 +disable_so_issue_creg_rw_fndecl_42072 issue_creg_rw fndecl 0 42072 NULL nohasharray
138903 +disable_so_ipath_create_rcvhdrq_fndecl_42072 ipath_create_rcvhdrq fndecl 0 42072 &disable_so_issue_creg_rw_fndecl_42072
138904 +disable_so_ath6kl_wmi_set_rx_frame_format_cmd_fndecl_42079 ath6kl_wmi_set_rx_frame_format_cmd fndecl 0 42079 NULL
138905 +disable_so_sys_rt_sigqueueinfo_fndecl_42090 sys_rt_sigqueueinfo fndecl 0 42090 NULL
138906 +disable_so_rtsx_pci_send_cmd_fndecl_42093 rtsx_pci_send_cmd fndecl 0 42093 NULL
138907 +disable_so_gtt_size_radeon_mc_42102 gtt_size radeon_mc 0 42102 NULL
138908 +disable_so_sctp_auth_del_key_id_fndecl_42122 sctp_auth_del_key_id fndecl 0 42122 NULL
138909 +disable_so_atc_get_resources_fndecl_42131 atc_get_resources fndecl 0 42131 NULL
138910 +disable_so_mlx4_en_init_netdev_fndecl_42133 mlx4_en_init_netdev fndecl 0 42133 NULL
138911 +disable_so_lcr_offset_mgsl_struct_42134 lcr_offset mgsl_struct 0 42134 NULL
138912 +disable_so_sumo_parse_power_table_fndecl_42139 sumo_parse_power_table fndecl 0 42139 NULL
138913 +disable_so_uvc_alloc_urb_buffers_fndecl_42145 uvc_alloc_urb_buffers fndecl 0 42145 NULL
138914 +disable_so_osd_execute_request_fndecl_42149 osd_execute_request fndecl 0 42149 NULL
138915 +disable_so_ath6kl_wmi_set_lpreamble_cmd_fndecl_42153 ath6kl_wmi_set_lpreamble_cmd fndecl 0 42153 NULL nohasharray
138916 +disable_so_kvm_vm_ioctl_register_coalesced_mmio_fndecl_42153 kvm_vm_ioctl_register_coalesced_mmio fndecl 0 42153 &disable_so_ath6kl_wmi_set_lpreamble_cmd_fndecl_42153
138917 +disable_so_atm_add_addr_fndecl_42156 atm_add_addr fndecl 0 42156 NULL
138918 +disable_so_netdev_rx_handler_register_fndecl_42179 netdev_rx_handler_register fndecl 0 42179 NULL
138919 +disable_so_ethtool_set_wol_fndecl_42183 ethtool_set_wol fndecl 0 42183 NULL
138920 +disable_so_snd_compr_pause_fndecl_42193 snd_compr_pause fndecl 0 42193 NULL
138921 +disable_so___team_options_register_fndecl_42198 __team_options_register fndecl 0 42198 NULL
138922 +disable_so_sky2_init_fndecl_42207 sky2_init fndecl 0 42207 NULL
138923 +disable_so_smb2_push_mand_fdlocks_fndecl_42215 smb2_push_mand_fdlocks fndecl 0 42215 NULL
138924 +disable_so_put_v4l2_plane32_fndecl_42217 put_v4l2_plane32 fndecl 0 42217 NULL
138925 +disable_so_usb_serial_generic_submit_read_urbs_fndecl_42231 usb_serial_generic_submit_read_urbs fndecl 0 42231 NULL nohasharray
138926 +disable_so_videobuf_qbuf_fndecl_42231 videobuf_qbuf fndecl 0 42231 &disable_so_usb_serial_generic_submit_read_urbs_fndecl_42231
138927 +disable_so_fr_ioctl_fndecl_42243 fr_ioctl fndecl 0 42243 NULL
138928 +disable_so_k_dir_id_in_core_key_42244 k_dir_id in_core_key 0 42244 NULL
138929 +disable_so_fb_cvt_hblank_fndecl_42250 fb_cvt_hblank fndecl 0 42250 NULL
138930 +disable_so_ath6kl_sdio_func0_cmd52_wr_byte_fndecl_42251 ath6kl_sdio_func0_cmd52_wr_byte fndecl 0 42251 NULL
138931 +disable_so_sge_length_qib_sge_42274 sge_length qib_sge 0 42274 NULL
138932 +disable_so_rx_pending_ethtool_ringparam_42280 rx_pending ethtool_ringparam 0 42280 NULL
138933 +disable_so_set_guid_rec_fndecl_42282 set_guid_rec fndecl 0 42282 NULL
138934 +disable_so___stop_machine_fndecl_42288 __stop_machine fndecl 0 42288 NULL
138935 +disable_so_vmlfb_get_gpu_fndecl_42290 vmlfb_get_gpu fndecl 0 42290 NULL
138936 +disable_so_serio_raw_connect_fndecl_42292 serio_raw_connect fndecl 0 42292 NULL
138937 +disable_so_cond_read_list_fndecl_42296 cond_read_list fndecl 0 42296 NULL
138938 +disable_so_ubi_more_leb_change_data_fndecl_42301 ubi_more_leb_change_data fndecl 0 42301 NULL
138939 +disable_so_iwl_send_tx_ant_cfg_fndecl_42314 iwl_send_tx_ant_cfg fndecl 0 42314 NULL
138940 +disable_so_dbg_leb_write_fndecl_42320 dbg_leb_write fndecl 0 42320 NULL nohasharray
138941 +disable_so_kvm_write_guest_page_fndecl_42320 kvm_write_guest_page fndecl 0 42320 &disable_so_dbg_leb_write_fndecl_42320
138942 +disable_so_dlm_slots_assign_fndecl_42324 dlm_slots_assign fndecl 0 42324 NULL
138943 +disable_so_f2fs_trim_fs_fndecl_42333 f2fs_trim_fs fndecl 0 42333 NULL
138944 +disable_so_parse_mic_boost_fndecl_42335 parse_mic_boost fndecl 0 42335 NULL nohasharray
138945 +disable_so_vp3054_i2c_probe_fndecl_42335 vp3054_i2c_probe fndecl 0 42335 &disable_so_parse_mic_boost_fndecl_42335
138946 +disable_so_mlx4_ib_alloc_cq_buf_fndecl_42345 mlx4_ib_alloc_cq_buf fndecl 0 42345 NULL
138947 +disable_so_minor_mei_device_42366 minor mei_device 0 42366 NULL
138948 +disable_so_ext4_ext_get_access_fndecl_42377 ext4_ext_get_access fndecl 0 42377 NULL
138949 +disable_so_ubifs_lpt_end_commit_fndecl_42383 ubifs_lpt_end_commit fndecl 0 42383 NULL
138950 +disable_so___spi_validate_fndecl_42385 __spi_validate fndecl 0 42385 NULL
138951 +disable_so__ctl_diag_read_buffer_fndecl_42386 _ctl_diag_read_buffer fndecl 0 42386 NULL
138952 +disable_so_prctl_set_mm_exe_file_fndecl_42393 prctl_set_mm_exe_file fndecl 0 42393 NULL
138953 +disable_so_jfs_initxattrs_fndecl_42399 jfs_initxattrs fndecl 0 42399 NULL
138954 +disable_so_ethtool_set_rxfh_fndecl_42407 ethtool_set_rxfh fndecl 0 42407 NULL
138955 +disable_so_netlbl_domhsh_validate_fndecl_42418 netlbl_domhsh_validate fndecl 0 42418 NULL
138956 +disable_so_hidraw_ioctl_fndecl_42425 hidraw_ioctl fndecl 0 42425 NULL
138957 +disable_so_pci_save_pcie_state_fndecl_42427 pci_save_pcie_state fndecl 0 42427 NULL
138958 +disable_so_bnx2x_test_nvram_fndecl_42428 bnx2x_test_nvram fndecl 0 42428 NULL
138959 +disable_so___intel_set_mode_setup_plls_fndecl_42442 __intel_set_mode_setup_plls fndecl 0 42442 NULL
138960 +disable_so_spi_start_queue_fndecl_42444 spi_start_queue fndecl 0 42444 NULL
138961 +disable_so_buffer_chain_size_fndecl_42450 buffer_chain_size fndecl 0 42450 NULL
138962 +disable_so_xen_wdt_start_fndecl_42454 xen_wdt_start fndecl 0 42454 NULL
138963 +disable_so_kill_proc_info_fndecl_42457 kill_proc_info fndecl 0 42457 NULL
138964 +disable_so_ocfs2_create_symlink_data_fndecl_42465 ocfs2_create_symlink_data fndecl 0 42465 NULL
138965 +disable_so_snd_soc_register_codec_fndecl_42473 snd_soc_register_codec fndecl 0 42473 NULL
138966 +disable_so_gpio_ir_recv_probe_fndecl_42511 gpio_ir_recv_probe fndecl 0 42511 NULL
138967 +disable_so_ipath_port_info_fndecl_42513 ipath_port_info fndecl 0 42513 NULL
138968 +disable_so___vb2_queue_free_fndecl_42514 __vb2_queue_free fndecl 0 42514 NULL
138969 +disable_so_ide_set_media_lock_fndecl_42515 ide_set_media_lock fndecl 0 42515 NULL
138970 +disable_so_be_mbox_db_ready_wait_fndecl_42516 be_mbox_db_ready_wait fndecl 0 42516 NULL
138971 +disable_so_prism2_request_hostscan_fndecl_42518 prism2_request_hostscan fndecl 0 42518 NULL
138972 +disable_so_xfs_rtmodify_summary_fndecl_42522 xfs_rtmodify_summary fndecl 0 42522 NULL nohasharray
138973 +disable_so_ep_open_fndecl_42522 ep_open fndecl 0 42522 &disable_so_xfs_rtmodify_summary_fndecl_42522
138974 +disable_so_cn_netlink_send_mult_fndecl_42523 cn_netlink_send_mult fndecl 0 42523 NULL
138975 +disable_so__ctl_do_mpt_command_fndecl_42536 _ctl_do_mpt_command fndecl 0 42536 NULL
138976 +disable_so_solo_p2m_init_fndecl_42544 solo_p2m_init fndecl 0 42544 NULL
138977 +disable_so_usb_urb_init_fndecl_42548 usb_urb_init fndecl 0 42548 NULL
138978 +disable_so_ocfs2_block_check_validate_bhs_fndecl_42557 ocfs2_block_check_validate_bhs fndecl 0 42557 NULL nohasharray
138979 +disable_so_sta_info_insert_drv_state_fndecl_42557 sta_info_insert_drv_state fndecl 0 42557 &disable_so_ocfs2_block_check_validate_bhs_fndecl_42557
138980 +disable_so_do_write_orph_node_fndecl_42564 do_write_orph_node fndecl 0 42564 NULL
138981 +disable_so_ufx_i2c_init_fndecl_42565 ufx_i2c_init fndecl 0 42565 NULL
138982 +disable_so_gunze_connect_fndecl_42585 gunze_connect fndecl 0 42585 NULL
138983 +disable_so_r100_cs_track_texture_check_fndecl_42591 r100_cs_track_texture_check fndecl 0 42591 NULL
138984 +disable_so_videobuf_reqbufs_fndecl_42592 videobuf_reqbufs fndecl 0 42592 NULL
138985 +disable_so_wrap_bcma_device_42599 wrap bcma_device 0 42599 NULL
138986 +disable_so_btrfs_map_block_fndecl_42600 btrfs_map_block fndecl 0 42600 NULL
138987 +disable_so_fw_hdrs_load_fndecl_42601 fw_hdrs_load fndecl 0 42601 NULL
138988 +disable_so_ocfs2_check_group_descriptor_fndecl_42611 ocfs2_check_group_descriptor fndecl 0 42611 NULL
138989 +disable_so_HFP_kyrofb_info_42618 HFP kyrofb_info 0 42618 NULL
138990 +disable_so_pcim_enable_device_fndecl_42624 pcim_enable_device fndecl 0 42624 NULL
138991 +disable_so_insert_page_fndecl_42625 insert_page fndecl 0 42625 NULL
138992 +disable_so_iwl_mvm_sta_send_to_fw_fndecl_42633 iwl_mvm_sta_send_to_fw fndecl 0 42633 NULL
138993 +disable_so_find_rsb_dir_fndecl_42636 find_rsb_dir fndecl 0 42636 NULL
138994 +disable_so_e1000_read_eeprom_fndecl_42637 e1000_read_eeprom fndecl 0 42637 NULL
138995 +disable_so_crypt_ctr_cipher_fndecl_42652 crypt_ctr_cipher fndecl 0 42652 NULL
138996 +disable_so___i2c_add_numbered_adapter_fndecl_42670 __i2c_add_numbered_adapter fndecl 0 42670 NULL
138997 +disable_so_netlbl_unlhsh_remove_addr6_fndecl_42673 netlbl_unlhsh_remove_addr6 fndecl 0 42673 NULL
138998 +disable_so_ext4_trim_extent_fndecl_42684 ext4_trim_extent fndecl 0 42684 NULL
138999 +disable_so_uvesafb_set_par_fndecl_42685 uvesafb_set_par fndecl 0 42685 NULL
139000 +disable_so_sm501_init_dev_fndecl_42692 sm501_init_dev fndecl 0 42692 NULL
139001 +disable_so_isofs_read_inode_fndecl_42699 isofs_read_inode fndecl 0 42699 NULL
139002 +disable_so_rtl2832_sdr_probe_fndecl_42711 rtl2832_sdr_probe fndecl 0 42711 NULL
139003 +disable_so_try_read_node_fndecl_42720 try_read_node fndecl 0 42720 NULL
139004 +disable_so_tty_register_ldisc_fndecl_42726 tty_register_ldisc fndecl 0 42726 NULL
139005 +disable_so_brcmf_fil_bsscfg_data_get_fndecl_42728 brcmf_fil_bsscfg_data_get fndecl 0 42728 NULL
139006 +disable_so_em28xx_register_dvb_fndecl_42729 em28xx_register_dvb fndecl 0 42729 NULL
139007 +disable_so_vmw_resource_check_buffer_fndecl_42730 vmw_resource_check_buffer fndecl 0 42730 NULL
139008 +disable_so_cx8802_check_driver_fndecl_42732 cx8802_check_driver fndecl 0 42732 NULL nohasharray
139009 +disable_so_irq_domain_alloc_descs_fndecl_42732 irq_domain_alloc_descs fndecl 0 42732 &disable_so_cx8802_check_driver_fndecl_42732
139010 +disable_so_dma_ioctl_fndecl_42733 dma_ioctl fndecl 0 42733 NULL
139011 +disable_so_qib_diag_read_fndecl_42742 qib_diag_read fndecl 0 42742 NULL
139012 +disable_so_beiscsi_init_sgl_handle_fndecl_42760 beiscsi_init_sgl_handle fndecl 0 42760 NULL
139013 +disable_so_raw_getsockopt_fndecl_42762 raw_getsockopt fndecl 0 42762 NULL
139014 +disable_so_dbAllocDmapLev_fndecl_42765 dbAllocDmapLev fndecl 0 42765 NULL
139015 +disable_so_skb_size_pxa168_eth_private_42775 skb_size pxa168_eth_private 0 42775 NULL
139016 +disable_so_hsr_get_max_mtu_fndecl_42776 hsr_get_max_mtu fndecl 0 42776 NULL
139017 +disable_so___fib_lookup_fndecl_42784 __fib_lookup fndecl 0 42784 NULL
139018 +disable_so_dai_rsc_init_fndecl_42786 dai_rsc_init fndecl 0 42786 NULL
139019 +disable_so_hash_netport4_add_fndecl_42802 hash_netport4_add fndecl 0 42802 NULL
139020 +disable_so_snd_hdspm_create_pcm_fndecl_42809 snd_hdspm_create_pcm fndecl 0 42809 NULL
139021 +disable_so_n_tty_ioctl_helper_fndecl_42812 n_tty_ioctl_helper fndecl 0 42812 NULL
139022 +disable_so_tun_attach_fndecl_42817 tun_attach fndecl 0 42817 NULL
139023 +disable_so__ctl_eventreport_fndecl_42825 _ctl_eventreport fndecl 0 42825 NULL
139024 +disable_so___sock_create_fndecl_42838 __sock_create fndecl 0 42838 NULL
139025 +disable_so_hpwdt_change_timer_fndecl_42850 hpwdt_change_timer fndecl 0 42850 NULL
139026 +disable_so_do_load_xattr_datum_fndecl_42853 do_load_xattr_datum fndecl 0 42853 NULL
139027 +disable_so_associate_dev_fndecl_42854 associate_dev fndecl 0 42854 NULL nohasharray
139028 +disable_so_be_mbox_notify_fndecl_42854 be_mbox_notify fndecl 0 42854 &disable_so_associate_dev_fndecl_42854
139029 +disable_so_via_verify_command_stream_fndecl_42858 via_verify_command_stream fndecl 0 42858 NULL
139030 +disable_so_mmio_start_vmw_private_42869 mmio_start vmw_private 0 42869 NULL
139031 +disable_so_usblp_set_protocol_fndecl_42893 usblp_set_protocol fndecl 0 42893 NULL
139032 +disable_so_number_of_tds_fndecl_42895 number_of_tds fndecl 0 42895 NULL
139033 +disable_so_v4l2_m2m_streamon_fndecl_42902 v4l2_m2m_streamon fndecl 0 42902 NULL
139034 +disable_so_do_command_extended_fndecl_42913 do_command_extended fndecl 0 42913 NULL
139035 +disable_so_vlan_group_prealloc_vid_fndecl_42927 vlan_group_prealloc_vid fndecl 0 42927 NULL
139036 +disable_so_uwb_rc_dev_addr_assign_fndecl_42936 uwb_rc_dev_addr_assign fndecl 0 42936 NULL
139037 +disable_so_mc_vram_size_radeon_mc_42937 mc_vram_size radeon_mc 0 42937 NULL
139038 +disable_so_ast_driver_load_fndecl_42948 ast_driver_load fndecl 0 42948 NULL
139039 +disable_so_wl1251_acx_mem_map_fndecl_42965 wl1251_acx_mem_map fndecl 0 42965 NULL
139040 +disable_so_ttm_bo_add_ttm_fndecl_42976 ttm_bo_add_ttm fndecl 0 42976 NULL
139041 +disable_so_btrfs_make_block_group_fndecl_42978 btrfs_make_block_group fndecl 0 42978 NULL
139042 +disable_so___btrfs_update_delayed_inode_fndecl_42987 __btrfs_update_delayed_inode fndecl 0 42987 NULL nohasharray
139043 +disable_so_init_xattrs_fndecl_42987 init_xattrs fndecl 0 42987 &disable_so___btrfs_update_delayed_inode_fndecl_42987
139044 +disable_so_genl_validate_assign_mc_groups_fndecl_42994 genl_validate_assign_mc_groups fndecl 0 42994 NULL
139045 +disable_so_ad799x_update_scan_mode_fndecl_42995 ad799x_update_scan_mode fndecl 0 42995 NULL
139046 +disable_so_pqm_create_queue_fndecl_43004 pqm_create_queue fndecl 0 43004 NULL
139047 +disable_so_wiphy_verify_combinations_fndecl_43009 wiphy_verify_combinations fndecl 0 43009 NULL
139048 +disable_so_intel_plane_init_fndecl_43013 intel_plane_init fndecl 0 43013 NULL
139049 +disable_so_len_i2c_msg_43014 len i2c_msg 0 43014 NULL
139050 +disable_so_scs_init_hss_address_fndecl_43016 scs_init_hss_address fndecl 0 43016 NULL
139051 +disable_so_ethtool_get_stats_fndecl_43036 ethtool_get_stats fndecl 0 43036 NULL
139052 +disable_so_copy_page_to_iter_iovec_fndecl_43041 copy_page_to_iter_iovec fndecl 0 43041 NULL
139053 +disable_so_init_chip_wc_pat_fndecl_43043 init_chip_wc_pat fndecl 0 43043 NULL
139054 +disable_so_snd_echo_resume_fndecl_43062 snd_echo_resume fndecl 0 43062 NULL
139055 +disable_so_ioctl_fsthaw_fndecl_43067 ioctl_fsthaw fndecl 0 43067 NULL
139056 +disable_so_tp3780I_ReadWriteDspIStore_fndecl_43078 tp3780I_ReadWriteDspIStore fndecl 0 43078 NULL
139057 +disable_so_usbtv_video_init_fndecl_43080 usbtv_video_init fndecl 0 43080 NULL
139058 +disable_so_sabi_command_fndecl_43090 sabi_command fndecl 0 43090 NULL
139059 +disable_so__create_message_fndecl_43096 _create_message fndecl 0 43096 NULL
139060 +disable_so_sector_badblocks_43102 sector badblocks 0 43102 NULL
139061 +disable_so_isdn_net_force_dial_fndecl_43112 isdn_net_force_dial fndecl 0 43112 NULL
139062 +disable_so_result_sess_data_43115 result sess_data 0 43115 NULL
139063 +disable_so_jffs2_garbage_collect_pristine_fndecl_43116 jffs2_garbage_collect_pristine fndecl 0 43116 NULL
139064 +disable_so_sas_ata_init_fndecl_43120 sas_ata_init fndecl 0 43120 NULL
139065 +disable_so_name_cache_insert_fndecl_43125 name_cache_insert fndecl 0 43125 NULL
139066 +disable_so_journal_end_fndecl_43129 journal_end fndecl 0 43129 NULL
139067 +disable_so_efx_mtd_add_fndecl_43131 efx_mtd_add fndecl 0 43131 NULL
139068 +disable_so_pcol_try_alloc_fndecl_43148 pcol_try_alloc fndecl 0 43148 NULL
139069 +disable_so_xfs_rtmodify_range_fndecl_43150 xfs_rtmodify_range fndecl 0 43150 NULL nohasharray
139070 +disable_so_osst_write_trailer_fndecl_43150 osst_write_trailer fndecl 0 43150 &disable_so_xfs_rtmodify_range_fndecl_43150
139071 +disable_so__base_enable_msix_fndecl_43172 _base_enable_msix fndecl 0 43172 NULL
139072 +disable_so_ocfs2_validate_gd_parent_fndecl_43178 ocfs2_validate_gd_parent fndecl 0 43178 NULL nohasharray
139073 +disable_so_smb2_unlock_range_fndecl_43178 smb2_unlock_range fndecl 0 43178 &disable_so_ocfs2_validate_gd_parent_fndecl_43178
139074 +disable_so_stk1160_probe_fndecl_43182 stk1160_probe fndecl 0 43182 NULL
139075 +disable_so_max_pasids_amd_iommu_device_info_43184 max_pasids amd_iommu_device_info 0 43184 NULL
139076 +disable_so_ocfs2_info_freefrag_scan_chain_fndecl_43199 ocfs2_info_freefrag_scan_chain fndecl 0 43199 NULL
139077 +disable_so_cn_add_callback_fndecl_43207 cn_add_callback fndecl 0 43207 NULL
139078 +disable_so_snd_p16v_pcm_open_capture_channel_fndecl_43210 snd_p16v_pcm_open_capture_channel fndecl 0 43210 NULL
139079 +disable_so_radeon_atom_init_mc_reg_table_fndecl_43211 radeon_atom_init_mc_reg_table fndecl 0 43211 NULL nohasharray
139080 +disable_so_read_log_fndecl_43211 read_log fndecl 0 43211 &disable_so_radeon_atom_init_mc_reg_table_fndecl_43211
139081 +disable_so_usbatm_usb_probe_fndecl_43235 usbatm_usb_probe fndecl 0 43235 NULL
139082 +disable_so_dmar_enable_qi_fndecl_43236 dmar_enable_qi fndecl 0 43236 NULL
139083 +disable_so_wacom_query_device_fndecl_43238 wacom_query_device fndecl 0 43238 NULL
139084 +disable_so_send_write_fndecl_43242 send_write fndecl 0 43242 NULL nohasharray
139085 +disable_so_hdsp_check_for_firmware_fndecl_43242 hdsp_check_for_firmware fndecl 0 43242 &disable_so_send_write_fndecl_43242
139086 +disable_so_pt1_enable_ram_fndecl_43250 pt1_enable_ram fndecl 0 43250 NULL
139087 +disable_so_ssb_bus_pcibus_register_fndecl_43265 ssb_bus_pcibus_register fndecl 0 43265 NULL
139088 +disable_so_soc_new_compress_fndecl_43271 soc_new_compress fndecl 0 43271 NULL
139089 +disable_so_radeonfb_create_fndecl_43274 radeonfb_create fndecl 0 43274 NULL
139090 +disable_so_regspacing_si_sm_io_43277 regspacing si_sm_io 0 43277 NULL
139091 +disable_so_mwifiex_ret_802_11_ad_hoc_fndecl_43287 mwifiex_ret_802_11_ad_hoc fndecl 0 43287 NULL
139092 +disable_so_vnic_dev_classifier_fndecl_43292 vnic_dev_classifier fndecl 0 43292 NULL
139093 +disable_so_mwifiex_sdio_poll_card_status_fndecl_43304 mwifiex_sdio_poll_card_status fndecl 0 43304 NULL
139094 +disable_so_transfer_dma_urb_43305 transfer_dma urb 0 43305 NULL
139095 +disable_so_pcxhr_stop_pipes_fndecl_43307 pcxhr_stop_pipes fndecl 0 43307 NULL
139096 +disable_so_rio_request_outb_mbox_fndecl_43309 rio_request_outb_mbox fndecl 0 43309 NULL
139097 +disable_so_ocfs2_path_bh_journal_access_fndecl_43323 ocfs2_path_bh_journal_access fndecl 0 43323 NULL
139098 +disable_so_gigaset_initcshw_fndecl_43327 gigaset_initcshw fndecl 0 43327 NULL nohasharray
139099 +disable_so_cookie_v4_check_fndecl_43327 cookie_v4_check fndecl 0 43327 &disable_so_gigaset_initcshw_fndecl_43327
139100 +disable_so_qib_refresh_qsfp_cache_fndecl_43328 qib_refresh_qsfp_cache fndecl 0 43328 NULL
139101 +disable_so_wl12xx_cmd_role_enable_fndecl_43330 wl12xx_cmd_role_enable fndecl 0 43330 NULL
139102 +disable_so_add_corrupted_fndecl_43332 add_corrupted fndecl 0 43332 NULL
139103 +disable_so_setup_wear_reporting_fndecl_43336 setup_wear_reporting fndecl 0 43336 NULL
139104 +disable_so_batadv_softif_create_vlan_fndecl_43352 batadv_softif_create_vlan fndecl 0 43352 NULL
139105 +disable_so_qxl_fbdev_init_fndecl_43357 qxl_fbdev_init fndecl 0 43357 NULL
139106 +disable_so_efx_mcdi_await_completion_fndecl_43366 efx_mcdi_await_completion fndecl 0 43366 NULL
139107 +disable_so_regcache_lzo_decompress_cache_block_fndecl_43370 regcache_lzo_decompress_cache_block fndecl 0 43370 NULL
139108 +disable_so_compute_bitstructs_fndecl_43385 compute_bitstructs fndecl 0 43385 NULL
139109 +disable_so_xfrm_user_policy_fndecl_43390 xfrm_user_policy fndecl 0 43390 NULL
139110 +disable_so_t4_fw_initialize_fndecl_43401 t4_fw_initialize fndecl 0 43401 NULL
139111 +disable_so_amradio_set_mute_fndecl_43414 amradio_set_mute fndecl 0 43414 NULL
139112 +disable_so_emancipate_fndecl_43417 emancipate fndecl 0 43417 NULL
139113 +disable_so_tegra_spi_start_dma_based_transfer_fndecl_43421 tegra_spi_start_dma_based_transfer fndecl 0 43421 NULL
139114 +disable_so_vt_event_wait_ioctl_fndecl_43426 vt_event_wait_ioctl fndecl 0 43426 NULL
139115 +disable_so_ath10k_pci_hif_exchange_bmi_msg_fndecl_43429 ath10k_pci_hif_exchange_bmi_msg fndecl 0 43429 NULL
139116 +disable_so_offset_afs_call_43431 offset afs_call 0 43431 NULL
139117 +disable_so_ti_vsend_sync_fndecl_43435 ti_vsend_sync fndecl 0 43435 NULL
139118 +disable_so_ems_pcmcia_add_card_fndecl_43440 ems_pcmcia_add_card fndecl 0 43440 NULL
139119 +disable_so_mixart_load_elf_fndecl_43445 mixart_load_elf fndecl 0 43445 NULL
139120 +disable_so_xen_blkbk_map_fndecl_43447 xen_blkbk_map fndecl 0 43447 NULL
139121 +disable_so_mmc_send_cid_fndecl_43456 mmc_send_cid fndecl 0 43456 NULL
139122 +disable_so_aper_base_radeon_mc_43460 aper_base radeon_mc 0 43460 NULL
139123 +disable_so_pt1_probe_fndecl_43461 pt1_probe fndecl 0 43461 NULL
139124 +disable_so_mmio_base_phys_mb862xxfb_par_43476 mmio_base_phys mb862xxfb_par 0 43476 NULL
139125 +disable_so_cinergyt2_fe_read_status_fndecl_43479 cinergyt2_fe_read_status fndecl 0 43479 NULL
139126 +disable_so_ext4_ind_map_blocks_fndecl_43505 ext4_ind_map_blocks fndecl 0 43505 NULL
139127 +disable_so_dmi_id_init_fndecl_43507 dmi_id_init fndecl 0 43507 NULL
139128 +disable_so_cy8ctmg110_probe_fndecl_43515 cy8ctmg110_probe fndecl 0 43515 NULL
139129 +disable_so_ieee80211_set_probe_resp_fndecl_43519 ieee80211_set_probe_resp fndecl 0 43519 NULL
139130 +disable_so_dma_mask__MPT_ADAPTER_43525 dma_mask _MPT_ADAPTER 0 43525 NULL nohasharray
139131 +disable_so__iwl_dbgfs_rx_phyinfo_write_fndecl_43525 _iwl_dbgfs_rx_phyinfo_write fndecl 0 43525 &disable_so_dma_mask__MPT_ADAPTER_43525
139132 +disable_so_radeon_bo_kmap_fndecl_43526 radeon_bo_kmap fndecl 0 43526 NULL
139133 +disable_so_mei_amthif_read_start_fndecl_43534 mei_amthif_read_start fndecl 0 43534 NULL
139134 +disable_so_mwl8k_cmd_get_hw_spec_ap_fndecl_43537 mwl8k_cmd_get_hw_spec_ap fndecl 0 43537 NULL
139135 +disable_so_do_convert_fndecl_43548 do_convert fndecl 0 43548 NULL
139136 +disable_so_role_read_fndecl_43553 role_read fndecl 0 43553 NULL
139137 +disable_so_ipoib_mcast_attach_fndecl_43555 ipoib_mcast_attach fndecl 0 43555 NULL
139138 +disable_so_uea_boot_fndecl_43573 uea_boot fndecl 0 43573 NULL
139139 +disable_so_nilfs_segbuf_wait_fndecl_43577 nilfs_segbuf_wait fndecl 0 43577 NULL
139140 +disable_so_ethtool_get_module_info_fndecl_43586 ethtool_get_module_info fndecl 0 43586 NULL
139141 +disable_so___br_vlan_set_default_pvid_fndecl_43587 __br_vlan_set_default_pvid fndecl 0 43587 NULL
139142 +disable_so_sas_get_port_device_fndecl_43590 sas_get_port_device fndecl 0 43590 NULL
139143 +disable_so_i40e_add_del_fdir_ipv4_fndecl_43605 i40e_add_del_fdir_ipv4 fndecl 0 43605 NULL
139144 +disable_so_matroxfb_ioctl_fndecl_43609 matroxfb_ioctl fndecl 0 43609 NULL
139145 +disable_so_minor_usb_serial_port_43611 minor usb_serial_port 0 43611 NULL
139146 +disable_so_mlx4_en_validate_flow_fndecl_43612 mlx4_en_validate_flow fndecl 0 43612 NULL nohasharray
139147 +disable_so_phys_ctlmem_fst_card_info_43612 phys_ctlmem fst_card_info 0 43612 &disable_so_mlx4_en_validate_flow_fndecl_43612
139148 +disable_so_uwb_radio_start_fndecl_43613 uwb_radio_start fndecl 0 43613 NULL
139149 +disable_so_qnx4_block_map_fndecl_43615 qnx4_block_map fndecl 0 43615 NULL
139150 +disable_so_iscsit_add_reject_from_cmd_fndecl_43623 iscsit_add_reject_from_cmd fndecl 0 43623 NULL
139151 +disable_so_nvif_device_new_fndecl_43629 nvif_device_new fndecl 0 43629 NULL
139152 +disable_so_snd_hdsp_create_alsa_devices_fndecl_43633 snd_hdsp_create_alsa_devices fndecl 0 43633 NULL
139153 +disable_so_sdricoh_mmc_cmd_fndecl_43641 sdricoh_mmc_cmd fndecl 0 43641 NULL
139154 +disable_so_xhci_gen_setup_fndecl_43646 xhci_gen_setup fndecl 0 43646 NULL
139155 +disable_so_ext4_load_journal_fndecl_43650 ext4_load_journal fndecl 0 43650 NULL
139156 +disable_so___mem_cgroup_usage_register_event_fndecl_43660 __mem_cgroup_usage_register_event fndecl 0 43660 NULL
139157 +disable_so_usbnet_read_cmd_nopm_fndecl_43663 usbnet_read_cmd_nopm fndecl 0 43663 NULL
139158 +disable_so_snd_usb_pcm_check_knot_fndecl_43676 snd_usb_pcm_check_knot fndecl 0 43676 NULL
139159 +disable_so_watchdog_ioctl_fndecl_43677 watchdog_ioctl fndecl 0 43677 NULL
139160 +disable_so_acpi_memory_enable_device_fndecl_43679 acpi_memory_enable_device fndecl 0 43679 NULL
139161 +disable_so_width_mxr_crop_43682 width mxr_crop 0 43682 NULL
139162 +disable_so_rfcomm_sock_getsockopt_fndecl_43685 rfcomm_sock_getsockopt fndecl 0 43685 NULL
139163 +disable_so_insert_tree_block_ref_fndecl_43700 insert_tree_block_ref fndecl 0 43700 NULL
139164 +disable_so_usb6fire_fw_fpga_write_fndecl_43705 usb6fire_fw_fpga_write fndecl 0 43705 NULL nohasharray
139165 +disable_so_qlcnic_83xx_copy_fw_file_fndecl_43705 qlcnic_83xx_copy_fw_file fndecl 0 43705 &disable_so_usb6fire_fw_fpga_write_fndecl_43705
139166 +disable_so_btrfsic_process_superblock_fndecl_43718 btrfsic_process_superblock fndecl 0 43718 NULL
139167 +disable_so_gt683r_leds_set_fndecl_43720 gt683r_leds_set fndecl 0 43720 NULL
139168 +disable_so_wl12xx_cmd_remove_peer_fndecl_43721 wl12xx_cmd_remove_peer fndecl 0 43721 NULL
139169 +disable_so_uwb_rc_addr_set_fndecl_43736 uwb_rc_addr_set fndecl 0 43736 NULL
139170 +disable_so_br2684_create_fndecl_43751 br2684_create fndecl 0 43751 NULL
139171 +disable_so_rivafb_check_var_fndecl_43757 rivafb_check_var fndecl 0 43757 NULL
139172 +disable_so_nvkm_i2c_port_create__fndecl_43770 nvkm_i2c_port_create_ fndecl 0 43770 NULL
139173 +disable_so_ipmi_validate_addr_fndecl_43771 ipmi_validate_addr fndecl 0 43771 NULL
139174 +disable_so_acpi_ns_externalize_name_fndecl_43773 acpi_ns_externalize_name fndecl 0 43773 NULL
139175 +disable_so_mlx4_ib_alloc_demux_ctx_fndecl_43775 mlx4_ib_alloc_demux_ctx fndecl 0 43775 NULL
139176 +disable_so_xfs_trans_reserve_fndecl_43809 xfs_trans_reserve fndecl 0 43809 NULL
139177 +disable_so_connlimit_mt_check_fndecl_43817 connlimit_mt_check fndecl 0 43817 NULL
139178 +disable_so___vb2_perform_fileio_fndecl_43818 __vb2_perform_fileio fndecl 0 43818 NULL
139179 +disable_so_rx_buf_size_c2_port_43822 rx_buf_size c2_port 0 43822 NULL
139180 +disable_so_kvm_ioapic_init_fndecl_43829 kvm_ioapic_init fndecl 0 43829 NULL
139181 +disable_so_applesmc_init_smcreg_try_fndecl_43836 applesmc_init_smcreg_try fndecl 0 43836 NULL
139182 +disable_so___sctp_connect_fndecl_43839 __sctp_connect fndecl 0 43839 NULL
139183 +disable_so_run_delayed_tree_ref_fndecl_43857 run_delayed_tree_ref fndecl 0 43857 NULL
139184 +disable_so_ethtool_phys_id_fndecl_43865 ethtool_phys_id fndecl 0 43865 NULL
139185 +disable_so_nfs4_grow_slot_table_fndecl_43866 nfs4_grow_slot_table fndecl 0 43866 NULL
139186 +disable_so_scan_peb_fndecl_43871 scan_peb fndecl 0 43871 NULL
139187 +disable_so_snd_emu10k1_icode_poke_fndecl_43877 snd_emu10k1_icode_poke fndecl 0 43877 NULL
139188 +disable_so_fritzpci_probe_fndecl_43885 fritzpci_probe fndecl 0 43885 NULL
139189 +disable_so_m_logbsize_xfs_mount_43888 m_logbsize xfs_mount 0 43888 NULL
139190 +disable_so_find_extent_in_eb_fndecl_43897 find_extent_in_eb fndecl 0 43897 NULL
139191 +disable_so_w6692_probe_fndecl_43901 w6692_probe fndecl 0 43901 NULL
139192 +disable_so_cirrus_modeset_init_fndecl_43905 cirrus_modeset_init fndecl 0 43905 NULL
139193 +disable_so_atc_pcm_capture_get_resources_fndecl_43906 atc_pcm_capture_get_resources fndecl 0 43906 NULL
139194 +disable_so_ipxrtr_delete_fndecl_43910 ipxrtr_delete fndecl 0 43910 NULL
139195 +disable_so_ethtool_set_dump_fndecl_43917 ethtool_set_dump fndecl 0 43917 NULL
139196 +disable_so_rocker_probe_port_fndecl_43936 rocker_probe_port fndecl 0 43936 NULL
139197 +disable_so_sys_timer_create_fndecl_43937 sys_timer_create fndecl 0 43937 NULL
139198 +disable_so_sddr09_readX_fndecl_43951 sddr09_readX fndecl 0 43951 NULL
139199 +disable_so_brcmf_fil_cmd_data_set_fndecl_43952 brcmf_fil_cmd_data_set fndecl 0 43952 NULL
139200 +disable_so_rx_ring_count_igb_adapter_43964 rx_ring_count igb_adapter 0 43964 NULL
139201 +disable_so_pci_create_sysfs_dev_files_fndecl_43968 pci_create_sysfs_dev_files fndecl 0 43968 NULL
139202 +disable_so_qib_user_sdma_pin_pkt_fndecl_43973 qib_user_sdma_pin_pkt fndecl 0 43973 NULL
139203 +disable_so_dma_set_mask_fndecl_43991 dma_set_mask fndecl 0 43991 NULL
139204 +disable_so_pvm_determine_end_fndecl_43995 pvm_determine_end fndecl 0 43995 NULL
139205 +disable_so_pinctrl_get_group_pins_fndecl_44001 pinctrl_get_group_pins fndecl 0 44001 NULL
139206 +disable_so_nvkm_device_create__fndecl_44008 nvkm_device_create_ fndecl 0 44008 NULL
139207 +disable_so_cinergyt2_power_ctrl_fndecl_44015 cinergyt2_power_ctrl fndecl 0 44015 NULL
139208 +disable_so__kstrtoull_fndecl_44018 _kstrtoull fndecl 0 44018 NULL
139209 +disable_so_brcmf_sdiod_set_sbaddr_window_fndecl_44019 brcmf_sdiod_set_sbaddr_window fndecl 0 44019 NULL
139210 +disable_so_update_output_line_level_fndecl_44026 update_output_line_level fndecl 0 44026 NULL
139211 +disable_so_nilfs_segctor_assign_fndecl_44027 nilfs_segctor_assign fndecl 0 44027 NULL nohasharray
139212 +disable_so_rx_buffer_truesize_efx_nic_44027 rx_buffer_truesize efx_nic 0 44027 &disable_so_nilfs_segctor_assign_fndecl_44027
139213 +disable_so_dg_create_handle_fndecl_44034 dg_create_handle fndecl 0 44034 NULL
139214 +disable_so_reserve_backup_gdb_fndecl_44038 reserve_backup_gdb fndecl 0 44038 NULL
139215 +disable_so_saa7146_register_device_fndecl_44040 saa7146_register_device fndecl 0 44040 NULL
139216 +disable_so_gru_dump_context_fndecl_44043 gru_dump_context fndecl 0 44043 NULL
139217 +disable_so_convert_extent_bit_fndecl_44046 convert_extent_bit fndecl 0 44046 NULL
139218 +disable_so_ep93xx_spi_calc_divisors_fndecl_44051 ep93xx_spi_calc_divisors fndecl 0 44051 NULL
139219 +disable_so_evdev_connect_fndecl_44067 evdev_connect fndecl 0 44067 NULL
139220 +disable_so_velocity_init_dma_rings_fndecl_44076 velocity_init_dma_rings fndecl 0 44076 NULL
139221 +disable_so_asd_register_sas_ha_fndecl_44081 asd_register_sas_ha fndecl 0 44081 NULL nohasharray
139222 +disable_so_rds_ib_recv_alloc_caches_fndecl_44081 rds_ib_recv_alloc_caches fndecl 0 44081 &disable_so_asd_register_sas_ha_fndecl_44081
139223 +disable_so_nv50_display_flip_next_fndecl_44090 nv50_display_flip_next fndecl 0 44090 NULL
139224 +disable_so_xdr_decode_array2_fndecl_44099 xdr_decode_array2 fndecl 0 44099 NULL nohasharray
139225 +disable_so_gnttab_claim_grant_reference_fndecl_44099 gnttab_claim_grant_reference fndecl 0 44099 &disable_so_xdr_decode_array2_fndecl_44099
139226 +disable_so_payload_sz_storvsc_cmd_request_44107 payload_sz storvsc_cmd_request 0 44107 NULL
139227 +disable_so_kvm_vm_ioctl_deassign_device_fndecl_44112 kvm_vm_ioctl_deassign_device fndecl 0 44112 NULL
139228 +disable_so_va1j5jf8007s_prepare_fndecl_44119 va1j5jf8007s_prepare fndecl 0 44119 NULL
139229 +disable_so_cfg80211_ibss_wext_join_fndecl_44122 cfg80211_ibss_wext_join fndecl 0 44122 NULL
139230 +disable_so_gfs2_meta_wait_fndecl_44126 gfs2_meta_wait fndecl 0 44126 NULL
139231 +disable_so_ext4_mb_get_buddy_page_lock_fndecl_44127 ext4_mb_get_buddy_page_lock fndecl 0 44127 NULL
139232 +disable_so_ethtool_get_coalesce_fndecl_44129 ethtool_get_coalesce fndecl 0 44129 NULL
139233 +disable_so_btrfs_defrag_file_fndecl_44130 btrfs_defrag_file fndecl 0 44130 NULL
139234 +disable_so_pch_gbe_setup_rx_resources_fndecl_44135 pch_gbe_setup_rx_resources fndecl 0 44135 NULL
139235 +disable_so_base_nforce2_smbus_44136 base nforce2_smbus 0 44136 NULL
139236 +disable_so_copy_siginfo_to_user_fndecl_44139 copy_siginfo_to_user fndecl 0 44139 NULL
139237 +disable_so_sctp_cmd_send_msg_fndecl_44144 sctp_cmd_send_msg fndecl 0 44144 NULL
139238 +disable_so_enic_dev_wait_fndecl_44152 enic_dev_wait fndecl 0 44152 NULL
139239 +disable_so_vivid_fb_init_vidmode_fndecl_44154 vivid_fb_init_vidmode fndecl 0 44154 NULL
139240 +disable_so_btrfs_delayed_qgroup_accounting_fndecl_44171 btrfs_delayed_qgroup_accounting fndecl 0 44171 NULL
139241 +disable_so_snd_usb_create_mixer_fndecl_44173 snd_usb_create_mixer fndecl 0 44173 NULL
139242 +disable_so_acpi_ut_execute_UID_fndecl_44177 acpi_ut_execute_UID fndecl 0 44177 NULL
139243 +disable_so_pageprog_fndecl_44187 pageprog fndecl 0 44187 NULL
139244 +disable_so_bnx2_nvram_read_dword_fndecl_44194 bnx2_nvram_read_dword fndecl 0 44194 NULL
139245 +disable_so_twl4030_sih_setup_fndecl_44197 twl4030_sih_setup fndecl 0 44197 NULL
139246 +disable_so_btrfs_ioctl_clone_fndecl_44205 btrfs_ioctl_clone fndecl 0 44205 NULL
139247 +disable_so_ipw_load_firmware_fndecl_44208 ipw_load_firmware fndecl 0 44208 NULL
139248 +disable_so_adap_init0_config_fndecl_44236 adap_init0_config fndecl 0 44236 NULL
139249 +disable_so_au0828_init_isoc_fndecl_44238 au0828_init_isoc fndecl 0 44238 NULL
139250 +disable_so_snd_cmipci_pcm_new_fndecl_44243 snd_cmipci_pcm_new fndecl 0 44243 NULL
139251 +disable_so_make_rate_fndecl_44249 make_rate fndecl 0 44249 NULL
139252 +disable_so_s_cur_size_qib_qp_44254 s_cur_size qib_qp 0 44254 NULL
139253 +disable_so_ocfs2_reserve_new_metadata_blocks_fndecl_44277 ocfs2_reserve_new_metadata_blocks fndecl 0 44277 NULL
139254 +disable_so_x25_ioctl_fndecl_44278 x25_ioctl fndecl 0 44278 NULL
139255 +disable_so_new_raid_disk_md_rdev_44282 new_raid_disk md_rdev 0 44282 NULL
139256 +disable_so_rt2x00usb_vendor_request_fndecl_44301 rt2x00usb_vendor_request fndecl 0 44301 NULL
139257 +disable_so_dma_ops_area_alloc_fndecl_44307 dma_ops_area_alloc fndecl 0 44307 NULL
139258 +disable_so_rq_num_entries_c4iw_qp_attributes_44321 rq_num_entries c4iw_qp_attributes 0 44321 NULL
139259 +disable_so_jffs2_do_mount_fs_fndecl_44332 jffs2_do_mount_fs fndecl 0 44332 NULL
139260 +disable_so_vb2_dvb_register_bus_fndecl_44349 vb2_dvb_register_bus fndecl 0 44349 NULL
139261 +disable_so_brcmf_sdio_txpkt_prep_sg_fndecl_44354 brcmf_sdio_txpkt_prep_sg fndecl 0 44354 NULL
139262 +disable_so_unmap_and_move_huge_page_fndecl_44363 unmap_and_move_huge_page fndecl 0 44363 NULL
139263 +disable_so_qlcnic_sriov_vf_init_driver_fndecl_44364 qlcnic_sriov_vf_init_driver fndecl 0 44364 NULL
139264 +disable_so_s5p_mfc_reset_fndecl_44369 s5p_mfc_reset fndecl 0 44369 NULL
139265 +disable_so_snd_hdsp_set_defaults_fndecl_44374 snd_hdsp_set_defaults fndecl 0 44374 NULL
139266 +disable_so_asd_ms_get_phy_params_fndecl_44376 asd_ms_get_phy_params fndecl 0 44376 NULL
139267 +disable_so_top_frame_fndecl_44389 top_frame fndecl 0 44389 NULL
139268 +disable_so_wacom_setup_fndecl_44408 wacom_setup fndecl 0 44408 NULL
139269 +disable_so_mmc_test_check_result_fndecl_44411 mmc_test_check_result fndecl 0 44411 NULL
139270 +disable_so_iommu_calculate_agaw_fndecl_44419 iommu_calculate_agaw fndecl 0 44419 NULL
139271 +disable_so_ipath_write_fndecl_44429 ipath_write fndecl 0 44429 NULL
139272 +disable_so_drr_change_class_fndecl_44440 drr_change_class fndecl 0 44440 NULL
139273 +disable_so_ccid_initialize_builtins_fndecl_44443 ccid_initialize_builtins fndecl 0 44443 NULL
139274 +disable_so_alloc_cq_buf_fndecl_44454 alloc_cq_buf fndecl 0 44454 NULL
139275 +disable_so_do_replace_finish_fndecl_44456 do_replace_finish fndecl 0 44456 NULL
139276 +disable_so___get_inode_info_fndecl_44463 __get_inode_info fndecl 0 44463 NULL
139277 +disable_so_resize_stripes_fndecl_44481 resize_stripes fndecl 0 44481 NULL
139278 +disable_so_parse_audio_feature_unit_fndecl_44487 parse_audio_feature_unit fndecl 0 44487 NULL
139279 +disable_so_mspro_block_set_interface_fndecl_44488 mspro_block_set_interface fndecl 0 44488 NULL
139280 +disable_so_snd_opl3_set_connection_fndecl_44489 snd_opl3_set_connection fndecl 0 44489 NULL
139281 +disable_so_uvesafb_exec_fndecl_44490 uvesafb_exec fndecl 0 44490 NULL nohasharray
139282 +disable_so_parse_features_fndecl_44490 parse_features fndecl 0 44490 &disable_so_uvesafb_exec_fndecl_44490
139283 +disable_so_kone_get_firmware_version_fndecl_44493 kone_get_firmware_version fndecl 0 44493 NULL
139284 +disable_so_fill_meta_index_fndecl_44495 fill_meta_index fndecl 0 44495 NULL
139285 +disable_so_pm8001_chip_fw_flash_update_req_fndecl_44502 pm8001_chip_fw_flash_update_req fndecl 0 44502 NULL
139286 +disable_so_ftdi_elan_edset_setup_fndecl_44513 ftdi_elan_edset_setup fndecl 0 44513 NULL
139287 +disable_so_sddr09_read20_fndecl_44519 sddr09_read20 fndecl 0 44519 NULL
139288 +disable_so_wl12xx_cmd_role_start_ibss_fndecl_44522 wl12xx_cmd_role_start_ibss fndecl 0 44522 NULL
139289 +disable_so_ioctl_preallocate_fndecl_44526 ioctl_preallocate fndecl 0 44526 NULL
139290 +disable_so_insert_one_name_fndecl_44535 insert_one_name fndecl 0 44535 NULL
139291 +disable_so_hpsa_ioctl32_passthru_fndecl_44545 hpsa_ioctl32_passthru fndecl 0 44545 NULL
139292 +disable_so_evergreen_surface_check_fndecl_44549 evergreen_surface_check fndecl 0 44549 NULL
139293 +disable_so_btrfs_async_run_delayed_refs_fndecl_44571 btrfs_async_run_delayed_refs fndecl 0 44571 NULL
139294 +disable_so_assigned_device_enable_host_intx_fndecl_44608 assigned_device_enable_host_intx fndecl 0 44608 NULL
139295 +disable_so_reserve_ram_pages_type_fndecl_44609 reserve_ram_pages_type fndecl 0 44609 NULL
139296 +disable_so___register_pernet_operations_fndecl_44615 __register_pernet_operations fndecl 0 44615 NULL
139297 +disable_so_frontend_init_fndecl_44627 frontend_init fndecl 0 44627 NULL
139298 +disable_so_ipv6_flowlabel_opt_get_fndecl_44630 ipv6_flowlabel_opt_get fndecl 0 44630 NULL nohasharray
139299 +disable_so_prism2_config_fndecl_44630 prism2_config fndecl 0 44630 &disable_so_ipv6_flowlabel_opt_get_fndecl_44630
139300 +disable_so_osst_write_error_recovery_fndecl_44636 osst_write_error_recovery fndecl 0 44636 NULL
139301 +disable_so_ims_pcu_start_io_fndecl_44640 ims_pcu_start_io fndecl 0 44640 NULL
139302 +disable_so_process_request_key_err_fndecl_44647 process_request_key_err fndecl 0 44647 NULL
139303 +disable_so_queue_bulk_sg_tx_fndecl_44649 queue_bulk_sg_tx fndecl 0 44649 NULL
139304 +disable_so_tm6000_start_stream_fndecl_44650 tm6000_start_stream fndecl 0 44650 NULL
139305 +disable_so_pcxhr_write_io_num_reg_cont_fndecl_44653 pcxhr_write_io_num_reg_cont fndecl 0 44653 NULL
139306 +disable_so_ocfs2_find_victim_alloc_group_fndecl_44657 ocfs2_find_victim_alloc_group fndecl 0 44657 NULL nohasharray
139307 +disable_so_pch_gbe_setup_tx_resources_fndecl_44657 pch_gbe_setup_tx_resources fndecl 0 44657 &disable_so_ocfs2_find_victim_alloc_group_fndecl_44657
139308 +disable_so_overlay_cap_top_vivid_dev_44672 overlay_cap_top vivid_dev 0 44672 NULL
139309 +disable_so_iwl_hwrate_to_plcp_idx_fndecl_44674 iwl_hwrate_to_plcp_idx fndecl 0 44674 NULL
139310 +disable_so_xfpregs_set_fndecl_44680 xfpregs_set fndecl 0 44680 NULL
139311 +disable_so_small_smb2_init_fndecl_44684 small_smb2_init fndecl 0 44684 NULL
139312 +disable_so_wm0010_boot_fndecl_44713 wm0010_boot fndecl 0 44713 NULL
139313 +disable_so_altera_irscan_fndecl_44719 altera_irscan fndecl 0 44719 NULL
139314 +disable_so_validate_rulemsg_fndecl_44721 validate_rulemsg fndecl 0 44721 NULL
139315 +disable_so_register_netdevice_fndecl_44725 register_netdevice fndecl 0 44725 NULL
139316 +disable_so_tb_cfg_write_fndecl_44731 tb_cfg_write fndecl 0 44731 NULL
139317 +disable_so_ino_nilfs_recovery_block_44737 ino nilfs_recovery_block 0 44737 NULL
139318 +disable_so_lpfc_hba_init_link_fc_topology_fndecl_44740 lpfc_hba_init_link_fc_topology fndecl 0 44740 NULL
139319 +disable_so_neigh_alloc_fndecl_44743 neigh_alloc fndecl 0 44743 NULL
139320 +disable_so_check_inodes_fndecl_44750 check_inodes fndecl 0 44750 NULL nohasharray
139321 +disable_so_i915_gem_execbuffer_relocate_vma_fndecl_44750 i915_gem_execbuffer_relocate_vma fndecl 0 44750 &disable_so_check_inodes_fndecl_44750
139322 +disable_so_tps65912_device_init_fndecl_44751 tps65912_device_init fndecl 0 44751 NULL
139323 +disable_so_value_acpi_object_integer_44755 value acpi_object_integer 0 44755 NULL
139324 +disable_so_dev_sectors_mddev_44756 dev_sectors mddev 0 44756 NULL
139325 +disable_so_cb710_mmc_send_fndecl_44773 cb710_mmc_send fndecl 0 44773 NULL
139326 +disable_so_nbp_vlan_add_fndecl_44783 nbp_vlan_add fndecl 0 44783 NULL
139327 +disable_so_read_bunzip_fndecl_44792 read_bunzip fndecl 0 44792 NULL
139328 +disable_so_vfio_alloc_group_minor_fndecl_44794 vfio_alloc_group_minor fndecl 0 44794 NULL
139329 +disable_so_ethtool_set_pauseparam_fndecl_44798 ethtool_set_pauseparam fndecl 0 44798 NULL
139330 +disable_so_hid_open_report_fndecl_44800 hid_open_report fndecl 0 44800 NULL
139331 +disable_so_copy_user_transitions_fndecl_44801 copy_user_transitions fndecl 0 44801 NULL
139332 +disable_so_fd_locked_ioctl_fndecl_44809 fd_locked_ioctl fndecl 0 44809 NULL nohasharray
139333 +disable_so_ext3_get_acl_fndecl_44809 ext3_get_acl fndecl 0 44809 &disable_so_fd_locked_ioctl_fndecl_44809
139334 +disable_so_set_extent_delalloc_fndecl_44813 set_extent_delalloc fndecl 0 44813 NULL
139335 +disable_so_mixart_wait_nice_for_register_value_fndecl_44816 mixart_wait_nice_for_register_value fndecl 0 44816 NULL
139336 +disable_so_rssd_disk_name_format_fndecl_44819 rssd_disk_name_format fndecl 0 44819 NULL
139337 +disable_so_cluster_pages_for_defrag_fndecl_44823 cluster_pages_for_defrag fndecl 0 44823 NULL
139338 +disable_so_get_evtchn_to_irq_fndecl_44824 get_evtchn_to_irq fndecl 0 44824 NULL
139339 +disable_so_si470x_start_fndecl_44835 si470x_start fndecl 0 44835 NULL
139340 +disable_so_wlcore_cmd_configure_failsafe_fndecl_44839 wlcore_cmd_configure_failsafe fndecl 0 44839 NULL
139341 +disable_so_xt_compat_match_offset_fndecl_44840 xt_compat_match_offset fndecl 0 44840 NULL
139342 +disable_so_pt1_reset_ram_fndecl_44842 pt1_reset_ram fndecl 0 44842 NULL
139343 +disable_so_spi_sh_receive_fndecl_44846 spi_sh_receive fndecl 0 44846 NULL
139344 +disable_so_snd_compr_ioctl_avail_fndecl_44854 snd_compr_ioctl_avail fndecl 0 44854 NULL
139345 +disable_so_drm_gem_handle_create_fndecl_44855 drm_gem_handle_create fndecl 0 44855 NULL
139346 +disable_so_ecryptfs_cipher_code_to_string_fndecl_44859 ecryptfs_cipher_code_to_string fndecl 0 44859 NULL
139347 +disable_so_create_message_fndecl_44864 create_message fndecl 0 44864 NULL nohasharray
139348 +disable_so_statfs_by_dentry_fndecl_44864 statfs_by_dentry fndecl 0 44864 &disable_so_create_message_fndecl_44864 nohasharray
139349 +disable_so_wl1271_scan_sched_scan_start_fndecl_44864 wl1271_scan_sched_scan_start fndecl 0 44864 &disable_so_statfs_by_dentry_fndecl_44864
139350 +disable_so_moxa_load_code_fndecl_44865 moxa_load_code fndecl 0 44865 NULL nohasharray
139351 +disable_so_pmcraid_build_passthrough_ioadls_fndecl_44865 pmcraid_build_passthrough_ioadls fndecl 0 44865 &disable_so_moxa_load_code_fndecl_44865
139352 +disable_so_intel_setup_irq_remapping_fndecl_44868 intel_setup_irq_remapping fndecl 0 44868 NULL
139353 +disable_so_pcxhr_send_it_dsp_fndecl_44872 pcxhr_send_it_dsp fndecl 0 44872 NULL
139354 +disable_so_i1480_fw_upload_fndecl_44875 i1480_fw_upload fndecl 0 44875 NULL
139355 +disable_so_mtrr_add_page_fndecl_44881 mtrr_add_page fndecl 0 44881 NULL
139356 +disable_so_map_size_bnad_rx_unmap_q_44889 map_size bnad_rx_unmap_q 0 44889 NULL
139357 +disable_so_inst_evtlog_size_iwl_fw_44893 inst_evtlog_size iwl_fw 0 44893 NULL
139358 +disable_so_ath6kl_bmi_init_fndecl_44904 ath6kl_bmi_init fndecl 0 44904 NULL
139359 +disable_so_wacom_i2c_probe_fndecl_44906 wacom_i2c_probe fndecl 0 44906 NULL
139360 +disable_so_add_vol_ctl_fndecl_44917 add_vol_ctl fndecl 0 44917 NULL
139361 +disable_so_put_v4l2_window32_fndecl_44930 put_v4l2_window32 fndecl 0 44930 NULL
139362 +disable_so_ipath_user_sdma_pin_pages_fndecl_44935 ipath_user_sdma_pin_pages fndecl 0 44935 NULL
139363 +disable_so_pt1_do_enable_ram_fndecl_44941 pt1_do_enable_ram fndecl 0 44941 NULL
139364 +disable_so__xfs_log_force_lsn_fndecl_44944 _xfs_log_force_lsn fndecl 0 44944 NULL nohasharray
139365 +disable_so_acpiphp_max_busnr_fndecl_44944 acpiphp_max_busnr fndecl 0 44944 &disable_so__xfs_log_force_lsn_fndecl_44944
139366 +disable_so_sd_diptrs_gfs2_sbd_44954 sd_diptrs gfs2_sbd 0 44954 NULL
139367 +disable_so_snd_intel8x0m_chip_init_fndecl_44959 snd_intel8x0m_chip_init fndecl 0 44959 NULL
139368 +disable_so_kobject_add_varg_fndecl_44966 kobject_add_varg fndecl 0 44966 NULL nohasharray
139369 +disable_so_qib_diag_write_fndecl_44966 qib_diag_write fndecl 0 44966 &disable_so_kobject_add_varg_fndecl_44966
139370 +disable_so_rose_add_node_fndecl_44998 rose_add_node fndecl 0 44998 NULL
139371 +disable_so_erase_xfer_fndecl_45000 erase_xfer fndecl 0 45000 NULL
139372 +disable_so_bnx2fc_initiate_els_fndecl_45008 bnx2fc_initiate_els fndecl 0 45008 NULL
139373 +disable_so_video_usercopy_fndecl_45012 video_usercopy fndecl 0 45012 NULL
139374 +disable_so_wl1251_acx_sg_cfg_fndecl_45014 wl1251_acx_sg_cfg fndecl 0 45014 NULL
139375 +disable_so_spaceorb_connect_fndecl_45038 spaceorb_connect fndecl 0 45038 NULL
139376 +disable_so_small_smb_init_fndecl_45051 small_smb_init fndecl 0 45051 NULL
139377 +disable_so_sys_futimesat_fndecl_45070 sys_futimesat fndecl 0 45070 NULL
139378 +disable_so_i2400m_rx_setup_fndecl_45080 i2400m_rx_setup fndecl 0 45080 NULL
139379 +disable_so_stop_machine_fndecl_45082 stop_machine fndecl 0 45082 NULL
139380 +disable_so_pci_bus_alloc_from_region_fndecl_45084 pci_bus_alloc_from_region fndecl 0 45084 NULL
139381 +disable_so__transport_phy_enable_fndecl_45090 _transport_phy_enable fndecl 0 45090 NULL
139382 +disable_so_b43_gphy_init_tssi2dbm_table_fndecl_45091 b43_gphy_init_tssi2dbm_table fndecl 0 45091 NULL
139383 +disable_so_size_emu_45109 size emu 0 45109 NULL
139384 +disable_so_ixgbe_dcbnl_ieee_setpfc_fndecl_45125 ixgbe_dcbnl_ieee_setpfc fndecl 0 45125 NULL
139385 +disable_so_img_x_zoran_jpg_settings_45135 img_x zoran_jpg_settings 0 45135 NULL
139386 +disable_so___qgroup_excl_accounting_fndecl_45141 __qgroup_excl_accounting fndecl 0 45141 NULL
139387 +disable_so_wl12xx_acx_config_hangover_fndecl_45142 wl12xx_acx_config_hangover fndecl 0 45142 NULL
139388 +disable_so_niu_rbr_add_page_fndecl_45158 niu_rbr_add_page fndecl 0 45158 NULL
139389 +disable_so_ubifs_garbage_collect_fndecl_45168 ubifs_garbage_collect fndecl 0 45168 NULL
139390 +disable_so_hackrf_probe_fndecl_45169 hackrf_probe fndecl 0 45169 NULL
139391 +disable_so_opticon_write_fndecl_45172 opticon_write fndecl 0 45172 NULL
139392 +disable_so_sel_write_checkreqprot_fndecl_45173 sel_write_checkreqprot fndecl 0 45173 NULL
139393 +disable_so_gfs2_bmap_alloc_fndecl_45189 gfs2_bmap_alloc fndecl 0 45189 NULL
139394 +disable_so_pci_max_pasids_fndecl_45190 pci_max_pasids fndecl 0 45190 NULL
139395 +disable_so_i_ipmi_request_fndecl_45208 i_ipmi_request fndecl 0 45208 NULL nohasharray
139396 +disable_so_apds990x_probe_fndecl_45208 apds990x_probe fndecl 0 45208 &disable_so_i_ipmi_request_fndecl_45208
139397 +disable_so_nvif_object_init_fndecl_45219 nvif_object_init fndecl 0 45219 NULL
139398 +disable_so_check_create_fndecl_45227 check_create fndecl 0 45227 NULL
139399 +disable_so_smscore_init_device_fndecl_45248 smscore_init_device fndecl 0 45248 NULL
139400 +disable_so_ext4_update_inline_data_fndecl_45259 ext4_update_inline_data fndecl 0 45259 NULL
139401 +disable_so_bcma_sprom_valid_fndecl_45264 bcma_sprom_valid fndecl 0 45264 NULL
139402 +disable_so_vmw_dmabuf_init_fndecl_45268 vmw_dmabuf_init fndecl 0 45268 NULL
139403 +disable_so_mgt_set_varlen_fndecl_45287 mgt_set_varlen fndecl 0 45287 NULL
139404 +disable_so_asus_setup_pci_hotplug_fndecl_45293 asus_setup_pci_hotplug fndecl 0 45293 NULL
139405 +disable_so_ch341_configure_fndecl_45298 ch341_configure fndecl 0 45298 NULL
139406 +disable_so_tipc_udp_enable_fndecl_45304 tipc_udp_enable fndecl 0 45304 NULL nohasharray
139407 +disable_so_hugetlbfs_read_actor_fndecl_45304 hugetlbfs_read_actor fndecl 0 45304 &disable_so_tipc_udp_enable_fndecl_45304
139408 +disable_so_ocrdma_nonemb_mbx_cmd_fndecl_45307 ocrdma_nonemb_mbx_cmd fndecl 0 45307 NULL
139409 +disable_so_dg_dispatch_as_host_fndecl_45310 dg_dispatch_as_host fndecl 0 45310 NULL
139410 +disable_so_parse_format_fndecl_45311 parse_format fndecl 0 45311 NULL
139411 +disable_so_blkcipher_walk_first_fndecl_45312 blkcipher_walk_first fndecl 0 45312 NULL
139412 +disable_so_rx_count_ethtool_channels_45313 rx_count ethtool_channels 0 45313 NULL
139413 +disable_so_parse_output_paths_fndecl_45317 parse_output_paths fndecl 0 45317 NULL
139414 +disable_so_kv_parse_sys_info_table_fndecl_45339 kv_parse_sys_info_table fndecl 0 45339 NULL
139415 +disable_so_rtsx_pci_init_chip_fndecl_45349 rtsx_pci_init_chip fndecl 0 45349 NULL
139416 +disable_so_hfsplus_listxattr_finder_info_fndecl_45352 hfsplus_listxattr_finder_info fndecl 0 45352 NULL
139417 +disable_so_iwl_dbgfs_ss_force_write_fndecl_45353 iwl_dbgfs_ss_force_write fndecl 0 45353 NULL
139418 +disable_so_efx_test_loopbacks_fndecl_45364 efx_test_loopbacks fndecl 0 45364 NULL
139419 +disable_so_mpt2sas_config_get_volume_handle_fndecl_45368 mpt2sas_config_get_volume_handle fndecl 0 45368 NULL
139420 +disable_so_get_urb_status_from_qtd_fndecl_45378 get_urb_status_from_qtd fndecl 0 45378 NULL
139421 +disable_so_carl9170_usb_load_firmware_fndecl_45384 carl9170_usb_load_firmware fndecl 0 45384 NULL
139422 +disable_so_xfs_btree_make_block_unfull_fndecl_45388 xfs_btree_make_block_unfull fndecl 0 45388 NULL
139423 +disable_so_crypto_shash_setkey_fndecl_45392 crypto_shash_setkey fndecl 0 45392 NULL
139424 +disable_so_broadsheet_spiflash_wait_for_status_fndecl_45393 broadsheet_spiflash_wait_for_status fndecl 0 45393 NULL nohasharray
139425 +disable_so_mmc_do_erase_fndecl_45393 mmc_do_erase fndecl 0 45393 &disable_so_broadsheet_spiflash_wait_for_status_fndecl_45393
139426 +disable_so_drm_mode_setcrtc_fndecl_45411 drm_mode_setcrtc fndecl 0 45411 NULL
139427 +disable_so_hpsa_getpciinfo_ioctl_fndecl_45423 hpsa_getpciinfo_ioctl fndecl 0 45423 NULL
139428 +disable_so_ddcb_cmd_fixups_fndecl_45427 ddcb_cmd_fixups fndecl 0 45427 NULL
139429 +disable_so_asus_wmi_led_init_fndecl_45428 asus_wmi_led_init fndecl 0 45428 NULL
139430 +disable_so_btcx_riscmem_alloc_fndecl_45439 btcx_riscmem_alloc fndecl 0 45439 NULL
139431 +disable_so_em28xx_write_ac97_fndecl_45441 em28xx_write_ac97 fndecl 0 45441 NULL
139432 +disable_so_solo_sysfs_init_fndecl_45442 solo_sysfs_init fndecl 0 45442 NULL
139433 +disable_so_qce_ablkcipher_register_one_fndecl_45458 qce_ablkcipher_register_one fndecl 0 45458 NULL
139434 +disable_so_cm_init_qp_rtr_attr_fndecl_45470 cm_init_qp_rtr_attr fndecl 0 45470 NULL
139435 +disable_so_getoptions_fndecl_45474 getoptions fndecl 0 45474 NULL
139436 +disable_so_gx_line_delta_fndecl_45476 gx_line_delta fndecl 0 45476 NULL nohasharray
139437 +disable_so_xfs_inumbers_fndecl_45476 xfs_inumbers fndecl 0 45476 &disable_so_gx_line_delta_fndecl_45476
139438 +disable_so_ni_convert_power_state_to_smc_fndecl_45477 ni_convert_power_state_to_smc fndecl 0 45477 NULL
139439 +disable_so_i_pos_fat_slot_info_45481 i_pos fat_slot_info 0 45481 NULL nohasharray
139440 +disable_so_led_tg_check_fndecl_45481 led_tg_check fndecl 0 45481 &disable_so_i_pos_fat_slot_info_45481
139441 +disable_so_tb_ctl_tx_fndecl_45492 tb_ctl_tx fndecl 0 45492 NULL
139442 +disable_so_gss_mech_svc_setup_fndecl_45499 gss_mech_svc_setup fndecl 0 45499 NULL
139443 +disable_so_iommu_init_domains_fndecl_45509 iommu_init_domains fndecl 0 45509 NULL
139444 +disable_so_serial_config_fndecl_45511 serial_config fndecl 0 45511 NULL
139445 +disable_so_x509_key_preparse_fndecl_45514 x509_key_preparse fndecl 0 45514 NULL
139446 +disable_so_ttm_set_pages_caching_fndecl_45519 ttm_set_pages_caching fndecl 0 45519 NULL
139447 +disable_so_mwifiex_cmd_mef_cfg_fndecl_45521 mwifiex_cmd_mef_cfg fndecl 0 45521 NULL
139448 +disable_so_inode_change_ok_fndecl_45525 inode_change_ok fndecl 0 45525 NULL
139449 +disable_so_callback_via_vardecl_platform_pci_c_45527 callback_via vardecl_platform-pci.c 0 45527 NULL
139450 +disable_so_ipw_queue_reset_fndecl_45531 ipw_queue_reset fndecl 0 45531 NULL
139451 +disable_so_efx_mcdi_rpc_fndecl_45535 efx_mcdi_rpc fndecl 0 45535 NULL
139452 +disable_so_rtsx_usb_bulk_transfer_sglist_fndecl_45538 rtsx_usb_bulk_transfer_sglist fndecl 0 45538 NULL
139453 +disable_so_ibmasm_send_driver_vpd_fndecl_45563 ibmasm_send_driver_vpd fndecl 0 45563 NULL
139454 +disable_so_ethtool_get_strings_fndecl_45564 ethtool_get_strings fndecl 0 45564 NULL
139455 +disable_so_syncinterval_snd_usb_endpoint_45567 syncinterval snd_usb_endpoint 0 45567 NULL
139456 +disable_so_rsi_init_sdio_slave_regs_fndecl_45577 rsi_init_sdio_slave_regs fndecl 0 45577 NULL
139457 +disable_so_slave_init_fndecl_45597 slave_init fndecl 0 45597 NULL
139458 +disable_so_zd1201_setconfig_fndecl_45612 zd1201_setconfig fndecl 0 45612 NULL
139459 +disable_so_drbd_adm_prepare_fndecl_45615 drbd_adm_prepare fndecl 0 45615 NULL
139460 +disable_so_resize_iovec_fndecl_45619 resize_iovec fndecl 0 45619 NULL
139461 +disable_so_ipw_fw_dma_wait_fndecl_45625 ipw_fw_dma_wait fndecl 0 45625 NULL
139462 +disable_so_convert_lock_fndecl_45629 convert_lock fndecl 0 45629 NULL
139463 +disable_so_kfd_parse_subtype_cache_fndecl_45635 kfd_parse_subtype_cache fndecl 0 45635 NULL
139464 +disable_so_send_eject_command_fndecl_45636 send_eject_command fndecl 0 45636 NULL
139465 +disable_so_codec_set_converter_stream_channel_fndecl_45637 codec_set_converter_stream_channel fndecl 0 45637 NULL
139466 +disable_so_write_mft_record_nolock_fndecl_45639 write_mft_record_nolock fndecl 0 45639 NULL
139467 +disable_so_samsung_rfkill_init_seclinux_fndecl_45649 samsung_rfkill_init_seclinux fndecl 0 45649 NULL nohasharray
139468 +disable_so_send_iosp_ext_cmd_fndecl_45649 send_iosp_ext_cmd fndecl 0 45649 &disable_so_samsung_rfkill_init_seclinux_fndecl_45649
139469 +disable_so___verify_planes_array_fndecl_45650 __verify_planes_array fndecl 0 45650 NULL nohasharray
139470 +disable_so_mlx4_en_uc_steer_add_fndecl_45650 mlx4_en_uc_steer_add fndecl 0 45650 &disable_so___verify_planes_array_fndecl_45650
139471 +disable_so_efi_status_to_err_fndecl_45653 efi_status_to_err fndecl 0 45653 NULL
139472 +disable_so_submit_bh_fndecl_45660 submit_bh fndecl 0 45660 NULL
139473 +disable_so_ocfs2_info_handle_journal_size_fndecl_45669 ocfs2_info_handle_journal_size fndecl 0 45669 NULL
139474 +disable_so_videobuf_dqbuf_fndecl_45673 videobuf_dqbuf fndecl 0 45673 NULL
139475 +disable_so_restart_transaction_fndecl_45677 restart_transaction fndecl 0 45677 NULL
139476 +disable_so_ib_umem_odp_map_dma_pages_fndecl_45679 ib_umem_odp_map_dma_pages fndecl 0 45679 NULL nohasharray
139477 +disable_so_lhead_offs_ubifs_info_45679 lhead_offs ubifs_info 0 45679 &disable_so_ib_umem_odp_map_dma_pages_fndecl_45679
139478 +disable_so_hfsplus_getxattr_finder_info_fndecl_45680 hfsplus_getxattr_finder_info fndecl 0 45680 NULL
139479 +disable_so_slip_init_fndecl_45681 slip_init fndecl 0 45681 NULL
139480 +disable_so_snd_pcm_oss_get_formats_fndecl_45685 snd_pcm_oss_get_formats fndecl 0 45685 NULL
139481 +disable_so_bdi_init_fndecl_45688 bdi_init fndecl 0 45688 NULL
139482 +disable_so_nvme_trans_copy_to_user_fndecl_45691 nvme_trans_copy_to_user fndecl 0 45691 NULL
139483 +disable_so___netdev_adjacent_dev_insert_fndecl_45697 __netdev_adjacent_dev_insert fndecl 0 45697 NULL
139484 +disable_so_shift_badblocks_45703 shift badblocks 0 45703 NULL
139485 +disable_so_check_overlay_src_fndecl_45705 check_overlay_src fndecl 0 45705 NULL
139486 +disable_so_iwl_poll_bit_fndecl_45708 iwl_poll_bit fndecl 0 45708 NULL
139487 +disable_so_zr36057_init_fndecl_45709 zr36057_init fndecl 0 45709 NULL
139488 +disable_so_do_splice_direct_fndecl_45710 do_splice_direct fndecl 0 45710 NULL
139489 +disable_so_st5481_setup_isocpipes_fndecl_45711 st5481_setup_isocpipes fndecl 0 45711 NULL
139490 +disable_so_iwlagn_disable_bss_fndecl_45735 iwlagn_disable_bss fndecl 0 45735 NULL
139491 +disable_so_drm_dev_register_fndecl_45742 drm_dev_register fndecl 0 45742 NULL
139492 +disable_so_err_tb_cfg_result_45744 err tb_cfg_result 0 45744 NULL nohasharray
139493 +disable_so___add_inline_refs_fndecl_45744 __add_inline_refs fndecl 0 45744 &disable_so_err_tb_cfg_result_45744
139494 +disable_so_pm8001_update_flash_fndecl_45754 pm8001_update_flash fndecl 0 45754 NULL
139495 +disable_so_t4_init_devlog_params_fndecl_45757 t4_init_devlog_params fndecl 0 45757 NULL nohasharray
139496 +disable_so_efx_ef10_filter_push_fndecl_45757 efx_ef10_filter_push fndecl 0 45757 &disable_so_t4_init_devlog_params_fndecl_45757
139497 +disable_so_minor_bsg_class_device_45761 minor bsg_class_device 0 45761 NULL
139498 +disable_so_size_entry_mwt_fndecl_45771 size_entry_mwt fndecl 0 45771 NULL
139499 +disable_so_efx_ef10_filter_table_probe_fndecl_45778 efx_ef10_filter_table_probe fndecl 0 45778 NULL
139500 +disable_so_r592_wait_status_fndecl_45781 r592_wait_status fndecl 0 45781 NULL
139501 +disable_so_get_inode_info_fndecl_45784 get_inode_info fndecl 0 45784 NULL
139502 +disable_so_i2c_r_fndecl_45804 i2c_r fndecl 0 45804 NULL
139503 +disable_so_i915_emit_box_fndecl_45807 i915_emit_box fndecl 0 45807 NULL
139504 +disable_so_ufx_ops_ioctl_fndecl_45817 ufx_ops_ioctl fndecl 0 45817 NULL
139505 +disable_so_usblp_wwait_fndecl_45818 usblp_wwait fndecl 0 45818 NULL
139506 +disable_so_xfs_zero_remaining_bytes_fndecl_45820 xfs_zero_remaining_bytes fndecl 0 45820 NULL
139507 +disable_so_ims_pcu_init_bootloader_mode_fndecl_45823 ims_pcu_init_bootloader_mode fndecl 0 45823 NULL
139508 +disable_so_c2_add_addr_fndecl_45842 c2_add_addr fndecl 0 45842 NULL
139509 +disable_so_mmc_read_switch_fndecl_45847 mmc_read_switch fndecl 0 45847 NULL
139510 +disable_so_xfs_rtallocate_extent_size_fndecl_45848 xfs_rtallocate_extent_size fndecl 0 45848 NULL
139511 +disable_so_mwifiex_alloc_sdio_mpa_buffers_fndecl_45874 mwifiex_alloc_sdio_mpa_buffers fndecl 0 45874 NULL
139512 +disable_so_index_cnt_btrfs_inode_45890 index_cnt btrfs_inode 0 45890 NULL
139513 +disable_so_joydev_open_device_fndecl_45904 joydev_open_device fndecl 0 45904 NULL nohasharray
139514 +disable_so_generic_file_direct_write_fndecl_45904 generic_file_direct_write fndecl 0 45904 &disable_so_joydev_open_device_fndecl_45904
139515 +disable_so_check_dev_fndecl_45912 check_dev fndecl 0 45912 NULL nohasharray
139516 +disable_so_samsung_new_rfkill_fndecl_45912 samsung_new_rfkill fndecl 0 45912 &disable_so_check_dev_fndecl_45912
139517 +disable_so_init_se_kmem_caches_fndecl_45918 init_se_kmem_caches fndecl 0 45918 NULL
139518 +disable_so_tw_connect_fndecl_45923 tw_connect fndecl 0 45923 NULL
139519 +disable_so_symtab_init_fndecl_45929 symtab_init fndecl 0 45929 NULL
139520 +disable_so_radeon_driver_load_fndecl_45937 radeon_driver_load fndecl 0 45937 NULL
139521 +disable_so_call_modprobe_fndecl_45949 call_modprobe fndecl 0 45949 NULL
139522 +disable_so_pccard_get_first_tuple_fndecl_45951 pccard_get_first_tuple fndecl 0 45951 NULL
139523 +disable_so_lmc_init_one_fndecl_45961 lmc_init_one fndecl 0 45961 NULL
139524 +disable_so_snd_pcm_update_hw_ptr0_fndecl_45967 snd_pcm_update_hw_ptr0 fndecl 0 45967 NULL
139525 +disable_so_qfq_change_class_fndecl_45970 qfq_change_class fndecl 0 45970 NULL
139526 +disable_so_allocate_method_table_fndecl_45986 allocate_method_table fndecl 0 45986 NULL
139527 +disable_so_up_fnode_45991 up fnode 0 45991 NULL
139528 +disable_so___hw_ppgtt_init_fndecl_45996 __hw_ppgtt_init fndecl 0 45996 NULL
139529 +disable_so_ath6kl_diag_read_fndecl_45998 ath6kl_diag_read fndecl 0 45998 NULL nohasharray
139530 +disable_so_eni_do_init_fndecl_45998 eni_do_init fndecl 0 45998 &disable_so_ath6kl_diag_read_fndecl_45998
139531 +disable_so_IO_Address_DAC960_Controller_45999 IO_Address DAC960_Controller 0 45999 NULL
139532 +disable_so_hsc_open_fndecl_46030 hsc_open fndecl 0 46030 NULL
139533 +disable_so_sram_test_pass_fndecl_46031 sram_test_pass fndecl 0 46031 NULL nohasharray
139534 +disable_so__unlock_lock_fndecl_46031 _unlock_lock fndecl 0 46031 &disable_so_sram_test_pass_fndecl_46031 nohasharray
139535 +disable_so_v4l2_device_register_subdev_fndecl_46031 v4l2_device_register_subdev fndecl 0 46031 &disable_so__unlock_lock_fndecl_46031
139536 +disable_so_setup_pci_fndecl_46035 setup_pci fndecl 0 46035 NULL
139537 +disable_so_cciss_passthru_fndecl_46037 cciss_passthru fndecl 0 46037 NULL
139538 +disable_so_i40e_add_del_fdir_fndecl_46046 i40e_add_del_fdir fndecl 0 46046 NULL nohasharray
139539 +disable_so_iguanair_probe_fndecl_46046 iguanair_probe fndecl 0 46046 &disable_so_i40e_add_del_fdir_fndecl_46046
139540 +disable_so_iwl_send_phy_cfg_cmd_fndecl_46055 iwl_send_phy_cfg_cmd fndecl 0 46055 NULL
139541 +disable_so_st_compression_fndecl_46066 st_compression fndecl 0 46066 NULL
139542 +disable_so_rxrpc_preparse_fndecl_46069 rxrpc_preparse fndecl 0 46069 NULL
139543 +disable_so_gameport_open_fndecl_46078 gameport_open fndecl 0 46078 NULL
139544 +disable_so___devcgroup_check_permission_fndecl_46082 __devcgroup_check_permission fndecl 0 46082 NULL
139545 +disable_so_dm_startblk_adfs_discmap_46088 dm_startblk adfs_discmap 0 46088 NULL
139546 +disable_so_create_multi_cap_vol_ctl_fndecl_46091 create_multi_cap_vol_ctl fndecl 0 46091 NULL
139547 +disable_so_iscsit_process_nop_out_fndecl_46108 iscsit_process_nop_out fndecl 0 46108 NULL
139548 +disable_so_kvm_vm_ioctl_set_memory_region_fndecl_46119 kvm_vm_ioctl_set_memory_region fndecl 0 46119 NULL
139549 +disable_so_eeepc_input_init_fndecl_46121 eeepc_input_init fndecl 0 46121 NULL
139550 +disable_so___team_option_inst_add_option_fndecl_46126 __team_option_inst_add_option fndecl 0 46126 NULL
139551 +disable_so_jffs2_decompress_fndecl_46129 jffs2_decompress fndecl 0 46129 NULL
139552 +disable_so_cciss_init_one_fndecl_46130 cciss_init_one fndecl 0 46130 NULL
139553 +disable_so_perf_copy_attr_fndecl_46131 perf_copy_attr fndecl 0 46131 NULL nohasharray
139554 +disable_so_base_amd_smbus_46131 base amd_smbus 0 46131 &disable_so_perf_copy_attr_fndecl_46131
139555 +disable_so_wacom_add_shared_data_fndecl_46134 wacom_add_shared_data fndecl 0 46134 NULL
139556 +disable_so_sriov_enable_fndecl_46138 sriov_enable fndecl 0 46138 NULL
139557 +disable_so_peak_usb_start_fndecl_46152 peak_usb_start fndecl 0 46152 NULL
139558 +disable_so_iommu_queue_command_fndecl_46167 iommu_queue_command fndecl 0 46167 NULL
139559 +disable_so_add_many_to_attr_set_fndecl_46197 add_many_to_attr_set fndecl 0 46197 NULL nohasharray
139560 +disable_so_length_usb_iso_packet_descriptor_46197 length usb_iso_packet_descriptor 0 46197 &disable_so_add_many_to_attr_set_fndecl_46197
139561 +disable_so_snd_interval_refine_set_fndecl_46199 snd_interval_refine_set fndecl 0 46199 NULL
139562 +disable_so_do_format_fndecl_46202 do_format fndecl 0 46202 NULL
139563 +disable_so_kfd_topology_get_crat_acpi_fndecl_46209 kfd_topology_get_crat_acpi fndecl 0 46209 NULL
139564 +disable_so_pt1_init_table_fndecl_46213 pt1_init_table fndecl 0 46213 NULL
139565 +disable_so_ocrdma_copy_qp_uresp_fndecl_46246 ocrdma_copy_qp_uresp fndecl 0 46246 NULL
139566 +disable_so_erst_clear_fndecl_46248 erst_clear fndecl 0 46248 NULL
139567 +disable_so_gspca_dev_probe2_fndecl_46250 gspca_dev_probe2 fndecl 0 46250 NULL
139568 +disable_so_sh_vou_probe_fndecl_46260 sh_vou_probe fndecl 0 46260 NULL nohasharray
139569 +disable_so_budget_attach_fndecl_46260 budget_attach fndecl 0 46260 &disable_so_sh_vou_probe_fndecl_46260
139570 +disable_so_desc_nr_md_rdev_46281 desc_nr md_rdev 0 46281 NULL
139571 +disable_so_intel_ring_wait_request_fndecl_46282 intel_ring_wait_request fndecl 0 46282 NULL
139572 +disable_so_regmap_raw_write_async_fndecl_46298 regmap_raw_write_async fndecl 0 46298 NULL
139573 +disable_so_con_font_op_fndecl_46302 con_font_op fndecl 0 46302 NULL
139574 +disable_so_osst_flush_buffer_fndecl_46324 osst_flush_buffer fndecl 0 46324 NULL nohasharray
139575 +disable_so_mgslpc_config_fndecl_46324 mgslpc_config fndecl 0 46324 &disable_so_osst_flush_buffer_fndecl_46324
139576 +disable_so_media_device_enum_links_fndecl_46327 media_device_enum_links fndecl 0 46327 NULL
139577 +disable_so_iwl_init_otp_access_fndecl_46341 iwl_init_otp_access fndecl 0 46341 NULL
139578 +disable_so_fs_path_ensure_buf_fndecl_46374 fs_path_ensure_buf fndecl 0 46374 NULL nohasharray
139579 +disable_so_snd_seq_write_fndecl_46374 snd_seq_write fndecl 0 46374 &disable_so_fs_path_ensure_buf_fndecl_46374
139580 +disable_so_atm_change_qos_fndecl_46375 atm_change_qos fndecl 0 46375 NULL
139581 +disable_so_efx_mcdi_get_board_cfg_fndecl_46378 efx_mcdi_get_board_cfg fndecl 0 46378 NULL
139582 +disable_so_ttm_bo_handle_move_mem_fndecl_46382 ttm_bo_handle_move_mem fndecl 0 46382 NULL
139583 +disable_so_fcp_avc_transaction_fndecl_46409 fcp_avc_transaction fndecl 0 46409 NULL
139584 +disable_so_load_free_space_cache_fndecl_46412 load_free_space_cache fndecl 0 46412 NULL
139585 +disable_so_t4vf_get_vpd_params_fndecl_46415 t4vf_get_vpd_params fndecl 0 46415 NULL
139586 +disable_so_proto_register_fndecl_46421 proto_register fndecl 0 46421 NULL
139587 +disable_so_chameleon_parse_gdd_fndecl_46427 chameleon_parse_gdd fndecl 0 46427 NULL
139588 +disable_so_rds_pin_pages_fndecl_46432 rds_pin_pages fndecl 0 46432 NULL
139589 +disable_so_len_acm_wb_46442 len acm_wb 0 46442 NULL
139590 +disable_so_btrfsic_process_superblock_dev_mirror_fndecl_46444 btrfsic_process_superblock_dev_mirror fndecl 0 46444 NULL
139591 +disable_so__iwl_dbgfs_bcast_filters_write_fndecl_46448 _iwl_dbgfs_bcast_filters_write fndecl 0 46448 NULL
139592 +disable_so_fb_base_phys_mb862xxfb_par_46449 fb_base_phys mb862xxfb_par 0 46449 NULL
139593 +disable_so_r8a66597_urb_enqueue_fndecl_46454 r8a66597_urb_enqueue fndecl 0 46454 NULL
139594 +disable_so_snd_seq_queue_timer_open_fndecl_46460 snd_seq_queue_timer_open fndecl 0 46460 NULL
139595 +disable_so_wl1271_cmd_set_sta_key_fndecl_46461 wl1271_cmd_set_sta_key fndecl 0 46461 NULL
139596 +disable_so_tea5764_i2c_probe_fndecl_46472 tea5764_i2c_probe fndecl 0 46472 NULL
139597 +disable_so_msix_setup_entries_fndecl_46474 msix_setup_entries fndecl 0 46474 NULL nohasharray
139598 +disable_so_idr_alloc_fndecl_46474 idr_alloc fndecl 0 46474 &disable_so_msix_setup_entries_fndecl_46474
139599 +disable_so_genwqe_execute_ddcb_fndecl_46477 genwqe_execute_ddcb fndecl 0 46477 NULL
139600 +disable_so_nla_put_nohdr_fndecl_46479 nla_put_nohdr fndecl 0 46479 NULL
139601 +disable_so_udp_add_offload_fndecl_46485 udp_add_offload fndecl 0 46485 NULL
139602 +disable_so_nfsd_cache_update_fndecl_46501 nfsd_cache_update fndecl 0 46501 NULL
139603 +disable_so_mos7840_get_reg_sync_fndecl_46514 mos7840_get_reg_sync fndecl 0 46514 NULL
139604 +disable_so_ipmi_register_smi_fndecl_46519 ipmi_register_smi fndecl 0 46519 NULL
139605 +disable_so_smssdio_probe_fndecl_46541 smssdio_probe fndecl 0 46541 NULL
139606 +disable_so_sc18is602_check_transfer_fndecl_46545 sc18is602_check_transfer fndecl 0 46545 NULL
139607 +disable_so_kvm_set_routing_entry_fndecl_46546 kvm_set_routing_entry fndecl 0 46546 NULL
139608 +disable_so_erasesize_shift_mtd_info_46565 erasesize_shift mtd_info 0 46565 NULL
139609 +disable_so_trusted_instantiate_fndecl_46575 trusted_instantiate fndecl 0 46575 NULL
139610 +disable_so_acpi_setter_handle_fndecl_46576 acpi_setter_handle fndecl 0 46576 NULL
139611 +disable_so_register_snapshot_fndecl_46577 register_snapshot fndecl 0 46577 NULL
139612 +disable_so_ocfs2_adjust_rightmost_branch_fndecl_46580 ocfs2_adjust_rightmost_branch fndecl 0 46580 NULL
139613 +disable_so_mtrr_write_fndecl_46581 mtrr_write fndecl 0 46581 NULL
139614 +disable_so_pvr2_read_register_fndecl_46595 pvr2_read_register fndecl 0 46595 NULL
139615 +disable_so_mmc_do_calc_max_discard_fndecl_46596 mmc_do_calc_max_discard fndecl 0 46596 NULL
139616 +disable_so_avc_denied_fndecl_46598 avc_denied fndecl 0 46598 NULL nohasharray
139617 +disable_so_acpi_ex_store_string_to_string_fndecl_46598 acpi_ex_store_string_to_string fndecl 0 46598 &disable_so_avc_denied_fndecl_46598
139618 +disable_so_uwb_rc_start_beacon_fndecl_46599 uwb_rc_start_beacon fndecl 0 46599 NULL
139619 +disable_so___btrfs_write_out_cache_fndecl_46609 __btrfs_write_out_cache fndecl 0 46609 NULL
139620 +disable_so_usbvision_read_reg_fndecl_46623 usbvision_read_reg fndecl 0 46623 NULL
139621 +disable_so_move_to_indirect_fndecl_46624 move_to_indirect fndecl 0 46624 NULL nohasharray
139622 +disable_so_radeon_bo_list_validate_fndecl_46624 radeon_bo_list_validate fndecl 0 46624 &disable_so_move_to_indirect_fndecl_46624
139623 +disable_so_radeon_cs_parser_init_fndecl_46625 radeon_cs_parser_init fndecl 0 46625 NULL
139624 +disable_so_dvd_read_struct_fndecl_46632 dvd_read_struct fndecl 0 46632 NULL
139625 +disable_so_arch_setup_msi_irqs_fndecl_46642 arch_setup_msi_irqs fndecl 0 46642 NULL nohasharray
139626 +disable_so_ip6mr_mfc_add_fndecl_46642 ip6mr_mfc_add fndecl 0 46642 &disable_so_arch_setup_msi_irqs_fndecl_46642
139627 +disable_so___hw_addr_del_fndecl_46652 __hw_addr_del fndecl 0 46652 NULL
139628 +disable_so_max_wr_ib_srq_attr_46680 max_wr ib_srq_attr 0 46680 NULL
139629 +disable_so_tc90522_probe_fndecl_46685 tc90522_probe fndecl 0 46685 NULL
139630 +disable_so_usb_ftdi_elan_edset_input_fndecl_46689 usb_ftdi_elan_edset_input fndecl 0 46689 NULL
139631 +disable_so_display_crc_ctl_write_fndecl_46690 display_crc_ctl_write fndecl 0 46690 NULL
139632 +disable_so_mlx4_ACCESS_MEM_fndecl_46714 mlx4_ACCESS_MEM fndecl 0 46714 NULL
139633 +disable_so_rionet_setup_netdev_fndecl_46717 rionet_setup_netdev fndecl 0 46717 NULL
139634 +disable_so_fw_core_add_address_handler_fndecl_46736 fw_core_add_address_handler fndecl 0 46736 NULL
139635 +disable_so_syscall_result_osst_buffer_46751 syscall_result osst_buffer 0 46751 NULL
139636 +disable_so_mlx4_slave_cmd_fndecl_46754 mlx4_slave_cmd fndecl 0 46754 NULL
139637 +disable_so_ecryptfs_write_inode_size_to_header_fndecl_46757 ecryptfs_write_inode_size_to_header fndecl 0 46757 NULL
139638 +disable_so_ipoctal_inst_slot_fndecl_46763 ipoctal_inst_slot fndecl 0 46763 NULL nohasharray
139639 +disable_so_mwifiex_del_mgmt_ies_fndecl_46763 mwifiex_del_mgmt_ies fndecl 0 46763 &disable_so_ipoctal_inst_slot_fndecl_46763
139640 +disable_so_rh_call_control_fndecl_46766 rh_call_control fndecl 0 46766 NULL
139641 +disable_so_tcp_md5_do_del_fndecl_46785 tcp_md5_do_del fndecl 0 46785 NULL
139642 +disable_so_ubi_eba_atomic_leb_change_fndecl_46792 ubi_eba_atomic_leb_change fndecl 0 46792 NULL
139643 +disable_so_siena_mtd_probe_fndecl_46802 siena_mtd_probe fndecl 0 46802 NULL
139644 +disable_so_mthca_alloc_resize_buf_fndecl_46841 mthca_alloc_resize_buf fndecl 0 46841 NULL
139645 +disable_so_b43_gphy_op_allocate_fndecl_46844 b43_gphy_op_allocate fndecl 0 46844 NULL
139646 +disable_so_radeon_ring_alloc_fndecl_46854 radeon_ring_alloc fndecl 0 46854 NULL
139647 +disable_so_cifs_sync_mid_result_fndecl_46863 cifs_sync_mid_result fndecl 0 46863 NULL nohasharray
139648 +disable_so_jbd2_journal_bmap_fndecl_46863 jbd2_journal_bmap fndecl 0 46863 &disable_so_cifs_sync_mid_result_fndecl_46863
139649 +disable_so_adu_probe_fndecl_46878 adu_probe fndecl 0 46878 NULL
139650 +disable_so_compat_ipmi_ioctl_fndecl_46887 compat_ipmi_ioctl fndecl 0 46887 NULL
139651 +disable_so_cifs_setup_session_fndecl_46892 cifs_setup_session fndecl 0 46892 NULL
139652 +disable_so_status_queued_ctx_46894 status queued_ctx 0 46894 NULL
139653 +disable_so_buffer_size_snd_urb_ctx_46897 buffer_size snd_urb_ctx 0 46897 NULL
139654 +disable_so_advansys_board_found_fndecl_46906 advansys_board_found fndecl 0 46906 NULL
139655 +disable_so_gfs2_quota_sync_fndecl_46928 gfs2_quota_sync fndecl 0 46928 NULL
139656 +disable_so_altera_wait_msecs_fndecl_46949 altera_wait_msecs fndecl 0 46949 NULL
139657 +disable_so_ebitmap_set_bit_fndecl_46955 ebitmap_set_bit fndecl 0 46955 NULL
139658 +disable_so_sctp_bindx_add_fndecl_46961 sctp_bindx_add fndecl 0 46961 NULL
139659 +disable_so_evergreen_surface_check_2d_fndecl_46966 evergreen_surface_check_2d fndecl 0 46966 NULL nohasharray
139660 +disable_so_can_queue_Scsi_Host_46966 can_queue Scsi_Host 0 46966 &disable_so_evergreen_surface_check_2d_fndecl_46966
139661 +disable_so_vivid_fb_init_fndecl_46969 vivid_fb_init fndecl 0 46969 NULL
139662 +disable_so_vcs_size_fndecl_46977 vcs_size fndecl 0 46977 NULL
139663 +disable_so_nouveau_channel_dma_fndecl_46980 nouveau_channel_dma fndecl 0 46980 NULL
139664 +disable_so_xfs_imap_to_bp_fndecl_46993 xfs_imap_to_bp fndecl 0 46993 NULL
139665 +disable_so_snd_usbmidi_in_endpoint_create_fndecl_46998 snd_usbmidi_in_endpoint_create fndecl 0 46998 NULL nohasharray
139666 +disable_so_skd_acquire_msix_fndecl_46998 skd_acquire_msix fndecl 0 46998 &disable_so_snd_usbmidi_in_endpoint_create_fndecl_46998
139667 +disable_so_buflen_cdrom_generic_command_47000 buflen cdrom_generic_command 0 47000 NULL
139668 +disable_so_update_slot_info_fndecl_47004 update_slot_info fndecl 0 47004 NULL
139669 +disable_so_my_dvb_dmx_ts_card_init_fndecl_47011 my_dvb_dmx_ts_card_init fndecl 0 47011 NULL
139670 +disable_so_y_offset_mxr_crop_47012 y_offset mxr_crop 0 47012 NULL
139671 +disable_so_va_start_vmap_area_47016 va_start vmap_area 0 47016 NULL
139672 +disable_so_pccard_get_tuple_data_fndecl_47026 pccard_get_tuple_data fndecl 0 47026 NULL
139673 +disable_so_cma_resolve_loopback_fndecl_47029 cma_resolve_loopback fndecl 0 47029 NULL
139674 +disable_so_dlm_try_to_join_domain_fndecl_47039 dlm_try_to_join_domain fndecl 0 47039 NULL
139675 +disable_so_cmd_rsv_establish_fndecl_47043 cmd_rsv_establish fndecl 0 47043 NULL
139676 +disable_so_ttm_bo_kmap_fndecl_47045 ttm_bo_kmap fndecl 0 47045 NULL nohasharray
139677 +disable_so_reserve_or_set_tx_fndecl_47045 reserve_or_set_tx fndecl 0 47045 &disable_so_ttm_bo_kmap_fndecl_47045
139678 +disable_so_parport_config_fndecl_47050 parport_config fndecl 0 47050 NULL
139679 +disable_so_pci_save_state_fndecl_47070 pci_save_state fndecl 0 47070 NULL
139680 +disable_so_asd_validate_ms_fndecl_47100 asd_validate_ms fndecl 0 47100 NULL
139681 +disable_so_spu_wait_for_u16_fndecl_47101 spu_wait_for_u16 fndecl 0 47101 NULL
139682 +disable_so_dmatest_func_fndecl_47120 dmatest_func fndecl 0 47120 NULL
139683 +disable_so_ath6kl_init_service_ep_fndecl_47121 ath6kl_init_service_ep fndecl 0 47121 NULL
139684 +disable_so_vb2_qbuf_fndecl_47124 vb2_qbuf fndecl 0 47124 NULL
139685 +disable_so_target_xcopy_write_destination_fndecl_47134 target_xcopy_write_destination fndecl 0 47134 NULL
139686 +disable_so_freq_cx88_core_47137 freq cx88_core 0 47137 NULL
139687 +disable_so_dmaengine_pcm_request_chan_of_fndecl_47172 dmaengine_pcm_request_chan_of fndecl 0 47172 NULL nohasharray
139688 +disable_so_vx_send_msg_fndecl_47172 vx_send_msg fndecl 0 47172 &disable_so_dmaengine_pcm_request_chan_of_fndecl_47172 nohasharray
139689 +disable_so_xt_compat_match_to_user_fndecl_47172 xt_compat_match_to_user fndecl 0 47172 &disable_so_vx_send_msg_fndecl_47172
139690 +disable_so__snd_ctl_add_slave_fndecl_47177 _snd_ctl_add_slave fndecl 0 47177 NULL
139691 +disable_so_nilfs_segbuf_submit_bh_fndecl_47184 nilfs_segbuf_submit_bh fndecl 0 47184 NULL
139692 +disable_so_adap_init0_fndecl_47189 adap_init0 fndecl 0 47189 NULL
139693 +disable_so_msix_count_qla_hw_data_47192 msix_count qla_hw_data 0 47192 NULL
139694 +disable_so_uvc_parse_format_fndecl_47194 uvc_parse_format fndecl 0 47194 NULL
139695 +disable_so_scsi_setup_command_freelist_fndecl_47196 scsi_setup_command_freelist fndecl 0 47196 NULL nohasharray
139696 +disable_so_max_inline_data_ib_qp_cap_47196 max_inline_data ib_qp_cap 0 47196 &disable_so_scsi_setup_command_freelist_fndecl_47196
139697 +disable_so_smsc75xx_bind_fndecl_47197 smsc75xx_bind fndecl 0 47197 NULL
139698 +disable_so_get_byte_fndecl_47224 get_byte fndecl 0 47224 NULL
139699 +disable_so_hfs_brec_read_fndecl_47226 hfs_brec_read fndecl 0 47226 NULL
139700 +disable_so_idt77252_init_rx_fndecl_47227 idt77252_init_rx fndecl 0 47227 NULL
139701 +disable_so_dtSplitUp_fndecl_47231 dtSplitUp fndecl 0 47231 NULL
139702 +disable_so___drbd_set_state_fndecl_47244 __drbd_set_state fndecl 0 47244 NULL
139703 +disable_so_fuse_reverse_inval_inode_fndecl_47245 fuse_reverse_inval_inode fndecl 0 47245 NULL
139704 +disable_so_xhci_init_fndecl_47246 xhci_init fndecl 0 47246 NULL
139705 +disable_so_translate_desc_fndecl_47247 translate_desc fndecl 0 47247 NULL
139706 +disable_so_seek_holedata_loop_fndecl_47256 seek_holedata_loop fndecl 0 47256 NULL
139707 +disable_so_snd_emux_init_hwdep_fndecl_47268 snd_emux_init_hwdep fndecl 0 47268 NULL
139708 +disable_so_em28xx_ir_init_fndecl_47270 em28xx_ir_init fndecl 0 47270 NULL
139709 +disable_so_qlt_add_target_fndecl_47271 qlt_add_target fndecl 0 47271 NULL
139710 +disable_so_progress_btrfs_caching_control_47276 progress btrfs_caching_control 0 47276 NULL
139711 +disable_so_rom_size_qxl_device_47287 rom_size qxl_device 0 47287 NULL
139712 +disable_so___wa_xfer_submit_fndecl_47289 __wa_xfer_submit fndecl 0 47289 NULL
139713 +disable_so_amd756_s4882_init_fndecl_47303 amd756_s4882_init fndecl 0 47303 NULL
139714 +disable_so_command_write_fndecl_47306 command_write fndecl 0 47306 NULL
139715 +disable_so_fb_set_cmap_fndecl_47321 fb_set_cmap fndecl 0 47321 NULL
139716 +disable_so_snd_asihpi_cmode_add_fndecl_47324 snd_asihpi_cmode_add fndecl 0 47324 NULL nohasharray
139717 +disable_so_fat_read_bpb_fndecl_47324 fat_read_bpb fndecl 0 47324 &disable_so_snd_asihpi_cmode_add_fndecl_47324
139718 +disable_so_tnc_read_node_nm_fndecl_47325 tnc_read_node_nm fndecl 0 47325 NULL
139719 +disable_so_ppp_mppe_init_fndecl_47329 ppp_mppe_init fndecl 0 47329 NULL
139720 +disable_so_hash_ipmark6_add_fndecl_47335 hash_ipmark6_add fndecl 0 47335 NULL
139721 +disable_so_iforce_init_device_fndecl_47342 iforce_init_device fndecl 0 47342 NULL
139722 +disable_so_hpfs_add_sector_to_btree_fndecl_47344 hpfs_add_sector_to_btree fndecl 0 47344 NULL
139723 +disable_so_asus_wmi_evaluate_method_fndecl_47346 asus_wmi_evaluate_method fndecl 0 47346 NULL
139724 +disable_so_ath6kl_wmi_send_action_cmd_fndecl_47359 ath6kl_wmi_send_action_cmd fndecl 0 47359 NULL
139725 +disable_so_radeon_sa_bo_new_fndecl_47372 radeon_sa_bo_new fndecl 0 47372 NULL
139726 +disable_so_ds_probe_fndecl_47375 ds_probe fndecl 0 47375 NULL
139727 +disable_so_nilfs_bmap_convert_error_fndecl_47376 nilfs_bmap_convert_error fndecl 0 47376 NULL
139728 +disable_so_find_best_unit_fndecl_47380 find_best_unit fndecl 0 47380 NULL
139729 +disable_so_tp_len_tpacket_hdr_47410 tp_len tpacket_hdr 0 47410 NULL
139730 +disable_so_xfs_btree_get_rec_fndecl_47417 xfs_btree_get_rec fndecl 0 47417 NULL
139731 +disable_so_lpfc_sli4_read_config_fndecl_47432 lpfc_sli4_read_config fndecl 0 47432 NULL
139732 +disable_so___vb2_init_fileio_fndecl_47435 __vb2_init_fileio fndecl 0 47435 NULL
139733 +disable_so_v4l2_m2m_reqbufs_fndecl_47446 v4l2_m2m_reqbufs fndecl 0 47446 NULL
139734 +disable_so_read_ext_index_list_fndecl_47464 read_ext_index_list fndecl 0 47464 NULL
139735 +disable_so_vfio_iommu_map_fndecl_47471 vfio_iommu_map fndecl 0 47471 NULL nohasharray
139736 +disable_so_qxl_bo_pin_fndecl_47471 qxl_bo_pin fndecl 0 47471 &disable_so_vfio_iommu_map_fndecl_47471
139737 +disable_so_bnad_mem_alloc_fndecl_47473 bnad_mem_alloc fndecl 0 47473 NULL
139738 +disable_so_xfs_mount_reset_sbqflags_fndecl_47479 xfs_mount_reset_sbqflags fndecl 0 47479 NULL nohasharray
139739 +disable_so_qib_write_umem64_fndecl_47479 qib_write_umem64 fndecl 0 47479 &disable_so_xfs_mount_reset_sbqflags_fndecl_47479
139740 +disable_so_touchit213_connect_fndecl_47480 touchit213_connect fndecl 0 47480 NULL
139741 +disable_so_tipc_enable_bearer_fndecl_47486 tipc_enable_bearer fndecl 0 47486 NULL
139742 +disable_so_nv50_curs_create_fndecl_47487 nv50_curs_create fndecl 0 47487 NULL nohasharray
139743 +disable_so_savage_verify_state_s3d_fndecl_47487 savage_verify_state_s3d fndecl 0 47487 &disable_so_nv50_curs_create_fndecl_47487
139744 +disable_so_cfg_reg_avm_hw_47488 cfg_reg avm_hw 0 47488 NULL
139745 +disable_so_mpu401_command_fndecl_47501 mpu401_command fndecl 0 47501 NULL
139746 +disable_so_mspro_block_probe_fndecl_47507 mspro_block_probe fndecl 0 47507 NULL
139747 +disable_so_nv50_dma_push_wait_fndecl_47508 nv50_dma_push_wait fndecl 0 47508 NULL
139748 +disable_so_tcf_hash_create_fndecl_47512 tcf_hash_create fndecl 0 47512 NULL
139749 +disable_so_get_free_devid_fndecl_47522 get_free_devid fndecl 0 47522 NULL
139750 +disable_so_iscsit_handle_text_cmd_fndecl_47528 iscsit_handle_text_cmd fndecl 0 47528 NULL
139751 +disable_so_ethtool_set_settings_fndecl_47545 ethtool_set_settings fndecl 0 47545 NULL
139752 +disable_so_fat_read_static_bpb_fndecl_47552 fat_read_static_bpb fndecl 0 47552 NULL
139753 +disable_so_move_block_contents_fndecl_47561 move_block_contents fndecl 0 47561 NULL
139754 +disable_so_ea_read_inline_fndecl_47566 ea_read_inline fndecl 0 47566 NULL
139755 +disable_so_dev_set_mac_address_fndecl_47579 dev_set_mac_address fndecl 0 47579 NULL nohasharray
139756 +disable_so_quota_getstate_fndecl_47579 quota_getstate fndecl 0 47579 &disable_so_dev_set_mac_address_fndecl_47579
139757 +disable_so_scsi_scan_host_selected_fndecl_47580 scsi_scan_host_selected fndecl 0 47580 NULL
139758 +disable_so_efx_mcdi_log_ctrl_fndecl_47589 efx_mcdi_log_ctrl fndecl 0 47589 NULL nohasharray
139759 +disable_so_write_reg_fndecl_47589 write_reg fndecl 0 47589 &disable_so_efx_mcdi_log_ctrl_fndecl_47589
139760 +disable_so_route4_set_parms_fndecl_47591 route4_set_parms fndecl 0 47591 NULL
139761 +disable_so_dir_logfs_transaction_47599 dir logfs_transaction 0 47599 NULL
139762 +disable_so_genwqe_unpin_mem_fndecl_47600 genwqe_unpin_mem fndecl 0 47600 NULL
139763 +disable_so_nilfs_cpfile_get_offset_fndecl_47642 nilfs_cpfile_get_offset fndecl 0 47642 NULL
139764 +disable_so_len_erase_info_47644 len erase_info 0 47644 NULL
139765 +disable_so_dlm_rcom_names_fndecl_47668 dlm_rcom_names fndecl 0 47668 NULL
139766 +disable_so_setup_window_fndecl_47673 setup_window fndecl 0 47673 NULL
139767 +disable_so_rtsx_pci_write_register_fndecl_47674 rtsx_pci_write_register fndecl 0 47674 NULL
139768 +disable_so_ksize_fndecl_47675 ksize fndecl 0 47675 NULL
139769 +disable_so_net_assign_generic_fndecl_47682 net_assign_generic fndecl 0 47682 NULL nohasharray
139770 +disable_so_height_v4l2_pix_format_47682 height v4l2_pix_format 0 47682 &disable_so_net_assign_generic_fndecl_47682
139771 +disable_so_parse_altstr_fndecl_47685 parse_altstr fndecl 0 47685 NULL
139772 +disable_so_batadv_hardif_min_mtu_fndecl_47691 batadv_hardif_min_mtu fndecl 0 47691 NULL
139773 +disable_so_vmw_validate_single_buffer_fndecl_47695 vmw_validate_single_buffer fndecl 0 47695 NULL
139774 +disable_so_gpu_mem_base_vml_par_47703 gpu_mem_base vml_par 0 47703 NULL
139775 +disable_so_at76_probe_fndecl_47704 at76_probe fndecl 0 47704 NULL
139776 +disable_so_spu_init_fndecl_47708 spu_init fndecl 0 47708 NULL
139777 +disable_so_ci_get_vbios_boot_values_fndecl_47709 ci_get_vbios_boot_values fndecl 0 47709 NULL
139778 +disable_so_wlcore_cmd_regdomain_config_locked_fndecl_47715 wlcore_cmd_regdomain_config_locked fndecl 0 47715 NULL
139779 +disable_so___logfs_write_inode_fndecl_47734 __logfs_write_inode fndecl 0 47734 NULL
139780 +disable_so_lpfc_sli4_queue_setup_fndecl_47737 lpfc_sli4_queue_setup fndecl 0 47737 NULL
139781 +disable_so__prepare_for_striping_fndecl_47739 _prepare_for_striping fndecl 0 47739 NULL
139782 +disable_so__transport_expander_phy_control_fndecl_47748 _transport_expander_phy_control fndecl 0 47748 NULL
139783 +disable_so_iwlagn_update_beacon_fndecl_47771 iwlagn_update_beacon fndecl 0 47771 NULL
139784 +disable_so_ctl_ioctl_fndecl_47777 ctl_ioctl fndecl 0 47777 NULL
139785 +disable_so_xfs_iformat_fork_fndecl_47779 xfs_iformat_fork fndecl 0 47779 NULL
139786 +disable_so___open_device_fndecl_47780 __open_device fndecl 0 47780 NULL nohasharray
139787 +disable_so_carminefb_probe_fndecl_47780 carminefb_probe fndecl 0 47780 &disable_so___open_device_fndecl_47780
139788 +disable_so_rx_ring_size_bnx2x_47784 rx_ring_size bnx2x 0 47784 NULL
139789 +disable_so_netdev_queue_update_kobjects_fndecl_47798 netdev_queue_update_kobjects fndecl 0 47798 NULL
139790 +disable_so_juli_init_fndecl_47805 juli_init fndecl 0 47805 NULL
139791 +disable_so_sock_diag_register_fndecl_47806 sock_diag_register fndecl 0 47806 NULL
139792 +disable_so_xenfb_probe_fndecl_47809 xenfb_probe fndecl 0 47809 NULL
139793 +disable_so_cypress_dpm_init_fndecl_47818 cypress_dpm_init fndecl 0 47818 NULL
139794 +disable_so_vfs_lock_file_fndecl_47826 vfs_lock_file fndecl 0 47826 NULL
139795 +disable_so_check_cond_jmp_op_fndecl_47831 check_cond_jmp_op fndecl 0 47831 NULL
139796 +disable_so_set_state_private_fndecl_47835 set_state_private fndecl 0 47835 NULL
139797 +disable_so_assoc_len_amp_ctrl_47844 assoc_len amp_ctrl 0 47844 NULL
139798 +disable_so_s5p_mfc_open_fndecl_47847 s5p_mfc_open fndecl 0 47847 NULL
139799 +disable_so_efx_mcdi_errno_fndecl_47854 efx_mcdi_errno fndecl 0 47854 NULL
139800 +disable_so_lpfc_bsg_diag_loopback_run_fndecl_47856 lpfc_bsg_diag_loopback_run fndecl 0 47856 NULL
139801 +disable_so_receive_DataRequest_fndecl_47864 receive_DataRequest fndecl 0 47864 NULL
139802 +disable_so_length_ar9170_stream_47870 length ar9170_stream 0 47870 NULL
139803 +disable_so_bcma_bus_register_fndecl_47875 bcma_bus_register fndecl 0 47875 NULL
139804 +disable_so_ipath_user_sdma_pin_pkt_fndecl_47878 ipath_user_sdma_pin_pkt fndecl 0 47878 NULL
139805 +disable_so_sd_format_disk_name_fndecl_47880 sd_format_disk_name fndecl 0 47880 NULL
139806 +disable_so_raw_ctl_compat_ioctl_fndecl_47882 raw_ctl_compat_ioctl fndecl 0 47882 NULL
139807 +disable_so_ntb_transport_init_queue_fndecl_47906 ntb_transport_init_queue fndecl 0 47906 NULL
139808 +disable_so_spi_map_msg_fndecl_47912 spi_map_msg fndecl 0 47912 NULL
139809 +disable_so_xfs_bmap_read_extents_fndecl_47915 xfs_bmap_read_extents fndecl 0 47915 NULL
139810 +disable_so_usb6fire_fw_ezusb_write_fndecl_47918 usb6fire_fw_ezusb_write fndecl 0 47918 NULL
139811 +disable_so_hackrf_ctrl_msg_fndecl_47923 hackrf_ctrl_msg fndecl 0 47923 NULL
139812 +disable_so_get_hub_descriptor_fndecl_47931 get_hub_descriptor fndecl 0 47931 NULL
139813 +disable_so_snd_usbmidi_create_fndecl_47939 snd_usbmidi_create fndecl 0 47939 NULL
139814 +disable_so_rsi_setupcard_fndecl_47940 rsi_setupcard fndecl 0 47940 NULL
139815 +disable_so_CIFS_SessSetup_fndecl_47947 CIFS_SessSetup fndecl 0 47947 NULL
139816 +disable_so_mtd_get_user_prot_info_fndecl_47948 mtd_get_user_prot_info fndecl 0 47948 NULL
139817 +disable_so_dlm_new_lockspace_fndecl_47954 dlm_new_lockspace fndecl 0 47954 NULL
139818 +disable_so_st5481_isoc_flatten_fndecl_47963 st5481_isoc_flatten fndecl 0 47963 NULL
139819 +disable_so_il3945_request_scan_fndecl_47969 il3945_request_scan fndecl 0 47969 NULL
139820 +disable_so_hdmi_mode_alternate_clock_fndecl_47981 hdmi_mode_alternate_clock fndecl 0 47981 NULL
139821 +disable_so_sas_ex_phy_discover_helper_fndecl_47989 sas_ex_phy_discover_helper fndecl 0 47989 NULL
139822 +disable_so_set_pasid_state_fndecl_47990 set_pasid_state fndecl 0 47990 NULL
139823 +disable_so_usbhs_mod_gadget_probe_fndecl_47992 usbhs_mod_gadget_probe fndecl 0 47992 NULL
139824 +disable_so_init_pci_cap_msi_perm_fndecl_48010 init_pci_cap_msi_perm fndecl 0 48010 NULL
139825 +disable_so_zpff_init_fndecl_48011 zpff_init fndecl 0 48011 NULL
139826 +disable_so_vmw_cmd_res_reloc_add_fndecl_48012 vmw_cmd_res_reloc_add fndecl 0 48012 NULL
139827 +disable_so_original_mtu_slave_48025 original_mtu slave 0 48025 NULL
139828 +disable_so_ttusbir_probe_fndecl_48037 ttusbir_probe fndecl 0 48037 NULL
139829 +disable_so_sb_size_md_rdev_48046 sb_size md_rdev 0 48046 NULL
139830 +disable_so_pt3_demod_write_fndecl_48051 pt3_demod_write fndecl 0 48051 NULL
139831 +disable_so_r600_cs_track_check_fndecl_48054 r600_cs_track_check fndecl 0 48054 NULL nohasharray
139832 +disable_so_prism54_set_genie_fndecl_48054 prism54_set_genie fndecl 0 48054 &disable_so_r600_cs_track_check_fndecl_48054
139833 +disable_so_xfs_mountfs_fndecl_48057 xfs_mountfs fndecl 0 48057 NULL
139834 +disable_so_ioctl_datasize_ips_ha_48058 ioctl_datasize ips_ha 0 48058 NULL
139835 +disable_so_asd_flash_getid_fndecl_48065 asd_flash_getid fndecl 0 48065 NULL
139836 +disable_so___netlink_dump_start_fndecl_48067 __netlink_dump_start fndecl 0 48067 NULL
139837 +disable_so_gspca_init_transfer_fndecl_48084 gspca_init_transfer fndecl 0 48084 NULL
139838 +disable_so_ide_probe_fndecl_48092 ide_probe fndecl 0 48092 NULL
139839 +disable_so_check_version_fndecl_48093 check_version fndecl 0 48093 NULL
139840 +disable_so_mac_fw_hdrs_push_fndecl_48102 mac_fw_hdrs_push fndecl 0 48102 NULL
139841 +disable_so_init_status_page_fndecl_48103 init_status_page fndecl 0 48103 NULL
139842 +disable_so_dspio_send_scp_message_fndecl_48106 dspio_send_scp_message fndecl 0 48106 NULL
139843 +disable_so_reserve_backup_gdb_fndecl_48112 reserve_backup_gdb fndecl 0 48112 NULL
139844 +disable_so_iwl_dbgfs_uapsd_misbehaving_write_fndecl_48133 iwl_dbgfs_uapsd_misbehaving_write fndecl 0 48133 NULL
139845 +disable_so_mem_read_fndecl_48140 mem_read fndecl 0 48140 NULL
139846 +disable_so_isdn_net_delphone_fndecl_48151 isdn_net_delphone fndecl 0 48151 NULL
139847 +disable_so_isdnhdlc_encode_fndecl_48155 isdnhdlc_encode fndecl 0 48155 NULL
139848 +disable_so_get_vpd_params_fndecl_48165 get_vpd_params fndecl 0 48165 NULL
139849 +disable_so_xfs_alloc_ag_vextent_near_fndecl_48166 xfs_alloc_ag_vextent_near fndecl 0 48166 NULL nohasharray
139850 +disable_so_ipmi_request_settime_fndecl_48166 ipmi_request_settime fndecl 0 48166 &disable_so_xfs_alloc_ag_vextent_near_fndecl_48166
139851 +disable_so_con_font_get_fndecl_48174 con_font_get fndecl 0 48174 NULL
139852 +disable_so_msi_compose_msg_fndecl_48182 msi_compose_msg fndecl 0 48182 NULL
139853 +disable_so_nvkm_fifo_create__fndecl_48184 nvkm_fifo_create_ fndecl 0 48184 NULL
139854 +disable_so_xres_virtual_fb_var_screeninfo_48196 xres_virtual fb_var_screeninfo 0 48196 NULL
139855 +disable_so_snd_rawmidi_transmit_ack_fndecl_48200 snd_rawmidi_transmit_ack fndecl 0 48200 NULL
139856 +disable_so_ethtool_get_ts_info_fndecl_48205 ethtool_get_ts_info fndecl 0 48205 NULL
139857 +disable_so_dev_mc_add_fndecl_48208 dev_mc_add fndecl 0 48208 NULL
139858 +disable_so_em28xx_i2c_register_fndecl_48218 em28xx_i2c_register fndecl 0 48218 NULL
139859 +disable_so_cur_inode_last_extent_send_ctx_48219 cur_inode_last_extent send_ctx 0 48219 NULL
139860 +disable_so_sm_mkoffset_fndecl_48229 sm_mkoffset fndecl 0 48229 NULL
139861 +disable_so_sd_select_driver_type_fndecl_48232 sd_select_driver_type fndecl 0 48232 NULL
139862 +disable_so_input_register_polled_device_fndecl_48235 input_register_polled_device fndecl 0 48235 NULL
139863 +disable_so_s1d13xxxfb_suspend_fndecl_48242 s1d13xxxfb_suspend fndecl 0 48242 NULL
139864 +disable_so_xfs_update_alignment_fndecl_48255 xfs_update_alignment fndecl 0 48255 NULL
139865 +disable_so_hot_remove_disk_fndecl_48260 hot_remove_disk fndecl 0 48260 NULL
139866 +disable_so_qlcnic_set_dma_mask_fndecl_48263 qlcnic_set_dma_mask fndecl 0 48263 NULL
139867 +disable_so__config_alloc_config_dma_memory_fndecl_48268 _config_alloc_config_dma_memory fndecl 0 48268 NULL
139868 +disable_so_sctp_init_fndecl_48273 sctp_init fndecl 0 48273 NULL
139869 +disable_so_i915_gem_object_get_pages_fndecl_48277 i915_gem_object_get_pages fndecl 0 48277 NULL
139870 +disable_so_bt_6lowpan_disconnect_fndecl_48279 bt_6lowpan_disconnect fndecl 0 48279 NULL nohasharray
139871 +disable_so_imm_init_fndecl_48279 imm_init fndecl 0 48279 &disable_so_bt_6lowpan_disconnect_fndecl_48279
139872 +disable_so_compat_sys_set_mempolicy_fndecl_48285 compat_sys_set_mempolicy fndecl 0 48285 NULL
139873 +disable_so_xt_check_match_fndecl_48290 xt_check_match fndecl 0 48290 NULL
139874 +disable_so_asd_read_flash_fndecl_48299 asd_read_flash fndecl 0 48299 NULL nohasharray
139875 +disable_so_receive_sizes_fndecl_48299 receive_sizes fndecl 0 48299 &disable_so_asd_read_flash_fndecl_48299
139876 +disable_so_mmc_send_csd_fndecl_48301 mmc_send_csd fndecl 0 48301 NULL
139877 +disable_so_apei_exec_collect_resources_fndecl_48303 apei_exec_collect_resources fndecl 0 48303 NULL
139878 +disable_so_add_waiting_dir_move_fndecl_48319 add_waiting_dir_move fndecl 0 48319 NULL
139879 +disable_so_acpi_efi_48328 acpi efi 0 48328 NULL
139880 +disable_so_snd_soc_add_codec_controls_fndecl_48331 snd_soc_add_codec_controls fndecl 0 48331 NULL
139881 +disable_so_generic_ptrace_peekdata_fndecl_48349 generic_ptrace_peekdata fndecl 0 48349 NULL
139882 +disable_so_evergreen_surface_check_linear_aligned_fndecl_48353 evergreen_surface_check_linear_aligned fndecl 0 48353 NULL
139883 +disable_so_check_existing_refs_fndecl_48380 check_existing_refs fndecl 0 48380 NULL nohasharray
139884 +disable_so_qlcnic_83xx_init_mailbox_work_fndecl_48380 qlcnic_83xx_init_mailbox_work fndecl 0 48380 &disable_so_check_existing_refs_fndecl_48380
139885 +disable_so_get_location_fndecl_48385 get_location fndecl 0 48385 NULL
139886 +disable_so_qlcnic_83xx_check_hw_status_fndecl_48386 qlcnic_83xx_check_hw_status fndecl 0 48386 NULL
139887 +disable_so_mpt_attach_fndecl_48393 mpt_attach fndecl 0 48393 NULL
139888 +disable_so__snd_pcm_hw_param_set_fndecl_48394 _snd_pcm_hw_param_set fndecl 0 48394 NULL
139889 +disable_so_core_alua_update_tpg_primary_metadata_fndecl_48408 core_alua_update_tpg_primary_metadata fndecl 0 48408 NULL
139890 +disable_so_sys_mq_getsetattr_fndecl_48411 sys_mq_getsetattr fndecl 0 48411 NULL
139891 +disable_so_xhci_halt_fndecl_48412 xhci_halt fndecl 0 48412 NULL
139892 +disable_so_parse_config_fndecl_48423 parse_config fndecl 0 48423 NULL
139893 +disable_so_wl1271_acx_set_ht_capabilities_fndecl_48449 wl1271_acx_set_ht_capabilities fndecl 0 48449 NULL
139894 +disable_so_mwl8k_cmd_use_fixed_rate_sta_fndecl_48453 mwl8k_cmd_use_fixed_rate_sta fndecl 0 48453 NULL
139895 +disable_so_qxl_bo_check_id_fndecl_48457 qxl_bo_check_id fndecl 0 48457 NULL nohasharray
139896 +disable_so_fuse_notify_inval_inode_fndecl_48457 fuse_notify_inval_inode fndecl 0 48457 &disable_so_qxl_bo_check_id_fndecl_48457
139897 +disable_so_ioctl_fiemap_fndecl_48466 ioctl_fiemap fndecl 0 48466 NULL
139898 +disable_so_zd_chip_read_mac_addr_fw_fndecl_48469 zd_chip_read_mac_addr_fw fndecl 0 48469 NULL
139899 +disable_so_pcistub_reg_add_fndecl_48471 pcistub_reg_add fndecl 0 48471 NULL
139900 +disable_so_sisusb_clear_vram_fndecl_48489 sisusb_clear_vram fndecl 0 48489 NULL
139901 +disable_so_ip_vs_new_dest_fndecl_48498 ip_vs_new_dest fndecl 0 48498 NULL
139902 +disable_so_smsc95xx_write_reg_nopm_fndecl_48505 smsc95xx_write_reg_nopm fndecl 0 48505 NULL
139903 +disable_so_usb_add_gadget_udc_release_fndecl_48506 usb_add_gadget_udc_release fndecl 0 48506 NULL
139904 +disable_so_uhid_hid_set_report_fndecl_48508 uhid_hid_set_report fndecl 0 48508 NULL
139905 +disable_so_channels_snd_soc_dai_48509 channels snd_soc_dai 0 48509 NULL
139906 +disable_so_evdev_grab_fndecl_48530 evdev_grab fndecl 0 48530 NULL
139907 +disable_so_dxfer_len_sg_io_hdr_48532 dxfer_len sg_io_hdr 0 48532 NULL
139908 +disable_so_vlan_dev_netpoll_setup_fndecl_48541 vlan_dev_netpoll_setup fndecl 0 48541 NULL
139909 +disable_so_nilfs_segctor_collect_fndecl_48543 nilfs_segctor_collect fndecl 0 48543 NULL
139910 +disable_so_target_xcopy_setup_pt_cmd_fndecl_48548 target_xcopy_setup_pt_cmd fndecl 0 48548 NULL nohasharray
139911 +disable_so_snd_seq_queue_delete_fndecl_48548 snd_seq_queue_delete fndecl 0 48548 &disable_so_target_xcopy_setup_pt_cmd_fndecl_48548
139912 +disable_so_i810_dma_init_fndecl_48550 i810_dma_init fndecl 0 48550 NULL
139913 +disable_so_dsp_allocate_ports_fndecl_48551 dsp_allocate_ports fndecl 0 48551 NULL
139914 +disable_so_inode_permission_fndecl_48552 inode_permission fndecl 0 48552 NULL
139915 +disable_so_acpi_dev_get_resources_fndecl_48557 acpi_dev_get_resources fndecl 0 48557 NULL
139916 +disable_so_gfs2_quota_hold_fndecl_48562 gfs2_quota_hold fndecl 0 48562 NULL
139917 +disable_so_hpsa_allocate_cmd_pool_fndecl_48566 hpsa_allocate_cmd_pool fndecl 0 48566 NULL
139918 +disable_so_start_spy_cam_fndecl_48570 start_spy_cam fndecl 0 48570 NULL
139919 +disable_so_ib_send_rmpp_mad_fndecl_48571 ib_send_rmpp_mad fndecl 0 48571 NULL
139920 +disable_so_btrfs_insert_inode_extref_fndecl_48574 btrfs_insert_inode_extref fndecl 0 48574 NULL
139921 +disable_so_i40e_setup_pf_switch_fndecl_48583 i40e_setup_pf_switch fndecl 0 48583 NULL
139922 +disable_so_tx_ring_size_bnx2x_48584 tx_ring_size bnx2x 0 48584 NULL
139923 +disable_so_joydev_connect_fndecl_48590 joydev_connect fndecl 0 48590 NULL
139924 +disable_so_il3945_hwrate_to_plcp_idx_fndecl_48592 il3945_hwrate_to_plcp_idx fndecl 0 48592 NULL
139925 +disable_so_driver_register_fndecl_48593 driver_register fndecl 0 48593 NULL
139926 +disable_so_xfs_file_ioctl_fndecl_48609 xfs_file_ioctl fndecl 0 48609 NULL
139927 +disable_so_search_ioctl_fndecl_48610 search_ioctl fndecl 0 48610 NULL
139928 +disable_so__base_handshake_req_reply_wait_fndecl_48628 _base_handshake_req_reply_wait fndecl 0 48628 NULL
139929 +disable_so_pn544_hci_i2c_fw_write_cmd_fndecl_48631 pn544_hci_i2c_fw_write_cmd fndecl 0 48631 NULL
139930 +disable_so_ili210x_read_reg_fndecl_48632 ili210x_read_reg fndecl 0 48632 NULL
139931 +disable_so_irq_pm80x_rtc_info_48636 irq pm80x_rtc_info 0 48636 NULL
139932 +disable_so_asd_read_ocm_seg_fndecl_48638 asd_read_ocm_seg fndecl 0 48638 NULL
139933 +disable_so_create_out_jack_modes_fndecl_48652 create_out_jack_modes fndecl 0 48652 NULL nohasharray
139934 +disable_so_logfs_mtd_read_fndecl_48652 logfs_mtd_read fndecl 0 48652 &disable_so_create_out_jack_modes_fndecl_48652
139935 +disable_so_snd_hdspm_create_controls_fndecl_48670 snd_hdspm_create_controls fndecl 0 48670 NULL nohasharray
139936 +disable_so_ppp_irnet_ioctl_fndecl_48670 ppp_irnet_ioctl fndecl 0 48670 &disable_so_snd_hdspm_create_controls_fndecl_48670
139937 +disable_so_brcmf_fw_get_firmwares_fndecl_48672 brcmf_fw_get_firmwares fndecl 0 48672 NULL
139938 +disable_so_xfs_btree_update_fndecl_48676 xfs_btree_update fndecl 0 48676 NULL
139939 +disable_so_spu_wait_for_u32_fndecl_48677 spu_wait_for_u32 fndecl 0 48677 NULL
139940 +disable_so_acpi_button_add_fs_fndecl_48680 acpi_button_add_fs fndecl 0 48680 NULL
139941 +disable_so_migrate_to_node_fndecl_48683 migrate_to_node fndecl 0 48683 NULL
139942 +disable_so_lbs_get_firmware_async_fndecl_48691 lbs_get_firmware_async fndecl 0 48691 NULL
139943 +disable_so_xfs_bmap_add_extent_delay_real_fndecl_48692 xfs_bmap_add_extent_delay_real fndecl 0 48692 NULL
139944 +disable_so_is_connected_output_ep_fndecl_48702 is_connected_output_ep fndecl 0 48702 NULL
139945 +disable_so_asix_write_cmd_fndecl_48707 asix_write_cmd fndecl 0 48707 NULL
139946 +disable_so_gen8_ppgtt_allocate_page_tables_fndecl_48716 gen8_ppgtt_allocate_page_tables fndecl 0 48716 NULL
139947 +disable_so_kfd_build_sysfs_node_tree_fndecl_48728 kfd_build_sysfs_node_tree fndecl 0 48728 NULL
139948 +disable_so_garmin_write_bulk_fndecl_48732 garmin_write_bulk fndecl 0 48732 NULL
139949 +disable_so_brcmf_sdiod_buffrw_fndecl_48736 brcmf_sdiod_buffrw fndecl 0 48736 NULL
139950 +disable_so_shdma_alloc_chan_resources_fndecl_48742 shdma_alloc_chan_resources fndecl 0 48742 NULL
139951 +disable_so_xenbus_irq_vardecl_xenbus_comms_c_48747 xenbus_irq vardecl_xenbus_comms.c 0 48747 NULL
139952 +disable_so_outputs_snd_soc_dapm_widget_48752 outputs snd_soc_dapm_widget 0 48752 NULL
139953 +disable_so_i40evf_allocate_virt_mem_d_fndecl_48753 i40evf_allocate_virt_mem_d fndecl 0 48753 NULL
139954 +disable_so_sisusb_handle_command_fndecl_48761 sisusb_handle_command fndecl 0 48761 NULL
139955 +disable_so_snd_seq_deliver_single_event_fndecl_48764 snd_seq_deliver_single_event fndecl 0 48764 NULL
139956 +disable_so_assign_substream_fndecl_48781 assign_substream fndecl 0 48781 NULL
139957 +disable_so_kstrtos8_from_user_fndecl_48783 kstrtos8_from_user fndecl 0 48783 NULL
139958 +disable_so_regmap_raw_read_fndecl_48789 regmap_raw_read fndecl 0 48789 NULL nohasharray
139959 +disable_so_btrfsic_create_link_to_next_block_fndecl_48789 btrfsic_create_link_to_next_block fndecl 0 48789 &disable_so_regmap_raw_read_fndecl_48789
139960 +disable_so_samsung_rfkill_init_fndecl_48792 samsung_rfkill_init fndecl 0 48792 NULL
139961 +disable_so_len_spi_transfer_48802 len spi_transfer 0 48802 NULL
139962 +disable_so_ext3_max_size_fndecl_48803 ext3_max_size fndecl 0 48803 NULL
139963 +disable_so_jffs2_do_fill_super_fndecl_48829 jffs2_do_fill_super fndecl 0 48829 NULL
139964 +disable_so_tv_freq_vivid_dev_48830 tv_freq vivid_dev 0 48830 NULL
139965 +disable_so_orig_fgconsole_vardecl_console_c_48831 orig_fgconsole vardecl_console.c 0 48831 NULL
139966 +disable_so_trident_pci_probe_fndecl_48832 trident_pci_probe fndecl 0 48832 NULL nohasharray
139967 +disable_so_mic_virtio_copy_from_user_fndecl_48832 mic_virtio_copy_from_user fndecl 0 48832 &disable_so_trident_pci_probe_fndecl_48832
139968 +disable_so_ni_populate_smc_t_fndecl_48841 ni_populate_smc_t fndecl 0 48841 NULL
139969 +disable_so_dlm_user_adopt_orphan_fndecl_48845 dlm_user_adopt_orphan fndecl 0 48845 NULL
139970 +disable_so_snd_timer_new_fndecl_48873 snd_timer_new fndecl 0 48873 NULL
139971 +disable_so_lscan_lnum_ubifs_info_48882 lscan_lnum ubifs_info 0 48882 NULL
139972 +disable_so_pn533_submit_urb_for_ack_fndecl_48889 pn533_submit_urb_for_ack fndecl 0 48889 NULL
139973 +disable_so_qgroup_calc_new_refcnt_fndecl_48894 qgroup_calc_new_refcnt fndecl 0 48894 NULL
139974 +disable_so_i40e_ptp_set_ts_config_fndecl_48905 i40e_ptp_set_ts_config fndecl 0 48905 NULL
139975 +disable_so_smsc95xx_bind_fndecl_48910 smsc95xx_bind fndecl 0 48910 NULL
139976 +disable_so_smscore_configure_board_fndecl_48911 smscore_configure_board fndecl 0 48911 NULL
139977 +disable_so_dccp_sysctl_init_fndecl_48914 dccp_sysctl_init fndecl 0 48914 NULL
139978 +disable_so_rx_ring_count_ixgbevf_adapter_48930 rx_ring_count ixgbevf_adapter 0 48930 NULL
139979 +disable_so_emi26_writememory_fndecl_48935 emi26_writememory fndecl 0 48935 NULL
139980 +disable_so___uhid_report_queue_and_wait_fndecl_48937 __uhid_report_queue_and_wait fndecl 0 48937 NULL
139981 +disable_so_rtsx_usb_get_status_with_bulk_fndecl_48946 rtsx_usb_get_status_with_bulk fndecl 0 48946 NULL
139982 +disable_so_wl18xx_cmd_set_cac_fndecl_48953 wl18xx_cmd_set_cac fndecl 0 48953 NULL
139983 +disable_so_ni_upload_sw_state_fndecl_48955 ni_upload_sw_state fndecl 0 48955 NULL
139984 +disable_so_ath_regd_init_fndecl_48961 ath_regd_init fndecl 0 48961 NULL
139985 +disable_so_xfs_mru_cache_create_fndecl_48964 xfs_mru_cache_create fndecl 0 48964 NULL
139986 +disable_so_csio_hw_fw_halt_fndecl_48968 csio_hw_fw_halt fndecl 0 48968 NULL nohasharray
139987 +disable_so_ramfs_parse_options_fndecl_48968 ramfs_parse_options fndecl 0 48968 &disable_so_csio_hw_fw_halt_fndecl_48968
139988 +disable_so_wait_task_zombie_fndecl_48983 wait_task_zombie fndecl 0 48983 NULL nohasharray
139989 +disable_so_security_get_user_sids_fndecl_48983 security_get_user_sids fndecl 0 48983 &disable_so_wait_task_zombie_fndecl_48983
139990 +disable_so_snd_akm4xxx_build_controls_fndecl_48986 snd_akm4xxx_build_controls fndecl 0 48986 NULL
139991 +disable_so_cifs_unlock_range_fndecl_48995 cifs_unlock_range fndecl 0 48995 NULL
139992 +disable_so_iov_iter_npages_fndecl_49000 iov_iter_npages fndecl 0 49000 NULL nohasharray
139993 +disable_so_pid_task_struct_49000 pid task_struct 0 49000 &disable_so_iov_iter_npages_fndecl_49000
139994 +disable_so_brcmf_notify_sched_scan_results_fndecl_49007 brcmf_notify_sched_scan_results fndecl 0 49007 NULL
139995 +disable_so_bsg_create_job_fndecl_49009 bsg_create_job fndecl 0 49009 NULL
139996 +disable_so_c4iw_ocqp_pool_create_fndecl_49011 c4iw_ocqp_pool_create fndecl 0 49011 NULL
139997 +disable_so_uvesafb_setcmap_fndecl_49022 uvesafb_setcmap fndecl 0 49022 NULL
139998 +disable_so_rocker_port_fdb_fndecl_49030 rocker_port_fdb fndecl 0 49030 NULL
139999 +disable_so_reg_r_fndecl_49040 reg_r fndecl 0 49040 NULL
140000 +disable_so_h_front_porch_fb_cvt_data_49048 h_front_porch fb_cvt_data 0 49048 NULL
140001 +disable_so_cxacru_cm_fndecl_49052 cxacru_cm fndecl 0 49052 NULL
140002 +disable_so_iguanair_send_fndecl_49054 iguanair_send fndecl 0 49054 NULL
140003 +disable_so_fat_calc_dir_size_fndecl_49074 fat_calc_dir_size fndecl 0 49074 NULL
140004 +disable_so_vmw_event_fence_action_create_fndecl_49088 vmw_event_fence_action_create fndecl 0 49088 NULL
140005 +disable_so_ocfs2_find_leaf_fndecl_49090 ocfs2_find_leaf fndecl 0 49090 NULL
140006 +disable_so_prepare_ext_ctrls_fndecl_49096 prepare_ext_ctrls fndecl 0 49096 NULL
140007 +disable_so_rfkill_led_trigger_register_fndecl_49098 rfkill_led_trigger_register fndecl 0 49098 NULL
140008 +disable_so_vmci_qpair_alloc_fndecl_49107 vmci_qpair_alloc fndecl 0 49107 NULL
140009 +disable_so_snd_info_card_create_fndecl_49108 snd_info_card_create fndecl 0 49108 NULL
140010 +disable_so_ino_kernfs_node_49113 ino kernfs_node 0 49113 NULL
140011 +disable_so_ntb_xeon_setup_fndecl_49121 ntb_xeon_setup fndecl 0 49121 NULL
140012 +disable_so_efx_mcdi_nvram_info_fndecl_49124 efx_mcdi_nvram_info fndecl 0 49124 NULL
140013 +disable_so_vxlan_fdb_create_fndecl_49127 vxlan_fdb_create fndecl 0 49127 NULL
140014 +disable_so_regulator_register_supply_alias_fndecl_49138 regulator_register_supply_alias fndecl 0 49138 NULL
140015 +disable_so_wcn36xx_smd_start_rsp_fndecl_49144 wcn36xx_smd_start_rsp fndecl 0 49144 NULL
140016 +disable_so_cis_tpl_parse_fndecl_49146 cis_tpl_parse fndecl 0 49146 NULL
140017 +disable_so_rpipe_get_idle_fndecl_49147 rpipe_get_idle fndecl 0 49147 NULL
140018 +disable_so_ufx_reg_clear_and_set_bits_fndecl_49150 ufx_reg_clear_and_set_bits fndecl 0 49150 NULL
140019 +disable_so_ethtool_get_link_fndecl_49154 ethtool_get_link fndecl 0 49154 NULL
140020 +disable_so_generic_exec_single_fndecl_49159 generic_exec_single fndecl 0 49159 NULL
140021 +disable_so_sync_cached_firmware_buf_fndecl_49162 sync_cached_firmware_buf fndecl 0 49162 NULL
140022 +disable_so_sas_configure_set_fndecl_49189 sas_configure_set fndecl 0 49189 NULL
140023 +disable_so_do_idetape_chrdev_ioctl_fndecl_49205 do_idetape_chrdev_ioctl fndecl 0 49205 NULL
140024 +disable_so_usbnet_read_cmd_fndecl_49216 usbnet_read_cmd fndecl 0 49216 NULL nohasharray
140025 +disable_so_nleft_ide_cmd_49216 nleft ide_cmd 0 49216 &disable_so_usbnet_read_cmd_fndecl_49216
140026 +disable_so_reqsk_queue_alloc_fndecl_49219 reqsk_queue_alloc fndecl 0 49219 NULL
140027 +disable_so_do_cmd_fndecl_49236 do_cmd fndecl 0 49236 NULL
140028 +disable_so_mos7840_write_fndecl_49240 mos7840_write fndecl 0 49240 NULL
140029 +disable_so_uwb_est_grow_fndecl_49252 uwb_est_grow fndecl 0 49252 NULL
140030 +disable_so_usbtv_probe_fndecl_49257 usbtv_probe fndecl 0 49257 NULL
140031 +disable_so_avc_identify_subunit_fndecl_49268 avc_identify_subunit fndecl 0 49268 NULL
140032 +disable_so_dn_confirm_accept_fndecl_49275 dn_confirm_accept fndecl 0 49275 NULL
140033 +disable_so_nv50_dma_wait_fndecl_49278 nv50_dma_wait fndecl 0 49278 NULL
140034 +disable_so_nouveau_channel_new_fndecl_49282 nouveau_channel_new fndecl 0 49282 NULL
140035 +disable_so_idetape_blkdev_ioctl_fndecl_49292 idetape_blkdev_ioctl fndecl 0 49292 NULL
140036 +disable_so_splice_direct_to_actor_fndecl_49310 splice_direct_to_actor fndecl 0 49310 NULL
140037 +disable_so__vnic_dev_cmd_fndecl_49322 _vnic_dev_cmd fndecl 0 49322 NULL nohasharray
140038 +disable_so_via_cputemp_device_add_fndecl_49322 via_cputemp_device_add fndecl 0 49322 &disable_so__vnic_dev_cmd_fndecl_49322
140039 +disable_so_enic_rx_flow_steer_fndecl_49327 enic_rx_flow_steer fndecl 0 49327 NULL
140040 +disable_so_wl1251_acx_set_preamble_fndecl_49329 wl1251_acx_set_preamble fndecl 0 49329 NULL
140041 +disable_so_dmi_system_event_log_fndecl_49334 dmi_system_event_log fndecl 0 49334 NULL
140042 +disable_so_scsi_ioctl_get_pci_fndecl_49335 scsi_ioctl_get_pci fndecl 0 49335 NULL
140043 +disable_so_wl18xx_scan_sched_scan_config_fndecl_49346 wl18xx_scan_sched_scan_config fndecl 0 49346 NULL
140044 +disable_so_kobject_move_fndecl_49347 kobject_move fndecl 0 49347 NULL
140045 +disable_so_pvr2_locate_firmware_fndecl_49353 pvr2_locate_firmware fndecl 0 49353 NULL
140046 +disable_so_wl128x_cmd_general_parms_fndecl_49374 wl128x_cmd_general_parms fndecl 0 49374 NULL
140047 +disable_so_mlx5_cmd_alloc_uar_fndecl_49386 mlx5_cmd_alloc_uar fndecl 0 49386 NULL
140048 +disable_so_vq_send_wr_fndecl_49388 vq_send_wr fndecl 0 49388 NULL
140049 +disable_so_cy_set_serial_info_fndecl_49391 cy_set_serial_info fndecl 0 49391 NULL
140050 +disable_so_usb_ftdi_elan_edset_empty_fndecl_49394 usb_ftdi_elan_edset_empty fndecl 0 49394 NULL nohasharray
140051 +disable_so_wl1271_acx_keep_alive_config_fndecl_49394 wl1271_acx_keep_alive_config fndecl 0 49394 &disable_so_usb_ftdi_elan_edset_empty_fndecl_49394
140052 +disable_so_serio_open_fndecl_49416 serio_open fndecl 0 49416 NULL
140053 +disable_so_mlx4_comm_cmd_wait_fndecl_49432 mlx4_comm_cmd_wait fndecl 0 49432 NULL nohasharray
140054 +disable_so_bytenr_tree_block_49432 bytenr tree_block 0 49432 &disable_so_mlx4_comm_cmd_wait_fndecl_49432
140055 +disable_so_usb_get_device_descriptor_fndecl_49436 usb_get_device_descriptor fndecl 0 49436 NULL
140056 +disable_so_vsxxxaa_connect_fndecl_49440 vsxxxaa_connect fndecl 0 49440 NULL
140057 +disable_so_aer_inject_fndecl_49443 aer_inject fndecl 0 49443 NULL
140058 +disable_so_get_setup_data_total_num_fndecl_49455 get_setup_data_total_num fndecl 0 49455 NULL
140059 +disable_so_selinux_audit_rule_init_fndecl_49458 selinux_audit_rule_init fndecl 0 49458 NULL
140060 +disable_so_usnic_uiom_attach_dev_to_pd_fndecl_49460 usnic_uiom_attach_dev_to_pd fndecl 0 49460 NULL
140061 +disable_so_x25_subscr_ioctl_fndecl_49466 x25_subscr_ioctl fndecl 0 49466 NULL
140062 +disable_so_ivtvfb_write_fndecl_49476 ivtvfb_write fndecl 0 49476 NULL
140063 +disable_so__truncate_mirrors_fndecl_49478 _truncate_mirrors fndecl 0 49478 NULL
140064 +disable_so_mxt_update_cfg_fndecl_49479 mxt_update_cfg fndecl 0 49479 NULL
140065 +disable_so_ea_foreach_i_fndecl_49487 ea_foreach_i fndecl 0 49487 NULL
140066 +disable_so_smb_send_fndecl_49500 smb_send fndecl 0 49500 NULL
140067 +disable_so_wl12xx_acx_set_ba_initiator_policy_fndecl_49534 wl12xx_acx_set_ba_initiator_policy fndecl 0 49534 NULL
140068 +disable_so_regcache_lzo_compress_cache_block_fndecl_49544 regcache_lzo_compress_cache_block fndecl 0 49544 NULL
140069 +disable_so_snd_pcm_sw_params_user_fndecl_49548 snd_pcm_sw_params_user fndecl 0 49548 NULL
140070 +disable_so_wl1251_ps_elp_wakeup_fndecl_49562 wl1251_ps_elp_wakeup fndecl 0 49562 NULL
140071 +disable_so_set_selection_fndecl_49564 set_selection fndecl 0 49564 NULL nohasharray
140072 +disable_so_wl1251_acx_beacon_filter_table_fndecl_49564 wl1251_acx_beacon_filter_table fndecl 0 49564 &disable_so_set_selection_fndecl_49564
140073 +disable_so_hidpp_send_fap_command_sync_fndecl_49568 hidpp_send_fap_command_sync fndecl 0 49568 NULL
140074 +disable_so_jread_fndecl_49580 jread fndecl 0 49580 NULL
140075 +disable_so_mpt_handshake_req_reply_wait_fndecl_49586 mpt_handshake_req_reply_wait fndecl 0 49586 NULL
140076 +disable_so_xfs_rtbuf_get_fndecl_49592 xfs_rtbuf_get fndecl 0 49592 NULL
140077 +disable_so_netlink_broadcast_filtered_fndecl_49594 netlink_broadcast_filtered fndecl 0 49594 NULL
140078 +disable_so_reg_set_rd_core_fndecl_49613 reg_set_rd_core fndecl 0 49613 NULL
140079 +disable_so_write_cmd_usb_fndecl_49619 write_cmd_usb fndecl 0 49619 NULL
140080 +disable_so_reg_read_range_fndecl_49623 reg_read_range fndecl 0 49623 NULL
140081 +disable_so_mlx4_buf_write_mtt_fndecl_49634 mlx4_buf_write_mtt fndecl 0 49634 NULL
140082 +disable_so_cirrus_fbdev_init_fndecl_49643 cirrus_fbdev_init fndecl 0 49643 NULL
140083 +disable_so_lis3lv02d_poweron_fndecl_49648 lis3lv02d_poweron fndecl 0 49648 NULL
140084 +disable_so_il4965_rs_get_adjacent_rate_fndecl_49653 il4965_rs_get_adjacent_rate fndecl 0 49653 NULL
140085 +disable_so_usbnet_get_endpoints_fndecl_49662 usbnet_get_endpoints fndecl 0 49662 NULL
140086 +disable_so_adc_enqueue_request_fndecl_49667 adc_enqueue_request fndecl 0 49667 NULL
140087 +disable_so_ntb_get_mw_size_fndecl_49668 ntb_get_mw_size fndecl 0 49668 NULL
140088 +disable_so_nilfs_bmap_lookup_at_level_fndecl_49671 nilfs_bmap_lookup_at_level fndecl 0 49671 NULL
140089 +disable_so_parse_options_fndecl_49679 parse_options fndecl 0 49679 NULL
140090 +disable_so_snd_lx6464es_create_fndecl_49685 snd_lx6464es_create fndecl 0 49685 NULL
140091 +disable_so_set_extent_bit_fndecl_49692 set_extent_bit fndecl 0 49692 NULL nohasharray
140092 +disable_so_prism2_pci_probe_fndecl_49692 prism2_pci_probe fndecl 0 49692 &disable_so_set_extent_bit_fndecl_49692
140093 +disable_so_xen_copy_pss_data_fndecl_49693 xen_copy_pss_data fndecl 0 49693 NULL
140094 +disable_so_cipso_v4_cache_add_fndecl_49700 cipso_v4_cache_add fndecl 0 49700 NULL
140095 +disable_so_e1000_set_eeprom_fndecl_49707 e1000_set_eeprom fndecl 0 49707 NULL
140096 +disable_so_zd_mac_config_beacon_fndecl_49719 zd_mac_config_beacon fndecl 0 49719 NULL
140097 +disable_so_write_behind_check_fndecl_49726 write_behind_check fndecl 0 49726 NULL
140098 +disable_so_bnx2x_configure_ptp_filters_fndecl_49732 bnx2x_configure_ptp_filters fndecl 0 49732 NULL
140099 +disable_so_mxt_wait_for_completion_fndecl_49734 mxt_wait_for_completion fndecl 0 49734 NULL
140100 +disable_so_mlx4_ARM_COMM_CHANNEL_fndecl_49737 mlx4_ARM_COMM_CHANNEL fndecl 0 49737 NULL
140101 +disable_so_mls_range_set_fndecl_49739 mls_range_set fndecl 0 49739 NULL
140102 +disable_so_jffs2_get_acl_fndecl_49741 jffs2_get_acl fndecl 0 49741 NULL
140103 +disable_so_snd_ctl_elem_write_user_compat_fndecl_49750 snd_ctl_elem_write_user_compat fndecl 0 49750 NULL
140104 +disable_so_savage_dispatch_vb_prim_fndecl_49753 savage_dispatch_vb_prim fndecl 0 49753 NULL
140105 +disable_so_cifs_sign_smbv_fndecl_49776 cifs_sign_smbv fndecl 0 49776 NULL
140106 +disable_so_amradio_send_cmd_fndecl_49779 amradio_send_cmd fndecl 0 49779 NULL
140107 +disable_so_snd_ctl_elem_info_compat_fndecl_49781 snd_ctl_elem_info_compat fndecl 0 49781 NULL
140108 +disable_so_siena_probe_nic_fndecl_49786 siena_probe_nic fndecl 0 49786 NULL
140109 +disable_so_smk_fill_rule_fndecl_49787 smk_fill_rule fndecl 0 49787 NULL
140110 +disable_so_va1j5jf8007t_init_frequency_fndecl_49799 va1j5jf8007t_init_frequency fndecl 0 49799 NULL
140111 +disable_so_pkt_sysfs_init_fndecl_49802 pkt_sysfs_init fndecl 0 49802 NULL
140112 +disable_so_logfs_seek_hole_fndecl_49805 logfs_seek_hole fndecl 0 49805 NULL
140113 +disable_so_fat_chain_add_fndecl_49812 fat_chain_add fndecl 0 49812 NULL
140114 +disable_so_can_rx_register_fndecl_49823 can_rx_register fndecl 0 49823 NULL
140115 +disable_so_wl12xx_cmd_build_probe_req_fndecl_49835 wl12xx_cmd_build_probe_req fndecl 0 49835 NULL nohasharray
140116 +disable_so_atkbd_connect_fndecl_49835 atkbd_connect fndecl 0 49835 &disable_so_wl12xx_cmd_build_probe_req_fndecl_49835
140117 +disable_so_intel_pin_and_map_ringbuffer_obj_fndecl_49837 intel_pin_and_map_ringbuffer_obj fndecl 0 49837 NULL
140118 +disable_so_fifosize_uart_port_49843 fifosize uart_port 0 49843 NULL
140119 +disable_so_wl12xx_cmd_roc_fndecl_49850 wl12xx_cmd_roc fndecl 0 49850 NULL
140120 +disable_so_gfs2_ea_find_fndecl_49858 gfs2_ea_find fndecl 0 49858 NULL nohasharray
140121 +disable_so_wl12xx_cmd_role_disable_fndecl_49858 wl12xx_cmd_role_disable fndecl 0 49858 &disable_so_gfs2_ea_find_fndecl_49858
140122 +disable_so_xfs_sync_sb_fndecl_49876 xfs_sync_sb fndecl 0 49876 NULL
140123 +disable_so_snd_seq_ioctl_get_client_pool_fndecl_49880 snd_seq_ioctl_get_client_pool fndecl 0 49880 NULL
140124 +disable_so_sg_alloc_table_fndecl_49895 sg_alloc_table fndecl 0 49895 NULL
140125 +disable_so_dn_dev_set_ifa_fndecl_49897 dn_dev_set_ifa fndecl 0 49897 NULL
140126 +disable_so_hash_netnet6_add_fndecl_49908 hash_netnet6_add fndecl 0 49908 NULL
140127 +disable_so_port100_submit_urb_for_ack_fndecl_49922 port100_submit_urb_for_ack fndecl 0 49922 NULL
140128 +disable_so_ib_sa_guid_info_rec_query_fndecl_49928 ib_sa_guid_info_rec_query fndecl 0 49928 NULL
140129 +disable_so_smsc75xx_read_reg_fndecl_49942 smsc75xx_read_reg fndecl 0 49942 NULL
140130 +disable_so_tcf_act_police_locate_fndecl_49948 tcf_act_police_locate fndecl 0 49948 NULL
140131 +disable_so_pcxhr_send_msg_fndecl_49960 pcxhr_send_msg fndecl 0 49960 NULL
140132 +disable_so___ethtool_get_sset_count_fndecl_49964 __ethtool_get_sset_count fndecl 0 49964 NULL
140133 +disable_so_xfs_iread_extents_fndecl_49965 xfs_iread_extents fndecl 0 49965 NULL nohasharray
140134 +disable_so_kingsun_probe_fndecl_49965 kingsun_probe fndecl 0 49965 &disable_so_xfs_iread_extents_fndecl_49965
140135 +disable_so___mms114_read_reg_fndecl_49983 __mms114_read_reg fndecl 0 49983 NULL
140136 +disable_so_kv_parse_power_table_fndecl_49984 kv_parse_power_table fndecl 0 49984 NULL
140137 +disable_so_xen_wdt_ioctl_fndecl_49989 xen_wdt_ioctl fndecl 0 49989 NULL
140138 +disable_so_rocker_flow_tbl_bridge_fndecl_50016 rocker_flow_tbl_bridge fndecl 0 50016 NULL
140139 +disable_so_ethtool_get_dump_flag_fndecl_50018 ethtool_get_dump_flag fndecl 0 50018 NULL
140140 +disable_so_netxen_setup_minidump_fndecl_50019 netxen_setup_minidump fndecl 0 50019 NULL
140141 +disable_so_ufx_reg_read_fndecl_50020 ufx_reg_read fndecl 0 50020 NULL
140142 +disable_so_ipmi_create_user_fndecl_50025 ipmi_create_user fndecl 0 50025 NULL
140143 +disable_so_bi_size_bvec_iter_50026 bi_size bvec_iter 0 50026 NULL
140144 +disable_so_snd_oss_kernel_minor_fndecl_50028 snd_oss_kernel_minor fndecl 0 50028 NULL
140145 +disable_so_ima_write_policy_fndecl_50039 ima_write_policy fndecl 0 50039 NULL
140146 +disable_so_mlx4_master_immediate_activate_vlan_qos_fndecl_50045 mlx4_master_immediate_activate_vlan_qos fndecl 0 50045 NULL
140147 +disable_so_solo_dma_vin_region_fndecl_50047 solo_dma_vin_region fndecl 0 50047 NULL
140148 +disable_so_mwifiex_ret_cfg_data_fndecl_50065 mwifiex_ret_cfg_data fndecl 0 50065 NULL
140149 +disable_so_ssb_pci_xtal_fndecl_50070 ssb_pci_xtal fndecl 0 50070 NULL
140150 +disable_so_rtsx_pci_read_ppbuf_fndecl_50078 rtsx_pci_read_ppbuf fndecl 0 50078 NULL nohasharray
140151 +disable_so_lm8323_probe_fndecl_50078 lm8323_probe fndecl 0 50078 &disable_so_rtsx_pci_read_ppbuf_fndecl_50078
140152 +disable_so_context_init_fndecl_50085 context_init fndecl 0 50085 NULL
140153 +disable_so_sctp_cmd_process_init_fndecl_50094 sctp_cmd_process_init fndecl 0 50094 NULL
140154 +disable_so_ixgbe_setup_tx_resources_fndecl_50102 ixgbe_setup_tx_resources fndecl 0 50102 NULL
140155 +disable_so_i2c_register_adapter_fndecl_50119 i2c_register_adapter fndecl 0 50119 NULL nohasharray
140156 +disable_so_snd_nm256_create_fndecl_50119 snd_nm256_create fndecl 0 50119 &disable_so_i2c_register_adapter_fndecl_50119
140157 +disable_so_usb_set_interface_fndecl_50126 usb_set_interface fndecl 0 50126 NULL
140158 +disable_so_sys_timerfd_settime_fndecl_50127 sys_timerfd_settime fndecl 0 50127 NULL
140159 +disable_so_snd_soc_add_component_controls_fndecl_50137 snd_soc_add_component_controls fndecl 0 50137 NULL
140160 +disable_so_regulator_enable_fndecl_50146 regulator_enable fndecl 0 50146 NULL
140161 +disable_so_mlx5_core_create_qp_fndecl_50150 mlx5_core_create_qp fndecl 0 50150 NULL
140162 +disable_so_init_chip_fndecl_50152 init_chip fndecl 0 50152 NULL nohasharray
140163 +disable_so_tb_drom_read_fndecl_50152 tb_drom_read fndecl 0 50152 &disable_so_init_chip_fndecl_50152
140164 +disable_so_nfc_hci_set_param_fndecl_50154 nfc_hci_set_param fndecl 0 50154 NULL
140165 +disable_so_idr_get_empty_slot_fndecl_50161 idr_get_empty_slot fndecl 0 50161 NULL
140166 +disable_so_ext4_mark_inode_dirty_fndecl_50162 ext4_mark_inode_dirty fndecl 0 50162 NULL nohasharray
140167 +disable_so_write_parport_reg_nonblock_fndecl_50162 write_parport_reg_nonblock fndecl 0 50162 &disable_so_ext4_mark_inode_dirty_fndecl_50162
140168 +disable_so_pci_enable_resources_fndecl_50171 pci_enable_resources fndecl 0 50171 NULL nohasharray
140169 +disable_so_mtouch_connect_fndecl_50171 mtouch_connect fndecl 0 50171 &disable_so_pci_enable_resources_fndecl_50171
140170 +disable_so_wl1271_cmd_data_path_fndecl_50178 wl1271_cmd_data_path fndecl 0 50178 NULL
140171 +disable_so_vhost_get_vq_desc_fndecl_50180 vhost_get_vq_desc fndecl 0 50180 NULL
140172 +disable_so_cipso_v4_req_setattr_fndecl_50182 cipso_v4_req_setattr fndecl 0 50182 NULL
140173 +disable_so_ext3_xattr_check_names_fndecl_50197 ext3_xattr_check_names fndecl 0 50197 NULL
140174 +disable_so_hpsa_getdrivver_ioctl_fndecl_50211 hpsa_getdrivver_ioctl fndecl 0 50211 NULL
140175 +disable_so_patch_cmi8888_fndecl_50219 patch_cmi8888 fndecl 0 50219 NULL
140176 +disable_so_evergreen_surface_value_conv_check_fndecl_50230 evergreen_surface_value_conv_check fndecl 0 50230 NULL
140177 +disable_so_subsys_register_fndecl_50233 subsys_register fndecl 0 50233 NULL
140178 +disable_so_get_v4l2_format32_fndecl_50236 get_v4l2_format32 fndecl 0 50236 NULL
140179 +disable_so_snd_seq_timer_set_skew_fndecl_50237 snd_seq_timer_set_skew fndecl 0 50237 NULL
140180 +disable_so_minor_uio_device_50241 minor uio_device 0 50241 NULL
140181 +disable_so_ocfs2_dentry_lock_fndecl_50242 ocfs2_dentry_lock fndecl 0 50242 NULL
140182 +disable_so_ips_init_phase1_fndecl_50245 ips_init_phase1 fndecl 0 50245 NULL
140183 +disable_so_h_tot_disp_crtc_50258 h_tot_disp crtc 0 50258 NULL
140184 +disable_so_posix_acl_to_xattr_fndecl_50262 posix_acl_to_xattr fndecl 0 50262 NULL
140185 +disable_so_fib_table_delete_fndecl_50266 fib_table_delete fndecl 0 50266 NULL
140186 +disable_so_curr_resync_completed_mddev_50273 curr_resync_completed mddev 0 50273 NULL
140187 +disable_so_init_nandsim_fndecl_50279 init_nandsim fndecl 0 50279 NULL
140188 +disable_so_sch56xx_write_virtual_reg_fndecl_50285 sch56xx_write_virtual_reg fndecl 0 50285 NULL
140189 +disable_so_evergreen_packet0_check_fndecl_50289 evergreen_packet0_check fndecl 0 50289 NULL nohasharray
140190 +disable_so_ath6kl_wmi_set_appie_cmd_fndecl_50289 ath6kl_wmi_set_appie_cmd fndecl 0 50289 &disable_so_evergreen_packet0_check_fndecl_50289
140191 +disable_so_cpuidle_add_state_sysfs_fndecl_50292 cpuidle_add_state_sysfs fndecl 0 50292 NULL
140192 +disable_so_bond_do_ioctl_fndecl_50295 bond_do_ioctl fndecl 0 50295 NULL
140193 +disable_so_mwifiex_append_rsn_ie_wpa_wpa2_fndecl_50296 mwifiex_append_rsn_ie_wpa_wpa2 fndecl 0 50296 NULL
140194 +disable_so__iwl_dbgfs_pm_params_write_fndecl_50318 _iwl_dbgfs_pm_params_write fndecl 0 50318 NULL
140195 +disable_so_ceph_crypto_key_decode_fndecl_50321 ceph_crypto_key_decode fndecl 0 50321 NULL
140196 +disable_so_VST_kyrofb_info_50324 VST kyrofb_info 0 50324 NULL
140197 +disable_so_vmw_ttm_map_dma_fndecl_50333 vmw_ttm_map_dma fndecl 0 50333 NULL
140198 +disable_so_hub_port_reset_fndecl_50334 hub_port_reset fndecl 0 50334 NULL
140199 +disable_so_parse_cftable_entry_fndecl_50338 parse_cftable_entry fndecl 0 50338 NULL
140200 +disable_so_efx_mcdi_reset_mc_fndecl_50342 efx_mcdi_reset_mc fndecl 0 50342 NULL
140201 +disable_so_gfs2_dir_write_data_fndecl_50350 gfs2_dir_write_data fndecl 0 50350 NULL
140202 +disable_so_flex_array_prealloc_fndecl_50353 flex_array_prealloc fndecl 0 50353 NULL
140203 +disable_so_em28xx_usb_probe_fndecl_50358 em28xx_usb_probe fndecl 0 50358 NULL
140204 +disable_so_headlen_authenc_esn_request_ctx_50360 headlen authenc_esn_request_ctx 0 50360 NULL
140205 +disable_so_gc_lnum_ubifs_info_50362 gc_lnum ubifs_info 0 50362 NULL
140206 +disable_so_atmel_config_fndecl_50372 atmel_config fndecl 0 50372 NULL
140207 +disable_so_wcn36xx_smd_load_nv_fndecl_50378 wcn36xx_smd_load_nv fndecl 0 50378 NULL
140208 +disable_so_sirdev_tx_complete_fsm_fndecl_50381 sirdev_tx_complete_fsm fndecl 0 50381 NULL
140209 +disable_so_enic_dev_set_ig_vlan_rewrite_mode_fndecl_50401 enic_dev_set_ig_vlan_rewrite_mode fndecl 0 50401 NULL
140210 +disable_so_t4vf_fw_reset_fndecl_50402 t4vf_fw_reset fndecl 0 50402 NULL
140211 +disable_so_ccp_do_cmd_fndecl_50405 ccp_do_cmd fndecl 0 50405 NULL
140212 +disable_so_nilfs_segbuf_submit_bio_fndecl_50411 nilfs_segbuf_submit_bio fndecl 0 50411 NULL
140213 +disable_so_xfs_btree_dup_cursor_fndecl_50417 xfs_btree_dup_cursor fndecl 0 50417 NULL
140214 +disable_so___vcc_connect_fndecl_50431 __vcc_connect fndecl 0 50431 NULL
140215 +disable_so_ssb_devices_register_fndecl_50452 ssb_devices_register fndecl 0 50452 NULL
140216 +disable_so_base_sock_ioctl_fndecl_50456 base_sock_ioctl fndecl 0 50456 NULL
140217 +disable_so_dev_set_name_fndecl_50461 dev_set_name fndecl 0 50461 NULL
140218 +disable_so___ath6kl_wmi_send_mgmt_cmd_fndecl_50472 __ath6kl_wmi_send_mgmt_cmd fndecl 0 50472 NULL
140219 +disable_so_b43legacy_dma_init_fndecl_50473 b43legacy_dma_init fndecl 0 50473 NULL
140220 +disable_so_cafe_nand_probe_fndecl_50477 cafe_nand_probe fndecl 0 50477 NULL
140221 +disable_so_udl_driver_load_fndecl_50482 udl_driver_load fndecl 0 50482 NULL
140222 +disable_so_ccp_enqueue_cmd_fndecl_50483 ccp_enqueue_cmd fndecl 0 50483 NULL
140223 +disable_so_ufx_config_sys_clk_fndecl_50490 ufx_config_sys_clk fndecl 0 50490 NULL nohasharray
140224 +disable_so_compat_update_counters_fndecl_50490 compat_update_counters fndecl 0 50490 &disable_so_ufx_config_sys_clk_fndecl_50490
140225 +disable_so_snd_sbmixer_add_ctl_fndecl_50491 snd_sbmixer_add_ctl fndecl 0 50491 NULL
140226 +disable_so_udf_new_block_fndecl_50500 udf_new_block fndecl 0 50500 NULL
140227 +disable_so_wl1271_scan_send_fndecl_50502 wl1271_scan_send fndecl 0 50502 NULL
140228 +disable_so_bt_6lowpan_connect_fndecl_50509 bt_6lowpan_connect fndecl 0 50509 NULL
140229 +disable_so_analog_init_port_fndecl_50524 analog_init_port fndecl 0 50524 NULL
140230 +disable_so_picolcd_probe_fndecl_50535 picolcd_probe fndecl 0 50535 NULL
140231 +disable_so_ecryptfs_keyring_auth_tok_for_sig_fndecl_50536 ecryptfs_keyring_auth_tok_for_sig fndecl 0 50536 NULL
140232 +disable_so__zd_iowrite32v_async_locked_fndecl_50537 _zd_iowrite32v_async_locked fndecl 0 50537 NULL nohasharray
140233 +disable_so_dccpd_seq_dccp_skb_cb_50537 dccpd_seq dccp_skb_cb 0 50537 &disable_so__zd_iowrite32v_async_locked_fndecl_50537
140234 +disable_so_bind_evtchn_to_irqhandler_fndecl_50547 bind_evtchn_to_irqhandler fndecl 0 50547 NULL nohasharray
140235 +disable_so_et131x_pci_init_fndecl_50547 et131x_pci_init fndecl 0 50547 &disable_so_bind_evtchn_to_irqhandler_fndecl_50547
140236 +disable_so_get_nodes_fndecl_50551 get_nodes fndecl 0 50551 NULL
140237 +disable_so_ax25_ioctl_fndecl_50552 ax25_ioctl fndecl 0 50552 NULL
140238 +disable_so___blkdev_issue_zeroout_fndecl_50559 __blkdev_issue_zeroout fndecl 0 50559 NULL
140239 +disable_so_csio_hw_wait_op_done_val_fndecl_50564 csio_hw_wait_op_done_val fndecl 0 50564 NULL
140240 +disable_so_intel_overlay_do_put_image_fndecl_50567 intel_overlay_do_put_image fndecl 0 50567 NULL
140241 +disable_so_img_y_zoran_jpg_settings_50573 img_y zoran_jpg_settings 0 50573 NULL
140242 +disable_so_sock_get_timestamp_fndecl_50582 sock_get_timestamp fndecl 0 50582 NULL
140243 +disable_so_do_write_kmem_fndecl_50584 do_write_kmem fndecl 0 50584 NULL
140244 +disable_so_bar_sz_ntb_mw_50601 bar_sz ntb_mw 0 50601 NULL
140245 +disable_so_pic_get_irq_fndecl_50614 pic_get_irq fndecl 0 50614 NULL
140246 +disable_so_qlcnic_83xx_issue_cmd_fndecl_50615 qlcnic_83xx_issue_cmd fndecl 0 50615 NULL
140247 +disable_so_ttm_mem_global_alloc_zone_fndecl_50630 ttm_mem_global_alloc_zone fndecl 0 50630 NULL
140248 +disable_so_ea_foreach_fndecl_50638 ea_foreach fndecl 0 50638 NULL
140249 +disable_so_setup_fritz_fndecl_50669 setup_fritz fndecl 0 50669 NULL
140250 +disable_so_snd_pcm_plug_format_plugins_fndecl_50675 snd_pcm_plug_format_plugins fndecl 0 50675 NULL
140251 +disable_so_generic_permission_fndecl_50685 generic_permission fndecl 0 50685 NULL
140252 +disable_so_xenbus_write_watch_fndecl_50695 xenbus_write_watch fndecl 0 50695 NULL
140253 +disable_so_ccp_perform_passthru_fndecl_50697 ccp_perform_passthru fndecl 0 50697 NULL
140254 +disable_so_xenkbd_probe_fndecl_50699 xenkbd_probe fndecl 0 50699 NULL
140255 +disable_so_sc18is602_wait_ready_fndecl_50717 sc18is602_wait_ready fndecl 0 50717 NULL
140256 +disable_so_get_device_info_fndecl_50718 get_device_info fndecl 0 50718 NULL
140257 +disable_so_data_size_usbtouch_usb_50738 data_size usbtouch_usb 0 50738 NULL
140258 +disable_so_jffs2_check_oob_empty_fndecl_50743 jffs2_check_oob_empty fndecl 0 50743 NULL
140259 +disable_so_vnic_cq_alloc_fndecl_50744 vnic_cq_alloc fndecl 0 50744 NULL
140260 +disable_so_assign_host_irq_fndecl_50752 assign_host_irq fndecl 0 50752 NULL
140261 +disable_so_mspro_block_read_attributes_fndecl_50756 mspro_block_read_attributes fndecl 0 50756 NULL
140262 +disable_so_usb_hcd_map_urb_for_dma_fndecl_50765 usb_hcd_map_urb_for_dma fndecl 0 50765 NULL
140263 +disable_so_ax88172a_bind_fndecl_50769 ax88172a_bind fndecl 0 50769 NULL
140264 +disable_so_cros_ec_check_result_fndecl_50770 cros_ec_check_result fndecl 0 50770 NULL
140265 +disable_so_usb6fire_comm_send_buffer_fndecl_50771 usb6fire_comm_send_buffer fndecl 0 50771 NULL
140266 +disable_so_test_add_free_space_entry_fndecl_50777 test_add_free_space_entry fndecl 0 50777 NULL
140267 +disable_so_ocrdma_copy_srq_uresp_fndecl_50781 ocrdma_copy_srq_uresp fndecl 0 50781 NULL
140268 +disable_so_inf_probe_fndecl_50789 inf_probe fndecl 0 50789 NULL
140269 +disable_so_osap_fndecl_50814 osap fndecl 0 50814 NULL
140270 +disable_so_sys_migrate_pages_fndecl_50818 sys_migrate_pages fndecl 0 50818 NULL
140271 +disable_so_ch341_set_baudrate_fndecl_50822 ch341_set_baudrate fndecl 0 50822 NULL
140272 +disable_so_carl9170_read_eeprom_fndecl_50835 carl9170_read_eeprom fndecl 0 50835 NULL
140273 +disable_so_insert_page_fndecl_50845 insert_page fndecl 0 50845 NULL
140274 +disable_so_ocfs2_compat_ioctl_fndecl_50846 ocfs2_compat_ioctl fndecl 0 50846 NULL
140275 +disable_so_decrypted_key_size_ecryptfs_session_key_50847 decrypted_key_size ecryptfs_session_key 0 50847 NULL nohasharray
140276 +disable_so_tpm_dev_add_device_fndecl_50847 tpm_dev_add_device fndecl 0 50847 &disable_so_decrypted_key_size_ecryptfs_session_key_50847
140277 +disable_so_dat_offset_brcmf_sdio_hdrinfo_50859 dat_offset brcmf_sdio_hdrinfo 0 50859 NULL
140278 +disable_so_virtio_pci_modern_probe_fndecl_50860 virtio_pci_modern_probe fndecl 0 50860 NULL
140279 +disable_so_do_walk_down_fndecl_50861 do_walk_down fndecl 0 50861 NULL
140280 +disable_so_drbd_adm_disk_opts_fndecl_50874 drbd_adm_disk_opts fndecl 0 50874 NULL
140281 +disable_so_htab_map_update_elem_fndecl_50880 htab_map_update_elem fndecl 0 50880 NULL
140282 +disable_so_hash_mac4_add_fndecl_50881 hash_mac4_add fndecl 0 50881 NULL
140283 +disable_so_selinux_set_mapping_fndecl_50894 selinux_set_mapping fndecl 0 50894 NULL
140284 +disable_so_r300_packet3_check_fndecl_50897 r300_packet3_check fndecl 0 50897 NULL
140285 +disable_so_netlbl_catmap_walkrng_fndecl_50910 netlbl_catmap_walkrng fndecl 0 50910 NULL
140286 +disable_so_ioc_rescan_fndecl_50914 ioc_rescan fndecl 0 50914 NULL
140287 +disable_so__transport_phy_speed_fndecl_50922 _transport_phy_speed fndecl 0 50922 NULL
140288 +disable_so_nouveau_display_vblank_init_fndecl_50924 nouveau_display_vblank_init fndecl 0 50924 NULL
140289 +disable_so_first_minor_gendisk_50925 first_minor gendisk 0 50925 NULL
140290 +disable_so_io_gameport_50931 io gameport 0 50931 NULL
140291 +disable_so_udbell_physbase_rdma_info_50936 udbell_physbase rdma_info 0 50936 NULL
140292 +disable_so_generic_file_open_fndecl_50937 generic_file_open fndecl 0 50937 NULL
140293 +disable_so___mnt_want_write_file_fndecl_50942 __mnt_want_write_file fndecl 0 50942 NULL
140294 +disable_so_mixart_dsp_load_fndecl_50953 mixart_dsp_load fndecl 0 50953 NULL
140295 +disable_so___vb2_get_done_vb_fndecl_50955 __vb2_get_done_vb fndecl 0 50955 NULL
140296 +disable_so_evt_result_i1480_50957 evt_result i1480 0 50957 NULL
140297 +disable_so_i40e_init_adminq_fndecl_50975 i40e_init_adminq fndecl 0 50975 NULL
140298 +disable_so__request_lock_fndecl_50985 _request_lock fndecl 0 50985 NULL
140299 +disable_so_do_get_mempolicy_fndecl_50990 do_get_mempolicy fndecl 0 50990 NULL
140300 +disable_so_bma150_register_polled_device_fndecl_50993 bma150_register_polled_device fndecl 0 50993 NULL nohasharray
140301 +disable_so_ptrace_peek_siginfo_fndecl_50993 ptrace_peek_siginfo fndecl 0 50993 &disable_so_bma150_register_polled_device_fndecl_50993 nohasharray
140302 +disable_so_dsp_free_ports_fndecl_50993 dsp_free_ports fndecl 0 50993 &disable_so_ptrace_peek_siginfo_fndecl_50993
140303 +disable_so_parse_checksum_fndecl_51007 parse_checksum fndecl 0 51007 NULL
140304 +disable_so_getkeycode_fndecl_51009 getkeycode fndecl 0 51009 NULL
140305 +disable_so_wm97xx_probe_fndecl_51019 wm97xx_probe fndecl 0 51019 NULL
140306 +disable_so_st_core_init_fndecl_51020 st_core_init fndecl 0 51020 NULL
140307 +disable_so_sg_count_realtek_pci_sdmmc_51022 sg_count realtek_pci_sdmmc 0 51022 NULL
140308 +disable_so_acpi_processor_get_platform_limit_fndecl_51025 acpi_processor_get_platform_limit fndecl 0 51025 NULL
140309 +disable_so_intel_init_hw_struct_fndecl_51032 intel_init_hw_struct fndecl 0 51032 NULL
140310 +disable_so_int_proc_write_fndecl_51045 int_proc_write fndecl 0 51045 NULL
140311 +disable_so_parse_gravepages_fndecl_51049 parse_gravepages fndecl 0 51049 NULL
140312 +disable_so_tm6000_init_fndecl_51058 tm6000_init fndecl 0 51058 NULL nohasharray
140313 +disable_so_romfs_dev_strnlen_fndecl_51058 romfs_dev_strnlen fndecl 0 51058 &disable_so_tm6000_init_fndecl_51058
140314 +disable_so_do_remove_conflicting_framebuffers_fndecl_51060 do_remove_conflicting_framebuffers fndecl 0 51060 NULL
140315 +disable_so_hex32_arg_fndecl_51080 hex32_arg fndecl 0 51080 NULL
140316 +disable_so_pcistub_init_device_fndecl_51087 pcistub_init_device fndecl 0 51087 NULL
140317 +disable_so_xfs_initialize_perag_fndecl_51088 xfs_initialize_perag fndecl 0 51088 NULL
140318 +disable_so_pp_write_fndecl_51089 pp_write fndecl 0 51089 NULL
140319 +disable_so_service_buffer_allocate_fndecl_51092 service_buffer_allocate fndecl 0 51092 NULL nohasharray
140320 +disable_so_via_alloc_desc_pages_fndecl_51092 via_alloc_desc_pages fndecl 0 51092 &disable_so_service_buffer_allocate_fndecl_51092
140321 +disable_so_ushc_probe_fndecl_51102 ushc_probe fndecl 0 51102 NULL
140322 +disable_so_msr_ioctl_fndecl_51103 msr_ioctl fndecl 0 51103 NULL
140323 +disable_so_mtdchar_compat_ioctl_fndecl_51105 mtdchar_compat_ioctl fndecl 0 51105 NULL
140324 +disable_so_msb_read_page_fndecl_51110 msb_read_page fndecl 0 51110 NULL
140325 +disable_so_h_back_porch_fb_cvt_data_51117 h_back_porch fb_cvt_data 0 51117 NULL
140326 +disable_so_ubr_zatm_dev_51119 ubr zatm_dev 0 51119 NULL
140327 +disable_so_avc_general_get_sig_fmt_fndecl_51120 avc_general_get_sig_fmt fndecl 0 51120 NULL
140328 +disable_so_iwl_mvm_update_beacon_abort_fndecl_51121 iwl_mvm_update_beacon_abort fndecl 0 51121 NULL
140329 +disable_so_compat_sys_waitid_fndecl_51123 compat_sys_waitid fndecl 0 51123 NULL
140330 +disable_so_nouveau_channel_init_fndecl_51135 nouveau_channel_init fndecl 0 51135 NULL
140331 +disable_so_ntfs_extent_mft_record_free_fndecl_51139 ntfs_extent_mft_record_free fndecl 0 51139 NULL
140332 +disable_so_pin_2_irq_fndecl_51140 pin_2_irq fndecl 0 51140 NULL nohasharray
140333 +disable_so_drm_dp_send_dpcd_write_fndecl_51140 drm_dp_send_dpcd_write fndecl 0 51140 &disable_so_pin_2_irq_fndecl_51140
140334 +disable_so_pn533_transceive_fndecl_51141 pn533_transceive fndecl 0 51141 NULL
140335 +disable_so_create_srq_kernel_fndecl_51143 create_srq_kernel fndecl 0 51143 NULL
140336 +disable_so_i2c_master_send_fndecl_51152 i2c_master_send fndecl 0 51152 NULL
140337 +disable_so_prepare_uptodate_page_fndecl_51157 prepare_uptodate_page fndecl 0 51157 NULL
140338 +disable_so_kvm_read_guest_cached_fndecl_51169 kvm_read_guest_cached fndecl 0 51169 NULL
140339 +disable_so___dev_alloc_name_fndecl_51173 __dev_alloc_name fndecl 0 51173 NULL nohasharray
140340 +disable_so_xt_compat_target_to_user_fndecl_51173 xt_compat_target_to_user fndecl 0 51173 &disable_so___dev_alloc_name_fndecl_51173
140341 +disable_so_do_surface_dirty_sou_fndecl_51181 do_surface_dirty_sou fndecl 0 51181 NULL
140342 +disable_so_pn533_probe_fndecl_51194 pn533_probe fndecl 0 51194 NULL
140343 +disable_so_ethtool_set_value_void_fndecl_51198 ethtool_set_value_void fndecl 0 51198 NULL
140344 +disable_so_mptsas_sas_io_unit_pg0_fndecl_51200 mptsas_sas_io_unit_pg0 fndecl 0 51200 NULL
140345 +disable_so_amb_open_fndecl_51210 amb_open fndecl 0 51210 NULL
140346 +disable_so_read_smc_fndecl_51216 read_smc fndecl 0 51216 NULL
140347 +disable_so_compat_match_to_user_fndecl_51217 compat_match_to_user fndecl 0 51217 NULL
140348 +disable_so_nouveau_bo_vma_add_fndecl_51227 nouveau_bo_vma_add fndecl 0 51227 NULL
140349 +disable_so_xfs_filestream_mount_fndecl_51238 xfs_filestream_mount fndecl 0 51238 NULL
140350 +disable_so_led_trigger_register_fndecl_51239 led_trigger_register fndecl 0 51239 NULL
140351 +disable_so_chipio_read_data_fndecl_51240 chipio_read_data fndecl 0 51240 NULL
140352 +disable_so_tda998x_encoder_init_fndecl_51243 tda998x_encoder_init fndecl 0 51243 NULL
140353 +disable_so_unlinked_urb_51246 unlinked urb 0 51246 NULL
140354 +disable_so_max_gs_mlx4_ib_wq_51251 max_gs mlx4_ib_wq 0 51251 NULL nohasharray
140355 +disable_so_cdev_add_fndecl_51251 cdev_add fndecl 0 51251 &disable_so_max_gs_mlx4_ib_wq_51251
140356 +disable_so_inet_csk_listen_start_fndecl_51274 inet_csk_listen_start fndecl 0 51274 NULL
140357 +disable_so_bnx2x_sriov_info_fndecl_51275 bnx2x_sriov_info fndecl 0 51275 NULL
140358 +disable_so_snd_usbmidi_detect_yamaha_fndecl_51282 snd_usbmidi_detect_yamaha fndecl 0 51282 NULL
140359 +disable_so_ext3_new_block_fndecl_51283 ext3_new_block fndecl 0 51283 NULL
140360 +disable_so_saa7146_init_one_fndecl_51284 saa7146_init_one fndecl 0 51284 NULL
140361 +disable_so_validate_unlock_args_fndecl_51285 validate_unlock_args fndecl 0 51285 NULL
140362 +disable_so_tpci200_install_fndecl_51291 tpci200_install fndecl 0 51291 NULL
140363 +disable_so_xfs_rtallocate_range_fndecl_51292 xfs_rtallocate_range fndecl 0 51292 NULL
140364 +disable_so_root_lnum_ubifs_mst_node_51297 root_lnum ubifs_mst_node 0 51297 NULL nohasharray
140365 +disable_so_evbug_connect_fndecl_51297 evbug_connect fndecl 0 51297 &disable_so_root_lnum_ubifs_mst_node_51297
140366 +disable_so_xfs_qm_dqrepair_fndecl_51301 xfs_qm_dqrepair fndecl 0 51301 NULL
140367 +disable_so_set_pages_array_wc_fndecl_51311 set_pages_array_wc fndecl 0 51311 NULL
140368 +disable_so_spi_register_master_fndecl_51315 spi_register_master fndecl 0 51315 NULL
140369 +disable_so_t4_fw_halt_fndecl_51316 t4_fw_halt fndecl 0 51316 NULL
140370 +disable_so_b43legacy_one_core_attach_fndecl_51318 b43legacy_one_core_attach fndecl 0 51318 NULL
140371 +disable_so___mlx4_cmd_fndecl_51319 __mlx4_cmd fndecl 0 51319 NULL
140372 +disable_so_qlcnic_ms_mem_write128_fndecl_51320 qlcnic_ms_mem_write128 fndecl 0 51320 NULL
140373 +disable_so_rose_del_node_fndecl_51328 rose_del_node fndecl 0 51328 NULL
140374 +disable_so_altera_goto_jstate_fndecl_51337 altera_goto_jstate fndecl 0 51337 NULL
140375 +disable_so_dev_change_flags_fndecl_51349 dev_change_flags fndecl 0 51349 NULL
140376 +disable_so_omap1_spi100k_setup_transfer_fndecl_51353 omap1_spi100k_setup_transfer fndecl 0 51353 NULL
140377 +disable_so_ip_mroute_setsockopt_fndecl_51365 ip_mroute_setsockopt fndecl 0 51365 NULL nohasharray
140378 +disable_so_ida_simple_get_fndecl_51365 ida_simple_get fndecl 0 51365 &disable_so_ip_mroute_setsockopt_fndecl_51365
140379 +disable_so__base_wait_for_iocstate_fndecl_51368 _base_wait_for_iocstate fndecl 0 51368 NULL
140380 +disable_so_jffs2_get_inode_nodes_fndecl_51381 jffs2_get_inode_nodes fndecl 0 51381 NULL nohasharray
140381 +disable_so_xfs_file_compat_ioctl_fndecl_51381 xfs_file_compat_ioctl fndecl 0 51381 &disable_so_jffs2_get_inode_nodes_fndecl_51381
140382 +disable_so_ubifs_tnc_start_commit_fndecl_51382 ubifs_tnc_start_commit fndecl 0 51382 NULL
140383 +disable_so_reshape_progress_r10conf_51390 reshape_progress r10conf 0 51390 NULL
140384 +disable_so_kfd_parse_subtype_fndecl_51396 kfd_parse_subtype fndecl 0 51396 NULL
140385 +disable_so_rtsx_pci_acquire_irq_fndecl_51400 rtsx_pci_acquire_irq fndecl 0 51400 NULL
140386 +disable_so_ntb_transport_init_fndecl_51409 ntb_transport_init fndecl 0 51409 NULL
140387 +disable_so_ext4_ext_next_allocated_block_fndecl_51410 ext4_ext_next_allocated_block fndecl 0 51410 NULL
140388 +disable_so_savage_bci_cmdbuf_fndecl_51424 savage_bci_cmdbuf fndecl 0 51424 NULL
140389 +disable_so__write_mirror_fndecl_51437 _write_mirror fndecl 0 51437 NULL
140390 +disable_so_fdtv_register_rc_fndecl_51441 fdtv_register_rc fndecl 0 51441 NULL
140391 +disable_so_check_stack_write_fndecl_51461 check_stack_write fndecl 0 51461 NULL nohasharray
140392 +disable_so_rx_urb_size_usbnet_51461 rx_urb_size usbnet 0 51461 &disable_so_check_stack_write_fndecl_51461
140393 +disable_so_concat_dev_erase_fndecl_51463 concat_dev_erase fndecl 0 51463 NULL
140394 +disable_so_stk1160_i2c_register_fndecl_51464 stk1160_i2c_register fndecl 0 51464 NULL
140395 +disable_so_snd_pcm_oss_open_file_fndecl_51478 snd_pcm_oss_open_file fndecl 0 51478 NULL
140396 +disable_so__base_diag_reset_fndecl_51479 _base_diag_reset fndecl 0 51479 NULL
140397 +disable_so_pccard_validate_cis_fndecl_51503 pccard_validate_cis fndecl 0 51503 NULL
140398 +disable_so_nfsd_racache_init_fndecl_51504 nfsd_racache_init fndecl 0 51504 NULL
140399 +disable_so_xfer_len_scb_platform_data_51509 xfer_len scb_platform_data 0 51509 NULL
140400 +disable_so_wl12xx_cmd_role_stop_dev_fndecl_51515 wl12xx_cmd_role_stop_dev fndecl 0 51515 NULL
140401 +disable_so_hermes_plug_pdi_fndecl_51519 hermes_plug_pdi fndecl 0 51519 NULL
140402 +disable_so_mcp23s08_irq_setup_fndecl_51538 mcp23s08_irq_setup fndecl 0 51538 NULL
140403 +disable_so_mft_no__ntfs_inode_51541 mft_no _ntfs_inode 0 51541 NULL
140404 +disable_so_lx_init_get_version_features_fndecl_51542 lx_init_get_version_features fndecl 0 51542 NULL nohasharray
140405 +disable_so_proc_tcp_fastopen_key_fndecl_51542 proc_tcp_fastopen_key fndecl 0 51542 &disable_so_lx_init_get_version_features_fndecl_51542
140406 +disable_so_scan_bytes_iio_dev_51546 scan_bytes iio_dev 0 51546 NULL
140407 +disable_so_vfs_readv_fndecl_51560 vfs_readv fndecl 0 51560 NULL
140408 +disable_so_size_mdp_superblock_1_51572 size mdp_superblock_1 0 51572 NULL
140409 +disable_so_rds_rdma_extra_size_fndecl_51573 rds_rdma_extra_size fndecl 0 51573 NULL
140410 +disable_so_wl1251_acx_rx_msdu_life_time_fndecl_51591 wl1251_acx_rx_msdu_life_time fndecl 0 51591 NULL
140411 +disable_so_vmw_cmd_check_define_gmrfb_fndecl_51593 vmw_cmd_check_define_gmrfb fndecl 0 51593 NULL
140412 +disable_so__stb0899_read_reg_fndecl_51594 _stb0899_read_reg fndecl 0 51594 NULL
140413 +disable_so_cciss_ioctl_fndecl_51610 cciss_ioctl fndecl 0 51610 NULL
140414 +disable_so_patch_ca0110_fndecl_51619 patch_ca0110 fndecl 0 51619 NULL
140415 +disable_so_dlm_config_nodes_fndecl_51621 dlm_config_nodes fndecl 0 51621 NULL
140416 +disable_so_sysfs_do_create_link_fndecl_51632 sysfs_do_create_link fndecl 0 51632 NULL nohasharray
140417 +disable_so_sirdev_schedule_request_fndecl_51632 sirdev_schedule_request fndecl 0 51632 &disable_so_sysfs_do_create_link_fndecl_51632
140418 +disable_so__iwl_dbgfs_fw_dbg_conf_write_fndecl_51633 _iwl_dbgfs_fw_dbg_conf_write fndecl 0 51633 NULL
140419 +disable_so_vlan_gvrp_init_applicant_fndecl_51645 vlan_gvrp_init_applicant fndecl 0 51645 NULL
140420 +disable_so_set_vesa_blanking_fndecl_51647 set_vesa_blanking fndecl 0 51647 NULL
140421 +disable_so_xpad_probe_fndecl_51650 xpad_probe fndecl 0 51650 NULL
140422 +disable_so_snd_pcm_new_fndecl_51660 snd_pcm_new fndecl 0 51660 NULL
140423 +disable_so_ioctl_fsfreeze_fndecl_51661 ioctl_fsfreeze fndecl 0 51661 NULL nohasharray
140424 +disable_so_inet_set_ifa_fndecl_51661 inet_set_ifa fndecl 0 51661 &disable_so_ioctl_fsfreeze_fndecl_51661
140425 +disable_so_tm6000_cards_setup_fndecl_51667 tm6000_cards_setup fndecl 0 51667 NULL
140426 +disable_so_rawmidi_open_priv_fndecl_51672 rawmidi_open_priv fndecl 0 51672 NULL
140427 +disable_so_vmw_kms_present_fndecl_51681 vmw_kms_present fndecl 0 51681 NULL
140428 +disable_so_bfad_vport_create_fndecl_51685 bfad_vport_create fndecl 0 51685 NULL
140429 +disable_so_lanai_init_one_fndecl_51689 lanai_init_one fndecl 0 51689 NULL
140430 +disable_so_mptctl_eventreport_fndecl_51690 mptctl_eventreport fndecl 0 51690 NULL
140431 +disable_so_create_hp_mic_jack_mode_fndecl_51691 create_hp_mic_jack_mode fndecl 0 51691 NULL
140432 +disable_so_snd_als300_ac97_fndecl_51692 snd_als300_ac97 fndecl 0 51692 NULL
140433 +disable_so_lower_first_uid_gid_extent_51714 lower_first uid_gid_extent 0 51714 NULL
140434 +disable_so_hsync_len_fb_videomode_51719 hsync_len fb_videomode 0 51719 NULL nohasharray
140435 +disable_so_bar2_pa_c4iw_rdev_51719 bar2_pa c4iw_rdev 0 51719 &disable_so_hsync_len_fb_videomode_51719
140436 +disable_so_iscsit_dump_data_payload_fndecl_51720 iscsit_dump_data_payload fndecl 0 51720 NULL
140437 +disable_so_nlimbs_gcry_mpi_51721 nlimbs gcry_mpi 0 51721 NULL
140438 +disable_so_rx_ring_num_mlx4_en_priv_51723 rx_ring_num mlx4_en_priv 0 51723 NULL
140439 +disable_so_probe_fndecl_51727 probe fndecl 0 51727 NULL nohasharray
140440 +disable_so_wl12xx_cmd_role_start_sta_fndecl_51727 wl12xx_cmd_role_start_sta fndecl 0 51727 &disable_so_probe_fndecl_51727
140441 +disable_so_zr36060_setup_fndecl_51737 zr36060_setup fndecl 0 51737 NULL
140442 +disable_so_find_next_usable_block_fndecl_51759 find_next_usable_block fndecl 0 51759 NULL
140443 +disable_so_fetch_stats_fndecl_51766 fetch_stats fndecl 0 51766 NULL nohasharray
140444 +disable_so_rxbuf_size_alx_priv_51766 rxbuf_size alx_priv 0 51766 &disable_so_fetch_stats_fndecl_51766
140445 +disable_so_ext4_mb_init_fndecl_51769 ext4_mb_init fndecl 0 51769 NULL nohasharray
140446 +disable_so_num_var_ranges_vardecl_51769 num_var_ranges vardecl 0 51769 &disable_so_ext4_mb_init_fndecl_51769
140447 +disable_so_ls_slot_dlm_ls_51774 ls_slot dlm_ls 0 51774 NULL
140448 +disable_so_snd_rme32_capture_getrate_fndecl_51779 snd_rme32_capture_getrate fndecl 0 51779 NULL
140449 +disable_so_acpi_processor_get_performance_control_fndecl_51792 acpi_processor_get_performance_control fndecl 0 51792 NULL nohasharray
140450 +disable_so_pci_bar2_map_lpfc_hba_51792 pci_bar2_map lpfc_hba 0 51792 &disable_so_acpi_processor_get_performance_control_fndecl_51792
140451 +disable_so_inittiger_fndecl_51796 inittiger fndecl 0 51796 NULL
140452 +disable_so_iwl_mvm_mac_ctxt_cmd_listener_fndecl_51799 iwl_mvm_mac_ctxt_cmd_listener fndecl 0 51799 NULL
140453 +disable_so___genl_register_family_fndecl_51801 __genl_register_family fndecl 0 51801 NULL
140454 +disable_so_pt1_unlock_fndecl_51822 pt1_unlock fndecl 0 51822 NULL
140455 +disable_so__ctl_diag_query_fndecl_51823 _ctl_diag_query fndecl 0 51823 NULL
140456 +disable_so_mic_map_single_fndecl_51828 mic_map_single fndecl 0 51828 NULL
140457 +disable_so_creg_queue_cmd_fndecl_51835 creg_queue_cmd fndecl 0 51835 NULL
140458 +disable_so_ramfs_fill_super_fndecl_51836 ramfs_fill_super fndecl 0 51836 NULL nohasharray
140459 +disable_so_cy_get_serial_info_fndecl_51836 cy_get_serial_info fndecl 0 51836 &disable_so_ramfs_fill_super_fndecl_51836
140460 +disable_so_xfs_bmap_btalloc_filestreams_fndecl_51838 xfs_bmap_btalloc_filestreams fndecl 0 51838 NULL
140461 +disable_so_do_pci_enable_device_fndecl_51841 do_pci_enable_device fndecl 0 51841 NULL
140462 +disable_so_max_bdi_bd_list_51847 max_bdi bd_list 0 51847 NULL
140463 +disable_so_ipv6_renew_option_fndecl_51854 ipv6_renew_option fndecl 0 51854 NULL
140464 +disable_so_vlan_check_real_dev_fndecl_51855 vlan_check_real_dev fndecl 0 51855 NULL
140465 +disable_so_gpiod_get_array_fndecl_51859 gpiod_get_array fndecl 0 51859 NULL
140466 +disable_so_dlm_search_rsb_tree_fndecl_51864 dlm_search_rsb_tree fndecl 0 51864 NULL
140467 +disable_so_snd_soc_register_platform_fndecl_51865 snd_soc_register_platform fndecl 0 51865 NULL
140468 +disable_so_lright_ext4_allocation_request_51877 lright ext4_allocation_request 0 51877 NULL
140469 +disable_so_sst_create_ipc_msg_fndecl_51882 sst_create_ipc_msg fndecl 0 51882 NULL
140470 +disable_so_efx_ptp_set_ts_config_fndecl_51884 efx_ptp_set_ts_config fndecl 0 51884 NULL
140471 +disable_so_efx_mcdi_phy_probe_fndecl_51891 efx_mcdi_phy_probe fndecl 0 51891 NULL
140472 +disable_so_cw1200_load_firmware_cw1200_fndecl_51898 cw1200_load_firmware_cw1200 fndecl 0 51898 NULL
140473 +disable_so_drm_plane_check_pixel_format_fndecl_51903 drm_plane_check_pixel_format fndecl 0 51903 NULL
140474 +disable_so_dlm_query_region_handler_fndecl_51906 dlm_query_region_handler fndecl 0 51906 NULL
140475 +disable_so_snd_hdac_refresh_widgets_fndecl_51917 snd_hdac_refresh_widgets fndecl 0 51917 NULL
140476 +disable_so_bch_cached_dev_attach_fndecl_51934 bch_cached_dev_attach fndecl 0 51934 NULL
140477 +disable_so_process_access_response_fndecl_51936 process_access_response fndecl 0 51936 NULL
140478 +disable_so_snd_intel8x0m_ich_chip_init_fndecl_51943 snd_intel8x0m_ich_chip_init fndecl 0 51943 NULL
140479 +disable_so_ntb_device_setup_fndecl_51944 ntb_device_setup fndecl 0 51944 NULL
140480 +disable_so_nci_core_conn_create_fndecl_51946 nci_core_conn_create fndecl 0 51946 NULL
140481 +disable_so_kv_dpm_init_fndecl_51955 kv_dpm_init fndecl 0 51955 NULL
140482 +disable_so_sas_ex_general_fndecl_51956 sas_ex_general fndecl 0 51956 NULL
140483 +disable_so_hdlc_open_fndecl_51966 hdlc_open fndecl 0 51966 NULL
140484 +disable_so_read_port_table_lengths_fndecl_51976 read_port_table_lengths fndecl 0 51976 NULL
140485 +disable_so_pmcraid_copy_sglist_fndecl_51980 pmcraid_copy_sglist fndecl 0 51980 NULL
140486 +disable_so_rt2x00queue_allocate_fndecl_51985 rt2x00queue_allocate fndecl 0 51985 NULL
140487 +disable_so_send_packet_fndecl_51995 send_packet fndecl 0 51995 NULL
140488 +disable_so_kvm_write_guest_fndecl_52005 kvm_write_guest fndecl 0 52005 NULL
140489 +disable_so_idt77252_open_fndecl_52007 idt77252_open fndecl 0 52007 NULL
140490 +disable_so_videobuf_waiton_fndecl_52008 videobuf_waiton fndecl 0 52008 NULL
140491 +disable_so_wl1271_acx_frag_threshold_fndecl_52009 wl1271_acx_frag_threshold fndecl 0 52009 NULL
140492 +disable_so_ib_get_cached_pkey_fndecl_52011 ib_get_cached_pkey fndecl 0 52011 NULL
140493 +disable_so_cpuidle_add_sysfs_fndecl_52026 cpuidle_add_sysfs fndecl 0 52026 NULL
140494 +disable_so_dev_set_mtu_fndecl_52028 dev_set_mtu fndecl 0 52028 NULL
140495 +disable_so_xfrm_dump_sa_fndecl_52034 xfrm_dump_sa fndecl 0 52034 NULL
140496 +disable_so_ipip6_tunnel_get_prl_fndecl_52036 ipip6_tunnel_get_prl fndecl 0 52036 NULL nohasharray
140497 +disable_so_c_height_g2d_frame_52036 c_height g2d_frame 0 52036 &disable_so_ipip6_tunnel_get_prl_fndecl_52036
140498 +disable_so_ttm_dma_page_alloc_init_fndecl_52037 ttm_dma_page_alloc_init fndecl 0 52037 NULL
140499 +disable_so_mapbase_priv_52038 mapbase priv 0 52038 NULL
140500 +disable_so_ipw_get_fw_fndecl_52044 ipw_get_fw fndecl 0 52044 NULL
140501 +disable_so_btrfs_next_old_leaf_fndecl_52050 btrfs_next_old_leaf fndecl 0 52050 NULL
140502 +disable_so__iwl_dbgfs_scan_ant_rxchain_write_fndecl_52060 _iwl_dbgfs_scan_ant_rxchain_write fndecl 0 52060 NULL
140503 +disable_so_mwl8k_cmd_set_wmm_mode_fndecl_52066 mwl8k_cmd_set_wmm_mode fndecl 0 52066 NULL
140504 +disable_so_wait_for_free_credits_fndecl_52082 wait_for_free_credits fndecl 0 52082 NULL nohasharray
140505 +disable_so_ipxitf_create_internal_fndecl_52082 ipxitf_create_internal fndecl 0 52082 &disable_so_wait_for_free_credits_fndecl_52082
140506 +disable_so_btrfs_discard_extent_fndecl_52096 btrfs_discard_extent fndecl 0 52096 NULL
140507 +disable_so_assoc_rem_len_amp_ctrl_52099 assoc_rem_len amp_ctrl 0 52099 NULL
140508 +disable_so_btindex_jfs_inode_info_52105 btindex jfs_inode_info 0 52105 NULL
140509 +disable_so_cma_iboe_join_multicast_fndecl_52126 cma_iboe_join_multicast fndecl 0 52126 NULL
140510 +disable_so_copy_ctl_value_to_user_fndecl_52136 copy_ctl_value_to_user fndecl 0 52136 NULL
140511 +disable_so___fat_write_inode_fndecl_52140 __fat_write_inode fndecl 0 52140 NULL
140512 +disable_so_snd_ak4113_create_fndecl_52143 snd_ak4113_create fndecl 0 52143 NULL
140513 +disable_so_ipheth_alloc_urbs_fndecl_52145 ipheth_alloc_urbs fndecl 0 52145 NULL nohasharray
140514 +disable_so_tipc_disc_create_fndecl_52145 tipc_disc_create fndecl 0 52145 &disable_so_ipheth_alloc_urbs_fndecl_52145
140515 +disable_so_con_font_default_fndecl_52148 con_font_default fndecl 0 52148 NULL
140516 +disable_so_nl80211_trigger_scan_fndecl_52151 nl80211_trigger_scan fndecl 0 52151 NULL
140517 +disable_so_mpx_mmap_fndecl_52167 mpx_mmap fndecl 0 52167 NULL nohasharray
140518 +disable_so_nvkm_object_create__fndecl_52167 nvkm_object_create_ fndecl 0 52167 &disable_so_mpx_mmap_fndecl_52167
140519 +disable_so_ip_ra_control_fndecl_52169 ip_ra_control fndecl 0 52169 NULL nohasharray
140520 +disable_so_set_mode_densblk_fndecl_52169 set_mode_densblk fndecl 0 52169 &disable_so_ip_ra_control_fndecl_52169
140521 +disable_so_mwl8k_create_ba_fndecl_52170 mwl8k_create_ba fndecl 0 52170 NULL
140522 +disable_so_smb_send_kvec_fndecl_52185 smb_send_kvec fndecl 0 52185 NULL
140523 +disable_so___reiserfs_write_begin_fndecl_52188 __reiserfs_write_begin fndecl 0 52188 NULL nohasharray
140524 +disable_so_rd_allocate_sgl_table_fndecl_52188 rd_allocate_sgl_table fndecl 0 52188 &disable_so___reiserfs_write_begin_fndecl_52188
140525 +disable_so_ieee80211_check_queues_fndecl_52191 ieee80211_check_queues fndecl 0 52191 NULL
140526 +disable_so_qp_broker_alloc_fndecl_52197 qp_broker_alloc fndecl 0 52197 NULL
140527 +disable_so_tb_eeprom_out_fndecl_52203 tb_eeprom_out fndecl 0 52203 NULL
140528 +disable_so_mmc_send_cxd_data_fndecl_52204 mmc_send_cxd_data fndecl 0 52204 NULL
140529 +disable_so_wl1271_ap_init_qos_null_template_fndecl_52209 wl1271_ap_init_qos_null_template fndecl 0 52209 NULL
140530 +disable_so_bnx2_acquire_nvram_lock_fndecl_52212 bnx2_acquire_nvram_lock fndecl 0 52212 NULL
140531 +disable_so___ath6kl_init_hw_start_fndecl_52221 __ath6kl_init_hw_start fndecl 0 52221 NULL
140532 +disable_so_trusted_tpm_send_fndecl_52236 trusted_tpm_send fndecl 0 52236 NULL
140533 +disable_so_r100_cs_parse_fndecl_52243 r100_cs_parse fndecl 0 52243 NULL
140534 +disable_so_i40e_vc_get_vf_resources_msg_fndecl_52250 i40e_vc_get_vf_resources_msg fndecl 0 52250 NULL
140535 +disable_so_iwl_mvm_config_scan_fndecl_52253 iwl_mvm_config_scan fndecl 0 52253 NULL nohasharray
140536 +disable_so_snd_rawmidi_ioctl_fndecl_52253 snd_rawmidi_ioctl fndecl 0 52253 &disable_so_iwl_mvm_config_scan_fndecl_52253
140537 +disable_so___ww_mutex_lock_slowpath_fndecl_52254 __ww_mutex_lock_slowpath fndecl 0 52254 NULL
140538 +disable_so_snd_pcm_plugin_build_io_fndecl_52255 snd_pcm_plugin_build_io fndecl 0 52255 NULL nohasharray
140539 +disable_so_snd_hda_get_conn_list_fndecl_52255 snd_hda_get_conn_list fndecl 0 52255 &disable_so_snd_pcm_plugin_build_io_fndecl_52255
140540 +disable_so_alc_codec_rename_from_preset_fndecl_52257 alc_codec_rename_from_preset fndecl 0 52257 NULL
140541 +disable_so_pd_idx_stripe_head_52269 pd_idx stripe_head 0 52269 NULL nohasharray
140542 +disable_so_mlx4_ib_init_alias_guid_service_fndecl_52269 mlx4_ib_init_alias_guid_service fndecl 0 52269 &disable_so_pd_idx_stripe_head_52269
140543 +disable_so_pvr2_hdw_get_eeprom_addr_fndecl_52271 pvr2_hdw_get_eeprom_addr fndecl 0 52271 NULL
140544 +disable_so_dvb_usb_init_fndecl_52279 dvb_usb_init fndecl 0 52279 NULL
140545 +disable_so_picolcd_init_keys_fndecl_52298 picolcd_init_keys fndecl 0 52298 NULL
140546 +disable_so_fuse_notify_store_fndecl_52302 fuse_notify_store fndecl 0 52302 NULL nohasharray
140547 +disable_so_em28xx_v4l2_init_fndecl_52302 em28xx_v4l2_init fndecl 0 52302 &disable_so_fuse_notify_store_fndecl_52302
140548 +disable_so_snd_cs4281_chip_init_fndecl_52306 snd_cs4281_chip_init fndecl 0 52306 NULL
140549 +disable_so_btrfs_insert_delayed_items_fndecl_52308 btrfs_insert_delayed_items fndecl 0 52308 NULL
140550 +disable_so_xt_init_fndecl_52313 xt_init fndecl 0 52313 NULL
140551 +disable_so___btrfs_inc_extent_ref_fndecl_52325 __btrfs_inc_extent_ref fndecl 0 52325 NULL
140552 +disable_so_iwl_dbgfs_d3_sram_read_fndecl_52326 iwl_dbgfs_d3_sram_read fndecl 0 52326 NULL
140553 +disable_so_ide_cd_read_toc_fndecl_52338 ide_cd_read_toc fndecl 0 52338 NULL
140554 +disable_so_ocfs2_info_handle_fndecl_52343 ocfs2_info_handle fndecl 0 52343 NULL
140555 +disable_so_xfs_fs_fill_super_fndecl_52344 xfs_fs_fill_super fndecl 0 52344 NULL
140556 +disable_so_iscsi_target_init_module_fndecl_52347 iscsi_target_init_module fndecl 0 52347 NULL
140557 +disable_so_atc_identify_card_fndecl_52356 atc_identify_card fndecl 0 52356 NULL nohasharray
140558 +disable_so_mac_header_sk_buff_52356 mac_header sk_buff 0 52356 &disable_so_atc_identify_card_fndecl_52356
140559 +disable_so_agpioc_reserve_wrap_fndecl_52357 agpioc_reserve_wrap fndecl 0 52357 NULL nohasharray
140560 +disable_so_devinet_ioctl_fndecl_52357 devinet_ioctl fndecl 0 52357 &disable_so_agpioc_reserve_wrap_fndecl_52357
140561 +disable_so_nr_upid_52360 nr upid 0 52360 NULL
140562 +disable_so_wlcore_acx_average_rssi_fndecl_52373 wlcore_acx_average_rssi fndecl 0 52373 NULL
140563 +disable_so_prot_queue_del_fndecl_52377 prot_queue_del fndecl 0 52377 NULL
140564 +disable_so_bind_get_fndecl_52379 bind_get fndecl 0 52379 NULL
140565 +disable_so_drm_plane_helper_check_update_fndecl_52384 drm_plane_helper_check_update fndecl 0 52384 NULL
140566 +disable_so_si2157_probe_fndecl_52401 si2157_probe fndecl 0 52401 NULL
140567 +disable_so_length_TAG_TW_SG_Entry_52403 length TAG_TW_SG_Entry 0 52403 NULL
140568 +disable_so_t4vf_wait_dev_ready_fndecl_52423 t4vf_wait_dev_ready fndecl 0 52423 NULL
140569 +disable_so_lpfc_sli4_post_scsi_sgl_list_fndecl_52424 lpfc_sli4_post_scsi_sgl_list fndecl 0 52424 NULL
140570 +disable_so___dev_set_promiscuity_fndecl_52427 __dev_set_promiscuity fndecl 0 52427 NULL
140571 +disable_so_composite_bind_fndecl_52434 composite_bind fndecl 0 52434 NULL
140572 +disable_so_dvb_max_pkt_size_isoc_em28xx_52444 dvb_max_pkt_size_isoc em28xx 0 52444 NULL
140573 +disable_so_zlib_inflateReset_fndecl_52447 zlib_inflateReset fndecl 0 52447 NULL
140574 +disable_so_bulk_out_size_usb_serial_port_52448 bulk_out_size usb_serial_port 0 52448 NULL
140575 +disable_so_rocker_flow_tbl_ucast4_routing_fndecl_52456 rocker_flow_tbl_ucast4_routing fndecl 0 52456 NULL
140576 +disable_so_isr_get_status_response_fndecl_52480 isr_get_status_response fndecl 0 52480 NULL
140577 +disable_so_svc_setsockopt_fndecl_52511 svc_setsockopt fndecl 0 52511 NULL
140578 +disable_so_net_hwtstamp_validate_fndecl_52512 net_hwtstamp_validate fndecl 0 52512 NULL
140579 +disable_so_rose_rt_ioctl_fndecl_52513 rose_rt_ioctl fndecl 0 52513 NULL
140580 +disable_so_nouveau_drm_probe_fndecl_52521 nouveau_drm_probe fndecl 0 52521 NULL
140581 +disable_so_netlbl_af4list_add_fndecl_52528 netlbl_af4list_add fndecl 0 52528 NULL
140582 +disable_so_iov_offset_iov_iter_52535 iov_offset iov_iter 0 52535 NULL
140583 +disable_so_send_next_seg_fndecl_52542 send_next_seg fndecl 0 52542 NULL
140584 +disable_so_ipack_device_read_id_fndecl_52553 ipack_device_read_id fndecl 0 52553 NULL
140585 +disable_so_ovfx2_i2c_r_fndecl_52555 ovfx2_i2c_r fndecl 0 52555 NULL
140586 +disable_so_usb_8dev_send_cmd_fndecl_52584 usb_8dev_send_cmd fndecl 0 52584 NULL
140587 +disable_so_xfs_btree_check_sptr_fndecl_52587 xfs_btree_check_sptr fndecl 0 52587 NULL nohasharray
140588 +disable_so___tm6000_ir_int_start_fndecl_52587 __tm6000_ir_int_start fndecl 0 52587 &disable_so_xfs_btree_check_sptr_fndecl_52587
140589 +disable_so_wl1251_acx_feature_cfg_fndecl_52589 wl1251_acx_feature_cfg fndecl 0 52589 NULL
140590 +disable_so_ide_host_register_fndecl_52611 ide_host_register fndecl 0 52611 NULL
140591 +disable_so_ipmi_open_fndecl_52615 ipmi_open fndecl 0 52615 NULL
140592 +disable_so_max_sge_ib_device_attr_52617 max_sge ib_device_attr 0 52617 NULL
140593 +disable_so_adpt_system_info_fndecl_52621 adpt_system_info fndecl 0 52621 NULL
140594 +disable_so_md_set_readonly_fndecl_52637 md_set_readonly fndecl 0 52637 NULL nohasharray
140595 +disable_so_setxattr_fndecl_52637 setxattr fndecl 0 52637 &disable_so_md_set_readonly_fndecl_52637
140596 +disable_so_erst_write_fndecl_52643 erst_write fndecl 0 52643 NULL
140597 +disable_so_netlbl_unlabel_defconf_fndecl_52648 netlbl_unlabel_defconf fndecl 0 52648 NULL
140598 +disable_so_qp_broker_create_fndecl_52654 qp_broker_create fndecl 0 52654 NULL
140599 +disable_so_asd_poll_flash_fndecl_52660 asd_poll_flash fndecl 0 52660 NULL
140600 +disable_so_btrfs_update_root_fndecl_52664 btrfs_update_root fndecl 0 52664 NULL
140601 +disable_so_sys_utimensat_fndecl_52666 sys_utimensat fndecl 0 52666 NULL
140602 +disable_so_logfs_write_rec_fndecl_52675 logfs_write_rec fndecl 0 52675 NULL
140603 +disable_so_powernow_k8_cpu_init_acpi_fndecl_52681 powernow_k8_cpu_init_acpi fndecl 0 52681 NULL
140604 +disable_so_urb_done_max3421_hcd_52691 urb_done max3421_hcd 0 52691 NULL nohasharray
140605 +disable_so_vlan_mvrp_init_applicant_fndecl_52691 vlan_mvrp_init_applicant fndecl 0 52691 &disable_so_urb_done_max3421_hcd_52691 nohasharray
140606 +disable_so_ceph_pagelist_reserve_fndecl_52691 ceph_pagelist_reserve fndecl 0 52691 &disable_so_vlan_mvrp_init_applicant_fndecl_52691
140607 +disable_so_zram_init_fndecl_52698 zram_init fndecl 0 52698 NULL
140608 +disable_so__iwl_dbgfs_bcast_filters_macs_write_fndecl_52702 _iwl_dbgfs_bcast_filters_macs_write fndecl 0 52702 NULL
140609 +disable_so_xlog_grant_head_check_fndecl_52719 xlog_grant_head_check fndecl 0 52719 NULL
140610 +disable_so___hw_addr_add_fndecl_52752 __hw_addr_add fndecl 0 52752 NULL
140611 +disable_so_ethtool_reset_fndecl_52754 ethtool_reset fndecl 0 52754 NULL
140612 +disable_so_nci_hci_open_pipe_fndecl_52756 nci_hci_open_pipe fndecl 0 52756 NULL
140613 +disable_so_ugts_t4_cq_52758 ugts t4_cq 0 52758 NULL
140614 +disable_so_hdlcdev_ioctl_fndecl_52761 hdlcdev_ioctl fndecl 0 52761 NULL
140615 +disable_so___hw_addr_del_ex_fndecl_52770 __hw_addr_del_ex fndecl 0 52770 NULL
140616 +disable_so_reiserfs_init_bitmap_cache_fndecl_52773 reiserfs_init_bitmap_cache fndecl 0 52773 NULL
140617 +disable_so_qxl_allocate_chunk_fndecl_52791 qxl_allocate_chunk fndecl 0 52791 NULL
140618 +disable_so_bnx2fc_send_rec_fndecl_52795 bnx2fc_send_rec fndecl 0 52795 NULL
140619 +disable_so_dtSplitRoot_fndecl_52803 dtSplitRoot fndecl 0 52803 NULL
140620 +disable_so_nilfs_mdt_create_block_fndecl_52807 nilfs_mdt_create_block fndecl 0 52807 NULL nohasharray
140621 +disable_so_snd_ymfpci_capture_open_fndecl_52807 snd_ymfpci_capture_open fndecl 0 52807 &disable_so_nilfs_mdt_create_block_fndecl_52807
140622 +disable_so_mmc_test_map_sg_fndecl_52812 mmc_test_map_sg fndecl 0 52812 NULL
140623 +disable_so_pk_probe_fndecl_52818 pk_probe fndecl 0 52818 NULL
140624 +disable_so_xdr_encode_array2_fndecl_52834 xdr_encode_array2 fndecl 0 52834 NULL nohasharray
140625 +disable_so_bttv_risc_overlay_fndecl_52834 bttv_risc_overlay fndecl 0 52834 &disable_so_xdr_encode_array2_fndecl_52834
140626 +disable_so_ip6_route_del_fndecl_52837 ip6_route_del fndecl 0 52837 NULL
140627 +disable_so_xfs_read_agf_fndecl_52838 xfs_read_agf fndecl 0 52838 NULL
140628 +disable_so_nj_setup_fndecl_52843 nj_setup fndecl 0 52843 NULL
140629 +disable_so_mlx4_load_one_fndecl_52867 mlx4_load_one fndecl 0 52867 NULL
140630 +disable_so_radeon_ring_lock_fndecl_52878 radeon_ring_lock fndecl 0 52878 NULL
140631 +disable_so_simplefb_parse_pd_fndecl_52879 simplefb_parse_pd fndecl 0 52879 NULL
140632 +disable_so_dccp_setsockopt_cscov_fndecl_52885 dccp_setsockopt_cscov fndecl 0 52885 NULL
140633 +disable_so_exec_result_hcp_exec_waiter_52897 exec_result hcp_exec_waiter 0 52897 NULL
140634 +disable_so_nfcmrvl_submit_bulk_urb_fndecl_52911 nfcmrvl_submit_bulk_urb fndecl 0 52911 NULL
140635 +disable_so_buf_width_s5p_mfc_ctx_52912 buf_width s5p_mfc_ctx 0 52912 NULL
140636 +disable_so_xfs_mount_validate_sb_fndecl_52930 xfs_mount_validate_sb fndecl 0 52930 NULL
140637 +disable_so_num_rx_ethoc_52943 num_rx ethoc 0 52943 NULL
140638 +disable_so_mlx4_cmd_post_fndecl_52945 mlx4_cmd_post fndecl 0 52945 NULL
140639 +disable_so_jbd2_journal_get_undo_access_fndecl_52958 jbd2_journal_get_undo_access fndecl 0 52958 NULL
140640 +disable_so_msb_probe_fndecl_52969 msb_probe fndecl 0 52969 NULL
140641 +disable_so_dev_pm_qos_add_request_fndecl_52975 dev_pm_qos_add_request fndecl 0 52975 NULL
140642 +disable_so_get_ports_fndecl_52978 get_ports fndecl 0 52978 NULL
140643 +disable_so_reiserfs_insert_item_fndecl_52983 reiserfs_insert_item fndecl 0 52983 NULL
140644 +disable_so_ipmi_set_maintenance_mode_fndecl_52986 ipmi_set_maintenance_mode fndecl 0 52986 NULL
140645 +disable_so_snd_seq_port_disconnect_fndecl_52992 snd_seq_port_disconnect fndecl 0 52992 NULL
140646 +disable_so_focaltech_init_fndecl_52999 focaltech_init fndecl 0 52999 NULL
140647 +disable_so_hv_post_message_fndecl_53012 hv_post_message fndecl 0 53012 NULL
140648 +disable_so_be_cmd_get_cntl_attributes_fndecl_53017 be_cmd_get_cntl_attributes fndecl 0 53017 NULL
140649 +disable_so_ath6kl_set_probed_ssids_fndecl_53019 ath6kl_set_probed_ssids fndecl 0 53019 NULL
140650 +disable_so_pvr2_channel_limit_inputs_fndecl_53024 pvr2_channel_limit_inputs fndecl 0 53024 NULL
140651 +disable_so_wusbhc_devconnect_start_fndecl_53025 wusbhc_devconnect_start fndecl 0 53025 NULL
140652 +disable_so_tty_insert_flip_string_fixed_flag_fndecl_53031 tty_insert_flip_string_fixed_flag fndecl 0 53031 NULL
140653 +disable_so_dln2_start_rx_urbs_fndecl_53033 dln2_start_rx_urbs fndecl 0 53033 NULL
140654 +disable_so_ethtool_nway_reset_fndecl_53034 ethtool_nway_reset fndecl 0 53034 NULL
140655 +disable_so_xfs_filestream_pick_ag_fndecl_53040 xfs_filestream_pick_ag fndecl 0 53040 NULL
140656 +disable_so_xmit_fifo_size_serial_struct_53048 xmit_fifo_size serial_struct 0 53048 NULL
140657 +disable_so_m_len_ext4_map_blocks_53056 m_len ext4_map_blocks 0 53056 NULL
140658 +disable_so_do_poll_fndecl_53063 do_poll fndecl 0 53063 NULL nohasharray
140659 +disable_so_i1480_usb_probe_fndecl_53063 i1480_usb_probe fndecl 0 53063 &disable_so_do_poll_fndecl_53063
140660 +disable_so_lkkbd_connect_fndecl_53064 lkkbd_connect fndecl 0 53064 NULL
140661 +disable_so_snd_ca0106_pcm_open_capture_channel_fndecl_53076 snd_ca0106_pcm_open_capture_channel fndecl 0 53076 NULL
140662 +disable_so_snd_ak4531_mixer_fndecl_53080 snd_ak4531_mixer fndecl 0 53080 NULL
140663 +disable_so_map_swap_entry_fndecl_53081 map_swap_entry fndecl 0 53081 NULL
140664 +disable_so_analog_init_device_fndecl_53082 analog_init_device fndecl 0 53082 NULL
140665 +disable_so_xfs_btree_dec_cursor_fndecl_53087 xfs_btree_dec_cursor fndecl 0 53087 NULL
140666 +disable_so___hfsplus_setxattr_fndecl_53096 __hfsplus_setxattr fndecl 0 53096 NULL
140667 +disable_so_jffs2_garbage_collect_deletion_dirent_fndecl_53099 jffs2_garbage_collect_deletion_dirent fndecl 0 53099 NULL
140668 +disable_so_af9033_wr_reg_fndecl_53103 af9033_wr_reg fndecl 0 53103 NULL
140669 +disable_so_snd_mixart_pcm_digital_fndecl_53113 snd_mixart_pcm_digital fndecl 0 53113 NULL nohasharray
140670 +disable_so_mmc_app_cmd_fndecl_53113 mmc_app_cmd fndecl 0 53113 &disable_so_snd_mixart_pcm_digital_fndecl_53113
140671 +disable_so_via_sensor_power_setup_fndecl_53124 via_sensor_power_setup fndecl 0 53124 NULL nohasharray
140672 +disable_so_xz_dec_test_write_fndecl_53124 xz_dec_test_write fndecl 0 53124 &disable_so_via_sensor_power_setup_fndecl_53124
140673 +disable_so_lpfc_cq_create_fndecl_53129 lpfc_cq_create fndecl 0 53129 NULL
140674 +disable_so_real_vram_size_radeon_mc_53132 real_vram_size radeon_mc 0 53132 NULL
140675 +disable_so_scan_header_fndecl_53134 scan_header fndecl 0 53134 NULL
140676 +disable_so_read_reg_radio_tea5777_53145 read_reg radio_tea5777 0 53145 NULL nohasharray
140677 +disable_so_write_pinned_extent_entries_fndecl_53145 write_pinned_extent_entries fndecl 0 53145 &disable_so_read_reg_radio_tea5777_53145
140678 +disable_so_mmc_spi_readbytes_fndecl_53146 mmc_spi_readbytes fndecl 0 53146 NULL
140679 +disable_so_nvme_trans_modesel_get_mp_fndecl_53148 nvme_trans_modesel_get_mp fndecl 0 53148 NULL
140680 +disable_so_xoffset_fb_var_screeninfo_53153 xoffset fb_var_screeninfo 0 53153 NULL
140681 +disable_so_add_tcp_udp_rule_fndecl_53155 add_tcp_udp_rule fndecl 0 53155 NULL
140682 +disable_so_e1000_get_eeprom_fndecl_53156 e1000_get_eeprom fndecl 0 53156 NULL
140683 +disable_so_write_rom_fndecl_53167 write_rom fndecl 0 53167 NULL
140684 +disable_so_gt215_clk_pre_fndecl_53170 gt215_clk_pre fndecl 0 53170 NULL
140685 +disable_so_tegra_spi_start_tx_dma_fndecl_53177 tegra_spi_start_tx_dma fndecl 0 53177 NULL nohasharray
140686 +disable_so_page_address_in_vma_fndecl_53177 page_address_in_vma fndecl 0 53177 &disable_so_tegra_spi_start_tx_dma_fndecl_53177
140687 +disable_so_snd_mixart_pcm_analog_fndecl_53180 snd_mixart_pcm_analog fndecl 0 53180 NULL nohasharray
140688 +disable_so_offset_page_frag_53180 offset page_frag 0 53180 &disable_so_snd_mixart_pcm_analog_fndecl_53180
140689 +disable_so_current_freq_av7110_53182 current_freq av7110 0 53182 NULL
140690 +disable_so_ocfs2_add_branch_fndecl_53191 ocfs2_add_branch fndecl 0 53191 NULL
140691 +disable_so_get_port_caps_fndecl_53192 get_port_caps fndecl 0 53192 NULL
140692 +disable_so_alloc_descs_fndecl_53194 alloc_descs fndecl 0 53194 NULL
140693 +disable_so_compat_do_replace_fndecl_53197 compat_do_replace fndecl 0 53197 NULL
140694 +disable_so_t4_prep_fw_fndecl_53207 t4_prep_fw fndecl 0 53207 NULL
140695 +disable_so_snd_riptide_initialize_fndecl_53212 snd_riptide_initialize fndecl 0 53212 NULL
140696 +disable_so_sony_nc_int_call_fndecl_53213 sony_nc_int_call fndecl 0 53213 NULL
140697 +disable_so_setflashmode_fndecl_53217 setflashmode fndecl 0 53217 NULL
140698 +disable_so_find_extent_clone_fndecl_53232 find_extent_clone fndecl 0 53232 NULL
140699 +disable_so_mlx4_get_mgm_entry_size_fndecl_53236 mlx4_get_mgm_entry_size fndecl 0 53236 NULL
140700 +disable_so_btrfs_write_and_wait_marked_extents_fndecl_53239 btrfs_write_and_wait_marked_extents fndecl 0 53239 NULL
140701 +disable_so_xpc_nasid_mask_nlongs_vardecl_53252 xpc_nasid_mask_nlongs vardecl 0 53252 NULL
140702 +disable_so_adis16400_update_scan_mode_fndecl_53256 adis16400_update_scan_mode fndecl 0 53256 NULL
140703 +disable_so_qxl_bo_create_fndecl_53261 qxl_bo_create fndecl 0 53261 NULL
140704 +disable_so_add_new_ctl_fndecl_53263 add_new_ctl fndecl 0 53263 NULL
140705 +disable_so_lpfc_post_buffer_fndecl_53267 lpfc_post_buffer fndecl 0 53267 NULL
140706 +disable_so_wa_nep_create_fndecl_53275 wa_nep_create fndecl 0 53275 NULL
140707 +disable_so_nr_cmds_ctlr_info_53278 nr_cmds ctlr_info 0 53278 NULL
140708 +disable_so_put_v4l2_framebuffer32_fndecl_53280 put_v4l2_framebuffer32 fndecl 0 53280 NULL
140709 +disable_so_iwlagn_send_tx_power_fndecl_53282 iwlagn_send_tx_power fndecl 0 53282 NULL
140710 +disable_so_samsung_rfkill_init_swsmi_fndecl_53284 samsung_rfkill_init_swsmi fndecl 0 53284 NULL
140711 +disable_so___sync_dirty_buffer_fndecl_53315 __sync_dirty_buffer fndecl 0 53315 NULL nohasharray
140712 +disable_so_try_or_set_cluster_fndecl_53315 try_or_set_cluster fndecl 0 53315 &disable_so___sync_dirty_buffer_fndecl_53315
140713 +disable_so_mwifiex_fill_new_bss_desc_fndecl_53316 mwifiex_fill_new_bss_desc fndecl 0 53316 NULL
140714 +disable_so_do_mmu_notifier_register_fndecl_53321 do_mmu_notifier_register fndecl 0 53321 NULL
140715 +disable_so_dummy_validate_stream_fndecl_53322 dummy_validate_stream fndecl 0 53322 NULL
140716 +disable_so_ablkcipher_walk_next_fndecl_53328 ablkcipher_walk_next fndecl 0 53328 NULL
140717 +disable_so_mlx4_status_to_errno_fndecl_53338 mlx4_status_to_errno fndecl 0 53338 NULL
140718 +disable_so_va1j5jf8007s_init_frequency_fndecl_53348 va1j5jf8007s_init_frequency fndecl 0 53348 NULL
140719 +disable_so_ubifs_read_nnode_fndecl_53358 ubifs_read_nnode fndecl 0 53358 NULL
140720 +disable_so_ufshcd_read_desc_param_fndecl_53361 ufshcd_read_desc_param fndecl 0 53361 NULL
140721 +disable_so_ath6kl_bmi_read_fndecl_53368 ath6kl_bmi_read fndecl 0 53368 NULL
140722 +disable_so_skge_reset_fndecl_53374 skge_reset fndecl 0 53374 NULL
140723 +disable_so_be_get_config_fndecl_53377 be_get_config fndecl 0 53377 NULL
140724 +disable_so_iommu_prepare_static_identity_mapping_fndecl_53386 iommu_prepare_static_identity_mapping fndecl 0 53386 NULL
140725 +disable_so_regulator_force_disable_fndecl_53390 regulator_force_disable fndecl 0 53390 NULL
140726 +disable_so_command_setformat_fndecl_53392 command_setformat fndecl 0 53392 NULL
140727 +disable_so_xen_irq_info_common_setup_fndecl_53398 xen_irq_info_common_setup fndecl 0 53398 NULL
140728 +disable_so_qxl_release_validate_bo_fndecl_53400 qxl_release_validate_bo fndecl 0 53400 NULL
140729 +disable_so_mb86290fb_imageblit_fndecl_53406 mb86290fb_imageblit fndecl 0 53406 NULL
140730 +disable_so_mthca_alloc_srq_buf_fndecl_53407 mthca_alloc_srq_buf fndecl 0 53407 NULL
140731 +disable_so_nid_dnode_of_data_53408 nid dnode_of_data 0 53408 NULL
140732 +disable_so_solo_pci_probe_fndecl_53410 solo_pci_probe fndecl 0 53410 NULL
140733 +disable_so_bus_for_each_dev_fndecl_53415 bus_for_each_dev fndecl 0 53415 NULL
140734 +disable_so_cmpc_accel_add_v4_fndecl_53417 cmpc_accel_add_v4 fndecl 0 53417 NULL
140735 +disable_so_vlan_dev_set_egress_priority_fndecl_53418 vlan_dev_set_egress_priority fndecl 0 53418 NULL
140736 +disable_so_codec_reg_read_file_fndecl_53419 codec_reg_read_file fndecl 0 53419 NULL
140737 +disable_so_compat_sys_mbind_fndecl_53427 compat_sys_mbind fndecl 0 53427 NULL
140738 +disable_so_nilfs_write_logs_fndecl_53431 nilfs_write_logs fndecl 0 53431 NULL
140739 +disable_so_init_driver_queues_fndecl_53457 init_driver_queues fndecl 0 53457 NULL
140740 +disable_so_mon_alloc_buff_fndecl_53463 mon_alloc_buff fndecl 0 53463 NULL
140741 +disable_so_osst_write_eod_fndecl_53464 osst_write_eod fndecl 0 53464 NULL
140742 +disable_so_hostap_hw_ready_fndecl_53470 hostap_hw_ready fndecl 0 53470 NULL
140743 +disable_so_guest_perf_guest_switch_msr_53477 guest perf_guest_switch_msr 0 53477 NULL
140744 +disable_so_hfs_parse_old_pmap_fndecl_53479 hfs_parse_old_pmap fndecl 0 53479 NULL nohasharray
140745 +disable_so_t4_config_rss_range_fndecl_53479 t4_config_rss_range fndecl 0 53479 &disable_so_hfs_parse_old_pmap_fndecl_53479 nohasharray
140746 +disable_so_mtdchar_ioctl_fndecl_53479 mtdchar_ioctl fndecl 0 53479 &disable_so_t4_config_rss_range_fndecl_53479
140747 +disable_so_map_sector_fndecl_53483 map_sector fndecl 0 53483 NULL
140748 +disable_so_oper_log_mgm_entry_size_mlx4_dev_53488 oper_log_mgm_entry_size mlx4_dev 0 53488 NULL
140749 +disable_so_alloc_comp_eqs_fndecl_53492 alloc_comp_eqs fndecl 0 53492 NULL
140750 +disable_so_mthca_buf_alloc_fndecl_53510 mthca_buf_alloc fndecl 0 53510 NULL
140751 +disable_so_ath6kl_fetch_otp_file_fndecl_53514 ath6kl_fetch_otp_file fndecl 0 53514 NULL
140752 +disable_so_mmc_io_rw_extended_fndecl_53515 mmc_io_rw_extended fndecl 0 53515 NULL
140753 +disable_so_init_e1_port_fndecl_53524 init_e1_port fndecl 0 53524 NULL
140754 +disable_so_i40e_aq_request_resource_fndecl_53532 i40e_aq_request_resource fndecl 0 53532 NULL
140755 +disable_so_fuse_notify_fndecl_53539 fuse_notify fndecl 0 53539 NULL
140756 +disable_so_lpfc_eq_create_fndecl_53556 lpfc_eq_create fndecl 0 53556 NULL
140757 +disable_so_qib_register_ib_device_fndecl_53566 qib_register_ib_device fndecl 0 53566 NULL
140758 +disable_so_balance_node_right_fndecl_53571 balance_node_right fndecl 0 53571 NULL
140759 +disable_so_sctp_tsnmap_mark_fndecl_53578 sctp_tsnmap_mark fndecl 0 53578 NULL
140760 +disable_so_vcc_ioctl_fndecl_53582 vcc_ioctl fndecl 0 53582 NULL
140761 +disable_so___ip6_del_rt_fndecl_53583 __ip6_del_rt fndecl 0 53583 NULL
140762 +disable_so_gred_change_fndecl_53584 gred_change fndecl 0 53584 NULL
140763 +disable_so_mthca_alloc_wqe_buf_fndecl_53586 mthca_alloc_wqe_buf fndecl 0 53586 NULL
140764 +disable_so_vsp1_device_init_fndecl_53589 vsp1_device_init fndecl 0 53589 NULL nohasharray
140765 +disable_so_c2_nsmr_register_phys_kern_fndecl_53589 c2_nsmr_register_phys_kern fndecl 0 53589 &disable_so_vsp1_device_init_fndecl_53589
140766 +disable_so_rcar_vin_get_formats_fndecl_53591 rcar_vin_get_formats fndecl 0 53591 NULL
140767 +disable_so_kernel_setsockopt_fndecl_53594 kernel_setsockopt fndecl 0 53594 NULL
140768 +disable_so_mmc_set_blocklen_fndecl_53596 mmc_set_blocklen fndecl 0 53596 NULL
140769 +disable_so_rd_module_init_fndecl_53609 rd_module_init fndecl 0 53609 NULL
140770 +disable_so_put_cmsg_compat_fndecl_53618 put_cmsg_compat fndecl 0 53618 NULL nohasharray
140771 +disable_so_irlan_extract_param_fndecl_53618 irlan_extract_param fndecl 0 53618 &disable_so_put_cmsg_compat_fndecl_53618
140772 +disable_so_statctrl_offset__synclinkmp_info_53625 statctrl_offset _synclinkmp_info 0 53625 NULL
140773 +disable_so_device_add_class_symlinks_fndecl_53634 device_add_class_symlinks fndecl 0 53634 NULL
140774 +disable_so_locks_mandatory_area_fndecl_53644 locks_mandatory_area fndecl 0 53644 NULL
140775 +disable_so_ttm_tt_set_placement_caching_fndecl_53645 ttm_tt_set_placement_caching fndecl 0 53645 NULL
140776 +disable_so_svc_dropparty_fndecl_53651 svc_dropparty fndecl 0 53651 NULL
140777 +disable_so_dev_mc_del_fndecl_53664 dev_mc_del fndecl 0 53664 NULL
140778 +disable_so_uvesafb_helper_start_fndecl_53665 uvesafb_helper_start fndecl 0 53665 NULL
140779 +disable_so_ubi_eba_write_leb_fndecl_53678 ubi_eba_write_leb fndecl 0 53678 NULL
140780 +disable_so_xfs_finish_flags_fndecl_53692 xfs_finish_flags fndecl 0 53692 NULL
140781 +disable_so_vgt_balloon_space_fndecl_53697 vgt_balloon_space fndecl 0 53697 NULL
140782 +disable_so_zatm_start_fndecl_53706 zatm_start fndecl 0 53706 NULL
140783 +disable_so_num_arg_fndecl_53716 num_arg fndecl 0 53716 NULL
140784 +disable_so_acpi_manager_get_info_fndecl_53737 acpi_manager_get_info fndecl 0 53737 NULL
140785 +disable_so_zr364xx_board_init_fndecl_53742 zr364xx_board_init fndecl 0 53742 NULL nohasharray
140786 +disable_so_via_dmablit_fndecl_53742 via_dmablit fndecl 0 53742 &disable_so_zr364xx_board_init_fndecl_53742
140787 +disable_so_fat_sync_inode_fndecl_53751 fat_sync_inode fndecl 0 53751 NULL
140788 +disable_so_ext3_new_blocks_fndecl_53754 ext3_new_blocks fndecl 0 53754 NULL
140789 +disable_so_ubi_io_mark_bad_fndecl_53761 ubi_io_mark_bad fndecl 0 53761 NULL
140790 +disable_so_mtd_write_user_prot_reg_fndecl_53762 mtd_write_user_prot_reg fndecl 0 53762 NULL
140791 +disable_so_msb_read_oob_fndecl_53772 msb_read_oob fndecl 0 53772 NULL
140792 +disable_so_kstrtoll_fndecl_53783 kstrtoll fndecl 0 53783 NULL
140793 +disable_so_mgmt_send_event_fndecl_53803 mgmt_send_event fndecl 0 53803 NULL
140794 +disable_so_put_v4l2_event32_fndecl_53805 put_v4l2_event32 fndecl 0 53805 NULL
140795 +disable_so_garp_init_applicant_fndecl_53811 garp_init_applicant fndecl 0 53811 NULL
140796 +disable_so_convert_extent_item_v0_fndecl_53814 convert_extent_item_v0 fndecl 0 53814 NULL
140797 +disable_so_kvm_mmu_create_fndecl_53817 kvm_mmu_create fndecl 0 53817 NULL
140798 +disable_so_jffs2_flash_write_fndecl_53819 jffs2_flash_write fndecl 0 53819 NULL
140799 +disable_so_choose_rate_fndecl_53821 choose_rate fndecl 0 53821 NULL
140800 +disable_so_check_ld_imm_fndecl_53829 check_ld_imm fndecl 0 53829 NULL
140801 +disable_so_carl9170_echo_test_fndecl_53837 carl9170_echo_test fndecl 0 53837 NULL
140802 +disable_so_add_promisc_qp_fndecl_53875 add_promisc_qp fndecl 0 53875 NULL
140803 +disable_so_solo_p2m_dma_desc_fndecl_53880 solo_p2m_dma_desc fndecl 0 53880 NULL
140804 +disable_so_cx25821_alsa_dma_init_fndecl_53886 cx25821_alsa_dma_init fndecl 0 53886 NULL
140805 +disable_so_stir421x_patch_device_fndecl_53915 stir421x_patch_device fndecl 0 53915 NULL
140806 +disable_so_musb_schedule_fndecl_53920 musb_schedule fndecl 0 53920 NULL nohasharray
140807 +disable_so_rs780_parse_power_table_fndecl_53920 rs780_parse_power_table fndecl 0 53920 &disable_so_musb_schedule_fndecl_53920
140808 +disable_so_hrz_open_rx_fndecl_53930 hrz_open_rx fndecl 0 53930 NULL
140809 +disable_so_i40e_init_lan_hmc_fndecl_53935 i40e_init_lan_hmc fndecl 0 53935 NULL
140810 +disable_so_gntdev_open_fndecl_53944 gntdev_open fndecl 0 53944 NULL
140811 +disable_so_swiotlb_nr_tbl_fndecl_53950 swiotlb_nr_tbl fndecl 0 53950 NULL
140812 +disable_so_adpt_i2o_post_wait_fndecl_53951 adpt_i2o_post_wait fndecl 0 53951 NULL
140813 +disable_so_hiddev_ioctl_fndecl_53955 hiddev_ioctl fndecl 0 53955 NULL
140814 +disable_so_vmw_sou_backing_alloc_fndecl_53962 vmw_sou_backing_alloc fndecl 0 53962 NULL
140815 +disable_so_check_mem_access_fndecl_53977 check_mem_access fndecl 0 53977 NULL
140816 +disable_so_xfs_check_sizes_fndecl_53982 xfs_check_sizes fndecl 0 53982 NULL
140817 +disable_so_nfsd_reply_cache_init_fndecl_53988 nfsd_reply_cache_init fndecl 0 53988 NULL
140818 +disable_so_sl811_cs_config_fndecl_53990 sl811_cs_config fndecl 0 53990 NULL
140819 +disable_so_msb_init_disk_fndecl_53991 msb_init_disk fndecl 0 53991 NULL
140820 +disable_so_btrfs_setup_space_cache_fndecl_53997 btrfs_setup_space_cache fndecl 0 53997 NULL
140821 +disable_so___logfs_create_fndecl_54001 __logfs_create fndecl 0 54001 NULL
140822 +disable_so_ufx_ops_check_var_fndecl_54012 ufx_ops_check_var fndecl 0 54012 NULL
140823 +disable_so_rsi_setblocklength_fndecl_54024 rsi_setblocklength fndecl 0 54024 NULL
140824 +disable_so_mic_setup_msi_fndecl_54031 mic_setup_msi fndecl 0 54031 NULL
140825 +disable_so_check_fmode_for_setlk_fndecl_54037 check_fmode_for_setlk fndecl 0 54037 NULL
140826 +disable_so_e1000_do_read_eeprom_fndecl_54043 e1000_do_read_eeprom fndecl 0 54043 NULL
140827 +disable_so_iwl_dbgfs_d3_sram_write_fndecl_54048 iwl_dbgfs_d3_sram_write fndecl 0 54048 NULL
140828 +disable_so_sierra_write_fndecl_54049 sierra_write fndecl 0 54049 NULL
140829 +disable_so__iwl_dbgfs_uapsd_misbehaving_write_fndecl_54054 _iwl_dbgfs_uapsd_misbehaving_write fndecl 0 54054 NULL
140830 +disable_so_qdsb_get_fndecl_54058 qdsb_get fndecl 0 54058 NULL
140831 +disable_so_intf_next_seq_fndecl_54089 intf_next_seq fndecl 0 54089 NULL
140832 +disable_so_scan_block_fast_fndecl_54093 scan_block_fast fndecl 0 54093 NULL nohasharray
140833 +disable_so_efx_begin_loopback_fndecl_54093 efx_begin_loopback fndecl 0 54093 &disable_so_scan_block_fast_fndecl_54093 nohasharray
140834 +disable_so_hash_ip6_add_fndecl_54093 hash_ip6_add fndecl 0 54093 &disable_so_efx_begin_loopback_fndecl_54093
140835 +disable_so_fat_ent_write_fndecl_54100 fat_ent_write fndecl 0 54100 NULL
140836 +disable_so_check_extent_in_eb_fndecl_54112 check_extent_in_eb fndecl 0 54112 NULL
140837 +disable_so_br_min_mtu_fndecl_54113 br_min_mtu fndecl 0 54113 NULL
140838 +disable_so_xfs_rtmodify_summary_int_fndecl_54118 xfs_rtmodify_summary_int fndecl 0 54118 NULL nohasharray
140839 +disable_so_rio_request_inb_mbox_fndecl_54118 rio_request_inb_mbox fndecl 0 54118 &disable_so_xfs_rtmodify_summary_int_fndecl_54118
140840 +disable_so_acpi_thermal_add_fndecl_54133 acpi_thermal_add fndecl 0 54133 NULL
140841 +disable_so_carl9170_exec_cmd_fndecl_54141 carl9170_exec_cmd fndecl 0 54141 NULL
140842 +disable_so_brcmf_usb_dl_writeimage_fndecl_54144 brcmf_usb_dl_writeimage fndecl 0 54144 NULL
140843 +disable_so_ufx_ops_set_par_fndecl_54145 ufx_ops_set_par fndecl 0 54145 NULL
140844 +disable_so_enic_dev_init_fndecl_54147 enic_dev_init fndecl 0 54147 NULL
140845 +disable_so_sp2_write_i2c_fndecl_54157 sp2_write_i2c fndecl 0 54157 NULL
140846 +disable_so_lock_and_cleanup_extent_if_need_fndecl_54163 lock_and_cleanup_extent_if_need fndecl 0 54163 NULL nohasharray
140847 +disable_so_i40e_init_shared_code_fndecl_54163 i40e_init_shared_code fndecl 0 54163 &disable_so_lock_and_cleanup_extent_if_need_fndecl_54163
140848 +disable_so_vmci_route_fndecl_54171 vmci_route fndecl 0 54171 NULL
140849 +disable_so_threshold_create_device_fndecl_54172 threshold_create_device fndecl 0 54172 NULL
140850 +disable_so_handle_one_ule_extension_fndecl_54174 handle_one_ule_extension fndecl 0 54174 NULL
140851 +disable_so_dtv_property_cache_sync_fndecl_54181 dtv_property_cache_sync fndecl 0 54181 NULL
140852 +disable_so_compat_put_bitmap_fndecl_54182 compat_put_bitmap fndecl 0 54182 NULL
140853 +disable_so_reg_area_phys_snd_ymfpci_54196 reg_area_phys snd_ymfpci 0 54196 NULL
140854 +disable_so_ibmasm_send_os_state_fndecl_54199 ibmasm_send_os_state fndecl 0 54199 NULL
140855 +disable_so_ep93xx_spi_enable_fndecl_54214 ep93xx_spi_enable fndecl 0 54214 NULL
140856 +disable_so_cir_addr_ite_dev_54217 cir_addr ite_dev 0 54217 NULL
140857 +disable_so_SMB2_rename_fndecl_54220 SMB2_rename fndecl 0 54220 NULL
140858 +disable_so_cciss_setnodename_fndecl_54233 cciss_setnodename fndecl 0 54233 NULL
140859 +disable_so_picolcd_init_framebuffer_fndecl_54238 picolcd_init_framebuffer fndecl 0 54238 NULL
140860 +disable_so_upper_margin_fb_var_screeninfo_54245 upper_margin fb_var_screeninfo 0 54245 NULL
140861 +disable_so_serial_probe_fndecl_54247 serial_probe fndecl 0 54247 NULL
140862 +disable_so_fl_size_qset_params_54254 fl_size qset_params 0 54254 NULL
140863 +disable_so___erst_read_fndecl_54256 __erst_read fndecl 0 54256 NULL
140864 +disable_so_ssb_bus_scan_fndecl_54257 ssb_bus_scan fndecl 0 54257 NULL
140865 +disable_so_put_cmsg_fndecl_54270 put_cmsg fndecl 0 54270 NULL
140866 +disable_so_xfs_bmap_count_blocks_fndecl_54276 xfs_bmap_count_blocks fndecl 0 54276 NULL
140867 +disable_so_cifs_sign_rqst_fndecl_54283 cifs_sign_rqst fndecl 0 54283 NULL
140868 +disable_so_ubifs_create_dflt_lpt_fndecl_54286 ubifs_create_dflt_lpt fndecl 0 54286 NULL
140869 +disable_so_dma_async_device_register_fndecl_54292 dma_async_device_register fndecl 0 54292 NULL
140870 +disable_so_tsl2550_init_client_fndecl_54299 tsl2550_init_client fndecl 0 54299 NULL
140871 +disable_so_pvr2_issue_simple_cmd_fndecl_54313 pvr2_issue_simple_cmd fndecl 0 54313 NULL
140872 +disable_so_nvme_trans_test_unit_ready_fndecl_54314 nvme_trans_test_unit_ready fndecl 0 54314 NULL
140873 +disable_so_port100_listen_mdaa_fndecl_54317 port100_listen_mdaa fndecl 0 54317 NULL
140874 +disable_so__set_memory_wc_fndecl_54323 _set_memory_wc fndecl 0 54323 NULL
140875 +disable_so_dev_ethtool_fndecl_54324 dev_ethtool fndecl 0 54324 NULL
140876 +disable_so_CIFSSMBPosixLock_fndecl_54325 CIFSSMBPosixLock fndecl 0 54325 NULL
140877 +disable_so_enic_alloc_vnic_resources_fndecl_54343 enic_alloc_vnic_resources fndecl 0 54343 NULL
140878 +disable_so_nvme_scsi_translate_fndecl_54344 nvme_scsi_translate fndecl 0 54344 NULL
140879 +disable_so_watchdog_stop_fndecl_54346 watchdog_stop fndecl 0 54346 NULL
140880 +disable_so_init_dmars_fndecl_54347 init_dmars fndecl 0 54347 NULL
140881 +disable_so_k_objectid_in_core_key_54352 k_objectid in_core_key 0 54352 NULL
140882 +disable_so_ocfs2_begin_truncate_log_recovery_fndecl_54366 ocfs2_begin_truncate_log_recovery fndecl 0 54366 NULL
140883 +disable_so_vmci_send_datagram_fndecl_54373 vmci_send_datagram fndecl 0 54373 NULL
140884 +disable_so_b43_pcmcia_probe_fndecl_54378 b43_pcmcia_probe fndecl 0 54378 NULL
140885 +disable_so_rocker_group_l2_interface_fndecl_54379 rocker_group_l2_interface fndecl 0 54379 NULL
140886 +disable_so_iwl_nvm_read_chunk_fndecl_54381 iwl_nvm_read_chunk fndecl 0 54381 NULL nohasharray
140887 +disable_so_netlbl_unlhsh_add_fndecl_54381 netlbl_unlhsh_add fndecl 0 54381 &disable_so_iwl_nvm_read_chunk_fndecl_54381
140888 +disable_so_eeti_ts_probe_fndecl_54382 eeti_ts_probe fndecl 0 54382 NULL
140889 +disable_so_bt878_adr_bt878_54384 bt878_adr bt878 0 54384 NULL
140890 +disable_so_cw1200_sdio_probe_fndecl_54397 cw1200_sdio_probe fndecl 0 54397 NULL
140891 +disable_so_vmci_datagram_dispatch_fndecl_54402 vmci_datagram_dispatch fndecl 0 54402 NULL
140892 +disable_so__osd_req_alist_elem_size_fndecl_54403 _osd_req_alist_elem_size fndecl 0 54403 NULL
140893 +disable_so_rxkad_verify_packet_encrypt_fndecl_54405 rxkad_verify_packet_encrypt fndecl 0 54405 NULL
140894 +disable_so_user_height_soc_camera_device_54417 user_height soc_camera_device 0 54417 NULL
140895 +disable_so_oxygen_pci_probe_fndecl_54423 oxygen_pci_probe fndecl 0 54423 NULL
140896 +disable_so_startbit_netlbl_lsm_catmap_54432 startbit netlbl_lsm_catmap 0 54432 NULL
140897 +disable_so_cciss_wait_for_board_state_fndecl_54433 cciss_wait_for_board_state fndecl 0 54433 NULL
140898 +disable_so_dsmark_init_fndecl_54434 dsmark_init fndecl 0 54434 NULL
140899 +disable_so_ima_inode_setxattr_fndecl_54436 ima_inode_setxattr fndecl 0 54436 NULL
140900 +disable_so_va1j5jf8007s_prepare_2_fndecl_54442 va1j5jf8007s_prepare_2 fndecl 0 54442 NULL
140901 +disable_so_jbd2_journal_get_write_access_fndecl_54444 jbd2_journal_get_write_access fndecl 0 54444 NULL
140902 +disable_so_CIFSSMBQPathInfo_fndecl_54452 CIFSSMBQPathInfo fndecl 0 54452 NULL
140903 +disable_so_i40e_ptp_set_timestamp_mode_fndecl_54456 i40e_ptp_set_timestamp_mode fndecl 0 54456 NULL
140904 +disable_so_nvkm_notify_init_fndecl_54464 nvkm_notify_init fndecl 0 54464 NULL nohasharray
140905 +disable_so_edd_device_register_fndecl_54464 edd_device_register fndecl 0 54464 &disable_so_nvkm_notify_init_fndecl_54464
140906 +disable_so___stop_cpus_fndecl_54465 __stop_cpus fndecl 0 54465 NULL
140907 +disable_so_usbtest_probe_fndecl_54474 usbtest_probe fndecl 0 54474 NULL
140908 +disable_so_nvif_object_ioctl_fndecl_54479 nvif_object_ioctl fndecl 0 54479 NULL
140909 +disable_so_ca0110_parse_auto_config_fndecl_54481 ca0110_parse_auto_config fndecl 0 54481 NULL
140910 +disable_so_sr_read_tocentry_fndecl_54482 sr_read_tocentry fndecl 0 54482 NULL
140911 +disable_so_choose_port_ctxt_fndecl_54484 choose_port_ctxt fndecl 0 54484 NULL
140912 +disable_so_thermal_zone_bind_cooling_device_fndecl_54490 thermal_zone_bind_cooling_device fndecl 0 54490 NULL
140913 +disable_so_sys_setsockopt_fndecl_54507 sys_setsockopt fndecl 0 54507 NULL
140914 +disable_so_steelseries_srws1_probe_fndecl_54513 steelseries_srws1_probe fndecl 0 54513 NULL
140915 +disable_so___btrfs_buffered_write_fndecl_54524 __btrfs_buffered_write fndecl 0 54524 NULL nohasharray
140916 +disable_so_ieee80211_add_virtual_monitor_fndecl_54524 ieee80211_add_virtual_monitor fndecl 0 54524 &disable_so___btrfs_buffered_write_fndecl_54524
140917 +disable_so_net2280_probe_fndecl_54525 net2280_probe fndecl 0 54525 NULL
140918 +disable_so_b43_debugfs_write_fndecl_54533 b43_debugfs_write fndecl 0 54533 NULL
140919 +disable_so_ext4_groupinfo_create_slab_fndecl_54534 ext4_groupinfo_create_slab fndecl 0 54534 NULL
140920 +disable_so_v_sync_strt_wid_crtc_54541 v_sync_strt_wid crtc 0 54541 NULL
140921 +disable_so_dev_set_allmulti_fndecl_54543 dev_set_allmulti fndecl 0 54543 NULL
140922 +disable_so_crypto_ahash_op_fndecl_54569 crypto_ahash_op fndecl 0 54569 NULL
140923 +disable_so_sjoyff_init_fndecl_54570 sjoyff_init fndecl 0 54570 NULL
140924 +disable_so_ath6kl_wmi_probe_report_req_cmd_fndecl_54576 ath6kl_wmi_probe_report_req_cmd fndecl 0 54576 NULL
140925 +disable_so_priority_sk_buff_54581 priority sk_buff 0 54581 NULL
140926 +disable_so_multiq_tune_fndecl_54583 multiq_tune fndecl 0 54583 NULL
140927 +disable_so_mgslpc_probe_fndecl_54587 mgslpc_probe fndecl 0 54587 NULL
140928 +disable_so_clear_wdm_read_flag_fndecl_54605 clear_wdm_read_flag fndecl 0 54605 NULL nohasharray
140929 +disable_so_mipi_dsi_dcs_write_fndecl_54605 mipi_dsi_dcs_write fndecl 0 54605 &disable_so_clear_wdm_read_flag_fndecl_54605
140930 +disable_so_radix_tree_preload_fndecl_54609 radix_tree_preload fndecl 0 54609 NULL
140931 +disable_so_b43_aphy_op_allocate_fndecl_54618 b43_aphy_op_allocate fndecl 0 54618 NULL
140932 +disable_so_write_orph_nodes_fndecl_54621 write_orph_nodes fndecl 0 54621 NULL
140933 +disable_so_snd_timer_global_new_fndecl_54623 snd_timer_global_new fndecl 0 54623 NULL
140934 +disable_so_fb_aper_offset_drm_radeon_private_54625 fb_aper_offset drm_radeon_private 0 54625 NULL
140935 +disable_so_ch_find_errno_fndecl_54626 ch_find_errno fndecl 0 54626 NULL
140936 +disable_so_n_tx_channels_efx_nic_54638 n_tx_channels efx_nic 0 54638 NULL
140937 +disable_so_gfs2_glock_wait_fndecl_54642 gfs2_glock_wait fndecl 0 54642 NULL
140938 +disable_so_ptrace_regset_fndecl_54644 ptrace_regset fndecl 0 54644 NULL
140939 +disable_so_qgroup_excl_accounting_fndecl_54652 qgroup_excl_accounting fndecl 0 54652 NULL
140940 +disable_so___inode_permission_fndecl_54654 __inode_permission fndecl 0 54654 NULL
140941 +disable_so_reshape_position_mddev_54660 reshape_position mddev 0 54660 NULL
140942 +disable_so_nfs4_sp4_select_mode_fndecl_54671 nfs4_sp4_select_mode fndecl 0 54671 NULL
140943 +disable_so_id_pps_device_54684 id pps_device 0 54684 NULL
140944 +disable_so_i2c_transfer_fndecl_54685 i2c_transfer fndecl 0 54685 NULL
140945 +disable_so_raid1_reshape_fndecl_54686 raid1_reshape fndecl 0 54686 NULL
140946 +disable_so_alb_handle_addr_collision_on_attach_fndecl_54689 alb_handle_addr_collision_on_attach fndecl 0 54689 NULL
140947 +disable_so_uwb_rc_ie_rm_fndecl_54690 uwb_rc_ie_rm fndecl 0 54690 NULL
140948 +disable_so_schedule_erase_fndecl_54695 schedule_erase fndecl 0 54695 NULL
140949 +disable_so_mlx4_en_create_cq_fndecl_54696 mlx4_en_create_cq fndecl 0 54696 NULL
140950 +disable_so_ark3116_open_fndecl_54700 ark3116_open fndecl 0 54700 NULL
140951 +disable_so_status_usb_sg_request_54722 status usb_sg_request 0 54722 NULL nohasharray
140952 +disable_so_snd_emu10k1_code_poke_fndecl_54722 snd_emu10k1_code_poke fndecl 0 54722 &disable_so_status_usb_sg_request_54722
140953 +disable_so_xfs_qm_newmount_fndecl_54723 xfs_qm_newmount fndecl 0 54723 NULL
140954 +disable_so_if_cs_probe_fndecl_54730 if_cs_probe fndecl 0 54730 NULL
140955 +disable_so_wBytesPerInterval_usb_ss_ep_comp_descriptor_54739 wBytesPerInterval usb_ss_ep_comp_descriptor 0 54739 NULL
140956 +disable_so_adf_cfg_dev_add_fndecl_54746 adf_cfg_dev_add fndecl 0 54746 NULL
140957 +disable_so_sisusb_copy_memory_fndecl_54747 sisusb_copy_memory fndecl 0 54747 NULL
140958 +disable_so_security_node_sid_fndecl_54750 security_node_sid fndecl 0 54750 NULL
140959 +disable_so_spi_xcomm_setup_transfer_fndecl_54757 spi_xcomm_setup_transfer fndecl 0 54757 NULL
140960 +disable_so_tpm_unseal_fndecl_54759 tpm_unseal fndecl 0 54759 NULL
140961 +disable_so_lmc_proto_ioctl_fndecl_54770 lmc_proto_ioctl fndecl 0 54770 NULL
140962 +disable_so_xfs_rtallocate_extent_fndecl_54783 xfs_rtallocate_extent fndecl 0 54783 NULL
140963 +disable_so_stv090x_read_reg_fndecl_54785 stv090x_read_reg fndecl 0 54785 NULL
140964 +disable_so_wl1271_acx_set_inconnection_sta_fndecl_54790 wl1271_acx_set_inconnection_sta fndecl 0 54790 NULL nohasharray
140965 +disable_so_keyspan_pda_open_fndecl_54790 keyspan_pda_open fndecl 0 54790 &disable_so_wl1271_acx_set_inconnection_sta_fndecl_54790
140966 +disable_so_uda134x_soc_probe_fndecl_54798 uda134x_soc_probe fndecl 0 54798 NULL
140967 +disable_so_num_sg_agp_memory_54800 num_sg agp_memory 0 54800 NULL
140968 +disable_so_radeonfb_create_pinned_object_fndecl_54805 radeonfb_create_pinned_object fndecl 0 54805 NULL
140969 +disable_so_drm_atomic_get_property_fndecl_54816 drm_atomic_get_property fndecl 0 54816 NULL nohasharray
140970 +disable_so_pci_request_regions_fndecl_54816 pci_request_regions fndecl 0 54816 &disable_so_drm_atomic_get_property_fndecl_54816
140971 +disable_so_nl80211_set_wowlan_fndecl_54820 nl80211_set_wowlan fndecl 0 54820 NULL
140972 +disable_so_build_adc_controls_fndecl_54833 build_adc_controls fndecl 0 54833 NULL
140973 +disable_so_nilfs_commit_super_fndecl_54837 nilfs_commit_super fndecl 0 54837 NULL
140974 +disable_so_rsi_process_pkt_fndecl_54841 rsi_process_pkt fndecl 0 54841 NULL
140975 +disable_so_request_lock_fndecl_54853 request_lock fndecl 0 54853 NULL
140976 +disable_so_csio_hw_write_flash_fndecl_54854 csio_hw_write_flash fndecl 0 54854 NULL
140977 +disable_so_DMAbuf_getwrbuffer_fndecl_54857 DMAbuf_getwrbuffer fndecl 0 54857 NULL
140978 +disable_so_ocrdma_wait_mqe_cmpl_fndecl_54860 ocrdma_wait_mqe_cmpl fndecl 0 54860 NULL
140979 +disable_so_snd_seq_oss_open_fndecl_54871 snd_seq_oss_open fndecl 0 54871 NULL
140980 +disable_so_ide_cd_queue_pc_fndecl_54885 ide_cd_queue_pc fndecl 0 54885 NULL
140981 +disable_so_snd_ctl_open_fndecl_54887 snd_ctl_open fndecl 0 54887 NULL
140982 +disable_so_fib_rules_lookup_fndecl_54890 fib_rules_lookup fndecl 0 54890 NULL
140983 +disable_so_irlan_provider_parse_command_fndecl_54900 irlan_provider_parse_command fndecl 0 54900 NULL
140984 +disable_so_ext3_mark_iloc_dirty_fndecl_54901 ext3_mark_iloc_dirty fndecl 0 54901 NULL
140985 +disable_so_sr_read_tochdr_fndecl_54902 sr_read_tochdr fndecl 0 54902 NULL
140986 +disable_so_nor_erase_prepare_fndecl_54903 nor_erase_prepare fndecl 0 54903 NULL
140987 +disable_so_iscsit_build_pdu_and_seq_lists_fndecl_54916 iscsit_build_pdu_and_seq_lists fndecl 0 54916 NULL
140988 +disable_so_ir_lirc_register_fndecl_54921 ir_lirc_register fndecl 0 54921 NULL
140989 +disable_so_sd_start_ov361x_fndecl_54922 sd_start_ov361x fndecl 0 54922 NULL
140990 +disable_so_i40e_aq_set_vsi_multicast_promiscuous_fndecl_54923 i40e_aq_set_vsi_multicast_promiscuous fndecl 0 54923 NULL
140991 +disable_so_fuse_bdi_init_fndecl_54936 fuse_bdi_init fndecl 0 54936 NULL nohasharray
140992 +disable_so_uvc_ctrl_add_mapping_fndecl_54936 uvc_ctrl_add_mapping fndecl 0 54936 &disable_so_fuse_bdi_init_fndecl_54936
140993 +disable_so_mlx4_internal_err_ret_value_fndecl_54942 mlx4_internal_err_ret_value fndecl 0 54942 NULL nohasharray
140994 +disable_so_btrfs_commit_transaction_fndecl_54942 btrfs_commit_transaction fndecl 0 54942 &disable_so_mlx4_internal_err_ret_value_fndecl_54942
140995 +disable_so_dev_irnet_ioctl_fndecl_54947 dev_irnet_ioctl fndecl 0 54947 NULL
140996 +disable_so_brcmf_attach_fndecl_54959 brcmf_attach fndecl 0 54959 NULL
140997 +disable_so_pci_enable_sriov_fndecl_54962 pci_enable_sriov fndecl 0 54962 NULL
140998 +disable_so_qib_setup_eagerbufs_fndecl_54973 qib_setup_eagerbufs fndecl 0 54973 NULL
140999 +disable_so_offset_usb_iso_packet_descriptor_54977 offset usb_iso_packet_descriptor 0 54977 NULL
141000 +disable_so_v4l2_src_w_yuv_playback_info_54979 v4l2_src_w yuv_playback_info 0 54979 NULL
141001 +disable_so_wl12xx_cmd_role_stop_sta_fndecl_54988 wl12xx_cmd_role_stop_sta fndecl 0 54988 NULL
141002 +disable_so_pvr2_hdw_cpufw_get_fndecl_55011 pvr2_hdw_cpufw_get fndecl 0 55011 NULL
141003 +disable_so_real_space_diff_fndecl_55014 real_space_diff fndecl 0 55014 NULL
141004 +disable_so_curfreq_amradio_device_55017 curfreq amradio_device 0 55017 NULL
141005 +disable_so_command_setcompressionparams_fndecl_55026 command_setcompressionparams fndecl 0 55026 NULL
141006 +disable_so___i2c_bit_add_bus_fndecl_55031 __i2c_bit_add_bus fndecl 0 55031 NULL
141007 +disable_so_get_memsize_fndecl_55032 get_memsize fndecl 0 55032 NULL
141008 +disable_so_snd_sb16dsp_pcm_fndecl_55035 snd_sb16dsp_pcm fndecl 0 55035 NULL
141009 +disable_so_ov518_i2c_r_fndecl_55039 ov518_i2c_r fndecl 0 55039 NULL
141010 +disable_so_wl1271_cmd_send_fndecl_55040 wl1271_cmd_send fndecl 0 55040 NULL
141011 +disable_so___wlcore_cmd_send_fndecl_55041 __wlcore_cmd_send fndecl 0 55041 NULL
141012 +disable_so_rv770_set_smc_sram_address_fndecl_55048 rv770_set_smc_sram_address fndecl 0 55048 NULL
141013 +disable_so_xfs_btree_check_lblock_fndecl_55062 xfs_btree_check_lblock fndecl 0 55062 NULL
141014 +disable_so_mlx4_alloc_hwq_res_fndecl_55064 mlx4_alloc_hwq_res fndecl 0 55064 NULL
141015 +disable_so_get_connections_fndecl_55068 get_connections fndecl 0 55068 NULL
141016 +disable_so_snd_pcm_hw_constraint_step_fndecl_55079 snd_pcm_hw_constraint_step fndecl 0 55079 NULL
141017 +disable_so_nes_probe_fndecl_55088 nes_probe fndecl 0 55088 NULL
141018 +disable_so_asus_wmi_rfkill_init_fndecl_55092 asus_wmi_rfkill_init fndecl 0 55092 NULL
141019 +disable_so_fat_mirror_bhs_fndecl_55104 fat_mirror_bhs fndecl 0 55104 NULL
141020 +disable_so_vt_do_kdgkb_ioctl_fndecl_55105 vt_do_kdgkb_ioctl fndecl 0 55105 NULL
141021 +disable_so_ocfs2_journal_access_di_fndecl_55122 ocfs2_journal_access_di fndecl 0 55122 NULL
141022 +disable_so_brcmf_set_sharedkey_fndecl_55124 brcmf_set_sharedkey fndecl 0 55124 NULL
141023 +disable_so_btrfs_search_old_slot_fndecl_55133 btrfs_search_old_slot fndecl 0 55133 NULL
141024 +disable_so_tc_ctl_tfilter_fndecl_55143 tc_ctl_tfilter fndecl 0 55143 NULL
141025 +disable_so_gigaset_isowbuf_getbytes_fndecl_55147 gigaset_isowbuf_getbytes fndecl 0 55147 NULL
141026 +disable_so_sparse_keymap_setup_fndecl_55151 sparse_keymap_setup fndecl 0 55151 NULL
141027 +disable_so_hub_enable_device_fndecl_55159 hub_enable_device fndecl 0 55159 NULL
141028 +disable_so_sb_start_md_rdev_55161 sb_start md_rdev 0 55161 NULL
141029 +disable_so_dlm_user_purge_fndecl_55172 dlm_user_purge fndecl 0 55172 NULL
141030 +disable_so_frame_ready_nolock_fndecl_55184 frame_ready_nolock fndecl 0 55184 NULL
141031 +disable_so_radeon_vm_clear_bo_fndecl_55203 radeon_vm_clear_bo fndecl 0 55203 NULL
141032 +disable_so_mlx4_qp_alloc_icm_fndecl_55204 mlx4_qp_alloc_icm fndecl 0 55204 NULL
141033 +disable_so_hsync_v4l2_bt_timings_55205 hsync v4l2_bt_timings 0 55205 NULL
141034 +disable_so_ecryptfs_write_packet_length_fndecl_55207 ecryptfs_write_packet_length fndecl 0 55207 NULL
141035 +disable_so_bochs_load_fndecl_55216 bochs_load fndecl 0 55216 NULL
141036 +disable_so_xfs_ioc_getbmapx_fndecl_55246 xfs_ioc_getbmapx fndecl 0 55246 NULL
141037 +disable_so_dev_alloc_name_ns_fndecl_55266 dev_alloc_name_ns fndecl 0 55266 NULL
141038 +disable_so_vb2_dqbuf_fndecl_55284 vb2_dqbuf fndecl 0 55284 NULL
141039 +disable_so_bytes_fuse_io_priv_55292 bytes fuse_io_priv 0 55292 NULL
141040 +disable_so_regmap_irq_chip_get_base_fndecl_55298 regmap_irq_chip_get_base fndecl 0 55298 NULL
141041 +disable_so_ocfs2_defrag_xattr_bucket_fndecl_55307 ocfs2_defrag_xattr_bucket fndecl 0 55307 NULL
141042 +disable_so_csio_hw_seeprom_read_fndecl_55309 csio_hw_seeprom_read fndecl 0 55309 NULL
141043 +disable_so_btrfs_ioctl_clone_range_fndecl_55326 btrfs_ioctl_clone_range fndecl 0 55326 NULL
141044 +disable_so_get_reserved_cluster_alloc_fndecl_55332 get_reserved_cluster_alloc fndecl 0 55332 NULL
141045 +disable_so_i915_gem_object_set_cache_level_fndecl_55336 i915_gem_object_set_cache_level fndecl 0 55336 NULL
141046 +disable_so_add_to_attr_set_fndecl_55346 add_to_attr_set fndecl 0 55346 NULL
141047 +disable_so_alc_alloc_spec_fndecl_55356 alc_alloc_spec fndecl 0 55356 NULL
141048 +disable_so_dm_btree_lookup_fndecl_55361 dm_btree_lookup fndecl 0 55361 NULL
141049 +disable_so_islpci_mgt_transmit_fndecl_55366 islpci_mgt_transmit fndecl 0 55366 NULL
141050 +disable_so_srcimp_mgr_create_fndecl_55369 srcimp_mgr_create fndecl 0 55369 NULL
141051 +disable_so_btrfs_csum_one_bio_fndecl_55370 btrfs_csum_one_bio fndecl 0 55370 NULL
141052 +disable_so_card_wait_for_ready_fndecl_55392 card_wait_for_ready fndecl 0 55392 NULL
141053 +disable_so_xfs_attr_get_fndecl_55405 xfs_attr_get fndecl 0 55405 NULL
141054 +disable_so_jffs2_do_reserve_space_fndecl_55406 jffs2_do_reserve_space fndecl 0 55406 NULL
141055 +disable_so_mwifiex_cmd_11n_addba_rsp_gen_fndecl_55414 mwifiex_cmd_11n_addba_rsp_gen fndecl 0 55414 NULL
141056 +disable_so_get_lsr_info_fndecl_55424 get_lsr_info fndecl 0 55424 NULL
141057 +disable_so_snd_pcm_format_width_fndecl_55426 snd_pcm_format_width fndecl 0 55426 NULL
141058 +disable_so_genwqe_ioctl_fndecl_55436 genwqe_ioctl fndecl 0 55436 NULL
141059 +disable_so_clock_drm_display_mode_55440 clock drm_display_mode 0 55440 NULL
141060 +disable_so_mgsl_claim_resources_fndecl_55444 mgsl_claim_resources fndecl 0 55444 NULL
141061 +disable_so_dma_length_scatterlist_55447 dma_length scatterlist 0 55447 NULL
141062 +disable_so_set_sample_rate_fndecl_55451 set_sample_rate fndecl 0 55451 NULL
141063 +disable_so_ipmi_set_my_LUN_fndecl_55460 ipmi_set_my_LUN fndecl 0 55460 NULL
141064 +disable_so_rx_ring2_size_vmxnet3_adapter_55465 rx_ring2_size vmxnet3_adapter 0 55465 NULL
141065 +disable_so_sess_establish_session_fndecl_55466 sess_establish_session fndecl 0 55466 NULL
141066 +disable_so_start_genius_cam_fndecl_55469 start_genius_cam fndecl 0 55469 NULL
141067 +disable_so_xfs_bmapi_write_fndecl_55475 xfs_bmapi_write fndecl 0 55475 NULL
141068 +disable_so___hidpp_send_report_fndecl_55479 __hidpp_send_report fndecl 0 55479 NULL
141069 +disable_so___send_command_fndecl_55481 __send_command fndecl 0 55481 NULL nohasharray
141070 +disable_so_vrefresh_drm_display_mode_55481 vrefresh drm_display_mode 0 55481 &disable_so___send_command_fndecl_55481
141071 +disable_so_xfs_ioc_fsgetxattr_fndecl_55482 xfs_ioc_fsgetxattr fndecl 0 55482 NULL
141072 +disable_so_cw1200_apb_write_fndecl_55488 cw1200_apb_write fndecl 0 55488 NULL
141073 +disable_so_eject_installer_fndecl_55492 eject_installer fndecl 0 55492 NULL
141074 +disable_so_rx_jumbo_thresh_bnx2_55494 rx_jumbo_thresh bnx2 0 55494 NULL
141075 +disable_so_ipxrtr_add_route_fndecl_55495 ipxrtr_add_route fndecl 0 55495 NULL
141076 +disable_so_setup_nodes_for_search_fndecl_55515 setup_nodes_for_search fndecl 0 55515 NULL
141077 +disable_so_read_cons_helper_fndecl_55538 read_cons_helper fndecl 0 55538 NULL
141078 +disable_so_device_private_init_fndecl_55540 device_private_init fndecl 0 55540 NULL
141079 +disable_so_rds_ib_conn_alloc_fndecl_55541 rds_ib_conn_alloc fndecl 0 55541 NULL
141080 +disable_so___get_v4l2_format32_fndecl_55551 __get_v4l2_format32 fndecl 0 55551 NULL
141081 +disable_so_wireless_process_ioctl_fndecl_55552 wireless_process_ioctl fndecl 0 55552 NULL
141082 +disable_so_snd_als300_create_fndecl_55569 snd_als300_create fndecl 0 55569 NULL
141083 +disable_so_check_qos_fndecl_55574 check_qos fndecl 0 55574 NULL
141084 +disable_so_mc13783_pwrbutton_probe_fndecl_55576 mc13783_pwrbutton_probe fndecl 0 55576 NULL
141085 +disable_so_x25_add_route_fndecl_55577 x25_add_route fndecl 0 55577 NULL
141086 +disable_so_kvm_vm_ioctl_assign_device_fndecl_55595 kvm_vm_ioctl_assign_device fndecl 0 55595 NULL
141087 +disable_so_overlay_out_top_vivid_dev_55610 overlay_out_top vivid_dev 0 55610 NULL
141088 +disable_so_pci_bus_alloc_resource_fndecl_55619 pci_bus_alloc_resource fndecl 0 55619 NULL
141089 +disable_so_pcxhr_read_rmh_status_fndecl_55627 pcxhr_read_rmh_status fndecl 0 55627 NULL
141090 +disable_so_transport_handle_cdb_direct_fndecl_55671 transport_handle_cdb_direct fndecl 0 55671 NULL nohasharray
141091 +disable_so_bochs_ttm_global_init_fndecl_55671 bochs_ttm_global_init fndecl 0 55671 &disable_so_transport_handle_cdb_direct_fndecl_55671
141092 +disable_so_flexonenand_block_fndecl_55676 flexonenand_block fndecl 0 55676 NULL
141093 +disable_so_nvkm_namedb_insert_fndecl_55688 nvkm_namedb_insert fndecl 0 55688 NULL nohasharray
141094 +disable_so___zd_usb_enable_rx_fndecl_55688 __zd_usb_enable_rx fndecl 0 55688 &disable_so_nvkm_namedb_insert_fndecl_55688
141095 +disable_so_vmbus_request_offers_fndecl_55693 vmbus_request_offers fndecl 0 55693 NULL
141096 +disable_so_prism2_ioctl_set_generic_element_fndecl_55726 prism2_ioctl_set_generic_element fndecl 0 55726 NULL
141097 +disable_so_ocfs2_create_new_meta_bhs_fndecl_55728 ocfs2_create_new_meta_bhs fndecl 0 55728 NULL nohasharray
141098 +disable_so_snd_ad1889_create_fndecl_55728 snd_ad1889_create fndecl 0 55728 &disable_so_ocfs2_create_new_meta_bhs_fndecl_55728
141099 +disable_so_btrfs_delalloc_reserve_metadata_fndecl_55736 btrfs_delalloc_reserve_metadata fndecl 0 55736 NULL
141100 +disable_so_parse_audio_mixer_unit_fndecl_55737 parse_audio_mixer_unit fndecl 0 55737 NULL
141101 +disable_so_error_poll_wqueues_55738 error poll_wqueues 0 55738 NULL
141102 +disable_so_cnt_mon_text_ptr_55741 cnt mon_text_ptr 0 55741 NULL
141103 +disable_so_uio_dev_add_attributes_fndecl_55744 uio_dev_add_attributes fndecl 0 55744 NULL
141104 +disable_so_pad_len_ubifs_pad_node_55751 pad_len ubifs_pad_node 0 55751 NULL
141105 +disable_so_snd_interval_refine_fndecl_55760 snd_interval_refine fndecl 0 55760 NULL
141106 +disable_so_watchdog_set_timeout_fndecl_55765 watchdog_set_timeout fndecl 0 55765 NULL
141107 +disable_so_adf_dev_start_fndecl_55789 adf_dev_start fndecl 0 55789 NULL
141108 +disable_so_csio_hw_fw_upgrade_fndecl_55807 csio_hw_fw_upgrade fndecl 0 55807 NULL
141109 +disable_so_mlx4_init_mr_table_fndecl_55809 mlx4_init_mr_table fndecl 0 55809 NULL nohasharray
141110 +disable_so_mwl8k_cmd_set_rf_channel_fndecl_55809 mwl8k_cmd_set_rf_channel fndecl 0 55809 &disable_so_mlx4_init_mr_table_fndecl_55809
141111 +disable_so_drm_minor_register_fndecl_55823 drm_minor_register fndecl 0 55823 NULL
141112 +disable_so_dbBackSplit_fndecl_55826 dbBackSplit fndecl 0 55826 NULL nohasharray
141113 +disable_so_mxr_acquire_layers_fndecl_55826 mxr_acquire_layers fndecl 0 55826 &disable_so_dbBackSplit_fndecl_55826
141114 +disable_so_self_check_peb_ec_hdr_fndecl_55831 self_check_peb_ec_hdr fndecl 0 55831 NULL
141115 +disable_so_mtd_write_fndecl_55842 mtd_write fndecl 0 55842 NULL nohasharray
141116 +disable_so___jffs2_ref_totlen_fndecl_55842 __jffs2_ref_totlen fndecl 0 55842 &disable_so_mtd_write_fndecl_55842
141117 +disable_so_csio_hw_prep_fw_fndecl_55845 csio_hw_prep_fw fndecl 0 55845 NULL
141118 +disable_so_do_raw_getsockopt_fndecl_55863 do_raw_getsockopt fndecl 0 55863 NULL
141119 +disable_so_brcms_c_compute_rspec_fndecl_55873 brcms_c_compute_rspec fndecl 0 55873 NULL
141120 +disable_so_tm6000_init_dev_fndecl_55877 tm6000_init_dev fndecl 0 55877 NULL
141121 +disable_so_register_sja1000dev_fndecl_55883 register_sja1000dev fndecl 0 55883 NULL
141122 +disable_so_iwl_mvm_power_set_ba_fndecl_55884 iwl_mvm_power_set_ba fndecl 0 55884 NULL
141123 +disable_so_psb_driver_load_fndecl_55909 psb_driver_load fndecl 0 55909 NULL
141124 +disable_so_ath6kl_upload_testscript_fndecl_55912 ath6kl_upload_testscript fndecl 0 55912 NULL
141125 +disable_so_sb1000_set_PIDs_fndecl_55914 sb1000_set_PIDs fndecl 0 55914 NULL
141126 +disable_so_ethtool_get_channels_fndecl_55921 ethtool_get_channels fndecl 0 55921 NULL
141127 +disable_so_rpc_anyaddr_fndecl_55925 rpc_anyaddr fndecl 0 55925 NULL
141128 +disable_so_assigned_device_enable_host_msix_fndecl_55933 assigned_device_enable_host_msix fndecl 0 55933 NULL
141129 +disable_so_taos_connect_fndecl_55934 taos_connect fndecl 0 55934 NULL
141130 +disable_so_snd_seq_do_ioctl_fndecl_55935 snd_seq_do_ioctl fndecl 0 55935 NULL nohasharray
141131 +disable_so_prism2_download_nonvolatile_fndecl_55935 prism2_download_nonvolatile fndecl 0 55935 &disable_so_snd_seq_do_ioctl_fndecl_55935
141132 +disable_so_r600_cs_track_validate_db_fndecl_55936 r600_cs_track_validate_db fndecl 0 55936 NULL
141133 +disable_so_mlx4_ib_mcg_attach_fndecl_55946 mlx4_ib_mcg_attach fndecl 0 55946 NULL
141134 +disable_so_osst_seek_logical_blk_fndecl_55950 osst_seek_logical_blk fndecl 0 55950 NULL
141135 +disable_so___generic_file_write_iter_fndecl_55960 __generic_file_write_iter fndecl 0 55960 NULL
141136 +disable_so_adp5588_gpio_add_fndecl_55961 adp5588_gpio_add fndecl 0 55961 NULL
141137 +disable_so_wa_urb_enqueue_fndecl_55966 wa_urb_enqueue fndecl 0 55966 NULL
141138 +disable_so_transfer_buffer_length_urb_55970 transfer_buffer_length urb 0 55970 NULL
141139 +disable_so_pm8001_mpi_build_cmd_fndecl_55977 pm8001_mpi_build_cmd fndecl 0 55977 NULL
141140 +disable_so_cirrusfb_create_fndecl_55978 cirrusfb_create fndecl 0 55978 NULL
141141 +disable_so_i9xx_pipe_crc_ctl_reg_fndecl_55983 i9xx_pipe_crc_ctl_reg fndecl 0 55983 NULL
141142 +disable_so_pcxhr_load_eeprom_binary_fndecl_55985 pcxhr_load_eeprom_binary fndecl 0 55985 NULL
141143 +disable_so_composite_dev_prepare_fndecl_55993 composite_dev_prepare fndecl 0 55993 NULL
141144 +disable_so_mon_bin_get_data_fndecl_55998 mon_bin_get_data fndecl 0 55998 NULL
141145 +disable_so_mmc_send_cxd_native_fndecl_56003 mmc_send_cxd_native fndecl 0 56003 NULL
141146 +disable_so_gpio_request_array_fndecl_56006 gpio_request_array fndecl 0 56006 NULL
141147 +disable_so_drm_object_property_get_value_fndecl_56009 drm_object_property_get_value fndecl 0 56009 NULL
141148 +disable_so_ocfs2_live_connection_attach_fndecl_56019 ocfs2_live_connection_attach fndecl 0 56019 NULL
141149 +disable_so_radeon_vm_init_fndecl_56021 radeon_vm_init fndecl 0 56021 NULL
141150 +disable_so_iscsit_handle_nop_out_fndecl_56023 iscsit_handle_nop_out fndecl 0 56023 NULL
141151 +disable_so_extract_package_fndecl_56026 extract_package fndecl 0 56026 NULL
141152 +disable_so_xfs_iget_cache_hit_fndecl_56028 xfs_iget_cache_hit fndecl 0 56028 NULL nohasharray
141153 +disable_so___iio_device_attr_init_fndecl_56028 __iio_device_attr_init fndecl 0 56028 &disable_so_xfs_iget_cache_hit_fndecl_56028
141154 +disable_so_do_migrate_pages_fndecl_56032 do_migrate_pages fndecl 0 56032 NULL
141155 +disable_so_totalram_pages_vardecl_56043 totalram_pages vardecl 0 56043 NULL
141156 +disable_so_snd_tea575x_get_freq_fndecl_56045 snd_tea575x_get_freq fndecl 0 56045 NULL nohasharray
141157 +disable_so_iwl_phy_db_send_all_channel_groups_fndecl_56045 iwl_phy_db_send_all_channel_groups fndecl 0 56045 &disable_so_snd_tea575x_get_freq_fndecl_56045
141158 +disable_so_qgroup_account_deleted_refs_fndecl_56059 qgroup_account_deleted_refs fndecl 0 56059 NULL
141159 +disable_so_chainsize_ctlr_info_56067 chainsize ctlr_info 0 56067 NULL
141160 +disable_so_iov_iter_single_seg_count_fndecl_56069 iov_iter_single_seg_count fndecl 0 56069 NULL
141161 +disable_so_ti_vread_sync_fndecl_56084 ti_vread_sync fndecl 0 56084 NULL
141162 +disable_so_l_sectBBsize_xlog_56103 l_sectBBsize xlog 0 56103 NULL
141163 +disable_so_xenfb_connect_backend_fndecl_56106 xenfb_connect_backend fndecl 0 56106 NULL
141164 +disable_so_con_set_cmap_fndecl_56130 con_set_cmap fndecl 0 56130 NULL nohasharray
141165 +disable_so_hsc_probe_fndecl_56130 hsc_probe fndecl 0 56130 &disable_so_con_set_cmap_fndecl_56130
141166 +disable_so_create_default_filesystem_fndecl_56133 create_default_filesystem fndecl 0 56133 NULL
141167 +disable_so_ea_read_fndecl_56153 ea_read fndecl 0 56153 NULL nohasharray
141168 +disable_so__iwl_dbgfs_low_latency_write_fndecl_56153 _iwl_dbgfs_low_latency_write fndecl 0 56153 &disable_so_ea_read_fndecl_56153
141169 +disable_so_dm_ulog_sendto_server_fndecl_56158 dm_ulog_sendto_server fndecl 0 56158 NULL
141170 +disable_so_lpfc_do_offline_fndecl_56165 lpfc_do_offline fndecl 0 56165 NULL
141171 +disable_so_sg_ioctl_fndecl_56168 sg_ioctl fndecl 0 56168 NULL
141172 +disable_so_block_len_extent_map_56171 block_len extent_map 0 56171 NULL
141173 +disable_so_netlbl_domhsh_add_fndecl_56174 netlbl_domhsh_add fndecl 0 56174 NULL
141174 +disable_so_iwl_calib_set_fndecl_56179 iwl_calib_set fndecl 0 56179 NULL
141175 +disable_so_mei_cl_flow_ctrl_creds_fndecl_56183 mei_cl_flow_ctrl_creds fndecl 0 56183 NULL
141176 +disable_so_ct_vm_create_fndecl_56185 ct_vm_create fndecl 0 56185 NULL
141177 +disable_so_check_overlay_possible_on_crtc_fndecl_56207 check_overlay_possible_on_crtc fndecl 0 56207 NULL nohasharray
141178 +disable_so_wl1251_cmd_data_path_rx_fndecl_56207 wl1251_cmd_data_path_rx fndecl 0 56207 &disable_so_check_overlay_possible_on_crtc_fndecl_56207
141179 +disable_so_width_v4l2_mbus_framefmt_56214 width v4l2_mbus_framefmt 0 56214 NULL
141180 +disable_so_len_bnad_rx_vector_56218 len bnad_rx_vector 0 56218 NULL
141181 +disable_so_ems_usb_probe_fndecl_56258 ems_usb_probe fndecl 0 56258 NULL
141182 +disable_so_wl1251_acx_default_key_fndecl_56264 wl1251_acx_default_key fndecl 0 56264 NULL
141183 +disable_so_snd_pcm_hw_param_value_fndecl_56270 snd_pcm_hw_param_value fndecl 0 56270 NULL
141184 +disable_so_virtnet_alloc_queues_fndecl_56273 virtnet_alloc_queues fndecl 0 56273 NULL
141185 +disable_so_vyres_crtc_56276 vyres crtc 0 56276 NULL
141186 +disable_so_dram_base_intel_sst_drv_56282 dram_base intel_sst_drv 0 56282 NULL
141187 +disable_so_tcf_pedit_init_fndecl_56304 tcf_pedit_init fndecl 0 56304 NULL
141188 +disable_so_gf100_ram_get_fndecl_56322 gf100_ram_get fndecl 0 56322 NULL
141189 +disable_so_mlx5_MAD_IFC_fndecl_56332 mlx5_MAD_IFC fndecl 0 56332 NULL
141190 +disable_so_ebt_compat_match_offset_fndecl_56334 ebt_compat_match_offset fndecl 0 56334 NULL
141191 +disable_so_st_magn_buffer_postenable_fndecl_56338 st_magn_buffer_postenable fndecl 0 56338 NULL
141192 +disable_so_ir_setkeytable_fndecl_56344 ir_setkeytable fndecl 0 56344 NULL
141193 +disable_so_vmw_user_shader_alloc_fndecl_56348 vmw_user_shader_alloc fndecl 0 56348 NULL
141194 +disable_so_make_reservation_fndecl_56349 make_reservation fndecl 0 56349 NULL
141195 +disable_so___key_instantiate_and_link_fndecl_56352 __key_instantiate_and_link fndecl 0 56352 NULL
141196 +disable_so_acl_permission_check_fndecl_56360 acl_permission_check fndecl 0 56360 NULL
141197 +disable_so_i8xx_pipe_crc_ctl_reg_fndecl_56361 i8xx_pipe_crc_ctl_reg fndecl 0 56361 NULL
141198 +disable_so_snd_usbmidi_detect_endpoints_fndecl_56376 snd_usbmidi_detect_endpoints fndecl 0 56376 NULL
141199 +disable_so_stk1160_scan_usb_fndecl_56377 stk1160_scan_usb fndecl 0 56377 NULL
141200 +disable_so_usb6fire_fw_ihex_init_fndecl_56378 usb6fire_fw_ihex_init fndecl 0 56378 NULL
141201 +disable_so_len_asd_ha_addrspace_56381 len asd_ha_addrspace 0 56381 NULL
141202 +disable_so_dvbv5_set_delivery_system_fndecl_56388 dvbv5_set_delivery_system fndecl 0 56388 NULL
141203 +disable_so_vnic_dev_cmd_no_proxy_fndecl_56390 vnic_dev_cmd_no_proxy fndecl 0 56390 NULL
141204 +disable_so_stride_geom_56394 stride geom 0 56394 NULL
141205 +disable_so_pidff_check_autocenter_fndecl_56399 pidff_check_autocenter fndecl 0 56399 NULL
141206 +disable_so_usb_si4713_probe_fndecl_56407 usb_si4713_probe fndecl 0 56407 NULL
141207 +disable_so_be_cmd_get_func_config_fndecl_56410 be_cmd_get_func_config fndecl 0 56410 NULL
141208 +disable_so_mgag200fb_create_object_fndecl_56416 mgag200fb_create_object fndecl 0 56416 NULL
141209 +disable_so_psb_framebuffer_init_fndecl_56417 psb_framebuffer_init fndecl 0 56417 NULL
141210 +disable_so_notify_change_fndecl_56420 notify_change fndecl 0 56420 NULL
141211 +disable_so_iwl_mvm_mac_ctx_send_fndecl_56422 iwl_mvm_mac_ctx_send fndecl 0 56422 NULL nohasharray
141212 +disable_so_acpi_ut_execute_SUB_fndecl_56422 acpi_ut_execute_SUB fndecl 0 56422 &disable_so_iwl_mvm_mac_ctx_send_fndecl_56422
141213 +disable_so_max_recv_wr_ib_qp_cap_56426 max_recv_wr ib_qp_cap 0 56426 NULL
141214 +disable_so_mwifiex_cfg80211_scan_fndecl_56441 mwifiex_cfg80211_scan fndecl 0 56441 NULL
141215 +disable_so_get_codec_vendor_name_fndecl_56447 get_codec_vendor_name fndecl 0 56447 NULL
141216 +disable_so_kvm_assign_device_fndecl_56451 kvm_assign_device fndecl 0 56451 NULL
141217 +disable_so_w8001_connect_fndecl_56460 w8001_connect fndecl 0 56460 NULL
141218 +disable_so_attach_capi_ctr_fndecl_56464 attach_capi_ctr fndecl 0 56464 NULL nohasharray
141219 +disable_so_qxl_release_list_add_fndecl_56464 qxl_release_list_add fndecl 0 56464 &disable_so_attach_capi_ctr_fndecl_56464
141220 +disable_so_nilfs_sysfs_create_mounted_snapshots_group_fndecl_56468 nilfs_sysfs_create_mounted_snapshots_group fndecl 0 56468 NULL
141221 +disable_so___erst_clear_from_storage_fndecl_56476 __erst_clear_from_storage fndecl 0 56476 NULL
141222 +disable_so_as102_usb_probe_fndecl_56477 as102_usb_probe fndecl 0 56477 NULL
141223 +disable_so_isdn_ppp_mp_init_fndecl_56478 isdn_ppp_mp_init fndecl 0 56478 NULL
141224 +disable_so_pp_read_fndecl_56489 pp_read fndecl 0 56489 NULL nohasharray
141225 +disable_so_ax_open_fndecl_56489 ax_open fndecl 0 56489 &disable_so_pp_read_fndecl_56489
141226 +disable_so_wl1251_acx_fw_version_fndecl_56490 wl1251_acx_fw_version fndecl 0 56490 NULL
141227 +disable_so_reqbufs_capture_fndecl_56493 reqbufs_capture fndecl 0 56493 NULL
141228 +disable_so_usb6fire_comm_init_fndecl_56497 usb6fire_comm_init fndecl 0 56497 NULL
141229 +disable_so_iwl_mvm_mac_ctxt_add_fndecl_56501 iwl_mvm_mac_ctxt_add fndecl 0 56501 NULL
141230 +disable_so_proc_put_char_fndecl_56519 proc_put_char fndecl 0 56519 NULL
141231 +disable_so___vb2_wait_for_done_vb_fndecl_56525 __vb2_wait_for_done_vb fndecl 0 56525 NULL
141232 +disable_so_atm_pcr_check_fndecl_56529 atm_pcr_check fndecl 0 56529 NULL
141233 +disable_so_mwl8k_send_fw_load_cmd_fndecl_56530 mwl8k_send_fw_load_cmd fndecl 0 56530 NULL
141234 +disable_so_ata_pci_init_one_fndecl_56540 ata_pci_init_one fndecl 0 56540 NULL nohasharray
141235 +disable_so_netlbl_unlhsh_remove_addr4_fndecl_56540 netlbl_unlhsh_remove_addr4 fndecl 0 56540 &disable_so_ata_pci_init_one_fndecl_56540
141236 +disable_so_write_bbt_fndecl_56541 write_bbt fndecl 0 56541 NULL
141237 +disable_so_acpi_sbs_add_fndecl_56556 acpi_sbs_add fndecl 0 56556 NULL
141238 +disable_so_security_genfs_sid_fndecl_56558 security_genfs_sid fndecl 0 56558 NULL
141239 +disable_so_sctp_primitive_REQUESTHEARTBEAT_fndecl_56559 sctp_primitive_REQUESTHEARTBEAT fndecl 0 56559 NULL
141240 +disable_so_lpfc_bsg_write_ebuf_set_fndecl_56564 lpfc_bsg_write_ebuf_set fndecl 0 56564 NULL
141241 +disable_so_mwl8k_cmd_tx_power_fndecl_56575 mwl8k_cmd_tx_power fndecl 0 56575 NULL
141242 +disable_so_ocfs2_read_inode_block_full_fndecl_56581 ocfs2_read_inode_block_full fndecl 0 56581 NULL nohasharray
141243 +disable_so_qlcnic_sriov_get_vf_acl_fndecl_56581 qlcnic_sriov_get_vf_acl fndecl 0 56581 &disable_so_ocfs2_read_inode_block_full_fndecl_56581
141244 +disable_so_iwl_dbgfs_fw_dbg_conf_write_fndecl_56593 iwl_dbgfs_fw_dbg_conf_write fndecl 0 56593 NULL
141245 +disable_so_symbol_dl_image_fndecl_56596 symbol_dl_image fndecl 0 56596 NULL
141246 +disable_so_ip6_mroute_getsockopt_fndecl_56597 ip6_mroute_getsockopt fndecl 0 56597 NULL
141247 +disable_so_wl1251_cmd_configure_fndecl_56600 wl1251_cmd_configure fndecl 0 56600 NULL
141248 +disable_so_cb_irq_yenta_socket_56604 cb_irq yenta_socket 0 56604 NULL
141249 +disable_so_snd_mixer_oss_free1_fndecl_56605 snd_mixer_oss_free1 fndecl 0 56605 NULL
141250 +disable_so_wl18xx_acx_rx_ba_filter_fndecl_56611 wl18xx_acx_rx_ba_filter fndecl 0 56611 NULL
141251 +disable_so_mlx5_db_alloc_fndecl_56622 mlx5_db_alloc fndecl 0 56622 NULL
141252 +disable_so_ipddp_ioctl_fndecl_56634 ipddp_ioctl fndecl 0 56634 NULL
141253 +disable_so_platram_probe_fndecl_56637 platram_probe fndecl 0 56637 NULL
141254 +disable_so_devt_device_56638 devt device 0 56638 NULL
141255 +disable_so_get_eeprom_fndecl_56644 get_eeprom fndecl 0 56644 NULL nohasharray
141256 +disable_so_last_sect_blkif_request_segment_56644 last_sect blkif_request_segment 0 56644 &disable_so_get_eeprom_fndecl_56644
141257 +disable_so_mtip_exec_internal_command_fndecl_56648 mtip_exec_internal_command fndecl 0 56648 NULL
141258 +disable_so_count_v4l2_requestbuffers_56650 count v4l2_requestbuffers 0 56650 NULL
141259 +disable_so_compat_sys_sigaltstack_fndecl_56656 compat_sys_sigaltstack fndecl 0 56656 NULL
141260 +disable_so_vmw_resources_reserve_fndecl_56658 vmw_resources_reserve fndecl 0 56658 NULL
141261 +disable_so___ksize_fndecl_56662 __ksize fndecl 0 56662 NULL
141262 +disable_so_wl12xx_cmd_config_fwlog_fndecl_56673 wl12xx_cmd_config_fwlog fndecl 0 56673 NULL
141263 +disable_so_len_fw_desc_56676 len fw_desc 0 56676 NULL
141264 +disable_so__convert_lock_fndecl_56679 _convert_lock fndecl 0 56679 NULL nohasharray
141265 +disable_so_vp702x_usb_inout_cmd_fndecl_56679 vp702x_usb_inout_cmd fndecl 0 56679 &disable_so__convert_lock_fndecl_56679
141266 +disable_so_cmd_result_cardstate_56699 cmd_result cardstate 0 56699 NULL
141267 +disable_so_usb_err_gspca_dev_56706 usb_err gspca_dev 0 56706 NULL
141268 +disable_so_mmc_erase_fndecl_56707 mmc_erase fndecl 0 56707 NULL
141269 +disable_so_isdn_net_realrm_fndecl_56726 isdn_net_realrm fndecl 0 56726 NULL
141270 +disable_so_add_dev_to_thread_fndecl_56739 add_dev_to_thread fndecl 0 56739 NULL
141271 +disable_so__ctl_eventquery_fndecl_56740 _ctl_eventquery fndecl 0 56740 NULL
141272 +disable_so_do_replace_fndecl_56743 do_replace fndecl 0 56743 NULL
141273 +disable_so_xfs_log_reserve_fndecl_56748 xfs_log_reserve fndecl 0 56748 NULL
141274 +disable_so_page_offset_skb_frag_struct_56751 page_offset skb_frag_struct 0 56751 NULL
141275 +disable_so_length_scatterlist_56760 length scatterlist 0 56760 NULL
141276 +disable_so_nvkm_handle_create_fndecl_56761 nvkm_handle_create fndecl 0 56761 NULL
141277 +disable_so_vmw_cmd_check_all_fndecl_56765 vmw_cmd_check_all fndecl 0 56765 NULL
141278 +disable_so_saa7706h_i2c_send_fndecl_56768 saa7706h_i2c_send fndecl 0 56768 NULL
141279 +disable_so_cciss_getintinfo_fndecl_56770 cciss_getintinfo fndecl 0 56770 NULL
141280 +disable_so_drop_one_dir_item_fndecl_56773 drop_one_dir_item fndecl 0 56773 NULL
141281 +disable_so_reset_rm2_fndecl_56778 reset_rm2 fndecl 0 56778 NULL
141282 +disable_so_mlx5_set_path_fndecl_56783 mlx5_set_path fndecl 0 56783 NULL
141283 +disable_so_wl1251_acx_group_address_tbl_fndecl_56786 wl1251_acx_group_address_tbl fndecl 0 56786 NULL
141284 +disable_so_do_lock_file_wait_fndecl_56789 do_lock_file_wait fndecl 0 56789 NULL
141285 +disable_so_mwl8k_cmd_set_hw_spec_fndecl_56795 mwl8k_cmd_set_hw_spec fndecl 0 56795 NULL
141286 +disable_so_state_count_acpi_processor_performance_56807 state_count acpi_processor_performance 0 56807 NULL
141287 +disable_so_vxge_probe_fndecl_56816 vxge_probe fndecl 0 56816 NULL
141288 +disable_so_acpi_button_add_fndecl_56818 acpi_button_add fndecl 0 56818 NULL
141289 +disable_so_fw_parse_fndecl_56822 fw_parse fndecl 0 56822 NULL
141290 +disable_so_page_base_xdr_buf_56823 page_base xdr_buf 0 56823 NULL
141291 +disable_so_irda_extract_ias_value_fndecl_56824 irda_extract_ias_value fndecl 0 56824 NULL
141292 +disable_so_rs_get_best_rate_fndecl_56825 rs_get_best_rate fndecl 0 56825 NULL
141293 +disable_so_btrfs_lookup_extent_info_fndecl_56827 btrfs_lookup_extent_info fndecl 0 56827 NULL nohasharray
141294 +disable_so_iwl_mvm_phy_ctxt_apply_fndecl_56827 iwl_mvm_phy_ctxt_apply fndecl 0 56827 &disable_so_btrfs_lookup_extent_info_fndecl_56827
141295 +disable_so_ima_parse_rule_fndecl_56838 ima_parse_rule fndecl 0 56838 NULL
141296 +disable_so_sc_max_requests_svcxprt_rdma_56840 sc_max_requests svcxprt_rdma 0 56840 NULL
141297 +disable_so_i40evf_get_vf_config_fndecl_56844 i40evf_get_vf_config fndecl 0 56844 NULL
141298 +disable_so_alps_detect_fndecl_56864 alps_detect fndecl 0 56864 NULL nohasharray
141299 +disable_so_lcr_offset__synclinkmp_info_56864 lcr_offset _synclinkmp_info 0 56864 &disable_so_alps_detect_fndecl_56864
141300 +disable_so_xfs_attr3_leaf_getvalue_fndecl_56869 xfs_attr3_leaf_getvalue fndecl 0 56869 NULL
141301 +disable_so_add_special_device_fndecl_56870 add_special_device fndecl 0 56870 NULL
141302 +disable_so_snd_mixer_oss_notify_handler_fndecl_56877 snd_mixer_oss_notify_handler fndecl 0 56877 NULL
141303 +disable_so_xfs_itruncate_extents_fndecl_56879 xfs_itruncate_extents fndecl 0 56879 NULL
141304 +disable_so_limit_write_fndecl_56891 limit_write fndecl 0 56891 NULL
141305 +disable_so_xfs_btree_check_sblock_fndecl_56897 xfs_btree_check_sblock fndecl 0 56897 NULL
141306 +disable_so_atmel_spi_setup_fndecl_56899 atmel_spi_setup fndecl 0 56899 NULL
141307 +disable_so_nilfs_mdt_read_block_fndecl_56901 nilfs_mdt_read_block fndecl 0 56901 NULL
141308 +disable_so_read_znode_fndecl_56908 read_znode fndecl 0 56908 NULL
141309 +disable_so_i40e_setup_tx_descriptors_fndecl_56909 i40e_setup_tx_descriptors fndecl 0 56909 NULL
141310 +disable_so_fw_hdr_load_fndecl_56912 fw_hdr_load fndecl 0 56912 NULL
141311 +disable_so_xt_compat_target_offset_fndecl_56923 xt_compat_target_offset fndecl 0 56923 NULL
141312 +disable_so_mptfc_GetFcDevPage0_fndecl_56930 mptfc_GetFcDevPage0 fndecl 0 56930 NULL
141313 +disable_so_create_endpoint_and_queue_control_fndecl_56934 create_endpoint_and_queue_control fndecl 0 56934 NULL
141314 +disable_so_vmw_resources_validate_fndecl_56937 vmw_resources_validate fndecl 0 56937 NULL
141315 +disable_so_add_del_if_fndecl_56940 add_del_if fndecl 0 56940 NULL
141316 +disable_so_hr222_add_mic_controls_fndecl_56944 hr222_add_mic_controls fndecl 0 56944 NULL
141317 +disable_so_mwifiex_uap_prepare_cmd_fndecl_56956 mwifiex_uap_prepare_cmd fndecl 0 56956 NULL
141318 +disable_so_submit_one_bio_fndecl_56960 submit_one_bio fndecl 0 56960 NULL
141319 +disable_so_speedtch_bind_fndecl_56979 speedtch_bind fndecl 0 56979 NULL
141320 +disable_so_find_next_chunk_fndecl_56983 find_next_chunk fndecl 0 56983 NULL
141321 +disable_so_ath6kl_wmi_startscan_cmd_fndecl_56985 ath6kl_wmi_startscan_cmd fndecl 0 56985 NULL
141322 +disable_so_lpfc_selective_reset_fndecl_56994 lpfc_selective_reset fndecl 0 56994 NULL nohasharray
141323 +disable_so_iwpm_init_fndecl_56994 iwpm_init fndecl 0 56994 &disable_so_lpfc_selective_reset_fndecl_56994
141324 +disable_so_snd_soc_dapm_dai_get_connected_widgets_fndecl_57010 snd_soc_dapm_dai_get_connected_widgets fndecl 0 57010 NULL
141325 +disable_so_buffer_bytes_max_snd_pcm_substream_57022 buffer_bytes_max snd_pcm_substream 0 57022 NULL
141326 +disable_so_csio_scsim_init_fndecl_57025 csio_scsim_init fndecl 0 57025 NULL
141327 +disable_so_dev_open_fndecl_57034 dev_open fndecl 0 57034 NULL
141328 +disable_so_sh_vou_hw_init_fndecl_57038 sh_vou_hw_init fndecl 0 57038 NULL
141329 +disable_so_solo_i2c_init_fndecl_57040 solo_i2c_init fndecl 0 57040 NULL
141330 +disable_so_mmu_notifier_register_fndecl_57041 mmu_notifier_register fndecl 0 57041 NULL
141331 +disable_so___mutex_lock_interruptible_slowpath_fndecl_57044 __mutex_lock_interruptible_slowpath fndecl 0 57044 NULL
141332 +disable_so_lpfc_bsg_check_cmd_access_fndecl_57087 lpfc_bsg_check_cmd_access fndecl 0 57087 NULL
141333 +disable_so_wlcore_validate_fw_ver_fndecl_57093 wlcore_validate_fw_ver fndecl 0 57093 NULL
141334 +disable_so___mac_fw_upload_fndecl_57100 __mac_fw_upload fndecl 0 57100 NULL
141335 +disable_so_xfs_ioc_getbmap_fndecl_57111 xfs_ioc_getbmap fndecl 0 57111 NULL
141336 +disable_so_vx_send_irq_dsp_fndecl_57122 vx_send_irq_dsp fndecl 0 57122 NULL
141337 +disable_so_joydev_ioctl_fndecl_57132 joydev_ioctl fndecl 0 57132 NULL
141338 +disable_so_sg_scsi_ioctl_fndecl_57136 sg_scsi_ioctl fndecl 0 57136 NULL
141339 +disable_so_width_v4l2_bt_timings_57137 width v4l2_bt_timings 0 57137 NULL
141340 +disable_so_acpi_thermal_get_info_fndecl_57138 acpi_thermal_get_info fndecl 0 57138 NULL nohasharray
141341 +disable_so_max_write_same_sectors_queue_limits_57138 max_write_same_sectors queue_limits 0 57138 &disable_so_acpi_thermal_get_info_fndecl_57138
141342 +disable_so_put_v4l2_format32_fndecl_57141 put_v4l2_format32 fndecl 0 57141 NULL
141343 +disable_so_vmw_resize_cmd_bounce_fndecl_57144 vmw_resize_cmd_bounce fndecl 0 57144 NULL
141344 +disable_so_smsc95xx_enter_suspend2_fndecl_57146 smsc95xx_enter_suspend2 fndecl 0 57146 NULL
141345 +disable_so_sd_rw_multi_fndecl_57157 sd_rw_multi fndecl 0 57157 NULL
141346 +disable_so_input_set_keycode_fndecl_57164 input_set_keycode fndecl 0 57164 NULL
141347 +disable_so_ts2020_probe_fndecl_57165 ts2020_probe fndecl 0 57165 NULL
141348 +disable_so_hash_ipport4_add_fndecl_57168 hash_ipport4_add fndecl 0 57168 NULL
141349 +disable_so_ips_abort_init_fndecl_57177 ips_abort_init fndecl 0 57177 NULL
141350 +disable_so_fou_add_to_port_list_fndecl_57179 fou_add_to_port_list fndecl 0 57179 NULL
141351 +disable_so_pvscsi_allocate_sg_fndecl_57182 pvscsi_allocate_sg fndecl 0 57182 NULL
141352 +disable_so_rsxx_setup_dev_fndecl_57186 rsxx_setup_dev fndecl 0 57186 NULL
141353 +disable_so_cirrus_mm_init_fndecl_57198 cirrus_mm_init fndecl 0 57198 NULL
141354 +disable_so_dst_fetch_ha_fndecl_57199 dst_fetch_ha fndecl 0 57199 NULL
141355 +disable_so_logfs_write_buf_fndecl_57213 logfs_write_buf fndecl 0 57213 NULL
141356 +disable_so_mxuport_send_ctrl_data_urb_fndecl_57216 mxuport_send_ctrl_data_urb fndecl 0 57216 NULL
141357 +disable_so_snd_ctl_elem_add_user_fndecl_57226 snd_ctl_elem_add_user fndecl 0 57226 NULL
141358 +disable_so_ubh_scanc_fndecl_57231 ubh_scanc fndecl 0 57231 NULL
141359 +disable_so_dummy_urb_enqueue_fndecl_57235 dummy_urb_enqueue fndecl 0 57235 NULL
141360 +disable_so_drm_mm_reserve_node_fndecl_57239 drm_mm_reserve_node fndecl 0 57239 NULL
141361 +disable_so_find_partition_fndecl_57247 find_partition fndecl 0 57247 NULL
141362 +disable_so_appleir_probe_fndecl_57251 appleir_probe fndecl 0 57251 NULL
141363 +disable_so___verify_length_fndecl_57253 __verify_length fndecl 0 57253 NULL
141364 +disable_so_sg_set_reserved_size_fndecl_57263 sg_set_reserved_size fndecl 0 57263 NULL
141365 +disable_so_qgroup_calc_old_refcnt_fndecl_57266 qgroup_calc_old_refcnt fndecl 0 57266 NULL nohasharray
141366 +disable_so_sc18is602_setup_transfer_fndecl_57266 sc18is602_setup_transfer fndecl 0 57266 &disable_so_qgroup_calc_old_refcnt_fndecl_57266
141367 +disable_so_fuse_dev_do_write_fndecl_57267 fuse_dev_do_write fndecl 0 57267 NULL
141368 +disable_so_acpi_smbus_transaction_fndecl_57277 acpi_smbus_transaction fndecl 0 57277 NULL nohasharray
141369 +disable_so_netlbl_cipsov4_add_local_fndecl_57277 netlbl_cipsov4_add_local fndecl 0 57277 &disable_so_acpi_smbus_transaction_fndecl_57277
141370 +disable_so_sock_set_timeout_fndecl_57281 sock_set_timeout fndecl 0 57281 NULL
141371 +disable_so_mtrr_file_add_fndecl_57296 mtrr_file_add fndecl 0 57296 NULL
141372 +disable_so_ims_pcu_probe_fndecl_57298 ims_pcu_probe fndecl 0 57298 NULL
141373 +disable_so_ip_setsockopt_fndecl_57308 ip_setsockopt fndecl 0 57308 NULL
141374 +disable_so_ati_remote2_probe_fndecl_57310 ati_remote2_probe fndecl 0 57310 NULL
141375 +disable_so_ahash_setkey_unaligned_fndecl_57314 ahash_setkey_unaligned fndecl 0 57314 NULL nohasharray
141376 +disable_so_orinoco_hw_get_essid_fndecl_57314 orinoco_hw_get_essid fndecl 0 57314 &disable_so_ahash_setkey_unaligned_fndecl_57314
141377 +disable_so_ax25_ctl_ioctl_fndecl_57316 ax25_ctl_ioctl fndecl 0 57316 NULL
141378 +disable_so_dbg_chk_lpt_sz_fndecl_57318 dbg_chk_lpt_sz fndecl 0 57318 NULL
141379 +disable_so_dao_rsc_init_fndecl_57331 dao_rsc_init fndecl 0 57331 NULL
141380 +disable_so_ext4_expand_extra_isize_ea_fndecl_57344 ext4_expand_extra_isize_ea fndecl 0 57344 NULL
141381 +disable_so_r600_cs_track_validate_cb_fndecl_57362 r600_cs_track_validate_cb fndecl 0 57362 NULL nohasharray
141382 +disable_so_wl1271_acx_tx_config_options_fndecl_57362 wl1271_acx_tx_config_options fndecl 0 57362 &disable_so_r600_cs_track_validate_cb_fndecl_57362
141383 +disable_so_b43legacy_chip_init_fndecl_57380 b43legacy_chip_init fndecl 0 57380 NULL
141384 +disable_so_vlv_pipe_crc_ctl_reg_fndecl_57388 vlv_pipe_crc_ctl_reg fndecl 0 57388 NULL
141385 +disable_so_sst_fill_memcpy_list_fndecl_57393 sst_fill_memcpy_list fndecl 0 57393 NULL nohasharray
141386 +disable_so_wl1271_ap_init_null_template_fndecl_57393 wl1271_ap_init_null_template fndecl 0 57393 &disable_so_sst_fill_memcpy_list_fndecl_57393
141387 +disable_so_snd_power_wait_fndecl_57397 snd_power_wait fndecl 0 57397 NULL
141388 +disable_so___hw_addr_del_entry_fndecl_57405 __hw_addr_del_entry fndecl 0 57405 NULL nohasharray
141389 +disable_so_acpi_video_bus_get_devices_fndecl_57405 acpi_video_bus_get_devices fndecl 0 57405 &disable_so___hw_addr_del_entry_fndecl_57405
141390 +disable_so_copy_page_from_iter_iovec_fndecl_57409 copy_page_from_iter_iovec fndecl 0 57409 NULL
141391 +disable_so__iwl_dbgfs_bt_tx_prio_write_fndecl_57418 _iwl_dbgfs_bt_tx_prio_write fndecl 0 57418 NULL
141392 +disable_so_fotg210_udc_probe_fndecl_57429 fotg210_udc_probe fndecl 0 57429 NULL
141393 +disable_so_st_ioctl_fndecl_57435 st_ioctl fndecl 0 57435 NULL
141394 +disable_so_key_size_ecryptfs_crypt_stat_57436 key_size ecryptfs_crypt_stat 0 57436 NULL
141395 +disable_so_alb_set_slave_mac_addr_fndecl_57439 alb_set_slave_mac_addr fndecl 0 57439 NULL
141396 +disable_so_convert_tail_for_hole_fndecl_57444 convert_tail_for_hole fndecl 0 57444 NULL
141397 +disable_so_dln2_i2c_read_fndecl_57452 dln2_i2c_read fndecl 0 57452 NULL nohasharray
141398 +disable_so_cpa_process_alias_fndecl_57452 cpa_process_alias fndecl 0 57452 &disable_so_dln2_i2c_read_fndecl_57452
141399 +disable_so_st5481_setup_usb_fndecl_57460 st5481_setup_usb fndecl 0 57460 NULL
141400 +disable_so_ipddp_delete_fndecl_57464 ipddp_delete fndecl 0 57464 NULL
141401 +disable_so_btc_initialize_mc_reg_table_fndecl_57479 btc_initialize_mc_reg_table fndecl 0 57479 NULL
141402 +disable_so_xfs_readsb_fndecl_57480 xfs_readsb fndecl 0 57480 NULL
141403 +disable_so_iwlagn_hwrate_to_mac80211_idx_fndecl_57485 iwlagn_hwrate_to_mac80211_idx fndecl 0 57485 NULL
141404 +disable_so_csio_hw_read_flash_fndecl_57503 csio_hw_read_flash fndecl 0 57503 NULL
141405 +disable_so_efx_ef10_init_datapath_caps_fndecl_57504 efx_ef10_init_datapath_caps fndecl 0 57504 NULL
141406 +disable_so_command_resume_fndecl_57510 command_resume fndecl 0 57510 NULL
141407 +disable_so_iforce_usb_probe_fndecl_57512 iforce_usb_probe fndecl 0 57512 NULL
141408 +disable_so_realloc_lpt_leb_fndecl_57519 realloc_lpt_leb fndecl 0 57519 NULL
141409 +disable_so_nvbios_extend_fndecl_57525 nvbios_extend fndecl 0 57525 NULL
141410 +disable_so_read_ltab_fndecl_57527 read_ltab fndecl 0 57527 NULL
141411 +disable_so_pkt_new_dev_fndecl_57531 pkt_new_dev fndecl 0 57531 NULL
141412 +disable_so_em2860_ir_change_protocol_fndecl_57532 em2860_ir_change_protocol fndecl 0 57532 NULL
141413 +disable_so_megaraid_cmm_register_fndecl_57539 megaraid_cmm_register fndecl 0 57539 NULL
141414 +disable_so_uwb_rc_reset_fndecl_57553 uwb_rc_reset fndecl 0 57553 NULL nohasharray
141415 +disable_so_nvif_notify_init_fndecl_57553 nvif_notify_init fndecl 0 57553 &disable_so_uwb_rc_reset_fndecl_57553
141416 +disable_so_frequency_v4l2_frequency_57580 frequency v4l2_frequency 0 57580 NULL
141417 +disable_so_msi2500_probe_fndecl_57583 msi2500_probe fndecl 0 57583 NULL
141418 +disable_so_mlx4_init_steering_fndecl_57596 mlx4_init_steering fndecl 0 57596 NULL
141419 +disable_so_hsc_rx_set_fndecl_57597 hsc_rx_set fndecl 0 57597 NULL nohasharray
141420 +disable_so_parent_ino_nilfs_fid_57597 parent_ino nilfs_fid 0 57597 &disable_so_hsc_rx_set_fndecl_57597
141421 +disable_so_lpfc_sli4_alloc_extent_fndecl_57603 lpfc_sli4_alloc_extent fndecl 0 57603 NULL
141422 +disable_so_get_cur_inode_state_fndecl_57606 get_cur_inode_state fndecl 0 57606 NULL
141423 +disable_so_revo51_i2c_init_fndecl_57614 revo51_i2c_init fndecl 0 57614 NULL
141424 +disable_so_metrousb_send_unidirectional_cmd_fndecl_57618 metrousb_send_unidirectional_cmd fndecl 0 57618 NULL
141425 +disable_so_nv04_tv_create_fndecl_57629 nv04_tv_create fndecl 0 57629 NULL
141426 +disable_so_netif_set_real_num_tx_queues_fndecl_57633 netif_set_real_num_tx_queues fndecl 0 57633 NULL
141427 +disable_so_mac_hid_emumouse_connect_fndecl_57661 mac_hid_emumouse_connect fndecl 0 57661 NULL
141428 +disable_so_snd_seq_dump_var_event_fndecl_57666 snd_seq_dump_var_event fndecl 0 57666 NULL
141429 +disable_so_iwl_nvm_is_otp_fndecl_57667 iwl_nvm_is_otp fndecl 0 57667 NULL
141430 +disable_so_curheight_usb_usbvision_57669 curheight usb_usbvision 0 57669 NULL
141431 +disable_so_nfsd4_build_namelist_fndecl_57678 nfsd4_build_namelist fndecl 0 57678 NULL
141432 +disable_so_search_start_reloc_control_57681 search_start reloc_control 0 57681 NULL
141433 +disable_so_mwl8k_cmd_enable_sniffer_fndecl_57686 mwl8k_cmd_enable_sniffer fndecl 0 57686 NULL
141434 +disable_so_drm_mode_getconnector_fndecl_57687 drm_mode_getconnector fndecl 0 57687 NULL
141435 +disable_so_snd_emu10k1x_pcm_open_capture_fndecl_57688 snd_emu10k1x_pcm_open_capture fndecl 0 57688 NULL
141436 +disable_so_startup_fndecl_57694 startup fndecl 0 57694 NULL
141437 +disable_so_r600_cs_parse_fndecl_57701 r600_cs_parse fndecl 0 57701 NULL
141438 +disable_so_mmc_test_area_transfer_fndecl_57705 mmc_test_area_transfer fndecl 0 57705 NULL
141439 +disable_so_iwl_mvm_beacon_filter_send_cmd_fndecl_57713 iwl_mvm_beacon_filter_send_cmd fndecl 0 57713 NULL
141440 +disable_so_ttm_bo_create_fndecl_57717 ttm_bo_create fndecl 0 57717 NULL
141441 +disable_so_ib_mad_port_start_fndecl_57727 ib_mad_port_start fndecl 0 57727 NULL
141442 +disable_so_erst_init_fndecl_57729 erst_init fndecl 0 57729 NULL
141443 +disable_so_disk_recovery_offset_dm_raid_superblock_57740 disk_recovery_offset dm_raid_superblock 0 57740 NULL
141444 +disable_so_usb_hcd_submit_urb_fndecl_57747 usb_hcd_submit_urb fndecl 0 57747 NULL
141445 +disable_so___videobuf_free_fndecl_57751 __videobuf_free fndecl 0 57751 NULL
141446 +disable_so_raid10_check_reshape_fndecl_57752 raid10_check_reshape fndecl 0 57752 NULL
141447 +disable_so_bnx2x_test_nvram_dir_fndecl_57758 bnx2x_test_nvram_dir fndecl 0 57758 NULL
141448 +disable_so_fpga_probe_fndecl_57760 fpga_probe fndecl 0 57760 NULL
141449 +disable_so_send_set_info_fndecl_57779 send_set_info fndecl 0 57779 NULL
141450 +disable_so_wl12xx_get_clock_idx_fndecl_57780 wl12xx_get_clock_idx fndecl 0 57780 NULL
141451 +disable_so_uvesafb_vbe_getedid_fndecl_57782 uvesafb_vbe_getedid fndecl 0 57782 NULL
141452 +disable_so_hci_req_run_fndecl_57800 hci_req_run fndecl 0 57800 NULL
141453 +disable_so_read_exec_fndecl_57803 read_exec fndecl 0 57803 NULL
141454 +disable_so_journal_get_superblock_fndecl_57806 journal_get_superblock fndecl 0 57806 NULL
141455 +disable_so_resize_kernel_fndecl_57813 resize_kernel fndecl 0 57813 NULL
141456 +disable_so_blocks_mmc_data_57821 blocks mmc_data 0 57821 NULL
141457 +disable_so_kvm_vm_ioctl_fndecl_57836 kvm_vm_ioctl fndecl 0 57836 NULL
141458 +disable_so_ilo_open_fndecl_57840 ilo_open fndecl 0 57840 NULL
141459 +disable_so___pn533_send_frame_async_fndecl_57850 __pn533_send_frame_async fndecl 0 57850 NULL
141460 +disable_so_be_cmd_query_fw_cfg_fndecl_57855 be_cmd_query_fw_cfg fndecl 0 57855 NULL
141461 +disable_so_broadsheet_spiflash_write_page_fndecl_57862 broadsheet_spiflash_write_page fndecl 0 57862 NULL
141462 +disable_so__usbctrl_vendorreq_async_write_fndecl_57866 _usbctrl_vendorreq_async_write fndecl 0 57866 NULL
141463 +disable_so_snd_pcm_update_hw_ptr_fndecl_57870 snd_pcm_update_hw_ptr fndecl 0 57870 NULL
141464 +disable_so_ath6kl_debug_init_fs_fndecl_57873 ath6kl_debug_init_fs fndecl 0 57873 NULL nohasharray
141465 +disable_so_joydev_handle_JSIOCSAXMAP_fndecl_57873 joydev_handle_JSIOCSAXMAP fndecl 0 57873 &disable_so_ath6kl_debug_init_fs_fndecl_57873
141466 +disable_so_v4l2_src_h_yuv_playback_info_57877 v4l2_src_h yuv_playback_info 0 57877 NULL
141467 +disable_so_command_setecptiming_fndecl_57895 command_setecptiming fndecl 0 57895 NULL
141468 +disable_so_xfs_trans_commit_fndecl_57925 xfs_trans_commit fndecl 0 57925 NULL
141469 +disable_so_myri10ge_send_cmd_fndecl_57927 myri10ge_send_cmd fndecl 0 57927 NULL
141470 +disable_so_parse_audio_extension_unit_fndecl_57938 parse_audio_extension_unit fndecl 0 57938 NULL
141471 +disable_so_lbmIOWait_fndecl_57945 lbmIOWait fndecl 0 57945 NULL
141472 +disable_so_ti_download_firmware_fndecl_57949 ti_download_firmware fndecl 0 57949 NULL
141473 +disable_so_i2c_read_fndecl_57956 i2c_read fndecl 0 57956 NULL
141474 +disable_so_mlx4_RUN_FW_fndecl_57960 mlx4_RUN_FW fndecl 0 57960 NULL
141475 +disable_so_filemap_check_errors_fndecl_57965 filemap_check_errors fndecl 0 57965 NULL
141476 +disable_so_pcxhr_probe_fndecl_57966 pcxhr_probe fndecl 0 57966 NULL
141477 +disable_so_mlx4_uar_alloc_fndecl_57971 mlx4_uar_alloc fndecl 0 57971 NULL
141478 +disable_so_sel_write_enforce_fndecl_57973 sel_write_enforce fndecl 0 57973 NULL
141479 +disable_so_rds_rm_size_fndecl_57975 rds_rm_size fndecl 0 57975 NULL
141480 +disable_so_sel_netif_sid_slow_fndecl_57981 sel_netif_sid_slow fndecl 0 57981 NULL nohasharray
141481 +disable_so_wdt_set_timeout_fndecl_57981 wdt_set_timeout fndecl 0 57981 &disable_so_sel_netif_sid_slow_fndecl_57981
141482 +disable_so_memaddr_velocity_info_57982 memaddr velocity_info 0 57982 NULL
141483 +disable_so_usb_dsbr100_probe_fndecl_57991 usb_dsbr100_probe fndecl 0 57991 NULL
141484 +disable_so_vmw_bo_to_validate_list_fndecl_57992 vmw_bo_to_validate_list fndecl 0 57992 NULL
141485 +disable_so_max_idx_node_sz_ubifs_info_57997 max_idx_node_sz ubifs_info 0 57997 NULL
141486 +disable_so_kovaplus_send_control_fndecl_57999 kovaplus_send_control fndecl 0 57999 NULL
141487 +disable_so_cipso_v4_sock_setattr_fndecl_58003 cipso_v4_sock_setattr fndecl 0 58003 NULL
141488 +disable_so_sermouse_connect_fndecl_58012 sermouse_connect fndecl 0 58012 NULL
141489 +disable_so_asus_wmi_input_init_fndecl_58014 asus_wmi_input_init fndecl 0 58014 NULL
141490 +disable_so_rocker_flow_tbl_ig_port_fndecl_58027 rocker_flow_tbl_ig_port fndecl 0 58027 NULL
141491 +disable_so_at76_usbdfu_download_fndecl_58037 at76_usbdfu_download fndecl 0 58037 NULL
141492 +disable_so__osd_get_print_system_info_fndecl_58053 _osd_get_print_system_info fndecl 0 58053 NULL
141493 +disable_so_update_dev_stat_item_fndecl_58082 update_dev_stat_item fndecl 0 58082 NULL
141494 +disable_so_qib_user_sdma_pin_pages_fndecl_58083 qib_user_sdma_pin_pages fndecl 0 58083 NULL
141495 +disable_so_ib_find_cached_pkey_fndecl_58087 ib_find_cached_pkey fndecl 0 58087 NULL
141496 +disable_so_divas_read_fndecl_58092 divas_read fndecl 0 58092 NULL
141497 +disable_so_wl1271_ps_elp_wakeup_fndecl_58094 wl1271_ps_elp_wakeup fndecl 0 58094 NULL
141498 +disable_so_qxl_release_reserve_list_fndecl_58104 qxl_release_reserve_list fndecl 0 58104 NULL
141499 +disable_so_gssx_dec_linux_creds_fndecl_58111 gssx_dec_linux_creds fndecl 0 58111 NULL
141500 +disable_so_snd_usb_mixer_add_control_fndecl_58119 snd_usb_mixer_add_control fndecl 0 58119 NULL
141501 +disable_so_ore_get_rw_state_fndecl_58120 ore_get_rw_state fndecl 0 58120 NULL
141502 +disable_so_ubi_eba_unmap_leb_fndecl_58124 ubi_eba_unmap_leb fndecl 0 58124 NULL nohasharray
141503 +disable_so_picolcd_init_cir_fndecl_58124 picolcd_init_cir fndecl 0 58124 &disable_so_ubi_eba_unmap_leb_fndecl_58124
141504 +disable_so_do_ip_vs_set_ctl_fndecl_58130 do_ip_vs_set_ctl fndecl 0 58130 NULL
141505 +disable_so_i915_cmd_parser_init_ring_fndecl_58132 i915_cmd_parser_init_ring fndecl 0 58132 NULL
141506 +disable_so_mtd_read_fndecl_58140 mtd_read fndecl 0 58140 NULL
141507 +disable_so_pvr2_upload_firmware2_fndecl_58144 pvr2_upload_firmware2 fndecl 0 58144 NULL
141508 +disable_so_security_inode_setattr_fndecl_58146 security_inode_setattr fndecl 0 58146 NULL
141509 +disable_so_altera_drscan_fndecl_58153 altera_drscan fndecl 0 58153 NULL
141510 +disable_so_savage_init_fb_info_fndecl_58156 savage_init_fb_info fndecl 0 58156 NULL
141511 +disable_so_hpet_ioctl_fndecl_58163 hpet_ioctl fndecl 0 58163 NULL
141512 +disable_so_head_len_beacon_data_58173 head_len beacon_data 0 58173 NULL
141513 +disable_so_pt3_init_all_mxl301rf_fndecl_58177 pt3_init_all_mxl301rf fndecl 0 58177 NULL
141514 +disable_so_as102_dvb_register_fndecl_58191 as102_dvb_register fndecl 0 58191 NULL
141515 +disable_so_mwl8k_cmd_update_mac_addr_fndecl_58193 mwl8k_cmd_update_mac_addr fndecl 0 58193 NULL
141516 +disable_so_kvm_set_irq_routing_fndecl_58195 kvm_set_irq_routing fndecl 0 58195 NULL
141517 +disable_so_falcon_probe_nvconfig_fndecl_58196 falcon_probe_nvconfig fndecl 0 58196 NULL
141518 +disable_so_sysfs_rename_dir_ns_fndecl_58206 sysfs_rename_dir_ns fndecl 0 58206 NULL
141519 +disable_so_maxOutstanding_AdapterControlBlock_58208 maxOutstanding AdapterControlBlock 0 58208 NULL
141520 +disable_so_size_skb_frag_struct_58222 size skb_frag_struct 0 58222 NULL
141521 +disable_so_balloon_page_migrate_fndecl_58231 balloon_page_migrate fndecl 0 58231 NULL
141522 +disable_so_cifs_check_receive_fndecl_58236 cifs_check_receive fndecl 0 58236 NULL
141523 +disable_so_gpiod_count_fndecl_58262 gpiod_count fndecl 0 58262 NULL
141524 +disable_so_lx_dsp_get_clock_frequency_fndecl_58263 lx_dsp_get_clock_frequency fndecl 0 58263 NULL
141525 +disable_so_cb710_mmc_transfer_data_fndecl_58265 cb710_mmc_transfer_data fndecl 0 58265 NULL
141526 +disable_so_snd_ice1712_akm4xxx_init_fndecl_58272 snd_ice1712_akm4xxx_init fndecl 0 58272 NULL
141527 +disable_so_iso_size_usbtv_58278 iso_size usbtv 0 58278 NULL
141528 +disable_so_bio_uncopy_user_fndecl_58288 bio_uncopy_user fndecl 0 58288 NULL
141529 +disable_so_ipv6_dev_get_saddr_fndecl_58290 ipv6_dev_get_saddr fndecl 0 58290 NULL
141530 +disable_so_ufx_unblank_fndecl_58295 ufx_unblank fndecl 0 58295 NULL
141531 +disable_so_adfs_map_lookup_fndecl_58299 adfs_map_lookup fndecl 0 58299 NULL
141532 +disable_so_mwl8k_cmd_rf_tx_power_fndecl_58319 mwl8k_cmd_rf_tx_power fndecl 0 58319 NULL
141533 +disable_so_qxl_alloc_release_reserved_fndecl_58331 qxl_alloc_release_reserved fndecl 0 58331 NULL
141534 +disable_so___platform_driver_register_fndecl_58337 __platform_driver_register fndecl 0 58337 NULL
141535 +disable_so_carl9170_write_reg_fndecl_58343 carl9170_write_reg fndecl 0 58343 NULL
141536 +disable_so_mmc_sd_switch_fndecl_58345 mmc_sd_switch fndecl 0 58345 NULL
141537 +disable_so_mms114_read_reg_fndecl_58357 mms114_read_reg fndecl 0 58357 NULL
141538 +disable_so_rtsx_pci_probe_fndecl_58358 rtsx_pci_probe fndecl 0 58358 NULL
141539 +disable_so_dst_len_regcache_lzo_ctx_58373 dst_len regcache_lzo_ctx 0 58373 NULL
141540 +disable_so_compat_calc_entry_fndecl_58392 compat_calc_entry fndecl 0 58392 NULL
141541 +disable_so_minstrel_get_sample_rate_fndecl_58393 minstrel_get_sample_rate fndecl 0 58393 NULL
141542 +disable_so_ib_uverbs_query_qp_fndecl_58402 ib_uverbs_query_qp fndecl 0 58402 NULL
141543 +disable_so_intel_sst_suspend_fndecl_58411 intel_sst_suspend fndecl 0 58411 NULL
141544 +disable_so_ethtool_get_settings_fndecl_58412 ethtool_get_settings fndecl 0 58412 NULL
141545 +disable_so_skip_to_level_assoc_array_shortcut_58418 skip_to_level assoc_array_shortcut 0 58418 NULL nohasharray
141546 +disable_so_vt_do_kdskled_fndecl_58418 vt_do_kdskled fndecl 0 58418 &disable_so_skip_to_level_assoc_array_shortcut_58418
141547 +disable_so_pt3_set_tuner_power_fndecl_58445 pt3_set_tuner_power fndecl 0 58445 NULL
141548 +disable_so_val_bytes_snd_soc_component_58447 val_bytes snd_soc_component 0 58447 NULL
141549 +disable_so_usermodehelper_read_trylock_fndecl_58469 usermodehelper_read_trylock fndecl 0 58469 NULL
141550 +disable_so_acpi_smbus_read_fndecl_58475 acpi_smbus_read fndecl 0 58475 NULL
141551 +disable_so_mwifiex_add_card_fndecl_58476 mwifiex_add_card fndecl 0 58476 NULL
141552 +disable_so_mlx4_MAD_IFC_wrapper_fndecl_58477 mlx4_MAD_IFC_wrapper fndecl 0 58477 NULL
141553 +disable_so_riva_set_fbinfo_fndecl_58502 riva_set_fbinfo fndecl 0 58502 NULL
141554 +disable_so_ec_i2c_count_response_fndecl_58509 ec_i2c_count_response fndecl 0 58509 NULL
141555 +disable_so_nilfs_segbuf_extend_segsum_fndecl_58510 nilfs_segbuf_extend_segsum fndecl 0 58510 NULL
141556 +disable_so_core_sys_select_fndecl_58517 core_sys_select fndecl 0 58517 NULL
141557 +disable_so_read_block_for_search_fndecl_58525 read_block_for_search fndecl 0 58525 NULL
141558 +disable_so_rx_frag_size_bnx2x_fastpath_58531 rx_frag_size bnx2x_fastpath 0 58531 NULL
141559 +disable_so_il_send_cmd_sync_fndecl_58534 il_send_cmd_sync fndecl 0 58534 NULL
141560 +disable_so_ttm_mem_reg_ioremap_fndecl_58540 ttm_mem_reg_ioremap fndecl 0 58540 NULL nohasharray
141561 +disable_so_leb_read_sanity_check_fndecl_58540 leb_read_sanity_check fndecl 0 58540 &disable_so_ttm_mem_reg_ioremap_fndecl_58540
141562 +disable_so_evergreen_cs_packet_parse_vline_fndecl_58548 evergreen_cs_packet_parse_vline fndecl 0 58548 NULL
141563 +disable_so_usb_hcd_alloc_bandwidth_fndecl_58550 usb_hcd_alloc_bandwidth fndecl 0 58550 NULL
141564 +disable_so_wl128x_cmd_radio_parms_fndecl_58555 wl128x_cmd_radio_parms fndecl 0 58555 NULL
141565 +disable_so_hdsp_9652_get_peak_fndecl_58559 hdsp_9652_get_peak fndecl 0 58559 NULL
141566 +disable_so_agp_remove_client_fndecl_58565 agp_remove_client fndecl 0 58565 NULL
141567 +disable_so_pmcraid_chr_ioctl_fndecl_58580 pmcraid_chr_ioctl fndecl 0 58580 NULL
141568 +disable_so_radeon_bo_pin_restricted_fndecl_58585 radeon_bo_pin_restricted fndecl 0 58585 NULL
141569 +disable_so_ct_pcm_capture_open_fndecl_58586 ct_pcm_capture_open fndecl 0 58586 NULL
141570 +disable_so___erst_write_to_storage_fndecl_58627 __erst_write_to_storage fndecl 0 58627 NULL
141571 +disable_so_tda998x_create_fndecl_58630 tda998x_create fndecl 0 58630 NULL
141572 +disable_so_snd_soc_component_initialize_fndecl_58633 snd_soc_component_initialize fndecl 0 58633 NULL nohasharray
141573 +disable_so_em28xx_init_dev_fndecl_58633 em28xx_init_dev fndecl 0 58633 &disable_so_snd_soc_component_initialize_fndecl_58633
141574 +disable_so_ext4_ext_handle_unwritten_extents_fndecl_58636 ext4_ext_handle_unwritten_extents fndecl 0 58636 NULL
141575 +disable_so_bnep_del_connection_fndecl_58645 bnep_del_connection fndecl 0 58645 NULL
141576 +disable_so_highest_bit_swap_info_struct_58656 highest_bit swap_info_struct 0 58656 NULL
141577 +disable_so_config_ipwireless_fndecl_58659 config_ipwireless fndecl 0 58659 NULL
141578 +disable_so_rx_dma_len_efx_nic_58695 rx_dma_len efx_nic 0 58695 NULL
141579 +disable_so_xfs_btree_get_buf_block_fndecl_58702 xfs_btree_get_buf_block fndecl 0 58702 NULL
141580 +disable_so_svc_pool_map_alloc_arrays_fndecl_58718 svc_pool_map_alloc_arrays fndecl 0 58718 NULL
141581 +disable_so_psb_fbdev_init_fndecl_58721 psb_fbdev_init fndecl 0 58721 NULL
141582 +disable_so_scrub_add_page_to_rd_bio_fndecl_58751 scrub_add_page_to_rd_bio fndecl 0 58751 NULL
141583 +disable_so_vmw_user_fence_create_fndecl_58793 vmw_user_fence_create fndecl 0 58793 NULL
141584 +disable_so_bnx2x_acquire_nvram_lock_fndecl_58794 bnx2x_acquire_nvram_lock fndecl 0 58794 NULL nohasharray
141585 +disable_so_irq_pci_dev_58794 irq pci_dev 0 58794 &disable_so_bnx2x_acquire_nvram_lock_fndecl_58794
141586 +disable_so_reg_write_fndecl_58795 reg_write fndecl 0 58795 NULL
141587 +disable_so_psb_gtt_init_fndecl_58801 psb_gtt_init fndecl 0 58801 NULL
141588 +disable_so_ccp_perform_sha_fndecl_58803 ccp_perform_sha fndecl 0 58803 NULL
141589 +disable_so_p9pdu_readf_fndecl_58806 p9pdu_readf fndecl 0 58806 NULL
141590 +disable_so_snd_intel8x0m_create_fndecl_58813 snd_intel8x0m_create fndecl 0 58813 NULL
141591 +disable_so_snd_pcm_hw_constraint_minmax_fndecl_58816 snd_pcm_hw_constraint_minmax fndecl 0 58816 NULL
141592 +disable_so_xfs_trans_reserve_quota_nblks_fndecl_58818 xfs_trans_reserve_quota_nblks fndecl 0 58818 NULL
141593 +disable_so_nfs_idmap_read_and_verify_message_fndecl_58819 nfs_idmap_read_and_verify_message fndecl 0 58819 NULL
141594 +disable_so_iscsit_setup_text_cmd_fndecl_58835 iscsit_setup_text_cmd fndecl 0 58835 NULL
141595 +disable_so_xpad_init_ff_fndecl_58853 xpad_init_ff fndecl 0 58853 NULL
141596 +disable_so_md_allow_write_fndecl_58858 md_allow_write fndecl 0 58858 NULL
141597 +disable_so_gfs2_replay_read_block_fndecl_58862 gfs2_replay_read_block fndecl 0 58862 NULL
141598 +disable_so_dccp_getsockopt_service_fndecl_58864 dccp_getsockopt_service fndecl 0 58864 NULL
141599 +disable_so_acpi_thermal_register_thermal_zone_fndecl_58866 acpi_thermal_register_thermal_zone fndecl 0 58866 NULL
141600 +disable_so_sctp_auth_set_active_key_fndecl_58869 sctp_auth_set_active_key fndecl 0 58869 NULL
141601 +disable_so_do_utimes_fndecl_58870 do_utimes fndecl 0 58870 NULL
141602 +disable_so_gc_n64_init_ff_fndecl_58877 gc_n64_init_ff fndecl 0 58877 NULL
141603 +disable_so_add_fake_beep_paths_fndecl_58889 add_fake_beep_paths fndecl 0 58889 NULL
141604 +disable_so_size__iohandle_58897 size _iohandle 0 58897 NULL
141605 +disable_so_extlog_init_fndecl_58898 extlog_init fndecl 0 58898 NULL
141606 +disable_so_vhci_read_fndecl_58901 vhci_read fndecl 0 58901 NULL
141607 +disable_so_add_lease_context_fndecl_58903 add_lease_context fndecl 0 58903 NULL
141608 +disable_so_vmlfb_enable_mmio_fndecl_58906 vmlfb_enable_mmio fndecl 0 58906 NULL
141609 +disable_so_ubi_wl_put_peb_fndecl_58909 ubi_wl_put_peb fndecl 0 58909 NULL
141610 +disable_so_ib_send_mad_fndecl_58928 ib_send_mad fndecl 0 58928 NULL
141611 +disable_so_brcmf_usb_bus_setup_fndecl_58943 brcmf_usb_bus_setup fndecl 0 58943 NULL
141612 +disable_so_lpe_base_sst_pdata_58946 lpe_base sst_pdata 0 58946 NULL
141613 +disable_so_arch_setup_msi_irq_fndecl_58948 arch_setup_msi_irq fndecl 0 58948 NULL
141614 +disable_so_dsp_dma_stop_fndecl_58954 dsp_dma_stop fndecl 0 58954 NULL
141615 +disable_so_compat_sys_recvmmsg_fndecl_58963 compat_sys_recvmmsg fndecl 0 58963 NULL
141616 +disable_so_vfreq___fb_timings_58967 vfreq __fb_timings 0 58967 NULL
141617 +disable_so_mspro_block_init_card_fndecl_58969 mspro_block_init_card fndecl 0 58969 NULL
141618 +disable_so_vmw_gb_surface_define_ioctl_fndecl_58971 vmw_gb_surface_define_ioctl fndecl 0 58971 NULL
141619 +disable_so_get_dec_u16_fndecl_58972 get_dec_u16 fndecl 0 58972 NULL
141620 +disable_so_erase_worker_fndecl_58988 erase_worker fndecl 0 58988 NULL
141621 +disable_so_find_free_id_fndecl_59010 find_free_id fndecl 0 59010 NULL
141622 +disable_so_dtv_set_frontend_fndecl_59021 dtv_set_frontend fndecl 0 59021 NULL
141623 +disable_so_dccpsl_nr_dccp_service_list_59022 dccpsl_nr dccp_service_list 0 59022 NULL
141624 +disable_so_copy_to_sk_fndecl_59025 copy_to_sk fndecl 0 59025 NULL
141625 +disable_so_ata_pci_sff_init_host_fndecl_59027 ata_pci_sff_init_host fndecl 0 59027 NULL
141626 +disable_so_bfad_im_scsi_host_alloc_fndecl_59042 bfad_im_scsi_host_alloc fndecl 0 59042 NULL nohasharray
141627 +disable_so_alloc_wbufs_fndecl_59042 alloc_wbufs fndecl 0 59042 &disable_so_bfad_im_scsi_host_alloc_fndecl_59042
141628 +disable_so_dmar_parse_one_atsr_fndecl_59046 dmar_parse_one_atsr fndecl 0 59046 NULL
141629 +disable_so_t3_wait_op_done_val_fndecl_59054 t3_wait_op_done_val fndecl 0 59054 NULL nohasharray
141630 +disable_so_mlx5_ib_resize_cq_fndecl_59054 mlx5_ib_resize_cq fndecl 0 59054 &disable_so_t3_wait_op_done_val_fndecl_59054
141631 +disable_so_niu_alloc_tx_ring_info_fndecl_59070 niu_alloc_tx_ring_info fndecl 0 59070 NULL
141632 +disable_so_vfio_config_init_fndecl_59079 vfio_config_init fndecl 0 59079 NULL
141633 +disable_so_cp2112_hid_output_fndecl_59085 cp2112_hid_output fndecl 0 59085 NULL
141634 +disable_so_ubifs_read_node_fndecl_59093 ubifs_read_node fndecl 0 59093 NULL
141635 +disable_so_prepend_unreachable_fndecl_59109 prepend_unreachable fndecl 0 59109 NULL
141636 +disable_so_mspro_block_switch_interface_fndecl_59111 mspro_block_switch_interface fndecl 0 59111 NULL
141637 +disable_so_dm_btree_del_fndecl_59119 dm_btree_del fndecl 0 59119 NULL
141638 +disable_so_xfs_read_agi_fndecl_59127 xfs_read_agi fndecl 0 59127 NULL
141639 +disable_so_watchdog_ioctl_op_fndecl_59130 watchdog_ioctl_op fndecl 0 59130 NULL
141640 +disable_so_compute_sid_handle_invalid_context_fndecl_59148 compute_sid_handle_invalid_context fndecl 0 59148 NULL
141641 +disable_so_drm_helper_crtc_mode_set_fndecl_59153 drm_helper_crtc_mode_set fndecl 0 59153 NULL
141642 +disable_so_mlx4_catas_init_fndecl_59158 mlx4_catas_init fndecl 0 59158 NULL nohasharray
141643 +disable_so_pvr2_hdw_set_input_allowed_fndecl_59158 pvr2_hdw_set_input_allowed fndecl 0 59158 &disable_so_mlx4_catas_init_fndecl_59158
141644 +disable_so_zlib_inflate_table_fndecl_59160 zlib_inflate_table fndecl 0 59160 NULL nohasharray
141645 +disable_so_free_low_memory_core_early_fndecl_59160 free_low_memory_core_early fndecl 0 59160 &disable_so_zlib_inflate_table_fndecl_59160
141646 +disable_so_ethtool_get_pauseparam_fndecl_59163 ethtool_get_pauseparam fndecl 0 59163 NULL
141647 +disable_so_freq_snd_tea575x_59172 freq snd_tea575x 0 59172 NULL
141648 +disable_so_av_buf_ackno_dccp_ackvec_59183 av_buf_ackno dccp_ackvec 0 59183 NULL
141649 +disable_so_hpet_ioctl_ieon_fndecl_59187 hpet_ioctl_ieon fndecl 0 59187 NULL
141650 +disable_so_img_height_zoran_jpg_settings_59188 img_height zoran_jpg_settings 0 59188 NULL
141651 +disable_so_udp_sock_create6_fndecl_59208 udp_sock_create6 fndecl 0 59208 NULL
141652 +disable_so_mpdu_len_wcn36xx_pdu_59212 mpdu_len wcn36xx_pdu 0 59212 NULL
141653 +disable_so_evergreen_cs_track_validate_depth_fndecl_59230 evergreen_cs_track_validate_depth fndecl 0 59230 NULL
141654 +disable_so_err_msr_regs_info_59233 err msr_regs_info 0 59233 NULL
141655 +disable_so_bits_to_user_fndecl_59238 bits_to_user fndecl 0 59238 NULL
141656 +disable_so_mlx4_db_alloc_fndecl_59240 mlx4_db_alloc fndecl 0 59240 NULL
141657 +disable_so_class_read_fndecl_59251 class_read fndecl 0 59251 NULL
141658 +disable_so_nilfs_sufile_get_offset_fndecl_59264 nilfs_sufile_get_offset fndecl 0 59264 NULL
141659 +disable_so_sb1000_set_frequency_fndecl_59272 sb1000_set_frequency fndecl 0 59272 NULL
141660 +disable_so_hiface_pcm_init_fndecl_59285 hiface_pcm_init fndecl 0 59285 NULL
141661 +disable_so_written_coredump_params_59286 written coredump_params 0 59286 NULL
141662 +disable_so_do_ip_getsockopt_fndecl_59288 do_ip_getsockopt fndecl 0 59288 NULL
141663 +disable_so_mwl8k_feed_fw_image_fndecl_59290 mwl8k_feed_fw_image fndecl 0 59290 NULL
141664 +disable_so_ext3_find_near_fndecl_59291 ext3_find_near fndecl 0 59291 NULL
141665 +disable_so_next_segno_curseg_info_59302 next_segno curseg_info 0 59302 NULL
141666 +disable_so_error_async_delayed_refs_59324 error async_delayed_refs 0 59324 NULL
141667 +disable_so_i2c_inb_fndecl_59328 i2c_inb fndecl 0 59328 NULL
141668 +disable_so_snd_ctl_remove_fndecl_59335 snd_ctl_remove fndecl 0 59335 NULL
141669 +disable_so_bnx2_enable_nvram_write_fndecl_59338 bnx2_enable_nvram_write fndecl 0 59338 NULL
141670 +disable_so_build_dirty_segmap_fndecl_59351 build_dirty_segmap fndecl 0 59351 NULL
141671 +disable_so_tree_mod_log_insert_move_fndecl_59356 tree_mod_log_insert_move fndecl 0 59356 NULL
141672 +disable_so_omap_hsmmc_prepare_data_fndecl_59357 omap_hsmmc_prepare_data fndecl 0 59357 NULL
141673 +disable_so_ie_len_cfg80211_assoc_request_59359 ie_len cfg80211_assoc_request 0 59359 NULL
141674 +disable_so_usb_start_wait_urb_fndecl_59365 usb_start_wait_urb fndecl 0 59365 NULL
141675 +disable_so_ubifs_unpack_nnode_fndecl_59369 ubifs_unpack_nnode fndecl 0 59369 NULL
141676 +disable_so_issue_reg_cmd_fndecl_59376 issue_reg_cmd fndecl 0 59376 NULL
141677 +disable_so_btrfs_run_qgroups_fndecl_59378 btrfs_run_qgroups fndecl 0 59378 NULL
141678 +disable_so_mlx5_ib_query_port_fndecl_59381 mlx5_ib_query_port fndecl 0 59381 NULL
141679 +disable_so_ecryptfs_write_inode_size_to_xattr_fndecl_59387 ecryptfs_write_inode_size_to_xattr fndecl 0 59387 NULL
141680 +disable_so_fm_size_ubi_device_59399 fm_size ubi_device 0 59399 NULL
141681 +disable_so_tty_mode_ioctl_fndecl_59401 tty_mode_ioctl fndecl 0 59401 NULL
141682 +disable_so_drm_legacy_addmap_fndecl_59402 drm_legacy_addmap fndecl 0 59402 NULL
141683 +disable_so___iommu_calculate_agaw_fndecl_59405 __iommu_calculate_agaw fndecl 0 59405 NULL
141684 +disable_so_elem_size_bpf_htab_59409 elem_size bpf_htab 0 59409 NULL
141685 +disable_so_secure_dccpv6_sequence_number_fndecl_59410 secure_dccpv6_sequence_number fndecl 0 59410 NULL nohasharray
141686 +disable_so_cifs_filldir_fndecl_59410 cifs_filldir fndecl 0 59410 &disable_so_secure_dccpv6_sequence_number_fndecl_59410
141687 +disable_so_mpt_config_fndecl_59412 mpt_config fndecl 0 59412 NULL
141688 +disable_so_rtc_set_alarm_fndecl_59413 rtc_set_alarm fndecl 0 59413 NULL nohasharray
141689 +disable_so_netlbl_cfg_unlbl_static_add_fndecl_59413 netlbl_cfg_unlbl_static_add fndecl 0 59413 &disable_so_rtc_set_alarm_fndecl_59413
141690 +disable_so_nfs4_setup_slot_table_fndecl_59431 nfs4_setup_slot_table fndecl 0 59431 NULL
141691 +disable_so_tcp_set_allowed_congestion_control_fndecl_59438 tcp_set_allowed_congestion_control fndecl 0 59438 NULL
141692 +disable_so_xtkbd_connect_fndecl_59448 xtkbd_connect fndecl 0 59448 NULL
141693 +disable_so_platform_gpio_count_fndecl_59459 platform_gpio_count fndecl 0 59459 NULL
141694 +disable_so_kvm_vm_ioctl_irq_line_fndecl_59463 kvm_vm_ioctl_irq_line fndecl 0 59463 NULL
141695 +disable_so_wl18xx_acx_host_if_cfg_bitmap_fndecl_59465 wl18xx_acx_host_if_cfg_bitmap fndecl 0 59465 NULL
141696 +disable_so_addr_erase_info_59472 addr erase_info 0 59472 NULL
141697 +disable_so_tomoyo_environ_fndecl_59477 tomoyo_environ fndecl 0 59477 NULL
141698 +disable_so_gpio_start_pca953x_chip_59479 gpio_start pca953x_chip 0 59479 NULL
141699 +disable_so_adp5588_probe_fndecl_59496 adp5588_probe fndecl 0 59496 NULL
141700 +disable_so_iwl_mvm_d3_reprogram_fndecl_59498 iwl_mvm_d3_reprogram fndecl 0 59498 NULL
141701 +disable_so_ci_initialize_mc_reg_table_fndecl_59499 ci_initialize_mc_reg_table fndecl 0 59499 NULL
141702 +disable_so_mlx4_SW2HW_EQ_fndecl_59500 mlx4_SW2HW_EQ fndecl 0 59500 NULL
141703 +disable_so_sctp_send_asconf_add_ip_fndecl_59513 sctp_send_asconf_add_ip fndecl 0 59513 NULL
141704 +disable_so_ipath_sdma_get_complete_fndecl_59526 ipath_sdma_get_complete fndecl 0 59526 NULL
141705 +disable_so_handle_ule_extensions_fndecl_59533 handle_ule_extensions fndecl 0 59533 NULL
141706 +disable_so_register_framebuffer_fndecl_59539 register_framebuffer fndecl 0 59539 NULL nohasharray
141707 +disable_so_add_to_waiters_fndecl_59539 add_to_waiters fndecl 0 59539 &disable_so_register_framebuffer_fndecl_59539
141708 +disable_so_mmc_spi_writeblock_fndecl_59545 mmc_spi_writeblock fndecl 0 59545 NULL
141709 +disable_so_ocfs2_reserve_clusters_with_limit_fndecl_59548 ocfs2_reserve_clusters_with_limit fndecl 0 59548 NULL
141710 +disable_so___btrfs_map_block_fndecl_59552 __btrfs_map_block fndecl 0 59552 NULL
141711 +disable_so_mthca_alloc_cq_buf_fndecl_59555 mthca_alloc_cq_buf fndecl 0 59555 NULL
141712 +disable_so_dlm_send_regions_fndecl_59558 dlm_send_regions fndecl 0 59558 NULL
141713 +disable_so_security_preserve_bools_fndecl_59571 security_preserve_bools fndecl 0 59571 NULL
141714 +disable_so_prepare_timeout_fndecl_59577 prepare_timeout fndecl 0 59577 NULL
141715 +disable_so_iwl_dvm_send_cmd_fndecl_59578 iwl_dvm_send_cmd fndecl 0 59578 NULL
141716 +disable_so_hv_kbd_probe_fndecl_59587 hv_kbd_probe fndecl 0 59587 NULL
141717 +disable_so_assign_firmware_buf_fndecl_59593 assign_firmware_buf fndecl 0 59593 NULL
141718 +disable_so_vfs_setxattr_fndecl_59599 vfs_setxattr fndecl 0 59599 NULL
141719 +disable_so_radeon_fence_emit_fndecl_59601 radeon_fence_emit fndecl 0 59601 NULL
141720 +disable_so_snd_ensoniq_create_fndecl_59602 snd_ensoniq_create fndecl 0 59602 NULL
141721 +disable_so_snd_hda_gen_parse_auto_config_fndecl_59604 snd_hda_gen_parse_auto_config fndecl 0 59604 NULL nohasharray
141722 +disable_so_ethtool_set_one_feature_fndecl_59604 ethtool_set_one_feature fndecl 0 59604 &disable_so_snd_hda_gen_parse_auto_config_fndecl_59604
141723 +disable_so_height_mxr_crop_59619 height mxr_crop 0 59619 NULL
141724 +disable_so_multiq_init_fndecl_59625 multiq_init fndecl 0 59625 NULL
141725 +disable_so_dccp_init_fndecl_59633 dccp_init fndecl 0 59633 NULL
141726 +disable_so___btrfs_free_extent_fndecl_59646 __btrfs_free_extent fndecl 0 59646 NULL
141727 +disable_so_xfs_trim_extents_fndecl_59654 xfs_trim_extents fndecl 0 59654 NULL
141728 +disable_so_asd_process_ms_fndecl_59663 asd_process_ms fndecl 0 59663 NULL
141729 +disable_so_unlock_lock_fndecl_59668 unlock_lock fndecl 0 59668 NULL
141730 +disable_so_ncp_add_request_fndecl_59671 ncp_add_request fndecl 0 59671 NULL
141731 +disable_so_ms_read_bytes_fndecl_59672 ms_read_bytes fndecl 0 59672 NULL
141732 +disable_so_s_cur_size_ipath_qp_59678 s_cur_size ipath_qp 0 59678 NULL
141733 +disable_so_nilfs_segctor_do_construct_fndecl_59699 nilfs_segctor_do_construct fndecl 0 59699 NULL
141734 +disable_so_device_remove_lockspace_fndecl_59711 device_remove_lockspace fndecl 0 59711 NULL
141735 +disable_so_si470x_set_register_fndecl_59715 si470x_set_register fndecl 0 59715 NULL
141736 +disable_so_rsxx_hw_buffers_init_fndecl_59719 rsxx_hw_buffers_init fndecl 0 59719 NULL
141737 +disable_so_write_index_fndecl_59720 write_index fndecl 0 59720 NULL
141738 +disable_so_hash_netnet4_add_fndecl_59727 hash_netnet4_add fndecl 0 59727 NULL
141739 +disable_so_snd_ice1712_init_cs8427_fndecl_59732 snd_ice1712_init_cs8427 fndecl 0 59732 NULL
141740 +disable_so_probe_one_instance_fndecl_59736 probe_one_instance fndecl 0 59736 NULL
141741 +disable_so___netlink_change_ngroups_fndecl_59743 __netlink_change_ngroups fndecl 0 59743 NULL
141742 +disable_so_efx_mcdi_nvram_types_fndecl_59747 efx_mcdi_nvram_types fndecl 0 59747 NULL
141743 +disable_so_add_conn_list_fndecl_59750 add_conn_list fndecl 0 59750 NULL nohasharray
141744 +disable_so_set_tr_backlight_status_fndecl_59750 set_tr_backlight_status fndecl 0 59750 &disable_so_add_conn_list_fndecl_59750
141745 +disable_so_isofs_read_level3_size_fndecl_59765 isofs_read_level3_size fndecl 0 59765 NULL
141746 +disable_so_snd_opl3_load_patch_fndecl_59766 snd_opl3_load_patch fndecl 0 59766 NULL
141747 +disable_so_mlx4_bitmap_alloc_fndecl_59767 mlx4_bitmap_alloc fndecl 0 59767 NULL
141748 +disable_so_reiserfs_new_symlink_fndecl_59783 reiserfs_new_symlink fndecl 0 59783 NULL
141749 +disable_so_mlx4_buf_alloc_fndecl_59788 mlx4_buf_alloc fndecl 0 59788 NULL nohasharray
141750 +disable_so_write_driver_ver_to_cfgtable_fndecl_59788 write_driver_ver_to_cfgtable fndecl 0 59788 &disable_so_mlx4_buf_alloc_fndecl_59788
141751 +disable_so_sdio_set_block_size_fndecl_59792 sdio_set_block_size fndecl 0 59792 NULL
141752 +disable_so_length_lv_59797 length lv 0 59797 NULL
141753 +disable_so_setup_corb_rirb_fndecl_59810 setup_corb_rirb fndecl 0 59810 NULL
141754 +disable_so_frsz_gspca_dev_59816 frsz gspca_dev 0 59816 NULL
141755 +disable_so_drm_dp_mst_i2c_xfer_fndecl_59817 drm_dp_mst_i2c_xfer fndecl 0 59817 NULL
141756 +disable_so_nilfs_segctor_begin_construction_fndecl_59823 nilfs_segctor_begin_construction fndecl 0 59823 NULL
141757 +disable_so_xen_setup_msi_irqs_fndecl_59830 xen_setup_msi_irqs fndecl 0 59830 NULL
141758 +disable_so_nv04_display_create_fndecl_59832 nv04_display_create fndecl 0 59832 NULL
141759 +disable_so_ufx_config_pix_clk_fndecl_59834 ufx_config_pix_clk fndecl 0 59834 NULL
141760 +disable_so_snd_compress_check_input_fndecl_59839 snd_compress_check_input fndecl 0 59839 NULL
141761 +disable_so_tcp_sendmsg_fastopen_fndecl_59843 tcp_sendmsg_fastopen fndecl 0 59843 NULL
141762 +disable_so_status_mei_cl_cb_59845 status mei_cl_cb 0 59845 NULL
141763 +disable_so_ext4_init_feat_adverts_fndecl_59846 ext4_init_feat_adverts fndecl 0 59846 NULL
141764 +disable_so_sst_fill_byte_control_fndecl_59850 sst_fill_byte_control fndecl 0 59850 NULL
141765 +disable_so___qlcnic_sriov_issue_cmd_fndecl_59858 __qlcnic_sriov_issue_cmd fndecl 0 59858 NULL
141766 +disable_so_copy_user_allowedips_fndecl_59860 copy_user_allowedips fndecl 0 59860 NULL
141767 +disable_so_im_blkno_xfs_imap_59866 im_blkno xfs_imap 0 59866 NULL
141768 +disable_so_apds990x_detect_fndecl_59868 apds990x_detect fndecl 0 59868 NULL
141769 +disable_so_parse_ipsecrequests_fndecl_59875 parse_ipsecrequests fndecl 0 59875 NULL
141770 +disable_so_ide_scan_pio_blacklist_fndecl_59877 ide_scan_pio_blacklist fndecl 0 59877 NULL
141771 +disable_so_dx_fb_fillrect_59878 dx fb_fillrect 0 59878 NULL
141772 +disable_so___dquot_alloc_space_fndecl_59879 __dquot_alloc_space fndecl 0 59879 NULL
141773 +disable_so_gs_can_open_fndecl_59884 gs_can_open fndecl 0 59884 NULL
141774 +disable_so_sctp_auth_init_hmacs_fndecl_59885 sctp_auth_init_hmacs fndecl 0 59885 NULL
141775 +disable_so_mos7720_write_fndecl_59901 mos7720_write fndecl 0 59901 NULL
141776 +disable_so_restart_array_fndecl_59905 restart_array fndecl 0 59905 NULL
141777 +disable_so_snd_seq_oss_midi_check_new_port_fndecl_59910 snd_seq_oss_midi_check_new_port fndecl 0 59910 NULL
141778 +disable_so_ls_members_result_dlm_ls_59915 ls_members_result dlm_ls 0 59915 NULL
141779 +disable_so_hci_req_sync_fndecl_59921 hci_req_sync fndecl 0 59921 NULL
141780 +disable_so_parse_usbdevfs_streams_fndecl_59926 parse_usbdevfs_streams fndecl 0 59926 NULL
141781 +disable_so_spi_async_fndecl_59930 spi_async fndecl 0 59930 NULL
141782 +disable_so_xfs_ioc_fsgeometry_fndecl_59932 xfs_ioc_fsgeometry fndecl 0 59932 NULL
141783 +disable_so_docg4_block_markbad_fndecl_59934 docg4_block_markbad fndecl 0 59934 NULL
141784 +disable_so_check_cfg_fndecl_59950 check_cfg fndecl 0 59950 NULL
141785 +disable_so_snd_compr_update_tstamp_fndecl_59956 snd_compr_update_tstamp fndecl 0 59956 NULL
141786 +disable_so_compat_copy_everything_to_user_fndecl_59961 compat_copy_everything_to_user fndecl 0 59961 NULL
141787 +disable_so_setup_ring_fndecl_59965 setup_ring fndecl 0 59965 NULL
141788 +disable_so_calc_line_length_fndecl_59973 calc_line_length fndecl 0 59973 NULL
141789 +disable_so_scrub_pages_fndecl_59983 scrub_pages fndecl 0 59983 NULL
141790 +disable_so_btrfs_ioctl_tree_search_v2_fndecl_59985 btrfs_ioctl_tree_search_v2 fndecl 0 59985 NULL
141791 +disable_so_lp_wait_ready_fndecl_60001 lp_wait_ready fndecl 0 60001 NULL
141792 +disable_so_vfio_dma_do_map_fndecl_60009 vfio_dma_do_map fndecl 0 60009 NULL
141793 +disable_so_acpi_battery_get_state_fndecl_60022 acpi_battery_get_state fndecl 0 60022 NULL nohasharray
141794 +disable_so___sctp_setsockopt_connectx_fndecl_60022 __sctp_setsockopt_connectx fndecl 0 60022 &disable_so_acpi_battery_get_state_fndecl_60022
141795 +disable_so_alloc_in_bmp_fndecl_60028 alloc_in_bmp fndecl 0 60028 NULL
141796 +disable_so_calculate_alignment_fndecl_60029 calculate_alignment fndecl 0 60029 NULL
141797 +disable_so_mpi_powm_fndecl_60033 mpi_powm fndecl 0 60033 NULL
141798 +disable_so_sel_write_bool_fndecl_60039 sel_write_bool fndecl 0 60039 NULL
141799 +disable_so_rv770_copy_bytes_to_smc_fndecl_60045 rv770_copy_bytes_to_smc fndecl 0 60045 NULL
141800 +disable_so_core_alua_update_tpg_secondary_metadata_fndecl_60048 core_alua_update_tpg_secondary_metadata fndecl 0 60048 NULL
141801 +disable_so_atm_dev_ioctl_fndecl_60049 atm_dev_ioctl fndecl 0 60049 NULL
141802 +disable_so_jbd2_seq_info_open_fndecl_60057 jbd2_seq_info_open fndecl 0 60057 NULL
141803 +disable_so___genwqe_wait_ddcb_fndecl_60061 __genwqe_wait_ddcb fndecl 0 60061 NULL
141804 +disable_so_ucb1400_core_probe_fndecl_60067 ucb1400_core_probe fndecl 0 60067 NULL nohasharray
141805 +disable_so_cx231xx_init_bulk_fndecl_60067 cx231xx_init_bulk fndecl 0 60067 &disable_so_ucb1400_core_probe_fndecl_60067
141806 +disable_so_usb_amradio_probe_fndecl_60069 usb_amradio_probe fndecl 0 60069 NULL
141807 +disable_so_radeon_ib_schedule_fndecl_60075 radeon_ib_schedule fndecl 0 60075 NULL
141808 +disable_so_sram_test_word_fndecl_60077 sram_test_word fndecl 0 60077 NULL
141809 +disable_so_qlcnic_setup_netdev_fndecl_60079 qlcnic_setup_netdev fndecl 0 60079 NULL
141810 +disable_so_compat_effect_fndecl_60084 compat_effect fndecl 0 60084 NULL
141811 +disable_so_ip_mc_source_fndecl_60089 ip_mc_source fndecl 0 60089 NULL
141812 +disable_so_open_rx_fndecl_60098 open_rx fndecl 0 60098 NULL
141813 +disable_so_dg_dispatch_as_guest_fndecl_60100 dg_dispatch_as_guest fndecl 0 60100 NULL
141814 +disable_so_radeon_cs_parser_relocs_fndecl_60108 radeon_cs_parser_relocs fndecl 0 60108 NULL
141815 +disable_so_ref_get_fields_fndecl_60110 ref_get_fields fndecl 0 60110 NULL
141816 +disable_so_raid10_find_virt_fndecl_60115 raid10_find_virt fndecl 0 60115 NULL
141817 +disable_so_radeon_vm_bo_set_addr_fndecl_60122 radeon_vm_bo_set_addr fndecl 0 60122 NULL
141818 +disable_so_fw_change_attrs_fndecl_60126 fw_change_attrs fndecl 0 60126 NULL
141819 +disable_so_wl1271_tm_cmd_interrogate_fndecl_60127 wl1271_tm_cmd_interrogate fndecl 0 60127 NULL
141820 +disable_so_vga_vram_end_vardecl_vgacon_c_60130 vga_vram_end vardecl_vgacon.c 0 60130 NULL nohasharray
141821 +disable_so_iwl_dump_nic_event_log_fndecl_60130 iwl_dump_nic_event_log fndecl 0 60130 &disable_so_vga_vram_end_vardecl_vgacon_c_60130
141822 +disable_so_fb_base_drm_mode_config_60135 fb_base drm_mode_config 0 60135 NULL
141823 +disable_so_parse_cache_args_fndecl_60136 parse_cache_args fndecl 0 60136 NULL
141824 +disable_so_falcon_probe_nic_fndecl_60141 falcon_probe_nic fndecl 0 60141 NULL
141825 +disable_so_sas_expander_discover_fndecl_60143 sas_expander_discover fndecl 0 60143 NULL
141826 +disable_so_regcache_lzo_init_fndecl_60146 regcache_lzo_init fndecl 0 60146 NULL
141827 +disable_so_index_drm_minor_60149 index drm_minor 0 60149 NULL
141828 +disable_so_revo_init_fndecl_60150 revo_init fndecl 0 60150 NULL
141829 +disable_so_brcmf_fil_iovar_int_set_fndecl_60162 brcmf_fil_iovar_int_set fndecl 0 60162 NULL
141830 +disable_so_drm_fb_helper_initial_config_fndecl_60163 drm_fb_helper_initial_config fndecl 0 60163 NULL
141831 +disable_so_usb_stor_probe1_fndecl_60165 usb_stor_probe1 fndecl 0 60165 NULL
141832 +disable_so_nilfs_segctor_feed_segment_fndecl_60166 nilfs_segctor_feed_segment fndecl 0 60166 NULL nohasharray
141833 +disable_so_stream_start_fndecl_60166 stream_start fndecl 0 60166 &disable_so_nilfs_segctor_feed_segment_fndecl_60166
141834 +disable_so_ax25_connect_fndecl_60170 ax25_connect fndecl 0 60170 NULL
141835 +disable_so_acpi_parse_entries_fndecl_60174 acpi_parse_entries fndecl 0 60174 NULL
141836 +disable_so_snd_compr_write_data_fndecl_60179 snd_compr_write_data fndecl 0 60179 NULL
141837 +disable_so_pci_enable_device_fndecl_60193 pci_enable_device fndecl 0 60193 NULL
141838 +disable_so_vfs_getxattr_alloc_fndecl_60202 vfs_getxattr_alloc fndecl 0 60202 NULL
141839 +disable_so_ioctl_fioasync_fndecl_60206 ioctl_fioasync fndecl 0 60206 NULL
141840 +disable_so_rmmio_base_radeon_device_60218 rmmio_base radeon_device 0 60218 NULL
141841 +disable_so_ieee80211_get_ratemask_fndecl_60227 ieee80211_get_ratemask fndecl 0 60227 NULL
141842 +disable_so_frag_len_pau_fpdu_frag_60242 frag_len pau_fpdu_frag 0 60242 NULL
141843 +disable_so_fanout_add_fndecl_60243 fanout_add fndecl 0 60243 NULL
141844 +disable_so_blk_mq_alloc_tag_set_fndecl_60256 blk_mq_alloc_tag_set fndecl 0 60256 NULL
141845 +disable_so_il_init_geos_fndecl_60262 il_init_geos fndecl 0 60262 NULL
141846 +disable_so_iwl_send_phy_db_cmd_fndecl_60263 iwl_send_phy_db_cmd fndecl 0 60263 NULL
141847 +disable_so_erst_dbg_write_fndecl_60264 erst_dbg_write fndecl 0 60264 NULL
141848 +disable_so_acpi_pci_link_add_fndecl_60268 acpi_pci_link_add fndecl 0 60268 NULL
141849 +disable_so_macvlan_dev_netpoll_setup_fndecl_60270 macvlan_dev_netpoll_setup fndecl 0 60270 NULL
141850 +disable_so_sctp_side_effects_fndecl_60271 sctp_side_effects fndecl 0 60271 NULL
141851 +disable_so_set_memory_wc_fndecl_60296 set_memory_wc fndecl 0 60296 NULL
141852 +disable_so_autofs4_wait_fndecl_60301 autofs4_wait fndecl 0 60301 NULL
141853 +disable_so_smscore_gpio_configure_fndecl_60311 smscore_gpio_configure fndecl 0 60311 NULL nohasharray
141854 +disable_so_usbhid_parse_fndecl_60311 usbhid_parse fndecl 0 60311 &disable_so_smscore_gpio_configure_fndecl_60311
141855 +disable_so_put_cfg_tlv_u32_fndecl_60315 put_cfg_tlv_u32 fndecl 0 60315 NULL
141856 +disable_so_area_whcrc_60320 area whcrc 0 60320 NULL
141857 +disable_so_dspio_alloc_dma_chan_fndecl_60324 dspio_alloc_dma_chan fndecl 0 60324 NULL
141858 +disable_so_transfer_fndecl_60326 transfer fndecl 0 60326 NULL
141859 +disable_so_bd_add_to_bdi_fndecl_60336 bd_add_to_bdi fndecl 0 60336 NULL
141860 +disable_so_start_sync_thread_fndecl_60338 start_sync_thread fndecl 0 60338 NULL
141861 +disable_so_nf_ct_l3proto_try_module_get_fndecl_60346 nf_ct_l3proto_try_module_get fndecl 0 60346 NULL
141862 +disable_so_iwl_mvm_fw_dbg_collect_desc_fndecl_60349 iwl_mvm_fw_dbg_collect_desc fndecl 0 60349 NULL nohasharray
141863 +disable_so_hest_ghes_dev_register_fndecl_60349 hest_ghes_dev_register fndecl 0 60349 &disable_so_iwl_mvm_fw_dbg_collect_desc_fndecl_60349
141864 +disable_so_setup_geo_fndecl_60351 setup_geo fndecl 0 60351 NULL nohasharray
141865 +disable_so_cobra_connect_fndecl_60351 cobra_connect fndecl 0 60351 &disable_so_setup_geo_fndecl_60351
141866 +disable_so_validate_list_fndecl_60367 validate_list fndecl 0 60367 NULL nohasharray
141867 +disable_so_saa7134_input_init1_fndecl_60367 saa7134_input_init1 fndecl 0 60367 &disable_so_validate_list_fndecl_60367
141868 +disable_so_iwl_run_init_mvm_ucode_fndecl_60384 iwl_run_init_mvm_ucode fndecl 0 60384 NULL
141869 +disable_so_idd_bar0_ioc4_driver_data_60385 idd_bar0 ioc4_driver_data 0 60385 NULL
141870 +disable_so_scsi_ioctl_reset_fndecl_60388 scsi_ioctl_reset fndecl 0 60388 NULL
141871 +disable_so_btrfs_insert_empty_items_fndecl_60405 btrfs_insert_empty_items fndecl 0 60405 NULL
141872 +disable_so_xfs_bulkstat_one_int_fndecl_60410 xfs_bulkstat_one_int fndecl 0 60410 NULL nohasharray
141873 +disable_so_cat_read_fndecl_60410 cat_read fndecl 0 60410 &disable_so_xfs_bulkstat_one_int_fndecl_60410
141874 +disable_so_add_grefs_fndecl_60417 add_grefs fndecl 0 60417 NULL
141875 +disable_so_sfaxpci_probe_fndecl_60435 sfaxpci_probe fndecl 0 60435 NULL
141876 +disable_so_alloc_xenballooned_pages_fndecl_60439 alloc_xenballooned_pages fndecl 0 60439 NULL
141877 +disable_so___i2c_hid_command_fndecl_60442 __i2c_hid_command fndecl 0 60442 NULL
141878 +disable_so_ide_no_data_taskfile_fndecl_60448 ide_no_data_taskfile fndecl 0 60448 NULL
141879 +disable_so_dw_spi_setup_fndecl_60449 dw_spi_setup fndecl 0 60449 NULL
141880 +disable_so_fprop_local_init_percpu_fndecl_60452 fprop_local_init_percpu fndecl 0 60452 NULL
141881 +disable_so_extref_get_fields_fndecl_60453 extref_get_fields fndecl 0 60453 NULL
141882 +disable_so_i40e_aq_get_firmware_version_fndecl_60456 i40e_aq_get_firmware_version fndecl 0 60456 NULL
141883 +disable_so_send_signal_fndecl_60468 send_signal fndecl 0 60468 NULL
141884 +disable_so_policydb_init_fndecl_60471 policydb_init fndecl 0 60471 NULL
141885 +disable_so_posix_lock_file_fndecl_60475 posix_lock_file fndecl 0 60475 NULL
141886 +disable_so_wl12xx_acx_set_rate_mgmt_params_fndecl_60478 wl12xx_acx_set_rate_mgmt_params fndecl 0 60478 NULL
141887 +disable_so_sctp_v4_add_protocol_fndecl_60480 sctp_v4_add_protocol fndecl 0 60480 NULL
141888 +disable_so_drm_vma_offset_add_fndecl_60483 drm_vma_offset_add fndecl 0 60483 NULL
141889 +disable_so_csio_hw_fw_restart_fndecl_60494 csio_hw_fw_restart fndecl 0 60494 NULL
141890 +disable_so_snd_ctl_add_fndecl_60510 snd_ctl_add fndecl 0 60510 NULL
141891 +disable_so___media_device_enum_links_fndecl_60515 __media_device_enum_links fndecl 0 60515 NULL
141892 +disable_so_acpi_cpufreq_cpu_init_fndecl_60521 acpi_cpufreq_cpu_init fndecl 0 60521 NULL
141893 +disable_so_nfc_genl_se_added_fndecl_60536 nfc_genl_se_added fndecl 0 60536 NULL
141894 +disable_so_mptctl_eventquery_fndecl_60547 mptctl_eventquery fndecl 0 60547 NULL
141895 +disable_so_dma_tx_bytes_lpuart_port_60550 dma_tx_bytes lpuart_port 0 60550 NULL nohasharray
141896 +disable_so_dmar_parse_one_drhd_fndecl_60550 dmar_parse_one_drhd fndecl 0 60550 &disable_so_dma_tx_bytes_lpuart_port_60550
141897 +disable_so_register_netdev_fndecl_60559 register_netdev fndecl 0 60559 NULL
141898 +disable_so_ilo_probe_fndecl_60563 ilo_probe fndecl 0 60563 NULL
141899 +disable_so_origin_ctr_fndecl_60565 origin_ctr fndecl 0 60565 NULL
141900 +disable_so_del_mtd_device_fndecl_60571 del_mtd_device fndecl 0 60571 NULL
141901 +disable_so___xfs_btree_split_fndecl_60576 __xfs_btree_split fndecl 0 60576 NULL
141902 +disable_so_lock_request_fndecl_60580 lock_request fndecl 0 60580 NULL
141903 +disable_so_slot_dlm_member_60581 slot dlm_member 0 60581 NULL
141904 +disable_so_native_ioctl_fndecl_60583 native_ioctl fndecl 0 60583 NULL
141905 +disable_so_ocfs2_slot_map_physical_size_fndecl_60585 ocfs2_slot_map_physical_size fndecl 0 60585 NULL
141906 +disable_so_qib_read_umem32_fndecl_60586 qib_read_umem32 fndecl 0 60586 NULL
141907 +disable_so_ip_mc_add_src_fndecl_60589 ip_mc_add_src fndecl 0 60589 NULL
141908 +disable_so_snd_pcm_hwsync_fndecl_60596 snd_pcm_hwsync fndecl 0 60596 NULL
141909 +disable_so_xfs_btree_block_change_owner_fndecl_60599 xfs_btree_block_change_owner fndecl 0 60599 NULL
141910 +disable_so_r600_cs_legacy_fndecl_60602 r600_cs_legacy fndecl 0 60602 NULL
141911 +disable_so_fuse_ref_page_fndecl_60613 fuse_ref_page fndecl 0 60613 NULL
141912 +disable_so_dvb_register_fndecl_60617 dvb_register fndecl 0 60617 NULL
141913 +disable_so_solo_set_motion_block_fndecl_60618 solo_set_motion_block fndecl 0 60618 NULL
141914 +disable_so_vnic_rq_alloc_fndecl_60624 vnic_rq_alloc fndecl 0 60624 NULL
141915 +disable_so_i40e_alloc_vfs_fndecl_60628 i40e_alloc_vfs fndecl 0 60628 NULL
141916 +disable_so_wait_consider_task_fndecl_60630 wait_consider_task fndecl 0 60630 NULL
141917 +disable_so_gso_size_skb_shared_info_60636 gso_size skb_shared_info 0 60636 NULL
141918 +disable_so___verify_memory_type_fndecl_60647 __verify_memory_type fndecl 0 60647 NULL
141919 +disable_so_vmw_otables_setup_fndecl_60648 vmw_otables_setup fndecl 0 60648 NULL
141920 +disable_so_iwl_send_calib_results_fndecl_60651 iwl_send_calib_results fndecl 0 60651 NULL
141921 +disable_so_uwb_rc_addr_get_fndecl_60653 uwb_rc_addr_get fndecl 0 60653 NULL nohasharray
141922 +disable_so_ethtool_self_test_fndecl_60653 ethtool_self_test fndecl 0 60653 &disable_so_uwb_rc_addr_get_fndecl_60653
141923 +disable_so_create_endpoint_and_queue_int_fndecl_60655 create_endpoint_and_queue_int fndecl 0 60655 NULL
141924 +disable_so_pvr2_hdw_cmd_deep_reset_fndecl_60659 pvr2_hdw_cmd_deep_reset fndecl 0 60659 NULL
141925 +disable_so_nf_conntrack_helper_register_fndecl_60665 nf_conntrack_helper_register fndecl 0 60665 NULL
141926 +disable_so_set_extent_bits_fndecl_60673 set_extent_bits fndecl 0 60673 NULL
141927 +disable_so_pcmciamtd_config_fndecl_60675 pcmciamtd_config fndecl 0 60675 NULL
141928 +disable_so_register_candev_fndecl_60677 register_candev fndecl 0 60677 NULL
141929 +disable_so_sctp_getsockopt_connectx3_fndecl_60679 sctp_getsockopt_connectx3 fndecl 0 60679 NULL
141930 +disable_so_ocrdma_add_mmap_fndecl_60687 ocrdma_add_mmap fndecl 0 60687 NULL
141931 +disable_so_sel_write_user_fndecl_60695 sel_write_user fndecl 0 60695 NULL nohasharray
141932 +disable_so_mon_bin_collate_isodesc_fndecl_60695 mon_bin_collate_isodesc fndecl 0 60695 &disable_so_sel_write_user_fndecl_60695
141933 +disable_so_snd_card_new_fndecl_60707 snd_card_new fndecl 0 60707 NULL
141934 +disable_so_kvm_mmu_page_get_gfn_fndecl_60709 kvm_mmu_page_get_gfn fndecl 0 60709 NULL
141935 +disable_so_prism2_hostapd_fndecl_60735 prism2_hostapd fndecl 0 60735 NULL nohasharray
141936 +disable_so_sony_check_add_dev_list_fndecl_60735 sony_check_add_dev_list fndecl 0 60735 &disable_so_prism2_hostapd_fndecl_60735
141937 +disable_so_command_setapcor_fndecl_60740 command_setapcor fndecl 0 60740 NULL
141938 +disable_so_create_cp_queue_fndecl_60744 create_cp_queue fndecl 0 60744 NULL
141939 +disable_so_xfs_swap_extent_flush_fndecl_60764 xfs_swap_extent_flush fndecl 0 60764 NULL
141940 +disable_so_sd_read_long_data_fndecl_60784 sd_read_long_data fndecl 0 60784 NULL
141941 +disable_so_device_write_fndecl_60791 device_write fndecl 0 60791 NULL
141942 +disable_so_vr_nor_init_partitions_fndecl_60792 vr_nor_init_partitions fndecl 0 60792 NULL nohasharray
141943 +disable_so_full_width_mxr_crop_60792 full_width mxr_crop 0 60792 &disable_so_vr_nor_init_partitions_fndecl_60792
141944 +disable_so_sta_agg_status_write_fndecl_60799 sta_agg_status_write fndecl 0 60799 NULL
141945 +disable_so_kstrtos16_fndecl_60808 kstrtos16 fndecl 0 60808 NULL
141946 +disable_so_create_hp_out_ctls_fndecl_60826 create_hp_out_ctls fndecl 0 60826 NULL
141947 +disable_so_init_iommu_all_fndecl_60829 init_iommu_all fndecl 0 60829 NULL
141948 +disable_so___radix_tree_preload_fndecl_60830 __radix_tree_preload fndecl 0 60830 NULL
141949 +disable_so_logfs_rename_target_fndecl_60838 logfs_rename_target fndecl 0 60838 NULL
141950 +disable_so_ahd_linux_register_host_fndecl_60847 ahd_linux_register_host fndecl 0 60847 NULL
141951 +disable_so_sony_check_add_fndecl_60859 sony_check_add fndecl 0 60859 NULL
141952 +disable_so_input_mt_init_slots_fndecl_60876 input_mt_init_slots fndecl 0 60876 NULL
141953 +disable_so___smsc75xx_phy_wait_not_busy_fndecl_60878 __smsc75xx_phy_wait_not_busy fndecl 0 60878 NULL
141954 +disable_so_wl1251_cmd_scan_fndecl_60879 wl1251_cmd_scan fndecl 0 60879 NULL
141955 +disable_so_osd_y_offset_yuv_playback_info_60883 osd_y_offset yuv_playback_info 0 60883 NULL
141956 +disable_so_load_superblock_fndecl_60887 load_superblock fndecl 0 60887 NULL
141957 +disable_so_sn9c2028_short_command_fndecl_60897 sn9c2028_short_command fndecl 0 60897 NULL nohasharray
141958 +disable_so_orig_start_extent_map_60897 orig_start extent_map 0 60897 &disable_so_sn9c2028_short_command_fndecl_60897
141959 +disable_so_max3421_urb_enqueue_fndecl_60913 max3421_urb_enqueue fndecl 0 60913 NULL
141960 +disable_so_wl1251_acx_rts_threshold_fndecl_60916 wl1251_acx_rts_threshold fndecl 0 60916 NULL
141961 +disable_so_blf_blkno_xfs_buf_log_format_60925 blf_blkno xfs_buf_log_format 0 60925 NULL
141962 +disable_so_wacom_register_inputs_fndecl_60935 wacom_register_inputs fndecl 0 60935 NULL
141963 +disable_so_insert_state_fndecl_60939 insert_state fndecl 0 60939 NULL
141964 +disable_so_mlx5_ib_modify_cq_fndecl_60952 mlx5_ib_modify_cq fndecl 0 60952 NULL
141965 +disable_so_pkt_remove_dev_fndecl_60954 pkt_remove_dev fndecl 0 60954 NULL
141966 +disable_so_sb1000_get_frequency_fndecl_60957 sb1000_get_frequency fndecl 0 60957 NULL
141967 +disable_so_update_counters_fndecl_60965 update_counters fndecl 0 60965 NULL nohasharray
141968 +disable_so_ubifs_jnl_delete_xattr_fndecl_60965 ubifs_jnl_delete_xattr fndecl 0 60965 &disable_so_update_counters_fndecl_60965
141969 +disable_so_context_read_and_validate_fndecl_60977 context_read_and_validate fndecl 0 60977 NULL
141970 +disable_so_ubi_create_volume_fndecl_60992 ubi_create_volume fndecl 0 60992 NULL
141971 +disable_so_quicktest1_fndecl_60998 quicktest1 fndecl 0 60998 NULL
141972 +disable_so_ocfs2_xattr_block_find_fndecl_61008 ocfs2_xattr_block_find fndecl 0 61008 NULL
141973 +disable_so_qla4xxx_copy_from_fwddb_param_fndecl_61025 qla4xxx_copy_from_fwddb_param fndecl 0 61025 NULL
141974 +disable_so_hfmax_fb_monspecs_61030 hfmax fb_monspecs 0 61030 NULL nohasharray
141975 +disable_so_rproc_parse_vring_fndecl_61030 rproc_parse_vring fndecl 0 61030 &disable_so_hfmax_fb_monspecs_61030
141976 +disable_so_snd_ice1712_akm4xxx_build_controls_fndecl_61036 snd_ice1712_akm4xxx_build_controls fndecl 0 61036 NULL
141977 +disable_so_recomp_data_node_fndecl_61048 recomp_data_node fndecl 0 61048 NULL
141978 +disable_so__dln2_transfer_fndecl_61049 _dln2_transfer fndecl 0 61049 NULL
141979 +disable_so_len_tcp_fastopen_cookie_61053 len tcp_fastopen_cookie 0 61053 NULL
141980 +disable_so_nilfs_sufile_trim_fs_fndecl_61058 nilfs_sufile_trim_fs fndecl 0 61058 NULL
141981 +disable_so_nv50_core_create_fndecl_61080 nv50_core_create fndecl 0 61080 NULL
141982 +disable_so_kobject_init_and_add_fndecl_61088 kobject_init_and_add fndecl 0 61088 NULL
141983 +disable_so_left_v4l2_rect_61093 left v4l2_rect 0 61093 NULL
141984 +disable_so_snd_hdac_exec_verb_fndecl_61100 snd_hdac_exec_verb fndecl 0 61100 NULL nohasharray
141985 +disable_so_wl12xx_acx_tsf_info_fndecl_61100 wl12xx_acx_tsf_info fndecl 0 61100 &disable_so_snd_hdac_exec_verb_fndecl_61100
141986 +disable_so_bv_offset_bio_vec_61109 bv_offset bio_vec 0 61109 NULL
141987 +disable_so_jffs2_check_nand_cleanmarker_fndecl_61117 jffs2_check_nand_cleanmarker fndecl 0 61117 NULL
141988 +disable_so___intel_set_mode_fndecl_61128 __intel_set_mode fndecl 0 61128 NULL
141989 +disable_so_get_free_entries_fndecl_61149 get_free_entries fndecl 0 61149 NULL nohasharray
141990 +disable_so_iio_device_register_eventset_fndecl_61149 iio_device_register_eventset fndecl 0 61149 &disable_so_get_free_entries_fndecl_61149
141991 +disable_so_bochs_hw_init_fndecl_61153 bochs_hw_init fndecl 0 61153 NULL
141992 +disable_so_sel_commit_bools_write_fndecl_61166 sel_commit_bools_write fndecl 0 61166 NULL
141993 +disable_so_radeon_do_test_moves_fndecl_61168 radeon_do_test_moves fndecl 0 61168 NULL
141994 +disable_so_ftdi_elan_edset_empty_fndecl_61170 ftdi_elan_edset_empty fndecl 0 61170 NULL
141995 +disable_so_phys_memory_base__synclinkmp_info_61174 phys_memory_base _synclinkmp_info 0 61174 NULL
141996 +disable_so_vmw_wait_seqno_fndecl_61176 vmw_wait_seqno fndecl 0 61176 NULL
141997 +disable_so_pos_dir_context_61195 pos dir_context 0 61195 NULL
141998 +disable_so_port_id_ssp_device_61196 port_id ssp_device 0 61196 NULL
141999 +disable_so_ipmi_heartbeat_fndecl_61198 ipmi_heartbeat fndecl 0 61198 NULL
142000 +disable_so_kvm_vm_ioctl_deassign_dev_irq_fndecl_61200 kvm_vm_ioctl_deassign_dev_irq fndecl 0 61200 NULL
142001 +disable_so_savage_dispatch_state_fndecl_61203 savage_dispatch_state fndecl 0 61203 NULL
142002 +disable_so_cpuidle_add_device_sysfs_fndecl_61204 cpuidle_add_device_sysfs fndecl 0 61204 NULL
142003 +disable_so_cypress_get_hexline_fndecl_61206 cypress_get_hexline fndecl 0 61206 NULL nohasharray
142004 +disable_so_pm8001_set_nvmd_fndecl_61206 pm8001_set_nvmd fndecl 0 61206 &disable_so_cypress_get_hexline_fndecl_61206
142005 +disable_so_zr36016_setup_fndecl_61210 zr36016_setup fndecl 0 61210 NULL
142006 +disable_so_zd_usb_iowrite16v_async_end_fndecl_61215 zd_usb_iowrite16v_async_end fndecl 0 61215 NULL
142007 +disable_so_rmtblkcnt_xfs_da_args_61223 rmtblkcnt xfs_da_args 0 61223 NULL
142008 +disable_so_ipip6_tunnel_ioctl_fndecl_61232 ipip6_tunnel_ioctl fndecl 0 61232 NULL
142009 +disable_so_hidraw_get_report_fndecl_61242 hidraw_get_report fndecl 0 61242 NULL
142010 +disable_so_ext4_reserve_inode_write_fndecl_61253 ext4_reserve_inode_write fndecl 0 61253 NULL
142011 +disable_so_pci_enable_device_io_fndecl_61261 pci_enable_device_io fndecl 0 61261 NULL
142012 +disable_so_commit_cowonly_roots_fndecl_61275 commit_cowonly_roots fndecl 0 61275 NULL
142013 +disable_so_reader_config_fndecl_61280 reader_config fndecl 0 61280 NULL
142014 +disable_so_sd_probe_fndecl_61304 sd_probe fndecl 0 61304 NULL
142015 +disable_so_vector_mxser_board_61308 vector mxser_board 0 61308 NULL
142016 +disable_so_ufx_i2c_configure_fndecl_61311 ufx_i2c_configure fndecl 0 61311 NULL
142017 +disable_so_svc_getsockopt_fndecl_61316 svc_getsockopt fndecl 0 61316 NULL
142018 +disable_so_bounce_error_event_fndecl_61317 bounce_error_event fndecl 0 61317 NULL
142019 +disable_so_mxser_get_serial_info_fndecl_61318 mxser_get_serial_info fndecl 0 61318 NULL
142020 +disable_so_jffs2_find_nextblock_fndecl_61335 jffs2_find_nextblock fndecl 0 61335 NULL
142021 +disable_so_ntfs_read_compressed_block_fndecl_61343 ntfs_read_compressed_block fndecl 0 61343 NULL
142022 +disable_so_ni_populate_mclk_value_fndecl_61346 ni_populate_mclk_value fndecl 0 61346 NULL
142023 +disable_so_sync_dirty_buffer_fndecl_61371 sync_dirty_buffer fndecl 0 61371 NULL
142024 +disable_so_num_msix_vectors_i40evf_adapter_61390 num_msix_vectors i40evf_adapter 0 61390 NULL
142025 +disable_so_iwl_dbgfs_low_latency_write_fndecl_61399 iwl_dbgfs_low_latency_write fndecl 0 61399 NULL
142026 +disable_so___pci_register_driver_fndecl_61400 __pci_register_driver fndecl 0 61400 NULL
142027 +disable_so_wl1251_cmd_join_fndecl_61405 wl1251_cmd_join fndecl 0 61405 NULL
142028 +disable_so_vif_add_fndecl_61410 vif_add fndecl 0 61410 NULL
142029 +disable_so_checkintf_fndecl_61413 checkintf fndecl 0 61413 NULL
142030 +disable_so_fm_v4l2_init_video_device_fndecl_61422 fm_v4l2_init_video_device fndecl 0 61422 NULL
142031 +disable_so_raw_setsockopt_fndecl_61435 raw_setsockopt fndecl 0 61435 NULL
142032 +disable_so_dcbnl_build_peer_app_fndecl_61444 dcbnl_build_peer_app fndecl 0 61444 NULL
142033 +disable_so__request_firmware_prepare_fndecl_61456 _request_firmware_prepare fndecl 0 61456 NULL
142034 +disable_so_ocfs2_zero_range_for_truncate_fndecl_61461 ocfs2_zero_range_for_truncate fndecl 0 61461 NULL
142035 +disable_so_xfs_init_mount_workqueues_fndecl_61465 xfs_init_mount_workqueues fndecl 0 61465 NULL
142036 +disable_so_ubi_eba_write_leb_st_fndecl_61476 ubi_eba_write_leb_st fndecl 0 61476 NULL
142037 +disable_so_dreq_iss_dccp_request_sock_61480 dreq_iss dccp_request_sock 0 61480 NULL
142038 +disable_so_radix_tree_maybe_preload_fndecl_61481 radix_tree_maybe_preload fndecl 0 61481 NULL nohasharray
142039 +disable_so_efx_mcdi_drv_attach_fndecl_61481 efx_mcdi_drv_attach fndecl 0 61481 &disable_so_radix_tree_maybe_preload_fndecl_61481 nohasharray
142040 +disable_so_logfs_write_i0_fndecl_61481 logfs_write_i0 fndecl 0 61481 &disable_so_efx_mcdi_drv_attach_fndecl_61481
142041 +disable_so_generic_file_read_iter_fndecl_61491 generic_file_read_iter fndecl 0 61491 NULL
142042 +disable_so_f_adc_hackrf_dev_61493 f_adc hackrf_dev 0 61493 NULL
142043 +disable_so_pcxhr_sub_init_fndecl_61495 pcxhr_sub_init fndecl 0 61495 NULL nohasharray
142044 +disable_so_ccp_init_data_fndecl_61495 ccp_init_data fndecl 0 61495 &disable_so_pcxhr_sub_init_fndecl_61495
142045 +disable_so_lbs_add_mesh_fndecl_61505 lbs_add_mesh fndecl 0 61505 NULL
142046 +disable_so_mgag200_gem_create_fndecl_61507 mgag200_gem_create fndecl 0 61507 NULL
142047 +disable_so_nl802154_dump_wpan_phy_parse_fndecl_61517 nl802154_dump_wpan_phy_parse fndecl 0 61517 NULL
142048 +disable_so_usb_get_configuration_fndecl_61521 usb_get_configuration fndecl 0 61521 NULL
142049 +disable_so_sys_write_fndecl_61526 sys_write fndecl 0 61526 NULL
142050 +disable_so_snd_pcm_hw_constraint_list_fndecl_61527 snd_pcm_hw_constraint_list fndecl 0 61527 NULL
142051 +disable_so_irq_base_regmap_irq_chip_data_61532 irq_base regmap_irq_chip_data 0 61532 NULL
142052 +disable_so_digital_send_cmd_fndecl_61535 digital_send_cmd fndecl 0 61535 NULL
142053 +disable_so_ret_name_cache_entry_61542 ret name_cache_entry 0 61542 NULL
142054 +disable_so_start_rx_fndecl_61552 start_rx fndecl 0 61552 NULL
142055 +disable_so_mlx5_ib_query_gid_fndecl_61553 mlx5_ib_query_gid fndecl 0 61553 NULL
142056 +disable_so_gfs2_lock_fs_check_clean_fndecl_61554 gfs2_lock_fs_check_clean fndecl 0 61554 NULL
142057 +disable_so_oxygen_mixer_init_fndecl_61557 oxygen_mixer_init fndecl 0 61557 NULL
142058 +disable_so_sb1000_dev_ioctl_fndecl_61562 sb1000_dev_ioctl fndecl 0 61562 NULL
142059 +disable_so_mwl8k_cmd_set_edca_params_fndecl_61567 mwl8k_cmd_set_edca_params fndecl 0 61567 NULL
142060 +disable_so_broadsheet_spiflash_op_on_address_fndecl_61596 broadsheet_spiflash_op_on_address fndecl 0 61596 NULL nohasharray
142061 +disable_so_mlx4_trans_to_dmfs_attach_fndecl_61596 mlx4_trans_to_dmfs_attach fndecl 0 61596 &disable_so_broadsheet_spiflash_op_on_address_fndecl_61596
142062 +disable_so_ext4_max_size_fndecl_61600 ext4_max_size fndecl 0 61600 NULL
142063 +disable_so_em28xx_i2c_eeprom_fndecl_61601 em28xx_i2c_eeprom fndecl 0 61601 NULL
142064 +disable_so_mic_virtio_copy_to_user_fndecl_61611 mic_virtio_copy_to_user fndecl 0 61611 NULL
142065 +disable_so_allocate_mid_fndecl_61612 allocate_mid fndecl 0 61612 NULL
142066 +disable_so_t4vf_get_dev_params_fndecl_61613 t4vf_get_dev_params fndecl 0 61613 NULL
142067 +disable_so_af9033_probe_fndecl_61614 af9033_probe fndecl 0 61614 NULL
142068 +disable_so_iwl_dbgfs_bf_params_write_fndecl_61617 iwl_dbgfs_bf_params_write fndecl 0 61617 NULL
142069 +disable_so_af_alg_make_sg_fndecl_61624 af_alg_make_sg fndecl 0 61624 NULL
142070 +disable_so_iwl_dbgfs_sram_read_fndecl_61642 iwl_dbgfs_sram_read fndecl 0 61642 NULL
142071 +disable_so_iwl_send_bt_env_fndecl_61650 iwl_send_bt_env fndecl 0 61650 NULL
142072 +disable_so_anode_lookup_fndecl_61656 anode_lookup fndecl 0 61656 NULL
142073 +disable_so_cond_read_node_fndecl_61659 cond_read_node fndecl 0 61659 NULL
142074 +disable_so_virtcons_probe_fndecl_61663 virtcons_probe fndecl 0 61663 NULL
142075 +disable_so_oxygen_pcm_init_fndecl_61668 oxygen_pcm_init fndecl 0 61668 NULL
142076 +disable_so_uwb_rc_ie_setup_fndecl_61678 uwb_rc_ie_setup fndecl 0 61678 NULL
142077 +disable_so_iommu_attach_device_fndecl_61689 iommu_attach_device fndecl 0 61689 NULL
142078 +disable_so_snd_fw_transaction_fndecl_61697 snd_fw_transaction fndecl 0 61697 NULL
142079 +disable_so_efx_wait_for_link_fndecl_61699 efx_wait_for_link fndecl 0 61699 NULL
142080 +disable_so_hub_hub_status_fndecl_61700 hub_hub_status fndecl 0 61700 NULL
142081 +disable_so_brcmf_ops_sdio_probe_fndecl_61707 brcmf_ops_sdio_probe fndecl 0 61707 NULL
142082 +disable_so_sel_netport_sid_slow_fndecl_61709 sel_netport_sid_slow fndecl 0 61709 NULL
142083 +disable_so_btrfs_account_dev_extents_size_fndecl_61726 btrfs_account_dev_extents_size fndecl 0 61726 NULL
142084 +disable_so_btrfs_prev_leaf_fndecl_61728 btrfs_prev_leaf fndecl 0 61728 NULL
142085 +disable_so_wmi_call_fndecl_61745 wmi_call fndecl 0 61745 NULL
142086 +disable_so_ni_calculate_sclk_params_fndecl_61747 ni_calculate_sclk_params fndecl 0 61747 NULL
142087 +disable_so_tree_insert_offset_fndecl_61750 tree_insert_offset fndecl 0 61750 NULL
142088 +disable_so_check_idq_fndecl_61766 check_idq fndecl 0 61766 NULL
142089 +disable_so_do_readpage_fndecl_61771 do_readpage fndecl 0 61771 NULL
142090 +disable_so_ipath_assign_port_fndecl_61787 ipath_assign_port fndecl 0 61787 NULL
142091 +disable_so_get_v4l2_ext_controls32_fndecl_61797 get_v4l2_ext_controls32 fndecl 0 61797 NULL
142092 +disable_so_em28xx_read_reg_req_fndecl_61809 em28xx_read_reg_req fndecl 0 61809 NULL
142093 +disable_so_fat_alloc_clusters_fndecl_61813 fat_alloc_clusters fndecl 0 61813 NULL
142094 +disable_so_dev_uc_del_fndecl_61818 dev_uc_del fndecl 0 61818 NULL
142095 +disable_so_lookup_extent_data_ref_fndecl_61819 lookup_extent_data_ref fndecl 0 61819 NULL
142096 +disable_so_xfs_bulkstat_one_fndecl_61834 xfs_bulkstat_one fndecl 0 61834 NULL
142097 +disable_so_smi_dvbsky_sit2_fe_attach_fndecl_61852 smi_dvbsky_sit2_fe_attach fndecl 0 61852 NULL
142098 +disable_so_ocfs2_xattr_bucket_find_fndecl_61853 ocfs2_xattr_bucket_find fndecl 0 61853 NULL
142099 +disable_so_wl1271_acx_mem_map_fndecl_61859 wl1271_acx_mem_map fndecl 0 61859 NULL
142100 +disable_so_i915_gem_phys_pwrite_fndecl_61861 i915_gem_phys_pwrite fndecl 0 61861 NULL
142101 +disable_so_qib_assign_ctxt_fndecl_61866 qib_assign_ctxt fndecl 0 61866 NULL
142102 +disable_so__eip_x86_emulate_ctxt_61869 _eip x86_emulate_ctxt 0 61869 NULL
142103 +disable_so_ethtool_get_perm_addr_fndecl_61870 ethtool_get_perm_addr fndecl 0 61870 NULL
142104 +disable_so_handle_eviocgbit_fndecl_61874 handle_eviocgbit fndecl 0 61874 NULL
142105 +disable_so_sm501fb_probe_one_fndecl_61876 sm501fb_probe_one fndecl 0 61876 NULL nohasharray
142106 +disable_so_ubifs_jnl_change_xattr_fndecl_61876 ubifs_jnl_change_xattr fndecl 0 61876 &disable_so_sm501fb_probe_one_fndecl_61876 nohasharray
142107 +disable_so_port_snd_riptide_61876 port snd_riptide 0 61876 &disable_so_ubifs_jnl_change_xattr_fndecl_61876
142108 +disable_so_vr_nor_init_maps_fndecl_61888 vr_nor_init_maps fndecl 0 61888 NULL
142109 +disable_so_find_group_orlov_fndecl_61896 find_group_orlov fndecl 0 61896 NULL
142110 +disable_so_b43_plcp_get_bitrate_idx_ofdm_fndecl_61900 b43_plcp_get_bitrate_idx_ofdm fndecl 0 61900 NULL
142111 +disable_so_freq_tm6000_core_61902 freq tm6000_core 0 61902 NULL
142112 +disable_so_apei_resources_sub_fndecl_61903 apei_resources_sub fndecl 0 61903 NULL
142113 +disable_so_vmbus_negotiate_version_fndecl_61904 vmbus_negotiate_version fndecl 0 61904 NULL
142114 +disable_so_device_user_unlock_fndecl_61907 device_user_unlock fndecl 0 61907 NULL
142115 +disable_so_maxframe_size_fc_rport_61909 maxframe_size fc_rport 0 61909 NULL
142116 +disable_so_kobject_rename_fndecl_61916 kobject_rename fndecl 0 61916 NULL
142117 +disable_so_iwl_send_bt_prio_tbl_fndecl_61919 iwl_send_bt_prio_tbl fndecl 0 61919 NULL
142118 +disable_so_btc_set_mc_special_registers_fndecl_61925 btc_set_mc_special_registers fndecl 0 61925 NULL
142119 +disable_so_gpiod_direction_output_raw_fndecl_61927 gpiod_direction_output_raw fndecl 0 61927 NULL
142120 +disable_so_si_copy_bytes_to_smc_fndecl_61939 si_copy_bytes_to_smc fndecl 0 61939 NULL
142121 +disable_so_s_last_block_udf_sb_info_61948 s_last_block udf_sb_info 0 61948 NULL
142122 +disable_so_vlan_vid_add_fndecl_61950 vlan_vid_add fndecl 0 61950 NULL
142123 +disable_so_wa_urb_enqueue_b_fndecl_61957 wa_urb_enqueue_b fndecl 0 61957 NULL
142124 +disable_so_s_maxbytes_super_block_61963 s_maxbytes super_block 0 61963 NULL
142125 +disable_so_dbg_check_lprops_fndecl_61986 dbg_check_lprops fndecl 0 61986 NULL
142126 +disable_so_cross_eof_fndecl_61987 cross_eof fndecl 0 61987 NULL
142127 +disable_so_logi_dj_ll_parse_fndecl_61990 logi_dj_ll_parse fndecl 0 61990 NULL
142128 +disable_so_iwl_send_wimax_coex_fndecl_61998 iwl_send_wimax_coex fndecl 0 61998 NULL
142129 +disable_so_ccid_activate_fndecl_62005 ccid_activate fndecl 0 62005 NULL
142130 +disable_so_ext4_ext_convert_to_initialized_fndecl_62009 ext4_ext_convert_to_initialized fndecl 0 62009 NULL
142131 +disable_so_netlbl_cipsov4_add_pass_fndecl_62012 netlbl_cipsov4_add_pass fndecl 0 62012 NULL
142132 +disable_so_vml_pci_probe_fndecl_62022 vml_pci_probe fndecl 0 62022 NULL
142133 +disable_so_n_rx_channels_efx_nic_62034 n_rx_channels efx_nic 0 62034 NULL
142134 +disable_so_dev_sectors_r10conf_62035 dev_sectors r10conf 0 62035 NULL
142135 +disable_so_dma_set_fragment_fndecl_62042 dma_set_fragment fndecl 0 62042 NULL
142136 +disable_so_load_firmware_fndecl_62044 load_firmware fndecl 0 62044 NULL
142137 +disable_so_pci_create_attr_fndecl_62051 pci_create_attr fndecl 0 62051 NULL
142138 +disable_so_scan_revoke_records_fndecl_62054 scan_revoke_records fndecl 0 62054 NULL
142139 +disable_so_snd_intel8x0_chip_init_fndecl_62057 snd_intel8x0_chip_init fndecl 0 62057 NULL
142140 +disable_so_ip_vs_del_service_fndecl_62066 ip_vs_del_service fndecl 0 62066 NULL
142141 +disable_so_iwl_mvm_drain_sta_fndecl_62078 iwl_mvm_drain_sta fndecl 0 62078 NULL
142142 +disable_so__snd_pcm_hw_param_last_fndecl_62080 _snd_pcm_hw_param_last fndecl 0 62080 NULL
142143 +disable_so_bl_parse_stripe_fndecl_62085 bl_parse_stripe fndecl 0 62085 NULL
142144 +disable_so_rtsx_usb_seq_write_register_fndecl_62088 rtsx_usb_seq_write_register fndecl 0 62088 NULL
142145 +disable_so_yoffset_fb_var_screeninfo_62110 yoffset fb_var_screeninfo 0 62110 NULL
142146 +disable_so_scsi_cmd_ioctl_fndecl_62114 scsi_cmd_ioctl fndecl 0 62114 NULL
142147 +disable_so_bo_offset_vmw_surface_offset_62116 bo_offset vmw_surface_offset 0 62116 NULL
142148 +disable_so_aac_probe_one_fndecl_62120 aac_probe_one fndecl 0 62120 NULL
142149 +disable_so_drbd_recv_all_warn_fndecl_62144 drbd_recv_all_warn fndecl 0 62144 NULL
142150 +disable_so_sock_get_timestampns_fndecl_62145 sock_get_timestampns fndecl 0 62145 NULL
142151 +disable_so_mwl8k_cmd_set_rate_fndecl_62155 mwl8k_cmd_set_rate fndecl 0 62155 NULL
142152 +disable_so_rtc_irq_set_state_fndecl_62157 rtc_irq_set_state fndecl 0 62157 NULL
142153 +disable_so_s2255_board_init_fndecl_62171 s2255_board_init fndecl 0 62171 NULL
142154 +disable_so_xen_irq_from_gsi_fndecl_62186 xen_irq_from_gsi fndecl 0 62186 NULL
142155 +disable_so_nand_scan_tail_fndecl_62187 nand_scan_tail fndecl 0 62187 NULL
142156 +disable_so_packet_mc_add_fndecl_62200 packet_mc_add fndecl 0 62200 NULL
142157 +disable_so_maxframe_caifsock_62201 maxframe caifsock 0 62201 NULL
142158 +disable_so_snd_ymfpci_ac3_init_fndecl_62202 snd_ymfpci_ac3_init fndecl 0 62202 NULL
142159 +disable_so_snd_seq_kernel_client_ctl_fndecl_62203 snd_seq_kernel_client_ctl fndecl 0 62203 NULL
142160 +disable_so_sctp_gen_sack_fndecl_62214 sctp_gen_sack fndecl 0 62214 NULL
142161 +disable_so_il_eeprom_init_fndecl_62221 il_eeprom_init fndecl 0 62221 NULL
142162 +disable_so_ptr_to_user_fndecl_62226 ptr_to_user fndecl 0 62226 NULL
142163 +disable_so_ocfs2_info_handle_freefrag_fndecl_62229 ocfs2_info_handle_freefrag fndecl 0 62229 NULL nohasharray
142164 +disable_so_sense_len_request_62229 sense_len request 0 62229 &disable_so_ocfs2_info_handle_freefrag_fndecl_62229
142165 +disable_so_snd_emu10k1_del_controls_fndecl_62233 snd_emu10k1_del_controls fndecl 0 62233 NULL
142166 +disable_so_acpi_ut_execute_CID_fndecl_62256 acpi_ut_execute_CID fndecl 0 62256 NULL
142167 +disable_so_btrfs_set_extent_delalloc_fndecl_62264 btrfs_set_extent_delalloc fndecl 0 62264 NULL
142168 +disable_so_mxser_set_serial_info_fndecl_62284 mxser_set_serial_info fndecl 0 62284 NULL nohasharray
142169 +disable_so_lpfc_wq_create_fndecl_62284 lpfc_wq_create fndecl 0 62284 &disable_so_mxser_set_serial_info_fndecl_62284
142170 +disable_so_map_extent_mft_record_fndecl_62312 map_extent_mft_record fndecl 0 62312 NULL
142171 +disable_so_rocker_dma_test_one_fndecl_62316 rocker_dma_test_one fndecl 0 62316 NULL
142172 +disable_so_gart_bus_addr_agp_bridge_data_62321 gart_bus_addr agp_bridge_data 0 62321 NULL
142173 +disable_so_qib_get_user_pages_fndecl_62338 qib_get_user_pages fndecl 0 62338 NULL
142174 +disable_so_ep_insert_fndecl_62339 ep_insert fndecl 0 62339 NULL
142175 +disable_so_seq_open_fndecl_62353 seq_open fndecl 0 62353 NULL nohasharray
142176 +disable_so_mpi_resize_fndecl_62353 mpi_resize fndecl 0 62353 &disable_so_seq_open_fndecl_62353
142177 +disable_so_check_overlay_scaling_fndecl_62359 check_overlay_scaling fndecl 0 62359 NULL
142178 +disable_so_fm10k_iov_alloc_data_fndecl_62361 fm10k_iov_alloc_data fndecl 0 62361 NULL
142179 +disable_so_rsi_read_pkt_fndecl_62362 rsi_read_pkt fndecl 0 62362 NULL
142180 +disable_so_sysfs_create_link_fndecl_62366 sysfs_create_link fndecl 0 62366 NULL
142181 +disable_so_mptctl_fw_download_fndecl_62368 mptctl_fw_download fndecl 0 62368 NULL
142182 +disable_so__zd_iowrite32v_locked_fndecl_62374 _zd_iowrite32v_locked fndecl 0 62374 NULL nohasharray
142183 +disable_so_create_device_fndecl_62374 create_device fndecl 0 62374 &disable_so__zd_iowrite32v_locked_fndecl_62374
142184 +disable_so_ipxitf_ioctl_fndecl_62377 ipxitf_ioctl fndecl 0 62377 NULL
142185 +disable_so_iwl_dbgfs_rx_phyinfo_write_fndecl_62383 iwl_dbgfs_rx_phyinfo_write fndecl 0 62383 NULL
142186 +disable_so___change_page_attr_set_clr_fndecl_62388 __change_page_attr_set_clr fndecl 0 62388 NULL
142187 +disable_so_bch_bio_max_sectors_fndecl_62400 bch_bio_max_sectors fndecl 0 62400 NULL
142188 +disable_so_iwl_mvm_bt_coex_reduced_txp_fndecl_62402 iwl_mvm_bt_coex_reduced_txp fndecl 0 62402 NULL
142189 +disable_so_phy_poll_reset_fndecl_62403 phy_poll_reset fndecl 0 62403 NULL
142190 +disable_so_config_unknown_volume_fndecl_62407 config_unknown_volume fndecl 0 62407 NULL
142191 +disable_so_rtsx_usb_get_rsp_fndecl_62408 rtsx_usb_get_rsp fndecl 0 62408 NULL
142192 +disable_so_sas_ex_phy_discover_fndecl_62418 sas_ex_phy_discover fndecl 0 62418 NULL
142193 +disable_so___videobuf_copy_stream_fndecl_62450 __videobuf_copy_stream fndecl 0 62450 NULL
142194 +disable_so_copy_everything_to_user_fndecl_62451 copy_everything_to_user fndecl 0 62451 NULL
142195 +disable_so_lpfc_sli4_diag_fcport_reg_setup_fndecl_62456 lpfc_sli4_diag_fcport_reg_setup fndecl 0 62456 NULL
142196 +disable_so_efivar_entry_set_fndecl_62460 efivar_entry_set fndecl 0 62460 NULL
142197 +disable_so_cciss_getdrivver_fndecl_62470 cciss_getdrivver fndecl 0 62470 NULL
142198 +disable_so_nfs40_init_client_fndecl_62480 nfs40_init_client fndecl 0 62480 NULL
142199 +disable_so_digital_tg_listen_nfcf_fndecl_62488 digital_tg_listen_nfcf fndecl 0 62488 NULL
142200 +disable_so_filemap_write_and_wait_range_fndecl_62492 filemap_write_and_wait_range fndecl 0 62492 NULL
142201 +disable_so_try_charge_fndecl_62496 try_charge fndecl 0 62496 NULL
142202 +disable_so_em28xx_audio_analog_set_fndecl_62499 em28xx_audio_analog_set fndecl 0 62499 NULL
142203 +disable_so_sctp_auth_ep_add_chunkid_fndecl_62502 sctp_auth_ep_add_chunkid fndecl 0 62502 NULL
142204 +disable_so_rq_tailsz_smb_rqst_62506 rq_tailsz smb_rqst 0 62506 NULL
142205 +disable_so_btrfs_alloc_dev_extent_fndecl_62518 btrfs_alloc_dev_extent fndecl 0 62518 NULL
142206 +disable_so_ceph_pre_init_acls_fndecl_62519 ceph_pre_init_acls fndecl 0 62519 NULL
142207 +disable_so_xfs_compat_ioc_fsgeometry_v1_fndecl_62523 xfs_compat_ioc_fsgeometry_v1 fndecl 0 62523 NULL
142208 +disable_so_xfs_log_regrant_fndecl_62533 xfs_log_regrant fndecl 0 62533 NULL
142209 +disable_so_drm_dp_mst_wait_tx_reply_fndecl_62534 drm_dp_mst_wait_tx_reply fndecl 0 62534 NULL
142210 +disable_so_i40e_probe_fndecl_62545 i40e_probe fndecl 0 62545 NULL
142211 +disable_so___ext4_get_inode_loc_fndecl_62551 __ext4_get_inode_loc fndecl 0 62551 NULL
142212 +disable_so_be_cmd_wrbq_create_fndecl_62555 be_cmd_wrbq_create fndecl 0 62555 NULL
142213 +disable_so_rsi_sdio_host_intf_read_pkt_fndecl_62557 rsi_sdio_host_intf_read_pkt fndecl 0 62557 NULL
142214 +disable_so_b43_wireless_core_attach_fndecl_62561 b43_wireless_core_attach fndecl 0 62561 NULL
142215 +disable_so_input_grab_device_fndecl_62567 input_grab_device fndecl 0 62567 NULL
142216 +disable_so_svc_pool_map_get_fndecl_62569 svc_pool_map_get fndecl 0 62569 NULL
142217 +disable_so_acpi_bus_register_driver_fndecl_62572 acpi_bus_register_driver fndecl 0 62572 NULL
142218 +disable_so_usb_serial_register_fndecl_62579 usb_serial_register fndecl 0 62579 NULL
142219 +disable_so_srcimp_rsc_init_fndecl_62580 srcimp_rsc_init fndecl 0 62580 NULL
142220 +disable_so_gfs2_rgrp_bh_get_fndecl_62588 gfs2_rgrp_bh_get fndecl 0 62588 NULL
142221 +disable_so_wl1271_acx_group_address_tbl_fndecl_62591 wl1271_acx_group_address_tbl fndecl 0 62591 NULL
142222 +disable_so_msi_capability_init_fndecl_62604 msi_capability_init fndecl 0 62604 NULL
142223 +disable_so_ext4_xattr_check_names_fndecl_62605 ext4_xattr_check_names fndecl 0 62605 NULL nohasharray
142224 +disable_so_freq_cx23885_dev_62605 freq cx23885_dev 0 62605 &disable_so_ext4_xattr_check_names_fndecl_62605
142225 +disable_so_xfs_btree_new_iroot_fndecl_62611 xfs_btree_new_iroot fndecl 0 62611 NULL
142226 +disable_so_wl1251_acx_data_path_params_fndecl_62623 wl1251_acx_data_path_params fndecl 0 62623 NULL
142227 +disable_so_decode_ntlmssp_challenge_fndecl_62633 decode_ntlmssp_challenge fndecl 0 62633 NULL
142228 +disable_so_nilfs_palloc_get_bitmap_block_fndecl_62635 nilfs_palloc_get_bitmap_block fndecl 0 62635 NULL
142229 +disable_so_fs_path_prepare_for_add_fndecl_62638 fs_path_prepare_for_add fndecl 0 62638 NULL
142230 +disable_so_pt1_init_frontend_fndecl_62646 pt1_init_frontend fndecl 0 62646 NULL
142231 +disable_so_sp2_init_fndecl_62649 sp2_init fndecl 0 62649 NULL nohasharray
142232 +disable_so_usb_driver_set_configuration_fndecl_62649 usb_driver_set_configuration fndecl 0 62649 &disable_so_sp2_init_fndecl_62649
142233 +disable_so_budget_patch_attach_fndecl_62657 budget_patch_attach fndecl 0 62657 NULL
142234 +disable_so_count_pch_gbe_rx_ring_62662 count pch_gbe_rx_ring 0 62662 NULL
142235 +disable_so_rpc_queue_upcall_fndecl_62666 rpc_queue_upcall fndecl 0 62666 NULL nohasharray
142236 +disable_so_usif_object_new_fndecl_62666 usif_object_new fndecl 0 62666 &disable_so_rpc_queue_upcall_fndecl_62666
142237 +disable_so_alloc_new_reservation_fndecl_62667 alloc_new_reservation fndecl 0 62667 NULL
142238 +disable_so_tfrc_rx_packet_history_init_fndecl_62672 tfrc_rx_packet_history_init fndecl 0 62672 NULL
142239 +disable_so_freq_saa7164_port_62674 freq saa7164_port 0 62674 NULL
142240 +disable_so_usb6fire_comm_write16_fndecl_62679 usb6fire_comm_write16 fndecl 0 62679 NULL
142241 +disable_so_f_tuner_rtl2832_sdr_dev_62680 f_tuner rtl2832_sdr_dev 0 62680 NULL
142242 +disable_so_nvme_trans_device_id_page_fndecl_62681 nvme_trans_device_id_page fndecl 0 62681 NULL nohasharray
142243 +disable_so_efifb_probe_fndecl_62681 efifb_probe fndecl 0 62681 &disable_so_nvme_trans_device_id_page_fndecl_62681
142244 +disable_so_ib_get_cached_gid_fndecl_62698 ib_get_cached_gid fndecl 0 62698 NULL nohasharray
142245 +disable_so___unmap_and_move_fndecl_62698 __unmap_and_move fndecl 0 62698 &disable_so_ib_get_cached_gid_fndecl_62698
142246 +disable_so_rndis_check_bssid_list_fndecl_62699 rndis_check_bssid_list fndecl 0 62699 NULL
142247 +disable_so_et131x_init_recv_fndecl_62701 et131x_init_recv fndecl 0 62701 NULL
142248 +disable_so_early_erase_peb_fndecl_62704 early_erase_peb fndecl 0 62704 NULL
142249 +disable_so_nvkm_parent_create__fndecl_62723 nvkm_parent_create_ fndecl 0 62723 NULL
142250 +disable_so_init_phys_status_page_fndecl_62727 init_phys_status_page fndecl 0 62727 NULL
142251 +disable_so_wl1271_acx_set_rx_filter_fndecl_62730 wl1271_acx_set_rx_filter fndecl 0 62730 NULL
142252 +disable_so_check_subscription_permission_fndecl_62731 check_subscription_permission fndecl 0 62731 NULL
142253 +disable_so_ipw_load_fndecl_62732 ipw_load fndecl 0 62732 NULL nohasharray
142254 +disable_so_ethtool_get_regs_fndecl_62732 ethtool_get_regs fndecl 0 62732 &disable_so_ipw_load_fndecl_62732
142255 +disable_so_xfs_da_read_buf_fndecl_62739 xfs_da_read_buf fndecl 0 62739 NULL
142256 +disable_so_rxrpc_preparse_xdr_rxk5_fndecl_62744 rxrpc_preparse_xdr_rxk5 fndecl 0 62744 NULL
142257 +disable_so_vb2_vmalloc_dmabuf_ops_attach_fndecl_62749 vb2_vmalloc_dmabuf_ops_attach fndecl 0 62749 NULL nohasharray
142258 +disable_so_mi_first_entry_offset_nilfs_mdt_info_62749 mi_first_entry_offset nilfs_mdt_info 0 62749 &disable_so_vb2_vmalloc_dmabuf_ops_attach_fndecl_62749
142259 +disable_so_fb_add_videomode_fndecl_62754 fb_add_videomode fndecl 0 62754 NULL
142260 +disable_so_ssb_pcmcia_cfg_read_fndecl_62755 ssb_pcmcia_cfg_read fndecl 0 62755 NULL nohasharray
142261 +disable_so_snd_soc_dapm_add_path_fndecl_62755 snd_soc_dapm_add_path fndecl 0 62755 &disable_so_ssb_pcmcia_cfg_read_fndecl_62755
142262 +disable_so_do_timerfd_settime_fndecl_62764 do_timerfd_settime fndecl 0 62764 NULL
142263 +disable_so_notask_error_wait_opts_62765 notask_error wait_opts 0 62765 NULL
142264 +disable_so_wait_grab_pending_fndecl_62773 wait_grab_pending fndecl 0 62773 NULL
142265 +disable_so_iwl_pcie_tx_alloc_fndecl_62776 iwl_pcie_tx_alloc fndecl 0 62776 NULL
142266 +disable_so_isdn_ppp_open_fndecl_62782 isdn_ppp_open fndecl 0 62782 NULL
142267 +disable_so_io_ctl_check_generation_fndecl_62784 io_ctl_check_generation fndecl 0 62784 NULL
142268 +disable_so_kvm_pic_read_irq_fndecl_62795 kvm_pic_read_irq fndecl 0 62795 NULL nohasharray
142269 +disable_so_dev_set_promiscuity_fndecl_62795 dev_set_promiscuity fndecl 0 62795 &disable_so_kvm_pic_read_irq_fndecl_62795
142270 +disable_so_mmc_start_request_fndecl_62798 mmc_start_request fndecl 0 62798 NULL
142271 +disable_so_set_lock_args_fndecl_62814 set_lock_args fndecl 0 62814 NULL
142272 +disable_so_svc_change_qos_fndecl_62836 svc_change_qos fndecl 0 62836 NULL
142273 +disable_so_mlx4_reset_fndecl_62846 mlx4_reset fndecl 0 62846 NULL
142274 +disable_so_nkbd_connect_fndecl_62847 nkbd_connect fndecl 0 62847 NULL
142275 +disable_so_ipath_get_slave_info_fndecl_62849 ipath_get_slave_info fndecl 0 62849 NULL
142276 +disable_so_spi_xcomm_txrx_bufs_fndecl_62860 spi_xcomm_txrx_bufs fndecl 0 62860 NULL
142277 +disable_so_c67x00_td_to_error_fndecl_62867 c67x00_td_to_error fndecl 0 62867 NULL
142278 +disable_so_ext2_max_size_fndecl_62871 ext2_max_size fndecl 0 62871 NULL nohasharray
142279 +disable_so_scsi_verify_blk_ioctl_fndecl_62871 scsi_verify_blk_ioctl fndecl 0 62871 &disable_so_ext2_max_size_fndecl_62871
142280 +disable_so_gfs2_dir_write_stuffed_fndecl_62872 gfs2_dir_write_stuffed fndecl 0 62872 NULL
142281 +disable_so_get_properties_fndecl_62878 get_properties fndecl 0 62878 NULL
142282 +disable_so_ath6kl_set_assoc_req_ies_fndecl_62882 ath6kl_set_assoc_req_ies fndecl 0 62882 NULL
142283 +disable_so_sco_sock_getsockopt_fndecl_62893 sco_sock_getsockopt fndecl 0 62893 NULL
142284 +disable_so_send_cmd_fndecl_62899 send_cmd fndecl 0 62899 NULL nohasharray
142285 +disable_so___nci_request_fndecl_62899 __nci_request fndecl 0 62899 &disable_so_send_cmd_fndecl_62899
142286 +disable_so_cx82310_cmd_fndecl_62905 cx82310_cmd fndecl 0 62905 NULL
142287 +disable_so_focaltech_read_size_fndecl_62910 focaltech_read_size fndecl 0 62910 NULL
142288 +disable_so_create_cq_fndecl_62912 create_cq fndecl 0 62912 NULL
142289 +disable_so_acpi_pci_link_get_possible_fndecl_62913 acpi_pci_link_get_possible fndecl 0 62913 NULL
142290 +disable_so_buflen_xdr_buf_62914 buflen xdr_buf 0 62914 NULL
142291 +disable_so_r100_cs_track_check_fndecl_62916 r100_cs_track_check fndecl 0 62916 NULL
142292 +disable_so_inode_init_always_fndecl_62922 inode_init_always fndecl 0 62922 NULL
142293 +disable_so_ocfs2_grab_eof_pages_fndecl_62928 ocfs2_grab_eof_pages fndecl 0 62928 NULL
142294 +disable_so_magellan_connect_fndecl_62929 magellan_connect fndecl 0 62929 NULL
142295 +disable_so_ext4_xattr_ibody_get_fndecl_62931 ext4_xattr_ibody_get fndecl 0 62931 NULL
142296 +disable_so_ubi_scan_fastmap_fndecl_62933 ubi_scan_fastmap fndecl 0 62933 NULL
142297 +disable_so_ext2_get_acl_fndecl_62936 ext2_get_acl fndecl 0 62936 NULL
142298 +disable_so_iwl_mvm_mac_ctxt_changed_fndecl_62943 iwl_mvm_mac_ctxt_changed fndecl 0 62943 NULL
142299 +disable_so_vbackporch_v4l2_bt_timings_62951 vbackporch v4l2_bt_timings 0 62951 NULL
142300 +disable_so___logfs_write_buf_fndecl_62964 __logfs_write_buf fndecl 0 62964 NULL
142301 +disable_so_io_tlb_nslabs_vardecl_swiotlb_c_62972 io_tlb_nslabs vardecl_swiotlb.c 0 62972 NULL
142302 +disable_so_move_to_top_fndecl_62981 move_to_top fndecl 0 62981 NULL
142303 +disable_so_xfs_trans_reserve_quota_bydquots_fndecl_62982 xfs_trans_reserve_quota_bydquots fndecl 0 62982 NULL
142304 +disable_so_integrity_kernel_read_fndecl_62991 integrity_kernel_read fndecl 0 62991 NULL
142305 +disable_so_layout_mddev_62992 layout mddev 0 62992 NULL
142306 +disable_so_drbd_send_block_fndecl_62994 drbd_send_block fndecl 0 62994 NULL
142307 +disable_so_bnx2x_setup_tx_only_fndecl_62998 bnx2x_setup_tx_only fndecl 0 62998 NULL
142308 +disable_so_ocfs2_xattr_get_value_outside_fndecl_63000 ocfs2_xattr_get_value_outside fndecl 0 63000 NULL
142309 +disable_so_ethtool_get_rxfh_indir_fndecl_63007 ethtool_get_rxfh_indir fndecl 0 63007 NULL
142310 +disable_so_get_rsb_struct_fndecl_63014 get_rsb_struct fndecl 0 63014 NULL
142311 +disable_so_mmio_size_controller_63024 mmio_size controller 0 63024 NULL
142312 +disable_so_r6040_init_one_fndecl_63026 r6040_init_one fndecl 0 63026 NULL
142313 +disable_so_ttm_bo_validate_fndecl_63027 ttm_bo_validate fndecl 0 63027 NULL
142314 +disable_so_alloc_irq_from_domain_fndecl_63028 alloc_irq_from_domain fndecl 0 63028 NULL
142315 +disable_so_kvm_vm_ioctl_assigned_device_fndecl_63032 kvm_vm_ioctl_assigned_device fndecl 0 63032 NULL
142316 +disable_so_sock_getbindtodevice_fndecl_63036 sock_getbindtodevice fndecl 0 63036 NULL nohasharray
142317 +disable_so_acpi_battery_update_retry_fndecl_63036 acpi_battery_update_retry fndecl 0 63036 &disable_so_sock_getbindtodevice_fndecl_63036
142318 +disable_so_i915_gem_execbuffer_relocate_entry_fndecl_63037 i915_gem_execbuffer_relocate_entry fndecl 0 63037 NULL
142319 +disable_so_add_early_maps_fndecl_63043 add_early_maps fndecl 0 63043 NULL
142320 +disable_so_build_free_segmap_fndecl_63049 build_free_segmap fndecl 0 63049 NULL
142321 +disable_so_lpfc_init_active_sgl_array_fndecl_63056 lpfc_init_active_sgl_array fndecl 0 63056 NULL
142322 +disable_so_snd_seq_fifo_event_in_fndecl_63057 snd_seq_fifo_event_in fndecl 0 63057 NULL
142323 +disable_so_nr_perf_branch_stack_63058 nr perf_branch_stack 0 63058 NULL
142324 +disable_so_do_unlock_fndecl_63060 do_unlock fndecl 0 63060 NULL
142325 +disable_so_prev_algo_r5conf_63075 prev_algo r5conf 0 63075 NULL
142326 +disable_so_nfc_hci_execute_cmd_fndecl_63097 nfc_hci_execute_cmd fndecl 0 63097 NULL
142327 +disable_so_vmbus_post_msg_fndecl_63100 vmbus_post_msg fndecl 0 63100 NULL
142328 +disable_so_pt3_init_all_demods_fndecl_63102 pt3_init_all_demods fndecl 0 63102 NULL
142329 +disable_so_ipmi_bmc_register_fndecl_63111 ipmi_bmc_register fndecl 0 63111 NULL
142330 +disable_so_asus_platform_init_fndecl_63117 asus_platform_init fndecl 0 63117 NULL
142331 +disable_so_max_recv_sge_ib_qp_cap_63118 max_recv_sge ib_qp_cap 0 63118 NULL
142332 +disable_so_xillybus_myflush_fndecl_63126 xillybus_myflush fndecl 0 63126 NULL
142333 +disable_so_in_width_sh_vou_geometry_63131 in_width sh_vou_geometry 0 63131 NULL
142334 +disable_so_ixgbe_setup_tc_fndecl_63134 ixgbe_setup_tc fndecl 0 63134 NULL
142335 +disable_so_prism2_sta_send_mgmt_fndecl_63135 prism2_sta_send_mgmt fndecl 0 63135 NULL nohasharray
142336 +disable_so_wl1271_acx_conn_monit_params_fndecl_63135 wl1271_acx_conn_monit_params fndecl 0 63135 &disable_so_prism2_sta_send_mgmt_fndecl_63135
142337 +disable_so_xfs_trans_dqresv_fndecl_63147 xfs_trans_dqresv fndecl 0 63147 NULL
142338 +disable_so_xt_rateest_tg_checkentry_fndecl_63154 xt_rateest_tg_checkentry fndecl 0 63154 NULL
142339 +disable_so_st_press_buffer_postenable_fndecl_63156 st_press_buffer_postenable fndecl 0 63156 NULL
142340 +disable_so_inode_nilfs_dir_entry_63159 inode nilfs_dir_entry 0 63159 NULL
142341 +disable_so_is_state_visited_fndecl_63162 is_state_visited fndecl 0 63162 NULL
142342 +disable_so_decode_pool_fndecl_63174 decode_pool fndecl 0 63174 NULL
142343 +disable_so_jffs2_fill_scan_buf_fndecl_63175 jffs2_fill_scan_buf fndecl 0 63175 NULL
142344 +disable_so_ulist_add_fndecl_63177 ulist_add fndecl 0 63177 NULL
142345 +disable_so_stk_register_video_device_fndecl_63181 stk_register_video_device fndecl 0 63181 NULL
142346 +disable_so_cache_request_fndecl_63187 cache_request fndecl 0 63187 NULL
142347 +disable_so_csums_alg_len_net_conf_63190 csums_alg_len net_conf 0 63190 NULL
142348 +disable_so_at76_init_new_device_fndecl_63195 at76_init_new_device fndecl 0 63195 NULL
142349 +disable_so_hash_netportnet4_add_fndecl_63205 hash_netportnet4_add fndecl 0 63205 NULL
142350 +disable_so_mwl8k_cmd_rf_antenna_fndecl_63217 mwl8k_cmd_rf_antenna fndecl 0 63217 NULL
142351 +disable_so_cx88_alsa_dma_map_fndecl_63222 cx88_alsa_dma_map fndecl 0 63222 NULL
142352 +disable_so_sizeimage_emmaprp_q_data_63224 sizeimage emmaprp_q_data 0 63224 NULL
142353 +disable_so_ca91cx42_probe_fndecl_63225 ca91cx42_probe fndecl 0 63225 NULL
142354 +disable_so_xfs_qm_vop_chown_reserve_fndecl_63235 xfs_qm_vop_chown_reserve fndecl 0 63235 NULL
142355 +disable_so_wacom_allocate_inputs_fndecl_63237 wacom_allocate_inputs fndecl 0 63237 NULL
142356 +disable_so_ufs_alloccg_block_fndecl_63239 ufs_alloccg_block fndecl 0 63239 NULL
142357 +disable_so_broadsheet_spiflash_read_byte_fndecl_63240 broadsheet_spiflash_read_byte fndecl 0 63240 NULL nohasharray
142358 +disable_so_qt2_setup_urbs_fndecl_63240 qt2_setup_urbs fndecl 0 63240 &disable_so_broadsheet_spiflash_read_byte_fndecl_63240
142359 +disable_so___memblock_find_range_bottom_up_fndecl_63241 __memblock_find_range_bottom_up fndecl 0 63241 NULL
142360 +disable_so_request_resource_fndecl_63247 request_resource fndecl 0 63247 NULL
142361 +disable_so_dvb_ca_en50221_io_write_fndecl_63262 dvb_ca_en50221_io_write fndecl 0 63262 NULL
142362 +disable_so_xilly_map_single_pci_fndecl_63299 xilly_map_single_pci fndecl 0 63299 NULL
142363 +disable_so_snd_intel8x0_ich_chip_cold_reset_fndecl_63300 snd_intel8x0_ich_chip_cold_reset fndecl 0 63300 NULL
142364 +disable_so_cx25821_risc_databuffer_audio_fndecl_63304 cx25821_risc_databuffer_audio fndecl 0 63304 NULL
142365 +disable_so_nx_p3_nic_add_mac_fndecl_63307 nx_p3_nic_add_mac fndecl 0 63307 NULL
142366 +disable_so_uwb_rc_get_ie_fndecl_63319 uwb_rc_get_ie fndecl 0 63319 NULL
142367 +disable_so_ia_cbr_setup_fndecl_63339 ia_cbr_setup fndecl 0 63339 NULL
142368 +disable_so_snd_opl3_set_voice_fndecl_63350 snd_opl3_set_voice fndecl 0 63350 NULL
142369 +disable_so_alloc_thread_groups_fndecl_63354 alloc_thread_groups fndecl 0 63354 NULL
142370 +disable_so_x_zoran_overlay_settings_63359 x zoran_overlay_settings 0 63359 NULL
142371 +disable_so_sys_capset_fndecl_63368 sys_capset fndecl 0 63368 NULL
142372 +disable_so_snd_seq_pool_init_fndecl_63370 snd_seq_pool_init fndecl 0 63370 NULL
142373 +disable_so_start_ms350_cam_fndecl_63372 start_ms350_cam fndecl 0 63372 NULL
142374 +disable_so_iwl_mvm_send_proto_offload_fndecl_63376 iwl_mvm_send_proto_offload fndecl 0 63376 NULL
142375 +disable_so_mwifiex_cmd_cfg_data_fndecl_63397 mwifiex_cmd_cfg_data fndecl 0 63397 NULL
142376 +disable_so_drm_ht_just_insert_please_fndecl_63400 drm_ht_just_insert_please fndecl 0 63400 NULL
142377 +disable_so_e820_end_pfn_fndecl_63402 e820_end_pfn fndecl 0 63402 NULL
142378 +disable_so__drbd_no_send_page_fndecl_63409 _drbd_no_send_page fndecl 0 63409 NULL
142379 +disable_so_acpi_bus_get_status_fndecl_63418 acpi_bus_get_status fndecl 0 63418 NULL
142380 +disable_so_rbd_header_from_disk_fndecl_63419 rbd_header_from_disk fndecl 0 63419 NULL
142381 +disable_so_i2c_hid_hwreset_fndecl_63421 i2c_hid_hwreset fndecl 0 63421 NULL
142382 +disable_so_setup_conf_fndecl_63426 setup_conf fndecl 0 63426 NULL
142383 +disable_so_pm8001_chip_set_nvmd_req_fndecl_63427 pm8001_chip_set_nvmd_req fndecl 0 63427 NULL
142384 +disable_so_fuse_notify_delete_fndecl_63431 fuse_notify_delete fndecl 0 63431 NULL
142385 +disable_so_max_send_wr_ib_qp_cap_63450 max_send_wr ib_qp_cap 0 63450 NULL
142386 +disable_so_xfs_bmap_del_extent_fndecl_63451 xfs_bmap_del_extent fndecl 0 63451 NULL
142387 +disable_so_eeepc_acpi_add_fndecl_63456 eeepc_acpi_add fndecl 0 63456 NULL
142388 +disable_so_c_width_g2d_frame_63459 c_width g2d_frame 0 63459 NULL
142389 +disable_so_kxtj9_verify_fndecl_63462 kxtj9_verify fndecl 0 63462 NULL nohasharray
142390 +disable_so_b43legacy_pio_init_fndecl_63462 b43legacy_pio_init fndecl 0 63462 &disable_so_kxtj9_verify_fndecl_63462
142391 +disable_so___ieee80211_start_scan_fndecl_63465 __ieee80211_start_scan fndecl 0 63465 NULL
142392 +disable_so_msb_read_bad_block_table_fndecl_63470 msb_read_bad_block_table fndecl 0 63470 NULL
142393 +disable_so_alloc_4k_fndecl_63471 alloc_4k fndecl 0 63471 NULL
142394 +disable_so___bm_find_next_fndecl_63479 __bm_find_next fndecl 0 63479 NULL nohasharray
142395 +disable_so_amradio_set_freq_fndecl_63479 amradio_set_freq fndecl 0 63479 &disable_so___bm_find_next_fndecl_63479
142396 +disable_so_sctp_setsockopt_active_key_fndecl_63480 sctp_setsockopt_active_key fndecl 0 63480 NULL
142397 +disable_so_width_v4l2_pix_format_63491 width v4l2_pix_format 0 63491 NULL
142398 +disable_so_usb_keene_probe_fndecl_63493 usb_keene_probe fndecl 0 63493 NULL
142399 +disable_so_init_pmc551_fndecl_63495 init_pmc551 fndecl 0 63495 NULL
142400 +disable_so_if_ioctl_fndecl_63505 if_ioctl fndecl 0 63505 NULL
142401 +disable_so_i915_l3_write_fndecl_63507 i915_l3_write fndecl 0 63507 NULL
142402 +disable_so_pch_gbe_up_fndecl_63510 pch_gbe_up fndecl 0 63510 NULL
142403 +disable_so_xfs_rtfree_range_fndecl_63511 xfs_rtfree_range fndecl 0 63511 NULL
142404 +disable_so_dev_mc_add_global_fndecl_63537 dev_mc_add_global fndecl 0 63537 NULL
142405 +disable_so___tty_buffer_request_room_fndecl_63543 __tty_buffer_request_room fndecl 0 63543 NULL
142406 +disable_so_tcp_sync_mss_fndecl_63561 tcp_sync_mss fndecl 0 63561 NULL
142407 +disable_so_acpi_register_lapic_fndecl_63568 acpi_register_lapic fndecl 0 63568 NULL nohasharray
142408 +disable_so_key_payload_reserve_fndecl_63568 key_payload_reserve fndecl 0 63568 &disable_so_acpi_register_lapic_fndecl_63568
142409 +disable_so_sctp_setsockopt_del_key_fndecl_63571 sctp_setsockopt_del_key fndecl 0 63571 NULL
142410 +disable_so_ide_raw_taskfile_fndecl_63584 ide_raw_taskfile fndecl 0 63584 NULL
142411 +disable_so_picolcd_fb_reset_fndecl_63585 picolcd_fb_reset fndecl 0 63585 NULL nohasharray
142412 +disable_so_cit_get_packet_size_fndecl_63585 cit_get_packet_size fndecl 0 63585 &disable_so_picolcd_fb_reset_fndecl_63585
142413 +disable_so_snd_pcm_plug_alloc_fndecl_63600 snd_pcm_plug_alloc fndecl 0 63600 NULL
142414 +disable_so_xhci_queue_bulk_tx_fndecl_63642 xhci_queue_bulk_tx fndecl 0 63642 NULL
142415 +disable_so_ip_mc_msfilter_fndecl_63646 ip_mc_msfilter fndecl 0 63646 NULL
142416 +disable_so_vlan_ioctl_handler_fndecl_63648 vlan_ioctl_handler fndecl 0 63648 NULL
142417 +disable_so___cfg80211_set_encryption_fndecl_63649 __cfg80211_set_encryption fndecl 0 63649 NULL
142418 +disable_so_spaceball_connect_fndecl_63650 spaceball_connect fndecl 0 63650 NULL
142419 +disable_so_qlcnic_sriov_prepare_bc_hdr_fndecl_63651 qlcnic_sriov_prepare_bc_hdr fndecl 0 63651 NULL
142420 +disable_so_iwl_mvm_read_d3_sram_fndecl_63653 iwl_mvm_read_d3_sram fndecl 0 63653 NULL
142421 +disable_so_usbnet_generic_cdc_bind_fndecl_63655 usbnet_generic_cdc_bind fndecl 0 63655 NULL
142422 +disable_so_dlm_match_regions_fndecl_63678 dlm_match_regions fndecl 0 63678 NULL
142423 +disable_so___clk_enable_fndecl_63691 __clk_enable fndecl 0 63691 NULL
142424 +disable_so___iio_add_chan_devattr_fndecl_63697 __iio_add_chan_devattr fndecl 0 63697 NULL
142425 +disable_so_trinity_dpm_init_fndecl_63703 trinity_dpm_init fndecl 0 63703 NULL
142426 +disable_so_do_qib_user_sdma_queue_create_fndecl_63705 do_qib_user_sdma_queue_create fndecl 0 63705 NULL
142427 +disable_so_owner_snd_ctl_elem_info_63711 owner snd_ctl_elem_info 0 63711 NULL
142428 +disable_so_wl1251_acx_sleep_auth_fndecl_63727 wl1251_acx_sleep_auth fndecl 0 63727 NULL
142429 +disable_so_osd_vis_h_yuv_playback_info_63734 osd_vis_h yuv_playback_info 0 63734 NULL
142430 +disable_so_get_mergeable_buf_len_fndecl_63736 get_mergeable_buf_len fndecl 0 63736 NULL
142431 +disable_so_fb_copy_cmap_fndecl_63740 fb_copy_cmap fndecl 0 63740 NULL nohasharray
142432 +disable_so_drm_get_pci_dev_fndecl_63740 drm_get_pci_dev fndecl 0 63740 &disable_so_fb_copy_cmap_fndecl_63740
142433 +disable_so_wear_leveling_worker_fndecl_63749 wear_leveling_worker fndecl 0 63749 NULL nohasharray
142434 +disable_so_wl12xx_acx_mem_cfg_fndecl_63749 wl12xx_acx_mem_cfg fndecl 0 63749 &disable_so_wear_leveling_worker_fndecl_63749
142435 +disable_so_memstick_set_rw_addr_fndecl_63757 memstick_set_rw_addr fndecl 0 63757 NULL
142436 +disable_so_xfs_qm_dqalloc_fndecl_63762 xfs_qm_dqalloc fndecl 0 63762 NULL
142437 +disable_so_em28xx_write_regs_fndecl_63775 em28xx_write_regs fndecl 0 63775 NULL
142438 +disable_so_nl80211_dump_wiphy_parse_fndecl_63776 nl80211_dump_wiphy_parse fndecl 0 63776 NULL
142439 +disable_so_nilfs_sysfs_create_superblock_group_fndecl_63793 nilfs_sysfs_create_superblock_group fndecl 0 63793 NULL
142440 +disable_so_wl_inform_ibss_fndecl_63802 wl_inform_ibss fndecl 0 63802 NULL
142441 +disable_so_sys_recvmmsg_fndecl_63810 sys_recvmmsg fndecl 0 63810 NULL
142442 +disable_so_i40e_vc_send_msg_to_vf_fndecl_63818 i40e_vc_send_msg_to_vf fndecl 0 63818 NULL
142443 +disable_so_len_extent_map_63823 len extent_map 0 63823 NULL
142444 +disable_so_rpipe_aim_fndecl_63832 rpipe_aim fndecl 0 63832 NULL
142445 +disable_so_parse_subpart_fndecl_63835 parse_subpart fndecl 0 63835 NULL
142446 +disable_so_nfs_compare_remount_data_fndecl_63841 nfs_compare_remount_data fndecl 0 63841 NULL nohasharray
142447 +disable_so_dlm_release_lockspace_fndecl_63841 dlm_release_lockspace fndecl 0 63841 &disable_so_nfs_compare_remount_data_fndecl_63841
142448 +disable_so_proc_dostring_fndecl_63843 proc_dostring fndecl 0 63843 NULL
142449 +disable_so_bcmgenet_init_dma_fndecl_63850 bcmgenet_init_dma fndecl 0 63850 NULL
142450 +disable_so_ufshcd_dev_cmd_completion_fndecl_63859 ufshcd_dev_cmd_completion fndecl 0 63859 NULL
142451 +disable_so_smscore_gpio_get_level_fndecl_63872 smscore_gpio_get_level fndecl 0 63872 NULL
142452 +disable_so_threads_start_fndecl_63880 threads_start fndecl 0 63880 NULL
142453 +disable_so_kvm_vm_ioctl_set_msix_nr_fndecl_63891 kvm_vm_ioctl_set_msix_nr fndecl 0 63891 NULL
142454 +disable_so_ubifs_tnc_read_node_fndecl_63892 ubifs_tnc_read_node fndecl 0 63892 NULL
142455 +disable_so_dvb_usb_adapter_stream_init_fndecl_63898 dvb_usb_adapter_stream_init fndecl 0 63898 NULL
142456 +disable_so_ext4_do_update_inode_fndecl_63900 ext4_do_update_inode fndecl 0 63900 NULL
142457 +disable_so_ppp_register_compressor_fndecl_63907 ppp_register_compressor fndecl 0 63907 NULL
142458 +disable_so_gfs2_statfs_slow_fndecl_63913 gfs2_statfs_slow fndecl 0 63913 NULL
142459 +disable_so_iwl_mvm_send_cmd_fndecl_63918 iwl_mvm_send_cmd fndecl 0 63918 NULL nohasharray
142460 +disable_so_snd_pcm_hw_constraint_integer_fndecl_63918 snd_pcm_hw_constraint_integer fndecl 0 63918 &disable_so_iwl_mvm_send_cmd_fndecl_63918
142461 +disable_so_wl1251_acx_ac_cfg_fndecl_63926 wl1251_acx_ac_cfg fndecl 0 63926 NULL
142462 +disable_so_send_vector_fndecl_63929 send_vector fndecl 0 63929 NULL
142463 +disable_so_si_dpm_init_fndecl_63933 si_dpm_init fndecl 0 63933 NULL
142464 +disable_so_falcon_mtd_probe_fndecl_63937 falcon_mtd_probe fndecl 0 63937 NULL
142465 +disable_so_user_dlm_cluster_lock_fndecl_63948 user_dlm_cluster_lock fndecl 0 63948 NULL
142466 +disable_so_pvr2_send_request_fndecl_63959 pvr2_send_request fndecl 0 63959 NULL
142467 +disable_so_smsc95xx_suspend_fndecl_63965 smsc95xx_suspend fndecl 0 63965 NULL
142468 +disable_so_init_x25_asy_fndecl_63967 init_x25_asy fndecl 0 63967 NULL
142469 +disable_so_mxuport_set_termios_flow_fndecl_63980 mxuport_set_termios_flow fndecl 0 63980 NULL
142470 +disable_so_fallible_matches_name_fndecl_63984 fallible_matches_name fndecl 0 63984 NULL
142471 +disable_so_pvr2_send_request_ex_fndecl_64004 pvr2_send_request_ex fndecl 0 64004 NULL
142472 +disable_so_pinctrl_register_map_fndecl_64010 pinctrl_register_map fndecl 0 64010 NULL
142473 +disable_so_snd_midi_event_decode_fndecl_64015 snd_midi_event_decode fndecl 0 64015 NULL
142474 +disable_so_gt683r_mode_set_fndecl_64018 gt683r_mode_set fndecl 0 64018 NULL
142475 +disable_so_setup_w6692_fndecl_64022 setup_w6692 fndecl 0 64022 NULL
142476 +disable_so_dpm_sysfs_add_fndecl_64023 dpm_sysfs_add fndecl 0 64023 NULL
142477 +disable_so_usblp_rtest_fndecl_64026 usblp_rtest fndecl 0 64026 NULL
142478 +disable_so___kvm_set_memory_region_fndecl_64033 __kvm_set_memory_region fndecl 0 64033 NULL
142479 +disable_so_xdr_partial_copy_from_skb_fndecl_64046 xdr_partial_copy_from_skb fndecl 0 64046 NULL
142480 +disable_so_rtc_set_time_fndecl_64057 rtc_set_time fndecl 0 64057 NULL
142481 +disable_so_ext4_xattr_block_set_fndecl_64060 ext4_xattr_block_set fndecl 0 64060 NULL
142482 +disable_so_add_port_fndecl_64075 add_port fndecl 0 64075 NULL nohasharray
142483 +disable_so_parse_weakblocks_fndecl_64075 parse_weakblocks fndecl 0 64075 &disable_so_add_port_fndecl_64075
142484 +disable_so_cea_mode_alternate_clock_fndecl_64078 cea_mode_alternate_clock fndecl 0 64078 NULL
142485 +disable_so_usbtouch_probe_fndecl_64082 usbtouch_probe fndecl 0 64082 NULL
142486 +disable_so_set_arg_fndecl_64091 set_arg fndecl 0 64091 NULL
142487 +disable_so_snd_device_register_all_fndecl_64100 snd_device_register_all fndecl 0 64100 NULL
142488 +disable_so_ubiblock_major_vardecl_block_c_64105 ubiblock_major vardecl_block.c 0 64105 NULL
142489 +disable_so_nvme_trans_unit_serial_page_fndecl_64108 nvme_trans_unit_serial_page fndecl 0 64108 NULL
142490 +disable_so_fc_copy_buffer_to_sglist_fndecl_64115 fc_copy_buffer_to_sglist fndecl 0 64115 NULL
142491 +disable_so_alloc_enc_pages_fndecl_64122 alloc_enc_pages fndecl 0 64122 NULL
142492 +disable_so_probe_docg4_fndecl_64123 probe_docg4 fndecl 0 64123 NULL
142493 +disable_so_mwifiex_ret_tx_rate_cfg_fndecl_64132 mwifiex_ret_tx_rate_cfg fndecl 0 64132 NULL
142494 +disable_so_gen_new_estimator_fndecl_64136 gen_new_estimator fndecl 0 64136 NULL
142495 +disable_so_carl9170_led_init_fndecl_64146 carl9170_led_init fndecl 0 64146 NULL
142496 +disable_so_do_rt_sigqueueinfo_fndecl_64147 do_rt_sigqueueinfo fndecl 0 64147 NULL
142497 +disable_so_vt_compat_ioctl_fndecl_64148 vt_compat_ioctl fndecl 0 64148 NULL
142498 +disable_so_evdev_open_fndecl_64154 evdev_open fndecl 0 64154 NULL
142499 +disable_so_max_gs_mthca_wq_64165 max_gs mthca_wq 0 64165 NULL
142500 +disable_so_xfs_bmapi_allocate_fndecl_64169 xfs_bmapi_allocate fndecl 0 64169 NULL
142501 +disable_so_process_pool_aeb_fndecl_64175 process_pool_aeb fndecl 0 64175 NULL
142502 +disable_so_snd_jack_new_fndecl_64177 snd_jack_new fndecl 0 64177 NULL
142503 +disable_so_snd_compr_next_track_fndecl_64178 snd_compr_next_track fndecl 0 64178 NULL
142504 +disable_so_nfcid1_len_nfc_target_64182 nfcid1_len nfc_target 0 64182 NULL
142505 +disable_so_bnx2x_sp_post_fndecl_64191 bnx2x_sp_post fndecl 0 64191 NULL
142506 +disable_so_bind_set_fndecl_64193 bind_set fndecl 0 64193 NULL
142507 +disable_so_ntb_setup_snb_msix_fndecl_64200 ntb_setup_snb_msix fndecl 0 64200 NULL
142508 +disable_so_ath6kl_wmi_pmparams_cmd_fndecl_64204 ath6kl_wmi_pmparams_cmd fndecl 0 64204 NULL
142509 +disable_so_vx_reset_chk_fndecl_64209 vx_reset_chk fndecl 0 64209 NULL
142510 +disable_so_st_set_options_fndecl_64214 st_set_options fndecl 0 64214 NULL
142511 +disable_so_at76_get_hw_config_fndecl_64216 at76_get_hw_config fndecl 0 64216 NULL
142512 +disable_so_acpi_parse_art_fndecl_64220 acpi_parse_art fndecl 0 64220 NULL
142513 +disable_so_exofs_sync_fs_fndecl_64229 exofs_sync_fs fndecl 0 64229 NULL nohasharray
142514 +disable_so_snd_ymfpci_playback_open_1_fndecl_64229 snd_ymfpci_playback_open_1 fndecl 0 64229 &disable_so_exofs_sync_fs_fndecl_64229
142515 +disable_so_acpi_get_device_data_fndecl_64241 acpi_get_device_data fndecl 0 64241 NULL
142516 +disable_so_gpio_tilt_polled_probe_fndecl_64251 gpio_tilt_polled_probe fndecl 0 64251 NULL
142517 +disable_so_send_key_to_dongle_fndecl_64254 send_key_to_dongle fndecl 0 64254 NULL
142518 +disable_so_inet6_addr_del_fndecl_64255 inet6_addr_del fndecl 0 64255 NULL
142519 +disable_so_ethtool_set_tunable_fndecl_64267 ethtool_set_tunable fndecl 0 64267 NULL
142520 +disable_so_smk_write_netlbladdr_fndecl_64270 smk_write_netlbladdr fndecl 0 64270 NULL
142521 +disable_so_dio_bio_complete_fndecl_64271 dio_bio_complete fndecl 0 64271 NULL
142522 +disable_so_denominator_v4l2_fract_64280 denominator v4l2_fract 0 64280 NULL
142523 +disable_so_btrfs_drop_subtree_fndecl_64285 btrfs_drop_subtree fndecl 0 64285 NULL
142524 +disable_so__dump_buf_data_order_vardecl_64288 _dump_buf_data_order vardecl 0 64288 NULL
142525 +disable_so_dbAllocNear_fndecl_64289 dbAllocNear fndecl 0 64289 NULL
142526 +disable_so_self_check_ec_hdr_fndecl_64307 self_check_ec_hdr fndecl 0 64307 NULL
142527 +disable_so_edac_pci_main_kobj_setup_fndecl_64309 edac_pci_main_kobj_setup fndecl 0 64309 NULL
142528 +disable_so___wa_xfer_setup_fndecl_64316 __wa_xfer_setup fndecl 0 64316 NULL
142529 +disable_so_setup_card_fndecl_64318 setup_card fndecl 0 64318 NULL
142530 +disable_so_amp_write_rem_assoc_frag_fndecl_64321 amp_write_rem_assoc_frag fndecl 0 64321 NULL
142531 +disable_so_t4_fw_upgrade_fndecl_64329 t4_fw_upgrade fndecl 0 64329 NULL
142532 +disable_so_ocfs2_reserve_suballoc_bits_fndecl_64346 ocfs2_reserve_suballoc_bits fndecl 0 64346 NULL
142533 +disable_so_asus_acpi_add_fndecl_64349 asus_acpi_add fndecl 0 64349 NULL
142534 +disable_so_bytesperline_au0828_dev_64350 bytesperline au0828_dev 0 64350 NULL
142535 +disable_so_r592_test_fifo_empty_fndecl_64351 r592_test_fifo_empty fndecl 0 64351 NULL
142536 +disable_so_release_lockspace_fndecl_64361 release_lockspace fndecl 0 64361 NULL
142537 +disable_so_snd_korg1212_create_fndecl_64369 snd_korg1212_create fndecl 0 64369 NULL
142538 +disable_so_self_check_ai_fndecl_64379 self_check_ai fndecl 0 64379 NULL
142539 +disable_so_sctp_outq_flush_fndecl_64382 sctp_outq_flush fndecl 0 64382 NULL nohasharray
142540 +disable_so_drm_modeset_lock_fndecl_64382 drm_modeset_lock fndecl 0 64382 &disable_so_sctp_outq_flush_fndecl_64382
142541 +disable_so_br_mdb_rehash_fndecl_64384 br_mdb_rehash fndecl 0 64384 NULL
142542 +disable_so_b43legacy_wireless_core_init_fndecl_64387 b43legacy_wireless_core_init fndecl 0 64387 NULL
142543 +disable_so_ocfs2_search_chain_fndecl_64396 ocfs2_search_chain fndecl 0 64396 NULL nohasharray
142544 +disable_so_i40e_setup_rx_descriptors_fndecl_64396 i40e_setup_rx_descriptors fndecl 0 64396 &disable_so_ocfs2_search_chain_fndecl_64396
142545 +disable_so__regmap_raw_write_fndecl_64399 _regmap_raw_write fndecl 0 64399 NULL
142546 +disable_so_oobretlen_mtd_oob_ops_64400 oobretlen mtd_oob_ops 0 64400 NULL
142547 +disable_so_secinfo_parse_fndecl_64403 secinfo_parse fndecl 0 64403 NULL nohasharray
142548 +disable_so_do_flash_read_fndecl_64403 do_flash_read fndecl 0 64403 &disable_so_secinfo_parse_fndecl_64403
142549 +disable_so_kvm_update_cpuid_fndecl_64418 kvm_update_cpuid fndecl 0 64418 NULL
142550 +disable_so_rocker_group_tbl_do_fndecl_64424 rocker_group_tbl_do fndecl 0 64424 NULL
142551 +disable_so_pcxhr_create_fndecl_64441 pcxhr_create fndecl 0 64441 NULL nohasharray
142552 +disable_so_rt2x00lib_probe_dev_fndecl_64441 rt2x00lib_probe_dev fndecl 0 64441 &disable_so_pcxhr_create_fndecl_64441
142553 +disable_so_send_write_chunks_fndecl_64466 send_write_chunks fndecl 0 64466 NULL
142554 +disable_so_mlx4_zone_add_one_fndecl_64469 mlx4_zone_add_one fndecl 0 64469 NULL
142555 +disable_so_rsi_send_internal_mgmt_frame_fndecl_64470 rsi_send_internal_mgmt_frame fndecl 0 64470 NULL
142556 +disable_so_stex_ss_handshake_fndecl_64476 stex_ss_handshake fndecl 0 64476 NULL
142557 +disable_so_pcidev_init_fndecl_64478 pcidev_init fndecl 0 64478 NULL
142558 +disable_so_snd_i2c_bus_create_fndecl_64481 snd_i2c_bus_create fndecl 0 64481 NULL
142559 +disable_so_transport_header_sk_buff_64483 transport_header sk_buff 0 64483 NULL
142560 +disable_so_xen_bind_pirq_gsi_to_irq_fndecl_64493 xen_bind_pirq_gsi_to_irq fndecl 0 64493 NULL
142561 +disable_so_fill_board_specific_data_fndecl_64494 fill_board_specific_data fndecl 0 64494 NULL nohasharray
142562 +disable_so_radeon_cp_dispatch_texture_fndecl_64494 radeon_cp_dispatch_texture fndecl 0 64494 &disable_so_fill_board_specific_data_fndecl_64494
142563 +disable_so_setup_ntlmv2_rsp_fndecl_64501 setup_ntlmv2_rsp fndecl 0 64501 NULL
142564 +disable_so_brcmf_msgbuf_flowring_create_fndecl_64503 brcmf_msgbuf_flowring_create fndecl 0 64503 NULL
142565 +disable_so_nci_request_fndecl_64508 nci_request fndecl 0 64508 NULL
142566 +disable_so_fw_get_filesystem_firmware_fndecl_64510 fw_get_filesystem_firmware fndecl 0 64510 NULL
142567 +disable_so_insize_cros_ec_command_64521 insize cros_ec_command 0 64521 NULL
142568 +disable_so_ath6kl_upload_otp_fndecl_64533 ath6kl_upload_otp fndecl 0 64533 NULL nohasharray
142569 +disable_so_lpfc_sli_hbq_setup_fndecl_64533 lpfc_sli_hbq_setup fndecl 0 64533 &disable_so_ath6kl_upload_otp_fndecl_64533
142570 +disable_so_gp2ap020a00f_alter_opmode_fndecl_64535 gp2ap020a00f_alter_opmode fndecl 0 64535 NULL
142571 +disable_so_osd_probe_fndecl_64537 osd_probe fndecl 0 64537 NULL
142572 +disable_so_create_loopback_mixing_ctl_fndecl_64542 create_loopback_mixing_ctl fndecl 0 64542 NULL
142573 +disable_so_acpi_video_bus_check_fndecl_64548 acpi_video_bus_check fndecl 0 64548 NULL
142574 +disable_so_xfs_zero_last_block_fndecl_64560 xfs_zero_last_block fndecl 0 64560 NULL
142575 +disable_so_netlbl_cfg_unlbl_map_add_fndecl_64561 netlbl_cfg_unlbl_map_add fndecl 0 64561 NULL
142576 +disable_so_snd_emu10k1x_playback_open_fndecl_64577 snd_emu10k1x_playback_open fndecl 0 64577 NULL
142577 +disable_so_radeon_fence_wait_fndecl_64584 radeon_fence_wait fndecl 0 64584 NULL
142578 +disable_so_smsdvb_hotplug_fndecl_64602 smsdvb_hotplug fndecl 0 64602 NULL
142579 +disable_so_check_array_args_fndecl_64623 check_array_args fndecl 0 64623 NULL
142580 +disable_so_objio_alloc_io_state_fndecl_64631 objio_alloc_io_state fndecl 0 64631 NULL
142581 +disable_so_create_bbt_fndecl_64638 create_bbt fndecl 0 64638 NULL
142582 +disable_so_idx_ieee80211_tx_rate_64646 idx ieee80211_tx_rate 0 64646 NULL
142583 +disable_so_add_sw_ctl_fndecl_64655 add_sw_ctl fndecl 0 64655 NULL
142584 +disable_so_radeon_cp_texture_fndecl_64659 radeon_cp_texture fndecl 0 64659 NULL
142585 +disable_so_nr_del_node_fndecl_64666 nr_del_node fndecl 0 64666 NULL
142586 +disable_so_snd_ice1712_value_init_fndecl_64667 snd_ice1712_value_init fndecl 0 64667 NULL
142587 +disable_so_oiap_fndecl_64675 oiap fndecl 0 64675 NULL
142588 +disable_so_vmw_present_ioctl_fndecl_64678 vmw_present_ioctl fndecl 0 64678 NULL
142589 +disable_so_mapbase_uart_port_64681 mapbase uart_port 0 64681 NULL
142590 +disable_so_hdcs_probe_1x00_fndecl_64683 hdcs_probe_1x00 fndecl 0 64683 NULL
142591 +disable_so_atk_probe_if_fndecl_64724 atk_probe_if fndecl 0 64724 NULL
142592 +disable_so_raid_disk_mdp_device_descriptor_s_64762 raid_disk mdp_device_descriptor_s 0 64762 NULL nohasharray
142593 +disable_so_CalcNTLMv2_response_fndecl_64762 CalcNTLMv2_response fndecl 0 64762 &disable_so_raid_disk_mdp_device_descriptor_s_64762
142594 +disable_so_CIFSTCon_fndecl_64764 CIFSTCon fndecl 0 64764 NULL
142595 +disable_so_wl1271_cmd_test_fndecl_64770 wl1271_cmd_test fndecl 0 64770 NULL
142596 +disable_so_intel_overlay_on_fndecl_64786 intel_overlay_on fndecl 0 64786 NULL
142597 +disable_so_ssb_pcmcia_init_fndecl_64792 ssb_pcmcia_init fndecl 0 64792 NULL
142598 +disable_so_reg_set_rd_user_fndecl_64803 reg_set_rd_user fndecl 0 64803 NULL
142599 +disable_so_mtd_block_isbad_fndecl_64804 mtd_block_isbad fndecl 0 64804 NULL
142600 +disable_so_hub_set_address_fndecl_64806 hub_set_address fndecl 0 64806 NULL
142601 +disable_so_wl1251_acx_mem_cfg_fndecl_64809 wl1251_acx_mem_cfg fndecl 0 64809 NULL
142602 +disable_so_ocfs2_xattr_index_block_find_fndecl_64835 ocfs2_xattr_index_block_find fndecl 0 64835 NULL
142603 +disable_so_insertrule_fndecl_64838 insertrule fndecl 0 64838 NULL
142604 +disable_so_left_margin_fb_videomode_64866 left_margin fb_videomode 0 64866 NULL
142605 +disable_so_port100_tg_configure_hw_fndecl_64877 port100_tg_configure_hw fndecl 0 64877 NULL
142606 +disable_so_tx_max_frame_ntb_transport_qp_64878 tx_max_frame ntb_transport_qp 0 64878 NULL
142607 +disable_so_rpm_callback_fndecl_64879 rpm_callback fndecl 0 64879 NULL
142608 +disable_so_snd_intel8x0_ali_chip_init_fndecl_64882 snd_intel8x0_ali_chip_init fndecl 0 64882 NULL
142609 +disable_so_loop_info64_to_old_fndecl_64884 loop_info64_to_old fndecl 0 64884 NULL
142610 +disable_so_vfs_listxattr_fndecl_64885 vfs_listxattr fndecl 0 64885 NULL
142611 +disable_so_uwb_rc_vcmd_fndecl_64886 uwb_rc_vcmd fndecl 0 64886 NULL
142612 +disable_so_snd_pcm_hw_param_max_fndecl_64887 snd_pcm_hw_param_max fndecl 0 64887 NULL
142613 +disable_so_snd_cs8427_reg_write_fndecl_64907 snd_cs8427_reg_write fndecl 0 64907 NULL
142614 +disable_so_ocfs2_extend_trans_fndecl_64911 ocfs2_extend_trans fndecl 0 64911 NULL
142615 +disable_so_samsung_leds_init_fndecl_64916 samsung_leds_init fndecl 0 64916 NULL
142616 +disable_so_nvkm_subdev_create__fndecl_64924 nvkm_subdev_create_ fndecl 0 64924 NULL
142617 +disable_so_set_monitor_gain_fndecl_64927 set_monitor_gain fndecl 0 64927 NULL
142618 +disable_so_sq_max_wqes_per_wr_mlx4_ib_qp_64938 sq_max_wqes_per_wr mlx4_ib_qp 0 64938 NULL
142619 +disable_so_asus_wmi_debugfs_init_fndecl_64941 asus_wmi_debugfs_init fndecl 0 64941 NULL
142620 +disable_so_if_spi_init_card_fndecl_64943 if_spi_init_card fndecl 0 64943 NULL
142621 +disable_so_pci_iov_virtfn_bus_fndecl_64949 pci_iov_virtfn_bus fndecl 0 64949 NULL
142622 +disable_so_status_spi_message_64956 status spi_message 0 64956 NULL
142623 +disable_so_uart_register_driver_fndecl_64969 uart_register_driver fndecl 0 64969 NULL
142624 +disable_so_get_protocol_version_fndecl_64972 get_protocol_version fndecl 0 64972 NULL
142625 +disable_so_mwifiex_cfg80211_set_wiphy_params_fndecl_64974 mwifiex_cfg80211_set_wiphy_params fndecl 0 64974 NULL
142626 +disable_so_drm_global_item_ref_fndecl_64982 drm_global_item_ref fndecl 0 64982 NULL
142627 +disable_so_rp2_alloc_ports_fndecl_64987 rp2_alloc_ports fndecl 0 64987 NULL
142628 +disable_so_ch_gstatus_fndecl_64989 ch_gstatus fndecl 0 64989 NULL
142629 +disable_so_drbd_nla_parse_nested_fndecl_65001 drbd_nla_parse_nested fndecl 0 65001 NULL
142630 +disable_so_wait_task_continued_fndecl_65017 wait_task_continued fndecl 0 65017 NULL
142631 +disable_so_tce_table_setparms_fndecl_65020 tce_table_setparms fndecl 0 65020 NULL
142632 +disable_so_wa_rpipes_create_fndecl_65021 wa_rpipes_create fndecl 0 65021 NULL
142633 +disable_so_dfs_file_write_fndecl_65023 dfs_file_write fndecl 0 65023 NULL
142634 +disable_so_lpfc_create_bootstrap_mbox_fndecl_65030 lpfc_create_bootstrap_mbox fndecl 0 65030 NULL nohasharray
142635 +disable_so_drm_dp_payload_send_msg_fndecl_65030 drm_dp_payload_send_msg fndecl 0 65030 &disable_so_lpfc_create_bootstrap_mbox_fndecl_65030
142636 +disable_so_bitmap_load_fndecl_65032 bitmap_load fndecl 0 65032 NULL
142637 +disable_so_create_kernel_qp_fndecl_65035 create_kernel_qp fndecl 0 65035 NULL
142638 +disable_so_wcn36xx_dxe_alloc_ctl_blks_fndecl_65039 wcn36xx_dxe_alloc_ctl_blks fndecl 0 65039 NULL
142639 +disable_so_rtsx_pci_ms_issue_cmd_fndecl_65049 rtsx_pci_ms_issue_cmd fndecl 0 65049 NULL
142640 +disable_so_iommu_domain_set_attr_fndecl_65053 iommu_domain_set_attr fndecl 0 65053 NULL
142641 +disable_so_bus_add_driver_fndecl_65060 bus_add_driver fndecl 0 65060 NULL nohasharray
142642 +disable_so_snd_emu10k1_gpr_poke_fndecl_65060 snd_emu10k1_gpr_poke fndecl 0 65060 &disable_so_bus_add_driver_fndecl_65060
142643 +disable_so_smi_dvbsky_m88ds3103_fe_attach_fndecl_65075 smi_dvbsky_m88ds3103_fe_attach fndecl 0 65075 NULL
142644 +disable_so_xfs_growfs_rt_alloc_fndecl_65079 xfs_growfs_rt_alloc fndecl 0 65079 NULL nohasharray
142645 +disable_so_azx_create_fndecl_65079 azx_create fndecl 0 65079 &disable_so_xfs_growfs_rt_alloc_fndecl_65079
142646 +disable_so_xfs_getbmap_fndecl_65081 xfs_getbmap fndecl 0 65081 NULL
142647 +disable_so_ieee802154_hdr_push_fndecl_65100 ieee802154_hdr_push fndecl 0 65100 NULL
142648 +disable_so_tg3_nvram_read_using_eeprom_fndecl_65103 tg3_nvram_read_using_eeprom fndecl 0 65103 NULL
142649 +disable_so_nilfs_sufile_alloc_fndecl_65109 nilfs_sufile_alloc fndecl 0 65109 NULL nohasharray
142650 +disable_so_mlx4_mtt_init_fndecl_65109 mlx4_mtt_init fndecl 0 65109 &disable_so_nilfs_sufile_alloc_fndecl_65109
142651 +disable_so_mega_n_to_m_fndecl_65113 mega_n_to_m fndecl 0 65113 NULL
142652 +disable_so_fat_alloc_new_dir_fndecl_65115 fat_alloc_new_dir fndecl 0 65115 NULL
142653 +disable_so_scrub_extent_for_parity_fndecl_65123 scrub_extent_for_parity fndecl 0 65123 NULL
142654 +disable_so_do_ip_setsockopt_fndecl_65135 do_ip_setsockopt fndecl 0 65135 NULL
142655 +disable_so_pm_connect_fndecl_65147 pm_connect fndecl 0 65147 NULL
142656 +disable_so_write_inode_fndecl_65151 write_inode fndecl 0 65151 NULL
142657 +disable_so_relocate_file_extent_cluster_fndecl_65163 relocate_file_extent_cluster fndecl 0 65163 NULL
142658 +disable_so_prism54_process_trap_helper_fndecl_65168 prism54_process_trap_helper fndecl 0 65168 NULL
142659 +disable_so_xfs_rtget_summary_fndecl_65179 xfs_rtget_summary fndecl 0 65179 NULL
142660 +disable_so_usb_gadget_get_string_fndecl_65180 usb_gadget_get_string fndecl 0 65180 NULL
142661 +disable_so_security_port_sid_fndecl_65190 security_port_sid fndecl 0 65190 NULL
142662 +disable_so_get_fdb_entries_fndecl_65199 get_fdb_entries fndecl 0 65199 NULL
142663 +disable_so_mpt_do_ioc_recovery_fndecl_65205 mpt_do_ioc_recovery fndecl 0 65205 NULL
142664 +disable_so_hpet_ioctl_common_fndecl_65206 hpet_ioctl_common fndecl 0 65206 NULL
142665 +disable_so_aper_size_radeon_mc_65212 aper_size radeon_mc 0 65212 NULL
142666 +disable_so_snd_ctl_elem_read_user_compat_fndecl_65218 snd_ctl_elem_read_user_compat fndecl 0 65218 NULL
142667 +disable_so_domain_context_mapping_fndecl_65225 domain_context_mapping fndecl 0 65225 NULL
142668 +disable_so_sci_rxfill_fndecl_65226 sci_rxfill fndecl 0 65226 NULL
142669 +disable_so_ocfs2_xattr_bucket_get_name_value_fndecl_65230 ocfs2_xattr_bucket_get_name_value fndecl 0 65230 NULL
142670 +disable_so_hidp_setup_input_fndecl_65233 hidp_setup_input fndecl 0 65233 NULL
142671 +disable_so_dbg_old_index_check_init_fndecl_65242 dbg_old_index_check_init fndecl 0 65242 NULL
142672 +disable_so_range_end_writeback_control_65245 range_end writeback_control 0 65245 NULL
142673 +disable_so_ubi_io_is_bad_fndecl_65260 ubi_io_is_bad fndecl 0 65260 NULL
142674 +disable_so_asus_acpi_init_fndecl_65265 asus_acpi_init fndecl 0 65265 NULL
142675 +disable_so_ubi_self_check_all_ff_fndecl_65268 ubi_self_check_all_ff fndecl 0 65268 NULL
142676 +disable_so_drm_debugfs_create_files_fndecl_65269 drm_debugfs_create_files fndecl 0 65269 NULL
142677 +disable_so_try_set_ext_ctrls_fndecl_65275 try_set_ext_ctrls fndecl 0 65275 NULL
142678 +disable_so_port_rme32_65291 port rme32 0 65291 NULL
142679 +disable_so_mwifiex_set_keyparamset_wep_fndecl_65293 mwifiex_set_keyparamset_wep fndecl 0 65293 NULL
142680 +disable_so_usb_stor_probe2_fndecl_65298 usb_stor_probe2 fndecl 0 65298 NULL
142681 +disable_so_txfifo_size_lpuart_port_65300 txfifo_size lpuart_port 0 65300 NULL
142682 +disable_so_split_item_fndecl_65304 split_item fndecl 0 65304 NULL
142683 +disable_so_radeon_fence_wait_seq_timeout_fndecl_65307 radeon_fence_wait_seq_timeout fndecl 0 65307 NULL
142684 +disable_so_nouveau_fbcon_init_fndecl_65311 nouveau_fbcon_init fndecl 0 65311 NULL
142685 +disable_so_sas_get_phy_attached_dev_fndecl_65316 sas_get_phy_attached_dev fndecl 0 65316 NULL
142686 +disable_so_max_pfn_vardecl_65317 max_pfn vardecl 0 65317 NULL
142687 +disable_so_em28xx_is_ac97_ready_fndecl_65319 em28xx_is_ac97_ready fndecl 0 65319 NULL
142688 +disable_so_do_commit_fndecl_65326 do_commit fndecl 0 65326 NULL
142689 +disable_so_iscsit_add_reject_cmd_fndecl_65339 iscsit_add_reject_cmd fndecl 0 65339 NULL
142690 +disable_so_pm2fb_probe_fndecl_65342 pm2fb_probe fndecl 0 65342 NULL
142691 +disable_so_ni_populate_voltage_value_fndecl_65346 ni_populate_voltage_value fndecl 0 65346 NULL
142692 +disable_so_wm_coeff_read_control_fndecl_65358 wm_coeff_read_control fndecl 0 65358 NULL
142693 +disable_so_wl1251_acx_tx_power_fndecl_65363 wl1251_acx_tx_power fndecl 0 65363 NULL
142694 +disable_so_drbd_send_command_fndecl_65377 drbd_send_command fndecl 0 65377 NULL
142695 +disable_so_ttusb_dec_start_iso_xfer_fndecl_65380 ttusb_dec_start_iso_xfer fndecl 0 65380 NULL
142696 +disable_so_cy_ioctl_fndecl_65384 cy_ioctl fndecl 0 65384 NULL
142697 +disable_so_bnx2_nvram_read_fndecl_65395 bnx2_nvram_read fndecl 0 65395 NULL
142698 +disable_so_wl1271_acx_rx_msdu_life_time_fndecl_65398 wl1271_acx_rx_msdu_life_time fndecl 0 65398 NULL
142699 +disable_so_brcmf_enable_bw40_2g_fndecl_65406 brcmf_enable_bw40_2g fndecl 0 65406 NULL
142700 +disable_so_bnx2x_read_fwinfo_fndecl_65420 bnx2x_read_fwinfo fndecl 0 65420 NULL
142701 +disable_so_fat_zeroed_cluster_fndecl_65422 fat_zeroed_cluster fndecl 0 65422 NULL
142702 +disable_so_free_bud_entry_65425 free bud_entry 0 65425 NULL
142703 +disable_so_lpfc_sli_hba_setup_fndecl_65429 lpfc_sli_hba_setup fndecl 0 65429 NULL
142704 +disable_so_gt683r_led_snd_msg_fndecl_65439 gt683r_led_snd_msg fndecl 0 65439 NULL
142705 +disable_so_hsc_ioctl_fndecl_65451 hsc_ioctl fndecl 0 65451 NULL
142706 +disable_so_snd_mixart_send_msg_fndecl_65453 snd_mixart_send_msg fndecl 0 65453 NULL
142707 +disable_so_sony_find_snc_handle_fndecl_65464 sony_find_snc_handle fndecl 0 65464 NULL nohasharray
142708 +disable_so_smsc75xx_set_rx_max_frame_length_fndecl_65464 smsc75xx_set_rx_max_frame_length fndecl 0 65464 &disable_so_sony_find_snc_handle_fndecl_65464 nohasharray
142709 +disable_so_cfg80211_sme_connect_fndecl_65464 cfg80211_sme_connect fndecl 0 65464 &disable_so_smsc75xx_set_rx_max_frame_length_fndecl_65464
142710 +disable_so_dspio_write_fndecl_65469 dspio_write fndecl 0 65469 NULL
142711 +disable_so_tr_connect_fndecl_65477 tr_connect fndecl 0 65477 NULL
142712 +disable_so_init_subports_fndecl_65497 init_subports fndecl 0 65497 NULL
142713 +disable_so_ccp_register_hmac_alg_fndecl_65501 ccp_register_hmac_alg fndecl 0 65501 NULL
142714 +disable_so_pt1_sync_fndecl_65509 pt1_sync fndecl 0 65509 NULL
142715 +disable_so_apei_exec_for_each_entry_fndecl_65510 apei_exec_for_each_entry fndecl 0 65510 NULL
142716 +disable_so_ath6kl_bmi_fast_download_fndecl_65522 ath6kl_bmi_fast_download fndecl 0 65522 NULL
142717 +disable_so___ext3_journal_get_write_access_fndecl_65530 __ext3_journal_get_write_access fndecl 0 65530 NULL
142718 +disable_so_tree_insert_fndecl_65531 tree_insert fndecl 0 65531 NULL nohasharray
142719 +disable_so_get_hub_status_fndecl_65531 get_hub_status fndecl 0 65531 &disable_so_tree_insert_fndecl_65531
142720 +disable_so_read_block_fndecl_65532 read_block fndecl 0 65532 NULL
142721 +disable_so_ipxitf_create_fndecl_65534 ipxitf_create fndecl 0 65534 NULL
142722 diff --git a/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh b/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh
142723 new file mode 100644
142724 index 0000000..be9724d
142725 --- /dev/null
142726 +++ b/tools/gcc/size_overflow_plugin/generate_size_overflow_hash.sh
142727 @@ -0,0 +1,103 @@
142728 +#!/bin/bash
142729 +
142730 +# This script generates the hash table (size_overflow_hash.h) for the size_overflow gcc plugin (size_overflow_plugin.c).
142731 +
142732 +header1="size_overflow_hash.h"
142733 +database="size_overflow_hash.data"
142734 +n=65536
142735 +hashtable_name="size_overflow_hash"
142736 +
142737 +usage() {
142738 +cat <<EOF
142739 +usage: $0 options
142740 +OPTIONS:
142741 + -h|--help help
142742 + -o header file
142743 + -d database file
142744 + -n hash array size
142745 + -s name of the hash table
142746 +EOF
142747 + return 0
142748 +}
142749 +
142750 +while true
142751 +do
142752 + case "$1" in
142753 + -h|--help) usage && exit 0;;
142754 + -n) n=$2; shift 2;;
142755 + -o) header1="$2"; shift 2;;
142756 + -d) database="$2"; shift 2;;
142757 + -s) hashtable_name="$2"; shift 2;;
142758 + --) shift 1; break ;;
142759 + *) break ;;
142760 + esac
142761 +done
142762 +
142763 +create_defines() {
142764 + for i in `seq 0 31`
142765 + do
142766 + echo -e "#define PARAM"$i" (1U << "$i")" >> "$header1"
142767 + done
142768 + echo >> "$header1"
142769 +}
142770 +
142771 +create_structs() {
142772 + rm -f "$header1"
142773 +
142774 + create_defines
142775 +
142776 + cat "$database" | while read data
142777 + do
142778 + data_array=($data)
142779 + struct_hash_name="${data_array[0]}"
142780 + funcn="${data_array[1]}"
142781 + context="${data_array[2]}"
142782 + params="${data_array[3]}"
142783 + next="${data_array[5]}"
142784 +
142785 + echo "const struct size_overflow_hash $struct_hash_name = {" >> "$header1"
142786 +
142787 + echo -e "\t.next\t= $next,\n\t.name\t= \"$funcn\",\n\t.context\t= \"$context\"," >> "$header1"
142788 + echo -en "\t.param\t= " >> "$header1"
142789 + line=
142790 + for param_num in ${params//-/ };
142791 + do
142792 + line="${line}PARAM"$param_num"|"
142793 + done
142794 +
142795 + echo -e "${line%?},\n};\n" >> "$header1"
142796 + done
142797 +}
142798 +
142799 +create_headers() {
142800 + echo "const struct size_overflow_hash * const $hashtable_name[$n] = {" >> "$header1"
142801 +}
142802 +
142803 +create_array_elements() {
142804 + index=0
142805 + grep -v "nohasharray" $database | sort -n -k 5 | while read data
142806 + do
142807 + data_array=($data)
142808 + i="${data_array[4]}"
142809 + hash="${data_array[0]}"
142810 + while [[ $index -lt $i ]]
142811 + do
142812 + echo -e "\t["$index"]\t= NULL," >> "$header1"
142813 + index=$(($index + 1))
142814 + done
142815 + index=$(($index + 1))
142816 + echo -e "\t["$i"]\t= &"$hash"," >> "$header1"
142817 + done
142818 + echo '};' >> $header1
142819 +}
142820 +
142821 +size_overflow_plugin_dir=`dirname $header1`
142822 +if [ "$size_overflow_plugin_dir" != '.' ]; then
142823 + mkdir -p "$size_overflow_plugin_dir" 2> /dev/null
142824 +fi
142825 +
142826 +create_structs
142827 +create_headers
142828 +create_array_elements
142829 +
142830 +exit 0
142831 diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
142832 new file mode 100644
142833 index 0000000..6c740a8
142834 --- /dev/null
142835 +++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
142836 @@ -0,0 +1,409 @@
142837 +/*
142838 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
142839 + * Licensed under the GPL v2, or (at your option) v3
142840 + *
142841 + * Homepage:
142842 + * https://github.com/ephox-gcc-plugins/size_overflow
142843 + *
142844 + * Documentation:
142845 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
142846 + *
142847 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
142848 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
142849 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
142850 + *
142851 + * Usage:
142852 + * $ make
142853 + * $ make run
142854 + */
142855 +
142856 +#include "size_overflow.h"
142857 +
142858 +// Data for the size_overflow asm stmt
142859 +struct asm_data {
142860 + // call or return stmt with our attributes
142861 + gimple target_stmt;
142862 + // def_stmt of the marked arg
142863 + gimple def_stmt;
142864 + // size_overflow asm rhs
142865 + tree input;
142866 + // the output (lhs) of the size_overflow asm is the marked arg
142867 + tree output;
142868 + // marked arg number (0 for return values)
142869 + unsigned int argnum;
142870 + // intentional mark type
142871 + enum intentional_mark intentional_mark;
142872 +};
142873 +
142874 +static void __unused print_asm_data(struct asm_data *asm_data)
142875 +{
142876 + fprintf(stderr, "-----------------------\nprint_asm_data:\n");
142877 +
142878 + fprintf(stderr, "def_stmt\n");
142879 + debug_gimple_stmt(asm_data->def_stmt);
142880 + fprintf(stderr, "target_stmt\n");
142881 + debug_gimple_stmt(asm_data->target_stmt);
142882 + fprintf(stderr, "output\n");
142883 + debug_tree(asm_data->output);
142884 + fprintf(stderr, "input\n");
142885 + debug_tree(asm_data->input);
142886 +}
142887 +
142888 +static const char *convert_mark_to_str(enum intentional_mark mark)
142889 +{
142890 + switch (mark) {
142891 + case MARK_NO:
142892 + return OK_ASM_STR;
142893 + case MARK_YES:
142894 + return YES_ASM_STR;
142895 + case MARK_END_INTENTIONAL:
142896 + return END_INTENTIONAL_ASM_STR;
142897 + case MARK_TURN_OFF:
142898 + return TURN_OFF_ASM_STR;
142899 + }
142900 + gcc_unreachable();
142901 +}
142902 +
142903 +static char *create_asm_comment(struct asm_data *asm_data, const char *mark_str)
142904 +{
142905 + const char *fn_name;
142906 + char *asm_comment;
142907 + unsigned int len;
142908 +
142909 + if (gimple_code(asm_data->target_stmt) == GIMPLE_RETURN)
142910 + fn_name = DECL_NAME_POINTER(current_function_decl);
142911 + else
142912 + fn_name = DECL_NAME_POINTER(gimple_call_fndecl(asm_data->target_stmt));
142913 +
142914 + len = asprintf(&asm_comment, "%s %s %u", mark_str, fn_name, asm_data->argnum);
142915 + gcc_assert(len > 0);
142916 +
142917 + return asm_comment;
142918 +}
142919 +
142920 +#if BUILDING_GCC_VERSION <= 4007
142921 +static VEC(tree, gc) *create_asm_io_list(tree string, tree io)
142922 +#else
142923 +static vec<tree, va_gc> *create_asm_io_list(tree string, tree io)
142924 +#endif
142925 +{
142926 + tree list;
142927 +#if BUILDING_GCC_VERSION <= 4007
142928 + VEC(tree, gc) *vec_list = NULL;
142929 +#else
142930 + vec<tree, va_gc> *vec_list = NULL;
142931 +#endif
142932 +
142933 + list = build_tree_list(NULL_TREE, string);
142934 + list = chainon(NULL_TREE, build_tree_list(list, io));
142935 +#if BUILDING_GCC_VERSION <= 4007
142936 + VEC_safe_push(tree, gc, vec_list, list);
142937 +#else
142938 + vec_safe_push(vec_list, list);
142939 +#endif
142940 + return vec_list;
142941 +}
142942 +
142943 +static void create_so_asm_stmt(struct asm_data *asm_data)
142944 +{
142945 + char *asm_comment;
142946 + const char *mark_str;
142947 + gasm *asm_stmt;
142948 + gimple_stmt_iterator gsi;
142949 + tree str_input, str_output;
142950 +#if BUILDING_GCC_VERSION <= 4007
142951 + VEC(tree, gc) *input = NULL, *output = NULL;
142952 +#else
142953 + vec<tree, va_gc> *input = NULL, *output = NULL;
142954 +#endif
142955 +
142956 + mark_str = convert_mark_to_str(asm_data->intentional_mark);
142957 + asm_comment = create_asm_comment(asm_data, mark_str);
142958 +
142959 + str_input = build_string(2, "0");
142960 + input = create_asm_io_list(str_input, asm_data->input);
142961 + str_output = build_string(4, "=rm");
142962 + output = create_asm_io_list(str_output, asm_data->output);
142963 +
142964 + asm_stmt = as_a_gasm(gimple_build_asm_vec(asm_comment, input, output, NULL, NULL));
142965 + gimple_asm_set_volatile(asm_stmt, true);
142966 +
142967 + gsi = gsi_for_stmt(asm_data->def_stmt);
142968 + gsi_insert_after(&gsi, asm_stmt, GSI_NEW_STMT);
142969 +
142970 + SSA_NAME_DEF_STMT(asm_data->output) = asm_stmt;
142971 +
142972 + free(asm_comment);
142973 +}
142974 +
142975 +static void check_size_overflow_asm(struct asm_data *asm_data)
142976 +{
142977 + enum intentional_mark old_intentional_mark = get_so_asm_type(asm_data->def_stmt);
142978 +
142979 + if (old_intentional_mark == asm_data->intentional_mark)
142980 + return;
142981 + if (asm_data->intentional_mark == MARK_NO)
142982 + return;
142983 +
142984 + print_intentional_mark(old_intentional_mark);
142985 + print_intentional_mark(asm_data->intentional_mark);
142986 + gcc_unreachable();
142987 +}
142988 +
142989 +static tree get_so_asm_output(struct asm_data *asm_data)
142990 +{
142991 + gimple stmt = asm_data->target_stmt;
142992 + unsigned int argnum = asm_data->argnum;
142993 +
142994 + switch (gimple_code(stmt)) {
142995 + case GIMPLE_RETURN:
142996 + gcc_assert(argnum == 0);
142997 + return gimple_return_retval(as_a_greturn(stmt));
142998 + case GIMPLE_CALL:
142999 + gcc_assert(argnum != 0);
143000 + gcc_assert(gimple_call_num_args(stmt) >= argnum);
143001 + return gimple_call_arg(stmt, argnum - 1);
143002 + default:
143003 + debug_gimple_stmt(stmt);
143004 + gcc_unreachable();
143005 + }
143006 +}
143007 +
143008 +static tree get_so_asm_input(struct asm_data *asm_data)
143009 +{
143010 + gassign *assign;
143011 + tree output_type, new_var;
143012 + gimple_stmt_iterator gsi;
143013 +
143014 + output_type = TREE_TYPE(asm_data->output);
143015 + new_var = create_new_var(output_type);
143016 +
143017 + assign = gimple_build_assign(new_var, asm_data->output);
143018 + gimple_assign_set_lhs(assign, make_ssa_name(new_var, assign));
143019 +
143020 + gsi = gsi_for_stmt(asm_data->target_stmt);
143021 + gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
143022 +
143023 + asm_data->def_stmt = assign;
143024 +
143025 + new_var = create_new_var(output_type);
143026 + asm_data->output = make_ssa_name(new_var, asm_data->target_stmt);
143027 +
143028 + return gimple_assign_lhs(assign);
143029 +}
143030 +
143031 +static void set_so_asm_input_target_stmt(struct asm_data *asm_data)
143032 +{
143033 + switch (gimple_code(asm_data->target_stmt)) {
143034 + case GIMPLE_CALL:
143035 + gimple_call_set_arg(asm_data->target_stmt, asm_data->argnum - 1, asm_data->output);
143036 + break;
143037 + case GIMPLE_RETURN:
143038 + gimple_return_set_retval(as_a_greturn(asm_data->target_stmt), asm_data->output);
143039 + break;
143040 + default:
143041 + debug_gimple_stmt(asm_data->target_stmt);
143042 + gcc_unreachable();
143043 + }
143044 +
143045 + update_stmt(asm_data->def_stmt);
143046 +}
143047 +
143048 +/* This is the gimple part of searching for a missing size_overflow attribute. If the intentional_overflow attribute type
143049 + * is of the right kind create the appropriate size_overflow asm stmts:
143050 + * __asm__("# size_overflow MARK_END_INTENTIONAL" : =rm" D.3344_8 : "0" cicus.4_16);
143051 + * __asm__("# size_overflow MARK_NO" : =rm" cicus.4_16 : "0" size_1(D));
143052 + */
143053 +static void insert_size_overflow_asm(gimple stmt, unsigned int argnum, enum intentional_mark intentional_mark)
143054 +{
143055 + struct asm_data asm_data;
143056 +
143057 + asm_data.target_stmt = stmt;
143058 + asm_data.argnum = argnum;
143059 + asm_data.intentional_mark = intentional_mark;
143060 +
143061 + asm_data.output = get_so_asm_output(&asm_data);
143062 + if (asm_data.output == NULL_TREE)
143063 + return;
143064 + if (is_gimple_constant(asm_data.output))
143065 + return;
143066 + if (skip_types(asm_data.output))
143067 + return;
143068 +
143069 + asm_data.def_stmt = get_def_stmt(asm_data.output);
143070 + if (is_size_overflow_asm(asm_data.def_stmt)) {
143071 + check_size_overflow_asm(&asm_data);
143072 + return;
143073 + }
143074 +
143075 + asm_data.input = get_so_asm_input(&asm_data);
143076 +
143077 + create_so_asm_stmt(&asm_data);
143078 + set_so_asm_input_target_stmt(&asm_data);
143079 +
143080 + update_stmt(asm_data.def_stmt);
143081 + update_stmt(asm_data.target_stmt);
143082 +}
143083 +
143084 +// Determine the correct arg index and arg and insert the asm stmt to mark the stmt.
143085 +static void insert_so_asm_by_so_attr(gimple stmt, unsigned int orig_argnum)
143086 +{
143087 + if (orig_argnum == 0 && gimple_code(stmt) == GIMPLE_RETURN) {
143088 + insert_size_overflow_asm(stmt, 0, MARK_NO);
143089 + return;
143090 + }
143091 +
143092 + if (orig_argnum != 0 && gimple_code(stmt) == GIMPLE_CALL)
143093 + insert_size_overflow_asm(stmt, orig_argnum, MARK_NO);
143094 +}
143095 +
143096 +// If a function arg or the return value is marked by the size_overflow attribute then set its index in the array.
143097 +static void set_argnum_attribute(const_tree attr, bool *argnums)
143098 +{
143099 + unsigned int argnum;
143100 + tree attr_value;
143101 +
143102 + gcc_assert(attr);
143103 + for (attr_value = TREE_VALUE(attr); attr_value; attr_value = TREE_CHAIN(attr_value)) {
143104 + argnum = (unsigned int)tree_to_uhwi(TREE_VALUE(attr_value));
143105 + argnums[argnum] = true;
143106 + }
143107 +}
143108 +
143109 +// Check whether the arguments are marked by the size_overflow attribute.
143110 +static void search_interesting_so_args(tree fndecl, bool *argnums)
143111 +{
143112 + const_tree attr;
143113 +
143114 + attr = get_attribute("size_overflow", fndecl);
143115 + if (attr)
143116 + set_argnum_attribute(attr, argnums);
143117 +}
143118 +
143119 +static enum intentional_mark handle_intentional_attr(gimple stmt, unsigned int argnum)
143120 +{
143121 + enum intentional_mark mark;
143122 +
143123 + mark = check_intentional_attribute(stmt, argnum);
143124 + if (mark == MARK_NO)
143125 + return MARK_NO;
143126 + insert_size_overflow_asm(stmt, argnum, mark);
143127 + return mark;
143128 +}
143129 +
143130 +static void handle_size_overflow_attr_ret(greturn *stmt)
143131 +{
143132 + enum intentional_mark mark;
143133 + bool orig_argnums[MAX_PARAM + 1] = {false};
143134 +
143135 + search_interesting_so_args(get_orig_fndecl(current_function_decl), (bool *) &orig_argnums);
143136 +
143137 + mark = handle_intentional_attr(stmt, 0);
143138 + if (mark == MARK_NO && orig_argnums[0])
143139 + insert_so_asm_by_so_attr(stmt, 0);
143140 +}
143141 +
143142 +// If the argument(s) of the callee function are marked by an attribute then mark the call stmt with an asm stmt
143143 +static void handle_size_overflow_attr_call(gcall *stmt)
143144 +{
143145 + tree fndecl;
143146 + unsigned int argnum;
143147 + bool orig_argnums[MAX_PARAM + 1] = {false};
143148 +
143149 + fndecl = get_interesting_orig_fndecl_from_stmt(stmt);
143150 + if (fndecl == NULL_TREE)
143151 + return;
143152 + if (DECL_BUILT_IN(fndecl))
143153 + return;
143154 +
143155 + search_interesting_so_args(fndecl, (bool *) &orig_argnums);
143156 +
143157 + for (argnum = 1; argnum <= gimple_call_num_args(stmt); argnum++) {
143158 + enum intentional_mark mark = handle_intentional_attr(stmt, argnum);
143159 +
143160 + if (mark == MARK_NO && !is_vararg(fndecl, argnum) && orig_argnums[argnum])
143161 + insert_so_asm_by_so_attr(stmt, argnum);
143162 + }
143163 +}
143164 +
143165 +// Iterate over all the stmts and search for call stmts and mark them if they have size_overflow attribute
143166 +static unsigned int search_interesting_functions(void)
143167 +{
143168 + basic_block bb;
143169 +
143170 + FOR_ALL_BB_FN(bb, cfun) {
143171 + gimple_stmt_iterator gsi;
143172 +
143173 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
143174 + gimple stmt = gsi_stmt(gsi);
143175 +
143176 + if (is_gimple_call(stmt))
143177 + handle_size_overflow_attr_call(as_a_gcall(stmt));
143178 + else if (gimple_code(stmt) == GIMPLE_RETURN)
143179 + handle_size_overflow_attr_ret(as_a_greturn(stmt));
143180 + }
143181 + }
143182 + return 0;
143183 +}
143184 +
143185 +/*
143186 + * A lot of functions get inlined before the ipa passes so after the build_ssa gimple pass
143187 + * this pass inserts asm stmts to mark the interesting args
143188 + * that the ipa pass will detect and insert the size overflow checks for.
143189 + */
143190 +#if BUILDING_GCC_VERSION >= 4009
143191 +static const struct pass_data insert_size_overflow_asm_pass_data = {
143192 +#else
143193 +static struct gimple_opt_pass insert_size_overflow_asm_pass = {
143194 + .pass = {
143195 +#endif
143196 + .type = GIMPLE_PASS,
143197 + .name = "insert_size_overflow_asm",
143198 +#if BUILDING_GCC_VERSION >= 4008
143199 + .optinfo_flags = OPTGROUP_NONE,
143200 +#endif
143201 +#if BUILDING_GCC_VERSION >= 5000
143202 +#elif BUILDING_GCC_VERSION >= 4009
143203 + .has_gate = false,
143204 + .has_execute = true,
143205 +#else
143206 + .gate = NULL,
143207 + .execute = search_interesting_functions,
143208 + .sub = NULL,
143209 + .next = NULL,
143210 + .static_pass_number = 0,
143211 +#endif
143212 + .tv_id = TV_NONE,
143213 + .properties_required = PROP_cfg,
143214 + .properties_provided = 0,
143215 + .properties_destroyed = 0,
143216 + .todo_flags_start = 0,
143217 + .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
143218 +#if BUILDING_GCC_VERSION < 4009
143219 + }
143220 +#endif
143221 +};
143222 +
143223 +#if BUILDING_GCC_VERSION >= 4009
143224 +namespace {
143225 +class insert_size_overflow_asm_pass : public gimple_opt_pass {
143226 +public:
143227 + insert_size_overflow_asm_pass() : gimple_opt_pass(insert_size_overflow_asm_pass_data, g) {}
143228 +#if BUILDING_GCC_VERSION >= 5000
143229 + virtual unsigned int execute(function *) { return search_interesting_functions(); }
143230 +#else
143231 + unsigned int execute() { return search_interesting_functions(); }
143232 +#endif
143233 +};
143234 +}
143235 +
143236 +opt_pass *make_insert_size_overflow_asm_pass(void)
143237 +{
143238 + return new insert_size_overflow_asm_pass();
143239 +}
143240 +#else
143241 +struct opt_pass *make_insert_size_overflow_asm_pass(void)
143242 +{
143243 + return &insert_size_overflow_asm_pass.pass;
143244 +}
143245 +#endif
143246 diff --git a/tools/gcc/size_overflow_plugin/intentional_overflow.c b/tools/gcc/size_overflow_plugin/intentional_overflow.c
143247 new file mode 100644
143248 index 0000000..c6ef934
143249 --- /dev/null
143250 +++ b/tools/gcc/size_overflow_plugin/intentional_overflow.c
143251 @@ -0,0 +1,980 @@
143252 +/*
143253 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
143254 + * Licensed under the GPL v2, or (at your option) v3
143255 + *
143256 + * Homepage:
143257 + * https://github.com/ephox-gcc-plugins/size_overflow
143258 + *
143259 + * Documentation:
143260 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
143261 + *
143262 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
143263 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
143264 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
143265 + *
143266 + * Usage:
143267 + * $ make
143268 + * $ make run
143269 + */
143270 +
143271 +#include "size_overflow.h"
143272 +
143273 +static enum intentional_mark walk_use_def(gimple_set *visited, const_tree lhs);
143274 +
143275 +static const char *get_asm_string(const gasm *stmt)
143276 +{
143277 + if (stmt)
143278 + return gimple_asm_string(stmt);
143279 + return NULL;
143280 +}
143281 +
143282 +tree get_size_overflow_asm_input(const gasm *stmt)
143283 +{
143284 + gcc_assert(gimple_asm_ninputs(stmt) != 0);
143285 + return TREE_VALUE(gimple_asm_input_op(stmt, 0));
143286 +}
143287 +
143288 +bool is_size_overflow_insert_check_asm(const gasm *stmt)
143289 +{
143290 + const char *str;
143291 +
143292 + if (!is_size_overflow_asm(stmt))
143293 + return false;
143294 +
143295 + str = get_asm_string(stmt);
143296 + if (!str)
143297 + return false;
143298 + return !strncmp(str, OK_ASM_STR, sizeof(OK_ASM_STR) - 1);
143299 +}
143300 +
143301 +bool is_size_overflow_asm(const_gimple stmt)
143302 +{
143303 + const char *str;
143304 +
143305 + if (!stmt)
143306 + return false;
143307 + if (gimple_code(stmt) != GIMPLE_ASM)
143308 + return false;
143309 +
143310 + str = get_asm_string(as_a_const_gasm(stmt));
143311 + if (!str)
143312 + return false;
143313 + return !strncmp(str, SO_ASM_STR, sizeof(SO_ASM_STR) - 1);
143314 +}
143315 +
143316 +static bool is_size_overflow_intentional_asm_turn_off(const gasm *stmt)
143317 +{
143318 + const char *str;
143319 +
143320 + if (!is_size_overflow_asm(stmt))
143321 + return false;
143322 +
143323 + str = get_asm_string(stmt);
143324 + if (!str)
143325 + return false;
143326 + return !strncmp(str, TURN_OFF_ASM_STR, sizeof(TURN_OFF_ASM_STR) - 1);
143327 +}
143328 +
143329 +static bool is_size_overflow_intentional_asm_end(const gasm *stmt)
143330 +{
143331 + const char *str;
143332 +
143333 + if (!is_size_overflow_asm(stmt))
143334 + return false;
143335 +
143336 + str = get_asm_string(stmt);
143337 + if (!str)
143338 + return false;
143339 + return !strncmp(str, END_INTENTIONAL_ASM_STR, sizeof(END_INTENTIONAL_ASM_STR) - 1);
143340 +}
143341 +
143342 +/* Get the param of the intentional_overflow attribute.
143343 + * * 0: MARK_END_INTENTIONAL
143344 + * * 1..MAX_PARAM: MARK_YES
143345 + * * -1: MARK_TURN_OFF
143346 + */
143347 +static tree get_attribute_param(const_tree decl)
143348 +{
143349 + const_tree attr;
143350 +
143351 + if (decl == NULL_TREE)
143352 + return NULL_TREE;
143353 +
143354 + attr = get_attribute("intentional_overflow", decl);
143355 + if (attr)
143356 + return TREE_VALUE(attr);
143357 + return NULL_TREE;
143358 +}
143359 +
143360 +// MARK_TURN_OFF
143361 +static bool is_turn_off_intentional_attr(const_tree decl)
143362 +{
143363 + const_tree param_head;
143364 +
143365 + param_head = get_attribute_param(decl);
143366 + if (param_head == NULL_TREE)
143367 + return false;
143368 +
143369 + if (tree_to_shwi(TREE_VALUE(param_head)) == -1)
143370 + return true;
143371 + return false;
143372 +}
143373 +
143374 +// MARK_END_INTENTIONAL
143375 +static bool is_end_intentional_intentional_attr(const_tree decl)
143376 +{
143377 + const_tree param_head;
143378 +
143379 + param_head = get_attribute_param(decl);
143380 + if (param_head == NULL_TREE)
143381 + return false;
143382 +
143383 + if (tree_to_shwi(TREE_VALUE(param_head)) == 0)
143384 + return true;
143385 + return false;
143386 +}
143387 +
143388 +// MARK_YES
143389 +static bool is_yes_intentional_attr(const_tree decl, unsigned int argnum)
143390 +{
143391 + tree param, param_head;
143392 +
143393 + if (argnum == 0)
143394 + return false;
143395 +
143396 + param_head = get_attribute_param(decl);
143397 + for (param = param_head; param; param = TREE_CHAIN(param)) {
143398 + int argval = tree_to_shwi(TREE_VALUE(param));
143399 +
143400 + if (argval <= 0)
143401 + continue;
143402 + if (argnum == (unsigned int)argval)
143403 + return true;
143404 + }
143405 + return false;
143406 +}
143407 +
143408 +static void print_missing_intentional(enum intentional_mark callee_attr, enum intentional_mark caller_attr, const_tree decl, unsigned int argnum)
143409 +{
143410 + const struct size_overflow_hash *hash;
143411 + location_t loc;
143412 +
143413 + if (caller_attr == MARK_NO || caller_attr == MARK_END_INTENTIONAL || caller_attr == MARK_TURN_OFF)
143414 + return;
143415 +
143416 + if (callee_attr == MARK_END_INTENTIONAL || callee_attr == MARK_YES)
143417 + return;
143418 +
143419 + hash = get_size_overflow_hash_entry_tree(decl, argnum, ONLY_SO);
143420 + if (!hash)
143421 + return;
143422 +
143423 +// loc = DECL_SOURCE_LOCATION(decl);
143424 +// inform(loc, "The intentional_overflow attribute is missing from +%s+%u+", DECL_NAME_POINTER(decl), argnum);
143425 +}
143426 +
143427 +// Get the field decl of a component ref for intentional_overflow checking
143428 +static const_tree search_field_decl(const_tree comp_ref)
143429 +{
143430 + const_tree field = NULL_TREE;
143431 + unsigned int i, len = TREE_OPERAND_LENGTH(comp_ref);
143432 +
143433 + for (i = 0; i < len; i++) {
143434 + field = TREE_OPERAND(comp_ref, i);
143435 + if (TREE_CODE(field) == FIELD_DECL)
143436 + break;
143437 + }
143438 + gcc_assert(TREE_CODE(field) == FIELD_DECL);
143439 + return field;
143440 +}
143441 +
143442 +/* Get the type of the intentional_overflow attribute of a node
143443 + * * MARK_TURN_OFF
143444 + * * MARK_YES
143445 + * * MARK_NO
143446 + * * MARK_END_INTENTIONAL
143447 + */
143448 +enum intentional_mark get_intentional_attr_type(const_tree node)
143449 +{
143450 + const_tree cur_decl;
143451 +
143452 + if (node == NULL_TREE)
143453 + return MARK_NO;
143454 +
143455 + switch (TREE_CODE(node)) {
143456 + case COMPONENT_REF:
143457 + cur_decl = search_field_decl(node);
143458 + if (is_turn_off_intentional_attr(cur_decl))
143459 + return MARK_TURN_OFF;
143460 + if (is_end_intentional_intentional_attr(cur_decl))
143461 + return MARK_YES;
143462 + break;
143463 + case PARM_DECL: {
143464 + unsigned int argnum;
143465 +
143466 + cur_decl = get_orig_fndecl(current_function_decl);
143467 + argnum = find_arg_number_tree(node, cur_decl);
143468 + if (argnum == CANNOT_FIND_ARG)
143469 + return MARK_NO;
143470 + if (is_yes_intentional_attr(cur_decl, argnum))
143471 + return MARK_YES;
143472 + if (is_end_intentional_intentional_attr(cur_decl))
143473 + return MARK_END_INTENTIONAL;
143474 + break;
143475 + }
143476 + case FUNCTION_DECL: {
143477 + const_tree fndecl = get_orig_fndecl(node);
143478 +
143479 + if (is_turn_off_intentional_attr(fndecl))
143480 + return MARK_TURN_OFF;
143481 + if (is_end_intentional_intentional_attr(fndecl))
143482 + return MARK_END_INTENTIONAL;
143483 + break;
143484 + }
143485 + case FIELD_DECL:
143486 + case VAR_DECL:
143487 + if (is_end_intentional_intentional_attr(node))
143488 + return MARK_END_INTENTIONAL;
143489 + if (is_turn_off_intentional_attr(node))
143490 + return MARK_TURN_OFF;
143491 + default:
143492 + break;
143493 + }
143494 + return MARK_NO;
143495 +}
143496 +
143497 +static enum intentional_mark walk_use_def_phi(gimple_set *visited, const_tree result)
143498 +{
143499 + enum intentional_mark mark = MARK_NO;
143500 + gphi *phi = as_a_gphi(get_def_stmt(result));
143501 + unsigned int i, n = gimple_phi_num_args(phi);
143502 +
143503 + pointer_set_insert(visited, phi);
143504 + for (i = 0; i < n; i++) {
143505 + tree arg = gimple_phi_arg_def(phi, i);
143506 +
143507 + mark = walk_use_def(visited, arg);
143508 + if (mark != MARK_NO)
143509 + return mark;
143510 + }
143511 +
143512 + return mark;
143513 +}
143514 +
143515 +static enum intentional_mark walk_use_def_binary(gimple_set *visited, const_tree lhs)
143516 +{
143517 + enum intentional_mark mark;
143518 + tree rhs1, rhs2;
143519 + gassign *def_stmt = as_a_gassign(get_def_stmt(lhs));
143520 +
143521 + rhs1 = gimple_assign_rhs1(def_stmt);
143522 + rhs2 = gimple_assign_rhs2(def_stmt);
143523 +
143524 + mark = walk_use_def(visited, rhs1);
143525 + if (mark == MARK_NO)
143526 + return walk_use_def(visited, rhs2);
143527 + return mark;
143528 +}
143529 +
143530 +enum intentional_mark get_so_asm_type(const_gimple stmt)
143531 +{
143532 + const gasm *asm_stmt;
143533 +
143534 + if (!stmt)
143535 + return MARK_NO;
143536 + if (!is_size_overflow_asm(stmt))
143537 + return MARK_NO;
143538 +
143539 + asm_stmt = as_a_const_gasm(stmt);
143540 + if (is_size_overflow_insert_check_asm(asm_stmt))
143541 + return MARK_NO;
143542 + if (is_size_overflow_intentional_asm_turn_off(asm_stmt))
143543 + return MARK_TURN_OFF;
143544 + if (is_size_overflow_intentional_asm_end(asm_stmt))
143545 + return MARK_END_INTENTIONAL;
143546 + return MARK_YES;
143547 +}
143548 +
143549 +static enum intentional_mark walk_use_def(gimple_set *visited, const_tree lhs)
143550 +{
143551 + const_gimple def_stmt;
143552 +
143553 + if (TREE_CODE(lhs) != SSA_NAME)
143554 + return get_intentional_attr_type(lhs);
143555 +
143556 + def_stmt = get_def_stmt(lhs);
143557 + gcc_assert(def_stmt);
143558 +
143559 + if (pointer_set_insert(visited, def_stmt))
143560 + return MARK_NO;
143561 +
143562 + switch (gimple_code(def_stmt)) {
143563 + case GIMPLE_CALL:
143564 + case GIMPLE_RETURN:
143565 + return MARK_NO;
143566 + case GIMPLE_NOP:
143567 + return walk_use_def(visited, SSA_NAME_VAR(lhs));
143568 + case GIMPLE_ASM:
143569 + return get_so_asm_type(as_a_const_gasm(def_stmt));
143570 + case GIMPLE_PHI:
143571 + return walk_use_def_phi(visited, lhs);
143572 + case GIMPLE_ASSIGN:
143573 + switch (gimple_num_ops(def_stmt)) {
143574 + case 2:
143575 + return walk_use_def(visited, gimple_assign_rhs1(def_stmt));
143576 + case 3:
143577 + return walk_use_def_binary(visited, lhs);
143578 + }
143579 + default:
143580 + debug_gimple_stmt((gimple)def_stmt);
143581 + error("%s: unknown gimple code", __func__);
143582 + gcc_unreachable();
143583 + }
143584 +}
143585 +
143586 +enum intentional_mark check_intentional_size_overflow_asm_and_attribute(const_tree var)
143587 +{
143588 + enum intentional_mark mark;
143589 + gimple_set *visited;
143590 +
143591 + if (is_turn_off_intentional_attr(get_orig_fndecl(current_function_decl)))
143592 + return MARK_TURN_OFF;
143593 +
143594 + visited = pointer_set_create();
143595 + mark = walk_use_def(visited, var);
143596 + pointer_set_destroy(visited);
143597 +
143598 + return mark;
143599 +}
143600 +
143601 +/* Search intentional_overflow attribute on caller and on callee too.
143602 + * -1 / MARK_TURN_OFF: means that overflow checking is turned off inside the function and
143603 + * parameters aren't tracked backwards.
143604 + * 1..31 / MARK_YES: e.g., 4 means that overflow checking is turned off on the fourth parameter inside
143605 + * the function.
143606 + * 0 / MARK_END_INTENTIONAL: means that overflow checking is turned off on all the parameters of the function
143607 + * in all callers (on a structure field means that overflow checking is turned off
143608 + * in all expressions involving the given field).
143609 + */
143610 +enum intentional_mark check_intentional_attribute(const_gimple stmt, unsigned int argnum)
143611 +{
143612 + enum intentional_mark caller_mark, callee_mark;
143613 + const_tree fndecl, orig_cur_fndecl, arg;
143614 +
143615 + orig_cur_fndecl = get_orig_fndecl(current_function_decl);
143616 +
143617 + // handle MARK_TURN_OFF early on the caller
143618 + if (is_turn_off_intentional_attr(orig_cur_fndecl))
143619 + return MARK_TURN_OFF;
143620 +
143621 + switch (gimple_code(stmt)) {
143622 + case GIMPLE_RETURN:
143623 + gcc_assert(argnum == 0);
143624 + // for now ignore other intentional attribute types on returns
143625 + return MARK_NO;
143626 + case GIMPLE_CALL:
143627 + gcc_assert(argnum != 0);
143628 + gcc_assert(argnum <= gimple_call_num_args(stmt));
143629 + arg = gimple_call_arg(stmt, argnum - 1);
143630 + break;
143631 + default:
143632 + debug_gimple_stmt((gimple)stmt);
143633 + gcc_unreachable();
143634 + }
143635 +
143636 + // XXX ideiglenesen 0-nal a fuggvenyen belul is ki van kapcsolva a dupolas, eddig igy mukodott a doksi ellenere
143637 + if (is_end_intentional_intentional_attr(orig_cur_fndecl))
143638 + return MARK_END_INTENTIONAL;
143639 +
143640 + fndecl = get_interesting_orig_fndecl_from_stmt(as_a_const_gcall(stmt));
143641 + // handle MARK_TURN_OFF on the callee
143642 + if (is_turn_off_intentional_attr(fndecl))
143643 + return MARK_TURN_OFF;
143644 + // find a defining marked caller argument or struct field for arg
143645 + caller_mark = check_intentional_size_overflow_asm_and_attribute(arg);
143646 +
143647 + // did we find a marked struct field?
143648 + if (caller_mark == MARK_TURN_OFF)
143649 + return MARK_TURN_OFF;
143650 +
143651 + // handle MARK_END_INTENTIONAL on the callee
143652 + if (is_end_intentional_intentional_attr(fndecl))
143653 + callee_mark = MARK_END_INTENTIONAL;
143654 + // is it a marked callee parameter?
143655 + else if (is_yes_intentional_attr(fndecl, argnum))
143656 + callee_mark = MARK_YES;
143657 + else
143658 + callee_mark = MARK_NO;
143659 +
143660 + // no intentional attribute found
143661 + if (callee_mark == MARK_NO && caller_mark == MARK_NO)
143662 + return MARK_NO;
143663 +
143664 + // MARK_YES is meaningful only on the caller
143665 + if (caller_mark == MARK_NO && callee_mark == MARK_YES)
143666 + return MARK_NO;
143667 +
143668 + // we found a code region where we don't want to duplicate
143669 + if (caller_mark == MARK_YES && callee_mark == MARK_END_INTENTIONAL)
143670 + return MARK_END_INTENTIONAL;
143671 +
143672 + // ignore the intentional attribute on the callee if we didn't find a marked defining argument or struct field
143673 + if (caller_mark == MARK_NO && callee_mark == MARK_END_INTENTIONAL)
143674 + return MARK_NO;
143675 +
143676 + // the callee is missing the intentional attribute (MARK_YES or MARK_END_INTENTIONAL)
143677 + if (caller_mark == MARK_YES) {
143678 + print_missing_intentional(callee_mark, caller_mark, fndecl, argnum);
143679 + return MARK_YES;
143680 + }
143681 +
143682 + fprintf(stderr, "caller: %s callee: %s\n", DECL_NAME_POINTER(orig_cur_fndecl), DECL_NAME_POINTER(fndecl));
143683 + debug_gimple_stmt((gimple)stmt);
143684 + print_intentional_mark(caller_mark);
143685 + print_intentional_mark(callee_mark);
143686 + gcc_unreachable();
143687 +}
143688 +
143689 +bool is_a_cast_and_const_overflow(const_tree no_const_rhs)
143690 +{
143691 + const_tree rhs1, lhs, rhs1_type, lhs_type;
143692 + enum machine_mode lhs_mode, rhs_mode;
143693 + gimple def_stmt = get_def_stmt(no_const_rhs);
143694 +
143695 + if (!def_stmt || !gimple_assign_cast_p(def_stmt))
143696 + return false;
143697 +
143698 + rhs1 = gimple_assign_rhs1(def_stmt);
143699 + lhs = gimple_assign_lhs(def_stmt);
143700 + rhs1_type = TREE_TYPE(rhs1);
143701 + lhs_type = TREE_TYPE(lhs);
143702 + rhs_mode = TYPE_MODE(rhs1_type);
143703 + lhs_mode = TYPE_MODE(lhs_type);
143704 + if (TYPE_UNSIGNED(lhs_type) == TYPE_UNSIGNED(rhs1_type) || lhs_mode != rhs_mode)
143705 + return false;
143706 +
143707 + return true;
143708 +}
143709 +
143710 +static unsigned int uses_num(tree node)
143711 +{
143712 + imm_use_iterator imm_iter;
143713 + use_operand_p use_p;
143714 + unsigned int num = 0;
143715 +
143716 + FOR_EACH_IMM_USE_FAST(use_p, imm_iter, node) {
143717 + gimple use_stmt = USE_STMT(use_p);
143718 +
143719 + if (use_stmt == NULL)
143720 + return num;
143721 + if (is_gimple_debug(use_stmt))
143722 + continue;
143723 + if (gimple_assign_cast_p(use_stmt) && is_size_overflow_type(gimple_assign_lhs(use_stmt)))
143724 + continue;
143725 + num++;
143726 + }
143727 + return num;
143728 +}
143729 +
143730 +static bool no_uses(tree node)
143731 +{
143732 + return !uses_num(node);
143733 +}
143734 +
143735 +// 3.8.5 mm/page-writeback.c __ilog2_u64(): ret, uint + uintmax; uint -> int; int max
143736 +bool is_const_plus_unsigned_signed_truncation(const_tree lhs)
143737 +{
143738 + tree rhs1, lhs_type, rhs_type, rhs2, not_const_rhs;
143739 + gimple def_stmt = get_def_stmt(lhs);
143740 +
143741 + if (!def_stmt || !gimple_assign_cast_p(def_stmt))
143742 + return false;
143743 +
143744 + rhs1 = gimple_assign_rhs1(def_stmt);
143745 + rhs_type = TREE_TYPE(rhs1);
143746 + lhs_type = TREE_TYPE(lhs);
143747 + if (TYPE_UNSIGNED(lhs_type) || !TYPE_UNSIGNED(rhs_type))
143748 + return false;
143749 + if (TYPE_MODE(lhs_type) != TYPE_MODE(rhs_type))
143750 + return false;
143751 +
143752 + def_stmt = get_def_stmt(rhs1);
143753 + if (!def_stmt || !is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 3)
143754 + return false;
143755 +
143756 + if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR)
143757 + return false;
143758 +
143759 + rhs1 = gimple_assign_rhs1(def_stmt);
143760 + rhs2 = gimple_assign_rhs2(def_stmt);
143761 + if (!is_gimple_constant(rhs1) && !is_gimple_constant(rhs2))
143762 + return false;
143763 +
143764 + if (is_gimple_constant(rhs2))
143765 + not_const_rhs = rhs1;
143766 + else
143767 + not_const_rhs = rhs2;
143768 +
143769 + return no_uses(not_const_rhs);
143770 +}
143771 +
143772 +static bool is_lt_signed_type_max(const_tree rhs)
143773 +{
143774 + const_tree new_type, type_max, type = TREE_TYPE(rhs);
143775 +
143776 + if (!TYPE_UNSIGNED(type))
143777 + return true;
143778 +
143779 + switch (TYPE_MODE(type)) {
143780 + case QImode:
143781 + new_type = intQI_type_node;
143782 + break;
143783 + case HImode:
143784 + new_type = intHI_type_node;
143785 + break;
143786 + case SImode:
143787 + new_type = intSI_type_node;
143788 + break;
143789 + case DImode:
143790 + new_type = intDI_type_node;
143791 + break;
143792 + default:
143793 + debug_tree((tree)type);
143794 + gcc_unreachable();
143795 + }
143796 +
143797 + type_max = TYPE_MAX_VALUE(new_type);
143798 + if (!tree_int_cst_lt(type_max, rhs))
143799 + return true;
143800 +
143801 + return false;
143802 +}
143803 +
143804 +static bool is_gt_zero(const_tree rhs)
143805 +{
143806 + const_tree type = TREE_TYPE(rhs);
143807 +
143808 + if (TYPE_UNSIGNED(type))
143809 + return true;
143810 +
143811 + if (!tree_int_cst_lt(rhs, integer_zero_node))
143812 + return true;
143813 +
143814 + return false;
143815 +}
143816 +
143817 +bool is_a_constant_overflow(const gassign *stmt, const_tree rhs)
143818 +{
143819 + if (gimple_assign_rhs_code(stmt) == MIN_EXPR)
143820 + return false;
143821 + if (!is_gimple_constant(rhs))
143822 + return false;
143823 +
143824 + // if the const is between 0 and the max value of the signed type of the same bitsize then there is no intentional overflow
143825 + if (is_lt_signed_type_max(rhs) && is_gt_zero(rhs))
143826 + return false;
143827 +
143828 + return true;
143829 +}
143830 +
143831 +static tree change_assign_rhs(struct visited *visited, gassign *stmt, const_tree orig_rhs, tree new_rhs)
143832 +{
143833 + const_gimple assign;
143834 + gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
143835 + tree origtype = TREE_TYPE(orig_rhs);
143836 +
143837 + assign = build_cast_stmt(visited, origtype, new_rhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
143838 + pointer_set_insert(visited->my_stmts, assign);
143839 + return get_lhs(assign);
143840 +}
143841 +
143842 +tree handle_intentional_overflow(struct visited *visited, next_interesting_function_t expand_from, bool check_overflow, gassign *stmt, tree change_rhs, tree new_rhs2)
143843 +{
143844 + tree new_rhs, orig_rhs;
143845 + void (*gimple_assign_set_rhs)(gimple, tree);
143846 + tree rhs1 = gimple_assign_rhs1(stmt);
143847 + tree rhs2 = gimple_assign_rhs2(stmt);
143848 + tree lhs = gimple_assign_lhs(stmt);
143849 +
143850 + if (!check_overflow)
143851 + return create_assign(visited, stmt, lhs, AFTER_STMT);
143852 +
143853 + if (change_rhs == NULL_TREE)
143854 + return create_assign(visited, stmt, lhs, AFTER_STMT);
143855 +
143856 + if (new_rhs2 == NULL_TREE) {
143857 + orig_rhs = rhs1;
143858 + gimple_assign_set_rhs = &gimple_assign_set_rhs1;
143859 + } else {
143860 + orig_rhs = rhs2;
143861 + gimple_assign_set_rhs = &gimple_assign_set_rhs2;
143862 + }
143863 +
143864 + check_size_overflow(expand_from, stmt, TREE_TYPE(change_rhs), change_rhs, orig_rhs, BEFORE_STMT);
143865 +
143866 + new_rhs = change_assign_rhs(visited, stmt, orig_rhs, change_rhs);
143867 + gimple_assign_set_rhs(stmt, new_rhs);
143868 + update_stmt(stmt);
143869 +
143870 + return create_assign(visited, stmt, lhs, AFTER_STMT);
143871 +}
143872 +
143873 +static bool is_subtraction_special(struct visited *visited, const gassign *stmt)
143874 +{
143875 + gimple rhs1_def_stmt, rhs2_def_stmt;
143876 + const_tree rhs1_def_stmt_rhs1, rhs2_def_stmt_rhs1, rhs1_def_stmt_lhs, rhs2_def_stmt_lhs;
143877 + enum machine_mode rhs1_def_stmt_rhs1_mode, rhs2_def_stmt_rhs1_mode, rhs1_def_stmt_lhs_mode, rhs2_def_stmt_lhs_mode;
143878 + const_tree rhs1 = gimple_assign_rhs1(stmt);
143879 + const_tree rhs2 = gimple_assign_rhs2(stmt);
143880 +
143881 + if (is_gimple_constant(rhs1) || is_gimple_constant(rhs2))
143882 + return false;
143883 +
143884 + if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
143885 + return false;
143886 +
143887 + gcc_assert(TREE_CODE(rhs1) == SSA_NAME && TREE_CODE(rhs2) == SSA_NAME);
143888 +
143889 + rhs1_def_stmt = get_def_stmt(rhs1);
143890 + rhs2_def_stmt = get_def_stmt(rhs2);
143891 + if (!gimple_assign_cast_p(rhs1_def_stmt) || !gimple_assign_cast_p(rhs2_def_stmt))
143892 + return false;
143893 +
143894 + rhs1_def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
143895 + rhs2_def_stmt_rhs1 = gimple_assign_rhs1(rhs2_def_stmt);
143896 + rhs1_def_stmt_lhs = gimple_assign_lhs(rhs1_def_stmt);
143897 + rhs2_def_stmt_lhs = gimple_assign_lhs(rhs2_def_stmt);
143898 + rhs1_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_rhs1));
143899 + rhs2_def_stmt_rhs1_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_rhs1));
143900 + rhs1_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs1_def_stmt_lhs));
143901 + rhs2_def_stmt_lhs_mode = TYPE_MODE(TREE_TYPE(rhs2_def_stmt_lhs));
143902 + if (GET_MODE_BITSIZE(rhs1_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs1_def_stmt_lhs_mode))
143903 + return false;
143904 + if (GET_MODE_BITSIZE(rhs2_def_stmt_rhs1_mode) <= GET_MODE_BITSIZE(rhs2_def_stmt_lhs_mode))
143905 + return false;
143906 +
143907 + pointer_set_insert(visited->no_cast_check, rhs1_def_stmt);
143908 + pointer_set_insert(visited->no_cast_check, rhs2_def_stmt);
143909 + return true;
143910 +}
143911 +
143912 +static gassign *create_binary_assign(struct visited *visited, enum tree_code code, gassign *stmt, tree rhs1, tree rhs2)
143913 +{
143914 + gassign *assign;
143915 + gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
143916 + tree type = TREE_TYPE(rhs1);
143917 + tree lhs = create_new_var(type);
143918 +
143919 + gcc_assert(types_compatible_p(type, TREE_TYPE(rhs2)));
143920 + assign = as_a_gassign(gimple_build_assign_with_ops(code, lhs, rhs1, rhs2));
143921 + gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
143922 +
143923 + gsi_insert_before(&gsi, assign, GSI_NEW_STMT);
143924 + update_stmt(assign);
143925 + pointer_set_insert(visited->my_stmts, assign);
143926 + return assign;
143927 +}
143928 +
143929 +static tree cast_to_TI_type(struct visited *visited, gassign *stmt, tree node)
143930 +{
143931 + gimple_stmt_iterator gsi;
143932 + const_gimple cast_stmt;
143933 + tree type = TREE_TYPE(node);
143934 +
143935 + if (types_compatible_p(type, intTI_type_node))
143936 + return node;
143937 +
143938 + gsi = gsi_for_stmt(stmt);
143939 + cast_stmt = build_cast_stmt(visited, intTI_type_node, node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
143940 + pointer_set_insert(visited->my_stmts, cast_stmt);
143941 + return get_lhs(cast_stmt);
143942 +}
143943 +
143944 +static tree get_def_stmt_rhs(struct visited *visited, const_tree var)
143945 +{
143946 + tree rhs1, def_stmt_rhs1;
143947 + gimple rhs1_def_stmt, def_stmt_rhs1_def_stmt, def_stmt;
143948 +
143949 + def_stmt = get_def_stmt(var);
143950 + if (!gimple_assign_cast_p(def_stmt))
143951 + return NULL_TREE;
143952 + gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP && pointer_set_contains(visited->my_stmts, def_stmt) && gimple_assign_cast_p(def_stmt));
143953 +
143954 + rhs1 = gimple_assign_rhs1(def_stmt);
143955 + rhs1_def_stmt = get_def_stmt(rhs1);
143956 + if (!gimple_assign_cast_p(rhs1_def_stmt))
143957 + return rhs1;
143958 +
143959 + def_stmt_rhs1 = gimple_assign_rhs1(rhs1_def_stmt);
143960 + def_stmt_rhs1_def_stmt = get_def_stmt(def_stmt_rhs1);
143961 +
143962 + switch (gimple_code(def_stmt_rhs1_def_stmt)) {
143963 + case GIMPLE_CALL:
143964 + case GIMPLE_NOP:
143965 + case GIMPLE_ASM:
143966 + case GIMPLE_PHI:
143967 + return def_stmt_rhs1;
143968 + case GIMPLE_ASSIGN:
143969 + return rhs1;
143970 + default:
143971 + debug_gimple_stmt(def_stmt_rhs1_def_stmt);
143972 + gcc_unreachable();
143973 + }
143974 +}
143975 +
143976 +tree handle_integer_truncation(struct visited *visited, next_interesting_function_t expand_from, const_tree lhs)
143977 +{
143978 + tree new_rhs1, new_rhs2;
143979 + tree new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1, new_lhs;
143980 + gassign *assign, *stmt = as_a_gassign(get_def_stmt(lhs));
143981 + tree rhs1 = gimple_assign_rhs1(stmt);
143982 + tree rhs2 = gimple_assign_rhs2(stmt);
143983 +
143984 + if (!is_subtraction_special(visited, stmt))
143985 + return NULL_TREE;
143986 +
143987 + new_rhs1 = expand(visited, expand_from, rhs1);
143988 + new_rhs2 = expand(visited, expand_from, rhs2);
143989 +
143990 + new_rhs1_def_stmt_rhs1 = get_def_stmt_rhs(visited, new_rhs1);
143991 + new_rhs2_def_stmt_rhs1 = get_def_stmt_rhs(visited, new_rhs2);
143992 +
143993 + if (new_rhs1_def_stmt_rhs1 == NULL_TREE || new_rhs2_def_stmt_rhs1 == NULL_TREE)
143994 + return NULL_TREE;
143995 +
143996 + if (!types_compatible_p(TREE_TYPE(new_rhs1_def_stmt_rhs1), TREE_TYPE(new_rhs2_def_stmt_rhs1))) {
143997 + new_rhs1_def_stmt_rhs1 = cast_to_TI_type(visited, stmt, new_rhs1_def_stmt_rhs1);
143998 + new_rhs2_def_stmt_rhs1 = cast_to_TI_type(visited, stmt, new_rhs2_def_stmt_rhs1);
143999 + }
144000 +
144001 + assign = create_binary_assign(visited, MINUS_EXPR, stmt, new_rhs1_def_stmt_rhs1, new_rhs2_def_stmt_rhs1);
144002 + new_lhs = gimple_assign_lhs(assign);
144003 + check_size_overflow(expand_from, assign, TREE_TYPE(new_lhs), new_lhs, rhs1, AFTER_STMT);
144004 +
144005 + return dup_assign(visited, stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
144006 +}
144007 +
144008 +bool is_a_neg_overflow(const gassign *stmt, const_tree rhs)
144009 +{
144010 + const_gimple def_stmt;
144011 +
144012 + if (TREE_CODE(rhs) != SSA_NAME)
144013 + return false;
144014 +
144015 + if (gimple_assign_rhs_code(stmt) != PLUS_EXPR)
144016 + return false;
144017 +
144018 + def_stmt = get_def_stmt(rhs);
144019 + if (!is_gimple_assign(def_stmt) || gimple_assign_rhs_code(def_stmt) != BIT_NOT_EXPR)
144020 + return false;
144021 +
144022 + return true;
144023 +}
144024 +
144025 +/* e.g., drivers/acpi/acpica/utids.c acpi_ut_execute_CID()
144026 + * ((count - 1) * sizeof(struct acpi_pnp_dee_id_list) -> (count + fffffff) * 16
144027 + * fffffff * 16 > signed max -> truncate
144028 + */
144029 +static bool look_for_mult_and_add(const_gimple stmt)
144030 +{
144031 + const_tree res;
144032 + tree rhs1, rhs2, def_rhs1, def_rhs2, const_rhs, def_const_rhs;
144033 + const_gimple def_stmt;
144034 +
144035 + if (!stmt || gimple_code(stmt) == GIMPLE_NOP)
144036 + return false;
144037 + if (!is_gimple_assign(stmt))
144038 + return false;
144039 + if (gimple_assign_rhs_code(stmt) != MULT_EXPR)
144040 + return false;
144041 +
144042 + rhs1 = gimple_assign_rhs1(stmt);
144043 + rhs2 = gimple_assign_rhs2(stmt);
144044 + if (is_gimple_constant(rhs1)) {
144045 + const_rhs = rhs1;
144046 + def_stmt = get_def_stmt(rhs2);
144047 + } else if (is_gimple_constant(rhs2)) {
144048 + const_rhs = rhs2;
144049 + def_stmt = get_def_stmt(rhs1);
144050 + } else
144051 + return false;
144052 +
144053 + if (!is_gimple_assign(def_stmt))
144054 + return false;
144055 +
144056 + if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR && gimple_assign_rhs_code(def_stmt) != MINUS_EXPR)
144057 + return false;
144058 +
144059 + def_rhs1 = gimple_assign_rhs1(def_stmt);
144060 + def_rhs2 = gimple_assign_rhs2(def_stmt);
144061 + if (is_gimple_constant(def_rhs1))
144062 + def_const_rhs = def_rhs1;
144063 + else if (is_gimple_constant(def_rhs2))
144064 + def_const_rhs = def_rhs2;
144065 + else
144066 + return false;
144067 +
144068 + res = fold_binary_loc(gimple_location(def_stmt), MULT_EXPR, TREE_TYPE(const_rhs), const_rhs, def_const_rhs);
144069 + if (is_lt_signed_type_max(res) && is_gt_zero(res))
144070 + return false;
144071 + return true;
144072 +}
144073 +
144074 +enum intentional_overflow_type add_mul_intentional_overflow(const gassign *stmt)
144075 +{
144076 + const_gimple def_stmt_1, def_stmt_2;
144077 + const_tree rhs1, rhs2;
144078 + bool add_mul_rhs1, add_mul_rhs2;
144079 +
144080 + rhs1 = gimple_assign_rhs1(stmt);
144081 + def_stmt_1 = get_def_stmt(rhs1);
144082 + add_mul_rhs1 = look_for_mult_and_add(def_stmt_1);
144083 +
144084 + rhs2 = gimple_assign_rhs2(stmt);
144085 + def_stmt_2 = get_def_stmt(rhs2);
144086 + add_mul_rhs2 = look_for_mult_and_add(def_stmt_2);
144087 +
144088 + if (add_mul_rhs1)
144089 + return RHS1_INTENTIONAL_OVERFLOW;
144090 + if (add_mul_rhs2)
144091 + return RHS2_INTENTIONAL_OVERFLOW;
144092 + return NO_INTENTIONAL_OVERFLOW;
144093 +}
144094 +
144095 +static gassign *get_dup_stmt(struct visited *visited, gassign *stmt)
144096 +{
144097 + gassign *my_stmt;
144098 + gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
144099 +
144100 + gsi_next(&gsi);
144101 + my_stmt = as_a_gassign(gsi_stmt(gsi));
144102 +
144103 + gcc_assert(pointer_set_contains(visited->my_stmts, my_stmt));
144104 + if (gimple_assign_cast_p(stmt) && gimple_assign_cast_p(my_stmt))
144105 + return my_stmt;
144106 +
144107 + if (gimple_assign_rhs_code(stmt) != gimple_assign_rhs_code(my_stmt)) {
144108 + fprintf(stderr, "%s != %s\n", get_tree_code_name(gimple_assign_rhs_code(stmt)), get_tree_code_name(gimple_assign_rhs_code(my_stmt)));
144109 + debug_gimple_stmt(stmt);
144110 + debug_gimple_stmt(my_stmt);
144111 + gcc_unreachable();
144112 + }
144113 +
144114 + return my_stmt;
144115 +}
144116 +
144117 +/* unsigned type -> unary or binary assign (rhs1 or rhs2 is constant)
144118 + * unsigned type cast to signed type, unsigned type: no more uses
144119 + * e.g., lib/vsprintf.c:simple_strtol()
144120 + * _10 = (unsigned long int) _9
144121 + * _11 = -_10;
144122 + * _12 = (long int) _11; (_11_ no more uses)
144123 + */
144124 +static bool is_call_or_cast(gimple stmt)
144125 +{
144126 + return gimple_assign_cast_p(stmt) || is_gimple_call(stmt);
144127 +}
144128 +
144129 +static bool is_unsigned_cast_or_call_def_stmt(const_tree node)
144130 +{
144131 + const_tree rhs;
144132 + gimple def_stmt;
144133 +
144134 + if (node == NULL_TREE)
144135 + return true;
144136 + if (is_gimple_constant(node))
144137 + return true;
144138 +
144139 + def_stmt = get_def_stmt(node);
144140 + if (!def_stmt)
144141 + return false;
144142 +
144143 + if (is_call_or_cast(def_stmt))
144144 + return true;
144145 +
144146 + if (!is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 2)
144147 + return false;
144148 + rhs = gimple_assign_rhs1(def_stmt);
144149 + def_stmt = get_def_stmt(rhs);
144150 + if (!def_stmt)
144151 + return false;
144152 + return is_call_or_cast(def_stmt);
144153 +}
144154 +
144155 +void unsigned_signed_cast_intentional_overflow(struct visited *visited, gassign *stmt)
144156 +{
144157 + unsigned int use_num;
144158 + gassign *so_stmt;
144159 + const_gimple def_stmt;
144160 + const_tree rhs1, rhs2;
144161 + tree rhs = gimple_assign_rhs1(stmt);
144162 + tree lhs_type = TREE_TYPE(gimple_assign_lhs(stmt));
144163 + const_tree rhs_type = TREE_TYPE(rhs);
144164 +
144165 + if (!(TYPE_UNSIGNED(rhs_type) && !TYPE_UNSIGNED(lhs_type)))
144166 + return;
144167 + if (GET_MODE_BITSIZE(TYPE_MODE(rhs_type)) != GET_MODE_BITSIZE(TYPE_MODE(lhs_type)))
144168 + return;
144169 + use_num = uses_num(rhs);
144170 + if (use_num != 1)
144171 + return;
144172 +
144173 + def_stmt = get_def_stmt(rhs);
144174 + if (!def_stmt)
144175 + return;
144176 + if (!is_gimple_assign(def_stmt))
144177 + return;
144178 +
144179 + rhs1 = gimple_assign_rhs1(def_stmt);
144180 + if (!is_unsigned_cast_or_call_def_stmt(rhs1))
144181 + return;
144182 +
144183 + rhs2 = gimple_assign_rhs2(def_stmt);
144184 + if (!is_unsigned_cast_or_call_def_stmt(rhs2))
144185 + return;
144186 + if (gimple_num_ops(def_stmt) == 3 && !is_gimple_constant(rhs1) && !is_gimple_constant(rhs2))
144187 + return;
144188 +
144189 + so_stmt = get_dup_stmt(visited, stmt);
144190 + create_up_and_down_cast(visited, so_stmt, lhs_type, gimple_assign_rhs1(so_stmt));
144191 +}
144192 +
144193 +bool is_intentional_truncation(gassign *assign)
144194 +{
144195 + enum machine_mode lhs_mode, def_rhs_mode;
144196 + gimple def_stmt;
144197 + const_tree decl, rhs, def_rhs, def_def_rhs, lhs;
144198 +
144199 + if (gimple_num_ops(assign) != 2)
144200 + return false;
144201 +
144202 + lhs = gimple_assign_lhs(assign);
144203 + if (VAR_P(lhs))
144204 + return false;
144205 +
144206 + // structure field write
144207 + decl = get_ref_field(lhs);
144208 + if (TREE_CODE(decl) != FIELD_DECL)
144209 + return false;
144210 +
144211 + rhs = gimple_assign_rhs1(assign);
144212 + def_stmt = get_def_stmt(rhs);
144213 + if (!def_stmt || !gimple_assign_cast_p(def_stmt))
144214 + return false;
144215 +
144216 + lhs_mode = TYPE_MODE(TREE_TYPE(rhs));
144217 + def_rhs = gimple_assign_rhs1(def_stmt);
144218 + def_rhs_mode = TYPE_MODE(TREE_TYPE(def_rhs));
144219 + // cast from 16 to 8
144220 + if (def_rhs_mode != HImode || lhs_mode != QImode)
144221 + return false;
144222 +
144223 + def_stmt = get_def_stmt(def_rhs);
144224 + if (!def_stmt || !is_gimple_assign(def_stmt) || gimple_num_ops(def_stmt) != 2)
144225 + return false;
144226 +
144227 + def_def_rhs = gimple_assign_rhs1(def_stmt);
144228 + // structure field read
144229 + return TREE_CODE(def_def_rhs) == MEM_REF;
144230 +}
144231 +
144232 diff --git a/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c b/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c
144233 new file mode 100644
144234 index 0000000..5622b51
144235 --- /dev/null
144236 +++ b/tools/gcc/size_overflow_plugin/remove_unnecessary_dup.c
144237 @@ -0,0 +1,137 @@
144238 +/*
144239 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
144240 + * Licensed under the GPL v2, or (at your option) v3
144241 + *
144242 + * Homepage:
144243 + * https://github.com/ephox-gcc-plugins/size_overflow
144244 + *
144245 + * Documentation:
144246 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
144247 + *
144248 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
144249 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
144250 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
144251 + *
144252 + * Usage:
144253 + * $ make
144254 + * $ make run
144255 + */
144256 +
144257 +#include "size_overflow.h"
144258 +
144259 +bool skip_expr_on_double_type(const gassign *stmt)
144260 +{
144261 + enum tree_code code = gimple_assign_rhs_code(stmt);
144262 +
144263 + switch (code) {
144264 + case RSHIFT_EXPR:
144265 + case TRUNC_DIV_EXPR:
144266 + case CEIL_DIV_EXPR:
144267 + case FLOOR_DIV_EXPR:
144268 + case ROUND_DIV_EXPR:
144269 + case EXACT_DIV_EXPR:
144270 + case RDIV_EXPR:
144271 + case TRUNC_MOD_EXPR:
144272 + case CEIL_MOD_EXPR:
144273 + case FLOOR_MOD_EXPR:
144274 + case ROUND_MOD_EXPR:
144275 + return true;
144276 + default:
144277 + return false;
144278 + }
144279 +}
144280 +
144281 +void create_up_and_down_cast(struct visited *visited, gassign *use_stmt, tree orig_type, tree rhs)
144282 +{
144283 + const_tree orig_rhs1;
144284 + tree down_lhs, new_lhs, dup_type = TREE_TYPE(rhs);
144285 + const_gimple down_cast, up_cast;
144286 + gimple_stmt_iterator gsi = gsi_for_stmt(use_stmt);
144287 +
144288 + down_cast = build_cast_stmt(visited, orig_type, rhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
144289 + down_lhs = get_lhs(down_cast);
144290 +
144291 + gsi = gsi_for_stmt(use_stmt);
144292 + up_cast = build_cast_stmt(visited, dup_type, down_lhs, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
144293 + new_lhs = get_lhs(up_cast);
144294 +
144295 + orig_rhs1 = gimple_assign_rhs1(use_stmt);
144296 + if (operand_equal_p(orig_rhs1, rhs, 0))
144297 + gimple_assign_set_rhs1(use_stmt, new_lhs);
144298 + else
144299 + gimple_assign_set_rhs2(use_stmt, new_lhs);
144300 + update_stmt(use_stmt);
144301 +
144302 + pointer_set_insert(visited->my_stmts, up_cast);
144303 + pointer_set_insert(visited->my_stmts, down_cast);
144304 + pointer_set_insert(visited->skip_expr_casts, up_cast);
144305 + pointer_set_insert(visited->skip_expr_casts, down_cast);
144306 +}
144307 +
144308 +static tree get_proper_unsigned_half_type(const_tree node)
144309 +{
144310 + tree new_type, type;
144311 +
144312 + gcc_assert(is_size_overflow_type(node));
144313 +
144314 + type = TREE_TYPE(node);
144315 + switch (TYPE_MODE(type)) {
144316 + case HImode:
144317 + new_type = unsigned_intQI_type_node;
144318 + break;
144319 + case SImode:
144320 + new_type = unsigned_intHI_type_node;
144321 + break;
144322 + case DImode:
144323 + new_type = unsigned_intSI_type_node;
144324 + break;
144325 + case TImode:
144326 + new_type = unsigned_intDI_type_node;
144327 + break;
144328 + default:
144329 + gcc_unreachable();
144330 + }
144331 +
144332 + if (TYPE_QUALS(type) != 0)
144333 + return build_qualified_type(new_type, TYPE_QUALS(type));
144334 + return new_type;
144335 +}
144336 +
144337 +static void insert_cast_rhs(struct visited *visited, gassign *stmt, tree rhs)
144338 +{
144339 + tree type;
144340 +
144341 + if (rhs == NULL_TREE)
144342 + return;
144343 + if (!is_size_overflow_type(rhs))
144344 + return;
144345 +
144346 + type = get_proper_unsigned_half_type(rhs);
144347 + if (is_gimple_constant(rhs))
144348 + return;
144349 + create_up_and_down_cast(visited, stmt, type, rhs);
144350 +}
144351 +
144352 +static void insert_cast(struct visited *visited, gassign *stmt, tree rhs)
144353 +{
144354 + if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode) && !is_size_overflow_type(rhs))
144355 + return;
144356 + gcc_assert(is_size_overflow_type(rhs));
144357 + insert_cast_rhs(visited, stmt, rhs);
144358 +}
144359 +
144360 +void insert_cast_expr(struct visited *visited, gassign *stmt, enum intentional_overflow_type type)
144361 +{
144362 + tree rhs1, rhs2;
144363 +
144364 + if (type == NO_INTENTIONAL_OVERFLOW || type == RHS1_INTENTIONAL_OVERFLOW) {
144365 + rhs1 = gimple_assign_rhs1(stmt);
144366 + insert_cast(visited, stmt, rhs1);
144367 + }
144368 +
144369 + if (type == NO_INTENTIONAL_OVERFLOW || type == RHS2_INTENTIONAL_OVERFLOW) {
144370 + rhs2 = gimple_assign_rhs2(stmt);
144371 + insert_cast(visited, stmt, rhs2);
144372 + }
144373 +}
144374 +
144375 diff --git a/tools/gcc/size_overflow_plugin/size_overflow.h b/tools/gcc/size_overflow_plugin/size_overflow.h
144376 new file mode 100644
144377 index 0000000..3e6a038
144378 --- /dev/null
144379 +++ b/tools/gcc/size_overflow_plugin/size_overflow.h
144380 @@ -0,0 +1,329 @@
144381 +#ifndef SIZE_OVERFLOW_H
144382 +#define SIZE_OVERFLOW_H
144383 +
144384 +#define CREATE_NEW_VAR NULL_TREE
144385 +#define MAX_PARAM 31
144386 +#define CANNOT_FIND_ARG 32
144387 +#define NONE_ARGNUM 32
144388 +
144389 +#define BEFORE_STMT true
144390 +#define AFTER_STMT false
144391 +
144392 +#define TURN_OFF_ASM_STR "# size_overflow MARK_TURN_OFF "
144393 +#define YES_ASM_STR "# size_overflow MARK_YES "
144394 +#define END_INTENTIONAL_ASM_STR "# size_overflow MARK_END_INTENTIONAL "
144395 +#define SO_ASM_STR "# size_overflow "
144396 +#define OK_ASM_STR "# size_overflow MARK_NO"
144397 +
144398 +#define FUNCTION_PTR_P(node) \
144399 + (TREE_CODE(TREE_TYPE(node)) == POINTER_TYPE && (TREE_CODE(TREE_TYPE(TREE_TYPE(node))) == FUNCTION_TYPE || TREE_CODE(TREE_TYPE(TREE_TYPE(node))) == METHOD_TYPE))
144400 +
144401 +#define CODES_LIMIT 32
144402 +
144403 +#define GLOBAL_NIFN_LEN 65536
144404 +#define NO_HASH 65537
144405 +
144406 +#define ONLY_DISABLE_SO true
144407 +#define ONLY_SO false
144408 +
144409 +#include "gcc-common.h"
144410 +
144411 +#include <string.h>
144412 +#include <limits.h>
144413 +
144414 +enum intentional_mark {
144415 + MARK_NO, MARK_YES, MARK_END_INTENTIONAL, MARK_TURN_OFF
144416 +};
144417 +
144418 +enum intentional_overflow_type {
144419 + NO_INTENTIONAL_OVERFLOW, RHS1_INTENTIONAL_OVERFLOW, RHS2_INTENTIONAL_OVERFLOW
144420 +};
144421 +
144422 +enum size_overflow_mark {
144423 + NO_SO_MARK, YES_SO_MARK, ASM_STMT_SO_MARK, ERROR_CODE_SO_MARK
144424 +};
144425 +
144426 +struct decl_hash {
144427 + size_t tree_codes_len;
144428 + unsigned char tree_codes[CODES_LIMIT];
144429 + const_tree decl;
144430 + const char *context;
144431 + unsigned int hash;
144432 + const char *fn_name;
144433 +};
144434 +
144435 +/* Detect error codes
144436 + * * bin_op: is there a binary assignment in the data flow
144437 + * * error_const: whether it falls in the signed range of [-4095, -1]
144438 + * * only_signed_unsigned_cast: is there size cast in the data flow
144439 + * Error code if: bin_op is false, error_const is true and only_signed_unsigned_cast is false
144440 + */
144441 +struct error_code {
144442 + bool bin_op;
144443 + bool error_const;
144444 + bool only_signed_unsigned_cast;
144445 +};
144446 +
144447 +typedef struct error_code * error_code_t;
144448 +
144449 +struct next_interesting_function;
144450 +typedef struct next_interesting_function * next_interesting_function_t;
144451 +
144452 +// Store data associated with the next_interesting_function_t entry
144453 +struct fn_raw_data
144454 +{
144455 + const char *decl_str;
144456 + tree decl;
144457 + const char *context;
144458 + unsigned int hash;
144459 + unsigned int num;
144460 + enum size_overflow_mark marked;
144461 + struct error_code error_data_flow;
144462 +};
144463 +
144464 +#if BUILDING_GCC_VERSION <= 4007
144465 +DEF_VEC_P(next_interesting_function_t);
144466 +DEF_VEC_ALLOC_P(next_interesting_function_t, heap);
144467 +#endif
144468 +
144469 +#if BUILDING_GCC_VERSION >= 5000
144470 +typedef struct hash_set<const_gimple> gimple_set;
144471 +
144472 +static inline bool pointer_set_insert(gimple_set *visited, const_gimple stmt)
144473 +{
144474 + return visited->add(stmt);
144475 +}
144476 +
144477 +static inline bool pointer_set_contains(gimple_set *visited, const_gimple stmt)
144478 +{
144479 + return visited->contains(stmt);
144480 +}
144481 +
144482 +static inline gimple_set* pointer_set_create(void)
144483 +{
144484 + return new hash_set<const_gimple>;
144485 +}
144486 +
144487 +static inline void pointer_set_destroy(gimple_set *visited)
144488 +{
144489 + delete visited;
144490 +}
144491 +
144492 +typedef struct hash_set<next_interesting_function_t> next_interesting_function_set;
144493 +
144494 +static inline bool pointer_set_insert(next_interesting_function_set *visited, next_interesting_function_t node)
144495 +{
144496 + return visited->add(node);
144497 +}
144498 +
144499 +static inline bool pointer_set_contains(next_interesting_function_set *visited, next_interesting_function_t node)
144500 +{
144501 + return visited->contains(node);
144502 +}
144503 +
144504 +static inline next_interesting_function_set *next_interesting_function_pointer_set_create(void)
144505 +{
144506 + return new hash_set<next_interesting_function_t>;
144507 +}
144508 +
144509 +static inline void pointer_set_destroy(next_interesting_function_set *visited)
144510 +{
144511 + delete visited;
144512 +}
144513 +#else
144514 +typedef struct pointer_set_t gimple_set;
144515 +typedef struct pointer_set_t next_interesting_function_set;
144516 +
144517 +static inline next_interesting_function_set *next_interesting_function_pointer_set_create(void)
144518 +{
144519 + return pointer_set_create();
144520 +}
144521 +#endif
144522 +
144523 +struct visited {
144524 + gimple_set *stmts;
144525 + gimple_set *my_stmts;
144526 + gimple_set *skip_expr_casts;
144527 + gimple_set *no_cast_check;
144528 +};
144529 +
144530 +/*
144531 + * * children: callers with data flow into the integer parameter of decl
144532 + * * decl_name: name of the function or the field
144533 + * * context: the containing type name for a function pointer (or "fielddecl" if the type has no name), otherwise either "vardecl" or "fndecl"
144534 + * * hash: hash num of the function
144535 + * * num: parameter number (1-31) or return value (0)
144536 + * * marked: determines whether to duplicate stmts and/or look for missing hashtable entries
144537 + * * orig_next_node: pointer to the originally cloned function
144538 + */
144539 +
144540 +struct next_interesting_function {
144541 + next_interesting_function_t next;
144542 +#if BUILDING_GCC_VERSION <= 4007
144543 + VEC(next_interesting_function_t, heap) *children;
144544 +#else
144545 + vec<next_interesting_function_t, va_heap, vl_embed> *children;
144546 +#endif
144547 + const char *decl_name;
144548 + const char *context;
144549 + unsigned int hash;
144550 + unsigned int num;
144551 + enum size_overflow_mark marked;
144552 + next_interesting_function_t orig_next_node;
144553 + error_code_t error_data_flow;
144554 +};
144555 +
144556 +// size_overflow_plugin.c
144557 +extern tree report_size_overflow_decl;
144558 +extern tree size_overflow_type_HI;
144559 +extern tree size_overflow_type_SI;
144560 +extern tree size_overflow_type_DI;
144561 +extern tree size_overflow_type_TI;
144562 +
144563 +
144564 +// size_overflow_plugin_hash.c
144565 +struct size_overflow_hash {
144566 + const struct size_overflow_hash * const next;
144567 + const char * const name;
144568 + const char * const context;
144569 + const unsigned int param;
144570 +};
144571 +
144572 +extern const struct size_overflow_hash *get_disable_size_overflow_hash_entry(unsigned int hash, const char *decl_name, const char *context, unsigned int argnum);
144573 +extern const char *get_orig_decl_name(const_tree decl);
144574 +extern bool is_size_overflow_asm(const_gimple stmt);
144575 +extern void print_missing_function(next_interesting_function_t node);
144576 +extern const struct size_overflow_hash *get_size_overflow_hash_entry_tree(const_tree fndecl, unsigned int argnum, bool only_from_disable_so_hash_table);
144577 +extern unsigned int find_arg_number_tree(const_tree arg, const_tree func);
144578 +extern unsigned int get_decl_hash(const_tree decl, const char *decl_name);
144579 +extern const struct size_overflow_hash *get_size_overflow_hash_entry(unsigned int hash, const char *decl_name, const char *context, unsigned int argnum);
144580 +
144581 +
144582 +// intentional_overflow.c
144583 +extern enum intentional_mark get_intentional_attr_type(const_tree node);
144584 +extern tree get_size_overflow_asm_input(const gasm *stmt);
144585 +extern enum intentional_mark check_intentional_size_overflow_asm_and_attribute(const_tree var);
144586 +extern bool is_size_overflow_insert_check_asm(const gasm *stmt);
144587 +extern enum intentional_mark check_intentional_attribute(const_gimple stmt, unsigned int argnum);
144588 +extern enum intentional_mark get_so_asm_type(const_gimple stmt);
144589 +extern const_tree get_attribute(const char* attr_name, const_tree decl);
144590 +extern bool is_a_cast_and_const_overflow(const_tree no_const_rhs);
144591 +extern bool is_const_plus_unsigned_signed_truncation(const_tree lhs);
144592 +extern bool is_a_constant_overflow(const gassign *stmt, const_tree rhs);
144593 +extern tree handle_intentional_overflow(struct visited *visited, next_interesting_function_t expand_from, bool check_overflow, gassign *stmt, tree change_rhs, tree new_rhs2);
144594 +extern tree handle_integer_truncation(struct visited *visited, next_interesting_function_t expand_from, const_tree lhs);
144595 +extern bool is_a_neg_overflow(const gassign *stmt, const_tree rhs);
144596 +extern enum intentional_overflow_type add_mul_intentional_overflow(const gassign *stmt);
144597 +extern void unsigned_signed_cast_intentional_overflow(struct visited *visited, gassign *stmt);
144598 +extern bool is_intentional_truncation(gassign *assign);
144599 +
144600 +
144601 +// insert_size_overflow_asm.c
144602 +#if BUILDING_GCC_VERSION >= 4009
144603 +extern opt_pass *make_insert_size_overflow_asm_pass(void);
144604 +#else
144605 +extern struct opt_pass *make_insert_size_overflow_asm_pass(void);
144606 +#endif
144607 +extern bool search_interesting_args(tree fndecl, bool *argnums);
144608 +
144609 +
144610 +// size_overflow_misc.c
144611 +extern bool is_vararg(const_tree fn, unsigned int num);
144612 +extern tree get_ref_field(const_tree ref);
144613 +extern unsigned int get_correct_argnum_fndecl(const_tree fndecl, const_tree correct_argnum_of_fndecl, unsigned int num);
144614 +extern const char *get_type_name_from_field(const_tree field_decl);
144615 +extern void set_dominance_info(void);
144616 +extern void unset_dominance_info(void);
144617 +extern tree get_interesting_orig_fndecl_from_stmt(const gcall *stmt);
144618 +extern tree get_orig_fndecl(const_tree clone_fndecl);
144619 +extern unsigned int get_correct_argnum(const_tree decl, const_tree correct_argnum_of_decl, unsigned int argnum);
144620 +extern bool is_valid_cgraph_node(struct cgraph_node *node);
144621 +extern void set_current_function_decl(tree fndecl);
144622 +extern void unset_current_function_decl(void);
144623 +extern gimple get_def_stmt(const_tree node);
144624 +extern tree create_new_var(tree type);
144625 +extern gimple build_cast_stmt(struct visited *visited, tree dst_type, tree rhs, tree lhs, gimple_stmt_iterator *gsi, bool before, bool force);
144626 +extern bool skip_types(const_tree var);
144627 +extern tree cast_a_tree(tree type, tree var);
144628 +extern bool is_size_overflow_type(const_tree var);
144629 +extern bool made_by_compiler(const_tree decl);
144630 +extern gimple get_fnptr_def_stmt(const_tree fn_ptr);
144631 +extern tree get_lhs(const_gimple stmt);
144632 +
144633 +
144634 +// size_overflow_transform.c
144635 +extern unsigned int size_overflow_transform(struct cgraph_node *node);
144636 +extern tree handle_fnptr_assign(const_gimple stmt);
144637 +
144638 +
144639 +// size_overflow_transform_core.c
144640 +extern tree expand(struct visited *visited, next_interesting_function_t expand_from, tree lhs);
144641 +extern void check_size_overflow(next_interesting_function_t expand_from, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before);
144642 +extern tree dup_assign(struct visited *visited, gassign *oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3);
144643 +extern tree create_assign(struct visited *visited, gimple oldstmt, tree rhs1, bool before);
144644 +
144645 +
144646 +// remove_unnecessary_dup.c
144647 +extern struct opt_pass *make_remove_unnecessary_dup_pass(void);
144648 +extern void insert_cast_expr(struct visited *visited, gassign *stmt, enum intentional_overflow_type type);
144649 +extern bool skip_expr_on_double_type(const gassign *stmt);
144650 +extern void create_up_and_down_cast(struct visited *visited, gassign *use_stmt, tree orig_type, tree rhs);
144651 +
144652 +
144653 +// size_overflow_ipa.c
144654 +struct walk_use_def_data {
144655 + next_interesting_function_t parent;
144656 + struct error_code error_data_flow;
144657 + next_interesting_function_t next_cnodes_head;
144658 + gimple_set *visited;
144659 +};
144660 +
144661 +extern const char* get_decl_context(const_tree decl);
144662 +extern void add_to_global_next_interesting_function(next_interesting_function_t new_entry);
144663 +extern bool has_next_interesting_function_vec(next_interesting_function_t target, next_interesting_function_t next_node);
144664 +extern void push_child(next_interesting_function_t parent, next_interesting_function_t child);
144665 +extern struct cgraph_node *get_cnode(const_tree fndecl);
144666 +extern next_interesting_function_t global_next_interesting_function[GLOBAL_NIFN_LEN];
144667 +extern next_interesting_function_t get_global_next_interesting_function_entry(struct fn_raw_data *raw_data);
144668 +extern next_interesting_function_t get_global_next_interesting_function_entry_with_hash(struct fn_raw_data *raw_data);
144669 +extern void size_overflow_register_hooks(void);
144670 +#if BUILDING_GCC_VERSION >= 4009
144671 +extern opt_pass *make_size_overflow_functions_pass(void);
144672 +#else
144673 +extern struct opt_pass *make_size_overflow_functions_pass(void);
144674 +#endif
144675 +extern void size_overflow_node_removal_hook(struct cgraph_node *node, void *data);
144676 +extern next_interesting_function_t get_and_create_next_node_from_global_next_nodes(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node);
144677 +extern next_interesting_function_t create_new_next_interesting_decl(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node);
144678 +extern next_interesting_function_t create_new_next_interesting_entry(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node);
144679 +extern bool is_default_error_data_flow(error_code_t error_code);
144680 +
144681 +
144682 +// size_overflow_lto.c
144683 +extern void size_overflow_read_summary_lto(void);
144684 +#if BUILDING_GCC_VERSION >= 4008
144685 +extern void size_overflow_write_summary_lto(void);
144686 +#elif BUILDING_GCC_VERSION >= 4006
144687 +extern void size_overflow_write_summary_lto(cgraph_node_set set, varpool_node_set vset);
144688 +#else
144689 +extern void size_overflow_write_summary_lto(cgraph_node_set set);
144690 +#endif
144691 +
144692 +// size_overflow_fnptrs.c
144693 +extern void handle_function_ptr_ret(struct walk_use_def_data *use_def_data, const_tree fn_ptr);
144694 +extern void check_local_variables(next_interesting_function_t next_node);
144695 +extern void check_global_variables(next_interesting_function_t cur_global);
144696 +extern next_interesting_function_t get_and_create_next_node_from_global_next_nodes_fnptr(const_tree fn_ptr, struct fn_raw_data *raw_data);
144697 +
144698 +
144699 +// size_overflow_debug.c
144700 +extern void __unused print_intentional_mark(enum intentional_mark mark);
144701 +extern unsigned int __unused size_overflow_dump_function(FILE *file, struct cgraph_node *node);
144702 +extern void __unused print_next_interesting_functions_chain(next_interesting_function_t head, bool only_this);
144703 +extern void __unused print_global_next_interesting_functions(void);
144704 +extern void __unused print_children_chain_list(next_interesting_function_t next_node);
144705 +extern void __unused print_all_next_node_children_chain_list(next_interesting_function_t next_node);
144706 +extern const char * __unused print_so_mark_name(enum size_overflow_mark mark);
144707 +extern const char * __unused print_intentional_mark_name(enum intentional_mark mark);
144708 +
144709 +#endif
144710 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_debug.c b/tools/gcc/size_overflow_plugin/size_overflow_debug.c
144711 new file mode 100644
144712 index 0000000..48994d7
144713 --- /dev/null
144714 +++ b/tools/gcc/size_overflow_plugin/size_overflow_debug.c
144715 @@ -0,0 +1,192 @@
144716 +/*
144717 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
144718 + * Licensed under the GPL v2, or (at your option) v3
144719 + *
144720 + * Homepage:
144721 + * https://github.com/ephox-gcc-plugins/size_overflow
144722 + *
144723 + * Documentation:
144724 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
144725 + *
144726 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
144727 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
144728 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
144729 + *
144730 + * Usage:
144731 + * $ make
144732 + * $ make run
144733 + */
144734 +
144735 +#include "size_overflow.h"
144736 +
144737 +void __unused print_intentional_mark(enum intentional_mark mark)
144738 +{
144739 + fprintf(stderr, "intentional mark: ");
144740 + switch (mark) {
144741 + case MARK_NO:
144742 + fprintf(stderr, "mark_no\n");
144743 + break;
144744 + case MARK_YES:
144745 + fprintf(stderr, "mark_yes\n");
144746 + break;
144747 + case MARK_TURN_OFF:
144748 + fprintf(stderr, "mark_turn_off\n");
144749 + break;
144750 + case MARK_END_INTENTIONAL:
144751 + fprintf(stderr, "mark_end_intentional\n");
144752 + break;
144753 + }
144754 +}
144755 +
144756 +unsigned int __unused size_overflow_dump_function(FILE *file, struct cgraph_node *node)
144757 +{
144758 + basic_block bb;
144759 +
144760 + fprintf(file, "dump_function function_name: %s\n", cgraph_node_name(node));
144761 +
144762 + fprintf(file, "\nstmts:\n");
144763 + FOR_ALL_BB_FN(bb, DECL_STRUCT_FUNCTION(NODE_DECL(node))) {
144764 + gimple_stmt_iterator si;
144765 +
144766 + fprintf(file, "<bb %u>:\n", bb->index);
144767 + for (si = gsi_start_phis(bb); !gsi_end_p(si); gsi_next(&si))
144768 + print_gimple_stmt(file, gsi_stmt(si), 0, TDF_VOPS|TDF_MEMSYMS);
144769 + for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
144770 + print_gimple_stmt(file, gsi_stmt(si), 0, TDF_VOPS|TDF_MEMSYMS);
144771 + fprintf(file, "\n");
144772 + }
144773 +
144774 + fprintf(file, "---------------------------------\n");
144775 +
144776 + return 0;
144777 +}
144778 +
144779 +static void __unused print_next_interesting_function(next_interesting_function_t node)
144780 +{
144781 + unsigned int i;
144782 + next_interesting_function_t cur;
144783 +
144784 + if (!node)
144785 + return;
144786 +
144787 + fprintf(stderr, "print_next_interesting_function: ptr: %p, ", node);
144788 + fprintf(stderr, "decl_name: %s, ", node->decl_name);
144789 +
144790 + fprintf(stderr, "num: %u marked: %s context: %s\n", node->num, print_so_mark_name(node->marked), node->context);
144791 +#if BUILDING_GCC_VERSION <= 4007
144792 + if (VEC_empty(next_interesting_function_t, node->children))
144793 + return;
144794 + FOR_EACH_VEC_ELT(next_interesting_function_t, node->children, i, cur) {
144795 +#else
144796 + FOR_EACH_VEC_SAFE_ELT(node->children, i, cur) {
144797 +#endif
144798 + fprintf(stderr, "\t%u. child: %s %u %p marked: %s context: %s\n", i + 1, cur->decl_name, cur->num, cur, print_so_mark_name(cur->marked), cur->context);
144799 + }
144800 +
144801 + if (is_default_error_data_flow(node->error_data_flow))
144802 + fprintf(stderr, "error data flow: default\n");
144803 + else
144804 + fprintf(stderr, "error data flow: bin_op: %c, error_const: %c, only_signed_unsigned_cast: %c\n", node->error_data_flow->bin_op?'t':'f', node->error_data_flow->error_const?'t':'f', node->error_data_flow->only_signed_unsigned_cast?'t':'f');
144805 +}
144806 +
144807 +// Dump the full next_interesting_function_t list for parsing by print_dependecy.py
144808 +void __unused print_next_interesting_functions_chain(next_interesting_function_t head, bool only_this)
144809 +{
144810 + next_interesting_function_t cur;
144811 + unsigned int len;
144812 +
144813 + fprintf(stderr, "----------------------\nnext_interesting_function_t head: %p\n", head);
144814 + for (cur = head, len = 0; cur; cur = cur->next, len++) {
144815 + fprintf(stderr, "%u. ", len + 1);
144816 + print_next_interesting_function(cur);
144817 +
144818 + fprintf(stderr, "+++++ has orig node: %p +++++\n", cur->orig_next_node);
144819 + print_next_interesting_function(cur->orig_next_node);
144820 +
144821 + if (only_this)
144822 + break;
144823 + }
144824 +
144825 + fprintf(stderr, "len: %u\n----------------------\n\n\n", len + 1);
144826 +}
144827 +
144828 +void __unused print_global_next_interesting_functions(void)
144829 +{
144830 + unsigned int i;
144831 +
144832 + fprintf(stderr, "----------------------\nprint_global_next_interesting_functions:\n----------------------\n");
144833 + for (i = 0; i < GLOBAL_NIFN_LEN; i++) {
144834 + if (!global_next_interesting_function[i])
144835 + continue;
144836 + fprintf(stderr, "hash: %u\n", i);
144837 + print_next_interesting_functions_chain(global_next_interesting_function[i], false);
144838 + }
144839 + fprintf(stderr, "----------------------\n\n");
144840 +}
144841 +
144842 +// Dump the information related to the specified next_interesting_function_t for parsing by print_dependecy.py
144843 +void __unused print_children_chain_list(next_interesting_function_t next_node)
144844 +{
144845 + next_interesting_function_t cur;
144846 + unsigned int i;
144847 +
144848 +#if BUILDING_GCC_VERSION <= 4007
144849 + if (VEC_empty(next_interesting_function_t, next_node->children))
144850 + return;
144851 + FOR_EACH_VEC_ELT(next_interesting_function_t, next_node->children, i, cur) {
144852 +#else
144853 + FOR_EACH_VEC_SAFE_ELT(next_node->children, i, cur) {
144854 +#endif
144855 + fprintf(stderr, "parent: %s %u (marked: %s) child: %s %u\n", next_node->decl_name, next_node->num, print_so_mark_name(next_node->marked), cur->decl_name, cur->num);
144856 + print_children_chain_list(cur);
144857 + }
144858 +}
144859 +
144860 +void __unused print_all_next_node_children_chain_list(next_interesting_function_t head)
144861 +{
144862 + next_interesting_function_t cur;
144863 +
144864 + for (cur = head; cur; cur = cur->next) {
144865 +#if BUILDING_GCC_VERSION <= 4007
144866 + if (VEC_empty(next_interesting_function_t, cur->children))
144867 +#else
144868 + if (vec_safe_length(cur->children) == 0)
144869 +#endif
144870 + continue;
144871 + fprintf(stderr, "############ START ############\n");
144872 + print_children_chain_list(cur);
144873 + fprintf(stderr, "############ END ############\n");
144874 + }
144875 +}
144876 +
144877 +const char * __unused print_intentional_mark_name(enum intentional_mark mark)
144878 +{
144879 + switch(mark) {
144880 + case MARK_NO:
144881 + return "mark no";
144882 + case MARK_YES:
144883 + return "mark yes";
144884 + case MARK_END_INTENTIONAL:
144885 + return "mark end intetional";
144886 + case MARK_TURN_OFF:
144887 + return "mark turn off";
144888 + }
144889 +
144890 + gcc_unreachable();
144891 +}
144892 +
144893 +const char * __unused print_so_mark_name(enum size_overflow_mark mark)
144894 +{
144895 + switch(mark) {
144896 + case ASM_STMT_SO_MARK:
144897 + return "asm_stmt_so_mark";
144898 + case YES_SO_MARK:
144899 + return "yes_so_mark";
144900 + case NO_SO_MARK:
144901 + return "no_so_mark";
144902 + case ERROR_CODE_SO_MARK:
144903 + return "error_code_so_mark";
144904 + }
144905 +
144906 + gcc_unreachable();
144907 +}
144908 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
144909 new file mode 100644
144910 index 0000000..2281d65
144911 --- /dev/null
144912 +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
144913 @@ -0,0 +1,15951 @@
144914 +enable_so_recv_ctrl_pipe_us_data_0 recv_ctrl_pipe us_data 0 0 NULL
144915 +enable_so___earlyonly_bootmem_alloc_fndecl_3 __earlyonly_bootmem_alloc fndecl 2-3-4 3 NULL
144916 +enable_so_size_ttm_mem_reg_8 size ttm_mem_reg 0 8 NULL
144917 +enable_so_char2uni_nls_table_12 char2uni nls_table 0 12 NULL
144918 +enable_so_nrbufs_pipe_inode_info_13 nrbufs pipe_inode_info 0 13 NULL
144919 +enable_so_NumPhys__EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE_17 NumPhys _EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE 0 17 NULL
144920 +enable_so_max_name_len_fndecl_19 max_name_len fndecl 0 19 NULL nohasharray
144921 +enable_so_kfd_wait_on_events_fndecl_19 kfd_wait_on_events fndecl 2 19 &enable_so_max_name_len_fndecl_19
144922 +enable_so_ext4_seek_data_fndecl_21 ext4_seek_data fndecl 2 21 NULL
144923 +enable_so_addr_to_user_sctp_pf_23 addr_to_user sctp_pf 0 23 NULL
144924 +enable_so_max_frags_vxge_hw_fifo_config_26 max_frags vxge_hw_fifo_config 0 26 NULL
144925 +enable_so_snic_reset_stats_write_fndecl_30 snic_reset_stats_write fndecl 3 30 NULL
144926 +enable_so_total_drm_buf_35 total drm_buf 0 35 NULL
144927 +enable_so_index_rs_rate_53 index rs_rate 0 53 NULL
144928 +enable_so_mmap_min_addr_vardecl_56 mmap_min_addr vardecl 0 56 NULL
144929 +enable_so_pattern_len_tcf_em_text_57 pattern_len tcf_em_text 0 57 NULL
144930 +enable_so_bin_to_hex_dup_fndecl_62 bin_to_hex_dup fndecl 2 62 NULL
144931 +enable_so_gart_alloc_coherent_fndecl_63 gart_alloc_coherent fndecl 2 63 NULL
144932 +enable_so_cipso_v4_delopt_fndecl_67 cipso_v4_delopt fndecl 0 67 NULL
144933 +enable_so_npages_mlx5_pages_req_70 npages mlx5_pages_req 0 70 NULL
144934 +enable_so_iov_iter_get_pages_alloc_fndecl_76 iov_iter_get_pages_alloc fndecl 0-3 76 NULL
144935 +enable_so_iwch_reject_cr_fndecl_78 iwch_reject_cr fndecl 3 78 NULL
144936 +enable_so_data_size_data_queue_85 data_size data_queue 0 85 NULL
144937 +enable_so_ceph_dir_llseek_fndecl_99 ceph_dir_llseek fndecl 2 99 NULL
144938 +enable_so_erase_size_flash_info_100 erase_size flash_info 0 100 NULL
144939 +enable_so_fi_blkno_ocfs2_find_inode_args_104 fi_blkno ocfs2_find_inode_args 0 104 NULL
144940 +enable_so_phase_snd_usb_endpoint_106 phase snd_usb_endpoint 0 106 NULL
144941 +enable_so_kvm_read_guest_fndecl_107 kvm_read_guest fndecl 2-4 107 NULL
144942 +enable_so_add_new_gdb_meta_bg_fndecl_116 add_new_gdb_meta_bg fndecl 3 116 NULL
144943 +enable_so_buffer_min_vardecl_floppy_c_117 buffer_min vardecl_floppy.c 0 117 NULL
144944 +enable_so_needed_tailroom_net_device_118 needed_tailroom net_device 0 118 NULL
144945 +enable_so_ipath_reg_phys_mr_fndecl_125 ipath_reg_phys_mr fndecl 3 125 NULL
144946 +enable_so_in_ep_rtl_usb_128 in_ep rtl_usb 0 128 NULL
144947 +enable_so_size_roundup_power2_fndecl_133 size_roundup_power2 fndecl 1-0 133 NULL
144948 +enable_so_cifs_setxattr_fndecl_134 cifs_setxattr fndecl 4 134 NULL
144949 +enable_so_nr_pages_dma_mapping_136 nr_pages dma_mapping 0 136 NULL
144950 +enable_so_len_io_failure_record_139 len io_failure_record 0 139 NULL
144951 +enable_so_n_mac_vlan_filters_vfpf_set_q_filters_tlv_142 n_mac_vlan_filters vfpf_set_q_filters_tlv 0 142 NULL
144952 +enable_so_leaf_move_items_fndecl_145 leaf_move_items fndecl 4 145 NULL
144953 +enable_so_ir_context_support_fw_ohci_147 ir_context_support fw_ohci 0 147 NULL
144954 +enable_so_jffs2_nfs_get_inode_fndecl_152 jffs2_nfs_get_inode fndecl 2 152 NULL
144955 +enable_so_zd_usb_iowrite16v_async_fndecl_163 zd_usb_iowrite16v_async fndecl 3 163 NULL
144956 +enable_so_ext4_ext_remove_space_fndecl_170 ext4_ext_remove_space fndecl 2-3 170 NULL
144957 +enable_so_acl_len_nfs_getaclres_171 acl_len nfs_getaclres 0 171 NULL
144958 +enable_so_vactive_vblank_hi_detailed_pixel_timing_173 vactive_vblank_hi detailed_pixel_timing 0 173 NULL
144959 +enable_so_ecryptfs_hash_bits_vardecl_messaging_c_174 ecryptfs_hash_bits vardecl_messaging.c 0 174 NULL
144960 +enable_so_vfs_write_fndecl_176 vfs_write fndecl 3 176 NULL
144961 +enable_so_length_sl811h_ep_186 length sl811h_ep 0 186 NULL
144962 +enable_so_sddr55_write_data_fndecl_188 sddr55_write_data fndecl 4-3 188 NULL
144963 +enable_so_mptctl_do_fw_download_fndecl_190 mptctl_do_fw_download fndecl 3 190 NULL
144964 +enable_so_give_pages_fndecl_198 give_pages fndecl 3 198 NULL
144965 +enable_so_sys_pwrite64_fndecl_206 sys_pwrite64 fndecl 3 206 NULL
144966 +enable_so_xfs_zero_file_space_fndecl_211 xfs_zero_file_space fndecl 2-3 211 NULL nohasharray
144967 +enable_so_bn_shadow_fndecl_211 bn_shadow fndecl 2 211 &enable_so_xfs_zero_file_space_fndecl_211
144968 +enable_so_cxgb_alloc_mem_fndecl_212 cxgb_alloc_mem fndecl 1 212 NULL
144969 +enable_so_copies_r10conf_216 copies r10conf 0 216 NULL
144970 +enable_so_ieee80211_aes_ccm_decrypt_fndecl_227 ieee80211_aes_ccm_decrypt fndecl 7-5 227 NULL
144971 +enable_so_afs_cell_alloc_fndecl_231 afs_cell_alloc fndecl 2 231 NULL
144972 +enable_so_ad9523_write_fndecl_233 ad9523_write fndecl 2 233 NULL
144973 +enable_so_ocfs2_mark_extent_refcounted_fndecl_240 ocfs2_mark_extent_refcounted fndecl 4-6 240 NULL
144974 +enable_so_musb_readw_vardecl_241 musb_readw vardecl 0 241 NULL
144975 +enable_so_sysv_inode_by_name_fndecl_242 sysv_inode_by_name fndecl 0 242 NULL
144976 +enable_so_offset_nvkm_vma_248 offset nvkm_vma 0 248 NULL
144977 +enable_so_ipw_get_current_rate_fndecl_250 ipw_get_current_rate fndecl 0 250 NULL
144978 +enable_so_ixgbevf_change_mtu_fndecl_251 ixgbevf_change_mtu fndecl 2 251 NULL nohasharray
144979 +enable_so_pclk_limit_ov6650_251 pclk_limit ov6650 0 251 &enable_so_ixgbevf_change_mtu_fndecl_251
144980 +enable_so_venus_symlink_fndecl_257 venus_symlink fndecl 6-4 257 NULL
144981 +enable_so_lf_entries_gfs2_leaf_263 lf_entries gfs2_leaf 0 263 NULL
144982 +enable_so_es_lblk_extent_status_280 es_lblk extent_status 0 280 NULL
144983 +enable_so_bytesperline_sh_veu_vfmt_288 bytesperline sh_veu_vfmt 0 288 NULL
144984 +enable_so_do_mmap_pgoff_fndecl_291 do_mmap_pgoff fndecl 3-6 291 NULL
144985 +enable_so_insert_dir_log_key_fndecl_295 insert_dir_log_key fndecl 6-5 295 NULL
144986 +enable_so_islpci_mgt_transaction_fndecl_297 islpci_mgt_transaction fndecl 5 297 NULL
144987 +enable_so__alloc_cdb_cont_fndecl_298 _alloc_cdb_cont fndecl 2 298 NULL
144988 +enable_so_xfpregs_get_fndecl_305 xfpregs_get fndecl 4 305 NULL
144989 +enable_so_omapdss_update_prop_fndecl_309 omapdss_update_prop fndecl 3 309 NULL
144990 +enable_so_signal_cck_phy_hdr_312 signal cck_phy_hdr 0 312 NULL
144991 +enable_so_MaxBufferSize_negotiate_rsp_314 MaxBufferSize negotiate_rsp 0 314 NULL
144992 +enable_so_num_alt_usb_usbvision_328 num_alt usb_usbvision 0 328 NULL
144993 +enable_so_start_fb_cmap_user_333 start fb_cmap_user 0 333 NULL
144994 +enable_so_block_size_se_dev_attrib_334 block_size se_dev_attrib 0 334 NULL
144995 +enable_so_udl_submit_urb_fndecl_353 udl_submit_urb fndecl 3 353 NULL
144996 +enable_so_bNumConfigurations_usb_device_descriptor_360 bNumConfigurations usb_device_descriptor 0 360 NULL
144997 +enable_so_link_buf_size_dvb_ca_slot_365 link_buf_size dvb_ca_slot 0 365 NULL
144998 +enable_so_length_st21nfca_atr_req_366 length st21nfca_atr_req 0 366 NULL
144999 +enable_so_inode_incr_space_fndecl_367 inode_incr_space fndecl 2 367 NULL
145000 +enable_so_fusbh200_urb_done_fndecl_371 fusbh200_urb_done fndecl 3 371 NULL
145001 +enable_so_setup_ctxt_fndecl_374 setup_ctxt fndecl 2 374 NULL
145002 +enable_so___i2400mu_send_barker_fndecl_375 __i2400mu_send_barker fndecl 3 375 NULL
145003 +enable_so_cx18_read_fndecl_384 cx18_read fndecl 3 384 NULL
145004 +enable_so_keyspan_pda_write_fndecl_398 keyspan_pda_write fndecl 4 398 NULL
145005 +enable_so_cyberjack_write_fndecl_399 cyberjack_write fndecl 4 399 NULL
145006 +enable_so_fcp_resid_bnx2fc_cmd_412 fcp_resid bnx2fc_cmd 0 412 NULL
145007 +enable_so_base_cbuf_417 base cbuf 0 417 NULL
145008 +enable_so_fat_short2uni_fndecl_423 fat_short2uni fndecl 0 423 NULL
145009 +enable_so_se_dev_set_block_size_fndecl_424 se_dev_set_block_size fndecl 2 424 NULL
145010 +enable_so___insert_new_range_fndecl_427 __insert_new_range fndecl 3-2 427 NULL
145011 +enable_so_status_netdev_desc_430 status netdev_desc 0 430 NULL
145012 +enable_so_twsk_obj_size_timewait_sock_ops_433 twsk_obj_size timewait_sock_ops 0 433 NULL
145013 +enable_so_hfs_file_fsync_fndecl_434 hfs_file_fsync fndecl 2 434 NULL
145014 +enable_so_gfs2_get_block_type_fndecl_443 gfs2_get_block_type fndecl 2 443 NULL
145015 +enable_so_challenge_len_ieee802_11_elems_444 challenge_len ieee802_11_elems 0 444 NULL
145016 +enable_so_cem_build_path_fndecl_451 cem_build_path fndecl 0 451 NULL nohasharray
145017 +enable_so_k3_dma_prep_memcpy_fndecl_451 k3_dma_prep_memcpy fndecl 4 451 &enable_so_cem_build_path_fndecl_451
145018 +enable_so_width_g2d_frame_453 width g2d_frame 0 453 NULL
145019 +enable_so___kfifo_max_r_fndecl_459 __kfifo_max_r fndecl 1-2 459 NULL
145020 +enable_so_e_shnum_elf64_hdr_461 e_shnum elf64_hdr 0 461 NULL
145021 +enable_so_page_size_nvme_dev_465 page_size nvme_dev 0 465 NULL
145022 +enable_so_udf_load_logicalvol_fndecl_471 udf_load_logicalvol fndecl 2 471 NULL
145023 +enable_so_map_write_fndecl_480 map_write fndecl 3 480 NULL
145024 +enable_so_ext_start_xfs_extent_486 ext_start xfs_extent 0 486 NULL
145025 +enable_so_nr_local_rds_rdma_args_488 nr_local rds_rdma_args 0 488 NULL
145026 +enable_so_sp2_read_i2c_fndecl_489 sp2_read_i2c fndecl 4 489 NULL
145027 +enable_so_edid_store_fndecl_491 edid_store fndecl 6 491 NULL
145028 +enable_so_sndbuf_size_net_conf_498 sndbuf_size net_conf 0 498 NULL
145029 +enable_so_cfg80211_inform_bss_width_frame_fndecl_501 cfg80211_inform_bss_width_frame fndecl 5 501 NULL
145030 +enable_so_max_seg_sz_mmc_test_area_502 max_seg_sz mmc_test_area 0 502 NULL nohasharray
145031 +enable_so_security_inode_getxattr_fndecl_502 security_inode_getxattr fndecl 0 502 &enable_so_max_seg_sz_mmc_test_area_502
145032 +enable_so_hlen_ip6_tnl_510 hlen ip6_tnl 0 510 NULL
145033 +enable_so_gfn_guest_walkerEPT_517 gfn guest_walkerEPT 0 517 NULL
145034 +enable_so_dig_rate_snd_bt87x_board_522 dig_rate snd_bt87x_board 0 522 NULL
145035 +enable_so_grow_gnttab_list_fndecl_523 grow_gnttab_list fndecl 1 523 NULL
145036 +enable_so_videobuf_read_zerocopy_fndecl_546 videobuf_read_zerocopy fndecl 3 546 NULL
145037 +enable_so_iscsi_add_hdr_fndecl_551 iscsi_add_hdr fndecl 2 551 NULL
145038 +enable_so_names_count_tomoyo_condition_552 names_count tomoyo_condition 0 552 NULL
145039 +enable_so_try_alloc_port_fndecl_557 try_alloc_port fndecl 2 557 NULL
145040 +enable_so_cmd_amdkfd_ioctl_desc_560 cmd amdkfd_ioctl_desc 0 560 NULL
145041 +enable_so_kzalloc_node_fndecl_563 kzalloc_node fndecl 1 563 NULL
145042 +enable_so_btrfs_item_size_nr_fndecl_572 btrfs_item_size_nr fndecl 0 572 NULL
145043 +enable_so_cfi_read_pri_fndecl_573 cfi_read_pri fndecl 3 573 NULL
145044 +enable_so_disk_secno_bplus_leaf_node_574 disk_secno bplus_leaf_node 0 574 NULL
145045 +enable_so_paging64_init_context_common_fndecl_577 paging64_init_context_common fndecl 3 577 NULL nohasharray
145046 +enable_so_ext4_swap_extents_fndecl_577 ext4_swap_extents fndecl 6-5-4 577 &enable_so_paging64_init_context_common_fndecl_577
145047 +enable_so_hash_extent_data_ref_fndecl_581 hash_extent_data_ref fndecl 0 581 NULL
145048 +enable_so_blk_update_bidi_request_fndecl_588 blk_update_bidi_request fndecl 3-4 588 NULL
145049 +enable_so_drm_property_create_bitmask_fndecl_591 drm_property_create_bitmask fndecl 6 591 NULL
145050 +enable_so_xmit_head_mgsl_struct_596 xmit_head mgsl_struct 0 596 NULL
145051 +enable_so_nr_groups_pcpu_alloc_info_602 nr_groups pcpu_alloc_info 0 602 NULL
145052 +enable_so_xfs_bmapi_read_fndecl_603 xfs_bmapi_read fndecl 3-2 603 NULL nohasharray
145053 +enable_so_lcm_not_zero_fndecl_603 lcm_not_zero fndecl 0-1-2 603 &enable_so_xfs_bmapi_read_fndecl_603
145054 +enable_so_getxattr_fndecl_605 getxattr fndecl 4 605 NULL
145055 +enable_so_copy_and_ioctl_fndecl_609 copy_and_ioctl fndecl 4 609 NULL
145056 +enable_so_ftrace_size_ramoops_context_610 ftrace_size ramoops_context 0 610 NULL
145057 +enable_so_ixgbe_alloc_q_vector_fndecl_612 ixgbe_alloc_q_vector fndecl 6-4 612 NULL
145058 +enable_so_nvme_trans_log_supp_pages_fndecl_625 nvme_trans_log_supp_pages fndecl 3 625 NULL
145059 +enable_so_xenbus_file_read_fndecl_632 xenbus_file_read fndecl 3 632 NULL
145060 +enable_so_ieee80211_rx_mgmt_beacon_fndecl_637 ieee80211_rx_mgmt_beacon fndecl 3 637 NULL
145061 +enable_so_entry_len__i2o_hrt_640 entry_len _i2o_hrt 0 640 NULL
145062 +enable_so_d1_vring_rx_mac_643 d1 vring_rx_mac 0 643 NULL nohasharray
145063 +enable_so_msg_len_dvb_diseqc_master_cmd_643 msg_len dvb_diseqc_master_cmd 0 643 &enable_so_d1_vring_rx_mac_643
145064 +enable_so_ocrdma_get_pbl_info_fndecl_644 ocrdma_get_pbl_info fndecl 3 644 NULL
145065 +enable_so_size_si_sm_handlers_648 size si_sm_handlers 0 648 NULL
145066 +enable_so_header_length_irda_usb_cb_657 header_length irda_usb_cb 0 657 NULL
145067 +enable_so_rtsx_usb_read_ppbuf_fndecl_659 rtsx_usb_read_ppbuf fndecl 3 659 NULL nohasharray
145068 +enable_so_nchannels_fs_dev_659 nchannels fs_dev 0 659 &enable_so_rtsx_usb_read_ppbuf_fndecl_659
145069 +enable_so_vmx_hwapic_irr_update_fndecl_662 vmx_hwapic_irr_update fndecl 2 662 NULL
145070 +enable_so_start_async_extent_663 start async_extent 0 663 NULL
145071 +enable_so_evdev_do_ioctl_fndecl_664 evdev_do_ioctl fndecl 2 664 NULL
145072 +enable_so___push_leaf_left_fndecl_667 __push_leaf_left fndecl 8 667 NULL
145073 +enable_so_lbs_highsnr_write_fndecl_671 lbs_highsnr_write fndecl 3 671 NULL
145074 +enable_so_skb_size_nx_host_rds_ring_672 skb_size nx_host_rds_ring 0 672 NULL
145075 +enable_so_minor_hash_fname_673 minor_hash fname 0 673 NULL
145076 +enable_so_bond_change_mtu_fndecl_674 bond_change_mtu fndecl 2 674 NULL
145077 +enable_so_page_order_sg_scatter_hold_679 page_order sg_scatter_hold 0 679 NULL
145078 +enable_so_get_eeprom_len_ethtool_ops_686 get_eeprom_len ethtool_ops 0 686 NULL
145079 +enable_so_follow_page_pte_fndecl_687 follow_page_pte fndecl 2 687 NULL
145080 +enable_so_mchip_get_frame_fndecl_692 mchip_get_frame fndecl 0 692 NULL
145081 +enable_so_ttm_page_pool_free_fndecl_693 ttm_page_pool_free fndecl 2 693 NULL
145082 +enable_so_handle_pte_fault_fndecl_694 handle_pte_fault fndecl 3 694 NULL
145083 +enable_so_do_mpage_readpage_fndecl_715 do_mpage_readpage fndecl 3 715 NULL
145084 +enable_so_write_cache_pages_fndecl_737 write_cache_pages fndecl 0 737 NULL
145085 +enable_so_count_TxFifo_750 count TxFifo 0 750 NULL
145086 +enable_so_DataBufsSize_snd_korg1212_758 DataBufsSize snd_korg1212 0 758 NULL
145087 +enable_so_ilf_len_xfs_inode_log_format_759 ilf_len xfs_inode_log_format 0 759 NULL
145088 +enable_so_tda8083_readregs_fndecl_764 tda8083_readregs fndecl 4 764 NULL
145089 +enable_so_iwl_trans_alloc_fndecl_767 iwl_trans_alloc fndecl 1 767 NULL
145090 +enable_so_vb2_fop_read_fndecl_771 vb2_fop_read fndecl 3 771 NULL
145091 +enable_so_truncate_one_csum_fndecl_777 truncate_one_csum fndecl 4-5 777 NULL
145092 +enable_so_gem_change_mtu_fndecl_785 gem_change_mtu fndecl 2 785 NULL
145093 +enable_so_prepare_reply_buffer_fndecl_793 prepare_reply_buffer fndecl 4 793 NULL
145094 +enable_so_extent_direct_795 extent direct 0 795 NULL
145095 +enable_so_height_qxl_head_799 height qxl_head 0 799 NULL
145096 +enable_so_de_namelen_reiserfs_dir_entry_804 de_namelen reiserfs_dir_entry 0 804 NULL
145097 +enable_so_request_key_auth_read_fndecl_830 request_key_auth_read fndecl 3 830 NULL
145098 +enable_so_SyS_sethostname_fndecl_837 SyS_sethostname fndecl 2 837 NULL
145099 +enable_so_trim_bitmaps_fndecl_845 trim_bitmaps fndecl 3-4 845 NULL
145100 +enable_so_s_inopb_ufs_sb_private_info_849 s_inopb ufs_sb_private_info 0 849 NULL
145101 +enable_so__picolcd_flash_write_fndecl_853 _picolcd_flash_write fndecl 4 853 NULL
145102 +enable_so_irnet_ctrl_write_fndecl_856 irnet_ctrl_write fndecl 3 856 NULL
145103 +enable_so_rsi_copy_to_card_fndecl_858 rsi_copy_to_card fndecl 3 858 NULL
145104 +enable_so_unix_seqpacket_recvmsg_fndecl_861 unix_seqpacket_recvmsg fndecl 3 861 NULL
145105 +enable_so_adu_read_fndecl_866 adu_read fndecl 3 866 NULL
145106 +enable_so_safe_prepare_write_buffer_fndecl_872 safe_prepare_write_buffer fndecl 3 872 NULL
145107 +enable_so_field_count_audit_rule_data_886 field_count audit_rule_data 0 886 NULL
145108 +enable_so_il3945_get_adjacent_rate_fndecl_892 il3945_get_adjacent_rate fndecl 2 892 NULL nohasharray
145109 +enable_so_octeon_read_device_mem64_fndecl_892 octeon_read_device_mem64 fndecl 0 892 &enable_so_il3945_get_adjacent_rate_fndecl_892
145110 +enable_so_orinoco_change_mtu_fndecl_895 orinoco_change_mtu fndecl 2 895 NULL nohasharray
145111 +enable_so_forw_xfs_attr3_icleaf_hdr_895 forw xfs_attr3_icleaf_hdr 0 895 &enable_so_orinoco_change_mtu_fndecl_895
145112 +enable_so_p_srate_f_uac2_opts_896 p_srate f_uac2_opts 0 896 NULL
145113 +enable_so_vm_normal_page_fndecl_897 vm_normal_page fndecl 2 897 NULL
145114 +enable_so_rdma_copy_tail_fndecl_898 rdma_copy_tail fndecl 3 898 NULL nohasharray
145115 +enable_so_cpu_mask_len_res_opts_898 cpu_mask_len res_opts 0 898 &enable_so_rdma_copy_tail_fndecl_898
145116 +enable_so_user_bs_factor_ide_tape_obj_906 user_bs_factor ide_tape_obj 0 906 NULL
145117 +enable_so_tcpprobe_sprint_fndecl_909 tcpprobe_sprint fndecl 0 909 NULL
145118 +enable_so_irq_remapping_setup_msi_irqs_fndecl_913 irq_remapping_setup_msi_irqs fndecl 2 913 NULL
145119 +enable_so_set_args_iw_priv_args_916 set_args iw_priv_args 0 916 NULL
145120 +enable_so_max_reply_bytes_mpt3_ioctl_command_918 max_reply_bytes mpt3_ioctl_command 0 918 NULL
145121 +enable_so_status_word_gem_rxd_925 status_word gem_rxd 0 925 NULL nohasharray
145122 +enable_so_video_hsize_solo_dev_925 video_hsize solo_dev 0 925 &enable_so_status_word_gem_rxd_925
145123 +enable_so_isofs_bread_fndecl_929 isofs_bread fndecl 2 929 NULL
145124 +enable_so_xpnet_dev_change_mtu_fndecl_932 xpnet_dev_change_mtu fndecl 2 932 NULL
145125 +enable_so___memblock_find_range_top_down_fndecl_935 __memblock_find_range_top_down fndecl 0-4-3 935 NULL
145126 +enable_so_nfrags_pkt_gl_937 nfrags pkt_gl 0 937 NULL
145127 +enable_so_max_sense_bytes_mpt2_ioctl_command_942 max_sense_bytes mpt2_ioctl_command 0 942 NULL
145128 +enable_so_icmp_len_batadv_socket_packet_944 icmp_len batadv_socket_packet 0 944 NULL
145129 +enable_so_pcpu_embed_first_chunk_fndecl_947 pcpu_embed_first_chunk fndecl 3-2-1 947 NULL nohasharray
145130 +enable_so_mei_amthif_read_fndecl_947 mei_amthif_read fndecl 4 947 &enable_so_pcpu_embed_first_chunk_fndecl_947
145131 +enable_so_sit_base_addr_sit_info_949 sit_base_addr sit_info 0 949 NULL
145132 +enable_so_lprocfs_alloc_obd_stats_fndecl_950 lprocfs_alloc_obd_stats fndecl 2 950 NULL
145133 +enable_so_pci_num_vf_fndecl_952 pci_num_vf fndecl 0 952 NULL
145134 +enable_so_ssid_len_wireless_dev_954 ssid_len wireless_dev 0 954 NULL
145135 +enable_so_length_ndis_80211_bssid_ex_955 length ndis_80211_bssid_ex 0 955 NULL
145136 +enable_so_size_wl3501_md_ind_961 size wl3501_md_ind 0 961 NULL
145137 +enable_so_thin_status_fndecl_965 thin_status fndecl 5 965 NULL
145138 +enable_so_tx_ring_size_tx_queue_982 tx_ring_size tx_queue 0 982 NULL
145139 +enable_so_em28xx_alloc_urbs_fndecl_983 em28xx_alloc_urbs fndecl 5-6-4 983 NULL nohasharray
145140 +enable_so_s_blocks_count_hi_ext4_super_block_983 s_blocks_count_hi ext4_super_block 0 983 &enable_so_em28xx_alloc_urbs_fndecl_983
145141 +enable_so_esp6_get_mtu_fndecl_987 esp6_get_mtu fndecl 0-2 987 NULL
145142 +enable_so_unlock_extent_fndecl_990 unlock_extent fndecl 2-3 990 NULL
145143 +enable_so_gtt_size_amdgpu_mc_994 gtt_size amdgpu_mc 0 994 NULL
145144 +enable_so_ContainerSwitchEntries_aac_get_container_count_resp_1001 ContainerSwitchEntries aac_get_container_count_resp 0 1001 NULL
145145 +enable_so_cpu_count_MPT3SAS_ADAPTER_1003 cpu_count MPT3SAS_ADAPTER 0 1003 NULL
145146 +enable_so_xfs_dir3_leafn_read_fndecl_1004 xfs_dir3_leafn_read fndecl 3 1004 NULL
145147 +enable_so_ath6kl_add_bss_if_needed_fndecl_1006 ath6kl_add_bss_if_needed fndecl 6 1006 NULL
145148 +enable_so_assoc_req_len_wmi_connect_event_1014 assoc_req_len wmi_connect_event 0 1014 NULL
145149 +enable_so_s_last_cno_nilfs_super_block_1016 s_last_cno nilfs_super_block 0 1016 NULL
145150 +enable_so_map_page_fndecl_1017 map_page fndecl 4-3 1017 NULL
145151 +enable_so_nvram_size_chip_desc_1022 nvram_size chip_desc 0 1022 NULL
145152 +enable_so_jffs2_iget_fndecl_1041 jffs2_iget fndecl 2 1041 NULL nohasharray
145153 +enable_so_page_shift_mlx5_buf_1041 page_shift mlx5_buf 0 1041 &enable_so_jffs2_iget_fndecl_1041
145154 +enable_so_vnic_dev_get_res_count_fndecl_1044 vnic_dev_get_res_count fndecl 0 1044 NULL
145155 +enable_so_tx_power_ipw_priv_1046 tx_power ipw_priv 0 1046 NULL
145156 +enable_so_registers_gen_74x164_chip_1049 registers gen_74x164_chip 0 1049 NULL
145157 +enable_so_m5602_urb_complete_fndecl_1052 m5602_urb_complete fndecl 3 1052 NULL
145158 +enable_so_rocker_dma_test_offset_fndecl_1055 rocker_dma_test_offset fndecl 3 1055 NULL
145159 +enable_so_data_ep_set_params_fndecl_1064 data_ep_set_params fndecl 3-4 1064 NULL
145160 +enable_so_cw_clear_fndecl_1066 cw_clear fndecl 6-4-5-3 1066 NULL
145161 +enable_so_len_left_brcmf_sdio_hdrinfo_1067 len_left brcmf_sdio_hdrinfo 0 1067 NULL
145162 +enable_so_i_dno_hpfs_inode_info_1070 i_dno hpfs_inode_info 0 1070 NULL
145163 +enable_so_num_min_snd_ratden_1071 num_min snd_ratden 0 1071 NULL
145164 +enable_so_private_data_len_iw_cm_conn_param_1076 private_data_len iw_cm_conn_param 0 1076 NULL
145165 +enable_so_enable_clk_ops_1078 enable clk_ops 0 1078 NULL
145166 +enable_so_rq_wqe_count_mlx5_ib_create_qp_1079 rq_wqe_count mlx5_ib_create_qp 0 1079 NULL
145167 +enable_so_ReadEEProm_fndecl_1081 ReadEEProm fndecl 3 1081 NULL
145168 +enable_so_inum_ns_common_1087 inum ns_common 0 1087 NULL
145169 +enable_so_hash_ip6_expire_fndecl_1088 hash_ip6_expire fndecl 4 1088 NULL
145170 +enable_so_libipw_classify_fndecl_1089 libipw_classify fndecl 0 1089 NULL
145171 +enable_so_data_start_msdos_sb_info_1100 data_start msdos_sb_info 0 1100 NULL
145172 +enable_so_num_counters_compat_ebt_replace_1102 num_counters compat_ebt_replace 0 1102 NULL
145173 +enable_so_cmd_sg_entries_vardecl_ib_srp_c_1108 cmd_sg_entries vardecl_ib_srp.c 0 1108 NULL
145174 +enable_so_create_attr_set_fndecl_1118 create_attr_set fndecl 1 1118 NULL
145175 +enable_so_slave_cnt_bonding_1119 slave_cnt bonding 0 1119 NULL
145176 +enable_so_mdc800_device_read_fndecl_1123 mdc800_device_read fndecl 3 1123 NULL
145177 +enable_so_ctl_in_pipe_brcmf_usbdev_info_1124 ctl_in_pipe brcmf_usbdev_info 0 1124 NULL
145178 +enable_so_ion_handle_test_kernel_fndecl_1127 ion_handle_test_kernel fndecl 3-4 1127 NULL
145179 +enable_so_forw_xfs_dir3_icleaf_hdr_1136 forw xfs_dir3_icleaf_hdr 0 1136 NULL
145180 +enable_so_log_num_mlx4_resource_1137 log_num mlx4_resource 0 1137 NULL
145181 +enable_so_vmw_execbuf_process_fndecl_1142 vmw_execbuf_process fndecl 5 1142 NULL
145182 +enable_so_usblp_new_writeurb_fndecl_1149 usblp_new_writeurb fndecl 2 1149 NULL nohasharray
145183 +enable_so_p54spi_spi_read_fndecl_1149 p54spi_spi_read fndecl 4 1149 &enable_so_usblp_new_writeurb_fndecl_1149
145184 +enable_so_offset_mirror_1150 offset mirror 0 1150 NULL
145185 +enable_so_hw_max_sectors_se_dev_attrib_1152 hw_max_sectors se_dev_attrib 0 1152 NULL
145186 +enable_so_ntfs_rl_vcn_to_lcn_fndecl_1155 ntfs_rl_vcn_to_lcn fndecl 0-2 1155 NULL
145187 +enable_so_cbuf_data_fndecl_1158 cbuf_data fndecl 0 1158 NULL
145188 +enable_so_xstateregs_set_fndecl_1159 xstateregs_set fndecl 4 1159 NULL
145189 +enable_so_sysctl_tcp_max_reordering_vardecl_1161 sysctl_tcp_max_reordering vardecl 0 1161 NULL
145190 +enable_so_rtsx_usb_write_ppbuf_fndecl_1165 rtsx_usb_write_ppbuf fndecl 3 1165 NULL
145191 +enable_so_eadatasize_mdt_body_1167 eadatasize mdt_body 0 1167 NULL
145192 +enable_so_nfs4_acl_bytes_fndecl_1168 nfs4_acl_bytes fndecl 0 1168 NULL
145193 +enable_so___btrfs_add_free_space_fndecl_1174 __btrfs_add_free_space fndecl 3-2 1174 NULL
145194 +enable_so___set_xattr_fndecl_1176 __set_xattr fndecl 5 1176 NULL
145195 +enable_so_br_vlan_add_fndecl_1177 br_vlan_add fndecl 2 1177 NULL
145196 +enable_so_nr_push_drm_nouveau_gem_pushbuf_1184 nr_push drm_nouveau_gem_pushbuf 0 1184 NULL
145197 +enable_so_alloc_sglist_fndecl_1187 alloc_sglist fndecl 1-2-3 1187 NULL
145198 +enable_so_il4965_rs_move_mimo2_to_other_fndecl_1191 il4965_rs_move_mimo2_to_other fndecl 5 1191 NULL nohasharray
145199 +enable_so_vme_get_size_fndecl_1191 vme_get_size fndecl 0 1191 &enable_so_il4965_rs_move_mimo2_to_other_fndecl_1191
145200 +enable_so_probe_resp_len_cfg80211_beacon_data_1195 probe_resp_len cfg80211_beacon_data 0 1195 NULL
145201 +enable_so_rdmarc_per_qp_mlx4_profile_1197 rdmarc_per_qp mlx4_profile 0 1197 NULL
145202 +enable_so_nfs4_get_security_label_fndecl_1201 nfs4_get_security_label fndecl 3 1201 NULL nohasharray
145203 +enable_so_rx_sdu_size_tsap_cb_1201 rx_sdu_size tsap_cb 0 1201 &enable_so_nfs4_get_security_label_fndecl_1201
145204 +enable_so_pvscsi_ring_pages_vardecl_vmw_pvscsi_c_1202 pvscsi_ring_pages vardecl_vmw_pvscsi.c 0 1202 NULL
145205 +enable_so_pcpu_mem_zalloc_fndecl_1207 pcpu_mem_zalloc fndecl 1 1207 NULL
145206 +enable_so_max_sge_mvumi_hba_1213 max_sge mvumi_hba 0 1213 NULL
145207 +enable_so_logfs_segment_write_compress_fndecl_1214 logfs_segment_write_compress fndecl 5 1214 NULL
145208 +enable_so_max_transfer_bytes_storvsc_device_1221 max_transfer_bytes storvsc_device 0 1221 NULL
145209 +enable_so_segno_curseg_info_1223 segno curseg_info 0 1223 NULL
145210 +enable_so_pfkey_sendmsg_fndecl_1225 pfkey_sendmsg fndecl 3 1225 NULL
145211 +enable_so_i_sblock_bfs_inode_info_1228 i_sblock bfs_inode_info 0 1228 NULL
145212 +enable_so_cached_dev_cache_miss_fndecl_1232 cached_dev_cache_miss fndecl 4 1232 NULL
145213 +enable_so_prev_chunk_sectors_r5conf_1237 prev_chunk_sectors r5conf 0 1237 NULL
145214 +enable_so_buffer_dma_zd_usb_interrupt_1239 buffer_dma zd_usb_interrupt 0 1239 NULL
145215 +enable_so_remote_settings_file_write_fndecl_1240 remote_settings_file_write fndecl 3 1240 NULL
145216 +enable_so_set_msr_hyperv_fndecl_1242 set_msr_hyperv fndecl 3 1242 NULL
145217 +enable_so_dlc_leaf_msg_log_message_1244 dlc leaf_msg_log_message 0 1244 NULL
145218 +enable_so_get_tdp_level_kvm_x86_ops_1250 get_tdp_level kvm_x86_ops 0 1250 NULL nohasharray
145219 +enable_so_cifs_local_to_utf16_bytes_fndecl_1250 cifs_local_to_utf16_bytes fndecl 0 1250 &enable_so_get_tdp_level_kvm_x86_ops_1250
145220 +enable_so_drop_objectid_items_fndecl_1253 drop_objectid_items fndecl 4 1253 NULL nohasharray
145221 +enable_so_max_vports_lpfc_hba_1253 max_vports lpfc_hba 0 1253 &enable_so_drop_objectid_items_fndecl_1253
145222 +enable_so_find_highest_prio_tid_fndecl_1254 find_highest_prio_tid fndecl 0 1254 NULL
145223 +enable_so_num_slaves_mlx4_dev_1258 num_slaves mlx4_dev 0 1258 NULL
145224 +enable_so_st_status_fndecl_1259 st_status fndecl 5 1259 NULL
145225 +enable_so_alloc32_mon_bin_get32_1260 alloc32 mon_bin_get32 0 1260 NULL
145226 +enable_so_nfs_readdir_xdr_filler_fndecl_1265 nfs_readdir_xdr_filler fndecl 0 1265 NULL
145227 +enable_so_viafb_dvp0_proc_write_fndecl_1276 viafb_dvp0_proc_write fndecl 3 1276 NULL
145228 +enable_so_prob_ewma_minstrel_rate_stats_1278 prob_ewma minstrel_rate_stats 0 1278 NULL
145229 +enable_so_ocfs2_read_extent_block_fndecl_1285 ocfs2_read_extent_block fndecl 2 1285 NULL
145230 +enable_so_agp_alloc_page_array_fndecl_1289 agp_alloc_page_array fndecl 1 1289 NULL
145231 +enable_so_fw_epd_frame_1293 fw epd_frame 0 1293 NULL
145232 +enable_so_wMaxControlMessage_usb_cdc_mbim_desc_1308 wMaxControlMessage usb_cdc_mbim_desc 0 1308 NULL
145233 +enable_so_number_snd_pcm_substream_1313 number snd_pcm_substream 0 1313 NULL
145234 +enable_so_vd_cbr_au_count_gru_vma_data_1314 vd_cbr_au_count gru_vma_data 0 1314 NULL
145235 +enable_so_read_kernfs_ops_1325 read kernfs_ops 0 1325 NULL
145236 +enable_so_flctl_cmdfunc_fndecl_1333 flctl_cmdfunc fndecl 3 1333 NULL
145237 +enable_so_fat_parse_short_fndecl_1348 fat_parse_short fndecl 0 1348 NULL
145238 +enable_so_maxhf_vardecl_uvesafb_c_1352 maxhf vardecl_uvesafb.c 0 1352 NULL
145239 +enable_so_MemReadHSCX_fndecl_1364 MemReadHSCX fndecl 0 1364 NULL
145240 +enable_so_len_btrfs_ordered_sum_1365 len btrfs_ordered_sum 0 1365 NULL nohasharray
145241 +enable_so_max_num_of_queues_per_device_vardecl_1365 max_num_of_queues_per_device vardecl 0 1365 &enable_so_len_btrfs_ordered_sum_1365
145242 +enable_so_tx_ring_count_xgbe_prv_data_1366 tx_ring_count xgbe_prv_data 0 1366 NULL
145243 +enable_so_len_orinoco_scan_data_1370 len orinoco_scan_data 0 1370 NULL nohasharray
145244 +enable_so_dlen_hci_sco_hdr_1370 dlen hci_sco_hdr 0 1370 &enable_so_len_orinoco_scan_data_1370
145245 +enable_so_v_total_aty128_crtc_1375 v_total aty128_crtc 0 1375 NULL
145246 +enable_so_reiserfs_get_block_fndecl_1379 reiserfs_get_block fndecl 2 1379 NULL
145247 +enable_so_w_drm_vmw_rect_1383 w drm_vmw_rect 0 1383 NULL
145248 +enable_so_ieee80211_probereq_get_fndecl_1384 ieee80211_probereq_get fndecl 5-4 1384 NULL
145249 +enable_so_smsc911x_rx_get_rxstatus_fndecl_1389 smsc911x_rx_get_rxstatus fndecl 0 1389 NULL
145250 +enable_so_sctp_setsockopt_connectx_old_fndecl_1396 sctp_setsockopt_connectx_old fndecl 3 1396 NULL
145251 +enable_so_len_wsm_hdr_1398 len wsm_hdr 0 1398 NULL
145252 +enable_so_dev_size_amd_flash_info_1399 dev_size amd_flash_info 0 1399 NULL
145253 +enable_so_cmd_size_scsi_host_template_1404 cmd_size scsi_host_template 0 1404 NULL
145254 +enable_so_wl1271_rx_filter_get_fields_size_fndecl_1405 wl1271_rx_filter_get_fields_size fndecl 0 1405 NULL
145255 +enable_so_ide_core_cp_entry_fndecl_1407 ide_core_cp_entry fndecl 3 1407 NULL
145256 +enable_so_ec_hdr_alsize_ubi_device_1411 ec_hdr_alsize ubi_device 0 1411 NULL
145257 +enable_so_num_rx_bds_bcmgenet_priv_1412 num_rx_bds bcmgenet_priv 0 1412 NULL
145258 +enable_so_qlcnic_83xx_sysfs_flash_write_handler_fndecl_1419 qlcnic_83xx_sysfs_flash_write_handler fndecl 6 1419 NULL
145259 +enable_so_ocfs2_get_block_fndecl_1420 ocfs2_get_block fndecl 2 1420 NULL
145260 +enable_so_wpa_ie_len_orinoco_private_1421 wpa_ie_len orinoco_private 0 1421 NULL nohasharray
145261 +enable_so_reg_umr_fndecl_1421 reg_umr fndecl 3-5 1421 &enable_so_wpa_ie_len_orinoco_private_1421
145262 +enable_so_bch_dump_read_fndecl_1422 bch_dump_read fndecl 3 1422 NULL
145263 +enable_so_paging32_invlpg_fndecl_1424 paging32_invlpg fndecl 2 1424 NULL
145264 +enable_so_relocation_count_drm_i915_gem_exec_object2_1435 relocation_count drm_i915_gem_exec_object2 0 1435 NULL
145265 +enable_so_rdev_num_s2mps11_info_1439 rdev_num s2mps11_info 0 1439 NULL
145266 +enable_so_width_latch_addr_flash_data_1448 width latch_addr_flash_data 0 1448 NULL
145267 +enable_so_memcg_update_list_lru_node_fndecl_1454 memcg_update_list_lru_node fndecl 3 1454 NULL
145268 +enable_so_sys_ppoll_fndecl_1459 sys_ppoll fndecl 2 1459 NULL
145269 +enable_so_net_header_len_sctp_af_1467 net_header_len sctp_af 0 1467 NULL
145270 +enable_so_btrfs_del_inode_ref_in_log_fndecl_1471 btrfs_del_inode_ref_in_log fndecl 4-6 1471 NULL
145271 +enable_so___mei_cl_send_fndecl_1473 __mei_cl_send fndecl 3 1473 NULL nohasharray
145272 +enable_so_ceph_decode_32_fndecl_1473 ceph_decode_32 fndecl 0 1473 &enable_so___mei_cl_send_fndecl_1473
145273 +enable_so_iio_debugfs_write_reg_fndecl_1477 iio_debugfs_write_reg fndecl 3 1477 NULL
145274 +enable_so_de4x5_alloc_rx_buff_fndecl_1491 de4x5_alloc_rx_buff fndecl 3 1491 NULL
145275 +enable_so_n_channels_ieee80211_supported_band_1494 n_channels ieee80211_supported_band 0 1494 NULL
145276 +enable_so_blocks_count_ext4_new_group_data_1496 blocks_count ext4_new_group_data 0 1496 NULL
145277 +enable_so_ezusb_program_fndecl_1497 ezusb_program fndecl 3-4 1497 NULL
145278 +enable_so_ext4_mpage_readpages_fndecl_1499 ext4_mpage_readpages fndecl 4 1499 NULL
145279 +enable_so_num_step_snd_ratden_1500 num_step snd_ratden 0 1500 NULL nohasharray
145280 +enable_so_cx18_copy_buf_to_user_fndecl_1500 cx18_copy_buf_to_user fndecl 4-0 1500 &enable_so_num_step_snd_ratden_1500
145281 +enable_so_uvc_video_decode_start_fndecl_1505 uvc_video_decode_start fndecl 0 1505 NULL
145282 +enable_so_bo_info_size_drm_amdgpu_bo_list_in_1510 bo_info_size drm_amdgpu_bo_list_in 0 1510 NULL
145283 +enable_so_initiate_new_session_fndecl_1514 initiate_new_session fndecl 6 1514 NULL nohasharray
145284 +enable_so___break_lease_fndecl_1514 __break_lease fndecl 0 1514 &enable_so_initiate_new_session_fndecl_1514
145285 +enable_so_sk_sndbuf_sock_1516 sk_sndbuf sock 0 1516 NULL
145286 +enable_so_qlcnic_sriov_init_fndecl_1529 qlcnic_sriov_init fndecl 2 1529 NULL
145287 +enable_so_grcan_allocate_dma_buffers_fndecl_1535 grcan_allocate_dma_buffers fndecl 2-3 1535 NULL
145288 +enable_so___es_remove_extent_fndecl_1544 __es_remove_extent fndecl 3-2 1544 NULL
145289 +enable_so___aa_kvmalloc_fndecl_1547 __aa_kvmalloc fndecl 1 1547 NULL
145290 +enable_so_rix_minstrel_rate_1552 rix minstrel_rate 0 1552 NULL nohasharray
145291 +enable_so_beg_hdmi_pulse_1552 beg hdmi_pulse 0 1552 &enable_so_rix_minstrel_rate_1552
145292 +enable_so_cs_tss_segment_16_1560 cs tss_segment_16 0 1560 NULL
145293 +enable_so_gru_preload_tlb_fndecl_1562 gru_preload_tlb fndecl 7-4 1562 NULL
145294 +enable_so_prio_read_fndecl_1564 prio_read fndecl 2 1564 NULL
145295 +enable_so_i2cdev_write_fndecl_1565 i2cdev_write fndecl 3 1565 NULL
145296 +enable_so_libcfs_kvzalloc_fndecl_1568 libcfs_kvzalloc fndecl 1 1568 NULL
145297 +enable_so_page_readlink_fndecl_1569 page_readlink fndecl 3 1569 NULL
145298 +enable_so_kmem_zalloc_large_fndecl_1572 kmem_zalloc_large fndecl 1 1572 NULL
145299 +enable_so_size_drm_qxl_alloc_1578 size drm_qxl_alloc 0 1578 NULL nohasharray
145300 +enable_so_start_read_delay_c_1578 start_read delay_c 0 1578 &enable_so_size_drm_qxl_alloc_1578
145301 +enable_so_ndesc_srp_map_state_1582 ndesc srp_map_state 0 1582 NULL
145302 +enable_so_process_hot_add_fndecl_1590 process_hot_add fndecl 3 1590 NULL
145303 +enable_so_sector_clone_info_1593 sector clone_info 0 1593 NULL
145304 +enable_so_length_cpc_can_msg_1600 length cpc_can_msg 0 1600 NULL nohasharray
145305 +enable_so_size_icp_qat_uof_batch_init_1600 size icp_qat_uof_batch_init 0 1600 &enable_so_length_cpc_can_msg_1600 nohasharray
145306 +enable_so_target_length_spar_controlvm_parameters_header_1600 target_length spar_controlvm_parameters_header 0 1600 &enable_so_size_icp_qat_uof_batch_init_1600
145307 +enable_so_block_size_c2port_ops_1610 block_size c2port_ops 0 1610 NULL
145308 +enable_so_pppoe_sendmsg_fndecl_1612 pppoe_sendmsg fndecl 3 1612 NULL
145309 +enable_so_rawv6_send_hdrinc_fndecl_1625 rawv6_send_hdrinc fndecl 3 1625 NULL
145310 +enable_so_dt_num_devices_exofs_device_table_1626 dt_num_devices exofs_device_table 0 1626 NULL
145311 +enable_so_es_tss_segment_16_1639 es tss_segment_16 0 1639 NULL
145312 +enable_so_cblock_policy_result_1648 cblock policy_result 0 1648 NULL
145313 +enable_so_kobil_write_fndecl_1651 kobil_write fndecl 4 1651 NULL
145314 +enable_so_load_segment_descriptor_fndecl_1654 load_segment_descriptor fndecl 2 1654 NULL
145315 +enable_so_copied_rpc_pipe_msg_1658 copied rpc_pipe_msg 0 1658 NULL
145316 +enable_so_rds_ib_xmit_fndecl_1662 rds_ib_xmit fndecl 5 1662 NULL
145317 +enable_so_num_clips_drm_vmw_present_arg_1671 num_clips drm_vmw_present_arg 0 1671 NULL
145318 +enable_so_hidraw_send_report_fndecl_1674 hidraw_send_report fndecl 3 1674 NULL
145319 +enable_so_vzalloc_node_fndecl_1683 vzalloc_node fndecl 1 1683 NULL
145320 +enable_so_remain_bytes_asc_q_done_info_1696 remain_bytes asc_q_done_info 0 1696 NULL
145321 +enable_so_size_grcan_dma_buffer_1702 size grcan_dma_buffer 0 1702 NULL
145322 +enable_so_snd_pcm_oss_set_fragment1_fndecl_1706 snd_pcm_oss_set_fragment1 fndecl 2 1706 NULL
145323 +enable_so_linear_conf_fndecl_1710 linear_conf fndecl 2 1710 NULL
145324 +enable_so_ext4_getblk_fndecl_1720 ext4_getblk fndecl 3 1720 NULL
145325 +enable_so_yres_drm_cmdline_mode_1722 yres drm_cmdline_mode 0 1722 NULL
145326 +enable_so_nfs_map_gid_to_group_fndecl_1724 nfs_map_gid_to_group fndecl 0 1724 NULL
145327 +enable_so_qtd_fill_fndecl_1725 qtd_fill fndecl 4-5-2-0-3 1725 NULL
145328 +enable_so_submit_io_fndecl_1726 submit_io fndecl 3 1726 NULL
145329 +enable_so_ts_num_ids_nfsd4_test_stateid_1732 ts_num_ids nfsd4_test_stateid 0 1732 NULL nohasharray
145330 +enable_so_devm_iio_device_alloc_fndecl_1732 devm_iio_device_alloc fndecl 2 1732 &enable_so_ts_num_ids_nfsd4_test_stateid_1732
145331 +enable_so___gfn_to_hva_many_fndecl_1735 __gfn_to_hva_many fndecl 2 1735 NULL
145332 +enable_so_l4_hdr_size_vmxnet3_tx_ctx_1737 l4_hdr_size vmxnet3_tx_ctx 0 1737 NULL
145333 +enable_so_bch_bset_sort_state_init_fndecl_1740 bch_bset_sort_state_init fndecl 2 1740 NULL
145334 +enable_so_hash_ipmark6_expire_fndecl_1741 hash_ipmark6_expire fndecl 4 1741 NULL
145335 +enable_so_ad_sd_write_reg_fndecl_1743 ad_sd_write_reg fndecl 3 1743 NULL nohasharray
145336 +enable_so_nr_packets_saa7134_ts_1743 nr_packets saa7134_ts 0 1743 &enable_so_ad_sd_write_reg_fndecl_1743
145337 +enable_so_compat_filldir_fndecl_1746 compat_filldir fndecl 3 1746 NULL
145338 +enable_so_sectorsize_btrfs_root_1747 sectorsize btrfs_root 0 1747 NULL
145339 +enable_so_si4713_send_command_fndecl_1750 si4713_send_command fndecl 6-4 1750 NULL
145340 +enable_so_copy_module_from_user_fndecl_1751 copy_module_from_user fndecl 2 1751 NULL
145341 +enable_so_it_context_mask_fw_ohci_1753 it_context_mask fw_ohci 0 1753 NULL
145342 +enable_so_ext4_remove_blocks_fndecl_1754 ext4_remove_blocks fndecl 5 1754 NULL
145343 +enable_so_len_pda_custom_wrapper_1757 len pda_custom_wrapper 0 1757 NULL nohasharray
145344 +enable_so_lustre_acl_xattr_merge2ext_fndecl_1757 lustre_acl_xattr_merge2ext fndecl 2 1757 &enable_so_len_pda_custom_wrapper_1757
145345 +enable_so_offset_scrub_nocow_inode_1762 offset scrub_nocow_inode 0 1762 NULL
145346 +enable_so_eqe_size_mlx4_caps_1775 eqe_size mlx4_caps 0 1775 NULL
145347 +enable_so_key_length_mwifiex_wep_key_1784 key_length mwifiex_wep_key 0 1784 NULL
145348 +enable_so_pitch_radeonfb_info_1792 pitch radeonfb_info 0 1792 NULL
145349 +enable_so_reiserfs_add_entry_fndecl_1797 reiserfs_add_entry fndecl 4 1797 NULL
145350 +enable_so_vub300_usb_bulk_msg_fndecl_1799 vub300_usb_bulk_msg fndecl 4-2 1799 NULL nohasharray
145351 +enable_so_security_inode_killpriv_fndecl_1799 security_inode_killpriv fndecl 0 1799 &enable_so_vub300_usb_bulk_msg_fndecl_1799
145352 +enable_so_wl1273_fm_write_data_fndecl_1803 wl1273_fm_write_data fndecl 3 1803 NULL
145353 +enable_so_mei_cl_send_fndecl_1807 mei_cl_send fndecl 3 1807 NULL
145354 +enable_so_dataInSize_mpt_ioctl_command_1808 dataInSize mpt_ioctl_command 0 1808 NULL
145355 +enable_so_udl_gem_alloc_object_fndecl_1811 udl_gem_alloc_object fndecl 2 1811 NULL
145356 +enable_so___hugepage_set_anon_rmap_fndecl_1814 __hugepage_set_anon_rmap fndecl 3 1814 NULL nohasharray
145357 +enable_so_sv_nrpools_svc_serv_1814 sv_nrpools svc_serv 0 1814 &enable_so___hugepage_set_anon_rmap_fndecl_1814
145358 +enable_so_bufsize_saa7134_dmasound_1821 bufsize saa7134_dmasound 0 1821 NULL
145359 +enable_so_rt2x00debug_write_eeprom_fndecl_1824 rt2x00debug_write_eeprom fndecl 3 1824 NULL
145360 +enable_so_num_vectors_e1000_adapter_1827 num_vectors e1000_adapter 0 1827 NULL
145361 +enable_so___add_prelim_ref_fndecl_1828 __add_prelim_ref fndecl 6-5-2 1828 NULL
145362 +enable_so_ntfs_ucstonls_fndecl_1834 ntfs_ucstonls fndecl 3-5 1834 NULL
145363 +enable_so_kvm_mmu_gva_to_gpa_write_fndecl_1840 kvm_mmu_gva_to_gpa_write fndecl 0 1840 NULL
145364 +enable_so_vm_map_ram_fndecl_1845 vm_map_ram fndecl 2 1845 NULL
145365 +enable_so_ncpus_xen_mc_physcpuinfo_1849 ncpus xen_mc_physcpuinfo 0 1849 NULL
145366 +enable_so_drm_mode_create_tv_properties_fndecl_1857 drm_mode_create_tv_properties fndecl 2 1857 NULL
145367 +enable_so_dm_write_async_fndecl_1859 dm_write_async fndecl 3 1859 NULL
145368 +enable_so_i_blocks_inode_1866 i_blocks inode 0 1866 NULL
145369 +enable_so_nl80211_send_rx_auth_fndecl_1876 nl80211_send_rx_auth fndecl 4 1876 NULL nohasharray
145370 +enable_so_bset_tree_bytes_fndecl_1876 bset_tree_bytes fndecl 0 1876 &enable_so_nl80211_send_rx_auth_fndecl_1876
145371 +enable_so_mwl8k_cmd_set_beacon_fndecl_1877 mwl8k_cmd_set_beacon fndecl 4 1877 NULL
145372 +enable_so_sisusb_bulkin_msg_fndecl_1878 sisusb_bulkin_msg fndecl 4-2 1878 NULL nohasharray
145373 +enable_so_buf_size_cx18_stream_1878 buf_size cx18_stream 0 1878 &enable_so_sisusb_bulkin_msg_fndecl_1878
145374 +enable_so_num_vmdq_vsis_i40e_pf_1882 num_vmdq_vsis i40e_pf 0 1882 NULL
145375 +enable_so___clear_user_fndecl_1885 __clear_user fndecl 0 1885 NULL
145376 +enable_so__iwl_dbgfs_fw_dbg_collect_write_fndecl_1890 _iwl_dbgfs_fw_dbg_collect_write fndecl 3 1890 NULL
145377 +enable_so_start_pfn_memory_notify_1896 start_pfn memory_notify 0 1896 NULL
145378 +enable_so_sd_blocks_stat_data_1901 sd_blocks stat_data 0 1901 NULL
145379 +enable_so_mpi_alloc_limb_space_fndecl_1925 mpi_alloc_limb_space fndecl 1 1925 NULL
145380 +enable_so___audit_sockaddr_fndecl_1929 __audit_sockaddr fndecl 1 1929 NULL
145381 +enable_so_convert_ip_to_linear_fndecl_1933 convert_ip_to_linear fndecl 0 1933 NULL
145382 +enable_so_usblp_write_fndecl_1945 usblp_write fndecl 3 1945 NULL
145383 +enable_so_ieee80211_get_mesh_hdrlen_fndecl_1948 ieee80211_get_mesh_hdrlen fndecl 0 1948 NULL
145384 +enable_so_gss_pipe_downcall_fndecl_1949 gss_pipe_downcall fndecl 3 1949 NULL
145385 +enable_so_num_adcs_cs42xx8_driver_data_1953 num_adcs cs42xx8_driver_data 0 1953 NULL
145386 +enable_so_mcryptd_alloc_instance_fndecl_1958 mcryptd_alloc_instance fndecl 2-3 1958 NULL
145387 +enable_so___kmalloc_fndecl_1964 __kmalloc fndecl 1 1964 NULL
145388 +enable_so_xlog_get_bp_fndecl_1966 xlog_get_bp fndecl 2 1966 NULL
145389 +enable_so_tty_buffer_request_room_fndecl_1967 tty_buffer_request_room fndecl 2 1967 NULL
145390 +enable_so_to_dio_submit_1977 to dio_submit 0 1977 NULL nohasharray
145391 +enable_so_partitionLength_partitionDesc_1977 partitionLength partitionDesc 0 1977 &enable_so_to_dio_submit_1977
145392 +enable_so_tipc_sendmcast_fndecl_1981 tipc_sendmcast fndecl 4 1981 NULL nohasharray
145393 +enable_so_ll_md_brw_size_ll_sb_info_1981 ll_md_brw_size ll_sb_info 0 1981 &enable_so_tipc_sendmcast_fndecl_1981
145394 +enable_so_total_memory_vbe_ib_1999 total_memory vbe_ib 0 1999 NULL
145395 +enable_so_idx_len_tg3_rx_buffer_desc_2006 idx_len tg3_rx_buffer_desc 0 2006 NULL
145396 +enable_so_alauda_read_block_fndecl_2008 alauda_read_block fndecl 4 2008 NULL
145397 +enable_so_ipv6_skip_exthdr_fndecl_2016 ipv6_skip_exthdr fndecl 0-2 2016 NULL
145398 +enable_so_madvise_vma_fndecl_2019 madvise_vma fndecl 4-3 2019 NULL
145399 +enable_so_ec_i2c_count_message_fndecl_2022 ec_i2c_count_message fndecl 2 2022 NULL
145400 +enable_so_vga_vram_base_vardecl_vgacon_c_2024 vga_vram_base vardecl_vgacon.c 0 2024 NULL
145401 +enable_so_max_write_fuse_conn_2028 max_write fuse_conn 0 2028 NULL
145402 +enable_so_num_phy_chans_d40_base_2049 num_phy_chans d40_base 0 2049 NULL
145403 +enable_so_xfs_da_grow_inode_int_fndecl_2058 xfs_da_grow_inode_int fndecl 3 2058 NULL
145404 +enable_so_kmalloc_order_trace_fndecl_2063 kmalloc_order_trace fndecl 1 2063 NULL
145405 +enable_so_val_bytes_regmap_format_2064 val_bytes regmap_format 0 2064 NULL
145406 +enable_so_usbat_flash_read_data_fndecl_2065 usbat_flash_read_data fndecl 4 2065 NULL
145407 +enable_so_dvb_generic_ioctl_fndecl_2081 dvb_generic_ioctl fndecl 2 2081 NULL
145408 +enable_so_mei_io_cb_alloc_buf_fndecl_2088 mei_io_cb_alloc_buf fndecl 2 2088 NULL
145409 +enable_so_sensor_xres_em28xx_v4l2_2095 sensor_xres em28xx_v4l2 0 2095 NULL
145410 +enable_so_min_odd_fndecl_2105 min_odd fndecl 1-2 2105 NULL
145411 +enable_so_namelen_extended_attribute_2109 namelen extended_attribute 0 2109 NULL
145412 +enable_so_dlen_nft_immediate_expr_2110 dlen nft_immediate_expr 0 2110 NULL
145413 +enable_so_s_inode_size_ext3_sb_info_2116 s_inode_size ext3_sb_info 0 2116 NULL
145414 +enable_so_ecryptfs_truncate_fndecl_2118 ecryptfs_truncate fndecl 2 2118 NULL
145415 +enable_so_rxfrag_size_ipg_nic_private_2119 rxfrag_size ipg_nic_private 0 2119 NULL
145416 +enable_so_gen_unique_name_fndecl_2127 gen_unique_name fndecl 0 2127 NULL
145417 +enable_so_ipath_ports_extrabuf_ipath_devdata_2132 ipath_ports_extrabuf ipath_devdata 0 2132 NULL
145418 +enable_so_hdrs_min_io_size_ubi_device_2134 hdrs_min_io_size ubi_device 0 2134 NULL
145419 +enable_so_req_lim_srp_rdma_ch_2136 req_lim srp_rdma_ch 0 2136 NULL
145420 +enable_so_connection_length_spar_controlvm_parameters_header_2141 connection_length spar_controlvm_parameters_header 0 2141 NULL
145421 +enable_so__iwl_dbgfs_sta_drain_write_fndecl_2142 _iwl_dbgfs_sta_drain_write fndecl 3 2142 NULL
145422 +enable_so_capacity_p9_fcall_2144 capacity p9_fcall 0 2144 NULL
145423 +enable_so_sisusbcon_bmove_fndecl_2146 sisusbcon_bmove fndecl 7-5-6 2146 NULL
145424 +enable_so_ioc_len_obd_ioctl_hdr_2148 ioc_len obd_ioctl_hdr 0 2148 NULL
145425 +enable_so_xen_swiotlb_map_page_fndecl_2157 xen_swiotlb_map_page fndecl 4 2157 NULL
145426 +enable_so_mpc_new_length_vardecl_mpparse_c_2163 mpc_new_length vardecl_mpparse.c 0 2163 NULL nohasharray
145427 +enable_so_block_size__drive_info_struct_2163 block_size _drive_info_struct 0 2163 &enable_so_mpc_new_length_vardecl_mpparse_c_2163
145428 +enable_so_i_bytes_inode_2165 i_bytes inode 0 2165 NULL
145429 +enable_so_read_size_perf_event_2173 read_size perf_event 0 2173 NULL
145430 +enable_so_ext4_setup_next_flex_gd_fndecl_2174 ext4_setup_next_flex_gd fndecl 4 2174 NULL
145431 +enable_so_rate_max_audioformat_2186 rate_max audioformat 0 2186 NULL nohasharray
145432 +enable_so_max_txsz_ulp_iscsi_info_2186 max_txsz ulp_iscsi_info 0 2186 &enable_so_rate_max_audioformat_2186
145433 +enable_so_ast_ttm_tt_create_fndecl_2190 ast_ttm_tt_create fndecl 2 2190 NULL
145434 +enable_so_qp_handle_buf_size_vmci_ctx_notify_recv_info_2191 qp_handle_buf_size vmci_ctx_notify_recv_info 0 2191 NULL
145435 +enable_so_ldlm_lock_create_fndecl_2195 ldlm_lock_create fndecl 7 2195 NULL
145436 +enable_so___alloc_reserved_percpu_fndecl_2196 __alloc_reserved_percpu fndecl 1-2 2196 NULL
145437 +enable_so___btrfs_direct_write_fndecl_2197 __btrfs_direct_write fndecl 3 2197 NULL
145438 +enable_so_s_blocks_per_group_ext4_sb_info_2201 s_blocks_per_group ext4_sb_info 0 2201 NULL
145439 +enable_so_DH_length_eg_ctrl_info_2234 DH_length eg_ctrl_info 0 2234 NULL
145440 +enable_so_nfs_proc_readdir_fndecl_2240 nfs_proc_readdir fndecl 5 2240 NULL
145441 +enable_so_SYSC_prctl_fndecl_2255 SYSC_prctl fndecl 4 2255 NULL
145442 +enable_so_big_oops_buf_sz_vardecl_platform_c_2265 big_oops_buf_sz vardecl_platform.c 0 2265 NULL
145443 +enable_so_compat_rw_copy_check_uvector_fndecl_2274 compat_rw_copy_check_uvector fndecl 3 2274 NULL
145444 +enable_so_transport_init_se_cmd_fndecl_2277 transport_init_se_cmd fndecl 4 2277 NULL
145445 +enable_so_xen_bind_pirq_msi_to_irq_fndecl_2289 xen_bind_pirq_msi_to_irq fndecl 4 2289 NULL
145446 +enable_so_write_phy_fndecl_2290 write_phy fndecl 3 2290 NULL
145447 +enable_so_scrub_extent_fndecl_2293 scrub_extent fndecl 3-2-9-4 2293 NULL
145448 +enable_so_proc_sched_autogroup_set_nice_fndecl_2296 proc_sched_autogroup_set_nice fndecl 2 2296 NULL
145449 +enable_so_bulk_out_endpointAddr_usb_lcd_2303 bulk_out_endpointAddr usb_lcd 0 2303 NULL
145450 +enable_so_af9033_wr_regs_fndecl_2314 af9033_wr_regs fndecl 4 2314 NULL nohasharray
145451 +enable_so_read_pointer_st_buffer_2314 read_pointer st_buffer 0 2314 &enable_so_af9033_wr_regs_fndecl_2314
145452 +enable_so_clipcount_v4l2_window_2316 clipcount v4l2_window 0 2316 NULL
145453 +enable_so_ieee80211_tdls_prep_mgmt_packet_fndecl_2320 ieee80211_tdls_prep_mgmt_packet fndecl 10 2320 NULL
145454 +enable_so_mmc_alloc_sg_fndecl_2323 mmc_alloc_sg fndecl 1 2323 NULL
145455 +enable_so_sendmsg_proto_ops_2329 sendmsg proto_ops 0 2329 NULL
145456 +enable_so_memsz_kexec_segment_2340 memsz kexec_segment 0 2340 NULL
145457 +enable_so_ipath_piobcnt4k_ipath_devdata_2352 ipath_piobcnt4k ipath_devdata 0 2352 NULL
145458 +enable_so_btrfs_qgroup_record_ref_fndecl_2356 btrfs_qgroup_record_ref fndecl 4 2356 NULL
145459 +enable_so_fat_ioctl_filldir_fndecl_2360 fat_ioctl_filldir fndecl 3 2360 NULL
145460 +enable_so_packet_size_st5481_in_2373 packet_size st5481_in 0 2373 NULL nohasharray
145461 +enable_so_count_brcmf_pno_scanresults_le_2373 count brcmf_pno_scanresults_le 0 2373 &enable_so_packet_size_st5481_in_2373
145462 +enable_so_tx_buffer_size_peak_usb_adapter_2386 tx_buffer_size peak_usb_adapter 0 2386 NULL
145463 +enable_so_rq_reqlen_ptlrpc_request_2387 rq_reqlen ptlrpc_request 0 2387 NULL
145464 +enable_so_xlog_do_recovery_pass_fndecl_2401 xlog_do_recovery_pass fndecl 3 2401 NULL
145465 +enable_so_asd_get_cmdctx_size_fndecl_2408 asd_get_cmdctx_size fndecl 0 2408 NULL
145466 +enable_so_status1_ar9003_rxs_2417 status1 ar9003_rxs 0 2417 NULL nohasharray
145467 +enable_so_rspq_size_qset_params_2417 rspq_size qset_params 0 2417 &enable_so_status1_ar9003_rxs_2417
145468 +enable_so_ocfs2_acl_from_xattr_fndecl_2423 ocfs2_acl_from_xattr fndecl 2 2423 NULL
145469 +enable_so_omtu_l2cap_chan_2424 omtu l2cap_chan 0 2424 NULL
145470 +enable_so_bcm3510_writebytes_fndecl_2436 bcm3510_writebytes fndecl 4 2436 NULL
145471 +enable_so_init_asiliant_fndecl_2438 init_asiliant fndecl 2 2438 NULL
145472 +enable_so_carl9170_rx_copy_data_fndecl_2443 carl9170_rx_copy_data fndecl 2 2443 NULL
145473 +enable_so_key_len_key_params_2447 key_len key_params 0 2447 NULL
145474 +enable_so___irq_alloc_descs_fndecl_2452 __irq_alloc_descs fndecl 3 2452 NULL
145475 +enable_so_ocfs2_lock_refcount_allocators_fndecl_2461 ocfs2_lock_refcount_allocators fndecl 3-2 2461 NULL
145476 +enable_so_tomoyo_read_control_fndecl_2465 tomoyo_read_control fndecl 3 2465 NULL
145477 +enable_so_regmap_register_patch_fndecl_2466 regmap_register_patch fndecl 3 2466 NULL
145478 +enable_so_rtllib_alloc_txb_fndecl_2468 rtllib_alloc_txb fndecl 1 2468 NULL
145479 +enable_so_offset_gfs2_rbm_2477 offset gfs2_rbm 0 2477 NULL
145480 +enable_so_ixgb_change_mtu_fndecl_2482 ixgb_change_mtu fndecl 2 2482 NULL
145481 +enable_so_CLOCK_SiS_VCLKData_2484 CLOCK SiS_VCLKData 0 2484 NULL
145482 +enable_so_tcp_sacktag_one_fndecl_2487 tcp_sacktag_one fndecl 7 2487 NULL
145483 +enable_so_nilfs_segctor_scan_file_dsync_fndecl_2493 nilfs_segctor_scan_file_dsync fndecl 0 2493 NULL
145484 +enable_so_btrfs_find_all_leafs_fndecl_2499 btrfs_find_all_leafs fndecl 3 2499 NULL
145485 +enable_so_update_time_fndecl_2500 update_time fndecl 0 2500 NULL
145486 +enable_so_size_arpt_replace_2509 size arpt_replace 0 2509 NULL
145487 +enable_so_unmap_alignment_scsi_disk_2514 unmap_alignment scsi_disk 0 2514 NULL
145488 +enable_so_evdev_ioctl_handler_fndecl_2522 evdev_ioctl_handler fndecl 2 2522 NULL
145489 +enable_so_usbpn_set_mtu_fndecl_2527 usbpn_set_mtu fndecl 2 2527 NULL
145490 +enable_so_detect_btsc_fndecl_2528 detect_btsc fndecl 3 2528 NULL
145491 +enable_so_vhost16_to_cpu_fndecl_2533 vhost16_to_cpu fndecl 0 2533 NULL
145492 +enable_so___scsi_format_command_fndecl_2534 __scsi_format_command fndecl 2 2534 NULL nohasharray
145493 +enable_so_ocfs2_direct_IO_extend_no_holes_fndecl_2534 ocfs2_direct_IO_extend_no_holes fndecl 3 2534 &enable_so___scsi_format_command_fndecl_2534
145494 +enable_so_l2down_create_fndecl_2536 l2down_create fndecl 4 2536 NULL
145495 +enable_so_rs_switch_to_mimo2_fndecl_2537 rs_switch_to_mimo2 fndecl 6 2537 NULL nohasharray
145496 +enable_so_mthca_alloc_init_fndecl_2537 mthca_alloc_init fndecl 3-2 2537 &enable_so_rs_switch_to_mimo2_fndecl_2537
145497 +enable_so_tcp_shifted_skb_fndecl_2543 tcp_shifted_skb fndecl 6-4 2543 NULL
145498 +enable_so_lprocfs_wr_import_fndecl_2547 lprocfs_wr_import fndecl 3 2547 NULL
145499 +enable_so___kmem_cache_alias_fndecl_2551 __kmem_cache_alias fndecl 3-2 2551 NULL
145500 +enable_so_vm_brk_fndecl_2552 vm_brk fndecl 1-2 2552 NULL
145501 +enable_so_dma_maxpq_fndecl_2555 dma_maxpq fndecl 0 2555 NULL
145502 +enable_so_off_fuse_dirent_2561 off fuse_dirent 0 2561 NULL
145503 +enable_so_hdsp_external_sample_rate_fndecl_2568 hdsp_external_sample_rate fndecl 0 2568 NULL
145504 +enable_so_extend_brk_fndecl_2574 extend_brk fndecl 2-1 2574 NULL
145505 +enable_so___tun_chr_ioctl_fndecl_2575 __tun_chr_ioctl fndecl 4 2575 NULL
145506 +enable_so_aio_offset_iocb_2576 aio_offset iocb 0 2576 NULL
145507 +enable_so_get_memory_block_size_fndecl_2600 get_memory_block_size fndecl 0 2600 NULL
145508 +enable_so_maxfrsize_bfa_fcs_rport_s_2601 maxfrsize bfa_fcs_rport_s 0 2601 NULL
145509 +enable_so_mesh_table_alloc_fndecl_2610 mesh_table_alloc fndecl 1 2610 NULL
145510 +enable_so_ld_active_tgt_count_lov_desc_2613 ld_active_tgt_count lov_desc 0 2613 NULL
145511 +enable_so_cra_blocksize_crypto_alg_2618 cra_blocksize crypto_alg 0 2618 NULL nohasharray
145512 +enable_so_p2_gma_clock_t_2618 p2 gma_clock_t 0 2618 &enable_so_cra_blocksize_crypto_alg_2618
145513 +enable_so_rx_buf_dma_pch_spi_dma_ctrl_2619 rx_buf_dma pch_spi_dma_ctrl 0 2619 NULL nohasharray
145514 +enable_so_priority_add_kvm_kpic_state_2619 priority_add kvm_kpic_state 0 2619 &enable_so_rx_buf_dma_pch_spi_dma_ctrl_2619
145515 +enable_so_crc_size_vardecl_pm_check_c_2624 crc_size vardecl_pm-check.c 0 2624 NULL
145516 +enable_so_len_whc_std_2626 len whc_std 0 2626 NULL
145517 +enable_so_snd_soc_params_to_frame_size_fndecl_2630 snd_soc_params_to_frame_size fndecl 0 2630 NULL
145518 +enable_so_radeon_vram_location_fndecl_2634 radeon_vram_location fndecl 3 2634 NULL
145519 +enable_so_bop_lookup_contig_nilfs_bmap_operations_2637 bop_lookup_contig nilfs_bmap_operations 0 2637 NULL
145520 +enable_so_regmap_spi_gather_write_fndecl_2639 regmap_spi_gather_write fndecl 3-5 2639 NULL
145521 +enable_so_rx_bufshift_rtl_stats_2641 rx_bufshift rtl_stats 0 2641 NULL
145522 +enable_so_pktgen_alloc_skb_fndecl_2658 pktgen_alloc_skb fndecl 3 2658 NULL
145523 +enable_so_alloc_large_system_hash_fndecl_2660 alloc_large_system_hash fndecl 2 2660 NULL
145524 +enable_so_algs_wmfw_adsp2_id_hdr_2662 algs wmfw_adsp2_id_hdr 0 2662 NULL
145525 +enable_so_dlen_hci_acl_hdr_2672 dlen hci_acl_hdr 0 2672 NULL nohasharray
145526 +enable_so_evdev_ioctl_fndecl_2672 evdev_ioctl fndecl 2 2672 &enable_so_dlen_hci_acl_hdr_2672
145527 +enable_so_ee_block_ext4_extent_2673 ee_block ext4_extent 0 2673 NULL
145528 +enable_so_ext3_bg_num_gdb_nometa_fndecl_2674 ext3_bg_num_gdb_nometa fndecl 0 2674 NULL
145529 +enable_so_scif_user_recv_fndecl_2675 scif_user_recv fndecl 3 2675 NULL
145530 +enable_so_TmpDcm_zoran_jpg_settings_2679 TmpDcm zoran_jpg_settings 0 2679 NULL
145531 +enable_so_mad_len_ib_mad_recv_wc_2683 mad_len ib_mad_recv_wc 0 2683 NULL
145532 +enable_so_logo_lines_vardecl_fbcon_c_2685 logo_lines vardecl_fbcon.c 0 2685 NULL
145533 +enable_so_ipw2100_set_long_retry_fndecl_2686 ipw2100_set_long_retry fndecl 2 2686 NULL
145534 +enable_so_queue_reply_fndecl_2691 queue_reply fndecl 3 2691 NULL
145535 +enable_so___set_enter_print_fmt_fndecl_2700 __set_enter_print_fmt fndecl 0 2700 NULL
145536 +enable_so_s5h1420_readreg_fndecl_2707 s5h1420_readreg fndecl 0 2707 NULL
145537 +enable_so_hsync_off_hi_lvds_dvo_timing_2711 hsync_off_hi lvds_dvo_timing 0 2711 NULL nohasharray
145538 +enable_so_zoran_write_fndecl_2711 zoran_write fndecl 3 2711 &enable_so_hsync_off_hi_lvds_dvo_timing_2711
145539 +enable_so_u132_hcd_bulk_output_sent_fndecl_2715 u132_hcd_bulk_output_sent fndecl 4 2715 NULL
145540 +enable_so_era_array_root_era_metadata_2726 era_array_root era_metadata 0 2726 NULL
145541 +enable_so_handle_received_packet_fndecl_2730 handle_received_packet fndecl 3 2730 NULL
145542 +enable_so_iov_iter_get_pages_fndecl_2747 iov_iter_get_pages fndecl 0-4 2747 NULL
145543 +enable_so_cache_write_procfs_fndecl_2760 cache_write_procfs fndecl 3 2760 NULL
145544 +enable_so_qib_user_sdma_alloc_header_fndecl_2761 qib_user_sdma_alloc_header fndecl 2 2761 NULL
145545 +enable_so_qnx6_match_fndecl_2766 qnx6_match fndecl 0 2766 NULL
145546 +enable_so_nbytes_ablkcipher_walk_2767 nbytes ablkcipher_walk 0 2767 NULL
145547 +enable_so_batadv_check_unicast_packet_fndecl_2775 batadv_check_unicast_packet fndecl 3 2775 NULL
145548 +enable_so_auth_hashbits_vardecl_auth_c_2783 auth_hashbits vardecl_auth.c 0 2783 NULL
145549 +enable_so_usb_stor_set_xfer_buf_fndecl_2809 usb_stor_set_xfer_buf fndecl 2 2809 NULL
145550 +enable_so_num_active_queues_i40evf_adapter_2813 num_active_queues i40evf_adapter 0 2813 NULL
145551 +enable_so_new_len_logfs_shadow_2820 new_len logfs_shadow 0 2820 NULL
145552 +enable_so_VerDcm_zoran_jpg_settings_2823 VerDcm zoran_jpg_settings 0 2823 NULL
145553 +enable_so_pcrypt_aead_setauthsize_fndecl_2835 pcrypt_aead_setauthsize fndecl 2 2835 NULL
145554 +enable_so_btrfs_get_16_fndecl_2836 btrfs_get_16 fndecl 0 2836 NULL
145555 +enable_so_ureg_align_qib_devdata_2841 ureg_align qib_devdata 0 2841 NULL
145556 +enable_so_max_data_size_ath6kl_bmi_2842 max_data_size ath6kl_bmi 0 2842 NULL
145557 +enable_so_btrfs_reloc_clone_csums_fndecl_2862 btrfs_reloc_clone_csums fndecl 2-3 2862 NULL
145558 +enable_so_zd_usb_read_fw_fndecl_2866 zd_usb_read_fw fndecl 4 2866 NULL
145559 +enable_so_max_sst_algo_control_2868 max sst_algo_control 0 2868 NULL
145560 +enable_so_ieee80211_if_fmt_dropped_frames_ttl_fndecl_2869 ieee80211_if_fmt_dropped_frames_ttl fndecl 3 2869 NULL nohasharray
145561 +enable_so_secondary_bin_size_drm_mga_dma_bootstrap_2869 secondary_bin_size drm_mga_dma_bootstrap 0 2869 &enable_so_ieee80211_if_fmt_dropped_frames_ttl_fndecl_2869
145562 +enable_so_drm_gem_object_init_fndecl_2882 drm_gem_object_init fndecl 3 2882 NULL
145563 +enable_so_ocfs2_extend_allocation_fndecl_2883 ocfs2_extend_allocation fndecl 3 2883 NULL
145564 +enable_so_n_notifiers_vmci_ctx_2889 n_notifiers vmci_ctx 0 2889 NULL
145565 +enable_so_pca953x_setup_gpio_fndecl_2892 pca953x_setup_gpio fndecl 2 2892 NULL
145566 +enable_so_rt2x00debug_read_crypto_stats_fndecl_2894 rt2x00debug_read_crypto_stats fndecl 3 2894 NULL
145567 +enable_so_prl_count_ip_tunnel_2900 prl_count ip_tunnel 0 2900 NULL
145568 +enable_so_xfs_bmapi_reserve_delalloc_fndecl_2901 xfs_bmapi_reserve_delalloc fndecl 2 2901 NULL nohasharray
145569 +enable_so_nf_ct_seq_adjust_fndecl_2901 nf_ct_seq_adjust fndecl 4 2901 &enable_so_xfs_bmapi_reserve_delalloc_fndecl_2901
145570 +enable_so_mem_rw_fndecl_2902 mem_rw fndecl 3 2902 NULL
145571 +enable_so_ipath_piobcnt2k_ipath_devdata_2904 ipath_piobcnt2k ipath_devdata 0 2904 NULL
145572 +enable_so_tx_max_out_p_vardecl_mptlan_c_2906 tx_max_out_p vardecl_mptlan.c 0 2906 NULL
145573 +enable_so_chroma_size_s5p_mfc_ctx_2911 chroma_size s5p_mfc_ctx 0 2911 NULL
145574 +enable_so_length_usbhs_pkt_2912 length usbhs_pkt 0 2912 NULL
145575 +enable_so_tda1004x_do_upload_fndecl_2916 tda1004x_do_upload fndecl 3 2916 NULL
145576 +enable_so_discard_swap_cluster_fndecl_2926 discard_swap_cluster fndecl 3-2 2926 NULL
145577 +enable_so_bytes_left_nfs_direct_req_2928 bytes_left nfs_direct_req 0 2928 NULL
145578 +enable_so_max_ndp_size_cdc_ncm_ctx_2942 max_ndp_size cdc_ncm_ctx 0 2942 NULL nohasharray
145579 +enable_so_btrfs_get_token_8_fndecl_2942 btrfs_get_token_8 fndecl 0 2942 &enable_so_max_ndp_size_cdc_ncm_ctx_2942
145580 +enable_so_sys_remap_file_pages_fndecl_2943 sys_remap_file_pages fndecl 2-4-1 2943 NULL
145581 +enable_so_HorDcm_zoran_jpg_settings_2947 HorDcm zoran_jpg_settings 0 2947 NULL
145582 +enable_so_reiserfs_paste_into_item_fndecl_2953 reiserfs_paste_into_item fndecl 6 2953 NULL
145583 +enable_so_quirk_io_region_fndecl_2954 quirk_io_region fndecl 3 2954 NULL
145584 +enable_so_alloc_blksz_hfsplus_sb_info_2955 alloc_blksz hfsplus_sb_info 0 2955 NULL
145585 +enable_so___kfifo_alloc_fndecl_2958 __kfifo_alloc fndecl 3 2958 NULL
145586 +enable_so_info_len_ib_ucm_event_2963 info_len ib_ucm_event 0 2963 NULL
145587 +enable_so_s_ipg_ufs_sb_private_info_2965 s_ipg ufs_sb_private_info 0 2965 NULL
145588 +enable_so_SyS_sched_setaffinity_fndecl_2967 SyS_sched_setaffinity fndecl 2 2967 NULL
145589 +enable_so_do_tcp_sendpages_fndecl_2968 do_tcp_sendpages fndecl 4-3 2968 NULL
145590 +enable_so_pn533_dep_link_up_fndecl_2969 pn533_dep_link_up fndecl 5 2969 NULL
145591 +enable_so_qp_table_size_qib_ibdev_2970 qp_table_size qib_ibdev 0 2970 NULL
145592 +enable_so_wpa_enabled_orinoco_private_2980 wpa_enabled orinoco_private 0 2980 NULL
145593 +enable_so_origin_write_extent_fndecl_2983 origin_write_extent fndecl 2 2983 NULL
145594 +enable_so_reiserfs_cut_from_item_fndecl_2988 reiserfs_cut_from_item fndecl 6 2988 NULL
145595 +enable_so_offset_fuse_notify_retrieve_out_2999 offset fuse_notify_retrieve_out 0 2999 NULL
145596 +enable_so_hdr_len_iscsi_task_3003 hdr_len iscsi_task 0 3003 NULL
145597 +enable_so_do_sync_mmap_readahead_fndecl_3008 do_sync_mmap_readahead fndecl 4 3008 NULL nohasharray
145598 +enable_so_bitmap_clear_bits_fndecl_3008 bitmap_clear_bits fndecl 4 3008 &enable_so_do_sync_mmap_readahead_fndecl_3008
145599 +enable_so_rdma_build_arg_xdr_fndecl_3012 rdma_build_arg_xdr fndecl 3 3012 NULL
145600 +enable_so_mem_write_fndecl_3019 mem_write fndecl 3 3019 NULL
145601 +enable_so_bpw_len_pch_spi_data_3026 bpw_len pch_spi_data 0 3026 NULL
145602 +enable_so_fat_compat_ioctl_filldir_fndecl_3037 fat_compat_ioctl_filldir fndecl 3 3037 NULL
145603 +enable_so_xfs_bulkstat_grab_ichunk_fndecl_3041 xfs_bulkstat_grab_ichunk fndecl 2 3041 NULL
145604 +enable_so_bm_dev_capacity_drbd_bitmap_3043 bm_dev_capacity drbd_bitmap 0 3043 NULL
145605 +enable_so_add_res_tree_fndecl_3044 add_res_tree fndecl 7 3044 NULL
145606 +enable_so_ping_common_sendmsg_fndecl_3046 ping_common_sendmsg fndecl 5 3046 NULL
145607 +enable_so_at25_ee_write_fndecl_3050 at25_ee_write fndecl 4-3 3050 NULL
145608 +enable_so_size_ecryptfs_cache_info_3056 size ecryptfs_cache_info 0 3056 NULL
145609 +enable_so_ntfs_map_runlist_fndecl_3068 ntfs_map_runlist fndecl 2 3068 NULL nohasharray
145610 +enable_so_dst_addr_width_dma_slave_config_3068 dst_addr_width dma_slave_config 0 3068 &enable_so_ntfs_map_runlist_fndecl_3068
145611 +enable_so_hbuf_max_len_mei_hw_ops_3071 hbuf_max_len mei_hw_ops 0 3071 NULL
145612 +enable_so_height_au0828_dev_3073 height au0828_dev 0 3073 NULL
145613 +enable_so_sg_addr_size__MPT_ADAPTER_3079 sg_addr_size _MPT_ADAPTER 0 3079 NULL
145614 +enable_so_brcmf_p2p_escan_fndecl_3080 brcmf_p2p_escan fndecl 2 3080 NULL
145615 +enable_so_npages_mthca_db_table_3090 npages mthca_db_table 0 3090 NULL
145616 +enable_so_fb_prepare_logo_fndecl_3092 fb_prepare_logo fndecl 0 3092 NULL
145617 +enable_so_vol_cdev_direct_write_fndecl_3100 vol_cdev_direct_write fndecl 3 3100 NULL
145618 +enable_so_rx_pkt_map_sz_tg3_3106 rx_pkt_map_sz tg3 0 3106 NULL
145619 +enable_so_iommu_range_alloc_fndecl_3113 iommu_range_alloc fndecl 3-0 3113 NULL
145620 +enable_so_fb_alloc_cmap_gfp_fndecl_3115 fb_alloc_cmap_gfp fndecl 2 3115 NULL
145621 +enable_so_ipip6_tunnel_change_mtu_fndecl_3119 ipip6_tunnel_change_mtu fndecl 2 3119 NULL nohasharray
145622 +enable_so_compat_filldir64_fndecl_3119 compat_filldir64 fndecl 3 3119 &enable_so_ipip6_tunnel_change_mtu_fndecl_3119
145623 +enable_so_emulator_do_task_switch_fndecl_3122 emulator_do_task_switch fndecl 2-3 3122 NULL
145624 +enable_so_status_whc_qhead_3133 status whc_qhead 0 3133 NULL
145625 +enable_so_ext4_block_zero_page_range_fndecl_3135 ext4_block_zero_page_range fndecl 3 3135 NULL
145626 +enable_so_strndup_user_fndecl_3136 strndup_user fndecl 2 3136 NULL
145627 +enable_so_brcmf_usb_dlstart_fndecl_3138 brcmf_usb_dlstart fndecl 3 3138 NULL
145628 +enable_so_power_up_frequency_adf4350_platform_data_3140 power_up_frequency adf4350_platform_data 0 3140 NULL
145629 +enable_so_btrfs_add_nondir_fndecl_3141 btrfs_add_nondir fndecl 6 3141 NULL
145630 +enable_so_fotg210_urb_done_fndecl_3144 fotg210_urb_done fndecl 3 3144 NULL
145631 +enable_so_tx_room_keyspan_pda_private_3146 tx_room keyspan_pda_private 0 3146 NULL
145632 +enable_so_usbhs_read_fndecl_3148 usbhs_read fndecl 0 3148 NULL nohasharray
145633 +enable_so_fragment_length_zd_usb_rx_3148 fragment_length zd_usb_rx 0 3148 &enable_so_usbhs_read_fndecl_3148 nohasharray
145634 +enable_so_nilfs_scan_dsync_log_fndecl_3148 nilfs_scan_dsync_log fndecl 2 3148 &enable_so_fragment_length_zd_usb_rx_3148
145635 +enable_so_udf_get_last_session_fndecl_3152 udf_get_last_session fndecl 0 3152 NULL
145636 +enable_so_prealloc_size_ich_pcm_table_3162 prealloc_size ich_pcm_table 0 3162 NULL nohasharray
145637 +enable_so_sys_sendto_fndecl_3162 sys_sendto fndecl 6 3162 &enable_so_prealloc_size_ich_pcm_table_3162
145638 +enable_so_cfv_alloc_and_copy_skb_fndecl_3167 cfv_alloc_and_copy_skb fndecl 4 3167 NULL nohasharray
145639 +enable_so_logfs_is_valid_block_fndecl_3167 logfs_is_valid_block fndecl 3 3167 &enable_so_cfv_alloc_and_copy_skb_fndecl_3167
145640 +enable_so_bytes_per_pixel_vivid_dev_3174 bytes_per_pixel vivid_dev 0 3174 NULL
145641 +enable_so_fill_elf_header_fndecl_3182 fill_elf_header fndecl 2 3182 NULL
145642 +enable_so_keyspan_write_fndecl_3189 keyspan_write fndecl 4 3189 NULL
145643 +enable_so_min_io_size_ubi_device_3191 min_io_size ubi_device 0 3191 NULL nohasharray
145644 +enable_so_uvc_alloc_entity_fndecl_3191 uvc_alloc_entity fndecl 3-4 3191 &enable_so_min_io_size_ubi_device_3191
145645 +enable_so_nvme_trans_supported_vpd_pages_fndecl_3196 nvme_trans_supported_vpd_pages fndecl 4 3196 NULL
145646 +enable_so_lcd_hblank_len_atyfb_par_3198 lcd_hblank_len atyfb_par 0 3198 NULL nohasharray
145647 +enable_so_p9_tag_alloc_fndecl_3198 p9_tag_alloc fndecl 3 3198 &enable_so_lcd_hblank_len_atyfb_par_3198
145648 +enable_so_chunk_size_mdu_array_info_s_3205 chunk_size mdu_array_info_s 0 3205 NULL
145649 +enable_so_cfs_cpt_table_create_fndecl_3207 cfs_cpt_table_create fndecl 1 3207 NULL
145650 +enable_so_sisusb_send_packet_fndecl_3208 sisusb_send_packet fndecl 2 3208 NULL
145651 +enable_so_usbvision_set_output_fndecl_3216 usbvision_set_output fndecl 2-3 3216 NULL
145652 +enable_so_rx_buffer_len_ixgb_adapter_3217 rx_buffer_len ixgb_adapter 0 3217 NULL nohasharray
145653 +enable_so_cw1200_sdio_memcpy_fromio_fndecl_3217 cw1200_sdio_memcpy_fromio fndecl 4 3217 &enable_so_rx_buffer_len_ixgb_adapter_3217
145654 +enable_so_mad_size_ib_mad_private_3230 mad_size ib_mad_private 0 3230 NULL
145655 +enable_so_lbs_rdbbp_write_fndecl_3237 lbs_rdbbp_write fndecl 3 3237 NULL
145656 +enable_so_inlen_ib_udata_3242 inlen ib_udata 0 3242 NULL nohasharray
145657 +enable_so_expect_class_max_nf_conntrack_helper_3242 expect_class_max nf_conntrack_helper 0 3242 &enable_so_inlen_ib_udata_3242
145658 +enable_so_vfio_msi_enable_fndecl_3257 vfio_msi_enable fndecl 2 3257 NULL
145659 +enable_so_sbc_check_prot_fndecl_3258 sbc_check_prot fndecl 4 3258 NULL
145660 +enable_so_taglen_cb_compound_hdr_res_3259 taglen cb_compound_hdr_res 0 3259 NULL
145661 +enable_so_altera_set_ir_post_fndecl_3271 altera_set_ir_post fndecl 2 3271 NULL
145662 +enable_so_num_irqs_regmap_irq_chip_3272 num_irqs regmap_irq_chip 0 3272 NULL
145663 +enable_so_rsxx_cram_read_fndecl_3278 rsxx_cram_read fndecl 3 3278 NULL
145664 +enable_so_doff_tcphdr_3280 doff tcphdr 0 3280 NULL nohasharray
145665 +enable_so_ds1305_nvram_read_fndecl_3280 ds1305_nvram_read fndecl 5-6 3280 &enable_so_doff_tcphdr_3280
145666 +enable_so_random_read_wakeup_bits_vardecl_random_c_3284 random_read_wakeup_bits vardecl_random.c 0 3284 NULL
145667 +enable_so_cfg80211_rx_assoc_resp_fndecl_3285 cfg80211_rx_assoc_resp fndecl 4 3285 NULL
145668 +enable_so_walk_blocksize_blkcipher_walk_3293 walk_blocksize blkcipher_walk 0 3293 NULL
145669 +enable_so_e_value_size_ext3_xattr_entry_3294 e_value_size ext3_xattr_entry 0 3294 NULL
145670 +enable_so_addr_kvm_shadow_walk_iterator_3297 addr kvm_shadow_walk_iterator 0 3297 NULL
145671 +enable_so_clock_speed_ov7670_info_3304 clock_speed ov7670_info 0 3304 NULL
145672 +enable_so_alg_setsockopt_fndecl_3306 alg_setsockopt fndecl 5 3306 NULL
145673 +enable_so_transfer_size_zr364xx_pipeinfo_3312 transfer_size zr364xx_pipeinfo 0 3312 NULL
145674 +enable_so_nfs_map_name_to_uid_fndecl_3313 nfs_map_name_to_uid fndecl 3 3313 NULL
145675 +enable_so_read_block_bitmap_fndecl_3319 read_block_bitmap fndecl 3 3319 NULL nohasharray
145676 +enable_so_sdmabufcnt_qib_chip_specific_3319 sdmabufcnt qib_chip_specific 0 3319 &enable_so_read_block_bitmap_fndecl_3319
145677 +enable_so_snd_rme9652_playback_copy_fndecl_3321 snd_rme9652_playback_copy fndecl 5 3321 NULL
145678 +enable_so_bulk_out_ep_irda_usb_cb_3322 bulk_out_ep irda_usb_cb 0 3322 NULL
145679 +enable_so_lock_extent_bits_fndecl_3328 lock_extent_bits fndecl 3-2 3328 NULL
145680 +enable_so_length_ima_digest_data_3329 length ima_digest_data 0 3329 NULL
145681 +enable_so_hidraw_report_event_fndecl_3332 hidraw_report_event fndecl 3 3332 NULL
145682 +enable_so_i_xattr_loc_ocfs2_dinode_3335 i_xattr_loc ocfs2_dinode 0 3335 NULL
145683 +enable_so_fc_cpu_mask_vardecl_3336 fc_cpu_mask vardecl 0 3336 NULL
145684 +enable_so_add_desc_fndecl_3339 add_desc fndecl 3 3339 NULL
145685 +enable_so_base_drm_agp_head_3348 base drm_agp_head 0 3348 NULL
145686 +enable_so_memcg_update_list_lru_fndecl_3349 memcg_update_list_lru fndecl 3 3349 NULL
145687 +enable_so_ext4_finish_convert_inline_dir_fndecl_3350 ext4_finish_convert_inline_dir fndecl 5 3350 NULL
145688 +enable_so_max_bands_multiq_sched_data_3353 max_bands multiq_sched_data 0 3353 NULL
145689 +enable_so_sysctl_nr_open_vardecl_3355 sysctl_nr_open vardecl 0 3355 NULL
145690 +enable_so_logfs_uncompress_fndecl_3359 logfs_uncompress fndecl 3-4 3359 NULL
145691 +enable_so_essidlen_zd1201_3366 essidlen zd1201 0 3366 NULL
145692 +enable_so_amd_create_gatt_pages_fndecl_3370 amd_create_gatt_pages fndecl 1 3370 NULL
145693 +enable_so_xfs_dir3_leaf_get_buf_fndecl_3380 xfs_dir3_leaf_get_buf fndecl 2 3380 NULL
145694 +enable_so_blk_add_request_payload_fndecl_3382 blk_add_request_payload fndecl 3 3382 NULL nohasharray
145695 +enable_so_udf_split_extents_fndecl_3382 udf_split_extents fndecl 3-4 3382 &enable_so_blk_add_request_payload_fndecl_3382
145696 +enable_so_nvdimm_set_config_data_fndecl_3384 nvdimm_set_config_data fndecl 4 3384 NULL
145697 +enable_so_drbd_bm_resize_fndecl_3385 drbd_bm_resize fndecl 2 3385 NULL
145698 +enable_so_xfs_iext_realloc_direct_fndecl_3386 xfs_iext_realloc_direct fndecl 2 3386 NULL
145699 +enable_so_beacon_ie_len_wmi_connect_event_3388 beacon_ie_len wmi_connect_event 0 3388 NULL nohasharray
145700 +enable_so_rport_priv_size_fc_lport_3388 rport_priv_size fc_lport 0 3388 &enable_so_beacon_ie_len_wmi_connect_event_3388
145701 +enable_so_max_frame_size_nes_vnic_3395 max_frame_size nes_vnic 0 3395 NULL
145702 +enable_so_num_paths_rdma_route_3407 num_paths rdma_route 0 3407 NULL
145703 +enable_so_pos_in_item_treepath_3409 pos_in_item treepath 0 3409 NULL
145704 +enable_so_scsi_report_opcode_fndecl_3412 scsi_report_opcode fndecl 3 3412 NULL
145705 +enable_so_venus_create_fndecl_3416 venus_create fndecl 4 3416 NULL
145706 +enable_so_opts1_RxDesc_3421 opts1 RxDesc 0 3421 NULL
145707 +enable_so_apic_access_addr_vmcs12_3427 apic_access_addr vmcs12 0 3427 NULL
145708 +enable_so_rlim_cur_rlimit_3431 rlim_cur rlimit 0 3431 NULL
145709 +enable_so_max_request_size_megasas_ctrl_info_3434 max_request_size megasas_ctrl_info 0 3434 NULL nohasharray
145710 +enable_so_drv_cp_harray_to_user_fndecl_3434 drv_cp_harray_to_user fndecl 0 3434 &enable_so_max_request_size_megasas_ctrl_info_3434 nohasharray
145711 +enable_so_sync_timeline_create_fndecl_3434 sync_timeline_create fndecl 2 3434 &enable_so_drv_cp_harray_to_user_fndecl_3434
145712 +enable_so_udf_getblk_fndecl_3436 udf_getblk fndecl 2 3436 NULL
145713 +enable_so_len_nft_bitwise_3441 len nft_bitwise 0 3441 NULL
145714 +enable_so_uc_inSize_upc_req_3444 uc_inSize upc_req 0 3444 NULL
145715 +enable_so_s_itb_per_group_ext4_sb_info_3459 s_itb_per_group ext4_sb_info 0 3459 NULL
145716 +enable_so_adfs_dir_read_fndecl_3464 adfs_dir_read fndecl 2 3464 NULL
145717 +enable_so_ngpios_chv_community_3476 ngpios chv_community 0 3476 NULL
145718 +enable_so_namelen_xfs_dir2_sf_entry_3481 namelen xfs_dir2_sf_entry 0 3481 NULL
145719 +enable_so_gen8_ppgtt_init_fndecl_3483 gen8_ppgtt_init fndecl 2 3483 NULL
145720 +enable_so_zlib_tr_flush_block_fndecl_3485 zlib_tr_flush_block fndecl 3 3485 NULL
145721 +enable_so_oz_cdev_read_fndecl_3488 oz_cdev_read fndecl 3 3488 NULL
145722 +enable_so_rx_buf_size__mgslpc_info_3490 rx_buf_size _mgslpc_info 0 3490 NULL
145723 +enable_so_from_dio_submit_3494 from dio_submit 0 3494 NULL
145724 +enable_so_snd_pcm_oss_prepare_fndecl_3506 snd_pcm_oss_prepare fndecl 0 3506 NULL
145725 +enable_so_kfifo_copy_to_user_fndecl_3509 kfifo_copy_to_user fndecl 3-4 3509 NULL nohasharray
145726 +enable_so_hs_bkt_bits_cfs_hash_3509 hs_bkt_bits cfs_hash 0 3509 &enable_so_kfifo_copy_to_user_fndecl_3509
145727 +enable_so_oz_add_farewell_fndecl_3519 oz_add_farewell fndecl 5 3519 NULL
145728 +enable_so_gru_vtop_fndecl_3522 gru_vtop fndecl 2 3522 NULL
145729 +enable_so_sit_blkaddr_f2fs_super_block_3531 sit_blkaddr f2fs_super_block 0 3531 NULL
145730 +enable_so_cl_out_max_entry_size_mvumi_hs_page1_3540 cl_out_max_entry_size mvumi_hs_page1 0 3540 NULL
145731 +enable_so_snd_hdsp_playback_copy_fndecl_3543 snd_hdsp_playback_copy fndecl 5 3543 NULL
145732 +enable_so_cpumask_size_fndecl_3544 cpumask_size fndecl 0 3544 NULL
145733 +enable_so_get_user_page_nowait_fndecl_3545 get_user_page_nowait fndecl 3 3545 NULL nohasharray
145734 +enable_so_dvb_dmxdev_buffer_read_fndecl_3545 dvb_dmxdev_buffer_read fndecl 4 3545 &enable_so_get_user_page_nowait_fndecl_3545
145735 +enable_so_window_size_deflate_state_3549 window_size deflate_state 0 3549 NULL
145736 +enable_so_mult_count_ide_drive_s_3550 mult_count ide_drive_s 0 3550 NULL
145737 +enable_so_ocfs2_read_xattr_bucket_fndecl_3553 ocfs2_read_xattr_bucket fndecl 2 3553 NULL
145738 +enable_so_sg_copy_from_buffer_fndecl_3557 sg_copy_from_buffer fndecl 0 3557 NULL
145739 +enable_so_security_context_to_sid_force_fndecl_3559 security_context_to_sid_force fndecl 2 3559 NULL
145740 +enable_so_mt2063_write_fndecl_3567 mt2063_write fndecl 4 3567 NULL
145741 +enable_so_page_cache_sync_readahead_fndecl_3569 page_cache_sync_readahead fndecl 4 3569 NULL nohasharray
145742 +enable_so_nr_clk_ids_samsung_cmu_info_3569 nr_clk_ids samsung_cmu_info 0 3569 &enable_so_page_cache_sync_readahead_fndecl_3569
145743 +enable_so_encode_diropargs3_fndecl_3574 encode_diropargs3 fndecl 4 3574 NULL
145744 +enable_so_len_capiloaddatapart_3577 len capiloaddatapart 0 3577 NULL
145745 +enable_so_pcpu_page_first_chunk_fndecl_3579 pcpu_page_first_chunk fndecl 1 3579 NULL
145746 +enable_so_asq_buf_size_i40e_adminq_info_3582 asq_buf_size i40e_adminq_info 0 3582 NULL
145747 +enable_so_ip_vs_icmp_xmit_fndecl_3590 ip_vs_icmp_xmit fndecl 4 3590 NULL
145748 +enable_so_buf_size_i1480_3593 buf_size i1480 0 3593 NULL
145749 +enable_so_pnode_uv_blade_info_3599 pnode uv_blade_info 0 3599 NULL nohasharray
145750 +enable_so_brcmf_chip_tcm_rambase_fndecl_3599 brcmf_chip_tcm_rambase fndecl 0 3599 &enable_so_pnode_uv_blade_info_3599
145751 +enable_so_e820_update_range_fndecl_3600 e820_update_range fndecl 2 3600 NULL
145752 +enable_so_ss_out_channels_hdsp_3619 ss_out_channels hdsp 0 3619 NULL nohasharray
145753 +enable_so_drm_universal_plane_init_fndecl_3619 drm_universal_plane_init fndecl 6 3619 &enable_so_ss_out_channels_hdsp_3619
145754 +enable_so_ns_blocksize_the_nilfs_3624 ns_blocksize the_nilfs 0 3624 NULL
145755 +enable_so_offline_pages_fndecl_3625 offline_pages fndecl 1-2 3625 NULL
145756 +enable_so_tail_timestamp_event_queue_3626 tail timestamp_event_queue 0 3626 NULL
145757 +enable_so_add_res_range_fndecl_3629 add_res_range fndecl 4 3629 NULL
145758 +enable_so_cbuf_eat_fndecl_3631 cbuf_eat fndecl 2 3631 NULL
145759 +enable_so_vmci_transport_queue_pair_alloc_fndecl_3639 vmci_transport_queue_pair_alloc fndecl 4-3 3639 NULL nohasharray
145760 +enable_so_xfs_attr3_leaf_freextent_fndecl_3639 xfs_attr3_leaf_freextent fndecl 4-3 3639 &enable_so_vmci_transport_queue_pair_alloc_fndecl_3639
145761 +enable_so_s_desc_size_ext4_sb_info_3652 s_desc_size ext4_sb_info 0 3652 NULL
145762 +enable_so_ext2_get_blocks_fndecl_3661 ext2_get_blocks fndecl 0 3661 NULL nohasharray
145763 +enable_so_im_len_xfs_imap_3661 im_len xfs_imap 0 3661 &enable_so_ext2_get_blocks_fndecl_3661
145764 +enable_so_base_address_acpi_srat_mem_affinity_3662 base_address acpi_srat_mem_affinity 0 3662 NULL
145765 +enable_so_child_cnt_ubifs_znode_3667 child_cnt ubifs_znode 0 3667 NULL
145766 +enable_so_i_block_group_ext3_inode_info_3668 i_block_group ext3_inode_info 0 3668 NULL
145767 +enable_so_bio_find_or_create_slab_fndecl_3671 bio_find_or_create_slab fndecl 1 3671 NULL
145768 +enable_so_pcpu_chunk_struct_size_vardecl_percpu_c_3673 pcpu_chunk_struct_size vardecl_percpu.c 0 3673 NULL
145769 +enable_so_interfaces_count_ffs_data_3677 interfaces_count ffs_data 0 3677 NULL
145770 +enable_so_len_mic_mw_3689 len mic_mw 0 3689 NULL
145771 +enable_so_ath10k_wmi_tlv_op_gen_vdev_sta_uapsd_fndecl_3692 ath10k_wmi_tlv_op_gen_vdev_sta_uapsd fndecl 5 3692 NULL
145772 +enable_so_srp_max_rsp_size_srpt_port_attrib_3700 srp_max_rsp_size srpt_port_attrib 0 3700 NULL
145773 +enable_so_get_urb_error_fndecl_3702 get_urb_error fndecl 0 3702 NULL
145774 +enable_so_allocate_cmdlines_buffer_fndecl_3704 allocate_cmdlines_buffer fndecl 1 3704 NULL
145775 +enable_so_vlan_netdev_private_3705 vlan netdev_private 0 3705 NULL
145776 +enable_so_gfs2_ea_get_copy_fndecl_3706 gfs2_ea_get_copy fndecl 0 3706 NULL
145777 +enable_so_len_sctp_auth_bytes_3715 len sctp_auth_bytes 0 3715 NULL
145778 +enable_so_len_amp_assoc_3724 len amp_assoc 0 3724 NULL
145779 +enable_so___v4l2_ctrl_modify_range_fndecl_3726 __v4l2_ctrl_modify_range fndecl 3 3726 NULL
145780 +enable_so_SYSC_rt_sigpending_fndecl_3728 SYSC_rt_sigpending fndecl 2 3728 NULL
145781 +enable_so_split_leaf_fndecl_3729 split_leaf fndecl 0 3729 NULL
145782 +enable_so_video_ioctl2_fndecl_3735 video_ioctl2 fndecl 2 3735 NULL
145783 +enable_so_ecryptfs_message_buf_len_vardecl_3736 ecryptfs_message_buf_len vardecl 0 3736 NULL
145784 +enable_so_insert_ptr_fndecl_3737 insert_ptr fndecl 6 3737 NULL
145785 +enable_so_entries_p54_cal_database_3741 entries p54_cal_database 0 3741 NULL
145786 +enable_so_m2_gma_clock_t_3742 m2 gma_clock_t 0 3742 NULL
145787 +enable_so_nr_reserved_tags_blk_mq_tags_3751 nr_reserved_tags blk_mq_tags 0 3751 NULL
145788 +enable_so_e_value_size_f2fs_xattr_entry_3755 e_value_size f2fs_xattr_entry 0 3755 NULL
145789 +enable_so_usnic_ib_dump_vf_hdr_fndecl_3772 usnic_ib_dump_vf_hdr fndecl 3 3772 NULL
145790 +enable_so_tblsize_snd_sg_buf_3776 tblsize snd_sg_buf 0 3776 NULL
145791 +enable_so_ag_shift_befs_sb_info_3778 ag_shift befs_sb_info 0 3778 NULL
145792 +enable_so_fl_starve_thres_sge_3779 fl_starve_thres sge 0 3779 NULL
145793 +enable_so_rx_status_len_ath9k_hw_capabilities_3793 rx_status_len ath9k_hw_capabilities 0 3793 NULL
145794 +enable_so_buflen_audit_krule_3796 buflen audit_krule 0 3796 NULL
145795 +enable_so_ip_last_used_group_ocfs2_inode_info_3814 ip_last_used_group ocfs2_inode_info 0 3814 NULL
145796 +enable_so_e_cpos_ocfs2_extent_rec_3815 e_cpos ocfs2_extent_rec 0 3815 NULL
145797 +enable_so_dccp_recvmsg_fndecl_3819 dccp_recvmsg fndecl 3 3819 NULL nohasharray
145798 +enable_so_fnic_trace_debugfs_lseek_fndecl_3819 fnic_trace_debugfs_lseek fndecl 2 3819 &enable_so_dccp_recvmsg_fndecl_3819
145799 +enable_so_force_bredr_smp_write_fndecl_3821 force_bredr_smp_write fndecl 3 3821 NULL
145800 +enable_so_mei_nfc_send_fndecl_3830 mei_nfc_send fndecl 3 3830 NULL
145801 +enable_so_btrfs_lookup_csum_fndecl_3831 btrfs_lookup_csum fndecl 4 3831 NULL
145802 +enable_so_num_counters_ipt_replace_3837 num_counters ipt_replace 0 3837 NULL
145803 +enable_so_find_end_of_node_fndecl_3843 find_end_of_node fndecl 0-3-1-2 3843 NULL
145804 +enable_so_bg_inode_table_hi_ext4_group_desc_3844 bg_inode_table_hi ext4_group_desc 0 3844 NULL
145805 +enable_so_bg_inode_table_ext3_group_desc_3847 bg_inode_table ext3_group_desc 0 3847 NULL
145806 +enable_so_btrfs_dirty_pages_fndecl_3848 btrfs_dirty_pages fndecl 6-5 3848 NULL
145807 +enable_so_qib_verbs_send_fndecl_3860 qib_verbs_send fndecl 3-5 3860 NULL
145808 +enable_so_ocfs2_free_clusters_fndecl_3866 ocfs2_free_clusters fndecl 4 3866 NULL
145809 +enable_so_size_of_priv_dvb_usb_adapter_fe_properties_3875 size_of_priv dvb_usb_adapter_fe_properties 0 3875 NULL
145810 +enable_so_console_size_ramoops_context_3884 console_size ramoops_context 0 3884 NULL
145811 +enable_so_dbgfs_sram_len_il_priv_3888 dbgfs_sram_len il_priv 0 3888 NULL nohasharray
145812 +enable_so_s_num_blocks_omfs_sb_info_3888 s_num_blocks omfs_sb_info 0 3888 &enable_so_dbgfs_sram_len_il_priv_3888
145813 +enable_so_fs_div_hfs_sb_info_3890 fs_div hfs_sb_info 0 3890 NULL
145814 +enable_so_btrfs_inode_ref_name_len_fndecl_3891 btrfs_inode_ref_name_len fndecl 0 3891 NULL
145815 +enable_so_snd_pcm_lib_preallocate_pages_fndecl_3892 snd_pcm_lib_preallocate_pages fndecl 4 3892 NULL
145816 +enable_so_arch_gnttab_init_fndecl_3893 arch_gnttab_init fndecl 1 3893 NULL
145817 +enable_so_rootdir_empty_fndecl_3895 rootdir_empty fndecl 2 3895 NULL
145818 +enable_so_xfs_extent_busy_trim_fndecl_3898 xfs_extent_busy_trim fndecl 3-2 3898 NULL
145819 +enable_so_gfs2_meta_wipe_fndecl_3900 gfs2_meta_wipe fndecl 2 3900 NULL
145820 +enable_so_get_enc_strm_size_s5p_mfc_hw_ops_3906 get_enc_strm_size s5p_mfc_hw_ops 0 3906 NULL
145821 +enable_so_endpoint_usb_data_stream_properties_3909 endpoint usb_data_stream_properties 0 3909 NULL
145822 +enable_so_proc_fault_inject_write_fndecl_3921 proc_fault_inject_write fndecl 3 3921 NULL
145823 +enable_so_cfpkt_set_prio_fndecl_3935 cfpkt_set_prio fndecl 2 3935 NULL
145824 +enable_so_unix_dgram_sendmsg_fndecl_3944 unix_dgram_sendmsg fndecl 3 3944 NULL
145825 +enable_so_ath6kl_send_go_probe_resp_fndecl_3946 ath6kl_send_go_probe_resp fndecl 3 3946 NULL
145826 +enable_so__efx_mcdi_rpc_async_fndecl_3948 _efx_mcdi_rpc_async fndecl 4-5 3948 NULL
145827 +enable_so_atalk_recvmsg_fndecl_3950 atalk_recvmsg fndecl 3 3950 NULL
145828 +enable_so_multipath_status_fndecl_3957 multipath_status fndecl 5 3957 NULL
145829 +enable_so_make_le_item_head_fndecl_3961 make_le_item_head fndecl 6-4-5 3961 NULL
145830 +enable_so_parse_header_ops_3963 parse header_ops 0 3963 NULL
145831 +enable_so_hpfs_de_as_down_as_possible_fndecl_3967 hpfs_de_as_down_as_possible fndecl 0-2 3967 NULL
145832 +enable_so_dgram_sendmsg_fndecl_3972 dgram_sendmsg fndecl 3 3972 NULL
145833 +enable_so_wrbs_per_cxn_hba_parameters_3974 wrbs_per_cxn hba_parameters 0 3974 NULL
145834 +enable_so_num_entries_aper_size_info_lvl2_3983 num_entries aper_size_info_lvl2 0 3983 NULL
145835 +enable_so_snd_usbmidi_cme_input_fndecl_3984 snd_usbmidi_cme_input fndecl 3 3984 NULL nohasharray
145836 +enable_so_max_ti_iu_len_srp_rdma_ch_3984 max_ti_iu_len srp_rdma_ch 0 3984 &enable_so_snd_usbmidi_cme_input_fndecl_3984
145837 +enable_so_num_pages_ttm_mem_reg_3986 num_pages ttm_mem_reg 0 3986 NULL
145838 +enable_so_i2400m_rx_trace_fndecl_3988 i2400m_rx_trace fndecl 3 3988 NULL
145839 +enable_so_rfcomm_sock_recvmsg_fndecl_3992 rfcomm_sock_recvmsg fndecl 3 3992 NULL
145840 +enable_so_opt_nflen_ipv6_txoptions_3998 opt_nflen ipv6_txoptions 0 3998 NULL
145841 +enable_so_rx_data_max_size_sst_generic_ipc_4011 rx_data_max_size sst_generic_ipc 0 4011 NULL
145842 +enable_so_bioset_create_nobvec_fndecl_4015 bioset_create_nobvec fndecl 2 4015 NULL
145843 +enable_so_rtl2830_regmap_gather_write_fndecl_4018 rtl2830_regmap_gather_write fndecl 5 4018 NULL
145844 +enable_so_b_size_mon_reader_bin_4021 b_size mon_reader_bin 0 4021 NULL
145845 +enable_so_j_start_reiserfs_journal_list_4030 j_start reiserfs_journal_list 0 4030 NULL
145846 +enable_so_length_usb_request_4031 length usb_request 0 4031 NULL
145847 +enable_so_MsgLength__MSG_EVENT_NOTIFY_REPLY_4038 MsgLength _MSG_EVENT_NOTIFY_REPLY 0 4038 NULL
145848 +enable_so_do_cow_fault_fndecl_4040 do_cow_fault fndecl 3-5 4040 NULL
145849 +enable_so_user_mss_tcp_options_received_4043 user_mss tcp_options_received 0 4043 NULL nohasharray
145850 +enable_so_ipc_rcu_alloc_fndecl_4043 ipc_rcu_alloc fndecl 1 4043 &enable_so_user_mss_tcp_options_received_4043
145851 +enable_so_scsi_execute_req_flags_fndecl_4044 scsi_execute_req_flags fndecl 5 4044 NULL
145852 +enable_so_tx_data_count_hso_serial_4046 tx_data_count hso_serial 0 4046 NULL
145853 +enable_so_btrfs_add_root_ref_fndecl_4049 btrfs_add_root_ref fndecl 4-3 4049 NULL
145854 +enable_so_ssid_len_cfg80211_connect_params_4052 ssid_len cfg80211_connect_params 0 4052 NULL nohasharray
145855 +enable_so_s_log2sharesize_adfs_sb_info_4052 s_log2sharesize adfs_sb_info 0 4052 &enable_so_ssid_len_cfg80211_connect_params_4052
145856 +enable_so_cx18_v4l2_read_fndecl_4063 cx18_v4l2_read fndecl 3 4063 NULL
145857 +enable_so_isoc_packet_size_usb_usbvision_4066 isoc_packet_size usb_usbvision 0 4066 NULL
145858 +enable_so_cfg80211_notify_new_peer_candidate_fndecl_4073 cfg80211_notify_new_peer_candidate fndecl 4 4073 NULL
145859 +enable_so_iscsi_max_snd_data_seg_len_dev_db_entry_4074 iscsi_max_snd_data_seg_len dev_db_entry 0 4074 NULL
145860 +enable_so_input_ff_create_fndecl_4075 input_ff_create fndecl 2 4075 NULL
145861 +enable_so_ring_overflow_per_user_data_4076 ring_overflow per_user_data 0 4076 NULL
145862 +enable_so_IOCRequestFrameSize_mpt3sas_facts_4079 IOCRequestFrameSize mpt3sas_facts 0 4079 NULL
145863 +enable_so_read_ftrace_buffer_info_4082 read ftrace_buffer_info 0 4082 NULL
145864 +enable_so_kvm_vcpu_read_guest_page_fndecl_4083 kvm_vcpu_read_guest_page fndecl 5 4083 NULL
145865 +enable_so_event_exit_inst_len_kvm_vcpu_arch_4085 event_exit_inst_len kvm_vcpu_arch 0 4085 NULL nohasharray
145866 +enable_so_n_drm_r128_depth_4085 n drm_r128_depth 0 4085 &enable_so_event_exit_inst_len_kvm_vcpu_arch_4085
145867 +enable_so_db_addr_mlx5_ib_create_qp_4086 db_addr mlx5_ib_create_qp 0 4086 NULL nohasharray
145868 +enable_so_skb_copy_and_csum_datagram_fndecl_4086 skb_copy_and_csum_datagram fndecl 4-2 4086 &enable_so_db_addr_mlx5_ib_create_qp_4086 nohasharray
145869 +enable_so_insert_normal_tree_ref_fndecl_4086 insert_normal_tree_ref fndecl 3-2 4086 &enable_so_skb_copy_and_csum_datagram_fndecl_4086
145870 +enable_so__ocfs2_free_clusters_fndecl_4087 _ocfs2_free_clusters fndecl 4 4087 NULL
145871 +enable_so_base_intel_initial_plane_config_4088 base intel_initial_plane_config 0 4088 NULL
145872 +enable_so_sca_keylength_sctp_authkey_4095 sca_keylength sctp_authkey 0 4095 NULL
145873 +enable_so_m1_xgene_enet_raw_desc_4097 m1 xgene_enet_raw_desc 0 4097 NULL
145874 +enable_so_ext4_fname_encrypted_size_fndecl_4100 ext4_fname_encrypted_size fndecl 0-2 4100 NULL
145875 +enable_so_special_ixgb_rx_desc_4107 special ixgb_rx_desc 0 4107 NULL nohasharray
145876 +enable_so_nbuttons_tca6416_keys_platform_data_4107 nbuttons tca6416_keys_platform_data 0 4107 &enable_so_special_ixgb_rx_desc_4107
145877 +enable_so_vringh_iov_pull_kern_fndecl_4115 vringh_iov_pull_kern fndecl 3 4115 NULL
145878 +enable_so_read_reg_fndecl_4120 read_reg fndecl 0 4120 NULL
145879 +enable_so_jffs2_acl_from_medium_fndecl_4129 jffs2_acl_from_medium fndecl 2 4129 NULL
145880 +enable_so_ocfs2_read_group_descriptor_fndecl_4136 ocfs2_read_group_descriptor fndecl 3 4136 NULL
145881 +enable_so_ssid_len_mwifiex_802_11_ssid_4139 ssid_len mwifiex_802_11_ssid 0 4139 NULL
145882 +enable_so_size_badblocks_4142 size badblocks 0 4142 NULL
145883 +enable_so_interleave_cfi_private_4153 interleave cfi_private 0 4153 NULL
145884 +enable_so_ocfs2_readpages_fndecl_4156 ocfs2_readpages fndecl 4 4156 NULL
145885 +enable_so_ext4_da_release_space_fndecl_4175 ext4_da_release_space fndecl 2 4175 NULL
145886 +enable_so_epp_write_data_parport_operations_4176 epp_write_data parport_operations 0 4176 NULL nohasharray
145887 +enable_so_tool_spadfn_read_fndecl_4176 tool_spadfn_read fndecl 3 4176 &enable_so_epp_write_data_parport_operations_4176
145888 +enable_so_max_rx_urb_irda_usb_cb_4182 max_rx_urb irda_usb_cb 0 4182 NULL
145889 +enable_so_saa7146_vmalloc_build_pgtable_fndecl_4183 saa7146_vmalloc_build_pgtable fndecl 2 4183 NULL
145890 +enable_so_team_change_mtu_fndecl_4186 team_change_mtu fndecl 2 4186 NULL
145891 +enable_so_irda_setsockopt_fndecl_4195 irda_setsockopt fndecl 5 4195 NULL
145892 +enable_so_pcpu_next_unpop_fndecl_4196 pcpu_next_unpop fndecl 4 4196 NULL
145893 +enable_so_wBeaconInfoLength_uwb_rc_evt_beacon_WUSB_0100_4200 wBeaconInfoLength uwb_rc_evt_beacon_WUSB_0100 0 4200 NULL
145894 +enable_so_sample_bits_snd_soc_dai_4206 sample_bits snd_soc_dai 0 4206 NULL nohasharray
145895 +enable_so_parent___prelim_ref_4206 parent __prelim_ref 0 4206 &enable_so_sample_bits_snd_soc_dai_4206
145896 +enable_so_auxv_size_prctl_mm_map_4208 auxv_size prctl_mm_map 0 4208 NULL
145897 +enable_so_max_vectors_i40e_virtchnl_vf_resource_4213 max_vectors i40e_virtchnl_vf_resource 0 4213 NULL
145898 +enable_so_ext2_setsize_fndecl_4215 ext2_setsize fndecl 2 4215 NULL nohasharray
145899 +enable_so_find_data_page_fndecl_4215 find_data_page fndecl 2 4215 &enable_so_ext2_setsize_fndecl_4215 nohasharray
145900 +enable_so_nci_hci_set_param_fndecl_4215 nci_hci_set_param fndecl 5 4215 &enable_so_find_data_page_fndecl_4215
145901 +enable_so_proc_stats_rid_open_fndecl_4219 proc_stats_rid_open fndecl 0 4219 NULL
145902 +enable_so_dlm_lock_fndecl_4225 dlm_lock fndecl 6 4225 NULL nohasharray
145903 +enable_so_nilfs_segbuf_map_fndecl_4225 nilfs_segbuf_map fndecl 2-3 4225 &enable_so_dlm_lock_fndecl_4225
145904 +enable_so___nla_put_fndecl_4226 __nla_put fndecl 3 4226 NULL
145905 +enable_so_num_lut_dmm_4228 num_lut dmm 0 4228 NULL
145906 +enable_so_len_bpf_prog_4232 len bpf_prog 0 4232 NULL
145907 +enable_so_ext3_xattr_user_set_fndecl_4238 ext3_xattr_user_set fndecl 4 4238 NULL nohasharray
145908 +enable_so_ip6gre_err_fndecl_4238 ip6gre_err fndecl 5 4238 &enable_so_ext3_xattr_user_set_fndecl_4238
145909 +enable_so_alloc_size_debug_buffer_4240 alloc_size debug_buffer 0 4240 NULL
145910 +enable_so_subpage_sft_mtd_info_4249 subpage_sft mtd_info 0 4249 NULL
145911 +enable_so_ieee80211_mesh_rx_mgmt_action_fndecl_4250 ieee80211_mesh_rx_mgmt_action fndecl 3 4250 NULL
145912 +enable_so_roaming_threshold_ipw_priv_4252 roaming_threshold ipw_priv 0 4252 NULL
145913 +enable_so_cfg80211_mlme_register_mgmt_fndecl_4255 cfg80211_mlme_register_mgmt fndecl 5 4255 NULL
145914 +enable_so_ntids_tid_info_4263 ntids tid_info 0 4263 NULL
145915 +enable_so_nilfs_gccache_submit_read_node_fndecl_4267 nilfs_gccache_submit_read_node fndecl 2-3 4267 NULL
145916 +enable_so_xgbe_init_ring_fndecl_4270 xgbe_init_ring fndecl 3 4270 NULL nohasharray
145917 +enable_so_qlcnic_sysfs_read_pci_config_fndecl_4270 qlcnic_sysfs_read_pci_config fndecl 6 4270 &enable_so_xgbe_init_ring_fndecl_4270
145918 +enable_so_ide_set_pio_fndecl_4272 ide_set_pio fndecl 2 4272 NULL
145919 +enable_so_mrp_request_join_fndecl_4281 mrp_request_join fndecl 4 4281 NULL
145920 +enable_so_gfs2_getbuf_fndecl_4283 gfs2_getbuf fndecl 2 4283 NULL
145921 +enable_so_add_pending_dir_move_fndecl_4285 add_pending_dir_move fndecl 2 4285 NULL
145922 +enable_so_route_mtu_cached_xfrm_dst_4288 route_mtu_cached xfrm_dst 0 4288 NULL nohasharray
145923 +enable_so_mangle_name_fndecl_4288 mangle_name fndecl 0 4288 &enable_so_route_mtu_cached_xfrm_dst_4288
145924 +enable_so_h_next_leaf_blk_ocfs2_extent_block_4292 h_next_leaf_blk ocfs2_extent_block 0 4292 NULL
145925 +enable_so_cgroup_task_count_fndecl_4297 cgroup_task_count fndecl 0 4297 NULL
145926 +enable_so_maxpacket_musb_qh_4303 maxpacket musb_qh 0 4303 NULL nohasharray
145927 +enable_so____copy_to_user_fndecl_4303 ___copy_to_user fndecl 0 4303 &enable_so_maxpacket_musb_qh_4303
145928 +enable_so_freq_tef6862_state_4304 freq tef6862_state 0 4304 NULL
145929 +enable_so_rs_rate_from_ucode_rate_fndecl_4310 rs_rate_from_ucode_rate fndecl 1 4310 NULL
145930 +enable_so_vsync_offset_pulse_width_lo_detailed_pixel_timing_4318 vsync_offset_pulse_width_lo detailed_pixel_timing 0 4318 NULL nohasharray
145931 +enable_so_bufsize_i2c_hid_4318 bufsize i2c_hid 0 4318 &enable_so_vsync_offset_pulse_width_lo_detailed_pixel_timing_4318
145932 +enable_so_old_chunk_dm_exception_4333 old_chunk dm_exception 0 4333 NULL
145933 +enable_so_length_rbd_obj_request_4337 length rbd_obj_request 0 4337 NULL
145934 +enable_so_v4l2_ctrl_new_fndecl_4341 v4l2_ctrl_new fndecl 8-12 4341 NULL
145935 +enable_so_key_len_neigh_table_4347 key_len neigh_table 0 4347 NULL
145936 +enable_so_scrbuf_size_sisusb_usb_data_4350 scrbuf_size sisusb_usb_data 0 4350 NULL
145937 +enable_so_len_mwifiex_ds_misc_gen_ie_4351 len mwifiex_ds_misc_gen_ie 0 4351 NULL
145938 +enable_so_musb_giveback_fndecl_4352 musb_giveback fndecl 3 4352 NULL
145939 +enable_so_o_size_x509_parse_context_4358 o_size x509_parse_context 0 4358 NULL
145940 +enable_so_max_sg_segs_vardecl_osst_c_4365 max_sg_segs vardecl_osst.c 0 4365 NULL
145941 +enable_so_isdn_tty_edit_at_fndecl_4376 isdn_tty_edit_at fndecl 0 4376 NULL nohasharray
145942 +enable_so_nilfs_sufile_resize_fndecl_4376 nilfs_sufile_resize fndecl 2 4376 &enable_so_isdn_tty_edit_at_fndecl_4376
145943 +enable_so_ts_packet_size_cx8802_dev_4383 ts_packet_size cx8802_dev 0 4383 NULL
145944 +enable_so_ext4_add_new_descs_fndecl_4390 ext4_add_new_descs fndecl 3 4390 NULL
145945 +enable_so_err_vlan_tg3_rx_buffer_desc_4391 err_vlan tg3_rx_buffer_desc 0 4391 NULL
145946 +enable_so_diReadSpecial_fndecl_4393 diReadSpecial fndecl 2 4393 NULL
145947 +enable_so_mgag200_bo_create_fndecl_4398 mgag200_bo_create fndecl 2 4398 NULL
145948 +enable_so_skb_realloc_headroom_fndecl_4399 skb_realloc_headroom fndecl 2 4399 NULL nohasharray
145949 +enable_so_ath10k_mem_value_write_fndecl_4399 ath10k_mem_value_write fndecl 3 4399 &enable_so_skb_realloc_headroom_fndecl_4399
145950 +enable_so_leadin_ignore_xpnet_message_4402 leadin_ignore xpnet_message 0 4402 NULL
145951 +enable_so_kstrtoll_from_user_fndecl_4415 kstrtoll_from_user fndecl 2 4415 NULL
145952 +enable_so_new_bytenr_backref_node_4416 new_bytenr backref_node 0 4416 NULL
145953 +enable_so___alloc_block_fndecl_4419 __alloc_block fndecl 2 4419 NULL nohasharray
145954 +enable_so_nfc_llcp_build_tlv_fndecl_4419 nfc_llcp_build_tlv fndecl 3 4419 &enable_so___alloc_block_fndecl_4419
145955 +enable_so_bl_idle_driver_init_fndecl_4432 bl_idle_driver_init fndecl 0 4432 NULL
145956 +enable_so_batadv_tvlv_container_register_fndecl_4435 batadv_tvlv_container_register fndecl 5 4435 NULL
145957 +enable_so_jfs_fsync_fndecl_4436 jfs_fsync fndecl 2 4436 NULL
145958 +enable_so_f2fs_add_inline_entry_fndecl_4438 f2fs_add_inline_entry fndecl 4 4438 NULL
145959 +enable_so_bRefresh_usb_endpoint_descriptor_4444 bRefresh usb_endpoint_descriptor 0 4444 NULL
145960 +enable_so_number_mdu_disk_info_s_4445 number mdu_disk_info_s 0 4445 NULL
145961 +enable_so_width_simplefb_params_4449 width simplefb_params 0 4449 NULL
145962 +enable_so_ieee80211_key_alloc_fndecl_4452 ieee80211_key_alloc fndecl 3 4452 NULL
145963 +enable_so_n_comedi_insn_4458 n comedi_insn 0 4458 NULL
145964 +enable_so_sftid_base_tid_info_4462 sftid_base tid_info 0 4462 NULL
145965 +enable_so_fifo_size_fritz_bcs_4463 fifo_size fritz_bcs 0 4463 NULL
145966 +enable_so_gunzip_fndecl_4465 gunzip fndecl 2 4465 NULL
145967 +enable_so_kernel_read_fndecl_4468 kernel_read fndecl 0 4468 NULL
145968 +enable_so_rx_ring_size_altera_tse_private_4470 rx_ring_size altera_tse_private 0 4470 NULL
145969 +enable_so_sddr09_read22_fndecl_4476 sddr09_read22 fndecl 4-3 4476 NULL
145970 +enable_so_ocfs2_control_message_fndecl_4479 ocfs2_control_message fndecl 3 4479 NULL
145971 +enable_so_hdr_len_l2tp_session_4486 hdr_len l2tp_session 0 4486 NULL
145972 +enable_so_drbg_sec_strength_fndecl_4487 drbg_sec_strength fndecl 0 4487 NULL
145973 +enable_so_fallocate_chunk_fndecl_4489 fallocate_chunk fndecl 3 4489 NULL
145974 +enable_so_load_xattr_datum_fndecl_4505 load_xattr_datum fndecl 0 4505 NULL
145975 +enable_so___mei_cl_recv_fndecl_4519 __mei_cl_recv fndecl 3 4519 NULL
145976 +enable_so_buf_addr_mlx5_ib_create_qp_4533 buf_addr mlx5_ib_create_qp 0 4533 NULL
145977 +enable_so_nfs3_proc_readdir_fndecl_4544 nfs3_proc_readdir fndecl 5 4544 NULL
145978 +enable_so_BlocksPerUnit_partition_t_4545 BlocksPerUnit partition_t 0 4545 NULL
145979 +enable_so_uhci_giveback_urb_fndecl_4547 uhci_giveback_urb fndecl 4 4547 NULL
145980 +enable_so_data_len_o2net_msg_4553 data_len o2net_msg 0 4553 NULL
145981 +enable_so_hwcursor_size_sis_video_info_4560 hwcursor_size sis_video_info 0 4560 NULL nohasharray
145982 +enable_so_parser_init_fndecl_4560 parser_init fndecl 2 4560 &enable_so_hwcursor_size_sis_video_info_4560
145983 +enable_so_channels_snd_korg1212_4562 channels snd_korg1212 0 4562 NULL
145984 +enable_so_word1_pkt_stat_desc_4565 word1 pkt_stat_desc 0 4565 NULL
145985 +enable_so_LoadBitmap_fndecl_4569 LoadBitmap fndecl 2 4569 NULL
145986 +enable_so_far_copies_geom_4570 far_copies geom 0 4570 NULL
145987 +enable_so_dlen_nft_set_4577 dlen nft_set 0 4577 NULL
145988 +enable_so_rx_buf_sz_gem_4593 rx_buf_sz gem 0 4593 NULL
145989 +enable_so_btrfs_del_inode_extref_fndecl_4607 btrfs_del_inode_extref fndecl 4-5 4607 NULL
145990 +enable_so_max_event_log_size_iwl_base_params_4612 max_event_log_size iwl_base_params 0 4612 NULL
145991 +enable_so_sxgbe_change_mtu_fndecl_4613 sxgbe_change_mtu fndecl 2 4613 NULL
145992 +enable_so_cksumlength_gss_krb5_enctype_4630 cksumlength gss_krb5_enctype 0 4630 NULL nohasharray
145993 +enable_so_pvr2_ctrl_value_to_sym_fndecl_4630 pvr2_ctrl_value_to_sym fndecl 5 4630 &enable_so_cksumlength_gss_krb5_enctype_4630
145994 +enable_so_tcam_size_mc5_4631 tcam_size mc5 0 4631 NULL nohasharray
145995 +enable_so_size_minus_one_mxt_object_4631 size_minus_one mxt_object 0 4631 &enable_so_tcam_size_mc5_4631
145996 +enable_so_total_bytes__osd_req_data_segment_4634 total_bytes _osd_req_data_segment 0 4634 NULL
145997 +enable_so_skl_calc_wrpll_link_fndecl_4648 skl_calc_wrpll_link fndecl 0 4648 NULL
145998 +enable_so_read_eeprom_bytes_fndecl_4649 read_eeprom_bytes fndecl 4 4649 NULL
145999 +enable_so_size_simple_transaction_argresp_4650 size simple_transaction_argresp 0 4650 NULL
146000 +enable_so_buffer_size_smsusb_device_t_4667 buffer_size smsusb_device_t 0 4667 NULL
146001 +enable_so_overridesize_vardecl_nandsim_c_4668 overridesize vardecl_nandsim.c 0 4668 NULL
146002 +enable_so_r10_sync_page_io_fndecl_4672 r10_sync_page_io fndecl 3-2 4672 NULL
146003 +enable_so_bytenr_btrfs_ordered_sum_4679 bytenr btrfs_ordered_sum 0 4679 NULL
146004 +enable_so__rtl92s_get_h2c_cmdlen_fndecl_4683 _rtl92s_get_h2c_cmdlen fndecl 0 4683 NULL
146005 +enable_so_snd_pcm_hw_param_near_fndecl_4691 snd_pcm_hw_param_near fndecl 4 4691 NULL
146006 +enable_so_send_section_cnt_netvsc_device_4698 send_section_cnt netvsc_device 0 4698 NULL
146007 +enable_so_btrfs_header_nritems_fndecl_4699 btrfs_header_nritems fndecl 0 4699 NULL
146008 +enable_so_bpf_func_bpf_prog_4701 bpf_func bpf_prog 0 4701 NULL
146009 +enable_so_iwl_parse_nvm_mcc_info_fndecl_4702 iwl_parse_nvm_mcc_info fndecl 3 4702 NULL
146010 +enable_so_xdr_decode_word_fndecl_4707 xdr_decode_word fndecl 2 4707 NULL
146011 +enable_so_gfs2_glock_nq_m_fndecl_4712 gfs2_glock_nq_m fndecl 1 4712 NULL
146012 +enable_so_nr_hw_queues_blk_mq_tag_set_4713 nr_hw_queues blk_mq_tag_set 0 4713 NULL
146013 +enable_so_count_user_sgentry64_4714 count user_sgentry64 0 4714 NULL
146014 +enable_so_hpfs_ea_remove_fndecl_4717 hpfs_ea_remove fndecl 2-4 4717 NULL
146015 +enable_so_next_page_mpage_da_data_4726 next_page mpage_da_data 0 4726 NULL
146016 +enable_so_hsync_offset_lo_detailed_pixel_timing_4733 hsync_offset_lo detailed_pixel_timing 0 4733 NULL
146017 +enable_so_net2272_read_packet_fndecl_4735 net2272_read_packet fndecl 4 4735 NULL
146018 +enable_so_root_dm_cache_metadata_4742 root dm_cache_metadata 0 4742 NULL
146019 +enable_so_smk_set_cipso_fndecl_4744 smk_set_cipso fndecl 3 4744 NULL
146020 +enable_so_num_srq_mthca_profile_4747 num_srq mthca_profile 0 4747 NULL
146021 +enable_so_netlbl_catmap_setrng_fndecl_4749 netlbl_catmap_setrng fndecl 2 4749 NULL
146022 +enable_so_format_count_drm_plane_4754 format_count drm_plane 0 4754 NULL
146023 +enable_so_desc_len_ata_eh_info_4755 desc_len ata_eh_info 0 4755 NULL nohasharray
146024 +enable_so_maxpacket_sl811h_ep_4755 maxpacket sl811h_ep 0 4755 &enable_so_desc_len_ata_eh_info_4755
146025 +enable_so_read_reg_cc770_priv_4760 read_reg cc770_priv 0 4760 NULL
146026 +enable_so_length_property_4777 length property 0 4777 NULL
146027 +enable_so_stride_snd_usb_endpoint_4779 stride snd_usb_endpoint 0 4779 NULL
146028 +enable_so_max_tfr_mmc_test_area_4780 max_tfr mmc_test_area 0 4780 NULL
146029 +enable_so_crtc_vsync_start_drm_display_mode_4785 crtc_vsync_start drm_display_mode 0 4785 NULL nohasharray
146030 +enable_so_n_channels_cfg80211_scan_request_4785 n_channels cfg80211_scan_request 0 4785 &enable_so_crtc_vsync_start_drm_display_mode_4785
146031 +enable_so___kfifo_from_user_fndecl_4796 __kfifo_from_user fndecl 3 4796 NULL nohasharray
146032 +enable_so_SyS_get_mempolicy_fndecl_4796 SyS_get_mempolicy fndecl 3 4796 &enable_so___kfifo_from_user_fndecl_4796
146033 +enable_so_fmc_send_cmd_fndecl_4800 fmc_send_cmd fndecl 5 4800 NULL
146034 +enable_so_set_indirect_ea_fndecl_4810 set_indirect_ea fndecl 5-3 4810 NULL
146035 +enable_so_length_reiserfs_security_handle_4813 length reiserfs_security_handle 0 4813 NULL
146036 +enable_so_buffer_size_ide_tape_obj_4815 buffer_size ide_tape_obj 0 4815 NULL
146037 +enable_so_ext4_dir_llseek_fndecl_4826 ext4_dir_llseek fndecl 2 4826 NULL
146038 +enable_so_i2c_read_fndecl_4828 i2c_read fndecl 4-6 4828 NULL
146039 +enable_so_nelems_cciss_scsi_cmd_stack_t_4829 nelems cciss_scsi_cmd_stack_t 0 4829 NULL
146040 +enable_so_alloc_dummy_extent_buffer_fndecl_4832 alloc_dummy_extent_buffer fndecl 2 4832 NULL
146041 +enable_so_read_buf_fndecl_4838 read_buf fndecl 2 4838 NULL
146042 +enable_so_compat_ipv6_setsockopt_fndecl_4839 compat_ipv6_setsockopt fndecl 5 4839 NULL
146043 +enable_so_bio_trim_fndecl_4843 bio_trim fndecl 2-3 4843 NULL
146044 +enable_so_btrfs_get_32_fndecl_4847 btrfs_get_32 fndecl 0 4847 NULL
146045 +enable_so_hash_size_cache_detail_4852 hash_size cache_detail 0 4852 NULL
146046 +enable_so_max_tgts_snic_fw_info_4861 max_tgts snic_fw_info 0 4861 NULL
146047 +enable_so_attach_hdlc_protocol_fndecl_4865 attach_hdlc_protocol fndecl 3 4865 NULL
146048 +enable_so_s_desc_per_block_ext4_sb_info_4867 s_desc_per_block ext4_sb_info 0 4867 NULL nohasharray
146049 +enable_so_gfn_to_hva_memslot_prot_fndecl_4867 gfn_to_hva_memslot_prot fndecl 2 4867 &enable_so_s_desc_per_block_ext4_sb_info_4867
146050 +enable_so_i40e_reserve_msix_vectors_fndecl_4870 i40e_reserve_msix_vectors fndecl 0 4870 NULL
146051 +enable_so_i_lenEAttr_udf_inode_info_4872 i_lenEAttr udf_inode_info 0 4872 NULL
146052 +enable_so_out_args_qlcnic_mailbox_metadata_4881 out_args qlcnic_mailbox_metadata 0 4881 NULL
146053 +enable_so_reiserfs_read_bitmap_block_fndecl_4892 reiserfs_read_bitmap_block fndecl 2 4892 NULL
146054 +enable_so_snd_interval_refine_min_fndecl_4894 snd_interval_refine_min fndecl 2 4894 NULL nohasharray
146055 +enable_so_sc_datablk_cnt_nilfs_sc_info_4894 sc_datablk_cnt nilfs_sc_info 0 4894 &enable_so_snd_interval_refine_min_fndecl_4894
146056 +enable_so_head_circ_buf_4897 head circ_buf 0 4897 NULL
146057 +enable_so_wMaxSegmentSize_usb_cdc_ether_desc_4898 wMaxSegmentSize usb_cdc_ether_desc 0 4898 NULL nohasharray
146058 +enable_so_refdiv_arizona_fll_cfg_4898 refdiv arizona_fll_cfg 0 4898 &enable_so_wMaxSegmentSize_usb_cdc_ether_desc_4898
146059 +enable_so_upper_size_to_lower_size_fndecl_4899 upper_size_to_lower_size fndecl 0-2 4899 NULL
146060 +enable_so_need_tx_headroom_prism2_helper_functions_4902 need_tx_headroom prism2_helper_functions 0 4902 NULL
146061 +enable_so_SYSC_fgetxattr_fndecl_4904 SYSC_fgetxattr fndecl 4 4904 NULL
146062 +enable_so_diva_um_idi_read_fndecl_4912 diva_um_idi_read fndecl 0 4912 NULL
146063 +enable_so_tree_mod_log_eb_move_fndecl_4920 tree_mod_log_eb_move fndecl 5 4920 NULL
146064 +enable_so_event_trigger_write_fndecl_4922 event_trigger_write fndecl 3 4922 NULL
146065 +enable_so_bpp_drm_mode_fb_cmd_4936 bpp drm_mode_fb_cmd 0 4936 NULL
146066 +enable_so_clear_extent_bits_fndecl_4939 clear_extent_bits fndecl 2-3 4939 NULL
146067 +enable_so_ocfs2_xattr_security_set_fndecl_4947 ocfs2_xattr_security_set fndecl 4 4947 NULL
146068 +enable_so_mlx5_ib_db_map_user_fndecl_4950 mlx5_ib_db_map_user fndecl 2 4950 NULL nohasharray
146069 +enable_so_update_tind_extent_range_fndecl_4950 update_tind_extent_range fndecl 3 4950 &enable_so_mlx5_ib_db_map_user_fndecl_4950 nohasharray
146070 +enable_so_read_tape_fndecl_4950 read_tape fndecl 2 4950 &enable_so_update_tind_extent_range_fndecl_4950
146071 +enable_so_clear_extent_uptodate_fndecl_4952 clear_extent_uptodate fndecl 2-3 4952 NULL
146072 +enable_so_myri10ge_get_txrx_fndecl_4953 myri10ge_get_txrx fndecl 2 4953 NULL
146073 +enable_so_aat2870_reg_write_file_fndecl_4965 aat2870_reg_write_file fndecl 3 4965 NULL
146074 +enable_so_team_options_register_fndecl_4968 team_options_register fndecl 3 4968 NULL
146075 +enable_so_reiserfs_dir_fsync_fndecl_4971 reiserfs_dir_fsync fndecl 2 4971 NULL
146076 +enable_so_iwl_mvm_power_mac_dbgfs_read_fndecl_4976 iwl_mvm_power_mac_dbgfs_read fndecl 4 4976 NULL
146077 +enable_so_t_data_nents_se_cmd_4981 t_data_nents se_cmd 0 4981 NULL nohasharray
146078 +enable_so_dma_tx_num_vardecl_altera_tse_main_c_4981 dma_tx_num vardecl_altera_tse_main.c 0 4981 &enable_so_t_data_nents_se_cmd_4981
146079 +enable_so_btrfs_pin_extent_for_log_replay_fndecl_4982 btrfs_pin_extent_for_log_replay fndecl 3-2 4982 NULL
146080 +enable_so_scif_send_fndecl_4988 scif_send fndecl 3 4988 NULL
146081 +enable_so_stripe_unit_ore_layout_4991 stripe_unit ore_layout 0 4991 NULL
146082 +enable_so_kmem_cache_create_fndecl_5007 kmem_cache_create fndecl 2-3 5007 NULL
146083 +enable_so_numEntries__ATOM_PPLIB_SAMClk_Voltage_Limit_Table_5010 numEntries _ATOM_PPLIB_SAMClk_Voltage_Limit_Table 0 5010 NULL
146084 +enable_so_xenvif_gop_skb_fndecl_5015 xenvif_gop_skb fndecl 0 5015 NULL
146085 +enable_so_bulk_in_size_usb_idmouse_5017 bulk_in_size usb_idmouse 0 5017 NULL
146086 +enable_so_addr_snd_dma_buffer_5022 addr snd_dma_buffer 0 5022 NULL nohasharray
146087 +enable_so_fd_do_unmap_fndecl_5022 fd_do_unmap fndecl 4-3 5022 &enable_so_addr_snd_dma_buffer_5022
146088 +enable_so_hard_header_len_net_device_5025 hard_header_len net_device 0 5025 NULL
146089 +enable_so_port_rme96_5035 port rme96 0 5035 NULL
146090 +enable_so_ldebugfs_fid_write_common_fndecl_5049 ldebugfs_fid_write_common fndecl 2 5049 NULL
146091 +enable_so_jffs2_fsync_fndecl_5052 jffs2_fsync fndecl 2 5052 NULL
146092 +enable_so_index_squashfs_dir_index_5053 index squashfs_dir_index 0 5053 NULL
146093 +enable_so_rcvidx_IsdnCardState_5055 rcvidx IsdnCardState 0 5055 NULL
146094 +enable_so_ext4_llseek_fndecl_5060 ext4_llseek fndecl 2 5060 NULL
146095 +enable_so_addr_iwch_mm_entry_5067 addr iwch_mm_entry 0 5067 NULL
146096 +enable_so_size_compat_arpt_replace_5071 size compat_arpt_replace 0 5071 NULL
146097 +enable_so_ie_len_cfg80211_scan_request_5073 ie_len cfg80211_scan_request 0 5073 NULL
146098 +enable_so_tomoyo_commit_ok_fndecl_5076 tomoyo_commit_ok fndecl 2 5076 NULL
146099 +enable_so_read_flush_pipefs_fndecl_5080 read_flush_pipefs fndecl 3 5080 NULL
146100 +enable_so_bitmap_find_next_zero_area_off_fndecl_5088 bitmap_find_next_zero_area_off fndecl 0-4-5-6 5088 NULL nohasharray
146101 +enable_so_num_slots_input_mt_5088 num_slots input_mt 0 5088 &enable_so_bitmap_find_next_zero_area_off_fndecl_5088
146102 +enable_so_udf_bitmap_new_block_fndecl_5093 udf_bitmap_new_block fndecl 4 5093 NULL nohasharray
146103 +enable_so_udf_do_extend_file_fndecl_5093 udf_do_extend_file fndecl 4 5093 &enable_so_udf_bitmap_new_block_fndecl_5093
146104 +enable_so_fb_cvt_hperiod_fndecl_5103 fb_cvt_hperiod fndecl 0 5103 NULL
146105 +enable_so_trusted_set_fndecl_5111 trusted_set fndecl 4 5111 NULL
146106 +enable_so_mem_eni_dev_5112 mem eni_dev 0 5112 NULL
146107 +enable_so_num_banks_adf_hw_device_data_5115 num_banks adf_hw_device_data 0 5115 NULL
146108 +enable_so___link_buffer_fndecl_5117 __link_buffer fndecl 2 5117 NULL
146109 +enable_so_ocfs2_trim_extent_fndecl_5124 ocfs2_trim_extent fndecl 4-3 5124 NULL
146110 +enable_so_ceph_alloc_page_vector_fndecl_5125 ceph_alloc_page_vector fndecl 1 5125 NULL
146111 +enable_so_fuse_dev_splice_write_fndecl_5131 fuse_dev_splice_write fndecl 4 5131 NULL
146112 +enable_so_nfs4_init_callback_netid_fndecl_5134 nfs4_init_callback_netid fndecl 3-0 5134 NULL
146113 +enable_so_rlen_si2157_cmd_5138 rlen si2157_cmd 0 5138 NULL nohasharray
146114 +enable_so_channel_count_il_priv_5138 channel_count il_priv 0 5138 &enable_so_rlen_si2157_cmd_5138
146115 +enable_so_echo_client_prep_commit_fndecl_5142 echo_client_prep_commit fndecl 8 5142 NULL
146116 +enable_so_ocfs2_iget_fndecl_5154 ocfs2_iget fndecl 2 5154 NULL
146117 +enable_so_stv0297_readregs_fndecl_5156 stv0297_readregs fndecl 4 5156 NULL
146118 +enable_so_o2hb_debug_create_fndecl_5163 o2hb_debug_create fndecl 4 5163 NULL
146119 +enable_so_tx_hdr_len_p54_common_5164 tx_hdr_len p54_common 0 5164 NULL
146120 +enable_so_indices_ixgbe_ring_feature_5170 indices ixgbe_ring_feature 0 5170 NULL
146121 +enable_so_ext4_es_insert_extent_fndecl_5178 ext4_es_insert_extent fndecl 3-2 5178 NULL nohasharray
146122 +enable_so_len_bts_file_action_5178 len bts_file_action 0 5178 &enable_so_ext4_es_insert_extent_fndecl_5178
146123 +enable_so_inofree_iagctl_5194 inofree iagctl 0 5194 NULL
146124 +enable_so_SyS_lsetxattr_fndecl_5195 SyS_lsetxattr fndecl 4 5195 NULL
146125 +enable_so_snd_midi_event_encode_fndecl_5210 snd_midi_event_encode fndecl 0 5210 NULL
146126 +enable_so_drm_gem_private_object_init_fndecl_5217 drm_gem_private_object_init fndecl 3 5217 NULL
146127 +enable_so_mmc_test_broken_transfer_fndecl_5224 mmc_test_broken_transfer fndecl 3-2 5224 NULL
146128 +enable_so_dm_stats_print_fndecl_5228 dm_stats_print fndecl 7 5228 NULL
146129 +enable_so_madvise_hwpoison_fndecl_5231 madvise_hwpoison fndecl 2 5231 NULL
146130 +enable_so_emulate_ss_fndecl_5254 emulate_ss fndecl 2 5254 NULL
146131 +enable_so_iterate_inode_refs_fndecl_5261 iterate_inode_refs fndecl 1 5261 NULL
146132 +enable_so_len_fstrim_range_5265 len fstrim_range 0 5265 NULL
146133 +enable_so_v4l2_detect_cvt_fndecl_5273 v4l2_detect_cvt fndecl 2-3-1 5273 NULL
146134 +enable_so_h_total_aty128_crtc_5275 h_total aty128_crtc 0 5275 NULL nohasharray
146135 +enable_so_sys_modify_ldt_fndecl_5275 sys_modify_ldt fndecl 3 5275 &enable_so_h_total_aty128_crtc_5275
146136 +enable_so_upload_data_fndecl_5277 upload_data fndecl 2 5277 NULL nohasharray
146137 +enable_so_fi_extents_max_fiemap_extent_info_5277 fi_extents_max fiemap_extent_info 0 5277 &enable_so_upload_data_fndecl_5277
146138 +enable_so_xlog_find_verify_log_record_fndecl_5285 xlog_find_verify_log_record fndecl 2 5285 NULL
146139 +enable_so_dma_offset_freelQ_5299 dma_offset freelQ 0 5299 NULL nohasharray
146140 +enable_so_lpt_hght_ubifs_info_5299 lpt_hght ubifs_info 0 5299 &enable_so_dma_offset_freelQ_5299
146141 +enable_so_drm_ht_create_fndecl_5302 drm_ht_create fndecl 2 5302 NULL
146142 +enable_so_sctp_setsockopt_events_fndecl_5309 sctp_setsockopt_events fndecl 3 5309 NULL
146143 +enable_so_ds_num_nfs4_file_layout_dsaddr_5314 ds_num nfs4_file_layout_dsaddr 0 5314 NULL
146144 +enable_so_gru_init_chiplet_fndecl_5317 gru_init_chiplet fndecl 2 5317 NULL nohasharray
146145 +enable_so_devm_mdiobus_alloc_size_fndecl_5317 devm_mdiobus_alloc_size fndecl 2 5317 &enable_so_gru_init_chiplet_fndecl_5317
146146 +enable_so_matchsize_xt_match_5320 matchsize xt_match 0 5320 NULL
146147 +enable_so____alloc_bootmem_node_fndecl_5329 ___alloc_bootmem_node fndecl 3-2 5329 NULL nohasharray
146148 +enable_so_tcp_try_undo_partial_fndecl_5329 tcp_try_undo_partial fndecl 2 5329 &enable_so____alloc_bootmem_node_fndecl_5329
146149 +enable_so_get_cramfs_inode_fndecl_5332 get_cramfs_inode fndecl 3 5332 NULL
146150 +enable_so_jfs_quota_read_fndecl_5341 jfs_quota_read fndecl 5 5341 NULL
146151 +enable_so_comedi_isadma_alloc_fndecl_5342 comedi_isadma_alloc fndecl 2 5342 NULL
146152 +enable_so_get_cr3_kvm_mmu_5347 get_cr3 kvm_mmu 0 5347 NULL
146153 +enable_so_data_count_iscsi_task_5350 data_count iscsi_task 0 5350 NULL
146154 +enable_so_ddi_pll_sel_intel_crtc_state_5353 ddi_pll_sel intel_crtc_state 0 5353 NULL
146155 +enable_so_brcmf_usb_send_ctl_fndecl_5357 brcmf_usb_send_ctl fndecl 3 5357 NULL
146156 +enable_so_compute_blocknr_fndecl_5361 compute_blocknr fndecl 2 5361 NULL nohasharray
146157 +enable_so_read_user_buf_avail_tomoyo_io_buffer_5361 read_user_buf_avail tomoyo_io_buffer 0 5361 &enable_so_compute_blocknr_fndecl_5361
146158 +enable_so_ceph_setxattr_fndecl_5362 ceph_setxattr fndecl 4 5362 NULL
146159 +enable_so_nfs4_proc_readdir_fndecl_5367 nfs4_proc_readdir fndecl 5 5367 NULL
146160 +enable_so_xfs_buf_read_uncached_fndecl_5369 xfs_buf_read_uncached fndecl 3-2 5369 NULL
146161 +enable_so_ieee80211_rx_mgmt_disassoc_fndecl_5372 ieee80211_rx_mgmt_disassoc fndecl 3 5372 NULL
146162 +enable_so_mwifiex_write_data_to_card_fndecl_5375 mwifiex_write_data_to_card fndecl 3 5375 NULL
146163 +enable_so_skbprio_ip_set_ext_5381 skbprio ip_set_ext 0 5381 NULL nohasharray
146164 +enable_so_flash_dev_cache_miss_fndecl_5381 flash_dev_cache_miss fndecl 4 5381 &enable_so_skbprio_ip_set_ext_5381
146165 +enable_so_regset_tls_set_fndecl_5384 regset_tls_set fndecl 4 5384 NULL
146166 +enable_so_fuse_perform_write_fndecl_5386 fuse_perform_write fndecl 4-0 5386 NULL
146167 +enable_so_check_iommu_size_fndecl_5390 check_iommu_size fndecl 0-2-1 5390 NULL
146168 +enable_so_iscsi_create_flashnode_sess_fndecl_5394 iscsi_create_flashnode_sess fndecl 4 5394 NULL
146169 +enable_so_len_iw_mgmt_info_element_5411 len iw_mgmt_info_element 0 5411 NULL
146170 +enable_so_udpv6_setsockopt_fndecl_5412 udpv6_setsockopt fndecl 5 5412 NULL
146171 +enable_so_allocmin_nilfs_sufile_info_5418 allocmin nilfs_sufile_info 0 5418 NULL
146172 +enable_so_ino_ncp_entry_info_5423 ino ncp_entry_info 0 5423 NULL nohasharray
146173 +enable_so_nilfs_sufile_truncate_range_fndecl_5423 nilfs_sufile_truncate_range fndecl 3-2 5423 &enable_so_ino_ncp_entry_info_5423
146174 +enable_so_dma_alloc_from_contiguous_fndecl_5425 dma_alloc_from_contiguous fndecl 2-3 5425 NULL
146175 +enable_so_port_mad_size_fndecl_5434 port_mad_size fndecl 0 5434 NULL
146176 +enable_so_sigmadsp_read_i2c_fndecl_5435 sigmadsp_read_i2c fndecl 4 5435 NULL
146177 +enable_so_btrfs_fiemap_fndecl_5462 btrfs_fiemap fndecl 4-3 5462 NULL
146178 +enable_so_num_stations_il_priv_5465 num_stations il_priv 0 5465 NULL
146179 +enable_so_y_drm_vmw_rect_5478 y drm_vmw_rect 0 5478 NULL
146180 +enable_so_btrfs_double_lock_fndecl_5482 btrfs_double_lock fndecl 5-4-2 5482 NULL
146181 +enable_so_efs_find_entry_fndecl_5485 efs_find_entry fndecl 0 5485 NULL
146182 +enable_so_valuelen_xfs_attr_sf_entry_5490 valuelen xfs_attr_sf_entry 0 5490 NULL
146183 +enable_so_block_isofs_fid_5500 block isofs_fid 0 5500 NULL nohasharray
146184 +enable_so_seq_copy_in_user_fndecl_5500 seq_copy_in_user fndecl 3 5500 &enable_so_block_isofs_fid_5500
146185 +enable_so_s_fpb_ufs_sb_private_info_5504 s_fpb ufs_sb_private_info 0 5504 NULL
146186 +enable_so_failure_frame_iwlagn_tx_resp_5509 failure_frame iwlagn_tx_resp 0 5509 NULL nohasharray
146187 +enable_so_f_width_camif_frame_5509 f_width camif_frame 0 5509 &enable_so_failure_frame_iwlagn_tx_resp_5509
146188 +enable_so___tipc_sendmsg_fndecl_5510 __tipc_sendmsg fndecl 3 5510 NULL
146189 +enable_so_wiidebug_eeprom_read_fndecl_5523 wiidebug_eeprom_read fndecl 3 5523 NULL
146190 +enable_so_smk_write_rules_list_fndecl_5526 smk_write_rules_list fndecl 3 5526 NULL
146191 +enable_so_intel_bios_ssc_frequency_fndecl_5528 intel_bios_ssc_frequency fndecl 0 5528 NULL
146192 +enable_so_ceph_tcp_sendpage_fndecl_5531 ceph_tcp_sendpage fndecl 0 5531 NULL
146193 +enable_so_tool_dbfn_read_fndecl_5532 tool_dbfn_read fndecl 3 5532 NULL
146194 +enable_so_batadv_arp_get_type_fndecl_5538 batadv_arp_get_type fndecl 3 5538 NULL nohasharray
146195 +enable_so___vmalloc_node_range_fndecl_5538 __vmalloc_node_range fndecl 1-3 5538 &enable_so_batadv_arp_get_type_fndecl_5538
146196 +enable_so_thoff_flow_keys_5548 thoff flow_keys 0 5548 NULL nohasharray
146197 +enable_so_mlx5_create_flow_table_fndecl_5548 mlx5_create_flow_table fndecl 4 5548 &enable_so_thoff_flow_keys_5548
146198 +enable_so___netdev_alloc_skb_fndecl_5552 __netdev_alloc_skb fndecl 2 5552 NULL
146199 +enable_so_xfs_btree_read_bufl_fndecl_5558 xfs_btree_read_bufl fndecl 3 5558 NULL
146200 +enable_so_slabinfo_write_fndecl_5563 slabinfo_write fndecl 3 5563 NULL
146201 +enable_so_nfs41_maxread_overhead_vardecl_5564 nfs41_maxread_overhead vardecl 0 5564 NULL
146202 +enable_so_iowarrior_write_fndecl_5567 iowarrior_write fndecl 3 5567 NULL
146203 +enable_so_ihl_xfrm_mode_skb_cb_5571 ihl xfrm_mode_skb_cb 0 5571 NULL
146204 +enable_so___dev_set_mtu_fndecl_5572 __dev_set_mtu fndecl 2 5572 NULL
146205 +enable_so_i2c_read_eeprom_fndecl_5583 i2c_read_eeprom fndecl 5 5583 NULL
146206 +enable_so_from_buffer_fndecl_5586 from_buffer fndecl 3 5586 NULL
146207 +enable_so_ext4_xattr_security_set_fndecl_5594 ext4_xattr_security_set fndecl 4 5594 NULL nohasharray
146208 +enable_so_bg_itable_unused_lo_ext4_group_desc_5594 bg_itable_unused_lo ext4_group_desc 0 5594 &enable_so_ext4_xattr_security_set_fndecl_5594
146209 +enable_so_memory_map_bottom_up_fndecl_5599 memory_map_bottom_up fndecl 1-2 5599 NULL nohasharray
146210 +enable_so_size_sched_attr_5599 size sched_attr 0 5599 &enable_so_memory_map_bottom_up_fndecl_5599
146211 +enable_so_pbl_base_rdma_info_5607 pbl_base rdma_info 0 5607 NULL
146212 +enable_so_odata_dma_usb_xpad_5619 odata_dma usb_xpad 0 5619 NULL
146213 +enable_so_shmem_fallocate_fndecl_5621 shmem_fallocate fndecl 3-4 5621 NULL
146214 +enable_so_xfs_iext_insert_fndecl_5624 xfs_iext_insert fndecl 3 5624 NULL
146215 +enable_so_ieee80211_if_fmt_rssi_threshold_fndecl_5627 ieee80211_if_fmt_rssi_threshold fndecl 3 5627 NULL
146216 +enable_so_c_irotor_ufs_cg_private_info_5628 c_irotor ufs_cg_private_info 0 5628 NULL
146217 +enable_so_max_sectors_ide_port_info_5629 max_sectors ide_port_info 0 5629 NULL
146218 +enable_so_wbcir_tx_fndecl_5632 wbcir_tx fndecl 3 5632 NULL
146219 +enable_so_screen_width_vardecl_hyperv_fb_c_5635 screen_width vardecl_hyperv_fb.c 0 5635 NULL
146220 +enable_so_num_counters_compat_ip6t_replace_5636 num_counters compat_ip6t_replace 0 5636 NULL
146221 +enable_so_udpv6_recvmsg_fndecl_5638 udpv6_recvmsg fndecl 3 5638 NULL
146222 +enable_so_snd_mask_max_fndecl_5643 snd_mask_max fndecl 0 5643 NULL
146223 +enable_so_ring_buffer_size_vardecl_ldusb_c_5645 ring_buffer_size vardecl_ldusb.c 0 5645 NULL
146224 +enable_so_tx_ring_size_altera_tse_private_5654 tx_ring_size altera_tse_private 0 5654 NULL
146225 +enable_so_isert_put_login_tx_fndecl_5660 isert_put_login_tx fndecl 3 5660 NULL nohasharray
146226 +enable_so_no_addr_gfs2_inum_host_5660 no_addr gfs2_inum_host 0 5660 &enable_so_isert_put_login_tx_fndecl_5660
146227 +enable_so___sw_hweight64_fndecl_5663 __sw_hweight64 fndecl 0 5663 NULL
146228 +enable_so_jd_jid_gfs2_jdesc_5669 jd_jid gfs2_jdesc 0 5669 NULL
146229 +enable_so_sgl_read_to_frags_fndecl_5672 sgl_read_to_frags fndecl 3-2 5672 NULL
146230 +enable_so_mtu_ppp_channel_5679 mtu ppp_channel 0 5679 NULL nohasharray
146231 +enable_so_blklen_regcache_rbtree_node_5679 blklen regcache_rbtree_node 0 5679 &enable_so_mtu_ppp_channel_5679 nohasharray
146232 +enable_so_ucma_query_fndecl_5679 ucma_query fndecl 4 5679 &enable_so_blklen_regcache_rbtree_node_5679
146233 +enable_so_ext4_es_alloc_extent_fndecl_5681 ext4_es_alloc_extent fndecl 2-3 5681 NULL
146234 +enable_so_s_blocks_count_ext2_super_block_5695 s_blocks_count ext2_super_block 0 5695 NULL
146235 +enable_so_write_bytes_to_xdr_buf_fndecl_5702 write_bytes_to_xdr_buf fndecl 4-2 5702 NULL
146236 +enable_so_cfg80211_rx_unprot_mlme_mgmt_fndecl_5707 cfg80211_rx_unprot_mlme_mgmt fndecl 3 5707 NULL nohasharray
146237 +enable_so_batadv_tt_save_orig_buffer_fndecl_5707 batadv_tt_save_orig_buffer fndecl 4 5707 &enable_so_cfg80211_rx_unprot_mlme_mgmt_fndecl_5707
146238 +enable_so_virtnet_change_mtu_fndecl_5709 virtnet_change_mtu fndecl 2 5709 NULL
146239 +enable_so_raw_send_hdrinc_fndecl_5711 raw_send_hdrinc fndecl 4 5711 NULL
146240 +enable_so_in_attr_len_ore_io_state_5713 in_attr_len ore_io_state 0 5713 NULL
146241 +enable_so_vt_hdr_vxfs_typed_5715 vt_hdr vxfs_typed 0 5715 NULL
146242 +enable_so_hfsplus_get_block_fndecl_5725 hfsplus_get_block fndecl 2 5725 NULL
146243 +enable_so_max_order_mlx4_buddy_5738 max_order mlx4_buddy 0 5738 NULL
146244 +enable_so_rt2x00lib_rxdone_read_signal_fndecl_5747 rt2x00lib_rxdone_read_signal fndecl 0 5747 NULL
146245 +enable_so_scrbuf_sisusb_usb_data_5749 scrbuf sisusb_usb_data 0 5749 NULL
146246 +enable_so_s_journal_inum_ext4_super_block_5759 s_journal_inum ext4_super_block 0 5759 NULL
146247 +enable_so_setup_extent_mapping_fndecl_5768 setup_extent_mapping fndecl 3-2-4 5768 NULL
146248 +enable_so_copy_align_dma_device_5783 copy_align dma_device 0 5783 NULL nohasharray
146249 +enable_so_lbs_host_sleep_write_fndecl_5783 lbs_host_sleep_write fndecl 3 5783 &enable_so_copy_align_dma_device_5783
146250 +enable_so_xfs_map_at_offset_fndecl_5785 xfs_map_at_offset fndecl 4 5785 NULL
146251 +enable_so_console_size_ramoops_platform_data_5786 console_size ramoops_platform_data 0 5786 NULL
146252 +enable_so_mc_handle_file_pte_fndecl_5787 mc_handle_file_pte fndecl 2 5787 NULL
146253 +enable_so_bq32k_read_fndecl_5789 bq32k_read fndecl 4 5789 NULL
146254 +enable_so_p9_check_zc_errors_fndecl_5806 p9_check_zc_errors fndecl 4 5806 NULL
146255 +enable_so_NumPhys__CONFIG_PAGE_SAS_EXPANDER_0_5809 NumPhys _CONFIG_PAGE_SAS_EXPANDER_0 0 5809 NULL
146256 +enable_so_firmware_data_write_fndecl_5811 firmware_data_write fndecl 6-5 5811 NULL nohasharray
146257 +enable_so_length_uwb_ie_hdr_5811 length uwb_ie_hdr 0 5811 &enable_so_firmware_data_write_fndecl_5811
146258 +enable_so_start_addr_gen_pool_chunk_5822 start_addr gen_pool_chunk 0 5822 NULL
146259 +enable_so_compr_flush_fndecl_5826 compr_flush fndecl 2 5826 NULL
146260 +enable_so_hid_hw_raw_request_fndecl_5827 hid_hw_raw_request fndecl 0 5827 NULL
146261 +enable_so_zlib_decompress_biovec_fndecl_5829 zlib_decompress_biovec fndecl 6 5829 NULL nohasharray
146262 +enable_so_bch_btree_keys_alloc_fndecl_5829 bch_btree_keys_alloc fndecl 2 5829 &enable_so_zlib_decompress_biovec_fndecl_5829
146263 +enable_so_synproxy_options_size_fndecl_5837 synproxy_options_size fndecl 0 5837 NULL
146264 +enable_so_interpret_user_input_fndecl_5842 interpret_user_input fndecl 2 5842 NULL
146265 +enable_so_transferred_vardecl_shuttle_usbat_c_5845 transferred vardecl_shuttle_usbat.c 0 5845 NULL
146266 +enable_so_sync_fill_pt_info_fndecl_5846 sync_fill_pt_info fndecl 0 5846 NULL
146267 +enable_so_get_n_events_by_type_fndecl_5850 get_n_events_by_type fndecl 0 5850 NULL
146268 +enable_so_SyS_sched_getaffinity_fndecl_5863 SyS_sched_getaffinity fndecl 2 5863 NULL
146269 +enable_so_len_hv_mpb_array_5864 len hv_mpb_array 0 5864 NULL
146270 +enable_so_um_size_bcm5974_config_5867 um_size bcm5974_config 0 5867 NULL
146271 +enable_so___record_new_ref_fndecl_5868 __record_new_ref fndecl 2 5868 NULL
146272 +enable_so_e1000_receive_skb_fndecl_5875 e1000_receive_skb fndecl 5 5875 NULL
146273 +enable_so_sq_db_page_mthca_create_qp_5878 sq_db_page mthca_create_qp 0 5878 NULL
146274 +enable_so_max_sg_count_hpt_iop_request_get_config_5890 max_sg_count hpt_iop_request_get_config 0 5890 NULL
146275 +enable_so_force_max_req_size_vardecl_vub300_c_5891 force_max_req_size vardecl_vub300.c 0 5891 NULL
146276 +enable_so_size_squashfs_dir_entry_5896 size squashfs_dir_entry 0 5896 NULL
146277 +enable_so___nla_reserve_fndecl_5901 __nla_reserve fndecl 3 5901 NULL
146278 +enable_so_ep_address_ath6kl_usb_pipe_5905 ep_address ath6kl_usb_pipe 0 5905 NULL nohasharray
146279 +enable_so_priv_size_dsa_switch_driver_5905 priv_size dsa_switch_driver 0 5905 &enable_so_ep_address_ath6kl_usb_pipe_5905
146280 +enable_so_alloc_rx_slot_fndecl_5908 alloc_rx_slot fndecl 0 5908 NULL
146281 +enable_so_sctp_tsnmap_num_gabs_fndecl_5915 sctp_tsnmap_num_gabs fndecl 0 5915 NULL
146282 +enable_so_ocfs2_reflink_xattr_buckets_fndecl_5931 ocfs2_reflink_xattr_buckets fndecl 7 5931 NULL
146283 +enable_so_layout_in_gaps_fndecl_5933 layout_in_gaps fndecl 2 5933 NULL
146284 +enable_so_ide_config_drive_speed_fndecl_5940 ide_config_drive_speed fndecl 2 5940 NULL
146285 +enable_so_gfn_to_pfn_atomic_fndecl_5942 gfn_to_pfn_atomic fndecl 2 5942 NULL
146286 +enable_so_buffer_blocks_osst_buffer_5944 buffer_blocks osst_buffer 0 5944 NULL
146287 +enable_so_get_inode_path_fndecl_5951 get_inode_path fndecl 2 5951 NULL
146288 +enable_so_height_tm6000_fh_5952 height tm6000_fh 0 5952 NULL
146289 +enable_so_tx_hdrlen_brcmf_sdio_5961 tx_hdrlen brcmf_sdio 0 5961 NULL
146290 +enable_so_viafb_second_size_vardecl_viafbdev_c_5965 viafb_second_size vardecl_viafbdev.c 0 5965 NULL
146291 +enable_so_allocmax_nilfs_sufile_info_5969 allocmax nilfs_sufile_info 0 5969 NULL
146292 +enable_so_rx_dma_phys_tegra_spi_data_5972 rx_dma_phys tegra_spi_data 0 5972 NULL
146293 +enable_so_schedule_internal_copy_fndecl_5973 schedule_internal_copy fndecl 3-4 5973 NULL
146294 +enable_so_hash_netport6_expire_fndecl_5974 hash_netport6_expire fndecl 4 5974 NULL
146295 +enable_so_f2fs_setxattr_fndecl_5975 f2fs_setxattr fndecl 5 5975 NULL
146296 +enable_so_nfsd4_encode_dirent_fndecl_5983 nfsd4_encode_dirent fndecl 3 5983 NULL
146297 +enable_so_create_gpadl_header_fndecl_5995 create_gpadl_header fndecl 2 5995 NULL
146298 +enable_so_revalidate_fndecl_6000 revalidate fndecl 2 6000 NULL
146299 +enable_so_clk_recalc_fndecl_6001 clk_recalc fndecl 0-2 6001 NULL
146300 +enable_so_drm_fb_helper_init_fndecl_6007 drm_fb_helper_init fndecl 4-3 6007 NULL nohasharray
146301 +enable_so_map_words_netvsc_device_6007 map_words netvsc_device 0 6007 &enable_so_drm_fb_helper_init_fndecl_6007
146302 +enable_so_orig_sg_segs_osst_buffer_6013 orig_sg_segs osst_buffer 0 6013 NULL
146303 +enable_so_brcmf_usbdev_qinit_fndecl_6017 brcmf_usbdev_qinit fndecl 2 6017 NULL
146304 +enable_so_wqe_cnt_mlx5_ib_wq_6024 wqe_cnt mlx5_ib_wq 0 6024 NULL
146305 +enable_so_icv_trunc_len_ah_data_6025 icv_trunc_len ah_data 0 6025 NULL nohasharray
146306 +enable_so_flags_rtl8180_rx_desc_6025 flags rtl8180_rx_desc 0 6025 &enable_so_icv_trunc_len_ah_data_6025
146307 +enable_so_xlog_bwrite_fndecl_6028 xlog_bwrite fndecl 2 6028 NULL
146308 +enable_so_split_and_remove_iova_fndecl_6030 split_and_remove_iova fndecl 4-3 6030 NULL nohasharray
146309 +enable_so_spi_rx_dma_mcp251x_priv_6030 spi_rx_dma mcp251x_priv 0 6030 &enable_so_split_and_remove_iova_fndecl_6030
146310 +enable_so_kvm_lapic_set_vapic_addr_fndecl_6040 kvm_lapic_set_vapic_addr fndecl 2 6040 NULL
146311 +enable_so_ceph_create_snap_context_fndecl_6041 ceph_create_snap_context fndecl 1 6041 NULL
146312 +enable_so_n_ssids_cfg80211_scan_request_6049 n_ssids cfg80211_scan_request 0 6049 NULL
146313 +enable_so_scif_rb_space_fndecl_6052 scif_rb_space fndecl 0 6052 NULL
146314 +enable_so_ext4_inode_table_fndecl_6054 ext4_inode_table fndecl 0 6054 NULL
146315 +enable_so_spu_base_info_size_ipath_user_info_6059 spu_base_info_size ipath_user_info 0 6059 NULL
146316 +enable_so_count_vardecl_speedtest_c_6069 count vardecl_speedtest.c 0 6069 NULL
146317 +enable_so_cifs_readv_from_socket_fndecl_6070 cifs_readv_from_socket fndecl 3 6070 NULL
146318 +enable_so_ioctx_alloc_fndecl_6081 ioctx_alloc fndecl 1 6081 NULL
146319 +enable_so_channel_num_ad9523_channel_spec_6095 channel_num ad9523_channel_spec 0 6095 NULL
146320 +enable_so___gfs2_xattr_set_fndecl_6098 __gfs2_xattr_set fndecl 4 6098 NULL
146321 +enable_so_blkdev_issue_discard_fndecl_6109 blkdev_issue_discard fndecl 3-2 6109 NULL
146322 +enable_so_read_extent_buffer_to_user_fndecl_6118 read_extent_buffer_to_user fndecl 4-3 6118 NULL
146323 +enable_so_hblank_panel_info_6122 hblank panel_info 0 6122 NULL
146324 +enable_so_pwc_get_fps_Kiara_fndecl_6127 pwc_get_fps_Kiara fndecl 0 6127 NULL
146325 +enable_so_buf_count_slgt_desc_6140 buf_count slgt_desc 0 6140 NULL
146326 +enable_so_fts_ieee80211_device_6153 fts ieee80211_device 0 6153 NULL
146327 +enable_so_name_len_f2fs_dir_entry_6154 name_len f2fs_dir_entry 0 6154 NULL
146328 +enable_so_gfn_to_pfn_memslot_fndecl_6158 gfn_to_pfn_memslot fndecl 2 6158 NULL
146329 +enable_so_buf_size_rte_log_le_6160 buf_size rte_log_le 0 6160 NULL nohasharray
146330 +enable_so_udf_read_tagged_fndecl_6160 udf_read_tagged fndecl 2 6160 &enable_so_buf_size_rte_log_le_6160
146331 +enable_so_kernel_write_fndecl_6162 kernel_write fndecl 3 6162 NULL
146332 +enable_so_rcl_nrefcalls_referring_call_list_6169 rcl_nrefcalls referring_call_list 0 6169 NULL
146333 +enable_so_dsp_tone_hw_message_fndecl_6173 dsp_tone_hw_message fndecl 3 6173 NULL
146334 +enable_so_vaddr_vfio_iommu_type1_dma_map_6175 vaddr vfio_iommu_type1_dma_map 0 6175 NULL
146335 +enable_so_m_agirotor_xfs_mount_6177 m_agirotor xfs_mount 0 6177 NULL
146336 +enable_so_fs_descs_count_ffs_data_6179 fs_descs_count ffs_data 0 6179 NULL
146337 +enable_so_venus_rename_fndecl_6200 venus_rename fndecl 4-5 6200 NULL
146338 +enable_so_digi_write_oob_command_fndecl_6207 digi_write_oob_command fndecl 3 6207 NULL nohasharray
146339 +enable_so_height_linux_logo_6207 height linux_logo 0 6207 &enable_so_digi_write_oob_command_fndecl_6207
146340 +enable_so_index_lola_stream_6210 index lola_stream 0 6210 NULL nohasharray
146341 +enable_so_dac_channels_pcm_oxygen_model_6210 dac_channels_pcm oxygen_model 0 6210 &enable_so_index_lola_stream_6210
146342 +enable_so_val_bits_regmap_config_6218 val_bits regmap_config 0 6218 NULL
146343 +enable_so_max_cmds_mthca_cmd_6222 max_cmds mthca_cmd 0 6222 NULL
146344 +enable_so_sc_ssid_len_wl18xx_event_mailbox_6223 sc_ssid_len wl18xx_event_mailbox 0 6223 NULL
146345 +enable_so_pcpu_alloc_area_fndecl_6230 pcpu_alloc_area fndecl 3 6230 NULL nohasharray
146346 +enable_so_exofs_read_lookup_dev_table_fndecl_6230 exofs_read_lookup_dev_table fndecl 3 6230 &enable_so_pcpu_alloc_area_fndecl_6230
146347 +enable_so_ag_xfs_fstrm_item_6243 ag xfs_fstrm_item 0 6243 NULL
146348 +enable_so_mode_offset_pktcdvd_device_6248 mode_offset pktcdvd_device 0 6248 NULL
146349 +enable_so_size_snd_info_buffer_6257 size snd_info_buffer 0 6257 NULL
146350 +enable_so_insert_extent_data_ref_fndecl_6261 insert_extent_data_ref fndecl 5-4 6261 NULL nohasharray
146351 +enable_so_brcmf_usb_attach_fndecl_6261 brcmf_usb_attach fndecl 2-3 6261 &enable_so_insert_extent_data_ref_fndecl_6261
146352 +enable_so_bNumInterfaces_usb_config_descriptor_6265 bNumInterfaces usb_config_descriptor 0 6265 NULL
146353 +enable_so_vb2_dma_sg_get_userptr_fndecl_6274 vb2_dma_sg_get_userptr fndecl 2-3 6274 NULL
146354 +enable_so_sb_nextnum_nilfs_segment_buffer_6275 sb_nextnum nilfs_segment_buffer 0 6275 NULL
146355 +enable_so_nrealwriters_stress_lock_torture_cxt_6279 nrealwriters_stress lock_torture_cxt 0 6279 NULL
146356 +enable_so_copy_out_args_fndecl_6283 copy_out_args fndecl 3 6283 NULL
146357 +enable_so_regmap_i2c_gather_write_fndecl_6284 regmap_i2c_gather_write fndecl 3-5 6284 NULL nohasharray
146358 +enable_so_data_len_op_arr_write_6284 data_len op_arr_write 0 6284 &enable_so_regmap_i2c_gather_write_fndecl_6284
146359 +enable_so_gnet_stats_copy_app_fndecl_6286 gnet_stats_copy_app fndecl 3 6286 NULL
146360 +enable_so__snd_pcm_lib_alloc_vmalloc_buffer_fndecl_6287 _snd_pcm_lib_alloc_vmalloc_buffer fndecl 2 6287 NULL
146361 +enable_so_hOver_plus_panel_info_6297 hOver_plus panel_info 0 6297 NULL
146362 +enable_so__iwl_dbgfs_set_nic_temperature_write_fndecl_6303 _iwl_dbgfs_set_nic_temperature_write fndecl 3 6303 NULL
146363 +enable_so_count_leafs_fndecl_6305 count_leafs fndecl 0 6305 NULL
146364 +enable_so_em28xx_audio_ep_packet_size_fndecl_6311 em28xx_audio_ep_packet_size fndecl 0 6311 NULL
146365 +enable_so_sectors_r1bio_6323 sectors r1bio 0 6323 NULL
146366 +enable_so_len_ethtool_gstrings_6325 len ethtool_gstrings 0 6325 NULL
146367 +enable_so_max_ustore_icp_qat_fw_loader_hal_handle_6327 max_ustore icp_qat_fw_loader_hal_handle 0 6327 NULL
146368 +enable_so_raid5_build_block_fndecl_6335 raid5_build_block fndecl 2 6335 NULL nohasharray
146369 +enable_so_asd_get_devctx_size_fndecl_6335 asd_get_devctx_size fndecl 0 6335 &enable_so_raid5_build_block_fndecl_6335
146370 +enable_so_ray_cs_essid_proc_write_fndecl_6336 ray_cs_essid_proc_write fndecl 3 6336 NULL
146371 +enable_so_virtio_cread32_fndecl_6338 virtio_cread32 fndecl 0 6338 NULL
146372 +enable_so_h_max_out_saa7146_standard_6339 h_max_out saa7146_standard 0 6339 NULL
146373 +enable_so_orinoco_set_key_fndecl_6341 orinoco_set_key fndecl 5-7 6341 NULL
146374 +enable_so_ieee80211_if_fmt_dot11MeshMaxPeerLinks_fndecl_6344 ieee80211_if_fmt_dot11MeshMaxPeerLinks fndecl 3 6344 NULL
146375 +enable_so_init_per_cpu_fndecl_6347 init_per_cpu fndecl 1 6347 NULL
146376 +enable_so_dm_stats_message_fndecl_6356 dm_stats_message fndecl 5 6356 NULL nohasharray
146377 +enable_so_logfs_iget_fndecl_6356 logfs_iget fndecl 2 6356 &enable_so_dm_stats_message_fndecl_6356
146378 +enable_so_lrf_body_len_nfsd4_layoutreturn_6359 lrf_body_len nfsd4_layoutreturn 0 6359 NULL
146379 +enable_so_pcpu_fit_in_area_fndecl_6362 pcpu_fit_in_area fndecl 5-2-3 6362 NULL nohasharray
146380 +enable_so_len_p54_rx_data_6362 len p54_rx_data 0 6362 &enable_so_pcpu_fit_in_area_fndecl_6362
146381 +enable_so_sisusb_send_bulk_msg_fndecl_6363 sisusb_send_bulk_msg fndecl 3-2 6363 NULL
146382 +enable_so_elants_i2c_execute_command_fndecl_6371 elants_i2c_execute_command fndecl 3-5 6371 NULL
146383 +enable_so_dev_pm_opp_get_opp_count_fndecl_6372 dev_pm_opp_get_opp_count fndecl 0 6372 NULL
146384 +enable_so_xfs_buf_associate_memory_fndecl_6376 xfs_buf_associate_memory fndecl 3 6376 NULL
146385 +enable_so_blkfactor_dio_submit_6380 blkfactor dio_submit 0 6380 NULL
146386 +enable_so_tail_hid_debug_list_6381 tail hid_debug_list 0 6381 NULL
146387 +enable_so_xfs_rtallocate_extent_near_fndecl_6383 xfs_rtallocate_extent_near fndecl 3-5-9 6383 NULL
146388 +enable_so_snd_info_entry_llseek_fndecl_6384 snd_info_entry_llseek fndecl 2 6384 NULL
146389 +enable_so_ieee80211_if_fmt_dot11MeshHWMPRootMode_fndecl_6385 ieee80211_if_fmt_dot11MeshHWMPRootMode fndecl 3 6385 NULL
146390 +enable_so_partition_sched_domains_fndecl_6386 partition_sched_domains fndecl 1 6386 NULL
146391 +enable_so_length_fusbh200_qtd_6388 length fusbh200_qtd 0 6388 NULL
146392 +enable_so_wps_probe_req_ie_len_mlme_priv_6393 wps_probe_req_ie_len mlme_priv 0 6393 NULL
146393 +enable_so_totalreserve_pages_vardecl_6395 totalreserve_pages vardecl 0 6395 NULL
146394 +enable_so_i_file_acl_ext2_inode_info_6396 i_file_acl ext2_inode_info 0 6396 NULL
146395 +enable_so_lpfc_debugfs_dif_err_write_fndecl_6403 lpfc_debugfs_dif_err_write fndecl 3 6403 NULL
146396 +enable_so_srpt_post_send_fndecl_6405 srpt_post_send fndecl 3 6405 NULL
146397 +enable_so_alloc_blocks_hfs_inode_info_6406 alloc_blocks hfs_inode_info 0 6406 NULL
146398 +enable_so_copy_from_iter_fndecl_6410 copy_from_iter fndecl 2 6410 NULL
146399 +enable_so_vlv_clock_fndecl_6421 vlv_clock fndecl 1 6421 NULL nohasharray
146400 +enable_so_max_pixelclock_v4l2_bt_timings_cap_6421 max_pixelclock v4l2_bt_timings_cap 0 6421 &enable_so_vlv_clock_fndecl_6421
146401 +enable_so_fwnet_change_mtu_fndecl_6424 fwnet_change_mtu fndecl 2 6424 NULL
146402 +enable_so_de_entrylen_reiserfs_dir_entry_6426 de_entrylen reiserfs_dir_entry 0 6426 NULL
146403 +enable_so_sys_brk_fndecl_6435 sys_brk fndecl 1 6435 NULL
146404 +enable_so_snd_hammerfall_get_buffer_fndecl_6450 snd_hammerfall_get_buffer fndecl 3 6450 NULL
146405 +enable_so_out_epnum_usb_gadget_6453 out_epnum usb_gadget 0 6453 NULL
146406 +enable_so_libcfs_ipif_enumerate_fndecl_6454 libcfs_ipif_enumerate fndecl 0 6454 NULL
146407 +enable_so_iov_iter_advance_fndecl_6457 iov_iter_advance fndecl 2 6457 NULL
146408 +enable_so_xtTruncate_fndecl_6468 xtTruncate fndecl 3 6468 NULL
146409 +enable_so_lookup_tree_block_ref_fndecl_6469 lookup_tree_block_ref fndecl 5-6-4 6469 NULL
146410 +enable_so_drop_unencrypted_libipw_device_6476 drop_unencrypted libipw_device 0 6476 NULL
146411 +enable_so_dx_fb_image_6483 dx fb_image 0 6483 NULL
146412 +enable_so_usb_device_lseek_fndecl_6485 usb_device_lseek fndecl 2 6485 NULL
146413 +enable_so_datasize_vub300_mmc_host_6490 datasize vub300_mmc_host 0 6490 NULL nohasharray
146414 +enable_so_probe_kernel_write_fndecl_6490 probe_kernel_write fndecl 3 6490 &enable_so_datasize_vub300_mmc_host_6490
146415 +enable_so_discard_root_dm_cache_metadata_6499 discard_root dm_cache_metadata 0 6499 NULL
146416 +enable_so_curr_dma_words_tegra_spi_data_6500 curr_dma_words tegra_spi_data 0 6500 NULL
146417 +enable_so_new_offset_mdp_superblock_1_6501 new_offset mdp_superblock_1 0 6501 NULL
146418 +enable_so_inc_remap_and_issue_cell_fndecl_6505 inc_remap_and_issue_cell fndecl 3 6505 NULL
146419 +enable_so_vfs_setpos_fndecl_6511 vfs_setpos fndecl 2 6511 NULL
146420 +enable_so_rq_nob_received_ptlrpc_request_6512 rq_nob_received ptlrpc_request 0 6512 NULL
146421 +enable_so_l2_fhdr_vlan_tag_l2_fhdr_6516 l2_fhdr_vlan_tag l2_fhdr 0 6516 NULL
146422 +enable_so_lbs_highrssi_write_fndecl_6520 lbs_highrssi_write fndecl 3 6520 NULL
146423 +enable_so_copy_page_from_iter_fndecl_6523 copy_page_from_iter fndecl 3 6523 NULL
146424 +enable_so_sector_start_dm_target_spec_6526 sector_start dm_target_spec 0 6526 NULL
146425 +enable_so_copy_from_user_fndecl_6532 copy_from_user fndecl 3-0 6532 NULL
146426 +enable_so_bytes_cifs_readdata_6533 bytes cifs_readdata 0 6533 NULL
146427 +enable_so_fe_logical_ext4_free_extent_6542 fe_logical ext4_free_extent 0 6542 NULL
146428 +enable_so_max_vfs_vardecl_igb_main_c_6547 max_vfs vardecl_igb_main.c 0 6547 NULL
146429 +enable_so_xlog_do_log_recovery_fndecl_6557 xlog_do_log_recovery fndecl 3 6557 NULL
146430 +enable_so_num_x_edt_ft5x06_ts_data_6566 num_x edt_ft5x06_ts_data 0 6566 NULL
146431 +enable_so_sddr09_read21_fndecl_6568 sddr09_read21 fndecl 4-3 6568 NULL nohasharray
146432 +enable_so_neigh_hash_alloc_fndecl_6568 neigh_hash_alloc fndecl 1 6568 &enable_so_sddr09_read21_fndecl_6568
146433 +enable_so_acpi_ut_create_package_object_fndecl_6569 acpi_ut_create_package_object fndecl 1 6569 NULL
146434 +enable_so_rts51x_write_mem_fndecl_6573 rts51x_write_mem fndecl 4 6573 NULL
146435 +enable_so_log_num_qps_mlx4_init_hca_param_6574 log_num_qps mlx4_init_hca_param 0 6574 NULL
146436 +enable_so_gcd_fndecl_6579 gcd fndecl 0-2-1 6579 NULL
146437 +enable_so_short_retry_atmel_private_6580 short_retry atmel_private 0 6580 NULL
146438 +enable_so_hash_netport4_expire_fndecl_6582 hash_netport4_expire fndecl 4 6582 NULL
146439 +enable_so_argc_tomoyo_condition_6587 argc tomoyo_condition 0 6587 NULL
146440 +enable_so_wil_write_file_rxon_fndecl_6590 wil_write_file_rxon fndecl 3 6590 NULL
146441 +enable_so_capture_frlog_rme96_6593 capture_frlog rme96 0 6593 NULL
146442 +enable_so_xfs_difree_fndecl_6598 xfs_difree fndecl 2 6598 NULL
146443 +enable_so_mmap_bytes_snd_pcm_oss_runtime_6600 mmap_bytes snd_pcm_oss_runtime 0 6600 NULL
146444 +enable_so_dma_map_page_fndecl_6607 dma_map_page fndecl 0 6607 NULL
146445 +enable_so_irda_sendmsg_ultra_fndecl_6612 irda_sendmsg_ultra fndecl 3 6612 NULL nohasharray
146446 +enable_so_osst_execute_fndecl_6612 osst_execute fndecl 6-7 6612 &enable_so_irda_sendmsg_ultra_fndecl_6612
146447 +enable_so_num_large_buffers_ql3_adapter_6615 num_large_buffers ql3_adapter 0 6615 NULL
146448 +enable_so_ocfs2_mark_extent_written_fndecl_6620 ocfs2_mark_extent_written fndecl 4-6 6620 NULL
146449 +enable_so_ath_recv_fndecl_6621 ath_recv fndecl 3 6621 NULL
146450 +enable_so_num_outputs_drm_vmw_update_layout_arg_6623 num_outputs drm_vmw_update_layout_arg 0 6623 NULL
146451 +enable_so_cifs_setsize_fndecl_6630 cifs_setsize fndecl 2 6630 NULL nohasharray
146452 +enable_so_copy_for_split_fndecl_6630 copy_for_split fndecl 7-8 6630 &enable_so_cifs_setsize_fndecl_6630
146453 +enable_so_sample_rate_echoaudio_6631 sample_rate echoaudio 0 6631 NULL
146454 +enable_so_metadataFileLoc_metadataPartitionMap_6634 metadataFileLoc metadataPartitionMap 0 6634 NULL nohasharray
146455 +enable_so_SYSC_migrate_pages_fndecl_6634 SYSC_migrate_pages fndecl 2 6634 &enable_so_metadataFileLoc_metadataPartitionMap_6634
146456 +enable_so_packet_setsockopt_fndecl_6637 packet_setsockopt fndecl 5 6637 NULL
146457 +enable_so_xmit_count_modem_info_6639 xmit_count modem_info 0 6639 NULL
146458 +enable_so_vactive_lo_detailed_pixel_timing_6644 vactive_lo detailed_pixel_timing 0 6644 NULL
146459 +enable_so_missvaddr_gru_tlb_fault_handle_6653 missvaddr gru_tlb_fault_handle 0 6653 NULL
146460 +enable_so_length_acpi_namestring_info_6654 length acpi_namestring_info 0 6654 NULL
146461 +enable_so_async_error_osd_request_6658 async_error osd_request 0 6658 NULL
146462 +enable_so_persistent_commit_merge_fndecl_6660 persistent_commit_merge fndecl 2 6660 NULL
146463 +enable_so_nilfs_segment_list_add_fndecl_6665 nilfs_segment_list_add fndecl 2 6665 NULL
146464 +enable_so_orinoco_add_extscan_result_fndecl_6668 orinoco_add_extscan_result fndecl 3 6668 NULL
146465 +enable_so_img_imem_size_fw_hdr_6675 img_imem_size fw_hdr 0 6675 NULL nohasharray
146466 +enable_so_pccard_store_cis_fndecl_6675 pccard_store_cis fndecl 6 6675 &enable_so_img_imem_size_fw_hdr_6675
146467 +enable_so_compatsize_xt_match_6677 compatsize xt_match 0 6677 NULL
146468 +enable_so_lpfc_debugfs_lseek_fndecl_6679 lpfc_debugfs_lseek fndecl 2 6679 NULL
146469 +enable_so_ac_2order_ext4_allocation_context_6690 ac_2order ext4_allocation_context 0 6690 NULL
146470 +enable_so_param_ssp_completion_resp_6691 param ssp_completion_resp 0 6691 NULL
146471 +enable_so_esize___kfifo_6692 esize __kfifo 0 6692 NULL
146472 +enable_so_nroots_rs_control_6706 nroots rs_control 0 6706 NULL nohasharray
146473 +enable_so_gsm_control_message_fndecl_6706 gsm_control_message fndecl 4 6706 &enable_so_nroots_rs_control_6706
146474 +enable_so_do_ipv6_setsockopt_fndecl_6708 do_ipv6_setsockopt fndecl 5-0 6708 NULL nohasharray
146475 +enable_so_length_p_header80_6708 length p_header80 0 6708 &enable_so_do_ipv6_setsockopt_fndecl_6708
146476 +enable_so_raw_recvmsg_fndecl_6710 raw_recvmsg fndecl 3 6710 NULL
146477 +enable_so_ssb_sdio_block_read_fndecl_6721 ssb_sdio_block_read fndecl 3 6721 NULL
146478 +enable_so_qdisc_class_hash_alloc_fndecl_6725 qdisc_class_hash_alloc fndecl 1 6725 NULL
146479 +enable_so_ieee_il_rate_info_6732 ieee il_rate_info 0 6732 NULL
146480 +enable_so_iova_mlx5_core_mr_6733 iova mlx5_core_mr 0 6733 NULL
146481 +enable_so_pagesize_sddr09_card_info_6735 pagesize sddr09_card_info 0 6735 NULL
146482 +enable_so_gnttab_alloc_grant_references_fndecl_6739 gnttab_alloc_grant_references fndecl 1 6739 NULL
146483 +enable_so_alloc_trace_uprobe_fndecl_6740 alloc_trace_uprobe fndecl 3 6740 NULL
146484 +enable_so__read_and_match_data_map_fndecl_6747 _read_and_match_data_map fndecl 2 6747 NULL
146485 +enable_so_end_address_dmar_rmrr_unit_6748 end_address dmar_rmrr_unit 0 6748 NULL
146486 +enable_so_rfcomm_sock_setsockopt_fndecl_6749 rfcomm_sock_setsockopt fndecl 5 6749 NULL
146487 +enable_so_alloc_size__osd_req_data_segment_6757 alloc_size _osd_req_data_segment 0 6757 NULL
146488 +enable_so_um_idi_write_fndecl_6758 um_idi_write fndecl 3 6758 NULL
146489 +enable_so_ocfs2_direct_IO_fndecl_6762 ocfs2_direct_IO fndecl 3 6762 NULL
146490 +enable_so_skylake_get_ddi_pll_fndecl_6764 skylake_get_ddi_pll fndecl 2 6764 NULL
146491 +enable_so_al_stripe_size_resize_parms_6766 al_stripe_size resize_parms 0 6766 NULL
146492 +enable_so_rx_pkt_ram_iadev_priv_6768 rx_pkt_ram iadev_priv 0 6768 NULL nohasharray
146493 +enable_so_gfs2_alloc_sort_buffer_fndecl_6768 gfs2_alloc_sort_buffer fndecl 1 6768 &enable_so_rx_pkt_ram_iadev_priv_6768
146494 +enable_so_sg_tablesize_Scsi_Host_6769 sg_tablesize Scsi_Host 0 6769 NULL
146495 +enable_so_alloc_ring_fndecl_6773 alloc_ring fndecl 4-2 6773 NULL
146496 +enable_so_dn_recvmsg_fndecl_6774 dn_recvmsg fndecl 3 6774 NULL
146497 +enable_so_ext4_readpages_fndecl_6776 ext4_readpages fndecl 4 6776 NULL
146498 +enable_so_asn_1_decode_fndecl_6777 asn_1_decode fndecl 0 6777 NULL nohasharray
146499 +enable_so_max_vals_input_dev_6777 max_vals input_dev 0 6777 &enable_so_asn_1_decode_fndecl_6777
146500 +enable_so_mmc_send_bus_test_fndecl_6782 mmc_send_bus_test fndecl 4 6782 NULL
146501 +enable_so_alloc_and_copy_string_fndecl_6786 alloc_and_copy_string fndecl 2 6786 NULL
146502 +enable_so_bio_integrity_advance_fndecl_6791 bio_integrity_advance fndecl 2 6791 NULL
146503 +enable_so_st21nfca_im_send_atr_req_fndecl_6792 st21nfca_im_send_atr_req fndecl 3 6792 NULL
146504 +enable_so_xfs_da_shrink_inode_fndecl_6796 xfs_da_shrink_inode fndecl 2 6796 NULL
146505 +enable_so_pop_tx_fndecl_6799 pop_tx fndecl 2 6799 NULL
146506 +enable_so_bankwidth_map_info_6800 bankwidth map_info 0 6800 NULL
146507 +enable_so_pfn_mlx4_uar_6801 pfn mlx4_uar 0 6801 NULL
146508 +enable_so_ctrl_dma_acm_6806 ctrl_dma acm 0 6806 NULL
146509 +enable_so_ip6ip6_err_fndecl_6807 ip6ip6_err fndecl 5 6807 NULL
146510 +enable_so_class_add_profile_fndecl_6808 class_add_profile fndecl 1-3-5 6808 NULL
146511 +enable_so_csio_mem_read_fndecl_6812 csio_mem_read fndecl 3 6812 NULL
146512 +enable_so_tx_pipe_at76_priv_6815 tx_pipe at76_priv 0 6815 NULL
146513 +enable_so_hs_rehash_bits_cfs_hash_6820 hs_rehash_bits cfs_hash 0 6820 NULL
146514 +enable_so_bfs_iget_fndecl_6821 bfs_iget fndecl 2 6821 NULL
146515 +enable_so_ivsize_ablkcipher_tfm_6824 ivsize ablkcipher_tfm 0 6824 NULL
146516 +enable_so_xlbd_reserve_minors_fndecl_6830 xlbd_reserve_minors fndecl 1-2 6830 NULL
146517 +enable_so_centre_vertically_fndecl_6833 centre_vertically fndecl 2 6833 NULL
146518 +enable_so_xfs_dialloc_ag_finobt_near_fndecl_6835 xfs_dialloc_ag_finobt_near fndecl 1 6835 NULL
146519 +enable_so_copy_page_to_iter_fndecl_6842 copy_page_to_iter fndecl 3 6842 NULL nohasharray
146520 +enable_so_reserved_top_mlx4_bitmap_6842 reserved_top mlx4_bitmap 0 6842 &enable_so_copy_page_to_iter_fndecl_6842
146521 +enable_so_lcd_proc_write_fndecl_6844 lcd_proc_write fndecl 3 6844 NULL
146522 +enable_so_insert_extent_fndecl_6846 insert_extent fndecl 2 6846 NULL
146523 +enable_so_intel_framebuffer_size_for_mode_fndecl_6849 intel_framebuffer_size_for_mode fndecl 2 6849 NULL
146524 +enable_so_hpfs_file_fsync_fndecl_6851 hpfs_file_fsync fndecl 2 6851 NULL
146525 +enable_so_kclist_add_private_fndecl_6853 kclist_add_private fndecl 1-2 6853 NULL
146526 +enable_so_bg_channels_libipw_geo_6854 bg_channels libipw_geo 0 6854 NULL
146527 +enable_so_ci_role_write_fndecl_6855 ci_role_write fndecl 3 6855 NULL
146528 +enable_so_hdlc_empty_fifo_fndecl_6862 hdlc_empty_fifo fndecl 2 6862 NULL
146529 +enable_so_buffer_kbs_vardecl_st_c_6866 buffer_kbs vardecl_st.c 0 6866 NULL
146530 +enable_so_size_vb2_fileio_buf_6875 size vb2_fileio_buf 0 6875 NULL nohasharray
146531 +enable_so_offset_amp_assoc_6875 offset amp_assoc 0 6875 &enable_so_size_vb2_fileio_buf_6875
146532 +enable_so_xres_fb_videomode_6878 xres fb_videomode 0 6878 NULL
146533 +enable_so_rxbufferhandle_kaweth_device_6883 rxbufferhandle kaweth_device 0 6883 NULL
146534 +enable_so___kfifo_in_r_fndecl_6892 __kfifo_in_r fndecl 4-3 6892 NULL nohasharray
146535 +enable_so_jffs2_zlib_decompress_fndecl_6892 jffs2_zlib_decompress fndecl 3-4 6892 &enable_so___kfifo_in_r_fndecl_6892
146536 +enable_so_index_mlx5_uar_6896 index mlx5_uar 0 6896 NULL nohasharray
146537 +enable_so_hpfs_bplus_lookup_fndecl_6896 hpfs_bplus_lookup fndecl 4 6896 &enable_so_index_mlx5_uar_6896
146538 +enable_so_jfs_quota_write_fndecl_6903 jfs_quota_write fndecl 5 6903 NULL
146539 +enable_so_write_inflate_state_6907 write inflate_state 0 6907 NULL
146540 +enable_so_get_region_size_dm_dirty_log_type_6910 get_region_size dm_dirty_log_type 0 6910 NULL
146541 +enable_so_table_size_radeon_gart_6911 table_size radeon_gart 0 6911 NULL
146542 +enable_so_maxbufsize__isdn_driver_6917 maxbufsize _isdn_driver 0 6917 NULL
146543 +enable_so_drm_gtf_mode_complex_fndecl_6918 drm_gtf_mode_complex fndecl 3-2-4-7-9-10-8 6918 NULL
146544 +enable_so_jfs_nfs_get_inode_fndecl_6925 jfs_nfs_get_inode fndecl 2 6925 NULL
146545 +enable_so_buflen_packet_command_6926 buflen packet_command 0 6926 NULL
146546 +enable_so_size_log2_t3_wq_6928 size_log2 t3_wq 0 6928 NULL
146547 +enable_so_multi_src_desc_6933 multi src_desc 0 6933 NULL
146548 +enable_so_nvram_pagesize_tg3_6938 nvram_pagesize tg3 0 6938 NULL
146549 +enable_so_gaw_dmar_domain_6940 gaw dmar_domain 0 6940 NULL
146550 +enable_so_nbytes_ide_cmd_6945 nbytes ide_cmd 0 6945 NULL
146551 +enable_so_enic_rxcopybreak_fndecl_6960 enic_rxcopybreak fndecl 4 6960 NULL
146552 +enable_so_af9013_write_ofsm_regs_fndecl_6965 af9013_write_ofsm_regs fndecl 4 6965 NULL
146553 +enable_so_ufs_free_blocks_fndecl_6968 ufs_free_blocks fndecl 3-2 6968 NULL
146554 +enable_so_odm_group_width_pnfs_osd_data_map_6977 odm_group_width pnfs_osd_data_map 0 6977 NULL
146555 +enable_so_vactive___fb_timings_6978 vactive __fb_timings 0 6978 NULL
146556 +enable_so_async_set_registers_fndecl_6987 async_set_registers fndecl 3 6987 NULL nohasharray
146557 +enable_so_inode_killpriv_security_operations_6987 inode_killpriv security_operations 0 6987 &enable_so_async_set_registers_fndecl_6987
146558 +enable_so_mappable_base_i915_gtt_6993 mappable_base i915_gtt 0 6993 NULL
146559 +enable_so_smk_write_cipso_fndecl_6998 smk_write_cipso fndecl 3 6998 NULL
146560 +enable_so_gnttab_max_grant_frames_fndecl_7002 gnttab_max_grant_frames fndecl 0 7002 NULL
146561 +enable_so_p_start_nilfs_period_7008 p_start nilfs_period 0 7008 NULL
146562 +enable_so_s_groups_count_ext4_sb_info_7012 s_groups_count ext4_sb_info 0 7012 NULL
146563 +enable_so_ocfs2_cache_cluster_dealloc_fndecl_7016 ocfs2_cache_cluster_dealloc fndecl 3-2 7016 NULL
146564 +enable_so_attr_bytes_osdv2_attributes_list_element_7018 attr_bytes osdv2_attributes_list_element 0 7018 NULL
146565 +enable_so_start_address_mxt_object_7033 start_address mxt_object 0 7033 NULL
146566 +enable_so_fat_short2lower_uni_fndecl_7036 fat_short2lower_uni fndecl 0 7036 NULL
146567 +enable_so_tps65912_i2c_write_fndecl_7037 tps65912_i2c_write fndecl 3 7037 NULL
146568 +enable_so_raw_write_fndecl_7039 raw_write fndecl 3 7039 NULL
146569 +enable_so_fpregs_get_fndecl_7041 fpregs_get fndecl 4 7041 NULL
146570 +enable_so_kvm_read_guest_page_fndecl_7049 kvm_read_guest_page fndecl 2-5 7049 NULL
146571 +enable_so_iforce_send_packet_fndecl_7050 iforce_send_packet fndecl 2 7050 NULL
146572 +enable_so_SYSC_pselect6_fndecl_7055 SYSC_pselect6 fndecl 1 7055 NULL
146573 +enable_so_packet_size_usbatm_channel_7056 packet_size usbatm_channel 0 7056 NULL
146574 +enable_so___btrfs_drop_extents_fndecl_7058 __btrfs_drop_extents fndecl 6-5 7058 NULL
146575 +enable_so_cryptd_alloc_instance_fndecl_7059 cryptd_alloc_instance fndecl 2-3 7059 NULL
146576 +enable_so_dccph_doff_dccp_hdr_7060 dccph_doff dccp_hdr 0 7060 NULL nohasharray
146577 +enable_so_ddebug_proc_write_fndecl_7060 ddebug_proc_write fndecl 3 7060 &enable_so_dccph_doff_dccp_hdr_7060
146578 +enable_so_buffer_size_omapfb_memory_read_7061 buffer_size omapfb_memory_read 0 7061 NULL
146579 +enable_so_i_dir_start_lookup_ext4_inode_info_7062 i_dir_start_lookup ext4_inode_info 0 7062 NULL
146580 +enable_so_zisofs_fill_pages_fndecl_7066 zisofs_fill_pages fndecl 3 7066 NULL
146581 +enable_so_update_cache_item_fndecl_7085 update_cache_item fndecl 5 7085 NULL
146582 +enable_so_total_i915_address_space_7088 total i915_address_space 0 7088 NULL
146583 +enable_so_pref_height_vmw_display_unit_7089 pref_height vmw_display_unit 0 7089 NULL nohasharray
146584 +enable_so_tot_nodes_mic_bootparam_7089 tot_nodes mic_bootparam 0 7089 &enable_so_pref_height_vmw_display_unit_7089
146585 +enable_so_rx_pending_sky2_port_7090 rx_pending sky2_port 0 7090 NULL
146586 +enable_so_get_vm_area_fndecl_7091 get_vm_area fndecl 1 7091 NULL
146587 +enable_so_SYSC_semtimedop_fndecl_7096 SYSC_semtimedop fndecl 3 7096 NULL
146588 +enable_so_rtl8139_change_mtu_fndecl_7099 rtl8139_change_mtu fndecl 2 7099 NULL
146589 +enable_so_mpi_alloc_fndecl_7101 mpi_alloc fndecl 1 7101 NULL
146590 +enable_so_paging32_gpte_to_gfn_lvl_fndecl_7104 paging32_gpte_to_gfn_lvl fndecl 0-2-1 7104 NULL nohasharray
146591 +enable_so_scan_ies_len_ieee80211_local_7104 scan_ies_len ieee80211_local 0 7104 &enable_so_paging32_gpte_to_gfn_lvl_fndecl_7104
146592 +enable_so_nfsd4_encode_readv_fndecl_7110 nfsd4_encode_readv fndecl 4 7110 NULL
146593 +enable_so_udf_table_free_blocks_fndecl_7114 udf_table_free_blocks fndecl 4-5 7114 NULL
146594 +enable_so_wil_tid_ampdu_rx_alloc_fndecl_7119 wil_tid_ampdu_rx_alloc fndecl 2 7119 NULL
146595 +enable_so_ftrace_size_ramoops_platform_data_7124 ftrace_size ramoops_platform_data 0 7124 NULL
146596 +enable_so_report_size_hid_global_7127 report_size hid_global 0 7127 NULL
146597 +enable_so_svc_getnl_fndecl_7131 svc_getnl fndecl 0 7131 NULL
146598 +enable_so_nstids_tid_info_7139 nstids tid_info 0 7139 NULL
146599 +enable_so_enable_ints_write_fndecl_7145 enable_ints_write fndecl 3 7145 NULL
146600 +enable_so_vc_origin_vc_data_7148 vc_origin vc_data 0 7148 NULL
146601 +enable_so_privsize_nft_set_ops_7151 privsize nft_set_ops 0 7151 NULL
146602 +enable_so_newblocks_xfs_growfs_rt_7154 newblocks xfs_growfs_rt 0 7154 NULL
146603 +enable_so_alloced_shmem_inode_info_7155 alloced shmem_inode_info 0 7155 NULL
146604 +enable_so_num_packets_st5481_in_7161 num_packets st5481_in 0 7161 NULL
146605 +enable_so_get_rxfh_key_size_ethtool_ops_7178 get_rxfh_key_size ethtool_ops 0 7178 NULL
146606 +enable_so_ax88179_write_cmd_async_fndecl_7180 ax88179_write_cmd_async fndecl 5 7180 NULL
146607 +enable_so_vdisplay_moderec_7183 vdisplay moderec 0 7183 NULL nohasharray
146608 +enable_so_mfd_add_devices_fndecl_7183 mfd_add_devices fndecl 4 7183 &enable_so_vdisplay_moderec_7183
146609 +enable_so___shmem_file_setup_fndecl_7192 __shmem_file_setup fndecl 2 7192 NULL nohasharray
146610 +enable_so_vc_rows_vc_data_7192 vc_rows vc_data 0 7192 &enable_so___shmem_file_setup_fndecl_7192 nohasharray
146611 +enable_so_btrfs_get_token_32_fndecl_7192 btrfs_get_token_32 fndecl 0 7192 &enable_so_vc_rows_vc_data_7192 nohasharray
146612 +enable_so_ic_size_xlog_in_core_7192 ic_size xlog_in_core 0 7192 &enable_so_btrfs_get_token_32_fndecl_7192
146613 +enable_so_z_incomp_fndecl_7201 z_incomp fndecl 3 7201 NULL
146614 +enable_so_length_pnfs_layout_range_7207 length pnfs_layout_range 0 7207 NULL
146615 +enable_so___wa_populate_dto_urb_fndecl_7208 __wa_populate_dto_urb fndecl 4-3 7208 NULL
146616 +enable_so_size_srp_iu_7210 size srp_iu 0 7210 NULL
146617 +enable_so_rivafb_do_maximize_fndecl_7212 rivafb_do_maximize fndecl 3-4 7212 NULL
146618 +enable_so__iwl_dbgfs_bt_force_ant_write_fndecl_7214 _iwl_dbgfs_bt_force_ant_write fndecl 3 7214 NULL
146619 +enable_so_max_id_Scsi_Host_7217 max_id Scsi_Host 0 7217 NULL
146620 +enable_so_iwl_mvm_fw_dbg_collect_fndecl_7228 iwl_mvm_fw_dbg_collect fndecl 4 7228 NULL
146621 +enable_so_s_mb_last_group_ext4_sb_info_7240 s_mb_last_group ext4_sb_info 0 7240 NULL
146622 +enable_so_xfs_attr3_leaf_create_fndecl_7243 xfs_attr3_leaf_create fndecl 2 7243 NULL
146623 +enable_so_len_session_key_7253 len session_key 0 7253 NULL
146624 +enable_so_ddcb_max_ddcb_queue_7260 ddcb_max ddcb_queue 0 7260 NULL
146625 +enable_so_xlog_bread_fndecl_7272 xlog_bread fndecl 2 7272 NULL
146626 +enable_so_num_asq_entries_i40e_adminq_info_7278 num_asq_entries i40e_adminq_info 0 7278 NULL
146627 +enable_so_hsync_psb_pipe_7286 hsync psb_pipe 0 7286 NULL
146628 +enable_so_trailer_len_dst_entry_7294 trailer_len dst_entry 0 7294 NULL
146629 +enable_so___copy_to_user_swizzled_fndecl_7295 __copy_to_user_swizzled fndecl 3-4 7295 NULL
146630 +enable_so_i2o_parm_issue_fndecl_7301 i2o_parm_issue fndecl 0 7301 NULL
146631 +enable_so_height_vpe_q_data_7303 height vpe_q_data 0 7303 NULL
146632 +enable_so_value_apei_exec_context_7318 value apei_exec_context 0 7318 NULL
146633 +enable_so_check_index_in_prev_nodes_fndecl_7324 check_index_in_prev_nodes fndecl 2 7324 NULL
146634 +enable_so_wsize_inflate_state_7329 wsize inflate_state 0 7329 NULL
146635 +enable_so_control_cnt_pvr2_hdw_7335 control_cnt pvr2_hdw 0 7335 NULL
146636 +enable_so_drm_malloc_ab_fndecl_7340 drm_malloc_ab fndecl 1-2 7340 NULL
146637 +enable_so_pvr2_i2c_read_fndecl_7344 pvr2_i2c_read fndecl 4-6 7344 NULL
146638 +enable_so_btusb_recv_intr_fndecl_7351 btusb_recv_intr fndecl 3 7351 NULL nohasharray
146639 +enable_so_get_server_iovec_fndecl_7351 get_server_iovec fndecl 2 7351 &enable_so_btusb_recv_intr_fndecl_7351
146640 +enable_so_mesh_fwd_csa_frame_fndecl_7353 mesh_fwd_csa_frame fndecl 3 7353 NULL
146641 +enable_so_mcp251x_spi_trans_fndecl_7356 mcp251x_spi_trans fndecl 2 7356 NULL
146642 +enable_so_total_blkcipher_walk_7358 total blkcipher_walk 0 7358 NULL
146643 +enable_so___netdev_alloc_frag_fndecl_7360 __netdev_alloc_frag fndecl 1 7360 NULL
146644 +enable_so_sys_fadvise64_fndecl_7365 sys_fadvise64 fndecl 2 7365 NULL
146645 +enable_so_btree_lookup_raw_fndecl_7367 btree_lookup_raw fndecl 2 7367 NULL
146646 +enable_so_hfsplus_min_io_size_fndecl_7368 hfsplus_min_io_size fndecl 0 7368 NULL
146647 +enable_so_check_left_item_operations_7369 check_left item_operations 0 7369 NULL
146648 +enable_so_e_value_size_ext2_xattr_entry_7373 e_value_size ext2_xattr_entry 0 7373 NULL
146649 +enable_so_bufsize_pstore_info_7375 bufsize pstore_info 0 7375 NULL
146650 +enable_so_shmem_swapin_fndecl_7376 shmem_swapin fndecl 4 7376 NULL nohasharray
146651 +enable_so_scsi_mode_sense_fndecl_7376 scsi_mode_sense fndecl 5 7376 &enable_so_shmem_swapin_fndecl_7376
146652 +enable_so_c67x00_create_td_fndecl_7377 c67x00_create_td fndecl 4 7377 NULL
146653 +enable_so_amd8111e_change_mtu_fndecl_7389 amd8111e_change_mtu fndecl 2 7389 NULL
146654 +enable_so_packetsize__rbu_data_7390 packetsize _rbu_data 0 7390 NULL
146655 +enable_so_fw_sent_bcm203x_data_7405 fw_sent bcm203x_data 0 7405 NULL
146656 +enable_so___ip_append_data_fndecl_7411 __ip_append_data fndecl 9-8 7411 NULL
146657 +enable_so_htotal_psb_pipe_7415 htotal psb_pipe 0 7415 NULL nohasharray
146658 +enable_so_block_ack_param_set_host_cmd_ds_11n_addba_req_7415 block_ack_param_set host_cmd_ds_11n_addba_req 0 7415 &enable_so_htotal_psb_pipe_7415
146659 +enable_so_st_write_fndecl_7417 st_write fndecl 3 7417 NULL
146660 +enable_so_xfs_iget_fndecl_7419 xfs_iget fndecl 3 7419 NULL nohasharray
146661 +enable_so_alloc_idx_lebs_fndecl_7419 alloc_idx_lebs fndecl 2 7419 &enable_so_xfs_iget_fndecl_7419
146662 +enable_so___kfifo_peek_n_fndecl_7422 __kfifo_peek_n fndecl 0 7422 NULL
146663 +enable_so_residue_dma_tx_state_7432 residue dma_tx_state 0 7432 NULL
146664 +enable_so_xfs_file_fsync_fndecl_7433 xfs_file_fsync fndecl 2 7433 NULL
146665 +enable_so_data_len_sk_buff_7447 data_len sk_buff 0 7447 NULL
146666 +enable_so_nilfs_palloc_get_entry_block_fndecl_7449 nilfs_palloc_get_entry_block fndecl 0 7449 NULL
146667 +enable_so_shdma_prep_memcpy_fndecl_7451 shdma_prep_memcpy fndecl 4-3 7451 NULL nohasharray
146668 +enable_so_stat_st_vardecl_drv_c_7451 stat_st vardecl_drv.c 0 7451 &enable_so_shdma_prep_memcpy_fndecl_7451
146669 +enable_so___bio_add_page_fndecl_7456 __bio_add_page fndecl 5-0-4 7456 NULL
146670 +enable_so_size_vmci_handle_arr_7457 size vmci_handle_arr 0 7457 NULL
146671 +enable_so_hpfs_alloc_sector_fndecl_7462 hpfs_alloc_sector fndecl 4-3-2 7462 NULL
146672 +enable_so_cmdline_store_fndecl_7465 cmdline_store fndecl 4 7465 NULL nohasharray
146673 +enable_so_num_present_cpu_lpfc_sli4_hba_7465 num_present_cpu lpfc_sli4_hba 0 7465 &enable_so_cmdline_store_fndecl_7465
146674 +enable_so_plcp_mimo2_iwl_rate_info_7466 plcp_mimo2 iwl_rate_info 0 7466 NULL
146675 +enable_so_buffer_dma_ehci_qtd_7468 buffer_dma ehci_qtd 0 7468 NULL
146676 +enable_so_del_qgroup_item_fndecl_7473 del_qgroup_item fndecl 3 7473 NULL
146677 +enable_so_status_c67x00_urb_priv_7480 status c67x00_urb_priv 0 7480 NULL
146678 +enable_so_rxrpc_server_keyring_fndecl_7484 rxrpc_server_keyring fndecl 3 7484 NULL
146679 +enable_so_req_capsule_get_size_fndecl_7488 req_capsule_get_size fndecl 0 7488 NULL
146680 +enable_so_s_log_block_size_ext2_super_block_7490 s_log_block_size ext2_super_block 0 7490 NULL
146681 +enable_so_can_nice_fndecl_7498 can_nice fndecl 2 7498 NULL
146682 +enable_so_ri_lsegs_start_nilfs_recovery_info_7501 ri_lsegs_start nilfs_recovery_info 0 7501 NULL
146683 +enable_so_calculate_inocache_hashsize_fndecl_7506 calculate_inocache_hashsize fndecl 1 7506 NULL
146684 +enable_so_btrfs_truncate_inode_items_fndecl_7511 btrfs_truncate_inode_items fndecl 4 7511 NULL
146685 +enable_so_netlink_change_ngroups_fndecl_7514 netlink_change_ngroups fndecl 2 7514 NULL
146686 +enable_so_xfs_iomap_eof_want_preallocate_fndecl_7527 xfs_iomap_eof_want_preallocate fndecl 4-3 7527 NULL
146687 +enable_so_delta_mmap_mm_struct_7536 delta_mmap mm_struct 0 7536 NULL
146688 +enable_so_length_ndis_80211_ssid_7537 length ndis_80211_ssid 0 7537 NULL
146689 +enable_so_size_hpi_response_header_7541 size hpi_response_header 0 7541 NULL
146690 +enable_so_add_qgroup_item_fndecl_7551 add_qgroup_item fndecl 3 7551 NULL
146691 +enable_so_blkcipher_done_slow_fndecl_7555 blkcipher_done_slow fndecl 0-2 7555 NULL
146692 +enable_so_hd_nirqs_hpet_data_7558 hd_nirqs hpet_data 0 7558 NULL
146693 +enable_so_raid10_resize_fndecl_7562 raid10_resize fndecl 2 7562 NULL
146694 +enable_so_b43_dma_set_mask_fndecl_7567 b43_dma_set_mask fndecl 2 7567 NULL
146695 +enable_so_duplicateIXtree_fndecl_7568 duplicateIXtree fndecl 3-2 7568 NULL
146696 +enable_so_wqe_fcoe_cqe_7572 wqe fcoe_cqe 0 7572 NULL
146697 +enable_so_mISDN_sock_sendmsg_fndecl_7584 mISDN_sock_sendmsg fndecl 3 7584 NULL nohasharray
146698 +enable_so_tcp_manip_pkt_fndecl_7584 tcp_manip_pkt fndecl 4 7584 &enable_so_mISDN_sock_sendmsg_fndecl_7584
146699 +enable_so_tuple_size_blk_integrity_7585 tuple_size blk_integrity 0 7585 NULL
146700 +enable_so_length_sctp_chunkhdr_7587 length sctp_chunkhdr 0 7587 NULL
146701 +enable_so_scan_index_iio_chan_spec_7597 scan_index iio_chan_spec 0 7597 NULL
146702 +enable_so_pathmtu_sctp_transport_7603 pathmtu sctp_transport 0 7603 NULL
146703 +enable_so_fuse_listxattr_fndecl_7605 fuse_listxattr fndecl 3 7605 NULL
146704 +enable_so_pzl_urb_dequeue_fndecl_7607 pzl_urb_dequeue fndecl 3 7607 NULL
146705 +enable_so_rcvidx_w6692B_hw_7613 rcvidx w6692B_hw 0 7613 NULL
146706 +enable_so_id_hid_report_7618 id hid_report 0 7618 NULL
146707 +enable_so_drm_fb_helper_fill_var_fndecl_7619 drm_fb_helper_fill_var fndecl 3-4 7619 NULL
146708 +enable_so_physical_scrub_page_7621 physical scrub_page 0 7621 NULL
146709 +enable_so_block_udf_vds_record_7623 block udf_vds_record 0 7623 NULL
146710 +enable_so_btrfs_insert_orphan_item_fndecl_7625 btrfs_insert_orphan_item fndecl 3 7625 NULL
146711 +enable_so_ocfs2_free_suballoc_bits_fndecl_7627 ocfs2_free_suballoc_bits fndecl 5 7627 NULL nohasharray
146712 +enable_so_dss_feat_get_num_mgrs_fndecl_7627 dss_feat_get_num_mgrs fndecl 0 7627 &enable_so_ocfs2_free_suballoc_bits_fndecl_7627
146713 +enable_so_virt_to_scatterlist_fndecl_7637 virt_to_scatterlist fndecl 2 7637 NULL
146714 +enable_so_num_sge_ib_uverbs_recv_wr_7647 num_sge ib_uverbs_recv_wr 0 7647 NULL
146715 +enable_so_rd_write_section_fndecl_7649 rd_write_section fndecl 4 7649 NULL
146716 +enable_so___wait_on_bit_lock_fndecl_7653 __wait_on_bit_lock fndecl 0 7653 NULL
146717 +enable_so_xpt_remotelen_svc_xprt_7655 xpt_remotelen svc_xprt 0 7655 NULL
146718 +enable_so_s_fsize_ufs_sb_private_info_7659 s_fsize ufs_sb_private_info 0 7659 NULL nohasharray
146719 +enable_so_maxwritelen_proc_data_7659 maxwritelen proc_data 0 7659 &enable_so_s_fsize_ufs_sb_private_info_7659
146720 +enable_so_compat_SyS_migrate_pages_fndecl_7673 compat_SyS_migrate_pages fndecl 2 7673 NULL
146721 +enable_so_nfsd_max_blksize_vardecl_7678 nfsd_max_blksize vardecl 0 7678 NULL
146722 +enable_so_shmem_read_mapping_page_gfp_fndecl_7681 shmem_read_mapping_page_gfp fndecl 2 7681 NULL
146723 +enable_so_deh_location_reiserfs_de_head_7682 deh_location reiserfs_de_head 0 7682 NULL nohasharray
146724 +enable_so_UniStrnlen_fndecl_7682 UniStrnlen fndecl 0 7682 &enable_so_deh_location_reiserfs_de_head_7682
146725 +enable_so_pm860x_page_bulk_read_fndecl_7685 pm860x_page_bulk_read fndecl 3 7685 NULL
146726 +enable_so_cfg80211_sme_get_conn_ies_fndecl_7687 cfg80211_sme_get_conn_ies fndecl 3 7687 NULL
146727 +enable_so_di_extsize_xfs_icdinode_7693 di_extsize xfs_icdinode 0 7693 NULL
146728 +enable_so_record_length_cper_record_header_7697 record_length cper_record_header 0 7697 NULL
146729 +enable_so_mxt_upload_cfg_mem_fndecl_7702 mxt_upload_cfg_mem fndecl 4 7702 NULL
146730 +enable_so_hdr_len_virtio_net_hdr_7704 hdr_len virtio_net_hdr 0 7704 NULL nohasharray
146731 +enable_so_rf_cpos_ocfs2_refcount_block_7704 rf_cpos ocfs2_refcount_block 0 7704 &enable_so_hdr_len_virtio_net_hdr_7704 nohasharray
146732 +enable_so_befs_nls2utf_fndecl_7704 befs_nls2utf fndecl 3 7704 &enable_so_rf_cpos_ocfs2_refcount_block_7704
146733 +enable_so_i915_gem_get_gtt_size_fndecl_7714 i915_gem_get_gtt_size fndecl 0-2 7714 NULL nohasharray
146734 +enable_so_hash_shift_neigh_hash_table_7714 hash_shift neigh_hash_table 0 7714 &enable_so_i915_gem_get_gtt_size_fndecl_7714
146735 +enable_so_access_remote_vm_fndecl_7734 access_remote_vm fndecl 4-0-2 7734 NULL nohasharray
146736 +enable_so_iwl_dbgfs_txfifo_flush_write_fndecl_7734 iwl_dbgfs_txfifo_flush_write fndecl 3 7734 &enable_so_access_remote_vm_fndecl_7734
146737 +enable_so_vxres_aty128_crtc_7753 vxres aty128_crtc 0 7753 NULL
146738 +enable_so_ide_get_best_pio_mode_fndecl_7756 ide_get_best_pio_mode fndecl 0-2-3 7756 NULL nohasharray
146739 +enable_so_max_eq_lpfc_max_cfg_param_7756 max_eq lpfc_max_cfg_param 0 7756 &enable_so_ide_get_best_pio_mode_fndecl_7756 nohasharray
146740 +enable_so_mlx4_enable_sriov_fndecl_7756 mlx4_enable_sriov fndecl 3-4 7756 &enable_so_max_eq_lpfc_max_cfg_param_7756
146741 +enable_so_xfs_dir2_free_read_fndecl_7759 xfs_dir2_free_read fndecl 3 7759 NULL
146742 +enable_so_ext4_fname_crypto_alloc_buffer_fndecl_7767 ext4_fname_crypto_alloc_buffer fndecl 2 7767 NULL
146743 +enable_so_ocfs2_get_suballoc_slot_bit_fndecl_7773 ocfs2_get_suballoc_slot_bit fndecl 2 7773 NULL
146744 +enable_so_t_data_nents_orig_se_cmd_7775 t_data_nents_orig se_cmd 0 7775 NULL
146745 +enable_so_split_mem_range_fndecl_7776 split_mem_range fndecl 4 7776 NULL
146746 +enable_so_alloc_ep_fndecl_7782 alloc_ep fndecl 1 7782 NULL
146747 +enable_so_qxl_framebuffer_surface_dirty_fndecl_7791 qxl_framebuffer_surface_dirty fndecl 6 7791 NULL nohasharray
146748 +enable_so_pg_read_fndecl_7791 pg_read fndecl 3 7791 &enable_so_qxl_framebuffer_surface_dirty_fndecl_7791
146749 +enable_so_inode_getblk_fndecl_7794 inode_getblk fndecl 2-0 7794 NULL
146750 +enable_so___clk_speculate_rates_fndecl_7795 __clk_speculate_rates fndecl 2 7795 NULL
146751 +enable_so_lprocfs_read_frac_helper_fndecl_7806 lprocfs_read_frac_helper fndecl 0 7806 NULL
146752 +enable_so_qnx4_get_block_fndecl_7810 qnx4_get_block fndecl 2 7810 NULL
146753 +enable_so_cciss_max_sectors_ctlr_info_7811 cciss_max_sectors ctlr_info 0 7811 NULL nohasharray
146754 +enable_so_len_nfs_diropargs_7811 len nfs_diropargs 0 7811 &enable_so_cciss_max_sectors_ctlr_info_7811
146755 +enable_so_ieee80211_if_fmt_dot11MeshForwarding_fndecl_7814 ieee80211_if_fmt_dot11MeshForwarding fndecl 3 7814 NULL
146756 +enable_so_mb_cache_create_fndecl_7816 mb_cache_create fndecl 2 7816 NULL
146757 +enable_so_node_ino_num_f2fs_sb_info_7818 node_ino_num f2fs_sb_info 0 7818 NULL
146758 +enable_so_length_scsi_mode_data_7819 length scsi_mode_data 0 7819 NULL
146759 +enable_so_id_avail_ipack_device_7822 id_avail ipack_device 0 7822 NULL
146760 +enable_so_n_stats_ethtool_stats_7823 n_stats ethtool_stats 0 7823 NULL
146761 +enable_so_neigh_hash_grow_fndecl_7824 neigh_hash_grow fndecl 2 7824 NULL nohasharray
146762 +enable_so_ext4_fname_match_fndecl_7824 ext4_fname_match fndecl 3 7824 &enable_so_neigh_hash_grow_fndecl_7824
146763 +enable_so_get_pipe_fndecl_7825 get_pipe fndecl 0-2 7825 NULL
146764 +enable_so_nabs_joydev_7827 nabs joydev 0 7827 NULL
146765 +enable_so_sys_truncate_fndecl_7846 sys_truncate fndecl 2 7846 NULL
146766 +enable_so_sl_datalen_nfsd4_slot_7859 sl_datalen nfsd4_slot 0 7859 NULL
146767 +enable_so_wqe_shift_mlx4_ib_wq_7860 wqe_shift mlx4_ib_wq 0 7860 NULL
146768 +enable_so_block_aligned_filename_size_ecryptfs_parse_tag_70_packet_silly_stack_7865 block_aligned_filename_size ecryptfs_parse_tag_70_packet_silly_stack 0 7865 NULL nohasharray
146769 +enable_so_s_fpbshift_ufs_sb_private_info_7865 s_fpbshift ufs_sb_private_info 0 7865 &enable_so_block_aligned_filename_size_ecryptfs_parse_tag_70_packet_silly_stack_7865
146770 +enable_so_sync_freq_arizona_fll_7868 sync_freq arizona_fll 0 7868 NULL
146771 +enable_so_cyapa_i2c_read_fndecl_7870 cyapa_i2c_read fndecl 3 7870 NULL
146772 +enable_so_mapped_vram_mb862xxfb_par_7872 mapped_vram mb862xxfb_par 0 7872 NULL
146773 +enable_so_used_snd_ctl_elem_list_7883 used snd_ctl_elem_list 0 7883 NULL
146774 +enable_so_rxstatus_epic_rx_desc_7884 rxstatus epic_rx_desc 0 7884 NULL nohasharray
146775 +enable_so_sd_read_data_fndecl_7884 sd_read_data fndecl 3 7884 &enable_so_rxstatus_epic_rx_desc_7884 nohasharray
146776 +enable_so_freecom_readdata_fndecl_7884 freecom_readdata fndecl 3-4 7884 &enable_so_sd_read_data_fndecl_7884
146777 +enable_so_ath6kl_wmi_send_mgmt_cmd_fndecl_7888 ath6kl_wmi_send_mgmt_cmd fndecl 7 7888 NULL
146778 +enable_so_hpfs_load_bitmap_directory_fndecl_7892 hpfs_load_bitmap_directory fndecl 2 7892 NULL
146779 +enable_so_n_skt_uvh_rh_gam_config_mmr_s_7913 n_skt uvh_rh_gam_config_mmr_s 0 7913 NULL nohasharray
146780 +enable_so_mode_id_vbe_mode_ib_7913 mode_id vbe_mode_ib 0 7913 &enable_so_n_skt_uvh_rh_gam_config_mmr_s_7913
146781 +enable_so_depth_s5p_jpeg_fmt_7914 depth s5p_jpeg_fmt 0 7914 NULL
146782 +enable_so_ccw_bmove_fndecl_7918 ccw_bmove fndecl 8-4-6-7-3-5 7918 NULL
146783 +enable_so_uvesafb_setpalette_fndecl_7922 uvesafb_setpalette fndecl 2 7922 NULL
146784 +enable_so_raid5_size_fndecl_7933 raid5_size fndecl 0-3-2 7933 NULL
146785 +enable_so_jp_journal_size_journal_params_7943 jp_journal_size journal_params 0 7943 NULL
146786 +enable_so_jme_change_mtu_fndecl_7964 jme_change_mtu fndecl 2 7964 NULL
146787 +enable_so_xfs_btree_get_bufl_fndecl_7965 xfs_btree_get_bufl fndecl 3 7965 NULL
146788 +enable_so_btrfs_lookup_dir_item_fndecl_7969 btrfs_lookup_dir_item fndecl 4 7969 NULL
146789 +enable_so_squashfs_read_table_fndecl_7970 squashfs_read_table fndecl 3 7970 NULL nohasharray
146790 +enable_so_ticket_len_rxk5_key_7970 ticket_len rxk5_key 0 7970 &enable_so_squashfs_read_table_fndecl_7970
146791 +enable_so__sp2d_alloc_fndecl_7971 _sp2d_alloc fndecl 1-2-3 7971 NULL
146792 +enable_so_peb_count_ubi_device_7987 peb_count ubi_device 0 7987 NULL
146793 +enable_so_napi_alloc_frag_fndecl_7988 napi_alloc_frag fndecl 1 7988 NULL
146794 +enable_so_initrd_end_vardecl_7989 initrd_end vardecl 0 7989 NULL
146795 +enable_so_ip_append_data_fndecl_7997 ip_append_data fndecl 6-5 7997 NULL
146796 +enable_so_encode_opaque_fixed_fndecl_8013 encode_opaque_fixed fndecl 3 8013 NULL nohasharray
146797 +enable_so_ocfs2_read_quota_phys_block_fndecl_8013 ocfs2_read_quota_phys_block fndecl 2 8013 &enable_so_encode_opaque_fixed_fndecl_8013
146798 +enable_so_max_mtu_mlx4_en_priv_8015 max_mtu mlx4_en_priv 0 8015 NULL
146799 +enable_so_svcxdr_dupstr_fndecl_8016 svcxdr_dupstr fndecl 3 8016 NULL
146800 +enable_so_period_size_snd_pcm_runtime_8027 period_size snd_pcm_runtime 0 8027 NULL
146801 +enable_so_length_e1000_rx_desc_8032 length e1000_rx_desc 0 8032 NULL
146802 +enable_so_mei_fw_status2str_fndecl_8034 mei_fw_status2str fndecl 3 8034 NULL
146803 +enable_so_gfs2_reservation_check_and_update_fndecl_8035 gfs2_reservation_check_and_update fndecl 3 8035 NULL
146804 +enable_so_vbi_width_au0828_dev_8038 vbi_width au0828_dev 0 8038 NULL
146805 +enable_so_ieee80211_tdls_build_mgmt_packet_data_fndecl_8053 ieee80211_tdls_build_mgmt_packet_data fndecl 8 8053 NULL
146806 +enable_so_pd_handles_sz_MPT3SAS_ADAPTER_8057 pd_handles_sz MPT3SAS_ADAPTER 0 8057 NULL
146807 +enable_so_mmio_megabytes_vmbus_channel_offer_8058 mmio_megabytes vmbus_channel_offer 0 8058 NULL nohasharray
146808 +enable_so_goldfish_tty_line_count_vardecl_goldfish_c_8058 goldfish_tty_line_count vardecl_goldfish.c 0 8058 &enable_so_mmio_megabytes_vmbus_channel_offer_8058
146809 +enable_so_s_bitmap_file_loc_udf_meta_data_8062 s_bitmap_file_loc udf_meta_data 0 8062 NULL nohasharray
146810 +enable_so_ceph_read_dir_fndecl_8062 ceph_read_dir fndecl 3 8062 &enable_so_s_bitmap_file_loc_udf_meta_data_8062
146811 +enable_so_btrfs_unlink_inode_fndecl_8064 btrfs_unlink_inode fndecl 6 8064 NULL
146812 +enable_so_jffs2_trusted_setxattr_fndecl_8075 jffs2_trusted_setxattr fndecl 4 8075 NULL
146813 +enable_so_encode_string_fndecl_8079 encode_string fndecl 2 8079 NULL
146814 +enable_so_copy_counters_to_user_fndecl_8080 copy_counters_to_user fndecl 5 8080 NULL
146815 +enable_so_out_pipe_usbtest_dev_8085 out_pipe usbtest_dev 0 8085 NULL
146816 +enable_so_length_packet_8086 length packet 0 8086 NULL
146817 +enable_so_lpt_lnum_bits_ubifs_info_8094 lpt_lnum_bits ubifs_info 0 8094 NULL
146818 +enable_so_sd_complete_frame_fndecl_8096 sd_complete_frame fndecl 3 8096 NULL
146819 +enable_so_dvb_dvr_read_fndecl_8098 dvb_dvr_read fndecl 3 8098 NULL nohasharray
146820 +enable_so_batchcount_kmem_cache_8098 batchcount kmem_cache 0 8098 &enable_so_dvb_dvr_read_fndecl_8098
146821 +enable_so_sddr55_read_data_fndecl_8099 sddr55_read_data fndecl 4-3 8099 NULL
146822 +enable_so_simple_transaction_read_fndecl_8103 simple_transaction_read fndecl 3 8103 NULL
146823 +enable_so_ext4_end_io_dio_fndecl_8107 ext4_end_io_dio fndecl 2-3 8107 NULL
146824 +enable_so_a8293_rd_fndecl_8111 a8293_rd fndecl 3 8111 NULL
146825 +enable_so_speed_channel_8113 speed channel 0 8113 NULL
146826 +enable_so_up_dnode_8116 up dnode 0 8116 NULL
146827 +enable_so___arch_hweight32_fndecl_8119 __arch_hweight32 fndecl 0 8119 NULL
146828 +enable_so___copy_user_nocache_fndecl_8122 __copy_user_nocache fndecl 0 8122 NULL
146829 +enable_so_cfg_size_pci_dev_8134 cfg_size pci_dev 0 8134 NULL
146830 +enable_so_wpa_ie_len_libipw_network_8137 wpa_ie_len libipw_network 0 8137 NULL nohasharray
146831 +enable_so_write_mem_fndecl_8137 write_mem fndecl 3 8137 &enable_so_wpa_ie_len_libipw_network_8137 nohasharray
146832 +enable_so_ucNumDPMLevels__ATOM_PPLIB_STATE_V2_8137 ucNumDPMLevels _ATOM_PPLIB_STATE_V2 0 8137 &enable_so_write_mem_fndecl_8137
146833 +enable_so_max_xmit_dlength_iscsi_conn_8139 max_xmit_dlength iscsi_conn 0 8139 NULL
146834 +enable_so_iic_tpm_write_long_fndecl_8143 iic_tpm_write_long fndecl 3 8143 NULL
146835 +enable_so_port_cnt_ipath_portdata_8144 port_cnt ipath_portdata 0 8144 NULL
146836 +enable_so_entry_length_fndecl_8150 entry_length fndecl 0 8150 NULL
146837 +enable_so_hr_start_block_o2hb_region_8162 hr_start_block o2hb_region 0 8162 NULL
146838 +enable_so_num_custom_params_pinctrl_desc_8163 num_custom_params pinctrl_desc 0 8163 NULL nohasharray
146839 +enable_so_fuse_direct_IO_fndecl_8163 fuse_direct_IO fndecl 3 8163 &enable_so_num_custom_params_pinctrl_desc_8163
146840 +enable_so_read_len_ddb_flashio_8164 read_len ddb_flashio 0 8164 NULL
146841 +enable_so_jumpshot_write_data_fndecl_8172 jumpshot_write_data fndecl 4 8172 NULL
146842 +enable_so_blksz_mmc_data_8174 blksz mmc_data 0 8174 NULL nohasharray
146843 +enable_so_ptr_mask_efx_tx_queue_8174 ptr_mask efx_tx_queue 0 8174 &enable_so_blksz_mmc_data_8174
146844 +enable_so_pvr2_hdw_state_report_fndecl_8178 pvr2_hdw_state_report fndecl 3 8178 NULL
146845 +enable_so_pdu_read_fndecl_8183 pdu_read fndecl 3 8183 NULL
146846 +enable_so_nsftids_tid_info_8187 nsftids tid_info 0 8187 NULL
146847 +enable_so_brcms_c_get_header_len_fndecl_8189 brcms_c_get_header_len fndecl 0 8189 NULL
146848 +enable_so_end_point_addr_cx231xx_video_mode_8198 end_point_addr cx231xx_video_mode 0 8198 NULL
146849 +enable_so___carl9170_tx_process_status_fndecl_8202 __carl9170_tx_process_status fndecl 3 8202 NULL
146850 +enable_so_mmap_size_kioctx_8213 mmap_size kioctx 0 8213 NULL
146851 +enable_so_clear_extent_bit_fndecl_8215 clear_extent_bit fndecl 2-3 8215 NULL
146852 +enable_so_be_f_offset_pnfs_block_extent_8222 be_f_offset pnfs_block_extent 0 8222 NULL
146853 +enable_so_eeprom_size_iwl_base_params_8231 eeprom_size iwl_base_params 0 8231 NULL
146854 +enable_so_SYSC_llistxattr_fndecl_8238 SYSC_llistxattr fndecl 3 8238 NULL
146855 +enable_so_registers_CHIPDESC_8240 registers CHIPDESC 0 8240 NULL
146856 +enable_so_ocfs2_remove_extent_fndecl_8243 ocfs2_remove_extent fndecl 4-3 8243 NULL
146857 +enable_so_stk_read_fndecl_8245 stk_read fndecl 3 8245 NULL
146858 +enable_so_num_tasks_per_conn_iscsi_kwqe_init1_8249 num_tasks_per_conn iscsi_kwqe_init1 0 8249 NULL
146859 +enable_so_sys_sched_setaffinity_fndecl_8253 sys_sched_setaffinity fndecl 2 8253 NULL
146860 +enable_so_num_alloc_vsi_i40e_pf_8259 num_alloc_vsi i40e_pf 0 8259 NULL
146861 +enable_so_buf_size_ispstat_buffer_8262 buf_size ispstat_buffer 0 8262 NULL
146862 +enable_so_cow_file_range_inline_fndecl_8264 cow_file_range_inline fndecl 4-3 8264 NULL
146863 +enable_so_datablklen_capi_register_params_8275 datablklen capi_register_params 0 8275 NULL nohasharray
146864 +enable_so_proc_scsi_devinfo_write_fndecl_8275 proc_scsi_devinfo_write fndecl 3 8275 &enable_so_datablklen_capi_register_params_8275
146865 +enable_so_cdc_ncm_check_tx_max_fndecl_8278 cdc_ncm_check_tx_max fndecl 0-2 8278 NULL
146866 +enable_so_streams_mcs_group_8279 streams mcs_group 0 8279 NULL
146867 +enable_so_msg_len_rndis_message_8281 msg_len rndis_message 0 8281 NULL
146868 +enable_so_tail_len_cfg80211_beacon_data_8293 tail_len cfg80211_beacon_data 0 8293 NULL
146869 +enable_so_ns_blocks_per_segment_the_nilfs_8295 ns_blocks_per_segment the_nilfs 0 8295 NULL
146870 +enable_so_disk_status_fndecl_8299 disk_status fndecl 4 8299 NULL
146871 +enable_so_c_data_len_pvr2_ioread_8300 c_data_len pvr2_ioread 0 8300 NULL
146872 +enable_so_buflen_kobj_uevent_env_8305 buflen kobj_uevent_env 0 8305 NULL
146873 +enable_so_alloc_pwms_fndecl_8311 alloc_pwms fndecl 2 8311 NULL nohasharray
146874 +enable_so_ipath_rcvtidcnt_ipath_devdata_8311 ipath_rcvtidcnt ipath_devdata 0 8311 &enable_so_alloc_pwms_fndecl_8311
146875 +enable_so_group_trans_num_acl_subject_label_8316 group_trans_num acl_subject_label 0 8316 NULL
146876 +enable_so_depth_vim2m_fmt_8319 depth vim2m_fmt 0 8319 NULL
146877 +enable_so_sv_max_payload_svc_serv_8322 sv_max_payload svc_serv 0 8322 NULL
146878 +enable_so_vga_video_font_height_vardecl_vgacon_c_8324 vga_video_font_height vardecl_vgacon.c 0 8324 NULL
146879 +enable_so_xfs_bmap_longest_free_extent_fndecl_8327 xfs_bmap_longest_free_extent fndecl 2 8327 NULL
146880 +enable_so_vhci_urb_dequeue_fndecl_8333 vhci_urb_dequeue fndecl 3 8333 NULL
146881 +enable_so_skcipher_pull_sgl_fndecl_8337 skcipher_pull_sgl fndecl 2 8337 NULL
146882 +enable_so_disks_stripe_head_8349 disks stripe_head 0 8349 NULL
146883 +enable_so_ch_do_scsi_fndecl_8353 ch_do_scsi fndecl 5 8353 NULL nohasharray
146884 +enable_so_req_pay_size_qlcnic_bc_trans_8353 req_pay_size qlcnic_bc_trans 0 8353 &enable_so_ch_do_scsi_fndecl_8353
146885 +enable_so_rx_size_i2400mu_8374 rx_size i2400mu 0 8374 NULL nohasharray
146886 +enable_so_venus_link_fndecl_8374 venus_link fndecl 5 8374 &enable_so_rx_size_i2400mu_8374
146887 +enable_so_height_deinterlace_q_data_8376 height deinterlace_q_data 0 8376 NULL nohasharray
146888 +enable_so_afs_lookup_filldir_fndecl_8376 afs_lookup_filldir fndecl 5 8376 &enable_so_height_deinterlace_q_data_8376
146889 +enable_so_algs_wmfw_adsp1_id_hdr_8381 algs wmfw_adsp1_id_hdr 0 8381 NULL
146890 +enable_so_do_writepages_fndecl_8382 do_writepages fndecl 0 8382 NULL
146891 +enable_so_riva_get_cmap_len_fndecl_8393 riva_get_cmap_len fndecl 0 8393 NULL
146892 +enable_so_depth_tc_sfq_qopt_v1_8394 depth tc_sfq_qopt_v1 0 8394 NULL
146893 +enable_so_wusb_ccm_mac_fndecl_8404 wusb_ccm_mac fndecl 7 8404 NULL
146894 +enable_so_del_ptr_fndecl_8406 del_ptr fndecl 4 8406 NULL
146895 +enable_so_pkt_size_data_cmd_8407 pkt_size data_cmd 0 8407 NULL
146896 +enable_so_wNdpOutPayloadRemainder_usb_cdc_ncm_ntb_parameters_8415 wNdpOutPayloadRemainder usb_cdc_ncm_ntb_parameters 0 8415 NULL
146897 +enable_so_ring_blocks_vxge_hw_ring_config_8417 ring_blocks vxge_hw_ring_config 0 8417 NULL
146898 +enable_so_key_mgmt_orinoco_private_8430 key_mgmt orinoco_private 0 8430 NULL
146899 +enable_so_block_dm_buffer_8440 block dm_buffer 0 8440 NULL
146900 +enable_so_offset_l2tp_session_8443 offset l2tp_session 0 8443 NULL
146901 +enable_so_writeset_tree_root_superblock_disk_8446 writeset_tree_root superblock_disk 0 8446 NULL nohasharray
146902 +enable_so_frame_size_tlan_list_8446 frame_size tlan_list 0 8446 &enable_so_writeset_tree_root_superblock_disk_8446
146903 +enable_so_ql_process_mac_split_rx_intr_fndecl_8452 ql_process_mac_split_rx_intr fndecl 4 8452 NULL
146904 +enable_so_SyS_lsetxattr_fndecl_8453 SyS_lsetxattr fndecl 4 8453 NULL
146905 +enable_so_extra_bytes_asc_q_done_info_8460 extra_bytes asc_q_done_info 0 8460 NULL
146906 +enable_so_sg_off_isert_data_buf_8466 sg_off isert_data_buf 0 8466 NULL
146907 +enable_so_drm_gem_create_mmap_offset_size_fndecl_8471 drm_gem_create_mmap_offset_size fndecl 2 8471 NULL nohasharray
146908 +enable_so_shmem_truncate_range_fndecl_8471 shmem_truncate_range fndecl 2-3 8471 &enable_so_drm_gem_create_mmap_offset_size_fndecl_8471
146909 +enable_so_lbytes_tree_balance_8472 lbytes tree_balance 0 8472 NULL
146910 +enable_so_snd_seq_device_new_fndecl_8474 snd_seq_device_new fndecl 4 8474 NULL
146911 +enable_so_screen_size_fb_info_8480 screen_size fb_info 0 8480 NULL
146912 +enable_so_length_btrfs_bio_stripe_8481 length btrfs_bio_stripe 0 8481 NULL
146913 +enable_so_i915_gem_get_gtt_alignment_fndecl_8484 i915_gem_get_gtt_alignment fndecl 2 8484 NULL
146914 +enable_so_get_count_order_fndecl_8491 get_count_order fndecl 0 8491 NULL
146915 +enable_so_data_write_fndecl_8494 data_write fndecl 3 8494 NULL
146916 +enable_so_map_sg_dma_map_ops_8500 map_sg dma_map_ops 0 8500 NULL
146917 +enable_so_usblp_cache_device_id_string_fndecl_8509 usblp_cache_device_id_string fndecl 0 8509 NULL
146918 +enable_so_dy_fb_copyarea_8510 dy fb_copyarea 0 8510 NULL
146919 +enable_so_num_processors_vardecl_8512 num_processors vardecl 0 8512 NULL
146920 +enable_so_vsync_pulse_width_lvds_dvo_timing_8520 vsync_pulse_width lvds_dvo_timing 0 8520 NULL
146921 +enable_so_dclkmax_fb_monspecs_8527 dclkmax fb_monspecs 0 8527 NULL nohasharray
146922 +enable_so_follows_u132_command_8527 follows u132_command 0 8527 &enable_so_dclkmax_fb_monspecs_8527
146923 +enable_so_alloc_blksz_shift_hfsplus_sb_info_8530 alloc_blksz_shift hfsplus_sb_info 0 8530 NULL
146924 +enable_so_strnlen_user_fndecl_8532 strnlen_user fndecl 0-2 8532 NULL
146925 +enable_so_logfs_seek_data_fndecl_8541 logfs_seek_data fndecl 2-0 8541 NULL nohasharray
146926 +enable_so_limit_kmem_cache_8541 limit kmem_cache 0 8541 &enable_so_logfs_seek_data_fndecl_8541
146927 +enable_so_fuse_dir_fsync_fndecl_8543 fuse_dir_fsync fndecl 2 8543 NULL
146928 +enable_so_vfront_porch_videomode_8550 vfront_porch videomode 0 8550 NULL nohasharray
146929 +enable_so_memsize_vardecl_tridentfb_c_8550 memsize vardecl_tridentfb.c 0 8550 &enable_so_vfront_porch_videomode_8550
146930 +enable_so_level_btrfs_delayed_extent_op_8570 level btrfs_delayed_extent_op 0 8570 NULL
146931 +enable_so_SyS_ppoll_fndecl_8572 SyS_ppoll fndecl 2 8572 NULL
146932 +enable_so_clone_bio_fndecl_8573 clone_bio fndecl 3-4 8573 NULL
146933 +enable_so_len_vmxnet3_rx_buf_info_8575 len vmxnet3_rx_buf_info 0 8575 NULL nohasharray
146934 +enable_so_mlx5_ib_update_mtt_fndecl_8575 mlx5_ib_update_mtt fndecl 3-2 8575 &enable_so_len_vmxnet3_rx_buf_info_8575
146935 +enable_so_max_request_size_brcmf_sdio_dev_8586 max_request_size brcmf_sdio_dev 0 8586 NULL
146936 +enable_so_ddb_output_write_fndecl_8589 ddb_output_write fndecl 3-0 8589 NULL
146937 +enable_so_gss_unwrap_kerberos_v2_fndecl_8596 gss_unwrap_kerberos_v2 fndecl 2 8596 NULL nohasharray
146938 +enable_so_height_efifb_dmi_info_8596 height efifb_dmi_info 0 8596 &enable_so_gss_unwrap_kerberos_v2_fndecl_8596
146939 +enable_so_iwl_dbgfs_disable_ht40_write_fndecl_8599 iwl_dbgfs_disable_ht40_write fndecl 3 8599 NULL
146940 +enable_so_apic_base_kvm_sregs_8602 apic_base kvm_sregs 0 8602 NULL nohasharray
146941 +enable_so_drm_mode_crtc_set_gamma_size_fndecl_8602 drm_mode_crtc_set_gamma_size fndecl 2 8602 &enable_so_apic_base_kvm_sregs_8602
146942 +enable_so_vblank_hi_oaktrail_timing_info_8607 vblank_hi oaktrail_timing_info 0 8607 NULL nohasharray
146943 +enable_so_hw_token_fusbh200_qh_hw_8607 hw_token fusbh200_qh_hw 0 8607 &enable_so_vblank_hi_oaktrail_timing_info_8607
146944 +enable_so_seq_buf_commit_fndecl_8608 seq_buf_commit fndecl 2 8608 NULL
146945 +enable_so_kmem_alloc_fndecl_8611 kmem_alloc fndecl 1 8611 NULL
146946 +enable_so_input_print_modalias_fndecl_8617 input_print_modalias fndecl 0 8617 NULL
146947 +enable_so_i_prealloc_count_reiserfs_inode_info_8620 i_prealloc_count reiserfs_inode_info 0 8620 NULL
146948 +enable_so_era_status_fndecl_8621 era_status fndecl 5 8621 NULL
146949 +enable_so_transfer_size_fndecl_8623 transfer_size fndecl 0-1-2-3 8623 NULL
146950 +enable_so_lu_buf_realloc_fndecl_8632 lu_buf_realloc fndecl 2 8632 NULL
146951 +enable_so_new_dir_fndecl_8636 new_dir fndecl 3 8636 NULL
146952 +enable_so_in_height_sh_vou_geometry_8644 in_height sh_vou_geometry 0 8644 NULL
146953 +enable_so_block_size_cache_args_8648 block_size cache_args 0 8648 NULL
146954 +enable_so_e_value_offs_ext4_xattr_entry_8650 e_value_offs ext4_xattr_entry 0 8650 NULL
146955 +enable_so_xfs_bmap_worst_indlen_fndecl_8651 xfs_bmap_worst_indlen fndecl 0 8651 NULL
146956 +enable_so_truncate_size_ceph_mds_reply_inode_8652 truncate_size ceph_mds_reply_inode 0 8652 NULL
146957 +enable_so_copy_from_user_toio_fndecl_8653 copy_from_user_toio fndecl 3 8653 NULL
146958 +enable_so_vmcore_size_vardecl_vmcore_c_8660 vmcore_size vardecl_vmcore.c 0 8660 NULL
146959 +enable_so_read_mem_fndecl_8661 read_mem fndecl 3 8661 NULL
146960 +enable_so_SYSC_sethostname_fndecl_8663 SYSC_sethostname fndecl 2 8663 NULL
146961 +enable_so___alloc_percpu_gfp_fndecl_8664 __alloc_percpu_gfp fndecl 1-2 8664 NULL
146962 +enable_so_vbi_end_bttv_8666 vbi_end bttv 0 8666 NULL
146963 +enable_so_ext4_zero_range_fndecl_8667 ext4_zero_range fndecl 2-3 8667 NULL
146964 +enable_so_pvr2_ctrl_get_valname_fndecl_8668 pvr2_ctrl_get_valname fndecl 4 8668 NULL
146965 +enable_so_vb2_write_fndecl_8671 vb2_write fndecl 3 8671 NULL
146966 +enable_so_len_ipath_diag_xpkt_8673 len ipath_diag_xpkt 0 8673 NULL
146967 +enable_so_write_data_done_iscsi_cmd_8676 write_data_done iscsi_cmd 0 8676 NULL
146968 +enable_so_find_next_zero_bit_fndecl_8677 find_next_zero_bit fndecl 2-0 8677 NULL
146969 +enable_so_lustre_acl_xattr_merge2posix_fndecl_8683 lustre_acl_xattr_merge2posix fndecl 2 8683 NULL
146970 +enable_so_status_whc_urb_8685 status whc_urb 0 8685 NULL
146971 +enable_so_mtd_add_partition_fndecl_8688 mtd_add_partition fndecl 3 8688 NULL
146972 +enable_so_env_start_mm_struct_8690 env_start mm_struct 0 8690 NULL
146973 +enable_so_mpeglines_vardecl_cx231xx_417_c_8691 mpeglines vardecl_cx231xx-417.c 0 8691 NULL nohasharray
146974 +enable_so_b_out_mon_reader_bin_8691 b_out mon_reader_bin 0 8691 &enable_so_mpeglines_vardecl_cx231xx_417_c_8691
146975 +enable_so_btrfs_insert_empty_inode_fndecl_8692 btrfs_insert_empty_inode fndecl 4 8692 NULL
146976 +enable_so_fp0_intel_dpll_hw_state_8694 fp0 intel_dpll_hw_state 0 8694 NULL nohasharray
146977 +enable_so_data_width_stedma40_half_channel_info_8694 data_width stedma40_half_channel_info 0 8694 &enable_so_fp0_intel_dpll_hw_state_8694
146978 +enable_so_NumEraseUnits_erase_unit_header_t_8696 NumEraseUnits erase_unit_header_t 0 8696 NULL
146979 +enable_so_retry_count_rtscts_minstrel_rate_stats_8699 retry_count_rtscts minstrel_rate_stats 0 8699 NULL nohasharray
146980 +enable_so_ebcnt_vardecl_readtest_c_8699 ebcnt vardecl_readtest.c 0 8699 &enable_so_retry_count_rtscts_minstrel_rate_stats_8699
146981 +enable_so_ilo_read_fndecl_8704 ilo_read fndecl 3 8704 NULL
146982 +enable_so_hpfs_prefetch_sectors_fndecl_8708 hpfs_prefetch_sectors fndecl 2 8708 NULL
146983 +enable_so_rx_buf_sz_sh_eth_private_8709 rx_buf_sz sh_eth_private 0 8709 NULL nohasharray
146984 +enable_so_max_unmap_blocks_scsi_disk_8709 max_unmap_blocks scsi_disk 0 8709 &enable_so_rx_buf_sz_sh_eth_private_8709 nohasharray
146985 +enable_so_out_ptr_mdc800_data_8709 out_ptr mdc800_data 0 8709 &enable_so_max_unmap_blocks_scsi_disk_8709
146986 +enable_so_size_genwqe_bitstream_8710 size genwqe_bitstream 0 8710 NULL
146987 +enable_so_ieee80211_send_auth_fndecl_8716 ieee80211_send_auth fndecl 6 8716 NULL
146988 +enable_so_inode_number_squashfs_dir_header_8723 inode_number squashfs_dir_header 0 8723 NULL
146989 +enable_so_iram_end_intel_sst_drv_8725 iram_end intel_sst_drv 0 8725 NULL
146990 +enable_so_ctrl_std_val_to_sym_fndecl_8727 ctrl_std_val_to_sym fndecl 5 8727 NULL
146991 +enable_so_read_hdlc_status_fritz_adapter_8730 read_hdlc_status fritz_adapter 0 8730 NULL
146992 +enable_so_ext_param_page_length_nand_onfi_params_8736 ext_param_page_length nand_onfi_params 0 8736 NULL
146993 +enable_so___blockdev_direct_IO_fndecl_8738 __blockdev_direct_IO fndecl 5 8738 NULL
146994 +enable_so_osc_iocontrol_fndecl_8742 osc_iocontrol fndecl 3 8742 NULL
146995 +enable_so___vlan_add_fndecl_8748 __vlan_add fndecl 2 8748 NULL
146996 +enable_so_plain_at_offset_vardecl_sec_plain_c_8751 plain_at_offset vardecl_sec_plain.c 0 8751 NULL
146997 +enable_so__netlbl_catmap_getnode_fndecl_8754 _netlbl_catmap_getnode fndecl 2 8754 NULL
146998 +enable_so_my_skb_align_fndecl_8755 my_skb_align fndecl 2 8755 NULL
146999 +enable_so_skcipher_sendpage_fndecl_8759 skcipher_sendpage fndecl 3-4 8759 NULL
147000 +enable_so_snd_pcm_hw_param_set_fndecl_8761 snd_pcm_hw_param_set fndecl 4 8761 NULL
147001 +enable_so_max_swap_info_struct_8767 max swap_info_struct 0 8767 NULL
147002 +enable_so_max_pfn_radeon_vm_manager_8768 max_pfn radeon_vm_manager 0 8768 NULL
147003 +enable_so_gfs2_adjust_quota_fndecl_8777 gfs2_adjust_quota fndecl 2 8777 NULL
147004 +enable_so_data_dma_powermate_device_8783 data_dma powermate_device 0 8783 NULL
147005 +enable_so_rx_tr_cfv_info_8786 rx_tr cfv_info 0 8786 NULL
147006 +enable_so_nfs_setup_write_request_fndecl_8793 nfs_setup_write_request fndecl 3 8793 NULL nohasharray
147007 +enable_so_mem_swapout_entry_fndecl_8793 mem_swapout_entry fndecl 3 8793 &enable_so_nfs_setup_write_request_fndecl_8793
147008 +enable_so_lcd_vblank_len_atyfb_par_8796 lcd_vblank_len atyfb_par 0 8796 NULL
147009 +enable_so_logic_start_scrub_parity_8798 logic_start scrub_parity 0 8798 NULL
147010 +enable_so_cfg80211_roamed_fndecl_8811 cfg80211_roamed fndecl 5-7 8811 NULL
147011 +enable_so_nilfs_cpfile_get_checkpoint_fndecl_8812 nilfs_cpfile_get_checkpoint fndecl 2 8812 NULL
147012 +enable_so_ieee80211_hdrlen_fndecl_8814 ieee80211_hdrlen fndecl 0 8814 NULL
147013 +enable_so_dma_alloc_pages_fndecl_8819 dma_alloc_pages fndecl 3 8819 NULL nohasharray
147014 +enable_so_sys_set_mempolicy_fndecl_8819 sys_set_mempolicy fndecl 3 8819 &enable_so_dma_alloc_pages_fndecl_8819
147015 +enable_so_dma_buf_mmap_fndecl_8825 dma_buf_mmap fndecl 3 8825 NULL
147016 +enable_so_buflow_ring_desc_ex_8829 buflow ring_desc_ex 0 8829 NULL
147017 +enable_so_vsync_len_videomode_8830 vsync_len videomode 0 8830 NULL
147018 +enable_so_wm5110_set_fll_fndecl_8841 wm5110_set_fll fndecl 4-5 8841 NULL
147019 +enable_so_max_packet_size_ftdi_private_8847 max_packet_size ftdi_private 0 8847 NULL
147020 +enable_so_ibufsize_sisusb_usb_data_8851 ibufsize sisusb_usb_data 0 8851 NULL
147021 +enable_so_generic_readlink_fndecl_8861 generic_readlink fndecl 3 8861 NULL
147022 +enable_so_alloc_extent_buffer_fndecl_8862 alloc_extent_buffer fndecl 2 8862 NULL
147023 +enable_so_dm_set_target_max_io_len_fndecl_8872 dm_set_target_max_io_len fndecl 2 8872 NULL
147024 +enable_so_jfs_readpages_fndecl_8877 jfs_readpages fndecl 4 8877 NULL
147025 +enable_so_s_apbmask_ufs_sb_private_info_8879 s_apbmask ufs_sb_private_info 0 8879 NULL
147026 +enable_so_move_addr_to_kernel_fndecl_8882 move_addr_to_kernel fndecl 2 8882 NULL
147027 +enable_so_icsk_ext_hdr_len_inet_connection_sock_8885 icsk_ext_hdr_len inet_connection_sock 0 8885 NULL
147028 +enable_so_via_lock_rate_fndecl_8895 via_lock_rate fndecl 2 8895 NULL
147029 +enable_so_batps_powernow_k8_data_8899 batps powernow_k8_data 0 8899 NULL
147030 +enable_so_pages_squashfs_cache_8903 pages squashfs_cache 0 8903 NULL
147031 +enable_so_a_data_exec_8906 a_data exec 0 8906 NULL nohasharray
147032 +enable_so_bits_per_pixel_fb_var_screeninfo_8906 bits_per_pixel fb_var_screeninfo 0 8906 &enable_so_a_data_exec_8906
147033 +enable_so_fll_factors_fndecl_8907 fll_factors fndecl 2-3 8907 NULL
147034 +enable_so_rt2x00debug_read_queue_dump_fndecl_8923 rt2x00debug_read_queue_dump fndecl 3 8923 NULL
147035 +enable_so_max_transfer_size_dwc2_core_params_8925 max_transfer_size dwc2_core_params 0 8925 NULL
147036 +enable_so_i40e_pci_sriov_enable_fndecl_8949 i40e_pci_sriov_enable fndecl 2 8949 NULL
147037 +enable_so_tree_root_btrfs_root_backup_8950 tree_root btrfs_root_backup 0 8950 NULL
147038 +enable_so_get_arg_page_fndecl_8953 get_arg_page fndecl 2 8953 NULL
147039 +enable_so_videobuf_mmap_setup_fndecl_8956 videobuf_mmap_setup fndecl 3 8956 NULL nohasharray
147040 +enable_so_nfrags_pktgen_dev_8956 nfrags pktgen_dev 0 8956 &enable_so_videobuf_mmap_setup_fndecl_8956
147041 +enable_so_pkt_align_fndecl_8963 pkt_align fndecl 2 8963 NULL
147042 +enable_so_fromlen_nfs_symlinkargs_8967 fromlen nfs_symlinkargs 0 8967 NULL
147043 +enable_so_n_bch_control_8979 n bch_control 0 8979 NULL
147044 +enable_so_fanout_ubifs_info_8981 fanout ubifs_info 0 8981 NULL
147045 +enable_so_inode_sub_bytes_fndecl_8987 inode_sub_bytes fndecl 2 8987 NULL
147046 +enable_so_si476x_cmd_tune_seek_freq_fndecl_8997 si476x_cmd_tune_seek_freq fndecl 4-6 8997 NULL
147047 +enable_so_vmalloc_user_fndecl_8999 vmalloc_user fndecl 1 8999 NULL
147048 +enable_so_SyS_select_fndecl_9004 SyS_select fndecl 1 9004 NULL
147049 +enable_so_size_pfn_var_mtrr_range_state_9005 size_pfn var_mtrr_range_state 0 9005 NULL nohasharray
147050 +enable_so_xattr_size_squashfs_inode_info_9005 xattr_size squashfs_inode_info 0 9005 &enable_so_size_pfn_var_mtrr_range_state_9005
147051 +enable_so_pcan_usb_decode_data_fndecl_9023 pcan_usb_decode_data fndecl 2 9023 NULL
147052 +enable_so_cdrom_read_cd_fndecl_9024 cdrom_read_cd fndecl 5-4 9024 NULL
147053 +enable_so_report_desc_size_mousevsc_dev_9027 report_desc_size mousevsc_dev 0 9027 NULL
147054 +enable_so_nextread_isowbuf_t_9028 nextread isowbuf_t 0 9028 NULL
147055 +enable_so_t4_alloc_mem_fndecl_9029 t4_alloc_mem fndecl 1 9029 NULL
147056 +enable_so_wDescriptorLength_hid_class_descriptor_9030 wDescriptorLength hid_class_descriptor 0 9030 NULL
147057 +enable_so_randomize_stack_top_fndecl_9035 randomize_stack_top fndecl 0-1 9035 NULL
147058 +enable_so_raid_disks_geom_9044 raid_disks geom 0 9044 NULL
147059 +enable_so_num_pds_mlx4_caps_9049 num_pds mlx4_caps 0 9049 NULL
147060 +enable_so_bounce_sgl_count_storvsc_cmd_request_9051 bounce_sgl_count storvsc_cmd_request 0 9051 NULL
147061 +enable_so__drbd_bm_find_next_fndecl_9063 _drbd_bm_find_next fndecl 2 9063 NULL nohasharray
147062 +enable_so_keys_bset_9063 keys bset 0 9063 &enable_so__drbd_bm_find_next_fndecl_9063 nohasharray
147063 +enable_so_tx_buf_sz_iadev_priv_9063 tx_buf_sz iadev_priv 0 9063 &enable_so_keys_bset_9063 nohasharray
147064 +enable_so_send_mpa_reply_fndecl_9063 send_mpa_reply fndecl 3 9063 &enable_so_tx_buf_sz_iadev_priv_9063
147065 +enable_so_buflen_compat_xfs_fsop_attrlist_handlereq_9071 buflen compat_xfs_fsop_attrlist_handlereq 0 9071 NULL
147066 +enable_so_uniqueid_cifsInodeInfo_9076 uniqueid cifsInodeInfo 0 9076 NULL nohasharray
147067 +enable_so_nilfs_dat_read_fndecl_9076 nilfs_dat_read fndecl 2 9076 &enable_so_uniqueid_cifsInodeInfo_9076
147068 +enable_so_out_int_pipe_usbtest_dev_9078 out_int_pipe usbtest_dev 0 9078 NULL nohasharray
147069 +enable_so_dispatch_ioctl_fndecl_9078 dispatch_ioctl fndecl 2 9078 &enable_so_out_int_pipe_usbtest_dev_9078
147070 +enable_so_count_afs_call_9081 count afs_call 0 9081 NULL
147071 +enable_so_ra_meta_pages_fndecl_9083 ra_meta_pages fndecl 2-0 9083 NULL
147072 +enable_so_start_brk_mm_struct_9085 start_brk mm_struct 0 9085 NULL
147073 +enable_so_event_count_Fsm_9088 event_count Fsm 0 9088 NULL
147074 +enable_so_fc2580_rd_regs_fndecl_9092 fc2580_rd_regs fndecl 4 9092 NULL
147075 +enable_so_vmci_qp_alloc_fndecl_9094 vmci_qp_alloc fndecl 5-3 9094 NULL
147076 +enable_so_limit_parsed_partitions_9099 limit parsed_partitions 0 9099 NULL
147077 +enable_so_keylen_ieee80211_key_conf_9103 keylen ieee80211_key_conf 0 9103 NULL
147078 +enable_so_s_blocks_count_lo_ext4_super_block_9106 s_blocks_count_lo ext4_super_block 0 9106 NULL
147079 +enable_so_intel_iommu_map_fndecl_9107 intel_iommu_map fndecl 2 9107 NULL
147080 +enable_so_pvr2_stream_set_buffer_count_fndecl_9116 pvr2_stream_set_buffer_count fndecl 2 9116 NULL
147081 +enable_so_numEntries__ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table_9118 numEntries _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table 0 9118 NULL
147082 +enable_so_break_ksm_fndecl_9124 break_ksm fndecl 2 9124 NULL
147083 +enable_so_reiserfs_direct_IO_fndecl_9131 reiserfs_direct_IO fndecl 3 9131 NULL
147084 +enable_so_neigh_priv_len_net_device_9133 neigh_priv_len net_device 0 9133 NULL
147085 +enable_so_rx_buf_sz_vardecl_r8169_c_9136 rx_buf_sz vardecl_r8169.c 0 9136 NULL
147086 +enable_so_read_buffer_length_adu_device_9140 read_buffer_length adu_device 0 9140 NULL
147087 +enable_so_size_ip6t_replace_9148 size ip6t_replace 0 9148 NULL
147088 +enable_so_ext_capab_len_station_parameters_9152 ext_capab_len station_parameters 0 9152 NULL
147089 +enable_so_ieee80211_fill_mesh_addresses_fndecl_9154 ieee80211_fill_mesh_addresses fndecl 0 9154 NULL
147090 +enable_so_fill_readbuf_fndecl_9155 fill_readbuf fndecl 3 9155 NULL
147091 +enable_so_percpu_max_size_percpu_ida_9157 percpu_max_size percpu_ida 0 9157 NULL
147092 +enable_so_depth_saa7134_format_9167 depth saa7134_format 0 9167 NULL nohasharray
147093 +enable_so_learn_buffer_len_vardecl_gracl_learn_c_9167 learn_buffer_len vardecl_gracl_learn.c 0 9167 &enable_so_depth_saa7134_format_9167
147094 +enable_so_channels_ua101_stream_9173 channels ua101_stream 0 9173 NULL
147095 +enable_so_alloc_queue_pairs_i40e_vsi_9174 alloc_queue_pairs i40e_vsi 0 9174 NULL
147096 +enable_so_hash_kernfs_node_9177 hash kernfs_node 0 9177 NULL
147097 +enable_so_sdev_format_header_fndecl_9178 sdev_format_header fndecl 0-2 9178 NULL nohasharray
147098 +enable_so_b_size_buffer_head_9178 b_size buffer_head 0 9178 &enable_so_sdev_format_header_fndecl_9178
147099 +enable_so_cache_status_fndecl_9181 cache_status fndecl 5 9181 NULL
147100 +enable_so_max_vfio_pci_fill_info_9182 max vfio_pci_fill_info 0 9182 NULL
147101 +enable_so_form_cm_frame_fndecl_9184 form_cm_frame fndecl 4-6 9184 NULL
147102 +enable_so_current_rate_iwl_scale_tbl_info_9194 current_rate iwl_scale_tbl_info 0 9194 NULL
147103 +enable_so_stb0899_write_regs_fndecl_9197 stb0899_write_regs fndecl 4 9197 NULL
147104 +enable_so_buflen_xfs_fsop_attrlist_handlereq_9199 buflen xfs_fsop_attrlist_handlereq 0 9199 NULL
147105 +enable_so_efx_rx_packet_fndecl_9200 efx_rx_packet fndecl 4-3 9200 NULL
147106 +enable_so_byte_per_page_nand_onfi_params_9202 byte_per_page nand_onfi_params 0 9202 NULL nohasharray
147107 +enable_so_nested_svm_check_exception_fndecl_9202 nested_svm_check_exception fndecl 4 9202 &enable_so_byte_per_page_nand_onfi_params_9202
147108 +enable_so_rss_hash_val_rss_header_9205 rss_hash_val rss_header 0 9205 NULL
147109 +enable_so_tx_max_datagrams_cdc_ncm_ctx_9206 tx_max_datagrams cdc_ncm_ctx 0 9206 NULL nohasharray
147110 +enable_so_max_pages_ib_fmr_attr_9206 max_pages ib_fmr_attr 0 9206 &enable_so_tx_max_datagrams_cdc_ncm_ctx_9206
147111 +enable_so_hw_token_ehci_qh_hw_9208 hw_token ehci_qh_hw 0 9208 NULL
147112 +enable_so_mesh_rx_path_sel_frame_fndecl_9210 mesh_rx_path_sel_frame fndecl 3 9210 NULL
147113 +enable_so_sae_data_len_cfg80211_auth_request_9212 sae_data_len cfg80211_auth_request 0 9212 NULL
147114 +enable_so_ide_driver_proc_write_fndecl_9214 ide_driver_proc_write fndecl 3 9214 NULL
147115 +enable_so_ext4_create_inline_data_fndecl_9231 ext4_create_inline_data fndecl 3 9231 NULL
147116 +enable_so_check_committed_ref_fndecl_9233 check_committed_ref fndecl 6 9233 NULL
147117 +enable_so_supported_rates_len_station_parameters_9235 supported_rates_len station_parameters 0 9235 NULL
147118 +enable_so_phys_pmd_init_fndecl_9251 phys_pmd_init fndecl 2-3 9251 NULL nohasharray
147119 +enable_so_vram_start_vml_info_9251 vram_start vml_info 0 9251 &enable_so_phys_pmd_init_fndecl_9251
147120 +enable_so_n_sbufs_stk_camera_9256 n_sbufs stk_camera 0 9256 NULL
147121 +enable_so_buffer_size_snd_rawmidi_runtime_9267 buffer_size snd_rawmidi_runtime 0 9267 NULL
147122 +enable_so_s_blocks_count_ext3_super_block_9271 s_blocks_count ext3_super_block 0 9271 NULL
147123 +enable_so_wl1251_sdio_write_fndecl_9274 wl1251_sdio_write fndecl 4 9274 NULL
147124 +enable_so_ima_eventsig_init_fndecl_9277 ima_eventsig_init fndecl 5 9277 NULL
147125 +enable_so_nr_pages_start_info_9283 nr_pages start_info 0 9283 NULL
147126 +enable_so_rx_cmd_ep_usb_card_rec_9290 rx_cmd_ep usb_card_rec 0 9290 NULL nohasharray
147127 +enable_so_buffer_bytes_st_buffer_9290 buffer_bytes st_buffer 0 9290 &enable_so_rx_cmd_ep_usb_card_rec_9290
147128 +enable_so_do_setup_msi_irqs_fndecl_9296 do_setup_msi_irqs fndecl 2 9296 NULL
147129 +enable_so_snd_tea575x_val_to_freq_fndecl_9302 snd_tea575x_val_to_freq fndecl 2 9302 NULL
147130 +enable_so_cxd2820r_wr_regs_fndecl_9307 cxd2820r_wr_regs fndecl 4 9307 NULL
147131 +enable_so_sys_splice_fndecl_9308 sys_splice fndecl 5 9308 NULL
147132 +enable_so_cpl_x86_emulate_ops_9312 cpl x86_emulate_ops 0 9312 NULL nohasharray
147133 +enable_so_sctp_setsockopt_context_fndecl_9312 sctp_setsockopt_context fndecl 3 9312 &enable_so_cpl_x86_emulate_ops_9312
147134 +enable_so_find_mergeable_fndecl_9318 find_mergeable fndecl 2 9318 NULL nohasharray
147135 +enable_so_proc_gid_map_write_fndecl_9318 proc_gid_map_write fndecl 3 9318 &enable_so_find_mergeable_fndecl_9318
147136 +enable_so_in_packet_size_pcm_runtime_9321 in_packet_size pcm_runtime 0 9321 NULL
147137 +enable_so_extLength_long_ad_9328 extLength long_ad 0 9328 NULL
147138 +enable_so__wm8994_set_fll_fndecl_9332 _wm8994_set_fll fndecl 4-5 9332 NULL nohasharray
147139 +enable_so_sys_mincore_fndecl_9332 sys_mincore fndecl 1-2 9332 &enable_so__wm8994_set_fll_fndecl_9332
147140 +enable_so_rbuf_fill_count_slgt_info_9335 rbuf_fill_count slgt_info 0 9335 NULL
147141 +enable_so_htree_dirblock_to_tree_fndecl_9339 htree_dirblock_to_tree fndecl 3 9339 NULL
147142 +enable_so_efer_kvm_vcpu_arch_9341 efer kvm_vcpu_arch 0 9341 NULL
147143 +enable_so_di_size_xfs_icdinode_9350 di_size xfs_icdinode 0 9350 NULL
147144 +enable_so_tse_init_rx_buffer_fndecl_9354 tse_init_rx_buffer fndecl 3 9354 NULL
147145 +enable_so_stv6110x_write_regs_fndecl_9359 stv6110x_write_regs fndecl 4 9359 NULL
147146 +enable_so_hpfs_count_one_bitmap_fndecl_9362 hpfs_count_one_bitmap fndecl 2 9362 NULL
147147 +enable_so_compat_sys_get_mempolicy_fndecl_9366 compat_sys_get_mempolicy fndecl 4-3 9366 NULL
147148 +enable_so_mt2060_writeregs_fndecl_9371 mt2060_writeregs fndecl 3 9371 NULL
147149 +enable_so_rate_n_flags_iwl_ht_agg_9373 rate_n_flags iwl_ht_agg 0 9373 NULL nohasharray
147150 +enable_so_hash_ipportnet6_expire_fndecl_9373 hash_ipportnet6_expire fndecl 4 9373 &enable_so_rate_n_flags_iwl_ht_agg_9373
147151 +enable_so_mss_clamp_tcp_options_received_9378 mss_clamp tcp_options_received 0 9378 NULL
147152 +enable_so_nr_uart_driver_9391 nr uart_driver 0 9391 NULL
147153 +enable_so_dr_pre_altera_jtag_9393 dr_pre altera_jtag 0 9393 NULL
147154 +enable_so_ubifs_tnc_add_nm_fndecl_9397 ubifs_tnc_add_nm fndecl 5 9397 NULL
147155 +enable_so_sr_bg_blkno_ocfs2_suballoc_result_9401 sr_bg_blkno ocfs2_suballoc_result 0 9401 NULL
147156 +enable_so_caif_seqpkt_recvmsg_fndecl_9402 caif_seqpkt_recvmsg fndecl 3 9402 NULL
147157 +enable_so_blk_queue_physical_block_size_fndecl_9410 blk_queue_physical_block_size fndecl 2 9410 NULL
147158 +enable_so_data_start_dm_ioctl_9412 data_start dm_ioctl 0 9412 NULL
147159 +enable_so_return_size_drm_amdgpu_info_9414 return_size drm_amdgpu_info 0 9414 NULL
147160 +enable_so_r592_read_fifo_pio_fndecl_9421 r592_read_fifo_pio fndecl 3 9421 NULL nohasharray
147161 +enable_so_rocker_dma_ring_create_fndecl_9421 rocker_dma_ring_create fndecl 3 9421 &enable_so_r592_read_fifo_pio_fndecl_9421
147162 +enable_so_dlen_garp_attr_9422 dlen garp_attr 0 9422 NULL
147163 +enable_so_dgap_config_get_num_prts_fndecl_9435 dgap_config_get_num_prts fndecl 0 9435 NULL
147164 +enable_so_ext4_restore_inline_data_fndecl_9436 ext4_restore_inline_data fndecl 5 9436 NULL
147165 +enable_so_parent_btrfs_delayed_data_ref_9437 parent btrfs_delayed_data_ref 0 9437 NULL
147166 +enable_so_height_stk1160_9446 height stk1160 0 9446 NULL nohasharray
147167 +enable_so_atm_get_addr_fndecl_9446 atm_get_addr fndecl 3 9446 &enable_so_height_stk1160_9446
147168 +enable_so_mtdchar_readoob_fndecl_9459 mtdchar_readoob fndecl 4 9459 NULL
147169 +enable_so_si21_writeregs_fndecl_9460 si21_writeregs fndecl 4 9460 NULL
147170 +enable_so_value_vmx_msr_entry_9464 value vmx_msr_entry 0 9464 NULL
147171 +enable_so_async_wrap_skb_fndecl_9465 async_wrap_skb fndecl 0 9465 NULL
147172 +enable_so_kvm_mmu_page_fault_fndecl_9470 kvm_mmu_page_fault fndecl 2 9470 NULL
147173 +enable_so_io_bitmap_b_vmcs12_9472 io_bitmap_b vmcs12 0 9472 NULL
147174 +enable_so_max_qps_ntb_transport_9479 max_qps ntb_transport 0 9479 NULL
147175 +enable_so_metadataBitmapFileLoc_metadataPartitionMap_9480 metadataBitmapFileLoc metadataPartitionMap 0 9480 NULL
147176 +enable_so_snapshot_status_fndecl_9483 snapshot_status fndecl 5 9483 NULL
147177 +enable_so_i_crypt_policy_flags_ext4_inode_info_9500 i_crypt_policy_flags ext4_inode_info 0 9500 NULL
147178 +enable_so_txPower_ConfigRid_9502 txPower ConfigRid 0 9502 NULL nohasharray
147179 +enable_so_qnx6_long_match_fndecl_9502 qnx6_long_match fndecl 0 9502 &enable_so_txPower_ConfigRid_9502
147180 +enable_so_bpp_mcam_format_struct_9503 bpp mcam_format_struct 0 9503 NULL
147181 +enable_so_maxdev_vardecl_slcan_c_9507 maxdev vardecl_slcan.c 0 9507 NULL
147182 +enable_so_zlib_updatewindow_fndecl_9508 zlib_updatewindow fndecl 2 9508 NULL
147183 +enable_so_fillonedir_fndecl_9511 fillonedir fndecl 3 9511 NULL
147184 +enable_so_s_clustersize_bits_ocfs2_super_block_9516 s_clustersize_bits ocfs2_super_block 0 9516 NULL nohasharray
147185 +enable_so_zero_disk_area_fndecl_9516 zero_disk_area fndecl 2 9516 &enable_so_s_clustersize_bits_ocfs2_super_block_9516
147186 +enable_so_pcm512x_find_sck_fndecl_9522 pcm512x_find_sck fndecl 0 9522 NULL
147187 +enable_so_kdb_max_commands_vardecl_kdb_main_c_9529 kdb_max_commands vardecl_kdb_main.c 0 9529 NULL
147188 +enable_so_cap_width_usbtv_norm_params_9538 cap_width usbtv_norm_params 0 9538 NULL
147189 +enable_so_nilfs_mdt_forget_block_fndecl_9543 nilfs_mdt_forget_block fndecl 2 9543 NULL
147190 +enable_so___bio_alloc_fndecl_9552 __bio_alloc fndecl 2 9552 NULL
147191 +enable_so_display_byte_stride_vivid_dev_9554 display_byte_stride vivid_dev 0 9554 NULL
147192 +enable_so_rx_skb_reserve_vardecl_he_c_9559 rx_skb_reserve vardecl_he.c 0 9559 NULL
147193 +enable_so_glocont_endpoint_keyspan_device_details_9560 glocont_endpoint keyspan_device_details 0 9560 NULL
147194 +enable_so_p9_client_statsize_fndecl_9568 p9_client_statsize fndecl 0 9568 NULL
147195 +enable_so_cluster_slot_bitmap_9571 cluster_slot bitmap 0 9571 NULL
147196 +enable_so_page_order_cas_9572 page_order cas 0 9572 NULL
147197 +enable_so_width_drm_mode_create_dumb_9575 width drm_mode_create_dumb 0 9575 NULL
147198 +enable_so_sctp_setsockopt_auth_chunk_fndecl_9576 sctp_setsockopt_auth_chunk fndecl 3 9576 NULL
147199 +enable_so_mpage_add_bh_to_extent_fndecl_9577 mpage_add_bh_to_extent fndecl 2 9577 NULL
147200 +enable_so_mode_buf_len_udl_device_9578 mode_buf_len udl_device 0 9578 NULL nohasharray
147201 +enable_so_of_gpio_named_count_fndecl_9578 of_gpio_named_count fndecl 0 9578 &enable_so_mode_buf_len_udl_device_9578
147202 +enable_so_cfg80211_rx_mgmt_fndecl_9583 cfg80211_rx_mgmt fndecl 5 9583 NULL
147203 +enable_so_address_space_cmos_rtc_board_info_9586 address_space cmos_rtc_board_info 0 9586 NULL
147204 +enable_so_crtc_vblank_start_drm_display_mode_9587 crtc_vblank_start drm_display_mode 0 9587 NULL
147205 +enable_so_wm5102_set_fll_fndecl_9596 wm5102_set_fll fndecl 4-5 9596 NULL nohasharray
147206 +enable_so_get_kobj_path_length_fndecl_9596 get_kobj_path_length fndecl 0 9596 &enable_so_wm5102_set_fll_fndecl_9596
147207 +enable_so_writerids_fndecl_9601 writerids fndecl 0 9601 NULL
147208 +enable_so_skd_max_pass_thru_vardecl_skd_main_c_9608 skd_max_pass_thru vardecl_skd_main.c 0 9608 NULL
147209 +enable_so_free_bg_ocfs2_cached_block_free_9619 free_bg ocfs2_cached_block_free 0 9619 NULL
147210 +enable_so_hpfs_ea_write_fndecl_9626 hpfs_ea_write fndecl 5-4-2 9626 NULL
147211 +enable_so_copy_to_iter_fndecl_9638 copy_to_iter fndecl 2 9638 NULL
147212 +enable_so_num_nodes_hdac_device_9647 num_nodes hdac_device 0 9647 NULL
147213 +enable_so_dma_tx_size_stmmac_priv_9653 dma_tx_size stmmac_priv 0 9653 NULL
147214 +enable_so_ieee80211_if_fmt_dropped_frames_no_route_fndecl_9655 ieee80211_if_fmt_dropped_frames_no_route fndecl 3 9655 NULL
147215 +enable_so_SFBL_brcms_c_info_9663 SFBL brcms_c_info 0 9663 NULL
147216 +enable_so_hugetlb_cow_fndecl_9665 hugetlb_cow fndecl 3 9665 NULL
147217 +enable_so_hr_slots_per_page_o2hb_region_9668 hr_slots_per_page o2hb_region 0 9668 NULL
147218 +enable_so_arizona_set_fll_refclk_fndecl_9670 arizona_set_fll_refclk fndecl 3 9670 NULL
147219 +enable_so_sctp_setsockopt_rtoinfo_fndecl_9678 sctp_setsockopt_rtoinfo fndecl 3 9678 NULL
147220 +enable_so_uaddr_ivtv_dma_page_info_9683 uaddr ivtv_dma_page_info 0 9683 NULL
147221 +enable_so_scrub_pages_for_parity_fndecl_9684 scrub_pages_for_parity fndecl 3-2-4 9684 NULL
147222 +enable_so_di_height_logfs_disk_inode_9686 di_height logfs_disk_inode 0 9686 NULL nohasharray
147223 +enable_so_read_packet_length_lego_usb_tower_9686 read_packet_length lego_usb_tower 0 9686 &enable_so_di_height_logfs_disk_inode_9686
147224 +enable_so_xresstep_svga_fb_format_9690 xresstep svga_fb_format 0 9690 NULL
147225 +enable_so_max_num_pmkids_wiphy_9691 max_num_pmkids wiphy 0 9691 NULL
147226 +enable_so_adp5589_build_gpiomap_fndecl_9697 adp5589_build_gpiomap fndecl 0 9697 NULL
147227 +enable_so_payload_len_cfg80211_wowlan_tcp_9706 payload_len cfg80211_wowlan_tcp 0 9706 NULL nohasharray
147228 +enable_so_tty_insert_flip_string_flags_fndecl_9706 tty_insert_flip_string_flags fndecl 4 9706 &enable_so_payload_len_cfg80211_wowlan_tcp_9706
147229 +enable_so_sr_write_async_fndecl_9707 sr_write_async fndecl 3 9707 NULL
147230 +enable_so_affs_direct_IO_fndecl_9712 affs_direct_IO fndecl 3 9712 NULL
147231 +enable_so_xprt_rdma_max_inline_write_vardecl_transport_c_9715 xprt_rdma_max_inline_write vardecl_transport.c 0 9715 NULL
147232 +enable_so_page_size_dataflash_9722 page_size dataflash 0 9722 NULL nohasharray
147233 +enable_so_tx_ringsz_alx_priv_9722 tx_ringsz alx_priv 0 9722 &enable_so_page_size_dataflash_9722
147234 +enable_so_ieee80211_build_preq_ies_band_fndecl_9724 ieee80211_build_preq_ies_band fndecl 0 9724 NULL nohasharray
147235 +enable_so_start_bidx_of_node_fndecl_9724 start_bidx_of_node fndecl 1 9724 &enable_so_ieee80211_build_preq_ies_band_fndecl_9724
147236 +enable_so_samsung_clk_sleep_init_fndecl_9743 samsung_clk_sleep_init fndecl 3 9743 NULL
147237 +enable_so_blkdev_fsync_fndecl_9745 blkdev_fsync fndecl 2 9745 NULL
147238 +enable_so_bnx2x_mcast_handle_current_cmd_fndecl_9747 bnx2x_mcast_handle_current_cmd fndecl 0 9747 NULL
147239 +enable_so___alloc_bootmem_fndecl_9753 __alloc_bootmem fndecl 2-1 9753 NULL
147240 +enable_so_il4965_hwrate_to_plcp_idx_fndecl_9755 il4965_hwrate_to_plcp_idx fndecl 1 9755 NULL
147241 +enable_so_hbuf_free_slots_mei_hw_ops_9760 hbuf_free_slots mei_hw_ops 0 9760 NULL
147242 +enable_so_buffer_length_floppy_raw_cmd_9763 buffer_length floppy_raw_cmd 0 9763 NULL nohasharray
147243 +enable_so_hidraw_write_fndecl_9763 hidraw_write fndecl 3 9763 &enable_so_buffer_length_floppy_raw_cmd_9763
147244 +enable_so_stat_ethoc_bd_9775 stat ethoc_bd 0 9775 NULL nohasharray
147245 +enable_so_dvb_ringbuffer_write_fndecl_9775 dvb_ringbuffer_write fndecl 0-3 9775 &enable_so_stat_ethoc_bd_9775
147246 +enable_so_vmlfb_alloc_vram_area_fndecl_9776 vmlfb_alloc_vram_area fndecl 2 9776 NULL
147247 +enable_so_tool_mask_read_fndecl_9780 tool_mask_read fndecl 3 9780 NULL
147248 +enable_so_highest_inum_ubifs_info_9785 highest_inum ubifs_info 0 9785 NULL
147249 +enable_so_valuelen_xfs_da_args_9786 valuelen xfs_da_args 0 9786 NULL
147250 +enable_so_irda_recvmsg_dgram_fndecl_9788 irda_recvmsg_dgram fndecl 3 9788 NULL
147251 +enable_so_vci_atm_vcc_9797 vci atm_vcc 0 9797 NULL
147252 +enable_so_aper_base_agp_kern_info_9798 aper_base agp_kern_info 0 9798 NULL
147253 +enable_so_get_max_inline_xattr_value_size_fndecl_9801 get_max_inline_xattr_value_size fndecl 0 9801 NULL
147254 +enable_so_rq_callsize_rpc_rqst_9803 rq_callsize rpc_rqst 0 9803 NULL
147255 +enable_so_osst_write_fndecl_9806 osst_write fndecl 3 9806 NULL
147256 +enable_so_in_size_ViceIoctl_9808 in_size ViceIoctl 0 9808 NULL nohasharray
147257 +enable_so_usbvision_read_fndecl_9808 usbvision_read fndecl 3 9808 &enable_so_in_size_ViceIoctl_9808
147258 +enable_so_num_private_args_iw_handler_def_9810 num_private_args iw_handler_def 0 9810 NULL
147259 +enable_so_update_backref_node_fndecl_9811 update_backref_node fndecl 3 9811 NULL
147260 +enable_so_pathmtu_sctp_association_9815 pathmtu sctp_association 0 9815 NULL
147261 +enable_so_pref_erase_mmc_card_9824 pref_erase mmc_card 0 9824 NULL
147262 +enable_so_flags_rtl8187se_rx_desc_9826 flags rtl8187se_rx_desc 0 9826 NULL
147263 +enable_so_sectors_r10bio_9834 sectors r10bio 0 9834 NULL
147264 +enable_so_msg_length_sms_msg_hdr_9842 msg_length sms_msg_hdr 0 9842 NULL
147265 +enable_so_complete_read_super_fndecl_9844 complete_read_super fndecl 3 9844 NULL
147266 +enable_so_vlan_id_rlb_client_info_9858 vlan_id rlb_client_info 0 9858 NULL
147267 +enable_so_read_fiforeg_fndecl_9859 read_fiforeg fndecl 2 9859 NULL nohasharray
147268 +enable_so_nr_of_buckets_v4l2_ctrl_handler_9859 nr_of_buckets v4l2_ctrl_handler 0 9859 &enable_so_read_fiforeg_fndecl_9859
147269 +enable_so_ext3_sync_file_fndecl_9860 ext3_sync_file fndecl 2 9860 NULL
147270 +enable_so_videobuf_read_one_fndecl_9862 videobuf_read_one fndecl 3 9862 NULL
147271 +enable_so_get_img_height_s5p_mfc_hw_ops_9869 get_img_height s5p_mfc_hw_ops 0 9869 NULL
147272 +enable_so_usnic_ib_dump_vf_fndecl_9876 usnic_ib_dump_vf fndecl 3 9876 NULL
147273 +enable_so_xfs_seek_hole_data_fndecl_9883 xfs_seek_hole_data fndecl 2 9883 NULL
147274 +enable_so_emulator_set_cr_fndecl_9890 emulator_set_cr fndecl 3 9890 NULL
147275 +enable_so_copy_from_user_nmi_fndecl_9899 copy_from_user_nmi fndecl 3 9899 NULL
147276 +enable_so_ovfx2_pkt_scan_fndecl_9901 ovfx2_pkt_scan fndecl 3 9901 NULL
147277 +enable_so_tx_ring_size_sky2_port_9902 tx_ring_size sky2_port 0 9902 NULL
147278 +enable_so_nkeys_tc_u32_sel_9905 nkeys tc_u32_sel 0 9905 NULL
147279 +enable_so_prism54_wpa_bss_ie_add_fndecl_9910 prism54_wpa_bss_ie_add fndecl 4 9910 NULL
147280 +enable_so_stat_ddb_output_9913 stat ddb_output 0 9913 NULL
147281 +enable_so_alloc_event_waiters_fndecl_9914 alloc_event_waiters fndecl 1 9914 NULL
147282 +enable_so_ep_in_ksdazzle_cb_9917 ep_in ksdazzle_cb 0 9917 NULL
147283 +enable_so___ceph_do_getattr_fndecl_9918 __ceph_do_getattr fndecl 0 9918 NULL nohasharray
147284 +enable_so_xfer_secondary_pool_fndecl_9918 xfer_secondary_pool fndecl 2 9918 &enable_so___ceph_do_getattr_fndecl_9918
147285 +enable_so_vbe_modes_cnt_uvesafb_par_9928 vbe_modes_cnt uvesafb_par 0 9928 NULL
147286 +enable_so_audit_log_n_string_fndecl_9930 audit_log_n_string fndecl 3 9930 NULL
147287 +enable_so_len_load_info_9931 len load_info 0 9931 NULL
147288 +enable_so_wb_pgbase_nfs_page_9940 wb_pgbase nfs_page 0 9940 NULL nohasharray
147289 +enable_so_object_name_len_ncp_objectname_ioctl_9940 object_name_len ncp_objectname_ioctl 0 9940 &enable_so_wb_pgbase_nfs_page_9940
147290 +enable_so_num_chan_pl330_config_9943 num_chan pl330_config 0 9943 NULL
147291 +enable_so_buffer_len_bnad_debug_info_9948 buffer_len bnad_debug_info 0 9948 NULL
147292 +enable_so_ath6kl_wmi_send_probe_response_cmd_fndecl_9955 ath6kl_wmi_send_probe_response_cmd fndecl 6 9955 NULL
147293 +enable_so_utf16s_to_utf8s_fndecl_9956 utf16s_to_utf8s fndecl 0 9956 NULL nohasharray
147294 +enable_so_lu_buf_check_and_grow_fndecl_9956 lu_buf_check_and_grow fndecl 2 9956 &enable_so_utf16s_to_utf8s_fndecl_9956
147295 +enable_so_shmem_pwrite_slow_fndecl_9966 shmem_pwrite_slow fndecl 2-3 9966 NULL
147296 +enable_so_rs_pretty_print_rate_fndecl_9980 rs_pretty_print_rate fndecl 2 9980 NULL nohasharray
147297 +enable_so_pg_vec_len_netlink_ring_9980 pg_vec_len netlink_ring 0 9980 &enable_so_rs_pretty_print_rate_fndecl_9980
147298 +enable_so_count_tun_filter_9984 count tun_filter 0 9984 NULL
147299 +enable_so_start_extent_buffer_9986 start extent_buffer 0 9986 NULL
147300 +enable_so_map_sg_ib_dma_mapping_ops_9988 map_sg ib_dma_mapping_ops 0 9988 NULL
147301 +enable_so_hugepage_add_anon_rmap_fndecl_9989 hugepage_add_anon_rmap fndecl 3 9989 NULL
147302 +enable_so_nilfs_insert_inode_locked_fndecl_9991 nilfs_insert_inode_locked fndecl 3 9991 NULL
147303 +enable_so_dm_rh_region_to_sector_fndecl_9992 dm_rh_region_to_sector fndecl 2 9992 NULL
147304 +enable_so_i2c_wr_max_tda10071_config_9993 i2c_wr_max tda10071_config 0 9993 NULL
147305 +enable_so_setifbcnt_fndecl_10012 setifbcnt fndecl 3 10012 NULL
147306 +enable_so_nouveau_sgdma_create_ttm_fndecl_10022 nouveau_sgdma_create_ttm fndecl 2 10022 NULL
147307 +enable_so_anc_download_size_wm2000_priv_10025 anc_download_size wm2000_priv 0 10025 NULL nohasharray
147308 +enable_so_hash_netportnet4_expire_fndecl_10025 hash_netportnet4_expire fndecl 4 10025 &enable_so_anc_download_size_wm2000_priv_10025
147309 +enable_so_skb_append_datato_frags_fndecl_10028 skb_append_datato_frags fndecl 5 10028 NULL
147310 +enable_so_add_dataflash_otp_fndecl_10031 add_dataflash_otp fndecl 4-3 10031 NULL
147311 +enable_so___cookie_v6_check_fndecl_10035 __cookie_v6_check fndecl 0 10035 NULL
147312 +enable_so_get_img_width_s5p_mfc_hw_ops_10036 get_img_width s5p_mfc_hw_ops 0 10036 NULL
147313 +enable_so_mwifiex_send_tdls_action_frame_fndecl_10044 mwifiex_send_tdls_action_frame fndecl 7 10044 NULL
147314 +enable_so_bd_iov_count_ptlrpc_bulk_desc_10045 bd_iov_count ptlrpc_bulk_desc 0 10045 NULL
147315 +enable_so_sisusbcon_scroll_fndecl_10048 sisusbcon_scroll fndecl 5-2-3 10048 NULL
147316 +enable_so_send_buf_size_netvsc_device_10051 send_buf_size netvsc_device 0 10051 NULL
147317 +enable_so_usbat_write_blocks_fndecl_10053 usbat_write_blocks fndecl 3 10053 NULL nohasharray
147318 +enable_so_command_file_write_fndecl_10053 command_file_write fndecl 3 10053 &enable_so_usbat_write_blocks_fndecl_10053
147319 +enable_so_hfsplus_btree_open_fndecl_10055 hfsplus_btree_open fndecl 2 10055 NULL
147320 +enable_so_musb_urb_dequeue_fndecl_10056 musb_urb_dequeue fndecl 3 10056 NULL
147321 +enable_so_dm_bufio_prefetch_fndecl_10057 dm_bufio_prefetch fndecl 2 10057 NULL
147322 +enable_so_rx_buf_sz_sis190_private_10068 rx_buf_sz sis190_private 0 10068 NULL nohasharray
147323 +enable_so_uvc_simplify_fraction_fndecl_10068 uvc_simplify_fraction fndecl 3 10068 &enable_so_rx_buf_sz_sis190_private_10068
147324 +enable_so_max_pages_fuse_req_10069 max_pages fuse_req 0 10069 NULL
147325 +enable_so_ocfs2_refcount_xattr_tree_rec_fndecl_10077 ocfs2_refcount_xattr_tree_rec fndecl 3 10077 NULL
147326 +enable_so_outlen_write_fndecl_10093 outlen_write fndecl 3 10093 NULL
147327 +enable_so_msix_num_bnad_10096 msix_num bnad 0 10096 NULL
147328 +enable_so_em28xx_init_usb_xfer_fndecl_10106 em28xx_init_usb_xfer fndecl 5-6-4 10106 NULL
147329 +enable_so__regmap_raw_multi_reg_write_fndecl_10107 _regmap_raw_multi_reg_write fndecl 3 10107 NULL
147330 +enable_so_trace_parser_get_init_fndecl_10112 trace_parser_get_init fndecl 2 10112 NULL
147331 +enable_so_req_sz__MPT_ADAPTER_10113 req_sz _MPT_ADAPTER 0 10113 NULL
147332 +enable_so_tfms_count_crypt_config_10114 tfms_count crypt_config 0 10114 NULL
147333 +enable_so_uvc_video_encode_data_fndecl_10117 uvc_video_encode_data fndecl 0-4 10117 NULL
147334 +enable_so_len_pda_entry_10121 len pda_entry 0 10121 NULL
147335 +enable_so_data_dma_usbtouch_usb_10124 data_dma usbtouch_usb 0 10124 NULL nohasharray
147336 +enable_so_MaxBlocksPerCommand_DAC960_Controller_10124 MaxBlocksPerCommand DAC960_Controller 0 10124 &enable_so_data_dma_usbtouch_usb_10124
147337 +enable_so_parent_overlap_rbd_device_10127 parent_overlap rbd_device 0 10127 NULL nohasharray
147338 +enable_so_max_hw_sectors_nvme_dev_10127 max_hw_sectors nvme_dev 0 10127 &enable_so_parent_overlap_rbd_device_10127
147339 +enable_so_max_bu_buf_len_ubifs_info_10130 max_bu_buf_len ubifs_info 0 10130 NULL
147340 +enable_so_ieee80211_rx_mgmt_auth_fndecl_10133 ieee80211_rx_mgmt_auth fndecl 3 10133 NULL
147341 +enable_so_vblank___fb_timings_10135 vblank __fb_timings 0 10135 NULL
147342 +enable_so_objectid_btrfs_ioctl_ino_lookup_args_10136 objectid btrfs_ioctl_ino_lookup_args 0 10136 NULL
147343 +enable_so_xprt_rdma_allocate_fndecl_10143 xprt_rdma_allocate fndecl 2 10143 NULL
147344 +enable_so_ns_cno_the_nilfs_10144 ns_cno the_nilfs 0 10144 NULL nohasharray
147345 +enable_so_sg_segs_osst_buffer_10144 sg_segs osst_buffer 0 10144 &enable_so_ns_cno_the_nilfs_10144
147346 +enable_so_ldebugfs_fid_space_seq_write_fndecl_10152 ldebugfs_fid_space_seq_write fndecl 3 10152 NULL
147347 +enable_so__sp2d_max_pg_fndecl_10157 _sp2d_max_pg fndecl 0 10157 NULL
147348 +enable_so_bna_enet_mtu_get_fndecl_10160 bna_enet_mtu_get fndecl 0 10160 NULL
147349 +enable_so_mp_ioapic_pin_count_fndecl_10162 mp_ioapic_pin_count fndecl 0 10162 NULL
147350 +enable_so_error_block_length_acpi_hest_generic_10170 error_block_length acpi_hest_generic 0 10170 NULL
147351 +enable_so_cluster_size_msdos_sb_info_10172 cluster_size msdos_sb_info 0 10172 NULL
147352 +enable_so_s_inopf_ufs_sb_private_info_10174 s_inopf ufs_sb_private_info 0 10174 NULL
147353 +enable_so_read_buffer_size_vardecl_legousbtower_c_10184 read_buffer_size vardecl_legousbtower.c 0 10184 NULL
147354 +enable_so_transport_alloc_session_tags_fndecl_10186 transport_alloc_session_tags fndecl 2-3 10186 NULL
147355 +enable_so_xfrm6_init_path_fndecl_10187 xfrm6_init_path fndecl 3 10187 NULL
147356 +enable_so_size_erst_erange_10188 size erst_erange 0 10188 NULL
147357 +enable_so_opera1_xilinx_rw_fndecl_10190 opera1_xilinx_rw fndecl 5 10190 NULL
147358 +enable_so_PagesPerBlock_ms_lib_ctrl_10191 PagesPerBlock ms_lib_ctrl 0 10191 NULL
147359 +enable_so_tx_buf_size_mwifiex_adapter_10198 tx_buf_size mwifiex_adapter 0 10198 NULL
147360 +enable_so_wil_addba_rx_request_fndecl_10219 wil_addba_rx_request fndecl 4 10219 NULL
147361 +enable_so_rds_message_map_pages_fndecl_10220 rds_message_map_pages fndecl 2 10220 NULL
147362 +enable_so_ext4_xattr_set_handle_fndecl_10221 ext4_xattr_set_handle fndecl 6 10221 NULL
147363 +enable_so_alg_setkey_fndecl_10222 alg_setkey fndecl 3 10222 NULL
147364 +enable_so_txLifetime_ConfigRid_10224 txLifetime ConfigRid 0 10224 NULL
147365 +enable_so_next_id_hfs_sb_info_10229 next_id hfs_sb_info 0 10229 NULL
147366 +enable_so_qlcnic_set_sds_ring_count_fndecl_10232 qlcnic_set_sds_ring_count fndecl 2 10232 NULL
147367 +enable_so_req_pages_pvscsi_adapter_10237 req_pages pvscsi_adapter 0 10237 NULL
147368 +enable_so_uarc_size_mthca_uar_table_10238 uarc_size mthca_uar_table 0 10238 NULL
147369 +enable_so_q1_depth_bna_rx_config_10241 q1_depth bna_rx_config 0 10241 NULL
147370 +enable_so_smallpageshift_sddr55_card_info_10244 smallpageshift sddr55_card_info 0 10244 NULL
147371 +enable_so_f_adc_msi2500_state_10250 f_adc msi2500_state 0 10250 NULL
147372 +enable_so_filelayout_get_dense_offset_fndecl_10253 filelayout_get_dense_offset fndecl 0 10253 NULL
147373 +enable_so_agg_buf_sz_vardecl_r8152_c_10254 agg_buf_sz vardecl_r8152.c 0 10254 NULL
147374 +enable_so_nilfs_sufile_do_scrap_fndecl_10257 nilfs_sufile_do_scrap fndecl 2 10257 NULL
147375 +enable_so_fb_get_hblank_by_dclk_fndecl_10269 fb_get_hblank_by_dclk fndecl 1-2 10269 NULL nohasharray
147376 +enable_so_dn_sendmsg_fndecl_10269 dn_sendmsg fndecl 3 10269 &enable_so_fb_get_hblank_by_dclk_fndecl_10269
147377 +enable_so_rxd_process_rxd_ops_10271 rxd_process rxd_ops 0 10271 NULL
147378 +enable_so_vmci_host_setup_notify_fndecl_10273 vmci_host_setup_notify fndecl 2 10273 NULL
147379 +enable_so_num_vfs_i40e_hw_capabilities_10302 num_vfs i40e_hw_capabilities 0 10302 NULL
147380 +enable_so_scsi_vpd_inquiry_fndecl_10315 scsi_vpd_inquiry fndecl 4-0 10315 NULL
147381 +enable_so_dmfs_high_rate_qpn_range_mlx4_caps_10318 dmfs_high_rate_qpn_range mlx4_caps 0 10318 NULL
147382 +enable_so_num_mnt_opts_security_mnt_opts_10327 num_mnt_opts security_mnt_opts 0 10327 NULL
147383 +enable_so_blk_stack_limits_fndecl_10332 blk_stack_limits fndecl 3 10332 NULL
147384 +enable_so_dev_mem_write_fndecl_10335 dev_mem_write fndecl 3 10335 NULL
147385 +enable_so_down_bplus_internal_node_10336 down bplus_internal_node 0 10336 NULL
147386 +enable_so_boot_max_nr_grant_frames_vardecl_grant_table_c_10337 boot_max_nr_grant_frames vardecl_grant-table.c 0 10337 NULL
147387 +enable_so_len_xdr_buf_10338 len xdr_buf 0 10338 NULL
147388 +enable_so_cids_per_blk_cnic_local_10342 cids_per_blk cnic_local 0 10342 NULL
147389 +enable_so_nr_possible_cpus_uv_blade_info_10350 nr_possible_cpus uv_blade_info 0 10350 NULL
147390 +enable_so_ssid_len_libipw_network_10376 ssid_len libipw_network 0 10376 NULL
147391 +enable_so_decomp_windowBits_zlib_ctx_10381 decomp_windowBits zlib_ctx 0 10381 NULL
147392 +enable_so_mc_saved_count_mc_saved_data_10384 mc_saved_count mc_saved_data 0 10384 NULL
147393 +enable_so_cxgbi_ddp_reserve_fndecl_10392 cxgbi_ddp_reserve fndecl 4 10392 NULL
147394 +enable_so_max_beb_per1024_mtd_dev_param_10395 max_beb_per1024 mtd_dev_param 0 10395 NULL
147395 +enable_so_tg3_run_loopback_fndecl_10398 tg3_run_loopback fndecl 2 10398 NULL
147396 +enable_so_snd_midi_channel_init_set_fndecl_10399 snd_midi_channel_init_set fndecl 1 10399 NULL
147397 +enable_so_length_p_header95_10401 length p_header95 0 10401 NULL
147398 +enable_so_romfs_blk_strnlen_fndecl_10402 romfs_blk_strnlen fndecl 3-2 10402 NULL
147399 +enable_so_xfs_btree_reada_bufs_fndecl_10403 xfs_btree_reada_bufs fndecl 4-3-2 10403 NULL
147400 +enable_so_num_data_channels_st_sensor_data_10404 num_data_channels st_sensor_data 0 10404 NULL
147401 +enable_so__osd_req_sizeof_alist_header_fndecl_10405 _osd_req_sizeof_alist_header fndecl 0 10405 NULL nohasharray
147402 +enable_so_num_vss_cfgs_wm8994_pdata_10405 num_vss_cfgs wm8994_pdata 0 10405 &enable_so__osd_req_sizeof_alist_header_fndecl_10405
147403 +enable_so_zap_vma_ptes_fndecl_10406 zap_vma_ptes fndecl 3-2 10406 NULL
147404 +enable_so_log2sharesize_adfs_discrecord_10408 log2sharesize adfs_discrecord 0 10408 NULL nohasharray
147405 +enable_so_u_memcpya_fndecl_10408 u_memcpya fndecl 2-3 10408 &enable_so_log2sharesize_adfs_discrecord_10408
147406 +enable_so_off_xtsplit_10412 off xtsplit 0 10412 NULL
147407 +enable_so_max_ctrl_size_ims_pcu_10413 max_ctrl_size ims_pcu 0 10413 NULL
147408 +enable_so_nent_mlx4_eq_10414 nent mlx4_eq 0 10414 NULL
147409 +enable_so_xfs_iget_cache_miss_fndecl_10416 xfs_iget_cache_miss fndecl 4 10416 NULL
147410 +enable_so_byte_count_iwl_rx_mpdu_res_start_10437 byte_count iwl_rx_mpdu_res_start 0 10437 NULL
147411 +enable_so_alloc_switch_ctx_fndecl_10438 alloc_switch_ctx fndecl 2 10438 NULL
147412 +enable_so_NumberOfPhyBlock_ms_lib_ctrl_10443 NumberOfPhyBlock ms_lib_ctrl 0 10443 NULL
147413 +enable_so_wrfilled_cyberjack_private_10444 wrfilled cyberjack_private 0 10444 NULL
147414 +enable_so_p9dirent_read_fndecl_10450 p9dirent_read fndecl 3-0 10450 NULL
147415 +enable_so_intel_ddi_calc_wrpll_link_fndecl_10451 intel_ddi_calc_wrpll_link fndecl 0 10451 NULL
147416 +enable_so_ext4_write_inline_data_end_fndecl_10452 ext4_write_inline_data_end fndecl 0-4 10452 NULL
147417 +enable_so_vxlan_change_mtu_fndecl_10464 vxlan_change_mtu fndecl 2 10464 NULL
147418 +enable_so_wNdpOutDivisor_usb_cdc_ncm_ntb_parameters_10467 wNdpOutDivisor usb_cdc_ncm_ntb_parameters 0 10467 NULL nohasharray
147419 +enable_so_notesize_fndecl_10467 notesize fndecl 0 10467 &enable_so_wNdpOutDivisor_usb_cdc_ncm_ntb_parameters_10467
147420 +enable_so_usblp_ioctl_fndecl_10472 usblp_ioctl fndecl 2 10472 NULL
147421 +enable_so_nilfs_btree_assign_fndecl_10473 nilfs_btree_assign fndecl 3 10473 NULL
147422 +enable_so_out_min_chans_snd_card_asihpi_10490 out_min_chans snd_card_asihpi 0 10490 NULL
147423 +enable_so_periods_snd_pcm_oss_runtime_10500 periods snd_pcm_oss_runtime 0 10500 NULL
147424 +enable_so_ext4_ext_direct_IO_fndecl_10503 ext4_ext_direct_IO fndecl 3 10503 NULL nohasharray
147425 +enable_so_xfs_bmap_punch_delalloc_range_fndecl_10503 xfs_bmap_punch_delalloc_range fndecl 2 10503 &enable_so_ext4_ext_direct_IO_fndecl_10503
147426 +enable_so_cidlen_he_rbrq_10504 cidlen he_rbrq 0 10504 NULL
147427 +enable_so_cr_namelen_nfsd4_create_10516 cr_namelen nfsd4_create 0 10516 NULL
147428 +enable_so_posix_acl_from_xattr_fndecl_10527 posix_acl_from_xattr fndecl 3 10527 NULL nohasharray
147429 +enable_so_sd_alloc_ctl_entry_fndecl_10527 sd_alloc_ctl_entry fndecl 1 10527 &enable_so_posix_acl_from_xattr_fndecl_10527
147430 +enable_so_channels_gk104_fifo_impl_10531 channels gk104_fifo_impl 0 10531 NULL
147431 +enable_so_cros_ec_prepare_tx_fndecl_10539 cros_ec_prepare_tx fndecl 0 10539 NULL
147432 +enable_so_logical_scrub_page_10540 logical scrub_page 0 10540 NULL
147433 +enable_so_isofs_get_last_session_fndecl_10547 isofs_get_last_session fndecl 0 10547 NULL
147434 +enable_so_read_cis_cache_fndecl_10548 read_cis_cache fndecl 4 10548 NULL
147435 +enable_so_nv_change_mtu_fndecl_10551 nv_change_mtu fndecl 2 10551 NULL
147436 +enable_so_wm_adsp_read_algs_fndecl_10552 wm_adsp_read_algs fndecl 4 10552 NULL
147437 +enable_so_new_leaf_fndecl_10553 new_leaf fndecl 3 10553 NULL
147438 +enable_so_tcf_csum_ipv6_icmp_fndecl_10562 tcf_csum_ipv6_icmp fndecl 3 10562 NULL
147439 +enable_so_hash_dx_hash_info_10563 hash dx_hash_info 0 10563 NULL
147440 +enable_so_lpfc_present_cpu_vardecl_10567 lpfc_present_cpu vardecl 0 10567 NULL
147441 +enable_so_num_counters_fixed_x86_pmu_10570 num_counters_fixed x86_pmu 0 10570 NULL
147442 +enable_so_cnt_rsxx_reg_access_10573 cnt rsxx_reg_access 0 10573 NULL
147443 +enable_so_sb_bsize_shift_gfs2_sb_host_10575 sb_bsize_shift gfs2_sb_host 0 10575 NULL
147444 +enable_so_initialized_size__ntfs_inode_10576 initialized_size _ntfs_inode 0 10576 NULL
147445 +enable_so_fuse_fsync_fndecl_10582 fuse_fsync fndecl 2 10582 NULL
147446 +enable_so_op_bytes_x86_emulate_ctxt_10583 op_bytes x86_emulate_ctxt 0 10583 NULL
147447 +enable_so_buf_idx_mei_cl_cb_10585 buf_idx mei_cl_cb 0 10585 NULL
147448 +enable_so_size_ib_uverbs_flow_attr_10597 size ib_uverbs_flow_attr 0 10597 NULL
147449 +enable_so_max_frame_size_atl1_hw_10601 max_frame_size atl1_hw 0 10601 NULL
147450 +enable_so_num_amd_northbridge_info_10604 num amd_northbridge_info 0 10604 NULL
147451 +enable_so_uremainder64_st_cmdstatus_10606 uremainder64 st_cmdstatus 0 10606 NULL
147452 +enable_so_inst_size_il4965_firmware_pieces_10607 inst_size il4965_firmware_pieces 0 10607 NULL
147453 +enable_so_epp_free_pages_ptlrpc_enc_page_pool_10614 epp_free_pages ptlrpc_enc_page_pool 0 10614 NULL
147454 +enable_so_ext4_trim_all_free_fndecl_10621 ext4_trim_all_free fndecl 4-2 10621 NULL
147455 +enable_so_rfs_ipg_rx_10623 rfs ipg_rx 0 10623 NULL
147456 +enable_so___probe_kernel_write_fndecl_10625 __probe_kernel_write fndecl 3 10625 NULL nohasharray
147457 +enable_so_lch_count_omap_dma_dev_attr_10625 lch_count omap_dma_dev_attr 0 10625 &enable_so___probe_kernel_write_fndecl_10625
147458 +enable_so_scan_bitmap_block_fndecl_10627 scan_bitmap_block fndecl 4-0-2 10627 NULL
147459 +enable_so_pkt_alignment_factor_rndis_initialize_complete_10633 pkt_alignment_factor rndis_initialize_complete 0 10633 NULL
147460 +enable_so_tcp_sendpage_fndecl_10646 tcp_sendpage fndecl 4-3 10646 NULL
147461 +enable_so_s_3apbshift_ufs_sb_private_info_10663 s_3apbshift ufs_sb_private_info 0 10663 NULL
147462 +enable_so_len_ahd_dma_seg_10667 len ahd_dma_seg 0 10667 NULL
147463 +enable_so_radeon_ttm_tt_create_fndecl_10672 radeon_ttm_tt_create fndecl 2 10672 NULL
147464 +enable_so_mmc_test_simple_transfer_fndecl_10675 mmc_test_simple_transfer fndecl 6-5 10675 NULL
147465 +enable_so_xfs_rtfind_forw_fndecl_10681 xfs_rtfind_forw fndecl 3 10681 NULL nohasharray
147466 +enable_so_word_size_e1000_nvm_info_10681 word_size e1000_nvm_info 0 10681 &enable_so_xfs_rtfind_forw_fndecl_10681
147467 +enable_so_tlen_sc18is602_10682 tlen sc18is602 0 10682 NULL
147468 +enable_so_sb_bsize_gfs2_sb_host_10683 sb_bsize gfs2_sb_host 0 10683 NULL
147469 +enable_so_ipv6_setsockopt_fndecl_10684 ipv6_setsockopt fndecl 5 10684 NULL
147470 +enable_so_extract_icmp6_fields_fndecl_10685 extract_icmp6_fields fndecl 2 10685 NULL nohasharray
147471 +enable_so_write_file_bool_bmps_fndecl_10685 write_file_bool_bmps fndecl 3 10685 &enable_so_extract_icmp6_fields_fndecl_10685
147472 +enable_so_alauda_read_block_raw_fndecl_10688 alauda_read_block_raw fndecl 4 10688 NULL
147473 +enable_so_gigaset_initbcs_fndecl_10693 gigaset_initbcs fndecl 3 10693 NULL
147474 +enable_so_copy_snd_compr_ops_10696 copy snd_compr_ops 0 10696 NULL
147475 +enable_so_subdivision_snd_pcm_oss_runtime_10697 subdivision snd_pcm_oss_runtime 0 10697 NULL nohasharray
147476 +enable_so_lov_ost_pool_extend_fndecl_10697 lov_ost_pool_extend fndecl 2 10697 &enable_so_subdivision_snd_pcm_oss_runtime_10697
147477 +enable_so_host_ia32_efer_vmcs12_10701 host_ia32_efer vmcs12 0 10701 NULL
147478 +enable_so_xfs_alloc_read_agf_fndecl_10710 xfs_alloc_read_agf fndecl 3 10710 NULL
147479 +enable_so_iio_set_bytes_per_datum_kfifo_fndecl_10712 iio_set_bytes_per_datum_kfifo fndecl 2 10712 NULL
147480 +enable_so_set_le_key_k_offset_fndecl_10721 set_le_key_k_offset fndecl 3 10721 NULL
147481 +enable_so___btrfs_getxattr_fndecl_10728 __btrfs_getxattr fndecl 0 10728 NULL nohasharray
147482 +enable_so_ipv6_recv_error_fndecl_10728 ipv6_recv_error fndecl 3 10728 &enable_so___btrfs_getxattr_fndecl_10728 nohasharray
147483 +enable_so_dma_rx_num_vardecl_altera_tse_main_c_10728 dma_rx_num vardecl_altera_tse_main.c 0 10728 &enable_so_ipv6_recv_error_fndecl_10728 nohasharray
147484 +enable_so_num_timings_display_timings_10728 num_timings display_timings 0 10728 &enable_so_dma_rx_num_vardecl_altera_tse_main_c_10728
147485 +enable_so_write_file_queue_fndecl_10737 write_file_queue fndecl 3 10737 NULL
147486 +enable_so_sb_dirblklog_xfs_sb_10738 sb_dirblklog xfs_sb 0 10738 NULL
147487 +enable_so_max_bytes_per_io_se_dev_attrib_10744 max_bytes_per_io se_dev_attrib 0 10744 NULL
147488 +enable_so_BufSizeShift_qinfo_chip_10746 BufSizeShift qinfo_chip 0 10746 NULL nohasharray
147489 +enable_so_page_errors_dio_10746 page_errors dio 0 10746 &enable_so_BufSizeShift_qinfo_chip_10746
147490 +enable_so_NumEraseRegions_cfi_ident_10753 NumEraseRegions cfi_ident 0 10753 NULL
147491 +enable_so_adu_write_fndecl_10756 adu_write fndecl 3 10756 NULL
147492 +enable_so_data_start_dm_verity_10759 data_start dm_verity 0 10759 NULL
147493 +enable_so_new_chunk_core_exception_10765 new_chunk core_exception 0 10765 NULL
147494 +enable_so_batadv_send_tt_request_fndecl_10766 batadv_send_tt_request fndecl 5 10766 NULL
147495 +enable_so_ocrdma_reg_user_mr_fndecl_10777 ocrdma_reg_user_mr fndecl 2 10777 NULL
147496 +enable_so_btrfs_free_extent_fndecl_10784 btrfs_free_extent fndecl 5-6-3-4-7 10784 NULL
147497 +enable_so_soc_camera_calc_client_output_fndecl_10789 soc_camera_calc_client_output fndecl 6 10789 NULL
147498 +enable_so_ea_write_fndecl_10791 ea_write fndecl 3 10791 NULL nohasharray
147499 +enable_so_pnode_sz_ubifs_info_10791 pnode_sz ubifs_info 0 10791 &enable_so_ea_write_fndecl_10791 nohasharray
147500 +enable_so_dwc3_testmode_write_fndecl_10791 dwc3_testmode_write fndecl 3 10791 &enable_so_pnode_sz_ubifs_info_10791
147501 +enable_so_read32_brcmf_buscore_ops_10795 read32 brcmf_buscore_ops 0 10795 NULL
147502 +enable_so_ssb_sdio_block_write_fndecl_10815 ssb_sdio_block_write fndecl 3 10815 NULL
147503 +enable_so_batadv_dat_snoop_incoming_arp_request_fndecl_10823 batadv_dat_snoop_incoming_arp_request fndecl 3 10823 NULL
147504 +enable_so_read_reg_ipac_hw_10828 read_reg ipac_hw 0 10828 NULL
147505 +enable_so_num_mpt_mthca_profile_10833 num_mpt mthca_profile 0 10833 NULL
147506 +enable_so_do_generic_file_read_fndecl_10842 do_generic_file_read fndecl 4 10842 NULL
147507 +enable_so_get_cmdline_fndecl_10847 get_cmdline fndecl 3 10847 NULL
147508 +enable_so_irq_kvm_interrupt_10850 irq kvm_interrupt 0 10850 NULL nohasharray
147509 +enable_so_btrfs_lookup_inode_extref_fndecl_10850 btrfs_lookup_inode_extref fndecl 6 10850 &enable_so_irq_kvm_interrupt_10850
147510 +enable_so_rndis_add_response_fndecl_10854 rndis_add_response fndecl 2 10854 NULL
147511 +enable_so_v_size_nilfs_argv_10857 v_size nilfs_argv 0 10857 NULL
147512 +enable_so_h_stk_size_10859 h stk_size 0 10859 NULL
147513 +enable_so_size_fuse_notify_retrieve_out_10862 size fuse_notify_retrieve_out 0 10862 NULL
147514 +enable_so_disk_expand_part_tbl_fndecl_10866 disk_expand_part_tbl fndecl 2 10866 NULL
147515 +enable_so_ezusb_fill_req_fndecl_10868 ezusb_fill_req fndecl 0-2 10868 NULL nohasharray
147516 +enable_so_ts_packet_count_cx23885_tsport_10868 ts_packet_count cx23885_tsport 0 10868 &enable_so_ezusb_fill_req_fndecl_10868
147517 +enable_so_p9stat_read_fndecl_10869 p9stat_read fndecl 3 10869 NULL
147518 +enable_so_w9968cf_pkt_scan_fndecl_10878 w9968cf_pkt_scan fndecl 3 10878 NULL
147519 +enable_so___vmalloc_fndecl_10880 __vmalloc fndecl 1 10880 NULL
147520 +enable_so_sgl_map_user_pages_fndecl_10881 sgl_map_user_pages fndecl 3-2 10881 NULL
147521 +enable_so_num_streams_lola_pcm_10882 num_streams lola_pcm 0 10882 NULL
147522 +enable_so_drv_tss_rings_qlcnic_adapter_10887 drv_tss_rings qlcnic_adapter 0 10887 NULL
147523 +enable_so_spu_write_fndecl_10889 spu_write fndecl 4 10889 NULL
147524 +enable_so_ocfs2_reflink_xattr_rec_fndecl_10890 ocfs2_reflink_xattr_rec fndecl 3 10890 NULL
147525 +enable_so_ecryptfs_lower_header_size_fndecl_10894 ecryptfs_lower_header_size fndecl 0 10894 NULL
147526 +enable_so_i2c_hid_get_report_length_fndecl_10901 i2c_hid_get_report_length fndecl 0 10901 NULL nohasharray
147527 +enable_so_qlcnic_sriov_cfg_vf_def_mac_fndecl_10901 qlcnic_sriov_cfg_vf_def_mac fndecl 0 10901 &enable_so_i2c_hid_get_report_length_fndecl_10901
147528 +enable_so_udf_read_ptagged_fndecl_10905 udf_read_ptagged fndecl 3 10905 NULL
147529 +enable_so_msix_vector_count_MPT2SAS_ADAPTER_10911 msix_vector_count MPT2SAS_ADAPTER 0 10911 NULL
147530 +enable_so_SyS_listxattr_fndecl_10916 SyS_listxattr fndecl 3 10916 NULL
147531 +enable_so_data_len_rndis_packet_10918 data_len rndis_packet 0 10918 NULL
147532 +enable_so_isdn_audio_adpcm2xlaw_fndecl_10927 isdn_audio_adpcm2xlaw fndecl 0 10927 NULL
147533 +enable_so_ud_bmove_fndecl_10929 ud_bmove fndecl 7-3-5-8-4-6 10929 NULL
147534 +enable_so_dma_acm_rb_10934 dma acm_rb 0 10934 NULL
147535 +enable_so_l_offset_lbuf_10935 l_offset lbuf 0 10935 NULL
147536 +enable_so_compat_raw_setsockopt_fndecl_10937 compat_raw_setsockopt fndecl 5 10937 NULL
147537 +enable_so_paging64_invlpg_fndecl_10941 paging64_invlpg fndecl 2 10941 NULL nohasharray
147538 +enable_so_mlx5_ib_alloc_fast_reg_page_list_fndecl_10941 mlx5_ib_alloc_fast_reg_page_list fndecl 2 10941 &enable_so_paging64_invlpg_fndecl_10941
147539 +enable_so_bmp_len_xfrm_replay_state_esn_10945 bmp_len xfrm_replay_state_esn 0 10945 NULL
147540 +enable_so_max_i2c_msg_len_r820t_config_10951 max_i2c_msg_len r820t_config 0 10951 NULL
147541 +enable_so_num_lan_qps_i40e_pf_10953 num_lan_qps i40e_pf 0 10953 NULL
147542 +enable_so_iov_iter_init_fndecl_10954 iov_iter_init fndecl 5 10954 NULL
147543 +enable_so_blkcipher_walk_virt_block_fndecl_10958 blkcipher_walk_virt_block fndecl 3 10958 NULL
147544 +enable_so_dest_offset_btrfs_ioctl_clone_range_args_10960 dest_offset btrfs_ioctl_clone_range_args 0 10960 NULL
147545 +enable_so_drm_fb_helper_fill_fix_fndecl_10963 drm_fb_helper_fill_fix fndecl 2 10963 NULL
147546 +enable_so_sys_ftruncate_fndecl_10972 sys_ftruncate fndecl 2 10972 NULL
147547 +enable_so_encrypted_key_size_ecryptfs_session_key_10978 encrypted_key_size ecryptfs_session_key 0 10978 NULL nohasharray
147548 +enable_so_buffer_count_drm_i915_gem_execbuffer_10978 buffer_count drm_i915_gem_execbuffer 0 10978 &enable_so_encrypted_key_size_ecryptfs_session_key_10978
147549 +enable_so_ssid_len_wl1271_scan_10981 ssid_len wl1271_scan 0 10981 NULL
147550 +enable_so_lbs_wrbbp_write_fndecl_10987 lbs_wrbbp_write fndecl 3 10987 NULL
147551 +enable_so_vxfs_blkiget_fndecl_10989 vxfs_blkiget fndecl 3-2 10989 NULL
147552 +enable_so_bitmap_size_dma_iommu_mapping_10997 bitmap_size dma_iommu_mapping 0 10997 NULL
147553 +enable_so_rate_n_flags_from_tbl_fndecl_11000 rate_n_flags_from_tbl fndecl 0 11000 NULL nohasharray
147554 +enable_so_l2nbperpage_jfs_sb_info_11000 l2nbperpage jfs_sb_info 0 11000 &enable_so_rate_n_flags_from_tbl_fndecl_11000
147555 +enable_so_drm_gtf2_m_fndecl_11007 drm_gtf2_m fndecl 0 11007 NULL
147556 +enable_so_SyS_semop_fndecl_11008 SyS_semop fndecl 3 11008 NULL
147557 +enable_so_xferred_ScsiReqBlk_11017 xferred ScsiReqBlk 0 11017 NULL
147558 +enable_so_target_cmd_size_check_fndecl_11019 target_cmd_size_check fndecl 2 11019 NULL
147559 +enable_so_rx_pkt_pad_sge_11020 rx_pkt_pad sge 0 11020 NULL
147560 +enable_so_len_hif_scatter_req_11022 len hif_scatter_req 0 11022 NULL
147561 +enable_so_preallocate_pcm_pages_fndecl_11026 preallocate_pcm_pages fndecl 2 11026 NULL
147562 +enable_so_dqi_qtree_depth_qtree_mem_dqinfo_11028 dqi_qtree_depth qtree_mem_dqinfo 0 11028 NULL
147563 +enable_so_len_nfs3_mknodargs_11030 len nfs3_mknodargs 0 11030 NULL
147564 +enable_so_rd_last_alloc_gfs2_rgrpd_11032 rd_last_alloc gfs2_rgrpd 0 11032 NULL nohasharray
147565 +enable_so_ocfs2_info_freefrag_scan_bitmap_fndecl_11032 ocfs2_info_freefrag_scan_bitmap fndecl 3 11032 &enable_so_rd_last_alloc_gfs2_rgrpd_11032
147566 +enable_so_snd_ac97_pcm_assign_fndecl_11033 snd_ac97_pcm_assign fndecl 2 11033 NULL
147567 +enable_so_s_mirror_file_loc_udf_meta_data_11034 s_mirror_file_loc udf_meta_data 0 11034 NULL
147568 +enable_so_sectors_per_block_pool_11035 sectors_per_block pool 0 11035 NULL nohasharray
147569 +enable_so_audio_outs_vx_core_11035 audio_outs vx_core 0 11035 &enable_so_sectors_per_block_pool_11035
147570 +enable_so_ep_msg_in_peak_usb_device_11036 ep_msg_in peak_usb_device 0 11036 NULL nohasharray
147571 +enable_so_namelen_xfs_dir2_data_entry_11036 namelen xfs_dir2_data_entry 0 11036 &enable_so_ep_msg_in_peak_usb_device_11036
147572 +enable_so_iic_tpm_write_fndecl_11039 iic_tpm_write fndecl 3 11039 NULL nohasharray
147573 +enable_so_nfs_direct_read_schedule_iovec_fndecl_11039 nfs_direct_read_schedule_iovec fndecl 3 11039 &enable_so_iic_tpm_write_fndecl_11039
147574 +enable_so_DataTransferLength_DAC960_V2_UserCommand_11040 DataTransferLength DAC960_V2_UserCommand 0 11040 NULL
147575 +enable_so_xlog_write_log_records_fndecl_11042 xlog_write_log_records fndecl 4-3 11042 NULL
147576 +enable_so_bi_start_gfs2_bitmap_11049 bi_start gfs2_bitmap 0 11049 NULL
147577 +enable_so_va_size_coda_vattr_11053 va_size coda_vattr 0 11053 NULL
147578 +enable_so_do_mlock_fndecl_11062 do_mlock fndecl 2-1 11062 NULL
147579 +enable_so_default_rds_buf_vardecl_fmdrv_common_c_11072 default_rds_buf vardecl_fmdrv_common.c 0 11072 NULL
147580 +enable_so_i2c_writebytes_fndecl_11073 i2c_writebytes fndecl 4 11073 NULL
147581 +enable_so_entry_fat_entry_11079 entry fat_entry 0 11079 NULL
147582 +enable_so_irda_sendmsg_dgram_fndecl_11080 irda_sendmsg_dgram fndecl 3 11080 NULL
147583 +enable_so_tx_load_dma_buffer_fndecl_11082 tx_load_dma_buffer fndecl 3 11082 NULL
147584 +enable_so_read_bytes_sh_flctl_11094 read_bytes sh_flctl 0 11094 NULL
147585 +enable_so_do_brk_fndecl_11101 do_brk fndecl 1-2 11101 NULL
147586 +enable_so_ext4_acl_from_disk_fndecl_11107 ext4_acl_from_disk fndecl 2 11107 NULL nohasharray
147587 +enable_so___getblk_gfp_fndecl_11107 __getblk_gfp fndecl 3-2 11107 &enable_so_ext4_acl_from_disk_fndecl_11107
147588 +enable_so_wm9081_set_sysclk_fndecl_11108 wm9081_set_sysclk fndecl 4 11108 NULL nohasharray
147589 +enable_so_wTotalBlockNumber_ms_bootblock_sysinf_11108 wTotalBlockNumber ms_bootblock_sysinf 0 11108 &enable_so_wm9081_set_sysclk_fndecl_11108
147590 +enable_so_hpfs_ea_read_fndecl_11118 hpfs_ea_read fndecl 5-4-2 11118 NULL
147591 +enable_so___vmalloc_node_flags_fndecl_11139 __vmalloc_node_flags fndecl 1 11139 NULL
147592 +enable_so_num__cdrp_cmd_11142 num _cdrp_cmd 0 11142 NULL
147593 +enable_so_pageshift_nand_flash_dev_11144 pageshift nand_flash_dev 0 11144 NULL
147594 +enable_so_queue_depth_nullb_queue_11148 queue_depth nullb_queue 0 11148 NULL
147595 +enable_so_max_voices_snd_emux_11150 max_voices snd_emux 0 11150 NULL
147596 +enable_so_generic_ptrace_pokedata_fndecl_11153 generic_ptrace_pokedata fndecl 2 11153 NULL
147597 +enable_so_o2nm_this_node_fndecl_11157 o2nm_this_node fndecl 0 11157 NULL
147598 +enable_so_resource_from_user_fndecl_11158 resource_from_user fndecl 3 11158 NULL
147599 +enable_so_rmtvaluelen2_xfs_da_args_11168 rmtvaluelen2 xfs_da_args 0 11168 NULL
147600 +enable_so_drv_rss_rings_qlcnic_adapter_11169 drv_rss_rings qlcnic_adapter 0 11169 NULL
147601 +enable_so_max_supported_extcon_dev_11172 max_supported extcon_dev 0 11172 NULL
147602 +enable_so_udf_tread_fndecl_11173 udf_tread fndecl 2 11173 NULL
147603 +enable_so_payload_len_fc_bsg_buffer_11175 payload_len fc_bsg_buffer 0 11175 NULL
147604 +enable_so_jp_journal_1st_block_journal_params_11180 jp_journal_1st_block journal_params 0 11180 NULL
147605 +enable_so_xtInsert_fndecl_11182 xtInsert fndecl 5-4 11182 NULL
147606 +enable_so_resp_len_pn533_cmd_11192 resp_len pn533_cmd 0 11192 NULL nohasharray
147607 +enable_so_sys_get_mempolicy_fndecl_11192 sys_get_mempolicy fndecl 4-3 11192 &enable_so_resp_len_pn533_cmd_11192
147608 +enable_so_resid_virtio_scsi_cmd_resp_11193 resid virtio_scsi_cmd_resp 0 11193 NULL
147609 +enable_so_nr_pins_timbgpio_platform_data_11195 nr_pins timbgpio_platform_data 0 11195 NULL
147610 +enable_so_trace_insert_enum_map_fndecl_11206 trace_insert_enum_map fndecl 3 11206 NULL
147611 +enable_so_vb2_fop_write_fndecl_11207 vb2_fop_write fndecl 3 11207 NULL
147612 +enable_so_used_bytes_ubi_volume_info_11209 used_bytes ubi_volume_info 0 11209 NULL
147613 +enable_so_lstcon_session_info_fndecl_11210 lstcon_session_info fndecl 6 11210 NULL
147614 +enable_so_num_encoder_drm_mode_config_11220 num_encoder drm_mode_config 0 11220 NULL
147615 +enable_so__drbd_bm_find_next_zero_fndecl_11228 _drbd_bm_find_next_zero fndecl 2 11228 NULL
147616 +enable_so_hdr_len_ieee80211_cipher_scheme_11241 hdr_len ieee80211_cipher_scheme 0 11241 NULL
147617 +enable_so_urandom_read_fndecl_11245 urandom_read fndecl 3 11245 NULL
147618 +enable_so_nfsd_get_default_max_blksize_fndecl_11251 nfsd_get_default_max_blksize fndecl 0 11251 NULL
147619 +enable_so_xlog_find_cycle_start_fndecl_11263 xlog_find_cycle_start fndecl 3 11263 NULL
147620 +enable_so_ds1305_nvram_write_fndecl_11267 ds1305_nvram_write fndecl 5-6 11267 NULL
147621 +enable_so_hactive_videomode_11268 hactive videomode 0 11268 NULL
147622 +enable_so_btcx_align_fndecl_11269 btcx_align fndecl 4 11269 NULL
147623 +enable_so_snd_midi_event_encode_byte_fndecl_11281 snd_midi_event_encode_byte fndecl 0 11281 NULL
147624 +enable_so_btrfs_set_prop_fndecl_11284 btrfs_set_prop fndecl 4 11284 NULL
147625 +enable_so_exynos4_jpeg_get_output_buffer_size_fndecl_11286 exynos4_jpeg_get_output_buffer_size fndecl 0-3 11286 NULL
147626 +enable_so_snd_efw_resp_buf_size_vardecl_11291 snd_efw_resp_buf_size vardecl 0 11291 NULL
147627 +enable_so_mxuport_prepare_write_buffer_fndecl_11292 mxuport_prepare_write_buffer fndecl 3 11292 NULL
147628 +enable_so_alloc_test_extent_buffer_fndecl_11293 alloc_test_extent_buffer fndecl 2 11293 NULL
147629 +enable_so_newkey_nilfs_btnode_chkey_ctxt_11296 newkey nilfs_btnode_chkey_ctxt 0 11296 NULL nohasharray
147630 +enable_so_hash_net6_expire_fndecl_11296 hash_net6_expire fndecl 4 11296 &enable_so_newkey_nilfs_btnode_chkey_ctxt_11296
147631 +enable_so_max_pkt_size_stk1160_11297 max_pkt_size stk1160 0 11297 NULL
147632 +enable_so_ax25_addr_build_fndecl_11299 ax25_addr_build fndecl 0 11299 NULL nohasharray
147633 +enable_so_remap_pfn_range_fndecl_11299 remap_pfn_range fndecl 3 11299 &enable_so_ax25_addr_build_fndecl_11299
147634 +enable_so_btrfs_trim_block_group_fndecl_11312 btrfs_trim_block_group fndecl 3-4 11312 NULL
147635 +enable_so_buf_len_mwifiex_sdio_mpa_tx_11323 buf_len mwifiex_sdio_mpa_tx 0 11323 NULL
147636 +enable_so_len_brcmf_vndr_dcmd_hdr_11327 len brcmf_vndr_dcmd_hdr 0 11327 NULL nohasharray
147637 +enable_so_alloc_sched_domains_fndecl_11327 alloc_sched_domains fndecl 1 11327 &enable_so_len_brcmf_vndr_dcmd_hdr_11327
147638 +enable_so_c2_alloc_cq_buf_fndecl_11328 c2_alloc_cq_buf fndecl 4 11328 NULL
147639 +enable_so_period_bytes_snd_pcm_oss_runtime_11332 period_bytes snd_pcm_oss_runtime 0 11332 NULL
147640 +enable_so_page_size_ib_umem_11335 page_size ib_umem 0 11335 NULL
147641 +enable_so_charcount_console_font_11338 charcount console_font 0 11338 NULL
147642 +enable_so_s_sbbase_ufs_sb_private_info_11344 s_sbbase ufs_sb_private_info 0 11344 NULL
147643 +enable_so_hci_sock_setsockopt_fndecl_11346 hci_sock_setsockopt fndecl 5 11346 NULL
147644 +enable_so_bin_uuid_fndecl_11348 bin_uuid fndecl 3 11348 NULL
147645 +enable_so_buffer_length_usbdevfs_urb_11350 buffer_length usbdevfs_urb 0 11350 NULL
147646 +enable_so_nilfs_cpfile_delete_checkpoints_fndecl_11352 nilfs_cpfile_delete_checkpoints fndecl 2-3 11352 NULL
147647 +enable_so_vlanid_full_rx_done_desc_11354 vlanid full_rx_done_desc 0 11354 NULL
147648 +enable_so_fd_execute_rw_fndecl_11359 fd_execute_rw fndecl 3 11359 NULL
147649 +enable_so_default_tv_freq_vardecl_pvrusb2_hdw_c_11362 default_tv_freq vardecl_pvrusb2-hdw.c 0 11362 NULL
147650 +enable_so_tso_fragment_fndecl_11369 tso_fragment fndecl 4-3 11369 NULL
147651 +enable_so_sctp_getsockopt_assoc_stats_fndecl_11393 sctp_getsockopt_assoc_stats fndecl 2 11393 NULL
147652 +enable_so_memblock_alloc_base_nid_fndecl_11395 memblock_alloc_base_nid fndecl 2-1 11395 NULL
147653 +enable_so_txs_vardecl_ambassador_c_11398 txs vardecl_ambassador.c 0 11398 NULL
147654 +enable_so_in_args_qlcnic_mailbox_metadata_11413 in_args qlcnic_mailbox_metadata 0 11413 NULL
147655 +enable_so_iso_packets_buffer_init_fndecl_11414 iso_packets_buffer_init fndecl 3 11414 NULL
147656 +enable_so_cnt_qib_ctxtdata_11417 cnt qib_ctxtdata 0 11417 NULL
147657 +enable_so_smt_build_frame_fndecl_11428 smt_build_frame fndecl 4 11428 NULL
147658 +enable_so_isdn_ppp_write_fndecl_11430 isdn_ppp_write fndecl 4 11430 NULL
147659 +enable_so_rule_cnt_ethtool_rxnfc_11436 rule_cnt ethtool_rxnfc 0 11436 NULL
147660 +enable_so_iwl_dbgfs_log_event_write_fndecl_11443 iwl_dbgfs_log_event_write fndecl 3 11443 NULL
147661 +enable_so_llsec_do_decrypt_auth_fndecl_11445 llsec_do_decrypt_auth fndecl 0 11445 NULL
147662 +enable_so_ccp_init_dm_workarea_fndecl_11450 ccp_init_dm_workarea fndecl 3 11450 NULL
147663 +enable_so_proc_scsi_write_fndecl_11461 proc_scsi_write fndecl 3 11461 NULL
147664 +enable_so_reshape_ring_fndecl_11464 reshape_ring fndecl 2 11464 NULL
147665 +enable_so_ieee80211_send_bar_fndecl_11472 ieee80211_send_bar fndecl 3 11472 NULL
147666 +enable_so_hsync_len_videomode_11474 hsync_len videomode 0 11474 NULL
147667 +enable_so_snprintf_fndecl_11478 snprintf fndecl 0 11478 NULL
147668 +enable_so_iov_shorten_fndecl_11481 iov_shorten fndecl 3 11481 NULL nohasharray
147669 +enable_so_c_cpos_ocfs2_write_cluster_desc_11481 c_cpos ocfs2_write_cluster_desc 0 11481 &enable_so_iov_shorten_fndecl_11481
147670 +enable_so_rt2800_txdone_entry_fndecl_11484 rt2800_txdone_entry fndecl 2 11484 NULL nohasharray
147671 +enable_so_num_crtc_drm_mode_config_11484 num_crtc drm_mode_config 0 11484 &enable_so_rt2800_txdone_entry_fndecl_11484
147672 +enable_so_count_e1000_ring_11491 count e1000_ring 0 11491 NULL
147673 +enable_so___find_iref_fndecl_11494 __find_iref fndecl 2 11494 NULL
147674 +enable_so_get_ablock_fndecl_11495 get_ablock fndecl 2 11495 NULL nohasharray
147675 +enable_so_length_RioCommand_11495 length RioCommand 0 11495 &enable_so_get_ablock_fndecl_11495
147676 +enable_so_batadv_max_header_len_fndecl_11496 batadv_max_header_len fndecl 0 11496 NULL
147677 +enable_so_prepare_write_buffer_usb_serial_driver_11498 prepare_write_buffer usb_serial_driver 0 11498 NULL
147678 +enable_so_w_cpos_ocfs2_write_ctxt_11503 w_cpos ocfs2_write_ctxt 0 11503 NULL nohasharray
147679 +enable_so_bit_length_acpi_object_field_common_11503 bit_length acpi_object_field_common 0 11503 &enable_so_w_cpos_ocfs2_write_ctxt_11503
147680 +enable_so_period_bytes_max_snd_pcm_hardware_11507 period_bytes_max snd_pcm_hardware 0 11507 NULL
147681 +enable_so_snd_pcm_oss_set_rate_fndecl_11514 snd_pcm_oss_set_rate fndecl 2 11514 NULL
147682 +enable_so_usPixelClock__ATOM_MODE_TIMING_11515 usPixelClock _ATOM_MODE_TIMING 0 11515 NULL
147683 +enable_so_adau1701_register_size_fndecl_11523 adau1701_register_size fndecl 0 11523 NULL
147684 +enable_so_kvm_mmu_get_page_fndecl_11527 kvm_mmu_get_page fndecl 2 11527 NULL
147685 +enable_so_ccw_putcs_fndecl_11532 ccw_putcs fndecl 4 11532 NULL
147686 +enable_so_max_transfer_size_s2255_pipeinfo_11546 max_transfer_size s2255_pipeinfo 0 11546 NULL
147687 +enable_so_screen_height_vardecl_hyperv_fb_c_11550 screen_height vardecl_hyperv_fb.c 0 11550 NULL
147688 +enable_so_ttype_filename_trans_11554 ttype filename_trans 0 11554 NULL
147689 +enable_so_last_alloc_physical_block_ext3_block_alloc_info_11555 last_alloc_physical_block ext3_block_alloc_info 0 11555 NULL
147690 +enable_so_dm_startbit_adfs_discmap_11559 dm_startbit adfs_discmap 0 11559 NULL
147691 +enable_so_drm_plane_init_fndecl_11560 drm_plane_init fndecl 6 11560 NULL
147692 +enable_so_dataxfer_length_hpt_iop_request_scsi_command_11566 dataxfer_length hpt_iop_request_scsi_command 0 11566 NULL
147693 +enable_so_rec_len_nilfs_dir_entry_11567 rec_len nilfs_dir_entry 0 11567 NULL
147694 +enable_so_cur_transfer_size_s2255_pipeinfo_11571 cur_transfer_size s2255_pipeinfo 0 11571 NULL nohasharray
147695 +enable_so_rx_remain_len_hif_device_usb_11571 rx_remain_len hif_device_usb 0 11571 &enable_so_cur_transfer_size_s2255_pipeinfo_11571
147696 +enable_so_find_compression_threshold_fndecl_11575 find_compression_threshold fndecl 3 11575 NULL nohasharray
147697 +enable_so___ocfs2_add_entry_fndecl_11575 __ocfs2_add_entry fndecl 4 11575 &enable_so_find_compression_threshold_fndecl_11575
147698 +enable_so_update_memcg_params_fndecl_11583 update_memcg_params fndecl 2 11583 NULL
147699 +enable_so_last_rate_ipw_priv_11584 last_rate ipw_priv 0 11584 NULL
147700 +enable_so_pwc_get_fps_fndecl_11588 pwc_get_fps fndecl 0 11588 NULL nohasharray
147701 +enable_so_next_index_jfs_inode_info_11588 next_index jfs_inode_info 0 11588 &enable_so_pwc_get_fps_fndecl_11588
147702 +enable_so_rpc_pipe_generic_upcall_fndecl_11597 rpc_pipe_generic_upcall fndecl 4 11597 NULL
147703 +enable_so_spi_execute_fndecl_11603 spi_execute fndecl 5 11603 NULL nohasharray
147704 +enable_so_prev_free_msdos_sb_info_11603 prev_free msdos_sb_info 0 11603 &enable_so_spi_execute_fndecl_11603 nohasharray
147705 +enable_so_slave_num_vardecl_shdma_base_c_11603 slave_num vardecl_shdma-base.c 0 11603 &enable_so_prev_free_msdos_sb_info_11603
147706 +enable_so_send_reply_fndecl_11610 send_reply fndecl 7 11610 NULL
147707 +enable_so_dvb_net_sec_callback_fndecl_11617 dvb_net_sec_callback fndecl 2 11617 NULL
147708 +enable_so_word1_atl1e_recv_ret_status_11620 word1 atl1e_recv_ret_status 0 11620 NULL
147709 +enable_so_btrfs_add_ordered_extent_dio_fndecl_11621 btrfs_add_ordered_extent_dio fndecl 4-2-5-3 11621 NULL
147710 +enable_so_dataLen_PVSCSIRingCmpDesc_11627 dataLen PVSCSIRingCmpDesc 0 11627 NULL
147711 +enable_so_dot_gma_clock_t_11632 dot gma_clock_t 0 11632 NULL nohasharray
147712 +enable_so_posix_acl_init_fndecl_11632 posix_acl_init fndecl 2 11632 &enable_so_dot_gma_clock_t_11632
147713 +enable_so_num_mon_ceph_options_11640 num_mon ceph_options 0 11640 NULL
147714 +enable_so_rs_move_mimo2_to_other_fndecl_11646 rs_move_mimo2_to_other fndecl 5 11646 NULL
147715 +enable_so_ath6kl_get_num_reg_fndecl_11647 ath6kl_get_num_reg fndecl 0 11647 NULL
147716 +enable_so_num_snd_ratnum_11664 num snd_ratnum 0 11664 NULL nohasharray
147717 +enable_so___setup_root_fndecl_11664 __setup_root fndecl 1-2-3-6 11664 &enable_so_num_snd_ratnum_11664
147718 +enable_so_sel_write_member_fndecl_11667 sel_write_member fndecl 3 11667 NULL
147719 +enable_so_btrfs_ref_to_path_fndecl_11674 btrfs_ref_to_path fndecl 6 11674 NULL
147720 +enable_so___btrfs_find_all_roots_fndecl_11682 __btrfs_find_all_roots fndecl 3 11682 NULL nohasharray
147721 +enable_so_vp_request_msix_vectors_fndecl_11682 vp_request_msix_vectors fndecl 2 11682 &enable_so___btrfs_find_all_roots_fndecl_11682
147722 +enable_so_i915_stolen_to_physical_fndecl_11685 i915_stolen_to_physical fndecl 0 11685 NULL
147723 +enable_so_fill_note_info_fndecl_11692 fill_note_info fndecl 2 11692 NULL
147724 +enable_so_tx_tail_len_pn533_frame_ops_11694 tx_tail_len pn533_frame_ops 0 11694 NULL
147725 +enable_so_stride_efifb_dmi_info_11695 stride efifb_dmi_info 0 11695 NULL
147726 +enable_so_num_rates_wmi_rate_set_arg_11696 num_rates wmi_rate_set_arg 0 11696 NULL
147727 +enable_so_kernel_tree_alloc_fndecl_11698 kernel_tree_alloc fndecl 1 11698 NULL
147728 +enable_so_mwifiex_debug_mask_write_fndecl_11707 mwifiex_debug_mask_write fndecl 3 11707 NULL
147729 +enable_so_ablkcipher_walk_done_fndecl_11708 ablkcipher_walk_done fndecl 3 11708 NULL
147730 +enable_so_sizeof_partition_entry__gpt_header_11718 sizeof_partition_entry _gpt_header 0 11718 NULL
147731 +enable_so_ipv6_renew_options_fndecl_11728 ipv6_renew_options fndecl 5 11728 NULL
147732 +enable_so_ov511_pkt_scan_fndecl_11737 ov511_pkt_scan fndecl 3 11737 NULL
147733 +enable_so_length_v4l2_plane_11738 length v4l2_plane 0 11738 NULL nohasharray
147734 +enable_so_epp_total_pages_ptlrpc_enc_page_pool_11738 epp_total_pages ptlrpc_enc_page_pool 0 11738 &enable_so_length_v4l2_plane_11738
147735 +enable_so_gart_pin_size_radeon_device_11745 gart_pin_size radeon_device 0 11745 NULL
147736 +enable_so_log_num_cqs_mlx4_init_hca_param_11748 log_num_cqs mlx4_init_hca_param 0 11748 NULL
147737 +enable_so_iwl_dbgfs_sleep_level_override_write_fndecl_11758 iwl_dbgfs_sleep_level_override_write fndecl 3 11758 NULL
147738 +enable_so_log_dir_items_fndecl_11761 log_dir_items fndecl 8 11761 NULL
147739 +enable_so_lba_shift_nvme_ns_11763 lba_shift nvme_ns 0 11763 NULL
147740 +enable_so_num_mtt_mthca_profile_11767 num_mtt mthca_profile 0 11767 NULL
147741 +enable_so_length_acpi_dmar_header_11768 length acpi_dmar_header 0 11768 NULL
147742 +enable_so_grow_buffers_fndecl_11774 grow_buffers fndecl 3-2 11774 NULL
147743 +enable_so_len_snd_info_buffer_11775 len snd_info_buffer 0 11775 NULL
147744 +enable_so_validate_scan_freqs_fndecl_11781 validate_scan_freqs fndecl 0 11781 NULL
147745 +enable_so_bg_block_bitmap_ext3_group_desc_11791 bg_block_bitmap ext3_group_desc 0 11791 NULL
147746 +enable_so_ept_page_fault_fndecl_11801 ept_page_fault fndecl 2-3 11801 NULL
147747 +enable_so_p9_client_prepare_req_fndecl_11803 p9_client_prepare_req fndecl 3 11803 NULL
147748 +enable_so___kmalloc_node_fndecl_11804 __kmalloc_node fndecl 1 11804 NULL
147749 +enable_so_depth_cx23885_fmt_11806 depth cx23885_fmt 0 11806 NULL
147750 +enable_so_SyS_flistxattr_fndecl_11825 SyS_flistxattr fndecl 3 11825 NULL
147751 +enable_so_bufflen_alua_dh_data_11826 bufflen alua_dh_data 0 11826 NULL
147752 +enable_so_be_change_mtu_fndecl_11828 be_change_mtu fndecl 2 11828 NULL
147753 +enable_so_do_register_entry_fndecl_11829 do_register_entry fndecl 4 11829 NULL
147754 +enable_so_simple_strtoul_fndecl_11835 simple_strtoul fndecl 0 11835 NULL
147755 +enable_so_length_TAG_TW_SG_Entry_ISO_11846 length TAG_TW_SG_Entry_ISO 0 11846 NULL
147756 +enable_so_mic_vringh_copy_fndecl_11848 mic_vringh_copy fndecl 4 11848 NULL
147757 +enable_so_emulator_set_msr_fndecl_11853 emulator_set_msr fndecl 3 11853 NULL
147758 +enable_so_sg_tablesize_srp_target_port_11858 sg_tablesize srp_target_port 0 11858 NULL
147759 +enable_so_btmrvl_pscmd_write_fndecl_11859 btmrvl_pscmd_write fndecl 3 11859 NULL
147760 +enable_so_usnic_vnic_spec_dump_fndecl_11863 usnic_vnic_spec_dump fndecl 2 11863 NULL
147761 +enable_so_s_nsegments_nilfs_super_block_11865 s_nsegments nilfs_super_block 0 11865 NULL
147762 +enable_so_wr_host_buf_pos_xilly_channel_11866 wr_host_buf_pos xilly_channel 0 11866 NULL
147763 +enable_so_write_file_regidx_fndecl_11870 write_file_regidx fndecl 3 11870 NULL
147764 +enable_so_domain_child_num_acl_role_label_11875 domain_child_num acl_role_label 0 11875 NULL
147765 +enable_so_idetape_queue_rw_tail_fndecl_11881 idetape_queue_rw_tail fndecl 3 11881 NULL
147766 +enable_so_alloc_empty_pages_fndecl_11885 alloc_empty_pages fndecl 2 11885 NULL nohasharray
147767 +enable_so_leaf_dealloc_fndecl_11885 leaf_dealloc fndecl 3 11885 &enable_so_alloc_empty_pages_fndecl_11885
147768 +enable_so_f_width_gsc_frame_11886 f_width gsc_frame 0 11886 NULL
147769 +enable_so_fbmem_len_sm501fb_info_11887 fbmem_len sm501fb_info 0 11887 NULL
147770 +enable_so_num_channels_iw_scan_req_11889 num_channels iw_scan_req 0 11889 NULL
147771 +enable_so_err_nilfs_segctor_wait_request_11891 err nilfs_segctor_wait_request 0 11891 NULL
147772 +enable_so_flaglen_ring_desc_ex_11894 flaglen ring_desc_ex 0 11894 NULL
147773 +enable_so_set_brk_fndecl_11900 set_brk fndecl 1-2 11900 NULL
147774 +enable_so_libipw_change_mtu_fndecl_11901 libipw_change_mtu fndecl 2 11901 NULL
147775 +enable_so_iwl_dbgfs_missed_beacon_write_fndecl_11905 iwl_dbgfs_missed_beacon_write fndecl 3 11905 NULL
147776 +enable_so_pvr2_hdw_report_unlocked_fndecl_11910 pvr2_hdw_report_unlocked fndecl 0-4 11910 NULL
147777 +enable_so_dio_set_defer_completion_fndecl_11916 dio_set_defer_completion fndecl 0 11916 NULL
147778 +enable_so_residual_length_atto_vda_scsi_rsp_11918 residual_length atto_vda_scsi_rsp 0 11918 NULL
147779 +enable_so_tx_buffer_count_hso_serial_11927 tx_buffer_count hso_serial 0 11927 NULL
147780 +enable_so_orig_start_move_extent_11928 orig_start move_extent 0 11928 NULL
147781 +enable_so_length_p_header100_11933 length p_header100 0 11933 NULL
147782 +enable_so_ext4_move_extents_fndecl_11935 ext4_move_extents fndecl 5-3-4 11935 NULL
147783 +enable_so_alloc_low_pages_fndecl_11940 alloc_low_pages fndecl 1 11940 NULL
147784 +enable_so_mss_request_sock_11943 mss request_sock 0 11943 NULL
147785 +enable_so_choose_data_offset_fndecl_11950 choose_data_offset fndecl 0 11950 NULL
147786 +enable_so_osc_cached_mb_seq_write_fndecl_11961 osc_cached_mb_seq_write fndecl 3 11961 NULL
147787 +enable_so_sctp_make_abort_user_fndecl_11973 sctp_make_abort_user fndecl 3 11973 NULL nohasharray
147788 +enable_so_spmi_controller_alloc_fndecl_11973 spmi_controller_alloc fndecl 2 11973 &enable_so_sctp_make_abort_user_fndecl_11973
147789 +enable_so_ssp_create_msg_fndecl_11986 ssp_create_msg fndecl 2 11986 NULL
147790 +enable_so_x_size_mms114_platform_data_11991 x_size mms114_platform_data 0 11991 NULL
147791 +enable_so_rx_buffer_size_peak_usb_adapter_11997 rx_buffer_size peak_usb_adapter 0 11997 NULL
147792 +enable_so_bitmap_create_fndecl_12000 bitmap_create fndecl 2 12000 NULL
147793 +enable_so___btrfs_setxattr_fndecl_12010 __btrfs_setxattr fndecl 5 12010 NULL
147794 +enable_so___nlmsg_put_fndecl_12014 __nlmsg_put fndecl 5 12014 NULL nohasharray
147795 +enable_so_lustre_posix_acl_xattr_2ext_fndecl_12014 lustre_posix_acl_xattr_2ext fndecl 2 12014 &enable_so___nlmsg_put_fndecl_12014
147796 +enable_so_br_send_bpdu_fndecl_12022 br_send_bpdu fndecl 3 12022 NULL nohasharray
147797 +enable_so_rfcomm_sock_sendmsg_fndecl_12022 rfcomm_sock_sendmsg fndecl 3 12022 &enable_so_br_send_bpdu_fndecl_12022
147798 +enable_so_yres_fb_var_screeninfo_12023 yres fb_var_screeninfo 0 12023 NULL
147799 +enable_so_xfs_dir2_sf_addname_easy_fndecl_12024 xfs_dir2_sf_addname_easy fndecl 4 12024 NULL
147800 +enable_so_arm_iommu_create_mapping_fndecl_12027 arm_iommu_create_mapping fndecl 3 12027 NULL
147801 +enable_so_sisusb_write_mem_bulk_fndecl_12029 sisusb_write_mem_bulk fndecl 4 12029 NULL
147802 +enable_so_alloc_group_attrs_fndecl_12032 alloc_group_attrs fndecl 3 12032 NULL nohasharray
147803 +enable_so_wusb_prf_256_fndecl_12032 wusb_prf_256 fndecl 7 12032 &enable_so_alloc_group_attrs_fndecl_12032
147804 +enable_so_drm_property_create_enum_fndecl_12034 drm_property_create_enum fndecl 5 12034 NULL
147805 +enable_so_comedi_alloc_subdevices_fndecl_12036 comedi_alloc_subdevices fndecl 2 12036 NULL
147806 +enable_so_rf_suballoc_bit_ocfs2_refcount_block_12038 rf_suballoc_bit ocfs2_refcount_block 0 12038 NULL
147807 +enable_so___mm_populate_fndecl_12039 __mm_populate fndecl 2-1 12039 NULL
147808 +enable_so_physical_btrfs_bio_stripe_12047 physical btrfs_bio_stripe 0 12047 NULL
147809 +enable_so_len_brcmf_sdio_hdrinfo_12048 len brcmf_sdio_hdrinfo 0 12048 NULL
147810 +enable_so_bufsize_st5481_in_12064 bufsize st5481_in 0 12064 NULL
147811 +enable_so_irq_domain_add_linear_fndecl_12071 irq_domain_add_linear fndecl 2 12071 NULL
147812 +enable_so_rw_verify_area_fndecl_12072 rw_verify_area fndecl 4 12072 NULL nohasharray
147813 +enable_so_count_afs_permits_12072 count afs_permits 0 12072 &enable_so_rw_verify_area_fndecl_12072
147814 +enable_so_evdev_handle_get_val_fndecl_12073 evdev_handle_get_val fndecl 5-6 12073 NULL
147815 +enable_so_ttm_pool_update_free_locked_fndecl_12074 ttm_pool_update_free_locked fndecl 2 12074 NULL
147816 +enable_so_m88ds3103_wr_regs_fndecl_12077 m88ds3103_wr_regs fndecl 4 12077 NULL
147817 +enable_so_cirrus_bo_create_fndecl_12083 cirrus_bo_create fndecl 2 12083 NULL
147818 +enable_so_nr_relocs_drm_nouveau_gem_pushbuf_12085 nr_relocs drm_nouveau_gem_pushbuf 0 12085 NULL
147819 +enable_so_nvme_trans_copy_from_user_fndecl_12088 nvme_trans_copy_from_user fndecl 3 12088 NULL
147820 +enable_so_security_socket_recvmsg_fndecl_12091 security_socket_recvmsg fndecl 0 12091 NULL
147821 +enable_so_n_posix_ace_state_array_12096 n posix_ace_state_array 0 12096 NULL
147822 +enable_so_rs_fill_link_cmd_fndecl_12099 rs_fill_link_cmd fndecl 3 12099 NULL
147823 +enable_so_pad_size_asd_flash_de_12100 pad_size asd_flash_de 0 12100 NULL
147824 +enable_so_s_log_block_size_ext3_super_block_12106 s_log_block_size ext3_super_block 0 12106 NULL
147825 +enable_so_lpfc_debugfs_dumpHostSlim_data_fndecl_12108 lpfc_debugfs_dumpHostSlim_data fndecl 0 12108 NULL
147826 +enable_so_mirror_array_cnt_nfs4_ff_layout_segment_12109 mirror_array_cnt nfs4_ff_layout_segment 0 12109 NULL
147827 +enable_so_prism2_set_genericelement_fndecl_12110 prism2_set_genericelement fndecl 3 12110 NULL
147828 +enable_so_security_context_to_sid_core_fndecl_12115 security_context_to_sid_core fndecl 2 12115 NULL
147829 +enable_so_super_1_rdev_size_change_fndecl_12120 super_1_rdev_size_change fndecl 2 12120 NULL
147830 +enable_so_mwifiex_hscfg_write_fndecl_12125 mwifiex_hscfg_write fndecl 3 12125 NULL
147831 +enable_so_key_size_ccp_rsa_engine_12126 key_size ccp_rsa_engine 0 12126 NULL
147832 +enable_so_ProgRegShift_cfi_intelext_programming_regioninfo_12129 ProgRegShift cfi_intelext_programming_regioninfo 0 12129 NULL
147833 +enable_so_ext4_fiemap_fndecl_12131 ext4_fiemap fndecl 4-3 12131 NULL
147834 +enable_so_metablock_size_btrfsic_state_12137 metablock_size btrfsic_state 0 12137 NULL
147835 +enable_so_mempool_resize_fndecl_12140 mempool_resize fndecl 2 12140 NULL
147836 +enable_so_gfs2_rgrp_send_discards_fndecl_12149 gfs2_rgrp_send_discards fndecl 2 12149 NULL
147837 +enable_so_find_block_fndecl_12156 find_block fndecl 0 12156 NULL
147838 +enable_so_obd_proc_jobid_name_seq_write_fndecl_12167 obd_proc_jobid_name_seq_write fndecl 3 12167 NULL
147839 +enable_so___fuse_get_req_fndecl_12176 __fuse_get_req fndecl 2 12176 NULL
147840 +enable_so_brcmf_sdio_tx_ctrlframe_fndecl_12177 brcmf_sdio_tx_ctrlframe fndecl 3 12177 NULL
147841 +enable_so_bulk_in_size_sur40_state_12178 bulk_in_size sur40_state 0 12178 NULL
147842 +enable_so_rx_count_rx_header_12180 rx_count rx_header 0 12180 NULL
147843 +enable_so_dac33_hw_write_fndecl_12182 dac33_hw_write fndecl 3 12182 NULL
147844 +enable_so_lprocfs_write_helper_fndecl_12184 lprocfs_write_helper fndecl 2 12184 NULL
147845 +enable_so_se_callback_addr_len_nfsd4_setclientid_12186 se_callback_addr_len nfsd4_setclientid 0 12186 NULL
147846 +enable_so_total_ablkcipher_walk_12202 total ablkcipher_walk 0 12202 NULL
147847 +enable_so_alloc_and_copy_ftrace_hash_fndecl_12203 alloc_and_copy_ftrace_hash fndecl 1 12203 NULL
147848 +enable_so_handle_gk20a_instobj_dma_12206 handle gk20a_instobj_dma 0 12206 NULL
147849 +enable_so_lmc_crcSize_lmc___softc_12208 lmc_crcSize lmc___softc 0 12208 NULL
147850 +enable_so_l2cap_sock_setsockopt_old_fndecl_12209 l2cap_sock_setsockopt_old fndecl 4 12209 NULL nohasharray
147851 +enable_so_length_cifs_io_parms_12209 length cifs_io_parms 0 12209 &enable_so_l2cap_sock_setsockopt_old_fndecl_12209
147852 +enable_so_vmci_transport_set_min_buffer_size_fndecl_12216 vmci_transport_set_min_buffer_size fndecl 2 12216 NULL nohasharray
147853 +enable_so_next_hash_dir_private_info_12216 next_hash dir_private_info 0 12216 &enable_so_vmci_transport_set_min_buffer_size_fndecl_12216
147854 +enable_so_raremono_cmd_main_fndecl_12223 raremono_cmd_main fndecl 3 12223 NULL
147855 +enable_so_hci_sock_sendmsg_fndecl_12231 hci_sock_sendmsg fndecl 3 12231 NULL
147856 +enable_so_shift_tcindex_data_12240 shift tcindex_data 0 12240 NULL
147857 +enable_so_generic_file_llseek_size_fndecl_12242 generic_file_llseek_size fndecl 2-5 12242 NULL
147858 +enable_so_synproxy_tstamp_adjust_fndecl_12243 synproxy_tstamp_adjust fndecl 2 12243 NULL
147859 +enable_so_addr_ib_phys_buf_12245 addr ib_phys_buf 0 12245 NULL
147860 +enable_so_max_pkt_size_em28xx_usb_bufs_12248 max_pkt_size em28xx_usb_bufs 0 12248 NULL
147861 +enable_so_write_block_fndecl_12253 write_block fndecl 3 12253 NULL
147862 +enable_so_hpfs_map_fnode_fndecl_12255 hpfs_map_fnode fndecl 2 12255 NULL
147863 +enable_so_tcp_set_skb_tso_segs_fndecl_12258 tcp_set_skb_tso_segs fndecl 3 12258 NULL
147864 +enable_so_unique_len_drm_master_12259 unique_len drm_master 0 12259 NULL
147865 +enable_so_highbit_ebitmap_12260 highbit ebitmap 0 12260 NULL nohasharray
147866 +enable_so_zs_size_classes_vardecl_zsmalloc_c_12260 zs_size_classes vardecl_zsmalloc.c 0 12260 &enable_so_highbit_ebitmap_12260
147867 +enable_so_endpoint_snd_usX2Y_substream_12267 endpoint snd_usX2Y_substream 0 12267 NULL
147868 +enable_so_mempool_create_fndecl_12270 mempool_create fndecl 1 12270 NULL
147869 +enable_so_cur_page_len_dio_submit_12271 cur_page_len dio_submit 0 12271 NULL
147870 +enable_so_auth_algs_local_info_12277 auth_algs local_info 0 12277 NULL
147871 +enable_so_capacity_sddr09_card_info_12286 capacity sddr09_card_info 0 12286 NULL
147872 +enable_so_sb_sectsize_xfs_sb_12294 sb_sectsize xfs_sb 0 12294 NULL
147873 +enable_so_ino_num_inode_management_12296 ino_num inode_management 0 12296 NULL
147874 +enable_so_bm_find_next_fndecl_12298 bm_find_next fndecl 2 12298 NULL
147875 +enable_so_size_btrfs_ioctl_logical_ino_args_12299 size btrfs_ioctl_logical_ino_args 0 12299 NULL
147876 +enable_so_minimum_input_absinfo_12300 minimum input_absinfo 0 12300 NULL
147877 +enable_so_max_y_fb_monspecs_12303 max_y fb_monspecs 0 12303 NULL
147878 +enable_so_hr_blocks_o2hb_region_12318 hr_blocks o2hb_region 0 12318 NULL
147879 +enable_so_bm_bits_drbd_bitmap_12323 bm_bits drbd_bitmap 0 12323 NULL
147880 +enable_so_length_sg_mapping_iter_12324 length sg_mapping_iter 0 12324 NULL nohasharray
147881 +enable_so_sctp_make_abort_violation_fndecl_12324 sctp_make_abort_violation fndecl 4 12324 &enable_so_length_sg_mapping_iter_12324
147882 +enable_so_no_of_triplet_mwifiex_802_11d_domain_reg_12326 no_of_triplet mwifiex_802_11d_domain_reg 0 12326 NULL
147883 +enable_so_rgblk_free_fndecl_12328 rgblk_free fndecl 2 12328 NULL
147884 +enable_so_tracing_clock_write_fndecl_12330 tracing_clock_write fndecl 3 12330 NULL
147885 +enable_so_s_log_block_size_nilfs_super_block_12332 s_log_block_size nilfs_super_block 0 12332 NULL
147886 +enable_so_status_w840_rx_desc_12335 status w840_rx_desc 0 12335 NULL
147887 +enable_so_out_usbnet_12337 out usbnet 0 12337 NULL
147888 +enable_so_bank_size_stub_chip_12338 bank_size stub_chip 0 12338 NULL
147889 +enable_so_ocfs2_symlink_get_block_fndecl_12352 ocfs2_symlink_get_block fndecl 2 12352 NULL
147890 +enable_so_eip_x86_emulate_ctxt_12354 eip x86_emulate_ctxt 0 12354 NULL
147891 +enable_so_td_done_fndecl_12358 td_done fndecl 0 12358 NULL
147892 +enable_so_reserve_additional_memory_fndecl_12359 reserve_additional_memory fndecl 1 12359 NULL nohasharray
147893 +enable_so_limit_scaled_size_lock_fndecl_12359 limit_scaled_size_lock fndecl 5-6 12359 &enable_so_reserve_additional_memory_fndecl_12359 nohasharray
147894 +enable_so_igb_pci_sriov_configure_fndecl_12359 igb_pci_sriov_configure fndecl 2 12359 &enable_so_limit_scaled_size_lock_fndecl_12359
147895 +enable_so_xb_blkno_ocfs2_xattr_block_12365 xb_blkno ocfs2_xattr_block 0 12365 NULL
147896 +enable_so_tipc_media_addr_printf_fndecl_12368 tipc_media_addr_printf fndecl 2 12368 NULL nohasharray
147897 +enable_so_num_subdevs_v4l2_async_notifier_12368 num_subdevs v4l2_async_notifier 0 12368 &enable_so_tipc_media_addr_printf_fndecl_12368
147898 +enable_so_compat_SyS_set_mempolicy_fndecl_12372 compat_SyS_set_mempolicy fndecl 3 12372 NULL
147899 +enable_so_i_entries_gfs2_inode_12374 i_entries gfs2_inode 0 12374 NULL
147900 +enable_so_i9xx_find_best_dpll_fndecl_12377 i9xx_find_best_dpll fndecl 4 12377 NULL nohasharray
147901 +enable_so_nilfs_btree_get_new_block_fndecl_12377 nilfs_btree_get_new_block fndecl 2 12377 &enable_so_i9xx_find_best_dpll_fndecl_12377
147902 +enable_so_rx_prefix_size_efx_nic_12381 rx_prefix_size efx_nic 0 12381 NULL
147903 +enable_so_if_usb_host_to_card_fndecl_12384 if_usb_host_to_card fndecl 4 12384 NULL
147904 +enable_so_get_packet_pg_fndecl_12388 get_packet_pg fndecl 4 12388 NULL
147905 +enable_so_stb6100_write_reg_range_fndecl_12391 stb6100_write_reg_range fndecl 4 12391 NULL
147906 +enable_so_memory_block_action_fndecl_12395 memory_block_action fndecl 1 12395 NULL
147907 +enable_so_buffer_size_zoran_buffer_col_12398 buffer_size zoran_buffer_col 0 12398 NULL
147908 +enable_so_powercap_register_zone_fndecl_12399 powercap_register_zone fndecl 6 12399 NULL
147909 +enable_so_edt_ft5x06_debugfs_raw_data_read_fndecl_12401 edt_ft5x06_debugfs_raw_data_read fndecl 3 12401 NULL
147910 +enable_so_length_iw_point_12404 length iw_point 0 12404 NULL
147911 +enable_so_reg_read_fndecl_12405 reg_read fndecl 4 12405 NULL
147912 +enable_so_snd_rawmidi_write_fndecl_12411 snd_rawmidi_write fndecl 3 12411 NULL
147913 +enable_so_dccp_insert_fn_opt_fndecl_12419 dccp_insert_fn_opt fndecl 5 12419 NULL
147914 +enable_so_pool_status_fndecl_12420 pool_status fndecl 5 12420 NULL
147915 +enable_so_cx231xx_init_vbi_isoc_fndecl_12422 cx231xx_init_vbi_isoc fndecl 4-2-3 12422 NULL
147916 +enable_so_init_rs_non_canonical_fndecl_12424 init_rs_non_canonical fndecl 5-1 12424 NULL
147917 +enable_so_ext4_quota_read_fndecl_12429 ext4_quota_read fndecl 5 12429 NULL
147918 +enable_so_pkey_tbl_len_ib_port_attr_12434 pkey_tbl_len ib_port_attr 0 12434 NULL
147919 +enable_so_hcd_priv_size_hc_driver_12440 hcd_priv_size hc_driver 0 12440 NULL
147920 +enable_so_informationLength_fileEntry_12442 informationLength fileEntry 0 12442 NULL nohasharray
147921 +enable_so_sctp_setsockopt_maxburst_fndecl_12442 sctp_setsockopt_maxburst fndecl 3 12442 &enable_so_informationLength_fileEntry_12442
147922 +enable_so_divisor_tc_sfq_qopt_12444 divisor tc_sfq_qopt 0 12444 NULL
147923 +enable_so_ie_len_cfg80211_connect_params_12446 ie_len cfg80211_connect_params 0 12446 NULL
147924 +enable_so_u132_endp_urb_dequeue_fndecl_12447 u132_endp_urb_dequeue fndecl 4 12447 NULL
147925 +enable_so_acpi_gsb_i2c_write_bytes_fndecl_12449 acpi_gsb_i2c_write_bytes fndecl 4 12449 NULL nohasharray
147926 +enable_so_GetRecvByte_fndecl_12449 GetRecvByte fndecl 0 12449 &enable_so_acpi_gsb_i2c_write_bytes_fndecl_12449 nohasharray
147927 +enable_so_length_iwl_wipan_noa_attribute_12449 length iwl_wipan_noa_attribute 0 12449 &enable_so_GetRecvByte_fndecl_12449
147928 +enable_so_rx_padding_usbatm_driver_12455 rx_padding usbatm_driver 0 12455 NULL
147929 +enable_so_keyspan_setup_urb_fndecl_12461 keyspan_setup_urb fndecl 6-3-2 12461 NULL
147930 +enable_so_num_cq_mthca_profile_12463 num_cq mthca_profile 0 12463 NULL
147931 +enable_so_tp_block_nr_tpacket_req_12465 tp_block_nr tpacket_req 0 12465 NULL
147932 +enable_so_num_leds_pca9532_chip_info_12471 num_leds pca9532_chip_info 0 12471 NULL
147933 +enable_so_idx_il3945_tpt_entry_12490 idx il3945_tpt_entry 0 12490 NULL
147934 +enable_so_lock_extent_fndecl_12493 lock_extent fndecl 3-2 12493 NULL
147935 +enable_so_ih_item_len_item_head_12495 ih_item_len item_head 0 12495 NULL nohasharray
147936 +enable_so_vgacon_adjust_height_fndecl_12495 vgacon_adjust_height fndecl 2 12495 &enable_so_ih_item_len_item_head_12495
147937 +enable_so_dccp_feat_valid_nn_length_fndecl_12500 dccp_feat_valid_nn_length fndecl 0 12500 NULL
147938 +enable_so_mmc_test_alloc_mem_fndecl_12501 mmc_test_alloc_mem fndecl 2-3 12501 NULL
147939 +enable_so_nclips_saa7134_dev_12507 nclips saa7134_dev 0 12507 NULL
147940 +enable_so_brcmf_chip_tcm_ramsize_fndecl_12513 brcmf_chip_tcm_ramsize fndecl 0 12513 NULL
147941 +enable_so_madvise_dontneed_fndecl_12517 madvise_dontneed fndecl 3-4 12517 NULL
147942 +enable_so_video_read_fndecl_12519 video_read fndecl 3 12519 NULL
147943 +enable_so_snd_midi_channel_alloc_set_fndecl_12522 snd_midi_channel_alloc_set fndecl 1 12522 NULL
147944 +enable_so_al_tr_number_to_on_disk_sector_fndecl_12526 al_tr_number_to_on_disk_sector fndecl 0 12526 NULL
147945 +enable_so_depth_fb_image_12530 depth fb_image 0 12530 NULL
147946 +enable_so_write_isowbuf_t_12533 write isowbuf_t 0 12533 NULL
147947 +enable_so_m25p80_read_reg_fndecl_12535 m25p80_read_reg fndecl 4 12535 NULL
147948 +enable_so_learn_buffer_user_len_vardecl_gracl_learn_c_12538 learn_buffer_user_len vardecl_gracl_learn.c 0 12538 NULL
147949 +enable_so_cdrom_read_cdda_old_fndecl_12547 cdrom_read_cdda_old fndecl 4 12547 NULL
147950 +enable_so_qword_get_fndecl_12549 qword_get fndecl 0 12549 NULL
147951 +enable_so_qnx6_readpages_fndecl_12570 qnx6_readpages fndecl 4 12570 NULL
147952 +enable_so_read8_sync_rtl_io_12571 read8_sync rtl_io 0 12571 NULL
147953 +enable_so_fs_path_add_from_extent_buffer_fndecl_12581 fs_path_add_from_extent_buffer fndecl 4 12581 NULL
147954 +enable_so_rate_den_snd_pcm_hw_params_12586 rate_den snd_pcm_hw_params 0 12586 NULL
147955 +enable_so_dev_rsize_hid_device_12597 dev_rsize hid_device 0 12597 NULL
147956 +enable_so_ocfs2_extend_dir_fndecl_12604 ocfs2_extend_dir fndecl 4 12604 NULL
147957 +enable_so_blk_limits_io_opt_fndecl_12606 blk_limits_io_opt fndecl 2 12606 NULL
147958 +enable_so_rt_priority_task_struct_12608 rt_priority task_struct 0 12608 NULL
147959 +enable_so_depth_g2d_fmt_12611 depth g2d_fmt 0 12611 NULL
147960 +enable_so_evm_write_key_fndecl_12624 evm_write_key fndecl 3 12624 NULL
147961 +enable_so_rqt_base_rdma_info_12627 rqt_base rdma_info 0 12627 NULL
147962 +enable_so_maxpacket_r8a66597_td_12628 maxpacket r8a66597_td 0 12628 NULL
147963 +enable_so_ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol_fndecl_12633 ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol fndecl 3 12633 NULL
147964 +enable_so_length_wep_key_12635 length wep_key 0 12635 NULL
147965 +enable_so_xfs_dir2_block_sfsize_fndecl_12636 xfs_dir2_block_sfsize fndecl 0 12636 NULL
147966 +enable_so_pattern_len_cfg80211_pkt_pattern_12639 pattern_len cfg80211_pkt_pattern 0 12639 NULL
147967 +enable_so_current_count_sectors_vardecl_floppy_c_12647 current_count_sectors vardecl_floppy.c 0 12647 NULL
147968 +enable_so_kcalloc_fndecl_12649 kcalloc fndecl 1-2 12649 NULL
147969 +enable_so_sl_encaps_fndecl_12658 sl_encaps fndecl 3 12658 NULL
147970 +enable_so_linear_hugepage_index_fndecl_12664 linear_hugepage_index fndecl 0-2 12664 NULL
147971 +enable_so_num_aces_cifs_acl_12670 num_aces cifs_acl 0 12670 NULL
147972 +enable_so_beacon_buf_size_mwifiex_bssdescriptor_12674 beacon_buf_size mwifiex_bssdescriptor 0 12674 NULL
147973 +enable_so_doorbell_base_kfd_dev_12677 doorbell_base kfd_dev 0 12677 NULL
147974 +enable_so_src_height_tpg_data_12686 src_height tpg_data 0 12686 NULL
147975 +enable_so_ns_nsegments_the_nilfs_12690 ns_nsegments the_nilfs 0 12690 NULL
147976 +enable_so_transport_init_session_tags_fndecl_12691 transport_init_session_tags fndecl 1-2 12691 NULL
147977 +enable_so_dn_neigh_elist_fndecl_12712 dn_neigh_elist fndecl 0 12712 NULL
147978 +enable_so_fld_debugfs_hash_seq_write_fndecl_12713 fld_debugfs_hash_seq_write fndecl 3 12713 NULL
147979 +enable_so_total_len_ocrdma_hdr_wqe_12714 total_len ocrdma_hdr_wqe 0 12714 NULL nohasharray
147980 +enable_so_sys_listxattr_fndecl_12714 sys_listxattr fndecl 3 12714 &enable_so_total_len_ocrdma_hdr_wqe_12714
147981 +enable_so_blk_ioctl_discard_fndecl_12725 blk_ioctl_discard fndecl 3-2 12725 NULL
147982 +enable_so_ss_in_channels_hdsp_12726 ss_in_channels hdsp 0 12726 NULL
147983 +enable_so_btrfs_truncate_item_fndecl_12731 btrfs_truncate_item fndecl 3 12731 NULL
147984 +enable_so_xfs_iomap_write_direct_fndecl_12733 xfs_iomap_write_direct fndecl 2 12733 NULL
147985 +enable_so_read_profile_fndecl_12736 read_profile fndecl 3 12736 NULL
147986 +enable_so_sky2_pci_read16_fndecl_12740 sky2_pci_read16 fndecl 0 12740 NULL
147987 +enable_so_count_nfsd3_readres_12745 count nfsd3_readres 0 12745 NULL
147988 +enable_so_nfsd4_encode_splice_read_fndecl_12755 nfsd4_encode_splice_read fndecl 4 12755 NULL
147989 +enable_so_freqm_snd_usb_endpoint_12761 freqm snd_usb_endpoint 0 12761 NULL
147990 +enable_so_num_unit_element_struct_12767 num unit_element_struct 0 12767 NULL
147991 +enable_so_wl1251_sdio_read_fndecl_12773 wl1251_sdio_read fndecl 4 12773 NULL
147992 +enable_so_sb_fseg_start_nilfs_segment_buffer_12802 sb_fseg_start nilfs_segment_buffer 0 12802 NULL
147993 +enable_so_mpage_readpages_fndecl_12807 mpage_readpages fndecl 3 12807 NULL
147994 +enable_so_object_num_mxt_info_12810 object_num mxt_info 0 12810 NULL
147995 +enable_so_testmode_write_fndecl_12814 testmode_write fndecl 3 12814 NULL
147996 +enable_so_hint_events_per_packet_input_dev_12818 hint_events_per_packet input_dev 0 12818 NULL nohasharray
147997 +enable_so_crypto_aead_setkey_fndecl_12818 crypto_aead_setkey fndecl 3 12818 &enable_so_hint_events_per_packet_input_dev_12818
147998 +enable_so_xen_pirq_from_irq_fndecl_12820 xen_pirq_from_irq fndecl 0 12820 NULL
147999 +enable_so___videobuf_mmap_setup_fndecl_12822 __videobuf_mmap_setup fndecl 3 12822 NULL
148000 +enable_so_ksocknal_alloc_tx_fndecl_12825 ksocknal_alloc_tx fndecl 2 12825 NULL
148001 +enable_so_falcon_spi_device_init_fndecl_12835 falcon_spi_device_init fndecl 4 12835 NULL
148002 +enable_so_xfs_rtfind_back_fndecl_12849 xfs_rtfind_back fndecl 3 12849 NULL
148003 +enable_so_can_rmdir_fndecl_12859 can_rmdir fndecl 2 12859 NULL
148004 +enable_so_rx_buffer_size_macb_12864 rx_buffer_size macb 0 12864 NULL
148005 +enable_so_snd_interval_refine_max_fndecl_12865 snd_interval_refine_max fndecl 2 12865 NULL
148006 +enable_so_frameoffset_b43legacy_dmaring_12869 frameoffset b43legacy_dmaring 0 12869 NULL
148007 +enable_so_update_nr_written_fndecl_12871 update_nr_written fndecl 3 12871 NULL
148008 +enable_so_error_code_x86_exception_12872 error_code x86_exception 0 12872 NULL
148009 +enable_so_max_ddbs_hw_profile_12873 max_ddbs hw_profile 0 12873 NULL
148010 +enable_so_tcp_remove_reno_sacks_fndecl_12874 tcp_remove_reno_sacks fndecl 2 12874 NULL
148011 +enable_so_length_i2c_hid_cmd_12879 length i2c_hid_cmd 0 12879 NULL
148012 +enable_so_response_length_ib_uverbs_ex_create_cq_resp_12889 response_length ib_uverbs_ex_create_cq_resp 0 12889 NULL
148013 +enable_so_udp_uncompress_fndecl_12890 udp_uncompress fndecl 2 12890 NULL
148014 +enable_so_max_response_pages_fndecl_12895 max_response_pages fndecl 0 12895 NULL
148015 +enable_so_offset_ceph_dentry_info_12896 offset ceph_dentry_info 0 12896 NULL
148016 +enable_so_dbgfs_sram_len_iwl_mvm_12900 dbgfs_sram_len iwl_mvm 0 12900 NULL
148017 +enable_so_tool_db_read_fndecl_12902 tool_db_read fndecl 3 12902 NULL
148018 +enable_so_capinc_tty_write_fndecl_12904 capinc_tty_write fndecl 3 12904 NULL
148019 +enable_so_nilfs_inode_sub_blocks_fndecl_12914 nilfs_inode_sub_blocks fndecl 2 12914 NULL
148020 +enable_so_max_reportid_mxt_data_12917 max_reportid mxt_data 0 12917 NULL
148021 +enable_so_usb6fire_midi_in_received_fndecl_12921 usb6fire_midi_in_received fndecl 3 12921 NULL nohasharray
148022 +enable_so_nilfs_sufile_delete_segment_usage_block_fndecl_12921 nilfs_sufile_delete_segment_usage_block fndecl 2 12921 &enable_so_usb6fire_midi_in_received_fndecl_12921
148023 +enable_so_qs_out_channels_hdspm_12922 qs_out_channels hdspm 0 12922 NULL
148024 +enable_so_idetape_mtioctop_fndecl_12923 idetape_mtioctop fndecl 3 12923 NULL
148025 +enable_so_sh_irda_init_iobuf_fndecl_12924 sh_irda_init_iobuf fndecl 2 12924 NULL
148026 +enable_so_obufsize_sisusb_usb_data_12932 obufsize sisusb_usb_data 0 12932 NULL
148027 +enable_so_ext4_split_extent_at_fndecl_12936 ext4_split_extent_at fndecl 4 12936 NULL
148028 +enable_so_vlan_id_vlan_dev_priv_12939 vlan_id vlan_dev_priv 0 12939 NULL
148029 +enable_so_xlog_clear_stale_blocks_fndecl_12940 xlog_clear_stale_blocks fndecl 2 12940 NULL
148030 +enable_so_phys_pud_init_fndecl_12941 phys_pud_init fndecl 2-3 12941 NULL
148031 +enable_so_gfs2_meta_indirect_buffer_fndecl_12942 gfs2_meta_indirect_buffer fndecl 3 12942 NULL
148032 +enable_so_run_delalloc_range_fndecl_12946 run_delalloc_range fndecl 3-4 12946 NULL nohasharray
148033 +enable_so_aio_read_events_fndecl_12946 aio_read_events fndecl 3 12946 &enable_so_run_delalloc_range_fndecl_12946 nohasharray
148034 +enable_so_mptctl_getiocinfo_fndecl_12946 mptctl_getiocinfo fndecl 2 12946 &enable_so_aio_read_events_fndecl_12946
148035 +enable_so_get_rate_snd_ice1712_12947 get_rate snd_ice1712 0 12947 NULL
148036 +enable_so_b43legacy_debugfs_write_fndecl_12959 b43legacy_debugfs_write fndecl 3 12959 NULL
148037 +enable_so_vm_start_vm_area_struct_12960 vm_start vm_area_struct 0 12960 NULL nohasharray
148038 +enable_so_btrfs_alloc_from_cluster_fndecl_12960 btrfs_alloc_from_cluster fndecl 3-0 12960 &enable_so_vm_start_vm_area_struct_12960
148039 +enable_so_data_pipe_mts_transfer_context_12962 data_pipe mts_transfer_context 0 12962 NULL
148040 +enable_so_apei_exec_ctx_set_input_fndecl_12968 apei_exec_ctx_set_input fndecl 2 12968 NULL
148041 +enable_so_initiator_length_spar_controlvm_parameters_header_12973 initiator_length spar_controlvm_parameters_header 0 12973 NULL
148042 +enable_so_unmap_shared_bt_fndecl_12974 unmap_shared_bt fndecl 3-4 12974 NULL
148043 +enable_so_extract_entropy_fndecl_12975 extract_entropy fndecl 5-3 12975 NULL
148044 +enable_so_clone_update_extent_map_fndecl_12984 clone_update_extent_map fndecl 4-5 12984 NULL
148045 +enable_so_udf_nfs_get_inode_fndecl_12990 udf_nfs_get_inode fndecl 2 12990 NULL
148046 +enable_so_nilfs_inode_add_blocks_fndecl_12995 nilfs_inode_add_blocks fndecl 2 12995 NULL
148047 +enable_so_tx_addr_uart_8250_dma_12997 tx_addr uart_8250_dma 0 12997 NULL nohasharray
148048 +enable_so_xdr_reserve_space_fndecl_12997 xdr_reserve_space fndecl 2 12997 &enable_so_tx_addr_uart_8250_dma_12997
148049 +enable_so_end_file_extent_cluster_13001 end file_extent_cluster 0 13001 NULL
148050 +enable_so_pm3fb_size_memory_fndecl_13002 pm3fb_size_memory fndecl 0 13002 NULL
148051 +enable_so_ipath_ureg_align_ipath_devdata_13010 ipath_ureg_align ipath_devdata 0 13010 NULL
148052 +enable_so_mcp795_rtcc_write_fndecl_13014 mcp795_rtcc_write fndecl 4 13014 NULL nohasharray
148053 +enable_so_gfs2_fsync_fndecl_13014 gfs2_fsync fndecl 2 13014 &enable_so_mcp795_rtcc_write_fndecl_13014
148054 +enable_so_arg_end_mm_struct_13016 arg_end mm_struct 0 13016 NULL
148055 +enable_so_rpcrdma_alloc_regbuf_fndecl_13018 rpcrdma_alloc_regbuf fndecl 2 13018 NULL
148056 +enable_so_do_mbind_fndecl_13022 do_mbind fndecl 2-1 13022 NULL
148057 +enable_so___free_memory_core_fndecl_13029 __free_memory_core fndecl 1-2 13029 NULL
148058 +enable_so_blk_queue_resize_tags_fndecl_13037 blk_queue_resize_tags fndecl 2 13037 NULL
148059 +enable_so_gfs2_lookup_by_inum_fndecl_13045 gfs2_lookup_by_inum fndecl 2 13045 NULL
148060 +enable_so_p9_fcall_alloc_fndecl_13055 p9_fcall_alloc fndecl 1 13055 NULL nohasharray
148061 +enable_so_sco_sock_recvmsg_fndecl_13055 sco_sock_recvmsg fndecl 3 13055 &enable_so_p9_fcall_alloc_fndecl_13055
148062 +enable_so_hfront_porch_videomode_13056 hfront_porch videomode 0 13056 NULL
148063 +enable_so_p_offset_elf64_phdr_13061 p_offset elf64_phdr 0 13061 NULL
148064 +enable_so_xfs_bunmapi_fndecl_13063 xfs_bunmapi fndecl 3-4 13063 NULL
148065 +enable_so___ocfs2_dx_dir_leaf_insert_fndecl_13066 __ocfs2_dx_dir_leaf_insert fndecl 4 13066 NULL
148066 +enable_so_read_disk_sb_fndecl_13071 read_disk_sb fndecl 2 13071 NULL
148067 +enable_so_cra_alignmask_crypto_alg_13076 cra_alignmask crypto_alg 0 13076 NULL
148068 +enable_so_envc_tomoyo_condition_13082 envc tomoyo_condition 0 13082 NULL
148069 +enable_so_c4iw_reject_cr_fndecl_13085 c4iw_reject_cr fndecl 3 13085 NULL
148070 +enable_so_vread_fndecl_13086 vread fndecl 0 13086 NULL
148071 +enable_so_vrambase_sisusb_usb_data_13093 vrambase sisusb_usb_data 0 13093 NULL nohasharray
148072 +enable_so_thermal_zone_device_register_fndecl_13093 thermal_zone_device_register fndecl 2 13093 &enable_so_vrambase_sisusb_usb_data_13093
148073 +enable_so_set_wep_key_fndecl_13094 set_wep_key fndecl 4 13094 NULL
148074 +enable_so___exclude_logged_extent_fndecl_13095 __exclude_logged_extent fndecl 3-2 13095 NULL
148075 +enable_so_end_data_mm_struct_13099 end_data mm_struct 0 13099 NULL
148076 +enable_so_ocfs2_cow_sync_writeback_fndecl_13102 ocfs2_cow_sync_writeback fndecl 3 13102 NULL nohasharray
148077 +enable_so_user_trans_num_acl_subject_label_13102 user_trans_num acl_subject_label 0 13102 &enable_so_ocfs2_cow_sync_writeback_fndecl_13102
148078 +enable_so___qp_memcpy_from_queue_fndecl_13103 __qp_memcpy_from_queue fndecl 4-3 13103 NULL nohasharray
148079 +enable_so_sctp_tsnmap_skip_fndecl_13103 sctp_tsnmap_skip fndecl 2 13103 &enable_so___qp_memcpy_from_queue_fndecl_13103
148080 +enable_so_cx24117_readregN_fndecl_13105 cx24117_readregN fndecl 4 13105 NULL
148081 +enable_so_num_qp_mlx4_profile_13106 num_qp mlx4_profile 0 13106 NULL
148082 +enable_so_DecodeMatrix_fndecl_13117 DecodeMatrix fndecl 0 13117 NULL nohasharray
148083 +enable_so_wIELength_uwb_rc_evt_drp_WUSB_0100_13117 wIELength uwb_rc_evt_drp_WUSB_0100 0 13117 &enable_so_DecodeMatrix_fndecl_13117
148084 +enable_so_sys_setpriority_fndecl_13132 sys_setpriority fndecl 3 13132 NULL
148085 +enable_so_c4iw_wr_log_size_order_vardecl_device_c_13134 c4iw_wr_log_size_order vardecl_device.c 0 13134 NULL
148086 +enable_so_line6_alloc_sysex_buffer_fndecl_13138 line6_alloc_sysex_buffer fndecl 4 13138 NULL
148087 +enable_so_viafb_bpp_vardecl_viafbdev_c_13145 viafb_bpp vardecl_viafbdev.c 0 13145 NULL
148088 +enable_so_calc_available_memory_size_fndecl_13151 calc_available_memory_size fndecl 0 13151 NULL
148089 +enable_so_EraseUnitSize_erase_unit_header_t_13154 EraseUnitSize erase_unit_header_t 0 13154 NULL
148090 +enable_so_inline_xattr_size_fndecl_13166 inline_xattr_size fndecl 0 13166 NULL
148091 +enable_so_hpfs_add_to_dnode_fndecl_13167 hpfs_add_to_dnode fndecl 4-2 13167 NULL
148092 +enable_so_blocksize_f2fs_sb_info_13191 blocksize f2fs_sb_info 0 13191 NULL
148093 +enable_so_bsg_setup_queue_fndecl_13194 bsg_setup_queue fndecl 5 13194 NULL
148094 +enable_so_snd_pcm_oss_read_fndecl_13198 snd_pcm_oss_read fndecl 3 13198 NULL
148095 +enable_so_SyS_ppoll_fndecl_13201 SyS_ppoll fndecl 2 13201 NULL
148096 +enable_so_dma_map_sg_attrs_fndecl_13202 dma_map_sg_attrs fndecl 0 13202 NULL
148097 +enable_so_num_channels_sh_cmt_device_13209 num_channels sh_cmt_device 0 13209 NULL
148098 +enable_so_buf_size_in_bytes_kfd_ioctl_dbg_address_watch_args_13210 buf_size_in_bytes kfd_ioctl_dbg_address_watch_args 0 13210 NULL
148099 +enable_so_kstrtos16_from_user_fndecl_13215 kstrtos16_from_user fndecl 2 13215 NULL
148100 +enable_so_height_usbtv_13217 height usbtv 0 13217 NULL nohasharray
148101 +enable_so_bm_entry_write_fndecl_13217 bm_entry_write fndecl 3 13217 &enable_so_height_usbtv_13217
148102 +enable_so_create_boot_cache_fndecl_13218 create_boot_cache fndecl 3 13218 NULL
148103 +enable_so_tcp_copy_to_iovec_fndecl_13227 tcp_copy_to_iovec fndecl 3 13227 NULL nohasharray
148104 +enable_so_ipath_uregbase_ipath_devdata_13227 ipath_uregbase ipath_devdata 0 13227 &enable_so_tcp_copy_to_iovec_fndecl_13227
148105 +enable_so_len_hi_sigma_action_13229 len_hi sigma_action 0 13229 NULL
148106 +enable_so_filldir64_fndecl_13232 filldir64 fndecl 3 13232 NULL
148107 +enable_so_mtdram_init_device_fndecl_13236 mtdram_init_device fndecl 3 13236 NULL
148108 +enable_so_max_mthca_wq_13240 max mthca_wq 0 13240 NULL
148109 +enable_so_batadv_handle_tt_response_fndecl_13249 batadv_handle_tt_response fndecl 4 13249 NULL
148110 +enable_so_maxsize_p9_trans_module_13254 maxsize p9_trans_module 0 13254 NULL
148111 +enable_so_blocklen_bytes_drbg_core_13259 blocklen_bytes drbg_core 0 13259 NULL nohasharray
148112 +enable_so_maxid_scif_info_13259 maxid scif_info 0 13259 &enable_so_blocklen_bytes_drbg_core_13259
148113 +enable_so_rsp_pay_size_qlcnic_bc_trans_13274 rsp_pay_size qlcnic_bc_trans 0 13274 NULL
148114 +enable_so_xfs_iomap_write_unwritten_fndecl_13278 xfs_iomap_write_unwritten fndecl 3-2 13278 NULL
148115 +enable_so_num_bytes_sigma_fw_chunk_control_13289 num_bytes sigma_fw_chunk_control 0 13289 NULL
148116 +enable_so_compress_file_range_fndecl_13295 compress_file_range fndecl 4-3 13295 NULL
148117 +enable_so_ioc_plen1_libcfs_ioctl_data_13297 ioc_plen1 libcfs_ioctl_data 0 13297 NULL
148118 +enable_so_dlmfs_file_read_fndecl_13298 dlmfs_file_read fndecl 3 13298 NULL
148119 +enable_so_alloc_page_buffers_fndecl_13304 alloc_page_buffers fndecl 2 13304 NULL
148120 +enable_so_tool_db_write_fndecl_13312 tool_db_write fndecl 3 13312 NULL
148121 +enable_so_token_size_iw_ioctl_description_13319 token_size iw_ioctl_description 0 13319 NULL
148122 +enable_so_slhc_uncompress_fndecl_13322 slhc_uncompress fndecl 0-3 13322 NULL
148123 +enable_so_csum_and_copy_from_iter_fndecl_13338 csum_and_copy_from_iter fndecl 2 13338 NULL
148124 +enable_so_copy_buffer_fndecl_13339 copy_buffer fndecl 1-2-3 13339 NULL
148125 +enable_so_brcmf_usb_dl_cmd_fndecl_13344 brcmf_usb_dl_cmd fndecl 4 13344 NULL
148126 +enable_so_x25_asy_change_mtu_fndecl_13347 x25_asy_change_mtu fndecl 2 13347 NULL
148127 +enable_so_retry_count_minstrel_rate_stats_13348 retry_count minstrel_rate_stats 0 13348 NULL nohasharray
148128 +enable_so_sctp_setsockopt_adaptation_layer_fndecl_13348 sctp_setsockopt_adaptation_layer fndecl 3 13348 &enable_so_retry_count_minstrel_rate_stats_13348
148129 +enable_so_compat_mtw_from_user_fndecl_13351 compat_mtw_from_user fndecl 0 13351 NULL
148130 +enable_so_hecubafb_write_fndecl_13357 hecubafb_write fndecl 3 13357 NULL
148131 +enable_so_carl9170_handle_mpdu_fndecl_13359 carl9170_handle_mpdu fndecl 3 13359 NULL
148132 +enable_so_hhf_zalloc_fndecl_13363 hhf_zalloc fndecl 1 13363 NULL
148133 +enable_so_ihl_iphdr_13367 ihl iphdr 0 13367 NULL nohasharray
148134 +enable_so_cfg80211_process_auth_fndecl_13367 cfg80211_process_auth fndecl 3 13367 &enable_so_ihl_iphdr_13367
148135 +enable_so_sd_size_stat_data_13368 sd_size stat_data 0 13368 NULL
148136 +enable_so_ep_response_mts_desc_13372 ep_response mts_desc 0 13372 NULL
148137 +enable_so_num_pages_ttm_tt_13376 num_pages ttm_tt 0 13376 NULL
148138 +enable_so_pll_to_var_aty_pll_ops_13378 pll_to_var aty_pll_ops 0 13378 NULL
148139 +enable_so_ds_in_channels_hdspm_13382 ds_in_channels hdspm 0 13382 NULL nohasharray
148140 +enable_so_T5_msg_size_mxt_data_13382 T5_msg_size mxt_data 0 13382 &enable_so_ds_in_channels_hdspm_13382
148141 +enable_so_max_width_sh_mobile_ceu_dev_13387 max_width sh_mobile_ceu_dev 0 13387 NULL nohasharray
148142 +enable_so_rules_all_snd_pcm_hw_constraints_13387 rules_all snd_pcm_hw_constraints 0 13387 &enable_so_max_width_sh_mobile_ceu_dev_13387
148143 +enable_so_chunk_size_lirc_buffer_13388 chunk_size lirc_buffer 0 13388 NULL
148144 +enable_so_ic_offset_xlog_in_core_13393 ic_offset xlog_in_core 0 13393 NULL nohasharray
148145 +enable_so_cmdsts__BufferDesc_13393 cmdsts _BufferDesc 0 13393 &enable_so_ic_offset_xlog_in_core_13393 nohasharray
148146 +enable_so_max_sets_vardecl_ip_set_core_c_13393 max_sets vardecl_ip_set_core.c 0 13393 &enable_so_cmdsts__BufferDesc_13393
148147 +enable_so_nfs42_fallocate_fndecl_13396 nfs42_fallocate fndecl 3-4 13396 NULL
148148 +enable_so_mp_payload_len_fcoe_mp_rsp_union_13397 mp_payload_len fcoe_mp_rsp_union 0 13397 NULL nohasharray
148149 +enable_so_i_size_write_fndecl_13397 i_size_write fndecl 2 13397 &enable_so_mp_payload_len_fcoe_mp_rsp_union_13397
148150 +enable_so_extract_entropy_user_fndecl_13403 extract_entropy_user fndecl 3 13403 NULL
148151 +enable_so_nfs_proc_readlink_fndecl_13404 nfs_proc_readlink fndecl 4 13404 NULL
148152 +enable_so_subdevices_count_snd_rawmidi_info_13408 subdevices_count snd_rawmidi_info 0 13408 NULL
148153 +enable_so_add_free_nid_fndecl_13412 add_free_nid fndecl 2 13412 NULL
148154 +enable_so_map_page_dma_map_ops_13417 map_page dma_map_ops 0 13417 NULL
148155 +enable_so_extra_len_request_13419 extra_len request 0 13419 NULL
148156 +enable_so_nrealreaders_stress_lock_torture_cxt_13422 nrealreaders_stress lock_torture_cxt 0 13422 NULL
148157 +enable_so_tx_headroom_ieee80211_local_13423 tx_headroom ieee80211_local 0 13423 NULL
148158 +enable_so_do_direct_IO_fndecl_13424 do_direct_IO fndecl 0 13424 NULL
148159 +enable_so_tb_path_alloc_fndecl_13427 tb_path_alloc fndecl 2 13427 NULL
148160 +enable_so_get_origin_minimum_chunksize_fndecl_13432 get_origin_minimum_chunksize fndecl 0 13432 NULL
148161 +enable_so_nouveau_channel_prep_fndecl_13435 nouveau_channel_prep fndecl 4 13435 NULL
148162 +enable_so_oc_mw_pa_c4iw_rdev_13436 oc_mw_pa c4iw_rdev 0 13436 NULL
148163 +enable_so_usbdev_lseek_fndecl_13441 usbdev_lseek fndecl 2 13441 NULL
148164 +enable_so_promote_fndecl_13442 promote fndecl 4-3 13442 NULL nohasharray
148165 +enable_so_mwifiex_memrw_write_fndecl_13442 mwifiex_memrw_write fndecl 3 13442 &enable_so_promote_fndecl_13442
148166 +enable_so_fill_read_buf_fndecl_13455 fill_read_buf fndecl 2-0 13455 NULL
148167 +enable_so_max_eq_mlx4_func_cap_13461 max_eq mlx4_func_cap 0 13461 NULL nohasharray
148168 +enable_so_me_start_ocfs2_move_extents_13461 me_start ocfs2_move_extents 0 13461 &enable_so_max_eq_mlx4_func_cap_13461
148169 +enable_so_vblank_lo_oaktrail_timing_info_13463 vblank_lo oaktrail_timing_info 0 13463 NULL
148170 +enable_so_flaglen_ring_desc_13468 flaglen ring_desc 0 13468 NULL
148171 +enable_so_handle_mm_fault_fndecl_13472 handle_mm_fault fndecl 3 13472 NULL nohasharray
148172 +enable_so_ufs_alloc_fragments_fndecl_13472 ufs_alloc_fragments fndecl 2-0-3 13472 &enable_so_handle_mm_fault_fndecl_13472 nohasharray
148173 +enable_so_snd_ctl_new_fndecl_13472 snd_ctl_new fndecl 2 13472 &enable_so_ufs_alloc_fragments_fndecl_13472
148174 +enable_so___videobuf_alloc_vb_fndecl_13477 __videobuf_alloc_vb fndecl 1 13477 NULL
148175 +enable_so_ext4_convert_unwritten_extents_fndecl_13483 ext4_convert_unwritten_extents fndecl 3-4 13483 NULL
148176 +enable_so_size_jffs2_full_dnode_13487 size jffs2_full_dnode 0 13487 NULL
148177 +enable_so_sk_datalen_svc_sock_13490 sk_datalen svc_sock 0 13490 NULL nohasharray
148178 +enable_so_i_section_size_iso_inode_info_13490 i_section_size iso_inode_info 0 13490 &enable_so_sk_datalen_svc_sock_13490
148179 +enable_so_sendpage_proto_ops_13505 sendpage proto_ops 0 13505 NULL nohasharray
148180 +enable_so_hwtstamp_ioctl_fndecl_13505 hwtstamp_ioctl fndecl 0 13505 &enable_so_sendpage_proto_ops_13505
148181 +enable_so_ath9k_hw_4k_dump_eeprom_fndecl_13506 ath9k_hw_4k_dump_eeprom fndecl 4-5 13506 NULL nohasharray
148182 +enable_so_btmrvl_hscmd_write_fndecl_13506 btmrvl_hscmd_write fndecl 3 13506 &enable_so_ath9k_hw_4k_dump_eeprom_fndecl_13506
148183 +enable_so_find_first_bit_fndecl_13507 find_first_bit fndecl 0 13507 NULL
148184 +enable_so_input_set_abs_params_fndecl_13512 input_set_abs_params fndecl 3-4 13512 NULL
148185 +enable_so_max_channels_cmipci_13517 max_channels cmipci 0 13517 NULL nohasharray
148186 +enable_so_len_unix_address_13517 len unix_address 0 13517 &enable_so_max_channels_cmipci_13517
148187 +enable_so_paravirt_read_msr_fndecl_13526 paravirt_read_msr fndecl 0 13526 NULL
148188 +enable_so_av_buf_head_dccp_ackvec_13528 av_buf_head dccp_ackvec 0 13528 NULL nohasharray
148189 +enable_so_alloc_fdmem_fndecl_13528 alloc_fdmem fndecl 1 13528 &enable_so_av_buf_head_dccp_ackvec_13528
148190 +enable_so_max_ws_blocks_scsi_disk_13533 max_ws_blocks scsi_disk 0 13533 NULL
148191 +enable_so_find_rsb_nodir_fndecl_13537 find_rsb_nodir fndecl 3 13537 NULL
148192 +enable_so_p_filesz_elf64_phdr_13545 p_filesz elf64_phdr 0 13545 NULL
148193 +enable_so_len_prism2_download_data_area_13551 len prism2_download_data_area 0 13551 NULL
148194 +enable_so_decode_imm_fndecl_13552 decode_imm fndecl 3 13552 NULL
148195 +enable_so_nes_reg_user_mr_fndecl_13553 nes_reg_user_mr fndecl 2 13553 NULL
148196 +enable_so_ib_qib_qp_table_size_vardecl_qib_verbs_c_13559 ib_qib_qp_table_size vardecl_qib_verbs.c 0 13559 NULL
148197 +enable_so_buf_len_vp702x_device_state_13562 buf_len vp702x_device_state 0 13562 NULL
148198 +enable_so_edt_ft5x06_ts_readwrite_fndecl_13570 edt_ft5x06_ts_readwrite fndecl 2-4 13570 NULL
148199 +enable_so_read_fw_status_reg_megasas_instance_template_13572 read_fw_status_reg megasas_instance_template 0 13572 NULL
148200 +enable_so_irq_alloc_generic_chip_fndecl_13577 irq_alloc_generic_chip fndecl 2 13577 NULL
148201 +enable_so_blkcipher_done_fast_fndecl_13584 blkcipher_done_fast fndecl 0-2 13584 NULL
148202 +enable_so_video_v_start_saa7134_tvnorm_13594 video_v_start saa7134_tvnorm 0 13594 NULL
148203 +enable_so_pxa168_eth_change_mtu_fndecl_13596 pxa168_eth_change_mtu fndecl 2 13596 NULL
148204 +enable_so_vdi_blocks_vxfs_inode_info_13602 vdi_blocks vxfs_inode_info 0 13602 NULL
148205 +enable_so_size_drm_mm_node_13605 size drm_mm_node 0 13605 NULL
148206 +enable_so_flowinfo_read_fndecl_13608 flowinfo_read fndecl 3 13608 NULL
148207 +enable_so___alloc_pred_stack_fndecl_13612 __alloc_pred_stack fndecl 2 13612 NULL
148208 +enable_so_nvoices_snd_seq_oss_reg_13613 nvoices snd_seq_oss_reg 0 13613 NULL
148209 +enable_so_us122l_start_fndecl_13617 us122l_start fndecl 2-3 13617 NULL
148210 +enable_so_softback_top_vardecl_fbcon_c_13621 softback_top vardecl_fbcon.c 0 13621 NULL
148211 +enable_so_ws_col_winsize_13628 ws_col winsize 0 13628 NULL
148212 +enable_so_num_mgms_mthca_limits_13629 num_mgms mthca_limits 0 13629 NULL
148213 +enable_so_xenbus_map_ring_valloc_hvm_fndecl_13638 xenbus_map_ring_valloc_hvm fndecl 3 13638 NULL nohasharray
148214 +enable_so_tx_status_0_ath5k_hw_tx_status_13638 tx_status_0 ath5k_hw_tx_status 0 13638 &enable_so_xenbus_map_ring_valloc_hvm_fndecl_13638
148215 +enable_so_nilfs_compute_checksum_fndecl_13643 nilfs_compute_checksum fndecl 6 13643 NULL
148216 +enable_so_iwl_mvm_hwrate_to_tx_rate_fndecl_13658 iwl_mvm_hwrate_to_tx_rate fndecl 1 13658 NULL nohasharray
148217 +enable_so_buffer_pos_vardecl_event_buffer_c_13658 buffer_pos vardecl_event_buffer.c 0 13658 &enable_so_iwl_mvm_hwrate_to_tx_rate_fndecl_13658
148218 +enable_so_udf_find_metadata_inode_efe_fndecl_13660 udf_find_metadata_inode_efe fndecl 2 13660 NULL
148219 +enable_so_width_s2255_vc_13661 width s2255_vc 0 13661 NULL
148220 +enable_so_length_rbd_img_request_13674 length rbd_img_request 0 13674 NULL
148221 +enable_so_vsync_psb_pipe_13675 vsync psb_pipe 0 13675 NULL
148222 +enable_so_mpls_rt_alloc_fndecl_13679 mpls_rt_alloc fndecl 1 13679 NULL
148223 +enable_so_freqValRadio_pvr2_hdw_13684 freqValRadio pvr2_hdw 0 13684 NULL
148224 +enable_so_receive_big_fndecl_13686 receive_big fndecl 5 13686 NULL
148225 +enable_so_lo_hi_readq_fndecl_13693 lo_hi_readq fndecl 0 13693 NULL
148226 +enable_so_hpfs_free_sectors_fndecl_13696 hpfs_free_sectors fndecl 3 13696 NULL
148227 +enable_so_prev_rs_tgg_il3945_rate_info_13697 prev_rs_tgg il3945_rate_info 0 13697 NULL
148228 +enable_so_skb_size_qlcnic_host_rds_ring_13698 skb_size qlcnic_host_rds_ring 0 13698 NULL
148229 +enable_so_dma_map_single_attrs_fndecl_13704 dma_map_single_attrs fndecl 0 13704 NULL
148230 +enable_so_resize_platform_label_table_fndecl_13711 resize_platform_label_table fndecl 2 13711 NULL
148231 +enable_so_bos_desc_fndecl_13715 bos_desc fndecl 0 13715 NULL
148232 +enable_so_valuelen_lo_extended_attribute_13722 valuelen_lo extended_attribute 0 13722 NULL
148233 +enable_so_channels_max_snd_soc_pcm_stream_13737 channels_max snd_soc_pcm_stream 0 13737 NULL
148234 +enable_so_write_begin_address_space_operations_13738 write_begin address_space_operations 0 13738 NULL
148235 +enable_so_shdma_prep_dma_cyclic_fndecl_13739 shdma_prep_dma_cyclic fndecl 4-2-3 13739 NULL
148236 +enable_so_pof_write_buffer_fndecl_13741 pof_write_buffer fndecl 0 13741 NULL nohasharray
148237 +enable_so_nr_segments_vscsiif_request_13741 nr_segments vscsiif_request 0 13741 &enable_so_pof_write_buffer_fndecl_13741
148238 +enable_so_len_tcf_em_nbyte_13742 len tcf_em_nbyte 0 13742 NULL
148239 +enable_so_write_pipe_ezusb_priv_13743 write_pipe ezusb_priv 0 13743 NULL
148240 +enable_so_level_guest_walker32_13749 level guest_walker32 0 13749 NULL
148241 +enable_so_qlcnic_alloc_sds_rings_fndecl_13752 qlcnic_alloc_sds_rings fndecl 2 13752 NULL
148242 +enable_so_numrx_velocity_opt_13754 numrx velocity_opt 0 13754 NULL nohasharray
148243 +enable_so_length_core_conn_create_data_13754 length core_conn_create_data 0 13754 &enable_so_numrx_velocity_opt_13754
148244 +enable_so_i_pino_f2fs_inode_13756 i_pino f2fs_inode 0 13756 NULL
148245 +enable_so_slgt_compat_ioctl_fndecl_13761 slgt_compat_ioctl fndecl 3 13761 NULL nohasharray
148246 +enable_so_xfs_alloc_pagf_init_fndecl_13761 xfs_alloc_pagf_init fndecl 3 13761 &enable_so_slgt_compat_ioctl_fndecl_13761
148247 +enable_so_encrypt_headroom_ieee80211_sub_if_data_13764 encrypt_headroom ieee80211_sub_if_data 0 13764 NULL
148248 +enable_so_ar5523_cmd_read_fndecl_13766 ar5523_cmd_read fndecl 4 13766 NULL
148249 +enable_so_scnprint_id_fndecl_13769 scnprint_id fndecl 3-0 13769 NULL
148250 +enable_so_check_extent_to_block_fndecl_13780 check_extent_to_block fndecl 2-3 13780 NULL
148251 +enable_so_ue_size_asd_bios_chim_struct_13782 ue_size asd_bios_chim_struct 0 13782 NULL
148252 +enable_so_usbhs_dma_calc_received_size_fndecl_13783 usbhs_dma_calc_received_size fndecl 3 13783 NULL
148253 +enable_so_iwl_trans_read_mem32_fndecl_13786 iwl_trans_read_mem32 fndecl 0 13786 NULL
148254 +enable_so_ept_get_level1_sp_gpa_fndecl_13788 ept_get_level1_sp_gpa fndecl 0 13788 NULL
148255 +enable_so_smk_write_load_fndecl_13790 smk_write_load fndecl 3 13790 NULL
148256 +enable_so_tipc_conn_sendmsg_fndecl_13792 tipc_conn_sendmsg fndecl 5 13792 NULL
148257 +enable_so_reply_sz__MPT_ADAPTER_13794 reply_sz _MPT_ADAPTER 0 13794 NULL
148258 +enable_so_num_fcoe_msix_i40e_pf_13802 num_fcoe_msix i40e_pf 0 13802 NULL
148259 +enable_so_ath6kl_create_qos_write_fndecl_13804 ath6kl_create_qos_write fndecl 3 13804 NULL
148260 +enable_so_gx_frame_buffer_size_fndecl_13808 gx_frame_buffer_size fndecl 0 13808 NULL
148261 +enable_so_v4l2_detect_gtf_fndecl_13810 v4l2_detect_gtf fndecl 3-2-1 13810 NULL
148262 +enable_so_fifo_size_sram_channel_13811 fifo_size sram_channel 0 13811 NULL
148263 +enable_so_shared_kmem_cache_13812 shared kmem_cache 0 13812 NULL
148264 +enable_so_den_min_snd_ratnum_13815 den_min snd_ratnum 0 13815 NULL
148265 +enable_so_rt6i_nfheader_len_rt6_info_13820 rt6i_nfheader_len rt6_info 0 13820 NULL
148266 +enable_so_phys_pte_init_fndecl_13824 phys_pte_init fndecl 2-3 13824 NULL nohasharray
148267 +enable_so_seq_read_fndecl_13824 seq_read fndecl 3 13824 &enable_so_phys_pte_init_fndecl_13824
148268 +enable_so_brcmf_sdio_firmware_callback_fndecl_13829 brcmf_sdio_firmware_callback fndecl 4 13829 NULL
148269 +enable_so_ib_dma_map_sg_fndecl_13830 ib_dma_map_sg fndecl 0 13830 NULL
148270 +enable_so_logical_offset_btrfs_dio_private_13833 logical_offset btrfs_dio_private 0 13833 NULL
148271 +enable_so_cypress_write_fndecl_13836 cypress_write fndecl 4 13836 NULL
148272 +enable_so_ceph_fallocate_fndecl_13837 ceph_fallocate fndecl 4-3 13837 NULL
148273 +enable_so_nr_vecs_biovec_slab_13838 nr_vecs biovec_slab 0 13838 NULL
148274 +enable_so_init_memory_mapping_fndecl_13840 init_memory_mapping fndecl 2 13840 NULL
148275 +enable_so_parser_init_byte_stream_fndecl_13844 parser_init_byte_stream fndecl 2 13844 NULL
148276 +enable_so_port_pio_base_ipath_portdata_13851 port_pio_base ipath_portdata 0 13851 NULL
148277 +enable_so_sddr09_read_data_fndecl_13860 sddr09_read_data fndecl 3-2 13860 NULL
148278 +enable_so_starting_offset_mpt3_diag_read_buffer_13869 starting_offset mpt3_diag_read_buffer 0 13869 NULL
148279 +enable_so_gfs2_add_jextent_fndecl_13879 gfs2_add_jextent fndecl 2-3 13879 NULL
148280 +enable_so_analog_ep_bulk_em28xx_13880 analog_ep_bulk em28xx 0 13880 NULL
148281 +enable_so_layers_idr_13889 layers idr 0 13889 NULL
148282 +enable_so_truncate_blocks_fndecl_13892 truncate_blocks fndecl 2 13892 NULL
148283 +enable_so_cblock_per_bio_data_13894 cblock per_bio_data 0 13894 NULL
148284 +enable_so_s_ncg_ufs_sb_private_info_13899 s_ncg ufs_sb_private_info 0 13899 NULL nohasharray
148285 +enable_so_rlen_cm4000_dev_13899 rlen cm4000_dev 0 13899 &enable_so_s_ncg_ufs_sb_private_info_13899
148286 +enable_so_vsync_pulse_width_lo_oaktrail_timing_info_13901 vsync_pulse_width_lo oaktrail_timing_info 0 13901 NULL
148287 +enable_so_hold_inflate_state_13902 hold inflate_state 0 13902 NULL
148288 +enable_so_pio_base_qib_ctxtdata_13913 pio_base qib_ctxtdata 0 13913 NULL
148289 +enable_so_wm_coeff_parse_int_fndecl_13918 wm_coeff_parse_int fndecl 0 13918 NULL
148290 +enable_so_trips_thermal_zone_device_13921 trips thermal_zone_device 0 13921 NULL nohasharray
148291 +enable_so_ipr_max_devs_vardecl_ipr_c_13921 ipr_max_devs vardecl_ipr.c 0 13921 &enable_so_trips_thermal_zone_device_13921
148292 +enable_so_vt_block_vxfs_typed_13924 vt_block vxfs_typed 0 13924 NULL
148293 +enable_so_oti_alloc_cookies_fndecl_13925 oti_alloc_cookies fndecl 2 13925 NULL
148294 +enable_so_garmin_read_process_fndecl_13926 garmin_read_process fndecl 3 13926 NULL
148295 +enable_so_s_firstdatazone_minix_sb_info_13932 s_firstdatazone minix_sb_info 0 13932 NULL
148296 +enable_so_hcd_buffer_alloc_fndecl_13940 hcd_buffer_alloc fndecl 2 13940 NULL
148297 +enable_so_ip_set_get_h32_fndecl_13945 ip_set_get_h32 fndecl 0 13945 NULL
148298 +enable_so_ept_walk_addr_generic_fndecl_13950 ept_walk_addr_generic fndecl 4-5 13950 NULL
148299 +enable_so_img_IMEM_size_fw_hdr_13961 img_IMEM_size fw_hdr 0 13961 NULL
148300 +enable_so_u132_hcd_configure_input_recv_fndecl_13969 u132_hcd_configure_input_recv fndecl 4 13969 NULL
148301 +enable_so_nla_append_fndecl_13971 nla_append fndecl 2 13971 NULL
148302 +enable_so_ib_copy_to_udata_fndecl_13974 ib_copy_to_udata fndecl 3 13974 NULL
148303 +enable_so_yres_panel_info_13976 yres panel_info 0 13976 NULL
148304 +enable_so_e_phnum_elf32_hdr_13980 e_phnum elf32_hdr 0 13980 NULL
148305 +enable_so_isdn_tty_handleDLEdown_fndecl_13981 isdn_tty_handleDLEdown fndecl 0 13981 NULL
148306 +enable_so_SyS_fgetxattr_fndecl_13984 SyS_fgetxattr fndecl 4 13984 NULL
148307 +enable_so_syslog_partial_vardecl_printk_c_13985 syslog_partial vardecl_printk.c 0 13985 NULL
148308 +enable_so_rs_move_siso_to_other_fndecl_13987 rs_move_siso_to_other fndecl 5 13987 NULL
148309 +enable_so_libipw_alloc_txb_fndecl_13992 libipw_alloc_txb fndecl 3-2-1 13992 NULL
148310 +enable_so_size_urb_list_13995 size urb_list 0 13995 NULL
148311 +enable_so_wanted_disk_byte___prelim_ref_14003 wanted_disk_byte __prelim_ref 0 14003 NULL nohasharray
148312 +enable_so_i_len_xfs_log_iovec_14003 i_len xfs_log_iovec 0 14003 &enable_so_wanted_disk_byte___prelim_ref_14003 nohasharray
148313 +enable_so_nilfs_read_super_root_block_fndecl_14003 nilfs_read_super_root_block fndecl 2 14003 &enable_so_i_len_xfs_log_iovec_14003
148314 +enable_so_buffer_top_vardecl_nm256_c_14008 buffer_top vardecl_nm256.c 0 14008 NULL
148315 +enable_so_n_phy_mvs_chip_info_14009 n_phy mvs_chip_info 0 14009 NULL
148316 +enable_so_batadv_socket_add_packet_fndecl_14011 batadv_socket_add_packet fndecl 3 14011 NULL
148317 +enable_so_e820_update_range_saved_fndecl_14017 e820_update_range_saved fndecl 2 14017 NULL
148318 +enable_so_btrfs_find_create_tree_block_fndecl_14018 btrfs_find_create_tree_block fndecl 2 14018 NULL
148319 +enable_so_security_enabled_ieee802154_hdr_fc_14024 security_enabled ieee802154_hdr_fc 0 14024 NULL
148320 +enable_so_sensor_framerate_go7007_14025 sensor_framerate go7007 0 14025 NULL
148321 +enable_so_descriptors_per_page__drm_via_sg_info_14046 descriptors_per_page _drm_via_sg_info 0 14046 NULL
148322 +enable_so_zlib_deflateInit2_fndecl_14048 zlib_deflateInit2 fndecl 5-4 14048 NULL
148323 +enable_so_nr_perf_callchain_entry_14049 nr perf_callchain_entry 0 14049 NULL
148324 +enable_so_C_SYSC_mbind_fndecl_14055 C_SYSC_mbind fndecl 5 14055 NULL
148325 +enable_so_ext3_xattr_set_handle_fndecl_14056 ext3_xattr_set_handle fndecl 6 14056 NULL nohasharray
148326 +enable_so_add_new_gdb_fndecl_14056 add_new_gdb fndecl 3 14056 &enable_so_ext3_xattr_set_handle_fndecl_14056
148327 +enable_so_nl80211_send_connect_result_fndecl_14057 nl80211_send_connect_result fndecl 5-7 14057 NULL nohasharray
148328 +enable_so_read_flush_procfs_fndecl_14057 read_flush_procfs fndecl 3 14057 &enable_so_nl80211_send_connect_result_fndecl_14057
148329 +enable_so_btrfs_fallocate_fndecl_14060 btrfs_fallocate fndecl 4-3 14060 NULL nohasharray
148330 +enable_so_ept_identity_map_addr_kvm_arch_14060 ept_identity_map_addr kvm_arch 0 14060 &enable_so_btrfs_fallocate_fndecl_14060
148331 +enable_so_entry_number_user_desc_14065 entry_number user_desc 0 14065 NULL
148332 +enable_so_cyttsp_spi_write_block_data_fndecl_14068 cyttsp_spi_write_block_data fndecl 4 14068 NULL
148333 +enable_so_sh_msiof_dma_once_fndecl_14090 sh_msiof_dma_once fndecl 4 14090 NULL nohasharray
148334 +enable_so_filemark_cnt_os_aux_s_14090 filemark_cnt os_aux_s 0 14090 &enable_so_sh_msiof_dma_once_fndecl_14090
148335 +enable_so_last_rate_n_flags_iwl_lq_sta_14099 last_rate_n_flags iwl_lq_sta 0 14099 NULL
148336 +enable_so_btmrvl_hscfgcmd_write_fndecl_14100 btmrvl_hscfgcmd_write fndecl 3 14100 NULL
148337 +enable_so_data_len_vscsibk_pend_14106 data_len vscsibk_pend 0 14106 NULL
148338 +enable_so_wil_write_file_wmi_fndecl_14109 wil_write_file_wmi fndecl 3 14109 NULL
148339 +enable_so_elem_size_xdr_array2_desc_14114 elem_size xdr_array2_desc 0 14114 NULL
148340 +enable_so_hfs_direct_IO_fndecl_14120 hfs_direct_IO fndecl 3 14120 NULL
148341 +enable_so_adaption_gsm_dlci_14123 adaption gsm_dlci 0 14123 NULL
148342 +enable_so_efd_count_ext4_free_data_14128 efd_count ext4_free_data 0 14128 NULL
148343 +enable_so_i2400m_net_rx_fndecl_14129 i2400m_net_rx fndecl 5 14129 NULL
148344 +enable_so_dqi_entry_size_qtree_mem_dqinfo_14150 dqi_entry_size qtree_mem_dqinfo 0 14150 NULL
148345 +enable_so_short_len_fat_ioctl_filldir_callback_14151 short_len fat_ioctl_filldir_callback 0 14151 NULL
148346 +enable_so_page_size_at24_platform_data_14152 page_size at24_platform_data 0 14152 NULL
148347 +enable_so_svcxdr_tmpalloc_fndecl_14154 svcxdr_tmpalloc fndecl 2 14154 NULL nohasharray
148348 +enable_so_num_ratios_coreclk_soc_desc_14154 num_ratios coreclk_soc_desc 0 14154 &enable_so_svcxdr_tmpalloc_fndecl_14154 nohasharray
148349 +enable_so_write_kmem_fndecl_14154 write_kmem fndecl 3 14154 &enable_so_num_ratios_coreclk_soc_desc_14154
148350 +enable_so_crypto_aead_setauthsize_fndecl_14158 crypto_aead_setauthsize fndecl 2 14158 NULL
148351 +enable_so_range_min_regmap_range_node_14166 range_min regmap_range_node 0 14166 NULL
148352 +enable_so_ocfs2_read_blocks_sync_fndecl_14169 ocfs2_read_blocks_sync fndecl 2 14169 NULL
148353 +enable_so_cmd_len_scsi_cmnd_14171 cmd_len scsi_cmnd 0 14171 NULL
148354 +enable_so_len_hermes_idstring_14173 len hermes_idstring 0 14173 NULL
148355 +enable_so_brcmf_usb_recv_ctl_fndecl_14174 brcmf_usb_recv_ctl fndecl 3 14174 NULL
148356 +enable_so_curr_tx_buf_size_mwifiex_adapter_14186 curr_tx_buf_size mwifiex_adapter 0 14186 NULL
148357 +enable_so_cfpkt_add_trail_fndecl_14191 cfpkt_add_trail fndecl 3 14191 NULL
148358 +enable_so_rxrpc_request_key_fndecl_14192 rxrpc_request_key fndecl 3 14192 NULL
148359 +enable_so_uvc_fraction_to_interval_fndecl_14194 uvc_fraction_to_interval fndecl 0-2-1 14194 NULL nohasharray
148360 +enable_so_btrfs_double_unlock_fndecl_14194 btrfs_double_unlock fndecl 2-4-5 14194 &enable_so_uvc_fraction_to_interval_fndecl_14194
148361 +enable_so_bg_block_bitmap_hi_ext4_group_desc_14201 bg_block_bitmap_hi ext4_group_desc 0 14201 NULL
148362 +enable_so_num_ports_mlx4_func_cap_14214 num_ports mlx4_func_cap 0 14214 NULL
148363 +enable_so___dma_map_cont_fndecl_14218 __dma_map_cont fndecl 5 14218 NULL
148364 +enable_so_e1000_copybreak_fndecl_14223 e1000_copybreak fndecl 3 14223 NULL
148365 +enable_so_hpfs_remove_dtree_fndecl_14224 hpfs_remove_dtree fndecl 2 14224 NULL
148366 +enable_so_hw_token_fotg210_qtd_14233 hw_token fotg210_qtd 0 14233 NULL
148367 +enable_so_comedi_alloc_devpriv_fndecl_14235 comedi_alloc_devpriv fndecl 2 14235 NULL
148368 +enable_so_ath6kl_wmi_test_cmd_fndecl_14243 ath6kl_wmi_test_cmd fndecl 3 14243 NULL nohasharray
148369 +enable_so_virtqueue_add_inbuf_fndecl_14243 virtqueue_add_inbuf fndecl 3 14243 &enable_so_ath6kl_wmi_test_cmd_fndecl_14243
148370 +enable_so_cy8ctmg110_read_regs_fndecl_14259 cy8ctmg110_read_regs fndecl 3 14259 NULL nohasharray
148371 +enable_so___wmi_send_fndecl_14259 __wmi_send fndecl 4 14259 &enable_so_cy8ctmg110_read_regs_fndecl_14259
148372 +enable_so_size_drm_scatter_gather_14264 size drm_scatter_gather 0 14264 NULL
148373 +enable_so_copy_from_buf_fndecl_14271 copy_from_buf fndecl 2-4 14271 NULL
148374 +enable_so_afs_cell_create_fndecl_14273 afs_cell_create fndecl 2 14273 NULL
148375 +enable_so_nilfs_sufile_block_get_segment_usage_fndecl_14278 nilfs_sufile_block_get_segment_usage fndecl 2 14278 NULL
148376 +enable_so_transfer_spi_master_14283 transfer spi_master 0 14283 NULL
148377 +enable_so_req_lim_delta_srp_aer_req_14289 req_lim_delta srp_aer_req 0 14289 NULL
148378 +enable_so_detect_a2_a2m_eiaj_fndecl_14292 detect_a2_a2m_eiaj fndecl 3 14292 NULL
148379 +enable_so_snd_pcm_oss_write2_fndecl_14295 snd_pcm_oss_write2 fndecl 3 14295 NULL
148380 +enable_so_yscroll_display_14301 yscroll display 0 14301 NULL
148381 +enable_so_size_ldt_struct_14303 size ldt_struct 0 14303 NULL
148382 +enable_so_dbg_fixed_rate_il_lq_sta_14306 dbg_fixed_rate il_lq_sta 0 14306 NULL
148383 +enable_so_outdiv_fll_div_14312 outdiv fll_div 0 14312 NULL
148384 +enable_so_scif_p2p_setsg_fndecl_14314 scif_p2p_setsg fndecl 3 14314 NULL
148385 +enable_so_iwl_dbgfs_csr_write_fndecl_14320 iwl_dbgfs_csr_write fndecl 3 14320 NULL
148386 +enable_so_nilfs_ilookup_fndecl_14324 nilfs_ilookup fndecl 3 14324 NULL
148387 +enable_so_udf_table_prealloc_blocks_fndecl_14325 udf_table_prealloc_blocks fndecl 5-0 14325 NULL
148388 +enable_so_gfn_kvm_mmu_page_14326 gfn kvm_mmu_page 0 14326 NULL
148389 +enable_so_pcbit_stat_fndecl_14327 pcbit_stat fndecl 2 14327 NULL
148390 +enable_so_hactive_hi_lvds_dvo_timing_14328 hactive_hi lvds_dvo_timing 0 14328 NULL
148391 +enable_so_data_offset_md_rdev_14330 data_offset md_rdev 0 14330 NULL
148392 +enable_so_pasid_limit_vardecl_kfd_pasid_c_14334 pasid_limit vardecl_kfd_pasid.c 0 14334 NULL
148393 +enable_so_vnet_hdr_sz_macvtap_queue_14351 vnet_hdr_sz macvtap_queue 0 14351 NULL
148394 +enable_so_do_sys_truncate_fndecl_14355 do_sys_truncate fndecl 2 14355 NULL
148395 +enable_so_current_committed_pstore_14356 current_committed pstore 0 14356 NULL
148396 +enable_so_start_section_nr_memory_block_14358 start_section_nr memory_block 0 14358 NULL
148397 +enable_so_blkno_attrlist_cursor_kern_14361 blkno attrlist_cursor_kern 0 14361 NULL
148398 +enable_so_size_set_mib_buffer_14366 size set_mib_buffer 0 14366 NULL
148399 +enable_so_do_jffs2_setxattr_fndecl_14373 do_jffs2_setxattr fndecl 5 14373 NULL nohasharray
148400 +enable_so_dm_bufio_get_fndecl_14373 dm_bufio_get fndecl 2 14373 &enable_so_do_jffs2_setxattr_fndecl_14373 nohasharray
148401 +enable_so_max_tokens_iw_ioctl_description_14373 max_tokens iw_ioctl_description 0 14373 &enable_so_dm_bufio_get_fndecl_14373
148402 +enable_so_nvme_trans_mode_page_create_fndecl_14375 nvme_trans_mode_page_create fndecl 4-7 14375 NULL
148403 +enable_so_length_scsiif_request_segment_14376 length scsiif_request_segment 0 14376 NULL
148404 +enable_so_highest_objectid_btrfs_root_14378 highest_objectid btrfs_root 0 14378 NULL
148405 +enable_so_num_phys__sas_node_14384 num_phys _sas_node 0 14384 NULL
148406 +enable_so_dma_in_iguanair_14391 dma_in iguanair 0 14391 NULL
148407 +enable_so_sisusbcon_scroll_area_fndecl_14392 sisusbcon_scroll_area fndecl 3-4 14392 NULL
148408 +enable_so_run_delalloc_nocow_fndecl_14395 run_delalloc_nocow fndecl 3-4 14395 NULL
148409 +enable_so_ssize_usbat_info_14405 ssize usbat_info 0 14405 NULL
148410 +enable_so_vmcb_iopm_nested_state_14411 vmcb_iopm nested_state 0 14411 NULL
148411 +enable_so_crtc_hblank_start_drm_display_mode_14412 crtc_hblank_start drm_display_mode 0 14412 NULL nohasharray
148412 +enable_so_rl_space_gfs2_rgrp_list_14412 rl_space gfs2_rgrp_list 0 14412 &enable_so_crtc_hblank_start_drm_display_mode_14412
148413 +enable_so_num_channels_hsi_config_14414 num_channels hsi_config 0 14414 NULL
148414 +enable_so_max_ep_fsl_udc_14417 max_ep fsl_udc 0 14417 NULL
148415 +enable_so_snd_es1938_capture_copy_fndecl_14425 snd_es1938_capture_copy fndecl 5 14425 NULL
148416 +enable_so_xlog_recover_process_one_iunlink_fndecl_14426 xlog_recover_process_one_iunlink fndecl 3-2 14426 NULL
148417 +enable_so_flush_fndecl_14454 flush fndecl 2 14454 NULL
148418 +enable_so_residual_data_length_pmcraid_ioasa_14459 residual_data_length pmcraid_ioasa 0 14459 NULL
148419 +enable_so__regmap_multi_reg_write_fndecl_14460 _regmap_multi_reg_write fndecl 3 14460 NULL
148420 +enable_so_data_inp_ep_vub300_mmc_host_14468 data_inp_ep vub300_mmc_host 0 14468 NULL nohasharray
148421 +enable_so_cfs_hash_create_fndecl_14468 cfs_hash_create fndecl 4-2-5 14468 &enable_so_data_inp_ep_vub300_mmc_host_14468
148422 +enable_so_ntfs_sync_mft_mirror_fndecl_14470 ntfs_sync_mft_mirror fndecl 2 14470 NULL
148423 +enable_so_cache_nat_entry_fndecl_14475 cache_nat_entry fndecl 2 14475 NULL
148424 +enable_so_groups_netlink_table_14476 groups netlink_table 0 14476 NULL
148425 +enable_so_t1_change_mtu_fndecl_14478 t1_change_mtu fndecl 2 14478 NULL
148426 +enable_so_udp_setsockopt_fndecl_14482 udp_setsockopt fndecl 5 14482 NULL
148427 +enable_so_rx_unit_if_sdio_card_14483 rx_unit if_sdio_card 0 14483 NULL
148428 +enable_so_ntfs_perform_write_fndecl_14496 ntfs_perform_write fndecl 3 14496 NULL
148429 +enable_so_btrfs_lookup_bio_sums_dio_fndecl_14498 btrfs_lookup_bio_sums_dio fndecl 4 14498 NULL
148430 +enable_so_gsm_control_send_fndecl_14499 gsm_control_send fndecl 4 14499 NULL
148431 +enable_so_num_vq_mic_device_desc_14503 num_vq mic_device_desc 0 14503 NULL
148432 +enable_so_bnad_q_num_adjust_fndecl_14512 bnad_q_num_adjust fndecl 2 14512 NULL
148433 +enable_so_irq_create_strict_mappings_fndecl_14522 irq_create_strict_mappings fndecl 4 14522 NULL
148434 +enable_so_memcg_update_all_list_lrus_fndecl_14532 memcg_update_all_list_lrus fndecl 1 14532 NULL
148435 +enable_so_viafb_second_offset_vardecl_viafbdev_c_14533 viafb_second_offset vardecl_viafbdev.c 0 14533 NULL
148436 +enable_so_len_extent_info_14542 len extent_info 0 14542 NULL
148437 +enable_so_ieee80211_get_hdrlen_from_skb_fndecl_14543 ieee80211_get_hdrlen_from_skb fndecl 0 14543 NULL
148438 +enable_so_ctrl_set_croph_fndecl_14545 ctrl_set_croph fndecl 3 14545 NULL nohasharray
148439 +enable_so_word17_lpfc_mbx_read_config_14545 word17 lpfc_mbx_read_config 0 14545 &enable_so_ctrl_set_croph_fndecl_14545 nohasharray
148440 +enable_so_density_scsi_tape_14545 density scsi_tape 0 14545 &enable_so_word17_lpfc_mbx_read_config_14545
148441 +enable_so_lsave_cnt_ubifs_info_14547 lsave_cnt ubifs_info 0 14547 NULL
148442 +enable_so_inum_scrub_nocow_inode_14548 inum scrub_nocow_inode 0 14548 NULL nohasharray
148443 +enable_so_len_btrfsic_block_data_ctx_14548 len btrfsic_block_data_ctx 0 14548 &enable_so_inum_scrub_nocow_inode_14548
148444 +enable_so___alloc_memory_core_early_fndecl_14550 __alloc_memory_core_early fndecl 3-2 14550 NULL
148445 +enable_so_rn_snamelen_nfsd4_rename_14552 rn_snamelen nfsd4_rename 0 14552 NULL
148446 +enable_so_pri_wm_latency_write_fndecl_14556 pri_wm_latency_write fndecl 3 14556 NULL
148447 +enable_so_keyctl_update_key_fndecl_14558 keyctl_update_key fndecl 3 14558 NULL
148448 +enable_so_set_ep_max_packet_size_fndecl_14569 set_ep_max_packet_size fndecl 3 14569 NULL
148449 +enable_so_data_sector_size_mmc_ext_csd_14571 data_sector_size mmc_ext_csd 0 14571 NULL
148450 +enable_so_buffer_size_ncp_server_14574 buffer_size ncp_server 0 14574 NULL
148451 +enable_so_xfs_bmbt_set_blockcount_fndecl_14577 xfs_bmbt_set_blockcount fndecl 2 14577 NULL
148452 +enable_so_btrfs_wait_ordered_range_fndecl_14581 btrfs_wait_ordered_range fndecl 2 14581 NULL
148453 +enable_so_ext2_xattr_trusted_set_fndecl_14586 ext2_xattr_trusted_set fndecl 4 14586 NULL nohasharray
148454 +enable_so_be_length_pnfs_block_extent_14586 be_length pnfs_block_extent 0 14586 &enable_so_ext2_xattr_trusted_set_fndecl_14586
148455 +enable_so_channel_spacing_adf4350_platform_data_14594 channel_spacing adf4350_platform_data 0 14594 NULL
148456 +enable_so_link_pipe_fndecl_14595 link_pipe fndecl 3 14595 NULL
148457 +enable_so_proc_coredump_filter_write_fndecl_14602 proc_coredump_filter_write fndecl 3 14602 NULL
148458 +enable_so_nes_netdev_change_mtu_fndecl_14604 nes_netdev_change_mtu fndecl 2 14604 NULL
148459 +enable_so___get_user_pages_fndecl_14607 __get_user_pages fndecl 0-3 14607 NULL nohasharray
148460 +enable_so_befs_utf2nls_fndecl_14607 befs_utf2nls fndecl 3 14607 &enable_so___get_user_pages_fndecl_14607
148461 +enable_so_get_next_sit_page_fndecl_14609 get_next_sit_page fndecl 2 14609 NULL nohasharray
148462 +enable_so_skb_split_fndecl_14609 skb_split fndecl 3 14609 &enable_so_get_next_sit_page_fndecl_14609 nohasharray
148463 +enable_so_mqd_size_aligned_kfd_device_info_14609 mqd_size_aligned kfd_device_info 0 14609 &enable_so_skb_split_fndecl_14609
148464 +enable_so_alb_send_lp_vid_fndecl_14613 alb_send_lp_vid fndecl 4 14613 NULL
148465 +enable_so_len_c2_rxp_hdr_14614 len c2_rxp_hdr 0 14614 NULL
148466 +enable_so_recv_bulk_pipe_us_data_14615 recv_bulk_pipe us_data 0 14615 NULL nohasharray
148467 +enable_so_max_sge_isert_conn_14615 max_sge isert_conn 0 14615 &enable_so_recv_bulk_pipe_us_data_14615
148468 +enable_so_ddp_ppod_write_idata_fndecl_14617 ddp_ppod_write_idata fndecl 5 14617 NULL
148469 +enable_so_length_comedi_lrange_14641 length comedi_lrange 0 14641 NULL
148470 +enable_so_SSIDsize_bss_info_14644 SSIDsize bss_info 0 14644 NULL
148471 +enable_so_endpoint_usbdevfs_urb_14649 endpoint usbdevfs_urb 0 14649 NULL
148472 +enable_so___direct_map_fndecl_14652 __direct_map fndecl 6 14652 NULL
148473 +enable_so_write_dst_fndecl_14653 write_dst fndecl 3 14653 NULL
148474 +enable_so_wNdpOutAlignment_usb_cdc_ncm_ntb_parameters_14656 wNdpOutAlignment usb_cdc_ncm_ntb_parameters 0 14656 NULL
148475 +enable_so_ep_usbip_header_basic_14659 ep usbip_header_basic 0 14659 NULL
148476 +enable_so_interval_solo_enc_dev_14661 interval solo_enc_dev 0 14661 NULL
148477 +enable_so_fb_cvt_vbi_lines_fndecl_14664 fb_cvt_vbi_lines fndecl 0 14664 NULL
148478 +enable_so_ext2_try_to_allocate_fndecl_14672 ext2_try_to_allocate fndecl 4 14672 NULL
148479 +enable_so_sg_tablesize_usb_bus_14673 sg_tablesize usb_bus 0 14673 NULL
148480 +enable_so_aircable_prepare_write_buffer_fndecl_14678 aircable_prepare_write_buffer fndecl 3 14678 NULL
148481 +enable_so_file_size_squashfs_reg_inode_14679 file_size squashfs_reg_inode 0 14679 NULL
148482 +enable_so_mtu_vnic_devcmd_notify_14682 mtu vnic_devcmd_notify 0 14682 NULL
148483 +enable_so_lpfc_idiag_cmd_get_fndecl_14683 lpfc_idiag_cmd_get fndecl 2 14683 NULL
148484 +enable_so_rx_queue_entry_next_fndecl_14688 rx_queue_entry_next fndecl 0 14688 NULL
148485 +enable_so_ibmasm_new_command_fndecl_14689 ibmasm_new_command fndecl 2 14689 NULL
148486 +enable_so_smt_fill_path_fndecl_14692 smt_fill_path fndecl 0 14692 NULL
148487 +enable_so_ttm_tt_init_fndecl_14694 ttm_tt_init fndecl 3 14694 NULL
148488 +enable_so_num_sizes_vmw_surface_14695 num_sizes vmw_surface 0 14695 NULL
148489 +enable_so_fib_info_hash_size_vardecl_fib_semantics_c_14699 fib_info_hash_size vardecl_fib_semantics.c 0 14699 NULL
148490 +enable_so___alloc_bootmem_low_node_fndecl_14701 __alloc_bootmem_low_node fndecl 3-2 14701 NULL
148491 +enable_so_set_extent_new_fndecl_14709 set_extent_new fndecl 3-2 14709 NULL
148492 +enable_so_AdapterFibsSize_aac_init_14712 AdapterFibsSize aac_init 0 14712 NULL
148493 +enable_so_ftop_swregs_state_14719 ftop swregs_state 0 14719 NULL
148494 +enable_so_cxgbi_device_portmap_create_fndecl_14720 cxgbi_device_portmap_create fndecl 3 14720 NULL
148495 +enable_so_dac_mmap_min_addr_vardecl_14725 dac_mmap_min_addr vardecl 0 14725 NULL
148496 +enable_so_mmc_spi_data_do_fndecl_14728 mmc_spi_data_do fndecl 4 14728 NULL
148497 +enable_so_or51132_writebuf_fndecl_14730 or51132_writebuf fndecl 3 14730 NULL
148498 +enable_so_hdrlen_ppp_file_14734 hdrlen ppp_file 0 14734 NULL nohasharray
148499 +enable_so_ath9k_htc_rx_msg_fndecl_14734 ath9k_htc_rx_msg fndecl 3 14734 &enable_so_hdrlen_ppp_file_14734
148500 +enable_so_mcs_unwrap_fir_fndecl_14742 mcs_unwrap_fir fndecl 3 14742 NULL
148501 +enable_so_mlx4_alloc_icm_coherent_fndecl_14745 mlx4_alloc_icm_coherent fndecl 3 14745 NULL
148502 +enable_so_short_retry_limit_ipw_priv_14755 short_retry_limit ipw_priv 0 14755 NULL
148503 +enable_so_block_start_deflate_state_14787 block_start deflate_state 0 14787 NULL
148504 +enable_so_td_fill_fndecl_14788 td_fill fndecl 3 14788 NULL
148505 +enable_so_brcmf_sdio_verifymemory_fndecl_14795 brcmf_sdio_verifymemory fndecl 4-2 14795 NULL nohasharray
148506 +enable_so_realloc_buffer_fndecl_14795 realloc_buffer fndecl 2 14795 &enable_so_brcmf_sdio_verifymemory_fndecl_14795
148507 +enable_so_mthca_map_user_db_fndecl_14796 mthca_map_user_db fndecl 5 14796 NULL
148508 +enable_so_sg_read_fndecl_14804 sg_read fndecl 3 14804 NULL
148509 +enable_so_inode_claim_rsv_space_fndecl_14807 inode_claim_rsv_space fndecl 2 14807 NULL nohasharray
148510 +enable_so_sb_max_fwd_alloc_hpfs_sb_info_14807 sb_max_fwd_alloc hpfs_sb_info 0 14807 &enable_so_inode_claim_rsv_space_fndecl_14807
148511 +enable_so_nr_sectors_fat_floppy_defaults_14809 nr_sectors fat_floppy_defaults 0 14809 NULL
148512 +enable_so_nbytes_blkcipher_walk_14811 nbytes blkcipher_walk 0 14811 NULL
148513 +enable_so_read_fn_xusb_udc_14819 read_fn xusb_udc 0 14819 NULL
148514 +enable_so_fout_arizona_fll_14821 fout arizona_fll 0 14821 NULL
148515 +enable_so_wDescriptorLength_hid_descriptor_14825 wDescriptorLength hid_descriptor 0 14825 NULL
148516 +enable_so_tg3_change_mtu_fndecl_14826 tg3_change_mtu fndecl 2 14826 NULL
148517 +enable_so_residual_length_response_14830 residual_length response 0 14830 NULL
148518 +enable_so_shift_arg_pages_fndecl_14835 shift_arg_pages fndecl 2 14835 NULL
148519 +enable_so_h_s5p_jpeg_q_data_14846 h s5p_jpeg_q_data 0 14846 NULL
148520 +enable_so_vram_contig_size_vml_info_14851 vram_contig_size vml_info 0 14851 NULL
148521 +enable_so_sample_rate_max_lola_14860 sample_rate_max lola 0 14860 NULL
148522 +enable_so_threads_mask_netns_ipvs_14873 threads_mask netns_ipvs 0 14873 NULL
148523 +enable_so_submit_queues_vardecl_null_blk_c_14881 submit_queues vardecl_null_blk.c 0 14881 NULL
148524 +enable_so_invalidate_inode_pages2_range_fndecl_14896 invalidate_inode_pages2_range fndecl 0-3 14896 NULL
148525 +enable_so_ebcnt_vardecl_pagetest_c_14897 ebcnt vardecl_pagetest.c 0 14897 NULL
148526 +enable_so_crtc_vsync_end_drm_display_mode_14898 crtc_vsync_end drm_display_mode 0 14898 NULL
148527 +enable_so_extent_clear_unlock_delalloc_fndecl_14899 extent_clear_unlock_delalloc fndecl 2-3 14899 NULL nohasharray
148528 +enable_so_nkeys_tc_pedit_sel_14899 nkeys tc_pedit_sel 0 14899 &enable_so_extent_clear_unlock_delalloc_fndecl_14899
148529 +enable_so_len_move_extent_14902 len move_extent 0 14902 NULL
148530 +enable_so_ntty_write_fndecl_14903 ntty_write fndecl 3 14903 NULL
148531 +enable_so_vringh_init_user_fndecl_14905 vringh_init_user fndecl 3 14905 NULL
148532 +enable_so_max_height_vsp1_rwpf_14907 max_height vsp1_rwpf 0 14907 NULL nohasharray
148533 +enable_so_firmware_store_fndecl_14907 firmware_store fndecl 4 14907 &enable_so_max_height_vsp1_rwpf_14907
148534 +enable_so_in_pipe_usbtest_dev_14914 in_pipe usbtest_dev 0 14914 NULL
148535 +enable_so_root_btrfs_delayed_data_ref_14922 root btrfs_delayed_data_ref 0 14922 NULL
148536 +enable_so_tower_read_fndecl_14926 tower_read fndecl 3 14926 NULL nohasharray
148537 +enable_so_enc_pools_add_pages_fndecl_14926 enc_pools_add_pages fndecl 1 14926 &enable_so_tower_read_fndecl_14926
148538 +enable_so_e1000_frag_len_fndecl_14930 e1000_frag_len fndecl 0 14930 NULL
148539 +enable_so_at25_bin_read_fndecl_14936 at25_bin_read fndecl 5-6 14936 NULL
148540 +enable_so_get_allocated_memblock_reserved_regions_info_fndecl_14938 get_allocated_memblock_reserved_regions_info fndecl 0 14938 NULL nohasharray
148541 +enable_so_pagemap_read_fndecl_14938 pagemap_read fndecl 3 14938 &enable_so_get_allocated_memblock_reserved_regions_info_fndecl_14938
148542 +enable_so_decrypted_datalen_encrypted_key_payload_14939 decrypted_datalen encrypted_key_payload 0 14939 NULL
148543 +enable_so_ib_alloc_device_fndecl_14944 ib_alloc_device fndecl 1 14944 NULL
148544 +enable_so_tailout_ignore_xpnet_message_14949 tailout_ignore xpnet_message 0 14949 NULL
148545 +enable_so_ulong_write_file_fndecl_14950 ulong_write_file fndecl 3 14950 NULL
148546 +enable_so_osst_max_sg_segs_vardecl_osst_c_14954 osst_max_sg_segs vardecl_osst.c 0 14954 NULL
148547 +enable_so_vfio_pin_pages_fndecl_14957 vfio_pin_pages fndecl 1 14957 NULL
148548 +enable_so_bop_lookup_nilfs_bmap_operations_14977 bop_lookup nilfs_bmap_operations 0 14977 NULL
148549 +enable_so_fuse_read_update_size_fndecl_14982 fuse_read_update_size fndecl 2 14982 NULL
148550 +enable_so_icv_len_ieee80211_key_conf_14983 icv_len ieee80211_key_conf 0 14983 NULL
148551 +enable_so_alloc_ep_req_fndecl_14986 alloc_ep_req fndecl 3-2 14986 NULL
148552 +enable_so_min_gma_range_t_14997 min gma_range_t 0 14997 NULL nohasharray
148553 +enable_so_uhid_char_write_fndecl_14997 uhid_char_write fndecl 3 14997 &enable_so_min_gma_range_t_14997
148554 +enable_so_read_vmcore_fndecl_14998 read_vmcore fndecl 3 14998 NULL
148555 +enable_so_vfio_pci_set_msi_trigger_fndecl_15000 vfio_pci_set_msi_trigger fndecl 4-3 15000 NULL
148556 +enable_so_drbd_bm_words_fndecl_15003 drbd_bm_words fndecl 0 15003 NULL
148557 +enable_so___vhost_add_used_n_fndecl_15017 __vhost_add_used_n fndecl 3 15017 NULL
148558 +enable_so_buffers_ivtv_stream_15020 buffers ivtv_stream 0 15020 NULL
148559 +enable_so_SyS_rt_sigpending_fndecl_15033 SyS_rt_sigpending fndecl 2 15033 NULL
148560 +enable_so_num_rar_entries_ixgbe_mac_info_15039 num_rar_entries ixgbe_mac_info 0 15039 NULL
148561 +enable_so_rts51x_read_mem_fndecl_15042 rts51x_read_mem fndecl 4 15042 NULL nohasharray
148562 +enable_so_mpeglines_vardecl_cx23885_417_c_15042 mpeglines vardecl_cx23885-417.c 0 15042 &enable_so_rts51x_read_mem_fndecl_15042 nohasharray
148563 +enable_so_partitionStartingLocation_partitionDesc_15042 partitionStartingLocation partitionDesc 0 15042 &enable_so_mpeglines_vardecl_cx23885_417_c_15042
148564 +enable_so_max_io_len_dm_target_15053 max_io_len dm_target 0 15053 NULL
148565 +enable_so_buf_len_htc_packet_15054 buf_len htc_packet 0 15054 NULL
148566 +enable_so_hsync_pulse_width_lo_oaktrail_timing_info_15059 hsync_pulse_width_lo oaktrail_timing_info 0 15059 NULL nohasharray
148567 +enable_so_sc_netid_len_nfs4_setclientid_15059 sc_netid_len nfs4_setclientid 0 15059 &enable_so_hsync_pulse_width_lo_oaktrail_timing_info_15059
148568 +enable_so_height_cx2341x_handler_15060 height cx2341x_handler 0 15060 NULL
148569 +enable_so_vid_hdr_alsize_ubi_device_15065 vid_hdr_alsize ubi_device 0 15065 NULL
148570 +enable_so_ctrlbuf_dma_usbhid_device_15067 ctrlbuf_dma usbhid_device 0 15067 NULL nohasharray
148571 +enable_so_lpt_offs_bits_ubifs_info_15067 lpt_offs_bits ubifs_info 0 15067 &enable_so_ctrlbuf_dma_usbhid_device_15067
148572 +enable_so_write_len_ddb_flashio_15069 write_len ddb_flashio 0 15069 NULL
148573 +enable_so_xfs_rtcheck_range_fndecl_15077 xfs_rtcheck_range fndecl 3 15077 NULL nohasharray
148574 +enable_so_starting_offset_mpt2_diag_read_buffer_15077 starting_offset mpt2_diag_read_buffer 0 15077 &enable_so_xfs_rtcheck_range_fndecl_15077
148575 +enable_so_bm_words_bm_xfer_ctx_15081 bm_words bm_xfer_ctx 0 15081 NULL
148576 +enable_so_iommu_alloc_fndecl_15086 iommu_alloc fndecl 4 15086 NULL
148577 +enable_so_cirrusfb_get_memsize_fndecl_15094 cirrusfb_get_memsize fndecl 0 15094 NULL
148578 +enable_so_drm_mm_insert_node_in_range_generic_fndecl_15103 drm_mm_insert_node_in_range_generic fndecl 3 15103 NULL
148579 +enable_so_usbat_read_blocks_fndecl_15109 usbat_read_blocks fndecl 3 15109 NULL
148580 +enable_so_SYSC_bpf_fndecl_15113 SYSC_bpf fndecl 3 15113 NULL
148581 +enable_so_split_nodes_size_interleave_fndecl_15116 split_nodes_size_interleave fndecl 3-4-5 15116 NULL
148582 +enable_so_ubifs_tnc_replace_fndecl_15122 ubifs_tnc_replace fndecl 7 15122 NULL
148583 +enable_so_read_sb_page_fndecl_15124 read_sb_page fndecl 5-4-2 15124 NULL
148584 +enable_so_macvlan_change_mtu_fndecl_15125 macvlan_change_mtu fndecl 2 15125 NULL nohasharray
148585 +enable_so_ebcnt_vardecl_stresstest_c_15125 ebcnt vardecl_stresstest.c 0 15125 &enable_so_macvlan_change_mtu_fndecl_15125
148586 +enable_so_bytes_rds_iovec_15133 bytes rds_iovec 0 15133 NULL
148587 +enable_so_vcpu_id_kvm_vcpu_15135 vcpu_id kvm_vcpu 0 15135 NULL
148588 +enable_so_copy_oldmem_page_fndecl_15143 copy_oldmem_page fndecl 3 15143 NULL
148589 +enable_so_ath9k_hw_name_fndecl_15153 ath9k_hw_name fndecl 3 15153 NULL
148590 +enable_so_chaoskey_read_fndecl_15155 chaoskey_read fndecl 3 15155 NULL
148591 +enable_so_info0_rx_msdu_start_15164 info0 rx_msdu_start 0 15164 NULL
148592 +enable_so_i_disk_sec_hpfs_inode_info_15165 i_disk_sec hpfs_inode_info 0 15165 NULL
148593 +enable_so_ovl_dir_llseek_fndecl_15169 ovl_dir_llseek fndecl 2 15169 NULL
148594 +enable_so_frontswap_curr_pages_fndecl_15172 frontswap_curr_pages fndecl 0 15172 NULL nohasharray
148595 +enable_so_xfs_idata_realloc_fndecl_15172 xfs_idata_realloc fndecl 2 15172 &enable_so_frontswap_curr_pages_fndecl_15172
148596 +enable_so_ieee80211_if_fmt_dot11MeshTTL_fndecl_15173 ieee80211_if_fmt_dot11MeshTTL fndecl 3 15173 NULL
148597 +enable_so_si_namelen_nfsd4_secinfo_15174 si_namelen nfsd4_secinfo 0 15174 NULL
148598 +enable_so_mce_write_fndecl_15178 mce_write fndecl 3 15178 NULL
148599 +enable_so_rssi_wl3501_card_15182 rssi wl3501_card 0 15182 NULL
148600 +enable_so_perform_sglist_fndecl_15184 perform_sglist fndecl 3 15184 NULL
148601 +enable_so_eip_tss_segment_32_15186 eip tss_segment_32 0 15186 NULL
148602 +enable_so_ucStateEntrySize__ATOM_PPLIB_POWERPLAYTABLE_15196 ucStateEntrySize _ATOM_PPLIB_POWERPLAYTABLE 0 15196 NULL
148603 +enable_so_p9_client_write_fndecl_15200 p9_client_write fndecl 0 15200 NULL
148604 +enable_so_mwifiex_regrdwr_write_fndecl_15202 mwifiex_regrdwr_write fndecl 3 15202 NULL
148605 +enable_so_top_qxl_urect_15205 top qxl_urect 0 15205 NULL
148606 +enable_so_gso_max_size_net_device_15213 gso_max_size net_device 0 15213 NULL
148607 +enable_so_sge_control_sge_params_15216 sge_control sge_params 0 15216 NULL
148608 +enable_so_sisusb_bulkout_msg_fndecl_15233 sisusb_bulkout_msg fndecl 5-3 15233 NULL nohasharray
148609 +enable_so_hfsplus_ext_lastblock_fndecl_15233 hfsplus_ext_lastblock fndecl 0 15233 &enable_so_sisusb_bulkout_msg_fndecl_15233
148610 +enable_so_genwqe_ffdc_buff_size_fndecl_15236 genwqe_ffdc_buff_size fndecl 0 15236 NULL
148611 +enable_so_surface_width_drm_fb_helper_surface_size_15237 surface_width drm_fb_helper_surface_size 0 15237 NULL
148612 +enable_so_len_sock_fprog_15239 len sock_fprog 0 15239 NULL
148613 +enable_so_qcom_scm_call_fndecl_15241 qcom_scm_call fndecl 4-6 15241 NULL
148614 +enable_so_do_setxattr_fndecl_15243 do_setxattr fndecl 5 15243 NULL
148615 +enable_so_result_wa_seg_15248 result wa_seg 0 15248 NULL nohasharray
148616 +enable_so_ide_cdrom_register_fndecl_15248 ide_cdrom_register fndecl 2 15248 &enable_so_result_wa_seg_15248
148617 +enable_so_sb_rextsize_xfs_sb_15250 sb_rextsize xfs_sb 0 15250 NULL
148618 +enable_so_rmsg_size_hv_netvsc_packet_15256 rmsg_size hv_netvsc_packet 0 15256 NULL
148619 +enable_so_current_credit_fndecl_15260 current_credit fndecl 0 15260 NULL nohasharray
148620 +enable_so_dm_block_location_fndecl_15260 dm_block_location fndecl 0 15260 &enable_so_current_credit_fndecl_15260
148621 +enable_so_window_start_btrfs_free_cluster_15262 window_start btrfs_free_cluster 0 15262 NULL
148622 +enable_so_num_tx_queues_net_device_15263 num_tx_queues net_device 0 15263 NULL
148623 +enable_so_writequeue_entry_complete_fndecl_15264 writequeue_entry_complete fndecl 2 15264 NULL
148624 +enable_so_isoc_in_endpointaddr_au0828_dev_15269 isoc_in_endpointaddr au0828_dev 0 15269 NULL nohasharray
148625 +enable_so_inode_bmap_fndecl_15269 inode_bmap fndecl 0 15269 &enable_so_isoc_in_endpointaddr_au0828_dev_15269
148626 +enable_so_bstr_printf_fndecl_15271 bstr_printf fndecl 0 15271 NULL
148627 +enable_so_recursive_scan_fndecl_15275 recursive_scan fndecl 5 15275 NULL
148628 +enable_so_rd_read_fndecl_15278 rd_read fndecl 3 15278 NULL
148629 +enable_so_nsect_ide_taskfile_15283 nsect ide_taskfile 0 15283 NULL
148630 +enable_so_srp_max_req_size_vardecl_ib_srpt_c_15291 srp_max_req_size vardecl_ib_srpt.c 0 15291 NULL nohasharray
148631 +enable_so_wacom_set_device_mode_fndecl_15291 wacom_set_device_mode fndecl 3 15291 &enable_so_srp_max_req_size_vardecl_ib_srpt_c_15291
148632 +enable_so_cx24120_writeregs_fndecl_15295 cx24120_writeregs fndecl 4 15295 NULL
148633 +enable_so_bytes_bitmap_storage_15310 bytes bitmap_storage 0 15310 NULL
148634 +enable_so_c2_change_mtu_fndecl_15316 c2_change_mtu fndecl 2 15316 NULL
148635 +enable_so_snd_pcm_plug_client_channels_buf_fndecl_15318 snd_pcm_plug_client_channels_buf fndecl 3 15318 NULL
148636 +enable_so_hpfs_dir_lseek_fndecl_15324 hpfs_dir_lseek fndecl 2 15324 NULL
148637 +enable_so_ehci_urb_dequeue_fndecl_15333 ehci_urb_dequeue fndecl 3 15333 NULL
148638 +enable_so_dup_to_netobj_fndecl_15336 dup_to_netobj fndecl 3 15336 NULL nohasharray
148639 +enable_so_logicalBlockNum_kernel_lb_addr_15336 logicalBlockNum kernel_lb_addr 0 15336 &enable_so_dup_to_netobj_fndecl_15336
148640 +enable_so_cifs_readdata_alloc_fndecl_15339 cifs_readdata_alloc fndecl 1 15339 NULL
148641 +enable_so_min_io_size_ubifs_info_15340 min_io_size ubifs_info 0 15340 NULL
148642 +enable_so_check_can_nocow_fndecl_15347 check_can_nocow fndecl 2 15347 NULL
148643 +enable_so_efx_rx_mk_skb_fndecl_15349 efx_rx_mk_skb fndecl 5 15349 NULL
148644 +enable_so_s_cluster_bits_ext4_sb_info_15353 s_cluster_bits ext4_sb_info 0 15353 NULL nohasharray
148645 +enable_so_msr_srcimp_desc_15353 msr srcimp_desc 0 15353 &enable_so_s_cluster_bits_ext4_sb_info_15353
148646 +enable_so_nfs_file_direct_read_fndecl_15359 nfs_file_direct_read fndecl 3 15359 NULL
148647 +enable_so_pathmtu_sctp_sock_15363 pathmtu sctp_sock 0 15363 NULL
148648 +enable_so_seq_len_key_params_15366 seq_len key_params 0 15366 NULL
148649 +enable_so_num_total_plane_drm_mode_config_15377 num_total_plane drm_mode_config 0 15377 NULL
148650 +enable_so_udf_bread_fndecl_15411 udf_bread fndecl 2 15411 NULL
148651 +enable_so_pnp_alloc_fndecl_15414 pnp_alloc fndecl 1 15414 NULL
148652 +enable_so_setup_buffering_fndecl_15419 setup_buffering fndecl 3 15419 NULL
148653 +enable_so_logical_reada_extent_15426 logical reada_extent 0 15426 NULL
148654 +enable_so_pwc_set_video_mode_fndecl_15427 pwc_set_video_mode fndecl 5 15427 NULL
148655 +enable_so_set_nat_entry_set_15434 set nat_entry_set 0 15434 NULL
148656 +enable_so_ati_remote_sendpacket_fndecl_15435 ati_remote_sendpacket fndecl 2 15435 NULL
148657 +enable_so_max_vpi_lpfc_hba_15442 max_vpi lpfc_hba 0 15442 NULL
148658 +enable_so_eeprom_93xx46_bin_read_fndecl_15447 eeprom_93xx46_bin_read fndecl 5-6 15447 NULL
148659 +enable_so_callout_len_request_key_auth_15448 callout_len request_key_auth 0 15448 NULL
148660 +enable_so_code_page_dir_hpfs_spare_block_15449 code_page_dir hpfs_spare_block 0 15449 NULL
148661 +enable_so_cpd_size_blkcg_policy_15451 cpd_size blkcg_policy 0 15451 NULL
148662 +enable_so_wdm_create_fndecl_15456 wdm_create fndecl 3 15456 NULL
148663 +enable_so_ivsize_old_aead_alg_15462 ivsize old_aead_alg 0 15462 NULL
148664 +enable_so_n_dpll_15476 n dpll 0 15476 NULL nohasharray
148665 +enable_so_regmap_spi_write_fndecl_15476 regmap_spi_write fndecl 3 15476 &enable_so_n_dpll_15476
148666 +enable_so_old_oblock_policy_result_15494 old_oblock policy_result 0 15494 NULL
148667 +enable_so_stripesize_btrfs_super_block_15501 stripesize btrfs_super_block 0 15501 NULL
148668 +enable_so_sys_rt_sigpending_fndecl_15506 sys_rt_sigpending fndecl 2 15506 NULL
148669 +enable_so_size_videobuf_buffer_15508 size videobuf_buffer 0 15508 NULL
148670 +enable_so_gfs2_fallocate_fndecl_15515 gfs2_fallocate fndecl 4-3 15515 NULL
148671 +enable_so_max_pkt_size_cx231xx_video_mode_15531 max_pkt_size cx231xx_video_mode 0 15531 NULL
148672 +enable_so_do_garbage_collect_fndecl_15533 do_garbage_collect fndecl 2 15533 NULL
148673 +enable_so_space_bits_ubifs_info_15538 space_bits ubifs_info 0 15538 NULL
148674 +enable_so_hi_priority_depth_MPT3SAS_ADAPTER_15543 hi_priority_depth MPT3SAS_ADAPTER 0 15543 NULL
148675 +enable_so_genwqe_user_vmap_fndecl_15544 genwqe_user_vmap fndecl 4 15544 NULL
148676 +enable_so_data_length_mts_transfer_context_15546 data_length mts_transfer_context 0 15546 NULL
148677 +enable_so_ep_in_kingsun_cb_15553 ep_in kingsun_cb 0 15553 NULL
148678 +enable_so_num_odfs_clkgen_pll_data_15554 num_odfs clkgen_pll_data 0 15554 NULL
148679 +enable_so_video_buffer_size_vivid_dev_15556 video_buffer_size vivid_dev 0 15556 NULL
148680 +enable_so_num_sge_ib_send_wr_15565 num_sge ib_send_wr 0 15565 NULL
148681 +enable_so_swiotlb_late_init_with_tbl_fndecl_15566 swiotlb_late_init_with_tbl fndecl 2 15566 NULL nohasharray
148682 +enable_so_push_frame_fndecl_15566 push_frame fndecl 2 15566 &enable_so_swiotlb_late_init_with_tbl_fndecl_15566
148683 +enable_so_s_map2blk_adfs_sb_info_15569 s_map2blk adfs_sb_info 0 15569 NULL
148684 +enable_so_NumTransferUnits_erase_unit_header_t_15585 NumTransferUnits erase_unit_header_t 0 15585 NULL
148685 +enable_so_SYSC_listxattr_fndecl_15587 SYSC_listxattr fndecl 3 15587 NULL
148686 +enable_so_len_nfs3_createargs_15604 len nfs3_createargs 0 15604 NULL
148687 +enable_so_hactive_lo_detailed_pixel_timing_15606 hactive_lo detailed_pixel_timing 0 15606 NULL
148688 +enable_so_gs_buf_alloc_fndecl_15608 gs_buf_alloc fndecl 2 15608 NULL
148689 +enable_so_blk_size_isp1362_ep_queue_15612 blk_size isp1362_ep_queue 0 15612 NULL nohasharray
148690 +enable_so_do_add_page_to_bio_fndecl_15612 do_add_page_to_bio fndecl 4-10 15612 &enable_so_blk_size_isp1362_ep_queue_15612
148691 +enable_so_udf_compute_nr_groups_fndecl_15617 udf_compute_nr_groups fndecl 0 15617 NULL
148692 +enable_so_num_edbs_asd_seq_data_15621 num_edbs asd_seq_data 0 15621 NULL
148693 +enable_so_drm_addmap_core_fndecl_15627 drm_addmap_core fndecl 2-3 15627 NULL nohasharray
148694 +enable_so_count_preds_fndecl_15627 count_preds fndecl 0 15627 &enable_so_drm_addmap_core_fndecl_15627
148695 +enable_so_i915_error_state_buf_init_fndecl_15630 i915_error_state_buf_init fndecl 3 15630 NULL
148696 +enable_so_netlbl_domhsh_init_fndecl_15635 netlbl_domhsh_init fndecl 1 15635 NULL
148697 +enable_so_end_bttv_vbi_fmt_15637 end bttv_vbi_fmt 0 15637 NULL nohasharray
148698 +enable_so_SyS_pselect6_fndecl_15637 SyS_pselect6 fndecl 1 15637 &enable_so_end_bttv_vbi_fmt_15637
148699 +enable_so_dma_in_redrat3_dev_15639 dma_in redrat3_dev 0 15639 NULL
148700 +enable_so_ext4_htree_create_dir_info_fndecl_15646 ext4_htree_create_dir_info fndecl 2 15646 NULL
148701 +enable_so_read_bytes_from_xdr_buf_fndecl_15654 read_bytes_from_xdr_buf fndecl 4-2 15654 NULL nohasharray
148702 +enable_so_extra_msdu_prefix_len_lib80211_crypto_ops_15654 extra_msdu_prefix_len lib80211_crypto_ops 0 15654 &enable_so_read_bytes_from_xdr_buf_fndecl_15654 nohasharray
148703 +enable_so_mapped_vram_radeonfb_info_15654 mapped_vram radeonfb_info 0 15654 &enable_so_extra_msdu_prefix_len_lib80211_crypto_ops_15654
148704 +enable_so_kvm_pv_enable_async_pf_fndecl_15662 kvm_pv_enable_async_pf fndecl 2 15662 NULL
148705 +enable_so_sb_rblocks_xfs_sb_15668 sb_rblocks xfs_sb 0 15668 NULL
148706 +enable_so_dm_array_get_value_fndecl_15673 dm_array_get_value fndecl 2 15673 NULL
148707 +enable_so_SyS_poll_fndecl_15679 SyS_poll fndecl 2 15679 NULL
148708 +enable_so_total_bnx2x_sriov_15692 total bnx2x_sriov 0 15692 NULL
148709 +enable_so_context_alloc_fndecl_15702 context_alloc fndecl 3 15702 NULL
148710 +enable_so_numa_scan_offset_mm_struct_15710 numa_scan_offset mm_struct 0 15710 NULL
148711 +enable_so_btrfs_chunk_sub_stripes_fndecl_15711 btrfs_chunk_sub_stripes fndecl 0 15711 NULL
148712 +enable_so_ib_umem_page_count_fndecl_15714 ib_umem_page_count fndecl 0 15714 NULL
148713 +enable_so_name_len_nilfs_dir_entry_15715 name_len nilfs_dir_entry 0 15715 NULL
148714 +enable_so_user_size_drm_i915_gem_userptr_15716 user_size drm_i915_gem_userptr 0 15716 NULL
148715 +enable_so_di_xblk_qnx4_inode_entry_15719 di_xblk qnx4_inode_entry 0 15719 NULL
148716 +enable_so_new_tape_buffer_fndecl_15721 new_tape_buffer fndecl 3 15721 NULL
148717 +enable_so_datafab_write_data_fndecl_15723 datafab_write_data fndecl 4 15723 NULL
148718 +enable_so_lcd_height_atyfb_par_15743 lcd_height atyfb_par 0 15743 NULL
148719 +enable_so_st_int_ioctl_fndecl_15750 st_int_ioctl fndecl 3 15750 NULL
148720 +enable_so_ip_tunnel_change_mtu_fndecl_15752 ip_tunnel_change_mtu fndecl 2 15752 NULL
148721 +enable_so_transfer_done_snd_usb_substream_15753 transfer_done snd_usb_substream 0 15753 NULL
148722 +enable_so_xres__sisbios_mode_15754 xres _sisbios_mode 0 15754 NULL
148723 +enable_so_udf_add_aext_fndecl_15762 udf_add_aext fndecl 4 15762 NULL
148724 +enable_so_niu_change_mtu_fndecl_15765 niu_change_mtu fndecl 2 15765 NULL
148725 +enable_so_header_read_sd_15767 header_read sd 0 15767 NULL
148726 +enable_so_mc13xxx_spi_write_fndecl_15768 mc13xxx_spi_write fndecl 3 15768 NULL
148727 +enable_so_tx_put__synclinkmp_info_15770 tx_put _synclinkmp_info 0 15770 NULL
148728 +enable_so_btrfs_create_qgroup_fndecl_15772 btrfs_create_qgroup fndecl 3 15772 NULL
148729 +enable_so_size_order_mesh_table_15774 size_order mesh_table 0 15774 NULL
148730 +enable_so_rdma_read_chunk_lcl_fndecl_15778 rdma_read_chunk_lcl fndecl 7 15778 NULL nohasharray
148731 +enable_so_ntfs_copy_from_user_iter_fndecl_15778 ntfs_copy_from_user_iter fndecl 5-3 15778 &enable_so_rdma_read_chunk_lcl_fndecl_15778
148732 +enable_so_xfs_bmap_split_extent_at_fndecl_15780 xfs_bmap_split_extent_at fndecl 3 15780 NULL
148733 +enable_so_PacketLength_wa_xfer_packet_status_len_hwaiso_15781 PacketLength wa_xfer_packet_status_len_hwaiso 0 15781 NULL
148734 +enable_so_vde_ast_vbios_enhtable_15784 vde ast_vbios_enhtable 0 15784 NULL
148735 +enable_so_maxports_dgnc_board_15787 maxports dgnc_board 0 15787 NULL
148736 +enable_so_bulkin_endpoint_addr_rsi_91x_usbdev_15790 bulkin_endpoint_addr rsi_91x_usbdev 0 15790 NULL nohasharray
148737 +enable_so_count_nfs4_readdir_arg_15790 count nfs4_readdir_arg 0 15790 &enable_so_bulkin_endpoint_addr_rsi_91x_usbdev_15790
148738 +enable_so_simple_attr_read_fndecl_15793 simple_attr_read fndecl 3 15793 NULL
148739 +enable_so_add_delayed_tree_ref_fndecl_15797 add_delayed_tree_ref fndecl 7-8-5-6-9 15797 NULL
148740 +enable_so_region_size_dm_region_hash_15798 region_size dm_region_hash 0 15798 NULL
148741 +enable_so_fi_ndatablk_nilfs_finfo_15799 fi_ndatablk nilfs_finfo 0 15799 NULL
148742 +enable_so_ath_rxbuf_alloc_fndecl_15802 ath_rxbuf_alloc fndecl 2 15802 NULL
148743 +enable_so_datablob_hmac_verify_fndecl_15809 datablob_hmac_verify fndecl 4 15809 NULL
148744 +enable_so___xfs_get_blocks_fndecl_15812 __xfs_get_blocks fndecl 2 15812 NULL
148745 +enable_so_cache_read_fndecl_15813 cache_read fndecl 3 15813 NULL
148746 +enable_so_user_regset_copyout_fndecl_15823 user_regset_copyout fndecl 7 15823 NULL nohasharray
148747 +enable_so_n_match_sets_cfg80211_sched_scan_request_15823 n_match_sets cfg80211_sched_scan_request 0 15823 &enable_so_user_regset_copyout_fndecl_15823
148748 +enable_so_ocfs2_read_blocks_fndecl_15834 ocfs2_read_blocks fndecl 2 15834 NULL
148749 +enable_so_skb_make_writable_fndecl_15836 skb_make_writable fndecl 2 15836 NULL
148750 +enable_so_block_llseek_fndecl_15846 block_llseek fndecl 2 15846 NULL
148751 +enable_so_msg_print_ext_body_fndecl_15847 msg_print_ext_body fndecl 0 15847 NULL
148752 +enable_so_net2272_read_fndecl_15850 net2272_read fndecl 0 15850 NULL
148753 +enable_so_sb_set_blocksize_fndecl_15860 sb_set_blocksize fndecl 2-0 15860 NULL
148754 +enable_so_period_bytes_min_snd_pcm_hardware_15864 period_bytes_min snd_pcm_hardware 0 15864 NULL
148755 +enable_so_SYSC_kexec_load_fndecl_15874 SYSC_kexec_load fndecl 2 15874 NULL
148756 +enable_so_unix_mkname_fndecl_15883 unix_mkname fndecl 2 15883 NULL
148757 +enable_so_ie_len_cfg80211_auth_request_15886 ie_len cfg80211_auth_request 0 15886 NULL
148758 +enable_so_num_fitmsg_context_skd_device_15897 num_fitmsg_context skd_device 0 15897 NULL
148759 +enable_so_num_pds_mthca_limits_15899 num_pds mthca_limits 0 15899 NULL nohasharray
148760 +enable_so_size_drm_i915_error_state_buf_15899 size drm_i915_error_state_buf 0 15899 &enable_so_num_pds_mthca_limits_15899
148761 +enable_so_usb_alloc_dev_fndecl_15902 usb_alloc_dev fndecl 3 15902 NULL
148762 +enable_so_dir_info_len_ceph_file_info_15905 dir_info_len ceph_file_info 0 15905 NULL nohasharray
148763 +enable_so_flags_v4l2_ioctl_info_15905 flags v4l2_ioctl_info 0 15905 &enable_so_dir_info_len_ceph_file_info_15905
148764 +enable_so_status_pch_udc_data_dma_desc_15911 status pch_udc_data_dma_desc 0 15911 NULL
148765 +enable_so_get_key_lib80211_crypto_ops_15916 get_key lib80211_crypto_ops 0 15916 NULL
148766 +enable_so_group_width_ore_layout_15927 group_width ore_layout 0 15927 NULL
148767 +enable_so_midi_service_irq_fndecl_15930 midi_service_irq fndecl 0 15930 NULL
148768 +enable_so_npages_gssx_arg_accept_sec_context_15939 npages gssx_arg_accept_sec_context 0 15939 NULL
148769 +enable_so_netlink_sendmsg_fndecl_15943 netlink_sendmsg fndecl 3 15943 NULL
148770 +enable_so_hw_scan_ies_bufsize_ieee80211_local_15949 hw_scan_ies_bufsize ieee80211_local 0 15949 NULL
148771 +enable_so_xfs_ialloc_pagi_init_fndecl_15952 xfs_ialloc_pagi_init fndecl 3 15952 NULL
148772 +enable_so_mcp795_rtcc_read_fndecl_15956 mcp795_rtcc_read fndecl 4 15956 NULL
148773 +enable_so_nr_rtc_mem_15958 nr rtc_mem 0 15958 NULL
148774 +enable_so_data_dma_usb_acecad_15962 data_dma usb_acecad 0 15962 NULL
148775 +enable_so_splice_pipe_to_pipe_fndecl_15964 splice_pipe_to_pipe fndecl 3 15964 NULL
148776 +enable_so_brcmf_bus_add_txhdrlen_fndecl_15969 brcmf_bus_add_txhdrlen fndecl 2 15969 NULL
148777 +enable_so_ath6kl_wmi_beginscan_cmd_fndecl_15973 ath6kl_wmi_beginscan_cmd fndecl 8 15973 NULL
148778 +enable_so_first_burst_iscsi_session_15974 first_burst iscsi_session 0 15974 NULL
148779 +enable_so_mmc_test_area_io_fndecl_15982 mmc_test_area_io fndecl 2 15982 NULL
148780 +enable_so_nb_blocks_INFTLrecord_15986 nb_blocks INFTLrecord 0 15986 NULL
148781 +enable_so_v_back_porch_fb_cvt_data_15988 v_back_porch fb_cvt_data 0 15988 NULL
148782 +enable_so_data_len_usb_req_15991 data_len usb_req 0 15991 NULL
148783 +enable_so_nilfs_cpfile_get_blkoff_fndecl_15997 nilfs_cpfile_get_blkoff fndecl 2 15997 NULL
148784 +enable_so_num_mem_chunks_ath10k_wmi_16005 num_mem_chunks ath10k_wmi 0 16005 NULL
148785 +enable_so_last_offset_inode_defrag_16007 last_offset inode_defrag 0 16007 NULL
148786 +enable_so_il3945_get_rate_idx_by_rssi_fndecl_16010 il3945_get_rate_idx_by_rssi fndecl 0 16010 NULL
148787 +enable_so_ivtv_buf_copy_from_user_fndecl_16013 ivtv_buf_copy_from_user fndecl 4 16013 NULL
148788 +enable_so_xhci_urb_dequeue_fndecl_16025 xhci_urb_dequeue fndecl 3 16025 NULL nohasharray
148789 +enable_so_jfs_truncate_nolock_fndecl_16025 jfs_truncate_nolock fndecl 2 16025 &enable_so_xhci_urb_dequeue_fndecl_16025
148790 +enable_so_ct_atc_create_fndecl_16033 ct_atc_create fndecl 4-3 16033 NULL
148791 +enable_so_count_connectors_drm_mode_crtc_16038 count_connectors drm_mode_crtc 0 16038 NULL
148792 +enable_so_rts_threshold_ipw2100_priv_16044 rts_threshold ipw2100_priv 0 16044 NULL
148793 +enable_so_nsec_seg_buf_16050 nsec seg_buf 0 16050 NULL nohasharray
148794 +enable_so_snd_pcm_plugin_build_fndecl_16050 snd_pcm_plugin_build fndecl 5 16050 &enable_so_nsec_seg_buf_16050
148795 +enable_so_nouveau_bo_new_fndecl_16051 nouveau_bo_new fndecl 2 16051 NULL
148796 +enable_so_len_ahc_dma_seg_16052 len ahc_dma_seg 0 16052 NULL
148797 +enable_so_n_insns_comedi_insnlist_16056 n_insns comedi_insnlist 0 16056 NULL
148798 +enable_so_ts_packet_size_cx231xx_tsport_16063 ts_packet_size cx231xx_tsport 0 16063 NULL
148799 +enable_so_pgsize_vardecl_pagetest_c_16065 pgsize vardecl_pagetest.c 0 16065 NULL
148800 +enable_so_set_parameters_fndecl_16066 set_parameters fndecl 8-7 16066 NULL nohasharray
148801 +enable_so_compat_sys_sendfile64_fndecl_16066 compat_sys_sendfile64 fndecl 4 16066 &enable_so_set_parameters_fndecl_16066
148802 +enable_so_do_swap_page_fndecl_16068 do_swap_page fndecl 3 16068 NULL
148803 +enable_so_get_dst_timing_fndecl_16070 get_dst_timing fndecl 0 16070 NULL
148804 +enable_so_ht_print_chan_fndecl_16071 ht_print_chan fndecl 4-0-3 16071 NULL
148805 +enable_so_mgag200_ttm_tt_create_fndecl_16093 mgag200_ttm_tt_create fndecl 2 16093 NULL
148806 +enable_so_pci_add_resource_offset_fndecl_16095 pci_add_resource_offset fndecl 3 16095 NULL nohasharray
148807 +enable_so_wimax_addr_scnprint_fndecl_16095 wimax_addr_scnprint fndecl 2 16095 &enable_so_pci_add_resource_offset_fndecl_16095
148808 +enable_so_w_mode_size_16096 w mode_size 0 16096 NULL
148809 +enable_so_grow_dev_page_fndecl_16100 grow_dev_page fndecl 4-5-3 16100 NULL
148810 +enable_so_instances_minus_one_mxt_object_16107 instances_minus_one mxt_object 0 16107 NULL
148811 +enable_so_find_extend_vma_fndecl_16110 find_extend_vma fndecl 2 16110 NULL
148812 +enable_so_brcmf_usb_dl_send_bulk_fndecl_16113 brcmf_usb_dl_send_bulk fndecl 3 16113 NULL nohasharray
148813 +enable_so_xillybus_llseek_fndecl_16113 xillybus_llseek fndecl 2 16113 &enable_so_brcmf_usb_dl_send_bulk_fndecl_16113
148814 +enable_so_logfs_cleanse_block_fndecl_16119 logfs_cleanse_block fndecl 3 16119 NULL
148815 +enable_so_snd_rawmidi_kernel_write_fndecl_16129 snd_rawmidi_kernel_write fndecl 3 16129 NULL
148816 +enable_so_vf_count_efx_nic_16134 vf_count efx_nic 0 16134 NULL
148817 +enable_so_port_length_c67x00_td_16141 port_length c67x00_td 0 16141 NULL
148818 +enable_so_max_packet_length_mv_dqh_16157 max_packet_length mv_dqh 0 16157 NULL
148819 +enable_so_read_for_csum_fndecl_16170 read_for_csum fndecl 3-2 16170 NULL
148820 +enable_so_reiserfs_commit_write_fndecl_16171 reiserfs_commit_write fndecl 4 16171 NULL
148821 +enable_so_rxrpc_recvmsg_fndecl_16178 rxrpc_recvmsg fndecl 3 16178 NULL
148822 +enable_so_width_drm_mode_fb_cmd2_16185 width drm_mode_fb_cmd2 0 16185 NULL
148823 +enable_so_h_input_res_16191 h input_res 0 16191 NULL
148824 +enable_so_sctp_getsockopt_local_addrs_fndecl_16201 sctp_getsockopt_local_addrs fndecl 2 16201 NULL
148825 +enable_so_osdname_len_osd_dev_info_16203 osdname_len osd_dev_info 0 16203 NULL
148826 +enable_so_xfs_difree_inobt_fndecl_16205 xfs_difree_inobt fndecl 4 16205 NULL
148827 +enable_so_sethdraddr_fndecl_16220 sethdraddr fndecl 0 16220 NULL nohasharray
148828 +enable_so_ipath_init_qp_table_fndecl_16220 ipath_init_qp_table fndecl 2 16220 &enable_so_sethdraddr_fndecl_16220
148829 +enable_so_blksize_mtd_blktrans_ops_16221 blksize mtd_blktrans_ops 0 16221 NULL nohasharray
148830 +enable_so_sys_fgetxattr_fndecl_16221 sys_fgetxattr fndecl 4 16221 &enable_so_blksize_mtd_blktrans_ops_16221
148831 +enable_so_ks8851_rdreg32_fndecl_16240 ks8851_rdreg32 fndecl 0 16240 NULL
148832 +enable_so_len_wmi_p2p_rx_probe_req_event_16241 len wmi_p2p_rx_probe_req_event 0 16241 NULL
148833 +enable_so_num_tbps___thermal_zone_16249 num_tbps __thermal_zone 0 16249 NULL
148834 +enable_so_nilfs_iget_locked_fndecl_16250 nilfs_iget_locked fndecl 3 16250 NULL
148835 +enable_so_xfs_getbmapx_fix_eof_hole_fndecl_16255 xfs_getbmapx_fix_eof_hole fndecl 5 16255 NULL
148836 +enable_so_num_desc__drm_via_sg_info_16262 num_desc _drm_via_sg_info 0 16262 NULL
148837 +enable_so_length_scsi_data_buffer_16267 length scsi_data_buffer 0 16267 NULL nohasharray
148838 +enable_so___do_huge_pmd_anonymous_page_fndecl_16267 __do_huge_pmd_anonymous_page fndecl 3 16267 &enable_so_length_scsi_data_buffer_16267
148839 +enable_so_s_fpg_ufs_sb_private_info_16269 s_fpg ufs_sb_private_info 0 16269 NULL
148840 +enable_so_s_inodes_per_group_ext2_sb_info_16273 s_inodes_per_group ext2_sb_info 0 16273 NULL
148841 +enable_so_obj_len_fndecl_16275 obj_len fndecl 0 16275 NULL
148842 +enable_so_bits_inflate_state_16300 bits inflate_state 0 16300 NULL
148843 +enable_so_m_dpll_16302 m dpll 0 16302 NULL nohasharray
148844 +enable_so_max_nvkm_fifo_16302 max nvkm_fifo 0 16302 &enable_so_m_dpll_16302 nohasharray
148845 +enable_so_crypto_alloc_instance2_fndecl_16302 crypto_alloc_instance2 fndecl 3 16302 &enable_so_max_nvkm_fifo_16302
148846 +enable_so_len_ieee80211_vendor_radiotap_16308 len ieee80211_vendor_radiotap 0 16308 NULL
148847 +enable_so_stripe_status_fndecl_16312 stripe_status fndecl 5 16312 NULL
148848 +enable_so_jent_zalloc_fndecl_16331 jent_zalloc fndecl 1 16331 NULL
148849 +enable_so_l2tp_session_create_fndecl_16341 l2tp_session_create fndecl 1 16341 NULL
148850 +enable_so_iq_prod_lcnphy_iq_est_16363 iq_prod lcnphy_iq_est 0 16363 NULL
148851 +enable_so_i_pwr_phy_iq_est_16365 i_pwr phy_iq_est 0 16365 NULL
148852 +enable_so_channels_snd_emu10k1_fx8010_pcm_16368 channels snd_emu10k1_fx8010_pcm 0 16368 NULL
148853 +enable_so_udf_get_pblock_virt15_fndecl_16373 udf_get_pblock_virt15 fndecl 4 16373 NULL nohasharray
148854 +enable_so_btrfs_free_tree_block_fndecl_16373 btrfs_free_tree_block fndecl 4 16373 &enable_so_udf_get_pblock_virt15_fndecl_16373
148855 +enable_so_f2fs_dentry_hash_fndecl_16378 f2fs_dentry_hash fndecl 0 16378 NULL
148856 +enable_so_samsung_clk_init_fndecl_16382 samsung_clk_init fndecl 3 16382 NULL
148857 +enable_so_scsi_format_extd_sense_fndecl_16388 scsi_format_extd_sense fndecl 2 16388 NULL
148858 +enable_so_sr_set_blocklength_fndecl_16390 sr_set_blocklength fndecl 2 16390 NULL
148859 +enable_so_dsize_ip_set_16391 dsize ip_set 0 16391 NULL
148860 +enable_so_max_nr_frames_gnttab_query_size_16393 max_nr_frames gnttab_query_size 0 16393 NULL
148861 +enable_so_set_pio_mode_fndecl_16395 set_pio_mode fndecl 2 16395 NULL nohasharray
148862 +enable_so_ip_options_get_alloc_fndecl_16395 ip_options_get_alloc fndecl 1 16395 &enable_so_set_pio_mode_fndecl_16395 nohasharray
148863 +enable_so_pci_map_page_fndecl_16395 pci_map_page fndecl 0 16395 &enable_so_ip_options_get_alloc_fndecl_16395
148864 +enable_so_rt2x00debug_read_queue_stats_fndecl_16396 rt2x00debug_read_queue_stats fndecl 3 16396 NULL
148865 +enable_so_SYSC_setgroups_fndecl_16397 SYSC_setgroups fndecl 1 16397 NULL
148866 +enable_so___logfs_seek_data_fndecl_16398 __logfs_seek_data fndecl 2 16398 NULL
148867 +enable_so_usbat_execute_command_fndecl_16400 usbat_execute_command fndecl 3 16400 NULL
148868 +enable_so_statelen_drbg_core_16405 statelen drbg_core 0 16405 NULL
148869 +enable_so_romfs_dev_read_fndecl_16412 romfs_dev_read fndecl 2-4 16412 NULL
148870 +enable_so_bcnt_aoeif_16414 bcnt aoeif 0 16414 NULL
148871 +enable_so_cmd_buf_nr_drm_exynos_g2d_set_cmdlist_16416 cmd_buf_nr drm_exynos_g2d_set_cmdlist 0 16416 NULL
148872 +enable_so_n_sectors_hpfs_super_block_16421 n_sectors hpfs_super_block 0 16421 NULL
148873 +enable_so_bNrInPins_uac_selector_unit_descriptor_16423 bNrInPins uac_selector_unit_descriptor 0 16423 NULL
148874 +enable_so_ep_in_usbtest_info_16442 ep_in usbtest_info 0 16442 NULL
148875 +enable_so_ReadHSCX_fndecl_16444 ReadHSCX fndecl 0 16444 NULL nohasharray
148876 +enable_so_garp_request_join_fndecl_16444 garp_request_join fndecl 4 16444 &enable_so_ReadHSCX_fndecl_16444
148877 +enable_so_mpu3050_xyz_read_reg_fndecl_16445 mpu3050_xyz_read_reg fndecl 3 16445 NULL
148878 +enable_so_endp_in_zd1201_16446 endp_in zd1201 0 16446 NULL
148879 +enable_so_wp_page_copy_fndecl_16450 wp_page_copy fndecl 3 16450 NULL
148880 +enable_so_bad_dma_addr_vardecl_amd_gart_64_c_16460 bad_dma_addr vardecl_amd_gart_64.c 0 16460 NULL nohasharray
148881 +enable_so_array_zalloc_fndecl_16460 array_zalloc fndecl 1-2 16460 &enable_so_bad_dma_addr_vardecl_amd_gart_64_c_16460
148882 +enable_so_prism2_change_mtu_fndecl_16473 prism2_change_mtu fndecl 2 16473 NULL
148883 +enable_so_m_sectbb_log_xfs_mount_16477 m_sectbb_log xfs_mount 0 16477 NULL
148884 +enable_so_nilfs_iget_fndecl_16478 nilfs_iget fndecl 3 16478 NULL
148885 +enable_so_btrfs_insert_xattr_item_fndecl_16490 btrfs_insert_xattr_item fndecl 4 16490 NULL
148886 +enable_so_msg_count_amd8111e_rx_dr_16493 msg_count amd8111e_rx_dr 0 16493 NULL
148887 +enable_so_blksz_fw_dl_mwifiex_pcie_device_16498 blksz_fw_dl mwifiex_pcie_device 0 16498 NULL nohasharray
148888 +enable_so_ttm_page_alloc_init_fndecl_16498 ttm_page_alloc_init fndecl 2 16498 &enable_so_blksz_fw_dl_mwifiex_pcie_device_16498
148889 +enable_so_crypt_alloc_buffer_fndecl_16511 crypt_alloc_buffer fndecl 2 16511 NULL
148890 +enable_so_cfs_cpt_num_estimate_fndecl_16512 cfs_cpt_num_estimate fndecl 0 16512 NULL
148891 +enable_so_blocks_available_dio_submit_16522 blocks_available dio_submit 0 16522 NULL
148892 +enable_so_xb_suballoc_loc_ocfs2_xattr_block_16523 xb_suballoc_loc ocfs2_xattr_block 0 16523 NULL
148893 +enable_so_comm_size_perf_comm_event_16533 comm_size perf_comm_event 0 16533 NULL
148894 +enable_so_i_next_alloc_goal_udf_inode_info_16538 i_next_alloc_goal udf_inode_info 0 16538 NULL
148895 +enable_so_tmds_register_read_bytes_fndecl_16541 tmds_register_read_bytes fndecl 3 16541 NULL
148896 +enable_so_MaxSimpleVolumes_aac_get_container_count_resp_16542 MaxSimpleVolumes aac_get_container_count_resp 0 16542 NULL
148897 +enable_so_max_mthca_srq_16551 max mthca_srq 0 16551 NULL
148898 +enable_so_groups_alloc_fndecl_16557 groups_alloc fndecl 1 16557 NULL
148899 +enable_so_hblank_hi_oaktrail_timing_info_16559 hblank_hi oaktrail_timing_info 0 16559 NULL
148900 +enable_so_ext3_try_to_allocate_fndecl_16565 ext3_try_to_allocate fndecl 5 16565 NULL
148901 +enable_so_cramfs_uncompress_block_fndecl_16569 cramfs_uncompress_block fndecl 4-2 16569 NULL
148902 +enable_so_n_barrier_cbs_vardecl_rcutorture_c_16575 n_barrier_cbs vardecl_rcutorture.c 0 16575 NULL
148903 +enable_so_descriptor_elements_timb_dma_platform_data_channel_16581 descriptor_elements timb_dma_platform_data_channel 0 16581 NULL
148904 +enable_so_segment_count_sit_f2fs_super_block_16582 segment_count_sit f2fs_super_block 0 16582 NULL
148905 +enable_so_n_phy_pm8001_chip_info_16585 n_phy pm8001_chip_info 0 16585 NULL
148906 +enable_so_len_atmel_priv_ioctl_16592 len atmel_priv_ioctl 0 16592 NULL
148907 +enable_so_ino_logfs_block_16599 ino logfs_block 0 16599 NULL
148908 +enable_so_dma_bits_nvkm_mmu_16609 dma_bits nvkm_mmu 0 16609 NULL
148909 +enable_so_ext4_group_extend_fndecl_16613 ext4_group_extend fndecl 3 16613 NULL
148910 +enable_so_amdgpu_ttm_gtt_read_fndecl_16621 amdgpu_ttm_gtt_read fndecl 3 16621 NULL
148911 +enable_so_dst_btrfs_ioctl_qgroup_assign_args_16623 dst btrfs_ioctl_qgroup_assign_args 0 16623 NULL
148912 +enable_so_ceph_fsync_fndecl_16625 ceph_fsync fndecl 2 16625 NULL
148913 +enable_so_ext_tree_remove_fndecl_16629 ext_tree_remove fndecl 3-4 16629 NULL nohasharray
148914 +enable_so_uc_outSize_upc_req_16629 uc_outSize upc_req 0 16629 &enable_so_ext_tree_remove_fndecl_16629
148915 +enable_so_fault_inject_write_fndecl_16637 fault_inject_write fndecl 3 16637 NULL
148916 +enable_so_key_id_len_module_signature_16641 key_id_len module_signature 0 16641 NULL
148917 +enable_so_crtc_hsync_start_drm_display_mode_16643 crtc_hsync_start drm_display_mode 0 16643 NULL
148918 +enable_so_wpa_ie_len_mwifiex_private_16651 wpa_ie_len mwifiex_private 0 16651 NULL
148919 +enable_so_notify_uva_vmci_set_notify_info_16655 notify_uva vmci_set_notify_info 0 16655 NULL
148920 +enable_so_y_size_mms114_platform_data_16671 y_size mms114_platform_data 0 16671 NULL
148921 +enable_so_dlfb_get_edid_fndecl_16677 dlfb_get_edid fndecl 0 16677 NULL
148922 +enable_so_success_minstrel_rate_stats_16683 success minstrel_rate_stats 0 16683 NULL
148923 +enable_so___alloc_objio_seg_fndecl_16688 __alloc_objio_seg fndecl 1 16688 NULL nohasharray
148924 +enable_so_cons_read_buffer_16688 cons read_buffer 0 16688 &enable_so___alloc_objio_seg_fndecl_16688
148925 +enable_so_batadv_check_unicast_ttvn_fndecl_16693 batadv_check_unicast_ttvn fndecl 3 16693 NULL
148926 +enable_so_efx_ef10_pci_sriov_enable_fndecl_16694 efx_ef10_pci_sriov_enable fndecl 2 16694 NULL
148927 +enable_so_reserved_qps_mlx4_dev_cap_16699 reserved_qps mlx4_dev_cap 0 16699 NULL
148928 +enable_so_ad714x_spi_read_fndecl_16700 ad714x_spi_read fndecl 4 16700 NULL
148929 +enable_so_tlv_buf_len_mwifiex_scan_cmd_config_16702 tlv_buf_len mwifiex_scan_cmd_config 0 16702 NULL nohasharray
148930 +enable_so_trace_insert_enum_map_file_fndecl_16702 trace_insert_enum_map_file fndecl 3 16702 &enable_so_tlv_buf_len_mwifiex_scan_cmd_config_16702
148931 +enable_so_multi_io_quirk_mmc_host_ops_16729 multi_io_quirk mmc_host_ops 0 16729 NULL
148932 +enable_so_fat_length_fat_boot_sector_16730 fat_length fat_boot_sector 0 16730 NULL
148933 +enable_so_width_qxl_head_16734 width qxl_head 0 16734 NULL
148934 +enable_so_kimage_alloc_init_fndecl_16737 kimage_alloc_init fndecl 3 16737 NULL
148935 +enable_so_fault_disconnect_write_fndecl_16742 fault_disconnect_write fndecl 3 16742 NULL
148936 +enable_so_blockshift_sddr55_card_info_16749 blockshift sddr55_card_info 0 16749 NULL
148937 +enable_so_data_avtab_datum_16759 data avtab_datum 0 16759 NULL
148938 +enable_so_cpu_msix_table_sz_MPT2SAS_ADAPTER_16760 cpu_msix_table_sz MPT2SAS_ADAPTER 0 16760 NULL
148939 +enable_so_dma_ops_alloc_addresses_fndecl_16763 dma_ops_alloc_addresses fndecl 3-4-0 16763 NULL
148940 +enable_so_cluster_vardecl_pd_c_16770 cluster vardecl_pd.c 0 16770 NULL nohasharray
148941 +enable_so_num_q_csio_wrm_16770 num_q csio_wrm 0 16770 &enable_so_cluster_vardecl_pd_c_16770
148942 +enable_so_vlv_get_dsi_pclk_fndecl_16773 vlv_get_dsi_pclk fndecl 2 16773 NULL
148943 +enable_so_len_f2fs_str_16776 len f2fs_str 0 16776 NULL
148944 +enable_so_security_inode_need_killpriv_fndecl_16777 security_inode_need_killpriv fndecl 0 16777 NULL
148945 +enable_so_qxl_draw_opaque_fb_fndecl_16781 qxl_draw_opaque_fb fndecl 2 16781 NULL
148946 +enable_so_u132_hcd_giveback_urb_fndecl_16783 u132_hcd_giveback_urb fndecl 4 16783 NULL nohasharray
148947 +enable_so_extra_prefix_len_ieee80211_crypto_ops_16783 extra_prefix_len ieee80211_crypto_ops 0 16783 &enable_so_u132_hcd_giveback_urb_fndecl_16783
148948 +enable_so_max_iu_len_srp_target_port_16784 max_iu_len srp_target_port 0 16784 NULL nohasharray
148949 +enable_so_iscsit_build_text_rsp_fndecl_16784 iscsit_build_text_rsp fndecl 0 16784 &enable_so_max_iu_len_srp_target_port_16784
148950 +enable_so_crypto_rfc4309_setauthsize_fndecl_16792 crypto_rfc4309_setauthsize fndecl 2 16792 NULL
148951 +enable_so_data_in_size_mpt2_ioctl_command_16804 data_in_size mpt2_ioctl_command 0 16804 NULL
148952 +enable_so_spu_subctxt_cnt_qib_user_info_16810 spu_subctxt_cnt qib_user_info 0 16810 NULL
148953 +enable_so_offset_btrfs_disk_key_16819 offset btrfs_disk_key 0 16819 NULL
148954 +enable_so_vxlan_gro_remcsum_fndecl_16823 vxlan_gro_remcsum fndecl 5-4-2 16823 NULL
148955 +enable_so_count_range_bits_fndecl_16830 count_range_bits fndecl 0-3 16830 NULL
148956 +enable_so_audit_send_reply_fndecl_16835 audit_send_reply fndecl 7 16835 NULL
148957 +enable_so_max_gen_ptrs_vardecl_net_namespace_c_16838 max_gen_ptrs vardecl_net_namespace.c 0 16838 NULL
148958 +enable_so_alignment_ubi_mkvol_req_16842 alignment ubi_mkvol_req 0 16842 NULL nohasharray
148959 +enable_so_esrt_data_size_vardecl_esrt_c_16842 esrt_data_size vardecl_esrt.c 0 16842 &enable_so_alignment_ubi_mkvol_req_16842
148960 +enable_so_base_jfs_log_16858 base jfs_log 0 16858 NULL
148961 +enable_so_radeon_bo_create_fndecl_16863 radeon_bo_create fndecl 2 16863 NULL
148962 +enable_so_drm_property_create_blob_fndecl_16869 drm_property_create_blob fndecl 2 16869 NULL
148963 +enable_so__ore_add_stripe_unit_fndecl_16884 _ore_add_stripe_unit fndecl 3-6 16884 NULL nohasharray
148964 +enable_so_odm_stripe_unit_pnfs_osd_data_map_16884 odm_stripe_unit pnfs_osd_data_map 0 16884 &enable_so__ore_add_stripe_unit_fndecl_16884
148965 +enable_so_dma_buf_size_ddb_output_16886 dma_buf_size ddb_output 0 16886 NULL
148966 +enable_so_sl_change_mtu_fndecl_16887 sl_change_mtu fndecl 2 16887 NULL
148967 +enable_so_era_array_root_superblock_disk_16891 era_array_root superblock_disk 0 16891 NULL
148968 +enable_so_buf_sz_ath10k_pci_pipe_16896 buf_sz ath10k_pci_pipe 0 16896 NULL
148969 +enable_so_ncbflooders_vardecl_rcutorture_c_16899 ncbflooders vardecl_rcutorture.c 0 16899 NULL
148970 +enable_so_smk_write_load_self_fndecl_16901 smk_write_load_self fndecl 3 16901 NULL
148971 +enable_so_msi2500_ctrl_msg_fndecl_16907 msi2500_ctrl_msg fndecl 0 16907 NULL
148972 +enable_so_n_ai_urbs_usbduxsigma_private_16912 n_ai_urbs usbduxsigma_private 0 16912 NULL
148973 +enable_so_geneve_build_header_fndecl_16917 geneve_build_header fndecl 4 16917 NULL
148974 +enable_so_bpf_program_num_elem_xt_bpf_info_16920 bpf_program_num_elem xt_bpf_info 0 16920 NULL
148975 +enable_so_cont_size_rock_state_16925 cont_size rock_state 0 16925 NULL
148976 +enable_so_snd_rawmidi_transmit_fndecl_16928 snd_rawmidi_transmit fndecl 3 16928 NULL
148977 +enable_so_sys_mbind_fndecl_16933 sys_mbind fndecl 2-1-5 16933 NULL
148978 +enable_so_size_intel_ringbuffer_16937 size intel_ringbuffer 0 16937 NULL
148979 +enable_so_ath10k_wmi_alloc_skb_fndecl_16949 ath10k_wmi_alloc_skb fndecl 2 16949 NULL
148980 +enable_so_len_pcan_usb_pro_rxmsg_16950 len pcan_usb_pro_rxmsg 0 16950 NULL
148981 +enable_so_intel_framebuffer_pitch_for_width_fndecl_16956 intel_framebuffer_pitch_for_width fndecl 2-1 16956 NULL
148982 +enable_so_vcs_read_fndecl_16962 vcs_read fndecl 3 16962 NULL
148983 +enable_so_mrst_lvds_find_best_pll_fndecl_16971 mrst_lvds_find_best_pll fndecl 4 16971 NULL
148984 +enable_so_fat_reserved_fat_bios_param_block_16977 fat_reserved fat_bios_param_block 0 16977 NULL
148985 +enable_so_inquiry_len_scsi_device_16981 inquiry_len scsi_device 0 16981 NULL nohasharray
148986 +enable_so_num_tx_queues_ixgbe_adapter_16981 num_tx_queues ixgbe_adapter 0 16981 &enable_so_inquiry_len_scsi_device_16981
148987 +enable_so_zlib_uncompress_fndecl_16988 zlib_uncompress fndecl 6-5 16988 NULL
148988 +enable_so_ma901radio_set_freq_fndecl_16989 ma901radio_set_freq fndecl 2 16989 NULL
148989 +enable_so_tt3650_ci_msg_locked_fndecl_16990 tt3650_ci_msg_locked fndecl 4 16990 NULL
148990 +enable_so_endp_out2_zd1201_16998 endp_out2 zd1201 0 16998 NULL
148991 +enable_so_count_b43legacy_hwtxstatus_17011 count b43legacy_hwtxstatus 0 17011 NULL
148992 +enable_so_consumed_unix_skb_parms_17012 consumed unix_skb_parms 0 17012 NULL
148993 +enable_so_vhost_add_used_and_signal_n_fndecl_17013 vhost_add_used_and_signal_n fndecl 4 17013 NULL
148994 +enable_so_fragshift_snd_pcm_oss_runtime_17015 fragshift snd_pcm_oss_runtime 0 17015 NULL
148995 +enable_so_u132_hcd_abandon_urb_fndecl_17016 u132_hcd_abandon_urb fndecl 4 17016 NULL
148996 +enable_so_num_pads_media_entity_17022 num_pads media_entity 0 17022 NULL
148997 +enable_so_ext4_mb_load_buddy_fndecl_17030 ext4_mb_load_buddy fndecl 2 17030 NULL
148998 +enable_so_hw_context_size_drm_i915_private_17036 hw_context_size drm_i915_private 0 17036 NULL
148999 +enable_so_inuse_kmem_cache_17038 inuse kmem_cache 0 17038 NULL
149000 +enable_so_reiserfs_sync_file_fndecl_17045 reiserfs_sync_file fndecl 2 17045 NULL
149001 +enable_so_qla4xxx_post_ping_evt_work_fndecl_17049 qla4xxx_post_ping_evt_work fndecl 4 17049 NULL
149002 +enable_so_spi_write_then_read_fndecl_17050 spi_write_then_read fndecl 3-5 17050 NULL
149003 +enable_so_xstate_size_vardecl_17054 xstate_size vardecl 0 17054 NULL
149004 +enable_so_ufx_submit_urb_fndecl_17065 ufx_submit_urb fndecl 3 17065 NULL
149005 +enable_so_venus_lookup_fndecl_17066 venus_lookup fndecl 4 17066 NULL
149006 +enable_so_ieee80211_if_fmt_num_buffered_multicast_fndecl_17068 ieee80211_if_fmt_num_buffered_multicast fndecl 3 17068 NULL
149007 +enable_so_xfs_file_fallocate_fndecl_17093 xfs_file_fallocate fndecl 3-4 17093 NULL
149008 +enable_so_obfuscate_tx_buffer_fndecl_17095 obfuscate_tx_buffer fndecl 2 17095 NULL
149009 +enable_so_ocfs2_xattr_trusted_set_fndecl_17102 ocfs2_xattr_trusted_set fndecl 4 17102 NULL nohasharray
149010 +enable_so_nr_voices_seq_oss_synth_17102 nr_voices seq_oss_synth 0 17102 &enable_so_ocfs2_xattr_trusted_set_fndecl_17102
149011 +enable_so_dlm_user_request_fndecl_17104 dlm_user_request fndecl 6 17104 NULL nohasharray
149012 +enable_so_len_st_fifo_entry_17104 len st_fifo_entry 0 17104 &enable_so_dlm_user_request_fndecl_17104 nohasharray
149013 +enable_so_ro_step_fndecl_17104 ro_step fndecl 2 17104 &enable_so_len_st_fifo_entry_17104
149014 +enable_so_sdio_readsb_fndecl_17108 sdio_readsb fndecl 4 17108 NULL
149015 +enable_so_count_stframe_17112 count stframe 0 17112 NULL
149016 +enable_so_zoneshift_alauda_media_info_17115 zoneshift alauda_media_info 0 17115 NULL
149017 +enable_so_xfs_iomap_prealloc_size_fndecl_17118 xfs_iomap_prealloc_size fndecl 3 17118 NULL
149018 +enable_so_dma_map_area_fndecl_17121 dma_map_area fndecl 3-2-5-0 17121 NULL
149019 +enable_so_ieee80211_if_fmt_dot11MeshHoldingTimeout_fndecl_17128 ieee80211_if_fmt_dot11MeshHoldingTimeout fndecl 3 17128 NULL
149020 +enable_so_in___kfifo_17131 in __kfifo 0 17131 NULL nohasharray
149021 +enable_so_hci_sock_recvmsg_fndecl_17131 hci_sock_recvmsg fndecl 3 17131 &enable_so_in___kfifo_17131
149022 +enable_so_nilfs_sufile_do_set_error_fndecl_17133 nilfs_sufile_do_set_error fndecl 2 17133 NULL
149023 +enable_so_lnet_ipif_enumerate_fndecl_17135 lnet_ipif_enumerate fndecl 0 17135 NULL
149024 +enable_so_blockSize_ms_lib_ctrl_17144 blockSize ms_lib_ctrl 0 17144 NULL
149025 +enable_so_irq_dma_yealink_dev_17149 irq_dma yealink_dev 0 17149 NULL
149026 +enable_so_acpi_ns_get_pathname_length_fndecl_17152 acpi_ns_get_pathname_length fndecl 0 17152 NULL
149027 +enable_so_len_read_buffer_17166 len read_buffer 0 17166 NULL
149028 +enable_so_x86_clflush_size_cpuinfo_x86_17167 x86_clflush_size cpuinfo_x86 0 17167 NULL
149029 +enable_so_mcp251x_hw_tx_frame_fndecl_17170 mcp251x_hw_tx_frame fndecl 3 17170 NULL
149030 +enable_so_skb_copy_expand_fndecl_17174 skb_copy_expand fndecl 2 17174 NULL nohasharray
149031 +enable_so_b43legacy_plcp_get_bitrate_idx_cck_fndecl_17174 b43legacy_plcp_get_bitrate_idx_cck fndecl 0 17174 &enable_so_skb_copy_expand_fndecl_17174 nohasharray
149032 +enable_so_acpi_ex_allocate_name_string_fndecl_17174 acpi_ex_allocate_name_string fndecl 1-2 17174 &enable_so_b43legacy_plcp_get_bitrate_idx_cck_fndecl_17174
149033 +enable_so_ip_options_get_finish_fndecl_17176 ip_options_get_finish fndecl 4 17176 NULL nohasharray
149034 +enable_so_mtu_vnic_enet_config_17176 mtu vnic_enet_config 0 17176 &enable_so_ip_options_get_finish_fndecl_17176
149035 +enable_so_start_block_swap_extent_17179 start_block swap_extent 0 17179 NULL
149036 +enable_so_luma_size_s5p_mfc_ctx_17182 luma_size s5p_mfc_ctx 0 17182 NULL
149037 +enable_so_read_normal_summaries_fndecl_17185 read_normal_summaries fndecl 2 17185 NULL
149038 +enable_so_logical_blk_num_osst_tape_17216 logical_blk_num osst_tape 0 17216 NULL
149039 +enable_so_ud_clear_fndecl_17219 ud_clear fndecl 5-3-6-4 17219 NULL
149040 +enable_so_vsync_start_drm_display_mode_17229 vsync_start drm_display_mode 0 17229 NULL nohasharray
149041 +enable_so_paths_from_inode_fndecl_17229 paths_from_inode fndecl 1 17229 &enable_so_vsync_start_drm_display_mode_17229
149042 +enable_so_ioread32be_fndecl_17230 ioread32be fndecl 0 17230 NULL
149043 +enable_so___btrfs_add_ordered_extent_fndecl_17234 __btrfs_add_ordered_extent fndecl 4-2-5-3 17234 NULL
149044 +enable_so_vxge_device_register_fndecl_17243 vxge_device_register fndecl 4 17243 NULL
149045 +enable_so_relocated_ramdisk_vardecl_17246 relocated_ramdisk vardecl 0 17246 NULL
149046 +enable_so_get_pdptr_kvm_mmu_17247 get_pdptr kvm_mmu 0 17247 NULL
149047 +enable_so_count_acpi_object_package_17250 count acpi_object_package 0 17250 NULL
149048 +enable_so_diva_os_copy_from_user_fndecl_17251 diva_os_copy_from_user fndecl 4 17251 NULL nohasharray
149049 +enable_so_lustre_packed_msg_size_fndecl_17251 lustre_packed_msg_size fndecl 0 17251 &enable_so_diva_os_copy_from_user_fndecl_17251
149050 +enable_so_len_spi_ioc_transfer_17252 len spi_ioc_transfer 0 17252 NULL
149051 +enable_so_btrfs_free_chunk_fndecl_17255 btrfs_free_chunk fndecl 4-3 17255 NULL
149052 +enable_so_sctp_v6_err_fndecl_17257 sctp_v6_err fndecl 5 17257 NULL nohasharray
149053 +enable_so_num_vfs_be_adapter_17257 num_vfs be_adapter 0 17257 &enable_so_sctp_v6_err_fndecl_17257
149054 +enable_so_page_to_skb_fndecl_17261 page_to_skb fndecl 5-4 17261 NULL
149055 +enable_so_fat_sec_per_clus_fat_bios_param_block_17264 fat_sec_per_clus fat_bios_param_block 0 17264 NULL
149056 +enable_so_subpgsize_vardecl_subpagetest_c_17265 subpgsize vardecl_subpagetest.c 0 17265 NULL
149057 +enable_so_ntfs_mft_bitmap_find_and_alloc_free_rec_nolock_fndecl_17271 ntfs_mft_bitmap_find_and_alloc_free_rec_nolock fndecl 0 17271 NULL
149058 +enable_so_bnx2_rx_skb_fndecl_17272 bnx2_rx_skb fndecl 5-4 17272 NULL
149059 +enable_so_w_stk_size_17273 w stk_size 0 17273 NULL
149060 +enable_so_bnx2_nvram_write_fndecl_17277 bnx2_nvram_write fndecl 2-4 17277 NULL
149061 +enable_so_seq_buf_alloc_fndecl_17287 seq_buf_alloc fndecl 1 17287 NULL
149062 +enable_so_desired_speed_ide_drive_s_17293 desired_speed ide_drive_s 0 17293 NULL
149063 +enable_so_hsync_pulse_width_lo_detailed_pixel_timing_17297 hsync_pulse_width_lo detailed_pixel_timing 0 17297 NULL
149064 +enable_so_sup_segnum_nilfs_suinfo_update_17298 sup_segnum nilfs_suinfo_update 0 17298 NULL
149065 +enable_so_read_reg_sja1000_priv_17306 read_reg sja1000_priv 0 17306 NULL
149066 +enable_so_bytes_per_scan_line_vbe_mode_ib_17308 bytes_per_scan_line vbe_mode_ib 0 17308 NULL
149067 +enable_so_dlen_isdn_ppp_resetparams_17312 dlen isdn_ppp_resetparams 0 17312 NULL
149068 +enable_so_cfs_trace_dump_debug_buffer_usrstr_fndecl_17318 cfs_trace_dump_debug_buffer_usrstr fndecl 2 17318 NULL
149069 +enable_so_rpcrdma_create_chunks_fndecl_17322 rpcrdma_create_chunks fndecl 0 17322 NULL
149070 +enable_so_top_mthca_alloc_17324 top mthca_alloc 0 17324 NULL
149071 +enable_so_blockmask_sddr09_card_info_17325 blockmask sddr09_card_info 0 17325 NULL
149072 +enable_so_reserved_eqs_mlx4_caps_17333 reserved_eqs mlx4_caps 0 17333 NULL
149073 +enable_so_freeblk_xfs_da_geometry_17334 freeblk xfs_da_geometry 0 17334 NULL
149074 +enable_so_dev_count_kvm_io_bus_17340 dev_count kvm_io_bus 0 17340 NULL
149075 +enable_so_bytenr_btrfs_delayed_ref_node_17344 bytenr btrfs_delayed_ref_node 0 17344 NULL
149076 +enable_so_MaxBuses__MSG_IOC_FACTS_REPLY_17350 MaxBuses _MSG_IOC_FACTS_REPLY 0 17350 NULL
149077 +enable_so_dvb_dmxdev_read_sec_fndecl_17351 dvb_dmxdev_read_sec fndecl 4 17351 NULL
149078 +enable_so_audio_buf_size_f_uac1_opts_17353 audio_buf_size f_uac1_opts 0 17353 NULL
149079 +enable_so_tipc_alloc_entry_fndecl_17360 tipc_alloc_entry fndecl 2 17360 NULL
149080 +enable_so_udf_tgetblk_fndecl_17362 udf_tgetblk fndecl 2 17362 NULL
149081 +enable_so_extra_inflate_state_17367 extra inflate_state 0 17367 NULL
149082 +enable_so_nilfs_sufile_mark_dirty_fndecl_17370 nilfs_sufile_mark_dirty fndecl 2 17370 NULL nohasharray
149083 +enable_so_pn533_set_configuration_fndecl_17370 pn533_set_configuration fndecl 4 17370 &enable_so_nilfs_sufile_mark_dirty_fndecl_17370
149084 +enable_so_name_len_vardecl_initramfs_c_17373 name_len vardecl_initramfs.c 0 17373 NULL
149085 +enable_so_acl_len_nfs_getaclargs_17378 acl_len nfs_getaclargs 0 17378 NULL
149086 +enable_so_vram_total_vardecl_uvesafb_c_17381 vram_total vardecl_uvesafb.c 0 17381 NULL
149087 +enable_so_scatt_size_eata_info_17383 scatt_size eata_info 0 17383 NULL
149088 +enable_so_hw_hdr_len_cardstate_17385 hw_hdr_len cardstate 0 17385 NULL
149089 +enable_so_f_hidg_write_fndecl_17391 f_hidg_write fndecl 3 17391 NULL
149090 +enable_so_ext3_group_extend_fndecl_17396 ext3_group_extend fndecl 3 17396 NULL
149091 +enable_so_vmx_set_efer_fndecl_17400 vmx_set_efer fndecl 2 17400 NULL
149092 +enable_so_posix_acl_fix_xattr_userns_fndecl_17415 posix_acl_fix_xattr_userns fndecl 4 17415 NULL
149093 +enable_so_dlm_master_lookup_fndecl_17417 dlm_master_lookup fndecl 4 17417 NULL
149094 +enable_so_ufx_setup_modes_fndecl_17419 ufx_setup_modes fndecl 4 17419 NULL
149095 +enable_so_l2up_create_fndecl_17421 l2up_create fndecl 3 17421 NULL
149096 +enable_so_readpage_address_space_operations_17426 readpage address_space_operations 0 17426 NULL
149097 +enable_so_keys_jset_17429 keys jset 0 17429 NULL
149098 +enable_so_btrfs_cmp_data_prepare_fndecl_17436 btrfs_cmp_data_prepare fndecl 5 17436 NULL
149099 +enable_so_ceph_dir_fsync_fndecl_17447 ceph_dir_fsync fndecl 2 17447 NULL
149100 +enable_so_dd_fcvport_size_fc_function_template_17449 dd_fcvport_size fc_function_template 0 17449 NULL
149101 +enable_so_bufsz_kexec_segment_17458 bufsz kexec_segment 0 17458 NULL
149102 +enable_so___alloc_bootmem_node_nopanic_fndecl_17459 __alloc_bootmem_node_nopanic fndecl 3-2 17459 NULL
149103 +enable_so_bits_bgpio_chip_17461 bits bgpio_chip 0 17461 NULL
149104 +enable_so_paging32_gva_to_gpa_nested_fndecl_17465 paging32_gva_to_gpa_nested fndecl 2-3 17465 NULL
149105 +enable_so_sddr09_write_inplace_fndecl_17484 sddr09_write_inplace fndecl 4-3 17484 NULL
149106 +enable_so_e_block_mb_cache_entry_17485 e_block mb_cache_entry 0 17485 NULL
149107 +enable_so_elants_i2c_send_fndecl_17486 elants_i2c_send fndecl 3 17486 NULL
149108 +enable_so_dma_get_required_mask_fndecl_17491 dma_get_required_mask fndecl 0 17491 NULL
149109 +enable_so_mlx4_ib_reg_user_mr_fndecl_17492 mlx4_ib_reg_user_mr fndecl 2 17492 NULL
149110 +enable_so_qp_memcpy_from_queue_fndecl_17500 qp_memcpy_from_queue fndecl 5-4 17500 NULL
149111 +enable_so_ieee80211_if_fmt_dot11MeshMaxRetries_fndecl_17503 ieee80211_if_fmt_dot11MeshMaxRetries fndecl 3 17503 NULL
149112 +enable_so_user_buffer_offset_binder_proc_17508 user_buffer_offset binder_proc 0 17508 NULL
149113 +enable_so_invalidate_fndecl_17509 invalidate fndecl 4-3 17509 NULL
149114 +enable_so_read_dst_fndecl_17513 read_dst fndecl 3 17513 NULL nohasharray
149115 +enable_so_npages_free_dma_pool_17513 npages_free dma_pool 0 17513 &enable_so_read_dst_fndecl_17513
149116 +enable_so_dbg_intr_buf_fndecl_17526 dbg_intr_buf fndecl 2 17526 NULL
149117 +enable_so_ext4_iget_fndecl_17527 ext4_iget fndecl 2 17527 NULL
149118 +enable_so_mei_read_fndecl_17528 mei_read fndecl 3 17528 NULL
149119 +enable_so_max3421_urb_dequeue_fndecl_17530 max3421_urb_dequeue fndecl 3 17530 NULL
149120 +enable_so_offset_icmp_bxm_17531 offset icmp_bxm 0 17531 NULL
149121 +enable_so_rndis_set_oid_fndecl_17536 rndis_set_oid fndecl 4 17536 NULL
149122 +enable_so_dm_stats_create_fndecl_17540 dm_stats_create fndecl 4-2-3 17540 NULL
149123 +enable_so_wdm_read_fndecl_17542 wdm_read fndecl 3 17542 NULL
149124 +enable_so_fb_alloc_cmap_fndecl_17545 fb_alloc_cmap fndecl 2 17545 NULL
149125 +enable_so_root_cluster_msdos_sb_info_17547 root_cluster msdos_sb_info 0 17547 NULL
149126 +enable_so_mlx4_en_rx_skb_fndecl_17554 mlx4_en_rx_skb fndecl 4 17554 NULL
149127 +enable_so_mchip_comp_read_frame_fndecl_17555 mchip_comp_read_frame fndecl 1 17555 NULL
149128 +enable_so_lcd_vsync_len_atyfb_par_17565 lcd_vsync_len atyfb_par 0 17565 NULL
149129 +enable_so_stack_size_ahd_softc_17574 stack_size ahd_softc 0 17574 NULL
149130 +enable_so_wMaxPacketSize_usb_rpipe_descriptor_17578 wMaxPacketSize usb_rpipe_descriptor 0 17578 NULL
149131 +enable_so_sb_fs_size_hpfs_sb_info_17581 sb_fs_size hpfs_sb_info 0 17581 NULL
149132 +enable_so_SyS_semtimedop_fndecl_17584 SyS_semtimedop fndecl 3 17584 NULL
149133 +enable_so_reg_bytes_regmap_format_17598 reg_bytes regmap_format 0 17598 NULL
149134 +enable_so_disk_num_bytes_btrfs_file_extent_item_17599 disk_num_bytes btrfs_file_extent_item 0 17599 NULL
149135 +enable_so_qlf_len_xfs_dq_logformat_17603 qlf_len xfs_dq_logformat 0 17603 NULL nohasharray
149136 +enable_so_ent_bread_fatent_operations_17603 ent_bread fatent_operations 0 17603 &enable_so_qlf_len_xfs_dq_logformat_17603
149137 +enable_so_isoc_ep_stk_camera_17604 isoc_ep stk_camera 0 17604 NULL nohasharray
149138 +enable_so_ext3_iget_fndecl_17604 ext3_iget fndecl 2 17604 &enable_so_isoc_ep_stk_camera_17604
149139 +enable_so_int_dist_fndecl_17618 int_dist fndecl 2-4-1-3 17618 NULL
149140 +enable_so_min_alloc_order_gen_pool_17628 min_alloc_order gen_pool 0 17628 NULL
149141 +enable_so_num_peri_pl330_config_17630 num_peri pl330_config 0 17630 NULL
149142 +enable_so_ctxts_extrabuf_qib_devdata_17634 ctxts_extrabuf qib_devdata 0 17634 NULL
149143 +enable_so_last_used_idx_vringh_17635 last_used_idx vringh 0 17635 NULL
149144 +enable_so_video_linelength_sis_video_info_17642 video_linelength sis_video_info 0 17642 NULL
149145 +enable_so_wl12xx_sdio_raw_read_fndecl_17648 wl12xx_sdio_raw_read fndecl 4 17648 NULL
149146 +enable_so_btree_insert_raw_fndecl_17655 btree_insert_raw fndecl 2 17655 NULL
149147 +enable_so_size_scsi_host_sg_pool_17661 size scsi_host_sg_pool 0 17661 NULL
149148 +enable_so_maybe_insert_hole_fndecl_17668 maybe_insert_hole fndecl 4-3 17668 NULL
149149 +enable_so_read_wl1273_core_17678 read wl1273_core 0 17678 NULL
149150 +enable_so_wl1251_cmd_template_set_fndecl_17679 wl1251_cmd_template_set fndecl 4 17679 NULL
149151 +enable_so_memory_block_size_probed_vardecl_init_64_c_17683 memory_block_size_probed vardecl_init_64.c 0 17683 NULL
149152 +enable_so_ieee80211_if_fmt_beacon_timeout_fndecl_17690 ieee80211_if_fmt_beacon_timeout fndecl 3 17690 NULL
149153 +enable_so_ivtv_copy_buf_to_user_fndecl_17692 ivtv_copy_buf_to_user fndecl 4 17692 NULL
149154 +enable_so__snd_pcm_hw_param_max_fndecl_17702 _snd_pcm_hw_param_max fndecl 3 17702 NULL
149155 +enable_so_mxt_show_instance_fndecl_17708 mxt_show_instance fndecl 0-2 17708 NULL nohasharray
149156 +enable_so_rx_dma_buf_sz_altera_tse_private_17708 rx_dma_buf_sz altera_tse_private 0 17708 &enable_so_mxt_show_instance_fndecl_17708
149157 +enable_so_u132_urb_dequeue_fndecl_17714 u132_urb_dequeue fndecl 3 17714 NULL
149158 +enable_so_csio_wr_alloc_q_fndecl_17717 csio_wr_alloc_q fndecl 3-2-6 17717 NULL nohasharray
149159 +enable_so_SyS_setgroups_fndecl_17717 SyS_setgroups fndecl 1 17717 &enable_so_csio_wr_alloc_q_fndecl_17717
149160 +enable_so_paging64_walk_addr_generic_fndecl_17719 paging64_walk_addr_generic fndecl 4-5 17719 NULL
149161 +enable_so_tries_p54_frame_sent_17721 tries p54_frame_sent 0 17721 NULL
149162 +enable_so_snd_efw_command_get_phys_meters_fndecl_17725 snd_efw_command_get_phys_meters fndecl 3 17725 NULL
149163 +enable_so_qp_host_get_user_memory_fndecl_17726 qp_host_get_user_memory fndecl 1-2 17726 NULL
149164 +enable_so_nilfs_cpfile_delete_checkpoint_fndecl_17728 nilfs_cpfile_delete_checkpoint fndecl 2 17728 NULL
149165 +enable_so_xdr_write_pages_fndecl_17729 xdr_write_pages fndecl 4 17729 NULL
149166 +enable_so_f_hidg_read_fndecl_17741 f_hidg_read fndecl 3 17741 NULL
149167 +enable_so_num_desc_blocks_fndecl_17744 num_desc_blocks fndecl 2 17744 NULL
149168 +enable_so_set_le_ih_k_offset_fndecl_17745 set_le_ih_k_offset fndecl 2 17745 NULL
149169 +enable_so_sock_no_sendpage_fndecl_17749 sock_no_sendpage fndecl 0 17749 NULL nohasharray
149170 +enable_so_pkg_len_hanwang_features_17749 pkg_len hanwang_features 0 17749 &enable_so_sock_no_sendpage_fndecl_17749
149171 +enable_so_sector_size_scsi_device_17750 sector_size scsi_device 0 17750 NULL
149172 +enable_so_host_efer_vardecl_vmx_c_17758 host_efer vardecl_vmx.c 0 17758 NULL
149173 +enable_so_g_token_size_fndecl_17759 g_token_size fndecl 0-2 17759 NULL
149174 +enable_so_max_queues_fm10k_mac_info_17760 max_queues fm10k_mac_info 0 17760 NULL
149175 +enable_so_read_hwrng_17766 read hwrng 0 17766 NULL
149176 +enable_so_of_gpio_count_fndecl_17773 of_gpio_count fndecl 0 17773 NULL
149177 +enable_so_fbcon_prepare_logo_fndecl_17781 fbcon_prepare_logo fndecl 5 17781 NULL
149178 +enable_so___e820_update_range_fndecl_17791 __e820_update_range fndecl 3 17791 NULL
149179 +enable_so_usX2Y_audio_stream_new_fndecl_17792 usX2Y_audio_stream_new fndecl 2-3 17792 NULL nohasharray
149180 +enable_so_db_to_fdb_xfs_dir_ops_17792 db_to_fdb xfs_dir_ops 0 17792 &enable_so_usX2Y_audio_stream_new_fndecl_17792
149181 +enable_so_nf_nat_ipv6_manip_pkt_fndecl_17794 nf_nat_ipv6_manip_pkt fndecl 2 17794 NULL
149182 +enable_so_number_of_blocks_ms_boot_attr_info_17802 number_of_blocks ms_boot_attr_info 0 17802 NULL
149183 +enable_so_sr_read_cd_fndecl_17813 sr_read_cd fndecl 5 17813 NULL
149184 +enable_so_pcpu_next_pop_fndecl_17814 pcpu_next_pop fndecl 4 17814 NULL
149185 +enable_so_posix_acl_fix_xattr_to_user_fndecl_17816 posix_acl_fix_xattr_to_user fndecl 2 17816 NULL
149186 +enable_so_snd_hda_override_conn_list_fndecl_17817 snd_hda_override_conn_list fndecl 3 17817 NULL nohasharray
149187 +enable_so_xenbus_file_write_fndecl_17817 xenbus_file_write fndecl 3 17817 &enable_so_snd_hda_override_conn_list_fndecl_17817
149188 +enable_so_paging64_gva_to_gpa_nested_fndecl_17820 paging64_gva_to_gpa_nested fndecl 2-3 17820 NULL
149189 +enable_so_i_blkbits_inode_17823 i_blkbits inode 0 17823 NULL
149190 +enable_so_tipc_recvmsg_fndecl_17825 tipc_recvmsg fndecl 3 17825 NULL
149191 +enable_so_SyS_mincore_fndecl_17834 SyS_mincore fndecl 1-2 17834 NULL
149192 +enable_so_max_sgl_entries_vardecl_mpt2sas_base_c_17839 max_sgl_entries vardecl_mpt2sas_base.c 0 17839 NULL
149193 +enable_so_hactive_lo_oaktrail_timing_info_17844 hactive_lo oaktrail_timing_info 0 17844 NULL
149194 +enable_so_qlcnic_sriov_alloc_bc_msg_fndecl_17846 qlcnic_sriov_alloc_bc_msg fndecl 2 17846 NULL
149195 +enable_so_dbg_fixed_rate_lq_sta_pers_17854 dbg_fixed_rate lq_sta_pers 0 17854 NULL
149196 +enable_so_discard_alignment_queue_limits_17856 discard_alignment queue_limits 0 17856 NULL
149197 +enable_so_current_table_count_acpi_table_list_17862 current_table_count acpi_table_list 0 17862 NULL
149198 +enable_so_bip_vcnt_bio_integrity_payload_17865 bip_vcnt bio_integrity_payload 0 17865 NULL
149199 +enable_so_fuse_get_req_for_background_fndecl_17874 fuse_get_req_for_background fndecl 2 17874 NULL nohasharray
149200 +enable_so_secondary_tail_adu_device_17874 secondary_tail adu_device 0 17874 &enable_so_fuse_get_req_for_background_fndecl_17874
149201 +enable_so_wl1273_fm_get_freq_fndecl_17876 wl1273_fm_get_freq fndecl 0 17876 NULL
149202 +enable_so_max_pkt_size_au0828_usb_isoc_ctl_17891 max_pkt_size au0828_usb_isoc_ctl 0 17891 NULL
149203 +enable_so_s_firstinodezone_sysv_sb_info_17901 s_firstinodezone sysv_sb_info 0 17901 NULL
149204 +enable_so_shortRetryLimit_ConfigRid_17906 shortRetryLimit ConfigRid 0 17906 NULL
149205 +enable_so_arch_gnttab_valloc_fndecl_17911 arch_gnttab_valloc fndecl 2 17911 NULL
149206 +enable_so_osd_req_read_sg_kern_fndecl_17913 osd_req_read_sg_kern fndecl 5 17913 NULL nohasharray
149207 +enable_so_sync_fence_alloc_fndecl_17913 sync_fence_alloc fndecl 1 17913 &enable_so_osd_req_read_sg_kern_fndecl_17913
149208 +enable_so_sg_pcopy_to_buffer_fndecl_17914 sg_pcopy_to_buffer fndecl 0 17914 NULL
149209 +enable_so_ipath_verbs_send_dma_fndecl_17922 ipath_verbs_send_dma fndecl 6-3 17922 NULL
149210 +enable_so_br_blockcount_xfs_bmbt_irec_17931 br_blockcount xfs_bmbt_irec 0 17931 NULL
149211 +enable_so___kfifo_dma_in_finish_r_fndecl_17938 __kfifo_dma_in_finish_r fndecl 3-2 17938 NULL
149212 +enable_so___vxge_hw_mempool_create_fndecl_17944 __vxge_hw_mempool_create fndecl 2 17944 NULL
149213 +enable_so_rtl2830_regmap_read_fndecl_17947 rtl2830_regmap_read fndecl 3-5 17947 NULL
149214 +enable_so_cache_do_downcall_fndecl_17949 cache_do_downcall fndecl 3 17949 NULL
149215 +enable_so_videobuf_dma_init_kernel_fndecl_17952 videobuf_dma_init_kernel fndecl 3 17952 NULL
149216 +enable_so_n_special_skd_device_17960 n_special skd_device 0 17960 NULL
149217 +enable_so_pkt_align_netvsc_device_17961 pkt_align netvsc_device 0 17961 NULL
149218 +enable_so_do_tee_fndecl_17969 do_tee fndecl 3 17969 NULL
149219 +enable_so_ab3100_get_register_page_interruptible_fndecl_17972 ab3100_get_register_page_interruptible fndecl 4 17972 NULL
149220 +enable_so_length_ore_io_state_17977 length ore_io_state 0 17977 NULL
149221 +enable_so_nilfs_set_last_segment_fndecl_17983 nilfs_set_last_segment fndecl 4-2 17983 NULL
149222 +enable_so_data3_sisusb_command_17984 data3 sisusb_command 0 17984 NULL
149223 +enable_so_channels_tiadc_device_17992 channels tiadc_device 0 17992 NULL
149224 +enable_so_fill_inquiry_response_fndecl_17994 fill_inquiry_response fndecl 3 17994 NULL
149225 +enable_so_get_context_size_fndecl_17999 get_context_size fndecl 0 17999 NULL
149226 +enable_so_order_per_bit_cma_18000 order_per_bit cma 0 18000 NULL
149227 +enable_so_target_xcopy_read_source_fndecl_18003 target_xcopy_read_source fndecl 5 18003 NULL
149228 +enable_so_size_aper_size_info_8_18012 size aper_size_info_8 0 18012 NULL nohasharray
149229 +enable_so_data_xfer_length_aac_srb_reply_18012 data_xfer_length aac_srb_reply 0 18012 &enable_so_size_aper_size_info_8_18012
149230 +enable_so_rx_frag_size_vardecl_be_main_c_18017 rx_frag_size vardecl_be_main.c 0 18017 NULL
149231 +enable_so_raid56_parity_recover_fndecl_18019 raid56_parity_recover fndecl 4 18019 NULL
149232 +enable_so_wimax_msg_fndecl_18021 wimax_msg fndecl 4 18021 NULL
149233 +enable_so_cmdlog_vardecl_ipw2200_c_18024 cmdlog vardecl_ipw2200.c 0 18024 NULL
149234 +enable_so_sl811h_urb_dequeue_fndecl_18025 sl811h_urb_dequeue fndecl 3 18025 NULL nohasharray
149235 +enable_so_condc_tomoyo_condition_18025 condc tomoyo_condition 0 18025 &enable_so_sl811h_urb_dequeue_fndecl_18025
149236 +enable_so_videobuf_to_dma_contig_fndecl_18026 videobuf_to_dma_contig fndecl 0 18026 NULL nohasharray
149237 +enable_so_rawv6_recvmsg_fndecl_18026 rawv6_recvmsg fndecl 3 18026 &enable_so_videobuf_to_dma_contig_fndecl_18026 nohasharray
149238 +enable_so_ceph_kvmalloc_fndecl_18026 ceph_kvmalloc fndecl 1 18026 &enable_so_rawv6_recvmsg_fndecl_18026
149239 +enable_so_dmamask_altera_dmaops_18027 dmamask altera_dmaops 0 18027 NULL
149240 +enable_so_start_data_mm_struct_18029 start_data mm_struct 0 18029 NULL
149241 +enable_so_copy_items_fndecl_18039 copy_items fndecl 7 18039 NULL
149242 +enable_so_read_device_fndecl_18043 read_device fndecl 3 18043 NULL
149243 +enable_so_ld_usb_write_fndecl_18045 ld_usb_write fndecl 3 18045 NULL
149244 +enable_so_sctp_make_op_error_fndecl_18050 sctp_make_op_error fndecl 5-6 18050 NULL
149245 +enable_so_ts_packet_size_cx23885_tsport_18052 ts_packet_size cx23885_tsport 0 18052 NULL
149246 +enable_so_sll_halen_sockaddr_ll_18063 sll_halen sockaddr_ll 0 18063 NULL
149247 +enable_so_ipath_get_base_info_fndecl_18064 ipath_get_base_info fndecl 3 18064 NULL
149248 +enable_so_snd_rawmidi_receive_fndecl_18080 snd_rawmidi_receive fndecl 3 18080 NULL
149249 +enable_so_add_wpa_key_fndecl_18083 add_wpa_key fndecl 3 18083 NULL
149250 +enable_so_bits_per_pixel_drm_framebuffer_18087 bits_per_pixel drm_framebuffer 0 18087 NULL
149251 +enable_so_di_nextents_xfs_icdinode_18090 di_nextents xfs_icdinode 0 18090 NULL
149252 +enable_so_inode2sd_fndecl_18094 inode2sd fndecl 3 18094 NULL
149253 +enable_so_do_async_mmap_readahead_fndecl_18112 do_async_mmap_readahead fndecl 5 18112 NULL
149254 +enable_so_befs_read_datastream_fndecl_18116 befs_read_datastream fndecl 3 18116 NULL
149255 +enable_so_block_bitmap_ext3_new_group_data_18117 block_bitmap ext3_new_group_data 0 18117 NULL
149256 +enable_so_send_mpa_reject_fndecl_18124 send_mpa_reject fndecl 3 18124 NULL
149257 +enable_so_ring_prod_per_user_data_18125 ring_prod per_user_data 0 18125 NULL
149258 +enable_so_tlb_preload_count_gru_create_context_req_18130 tlb_preload_count gru_create_context_req 0 18130 NULL nohasharray
149259 +enable_so_reshape_request_fndecl_18130 reshape_request fndecl 2 18130 &enable_so_tlb_preload_count_gru_create_context_req_18130
149260 +enable_so_fs_start_hfs_sb_info_18132 fs_start hfs_sb_info 0 18132 NULL
149261 +enable_so_num_ddr_avs_mthca_av_table_18139 num_ddr_avs mthca_av_table 0 18139 NULL
149262 +enable_so_byte_cnt_rx_desc_18142 byte_cnt rx_desc 0 18142 NULL
149263 +enable_so_i_iget5_block_iso_inode_info_18143 i_iget5_block iso_inode_info 0 18143 NULL
149264 +enable_so_softback_in_vardecl_fbcon_c_18148 softback_in vardecl_fbcon.c 0 18148 NULL
149265 +enable_so_read_word_onenand_chip_18150 read_word onenand_chip 0 18150 NULL
149266 +enable_so_bmv_length_getbmapx_18151 bmv_length getbmapx 0 18151 NULL
149267 +enable_so_start_i915_address_space_18152 start i915_address_space 0 18152 NULL
149268 +enable_so_nfs_dreq_bytes_left_fndecl_18154 nfs_dreq_bytes_left fndecl 0 18154 NULL
149269 +enable_so_ocrdma_alloc_frmr_fndecl_18161 ocrdma_alloc_frmr fndecl 2 18161 NULL
149270 +enable_so_qlcnic_enable_msix_fndecl_18171 qlcnic_enable_msix fndecl 2 18171 NULL
149271 +enable_so_num_gpu_pages_radeon_gart_18177 num_gpu_pages radeon_gart 0 18177 NULL
149272 +enable_so_ocfs2_test_suballoc_bit_fndecl_18180 ocfs2_test_suballoc_bit fndecl 6-5-4 18180 NULL
149273 +enable_so_offset_pktcdvd_device_18183 offset pktcdvd_device 0 18183 NULL
149274 +enable_so_nilfs_segctor_scan_file_fndecl_18195 nilfs_segctor_scan_file fndecl 0 18195 NULL
149275 +enable_so_natsemi_change_mtu_fndecl_18207 natsemi_change_mtu fndecl 2 18207 NULL
149276 +enable_so_bnad_debugfs_write_regrd_fndecl_18209 bnad_debugfs_write_regrd fndecl 3 18209 NULL
149277 +enable_so_sd_head_align_brcmfmac_sdio_platform_data_18210 sd_head_align brcmfmac_sdio_platform_data 0 18210 NULL
149278 +enable_so_fw_size_intel_dmc_header_18214 fw_size intel_dmc_header 0 18214 NULL
149279 +enable_so_ext3_bg_num_gdb_fndecl_18222 ext3_bg_num_gdb fndecl 0 18222 NULL nohasharray
149280 +enable_so_check_clk_sync_fndecl_18222 check_clk_sync fndecl 2 18222 &enable_so_ext3_bg_num_gdb_fndecl_18222
149281 +enable_so_xmit_cnt_mgsl_struct_18223 xmit_cnt mgsl_struct 0 18223 NULL
149282 +enable_so_ql_process_mac_rx_skb_fndecl_18226 ql_process_mac_rx_skb fndecl 5-4 18226 NULL
149283 +enable_so_btrfs_lookup_csums_range_fndecl_18235 btrfs_lookup_csums_range fndecl 2-3 18235 NULL
149284 +enable_so_ocfs2_insert_extent_fndecl_18242 ocfs2_insert_extent fndecl 3-4 18242 NULL
149285 +enable_so_payload_size_vmci_datagram_18243 payload_size vmci_datagram 0 18243 NULL
149286 +enable_so_cfg80211_calculate_bitrate_vht_fndecl_18246 cfg80211_calculate_bitrate_vht fndecl 0 18246 NULL
149287 +enable_so_next_free_transient_c_18248 next_free transient_c 0 18248 NULL
149288 +enable_so_inet_recv_error_fndecl_18251 inet_recv_error fndecl 3 18251 NULL
149289 +enable_so_posix_acl_xattr_count_fndecl_18262 posix_acl_xattr_count fndecl 1-0 18262 NULL
149290 +enable_so_video_proc_write_fndecl_18263 video_proc_write fndecl 3 18263 NULL
149291 +enable_so_msrpm_base_pa_vmcb_control_area_18266 msrpm_base_pa vmcb_control_area 0 18266 NULL
149292 +enable_so_end_extent_state_18270 end extent_state 0 18270 NULL
149293 +enable_so__nfs4_get_security_label_fndecl_18285 _nfs4_get_security_label fndecl 3 18285 NULL
149294 +enable_so_tda18218_rd_regs_fndecl_18293 tda18218_rd_regs fndecl 4-2 18293 NULL
149295 +enable_so_i915_parse_cmds_fndecl_18295 i915_parse_cmds fndecl 4-5 18295 NULL
149296 +enable_so_ocfs2_calc_refcount_meta_credits_fndecl_18305 ocfs2_calc_refcount_meta_credits fndecl 5-4 18305 NULL nohasharray
149297 +enable_so_rounded_hashtable_size_fndecl_18305 rounded_hashtable_size fndecl 0 18305 &enable_so_ocfs2_calc_refcount_meta_credits_fndecl_18305
149298 +enable_so_essid_len_iw_scan_req_18306 essid_len iw_scan_req 0 18306 NULL
149299 +enable_so_add_pfn_range_mapped_fndecl_18307 add_pfn_range_mapped fndecl 2 18307 NULL
149300 +enable_so_do_kmem_cache_create_fndecl_18316 do_kmem_cache_create fndecl 3-4-2 18316 NULL
149301 +enable_so_zone_spanned_pages_in_node_fndecl_18320 zone_spanned_pages_in_node fndecl 0-3-4 18320 NULL
149302 +enable_so_rpipes_wahc_18323 rpipes wahc 0 18323 NULL
149303 +enable_so_divider_sm501_clock_18331 divider sm501_clock 0 18331 NULL
149304 +enable_so_taps_oslec_state_18332 taps oslec_state 0 18332 NULL
149305 +enable_so_m_blockmask_xfs_mount_18334 m_blockmask xfs_mount 0 18334 NULL
149306 +enable_so_blk_alloc_flush_queue_fndecl_18340 blk_alloc_flush_queue fndecl 3 18340 NULL
149307 +enable_so_calc_pages_for_fndecl_18341 calc_pages_for fndecl 0-2-1 18341 NULL
149308 +enable_so_mon_bin_read_fndecl_18346 mon_bin_read fndecl 3 18346 NULL
149309 +enable_so_xfs_da_reada_buf_fndecl_18349 xfs_da_reada_buf fndecl 2 18349 NULL
149310 +enable_so_mb_cache_entry_insert_fndecl_18350 mb_cache_entry_insert fndecl 3 18350 NULL
149311 +enable_so_mgsl_load_tx_dma_buffer_fndecl_18355 mgsl_load_tx_dma_buffer fndecl 3 18355 NULL
149312 +enable_so_exit_int_info_vmcb_control_area_18357 exit_int_info vmcb_control_area 0 18357 NULL nohasharray
149313 +enable_so_elfnotes_sz_vardecl_vmcore_c_18357 elfnotes_sz vardecl_vmcore.c 0 18357 &enable_so_exit_int_info_vmcb_control_area_18357
149314 +enable_so_lbs_rdrf_write_fndecl_18361 lbs_rdrf_write fndecl 3 18361 NULL
149315 +enable_so_insert_fndecl_18368 insert fndecl 2 18368 NULL
149316 +enable_so_global_default_cipher_key_size_ecryptfs_mount_crypt_stat_18369 global_default_cipher_key_size ecryptfs_mount_crypt_stat 0 18369 NULL
149317 +enable_so_ascii2desc_fndecl_18370 ascii2desc fndecl 0-3 18370 NULL
149318 +enable_so_extent_write_locked_range_fndecl_18375 extent_write_locked_range fndecl 3 18375 NULL nohasharray
149319 +enable_so_perf_output_sample_ustack_fndecl_18375 perf_output_sample_ustack fndecl 2 18375 &enable_so_extent_write_locked_range_fndecl_18375
149320 +enable_so_len_btrfs_ordered_extent_18377 len btrfs_ordered_extent 0 18377 NULL
149321 +enable_so_n_bssids_wmi_start_scan_arg_18378 n_bssids wmi_start_scan_arg 0 18378 NULL
149322 +enable_so_rss_size_port_info_18379 rss_size port_info 0 18379 NULL
149323 +enable_so_dio_complete_fndecl_18380 dio_complete fndecl 0-2-3 18380 NULL
149324 +enable_so_xfs_rtany_summary_fndecl_18384 xfs_rtany_summary fndecl 5-3 18384 NULL
149325 +enable_so___extent_writepage_io_fndecl_18387 __extent_writepage_io fndecl 6 18387 NULL
149326 +enable_so_chunkshift_bitmap_counts_18388 chunkshift bitmap_counts 0 18388 NULL
149327 +enable_so_writepages_address_space_operations_18395 writepages address_space_operations 0 18395 NULL
149328 +enable_so_spc_modesense_blockdesc_fndecl_18397 spc_modesense_blockdesc fndecl 0 18397 NULL
149329 +enable_so_signer_len_module_signature_18402 signer_len module_signature 0 18402 NULL
149330 +enable_so_veth_change_mtu_fndecl_18405 veth_change_mtu fndecl 2 18405 NULL nohasharray
149331 +enable_so_ext4_inode_bitmap_fndecl_18405 ext4_inode_bitmap fndecl 0 18405 &enable_so_veth_change_mtu_fndecl_18405
149332 +enable_so_max_psize_uac2_rtd_params_18407 max_psize uac2_rtd_params 0 18407 NULL
149333 +enable_so_bNrChannels_uac2_as_header_descriptor_18413 bNrChannels uac2_as_header_descriptor 0 18413 NULL
149334 +enable_so_ieee80211_if_fmt_path_refresh_time_fndecl_18427 ieee80211_if_fmt_path_refresh_time fndecl 3 18427 NULL nohasharray
149335 +enable_so_raw_seticmpfilter_fndecl_18427 raw_seticmpfilter fndecl 3 18427 &enable_so_ieee80211_if_fmt_path_refresh_time_fndecl_18427
149336 +enable_so_dlmfs_file_write_fndecl_18431 dlmfs_file_write fndecl 3 18431 NULL
149337 +enable_so_fb_find_mode_fndecl_18438 fb_find_mode fndecl 7 18438 NULL
149338 +enable_so_data_len_hfa384x_tx_frame_18449 data_len hfa384x_tx_frame 0 18449 NULL nohasharray
149339 +enable_so_mp_tx_agg_buf_size_sdio_mmc_card_18449 mp_tx_agg_buf_size sdio_mmc_card 0 18449 &enable_so_data_len_hfa384x_tx_frame_18449
149340 +enable_so_size_ib_phys_buf_18455 size ib_phys_buf 0 18455 NULL
149341 +enable_so_copy_range_nfulnl_instance_18460 copy_range nfulnl_instance 0 18460 NULL
149342 +enable_so_get_next_ino_fndecl_18465 get_next_ino fndecl 0 18465 NULL
149343 +enable_so_bsize_jfs_sb_info_18477 bsize jfs_sb_info 0 18477 NULL
149344 +enable_so_xfs_free_extent_fndecl_18480 xfs_free_extent fndecl 2-3 18480 NULL
149345 +enable_so_exynos4_jpeg_get_stream_size_fndecl_18485 exynos4_jpeg_get_stream_size fndecl 0 18485 NULL
149346 +enable_so_vxfs_getfsh_fndecl_18506 vxfs_getfsh fndecl 2 18506 NULL
149347 +enable_so_kernfs_fop_write_fndecl_18508 kernfs_fop_write fndecl 3 18508 NULL
149348 +enable_so_chspc_adf4350_state_18514 chspc adf4350_state 0 18514 NULL
149349 +enable_so_ttm_bo_init_fndecl_18524 ttm_bo_init fndecl 3 18524 NULL
149350 +enable_so_tty_write_fndecl_18533 tty_write fndecl 3 18533 NULL
149351 +enable_so_ieee80211_if_fmt_last_beacon_fndecl_18537 ieee80211_if_fmt_last_beacon fndecl 3 18537 NULL
149352 +enable_so_progress_kcopyd_job_18540 progress kcopyd_job 0 18540 NULL
149353 +enable_so_sect_floppy_struct_18543 sect floppy_struct 0 18543 NULL
149354 +enable_so_ucode_size_bytes_common_firmware_header_18554 ucode_size_bytes common_firmware_header 0 18554 NULL
149355 +enable_so_cifs_security_flags_proc_write_fndecl_18559 cifs_security_flags_proc_write fndecl 3 18559 NULL
149356 +enable_so_riva_get_memlen_fndecl_18562 riva_get_memlen fndecl 0 18562 NULL nohasharray
149357 +enable_so_btrfs_create_tree_fndecl_18562 btrfs_create_tree fndecl 3 18562 &enable_so_riva_get_memlen_fndecl_18562
149358 +enable_so_change_protection_fndecl_18568 change_protection fndecl 3-2 18568 NULL
149359 +enable_so_ieee80211_if_fmt_auto_open_plinks_fndecl_18573 ieee80211_if_fmt_auto_open_plinks fndecl 3 18573 NULL
149360 +enable_so___max_nr_grant_frames_fndecl_18578 __max_nr_grant_frames fndecl 0 18578 NULL
149361 +enable_so_nilfs_btree_get_block_fndecl_18585 nilfs_btree_get_block fndecl 2 18585 NULL
149362 +enable_so_index_xtsplit_18586 index xtsplit 0 18586 NULL
149363 +enable_so_spidev_message_fndecl_18589 spidev_message fndecl 3 18589 NULL
149364 +enable_so_le_readq_fndecl_18598 le_readq fndecl 0 18598 NULL
149365 +enable_so_brcmu_pkt_buf_get_skb_fndecl_18599 brcmu_pkt_buf_get_skb fndecl 1 18599 NULL
149366 +enable_so_extLocation_extent_ad_18601 extLocation extent_ad 0 18601 NULL
149367 +enable_so_m25p80_write_fndecl_18603 m25p80_write fndecl 3 18603 NULL
149368 +enable_so_num_of_queues_iwl_base_params_18606 num_of_queues iwl_base_params 0 18606 NULL nohasharray
149369 +enable_so_logfs_write_je_buf_fndecl_18606 logfs_write_je_buf fndecl 4 18606 &enable_so_num_of_queues_iwl_base_params_18606
149370 +enable_so_befs_get_block_fndecl_18612 befs_get_block fndecl 2 18612 NULL
149371 +enable_so_iommu_prepare_identity_map_fndecl_18615 iommu_prepare_identity_map fndecl 3-2 18615 NULL
149372 +enable_so_dstpos_isdnhdlc_vars_18616 dstpos isdnhdlc_vars 0 18616 NULL
149373 +enable_so_ks8995_registers_write_fndecl_18618 ks8995_registers_write fndecl 5-6 18618 NULL
149374 +enable_so_oz_ep_alloc_fndecl_18624 oz_ep_alloc fndecl 1 18624 NULL
149375 +enable_so_ctxt_qib_ctxtdata_18626 ctxt qib_ctxtdata 0 18626 NULL
149376 +enable_so_level_btrfs_delayed_tree_ref_18632 level btrfs_delayed_tree_ref 0 18632 NULL
149377 +enable_so_sec_per_clus_fat_boot_sector_18633 sec_per_clus fat_boot_sector 0 18633 NULL
149378 +enable_so_store_bss_info_fndecl_18643 store_bss_info fndecl 7 18643 NULL
149379 +enable_so_fir16_create_fndecl_18645 fir16_create fndecl 3 18645 NULL
149380 +enable_so_rbd_parent_request_create_fndecl_18646 rbd_parent_request_create fndecl 2-3 18646 NULL
149381 +enable_so_speaker_outs_auto_pin_cfg_18648 speaker_outs auto_pin_cfg 0 18648 NULL
149382 +enable_so_ax25_sendmsg_fndecl_18649 ax25_sendmsg fndecl 3 18649 NULL
149383 +enable_so_bioset_create_fndecl_18655 bioset_create fndecl 2 18655 NULL
149384 +enable_so_ext2_xattr_set_fndecl_18656 ext2_xattr_set fndecl 5 18656 NULL nohasharray
149385 +enable_so_MaxDevices__MSG_IOC_FACTS_REPLY_18656 MaxDevices _MSG_IOC_FACTS_REPLY 0 18656 &enable_so_ext2_xattr_set_fndecl_18656
149386 +enable_so_gfs2_unstuffer_page_fndecl_18663 gfs2_unstuffer_page fndecl 3 18663 NULL
149387 +enable_so_SYSC_init_module_fndecl_18665 SYSC_init_module fndecl 2 18665 NULL nohasharray
149388 +enable_so_num_ccells_per_conn_iscsi_kwqe_init1_18665 num_ccells_per_conn iscsi_kwqe_init1 0 18665 &enable_so_SYSC_init_module_fndecl_18665
149389 +enable_so_nilfs_move_2nd_super_fndecl_18666 nilfs_move_2nd_super fndecl 2 18666 NULL
149390 +enable_so_iterate_extent_inodes_fndecl_18668 iterate_extent_inodes fndecl 2 18668 NULL
149391 +enable_so_len_xdr_netobj_18672 len xdr_netobj 0 18672 NULL
149392 +enable_so_pn_recvmsg_fndecl_18676 pn_recvmsg fndecl 3 18676 NULL
149393 +enable_so_nr_clk_regs_samsung_cmu_info_18678 nr_clk_regs samsung_cmu_info 0 18678 NULL
149394 +enable_so_ldm_frag_add_fndecl_18680 ldm_frag_add fndecl 2 18680 NULL
149395 +enable_so_used_chaoskey_18682 used chaoskey 0 18682 NULL nohasharray
149396 +enable_so_ocd_max_easize_obd_connect_data_18682 ocd_max_easize obd_connect_data 0 18682 &enable_so_used_chaoskey_18682
149397 +enable_so_i2c_wr_max_cx24120_config_18687 i2c_wr_max cx24120_config 0 18687 NULL
149398 +enable_so_bufpos_msm_perf_state_18702 bufpos msm_perf_state 0 18702 NULL
149399 +enable_so_num_tc_net_device_18703 num_tc net_device 0 18703 NULL
149400 +enable_so_size_rxdone_entry_desc_18704 size rxdone_entry_desc 0 18704 NULL
149401 +enable_so_den_step_snd_ratnum_18705 den_step snd_ratnum 0 18705 NULL nohasharray
149402 +enable_so_num_dup_tsns_sctp_tsnmap_18705 num_dup_tsns sctp_tsnmap 0 18705 &enable_so_den_step_snd_ratnum_18705
149403 +enable_so_ent_get_fatent_operations_18715 ent_get fatent_operations 0 18715 NULL
149404 +enable_so_read_reg_isar_hw_18717 read_reg isar_hw 0 18717 NULL
149405 +enable_so_feature_len_mic_device_desc_18719 feature_len mic_device_desc 0 18719 NULL
149406 +enable_so_rx_rate_rxpd_18729 rx_rate rxpd 0 18729 NULL
149407 +enable_so_acpi_pcc_get_sqty_fndecl_18731 acpi_pcc_get_sqty fndecl 0 18731 NULL
149408 +enable_so_rdb_per_qp_mthca_profile_18738 rdb_per_qp mthca_profile 0 18738 NULL
149409 +enable_so_bulk_out_ipheth_device_18739 bulk_out ipheth_device 0 18739 NULL
149410 +enable_so___uwb_addr_print_fndecl_18746 __uwb_addr_print fndecl 2 18746 NULL
149411 +enable_so_seq_end_offset_iscsi_cmd_18748 seq_end_offset iscsi_cmd 0 18748 NULL
149412 +enable_so_max_in_size_ims_pcu_18752 max_in_size ims_pcu 0 18752 NULL
149413 +enable_so_btrfs_unlink_subvol_fndecl_18758 btrfs_unlink_subvol fndecl 4 18758 NULL
149414 +enable_so_pipe_set_size_fndecl_18759 pipe_set_size fndecl 2 18759 NULL
149415 +enable_so_i_pos_msdos_inode_info_18764 i_pos msdos_inode_info 0 18764 NULL
149416 +enable_so_ppp_cp_parse_cr_fndecl_18765 ppp_cp_parse_cr fndecl 4 18765 NULL
149417 +enable_so_xdr_get_next_encode_buffer_fndecl_18770 xdr_get_next_encode_buffer fndecl 2 18770 NULL
149418 +enable_so_data_len_ieee80211_mgd_auth_data_18778 data_len ieee80211_mgd_auth_data 0 18778 NULL
149419 +enable_so_isdn_ppp_skb_push_fndecl_18791 isdn_ppp_skb_push fndecl 2 18791 NULL
149420 +enable_so_dwc2_hcd_urb_alloc_fndecl_18802 dwc2_hcd_urb_alloc fndecl 2 18802 NULL
149421 +enable_so_rd_length_gfs2_rgrpd_18804 rd_length gfs2_rgrpd 0 18804 NULL
149422 +enable_so_ath6kl_debug_roam_tbl_event_fndecl_18811 ath6kl_debug_roam_tbl_event fndecl 3 18811 NULL
149423 +enable_so_length_xfs_extent_busy_18817 length xfs_extent_busy 0 18817 NULL
149424 +enable_so_gfn_to_hva_memslot_fndecl_18818 gfn_to_hva_memslot fndecl 2 18818 NULL
149425 +enable_so_dvb_ringbuffer_write_user_fndecl_18821 dvb_ringbuffer_write_user fndecl 3 18821 NULL
149426 +enable_so_write_node_page_fndecl_18823 write_node_page fndecl 3 18823 NULL
149427 +enable_so_shmem_seek_hole_data_fndecl_18824 shmem_seek_hole_data fndecl 0-2-3 18824 NULL
149428 +enable_so_btrfs_alloc_reserved_file_extent_fndecl_18825 btrfs_alloc_reserved_file_extent fndecl 3-4 18825 NULL
149429 +enable_so_p_memsz_elf32_phdr_18830 p_memsz elf32_phdr 0 18830 NULL nohasharray
149430 +enable_so_clk_num_clk_onecell_data_18830 clk_num clk_onecell_data 0 18830 &enable_so_p_memsz_elf32_phdr_18830
149431 +enable_so_DriverQueueDepth_DAC960_Controller_18839 DriverQueueDepth DAC960_Controller 0 18839 NULL
149432 +enable_so_rsn_ie_len_hostap_bss_info_18840 rsn_ie_len hostap_bss_info 0 18840 NULL
149433 +enable_so_n_targets_rsxx_cardinfo_18847 n_targets rsxx_cardinfo 0 18847 NULL
149434 +enable_so_private_data_len_ib_cm_req_param_18848 private_data_len ib_cm_req_param 0 18848 NULL
149435 +enable_so_master_xfer_i2c_algorithm_18849 master_xfer i2c_algorithm 0 18849 NULL nohasharray
149436 +enable_so_taglen_nfsd4_compoundargs_18849 taglen nfsd4_compoundargs 0 18849 &enable_so_master_xfer_i2c_algorithm_18849 nohasharray
149437 +enable_so_logical_btrfs_ioctl_logical_ino_args_18849 logical btrfs_ioctl_logical_ino_args 0 18849 &enable_so_taglen_nfsd4_compoundargs_18849
149438 +enable_so_sco_sock_sendmsg_fndecl_18853 sco_sock_sendmsg fndecl 3 18853 NULL
149439 +enable_so_nreaders_vardecl_rcutorture_c_18862 nreaders vardecl_rcutorture.c 0 18862 NULL
149440 +enable_so_iommu_domain_identity_map_fndecl_18871 iommu_domain_identity_map fndecl 3-2 18871 NULL
149441 +enable_so_netdev_alloc_frag_fndecl_18880 netdev_alloc_frag fndecl 1 18880 NULL
149442 +enable_so_rx_buffer_len_atl1_adapter_18882 rx_buffer_len atl1_adapter 0 18882 NULL
149443 +enable_so_rxd_rfsw_s_smt_fp_rxd_18889 rxd_rfsw s_smt_fp_rxd 0 18889 NULL
149444 +enable_so_uinput_ioctl_fndecl_18893 uinput_ioctl fndecl 2 18893 NULL
149445 +enable_so_nr_stripes_bcache_device_18895 nr_stripes bcache_device 0 18895 NULL
149446 +enable_so_rx_ps_hdr_size_igbvf_adapter_18896 rx_ps_hdr_size igbvf_adapter 0 18896 NULL nohasharray
149447 +enable_so_r592_write_fifo_pio_fndecl_18896 r592_write_fifo_pio fndecl 3 18896 &enable_so_rx_ps_hdr_size_igbvf_adapter_18896
149448 +enable_so_num_freq_table_entries_vardecl_sfi_cpufreq_c_18898 num_freq_table_entries vardecl_sfi-cpufreq.c 0 18898 NULL
149449 +enable_so_nilfs_max_size_fndecl_18901 nilfs_max_size fndecl 1 18901 NULL
149450 +enable_so_sbc_get_write_same_sectors_fndecl_18902 sbc_get_write_same_sectors fndecl 0 18902 NULL
149451 +enable_so_pep_sendmsg_fndecl_18903 pep_sendmsg fndecl 3 18903 NULL
149452 +enable_so_extent_invalidatepage_fndecl_18906 extent_invalidatepage fndecl 3 18906 NULL
149453 +enable_so_dccpd_opt_len_dccp_skb_cb_18917 dccpd_opt_len dccp_skb_cb 0 18917 NULL
149454 +enable_so_fuse_write_update_size_fndecl_18918 fuse_write_update_size fndecl 2 18918 NULL
149455 +enable_so_kvm_pin_pages_fndecl_18922 kvm_pin_pages fndecl 2 18922 NULL
149456 +enable_so_cciss_allocate_sg_chain_blocks_fndecl_18923 cciss_allocate_sg_chain_blocks fndecl 3-2 18923 NULL
149457 +enable_so_segment_size_kaweth_ethernet_configuration_18925 segment_size kaweth_ethernet_configuration 0 18925 NULL nohasharray
149458 +enable_so_vxfs_bread_fndecl_18925 vxfs_bread fndecl 2 18925 &enable_so_segment_size_kaweth_ethernet_configuration_18925
149459 +enable_so_ad714x_i2c_read_fndecl_18930 ad714x_i2c_read fndecl 4 18930 NULL
149460 +enable_so_spidev_get_ioc_message_fndecl_18931 spidev_get_ioc_message fndecl 1 18931 NULL
149461 +enable_so_maxReplyBytes_mpt_ioctl_command_18942 maxReplyBytes mpt_ioctl_command 0 18942 NULL
149462 +enable_so_read_pci_config_fndecl_18943 read_pci_config fndecl 0 18943 NULL
149463 +enable_so_rbd_segment_length_fndecl_18944 rbd_segment_length fndecl 0-2-3 18944 NULL
149464 +enable_so_cram_hmac_alg_len_net_conf_18947 cram_hmac_alg_len net_conf 0 18947 NULL
149465 +enable_so_i2c_hack_cx25840_fndecl_18948 i2c_hack_cx25840 fndecl 4-6 18948 NULL
149466 +enable_so___alloc_rx_skb_fndecl_18952 __alloc_rx_skb fndecl 1 18952 NULL
149467 +enable_so_getclkMHz_fndecl_18954 getclkMHz fndecl 0 18954 NULL
149468 +enable_so_rss_queues_igb_adapter_18957 rss_queues igb_adapter 0 18957 NULL
149469 +enable_so_scan_bitmap_fndecl_18963 scan_bitmap fndecl 3-0 18963 NULL nohasharray
149470 +enable_so_file_offset_btrfs_ordered_extent_18963 file_offset btrfs_ordered_extent 0 18963 &enable_so_scan_bitmap_fndecl_18963
149471 +enable_so_len_dm_target_18965 len dm_target 0 18965 NULL
149472 +enable_so_cyapa_do_i2c_pip_cmd_polling_fndecl_18975 cyapa_do_i2c_pip_cmd_polling fndecl 3 18975 NULL
149473 +enable_so_size_ceph_cap_snap_18977 size ceph_cap_snap 0 18977 NULL nohasharray
149474 +enable_so_mlx4_en_create_tx_ring_fndecl_18977 mlx4_en_create_tx_ring fndecl 3 18977 &enable_so_size_ceph_cap_snap_18977
149475 +enable_so_edac_device_alloc_ctl_info_fndecl_18982 edac_device_alloc_ctl_info fndecl 1 18982 NULL
149476 +enable_so_rcount_mkiss_18984 rcount mkiss 0 18984 NULL nohasharray
149477 +enable_so_l2cap_sock_sendmsg_fndecl_18984 l2cap_sock_sendmsg fndecl 3 18984 &enable_so_rcount_mkiss_18984
149478 +enable_so_preferred_bpp_intel_fbdev_18985 preferred_bpp intel_fbdev 0 18985 NULL
149479 +enable_so_p9_get_mapped_pages_fndecl_18988 p9_get_mapped_pages fndecl 4 18988 NULL nohasharray
149480 +enable_so_ebcnt_vardecl_subpagetest_c_18988 ebcnt vardecl_subpagetest.c 0 18988 &enable_so_p9_get_mapped_pages_fndecl_18988
149481 +enable_so_end_sk_buff_18998 end sk_buff 0 18998 NULL
149482 +enable_so_usb_hcd_check_unlink_urb_fndecl_18999 usb_hcd_check_unlink_urb fndecl 3 18999 NULL
149483 +enable_so_ieee80211_if_fmt_rc_rateidx_mask_5ghz_fndecl_19008 ieee80211_if_fmt_rc_rateidx_mask_5ghz fndecl 3 19008 NULL nohasharray
149484 +enable_so_dm_alloc_md_mempools_fndecl_19008 dm_alloc_md_mempools fndecl 4 19008 &enable_so_ieee80211_if_fmt_rc_rateidx_mask_5ghz_fndecl_19008
149485 +enable_so_max_sectors_ata_device_19016 max_sectors ata_device 0 19016 NULL
149486 +enable_so_SyS_semop_fndecl_19023 SyS_semop fndecl 3 19023 NULL
149487 +enable_so_tcp_recvmsg_fndecl_19029 tcp_recvmsg fndecl 3 19029 NULL
149488 +enable_so_sge_size_MPT3SAS_ADAPTER_19030 sge_size MPT3SAS_ADAPTER 0 19030 NULL nohasharray
149489 +enable_so_tipc_subseq_alloc_fndecl_19030 tipc_subseq_alloc fndecl 1 19030 &enable_so_sge_size_MPT3SAS_ADAPTER_19030
149490 +enable_so_ll_statahead_one_fndecl_19033 ll_statahead_one fndecl 3 19033 NULL
149491 +enable_so_next_scan_nid_f2fs_nm_info_19036 next_scan_nid f2fs_nm_info 0 19036 NULL
149492 +enable_so_scrollback_max_vardecl_fbcon_c_19040 scrollback_max vardecl_fbcon.c 0 19040 NULL nohasharray
149493 +enable_so_next_cnid_hfsplus_sb_info_19040 next_cnid hfsplus_sb_info 0 19040 &enable_so_scrollback_max_vardecl_fbcon_c_19040
149494 +enable_so_tsize_nfs2_fsstat_19041 tsize nfs2_fsstat 0 19041 NULL
149495 +enable_so_dma_usb_request_19054 dma usb_request 0 19054 NULL
149496 +enable_so_level_walk_control_19063 level walk_control 0 19063 NULL
149497 +enable_so_offs_ubifs_zbranch_19074 offs ubifs_zbranch 0 19074 NULL
149498 +enable_so_crypto_rng_reset_fndecl_19075 crypto_rng_reset fndecl 3 19075 NULL
149499 +enable_so_mei_cl_read_start_fndecl_19077 mei_cl_read_start fndecl 2 19077 NULL
149500 +enable_so_s_blocksize_super_block_19081 s_blocksize super_block 0 19081 NULL nohasharray
149501 +enable_so_ipath_set_mtu_fndecl_19081 ipath_set_mtu fndecl 2 19081 &enable_so_s_blocksize_super_block_19081
149502 +enable_so_data_size_hpi_msg_data_19086 data_size hpi_msg_data 0 19086 NULL
149503 +enable_so_mei_hbm_cl_flow_control_req_fndecl_19089 mei_hbm_cl_flow_control_req fndecl 0 19089 NULL
149504 +enable_so_sb_logsectsize_xfs_sb_19098 sb_logsectsize xfs_sb 0 19098 NULL
149505 +enable_so_btrfs_qgroup_inherit_fndecl_19103 btrfs_qgroup_inherit fndecl 4-3 19103 NULL
149506 +enable_so_walk_node_fndecl_19114 walk_node fndecl 2 19114 NULL nohasharray
149507 +enable_so_sctp_setsockopt_connectx_fndecl_19114 sctp_setsockopt_connectx fndecl 3 19114 &enable_so_walk_node_fndecl_19114
149508 +enable_so_alloc_msg_fndecl_19115 alloc_msg fndecl 1 19115 NULL
149509 +enable_so_sel_make_class_dir_entries_fndecl_19123 sel_make_class_dir_entries fndecl 2 19123 NULL
149510 +enable_so_rx_keycache_size_p54_common_19128 rx_keycache_size p54_common 0 19128 NULL
149511 +enable_so__random_read_fndecl_19137 _random_read fndecl 3 19137 NULL
149512 +enable_so_ctrl_set_res_hor_fndecl_19146 ctrl_set_res_hor fndecl 3 19146 NULL nohasharray
149513 +enable_so_count_c2_ring_19146 count c2_ring 0 19146 &enable_so_ctrl_set_res_hor_fndecl_19146
149514 +enable_so_ipmi_addr_length_fndecl_19149 ipmi_addr_length fndecl 0 19149 NULL
149515 +enable_so_alloc_indirect_fndecl_19156 alloc_indirect fndecl 2 19156 NULL
149516 +enable_so_page_array_size_firmware_buf_19163 page_array_size firmware_buf 0 19163 NULL
149517 +enable_so_ve_attrlen_nfsd4_verify_19164 ve_attrlen nfsd4_verify 0 19164 NULL
149518 +enable_so_ms_nvme_ns_19166 ms nvme_ns 0 19166 NULL
149519 +enable_so_dma_start_hi_rx_buf_desc_19167 dma_start_hi rx_buf_desc 0 19167 NULL
149520 +enable_so_isp116x_urb_dequeue_fndecl_19169 isp116x_urb_dequeue fndecl 3 19169 NULL
149521 +enable_so_max_pages_per_mr_srp_device_19171 max_pages_per_mr srp_device 0 19171 NULL
149522 +enable_so_lprocfs_alloc_stats_fndecl_19181 lprocfs_alloc_stats fndecl 1 19181 NULL
149523 +enable_so_dfs_global_file_write_fndecl_19187 dfs_global_file_write fndecl 3 19187 NULL
149524 +enable_so_nci_allocate_device_fndecl_19192 nci_allocate_device fndecl 3 19192 NULL
149525 +enable_so_slot_nr_nfs4_slot_19196 slot_nr nfs4_slot 0 19196 NULL
149526 +enable_so_upper_margin_fb_videomode_19197 upper_margin fb_videomode 0 19197 NULL
149527 +enable_so_irq_dma_handle_ttusb_dec_19208 irq_dma_handle ttusb_dec 0 19208 NULL
149528 +enable_so_extensions_edid_19218 extensions edid 0 19218 NULL
149529 +enable_so_lfb_size_screen_info_19219 lfb_size screen_info 0 19219 NULL
149530 +enable_so_SYSC_fsetxattr_fndecl_19220 SYSC_fsetxattr fndecl 4 19220 NULL
149531 +enable_so_cmds_vardecl_ambassador_c_19230 cmds vardecl_ambassador.c 0 19230 NULL
149532 +enable_so_spi_populate_ppr_msg_fndecl_19239 spi_populate_ppr_msg fndecl 0 19239 NULL
149533 +enable_so_matroxfb_pitch_adjust_fndecl_19243 matroxfb_pitch_adjust fndecl 0-2 19243 NULL nohasharray
149534 +enable_so_tcp_fastretrans_alert_fndecl_19243 tcp_fastretrans_alert fndecl 2 19243 &enable_so_matroxfb_pitch_adjust_fndecl_19243
149535 +enable_so_get_arg_fndecl_19245 get_arg fndecl 3 19245 NULL
149536 +enable_so_ieee802154_hdr_push_sechdr_fndecl_19265 ieee802154_hdr_push_sechdr fndecl 0 19265 NULL
149537 +enable_so_batadv_frag_create_fndecl_19270 batadv_frag_create fndecl 3 19270 NULL
149538 +enable_so_tail_aio_ring_19271 tail aio_ring 0 19271 NULL
149539 +enable_so_sb_segnum_nilfs_segment_buffer_19276 sb_segnum nilfs_segment_buffer 0 19276 NULL nohasharray
149540 +enable_so_vmw_kms_readback_fndecl_19276 vmw_kms_readback fndecl 6 19276 &enable_so_sb_segnum_nilfs_segment_buffer_19276
149541 +enable_so_inode_minix_dir_entry_19287 inode minix_dir_entry 0 19287 NULL
149542 +enable_so_subbuf_read_actor_fndecl_19295 subbuf_read_actor fndecl 3 19295 NULL
149543 +enable_so_get_packet_fndecl_19296 get_packet fndecl 3 19296 NULL
149544 +enable_so_vxge_change_mtu_fndecl_19297 vxge_change_mtu fndecl 2 19297 NULL
149545 +enable_so_ext_len_xfs_extent_19299 ext_len xfs_extent 0 19299 NULL
149546 +enable_so_copy_vma_fndecl_19303 copy_vma fndecl 3-2-4 19303 NULL
149547 +enable_so_cl_cpg_ocfs2_chain_list_19308 cl_cpg ocfs2_chain_list 0 19308 NULL
149548 +enable_so_sys_sched_getattr_fndecl_19313 sys_sched_getattr fndecl 3 19313 NULL
149549 +enable_so_ve4_indsize_vxfs_ext4_19315 ve4_indsize vxfs_ext4 0 19315 NULL
149550 +enable_so_reply_sz_MPT3SAS_ADAPTER_19317 reply_sz MPT3SAS_ADAPTER 0 19317 NULL
149551 +enable_so_bpp_vardecl_nvidia_c_19325 bpp vardecl_nvidia.c 0 19325 NULL
149552 +enable_so_meta_dev_len_disk_conf_19326 meta_dev_len disk_conf 0 19326 NULL
149553 +enable_so_pkt_len_or_gro_seg_len_eth_fast_path_rx_cqe_19330 pkt_len_or_gro_seg_len eth_fast_path_rx_cqe 0 19330 NULL nohasharray
149554 +enable_so_finish_request_fndecl_19330 finish_request fndecl 4 19330 &enable_so_pkt_len_or_gro_seg_len_eth_fast_path_rx_cqe_19330
149555 +enable_so_rule_size_fib_rules_ops_19335 rule_size fib_rules_ops 0 19335 NULL
149556 +enable_so___vxge_hw_blockpool_malloc_fndecl_19337 __vxge_hw_blockpool_malloc fndecl 2 19337 NULL
149557 +enable_so___lookup_free_space_inode_fndecl_19338 __lookup_free_space_inode fndecl 3 19338 NULL
149558 +enable_so_rockchip_clk_init_fndecl_19353 rockchip_clk_init fndecl 3 19353 NULL
149559 +enable_so_data_sge_offset_mpt3_ioctl_command_19355 data_sge_offset mpt3_ioctl_command 0 19355 NULL
149560 +enable_so_sctp_setsockopt_autoclose_fndecl_19356 sctp_setsockopt_autoclose fndecl 3 19356 NULL nohasharray
149561 +enable_so_qlcnic_83xx_sysfs_flash_read_handler_fndecl_19356 qlcnic_83xx_sysfs_flash_read_handler fndecl 6 19356 &enable_so_sctp_setsockopt_autoclose_fndecl_19356
149562 +enable_so_ds_channels_snd_rme9652_19357 ds_channels snd_rme9652 0 19357 NULL
149563 +enable_so_nodesize_scrub_ctx_19371 nodesize scrub_ctx 0 19371 NULL
149564 +enable_so_nvme_trans_bdev_char_page_fndecl_19382 nvme_trans_bdev_char_page fndecl 3 19382 NULL
149565 +enable_so_do_anonymous_page_fndecl_19385 do_anonymous_page fndecl 3 19385 NULL
149566 +enable_so_ControllerQueueDepth_DAC960_Controller_19386 ControllerQueueDepth DAC960_Controller 0 19386 NULL
149567 +enable_so_padlen_ip_beet_phdr_19393 padlen ip_beet_phdr 0 19393 NULL
149568 +enable_so_ixgb_check_copybreak_fndecl_19396 ixgb_check_copybreak fndecl 3 19396 NULL nohasharray
149569 +enable_so_at25_bin_write_fndecl_19396 at25_bin_write fndecl 6-5 19396 &enable_so_ixgb_check_copybreak_fndecl_19396
149570 +enable_so_ext4_xattr_set_fndecl_19403 ext4_xattr_set fndecl 5 19403 NULL nohasharray
149571 +enable_so_setup_req_fndecl_19403 setup_req fndecl 3-0 19403 &enable_so_ext4_xattr_set_fndecl_19403
149572 +enable_so_rec_len_ocfs2_dir_entry_19408 rec_len ocfs2_dir_entry 0 19408 NULL
149573 +enable_so_proc_read_atmdev_ops_19414 proc_read atmdev_ops 0 19414 NULL
149574 +enable_so_num_ip_blocks_amdgpu_device_19419 num_ip_blocks amdgpu_device 0 19419 NULL
149575 +enable_so_fw_card_add_fndecl_19423 fw_card_add fndecl 2 19423 NULL
149576 +enable_so_paging64_walk_addr_fndecl_19436 paging64_walk_addr fndecl 3-4 19436 NULL
149577 +enable_so_uinput_compat_ioctl_fndecl_19446 uinput_compat_ioctl fndecl 2 19446 NULL
149578 +enable_so_ilf_ino_xfs_inode_log_format_19454 ilf_ino xfs_inode_log_format 0 19454 NULL
149579 +enable_so_dvb_ringbuffer_read_fndecl_19457 dvb_ringbuffer_read fndecl 3 19457 NULL
149580 +enable_so_btrfs_set_disk_extent_flags_fndecl_19461 btrfs_set_disk_extent_flags fndecl 3-4-6 19461 NULL
149581 +enable_so_sys_setdomainname_fndecl_19462 sys_setdomainname fndecl 2 19462 NULL
149582 +enable_so_start_write_delay_c_19463 start_write delay_c 0 19463 NULL
149583 +enable_so_vcc_connect_fndecl_19469 vcc_connect fndecl 4-3 19469 NULL
149584 +enable_so_dvb_ep_bulk_em28xx_19472 dvb_ep_bulk em28xx 0 19472 NULL nohasharray
149585 +enable_so_kclist_add_fndecl_19472 kclist_add fndecl 3 19472 &enable_so_dvb_ep_bulk_em28xx_19472
149586 +enable_so_log2bpmb_adfs_discrecord_19475 log2bpmb adfs_discrecord 0 19475 NULL nohasharray
149587 +enable_so_dma_xfer_cnt_ivtv_buffer_19475 dma_xfer_cnt ivtv_buffer 0 19475 &enable_so_log2bpmb_adfs_discrecord_19475
149588 +enable_so_fackets_out_tcp_sock_19484 fackets_out tcp_sock 0 19484 NULL
149589 +enable_so_ieee80211_change_mtu_fndecl_19486 ieee80211_change_mtu fndecl 2 19486 NULL
149590 +enable_so_drm_gtf_mode_fndecl_19489 drm_gtf_mode fndecl 3-2-4 19489 NULL nohasharray
149591 +enable_so_add_device_fndecl_19489 add_device fndecl 2 19489 &enable_so_drm_gtf_mode_fndecl_19489
149592 +enable_so_length_mwifiex_types_power_group_19491 length mwifiex_types_power_group 0 19491 NULL
149593 +enable_so_start_addr_ms_system_item_19495 start_addr ms_system_item 0 19495 NULL
149594 +enable_so_max_objectid_btrfs_ioctl_search_key_19501 max_objectid btrfs_ioctl_search_key 0 19501 NULL
149595 +enable_so_access_process_vm_fndecl_19503 access_process_vm fndecl 4-0-2 19503 NULL nohasharray
149596 +enable_so_cxacru_cm_get_array_fndecl_19503 cxacru_cm_get_array fndecl 4 19503 &enable_so_access_process_vm_fndecl_19503
149597 +enable_so_sctp_sendmsg_fndecl_19508 sctp_sendmsg fndecl 3 19508 NULL
149598 +enable_so_ecryptfs_write_tag_70_packet_fndecl_19510 ecryptfs_write_tag_70_packet fndecl 6 19510 NULL
149599 +enable_so_ndoms_cur_vardecl_core_c_19519 ndoms_cur vardecl_core.c 0 19519 NULL
149600 +enable_so_pglen_nfs_readlinkargs_19521 pglen nfs_readlinkargs 0 19521 NULL
149601 +enable_so_do_pages_stat_fndecl_19526 do_pages_stat fndecl 2 19526 NULL
149602 +enable_so_memparse_fndecl_19535 memparse fndecl 0 19535 NULL nohasharray
149603 +enable_so_d40_sg_2_dmalen_fndecl_19535 d40_sg_2_dmalen fndecl 3-4-0 19535 &enable_so_memparse_fndecl_19535
149604 +enable_so_nrpages_address_space_19536 nrpages address_space 0 19536 NULL
149605 +enable_so_val_snd_tea575x_19539 val snd_tea575x 0 19539 NULL
149606 +enable_so_in_dma_usb_keyspan_19540 in_dma usb_keyspan 0 19540 NULL
149607 +enable_so_npins_chv_gpio_pinrange_19542 npins chv_gpio_pinrange 0 19542 NULL nohasharray
149608 +enable_so_rtw_android_get_rssi_fndecl_19542 rtw_android_get_rssi fndecl 0 19542 &enable_so_npins_chv_gpio_pinrange_19542
149609 +enable_so_nilfs_sufile_set_alloc_range_fndecl_19543 nilfs_sufile_set_alloc_range fndecl 3-2 19543 NULL nohasharray
149610 +enable_so_entries_size_ebt_table_info_19543 entries_size ebt_table_info 0 19543 &enable_so_nilfs_sufile_set_alloc_range_fndecl_19543
149611 +enable_so_softback_curr_vardecl_fbcon_c_19553 softback_curr vardecl_fbcon.c 0 19553 NULL
149612 +enable_so_at76_set_card_command_fndecl_19556 at76_set_card_command fndecl 4 19556 NULL
149613 +enable_so_uni16_to_x8_fndecl_19571 uni16_to_x8 fndecl 0 19571 NULL
149614 +enable_so_sd_pkt_scan_bayer_fndecl_19581 sd_pkt_scan_bayer fndecl 3 19581 NULL
149615 +enable_so_l1oip_socket_parse_fndecl_19592 l1oip_socket_parse fndecl 4 19592 NULL
149616 +enable_so_icc_empty_fifo_fndecl_19594 icc_empty_fifo fndecl 2 19594 NULL
149617 +enable_so_xdr_stream_pos_fndecl_19598 xdr_stream_pos fndecl 0 19598 NULL
149618 +enable_so_command_size_drm_qxl_command_19601 command_size drm_qxl_command 0 19601 NULL
149619 +enable_so_sys_semtimedop_fndecl_19605 sys_semtimedop fndecl 3 19605 NULL
149620 +enable_so_readpos_seq_buf_19607 readpos seq_buf 0 19607 NULL
149621 +enable_so_rt5677_spi_write_fndecl_19610 rt5677_spi_write fndecl 2 19610 NULL
149622 +enable_so_rs_user_bytes_rds_sock_19611 rs_user_bytes rds_sock 0 19611 NULL
149623 +enable_so_gspca_frame_add_fndecl_19612 gspca_frame_add fndecl 4 19612 NULL nohasharray
149624 +enable_so_vmbus_establish_gpadl_fndecl_19612 vmbus_establish_gpadl fndecl 3 19612 &enable_so_gspca_frame_add_fndecl_19612
149625 +enable_so_logical_btrfs_io_bio_19616 logical btrfs_io_bio 0 19616 NULL
149626 +enable_so___gfn_to_pfn_memslot_fndecl_19617 __gfn_to_pfn_memslot fndecl 2 19617 NULL
149627 +enable_so_sys_llistxattr_fndecl_19623 sys_llistxattr fndecl 3 19623 NULL
149628 +enable_so_freqn_usb_stream_kernel_19628 freqn usb_stream_kernel 0 19628 NULL nohasharray
149629 +enable_so_name_len_ext4_dir_entry_2_19628 name_len ext4_dir_entry_2 0 19628 &enable_so_freqn_usb_stream_kernel_19628
149630 +enable_so_fv_vardecl_matroxfb_base_c_19633 fv vardecl_matroxfb_base.c 0 19633 NULL
149631 +enable_so_softback_buf_vardecl_fbcon_c_19637 softback_buf vardecl_fbcon.c 0 19637 NULL
149632 +enable_so_sdio_io_rw_ext_helper_fndecl_19641 sdio_io_rw_ext_helper fndecl 6 19641 NULL
149633 +enable_so_addr_snd_sg_page_19645 addr snd_sg_page 0 19645 NULL
149634 +enable_so_af9033_rd_regs_fndecl_19652 af9033_rd_regs fndecl 4 19652 NULL
149635 +enable_so_shadow_step_fndecl_19653 shadow_step fndecl 2 19653 NULL
149636 +enable_so_hr_itemcount_hsm_request_19657 hr_itemcount hsm_request 0 19657 NULL
149637 +enable_so_configfs_dir_lseek_fndecl_19658 configfs_dir_lseek fndecl 2 19658 NULL
149638 +enable_so_btrfs_file_extent_inline_item_len_fndecl_19660 btrfs_file_extent_inline_item_len fndecl 0 19660 NULL
149639 +enable_so_count_kernel_pbes_fndecl_19664 count_kernel_pbes fndecl 0 19664 NULL
149640 +enable_so_fsl_edma_prep_slave_sg_fndecl_19672 fsl_edma_prep_slave_sg fndecl 3 19672 NULL
149641 +enable_so_recv_intr_pipe_us_data_19678 recv_intr_pipe us_data 0 19678 NULL
149642 +enable_so_bch_alloc_fndecl_19682 bch_alloc fndecl 1 19682 NULL
149643 +enable_so_depth_em28xx_fmt_19696 depth em28xx_fmt 0 19696 NULL nohasharray
149644 +enable_so_size_pkt_hdr_19696 size pkt_hdr 0 19696 &enable_so_depth_em28xx_fmt_19696 nohasharray
149645 +enable_so_pcnt_bits_ubifs_info_19696 pcnt_bits ubifs_info 0 19696 &enable_so_size_pkt_hdr_19696 nohasharray
149646 +enable_so_prealloc_bufsz_comedi_async_19696 prealloc_bufsz comedi_async 0 19696 &enable_so_pcnt_bits_ubifs_info_19696
149647 +enable_so_st_fixed_buffer_size_vardecl_st_c_19699 st_fixed_buffer_size vardecl_st.c 0 19699 NULL
149648 +enable_so_max_blksize_sdio_func_19715 max_blksize sdio_func 0 19715 NULL
149649 +enable_so_slots_end_qxl_rom_19718 slots_end qxl_rom 0 19718 NULL
149650 +enable_so_fat32_info_sector_fat_bios_param_block_19727 fat32_info_sector fat_bios_param_block 0 19727 NULL
149651 +enable_so_max_mfi_cmds_megasas_instance_19731 max_mfi_cmds megasas_instance 0 19731 NULL
149652 +enable_so_max_active_conns_bnx2i_hba_19740 max_active_conns bnx2i_hba 0 19740 NULL
149653 +enable_so_writelen_iuu_private_19742 writelen iuu_private 0 19742 NULL
149654 +enable_so_ntb_netdev_change_mtu_fndecl_19744 ntb_netdev_change_mtu fndecl 2 19744 NULL
149655 +enable_so_nmap_ib_umem_19745 nmap ib_umem 0 19745 NULL
149656 +enable_so_replay_xattr_deletes_fndecl_19752 replay_xattr_deletes fndecl 5 19752 NULL nohasharray
149657 +enable_so_mpt_raid_phys_disk_get_num_paths_fndecl_19752 mpt_raid_phys_disk_get_num_paths fndecl 0 19752 &enable_so_replay_xattr_deletes_fndecl_19752
149658 +enable_so__reiserfs_free_block_fndecl_19753 _reiserfs_free_block fndecl 3 19753 NULL nohasharray
149659 +enable_so_instances_vardecl_iio_simple_dummy_c_19753 instances vardecl_iio_simple_dummy.c 0 19753 &enable_so__reiserfs_free_block_fndecl_19753
149660 +enable_so_c67x00_giveback_urb_fndecl_19761 c67x00_giveback_urb fndecl 3 19761 NULL
149661 +enable_so_vram_base_qxl_device_19773 vram_base qxl_device 0 19773 NULL
149662 +enable_so_fw_mem_block_size_wl1271_19784 fw_mem_block_size wl1271 0 19784 NULL
149663 +enable_so_pixelclock_videomode_19794 pixelclock videomode 0 19794 NULL
149664 +enable_so_get_alua_req_fndecl_19797 get_alua_req fndecl 3 19797 NULL
149665 +enable_so_fromlen_nfs3_symlinkargs_19803 fromlen nfs3_symlinkargs 0 19803 NULL
149666 +enable_so_len_rpcsec_gss_oid_19814 len rpcsec_gss_oid 0 19814 NULL
149667 +enable_so_size_vring_19817 size vring 0 19817 NULL
149668 +enable_so_ip_send_unicast_reply_fndecl_19820 ip_send_unicast_reply fndecl 7 19820 NULL
149669 +enable_so_dm_btree_insert_fndecl_19824 dm_btree_insert fndecl 2 19824 NULL
149670 +enable_so_insert_extent_backref_fndecl_19826 insert_extent_backref fndecl 5-6-4 19826 NULL
149671 +enable_so_vring_new_virtqueue_fndecl_19828 vring_new_virtqueue fndecl 2 19828 NULL
149672 +enable_so___nfs4_get_acl_uncached_fndecl_19830 __nfs4_get_acl_uncached fndecl 3 19830 NULL
149673 +enable_so_size_asix_rx_fixup_info_19833 size asix_rx_fixup_info 0 19833 NULL
149674 +enable_so_v9fs_write_end_fndecl_19836 v9fs_write_end fndecl 5-3 19836 NULL
149675 +enable_so__osd_req_list_objects_fndecl_19839 _osd_req_list_objects fndecl 6 19839 NULL
149676 +enable_so_buf_used_uvc_video_queue_19843 buf_used uvc_video_queue 0 19843 NULL
149677 +enable_so_s3c_hsotg_send_reply_fndecl_19844 s3c_hsotg_send_reply fndecl 4 19844 NULL nohasharray
149678 +enable_so_rpos_cm4000_dev_19844 rpos cm4000_dev 0 19844 &enable_so_s3c_hsotg_send_reply_fndecl_19844
149679 +enable_so_fbmem_start_viafb_dev_19849 fbmem_start viafb_dev 0 19849 NULL
149680 +enable_so_xen_released_pages_vardecl_19851 xen_released_pages vardecl 0 19851 NULL
149681 +enable_so_qp_guest_endpoint_create_fndecl_19852 qp_guest_endpoint_create fndecl 5-4 19852 NULL
149682 +enable_so_ext4_direct_IO_fndecl_19865 ext4_direct_IO fndecl 3 19865 NULL
149683 +enable_so_ext3_htree_fill_tree_fndecl_19870 ext3_htree_fill_tree fndecl 2 19870 NULL
149684 +enable_so_nilfs_segctor_apply_buffers_fndecl_19874 nilfs_segctor_apply_buffers fndecl 0 19874 NULL nohasharray
149685 +enable_so_max_msix_vectors_ixgbe_mac_info_19874 max_msix_vectors ixgbe_mac_info 0 19874 &enable_so_nilfs_segctor_apply_buffers_fndecl_19874
149686 +enable_so_ath6kl_force_roam_write_fndecl_19881 ath6kl_force_roam_write fndecl 3 19881 NULL
149687 +enable_so_size_sst_block_19887 size sst_block 0 19887 NULL nohasharray
149688 +enable_so_goldfish_audio_write_fndecl_19887 goldfish_audio_write fndecl 3 19887 &enable_so_size_sst_block_19887
149689 +enable_so_ide_find_dma_mode_fndecl_19889 ide_find_dma_mode fndecl 0 19889 NULL
149690 +enable_so_n_cipher_suites_wiphy_19902 n_cipher_suites wiphy 0 19902 NULL
149691 +enable_so___pool_find_fndecl_19911 __pool_find fndecl 3 19911 NULL
149692 +enable_so_count_strings_fndecl_19912 count_strings fndecl 0 19912 NULL
149693 +enable_so_slot_dlm_slot_19913 slot dlm_slot 0 19913 NULL
149694 +enable_so_get_connectors_for_crtc_fndecl_19920 get_connectors_for_crtc fndecl 0 19920 NULL
149695 +enable_so_cp_change_mtu_fndecl_19922 cp_change_mtu fndecl 2 19922 NULL
149696 +enable_so_paging32_page_fault_fndecl_19923 paging32_page_fault fndecl 2-3 19923 NULL nohasharray
149697 +enable_so_sector_number_phys_req_19923 sector_number phys_req 0 19923 &enable_so_paging32_page_fault_fndecl_19923
149698 +enable_so_vblank_lo_detailed_pixel_timing_19925 vblank_lo detailed_pixel_timing 0 19925 NULL
149699 +enable_so___usbnet_read_cmd_fndecl_19928 __usbnet_read_cmd fndecl 7 19928 NULL
149700 +enable_so_rate_p54_rx_data_19929 rate p54_rx_data 0 19929 NULL
149701 +enable_so_iic_tpm_write_generic_fndecl_19931 iic_tpm_write_generic fndecl 3 19931 NULL
149702 +enable_so_dvb_ringbuffer_pkt_read_user_fndecl_19932 dvb_ringbuffer_pkt_read_user fndecl 3-2-5 19932 NULL
149703 +enable_so_epp_write_addr_parport_operations_19935 epp_write_addr parport_operations 0 19935 NULL
149704 +enable_so_ima_eventdigest_init_common_fndecl_19937 ima_eventdigest_init_common fndecl 2 19937 NULL
149705 +enable_so_unix_stream_sendmsg_fndecl_19940 unix_stream_sendmsg fndecl 3 19940 NULL
149706 +enable_so_max_buckets_crush_map_19942 max_buckets crush_map 0 19942 NULL
149707 +enable_so_ieee802154_nl_fill_phy_fndecl_19951 ieee802154_nl_fill_phy fndecl 0 19951 NULL
149708 +enable_so_wusbhc_giveback_urb_fndecl_19954 wusbhc_giveback_urb fndecl 3 19954 NULL
149709 +enable_so_snd_rawmidi_kernel_read_fndecl_19963 snd_rawmidi_kernel_read fndecl 3 19963 NULL
149710 +enable_so_vga_arb_read_fndecl_19973 vga_arb_read fndecl 3 19973 NULL
149711 +enable_so_size_packet_settings_19984 size packet_settings 0 19984 NULL
149712 +enable_so_get_new_location_fndecl_19985 get_new_location fndecl 3 19985 NULL nohasharray
149713 +enable_so_ino_clone_root_19985 ino clone_root 0 19985 &enable_so_get_new_location_fndecl_19985
149714 +enable_so_palign_qib_devdata_19988 palign qib_devdata 0 19988 NULL
149715 +enable_so_hid_register_field_fndecl_19993 hid_register_field fndecl 2-3 19993 NULL
149716 +enable_so_ocfs2_defrag_extent_fndecl_19994 ocfs2_defrag_extent fndecl 3-2 19994 NULL
149717 +enable_so_move_extent_per_page_fndecl_20004 move_extent_per_page fndecl 6-5-4-3 20004 NULL
149718 +enable_so_copybreak_vardecl_sky2_c_20006 copybreak vardecl_sky2.c 0 20006 NULL
149719 +enable_so_def_bpp_sm501_platdata_fbsub_20007 def_bpp sm501_platdata_fbsub 0 20007 NULL nohasharray
149720 +enable_so_log2_element_size_xilly_channel_20007 log2_element_size xilly_channel 0 20007 &enable_so_def_bpp_sm501_platdata_fbsub_20007
149721 +enable_so_fp0_psb_pipe_20013 fp0 psb_pipe 0 20013 NULL
149722 +enable_so_i_inline_size_ext4_inode_info_20015 i_inline_size ext4_inode_info 0 20015 NULL
149723 +enable_so_y_drm_fb_helper_crtc_20016 y drm_fb_helper_crtc 0 20016 NULL
149724 +enable_so_ctl_dma_cm109_dev_20023 ctl_dma cm109_dev 0 20023 NULL
149725 +enable_so_zone_absent_pages_in_node_fndecl_20027 zone_absent_pages_in_node fndecl 0 20027 NULL nohasharray
149726 +enable_so_build_skb_fndecl_20027 build_skb fndecl 2 20027 &enable_so_zone_absent_pages_in_node_fndecl_20027
149727 +enable_so_nr_max310x_devtype_20030 nr max310x_devtype 0 20030 NULL
149728 +enable_so_block_size_osst_tape_20034 block_size osst_tape 0 20034 NULL
149729 +enable_so_batadv_interface_change_mtu_fndecl_20043 batadv_interface_change_mtu fndecl 2 20043 NULL nohasharray
149730 +enable_so_id_len_netdev_phys_item_id_20043 id_len netdev_phys_item_id 0 20043 &enable_so_batadv_interface_change_mtu_fndecl_20043
149731 +enable_so_ocrdma_alloc_lkey_fndecl_20045 ocrdma_alloc_lkey fndecl 5 20045 NULL
149732 +enable_so_ieee80211_if_fmt_ave_beacon_fndecl_20062 ieee80211_if_fmt_ave_beacon fndecl 3 20062 NULL
149733 +enable_so_ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval_fndecl_20067 ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval fndecl 3 20067 NULL
149734 +enable_so_buf_addr_mlx5_ib_resize_cq_20068 buf_addr mlx5_ib_resize_cq 0 20068 NULL nohasharray
149735 +enable_so_prctl_set_auxv_fndecl_20068 prctl_set_auxv fndecl 3 20068 &enable_so_buf_addr_mlx5_ib_resize_cq_20068
149736 +enable_so_max_rqst_sz_nfs4_channel_attrs_20083 max_rqst_sz nfs4_channel_attrs 0 20083 NULL nohasharray
149737 +enable_so_fb_deferred_io_fsync_fndecl_20083 fb_deferred_io_fsync fndecl 2 20083 &enable_so_max_rqst_sz_nfs4_channel_attrs_20083
149738 +enable_so_compat_rawv6_setsockopt_fndecl_20084 compat_rawv6_setsockopt fndecl 5 20084 NULL
149739 +enable_so_rxsize_grcan_device_config_20087 rxsize grcan_device_config 0 20087 NULL
149740 +enable_so_r8712_read32_fndecl_20095 r8712_read32 fndecl 0 20095 NULL
149741 +enable_so_dm_bufio_get_block_number_fndecl_20097 dm_bufio_get_block_number fndecl 0 20097 NULL
149742 +enable_so_do_mincore_fndecl_20105 do_mincore fndecl 1-2 20105 NULL
149743 +enable_so_max_acl_len_hci_rp_read_data_block_size_20119 max_acl_len hci_rp_read_data_block_size 0 20119 NULL
149744 +enable_so_ao_chans_pci224_board_20129 ao_chans pci224_board 0 20129 NULL
149745 +enable_so_btrfs_punch_hole_fndecl_20130 btrfs_punch_hole fndecl 3-2 20130 NULL
149746 +enable_so_in_ep_snd_usb_midi_endpoint_info_20132 in_ep snd_usb_midi_endpoint_info 0 20132 NULL
149747 +enable_so_data_sectors_per_block_partition_20138 data_sectors_per_block partition 0 20138 NULL
149748 +enable_so_dma_usbhs_pkt_20145 dma usbhs_pkt 0 20145 NULL
149749 +enable_so_pos_f_hidg_req_list_20147 pos f_hidg_req_list 0 20147 NULL
149750 +enable_so_hpet_address_vardecl_20150 hpet_address vardecl 0 20150 NULL
149751 +enable_so_ep_in_if_usb_card_20154 ep_in if_usb_card 0 20154 NULL
149752 +enable_so_trans_usbhs_pkt_20158 trans usbhs_pkt 0 20158 NULL
149753 +enable_so_nr_gpio_tle62x0_state_20178 nr_gpio tle62x0_state 0 20178 NULL
149754 +enable_so_swapRB_sd_20181 swapRB sd 0 20181 NULL
149755 +enable_so_unmap_single_bt_fndecl_20188 unmap_single_bt fndecl 3 20188 NULL nohasharray
149756 +enable_so___kmalloc_track_caller_fndecl_20188 __kmalloc_track_caller fndecl 1 20188 &enable_so_unmap_single_bt_fndecl_20188
149757 +enable_so_num_counters_vardecl_oprofile_perf_c_20189 num_counters vardecl_oprofile_perf.c 0 20189 NULL
149758 +enable_so_ftop_i387_soft_struct_20193 ftop i387_soft_struct 0 20193 NULL
149759 +enable_so_agp_memory_reserved_vardecl_20196 agp_memory_reserved vardecl 0 20196 NULL
149760 +enable_so_qxl_gem_object_create_with_handle_fndecl_20198 qxl_gem_object_create_with_handle fndecl 4 20198 NULL
149761 +enable_so_fpage_size_genwqe_sgl_20199 fpage_size genwqe_sgl 0 20199 NULL
149762 +enable_so_exit_info_1_vmcb_control_area_20200 exit_info_1 vmcb_control_area 0 20200 NULL
149763 +enable_so_sectors_per_block_bits_dm_bufio_client_20202 sectors_per_block_bits dm_bufio_client 0 20202 NULL
149764 +enable_so_max_frame_size__mgslpc_info_20204 max_frame_size _mgslpc_info 0 20204 NULL
149765 +enable_so_xfs_bulkstat_ichunk_ra_fndecl_20205 xfs_bulkstat_ichunk_ra fndecl 2 20205 NULL nohasharray
149766 +enable_so_sbq_len_rx_ring_20205 sbq_len rx_ring 0 20205 &enable_so_xfs_bulkstat_ichunk_ra_fndecl_20205
149767 +enable_so_i40e_dbg_netdev_ops_write_fndecl_20206 i40e_dbg_netdev_ops_write fndecl 3 20206 NULL
149768 +enable_so_kfifo_copy_from_user_fndecl_20208 kfifo_copy_from_user fndecl 3-4 20208 NULL nohasharray
149769 +enable_so_get_random_bytes_fndecl_20208 get_random_bytes fndecl 2 20208 &enable_so_kfifo_copy_from_user_fndecl_20208
149770 +enable_so_dma_limit_tg3_20210 dma_limit tg3 0 20210 NULL
149771 +enable_so_objlayout_write_done_fndecl_20211 objlayout_write_done fndecl 2 20211 NULL nohasharray
149772 +enable_so_sglen_usbtest_param_20211 sglen usbtest_param 0 20211 &enable_so_objlayout_write_done_fndecl_20211
149773 +enable_so_rx_buffer_size_freelQ_20218 rx_buffer_size freelQ 0 20218 NULL
149774 +enable_so_dmah_acm_wb_20221 dmah acm_wb 0 20221 NULL
149775 +enable_so_produce_va_vmci_qp_page_file_info_20224 produce_va vmci_qp_page_file_info 0 20224 NULL
149776 +enable_so_use_sg_osst_buffer_20225 use_sg osst_buffer 0 20225 NULL
149777 +enable_so_ll_rw_extents_stats_seq_write_fndecl_20234 ll_rw_extents_stats_seq_write fndecl 3 20234 NULL
149778 +enable_so_msm_gem_import_fndecl_20238 msm_gem_import fndecl 2 20238 NULL
149779 +enable_so_mac_find_mode_fndecl_20243 mac_find_mode fndecl 4 20243 NULL
149780 +enable_so_vtotal_psb_pipe_20245 vtotal psb_pipe 0 20245 NULL
149781 +enable_so_nilfs_read_super_block_fndecl_20246 nilfs_read_super_block fndecl 3-2 20246 NULL
149782 +enable_so_i2c_writebytes_fndecl_20248 i2c_writebytes fndecl 3 20248 NULL
149783 +enable_so_ip_append_page_fndecl_20261 ip_append_page fndecl 5-4 20261 NULL
149784 +enable_so_value_len_ocfs2_security_xattr_info_20265 value_len ocfs2_security_xattr_info 0 20265 NULL
149785 +enable_so_arm_setup_iommu_dma_ops_fndecl_20272 arm_setup_iommu_dma_ops fndecl 3 20272 NULL
149786 +enable_so_fifo_size_eg20t_port_20279 fifo_size eg20t_port 0 20279 NULL
149787 +enable_so_f2fs_xattr_generic_set_fndecl_20280 f2fs_xattr_generic_set fndecl 4 20280 NULL
149788 +enable_so_size_vx_ibl_info_20282 size vx_ibl_info 0 20282 NULL
149789 +enable_so_soc_mbus_bytes_per_line_fndecl_20288 soc_mbus_bytes_per_line fndecl 1 20288 NULL
149790 +enable_so_kone_receive_fndecl_20289 kone_receive fndecl 4 20289 NULL
149791 +enable_so_blk_queue_io_min_fndecl_20293 blk_queue_io_min fndecl 2 20293 NULL
149792 +enable_so_link_to_fixup_dir_fndecl_20296 link_to_fixup_dir fndecl 4 20296 NULL
149793 +enable_so_rs_switch_to_mimo3_fndecl_20297 rs_switch_to_mimo3 fndecl 6 20297 NULL
149794 +enable_so_hash_netportnet6_expire_fndecl_20301 hash_netportnet6_expire fndecl 4 20301 NULL
149795 +enable_so_round_pipe_size_fndecl_20302 round_pipe_size fndecl 0 20302 NULL
149796 +enable_so_fallback_aper_order_vardecl_20308 fallback_aper_order vardecl 0 20308 NULL
149797 +enable_so_xfs_dir2_leaf_trim_data_fndecl_20310 xfs_dir2_leaf_trim_data fndecl 3 20310 NULL
149798 +enable_so_cx18_read_pos_fndecl_20312 cx18_read_pos fndecl 3 20312 NULL
149799 +enable_so_cas_change_mtu_fndecl_20320 cas_change_mtu fndecl 2 20320 NULL
149800 +enable_so_ati_create_gatt_pages_fndecl_20321 ati_create_gatt_pages fndecl 1 20321 NULL
149801 +enable_so_i_ecryptfs_parse_tag_70_packet_silly_stack_20325 i ecryptfs_parse_tag_70_packet_silly_stack 0 20325 NULL
149802 +enable_so_at24_eeprom_read_fndecl_20329 at24_eeprom_read fndecl 4-0 20329 NULL
149803 +enable_so_ext4_ext_put_gap_in_cache_fndecl_20333 ext4_ext_put_gap_in_cache fndecl 3 20333 NULL
149804 +enable_so_cxgbi_alloc_big_mem_fndecl_20336 cxgbi_alloc_big_mem fndecl 1 20336 NULL
149805 +enable_so_ss_out_channels_hdspm_20338 ss_out_channels hdspm 0 20338 NULL
149806 +enable_so_request_sz_MPT2SAS_ADAPTER_20341 request_sz MPT2SAS_ADAPTER 0 20341 NULL
149807 +enable_so_translate_gpa_kvm_mmu_20350 translate_gpa kvm_mmu 0 20350 NULL nohasharray
149808 +enable_so_sq_wqe_count_mlx5_ib_create_qp_20350 sq_wqe_count mlx5_ib_create_qp 0 20350 &enable_so_translate_gpa_kvm_mmu_20350
149809 +enable_so_sections_pe_hdr_20351 sections pe_hdr 0 20351 NULL
149810 +enable_so_lu_buf_alloc_fndecl_20354 lu_buf_alloc fndecl 2 20354 NULL
149811 +enable_so_memblock_find_in_range_fndecl_20356 memblock_find_in_range fndecl 4-3 20356 NULL
149812 +enable_so_chipshift_alauda_card_info_20364 chipshift alauda_card_info 0 20364 NULL
149813 +enable_so_type_usbdevfs_urb_20367 type usbdevfs_urb 0 20367 NULL
149814 +enable_so_ll_rw_offset_stats_seq_write_fndecl_20371 ll_rw_offset_stats_seq_write fndecl 3 20371 NULL
149815 +enable_so_hw_block_size_se_dev_attrib_20373 hw_block_size se_dev_attrib 0 20373 NULL nohasharray
149816 +enable_so_cfgctxts_qib_devdata_20373 cfgctxts qib_devdata 0 20373 &enable_so_hw_block_size_se_dev_attrib_20373
149817 +enable_so_nstamps_max_mask_recent_table_20374 nstamps_max_mask recent_table 0 20374 NULL
149818 +enable_so_create_reloc_root_fndecl_20381 create_reloc_root fndecl 3 20381 NULL
149819 +enable_so_xfs_qm_fill_state_fndecl_20384 xfs_qm_fill_state fndecl 4 20384 NULL
149820 +enable_so_opts1_rx_desc_20387 opts1 rx_desc 0 20387 NULL
149821 +enable_so_btrfs_del_items_fndecl_20388 btrfs_del_items fndecl 5 20388 NULL
149822 +enable_so_periodic_size_fotg210_hcd_20395 periodic_size fotg210_hcd 0 20395 NULL
149823 +enable_so_leb_size_ubi_device_20396 leb_size ubi_device 0 20396 NULL
149824 +enable_so_xfs_qm_dqusage_adjust_fndecl_20403 xfs_qm_dqusage_adjust fndecl 2 20403 NULL
149825 +enable_so_mc_rreg_radeon_device_20418 mc_rreg radeon_device 0 20418 NULL
149826 +enable_so_bna_enet_mtu_set_fndecl_20430 bna_enet_mtu_set fndecl 2 20430 NULL
149827 +enable_so_sd_log_head_gfs2_sbd_20435 sd_log_head gfs2_sbd 0 20435 NULL
149828 +enable_so_blob_len_trusted_key_payload_20437 blob_len trusted_key_payload 0 20437 NULL
149829 +enable_so_info__carl9170_tx_status_20439 info _carl9170_tx_status 0 20439 NULL nohasharray
149830 +enable_so_ncp__vol2io_fndecl_20439 ncp__vol2io fndecl 5 20439 &enable_so_info__carl9170_tx_status_20439
149831 +enable_so_gigaset_isoc_receive_fndecl_20447 gigaset_isoc_receive fndecl 2 20447 NULL
149832 +enable_so_ib_max_size_mvumi_hba_20452 ib_max_size mvumi_hba 0 20452 NULL
149833 +enable_so_stride_banshee_reg_20459 stride banshee_reg 0 20459 NULL
149834 +enable_so_xfs_setsize_buftarg_fndecl_20465 xfs_setsize_buftarg fndecl 2 20465 NULL
149835 +enable_so_scsi_end_request_fndecl_20468 scsi_end_request fndecl 3-4 20468 NULL
149836 +enable_so_wMaxCommand_usb_cdc_dmm_desc_20473 wMaxCommand usb_cdc_dmm_desc 0 20473 NULL
149837 +enable_so_iptunnel_pull_header_fndecl_20476 iptunnel_pull_header fndecl 2 20476 NULL
149838 +enable_so_gsm_control_rls_fndecl_20490 gsm_control_rls fndecl 3 20490 NULL
149839 +enable_so_rose_recvmsg_fndecl_20491 rose_recvmsg fndecl 3 20491 NULL
149840 +enable_so_ext4_ext_insert_index_fndecl_20492 ext4_ext_insert_index fndecl 4 20492 NULL
149841 +enable_so_pref_width_vmw_display_unit_20493 pref_width vmw_display_unit 0 20493 NULL
149842 +enable_so_pageshift_sddr09_card_info_20494 pageshift sddr09_card_info 0 20494 NULL
149843 +enable_so_nrbchan_mISDNdevice_20497 nrbchan mISDNdevice 0 20497 NULL
149844 +enable_so_ocfs2_extend_xattr_bucket_fndecl_20499 ocfs2_extend_xattr_bucket fndecl 4 20499 NULL
149845 +enable_so___f2fs_add_link_fndecl_20502 __f2fs_add_link fndecl 4 20502 NULL
149846 +enable_so_nzones_adfs_discrecord_20503 nzones adfs_discrecord 0 20503 NULL
149847 +enable_so_reiserfs_allocate_blocknrs_fndecl_20505 reiserfs_allocate_blocknrs fndecl 3 20505 NULL
149848 +enable_so_data_len_icmp_bxm_20511 data_len icmp_bxm 0 20511 NULL
149849 +enable_so_newImageSize_mpt_ioctl_replace_fw_20513 newImageSize mpt_ioctl_replace_fw 0 20513 NULL
149850 +enable_so_xtAppend_fndecl_20525 xtAppend fndecl 4 20525 NULL
149851 +enable_so_x86_emulate_instruction_fndecl_20526 x86_emulate_instruction fndecl 2 20526 NULL nohasharray
149852 +enable_so_src_val_x86_instruction_info_20526 src_val x86_instruction_info 0 20526 &enable_so_x86_emulate_instruction_fndecl_20526
149853 +enable_so_scnprintf_fndecl_20531 scnprintf fndecl 0-2 20531 NULL
149854 +enable_so_expand_downwards_fndecl_20533 expand_downwards fndecl 2 20533 NULL
149855 +enable_so_pnfs_generic_pg_init_write_fndecl_20539 pnfs_generic_pg_init_write fndecl 3 20539 NULL
149856 +enable_so_mlx5_core_req_pages_handler_fndecl_20540 mlx5_core_req_pages_handler fndecl 3 20540 NULL
149857 +enable_so_s_first_data_block_ext2_super_block_20541 s_first_data_block ext2_super_block 0 20541 NULL
149858 +enable_so_crtc_hdisplay_drm_display_mode_20548 crtc_hdisplay drm_display_mode 0 20548 NULL nohasharray
149859 +enable_so_input_estimate_events_per_packet_fndecl_20548 input_estimate_events_per_packet fndecl 0 20548 &enable_so_crtc_hdisplay_drm_display_mode_20548
149860 +enable_so_dataflash_write_fndecl_20550 dataflash_write fndecl 2-3 20550 NULL
149861 +enable_so_free_extents_btrfs_free_space_ctl_20566 free_extents btrfs_free_space_ctl 0 20566 NULL
149862 +enable_so_isdn_readbchan_fndecl_20570 isdn_readbchan fndecl 5 20570 NULL
149863 +enable_so_check_defrag_in_cache_fndecl_20573 check_defrag_in_cache fndecl 3-2 20573 NULL
149864 +enable_so_hp_outs_auto_pin_cfg_20574 hp_outs auto_pin_cfg 0 20574 NULL
149865 +enable_so_map_single_fndecl_20586 map_single fndecl 3 20586 NULL
149866 +enable_so_fifo_size_pxa_ep_20587 fifo_size pxa_ep 0 20587 NULL
149867 +enable_so_pci_add_cap_save_buffer_fndecl_20593 pci_add_cap_save_buffer fndecl 3 20593 NULL
149868 +enable_so_target_complete_cmd_with_length_fndecl_20597 target_complete_cmd_with_length fndecl 3 20597 NULL
149869 +enable_so_max_deviceinfo_size_pnfs_layoutdriver_type_20599 max_deviceinfo_size pnfs_layoutdriver_type 0 20599 NULL
149870 +enable_so_bblog_shift_mdp_superblock_1_20604 bblog_shift mdp_superblock_1 0 20604 NULL
149871 +enable_so_get_alt_usb_function_20605 get_alt usb_function 0 20605 NULL nohasharray
149872 +enable_so_cdrom_read_block_fndecl_20605 cdrom_read_block fndecl 4-6 20605 &enable_so_get_alt_usb_function_20605
149873 +enable_so_ext4_inode_table_set_fndecl_20611 ext4_inode_table_set fndecl 3 20611 NULL
149874 +enable_so_nilfs_cpfile_set_snapshot_fndecl_20616 nilfs_cpfile_set_snapshot fndecl 2 20616 NULL
149875 +enable_so_metadataMirrorFileLoc_metadataPartitionMap_20617 metadataMirrorFileLoc metadataPartitionMap 0 20617 NULL
149876 +enable_so_ocfs2_allocate_refcount_tree_fndecl_20626 ocfs2_allocate_refcount_tree fndecl 2 20626 NULL
149877 +enable_so___nla_put_nohdr_fndecl_20631 __nla_put_nohdr fndecl 2 20631 NULL
149878 +enable_so_snd_pcm_lib_readv_transfer_fndecl_20635 snd_pcm_lib_readv_transfer fndecl 5 20635 NULL
149879 +enable_so_gx1_frame_buffer_size_fndecl_20638 gx1_frame_buffer_size fndecl 0 20638 NULL
149880 +enable_so_num_comp_vectors_ib_device_20639 num_comp_vectors ib_device 0 20639 NULL
149881 +enable_so_cursor_size_fbcon_ops_20640 cursor_size fbcon_ops 0 20640 NULL
149882 +enable_so_offset_iscsi_seq_20646 offset iscsi_seq 0 20646 NULL
149883 +enable_so_nr_pages_ore_io_state_20648 nr_pages ore_io_state 0 20648 NULL
149884 +enable_so_m_pblk_ext4_map_blocks_20649 m_pblk ext4_map_blocks 0 20649 NULL
149885 +enable_so_security_context_to_sid_default_fndecl_20663 security_context_to_sid_default fndecl 2 20663 NULL
149886 +enable_so_dlm_process_incoming_buffer_fndecl_20665 dlm_process_incoming_buffer fndecl 0 20665 NULL
149887 +enable_so_kvm_handle_bad_page_fndecl_20668 kvm_handle_bad_page fndecl 2 20668 NULL
149888 +enable_so_nilfs_load_super_root_fndecl_20676 nilfs_load_super_root fndecl 3 20676 NULL nohasharray
149889 +enable_so_total_bytes_transferred_snd_compr_runtime_20676 total_bytes_transferred snd_compr_runtime 0 20676 &enable_so_nilfs_load_super_root_fndecl_20676
149890 +enable_so_btrfs_dir_name_len_fndecl_20686 btrfs_dir_name_len fndecl 0 20686 NULL
149891 +enable_so_write_to_8820_fndecl_20687 write_to_8820 fndecl 3 20687 NULL
149892 +enable_so_SyS_semtimedop_fndecl_20703 SyS_semtimedop fndecl 3 20703 NULL
149893 +enable_so_erase_size_vardecl_mtdram_c_20704 erase_size vardecl_mtdram.c 0 20704 NULL
149894 +enable_so_evtchn_read_fndecl_20706 evtchn_read fndecl 3 20706 NULL
149895 +enable_so_nilfs_sufile_do_free_fndecl_20709 nilfs_sufile_do_free fndecl 2 20709 NULL
149896 +enable_so_w_s5p_jpeg_q_data_20716 w s5p_jpeg_q_data 0 20716 NULL
149897 +enable_so_ip_blkno_ocfs2_inode_info_20717 ip_blkno ocfs2_inode_info 0 20717 NULL nohasharray
149898 +enable_so_len_asymmetric_key_id_20717 len asymmetric_key_id 0 20717 &enable_so_ip_blkno_ocfs2_inode_info_20717
149899 +enable_so_dlc_rx_msg_20720 dlc rx_msg 0 20720 NULL
149900 +enable_so_add_range_fndecl_20721 add_range fndecl 5 20721 NULL
149901 +enable_so_txq_data_size_ieee80211_hw_20725 txq_data_size ieee80211_hw 0 20725 NULL
149902 +enable_so_alloc_smp_resp_fndecl_20733 alloc_smp_resp fndecl 1 20733 NULL
149903 +enable_so_max_io_length_ore_layout_20738 max_io_length ore_layout 0 20738 NULL
149904 +enable_so_bio_integrity_intervals_fndecl_20741 bio_integrity_intervals fndecl 0-2 20741 NULL
149905 +enable_so_btrfs_remove_chunk_fndecl_20742 btrfs_remove_chunk fndecl 3 20742 NULL
149906 +enable_so_max_sge_qib_rq_20746 max_sge qib_rq 0 20746 NULL
149907 +enable_so_rb_alloc_fndecl_20749 rb_alloc fndecl 1 20749 NULL
149908 +enable_so_sb_pseg_start_nilfs_segment_buffer_20750 sb_pseg_start nilfs_segment_buffer 0 20750 NULL
149909 +enable_so_ttusb2_msg_fndecl_20751 ttusb2_msg fndecl 4 20751 NULL
149910 +enable_so_TransferCount__MPI2_SCSI_IO_REPLY_20759 TransferCount _MPI2_SCSI_IO_REPLY 0 20759 NULL
149911 +enable_so_free_coherent_fndecl_20761 free_coherent fndecl 2 20761 NULL
149912 +enable_so_do_numa_page_fndecl_20764 do_numa_page fndecl 3 20764 NULL nohasharray
149913 +enable_so_r_readdir_offset_ceph_mds_request_20764 r_readdir_offset ceph_mds_request 0 20764 &enable_so_do_numa_page_fndecl_20764
149914 +enable_so_read_in_block_fndecl_20766 read_in_block fndecl 3 20766 NULL
149915 +enable_so_simple_write_to_buffer_fndecl_20769 simple_write_to_buffer fndecl 2-5 20769 NULL
149916 +enable_so_channels_min_snd_soc_pcm_stream_20771 channels_min snd_soc_pcm_stream 0 20771 NULL
149917 +enable_so_print_time_fndecl_20783 print_time fndecl 0 20783 NULL
149918 +enable_so_fat_fats_fat_bios_param_block_20785 fat_fats fat_bios_param_block 0 20785 NULL
149919 +enable_so_sectorsize_btrfs_block_group_cache_20787 sectorsize btrfs_block_group_cache 0 20787 NULL
149920 +enable_so_final_block_in_request_dio_submit_20788 final_block_in_request dio_submit 0 20788 NULL nohasharray
149921 +enable_so_addr_kvm_async_pf_20788 addr kvm_async_pf 0 20788 &enable_so_final_block_in_request_dio_submit_20788
149922 +enable_so_max_seg_size_mmc_host_20795 max_seg_size mmc_host 0 20795 NULL nohasharray
149923 +enable_so_pos_vb2_fileio_buf_20795 pos vb2_fileio_buf 0 20795 &enable_so_max_seg_size_mmc_host_20795
149924 +enable_so_namelen_xfs_da_args_20803 namelen xfs_da_args 0 20803 NULL
149925 +enable_so_compat_sys_migrate_pages_fndecl_20806 compat_sys_migrate_pages fndecl 2 20806 NULL
149926 +enable_so_rcvidx_isac_20815 rcvidx isac 0 20815 NULL
149927 +enable_so_filldir_fndecl_20820 filldir fndecl 3 20820 NULL
149928 +enable_so_fill_write_buffer_fndecl_20821 fill_write_buffer fndecl 3 20821 NULL
149929 +enable_so_aux_size_dm_bufio_client_20827 aux_size dm_bufio_client 0 20827 NULL
149930 +enable_so_drm_fb_helper_single_fb_probe_fndecl_20828 drm_fb_helper_single_fb_probe fndecl 2 20828 NULL
149931 +enable_so_currentXmitRate_StatusRid_20835 currentXmitRate StatusRid 0 20835 NULL nohasharray
149932 +enable_so_compat_do_ip6t_set_ctl_fndecl_20835 compat_do_ip6t_set_ctl fndecl 4 20835 &enable_so_currentXmitRate_StatusRid_20835
149933 +enable_so_mempool_create_node_fndecl_20836 mempool_create_node fndecl 1 20836 NULL
149934 +enable_so_alloc_context_fndecl_20841 alloc_context fndecl 1 20841 NULL
149935 +enable_so_udp_sendpage_fndecl_20845 udp_sendpage fndecl 4-3 20845 NULL nohasharray
149936 +enable_so_shmem_pread_slow_fndecl_20845 shmem_pread_slow fndecl 2-3 20845 &enable_so_udp_sendpage_fndecl_20845
149937 +enable_so_dma_init_coherent_memory_fndecl_20846 dma_init_coherent_memory fndecl 3 20846 NULL
149938 +enable_so_cur_page_block_dio_submit_20851 cur_page_block dio_submit 0 20851 NULL
149939 +enable_so_uvc_video_stats_dump_fndecl_20862 uvc_video_stats_dump fndecl 3 20862 NULL nohasharray
149940 +enable_so_uinput_ioctl_handler_fndecl_20862 uinput_ioctl_handler fndecl 2 20862 &enable_so_uvc_video_stats_dump_fndecl_20862
149941 +enable_so_SyS_sendto_fndecl_20864 SyS_sendto fndecl 6 20864 NULL
149942 +enable_so_num_mlx4_resource_20869 num mlx4_resource 0 20869 NULL
149943 +enable_so_length_iwl_ucode_tlv_20871 length iwl_ucode_tlv 0 20871 NULL
149944 +enable_so_btrfs_prealloc_file_range_fndecl_20872 btrfs_prealloc_file_range fndecl 4-3-5 20872 NULL
149945 +enable_so_usb_stor_intr_transfer_fndecl_20883 usb_stor_intr_transfer fndecl 3 20883 NULL
149946 +enable_so_codec_reg_write_file_fndecl_20887 codec_reg_write_file fndecl 3 20887 NULL
149947 +enable_so_cl_local_node_o2nm_cluster_20896 cl_local_node o2nm_cluster 0 20896 NULL
149948 +enable_so_tx_power_ipw2100_priv_20898 tx_power ipw2100_priv 0 20898 NULL
149949 +enable_so_max_rate_idx_iwl_lq_sta_20899 max_rate_idx iwl_lq_sta 0 20899 NULL
149950 +enable_so_did_overwrite_first_ref_fndecl_20904 did_overwrite_first_ref fndecl 2 20904 NULL
149951 +enable_so_phys_addr_t4_sq_20908 phys_addr t4_sq 0 20908 NULL
149952 +enable_so_write_adapter_mem_fndecl_20913 write_adapter_mem fndecl 3 20913 NULL
149953 +enable_so_n_dir_band_hpfs_super_block_20914 n_dir_band hpfs_super_block 0 20914 NULL nohasharray
149954 +enable_so_dvb_ringbuffer_pkt_write_fndecl_20914 dvb_ringbuffer_pkt_write fndecl 3 20914 &enable_so_n_dir_band_hpfs_super_block_20914
149955 +enable_so_zisofs_uncompress_block_fndecl_20917 zisofs_uncompress_block fndecl 2-3-6-0-4 20917 NULL
149956 +enable_so_mmap_piobufs_fndecl_20927 mmap_piobufs fndecl 4 20927 NULL
149957 +enable_so_qbuf_scan_fndecl_20933 qbuf_scan fndecl 3 20933 NULL
149958 +enable_so___ilog2_u64_fndecl_20935 __ilog2_u64 fndecl 0 20935 NULL
149959 +enable_so_npages_mlx5_buf_20958 npages mlx5_buf 0 20958 NULL
149960 +enable_so__iwl_dbgfs_d3_sram_write_fndecl_20960 _iwl_dbgfs_d3_sram_write fndecl 3 20960 NULL
149961 +enable_so_calc_plane_fndecl_20962 calc_plane fndecl 0-2-1 20962 NULL
149962 +enable_so_dbDiscardAG_fndecl_20969 dbDiscardAG fndecl 3 20969 NULL
149963 +enable_so_count_cma_20973 count cma 0 20973 NULL
149964 +enable_so_ieee80211_if_write_beacon_loss_fndecl_20979 ieee80211_if_write_beacon_loss fndecl 3 20979 NULL
149965 +enable_so_offset_fuse_notify_store_out_20985 offset fuse_notify_store_out 0 20985 NULL
149966 +enable_so___set_extent_bit_fndecl_20986 __set_extent_bit fndecl 3-2 20986 NULL nohasharray
149967 +enable_so_spidev_compat_ioc_message_fndecl_20986 spidev_compat_ioc_message fndecl 2 20986 &enable_so___set_extent_bit_fndecl_20986
149968 +enable_so_dy_fb_image_20988 dy fb_image 0 20988 NULL
149969 +enable_so_gfn_guest_walker32_20990 gfn guest_walker32 0 20990 NULL
149970 +enable_so_playback_streams_azx_20993 playback_streams azx 0 20993 NULL
149971 +enable_so_do_set_pte_fndecl_20994 do_set_pte fndecl 2 20994 NULL
149972 +enable_so_udf_direct_IO_fndecl_20999 udf_direct_IO fndecl 3 20999 NULL
149973 +enable_so_get_fd_set_fndecl_21001 get_fd_set fndecl 1 21001 NULL
149974 +enable_so_sst_hsw_module_set_param_fndecl_21007 sst_hsw_module_set_param fndecl 5 21007 NULL
149975 +enable_so_cxns_per_ctrl_hba_parameters_21008 cxns_per_ctrl hba_parameters 0 21008 NULL
149976 +enable_so_s_log_cluster_size_ext4_super_block_21014 s_log_cluster_size ext4_super_block 0 21014 NULL
149977 +enable_so___build_skb_fndecl_21024 __build_skb fndecl 2 21024 NULL
149978 +enable_so_minix_new_block_fndecl_21026 minix_new_block fndecl 0 21026 NULL
149979 +enable_so_info3_rx_ppdu_start_21029 info3 rx_ppdu_start 0 21029 NULL nohasharray
149980 +enable_so_nvram_write_fndecl_21029 nvram_write fndecl 3 21029 &enable_so_info3_rx_ppdu_start_21029
149981 +enable_so_comedi_buf_read_n_available_fndecl_21032 comedi_buf_read_n_available fndecl 0 21032 NULL
149982 +enable_so_fw_resource_count_efi_system_resource_table_21033 fw_resource_count efi_system_resource_table 0 21033 NULL
149983 +enable_so_crtc_vdisplay_drm_display_mode_21037 crtc_vdisplay drm_display_mode 0 21037 NULL
149984 +enable_so_garp_attr_create_fndecl_21048 garp_attr_create fndecl 3 21048 NULL
149985 +enable_so_prep_umr_reg_wqe_fndecl_21050 prep_umr_reg_wqe fndecl 5 21050 NULL
149986 +enable_so_erase_shift_onenand_chip_21052 erase_shift onenand_chip 0 21052 NULL nohasharray
149987 +enable_so_tx_queues_rt2x00_ops_21052 tx_queues rt2x00_ops 0 21052 &enable_so_erase_shift_onenand_chip_21052
149988 +enable_so_SyS_move_pages_fndecl_21059 SyS_move_pages fndecl 2 21059 NULL
149989 +enable_so_m1_gma_clock_t_21062 m1 gma_clock_t 0 21062 NULL
149990 +enable_so_chaoskey_rng_read_fndecl_21064 chaoskey_rng_read fndecl 3 21064 NULL
149991 +enable_so_ts_packet_count_cx231xx_tsport_21071 ts_packet_count cx231xx_tsport 0 21071 NULL
149992 +enable_so_vcs_write_fndecl_21077 vcs_write fndecl 3 21077 NULL
149993 +enable_so_thread_self_inum_vardecl_thread_self_c_21079 thread_self_inum vardecl_thread_self.c 0 21079 NULL
149994 +enable_so_consume_size_qp_entry_21087 consume_size qp_entry 0 21087 NULL
149995 +enable_so_queue_pages_test_walk_fndecl_21089 queue_pages_test_walk fndecl 2-1 21089 NULL
149996 +enable_so_max_counters_mlx4_caps_21095 max_counters mlx4_caps 0 21095 NULL
149997 +enable_so_ext4_block_truncate_page_fndecl_21098 ext4_block_truncate_page fndecl 3 21098 NULL
149998 +enable_so_ext4_bg_has_super_fndecl_21104 ext4_bg_has_super fndecl 0 21104 NULL
149999 +enable_so_sge_size_ieee_MPT3SAS_ADAPTER_21108 sge_size_ieee MPT3SAS_ADAPTER 0 21108 NULL nohasharray
150000 +enable_so_rb_alloc_aux_fndecl_21108 rb_alloc_aux fndecl 4 21108 &enable_so_sge_size_ieee_MPT3SAS_ADAPTER_21108
150001 +enable_so_dm_rh_get_region_size_fndecl_21112 dm_rh_get_region_size fndecl 0 21112 NULL
150002 +enable_so_hdlc_irq_one_fndecl_21115 hdlc_irq_one fndecl 2 21115 NULL nohasharray
150003 +enable_so_max_slots_ocfs2_super_21115 max_slots ocfs2_super 0 21115 &enable_so_hdlc_irq_one_fndecl_21115
150004 +enable_so_header_length_scsi_mode_data_21117 header_length scsi_mode_data 0 21117 NULL
150005 +enable_so_hdrlen_ipv6_opt_hdr_21121 hdrlen ipv6_opt_hdr 0 21121 NULL nohasharray
150006 +enable_so_chunk_mask_dm_exception_store_21121 chunk_mask dm_exception_store 0 21121 &enable_so_hdrlen_ipv6_opt_hdr_21121
150007 +enable_so_produce_size_vmci_transport_21124 produce_size vmci_transport 0 21124 NULL nohasharray
150008 +enable_so_size_ndis_80211_key_21124 size ndis_80211_key 0 21124 &enable_so_produce_size_vmci_transport_21124
150009 +enable_so_s_desc_per_block_bits_ext4_sb_info_21130 s_desc_per_block_bits ext4_sb_info 0 21130 NULL
150010 +enable_so_do_add_counters_fndecl_21131 do_add_counters fndecl 3-0 21131 NULL
150011 +enable_so_xfs_bmbt_lookup_eq_fndecl_21134 xfs_bmbt_lookup_eq fndecl 3-2-4 21134 NULL
150012 +enable_so_cp_pack_start_sum_f2fs_checkpoint_21142 cp_pack_start_sum f2fs_checkpoint 0 21142 NULL
150013 +enable_so_clk_get_rate_fndecl_21147 clk_get_rate fndecl 0 21147 NULL nohasharray
150014 +enable_so_address_acpi_generic_address_21147 address acpi_generic_address 0 21147 &enable_so_clk_get_rate_fndecl_21147
150015 +enable_so_hsu_dma_prep_slave_sg_fndecl_21155 hsu_dma_prep_slave_sg fndecl 3 21155 NULL
150016 +enable_so_blk_end_request_fndecl_21163 blk_end_request fndecl 3 21163 NULL
150017 +enable_so_gfs2_dir_get_existing_buffer_fndecl_21172 gfs2_dir_get_existing_buffer fndecl 2 21172 NULL
150018 +enable_so_mei_write_fndecl_21174 mei_write fndecl 3 21174 NULL
150019 +enable_so_userspace_status_fndecl_21175 userspace_status fndecl 4 21175 NULL
150020 +enable_so_snd_hdsp_capture_copy_fndecl_21176 snd_hdsp_capture_copy fndecl 5 21176 NULL
150021 +enable_so_udf_try_read_meta_fndecl_21178 udf_try_read_meta fndecl 4 21178 NULL
150022 +enable_so_transport_lba_21_fndecl_21182 transport_lba_21 fndecl 0 21182 NULL
150023 +enable_so_usage_index_hid_local_21183 usage_index hid_local 0 21183 NULL
150024 +enable_so_init_ppi_data_fndecl_21184 init_ppi_data fndecl 2 21184 NULL
150025 +enable_so_crtc_hsync_end_drm_display_mode_21187 crtc_hsync_end drm_display_mode 0 21187 NULL
150026 +enable_so_rx_dma_addr_sh_msiof_spi_priv_21189 rx_dma_addr sh_msiof_spi_priv 0 21189 NULL
150027 +enable_so_ucNumEntries__ATOM_PPLIB_Clock_Voltage_Dependency_Table_21191 ucNumEntries _ATOM_PPLIB_Clock_Voltage_Dependency_Table 0 21191 NULL
150028 +enable_so_sb_inodesize_xfs_sb_21192 sb_inodesize xfs_sb 0 21192 NULL
150029 +enable_so_gfs2_inode_lookup_fndecl_21194 gfs2_inode_lookup fndecl 3 21194 NULL
150030 +enable_so_fb_cvt_ideal_duty_cycle_fndecl_21197 fb_cvt_ideal_duty_cycle fndecl 0 21197 NULL
150031 +enable_so_usbnet_write_cmd_async_fndecl_21200 usbnet_write_cmd_async fndecl 7 21200 NULL
150032 +enable_so_n_ir_fw_ohci_21205 n_ir fw_ohci 0 21205 NULL
150033 +enable_so_mtip_hw_read_registers_fndecl_21206 mtip_hw_read_registers fndecl 3 21206 NULL
150034 +enable_so___logfs_segment_write_fndecl_21219 __logfs_segment_write fndecl 5 21219 NULL
150035 +enable_so_hpfs_get_4sectors_fndecl_21224 hpfs_get_4sectors fndecl 2 21224 NULL
150036 +enable_so_rs_free_gfs2_blkreserv_21228 rs_free gfs2_blkreserv 0 21228 NULL
150037 +enable_so_tx_ptr_catc_21231 tx_ptr catc 0 21231 NULL nohasharray
150038 +enable_so_ext4_blks_to_allocate_fndecl_21231 ext4_blks_to_allocate fndecl 0-4-3 21231 &enable_so_tx_ptr_catc_21231
150039 +enable_so_ptr_mask_radeon_ring_21233 ptr_mask radeon_ring 0 21233 NULL
150040 +enable_so_bytes_xfered_mmc_data_21235 bytes_xfered mmc_data 0 21235 NULL
150041 +enable_so_RamAmountKBytes_nvidia_par_21238 RamAmountKBytes nvidia_par 0 21238 NULL
150042 +enable_so_rp_buflen_nfs4_replay_21241 rp_buflen nfs4_replay 0 21241 NULL
150043 +enable_so_ring_size_amdgpu_ih_ring_21243 ring_size amdgpu_ih_ring 0 21243 NULL
150044 +enable_so_fbcon_do_set_font_fndecl_21244 fbcon_do_set_font fndecl 2-3 21244 NULL
150045 +enable_so_nilfs_cpfile_change_cpmode_fndecl_21246 nilfs_cpfile_change_cpmode fndecl 2 21246 NULL
150046 +enable_so_size_seq_buf_21247 size seq_buf 0 21247 NULL nohasharray
150047 +enable_so_rxq_depth_bnad_21247 rxq_depth bnad 0 21247 &enable_so_size_seq_buf_21247
150048 +enable_so_sctp_getsockopt_events_fndecl_21252 sctp_getsockopt_events fndecl 2 21252 NULL
150049 +enable_so_blkcipher_walk_done_fndecl_21256 blkcipher_walk_done fndecl 3 21256 NULL nohasharray
150050 +enable_so_edac_mc_alloc_fndecl_21256 edac_mc_alloc fndecl 4 21256 &enable_so_blkcipher_walk_done_fndecl_21256
150051 +enable_so_ufs_clear_frags_fndecl_21263 ufs_clear_frags fndecl 2 21263 NULL
150052 +enable_so_vc_resize_fndecl_21266 vc_resize fndecl 3-2 21266 NULL nohasharray
150053 +enable_so_num_fh_nfs4_filelayout_segment_21266 num_fh nfs4_filelayout_segment 0 21266 &enable_so_vc_resize_fndecl_21266
150054 +enable_so_elfcorebuf_sz_vardecl_vmcore_c_21270 elfcorebuf_sz vardecl_vmcore.c 0 21270 NULL
150055 +enable_so_object_name_len_compat_ncp_objectname_ioctl_21274 object_name_len compat_ncp_objectname_ioctl 0 21274 NULL
150056 +enable_so_nfs23_validate_mount_data_fndecl_21276 nfs23_validate_mount_data fndecl 0 21276 NULL
150057 +enable_so_height_simplefb_params_21280 height simplefb_params 0 21280 NULL
150058 +enable_so_fm10k_alloc_q_vector_fndecl_21285 fm10k_alloc_q_vector fndecl 4-6 21285 NULL
150059 +enable_so_max_channels_atiixp_21295 max_channels atiixp 0 21295 NULL
150060 +enable_so_cmds_max_iscsi_session_21296 cmds_max iscsi_session 0 21296 NULL
150061 +enable_so_osd_yres_vardecl_ivtvfb_c_21299 osd_yres vardecl_ivtvfb.c 0 21299 NULL
150062 +enable_so_wSamplesPerFrame_uac_format_type_ii_discrete_descriptor_21300 wSamplesPerFrame uac_format_type_ii_discrete_descriptor 0 21300 NULL
150063 +enable_so_xblk_next_xblk_qnx4_xblk_21303 xblk_next_xblk qnx4_xblk 0 21303 NULL
150064 +enable_so_aligned_kmalloc_fndecl_21311 aligned_kmalloc fndecl 1 21311 NULL
150065 +enable_so_num_paths_bna_rx_config_21315 num_paths bna_rx_config 0 21315 NULL
150066 +enable_so_fuse_copy_page_fndecl_21316 fuse_copy_page fndecl 4-3 21316 NULL
150067 +enable_so_tcp_fragment_fndecl_21318 tcp_fragment fndecl 4-3 21318 NULL
150068 +enable_so__iwl_dbgfs_tx_flush_write_fndecl_21320 _iwl_dbgfs_tx_flush_write fndecl 3 21320 NULL
150069 +enable_so_sq_len_queue_set_21321 sq_len queue_set 0 21321 NULL
150070 +enable_so_mincore_unmapped_range_fndecl_21322 mincore_unmapped_range fndecl 1 21322 NULL
150071 +enable_so_UniformBlockSizeShift_qinfo_chip_21323 UniformBlockSizeShift qinfo_chip 0 21323 NULL
150072 +enable_so_x86_swiotlb_alloc_coherent_fndecl_21330 x86_swiotlb_alloc_coherent fndecl 2 21330 NULL
150073 +enable_so_int_goertzel_fndecl_21331 int_goertzel fndecl 0-2-3 21331 NULL
150074 +enable_so_tx_ucast_rate_target_stats_21336 tx_ucast_rate target_stats 0 21336 NULL
150075 +enable_so_cma_alloc_fndecl_21340 cma_alloc fndecl 2-3 21340 NULL
150076 +enable_so_h_blkno_ocfs2_extent_block_21357 h_blkno ocfs2_extent_block 0 21357 NULL nohasharray
150077 +enable_so_sys_getrandom_fndecl_21357 sys_getrandom fndecl 2 21357 &enable_so_h_blkno_ocfs2_extent_block_21357
150078 +enable_so_igbvf_change_mtu_fndecl_21361 igbvf_change_mtu fndecl 2 21361 NULL
150079 +enable_so_ro_map_rpcrdma_memreg_ops_21369 ro_map rpcrdma_memreg_ops 0 21369 NULL
150080 +enable_so_ntfs_attr_make_non_resident_fndecl_21373 ntfs_attr_make_non_resident fndecl 2 21373 NULL
150081 +enable_so_pad_ieee80211_vendor_radiotap_21376 pad ieee80211_vendor_radiotap 0 21376 NULL
150082 +enable_so_chunk_size_dm_exception_store_21381 chunk_size dm_exception_store 0 21381 NULL
150083 +enable_so_inppos_net_local_21383 inppos net_local 0 21383 NULL
150084 +enable_so_num_vfs_enic_21386 num_vfs enic 0 21386 NULL
150085 +enable_so_temp_count_applesmc_registers_21387 temp_count applesmc_registers 0 21387 NULL
150086 +enable_so_ci_ll_write_fndecl_21391 ci_ll_write fndecl 4 21391 NULL
150087 +enable_so_vc_scan_lines_vc_data_21393 vc_scan_lines vc_data 0 21393 NULL
150088 +enable_so_digest_size_dm_verity_21399 digest_size dm_verity 0 21399 NULL
150089 +enable_so_length_r3964_block_header_21407 length r3964_block_header 0 21407 NULL
150090 +enable_so_mesh_id_len_ieee80211_if_mesh_21412 mesh_id_len ieee80211_if_mesh 0 21412 NULL
150091 +enable_so_ex_length_extent_s_21417 ex_length extent_s 0 21417 NULL
150092 +enable_so_ping_recvmsg_fndecl_21422 ping_recvmsg fndecl 3 21422 NULL
150093 +enable_so_managed_pages_zone_21425 managed_pages zone 0 21425 NULL
150094 +enable_so_max_ipath_lkey_table_21431 max ipath_lkey_table 0 21431 NULL
150095 +enable_so_btrfs_reserve_extent_fndecl_21433 btrfs_reserve_extent fndecl 2-3-5 21433 NULL
150096 +enable_so_intbufferhandle_kaweth_device_21438 intbufferhandle kaweth_device 0 21438 NULL nohasharray
150097 +enable_so_tool_spad_write_fndecl_21438 tool_spad_write fndecl 3 21438 &enable_so_intbufferhandle_kaweth_device_21438
150098 +enable_so_msr_bitmap_vmcs12_21445 msr_bitmap vmcs12 0 21445 NULL
150099 +enable_so_video_width_sis_video_info_21454 video_width sis_video_info 0 21454 NULL
150100 +enable_so_stripes_stripe_c_21457 stripes stripe_c 0 21457 NULL
150101 +enable_so_indirect2direct_fndecl_21459 indirect2direct fndecl 6 21459 NULL
150102 +enable_so_ext3_htree_create_dir_info_fndecl_21461 ext3_htree_create_dir_info fndecl 2 21461 NULL
150103 +enable_so_i_no_addr_gfs2_inode_21464 i_no_addr gfs2_inode 0 21464 NULL
150104 +enable_so_wp_pfn_shared_fndecl_21469 wp_pfn_shared fndecl 3 21469 NULL nohasharray
150105 +enable_so_acpi_current_gpe_count_vardecl_21469 acpi_current_gpe_count vardecl 0 21469 &enable_so_wp_pfn_shared_fndecl_21469
150106 +enable_so_msm_otg_mode_write_fndecl_21471 msm_otg_mode_write fndecl 3 21471 NULL
150107 +enable_so_ufs_inode_by_name_fndecl_21473 ufs_inode_by_name fndecl 0 21473 NULL
150108 +enable_so_ezusb_access_ltv_fndecl_21485 ezusb_access_ltv fndecl 3 21485 NULL
150109 +enable_so_fuse_do_ioctl_fndecl_21491 fuse_do_ioctl fndecl 2 21491 NULL
150110 +enable_so_hpfs_ea_ext_remove_fndecl_21492 hpfs_ea_ext_remove fndecl 2-4 21492 NULL
150111 +enable_so_video_pbase_vivid_dev_21503 video_pbase vivid_dev 0 21503 NULL
150112 +enable_so_gart_map_page_fndecl_21510 gart_map_page fndecl 4-3 21510 NULL
150113 +enable_so_max_io_support_mvumi_hs_page1_21519 max_io_support mvumi_hs_page1 0 21519 NULL
150114 +enable_so_fifo_size_hscx_hw_21522 fifo_size hscx_hw 0 21522 NULL nohasharray
150115 +enable_so_c67x00_urb_dequeue_fndecl_21522 c67x00_urb_dequeue fndecl 3 21522 &enable_so_fifo_size_hscx_hw_21522
150116 +enable_so_data_offset_mdp_superblock_1_21524 data_offset mdp_superblock_1 0 21524 NULL nohasharray
150117 +enable_so_intel_sdvo_set_value_fndecl_21524 intel_sdvo_set_value fndecl 4 21524 &enable_so_data_offset_mdp_superblock_1_21524
150118 +enable_so_kvm_clear_guest_page_fndecl_21527 kvm_clear_guest_page fndecl 2-4 21527 NULL
150119 +enable_so_xennet_max_queues_vardecl_xen_netfront_c_21530 xennet_max_queues vardecl_xen-netfront.c 0 21530 NULL nohasharray
150120 +enable_so_rd_write_fndecl_21530 rd_write fndecl 3 21530 &enable_so_xennet_max_queues_vardecl_xen_netfront_c_21530
150121 +enable_so_hfsplus_find_init_fndecl_21533 hfsplus_find_init fndecl 0 21533 NULL nohasharray
150122 +enable_so_alloc_btrfs_bio_fndecl_21533 alloc_btrfs_bio fndecl 2-1 21533 &enable_so_hfsplus_find_init_fndecl_21533 nohasharray
150123 +enable_so_nr_bos_drm_msm_gem_submit_21533 nr_bos drm_msm_gem_submit 0 21533 &enable_so_alloc_btrfs_bio_fndecl_21533
150124 +enable_so_zr364xx_read_fndecl_21537 zr364xx_read fndecl 3 21537 NULL
150125 +enable_so_vfmax_fb_monspecs_21538 vfmax fb_monspecs 0 21538 NULL
150126 +enable_so_viafb_iga2_odev_proc_write_fndecl_21544 viafb_iga2_odev_proc_write fndecl 3 21544 NULL
150127 +enable_so_nSkipped_vardecl_gl860_c_21557 nSkipped vardecl_gl860.c 0 21557 NULL
150128 +enable_so___erst_read_to_erange_fndecl_21558 __erst_read_to_erange fndecl 1 21558 NULL
150129 +enable_so_log_sq_stride_mlx4_ib_create_qp_21564 log_sq_stride mlx4_ib_create_qp 0 21564 NULL
150130 +enable_so_total_len_ieee802_11_elems_21565 total_len ieee802_11_elems 0 21565 NULL
150131 +enable_so_cont_extent_rock_state_21572 cont_extent rock_state 0 21572 NULL
150132 +enable_so_le_min_key_size_write_fndecl_21573 le_min_key_size_write fndecl 3 21573 NULL
150133 +enable_so_uv_possible_blades_vardecl_21579 uv_possible_blades vardecl 0 21579 NULL
150134 +enable_so_uda1380_hw_write_fndecl_21581 uda1380_hw_write fndecl 3 21581 NULL
150135 +enable_so_buf_len_wmi_mgmt_rx_hdr_v1_21592 buf_len wmi_mgmt_rx_hdr_v1 0 21592 NULL
150136 +enable_so_myri10ge_initial_mtu_vardecl_myri10ge_c_21595 myri10ge_initial_mtu vardecl_myri10ge.c 0 21595 NULL
150137 +enable_so_xcl_max_payload_svc_xprt_class_21596 xcl_max_payload svc_xprt_class 0 21596 NULL
150138 +enable_so_st_kim_recv_fndecl_21600 st_kim_recv fndecl 3 21600 NULL
150139 +enable_so_isdn_v110_open_fndecl_21601 isdn_v110_open fndecl 3 21601 NULL
150140 +enable_so_irq_dma_cm109_dev_21602 irq_dma cm109_dev 0 21602 NULL nohasharray
150141 +enable_so_logicalBlocksRecorded_extendedFileEntry_21602 logicalBlocksRecorded extendedFileEntry 0 21602 &enable_so_irq_dma_cm109_dev_21602
150142 +enable_so_p54spi_spi_write_dma_fndecl_21608 p54spi_spi_write_dma fndecl 4 21608 NULL nohasharray
150143 +enable_so_hfcpci_empty_fifo_fndecl_21608 hfcpci_empty_fifo fndecl 4 21608 &enable_so_p54spi_spi_write_dma_fndecl_21608
150144 +enable_so_cw1200_spi_memcpy_toio_fndecl_21615 cw1200_spi_memcpy_toio fndecl 4 21615 NULL
150145 +enable_so_size_meye_grab_buffer_21622 size meye_grab_buffer 0 21622 NULL
150146 +enable_so_num_snaps_ceph_snap_realm_21623 num_snaps ceph_snap_realm 0 21623 NULL
150147 +enable_so_dclk___fb_timings_21625 dclk __fb_timings 0 21625 NULL
150148 +enable_so_sector_r1bio_21627 sector r1bio 0 21627 NULL
150149 +enable_so_tcp_snd_test_fndecl_21643 tcp_snd_test fndecl 3 21643 NULL
150150 +enable_so_ra_meta_pages_cond_fndecl_21647 ra_meta_pages_cond fndecl 2 21647 NULL
150151 +enable_so_nvram_npiv_size_qla_hw_data_21652 nvram_npiv_size qla_hw_data 0 21652 NULL
150152 +enable_so_tps6507x_i2c_read_device_fndecl_21660 tps6507x_i2c_read_device fndecl 3 21660 NULL
150153 +enable_so_ath6kl_wmi_get_rate_fndecl_21663 ath6kl_wmi_get_rate fndecl 0 21663 NULL
150154 +enable_so_update_pmkid_fndecl_21666 update_pmkid fndecl 4 21666 NULL
150155 +enable_so_affs_file_fsync_fndecl_21669 affs_file_fsync fndecl 2 21669 NULL
150156 +enable_so_bio_alloc_bioset_fndecl_21671 bio_alloc_bioset fndecl 2 21671 NULL
150157 +enable_so_btrfs_mark_extent_written_fndecl_21678 btrfs_mark_extent_written fndecl 3-4 21678 NULL
150158 +enable_so_in_min_chans_snd_card_asihpi_21686 in_min_chans snd_card_asihpi 0 21686 NULL
150159 +enable_so_logfs_set_blocks_fndecl_21690 logfs_set_blocks fndecl 2 21690 NULL
150160 +enable_so_fc_fcp_send_data_fndecl_21692 fc_fcp_send_data fndecl 4-3 21692 NULL
150161 +enable_so_max_pkt_size_pktgen_dev_21696 max_pkt_size pktgen_dev 0 21696 NULL nohasharray
150162 +enable_so_bsg_job_size_request_queue_21696 bsg_job_size request_queue 0 21696 &enable_so_max_pkt_size_pktgen_dev_21696
150163 +enable_so_nfsacl_encode_fndecl_21708 nfsacl_encode fndecl 2 21708 NULL nohasharray
150164 +enable_so_pread_dvb_ringbuffer_21708 pread dvb_ringbuffer 0 21708 &enable_so_nfsacl_encode_fndecl_21708
150165 +enable_so_get_rndis_request_fndecl_21709 get_rndis_request fndecl 3 21709 NULL
150166 +enable_so_batadv_tvlv_container_list_size_fndecl_21711 batadv_tvlv_container_list_size fndecl 0 21711 NULL
150167 +enable_so_residual_fcpio_icmnd_cmpl_21718 residual fcpio_icmnd_cmpl 0 21718 NULL
150168 +enable_so_set_blocksize_fndecl_21720 set_blocksize fndecl 2 21720 NULL
150169 +enable_so_len_nfs4_label_21722 len nfs4_label 0 21722 NULL
150170 +enable_so_buff_size_host_cmd_ds_txbuf_cfg_21725 buff_size host_cmd_ds_txbuf_cfg 0 21725 NULL
150171 +enable_so_pixel_clock_max_soc_camera_sense_21728 pixel_clock_max soc_camera_sense 0 21728 NULL
150172 +enable_so_hpfs_set_ea_fndecl_21731 hpfs_set_ea fndecl 5 21731 NULL
150173 +enable_so_hash_max_net_bridge_21732 hash_max net_bridge 0 21732 NULL
150174 +enable_so_ext4_da_update_reserve_space_fndecl_21733 ext4_da_update_reserve_space fndecl 2 21733 NULL
150175 +enable_so_groups_netlink_kernel_cfg_21741 groups netlink_kernel_cfg 0 21741 NULL
150176 +enable_so_smk_write_syslog_fndecl_21746 smk_write_syslog fndecl 3 21746 NULL
150177 +enable_so___ceph_setxattr_fndecl_21751 __ceph_setxattr fndecl 4 21751 NULL
150178 +enable_so_bufsiz_mousedev_client_21759 bufsiz mousedev_client 0 21759 NULL
150179 +enable_so_width_tm6000_fh_21761 width tm6000_fh 0 21761 NULL
150180 +enable_so_req_lim_delta_srp_login_rsp_21762 req_lim_delta srp_login_rsp 0 21762 NULL
150181 +enable_so_dm_bitset_clear_bit_fndecl_21766 dm_bitset_clear_bit fndecl 2 21766 NULL
150182 +enable_so_br_startblock_xfs_bmbt_irec_21769 br_startblock xfs_bmbt_irec 0 21769 NULL
150183 +enable_so_wlcore_rate_to_idx_fndecl_21777 wlcore_rate_to_idx fndecl 0 21777 NULL
150184 +enable_so_byte_len_spi_eeprom_21786 byte_len spi_eeprom 0 21786 NULL
150185 +enable_so_ocfs2_expand_inline_dir_fndecl_21788 ocfs2_expand_inline_dir fndecl 3 21788 NULL
150186 +enable_so_idetape_chrdev_read_fndecl_21794 idetape_chrdev_read fndecl 3 21794 NULL
150187 +enable_so_reg_stride_regmap_21801 reg_stride regmap 0 21801 NULL nohasharray
150188 +enable_so___set_print_fmt_fndecl_21801 __set_print_fmt fndecl 0 21801 &enable_so_reg_stride_regmap_21801
150189 +enable_so_num_vss_hpf_cfgs_wm8994_pdata_21802 num_vss_hpf_cfgs wm8994_pdata 0 21802 NULL
150190 +enable_so_ecryptfs_encrypt_and_encode_filename_fndecl_21806 ecryptfs_encrypt_and_encode_filename fndecl 6 21806 NULL
150191 +enable_so_hwi_ws_sz_hba_parameters_21815 hwi_ws_sz hba_parameters 0 21815 NULL
150192 +enable_so_len_wm_adsp_alg_region_21823 len wm_adsp_alg_region 0 21823 NULL
150193 +enable_so_snd_pcm_plug_slave_format_fndecl_21831 snd_pcm_plug_slave_format fndecl 1 21831 NULL
150194 +enable_so_check_load_and_stores_fndecl_21836 check_load_and_stores fndecl 2 21836 NULL nohasharray
150195 +enable_so_firm_cfg_version_AdapterControlBlock_21836 firm_cfg_version AdapterControlBlock 0 21836 &enable_so_check_load_and_stores_fndecl_21836
150196 +enable_so_nss_rate_info_21838 nss rate_info 0 21838 NULL nohasharray
150197 +enable_so_n_descsz_elf32_note_21838 n_descsz elf32_note 0 21838 &enable_so_nss_rate_info_21838
150198 +enable_so_length_acpi_table_desc_21847 length acpi_table_desc 0 21847 NULL nohasharray
150199 +enable_so_btrfs_file_extent_inline_len_fndecl_21847 btrfs_file_extent_inline_len fndecl 0 21847 &enable_so_length_acpi_table_desc_21847
150200 +enable_so__ore_get_io_state_fndecl_21861 _ore_get_io_state fndecl 3-4-5 21861 NULL nohasharray
150201 +enable_so_data_read_hwrng_21861 data_read hwrng 0 21861 &enable_so__ore_get_io_state_fndecl_21861
150202 +enable_so_update_hidden_ssid_fndecl_21871 update_hidden_ssid fndecl 0 21871 NULL
150203 +enable_so_ext4_zero_partial_blocks_fndecl_21875 ext4_zero_partial_blocks fndecl 3-4 21875 NULL
150204 +enable_so_ad_sd_read_reg_fndecl_21876 ad_sd_read_reg fndecl 3 21876 NULL nohasharray
150205 +enable_so_mlx4_init_icm_table_fndecl_21876 mlx4_init_icm_table fndecl 4-5 21876 &enable_so_ad_sd_read_reg_fndecl_21876
150206 +enable_so___copy_to_user_ll_fndecl_21886 __copy_to_user_ll fndecl 0 21886 NULL
150207 +enable_so_picolcd_debug_reset_write_fndecl_21888 picolcd_debug_reset_write fndecl 3 21888 NULL
150208 +enable_so_bio_integrity_alloc_fndecl_21889 bio_integrity_alloc fndecl 3 21889 NULL
150209 +enable_so_npwm_pwm_chip_21895 npwm pwm_chip 0 21895 NULL
150210 +enable_so_fat_get_block_fndecl_21902 fat_get_block fndecl 2 21902 NULL
150211 +enable_so_nodesize_btrfs_super_block_21912 nodesize btrfs_super_block 0 21912 NULL
150212 +enable_so_ieee80211_build_preq_ies_fndecl_21915 ieee80211_build_preq_ies fndecl 0-6 21915 NULL
150213 +enable_so_rx_addr_uart_8250_dma_21929 rx_addr uart_8250_dma 0 21929 NULL
150214 +enable_so_ath6kl_sdio_bmi_read_fndecl_21930 ath6kl_sdio_bmi_read fndecl 3 21930 NULL
150215 +enable_so_log_max_eq_mlx5_general_caps_21931 log_max_eq mlx5_general_caps 0 21931 NULL
150216 +enable_so_recv_mei_cl_ops_21940 recv mei_cl_ops 0 21940 NULL
150217 +enable_so_page_cache_async_readahead_fndecl_21944 page_cache_async_readahead fndecl 5 21944 NULL
150218 +enable_so_frame_count_b43legacy_txstatus_21945 frame_count b43legacy_txstatus 0 21945 NULL
150219 +enable_so_in_pipe_ttusb_dec_21947 in_pipe ttusb_dec 0 21947 NULL
150220 +enable_so_do_update_counters_fndecl_21952 do_update_counters fndecl 4 21952 NULL
150221 +enable_so_sel_write_avc_cache_threshold_fndecl_21955 sel_write_avc_cache_threshold fndecl 3 21955 NULL
150222 +enable_so_ocfs2_find_refcount_rec_in_rl_fndecl_21962 ocfs2_find_refcount_rec_in_rl fndecl 3-4 21962 NULL
150223 +enable_so_dblock_gfs2_journal_extent_21971 dblock gfs2_journal_extent 0 21971 NULL nohasharray
150224 +enable_so_ms_os_descs_ext_prop_count_ffs_data_21971 ms_os_descs_ext_prop_count ffs_data 0 21971 &enable_so_dblock_gfs2_journal_extent_21971
150225 +enable_so_bulk_out_size_usb_cardstate_21974 bulk_out_size usb_cardstate 0 21974 NULL
150226 +enable_so_fat_start_msdos_sb_info_21975 fat_start msdos_sb_info 0 21975 NULL nohasharray
150227 +enable_so_mlx4_buddy_init_fndecl_21975 mlx4_buddy_init fndecl 2 21975 &enable_so_fat_start_msdos_sb_info_21975
150228 +enable_so_nxt200x_writebytes_fndecl_21977 nxt200x_writebytes fndecl 4 21977 NULL nohasharray
150229 +enable_so_donor_start_move_extent_21977 donor_start move_extent 0 21977 &enable_so_nxt200x_writebytes_fndecl_21977
150230 +enable_so_calc_fat_clusters_fndecl_21982 calc_fat_clusters fndecl 0 21982 NULL
150231 +enable_so_num_tc_mlx5e_priv_21983 num_tc mlx5e_priv 0 21983 NULL
150232 +enable_so__scif_send_fndecl_21987 _scif_send fndecl 3 21987 NULL
150233 +enable_so_split_nodes_interleave_fndecl_21988 split_nodes_interleave fndecl 5-3-4 21988 NULL
150234 +enable_so_sec_per_clus_msdos_sb_info_21995 sec_per_clus msdos_sb_info 0 21995 NULL
150235 +enable_so_ath6kl_wmi_bssinfo_event_rx_fndecl_22000 ath6kl_wmi_bssinfo_event_rx fndecl 3 22000 NULL
150236 +enable_so_vmx_create_vcpu_fndecl_22003 vmx_create_vcpu fndecl 2 22003 NULL
150237 +enable_so_video_v_stop_saa7134_tvnorm_22005 video_v_stop saa7134_tvnorm 0 22005 NULL nohasharray
150238 +enable_so_vpdma_alloc_desc_buf_fndecl_22005 vpdma_alloc_desc_buf fndecl 2 22005 &enable_so_video_v_stop_saa7134_tvnorm_22005
150239 +enable_so_itd1000_write_regs_fndecl_22013 itd1000_write_regs fndecl 4 22013 NULL
150240 +enable_so_i9xx_clock_fndecl_22015 i9xx_clock fndecl 1 22015 NULL
150241 +enable_so_vsync_fb_cvt_data_22019 vsync fb_cvt_data 0 22019 NULL
150242 +enable_so_buffer_size_nm256_22021 buffer_size nm256 0 22021 NULL
150243 +enable_so_GlobalCredits__MSG_IOC_FACTS_REPLY_22031 GlobalCredits _MSG_IOC_FACTS_REPLY 0 22031 NULL
150244 +enable_so_next_rs_tgg_il3945_rate_info_22036 next_rs_tgg il3945_rate_info 0 22036 NULL
150245 +enable_so_array_resize_fndecl_22037 array_resize fndecl 2 22037 NULL
150246 +enable_so_dm_exception_store_set_chunk_size_fndecl_22042 dm_exception_store_set_chunk_size fndecl 2 22042 NULL
150247 +enable_so_roccat_connect_fndecl_22044 roccat_connect fndecl 3 22044 NULL
150248 +enable_so_held_root_thin_disk_superblock_22055 held_root thin_disk_superblock 0 22055 NULL nohasharray
150249 +enable_so_move_addr_to_user_fndecl_22055 move_addr_to_user fndecl 2 22055 &enable_so_held_root_thin_disk_superblock_22055
150250 +enable_so_zl10039_read_fndecl_22056 zl10039_read fndecl 4 22056 NULL
150251 +enable_so_clk_count_simplefb_par_22059 clk_count simplefb_par 0 22059 NULL
150252 +enable_so_w_input_res_22061 w input_res 0 22061 NULL
150253 +enable_so_param_sata_completion_resp_22065 param sata_completion_resp 0 22065 NULL
150254 +enable_so_i2c_wr_max_tda18218_config_22066 i2c_wr_max tda18218_config 0 22066 NULL
150255 +enable_so_ufs_free_fragments_fndecl_22074 ufs_free_fragments fndecl 2 22074 NULL
150256 +enable_so_nilfs_btree_node_get_ptr_fndecl_22076 nilfs_btree_node_get_ptr fndecl 0 22076 NULL nohasharray
150257 +enable_so_irnet_ctrl_read_fndecl_22076 irnet_ctrl_read fndecl 4 22076 &enable_so_nilfs_btree_node_get_ptr_fndecl_22076
150258 +enable_so_sfq_alloc_fndecl_22078 sfq_alloc fndecl 1 22078 NULL
150259 +enable_so_iuu_uart_write_fndecl_22079 iuu_uart_write fndecl 4 22079 NULL
150260 +enable_so_xfs_bmse_shift_one_fndecl_22080 xfs_bmse_shift_one fndecl 3 22080 NULL
150261 +enable_so_absent_pages_in_range_fndecl_22083 absent_pages_in_range fndecl 0-1-2 22083 NULL nohasharray
150262 +enable_so_cmm_write_fndecl_22083 cmm_write fndecl 3 22083 &enable_so_absent_pages_in_range_fndecl_22083
150263 +enable_so_mgt_response_to_str_fndecl_22094 mgt_response_to_str fndecl 0 22094 NULL nohasharray
150264 +enable_so_l1_xfs_bmbt_rec_host_22094 l1 xfs_bmbt_rec_host 0 22094 &enable_so_mgt_response_to_str_fndecl_22094
150265 +enable_so_len_setup_data_node_22096 len setup_data_node 0 22096 NULL nohasharray
150266 +enable_so_size_drm_i915_gem_pread_22096 size drm_i915_gem_pread 0 22096 &enable_so_len_setup_data_node_22096 nohasharray
150267 +enable_so_frame_seq_number_osst_tape_22096 frame_seq_number osst_tape 0 22096 &enable_so_size_drm_i915_gem_pread_22096
150268 +enable_so_read_val_snd_tea575x_ops_22097 read_val snd_tea575x_ops 0 22097 NULL
150269 +enable_so_size_perf_output_handle_22117 size perf_output_handle 0 22117 NULL
150270 +enable_so_xfs_da_get_buf_fndecl_22120 xfs_da_get_buf fndecl 3 22120 NULL
150271 +enable_so_small_ttm_pool_opts_22131 small ttm_pool_opts 0 22131 NULL nohasharray
150272 +enable_so_xferlen_uioc_22131 xferlen uioc 0 22131 &enable_so_small_ttm_pool_opts_22131
150273 +enable_so_numa_add_memblk_fndecl_22136 numa_add_memblk fndecl 2-3 22136 NULL
150274 +enable_so_dm_tm_shadow_block_fndecl_22139 dm_tm_shadow_block fndecl 2 22139 NULL
150275 +enable_so_num_phys_eqs_mlx4_phys_caps_22142 num_phys_eqs mlx4_phys_caps 0 22142 NULL
150276 +enable_so_jffs2_scan_make_ino_cache_fndecl_22144 jffs2_scan_make_ino_cache fndecl 2 22144 NULL
150277 +enable_so_free_area_init_core_fndecl_22145 free_area_init_core fndecl 2-3 22145 NULL
150278 +enable_so_moving_threshold_mms114_platform_data_22146 moving_threshold mms114_platform_data 0 22146 NULL nohasharray
150279 +enable_so_svc_rdma_xdr_encode_error_fndecl_22146 svc_rdma_xdr_encode_error fndecl 0 22146 &enable_so_moving_threshold_mms114_platform_data_22146
150280 +enable_so_cmd_pipe_uas_dev_info_22148 cmd_pipe uas_dev_info 0 22148 NULL
150281 +enable_so_seg_size_ib_mad_send_buf_22149 seg_size ib_mad_send_buf 0 22149 NULL
150282 +enable_so_ppp_cp_event_fndecl_22150 ppp_cp_event fndecl 6 22150 NULL
150283 +enable_so_collect_rx_frame_fndecl_22155 collect_rx_frame fndecl 3 22155 NULL
150284 +enable_so_nes_read_indexed_fndecl_22161 nes_read_indexed fndecl 0 22161 NULL
150285 +enable_so_rs_datalen_ath5k_rx_status_22164 rs_datalen ath5k_rx_status 0 22164 NULL nohasharray
150286 +enable_so_i40e_dbg_prep_dump_buf_fndecl_22164 i40e_dbg_prep_dump_buf fndecl 2 22164 &enable_so_rs_datalen_ath5k_rx_status_22164
150287 +enable_so_tegra_spi_start_cpu_based_transfer_fndecl_22176 tegra_spi_start_cpu_based_transfer fndecl 0 22176 NULL
150288 +enable_so_rts51x_bulk_transport_special_fndecl_22181 rts51x_bulk_transport_special fndecl 6 22181 NULL
150289 +enable_so_buf_len_bu_info_22182 buf_len bu_info 0 22182 NULL nohasharray
150290 +enable_so_bnx2x_mcast_handle_pending_cmds_e1_fndecl_22182 bnx2x_mcast_handle_pending_cmds_e1 fndecl 0 22182 &enable_so_buf_len_bu_info_22182
150291 +enable_so_ch_count_vardecl_ib_srp_c_22190 ch_count vardecl_ib_srp.c 0 22190 NULL
150292 +enable_so_affs_alloc_block_fndecl_22192 affs_alloc_block fndecl 0-2 22192 NULL
150293 +enable_so_sector_packet_data_22197 sector packet_data 0 22197 NULL
150294 +enable_so_alg_icv_len_xfrm_algo_aead_22201 alg_icv_len xfrm_algo_aead 0 22201 NULL
150295 +enable_so_length_ntlmssp2_name_22211 length ntlmssp2_name 0 22211 NULL
150296 +enable_so_i_reserved_data_blocks_ext4_inode_info_22212 i_reserved_data_blocks ext4_inode_info 0 22212 NULL
150297 +enable_so_nreaders_stress_vardecl_locktorture_c_22217 nreaders_stress vardecl_locktorture.c 0 22217 NULL nohasharray
150298 +enable_so_xfrm_dst_alloc_copy_fndecl_22217 xfrm_dst_alloc_copy fndecl 3 22217 &enable_so_nreaders_stress_vardecl_locktorture_c_22217
150299 +enable_so_ram_size_async_extent_22219 ram_size async_extent 0 22219 NULL
150300 +enable_so_cyapa_do_i2c_pip_cmd_irq_sync_fndecl_22220 cyapa_do_i2c_pip_cmd_irq_sync fndecl 3 22220 NULL nohasharray
150301 +enable_so_get_max_acpi_id_fndecl_22220 get_max_acpi_id fndecl 0 22220 &enable_so_cyapa_do_i2c_pip_cmd_irq_sync_fndecl_22220
150302 +enable_so_lpfc_idiag_mbxacc_write_fndecl_22221 lpfc_idiag_mbxacc_write fndecl 3 22221 NULL
150303 +enable_so_s_dirsize_minix_sb_info_22225 s_dirsize minix_sb_info 0 22225 NULL
150304 +enable_so_num_areas_prism2_download_param_22233 num_areas prism2_download_param 0 22233 NULL
150305 +enable_so_do_dmabuf_dirty_sou_fndecl_22234 do_dmabuf_dirty_sou fndecl 7 22234 NULL nohasharray
150306 +enable_so_num_vlan_batadv_tvlv_tt_data_22234 num_vlan batadv_tvlv_tt_data 0 22234 &enable_so_do_dmabuf_dirty_sou_fndecl_22234
150307 +enable_so_max_fingers_pixcir_i2c_ts_data_22237 max_fingers pixcir_i2c_ts_data 0 22237 NULL
150308 +enable_so_num_udav_mthca_profile_22243 num_udav mthca_profile 0 22243 NULL
150309 +enable_so_ieee80211_check_pending_bar_fndecl_22244 ieee80211_check_pending_bar fndecl 3 22244 NULL
150310 +enable_so_rf_suballoc_loc_ocfs2_refcount_block_22248 rf_suballoc_loc ocfs2_refcount_block 0 22248 NULL
150311 +enable_so_tidvaddr_ipath_tid_info_22251 tidvaddr ipath_tid_info 0 22251 NULL
150312 +enable_so_dac960_user_command_proc_write_fndecl_22252 dac960_user_command_proc_write fndecl 3 22252 NULL
150313 +enable_so___blk_end_bidi_request_fndecl_22253 __blk_end_bidi_request fndecl 3-4 22253 NULL
150314 +enable_so_qp_alloc_ppn_set_fndecl_22255 qp_alloc_ppn_set fndecl 2-4 22255 NULL
150315 +enable_so_nr_free_buffer_pages_fndecl_22263 nr_free_buffer_pages fndecl 0 22263 NULL
150316 +enable_so_bbio_error_fndecl_22264 bbio_error fndecl 3 22264 NULL
150317 +enable_so_usCRTC_V_Total__ATOM_MODE_TIMING_22265 usCRTC_V_Total _ATOM_MODE_TIMING 0 22265 NULL
150318 +enable_so_reord_tcp_sacktag_state_22281 reord tcp_sacktag_state 0 22281 NULL
150319 +enable_so_mgsl_write_fndecl_22284 mgsl_write fndecl 3 22284 NULL
150320 +enable_so_gspca_dev_probe_fndecl_22297 gspca_dev_probe fndecl 4 22297 NULL
150321 +enable_so_gfs2_listxattr_fndecl_22298 gfs2_listxattr fndecl 3 22298 NULL
150322 +enable_so_slot_bytes_fndecl_22306 slot_bytes fndecl 0 22306 NULL
150323 +enable_so_smk_write_logging_fndecl_22313 smk_write_logging fndecl 3 22313 NULL
150324 +enable_so_swiotlb_late_init_with_default_size_fndecl_22319 swiotlb_late_init_with_default_size fndecl 1 22319 NULL
150325 +enable_so_sb_rbmino_xfs_sb_22320 sb_rbmino xfs_sb 0 22320 NULL
150326 +enable_so_vc_size_row_vc_data_22325 vc_size_row vc_data 0 22325 NULL
150327 +enable_so_user_data_len_uioc_22327 user_data_len uioc 0 22327 NULL
150328 +enable_so_atmel_change_mtu_fndecl_22328 atmel_change_mtu fndecl 2 22328 NULL
150329 +enable_so_limit_sfq_sched_data_22334 limit sfq_sched_data 0 22334 NULL
150330 +enable_so_svc_recvfrom_fndecl_22345 svc_recvfrom fndecl 0 22345 NULL
150331 +enable_so_switch_status_fndecl_22358 switch_status fndecl 5 22358 NULL nohasharray
150332 +enable_so_genwqe_alloc_sync_sgl_fndecl_22358 genwqe_alloc_sync_sgl fndecl 4 22358 &enable_so_switch_status_fndecl_22358
150333 +enable_so__proc_do_string_fndecl_22363 _proc_do_string fndecl 2 22363 NULL
150334 +enable_so____pskb_trim_fndecl_22365 ___pskb_trim fndecl 2 22365 NULL
150335 +enable_so_kvm_gfn_to_hva_cache_init_fndecl_22367 kvm_gfn_to_hva_cache_init fndecl 3 22367 NULL
150336 +enable_so_ffs_ep0_read_fndecl_22371 ffs_ep0_read fndecl 3 22371 NULL
150337 +enable_so_digi_write_fndecl_22372 digi_write fndecl 4 22372 NULL
150338 +enable_so_paging32_fetch_fndecl_22377 paging32_fetch fndecl 2 22377 NULL
150339 +enable_so_nr_blocks_jffs2_sb_info_22399 nr_blocks jffs2_sb_info 0 22399 NULL
150340 +enable_so_btrfs_finish_chunk_alloc_fndecl_22400 btrfs_finish_chunk_alloc fndecl 3 22400 NULL nohasharray
150341 +enable_so_size_dsp_segment_desc_22400 size dsp_segment_desc 0 22400 &enable_so_btrfs_finish_chunk_alloc_fndecl_22400
150342 +enable_so_rawsock_sendmsg_fndecl_22401 rawsock_sendmsg fndecl 3 22401 NULL
150343 +enable_so_udf_setsize_fndecl_22402 udf_setsize fndecl 2 22402 NULL nohasharray
150344 +enable_so___load_free_space_cache_fndecl_22402 __load_free_space_cache fndecl 5 22402 &enable_so_udf_setsize_fndecl_22402
150345 +enable_so_lprocfs_stats_counter_size_fndecl_22407 lprocfs_stats_counter_size fndecl 0 22407 NULL
150346 +enable_so_use_inline_bio_fndecl_22408 use_inline_bio fndecl 3 22408 NULL
150347 +enable_so_do_truncate_fndecl_22411 do_truncate fndecl 2 22411 NULL nohasharray
150348 +enable_so_len_usbdevfs_bulktransfer_22411 len usbdevfs_bulktransfer 0 22411 &enable_so_do_truncate_fndecl_22411
150349 +enable_so_oti6858_write_fndecl_22423 oti6858_write fndecl 4 22423 NULL
150350 +enable_so_bbRcvSizeMsb_csp_22425 bbRcvSizeMsb csp 0 22425 NULL
150351 +enable_so_nfc_llcp_send_ui_frame_fndecl_22429 nfc_llcp_send_ui_frame fndecl 5 22429 NULL
150352 +enable_so_period_ptr_snd_pcm_oss_runtime_22430 period_ptr snd_pcm_oss_runtime 0 22430 NULL
150353 +enable_so_gfs2_glock_nq_num_fndecl_22440 gfs2_glock_nq_num fndecl 2 22440 NULL
150354 +enable_so_start_async_cow_22445 start async_cow 0 22445 NULL
150355 +enable_so_frame_len_ksz_desc_rx_stat_22454 frame_len ksz_desc_rx_stat 0 22454 NULL
150356 +enable_so_ntfs_attr_vcn_to_lcn_nolock_fndecl_22455 ntfs_attr_vcn_to_lcn_nolock fndecl 2 22455 NULL
150357 +enable_so_llc_ui_recvmsg_fndecl_22457 llc_ui_recvmsg fndecl 3 22457 NULL
150358 +enable_so_ceph_zero_pagecache_range_fndecl_22464 ceph_zero_pagecache_range fndecl 3-2 22464 NULL nohasharray
150359 +enable_so_mon_bin_ioctl_fndecl_22464 mon_bin_ioctl fndecl 3 22464 &enable_so_ceph_zero_pagecache_range_fndecl_22464
150360 +enable_so_fsl_edma_alloc_desc_fndecl_22466 fsl_edma_alloc_desc fndecl 2 22466 NULL
150361 +enable_so_s35390a_set_reg_fndecl_22468 s35390a_set_reg fndecl 4 22468 NULL
150362 +enable_so_pfn_lo_iova_22474 pfn_lo iova 0 22474 NULL
150363 +enable_so_vram_size_aty128fb_par_22489 vram_size aty128fb_par 0 22489 NULL
150364 +enable_so_offset_rbd_img_request_22494 offset rbd_img_request 0 22494 NULL
150365 +enable_so_tx_hr_cfv_info_22495 tx_hr cfv_info 0 22495 NULL nohasharray
150366 +enable_so_ovl_cache_entry_new_fndecl_22495 ovl_cache_entry_new fndecl 3 22495 &enable_so_tx_hr_cfv_info_22495
150367 +enable_so_hiface_pcm_init_urb_fndecl_22500 hiface_pcm_init_urb fndecl 3 22500 NULL
150368 +enable_so_iwl_dbgfs_clear_ucode_statistics_write_fndecl_22503 iwl_dbgfs_clear_ucode_statistics_write fndecl 3 22503 NULL
150369 +enable_so_ctx_len_xfrm_sec_ctx_22511 ctx_len xfrm_sec_ctx 0 22511 NULL
150370 +enable_so_h_mode_size_22514 h mode_size 0 22514 NULL nohasharray
150371 +enable_so_set_msr_hyperv_pw_fndecl_22514 set_msr_hyperv_pw fndecl 3 22514 &enable_so_h_mode_size_22514
150372 +enable_so_len_bna_mem_info_22518 len bna_mem_info 0 22518 NULL
150373 +enable_so_fw_written_pn544_i2c_phy_22519 fw_written pn544_i2c_phy 0 22519 NULL
150374 +enable_so_rocker_dma_ring_bufs_alloc_fndecl_22520 rocker_dma_ring_bufs_alloc fndecl 4 22520 NULL
150375 +enable_so_ls_lvblen_dlm_ls_22525 ls_lvblen dlm_ls 0 22525 NULL
150376 +enable_so_ocfs2_bg_discontig_add_extent_fndecl_22531 ocfs2_bg_discontig_add_extent fndecl 4 22531 NULL
150377 +enable_so_posix_acl_xattr_set_fndecl_22534 posix_acl_xattr_set fndecl 4 22534 NULL
150378 +enable_so___next_free_blkoff_fndecl_22538 __next_free_blkoff fndecl 3 22538 NULL
150379 +enable_so_submit_queue_fndecl_22542 submit_queue fndecl 5 22542 NULL
150380 +enable_so_SyS_flistxattr_fndecl_22548 SyS_flistxattr fndecl 3 22548 NULL
150381 +enable_so_clsb_isar_reg_22551 clsb isar_reg 0 22551 NULL
150382 +enable_so_sadb_x_ctx_len_sadb_x_sec_ctx_22553 sadb_x_ctx_len sadb_x_sec_ctx 0 22553 NULL
150383 +enable_so_max_xor_dma_device_22564 max_xor dma_device 0 22564 NULL
150384 +enable_so_carl9170_rx_stream_fndecl_22565 carl9170_rx_stream fndecl 3 22565 NULL
150385 +enable_so_fsync_file_operations_22566 fsync file_operations 0 22566 NULL
150386 +enable_so_rx_queue_size_pxa168_eth_platform_data_22588 rx_queue_size pxa168_eth_platform_data 0 22588 NULL
150387 +enable_so_swevent_hlist_get_cpu_fndecl_22601 swevent_hlist_get_cpu fndecl 0 22601 NULL
150388 +enable_so_tx_data_max_size_sst_generic_ipc_22604 tx_data_max_size sst_generic_ipc 0 22604 NULL
150389 +enable_so_maxauthsize_aead_alg_22608 maxauthsize aead_alg 0 22608 NULL nohasharray
150390 +enable_so_btrfs_submit_compressed_write_fndecl_22608 btrfs_submit_compressed_write fndecl 4-5 22608 &enable_so_maxauthsize_aead_alg_22608
150391 +enable_so_count_mspro_attribute_22612 count mspro_attribute 0 22612 NULL
150392 +enable_so_gen_pool_best_fit_fndecl_22615 gen_pool_best_fit fndecl 4 22615 NULL nohasharray
150393 +enable_so_len_aironet_ioctl_22615 len aironet_ioctl 0 22615 &enable_so_gen_pool_best_fit_fndecl_22615
150394 +enable_so_ir_startino_xfs_inobt_rec_incore_22616 ir_startino xfs_inobt_rec_incore 0 22616 NULL
150395 +enable_so_mem_hole_size_fndecl_22619 mem_hole_size fndecl 0-1-2 22619 NULL nohasharray
150396 +enable_so_bond_verify_device_path_fndecl_22619 bond_verify_device_path fndecl 3 22619 &enable_so_mem_hole_size_fndecl_22619 nohasharray
150397 +enable_so_wil_write_pmccfg_fndecl_22619 wil_write_pmccfg fndecl 3 22619 &enable_so_bond_verify_device_path_fndecl_22619
150398 +enable_so_curr_block_migrate_struct_22621 curr_block migrate_struct 0 22621 NULL
150399 +enable_so_length_obj_key_22626 length obj_key 0 22626 NULL
150400 +enable_so_SYSC_io_getevents_fndecl_22627 SYSC_io_getevents fndecl 3 22627 NULL
150401 +enable_so_n_compat_sel_arg_struct_22628 n compat_sel_arg_struct 0 22628 NULL
150402 +enable_so_ivsize_blkcipher_walk_22638 ivsize blkcipher_walk 0 22638 NULL
150403 +enable_so_hci_si_event_fndecl_22639 hci_si_event fndecl 3 22639 NULL
150404 +enable_so_num_rcv_bufs_visornic_devdata_22643 num_rcv_bufs visornic_devdata 0 22643 NULL
150405 +enable_so_sctp_setsockopt_initmsg_fndecl_22644 sctp_setsockopt_initmsg fndecl 3 22644 NULL
150406 +enable_so_queue_size_snd_timer_params_22646 queue_size snd_timer_params 0 22646 NULL
150407 +enable_so_isight_decode_fndecl_22650 isight_decode fndecl 4 22650 NULL
150408 +enable_so_sample_rate_usb_stream_config_22662 sample_rate usb_stream_config 0 22662 NULL
150409 +enable_so_init_rs_internal_fndecl_22671 init_rs_internal fndecl 6-1 22671 NULL
150410 +enable_so_ieee80211_mesh_rx_bcn_presp_fndecl_22678 ieee80211_mesh_rx_bcn_presp fndecl 4 22678 NULL
150411 +enable_so_fb_get_mode_fndecl_22679 fb_get_mode fndecl 2 22679 NULL nohasharray
150412 +enable_so_fbcon_redraw_softback_fndecl_22679 fbcon_redraw_softback fndecl 3 22679 &enable_so_fb_get_mode_fndecl_22679 nohasharray
150413 +enable_so_bop_propagate_nilfs_bmap_operations_22679 bop_propagate nilfs_bmap_operations 0 22679 &enable_so_fbcon_redraw_softback_fndecl_22679
150414 +enable_so_get_nr_entries_fndecl_22680 get_nr_entries fndecl 2 22680 NULL
150415 +enable_so_vlan_tag_bnx2x_agg_info_22683 vlan_tag bnx2x_agg_info 0 22683 NULL nohasharray
150416 +enable_so_cfs_trace_copyout_string_fndecl_22683 cfs_trace_copyout_string fndecl 2 22683 &enable_so_vlan_tag_bnx2x_agg_info_22683
150417 +enable_so_irq_pipe_ttusb_dec_22685 irq_pipe ttusb_dec 0 22685 NULL
150418 +enable_so_qpid_t3_wq_22690 qpid t3_wq 0 22690 NULL
150419 +enable_so_ino_nilfs_iget_args_22691 ino nilfs_iget_args 0 22691 NULL
150420 +enable_so_ctl_dma_yealink_dev_22696 ctl_dma yealink_dev 0 22696 NULL
150421 +enable_so_btrfs_insert_file_extent_fndecl_22702 btrfs_insert_file_extent fndecl 4-3 22702 NULL
150422 +enable_so_brcmf_sdio_read_control_fndecl_22712 brcmf_sdio_read_control fndecl 3 22712 NULL
150423 +enable_so_scif_rb_write_fndecl_22718 scif_rb_write fndecl 0 22718 NULL
150424 +enable_so_odm_mirror_cnt_pnfs_osd_data_map_22727 odm_mirror_cnt pnfs_osd_data_map 0 22727 NULL
150425 +enable_so_fpregs_set_fndecl_22730 fpregs_set fndecl 4 22730 NULL
150426 +enable_so_xprt_alloc_fndecl_22736 xprt_alloc fndecl 2 22736 NULL
150427 +enable_so_num_fcoe_qps_i40e_pf_22740 num_fcoe_qps i40e_pf 0 22740 NULL
150428 +enable_so_SYSC_syslog_fndecl_22742 SYSC_syslog fndecl 3 22742 NULL
150429 +enable_so_iwlagn_pass_packet_to_mac80211_fndecl_22746 iwlagn_pass_packet_to_mac80211 fndecl 3 22746 NULL
150430 +enable_so_userspace_addr_kvm_memory_slot_22749 userspace_addr kvm_memory_slot 0 22749 NULL
150431 +enable_so_alloc_perm_bits_fndecl_22767 alloc_perm_bits fndecl 2 22767 NULL
150432 +enable_so_rambase_brcmf_chip_22773 rambase brcmf_chip 0 22773 NULL
150433 +enable_so_ide_get_identity_ioctl_fndecl_22776 ide_get_identity_ioctl fndecl 0 22776 NULL
150434 +enable_so_xfs_bmap_add_free_fndecl_22778 xfs_bmap_add_free fndecl 1-2 22778 NULL
150435 +enable_so_tomoyo_round2_fndecl_22781 tomoyo_round2 fndecl 0 22781 NULL
150436 +enable_so_orig_video_cols_screen_info_22783 orig_video_cols screen_info 0 22783 NULL
150437 +enable_so_h_start_saa7134_tvnorm_22798 h_start saa7134_tvnorm 0 22798 NULL
150438 +enable_so_i_next_section_block_iso_inode_info_22800 i_next_section_block iso_inode_info 0 22800 NULL
150439 +enable_so_my_inptr_vardecl_initramfs_c_22809 my_inptr vardecl_initramfs.c 0 22809 NULL
150440 +enable_so_agp_create_memory_fndecl_22816 agp_create_memory fndecl 1 22816 NULL
150441 +enable_so_mce_request_packet_fndecl_22818 mce_request_packet fndecl 3 22818 NULL
150442 +enable_so_tx_size_uart_8250_dma_22825 tx_size uart_8250_dma 0 22825 NULL
150443 +enable_so_nfs_pgarray_set_fndecl_22830 nfs_pgarray_set fndecl 2 22830 NULL
150444 +enable_so_swap_cluster_schedule_discard_fndecl_22833 swap_cluster_schedule_discard fndecl 2 22833 NULL
150445 +enable_so_gigaset_initdriver_fndecl_22839 gigaset_initdriver fndecl 2 22839 NULL
150446 +enable_so_sys_mremap_fndecl_22848 sys_mremap fndecl 3-5-1-2 22848 NULL nohasharray
150447 +enable_so_clean_io_failure_fndecl_22848 clean_io_failure fndecl 4 22848 &enable_so_sys_mremap_fndecl_22848
150448 +enable_so___arch_hweight8_fndecl_22850 __arch_hweight8 fndecl 0 22850 NULL
150449 +enable_so_rlen_si2168_cmd_22851 rlen si2168_cmd 0 22851 NULL
150450 +enable_so_utf8s_to_utf16s_fndecl_22856 utf8s_to_utf16s fndecl 0 22856 NULL
150451 +enable_so_size_proc_dir_entry_22859 size proc_dir_entry 0 22859 NULL
150452 +enable_so_xs_sendpages_fndecl_22864 xs_sendpages fndecl 3 22864 NULL
150453 +enable_so_hpfs_get_block_fndecl_22865 hpfs_get_block fndecl 2 22865 NULL
150454 +enable_so_usCRTC_H_SyncStart__ATOM_MODE_TIMING_22868 usCRTC_H_SyncStart _ATOM_MODE_TIMING 0 22868 NULL
150455 +enable_so_n_subbufs_rchan_22872 n_subbufs rchan 0 22872 NULL
150456 +enable_so_nfs4_init_nonuniform_client_string_fndecl_22874 nfs4_init_nonuniform_client_string fndecl 3-0 22874 NULL
150457 +enable_so_enc28j60_mem_read_fndecl_22875 enc28j60_mem_read fndecl 3 22875 NULL
150458 +enable_so_count_nfs3_readdirargs_22881 count nfs3_readdirargs 0 22881 NULL
150459 +enable_so_cqid_t4_cq_22883 cqid t4_cq 0 22883 NULL
150460 +enable_so_len_prism2_download_area_22884 len prism2_download_area 0 22884 NULL
150461 +enable_so_frag_len_atmel_private_22893 frag_len atmel_private 0 22893 NULL
150462 +enable_so_bits_per_word_blk_mq_bitmap_tags_22896 bits_per_word blk_mq_bitmap_tags 0 22896 NULL
150463 +enable_so_snap_names_len_rbd_image_header_ondisk_22898 snap_names_len rbd_image_header_ondisk 0 22898 NULL
150464 +enable_so___btrfs_cow_block_fndecl_22902 __btrfs_cow_block fndecl 0-7 22902 NULL
150465 +enable_so_count_ioctl_gntdev_map_grant_ref_22904 count ioctl_gntdev_map_grant_ref 0 22904 NULL
150466 +enable_so_num_y_edt_ft5x06_ts_data_22905 num_y edt_ft5x06_ts_data 0 22905 NULL
150467 +enable_so_vmalloc_32_fndecl_22908 vmalloc_32 fndecl 1 22908 NULL
150468 +enable_so_cfg80211_report_obss_beacon_fndecl_22910 cfg80211_report_obss_beacon fndecl 3 22910 NULL
150469 +enable_so_lmd_exclude_count_lustre_mount_data_22915 lmd_exclude_count lustre_mount_data 0 22915 NULL
150470 +enable_so_len_ext4_allocation_request_22920 len ext4_allocation_request 0 22920 NULL
150471 +enable_so_e_name_len_ext4_xattr_entry_22925 e_name_len ext4_xattr_entry 0 22925 NULL
150472 +enable_so_port100_send_frame_async_fndecl_22927 port100_send_frame_async fndecl 4 22927 NULL
150473 +enable_so_event_data_len_msgbuf_rx_event_22931 event_data_len msgbuf_rx_event 0 22931 NULL
150474 +enable_so_sd_journals_gfs2_sbd_22932 sd_journals gfs2_sbd 0 22932 NULL
150475 +enable_so_i2400m_rx_ctl_fndecl_22934 i2400m_rx_ctl fndecl 4 22934 NULL
150476 +enable_so_root_dir_objectid_btrfs_super_block_22943 root_dir_objectid btrfs_super_block 0 22943 NULL
150477 +enable_so_num_counters_ip6t_replace_22944 num_counters ip6t_replace 0 22944 NULL
150478 +enable_so_i2cdev_read_fndecl_22949 i2cdev_read fndecl 3 22949 NULL
150479 +enable_so_bulk_out_usbatm_driver_22950 bulk_out usbatm_driver 0 22950 NULL
150480 +enable_so_al_stripe_size_4k_drbd_md_22954 al_stripe_size_4k drbd_md 0 22954 NULL
150481 +enable_so_lov_ost_pool_init_fndecl_22956 lov_ost_pool_init fndecl 2 22956 NULL
150482 +enable_so_userptr_drm_exynos_g2d_userptr_22959 userptr drm_exynos_g2d_userptr 0 22959 NULL
150483 +enable_so_osd_full_h_yuv_playback_info_22967 osd_full_h yuv_playback_info 0 22967 NULL
150484 +enable_so_data_swap_cluster_info_22969 data swap_cluster_info 0 22969 NULL
150485 +enable_so_ipc_alloc_fndecl_22971 ipc_alloc fndecl 1 22971 NULL
150486 +enable_so_i2400m_rx_ctl_ack_fndecl_22972 i2400m_rx_ctl_ack fndecl 3 22972 NULL
150487 +enable_so_ib_create_send_mad_fndecl_22975 ib_create_send_mad fndecl 5 22975 NULL
150488 +enable_so_nilfs_palloc_init_blockgroup_fndecl_22978 nilfs_palloc_init_blockgroup fndecl 2 22978 NULL
150489 +enable_so_kernfs_file_direct_read_fndecl_22981 kernfs_file_direct_read fndecl 3 22981 NULL
150490 +enable_so_max_pkt_size_stk1160_isoc_ctl_22983 max_pkt_size stk1160_isoc_ctl 0 22983 NULL
150491 +enable_so_ipw2100_set_rts_threshold_fndecl_22986 ipw2100_set_rts_threshold fndecl 2 22986 NULL
150492 +enable_so_acpi_battery_write_alarm_fndecl_22987 acpi_battery_write_alarm fndecl 3 22987 NULL
150493 +enable_so_sector_size_flash_info_22990 sector_size flash_info 0 22990 NULL
150494 +enable_so_p54spi_spi_write_fndecl_22994 p54spi_spi_write fndecl 4 22994 NULL
150495 +enable_so_size_wil_memio_block_22999 size wil_memio_block 0 22999 NULL
150496 +enable_so_ipw_packet_received_skb_fndecl_23005 ipw_packet_received_skb fndecl 2 23005 NULL
150497 +enable_so_ocfs2_extend_file_fndecl_23009 ocfs2_extend_file fndecl 3 23009 NULL
150498 +enable_so_rocker_group_l2_fan_out_fndecl_23010 rocker_group_l2_fan_out fndecl 3 23010 NULL
150499 +enable_so_fb_height_drm_fb_helper_surface_size_23015 fb_height drm_fb_helper_surface_size 0 23015 NULL nohasharray
150500 +enable_so_desc_size_data_queue_23015 desc_size data_queue 0 23015 &enable_so_fb_height_drm_fb_helper_surface_size_23015 nohasharray
150501 +enable_so_memblock_alloc_range_fndecl_23015 memblock_alloc_range fndecl 1 23015 &enable_so_desc_size_data_queue_23015
150502 +enable_so_bLength_usb_endpoint_descriptor_23016 bLength usb_endpoint_descriptor 0 23016 NULL
150503 +enable_so_ioctl_private_iw_point_fndecl_23018 ioctl_private_iw_point fndecl 7 23018 NULL
150504 +enable_so_nested_get_page_fndecl_23031 nested_get_page fndecl 2 23031 NULL
150505 +enable_so_rx_frag_size_atl1c_adapter_23034 rx_frag_size atl1c_adapter 0 23034 NULL nohasharray
150506 +enable_so_remap_fndecl_23034 remap fndecl 3 23034 &enable_so_rx_frag_size_atl1c_adapter_23034
150507 +enable_so_io_tlb_start_vardecl_swiotlb_c_23035 io_tlb_start vardecl_swiotlb.c 0 23035 NULL
150508 +enable_so_in_ep_smsusb_device_t_23038 in_ep smsusb_device_t 0 23038 NULL
150509 +enable_so_lost_cnt_hint_tcp_sock_23039 lost_cnt_hint tcp_sock 0 23039 NULL
150510 +enable_so_num_comp_vectors_mlx5_eq_table_23047 num_comp_vectors mlx5_eq_table 0 23047 NULL
150511 +enable_so_y1_drm_clip_rect_23048 y1 drm_clip_rect 0 23048 NULL
150512 +enable_so_gnttab_free_count_vardecl_grant_table_c_23049 gnttab_free_count vardecl_grant-table.c 0 23049 NULL
150513 +enable_so_gfs2_read_super_fndecl_23055 gfs2_read_super fndecl 2 23055 NULL
150514 +enable_so_ueth_change_mtu_fndecl_23057 ueth_change_mtu fndecl 2 23057 NULL
150515 +enable_so_fcoe_ctlr_device_add_fndecl_23058 fcoe_ctlr_device_add fndecl 3 23058 NULL
150516 +enable_so_inode_setattr_security_operations_23059 inode_setattr security_operations 0 23059 NULL nohasharray
150517 +enable_so_usb_dmac_desc_alloc_fndecl_23059 usb_dmac_desc_alloc fndecl 2 23059 &enable_so_inode_setattr_security_operations_23059
150518 +enable_so_fe_start_ext4_free_extent_23066 fe_start ext4_free_extent 0 23066 NULL nohasharray
150519 +enable_so_agp_base_radeon_mc_23066 agp_base radeon_mc 0 23066 &enable_so_fe_start_ext4_free_extent_23066
150520 +enable_so_to_clkrc_fndecl_23074 to_clkrc fndecl 2-3 23074 NULL
150521 +enable_so_scif_rb_count_fndecl_23076 scif_rb_count fndecl 0 23076 NULL
150522 +enable_so_fm10k_iov_configure_fndecl_23078 fm10k_iov_configure fndecl 2 23078 NULL
150523 +enable_so_rpcrdma_inline_pullup_fndecl_23082 rpcrdma_inline_pullup fndecl 0-2 23082 NULL
150524 +enable_so_xfs_vm_write_end_fndecl_23085 xfs_vm_write_end fndecl 3-4 23085 NULL nohasharray
150525 +enable_so_ext_ofs_sym_ccb_23085 ext_ofs sym_ccb 0 23085 &enable_so_xfs_vm_write_end_fndecl_23085
150526 +enable_so_s_cluster_ratio_ext4_sb_info_23095 s_cluster_ratio ext4_sb_info 0 23095 NULL
150527 +enable_so___minimum_chunk_size_fndecl_23105 __minimum_chunk_size fndecl 0 23105 NULL
150528 +enable_so_balance_dirty_pages_fndecl_23113 balance_dirty_pages fndecl 2 23113 NULL
150529 +enable_so_numchips_nand_chip_23137 numchips nand_chip 0 23137 NULL
150530 +enable_so_udf_load_pvoldesc_fndecl_23141 udf_load_pvoldesc fndecl 2 23141 NULL
150531 +enable_so_bits_key_vector_23153 bits key_vector 0 23153 NULL
150532 +enable_so_logical_scrub_fixup_nodatasum_23160 logical scrub_fixup_nodatasum 0 23160 NULL
150533 +enable_so_isdn_audio_xlaw2adpcm_fndecl_23162 isdn_audio_xlaw2adpcm fndecl 0 23162 NULL
150534 +enable_so_width_linux_logo_23166 width linux_logo 0 23166 NULL
150535 +enable_so_SyS_add_key_fndecl_23167 SyS_add_key fndecl 4 23167 NULL
150536 +enable_so_memblock_alloc_base_fndecl_23169 memblock_alloc_base fndecl 2-1 23169 NULL
150537 +enable_so_ext3_fiemap_fndecl_23171 ext3_fiemap fndecl 4 23171 NULL
150538 +enable_so_nvif_object_sclass_fndecl_23175 nvif_object_sclass fndecl 3 23175 NULL nohasharray
150539 +enable_so_cyttsp_probe_fndecl_23175 cyttsp_probe fndecl 4 23175 &enable_so_nvif_object_sclass_fndecl_23175
150540 +enable_so_x_res_vbe_mode_ib_23177 x_res vbe_mode_ib 0 23177 NULL
150541 +enable_so_ieee80211_if_fmt_dot11MeshConfirmTimeout_fndecl_23178 ieee80211_if_fmt_dot11MeshConfirmTimeout fndecl 3 23178 NULL
150542 +enable_so_udf_current_aext_fndecl_23183 udf_current_aext fndecl 0 23183 NULL
150543 +enable_so_uhid_char_read_fndecl_23187 uhid_char_read fndecl 3 23187 NULL
150544 +enable_so_ir_context_mask_fw_ohci_23196 ir_context_mask fw_ohci 0 23196 NULL
150545 +enable_so_seq_lseek_fndecl_23197 seq_lseek fndecl 2 23197 NULL
150546 +enable_so_bdev_erase_fndecl_23198 bdev_erase fndecl 2-3 23198 NULL
150547 +enable_so_lmm_stripe_count_lov_mds_md_v1_23216 lmm_stripe_count lov_mds_md_v1 0 23216 NULL
150548 +enable_so_read_swap_header_fndecl_23222 read_swap_header fndecl 0 23222 NULL
150549 +enable_so_num_channels_sh_mtu2_device_23224 num_channels sh_mtu2_device 0 23224 NULL
150550 +enable_so_clk_core_get_rate_fndecl_23225 clk_core_get_rate fndecl 0 23225 NULL nohasharray
150551 +enable_so_vid_hdr_offset_ubi_device_23225 vid_hdr_offset ubi_device 0 23225 &enable_so_clk_core_get_rate_fndecl_23225
150552 +enable_so_iagnum_iag_23227 iagnum iag 0 23227 NULL
150553 +enable_so_qla2xxx_get_vpd_field_fndecl_23230 qla2xxx_get_vpd_field fndecl 4 23230 NULL
150554 +enable_so_ivtv_v4l2_read_fndecl_23231 ivtv_v4l2_read fndecl 3 23231 NULL
150555 +enable_so_sb_min_blocksize_fndecl_23239 sb_min_blocksize fndecl 2-0 23239 NULL
150556 +enable_so_num_rxd_rx_ring_config_23240 num_rxd rx_ring_config 0 23240 NULL
150557 +enable_so_ksm_madvise_fndecl_23247 ksm_madvise fndecl 2 23247 NULL
150558 +enable_so_fat_truncate_blocks_fndecl_23248 fat_truncate_blocks fndecl 2 23248 NULL
150559 +enable_so___alloc_bootmem_node_fndecl_23259 __alloc_bootmem_node fndecl 3-2 23259 NULL
150560 +enable_so_udf_table_new_block_fndecl_23276 udf_table_new_block fndecl 0 23276 NULL
150561 +enable_so_start_blkpg_partition_23281 start blkpg_partition 0 23281 NULL
150562 +enable_so_write_flush_pipefs_fndecl_23286 write_flush_pipefs fndecl 3 23286 NULL
150563 +enable_so_modedb_len_fb_monspecs_23289 modedb_len fb_monspecs 0 23289 NULL
150564 +enable_so_shmac_num_idents_sctp_hmacalgo_23292 shmac_num_idents sctp_hmacalgo 0 23292 NULL
150565 +enable_so_vtbl_slots_ubi_device_23293 vtbl_slots ubi_device 0 23293 NULL
150566 +enable_so_get_node_info_fndecl_23296 get_node_info fndecl 2 23296 NULL
150567 +enable_so_ath6kl_init_get_fwcaps_fndecl_23302 ath6kl_init_get_fwcaps fndecl 3 23302 NULL
150568 +enable_so_fnic_get_trace_data_fndecl_23305 fnic_get_trace_data fndecl 0 23305 NULL
150569 +enable_so_debug_read_tlb_fndecl_23307 debug_read_tlb fndecl 3 23307 NULL
150570 +enable_so_read32_bcma_host_ops_23310 read32 bcma_host_ops 0 23310 NULL
150571 +enable_so_transfersize_scsi_cmnd_23314 transfersize scsi_cmnd 0 23314 NULL
150572 +enable_so_s_blocks_per_segment_nilfs_super_block_23318 s_blocks_per_segment nilfs_super_block 0 23318 NULL
150573 +enable_so_extent_from_logical_fndecl_23330 extent_from_logical fndecl 2 23330 NULL
150574 +enable_so_naces_nfs4_acl_23334 naces nfs4_acl 0 23334 NULL
150575 +enable_so_reply_queue_count_MPT2SAS_ADAPTER_23337 reply_queue_count MPT2SAS_ADAPTER 0 23337 NULL
150576 +enable_so_num_outputs_clkgena_divmux_data_23340 num_outputs clkgena_divmux_data 0 23340 NULL
150577 +enable_so_mark_block_processed_fndecl_23353 mark_block_processed fndecl 3-2 23353 NULL
150578 +enable_so_v9fs_fid_xattr_get_fndecl_23361 v9fs_fid_xattr_get fndecl 0 23361 NULL
150579 +enable_so_packet_buffer_init_fndecl_23380 packet_buffer_init fndecl 2 23380 NULL
150580 +enable_so_length_dmi_header_23383 length dmi_header 0 23383 NULL
150581 +enable_so_sf_entsize_xfs_dir_ops_23386 sf_entsize xfs_dir_ops 0 23386 NULL
150582 +enable_so_new_SSID_size_atmel_private_23387 new_SSID_size atmel_private 0 23387 NULL
150583 +enable_so_xfs_alloc_file_space_fndecl_23394 xfs_alloc_file_space fndecl 2-3 23394 NULL
150584 +enable_so_ln_number_lm_lockname_23396 ln_number lm_lockname 0 23396 NULL
150585 +enable_so_ptr_mask_amdgpu_ring_23397 ptr_mask amdgpu_ring 0 23397 NULL
150586 +enable_so_map_block_for_writepage_fndecl_23405 map_block_for_writepage fndecl 3 23405 NULL
150587 +enable_so_nx_fw_cmd_set_gbe_port_fndecl_23412 nx_fw_cmd_set_gbe_port fndecl 3 23412 NULL
150588 +enable_so_logfs_safe_iget_fndecl_23415 logfs_safe_iget fndecl 2 23415 NULL
150589 +enable_so___qib_get_user_pages_fndecl_23426 __qib_get_user_pages fndecl 1 23426 NULL
150590 +enable_so_event_inj_vmcb_control_area_23434 event_inj vmcb_control_area 0 23434 NULL nohasharray
150591 +enable_so_nilfs_attach_snapshot_fndecl_23434 nilfs_attach_snapshot fndecl 2 23434 &enable_so_event_inj_vmcb_control_area_23434
150592 +enable_so_set_xfer_rate_fndecl_23440 set_xfer_rate fndecl 2 23440 NULL
150593 +enable_so_mei_cl_recv_fndecl_23442 mei_cl_recv fndecl 3 23442 NULL
150594 +enable_so_last_mcs_rx_wil_net_stats_23443 last_mcs_rx wil_net_stats 0 23443 NULL nohasharray
150595 +enable_so_qgroup_rescan_init_fndecl_23443 qgroup_rescan_init fndecl 2 23443 &enable_so_last_mcs_rx_wil_net_stats_23443
150596 +enable_so_name_len_ocfs2_dir_entry_23452 name_len ocfs2_dir_entry 0 23452 NULL nohasharray
150597 +enable_so_bytes_number_item_operations_23452 bytes_number item_operations 0 23452 &enable_so_name_len_ocfs2_dir_entry_23452
150598 +enable_so_btrfs_dir_data_len_fndecl_23457 btrfs_dir_data_len fndecl 0 23457 NULL
150599 +enable_so_rsi_sdio_write_register_multiple_fndecl_23471 rsi_sdio_write_register_multiple fndecl 4 23471 NULL
150600 +enable_so_offset_ttm_bus_placement_23475 offset ttm_bus_placement 0 23475 NULL
150601 +enable_so_gfn_to_hva_prot_fndecl_23484 gfn_to_hva_prot fndecl 2 23484 NULL nohasharray
150602 +enable_so_coda_psdev_write_fndecl_23484 coda_psdev_write fndecl 3 23484 &enable_so_gfn_to_hva_prot_fndecl_23484
150603 +enable_so_control_skge_rx_desc_23486 control skge_rx_desc 0 23486 NULL
150604 +enable_so_cyy_init_card_fndecl_23488 cyy_init_card fndecl 0 23488 NULL
150605 +enable_so_egr_sz_sge_23500 egr_sz sge 0 23500 NULL
150606 +enable_so_mxt_read_and_process_messages_fndecl_23502 mxt_read_and_process_messages fndecl 2 23502 NULL
150607 +enable_so_objectid_btrfs_disk_key_23513 objectid btrfs_disk_key 0 23513 NULL
150608 +enable_so_usb_ep_align_maybe_fndecl_23516 usb_ep_align_maybe fndecl 3 23516 NULL
150609 +enable_so_dev_irnet_read_fndecl_23518 dev_irnet_read fndecl 3 23518 NULL
150610 +enable_so_max_mlx4_bitmap_23521 max mlx4_bitmap 0 23521 NULL
150611 +enable_so_radio_freq_tuner_23529 radio_freq tuner 0 23529 NULL
150612 +enable_so_info2_rx_ppdu_start_23531 info2 rx_ppdu_start 0 23531 NULL
150613 +enable_so_ieee80211_new_mesh_header_fndecl_23538 ieee80211_new_mesh_header fndecl 0 23538 NULL
150614 +enable_so_FbUsableSize_nvidia_par_23541 FbUsableSize nvidia_par 0 23541 NULL
150615 +enable_so_max_pkt_size_cx231xx_bulk_ctl_23542 max_pkt_size cx231xx_bulk_ctl 0 23542 NULL
150616 +enable_so_cosa_write_fndecl_23549 cosa_write fndecl 3 23549 NULL
150617 +enable_so_xfs_dabuf_map_fndecl_23558 xfs_dabuf_map fndecl 2 23558 NULL
150618 +enable_so_p_chmask_f_uac2_opts_23559 p_chmask f_uac2_opts 0 23559 NULL
150619 +enable_so_bdx_change_mtu_fndecl_23561 bdx_change_mtu fndecl 2 23561 NULL
150620 +enable_so_lblock_gfs2_journal_extent_23574 lblock gfs2_journal_extent 0 23574 NULL
150621 +enable_so_spu_reg_delay_if_spi_card_23584 spu_reg_delay if_spi_card 0 23584 NULL nohasharray
150622 +enable_so_syslog_print_fndecl_23584 syslog_print fndecl 2 23584 &enable_so_spu_reg_delay_if_spi_card_23584
150623 +enable_so_SYSC_connect_fndecl_23587 SYSC_connect fndecl 3 23587 NULL
150624 +enable_so_max_cmd_size_ath6kl_bmi_23591 max_cmd_size ath6kl_bmi 0 23591 NULL
150625 +enable_so_dn_setsockopt_fndecl_23593 dn_setsockopt fndecl 5 23593 NULL
150626 +enable_so_hugetlb_no_page_fndecl_23597 hugetlb_no_page fndecl 5 23597 NULL
150627 +enable_so_pixel_clock_detailed_timing_23600 pixel_clock detailed_timing 0 23600 NULL
150628 +enable_so_c67x00_probe_sie_fndecl_23602 c67x00_probe_sie fndecl 3 23602 NULL
150629 +enable_so_nr_grant_frames_vardecl_grant_table_c_23609 nr_grant_frames vardecl_grant-table.c 0 23609 NULL
150630 +enable_so_no_addr_gfs2_skip_data_23619 no_addr gfs2_skip_data 0 23619 NULL
150631 +enable_so_video_size_sis_video_info_23622 video_size sis_video_info 0 23622 NULL
150632 +enable_so_blocksize_iso9660_options_23626 blocksize iso9660_options 0 23626 NULL
150633 +enable_so_skge_rx_setup_fndecl_23628 skge_rx_setup fndecl 4 23628 NULL
150634 +enable_so_vb_bytes_per_line_cx18_stream_23630 vb_bytes_per_line cx18_stream 0 23630 NULL nohasharray
150635 +enable_so_ll_zero_fndecl_23630 ll_zero fndecl 3-4 23630 &enable_so_vb_bytes_per_line_cx18_stream_23630
150636 +enable_so_ath9k_wmi_cmd_fndecl_23636 ath9k_wmi_cmd fndecl 4 23636 NULL
150637 +enable_so_nr_tags_blk_mq_tags_23638 nr_tags blk_mq_tags 0 23638 NULL
150638 +enable_so_tss_addr_kvm_arch_23642 tss_addr kvm_arch 0 23642 NULL
150639 +enable_so_ceph_sync_read_fndecl_23643 ceph_sync_read fndecl 0 23643 NULL
150640 +enable_so_size_crush_bucket_23650 size crush_bucket 0 23650 NULL
150641 +enable_so_piobcnt4k_qib_devdata_23655 piobcnt4k qib_devdata 0 23655 NULL
150642 +enable_so_viafb_bpp1_vardecl_viafbdev_c_23657 viafb_bpp1 vardecl_viafbdev.c 0 23657 NULL
150643 +enable_so_fat_length_msdos_sb_info_23672 fat_length msdos_sb_info 0 23672 NULL
150644 +enable_so_mlx5_core_access_reg_fndecl_23674 mlx5_core_access_reg fndecl 3-5 23674 NULL
150645 +enable_so_xfs_get_blocks_fndecl_23679 xfs_get_blocks fndecl 2 23679 NULL
150646 +enable_so_xfs_ialloc_next_ag_fndecl_23680 xfs_ialloc_next_ag fndecl 0 23680 NULL
150647 +enable_so_btrfs_cross_ref_exist_fndecl_23685 btrfs_cross_ref_exist fndecl 5 23685 NULL
150648 +enable_so_buf_size_vmci_ctx_chkpt_buf_info_23686 buf_size vmci_ctx_chkpt_buf_info 0 23686 NULL
150649 +enable_so_vxfs_bmap1_fndecl_23688 vxfs_bmap1 fndecl 0-2 23688 NULL
150650 +enable_so_aio_read_events_ring_fndecl_23689 aio_read_events_ring fndecl 3 23689 NULL
150651 +enable_so_schedule_zero_fndecl_23702 schedule_zero fndecl 3 23702 NULL
150652 +enable_so_rmtvaluelen_xfs_da_args_23709 rmtvaluelen xfs_da_args 0 23709 NULL nohasharray
150653 +enable_so_word_offset_bm_xfer_ctx_23709 word_offset bm_xfer_ctx 0 23709 &enable_so_rmtvaluelen_xfs_da_args_23709
150654 +enable_so_vgacon_scroll_fndecl_23715 vgacon_scroll fndecl 5 23715 NULL
150655 +enable_so_ath6kl_sdio_bmi_write_fndecl_23717 ath6kl_sdio_bmi_write fndecl 3 23717 NULL
150656 +enable_so_len_cmdbuf_t_23720 len cmdbuf_t 0 23720 NULL
150657 +enable_so_acpi_ev_create_gpe_block_fndecl_23722 acpi_ev_create_gpe_block fndecl 4 23722 NULL
150658 +enable_so_size_p9_fcall_23725 size p9_fcall 0 23725 NULL
150659 +enable_so_hugetlb_fault_fndecl_23735 hugetlb_fault fndecl 3 23735 NULL
150660 +enable_so_dquot_reclaim_space_nodirty_fndecl_23742 dquot_reclaim_space_nodirty fndecl 2 23742 NULL
150661 +enable_so_logfs_compress_fndecl_23746 logfs_compress fndecl 0-3-4 23746 NULL
150662 +enable_so__alloc_get_attr_desc_fndecl_23749 _alloc_get_attr_desc fndecl 2 23749 NULL
150663 +enable_so_dccp_manip_pkt_fndecl_23759 dccp_manip_pkt fndecl 4 23759 NULL
150664 +enable_so_fat_ent_bread_fndecl_23760 fat_ent_bread fndecl 4 23760 NULL
150665 +enable_so_i915_gem_create_fndecl_23768 i915_gem_create fndecl 3 23768 NULL
150666 +enable_so_dev_mem_seek_fndecl_23776 dev_mem_seek fndecl 2 23776 NULL nohasharray
150667 +enable_so_rec_len_ext4_dir_entry_2_23776 rec_len ext4_dir_entry_2 0 23776 &enable_so_dev_mem_seek_fndecl_23776 nohasharray
150668 +enable_so_start_pnfs_block_dev_map_23776 start pnfs_block_dev_map 0 23776 &enable_so_rec_len_ext4_dir_entry_2_23776
150669 +enable_so_tail_p9_rdir_23781 tail p9_rdir 0 23781 NULL nohasharray
150670 +enable_so_iwl_dbgfs_protection_mode_write_fndecl_23781 iwl_dbgfs_protection_mode_write fndecl 3 23781 &enable_so_tail_p9_rdir_23781
150671 +enable_so_read_buffer_length_lego_usb_tower_23787 read_buffer_length lego_usb_tower 0 23787 NULL
150672 +enable_so_nr_kvm_irq_routing_23794 nr kvm_irq_routing 0 23794 NULL
150673 +enable_so_ubi_attach_mtd_dev_fndecl_23797 ubi_attach_mtd_dev fndecl 3-4 23797 NULL nohasharray
150674 +enable_so_parity_devs_raid_type_23797 parity_devs raid_type 0 23797 &enable_so_ubi_attach_mtd_dev_fndecl_23797 nohasharray
150675 +enable_so_cfs_trace_set_debug_mb_usrstr_fndecl_23797 cfs_trace_set_debug_mb_usrstr fndecl 2 23797 &enable_so_parity_devs_raid_type_23797
150676 +enable_so_free_tiger_ch_23798 free tiger_ch 0 23798 NULL
150677 +enable_so_ra_offset_xfs_dir2_leaf_map_info_23799 ra_offset xfs_dir2_leaf_map_info 0 23799 NULL
150678 +enable_so_crypto_rfc4543_setauthsize_fndecl_23801 crypto_rfc4543_setauthsize fndecl 2 23801 NULL
150679 +enable_so_rts_threshold_atmel_private_23803 rts_threshold atmel_private 0 23803 NULL nohasharray
150680 +enable_so_nr_node_ids_vardecl_23803 nr_node_ids vardecl 0 23803 &enable_so_rts_threshold_atmel_private_23803 nohasharray
150681 +enable_so_nvme_trans_modesel_data_fndecl_23803 nvme_trans_modesel_data fndecl 4 23803 &enable_so_nr_node_ids_vardecl_23803
150682 +enable_so_desc_list_len_timb_dma_desc_23804 desc_list_len timb_dma_desc 0 23804 NULL
150683 +enable_so_sctp_skb_pull_fndecl_23806 sctp_skb_pull fndecl 2-0 23806 NULL
150684 +enable_so_ocfs2_get_refcount_tree_fndecl_23824 ocfs2_get_refcount_tree fndecl 2 23824 NULL
150685 +enable_so___xfs_dir3_free_read_fndecl_23827 __xfs_dir3_free_read fndecl 3 23827 NULL nohasharray
150686 +enable_so_bios_hardcoded_edid_size_radeon_mode_info_23827 bios_hardcoded_edid_size radeon_mode_info 0 23827 &enable_so___xfs_dir3_free_read_fndecl_23827
150687 +enable_so_vbi_v_stop_0_saa7134_tvnorm_23830 vbi_v_stop_0 saa7134_tvnorm 0 23830 NULL
150688 +enable_so_buffer_total_count_pvr2_stream_23834 buffer_total_count pvr2_stream 0 23834 NULL
150689 +enable_so_key_dm_region_23838 key dm_region 0 23838 NULL
150690 +enable_so_compressed_bio_alloc_fndecl_23839 compressed_bio_alloc fndecl 2 23839 NULL
150691 +enable_so_update_backups_fndecl_23840 update_backups fndecl 2 23840 NULL
150692 +enable_so_rx_buf_size_skge_port_23843 rx_buf_size skge_port 0 23843 NULL
150693 +enable_so_padzero_fndecl_23844 padzero fndecl 1 23844 NULL
150694 +enable_so_osd_request_async_done_fndecl_23847 osd_request_async_done fndecl 2 23847 NULL nohasharray
150695 +enable_so_tidcnt_qib_tid_info_23847 tidcnt qib_tid_info 0 23847 &enable_so_osd_request_async_done_fndecl_23847
150696 +enable_so_cfg80211_disconnected_fndecl_23850 cfg80211_disconnected fndecl 4 23850 NULL nohasharray
150697 +enable_so_efx_ef10_sriov_configure_fndecl_23850 efx_ef10_sriov_configure fndecl 2 23850 &enable_so_cfg80211_disconnected_fndecl_23850
150698 +enable_so_am_length_compat_xfs_attr_multiop_23853 am_length compat_xfs_attr_multiop 0 23853 NULL
150699 +enable_so_bg_block_bitmap_ext2_group_desc_23861 bg_block_bitmap ext2_group_desc 0 23861 NULL
150700 +enable_so_clutsize_linux_logo_23865 clutsize linux_logo 0 23865 NULL
150701 +enable_so_vdisplay_drm_display_mode_23870 vdisplay drm_display_mode 0 23870 NULL
150702 +enable_so_ocfs2_remove_btree_range_fndecl_23874 ocfs2_remove_btree_range fndecl 5-3-4-8 23874 NULL
150703 +enable_so_c_data_offs_pvr2_ioread_23876 c_data_offs pvr2_ioread 0 23876 NULL
150704 +enable_so_write_file_tpc_fndecl_23877 write_file_tpc fndecl 3 23877 NULL
150705 +enable_so_emulate_gp_fndecl_23878 emulate_gp fndecl 2 23878 NULL
150706 +enable_so_load_msg_fndecl_23884 load_msg fndecl 2 23884 NULL
150707 +enable_so_snd_korg1212_copy_to_fndecl_23887 snd_korg1212_copy_to fndecl 6 23887 NULL
150708 +enable_so_il4965_rs_get_best_rate_fndecl_23890 il4965_rs_get_best_rate fndecl 5 23890 NULL nohasharray
150709 +enable_so_sb_dirband_size_hpfs_sb_info_23890 sb_dirband_size hpfs_sb_info 0 23890 &enable_so_il4965_rs_get_best_rate_fndecl_23890
150710 +enable_so_vxfs_inode_by_name_fndecl_23899 vxfs_inode_by_name fndecl 0 23899 NULL
150711 +enable_so_block_log_squashfs_sb_info_23905 block_log squashfs_sb_info 0 23905 NULL
150712 +enable_so_status_adm8211_desc_23909 status adm8211_desc 0 23909 NULL nohasharray
150713 +enable_so_al_offset_drbd_md_23909 al_offset drbd_md 0 23909 &enable_so_status_adm8211_desc_23909
150714 +enable_so_ipath_verbs_send_fndecl_23910 ipath_verbs_send fndecl 5-3 23910 NULL
150715 +enable_so_num_pages_fuse_req_23911 num_pages fuse_req 0 23911 NULL
150716 +enable_so_htotal___fb_timings_23914 htotal __fb_timings 0 23914 NULL
150717 +enable_so_avail_pebs_ubi_device_23916 avail_pebs ubi_device 0 23916 NULL
150718 +enable_so_data_len_iser_data_buf_23917 data_len iser_data_buf 0 23917 NULL
150719 +enable_so_rd_data_gfs2_rgrpd_23919 rd_data gfs2_rgrpd 0 23919 NULL
150720 +enable_so_block_size_ccp_sha_def_23920 block_size ccp_sha_def 0 23920 NULL
150721 +enable_so_p9_client_readdir_fndecl_23927 p9_client_readdir fndecl 0 23927 NULL
150722 +enable_so_disk_len_btrfs_ordered_extent_23932 disk_len btrfs_ordered_extent 0 23932 NULL
150723 +enable_so_gfs2_glock_get_fndecl_23936 gfs2_glock_get fndecl 2 23936 NULL
150724 +enable_so_tracing_trace_options_write_fndecl_23946 tracing_trace_options_write fndecl 3 23946 NULL
150725 +enable_so_btrfs_setxattr_fndecl_23956 btrfs_setxattr fndecl 4 23956 NULL
150726 +enable_so_init_q_fndecl_23959 init_q fndecl 4 23959 NULL
150727 +enable_so_input_buffer_size_vardecl_seq_midi_c_23961 input_buffer_size vardecl_seq_midi.c 0 23961 NULL
150728 +enable_so_rx_ip_align_efx_nic_23965 rx_ip_align efx_nic 0 23965 NULL nohasharray
150729 +enable_so_memstick_alloc_host_fndecl_23965 memstick_alloc_host fndecl 1 23965 &enable_so_rx_ip_align_efx_nic_23965
150730 +enable_so_fw_status_len_wl1271_23974 fw_status_len wl1271 0 23974 NULL
150731 +enable_so_last_txrate_idx_iwl_lq_sta_23983 last_txrate_idx iwl_lq_sta 0 23983 NULL
150732 +enable_so_EventDataLength__MPI2_EVENT_NOTIFICATION_REPLY_23993 EventDataLength _MPI2_EVENT_NOTIFICATION_REPLY 0 23993 NULL
150733 +enable_so_usb_stream_next_packet_size_fndecl_23994 usb_stream_next_packet_size fndecl 0 23994 NULL
150734 +enable_so___pn533_send_async_fndecl_24001 __pn533_send_async fndecl 5 24001 NULL
150735 +enable_so_anchor_udf_options_24004 anchor udf_options 0 24004 NULL
150736 +enable_so_algo_gen_pool_24005 algo gen_pool 0 24005 NULL nohasharray
150737 +enable_so_dir_band_start_hpfs_super_block_24005 dir_band_start hpfs_super_block 0 24005 &enable_so_algo_gen_pool_24005
150738 +enable_so_tx_buf_dma_pch_spi_dma_ctrl_24013 tx_buf_dma pch_spi_dma_ctrl 0 24013 NULL nohasharray
150739 +enable_so_truncate_setsize_fndecl_24013 truncate_setsize fndecl 2 24013 &enable_so_tx_buf_dma_pch_spi_dma_ctrl_24013
150740 +enable_so_vlan_id_bond_vlan_tag_24019 vlan_id bond_vlan_tag 0 24019 NULL
150741 +enable_so_obd_proc_jobid_var_seq_write_fndecl_24020 obd_proc_jobid_var_seq_write fndecl 3 24020 NULL
150742 +enable_so_iscsi_session_setup_fndecl_24023 iscsi_session_setup fndecl 3-5 24023 NULL
150743 +enable_so_bpp__sisbios_mode_24033 bpp _sisbios_mode 0 24033 NULL
150744 +enable_so_namelen_cramfs_inode_24036 namelen cramfs_inode 0 24036 NULL
150745 +enable_so_obj_size_request_sock_ops_24037 obj_size request_sock_ops 0 24037 NULL
150746 +enable_so_chunk_mask_geom_24040 chunk_mask geom 0 24040 NULL
150747 +enable_so_vpdma_create_desc_list_fndecl_24044 vpdma_create_desc_list fndecl 2 24044 NULL
150748 +enable_so_start_switch_path_24046 start switch_path 0 24046 NULL nohasharray
150749 +enable_so_buf_size_conf_writedata_24046 buf_size conf_writedata 0 24046 &enable_so_start_switch_path_24046
150750 +enable_so_size_pernet_operations_24051 size pernet_operations 0 24051 NULL
150751 +enable_so_bNumEndpoints_usb_interface_descriptor_24052 bNumEndpoints usb_interface_descriptor 0 24052 NULL nohasharray
150752 +enable_so_osst_int_ioctl_fndecl_24052 osst_int_ioctl fndecl 4 24052 &enable_so_bNumEndpoints_usb_interface_descriptor_24052
150753 +enable_so_inode_minix3_dir_entry_24054 inode minix3_dir_entry 0 24054 NULL
150754 +enable_so_shdma_init_fndecl_24059 shdma_init fndecl 3 24059 NULL
150755 +enable_so_ws_row_winsize_24064 ws_row winsize 0 24064 NULL
150756 +enable_so_ebx_v86_regs_24072 ebx v86_regs 0 24072 NULL
150757 +enable_so_h_sync_strt_wid_aty128_crtc_24079 h_sync_strt_wid aty128_crtc 0 24079 NULL
150758 +enable_so_last_mark_lbn_os_aux_s_24082 last_mark_lbn os_aux_s 0 24082 NULL
150759 +enable_so_sample_group_minstrel_ht_sta_24084 sample_group minstrel_ht_sta 0 24084 NULL nohasharray
150760 +enable_so_nr_uuids_cache_set_24084 nr_uuids cache_set 0 24084 &enable_so_sample_group_minstrel_ht_sta_24084
150761 +enable_so_gfs2_meta_new_fndecl_24087 gfs2_meta_new fndecl 2 24087 NULL nohasharray
150762 +enable_so_map_len_ipath_verbs_txreq_24087 map_len ipath_verbs_txreq 0 24087 &enable_so_gfs2_meta_new_fndecl_24087
150763 +enable_so_cfs_trace_allocate_string_buffer_fndecl_24094 cfs_trace_allocate_string_buffer fndecl 2 24094 NULL
150764 +enable_so_sectors_md_rdev_24098 sectors md_rdev 0 24098 NULL
150765 +enable_so_capture_bufsize_vardecl_nm256_c_24100 capture_bufsize vardecl_nm256.c 0 24100 NULL
150766 +enable_so_dcbp_set_pad_bits_fndecl_24101 dcbp_set_pad_bits fndecl 2 24101 NULL
150767 +enable_so_bus_mtu_brcmf_usbdev_24102 bus_mtu brcmf_usbdev 0 24102 NULL
150768 +enable_so_read_fifo_fndecl_24105 read_fifo fndecl 3 24105 NULL
150769 +enable_so_add_td_to_list_fndecl_24113 add_td_to_list fndecl 3 24113 NULL nohasharray
150770 +enable_so_get_rx_frame_len_stmmac_desc_ops_24113 get_rx_frame_len stmmac_desc_ops 0 24113 &enable_so_add_td_to_list_fndecl_24113
150771 +enable_so_packet_multiplier_em28xx_24119 packet_multiplier em28xx 0 24119 NULL nohasharray
150772 +enable_so_rax_vmcb_save_area_24119 rax vmcb_save_area 0 24119 &enable_so_packet_multiplier_em28xx_24119
150773 +enable_so_size_sge_rspq_24120 size sge_rspq 0 24120 NULL
150774 +enable_so_srpt_build_cmd_rsp_fndecl_24126 srpt_build_cmd_rsp fndecl 0 24126 NULL
150775 +enable_so_ieee80211_assoc_success_fndecl_24131 ieee80211_assoc_success fndecl 4 24131 NULL
150776 +enable_so_radix_tree_locate_item_fndecl_24133 radix_tree_locate_item fndecl 0 24133 NULL
150777 +enable_so_scif_user_send_fndecl_24137 scif_user_send fndecl 3 24137 NULL
150778 +enable_so_sdram_size_solo_dev_24141 sdram_size solo_dev 0 24141 NULL nohasharray
150779 +enable_so_elem_size_v4l2_ctrl_config_24141 elem_size v4l2_ctrl_config 0 24141 &enable_so_sdram_size_solo_dev_24141
150780 +enable_so_t_task_nolb_se_cmd_24142 t_task_nolb se_cmd 0 24142 NULL
150781 +enable_so_tegra_clk_init_fndecl_24143 tegra_clk_init fndecl 3-2 24143 NULL
150782 +enable_so_len_event_data_24144 len event_data 0 24144 NULL
150783 +enable_so_fat_fat_length_fat_bios_param_block_24145 fat_fat_length fat_bios_param_block 0 24145 NULL
150784 +enable_so_intel_alloc_iova_fndecl_24160 intel_alloc_iova fndecl 4 24160 NULL
150785 +enable_so_lro_add_page_fndecl_24166 lro_add_page fndecl 4 24166 NULL
150786 +enable_so___alloc_extent_buffer_fndecl_24167 __alloc_extent_buffer fndecl 2-3 24167 NULL nohasharray
150787 +enable_so_ppp_sync_input_fndecl_24167 ppp_sync_input fndecl 4 24167 &enable_so___alloc_extent_buffer_fndecl_24167
150788 +enable_so_vd_tlb_preload_count_gru_vma_data_24168 vd_tlb_preload_count gru_vma_data 0 24168 NULL
150789 +enable_so_vram_start_radeon_mc_24170 vram_start radeon_mc 0 24170 NULL
150790 +enable_so_bpp_drm_mode_create_dumb_24171 bpp drm_mode_create_dumb 0 24171 NULL
150791 +enable_so_drop_count_codel_stats_24173 drop_count codel_stats 0 24173 NULL
150792 +enable_so_ext4_split_extent_fndecl_24180 ext4_split_extent fndecl 0 24180 NULL
150793 +enable_so_o2net_send_message_vec_fndecl_24188 o2net_send_message_vec fndecl 4 24188 NULL
150794 +enable_so_iv_size_crypt_config_24199 iv_size crypt_config 0 24199 NULL
150795 +enable_so_kernel_sendpage_fndecl_24200 kernel_sendpage fndecl 0 24200 NULL nohasharray
150796 +enable_so_drop_unencrypted_local_info_24200 drop_unencrypted local_info 0 24200 &enable_so_kernel_sendpage_fndecl_24200
150797 +enable_so_erase_size_falcon_spi_device_24212 erase_size falcon_spi_device 0 24212 NULL
150798 +enable_so_size_drm_gem_object_24219 size drm_gem_object 0 24219 NULL
150799 +enable_so_nilfs_segctor_wakeup_fndecl_24221 nilfs_segctor_wakeup fndecl 2 24221 NULL
150800 +enable_so_stride_usbatm_channel_24224 stride usbatm_channel 0 24224 NULL
150801 +enable_so_nid_free_nid_24229 nid free_nid 0 24229 NULL nohasharray
150802 +enable_so_carl9170_cmd_buf_fndecl_24229 carl9170_cmd_buf fndecl 3 24229 &enable_so_nid_free_nid_24229
150803 +enable_so_get_ramdisk_size_fndecl_24233 get_ramdisk_size fndecl 0 24233 NULL
150804 +enable_so_udf_process_sequence_fndecl_24235 udf_process_sequence fndecl 2 24235 NULL
150805 +enable_so_num_tx_queues_fm10k_intfc_24236 num_tx_queues fm10k_intfc 0 24236 NULL
150806 +enable_so___nodes_weight_fndecl_24239 __nodes_weight fndecl 0 24239 NULL
150807 +enable_so_vlan_qos_vlan_ioctl_args_24244 vlan_qos vlan_ioctl_args 0 24244 NULL nohasharray
150808 +enable_so_qi_dqchunklen_xfs_quotainfo_24244 qi_dqchunklen xfs_quotainfo 0 24244 &enable_so_vlan_qos_vlan_ioctl_args_24244
150809 +enable_so_inode_ext2_dir_entry_2_24254 inode ext2_dir_entry_2 0 24254 NULL
150810 +enable_so_in_wm8994_fll_config_24259 in wm8994_fll_config 0 24259 NULL
150811 +enable_so_width_vpe_q_data_24262 width vpe_q_data 0 24262 NULL
150812 +enable_so_src_length_btrfs_ioctl_clone_range_args_24266 src_length btrfs_ioctl_clone_range_args 0 24266 NULL
150813 +enable_so_buffer_start_nm256_24267 buffer_start nm256 0 24267 NULL
150814 +enable_so_crtc_hblank_end_drm_display_mode_24268 crtc_hblank_end drm_display_mode 0 24268 NULL
150815 +enable_so_usnic_ib_qp_grp_dump_hdr_fndecl_24270 usnic_ib_qp_grp_dump_hdr fndecl 2 24270 NULL
150816 +enable_so_totalsize_microcode_header_intel_24274 totalsize microcode_header_intel 0 24274 NULL
150817 +enable_so_blockshift_alauda_card_info_24288 blockshift alauda_card_info 0 24288 NULL
150818 +enable_so_bop_delete_nilfs_bmap_operations_24290 bop_delete nilfs_bmap_operations 0 24290 NULL
150819 +enable_so__do_truncate_fndecl_24296 _do_truncate fndecl 2 24296 NULL
150820 +enable_so_sg_copy_buffer_fndecl_24297 sg_copy_buffer fndecl 0 24297 NULL
150821 +enable_so_smk_write_cipso2_fndecl_24302 smk_write_cipso2 fndecl 3 24302 NULL
150822 +enable_so_rf_our_slot_rcom_config_24309 rf_our_slot rcom_config 0 24309 NULL
150823 +enable_so_hdlcdev_rx_fndecl_24310 hdlcdev_rx fndecl 3 24310 NULL nohasharray
150824 +enable_so_pte_prefetch_gfn_to_pfn_fndecl_24310 pte_prefetch_gfn_to_pfn fndecl 2 24310 &enable_so_hdlcdev_rx_fndecl_24310 nohasharray
150825 +enable_so_ocfs2_info_scan_inode_alloc_fndecl_24310 ocfs2_info_scan_inode_alloc fndecl 3 24310 &enable_so_pte_prefetch_gfn_to_pfn_fndecl_24310 nohasharray
150826 +enable_so_num_entries__i2o_hrt_24310 num_entries _i2o_hrt 0 24310 &enable_so_ocfs2_info_scan_inode_alloc_fndecl_24310
150827 +enable_so_udc_get_ppbdu_rxbytes_fndecl_24313 udc_get_ppbdu_rxbytes fndecl 0 24313 NULL nohasharray
150828 +enable_so_dm_accept_partial_bio_fndecl_24313 dm_accept_partial_bio fndecl 2 24313 &enable_so_udc_get_ppbdu_rxbytes_fndecl_24313 nohasharray
150829 +enable_so_io_apic_get_redir_entries_fndecl_24313 io_apic_get_redir_entries fndecl 0 24313 &enable_so_dm_accept_partial_bio_fndecl_24313
150830 +enable_so_pch_udc_create_dma_chain_fndecl_24314 pch_udc_create_dma_chain fndecl 3 24314 NULL nohasharray
150831 +enable_so_pstore_file_llseek_fndecl_24314 pstore_file_llseek fndecl 2 24314 &enable_so_pch_udc_create_dma_chain_fndecl_24314 nohasharray
150832 +enable_so_curfreq_dsbr100_device_24314 curfreq dsbr100_device 0 24314 &enable_so_pstore_file_llseek_fndecl_24314
150833 +enable_so_byte_per_page_nand_jedec_params_24315 byte_per_page nand_jedec_params 0 24315 NULL
150834 +enable_so_remove_monitor_info_fndecl_24319 remove_monitor_info fndecl 3 24319 NULL
150835 +enable_so_xennet_make_txreqs_fndecl_24328 xennet_make_txreqs fndecl 5-6 24328 NULL
150836 +enable_so_zlib_deflate_workspacesize_fndecl_24330 zlib_deflate_workspacesize fndecl 0 24330 NULL
150837 +enable_so_next_offset_ceph_file_info_24335 next_offset ceph_file_info 0 24335 NULL
150838 +enable_so_in_iso_pipe_usbtest_dev_24336 in_iso_pipe usbtest_dev 0 24336 NULL
150839 +enable_so_smp_send_cmd_fndecl_24339 smp_send_cmd fndecl 3 24339 NULL
150840 +enable_so_flags_rtl8187_rx_hdr_24340 flags rtl8187_rx_hdr 0 24340 NULL
150841 +enable_so_airo_change_mtu_fndecl_24345 airo_change_mtu fndecl 2 24345 NULL
150842 +enable_so_stride_simplefb_params_24347 stride simplefb_params 0 24347 NULL
150843 +enable_so_sd_inptrs_gfs2_sbd_24356 sd_inptrs gfs2_sbd 0 24356 NULL
150844 +enable_so_start_isoc_chain_fndecl_24358 start_isoc_chain fndecl 4-2 24358 NULL
150845 +enable_so_ieee_il3945_rate_info_24363 ieee il3945_rate_info 0 24363 NULL
150846 +enable_so_ls_recover_size_lm_lockstruct_24365 ls_recover_size lm_lockstruct 0 24365 NULL
150847 +enable_so_len_ath6kl_mgmt_buff_24368 len ath6kl_mgmt_buff 0 24368 NULL
150848 +enable_so_fb_get_hfreq_fndecl_24369 fb_get_hfreq fndecl 0-1-2 24369 NULL
150849 +enable_so_atr_len_cm4000_dev_24376 atr_len cm4000_dev 0 24376 NULL
150850 +enable_so_sco_sock_setsockopt_fndecl_24379 sco_sock_setsockopt fndecl 5 24379 NULL
150851 +enable_so_read_reg_c_can_priv_24389 read_reg c_can_priv 0 24389 NULL
150852 +enable_so_demote_then_promote_fndecl_24392 demote_then_promote fndecl 5-3-4 24392 NULL
150853 +enable_so_ext4_rename_dir_finish_fndecl_24394 ext4_rename_dir_finish fndecl 3 24394 NULL
150854 +enable_so_msr_ct_atc_24401 msr ct_atc 0 24401 NULL
150855 +enable_so_pvr2_hdw_get_cur_freq_fndecl_24402 pvr2_hdw_get_cur_freq fndecl 0 24402 NULL
150856 +enable_so_max_frame_size_slgt_info_24405 max_frame_size slgt_info 0 24405 NULL
150857 +enable_so_ocfs2_alloc_write_ctxt_fndecl_24406 ocfs2_alloc_write_ctxt fndecl 3 24406 NULL nohasharray
150858 +enable_so_hfs_ext_find_block_fndecl_24406 hfs_ext_find_block fndecl 0 24406 &enable_so_ocfs2_alloc_write_ctxt_fndecl_24406
150859 +enable_so_completed_vringh_24407 completed vringh 0 24407 NULL
150860 +enable_so_max_scbs_hw_profile_24409 max_scbs hw_profile 0 24409 NULL
150861 +enable_so_smk_write_load_self2_fndecl_24412 smk_write_load_self2 fndecl 3 24412 NULL
150862 +enable_so_mtu_ArcProto_24415 mtu ArcProto 0 24415 NULL
150863 +enable_so___percpu_ida_init_fndecl_24416 __percpu_ida_init fndecl 3 24416 NULL
150864 +enable_so_mrst_lvds_clock_fndecl_24433 mrst_lvds_clock fndecl 1 24433 NULL nohasharray
150865 +enable_so_ni_gpct_device_construct_fndecl_24433 ni_gpct_device_construct fndecl 5 24433 &enable_so_mrst_lvds_clock_fndecl_24433
150866 +enable_so_init_cdrom_command_fndecl_24438 init_cdrom_command fndecl 3 24438 NULL
150867 +enable_so_usHBlanking_Time__ATOM_DTD_FORMAT_24440 usHBlanking_Time _ATOM_DTD_FORMAT 0 24440 NULL
150868 +enable_so_fuse_request_alloc_nofs_fndecl_24442 fuse_request_alloc_nofs fndecl 1 24442 NULL
150869 +enable_so_dwTransferLength_wa_xfer_result_24445 dwTransferLength wa_xfer_result 0 24445 NULL
150870 +enable_so_ptlrpc_lprocfs_nrs_seq_write_fndecl_24446 ptlrpc_lprocfs_nrs_seq_write fndecl 3 24446 NULL
150871 +enable_so_s_last_pseg_nilfs_super_block_24457 s_last_pseg nilfs_super_block 0 24457 NULL nohasharray
150872 +enable_so_ehash_mask_inet_hashinfo_24457 ehash_mask inet_hashinfo 0 24457 &enable_so_s_last_pseg_nilfs_super_block_24457
150873 +enable_so_rtlwifi_rate_mapping_fndecl_24458 rtlwifi_rate_mapping fndecl 0 24458 NULL
150874 +enable_so_wm8996_set_fll_fndecl_24459 wm8996_set_fll fndecl 4-5 24459 NULL
150875 +enable_so_nvif_notify_new_fndecl_24460 nvif_notify_new fndecl 6-7 24460 NULL
150876 +enable_so_drbd_bm_find_next_fndecl_24464 drbd_bm_find_next fndecl 2 24464 NULL nohasharray
150877 +enable_so_cfs_hash_bkt_size_fndecl_24464 cfs_hash_bkt_size fndecl 0 24464 &enable_so_drbd_bm_find_next_fndecl_24464
150878 +enable_so_remap_to_cache_fndecl_24467 remap_to_cache fndecl 3 24467 NULL
150879 +enable_so_unlink_queued_fndecl_24470 unlink_queued fndecl 4-2-3 24470 NULL
150880 +enable_so_rq_db_page_mthca_create_qp_24471 rq_db_page mthca_create_qp 0 24471 NULL
150881 +enable_so_get_filter_fndecl_24472 get_filter fndecl 0 24472 NULL
150882 +enable_so_qset_remove_urb_fndecl_24474 qset_remove_urb fndecl 4 24474 NULL nohasharray
150883 +enable_so_st_max_sg_segs_vardecl_st_c_24474 st_max_sg_segs vardecl_st.c 0 24474 &enable_so_qset_remove_urb_fndecl_24474
150884 +enable_so_WriteBlock_fndecl_24489 WriteBlock fndecl 3 24489 NULL
150885 +enable_so_sensor_yres_em28xx_v4l2_24490 sensor_yres em28xx_v4l2 0 24490 NULL
150886 +enable_so_len_ceph_crypto_key_24496 len ceph_crypto_key 0 24496 NULL
150887 +enable_so_buf_sz_rx_info_24497 buf_sz rx_info 0 24497 NULL
150888 +enable_so_default_priority_binder_proc_24499 default_priority binder_proc 0 24499 NULL
150889 +enable_so_iwl_mvm_hwrate_to_tx_status_fndecl_24501 iwl_mvm_hwrate_to_tx_status fndecl 1 24501 NULL
150890 +enable_so_sys_sendfile64_fndecl_24508 sys_sendfile64 fndecl 4 24508 NULL
150891 +enable_so_long_frame_max_tx_count_ieee80211_conf_24509 long_frame_max_tx_count ieee80211_conf 0 24509 NULL
150892 +enable_so_max_size_usb_fifo_24517 max_size usb_fifo 0 24517 NULL
150893 +enable_so_size_firmware_24525 size firmware 0 24525 NULL nohasharray
150894 +enable_so_sctp_setsockopt_peer_addr_params_fndecl_24525 sctp_setsockopt_peer_addr_params fndecl 3 24525 &enable_so_size_firmware_24525
150895 +enable_so_rtl8169_try_rx_copy_fndecl_24530 rtl8169_try_rx_copy fndecl 3 24530 NULL
150896 +enable_so_max_sgl_entries_vardecl_mpt3sas_base_c_24531 max_sgl_entries vardecl_mpt3sas_base.c 0 24531 NULL
150897 +enable_so_dvb_video_write_fndecl_24545 dvb_video_write fndecl 3 24545 NULL
150898 +enable_so_width_pcm_format_data_24546 width pcm_format_data 0 24546 NULL
150899 +enable_so_xfs_xattr_set_fndecl_24547 xfs_xattr_set fndecl 4 24547 NULL
150900 +enable_so_dir_band_bitmap_hpfs_super_block_24552 dir_band_bitmap hpfs_super_block 0 24552 NULL
150901 +enable_so_log_len_vardecl_verifier_c_24556 log_len vardecl_verifier.c 0 24556 NULL
150902 +enable_so_boot_size_il4965_firmware_pieces_24557 boot_size il4965_firmware_pieces 0 24557 NULL
150903 +enable_so_ocfs2_test_inode_bit_fndecl_24558 ocfs2_test_inode_bit fndecl 2 24558 NULL
150904 +enable_so_residual_count_se_cmd_24562 residual_count se_cmd 0 24562 NULL
150905 +enable_so_blksize_nbd_device_24565 blksize nbd_device 0 24565 NULL
150906 +enable_so_console_addr_brcmf_sdio_24567 console_addr brcmf_sdio 0 24567 NULL
150907 +enable_so_ddp_set_map_fndecl_24572 ddp_set_map fndecl 4 24572 NULL
150908 +enable_so_port_subport_cnt_ipath_portdata_24576 port_subport_cnt ipath_portdata 0 24576 NULL nohasharray
150909 +enable_so_blk_extent_info_24576 blk extent_info 0 24576 &enable_so_port_subport_cnt_ipath_portdata_24576
150910 +enable_so_kvm_cpu_get_interrupt_fndecl_24580 kvm_cpu_get_interrupt fndecl 0 24580 NULL
150911 +enable_so_size_ceph_mds_caps_24581 size ceph_mds_caps 0 24581 NULL
150912 +enable_so_pkt_size_gspca_dev_24583 pkt_size gspca_dev 0 24583 NULL
150913 +enable_so_joydev_handle_JSIOCSBTNMAP_fndecl_24584 joydev_handle_JSIOCSBTNMAP fndecl 3 24584 NULL
150914 +enable_so_tomoyo_scan_bprm_fndecl_24585 tomoyo_scan_bprm fndecl 2-4 24585 NULL
150915 +enable_so_ebcnt_vardecl_oobtest_c_24588 ebcnt vardecl_oobtest.c 0 24588 NULL
150916 +enable_so_chunk_shift_geom_24589 chunk_shift geom 0 24589 NULL
150917 +enable_so_head_TxFifo_24599 head TxFifo 0 24599 NULL nohasharray
150918 +enable_so_ea_size_l_fnode_24599 ea_size_l fnode 0 24599 &enable_so_head_TxFifo_24599
150919 +enable_so_dsp_cmx_send_member_fndecl_24602 dsp_cmx_send_member fndecl 2 24602 NULL
150920 +enable_so_root_level_kvm_mmu_24604 root_level kvm_mmu 0 24604 NULL
150921 +enable_so_raid_disks_mddev_24609 raid_disks mddev 0 24609 NULL
150922 +enable_so_datalen_ip_tunnel_prl_24610 datalen ip_tunnel_prl 0 24610 NULL
150923 +enable_so_unix_bind_fndecl_24615 unix_bind fndecl 3 24615 NULL
150924 +enable_so_irda_connect_indication_fndecl_24616 irda_connect_indication fndecl 4 24616 NULL
150925 +enable_so_SyS_connect_fndecl_24617 SyS_connect fndecl 3 24617 NULL
150926 +enable_so_ntfs_new_extent_inode_fndecl_24624 ntfs_new_extent_inode fndecl 2 24624 NULL
150927 +enable_so_fs_path_add_fndecl_24627 fs_path_add fndecl 3 24627 NULL
150928 +enable_so_qlcnic_process_rcv_diag_fndecl_24628 qlcnic_process_rcv_diag fndecl 3 24628 NULL
150929 +enable_so_elan_i2c_read_block_fndecl_24636 elan_i2c_read_block fndecl 4 24636 NULL nohasharray
150930 +enable_so_txq_depth_bnad_24636 txq_depth bnad 0 24636 &enable_so_elan_i2c_read_block_fndecl_24636
150931 +enable_so_writeback_index_address_space_24643 writeback_index address_space 0 24643 NULL
150932 +enable_so_data_mcp_cmd_response_24644 data mcp_cmd_response 0 24644 NULL
150933 +enable_so_array_len_xdr_array2_desc_24652 array_len xdr_array2_desc 0 24652 NULL
150934 +enable_so_cur_sg_ore_per_dev_state_24654 cur_sg ore_per_dev_state 0 24654 NULL
150935 +enable_so_offset_musb_qh_24658 offset musb_qh 0 24658 NULL
150936 +enable_so_lcd_hsync_dly_atyfb_par_24660 lcd_hsync_dly atyfb_par 0 24660 NULL
150937 +enable_so_out_iso_pipe_usbtest_dev_24664 out_iso_pipe usbtest_dev 0 24664 NULL
150938 +enable_so_spidev_read_fndecl_24668 spidev_read fndecl 3 24668 NULL nohasharray
150939 +enable_so_uinput_str_to_user_fndecl_24668 uinput_str_to_user fndecl 3 24668 &enable_so_spidev_read_fndecl_24668
150940 +enable_so_rx_pipe_brcmf_usbdev_info_24671 rx_pipe brcmf_usbdev_info 0 24671 NULL
150941 +enable_so_src_width_tpg_data_24681 src_width tpg_data 0 24681 NULL nohasharray
150942 +enable_so_arizona_calc_fll_fndecl_24681 arizona_calc_fll fndecl 3 24681 &enable_so_src_width_tpg_data_24681
150943 +enable_so_i_prealloc_block_reiserfs_inode_info_24683 i_prealloc_block reiserfs_inode_info 0 24683 NULL
150944 +enable_so_ocfs2_split_tree_fndecl_24695 ocfs2_split_tree fndecl 5 24695 NULL
150945 +enable_so_transport_generic_map_mem_to_cmd_fndecl_24700 transport_generic_map_mem_to_cmd fndecl 3 24700 NULL
150946 +enable_so_size_aper_size_info_16_24703 size aper_size_info_16 0 24703 NULL
150947 +enable_so_block_ack_param_set_host_cmd_ds_11n_addba_rsp_24704 block_ack_param_set host_cmd_ds_11n_addba_rsp 0 24704 NULL
150948 +enable_so_queue_depth_blk_mq_tag_set_24719 queue_depth blk_mq_tag_set 0 24719 NULL
150949 +enable_so_qxl_ttm_tt_create_fndecl_24720 qxl_ttm_tt_create fndecl 2 24720 NULL
150950 +enable_so_bfs_get_block_fndecl_24726 bfs_get_block fndecl 2 24726 NULL
150951 +enable_so_digest_size_ccp_sha_def_24730 digest_size ccp_sha_def 0 24730 NULL
150952 +enable_so_HiSax_readstatus_fndecl_24731 HiSax_readstatus fndecl 2 24731 NULL
150953 +enable_so_svm_set_efer_fndecl_24733 svm_set_efer fndecl 2 24733 NULL
150954 +enable_so_next_idtentry_24734 next idtentry 0 24734 NULL
150955 +enable_so_shmem_undo_range_fndecl_24742 shmem_undo_range fndecl 2-3 24742 NULL
150956 +enable_so_ud_putcs_fndecl_24751 ud_putcs fndecl 4 24751 NULL
150957 +enable_so_vactive_lo_oaktrail_timing_info_24758 vactive_lo oaktrail_timing_info 0 24758 NULL nohasharray
150958 +enable_so_data_dotdot_offset_xfs_dir_ops_24758 data_dotdot_offset xfs_dir_ops 0 24758 &enable_so_vactive_lo_oaktrail_timing_info_24758
150959 +enable_so_n_ao_urbs_usbduxsigma_private_24760 n_ao_urbs usbduxsigma_private 0 24760 NULL
150960 +enable_so_pending_deflate_state_24766 pending deflate_state 0 24766 NULL
150961 +enable_so_xlog_state_switch_iclogs_fndecl_24782 xlog_state_switch_iclogs fndecl 3 24782 NULL
150962 +enable_so_gx1_read_conf_reg_fndecl_24794 gx1_read_conf_reg fndecl 0 24794 NULL nohasharray
150963 +enable_so_gnttab_expand_fndecl_24794 gnttab_expand fndecl 1 24794 &enable_so_gx1_read_conf_reg_fndecl_24794
150964 +enable_so_afs_proc_rootcell_write_fndecl_24797 afs_proc_rootcell_write fndecl 3 24797 NULL
150965 +enable_so_usHSyncWidth__ATOM_DTD_FORMAT_24801 usHSyncWidth _ATOM_DTD_FORMAT 0 24801 NULL
150966 +enable_so_mprotect_fixup_fndecl_24803 mprotect_fixup fndecl 4-3 24803 NULL nohasharray
150967 +enable_so_write_file_tx99_fndecl_24803 write_file_tx99 fndecl 3 24803 &enable_so_mprotect_fixup_fndecl_24803
150968 +enable_so___read_extent_tree_block_fndecl_24804 __read_extent_tree_block fndecl 4 24804 NULL
150969 +enable_so_num_q_vectors_i40e_vsi_24807 num_q_vectors i40e_vsi 0 24807 NULL
150970 +enable_so_analog_ep_isoc_em28xx_24810 analog_ep_isoc em28xx 0 24810 NULL
150971 +enable_so_media_entity_init_fndecl_24813 media_entity_init fndecl 4-2 24813 NULL
150972 +enable_so_cdc_ncm_eth_hlen_fndecl_24814 cdc_ncm_eth_hlen fndecl 0 24814 NULL nohasharray
150973 +enable_so_do_huge_pmd_numa_page_fndecl_24814 do_huge_pmd_numa_page fndecl 3 24814 &enable_so_cdc_ncm_eth_hlen_fndecl_24814
150974 +enable_so_RxLastCount_via_ircc_cb_24815 RxLastCount via_ircc_cb 0 24815 NULL
150975 +enable_so_readahead_cached_dev_24826 readahead cached_dev 0 24826 NULL
150976 +enable_so_fq_codel_zalloc_fndecl_24833 fq_codel_zalloc fndecl 1 24833 NULL
150977 +enable_so_param_size_preview_update_24836 param_size preview_update 0 24836 NULL
150978 +enable_so_lprocfs_alloc_md_stats_fndecl_24846 lprocfs_alloc_md_stats fndecl 2 24846 NULL
150979 +enable_so_acpi_ut_create_string_object_fndecl_24851 acpi_ut_create_string_object fndecl 1 24851 NULL nohasharray
150980 +enable_so_wLength_usbdevfs_ctrltransfer_24851 wLength usbdevfs_ctrltransfer 0 24851 &enable_so_acpi_ut_create_string_object_fndecl_24851
150981 +enable_so_pa_len_ext4_prealloc_space_24852 pa_len ext4_prealloc_space 0 24852 NULL
150982 +enable_so_body_len_vardecl_initramfs_c_24853 body_len vardecl_initramfs.c 0 24853 NULL
150983 +enable_so_usbhs_pipe_config_update_fndecl_24856 usbhs_pipe_config_update fndecl 4 24856 NULL
150984 +enable_so_bgpio_init_fndecl_24861 bgpio_init fndecl 3 24861 NULL
150985 +enable_so___videobuf_copy_to_user_fndecl_24876 __videobuf_copy_to_user fndecl 4 24876 NULL
150986 +enable_so_x86_cache_alignment_cpuinfo_x86_24878 x86_cache_alignment cpuinfo_x86 0 24878 NULL
150987 +enable_so_zone_count_sm_ftl_24881 zone_count sm_ftl 0 24881 NULL
150988 +enable_so_add_atomic_switch_msr_fndecl_24883 add_atomic_switch_msr fndecl 3-4 24883 NULL
150989 +enable_so_get_modalias_fndecl_24893 get_modalias fndecl 2 24893 NULL
150990 +enable_so_i_truncate_size_ceph_inode_info_24902 i_truncate_size ceph_inode_info 0 24902 NULL
150991 +enable_so_memweight_fndecl_24905 memweight fndecl 0 24905 NULL
150992 +enable_so_io_limit_vardecl_at24_c_24907 io_limit vardecl_at24.c 0 24907 NULL
150993 +enable_so_ceph_tcp_recvpage_fndecl_24910 ceph_tcp_recvpage fndecl 0 24910 NULL
150994 +enable_so_len_fb_cmap_24911 len fb_cmap 0 24911 NULL
150995 +enable_so_num_tx_queues_igb_adapter_24917 num_tx_queues igb_adapter 0 24917 NULL
150996 +enable_so_tcp_mtu_to_mss_fndecl_24925 tcp_mtu_to_mss fndecl 2 24925 NULL
150997 +enable_so_assign_eip_far_fndecl_24930 assign_eip_far fndecl 2 24930 NULL
150998 +enable_so_current_area_pstore_24931 current_area pstore 0 24931 NULL
150999 +enable_so_max_sectors_per_io_vardecl_megaraid_c_24934 max_sectors_per_io vardecl_megaraid.c 0 24934 NULL
151000 +enable_so_launder_page_address_space_operations_24942 launder_page address_space_operations 0 24942 NULL
151001 +enable_so_key_len_cfg80211_connect_params_24952 key_len cfg80211_connect_params 0 24952 NULL
151002 +enable_so_vmalloc_fndecl_24955 vmalloc fndecl 1 24955 NULL nohasharray
151003 +enable_so_size_video_still_picture_24955 size video_still_picture 0 24955 &enable_so_vmalloc_fndecl_24955
151004 +enable_so_il_vfrontporch_v4l2_bt_timings_24960 il_vfrontporch v4l2_bt_timings 0 24960 NULL
151005 +enable_so_nilfs_cpfile_clear_snapshot_fndecl_24964 nilfs_cpfile_clear_snapshot fndecl 2 24964 NULL
151006 +enable_so_outmsg_len_hvutil_transport_24966 outmsg_len hvutil_transport 0 24966 NULL
151007 +enable_so_accent_table_size_vardecl_24972 accent_table_size vardecl 0 24972 NULL
151008 +enable_so_pppol2tp_sendmsg_fndecl_24975 pppol2tp_sendmsg fndecl 3 24975 NULL nohasharray
151009 +enable_so_system_dir_blkno_ocfs2_super_24975 system_dir_blkno ocfs2_super 0 24975 &enable_so_pppol2tp_sendmsg_fndecl_24975
151010 +enable_so_vringh_iov_pull_user_fndecl_24984 vringh_iov_pull_user fndecl 3 24984 NULL
151011 +enable_so___clone_and_map_data_bio_fndecl_24985 __clone_and_map_data_bio fndecl 3 24985 NULL
151012 +enable_so_dr_suballoc_bit_ocfs2_dx_root_block_24992 dr_suballoc_bit ocfs2_dx_root_block 0 24992 NULL
151013 +enable_so_ql_process_mac_rx_page_fndecl_24996 ql_process_mac_rx_page fndecl 5-4 24996 NULL
151014 +enable_so___rh_find_fndecl_24997 __rh_find fndecl 2 24997 NULL
151015 +enable_so_jfs_extendfs_fndecl_25001 jfs_extendfs fndecl 3-2 25001 NULL
151016 +enable_so_default_density_st_modedef_25006 default_density st_modedef 0 25006 NULL
151017 +enable_so_xfrm_state_mtu_fndecl_25007 xfrm_state_mtu fndecl 0-2 25007 NULL
151018 +enable_so_ifx_spi_write_fndecl_25016 ifx_spi_write fndecl 3 25016 NULL
151019 +enable_so__rtl_usb_tx_urb_setup_fndecl_25024 _rtl_usb_tx_urb_setup fndecl 3 25024 NULL
151020 +enable_so_vlan_cq_enet_rq_desc_25028 vlan cq_enet_rq_desc 0 25028 NULL
151021 +enable_so_persistent_status_fndecl_25029 persistent_status fndecl 4 25029 NULL
151022 +enable_so_crc_size_cas_25030 crc_size cas 0 25030 NULL
151023 +enable_so_pagesize_nand_flash_dev_25033 pagesize nand_flash_dev 0 25033 NULL
151024 +enable_so_bnx2fc_process_unsol_compl_fndecl_25035 bnx2fc_process_unsol_compl fndecl 2 25035 NULL
151025 +enable_so_db_free_next_ocfs2_dir_block_trailer_25041 db_free_next ocfs2_dir_block_trailer 0 25041 NULL
151026 +enable_so_stv0299_readregs_fndecl_25043 stv0299_readregs fndecl 4 25043 NULL
151027 +enable_so_in_max_chans_snd_card_asihpi_25063 in_max_chans snd_card_asihpi 0 25063 NULL
151028 +enable_so_ovl_alloc_entry_fndecl_25069 ovl_alloc_entry fndecl 1 25069 NULL
151029 +enable_so_buffer_size_snd_compr_runtime_25072 buffer_size snd_compr_runtime 0 25072 NULL nohasharray
151030 +enable_so_vme_user_write_fndecl_25072 vme_user_write fndecl 3 25072 &enable_so_buffer_size_snd_compr_runtime_25072
151031 +enable_so_ocfs2_truncate_rec_fndecl_25080 ocfs2_truncate_rec fndecl 7 25080 NULL
151032 +enable_so_transfer_snd_pcm_plugin_25081 transfer snd_pcm_plugin 0 25081 NULL
151033 +enable_so_length_bus_request_25082 length bus_request 0 25082 NULL
151034 +enable_so_id_count_ocfs2_inline_data_25084 id_count ocfs2_inline_data 0 25084 NULL nohasharray
151035 +enable_so_k_offset_offset_v1_25084 k_offset offset_v1 0 25084 &enable_so_id_count_ocfs2_inline_data_25084
151036 +enable_so_dwc3_prepare_one_trb_fndecl_25092 dwc3_prepare_one_trb fndecl 4 25092 NULL
151037 +enable_so_coff_ddb_input_25097 coff ddb_input 0 25097 NULL
151038 +enable_so_namelen_xfs_attr_sf_entry_25099 namelen xfs_attr_sf_entry 0 25099 NULL
151039 +enable_so_num_pbls_ocrdma_hw_mr_25102 num_pbls ocrdma_hw_mr 0 25102 NULL
151040 +enable_so_compat_sys_select_fndecl_25104 compat_sys_select fndecl 1 25104 NULL
151041 +enable_so_vbi_height_au0828_dev_25107 vbi_height au0828_dev 0 25107 NULL
151042 +enable_so_fsm_init_fndecl_25109 fsm_init fndecl 2 25109 NULL
151043 +enable_so_blen_if_spi_packet_25117 blen if_spi_packet 0 25117 NULL
151044 +enable_so_max_sge_ipath_rq_25132 max_sge ipath_rq 0 25132 NULL nohasharray
151045 +enable_so_i40e_allocate_virt_mem_d_fndecl_25132 i40e_allocate_virt_mem_d fndecl 3 25132 &enable_so_max_sge_ipath_rq_25132
151046 +enable_so_snd_interval_step_fndecl_25134 snd_interval_step fndecl 2 25134 NULL
151047 +enable_so_mapping_level_fndecl_25135 mapping_level fndecl 0-2 25135 NULL nohasharray
151048 +enable_so_gb_len_nfc_hci_dev_25135 gb_len nfc_hci_dev 0 25135 &enable_so_mapping_level_fndecl_25135
151049 +enable_so_s_first_data_block_ext3_super_block_25141 s_first_data_block ext3_super_block 0 25141 NULL
151050 +enable_so_hfreq___fb_timings_25142 hfreq __fb_timings 0 25142 NULL
151051 +enable_so_ocfs2_init_xattr_bucket_fndecl_25146 ocfs2_init_xattr_bucket fndecl 2 25146 NULL
151052 +enable_so_gnttab_alloc_pages_fndecl_25149 gnttab_alloc_pages fndecl 1 25149 NULL
151053 +enable_so_SyS_pselect6_fndecl_25153 SyS_pselect6 fndecl 1 25153 NULL
151054 +enable_so_numchips_cfi_private_25154 numchips cfi_private 0 25154 NULL
151055 +enable_so_iopm_base_vardecl_svm_c_25155 iopm_base vardecl_svm.c 0 25155 NULL
151056 +enable_so_create_table_fndecl_25158 create_table fndecl 2 25158 NULL
151057 +enable_so_si476x_core_send_command_fndecl_25160 si476x_core_send_command fndecl 4-6 25160 NULL
151058 +enable_so_max_transfer_size_mvumi_hba_25161 max_transfer_size mvumi_hba 0 25161 NULL
151059 +enable_so_width_emmaprp_q_data_25163 width emmaprp_q_data 0 25163 NULL
151060 +enable_so_s_writesize_logfs_super_25176 s_writesize logfs_super 0 25176 NULL
151061 +enable_so_btrfs_create_repair_bio_fndecl_25181 btrfs_create_repair_bio fndecl 5 25181 NULL
151062 +enable_so_heapstart_sis_video_info_25184 heapstart sis_video_info 0 25184 NULL
151063 +enable_so_i40e_dbg_dump_read_fndecl_25188 i40e_dbg_dump_read fndecl 3 25188 NULL
151064 +enable_so_il_dbgfs_disable_ht40_write_fndecl_25194 il_dbgfs_disable_ht40_write fndecl 3 25194 NULL
151065 +enable_so_run_filter_fndecl_25196 run_filter fndecl 0-3 25196 NULL
151066 +enable_so_iso_in_endp_ttusbir_25197 iso_in_endp ttusbir 0 25197 NULL nohasharray
151067 +enable_so_SyS_fgetxattr_fndecl_25197 SyS_fgetxattr fndecl 4 25197 &enable_so_iso_in_endp_ttusbir_25197
151068 +enable_so_do_shrink_fndecl_25198 do_shrink fndecl 3-2 25198 NULL
151069 +enable_so_backing_dev_len_disk_conf_25199 backing_dev_len disk_conf 0 25199 NULL
151070 +enable_so_ath9k_hw_ar9287_dump_eeprom_fndecl_25203 ath9k_hw_ar9287_dump_eeprom fndecl 4-5 25203 NULL nohasharray
151071 +enable_so_size_ioc_sts_mv_dtd_25203 size_ioc_sts mv_dtd 0 25203 &enable_so_ath9k_hw_ar9287_dump_eeprom_fndecl_25203
151072 +enable_so_ux500_regulator_debug_init_fndecl_25207 ux500_regulator_debug_init fndecl 3 25207 NULL
151073 +enable_so_eth_get_headlen_fndecl_25213 eth_get_headlen fndecl 0-2 25213 NULL
151074 +enable_so_ocfs2_xattr_bucket_value_truncate_fndecl_25220 ocfs2_xattr_bucket_value_truncate fndecl 4 25220 NULL
151075 +enable_so_mirror_status_fndecl_25224 mirror_status fndecl 5 25224 NULL nohasharray
151076 +enable_so_truncate_partial_data_page_fndecl_25224 truncate_partial_data_page fndecl 2 25224 &enable_so_mirror_status_fndecl_25224 nohasharray
151077 +enable_so_account_fndecl_25224 account fndecl 0-4-2 25224 &enable_so_truncate_partial_data_page_fndecl_25224
151078 +enable_so_nand_bch_init_fndecl_25227 nand_bch_init fndecl 3-2 25227 NULL
151079 +enable_so_jumpshot_read_data_fndecl_25228 jumpshot_read_data fndecl 4 25228 NULL
151080 +enable_so_validate_checkpoint_fndecl_25229 validate_checkpoint fndecl 2 25229 NULL
151081 +enable_so_regcache_rbtree_insert_to_block_fndecl_25230 regcache_rbtree_insert_to_block fndecl 3-4 25230 NULL
151082 +enable_so_max_dma_mask_efx_nic_type_25233 max_dma_mask efx_nic_type 0 25233 NULL
151083 +enable_so_spy_number_iw_spy_data_25234 spy_number iw_spy_data 0 25234 NULL
151084 +enable_so_offset_zatm_pool_info_25250 offset zatm_pool_info 0 25250 NULL
151085 +enable_so_fpnum_omap3isp_ccdc_fpc_25254 fpnum omap3isp_ccdc_fpc 0 25254 NULL
151086 +enable_so_of_property_read_string_helper_fndecl_25257 of_property_read_string_helper fndecl 0 25257 NULL
151087 +enable_so_ar5523_cmd_fndecl_25261 ar5523_cmd fndecl 4 25261 NULL
151088 +enable_so_start_page_swap_extent_25262 start_page swap_extent 0 25262 NULL nohasharray
151089 +enable_so_first_cluster_group_blkno_ocfs2_super_25262 first_cluster_group_blkno ocfs2_super 0 25262 &enable_so_start_page_swap_extent_25262
151090 +enable_so_stk_allocate_buffers_fndecl_25264 stk_allocate_buffers fndecl 2 25264 NULL
151091 +enable_so_svc_create_fndecl_25270 svc_create fndecl 2 25270 NULL
151092 +enable_so_register_count_acpi_gpe_block_info_25272 register_count acpi_gpe_block_info 0 25272 NULL
151093 +enable_so_collapse_huge_page_fndecl_25281 collapse_huge_page fndecl 2 25281 NULL
151094 +enable_so_dst_put_ci_fndecl_25284 dst_put_ci fndecl 3 25284 NULL
151095 +enable_so_in_n_analog_pcm_runtime_25285 in_n_analog pcm_runtime 0 25285 NULL
151096 +enable_so___install_special_mapping_fndecl_25286 __install_special_mapping fndecl 3-2 25286 NULL
151097 +enable_so_ex_bn_extent_s_25293 ex_bn extent_s 0 25293 NULL
151098 +enable_so_cropw_val_pvr2_hdw_25312 cropw_val pvr2_hdw 0 25312 NULL
151099 +enable_so_fw_size_bcm203x_data_25314 fw_size bcm203x_data 0 25314 NULL
151100 +enable_so_iommu_bus_base_vardecl_amd_gart_64_c_25315 iommu_bus_base vardecl_amd_gart_64.c 0 25315 NULL
151101 +enable_so_width_deinterlace_q_data_25337 width deinterlace_q_data 0 25337 NULL
151102 +enable_so_vc_init_fndecl_25338 vc_init fndecl 2-3 25338 NULL
151103 +enable_so_enc_key_size_ecryptfs_key_record_25340 enc_key_size ecryptfs_key_record 0 25340 NULL nohasharray
151104 +enable_so_bytesperline_zoran_v4l_settings_25340 bytesperline zoran_v4l_settings 0 25340 &enable_so_enc_key_size_ecryptfs_key_record_25340 nohasharray
151105 +enable_so_xfs_inobt_lookup_fndecl_25340 xfs_inobt_lookup fndecl 2 25340 &enable_so_bytesperline_zoran_v4l_settings_25340
151106 +enable_so_init_data_size_il4965_firmware_pieces_25346 init_data_size il4965_firmware_pieces 0 25346 NULL nohasharray
151107 +enable_so_svc_meta_len_htc_conn_service_msg_25346 svc_meta_len htc_conn_service_msg 0 25346 &enable_so_init_data_size_il4965_firmware_pieces_25346
151108 +enable_so_skb_add_rx_frag_fndecl_25355 skb_add_rx_frag fndecl 2-5-4 25355 NULL
151109 +enable_so_determine_rate_clk_ops_25357 determine_rate clk_ops 0 25357 NULL nohasharray
151110 +enable_so_spi_rd_buf_fndecl_25357 spi_rd_buf fndecl 4 25357 &enable_so_determine_rate_clk_ops_25357
151111 +enable_so___mptctl_ioctl_fndecl_25360 __mptctl_ioctl fndecl 2 25360 NULL
151112 +enable_so_bfs_move_block_fndecl_25369 bfs_move_block fndecl 1-2 25369 NULL
151113 +enable_so_encode_string_fndecl_25371 encode_string fndecl 2 25371 NULL
151114 +enable_so_sddr55_bulk_transport_fndecl_25377 sddr55_bulk_transport fndecl 4 25377 NULL nohasharray
151115 +enable_so_mt312_write_fndecl_25377 mt312_write fndecl 4 25377 &enable_so_sddr55_bulk_transport_fndecl_25377
151116 +enable_so_unix_dgram_recvmsg_fndecl_25379 unix_dgram_recvmsg fndecl 3 25379 NULL
151117 +enable_so_bio_copy_kern_fndecl_25382 bio_copy_kern fndecl 3 25382 NULL
151118 +enable_so_grefs_per_grant_frame_vardecl_grant_table_c_25386 grefs_per_grant_frame vardecl_grant-table.c 0 25386 NULL nohasharray
151119 +enable_so_req_buf_size_f_uac1_opts_25386 req_buf_size f_uac1_opts 0 25386 &enable_so_grefs_per_grant_frame_vardecl_grant_table_c_25386
151120 +enable_so_nr_channels_timb_dma_platform_data_25387 nr_channels timb_dma_platform_data 0 25387 NULL
151121 +enable_so_tda18218_wr_regs_fndecl_25388 tda18218_wr_regs fndecl 4 25388 NULL
151122 +enable_so_xlog_write_start_rec_fndecl_25394 xlog_write_start_rec fndecl 0 25394 NULL
151123 +enable_so_brcmf_pcie_read_tcm16_fndecl_25401 brcmf_pcie_read_tcm16 fndecl 0 25401 NULL
151124 +enable_so_metromem_dma_metronomefb_par_25407 metromem_dma metronomefb_par 0 25407 NULL
151125 +enable_so_memblock_virt_alloc_try_nid_fndecl_25409 memblock_virt_alloc_try_nid fndecl 2-1 25409 NULL nohasharray
151126 +enable_so_memsize_t4_cq_25409 memsize t4_cq 0 25409 &enable_so_memblock_virt_alloc_try_nid_fndecl_25409
151127 +enable_so_snd_pcm_lib_read_transfer_fndecl_25411 snd_pcm_lib_read_transfer fndecl 5 25411 NULL
151128 +enable_so_nr_valid_peri_dma_pl330_platdata_25412 nr_valid_peri dma_pl330_platdata 0 25412 NULL
151129 +enable_so_entries_size_ebt_replace_kernel_25413 entries_size ebt_replace_kernel 0 25413 NULL
151130 +enable_so_image_len_gspca_dev_25419 image_len gspca_dev 0 25419 NULL
151131 +enable_so_find_rsb_fndecl_25421 find_rsb fndecl 3 25421 NULL
151132 +enable_so_hw_value_ieee80211_rate_25430 hw_value ieee80211_rate 0 25430 NULL
151133 +enable_so_num_bytes_btrfs_file_extent_item_25435 num_bytes btrfs_file_extent_item 0 25435 NULL
151134 +enable_so_i2c_write_fndecl_25439 i2c_write fndecl 4 25439 NULL
151135 +enable_so_alloc_vm_area_fndecl_25446 alloc_vm_area fndecl 1 25446 NULL
151136 +enable_so_ds_nvme_lbaf_25461 ds nvme_lbaf 0 25461 NULL
151137 +enable_so_tx_count_slgt_info_25462 tx_count slgt_info 0 25462 NULL
151138 +enable_so_sddr09_send_scsi_command_fndecl_25467 sddr09_send_scsi_command fndecl 3 25467 NULL
151139 +enable_so_size_user_regset_25473 size user_regset 0 25473 NULL nohasharray
151140 +enable_so_viafb_vt1636_proc_write_fndecl_25473 viafb_vt1636_proc_write fndecl 3 25473 &enable_so_size_user_regset_25473
151141 +enable_so_snd_pcm_oss_set_fragment_fndecl_25474 snd_pcm_oss_set_fragment fndecl 2 25474 NULL
151142 +enable_so_chunk_sectors_mddev_25484 chunk_sectors mddev 0 25484 NULL
151143 +enable_so_got_frame_fndecl_25487 got_frame fndecl 2 25487 NULL
151144 +enable_so___get_data_block_fndecl_25493 __get_data_block fndecl 2 25493 NULL
151145 +enable_so_rx_transfer_len_hif_device_usb_25494 rx_transfer_len hif_device_usb 0 25494 NULL nohasharray
151146 +enable_so_next_cmd_len_sg_fd_25494 next_cmd_len sg_fd 0 25494 &enable_so_rx_transfer_len_hif_device_usb_25494
151147 +enable_so_max_buckets_out_mpt_lan_priv_25498 max_buckets_out mpt_lan_priv 0 25498 NULL
151148 +enable_so_count_seq_file_25501 count seq_file 0 25501 NULL
151149 +enable_so_blk_init_tags_fndecl_25511 blk_init_tags fndecl 1 25511 NULL
151150 +enable_so_SYSC_kexec_file_load_fndecl_25513 SYSC_kexec_file_load fndecl 3 25513 NULL
151151 +enable_so_pppoe_recvmsg_fndecl_25514 pppoe_recvmsg fndecl 3 25514 NULL
151152 +enable_so_blocks_fuse_attr_25517 blocks fuse_attr 0 25517 NULL
151153 +enable_so_smk_write_unconfined_fndecl_25530 smk_write_unconfined fndecl 3 25530 NULL
151154 +enable_so_screen_fb_size_vardecl_hyperv_fb_c_25531 screen_fb_size vardecl_hyperv_fb.c 0 25531 NULL
151155 +enable_so_IOCRequestFrameSize_mpt2sas_facts_25540 IOCRequestFrameSize mpt2sas_facts 0 25540 NULL nohasharray
151156 +enable_so_ioh_gpio_setup_fndecl_25540 ioh_gpio_setup fndecl 2 25540 &enable_so_IOCRequestFrameSize_mpt2sas_facts_25540
151157 +enable_so_ipath_ibmaxlen_ipath_devdata_25555 ipath_ibmaxlen ipath_devdata 0 25555 NULL
151158 +enable_so_width_efifb_dmi_info_25557 width efifb_dmi_info 0 25557 NULL
151159 +enable_so_udf_extend_file_fndecl_25558 udf_extend_file fndecl 2 25558 NULL
151160 +enable_so_max_beb_per1024_ubi_attach_req_25573 max_beb_per1024 ubi_attach_req 0 25573 NULL nohasharray
151161 +enable_so_frame_length_sh_eth_rxdesc_25573 frame_length sh_eth_rxdesc 0 25573 &enable_so_max_beb_per1024_ubi_attach_req_25573
151162 +enable_so_num_stations_iwl_priv_25574 num_stations iwl_priv 0 25574 NULL nohasharray
151163 +enable_so_inode_set_bytes_fndecl_25574 inode_set_bytes fndecl 2 25574 &enable_so_num_stations_iwl_priv_25574
151164 +enable_so_lpage_size_genwqe_sgl_25578 lpage_size genwqe_sgl 0 25578 NULL
151165 +enable_so_bytes_per_pixel_usbvision_v4l2_format_st_25584 bytes_per_pixel usbvision_v4l2_format_st 0 25584 NULL
151166 +enable_so_cifs_mapchar_fndecl_25586 cifs_mapchar fndecl 0 25586 NULL
151167 +enable_so_s_partition_len_udf_part_map_25593 s_partition_len udf_part_map 0 25593 NULL
151168 +enable_so_udelay_test_write_fndecl_25596 udelay_test_write fndecl 3 25596 NULL
151169 +enable_so_max_cmd_sg_entries_ctlr_info_25601 max_cmd_sg_entries ctlr_info 0 25601 NULL
151170 +enable_so_blkcipher_aead_walk_virt_block_fndecl_25612 blkcipher_aead_walk_virt_block fndecl 4 25612 NULL
151171 +enable_so_matroxfb_test_and_set_rounding_fndecl_25619 matroxfb_test_and_set_rounding fndecl 0-2 25619 NULL nohasharray
151172 +enable_so_size_hpi_message_header_25619 size hpi_message_header 0 25619 &enable_so_matroxfb_test_and_set_rounding_fndecl_25619
151173 +enable_so_nfs4_xattr_get_nfs4_label_fndecl_25623 nfs4_xattr_get_nfs4_label fndecl 4 25623 NULL
151174 +enable_so_status_xen_netif_rx_response_25634 status xen_netif_rx_response 0 25634 NULL
151175 +enable_so_nfs_map_numeric_to_string_fndecl_25642 nfs_map_numeric_to_string fndecl 0 25642 NULL
151176 +enable_so_profile_replace_fndecl_25647 profile_replace fndecl 3 25647 NULL nohasharray
151177 +enable_so_snd_rawmidi_receive_fndecl_25647 snd_rawmidi_receive fndecl 3 25647 &enable_so_profile_replace_fndecl_25647
151178 +enable_so_getxattr_inode_operations_25660 getxattr inode_operations 0 25660 NULL
151179 +enable_so_min_bytes_needed_fndecl_25664 min_bytes_needed fndecl 0 25664 NULL
151180 +enable_so_HWPartsNum_qinfo_chip_25666 HWPartsNum qinfo_chip 0 25666 NULL
151181 +enable_so_nvme_trans_log_info_exceptions_fndecl_25670 nvme_trans_log_info_exceptions fndecl 3 25670 NULL
151182 +enable_so_ieee80211_if_fmt_rc_rateidx_mask_2ghz_fndecl_25672 ieee80211_if_fmt_rc_rateidx_mask_2ghz fndecl 3 25672 NULL
151183 +enable_so_hash_tcindex_data_25674 hash tcindex_data 0 25674 NULL
151184 +enable_so_layout_mdp_superblock_s_25680 layout mdp_superblock_s 0 25680 NULL
151185 +enable_so_usnic_vnic_dump_fndecl_25685 usnic_vnic_dump fndecl 3 25685 NULL
151186 +enable_so_persistent_ram_ecc_string_fndecl_25699 persistent_ram_ecc_string fndecl 0 25699 NULL
151187 +enable_so_xh_num_buckets_ocfs2_xattr_header_25701 xh_num_buckets ocfs2_xattr_header 0 25701 NULL
151188 +enable_so_sysctl_numa_balancing_scan_size_vardecl_25704 sysctl_numa_balancing_scan_size vardecl 0 25704 NULL nohasharray
151189 +enable_so_ir_post_altera_jtag_25704 ir_post altera_jtag 0 25704 &enable_so_sysctl_numa_balancing_scan_size_vardecl_25704
151190 +enable_so_cmnd_out_ep_vub300_mmc_host_25705 cmnd_out_ep vub300_mmc_host 0 25705 NULL nohasharray
151191 +enable_so_get_bio_block_fndecl_25705 get_bio_block fndecl 0 25705 &enable_so_cmnd_out_ep_vub300_mmc_host_25705
151192 +enable_so_ntfs_file_fsync_fndecl_25706 ntfs_file_fsync fndecl 2 25706 NULL
151193 +enable_so_max_cid_space_cnic_local_25708 max_cid_space cnic_local 0 25708 NULL
151194 +enable_so___sector_request_25709 __sector request 0 25709 NULL
151195 +enable_so_vfd_write_fndecl_25710 vfd_write fndecl 3 25710 NULL
151196 +enable_so_buf_count_drm_buf_entry_25716 buf_count drm_buf_entry 0 25716 NULL
151197 +enable_so_svc_max_payload_fndecl_25718 svc_max_payload fndecl 0 25718 NULL
151198 +enable_so_data_cnt_adv_scsi_req_q_25725 data_cnt adv_scsi_req_q 0 25725 NULL nohasharray
151199 +enable_so_SyS_fsetxattr_fndecl_25725 SyS_fsetxattr fndecl 4 25725 &enable_so_data_cnt_adv_scsi_req_q_25725
151200 +enable_so_raid1_resize_fndecl_25735 raid1_resize fndecl 2 25735 NULL
151201 +enable_so_res_cnt_common_sol_cqe_25739 res_cnt common_sol_cqe 0 25739 NULL
151202 +enable_so_ms_read_copyblock_fndecl_25740 ms_read_copyblock fndecl 7 25740 NULL
151203 +enable_so_ext4_da_map_blocks_fndecl_25744 ext4_da_map_blocks fndecl 2 25744 NULL
151204 +enable_so_srv_max_reply_size_ptlrpc_service_25746 srv_max_reply_size ptlrpc_service 0 25746 NULL
151205 +enable_so_iov_iter_kvec_fndecl_25747 iov_iter_kvec fndecl 5 25747 NULL
151206 +enable_so_tics_vardecl_hfcpci_c_25752 tics vardecl_hfcpci.c 0 25752 NULL
151207 +enable_so_burst_kirkwood_dma_data_25753 burst kirkwood_dma_data 0 25753 NULL
151208 +enable_so_pvr2_i2c_write_fndecl_25754 pvr2_i2c_write fndecl 4 25754 NULL nohasharray
151209 +enable_so___blk_end_request_fndecl_25754 __blk_end_request fndecl 3 25754 &enable_so_pvr2_i2c_write_fndecl_25754
151210 +enable_so_buffer_size_command_25757 buffer_size command 0 25757 NULL
151211 +enable_so_regmap_range_read_file_fndecl_25764 regmap_range_read_file fndecl 3 25764 NULL
151212 +enable_so_max_memblock_type_25766 max memblock_type 0 25766 NULL
151213 +enable_so_event_len_fanotify_event_metadata_25772 event_len fanotify_event_metadata 0 25772 NULL
151214 +enable_so_btrfs_inode_extref_name_len_fndecl_25779 btrfs_inode_extref_name_len fndecl 0 25779 NULL
151215 +enable_so_hpet_readl_fndecl_25794 hpet_readl fndecl 0 25794 NULL
151216 +enable_so_pg_base_nfs_pgio_mirror_25798 pg_base nfs_pgio_mirror 0 25798 NULL
151217 +enable_so_stolen_base_i915_gem_mm_25807 stolen_base i915_gem_mm 0 25807 NULL
151218 +enable_so_edp_bpp_intel_vbt_data_25812 edp_bpp intel_vbt_data 0 25812 NULL
151219 +enable_so_sgentry_align_brcmf_sdio_25813 sgentry_align brcmf_sdio 0 25813 NULL nohasharray
151220 +enable_so_lf_depth_gfs2_leaf_25813 lf_depth gfs2_leaf 0 25813 &enable_so_sgentry_align_brcmf_sdio_25813
151221 +enable_so_keys_proc_write_fndecl_25819 keys_proc_write fndecl 3 25819 NULL
151222 +enable_so___kfifo_in_fndecl_25822 __kfifo_in fndecl 3-0 25822 NULL
151223 +enable_so_ext4_kvmalloc_fndecl_25823 ext4_kvmalloc fndecl 1 25823 NULL
151224 +enable_so_depth_cx25821_fmt_25832 depth cx25821_fmt 0 25832 NULL
151225 +enable_so_cookie_offset_nfsd4_readdir_25834 cookie_offset nfsd4_readdir 0 25834 NULL
151226 +enable_so_mmc_test_area_map_fndecl_25839 mmc_test_area_map fndecl 2 25839 NULL
151227 +enable_so_start_cxgb4_range_25845 start cxgb4_range 0 25845 NULL
151228 +enable_so_ric_ies_len_cfg80211_ft_event_params_25853 ric_ies_len cfg80211_ft_event_params 0 25853 NULL
151229 +enable_so_do_tune_cpucache_fndecl_25855 do_tune_cpucache fndecl 3-4 25855 NULL
151230 +enable_so_table_size_drm_ati_pcigart_info_25856 table_size drm_ati_pcigart_info 0 25856 NULL
151231 +enable_so_hash_ipportnet4_expire_fndecl_25857 hash_ipportnet4_expire fndecl 4 25857 NULL
151232 +enable_so_max_keysize_blkcipher_alg_25859 max_keysize blkcipher_alg 0 25859 NULL
151233 +enable_so_num_sg_lists_vardecl_25860 num_sg_lists vardecl 0 25860 NULL
151234 +enable_so_usVBlanking_Time__ATOM_DTD_FORMAT_25867 usVBlanking_Time _ATOM_DTD_FORMAT 0 25867 NULL
151235 +enable_so_vlan_dev_change_mtu_fndecl_25871 vlan_dev_change_mtu fndecl 2 25871 NULL
151236 +enable_so_buf_size_regmap_format_25880 buf_size regmap_format 0 25880 NULL
151237 +enable_so_alloc_tx_struct_fndecl_25886 alloc_tx_struct fndecl 1 25886 NULL
151238 +enable_so_sb_agblocks_xfs_sb_25887 sb_agblocks xfs_sb 0 25887 NULL
151239 +enable_so_rangehigh_v4l2_hw_freq_seek_25892 rangehigh v4l2_hw_freq_seek 0 25892 NULL
151240 +enable_so_i915_gem_batch_pool_get_fndecl_25893 i915_gem_batch_pool_get fndecl 2 25893 NULL
151241 +enable_so_walk_page_range_fndecl_25894 walk_page_range fndecl 0 25894 NULL
151242 +enable_so_vram_remap_vardecl_uvesafb_c_25907 vram_remap vardecl_uvesafb.c 0 25907 NULL
151243 +enable_so_sit_blocks_sit_info_25908 sit_blocks sit_info 0 25908 NULL
151244 +enable_so_root_resize_25911 root resize 0 25911 NULL
151245 +enable_so_mtd_concat_create_fndecl_25923 mtd_concat_create fndecl 2 25923 NULL nohasharray
151246 +enable_so_d40_pool_lli_alloc_fndecl_25923 d40_pool_lli_alloc fndecl 3 25923 &enable_so_mtd_concat_create_fndecl_25923
151247 +enable_so_get_kcore_size_fndecl_25930 get_kcore_size fndecl 0 25930 NULL
151248 +enable_so_ioat_ring_alloc_order_vardecl_25933 ioat_ring_alloc_order vardecl 0 25933 NULL
151249 +enable_so_first_logical_byte_fndecl_25936 first_logical_byte fndecl 0 25936 NULL
151250 +enable_so_smk_write_onlycap_fndecl_25939 smk_write_onlycap fndecl 3 25939 NULL
151251 +enable_so___xfs_bmbt_get_all_fndecl_25952 __xfs_bmbt_get_all fndecl 2-1 25952 NULL
151252 +enable_so_lro_xid_fc_lport_25953 lro_xid fc_lport 0 25953 NULL
151253 +enable_so_cyttsp_spi_read_block_data_fndecl_25954 cyttsp_spi_read_block_data fndecl 4 25954 NULL
151254 +enable_so_fib_info_hash_move_fndecl_25959 fib_info_hash_move fndecl 3 25959 NULL
151255 +enable_so_len_xsd_sockmsg_25963 len xsd_sockmsg 0 25963 NULL
151256 +enable_so_ieee802154_hdr_get_sechdr_fndecl_25965 ieee802154_hdr_get_sechdr fndecl 0 25965 NULL
151257 +enable_so__iwl_dbgfs_sram_write_fndecl_25972 _iwl_dbgfs_sram_write fndecl 3 25972 NULL
151258 +enable_so_tx_max_out_mpt_lan_priv_25974 tx_max_out mpt_lan_priv 0 25974 NULL
151259 +enable_so_vscnprintf_fndecl_25984 vscnprintf fndecl 0 25984 NULL
151260 +enable_so_ns_blocksize_bits_the_nilfs_25985 ns_blocksize_bits the_nilfs 0 25985 NULL
151261 +enable_so_split_state_fndecl_25992 split_state fndecl 4 25992 NULL
151262 +enable_so_vga_vram_size_vardecl_vgacon_c_25995 vga_vram_size vardecl_vgacon.c 0 25995 NULL
151263 +enable_so_get_sum_page_fndecl_26000 get_sum_page fndecl 2 26000 NULL
151264 +enable_so_mtrr_calc_range_state_fndecl_26002 mtrr_calc_range_state fndecl 3 26002 NULL
151265 +enable_so_lustre_msg_size_v2_fndecl_26005 lustre_msg_size_v2 fndecl 0 26005 NULL
151266 +enable_so_len_ieee_types_header_26006 len ieee_types_header 0 26006 NULL
151267 +enable_so_udplite_getfrag_fndecl_26012 udplite_getfrag fndecl 4 26012 NULL
151268 +enable_so_kvm_inject_realmode_interrupt_fndecl_26018 kvm_inject_realmode_interrupt fndecl 3 26018 NULL nohasharray
151269 +enable_so_ufs_load_cylinder_fndecl_26018 ufs_load_cylinder fndecl 2 26018 &enable_so_kvm_inject_realmode_interrupt_fndecl_26018
151270 +enable_so___gfs2_fallocate_fndecl_26035 __gfs2_fallocate fndecl 4-3 26035 NULL
151271 +enable_so_psb_intel_crtc_clock_get_fndecl_26037 psb_intel_crtc_clock_get fndecl 0 26037 NULL nohasharray
151272 +enable_so_btrfs_lookup_data_extent_fndecl_26037 btrfs_lookup_data_extent fndecl 3-2 26037 &enable_so_psb_intel_crtc_clock_get_fndecl_26037
151273 +enable_so_EraseSize_NFTLrecord_26040 EraseSize NFTLrecord 0 26040 NULL
151274 +enable_so_ll_recv_fndecl_26047 ll_recv fndecl 3 26047 NULL
151275 +enable_so_iwlagn_hwrate_to_tx_control_fndecl_26049 iwlagn_hwrate_to_tx_control fndecl 2 26049 NULL
151276 +enable_so_md_template_size_netxen_minidump_26050 md_template_size netxen_minidump 0 26050 NULL
151277 +enable_so_picolcd_debug_eeprom_read_fndecl_26054 picolcd_debug_eeprom_read fndecl 3 26054 NULL
151278 +enable_so__pcol_init_fndecl_26056 _pcol_init fndecl 2 26056 NULL
151279 +enable_so_physical_for_dev_replace_scrub_copy_nocow_ctx_26059 physical_for_dev_replace scrub_copy_nocow_ctx 0 26059 NULL
151280 +enable_so_dataflash_read_user_otp_fndecl_26075 dataflash_read_user_otp fndecl 3-2 26075 NULL nohasharray
151281 +enable_so_ep0_write_fndecl_26075 ep0_write fndecl 3 26075 &enable_so_dataflash_read_user_otp_fndecl_26075
151282 +enable_so_current_rate_il_scale_tbl_info_26077 current_rate il_scale_tbl_info 0 26077 NULL
151283 +enable_so_fratio_arizona_fll_cfg_26082 fratio arizona_fll_cfg 0 26082 NULL
151284 +enable_so_tx_bus_ifx_spi_device_26083 tx_bus ifx_spi_device 0 26083 NULL
151285 +enable_so_remap_to_origin_then_cache_fndecl_26084 remap_to_origin_then_cache fndecl 4 26084 NULL
151286 +enable_so_skb_buf_size_vmxnet3_adapter_26088 skb_buf_size vmxnet3_adapter 0 26088 NULL nohasharray
151287 +enable_so___sw_hweight32_fndecl_26088 __sw_hweight32 fndecl 0 26088 &enable_so_skb_buf_size_vmxnet3_adapter_26088
151288 +enable_so_vmci_transport_set_max_buffer_size_fndecl_26089 vmci_transport_set_max_buffer_size fndecl 2 26089 NULL
151289 +enable_so_idmap_pipe_downcall_fndecl_26092 idmap_pipe_downcall fndecl 3 26092 NULL
151290 +enable_so_qp_host_alloc_queue_fndecl_26101 qp_host_alloc_queue fndecl 1 26101 NULL
151291 +enable_so_used_bytes_ubi_volume_26113 used_bytes ubi_volume 0 26113 NULL
151292 +enable_so_log_store_fndecl_26118 log_store fndecl 8 26118 NULL
151293 +enable_so_blk_limits_max_hw_sectors_fndecl_26121 blk_limits_max_hw_sectors fndecl 2 26121 NULL
151294 +enable_so_maxflows_sfq_sched_data_26122 maxflows sfq_sched_data 0 26122 NULL
151295 +enable_so_generic_update_time_fndecl_26133 generic_update_time fndecl 0 26133 NULL
151296 +enable_so_ipwireless_ppp_mru_fndecl_26146 ipwireless_ppp_mru fndecl 0 26146 NULL
151297 +enable_so_hid_register_report_fndecl_26154 hid_register_report fndecl 3 26154 NULL
151298 +enable_so_sense_len_megasas_iocpacket_26161 sense_len megasas_iocpacket 0 26161 NULL
151299 +enable_so_nfs4_xattr_set_nfs4_label_fndecl_26162 nfs4_xattr_set_nfs4_label fndecl 4 26162 NULL
151300 +enable_so_fastListenDelay_ConfigRid_26165 fastListenDelay ConfigRid 0 26165 NULL
151301 +enable_so_r_bitcnt_tiger_hw_26171 r_bitcnt tiger_hw 0 26171 NULL
151302 +enable_so_src_sz_max_ce_attr_26172 src_sz_max ce_attr 0 26172 NULL
151303 +enable_so_ci_buffer_size_dlm_config_info_26176 ci_buffer_size dlm_config_info 0 26176 NULL
151304 +enable_so_iscsi_create_endpoint_fndecl_26186 iscsi_create_endpoint fndecl 1 26186 NULL
151305 +enable_so_video_vsize_solo_dev_26188 video_vsize solo_dev 0 26188 NULL
151306 +enable_so_level_guest_walkerEPT_26190 level guest_walkerEPT 0 26190 NULL
151307 +enable_so_len_ext4_encrypted_symlink_data_26199 len ext4_encrypted_symlink_data 0 26199 NULL
151308 +enable_so_et131x_change_mtu_fndecl_26203 et131x_change_mtu fndecl 2 26203 NULL
151309 +enable_so_SYSC_setdomainname_fndecl_26207 SYSC_setdomainname fndecl 2 26207 NULL
151310 +enable_so_data_len_kernel_ipmi_msg_26209 data_len kernel_ipmi_msg 0 26209 NULL nohasharray
151311 +enable_so_aic_common_of_init_fndecl_26209 aic_common_of_init fndecl 4 26209 &enable_so_data_len_kernel_ipmi_msg_26209
151312 +enable_so_s_log_zone_size_isofs_sb_info_26211 s_log_zone_size isofs_sb_info 0 26211 NULL
151313 +enable_so_dev_cnt_usnic_uiom_pd_26213 dev_cnt usnic_uiom_pd 0 26213 NULL
151314 +enable_so_hfsplus_submit_bio_fndecl_26217 hfsplus_submit_bio fndecl 2 26217 NULL
151315 +enable_so_ufx_handle_damage_fndecl_26219 ufx_handle_damage fndecl 5-4 26219 NULL nohasharray
151316 +enable_so_dr_post_altera_jtag_26219 dr_post altera_jtag 0 26219 &enable_so_ufx_handle_damage_fndecl_26219
151317 +enable_so_blk_queue_init_tags_fndecl_26227 blk_queue_init_tags fndecl 2 26227 NULL
151318 +enable_so_match_length_deflate_state_26231 match_length deflate_state 0 26231 NULL
151319 +enable_so_can_gather_numa_stats_fndecl_26254 can_gather_numa_stats fndecl 3 26254 NULL
151320 +enable_so_iwl_dbgfs_sram_write_fndecl_26260 iwl_dbgfs_sram_write fndecl 3 26260 NULL
151321 +enable_so_den_snd_ratden_26264 den snd_ratden 0 26264 NULL
151322 +enable_so_check_pages_isolated_fndecl_26267 check_pages_isolated fndecl 0 26267 NULL
151323 +enable_so_fw_realloc_buffer_fndecl_26275 fw_realloc_buffer fndecl 2 26275 NULL
151324 +enable_so_width_stk1160_26279 width stk1160 0 26279 NULL nohasharray
151325 +enable_so_n_hdlc_tty_write_fndecl_26279 n_hdlc_tty_write fndecl 4 26279 &enable_so_width_stk1160_26279
151326 +enable_so_simple_io_fndecl_26280 simple_io fndecl 4 26280 NULL nohasharray
151327 +enable_so_sys_connect_fndecl_26280 sys_connect fndecl 3 26280 &enable_so_simple_io_fndecl_26280
151328 +enable_so_send_write_fndecl_26285 send_write fndecl 6-5 26285 NULL
151329 +enable_so_tx_data_length_hso_serial_26287 tx_data_length hso_serial 0 26287 NULL
151330 +enable_so_wacom_led_putimage_fndecl_26291 wacom_led_putimage fndecl 4 26291 NULL
151331 +enable_so_hub_port_connect_fndecl_26292 hub_port_connect fndecl 2 26292 NULL
151332 +enable_so_members_count_dlm_space_26293 members_count dlm_space 0 26293 NULL
151333 +enable_so_channels_snd_pcm_runtime_26297 channels snd_pcm_runtime 0 26297 NULL nohasharray
151334 +enable_so_xskip_mt9t031_26297 xskip mt9t031 0 26297 &enable_so_channels_snd_pcm_runtime_26297
151335 +enable_so_model_data_size_oxygen_model_26304 model_data_size oxygen_model 0 26304 NULL
151336 +enable_so_at25_mem_read_fndecl_26314 at25_mem_read fndecl 3-4 26314 NULL
151337 +enable_so_drxdap_fasi_write_block_fndecl_26315 drxdap_fasi_write_block fndecl 3 26315 NULL
151338 +enable_so_irlan_connect_indication_fndecl_26316 irlan_connect_indication fndecl 5 26316 NULL nohasharray
151339 +enable_so_parent_btrfs_delayed_tree_ref_26316 parent btrfs_delayed_tree_ref 0 26316 &enable_so_irlan_connect_indication_fndecl_26316
151340 +enable_so_sys32_truncate64_fndecl_26330 sys32_truncate64 fndecl 2-3 26330 NULL nohasharray
151341 +enable_so_ocfs2_read_refcount_block_fndecl_26330 ocfs2_read_refcount_block fndecl 2 26330 &enable_so_sys32_truncate64_fndecl_26330
151342 +enable_so_omap_dump_tlb_entries_fndecl_26334 omap_dump_tlb_entries fndecl 3 26334 NULL
151343 +enable_so_fcoe_ctlr_send_keep_alive_fndecl_26335 fcoe_ctlr_send_keep_alive fndecl 3 26335 NULL
151344 +enable_so_maxchild_usb_device_26337 maxchild usb_device 0 26337 NULL
151345 +enable_so_alloc_ring_fndecl_26338 alloc_ring fndecl 2-4 26338 NULL
151346 +enable_so_ept_prefetch_gpte_fndecl_26343 ept_prefetch_gpte fndecl 4 26343 NULL
151347 +enable_so_blkdev_readpages_fndecl_26350 blkdev_readpages fndecl 4 26350 NULL nohasharray
151348 +enable_so_hugetlbfs_pagecache_present_fndecl_26350 hugetlbfs_pagecache_present fndecl 3 26350 &enable_so_blkdev_readpages_fndecl_26350
151349 +enable_so___ocfs2_remove_xattr_range_fndecl_26353 __ocfs2_remove_xattr_range fndecl 3-5-4 26353 NULL
151350 +enable_so_ioread16_fndecl_26365 ioread16 fndecl 0 26365 NULL nohasharray
151351 +enable_so_scsi_eh_prep_cmnd_fndecl_26365 scsi_eh_prep_cmnd fndecl 5 26365 &enable_so_ioread16_fndecl_26365
151352 +enable_so_max_mthca_alloc_26367 max mthca_alloc 0 26367 NULL
151353 +enable_so_xpnet_send_fndecl_26368 xpnet_send fndecl 3-4 26368 NULL nohasharray
151354 +enable_so_ts_tsid_gru_thread_state_26368 ts_tsid gru_thread_state 0 26368 &enable_so_xpnet_send_fndecl_26368
151355 +enable_so_buffer_length_TAG_TW_Ioctl_Driver_Command_26369 buffer_length TAG_TW_Ioctl_Driver_Command 0 26369 NULL
151356 +enable_so_blocksize_qce_ablkcipher_def_26370 blocksize qce_ablkcipher_def 0 26370 NULL
151357 +enable_so_ac_last_group_ocfs2_alloc_context_26384 ac_last_group ocfs2_alloc_context 0 26384 NULL
151358 +enable_so_dccp_sendmsg_fndecl_26385 dccp_sendmsg fndecl 3 26385 NULL
151359 +enable_so_mrp_attr_create_fndecl_26390 mrp_attr_create fndecl 3 26390 NULL
151360 +enable_so_lcd_write_fndecl_26394 lcd_write fndecl 3 26394 NULL nohasharray
151361 +enable_so___krealloc_fndecl_26394 __krealloc fndecl 2 26394 &enable_so_lcd_write_fndecl_26394
151362 +enable_so_get_user_cpu_mask_fndecl_26398 get_user_cpu_mask fndecl 2 26398 NULL
151363 +enable_so_convert_ctx_access_bpf_verifier_ops_26399 convert_ctx_access bpf_verifier_ops 0 26399 NULL
151364 +enable_so_omap_hwmod_count_resources_fndecl_26400 omap_hwmod_count_resources fndecl 0 26400 NULL nohasharray
151365 +enable_so_ea_init_fndecl_26400 ea_init fndecl 5 26400 &enable_so_omap_hwmod_count_resources_fndecl_26400
151366 +enable_so_xhci_giveback_urb_in_irq_fndecl_26403 xhci_giveback_urb_in_irq fndecl 3 26403 NULL
151367 +enable_so_netlbl_catmap_walk_fndecl_26405 netlbl_catmap_walk fndecl 0-2 26405 NULL
151368 +enable_so_height_drm_mode_create_dumb_26406 height drm_mode_create_dumb 0 26406 NULL
151369 +enable_so_residualByteCnt_status_entry_26414 residualByteCnt status_entry 0 26414 NULL
151370 +enable_so_krealloc_fndecl_26415 krealloc fndecl 2 26415 NULL
151371 +enable_so_dma_generic_free_coherent_fndecl_26416 dma_generic_free_coherent fndecl 2 26416 NULL
151372 +enable_so_crtc_htotal_drm_display_mode_26418 crtc_htotal drm_display_mode 0 26418 NULL
151373 +enable_so_f2fs_map_bh_fndecl_26421 f2fs_map_bh fndecl 2 26421 NULL
151374 +enable_so_acpi_os_allocate_fndecl_26431 acpi_os_allocate fndecl 1 26431 NULL
151375 +enable_so_wtmax_nfs_fsinfo_26434 wtmax nfs_fsinfo 0 26434 NULL
151376 +enable_so_packets_snd_urb_ctx_26437 packets snd_urb_ctx 0 26437 NULL
151377 +enable_so_map_capacity_cw1200_queue_stats_26439 map_capacity cw1200_queue_stats 0 26439 NULL
151378 +enable_so_ocfs2_expand_nonsparse_inode_fndecl_26443 ocfs2_expand_nonsparse_inode fndecl 4-3 26443 NULL
151379 +enable_so_compute_pipe_count_kgd2kfd_shared_resources_26445 compute_pipe_count kgd2kfd_shared_resources 0 26445 NULL
151380 +enable_so_sierra_net_change_mtu_fndecl_26446 sierra_net_change_mtu fndecl 2 26446 NULL nohasharray
151381 +enable_so_max_req_size_mmc_host_26446 max_req_size mmc_host 0 26446 &enable_so_sierra_net_change_mtu_fndecl_26446
151382 +enable_so_size_aper_size_info_fixed_26447 size aper_size_info_fixed 0 26447 NULL
151383 +enable_so_qp_memcpy_to_queue_iov_fndecl_26456 qp_memcpy_to_queue_iov fndecl 5-2 26456 NULL nohasharray
151384 +enable_so___arch_hweight64_fndecl_26456 __arch_hweight64 fndecl 0 26456 &enable_so_qp_memcpy_to_queue_iov_fndecl_26456
151385 +enable_so_usbat_bulk_read_fndecl_26469 usbat_bulk_read fndecl 3 26469 NULL
151386 +enable_so_tpg_reset_source_fndecl_26472 tpg_reset_source fndecl 2-3 26472 NULL
151387 +enable_so_pbufsctxt_qib_devdata_26473 pbufsctxt qib_devdata 0 26473 NULL
151388 +enable_so_nr_kioctx_table_26477 nr kioctx_table 0 26477 NULL
151389 +enable_so_len_seq_buf_26481 len seq_buf 0 26481 NULL
151390 +enable_so_page_cache_next_hole_fndecl_26482 page_cache_next_hole fndecl 0-2 26482 NULL
151391 +enable_so_max_osd_ceph_osdmap_26483 max_osd ceph_osdmap 0 26483 NULL
151392 +enable_so_queue_cnt_fndecl_26484 queue_cnt fndecl 0 26484 NULL
151393 +enable_so_count_xfs_dir2_sf_hdr_26486 count xfs_dir2_sf_hdr 0 26486 NULL
151394 +enable_so_setup_max_cpus_vardecl_26488 setup_max_cpus vardecl 0 26488 NULL
151395 +enable_so_pa_lstart_ext4_prealloc_space_26493 pa_lstart ext4_prealloc_space 0 26493 NULL
151396 +enable_so_socket_recvmsg_security_operations_26495 socket_recvmsg security_operations 0 26495 NULL nohasharray
151397 +enable_so_videobuf_read_stream_fndecl_26495 videobuf_read_stream fndecl 3 26495 &enable_so_socket_recvmsg_security_operations_26495
151398 +enable_so_remap_and_issue_overwrite_fndecl_26499 remap_and_issue_overwrite fndecl 3 26499 NULL
151399 +enable_so_mce_flush_rx_buffer_fndecl_26515 mce_flush_rx_buffer fndecl 2 26515 NULL
151400 +enable_so_setkey_fndecl_26520 setkey fndecl 3 26520 NULL
151401 +enable_so_vmap_fndecl_26530 vmap fndecl 2 26530 NULL
151402 +enable_so_sync_buf_offs_pvr2_ioread_26534 sync_buf_offs pvr2_ioread 0 26534 NULL
151403 +enable_so_myri10ge_max_slices_vardecl_myri10ge_c_26536 myri10ge_max_slices vardecl_myri10ge.c 0 26536 NULL
151404 +enable_so_npages_kvm_memory_slot_26541 npages kvm_memory_slot 0 26541 NULL
151405 +enable_so_nfsd_drc_max_mem_vardecl_26544 nfsd_drc_max_mem vardecl 0 26544 NULL nohasharray
151406 +enable_so_sctp_setsockopt_default_sndinfo_fndecl_26544 sctp_setsockopt_default_sndinfo fndecl 3 26544 &enable_so_nfsd_drc_max_mem_vardecl_26544
151407 +enable_so_il4965_rs_move_legacy_other_fndecl_26556 il4965_rs_move_legacy_other fndecl 5 26556 NULL
151408 +enable_so_ieee80211_aes_gcm_encrypt_fndecl_26559 ieee80211_aes_gcm_encrypt fndecl 5 26559 NULL
151409 +enable_so_maxdepth_sfq_sched_data_26560 maxdepth sfq_sched_data 0 26560 NULL
151410 +enable_so_cld_pipe_downcall_fndecl_26561 cld_pipe_downcall fndecl 3 26561 NULL
151411 +enable_so_fifo_blocks_vxge_hw_fifo_config_26565 fifo_blocks vxge_hw_fifo_config 0 26565 NULL
151412 +enable_so_br_change_mtu_fndecl_26571 br_change_mtu fndecl 2 26571 NULL
151413 +enable_so_wMaxSegmentSize_usb_cdc_mbim_desc_26572 wMaxSegmentSize usb_cdc_mbim_desc 0 26572 NULL
151414 +enable_so_nfs4_write_cached_acl_fndecl_26573 nfs4_write_cached_acl fndecl 4 26573 NULL
151415 +enable_so_sd_log_flush_head_gfs2_sbd_26577 sd_log_flush_head gfs2_sbd 0 26577 NULL
151416 +enable_so_s_reserved_gdt_blocks_ext3_super_block_26580 s_reserved_gdt_blocks ext3_super_block 0 26580 NULL
151417 +enable_so_read_tree_block_fndecl_26587 read_tree_block fndecl 2 26587 NULL
151418 +enable_so_add_delayed_ref_head_fndecl_26595 add_delayed_ref_head fndecl 4-5 26595 NULL
151419 +enable_so_tx_desc_count_xgbe_prv_data_26603 tx_desc_count xgbe_prv_data 0 26603 NULL
151420 +enable_so_UMAsize_sis_video_info_26611 UMAsize sis_video_info 0 26611 NULL
151421 +enable_so_data_out_ep_vub300_mmc_host_26618 data_out_ep vub300_mmc_host 0 26618 NULL
151422 +enable_so_airspy_convert_stream_fndecl_26619 airspy_convert_stream fndecl 0-4 26619 NULL
151423 +enable_so_usb_rh_urb_dequeue_fndecl_26620 usb_rh_urb_dequeue fndecl 3 26620 NULL
151424 +enable_so_smscore_load_firmware_family2_fndecl_26621 smscore_load_firmware_family2 fndecl 3 26621 NULL
151425 +enable_so_hub_port_connect_change_fndecl_26625 hub_port_connect_change fndecl 2 26625 NULL
151426 +enable_so_data_len_ipmi_msg_26626 data_len ipmi_msg 0 26626 NULL
151427 +enable_so_l2_fhdr_pkt_len_l2_fhdr_26630 l2_fhdr_pkt_len l2_fhdr 0 26630 NULL nohasharray
151428 +enable_so_cache_write_fndecl_26630 cache_write fndecl 3 26630 &enable_so_l2_fhdr_pkt_len_l2_fhdr_26630
151429 +enable_so_mpt_lan_receive_post_turbo_fndecl_26635 mpt_lan_receive_post_turbo fndecl 2 26635 NULL
151430 +enable_so_qxl_draw_dirty_fb_fndecl_26636 qxl_draw_dirty_fb fndecl 7 26636 NULL
151431 +enable_so_i40e_change_mtu_fndecl_26637 i40e_change_mtu fndecl 2 26637 NULL
151432 +enable_so_h_length_dlm_header_26639 h_length dlm_header 0 26639 NULL
151433 +enable_so_len_tda10071_cmd_26641 len tda10071_cmd 0 26641 NULL nohasharray
151434 +enable_so_fh_size_knfsd_fh_26641 fh_size knfsd_fh 0 26641 &enable_so_len_tda10071_cmd_26641
151435 +enable_so_sys_madvise_fndecl_26642 sys_madvise fndecl 2-1 26642 NULL nohasharray
151436 +enable_so_size_drm_global_reference_26642 size drm_global_reference 0 26642 &enable_so_sys_madvise_fndecl_26642
151437 +enable_so_n_namesz_elf64_note_26646 n_namesz elf64_note 0 26646 NULL
151438 +enable_so_spi_populate_width_msg_fndecl_26651 spi_populate_width_msg fndecl 0 26651 NULL
151439 +enable_so_nr_recvmsg_fndecl_26658 nr_recvmsg fndecl 3 26658 NULL
151440 +enable_so_jbd2_journal_begin_ordered_truncate_fndecl_26661 jbd2_journal_begin_ordered_truncate fndecl 3 26661 NULL
151441 +enable_so_sys32_sync_file_range_fndecl_26667 sys32_sync_file_range fndecl 2-3 26667 NULL
151442 +enable_so_hdlc_change_mtu_fndecl_26672 hdlc_change_mtu fndecl 2 26672 NULL
151443 +enable_so_oobsize_mtd_info_26683 oobsize mtd_info 0 26683 NULL
151444 +enable_so_blk_msg_write_fndecl_26692 blk_msg_write fndecl 3 26692 NULL
151445 +enable_so_rx_buff_len_amd8111e_priv_26693 rx_buff_len amd8111e_priv 0 26693 NULL
151446 +enable_so_i8xx_clock_fndecl_26699 i8xx_clock fndecl 1 26699 NULL nohasharray
151447 +enable_so_raw_request_hid_ll_driver_26699 raw_request hid_ll_driver 0 26699 &enable_so_i8xx_clock_fndecl_26699
151448 +enable_so_gfs2_ilookup_fndecl_26702 gfs2_ilookup fndecl 2 26702 NULL
151449 +enable_so_packet_snd_fndecl_26705 packet_snd fndecl 3 26705 NULL
151450 +enable_so_musb_ep_program_fndecl_26707 musb_ep_program fndecl 7 26707 NULL
151451 +enable_so_x509_extract_name_segment_fndecl_26716 x509_extract_name_segment fndecl 5 26716 NULL
151452 +enable_so_i915_gem_obj_ggtt_offset_view_fndecl_26723 i915_gem_obj_ggtt_offset_view fndecl 0 26723 NULL
151453 +enable_so_max_transfer_size_rndis_init_c_26725 max_transfer_size rndis_init_c 0 26725 NULL
151454 +enable_so_fuse_copy_pages_fndecl_26731 fuse_copy_pages fndecl 2 26731 NULL
151455 +enable_so_ocfs2_xattr_set_handle_fndecl_26732 ocfs2_xattr_set_handle fndecl 7 26732 NULL
151456 +enable_so_cache_downcall_fndecl_26737 cache_downcall fndecl 3 26737 NULL
151457 +enable_so_xfs_filestream_lookup_ag_fndecl_26744 xfs_filestream_lookup_ag fndecl 0 26744 NULL nohasharray
151458 +enable_so_add_index_fndecl_26744 add_index fndecl 0 26744 &enable_so_xfs_filestream_lookup_ag_fndecl_26744
151459 +enable_so_block_size_befs_sb_info_26751 block_size befs_sb_info 0 26751 NULL
151460 +enable_so_len_osd_sg_entry_26755 len osd_sg_entry 0 26755 NULL
151461 +enable_so_xlog_find_verify_cycle_fndecl_26760 xlog_find_verify_cycle fndecl 2 26760 NULL
151462 +enable_so_num_phys_expander_device_26765 num_phys expander_device 0 26765 NULL
151463 +enable_so_tipc_send_stream_fndecl_26771 tipc_send_stream fndecl 3 26771 NULL
151464 +enable_so_hb_size_hashbin_t_26779 hb_size hashbin_t 0 26779 NULL nohasharray
151465 +enable_so_fw_iso_buffer_alloc_fndecl_26779 fw_iso_buffer_alloc fndecl 2 26779 &enable_so_hb_size_hashbin_t_26779
151466 +enable_so_tcp_init_tso_segs_fndecl_26788 tcp_init_tso_segs fndecl 3 26788 NULL
151467 +enable_so_audit_unpack_string_fndecl_26791 audit_unpack_string fndecl 3 26791 NULL
151468 +enable_so_ocfs2_cache_block_dealloc_fndecl_26800 ocfs2_cache_block_dealloc fndecl 6-5-4 26800 NULL
151469 +enable_so_sge_cnt_rdma_iu_26802 sge_cnt rdma_iu 0 26802 NULL
151470 +enable_so_dsbr100_setfreq_fndecl_26808 dsbr100_setfreq fndecl 2 26808 NULL
151471 +enable_so_fb_sys_read_fndecl_26817 fb_sys_read fndecl 3 26817 NULL
151472 +enable_so_ramdisk_image_setup_header_26821 ramdisk_image setup_header 0 26821 NULL nohasharray
151473 +enable_so_do_read_fault_fndecl_26821 do_read_fault fndecl 3-5 26821 &enable_so_ramdisk_image_setup_header_26821
151474 +enable_so_qlcnic_max_rings_fndecl_26823 qlcnic_max_rings fndecl 0-2 26823 NULL
151475 +enable_so_l2tp_ip_recvmsg_fndecl_26826 l2tp_ip_recvmsg fndecl 3 26826 NULL
151476 +enable_so_vma_commit_reservation_fndecl_26827 vma_commit_reservation fndecl 3 26827 NULL
151477 +enable_so_ath6kl_mgmt_powersave_ap_fndecl_26828 ath6kl_mgmt_powersave_ap fndecl 6 26828 NULL
151478 +enable_so_bEndpointAddress_usb_endpoint_descriptor_26829 bEndpointAddress usb_endpoint_descriptor 0 26829 NULL
151479 +enable_so_vc_screenbuf_size_vc_data_26832 vc_screenbuf_size vc_data 0 26832 NULL
151480 +enable_so_header_sectors_per_block_partition_26836 header_sectors_per_block partition 0 26836 NULL
151481 +enable_so_at24_write_fndecl_26838 at24_write fndecl 4-3 26838 NULL nohasharray
151482 +enable_so_hint_root_dm_cache_metadata_26838 hint_root dm_cache_metadata 0 26838 &enable_so_at24_write_fndecl_26838
151483 +enable_so_size_sram_reserve_26839 size sram_reserve 0 26839 NULL
151484 +enable_so_ipath_sdma_descq_cnt_ipath_devdata_26843 ipath_sdma_descq_cnt ipath_devdata 0 26843 NULL
151485 +enable_so_offset_resource_entry_26851 offset resource_entry 0 26851 NULL
151486 +enable_so_random_read_fndecl_26852 random_read fndecl 3 26852 NULL
151487 +enable_so____mei_cl_send_fndecl_26862 ___mei_cl_send fndecl 3 26862 NULL
151488 +enable_so_hsi_register_board_info_fndecl_26863 hsi_register_board_info fndecl 2 26863 NULL
151489 +enable_so_osd_req_add_get_attr_page_fndecl_26866 osd_req_add_get_attr_page fndecl 4 26866 NULL
151490 +enable_so_dlc_usb_8dev_rx_msg_26873 dlc usb_8dev_rx_msg 0 26873 NULL
151491 +enable_so_mwifiex_sdio_card_to_host_mp_aggr_fndecl_26877 mwifiex_sdio_card_to_host_mp_aggr fndecl 2 26877 NULL
151492 +enable_so_dev_bytenr_btrfsic_block_data_ctx_26882 dev_bytenr btrfsic_block_data_ctx 0 26882 NULL nohasharray
151493 +enable_so_sym_set_cam_result_error_fndecl_26882 sym_set_cam_result_error fndecl 3 26882 &enable_so_dev_bytenr_btrfsic_block_data_ctx_26882
151494 +enable_so_head_floppy_struct_26890 head floppy_struct 0 26890 NULL
151495 +enable_so_agno_xfs_alloc_arg_26892 agno xfs_alloc_arg 0 26892 NULL
151496 +enable_so_find_get_pages_contig_fndecl_26902 find_get_pages_contig fndecl 0 26902 NULL
151497 +enable_so_raid_disks_r5conf_26904 raid_disks r5conf 0 26904 NULL
151498 +enable_so_reexecute_instruction_fndecl_26906 reexecute_instruction fndecl 2 26906 NULL
151499 +enable_so_ctx_len_xfrm_user_sec_ctx_26911 ctx_len xfrm_user_sec_ctx 0 26911 NULL
151500 +enable_so_port_event_fndecl_26912 port_event fndecl 2 26912 NULL
151501 +enable_so_num_slots_rtsx_pcr_26914 num_slots rtsx_pcr 0 26914 NULL
151502 +enable_so_hscx_empty_fifo_fndecl_26915 hscx_empty_fifo fndecl 2 26915 NULL
151503 +enable_so_edma_prep_slave_sg_fndecl_26917 edma_prep_slave_sg fndecl 3 26917 NULL
151504 +enable_so_get_wep_key_fndecl_26919 get_wep_key fndecl 4 26919 NULL nohasharray
151505 +enable_so_cache_ctr_fndecl_26919 cache_ctr fndecl 2 26919 &enable_so_get_wep_key_fndecl_26919
151506 +enable_so_value_cat_datum_26920 value cat_datum 0 26920 NULL
151507 +enable_so_to_skip_sd_26922 to_skip sd 0 26922 NULL
151508 +enable_so_dst_bytes_x86_instruction_info_26935 dst_bytes x86_instruction_info 0 26935 NULL
151509 +enable_so_granularity_vx_ibl_info_26939 granularity vx_ibl_info 0 26939 NULL
151510 +enable_so_il4965_pass_packet_to_mac80211_fndecl_26945 il4965_pass_packet_to_mac80211 fndecl 3 26945 NULL
151511 +enable_so_br_vlan_set_default_pvid_fndecl_26946 br_vlan_set_default_pvid fndecl 2 26946 NULL nohasharray
151512 +enable_so_chunk_size_drxk_config_26946 chunk_size drxk_config 0 26946 &enable_so_br_vlan_set_default_pvid_fndecl_26946
151513 +enable_so_stripe_set_idx_fndecl_26948 stripe_set_idx fndecl 1 26948 NULL
151514 +enable_so_bulk_out_endp_ttusbir_26955 bulk_out_endp ttusbir 0 26955 NULL
151515 +enable_so_sky2_receive_fndecl_26956 sky2_receive fndecl 2 26956 NULL
151516 +enable_so_carl9170_rx_untie_data_fndecl_26958 carl9170_rx_untie_data fndecl 3 26958 NULL
151517 +enable_so_bulk_in_ep_bfusb_data_26959 bulk_in_ep bfusb_data 0 26959 NULL
151518 +enable_so_cfpkt_extr_trail_fndecl_26960 cfpkt_extr_trail fndecl 3 26960 NULL
151519 +enable_so_iso_sched_alloc_fndecl_26962 iso_sched_alloc fndecl 1 26962 NULL
151520 +enable_so_len_hidraw_report_26966 len hidraw_report 0 26966 NULL
151521 +enable_so_bt_sock_recvmsg_fndecl_26967 bt_sock_recvmsg fndecl 3 26967 NULL
151522 +enable_so_lov_mds_md_size_fndecl_26975 lov_mds_md_size fndecl 1-0 26975 NULL
151523 +enable_so_brk_mm_struct_26976 brk mm_struct 0 26976 NULL
151524 +enable_so_ctrl_out_pipe_hfcusb_data_26981 ctrl_out_pipe hfcusb_data 0 26981 NULL
151525 +enable_so_num_waitchks_drm_tegra_submit_26983 num_waitchks drm_tegra_submit 0 26983 NULL
151526 +enable_so___tipc_send_stream_fndecl_26990 __tipc_send_stream fndecl 3 26990 NULL
151527 +enable_so_address_length_acpi_address64_attribute_26992 address_length acpi_address64_attribute 0 26992 NULL
151528 +enable_so_delete_empty_dnode_fndecl_26994 delete_empty_dnode fndecl 2 26994 NULL
151529 +enable_so_ser_write_chunk_vardecl_caif_serial_c_26999 ser_write_chunk vardecl_caif_serial.c 0 26999 NULL
151530 +enable_so_netxen_alloc_sds_rings_fndecl_27002 netxen_alloc_sds_rings fndecl 2 27002 NULL
151531 +enable_so_task_array_size_cnic_local_27004 task_array_size cnic_local 0 27004 NULL
151532 +enable_so_nfs4_set_security_label_fndecl_27018 nfs4_set_security_label fndecl 3 27018 NULL
151533 +enable_so_ath6kl_cfg80211_connect_event_fndecl_27024 ath6kl_cfg80211_connect_event fndecl 7 27024 NULL
151534 +enable_so_sctp_setsockopt_peer_primary_addr_fndecl_27027 sctp_setsockopt_peer_primary_addr fndecl 3 27027 NULL
151535 +enable_so___bufio_new_fndecl_27029 __bufio_new fndecl 2 27029 NULL
151536 +enable_so_size_vfio_dma_27034 size vfio_dma 0 27034 NULL
151537 +enable_so_read_capacity_16_fndecl_27039 read_capacity_16 fndecl 0 27039 NULL
151538 +enable_so_data_read_fndecl_27045 data_read fndecl 3 27045 NULL
151539 +enable_so_remains_vardecl_initramfs_c_27049 remains vardecl_initramfs.c 0 27049 NULL
151540 +enable_so_brcmf_sdiod_ramrw_fndecl_27055 brcmf_sdiod_ramrw fndecl 5-3 27055 NULL
151541 +enable_so_z_decompress_fndecl_27072 z_decompress fndecl 5-3 27072 NULL
151542 +enable_so_bm_init_fndecl_27082 bm_init fndecl 2 27082 NULL
151543 +enable_so_file_size_perf_mmap_event_27090 file_size perf_mmap_event 0 27090 NULL
151544 +enable_so_num_counters_compat_arpt_replace_27091 num_counters compat_arpt_replace 0 27091 NULL
151545 +enable_so_core_status_fndecl_27096 core_status fndecl 4 27096 NULL
151546 +enable_so_smk_write_mapped_fndecl_27100 smk_write_mapped fndecl 3 27100 NULL
151547 +enable_so_ab8500_hwreg_write_fndecl_27104 ab8500_hwreg_write fndecl 3 27104 NULL
151548 +enable_so___btrfs_alloc_chunk_fndecl_27105 __btrfs_alloc_chunk fndecl 3 27105 NULL nohasharray
151549 +enable_so_i_suballoc_bit_ocfs2_dinode_27105 i_suballoc_bit ocfs2_dinode 0 27105 &enable_so___btrfs_alloc_chunk_fndecl_27105
151550 +enable_so_lastctxt_piobuf_qib_devdata_27106 lastctxt_piobuf qib_devdata 0 27106 NULL
151551 +enable_so___rpm_callback_fndecl_27107 __rpm_callback fndecl 0 27107 NULL
151552 +enable_so_hash_net4_expire_fndecl_27108 hash_net4_expire fndecl 4 27108 NULL
151553 +enable_so_gpa_gfn_to_hva_cache_27125 gpa gfn_to_hva_cache 0 27125 NULL
151554 +enable_so_mwifiex_sdio_card_to_host_fndecl_27127 mwifiex_sdio_card_to_host fndecl 4 27127 NULL nohasharray
151555 +enable_so_non_atomic_pte_lookup_fndecl_27127 non_atomic_pte_lookup fndecl 2 27127 &enable_so_mwifiex_sdio_card_to_host_fndecl_27127
151556 +enable_so_pd_count_ocrdma_alloc_pd_range_rsp_27128 pd_count ocrdma_alloc_pd_range_rsp 0 27128 NULL
151557 +enable_so_addr_page_to_node_27130 addr page_to_node 0 27130 NULL
151558 +enable_so_smp_cmd_sign_info_fndecl_27131 smp_cmd_sign_info fndecl 0 27131 NULL
151559 +enable_so_sys32_fadvise64_fndecl_27136 sys32_fadvise64 fndecl 2-3 27136 NULL
151560 +enable_so_mtu_rfcomm_dlc_27139 mtu rfcomm_dlc 0 27139 NULL nohasharray
151561 +enable_so_do_proc_readlink_fndecl_27139 do_proc_readlink fndecl 3 27139 &enable_so_mtu_rfcomm_dlc_27139
151562 +enable_so_rx_ps_bsize0_e1000_adapter_27144 rx_ps_bsize0 e1000_adapter 0 27144 NULL
151563 +enable_so_compat_sys_pselect6_fndecl_27146 compat_sys_pselect6 fndecl 1 27146 NULL
151564 +enable_so_nilfs_attach_checkpoint_fndecl_27152 nilfs_attach_checkpoint fndecl 2 27152 NULL
151565 +enable_so__nfs4_proc_readdir_fndecl_27153 _nfs4_proc_readdir fndecl 5 27153 NULL
151566 +enable_so_dgram_recvmsg_fndecl_27155 dgram_recvmsg fndecl 3 27155 NULL
151567 +enable_so_len_nf_ct_ext_type_27159 len nf_ct_ext_type 0 27159 NULL
151568 +enable_so_bbRcvSizeLsb_csp_27167 bbRcvSizeLsb csp 0 27167 NULL
151569 +enable_so_len_rdesc0_27169 len rdesc0 0 27169 NULL
151570 +enable_so_cow_start_ocfs2_cow_context_27171 cow_start ocfs2_cow_context 0 27171 NULL
151571 +enable_so_e100_change_mtu_fndecl_27180 e100_change_mtu fndecl 2 27180 NULL
151572 +enable_so_compat_sys_ftruncate_fndecl_27189 compat_sys_ftruncate fndecl 2 27189 NULL
151573 +enable_so_brcmf_sdio_bus_txctl_fndecl_27192 brcmf_sdio_bus_txctl fndecl 3 27192 NULL
151574 +enable_so_write_tty_operations_27198 write tty_operations 0 27198 NULL nohasharray
151575 +enable_so_caif_stream_recvmsg_fndecl_27198 caif_stream_recvmsg fndecl 3 27198 &enable_so_write_tty_operations_27198
151576 +enable_so_ccp_alloc_ksb_fndecl_27204 ccp_alloc_ksb fndecl 2 27204 NULL
151577 +enable_so_cfs_hash_rehash_bits_fndecl_27208 cfs_hash_rehash_bits fndecl 0 27208 NULL
151578 +enable_so_print_input_mask_fndecl_27211 print_input_mask fndecl 0-3 27211 NULL
151579 +enable_so_block_size_scsi_tape_27212 block_size scsi_tape 0 27212 NULL
151580 +enable_so_num_prior_parent_snaps_ceph_mds_snap_realm_27215 num_prior_parent_snaps ceph_mds_snap_realm 0 27215 NULL
151581 +enable_so_sdio_memcpy_fromio_fndecl_27218 sdio_memcpy_fromio fndecl 4 27218 NULL
151582 +enable_so_sym_prepare_nego_fndecl_27219 sym_prepare_nego fndecl 0 27219 NULL
151583 +enable_so_em_canid_change_fndecl_27221 em_canid_change fndecl 3 27221 NULL
151584 +enable_so_arm_db_page_mthca_create_cq_27227 arm_db_page mthca_create_cq 0 27227 NULL
151585 +enable_so_iwl_store_ucode_sec_fndecl_27235 iwl_store_ucode_sec fndecl 4 27235 NULL
151586 +enable_so_qib_cfgctxts_vardecl_27236 qib_cfgctxts vardecl 0 27236 NULL nohasharray
151587 +enable_so_acks_winsz_rxrpc_call_27236 acks_winsz rxrpc_call 0 27236 &enable_so_qib_cfgctxts_vardecl_27236
151588 +enable_so_do_splice_fndecl_27239 do_splice fndecl 5 27239 NULL
151589 +enable_so_hfsplus_brec_find_fndecl_27243 hfsplus_brec_find fndecl 0 27243 NULL
151590 +enable_so_sisusb_recv_bulk_msg_fndecl_27246 sisusb_recv_bulk_msg fndecl 3-2 27246 NULL
151591 +enable_so_ocfs2_xattr_value_truncate_fndecl_27252 ocfs2_xattr_value_truncate fndecl 3 27252 NULL nohasharray
151592 +enable_so_zoneshift_alauda_card_info_27252 zoneshift alauda_card_info 0 27252 &enable_so_ocfs2_xattr_value_truncate_fndecl_27252
151593 +enable_so_datafab_read_data_fndecl_27257 datafab_read_data fndecl 4 27257 NULL
151594 +enable_so_mx_sb_len_sg_io_hdr_27261 mx_sb_len sg_io_hdr 0 27261 NULL
151595 +enable_so_inode_to_path_fndecl_27272 inode_to_path fndecl 1 27272 NULL
151596 +enable_so_ieee80211_if_write_uapsd_max_sp_len_fndecl_27274 ieee80211_if_write_uapsd_max_sp_len fndecl 3 27274 NULL
151597 +enable_so_bios_hardcoded_edid_size_amdgpu_mode_info_27277 bios_hardcoded_edid_size amdgpu_mode_info 0 27277 NULL
151598 +enable_so_netxen_process_rcv_fndecl_27279 netxen_process_rcv fndecl 4 27279 NULL
151599 +enable_so___nvme_alloc_iod_fndecl_27289 __nvme_alloc_iod fndecl 1-2 27289 NULL
151600 +enable_so_sys_kexec_load_fndecl_27293 sys_kexec_load fndecl 2 27293 NULL
151601 +enable_so_pd_size_blkcg_policy_27297 pd_size blkcg_policy 0 27297 NULL
151602 +enable_so_sector_r10bio_27298 sector r10bio 0 27298 NULL
151603 +enable_so_ath6kl_connect_event_fndecl_27304 ath6kl_connect_event fndecl 7 27304 NULL
151604 +enable_so_cifs_strict_fsync_fndecl_27308 cifs_strict_fsync fndecl 2 27308 NULL
151605 +enable_so_nrelocs_radeon_cs_parser_27313 nrelocs radeon_cs_parser 0 27313 NULL
151606 +enable_so_sctp_recvmsg_fndecl_27314 sctp_recvmsg fndecl 3 27314 NULL
151607 +enable_so_btrfs_token_file_extent_ram_bytes_fndecl_27316 btrfs_token_file_extent_ram_bytes fndecl 0 27316 NULL
151608 +enable_so_long_retry_rt2x00_dev_27317 long_retry rt2x00_dev 0 27317 NULL nohasharray
151609 +enable_so_chunk_sectors_r5conf_27317 chunk_sectors r5conf 0 27317 &enable_so_long_retry_rt2x00_dev_27317
151610 +enable_so_dma_declare_coherent_memory_fndecl_27319 dma_declare_coherent_memory fndecl 4 27319 NULL
151611 +enable_so_memblock_alloc_range_nid_fndecl_27321 memblock_alloc_range_nid fndecl 2-1 27321 NULL
151612 +enable_so_will_overwrite_ref_fndecl_27327 will_overwrite_ref fndecl 2 27327 NULL
151613 +enable_so_rr_status_fndecl_27334 rr_status fndecl 5 27334 NULL
151614 +enable_so_write_buffer_fndecl_27339 write_buffer fndecl 2-0 27339 NULL
151615 +enable_so_sndbuf_tun_struct_27345 sndbuf tun_struct 0 27345 NULL
151616 +enable_so_snd_seq_oss_readq_new_fndecl_27352 snd_seq_oss_readq_new fndecl 2 27352 NULL
151617 +enable_so_pix_format_set_size_fndecl_27356 pix_format_set_size fndecl 3-4 27356 NULL
151618 +enable_so_static_data_priv_len_wl1271_27357 static_data_priv_len wl1271 0 27357 NULL
151619 +enable_so_n_mcgrps_genl_family_27362 n_mcgrps genl_family 0 27362 NULL
151620 +enable_so_find_new_extents_fndecl_27368 find_new_extents fndecl 5 27368 NULL
151621 +enable_so_channels_pda_pa_curve_data_27369 channels pda_pa_curve_data 0 27369 NULL
151622 +enable_so_num_altsetting_usb_interface_27371 num_altsetting usb_interface 0 27371 NULL
151623 +enable_so_keyed_hash_fndecl_27379 keyed_hash fndecl 0-2 27379 NULL
151624 +enable_so_send_chown_fndecl_27382 send_chown fndecl 2 27382 NULL
151625 +enable_so_dwNtbOutMaxSize_usb_cdc_ncm_ntb_parameters_27384 dwNtbOutMaxSize usb_cdc_ncm_ntb_parameters 0 27384 NULL
151626 +enable_so_msg_namelen_msghdr_27389 msg_namelen msghdr 0 27389 NULL
151627 +enable_so_rs_get_lower_rate_fndecl_27394 rs_get_lower_rate fndecl 3 27394 NULL nohasharray
151628 +enable_so_frame_size_audioformat_27394 frame_size audioformat 0 27394 &enable_so_rs_get_lower_rate_fndecl_27394
151629 +enable_so_ccid_kmem_cache_create_fndecl_27397 ccid_kmem_cache_create fndecl 1 27397 NULL
151630 +enable_so_evdev_ioctl_compat_fndecl_27400 evdev_ioctl_compat fndecl 2 27400 NULL
151631 +enable_so_enc_pools_insert_fndecl_27402 enc_pools_insert fndecl 3 27402 NULL
151632 +enable_so_m_bsize_xfs_mount_27405 m_bsize xfs_mount 0 27405 NULL
151633 +enable_so_max_payload_rpc_xprt_27408 max_payload rpc_xprt 0 27408 NULL
151634 +enable_so_rts_threshold_ipw_priv_27416 rts_threshold ipw_priv 0 27416 NULL
151635 +enable_so_bucket_table_alloc_fndecl_27422 bucket_table_alloc fndecl 2 27422 NULL nohasharray
151636 +enable_so_qce_ahash_hmac_setkey_fndecl_27422 qce_ahash_hmac_setkey fndecl 3 27422 &enable_so_bucket_table_alloc_fndecl_27422
151637 +enable_so_dst_frames_snd_pcm_plugin_27424 dst_frames snd_pcm_plugin 0 27424 NULL nohasharray
151638 +enable_so_service_name_len_nfc_llcp_sock_27424 service_name_len nfc_llcp_sock 0 27424 &enable_so_dst_frames_snd_pcm_plugin_27424
151639 +enable_so_ad9523_read_fndecl_27434 ad9523_read fndecl 2 27434 NULL
151640 +enable_so_qp_memcpy_to_queue_fndecl_27437 qp_memcpy_to_queue fndecl 5-2 27437 NULL
151641 +enable_so_regmap_spi_async_write_fndecl_27439 regmap_spi_async_write fndecl 3-5 27439 NULL
151642 +enable_so_produce_size_vmci_qp_alloc_info_vmvm_27440 produce_size vmci_qp_alloc_info_vmvm 0 27440 NULL
151643 +enable_so_radeon_vm_block_size_vardecl_27445 radeon_vm_block_size vardecl 0 27445 NULL
151644 +enable_so_gdlm_recover_done_fndecl_27452 gdlm_recover_done fndecl 4 27452 NULL
151645 +enable_so_compat_ip_setsockopt_fndecl_27453 compat_ip_setsockopt fndecl 5 27453 NULL
151646 +enable_so_hsync_offset_lo_oaktrail_timing_info_27455 hsync_offset_lo oaktrail_timing_info 0 27455 NULL nohasharray
151647 +enable_so_set_offset_v2_k_type_fndecl_27455 set_offset_v2_k_type fndecl 2 27455 &enable_so_hsync_offset_lo_oaktrail_timing_info_27455
151648 +enable_so_nilfs_bmap_do_truncate_fndecl_27459 nilfs_bmap_do_truncate fndecl 0 27459 NULL
151649 +enable_so_xfs_dir3_data_init_fndecl_27460 xfs_dir3_data_init fndecl 2 27460 NULL
151650 +enable_so_io_opt_queue_limits_27462 io_opt queue_limits 0 27462 NULL
151651 +enable_so_uar_page_sz_mlx4_init_hca_param_27465 uar_page_sz mlx4_init_hca_param 0 27465 NULL
151652 +enable_so_is_inode_existent_fndecl_27466 is_inode_existent fndecl 2 27466 NULL
151653 +enable_so_max_slots_nfs4_slot_table_27470 max_slots nfs4_slot_table 0 27470 NULL
151654 +enable_so_size_btrfs_ioctl_ino_path_args_27477 size btrfs_ioctl_ino_path_args 0 27477 NULL
151655 +enable_so_seg0_blkaddr_f2fs_sm_info_27483 seg0_blkaddr f2fs_sm_info 0 27483 NULL
151656 +enable_so_kim_int_recv_fndecl_27486 kim_int_recv fndecl 3 27486 NULL
151657 +enable_so_status_udc_data_dma_27488 status udc_data_dma 0 27488 NULL
151658 +enable_so_local_nentries_xpc_channel_27489 local_nentries xpc_channel 0 27489 NULL
151659 +enable_so_ocfs2_xa_value_truncate_fndecl_27495 ocfs2_xa_value_truncate fndecl 2 27495 NULL
151660 +enable_so_rq_size_srpt_rdma_ch_27500 rq_size srpt_rdma_ch 0 27500 NULL
151661 +enable_so_rx_buf_size_bnx2x_fastpath_27506 rx_buf_size bnx2x_fastpath 0 27506 NULL
151662 +enable_so_stripe_len_map_lookup_27512 stripe_len map_lookup 0 27512 NULL
151663 +enable_so_eeprom_size_netdev_private_27532 eeprom_size netdev_private 0 27532 NULL
151664 +enable_so_dvb_demux_read_fndecl_27534 dvb_demux_read fndecl 3 27534 NULL
151665 +enable_so_hlen_raw6_frag_vec_27535 hlen raw6_frag_vec 0 27535 NULL
151666 +enable_so_hsr_dev_change_mtu_fndecl_27537 hsr_dev_change_mtu fndecl 2 27537 NULL
151667 +enable_so_snd_pcm_plug_slave_size_fndecl_27548 snd_pcm_plug_slave_size fndecl 2 27548 NULL
151668 +enable_so_writeset_tree_root_era_metadata_27555 writeset_tree_root era_metadata 0 27555 NULL nohasharray
151669 +enable_so_remap_and_issue_fndecl_27555 remap_and_issue fndecl 3 27555 &enable_so_writeset_tree_root_era_metadata_27555
151670 +enable_so_sddr09_write_data_fndecl_27565 sddr09_write_data fndecl 3-2 27565 NULL
151671 +enable_so__wm8993_set_fll_fndecl_27571 _wm8993_set_fll fndecl 4-5 27571 NULL
151672 +enable_so_disabled_cpus_vardecl_27577 disabled_cpus vardecl 0 27577 NULL
151673 +enable_so_count_cxgbi_task_data_27578 count cxgbi_task_data 0 27578 NULL
151674 +enable_so_nregions_vhost_memory_27586 nregions vhost_memory 0 27586 NULL
151675 +enable_so_pci_add_ext_cap_save_buffer_fndecl_27587 pci_add_ext_cap_save_buffer fndecl 3 27587 NULL
151676 +enable_so_dvb_usercopy_fndecl_27591 dvb_usercopy fndecl 2 27591 NULL
151677 +enable_so_ipath_init_ibmaxlen_ipath_devdata_27595 ipath_init_ibmaxlen ipath_devdata 0 27595 NULL
151678 +enable_so_dmi_format_ids_fndecl_27601 dmi_format_ids fndecl 2 27601 NULL
151679 +enable_so_btrfs_get_blocks_direct_fndecl_27603 btrfs_get_blocks_direct fndecl 2 27603 NULL
151680 +enable_so_get_sb_block_fndecl_27604 get_sb_block fndecl 0 27604 NULL
151681 +enable_so_iscsi_create_flashnode_conn_fndecl_27605 iscsi_create_flashnode_conn fndecl 4 27605 NULL
151682 +enable_so__rtl92s_firmware_downloadcode_fndecl_27606 _rtl92s_firmware_downloadcode fndecl 3 27606 NULL
151683 +enable_so_packet_length_gl_packet_27608 packet_length gl_packet 0 27608 NULL nohasharray
151684 +enable_so_EraseSize_INFTLrecord_27608 EraseSize INFTLrecord 0 27608 &enable_so_packet_length_gl_packet_27608
151685 +enable_so_read_isac_isac_27627 read_isac isac 0 27627 NULL
151686 +enable_so_data_length_se_cmd_27629 data_length se_cmd 0 27629 NULL
151687 +enable_so_btrfs_search_dir_index_item_fndecl_27630 btrfs_search_dir_index_item fndecl 3 27630 NULL
151688 +enable_so_ieee80211_if_fmt_aid_fndecl_27636 ieee80211_if_fmt_aid fndecl 3 27636 NULL
151689 +enable_so_bsize_videobuf_buffer_27645 bsize videobuf_buffer 0 27645 NULL
151690 +enable_so_nvkm_event_init_fndecl_27654 nvkm_event_init fndecl 2-3 27654 NULL
151691 +enable_so_period_frames_usb_stream_config_27656 period_frames usb_stream_config 0 27656 NULL
151692 +enable_so_WriteRegs_fndecl_27658 WriteRegs fndecl 4 27658 NULL
151693 +enable_so_authsize_aead_tfm_27666 authsize aead_tfm 0 27666 NULL
151694 +enable_so_short_retry_limit_ipw2100_priv_27671 short_retry_limit ipw2100_priv 0 27671 NULL
151695 +enable_so_kvm_setup_async_pf_fndecl_27672 kvm_setup_async_pf fndecl 3 27672 NULL nohasharray
151696 +enable_so_size_compat_ip6t_replace_27672 size compat_ip6t_replace 0 27672 &enable_so_kvm_setup_async_pf_fndecl_27672
151697 +enable_so_ib_umem_get_fndecl_27678 ib_umem_get fndecl 2 27678 NULL
151698 +enable_so_tlbflush_write_file_fndecl_27685 tlbflush_write_file fndecl 3 27685 NULL
151699 +enable_so__iwl_dbgfs_prph_reg_write_fndecl_27686 _iwl_dbgfs_prph_reg_write fndecl 3 27686 NULL
151700 +enable_so_bnx2x_iov_init_one_fndecl_27687 bnx2x_iov_init_one fndecl 3 27687 NULL
151701 +enable_so_ipv6_get_l4proto_fndecl_27691 ipv6_get_l4proto fndecl 2 27691 NULL
151702 +enable_so_vhci_put_user_fndecl_27695 vhci_put_user fndecl 4 27695 NULL
151703 +enable_so_hvc_alloc_fndecl_27696 hvc_alloc fndecl 4 27696 NULL
151704 +enable_so_mru_ppp_27697 mru ppp 0 27697 NULL
151705 +enable_so_rx_buf_sz_de_private_27701 rx_buf_sz de_private 0 27701 NULL
151706 +enable_so_dsack_tcp_options_received_27706 dsack tcp_options_received 0 27706 NULL
151707 +enable_so_niu_rx_skb_append_fndecl_27708 niu_rx_skb_append fndecl 3-4 27708 NULL
151708 +enable_so_pcpu_extend_area_map_fndecl_27710 pcpu_extend_area_map fndecl 2 27710 NULL
151709 +enable_so_ns83820_change_mtu_fndecl_27711 ns83820_change_mtu fndecl 2 27711 NULL
151710 +enable_so_xstate_size__fpx_sw_bytes_27731 xstate_size _fpx_sw_bytes 0 27731 NULL
151711 +enable_so_word_size_e1000_eeprom_info_27741 word_size e1000_eeprom_info 0 27741 NULL
151712 +enable_so_stv0900_read_reg_fndecl_27751 stv0900_read_reg fndecl 0 27751 NULL
151713 +enable_so_si_blocks_ocfs2_slot_info_27753 si_blocks ocfs2_slot_info 0 27753 NULL
151714 +enable_so_sparse_mem_maps_populate_node_fndecl_27758 sparse_mem_maps_populate_node fndecl 4 27758 NULL
151715 +enable_so_dwc3_link_state_write_fndecl_27762 dwc3_link_state_write fndecl 3 27762 NULL
151716 +enable_so_nr_sendmsg_fndecl_27763 nr_sendmsg fndecl 3 27763 NULL
151717 +enable_so_short_frame_max_tx_count_ieee80211_conf_27764 short_frame_max_tx_count ieee80211_conf 0 27764 NULL
151718 +enable_so_h_drm_vmw_rect_27765 h drm_vmw_rect 0 27765 NULL
151719 +enable_so_instat_endpoint_keyspan_device_details_27768 instat_endpoint keyspan_device_details 0 27768 NULL
151720 +enable_so_rtw_android_get_link_speed_fndecl_27772 rtw_android_get_link_speed fndecl 0 27772 NULL
151721 +enable_so_rs_datalen_ath_rx_status_27774 rs_datalen ath_rx_status 0 27774 NULL
151722 +enable_so_socket_sendmsg_security_operations_27787 socket_sendmsg security_operations 0 27787 NULL nohasharray
151723 +enable_so_ieee802_1x_libipw_device_27787 ieee802_1x libipw_device 0 27787 &enable_so_socket_sendmsg_security_operations_27787
151724 +enable_so_vlan_qos_vlan_priority_tci_mapping_27789 vlan_qos vlan_priority_tci_mapping 0 27789 NULL nohasharray
151725 +enable_so_ext4_bg_num_gdb_meta_fndecl_27789 ext4_bg_num_gdb_meta fndecl 0 27789 &enable_so_vlan_qos_vlan_priority_tci_mapping_27789
151726 +enable_so_old_len_logfs_shadow_27801 old_len logfs_shadow 0 27801 NULL
151727 +enable_so_nilfs_segbuf_set_next_segnum_fndecl_27802 nilfs_segbuf_set_next_segnum fndecl 2 27802 NULL
151728 +enable_so_bm_offset_drbd_md_27803 bm_offset drbd_md 0 27803 NULL
151729 +enable_so_nr_ports_solos_card_27804 nr_ports solos_card 0 27804 NULL
151730 +enable_so_e1000_receive_skb_fndecl_27809 e1000_receive_skb fndecl 3 27809 NULL
151731 +enable_so_ule_sndu_remain_dvb_net_priv_27812 ule_sndu_remain dvb_net_priv 0 27812 NULL
151732 +enable_so___inode_add_bytes_fndecl_27813 __inode_add_bytes fndecl 2 27813 NULL
151733 +enable_so_dm_block_manager_create_fndecl_27815 dm_block_manager_create fndecl 2 27815 NULL
151734 +enable_so_reg_reg_default_27824 reg reg_default 0 27824 NULL nohasharray
151735 +enable_so_iwl_dbgfs_calib_disabled_write_fndecl_27824 iwl_dbgfs_calib_disabled_write fndecl 3 27824 &enable_so_reg_reg_default_27824
151736 +enable_so_roundup_brcmf_sdio_27833 roundup brcmf_sdio 0 27833 NULL nohasharray
151737 +enable_so_type_kqid_27833 type kqid 0 27833 &enable_so_roundup_brcmf_sdio_27833
151738 +enable_so_adm8211_tx_raw_fndecl_27839 adm8211_tx_raw fndecl 3 27839 NULL
151739 +enable_so___getblk_slow_fndecl_27842 __getblk_slow fndecl 3-2 27842 NULL nohasharray
151740 +enable_so_cfg_niq_csio_hw_27842 cfg_niq csio_hw 0 27842 &enable_so___getblk_slow_fndecl_27842
151741 +enable_so_dd_bsg_size_fc_function_template_27852 dd_bsg_size fc_function_template 0 27852 NULL
151742 +enable_so_xfs_da3_node_read_fndecl_27858 xfs_da3_node_read fndecl 3 27858 NULL nohasharray
151743 +enable_so___mei_cl_async_send_fndecl_27858 __mei_cl_async_send fndecl 3 27858 &enable_so_xfs_da3_node_read_fndecl_27858
151744 +enable_so_retry_txdone_entry_desc_27860 retry txdone_entry_desc 0 27860 NULL
151745 +enable_so_pixel_multiplier_intel_crtc_state_27872 pixel_multiplier intel_crtc_state 0 27872 NULL nohasharray
151746 +enable_so_max_slave_count_w1_master_27872 max_slave_count w1_master 0 27872 &enable_so_pixel_multiplier_intel_crtc_state_27872
151747 +enable_so_lo_len_nfsd4_lookup_27874 lo_len nfsd4_lookup 0 27874 NULL
151748 +enable_so_l_blkno_lbuf_27876 l_blkno lbuf 0 27876 NULL
151749 +enable_so_btrfs_remove_free_space_fndecl_27882 btrfs_remove_free_space fndecl 3-2 27882 NULL
151750 +enable_so_xres_fb_cvt_data_27885 xres fb_cvt_data 0 27885 NULL
151751 +enable_so__rotate_left_fndecl_27889 _rotate_left fndecl 2 27889 NULL
151752 +enable_so_listxattr_fndecl_27890 listxattr fndecl 3 27890 NULL
151753 +enable_so_reada_tree_block_flagged_fndecl_27912 reada_tree_block_flagged fndecl 2 27912 NULL
151754 +enable_so_lbq_len_rx_ring_27913 lbq_len rx_ring 0 27913 NULL
151755 +enable_so_tp_datalen_bcm5974_config_27927 tp_datalen bcm5974_config 0 27927 NULL
151756 +enable_so_numchips_lpddr_private_27938 numchips lpddr_private 0 27938 NULL
151757 +enable_so_pn544_hci_i2c_fw_secure_write_frame_cmd_fndecl_27941 pn544_hci_i2c_fw_secure_write_frame_cmd fndecl 3 27941 NULL
151758 +enable_so_get_burstcount_fndecl_27942 get_burstcount fndecl 0 27942 NULL nohasharray
151759 +enable_so_btrfs_lookup_file_extent_fndecl_27942 btrfs_lookup_file_extent fndecl 5-4 27942 &enable_so_get_burstcount_fndecl_27942
151760 +enable_so_usnic_transport_sock_to_str_fndecl_27953 usnic_transport_sock_to_str fndecl 2-0 27953 NULL
151761 +enable_so_usbat_hp8200e_rw_block_test_fndecl_27957 usbat_hp8200e_rw_block_test fndecl 5-12 27957 NULL
151762 +enable_so_pcbit_writecmd_fndecl_27967 pcbit_writecmd fndecl 2 27967 NULL
151763 +enable_so_ext3_get_blocks_handle_fndecl_27970 ext3_get_blocks_handle fndecl 0 27970 NULL nohasharray
151764 +enable_so_set_tv_freq_fndecl_27970 set_tv_freq fndecl 2 27970 &enable_so_ext3_get_blocks_handle_fndecl_27970 nohasharray
151765 +enable_so_fat_build_inode_fndecl_27970 fat_build_inode fndecl 3 27970 &enable_so_set_tv_freq_fndecl_27970
151766 +enable_so_parser_init_byte_stream_fndecl_27973 parser_init_byte_stream fndecl 2 27973 NULL
151767 +enable_so_sxgbe_init_rx_buffers_fndecl_27984 sxgbe_init_rx_buffers fndecl 4 27984 NULL nohasharray
151768 +enable_so_mptctl_ioctl_fndecl_27984 mptctl_ioctl fndecl 2 27984 &enable_so_sxgbe_init_rx_buffers_fndecl_27984
151769 +enable_so_snd_sb16_setup_rate_fndecl_27986 snd_sb16_setup_rate fndecl 2 27986 NULL
151770 +enable_so_gs_gru_base_paddr_gru_state_27988 gs_gru_base_paddr gru_state 0 27988 NULL nohasharray
151771 +enable_so_paging32_walk_addr_fndecl_27988 paging32_walk_addr fndecl 3-4 27988 &enable_so_gs_gru_base_paddr_gru_state_27988
151772 +enable_so_ext4_seek_hole_fndecl_27990 ext4_seek_hole fndecl 2 27990 NULL
151773 +enable_so_rx_rate_wsm_rx_27991 rx_rate wsm_rx 0 27991 NULL nohasharray
151774 +enable_so_write_mei_hw_ops_27991 write mei_hw_ops 0 27991 &enable_so_rx_rate_wsm_rx_27991
151775 +enable_so___nf_ct_ext_add_length_fndecl_27999 __nf_ct_ext_add_length fndecl 3 27999 NULL
151776 +enable_so_page_count_scrub_block_28000 page_count scrub_block 0 28000 NULL
151777 +enable_so_max_x_fb_monspecs_28003 max_x fb_monspecs 0 28003 NULL
151778 +enable_so_scif_recv_fndecl_28006 scif_recv fndecl 3 28006 NULL
151779 +enable_so_ext4_bg_num_gdb_nometa_fndecl_28014 ext4_bg_num_gdb_nometa fndecl 0 28014 NULL
151780 +enable_so_write_file_dump_fndecl_28020 write_file_dump fndecl 3 28020 NULL
151781 +enable_so_cfs_array_alloc_fndecl_28042 cfs_array_alloc fndecl 2 28042 NULL
151782 +enable_so_min_size_vx_ibl_info_28043 min_size vx_ibl_info 0 28043 NULL
151783 +enable_so_num_intr_mic_intr_info_28048 num_intr mic_intr_info 0 28048 NULL
151784 +enable_so_hbucket_elem_add_fndecl_28051 hbucket_elem_add fndecl 3 28051 NULL
151785 +enable_so_hblank_lo_lvds_dvo_timing_28054 hblank_lo lvds_dvo_timing 0 28054 NULL
151786 +enable_so_cl_nodelen_rpc_clnt_28055 cl_nodelen rpc_clnt 0 28055 NULL
151787 +enable_so_s_imap_blocks_minix_sb_info_28062 s_imap_blocks minix_sb_info 0 28062 NULL
151788 +enable_so_gfs2_llseek_fndecl_28067 gfs2_llseek fndecl 2 28067 NULL
151789 +enable_so_rsi_prepare_skb_fndecl_28075 rsi_prepare_skb fndecl 4-3 28075 NULL
151790 +enable_so_db_addr_mlx4_ib_create_cq_28077 db_addr mlx4_ib_create_cq 0 28077 NULL
151791 +enable_so_bio_slab_max_vardecl_bio_c_28087 bio_slab_max vardecl_bio.c 0 28087 NULL
151792 +enable_so_xlog_state_get_iclog_space_fndecl_28090 xlog_state_get_iclog_space fndecl 2 28090 NULL
151793 +enable_so_vxfs_read_olt_fndecl_28091 vxfs_read_olt fndecl 2 28091 NULL
151794 +enable_so_llcp_sock_recvmsg_fndecl_28095 llcp_sock_recvmsg fndecl 3 28095 NULL
151795 +enable_so_tool_peer_db_write_fndecl_28104 tool_peer_db_write fndecl 3 28104 NULL
151796 +enable_so_xlvbd_init_blk_queue_fndecl_28107 xlvbd_init_blk_queue fndecl 2-3-4 28107 NULL nohasharray
151797 +enable_so_udf_check_anchor_block_fndecl_28107 udf_check_anchor_block fndecl 2 28107 &enable_so_xlvbd_init_blk_queue_fndecl_28107
151798 +enable_so_gru_alloc_thread_state_fndecl_28109 gru_alloc_thread_state fndecl 2 28109 NULL
151799 +enable_so_xfs_get_extsz_hint_fndecl_28128 xfs_get_extsz_hint fndecl 0 28128 NULL
151800 +enable_so_m_blkbit_log_xfs_mount_28131 m_blkbit_log xfs_mount 0 28131 NULL
151801 +enable_so_unit_size_pcpu_alloc_info_28146 unit_size pcpu_alloc_info 0 28146 NULL
151802 +enable_so_cur_page_offset_dio_submit_28153 cur_page_offset dio_submit 0 28153 NULL
151803 +enable_so_cfg80211_disconnected_fndecl_28155 cfg80211_disconnected fndecl 4 28155 NULL
151804 +enable_so_af9013_rd_regs_fndecl_28157 af9013_rd_regs fndecl 4 28157 NULL nohasharray
151805 +enable_so_qib_alloc_fast_reg_mr_fndecl_28157 qib_alloc_fast_reg_mr fndecl 2 28157 &enable_so_af9013_rd_regs_fndecl_28157
151806 +enable_so_x_drm_fb_helper_crtc_28166 x drm_fb_helper_crtc 0 28166 NULL
151807 +enable_so__ocfs2_free_suballoc_bits_fndecl_28174 _ocfs2_free_suballoc_bits fndecl 5 28174 NULL
151808 +enable_so___iscsi_conn_send_pdu_fndecl_28181 __iscsi_conn_send_pdu fndecl 4 28181 NULL
151809 +enable_so___dn_setsockopt_fndecl_28183 __dn_setsockopt fndecl 5 28183 NULL
151810 +enable_so_res_length_dlm_rsb_28184 res_length dlm_rsb 0 28184 NULL
151811 +enable_so_ixgbe_fcoe_get_tc_fndecl_28191 ixgbe_fcoe_get_tc fndecl 0 28191 NULL
151812 +enable_so_ttm_dma_pool_alloc_new_pages_fndecl_28194 ttm_dma_pool_alloc_new_pages fndecl 3 28194 NULL
151813 +enable_so_cirrus_gem_create_fndecl_28197 cirrus_gem_create fndecl 2 28197 NULL
151814 +enable_so_snd_pcm_lib_preallocate_pages_for_all_fndecl_28203 snd_pcm_lib_preallocate_pages_for_all fndecl 4 28203 NULL
151815 +enable_so_ast_bo_create_fndecl_28209 ast_bo_create fndecl 2 28209 NULL
151816 +enable_so____clear_user_fndecl_28212 ___clear_user fndecl 0 28212 NULL
151817 +enable_so_lec_change_mtu_fndecl_28213 lec_change_mtu fndecl 2 28213 NULL
151818 +enable_so_ext4_get_block_write_nolock_fndecl_28214 ext4_get_block_write_nolock fndecl 2 28214 NULL
151819 +enable_so_s_blocksize_bits_super_block_28225 s_blocksize_bits super_block 0 28225 NULL
151820 +enable_so_space_slots_btrfs_ioctl_space_args_28231 space_slots btrfs_ioctl_space_args 0 28231 NULL
151821 +enable_so_blk_update_request_fndecl_28233 blk_update_request fndecl 3 28233 NULL
151822 +enable_so_mux_device_request_fndecl_28235 mux_device_request fndecl 7 28235 NULL nohasharray
151823 +enable_so_l2cap_mtu_vardecl_core_c_28235 l2cap_mtu vardecl_core.c 0 28235 &enable_so_mux_device_request_fndecl_28235
151824 +enable_so_bits_mpidr_hash_28236 bits mpidr_hash 0 28236 NULL
151825 +enable_so_ext3_nfs_get_inode_fndecl_28245 ext3_nfs_get_inode fndecl 2 28245 NULL
151826 +enable_so_ino_bfs_dirent_28246 ino bfs_dirent 0 28246 NULL
151827 +enable_so_ip_make_skb_fndecl_28250 ip_make_skb fndecl 6-5 28250 NULL
151828 +enable_so_ea_set_i_fndecl_28261 ea_set_i fndecl 5 28261 NULL
151829 +enable_so_ucs2_strlen_fndecl_28265 ucs2_strlen fndecl 0 28265 NULL
151830 +enable_so_x1_osd_cmd_s_28266 x1 osd_cmd_s 0 28266 NULL
151831 +enable_so_rxbufsize_dma_info_28275 rxbufsize dma_info 0 28275 NULL
151832 +enable_so_reg_start_ath6kl_diag_reg_info_28282 reg_start ath6kl_diag_reg_info 0 28282 NULL nohasharray
151833 +enable_so_pio2k_bufbase_qib_devdata_28282 pio2k_bufbase qib_devdata 0 28282 &enable_so_reg_start_ath6kl_diag_reg_info_28282 nohasharray
151834 +enable_so_buf_start_hi_rx_buf_desc_28282 buf_start_hi rx_buf_desc 0 28282 &enable_so_pio2k_bufbase_qib_devdata_28282
151835 +enable_so_hash_ipport4_expire_fndecl_28290 hash_ipport4_expire fndecl 4 28290 NULL
151836 +enable_so_value_type_datum_28292 value type_datum 0 28292 NULL nohasharray
151837 +enable_so_read32_ssb_bus_ops_28292 read32 ssb_bus_ops 0 28292 &enable_so_value_type_datum_28292
151838 +enable_so_rxsupport_size_ipg_nic_private_28297 rxsupport_size ipg_nic_private 0 28297 NULL
151839 +enable_so_byte_count_il_rx_phy_res_28304 byte_count il_rx_phy_res 0 28304 NULL
151840 +enable_so_flags2_psb_s_28305 flags2 psb_s 0 28305 NULL
151841 +enable_so_create_trace_uprobe_fndecl_28307 create_trace_uprobe fndecl 1 28307 NULL
151842 +enable_so_buf_addr_mlx4_ib_resize_cq_28313 buf_addr mlx4_ib_resize_cq 0 28313 NULL
151843 +enable_so_sst25l_read_fndecl_28315 sst25l_read fndecl 3 28315 NULL
151844 +enable_so_comedi_read_fndecl_28316 comedi_read fndecl 3 28316 NULL
151845 +enable_so_xfs_btree_readahead_ptr_fndecl_28317 xfs_btree_readahead_ptr fndecl 3 28317 NULL
151846 +enable_so_npages_mlx4_buf_28321 npages mlx4_buf 0 28321 NULL
151847 +enable_so_set_video_mode_Kiara_fndecl_28325 set_video_mode_Kiara fndecl 4 28325 NULL
151848 +enable_so__iwl_dbgfs_disable_power_off_write_fndecl_28328 _iwl_dbgfs_disable_power_off_write fndecl 3 28328 NULL nohasharray
151849 +enable_so_raw_descs_length_ffs_data_28328 raw_descs_length ffs_data 0 28328 &enable_so__iwl_dbgfs_disable_power_off_write_fndecl_28328
151850 +enable_so_max_segment_size_brcmf_sdio_dev_28330 max_segment_size brcmf_sdio_dev 0 28330 NULL
151851 +enable_so_rs_get_adjacent_rate_fndecl_28334 rs_get_adjacent_rate fndecl 2 28334 NULL
151852 +enable_so_svm_msrpm_offset_fndecl_28343 svm_msrpm_offset fndecl 0-1 28343 NULL
151853 +enable_so_name_in_log_ref_fndecl_28346 name_in_log_ref fndecl 4-5 28346 NULL nohasharray
151854 +enable_so_ie_length_ndis_80211_bssid_ex_28346 ie_length ndis_80211_bssid_ex 0 28346 &enable_so_name_in_log_ref_fndecl_28346
151855 +enable_so_plcp_mimo2_il_rate_info_28347 plcp_mimo2 il_rate_info 0 28347 NULL
151856 +enable_so_fnic_trace_ctrl_write_fndecl_28350 fnic_trace_ctrl_write fndecl 3 28350 NULL
151857 +enable_so_c4iw_reg_user_mr_fndecl_28358 c4iw_reg_user_mr fndecl 2 28358 NULL nohasharray
151858 +enable_so_j_blocksize_journal_s_28358 j_blocksize journal_s 0 28358 &enable_so_c4iw_reg_user_mr_fndecl_28358
151859 +enable_so_pmcraid_notify_aen_fndecl_28361 pmcraid_notify_aen fndecl 3 28361 NULL
151860 +enable_so_carl9170_rx_fndecl_28363 carl9170_rx fndecl 3 28363 NULL
151861 +enable_so_dma_lch_count_vardecl_dma_c_28369 dma_lch_count vardecl_dma.c 0 28369 NULL
151862 +enable_so_kvm_lapic_enable_pv_eoi_fndecl_28370 kvm_lapic_enable_pv_eoi fndecl 2 28370 NULL
151863 +enable_so_snd_emu10k1_fx8010_tram_setup_fndecl_28371 snd_emu10k1_fx8010_tram_setup fndecl 2 28371 NULL nohasharray
151864 +enable_so_nbytes_btrfs_inode_item_28371 nbytes btrfs_inode_item 0 28371 &enable_so_snd_emu10k1_fx8010_tram_setup_fndecl_28371
151865 +enable_so_hostap_80211_get_hdrlen_fndecl_28372 hostap_80211_get_hdrlen fndecl 0 28372 NULL nohasharray
151866 +enable_so_count_atl1e_tx_ring_28372 count atl1e_tx_ring 0 28372 &enable_so_hostap_80211_get_hdrlen_fndecl_28372
151867 +enable_so_usbat_multiple_write_fndecl_28375 usbat_multiple_write fndecl 4 28375 NULL nohasharray
151868 +enable_so_init_tid_tabs_fndecl_28375 init_tid_tabs fndecl 4-3-2 28375 &enable_so_usbat_multiple_write_fndecl_28375
151869 +enable_so_bio_integrity_trim_fndecl_28376 bio_integrity_trim fndecl 2-3 28376 NULL
151870 +enable_so_simple_attr_write_fndecl_28383 simple_attr_write fndecl 3 28383 NULL
151871 +enable_so___bpf_fill_ja_fndecl_28393 __bpf_fill_ja fndecl 2 28393 NULL
151872 +enable_so_interrupt_in_endpointAddress_usb_serial_port_28398 interrupt_in_endpointAddress usb_serial_port 0 28398 NULL
151873 +enable_so_il4965_stats_flag_fndecl_28402 il4965_stats_flag fndecl 0-3 28402 NULL nohasharray
151874 +enable_so_cxd2820r_rd_regs_fndecl_28402 cxd2820r_rd_regs fndecl 4 28402 &enable_so_il4965_stats_flag_fndecl_28402
151875 +enable_so_channel_bc_state_28411 channel bc_state 0 28411 NULL
151876 +enable_so_xfs_inumbers_fmt_fndecl_28418 xfs_inumbers_fmt fndecl 3 28418 NULL
151877 +enable_so_st_blocks_p9_stat_dotl_28419 st_blocks p9_stat_dotl 0 28419 NULL
151878 +enable_so_dma_size_cx25821_audio_dev_28423 dma_size cx25821_audio_dev 0 28423 NULL
151879 +enable_so_s_blocks_per_group_ext3_sb_info_28428 s_blocks_per_group ext3_sb_info 0 28428 NULL
151880 +enable_so_jfs_issue_discard_fndecl_28440 jfs_issue_discard fndecl 3-2 28440 NULL
151881 +enable_so_sb_agcount_xfs_sb_28441 sb_agcount xfs_sb 0 28441 NULL
151882 +enable_so_stripe_size_bcache_device_28454 stripe_size bcache_device 0 28454 NULL
151883 +enable_so_mi_entries_per_block_nilfs_mdt_info_28458 mi_entries_per_block nilfs_mdt_info 0 28458 NULL
151884 +enable_so_fc2580_wr_regs_fndecl_28460 fc2580_wr_regs fndecl 4 28460 NULL nohasharray
151885 +enable_so_irda_connect_confirm_fndecl_28460 irda_connect_confirm fndecl 4 28460 &enable_so_fc2580_wr_regs_fndecl_28460
151886 +enable_so_SyS_add_key_fndecl_28465 SyS_add_key fndecl 4 28465 NULL
151887 +enable_so_md_offset_drbd_md_28466 md_offset drbd_md 0 28466 NULL
151888 +enable_so_data_out_size_mpt3_ioctl_command_28472 data_out_size mpt3_ioctl_command 0 28472 NULL
151889 +enable_so_osd_upper_vardecl_ivtvfb_c_28473 osd_upper vardecl_ivtvfb.c 0 28473 NULL nohasharray
151890 +enable_so_ath6kl_wmi_add_wow_pattern_cmd_fndecl_28473 ath6kl_wmi_add_wow_pattern_cmd fndecl 4 28473 &enable_so_osd_upper_vardecl_ivtvfb_c_28473
151891 +enable_so_spidev_ioctl_fndecl_28477 spidev_ioctl fndecl 2 28477 NULL
151892 +enable_so_pa_pstart_ext4_prealloc_space_28478 pa_pstart ext4_prealloc_space 0 28478 NULL
151893 +enable_so_ath9k_dump_4k_modal_eeprom_fndecl_28480 ath9k_dump_4k_modal_eeprom fndecl 2-3 28480 NULL nohasharray
151894 +enable_so_block_size_sd_28480 block_size sd 0 28480 &enable_so_ath9k_dump_4k_modal_eeprom_fndecl_28480
151895 +enable_so_rbuf_fill_level_slgt_info_28481 rbuf_fill_level slgt_info 0 28481 NULL
151896 +enable_so_csa_nrclists_cb_sequenceargs_28491 csa_nrclists cb_sequenceargs 0 28491 NULL
151897 +enable_so_wl1271_sdio_set_block_size_fndecl_28494 wl1271_sdio_set_block_size fndecl 2 28494 NULL
151898 +enable_so_get_leb_cnt_fndecl_28495 get_leb_cnt fndecl 2 28495 NULL
151899 +enable_so_len_sctp_tsnmap_28496 len sctp_tsnmap 0 28496 NULL
151900 +enable_so_xfs_rtallocate_extent_exact_fndecl_28498 xfs_rtallocate_extent_exact fndecl 3-5-9 28498 NULL
151901 +enable_so_num_vmdq_msix_i40e_pf_28501 num_vmdq_msix i40e_pf 0 28501 NULL
151902 +enable_so_read_phy_reg_fndecl_28509 read_phy_reg fndecl 0 28509 NULL
151903 +enable_so_fll_fout_wm8993_priv_28516 fll_fout wm8993_priv 0 28516 NULL
151904 +enable_so_free_tind_blocks_fndecl_28525 free_tind_blocks fndecl 3 28525 NULL
151905 +enable_so_src_width_snd_pcm_plugin_28529 src_width snd_pcm_plugin 0 28529 NULL
151906 +enable_so_max_rds_rings_qlcnic_adapter_28536 max_rds_rings qlcnic_adapter 0 28536 NULL
151907 +enable_so_ext4_bread_fndecl_28538 ext4_bread fndecl 3 28538 NULL
151908 +enable_so_btcx_screen_clips_fndecl_28540 btcx_screen_clips fndecl 2-1 28540 NULL
151909 +enable_so_get_virtual_node_size_fndecl_28543 get_virtual_node_size fndecl 0 28543 NULL
151910 +enable_so_PRO_RATE_DEFAULT_vardecl_ice1712_c_28563 PRO_RATE_DEFAULT vardecl_ice1712.c 0 28563 NULL
151911 +enable_so_wil_write_back_fndecl_28568 wil_write_back fndecl 3 28568 NULL
151912 +enable_so_nvme_npages_fndecl_28569 nvme_npages fndecl 0-1 28569 NULL
151913 +enable_so_out_max_chans_snd_card_asihpi_28574 out_max_chans snd_card_asihpi 0 28574 NULL
151914 +enable_so__iwl_dbgfs_ss_force_write_fndecl_28587 _iwl_dbgfs_ss_force_write fndecl 3 28587 NULL
151915 +enable_so_befs_count_blocks_fndecl_28591 befs_count_blocks fndecl 0 28591 NULL
151916 +enable_so_icsk_pmtu_cookie_inet_connection_sock_28598 icsk_pmtu_cookie inet_connection_sock 0 28598 NULL
151917 +enable_so_n_devs_pci_id_table_28599 n_devs pci_id_table 0 28599 NULL nohasharray
151918 +enable_so_bm_status_write_fndecl_28599 bm_status_write fndecl 3 28599 &enable_so_n_devs_pci_id_table_28599 nohasharray
151919 +enable_so_menu_count_uvc_xu_control_mapping_28599 menu_count uvc_xu_control_mapping 0 28599 &enable_so_bm_status_write_fndecl_28599
151920 +enable_so_status_smsc9420_dma_desc_28600 status smsc9420_dma_desc 0 28600 NULL
151921 +enable_so_stride_usX2Ydev_28605 stride usX2Ydev 0 28605 NULL
151922 +enable_so_gru_assign_context_number_fndecl_28616 gru_assign_context_number fndecl 0 28616 NULL
151923 +enable_so_subsystem_filter_write_fndecl_28621 subsystem_filter_write fndecl 3 28621 NULL
151924 +enable_so_s_inode_size_ext4_sb_info_28625 s_inode_size ext4_sb_info 0 28625 NULL
151925 +enable_so_cdc_ncm_min_dgram_size_fndecl_28632 cdc_ncm_min_dgram_size fndecl 0 28632 NULL nohasharray
151926 +enable_so__get_block_create_0_fndecl_28632 _get_block_create_0 fndecl 2 28632 &enable_so_cdc_ncm_min_dgram_size_fndecl_28632
151927 +enable_so_key_size_ethtool_rxfh_28633 key_size ethtool_rxfh 0 28633 NULL
151928 +enable_so_log_max_len_server_hdr_28634 log_max_len server_hdr 0 28634 NULL
151929 +enable_so_p_vaddr_elf32_phdr_28641 p_vaddr elf32_phdr 0 28641 NULL
151930 +enable_so_usb_stream_new_fndecl_28646 usb_stream_new fndecl 6-8-5-7-3-4 28646 NULL nohasharray
151931 +enable_so_ocfs2_write_begin_fndecl_28646 ocfs2_write_begin fndecl 3-4 28646 &enable_so_usb_stream_new_fndecl_28646
151932 +enable_so_cw1200_spi_memcpy_fromio_fndecl_28649 cw1200_spi_memcpy_fromio fndecl 4 28649 NULL
151933 +enable_so_alloc_size_chunk_28657 alloc_size chunk 0 28657 NULL
151934 +enable_so_ipg_nic_change_mtu_fndecl_28665 ipg_nic_change_mtu fndecl 2 28665 NULL
151935 +enable_so_xbofs_delay_irda_skb_cb_28676 xbofs_delay irda_skb_cb 0 28676 NULL
151936 +enable_so_fill_isoc_urb_fndecl_28690 fill_isoc_urb fndecl 6-5-3 28690 NULL
151937 +enable_so_offset_cache_reader_28697 offset cache_reader 0 28697 NULL
151938 +enable_so_bclean_fndecl_28699 bclean fndecl 3 28699 NULL
151939 +enable_so_cw_bmove_fndecl_28704 cw_bmove fndecl 8-4-6-7-3-5 28704 NULL nohasharray
151940 +enable_so_size_fuse_notify_store_out_28704 size fuse_notify_store_out 0 28704 &enable_so_cw_bmove_fndecl_28704
151941 +enable_so_scrub_print_warning_inode_fndecl_28711 scrub_print_warning_inode fndecl 1-3 28711 NULL
151942 +enable_so_lpfc_idiag_ctlacc_write_fndecl_28715 lpfc_idiag_ctlacc_write fndecl 3 28715 NULL
151943 +enable_so_nilfs_bmap_lookup_contig_fndecl_28717 nilfs_bmap_lookup_contig fndecl 0 28717 NULL
151944 +enable_so_phys_smscore_buffer_t_28719 phys smscore_buffer_t 0 28719 NULL
151945 +enable_so_xfs_rtcheck_alloc_range_fndecl_28722 xfs_rtcheck_alloc_range fndecl 3 28722 NULL
151946 +enable_so_d40_prep_memcpy_fndecl_28724 d40_prep_memcpy fndecl 4 28724 NULL nohasharray
151947 +enable_so_note_last_dentry_fndecl_28724 note_last_dentry fndecl 3 28724 &enable_so_d40_prep_memcpy_fndecl_28724
151948 +enable_so_num_pports_qib_devdata_28736 num_pports qib_devdata 0 28736 NULL
151949 +enable_so_gss_krb5_aes_decrypt_fndecl_28742 gss_krb5_aes_decrypt fndecl 2 28742 NULL nohasharray
151950 +enable_so_size_mspro_sys_attr_28742 size mspro_sys_attr 0 28742 &enable_so_gss_krb5_aes_decrypt_fndecl_28742
151951 +enable_so_batadv_iv_ogm_orig_del_if_fndecl_28743 batadv_iv_ogm_orig_del_if fndecl 2 28743 NULL
151952 +enable_so_ns_pseg_offset_the_nilfs_28744 ns_pseg_offset the_nilfs 0 28744 NULL
151953 +enable_so_batadv_iv_ogm_orig_add_if_fndecl_28753 batadv_iv_ogm_orig_add_if fndecl 2 28753 NULL
151954 +enable_so_fw_device_op_ioctl_fndecl_28760 fw_device_op_ioctl fndecl 2 28760 NULL
151955 +enable_so_enc28j60_packet_write_fndecl_28762 enc28j60_packet_write fndecl 2 28762 NULL
151956 +enable_so_default_radio_freq_vardecl_pvrusb2_hdw_c_28767 default_radio_freq vardecl_pvrusb2-hdw.c 0 28767 NULL
151957 +enable_so_C_SYSC_migrate_pages_fndecl_28785 C_SYSC_migrate_pages fndecl 2 28785 NULL
151958 +enable_so_tcp_parse_fastopen_option_fndecl_28793 tcp_parse_fastopen_option fndecl 1 28793 NULL
151959 +enable_so_tv_freq_bttv_28796 tv_freq bttv 0 28796 NULL
151960 +enable_so_psbfb_alloc_fndecl_28804 psbfb_alloc fndecl 2 28804 NULL
151961 +enable_so_ext4_nfs_get_inode_fndecl_28806 ext4_nfs_get_inode fndecl 2 28806 NULL
151962 +enable_so_e820_remove_range_fndecl_28810 e820_remove_range fndecl 2-1 28810 NULL nohasharray
151963 +enable_so_ide_queue_pc_tail_fndecl_28810 ide_queue_pc_tail fndecl 5 28810 &enable_so_e820_remove_range_fndecl_28810
151964 +enable_so_btrfs_alloc_delayed_item_fndecl_28813 btrfs_alloc_delayed_item fndecl 1 28813 NULL
151965 +enable_so_sisusb_send_bridge_packet_fndecl_28818 sisusb_send_bridge_packet fndecl 2 28818 NULL nohasharray
151966 +enable_so_io_tlb_index_vardecl_swiotlb_c_28818 io_tlb_index vardecl_swiotlb.c 0 28818 &enable_so_sisusb_send_bridge_packet_fndecl_28818
151967 +enable_so_sdio_memcpy_toio_fndecl_28828 sdio_memcpy_toio fndecl 4 28828 NULL
151968 +enable_so_right_qxl_urect_28833 right qxl_urect 0 28833 NULL nohasharray
151969 +enable_so_ivtv_udma_get_page_info_fndecl_28833 ivtv_udma_get_page_info fndecl 2 28833 &enable_so_right_qxl_urect_28833
151970 +enable_so_dm_table_add_target_fndecl_28838 dm_table_add_target fndecl 4-3 28838 NULL
151971 +enable_so_virtio32_to_cpu_fndecl_28839 virtio32_to_cpu fndecl 0 28839 NULL
151972 +enable_so_dsp_buffer_alloc_fndecl_28855 dsp_buffer_alloc fndecl 2 28855 NULL
151973 +enable_so_f_adc_airspy_28856 f_adc airspy 0 28856 NULL nohasharray
151974 +enable_so_split_fndecl_28856 split fndecl 2 28856 &enable_so_f_adc_airspy_28856
151975 +enable_so_snd_ctl_elem_user_tlv_fndecl_28860 snd_ctl_elem_user_tlv fndecl 3 28860 NULL
151976 +enable_so_mt9t031_set_params_fndecl_28862 mt9t031_set_params fndecl 4-3 28862 NULL nohasharray
151977 +enable_so_nat_blkaddr_f2fs_nm_info_28862 nat_blkaddr f2fs_nm_info 0 28862 &enable_so_mt9t031_set_params_fndecl_28862
151978 +enable_so_ie_length_brcmf_bss_info_le_28867 ie_length brcmf_bss_info_le 0 28867 NULL
151979 +enable_so_usb_stor_access_xfer_buf_fndecl_28868 usb_stor_access_xfer_buf fndecl 0-2 28868 NULL
151980 +enable_so_i2c_master_recv_fndecl_28869 i2c_master_recv fndecl 3 28869 NULL
151981 +enable_so_receive_new_fndecl_28872 receive_new fndecl 3 28872 NULL nohasharray
151982 +enable_so_ep_out_mcs_cb_28872 ep_out mcs_cb 0 28872 &enable_so_receive_new_fndecl_28872
151983 +enable_so_s_bmap_count_affs_sb_info_28873 s_bmap_count affs_sb_info 0 28873 NULL
151984 +enable_so_TupleOffset_tuple_t_28876 TupleOffset tuple_t 0 28876 NULL
151985 +enable_so_zlib_inflateInit2_fndecl_28887 zlib_inflateInit2 fndecl 2 28887 NULL
151986 +enable_so_map_count_mm_struct_28894 map_count mm_struct 0 28894 NULL
151987 +enable_so_t_elist_cb_state_28900 t elist_cb_state 0 28900 NULL
151988 +enable_so_ss_in_channels_hdspm_28903 ss_in_channels hdspm 0 28903 NULL
151989 +enable_so_ngpios_sx150x_device_data_28905 ngpios sx150x_device_data 0 28905 NULL
151990 +enable_so_ieee80211_get_num_supported_channels_fndecl_28907 ieee80211_get_num_supported_channels fndecl 0 28907 NULL
151991 +enable_so_usb_pipe_handle_ath6kl_usb_pipe_28910 usb_pipe_handle ath6kl_usb_pipe 0 28910 NULL
151992 +enable_so_hslen_vardecl_matroxfb_base_c_28914 hslen vardecl_matroxfb_base.c 0 28914 NULL
151993 +enable_so___virtio16_to_cpu_fndecl_28917 __virtio16_to_cpu fndecl 0 28917 NULL
151994 +enable_so_c_ssize_f_uac2_opts_28922 c_ssize f_uac2_opts 0 28922 NULL
151995 +enable_so_exclude_unencrypted_atmel_private_28933 exclude_unencrypted atmel_private 0 28933 NULL
151996 +enable_so_usbat_write_block_fndecl_28938 usbat_write_block fndecl 4 28938 NULL
151997 +enable_so_SYSC_getrandom_fndecl_28941 SYSC_getrandom fndecl 2 28941 NULL
151998 +enable_so_ath6kl_power_params_write_fndecl_28953 ath6kl_power_params_write fndecl 3 28953 NULL
151999 +enable_so_gb_len_pn533_28959 gb_len pn533 0 28959 NULL
152000 +enable_so_hpfs_alloc_anode_fndecl_28960 hpfs_alloc_anode fndecl 2 28960 NULL
152001 +enable_so_usb_stor_bulk_transfer_buf_fndecl_28961 usb_stor_bulk_transfer_buf fndecl 4-2 28961 NULL nohasharray
152002 +enable_so_get_segment_selector_fndecl_28961 get_segment_selector fndecl 0 28961 &enable_so_usb_stor_bulk_transfer_buf_fndecl_28961
152003 +enable_so_split_vma_fndecl_28963 split_vma fndecl 3 28963 NULL
152004 +enable_so_tcp_send_rcvq_fndecl_28967 tcp_send_rcvq fndecl 3 28967 NULL
152005 +enable_so_sctp_transport_update_pmtu_fndecl_28973 sctp_transport_update_pmtu fndecl 3 28973 NULL
152006 +enable_so_syncmaxsize_snd_usb_endpoint_28987 syncmaxsize snd_usb_endpoint 0 28987 NULL
152007 +enable_so_aper_size_agp_kern_info_28990 aper_size agp_kern_info 0 28990 NULL
152008 +enable_so_cma_clear_bitmap_fndecl_28991 cma_clear_bitmap fndecl 3 28991 NULL
152009 +enable_so_klen_WepKeyRid_28997 klen WepKeyRid 0 28997 NULL
152010 +enable_so_ext4_get_inline_size_fndecl_28998 ext4_get_inline_size fndecl 0 28998 NULL
152011 +enable_so_handle_unit_fndecl_29000 handle_unit fndecl 0-1 29000 NULL nohasharray
152012 +enable_so_prio_io_fndecl_29000 prio_io fndecl 2 29000 &enable_so_handle_unit_fndecl_29000
152013 +enable_so_len_p54p_desc_29001 len p54p_desc 0 29001 NULL nohasharray
152014 +enable_so_buf_read_ptr_comedi_async_29001 buf_read_ptr comedi_async 0 29001 &enable_so_len_p54p_desc_29001
152015 +enable_so_nl80211_send_mgmt_fndecl_29002 nl80211_send_mgmt fndecl 7 29002 NULL nohasharray
152016 +enable_so_sel_write_create_fndecl_29002 sel_write_create fndecl 3 29002 &enable_so_nl80211_send_mgmt_fndecl_29002
152017 +enable_so_num_lns_csio_hw_29004 num_lns csio_hw 0 29004 NULL
152018 +enable_so_ipath_palign_ipath_devdata_29005 ipath_palign ipath_devdata 0 29005 NULL
152019 +enable_so___kfifo_out_peek_fndecl_29010 __kfifo_out_peek fndecl 0-3 29010 NULL
152020 +enable_so_seq_copy_in_user_fndecl_29019 seq_copy_in_user fndecl 3 29019 NULL
152021 +enable_so_sb_dmap_hpfs_sb_info_29020 sb_dmap hpfs_sb_info 0 29020 NULL
152022 +enable_so_j_len_reiserfs_journal_list_29021 j_len reiserfs_journal_list 0 29021 NULL
152023 +enable_so_bc_buf_size_ptlrpc_service_buf_conf_29025 bc_buf_size ptlrpc_service_buf_conf 0 29025 NULL
152024 +enable_so_nft_value_dump_fndecl_29030 nft_value_dump fndecl 3 29030 NULL nohasharray
152025 +enable_so_tcf_register_action_fndecl_29030 tcf_register_action fndecl 2 29030 &enable_so_nft_value_dump_fndecl_29030
152026 +enable_so_at24_read_fndecl_29031 at24_read fndecl 4 29031 NULL
152027 +enable_so_drm_vblank_init_fndecl_29041 drm_vblank_init fndecl 2 29041 NULL
152028 +enable_so_of_get_available_child_count_fndecl_29042 of_get_available_child_count fndecl 0 29042 NULL
152029 +enable_so_batadv_skb_head_push_fndecl_29043 batadv_skb_head_push fndecl 2 29043 NULL
152030 +enable_so_memory_size_kvm_userspace_memory_region_29047 memory_size kvm_userspace_memory_region 0 29047 NULL
152031 +enable_so_qib_get_base_info_fndecl_29050 qib_get_base_info fndecl 3 29050 NULL
152032 +enable_so_scsi_debug_max_queue_vardecl_scsi_debug_c_29056 scsi_debug_max_queue vardecl_scsi_debug.c 0 29056 NULL nohasharray
152033 +enable_so_str_to_user_fndecl_29056 str_to_user fndecl 2 29056 &enable_so_scsi_debug_max_queue_vardecl_scsi_debug_c_29056
152034 +enable_so____alloc_bootmem_fndecl_29057 ___alloc_bootmem fndecl 2-1 29057 NULL
152035 +enable_so_fbcon_scroll_fndecl_29060 fbcon_scroll fndecl 5 29060 NULL nohasharray
152036 +enable_so_len_wmi_rx_mgmt_info_29060 len wmi_rx_mgmt_info 0 29060 &enable_so_fbcon_scroll_fndecl_29060
152037 +enable_so___add_discard_entry_fndecl_29062 __add_discard_entry fndecl 3-4 29062 NULL
152038 +enable_so_vactive_hi_oaktrail_timing_info_29063 vactive_hi oaktrail_timing_info 0 29063 NULL
152039 +enable_so_mlx4_create_zones_fndecl_29064 mlx4_create_zones fndecl 4-3-5 29064 NULL
152040 +enable_so_use_dmio_fndecl_29065 use_dmio fndecl 3 29065 NULL
152041 +enable_so_ucFakeEDIDLength__ATOM_FAKE_EDID_PATCH_RECORD_29067 ucFakeEDIDLength _ATOM_FAKE_EDID_PATCH_RECORD 0 29067 NULL
152042 +enable_so_i40e_dbg_command_write_fndecl_29070 i40e_dbg_command_write fndecl 3 29070 NULL
152043 +enable_so_hash_shift_flow_cache_29075 hash_shift flow_cache 0 29075 NULL
152044 +enable_so_tse_change_mtu_fndecl_29076 tse_change_mtu fndecl 2 29076 NULL
152045 +enable_so_dev_irnet_write_fndecl_29077 dev_irnet_write fndecl 3 29077 NULL
152046 +enable_so_lprocfs_wr_evict_client_fndecl_29081 lprocfs_wr_evict_client fndecl 3 29081 NULL
152047 +enable_so_v_margin_fb_cvt_data_29097 v_margin fb_cvt_data 0 29097 NULL
152048 +enable_so_num_counters_x86_pmu_29110 num_counters x86_pmu 0 29110 NULL
152049 +enable_so_dlm_lowcomms_get_buffer_fndecl_29111 dlm_lowcomms_get_buffer fndecl 2 29111 NULL
152050 +enable_so_bttv_read_fndecl_29115 bttv_read fndecl 3 29115 NULL
152051 +enable_so_jfs_iget_fndecl_29122 jfs_iget fndecl 2 29122 NULL
152052 +enable_so_sca3000_read_first_n_hw_rb_fndecl_29124 sca3000_read_first_n_hw_rb fndecl 2 29124 NULL
152053 +enable_so_ioctl_code_usbdevfs_ioctl_29134 ioctl_code usbdevfs_ioctl 0 29134 NULL
152054 +enable_so_max_dump_cnt_ramoops_context_29141 max_dump_cnt ramoops_context 0 29141 NULL
152055 +enable_so_send_bulk_pipe_us_data_29148 send_bulk_pipe us_data 0 29148 NULL
152056 +enable_so_width_usbtv_29152 width usbtv 0 29152 NULL
152057 +enable_so_algorithm_raid_type_29156 algorithm raid_type 0 29156 NULL
152058 +enable_so_kmem_zalloc_fndecl_29157 kmem_zalloc fndecl 1 29157 NULL
152059 +enable_so_hsync_offset_hi_oaktrail_timing_info_29159 hsync_offset_hi oaktrail_timing_info 0 29159 NULL nohasharray
152060 +enable_so_W6692B_empty_fifo_fndecl_29159 W6692B_empty_fifo fndecl 2 29159 &enable_so_hsync_offset_hi_oaktrail_timing_info_29159
152061 +enable_so_current_rx_bytes_printer_dev_29165 current_rx_bytes printer_dev 0 29165 NULL
152062 +enable_so_surface_height_drm_fb_helper_surface_size_29174 surface_height drm_fb_helper_surface_size 0 29174 NULL
152063 +enable_so_quirk_io_fndecl_29178 quirk_io fndecl 3 29178 NULL
152064 +enable_so_dma_in_streamzap_ir_29180 dma_in streamzap_ir 0 29180 NULL nohasharray
152065 +enable_so_num_segments_acpi_namestring_info_29180 num_segments acpi_namestring_info 0 29180 &enable_so_dma_in_streamzap_ir_29180
152066 +enable_so_vp_try_to_find_vqs_fndecl_29181 vp_try_to_find_vqs fndecl 2 29181 NULL
152067 +enable_so_ircomm_control_indication_fndecl_29186 ircomm_control_indication fndecl 3 29186 NULL
152068 +enable_so_em28xx_i2c_read_block_fndecl_29188 em28xx_i2c_read_block fndecl 5 29188 NULL
152069 +enable_so_inode_bitmap_ext4_new_group_data_29195 inode_bitmap ext4_new_group_data 0 29195 NULL
152070 +enable_so_brcmf_config_wowl_pattern_fndecl_29198 brcmf_config_wowl_pattern fndecl 4 29198 NULL
152071 +enable_so_HFC_inw_nodebug_hfc_multi_29199 HFC_inw_nodebug hfc_multi 0 29199 NULL
152072 +enable_so_vcc_sendmsg_fndecl_29205 vcc_sendmsg fndecl 3 29205 NULL
152073 +enable_so_did_overwrite_ref_fndecl_29213 did_overwrite_ref fndecl 2 29213 NULL
152074 +enable_so_ftdi_elan_total_command_size_fndecl_29214 ftdi_elan_total_command_size fndecl 0 29214 NULL
152075 +enable_so_video_rbase_osd_info_29225 video_rbase osd_info 0 29225 NULL
152076 +enable_so_change_pte_range_fndecl_29232 change_pte_range fndecl 3 29232 NULL
152077 +enable_so_cqshift_c4iw_rdev_29241 cqshift c4iw_rdev 0 29241 NULL
152078 +enable_so_sb_dirband_start_hpfs_sb_info_29242 sb_dirband_start hpfs_sb_info 0 29242 NULL
152079 +enable_so_ptc_proc_write_fndecl_29247 ptc_proc_write fndecl 3 29247 NULL
152080 +enable_so_sg_pcopy_from_buffer_fndecl_29248 sg_pcopy_from_buffer fndecl 0 29248 NULL
152081 +enable_so_offset_rbd_obj_request_29253 offset rbd_obj_request 0 29253 NULL
152082 +enable_so_kvm_mmu_get_spte_hierarchy_fndecl_29265 kvm_mmu_get_spte_hierarchy fndecl 2 29265 NULL
152083 +enable_so_maxlen_ctl_table_29268 maxlen ctl_table 0 29268 NULL nohasharray
152084 +enable_so_sisusb_lseek_fndecl_29268 sisusb_lseek fndecl 2 29268 &enable_so_maxlen_ctl_table_29268
152085 +enable_so_rtw_malloc2d_fndecl_29269 rtw_malloc2d fndecl 3-2-1 29269 NULL
152086 +enable_so_sh_last_alloc_nilfs_sufile_header_29285 sh_last_alloc nilfs_sufile_header 0 29285 NULL
152087 +enable_so_vmbus_open_fndecl_29289 vmbus_open fndecl 3-2 29289 NULL
152088 +enable_so_btmrvl_sdio_host_to_card_fndecl_29291 btmrvl_sdio_host_to_card fndecl 3 29291 NULL
152089 +enable_so_user_ptr_drm_i915_gem_userptr_29294 user_ptr drm_i915_gem_userptr 0 29294 NULL
152090 +enable_so_xfs_handle_to_dentry_fndecl_29300 xfs_handle_to_dentry fndecl 3 29300 NULL
152091 +enable_so_mb_find_extent_fndecl_29303 mb_find_extent fndecl 2 29303 NULL
152092 +enable_so_generic_file_llseek_fndecl_29304 generic_file_llseek fndecl 2 29304 NULL
152093 +enable_so_read_w5300_priv_29306 read w5300_priv 0 29306 NULL nohasharray
152094 +enable_so_rawv6_seticmpfilter_fndecl_29306 rawv6_seticmpfilter fndecl 5-0 29306 &enable_so_read_w5300_priv_29306
152095 +enable_so_soc_mbus_image_size_fndecl_29311 soc_mbus_image_size fndecl 3-2 29311 NULL
152096 +enable_so_ddp_make_gl_fndecl_29312 ddp_make_gl fndecl 1 29312 NULL
152097 +enable_so_LNetEQAlloc_fndecl_29313 LNetEQAlloc fndecl 1 29313 NULL
152098 +enable_so_fnic_reset_stats_write_fndecl_29314 fnic_reset_stats_write fndecl 3 29314 NULL
152099 +enable_so_ip_generic_getfrag_fndecl_29320 ip_generic_getfrag fndecl 4 29320 NULL
152100 +enable_so_compat_do_arpt_set_ctl_fndecl_29323 compat_do_arpt_set_ctl fndecl 4 29323 NULL
152101 +enable_so_gather_pte_stats_fndecl_29329 gather_pte_stats fndecl 2 29329 NULL
152102 +enable_so_num_sge_ib_recv_wr_29333 num_sge ib_recv_wr 0 29333 NULL
152103 +enable_so_n_reg_rules_ieee80211_regdomain_29334 n_reg_rules ieee80211_regdomain 0 29334 NULL
152104 +enable_so_spi_tx_dma_mcp251x_priv_29337 spi_tx_dma mcp251x_priv 0 29337 NULL
152105 +enable_so_y_res_vbe_mode_ib_29340 y_res vbe_mode_ib 0 29340 NULL
152106 +enable_so_sctp_icmp_frag_needed_fndecl_29342 sctp_icmp_frag_needed fndecl 4 29342 NULL
152107 +enable_so_snd_pcm_kernel_ioctl_fndecl_29352 snd_pcm_kernel_ioctl fndecl 0 29352 NULL
152108 +enable_so_receive_copy_fndecl_29355 receive_copy fndecl 3 29355 NULL
152109 +enable_so_xfs_attr3_leaf_read_fndecl_29357 xfs_attr3_leaf_read fndecl 3 29357 NULL
152110 +enable_so_fuse_get_req_fndecl_29358 fuse_get_req fndecl 2 29358 NULL
152111 +enable_so_s_dat_entry_size_nilfs_super_block_29359 s_dat_entry_size nilfs_super_block 0 29359 NULL
152112 +enable_so_qt2160_read_block_fndecl_29365 qt2160_read_block fndecl 4 29365 NULL
152113 +enable_so_dummy_perform_transfer_fndecl_29372 dummy_perform_transfer fndecl 3 29372 NULL nohasharray
152114 +enable_so_tx_ring_size_pxa168_eth_private_29372 tx_ring_size pxa168_eth_private 0 29372 &enable_so_dummy_perform_transfer_fndecl_29372
152115 +enable_so_l2bsize_jfs_sb_info_29377 l2bsize jfs_sb_info 0 29377 NULL
152116 +enable_so_extHint_fndecl_29378 extHint fndecl 2 29378 NULL
152117 +enable_so_next_cluster_fat_boot_fsinfo_29380 next_cluster fat_boot_fsinfo 0 29380 NULL
152118 +enable_so_ib_uverbs_unmarshall_recv_fndecl_29384 ib_uverbs_unmarshall_recv fndecl 5 29384 NULL
152119 +enable_so_reiserfs_get_unused_objectid_fndecl_29387 reiserfs_get_unused_objectid fndecl 0 29387 NULL
152120 +enable_so_write_buffer_size_vardecl_ldusb_c_29393 write_buffer_size vardecl_ldusb.c 0 29393 NULL nohasharray
152121 +enable_so_acpi_id_xenpf_pcpuinfo_29393 acpi_id xenpf_pcpuinfo 0 29393 &enable_so_write_buffer_size_vardecl_ldusb_c_29393
152122 +enable_so_tun_net_change_mtu_fndecl_29398 tun_net_change_mtu fndecl 2 29398 NULL
152123 +enable_so___alloc_bootmem_low_nopanic_fndecl_29400 __alloc_bootmem_low_nopanic fndecl 2-1 29400 NULL nohasharray
152124 +enable_so_octeon_alloc_recv_info_fndecl_29400 octeon_alloc_recv_info fndecl 1 29400 &enable_so___alloc_bootmem_low_nopanic_fndecl_29400
152125 +enable_so_p1_dpll_29401 p1 dpll 0 29401 NULL
152126 +enable_so_hpfs_map_sector_fndecl_29402 hpfs_map_sector fndecl 2 29402 NULL nohasharray
152127 +enable_so_hisax_cs_setup_fndecl_29402 hisax_cs_setup fndecl 0 29402 &enable_so_hpfs_map_sector_fndecl_29402
152128 +enable_so_usnic_ib_qp_grp_dump_rows_fndecl_29404 usnic_ib_qp_grp_dump_rows fndecl 3 29404 NULL
152129 +enable_so_sisfb_mem_sis_video_info_29418 sisfb_mem sis_video_info 0 29418 NULL
152130 +enable_so_note_last_dentry_fndecl_29422 note_last_dentry fndecl 3 29422 NULL
152131 +enable_so_shash_compat_setkey_fndecl_29432 shash_compat_setkey fndecl 3 29432 NULL nohasharray
152132 +enable_so_block_extra_size_snd_util_memhdr_29432 block_extra_size snd_util_memhdr 0 29432 &enable_so_shash_compat_setkey_fndecl_29432
152133 +enable_so_ocfs2_xattr_user_set_fndecl_29433 ocfs2_xattr_user_set fndecl 4 29433 NULL
152134 +enable_so___virtio32_to_cpu_fndecl_29440 __virtio32_to_cpu fndecl 0 29440 NULL
152135 +enable_so_xfs_attr3_rmt_blocks_fndecl_29445 xfs_attr3_rmt_blocks fndecl 2 29445 NULL
152136 +enable_so_ep_in_dln2_dev_29451 ep_in dln2_dev 0 29451 NULL
152137 +enable_so_devblksize_log2_squashfs_sb_info_29455 devblksize_log2 squashfs_sb_info 0 29455 NULL
152138 +enable_so_ebt_buf_add_fndecl_29456 ebt_buf_add fndecl 3 29456 NULL
152139 +enable_so_vol_cdev_llseek_fndecl_29458 vol_cdev_llseek fndecl 2 29458 NULL
152140 +enable_so_i2c_hid_set_or_send_report_fndecl_29475 i2c_hid_set_or_send_report fndecl 5 29475 NULL
152141 +enable_so_rts51x_read_status_fndecl_29477 rts51x_read_status fndecl 4 29477 NULL
152142 +enable_so_tx_header_len_pn533_frame_ops_29478 tx_header_len pn533_frame_ops 0 29478 NULL nohasharray
152143 +enable_so_sctp_setsockopt_maxseg_fndecl_29478 sctp_setsockopt_maxseg fndecl 3 29478 &enable_so_tx_header_len_pn533_frame_ops_29478 nohasharray
152144 +enable_so_osst_read_back_buffer_and_rewrite_fndecl_29478 osst_read_back_buffer_and_rewrite fndecl 3-4-5 29478 &enable_so_sctp_setsockopt_maxseg_fndecl_29478
152145 +enable_so_ns_last_pseg_the_nilfs_29482 ns_last_pseg the_nilfs 0 29482 NULL
152146 +enable_so_qs_out_channels_hdsp_29483 qs_out_channels hdsp 0 29483 NULL
152147 +enable_so_gpiochip_add_pin_range_fndecl_29490 gpiochip_add_pin_range fndecl 5 29490 NULL nohasharray
152148 +enable_so_befs_bt_read_node_fndecl_29490 befs_bt_read_node fndecl 4 29490 &enable_so_gpiochip_add_pin_range_fndecl_29490 nohasharray
152149 +enable_so_phys_out_snd_efw_29490 phys_out snd_efw 0 29490 &enable_so_befs_bt_read_node_fndecl_29490
152150 +enable_so_pcpu_fc_alloc_fndecl_29497 pcpu_fc_alloc fndecl 3-2 29497 NULL
152151 +enable_so_raid_disks_mdu_array_info_s_29501 raid_disks mdu_array_info_s 0 29501 NULL
152152 +enable_so_ecryptfs_copy_filename_fndecl_29519 ecryptfs_copy_filename fndecl 4 29519 NULL
152153 +enable_so_nritems_btrfs_header_29521 nritems btrfs_header 0 29521 NULL
152154 +enable_so_unix_stream_connect_fndecl_29527 unix_stream_connect fndecl 3 29527 NULL
152155 +enable_so_h4_recv_buf_fndecl_29532 h4_recv_buf fndecl 4 29532 NULL nohasharray
152156 +enable_so_blocks_mmc_ioc_cmd_29532 blocks mmc_ioc_cmd 0 29532 &enable_so_h4_recv_buf_fndecl_29532
152157 +enable_so_forw_xfs_da3_icnode_hdr_29543 forw xfs_da3_icnode_hdr 0 29543 NULL
152158 +enable_so_local_max_bio_size_drbd_device_29550 local_max_bio_size drbd_device 0 29550 NULL
152159 +enable_so_ext4_xattr_trusted_set_fndecl_29556 ext4_xattr_trusted_set fndecl 4 29556 NULL nohasharray
152160 +enable_so_befs_read_lsymlink_fndecl_29556 befs_read_lsymlink fndecl 4 29556 &enable_so_ext4_xattr_trusted_set_fndecl_29556
152161 +enable_so_l2cap_chan_send_fndecl_29557 l2cap_chan_send fndecl 3 29557 NULL
152162 +enable_so_sb_c_bitmap_hpfs_sb_info_29558 sb_c_bitmap hpfs_sb_info 0 29558 NULL
152163 +enable_so_ieee80211_rx_bss_info_fndecl_29564 ieee80211_rx_bss_info fndecl 3 29564 NULL
152164 +enable_so_short_retry_limit_orinoco_private_29566 short_retry_limit orinoco_private 0 29566 NULL
152165 +enable_so_fs_devrw_entry_fndecl_29575 fs_devrw_entry fndecl 3 29575 NULL
152166 +enable_so_xstateregs_get_fndecl_29585 xstateregs_get fndecl 4 29585 NULL nohasharray
152167 +enable_so_valid_hooks_xt_table_29585 valid_hooks xt_table 0 29585 &enable_so_xstateregs_get_fndecl_29585
152168 +enable_so_num_rx_queues_e1000_adapter_29589 num_rx_queues e1000_adapter 0 29589 NULL
152169 +enable_so_ti_write_fndecl_29599 ti_write fndecl 4 29599 NULL
152170 +enable_so_queue_size_snd_timer_user_29607 queue_size snd_timer_user 0 29607 NULL
152171 +enable_so_r1_sync_page_io_fndecl_29608 r1_sync_page_io fndecl 3-2 29608 NULL
152172 +enable_so_efd_group_ext4_free_data_29619 efd_group ext4_free_data 0 29619 NULL
152173 +enable_so_escd_size_escd_info_struc_29631 escd_size escd_info_struc 0 29631 NULL
152174 +enable_so_vbi_vlen_saa7134_dev_29640 vbi_vlen saa7134_dev 0 29640 NULL nohasharray
152175 +enable_so_nicvf_init_snd_queue_fndecl_29640 nicvf_init_snd_queue fndecl 3 29640 &enable_so_vbi_vlen_saa7134_dev_29640
152176 +enable_so_placement_offset_eth_fast_path_rx_cqe_29646 placement_offset eth_fast_path_rx_cqe 0 29646 NULL
152177 +enable_so_num_counters_arpt_replace_29649 num_counters arpt_replace 0 29649 NULL
152178 +enable_so_count_vfio_pci_hot_reset_info_29655 count vfio_pci_hot_reset_info 0 29655 NULL
152179 +enable_so_split_node_fndecl_29659 split_node fndecl 0-4 29659 NULL nohasharray
152180 +enable_so_ls_num_lprocfs_stats_29659 ls_num lprocfs_stats 0 29659 &enable_so_split_node_fndecl_29659
152181 +enable_so_pci_cfg_space_size_fndecl_29666 pci_cfg_space_size fndecl 0 29666 NULL
152182 +enable_so_buf_addr_mlx4_ib_create_cq_29678 buf_addr mlx4_ib_create_cq 0 29678 NULL nohasharray
152183 +enable_so___ipv4_tun_to_nlattr_fndecl_29678 __ipv4_tun_to_nlattr fndecl 4 29678 &enable_so_buf_addr_mlx4_ib_create_cq_29678
152184 +enable_so_rtsx_usb_seq_read_register_fndecl_29680 rtsx_usb_seq_read_register fndecl 3 29680 NULL nohasharray
152185 +enable_so_mon_buff_area_alloc_contiguous_fndecl_29680 mon_buff_area_alloc_contiguous fndecl 2 29680 &enable_so_rtsx_usb_seq_read_register_fndecl_29680
152186 +enable_so_comps_used_isert_device_29683 comps_used isert_device 0 29683 NULL
152187 +enable_so_APP_len_camera_data_29686 APP_len camera_data 0 29686 NULL
152188 +enable_so_i40e_pci_sriov_configure_fndecl_29688 i40e_pci_sriov_configure fndecl 2 29688 NULL
152189 +enable_so_osd_req_write_sg_kern_fndecl_29697 osd_req_write_sg_kern fndecl 5 29697 NULL
152190 +enable_so_rds_message_alloc_fndecl_29702 rds_message_alloc fndecl 1 29702 NULL
152191 +enable_so_get_vm_area_caller_fndecl_29708 get_vm_area_caller fndecl 1 29708 NULL
152192 +enable_so_ocfs2_add_refcounted_extent_fndecl_29709 ocfs2_add_refcounted_extent fndecl 5-7-6 29709 NULL
152193 +enable_so_SGE_size__MPT_ADAPTER_29715 SGE_size _MPT_ADAPTER 0 29715 NULL
152194 +enable_so_first_sect_blkif_request_segment_29716 first_sect blkif_request_segment 0 29716 NULL
152195 +enable_so_ext4_itable_unused_count_fndecl_29718 ext4_itable_unused_count fndecl 0 29718 NULL
152196 +enable_so_maxframe_vardecl_n_hdlc_c_29719 maxframe vardecl_n_hdlc.c 0 29719 NULL
152197 +enable_so_qib_alloc_fast_reg_page_list_fndecl_29720 qib_alloc_fast_reg_page_list fndecl 2 29720 NULL
152198 +enable_so_bpp_aty128_crtc_29724 bpp aty128_crtc 0 29724 NULL nohasharray
152199 +enable_so_sel_write_disable_fndecl_29724 sel_write_disable fndecl 3 29724 &enable_so_bpp_aty128_crtc_29724
152200 +enable_so_Zlen_hfc_multi_29733 Zlen hfc_multi 0 29733 NULL nohasharray
152201 +enable_so_num_resources_mfd_cell_29733 num_resources mfd_cell 0 29733 &enable_so_Zlen_hfc_multi_29733
152202 +enable_so_target_pages_balloon_stats_29734 target_pages balloon_stats 0 29734 NULL
152203 +enable_so___ceph_tcp_sendpage_fndecl_29744 __ceph_tcp_sendpage fndecl 0 29744 NULL
152204 +enable_so_ba_param_set_wil_back_rx_29752 ba_param_set wil_back_rx 0 29752 NULL
152205 +enable_so_snd_pcm_lib_read_fndecl_29755 snd_pcm_lib_read fndecl 0 29755 NULL nohasharray
152206 +enable_so_kstrtouint_from_user_fndecl_29755 kstrtouint_from_user fndecl 2 29755 &enable_so_snd_pcm_lib_read_fndecl_29755
152207 +enable_so_curfreq_raremono_device_29760 curfreq raremono_device 0 29760 NULL
152208 +enable_so_hotplug_pages_balloon_stats_29763 hotplug_pages balloon_stats 0 29763 NULL nohasharray
152209 +enable_so_ext4_write_begin_fndecl_29763 ext4_write_begin fndecl 4-3 29763 &enable_so_hotplug_pages_balloon_stats_29763
152210 +enable_so_physical_scrub_bio_29776 physical scrub_bio 0 29776 NULL
152211 +enable_so_eqp_bdi_bd_list_29780 eqp_bdi bd_list 0 29780 NULL
152212 +enable_so_io_min_queue_limits_29785 io_min queue_limits 0 29785 NULL
152213 +enable_so_first_index_zap_details_29790 first_index zap_details 0 29790 NULL
152214 +enable_so_blk_queue_max_discard_sectors_fndecl_29799 blk_queue_max_discard_sectors fndecl 2 29799 NULL
152215 +enable_so_cxgb3_get_cpl_reply_skb_fndecl_29807 cxgb3_get_cpl_reply_skb fndecl 2 29807 NULL
152216 +enable_so_otp_read_fndecl_29809 otp_read fndecl 5-4-2 29809 NULL nohasharray
152217 +enable_so_vbe_state_size_uvesafb_par_29809 vbe_state_size uvesafb_par 0 29809 &enable_so_otp_read_fndecl_29809
152218 +enable_so_si_lasti_bfs_sb_info_29842 si_lasti bfs_sb_info 0 29842 NULL
152219 +enable_so_len_ethtool_dump_29843 len ethtool_dump 0 29843 NULL
152220 +enable_so_s_desc_per_block_ext3_sb_info_29846 s_desc_per_block ext3_sb_info 0 29846 NULL
152221 +enable_so_fq_alloc_node_fndecl_29850 fq_alloc_node fndecl 1 29850 NULL
152222 +enable_so_alloc_coherent_fndecl_29851 alloc_coherent fndecl 2 29851 NULL
152223 +enable_so_iommu_pgshift_gk20a_instmem_priv_29853 iommu_pgshift gk20a_instmem_priv 0 29853 NULL
152224 +enable_so_pvr2_buffer_get_count_fndecl_29860 pvr2_buffer_get_count fndecl 0 29860 NULL
152225 +enable_so_lower_vardecl_matroxfb_base_c_29861 lower vardecl_matroxfb_base.c 0 29861 NULL
152226 +enable_so_bfs_add_entry_fndecl_29864 bfs_add_entry fndecl 4 29864 NULL
152227 +enable_so_alloc_vmap_area_fndecl_29865 alloc_vmap_area fndecl 1-2-3 29865 NULL
152228 +enable_so_fat_attach_fndecl_29877 fat_attach fndecl 2 29877 NULL
152229 +enable_so_nfs_idmap_lookup_id_fndecl_29879 nfs_idmap_lookup_id fndecl 2 29879 NULL
152230 +enable_so_inum_btrfs_ioctl_ino_path_args_29882 inum btrfs_ioctl_ino_path_args 0 29882 NULL
152231 +enable_so_length_ndis_80211_pmkid_29893 length ndis_80211_pmkid 0 29893 NULL
152232 +enable_so_selinux_inode_setxattr_fndecl_29895 selinux_inode_setxattr fndecl 4 29895 NULL
152233 +enable_so_ovl_fill_lower_fndecl_29899 ovl_fill_lower fndecl 3 29899 NULL
152234 +enable_so_be_pci_sriov_configure_fndecl_29900 be_pci_sriov_configure fndecl 2 29900 NULL
152235 +enable_so_edge_write_fndecl_29911 edge_write fndecl 4 29911 NULL
152236 +enable_so_io_error_dio_29914 io_error dio 0 29914 NULL
152237 +enable_so_fw_imem_len_rt_firmware_29916 fw_imem_len rt_firmware 0 29916 NULL nohasharray
152238 +enable_so_PageLength__CONFIG_PAGE_HEADER_29916 PageLength _CONFIG_PAGE_HEADER 0 29916 &enable_so_fw_imem_len_rt_firmware_29916
152239 +enable_so_size_ipt_replace_29921 size ipt_replace 0 29921 NULL
152240 +enable_so_sctp_getsockopt_maxseg_fndecl_29922 sctp_getsockopt_maxseg fndecl 2 29922 NULL
152241 +enable_so_nr_frags_skb_shared_info_29925 nr_frags skb_shared_info 0 29925 NULL
152242 +enable_so_sys_syslog_fndecl_29929 sys_syslog fndecl 3 29929 NULL
152243 +enable_so_cdv_intel_clock_fndecl_29931 cdv_intel_clock fndecl 1 29931 NULL nohasharray
152244 +enable_so_fll_fref_wm8993_priv_29931 fll_fref wm8993_priv 0 29931 &enable_so_cdv_intel_clock_fndecl_29931
152245 +enable_so_read_pstore_info_29933 read pstore_info 0 29933 NULL
152246 +enable_so_shash_async_setkey_fndecl_29939 shash_async_setkey fndecl 3 29939 NULL nohasharray
152247 +enable_so_pvr2_ioread_read_fndecl_29939 pvr2_ioread_read fndecl 3 29939 &enable_so_shash_async_setkey_fndecl_29939
152248 +enable_so_rx_endpoint_acm_29952 rx_endpoint acm 0 29952 NULL nohasharray
152249 +enable_so_s_min_extra_isize_ext4_super_block_29952 s_min_extra_isize ext4_super_block 0 29952 &enable_so_rx_endpoint_acm_29952 nohasharray
152250 +enable_so_cciss_proc_write_fndecl_29952 cciss_proc_write fndecl 3 29952 &enable_so_s_min_extra_isize_ext4_super_block_29952
152251 +enable_so_opts1_mask_rtl8169_private_29953 opts1_mask rtl8169_private 0 29953 NULL
152252 +enable_so_max_mlx5_core_srq_29956 max mlx5_core_srq 0 29956 NULL nohasharray
152253 +enable_so_state_count_Fsm_29956 state_count Fsm 0 29956 &enable_so_max_mlx5_core_srq_29956
152254 +enable_so_memconsole_length_vardecl_memconsole_c_29962 memconsole_length vardecl_memconsole.c 0 29962 NULL
152255 +enable_so_pixelclock_v4l2_bt_timings_29967 pixelclock v4l2_bt_timings 0 29967 NULL
152256 +enable_so_c_phys_ocfs2_write_cluster_desc_29971 c_phys ocfs2_write_cluster_desc 0 29971 NULL
152257 +enable_so_idef5upd_gru_control_block_extended_29974 idef5upd gru_control_block_extended 0 29974 NULL
152258 +enable_so_ds_in_channels_hdsp_29975 ds_in_channels hdsp 0 29975 NULL
152259 +enable_so_insert_orphan_item_fndecl_29978 insert_orphan_item fndecl 3 29978 NULL
152260 +enable_so_i_suballoc_loc_ocfs2_dinode_29986 i_suballoc_loc ocfs2_dinode 0 29986 NULL
152261 +enable_so_init_size_il4965_firmware_pieces_29990 init_size il4965_firmware_pieces 0 29990 NULL
152262 +enable_so_nvif_object_new_fndecl_29999 nvif_object_new fndecl 5 29999 NULL
152263 +enable_so_auth_mode_libipw_security_30001 auth_mode libipw_security 0 30001 NULL
152264 +enable_so_snd_pcm_lib_preallocate_pages1_fndecl_30002 snd_pcm_lib_preallocate_pages1 fndecl 2 30002 NULL
152265 +enable_so_btrfs_add_ordered_extent_compress_fndecl_30005 btrfs_add_ordered_extent_compress fndecl 4-2-5-3 30005 NULL
152266 +enable_so_msc_nfinalizers_lnet_msg_container_30006 msc_nfinalizers lnet_msg_container 0 30006 NULL
152267 +enable_so_obj_offset_ore_striping_info_30010 obj_offset ore_striping_info 0 30010 NULL
152268 +enable_so_snd_rme9652_capture_copy_fndecl_30012 snd_rme9652_capture_copy fndecl 5 30012 NULL
152269 +enable_so_period_em28xx_audio_30017 period em28xx_audio 0 30017 NULL
152270 +enable_so_netlbl_catmap_setbit_fndecl_30024 netlbl_catmap_setbit fndecl 2 30024 NULL
152271 +enable_so_read_emulate_fndecl_30037 read_emulate fndecl 2 30037 NULL
152272 +enable_so_snd_pcm_oss_set_subdivide_fndecl_30050 snd_pcm_oss_set_subdivide fndecl 2 30050 NULL
152273 +enable_so_bit_bmove_fndecl_30057 bit_bmove fndecl 7-3-5-8-4-6 30057 NULL
152274 +enable_so_add_swap_extent_fndecl_30065 add_swap_extent fndecl 2-4-3 30065 NULL nohasharray
152275 +enable_so_get_dump_page_fndecl_30065 get_dump_page fndecl 1 30065 &enable_so_add_swap_extent_fndecl_30065
152276 +enable_so_psb_gem_create_fndecl_30068 psb_gem_create fndecl 3 30068 NULL nohasharray
152277 +enable_so_dio_read_error_fndecl_30068 dio_read_error fndecl 5-4 30068 &enable_so_psb_gem_create_fndecl_30068
152278 +enable_so_to_ifla_vlan_qos_mapping_30070 to ifla_vlan_qos_mapping 0 30070 NULL
152279 +enable_so_SYSC_io_setup_fndecl_30071 SYSC_io_setup fndecl 1 30071 NULL
152280 +enable_so_mwifiex_send_tdls_data_frame_fndecl_30072 mwifiex_send_tdls_data_frame fndecl 7 30072 NULL
152281 +enable_so_wapi_ie_len_mwifiex_private_30073 wapi_ie_len mwifiex_private 0 30073 NULL
152282 +enable_so_trim_sections_f2fs_sm_info_30075 trim_sections f2fs_sm_info 0 30075 NULL
152283 +enable_so_cur_pos_kobil_private_30076 cur_pos kobil_private 0 30076 NULL
152284 +enable_so_ufx_alloc_urb_list_fndecl_30078 ufx_alloc_urb_list fndecl 3 30078 NULL
152285 +enable_so_vsync_offset_hi_oaktrail_timing_info_30079 vsync_offset_hi oaktrail_timing_info 0 30079 NULL
152286 +enable_so_num_pages_vmw_mob_30089 num_pages vmw_mob 0 30089 NULL
152287 +enable_so_do_compat_pselect_fndecl_30093 do_compat_pselect fndecl 1 30093 NULL
152288 +enable_so_length_ehci_qtd_30102 length ehci_qtd 0 30102 NULL
152289 +enable_so_count_AUDIOCMD_30104 count AUDIOCMD 0 30104 NULL nohasharray
152290 +enable_so_ecryptfs_decode_and_decrypt_filename_fndecl_30104 ecryptfs_decode_and_decrypt_filename fndecl 5 30104 &enable_so_count_AUDIOCMD_30104
152291 +enable_so_mmc_test_seq_write_perf_fndecl_30107 mmc_test_seq_write_perf fndecl 2 30107 NULL
152292 +enable_so_max_total_qng_asc_dvc_var_30137 max_total_qng asc_dvc_var 0 30137 NULL
152293 +enable_so_i915_gem_object_create_stolen_for_preallocated_fndecl_30151 i915_gem_object_create_stolen_for_preallocated fndecl 4-2-3 30151 NULL nohasharray
152294 +enable_so_hpfs_remove_fnode_fndecl_30151 hpfs_remove_fnode fndecl 2 30151 &enable_so_i915_gem_object_create_stolen_for_preallocated_fndecl_30151
152295 +enable_so_otype_filename_trans_datum_30155 otype filename_trans_datum 0 30155 NULL nohasharray
152296 +enable_so_num_tx_queues_ixgbevf_adapter_30155 num_tx_queues ixgbevf_adapter 0 30155 &enable_so_otype_filename_trans_datum_30155
152297 +enable_so_scif_get_node_ids_fndecl_30156 scif_get_node_ids fndecl 0 30156 NULL
152298 +enable_so_buffer_len_fnic_dbgfs_30157 buffer_len fnic_dbgfs 0 30157 NULL
152299 +enable_so_iobuf_dma_us_data_30159 iobuf_dma us_data 0 30159 NULL
152300 +enable_so_addr_rds_iovec_30161 addr rds_iovec 0 30161 NULL
152301 +enable_so_tool_peer_mask_read_fndecl_30164 tool_peer_mask_read fndecl 3 30164 NULL
152302 +enable_so_bulk_in_size_hdpvr_device_30165 bulk_in_size hdpvr_device 0 30165 NULL
152303 +enable_so_rx_buf_sz_epic_private_30166 rx_buf_sz epic_private 0 30166 NULL nohasharray
152304 +enable_so_send_section_size_netvsc_device_30166 send_section_size netvsc_device 0 30166 &enable_so_rx_buf_sz_epic_private_30166
152305 +enable_so_rx_ring_size_pxa168_eth_private_30172 rx_ring_size pxa168_eth_private 0 30172 NULL
152306 +enable_so_bnx2x_set_gro_params_fndecl_30177 bnx2x_set_gro_params fndecl 3 30177 NULL
152307 +enable_so_prism2_ap_get_sta_qual_fndecl_30181 prism2_ap_get_sta_qual fndecl 0 30181 NULL
152308 +enable_so_in_ep_num_rtl_hal_usbint_cfg_30182 in_ep_num rtl_hal_usbint_cfg 0 30182 NULL
152309 +enable_so_SyS_io_setup_fndecl_30191 SyS_io_setup fndecl 1 30191 NULL
152310 +enable_so_buf_len_uvesafb_task_30200 buf_len uvesafb_task 0 30200 NULL
152311 +enable_so_i915_gem_setup_global_gtt_fndecl_30202 i915_gem_setup_global_gtt fndecl 2-4 30202 NULL
152312 +enable_so_hash_ipportip6_expire_fndecl_30205 hash_ipportip6_expire fndecl 4 30205 NULL
152313 +enable_so_pipe_size_renesas_usbhs_driver_param_30206 pipe_size renesas_usbhs_driver_param 0 30206 NULL
152314 +enable_so_len_header_msg_30207 len header_msg 0 30207 NULL
152315 +enable_so_hrp_nthrs_ptlrpc_hr_partition_30214 hrp_nthrs ptlrpc_hr_partition 0 30214 NULL
152316 +enable_so_xennet_make_one_txreq_fndecl_30215 xennet_make_one_txreq fndecl 4-5 30215 NULL nohasharray
152317 +enable_so_btrfs_find_space_for_alloc_fndecl_30215 btrfs_find_space_for_alloc fndecl 0-2-3 30215 &enable_so_xennet_make_one_txreq_fndecl_30215
152318 +enable_so_bm_bits_bm_xfer_ctx_30221 bm_bits bm_xfer_ctx 0 30221 NULL
152319 +enable_so_le_mtu_hci_dev_30225 le_mtu hci_dev 0 30225 NULL
152320 +enable_so_tegra_spi_start_rx_dma_fndecl_30226 tegra_spi_start_rx_dma fndecl 2 30226 NULL
152321 +enable_so_vtag_atl1e_recv_ret_status_30229 vtag atl1e_recv_ret_status 0 30229 NULL
152322 +enable_so___add_keyed_refs_fndecl_30230 __add_keyed_refs fndecl 3 30230 NULL
152323 +enable_so_tcp_header_len_tcp_sock_30231 tcp_header_len tcp_sock 0 30231 NULL
152324 +enable_so_insert_inline_extent_backref_fndecl_30244 insert_inline_extent_backref fndecl 5-8-4 30244 NULL
152325 +enable_so_reiserfs_breada_fndecl_30247 reiserfs_breada fndecl 3-2 30247 NULL
152326 +enable_so_id_kern_ipc_perm_30249 id kern_ipc_perm 0 30249 NULL
152327 +enable_so_compat_sys_truncate_fndecl_30258 compat_sys_truncate fndecl 2 30258 NULL
152328 +enable_so_max_host_qng_adv_dvc_var_30264 max_host_qng adv_dvc_var 0 30264 NULL
152329 +enable_so_tda10048_writeregbulk_fndecl_30265 tda10048_writeregbulk fndecl 4 30265 NULL
152330 +enable_so_sys_sendfile_fndecl_30267 sys_sendfile fndecl 4 30267 NULL nohasharray
152331 +enable_so_rawsock_recvmsg_fndecl_30267 rawsock_recvmsg fndecl 3 30267 &enable_so_sys_sendfile_fndecl_30267
152332 +enable_so_tda665x_write_fndecl_30269 tda665x_write fndecl 3 30269 NULL
152333 +enable_so_blockshift_alauda_media_info_30287 blockshift alauda_media_info 0 30287 NULL
152334 +enable_so_xfs_collapse_file_space_fndecl_30288 xfs_collapse_file_space fndecl 2-3 30288 NULL
152335 +enable_so_blk_queue_dma_drain_fndecl_30290 blk_queue_dma_drain fndecl 4 30290 NULL
152336 +enable_so_t_tinc_hdr_rem_rds_tcp_connection_30296 t_tinc_hdr_rem rds_tcp_connection 0 30296 NULL nohasharray
152337 +enable_so_count_argc_fndecl_30296 count_argc fndecl 0 30296 &enable_so_t_tinc_hdr_rem_rds_tcp_connection_30296
152338 +enable_so_wlength_at76_rx_buffer_30301 wlength at76_rx_buffer 0 30301 NULL
152339 +enable_so_alloc_alien_cache_fndecl_30308 alloc_alien_cache fndecl 2 30308 NULL
152340 +enable_so_tracing_buffers_read_fndecl_30311 tracing_buffers_read fndecl 3 30311 NULL
152341 +enable_so_ki_pos_kiocb_30312 ki_pos kiocb 0 30312 NULL
152342 +enable_so_wbuf_pagesize_jffs2_sb_info_30318 wbuf_pagesize jffs2_sb_info 0 30318 NULL
152343 +enable_so_nfakewriters_vardecl_rcutorture_c_30320 nfakewriters vardecl_rcutorture.c 0 30320 NULL
152344 +enable_so_kvm_write_guest_cached_fndecl_30321 kvm_write_guest_cached fndecl 4 30321 NULL
152345 +enable_so_avc_stream_set_format_fndecl_30322 avc_stream_set_format fndecl 5 30322 NULL
152346 +enable_so_tc90522_master_xfer_fndecl_30332 tc90522_master_xfer fndecl 3 30332 NULL
152347 +enable_so_src_bytes_x86_instruction_info_30334 src_bytes x86_instruction_info 0 30334 NULL
152348 +enable_so_rs_move_legacy_other_fndecl_30344 rs_move_legacy_other fndecl 5 30344 NULL
152349 +enable_so_p_ssize_f_uac2_opts_30353 p_ssize f_uac2_opts 0 30353 NULL
152350 +enable_so_max_rq_sg_mlx4_caps_30357 max_rq_sg mlx4_caps 0 30357 NULL
152351 +enable_so_bt_datalen_bcm5974_config_30374 bt_datalen bcm5974_config 0 30374 NULL nohasharray
152352 +enable_so_len_snd_seq_ev_ext_30374 len snd_seq_ev_ext 0 30374 &enable_so_bt_datalen_bcm5974_config_30374
152353 +enable_so_qnx4_iget_fndecl_30383 qnx4_iget fndecl 2 30383 NULL
152354 +enable_so_ioat2_alloc_ring_fndecl_30391 ioat2_alloc_ring fndecl 2 30391 NULL
152355 +enable_so_ssid_len_cfg80211_ssid_30393 ssid_len cfg80211_ssid 0 30393 NULL
152356 +enable_so_datalen_port100_frame_30394 datalen port100_frame 0 30394 NULL
152357 +enable_so_ocfs2_dx_entry_list_insert_fndecl_30397 ocfs2_dx_entry_list_insert fndecl 3 30397 NULL
152358 +enable_so_dbgp_control_msg_fndecl_30405 dbgp_control_msg fndecl 7 30405 NULL
152359 +enable_so_hwm_tx_init_fndecl_30411 hwm_tx_init fndecl 4 30411 NULL
152360 +enable_so_get_pages_vram_fndecl_30416 get_pages_vram fndecl 2 30416 NULL
152361 +enable_so_decode_opaque_fixed_fndecl_30421 decode_opaque_fixed fndecl 3 30421 NULL
152362 +enable_so_bytes_committed_mlx5_pagefault_30434 bytes_committed mlx5_pagefault 0 30434 NULL
152363 +enable_so_of_irq_count_fndecl_30438 of_irq_count fndecl 0 30438 NULL
152364 +enable_so_count_snd_kcontrol_new_30443 count snd_kcontrol_new 0 30443 NULL
152365 +enable_so_comedi_alloc_spriv_fndecl_30449 comedi_alloc_spriv fndecl 2 30449 NULL
152366 +enable_so_num_channels_iio_dev_30451 num_channels iio_dev 0 30451 NULL
152367 +enable_so_xfs_map_direct_fndecl_30459 xfs_map_direct fndecl 4 30459 NULL
152368 +enable_so_mmap_region_fndecl_30460 mmap_region fndecl 2-3-5 30460 NULL
152369 +enable_so_height_drm_qxl_alloc_surf_30468 height drm_qxl_alloc_surf 0 30468 NULL
152370 +enable_so___qp_memcpy_to_queue_fndecl_30472 __qp_memcpy_to_queue fndecl 4-2 30472 NULL
152371 +enable_so_nouveau_gem_new_fndecl_30476 nouveau_gem_new fndecl 2 30476 NULL
152372 +enable_so_produce_size_vmci_qp_alloc_info_30480 produce_size vmci_qp_alloc_info 0 30480 NULL nohasharray
152373 +enable_so_btrfs_sync_file_fndecl_30480 btrfs_sync_file fndecl 2 30480 &enable_so_produce_size_vmci_qp_alloc_info_30480
152374 +enable_so_xfs_inode_alloc_fndecl_30482 xfs_inode_alloc fndecl 2 30482 NULL
152375 +enable_so_xdr_buf_trim_fndecl_30485 xdr_buf_trim fndecl 2 30485 NULL
152376 +enable_so_SyS_io_getevents_fndecl_30487 SyS_io_getevents fndecl 3 30487 NULL
152377 +enable_so_rd_build_prot_space_fndecl_30490 rd_build_prot_space fndecl 3-2 30490 NULL
152378 +enable_so_vhost_add_used_n_fndecl_30491 vhost_add_used_n fndecl 3 30491 NULL
152379 +enable_so_height_s2255_vc_30492 height s2255_vc 0 30492 NULL
152380 +enable_so_kvm_read_guest_atomic_fndecl_30494 kvm_read_guest_atomic fndecl 2-4 30494 NULL
152381 +enable_so_nfcwilink_send_bts_cmd_fndecl_30497 nfcwilink_send_bts_cmd fndecl 3 30497 NULL
152382 +enable_so_tolen_nfs3_linkargs_30505 tolen nfs3_linkargs 0 30505 NULL
152383 +enable_so_rocker_group_l2_fan_out_fndecl_30512 rocker_group_l2_fan_out fndecl 4 30512 NULL
152384 +enable_so_ip_list_hash_size_vardecl_xt_recent_c_30522 ip_list_hash_size vardecl_xt_recent.c 0 30522 NULL
152385 +enable_so_buf_start_lo_rx_buf_desc_30523 buf_start_lo rx_buf_desc 0 30523 NULL
152386 +enable_so_sys_bind_fndecl_30524 sys_bind fndecl 3 30524 NULL
152387 +enable_so_ttm_dma_page_pool_free_fndecl_30527 ttm_dma_page_pool_free fndecl 2 30527 NULL
152388 +enable_so_send_command_fndecl_30531 send_command fndecl 4 30531 NULL
152389 +enable_so_InitiatorRecvDataSegmentLength_iscsi_conn_ops_30535 InitiatorRecvDataSegmentLength iscsi_conn_ops 0 30535 NULL
152390 +enable_so_len_nfsd_readlinkres_30541 len nfsd_readlinkres 0 30541 NULL
152391 +enable_so_xen_blkif_max_segments_vardecl_xen_blkfront_c_30543 xen_blkif_max_segments vardecl_xen-blkfront.c 0 30543 NULL
152392 +enable_so_pstore_compress_fndecl_30549 pstore_compress fndecl 3-4 30549 NULL
152393 +enable_so_nfcid_len_pn533_target_type_a_30554 nfcid_len pn533_target_type_a 0 30554 NULL
152394 +enable_so_left_vardecl_matroxfb_base_c_30557 left vardecl_matroxfb_base.c 0 30557 NULL
152395 +enable_so_min_size_rhashtable_params_30562 min_size rhashtable_params 0 30562 NULL
152396 +enable_so_wMaxCommand_wdm_device_30565 wMaxCommand wdm_device 0 30565 NULL
152397 +enable_so_entries_usb_sg_request_30570 entries usb_sg_request 0 30570 NULL
152398 +enable_so_snd_pcm_oss_write1_fndecl_30571 snd_pcm_oss_write1 fndecl 3 30571 NULL
152399 +enable_so_s_iblkno_ufs_sb_private_info_30572 s_iblkno ufs_sb_private_info 0 30572 NULL nohasharray
152400 +enable_so_wiidebug_drm_write_fndecl_30572 wiidebug_drm_write fndecl 3 30572 &enable_so_s_iblkno_ufs_sb_private_info_30572 nohasharray
152401 +enable_so_key_len_ubifs_info_30572 key_len ubifs_info 0 30572 &enable_so_wiidebug_drm_write_fndecl_30572
152402 +enable_so_udf_get_pblock_virt20_fndecl_30574 udf_get_pblock_virt20 fndecl 4 30574 NULL
152403 +enable_so_pio_ide_pio_info_30575 pio ide_pio_info 0 30575 NULL
152404 +enable_so_delta_stack_mm_struct_30582 delta_stack mm_struct 0 30582 NULL
152405 +enable_so_max_intr_slots_myri10ge_priv_30588 max_intr_slots myri10ge_priv 0 30588 NULL
152406 +enable_so_group_ext4_new_group_data_30590 group ext4_new_group_data 0 30590 NULL
152407 +enable_so_read_edid_block_fndecl_30591 read_edid_block fndecl 4 30591 NULL
152408 +enable_so_size_drm_savage_cmdbuf_30592 size drm_savage_cmdbuf 0 30592 NULL
152409 +enable_so_get_scq_fndecl_30594 get_scq fndecl 2 30594 NULL
152410 +enable_so___ipath_get_user_pages_fndecl_30595 __ipath_get_user_pages fndecl 1 30595 NULL
152411 +enable_so_tifm_alloc_adapter_fndecl_30596 tifm_alloc_adapter fndecl 1 30596 NULL
152412 +enable_so_sctp_addto_chunk_fndecl_30597 sctp_addto_chunk fndecl 2 30597 NULL
152413 +enable_so_ext4_collapse_range_fndecl_30598 ext4_collapse_range fndecl 2-3 30598 NULL
152414 +enable_so_offset_drm_i915_gem_pread_30601 offset drm_i915_gem_pread 0 30601 NULL
152415 +enable_so_add_ino_fndecl_30603 add_ino fndecl 2 30603 NULL
152416 +enable_so_rx_win_size_mwifiex_add_ba_param_30610 rx_win_size mwifiex_add_ba_param 0 30610 NULL
152417 +enable_so_blk_sz_os_dat_entry_s_30612 blk_sz os_dat_entry_s 0 30612 NULL
152418 +enable_so_ieee802_11_parse_elems_crc_fndecl_30615 ieee802_11_parse_elems_crc fndecl 2 30615 NULL
152419 +enable_so_size_cmdQ_30622 size cmdQ 0 30622 NULL
152420 +enable_so_lprocfs_wr_atomic_fndecl_30643 lprocfs_wr_atomic fndecl 3 30643 NULL
152421 +enable_so_catc_ctrl_async_fndecl_30648 catc_ctrl_async fndecl 7 30648 NULL
152422 +enable_so_drbd_md_sync_page_io_fndecl_30651 drbd_md_sync_page_io fndecl 3 30651 NULL
152423 +enable_so_size_vmcore_30652 size vmcore 0 30652 NULL
152424 +enable_so_start_numa_memblk_30656 start numa_memblk 0 30656 NULL nohasharray
152425 +enable_so_TargetRecvDataSegmentLength_iscsi_conn_ops_30656 TargetRecvDataSegmentLength iscsi_conn_ops 0 30656 &enable_so_start_numa_memblk_30656
152426 +enable_so_ci_port_test_write_fndecl_30657 ci_port_test_write fndecl 3 30657 NULL
152427 +enable_so_ext4_mb_new_blocks_fndecl_30662 ext4_mb_new_blocks fndecl 0 30662 NULL
152428 +enable_so_max_count_pvr2_buffer_30678 max_count pvr2_buffer 0 30678 NULL
152429 +enable_so_log_num_srqs_mlx4_init_hca_param_30681 log_num_srqs mlx4_init_hca_param 0 30681 NULL
152430 +enable_so_ar9003_dump_modal_eeprom_fndecl_30684 ar9003_dump_modal_eeprom fndecl 0-2-3 30684 NULL
152431 +enable_so_ramsize_brcmf_chip_30687 ramsize brcmf_chip 0 30687 NULL
152432 +enable_so_keybytes_gss_krb5_enctype_30694 keybytes gss_krb5_enctype 0 30694 NULL nohasharray
152433 +enable_so_xfrm_hash_alloc_fndecl_30694 xfrm_hash_alloc fndecl 1 30694 &enable_so_keybytes_gss_krb5_enctype_30694
152434 +enable_so_btrfs_add_delayed_extent_op_fndecl_30699 btrfs_add_delayed_extent_op fndecl 3-4 30699 NULL
152435 +enable_so_hdsp_spdif_sample_rate_fndecl_30700 hdsp_spdif_sample_rate fndecl 0 30700 NULL
152436 +enable_so_shift_sm501_clock_30710 shift sm501_clock 0 30710 NULL
152437 +enable_so_sched_autogroup_write_fndecl_30715 sched_autogroup_write fndecl 3 30715 NULL
152438 +enable_so_crypt_status_fndecl_30727 crypt_status fndecl 5 30727 NULL nohasharray
152439 +enable_so___alloc_preds_fndecl_30727 __alloc_preds fndecl 2 30727 &enable_so_crypt_status_fndecl_30727
152440 +enable_so_lbs_threshold_write_fndecl_30733 lbs_threshold_write fndecl 5 30733 NULL
152441 +enable_so_sock_recvmsg_fndecl_30735 sock_recvmsg fndecl 0 30735 NULL
152442 +enable_so_bop_seek_key_nilfs_bmap_operations_30741 bop_seek_key nilfs_bmap_operations 0 30741 NULL nohasharray
152443 +enable_so_mlx5_wq_cyc_get_size_fndecl_30741 mlx5_wq_cyc_get_size fndecl 0 30741 &enable_so_bop_seek_key_nilfs_bmap_operations_30741
152444 +enable_so_common_rfc4106_set_key_fndecl_30755 common_rfc4106_set_key fndecl 3 30755 NULL
152445 +enable_so_n_scan_channels_iwl_ucode_capabilities_30761 n_scan_channels iwl_ucode_capabilities 0 30761 NULL
152446 +enable_so_ext3_alloc_branch_fndecl_30765 ext3_alloc_branch fndecl 5 30765 NULL
152447 +enable_so_lp_write_fndecl_30772 lp_write fndecl 3 30772 NULL
152448 +enable_so_btrfs_add_delayed_data_ref_fndecl_30775 btrfs_add_delayed_data_ref fndecl 5-6-3-4-7 30775 NULL nohasharray
152449 +enable_so_leb_size_ubifs_info_30775 leb_size ubifs_info 0 30775 &enable_so_btrfs_add_delayed_data_ref_fndecl_30775
152450 +enable_so_nzones_high_adfs_discrecord_30776 nzones_high adfs_discrecord 0 30776 NULL
152451 +enable_so_isoc_in_pipe_ttusb_30778 isoc_in_pipe ttusb 0 30778 NULL
152452 +enable_so_hdrlen_brcmf_pub_30788 hdrlen brcmf_pub 0 30788 NULL nohasharray
152453 +enable_so_fw_node_create_fndecl_30788 fw_node_create fndecl 2 30788 &enable_so_hdrlen_brcmf_pub_30788
152454 +enable_so_fcoe_ddp_xid_net_device_30789 fcoe_ddp_xid net_device 0 30789 NULL
152455 +enable_so_alloc_order_ioat2_dma_chan_30790 alloc_order ioat2_dma_chan 0 30790 NULL
152456 +enable_so_netup_write_i2c_fndecl_30793 netup_write_i2c fndecl 5 30793 NULL
152457 +enable_so_ipath_get_user_pages_fndecl_30794 ipath_get_user_pages fndecl 1 30794 NULL
152458 +enable_so_kobj_map_fndecl_30797 kobj_map fndecl 3-2 30797 NULL
152459 +enable_so_wr_sz_csio_q_30799 wr_sz csio_q 0 30799 NULL
152460 +enable_so_extra_mpdu_postfix_len_lib80211_crypto_ops_30803 extra_mpdu_postfix_len lib80211_crypto_ops 0 30803 NULL nohasharray
152461 +enable_so_fwlen_mpt_fw_xfer_30803 fwlen mpt_fw_xfer 0 30803 &enable_so_extra_mpdu_postfix_len_lib80211_crypto_ops_30803
152462 +enable_so_ResidualCnt_ErrorInfo_30806 ResidualCnt ErrorInfo 0 30806 NULL
152463 +enable_so_buf_dma_gtco_30808 buf_dma gtco 0 30808 NULL nohasharray
152464 +enable_so_sadb_key_bits_sadb_key_30808 sadb_key_bits sadb_key 0 30808 &enable_so_buf_dma_gtco_30808
152465 +enable_so_unmerge_ksm_pages_fndecl_30809 unmerge_ksm_pages fndecl 2 30809 NULL nohasharray
152466 +enable_so_il_dbgfs_missed_beacon_write_fndecl_30809 il_dbgfs_missed_beacon_write fndecl 3 30809 &enable_so_unmerge_ksm_pages_fndecl_30809
152467 +enable_so_si21_readregs_fndecl_30810 si21_readregs fndecl 4 30810 NULL nohasharray
152468 +enable_so_xfs_ialloc_read_agi_fndecl_30810 xfs_ialloc_read_agi fndecl 3 30810 &enable_so_si21_readregs_fndecl_30810 nohasharray
152469 +enable_so_min_offset_btrfs_ioctl_search_key_30810 min_offset btrfs_ioctl_search_key 0 30810 &enable_so_xfs_ialloc_read_agi_fndecl_30810
152470 +enable_so_root_btrfs_delayed_tree_ref_30811 root btrfs_delayed_tree_ref 0 30811 NULL nohasharray
152471 +enable_so_sr_bit_offset_ocfs2_suballoc_result_30811 sr_bit_offset ocfs2_suballoc_result 0 30811 &enable_so_root_btrfs_delayed_tree_ref_30811
152472 +enable_so_num_mcg_mthca_profile_30814 num_mcg mthca_profile 0 30814 NULL
152473 +enable_so_audit_log_n_untrustedstring_fndecl_30815 audit_log_n_untrustedstring fndecl 3 30815 NULL
152474 +enable_so_shmem_write_begin_fndecl_30822 shmem_write_begin fndecl 3 30822 NULL
152475 +enable_so_report_count_hid_field_30826 report_count hid_field 0 30826 NULL
152476 +enable_so_s_root_blkno_ocfs2_super_block_30828 s_root_blkno ocfs2_super_block 0 30828 NULL
152477 +enable_so___load_segment_descriptor_fndecl_30833 __load_segment_descriptor fndecl 2-4 30833 NULL
152478 +enable_so_add_memory_fndecl_30836 add_memory fndecl 3-2 30836 NULL
152479 +enable_so_f2fs_read_data_pages_fndecl_30837 f2fs_read_data_pages fndecl 4 30837 NULL
152480 +enable_so_dm_btree_walk_fndecl_30840 dm_btree_walk fndecl 2 30840 NULL
152481 +enable_so_shadow_root_level_kvm_mmu_30842 shadow_root_level kvm_mmu 0 30842 NULL
152482 +enable_so_wm2200_set_fll_fndecl_30852 wm2200_set_fll fndecl 4-5 30852 NULL
152483 +enable_so_default_pvid_net_bridge_30856 default_pvid net_bridge 0 30856 NULL nohasharray
152484 +enable_so_count_acpi_object_list_30856 count acpi_object_list 0 30856 &enable_so_default_pvid_net_bridge_30856 nohasharray
152485 +enable_so_saa7164_buffer_alloc_user_fndecl_30856 saa7164_buffer_alloc_user fndecl 2 30856 &enable_so_count_acpi_object_list_30856
152486 +enable_so_hpfs_truncate_btree_fndecl_30857 hpfs_truncate_btree fndecl 4-2 30857 NULL nohasharray
152487 +enable_so_lov_ost_pool_add_fndecl_30857 lov_ost_pool_add fndecl 3 30857 &enable_so_hpfs_truncate_btree_fndecl_30857
152488 +enable_so_al_size_4k_drbd_md_30864 al_size_4k drbd_md 0 30864 NULL
152489 +enable_so_width_cx2341x_handler_30869 width cx2341x_handler 0 30869 NULL
152490 +enable_so_batadv_send_skb_push_fill_unicast_fndecl_30870 batadv_send_skb_push_fill_unicast fndecl 2 30870 NULL nohasharray
152491 +enable_so_snd_emu10k1_fx8010_read_fndecl_30870 snd_emu10k1_fx8010_read fndecl 5 30870 &enable_so_batadv_send_skb_push_fill_unicast_fndecl_30870
152492 +enable_so_do_sync_fndecl_30871 do_sync fndecl 1 30871 NULL
152493 +enable_so_sddr09_send_command_fndecl_30873 sddr09_send_command fndecl 5 30873 NULL nohasharray
152494 +enable_so_r_clusters_ocfs2_refcount_rec_30873 r_clusters ocfs2_refcount_rec 0 30873 &enable_so_sddr09_send_command_fndecl_30873
152495 +enable_so_current_page_mspro_block_data_30876 current_page mspro_block_data 0 30876 NULL
152496 +enable_so_vht_nss_ieee80211_rx_status_30879 vht_nss ieee80211_rx_status 0 30879 NULL
152497 +enable_so_dma_buf_sz_stmmac_priv_30880 dma_buf_sz stmmac_priv 0 30880 NULL
152498 +enable_so_max_ti_iu_len_srpt_rdma_ch_30887 max_ti_iu_len srpt_rdma_ch 0 30887 NULL
152499 +enable_so_queue_received_packet_fndecl_30890 queue_received_packet fndecl 5 30890 NULL
152500 +enable_so_at76_wait_completion_fndecl_30894 at76_wait_completion fndecl 0 30894 NULL
152501 +enable_so_ceph_copy_user_to_page_vector_fndecl_30896 ceph_copy_user_to_page_vector fndecl 3-4 30896 NULL
152502 +enable_so_host_addrlen_nfs4_mount_data_30905 host_addrlen nfs4_mount_data 0 30905 NULL
152503 +enable_so_word12_lpfc_mbx_read_config_30908 word12 lpfc_mbx_read_config 0 30908 NULL
152504 +enable_so_log_sq_bb_count_mlx4_ib_create_qp_30909 log_sq_bb_count mlx4_ib_create_qp 0 30909 NULL
152505 +enable_so_max_datagram_size_cdc_ncm_ctx_30918 max_datagram_size cdc_ncm_ctx 0 30918 NULL
152506 +enable_so___erst_read_from_storage_fndecl_30921 __erst_read_from_storage fndecl 2-1 30921 NULL
152507 +enable_so_rx_buffer_len_pch_gbe_adapter_30924 rx_buffer_len pch_gbe_adapter 0 30924 NULL nohasharray
152508 +enable_so_squashfs_export_iget_fndecl_30924 squashfs_export_iget fndecl 2 30924 &enable_so_rx_buffer_len_pch_gbe_adapter_30924
152509 +enable_so_qib_7322_handle_hwerrors_fndecl_30941 qib_7322_handle_hwerrors fndecl 3 30941 NULL
152510 +enable_so_dns_query_fndecl_30943 dns_query fndecl 3 30943 NULL
152511 +enable_so_cfg80211_tx_mlme_mgmt_fndecl_30944 cfg80211_tx_mlme_mgmt fndecl 3 30944 NULL nohasharray
152512 +enable_so_hwparams4_dwc3_hwparams_30944 hwparams4 dwc3_hwparams 0 30944 &enable_so_cfg80211_tx_mlme_mgmt_fndecl_30944
152513 +enable_so_parse_uac2_sample_rate_range_fndecl_30949 parse_uac2_sample_rate_range fndecl 0 30949 NULL
152514 +enable_so_SYSC_ppoll_fndecl_30954 SYSC_ppoll fndecl 2 30954 NULL
152515 +enable_so_pvr2_stream_setup_fndecl_30955 pvr2_stream_setup fndecl 3 30955 NULL
152516 +enable_so_leaf_shift_right_fndecl_30957 leaf_shift_right fndecl 3 30957 NULL
152517 +enable_so_lowpan_control_write_fndecl_30960 lowpan_control_write fndecl 3 30960 NULL
152518 +enable_so_ring_start__drm_i810_init_30964 ring_start _drm_i810_init 0 30964 NULL
152519 +enable_so_tool_mask_write_fndecl_30968 tool_mask_write fndecl 3 30968 NULL
152520 +enable_so_max_sdu_atm_trafprm_30969 max_sdu atm_trafprm 0 30969 NULL
152521 +enable_so_get_leaf_fndecl_30972 get_leaf fndecl 2 30972 NULL
152522 +enable_so__usb_write_async_fndecl_30976 _usb_write_async fndecl 4 30976 NULL nohasharray
152523 +enable_so_l2tp_ip_sendmsg_fndecl_30976 l2tp_ip_sendmsg fndecl 3 30976 &enable_so__usb_write_async_fndecl_30976
152524 +enable_so_sctp_getsockopt_delayed_ack_fndecl_30979 sctp_getsockopt_delayed_ack fndecl 2 30979 NULL
152525 +enable_so_offset_isofs_fid_30994 offset isofs_fid 0 30994 NULL
152526 +enable_so_vti6_change_mtu_fndecl_30995 vti6_change_mtu fndecl 2 30995 NULL
152527 +enable_so_l2cap_create_connless_pdu_fndecl_30997 l2cap_create_connless_pdu fndecl 3 30997 NULL
152528 +enable_so_noise_magnitude_fndecl_31008 noise_magnitude fndecl 2-4-3 31008 NULL
152529 +enable_so_flakey_status_fndecl_31017 flakey_status fndecl 5 31017 NULL nohasharray
152530 +enable_so_max_order_mthca_buddy_31017 max_order mthca_buddy 0 31017 &enable_so_flakey_status_fndecl_31017
152531 +enable_so_hdpvr_read_fndecl_31018 hdpvr_read fndecl 3 31018 NULL
152532 +enable_so_ipoib_change_mtu_fndecl_31020 ipoib_change_mtu fndecl 2 31020 NULL
152533 +enable_so_DevSize_cfi_ident_31031 DevSize cfi_ident 0 31031 NULL
152534 +enable_so_tcf_csum_ipv4_icmp_fndecl_31033 tcf_csum_ipv4_icmp fndecl 3 31033 NULL
152535 +enable_so_ocfs2_clear_ext_refcount_fndecl_31035 ocfs2_clear_ext_refcount fndecl 3-4 31035 NULL nohasharray
152536 +enable_so_internal_depth_MPT3SAS_ADAPTER_31035 internal_depth MPT3SAS_ADAPTER 0 31035 &enable_so_ocfs2_clear_ext_refcount_fndecl_31035
152537 +enable_so_hfsplus_bnode_read_u16_fndecl_31037 hfsplus_bnode_read_u16 fndecl 0 31037 NULL nohasharray
152538 +enable_so_hisi_clk_init_fndecl_31037 hisi_clk_init fndecl 2 31037 &enable_so_hfsplus_bnode_read_u16_fndecl_31037
152539 +enable_so_krb5_nfold_fndecl_31038 krb5_nfold fndecl 3-1 31038 NULL
152540 +enable_so_fb_get_hblank_by_hfreq_fndecl_31039 fb_get_hblank_by_hfreq fndecl 0-1-2 31039 NULL
152541 +enable_so_migrate_misplaced_transhuge_page_fndecl_31041 migrate_misplaced_transhuge_page fndecl 5 31041 NULL
152542 +enable_so_samsung_clk_alloc_reg_dump_fndecl_31054 samsung_clk_alloc_reg_dump fndecl 2 31054 NULL
152543 +enable_so_drbd_bm_bits_fndecl_31061 drbd_bm_bits fndecl 0 31061 NULL
152544 +enable_so_hdr_offset_xfrm_type_31067 hdr_offset xfrm_type 0 31067 NULL
152545 +enable_so_le_max_key_size_write_fndecl_31068 le_max_key_size_write fndecl 3 31068 NULL
152546 +enable_so_bulk_in_endpointAddress_usb_serial_port_31069 bulk_in_endpointAddress usb_serial_port 0 31069 NULL
152547 +enable_so_segsize_musb_qh_31074 segsize musb_qh 0 31074 NULL
152548 +enable_so_memblock_find_in_range_node_fndecl_31075 memblock_find_in_range_node fndecl 2-1 31075 NULL
152549 +enable_so_ieee80211_if_fmt_txpower_fndecl_31077 ieee80211_if_fmt_txpower fndecl 3 31077 NULL
152550 +enable_so_brcmf_sdiod_recv_buf_fndecl_31083 brcmf_sdiod_recv_buf fndecl 3 31083 NULL
152551 +enable_so_get_pipes_num_fndecl_31084 get_pipes_num fndecl 0 31084 NULL
152552 +enable_so_ocfs2_orphan_for_truncate_fndecl_31085 ocfs2_orphan_for_truncate fndecl 4 31085 NULL
152553 +enable_so_nvme_trans_fmt_get_parm_header_fndecl_31087 nvme_trans_fmt_get_parm_header fndecl 2 31087 NULL
152554 +enable_so_screen_depth_vardecl_hyperv_fb_c_31095 screen_depth vardecl_hyperv_fb.c 0 31095 NULL nohasharray
152555 +enable_so_regmap_i2c_read_fndecl_31095 regmap_i2c_read fndecl 3-5 31095 &enable_so_screen_depth_vardecl_hyperv_fb_c_31095
152556 +enable_so_s_extPosition_udf_bitmap_31104 s_extPosition udf_bitmap 0 31104 NULL
152557 +enable_so_status_tulip_desc_t_31113 status tulip_desc_t 0 31113 NULL
152558 +enable_so_name_len_inotify_event_info_31116 name_len inotify_event_info 0 31116 NULL
152559 +enable_so_reiserfs_write_end_fndecl_31117 reiserfs_write_end fndecl 5-3 31117 NULL
152560 +enable_so_dbgfs_sram_len_iwl_priv_31119 dbgfs_sram_len iwl_priv 0 31119 NULL
152561 +enable_so_io_bitmap_a_vmcs12_31120 io_bitmap_a vmcs12 0 31120 NULL
152562 +enable_so_dm_bm_read_lock_fndecl_31121 dm_bm_read_lock fndecl 2 31121 NULL
152563 +enable_so_nr_chips_dsa_platform_data_31127 nr_chips dsa_platform_data 0 31127 NULL
152564 +enable_so_uhci_result_isochronous_fndecl_31133 uhci_result_isochronous fndecl 0 31133 NULL nohasharray
152565 +enable_so_write_device_fndecl_31133 write_device fndecl 3 31133 &enable_so_uhci_result_isochronous_fndecl_31133
152566 +enable_so_virtqueue_add_outbuf_fndecl_31136 virtqueue_add_outbuf fndecl 3 31136 NULL
152567 +enable_so__AscCopyLramScsiDoneQ_fndecl_31137 _AscCopyLramScsiDoneQ fndecl 4 31137 NULL
152568 +enable_so_mlx4_bitmap_init_fndecl_31138 mlx4_bitmap_init fndecl 3-5-2 31138 NULL
152569 +enable_so_read_fndecl_31142 read fndecl 3 31142 NULL
152570 +enable_so_mwifiex_get_supported_rates_fndecl_31144 mwifiex_get_supported_rates fndecl 0 31144 NULL
152571 +enable_so_hpfs_count_dnodes_fndecl_31152 hpfs_count_dnodes fndecl 2 31152 NULL
152572 +enable_so___ext4_read_dirblock_fndecl_31153 __ext4_read_dirblock fndecl 2 31153 NULL
152573 +enable_so_max_rx_ip_filters_efx_nic_type_31156 max_rx_ip_filters efx_nic_type 0 31156 NULL
152574 +enable_so_ocfs2_direct_IO_zero_extend_fndecl_31171 ocfs2_direct_IO_zero_extend fndecl 4 31171 NULL
152575 +enable_so_bm_realloc_pages_fndecl_31172 bm_realloc_pages fndecl 2 31172 NULL
152576 +enable_so_rcvbuf_size_bas_cardstate_31177 rcvbuf_size bas_cardstate 0 31177 NULL
152577 +enable_so_bRPipeBlockSize_usb_wa_descriptor_31178 bRPipeBlockSize usb_wa_descriptor 0 31178 NULL
152578 +enable_so_ffs_ep0_write_fndecl_31181 ffs_ep0_write fndecl 3 31181 NULL
152579 +enable_so_op_size_ost_pool_31182 op_size ost_pool 0 31182 NULL
152580 +enable_so_fw_blob_size_pn544_i2c_phy_31185 fw_blob_size pn544_i2c_phy 0 31185 NULL
152581 +enable_so_hash_ipportip4_expire_fndecl_31188 hash_ipportip4_expire fndecl 4 31188 NULL
152582 +enable_so_slhc_compress_fndecl_31190 slhc_compress fndecl 0-3 31190 NULL
152583 +enable_so_btrfs_remove_qgroup_fndecl_31193 btrfs_remove_qgroup fndecl 3 31193 NULL
152584 +enable_so_btrfs_drop_extents_fndecl_31196 btrfs_drop_extents fndecl 5-4 31196 NULL nohasharray
152585 +enable_so_alloc_huge_page_noerr_fndecl_31196 alloc_huge_page_noerr fndecl 2 31196 &enable_so_btrfs_drop_extents_fndecl_31196 nohasharray
152586 +enable_so_st_int_recv_fndecl_31196 st_int_recv fndecl 3 31196 &enable_so_alloc_huge_page_noerr_fndecl_31196
152587 +enable_so_n_pins_ptp_clock_info_31206 n_pins ptp_clock_info 0 31206 NULL
152588 +enable_so_agp_generic_alloc_user_fndecl_31213 agp_generic_alloc_user fndecl 1 31213 NULL nohasharray
152589 +enable_so_get_registers_fndecl_31213 get_registers fndecl 4 31213 &enable_so_agp_generic_alloc_user_fndecl_31213
152590 +enable_so_wr_ep_alauda_info_31218 wr_ep alauda_info 0 31218 NULL
152591 +enable_so_kmalloc_array_fndecl_31223 kmalloc_array fndecl 1-2 31223 NULL
152592 +enable_so_fh_vardecl_matroxfb_base_c_31224 fh vardecl_matroxfb_base.c 0 31224 NULL
152593 +enable_so_mcs_unwrap_mir_fndecl_31228 mcs_unwrap_mir fndecl 3 31228 NULL
152594 +enable_so_ieee80211_if_fmt_fwded_unicast_fndecl_31229 ieee80211_if_fmt_fwded_unicast fndecl 3 31229 NULL
152595 +enable_so_kaweth_control_fndecl_31233 kaweth_control fndecl 8-2 31233 NULL
152596 +enable_so_len_ip_vs_iphdr_31235 len ip_vs_iphdr 0 31235 NULL
152597 +enable_so_length_wdm_device_31248 length wdm_device 0 31248 NULL
152598 +enable_so_SYSC_move_pages_fndecl_31249 SYSC_move_pages fndecl 2 31249 NULL
152599 +enable_so_st21nfcb_nci_probe_fndecl_31252 st21nfcb_nci_probe fndecl 2 31252 NULL
152600 +enable_so_freq_usb_usbvision_31263 freq usb_usbvision 0 31263 NULL
152601 +enable_so_orig_video_lines_screen_info_31267 orig_video_lines screen_info 0 31267 NULL nohasharray
152602 +enable_so_data_dma_hanwang_31267 data_dma hanwang 0 31267 &enable_so_orig_video_lines_screen_info_31267
152603 +enable_so_vm_iomap_memory_fndecl_31269 vm_iomap_memory fndecl 2 31269 NULL
152604 +enable_so_iterate_inodes_from_logical_fndecl_31270 iterate_inodes_from_logical fndecl 1 31270 NULL
152605 +enable_so_end_incl_vringh_range_31272 end_incl vringh_range 0 31272 NULL
152606 +enable_so_packet_length_rc_config_31278 packet_length rc_config 0 31278 NULL nohasharray
152607 +enable_so_xfs_bmbt_set_startblock_fndecl_31278 xfs_bmbt_set_startblock fndecl 2 31278 &enable_so_packet_length_rc_config_31278
152608 +enable_so_igb_enable_sriov_fndecl_31288 igb_enable_sriov fndecl 2 31288 NULL
152609 +enable_so_nfs_readdir_page_filler_fndecl_31292 nfs_readdir_page_filler fndecl 5 31292 NULL
152610 +enable_so_asymmetric_key_generate_id_fndecl_31299 asymmetric_key_generate_id fndecl 4-2 31299 NULL
152611 +enable_so_fs_shift_hfsplus_sb_info_31309 fs_shift hfsplus_sb_info 0 31309 NULL
152612 +enable_so_rxblen_brcmf_sdio_31317 rxblen brcmf_sdio 0 31317 NULL
152613 +enable_so_bio_integrity_add_page_fndecl_31320 bio_integrity_add_page fndecl 4-3 31320 NULL
152614 +enable_so_gsi_end_mp_ioapic_gsi_31327 gsi_end mp_ioapic_gsi 0 31327 NULL
152615 +enable_so_scatter_len_efx_rx_queue_31330 scatter_len efx_rx_queue 0 31330 NULL nohasharray
152616 +enable_so_drm_do_probe_ddc_edid_fndecl_31330 drm_do_probe_ddc_edid fndecl 4 31330 &enable_so_scatter_len_efx_rx_queue_31330
152617 +enable_so_ubifs_tnc_add_fndecl_31332 ubifs_tnc_add fndecl 5 31332 NULL
152618 +enable_so_cur_frames_osst_tape_31335 cur_frames osst_tape 0 31335 NULL
152619 +enable_so_ufs_bitmap_search_fndecl_31338 ufs_bitmap_search fndecl 3 31338 NULL
152620 +enable_so_get_elem_size_fndecl_31341 get_elem_size fndecl 2 31341 NULL
152621 +enable_so_sdio_writesb_fndecl_31345 sdio_writesb fndecl 4 31345 NULL
152622 +enable_so_bulk_in_size_usb_serial_driver_31350 bulk_in_size usb_serial_driver 0 31350 NULL
152623 +enable_so_cifs_llseek_fndecl_31352 cifs_llseek fndecl 2 31352 NULL
152624 +enable_so_romfs_dev_strcmp_fndecl_31365 romfs_dev_strcmp fndecl 4-2 31365 NULL nohasharray
152625 +enable_so_SyS_migrate_pages_fndecl_31365 SyS_migrate_pages fndecl 2 31365 &enable_so_romfs_dev_strcmp_fndecl_31365
152626 +enable_so_es_tss_segment_32_31367 es tss_segment_32 0 31367 NULL
152627 +enable_so_req_lim_delta_srp_rsp_31371 req_lim_delta srp_rsp 0 31371 NULL
152628 +enable_so_ioctl_fndecl_31375 ioctl fndecl 3 31375 NULL
152629 +enable_so_gfs2_meta_read_fndecl_31379 gfs2_meta_read fndecl 2 31379 NULL
152630 +enable_so_vlv_dpio_read_fndecl_31388 vlv_dpio_read fndecl 0 31388 NULL
152631 +enable_so_num_bytes_btrfs_delayed_ref_node_31390 num_bytes btrfs_delayed_ref_node 0 31390 NULL
152632 +enable_so_s_stripe_ext4_sb_info_31391 s_stripe ext4_sb_info 0 31391 NULL
152633 +enable_so_spi_populate_sync_msg_fndecl_31392 spi_populate_sync_msg fndecl 0 31392 NULL
152634 +enable_so_brcmf_msgbuf_init_pktids_fndecl_31395 brcmf_msgbuf_init_pktids fndecl 1 31395 NULL
152635 +enable_so_asd_store_update_bios_fndecl_31398 asd_store_update_bios fndecl 4 31398 NULL
152636 +enable_so_persistent_ram_vmap_fndecl_31402 persistent_ram_vmap fndecl 1-2 31402 NULL
152637 +enable_so_kstrtol_from_user_fndecl_31403 kstrtol_from_user fndecl 2 31403 NULL
152638 +enable_so_subport_ipath_filedata_31404 subport ipath_filedata 0 31404 NULL
152639 +enable_so_num_types_amdgpu_irq_src_31405 num_types amdgpu_irq_src 0 31405 NULL
152640 +enable_so_zone_count_msb_data_31413 zone_count msb_data 0 31413 NULL
152641 +enable_so_sg_tablesize_sg_device_31415 sg_tablesize sg_device 0 31415 NULL
152642 +enable_so_unmap_region_fndecl_31420 unmap_region fndecl 5-4 31420 NULL
152643 +enable_so_bch_bucket_alloc_fndecl_31421 bch_bucket_alloc fndecl 0 31421 NULL
152644 +enable_so_cy8ctmg110_write_regs_fndecl_31439 cy8ctmg110_write_regs fndecl 3 31439 NULL nohasharray
152645 +enable_so_mpx_unmap_tables_fndecl_31439 mpx_unmap_tables fndecl 2-3 31439 &enable_so_cy8ctmg110_write_regs_fndecl_31439
152646 +enable_so_jffs2_user_setxattr_fndecl_31445 jffs2_user_setxattr fndecl 4 31445 NULL nohasharray
152647 +enable_so_fid_ino_xfs_fid_31445 fid_ino xfs_fid 0 31445 &enable_so_jffs2_user_setxattr_fndecl_31445
152648 +enable_so_gro_size_bnx2x_agg_info_31450 gro_size bnx2x_agg_info 0 31450 NULL
152649 +enable_so_cra_ctxsize_crypto_alg_31451 cra_ctxsize crypto_alg 0 31451 NULL
152650 +enable_so_length_wsm_ssid_31452 length wsm_ssid 0 31452 NULL
152651 +enable_so_max_sz_mmc_test_area_31453 max_sz mmc_test_area 0 31453 NULL
152652 +enable_so_keene_cmd_main_fndecl_31458 keene_cmd_main fndecl 2 31458 NULL
152653 +enable_so_i_eattr_gfs2_inode_31461 i_eattr gfs2_inode 0 31461 NULL
152654 +enable_so_videobuf_dma_init_overlay_fndecl_31471 videobuf_dma_init_overlay fndecl 4-3 31471 NULL
152655 +enable_so_xstate_features_vardecl_xsave_c_31478 xstate_features vardecl_xsave.c 0 31478 NULL
152656 +enable_so_tx_rate_idx_skb_frame_desc_31479 tx_rate_idx skb_frame_desc 0 31479 NULL
152657 +enable_so_cs_tss_segment_32_31480 cs tss_segment_32 0 31480 NULL
152658 +enable_so_wl12xx_spi_raw_write_fndecl_31482 wl12xx_spi_raw_write fndecl 4 31482 NULL
152659 +enable_so_nr_voices_seq_oss_synthinfo_31487 nr_voices seq_oss_synthinfo 0 31487 NULL
152660 +enable_so_length_rsd_31489 length rsd 0 31489 NULL
152661 +enable_so_regmap_multi_reg_write_bypassed_fndecl_31492 regmap_multi_reg_write_bypassed fndecl 3 31492 NULL
152662 +enable_so_pcpu_alloc_fndecl_31502 pcpu_alloc fndecl 1-2 31502 NULL
152663 +enable_so_PIXDEPTH_kyrofb_info_31509 PIXDEPTH kyrofb_info 0 31509 NULL
152664 +enable_so_fixed_size_llseek_fndecl_31512 fixed_size_llseek fndecl 2-4 31512 NULL
152665 +enable_so_ieee80211_if_fmt_num_mcast_sta_fndecl_31513 ieee80211_if_fmt_num_mcast_sta fndecl 3 31513 NULL
152666 +enable_so_ddb_input_read_fndecl_31516 ddb_input_read fndecl 3-0 31516 NULL
152667 +enable_so_shmem_replace_page_fndecl_31519 shmem_replace_page fndecl 4 31519 NULL
152668 +enable_so_residual_datacnt_status_pkt_31531 residual_datacnt status_pkt 0 31531 NULL
152669 +enable_so_rx_pipe_usbpn_dev_31540 rx_pipe usbpn_dev 0 31540 NULL
152670 +enable_so___alloc_percpu_fndecl_31543 __alloc_percpu fndecl 1-2 31543 NULL
152671 +enable_so_tcp_tso_acked_fndecl_31549 tcp_tso_acked fndecl 0 31549 NULL
152672 +enable_so_ks_rdreg16_fndecl_31551 ks_rdreg16 fndecl 0 31551 NULL nohasharray
152673 +enable_so_stride_drm_qxl_alloc_surf_31551 stride drm_qxl_alloc_surf 0 31551 &enable_so_ks_rdreg16_fndecl_31551
152674 +enable_so_kernel_physical_mapping_init_fndecl_31561 kernel_physical_mapping_init fndecl 2 31561 NULL
152675 +enable_so_bio_alloc_map_data_fndecl_31573 bio_alloc_map_data fndecl 1 31573 NULL
152676 +enable_so_vmcb_nested_state_31575 vmcb nested_state 0 31575 NULL
152677 +enable_so_can_change_mtu_fndecl_31583 can_change_mtu fndecl 2 31583 NULL
152678 +enable_so_bytes_operand_31587 bytes operand 0 31587 NULL
152679 +enable_so_num_txq_bna_attr_31588 num_txq bna_attr 0 31588 NULL
152680 +enable_so_v_max_out_saa7146_standard_31591 v_max_out saa7146_standard 0 31591 NULL
152681 +enable_so_nbchannel_capi_profile_31592 nbchannel capi_profile 0 31592 NULL
152682 +enable_so_sys_mprotect_fndecl_31611 sys_mprotect fndecl 2-1 31611 NULL
152683 +enable_so_wil_read_file_ioblob_fndecl_31621 wil_read_file_ioblob fndecl 3 31621 NULL
152684 +enable_so_a_entry_exec_31622 a_entry exec 0 31622 NULL
152685 +enable_so_ping_v4_sendmsg_fndecl_31624 ping_v4_sendmsg fndecl 3 31624 NULL
152686 +enable_so_segsize_dn_skb_cb_31640 segsize dn_skb_cb 0 31640 NULL
152687 +enable_so_pep_recvmsg_fndecl_31641 pep_recvmsg fndecl 3 31641 NULL
152688 +enable_so_pmcraid_alloc_sglist_fndecl_31643 pmcraid_alloc_sglist fndecl 1 31643 NULL
152689 +enable_so_ext4_free_blocks_fndecl_31648 ext4_free_blocks fndecl 4-5 31648 NULL nohasharray
152690 +enable_so_av_buf_tail_dccp_ackvec_31648 av_buf_tail dccp_ackvec 0 31648 &enable_so_ext4_free_blocks_fndecl_31648
152691 +enable_so_mwifiex_set_wpa_ie_helper_fndecl_31650 mwifiex_set_wpa_ie_helper fndecl 3 31650 NULL
152692 +enable_so_bpp_uvc_format_31654 bpp uvc_format 0 31654 NULL
152693 +enable_so_nonpaging_page_fault_fndecl_31655 nonpaging_page_fault fndecl 2 31655 NULL
152694 +enable_so_btrfs_create_block_group_cache_fndecl_31657 btrfs_create_block_group_cache fndecl 3-2 31657 NULL
152695 +enable_so_read_dma_ims_pcu_31667 read_dma ims_pcu 0 31667 NULL
152696 +enable_so_snd_midi_event_new_fndecl_31670 snd_midi_event_new fndecl 1 31670 NULL nohasharray
152697 +enable_so_bm_register_write_fndecl_31670 bm_register_write fndecl 3 31670 &enable_so_snd_midi_event_new_fndecl_31670 nohasharray
152698 +enable_so_set_capacity_fndecl_31670 set_capacity fndecl 2 31670 &enable_so_bm_register_write_fndecl_31670
152699 +enable_so_fragment_ufs_buffer_head_31676 fragment ufs_buffer_head 0 31676 NULL
152700 +enable_so_rx_header_len_pn533_frame_ops_31680 rx_header_len pn533_frame_ops 0 31680 NULL
152701 +enable_so_dsa_of_setup_routing_table_fndecl_31686 dsa_of_setup_routing_table fndecl 0 31686 NULL
152702 +enable_so_end_hdmi_pulse_31692 end hdmi_pulse 0 31692 NULL
152703 +enable_so_set_rxd_buffer_pointer_fndecl_31693 set_rxd_buffer_pointer fndecl 8 31693 NULL
152704 +enable_so_sr_write_cmd_async_fndecl_31698 sr_write_cmd_async fndecl 5 31698 NULL
152705 +enable_so_init_pipe_urbs_fndecl_31704 init_pipe_urbs fndecl 2-6 31704 NULL
152706 +enable_so_hash_dev_block_bits_dm_verity_31709 hash_dev_block_bits dm_verity 0 31709 NULL
152707 +enable_so_s5p_jpeg_compressed_size_fndecl_31715 s5p_jpeg_compressed_size fndecl 0 31715 NULL
152708 +enable_so_btrfs_add_link_fndecl_31718 btrfs_add_link fndecl 5-7 31718 NULL
152709 +enable_so_ext2_new_blocks_fndecl_31729 ext2_new_blocks fndecl 0-2 31729 NULL nohasharray
152710 +enable_so_channels_mask_sh_timer_config_31729 channels_mask sh_timer_config 0 31729 &enable_so_ext2_new_blocks_fndecl_31729
152711 +enable_so_recv_bm_rle_bits_fndecl_31731 recv_bm_rle_bits fndecl 4 31731 NULL
152712 +enable_so_SyS_gethostname_fndecl_31743 SyS_gethostname fndecl 2 31743 NULL
152713 +enable_so_ih_ring_entry_size_kfd_device_info_31745 ih_ring_entry_size kfd_device_info 0 31745 NULL
152714 +enable_so_dir_changed_fndecl_31748 dir_changed fndecl 2 31748 NULL
152715 +enable_so_nxt200x_writereg_multibyte_fndecl_31757 nxt200x_writereg_multibyte fndecl 4 31757 NULL nohasharray
152716 +enable_so_bigdirindaddr_adfs_bigdirentry_31757 bigdirindaddr adfs_bigdirentry 0 31757 &enable_so_nxt200x_writereg_multibyte_fndecl_31757
152717 +enable_so_bio_readpage_error_fndecl_31761 bio_readpage_error fndecl 5-4 31761 NULL
152718 +enable_so_i_size_dio_31770 i_size dio 0 31770 NULL
152719 +enable_so_vm_entry_msr_load_addr_vmcs12_31781 vm_entry_msr_load_addr vmcs12 0 31781 NULL
152720 +enable_so_fore200e_chunk_alloc_fndecl_31782 fore200e_chunk_alloc fndecl 3-4 31782 NULL
152721 +enable_so_dev_config_fndecl_31785 dev_config fndecl 3 31785 NULL
152722 +enable_so_pixclock_fb_var_screeninfo_31790 pixclock fb_var_screeninfo 0 31790 NULL
152723 +enable_so_minix_V2_raw_inode_fndecl_31793 minix_V2_raw_inode fndecl 2 31793 NULL nohasharray
152724 +enable_so_afs_cell_lookup_fndecl_31793 afs_cell_lookup fndecl 2 31793 &enable_so_minix_V2_raw_inode_fndecl_31793
152725 +enable_so_ctxsize_crypto_type_31795 ctxsize crypto_type 0 31795 NULL
152726 +enable_so_mml_isar_ch_31799 mml isar_ch 0 31799 NULL
152727 +enable_so_parent_i_pos_low_fat_fid_31802 parent_i_pos_low fat_fid 0 31802 NULL
152728 +enable_so_bg_inode_table_ext2_group_desc_31805 bg_inode_table ext2_group_desc 0 31805 NULL
152729 +enable_so_target_submit_cmd_map_sgls_fndecl_31806 target_submit_cmd_map_sgls fndecl 6-11 31806 NULL
152730 +enable_so_snd_malloc_sgbuf_pages_fndecl_31815 snd_malloc_sgbuf_pages fndecl 2 31815 NULL
152731 +enable_so_NumPhys__MPI2_CONFIG_PAGE_EXPANDER_0_31816 NumPhys _MPI2_CONFIG_PAGE_EXPANDER_0 0 31816 NULL
152732 +enable_so_const_channel_count_hda_gen_spec_31817 const_channel_count hda_gen_spec 0 31817 NULL nohasharray
152733 +enable_so_spu_read_fndecl_31817 spu_read fndecl 4 31817 &enable_so_const_channel_count_hda_gen_spec_31817
152734 +enable_so___skb_get_poff_fndecl_31821 __skb_get_poff fndecl 0 31821 NULL
152735 +enable_so_needed_size_conf_writedata_31827 needed_size conf_writedata 0 31827 NULL
152736 +enable_so_fw_iocb_count_qla_hw_data_31830 fw_iocb_count qla_hw_data 0 31830 NULL
152737 +enable_so_byte_len_svc_rdma_op_ctxt_31832 byte_len svc_rdma_op_ctxt 0 31832 NULL nohasharray
152738 +enable_so_num_partition_entries__gpt_header_31832 num_partition_entries _gpt_header 0 31832 &enable_so_byte_len_svc_rdma_op_ctxt_31832
152739 +enable_so_i_pwr_lcnphy_iq_est_31834 i_pwr lcnphy_iq_est 0 31834 NULL
152740 +enable_so_iq_prod_phy_iq_est_31836 iq_prod phy_iq_est 0 31836 NULL
152741 +enable_so_ds_block_shift_logfs_disk_super_31840 ds_block_shift logfs_disk_super 0 31840 NULL
152742 +enable_so_cache_slow_downcall_fndecl_31849 cache_slow_downcall fndecl 2 31849 NULL
152743 +enable_so_sys_munlock_fndecl_31851 sys_munlock fndecl 1-2 31851 NULL
152744 +enable_so_vco_mult_arizona_fll_31858 vco_mult arizona_fll 0 31858 NULL
152745 +enable_so_msi2500_convert_stream_fndecl_31862 msi2500_convert_stream fndecl 0 31862 NULL
152746 +enable_so_profile_remove_fndecl_31871 profile_remove fndecl 3 31871 NULL
152747 +enable_so_maxp_usbhs_pipe_31872 maxp usbhs_pipe 0 31872 NULL
152748 +enable_so_gseg_gru_set_context_option_req_31876 gseg gru_set_context_option_req 0 31876 NULL
152749 +enable_so_i_lastfrag_ufs_inode_info_31879 i_lastfrag ufs_inode_info 0 31879 NULL
152750 +enable_so_sctp_user_addto_chunk_fndecl_31881 sctp_user_addto_chunk fndecl 2 31881 NULL
152751 +enable_so_first_user_ctxt_qib_devdata_31889 first_user_ctxt qib_devdata 0 31889 NULL
152752 +enable_so_max_tasks_bnx2fc_hba_31893 max_tasks bnx2fc_hba 0 31893 NULL
152753 +enable_so_tower_write_fndecl_31895 tower_write fndecl 3 31895 NULL
152754 +enable_so_max_packet_size_snd_line6_pcm_31899 max_packet_size snd_line6_pcm 0 31899 NULL
152755 +enable_so_size_macb_tx_skb_31904 size macb_tx_skb 0 31904 NULL
152756 +enable_so_vram_vardecl_atyfb_base_c_31909 vram vardecl_atyfb_base.c 0 31909 NULL
152757 +enable_so_it821x_firmware_command_fndecl_31911 it821x_firmware_command fndecl 3 31911 NULL
152758 +enable_so_num_packets_em28xx_usb_bufs_31912 num_packets em28xx_usb_bufs 0 31912 NULL
152759 +enable_so_scsi_dma_map_fndecl_31915 scsi_dma_map fndecl 0 31915 NULL
152760 +enable_so_mtu_gsm_mux_31917 mtu gsm_mux 0 31917 NULL
152761 +enable_so_fuse_send_write_pages_fndecl_31919 fuse_send_write_pages fndecl 0-5 31919 NULL
152762 +enable_so_fast_page_fault_fndecl_31924 fast_page_fault fndecl 2 31924 NULL
152763 +enable_so_cfs_cpt_number_fndecl_31929 cfs_cpt_number fndecl 0 31929 NULL
152764 +enable_so_physical_block_size_scsi_disk_31931 physical_block_size scsi_disk 0 31931 NULL
152765 +enable_so_shash_setkey_unaligned_fndecl_31935 shash_setkey_unaligned fndecl 3 31935 NULL
152766 +enable_so_tool_spad_read_fndecl_31936 tool_spad_read fndecl 3 31936 NULL
152767 +enable_so_channel_iio_chan_spec_31939 channel iio_chan_spec 0 31939 NULL nohasharray
152768 +enable_so_mesh_rx_plink_frame_fndecl_31939 mesh_rx_plink_frame fndecl 3 31939 &enable_so_channel_iio_chan_spec_31939
152769 +enable_so_mlx5_vzalloc_fndecl_31940 mlx5_vzalloc fndecl 1 31940 NULL
152770 +enable_so_bm_words_drbd_bitmap_31943 bm_words drbd_bitmap 0 31943 NULL
152771 +enable_so_ptr_i915_gem_userptr_31948 ptr i915_gem_userptr 0 31948 NULL
152772 +enable_so__read_mtd_info_31950 _read mtd_info 0 31950 NULL
152773 +enable_so_buf_height_tpg_data_31953 buf_height tpg_data 0 31953 NULL
152774 +enable_so_usHSyncOffset__ATOM_DTD_FORMAT_31956 usHSyncOffset _ATOM_DTD_FORMAT 0 31956 NULL
152775 +enable_so_ufs_add_fragments_fndecl_31963 ufs_add_fragments fndecl 2-0 31963 NULL
152776 +enable_so_bmc150_accel_fifo_flush_fndecl_31972 bmc150_accel_fifo_flush fndecl 2 31972 NULL nohasharray
152777 +enable_so_isdn_tty_write_fndecl_31972 isdn_tty_write fndecl 3 31972 &enable_so_bmc150_accel_fifo_flush_fndecl_31972
152778 +enable_so_se_dev_align_max_sectors_fndecl_31975 se_dev_align_max_sectors fndecl 0-2-1 31975 NULL
152779 +enable_so_buffer_max_vardecl_floppy_c_31976 buffer_max vardecl_floppy.c 0 31976 NULL
152780 +enable_so_i_size_read_fndecl_31980 i_size_read fndecl 0 31980 NULL
152781 +enable_so_arcfb_write_fndecl_31981 arcfb_write fndecl 3 31981 NULL
152782 +enable_so_saa7110_write_block_fndecl_31982 saa7110_write_block fndecl 3 31982 NULL
152783 +enable_so_max_commands_ctlr_info_31984 max_commands ctlr_info 0 31984 NULL
152784 +enable_so_s_groups_count_ext3_sb_info_31985 s_groups_count ext3_sb_info 0 31985 NULL
152785 +enable_so_record_size_ramoops_context_31989 record_size ramoops_context 0 31989 NULL nohasharray
152786 +enable_so_flash_offset_jffs2_raw_node_ref_31989 flash_offset jffs2_raw_node_ref 0 31989 &enable_so_record_size_ramoops_context_31989
152787 +enable_so_lis_nr_subios_lov_io_31997 lis_nr_subios lov_io 0 31997 NULL
152788 +enable_so_isofs_get_block_fndecl_32000 isofs_get_block fndecl 2 32000 NULL
152789 +enable_so_blocksize_sddr09_card_info_32003 blocksize sddr09_card_info 0 32003 NULL nohasharray
152790 +enable_so_bg_next_group_ocfs2_group_desc_32003 bg_next_group ocfs2_group_desc 0 32003 &enable_so_blocksize_sddr09_card_info_32003
152791 +enable_so_ss_descs_count_ffs_data_32006 ss_descs_count ffs_data 0 32006 NULL
152792 +enable_so_rt2x00debug_write_bbp_fndecl_32007 rt2x00debug_write_bbp fndecl 3 32007 NULL
152793 +enable_so_play_iframe_fndecl_32008 play_iframe fndecl 3 32008 NULL
152794 +enable_so_ad7879_spi_multi_read_fndecl_32009 ad7879_spi_multi_read fndecl 3 32009 NULL
152795 +enable_so_size_tiger_dma_32013 size tiger_dma 0 32013 NULL nohasharray
152796 +enable_so_elants_i2c_read_fndecl_32013 elants_i2c_read fndecl 3 32013 &enable_so_size_tiger_dma_32013
152797 +enable_so_blocksize_udf_options_32019 blocksize udf_options 0 32019 NULL
152798 +enable_so_depth_zr364xx_fmt_32028 depth zr364xx_fmt 0 32028 NULL nohasharray
152799 +enable_so___find_rev_next_zero_bit_fndecl_32028 __find_rev_next_zero_bit fndecl 3-2 32028 &enable_so_depth_zr364xx_fmt_32028 nohasharray
152800 +enable_so_del_qgroup_relation_item_fndecl_32028 del_qgroup_relation_item fndecl 4-3 32028 &enable_so___find_rev_next_zero_bit_fndecl_32028
152801 +enable_so_recent_mt_proc_write_fndecl_32029 recent_mt_proc_write fndecl 3 32029 NULL
152802 +enable_so_check_xattr_ref_inode_fndecl_32039 check_xattr_ref_inode fndecl 0 32039 NULL
152803 +enable_so_base_efifb_dmi_info_32041 base efifb_dmi_info 0 32041 NULL
152804 +enable_so_balloon_set_new_target_fndecl_32044 balloon_set_new_target fndecl 1 32044 NULL
152805 +enable_so_next_free_pstore_32049 next_free pstore 0 32049 NULL
152806 +enable_so_kvm_mmu_page_set_gfn_fndecl_32050 kvm_mmu_page_set_gfn fndecl 2 32050 NULL
152807 +enable_so_g_num_of_iommus_vardecl_intel_iommu_c_32059 g_num_of_iommus vardecl_intel-iommu.c 0 32059 NULL
152808 +enable_so_config_size_nd_cmd_get_config_size_32073 config_size nd_cmd_get_config_size 0 32073 NULL
152809 +enable_so_rproc_recovery_write_fndecl_32074 rproc_recovery_write fndecl 3 32074 NULL
152810 +enable_so_add_rx_skb_fndecl_32082 add_rx_skb fndecl 3 32082 NULL
152811 +enable_so_s_first_data_block_nilfs_super_block_32083 s_first_data_block nilfs_super_block 0 32083 NULL nohasharray
152812 +enable_so_chunk_size_irctl_32083 chunk_size irctl 0 32083 &enable_so_s_first_data_block_nilfs_super_block_32083
152813 +enable_so_ip6_tnl_err_fndecl_32086 ip6_tnl_err fndecl 8 32086 NULL
152814 +enable_so_omfs_clear_range_fndecl_32087 omfs_clear_range fndecl 2 32087 NULL
152815 +enable_so_write_tty_ldisc_ops_32094 write tty_ldisc_ops 0 32094 NULL
152816 +enable_so_ocfs2_ilookup_fndecl_32100 ocfs2_ilookup fndecl 2 32100 NULL
152817 +enable_so_qib_decode_7220_err_fndecl_32104 qib_decode_7220_err fndecl 3 32104 NULL
152818 +enable_so_rate_min_audioformat_32106 rate_min audioformat 0 32106 NULL
152819 +enable_so_offset_p9_fcall_32116 offset p9_fcall 0 32116 NULL
152820 +enable_so_config_rom_length_fw_device_32117 config_rom_length fw_device 0 32117 NULL
152821 +enable_so_height_drm_mode_fb_cmd2_32120 height drm_mode_fb_cmd2 0 32120 NULL
152822 +enable_so_freqn_snd_usb_endpoint_32123 freqn snd_usb_endpoint 0 32123 NULL
152823 +enable_so_rcvegrcnt_qib_ctxtdata_32127 rcvegrcnt qib_ctxtdata 0 32127 NULL
152824 +enable_so_ip6_make_skb_fndecl_32129 ip6_make_skb fndecl 5-4 32129 NULL nohasharray
152825 +enable_so_tfmsize_crypto_type_32129 tfmsize crypto_type 0 32129 &enable_so_ip6_make_skb_fndecl_32129
152826 +enable_so_lpfc_debugfs_max_slow_ring_trc_vardecl_lpfc_debugfs_c_32130 lpfc_debugfs_max_slow_ring_trc vardecl_lpfc_debugfs.c 0 32130 NULL
152827 +enable_so_common_rfc4106_set_authsize_fndecl_32133 common_rfc4106_set_authsize fndecl 2 32133 NULL
152828 +enable_so_max_rate_idx_ieee80211_tx_rate_control_32134 max_rate_idx ieee80211_tx_rate_control 0 32134 NULL nohasharray
152829 +enable_so_btree_invalidatepage_fndecl_32134 btree_invalidatepage fndecl 2 32134 &enable_so_max_rate_idx_ieee80211_tx_rate_control_32134
152830 +enable_so_ieee80211_if_fmt_ht_opmode_fndecl_32136 ieee80211_if_fmt_ht_opmode fndecl 3 32136 NULL
152831 +enable_so_sync_request_fndecl_32141 sync_request fndecl 2 32141 NULL nohasharray
152832 +enable_so_fsector_t_vardecl_floppy_c_32141 fsector_t vardecl_floppy.c 0 32141 &enable_so_sync_request_fndecl_32141
152833 +enable_so_prof_shift_vardecl_profile_c_32143 prof_shift vardecl_profile.c 0 32143 NULL
152834 +enable_so_mlx4_en_complete_rx_desc_fndecl_32150 mlx4_en_complete_rx_desc fndecl 0 32150 NULL
152835 +enable_so_ipwireless_send_packet_fndecl_32155 ipwireless_send_packet fndecl 4 32155 NULL
152836 +enable_so_s_clustersize_ocfs2_super_32156 s_clustersize ocfs2_super 0 32156 NULL nohasharray
152837 +enable_so_pwm_buf_sz_usbduxsigma_private_32156 pwm_buf_sz usbduxsigma_private 0 32156 &enable_so_s_clustersize_ocfs2_super_32156
152838 +enable_so_num_entries_msg_get_chap_32158 num_entries msg_get_chap 0 32158 NULL
152839 +enable_so_current_pages_balloon_stats_32169 current_pages balloon_stats 0 32169 NULL
152840 +enable_so_nfs41_maxwrite_overhead_vardecl_32172 nfs41_maxwrite_overhead vardecl 0 32172 NULL
152841 +enable_so_length_vring_rx_dma_32178 length vring_rx_dma 0 32178 NULL
152842 +enable_so_vmalloc_usercopy_fndecl_32186 vmalloc_usercopy fndecl 1 32186 NULL
152843 +enable_so_ping_getfrag_fndecl_32187 ping_getfrag fndecl 4 32187 NULL
152844 +enable_so_init_page_buffers_fndecl_32189 init_page_buffers fndecl 3 32189 NULL nohasharray
152845 +enable_so_len_sigma_action_32189 len sigma_action 0 32189 &enable_so_init_page_buffers_fndecl_32189
152846 +enable_so_s_system_dir_blkno_ocfs2_super_block_32196 s_system_dir_blkno ocfs2_super_block 0 32196 NULL
152847 +enable_so_zd_rf_scnprint_id_fndecl_32197 zd_rf_scnprint_id fndecl 0-3 32197 NULL
152848 +enable_so_smk_write_change_rule_fndecl_32200 smk_write_change_rule fndecl 3 32200 NULL
152849 +enable_so_nr_registers_ioapic_32204 nr_registers ioapic 0 32204 NULL
152850 +enable_so_ocfs2_decrease_refcount_rec_fndecl_32210 ocfs2_decrease_refcount_rec fndecl 6-7 32210 NULL
152851 +enable_so_k_offset_in_core_key_32212 k_offset in_core_key 0 32212 NULL
152852 +enable_so_xdi_copy_from_user_fndecl_32216 xdi_copy_from_user fndecl 4 32216 NULL
152853 +enable_so_rate_n_flags_il4965_tx_resp_32218 rate_n_flags il4965_tx_resp 0 32218 NULL
152854 +enable_so_mag_length_ssp_sensorhub_info_32219 mag_length ssp_sensorhub_info 0 32219 NULL
152855 +enable_so_sys_munmap_fndecl_32226 sys_munmap fndecl 1-2 32226 NULL
152856 +enable_so_fragments_snd_compressed_buffer_32230 fragments snd_compressed_buffer 0 32230 NULL
152857 +enable_so_endpoint_usbatm_channel_32232 endpoint usbatm_channel 0 32232 NULL
152858 +enable_so_generic_bin_search_fndecl_32235 generic_bin_search fndecl 0 32235 NULL
152859 +enable_so_ts_packet_count_cx8802_dev_32239 ts_packet_count cx8802_dev 0 32239 NULL
152860 +enable_so_nasync_board_t_32240 nasync board_t 0 32240 NULL
152861 +enable_so_gfs2_free_extlen_fndecl_32243 gfs2_free_extlen fndecl 0-2 32243 NULL
152862 +enable_so_roccat_common2_sysfs_read_fndecl_32252 roccat_common2_sysfs_read fndecl 6 32252 NULL
152863 +enable_so_n_ids_vport_portids_32258 n_ids vport_portids 0 32258 NULL
152864 +enable_so_report_count_hid_global_32260 report_count hid_global 0 32260 NULL
152865 +enable_so_oslec_create_fndecl_32264 oslec_create fndecl 1 32264 NULL
152866 +enable_so_venus_mkdir_fndecl_32276 venus_mkdir fndecl 4 32276 NULL
152867 +enable_so_qib_qsfp_dump_fndecl_32277 qib_qsfp_dump fndecl 3 32277 NULL
152868 +enable_so_usb_allocate_stream_buffers_fndecl_32279 usb_allocate_stream_buffers fndecl 3 32279 NULL
152869 +enable_so_vol_cdev_read_fndecl_32283 vol_cdev_read fndecl 3 32283 NULL
152870 +enable_so_num_gpes_vardecl_sysfs_c_32294 num_gpes vardecl_sysfs.c 0 32294 NULL
152871 +enable_so_IA_TX_BUF_SZ_vardecl_iphase_c_32295 IA_TX_BUF_SZ vardecl_iphase.c 0 32295 NULL
152872 +enable_so_il_dbgfs_clear_ucode_stats_write_fndecl_32299 il_dbgfs_clear_ucode_stats_write fndecl 3 32299 NULL
152873 +enable_so_rept_size_usbtouch_device_info_32306 rept_size usbtouch_device_info 0 32306 NULL
152874 +enable_so_snd_info_text_entry_write_fndecl_32315 snd_info_text_entry_write fndecl 3 32315 NULL
152875 +enable_so_nla_put_fndecl_32321 nla_put fndecl 3 32321 NULL
152876 +enable_so_multiple_vardecl_xfi_c_32330 multiple vardecl_xfi.c 0 32330 NULL nohasharray
152877 +enable_so_khugepaged_scan_pmd_fndecl_32330 khugepaged_scan_pmd fndecl 3 32330 &enable_so_multiple_vardecl_xfi_c_32330
152878 +enable_so_bochs_ttm_tt_create_fndecl_32333 bochs_ttm_tt_create fndecl 2 32333 NULL nohasharray
152879 +enable_so_datablock_size_btrfsic_state_32333 datablock_size btrfsic_state 0 32333 &enable_so_bochs_ttm_tt_create_fndecl_32333
152880 +enable_so_fd_ioctl_fndecl_32343 fd_ioctl fndecl 3 32343 NULL
152881 +enable_so_fib_info_hash_alloc_fndecl_32352 fib_info_hash_alloc fndecl 1 32352 NULL
152882 +enable_so_scrub_raid56_parity_fndecl_32354 scrub_raid56_parity fndecl 5 32354 NULL
152883 +enable_so_max_q_vectors_ixgbe_adapter_32359 max_q_vectors ixgbe_adapter 0 32359 NULL
152884 +enable_so_netlbl_catmap_setlong_fndecl_32363 netlbl_catmap_setlong fndecl 2 32363 NULL
152885 +enable_so_xfs_setfilesize_fndecl_32370 xfs_setfilesize fndecl 4-3 32370 NULL
152886 +enable_so_snd_gus_dram_peek_fndecl_32373 snd_gus_dram_peek fndecl 4 32373 NULL
152887 +enable_so_snd_emu10k1_synth_copy_from_user_fndecl_32374 snd_emu10k1_synth_copy_from_user fndecl 5-3 32374 NULL
152888 +enable_so_journal_write_metadata_buffer_fndecl_32376 journal_write_metadata_buffer fndecl 4 32376 NULL
152889 +enable_so_transport_get_sectors_16_fndecl_32385 transport_get_sectors_16 fndecl 0 32385 NULL
152890 +enable_so_datablk_xfs_da_geometry_32386 datablk xfs_da_geometry 0 32386 NULL
152891 +enable_so_adxl34x_spi_read_block_fndecl_32391 adxl34x_spi_read_block fndecl 3 32391 NULL
152892 +enable_so_offset_pnfs_layout_range_32403 offset pnfs_layout_range 0 32403 NULL nohasharray
152893 +enable_so_create_queues_fndecl_32403 create_queues fndecl 2-3 32403 &enable_so_offset_pnfs_layout_range_32403
152894 +enable_so_ftdi_prepare_write_buffer_fndecl_32406 ftdi_prepare_write_buffer fndecl 3 32406 NULL
152895 +enable_so_vml_nearest_clock_fndecl_32407 vml_nearest_clock fndecl 0 32407 NULL
152896 +enable_so_cont_add_fndecl_32409 cont_add fndecl 4 32409 NULL
152897 +enable_so_nent_kvm_cpuid_32413 nent kvm_cpuid 0 32413 NULL
152898 +enable_so_ext4_list_backups_fndecl_32417 ext4_list_backups fndecl 0 32417 NULL
152899 +enable_so_nxt200x_readreg_multibyte_fndecl_32418 nxt200x_readreg_multibyte fndecl 4 32418 NULL nohasharray
152900 +enable_so_pt_buffer_setup_aux_fndecl_32418 pt_buffer_setup_aux fndecl 3 32418 &enable_so_nxt200x_readreg_multibyte_fndecl_32418
152901 +enable_so_srpt_build_tskmgmt_rsp_fndecl_32427 srpt_build_tskmgmt_rsp fndecl 0 32427 NULL
152902 +enable_so_top_mlx4_bitmap_32434 top mlx4_bitmap 0 32434 NULL
152903 +enable_so_gso_size_xenvif_rx_meta_32437 gso_size xenvif_rx_meta 0 32437 NULL nohasharray
152904 +enable_so_di_next_index_dinode_32437 di_next_index dinode 0 32437 &enable_so_gso_size_xenvif_rx_meta_32437
152905 +enable_so_port_port_ipath_portdata_32438 port_port ipath_portdata 0 32438 NULL
152906 +enable_so_btrfs_get_extent_fndecl_32440 btrfs_get_extent fndecl 4-3-5 32440 NULL nohasharray
152907 +enable_so_truncated_len_btrfs_ordered_extent_32440 truncated_len btrfs_ordered_extent 0 32440 &enable_so_btrfs_get_extent_fndecl_32440
152908 +enable_so_ext4_da_write_inline_data_end_fndecl_32456 ext4_da_write_inline_data_end fndecl 4-2 32456 NULL
152909 +enable_so_snd_buf_bytes_vardecl_usbatm_c_32457 snd_buf_bytes vardecl_usbatm.c 0 32457 NULL
152910 +enable_so_bitmap_storage_alloc_fndecl_32460 bitmap_storage_alloc fndecl 2 32460 NULL nohasharray
152911 +enable_so_num_emulated_msrs_vardecl_x86_c_32460 num_emulated_msrs vardecl_x86.c 0 32460 &enable_so_bitmap_storage_alloc_fndecl_32460
152912 +enable_so_xfs_btree_ptr_to_daddr_fndecl_32475 xfs_btree_ptr_to_daddr fndecl 0 32475 NULL nohasharray
152913 +enable_so_start_ordered_ops_fndecl_32475 start_ordered_ops fndecl 2 32475 &enable_so_xfs_btree_ptr_to_daddr_fndecl_32475
152914 +enable_so_dbg_command_buf_fndecl_32478 dbg_command_buf fndecl 2 32478 NULL
152915 +enable_so_skb_shift_fndecl_32480 skb_shift fndecl 3 32480 NULL
152916 +enable_so_flctl_dma_fifo0_transfer_fndecl_32481 flctl_dma_fifo0_transfer fndecl 3 32481 NULL nohasharray
152917 +enable_so_j_len_reiserfs_journal_desc_32481 j_len reiserfs_journal_desc 0 32481 &enable_so_flctl_dma_fifo0_transfer_fndecl_32481
152918 +enable_so_sigmadsp_write_i2c_fndecl_32482 sigmadsp_write_i2c fndecl 4 32482 NULL
152919 +enable_so_s_fshift_ufs_sb_private_info_32491 s_fshift ufs_sb_private_info 0 32491 NULL
152920 +enable_so_card_send_command_fndecl_32492 card_send_command fndecl 3 32492 NULL
152921 +enable_so_reqsize_ablkcipher_tfm_32500 reqsize ablkcipher_tfm 0 32500 NULL
152922 +enable_so_alloc_group_attrs_fndecl_32505 alloc_group_attrs fndecl 2 32505 NULL nohasharray
152923 +enable_so_altera_swap_ir_fndecl_32505 altera_swap_ir fndecl 2 32505 &enable_so_alloc_group_attrs_fndecl_32505
152924 +enable_so_lmLogFormat_fndecl_32506 lmLogFormat fndecl 2 32506 NULL
152925 +enable_so_num_tgtdevs_btrfs_bio_32507 num_tgtdevs btrfs_bio 0 32507 NULL
152926 +enable_so_transport_get_sectors_12_fndecl_32508 transport_get_sectors_12 fndecl 0 32508 NULL
152927 +enable_so_gx1_gx_base_fndecl_32509 gx1_gx_base fndecl 0 32509 NULL
152928 +enable_so___create_free_space_inode_fndecl_32519 __create_free_space_inode fndecl 5-4 32519 NULL
152929 +enable_so_set_16kib_bfsize_stmmac_mode_ops_32520 set_16kib_bfsize stmmac_mode_ops 0 32520 NULL
152930 +enable_so_jffs2_acl_count_fndecl_32522 jffs2_acl_count fndecl 0-1 32522 NULL
152931 +enable_so_ext4_xattr_user_set_fndecl_32523 ext4_xattr_user_set fndecl 4 32523 NULL
152932 +enable_so_frameoffset_b43_dmaring_32525 frameoffset b43_dmaring 0 32525 NULL
152933 +enable_so_HDLC_irq_fndecl_32534 HDLC_irq fndecl 2 32534 NULL nohasharray
152934 +enable_so_num_comp_vectors_mlx4_caps_32534 num_comp_vectors mlx4_caps 0 32534 &enable_so_HDLC_irq_fndecl_32534
152935 +enable_so_ctrl_out_fndecl_32539 ctrl_out fndecl 3-5 32539 NULL
152936 +enable_so_ev_next_dev_data_32542 ev_next dev_data 0 32542 NULL
152937 +enable_so_wm8900_set_dai_pll_fndecl_32543 wm8900_set_dai_pll fndecl 4-5 32543 NULL
152938 +enable_so_cfg80211_inform_bss_width_fndecl_32545 cfg80211_inform_bss_width fndecl 10 32545 NULL
152939 +enable_so_rq_auth_slack_svc_rqst_32548 rq_auth_slack svc_rqst 0 32548 NULL
152940 +enable_so_TransferCount__MSG_SCSI_IO_REPLY_32554 TransferCount _MSG_SCSI_IO_REPLY 0 32554 NULL nohasharray
152941 +enable_so_yurex_write_fndecl_32554 yurex_write fndecl 3 32554 &enable_so_TransferCount__MSG_SCSI_IO_REPLY_32554
152942 +enable_so_x32_arch_ptrace_fndecl_32556 x32_arch_ptrace fndecl 3 32556 NULL
152943 +enable_so_sys_prctl_fndecl_32557 sys_prctl fndecl 3-4 32557 NULL
152944 +enable_so_joydev_compat_ioctl_fndecl_32558 joydev_compat_ioctl fndecl 2 32558 NULL
152945 +enable_so_bcd2000_midi_handle_input_fndecl_32572 bcd2000_midi_handle_input fndecl 3 32572 NULL
152946 +enable_so_iov_iter_zero_fndecl_32575 iov_iter_zero fndecl 1 32575 NULL
152947 +enable_so_ext4_try_to_write_inline_data_fndecl_32578 ext4_try_to_write_inline_data fndecl 4-3 32578 NULL
152948 +enable_so_msg_print_ext_header_fndecl_32580 msg_print_ext_header fndecl 0 32580 NULL
152949 +enable_so_check_right_item_operations_32585 check_right item_operations 0 32585 NULL nohasharray
152950 +enable_so_fnic_fc_trace_get_data_fndecl_32585 fnic_fc_trace_get_data fndecl 0 32585 &enable_so_check_right_item_operations_32585
152951 +enable_so_bop_assign_nilfs_bmap_operations_32598 bop_assign nilfs_bmap_operations 0 32598 NULL
152952 +enable_so_kstrtoint_from_user_fndecl_32601 kstrtoint_from_user fndecl 2 32601 NULL
152953 +enable_so_paging32_prefetch_gpte_fndecl_32604 paging32_prefetch_gpte fndecl 4 32604 NULL
152954 +enable_so_vlan_tag_atl1c_recv_ret_status_32608 vlan_tag atl1c_recv_ret_status 0 32608 NULL
152955 +enable_so_metronomefb_write_fndecl_32612 metronomefb_write fndecl 3 32612 NULL
152956 +enable_so_hfsplus_direct_IO_fndecl_32619 hfsplus_direct_IO fndecl 3 32619 NULL nohasharray
152957 +enable_so_SyS_llistxattr_fndecl_32619 SyS_llistxattr fndecl 3 32619 &enable_so_hfsplus_direct_IO_fndecl_32619
152958 +enable_so_ntfs_commit_pages_after_write_fndecl_32634 ntfs_commit_pages_after_write fndecl 0-4-3 32634 NULL
152959 +enable_so_do_page_add_anon_rmap_fndecl_32642 do_page_add_anon_rmap fndecl 3 32642 NULL
152960 +enable_so_wa_nep_queue_fndecl_32649 wa_nep_queue fndecl 2 32649 NULL
152961 +enable_so___load_block_bitmap_fndecl_32655 __load_block_bitmap fndecl 3 32655 NULL
152962 +enable_so_icmpv6_manip_pkt_fndecl_32658 icmpv6_manip_pkt fndecl 4 32658 NULL nohasharray
152963 +enable_so_get_queue_depth_fndecl_32658 get_queue_depth fndecl 0 32658 &enable_so_icmpv6_manip_pkt_fndecl_32658
152964 +enable_so_nrof_flowrings_brcmf_msgbuf_32666 nrof_flowrings brcmf_msgbuf 0 32666 NULL
152965 +enable_so_rtsx_usb_transfer_data_fndecl_32669 rtsx_usb_transfer_data fndecl 4-2 32669 NULL
152966 +enable_so_rangelow_v4l2_frequency_band_32670 rangelow v4l2_frequency_band 0 32670 NULL
152967 +enable_so_compressed_bio_size_fndecl_32676 compressed_bio_size fndecl 0-2 32676 NULL
152968 +enable_so_ab3100_get_set_reg_fndecl_32681 ab3100_get_set_reg fndecl 3 32681 NULL
152969 +enable_so_gma_bus_addr__intel_private_32688 gma_bus_addr _intel_private 0 32688 NULL
152970 +enable_so_udf_write_aext_fndecl_32691 udf_write_aext fndecl 4 32691 NULL
152971 +enable_so_rocker_group_l2_flood_fndecl_32699 rocker_group_l2_flood fndecl 4 32699 NULL
152972 +enable_so_write_file_ani_fndecl_32709 write_file_ani fndecl 3 32709 NULL
152973 +enable_so_size_hid_report_32715 size hid_report 0 32715 NULL
152974 +enable_so_layout_commit_fndecl_32717 layout_commit fndecl 3 32717 NULL
152975 +enable_so_residual_len_sts_entry_24xx_32720 residual_len sts_entry_24xx 0 32720 NULL
152976 +enable_so_inode_table_ext3_new_group_data_32721 inode_table ext3_new_group_data 0 32721 NULL
152977 +enable_so_copied_total_snd_compr_tstamp_32723 copied_total snd_compr_tstamp 0 32723 NULL
152978 +enable_so_ks8995_registers_read_fndecl_32738 ks8995_registers_read fndecl 5-6 32738 NULL
152979 +enable_so_vga_video_num_columns_vardecl_vgacon_c_32749 vga_video_num_columns vardecl_vgacon.c 0 32749 NULL
152980 +enable_so_lookup_zone_fndecl_32751 lookup_zone fndecl 0 32751 NULL nohasharray
152981 +enable_so_fm_extent_count_ll_user_fiemap_32751 fm_extent_count ll_user_fiemap 0 32751 &enable_so_lookup_zone_fndecl_32751
152982 +enable_so_adjust_priv_size_fndecl_32756 adjust_priv_size fndecl 1-0 32756 NULL
152983 +enable_so_cp2112_hid_get_fndecl_32758 cp2112_hid_get fndecl 4 32758 NULL
152984 +enable_so_fuse_file_ioctl_fndecl_32760 fuse_file_ioctl fndecl 2 32760 NULL
152985 +enable_so_rc_via_alen_mpls_route_config_32766 rc_via_alen mpls_route_config 0 32766 NULL
152986 +enable_so_gro_pull_from_frag0_fndecl_32770 gro_pull_from_frag0 fndecl 2 32770 NULL
152987 +enable_so_xfs_fsb_to_db_fndecl_32785 xfs_fsb_to_db fndecl 2 32785 NULL
152988 +enable_so_reg_word_size_snd_soc_codec_driver_32786 reg_word_size snd_soc_codec_driver 0 32786 NULL
152989 +enable_so_posted_intr_desc_addr_vmcs12_32788 posted_intr_desc_addr vmcs12 0 32788 NULL
152990 +enable_so_mp_register_ioapic_fndecl_32802 mp_register_ioapic fndecl 3 32802 NULL
152991 +enable_so_pipe_usb_fifo_32805 pipe usb_fifo 0 32805 NULL
152992 +enable_so_l_start_xfs_flock64_32809 l_start xfs_flock64 0 32809 NULL
152993 +enable_so_blocksize_ablkcipher_walk_32810 blocksize ablkcipher_walk 0 32810 NULL
152994 +enable_so_length_ppp_option_data_32814 length ppp_option_data 0 32814 NULL
152995 +enable_so_event_filter_write_fndecl_32818 event_filter_write fndecl 3 32818 NULL
152996 +enable_so_namelen_jfs_ea_32820 namelen jfs_ea 0 32820 NULL
152997 +enable_so_nvme_trans_log_temperature_fndecl_32822 nvme_trans_log_temperature fndecl 3 32822 NULL
152998 +enable_so_scrub_fixup_readpage_fndecl_32830 scrub_fixup_readpage fndecl 2-3-1 32830 NULL nohasharray
152999 +enable_so_num_rcv_urbs_vardecl_usbatm_c_32830 num_rcv_urbs vardecl_usbatm.c 0 32830 &enable_so_scrub_fixup_readpage_fndecl_32830
153000 +enable_so_ds_out_channels_hdspm_32836 ds_out_channels hdspm 0 32836 NULL
153001 +enable_so_num_amgms_mthca_limits_32845 num_amgms mthca_limits 0 32845 NULL
153002 +enable_so_s_inodes_per_block_bits_sysv_sb_info_32849 s_inodes_per_block_bits sysv_sb_info 0 32849 NULL
153003 +enable_so_gather_array_fndecl_32850 gather_array fndecl 3 32850 NULL
153004 +enable_so_ep_in_mcs_cb_32852 ep_in mcs_cb 0 32852 NULL
153005 +enable_so_lookup_extent_backref_fndecl_32855 lookup_extent_backref fndecl 6-9-7-8-5 32855 NULL nohasharray
153006 +enable_so_size_mem_cgroup_threshold_ary_32855 size mem_cgroup_threshold_ary 0 32855 &enable_so_lookup_extent_backref_fndecl_32855
153007 +enable_so_should_defrag_range_fndecl_32859 should_defrag_range fndecl 2 32859 NULL
153008 +enable_so_s3c_hsotg_handle_unaligned_buf_start_fndecl_32862 s3c_hsotg_handle_unaligned_buf_start fndecl 0 32862 NULL
153009 +enable_so_tx_buf_clear_used_ks959_cb_32864 tx_buf_clear_used ks959_cb 0 32864 NULL
153010 +enable_so_buffer_len_bfad_debug_info_32873 buffer_len bfad_debug_info 0 32873 NULL
153011 +enable_so_dz_divisor_dn_zone_32877 dz_divisor dn_zone 0 32877 NULL nohasharray
153012 +enable_so_dvb_ringbuffer_read_user_fndecl_32877 dvb_ringbuffer_read_user fndecl 3 32877 &enable_so_dz_divisor_dn_zone_32877
153013 +enable_so_mem_cgroup_move_charge_pte_range_fndecl_32885 mem_cgroup_move_charge_pte_range fndecl 2 32885 NULL nohasharray
153014 +enable_so_btrfs_cow_block_fndecl_32885 btrfs_cow_block fndecl 0 32885 &enable_so_mem_cgroup_move_charge_pte_range_fndecl_32885 nohasharray
153015 +enable_so_add_action_fndecl_32885 add_action fndecl 4-0 32885 &enable_so_btrfs_cow_block_fndecl_32885
153016 +enable_so_snd_gus_dram_read_fndecl_32893 snd_gus_dram_read fndecl 4 32893 NULL
153017 +enable_so___wa_xfer_setup_segs_fndecl_32902 __wa_xfer_setup_segs fndecl 2 32902 NULL
153018 +enable_so_xfs_bmbt_set_startoff_fndecl_32903 xfs_bmbt_set_startoff fndecl 2 32903 NULL
153019 +enable_so_copy_off_netrx_pending_operations_32906 copy_off netrx_pending_operations 0 32906 NULL
153020 +enable_so_ipv6_getsockopt_sticky_fndecl_32916 ipv6_getsockopt_sticky fndecl 5 32916 NULL
153021 +enable_so___add_action_fndecl_32937 __add_action fndecl 4 32937 NULL
153022 +enable_so___copy_from_user_ll_fndecl_32945 __copy_from_user_ll fndecl 0 32945 NULL
153023 +enable_so_al_stripes_resize_parms_32950 al_stripes resize_parms 0 32950 NULL
153024 +enable_so_btrfsic_map_block_fndecl_32956 btrfsic_map_block fndecl 3 32956 NULL
153025 +enable_so___carl9170_rx_fndecl_32963 __carl9170_rx fndecl 3 32963 NULL
153026 +enable_so_bop_gather_data_nilfs_bmap_operations_32964 bop_gather_data nilfs_bmap_operations 0 32964 NULL
153027 +enable_so_total_data_buflen_hv_netvsc_packet_32967 total_data_buflen hv_netvsc_packet 0 32967 NULL
153028 +enable_so_ttm_alloc_new_pages_fndecl_32971 ttm_alloc_new_pages fndecl 5 32971 NULL
153029 +enable_so_s_max_slots_ocfs2_super_block_32972 s_max_slots ocfs2_super_block 0 32972 NULL
153030 +enable_so_proc_bus_pci_lseek_fndecl_32974 proc_bus_pci_lseek fndecl 2 32974 NULL
153031 +enable_so_alloc_iommu_fndecl_32985 alloc_iommu fndecl 0-2-3 32985 NULL
153032 +enable_so_p_replen_rpc_procinfo_32991 p_replen rpc_procinfo 0 32991 NULL nohasharray
153033 +enable_so_bn_read_lock_fndecl_32991 bn_read_lock fndecl 2 32991 &enable_so_p_replen_rpc_procinfo_32991
153034 +enable_so_segment0_blkaddr_f2fs_super_block_32995 segment0_blkaddr f2fs_super_block 0 32995 NULL
153035 +enable_so_wtpref_nfs_fsinfo_33003 wtpref nfs_fsinfo 0 33003 NULL
153036 +enable_so_mtdchar_write_fndecl_33004 mtdchar_write fndecl 3 33004 NULL
153037 +enable_so_dwNtbInMaxSize_usb_cdc_ncm_ntb_parameters_33006 dwNtbInMaxSize usb_cdc_ncm_ntb_parameters 0 33006 NULL
153038 +enable_so_offset_fl_pg_chunk_33011 offset fl_pg_chunk 0 33011 NULL nohasharray
153039 +enable_so_pktshift_sge_33011 pktshift sge 0 33011 &enable_so_offset_fl_pg_chunk_33011
153040 +enable_so_do_syslog_fndecl_33012 do_syslog fndecl 3 33012 NULL
153041 +enable_so_ion_ioctl_fndecl_33013 ion_ioctl fndecl 2 33013 NULL
153042 +enable_so_fp1_intel_dpll_hw_state_33019 fp1 intel_dpll_hw_state 0 33019 NULL
153043 +enable_so_nr_regions_amd_flash_info_33022 nr_regions amd_flash_info 0 33022 NULL
153044 +enable_so_snd_rawmidi_read_fndecl_33026 snd_rawmidi_read fndecl 3 33026 NULL
153045 +enable_so_offset_xen_netif_rx_response_33028 offset xen_netif_rx_response 0 33028 NULL
153046 +enable_so_rsi_sdio_read_register_multiple_fndecl_33035 rsi_sdio_read_register_multiple fndecl 3 33035 NULL
153047 +enable_so_sacked_out_tcp_sock_33038 sacked_out tcp_sock 0 33038 NULL
153048 +enable_so_ncpus_vardecl_mcelog_c_33040 ncpus vardecl_mcelog.c 0 33040 NULL
153049 +enable_so_journal_init_revoke_table_fndecl_33048 journal_init_revoke_table fndecl 1 33048 NULL
153050 +enable_so_HighPriorityCredit_mpt2sas_facts_33050 HighPriorityCredit mpt2sas_facts 0 33050 NULL
153051 +enable_so_svc_rdma_xdr_get_reply_hdr_len_fndecl_33056 svc_rdma_xdr_get_reply_hdr_len fndecl 0 33056 NULL
153052 +enable_so_dev_read_fndecl_33058 dev_read fndecl 3 33058 NULL
153053 +enable_so_iov_iter_copy_from_user_atomic_fndecl_33059 iov_iter_copy_from_user_atomic fndecl 4 33059 NULL
153054 +enable_so_rxbufsz_ar5523_33060 rxbufsz ar5523 0 33060 NULL nohasharray
153055 +enable_so_nfilters_mc5_params_33060 nfilters mc5_params 0 33060 &enable_so_rxbufsz_ar5523_33060
153056 +enable_so_compress_compressor_33066 compress compressor 0 33066 NULL
153057 +enable_so_prepare_inurb_fndecl_33073 prepare_inurb fndecl 1 33073 NULL
153058 +enable_so_shadow_walk_init_fndecl_33074 shadow_walk_init fndecl 3 33074 NULL
153059 +enable_so_vblank_hi_lvds_dvo_timing_33077 vblank_hi lvds_dvo_timing 0 33077 NULL
153060 +enable_so___fat_nfs_get_inode_fndecl_33079 __fat_nfs_get_inode fndecl 4 33079 NULL
153061 +enable_so_regmap_i2c_write_fndecl_33086 regmap_i2c_write fndecl 3 33086 NULL
153062 +enable_so_e1000_alloc_rx_skb_fndecl_33089 e1000_alloc_rx_skb fndecl 2 33089 NULL
153063 +enable_so_spu_base_info_size_qib_user_info_33091 spu_base_info_size qib_user_info 0 33091 NULL
153064 +enable_so_write_gssp_fndecl_33095 write_gssp fndecl 3 33095 NULL
153065 +enable_so_rds_iw_xmit_fndecl_33099 rds_iw_xmit fndecl 5 33099 NULL
153066 +enable_so_hdr_len_virtnet_info_33118 hdr_len virtnet_info 0 33118 NULL
153067 +enable_so_len_cfg80211_mgmt_tx_params_33119 len cfg80211_mgmt_tx_params 0 33119 NULL
153068 +enable_so_fl_create_fndecl_33120 fl_create fndecl 5 33120 NULL
153069 +enable_so_hw_token_ehci_qtd_33122 hw_token ehci_qtd 0 33122 NULL
153070 +enable_so_ring_size_amdgpu_ring_33123 ring_size amdgpu_ring 0 33123 NULL
153071 +enable_so_gnttab_map_fndecl_33124 gnttab_map fndecl 2 33124 NULL
153072 +enable_so_max_resp_sz_nfs4_channel_attrs_33127 max_resp_sz nfs4_channel_attrs 0 33127 NULL nohasharray
153073 +enable_so_ari_length_ib_cm_rej_event_param_33127 ari_length ib_cm_rej_event_param 0 33127 &enable_so_max_resp_sz_nfs4_channel_attrs_33127
153074 +enable_so_masklength_iio_dev_33129 masklength iio_dev 0 33129 NULL
153075 +enable_so_readrids_fndecl_33131 readrids fndecl 0 33131 NULL nohasharray
153076 +enable_so_hvutil_transport_send_fndecl_33131 hvutil_transport_send fndecl 3 33131 &enable_so_readrids_fndecl_33131
153077 +enable_so_store_msg_fndecl_33138 store_msg fndecl 3 33138 NULL
153078 +enable_so___get_vm_area_caller_fndecl_33139 __get_vm_area_caller fndecl 1-3 33139 NULL
153079 +enable_so_rate_info_mwl8k_rxd_sta_33140 rate_info mwl8k_rxd_sta 0 33140 NULL
153080 +enable_so_size_bmp_header_33141 size bmp_header 0 33141 NULL
153081 +enable_so_l2cap_segment_le_sdu_fndecl_33145 l2cap_segment_le_sdu fndecl 4 33145 NULL
153082 +enable_so_lprocfs_fid_space_seq_write_fndecl_33148 lprocfs_fid_space_seq_write fndecl 3 33148 NULL
153083 +enable_so_putused_user_fndecl_33152 putused_user fndecl 3 33152 NULL
153084 +enable_so_osd_req_list_partition_objects_fndecl_33155 osd_req_list_partition_objects fndecl 5 33155 NULL
153085 +enable_so_lbs_rdmac_write_fndecl_33156 lbs_rdmac_write fndecl 3 33156 NULL
153086 +enable_so_cx231xx_init_isoc_fndecl_33174 cx231xx_init_isoc fndecl 4-2-3 33174 NULL
153087 +enable_so_dm_array_walk_fndecl_33175 dm_array_walk fndecl 2 33175 NULL nohasharray
153088 +enable_so_hcs_params2_xhci_hcd_33175 hcs_params2 xhci_hcd 0 33175 &enable_so_dm_array_walk_fndecl_33175
153089 +enable_so_rw_devices_btrfs_fs_devices_33182 rw_devices btrfs_fs_devices 0 33182 NULL
153090 +enable_so_arp_filter_size_mwifiex_adapter_33183 arp_filter_size mwifiex_adapter 0 33183 NULL
153091 +enable_so_Memhscx_empty_fifo_fndecl_33197 Memhscx_empty_fifo fndecl 2 33197 NULL
153092 +enable_so_data_avail_vardecl_core_c_33198 data_avail vardecl_core.c 0 33198 NULL
153093 +enable_so_ieee80211_rx_mgmt_probe_beacon_fndecl_33208 ieee80211_rx_mgmt_probe_beacon fndecl 3 33208 NULL
153094 +enable_so_block_size_dm_bufio_client_33221 block_size dm_bufio_client 0 33221 NULL
153095 +enable_so_num_lan_msix_i40e_pf_33223 num_lan_msix i40e_pf 0 33223 NULL
153096 +enable_so_ip_options_get_fndecl_33225 ip_options_get fndecl 4 33225 NULL
153097 +enable_so_l1oip_socket_recv_fndecl_33226 l1oip_socket_recv fndecl 6 33226 NULL
153098 +enable_so_segment_count_main_f2fs_super_block_33230 segment_count_main f2fs_super_block 0 33230 NULL
153099 +enable_so_cfg80211_connect_result_fndecl_33232 cfg80211_connect_result fndecl 6-4 33232 NULL
153100 +enable_so_lustre_posix_acl_xattr_reduce_space_fndecl_33235 lustre_posix_acl_xattr_reduce_space fndecl 3 33235 NULL
153101 +enable_so_nsumblk_nilfs_segsum_info_33238 nsumblk nilfs_segsum_info 0 33238 NULL
153102 +enable_so_udf_load_partdesc_fndecl_33239 udf_load_partdesc fndecl 2 33239 NULL
153103 +enable_so_save_tx_buffer_request_fndecl_33245 save_tx_buffer_request fndecl 3 33245 NULL
153104 +enable_so_mfs_fc_lport_33249 mfs fc_lport 0 33249 NULL
153105 +enable_so_alloc_apertures_fndecl_33250 alloc_apertures fndecl 1 33250 NULL
153106 +enable_so_metadata_size_ecryptfs_crypt_stat_33252 metadata_size ecryptfs_crypt_stat 0 33252 NULL
153107 +enable_so_size_reserved_mem_33254 size reserved_mem 0 33254 NULL
153108 +enable_so_handle_bytes_file_handle_33261 handle_bytes file_handle 0 33261 NULL
153109 +enable_so_mem_size_ramoops_platform_data_33263 mem_size ramoops_platform_data 0 33263 NULL
153110 +enable_so_ip_vs_prepare_tunneled_skb_fndecl_33269 ip_vs_prepare_tunneled_skb fndecl 3 33269 NULL
153111 +enable_so_ocfs2_change_extent_flag_fndecl_33270 ocfs2_change_extent_flag fndecl 3-5 33270 NULL
153112 +enable_so_ep_msg_out_peak_usb_device_33281 ep_msg_out peak_usb_device 0 33281 NULL nohasharray
153113 +enable_so_hpfs_readpages_fndecl_33281 hpfs_readpages fndecl 4 33281 &enable_so_ep_msg_out_peak_usb_device_33281 nohasharray
153114 +enable_so_sbsector_iso9660_options_33281 sbsector iso9660_options 0 33281 &enable_so_hpfs_readpages_fndecl_33281
153115 +enable_so_mappable_end_i915_gtt_33282 mappable_end i915_gtt 0 33282 NULL
153116 +enable_so_frame_size_camera_data_33292 frame_size camera_data 0 33292 NULL
153117 +enable_so_ocfs2_max_file_offset_fndecl_33295 ocfs2_max_file_offset fndecl 0-2 33295 NULL
153118 +enable_so_e_phnum_elf64_hdr_33305 e_phnum elf64_hdr 0 33305 NULL
153119 +enable_so_tracing_set_trace_write_fndecl_33307 tracing_set_trace_write fndecl 3 33307 NULL
153120 +enable_so_max_width_vsp1_rwpf_33314 max_width vsp1_rwpf 0 33314 NULL
153121 +enable_so_nl80211_send_deauth_fndecl_33315 nl80211_send_deauth fndecl 4 33315 NULL
153122 +enable_so__iwl_dbgfs_bf_params_write_fndecl_33318 _iwl_dbgfs_bf_params_write fndecl 3 33318 NULL
153123 +enable_so_acpi_gsb_i2c_read_bytes_fndecl_33322 acpi_gsb_i2c_read_bytes fndecl 4 33322 NULL
153124 +enable_so_hlen_h4_recv_pkt_33324 hlen h4_recv_pkt 0 33324 NULL
153125 +enable_so_ino_inode_defrag_33325 ino inode_defrag 0 33325 NULL
153126 +enable_so_ahd_sg_setup_fndecl_33341 ahd_sg_setup fndecl 4-5 33341 NULL
153127 +enable_so_stk_prepare_sio_buffers_fndecl_33347 stk_prepare_sio_buffers fndecl 2 33347 NULL
153128 +enable_so_max_vpi_lpfc_max_cfg_param_33350 max_vpi lpfc_max_cfg_param 0 33350 NULL
153129 +enable_so_udl_prime_create_fndecl_33364 udl_prime_create fndecl 2 33364 NULL nohasharray
153130 +enable_so_scanlength_usbvision_frame_33364 scanlength usbvision_frame 0 33364 &enable_so_udl_prime_create_fndecl_33364 nohasharray
153131 +enable_so_bpa10x_recv_fndecl_33364 bpa10x_recv fndecl 4 33364 &enable_so_scanlength_usbvision_frame_33364
153132 +enable_so_ihandlen_xfs_fsop_handlereq_33370 ihandlen xfs_fsop_handlereq 0 33370 NULL
153133 +enable_so_lpfc_sg_seg_cnt_init_fndecl_33371 lpfc_sg_seg_cnt_init fndecl 2 33371 NULL
153134 +enable_so_ieee_802_1x_local_info_33374 ieee_802_1x local_info 0 33374 NULL
153135 +enable_so_sys_io_getevents_fndecl_33381 sys_io_getevents fndecl 3 33381 NULL
153136 +enable_so_length_mac_configuration_hdr_33392 length mac_configuration_hdr 0 33392 NULL
153137 +enable_so_hash_netnet6_expire_fndecl_33396 hash_netnet6_expire fndecl 4 33396 NULL
153138 +enable_so_sys_poll_fndecl_33397 sys_poll fndecl 2 33397 NULL
153139 +enable_so_data_offset_rndis_packet_33403 data_offset rndis_packet 0 33403 NULL
153140 +enable_so_drbg_blocklen_fndecl_33412 drbg_blocklen fndecl 0 33412 NULL
153141 +enable_so_dma_fifo_alloc_fndecl_33415 dma_fifo_alloc fndecl 2-3-5 33415 NULL
153142 +enable_so_flush_space_fndecl_33418 flush_space fndecl 0 33418 NULL
153143 +enable_so_lbmRead_fndecl_33420 lbmRead fndecl 2 33420 NULL
153144 +enable_so_rsxx_cram_write_fndecl_33423 rsxx_cram_write fndecl 3 33423 NULL
153145 +enable_so_tt3650_ci_msg_fndecl_33424 tt3650_ci_msg fndecl 4 33424 NULL
153146 +enable_so_intr_dma_usb_pcwd_private_33427 intr_dma usb_pcwd_private 0 33427 NULL
153147 +enable_so_clevel_f2fs_inode_info_33430 clevel f2fs_inode_info 0 33430 NULL
153148 +enable_so_change_mtu_fndecl_33432 change_mtu fndecl 2 33432 NULL nohasharray
153149 +enable_so_in_nextiag_dinomap_33432 in_nextiag dinomap 0 33432 &enable_so_change_mtu_fndecl_33432
153150 +enable_so__nfs4_proc_readlink_fndecl_33436 _nfs4_proc_readlink fndecl 4 33436 NULL
153151 +enable_so_wqe_size_ib_uverbs_post_send_33437 wqe_size ib_uverbs_post_send 0 33437 NULL
153152 +enable_so_nilfs_set_nsegments_fndecl_33438 nilfs_set_nsegments fndecl 2 33438 NULL
153153 +enable_so_mmc_test_area_io_seq_fndecl_33440 mmc_test_area_io_seq fndecl 2 33440 NULL
153154 +enable_so_w_dloarea_33444 w dloarea 0 33444 NULL
153155 +enable_so_trim_start_cp_control_33446 trim_start cp_control 0 33446 NULL
153156 +enable_so_ocfs2_divide_xattr_bucket_fndecl_33455 ocfs2_divide_xattr_bucket fndecl 3-4 33455 NULL
153157 +enable_so_oprofilefs_ulong_from_user_fndecl_33456 oprofilefs_ulong_from_user fndecl 3 33456 NULL
153158 +enable_so_ieee80211_if_fmt_tsf_fndecl_33458 ieee80211_if_fmt_tsf fndecl 3 33458 NULL
153159 +enable_so_alloc_flex_gd_fndecl_33464 alloc_flex_gd fndecl 1 33464 NULL
153160 +enable_so_tx_pipe_usbpn_dev_33474 tx_pipe usbpn_dev 0 33474 NULL
153161 +enable_so_packets_out_tcp_sock_33478 packets_out tcp_sock 0 33478 NULL
153162 +enable_so___nbd_ioctl_fndecl_33480 __nbd_ioctl fndecl 4 33480 NULL
153163 +enable_so_ath6kl_buf_alloc_fndecl_33483 ath6kl_buf_alloc fndecl 1 33483 NULL
153164 +enable_so_ftdi_elan_write_fndecl_33486 ftdi_elan_write fndecl 3 33486 NULL
153165 +enable_so_lbs_sleepparams_write_fndecl_33488 lbs_sleepparams_write fndecl 3 33488 NULL
153166 +enable_so_string_length_no_trail_fndecl_33497 string_length_no_trail fndecl 0-2 33497 NULL
153167 +enable_so_num_rx_descs_iser_conn_33499 num_rx_descs iser_conn 0 33499 NULL
153168 +enable_so_ocfs2_xattr_shrink_size_fndecl_33507 ocfs2_xattr_shrink_size fndecl 3 33507 NULL
153169 +enable_so_chunk_io_fndecl_33510 chunk_io fndecl 3 33510 NULL
153170 +enable_so_pcigart_offset_drm_radeon_private_33512 pcigart_offset drm_radeon_private 0 33512 NULL
153171 +enable_so_usblp_read_fndecl_33517 usblp_read fndecl 3 33517 NULL
153172 +enable_so_len_writequeue_entry_33522 len writequeue_entry 0 33522 NULL nohasharray
153173 +enable_so_write_file_regval_fndecl_33522 write_file_regval fndecl 3 33522 &enable_so_len_writequeue_entry_33522
153174 +enable_so_offset_port_buffer_33530 offset port_buffer 0 33530 NULL
153175 +enable_so___mxt_write_reg_fndecl_33533 __mxt_write_reg fndecl 3 33533 NULL
153176 +enable_so_capture_streams_azx_33537 capture_streams azx 0 33537 NULL
153177 +enable_so_mlx5_buf_alloc_fndecl_33539 mlx5_buf_alloc fndecl 2 33539 NULL
153178 +enable_so_dlfb_setup_modes_fndecl_33548 dlfb_setup_modes fndecl 4 33548 NULL
153179 +enable_so_kvm_vcpu_read_guest_fndecl_33552 kvm_vcpu_read_guest fndecl 4-2 33552 NULL
153180 +enable_so_nfc_llcp_build_sdreq_tlv_fndecl_33563 nfc_llcp_build_sdreq_tlv fndecl 3 33563 NULL
153181 +enable_so_snd_rawmidi_kernel_write1_fndecl_33564 snd_rawmidi_kernel_write1 fndecl 4-0 33564 NULL
153182 +enable_so_qlen_status_event_list_33569 qlen status_event_list 0 33569 NULL
153183 +enable_so_pos_hbucket_33573 pos hbucket 0 33573 NULL
153184 +enable_so_pvr2_debugifc_print_status_fndecl_33577 pvr2_debugifc_print_status fndecl 3 33577 NULL
153185 +enable_so_lcm_fndecl_33580 lcm fndecl 0-2-1 33580 NULL nohasharray
153186 +enable_so_self_dnode_33580 self dnode 0 33580 &enable_so_lcm_fndecl_33580 nohasharray
153187 +enable_so_batadv_tt_update_changes_fndecl_33580 batadv_tt_update_changes fndecl 3 33580 &enable_so_self_dnode_33580
153188 +enable_so_btrfs_direct_IO_fndecl_33586 btrfs_direct_IO fndecl 3 33586 NULL
153189 +enable_so_i2c_readregs_fndecl_33590 i2c_readregs fndecl 5 33590 NULL
153190 +enable_so_hci_mgmt_cmd_fndecl_33591 hci_mgmt_cmd fndecl 4 33591 NULL
153191 +enable_so_num_ae_requests_vardecl_33594 num_ae_requests vardecl 0 33594 NULL
153192 +enable_so_lde_namelen_lu_dirent_33595 lde_namelen lu_dirent 0 33595 NULL
153193 +enable_so___kfifo_out_fndecl_33612 __kfifo_out fndecl 0-3 33612 NULL
153194 +enable_so_scif_setup_qp_accept_fndecl_33630 scif_setup_qp_accept fndecl 4 33630 NULL
153195 +enable_so_data_size_kretprobe_33633 data_size kretprobe 0 33633 NULL
153196 +enable_so_memblock_size_vxge_hw_mempool_33647 memblock_size vxge_hw_mempool 0 33647 NULL
153197 +enable_so_size_dma_buf_33648 size dma_buf 0 33648 NULL nohasharray
153198 +enable_so_s_want_extra_isize_ext4_sb_info_33648 s_want_extra_isize ext4_sb_info 0 33648 &enable_so_size_dma_buf_33648
153199 +enable_so_check_header_fndecl_33649 check_header fndecl 2 33649 NULL
153200 +enable_so_tool_peer_spad_write_fndecl_33652 tool_peer_spad_write fndecl 3 33652 NULL
153201 +enable_so_journal_init_revoke_fndecl_33654 journal_init_revoke fndecl 2 33654 NULL
153202 +enable_so_il4965_rs_switch_to_mimo2_fndecl_33682 il4965_rs_switch_to_mimo2 fndecl 6 33682 NULL
153203 +enable_so_data_size_vxge_rx_priv_33684 data_size vxge_rx_priv 0 33684 NULL
153204 +enable_so_mb_find_order_for_block_fndecl_33691 mb_find_order_for_block fndecl 0 33691 NULL
153205 +enable_so_alignment_offset_queue_limits_33701 alignment_offset queue_limits 0 33701 NULL
153206 +enable_so_out_phase_usb_stream_kernel_33720 out_phase usb_stream_kernel 0 33720 NULL nohasharray
153207 +enable_so_vlsi_alloc_ring_fndecl_33720 vlsi_alloc_ring fndecl 3-4 33720 &enable_so_out_phase_usb_stream_kernel_33720
153208 +enable_so_ieee80211_if_fmt_state_fndecl_33728 ieee80211_if_fmt_state fndecl 3 33728 NULL
153209 +enable_so_atwrite_submit_fndecl_33732 atwrite_submit fndecl 3 33732 NULL nohasharray
153210 +enable_so_video_height_sis_video_info_33732 video_height sis_video_info 0 33732 &enable_so_atwrite_submit_fndecl_33732
153211 +enable_so_hpfs_bmap_fndecl_33733 hpfs_bmap fndecl 2-0 33733 NULL
153212 +enable_so_xres_fb_var_screeninfo_33734 xres fb_var_screeninfo 0 33734 NULL
153213 +enable_so_stub_chips_nr_vardecl_i2c_stub_c_33739 stub_chips_nr vardecl_i2c-stub.c 0 33739 NULL
153214 +enable_so_avr_ack_ptr_dccp_ackvec_record_33759 avr_ack_ptr dccp_ackvec_record 0 33759 NULL
153215 +enable_so_default_bpp_vardecl_sm501fb_c_33765 default_bpp vardecl_sm501fb.c 0 33765 NULL
153216 +enable_so_wmi_send_fndecl_33768 wmi_send fndecl 4 33768 NULL
153217 +enable_so_f_height_gsc_frame_33772 f_height gsc_frame 0 33772 NULL
153218 +enable_so_max_gpios_rdc321x_gpio_pdata_33783 max_gpios rdc321x_gpio_pdata 0 33783 NULL
153219 +enable_so_pcmcia_replace_cis_fndecl_33785 pcmcia_replace_cis fndecl 3 33785 NULL nohasharray
153220 +enable_so_fm_mapped_extents_ll_user_fiemap_33785 fm_mapped_extents ll_user_fiemap 0 33785 &enable_so_pcmcia_replace_cis_fndecl_33785
153221 +enable_so_sca3000_read_data_fndecl_33787 sca3000_read_data fndecl 4 33787 NULL
153222 +enable_so_sis190_try_rx_copy_fndecl_33790 sis190_try_rx_copy fndecl 3 33790 NULL
153223 +enable_so_sd_write_data_fndecl_33792 sd_write_data fndecl 5 33792 NULL
153224 +enable_so_icv_truncbits_xfrm_algo_auth_info_33798 icv_truncbits xfrm_algo_auth_info 0 33798 NULL
153225 +enable_so_b43legacy_plcp_get_bitrate_idx_ofdm_fndecl_33816 b43legacy_plcp_get_bitrate_idx_ofdm fndecl 0 33816 NULL
153226 +enable_so_custom_length_iscsi_stats_33819 custom_length iscsi_stats 0 33819 NULL
153227 +enable_so_gfs2_bitfit_fndecl_33821 gfs2_bitfit fndecl 0 33821 NULL
153228 +enable_so_SyS_keyctl_fndecl_33825 SyS_keyctl fndecl 4 33825 NULL
153229 +enable_so_mult_usb_ep_33831 mult usb_ep 0 33831 NULL
153230 +enable_so_selinux_setprocattr_fndecl_33832 selinux_setprocattr fndecl 4 33832 NULL
153231 +enable_so_blk_size_ide_tape_obj_33837 blk_size ide_tape_obj 0 33837 NULL
153232 +enable_so_targetsize_xt_target_33840 targetsize xt_target 0 33840 NULL
153233 +enable_so_add_partition_fndecl_33847 add_partition fndecl 3 33847 NULL
153234 +enable_so_kstrtou8_from_user_fndecl_33852 kstrtou8_from_user fndecl 2 33852 NULL
153235 +enable_so_sctp_addto_chunk_fixed_fndecl_33853 sctp_addto_chunk_fixed fndecl 2 33853 NULL
153236 +enable_so_xfs_qm_scall_trunc_qfile_fndecl_33855 xfs_qm_scall_trunc_qfile fndecl 2 33855 NULL
153237 +enable_so_rx_buf_total_size__mgslpc_info_33856 rx_buf_total_size _mgslpc_info 0 33856 NULL
153238 +enable_so_root_adfs_discrecord_33866 root adfs_discrecord 0 33866 NULL nohasharray
153239 +enable_so_h5_link_control_fndecl_33866 h5_link_control fndecl 3 33866 &enable_so_root_adfs_discrecord_33866
153240 +enable_so_tolen_nfs_linkargs_33881 tolen nfs_linkargs 0 33881 NULL
153241 +enable_so_len_gsm_control_33882 len gsm_control 0 33882 NULL
153242 +enable_so_reiserfs_xattr_get_fndecl_33887 reiserfs_xattr_get fndecl 0 33887 NULL nohasharray
153243 +enable_so_pktgen_if_write_fndecl_33887 pktgen_if_write fndecl 3 33887 &enable_so_reiserfs_xattr_get_fndecl_33887
153244 +enable_so_init_stripe_fndecl_33902 init_stripe fndecl 2 33902 NULL
153245 +enable_so__install_special_mapping_fndecl_33907 _install_special_mapping fndecl 3-2 33907 NULL
153246 +enable_so_mmio_readl_intel_uncore_funcs_33910 mmio_readl intel_uncore_funcs 0 33910 NULL
153247 +enable_so_rx_desc_count_xgbe_prv_data_33915 rx_desc_count xgbe_prv_data 0 33915 NULL
153248 +enable_so_hash_fname_33923 hash fname 0 33923 NULL
153249 +enable_so_wil_vring_alloc_skb_fndecl_33924 wil_vring_alloc_skb fndecl 4 33924 NULL
153250 +enable_so_size_cmdline_vardecl_dma_contiguous_c_33925 size_cmdline vardecl_dma-contiguous.c 0 33925 NULL
153251 +enable_so_genl_allocate_reserve_groups_fndecl_33930 genl_allocate_reserve_groups fndecl 1 33930 NULL
153252 +enable_so_max_channels_snd_midi_channel_set_33931 max_channels snd_midi_channel_set 0 33931 NULL
153253 +enable_so_numa_add_memblk_to_fndecl_33934 numa_add_memblk_to fndecl 2-3 33934 NULL nohasharray
153254 +enable_so_isl1208_i2c_set_regs_fndecl_33934 isl1208_i2c_set_regs fndecl 4 33934 &enable_so_numa_add_memblk_to_fndecl_33934 nohasharray
153255 +enable_so_tcp_push_fndecl_33934 tcp_push fndecl 3 33934 &enable_so_isl1208_i2c_set_regs_fndecl_33934
153256 +enable_so_iwl_dbgfs_plcp_delta_write_fndecl_33937 iwl_dbgfs_plcp_delta_write fndecl 3 33937 NULL
153257 +enable_so_get_info_fndecl_33938 get_info fndecl 3 33938 NULL
153258 +enable_so_bulk_in_usbatm_driver_33939 bulk_in usbatm_driver 0 33939 NULL
153259 +enable_so_ext4_alloc_file_blocks_fndecl_33946 ext4_alloc_file_blocks fndecl 2-3 33946 NULL
153260 +enable_so_i_first_extent_iso_inode_info_33947 i_first_extent iso_inode_info 0 33947 NULL
153261 +enable_so_num_rsp_hci_inquiry_req_33953 num_rsp hci_inquiry_req 0 33953 NULL
153262 +enable_so_lpfc_sg_seg_cnt_vardecl_lpfc_attr_c_33956 lpfc_sg_seg_cnt vardecl_lpfc_attr.c 0 33956 NULL
153263 +enable_so_ext4_get_block_fndecl_33967 ext4_get_block fndecl 2 33967 NULL
153264 +enable_so_ones_dma_mmc_spi_host_33969 ones_dma mmc_spi_host 0 33969 NULL
153265 +enable_so_ocfs2_lock_refcount_tree_fndecl_33972 ocfs2_lock_refcount_tree fndecl 2 33972 NULL
153266 +enable_so_pm8001_store_update_fw_fndecl_33975 pm8001_store_update_fw fndecl 4 33975 NULL
153267 +enable_so_max_indirect_segments_blkfront_info_33976 max_indirect_segments blkfront_info 0 33976 NULL
153268 +enable_so_cwarn_cm4000_dev_33978 cwarn cm4000_dev 0 33978 NULL
153269 +enable_so_buf_len_wmi_tlv_mgmt_rx_ev_33979 buf_len wmi_tlv_mgmt_rx_ev 0 33979 NULL
153270 +enable_so_usbat_bulk_write_fndecl_33983 usbat_bulk_write fndecl 3 33983 NULL
153271 +enable_so_unit_off_ore_striping_info_33989 unit_off ore_striping_info 0 33989 NULL
153272 +enable_so_sectorsize_scrub_ctx_33993 sectorsize scrub_ctx 0 33993 NULL
153273 +enable_so_ethtool_copy_validate_indir_fndecl_33994 ethtool_copy_validate_indir fndecl 4 33994 NULL
153274 +enable_so_v_front_porch_fb_cvt_data_34001 v_front_porch fb_cvt_data 0 34001 NULL
153275 +enable_so_batadv_tvlv_unicast_send_fndecl_34005 batadv_tvlv_unicast_send fndecl 7 34005 NULL
153276 +enable_so_rxextrahdrroom_dma_info_34007 rxextrahdrroom dma_info 0 34007 NULL
153277 +enable_so_ctxtcnt_qib_devdata_34012 ctxtcnt qib_devdata 0 34012 NULL
153278 +enable_so_periodic_size_ehci_hcd_34013 periodic_size ehci_hcd 0 34013 NULL
153279 +enable_so_wl12xx_spi_raw_read_fndecl_34014 wl12xx_spi_raw_read fndecl 4 34014 NULL
153280 +enable_so_parent_len_fndecl_34020 parent_len fndecl 0 34020 NULL nohasharray
153281 +enable_so_uwb_rc_neh_grok_event_fndecl_34020 uwb_rc_neh_grok_event fndecl 3 34020 &enable_so_parent_len_fndecl_34020
153282 +enable_so___kvm_write_guest_page_fndecl_34021 __kvm_write_guest_page fndecl 5 34021 NULL
153283 +enable_so_size_edac_mc_layer_34031 size edac_mc_layer 0 34031 NULL
153284 +enable_so_strlen_fndecl_34033 strlen fndecl 0 34033 NULL
153285 +enable_so_blksize_sdio_cis_34036 blksize sdio_cis 0 34036 NULL
153286 +enable_so_sector_number_blkif_request_discard_34039 sector_number blkif_request_discard 0 34039 NULL nohasharray
153287 +enable_so_wil_addba_tx_request_fndecl_34039 wil_addba_tx_request fndecl 3 34039 &enable_so_sector_number_blkif_request_discard_34039
153288 +enable_so_req_bio_endio_fndecl_34041 req_bio_endio fndecl 3 34041 NULL
153289 +enable_so_len_hdlcdrv_hdlcrx_34043 len hdlcdrv_hdlcrx 0 34043 NULL
153290 +enable_so_dma_size_nx_host_rds_ring_34047 dma_size nx_host_rds_ring 0 34047 NULL
153291 +enable_so_ide_do_setfeature_fndecl_34050 ide_do_setfeature fndecl 3 34050 NULL
153292 +enable_so_lov_get_stripecnt_fndecl_34066 lov_get_stripecnt fndecl 0-3 34066 NULL
153293 +enable_so_gsm_control_modem_fndecl_34068 gsm_control_modem fndecl 3 34068 NULL
153294 +enable_so_wb_bytes_nfs_page_34071 wb_bytes nfs_page 0 34071 NULL nohasharray
153295 +enable_so_opt_val_tcp_repair_opt_34071 opt_val tcp_repair_opt 0 34071 &enable_so_wb_bytes_nfs_page_34071
153296 +enable_so_qp_alloc_guest_work_fndecl_34074 qp_alloc_guest_work fndecl 5-3 34074 NULL nohasharray
153297 +enable_so___get_vm_area_node_fndecl_34074 __get_vm_area_node fndecl 1-2-4 34074 &enable_so_qp_alloc_guest_work_fndecl_34074
153298 +enable_so_isert_build_rdma_wr_fndecl_34085 isert_build_rdma_wr fndecl 5-6 34085 NULL
153299 +enable_so_rec_len_ext2_dir_entry_2_34086 rec_len ext2_dir_entry_2 0 34086 NULL nohasharray
153300 +enable_so_get_info_tcp_congestion_ops_34086 get_info tcp_congestion_ops 0 34086 &enable_so_rec_len_ext2_dir_entry_2_34086
153301 +enable_so_mst_node_alsz_ubifs_info_34087 mst_node_alsz ubifs_info 0 34087 NULL
153302 +enable_so_LFBsize_sis_video_info_34089 LFBsize sis_video_info 0 34089 NULL
153303 +enable_so_restore_node_summary_fndecl_34091 restore_node_summary fndecl 2 34091 NULL
153304 +enable_so___memblock_alloc_base_fndecl_34092 __memblock_alloc_base fndecl 2-1 34092 NULL
153305 +enable_so_max_frame_ft_sess_34098 max_frame ft_sess 0 34098 NULL nohasharray
153306 +enable_so_compat_SyS_mbind_fndecl_34098 compat_SyS_mbind fndecl 5 34098 &enable_so_max_frame_ft_sess_34098
153307 +enable_so_c_chmask_f_uac2_opts_34103 c_chmask f_uac2_opts 0 34103 NULL
153308 +enable_so_vme_user_read_fndecl_34105 vme_user_read fndecl 3 34105 NULL
153309 +enable_so_reg_read_fndecl_34106 reg_read fndecl 0 34106 NULL
153310 +enable_so_do_shmat_fndecl_34107 do_shmat fndecl 5 34107 NULL
153311 +enable_so_lcd_right_margin_atyfb_par_34110 lcd_right_margin atyfb_par 0 34110 NULL
153312 +enable_so_reserved_eq_mlx4_func_cap_34117 reserved_eq mlx4_func_cap 0 34117 NULL
153313 +enable_so_chunk_size_lirc_driver_34118 chunk_size lirc_driver 0 34118 NULL
153314 +enable_so_qxl_alloc_bo_reserved_fndecl_34119 qxl_alloc_bo_reserved fndecl 3 34119 NULL
153315 +enable_so_nf_nat_ipv4_manip_pkt_fndecl_34120 nf_nat_ipv4_manip_pkt fndecl 2 34120 NULL
153316 +enable_so_cw1200_sdio_align_size_fndecl_34124 cw1200_sdio_align_size fndecl 2 34124 NULL
153317 +enable_so_nfs_vmtruncate_fndecl_34126 nfs_vmtruncate fndecl 2 34126 NULL
153318 +enable_so_iterate_inode_extrefs_fndecl_34129 iterate_inode_extrefs fndecl 1 34129 NULL
153319 +enable_so_digestsize_hash_tfm_34135 digestsize hash_tfm 0 34135 NULL
153320 +enable_so_dst_width_snd_pcm_plugin_34144 dst_width snd_pcm_plugin 0 34144 NULL
153321 +enable_so_object_size_kmem_cache_34151 object_size kmem_cache 0 34151 NULL
153322 +enable_so_sky2_change_mtu_fndecl_34157 sky2_change_mtu fndecl 2 34157 NULL nohasharray
153323 +enable_so_data_size_dm_ulog_request_34157 data_size dm_ulog_request 0 34157 &enable_so_sky2_change_mtu_fndecl_34157
153324 +enable_so_nb_if_sdio_packet_34158 nb if_sdio_packet 0 34158 NULL nohasharray
153325 +enable_so_usb_pipe_ua101_stream_34158 usb_pipe ua101_stream 0 34158 &enable_so_nb_if_sdio_packet_34158
153326 +enable_so___domain_mapping_fndecl_34162 __domain_mapping fndecl 2 34162 NULL
153327 +enable_so_save_mr_fndecl_34167 save_mr fndecl 4 34167 NULL
153328 +enable_so_blockmask_sddr55_card_info_34172 blockmask sddr55_card_info 0 34172 NULL
153329 +enable_so_osst_seek_sector_fndecl_34173 osst_seek_sector fndecl 3 34173 NULL
153330 +enable_so_buffers_pipe_inode_info_34187 buffers pipe_inode_info 0 34187 NULL
153331 +enable_so_new_oblock_dm_cache_migration_34189 new_oblock dm_cache_migration 0 34189 NULL
153332 +enable_so_length_dm_target_spec_34193 length dm_target_spec 0 34193 NULL
153333 +enable_so_i2c_wr_max_m88ds3103_config_34194 i2c_wr_max m88ds3103_config 0 34194 NULL nohasharray
153334 +enable_so_nouveau_cli_create_fndecl_34194 nouveau_cli_create fndecl 3 34194 &enable_so_i2c_wr_max_m88ds3103_config_34194
153335 +enable_so_write_room_tty_operations_34200 write_room tty_operations 0 34200 NULL
153336 +enable_so_cxgb4vf_change_mtu_fndecl_34204 cxgb4vf_change_mtu fndecl 2 34204 NULL
153337 +enable_so_cx23888_ir_rx_read_fndecl_34210 cx23888_ir_rx_read fndecl 3 34210 NULL
153338 +enable_so_xen_evtchn_max_channels_fndecl_34213 xen_evtchn_max_channels fndecl 0 34213 NULL
153339 +enable_so_snd_pcm_lib_write_fndecl_34216 snd_pcm_lib_write fndecl 0 34216 NULL
153340 +enable_so_new_sync_write_fndecl_34217 new_sync_write fndecl 0 34217 NULL
153341 +enable_so_total_out_z_stream_s_34221 total_out z_stream_s 0 34221 NULL
153342 +enable_so_ext4_expand_extra_isize_fndecl_34225 ext4_expand_extra_isize fndecl 2 34225 NULL
153343 +enable_so_segno_sit_journal_entry_34226 segno sit_journal_entry 0 34226 NULL
153344 +enable_so___vxge_hw_channel_allocate_fndecl_34229 __vxge_hw_channel_allocate fndecl 3 34229 NULL
153345 +enable_so_m_len_s_mbuf_34233 m_len s_mbuf 0 34233 NULL
153346 +enable_so_max_devs_supported_ipr_ioa_cfg_34240 max_devs_supported ipr_ioa_cfg 0 34240 NULL
153347 +enable_so_cfpkt_pad_trail_fndecl_34244 cfpkt_pad_trail fndecl 2 34244 NULL
153348 +enable_so_agno_xfs_extent_busy_34245 agno xfs_extent_busy 0 34245 NULL
153349 +enable_so___vmx_complete_interrupts_fndecl_34246 __vmx_complete_interrupts fndecl 2 34246 NULL
153350 +enable_so_pktgen_finalize_skb_fndecl_34253 pktgen_finalize_skb fndecl 3 34253 NULL
153351 +enable_so_status_tulip_rx_desc_34260 status tulip_rx_desc 0 34260 NULL
153352 +enable_so_set_msr_interception_fndecl_34273 set_msr_interception fndecl 2 34273 NULL
153353 +enable_so_reg_read_smsc911x_ops_34274 reg_read smsc911x_ops 0 34274 NULL
153354 +enable_so_max_segs_mmc_host_34276 max_segs mmc_host 0 34276 NULL
153355 +enable_so_dm_stats_list_fndecl_34284 dm_stats_list fndecl 4 34284 NULL
153356 +enable_so_hash_ipport6_expire_fndecl_34286 hash_ipport6_expire fndecl 4 34286 NULL
153357 +enable_so_ea_get_fndecl_34289 ea_get fndecl 3 34289 NULL nohasharray
153358 +enable_so_ocfs2_group_from_res_fndecl_34289 ocfs2_group_from_res fndecl 0 34289 &enable_so_ea_get_fndecl_34289
153359 +enable_so_cpu_msix_table_sz_MPT3SAS_ADAPTER_34295 cpu_msix_table_sz MPT3SAS_ADAPTER 0 34295 NULL
153360 +enable_so_skb_coalesce_rx_frag_fndecl_34296 skb_coalesce_rx_frag fndecl 3 34296 NULL
153361 +enable_so_p1_FS_QENTRY_34311 p1 FS_QENTRY 0 34311 NULL
153362 +enable_so_usb6fire_pcm_init_urb_fndecl_34318 usb6fire_pcm_init_urb fndecl 4 34318 NULL
153363 +enable_so_acm_tty_write_fndecl_34323 acm_tty_write fndecl 3 34323 NULL
153364 +enable_so_usb_alloc_stream_buffers_fndecl_34344 usb_alloc_stream_buffers fndecl 3 34344 NULL
153365 +enable_so_write_file_frameerrors_fndecl_34370 write_file_frameerrors fndecl 3 34370 NULL
153366 +enable_so_get_bad_peb_limit_fndecl_34374 get_bad_peb_limit fndecl 2 34374 NULL
153367 +enable_so_bytes_to_read_mpt2_diag_read_buffer_34380 bytes_to_read mpt2_diag_read_buffer 0 34380 NULL
153368 +enable_so_r_minimode_34384 r minimode 0 34384 NULL
153369 +enable_so_vd_blocknr_nilfs_vdesc_34386 vd_blocknr nilfs_vdesc 0 34386 NULL
153370 +enable_so_min_scaled_height_bttv_crop_34408 min_scaled_height bttv_crop 0 34408 NULL
153371 +enable_so_w_minimode_34418 w minimode 0 34418 NULL
153372 +enable_so_rawv6_setsockopt_fndecl_34422 rawv6_setsockopt fndecl 5 34422 NULL
153373 +enable_so_fragsize_inet_cork_34425 fragsize inet_cork 0 34425 NULL
153374 +enable_so_vs_xdrsize_svc_version_34426 vs_xdrsize svc_version 0 34426 NULL
153375 +enable_so_meta_ino_num_f2fs_sb_info_34435 meta_ino_num f2fs_sb_info 0 34435 NULL
153376 +enable_so_ctrl_set_res_ver_fndecl_34447 ctrl_set_res_ver fndecl 3 34447 NULL
153377 +enable_so_ath9k_dump_legacy_btcoex_fndecl_34449 ath9k_dump_legacy_btcoex fndecl 3 34449 NULL nohasharray
153378 +enable_so_window_len_regmap_range_node_34449 window_len regmap_range_node 0 34449 &enable_so_ath9k_dump_legacy_btcoex_fndecl_34449
153379 +enable_so_ts_final_retry_ath5k_tx_status_34451 ts_final_retry ath5k_tx_status 0 34451 NULL
153380 +enable_so_copy_size_vmxnet3_tx_ctx_34453 copy_size vmxnet3_tx_ctx 0 34453 NULL
153381 +enable_so_intel_dp_max_link_rate_fndecl_34455 intel_dp_max_link_rate fndecl 0 34455 NULL nohasharray
153382 +enable_so_handle_mmio_page_fault_fndecl_34455 handle_mmio_page_fault fndecl 2 34455 &enable_so_intel_dp_max_link_rate_fndecl_34455
153383 +enable_so_exceptions_per_area_pstore_34460 exceptions_per_area pstore 0 34460 NULL
153384 +enable_so_offsets_size_binder_transaction_data_34461 offsets_size binder_transaction_data 0 34461 NULL
153385 +enable_so_num_regs_regmap_irq_chip_34465 num_regs regmap_irq_chip 0 34465 NULL
153386 +enable_so_fd_copyin_fndecl_34468 fd_copyin fndecl 3 34468 NULL
153387 +enable_so_MaxMSIxVectors_mpt2sas_facts_34470 MaxMSIxVectors mpt2sas_facts 0 34470 NULL
153388 +enable_so_MaxCommands_DAC960_V1_Enquiry_34475 MaxCommands DAC960_V1_Enquiry 0 34475 NULL
153389 +enable_so_start_btrfs_ordered_extent_34479 start btrfs_ordered_extent 0 34479 NULL
153390 +enable_so_num_rx_queues_net_device_34480 num_rx_queues net_device 0 34480 NULL
153391 +enable_so_i2c_hid_command_fndecl_34481 i2c_hid_command fndecl 4 34481 NULL
153392 +enable_so_cp210x_get_config_fndecl_34486 cp210x_get_config fndecl 4 34486 NULL
153393 +enable_so_dma_bd_table_34490 dma bd_table 0 34490 NULL
153394 +enable_so_do_ipt_set_ctl_fndecl_34493 do_ipt_set_ctl fndecl 4 34493 NULL
153395 +enable_so_ieee80211_if_fmt_user_power_level_fndecl_34504 ieee80211_if_fmt_user_power_level fndecl 3 34504 NULL
153396 +enable_so_bf_mcs_wmi_notify_req_done_event_34509 bf_mcs wmi_notify_req_done_event 0 34509 NULL
153397 +enable_so_srp_free_req_fndecl_34531 srp_free_req fndecl 4 34531 NULL
153398 +enable_so_SavagePanelHeight_savagefb_par_34532 SavagePanelHeight savagefb_par 0 34532 NULL nohasharray
153399 +enable_so_ogm_buff_len_batadv_hard_iface_bat_iv_34532 ogm_buff_len batadv_hard_iface_bat_iv 0 34532 &enable_so_SavagePanelHeight_savagefb_par_34532
153400 +enable_so_speakup_file_write_fndecl_34533 speakup_file_write fndecl 3 34533 NULL
153401 +enable_so_host_size_scsi_transport_template_34551 host_size scsi_transport_template 0 34551 NULL
153402 +enable_so_dvb_aplay_fndecl_34555 dvb_aplay fndecl 3 34555 NULL
153403 +enable_so_rx_ring_num_config_param_34571 rx_ring_num config_param 0 34571 NULL
153404 +enable_so_sb16_copy_from_user_fndecl_34575 sb16_copy_from_user fndecl 10-7-6 34575 NULL
153405 +enable_so_blkno_range2trim_34581 blkno range2trim 0 34581 NULL
153406 +enable_so_blk_queue_alignment_offset_fndecl_34591 blk_queue_alignment_offset fndecl 2 34591 NULL
153407 +enable_so_net_default_tx_rate_ray_dev_t_34604 net_default_tx_rate ray_dev_t 0 34604 NULL nohasharray
153408 +enable_so_sys_sync_file_range_fndecl_34604 sys_sync_file_range fndecl 2 34604 &enable_so_net_default_tx_rate_ray_dev_t_34604
153409 +enable_so_fip_dlen_fip_desc_34614 fip_dlen fip_desc 0 34614 NULL
153410 +enable_so_vram_total_vardecl_vesafb_c_34615 vram_total vardecl_vesafb.c 0 34615 NULL
153411 +enable_so_blocksize_qce_ahash_def_34616 blocksize qce_ahash_def 0 34616 NULL
153412 +enable_so_ip_hdrlen_fndecl_34618 ip_hdrlen fndecl 0 34618 NULL
153413 +enable_so_ept_gva_to_gpa_fndecl_34619 ept_gva_to_gpa fndecl 2-3 34619 NULL
153414 +enable_so_cpu_npartitions_vardecl_linux_cpu_c_34622 cpu_npartitions vardecl_linux-cpu.c 0 34622 NULL
153415 +enable_so_ace_change_mtu_fndecl_34639 ace_change_mtu fndecl 2 34639 NULL
153416 +enable_so_hsc_write_fndecl_34640 hsc_write fndecl 3 34640 NULL
153417 +enable_so_idef6cpy_gru_control_block_extended_34646 idef6cpy gru_control_block_extended 0 34646 NULL
153418 +enable_so_ramdisk_store_fndecl_34654 ramdisk_store fndecl 4 34654 NULL
153419 +enable_so_uwb_est_used_vardecl_est_c_34662 uwb_est_used vardecl_est.c 0 34662 NULL
153420 +enable_so_ext4_convert_unwritten_extents_endio_fndecl_34667 ext4_convert_unwritten_extents_endio fndecl 0 34667 NULL
153421 +enable_so_num_leaves_cpu_cacheinfo_34676 num_leaves cpu_cacheinfo 0 34676 NULL nohasharray
153422 +enable_so_hash_ip4_expire_fndecl_34676 hash_ip4_expire fndecl 4 34676 &enable_so_num_leaves_cpu_cacheinfo_34676
153423 +enable_so_offset_ethtool_eeprom_34683 offset ethtool_eeprom 0 34683 NULL
153424 +enable_so_snd_pcm_hw_param_value_min_fndecl_34686 snd_pcm_hw_param_value_min fndecl 0 34686 NULL
153425 +enable_so_slip_maxdev_vardecl_slip_c_34688 slip_maxdev vardecl_slip.c 0 34688 NULL
153426 +enable_so_radeon_ring_init_fndecl_34693 radeon_ring_init fndecl 3 34693 NULL
153427 +enable_so_simple_read_from_buffer_fndecl_34694 simple_read_from_buffer fndecl 2-5 34694 NULL
153428 +enable_so_ceph_get_direct_page_vector_fndecl_34695 ceph_get_direct_page_vector fndecl 2 34695 NULL
153429 +enable_so_max_payload_fc_fcp_pkt_34696 max_payload fc_fcp_pkt 0 34696 NULL
153430 +enable_so_writesize_mtd_info_34702 writesize mtd_info 0 34702 NULL
153431 +enable_so_paging64_page_fault_fndecl_34709 paging64_page_fault fndecl 2-3 34709 NULL
153432 +enable_so_gfs2_log_alloc_bio_fndecl_34714 gfs2_log_alloc_bio fndecl 2 34714 NULL
153433 +enable_so_in_sector_offset_vardecl_floppy_c_34720 in_sector_offset vardecl_floppy.c 0 34720 NULL
153434 +enable_so_cache_word_size_regmap_34722 cache_word_size regmap 0 34722 NULL
153435 +enable_so_W6692_empty_Dfifo_fndecl_34725 W6692_empty_Dfifo fndecl 2 34725 NULL
153436 +enable_so_slot_number_md_cluster_operations_34728 slot_number md_cluster_operations 0 34728 NULL
153437 +enable_so_ocfs2_dx_dir_format_cluster_fndecl_34730 ocfs2_dx_dir_format_cluster fndecl 6 34730 NULL
153438 +enable_so_wa_xfer_create_subset_sg_fndecl_34731 wa_xfer_create_subset_sg fndecl 2-3 34731 NULL
153439 +enable_so_trunc_start_fndecl_34735 trunc_start fndecl 3-2 34735 NULL nohasharray
153440 +enable_so__c4iw_write_mem_inline_fndecl_34735 _c4iw_write_mem_inline fndecl 3 34735 &enable_so_trunc_start_fndecl_34735
153441 +enable_so_flags_rtl8187b_rx_hdr_34741 flags rtl8187b_rx_hdr 0 34741 NULL
153442 +enable_so_inbuf_dma_usbhid_device_34742 inbuf_dma usbhid_device 0 34742 NULL
153443 +enable_so_btrfs_clone_fndecl_34746 btrfs_clone fndecl 5-3-6 34746 NULL
153444 +enable_so_blockshift_sddr09_card_info_34748 blockshift sddr09_card_info 0 34748 NULL
153445 +enable_so_out_n_analog_pcm_runtime_34756 out_n_analog pcm_runtime 0 34756 NULL nohasharray
153446 +enable_so_u132_hcd_bulk_input_recv_fndecl_34756 u132_hcd_bulk_input_recv fndecl 4 34756 &enable_so_out_n_analog_pcm_runtime_34756 nohasharray
153447 +enable_so_nfs4_validate_mount_data_fndecl_34756 nfs4_validate_mount_data fndecl 0 34756 &enable_so_u132_hcd_bulk_input_recv_fndecl_34756
153448 +enable_so_extent_size_ecryptfs_crypt_stat_34757 extent_size ecryptfs_crypt_stat 0 34757 NULL nohasharray
153449 +enable_so_sc_frmr_pg_list_len_svcxprt_rdma_34757 sc_frmr_pg_list_len svcxprt_rdma 0 34757 &enable_so_extent_size_ecryptfs_crypt_stat_34757 nohasharray
153450 +enable_so_zone_spare_adfs_discrecord_34757 zone_spare adfs_discrecord 0 34757 &enable_so_sc_frmr_pg_list_len_svcxprt_rdma_34757
153451 +enable_so_intel_ctrl_host_mask_cpu_hw_events_34768 intel_ctrl_host_mask cpu_hw_events 0 34768 NULL
153452 +enable_so_hvt_op_write_fndecl_34774 hvt_op_write fndecl 3 34774 NULL
153453 +enable_so_cyapa_i2c_pip_read_fndecl_34788 cyapa_i2c_pip_read fndecl 3 34788 NULL
153454 +enable_so_qxl_image_alloc_objects_fndecl_34790 qxl_image_alloc_objects fndecl 4-5 34790 NULL
153455 +enable_so_sizeimage_soc_camera_device_34794 sizeimage soc_camera_device 0 34794 NULL nohasharray
153456 +enable_so_addrlen_svc_deferred_req_34794 addrlen svc_deferred_req 0 34794 &enable_so_sizeimage_soc_camera_device_34794
153457 +enable_so_rq_count_st_card_info_34798 rq_count st_card_info 0 34798 NULL
153458 +enable_so_i9xx_pll_refclk_fndecl_34800 i9xx_pll_refclk fndecl 0 34800 NULL
153459 +enable_so_nfs_write_end_fndecl_34801 nfs_write_end fndecl 3 34801 NULL
153460 +enable_so_l0_xfs_bmbt_rec_host_34805 l0 xfs_bmbt_rec_host 0 34805 NULL
153461 +enable_so_page_size_flash_info_34810 page_size flash_info 0 34810 NULL
153462 +enable_so_blk_cnt_os_dat_entry_s_34817 blk_cnt os_dat_entry_s 0 34817 NULL
153463 +enable_so_lbs_lowsnr_write_fndecl_34822 lbs_lowsnr_write fndecl 3 34822 NULL
153464 +enable_so_wps_ie_len_mwifiex_private_34823 wps_ie_len mwifiex_private 0 34823 NULL nohasharray
153465 +enable_so_alg_key_len_xfrm_algo_34823 alg_key_len xfrm_algo 0 34823 &enable_so_wps_ie_len_mwifiex_private_34823
153466 +enable_so_madvise_behavior_fndecl_34827 madvise_behavior fndecl 4-3 34827 NULL
153467 +enable_so_mwifiex_usb_submit_rx_urb_fndecl_34829 mwifiex_usb_submit_rx_urb fndecl 2 34829 NULL
153468 +enable_so_rcvegrbufs_perchunk_qib_ctxtdata_34831 rcvegrbufs_perchunk qib_ctxtdata 0 34831 NULL
153469 +enable_so_xenvif_check_gop_fndecl_34832 xenvif_check_gop fndecl 0 34832 NULL
153470 +enable_so_unix_dgram_connect_fndecl_34836 unix_dgram_connect fndecl 3 34836 NULL
153471 +enable_so_setsockopt_fndecl_34840 setsockopt fndecl 5 34840 NULL
153472 +enable_so_in_usbnet_34842 in usbnet 0 34842 NULL
153473 +enable_so_dot_dpll_34844 dot dpll 0 34844 NULL
153474 +enable_so_good_peb_count_ubi_device_34853 good_peb_count ubi_device 0 34853 NULL nohasharray
153475 +enable_so_fw_iso_buffer_init_fndecl_34853 fw_iso_buffer_init fndecl 3 34853 &enable_so_good_peb_count_ubi_device_34853 nohasharray
153476 +enable_so_log_sz_mlx5_flow_table_group_34853 log_sz mlx5_flow_table_group 0 34853 &enable_so_fw_iso_buffer_init_fndecl_34853
153477 +enable_so_nilfs_ioctl_do_get_suinfo_fndecl_34854 nilfs_ioctl_do_get_suinfo fndecl 6 34854 NULL
153478 +enable_so_flags_write_fndecl_34858 flags_write fndecl 3 34858 NULL
153479 +enable_so_max_msix_vectors_fm10k_mac_info_34860 max_msix_vectors fm10k_mac_info 0 34860 NULL
153480 +enable_so_pfkey_recvmsg_fndecl_34863 pfkey_recvmsg fndecl 3 34863 NULL nohasharray
153481 +enable_so_s_map_size_adfs_sb_info_34863 s_map_size adfs_sb_info 0 34863 &enable_so_pfkey_recvmsg_fndecl_34863
153482 +enable_so_rt2x00crypto_rx_insert_iv_fndecl_34864 rt2x00crypto_rx_insert_iv fndecl 2 34864 NULL
153483 +enable_so_odm_num_comps_pnfs_osd_data_map_34865 odm_num_comps pnfs_osd_data_map 0 34865 NULL
153484 +enable_so_sddr09_writeX_fndecl_34870 sddr09_writeX fndecl 5 34870 NULL
153485 +enable_so_drm_cvt_mode_fndecl_34886 drm_cvt_mode fndecl 3-2-4 34886 NULL
153486 +enable_so_Wa_tvnorm_34892 Wa tvnorm 0 34892 NULL
153487 +enable_so_len_coda_ioctl_out_34894 len coda_ioctl_out 0 34894 NULL nohasharray
153488 +enable_so_vb2_dma_sg_alloc_fndecl_34894 vb2_dma_sg_alloc fndecl 2 34894 &enable_so_len_coda_ioctl_out_34894
153489 +enable_so_sb_logstart_xfs_sb_34900 sb_logstart xfs_sb 0 34900 NULL
153490 +enable_so_fat_ent_read_fndecl_34902 fat_ent_read fndecl 3 34902 NULL
153491 +enable_so_active_pixels_fb_cvt_data_34903 active_pixels fb_cvt_data 0 34903 NULL
153492 +enable_so_block_size_ath6kl_mbox_info_34904 block_size ath6kl_mbox_info 0 34904 NULL
153493 +enable_so_devm_gen_pool_create_fndecl_34908 devm_gen_pool_create fndecl 2 34908 NULL
153494 +enable_so_num_channels_ad5380_chip_info_34917 num_channels ad5380_chip_info 0 34917 NULL
153495 +enable_so_ath10k_htc_alloc_skb_fndecl_34920 ath10k_htc_alloc_skb fndecl 2 34920 NULL
153496 +enable_so_consume_size_vmci_qp_alloc_info_34922 consume_size vmci_qp_alloc_info 0 34922 NULL
153497 +enable_so_rcc__DMABUFFERENTRY_34925 rcc _DMABUFFERENTRY 0 34925 NULL
153498 +enable_so_shared_secret_len_net_conf_34926 shared_secret_len net_conf 0 34926 NULL
153499 +enable_so_nr_kvm_queued_interrupt_34927 nr kvm_queued_interrupt 0 34927 NULL
153500 +enable_so_port_fops_write_fndecl_34928 port_fops_write fndecl 3 34928 NULL
153501 +enable_so_len_wil6210_mbox_hdr_34930 len wil6210_mbox_hdr 0 34930 NULL
153502 +enable_so_swiotlb_init_with_tbl_fndecl_34935 swiotlb_init_with_tbl fndecl 2 34935 NULL
153503 +enable_so_recv_resync_read_fndecl_34939 recv_resync_read fndecl 2 34939 NULL
153504 +enable_so_max_receive_fw_card_34941 max_receive fw_card 0 34941 NULL
153505 +enable_so_bio_kmalloc_fndecl_34947 bio_kmalloc fndecl 2 34947 NULL
153506 +enable_so_fs_tss_segment_32_34954 fs tss_segment_32 0 34954 NULL nohasharray
153507 +enable_so_reiserfs_get_block_create_0_fndecl_34954 reiserfs_get_block_create_0 fndecl 2 34954 &enable_so_fs_tss_segment_32_34954
153508 +enable_so_internal_ewma_34962 internal ewma 0 34962 NULL
153509 +enable_so_n_it_fw_ohci_34963 n_it fw_ohci 0 34963 NULL
153510 +enable_so_tdp_page_fault_fndecl_34964 tdp_page_fault fndecl 2 34964 NULL
153511 +enable_so_simple_alloc_urb_fndecl_34966 simple_alloc_urb fndecl 3-2 34966 NULL
153512 +enable_so___bmc150_accel_fifo_flush_fndecl_34967 __bmc150_accel_fifo_flush fndecl 2 34967 NULL
153513 +enable_so_il4965_rs_switch_to_siso_fndecl_34968 il4965_rs_switch_to_siso fndecl 6 34968 NULL
153514 +enable_so_s35390a_get_reg_fndecl_34971 s35390a_get_reg fndecl 4 34971 NULL
153515 +enable_so_cw1200_queue_stats_init_fndecl_34973 cw1200_queue_stats_init fndecl 2 34973 NULL
153516 +enable_so_at24_bin_write_fndecl_34977 at24_bin_write fndecl 6-5 34977 NULL
153517 +enable_so_rfkill_fop_read_fndecl_34980 rfkill_fop_read fndecl 3 34980 NULL
153518 +enable_so_p_vaddr_elf64_phdr_34996 p_vaddr elf64_phdr 0 34996 NULL nohasharray
153519 +enable_so_kfd_gtt_sa_init_fndecl_34996 kfd_gtt_sa_init fndecl 3-2 34996 &enable_so_p_vaddr_elf64_phdr_34996
153520 +enable_so_num_snaps_ceph_mds_snap_realm_35009 num_snaps ceph_mds_snap_realm 0 35009 NULL
153521 +enable_so_ocfs2_control_write_fndecl_35010 ocfs2_control_write fndecl 3 35010 NULL
153522 +enable_so_fc_set_mfs_fndecl_35014 fc_set_mfs fndecl 2 35014 NULL nohasharray
153523 +enable_so_do_trimming_fndecl_35014 do_trimming fndecl 6-5 35014 &enable_so_fc_set_mfs_fndecl_35014
153524 +enable_so_kzalloc_fndecl_35015 kzalloc fndecl 1 35015 NULL
153525 +enable_so_skb_zerocopy_fndecl_35016 skb_zerocopy fndecl 4-3 35016 NULL
153526 +enable_so_read_capacity_10_fndecl_35017 read_capacity_10 fndecl 0 35017 NULL
153527 +enable_so_lpfc_idiag_pcicfg_write_fndecl_35022 lpfc_idiag_pcicfg_write fndecl 3 35022 NULL
153528 +enable_so_il4965_rs_fill_link_cmd_fndecl_35023 il4965_rs_fill_link_cmd fndecl 3 35023 NULL
153529 +enable_so__add_sg_continuation_descriptor_fndecl_35026 _add_sg_continuation_descriptor fndecl 3 35026 NULL
153530 +enable_so_cipso_v4_bitmap_walk_fndecl_35041 cipso_v4_bitmap_walk fndecl 0-3 35041 NULL
153531 +enable_so_bg_inode_bitmap_ext2_group_desc_35053 bg_inode_bitmap ext2_group_desc 0 35053 NULL
153532 +enable_so_tda18218_rd_reg_fndecl_35057 tda18218_rd_reg fndecl 2 35057 NULL
153533 +enable_so_iio_event_chrdev_read_fndecl_35062 iio_event_chrdev_read fndecl 3 35062 NULL
153534 +enable_so_ring_size_radeon_ring_35063 ring_size radeon_ring 0 35063 NULL
153535 +enable_so_altera_set_dr_post_fndecl_35072 altera_set_dr_post fndecl 2 35072 NULL
153536 +enable_so_set_video_mode_Timon_fndecl_35074 set_video_mode_Timon fndecl 4 35074 NULL
153537 +enable_so_inbuf_dma_ati_remote_35083 inbuf_dma ati_remote 0 35083 NULL nohasharray
153538 +enable_so_dlm_alloc_pagevec_fndecl_35083 dlm_alloc_pagevec fndecl 1 35083 &enable_so_inbuf_dma_ati_remote_35083 nohasharray
153539 +enable_so_sys_kexec_file_load_fndecl_35083 sys_kexec_file_load fndecl 3 35083 &enable_so_dlm_alloc_pagevec_fndecl_35083
153540 +enable_so_reclaim_pages_fndecl_35086 reclaim_pages fndecl 3 35086 NULL
153541 +enable_so_kstrtou16_from_user_fndecl_35089 kstrtou16_from_user fndecl 2 35089 NULL
153542 +enable_so_sizeof_long_fndecl_35095 sizeof_long fndecl 0 35095 NULL
153543 +enable_so_er_data_len_gfs2_ea_request_35098 er_data_len gfs2_ea_request 0 35098 NULL
153544 +enable_so_num_vf_qps_i40e_pf_35102 num_vf_qps i40e_pf 0 35102 NULL
153545 +enable_so_get_crop_info_v_s5p_mfc_hw_ops_35103 get_crop_info_v s5p_mfc_hw_ops 0 35103 NULL nohasharray
153546 +enable_so_prot_length_se_device_35103 prot_length se_device 0 35103 &enable_so_get_crop_info_v_s5p_mfc_hw_ops_35103
153547 +enable_so___do_page_fault_fndecl_35107 __do_page_fault fndecl 3 35107 NULL
153548 +enable_so_size_kcore_list_35108 size kcore_list 0 35108 NULL
153549 +enable_so_vlv_find_best_dpll_fndecl_35112 vlv_find_best_dpll fndecl 4-3 35112 NULL
153550 +enable_so_d_ino_vxfs_direct_35117 d_ino vxfs_direct 0 35117 NULL
153551 +enable_so_max_uc_mac_be_resources_35119 max_uc_mac be_resources 0 35119 NULL
153552 +enable_so_vxfs_bmap_indir_fndecl_35120 vxfs_bmap_indir fndecl 2-0-4 35120 NULL
153553 +enable_so_sprintf_fndecl_35121 sprintf fndecl 0 35121 NULL nohasharray
153554 +enable_so_alloc_vm_area_fndecl_35121 alloc_vm_area fndecl 1 35121 &enable_so_sprintf_fndecl_35121
153555 +enable_so_sm501_alloc_mem_fndecl_35125 sm501_alloc_mem fndecl 5-4 35125 NULL
153556 +enable_so_bch_empty_fifo_fndecl_35126 bch_empty_fifo fndecl 2 35126 NULL
153557 +enable_so_vmw_mob_create_fndecl_35127 vmw_mob_create fndecl 1 35127 NULL nohasharray
153558 +enable_so_nilfs_sufile_get_suinfo_fndecl_35127 nilfs_sufile_get_suinfo fndecl 5-2 35127 &enable_so_vmw_mob_create_fndecl_35127 nohasharray
153559 +enable_so_path_setxattr_fndecl_35127 path_setxattr fndecl 4 35127 &enable_so_nilfs_sufile_get_suinfo_fndecl_35127
153560 +enable_so_FbMapSize_nvidia_par_35128 FbMapSize nvidia_par 0 35128 NULL
153561 +enable_so_channels_min_snd_pcm_hardware_35132 channels_min snd_pcm_hardware 0 35132 NULL nohasharray
153562 +enable_so_bio_add_pc_page_fndecl_35132 bio_add_pc_page fndecl 4-5 35132 &enable_so_channels_min_snd_pcm_hardware_35132
153563 +enable_so___get_free_pages_fndecl_35139 __get_free_pages fndecl 0 35139 NULL nohasharray
153564 +enable_so__osd_realloc_seg_fndecl_35139 _osd_realloc_seg fndecl 3 35139 &enable_so___get_free_pages_fndecl_35139
153565 +enable_so_blockoffset_hfsplus_sb_info_35140 blockoffset hfsplus_sb_info 0 35140 NULL
153566 +enable_so_tx_ring_size_adm8211_priv_35143 tx_ring_size adm8211_priv 0 35143 NULL
153567 +enable_so_len_mwifiex_ie_types_header_35146 len mwifiex_ie_types_header 0 35146 NULL
153568 +enable_so___dquot_free_space_fndecl_35147 __dquot_free_space fndecl 2 35147 NULL
153569 +enable_so_readlink_copy_fndecl_35149 readlink_copy fndecl 2 35149 NULL nohasharray
153570 +enable_so_num_usb3_ports_xhci_hcd_35149 num_usb3_ports xhci_hcd 0 35149 &enable_so_readlink_copy_fndecl_35149
153571 +enable_so_br_fdb_fillbuf_fndecl_35152 br_fdb_fillbuf fndecl 0 35152 NULL
153572 +enable_so_ieee80211_crypto_ccmp_decrypt_fndecl_35154 ieee80211_crypto_ccmp_decrypt fndecl 2 35154 NULL nohasharray
153573 +enable_so_pageshift_alauda_card_info_35154 pageshift alauda_card_info 0 35154 &enable_so_ieee80211_crypto_ccmp_decrypt_fndecl_35154
153574 +enable_so___alloc_dev_table_fndecl_35156 __alloc_dev_table fndecl 2 35156 NULL
153575 +enable_so_snd_pcm_oss_read2_fndecl_35168 snd_pcm_oss_read2 fndecl 3 35168 NULL
153576 +enable_so_mlx4_en_hwtstamp_get_fndecl_35174 mlx4_en_hwtstamp_get fndecl 0 35174 NULL
153577 +enable_so_hash_mac4_expire_fndecl_35179 hash_mac4_expire fndecl 4 35179 NULL nohasharray
153578 +enable_so_memblock_size_vxge_hw_fifo_config_35179 memblock_size vxge_hw_fifo_config 0 35179 &enable_so_hash_mac4_expire_fndecl_35179
153579 +enable_so_wHeight_uvc_frame_35189 wHeight uvc_frame 0 35189 NULL
153580 +enable_so_ah_alloc_tmp_fndecl_35193 ah_alloc_tmp fndecl 2-3 35193 NULL
153581 +enable_so_do_dccp_setsockopt_fndecl_35194 do_dccp_setsockopt fndecl 5 35194 NULL nohasharray
153582 +enable_so_intel_sdvo_write_cmd_fndecl_35194 intel_sdvo_write_cmd fndecl 4 35194 &enable_so_do_dccp_setsockopt_fndecl_35194
153583 +enable_so_long_retry_limit_ipw_priv_35197 long_retry_limit ipw_priv 0 35197 NULL
153584 +enable_so_copy_gadget_strings_fndecl_35202 copy_gadget_strings fndecl 2-3 35202 NULL
153585 +enable_so_new_lockspace_fndecl_35208 new_lockspace fndecl 4 35208 NULL
153586 +enable_so_tx_ring_size_pcnet32_private_35210 tx_ring_size pcnet32_private 0 35210 NULL
153587 +enable_so_maxpacksize_snd_usb_endpoint_35216 maxpacksize snd_usb_endpoint 0 35216 NULL nohasharray
153588 +enable_so_sset_mask_ethtool_sset_info_35216 sset_mask ethtool_sset_info 0 35216 &enable_so_maxpacksize_snd_usb_endpoint_35216
153589 +enable_so_root_blkno_ocfs2_super_35227 root_blkno ocfs2_super 0 35227 NULL
153590 +enable_so_nested_vmx_load_msr_fndecl_35245 nested_vmx_load_msr fndecl 2 35245 NULL
153591 +enable_so_d_off_p9_dirent_35247 d_off p9_dirent 0 35247 NULL
153592 +enable_so_whc_urb_dequeue_fndecl_35255 whc_urb_dequeue fndecl 3 35255 NULL
153593 +enable_so_btrfs_inc_extent_ref_fndecl_35257 btrfs_inc_extent_ref fndecl 5-6-3-4-7 35257 NULL
153594 +enable_so_longRetryLimit_ConfigRid_35258 longRetryLimit ConfigRid 0 35258 NULL
153595 +enable_so_dm_bm_write_lock_fndecl_35261 dm_bm_write_lock fndecl 2 35261 NULL
153596 +enable_so_gss_unwrap_kerberos_fndecl_35263 gss_unwrap_kerberos fndecl 2 35263 NULL
153597 +enable_so_wstatus_usblp_35266 wstatus usblp 0 35266 NULL
153598 +enable_so_sparse_early_mem_maps_alloc_node_fndecl_35270 sparse_early_mem_maps_alloc_node fndecl 4 35270 NULL
153599 +enable_so_swiotlb_tbl_map_single_fndecl_35276 swiotlb_tbl_map_single fndecl 4 35276 NULL
153600 +enable_so_simple_strtoull_fndecl_35278 simple_strtoull fndecl 0 35278 NULL
153601 +enable_so_ceph_msg_data_advance_fndecl_35288 ceph_msg_data_advance fndecl 2 35288 NULL
153602 +enable_so_xc_send_i2c_data_fndecl_35297 xc_send_i2c_data fndecl 3 35297 NULL
153603 +enable_so_maybe_indirect_to_direct_fndecl_35307 maybe_indirect_to_direct fndecl 6 35307 NULL
153604 +enable_so_vmci_transport_dgram_enqueue_fndecl_35310 vmci_transport_dgram_enqueue fndecl 4 35310 NULL
153605 +enable_so_ieee80211_tdls_mgmt_setup_fndecl_35316 ieee80211_tdls_mgmt_setup fndecl 10 35316 NULL
153606 +enable_so_udf_insert_aext_fndecl_35323 udf_insert_aext fndecl 4 35323 NULL
153607 +enable_so_btrfs_ordered_sum_size_fndecl_35326 btrfs_ordered_sum_size fndecl 0-2 35326 NULL
153608 +enable_so_l2cap_create_basic_pdu_fndecl_35327 l2cap_create_basic_pdu fndecl 3 35327 NULL
153609 +enable_so_ssid_len_cfg80211_ibss_params_35329 ssid_len cfg80211_ibss_params 0 35329 NULL
153610 +enable_so_chv_find_best_dpll_fndecl_35331 chv_find_best_dpll fndecl 4-3 35331 NULL nohasharray
153611 +enable_so_xb_suballoc_bit_ocfs2_xattr_block_35331 xb_suballoc_bit ocfs2_xattr_block 0 35331 &enable_so_chv_find_best_dpll_fndecl_35331
153612 +enable_so_extra_msdu_postfix_len_lib80211_crypto_ops_35341 extra_msdu_postfix_len lib80211_crypto_ops 0 35341 NULL
153613 +enable_so_num_reg_mic_smpt_hw_info_35353 num_reg mic_smpt_hw_info 0 35353 NULL
153614 +enable_so_udf_get_pblock_meta25_fndecl_35356 udf_get_pblock_meta25 fndecl 4 35356 NULL
153615 +enable_so_cache_mode_control_mms114_data_35358 cache_mode_control mms114_data 0 35358 NULL
153616 +enable_so_efw_transaction_fndecl_35359 efw_transaction fndecl 5-7 35359 NULL
153617 +enable_so_hx8357_spi_write_array_fndecl_35364 hx8357_spi_write_array fndecl 3 35364 NULL
153618 +enable_so_IA_RX_BUF_SZ_vardecl_iphase_c_35365 IA_RX_BUF_SZ vardecl_iphase.c 0 35365 NULL
153619 +enable_so_previous_raid_disks_r5conf_35368 previous_raid_disks r5conf 0 35368 NULL
153620 +enable_so_num_channels_ad7266_chan_info_35372 num_channels ad7266_chan_info 0 35372 NULL
153621 +enable_so_insert_inline_extent_fndecl_35373 insert_inline_extent fndecl 6-7 35373 NULL
153622 +enable_so_update_raid_disks_fndecl_35375 update_raid_disks fndecl 2 35375 NULL
153623 +enable_so_drm_dp_mst_topology_mgr_init_fndecl_35377 drm_dp_mst_topology_mgr_init fndecl 5 35377 NULL
153624 +enable_so_hc_erase_size_mmc_ext_csd_35384 hc_erase_size mmc_ext_csd 0 35384 NULL
153625 +enable_so_ath9k_hw_read_array_fndecl_35386 ath9k_hw_read_array fndecl 3 35386 NULL
153626 +enable_so_read_dma_fndecl_35389 read_dma fndecl 3 35389 NULL
153627 +enable_so_writeback_fndecl_35390 writeback fndecl 4-3 35390 NULL
153628 +enable_so_sg_set_page_fndecl_35395 sg_set_page fndecl 3 35395 NULL
153629 +enable_so_blk_queue_io_opt_fndecl_35405 blk_queue_io_opt fndecl 2 35405 NULL nohasharray
153630 +enable_so_crypto_ahash_setkey_fndecl_35405 crypto_ahash_setkey fndecl 3 35405 &enable_so_blk_queue_io_opt_fndecl_35405
153631 +enable_so_use_sg_st_buffer_35407 use_sg st_buffer 0 35407 NULL
153632 +enable_so__drbd_md_sync_page_io_fndecl_35411 _drbd_md_sync_page_io fndecl 3 35411 NULL
153633 +enable_so_fb_width_drm_fb_helper_surface_size_35426 fb_width drm_fb_helper_surface_size 0 35426 NULL
153634 +enable_so_btrfs_fdatawrite_range_fndecl_35427 btrfs_fdatawrite_range fndecl 2 35427 NULL
153635 +enable_so_xfs_bulkstat_one_compat_fndecl_35428 xfs_bulkstat_one_compat fndecl 2 35428 NULL
153636 +enable_so_offset_tx_buf_35429 offset tx_buf 0 35429 NULL
153637 +enable_so_bmAttributes_usb_ss_ep_comp_descriptor_35434 bmAttributes usb_ss_ep_comp_descriptor 0 35434 NULL
153638 +enable_so_ocfs2_prepare_refcount_change_for_del_fndecl_35442 ocfs2_prepare_refcount_change_for_del fndecl 4-3-2 35442 NULL
153639 +enable_so_debug_read_regs_fndecl_35445 debug_read_regs fndecl 3 35445 NULL
153640 +enable_so_wake_len_cfg80211_wowlan_tcp_35448 wake_len cfg80211_wowlan_tcp 0 35448 NULL nohasharray
153641 +enable_so_len_he_buff_35448 len he_buff 0 35448 &enable_so_wake_len_cfg80211_wowlan_tcp_35448
153642 +enable_so_ocfs2_truncate_file_fndecl_35455 ocfs2_truncate_file fndecl 3 35455 NULL
153643 +enable_so_bytes_to_read_mpt3_diag_read_buffer_35460 bytes_to_read mpt3_diag_read_buffer 0 35460 NULL
153644 +enable_so_sel_write_relabel_fndecl_35464 sel_write_relabel fndecl 3 35464 NULL
153645 +enable_so_width_physmap_flash_data_35470 width physmap_flash_data 0 35470 NULL
153646 +enable_so_qxl_monitors_config_set_fndecl_35471 qxl_monitors_config_set fndecl 6-5 35471 NULL
153647 +enable_so_length_wl1251_rx_descriptor_35483 length wl1251_rx_descriptor 0 35483 NULL
153648 +enable_so_ieee80211_report_disconnect_fndecl_35488 ieee80211_report_disconnect fndecl 3 35488 NULL
153649 +enable_so_qxl_alloc_client_monitors_config_fndecl_35491 qxl_alloc_client_monitors_config fndecl 2 35491 NULL
153650 +enable_so_alloc_clips_fndecl_35492 alloc_clips fndecl 3 35492 NULL
153651 +enable_so_firm_send_command_fndecl_35493 firm_send_command fndecl 4 35493 NULL nohasharray
153652 +enable_so_nbox_drm_savage_cmdbuf_35493 nbox drm_savage_cmdbuf 0 35493 &enable_so_firm_send_command_fndecl_35493
153653 +enable_so_sched_feat_write_fndecl_35505 sched_feat_write fndecl 3 35505 NULL
153654 +enable_so___kfifo_dma_out_prepare_r_fndecl_35512 __kfifo_dma_out_prepare_r fndecl 4-5 35512 NULL
153655 +enable_so_dlci_change_mtu_fndecl_35513 dlci_change_mtu fndecl 2 35513 NULL nohasharray
153656 +enable_so_emulate_exception_fndecl_35513 emulate_exception fndecl 3 35513 &enable_so_dlci_change_mtu_fndecl_35513
153657 +enable_so_do_raw_setsockopt_fndecl_35516 do_raw_setsockopt fndecl 5 35516 NULL
153658 +enable_so_install_special_mapping_fndecl_35519 install_special_mapping fndecl 3-2 35519 NULL
153659 +enable_so_alloc_qcom_scm_command_fndecl_35520 alloc_qcom_scm_command fndecl 1-2 35520 NULL
153660 +enable_so_additional_cdb_length_scsi_varlen_cdb_hdr_35533 additional_cdb_length scsi_varlen_cdb_hdr 0 35533 NULL
153661 +enable_so_find_inode_fndecl_35534 find_inode fndecl 2 35534 NULL
153662 +enable_so_ssp_send_instruction_fndecl_35549 ssp_send_instruction fndecl 5 35549 NULL
153663 +enable_so_vsync_ast_vbios_enhtable_35556 vsync ast_vbios_enhtable 0 35556 NULL
153664 +enable_so_ptrace_request_fndecl_35563 ptrace_request fndecl 3 35563 NULL
153665 +enable_so_cfg80211_mlme_auth_fndecl_35577 cfg80211_mlme_auth fndecl 14-9 35577 NULL
153666 +enable_so_cur_blksize_sdio_func_35582 cur_blksize sdio_func 0 35582 NULL nohasharray
153667 +enable_so_size_of_priv_dvb_usb_device_properties_35582 size_of_priv dvb_usb_device_properties 0 35582 &enable_so_cur_blksize_sdio_func_35582
153668 +enable_so_lbs_failcount_write_fndecl_35583 lbs_failcount_write fndecl 3 35583 NULL
153669 +enable_so_offset_inflate_state_35587 offset inflate_state 0 35587 NULL
153670 +enable_so_cyttsp_i2c_read_block_data_fndecl_35590 cyttsp_i2c_read_block_data fndecl 4 35590 NULL
153671 +enable_so_ar9287_dump_modal_eeprom_fndecl_35597 ar9287_dump_modal_eeprom fndecl 2-3 35597 NULL
153672 +enable_so_ext2_iget_fndecl_35598 ext2_iget fndecl 2 35598 NULL
153673 +enable_so_xfs_rtallocate_extent_block_fndecl_35604 xfs_rtallocate_extent_block fndecl 5-10 35604 NULL
153674 +enable_so_hback_porch_videomode_35606 hback_porch videomode 0 35606 NULL
153675 +enable_so_f2fs_iget_fndecl_35610 f2fs_iget fndecl 2 35610 NULL nohasharray
153676 +enable_so_flexcop_device_kmalloc_fndecl_35610 flexcop_device_kmalloc fndecl 1 35610 &enable_so_f2fs_iget_fndecl_35610
153677 +enable_so_blocksize_brcmf_sdio_35612 blocksize brcmf_sdio 0 35612 NULL
153678 +enable_so_sqp_demux_mlx4_caps_35613 sqp_demux mlx4_caps 0 35613 NULL
153679 +enable_so_domain_init_fndecl_35614 domain_init fndecl 2 35614 NULL
153680 +enable_so_generic_perform_write_fndecl_35619 generic_perform_write fndecl 3 35619 NULL nohasharray
153681 +enable_so_ext4_update_final_de_fndecl_35619 ext4_update_final_de fndecl 2-3 35619 &enable_so_generic_perform_write_fndecl_35619
153682 +enable_so_ext3_acl_from_disk_fndecl_35620 ext3_acl_from_disk fndecl 2 35620 NULL
153683 +enable_so_write_rio_fndecl_35622 write_rio fndecl 3 35622 NULL
153684 +enable_so_netxen_process_lro_fndecl_35630 netxen_process_lro fndecl 5-4 35630 NULL
153685 +enable_so_prev_rs_il_rate_info_35636 prev_rs il_rate_info 0 35636 NULL
153686 +enable_so_prism_build_supp_rates_fndecl_35650 prism_build_supp_rates fndecl 0 35650 NULL
153687 +enable_so_viafb_second_xres_vardecl_35651 viafb_second_xres vardecl 0 35651 NULL nohasharray
153688 +enable_so_broadsheet_spiflash_rewrite_sector_fndecl_35651 broadsheet_spiflash_rewrite_sector fndecl 2 35651 &enable_so_viafb_second_xres_vardecl_35651
153689 +enable_so_urb_size_uvc_streaming_35654 urb_size uvc_streaming 0 35654 NULL
153690 +enable_so_urb_enqueue_hc_driver_35656 urb_enqueue hc_driver 0 35656 NULL
153691 +enable_so_max_cmd_sgentries_ctlr_info_35659 max_cmd_sgentries ctlr_info 0 35659 NULL
153692 +enable_so_xfs_alloc_read_agfl_fndecl_35660 xfs_alloc_read_agfl fndecl 3 35660 NULL
153693 +enable_so_xfs_vm_direct_IO_fndecl_35663 xfs_vm_direct_IO fndecl 3 35663 NULL
153694 +enable_so_printer_read_fndecl_35664 printer_read fndecl 3 35664 NULL
153695 +enable_so_numdevs_ore_components_35671 numdevs ore_components 0 35671 NULL
153696 +enable_so_qib_reg_user_mr_fndecl_35673 qib_reg_user_mr fndecl 2 35673 NULL
153697 +enable_so_ncntrs_qib_chip_specific_35675 ncntrs qib_chip_specific 0 35675 NULL
153698 +enable_so_rate_clk_core_35677 rate clk_core 0 35677 NULL
153699 +enable_so_read_into_fndecl_35681 read_into fndecl 2 35681 NULL nohasharray
153700 +enable_so_size_xpnet_message_35681 size xpnet_message 0 35681 &enable_so_read_into_fndecl_35681
153701 +enable_so_rx_words_eob_pch_gbe_rx_desc_35687 rx_words_eob pch_gbe_rx_desc 0 35687 NULL
153702 +enable_so_at_max_vardecl_35692 at_max vardecl 0 35692 NULL
153703 +enable_so_width_drm_radeon_tex_image_35693 width drm_radeon_tex_image 0 35693 NULL
153704 +enable_so_isert_map_data_buf_fndecl_35701 isert_map_data_buf fndecl 6-5-4 35701 NULL
153705 +enable_so_wil_pmc_alloc_fndecl_35702 wil_pmc_alloc fndecl 2 35702 NULL
153706 +enable_so_gfs2_write_alloc_required_fndecl_35708 gfs2_write_alloc_required fndecl 3-2 35708 NULL
153707 +enable_so_bnx2x_change_mtu_fndecl_35710 bnx2x_change_mtu fndecl 2 35710 NULL
153708 +enable_so_srp_post_send_fndecl_35713 srp_post_send fndecl 3 35713 NULL
153709 +enable_so_remote_nentries_xpc_channel_35714 remote_nentries xpc_channel 0 35714 NULL
153710 +enable_so_bio_add_page_fndecl_35718 bio_add_page fndecl 4-0-3 35718 NULL
153711 +enable_so_mxms_structlen_fndecl_35720 mxms_structlen fndecl 0 35720 NULL
153712 +enable_so_dir_recorded_ref_35722 dir recorded_ref 0 35722 NULL
153713 +enable_so_size_irq_routing_options_35727 size irq_routing_options 0 35727 NULL
153714 +enable_so_last_xfer_len_ide_cmd_35728 last_xfer_len ide_cmd 0 35728 NULL
153715 +enable_so_iscsi_pool_init_fndecl_35730 iscsi_pool_init fndecl 2-4 35730 NULL
153716 +enable_so_mwifiex_append_rate_tlv_fndecl_35735 mwifiex_append_rate_tlv fndecl 0 35735 NULL
153717 +enable_so_priv_size_data_queue_35740 priv_size data_queue 0 35740 NULL
153718 +enable_so_alauda_write_data_fndecl_35748 alauda_write_data fndecl 3-2 35748 NULL
153719 +enable_so_goodix_i2c_read_fndecl_35755 goodix_i2c_read fndecl 4 35755 NULL nohasharray
153720 +enable_so_buftot_msm_perf_state_35755 buftot msm_perf_state 0 35755 &enable_so_goodix_i2c_read_fndecl_35755
153721 +enable_so_left_qxl_urect_35760 left qxl_urect 0 35760 NULL
153722 +enable_so_fh_epd_frame_35764 fh epd_frame 0 35764 NULL
153723 +enable_so_ath9k_dump_btcoex_fndecl_35766 ath9k_dump_btcoex fndecl 3 35766 NULL
153724 +enable_so_virtscsi_compute_resid_fndecl_35772 virtscsi_compute_resid fndecl 2 35772 NULL
153725 +enable_so_data0_sisusb_command_35773 data0 sisusb_command 0 35773 NULL
153726 +enable_so_crypto_aead_alg_ivsize_fndecl_35777 crypto_aead_alg_ivsize fndecl 0 35777 NULL
153727 +enable_so_alloc_mon_bin_get_35804 alloc mon_bin_get 0 35804 NULL
153728 +enable_so_send_ctrl_pipe_us_data_35813 send_ctrl_pipe us_data 0 35813 NULL
153729 +enable_so_leaf_cut_from_buffer_fndecl_35824 leaf_cut_from_buffer fndecl 4 35824 NULL
153730 +enable_so_rx_buffer_padding_efx_nic_type_35825 rx_buffer_padding efx_nic_type 0 35825 NULL
153731 +enable_so_env_end_mm_struct_35831 env_end mm_struct 0 35831 NULL nohasharray
153732 +enable_so_twl_load_sgl_fndecl_35831 twl_load_sgl fndecl 5 35831 &enable_so_env_end_mm_struct_35831 nohasharray
153733 +enable_so_num_pmkids_ndis_80211_capability_35831 num_pmkids ndis_80211_capability 0 35831 &enable_so_twl_load_sgl_fndecl_35831
153734 +enable_so_request_sz_MPT3SAS_ADAPTER_35834 request_sz MPT3SAS_ADAPTER 0 35834 NULL
153735 +enable_so_paging32_get_level1_sp_gpa_fndecl_35837 paging32_get_level1_sp_gpa fndecl 0 35837 NULL
153736 +enable_so_l_iclog_size_xlog_35849 l_iclog_size xlog 0 35849 NULL
153737 +enable_so_snd_pcm_format_physical_width_fndecl_35858 snd_pcm_format_physical_width fndecl 0 35858 NULL
153738 +enable_so_usb_stor_bulk_transfer_sglist_fndecl_35871 usb_stor_bulk_transfer_sglist fndecl 5-2 35871 NULL nohasharray
153739 +enable_so_send_utimes_fndecl_35871 send_utimes fndecl 2 35871 &enable_so_usb_stor_bulk_transfer_sglist_fndecl_35871
153740 +enable_so_snd_hdsp_midi_output_possible_fndecl_35873 snd_hdsp_midi_output_possible fndecl 0 35873 NULL
153741 +enable_so_p2_slow_gma_p2_t_35888 p2_slow gma_p2_t 0 35888 NULL
153742 +enable_so_st_sensors_spi_read_fndecl_35890 st_sensors_spi_read fndecl 4 35890 NULL
153743 +enable_so_lpuart_dma_tx_fndecl_35902 lpuart_dma_tx fndecl 2 35902 NULL nohasharray
153744 +enable_so_nft_data_dump_fndecl_35902 nft_data_dump fndecl 5 35902 &enable_so_lpuart_dma_tx_fndecl_35902
153745 +enable_so_fe_group_ext4_free_extent_35905 fe_group ext4_free_extent 0 35905 NULL nohasharray
153746 +enable_so_max_sq_desc_sz_mlx4_caps_35905 max_sq_desc_sz mlx4_caps 0 35905 &enable_so_fe_group_ext4_free_extent_35905
153747 +enable_so_btrfs_set_stack_chunk_num_stripes_fndecl_35911 btrfs_set_stack_chunk_num_stripes fndecl 2 35911 NULL
153748 +enable_so_cifs_utf16_bytes_fndecl_35914 cifs_utf16_bytes fndecl 0 35914 NULL
153749 +enable_so_right_vardecl_matroxfb_base_c_35916 right vardecl_matroxfb_base.c 0 35916 NULL
153750 +enable_so_gfn_to_pfn_async_fndecl_35918 gfn_to_pfn_async fndecl 2 35918 NULL nohasharray
153751 +enable_so_packet_count_efx_loopback_state_35918 packet_count efx_loopback_state 0 35918 &enable_so_gfn_to_pfn_async_fndecl_35918
153752 +enable_so_proc_uid_map_write_fndecl_35919 proc_uid_map_write fndecl 3 35919 NULL
153753 +enable_so_max_height_sh_mobile_ceu_dev_35922 max_height sh_mobile_ceu_dev 0 35922 NULL nohasharray
153754 +enable_so_sigma_fw_load_control_fndecl_35922 sigma_fw_load_control fndecl 3 35922 &enable_so_max_height_sh_mobile_ceu_dev_35922
153755 +enable_so_softback_end_vardecl_fbcon_c_35923 softback_end vardecl_fbcon.c 0 35923 NULL
153756 +enable_so_bytes_written_cq_fcp_rq_desc_35931 bytes_written cq_fcp_rq_desc 0 35931 NULL
153757 +enable_so_SYSC_bind_fndecl_35933 SYSC_bind fndecl 3 35933 NULL nohasharray
153758 +enable_so_width_drm_radeon_texture_35933 width drm_radeon_texture 0 35933 &enable_so_SYSC_bind_fndecl_35933 nohasharray
153759 +enable_so_dma_buf_size_ddb_input_35933 dma_buf_size ddb_input 0 35933 &enable_so_width_drm_radeon_texture_35933
153760 +enable_so_disk_stack_limits_fndecl_35936 disk_stack_limits fndecl 3 35936 NULL
153761 +enable_so_wMaxPacketSize_wdm_device_35940 wMaxPacketSize wdm_device 0 35940 NULL
153762 +enable_so____alloc_bootmem_nopanic_fndecl_35945 ___alloc_bootmem_nopanic fndecl 2-1 35945 NULL nohasharray
153763 +enable_so_wil_write_file_txmgmt_fndecl_35945 wil_write_file_txmgmt fndecl 3 35945 &enable_so____alloc_bootmem_nopanic_fndecl_35945
153764 +enable_so_isl1208_i2c_read_regs_fndecl_35952 isl1208_i2c_read_regs fndecl 4 35952 NULL
153765 +enable_so_nx_fw_cmd_set_mtu_fndecl_35954 nx_fw_cmd_set_mtu fndecl 2 35954 NULL
153766 +enable_so_fat_uni_to_x8_fndecl_35959 fat_uni_to_x8 fndecl 0 35959 NULL
153767 +enable_so_s_root_block_affs_sb_info_35962 s_root_block affs_sb_info 0 35962 NULL
153768 +enable_so_buf_size_si470x_device_35966 buf_size si470x_device 0 35966 NULL
153769 +enable_so_flows_tc_sfq_qopt_35973 flows tc_sfq_qopt 0 35973 NULL
153770 +enable_so_bus_myri10ge_rx_done_35977 bus myri10ge_rx_done 0 35977 NULL
153771 +enable_so_pn_sendmsg_fndecl_35979 pn_sendmsg fndecl 3 35979 NULL
153772 +enable_so_num_dacs_hda_multi_out_35981 num_dacs hda_multi_out 0 35981 NULL
153773 +enable_so_ccid_getsockopt_builtin_ccids_fndecl_35985 ccid_getsockopt_builtin_ccids fndecl 2 35985 NULL
153774 +enable_so_poll_vardecl_hfcpci_c_36001 poll vardecl_hfcpci.c 0 36001 NULL nohasharray
153775 +enable_so_fuse_fill_write_pages_fndecl_36001 fuse_fill_write_pages fndecl 4 36001 &enable_so_poll_vardecl_hfcpci_c_36001 nohasharray
153776 +enable_so_mcast_list_len_bnx2x_mcast_ramrod_params_36001 mcast_list_len bnx2x_mcast_ramrod_params 0 36001 &enable_so_fuse_fill_write_pages_fndecl_36001
153777 +enable_so_v4l2_event_subscribe_fndecl_36004 v4l2_event_subscribe fndecl 3 36004 NULL
153778 +enable_so_ntb_transport_max_size_fndecl_36009 ntb_transport_max_size fndecl 0 36009 NULL nohasharray
153779 +enable_so_max_rx_kingsun_cb_36009 max_rx kingsun_cb 0 36009 &enable_so_ntb_transport_max_size_fndecl_36009 nohasharray
153780 +enable_so_bdev_logical_block_size_fndecl_36009 bdev_logical_block_size fndecl 0 36009 &enable_so_max_rx_kingsun_cb_36009 nohasharray
153781 +enable_so_igb_alloc_q_vector_fndecl_36009 igb_alloc_q_vector fndecl 6-4 36009 &enable_so_bdev_logical_block_size_fndecl_36009
153782 +enable_so_count_sgentry64_36033 count sgentry64 0 36033 NULL
153783 +enable_so_NumEraseUnits_NFTLMediaHeader_36036 NumEraseUnits NFTLMediaHeader 0 36036 NULL
153784 +enable_so_insert_bio_sectors_search_36037 insert_bio_sectors search 0 36037 NULL
153785 +enable_so_thread_notes_elf_note_info_36040 thread_notes elf_note_info 0 36040 NULL
153786 +enable_so_address_fault_36043 address fault 0 36043 NULL
153787 +enable_so_update_ind_extent_range_fndecl_36049 update_ind_extent_range fndecl 3 36049 NULL
153788 +enable_so_piobcnt2k_qib_devdata_36065 piobcnt2k qib_devdata 0 36065 NULL
153789 +enable_so_xfrm_compile_policy_fndecl_36070 xfrm_compile_policy fndecl 4 36070 NULL
153790 +enable_so_usb_stor_control_msg_fndecl_36073 usb_stor_control_msg fndecl 8-2 36073 NULL
153791 +enable_so_wa_populate_buf_in_urb_fndecl_36077 wa_populate_buf_in_urb fndecl 4-3 36077 NULL
153792 +enable_so_blocksize_alauda_media_info_36080 blocksize alauda_media_info 0 36080 NULL nohasharray
153793 +enable_so_nwriters_stress_vardecl_locktorture_c_36080 nwriters_stress vardecl_locktorture.c 0 36080 &enable_so_blocksize_alauda_media_info_36080
153794 +enable_so_wdm_write_fndecl_36084 wdm_write fndecl 3 36084 NULL
153795 +enable_so_xfs_extent_busy_insert_fndecl_36087 xfs_extent_busy_insert fndecl 3-4-2 36087 NULL
153796 +enable_so_ext3_try_to_allocate_with_rsv_fndecl_36090 ext3_try_to_allocate_with_rsv fndecl 5 36090 NULL
153797 +enable_so_wil_write_file_ssid_fndecl_36097 wil_write_file_ssid fndecl 3 36097 NULL
153798 +enable_so_cma_bitmap_pages_to_bits_fndecl_36103 cma_bitmap_pages_to_bits fndecl 0-2 36103 NULL
153799 +enable_so_set_extent_uptodate_fndecl_36117 set_extent_uptodate fndecl 3-2 36117 NULL nohasharray
153800 +enable_so_nr_requests_request_queue_36117 nr_requests request_queue 0 36117 &enable_so_set_extent_uptodate_fndecl_36117
153801 +enable_so_x25_sendmsg_fndecl_36140 x25_sendmsg fndecl 3 36140 NULL nohasharray
153802 +enable_so_snd_tea575x_read_fndecl_36140 snd_tea575x_read fndecl 0 36140 &enable_so_x25_sendmsg_fndecl_36140
153803 +enable_so_f2fs_fiemap_fndecl_36141 f2fs_fiemap fndecl 4 36141 NULL
153804 +enable_so_lirc_buffer_init_fndecl_36145 lirc_buffer_init fndecl 2 36145 NULL
153805 +enable_so_create_empty_buffers_fndecl_36152 create_empty_buffers fndecl 2 36152 NULL
153806 +enable_so_ad9523_reg_access_fndecl_36157 ad9523_reg_access fndecl 2 36157 NULL
153807 +enable_so_ieee80211_send_probe_req_fndecl_36159 ieee80211_send_probe_req fndecl 7-5 36159 NULL
153808 +enable_so_next_nilfs_segsum_info_36161 next nilfs_segsum_info 0 36161 NULL
153809 +enable_so_clone_sources_count_btrfs_ioctl_send_args_36165 clone_sources_count btrfs_ioctl_send_args 0 36165 NULL
153810 +enable_so_gsm_control_reply_fndecl_36166 gsm_control_reply fndecl 4 36166 NULL
153811 +enable_so_vm_mmap_fndecl_36168 vm_mmap fndecl 0 36168 NULL
153812 +enable_so_qd2offset_fndecl_36177 qd2offset fndecl 0 36177 NULL
153813 +enable_so_nr_ion_platform_data_36179 nr ion_platform_data 0 36179 NULL
153814 +enable_so_flags_rtl8180_tx_desc_36187 flags rtl8180_tx_desc 0 36187 NULL nohasharray
153815 +enable_so_flash_size_jffs2_sb_info_36187 flash_size jffs2_sb_info 0 36187 &enable_so_flags_rtl8180_tx_desc_36187
153816 +enable_so_batadv_interface_rx_fndecl_36190 batadv_interface_rx fndecl 4 36190 NULL
153817 +enable_so_prealloc_buffer_size_snd_dmaengine_pcm_config_36192 prealloc_buffer_size snd_dmaengine_pcm_config 0 36192 NULL
153818 +enable_so_objlayout_read_done_fndecl_36193 objlayout_read_done fndecl 2 36193 NULL
153819 +enable_so_range_min_regmap_range_36196 range_min regmap_range 0 36196 NULL
153820 +enable_so_set_radio_freq_fndecl_36200 set_radio_freq fndecl 2 36200 NULL
153821 +enable_so_get_random_bytes_arch_fndecl_36201 get_random_bytes_arch fndecl 2 36201 NULL
153822 +enable_so_sock_setbindtodevice_fndecl_36202 sock_setbindtodevice fndecl 3 36202 NULL
153823 +enable_so_blksz_mmc_ioc_cmd_36207 blksz mmc_ioc_cmd 0 36207 NULL
153824 +enable_so_assert_file_addr_sdpcm_shared_36210 assert_file_addr sdpcm_shared 0 36210 NULL
153825 +enable_so_xfs_vm_write_begin_fndecl_36211 xfs_vm_write_begin fndecl 3-4 36211 NULL
153826 +enable_so_btrfs_find_all_roots_fndecl_36213 btrfs_find_all_roots fndecl 3 36213 NULL nohasharray
153827 +enable_so_nfs_try_to_update_request_fndecl_36213 nfs_try_to_update_request fndecl 3 36213 &enable_so_btrfs_find_all_roots_fndecl_36213
153828 +enable_so_page_size_spi_eeprom_36227 page_size spi_eeprom 0 36227 NULL nohasharray
153829 +enable_so_MaxDevHandle_mpt3sas_facts_36227 MaxDevHandle mpt3sas_facts 0 36227 &enable_so_page_size_spi_eeprom_36227
153830 +enable_so_reserve_space_fndecl_36229 reserve_space fndecl 2 36229 NULL nohasharray
153831 +enable_so_next_free_nid_f2fs_checkpoint_36229 next_free_nid f2fs_checkpoint 0 36229 &enable_so_reserve_space_fndecl_36229
153832 +enable_so_add_async_extent_fndecl_36239 add_async_extent fndecl 2-3-4 36239 NULL
153833 +enable_so_surfaceram_base_qxl_device_36241 surfaceram_base qxl_device 0 36241 NULL nohasharray
153834 +enable_so_data_queues_rt2x00_dev_36241 data_queues rt2x00_dev 0 36241 &enable_so_surfaceram_base_qxl_device_36241 nohasharray
153835 +enable_so_max_level_cpufreq_cooling_device_36241 max_level cpufreq_cooling_device 0 36241 &enable_so_data_queues_rt2x00_dev_36241
153836 +enable_so_vhost_kvzalloc_fndecl_36242 vhost_kvzalloc fndecl 1 36242 NULL
153837 +enable_so_fpage_offs_genwqe_sgl_36247 fpage_offs genwqe_sgl 0 36247 NULL nohasharray
153838 +enable_so_histogram_alloc_size_dm_stat_36247 histogram_alloc_size dm_stat 0 36247 &enable_so_fpage_offs_genwqe_sgl_36247
153839 +enable_so_xfs_imap_fndecl_36254 xfs_imap fndecl 3 36254 NULL
153840 +enable_so_svc_create_pooled_fndecl_36258 svc_create_pooled fndecl 2 36258 NULL
153841 +enable_so_dma_nv_skb_map_36260 dma nv_skb_map 0 36260 NULL
153842 +enable_so_size_sge_txq_36261 size sge_txq 0 36261 NULL
153843 +enable_so_pwc_get_fps_Timon_fndecl_36269 pwc_get_fps_Timon fndecl 0 36269 NULL
153844 +enable_so_sita_init_fndecl_36274 sita_init fndecl 1-2 36274 NULL
153845 +enable_so_s_clusters_per_group_ext4_sb_info_36278 s_clusters_per_group ext4_sb_info 0 36278 NULL nohasharray
153846 +enable_so_iwl_pcie_txq_alloc_fndecl_36278 iwl_pcie_txq_alloc fndecl 3 36278 &enable_so_s_clusters_per_group_ext4_sb_info_36278
153847 +enable_so_calc_sectors_fndecl_36288 calc_sectors fndecl 2 36288 NULL nohasharray
153848 +enable_so_len_ethtool_tunable_36288 len ethtool_tunable 0 36288 &enable_so_calc_sectors_fndecl_36288
153849 +enable_so_collection_size_hid_device_36289 collection_size hid_device 0 36289 NULL
153850 +enable_so___btrfs_lookup_bio_sums_fndecl_36290 __btrfs_lookup_bio_sums fndecl 4 36290 NULL
153851 +enable_so_ssl_next_nilfs_snapshot_list_36302 ssl_next nilfs_snapshot_list 0 36302 NULL
153852 +enable_so_paging64_prefetch_gpte_fndecl_36303 paging64_prefetch_gpte fndecl 4 36303 NULL
153853 +enable_so_command_size_drm_vmw_execbuf_arg_36305 command_size drm_vmw_execbuf_arg 0 36305 NULL
153854 +enable_so_tegra_fb_alloc_fndecl_36306 tegra_fb_alloc fndecl 4 36306 NULL
153855 +enable_so_snd_dma_alloc_pages_fndecl_36308 snd_dma_alloc_pages fndecl 3 36308 NULL
153856 +enable_so_max_transfer_snd_usb_midi_out_endpoint_36311 max_transfer snd_usb_midi_out_endpoint 0 36311 NULL
153857 +enable_so_chunk_size_mdp_superblock_s_36313 chunk_size mdp_superblock_s 0 36313 NULL
153858 +enable_so_n_descsz_elf64_note_36314 n_descsz elf64_note 0 36314 NULL
153859 +enable_so_move_buffer_data_fndecl_36318 move_buffer_data fndecl 2 36318 NULL
153860 +enable_so_file_size_squashfs_lreg_inode_36323 file_size squashfs_lreg_inode 0 36323 NULL
153861 +enable_so_client_channels_snd_pcm_plugin_36324 client_channels snd_pcm_plugin 0 36324 NULL
153862 +enable_so_xfs_symlink_blocks_fndecl_36326 xfs_symlink_blocks fndecl 0-2 36326 NULL nohasharray
153863 +enable_so_xferred_rbd_obj_request_36326 xferred rbd_obj_request 0 36326 &enable_so_xfs_symlink_blocks_fndecl_36326
153864 +enable_so_ima_write_template_field_data_fndecl_36336 ima_write_template_field_data fndecl 2 36336 NULL nohasharray
153865 +enable_so_create_trace_kprobe_fndecl_36336 create_trace_kprobe fndecl 1 36336 &enable_so_ima_write_template_field_data_fndecl_36336
153866 +enable_so_rds_tcp_data_recv_fndecl_36343 rds_tcp_data_recv fndecl 4-3 36343 NULL
153867 +enable_so_iowarrior_read_fndecl_36344 iowarrior_read fndecl 3 36344 NULL
153868 +enable_so_osd_req_write_kern_fndecl_36349 osd_req_write_kern fndecl 5 36349 NULL
153869 +enable_so_inode_blocks_efs_sb_info_36351 inode_blocks efs_sb_info 0 36351 NULL
153870 +enable_so_ipxrtr_route_packet_fndecl_36359 ipxrtr_route_packet fndecl 4 36359 NULL
153871 +enable_so_snd_pcm_lib_write_transfer_fndecl_36369 snd_pcm_lib_write_transfer fndecl 5 36369 NULL
153872 +enable_so_cpuid_seek_fndecl_36372 cpuid_seek fndecl 2 36372 NULL nohasharray
153873 +enable_so_kvm_vcpu_read_guest_atomic_fndecl_36372 kvm_vcpu_read_guest_atomic fndecl 4 36372 &enable_so_cpuid_seek_fndecl_36372
153874 +enable_so_addr_len_ipmi_req_36374 addr_len ipmi_req 0 36374 NULL
153875 +enable_so_read_one_inode_fndecl_36388 read_one_inode fndecl 2 36388 NULL
153876 +enable_so_rx_ring_size_adm8211_priv_36391 rx_ring_size adm8211_priv 0 36391 NULL
153877 +enable_so_mtu_l2cap_le_conn_rsp_36399 mtu l2cap_le_conn_rsp 0 36399 NULL
153878 +enable_so_batadv_tt_update_orig_fndecl_36402 batadv_tt_update_orig fndecl 4-6 36402 NULL
153879 +enable_so_il4965_hwrate_to_tx_control_fndecl_36403 il4965_hwrate_to_tx_control fndecl 2 36403 NULL
153880 +enable_so_nl80211_send_disconnected_fndecl_36411 nl80211_send_disconnected fndecl 5 36411 NULL
153881 +enable_so_data_len_hfa384x_rx_frame_36417 data_len hfa384x_rx_frame 0 36417 NULL
153882 +enable_so_altera_set_ir_pre_fndecl_36420 altera_set_ir_pre fndecl 2 36420 NULL nohasharray
153883 +enable_so_lustre_posix_acl_xattr_filter_fndecl_36420 lustre_posix_acl_xattr_filter fndecl 2 36420 &enable_so_altera_set_ir_pre_fndecl_36420
153884 +enable_so_essid_len_ipw2100_priv_36426 essid_len ipw2100_priv 0 36426 NULL
153885 +enable_so_mt2266_writeregs_fndecl_36430 mt2266_writeregs fndecl 3 36430 NULL
153886 +enable_so_reserved_page_order_st_buffer_36445 reserved_page_order st_buffer 0 36445 NULL
153887 +enable_so_size_packet_info_36454 size packet_info 0 36454 NULL
153888 +enable_so_db_addr_mlx5_ib_create_srq_36471 db_addr mlx5_ib_create_srq 0 36471 NULL
153889 +enable_so_rlim_max_rlimit_36476 rlim_max rlimit 0 36476 NULL
153890 +enable_so_portnum_lvs_rh_36480 portnum lvs_rh 0 36480 NULL
153891 +enable_so_rx_len_yam_port_36481 rx_len yam_port 0 36481 NULL
153892 +enable_so_address_mspro_attr_entry_36482 address mspro_attr_entry 0 36482 NULL
153893 +enable_so_t_task_lba_se_cmd_36485 t_task_lba se_cmd 0 36485 NULL
153894 +enable_so_p9_client_prepare_req_fndecl_36492 p9_client_prepare_req fndecl 3 36492 NULL
153895 +enable_so_do_fault_around_fndecl_36500 do_fault_around fndecl 2-4 36500 NULL
153896 +enable_so_queue_rx_frame_fndecl_36501 queue_rx_frame fndecl 2 36501 NULL nohasharray
153897 +enable_so_sg_max_nents_hwif_s_36501 sg_max_nents hwif_s 0 36501 &enable_so_queue_rx_frame_fndecl_36501
153898 +enable_so_create_pinned_em_fndecl_36508 create_pinned_em fndecl 2-4-5-3-7-6 36508 NULL
153899 +enable_so_skge_change_mtu_fndecl_36510 skge_change_mtu fndecl 2 36510 NULL
153900 +enable_so_byte_count_vmtransfer_page_range_36511 byte_count vmtransfer_page_range 0 36511 NULL
153901 +enable_so_hpfs_map_4sectors_fndecl_36523 hpfs_map_4sectors fndecl 2 36523 NULL
153902 +enable_so_igu_sb_cnt_bnx2x_36525 igu_sb_cnt bnx2x 0 36525 NULL
153903 +enable_so_ue_num_asd_bios_chim_struct_36526 ue_num asd_bios_chim_struct 0 36526 NULL
153904 +enable_so_actual_resp_len_be_cmd_resp_hdr_36543 actual_resp_len be_cmd_resp_hdr 0 36543 NULL
153905 +enable_so_status_path_selector_type_36548 status path_selector_type 0 36548 NULL nohasharray
153906 +enable_so_udb_t3_wq_36548 udb t3_wq 0 36548 &enable_so_status_path_selector_type_36548 nohasharray
153907 +enable_so_pi_read_regr_fndecl_36548 pi_read_regr fndecl 0 36548 &enable_so_udb_t3_wq_36548
153908 +enable_so_net2272_write_packet_fndecl_36550 net2272_write_packet fndecl 4 36550 NULL
153909 +enable_so_max_sg_segs_vardecl_st_c_36551 max_sg_segs vardecl_st.c 0 36551 NULL
153910 +enable_so_ocfs2_fallocate_fndecl_36555 ocfs2_fallocate fndecl 3-4 36555 NULL
153911 +enable_so_fb_try_mode_fndecl_36560 fb_try_mode fndecl 4 36560 NULL
153912 +enable_so_fuse_file_compat_ioctl_fndecl_36564 fuse_file_compat_ioctl fndecl 2 36564 NULL
153913 +enable_so_vlan_tag_eth_fast_path_rx_cqe_36569 vlan_tag eth_fast_path_rx_cqe 0 36569 NULL nohasharray
153914 +enable_so_sge_size_MPT2SAS_ADAPTER_36569 sge_size MPT2SAS_ADAPTER 0 36569 &enable_so_vlan_tag_eth_fast_path_rx_cqe_36569
153915 +enable_so_do_sys_poll_fndecl_36574 do_sys_poll fndecl 2 36574 NULL
153916 +enable_so_num_shared_regs_intel_uncore_type_36581 num_shared_regs intel_uncore_type 0 36581 NULL
153917 +enable_so_audio_write_fndecl_36582 audio_write fndecl 4 36582 NULL nohasharray
153918 +enable_so_wusb_prf_fndecl_36582 wusb_prf fndecl 7 36582 &enable_so_audio_write_fndecl_36582
153919 +enable_so_rx_ring_size_pcnet32_private_36586 rx_ring_size pcnet32_private 0 36586 NULL
153920 +enable_so__rtl_rc_get_highest_rix_fndecl_36588 _rtl_rc_get_highest_rix fndecl 0 36588 NULL
153921 +enable_so_bgrt_image_size_vardecl_36594 bgrt_image_size vardecl 0 36594 NULL nohasharray
153922 +enable_so_s_2apbshift_ufs_sb_private_info_36594 s_2apbshift ufs_sb_private_info 0 36594 &enable_so_bgrt_image_size_vardecl_36594
153923 +enable_so_reada_add_block_fndecl_36596 reada_add_block fndecl 2 36596 NULL
153924 +enable_so_num_max_snd_ratden_36597 num_max snd_ratden 0 36597 NULL nohasharray
153925 +enable_so_mcp23s08_read_regs_fndecl_36597 mcp23s08_read_regs fndecl 4 36597 &enable_so_num_max_snd_ratden_36597 nohasharray
153926 +enable_so_UnitSizeFactor_NFTLMediaHeader_36597 UnitSizeFactor NFTLMediaHeader 0 36597 &enable_so_mcp23s08_read_regs_fndecl_36597
153927 +enable_so_update_block_group_fndecl_36600 update_block_group fndecl 4-3 36600 NULL
153928 +enable_so_write_file_spec_scan_ctl_fndecl_36603 write_file_spec_scan_ctl fndecl 3 36603 NULL
153929 +enable_so_xfs_dir2_sf_addname_hard_fndecl_36605 xfs_dir2_sf_addname_hard fndecl 3 36605 NULL nohasharray
153930 +enable_so_reply_len_sg_header_36605 reply_len sg_header 0 36605 &enable_so_xfs_dir2_sf_addname_hard_fndecl_36605
153931 +enable_so_drm_mm_insert_node_generic_fndecl_36608 drm_mm_insert_node_generic fndecl 3 36608 NULL
153932 +enable_so_set_user_nice_fndecl_36618 set_user_nice fndecl 2 36618 NULL
153933 +enable_so_f_pos_file_36619 f_pos file 0 36619 NULL
153934 +enable_so_gamma_size_drm_mode_crtc_lut_36622 gamma_size drm_mode_crtc_lut 0 36622 NULL
153935 +enable_so_raw_serial_size_x509_certificate_36629 raw_serial_size x509_certificate 0 36629 NULL
153936 +enable_so_i915_gem_execbuffer_parse_fndecl_36633 i915_gem_execbuffer_parse fndecl 6 36633 NULL
153937 +enable_so_read_super_block_fndecl_36638 read_super_block fndecl 2 36638 NULL
153938 +enable_so_nls_nullsize_fndecl_36644 nls_nullsize fndecl 0 36644 NULL
153939 +enable_so_hfs_btree_open_fndecl_36648 hfs_btree_open fndecl 2 36648 NULL
153940 +enable_so_pvr2_encoder_write_words_fndecl_36653 pvr2_encoder_write_words fndecl 4 36653 NULL nohasharray
153941 +enable_so_setup_data_read_fndecl_36653 setup_data_read fndecl 3 36653 &enable_so_pvr2_encoder_write_words_fndecl_36653
153942 +enable_so___kfifo_dma_in_prepare_r_fndecl_36659 __kfifo_dma_in_prepare_r fndecl 4-5 36659 NULL nohasharray
153943 +enable_so_shmem_alloc_page_fndecl_36659 shmem_alloc_page fndecl 3 36659 &enable_so___kfifo_dma_in_prepare_r_fndecl_36659
153944 +enable_so___tty_alloc_driver_fndecl_36660 __tty_alloc_driver fndecl 1 36660 NULL
153945 +enable_so_qp_alloc_host_work_fndecl_36661 qp_alloc_host_work fndecl 3-5 36661 NULL
153946 +enable_so_regmap_raw_write_fndecl_36664 regmap_raw_write fndecl 2-4 36664 NULL
153947 +enable_so_max_queue_pairs_virtnet_info_36669 max_queue_pairs virtnet_info 0 36669 NULL
153948 +enable_so_i_file_acl_lo_ext4_inode_36684 i_file_acl_lo ext4_inode 0 36684 NULL
153949 +enable_so_size_drm_map_36685 size drm_map 0 36685 NULL
153950 +enable_so_esas2r_max_sectors_vardecl_36688 esas2r_max_sectors vardecl 0 36688 NULL nohasharray
153951 +enable_so_nnode_sz_ubifs_info_36688 nnode_sz ubifs_info 0 36688 &enable_so_esas2r_max_sectors_vardecl_36688
153952 +enable_so_rx_buffer_len_atl1c_adapter_36691 rx_buffer_len atl1c_adapter 0 36691 NULL
153953 +enable_so_expected_pages_page_collect_36693 expected_pages page_collect 0 36693 NULL
153954 +enable_so_hga_vram_len_vardecl_hgafb_c_36700 hga_vram_len vardecl_hgafb.c 0 36700 NULL
153955 +enable_so_btrfs_free_reserved_extent_fndecl_36706 btrfs_free_reserved_extent fndecl 3-2 36706 NULL
153956 +enable_so_get_array_entry_fndecl_36709 get_array_entry fndecl 2 36709 NULL
153957 +enable_so_ieee80211_if_fmt_dropped_frames_congestion_fndecl_36712 ieee80211_if_fmt_dropped_frames_congestion fndecl 3 36712 NULL
153958 +enable_so_reply_usif_notify_36722 reply usif_notify 0 36722 NULL
153959 +enable_so___add_tree_block_fndecl_36723 __add_tree_block fndecl 3-2 36723 NULL
153960 +enable_so_alloc_blocks_hfsplus_inode_info_36725 alloc_blocks hfsplus_inode_info 0 36725 NULL nohasharray
153961 +enable_so_bnx2x_mcast_set_rdata_hdr_e1_fndecl_36725 bnx2x_mcast_set_rdata_hdr_e1 fndecl 3 36725 &enable_so_alloc_blocks_hfsplus_inode_info_36725
153962 +enable_so_lvds_ssc_freq_intel_vbt_data_36732 lvds_ssc_freq intel_vbt_data 0 36732 NULL
153963 +enable_so_pnfs_update_layout_fndecl_36733 pnfs_update_layout fndecl 3-4 36733 NULL
153964 +enable_so_common_buffer_phys_smscore_device_t_36739 common_buffer_phys smscore_device_t 0 36739 NULL
153965 +enable_so_get_meta_page_fndecl_36742 get_meta_page fndecl 2 36742 NULL nohasharray
153966 +enable_so_batadv_tt_tvlv_ogm_handler_v1_fndecl_36742 batadv_tt_tvlv_ogm_handler_v1 fndecl 5 36742 &enable_so_get_meta_page_fndecl_36742
153967 +enable_so_early_reserve_e820_fndecl_36744 early_reserve_e820 fndecl 1-2 36744 NULL
153968 +enable_so_s2255_got_frame_fndecl_36746 s2255_got_frame fndecl 2 36746 NULL
153969 +enable_so_SyS_sched_getattr_fndecl_36760 SyS_sched_getattr fndecl 3 36760 NULL
153970 +enable_so_bufsiz_vardecl_spidev_c_36763 bufsiz vardecl_spidev.c 0 36763 NULL
153971 +enable_so_iget_xattr_fndecl_36765 iget_xattr fndecl 2 36765 NULL nohasharray
153972 +enable_so_netdev_flow_limit_table_len_vardecl_36765 netdev_flow_limit_table_len vardecl 0 36765 &enable_so_iget_xattr_fndecl_36765
153973 +enable_so_last_index_zap_details_36766 last_index zap_details 0 36766 NULL
153974 +enable_so_ocfs2_rm_xattr_cluster_fndecl_36767 ocfs2_rm_xattr_cluster fndecl 4-5-3 36767 NULL nohasharray
153975 +enable_so_SyS_setgroups_fndecl_36767 SyS_setgroups fndecl 1 36767 &enable_so_ocfs2_rm_xattr_cluster_fndecl_36767
153976 +enable_so_ocfs2_make_clusters_writable_fndecl_36769 ocfs2_make_clusters_writable fndecl 5-4-3 36769 NULL
153977 +enable_so_num_nodes_crush_bucket_tree_36776 num_nodes crush_bucket_tree 0 36776 NULL
153978 +enable_so_usb_serial_generic_write_fndecl_36788 usb_serial_generic_write fndecl 4 36788 NULL
153979 +enable_so_rx_count_cooked_sixpack_36794 rx_count_cooked sixpack 0 36794 NULL
153980 +enable_so_pad_bytes_regmap_format_36795 pad_bytes regmap_format 0 36795 NULL
153981 +enable_so_efi_runtime_map_setup_fndecl_36796 efi_runtime_map_setup fndecl 2 36796 NULL
153982 +enable_so_sector_stripe_head_36797 sector stripe_head 0 36797 NULL
153983 +enable_so_v4l_bufsize_vardecl_36803 v4l_bufsize vardecl 0 36803 NULL
153984 +enable_so_idetape_chrdev_write_fndecl_36811 idetape_chrdev_write fndecl 3 36811 NULL
153985 +enable_so_mthca_reg_user_mr_fndecl_36815 mthca_reg_user_mr fndecl 2 36815 NULL
153986 +enable_so_size_drm_armada_gem_pwrite_36816 size drm_armada_gem_pwrite 0 36816 NULL
153987 +enable_so_ir_pre_altera_jtag_36823 ir_pre altera_jtag 0 36823 NULL
153988 +enable_so_mlx4_num_eq_uar_fndecl_36830 mlx4_num_eq_uar fndecl 0 36830 NULL
153989 +enable_so_total_bytes_btrfs_super_block_36845 total_bytes btrfs_super_block 0 36845 NULL
153990 +enable_so_walk_shadow_page_get_mmio_spte_fndecl_36854 walk_shadow_page_get_mmio_spte fndecl 2 36854 NULL
153991 +enable_so_reply_sz_MPT2SAS_ADAPTER_36858 reply_sz MPT2SAS_ADAPTER 0 36858 NULL
153992 +enable_so_raid5_compute_sector_fndecl_36860 raid5_compute_sector fndecl 0-2 36860 NULL
153993 +enable_so_ieee80211_if_fmt_dot11MeshHWMPperrMinInterval_fndecl_36861 ieee80211_if_fmt_dot11MeshHWMPperrMinInterval fndecl 3 36861 NULL
153994 +enable_so_vtotal_drm_display_mode_36870 vtotal drm_display_mode 0 36870 NULL
153995 +enable_so_int_tasklet_entry_fndecl_36871 int_tasklet_entry fndecl 3 36871 NULL
153996 +enable_so_qlcnic_83xx_sysfs_flash_write_fndecl_36872 qlcnic_83xx_sysfs_flash_write fndecl 4 36872 NULL
153997 +enable_so_self_inum_vardecl_self_c_36873 self_inum vardecl_self.c 0 36873 NULL nohasharray
153998 +enable_so_netlbl_unlabel_init_fndecl_36873 netlbl_unlabel_init fndecl 1 36873 &enable_so_self_inum_vardecl_self_c_36873
153999 +enable_so_ocfs2_extend_no_holes_fndecl_36880 ocfs2_extend_no_holes fndecl 3 36880 NULL
154000 +enable_so_uwb_est_size_vardecl_est_c_36881 uwb_est_size vardecl_est.c 0 36881 NULL
154001 +enable_so_tipc_sendmsg_fndecl_36882 tipc_sendmsg fndecl 3 36882 NULL
154002 +enable_so_i2o_max_drivers_vardecl_driver_c_36891 i2o_max_drivers vardecl_driver.c 0 36891 NULL
154003 +enable_so_fd_do_rw_fndecl_36892 fd_do_rw fndecl 3 36892 NULL
154004 +enable_so_size_cxgb4_range_36893 size cxgb4_range 0 36893 NULL
154005 +enable_so_sge_congestion_control_sge_params_36896 sge_congestion_control sge_params 0 36896 NULL
154006 +enable_so_limit_ixgbe_ring_feature_36904 limit ixgbe_ring_feature 0 36904 NULL
154007 +enable_so_actual_usb_request_36913 actual usb_request 0 36913 NULL
154008 +enable_so_tool_spadfn_write_fndecl_36915 tool_spadfn_write fndecl 3 36915 NULL
154009 +enable_so_buf_addr_mlx5_ib_create_srq_36916 buf_addr mlx5_ib_create_srq 0 36916 NULL
154010 +enable_so_udf_next_aext_fndecl_36926 udf_next_aext fndecl 0 36926 NULL nohasharray
154011 +enable_so_dup_variable_bug_fndecl_36926 dup_variable_bug fndecl 3 36926 &enable_so_udf_next_aext_fndecl_36926
154012 +enable_so_len_xfs_name_36929 len xfs_name 0 36929 NULL nohasharray
154013 +enable_so_ocfs2_make_right_split_rec_fndecl_36929 ocfs2_make_right_split_rec fndecl 3 36929 &enable_so_len_xfs_name_36929
154014 +enable_so_nfsacl_decode_fndecl_36931 nfsacl_decode fndecl 2 36931 NULL
154015 +enable_so_debug_level_proc_write_fndecl_36943 debug_level_proc_write fndecl 3 36943 NULL
154016 +enable_so_end_offset_xilly_buffer_36946 end_offset xilly_buffer 0 36946 NULL
154017 +enable_so_rx_bufsize_ath_common_36977 rx_bufsize ath_common 0 36977 NULL
154018 +enable_so_v_sync_strt_wid_aty128_crtc_36987 v_sync_strt_wid aty128_crtc 0 36987 NULL
154019 +enable_so_psb_intel_clock_fndecl_36993 psb_intel_clock fndecl 1 36993 NULL
154020 +enable_so_lbmAllocate_fndecl_36995 lbmAllocate fndecl 2 36995 NULL
154021 +enable_so_ll_sa_entry_alloc_fndecl_37008 ll_sa_entry_alloc fndecl 4 37008 NULL
154022 +enable_so_num_rxp_per_rx_bnad_37010 num_rxp_per_rx bnad 0 37010 NULL
154023 +enable_so_next_rs_iwl_rate_info_37018 next_rs iwl_rate_info 0 37018 NULL
154024 +enable_so_to_fw_map_37020 to fw_map 0 37020 NULL
154025 +enable_so_cb_group_width_exofs_dt_data_map_37027 cb_group_width exofs_dt_data_map 0 37027 NULL
154026 +enable_so_fld_proc_hash_seq_write_fndecl_37036 fld_proc_hash_seq_write fndecl 3 37036 NULL
154027 +enable_so_dirty_poll_interval_fndecl_37038 dirty_poll_interval fndecl 0 37038 NULL
154028 +enable_so_setcc_fndecl_37048 setcc fndecl 1 37048 NULL
154029 +enable_so_yres__sisbios_mode_37051 yres _sisbios_mode 0 37051 NULL
154030 +enable_so_reg_write_range_fndecl_37057 reg_write_range fndecl 4 37057 NULL
154031 +enable_so_SYSC_gethostname_fndecl_37078 SYSC_gethostname fndecl 2 37078 NULL
154032 +enable_so_inode_get_bytes_fndecl_37079 inode_get_bytes fndecl 0 37079 NULL
154033 +enable_so_cx25840_ir_rx_read_fndecl_37095 cx25840_ir_rx_read fndecl 3 37095 NULL
154034 +enable_so_relay_alloc_page_array_fndecl_37100 relay_alloc_page_array fndecl 1 37100 NULL
154035 +enable_so_gfs2_meta_ra_fndecl_37101 gfs2_meta_ra fndecl 2 37101 NULL
154036 +enable_so_blkcipher_next_slow_fndecl_37102 blkcipher_next_slow fndecl 3-4 37102 NULL
154037 +enable_so_filled_kobil_private_37104 filled kobil_private 0 37104 NULL
154038 +enable_so_vlan_tag_rx_return_desc_37115 vlan_tag rx_return_desc 0 37115 NULL
154039 +enable_so_fuse_request_alloc_fndecl_37120 fuse_request_alloc fndecl 1 37120 NULL nohasharray
154040 +enable_so_raid10_format_to_md_layout_fndecl_37120 raid10_format_to_md_layout fndecl 0-2 37120 &enable_so_fuse_request_alloc_fndecl_37120
154041 +enable_so_probe_memory_block_size_fndecl_37124 probe_memory_block_size fndecl 0 37124 NULL
154042 +enable_so_ocfs2_check_if_ancestor_fndecl_37125 ocfs2_check_if_ancestor fndecl 2 37125 NULL
154043 +enable_so___rh_alloc_fndecl_37130 __rh_alloc fndecl 2 37130 NULL nohasharray
154044 +enable_so_sc_blk_cnt_nilfs_sc_info_37130 sc_blk_cnt nilfs_sc_info 0 37130 &enable_so___rh_alloc_fndecl_37130
154045 +enable_so_nfs_updatepage_fndecl_37131 nfs_updatepage fndecl 3 37131 NULL
154046 +enable_so_num_report_ids_mxt_object_37133 num_report_ids mxt_object 0 37133 NULL
154047 +enable_so_mlx5_query_port_pvlc_fndecl_37159 mlx5_query_port_pvlc fndecl 3 37159 NULL
154048 +enable_so_max_pdu_size_l2cap_conf_rfc_37161 max_pdu_size l2cap_conf_rfc 0 37161 NULL
154049 +enable_so_ld_tgt_count_lov_desc_37163 ld_tgt_count lov_desc 0 37163 NULL
154050 +enable_so_l_logBBstart_xlog_37164 l_logBBstart xlog 0 37164 NULL
154051 +enable_so_txCredits_edgeport_port_37166 txCredits edgeport_port 0 37166 NULL
154052 +enable_so_read_mmp_block_fndecl_37168 read_mmp_block fndecl 3 37168 NULL nohasharray
154053 +enable_so_mdiobus_alloc_size_fndecl_37168 mdiobus_alloc_size fndecl 1 37168 &enable_so_read_mmp_block_fndecl_37168
154054 +enable_so_expect_bt_skb_cb_37170 expect bt_skb_cb 0 37170 NULL
154055 +enable_so_hva_to_pfn_slow_fndecl_37173 hva_to_pfn_slow fndecl 1 37173 NULL nohasharray
154056 +enable_so_gpe_count_acpi_gpe_block_info_37173 gpe_count acpi_gpe_block_info 0 37173 &enable_so_hva_to_pfn_slow_fndecl_37173
154057 +enable_so_i915_gem_stolen_setup_compression_fndecl_37175 i915_gem_stolen_setup_compression fndecl 2 37175 NULL nohasharray
154058 +enable_so_copy_pte_range_fndecl_37175 copy_pte_range fndecl 6 37175 &enable_so_i915_gem_stolen_setup_compression_fndecl_37175
154059 +enable_so_sisusbcon_do_font_op_fndecl_37180 sisusbcon_do_font_op fndecl 9 37180 NULL
154060 +enable_so_ssd1307fb_write_fndecl_37192 ssd1307fb_write fndecl 3 37192 NULL
154061 +enable_so_rx_status_0_ath5k_hw_rx_status_37197 rx_status_0 ath5k_hw_rx_status 0 37197 NULL
154062 +enable_so_request_asymmetric_key_fndecl_37198 request_asymmetric_key fndecl 2-4 37198 NULL
154063 +enable_so_nbperpage_jfs_sb_info_37199 nbperpage jfs_sb_info 0 37199 NULL
154064 +enable_so_gva_to_gpa_kvm_mmu_37200 gva_to_gpa kvm_mmu 0 37200 NULL
154065 +enable_so_digestsize_shash_alg_37203 digestsize shash_alg 0 37203 NULL
154066 +enable_so_last_message_count_mxt_data_37205 last_message_count mxt_data 0 37205 NULL
154067 +enable_so_hur_len_fndecl_37216 hur_len fndecl 0 37216 NULL
154068 +enable_so_xfs_dir2_node_trim_free_fndecl_37218 xfs_dir2_node_trim_free fndecl 2 37218 NULL
154069 +enable_so_gsc_set_frame_size_fndecl_37233 gsc_set_frame_size fndecl 2-3 37233 NULL
154070 +enable_so_height_fb_image_37238 height fb_image 0 37238 NULL
154071 +enable_so_write_max_at24_data_37243 write_max at24_data 0 37243 NULL
154072 +enable_so_csum_and_copy_to_iter_fndecl_37244 csum_and_copy_to_iter fndecl 2 37244 NULL
154073 +enable_so_test_unaligned_bulk_fndecl_37246 test_unaligned_bulk fndecl 3-2 37246 NULL
154074 +enable_so_i_refcount_loc_ocfs2_dinode_37249 i_refcount_loc ocfs2_dinode 0 37249 NULL
154075 +enable_so_mq_emit_config_values_fndecl_37257 mq_emit_config_values fndecl 3 37257 NULL
154076 +enable_so_isdn_writebuf_stub_fndecl_37260 isdn_writebuf_stub fndecl 4 37260 NULL
154077 +enable_so_rpcrdma_register_internal_fndecl_37263 rpcrdma_register_internal fndecl 3 37263 NULL
154078 +enable_so___pskb_trim_head_fndecl_37267 __pskb_trim_head fndecl 2 37267 NULL
154079 +enable_so_ieee80211_rx_radiotap_hdrlen_fndecl_37268 ieee80211_rx_radiotap_hdrlen fndecl 0 37268 NULL
154080 +enable_so_blk_queue_update_dma_pad_fndecl_37275 blk_queue_update_dma_pad fndecl 2 37275 NULL
154081 +enable_so_copy_entries_to_user_fndecl_37276 copy_entries_to_user fndecl 1 37276 NULL
154082 +enable_so_scrollback_current_vardecl_fbcon_c_37279 scrollback_current vardecl_fbcon.c 0 37279 NULL
154083 +enable_so_reg_end_ath6kl_diag_reg_info_37280 reg_end ath6kl_diag_reg_info 0 37280 NULL
154084 +enable_so_cyz_load_fw_fndecl_37290 cyz_load_fw fndecl 0 37290 NULL
154085 +enable_so_num_bna_mem_info_37294 num bna_mem_info 0 37294 NULL
154086 +enable_so_lcd_hsync_len_atyfb_par_37297 lcd_hsync_len atyfb_par 0 37297 NULL
154087 +enable_so_rs_rate_ath_rx_status_37298 rs_rate ath_rx_status 0 37298 NULL
154088 +enable_so_jfs_setxattr_fndecl_37302 jfs_setxattr fndecl 4 37302 NULL
154089 +enable_so_input_print_modalias_bits_fndecl_37304 input_print_modalias_bits fndecl 0 37304 NULL
154090 +enable_so_aer_inject_write_fndecl_37308 aer_inject_write fndecl 3 37308 NULL
154091 +enable_so_svc_partial_recvfrom_fndecl_37311 svc_partial_recvfrom fndecl 0 37311 NULL
154092 +enable_so_ath6kl_delete_qos_write_fndecl_37312 ath6kl_delete_qos_write fndecl 3 37312 NULL
154093 +enable_so_ieee80211_if_fmt_num_sta_ps_fndecl_37317 ieee80211_if_fmt_num_sta_ps fndecl 3 37317 NULL nohasharray
154094 +enable_so_fbcon_scrolldelta_fndecl_37317 fbcon_scrolldelta fndecl 2 37317 &enable_so_ieee80211_if_fmt_num_sta_ps_fndecl_37317
154095 +enable_so_ie_len_cfg80211_sched_scan_request_37335 ie_len cfg80211_sched_scan_request 0 37335 NULL nohasharray
154096 +enable_so_ufs_change_blocknr_fndecl_37335 ufs_change_blocknr fndecl 2-4-5 37335 &enable_so_ie_len_cfg80211_sched_scan_request_37335
154097 +enable_so_line6_midibuf_init_fndecl_37338 line6_midibuf_init fndecl 2 37338 NULL
154098 +enable_so_delay_status_fndecl_37340 delay_status fndecl 5 37340 NULL
154099 +enable_so_hso_serial_common_create_fndecl_37343 hso_serial_common_create fndecl 3-4 37343 NULL
154100 +enable_so_blocksize_ccp_aes_def_37352 blocksize ccp_aes_def 0 37352 NULL nohasharray
154101 +enable_so_dlen_pg_read_hdr_37352 dlen pg_read_hdr 0 37352 &enable_so_blocksize_ccp_aes_def_37352
154102 +enable_so_blksize_fuse_mount_data_37357 blksize fuse_mount_data 0 37357 NULL
154103 +enable_so_ieee80211_alloc_txb_fndecl_37358 ieee80211_alloc_txb fndecl 1 37358 NULL
154104 +enable_so_gsm_change_mtu_fndecl_37364 gsm_change_mtu fndecl 2 37364 NULL
154105 +enable_so_alauda_read_data_fndecl_37367 alauda_read_data fndecl 3-2 37367 NULL
154106 +enable_so_bt_alloc_fndecl_37370 bt_alloc fndecl 2 37370 NULL
154107 +enable_so_peer_addr_len_drbd_connection_37371 peer_addr_len drbd_connection 0 37371 NULL
154108 +enable_so_orig_bi_size_usb_idmouse_37372 orig_bi_size usb_idmouse 0 37372 NULL
154109 +enable_so_kvm_task_switch_fndecl_37384 kvm_task_switch fndecl 2-3 37384 NULL
154110 +enable_so_btrfs_free_and_pin_reserved_extent_fndecl_37387 btrfs_free_and_pin_reserved_extent fndecl 3-2 37387 NULL
154111 +enable_so_alloc_blksz_hfs_sb_info_37390 alloc_blksz hfs_sb_info 0 37390 NULL nohasharray
154112 +enable_so_smscore_createbuffer_fndecl_37390 smscore_createbuffer fndecl 3 37390 &enable_so_alloc_blksz_hfs_sb_info_37390
154113 +enable_so_batadv_check_management_packet_fndecl_37394 batadv_check_management_packet fndecl 3 37394 NULL
154114 +enable_so_hsc_msg_len_set_fndecl_37398 hsc_msg_len_set fndecl 2 37398 NULL
154115 +enable_so_jdvbt90502_reg_read_fndecl_37400 jdvbt90502_reg_read fndecl 4 37400 NULL
154116 +enable_so_ieee80211_send_null_response_fndecl_37403 ieee80211_send_null_response fndecl 3 37403 NULL
154117 +enable_so_num_msix_vectors_i40e_hw_capabilities_37406 num_msix_vectors i40e_hw_capabilities 0 37406 NULL
154118 +enable_so_gru_init_tables_fndecl_37417 gru_init_tables fndecl 1 37417 NULL
154119 +enable_so_xfs_rtfree_extent_fndecl_37427 xfs_rtfree_extent fndecl 2-3 37427 NULL
154120 +enable_so_hr_block_bits_o2hb_region_37433 hr_block_bits o2hb_region 0 37433 NULL
154121 +enable_so_radeon_gart_size_vardecl_37434 radeon_gart_size vardecl 0 37434 NULL nohasharray
154122 +enable_so_inode_table_ext4_new_group_data_37434 inode_table ext4_new_group_data 0 37434 &enable_so_radeon_gart_size_vardecl_37434
154123 +enable_so_nice_workqueue_attrs_37437 nice workqueue_attrs 0 37437 NULL
154124 +enable_so_size_erst_record_id_cache_37450 size erst_record_id_cache 0 37450 NULL
154125 +enable_so_regcache_lzo_block_count_fndecl_37459 regcache_lzo_block_count fndecl 0 37459 NULL
154126 +enable_so_get_user_pages_locked_fndecl_37465 get_user_pages_locked fndecl 3 37465 NULL nohasharray
154127 +enable_so_cfi_read_query_fndecl_37465 cfi_read_query fndecl 0 37465 &enable_so_get_user_pages_locked_fndecl_37465
154128 +enable_so_rate_ua101_37469 rate ua101 0 37469 NULL
154129 +enable_so_iwl_dbgfs_interrupt_write_fndecl_37470 iwl_dbgfs_interrupt_write fndecl 3 37470 NULL
154130 +enable_so_length_drm_event_37471 length drm_event 0 37471 NULL
154131 +enable_so_s_apbshift_ufs_sb_private_info_37473 s_apbshift ufs_sb_private_info 0 37473 NULL
154132 +enable_so_omap_dma_reserve_channels_vardecl_dma_c_37479 omap_dma_reserve_channels vardecl_dma.c 0 37479 NULL
154133 +enable_so_TupleLink_tuple_t_37482 TupleLink tuple_t 0 37482 NULL
154134 +enable_so_squashfs_iget_fndecl_37485 squashfs_iget fndecl 3 37485 NULL
154135 +enable_so_insert_new_root_fndecl_37498 insert_new_root fndecl 4 37498 NULL
154136 +enable_so_params_len_nfc_evt_transaction_37500 params_len nfc_evt_transaction 0 37500 NULL
154137 +enable_so_lines_ivtv_osd_coords_37504 lines ivtv_osd_coords 0 37504 NULL
154138 +enable_so_ks8851_rdfifo_fndecl_37510 ks8851_rdfifo fndecl 3 37510 NULL
154139 +enable_so_ncpus_vardecl_aoecmd_c_37517 ncpus vardecl_aoecmd.c 0 37517 NULL nohasharray
154140 +enable_so_copy_user_segment_list_fndecl_37517 copy_user_segment_list fndecl 2 37517 &enable_so_ncpus_vardecl_aoecmd_c_37517
154141 +enable_so_verity_status_fndecl_37523 verity_status fndecl 5 37523 NULL nohasharray
154142 +enable_so_etherMtu_mac_eeprom_port_cfg_37523 etherMtu_mac eeprom_port_cfg 0 37523 &enable_so_verity_status_fndecl_37523 nohasharray
154143 +enable_so___data_len_request_37523 __data_len request 0 37523 &enable_so_etherMtu_mac_eeprom_port_cfg_37523
154144 +enable_so_parent_ino_xfs_fid64_37533 parent_ino xfs_fid64 0 37533 NULL
154145 +enable_so_ieee80211_bss_info_update_fndecl_37537 ieee80211_bss_info_update fndecl 4 37537 NULL
154146 +enable_so_aperture_size_dma_ops_domain_37538 aperture_size dma_ops_domain 0 37538 NULL
154147 +enable_so_fuse_fsync_common_fndecl_37543 fuse_fsync_common fndecl 2 37543 NULL
154148 +enable_so_divisor_sfq_sched_data_37546 divisor sfq_sched_data 0 37546 NULL
154149 +enable_so_extent_shift_ecryptfs_crypt_stat_37548 extent_shift ecryptfs_crypt_stat 0 37548 NULL nohasharray
154150 +enable_so_num_rand_bytes_ecryptfs_write_tag_70_packet_silly_stack_37548 num_rand_bytes ecryptfs_write_tag_70_packet_silly_stack 0 37548 &enable_so_extent_shift_ecryptfs_crypt_stat_37548
154151 +enable_so_fixup_user_fault_fndecl_37577 fixup_user_fault fndecl 3 37577 NULL
154152 +enable_so_len_efx_rx_buffer_37579 len efx_rx_buffer 0 37579 NULL
154153 +enable_so_n_ai_urbs_usbdux_private_37595 n_ai_urbs usbdux_private 0 37595 NULL
154154 +enable_so_ocfs2_cp_xattr_bucket_fndecl_37598 ocfs2_cp_xattr_bucket fndecl 3-4 37598 NULL
154155 +enable_so_eeprom_len_fmc_device_37616 eeprom_len fmc_device 0 37616 NULL
154156 +enable_so_gen8_ppgtt_alloc_fndecl_37622 gen8_ppgtt_alloc fndecl 2 37622 NULL
154157 +enable_so_pvr2_hdw_set_cur_freq_fndecl_37630 pvr2_hdw_set_cur_freq fndecl 2 37630 NULL
154158 +enable_so_dcbp_set_code_fndecl_37633 dcbp_set_code fndecl 2 37633 NULL
154159 +enable_so_lfb_height_screen_info_37634 lfb_height screen_info 0 37634 NULL
154160 +enable_so_b_in_mon_reader_bin_37636 b_in mon_reader_bin 0 37636 NULL
154161 +enable_so_usb_stor_bulk_srb_fndecl_37641 usb_stor_bulk_srb fndecl 2 37641 NULL
154162 +enable_so_copy_ctr_args_fndecl_37642 copy_ctr_args fndecl 2 37642 NULL
154163 +enable_so_addrlen_rpc_xprt_37643 addrlen rpc_xprt 0 37643 NULL
154164 +enable_so_bufsize_vardecl_pagetest_c_37645 bufsize vardecl_pagetest.c 0 37645 NULL
154165 +enable_so_alloc_ldt_struct_fndecl_37649 alloc_ldt_struct fndecl 1 37649 NULL
154166 +enable_so_spu_subport_cnt_ipath_user_info_37652 spu_subport_cnt ipath_user_info 0 37652 NULL
154167 +enable_so_bop_check_insert_nilfs_bmap_operations_37658 bop_check_insert nilfs_bmap_operations 0 37658 NULL nohasharray
154168 +enable_so_hfcsusb_rx_frame_fndecl_37658 hfcsusb_rx_frame fndecl 3 37658 &enable_so_bop_check_insert_nilfs_bmap_operations_37658
154169 +enable_so_early_bytes_rchan_buf_37669 early_bytes rchan_buf 0 37669 NULL
154170 +enable_so_len_ethtool_eeprom_37676 len ethtool_eeprom 0 37676 NULL
154171 +enable_so_eeprom_blob_size_iwl_priv_37680 eeprom_blob_size iwl_priv 0 37680 NULL
154172 +enable_so_lastextent_efs_inode_info_37681 lastextent efs_inode_info 0 37681 NULL
154173 +enable_so_nvme_trans_ext_inq_page_fndecl_37691 nvme_trans_ext_inq_page fndecl 3 37691 NULL
154174 +enable_so_orig_video_points_screen_info_37702 orig_video_points screen_info 0 37702 NULL
154175 +enable_so_ls_jid_lm_lockstruct_37707 ls_jid lm_lockstruct 0 37707 NULL
154176 +enable_so_bfad_debugfs_lseek_fndecl_37724 bfad_debugfs_lseek fndecl 2 37724 NULL
154177 +enable_so_cciss_geometry_inquiry_fndecl_37730 cciss_geometry_inquiry fndecl 4 37730 NULL nohasharray
154178 +enable_so_max_net_bridge_mdb_htable_37730 max net_bridge_mdb_htable 0 37730 &enable_so_cciss_geometry_inquiry_fndecl_37730
154179 +enable_so_sk_wmem_queued_sock_37733 sk_wmem_queued sock 0 37733 NULL
154180 +enable_so_mon_bin_get_event_fndecl_37740 mon_bin_get_event fndecl 6-4 37740 NULL
154181 +enable_so_num_enh_eq_cfgs_wm8994_pdata_37752 num_enh_eq_cfgs wm8994_pdata 0 37752 NULL
154182 +enable_so_inode_in_dir_fndecl_37757 inode_in_dir fndecl 5-3 37757 NULL
154183 +enable_so_bufptr_addr_nm256_stream_37759 bufptr_addr nm256_stream 0 37759 NULL
154184 +enable_so_cache_read_procfs_fndecl_37761 cache_read_procfs fndecl 3 37761 NULL
154185 +enable_so_pvr2_ctrl_value_to_sym_internal_fndecl_37762 pvr2_ctrl_value_to_sym_internal fndecl 5 37762 NULL
154186 +enable_so_last_rx_rate_idx_sta_info_37768 last_rx_rate_idx sta_info 0 37768 NULL nohasharray
154187 +enable_so_length_acpi_object_buffer_37768 length acpi_object_buffer 0 37768 &enable_so_last_rx_rate_idx_sta_info_37768
154188 +enable_so_prot_length_se_cmd_37769 prot_length se_cmd 0 37769 NULL
154189 +enable_so_ds_tss_segment_32_37770 ds tss_segment_32 0 37770 NULL
154190 +enable_so_per_bio_data_size_dm_target_37772 per_bio_data_size dm_target 0 37772 NULL
154191 +enable_so_kvm_kvzalloc_fndecl_37773 kvm_kvzalloc fndecl 1 37773 NULL
154192 +enable_so_buf_size_usb_data_stream_37781 buf_size usb_data_stream 0 37781 NULL
154193 +enable_so_ext4_init_dot_dotdot_fndecl_37792 ext4_init_dot_dotdot fndecl 4-3-5 37792 NULL
154194 +enable_so_update_interval_frames_snd_card_asihpi_37794 update_interval_frames snd_card_asihpi 0 37794 NULL
154195 +enable_so_nilfs_sufile_read_fndecl_37800 nilfs_sufile_read fndecl 2 37800 NULL
154196 +enable_so_eo_get_last_eb_blk_ocfs2_extent_tree_operations_37802 eo_get_last_eb_blk ocfs2_extent_tree_operations 0 37802 NULL
154197 +enable_so_clock_panel_info_37807 clock panel_info 0 37807 NULL
154198 +enable_so_gid_tbl_len_ib_port_attr_37809 gid_tbl_len ib_port_attr 0 37809 NULL
154199 +enable_so_touchpad_num_ad714x_platform_data_37818 touchpad_num ad714x_platform_data 0 37818 NULL
154200 +enable_so_out_ep_snd_usb_midi_endpoint_info_37819 out_ep snd_usb_midi_endpoint_info 0 37819 NULL
154201 +enable_so_my_addr_len_drbd_connection_37828 my_addr_len drbd_connection 0 37828 NULL
154202 +enable_so_rbd_img_request_create_fndecl_37833 rbd_img_request_create fndecl 2-3 37833 NULL
154203 +enable_so_mru_syncppp_37835 mru syncppp 0 37835 NULL
154204 +enable_so_slot_width_mvs_chip_info_37839 slot_width mvs_chip_info 0 37839 NULL nohasharray
154205 +enable_so_ifc_len_ifconf_37839 ifc_len ifconf 0 37839 &enable_so_slot_width_mvs_chip_info_37839
154206 +enable_so___kfifo_skip_r_fndecl_37849 __kfifo_skip_r fndecl 2 37849 NULL
154207 +enable_so_iblock_get_bio_fndecl_37851 iblock_get_bio fndecl 2 37851 NULL
154208 +enable_so_ioread16be_fndecl_37854 ioread16be fndecl 0 37854 NULL
154209 +enable_so_usbat_read_block_fndecl_37858 usbat_read_block fndecl 3 37858 NULL
154210 +enable_so_nents_usnic_uiom_chunk_37860 nents usnic_uiom_chunk 0 37860 NULL
154211 +enable_so_last_txrate_idx_il_lq_sta_37864 last_txrate_idx il_lq_sta 0 37864 NULL
154212 +enable_so_assoclen_aead_request_37866 assoclen aead_request 0 37866 NULL
154213 +enable_so_xdr_copy_to_scratch_fndecl_37868 xdr_copy_to_scratch fndecl 2 37868 NULL
154214 +enable_so_btrfs_set_header_nritems_fndecl_37869 btrfs_set_header_nritems fndecl 2 37869 NULL
154215 +enable_so_num_node_state_fndecl_37870 num_node_state fndecl 0 37870 NULL
154216 +enable_so_ieee80211_if_fmt_fwded_mcast_fndecl_37874 ieee80211_if_fmt_fwded_mcast fndecl 3 37874 NULL
154217 +enable_so_hx8357_spi_write_then_read_fndecl_37879 hx8357_spi_write_then_read fndecl 3-5 37879 NULL
154218 +enable_so_leaf_delete_items_fndecl_37885 leaf_delete_items fndecl 5 37885 NULL
154219 +enable_so_dm_bufio_client_create_fndecl_37889 dm_bufio_client_create fndecl 2-4 37889 NULL
154220 +enable_so_gss_wrap_kerberos_fndecl_37890 gss_wrap_kerberos fndecl 2 37890 NULL
154221 +enable_so_bulk_in_ipheth_device_37894 bulk_in ipheth_device 0 37894 NULL nohasharray
154222 +enable_so_xfs_buf_get_uncached_fndecl_37894 xfs_buf_get_uncached fndecl 2 37894 &enable_so_bulk_in_ipheth_device_37894
154223 +enable_so_prod_xfs_alloc_arg_37897 prod xfs_alloc_arg 0 37897 NULL
154224 +enable_so_datalen_user_key_payload_37906 datalen user_key_payload 0 37906 NULL
154225 +enable_so_pasid_kfd_process_37907 pasid kfd_process 0 37907 NULL
154226 +enable_so_gfs2_iget_fndecl_37910 gfs2_iget fndecl 2 37910 NULL
154227 +enable_so_pvr2_i2c_basic_op_fndecl_37917 pvr2_i2c_basic_op fndecl 4-6 37917 NULL
154228 +enable_so_spk_ye_vardecl_37920 spk_ye vardecl 0 37920 NULL
154229 +enable_so_nested_vmx_store_msr_fndecl_37937 nested_vmx_store_msr fndecl 2 37937 NULL
154230 +enable_so_ep_urb_context_37938 ep urb_context 0 37938 NULL nohasharray
154231 +enable_so_num_escbs_asd_seq_data_37938 num_escbs asd_seq_data 0 37938 &enable_so_ep_urb_context_37938
154232 +enable_so_seq_write_fndecl_37946 seq_write fndecl 3 37946 NULL
154233 +enable_so_vblank_lo_lvds_dvo_timing_37949 vblank_lo lvds_dvo_timing 0 37949 NULL
154234 +enable_so_wpa_ie_len_islpci_bss_wpa_ie_37953 wpa_ie_len islpci_bss_wpa_ie 0 37953 NULL nohasharray
154235 +enable_so___handle_mm_fault_fndecl_37953 __handle_mm_fault fndecl 3 37953 &enable_so_wpa_ie_len_islpci_bss_wpa_ie_37953
154236 +enable_so_consume_size_vmci_qp_alloc_info_vmvm_37962 consume_size vmci_qp_alloc_info_vmvm 0 37962 NULL
154237 +enable_so_unmap_vmas_fndecl_37967 unmap_vmas fndecl 4-3 37967 NULL nohasharray
154238 +enable_so_mbox_write_fndecl_37967 mbox_write fndecl 3 37967 &enable_so_unmap_vmas_fndecl_37967
154239 +enable_so_ieee80211_if_write_uapsd_queues_fndecl_37973 ieee80211_if_write_uapsd_queues fndecl 3 37973 NULL
154240 +enable_so_key_search_fndecl_37982 key_search fndecl 0 37982 NULL
154241 +enable_so_count_nfsd_readres_37988 count nfsd_readres 0 37988 NULL
154242 +enable_so_arizona_set_fll_fndecl_37996 arizona_set_fll fndecl 3-4 37996 NULL nohasharray
154243 +enable_so_key_size_bpf_map_37996 key_size bpf_map 0 37996 &enable_so_arizona_set_fll_fndecl_37996
154244 +enable_so_bt_sock_stream_recvmsg_fndecl_37997 bt_sock_stream_recvmsg fndecl 3 37997 NULL
154245 +enable_so_icmp_manip_pkt_fndecl_38011 icmp_manip_pkt fndecl 4 38011 NULL
154246 +enable_so_il_vsync_v4l2_bt_timings_38013 il_vsync v4l2_bt_timings 0 38013 NULL
154247 +enable_so_l_len_xfs_flock64_38022 l_len xfs_flock64 0 38022 NULL nohasharray
154248 +enable_so_max_cmnds_vardecl_aic94xx_hwi_c_38022 max_cmnds vardecl_aic94xx_hwi.c 0 38022 &enable_so_l_len_xfs_flock64_38022
154249 +enable_so_sensb_res_len_nfc_target_38034 sensb_res_len nfc_target 0 38034 NULL
154250 +enable_so_get_cur_path_fndecl_38038 get_cur_path fndecl 2 38038 NULL
154251 +enable_so_ip6_tnl_change_mtu_fndecl_38041 ip6_tnl_change_mtu fndecl 2 38041 NULL
154252 +enable_so_DataUnits_partition_t_38043 DataUnits partition_t 0 38043 NULL
154253 +enable_so_open_devices_btrfs_fs_devices_38045 open_devices btrfs_fs_devices 0 38045 NULL nohasharray
154254 +enable_so_aac_convert_sgraw2_fndecl_38045 aac_convert_sgraw2 fndecl 4-2 38045 &enable_so_open_devices_btrfs_fs_devices_38045
154255 +enable_so_get_vmcore_size_fndecl_38046 get_vmcore_size fndecl 0-2-1 38046 NULL
154256 +enable_so_reference_rate_vardecl_xfi_c_38047 reference_rate vardecl_xfi.c 0 38047 NULL
154257 +enable_so_node_present_pages_pglist_data_38050 node_present_pages pglist_data 0 38050 NULL
154258 +enable_so_pending_buf_size_deflate_state_38053 pending_buf_size deflate_state 0 38053 NULL
154259 +enable_so_offset_drm_local_map_38055 offset drm_local_map 0 38055 NULL
154260 +enable_so_isd200_set_srb_fndecl_38056 isd200_set_srb fndecl 4 38056 NULL nohasharray
154261 +enable_so_nrpacks_vardecl_usbusx2yaudio_c_38056 nrpacks vardecl_usbusx2yaudio.c 0 38056 &enable_so_isd200_set_srb_fndecl_38056
154262 +enable_so_length_ipw_rx_packet_38058 length ipw_rx_packet 0 38058 NULL nohasharray
154263 +enable_so_sctp_auth_create_key_fndecl_38058 sctp_auth_create_key fndecl 1 38058 &enable_so_length_ipw_rx_packet_38058
154264 +enable_so_iscsi_create_session_fndecl_38060 iscsi_create_session fndecl 3 38060 NULL
154265 +enable_so_ubifs_iget_fndecl_38065 ubifs_iget fndecl 2 38065 NULL
154266 +enable_so_add_vol_fndecl_38066 add_vol fndecl 3-6 38066 NULL
154267 +enable_so_extent_fiemap_fndecl_38070 extent_fiemap fndecl 4-3 38070 NULL
154268 +enable_so_numPartitionMaps_logicalVolDesc_38073 numPartitionMaps logicalVolDesc 0 38073 NULL
154269 +enable_so_length_wpa_param_38074 length wpa_param 0 38074 NULL
154270 +enable_so_fb_bpp_vardecl_udl_fb_c_38075 fb_bpp vardecl_udl_fb.c 0 38075 NULL
154271 +enable_so_bd_group_ext4_buddy_38101 bd_group ext4_buddy 0 38101 NULL nohasharray
154272 +enable_so_la_bm_off_ocfs2_local_alloc_38101 la_bm_off ocfs2_local_alloc 0 38101 &enable_so_bd_group_ext4_buddy_38101
154273 +enable_so_data_size_il4965_firmware_pieces_38105 data_size il4965_firmware_pieces 0 38105 NULL
154274 +enable_so_host_mapping_level_fndecl_38115 host_mapping_level fndecl 0-2 38115 NULL
154275 +enable_so_wm8994_get_fll_config_fndecl_38117 wm8994_get_fll_config fndecl 3-4 38117 NULL
154276 +enable_so_rmtblkno_xfs_da_args_38121 rmtblkno xfs_da_args 0 38121 NULL
154277 +enable_so_sel_write_access_fndecl_38123 sel_write_access fndecl 3 38123 NULL
154278 +enable_so_actual_usbhs_pkt_38126 actual usbhs_pkt 0 38126 NULL
154279 +enable_so_len_rxd_desc_38127 len rxd_desc 0 38127 NULL
154280 +enable_so_usbhs_pipe_get_maxpacket_fndecl_38131 usbhs_pipe_get_maxpacket fndecl 0 38131 NULL
154281 +enable_so_sctp_setsockopt_associnfo_fndecl_38135 sctp_setsockopt_associnfo fndecl 3 38135 NULL
154282 +enable_so_rtw_os_xmit_resource_alloc23a_fndecl_38142 rtw_os_xmit_resource_alloc23a fndecl 3 38142 NULL
154283 +enable_so_nentries_ebt_replace_kernel_38149 nentries ebt_replace_kernel 0 38149 NULL
154284 +enable_so_btrfs_get_io_failure_record_fndecl_38153 btrfs_get_io_failure_record fndecl 3-2 38153 NULL
154285 +enable_so_il4965_hwrate_to_mac80211_idx_fndecl_38156 il4965_hwrate_to_mac80211_idx fndecl 1 38156 NULL
154286 +enable_so_read_interrupt_descriptor_fndecl_38165 read_interrupt_descriptor fndecl 2 38165 NULL
154287 +enable_so_st_read_fndecl_38176 st_read fndecl 3 38176 NULL
154288 +enable_so___mxt_read_reg_fndecl_38178 __mxt_read_reg fndecl 3 38178 NULL
154289 +enable_so_compat_dccp_setsockopt_fndecl_38188 compat_dccp_setsockopt fndecl 5 38188 NULL
154290 +enable_so_zone_end_strip_zone_38191 zone_end strip_zone 0 38191 NULL
154291 +enable_so_nf_ct_ext_create_fndecl_38195 nf_ct_ext_create fndecl 3 38195 NULL
154292 +enable_so_drm_property_create_fndecl_38196 drm_property_create fndecl 4 38196 NULL
154293 +enable_so_nilfs_cpfile_checkpoints_in_block_fndecl_38197 nilfs_cpfile_checkpoints_in_block fndecl 2-3 38197 NULL
154294 +enable_so_driver_data_i2c_device_id_38200 driver_data i2c_device_id 0 38200 NULL
154295 +enable_so_rx_offset_tg3_38201 rx_offset tg3 0 38201 NULL
154296 +enable_so___get_cur_name_and_parent_fndecl_38208 __get_cur_name_and_parent fndecl 2 38208 NULL
154297 +enable_so_pvr2_std_id_to_str_fndecl_38219 pvr2_std_id_to_str fndecl 2 38219 NULL
154298 +enable_so_ack_failures_wl1271_tx_hw_res_descr_38226 ack_failures wl1271_tx_hw_res_descr 0 38226 NULL
154299 +enable_so_target_alloc_sgl_fndecl_38227 target_alloc_sgl fndecl 3 38227 NULL
154300 +enable_so_frame_count_b43_txstatus_38232 frame_count b43_txstatus 0 38232 NULL nohasharray
154301 +enable_so_dvb_audio_write_fndecl_38232 dvb_audio_write fndecl 3 38232 &enable_so_frame_count_b43_txstatus_38232
154302 +enable_so_max_buf_size_tegra_spi_data_38233 max_buf_size tegra_spi_data 0 38233 NULL
154303 +enable_so_ipwireless_network_packet_received_fndecl_38238 ipwireless_network_packet_received fndecl 4 38238 NULL
154304 +enable_so_periodic_bytes_fndecl_38241 periodic_bytes fndecl 0 38241 NULL
154305 +enable_so_xfs_btree_reada_bufl_fndecl_38248 xfs_btree_reada_bufl fndecl 3-2 38248 NULL
154306 +enable_so_isd200_try_enum_fndecl_38250 isd200_try_enum fndecl 2 38250 NULL nohasharray
154307 +enable_so_name_len_ext2_dir_entry_2_38250 name_len ext2_dir_entry_2 0 38250 &enable_so_isd200_try_enum_fndecl_38250
154308 +enable_so_bdbars_count_intel8x0m_38253 bdbars_count intel8x0m 0 38253 NULL
154309 +enable_so_bLength_usb_cdc_country_functional_desc_38256 bLength usb_cdc_country_functional_desc 0 38256 NULL
154310 +enable_so_irnet_connect_confirm_fndecl_38277 irnet_connect_confirm fndecl 5 38277 NULL
154311 +enable_so_n_pages_vb2_vmalloc_buf_38278 n_pages vb2_vmalloc_buf 0 38278 NULL
154312 +enable_so_ipath_rcvegrbufsize_ipath_devdata_38283 ipath_rcvegrbufsize ipath_devdata 0 38283 NULL
154313 +enable_so_len_osd_attr_38284 len osd_attr 0 38284 NULL nohasharray
154314 +enable_so_header_length_fw_iso_packet_38284 header_length fw_iso_packet 0 38284 &enable_so_len_osd_attr_38284
154315 +enable_so_smk_write_ptrace_fndecl_38294 smk_write_ptrace fndecl 3 38294 NULL
154316 +enable_so_compat_arch_ptrace_fndecl_38298 compat_arch_ptrace fndecl 3 38298 NULL nohasharray
154317 +enable_so_alloc_smp_req_fndecl_38298 alloc_smp_req fndecl 1 38298 &enable_so_compat_arch_ptrace_fndecl_38298
154318 +enable_so_num_kcontrols_snd_soc_dapm_widget_38302 num_kcontrols snd_soc_dapm_widget 0 38302 NULL nohasharray
154319 +enable_so_ipw_get_event_log_len_fndecl_38302 ipw_get_event_log_len fndecl 0 38302 &enable_so_num_kcontrols_snd_soc_dapm_widget_38302
154320 +enable_so_geneve_xmit_skb_fndecl_38306 geneve_xmit_skb fndecl 13 38306 NULL
154321 +enable_so_height_zoran_v4l_settings_38307 height zoran_v4l_settings 0 38307 NULL
154322 +enable_so_bad_peb_count_ubi_attach_info_38310 bad_peb_count ubi_attach_info 0 38310 NULL
154323 +enable_so_ext4_get_block_write_fndecl_38313 ext4_get_block_write fndecl 2 38313 NULL nohasharray
154324 +enable_so_ftid_base_tid_info_38313 ftid_base tid_info 0 38313 &enable_so_ext4_get_block_write_fndecl_38313
154325 +enable_so_nr_siblings_perf_event_38320 nr_siblings perf_event 0 38320 NULL
154326 +enable_so_ob_max_size_mvumi_hba_38327 ob_max_size mvumi_hba 0 38327 NULL
154327 +enable_so_ieee80211_if_fmt_estab_plinks_fndecl_38329 ieee80211_if_fmt_estab_plinks fndecl 3 38329 NULL
154328 +enable_so_xfs_vn_fiemap_fndecl_38336 xfs_vn_fiemap fndecl 3-4 38336 NULL
154329 +enable_so_iov_len_sg_iovec_38337 iov_len sg_iovec 0 38337 NULL
154330 +enable_so_num_sys_eqs_mlx4_dev_cap_38340 num_sys_eqs mlx4_dev_cap 0 38340 NULL
154331 +enable_so_get_first_ref_fndecl_38342 get_first_ref fndecl 2 38342 NULL
154332 +enable_so_cma_bitmap_aligned_offset_fndecl_38343 cma_bitmap_aligned_offset fndecl 0-2 38343 NULL
154333 +enable_so_len_nft_data_desc_38346 len nft_data_desc 0 38346 NULL
154334 +enable_so_pf_fhlen_nfsd4_putfh_38348 pf_fhlen nfsd4_putfh 0 38348 NULL
154335 +enable_so_x86_swiotlb_free_coherent_fndecl_38350 x86_swiotlb_free_coherent fndecl 2 38350 NULL
154336 +enable_so_len_ethtool_regs_38354 len ethtool_regs 0 38354 NULL
154337 +enable_so_xfs_dir3_free_get_buf_fndecl_38355 xfs_dir3_free_get_buf fndecl 2 38355 NULL
154338 +enable_so_shash_descsize_dm_verity_38366 shash_descsize dm_verity 0 38366 NULL
154339 +enable_so_flush_buffer_fndecl_38367 flush_buffer fndecl 2 38367 NULL
154340 +enable_so_print_devstats_dot11ACKFailureCount_fndecl_38368 print_devstats_dot11ACKFailureCount fndecl 3 38368 NULL
154341 +enable_so_ri_length_gfs2_rindex_38375 ri_length gfs2_rindex 0 38375 NULL
154342 +enable_so_chrdev_setup_rx_fndecl_38384 chrdev_setup_rx fndecl 2 38384 NULL
154343 +enable_so_ext4_ext_rm_leaf_fndecl_38397 ext4_ext_rm_leaf fndecl 5 38397 NULL
154344 +enable_so_ath6kl_sdio_alloc_prep_scat_req_fndecl_38401 ath6kl_sdio_alloc_prep_scat_req fndecl 2 38401 NULL
154345 +enable_so__c4iw_write_mem_dma_fndecl_38404 _c4iw_write_mem_dma fndecl 3 38404 NULL
154346 +enable_so_parent_offset_isofs_fid_38408 parent_offset isofs_fid 0 38408 NULL
154347 +enable_so_dwc3_mode_write_fndecl_38414 dwc3_mode_write fndecl 3 38414 NULL
154348 +enable_so___rocker_port_mem_alloc_fndecl_38416 __rocker_port_mem_alloc fndecl 4 38416 NULL
154349 +enable_so_xdr_xcode_array2_fndecl_38417 xdr_xcode_array2 fndecl 2 38417 NULL
154350 +enable_so_snd_mask_min_fndecl_38418 snd_mask_min fndecl 0 38418 NULL
154351 +enable_so_todo_dmxdev_filter_38423 todo dmxdev_filter 0 38423 NULL
154352 +enable_so_remap_exception_fndecl_38426 remap_exception fndecl 4 38426 NULL
154353 +enable_so_mwifiex_get_rates_from_cfg80211_fndecl_38427 mwifiex_get_rates_from_cfg80211 fndecl 0 38427 NULL
154354 +enable_so_ide_set_dma_mode_fndecl_38428 ide_set_dma_mode fndecl 2 38428 NULL
154355 +enable_so_m_chunk_size_drxk_state_38431 m_chunk_size drxk_state 0 38431 NULL
154356 +enable_so_r820t_write_fndecl_38436 r820t_write fndecl 4 38436 NULL
154357 +enable_so_ocfs2_iterate_xattr_buckets_fndecl_38437 ocfs2_iterate_xattr_buckets fndecl 2 38437 NULL
154358 +enable_so_cw1200_sdio_memcpy_toio_fndecl_38442 cw1200_sdio_memcpy_toio fndecl 4 38442 NULL
154359 +enable_so_vxge_rx_alloc_fndecl_38443 vxge_rx_alloc fndecl 3 38443 NULL
154360 +enable_so___ieee80211_tx_skb_tid_band_fndecl_38444 __ieee80211_tx_skb_tid_band fndecl 3 38444 NULL
154361 +enable_so_slave_count_w1_master_38454 slave_count w1_master 0 38454 NULL
154362 +enable_so_a8293_i2c_fndecl_38457 a8293_i2c fndecl 3 38457 NULL
154363 +enable_so_blocksize_gss_krb5_enctype_38477 blocksize gss_krb5_enctype 0 38477 NULL
154364 +enable_so___fuse_request_alloc_fndecl_38479 __fuse_request_alloc fndecl 1 38479 NULL
154365 +enable_so_override_release_fndecl_38483 override_release fndecl 2 38483 NULL
154366 +enable_so_copy_block_fndecl_38500 copy_block fndecl 3 38500 NULL
154367 +enable_so_create_rcom_fndecl_38501 create_rcom fndecl 4 38501 NULL
154368 +enable_so_nsm_get_handle_fndecl_38506 nsm_get_handle fndecl 4 38506 NULL
154369 +enable_so_udp_recvmsg_fndecl_38509 udp_recvmsg fndecl 3 38509 NULL nohasharray
154370 +enable_so_msdu_len_htt_rx_offload_msdu_38509 msdu_len htt_rx_offload_msdu 0 38509 &enable_so_udp_recvmsg_fndecl_38509
154371 +enable_so_isofs_readpages_fndecl_38512 isofs_readpages fndecl 4 38512 NULL
154372 +enable_so_hugetlb_unreserve_pages_fndecl_38514 hugetlb_unreserve_pages fndecl 3 38514 NULL
154373 +enable_so_prepare_merge_dm_exception_store_type_38515 prepare_merge dm_exception_store_type 0 38515 NULL
154374 +enable_so_emu_setup_memblk_fndecl_38524 emu_setup_memblk fndecl 5 38524 NULL
154375 +enable_so_set_extent_dirty_fndecl_38529 set_extent_dirty fndecl 3-2 38529 NULL
154376 +enable_so_rx_ring_dma_addr_sc92031_priv_38536 rx_ring_dma_addr sc92031_priv 0 38536 NULL nohasharray
154377 +enable_so_max_pde_used_radeon_vm_38536 max_pde_used radeon_vm 0 38536 &enable_so_rx_ring_dma_addr_sc92031_priv_38536
154378 +enable_so_prism2_ap_translate_scan_fndecl_38540 prism2_ap_translate_scan fndecl 0 38540 NULL
154379 +enable_so_hw_channels_sh_cmt_device_38544 hw_channels sh_cmt_device 0 38544 NULL
154380 +enable_so_clk_fd_set_rate_fndecl_38545 clk_fd_set_rate fndecl 2-3 38545 NULL
154381 +enable_so_ulist_add_merge_fndecl_38547 ulist_add_merge fndecl 2 38547 NULL
154382 +enable_so_set_stream_hw_fndecl_38553 set_stream_hw fndecl 3 38553 NULL
154383 +enable_so_rx_max_size_rtl_usb_38560 rx_max_size rtl_usb 0 38560 NULL
154384 +enable_so_ext2_alloc_blocks_fndecl_38562 ext2_alloc_blocks fndecl 2 38562 NULL nohasharray
154385 +enable_so_hysdn_conf_write_fndecl_38562 hysdn_conf_write fndecl 3 38562 &enable_so_ext2_alloc_blocks_fndecl_38562
154386 +enable_so_offset_writequeue_entry_38565 offset writequeue_entry 0 38565 NULL
154387 +enable_so_this_header_vardecl_initramfs_c_38567 this_header vardecl_initramfs.c 0 38567 NULL
154388 +enable_so_smk_write_load2_fndecl_38568 smk_write_load2 fndecl 3 38568 NULL nohasharray
154389 +enable_so_memblock_alloc_base_nid_fndecl_38568 memblock_alloc_base_nid fndecl 1 38568 &enable_so_smk_write_load2_fndecl_38568
154390 +enable_so_setup_dma_urb_38573 setup_dma urb 0 38573 NULL nohasharray
154391 +enable_so_len_port_buffer_38573 len port_buffer 0 38573 &enable_so_setup_dma_urb_38573
154392 +enable_so_block_mtu_hci_dev_38575 block_mtu hci_dev 0 38575 NULL
154393 +enable_so_data_dma_aiptek_38577 data_dma aiptek 0 38577 NULL
154394 +enable_so_rsr_ct_atc_38578 rsr ct_atc 0 38578 NULL
154395 +enable_so_usVActive__ATOM_DTD_FORMAT_38581 usVActive _ATOM_DTD_FORMAT 0 38581 NULL
154396 +enable_so_gdm_usb_hci_send_fndecl_38585 gdm_usb_hci_send fndecl 3 38585 NULL
154397 +enable_so_print_prefix_fndecl_38595 print_prefix fndecl 0 38595 NULL
154398 +enable_so_details_root_dm_pool_metadata_38597 details_root dm_pool_metadata 0 38597 NULL
154399 +enable_so_proc_pid_readlink_fndecl_38601 proc_pid_readlink fndecl 3 38601 NULL
154400 +enable_so_s_cgmask_ufs_sb_private_info_38603 s_cgmask ufs_sb_private_info 0 38603 NULL
154401 +enable_so_reiserfs_posix_acl_from_disk_fndecl_38604 reiserfs_posix_acl_from_disk fndecl 2 38604 NULL nohasharray
154402 +enable_so_maxburst_usb_ep_38604 maxburst usb_ep 0 38604 &enable_so_reiserfs_posix_acl_from_disk_fndecl_38604 nohasharray
154403 +enable_so_v_offset_v2_38604 v offset_v2 0 38604 &enable_so_maxburst_usb_ep_38604
154404 +enable_so_fpWidth_nvidia_par_38605 fpWidth nvidia_par 0 38605 NULL nohasharray
154405 +enable_so_perf_num_counters_fndecl_38605 perf_num_counters fndecl 0 38605 &enable_so_fpWidth_nvidia_par_38605
154406 +enable_so_p_arglen_rpc_procinfo_38611 p_arglen rpc_procinfo 0 38611 NULL
154407 +enable_so_objectid_reiserfs_iget_args_38612 objectid reiserfs_iget_args 0 38612 NULL
154408 +enable_so_pageshift_sddr55_card_info_38623 pageshift sddr55_card_info 0 38623 NULL
154409 +enable_so_ar5523_config_multi_fndecl_38630 ar5523_config_multi fndecl 4 38630 NULL
154410 +enable_so_level_kvm_shadow_walk_iterator_38631 level kvm_shadow_walk_iterator 0 38631 NULL
154411 +enable_so_vmci_qp_broker_alloc_fndecl_38635 vmci_qp_broker_alloc fndecl 5-6 38635 NULL
154412 +enable_so_size_bucket_table_38640 size bucket_table 0 38640 NULL
154413 +enable_so_f2fs_seek_block_fndecl_38641 f2fs_seek_block fndecl 2 38641 NULL
154414 +enable_so_set_freq_fndecl_38651 set_freq fndecl 2 38651 NULL
154415 +enable_so_truncate_pagecache_range_fndecl_38652 truncate_pagecache_range fndecl 2-3 38652 NULL
154416 +enable_so_str_read_fndecl_38656 str_read fndecl 4 38656 NULL
154417 +enable_so_tcp_metrics_hash_log_vardecl_tcp_metrics_c_38657 tcp_metrics_hash_log vardecl_tcp_metrics.c 0 38657 NULL
154418 +enable_so_rx_buffer_len_igbvf_adapter_38659 rx_buffer_len igbvf_adapter 0 38659 NULL
154419 +enable_so_fll_in_wm8900_priv_38661 fll_in wm8900_priv 0 38661 NULL
154420 +enable_so_ext4_setent_fndecl_38662 ext4_setent fndecl 3 38662 NULL
154421 +enable_so_cm4040_read_fndecl_38663 cm4040_read fndecl 3 38663 NULL
154422 +enable_so_def_bpp_mb862xx_gc_mode_38668 def_bpp mb862xx_gc_mode 0 38668 NULL
154423 +enable_so_irq_alloc_hwirqs_fndecl_38673 irq_alloc_hwirqs fndecl 1 38673 NULL
154424 +enable_so_v9fs_alloc_rdir_buf_fndecl_38679 v9fs_alloc_rdir_buf fndecl 2 38679 NULL
154425 +enable_so_sg_read_oxfer_fndecl_38687 sg_read_oxfer fndecl 3 38687 NULL
154426 +enable_so_sc_uaddr_len_nfs4_setclientid_38689 sc_uaddr_len nfs4_setclientid 0 38689 NULL
154427 +enable_so_len_irda_device_list_38690 len irda_device_list 0 38690 NULL
154428 +enable_so_bulk_in_ep_irda_usb_cb_38699 bulk_in_ep irda_usb_cb 0 38699 NULL
154429 +enable_so_get_user_pages_fast_fndecl_38708 get_user_pages_fast fndecl 0-1 38708 NULL
154430 +enable_so_cxgbi_ddp_init_fndecl_38714 cxgbi_ddp_init fndecl 4 38714 NULL
154431 +enable_so_free_index_fndecl_38718 free_index fndecl 3 38718 NULL
154432 +enable_so_if_write_fndecl_38719 if_write fndecl 3 38719 NULL
154433 +enable_so_hactive_hi_oaktrail_timing_info_38738 hactive_hi oaktrail_timing_info 0 38738 NULL
154434 +enable_so_vram_vardecl_lxfb_core_c_38739 vram vardecl_lxfb_core.c 0 38739 NULL
154435 +enable_so_ports_max_wusbhc_38743 ports_max wusbhc 0 38743 NULL
154436 +enable_so___page_file_index_fndecl_38744 __page_file_index fndecl 0 38744 NULL
154437 +enable_so_max_num_clients_vardecl_ntb_transport_c_38745 max_num_clients vardecl_ntb_transport.c 0 38745 NULL
154438 +enable_so_ssd1307fb_alloc_array_fndecl_38751 ssd1307fb_alloc_array fndecl 1 38751 NULL
154439 +enable_so_ts_tlb_preload_count_gru_thread_state_38752 ts_tlb_preload_count gru_thread_state 0 38752 NULL nohasharray
154440 +enable_so_myri10ge_small_bytes_vardecl_myri10ge_c_38752 myri10ge_small_bytes vardecl_myri10ge.c 0 38752 &enable_so_ts_tlb_preload_count_gru_thread_state_38752
154441 +enable_so_scsi_format_opcode_name_fndecl_38753 scsi_format_opcode_name fndecl 0-2 38753 NULL nohasharray
154442 +enable_so_buffer_from_user_fndecl_38753 buffer_from_user fndecl 3 38753 &enable_so_scsi_format_opcode_name_fndecl_38753
154443 +enable_so_tag_ctrl_info_amd8111e_rx_dr_38754 tag_ctrl_info amd8111e_rx_dr 0 38754 NULL
154444 +enable_so_t4_max_iq_size_c4iw_hw_queue_38756 t4_max_iq_size c4iw_hw_queue 0 38756 NULL
154445 +enable_so_nr_pages_max_splice_pipe_desc_38758 nr_pages_max splice_pipe_desc 0 38758 NULL
154446 +enable_so_egr_start_sge_38761 egr_start sge 0 38761 NULL
154447 +enable_so_default_advmss_dst_ops_38765 default_advmss dst_ops 0 38765 NULL
154448 +enable_so_sd_blocks_per_bitmap_gfs2_sbd_38771 sd_blocks_per_bitmap gfs2_sbd 0 38771 NULL
154449 +enable_so_ih_blkno_ocfs2_inode_handle_38779 ih_blkno ocfs2_inode_handle 0 38779 NULL
154450 +enable_so_height_cx231xx_38782 height cx231xx 0 38782 NULL
154451 +enable_so_spi_read_buf_fndecl_38792 spi_read_buf fndecl 2 38792 NULL
154452 +enable_so_get_indirect_ea_fndecl_38798 get_indirect_ea fndecl 4-3 38798 NULL
154453 +enable_so_ioread32_fndecl_38804 ioread32 fndecl 0 38804 NULL
154454 +enable_so_raw6_getfrag_fndecl_38805 raw6_getfrag fndecl 3-4 38805 NULL
154455 +enable_so_taglen_compound_hdr_38807 taglen compound_hdr 0 38807 NULL
154456 +enable_so_maxpacksize_snd_usX2Y_substream_38808 maxpacksize snd_usX2Y_substream 0 38808 NULL
154457 +enable_so_SYSC_sendto_fndecl_38815 SYSC_sendto fndecl 6 38815 NULL
154458 +enable_so_vlan_tci_sk_buff_38825 vlan_tci sk_buff 0 38825 NULL
154459 +enable_so_user_read_fndecl_38842 user_read fndecl 3 38842 NULL
154460 +enable_so_do_fault_fndecl_38845 do_fault fndecl 3 38845 NULL
154461 +enable_so_memblock_alloc_fndecl_38847 memblock_alloc fndecl 2-1 38847 NULL
154462 +enable_so_logfs_fsync_fndecl_38849 logfs_fsync fndecl 2 38849 NULL
154463 +enable_so_datablob_len_encrypted_key_payload_38850 datablob_len encrypted_key_payload 0 38850 NULL
154464 +enable_so_unix_set_peek_off_fndecl_38852 unix_set_peek_off fndecl 2 38852 NULL
154465 +enable_so_srs_nslot_sptlrpc_rule_set_38854 srs_nslot sptlrpc_rule_set 0 38854 NULL
154466 +enable_so_dbg_status_buf_fndecl_38857 dbg_status_buf fndecl 2 38857 NULL
154467 +enable_so_mask_mthca_alloc_38874 mask mthca_alloc 0 38874 NULL nohasharray
154468 +enable_so_if_sdio_handle_data_fndecl_38874 if_sdio_handle_data fndecl 3 38874 &enable_so_mask_mthca_alloc_38874
154469 +enable_so_wmi_set_ie_fndecl_38876 wmi_set_ie fndecl 3 38876 NULL
154470 +enable_so_mmc_spi_skip_fndecl_38879 mmc_spi_skip fndecl 3 38879 NULL
154471 +enable_so_static_prio_task_struct_38880 static_prio task_struct 0 38880 NULL
154472 +enable_so_atalk_route_packet_fndecl_38886 atalk_route_packet fndecl 5-4 38886 NULL
154473 +enable_so_read_dummy_spi_nor_38888 read_dummy spi_nor 0 38888 NULL
154474 +enable_so_num_bna_intr_info_38889 num bna_intr_info 0 38889 NULL
154475 +enable_so_ieee80211_aes_gmac_fndecl_38891 ieee80211_aes_gmac fndecl 5 38891 NULL
154476 +enable_so_sg_width_mvs_chip_info_38900 sg_width mvs_chip_info 0 38900 NULL
154477 +enable_so_wr_buflen_nfsd4_write_38903 wr_buflen nfsd4_write 0 38903 NULL
154478 +enable_so_generic_elem_len_local_info_38904 generic_elem_len local_info 0 38904 NULL
154479 +enable_so_surface_bpp_drm_fb_helper_surface_size_38906 surface_bpp drm_fb_helper_surface_size 0 38906 NULL
154480 +enable_so_dst_ci_command_fndecl_38908 dst_ci_command fndecl 4 38908 NULL nohasharray
154481 +enable_so_scsi_get_vpd_page_fndecl_38908 scsi_get_vpd_page fndecl 4 38908 &enable_so_dst_ci_command_fndecl_38908
154482 +enable_so_pgctrl_write_fndecl_38918 pgctrl_write fndecl 3 38918 NULL
154483 +enable_so_qlcnic_diag_free_res_fndecl_38922 qlcnic_diag_free_res fndecl 2 38922 NULL
154484 +enable_so_max_window_tcp_sock_38923 max_window tcp_sock 0 38923 NULL
154485 +enable_so_data_size_ms_system_item_38924 data_size ms_system_item 0 38924 NULL
154486 +enable_so_usb_sg_init_fndecl_38925 usb_sg_init fndecl 7-3-6 38925 NULL
154487 +enable_so_refresh_drm_cmdline_mode_38926 refresh drm_cmdline_mode 0 38926 NULL
154488 +enable_so_seek_holedata_direct_fndecl_38928 seek_holedata_direct fndecl 0-2 38928 NULL
154489 +enable_so_ack_failures_wsm_tx_confirm_38930 ack_failures wsm_tx_confirm 0 38930 NULL
154490 +enable_so_depth_cx231xx_fmt_38940 depth cx231xx_fmt 0 38940 NULL
154491 +enable_so_pcm_open_fndecl_38941 pcm_open fndecl 2 38941 NULL
154492 +enable_so_in_length_nd_cmd_set_config_hdr_38954 in_length nd_cmd_set_config_hdr 0 38954 NULL
154493 +enable_so_bpp_vmw_fb_par_38955 bpp vmw_fb_par 0 38955 NULL
154494 +enable_so_uregbase_qib_devdata_38972 uregbase qib_devdata 0 38972 NULL
154495 +enable_so_cdrom_read_cdda_fndecl_38973 cdrom_read_cdda fndecl 4 38973 NULL
154496 +enable_so_hsc_read_fndecl_38991 hsc_read fndecl 3 38991 NULL
154497 +enable_so___record_ref_fndecl_39000 __record_ref fndecl 2 39000 NULL
154498 +enable_so_tlv_len_nfc_llcp_sdp_tlv_39007 tlv_len nfc_llcp_sdp_tlv 0 39007 NULL
154499 +enable_so_dram_end_intel_sst_drv_39008 dram_end intel_sst_drv 0 39008 NULL
154500 +enable_so_num_ports_mlx5_general_caps_39015 num_ports mlx5_general_caps 0 39015 NULL nohasharray
154501 +enable_so_trigger_request_store_fndecl_39015 trigger_request_store fndecl 4 39015 &enable_so_num_ports_mlx5_general_caps_39015
154502 +enable_so_usbat_flash_write_data_fndecl_39018 usbat_flash_write_data fndecl 4 39018 NULL
154503 +enable_so_dlfb_submit_urb_fndecl_39028 dlfb_submit_urb fndecl 3 39028 NULL
154504 +enable_so_alloc_send_rmpp_list_fndecl_39029 alloc_send_rmpp_list fndecl 2 39029 NULL
154505 +enable_so_at25_ee_read_fndecl_39032 at25_ee_read fndecl 3-4 39032 NULL nohasharray
154506 +enable_so_video_pbase_osd_info_39032 video_pbase osd_info 0 39032 &enable_so_at25_ee_read_fndecl_39032 nohasharray
154507 +enable_so_ath6kl_set_ap_probe_resp_ies_fndecl_39032 ath6kl_set_ap_probe_resp_ies fndecl 3 39032 &enable_so_video_pbase_osd_info_39032
154508 +enable_so_fwnet_receive_packet_fndecl_39034 fwnet_receive_packet fndecl 9 39034 NULL
154509 +enable_so_reserve_st_proto_s_39036 reserve st_proto_s 0 39036 NULL
154510 +enable_so_fat_readpages_fndecl_39045 fat_readpages fndecl 4 39045 NULL
154511 +enable_so_ttm_agp_tt_create_fndecl_39056 ttm_agp_tt_create fndecl 3 39056 NULL
154512 +enable_so_ncp_fsync_fndecl_39057 ncp_fsync fndecl 2 39057 NULL
154513 +enable_so_frameLen_rx_desc_39058 frameLen rx_desc 0 39058 NULL
154514 +enable_so_n_buckets_bpf_htab_39067 n_buckets bpf_htab 0 39067 NULL
154515 +enable_so_iscsit_handle_immediate_data_fndecl_39071 iscsit_handle_immediate_data fndecl 3 39071 NULL
154516 +enable_so_max_rules_crush_map_39073 max_rules crush_map 0 39073 NULL
154517 +enable_so_usbatm_write_cells_fndecl_39074 usbatm_write_cells fndecl 0 39074 NULL
154518 +enable_so_frame_len_b43_rxhdr_fw4_39076 frame_len b43_rxhdr_fw4 0 39076 NULL
154519 +enable_so_sparse_early_usemaps_alloc_node_fndecl_39084 sparse_early_usemaps_alloc_node fndecl 4 39084 NULL
154520 +enable_so_s_meta_file_loc_udf_meta_data_39085 s_meta_file_loc udf_meta_data 0 39085 NULL
154521 +enable_so_sge_rx_fndecl_39089 sge_rx fndecl 3 39089 NULL
154522 +enable_so_d0_vring_rx_dma_39093 d0 vring_rx_dma 0 39093 NULL
154523 +enable_so_xillybus_write_fndecl_39102 xillybus_write fndecl 3 39102 NULL
154524 +enable_so_audio_ins_vx_core_39112 audio_ins vx_core 0 39112 NULL
154525 +enable_so_bg_bits_ocfs2_group_desc_39116 bg_bits ocfs2_group_desc 0 39116 NULL
154526 +enable_so_fat_direct_IO_fndecl_39117 fat_direct_IO fndecl 3 39117 NULL
154527 +enable_so_rl_namelen_rcom_lock_39122 rl_namelen rcom_lock 0 39122 NULL
154528 +enable_so_sisfb_mode_rate_to_dclock_fndecl_39123 sisfb_mode_rate_to_dclock fndecl 0 39123 NULL
154529 +enable_so_bytes_per_datum_iio_buffer_39125 bytes_per_datum iio_buffer 0 39125 NULL
154530 +enable_so_regcache_rbtree_write_fndecl_39126 regcache_rbtree_write fndecl 2 39126 NULL
154531 +enable_so_calc_memmap_size_fndecl_39130 calc_memmap_size fndecl 0-2-1 39130 NULL nohasharray
154532 +enable_so_simple_transaction_get_fndecl_39130 simple_transaction_get fndecl 3 39130 &enable_so_calc_memmap_size_fndecl_39130
154533 +enable_so_system_sample_rate_hdsp_39140 system_sample_rate hdsp 0 39140 NULL
154534 +enable_so_drvr_sglimit_blogic_adapter_39142 drvr_sglimit blogic_adapter 0 39142 NULL
154535 +enable_so_mmc_test_buffer_transfer_fndecl_39150 mmc_test_buffer_transfer fndecl 4 39150 NULL
154536 +enable_so_raid56_parity_alloc_scrub_rbio_fndecl_39153 raid56_parity_alloc_scrub_rbio fndecl 4 39153 NULL
154537 +enable_so_log_root_btrfs_super_block_39157 log_root btrfs_super_block 0 39157 NULL
154538 +enable_so_ath6kl_tm_rx_event_fndecl_39163 ath6kl_tm_rx_event fndecl 3 39163 NULL
154539 +enable_so_num_mcg_mlx4_profile_39164 num_mcg mlx4_profile 0 39164 NULL
154540 +enable_so_ext2_try_to_allocate_with_rsv_fndecl_39166 ext2_try_to_allocate_with_rsv fndecl 0-4 39166 NULL
154541 +enable_so_ast_gem_create_fndecl_39167 ast_gem_create fndecl 2 39167 NULL
154542 +enable_so_blf_len_xfs_buf_log_format_39169 blf_len xfs_buf_log_format 0 39169 NULL
154543 +enable_so_qsize_inet_frags_39172 qsize inet_frags 0 39172 NULL
154544 +enable_so_cfg80211_roamed_bss_fndecl_39173 cfg80211_roamed_bss fndecl 6-4 39173 NULL
154545 +enable_so_grab_nat_entry_fndecl_39177 grab_nat_entry fndecl 2 39177 NULL
154546 +enable_so_cyttsp4_probe_fndecl_39178 cyttsp4_probe fndecl 4 39178 NULL
154547 +enable_so_l2cap_sock_setsockopt_fndecl_39180 l2cap_sock_setsockopt fndecl 5 39180 NULL
154548 +enable_so_mthca_buddy_init_fndecl_39181 mthca_buddy_init fndecl 2 39181 NULL
154549 +enable_so_skb_put_fndecl_39184 skb_put fndecl 2 39184 NULL
154550 +enable_so_n_gma_clock_t_39192 n gma_clock_t 0 39192 NULL
154551 +enable_so_udc_create_dma_chain_fndecl_39194 udc_create_dma_chain fndecl 3 39194 NULL
154552 +enable_so_maxentry_xtheader_39202 maxentry xtheader 0 39202 NULL
154553 +enable_so_mon_bin_compat_ioctl_fndecl_39209 mon_bin_compat_ioctl fndecl 3 39209 NULL
154554 +enable_so_len_vmci_datagram_snd_rcv_info_39211 len vmci_datagram_snd_rcv_info 0 39211 NULL
154555 +enable_so_ieee80211_skb_resize_fndecl_39216 ieee80211_skb_resize fndecl 3 39216 NULL
154556 +enable_so_seq_buf_to_user_fndecl_39222 seq_buf_to_user fndecl 3 39222 NULL
154557 +enable_so_offset_scatter_walk_39226 offset scatter_walk 0 39226 NULL
154558 +enable_so_max_reqs_kioctx_39227 max_reqs kioctx 0 39227 NULL
154559 +enable_so_afs_extract_data_fndecl_39238 afs_extract_data fndecl 5 39238 NULL
154560 +enable_so_remote_mps_l2cap_chan_39250 remote_mps l2cap_chan 0 39250 NULL nohasharray
154561 +enable_so_mon_buff_area_fill_fndecl_39250 mon_buff_area_fill fndecl 3 39250 &enable_so_remote_mps_l2cap_chan_39250
154562 +enable_so_sg_kmalloc_fndecl_39251 sg_kmalloc fndecl 1 39251 NULL
154563 +enable_so_btrfs_issue_discard_fndecl_39257 btrfs_issue_discard fndecl 3-2 39257 NULL
154564 +enable_so___iommu_alloc_buffer_fndecl_39259 __iommu_alloc_buffer fndecl 2 39259 NULL
154565 +enable_so_data_offset_napi_gro_cb_39263 data_offset napi_gro_cb 0 39263 NULL
154566 +enable_so_soc_codec_reg_show_fndecl_39277 soc_codec_reg_show fndecl 3 39277 NULL
154567 +enable_so_idata_dma_usb_xpad_39278 idata_dma usb_xpad 0 39278 NULL
154568 +enable_so_size_tomoyo_condition_39281 size tomoyo_condition 0 39281 NULL
154569 +enable_so_find_parent_nodes_fndecl_39282 find_parent_nodes fndecl 3 39282 NULL
154570 +enable_so_ant_type_iwl_scale_tbl_info_39287 ant_type iwl_scale_tbl_info 0 39287 NULL
154571 +enable_so_bi_sector_bvec_merge_data_39289 bi_sector bvec_merge_data 0 39289 NULL
154572 +enable_so_input_bits_to_string_fndecl_39294 input_bits_to_string fndecl 0 39294 NULL
154573 +enable_so_page_size_msb_data_39297 page_size msb_data 0 39297 NULL nohasharray
154574 +enable_so_encoding_p_compressed_bm_39297 encoding p_compressed_bm 0 39297 &enable_so_page_size_msb_data_39297 nohasharray
154575 +enable_so_max_vfi_lpfc_max_cfg_param_39297 max_vfi lpfc_max_cfg_param 0 39297 &enable_so_encoding_p_compressed_bm_39297
154576 +enable_so_sel_make_perm_files_fndecl_39298 sel_make_perm_files fndecl 2 39298 NULL
154577 +enable_so_do_launder_page_fndecl_39306 do_launder_page fndecl 0 39306 NULL
154578 +enable_so_SYSC_flistxattr_fndecl_39312 SYSC_flistxattr fndecl 3 39312 NULL
154579 +enable_so_SYSC_sched_setaffinity_fndecl_39317 SYSC_sched_setaffinity fndecl 2 39317 NULL
154580 +enable_so_len_buflist_39320 len buflist 0 39320 NULL
154581 +enable_so_depth_tw68_format_39322 depth tw68_format 0 39322 NULL nohasharray
154582 +enable_so_iterate_irefs_fndecl_39322 iterate_irefs fndecl 1 39322 &enable_so_depth_tw68_format_39322
154583 +enable_so_soc_camera_read_fndecl_39324 soc_camera_read fndecl 3 39324 NULL
154584 +enable_so_size_bts_action_39331 size bts_action 0 39331 NULL
154585 +enable_so_dma_in_mceusb_dev_39335 dma_in mceusb_dev 0 39335 NULL nohasharray
154586 +enable_so_page_jfs_log_39335 page jfs_log 0 39335 &enable_so_dma_in_mceusb_dev_39335 nohasharray
154587 +enable_so_isdn_ppp_read_fndecl_39335 isdn_ppp_read fndecl 4 39335 &enable_so_page_jfs_log_39335
154588 +enable_so_nilfs_sufile_segment_usages_in_block_fndecl_39336 nilfs_sufile_segment_usages_in_block fndecl 2-3 39336 NULL
154589 +enable_so_tx_pipe_brcmf_usbdev_info_39337 tx_pipe brcmf_usbdev_info 0 39337 NULL nohasharray
154590 +enable_so_num_channels_hw_mode_spec_39337 num_channels hw_mode_spec 0 39337 &enable_so_tx_pipe_brcmf_usbdev_info_39337 nohasharray
154591 +enable_so_iwl_dbgfs_echo_test_write_fndecl_39337 iwl_dbgfs_echo_test_write fndecl 3 39337 &enable_so_num_channels_hw_mode_spec_39337
154592 +enable_so_musb_softconnect_write_fndecl_39339 musb_softconnect_write fndecl 3 39339 NULL
154593 +enable_so_busaddr_drm_dma_handle_39348 busaddr drm_dma_handle 0 39348 NULL
154594 +enable_so_ksm_might_need_to_copy_fndecl_39350 ksm_might_need_to_copy fndecl 3 39350 NULL
154595 +enable_so_efs_validate_vh_fndecl_39352 efs_validate_vh fndecl 0 39352 NULL
154596 +enable_so_tpm_read_fndecl_39355 tpm_read fndecl 3 39355 NULL
154597 +enable_so_hub_status_data_hc_driver_39357 hub_status_data hc_driver 0 39357 NULL nohasharray
154598 +enable_so_rbd_obj_request_create_fndecl_39357 rbd_obj_request_create fndecl 3-2 39357 &enable_so_hub_status_data_hc_driver_39357
154599 +enable_so_tx_ndp_modulus_cdc_ncm_ctx_39369 tx_ndp_modulus cdc_ncm_ctx 0 39369 NULL
154600 +enable_so_num_frames_camera_data_39372 num_frames camera_data 0 39372 NULL
154601 +enable_so_length_btrfs_ioctl_same_args_39374 length btrfs_ioctl_same_args 0 39374 NULL
154602 +enable_so_roccat_common2_receive_fndecl_39378 roccat_common2_receive fndecl 4 39378 NULL
154603 +enable_so_vsi_fshino_vxfs_sb_info_39379 vsi_fshino vxfs_sb_info 0 39379 NULL
154604 +enable_so_height_v4l2_mbus_framefmt_39383 height v4l2_mbus_framefmt 0 39383 NULL
154605 +enable_so_lfb_depth_screen_info_39385 lfb_depth screen_info 0 39385 NULL
154606 +enable_so_read16_ssb_bus_ops_39388 read16 ssb_bus_ops 0 39388 NULL
154607 +enable_so_round_rate_clk_ops_39390 round_rate clk_ops 0 39390 NULL
154608 +enable_so_sl_alloc_bufs_fndecl_39391 sl_alloc_bufs fndecl 2 39391 NULL
154609 +enable_so___page_set_anon_rmap_fndecl_39401 __page_set_anon_rmap fndecl 3 39401 NULL
154610 +enable_so_stv0900_get_bits_fndecl_39402 stv0900_get_bits fndecl 0 39402 NULL nohasharray
154611 +enable_so_iscsi_create_conn_fndecl_39402 iscsi_create_conn fndecl 2 39402 &enable_so_stv0900_get_bits_fndecl_39402
154612 +enable_so_userptr_radeon_ttm_tt_39408 userptr radeon_ttm_tt 0 39408 NULL
154613 +enable_so_payld_len_htc_frame_hdr_39418 payld_len htc_frame_hdr 0 39418 NULL
154614 +enable_so_vramsize_sisusb_usb_data_39419 vramsize sisusb_usb_data 0 39419 NULL
154615 +enable_so_stretch_height_usb_usbvision_39420 stretch_height usb_usbvision 0 39420 NULL
154616 +enable_so_read_eeprom_fndecl_39423 read_eeprom fndecl 4 39423 NULL
154617 +enable_so_initial_rate_iwl_mvm_tx_resp_39426 initial_rate iwl_mvm_tx_resp 0 39426 NULL
154618 +enable_so_ext4_htree_fill_tree_fndecl_39428 ext4_htree_fill_tree fndecl 2 39428 NULL
154619 +enable_so_jpeg_len_solo_enc_dev_39431 jpeg_len solo_enc_dev 0 39431 NULL
154620 +enable_so_btrfs_del_csums_fndecl_39434 btrfs_del_csums fndecl 3-4 39434 NULL
154621 +enable_so_ring_size__drm_i810_init_39437 ring_size _drm_i810_init 0 39437 NULL
154622 +enable_so_show_device_status_fndecl_39440 show_device_status fndecl 0 39440 NULL
154623 +enable_so_virtio_cread16_fndecl_39444 virtio_cread16 fndecl 0 39444 NULL
154624 +enable_so_tp_la_write_fndecl_39445 tp_la_write fndecl 3 39445 NULL
154625 +enable_so_sdio_uart_write_fndecl_39449 sdio_uart_write fndecl 3 39449 NULL
154626 +enable_so_zl10036_write_fndecl_39451 zl10036_write fndecl 3 39451 NULL nohasharray
154627 +enable_so_ocfs2_add_refcount_flag_fndecl_39451 ocfs2_add_refcount_flag fndecl 5-7-6 39451 &enable_so_zl10036_write_fndecl_39451
154628 +enable_so_SyS_setxattr_fndecl_39454 SyS_setxattr fndecl 4 39454 NULL
154629 +enable_so_LMC_PKT_BUF_SZ_vardecl_lmc_main_c_39465 LMC_PKT_BUF_SZ vardecl_lmc_main.c 0 39465 NULL
154630 +enable_so_iwl_statistics_flag_fndecl_39478 iwl_statistics_flag fndecl 3-0 39478 NULL
154631 +enable_so_iov_iter_bvec_fndecl_39493 iov_iter_bvec fndecl 5 39493 NULL
154632 +enable_so_txsize_grcan_device_config_39527 txsize grcan_device_config 0 39527 NULL nohasharray
154633 +enable_so_len_batadv_tvlv_hdr_39527 len batadv_tvlv_hdr 0 39527 &enable_so_txsize_grcan_device_config_39527
154634 +enable_so_rsc_mgr_init_fndecl_39528 rsc_mgr_init fndecl 3 39528 NULL
154635 +enable_so_wusb_prf_64_fndecl_39530 wusb_prf_64 fndecl 7 39530 NULL
154636 +enable_so_hugepage_add_new_anon_rmap_fndecl_39534 hugepage_add_new_anon_rmap fndecl 3 39534 NULL
154637 +enable_so_srpt_alloc_ioctx_fndecl_39537 srpt_alloc_ioctx fndecl 2-3 39537 NULL
154638 +enable_so_elem_size_v4l2_ctrl_39540 elem_size v4l2_ctrl 0 39540 NULL
154639 +enable_so_do_arpt_set_ctl_fndecl_39550 do_arpt_set_ctl fndecl 4 39550 NULL
154640 +enable_so_kaweth_internal_control_msg_fndecl_39552 kaweth_internal_control_msg fndecl 5-2 39552 NULL
154641 +enable_so_jbd2_journal_init_revoke_fndecl_39555 jbd2_journal_init_revoke fndecl 2 39555 NULL nohasharray
154642 +enable_so_from_fw_map_39555 from fw_map 0 39555 &enable_so_jbd2_journal_init_revoke_fndecl_39555
154643 +enable_so_l2specific_len_l2tp_session_39558 l2specific_len l2tp_session 0 39558 NULL
154644 +enable_so_build_backref_tree_fndecl_39561 build_backref_tree fndecl 4-3 39561 NULL nohasharray
154645 +enable_so_ci_flags_ext4_crypt_info_39561 ci_flags ext4_crypt_info 0 39561 &enable_so_build_backref_tree_fndecl_39561
154646 +enable_so_disk_size_disk_conf_39567 disk_size disk_conf 0 39567 NULL
154647 +enable_so_plcp_mimo3_iwl_rate_info_39569 plcp_mimo3 iwl_rate_info 0 39569 NULL
154648 +enable_so_pnv_find_best_dpll_fndecl_39571 pnv_find_best_dpll fndecl 4 39571 NULL
154649 +enable_so_sys32_pwrite_fndecl_39572 sys32_pwrite fndecl 3 39572 NULL
154650 +enable_so_group_ext3_new_group_data_39573 group ext3_new_group_data 0 39573 NULL
154651 +enable_so_nfs4_file_llseek_fndecl_39578 nfs4_file_llseek fndecl 2 39578 NULL
154652 +enable_so_iunique_fndecl_39586 iunique fndecl 0-2 39586 NULL
154653 +enable_so_buf_size_fm_rds_39590 buf_size fm_rds 0 39590 NULL
154654 +enable_so_dm_consult_userspace_fndecl_39601 dm_consult_userspace fndecl 5 39601 NULL
154655 +enable_so_midi_ports_snd_emux_39605 midi_ports snd_emux 0 39605 NULL
154656 +enable_so_of_clk_get_parent_count_fndecl_39609 of_clk_get_parent_count fndecl 0 39609 NULL
154657 +enable_so_m_gma_clock_t_39618 m gma_clock_t 0 39618 NULL
154658 +enable_so_cookie_len_l2tp_session_39629 cookie_len l2tp_session 0 39629 NULL
154659 +enable_so_fb_phys_ocfb_dev_39632 fb_phys ocfb_dev 0 39632 NULL
154660 +enable_so_xfs_bmbt_lookup_ge_fndecl_39633 xfs_bmbt_lookup_ge fndecl 3-2-4 39633 NULL
154661 +enable_so_simple_xattr_set_fndecl_39639 simple_xattr_set fndecl 4 39639 NULL
154662 +enable_so_setup_arg_pages_fndecl_39645 setup_arg_pages fndecl 2 39645 NULL nohasharray
154663 +enable_so_ext3_bg_num_gdb_meta_fndecl_39645 ext3_bg_num_gdb_meta fndecl 0 39645 &enable_so_setup_arg_pages_fndecl_39645
154664 +enable_so_tx_len_hw_modul_39649 tx_len hw_modul 0 39649 NULL
154665 +enable_so_skb_copy_datagram_iter_fndecl_39662 skb_copy_datagram_iter fndecl 4-2 39662 NULL
154666 +enable_so_emulate_ts_fndecl_39665 emulate_ts fndecl 2 39665 NULL
154667 +enable_so_snd_rawmidi_transmit_peek_fndecl_39668 snd_rawmidi_transmit_peek fndecl 3 39668 NULL
154668 +enable_so_der_length_size_fndecl_39673 der_length_size fndecl 0 39673 NULL
154669 +enable_so_sectorsize_btrfs_super_block_39674 sectorsize btrfs_super_block 0 39674 NULL
154670 +enable_so_rdma_read_chunk_frmr_fndecl_39676 rdma_read_chunk_frmr fndecl 7 39676 NULL
154671 +enable_so_dev_mem_read_fndecl_39681 dev_mem_read fndecl 3 39681 NULL
154672 +enable_so_fd_block_size_fd_dev_39692 fd_block_size fd_dev 0 39692 NULL nohasharray
154673 +enable_so_priv_size_Qdisc_ops_39692 priv_size Qdisc_ops 0 39692 &enable_so_fd_block_size_fd_dev_39692
154674 +enable_so_snd_usb_caiaq_midi_handle_input_fndecl_39697 snd_usb_caiaq_midi_handle_input fndecl 4 39697 NULL
154675 +enable_so_nb_ace_cci_nb_ports_39699 nb_ace cci_nb_ports 0 39699 NULL
154676 +enable_so_at24_macc_write_fndecl_39705 at24_macc_write fndecl 4-3 39705 NULL
154677 +enable_so_xfs_growfs_get_hdr_buf_fndecl_39706 xfs_growfs_get_hdr_buf fndecl 3-2 39706 NULL
154678 +enable_so_paging32_gva_to_gpa_fndecl_39707 paging32_gva_to_gpa fndecl 2-3 39707 NULL
154679 +enable_so_xen_initdom_setup_msi_irqs_fndecl_39714 xen_initdom_setup_msi_irqs fndecl 2 39714 NULL
154680 +enable_so_blk_check_plugged_fndecl_39715 blk_check_plugged fndecl 3 39715 NULL
154681 +enable_so_e1000_change_mtu_fndecl_39722 e1000_change_mtu fndecl 2 39722 NULL
154682 +enable_so_pglen_pnfs_device_39724 pglen pnfs_device 0 39724 NULL
154683 +enable_so_bitmap_cond_end_sync_fndecl_39734 bitmap_cond_end_sync fndecl 2 39734 NULL
154684 +enable_so_cur_blknum_tree_balance_39737 cur_blknum tree_balance 0 39737 NULL
154685 +enable_so___hostap_add_bss_fndecl_39739 __hostap_add_bss fndecl 4 39739 NULL
154686 +enable_so__ubh_bread__fndecl_39744 _ubh_bread_ fndecl 3 39744 NULL
154687 +enable_so_tm6000_read_write_usb_fndecl_39749 tm6000_read_write_usb fndecl 7 39749 NULL
154688 +enable_so_devpts_new_index_fndecl_39750 devpts_new_index fndecl 0 39750 NULL nohasharray
154689 +enable_so_total_blocks_hfsplus_sb_info_39750 total_blocks hfsplus_sb_info 0 39750 &enable_so_devpts_new_index_fndecl_39750
154690 +enable_so_drm_gtf2_2j_fndecl_39751 drm_gtf2_2j fndecl 0 39751 NULL
154691 +enable_so_address_khugepaged_scan_39752 address khugepaged_scan 0 39752 NULL
154692 +enable_so_am_length_xfs_attr_multiop_39754 am_length xfs_attr_multiop 0 39754 NULL
154693 +enable_so_map_swap_page_fndecl_39768 map_swap_page fndecl 0 39768 NULL
154694 +enable_so_write_flush_fndecl_39776 write_flush fndecl 3 39776 NULL
154695 +enable_so_add_range_with_merge_fndecl_39778 add_range_with_merge fndecl 5 39778 NULL
154696 +enable_so_max_offset_btrfs_ioctl_search_key_39779 max_offset btrfs_ioctl_search_key 0 39779 NULL
154697 +enable_so___collapse_huge_page_isolate_fndecl_39784 __collapse_huge_page_isolate fndecl 2 39784 NULL
154698 +enable_so_dvb_play_fndecl_39789 dvb_play fndecl 3 39789 NULL
154699 +enable_so_buf_rte_log_le_39791 buf rte_log_le 0 39791 NULL
154700 +enable_so_den_max_snd_ratnum_39802 den_max snd_ratnum 0 39802 NULL
154701 +enable_so_root_ino_num_f2fs_sb_info_39805 root_ino_num f2fs_sb_info 0 39805 NULL nohasharray
154702 +enable_so_tpm_write_fndecl_39805 tpm_write fndecl 3 39805 &enable_so_root_ino_num_f2fs_sb_info_39805
154703 +enable_so_meta_dev_idx_disk_conf_39810 meta_dev_idx disk_conf 0 39810 NULL
154704 +enable_so_videobuf_dma_init_user_fndecl_39812 videobuf_dma_init_user fndecl 4-3 39812 NULL
154705 +enable_so_nft_trans_alloc_fndecl_39815 nft_trans_alloc fndecl 3 39815 NULL
154706 +enable_so_defcmd_set_count_vardecl_kdb_main_c_39817 defcmd_set_count vardecl_kdb_main.c 0 39817 NULL
154707 +enable_so_btrfs_del_qgroup_relation_fndecl_39826 btrfs_del_qgroup_relation fndecl 4-3 39826 NULL
154708 +enable_so_init_rx_ring_fndecl_39832 init_rx_ring fndecl 4 39832 NULL
154709 +enable_so_sb_inopblock_xfs_sb_39837 sb_inopblock xfs_sb 0 39837 NULL
154710 +enable_so__offset_iwl_rx_cmd_buffer_39841 _offset iwl_rx_cmd_buffer 0 39841 NULL nohasharray
154711 +enable_so_maxattr_genl_family_39841 maxattr genl_family 0 39841 &enable_so__offset_iwl_rx_cmd_buffer_39841
154712 +enable_so_ref_div_factor_adf4350_platform_data_39844 ref_div_factor adf4350_platform_data 0 39844 NULL
154713 +enable_so_digi_write_inb_command_fndecl_39846 digi_write_inb_command fndecl 3 39846 NULL
154714 +enable_so_height_cx25821_channel_39847 height cx25821_channel 0 39847 NULL
154715 +enable_so_xres_panel_info_39849 xres panel_info 0 39849 NULL
154716 +enable_so_imtu_l2cap_chan_39857 imtu l2cap_chan 0 39857 NULL
154717 +enable_so_usb_stor_reset_common_fndecl_39866 usb_stor_reset_common fndecl 7 39866 NULL nohasharray
154718 +enable_so_carl9170_debugfs_write_fndecl_39866 carl9170_debugfs_write fndecl 3 39866 &enable_so_usb_stor_reset_common_fndecl_39866
154719 +enable_so___bdev_writeseg_fndecl_39876 __bdev_writeseg fndecl 2-4 39876 NULL
154720 +enable_so_xfs_iext_remove_fndecl_39886 xfs_iext_remove fndecl 3 39886 NULL
154721 +enable_so_osd_req_write_sg_fndecl_39887 osd_req_write_sg fndecl 5 39887 NULL
154722 +enable_so_len_cache_request_39888 len cache_request 0 39888 NULL
154723 +enable_so_btrfs_insert_inode_ref_fndecl_39895 btrfs_insert_inode_ref fndecl 6-5 39895 NULL
154724 +enable_so_video_base_sis_video_info_39896 video_base sis_video_info 0 39896 NULL
154725 +enable_so_SyS_lgetxattr_fndecl_39898 SyS_lgetxattr fndecl 4 39898 NULL
154726 +enable_so_s_inodes_per_group_ext4_sb_info_39910 s_inodes_per_group ext4_sb_info 0 39910 NULL
154727 +enable_so_s_gdb_count_ext3_sb_info_39932 s_gdb_count ext3_sb_info 0 39932 NULL
154728 +enable_so_max_mp_regs_mwifiex_sdio_card_reg_39936 max_mp_regs mwifiex_sdio_card_reg 0 39936 NULL
154729 +enable_so_height_font_desc_39938 height font_desc 0 39938 NULL nohasharray
154730 +enable_so_btrfs_i_size_write_fndecl_39938 btrfs_i_size_write fndecl 2 39938 &enable_so_height_font_desc_39938
154731 +enable_so_row_shift_omap4_keypad_39944 row_shift omap4_keypad 0 39944 NULL
154732 +enable_so_g4x_find_best_dpll_fndecl_39946 g4x_find_best_dpll fndecl 4 39946 NULL
154733 +enable_so_md_domain_init_fndecl_39947 md_domain_init fndecl 2 39947 NULL
154734 +enable_so_inode2sd_v1_fndecl_39954 inode2sd_v1 fndecl 3 39954 NULL
154735 +enable_so_msg_length_pcnet32_rx_head_39975 msg_length pcnet32_rx_head 0 39975 NULL nohasharray
154736 +enable_so_cn_size_x509_parse_context_39975 cn_size x509_parse_context 0 39975 &enable_so_msg_length_pcnet32_rx_head_39975
154737 +enable_so_readbuf_size_tomoyo_io_buffer_39976 readbuf_size tomoyo_io_buffer 0 39976 NULL
154738 +enable_so_agp_3_5_isochronous_node_enable_fndecl_39978 agp_3_5_isochronous_node_enable fndecl 3 39978 NULL
154739 +enable_so_btrfs_pin_extent_fndecl_39983 btrfs_pin_extent fndecl 3-2 39983 NULL
154740 +enable_so_extLength_kernel_long_ad_39988 extLength kernel_long_ad 0 39988 NULL
154741 +enable_so_lane_count_intel_dsi_39994 lane_count intel_dsi 0 39994 NULL
154742 +enable_so_playback_bufsize_vardecl_nm256_c_39995 playback_bufsize vardecl_nm256.c 0 39995 NULL
154743 +enable_so_pitch_drm_radeon_texture_39996 pitch drm_radeon_texture 0 39996 NULL nohasharray
154744 +enable_so_size_fm10k_l2_accel_39996 size fm10k_l2_accel 0 39996 &enable_so_pitch_drm_radeon_texture_39996
154745 +enable_so_start_sram_reserve_39999 start sram_reserve 0 39999 NULL
154746 +enable_so_r820t_read_fndecl_40007 r820t_read fndecl 4 40007 NULL
154747 +enable_so_dch_empty_fifo_fndecl_40013 dch_empty_fifo fndecl 2 40013 NULL
154748 +enable_so_zlib_compress_pages_fndecl_40018 zlib_compress_pages fndecl 4 40018 NULL
154749 +enable_so_xfs_iformat_local_fndecl_40019 xfs_iformat_local fndecl 4 40019 NULL
154750 +enable_so_vmw_mob_calculate_pt_pages_fndecl_40022 vmw_mob_calculate_pt_pages fndecl 1 40022 NULL
154751 +enable_so_esp4_get_mtu_fndecl_40024 esp4_get_mtu fndecl 0-2 40024 NULL
154752 +enable_so_emulator_write_phys_fndecl_40035 emulator_write_phys fndecl 2 40035 NULL
154753 +enable_so_lpfc_debugfs_nodelist_data_fndecl_40039 lpfc_debugfs_nodelist_data fndecl 0 40039 NULL
154754 +enable_so_memdiff_vardecl_tridentfb_c_40043 memdiff vardecl_tridentfb.c 0 40043 NULL
154755 +enable_so_add_nested_action_start_fndecl_40044 add_nested_action_start fndecl 0 40044 NULL
154756 +enable_so_ip_tss_segment_16_40046 ip tss_segment_16 0 40046 NULL
154757 +enable_so_last_used_idx_vhost_virtqueue_40059 last_used_idx vhost_virtqueue 0 40059 NULL
154758 +enable_so_SyS_listxattr_fndecl_40060 SyS_listxattr fndecl 3 40060 NULL
154759 +enable_so_max_pq_dma_device_40070 max_pq dma_device 0 40070 NULL
154760 +enable_so_x25_asy_maxdev_vardecl_x25_asy_c_40074 x25_asy_maxdev vardecl_x25_asy.c 0 40074 NULL
154761 +enable_so_tda18271_write_regs_fndecl_40082 tda18271_write_regs fndecl 3 40082 NULL
154762 +enable_so_num_parents_clk_core_40091 num_parents clk_core 0 40091 NULL
154763 +enable_so_zap_page_range_fndecl_40097 zap_page_range fndecl 3-2 40097 NULL
154764 +enable_so_vma_needs_reservation_fndecl_40101 vma_needs_reservation fndecl 3 40101 NULL
154765 +enable_so_num_ibs_amdgpu_cs_parser_40104 num_ibs amdgpu_cs_parser 0 40104 NULL
154766 +enable_so_lh_blkno_gfs2_log_header_host_40105 lh_blkno gfs2_log_header_host 0 40105 NULL
154767 +enable_so_frag_rx_path_fndecl_40106 frag_rx_path fndecl 3 40106 NULL nohasharray
154768 +enable_so_allocation_floor_vardecl_dell_rbu_c_40106 allocation_floor vardecl_dell_rbu.c 0 40106 &enable_so_frag_rx_path_fndecl_40106
154769 +enable_so_r8a66597_urb_dequeue_fndecl_40110 r8a66597_urb_dequeue fndecl 3 40110 NULL
154770 +enable_so_alloc_chunk_fndecl_40116 alloc_chunk fndecl 1 40116 NULL nohasharray
154771 +enable_so_drv_data_size_rt2x00_ops_40116 drv_data_size rt2x00_ops 0 40116 &enable_so_alloc_chunk_fndecl_40116
154772 +enable_so_byte_count_vardecl_initramfs_c_40121 byte_count vardecl_initramfs.c 0 40121 NULL nohasharray
154773 +enable_so_sd_pkt_scan_fndecl_40121 sd_pkt_scan fndecl 3 40121 &enable_so_byte_count_vardecl_initramfs_c_40121 nohasharray
154774 +enable_so_sctp_setsockopt_default_send_param_fndecl_40121 sctp_setsockopt_default_send_param fndecl 3 40121 &enable_so_sd_pkt_scan_fndecl_40121
154775 +enable_so_fastListenInterval_ConfigRid_40133 fastListenInterval ConfigRid 0 40133 NULL
154776 +enable_so_smk_write_doi_fndecl_40134 smk_write_doi fndecl 3 40134 NULL
154777 +enable_so_port_fops_read_fndecl_40137 port_fops_read fndecl 3 40137 NULL
154778 +enable_so_off_fuse_notify_inval_inode_out_40142 off fuse_notify_inval_inode_out 0 40142 NULL
154779 +enable_so_startbit_ebitmap_node_40162 startbit ebitmap_node 0 40162 NULL
154780 +enable_so_xfs_ialloc_get_rec_fndecl_40163 xfs_ialloc_get_rec fndecl 2 40163 NULL
154781 +enable_so_sh_size_elf64_shdr_40164 sh_size elf64_shdr 0 40164 NULL
154782 +enable_so_at24_bin_read_fndecl_40165 at24_bin_read fndecl 6 40165 NULL nohasharray
154783 +enable_so_cmd_nr_drm_exynos_g2d_set_cmdlist_40165 cmd_nr drm_exynos_g2d_set_cmdlist 0 40165 &enable_so_at24_bin_read_fndecl_40165
154784 +enable_so_dev_stripes_btrfs_raid_attr_40170 dev_stripes btrfs_raid_attr 0 40170 NULL
154785 +enable_so_status_boom_rx_desc_40185 status boom_rx_desc 0 40185 NULL
154786 +enable_so_reshape_progress_r5conf_40192 reshape_progress r5conf 0 40192 NULL
154787 +enable_so_supported_dma_mask_fndecl_40193 supported_dma_mask fndecl 0 40193 NULL
154788 +enable_so_peb_size_ubi_device_40195 peb_size ubi_device 0 40195 NULL
154789 +enable_so_dma_contiguous_reserve_area_fndecl_40196 dma_contiguous_reserve_area fndecl 1-2 40196 NULL nohasharray
154790 +enable_so___jfs_setxattr_fndecl_40196 __jfs_setxattr fndecl 5 40196 &enable_so_dma_contiguous_reserve_area_fndecl_40196
154791 +enable_so_vga_video_num_lines_vardecl_vgacon_c_40199 vga_video_num_lines vardecl_vgacon.c 0 40199 NULL
154792 +enable_so_ath6kl_bgscan_int_write_fndecl_40201 ath6kl_bgscan_int_write fndecl 3 40201 NULL
154793 +enable_so_pvr2_ctrl_get_min_fndecl_40204 pvr2_ctrl_get_min fndecl 0 40204 NULL
154794 +enable_so_num_amgms_mlx4_caps_40207 num_amgms mlx4_caps 0 40207 NULL
154795 +enable_so_get_blocks_se_subsystem_api_40212 get_blocks se_subsystem_api 0 40212 NULL
154796 +enable_so_kbuf_alloc_2_sgl_fndecl_40216 kbuf_alloc_2_sgl fndecl 1 40216 NULL
154797 +enable_so_ipw_queue_tx_init_fndecl_40218 ipw_queue_tx_init fndecl 3 40218 NULL
154798 +enable_so_len_p80211ioctl_req_40220 len p80211ioctl_req 0 40220 NULL
154799 +enable_so_bochs_bo_create_fndecl_40223 bochs_bo_create fndecl 2 40223 NULL
154800 +enable_so_lola_init_stream_fndecl_40245 lola_init_stream fndecl 3 40245 NULL
154801 +enable_so_mmap_file_operations_40250 mmap file_operations 0 40250 NULL
154802 +enable_so_max_sectors_queue_limits_40252 max_sectors queue_limits 0 40252 NULL
154803 +enable_so__iwl_dbgfs_netdetect_write_fndecl_40255 _iwl_dbgfs_netdetect_write fndecl 3 40255 NULL
154804 +enable_so_ucNumOfPowerModeEntries__ATOM_POWERPLAY_INFO_40261 ucNumOfPowerModeEntries _ATOM_POWERPLAY_INFO 0 40261 NULL
154805 +enable_so_ino_jffs2_inode_cache_40264 ino jffs2_inode_cache 0 40264 NULL
154806 +enable_so_rs_move_mimo3_to_other_fndecl_40268 rs_move_mimo3_to_other fndecl 5 40268 NULL
154807 +enable_so_memcg_nr_cache_ids_vardecl_40280 memcg_nr_cache_ids vardecl 0 40280 NULL
154808 +enable_so_mask___kfifo_40288 mask __kfifo 0 40288 NULL
154809 +enable_so_update_end_of_memory_vars_fndecl_40298 update_end_of_memory_vars fndecl 2-1 40298 NULL
154810 +enable_so_osd_req_add_get_attr_list_fndecl_40301 osd_req_add_get_attr_list fndecl 3 40301 NULL nohasharray
154811 +enable_so_freq_radio_tea5777_40301 freq radio_tea5777 0 40301 &enable_so_osd_req_add_get_attr_list_fndecl_40301 nohasharray
154812 +enable_so_num_engines_dmm_40301 num_engines dmm 0 40301 &enable_so_freq_radio_tea5777_40301
154813 +enable_so_cyttsp_spi_xfer_fndecl_40307 cyttsp_spi_xfer fndecl 6 40307 NULL
154814 +enable_so_gfs2_free_meta_fndecl_40312 gfs2_free_meta fndecl 2 40312 NULL
154815 +enable_so_uio_read_fndecl_40327 uio_read fndecl 3 40327 NULL
154816 +enable_so_cur_pos_tegra_spi_data_40338 cur_pos tegra_spi_data 0 40338 NULL
154817 +enable_so_dm_rh_get_region_key_fndecl_40342 dm_rh_get_region_key fndecl 0 40342 NULL
154818 +enable_so_default_llseek_fndecl_40353 default_llseek fndecl 2 40353 NULL nohasharray
154819 +enable_so_srpt_alloc_ioctx_ring_fndecl_40353 srpt_alloc_ioctx_ring fndecl 3-4-2 40353 &enable_so_default_llseek_fndecl_40353
154820 +enable_so_cr2_kvm_vcpu_arch_40355 cr2 kvm_vcpu_arch 0 40355 NULL
154821 +enable_so___intel_map_single_fndecl_40361 __intel_map_single fndecl 5 40361 NULL nohasharray
154822 +enable_so_cblock_dm_cache_migration_40361 cblock dm_cache_migration 0 40361 &enable_so___intel_map_single_fndecl_40361
154823 +enable_so_cfpkt_setlen_fndecl_40364 cfpkt_setlen fndecl 2 40364 NULL
154824 +enable_so_SYSC_mincore_fndecl_40372 SYSC_mincore fndecl 2-1 40372 NULL
154825 +enable_so___vmalloc_node_fndecl_40382 __vmalloc_node fndecl 1 40382 NULL
154826 +enable_so_sb_root_hpfs_sb_info_40394 sb_root hpfs_sb_info 0 40394 NULL nohasharray
154827 +enable_so_file_secno_bplus_leaf_node_40394 file_secno bplus_leaf_node 0 40394 &enable_so_sb_root_hpfs_sb_info_40394
154828 +enable_so_short_frame_max_tx_count_cw1200_common_40403 short_frame_max_tx_count cw1200_common 0 40403 NULL
154829 +enable_so_snd_ak4113_external_rate_fndecl_40404 snd_ak4113_external_rate fndecl 0 40404 NULL
154830 +enable_so_bulk_out_epnum_usb_cardstate_40412 bulk_out_epnum usb_cardstate 0 40412 NULL nohasharray
154831 +enable_so_joydev_ioctl_common_fndecl_40412 joydev_ioctl_common fndecl 2 40412 &enable_so_bulk_out_epnum_usb_cardstate_40412
154832 +enable_so_vm_end_vm_area_struct_40413 vm_end vm_area_struct 0 40413 NULL
154833 +enable_so_applesmc_create_nodes_fndecl_40419 applesmc_create_nodes fndecl 2 40419 NULL
154834 +enable_so_buf_size_in_bytes_kfd_ioctl_dbg_wave_control_args_40427 buf_size_in_bytes kfd_ioctl_dbg_wave_control_args 0 40427 NULL
154835 +enable_so_tnode_alloc_fndecl_40428 tnode_alloc fndecl 1 40428 NULL
154836 +enable_so_readisac_IsdnCardState_40429 readisac IsdnCardState 0 40429 NULL
154837 +enable_so_dm_array_resize_fndecl_40432 dm_array_resize fndecl 2 40432 NULL nohasharray
154838 +enable_so_btrfs_relocate_chunk_fndecl_40432 btrfs_relocate_chunk fndecl 3 40432 &enable_so_dm_array_resize_fndecl_40432
154839 +enable_so_skb_partial_csum_set_fndecl_40436 skb_partial_csum_set fndecl 2 40436 NULL
154840 +enable_so_iscsi_alloc_session_fndecl_40445 iscsi_alloc_session fndecl 3 40445 NULL
154841 +enable_so_qd2index_fndecl_40449 qd2index fndecl 0 40449 NULL
154842 +enable_so_curpacksize_snd_usb_endpoint_40462 curpacksize snd_usb_endpoint 0 40462 NULL nohasharray
154843 +enable_so_submit_create_fndecl_40462 submit_create fndecl 3 40462 &enable_so_curpacksize_snd_usb_endpoint_40462
154844 +enable_so_hactive___fb_timings_40471 hactive __fb_timings 0 40471 NULL
154845 +enable_so_g2d_userptr_get_dma_addr_fndecl_40487 g2d_userptr_get_dma_addr fndecl 2-3 40487 NULL
154846 +enable_so_eh_depth_ext4_extent_header_40488 eh_depth ext4_extent_header 0 40488 NULL
154847 +enable_so_s_cgoffset_ufs_sb_private_info_40490 s_cgoffset ufs_sb_private_info 0 40490 NULL
154848 +enable_so_tx_max_cdc_ncm_ctx_40493 tx_max cdc_ncm_ctx 0 40493 NULL nohasharray
154849 +enable_so_length_mtd_oob_buf32_40493 length mtd_oob_buf32 0 40493 &enable_so_tx_max_cdc_ncm_ctx_40493
154850 +enable_so_len_tx_buf_40498 len tx_buf 0 40498 NULL
154851 +enable_so_header_length_datalink_proto_40501 header_length datalink_proto 0 40501 NULL
154852 +enable_so_dn_mss_from_pmtu_fndecl_40520 dn_mss_from_pmtu fndecl 2 40520 NULL
154853 +enable_so_xfs_ialloc_inode_init_fndecl_40524 xfs_ialloc_inode_init fndecl 5-4 40524 NULL
154854 +enable_so_ieee80211_if_fmt_dtim_count_fndecl_40528 ieee80211_if_fmt_dtim_count fndecl 3 40528 NULL nohasharray
154855 +enable_so_num_substreams_snd_m3_40528 num_substreams snd_m3 0 40528 &enable_so_ieee80211_if_fmt_dtim_count_fndecl_40528
154856 +enable_so_btrfs_lookup_dir_index_item_fndecl_40530 btrfs_lookup_dir_index_item fndecl 5-4 40530 NULL
154857 +enable_so_w_size_deflate_state_40533 w_size deflate_state 0 40533 NULL nohasharray
154858 +enable_so_drm_buffer_copy_from_user_fndecl_40533 drm_buffer_copy_from_user fndecl 3 40533 &enable_so_w_size_deflate_state_40533
154859 +enable_so_sky2_get_rx_data_size_fndecl_40544 sky2_get_rx_data_size fndecl 0 40544 NULL
154860 +enable_so_alloc_ebda_hpc_fndecl_40557 alloc_ebda_hpc fndecl 1-2 40557 NULL
154861 +enable_so_security_context_to_sid_fndecl_40560 security_context_to_sid fndecl 2 40560 NULL
154862 +enable_so_plcp_siso_iwl_rate_info_40562 plcp_siso iwl_rate_info 0 40562 NULL
154863 +enable_so_maxpacket_isp1362_ep_40564 maxpacket isp1362_ep 0 40564 NULL
154864 +enable_so_isdn_read_fndecl_40566 isdn_read fndecl 3 40566 NULL
154865 +enable_so_ptrace_readdata_fndecl_40567 ptrace_readdata fndecl 4-2 40567 NULL
154866 +enable_so_ucNumStates__ATOM_PPLIB_POWERPLAYTABLE_40568 ucNumStates _ATOM_PPLIB_POWERPLAYTABLE 0 40568 NULL
154867 +enable_so_caif_stream_sendmsg_fndecl_40573 caif_stream_sendmsg fndecl 3 40573 NULL
154868 +enable_so_qp_alloc_queue_fndecl_40575 qp_alloc_queue fndecl 1 40575 NULL nohasharray
154869 +enable_so_xlog_recovery_process_trans_fndecl_40575 xlog_recovery_process_trans fndecl 4 40575 &enable_so_qp_alloc_queue_fndecl_40575
154870 +enable_so_dm_bufio_read_fndecl_40577 dm_bufio_read fndecl 2 40577 NULL
154871 +enable_so_bounds_type_datum_40579 bounds type_datum 0 40579 NULL
154872 +enable_so_ioread8_fndecl_40594 ioread8 fndecl 0 40594 NULL
154873 +enable_so_rose_ndevs_vardecl_af_rose_c_40602 rose_ndevs vardecl_af_rose.c 0 40602 NULL
154874 +enable_so_value_len_ext4_xattr_info_40604 value_len ext4_xattr_info 0 40604 NULL
154875 +enable_so_rf_size_rt2x00_ops_40605 rf_size rt2x00_ops 0 40605 NULL
154876 +enable_so_android_set_cntry_fndecl_40615 android_set_cntry fndecl 0 40615 NULL
154877 +enable_so___alloc_page_frag_fndecl_40620 __alloc_page_frag fndecl 2 40620 NULL
154878 +enable_so_libcfs_ioctl_popdata_fndecl_40628 libcfs_ioctl_popdata fndecl 3 40628 NULL
154879 +enable_so_rate_n_flags_il_rx_phy_res_40629 rate_n_flags il_rx_phy_res 0 40629 NULL
154880 +enable_so_pcpu_get_vm_areas_fndecl_40630 pcpu_get_vm_areas fndecl 3-4 40630 NULL
154881 +enable_so_cf_uniqueid_cifs_fattr_40632 cf_uniqueid cifs_fattr 0 40632 NULL
154882 +enable_so_altera_swap_dr_fndecl_40633 altera_swap_dr fndecl 2 40633 NULL
154883 +enable_so_map_dirent_fndecl_40635 map_dirent fndecl 2 40635 NULL nohasharray
154884 +enable_so_sock_setsockopt_fndecl_40635 sock_setsockopt fndecl 5 40635 &enable_so_map_dirent_fndecl_40635
154885 +enable_so_frqchk_tea5764_regs_40639 frqchk tea5764_regs 0 40639 NULL
154886 +enable_so_freq_magnitude_fndecl_40641 freq_magnitude fndecl 2-3 40641 NULL
154887 +enable_so_rotate_buf_a_little_fndecl_40654 rotate_buf_a_little fndecl 2 40654 NULL
154888 +enable_so_rq_rcvsize_rpc_rqst_40660 rq_rcvsize rpc_rqst 0 40660 NULL
154889 +enable_so_legacy_rate_info_40663 legacy rate_info 0 40663 NULL
154890 +enable_so_ocrdma_dbgfs_ops_write_fndecl_40664 ocrdma_dbgfs_ops_write fndecl 3 40664 NULL
154891 +enable_so___ext_tree_remove_fndecl_40666 __ext_tree_remove fndecl 2-3 40666 NULL
154892 +enable_so_kmalloc_node_fndecl_40672 kmalloc_node fndecl 1 40672 NULL
154893 +enable_so_odev_update_fndecl_40682 odev_update fndecl 2 40682 NULL nohasharray
154894 +enable_so_num_queue_pairs_i40e_virtchnl_vsi_resource_40682 num_queue_pairs i40e_virtchnl_vsi_resource 0 40682 &enable_so_odev_update_fndecl_40682
154895 +enable_so_ahd_probe_stack_size_fndecl_40683 ahd_probe_stack_size fndecl 0 40683 NULL
154896 +enable_so_ieee80211_if_fmt_dot11MeshHWMPRannInterval_fndecl_40687 ieee80211_if_fmt_dot11MeshHWMPRannInterval fndecl 3 40687 NULL nohasharray
154897 +enable_so_ubi_resize_volume_fndecl_40687 ubi_resize_volume fndecl 2 40687 &enable_so_ieee80211_if_fmt_dot11MeshHWMPRannInterval_fndecl_40687 nohasharray
154898 +enable_so_xfs_get_blocks_direct_fndecl_40687 xfs_get_blocks_direct fndecl 2 40687 &enable_so_ubi_resize_volume_fndecl_40687
154899 +enable_so_height_timblogiw_tvnorm_40699 height timblogiw_tvnorm 0 40699 NULL
154900 +enable_so_aa_simple_write_to_buffer_fndecl_40704 aa_simple_write_to_buffer fndecl 4 40704 NULL
154901 +enable_so_max_znode_sz_ubifs_info_40705 max_znode_sz ubifs_info 0 40705 NULL
154902 +enable_so_ctrl_out_pipe_hfcsusb_40706 ctrl_out_pipe hfcsusb 0 40706 NULL
154903 +enable_so_lfb_linelength_screen_info_40728 lfb_linelength screen_info 0 40728 NULL
154904 +enable_so_cryptlen_aead_request_40734 cryptlen aead_request 0 40734 NULL nohasharray
154905 +enable_so_page_order_ring_buffer_40734 page_order ring_buffer 0 40734 &enable_so_cryptlen_aead_request_40734
154906 +enable_so_NumberOfLogBlock_ms_lib_ctrl_40736 NumberOfLogBlock ms_lib_ctrl 0 40736 NULL
154907 +enable_so_sisfb_getheapstart_fndecl_40740 sisfb_getheapstart fndecl 0 40740 NULL
154908 +enable_so_write_pool_fndecl_40741 write_pool fndecl 3 40741 NULL
154909 +enable_so_IELength_wlan_bssid_ex_40743 IELength wlan_bssid_ex 0 40743 NULL
154910 +enable_so_ctrl_macb_dma_desc_40750 ctrl macb_dma_desc 0 40750 NULL
154911 +enable_so_sys_gethostname_fndecl_40753 sys_gethostname fndecl 2 40753 NULL
154912 +enable_so_read_reg_isac_hw_40755 read_reg isac_hw 0 40755 NULL
154913 +enable_so_snd_usb_endpoint_set_params_fndecl_40756 snd_usb_endpoint_set_params fndecl 3-7-4 40756 NULL
154914 +enable_so_total_xfer_length_ScsiReqBlk_40768 total_xfer_length ScsiReqBlk 0 40768 NULL
154915 +enable_so_zd_usb_iowrite16v_fndecl_40771 zd_usb_iowrite16v fndecl 3 40771 NULL
154916 +enable_so_btrfs_chunk_num_stripes_fndecl_40772 btrfs_chunk_num_stripes fndecl 0 40772 NULL
154917 +enable_so_snd_hdac_get_connections_fndecl_40773 snd_hdac_get_connections fndecl 0 40773 NULL
154918 +enable_so_pdu_write_fndecl_40774 pdu_write fndecl 3 40774 NULL
154919 +enable_so_s_bpfshift_ufs_sb_private_info_40782 s_bpfshift ufs_sb_private_info 0 40782 NULL
154920 +enable_so_increase_reservation_fndecl_40785 increase_reservation fndecl 1 40785 NULL
154921 +enable_so_sys_fsetxattr_fndecl_40795 sys_fsetxattr fndecl 4 40795 NULL
154922 +enable_so_private_data_len_rdma_conn_param_40796 private_data_len rdma_conn_param 0 40796 NULL
154923 +enable_so_ext4_multi_mount_protect_fndecl_40798 ext4_multi_mount_protect fndecl 2 40798 NULL
154924 +enable_so_multi_write_idx_wmi_40801 multi_write_idx wmi 0 40801 NULL
154925 +enable_so_ceph_osdc_readpages_fndecl_40814 ceph_osdc_readpages fndecl 0 40814 NULL
154926 +enable_so_dma_pad_mask_request_queue_40816 dma_pad_mask request_queue 0 40816 NULL
154927 +enable_so_l2_fhdr_ip_xsum_l2_fhdr_40843 l2_fhdr_ip_xsum l2_fhdr 0 40843 NULL
154928 +enable_so_v9fs_file_fsync_dotl_fndecl_40845 v9fs_file_fsync_dotl fndecl 2 40845 NULL
154929 +enable_so_newblocks_xfs_growfs_data_40847 newblocks xfs_growfs_data 0 40847 NULL
154930 +enable_so_nfs_file_fsync_fndecl_40851 nfs_file_fsync fndecl 2 40851 NULL
154931 +enable_so_extended_capabilities_len_wiphy_40861 extended_capabilities_len wiphy 0 40861 NULL
154932 +enable_so_ext2_splice_branch_fndecl_40864 ext2_splice_branch fndecl 5 40864 NULL
154933 +enable_so_nvram_llseek_fndecl_40869 nvram_llseek fndecl 2 40869 NULL
154934 +enable_so_reply_queue_count_MPT3SAS_ADAPTER_40870 reply_queue_count MPT3SAS_ADAPTER 0 40870 NULL
154935 +enable_so_hash_recvmsg_fndecl_40871 hash_recvmsg fndecl 3 40871 NULL
154936 +enable_so_timeradd_entry_fndecl_40873 timeradd_entry fndecl 3 40873 NULL
154937 +enable_so_pages_per_bnode_hfs_btree_40875 pages_per_bnode hfs_btree 0 40875 NULL nohasharray
154938 +enable_so_scsi_dispatch_cmd_entry_fndecl_40875 scsi_dispatch_cmd_entry fndecl 3 40875 &enable_so_pages_per_bnode_hfs_btree_40875
154939 +enable_so_config_len_mic_device_desc_40877 config_len mic_device_desc 0 40877 NULL
154940 +enable_so_osst_set_options_fndecl_40884 osst_set_options fndecl 2 40884 NULL
154941 +enable_so_tcf_csum_ipv4_tcp_fndecl_40889 tcf_csum_ipv4_tcp fndecl 3 40889 NULL
154942 +enable_so_gtt_sa_num_of_chunks_kfd_dev_40890 gtt_sa_num_of_chunks kfd_dev 0 40890 NULL
154943 +enable_so_uart_write_fndecl_40916 uart_write fndecl 3 40916 NULL
154944 +enable_so_sctp_setsockopt_bindx_fndecl_40925 sctp_setsockopt_bindx fndecl 3 40925 NULL
154945 +enable_so_inode_bitmap_ext3_new_group_data_40928 inode_bitmap ext3_new_group_data 0 40928 NULL nohasharray
154946 +enable_so_ea_put_fndecl_40928 ea_put fndecl 4 40928 &enable_so_inode_bitmap_ext3_new_group_data_40928
154947 +enable_so_opcount_xfs_fsop_attrmulti_handlereq_40929 opcount xfs_fsop_attrmulti_handlereq 0 40929 NULL
154948 +enable_so_max_rate_idx_il_lq_sta_40932 max_rate_idx il_lq_sta 0 40932 NULL
154949 +enable_so_scsiback_do_resp_with_sense_fndecl_40934 scsiback_do_resp_with_sense fndecl 3 40934 NULL
154950 +enable_so_fuse_send_write_fndecl_40936 fuse_send_write fndecl 0-4 40936 NULL
154951 +enable_so_curfreq_keene_device_40940 curfreq keene_device 0 40940 NULL
154952 +enable_so_s_log_groups_per_flex_ext4_sb_info_40945 s_log_groups_per_flex ext4_sb_info 0 40945 NULL
154953 +enable_so_failure_frame_il4965_tx_resp_40950 failure_frame il4965_tx_resp 0 40950 NULL
154954 +enable_so_size_v4l2_ext_control_40952 size v4l2_ext_control 0 40952 NULL
154955 +enable_so_ns_segnum_the_nilfs_40959 ns_segnum the_nilfs 0 40959 NULL
154956 +enable_so_ext4_fill_fiemap_extents_fndecl_40966 ext4_fill_fiemap_extents fndecl 2-3 40966 NULL
154957 +enable_so_bottom_qxl_urect_40968 bottom qxl_urect 0 40968 NULL
154958 +enable_so_regmap_reg_ranges_read_file_fndecl_40973 regmap_reg_ranges_read_file fndecl 3 40973 NULL
154959 +enable_so_a_text_exec_40977 a_text exec 0 40977 NULL
154960 +enable_so_message_for_md_fndecl_40986 message_for_md fndecl 5 40986 NULL nohasharray
154961 +enable_so_blk_mq_init_tags_fndecl_40986 blk_mq_init_tags fndecl 2-1 40986 &enable_so_message_for_md_fndecl_40986
154962 +enable_so_vaddr_get_pfn_fndecl_40993 vaddr_get_pfn fndecl 1 40993 NULL
154963 +enable_so_ecryptfs_send_miscdev_fndecl_40995 ecryptfs_send_miscdev fndecl 2 40995 NULL
154964 +enable_so_gfn_to_page_fndecl_41001 gfn_to_page fndecl 2 41001 NULL nohasharray
154965 +enable_so_start_fb_cmap_41001 start fb_cmap 0 41001 &enable_so_gfn_to_page_fndecl_41001
154966 +enable_so_selfballoon_min_usable_mb_vardecl_xen_selfballoon_c_41004 selfballoon_min_usable_mb vardecl_xen-selfballoon.c 0 41004 NULL
154967 +enable_so_proc_projid_map_write_fndecl_41017 proc_projid_map_write fndecl 3 41017 NULL
154968 +enable_so_rfkill_fop_write_fndecl_41019 rfkill_fop_write fndecl 3 41019 NULL
154969 +enable_so_dma_handle_videobuf_dma_contig_memory_41025 dma_handle videobuf_dma_contig_memory 0 41025 NULL
154970 +enable_so_altera_set_dr_pre_fndecl_41037 altera_set_dr_pre fndecl 2 41037 NULL
154971 +enable_so_fofs_extent_info_41041 fofs extent_info 0 41041 NULL
154972 +enable_so_d0_vring_rx_mac_41042 d0 vring_rx_mac 0 41042 NULL
154973 +enable_so_p_dpll_41054 p dpll 0 41054 NULL
154974 +enable_so_resp_len_bnx2fc_mp_req_41057 resp_len bnx2fc_mp_req 0 41057 NULL
154975 +enable_so_lprocfs_write_u64_helper_fndecl_41059 lprocfs_write_u64_helper fndecl 2 41059 NULL
154976 +enable_so_gfn_to_pfn_fndecl_41077 gfn_to_pfn fndecl 2 41077 NULL
154977 +enable_so_curfreq_ma901radio_device_41079 curfreq ma901radio_device 0 41079 NULL
154978 +enable_so_shtc1_update_values_fndecl_41080 shtc1_update_values fndecl 4 41080 NULL
154979 +enable_so_zl10039_write_fndecl_41082 zl10039_write fndecl 4 41082 NULL
154980 +enable_so_iq_autocal_len_p54_common_41089 iq_autocal_len p54_common 0 41089 NULL
154981 +enable_so_pskb_put_fndecl_41096 pskb_put fndecl 3 41096 NULL nohasharray
154982 +enable_so_sigma_fw_load_data_fndecl_41096 sigma_fw_load_data fndecl 3 41096 &enable_so_pskb_put_fndecl_41096
154983 +enable_so_nr_gpio_sc16is7xx_devtype_41097 nr_gpio sc16is7xx_devtype 0 41097 NULL
154984 +enable_so_input_leds_get_count_fndecl_41102 input_leds_get_count fndecl 0 41102 NULL
154985 +enable_so_res_ver_val_pvr2_hdw_41107 res_ver_val pvr2_hdw 0 41107 NULL
154986 +enable_so_physical_start_stripe_41108 physical_start stripe 0 41108 NULL nohasharray
154987 +enable_so_freq_vardecl_mxb_c_41108 freq vardecl_mxb.c 0 41108 &enable_so_physical_start_stripe_41108
154988 +enable_so_xfs_imap_lookup_fndecl_41113 xfs_imap_lookup fndecl 4-3 41113 NULL
154989 +enable_so_wlc_phy_nbits_fndecl_41121 wlc_phy_nbits fndecl 0 41121 NULL
154990 +enable_so_datalen_brcmf_event_msg_41123 datalen brcmf_event_msg 0 41123 NULL
154991 +enable_so_stripesize_btrfs_root_41124 stripesize btrfs_root 0 41124 NULL
154992 +enable_so_ip_options_get_from_user_fndecl_41133 ip_options_get_from_user fndecl 4 41133 NULL
154993 +enable_so_data_out_pipe_uas_dev_info_41134 data_out_pipe uas_dev_info 0 41134 NULL
154994 +enable_so_nilfs_sufile_get_blkoff_fndecl_41139 nilfs_sufile_get_blkoff fndecl 2 41139 NULL
154995 +enable_so_ieee80211_cs_headroom_fndecl_41144 ieee80211_cs_headroom fndecl 0 41144 NULL
154996 +enable_so_rx_drvinfo_size_rtl_stats_41161 rx_drvinfo_size rtl_stats 0 41161 NULL
154997 +enable_so_l2tp_ip6_sendmsg_fndecl_41166 l2tp_ip6_sendmsg fndecl 3 41166 NULL
154998 +enable_so_size_brnf_frag_data_41177 size brnf_frag_data 0 41177 NULL
154999 +enable_so_start_flakey_c_41178 start flakey_c 0 41178 NULL nohasharray
155000 +enable_so_traceprobe_probes_write_fndecl_41178 traceprobe_probes_write fndecl 3 41178 &enable_so_start_flakey_c_41178
155001 +enable_so_gfn_guest_walker64_41182 gfn guest_walker64 0 41182 NULL
155002 +enable_so_binder_set_nice_fndecl_41184 binder_set_nice fndecl 1 41184 NULL
155003 +enable_so_wlen_si2157_cmd_41187 wlen si2157_cmd 0 41187 NULL
155004 +enable_so_ndlc_probe_fndecl_41195 ndlc_probe fndecl 4 41195 NULL
155005 +enable_so_c4iw_ocqp_pool_alloc_fndecl_41196 c4iw_ocqp_pool_alloc fndecl 0 41196 NULL
155006 +enable_so_nr_pages_page_collect_41197 nr_pages page_collect 0 41197 NULL
155007 +enable_so_ipv4_tun_to_nlattr_fndecl_41204 ipv4_tun_to_nlattr fndecl 4 41204 NULL
155008 +enable_so_nr_acpi_bits_vardecl_xen_acpi_processor_c_41210 nr_acpi_bits vardecl_xen-acpi-processor.c 0 41210 NULL
155009 +enable_so_qib_n_krcv_queues_vardecl_41222 qib_n_krcv_queues vardecl 0 41222 NULL
155010 +enable_so_p9_client_read_fndecl_41223 p9_client_read fndecl 0 41223 NULL
155011 +enable_so_prctl_set_mm_fndecl_41225 prctl_set_mm fndecl 2-3 41225 NULL
155012 +enable_so_enic_change_mtu_fndecl_41227 enic_change_mtu fndecl 2 41227 NULL nohasharray
155013 +enable_so_iscsi_first_burst_len_dev_db_entry_41227 iscsi_first_burst_len dev_db_entry 0 41227 &enable_so_enic_change_mtu_fndecl_41227
155014 +enable_so_out_count_mdc800_data_41228 out_count mdc800_data 0 41228 NULL
155015 +enable_so_opera1_usb_i2c_msgxfer_fndecl_41242 opera1_usb_i2c_msgxfer fndecl 4 41242 NULL
155016 +enable_so_ses_send_diag_fndecl_41244 ses_send_diag fndecl 4 41244 NULL
155017 +enable_so_iwl_dbgfs_ucode_tracing_write_fndecl_41247 iwl_dbgfs_ucode_tracing_write fndecl 3 41247 NULL
155018 +enable_so_croph_val_pvr2_hdw_41253 croph_val pvr2_hdw 0 41253 NULL
155019 +enable_so_kstrtoul_from_user_fndecl_41258 kstrtoul_from_user fndecl 2 41258 NULL
155020 +enable_so_qlen_sk_buff_head_41259 qlen sk_buff_head 0 41259 NULL nohasharray
155021 +enable_so_diva_os_alloc_message_buffer_fndecl_41259 diva_os_alloc_message_buffer fndecl 1 41259 &enable_so_qlen_sk_buff_head_41259
155022 +enable_so_do_erase_fndecl_41261 do_erase fndecl 2-4 41261 NULL
155023 +enable_so_lm8323_read_fndecl_41264 lm8323_read fndecl 4 41264 NULL
155024 +enable_so_blkdev_issue_zeroout_fndecl_41272 blkdev_issue_zeroout fndecl 3-2 41272 NULL
155025 +enable_so_rbd_obj_read_sync_fndecl_41273 rbd_obj_read_sync fndecl 4-3 41273 NULL
155026 +enable_so___btrfs_prealloc_file_range_fndecl_41278 __btrfs_prealloc_file_range fndecl 4-3-5 41278 NULL
155027 +enable_so_size_data_s_41281 size data_s 0 41281 NULL
155028 +enable_so_num_reg_defaults_raw_regmap_41282 num_reg_defaults_raw regmap 0 41282 NULL
155029 +enable_so_centre_horizontally_fndecl_41284 centre_horizontally fndecl 2 41284 NULL nohasharray
155030 +enable_so_vxfs_getblk_fndecl_41284 vxfs_getblk fndecl 2 41284 &enable_so_centre_horizontally_fndecl_41284
155031 +enable_so_tcp_write_xmit_fndecl_41289 tcp_write_xmit fndecl 2 41289 NULL
155032 +enable_so_uni2char_nls_table_41293 uni2char nls_table 0 41293 NULL
155033 +enable_so_kfd_set_pasid_limit_fndecl_41300 kfd_set_pasid_limit fndecl 1 41300 NULL
155034 +enable_so_bop_check_delete_nilfs_bmap_operations_41302 bop_check_delete nilfs_bmap_operations 0 41302 NULL
155035 +enable_so_register_vlan_device_fndecl_41310 register_vlan_device fndecl 2 41310 NULL
155036 +enable_so_d40_size_2_dmalen_fndecl_41311 d40_size_2_dmalen fndecl 0-3-2-1 41311 NULL nohasharray
155037 +enable_so_img_SRAM_size_fw_hdr_41311 img_SRAM_size fw_hdr 0 41311 &enable_so_d40_size_2_dmalen_fndecl_41311
155038 +enable_so_cma_declare_contiguous_fndecl_41316 cma_declare_contiguous fndecl 4-2-5-1 41316 NULL
155039 +enable_so_pc_len_s_pcon_41324 pc_len s_pcon 0 41324 NULL
155040 +enable_so_last_alloc_physical_block_ext2_block_alloc_info_41336 last_alloc_physical_block ext2_block_alloc_info 0 41336 NULL
155041 +enable_so_fanotify_write_fndecl_41340 fanotify_write fndecl 3 41340 NULL
155042 +enable_so_regmap_read_debugfs_fndecl_41345 regmap_read_debugfs fndecl 5 41345 NULL
155043 +enable_so_key_len_wmi_vdev_install_key_arg_41347 key_len wmi_vdev_install_key_arg 0 41347 NULL
155044 +enable_so_transport_lba_64_fndecl_41348 transport_lba_64 fndecl 0 41348 NULL
155045 +enable_so_size_snd_info_entry_41350 size snd_info_entry 0 41350 NULL nohasharray
155046 +enable_so_pool_create_fndecl_41350 pool_create fndecl 3 41350 &enable_so_size_snd_info_entry_41350 nohasharray
155047 +enable_so_ocfs2_read_xattr_block_fndecl_41350 ocfs2_read_xattr_block fndecl 2 41350 &enable_so_pool_create_fndecl_41350
155048 +enable_so_efx_tsoh_get_buffer_fndecl_41355 efx_tsoh_get_buffer fndecl 3 41355 NULL
155049 +enable_so__iwl_dbgfs_d0i3_refs_write_fndecl_41361 _iwl_dbgfs_d0i3_refs_write fndecl 3 41361 NULL
155050 +enable_so_wrsent_cyberjack_private_41371 wrsent cyberjack_private 0 41371 NULL
155051 +enable_so_max_frame_size_mgsl_struct_41374 max_frame_size mgsl_struct 0 41374 NULL
155052 +enable_so_mremap_to_fndecl_41376 mremap_to fndecl 4-3-1-2 41376 NULL nohasharray
155053 +enable_so_sectors_per_block_era_41376 sectors_per_block era 0 41376 &enable_so_mremap_to_fndecl_41376 nohasharray
155054 +enable_so_TupleDataMax_tuple_t_41376 TupleDataMax tuple_t 0 41376 &enable_so_sectors_per_block_era_41376
155055 +enable_so_wsize_nfs_server_41387 wsize nfs_server 0 41387 NULL nohasharray
155056 +enable_so_atomic_write_len_kernfs_ops_41387 atomic_write_len kernfs_ops 0 41387 &enable_so_wsize_nfs_server_41387
155057 +enable_so_l_tree_depth_ocfs2_extent_list_41398 l_tree_depth ocfs2_extent_list 0 41398 NULL
155058 +enable_so_fat32_root_cluster_fat_bios_param_block_41399 fat32_root_cluster fat_bios_param_block 0 41399 NULL
155059 +enable_so_nr_free_zone_pages_fndecl_41403 nr_free_zone_pages fndecl 0 41403 NULL
155060 +enable_so_i2400m_msg_to_dev_fndecl_41409 i2400m_msg_to_dev fndecl 3 41409 NULL
155061 +enable_so_num_channels_fndecl_41411 num_channels fndecl 0-1 41411 NULL
155062 +enable_so_virtio_cread8_fndecl_41431 virtio_cread8 fndecl 0 41431 NULL
155063 +enable_so_snd_pcm_oss_capture_position_fixup_fndecl_41434 snd_pcm_oss_capture_position_fixup fndecl 0 41434 NULL
155064 +enable_so_vram_remap_vardecl_vesafb_c_41441 vram_remap vardecl_vesafb.c 0 41441 NULL
155065 +enable_so_rt2x00debug_write_csr_fndecl_41442 rt2x00debug_write_csr fndecl 3 41442 NULL
155066 +enable_so_rf_blkno_ocfs2_refcount_tree_41452 rf_blkno ocfs2_refcount_tree 0 41452 NULL
155067 +enable_so_max_pd_ib_device_attr_41456 max_pd ib_device_attr 0 41456 NULL
155068 +enable_so_mem_lseek_fndecl_41457 mem_lseek fndecl 2 41457 NULL nohasharray
155069 +enable_so_s_inodes_per_block_ext4_sb_info_41457 s_inodes_per_block ext4_sb_info 0 41457 &enable_so_mem_lseek_fndecl_41457
155070 +enable_so_bio_map_kern_fndecl_41468 bio_map_kern fndecl 3 41468 NULL
155071 +enable_so_pageshift_alauda_media_info_41469 pageshift alauda_media_info 0 41469 NULL
155072 +enable_so_redirected_tty_write_fndecl_41474 redirected_tty_write fndecl 3 41474 NULL
155073 +enable_so_video_offset_sis_video_info_41491 video_offset sis_video_info 0 41491 NULL
155074 +enable_so_lpddr_info_query_fndecl_41492 lpddr_info_query fndecl 0 41492 NULL
155075 +enable_so_compat_core_sys_select_fndecl_41494 compat_core_sys_select fndecl 1 41494 NULL
155076 +enable_so_dir_entries_fat_floppy_defaults_41499 dir_entries fat_floppy_defaults 0 41499 NULL
155077 +enable_so_b_fifo_size_hfcSX_hw_41512 b_fifo_size hfcSX_hw 0 41512 NULL
155078 +enable_so_dccp_setsockopt_service_fndecl_41515 dccp_setsockopt_service fndecl 4 41515 NULL
155079 +enable_so_vpi_atm_vcc_41519 vpi atm_vcc 0 41519 NULL
155080 +enable_so_pcpu_unit_pages_vardecl_percpu_c_41525 pcpu_unit_pages vardecl_percpu.c 0 41525 NULL nohasharray
155081 +enable_so_lv_niovecs_xfs_log_vec_41525 lv_niovecs xfs_log_vec 0 41525 &enable_so_pcpu_unit_pages_vardecl_percpu_c_41525 nohasharray
155082 +enable_so_unpack_array_fndecl_41525 unpack_array fndecl 0 41525 &enable_so_lv_niovecs_xfs_log_vec_41525
155083 +enable_so_alloc_cpu_rmap_fndecl_41536 alloc_cpu_rmap fndecl 1 41536 NULL
155084 +enable_so_sv_xdrsize_svc_serv_41544 sv_xdrsize svc_serv 0 41544 NULL
155085 +enable_so_velocity_change_mtu_fndecl_41548 velocity_change_mtu fndecl 2 41548 NULL
155086 +enable_so_nr_online_nodes_vardecl_41549 nr_online_nodes vardecl 0 41549 NULL
155087 +enable_so_ntargets_aoedev_41550 ntargets aoedev 0 41550 NULL
155088 +enable_so_set_extent_defrag_fndecl_41558 set_extent_defrag fndecl 3-2 41558 NULL
155089 +enable_so_max_nr_ports_virtio_console_config_41559 max_nr_ports virtio_console_config 0 41559 NULL
155090 +enable_so_fpa_set_fndecl_41560 fpa_set fndecl 3-4 41560 NULL
155091 +enable_so_sb_blocklog_xfs_sb_41568 sb_blocklog xfs_sb 0 41568 NULL
155092 +enable_so___alloc_bootmem_nopanic_fndecl_41574 __alloc_bootmem_nopanic fndecl 2-1 41574 NULL
155093 +enable_so___read_vmcore_fndecl_41577 __read_vmcore fndecl 2 41577 NULL
155094 +enable_so_FirstBurstLength_iscsi_sess_ops_41581 FirstBurstLength iscsi_sess_ops 0 41581 NULL
155095 +enable_so_rx_buffersize_b43legacy_dmaring_41583 rx_buffersize b43legacy_dmaring 0 41583 NULL
155096 +enable_so_fuse_write_end_fndecl_41587 fuse_write_end fndecl 5-3 41587 NULL
155097 +enable_so_xpc_kzalloc_cacheline_aligned_fndecl_41610 xpc_kzalloc_cacheline_aligned fndecl 1 41610 NULL
155098 +enable_so_vmalloc_to_pfn_fndecl_41614 vmalloc_to_pfn fndecl 0 41614 NULL
155099 +enable_so_ocfs2_write_begin_nolock_fndecl_41617 ocfs2_write_begin_nolock fndecl 3-4 41617 NULL
155100 +enable_so_jffs2_gc_fetch_inode_fndecl_41629 jffs2_gc_fetch_inode fndecl 2 41629 NULL nohasharray
155101 +enable_so___sw_hweight8_fndecl_41629 __sw_hweight8 fndecl 0 41629 &enable_so_jffs2_gc_fetch_inode_fndecl_41629
155102 +enable_so_drm_calloc_large_fndecl_41630 drm_calloc_large fndecl 1-2 41630 NULL
155103 +enable_so_read_buf_fndecl_41631 read_buf fndecl 3 41631 NULL
155104 +enable_so_ts_longretry_ath_tx_status_41633 ts_longretry ath_tx_status 0 41633 NULL
155105 +enable_so_dm_bm_prefetch_fndecl_41636 dm_bm_prefetch fndecl 2 41636 NULL
155106 +enable_so_tx_ring_size_jme_adapter_41640 tx_ring_size jme_adapter 0 41640 NULL
155107 +enable_so_fnode_hpfs_dirent_41643 fnode hpfs_dirent 0 41643 NULL nohasharray
155108 +enable_so_il_dbgfs_wd_timeout_write_fndecl_41643 il_dbgfs_wd_timeout_write fndecl 3 41643 &enable_so_fnode_hpfs_dirent_41643
155109 +enable_so_clear_user_fndecl_41645 clear_user fndecl 2 41645 NULL
155110 +enable_so_rx_buffer_len_e1000_adapter_41647 rx_buffer_len e1000_adapter 0 41647 NULL
155111 +enable_so_plcp_il_rate_info_41660 plcp il_rate_info 0 41660 NULL
155112 +enable_so_intel_dotclock_calculate_fndecl_41668 intel_dotclock_calculate fndecl 0 41668 NULL
155113 +enable_so_lookup_inline_extent_backref_fndecl_41670 lookup_inline_extent_backref fndecl 6-9-5 41670 NULL
155114 +enable_so_selnl_msglen_fndecl_41672 selnl_msglen fndecl 0 41672 NULL
155115 +enable_so_qib_create_ctxtdata_fndecl_41674 qib_create_ctxtdata fndecl 2 41674 NULL
155116 +enable_so_encrypted_filename_size_ecryptfs_filename_41686 encrypted_filename_size ecryptfs_filename 0 41686 NULL
155117 +enable_so_mem_zatm_dev_41696 mem zatm_dev 0 41696 NULL
155118 +enable_so_nvme_trans_standard_inquiry_page_fndecl_41701 nvme_trans_standard_inquiry_page fndecl 4 41701 NULL
155119 +enable_so_length_usbtest_param_41702 length usbtest_param 0 41702 NULL
155120 +enable_so_zoran_v4l2_calc_bufsize_fndecl_41703 zoran_v4l2_calc_bufsize fndecl 0 41703 NULL
155121 +enable_so_bit_putcs_fndecl_41704 bit_putcs fndecl 4 41704 NULL
155122 +enable_so_bfs_move_blocks_fndecl_41706 bfs_move_blocks fndecl 2-4 41706 NULL
155123 +enable_so_tree_mod_log_eb_copy_fndecl_41708 tree_mod_log_eb_copy fndecl 6 41708 NULL
155124 +enable_so_ax25_recvmsg_fndecl_41714 ax25_recvmsg fndecl 3 41714 NULL
155125 +enable_so_l_curr_block_xlog_41718 l_curr_block xlog 0 41718 NULL
155126 +enable_so_strstart_deflate_state_41719 strstart deflate_state 0 41719 NULL
155127 +enable_so_hlen_ip_tunnel_41720 hlen ip_tunnel 0 41720 NULL
155128 +enable_so_width_tw68_dev_41726 width tw68_dev 0 41726 NULL
155129 +enable_so_xp_max_npartitions_vardecl_41728 xp_max_npartitions vardecl 0 41728 NULL
155130 +enable_so_aead_geniv_setkey_fndecl_41737 aead_geniv_setkey fndecl 3 41737 NULL
155131 +enable_so_sb_sectlog_xfs_sb_41740 sb_sectlog xfs_sb 0 41740 NULL
155132 +enable_so_v4l2_ctrl_handler_init_class_fndecl_41742 v4l2_ctrl_handler_init_class fndecl 2 41742 NULL
155133 +enable_so_val_xfs_sysctl_val_41747 val xfs_sysctl_val 0 41747 NULL
155134 +enable_so_iic_tpm_read_fndecl_41748 iic_tpm_read fndecl 3 41748 NULL
155135 +enable_so_intel_fb_align_height_fndecl_41750 intel_fb_align_height fndecl 2 41750 NULL
155136 +enable_so_bm_key_affs_bm_info_41751 bm_key affs_bm_info 0 41751 NULL
155137 +enable_so_encode_filename3_fndecl_41752 encode_filename3 fndecl 3 41752 NULL
155138 +enable_so_insert_dent_fndecl_41753 insert_dent fndecl 7 41753 NULL
155139 +enable_so_bnx2fc_process_l2_frame_compl_fndecl_41763 bnx2fc_process_l2_frame_compl fndecl 3 41763 NULL
155140 +enable_so_len_cbuf_41764 len cbuf 0 41764 NULL
155141 +enable_so___alloc_bootmem_node_high_fndecl_41767 __alloc_bootmem_node_high fndecl 3-2 41767 NULL
155142 +enable_so_batadv_socket_write_fndecl_41768 batadv_socket_write fndecl 3 41768 NULL
155143 +enable_so_ocfs2_truncate_cluster_pages_fndecl_41773 ocfs2_truncate_cluster_pages fndecl 2-3 41773 NULL
155144 +enable_so_ath9k_multi_regread_fndecl_41779 ath9k_multi_regread fndecl 4 41779 NULL
155145 +enable_so_dma_rx_size_stmmac_priv_41781 dma_rx_size stmmac_priv 0 41781 NULL nohasharray
155146 +enable_so_pg_vec_len_packet_ring_buffer_41781 pg_vec_len packet_ring_buffer 0 41781 &enable_so_dma_rx_size_stmmac_priv_41781
155147 +enable_so_numtx_velocity_opt_41785 numtx velocity_opt 0 41785 NULL
155148 +enable_so_fw_write_fndecl_41790 fw_write fndecl 3 41790 NULL
155149 +enable_so_max_msg_length_mei_client_properties_41791 max_msg_length mei_client_properties 0 41791 NULL
155150 +enable_so_usbtest_alloc_urb_fndecl_41800 usbtest_alloc_urb fndecl 3-5-2 41800 NULL
155151 +enable_so_rx_pkt_length_rxpd_41805 rx_pkt_length rxpd 0 41805 NULL
155152 +enable_so_alloc_ksz_desc_info_41806 alloc ksz_desc_info 0 41806 NULL nohasharray
155153 +enable_so_outlen_mlx5_cmd_debug_41806 outlen mlx5_cmd_debug 0 41806 &enable_so_alloc_ksz_desc_info_41806
155154 +enable_so_ath9k_dump_mci_btcoex_fndecl_41809 ath9k_dump_mci_btcoex fndecl 3 41809 NULL nohasharray
155155 +enable_so_send_create_inode_fndecl_41809 send_create_inode fndecl 2 41809 &enable_so_ath9k_dump_mci_btcoex_fndecl_41809
155156 +enable_so_udf_get_pblock_fndecl_41813 udf_get_pblock fndecl 0-4-2 41813 NULL
155157 +enable_so_sisusb_num_columns_sisusb_usb_data_41814 sisusb_num_columns sisusb_usb_data 0 41814 NULL
155158 +enable_so_n_ssids_wmi_start_scan_arg_41826 n_ssids wmi_start_scan_arg 0 41826 NULL
155159 +enable_so_s_bitmap_ino_omfs_sb_info_41835 s_bitmap_ino omfs_sb_info 0 41835 NULL
155160 +enable_so_gfs2_adjust_reservation_fndecl_41836 gfs2_adjust_reservation fndecl 3 41836 NULL
155161 +enable_so_root_btrfs_super_block_41846 root btrfs_super_block 0 41846 NULL
155162 +enable_so_al_tr_number_drbd_device_41847 al_tr_number drbd_device 0 41847 NULL
155163 +enable_so_ar5523_cmd_write_fndecl_41852 ar5523_cmd_write fndecl 4 41852 NULL
155164 +enable_so_compatsize_xt_target_41854 compatsize xt_target 0 41854 NULL
155165 +enable_so_dm_add_exception_fndecl_41858 dm_add_exception fndecl 3-2 41858 NULL
155166 +enable_so_ext_tree_mark_written_fndecl_41860 ext_tree_mark_written fndecl 2-3 41860 NULL nohasharray
155167 +enable_so_nla_reserve_nohdr_fndecl_41860 nla_reserve_nohdr fndecl 2 41860 &enable_so_ext_tree_mark_written_fndecl_41860
155168 +enable_so_md_size_sect_drbd_md_41886 md_size_sect drbd_md 0 41886 NULL
155169 +enable_so_rcvidx_fritz_bcs_41889 rcvidx fritz_bcs 0 41889 NULL
155170 +enable_so_RequestFrameSize__MSG_IOC_FACTS_REPLY_41895 RequestFrameSize _MSG_IOC_FACTS_REPLY 0 41895 NULL
155171 +enable_so_from_seq_file_41897 from seq_file 0 41897 NULL
155172 +enable_so_wm8900_set_fll_fndecl_41903 wm8900_set_fll fndecl 3-4 41903 NULL
155173 +enable_so_length_zoran_sync_41909 length zoran_sync 0 41909 NULL
155174 +enable_so_raw_decoder_line_size_vbi_info_41920 raw_decoder_line_size vbi_info 0 41920 NULL
155175 +enable_so_print_endpoint_stat_fndecl_41923 print_endpoint_stat fndecl 4-0-3 41923 NULL
155176 +enable_so_num_descriptors_wmi_p2p_noa_info_41924 num_descriptors wmi_p2p_noa_info 0 41924 NULL
155177 +enable_so_rssiThreshold_ConfigRid_41926 rssiThreshold ConfigRid 0 41926 NULL
155178 +enable_so_ss_nblocks_nilfs_segment_summary_41935 ss_nblocks nilfs_segment_summary 0 41935 NULL
155179 +enable_so_n_sel_arg_struct_41940 n sel_arg_struct 0 41940 NULL
155180 +enable_so_ide_init_sg_cmd_fndecl_41962 ide_init_sg_cmd fndecl 2 41962 NULL
155181 +enable_so_iamthif_mtu_mei_device_41963 iamthif_mtu mei_device 0 41963 NULL
155182 +enable_so_relay_open_fndecl_41964 relay_open fndecl 3-4 41964 NULL nohasharray
155183 +enable_so_kmalloc_parameter_fndecl_41964 kmalloc_parameter fndecl 1 41964 &enable_so_relay_open_fndecl_41964
155184 +enable_so_n_rbuf_srpt_send_ioctx_41965 n_rbuf srpt_send_ioctx 0 41965 NULL
155185 +enable_so_hsync_ast_vbios_enhtable_41977 hsync ast_vbios_enhtable 0 41977 NULL nohasharray
155186 +enable_so_max_req_queues_qla_hw_data_41977 max_req_queues qla_hw_data 0 41977 &enable_so_hsync_ast_vbios_enhtable_41977
155187 +enable_so_beg___reiserfs_blocknr_hint_41984 beg __reiserfs_blocknr_hint 0 41984 NULL
155188 +enable_so_va_end_vmap_area_41988 va_end vmap_area 0 41988 NULL
155189 +enable_so_snd_pcm_oss_read1_fndecl_41992 snd_pcm_oss_read1 fndecl 3 41992 NULL
155190 +enable_so_snd_opl4_mem_proc_read_fndecl_41997 snd_opl4_mem_proc_read fndecl 5 41997 NULL
155191 +enable_so_page_offset_ixgbevf_rx_buffer_42004 page_offset ixgbevf_rx_buffer 0 42004 NULL
155192 +enable_so___ieee80211_start_rx_ba_session_fndecl_42023 __ieee80211_start_rx_ba_session fndecl 7 42023 NULL
155193 +enable_so_copy_nodes_to_user_fndecl_42028 copy_nodes_to_user fndecl 2 42028 NULL
155194 +enable_so_mwifiex_11n_create_rx_reorder_tbl_fndecl_42029 mwifiex_11n_create_rx_reorder_tbl fndecl 4 42029 NULL
155195 +enable_so_spidev_compat_ioctl_fndecl_42033 spidev_compat_ioctl fndecl 2 42033 NULL
155196 +enable_so_ctrl_frame_len_brcmf_sdio_42037 ctrl_frame_len brcmf_sdio 0 42037 NULL
155197 +enable_so_reiserfs_new_inode_fndecl_42039 reiserfs_new_inode fndecl 5 42039 NULL
155198 +enable_so_rx_hr_cfv_info_42044 rx_hr cfv_info 0 42044 NULL
155199 +enable_so_num_tid_range_42045 num tid_range 0 42045 NULL nohasharray
155200 +enable_so_num_tx_qp_i40e_hw_capabilities_42045 num_tx_qp i40e_hw_capabilities 0 42045 &enable_so_num_tid_range_42045
155201 +enable_so_address_x86_exception_42048 address x86_exception 0 42048 NULL
155202 +enable_so_regmap_multi_reg_write_fndecl_42049 regmap_multi_reg_write fndecl 3 42049 NULL
155203 +enable_so_sel_write_load_fndecl_42053 sel_write_load fndecl 3 42053 NULL
155204 +enable_so_kvm_init_fndecl_42057 kvm_init fndecl 2-3 42057 NULL
155205 +enable_so_blk_limits_io_min_fndecl_42065 blk_limits_io_min fndecl 2 42065 NULL nohasharray
155206 +enable_so_b_flags_ivtv_buffer_42065 b_flags ivtv_buffer 0 42065 &enable_so_blk_limits_io_min_fndecl_42065
155207 +enable_so_frag_size_ipv6_pinfo_42073 frag_size ipv6_pinfo 0 42073 NULL
155208 +enable_so_ieee80211_scan_results_fndecl_42078 ieee80211_scan_results fndecl 0 42078 NULL
155209 +enable_so_mlx4_ib_rereg_user_mr_fndecl_42079 mlx4_ib_rereg_user_mr fndecl 3 42079 NULL
155210 +enable_so_read_page_owner_fndecl_42094 read_page_owner fndecl 3 42094 NULL
155211 +enable_so_outsize_cros_ec_command_42095 outsize cros_ec_command 0 42095 NULL
155212 +enable_so_do_syslog_fndecl_42100 do_syslog fndecl 3 42100 NULL
155213 +enable_so_proc_pid_attr_write_fndecl_42102 proc_pid_attr_write fndecl 3 42102 NULL
155214 +enable_so_image_offset_sd_42111 image_offset sd 0 42111 NULL
155215 +enable_so_efs_bmap_fndecl_42112 efs_bmap fndecl 0-2 42112 NULL
155216 +enable_so_jbd2_journal_init_dev_fndecl_42115 jbd2_journal_init_dev fndecl 5-3 42115 NULL
155217 +enable_so_ceph_tcp_sendmsg_fndecl_42116 ceph_tcp_sendmsg fndecl 0 42116 NULL
155218 +enable_so_xhci_alloc_stream_info_fndecl_42125 xhci_alloc_stream_info fndecl 3 42125 NULL
155219 +enable_so_lastblock_udf_options_42142 lastblock udf_options 0 42142 NULL
155220 +enable_so_snd_compr_write_fndecl_42144 snd_compr_write fndecl 3 42144 NULL
155221 +enable_so_uvc_alloc_urb_buffers_fndecl_42145 uvc_alloc_urb_buffers fndecl 3-2 42145 NULL
155222 +enable_so_num_cliprects_drm_i915_gem_execbuffer2_42146 num_cliprects drm_i915_gem_execbuffer2 0 42146 NULL
155223 +enable_so_channels_audioformat_42156 channels audioformat 0 42156 NULL nohasharray
155224 +enable_so_cnic_support_bnx2x_42156 cnic_support bnx2x 0 42156 &enable_so_channels_audioformat_42156
155225 +enable_so_status_de4x5_desc_42161 status de4x5_desc 0 42161 NULL
155226 +enable_so_height_em28xx_v4l2_42166 height em28xx_v4l2 0 42166 NULL
155227 +enable_so_s_root_block_reiserfs_super_block_v1_42167 s_root_block reiserfs_super_block_v1 0 42167 NULL
155228 +enable_so_copy_from_iter_nocache_fndecl_42168 copy_from_iter_nocache fndecl 2 42168 NULL
155229 +enable_so_next_bucket_prio_set_42171 next_bucket prio_set 0 42171 NULL
155230 +enable_so_start_file_extent_cluster_42173 start file_extent_cluster 0 42173 NULL
155231 +enable_so_fb_cvt_vtotal_fndecl_42174 fb_cvt_vtotal fndecl 0 42174 NULL
155232 +enable_so_block_size_msb_data_42179 block_size msb_data 0 42179 NULL
155233 +enable_so_stv0367_writeregs_fndecl_42183 stv0367_writeregs fndecl 4 42183 NULL
155234 +enable_so_s2255_fillbuff_fndecl_42189 s2255_fillbuff fndecl 3 42189 NULL
155235 +enable_so___team_options_register_fndecl_42198 __team_options_register fndecl 3 42198 NULL
155236 +enable_so_mc_handle_present_pte_fndecl_42199 mc_handle_present_pte fndecl 2 42199 NULL
155237 +enable_so_udl_alloc_urb_list_fndecl_42203 udl_alloc_urb_list fndecl 3 42203 NULL
155238 +enable_so_rec_len_ext3_dir_entry_2_42207 rec_len ext3_dir_entry_2 0 42207 NULL
155239 +enable_so_ext4_block_bitmap_set_fndecl_42228 ext4_block_bitmap_set fndecl 3 42228 NULL
155240 +enable_so_dwMaxVideoFrameBufferSize_uvc_frame_42230 dwMaxVideoFrameBufferSize uvc_frame 0 42230 NULL
155241 +enable_so_num_q_vectors_igb_adapter_42232 num_q_vectors igb_adapter 0 42232 NULL
155242 +enable_so_max_data_size_irda_sock_42236 max_data_size irda_sock 0 42236 NULL nohasharray
155243 +enable_so_chunksize_mdp_superblock_1_42236 chunksize mdp_superblock_1 0 42236 &enable_so_max_data_size_irda_sock_42236
155244 +enable_so_scrollback_phys_max_vardecl_fbcon_c_42241 scrollback_phys_max vardecl_fbcon.c 0 42241 NULL
155245 +enable_so_buf_write_ptr_comedi_async_42247 buf_write_ptr comedi_async 0 42247 NULL
155246 +enable_so_nchunks_radeon_cs_parser_42251 nchunks radeon_cs_parser 0 42251 NULL
155247 +enable_so_read_kcore_fndecl_42259 read_kcore fndecl 3 42259 NULL
155248 +enable_so_filename_compute_type_fndecl_42263 filename_compute_type fndecl 4 42263 NULL
155249 +enable_so_snd_pcm_plug_write_transfer_fndecl_42268 snd_pcm_plug_write_transfer fndecl 3-0 42268 NULL
155250 +enable_so_write_file_spectral_period_fndecl_42275 write_file_spectral_period fndecl 3 42275 NULL
155251 +enable_so_if_sdio_read_scratch_fndecl_42279 if_sdio_read_scratch fndecl 0 42279 NULL
155252 +enable_so_append_to_buffer_fndecl_42285 append_to_buffer fndecl 3 42285 NULL
155253 +enable_so_reiserfs_xattr_set_handle_fndecl_42289 reiserfs_xattr_set_handle fndecl 5 42289 NULL
155254 +enable_so_efx_mcdi_rpc_async_fndecl_42298 efx_mcdi_rpc_async fndecl 4-5 42298 NULL
155255 +enable_so_ubi_more_leb_change_data_fndecl_42301 ubi_more_leb_change_data fndecl 4 42301 NULL
155256 +enable_so_iwch_reg_user_mr_fndecl_42308 iwch_reg_user_mr fndecl 2 42308 NULL nohasharray
155257 +enable_so_dcache_dir_lseek_fndecl_42308 dcache_dir_lseek fndecl 2 42308 &enable_so_iwch_reg_user_mr_fndecl_42308
155258 +enable_so_deh_offset_reiserfs_de_head_42314 deh_offset reiserfs_de_head 0 42314 NULL nohasharray
155259 +enable_so_rproc_alloc_fndecl_42314 rproc_alloc fndecl 5 42314 &enable_so_deh_offset_reiserfs_de_head_42314
155260 +enable_so_sm_addr_sm501_mem_42315 sm_addr sm501_mem 0 42315 NULL
155261 +enable_so_kvm_write_guest_page_fndecl_42320 kvm_write_guest_page fndecl 2-5 42320 NULL nohasharray
155262 +enable_so_pg_test_nfs_pageio_ops_42320 pg_test nfs_pageio_ops 0 42320 &enable_so_kvm_write_guest_page_fndecl_42320
155263 +enable_so_gsi_base_mp_ioapic_gsi_42330 gsi_base mp_ioapic_gsi 0 42330 NULL
155264 +enable_so_fw_xcb_count_qla_hw_data_42354 fw_xcb_count qla_hw_data 0 42354 NULL
155265 +enable_so_symbol_build_supp_rates_fndecl_42369 symbol_build_supp_rates fndecl 0 42369 NULL
155266 +enable_so_acc_len_rcv_sli3_42370 acc_len rcv_sli3 0 42370 NULL
155267 +enable_so_devpts_pty_new_fndecl_42373 devpts_pty_new fndecl 3 42373 NULL
155268 +enable_so_hid_report_len_fndecl_42374 hid_report_len fndecl 0 42374 NULL
155269 +enable_so_salt_size_dm_verity_42377 salt_size dm_verity 0 42377 NULL
155270 +enable_so_mlx5_wq_ll_get_size_fndecl_42379 mlx5_wq_ll_get_size fndecl 0 42379 NULL
155271 +enable_so_placement_offset_bnx2x_agg_info_42380 placement_offset bnx2x_agg_info 0 42380 NULL
155272 +enable_so_prof_len_vardecl_profile_c_42405 prof_len vardecl_profile.c 0 42405 NULL
155273 +enable_so_maximum_v4l2_ctrl_42407 maximum v4l2_ctrl 0 42407 NULL
155274 +enable_so_dma_rxsize_vardecl_stmmac_main_c_42409 dma_rxsize vardecl_stmmac_main.c 0 42409 NULL
155275 +enable_so_length_mei_msg_hdr_42413 length mei_msg_hdr 0 42413 NULL
155276 +enable_so_ext2_xattr_security_set_fndecl_42417 ext2_xattr_security_set fndecl 4 42417 NULL
155277 +enable_so_proc_loginuid_write_fndecl_42419 proc_loginuid_write fndecl 3 42419 NULL
155278 +enable_so_defrag_lookup_extent_fndecl_42423 defrag_lookup_extent fndecl 2 42423 NULL
155279 +enable_so_hidraw_ioctl_fndecl_42425 hidraw_ioctl fndecl 2 42425 NULL
155280 +enable_so_dir_block_index_fndecl_42430 dir_block_index fndecl 0-3-2 42430 NULL
155281 +enable_so_bin_search_fndecl_42434 bin_search fndecl 0 42434 NULL
155282 +enable_so_write_file_spectral_fft_period_fndecl_42435 write_file_spectral_fft_period fndecl 3 42435 NULL
155283 +enable_so_s_sys_blocksize_omfs_sb_info_42439 s_sys_blocksize omfs_sb_info 0 42439 NULL
155284 +enable_so_rx_ring_size_jme_adapter_42440 rx_ring_size jme_adapter 0 42440 NULL
155285 +enable_so_pebs_enabled_cpu_hw_events_42442 pebs_enabled cpu_hw_events 0 42442 NULL
155286 +enable_so_read_segment_descriptor_fndecl_42449 read_segment_descriptor fndecl 2 42449 NULL
155287 +enable_so_max_srqs_mthca_dev_lim_42450 max_srqs mthca_dev_lim 0 42450 NULL
155288 +enable_so_rx_size_uart_8250_dma_42452 rx_size uart_8250_dma 0 42452 NULL
155289 +enable_so_inquiry_cache_dump_fndecl_42455 inquiry_cache_dump fndecl 0 42455 NULL
155290 +enable_so_s_cssize_ufs_sb_private_info_42456 s_cssize ufs_sb_private_info 0 42456 NULL
155291 +enable_so_num_srqs_mlx4_caps_42462 num_srqs mlx4_caps 0 42462 NULL
155292 +enable_so_ext4_get_journal_fndecl_42475 ext4_get_journal fndecl 2 42475 NULL nohasharray
155293 +enable_so_amdgpu_vm_block_size_vardecl_42475 amdgpu_vm_block_size vardecl 0 42475 &enable_so_ext4_get_journal_fndecl_42475
155294 +enable_so_wm9081_set_fll_fndecl_42479 wm9081_set_fll fndecl 3-4 42479 NULL
155295 +enable_so_max_allowed_qxl_monitors_config_42481 max_allowed qxl_monitors_config 0 42481 NULL
155296 +enable_so_snd_vxpocket_new_fndecl_42483 snd_vxpocket_new fndecl 2 42483 NULL
155297 +enable_so_block_shift_befs_sb_info_42485 block_shift befs_sb_info 0 42485 NULL
155298 +enable_so_tot_len_pkt_gl_42487 tot_len pkt_gl 0 42487 NULL
155299 +enable_so_btrfs_insert_delayed_dir_index_fndecl_42491 btrfs_insert_delayed_dir_index fndecl 8-4 42491 NULL
155300 +enable_so_keylength_gss_krb5_enctype_42493 keylength gss_krb5_enctype 0 42493 NULL
155301 +enable_so_bpf_check_classic_fndecl_42501 bpf_check_classic fndecl 2 42501 NULL
155302 +enable_so_DataTransferLength_DAC960_V1_UserCommand_42502 DataTransferLength DAC960_V1_UserCommand 0 42502 NULL
155303 +enable_so_ath6kl_sdio_read_write_sync_fndecl_42504 ath6kl_sdio_read_write_sync fndecl 4 42504 NULL
155304 +enable_so_fs_start_efs_sb_info_42506 fs_start efs_sb_info 0 42506 NULL
155305 +enable_so_dec_cluster_info_page_fndecl_42521 dec_cluster_info_page fndecl 3 42521 NULL
155306 +enable_so_xfs_rtmodify_summary_fndecl_42522 xfs_rtmodify_summary fndecl 4-3 42522 NULL
155307 +enable_so_cn_netlink_send_mult_fndecl_42523 cn_netlink_send_mult fndecl 2 42523 NULL
155308 +enable_so_maxframe_size_fc_rport_priv_42527 maxframe_size fc_rport_priv 0 42527 NULL
155309 +enable_so_size_rx_desc_42538 size rx_desc 0 42538 NULL
155310 +enable_so_max_payload_len_pn533_frame_ops_42544 max_payload_len pn533_frame_ops 0 42544 NULL nohasharray
155311 +enable_so_info_debugfs_read_fndecl_42544 info_debugfs_read fndecl 3 42544 &enable_so_max_payload_len_pn533_frame_ops_42544
155312 +enable_so_xfs_dir_cilookup_result_fndecl_42547 xfs_dir_cilookup_result fndecl 3 42547 NULL
155313 +enable_so_mr_page_size_srp_device_42550 mr_page_size srp_device 0 42550 NULL
155314 +enable_so_qla8044_write_optrom_data_fndecl_42561 qla8044_write_optrom_data fndecl 4 42561 NULL
155315 +enable_so_mtu_max_vardecl_42563 mtu_max vardecl 0 42563 NULL nohasharray
155316 +enable_so_ts_write_fndecl_42563 ts_write fndecl 3 42563 &enable_so_mtu_max_vardecl_42563
155317 +enable_so_s_block_base_sysv_sb_info_42564 s_block_base sysv_sb_info 0 42564 NULL
155318 +enable_so_usbtmc_write_fndecl_42567 usbtmc_write fndecl 3 42567 NULL
155319 +enable_so_ufs_read_cylinder_fndecl_42577 ufs_read_cylinder fndecl 2 42577 NULL
155320 +enable_so_max_target_id_mvumi_hba_42578 max_target_id mvumi_hba 0 42578 NULL
155321 +enable_so_tipc_send_packet_fndecl_42584 tipc_send_packet fndecl 3 42584 NULL
155322 +enable_so_clk_calc_subtree_fndecl_42586 clk_calc_subtree fndecl 2 42586 NULL nohasharray
155323 +enable_so_sisusbcon_clear_fndecl_42586 sisusbcon_clear fndecl 5-3-4 42586 &enable_so_clk_calc_subtree_fndecl_42586
155324 +enable_so_bcm3510_readbytes_fndecl_42592 bcm3510_readbytes fndecl 4 42592 NULL
155325 +enable_so_name_len_jffs2_xattr_datum_42593 name_len jffs2_xattr_datum 0 42593 NULL
155326 +enable_so_cdc_ncm_set_dgram_size_fndecl_42594 cdc_ncm_set_dgram_size fndecl 2 42594 NULL
155327 +enable_so_bsize_nfs_parsed_mount_data_42598 bsize nfs_parsed_mount_data 0 42598 NULL
155328 +enable_so_reg_create_fndecl_42599 reg_create fndecl 5 42599 NULL
155329 +enable_so_maxSenseBytes_mpt_ioctl_command_42600 maxSenseBytes mpt_ioctl_command 0 42600 NULL
155330 +enable_so_ilo_write_fndecl_42601 ilo_write fndecl 3 42601 NULL nohasharray
155331 +enable_so_ndev_init_isr_fndecl_42601 ndev_init_isr fndecl 3 42601 &enable_so_ilo_write_fndecl_42601
155332 +enable_so_next_rs_il3945_rate_info_42604 next_rs il3945_rate_info 0 42604 NULL nohasharray
155333 +enable_so_nilfs_alloc_seg_bio_fndecl_42604 nilfs_alloc_seg_bio fndecl 2 42604 &enable_so_next_rs_il3945_rate_info_42604
155334 +enable_so_qlcnic_82xx_calculate_msix_vector_fndecl_42609 qlcnic_82xx_calculate_msix_vector fndecl 0 42609 NULL
155335 +enable_so_n_channels_wmi_start_scan_arg_42610 n_channels wmi_start_scan_arg 0 42610 NULL
155336 +enable_so_hashsize_Qdisc_class_hash_42616 hashsize Qdisc_class_hash 0 42616 NULL
155337 +enable_so_user_regset_copyin_fndecl_42619 user_regset_copyin fndecl 7 42619 NULL
155338 +enable_so_wlc_phy_loadsampletable_nphy_fndecl_42620 wlc_phy_loadsampletable_nphy fndecl 3 42620 NULL
155339 +enable_so_opt_len_genevehdr_42621 opt_len genevehdr 0 42621 NULL
155340 +enable_so_nfs42_proc_deallocate_fndecl_42622 nfs42_proc_deallocate fndecl 2-3 42622 NULL
155341 +enable_so_length_bplus_leaf_node_42626 length bplus_leaf_node 0 42626 NULL
155342 +enable_so_pidlist_allocate_fndecl_42631 pidlist_allocate fndecl 1 42631 NULL
155343 +enable_so_dm_set_device_limits_fndecl_42632 dm_set_device_limits fndecl 3 42632 NULL
155344 +enable_so_valid_ide_tape_obj_42635 valid ide_tape_obj 0 42635 NULL
155345 +enable_so_find_rsb_dir_fndecl_42636 find_rsb_dir fndecl 3 42636 NULL
155346 +enable_so_brcmf_sdio_download_nvram_fndecl_42648 brcmf_sdio_download_nvram fndecl 3 42648 NULL
155347 +enable_so_fuse_getxattr_fndecl_42649 fuse_getxattr fndecl 4 42649 NULL
155348 +enable_so_mpt_loadtime_max_sectors_vardecl_mptsas_c_42653 mpt_loadtime_max_sectors vardecl_mptsas.c 0 42653 NULL
155349 +enable_so___kfifo_dma_out_finish_r_fndecl_42656 __kfifo_dma_out_finish_r fndecl 2 42656 NULL
155350 +enable_so_vOver_plus_panel_info_42670 vOver_plus panel_info 0 42670 NULL
155351 +enable_so_keyctl_get_security_fndecl_42673 keyctl_get_security fndecl 3 42673 NULL
155352 +enable_so_max_probe_length_iwl_ucode_capabilities_42674 max_probe_length iwl_ucode_capabilities 0 42674 NULL
155353 +enable_so_mxm_shadow_rom_fetch_fndecl_42681 mxm_shadow_rom_fetch fndecl 4 42681 NULL
155354 +enable_so_num_rx_bds_bcm_sysport_priv_42683 num_rx_bds bcm_sysport_priv 0 42683 NULL
155355 +enable_so_ext4_trim_extent_fndecl_42684 ext4_trim_extent fndecl 3-4-2 42684 NULL nohasharray
155356 +enable_so_n_sections_pefile_context_42684 n_sections pefile_context 0 42684 &enable_so_ext4_trim_extent_fndecl_42684
155357 +enable_so_oom_adj_write_fndecl_42687 oom_adj_write fndecl 3 42687 NULL
155358 +enable_so_BufferLength_respQ_e_42691 BufferLength respQ_e 0 42691 NULL
155359 +enable_so_cf_bytes_cifs_fattr_42692 cf_bytes cifs_fattr 0 42692 NULL
155360 +enable_so_data_size_dm_ioctl_42701 data_size dm_ioctl 0 42701 NULL nohasharray
155361 +enable_so_vm_map_ram_fndecl_42701 vm_map_ram fndecl 2 42701 &enable_so_data_size_dm_ioctl_42701
155362 +enable_so_transport_lba_64_ext_fndecl_42705 transport_lba_64_ext fndecl 0 42705 NULL
155363 +enable_so_len_nfs4_layoutdriver_data_42714 len nfs4_layoutdriver_data 0 42714 NULL nohasharray
155364 +enable_so_reordering_tcp_sock_42714 reordering tcp_sock 0 42714 &enable_so_len_nfs4_layoutdriver_data_42714
155365 +enable_so_start_sect_hd_struct_42718 start_sect hd_struct 0 42718 NULL
155366 +enable_so_rcvtidcnt_qib_devdata_42719 rcvtidcnt qib_devdata 0 42719 NULL
155367 +enable_so_clsb_isar_hw_42720 clsb isar_hw 0 42720 NULL
155368 +enable_so_interlace_fb_cvt_data_42725 interlace fb_cvt_data 0 42725 NULL
155369 +enable_so_status_full_rx_done_desc_42726 status full_rx_done_desc 0 42726 NULL
155370 +enable_so_tda10071_wr_regs_fndecl_42727 tda10071_wr_regs fndecl 4 42727 NULL
155371 +enable_so_handle_abnormal_pfn_fndecl_42730 handle_abnormal_pfn fndecl 3 42730 NULL
155372 +enable_so_maxbcnt_aoedev_42731 maxbcnt aoedev 0 42731 NULL
155373 +enable_so_irq_domain_alloc_descs_fndecl_42732 irq_domain_alloc_descs fndecl 2 42732 NULL
155374 +enable_so_single_open_size_fndecl_42736 single_open_size fndecl 4 42736 NULL
155375 +enable_so_nilfs_skip_summary_info_fndecl_42739 nilfs_skip_summary_info fndecl 4-5 42739 NULL
155376 +enable_so_head_hid_debug_list_42742 head hid_debug_list 0 42742 NULL
155377 +enable_so_Ha_tvnorm_42743 Ha tvnorm 0 42743 NULL nohasharray
155378 +enable_so_tcp_adjust_pcount_fndecl_42743 tcp_adjust_pcount fndecl 3 42743 &enable_so_Ha_tvnorm_42743
155379 +enable_so_p54_parse_rssical_fndecl_42750 p54_parse_rssical fndecl 3 42750 NULL
155380 +enable_so_SyS_rt_sigpending_fndecl_42753 SyS_rt_sigpending fndecl 2 42753 NULL
155381 +enable_so_bmc150_accel_fifo_transfer_fndecl_42755 bmc150_accel_fifo_transfer fndecl 3 42755 NULL
155382 +enable_so_tcf_csum_skb_nextlayer_fndecl_42762 tcf_csum_skb_nextlayer fndecl 3 42762 NULL
155383 +enable_so_elems_v4l2_ctrl_42763 elems v4l2_ctrl 0 42763 NULL
155384 +enable_so_dc_block_number_disk_child_42766 dc_block_number disk_child 0 42766 NULL
155385 +enable_so_cmd_idx_rtsx_ucr_42770 cmd_idx rtsx_ucr 0 42770 NULL nohasharray
155386 +enable_so_ie_len_wmi_start_scan_arg_42770 ie_len wmi_start_scan_arg 0 42770 &enable_so_cmd_idx_rtsx_ucr_42770
155387 +enable_so_fw_len_mwifiex_fw_image_42772 fw_len mwifiex_fw_image 0 42772 NULL
155388 +enable_so_sz_qib_hwerror_msgs_42780 sz qib_hwerror_msgs 0 42780 NULL
155389 +enable_so_lov_tgt_size_lov_obd_42782 lov_tgt_size lov_obd 0 42782 NULL
155390 +enable_so_rx_data_length_hso_serial_42783 rx_data_length hso_serial 0 42783 NULL
155391 +enable_so_usbnet_change_mtu_fndecl_42784 usbnet_change_mtu fndecl 2 42784 NULL nohasharray
155392 +enable_so_ssid_len_ath6kl_vif_42784 ssid_len ath6kl_vif 0 42784 &enable_so_usbnet_change_mtu_fndecl_42784
155393 +enable_so_offset_fuse_page_desc_42785 offset fuse_page_desc 0 42785 NULL
155394 +enable_so_hperiod_fb_cvt_data_42792 hperiod fb_cvt_data 0 42792 NULL nohasharray
155395 +enable_so_sc_name_len_nfs4_setclientid_42792 sc_name_len nfs4_setclientid 0 42792 &enable_so_hperiod_fb_cvt_data_42792
155396 +enable_so_add_new_free_space_fndecl_42796 add_new_free_space fndecl 3-4 42796 NULL
155397 +enable_so_xdr_encode_word_fndecl_42802 xdr_encode_word fndecl 2 42802 NULL
155398 +enable_so_SyS_fsetxattr_fndecl_42804 SyS_fsetxattr fndecl 4 42804 NULL
155399 +enable_so_ext4_quota_write_fndecl_42809 ext4_quota_write fndecl 5 42809 NULL nohasharray
155400 +enable_so_len_il3945_rx_frame_hdr_42809 len il3945_rx_frame_hdr 0 42809 &enable_so_ext4_quota_write_fndecl_42809
155401 +enable_so_nl80211_send_rx_assoc_fndecl_42811 nl80211_send_rx_assoc fndecl 4 42811 NULL
155402 +enable_so_usb_hcd_unlink_urb_fndecl_42819 usb_hcd_unlink_urb fndecl 2 42819 NULL
155403 +enable_so_sl_realloc_bufs_fndecl_42821 sl_realloc_bufs fndecl 2 42821 NULL
155404 +enable_so_m_agino_log_xfs_mount_42823 m_agino_log xfs_mount 0 42823 NULL
155405 +enable_so_clear_update_marker_fndecl_42827 clear_update_marker fndecl 3 42827 NULL
155406 +enable_so_ezusb_program_bytes_fndecl_42828 ezusb_program_bytes fndecl 4 42828 NULL
155407 +enable_so_end_point_addr_cx231xx_audio_42840 end_point_addr cx231xx_audio 0 42840 NULL nohasharray
155408 +enable_so_decompress_compressor_42840 decompress compressor 0 42840 &enable_so_end_point_addr_cx231xx_audio_42840
155409 +enable_so_btrfs_copy_root_fndecl_42844 btrfs_copy_root fndecl 5 42844 NULL
155410 +enable_so_memory_block_size_bytes_fndecl_42846 memory_block_size_bytes fndecl 0 42846 NULL
155411 +enable_so_old_oblock_dm_cache_migration_42847 old_oblock dm_cache_migration 0 42847 NULL
155412 +enable_so_extent_trunc_fndecl_42849 extent_trunc fndecl 4-6-5 42849 NULL
155413 +enable_so_int_in_endpointAddr_usb_yurex_42850 int_in_endpointAddr usb_yurex 0 42850 NULL
155414 +enable_so_rdma_addr_size_fndecl_42855 rdma_addr_size fndecl 0 42855 NULL
155415 +enable_so_vxlan_remcsum_fndecl_42858 vxlan_remcsum fndecl 4-3 42858 NULL
155416 +enable_so_ext4_prepare_inline_data_fndecl_42863 ext4_prepare_inline_data fndecl 3 42863 NULL nohasharray
155417 +enable_so_wqe_size_ib_uverbs_post_srq_recv_42863 wqe_size ib_uverbs_post_srq_recv 0 42863 &enable_so_ext4_prepare_inline_data_fndecl_42863
155418 +enable_so_SyS_set_mempolicy_fndecl_42867 SyS_set_mempolicy fndecl 3 42867 NULL
155419 +enable_so_log_size_vardecl_verifier_c_42884 log_size vardecl_verifier.c 0 42884 NULL
155420 +enable_so_count_netdev_hw_addr_list_42886 count netdev_hw_addr_list 0 42886 NULL
155421 +enable_so_init_bch_fndecl_42897 init_bch fndecl 1-2 42897 NULL
155422 +enable_so_get_default_root_fndecl_42898 get_default_root fndecl 2 42898 NULL
155423 +enable_so_name_length_spar_controlvm_parameters_header_42909 name_length spar_controlvm_parameters_header 0 42909 NULL
155424 +enable_so_vd_vblocknr_nilfs_vdesc_42910 vd_vblocknr nilfs_vdesc 0 42910 NULL nohasharray
155425 +enable_so_tc_index_bitmap_bits_asd_seq_data_42910 tc_index_bitmap_bits asd_seq_data 0 42910 &enable_so_vd_vblocknr_nilfs_vdesc_42910
155426 +enable_so_rts51x_bulk_transport_fndecl_42911 rts51x_bulk_transport fndecl 6 42911 NULL nohasharray
155427 +enable_so_ablkcipher_copy_iv_fndecl_42911 ablkcipher_copy_iv fndecl 3 42911 &enable_so_rts51x_bulk_transport_fndecl_42911
155428 +enable_so_length_drm_property_blob_42912 length drm_property_blob 0 42912 NULL
155429 +enable_so_clkin_adf4350_state_42914 clkin adf4350_state 0 42914 NULL
155430 +enable_so_wMaxInputLength_i2c_hid_desc_42932 wMaxInputLength i2c_hid_desc 0 42932 NULL
155431 +enable_so_bnx2x_vf_mcast_fndecl_42933 bnx2x_vf_mcast fndecl 4 42933 NULL
155432 +enable_so_max_mad_size_ib_port_immutable_42934 max_mad_size ib_port_immutable 0 42934 NULL
155433 +enable_so_nblocks_nvme_user_io_42935 nblocks nvme_user_io 0 42935 NULL
155434 +enable_so_length__SCADESC_42942 length _SCADESC 0 42942 NULL
155435 +enable_so_rate_n_flags_iwl_mvm_tid_data_42946 rate_n_flags iwl_mvm_tid_data 0 42946 NULL
155436 +enable_so_hippi_change_mtu_fndecl_42953 hippi_change_mtu fndecl 2 42953 NULL
155437 +enable_so_vb2_dc_get_userptr_fndecl_42957 vb2_dc_get_userptr fndecl 2-3 42957 NULL
155438 +enable_so_brcmf_usb_tx_ctlpkt_fndecl_42958 brcmf_usb_tx_ctlpkt fndecl 3 42958 NULL
155439 +enable_so_udf_get_block_fndecl_42965 udf_get_block fndecl 2 42965 NULL
155440 +enable_so_btrfs_make_block_group_fndecl_42978 btrfs_make_block_group fndecl 7-6 42978 NULL
155441 +enable_so_periods_max_snd_pcm_hardware_42979 periods_max snd_pcm_hardware 0 42979 NULL
155442 +enable_so_brcmf_sdiod_send_buf_fndecl_42982 brcmf_sdiod_send_buf fndecl 3 42982 NULL
155443 +enable_so_len_kvaser_msg_42994 len kvaser_msg 0 42994 NULL
155444 +enable_so_hw_token_fotg210_qh_hw_42995 hw_token fotg210_qh_hw 0 42995 NULL
155445 +enable_so_ea_len_fndecl_42998 ea_len fndecl 0 42998 NULL nohasharray
155446 +enable_so_num_mappings_nd_region_desc_42998 num_mappings nd_region_desc 0 42998 &enable_so_ea_len_fndecl_42998
155447 +enable_so_buf_size_ivtv_stream_43002 buf_size ivtv_stream 0 43002 NULL
155448 +enable_so_header_len_fndecl_43003 header_len fndecl 0 43003 NULL
155449 +enable_so_drm_mm_insert_helper_fndecl_43005 drm_mm_insert_helper fndecl 3 43005 NULL
155450 +enable_so_btrfs_check_shared_fndecl_43007 btrfs_check_shared fndecl 5 43007 NULL
155451 +enable_so_pkt_size_be_rx_compl_info_43008 pkt_size be_rx_compl_info 0 43008 NULL
155452 +enable_so_ide_inb_fndecl_43010 ide_inb fndecl 0 43010 NULL
155453 +enable_so_obd_ioctl_popdata_fndecl_43014 obd_ioctl_popdata fndecl 3 43014 NULL
155454 +enable_so_lov_verify_lmm_fndecl_43016 lov_verify_lmm fndecl 2 43016 NULL
155455 +enable_so_phonet_rxq_size_vardecl_f_phonet_c_43017 phonet_rxq_size vardecl_f_phonet.c 0 43017 NULL
155456 +enable_so_PacketLength__MSG_LAN_RECEIVE_POST_REPLY_43028 PacketLength _MSG_LAN_RECEIVE_POST_REPLY 0 43028 NULL
155457 +enable_so_a_bss_exec_43030 a_bss exec 0 43030 NULL
155458 +enable_so_usHActive__ATOM_DTD_FORMAT_43031 usHActive _ATOM_DTD_FORMAT 0 43031 NULL
155459 +enable_so_ext3_orphan_get_fndecl_43033 ext3_orphan_get fndecl 2 43033 NULL nohasharray
155460 +enable_so_pagl_leftrec_xfs_perag_43033 pagl_leftrec xfs_perag 0 43033 &enable_so_ext3_orphan_get_fndecl_43033
155461 +enable_so_copy_page_to_iter_iovec_fndecl_43041 copy_page_to_iter_iovec fndecl 3 43041 NULL
155462 +enable_so_stmmac_change_mtu_fndecl_43052 stmmac_change_mtu fndecl 2 43052 NULL
155463 +enable_so_logical_block_size_queue_limits_43053 logical_block_size queue_limits 0 43053 NULL
155464 +enable_so_s_reserved_gdt_blocks_ext4_super_block_43054 s_reserved_gdt_blocks ext4_super_block 0 43054 NULL
155465 +enable_so_mwifiex_rdeeprom_write_fndecl_43057 mwifiex_rdeeprom_write fndecl 3 43057 NULL
155466 +enable_so_inode_number_squashfs_base_inode_43062 inode_number squashfs_base_inode 0 43062 NULL
155467 +enable_so_len_srp_direct_buf_43066 len srp_direct_buf 0 43066 NULL
155468 +enable_so_quirk_simultaneous_discovery_write_fndecl_43076 quirk_simultaneous_discovery_write fndecl 3 43076 NULL
155469 +enable_so_is_first_ref_fndecl_43078 is_first_ref fndecl 2 43078 NULL
155470 +enable_so_output_buffer_size_vardecl_seq_midi_c_43084 output_buffer_size vardecl_seq_midi.c 0 43084 NULL
155471 +enable_so_bttv_prepare_buffer_fndecl_43088 bttv_prepare_buffer fndecl 6-5 43088 NULL
155472 +enable_so_SyS_sched_getaffinity_fndecl_43089 SyS_sched_getaffinity fndecl 2 43089 NULL
155473 +enable_so_i2c_wr_max_cx24116_config_43094 i2c_wr_max cx24116_config 0 43094 NULL
155474 +enable_so__create_message_fndecl_43096 _create_message fndecl 2 43096 NULL
155475 +enable_so_printf_size_mon_reader_text_43097 printf_size mon_reader_text 0 43097 NULL
155476 +enable_so_if_sdio_read_rx_unit_fndecl_43099 if_sdio_read_rx_unit fndecl 0 43099 NULL
155477 +enable_so_cyttsp_i2c_write_block_data_fndecl_43104 cyttsp_i2c_write_block_data fndecl 4 43104 NULL
155478 +enable_so_xlog_recover_add_to_trans_fndecl_43108 xlog_recover_add_to_trans fndecl 4 43108 NULL
155479 +enable_so___rounddown_pow_of_two_fndecl_43111 __rounddown_pow_of_two fndecl 0 43111 NULL
155480 +enable_so_ore_verify_layout_fndecl_43114 ore_verify_layout fndecl 1 43114 NULL nohasharray
155481 +enable_so_valuelen_hi_extended_attribute_43114 valuelen_hi extended_attribute 0 43114 &enable_so_ore_verify_layout_fndecl_43114
155482 +enable_so_range_max_regmap_range_43116 range_max regmap_range 0 43116 NULL
155483 +enable_so_meta_prod_netrx_pending_operations_43121 meta_prod netrx_pending_operations 0 43121 NULL
155484 +enable_so_fm10k_change_mtu_fndecl_43135 fm10k_change_mtu fndecl 2 43135 NULL
155485 +enable_so_pcf8563_read_block_data_fndecl_43139 pcf8563_read_block_data fndecl 3 43139 NULL
155486 +enable_so_Size_aac_fibhdr_43144 Size aac_fibhdr 0 43144 NULL
155487 +enable_so_rtl8187_iowrite_async_fndecl_43147 rtl8187_iowrite_async fndecl 4 43147 NULL
155488 +enable_so_btrfs_create_subvol_root_fndecl_43148 btrfs_create_subvol_root fndecl 4 43148 NULL
155489 +enable_so_xfs_rtmodify_range_fndecl_43150 xfs_rtmodify_range fndecl 3 43150 NULL
155490 +enable_so_bblog_offset_mdp_superblock_1_43154 bblog_offset mdp_superblock_1 0 43154 NULL
155491 +enable_so___f2fs_setxattr_fndecl_43162 __f2fs_setxattr fndecl 5 43162 NULL
155492 +enable_so_filename_size_ecryptfs_filename_43164 filename_size ecryptfs_filename 0 43164 NULL
155493 +enable_so_xlog_bread_noalign_fndecl_43170 xlog_bread_noalign fndecl 2 43170 NULL
155494 +enable_so_byte_count_il_rx_mpdu_res_start_43171 byte_count il_rx_mpdu_res_start 0 43171 NULL
155495 +enable_so_packetizeRx_fndecl_43175 packetizeRx fndecl 3 43175 NULL
155496 +enable_so_getdqbuf_fndecl_43183 getdqbuf fndecl 1 43183 NULL
155497 +enable_so_aoechr_write_fndecl_43184 aoechr_write fndecl 3 43184 NULL
155498 +enable_so_length_ib_mac_iocb_rsp_43186 length ib_mac_iocb_rsp 0 43186 NULL
155499 +enable_so_if_spi_host_to_card_fndecl_43193 if_spi_host_to_card fndecl 4 43193 NULL
155500 +enable_so_nilfs_cpfile_block_get_snapshot_list_fndecl_43198 nilfs_cpfile_block_get_snapshot_list fndecl 2 43198 NULL
155501 +enable_so_tidno_ath_atx_tid_43202 tidno ath_atx_tid 0 43202 NULL nohasharray
155502 +enable_so_rx_data_eaten_rxrpc_call_43202 rx_data_eaten rxrpc_call 0 43202 &enable_so_tidno_ath_atx_tid_43202
155503 +enable_so_root_id___prelim_ref_43204 root_id __prelim_ref 0 43204 NULL
155504 +enable_so_dm_bufio_release_move_fndecl_43207 dm_bufio_release_move fndecl 2 43207 NULL
155505 +enable_so_nr_efi_runtime_map_vardecl_runtime_map_c_43216 nr_efi_runtime_map vardecl_runtime-map.c 0 43216 NULL
155506 +enable_so_ramdisk_size_setup_header_43217 ramdisk_size setup_header 0 43217 NULL nohasharray
155507 +enable_so_try_async_pf_fndecl_43217 try_async_pf fndecl 3 43217 &enable_so_ramdisk_size_setup_header_43217
155508 +enable_so_mic_len_ieee80211_cipher_scheme_43227 mic_len ieee80211_cipher_scheme 0 43227 NULL
155509 +enable_so_nvif_object_mthd_fndecl_43235 nvif_object_mthd fndecl 4 43235 NULL
155510 +enable_so_send_write_fndecl_43242 send_write fndecl 2 43242 NULL
155511 +enable_so_actual_size_rfd_43243 actual_size rfd 0 43243 NULL
155512 +enable_so_sb_rextents_xfs_sb_43244 sb_rextents xfs_sb 0 43244 NULL
155513 +enable_so_num_vc_iadev_priv_43250 num_vc iadev_priv 0 43250 NULL
155514 +enable_so_agp_create_user_memory_fndecl_43256 agp_create_user_memory fndecl 1 43256 NULL
155515 +enable_so_tea5777_freq_to_v4l2_freq_fndecl_43267 tea5777_freq_to_v4l2_freq fndecl 0-2 43267 NULL
155516 +enable_so_persistent_ram_new_fndecl_43278 persistent_ram_new fndecl 1-2 43278 NULL
155517 +enable_so_tx_modulus_cdc_ncm_ctx_43289 tx_modulus cdc_ncm_ctx 0 43289 NULL
155518 +enable_so_size_oid_t_43292 size oid_t 0 43292 NULL
155519 +enable_so_ip_vs_icmp_xmit_v6_fndecl_43294 ip_vs_icmp_xmit_v6 fndecl 4 43294 NULL
155520 +enable_so_usPixClk__ATOM_DTD_FORMAT_43296 usPixClk _ATOM_DTD_FORMAT 0 43296 NULL
155521 +enable_so_total_nic_func_qlcnic_hardware_context_43307 total_nic_func qlcnic_hardware_context 0 43307 NULL
155522 +enable_so_header_len_gether_43313 header_len gether 0 43313 NULL
155523 +enable_so_hsize_std_timing_43315 hsize std_timing 0 43315 NULL nohasharray
155524 +enable_so_smsc9420_rx_handoff_fndecl_43315 smsc9420_rx_handoff fndecl 3 43315 &enable_so_hsize_std_timing_43315
155525 +enable_so_group_count_ore_layout_43325 group_count ore_layout 0 43325 NULL
155526 +enable_so_max_packet_bytes_ua101_stream_43333 max_packet_bytes ua101_stream 0 43333 NULL
155527 +enable_so_pipe_bpp_intel_crtc_state_43336 pipe_bpp intel_crtc_state 0 43336 NULL nohasharray
155528 +enable_so_b_num_l1oip_43336 b_num l1oip 0 43336 &enable_so_pipe_bpp_intel_crtc_state_43336
155529 +enable_so_file_size_hpfs_dirent_43338 file_size hpfs_dirent 0 43338 NULL
155530 +enable_so_vactive_videomode_43345 vactive videomode 0 43345 NULL
155531 +enable_so_wake_packet_bufsize_iwl_wowlan_status_data_43348 wake_packet_bufsize iwl_wowlan_status_data 0 43348 NULL
155532 +enable_so_test_iso_queue_fndecl_43349 test_iso_queue fndecl 5-3 43349 NULL nohasharray
155533 +enable_so___kmalloc_node_track_caller_fndecl_43349 __kmalloc_node_track_caller fndecl 1 43349 &enable_so_test_iso_queue_fndecl_43349
155534 +enable_so_pktsz_fifo_43351 pktsz fifo 0 43351 NULL nohasharray
155535 +enable_so_entry_size_xpc_channel_43351 entry_size xpc_channel 0 43351 &enable_so_pktsz_fifo_43351
155536 +enable_so_header_len_dst_entry_43355 header_len dst_entry 0 43355 NULL
155537 +enable_so_bulk_out_endpoint_edgeport_serial_43358 bulk_out_endpoint edgeport_serial 0 43358 NULL
155538 +enable_so_get_subdir_fndecl_43366 get_subdir fndecl 3 43366 NULL
155539 +enable_so_compat_SyS_rt_sigpending_fndecl_43367 compat_SyS_rt_sigpending fndecl 2 43367 NULL
155540 +enable_so_port_count_rocker_43373 port_count rocker 0 43373 NULL
155541 +enable_so_snd_usb_endpoint_next_packet_size_fndecl_43377 snd_usb_endpoint_next_packet_size fndecl 0 43377 NULL
155542 +enable_so_dtcs033_pkt_scan_fndecl_43381 dtcs033_pkt_scan fndecl 3 43381 NULL
155543 +enable_so_tci_Vmxnet3_RxCompDesc_43383 tci Vmxnet3_RxCompDesc 0 43383 NULL
155544 +enable_so_xfrm_user_policy_fndecl_43390 xfrm_user_policy fndecl 4 43390 NULL
155545 +enable_so_offset_isert_data_buf_43395 offset isert_data_buf 0 43395 NULL
155546 +enable_so_iommu_area_alloc_fndecl_43400 iommu_area_alloc fndecl 0-4-7 43400 NULL
155547 +enable_so_depth_saa7146_format_43402 depth saa7146_format 0 43402 NULL
155548 +enable_so_teql_master_mtu_fndecl_43403 teql_master_mtu fndecl 2 43403 NULL
155549 +enable_so_i2c_readbytes_fndecl_43409 i2c_readbytes fndecl 4 43409 NULL
155550 +enable_so_init_range_memory_mapping_fndecl_43414 init_range_memory_mapping fndecl 1 43414 NULL
155551 +enable_so_gss_wrap_kerberos_v1_fndecl_43417 gss_wrap_kerberos_v1 fndecl 2 43417 NULL nohasharray
155552 +enable_so_packet_alloc_skb_fndecl_43417 packet_alloc_skb fndecl 5-4 43417 &enable_so_gss_wrap_kerberos_v1_fndecl_43417
155553 +enable_so_pof_write_open_fndecl_43418 pof_write_open fndecl 0 43418 NULL
155554 +enable_so_prism2_send_mgmt_fndecl_43422 prism2_send_mgmt fndecl 4 43422 NULL
155555 +enable_so_status_fealnx_desc_43423 status fealnx_desc 0 43423 NULL
155556 +enable_so_clk_fd_round_rate_fndecl_43428 clk_fd_round_rate fndecl 2 43428 NULL
155557 +enable_so_lpfc_sli4_queue_alloc_fndecl_43429 lpfc_sli4_queue_alloc fndecl 3 43429 NULL
155558 +enable_so_XRES_kyrofb_info_43436 XRES kyrofb_info 0 43436 NULL
155559 +enable_so_memblock_alloc_nid_fndecl_43439 memblock_alloc_nid fndecl 2-1 43439 NULL nohasharray
155560 +enable_so_rds_buf_vardecl_radio_si470x_usb_c_43439 rds_buf vardecl_radio-si470x-usb.c 0 43439 &enable_so_memblock_alloc_nid_fndecl_43439
155561 +enable_so_fsg_common_set_num_buffers_fndecl_43440 fsg_common_set_num_buffers fndecl 2 43440 NULL
155562 +enable_so___offline_pages_fndecl_43441 __offline_pages fndecl 1-2 43441 NULL
155563 +enable_so_dut_mode_write_fndecl_43445 dut_mode_write fndecl 3 43445 NULL nohasharray
155564 +enable_so_len_imgchunk_43445 len imgchunk 0 43445 &enable_so_dut_mode_write_fndecl_43445
155565 +enable_so_last_tx_rate_ap_data_43446 last_tx_rate ap_data 0 43446 NULL
155566 +enable_so_wReportDescLength_i2c_hid_desc_43447 wReportDescLength i2c_hid_desc 0 43447 NULL
155567 +enable_so_vfs_fsync_range_fndecl_43448 vfs_fsync_range fndecl 0 43448 NULL
155568 +enable_so_vary_usbtest_param_43450 vary usbtest_param 0 43450 NULL
155569 +enable_so_eeprom_len_adm8211_priv_43457 eeprom_len adm8211_priv 0 43457 NULL
155570 +enable_so_l_start_ocfs2_space_resv_43461 l_start ocfs2_space_resv 0 43461 NULL
155571 +enable_so_meta_dev_idx_drbd_md_43468 meta_dev_idx drbd_md 0 43468 NULL nohasharray
155572 +enable_so_pda_size_fw_info_43468 pda_size fw_info 0 43468 &enable_so_meta_dev_idx_drbd_md_43468 nohasharray
155573 +enable_so_printer_req_alloc_fndecl_43468 printer_req_alloc fndecl 2 43468 &enable_so_pda_size_fw_info_43468
155574 +enable_so_nfs_pgio_rpcsetup_fndecl_43472 nfs_pgio_rpcsetup fndecl 2-3 43472 NULL
155575 +enable_so_cmd_drm_ioctl_desc_43477 cmd drm_ioctl_desc 0 43477 NULL
155576 +enable_so_total_size_vardecl_mtdram_c_43478 total_size vardecl_mtdram.c 0 43478 NULL nohasharray
155577 +enable_so_length_cpcs_trailer_43478 length cpcs_trailer 0 43478 &enable_so_total_size_vardecl_mtdram_c_43478
155578 +enable_so_sd_jbsize_gfs2_sbd_43480 sd_jbsize gfs2_sbd 0 43480 NULL
155579 +enable_so_sysv_iget_fndecl_43483 sysv_iget fndecl 2 43483 NULL
155580 +enable_so_atl1e_change_mtu_fndecl_43485 atl1e_change_mtu fndecl 2 43485 NULL
155581 +enable_so_secondary_bin_count_drm_mga_dma_bootstrap_43491 secondary_bin_count drm_mga_dma_bootstrap 0 43491 NULL
155582 +enable_so_size_TxFifo_43497 size TxFifo 0 43497 NULL
155583 +enable_so_netlink_recvmsg_fndecl_43499 netlink_recvmsg fndecl 3 43499 NULL
155584 +enable_so_Count_smb_com_write_rsp_43500 Count smb_com_write_rsp 0 43500 NULL
155585 +enable_so_gfs2_log_write_fndecl_43502 gfs2_log_write fndecl 3-4 43502 NULL
155586 +enable_so_adxl34x_i2c_read_block_fndecl_43504 adxl34x_i2c_read_block fndecl 3 43504 NULL
155587 +enable_so_size_compat_ipt_replace_43509 size compat_ipt_replace 0 43509 NULL
155588 +enable_so_size_uvc_control_info_43512 size uvc_control_info 0 43512 NULL
155589 +enable_so_snd_es1968_new_memory_fndecl_43515 snd_es1968_new_memory fndecl 2 43515 NULL
155590 +enable_so_i_lenExtents_udf_inode_info_43517 i_lenExtents udf_inode_info 0 43517 NULL
155591 +enable_so_ieee80211_set_probe_resp_fndecl_43519 ieee80211_set_probe_resp fndecl 3 43519 NULL
155592 +enable_so_sb_rextslog_xfs_sb_43520 sb_rextslog xfs_sb 0 43520 NULL nohasharray
155593 +enable_so_ptp_read_fndecl_43520 ptp_read fndecl 4 43520 &enable_so_sb_rextslog_xfs_sb_43520
155594 +enable_so__iwl_dbgfs_rx_phyinfo_write_fndecl_43525 _iwl_dbgfs_rx_phyinfo_write fndecl 3 43525 NULL
155595 +enable_so_cyapa_i2c_write_fndecl_43546 cyapa_i2c_write fndecl 3 43546 NULL
155596 +enable_so_points_per_channel_pda_pa_curve_data_43548 points_per_channel pda_pa_curve_data 0 43548 NULL
155597 +enable_so_bg_inode_table_lo_ext4_group_desc_43555 bg_inode_table_lo ext4_group_desc 0 43555 NULL
155598 +enable_so_new_rate_clk_core_43556 new_rate clk_core 0 43556 NULL
155599 +enable_so_port_clock_intel_crtc_state_43564 port_clock intel_crtc_state 0 43564 NULL
155600 +enable_so_tx_buf_clear_sent_ks959_cb_43565 tx_buf_clear_sent ks959_cb 0 43565 NULL
155601 +enable_so_ib_create_send_mad_fndecl_43569 ib_create_send_mad fndecl 5 43569 NULL
155602 +enable_so_crypto_rfc4106_setauthsize_fndecl_43580 crypto_rfc4106_setauthsize fndecl 2 43580 NULL
155603 +enable_so___br_vlan_set_default_pvid_fndecl_43587 __br_vlan_set_default_pvid fndecl 2 43587 NULL
155604 +enable_so_size_ext4_io_end_43590 size ext4_io_end 0 43590 NULL
155605 +enable_so_recv_data_fndecl_43596 recv_data fndecl 3 43596 NULL
155606 +enable_so_rem_len_hci_rp_read_local_amp_assoc_43602 rem_len hci_rp_read_local_amp_assoc 0 43602 NULL nohasharray
155607 +enable_so_mult_req_ide_drive_s_43602 mult_req ide_drive_s 0 43602 &enable_so_rem_len_hci_rp_read_local_amp_assoc_43602 nohasharray
155608 +enable_so_isdn_ppp_ccp_xmit_reset_fndecl_43602 isdn_ppp_ccp_xmit_reset fndecl 6 43602 &enable_so_mult_req_ide_drive_s_43602
155609 +enable_so_ipath_pioreserved_ipath_devdata_43603 ipath_pioreserved ipath_devdata 0 43603 NULL
155610 +enable_so_raid5_resize_fndecl_43609 raid5_resize fndecl 2 43609 NULL
155611 +enable_so_ssize_datafab_info_43610 ssize datafab_info 0 43610 NULL
155612 +enable_so_sg_limit_blogic_ext_setup_43615 sg_limit blogic_ext_setup 0 43615 NULL nohasharray
155613 +enable_so_qnx4_block_map_fndecl_43615 qnx4_block_map fndecl 2 43615 &enable_so_sg_limit_blogic_ext_setup_43615
155614 +enable_so_camera_fbmem_size_viafb_dev_43616 camera_fbmem_size viafb_dev 0 43616 NULL
155615 +enable_so_ceph_fill_file_size_fndecl_43619 ceph_fill_file_size fndecl 4-5 43619 NULL
155616 +enable_so_drm_format_plane_cpp_fndecl_43621 drm_format_plane_cpp fndecl 0 43621 NULL nohasharray
155617 +enable_so_chipshift_cfi_private_43621 chipshift cfi_private 0 43621 &enable_so_drm_format_plane_cpp_fndecl_43621
155618 +enable_so_dma_addr_as102_dev_t_43627 dma_addr as102_dev_t 0 43627 NULL
155619 +enable_so_btusb_recv_isoc_fndecl_43628 btusb_recv_isoc fndecl 3 43628 NULL
155620 +enable_so_drm_gtf2_k_fndecl_43638 drm_gtf2_k fndecl 0 43638 NULL nohasharray
155621 +enable_so_technisat_usb2_eeprom_lrc_read_fndecl_43638 technisat_usb2_eeprom_lrc_read fndecl 4 43638 &enable_so_drm_gtf2_k_fndecl_43638
155622 +enable_so_edac_pci_alloc_ctl_info_fndecl_43663 edac_pci_alloc_ctl_info fndecl 1 43663 NULL nohasharray
155623 +enable_so_usbnet_read_cmd_nopm_fndecl_43663 usbnet_read_cmd_nopm fndecl 7 43663 &enable_so_edac_pci_alloc_ctl_info_fndecl_43663
155624 +enable_so_bop_last_key_nilfs_bmap_operations_43669 bop_last_key nilfs_bmap_operations 0 43669 NULL
155625 +enable_so_gsi_kvm_irq_routing_entry_43676 gsi kvm_irq_routing_entry 0 43676 NULL
155626 +enable_so_header_size_perf_event_43679 header_size perf_event 0 43679 NULL
155627 +enable_so_data_offset_nfsd4_compound_state_43684 data_offset nfsd4_compound_state 0 43684 NULL
155628 +enable_so_service_irq_fndecl_43687 service_irq fndecl 0 43687 NULL
155629 +enable_so_ingr_sz_sge_43689 ingr_sz sge 0 43689 NULL
155630 +enable_so_nxt200x_readbytes_fndecl_43693 nxt200x_readbytes fndecl 4 43693 NULL
155631 +enable_so_insert_tree_block_ref_fndecl_43700 insert_tree_block_ref fndecl 5-6-4 43700 NULL
155632 +enable_so_ext3_get_inode_block_fndecl_43702 ext3_get_inode_block fndecl 2-0 43702 NULL
155633 +enable_so_rx_buf_len_bcmgenet_priv_43705 rx_buf_len bcmgenet_priv 0 43705 NULL
155634 +enable_so_gtk_icvlen_iwl_mvm_43710 gtk_icvlen iwl_mvm 0 43710 NULL
155635 +enable_so_mask_mlx4_bitmap_43716 mask mlx4_bitmap 0 43716 NULL nohasharray
155636 +enable_so_lookup_dir_item_inode_fndecl_43716 lookup_dir_item_inode fndecl 2 43716 &enable_so_mask_mlx4_bitmap_43716
155637 +enable_so_in_size_xz_buf_43724 in_size xz_buf 0 43724 NULL
155638 +enable_so_ReplyFrameSize_mpt3sas_facts_43736 ReplyFrameSize mpt3sas_facts 0 43736 NULL
155639 +enable_so_add_delayed_data_ref_fndecl_43738 add_delayed_data_ref fndecl 7-8-5-6-9 43738 NULL
155640 +enable_so_gfn_to_hva_many_fndecl_43742 gfn_to_hva_many fndecl 2-0 43742 NULL
155641 +enable_so_snd_info_entry_write_fndecl_43745 snd_info_entry_write fndecl 3 43745 NULL
155642 +enable_so_used_map_cnt_verifier_env_43747 used_map_cnt verifier_env 0 43747 NULL
155643 +enable_so_stat_end_vardecl_drv_c_43748 stat_end vardecl_drv.c 0 43748 NULL
155644 +enable_so_data1_sisusb_command_43756 data1 sisusb_command 0 43756 NULL nohasharray
155645 +enable_so_len_meta_value_43756 len meta_value 0 43756 &enable_so_data1_sisusb_command_43756 nohasharray
155646 +enable_so___copy_from_user_ll_nocache_fndecl_43756 __copy_from_user_ll_nocache fndecl 0 43756 &enable_so_len_meta_value_43756
155647 +enable_so_reada_find_extent_fndecl_43757 reada_find_extent fndecl 2 43757 NULL
155648 +enable_so_ipath_pbufsport_ipath_devdata_43760 ipath_pbufsport ipath_devdata 0 43760 NULL
155649 +enable_so_tipc_connect_fndecl_43766 tipc_connect fndecl 3 43766 NULL
155650 +enable_so_hwdep_read_fndecl_43779 hwdep_read fndecl 3 43779 NULL
155651 +enable_so_generic_file_fsync_fndecl_43780 generic_file_fsync fndecl 2 43780 NULL
155652 +enable_so_clipcount_cap_vivid_dev_43781 clipcount_cap vivid_dev 0 43781 NULL
155653 +enable_so_data_pad_ubi_volume_43787 data_pad ubi_volume 0 43787 NULL
155654 +enable_so_uhci_urb_dequeue_fndecl_43804 uhci_urb_dequeue fndecl 3 43804 NULL
155655 +enable_so_kstrtoull_from_user_fndecl_43809 kstrtoull_from_user fndecl 2 43809 NULL
155656 +enable_so_len_nft_set_ext_tmpl_43815 len nft_set_ext_tmpl 0 43815 NULL
155657 +enable_so_rdes0_rx_desc_43817 rdes0 rx_desc 0 43817 NULL
155658 +enable_so___vb2_perform_fileio_fndecl_43818 __vb2_perform_fileio fndecl 3 43818 NULL
155659 +enable_so__save_mc_fndecl_43819 _save_mc fndecl 0-3 43819 NULL
155660 +enable_so_block_bitmap_ext4_new_group_data_43822 block_bitmap ext4_new_group_data 0 43822 NULL
155661 +enable_so_omap_dma_prep_slave_sg_fndecl_43825 omap_dma_prep_slave_sg fndecl 3 43825 NULL
155662 +enable_so_root_writeset_disk_43830 root writeset_disk 0 43830 NULL
155663 +enable_so_i915_gem_object_create_stolen_fndecl_43837 i915_gem_object_create_stolen fndecl 2 43837 NULL
155664 +enable_so_unlink1_fndecl_43840 unlink1 fndecl 3-2 43840 NULL
155665 +enable_so___nilfs_btree_get_block_fndecl_43845 __nilfs_btree_get_block fndecl 2 43845 NULL
155666 +enable_so_initrd_start_vardecl_43848 initrd_start vardecl 0 43848 NULL
155667 +enable_so_xen_set_nslabs_fndecl_43849 xen_set_nslabs fndecl 0-1 43849 NULL
155668 +enable_so_wlcore_scan_fndecl_43850 wlcore_scan fndecl 4 43850 NULL
155669 +enable_so_scsi_host_alloc_fndecl_43858 scsi_host_alloc fndecl 2 43858 NULL
155670 +enable_so_indat_endpoint_keyspan_device_details_43860 indat_endpoint keyspan_device_details 0 43860 NULL
155671 +enable_so_get_sset_count_ethtool_ops_43861 get_sset_count ethtool_ops 0 43861 NULL
155672 +enable_so_s_l2bsize_jfs_superblock_43870 s_l2bsize jfs_superblock 0 43870 NULL
155673 +enable_so_bulk_in_endpointAddr_hdpvr_device_43874 bulk_in_endpointAddr hdpvr_device 0 43874 NULL
155674 +enable_so_iovec_count_sg_io_hdr_43875 iovec_count sg_io_hdr 0 43875 NULL
155675 +enable_so_ts_ctxnum_gru_thread_state_43878 ts_ctxnum gru_thread_state 0 43878 NULL
155676 +enable_so_zap_page_range_single_fndecl_43890 zap_page_range_single fndecl 3-2 43890 NULL
155677 +enable_so_len_libipw_info_element_43892 len libipw_info_element 0 43892 NULL
155678 +enable_so_ocfs2_decrease_refcount_fndecl_43893 ocfs2_decrease_refcount fndecl 4-3 43893 NULL
155679 +enable_so_skb_vlan_push_fndecl_43895 skb_vlan_push fndecl 3 43895 NULL nohasharray
155680 +enable_so_device_id_onenand_chip_43895 device_id onenand_chip 0 43895 &enable_so_skb_vlan_push_fndecl_43895
155681 +enable_so_xstats_len_gnet_dump_43898 xstats_len gnet_dump 0 43898 NULL
155682 +enable_so_il4965_rs_move_siso_to_other_fndecl_43901 il4965_rs_move_siso_to_other fndecl 5 43901 NULL
155683 +enable_so_lc_up_len_nfsd4_layoutcommit_43904 lc_up_len nfsd4_layoutcommit 0 43904 NULL
155684 +enable_so_sta_data_size_ieee80211_hw_43910 sta_data_size ieee80211_hw 0 43910 NULL
155685 +enable_so_xres_drm_cmdline_mode_43915 xres drm_cmdline_mode 0 43915 NULL
155686 +enable_so_in_int_pipe_usbtest_dev_43922 in_int_pipe usbtest_dev 0 43922 NULL
155687 +enable_so_mbind_range_fndecl_43926 mbind_range fndecl 3-2 43926 NULL
155688 +enable_so_iwl_mvm_coex_dump_mbox_fndecl_43938 iwl_mvm_coex_dump_mbox fndecl 0-3-4 43938 NULL nohasharray
155689 +enable_so_rx_buf_dma_eg20t_port_43938 rx_buf_dma eg20t_port 0 43938 &enable_so_iwl_mvm_coex_dump_mbox_fndecl_43938
155690 +enable_so_max_threads_vardecl_43940 max_threads vardecl 0 43940 NULL nohasharray
155691 +enable_so_queue_pages_pte_range_fndecl_43940 queue_pages_pte_range fndecl 2 43940 &enable_so_max_threads_vardecl_43940
155692 +enable_so_dce_pvc_count_frad_state_43946 dce_pvc_count frad_state 0 43946 NULL
155693 +enable_so_sddr09_readX_fndecl_43951 sddr09_readX fndecl 5 43951 NULL
155694 +enable_so_combiner_init_fndecl_43956 combiner_init fndecl 3 43956 NULL
155695 +enable_so_num_drc_cfgs_wm8904_pdata_43963 num_drc_cfgs wm8904_pdata 0 43963 NULL
155696 +enable_so_s_firstdatazone_isofs_sb_info_43968 s_firstdatazone isofs_sb_info 0 43968 NULL
155697 +enable_so_csum_start_virtio_net_hdr_43969 csum_start virtio_net_hdr 0 43969 NULL nohasharray
155698 +enable_so_hfsplus_file_fsync_fndecl_43969 hfsplus_file_fsync fndecl 2 43969 &enable_so_csum_start_virtio_net_hdr_43969
155699 +enable_so_nilfs_get_dentry_fndecl_43979 nilfs_get_dentry fndecl 3 43979 NULL
155700 +enable_so_s_first_cluster_group_ocfs2_super_block_43980 s_first_cluster_group ocfs2_super_block 0 43980 NULL nohasharray
155701 +enable_so_value_size_bpf_map_43980 value_size bpf_map 0 43980 &enable_so_s_first_cluster_group_ocfs2_super_block_43980
155702 +enable_so_cur_size_zr364xx_framei_43985 cur_size zr364xx_framei 0 43985 NULL
155703 +enable_so_smk_write_revoke_subj_fndecl_43990 smk_write_revoke_subj fndecl 3 43990 NULL
155704 +enable_so_SyS_syslog_fndecl_43993 SyS_syslog fndecl 3 43993 NULL
155705 +enable_so_rs_build_rates_table_from_fixed_fndecl_43994 rs_build_rates_table_from_fixed fndecl 4 43994 NULL
155706 +enable_so_pvm_determine_end_fndecl_43995 pvm_determine_end fndecl 3 43995 NULL nohasharray
155707 +enable_so_nsize_jffs2_raw_dirent_43995 nsize jffs2_raw_dirent 0 43995 &enable_so_pvm_determine_end_fndecl_43995 nohasharray
155708 +enable_so_ovl_fill_merge_fndecl_43995 ovl_fill_merge fndecl 3 43995 &enable_so_nsize_jffs2_raw_dirent_43995
155709 +enable_so_copy_templates_fndecl_43996 copy_templates fndecl 3 43996 NULL
155710 +enable_so_snd_pcm_lib_malloc_pages_fndecl_43997 snd_pcm_lib_malloc_pages fndecl 2 43997 NULL
155711 +enable_so_vme_master_read_fndecl_44006 vme_master_read fndecl 0 44006 NULL
155712 +enable_so_SyS_gethostname_fndecl_44008 SyS_gethostname fndecl 2 44008 NULL
155713 +enable_so_ext2_direct_IO_fndecl_44012 ext2_direct_IO fndecl 3 44012 NULL
155714 +enable_so_m2_dpll_44018 m2 dpll 0 44018 NULL
155715 +enable_so_level_pid_namespace_44021 level pid_namespace 0 44021 NULL
155716 +enable_so_SyS_kexec_file_load_fndecl_44032 SyS_kexec_file_load fndecl 3 44032 NULL
155717 +enable_so_null_alloc_reqbuf_fndecl_44036 null_alloc_reqbuf fndecl 3 44036 NULL
155718 +enable_so_ext4_insert_dentry_fndecl_44040 ext4_insert_dentry fndecl 7 44040 NULL
155719 +enable_so_convert_extent_bit_fndecl_44046 convert_extent_bit fndecl 3-2 44046 NULL
155720 +enable_so_btrfs_submit_direct_fndecl_44059 btrfs_submit_direct fndecl 4 44059 NULL nohasharray
155721 +enable_so_ahc_linux_map_seg_fndecl_44059 ahc_linux_map_seg fndecl 4-5 44059 &enable_so_btrfs_submit_direct_fndecl_44059
155722 +enable_so_num_trace_enums_module_44062 num_trace_enums module 0 44062 NULL
155723 +enable_so_read_fs_root_fndecl_44065 read_fs_root fndecl 2 44065 NULL
155724 +enable_so_xen_io_tlb_nslabs_vardecl_swiotlb_xen_c_44077 xen_io_tlb_nslabs vardecl_swiotlb-xen.c 0 44077 NULL
155725 +enable_so_btrfs_pick_defrag_inode_fndecl_44080 btrfs_pick_defrag_inode fndecl 2-3 44080 NULL
155726 +enable_so_maxports_board_t_44081 maxports board_t 0 44081 NULL
155727 +enable_so_netup_read_i2c_fndecl_44096 netup_read_i2c fndecl 5 44096 NULL
155728 +enable_so_xdr_decode_array2_fndecl_44099 xdr_decode_array2 fndecl 2 44099 NULL
155729 +enable_so_m_inode_cluster_size_xfs_mount_44101 m_inode_cluster_size xfs_mount 0 44101 NULL
155730 +enable_so_chv_clock_fndecl_44108 chv_clock fndecl 1 44108 NULL
155731 +enable_so_fats_fat_boot_sector_44112 fats fat_boot_sector 0 44112 NULL nohasharray
155732 +enable_so_SyS_sendto_fndecl_44112 SyS_sendto fndecl 6 44112 &enable_so_fats_fat_boot_sector_44112
155733 +enable_so_read16_bcma_host_ops_44118 read16 bcma_host_ops 0 44118 NULL
155734 +enable_so_udp_sendmsg_fndecl_44135 udp_sendmsg fndecl 3 44135 NULL nohasharray
155735 +enable_so_mls_compute_context_len_fndecl_44135 mls_compute_context_len fndecl 0 44135 &enable_so_udp_sendmsg_fndecl_44135
155736 +enable_so_tps65912_i2c_read_fndecl_44137 tps65912_i2c_read fndecl 3 44137 NULL
155737 +enable_so_key_maxval_mcs_platform_data_44139 key_maxval mcs_platform_data 0 44139 NULL
155738 +enable_so_npins_pinctrl_gpio_range_44148 npins pinctrl_gpio_range 0 44148 NULL
155739 +enable_so_batadv_dat_snoop_incoming_arp_reply_fndecl_44154 batadv_dat_snoop_incoming_arp_reply fndecl 3 44154 NULL
155740 +enable_so_recvmsg_proto_ops_44163 recvmsg proto_ops 0 44163 NULL
155741 +enable_so___skb_flow_dissect_fndecl_44172 __skb_flow_dissect fndecl 5 44172 NULL
155742 +enable_so_ath9k_hw_def_dump_eeprom_fndecl_44174 ath9k_hw_def_dump_eeprom fndecl 4-5 44174 NULL
155743 +enable_so_db_addr_mlx4_ib_create_qp_44182 db_addr mlx4_ib_create_qp 0 44182 NULL
155744 +enable_so_tcfp_nkeys_tcf_pedit_44184 tcfp_nkeys tcf_pedit 0 44184 NULL
155745 +enable_so_qlcnic_change_mtu_fndecl_44186 qlcnic_change_mtu fndecl 2 44186 NULL
155746 +enable_so_btrfs_file_llseek_fndecl_44189 btrfs_file_llseek fndecl 2 44189 NULL
155747 +enable_so_get_fw_name_fndecl_44193 get_fw_name fndecl 3 44193 NULL
155748 +enable_so_btrfs_ioctl_clone_fndecl_44205 btrfs_ioctl_clone fndecl 5-3-4 44205 NULL
155749 +enable_so_wm8993_set_fll_fndecl_44206 wm8993_set_fll fndecl 4-5 44206 NULL
155750 +enable_so_evdev_compute_buffer_size_fndecl_44212 evdev_compute_buffer_size fndecl 0 44212 NULL
155751 +enable_so_s_bsize_jfs_superblock_44215 s_bsize jfs_superblock 0 44215 NULL
155752 +enable_so_ext2_inode_by_name_fndecl_44217 ext2_inode_by_name fndecl 0 44217 NULL nohasharray
155753 +enable_so_IA_TX_BUF_vardecl_iphase_c_44217 IA_TX_BUF vardecl_iphase.c 0 44217 &enable_so_ext2_inode_by_name_fndecl_44217
155754 +enable_so_SYSC_lsetxattr_fndecl_44222 SYSC_lsetxattr fndecl 4 44222 NULL
155755 +enable_so_len_args_fndecl_44226 len_args fndecl 0 44226 NULL
155756 +enable_so_clear_refs_write_fndecl_44227 clear_refs_write fndecl 3 44227 NULL
155757 +enable_so_it_context_support_fw_ohci_44232 it_context_support fw_ohci 0 44232 NULL
155758 +enable_so_usbhsf_fifo_rcv_len_fndecl_44234 usbhsf_fifo_rcv_len fndecl 0 44234 NULL
155759 +enable_so_au0828_init_isoc_fndecl_44238 au0828_init_isoc fndecl 4-2-3 44238 NULL nohasharray
155760 +enable_so_ns_first_data_block_the_nilfs_44238 ns_first_data_block the_nilfs 0 44238 &enable_so_au0828_init_isoc_fndecl_44238
155761 +enable_so_irda_sendmsg_fndecl_44239 irda_sendmsg fndecl 3 44239 NULL
155762 +enable_so_num_pages_vb2_dma_sg_buf_44241 num_pages vb2_dma_sg_buf 0 44241 NULL
155763 +enable_so_spk_xs_vardecl_44242 spk_xs vardecl 0 44242 NULL
155764 +enable_so_features_virtio_device_44247 features virtio_device 0 44247 NULL
155765 +enable_so_ax25_addr_size_fndecl_44248 ax25_addr_size fndecl 0 44248 NULL nohasharray
155766 +enable_so_cxgb4_pktgl_to_skb_fndecl_44248 cxgb4_pktgl_to_skb fndecl 3-2 44248 &enable_so_ax25_addr_size_fndecl_44248
155767 +enable_so_num_reg_defaults_raw_regmap_config_44249 num_reg_defaults_raw regmap_config 0 44249 NULL
155768 +enable_so_lprocfs_write_frac_u64_helper_fndecl_44250 lprocfs_write_frac_u64_helper fndecl 2 44250 NULL
155769 +enable_so_nolb_xcopy_op_44252 nolb xcopy_op 0 44252 NULL
155770 +enable_so_roundup_ring_size_fndecl_44254 roundup_ring_size fndecl 0 44254 NULL
155771 +enable_so_gfn_to_pfn_memslot_atomic_fndecl_44264 gfn_to_pfn_memslot_atomic fndecl 2 44264 NULL nohasharray
155772 +enable_so_skd_sgs_per_request_vardecl_skd_main_c_44264 skd_sgs_per_request vardecl_skd_main.c 0 44264 &enable_so_gfn_to_pfn_memslot_atomic_fndecl_44264
155773 +enable_so_SyS_kexec_load_fndecl_44265 SyS_kexec_load fndecl 2 44265 NULL
155774 +enable_so_skb_put_frags_fndecl_44270 skb_put_frags fndecl 3-2 44270 NULL nohasharray
155775 +enable_so_s_blocks_per_group_ext2_sb_info_44270 s_blocks_per_group ext2_sb_info 0 44270 &enable_so_skb_put_frags_fndecl_44270
155776 +enable_so_efi_get_runtime_map_size_fndecl_44276 efi_get_runtime_map_size fndecl 0 44276 NULL
155777 +enable_so_NumberOfPorts_mpt3sas_facts_44306 NumberOfPorts mpt3sas_facts 0 44306 NULL
155778 +enable_so_dma_ops_area_alloc_fndecl_44307 dma_ops_area_alloc fndecl 3-4 44307 NULL
155779 +enable_so_mlx5e_build_netdev_priv_fndecl_44314 mlx5e_build_netdev_priv fndecl 3 44314 NULL
155780 +enable_so_plen_iwch_ep_44317 plen iwch_ep 0 44317 NULL
155781 +enable_so_ceph_sync_write_fndecl_44318 ceph_sync_write fndecl 0-3 44318 NULL
155782 +enable_so_produce_size_qp_entry_44325 produce_size qp_entry 0 44325 NULL
155783 +enable_so_bytesused_cx18_buffer_44339 bytesused cx18_buffer 0 44339 NULL
155784 +enable_so_btusb_setup_qca_download_fw_fndecl_44343 btusb_setup_qca_download_fw fndecl 0 44343 NULL
155785 +enable_so_snd_pcm_lib_writev_transfer_fndecl_44344 snd_pcm_lib_writev_transfer fndecl 5 44344 NULL
155786 +enable_so_tail_circ_buf_44346 tail circ_buf 0 44346 NULL nohasharray
155787 +enable_so_count_v4l2_ext_controls_44346 count v4l2_ext_controls 0 44346 &enable_so_tail_circ_buf_44346
155788 +enable_so_btrfs_item_size_fndecl_44350 btrfs_item_size fndecl 0 44350 NULL
155789 +enable_so_brcmf_sdio_txpkt_prep_sg_fndecl_44354 brcmf_sdio_txpkt_prep_sg fndecl 4 44354 NULL
155790 +enable_so_irlan_connect_confirm_fndecl_44361 irlan_connect_confirm fndecl 5 44361 NULL
155791 +enable_so_jffs2_write_end_fndecl_44362 jffs2_write_end fndecl 3 44362 NULL
155792 +enable_so___logfs_iget_fndecl_44371 __logfs_iget fndecl 2 44371 NULL
155793 +enable_so_start_addr_acpi_memory_info_44372 start_addr acpi_memory_info 0 44372 NULL
155794 +enable_so_bitmap_cpg_ocfs2_super_44373 bitmap_cpg ocfs2_super 0 44373 NULL
155795 +enable_so_pwm_buf_sz_usbdux_private_44375 pwm_buf_sz usbdux_private 0 44375 NULL
155796 +enable_so_ocfs2_get_refcount_rec_fndecl_44377 ocfs2_get_refcount_rec fndecl 3-4 44377 NULL
155797 +enable_so_epp_read_data_parport_operations_44383 epp_read_data parport_operations 0 44383 NULL
155798 +enable_so_reiserfs_xattr_set_fndecl_44389 reiserfs_xattr_set fndecl 4 44389 NULL
155799 +enable_so_hidpp_prefix_name_fndecl_44393 hidpp_prefix_name fndecl 2 44393 NULL
155800 +enable_so_s_raid_stripe_width_ext4_super_block_44401 s_raid_stripe_width ext4_super_block 0 44401 NULL
155801 +enable_so_num_iscsi_tasks_cnic_local_44404 num_iscsi_tasks cnic_local 0 44404 NULL
155802 +enable_so_compat_SyS_select_fndecl_44405 compat_SyS_select fndecl 1 44405 NULL
155803 +enable_so_child_mtu_cached_xfrm_dst_44407 child_mtu_cached xfrm_dst 0 44407 NULL
155804 +enable_so_yres_virtual_fb_var_screeninfo_44414 yres_virtual fb_var_screeninfo 0 44414 NULL
155805 +enable_so_ss_tss_segment_16_44415 ss tss_segment_16 0 44415 NULL
155806 +enable_so_ept_gpte_to_gfn_lvl_fndecl_44420 ept_gpte_to_gfn_lvl fndecl 0-2-1 44420 NULL
155807 +enable_so_seq_open_private_fndecl_44422 seq_open_private fndecl 3 44422 NULL
155808 +enable_so___get_vm_area_fndecl_44428 __get_vm_area fndecl 1-3 44428 NULL
155809 +enable_so_fan_proc_write_fndecl_44434 fan_proc_write fndecl 3 44434 NULL
155810 +enable_so_fd_do_rw_fndecl_44435 fd_do_rw fndecl 5 44435 NULL
155811 +enable_so_nbd_ioctl_fndecl_44444 nbd_ioctl fndecl 4 44444 NULL
155812 +enable_so_get_pages_array_fndecl_44453 get_pages_array fndecl 1 44453 NULL
155813 +enable_so_configfs_write_file_fndecl_44454 configfs_write_file fndecl 3 44454 NULL
155814 +enable_so_ieee80211_if_fmt_hw_queues_fndecl_44462 ieee80211_if_fmt_hw_queues fndecl 3 44462 NULL
155815 +enable_so___get_inode_info_fndecl_44463 __get_inode_info fndecl 3 44463 NULL
155816 +enable_so_nfs4_init_uniform_client_string_fndecl_44466 nfs4_init_uniform_client_string fndecl 3-0 44466 NULL
155817 +enable_so_cap_height_usbtv_norm_params_44467 cap_height usbtv_norm_params 0 44467 NULL
155818 +enable_so_seq_count_iscsi_cmd_44476 seq_count iscsi_cmd 0 44476 NULL
155819 +enable_so_resize_stripes_fndecl_44481 resize_stripes fndecl 2 44481 NULL
155820 +enable_so_xfs_btree_get_bufs_fndecl_44484 xfs_btree_get_bufs fndecl 4-3 44484 NULL
155821 +enable_so_s_first_data_block_ext4_super_block_44495 s_first_data_block ext4_super_block 0 44495 NULL
155822 +enable_so_i2o_parm_table_get_fndecl_44496 i2o_parm_table_get fndecl 6 44496 NULL
155823 +enable_so_mmcies_max_wusbhc_44498 mmcies_max wusbhc 0 44498 NULL
155824 +enable_so_omfs_bread_fndecl_44502 omfs_bread fndecl 2 44502 NULL
155825 +enable_so_snd_pcm_oss_read3_fndecl_44504 snd_pcm_oss_read3 fndecl 0 44504 NULL nohasharray
155826 +enable_so_tcf_hashinfo_init_fndecl_44504 tcf_hashinfo_init fndecl 2 44504 &enable_so_snd_pcm_oss_read3_fndecl_44504
155827 +enable_so_btrfs_add_ordered_extent_fndecl_44505 btrfs_add_ordered_extent fndecl 4-2-5-3 44505 NULL
155828 +enable_so_len_de4x5_ioctl_44508 len de4x5_ioctl 0 44508 NULL
155829 +enable_so_li_height_logfs_inode_44514 li_height logfs_inode 0 44514 NULL
155830 +enable_so_sddr09_read20_fndecl_44519 sddr09_read20 fndecl 4-3 44519 NULL nohasharray
155831 +enable_so___do_tune_cpucache_fndecl_44519 __do_tune_cpucache fndecl 3-2-4 44519 &enable_so_sddr09_read20_fndecl_44519
155832 +enable_so_video_bpp_sis_video_info_44522 video_bpp sis_video_info 0 44522 NULL nohasharray
155833 +enable_so_length_mtd_oob_buf_44522 length mtd_oob_buf 0 44522 &enable_so_video_bpp_sis_video_info_44522
155834 +enable_so_rbytes_tree_balance_44523 rbytes tree_balance 0 44523 NULL nohasharray
155835 +enable_so_read_bits_fndecl_44523 read_bits fndecl 2 44523 &enable_so_rbytes_tree_balance_44523
155836 +enable_so_set_le_key_k_type_fndecl_44525 set_le_key_k_type fndecl 3 44525 NULL
155837 +enable_so_xlog_recover_clear_agi_bucket_fndecl_44526 xlog_recover_clear_agi_bucket fndecl 2 44526 NULL
155838 +enable_so_insert_one_name_fndecl_44535 insert_one_name fndecl 7-5-4 44535 NULL
155839 +enable_so_consume_size_vmci_transport_44542 consume_size vmci_transport 0 44542 NULL
155840 +enable_so_container_height_dmm_44549 container_height dmm 0 44549 NULL
155841 +enable_so_chanctx_data_size_ieee80211_hw_44557 chanctx_data_size ieee80211_hw 0 44557 NULL
155842 +enable_so_hpfs_fnode_dno_fndecl_44569 hpfs_fnode_dno fndecl 0-2 44569 NULL nohasharray
155843 +enable_so_wTotalLength_usb_config_descriptor_44569 wTotalLength usb_config_descriptor 0 44569 &enable_so_hpfs_fnode_dno_fndecl_44569
155844 +enable_so_parent_i_pos_hi_fat_fid_44570 parent_i_pos_hi fat_fid 0 44570 NULL
155845 +enable_so_ion_handle_test_dma_fndecl_44581 ion_handle_test_dma fndecl 4-5 44581 NULL
155846 +enable_so_rd_data0_gfs2_rgrpd_44591 rd_data0 gfs2_rgrpd 0 44591 NULL
155847 +enable_so_dm_bitset_test_bit_fndecl_44595 dm_bitset_test_bit fndecl 2 44595 NULL
155848 +enable_so_allocate_partition_fndecl_44598 allocate_partition fndecl 4 44598 NULL
155849 +enable_so_len_poll_list_44603 len poll_list 0 44603 NULL
155850 +enable_so_carl9170_tx_fill_rateinfo_fndecl_44610 carl9170_tx_fill_rateinfo fndecl 3 44610 NULL
155851 +enable_so_bop_mark_nilfs_bmap_operations_44618 bop_mark nilfs_bmap_operations 0 44618 NULL
155852 +enable_so_vid_hdr_offset_ubi_attach_req_44622 vid_hdr_offset ubi_attach_req 0 44622 NULL
155853 +enable_so_maxfrags_snd_pcm_oss_runtime_44625 maxfrags snd_pcm_oss_runtime 0 44625 NULL
155854 +enable_so_max_sectors_Scsi_Host_44630 max_sectors Scsi_Host 0 44630 NULL nohasharray
155855 +enable_so_sel_last_ino_vardecl_selinuxfs_c_44630 sel_last_ino vardecl_selinuxfs.c 0 44630 &enable_so_max_sectors_Scsi_Host_44630
155856 +enable_so_data_len_krb5_tagged_data_44634 data_len krb5_tagged_data 0 44634 NULL
155857 +enable_so_bd_block_size_block_device_44635 bd_block_size block_device 0 44635 NULL
155858 +enable_so_osst_write_error_recovery_fndecl_44636 osst_write_error_recovery fndecl 3 44636 NULL
155859 +enable_so_chunk_root_btrfs_super_block_44639 chunk_root btrfs_super_block 0 44639 NULL
155860 +enable_so_hfcpci_empty_bfifo_fndecl_44640 hfcpci_empty_bfifo fndecl 4 44640 NULL
155861 +enable_so_nb_dev_strip_zone_44645 nb_dev strip_zone 0 44645 NULL
155862 +enable_so_bank_mask_stub_chip_44647 bank_mask stub_chip 0 44647 NULL
155863 +enable_so_cp_payload_f2fs_super_block_44648 cp_payload f2fs_super_block 0 44648 NULL
155864 +enable_so_rel_sectors_mmc_ext_csd_44650 rel_sectors mmc_ext_csd 0 44650 NULL
155865 +enable_so_cm_cno_nilfs_cpmode_44654 cm_cno nilfs_cpmode 0 44654 NULL
155866 +enable_so_nr_sectors_blkif_request_discard_44655 nr_sectors blkif_request_discard 0 44655 NULL nohasharray
155867 +enable_so_bLength_usb_interface_descriptor_44655 bLength usb_interface_descriptor 0 44655 &enable_so_nr_sectors_blkif_request_discard_44655
155868 +enable_so_sparse_early_usemaps_alloc_pgdat_section_fndecl_44659 sparse_early_usemaps_alloc_pgdat_section fndecl 2 44659 NULL
155869 +enable_so_import_single_range_fndecl_44662 import_single_range fndecl 3 44662 NULL
155870 +enable_so_udf_sb_alloc_partition_maps_fndecl_44666 udf_sb_alloc_partition_maps fndecl 2 44666 NULL nohasharray
155871 +enable_so_num_desc_pages__drm_via_sg_info_44666 num_desc_pages _drm_via_sg_info 0 44666 &enable_so_udf_sb_alloc_partition_maps_fndecl_44666
155872 +enable_so_fe_len_ext4_free_extent_44669 fe_len ext4_free_extent 0 44669 NULL
155873 +enable_so_lfb_width_screen_info_44670 lfb_width screen_info 0 44670 NULL
155874 +enable_so_flash_write_fndecl_44673 flash_write fndecl 3 44673 NULL
155875 +enable_so_iwl_hwrate_to_plcp_idx_fndecl_44674 iwl_hwrate_to_plcp_idx fndecl 1 44674 NULL
155876 +enable_so_sys_io_setup_fndecl_44679 sys_io_setup fndecl 1 44679 NULL
155877 +enable_so_xfpregs_set_fndecl_44680 xfpregs_set fndecl 4 44680 NULL
155878 +enable_so_COM_len_camera_data_44681 COM_len camera_data 0 44681 NULL nohasharray
155879 +enable_so_setup_swap_map_and_extents_fndecl_44681 setup_swap_map_and_extents fndecl 5 44681 &enable_so_COM_len_camera_data_44681
155880 +enable_so_msg_size_ecryptfs_msg_ctx_44687 msg_size ecryptfs_msg_ctx 0 44687 NULL
155881 +enable_so_offset_drm_map_44692 offset drm_map 0 44692 NULL
155882 +enable_so_ipath_piobufbase_ipath_devdata_44698 ipath_piobufbase ipath_devdata 0 44698 NULL
155883 +enable_so_start_linear_c_44708 start linear_c 0 44708 NULL
155884 +enable_so_ts_packet_count_saa7164_port_44712 ts_packet_count saa7164_port 0 44712 NULL
155885 +enable_so_sm501_calc_clock_fndecl_44717 sm501_calc_clock fndecl 4 44717 NULL
155886 +enable_so_altera_irscan_fndecl_44719 altera_irscan fndecl 2 44719 NULL
155887 +enable_so___nilfs_get_page_block_fndecl_44723 __nilfs_get_page_block fndecl 4 44723 NULL
155888 +enable_so_inlen_mimd_44727 inlen mimd 0 44727 NULL nohasharray
155889 +enable_so_kmalloc_order_fndecl_44727 kmalloc_order fndecl 1 44727 &enable_so_inlen_mimd_44727
155890 +enable_so_assoc_req_ies_len_station_info_44731 assoc_req_ies_len station_info 0 44731 NULL nohasharray
155891 +enable_so_buffer_size_st_buffer_44731 buffer_size st_buffer 0 44731 &enable_so_assoc_req_ies_len_station_info_44731
155892 +enable_so_name_len_name_cache_entry_44739 name_len name_cache_entry 0 44739 NULL
155893 +enable_so_erst_clearer_fndecl_44743 erst_clearer fndecl 2 44743 NULL
155894 +enable_so_p_memsz_elf64_phdr_44763 p_memsz elf64_phdr 0 44763 NULL
155895 +enable_so_handle_mmio_page_fault_common_fndecl_44768 handle_mmio_page_fault_common fndecl 2 44768 NULL
155896 +enable_so_sys_tee_fndecl_44769 sys_tee fndecl 3 44769 NULL
155897 +enable_so_count_snd_kcontrol_44773 count snd_kcontrol 0 44773 NULL
155898 +enable_so_nbp_vlan_add_fndecl_44783 nbp_vlan_add fndecl 2 44783 NULL
155899 +enable_so_truncate_size_ceph_mds_caps_44794 truncate_size ceph_mds_caps 0 44794 NULL
155900 +enable_so_cow_file_range_fndecl_44808 cow_file_range fndecl 3-4 44808 NULL
155901 +enable_so_fd_locked_ioctl_fndecl_44809 fd_locked_ioctl fndecl 3 44809 NULL
155902 +enable_so_raw_getfrag_fndecl_44811 raw_getfrag fndecl 3-4 44811 NULL
155903 +enable_so_ndev_debugfs_read_fndecl_44812 ndev_debugfs_read fndecl 3 44812 NULL
155904 +enable_so_set_extent_delalloc_fndecl_44813 set_extent_delalloc fndecl 3-2 44813 NULL
155905 +enable_so_sb_uquotino_xfs_sb_44820 sb_uquotino xfs_sb 0 44820 NULL
155906 +enable_so_count_atl1c_tpd_ring_44824 count atl1c_tpd_ring 0 44824 NULL
155907 +enable_so_vlan_tag_be_rx_compl_info_44830 vlan_tag be_rx_compl_info 0 44830 NULL nohasharray
155908 +enable_so_fix_read_error_fndecl_44830 fix_read_error fndecl 4-3 44830 &enable_so_vlan_tag_be_rx_compl_info_44830
155909 +enable_so_snprint_stack_trace_fndecl_44832 snprint_stack_trace fndecl 0 44832 NULL
155910 +enable_so_dequeue_event_fndecl_44835 dequeue_event fndecl 3 44835 NULL
155911 +enable_so_name_len_exofs_dir_entry_44838 name_len exofs_dir_entry 0 44838 NULL
155912 +enable_so_exofs_readpages_fndecl_44841 exofs_readpages fndecl 4 44841 NULL
155913 +enable_so_num_zones_quirk_entry_44844 num_zones quirk_entry 0 44844 NULL
155914 +enable_so_btrfs_shrink_device_fndecl_44845 btrfs_shrink_device fndecl 2 44845 NULL
155915 +enable_so_ext4_da_get_block_prep_fndecl_44848 ext4_da_get_block_prep fndecl 2 44848 NULL
155916 +enable_so_primary_size_drm_mga_dma_bootstrap_44851 primary_size drm_mga_dma_bootstrap 0 44851 NULL
155917 +enable_so_start_segno_sit_entry_set_44852 start_segno sit_entry_set 0 44852 NULL
155918 +enable_so_viafb_second_yres_vardecl_44862 viafb_second_yres vardecl 0 44862 NULL nohasharray
155919 +enable_so_offset_isofs_iget5_callback_data_44862 offset isofs_iget5_callback_data 0 44862 &enable_so_viafb_second_yres_vardecl_44862
155920 +enable_so_ieee802154_hdr_get_addr_fndecl_44863 ieee802154_hdr_get_addr fndecl 0 44863 NULL
155921 +enable_so_pmcraid_build_passthrough_ioadls_fndecl_44865 pmcraid_build_passthrough_ioadls fndecl 2 44865 NULL
155922 +enable_so_crypt_extent_fndecl_44866 crypt_extent fndecl 4 44866 NULL nohasharray
155923 +enable_so_h4_recv_fndecl_44866 h4_recv fndecl 3 44866 &enable_so_crypt_extent_fndecl_44866
155924 +enable_so_alloc_rc_map_44870 alloc rc_map 0 44870 NULL
155925 +enable_so_romfs_blk_read_fndecl_44875 romfs_blk_read fndecl 4-2 44875 NULL
155926 +enable_so_ppp_tx_cp_fndecl_44879 ppp_tx_cp fndecl 5 44879 NULL
155927 +enable_so_SyS_setxattr_fndecl_44880 SyS_setxattr fndecl 4 44880 NULL
155928 +enable_so_p2_dpll_44886 p2 dpll 0 44886 NULL nohasharray
155929 +enable_so_num_resources_platform_device_44886 num_resources platform_device 0 44886 &enable_so_p2_dpll_44886
155930 +enable_so___cookie_v4_check_fndecl_44887 __cookie_v4_check fndecl 0 44887 NULL
155931 +enable_so_code_length_lirc_driver_44888 code_length lirc_driver 0 44888 NULL
155932 +enable_so_dpll_intel_dpll_hw_state_44889 dpll intel_dpll_hw_state 0 44889 NULL
155933 +enable_so_deh_len_hops_ddpehdr_44891 deh_len_hops ddpehdr 0 44891 NULL nohasharray
155934 +enable_so_SYSC_select_fndecl_44891 SYSC_select fndecl 1 44891 &enable_so_deh_len_hops_ddpehdr_44891
155935 +enable_so_minor_hash_dx_hash_info_44897 minor_hash dx_hash_info 0 44897 NULL
155936 +enable_so_pcpu_alloc_bootmem_fndecl_44905 pcpu_alloc_bootmem fndecl 3-2 44905 NULL
155937 +enable_so_write_packet_fndecl_44910 write_packet fndecl 3 44910 NULL
155938 +enable_so_do_pselect_fndecl_44926 do_pselect fndecl 1 44926 NULL
155939 +enable_so_get_domain_for_dev_fndecl_44928 get_domain_for_dev fndecl 2 44928 NULL
155940 +enable_so_bvec_iter_advance_fndecl_44933 bvec_iter_advance fndecl 3 44933 NULL
155941 +enable_so_ipath_user_sdma_pin_pages_fndecl_44935 ipath_user_sdma_pin_pages fndecl 3 44935 NULL
155942 +enable_so_jffs2_security_setxattr_fndecl_44936 jffs2_security_setxattr fndecl 4 44936 NULL
155943 +enable_so_data_dev_block_bits_dm_verity_44943 data_dev_block_bits dm_verity 0 44943 NULL
155944 +enable_so_data_block_dm_thin_new_mapping_44944 data_block dm_thin_new_mapping 0 44944 NULL
155945 +enable_so_max_msix_vectors_vardecl_mpt2sas_base_c_44954 max_msix_vectors vardecl_mpt2sas_base.c 0 44954 NULL
155946 +enable_so_coff_ddb_output_44962 coff ddb_output 0 44962 NULL
155947 +enable_so_ql_status_fndecl_44964 ql_status fndecl 5 44964 NULL
155948 +enable_so_qib_diag_write_fndecl_44966 qib_diag_write fndecl 3 44966 NULL
155949 +enable_so_fat12_ent_bread_fndecl_44968 fat12_ent_bread fndecl 4 44968 NULL
155950 +enable_so_i915_pages_create_for_stolen_fndecl_44970 i915_pages_create_for_stolen fndecl 3-2 44970 NULL
155951 +enable_so_spp_pathmtu_sctp_paddrparams_44974 spp_pathmtu sctp_paddrparams 0 44974 NULL
155952 +enable_so_x0_osd_cmd_s_44978 x0 osd_cmd_s 0 44978 NULL
155953 +enable_so_length_mtd_oob_buf64_44979 length mtd_oob_buf64 0 44979 NULL
155954 +enable_so_ip_recv_error_fndecl_44982 ip_recv_error fndecl 3 44982 NULL
155955 +enable_so_generic_block_fiemap_fndecl_44985 generic_block_fiemap fndecl 4 44985 NULL
155956 +enable_so_snd_ak4114_external_rate_fndecl_44987 snd_ak4114_external_rate fndecl 0 44987 NULL
155957 +enable_so_num_carats_acpi_namestring_info_44990 num_carats acpi_namestring_info 0 44990 NULL
155958 +enable_so_transport_lba_32_fndecl_44994 transport_lba_32 fndecl 0 44994 NULL
155959 +enable_so_fts_libipw_device_44996 fts libipw_device 0 44996 NULL
155960 +enable_so_SyS_getxattr_fndecl_44997 SyS_getxattr fndecl 4 44997 NULL
155961 +enable_so_eeprom_size_il_cfg_44998 eeprom_size il_cfg 0 44998 NULL
155962 +enable_so_ocfs2_list_xattr_tree_rec_fndecl_45001 ocfs2_list_xattr_tree_rec fndecl 3 45001 NULL
155963 +enable_so_prism54_wpa_bss_ie_get_fndecl_45006 prism54_wpa_bss_ie_get fndecl 0 45006 NULL
155964 +enable_so_video_usercopy_fndecl_45012 video_usercopy fndecl 2 45012 NULL
155965 +enable_so_size_e820entry_45018 size e820entry 0 45018 NULL
155966 +enable_so_num_cqs_mthca_limits_45021 num_cqs mthca_limits 0 45021 NULL
155967 +enable_so_sock_kmalloc_fndecl_45038 sock_kmalloc fndecl 2 45038 NULL
155968 +enable_so_write_file_dfs_fndecl_45047 write_file_dfs fndecl 3 45047 NULL
155969 +enable_so_alloc_upcall_fndecl_45049 alloc_upcall fndecl 2 45049 NULL
155970 +enable_so_hs_extra_bytes_cfs_hash_45050 hs_extra_bytes cfs_hash 0 45050 NULL
155971 +enable_so_sd_sgentry_align_brcmfmac_sdio_platform_data_45061 sd_sgentry_align brcmfmac_sdio_platform_data 0 45061 NULL
155972 +enable_so_write_buffer_size_vardecl_legousbtower_c_45062 write_buffer_size vardecl_legousbtower.c 0 45062 NULL
155973 +enable_so_unmap_mapping_range_vma_fndecl_45084 unmap_mapping_range_vma fndecl 2-3 45084 NULL
155974 +enable_so_ext3_xattr_set_fndecl_45090 ext3_xattr_set fndecl 5 45090 NULL
155975 +enable_so_revmap_size_irq_domain_45091 revmap_size irq_domain 0 45091 NULL
155976 +enable_so_ocfs2_lock_reflink_xattr_rec_allocators_fndecl_45097 ocfs2_lock_reflink_xattr_rec_allocators fndecl 3 45097 NULL
155977 +enable_so_bblog_size_mdp_superblock_1_45102 bblog_size mdp_superblock_1 0 45102 NULL
155978 +enable_so_head_timestamp_event_queue_45105 head timestamp_event_queue 0 45105 NULL nohasharray
155979 +enable_so_nd_cmd_out_size_fndecl_45105 nd_cmd_out_size fndecl 0 45105 &enable_so_head_timestamp_event_queue_45105
155980 +enable_so_skb_tx_rsvd_cxgbi_device_45109 skb_tx_rsvd cxgbi_device 0 45109 NULL
155981 +enable_so_ea_size_s_fnode_45115 ea_size_s fnode 0 45115 NULL
155982 +enable_so_raid_status_fndecl_45120 raid_status fndecl 5 45120 NULL
155983 +enable_so_ov518_pkt_scan_fndecl_45121 ov518_pkt_scan fndecl 3 45121 NULL
155984 +enable_so_vblk_size_vmdb_45123 vblk_size vmdb 0 45123 NULL
155985 +enable_so_key_len_mwifiex_ds_encrypt_key_45127 key_len mwifiex_ds_encrypt_key 0 45127 NULL
155986 +enable_so_snd_usbmidi_ftdi_input_fndecl_45137 snd_usbmidi_ftdi_input fndecl 3 45137 NULL
155987 +enable_so_specified_table_size_vardecl_45152 specified_table_size vardecl 0 45152 NULL
155988 +enable_so_btrfs_add_qgroup_relation_fndecl_45154 btrfs_add_qgroup_relation fndecl 4-3 45154 NULL
155989 +enable_so_MaxLanBuckets__MSG_PORT_FACTS_REPLY_45155 MaxLanBuckets _MSG_PORT_FACTS_REPLY 0 45155 NULL
155990 +enable_so_ocfs2_set_refcount_tree_fndecl_45158 ocfs2_set_refcount_tree fndecl 3 45158 NULL
155991 +enable_so_pwc_get_fps_Nala_fndecl_45162 pwc_get_fps_Nala fndecl 0 45162 NULL
155992 +enable_so_cmd_sg_cnt_srp_target_port_45169 cmd_sg_cnt srp_target_port 0 45169 NULL
155993 +enable_so_desc_len_skb_frame_desc_45170 desc_len skb_frame_desc 0 45170 NULL
155994 +enable_so_hpfs_remove_dirent_fndecl_45171 hpfs_remove_dirent fndecl 2 45171 NULL nohasharray
155995 +enable_so_n_ao_urbs_usbdux_private_45171 n_ao_urbs usbdux_private 0 45171 &enable_so_hpfs_remove_dirent_fndecl_45171
155996 +enable_so_opticon_write_fndecl_45172 opticon_write fndecl 4 45172 NULL
155997 +enable_so_sel_write_checkreqprot_fndecl_45173 sel_write_checkreqprot fndecl 3 45173 NULL
155998 +enable_so_leaf_cut_entries_fndecl_45176 leaf_cut_entries fndecl 4 45176 NULL
155999 +enable_so_acl_alloc_num_fndecl_45177 acl_alloc_num fndecl 2-1 45177 NULL
156000 +enable_so_n_namesz_elf32_note_45186 n_namesz elf32_note 0 45186 NULL
156001 +enable_so_gfs2_bmap_alloc_fndecl_45189 gfs2_bmap_alloc fndecl 7 45189 NULL
156002 +enable_so_mtu_l2cap_conn_45195 mtu l2cap_conn 0 45195 NULL
156003 +enable_so_count_user_sgentry_45207 count user_sgentry 0 45207 NULL
156004 +enable_so_cur_prob_minstrel_rate_stats_45218 cur_prob minstrel_rate_stats 0 45218 NULL
156005 +enable_so_nvif_object_init_fndecl_45219 nvif_object_init fndecl 6 45219 NULL
156006 +enable_so_l2cap_sock_recvmsg_fndecl_45221 l2cap_sock_recvmsg fndecl 3 45221 NULL
156007 +enable_so_ep_out_usbtest_info_45222 ep_out usbtest_info 0 45222 NULL
156008 +enable_so_nwords_xdr_stream_45223 nwords xdr_stream 0 45223 NULL
156009 +enable_so_emulator_task_switch_fndecl_45228 emulator_task_switch fndecl 2-3 45228 NULL nohasharray
156010 +enable_so_hsu_dma_alloc_desc_fndecl_45228 hsu_dma_alloc_desc fndecl 1 45228 &enable_so_emulator_task_switch_fndecl_45228
156011 +enable_so_usb_bulk_msg_fndecl_45230 usb_bulk_msg fndecl 0 45230 NULL
156012 +enable_so_packet_buffer_put_fndecl_45234 packet_buffer_put fndecl 3 45234 NULL
156013 +enable_so_internal_dev_change_mtu_fndecl_45242 internal_dev_change_mtu fndecl 2 45242 NULL
156014 +enable_so_aggregate_new_rx_fndecl_45246 aggregate_new_rx fndecl 4 45246 NULL
156015 +enable_so_ext4_update_inline_data_fndecl_45259 ext4_update_inline_data fndecl 3 45259 NULL
156016 +enable_so_alloc_buf_fndecl_45267 alloc_buf fndecl 2-3 45267 NULL
156017 +enable_so_generic_writepages_fndecl_45268 generic_writepages fndecl 0 45268 NULL
156018 +enable_so_rss_size_max_i40e_pf_45282 rss_size_max i40e_pf 0 45282 NULL
156019 +enable_so_ath6kl_sdio_write_async_fndecl_45290 ath6kl_sdio_write_async fndecl 4 45290 NULL
156020 +enable_so_scrub_chunk_fndecl_45293 scrub_chunk fndecl 5 45293 NULL
156021 +enable_so_ceph_sync_direct_write_fndecl_45304 ceph_sync_direct_write fndecl 0-3 45304 NULL nohasharray
156022 +enable_so_hugetlbfs_read_actor_fndecl_45304 hugetlbfs_read_actor fndecl 4-2 45304 &enable_so_ceph_sync_direct_write_fndecl_45304
156023 +enable_so_atl1_change_mtu_fndecl_45313 atl1_change_mtu fndecl 2 45313 NULL nohasharray
156024 +enable_so_rx_ring_count_xgbe_prv_data_45313 rx_ring_count xgbe_prv_data 0 45313 &enable_so_atl1_change_mtu_fndecl_45313
156025 +enable_so_tstats_write_fndecl_45315 tstats_write fndecl 3 45315 NULL
156026 +enable_so_rx_data_fndecl_45321 rx_data fndecl 4 45321 NULL
156027 +enable_so_len_qib_diag_xpkt_45322 len qib_diag_xpkt 0 45322 NULL
156028 +enable_so_tipc_recv_stream_fndecl_45323 tipc_recv_stream fndecl 3 45323 NULL
156029 +enable_so_back_xfs_dir3_icleaf_hdr_45324 back xfs_dir3_icleaf_hdr 0 45324 NULL
156030 +enable_so_tcf_csum_ipv4_igmp_fndecl_45325 tcf_csum_ipv4_igmp fndecl 3 45325 NULL
156031 +enable_so_swiotlb_alloc_coherent_fndecl_45334 swiotlb_alloc_coherent fndecl 2 45334 NULL
156032 +enable_so_vm_munmap_fndecl_45341 vm_munmap fndecl 1-2 45341 NULL
156033 +enable_so_uar_size_mlx4_dev_cap_45351 uar_size mlx4_dev_cap 0 45351 NULL
156034 +enable_so_fps_timblogiw_tvnorm_45355 fps timblogiw_tvnorm 0 45355 NULL
156035 +enable_so_icq_size_elevator_type_45359 icq_size elevator_type 0 45359 NULL
156036 +enable_so_maxvf_vardecl_uvesafb_c_45362 maxvf vardecl_uvesafb.c 0 45362 NULL
156037 +enable_so_lustre_msg_early_size_fndecl_45379 lustre_msg_early_size fndecl 0 45379 NULL
156038 +enable_so_txq_entries_efx_nic_45383 txq_entries efx_nic 0 45383 NULL
156039 +enable_so_crypto_shash_setkey_fndecl_45392 crypto_shash_setkey fndecl 3 45392 NULL
156040 +enable_so_ebcnt_vardecl_speedtest_c_45398 ebcnt vardecl_speedtest.c 0 45398 NULL
156041 +enable_so_last_txrate_idx_il3945_rs_sta_45402 last_txrate_idx il3945_rs_sta 0 45402 NULL
156042 +enable_so_xpc_nasid_mask_nbytes_vardecl_xpc_partition_c_45405 xpc_nasid_mask_nbytes vardecl_xpc_partition.c 0 45405 NULL
156043 +enable_so_mtu_l2cap_le_conn_req_45411 mtu l2cap_le_conn_req 0 45411 NULL
156044 +enable_so_reqsize_aead_tfm_45413 reqsize aead_tfm 0 45413 NULL
156045 +enable_so_brcmf_init_nvram_parser_fndecl_45415 brcmf_init_nvram_parser fndecl 3 45415 NULL
156046 +enable_so_lastUnit_INFTLPartition_45416 lastUnit INFTLPartition 0 45416 NULL
156047 +enable_so_inode_need_killpriv_security_operations_45419 inode_need_killpriv security_operations 0 45419 NULL
156048 +enable_so_fats_msdos_sb_info_45426 fats msdos_sb_info 0 45426 NULL
156049 +enable_so___munlock_pagevec_fill_fndecl_45430 __munlock_pagevec_fill fndecl 0-4 45430 NULL
156050 +enable_so_compat_SyS_get_mempolicy_fndecl_45436 compat_SyS_get_mempolicy fndecl 3 45436 NULL
156051 +enable_so_rn_tnamelen_nfsd4_rename_45437 rn_tnamelen nfsd4_rename 0 45437 NULL
156052 +enable_so_radeon_ttm_tt_set_userptr_fndecl_45438 radeon_ttm_tt_set_userptr fndecl 2 45438 NULL
156053 +enable_so_nfsd_hashsize_fndecl_45441 nfsd_hashsize fndecl 0 45441 NULL
156054 +enable_so_qcaspi_netdev_change_mtu_fndecl_45450 qcaspi_netdev_change_mtu fndecl 2 45450 NULL
156055 +enable_so_start_bdi_bd_transfer_45454 start_bdi bd_transfer 0 45454 NULL
156056 +enable_so_wTotalLength_usb_bos_descriptor_45455 wTotalLength usb_bos_descriptor 0 45455 NULL
156057 +enable_so_nonpaging_map_fndecl_45460 nonpaging_map fndecl 4-2 45460 NULL
156058 +enable_so_ssize_jumpshot_info_45467 ssize jumpshot_info 0 45467 NULL
156059 +enable_so_sockaddr_len_audit_context_45471 sockaddr_len audit_context 0 45471 NULL
156060 +enable_so_gx_line_delta_fndecl_45476 gx_line_delta fndecl 2-1 45476 NULL
156061 +enable_so_btrfs_add_delayed_tree_ref_fndecl_45481 btrfs_add_delayed_tree_ref fndecl 5-6-3-4-7 45481 NULL
156062 +enable_so_hdisplay_drm_display_mode_45484 hdisplay drm_display_mode 0 45484 NULL
156063 +enable_so_memblock_virt_alloc_try_nid_nopanic_fndecl_45487 memblock_virt_alloc_try_nid_nopanic fndecl 2-1 45487 NULL
156064 +enable_so_ovl_cache_entry_add_rb_fndecl_45488 ovl_cache_entry_add_rb fndecl 3 45488 NULL
156065 +enable_so_convert_initialized_extent_fndecl_45492 convert_initialized_extent fndecl 0-6 45492 NULL
156066 +enable_so_isofs_bmap_fndecl_45497 isofs_bmap fndecl 0-2 45497 NULL
156067 +enable_so_mwifiex_set_gen_ie_fndecl_45504 mwifiex_set_gen_ie fndecl 3 45504 NULL
156068 +enable_so_acl_alloc_stack_init_fndecl_45509 acl_alloc_stack_init fndecl 1 45509 NULL
156069 +enable_so_free_dind_blocks_fndecl_45512 free_dind_blocks fndecl 3 45512 NULL
156070 +enable_so_stv6110_write_regs_fndecl_45517 stv6110_write_regs fndecl 4 45517 NULL nohasharray
156071 +enable_so_buffer_size_vardecl_cpia2_v4l_c_45517 buffer_size vardecl_cpia2_v4l.c 0 45517 &enable_so_stv6110_write_regs_fndecl_45517
156072 +enable_so_wl1273_fm_fops_write_fndecl_45534 wl1273_fm_fops_write fndecl 3 45534 NULL
156073 +enable_so_rtsx_usb_bulk_transfer_sglist_fndecl_45538 rtsx_usb_bulk_transfer_sglist fndecl 5-2 45538 NULL
156074 +enable_so_rate_n_flags_iwl_rx_phy_info_45542 rate_n_flags iwl_rx_phy_info 0 45542 NULL
156075 +enable_so_size_nft_expr_ops_45543 size nft_expr_ops 0 45543 NULL nohasharray
156076 +enable_so_arch_setup_dma_ops_fndecl_45543 arch_setup_dma_ops fndecl 3 45543 &enable_so_size_nft_expr_ops_45543
156077 +enable_so_if_sdio_host_to_card_fndecl_45545 if_sdio_host_to_card fndecl 4 45545 NULL
156078 +enable_so_mp_agg_pkt_limit_sdio_mmc_card_45546 mp_agg_pkt_limit sdio_mmc_card 0 45546 NULL
156079 +enable_so_bpp_via_format_45554 bpp via_format 0 45554 NULL
156080 +enable_so_SyS_prctl_fndecl_45569 SyS_prctl fndecl 4 45569 NULL
156081 +enable_so_height_pwc_device_45570 height pwc_device 0 45570 NULL
156082 +enable_so_get_gate_page_fndecl_45571 get_gate_page fndecl 2 45571 NULL
156083 +enable_so_srp_create_fr_pool_fndecl_45572 srp_create_fr_pool fndecl 3 45572 NULL
156084 +enable_so_s_partition_func_udf_part_map_45579 s_partition_func udf_part_map 0 45579 NULL
156085 +enable_so_f2fs_sync_file_fndecl_45585 f2fs_sync_file fndecl 2 45585 NULL
156086 +enable_so_udf_free_blocks_fndecl_45589 udf_free_blocks fndecl 4-5 45589 NULL
156087 +enable_so_wpan_phy_new_fndecl_45593 wpan_phy_new fndecl 2 45593 NULL
156088 +enable_so_upd_received_ubi_volume_45595 upd_received ubi_volume 0 45595 NULL
156089 +enable_so_level_btrfs_header_45603 level btrfs_header 0 45603 NULL
156090 +enable_so_readpos_cx18_buffer_45604 readpos cx18_buffer 0 45604 NULL
156091 +enable_so_readfreq_si476x_rsq_status_report_45610 readfreq si476x_rsq_status_report 0 45610 NULL
156092 +enable_so_gss_krb5_aes_encrypt_fndecl_45613 gss_krb5_aes_encrypt fndecl 2 45613 NULL
156093 +enable_so_l_logBBsize_xlog_45614 l_logBBsize xlog 0 45614 NULL
156094 +enable_so_crtc_vblank_end_drm_display_mode_45620 crtc_vblank_end drm_display_mode 0 45620 NULL
156095 +enable_so_blocknr_disk_index_entry_45635 blocknr disk_index_entry 0 45635 NULL
156096 +enable_so_advmss_tcp_sock_45637 advmss tcp_sock 0 45637 NULL nohasharray
156097 +enable_so_btrfs_bio_alloc_fndecl_45637 btrfs_bio_alloc fndecl 2 45637 &enable_so_advmss_tcp_sock_45637
156098 +enable_so_tcfv_push_vid_tcf_vlan_45639 tcfv_push_vid tcf_vlan 0 45639 NULL
156099 +enable_so_jfs_direct_IO_fndecl_45661 jfs_direct_IO fndecl 3 45661 NULL
156100 +enable_so_blockmask_alauda_media_info_45662 blockmask alauda_media_info 0 45662 NULL
156101 +enable_so_xfer_from_user_fndecl_45672 xfer_from_user fndecl 3 45672 NULL
156102 +enable_so__snd_pcm_hw_param_min_fndecl_45677 _snd_pcm_hw_param_min fndecl 3 45677 NULL
156103 +enable_so_ocfs2_get_sector_fndecl_45678 ocfs2_get_sector fndecl 4-3 45678 NULL
156104 +enable_so_ib_umem_odp_map_dma_pages_fndecl_45679 ib_umem_odp_map_dma_pages fndecl 2 45679 NULL
156105 +enable_so_sys_add_key_fndecl_45691 sys_add_key fndecl 4 45691 NULL nohasharray
156106 +enable_so_nvme_trans_copy_to_user_fndecl_45691 nvme_trans_copy_to_user fndecl 3 45691 &enable_so_sys_add_key_fndecl_45691
156107 +enable_so_write_file_spectral_short_repeat_fndecl_45700 write_file_spectral_short_repeat fndecl 3 45700 NULL
156108 +enable_so_paging64_fetch_fndecl_45702 paging64_fetch fndecl 2 45702 NULL
156109 +enable_so_offset_ixgbe_ring_feature_45704 offset ixgbe_ring_feature 0 45704 NULL
156110 +enable_so_data_transfer_length_hpt_iop_request_get_config_45705 data_transfer_length hpt_iop_request_get_config 0 45705 NULL
156111 +enable_so_do_splice_direct_fndecl_45710 do_splice_direct fndecl 5 45710 NULL nohasharray
156112 +enable_so_fi_nblocks_nilfs_finfo_45710 fi_nblocks nilfs_finfo 0 45710 &enable_so_do_splice_direct_fndecl_45710
156113 +enable_so_st5481_setup_isocpipes_fndecl_45711 st5481_setup_isocpipes fndecl 6 45711 NULL
156114 +enable_so_width_cx23885_dev_45714 width cx23885_dev 0 45714 NULL
156115 +enable_so_ocfs2_xattr_set_fndecl_45720 ocfs2_xattr_set fndecl 5 45720 NULL
156116 +enable_so_num_cqs_mlx4_caps_45727 num_cqs mlx4_caps 0 45727 NULL
156117 +enable_so_len_bnx2x_fw_file_section_45732 len bnx2x_fw_file_section 0 45732 NULL
156118 +enable_so_sys_ptrace_fndecl_45738 sys_ptrace fndecl 3 45738 NULL
156119 +enable_so_lis_stripe_count_lov_io_45743 lis_stripe_count lov_io 0 45743 NULL
156120 +enable_so___add_inline_refs_fndecl_45744 __add_inline_refs fndecl 3 45744 NULL
156121 +enable_so_get_args_iw_priv_args_45748 get_args iw_priv_args 0 45748 NULL
156122 +enable_so_vslen_vardecl_matroxfb_base_c_45755 vslen vardecl_matroxfb_base.c 0 45755 NULL
156123 +enable_so_stb0899_read_reg_fndecl_45758 stb0899_read_reg fndecl 0 45758 NULL
156124 +enable_so_extra_postfix_len_ieee80211_crypto_ops_45763 extra_postfix_len ieee80211_crypto_ops 0 45763 NULL
156125 +enable_so_count_n_hdlc_buf_45767 count n_hdlc_buf 0 45767 NULL
156126 +enable_so_set_acoustic_fndecl_45772 set_acoustic fndecl 2 45772 NULL
156127 +enable_so_flows_cnt_fq_codel_sched_data_45775 flows_cnt fq_codel_sched_data 0 45775 NULL
156128 +enable_so_addr_nvme_user_io_45777 addr nvme_user_io 0 45777 NULL
156129 +enable_so_buf_addr_mlx4_ib_create_qp_45781 buf_addr mlx4_ib_create_qp 0 45781 NULL nohasharray
156130 +enable_so_len_ch_mem_range_45781 len ch_mem_range 0 45781 &enable_so_buf_addr_mlx4_ib_create_qp_45781
156131 +enable_so_get_inode_info_fndecl_45784 get_inode_info fndecl 2 45784 NULL
156132 +enable_so_online_pages_fndecl_45786 online_pages fndecl 2-1 45786 NULL
156133 +enable_so_h_suballoc_loc_ocfs2_extent_block_45805 h_suballoc_loc ocfs2_extent_block 0 45805 NULL
156134 +enable_so_len_sync_pt_info_45809 len sync_pt_info 0 45809 NULL
156135 +enable_so_max_node_size_pnp_dev_node_info_45813 max_node_size pnp_dev_node_info 0 45813 NULL
156136 +enable_so_xfs_zero_remaining_bytes_fndecl_45820 xfs_zero_remaining_bytes fndecl 3-2 45820 NULL
156137 +enable_so_msg_init_fndecl_45825 msg_init fndecl 4 45825 NULL
156138 +enable_so_tx_cmd_ep_usb_card_rec_45833 tx_cmd_ep usb_card_rec 0 45833 NULL
156139 +enable_so_max_channels_evtchn_ops_45841 max_channels evtchn_ops 0 45841 NULL
156140 +enable_so_submit_extent_page_fndecl_45843 submit_extent_page fndecl 4-5-6 45843 NULL
156141 +enable_so_width_zr364xx_camera_45844 width zr364xx_camera 0 45844 NULL nohasharray
156142 +enable_so_mwifiex_cfg80211_assoc_fndecl_45844 mwifiex_cfg80211_assoc fndecl 2 45844 &enable_so_width_zr364xx_camera_45844
156143 +enable_so_sys_mlock_fndecl_45847 sys_mlock fndecl 1-2 45847 NULL nohasharray
156144 +enable_so_bochs_gem_create_fndecl_45847 bochs_gem_create fndecl 2 45847 &enable_so_sys_mlock_fndecl_45847
156145 +enable_so_xfs_rtallocate_extent_size_fndecl_45848 xfs_rtallocate_extent_size fndecl 4-8 45848 NULL
156146 +enable_so_num_fault_mutexes_vardecl_hugetlb_c_45857 num_fault_mutexes vardecl_hugetlb.c 0 45857 NULL
156147 +enable_so_net_header_len_inet_connection_sock_af_ops_45863 net_header_len inet_connection_sock_af_ops 0 45863 NULL
156148 +enable_so___a2mp_build_fndecl_45864 __a2mp_build fndecl 3 45864 NULL
156149 +enable_so_xfrm_nr_xfrm_policy_45865 xfrm_nr xfrm_policy 0 45865 NULL
156150 +enable_so_parity_ore_layout_45869 parity ore_layout 0 45869 NULL nohasharray
156151 +enable_so_hsc_msg_alloc_fndecl_45869 hsc_msg_alloc fndecl 1 45869 &enable_so_parity_ore_layout_45869
156152 +enable_so_fpfd_adf4350_state_45870 fpfd adf4350_state 0 45870 NULL
156153 +enable_so_mwifiex_alloc_sdio_mpa_buffers_fndecl_45874 mwifiex_alloc_sdio_mpa_buffers fndecl 2-3 45874 NULL
156154 +enable_so_pti_char_write_fndecl_45875 pti_char_write fndecl 3 45875 NULL
156155 +enable_so_ext4_es_remove_extent_fndecl_45877 ext4_es_remove_extent fndecl 3-2 45877 NULL
156156 +enable_so_max_buffer_sectors_vardecl_floppy_c_45884 max_buffer_sectors vardecl_floppy.c 0 45884 NULL
156157 +enable_so_do_shared_fault_fndecl_45891 do_shared_fault fndecl 3-5 45891 NULL
156158 +enable_so___absent_pages_in_range_fndecl_45892 __absent_pages_in_range fndecl 0-2-3 45892 NULL
156159 +enable_so___record_deleted_ref_fndecl_45899 __record_deleted_ref fndecl 2 45899 NULL
156160 +enable_so_generic_file_direct_write_fndecl_45904 generic_file_direct_write fndecl 3 45904 NULL nohasharray
156161 +enable_so_bLength_usb_descriptor_header_45904 bLength usb_descriptor_header 0 45904 &enable_so_generic_file_direct_write_fndecl_45904
156162 +enable_so_jhead_cnt_ubifs_info_45905 jhead_cnt ubifs_info 0 45905 NULL
156163 +enable_so_bg_itable_unused_hi_ext4_group_desc_45918 bg_itable_unused_hi ext4_group_desc 0 45918 NULL
156164 +enable_so_lpfc_idiag_queacc_write_fndecl_45920 lpfc_idiag_queacc_write fndecl 3 45920 NULL
156165 +enable_so_mru_asyncppp_45929 mru asyncppp 0 45929 NULL
156166 +enable_so_fan_count_applesmc_registers_45934 fan_count applesmc_registers 0 45934 NULL
156167 +enable_so_num_ports_pciserial_board_45938 num_ports pciserial_board 0 45938 NULL
156168 +enable_so_i_dir_level_f2fs_inode_info_45949 i_dir_level f2fs_inode_info 0 45949 NULL
156169 +enable_so_sigma_fw_load_samplerates_fndecl_45951 sigma_fw_load_samplerates fndecl 3-0 45951 NULL
156170 +enable_so_security_set_fndecl_45953 security_set fndecl 4 45953 NULL
156171 +enable_so_q1_buf_size_bna_rx_config_45965 q1_buf_size bna_rx_config 0 45965 NULL
156172 +enable_so_qnx6_find_entry_fndecl_45969 qnx6_find_entry fndecl 0 45969 NULL nohasharray
156173 +enable_so_len_ippp_buf_queue_45969 len ippp_buf_queue 0 45969 &enable_so_qnx6_find_entry_fndecl_45969
156174 +enable_so_recover_data_page_fndecl_45972 recover_data_page fndecl 5 45972 NULL
156175 +enable_so_ext_tree_split_fndecl_45973 ext_tree_split fndecl 3 45973 NULL
156176 +enable_so_dbdma_cmd_yellowfin_desc_45980 dbdma_cmd yellowfin_desc 0 45980 NULL nohasharray
156177 +enable_so_target_size_ebt_entry_target_45980 target_size ebt_entry_target 0 45980 &enable_so_dbdma_cmd_yellowfin_desc_45980
156178 +enable_so___probe_kernel_read_fndecl_45996 __probe_kernel_read fndecl 3 45996 NULL
156179 +enable_so_sctp_v4_err_fndecl_45997 sctp_v4_err fndecl 2 45997 NULL
156180 +enable_so_btrfs_search_path_in_tree_fndecl_45998 btrfs_search_path_in_tree fndecl 2-3 45998 NULL
156181 +enable_so_finish_request_fndecl_46010 finish_request fndecl 5 46010 NULL
156182 +enable_so_add_del_listener_fndecl_46013 add_del_listener fndecl 0 46013 NULL
156183 +enable_so_get_derived_key_fndecl_46015 get_derived_key fndecl 4 46015 NULL
156184 +enable_so_afs_proc_cells_write_fndecl_46016 afs_proc_cells_write fndecl 3 46016 NULL
156185 +enable_so_hw_ptr_snd_rawmidi_runtime_46024 hw_ptr snd_rawmidi_runtime 0 46024 NULL
156186 +enable_so_vmemmap_alloc_block_buf_fndecl_46037 vmemmap_alloc_block_buf fndecl 1 46037 NULL nohasharray
156187 +enable_so_forced_offset_bna_hds_config_46037 forced_offset bna_hds_config 0 46037 &enable_so_vmemmap_alloc_block_buf_fndecl_46037
156188 +enable_so_acl_mtu_hci_dev_46038 acl_mtu hci_dev 0 46038 NULL
156189 +enable_so_value_len_ext3_xattr_info_46044 value_len ext3_xattr_info 0 46044 NULL
156190 +enable_so_dma_size_qlcnic_host_rds_ring_46045 dma_size qlcnic_host_rds_ring 0 46045 NULL
156191 +enable_so_p9_client_prepare_req_fndecl_46048 p9_client_prepare_req fndecl 3 46048 NULL
156192 +enable_so___vmalloc_fndecl_46051 __vmalloc fndecl 1 46051 NULL
156193 +enable_so_sys_lsetxattr_fndecl_46058 sys_lsetxattr fndecl 4 46058 NULL
156194 +enable_so_sisfb_parm_mem_sis_video_info_46063 sisfb_parm_mem sis_video_info 0 46063 NULL nohasharray
156195 +enable_so_get_tx_data_len_rt2x00lib_ops_46063 get_tx_data_len rt2x00lib_ops 0 46063 &enable_so_sisfb_parm_mem_sis_video_info_46063
156196 +enable_so_MaxBurstLength_iscsi_sess_ops_46064 MaxBurstLength iscsi_sess_ops 0 46064 NULL nohasharray
156197 +enable_so_s_start_bfs_super_block_46064 s_start bfs_super_block 0 46064 &enable_so_MaxBurstLength_iscsi_sess_ops_46064
156198 +enable_so_seg_count_drm_buf_entry_46065 seg_count drm_buf_entry 0 46065 NULL
156199 +enable_so_piobufs_qib_ctxtdata_46066 piobufs qib_ctxtdata 0 46066 NULL
156200 +enable_so_FirstPhysicalEUN_NFTLMediaHeader_46068 FirstPhysicalEUN NFTLMediaHeader 0 46068 NULL
156201 +enable_so_wSamplesPerFrame_uac_format_type_ii_ext_descriptor_46084 wSamplesPerFrame uac_format_type_ii_ext_descriptor 0 46084 NULL
156202 +enable_so_alloc_dca_provider_fndecl_46085 alloc_dca_provider fndecl 2 46085 NULL
156203 +enable_so_v9fs_xattr_set_acl_fndecl_46096 v9fs_xattr_set_acl fndecl 4 46096 NULL
156204 +enable_so_hidraw_read_fndecl_46097 hidraw_read fndecl 3 46097 NULL nohasharray
156205 +enable_so_len_sfi_table_header_46097 len sfi_table_header 0 46097 &enable_so_hidraw_read_fndecl_46097
156206 +enable_so_jbd2_journal_write_metadata_buffer_fndecl_46103 jbd2_journal_write_metadata_buffer fndecl 4 46103 NULL
156207 +enable_so_bs_vardecl_null_blk_c_46104 bs vardecl_null_blk.c 0 46104 NULL
156208 +enable_so_page_add_new_anon_rmap_fndecl_46112 page_add_new_anon_rmap fndecl 3 46112 NULL
156209 +enable_so_ioperm_get_fndecl_46118 ioperm_get fndecl 4-3 46118 NULL
156210 +enable_so_pineview_clock_fndecl_46122 pineview_clock fndecl 1 46122 NULL
156211 +enable_so_height_saa7134_dev_46126 height saa7134_dev 0 46126 NULL
156212 +enable_so_get_mctgt_type_fndecl_46128 get_mctgt_type fndecl 2 46128 NULL nohasharray
156213 +enable_so_len_cp_header_46128 len cp_header 0 46128 &enable_so_get_mctgt_type_fndecl_46128
156214 +enable_so_prism2_info_scanresults_fndecl_46146 prism2_info_scanresults fndecl 3 46146 NULL
156215 +enable_so_memblock_alloc_range_nid_fndecl_46147 memblock_alloc_range_nid fndecl 1 46147 NULL
156216 +enable_so_transfer_len_xhci_transfer_event_46161 transfer_len xhci_transfer_event 0 46161 NULL
156217 +enable_so_max_segs_mmc_test_area_46176 max_segs mmc_test_area 0 46176 NULL
156218 +enable_so_key_size_ecryptfs_private_key_46181 key_size ecryptfs_private_key 0 46181 NULL
156219 +enable_so_mlock_fixup_fndecl_46182 mlock_fixup fndecl 4-3 46182 NULL
156220 +enable_so_size_aper_size_info_32_46193 size aper_size_info_32 0 46193 NULL nohasharray
156221 +enable_so_fuse_file_llseek_fndecl_46193 fuse_file_llseek fndecl 2 46193 &enable_so_size_aper_size_info_32_46193 nohasharray
156222 +enable_so_strnlen_fndecl_46193 strnlen fndecl 0 46193 &enable_so_fuse_file_llseek_fndecl_46193
156223 +enable_so_qib_decode_7220_sdma_errs_fndecl_46194 qib_decode_7220_sdma_errs fndecl 4 46194 NULL
156224 +enable_so_sctp_manip_pkt_fndecl_46198 sctp_manip_pkt fndecl 4 46198 NULL
156225 +enable_so_musb_readb_vardecl_46199 musb_readb vardecl 0 46199 NULL nohasharray
156226 +enable_so_snd_interval_refine_set_fndecl_46199 snd_interval_refine_set fndecl 2 46199 &enable_so_musb_readb_vardecl_46199
156227 +enable_so_snd_usbmidi_input_data_fndecl_46204 snd_usbmidi_input_data fndecl 4 46204 NULL nohasharray
156228 +enable_so_count_raw_sock_46204 count raw_sock 0 46204 &enable_so_snd_usbmidi_input_data_fndecl_46204
156229 +enable_so_hblank_lo_detailed_pixel_timing_46206 hblank_lo detailed_pixel_timing 0 46206 NULL
156230 +enable_so_hdrlen_ip_beet_phdr_46210 hdrlen ip_beet_phdr 0 46210 NULL nohasharray
156231 +enable_so_sync_request_md_personality_46210 sync_request md_personality 0 46210 &enable_so_hdrlen_ip_beet_phdr_46210
156232 +enable_so_assocresp_ies_len_cfg80211_beacon_data_46212 assocresp_ies_len cfg80211_beacon_data 0 46212 NULL
156233 +enable_so_modify_index_fndecl_46216 modify_index fndecl 3 46216 NULL
156234 +enable_so_unuse_pte_fndecl_46217 unuse_pte fndecl 3 46217 NULL
156235 +enable_so_cob_size_savagefb_par_46219 cob_size savagefb_par 0 46219 NULL
156236 +enable_so_name_len_ext3_dir_entry_2_46227 name_len ext3_dir_entry_2 0 46227 NULL
156237 +enable_so_bLength_usb_interface_assoc_descriptor_46229 bLength usb_interface_assoc_descriptor 0 46229 NULL
156238 +enable_so_venus_remove_fndecl_46230 venus_remove fndecl 4 46230 NULL
156239 +enable_so_mei_nfc_recv_fndecl_46235 mei_nfc_recv fndecl 3 46235 NULL
156240 +enable_so_rsn_ie_len_libipw_network_46238 rsn_ie_len libipw_network 0 46238 NULL nohasharray
156241 +enable_so_xlog_do_recover_fndecl_46238 xlog_do_recover fndecl 3 46238 &enable_so_rsn_ie_len_libipw_network_46238
156242 +enable_so_response_length_mlx4_uverbs_ex_query_device_resp_46245 response_length mlx4_uverbs_ex_query_device_resp 0 46245 NULL
156243 +enable_so_node_acl_size_target_core_fabric_ops_46247 node_acl_size target_core_fabric_ops 0 46247 NULL
156244 +enable_so_erst_clear_fndecl_46248 erst_clear fndecl 1 46248 NULL
156245 +enable_so_gspca_dev_probe2_fndecl_46250 gspca_dev_probe2 fndecl 4 46250 NULL
156246 +enable_so_extra_beacon_tailroom_ieee80211_hw_46256 extra_beacon_tailroom ieee80211_hw 0 46256 NULL
156247 +enable_so_size_xenvif_rx_meta_46270 size xenvif_rx_meta 0 46270 NULL
156248 +enable_so_xi_value_len_ocfs2_xattr_info_46285 xi_value_len ocfs2_xattr_info 0 46285 NULL
156249 +enable_so_dq_local_phys_blk_ocfs2_dquot_46292 dq_local_phys_blk ocfs2_dquot 0 46292 NULL
156250 +enable_so_len_nfs3_setaclargs_46293 len nfs3_setaclargs 0 46293 NULL
156251 +enable_so_omfs_allocate_block_fndecl_46295 omfs_allocate_block fndecl 2 46295 NULL
156252 +enable_so_dm_btree_insert_notify_fndecl_46297 dm_btree_insert_notify fndecl 2 46297 NULL
156253 +enable_so_regmap_raw_write_async_fndecl_46298 regmap_raw_write_async fndecl 2-4 46298 NULL
156254 +enable_so_status2_ar9003_rxs_46299 status2 ar9003_rxs 0 46299 NULL
156255 +enable_so_ffs_prepare_buffer_fndecl_46311 ffs_prepare_buffer fndecl 2 46311 NULL
156256 +enable_so_i_size_inode_46327 i_size inode 0 46327 NULL
156257 +enable_so_pvr2_ioread_set_sync_key_fndecl_46329 pvr2_ioread_set_sync_key fndecl 3 46329 NULL
156258 +enable_so_shmem_zero_setup_fndecl_46334 shmem_zero_setup fndecl 0 46334 NULL nohasharray
156259 +enable_so_max_vnic_func_qlcnic_hardware_context_46334 max_vnic_func qlcnic_hardware_context 0 46334 &enable_so_shmem_zero_setup_fndecl_46334
156260 +enable_so_mwifiex_cfg80211_tdls_mgmt_fndecl_46335 mwifiex_cfg80211_tdls_mgmt fndecl 10 46335 NULL
156261 +enable_so_stv6110_read_regs_fndecl_46339 stv6110_read_regs fndecl 4 46339 NULL
156262 +enable_so_af9013_rd_regs_i2c_fndecl_46343 af9013_rd_regs_i2c fndecl 5 46343 NULL
156263 +enable_so_recently_deleted_fndecl_46346 recently_deleted fndecl 3 46346 NULL
156264 +enable_so_zoran_v4l_set_format_fndecl_46347 zoran_v4l_set_format fndecl 2-3 46347 NULL
156265 +enable_so_fc_frame_alloc_fill_fndecl_46353 fc_frame_alloc_fill fndecl 2 46353 NULL
156266 +enable_so_nid_f2fs_summary_46354 nid f2fs_summary 0 46354 NULL
156267 +enable_so_dvb_ep_isoc_em28xx_46357 dvb_ep_isoc em28xx 0 46357 NULL
156268 +enable_so_ring_cons_per_user_data_46365 ring_cons per_user_data 0 46365 NULL
156269 +enable_so_max_write_size_ubifs_info_46369 max_write_size ubifs_info 0 46369 NULL
156270 +enable_so_descriptor_loc_fndecl_46373 descriptor_loc fndecl 0-3-2 46373 NULL
156271 +enable_so_bnx2_change_mtu_fndecl_46374 bnx2_change_mtu fndecl 2 46374 NULL nohasharray
156272 +enable_so_fs_path_ensure_buf_fndecl_46374 fs_path_ensure_buf fndecl 2 46374 &enable_so_bnx2_change_mtu_fndecl_46374
156273 +enable_so_gru_start_paddr_vardecl_46378 gru_start_paddr vardecl 0 46378 NULL
156274 +enable_so_acpi_ds_build_internal_buffer_obj_fndecl_46379 acpi_ds_build_internal_buffer_obj fndecl 3 46379 NULL
156275 +enable_so_snd_pcm_oss_set_channels_fndecl_46393 snd_pcm_oss_set_channels fndecl 2 46393 NULL
156276 +enable_so_SavagePanelWidth_savagefb_par_46407 SavagePanelWidth savagefb_par 0 46407 NULL
156277 +enable_so_skb_maybe_pull_tail_fndecl_46422 skb_maybe_pull_tail fndecl 3 46422 NULL
156278 +enable_so_proberesp_ies_len_cfg80211_beacon_data_46424 proberesp_ies_len cfg80211_beacon_data 0 46424 NULL
156279 +enable_so_rds_pin_pages_fndecl_46432 rds_pin_pages fndecl 1 46432 NULL
156280 +enable_so_st21nfca_hci_dep_link_up_fndecl_46438 st21nfca_hci_dep_link_up fndecl 5 46438 NULL
156281 +enable_so_vid_bridge_vlan_info_46442 vid bridge_vlan_info 0 46442 NULL
156282 +enable_so_btrfsic_process_superblock_dev_mirror_fndecl_46444 btrfsic_process_superblock_dev_mirror fndecl 4 46444 NULL
156283 +enable_so_C_SYSC_get_mempolicy_fndecl_46447 C_SYSC_get_mempolicy fndecl 3 46447 NULL
156284 +enable_so__iwl_dbgfs_bcast_filters_write_fndecl_46448 _iwl_dbgfs_bcast_filters_write fndecl 3 46448 NULL
156285 +enable_so_btrfs_del_dir_entries_in_log_fndecl_46449 btrfs_del_dir_entries_in_log fndecl 6 46449 NULL nohasharray
156286 +enable_so_get_last_extent_fndecl_46449 get_last_extent fndecl 2 46449 &enable_so_btrfs_del_dir_entries_in_log_fndecl_46449
156287 +enable_so_nfsd_nrpools_fndecl_46460 nfsd_nrpools fndecl 0 46460 NULL
156288 +enable_so_ib_copy_from_udata_fndecl_46461 ib_copy_from_udata fndecl 3 46461 NULL
156289 +enable_so_size_drm_local_map_46462 size drm_local_map 0 46462 NULL
156290 +enable_so_ssid_len_hfa384x_hostscan_result_46466 ssid_len hfa384x_hostscan_result 0 46466 NULL
156291 +enable_so_ext4_resize_fs_fndecl_46468 ext4_resize_fs fndecl 2 46468 NULL
156292 +enable_so_kmalloc_large_node_fndecl_46469 kmalloc_large_node fndecl 1 46469 NULL
156293 +enable_so_hpfs_add_de_fndecl_46472 hpfs_add_de fndecl 4 46472 NULL
156294 +enable_so_mpi_get_nbits_fndecl_46476 mpi_get_nbits fndecl 0 46476 NULL
156295 +enable_so_nla_put_nohdr_fndecl_46479 nla_put_nohdr fndecl 2 46479 NULL
156296 +enable_so_ro_slot_rcom_slot_46481 ro_slot rcom_slot 0 46481 NULL nohasharray
156297 +enable_so_hr_num_pages_o2hb_region_46481 hr_num_pages o2hb_region 0 46481 &enable_so_ro_slot_rcom_slot_46481
156298 +enable_so_usb_wwan_write_fndecl_46494 usb_wwan_write fndecl 4 46494 NULL
156299 +enable_so___copy_from_user_ll_nozero_fndecl_46496 __copy_from_user_ll_nozero fndecl 0 46496 NULL
156300 +enable_so_afs_fsync_fndecl_46498 afs_fsync fndecl 2 46498 NULL
156301 +enable_so_align_ieee80211_vendor_radiotap_46503 align ieee80211_vendor_radiotap 0 46503 NULL
156302 +enable_so_nfs_direct_write_schedule_iovec_fndecl_46504 nfs_direct_write_schedule_iovec fndecl 3 46504 NULL
156303 +enable_so_tx_rate_sta_info_46505 tx_rate sta_info 0 46505 NULL
156304 +enable_so_write_pbl_fndecl_46508 write_pbl fndecl 4 46508 NULL
156305 +enable_so_tunables_write_fndecl_46520 tunables_write fndecl 3 46520 NULL
156306 +enable_so_bio_split_fndecl_46527 bio_split fndecl 2 46527 NULL
156307 +enable_so_sddr09_request_sense_fndecl_46529 sddr09_request_sense fndecl 3 46529 NULL
156308 +enable_so_dr_suballoc_loc_ocfs2_dx_root_block_46531 dr_suballoc_loc ocfs2_dx_root_block 0 46531 NULL
156309 +enable_so_fcoe_ctlr_vn_send_fndecl_46532 fcoe_ctlr_vn_send fndecl 4 46532 NULL
156310 +enable_so_bNrChannels_uac_format_type_i_continuous_descriptor_46536 bNrChannels uac_format_type_i_continuous_descriptor 0 46536 NULL
156311 +enable_so_hsub_vsp1_format_info_46540 hsub vsp1_format_info 0 46540 NULL
156312 +enable_so_keysize_sunxi_sid_data_46545 keysize sunxi_sid_data 0 46545 NULL
156313 +enable_so_lower_margin_fb_videomode_46549 lower_margin fb_videomode 0 46549 NULL nohasharray
156314 +enable_so_memdup_user_fndecl_46549 memdup_user fndecl 2 46549 &enable_so_lower_margin_fb_videomode_46549
156315 +enable_so_max8925_bulk_write_fndecl_46558 max8925_bulk_write fndecl 3 46558 NULL
156316 +enable_so_max_msix_vectors_vardecl_mpt3sas_base_c_46566 max_msix_vectors vardecl_mpt3sas_base.c 0 46566 NULL
156317 +enable_so_find_first_zero_bit_fndecl_46567 find_first_zero_bit fndecl 0 46567 NULL
156318 +enable_so_ndivs_divs_data_46571 ndivs divs_data 0 46571 NULL
156319 +enable_so_file_update_time_fndecl_46572 file_update_time fndecl 0 46572 NULL
156320 +enable_so_SyS_setdomainname_fndecl_46573 SyS_setdomainname fndecl 2 46573 NULL
156321 +enable_so_frame_bits_snd_pcm_runtime_46580 frame_bits snd_pcm_runtime 0 46580 NULL
156322 +enable_so_mtrr_write_fndecl_46581 mtrr_write fndecl 3 46581 NULL
156323 +enable_so_f2fs_nfs_get_inode_fndecl_46582 f2fs_nfs_get_inode fndecl 2 46582 NULL
156324 +enable_so_qxl_num_crtc_vardecl_46583 qxl_num_crtc vardecl 0 46583 NULL
156325 +enable_so_dm_btree_find_key_fndecl_46584 dm_btree_find_key fndecl 2 46584 NULL
156326 +enable_so_jffs2_alloc_full_dirent_fndecl_46592 jffs2_alloc_full_dirent fndecl 1 46592 NULL nohasharray
156327 +enable_so_sg_build_sgat_fndecl_46592 sg_build_sgat fndecl 3-0 46592 &enable_so_jffs2_alloc_full_dirent_fndecl_46592
156328 +enable_so_back_xfs_attr3_icleaf_hdr_46595 back xfs_attr3_icleaf_hdr 0 46595 NULL
156329 +enable_so_fuse_async_req_send_fndecl_46596 fuse_async_req_send fndecl 0-3 46596 NULL
156330 +enable_so_len_ext4_str_46600 len ext4_str 0 46600 NULL
156331 +enable_so_cma_init_reserved_mem_fndecl_46602 cma_init_reserved_mem fndecl 3-1-2 46602 NULL
156332 +enable_so_init_state_fndecl_46614 init_state fndecl 2 46614 NULL
156333 +enable_so_jmb38x_ms_count_slots_fndecl_46615 jmb38x_ms_count_slots fndecl 0 46615 NULL
156334 +enable_so_snd_usb_parse_datainterval_fndecl_46616 snd_usb_parse_datainterval fndecl 0 46616 NULL
156335 +enable_so_num_ppns_qp_guest_endpoint_46623 num_ppns qp_guest_endpoint 0 46623 NULL
156336 +enable_so_cl_maxproc_rpc_clnt_46627 cl_maxproc rpc_clnt 0 46627 NULL
156337 +enable_so_alloc_size_nf_ct_ext_type_46634 alloc_size nf_ct_ext_type 0 46634 NULL
156338 +enable_so_btrfs_get_token_16_fndecl_46639 btrfs_get_token_16 fndecl 0 46639 NULL
156339 +enable_so_qib_reg_phys_mr_fndecl_46649 qib_reg_phys_mr fndecl 3 46649 NULL
156340 +enable_so_mwifiex_set_wps_ie_fndecl_46650 mwifiex_set_wps_ie fndecl 3 46650 NULL
156341 +enable_so_transfer_buffer_length_usbip_header_cmd_submit_46658 transfer_buffer_length usbip_header_cmd_submit 0 46658 NULL
156342 +enable_so_btrfs_get_extent_fiemap_fndecl_46659 btrfs_get_extent_fiemap fndecl 4-3-5 46659 NULL
156343 +enable_so_bmap_fndecl_46663 bmap fndecl 0 46663 NULL
156344 +enable_so_physical_block_size_queue_limits_46666 physical_block_size queue_limits 0 46666 NULL
156345 +enable_so_mpx_notify_unmap_fndecl_46669 mpx_notify_unmap fndecl 3-4 46669 NULL
156346 +enable_so_got_bytes_cifs_readdata_46678 got_bytes cifs_readdata 0 46678 NULL
156347 +enable_so_c2_mq_rep_init_fndecl_46679 c2_mq_rep_init fndecl 4 46679 NULL
156348 +enable_so_selfballoon_uphysteresis_vardecl_xen_selfballoon_c_46686 selfballoon_uphysteresis vardecl_xen-selfballoon.c 0 46686 NULL
156349 +enable_so_display_crc_ctl_write_fndecl_46690 display_crc_ctl_write fndecl 3 46690 NULL
156350 +enable_so_printer_write_fndecl_46695 printer_write fndecl 3 46695 NULL
156351 +enable_so___pskb_pull_tail_fndecl_46700 __pskb_pull_tail fndecl 2 46700 NULL
156352 +enable_so_cmsg_len_cmsghdr_46711 cmsg_len cmsghdr 0 46711 NULL
156353 +enable_so_irq_alloc_domain_generic_chips_fndecl_46715 irq_alloc_domain_generic_chips fndecl 3-2 46715 NULL
156354 +enable_so_peer_max_bio_size_drbd_device_46722 peer_max_bio_size drbd_device 0 46722 NULL
156355 +enable_so_ext3_dir_llseek_fndecl_46745 ext3_dir_llseek fndecl 2 46745 NULL nohasharray
156356 +enable_so_wm8994_set_fll_fndecl_46745 wm8994_set_fll fndecl 4-5 46745 &enable_so_ext3_dir_llseek_fndecl_46745
156357 +enable_so_cvmx_bootmem_phy_named_block_find_fndecl_46752 cvmx_bootmem_phy_named_block_find fndecl 0 46752 NULL
156358 +enable_so_count_nfs_readdirargs_46759 count nfs_readdirargs 0 46759 NULL
156359 +enable_so___kfifo_from_user_r_fndecl_46762 __kfifo_from_user_r fndecl 3-5 46762 NULL
156360 +enable_so_wptr_amdgpu_ring_46763 wptr amdgpu_ring 0 46763 NULL
156361 +enable_so_height_tcm_46766 height tcm 0 46766 NULL
156362 +enable_so_maxclk_vardecl_uvesafb_c_46773 maxclk vardecl_uvesafb.c 0 46773 NULL nohasharray
156363 +enable_so_target_begin_dm_region_hash_46773 target_begin dm_region_hash 0 46773 &enable_so_maxclk_vardecl_uvesafb_c_46773 nohasharray
156364 +enable_so_s_bshift_ufs_sb_private_info_46773 s_bshift ufs_sb_private_info 0 46773 &enable_so_target_begin_dm_region_hash_46773
156365 +enable_so_mc_groups_longs_vardecl_genetlink_c_46774 mc_groups_longs vardecl_genetlink.c 0 46774 NULL
156366 +enable_so_s_csaddr_ufs_sb_private_info_46789 s_csaddr ufs_sb_private_info 0 46789 NULL
156367 +enable_so_bytes_remaining_parser_context_46791 bytes_remaining parser_context 0 46791 NULL
156368 +enable_so_brcmf_usb_rx_ctlpkt_fndecl_46799 brcmf_usb_rx_ctlpkt fndecl 3 46799 NULL nohasharray
156369 +enable_so_drbd_alloc_peer_req_fndecl_46799 drbd_alloc_peer_req fndecl 4-3 46799 &enable_so_brcmf_usb_rx_ctlpkt_fndecl_46799
156370 +enable_so_ceph_msg_data_bio_advance_fndecl_46804 ceph_msg_data_bio_advance fndecl 2 46804 NULL
156371 +enable_so_mlx4_en_change_mtu_fndecl_46805 mlx4_en_change_mtu fndecl 2 46805 NULL
156372 +enable_so_mesh_rx_csa_frame_fndecl_46810 mesh_rx_csa_frame fndecl 3 46810 NULL
156373 +enable_so_dccp_setsockopt_fndecl_46812 dccp_setsockopt fndecl 5 46812 NULL
156374 +enable_so_buffer_size_snd_rawmidi_params_46813 buffer_size snd_rawmidi_params 0 46813 NULL
156375 +enable_so_nfulnl_set_mode_fndecl_46818 nfulnl_set_mode fndecl 3 46818 NULL
156376 +enable_so_frame_size_ipw2100_status_46819 frame_size ipw2100_status 0 46819 NULL
156377 +enable_so_residue_c67x00_td_46828 residue c67x00_td 0 46828 NULL nohasharray
156378 +enable_so_paging32_walk_addr_generic_fndecl_46828 paging32_walk_addr_generic fndecl 4-5 46828 &enable_so_residue_c67x00_td_46828
156379 +enable_so_num_prior_parent_snaps_ceph_snap_realm_46841 num_prior_parent_snaps ceph_snap_realm 0 46841 NULL
156380 +enable_so_n_channels_wmi_scan_chan_list_arg_46842 n_channels wmi_scan_chan_list_arg 0 46842 NULL
156381 +enable_so_tveeprom_read_fndecl_46846 tveeprom_read fndecl 3 46846 NULL
156382 +enable_so___bread_gfp_fndecl_46858 __bread_gfp fndecl 3-2 46858 NULL
156383 +enable_so_xwrite_fndecl_46865 xwrite fndecl 3 46865 NULL
156384 +enable_so_swiotlb_map_page_fndecl_46870 swiotlb_map_page fndecl 4 46870 NULL nohasharray
156385 +enable_so_nb_ace_lite_cci_nb_ports_46870 nb_ace_lite cci_nb_ports 0 46870 &enable_so_swiotlb_map_page_fndecl_46870
156386 +enable_so_lookup_node_fndecl_46882 lookup_node fndecl 2 46882 NULL
156387 +enable_so_len_nfsd3_readlinkres_46888 len nfsd3_readlinkres 0 46888 NULL
156388 +enable_so_boff_videobuf_buffer_46889 boff videobuf_buffer 0 46889 NULL
156389 +enable_so_ksi_nthreads_max_ksock_sched_info_46891 ksi_nthreads_max ksock_sched_info 0 46891 NULL
156390 +enable_so_ql_process_mac_rx_gro_page_fndecl_46902 ql_process_mac_rx_gro_page fndecl 5-4 46902 NULL
156391 +enable_so_ipoib_recvq_size_vardecl_46904 ipoib_recvq_size vardecl 0 46904 NULL
156392 +enable_so_num_sacks_tcp_options_received_46914 num_sacks tcp_options_received 0 46914 NULL
156393 +enable_so_osd_req_read_kern_fndecl_46917 osd_req_read_kern fndecl 5 46917 NULL
156394 +enable_so_ext3_create_journal_fndecl_46919 ext3_create_journal fndecl 3 46919 NULL
156395 +enable_so_tot_len_ipv6_txoptions_46931 tot_len ipv6_txoptions 0 46931 NULL
156396 +enable_so___arch_hweight16_fndecl_46932 __arch_hweight16 fndecl 0 46932 NULL
156397 +enable_so_c_iusedoff_ufs_cg_private_info_46933 c_iusedoff ufs_cg_private_info 0 46933 NULL
156398 +enable_so_bg_inode_bitmap_hi_ext4_group_desc_46942 bg_inode_bitmap_hi ext4_group_desc 0 46942 NULL
156399 +enable_so_periodic_size_fusbh200_hcd_46943 periodic_size fusbh200_hcd 0 46943 NULL
156400 +enable_so_devblksize_squashfs_sb_info_46950 devblksize squashfs_sb_info 0 46950 NULL
156401 +enable_so_osd_req_list_dev_partitions_fndecl_46952 osd_req_list_dev_partitions fndecl 4 46952 NULL
156402 +enable_so_ebitmap_set_bit_fndecl_46955 ebitmap_set_bit fndecl 2 46955 NULL
156403 +enable_so_xlog_bread_offset_fndecl_46957 xlog_bread_offset fndecl 2-3 46957 NULL nohasharray
156404 +enable_so_steer_qpn_count_mlx4_ib_dev_46957 steer_qpn_count mlx4_ib_dev 0 46957 &enable_so_xlog_bread_offset_fndecl_46957
156405 +enable_so_s_desc_per_block_ext2_sb_info_46964 s_desc_per_block ext2_sb_info 0 46964 NULL
156406 +enable_so_ieee80211_if_fmt_dot11MeshAwakeWindowDuration_fndecl_46965 ieee80211_if_fmt_dot11MeshAwakeWindowDuration fndecl 3 46965 NULL
156407 +enable_so_register_device_fndecl_46972 register_device fndecl 3 46972 NULL
156408 +enable_so_numbers_count_tomoyo_condition_46984 numbers_count tomoyo_condition 0 46984 NULL
156409 +enable_so_size_dwc3_trb_46986 size dwc3_trb 0 46986 NULL
156410 +enable_so_gru_alloc_gts_fndecl_46987 gru_alloc_gts fndecl 4-6-2-3 46987 NULL
156411 +enable_so_tx_queue_size_pxa168_eth_platform_data_46988 tx_queue_size pxa168_eth_platform_data 0 46988 NULL
156412 +enable_so_lrg_buffer_len_ql3_adapter_46994 lrg_buffer_len ql3_adapter 0 46994 NULL nohasharray
156413 +enable_so_sys_sched_getaffinity_fndecl_46994 sys_sched_getaffinity fndecl 2 46994 &enable_so_lrg_buffer_len_ql3_adapter_46994
156414 +enable_so_do_ip6t_set_ctl_fndecl_47003 do_ip6t_set_ctl fndecl 4 47003 NULL
156415 +enable_so_bytesused_uvc_buffer_47017 bytesused uvc_buffer 0 47017 NULL
156416 +enable_so___insert_orphan_inode_fndecl_47022 __insert_orphan_inode fndecl 3 47022 NULL
156417 +enable_so_length_acpi_buffer_47024 length acpi_buffer 0 47024 NULL
156418 +enable_so_ath6kl_listen_int_write_fndecl_47025 ath6kl_listen_int_write fndecl 3 47025 NULL
156419 +enable_so_length_ixgb_rx_desc_47027 length ixgb_rx_desc 0 47027 NULL
156420 +enable_so_usb_os_desc_prepare_interf_dir_fndecl_47032 usb_os_desc_prepare_interf_dir fndecl 2 47032 NULL
156421 +enable_so_desc_size_shdma_dev_47035 desc_size shdma_dev 0 47035 NULL
156422 +enable_so_rtl2832_regmap_read_fndecl_47037 rtl2832_regmap_read fndecl 3-5 47037 NULL
156423 +enable_so_decode_bitmap_c_fndecl_47038 decode_bitmap_c fndecl 4 47038 NULL
156424 +enable_so_schedule_copy_fndecl_47040 schedule_copy fndecl 4-5-8 47040 NULL
156425 +enable_so_icds_per_ctrl_hba_parameters_47047 icds_per_ctrl hba_parameters 0 47047 NULL
156426 +enable_so_ip_set_max_ip_set_net_47054 ip_set_max ip_set_net 0 47054 NULL
156427 +enable_so_nfs_idmap_request_key_fndecl_47055 nfs_idmap_request_key fndecl 2 47055 NULL
156428 +enable_so_width_tm6000_core_47057 width tm6000_core 0 47057 NULL nohasharray
156429 +enable_so_vbi_width_em28xx_v4l2_47057 vbi_width em28xx_v4l2 0 47057 &enable_so_width_tm6000_core_47057
156430 +enable_so_ieee80211_if_fmt_fwded_frames_fndecl_47060 ieee80211_if_fmt_fwded_frames fndecl 3 47060 NULL
156431 +enable_so_sect_ide_drive_s_47062 sect ide_drive_s 0 47062 NULL
156432 +enable_so_len_Vmxnet3_RxCompDesc_47066 len Vmxnet3_RxCompDesc 0 47066 NULL
156433 +enable_so_ext3_xattr_security_set_fndecl_47071 ext3_xattr_security_set fndecl 4 47071 NULL
156434 +enable_so_buf_size_usbatm_channel_47081 buf_size usbatm_channel 0 47081 NULL
156435 +enable_so_epnum_isp116x_ep_47082 epnum isp116x_ep 0 47082 NULL
156436 +enable_so_q_pwr_lcnphy_iq_est_47083 q_pwr lcnphy_iq_est 0 47083 NULL
156437 +enable_so_yres_fb_videomode_47087 yres fb_videomode 0 47087 NULL nohasharray
156438 +enable_so_ld_usb_read_fndecl_47087 ld_usb_read fndecl 3 47087 &enable_so_yres_fb_videomode_47087
156439 +enable_so_ext2_get_inode_fndecl_47089 ext2_get_inode fndecl 2 47089 NULL
156440 +enable_so_pcpu_need_to_extend_fndecl_47094 pcpu_need_to_extend fndecl 0 47094 NULL
156441 +enable_so_begin_dm_target_47098 begin dm_target 0 47098 NULL
156442 +enable_so_len_wmi_rx_action_event_47102 len wmi_rx_action_event 0 47102 NULL
156443 +enable_so_agp_size_drm_mga_dma_bootstrap_47108 agp_size drm_mga_dma_bootstrap 0 47108 NULL
156444 +enable_so_f_height_camif_frame_47111 f_height camif_frame 0 47111 NULL
156445 +enable_so_num_mthca_resource_47114 num mthca_resource 0 47114 NULL nohasharray
156446 +enable_so_num_outstanding_cmds_req_que_47114 num_outstanding_cmds req_que 0 47114 &enable_so_num_mthca_resource_47114
156447 +enable_so_iwl_dbgfs_rx_handlers_write_fndecl_47116 iwl_dbgfs_rx_handlers_write fndecl 3 47116 NULL
156448 +enable_so_nportcntrs_qib_chip_specific_47118 nportcntrs qib_chip_specific 0 47118 NULL
156449 +enable_so_usnic_uiom_reg_get_fndecl_47120 usnic_uiom_reg_get fndecl 2 47120 NULL
156450 +enable_so_j_len_reiserfs_journal_47121 j_len reiserfs_journal 0 47121 NULL
156451 +enable_so_filemap_fdatawrite_range_fndecl_47125 filemap_fdatawrite_range fndecl 2 47125 NULL
156452 +enable_so_target_xcopy_write_destination_fndecl_47134 target_xcopy_write_destination fndecl 5 47134 NULL
156453 +enable_so_data_len_nvme_passthru_cmd_47145 data_len nvme_passthru_cmd 0 47145 NULL
156454 +enable_so_uwb_bce_print_IEs_fndecl_47149 uwb_bce_print_IEs fndecl 4 47149 NULL
156455 +enable_so_mcs7830_set_reg_async_fndecl_47150 mcs7830_set_reg_async fndecl 3 47150 NULL
156456 +enable_so_ttm_dma_tt_init_fndecl_47159 ttm_dma_tt_init fndecl 3 47159 NULL nohasharray
156457 +enable_so_req_xfer_ide_atapi_pc_47159 req_xfer ide_atapi_pc 0 47159 &enable_so_ttm_dma_tt_init_fndecl_47159
156458 +enable_so___gfn_to_pfn_fndecl_47164 __gfn_to_pfn fndecl 2 47164 NULL
156459 +enable_so_e1000e_hwtstamp_get_fndecl_47169 e1000e_hwtstamp_get fndecl 0 47169 NULL
156460 +enable_so_max_blk_size_mmc_host_47174 max_blk_size mmc_host 0 47174 NULL
156461 +enable_so_value_drm_radeon_setparam_47185 value drm_radeon_setparam 0 47185 NULL
156462 +enable_so_max_sq_sg_mlx4_caps_47193 max_sq_sg mlx4_caps 0 47193 NULL
156463 +enable_so_block_count_msb_data_47194 block_count msb_data 0 47194 NULL
156464 +enable_so_visor_charqueue_create_fndecl_47196 visor_charqueue_create fndecl 1 47196 NULL
156465 +enable_so_vmalloc_node_fndecl_47199 vmalloc_node fndecl 1 47199 NULL
156466 +enable_so_ieee80211_if_write_tkip_mic_test_fndecl_47215 ieee80211_if_write_tkip_mic_test fndecl 3 47215 NULL
156467 +enable_so_authsize_crypto_aead_47219 authsize crypto_aead 0 47219 NULL
156468 +enable_so_mwifiex_form_mgmt_frame_fndecl_47220 mwifiex_form_mgmt_frame fndecl 3 47220 NULL
156469 +enable_so_csum_exist_in_range_fndecl_47225 csum_exist_in_range fndecl 2-3 47225 NULL
156470 +enable_so_at25_mem_write_fndecl_47235 at25_mem_write fndecl 4-3 47235 NULL
156471 +enable_so_decrease_reservation_fndecl_47244 decrease_reservation fndecl 1 47244 NULL
156472 +enable_so_fuse_reverse_inval_inode_fndecl_47245 fuse_reverse_inval_inode fndecl 4-3 47245 NULL
156473 +enable_so___do_config_autodelink_fndecl_47256 __do_config_autodelink fndecl 3 47256 NULL nohasharray
156474 +enable_so_seek_holedata_loop_fndecl_47256 seek_holedata_loop fndecl 2 47256 &enable_so___do_config_autodelink_fndecl_47256
156475 +enable_so_id_len_nfs41_exchange_id_args_47258 id_len nfs41_exchange_id_args 0 47258 NULL nohasharray
156476 +enable_so_agp_allocate_memory_fndecl_47258 agp_allocate_memory fndecl 2 47258 &enable_so_id_len_nfs41_exchange_id_args_47258
156477 +enable_so_num_srqs_mthca_limits_47260 num_srqs mthca_limits 0 47260 NULL
156478 +enable_so_ring_size_dw_mci_47261 ring_size dw_mci 0 47261 NULL
156479 +enable_so_num_ifaces_batadv_priv_47263 num_ifaces batadv_priv 0 47263 NULL
156480 +enable_so_regmap_calc_reg_len_fndecl_47288 regmap_calc_reg_len fndecl 0 47288 NULL
156481 +enable_so_ipx_sendmsg_fndecl_47289 ipx_sendmsg fndecl 3 47289 NULL
156482 +enable_so_dev_number_mdp_superblock_1_47292 dev_number mdp_superblock_1 0 47292 NULL
156483 +enable_so_pppol2tp_recvmsg_fndecl_47301 pppol2tp_recvmsg fndecl 3 47301 NULL
156484 +enable_so_use_preallocated_list_if_available_fndecl_47305 use_preallocated_list_if_available fndecl 0-3 47305 NULL
156485 +enable_so_command_write_fndecl_47306 command_write fndecl 3 47306 NULL
156486 +enable_so_bigdirsize_adfs_bigdirheader_47315 bigdirsize adfs_bigdirheader 0 47315 NULL
156487 +enable_so_special_e1000_rx_desc_47320 special e1000_rx_desc 0 47320 NULL
156488 +enable_so_nr_pages_swap_extent_47325 nr_pages swap_extent 0 47325 NULL
156489 +enable_so_i2c_atmel_send_fndecl_47333 i2c_atmel_send fndecl 3 47333 NULL
156490 +enable_so_words_nf_conn_labels_47334 words nf_conn_labels 0 47334 NULL
156491 +enable_so_hpfs_add_sector_to_btree_fndecl_47344 hpfs_add_sector_to_btree fndecl 4-2 47344 NULL
156492 +enable_so_brcmf_chip_core_read32_fndecl_47346 brcmf_chip_core_read32 fndecl 0 47346 NULL
156493 +enable_so_nd_label_active_count_fndecl_47348 nd_label_active_count fndecl 0 47348 NULL
156494 +enable_so_myri10ge_change_mtu_fndecl_47351 myri10ge_change_mtu fndecl 2 47351 NULL
156495 +enable_so_dmi_memdev_nr_vardecl_dmi_scan_c_47352 dmi_memdev_nr vardecl_dmi_scan.c 0 47352 NULL
156496 +enable_so_dump_midi_fndecl_47356 dump_midi fndecl 3 47356 NULL
156497 +enable_so_erasesize_mtd_info_47358 erasesize mtd_info 0 47358 NULL
156498 +enable_so_ath6kl_wmi_send_action_cmd_fndecl_47359 ath6kl_wmi_send_action_cmd fndecl 7 47359 NULL
156499 +enable_so_ie_len_ieee80211_if_mesh_47360 ie_len ieee80211_if_mesh 0 47360 NULL
156500 +enable_so_SYSC_sched_getattr_fndecl_47361 SYSC_sched_getattr fndecl 3 47361 NULL
156501 +enable_so_nr_sects_hd_struct_47364 nr_sects hd_struct 0 47364 NULL
156502 +enable_so_rx_position_r3964_info_47365 rx_position r3964_info 0 47365 NULL
156503 +enable_so_max_fibre_devices_qla_hw_data_47375 max_fibre_devices qla_hw_data 0 47375 NULL
156504 +enable_so_nilfs_bmap_convert_error_fndecl_47376 nilfs_bmap_convert_error fndecl 3 47376 NULL
156505 +enable_so_vmw_ttm_tt_create_fndecl_47378 vmw_ttm_tt_create fndecl 2 47378 NULL
156506 +enable_so_data_in_pipe_uas_dev_info_47380 data_in_pipe uas_dev_info 0 47380 NULL
156507 +enable_so_ldt_selector_tss_segment_32_47382 ldt_selector tss_segment_32 0 47382 NULL
156508 +enable_so_max_tx_length_macb_47385 max_tx_length macb 0 47385 NULL nohasharray
156509 +enable_so_do_huge_pmd_anonymous_page_fndecl_47385 do_huge_pmd_anonymous_page fndecl 3 47385 &enable_so_max_tx_length_macb_47385
156510 +enable_so_access_vm_operations_struct_47395 access vm_operations_struct 0 47395 NULL
156511 +enable_so_sr_bg_stable_blkno_ocfs2_suballoc_result_47398 sr_bg_stable_blkno ocfs2_suballoc_result 0 47398 NULL
156512 +enable_so_efd_start_cluster_ext4_free_data_47399 efd_start_cluster ext4_free_data 0 47399 NULL
156513 +enable_so_ino_cifs_dirent_47402 ino cifs_dirent 0 47402 NULL
156514 +enable_so_datalen_key_preparsed_payload_47406 datalen key_preparsed_payload 0 47406 NULL
156515 +enable_so_xfs_ifree_cluster_fndecl_47408 xfs_ifree_cluster fndecl 3 47408 NULL
156516 +enable_so_idetape_pad_zeros_fndecl_47413 idetape_pad_zeros fndecl 2 47413 NULL
156517 +enable_so_cdc_ncm_update_rxtx_max_fndecl_47421 cdc_ncm_update_rxtx_max fndecl 3-2 47421 NULL
156518 +enable_so_usnic_vnic_get_resources_fndecl_47437 usnic_vnic_get_resources fndecl 3 47437 NULL
156519 +enable_so_depth_bttv_format_47442 depth bttv_format 0 47442 NULL
156520 +enable_so_MaxChainDepth_mpt2sas_facts_47453 MaxChainDepth mpt2sas_facts 0 47453 NULL
156521 +enable_so_swd_i387_soft_struct_47454 swd i387_soft_struct 0 47454 NULL
156522 +enable_so_len_wmfw_region_47463 len wmfw_region 0 47463 NULL
156523 +enable_so_batadv_bla_is_backbone_gw_fndecl_47467 batadv_bla_is_backbone_gw fndecl 3 47467 NULL
156524 +enable_so_memblock_alloc_try_nid_fndecl_47470 memblock_alloc_try_nid fndecl 2-1 47470 NULL
156525 +enable_so_compat_do_ipt_set_ctl_fndecl_47473 compat_do_ipt_set_ctl fndecl 4 47473 NULL
156526 +enable_so_btrfs_return_ino_fndecl_47477 btrfs_return_ino fndecl 2 47477 NULL nohasharray
156527 +enable_so_maxDataSize__mpt_ioctl_header_47477 maxDataSize _mpt_ioctl_header 0 47477 &enable_so_btrfs_return_ino_fndecl_47477
156528 +enable_so_cia_max_keysize_cipher_alg_47480 cia_max_keysize cipher_alg 0 47480 NULL nohasharray
156529 +enable_so_fifo_len_tx_fifo_config_47480 fifo_len tx_fifo_config 0 47480 &enable_so_cia_max_keysize_cipher_alg_47480
156530 +enable_so_report_length_f_hidg_47488 report_length f_hidg 0 47488 NULL
156531 +enable_so_mac_offset_skb_gso_cb_47491 mac_offset skb_gso_cb 0 47491 NULL
156532 +enable_so_page_size_cas_47493 page_size cas 0 47493 NULL
156533 +enable_so_first_block_efs_sb_info_47499 first_block efs_sb_info 0 47499 NULL
156534 +enable_so_cifs_write_from_iter_fndecl_47501 cifs_write_from_iter fndecl 1 47501 NULL
156535 +enable_so_gr_ep_init_fndecl_47502 gr_ep_init fndecl 4 47502 NULL
156536 +enable_so_ipath_kpiobufs_vardecl_ipath_init_chip_c_47504 ipath_kpiobufs vardecl_ipath_init_chip.c 0 47504 NULL
156537 +enable_so_btrfs_cont_expand_fndecl_47505 btrfs_cont_expand fndecl 3-2 47505 NULL
156538 +enable_so_romfs_blk_strcmp_fndecl_47510 romfs_blk_strcmp fndecl 4-2 47510 NULL
156539 +enable_so_tcf_hash_create_fndecl_47512 tcf_hash_create fndecl 4 47512 NULL
156540 +enable_so_gfs2_dir_get_new_buffer_fndecl_47518 gfs2_dir_get_new_buffer fndecl 2 47518 NULL nohasharray
156541 +enable_so_num_connector_drm_mode_config_47518 num_connector drm_mode_config 0 47518 &enable_so_gfs2_dir_get_new_buffer_fndecl_47518
156542 +enable_so_rndis_add_response_fndecl_47523 rndis_add_response fndecl 2 47523 NULL
156543 +enable_so_gen_pool_alloc_fndecl_47533 gen_pool_alloc fndecl 0 47533 NULL
156544 +enable_so_pq_sources_dmatest_params_47534 pq_sources dmatest_params 0 47534 NULL
156545 +enable_so_llcp_sock_sendmsg_fndecl_47535 llcp_sock_sendmsg fndecl 3 47535 NULL
156546 +enable_so_skb_headers_offset_update_fndecl_47543 skb_headers_offset_update fndecl 2 47543 NULL
156547 +enable_so_relocs_num_drm_qxl_command_47550 relocs_num drm_qxl_command 0 47550 NULL
156548 +enable_so_scnprint_mac_oui_fndecl_47553 scnprint_mac_oui fndecl 0-3 47553 NULL
156549 +enable_so_cur_wm_latency_write_fndecl_47558 cur_wm_latency_write fndecl 3 47558 NULL
156550 +enable_so_rx_hash_log_tbl_sz_mlx5e_params_47561 rx_hash_log_tbl_sz mlx5e_params 0 47561 NULL
156551 +enable_so_max_xmit_dlength_iscsi_bus_flash_conn_47565 max_xmit_dlength iscsi_bus_flash_conn 0 47565 NULL
156552 +enable_so_ubh_bread_uspi_fndecl_47568 ubh_bread_uspi fndecl 3 47568 NULL
156553 +enable_so_btrfs_get_dentry_fndecl_47584 btrfs_get_dentry fndecl 3-2 47584 NULL
156554 +enable_so_i_start_msdos_inode_info_47589 i_start msdos_inode_info 0 47589 NULL
156555 +enable_so_xfs_iomap_write_delay_fndecl_47595 xfs_iomap_write_delay fndecl 2-3 47595 NULL
156556 +enable_so_host_xss_vardecl_vmx_c_47599 host_xss vardecl_vmx.c 0 47599 NULL
156557 +enable_so_base_reg_regcache_rbtree_node_47612 base_reg regcache_rbtree_node 0 47612 NULL nohasharray
156558 +enable_so_ebt_buf_count_fndecl_47612 ebt_buf_count fndecl 2 47612 &enable_so_base_reg_regcache_rbtree_node_47612
156559 +enable_so_control_1_vxge_hw_ring_rxd_1_47616 control_1 vxge_hw_ring_rxd_1 0 47616 NULL
156560 +enable_so_pvr2_hdw_report_clients_fndecl_47619 pvr2_hdw_report_clients fndecl 3 47619 NULL
156561 +enable_so_mincore_pte_range_fndecl_47625 mincore_pte_range fndecl 2 47625 NULL
156562 +enable_so_intel_sdvo_get_pixel_multiplier_fndecl_47635 intel_sdvo_get_pixel_multiplier fndecl 0 47635 NULL
156563 +enable_so_nentries_ebt_table_info_47639 nentries ebt_table_info 0 47639 NULL
156564 +enable_so_buffer_alignment_fore200e_bus_47640 buffer_alignment fore200e_bus 0 47640 NULL
156565 +enable_so_num_phys_hw_profile_47641 num_phys hw_profile 0 47641 NULL
156566 +enable_so_print_devstats_dot11RTSSuccessCount_fndecl_47642 print_devstats_dot11RTSSuccessCount fndecl 3 47642 NULL nohasharray
156567 +enable_so_nilfs_cpfile_get_offset_fndecl_47642 nilfs_cpfile_get_offset fndecl 2 47642 &enable_so_print_devstats_dot11RTSSuccessCount_fndecl_47642 nohasharray
156568 +enable_so_framebuffer_alloc_fndecl_47642 framebuffer_alloc fndecl 1 47642 &enable_so_nilfs_cpfile_get_offset_fndecl_47642
156569 +enable_so_pch_gbe_change_mtu_fndecl_47643 pch_gbe_change_mtu fndecl 2 47643 NULL
156570 +enable_so_ocfs2_move_extent_fndecl_47648 ocfs2_move_extent fndecl 5-3-2 47648 NULL
156571 +enable_so_rate_max_snd_soc_pcm_stream_47650 rate_max snd_soc_pcm_stream 0 47650 NULL
156572 +enable_so_height_console_font_47655 height console_font 0 47655 NULL
156573 +enable_so_length_fw_cdev_add_descriptor_47656 length fw_cdev_add_descriptor 0 47656 NULL
156574 +enable_so_atomic_write_len_kernfs_open_file_47658 atomic_write_len kernfs_open_file 0 47658 NULL
156575 +enable_so_wPropertyNameLength_usb_ext_prop_desc_47663 wPropertyNameLength usb_ext_prop_desc 0 47663 NULL
156576 +enable_so_dlm_rcom_names_fndecl_47668 dlm_rcom_names fndecl 4 47668 NULL nohasharray
156577 +enable_so_frame_seq_num_os_aux_s_47668 frame_seq_num os_aux_s 0 47668 &enable_so_dlm_rcom_names_fndecl_47668
156578 +enable_so_chans_zatm_dev_47669 chans zatm_dev 0 47669 NULL
156579 +enable_so_setup_window_fndecl_47673 setup_window fndecl 3-2-5-4-7 47673 NULL
156580 +enable_so_maxframesize_snd_usb_endpoint_47687 maxframesize snd_usb_endpoint 0 47687 NULL
156581 +enable_so_cno_nilfs_super_data_47691 cno nilfs_super_data 0 47691 NULL
156582 +enable_so_paging64_gpte_to_gfn_lvl_fndecl_47694 paging64_gpte_to_gfn_lvl fndecl 0-2-1 47694 NULL
156583 +enable_so_hsync_pulse_width_lvds_dvo_timing_47698 hsync_pulse_width lvds_dvo_timing 0 47698 NULL
156584 +enable_so_ino_fuse_attr_47705 ino fuse_attr 0 47705 NULL nohasharray
156585 +enable_so_base_addr_ivtv_47705 base_addr ivtv 0 47705 &enable_so_ino_fuse_attr_47705 nohasharray
156586 +enable_so_report_size_roccat_device_47705 report_size roccat_device 0 47705 &enable_so_base_addr_ivtv_47705
156587 +enable_so_ppp_sync_receive_fndecl_47706 ppp_sync_receive fndecl 4 47706 NULL
156588 +enable_so_nilfs_iget_for_gc_fndecl_47708 nilfs_iget_for_gc fndecl 2 47708 NULL
156589 +enable_so_i2c_hid_raw_request_fndecl_47709 i2c_hid_raw_request fndecl 4 47709 NULL nohasharray
156590 +enable_so_fast_rx_path_fndecl_47709 fast_rx_path fndecl 3 47709 &enable_so_i2c_hid_raw_request_fndecl_47709 nohasharray
156591 +enable_so_small_bytes_myri10ge_priv_47709 small_bytes myri10ge_priv 0 47709 &enable_so_fast_rx_path_fndecl_47709
156592 +enable_so_padding_rpcrdma_create_data_internal_47717 padding rpcrdma_create_data_internal 0 47717 NULL
156593 +enable_so_max_size_ttm_pool_opts_47726 max_size ttm_pool_opts 0 47726 NULL
156594 +enable_so_cyapa_i2c_pip_write_fndecl_47727 cyapa_i2c_pip_write fndecl 3 47727 NULL
156595 +enable_so_bdev_stack_limits_fndecl_47732 bdev_stack_limits fndecl 3 47732 NULL
156596 +enable_so_copy_nocow_pages_for_inode_fndecl_47736 copy_nocow_pages_for_inode fndecl 2-3-1 47736 NULL nohasharray
156597 +enable_so_num_devices_vardecl_zram_drv_c_47736 num_devices vardecl_zram_drv.c 0 47736 &enable_so_copy_nocow_pages_for_inode_fndecl_47736
156598 +enable_so_minbcnt_aoetgt_47744 minbcnt aoetgt 0 47744 NULL
156599 +enable_so_buffer_size_snd_emu10k1_fx8010_pcm_47753 buffer_size snd_emu10k1_fx8010_pcm 0 47753 NULL nohasharray
156600 +enable_so_width_ssd1307fb_par_47753 width ssd1307fb_par 0 47753 &enable_so_buffer_size_snd_emu10k1_fx8010_pcm_47753
156601 +enable_so_fixed_out_len_gether_47754 fixed_out_len gether 0 47754 NULL
156602 +enable_so_write_chunk_fndecl_47763 write_chunk fndecl 4 47763 NULL
156603 +enable_so_ticket_length_rxrpc_key_data_v1_47764 ticket_length rxrpc_key_data_v1 0 47764 NULL
156604 +enable_so_rx_count_ll_struct_47772 rx_count ll_struct 0 47772 NULL
156605 +enable_so_dma1_shift_es1938_47776 dma1_shift es1938 0 47776 NULL
156606 +enable_so_fd_copyout_fndecl_47784 fd_copyout fndecl 3 47784 NULL
156607 +enable_so_bg_blkno_ocfs2_group_desc_47785 bg_blkno ocfs2_group_desc 0 47785 NULL
156608 +enable_so_p2_fast_gma_p2_t_47787 p2_fast gma_p2_t 0 47787 NULL
156609 +enable_so_max_cmds_mlx4_cmd_47790 max_cmds mlx4_cmd 0 47790 NULL
156610 +enable_so_num_vmdq_qps_i40e_pf_47795 num_vmdq_qps i40e_pf 0 47795 NULL
156611 +enable_so_mxt_bootloader_read_fndecl_47796 mxt_bootloader_read fndecl 3 47796 NULL
156612 +enable_so_get_key_haup_common_fndecl_47797 get_key_haup_common fndecl 5 47797 NULL nohasharray
156613 +enable_so___push_leaf_right_fndecl_47797 __push_leaf_right fndecl 8 47797 &enable_so_get_key_haup_common_fndecl_47797
156614 +enable_so_i_eblock_bfs_inode_47799 i_eblock bfs_inode 0 47799 NULL
156615 +enable_so_h_suballoc_bit_ocfs2_extent_block_47802 h_suballoc_bit ocfs2_extent_block 0 47802 NULL
156616 +enable_so_odd_byte_adjustment_sym_ccb_47803 odd_byte_adjustment sym_ccb 0 47803 NULL nohasharray
156617 +enable_so_btrfs_insert_dir_item_fndecl_47803 btrfs_insert_dir_item fndecl 8 47803 &enable_so_odd_byte_adjustment_sym_ccb_47803
156618 +enable_so_xfs_attrmulti_attr_set_fndecl_47809 xfs_attrmulti_attr_set fndecl 4 47809 NULL nohasharray
156619 +enable_so_paging64_get_level1_sp_gpa_fndecl_47809 paging64_get_level1_sp_gpa fndecl 0 47809 &enable_so_xfs_attrmulti_attr_set_fndecl_47809
156620 +enable_so_size_ncp_ioctl_request_47816 size ncp_ioctl_request 0 47816 NULL
156621 +enable_so_fuse_copy_do_fndecl_47822 fuse_copy_do fndecl 0 47822 NULL
156622 +enable_so_rom_length_fw_cdev_get_info_47831 rom_length fw_cdev_get_info 0 47831 NULL
156623 +enable_so_tcp_check_reno_reordering_fndecl_47842 tcp_check_reno_reordering fndecl 2 47842 NULL
156624 +enable_so_pvr2_debugifc_print_info_fndecl_47847 pvr2_debugifc_print_info fndecl 3 47847 NULL nohasharray
156625 +enable_so_rl_rgrps_gfs2_rgrp_list_47847 rl_rgrps gfs2_rgrp_list 0 47847 &enable_so_pvr2_debugifc_print_info_fndecl_47847
156626 +enable_so_ch_t_tlevel_jsm_channel_47848 ch_t_tlevel jsm_channel 0 47848 NULL
156627 +enable_so_journal_init_dev_fndecl_47851 journal_init_dev fndecl 5-3 47851 NULL
156628 +enable_so_SyS_getrandom_fndecl_47861 SyS_getrandom fndecl 2 47861 NULL
156629 +enable_so_s_mmp_block_ext4_super_block_47865 s_mmp_block ext4_super_block 0 47865 NULL
156630 +enable_so_nilfs_cpfile_find_checkpoint_block_fndecl_47868 nilfs_cpfile_find_checkpoint_block fndecl 2-3 47868 NULL
156631 +enable_so_smssdio_sendrequest_fndecl_47873 smssdio_sendrequest fndecl 3 47873 NULL
156632 +enable_so_len_nlm_cookie_47875 len nlm_cookie 0 47875 NULL
156633 +enable_so_smt_send_ecf_fndecl_47881 smt_send_ecf fndecl 6 47881 NULL
156634 +enable_so_gs_alloc_req_fndecl_47888 gs_alloc_req fndecl 2 47888 NULL
156635 +enable_so_set_offset_v2_k_offset_fndecl_47902 set_offset_v2_k_offset fndecl 2 47902 NULL
156636 +enable_so_msize_p9_client_47905 msize p9_client 0 47905 NULL
156637 +enable_so_write_pmsg_fndecl_47911 write_pmsg fndecl 3 47911 NULL
156638 +enable_so_compat_fillonedir_fndecl_47921 compat_fillonedir fndecl 3 47921 NULL
156639 +enable_so_print_devstats_dot11FCSErrorCount_fndecl_47924 print_devstats_dot11FCSErrorCount fndecl 3 47924 NULL nohasharray
156640 +enable_so_mxl111sf_stream_config_isoc_fndecl_47924 mxl111sf_stream_config_isoc fndecl 2 47924 &enable_so_print_devstats_dot11FCSErrorCount_fndecl_47924
156641 +enable_so_ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout_fndecl_47942 ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout fndecl 3 47942 NULL nohasharray
156642 +enable_so_fddi_change_mtu_fndecl_47942 fddi_change_mtu fndecl 2 47942 &enable_so_ieee80211_if_fmt_dot11MeshHWMPactivePathToRootTimeout_fndecl_47942
156643 +enable_so_rxd_vlan_rxd_desc_47943 rxd_vlan rxd_desc 0 47943 NULL
156644 +enable_so_max_param_range_47945 max param_range 0 47945 NULL nohasharray
156645 +enable_so_crypto_aead_ivsize_fndecl_47945 crypto_aead_ivsize fndecl 0 47945 &enable_so_max_param_range_47945
156646 +enable_so_produce_q_size_vmci_qp_47948 produce_q_size vmci_qp 0 47948 NULL
156647 +enable_so_dlm_new_lockspace_fndecl_47954 dlm_new_lockspace fndecl 4 47954 NULL
156648 +enable_so_l2bsize_jfs_log_47956 l2bsize jfs_log 0 47956 NULL
156649 +enable_so_ext4_inode_bitmap_set_fndecl_47957 ext4_inode_bitmap_set fndecl 3 47957 NULL
156650 +enable_so_depth_pitch_drm_r128_private_47959 depth_pitch drm_r128_private 0 47959 NULL
156651 +enable_so_netpoll_send_udp_fndecl_47960 netpoll_send_udp fndecl 3 47960 NULL
156652 +enable_so_handle_rx_packet_fndecl_47970 handle_rx_packet fndecl 3 47970 NULL
156653 +enable_so_encap_hlen_ip_tunnel_encap_ops_47971 encap_hlen ip_tunnel_encap_ops 0 47971 NULL nohasharray
156654 +enable_so_length_xfs_bmalloca_47971 length xfs_bmalloca 0 47971 &enable_so_encap_hlen_ip_tunnel_encap_ops_47971
156655 +enable_so_init_list_set_fndecl_47982 init_list_set fndecl 3 47982 NULL
156656 +enable_so_le_ih_k_offset_fndecl_47992 le_ih_k_offset fndecl 0 47992 NULL
156657 +enable_so_client_s_fmt_fndecl_47993 client_s_fmt fndecl 4-5 47993 NULL
156658 +enable_so_remap_to_cache_dirty_fndecl_47996 remap_to_cache_dirty fndecl 4 47996 NULL
156659 +enable_so_blocks_num_c2port_ops_47999 blocks_num c2port_ops 0 47999 NULL
156660 +enable_so_init_pci_cap_msi_perm_fndecl_48010 init_pci_cap_msi_perm fndecl 2 48010 NULL
156661 +enable_so_size_netlbl_unlhsh_tbl_48011 size netlbl_unlhsh_tbl 0 48011 NULL
156662 +enable_so_sh_addralign_elf64_shdr_48012 sh_addralign elf64_shdr 0 48012 NULL nohasharray
156663 +enable_so_crypto_aead_reqsize_fndecl_48012 crypto_aead_reqsize fndecl 0 48012 &enable_so_sh_addralign_elf64_shdr_48012
156664 +enable_so_size_nfs_fh_48014 size nfs_fh 0 48014 NULL
156665 +enable_so_temp_end_applesmc_registers_48016 temp_end applesmc_registers 0 48016 NULL
156666 +enable_so_lpfc_idiag_baracc_write_fndecl_48021 lpfc_idiag_baracc_write fndecl 3 48021 NULL
156667 +enable_so_hmac_len_sctp_hmac_48030 hmac_len sctp_hmac 0 48030 NULL
156668 +enable_so_init_page_array_fndecl_48038 init_page_array fndecl 2 48038 NULL
156669 +enable_so_rm_namelen_nfsd4_remove_48040 rm_namelen nfsd4_remove 0 48040 NULL
156670 +enable_so_s_reserved_affs_sb_info_48043 s_reserved affs_sb_info 0 48043 NULL
156671 +enable_so_num_pages_ttm_buffer_object_48047 num_pages ttm_buffer_object 0 48047 NULL
156672 +enable_so_num_privcmd_mmapbatch_v2_48051 num privcmd_mmapbatch_v2 0 48051 NULL
156673 +enable_so_rds_buf_vardecl_radio_si470x_i2c_c_48053 rds_buf vardecl_radio-si470x-i2c.c 0 48053 NULL
156674 +enable_so_regmap_bulk_write_fndecl_48058 regmap_bulk_write fndecl 2-4 48058 NULL
156675 +enable_so_nr_channels_at_dma_platform_data_48060 nr_channels at_dma_platform_data 0 48060 NULL
156676 +enable_so_lso_max_fc_lport_48064 lso_max fc_lport 0 48064 NULL
156677 +enable_so_zonesize_alauda_media_info_48068 zonesize alauda_media_info 0 48068 NULL
156678 +enable_so_xfs_zero_eof_fndecl_48076 xfs_zero_eof fndecl 3-2 48076 NULL
156679 +enable_so_mt9t031_skip_fndecl_48078 mt9t031_skip fndecl 0-3-2 48078 NULL
156680 +enable_so_blocksize_sddr55_card_info_48082 blocksize sddr55_card_info 0 48082 NULL
156681 +enable_so_osst_max_dev_vardecl_osst_c_48086 osst_max_dev vardecl_osst.c 0 48086 NULL
156682 +enable_so_ipath_rcvegrcnt_ipath_devdata_48089 ipath_rcvegrcnt ipath_devdata 0 48089 NULL
156683 +enable_so_count_atl1c_rfd_ring_48095 count atl1c_rfd_ring 0 48095 NULL
156684 +enable_so_scsi_io_completion_fndecl_48097 scsi_io_completion fndecl 2 48097 NULL nohasharray
156685 +enable_so_seg_count_agp_region32_48097 seg_count agp_region32 0 48097 &enable_so_scsi_io_completion_fndecl_48097
156686 +enable_so_icq_align_elevator_type_48098 icq_align elevator_type 0 48098 NULL
156687 +enable_so_ep_out_mts_desc_48099 ep_out mts_desc 0 48099 NULL
156688 +enable_so_nfc_llcp_send_i_frame_fndecl_48105 nfc_llcp_send_i_frame fndecl 3 48105 NULL nohasharray
156689 +enable_so___cvmx_bootmem_desc_get_fndecl_48105 __cvmx_bootmem_desc_get fndecl 0 48105 &enable_so_nfc_llcp_send_i_frame_fndecl_48105
156690 +enable_so_m25p80_write_reg_fndecl_48115 m25p80_write_reg fndecl 4 48115 NULL
156691 +enable_so_max_pkt_size_cx231xx_audio_48117 max_pkt_size cx231xx_audio 0 48117 NULL
156692 +enable_so_discard_granularity_queue_limits_48119 discard_granularity queue_limits 0 48119 NULL
156693 +enable_so_gfs2_write_begin_fndecl_48129 gfs2_write_begin fndecl 4-3 48129 NULL
156694 +enable_so_vma_kernel_pagesize_fndecl_48131 vma_kernel_pagesize fndecl 0 48131 NULL
156695 +enable_so_vsync_off_lvds_dvo_timing_48134 vsync_off lvds_dvo_timing 0 48134 NULL
156696 +enable_so_mem_read_fndecl_48140 mem_read fndecl 3 48140 NULL
156697 +enable_so_sisusbcon_putcs_fndecl_48141 sisusbcon_putcs fndecl 3 48141 NULL nohasharray
156698 +enable_so_osdmap_set_max_osd_fndecl_48141 osdmap_set_max_osd fndecl 2 48141 &enable_so_sisusbcon_putcs_fndecl_48141
156699 +enable_so_isdnhdlc_encode_fndecl_48155 isdnhdlc_encode fndecl 6 48155 NULL
156700 +enable_so_usb_endpoint_data_queue_48158 usb_endpoint data_queue 0 48158 NULL
156701 +enable_so_qs_in_channels_hdsp_48166 qs_in_channels hdsp 0 48166 NULL
156702 +enable_so_factor_ewma_48168 factor ewma 0 48168 NULL
156703 +enable_so_r3964_write_fndecl_48173 r3964_write fndecl 4 48173 NULL
156704 +enable_so_hub_control_hc_driver_48178 hub_control hc_driver 0 48178 NULL
156705 +enable_so_mwifiex_parse_cal_cfg_fndecl_48179 mwifiex_parse_cal_cfg fndecl 0 48179 NULL
156706 +enable_so_nvkm_fifo_create__fndecl_48184 nvkm_fifo_create_ fndecl 5 48184 NULL
156707 +enable_so_data_transfer_length_pmcraid_ioarcb_48193 data_transfer_length pmcraid_ioarcb 0 48193 NULL
156708 +enable_so_sy_fb_copyarea_48196 sy fb_copyarea 0 48196 NULL
156709 +enable_so_snd_rawmidi_transmit_ack_fndecl_48200 snd_rawmidi_transmit_ack fndecl 2 48200 NULL
156710 +enable_so_main_blkaddr_f2fs_sm_info_48201 main_blkaddr f2fs_sm_info 0 48201 NULL
156711 +enable_so_rxoffset_dma_info_48202 rxoffset dma_info 0 48202 NULL nohasharray
156712 +enable_so_doorbell_physical_address_kgd2kfd_shared_resources_48202 doorbell_physical_address kgd2kfd_shared_resources 0 48202 &enable_so_rxoffset_dma_info_48202
156713 +enable_so_skcipher_all_sg_nents_fndecl_48207 skcipher_all_sg_nents fndecl 0 48207 NULL
156714 +enable_so_btusb_recv_bulk_intel_fndecl_48211 btusb_recv_bulk_intel fndecl 3 48211 NULL
156715 +enable_so_addr_r10dev_48214 addr r10dev 0 48214 NULL nohasharray
156716 +enable_so___lgwrite_fndecl_48214 __lgwrite fndecl 4 48214 &enable_so_addr_r10dev_48214
156717 +enable_so_ramoops_console_size_vardecl_ram_c_48215 ramoops_console_size vardecl_ram.c 0 48215 NULL
156718 +enable_so_dwc3_ep0_start_trans_fndecl_48216 dwc3_ep0_start_trans fndecl 4 48216 NULL nohasharray
156719 +enable_so_srp_response_common_fndecl_48216 srp_response_common fndecl 4-2 48216 &enable_so_dwc3_ep0_start_trans_fndecl_48216
156720 +enable_so_bitmaps_hpfs_super_block_48227 bitmaps hpfs_super_block 0 48227 NULL
156721 +enable_so_sys_nice_fndecl_48229 sys_nice fndecl 1 48229 NULL
156722 +enable_so_xdr_buf_read_netobj_fndecl_48238 xdr_buf_read_netobj fndecl 3 48238 NULL
156723 +enable_so_height_cx88_core_48255 height cx88_core 0 48255 NULL
156724 +enable_so_ext3_get_journal_fndecl_48262 ext3_get_journal fndecl 2 48262 NULL
156725 +enable_so_vrows_display_48275 vrows display 0 48275 NULL
156726 +enable_so_qdisc_tree_decrease_qlen_fndecl_48281 qdisc_tree_decrease_qlen fndecl 2 48281 NULL
156727 +enable_so_compat_sys_set_mempolicy_fndecl_48285 compat_sys_set_mempolicy fndecl 3 48285 NULL
156728 +enable_so_add_packet_fndecl_48295 add_packet fndecl 3 48295 NULL
156729 +enable_so_next_dtslot_48300 next dtslot 0 48300 NULL
156730 +enable_so_ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_fndecl_48305 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval fndecl 3 48305 NULL
156731 +enable_so_hackrf_convert_stream_fndecl_48309 hackrf_convert_stream fndecl 0-4 48309 NULL
156732 +enable_so_nep_buffer_size_wahc_48313 nep_buffer_size wahc 0 48313 NULL
156733 +enable_so_ci_flags_f2fs_crypt_info_48318 ci_flags f2fs_crypt_info 0 48318 NULL
156734 +enable_so_pin_down_extent_fndecl_48324 pin_down_extent fndecl 4-3 48324 NULL
156735 +enable_so_qpshift_cxio_rdev_48325 qpshift cxio_rdev 0 48325 NULL
156736 +enable_so_vga_scan_lines_vardecl_vgacon_c_48330 vga_scan_lines vardecl_vgacon.c 0 48330 NULL
156737 +enable_so_ion_test_ioctl_fndecl_48340 ion_test_ioctl fndecl 2 48340 NULL
156738 +enable_so_ivtv_read_fndecl_48343 ivtv_read fndecl 3 48343 NULL
156739 +enable_so_spare_bytes_per_page_nand_jedec_params_48344 spare_bytes_per_page nand_jedec_params 0 48344 NULL
156740 +enable_so_bno_xfs_extent_busy_48346 bno xfs_extent_busy 0 48346 NULL
156741 +enable_so_generic_ptrace_peekdata_fndecl_48349 generic_ptrace_peekdata fndecl 2 48349 NULL
156742 +enable_so_hwahc_op_urb_dequeue_fndecl_48351 hwahc_op_urb_dequeue fndecl 3 48351 NULL
156743 +enable_so_flash_read_fndecl_48352 flash_read fndecl 3 48352 NULL
156744 +enable_so_kiblnd_create_tx_pool_fndecl_48357 kiblnd_create_tx_pool fndecl 2 48357 NULL
156745 +enable_so_ule_sndu_len_dvb_net_priv_48367 ule_sndu_len dvb_net_priv 0 48367 NULL
156746 +enable_so_xlog_write_setup_copy_fndecl_48368 xlog_write_setup_copy fndecl 0 48368 NULL
156747 +enable_so_copy_to_user_fndecl_48376 copy_to_user fndecl 3-0 48376 NULL
156748 +enable_so__snd_pcm_hw_param_set_fndecl_48394 _snd_pcm_hw_param_set fndecl 3 48394 NULL
156749 +enable_so_print_devstats_dot11RTSFailureCount_fndecl_48400 print_devstats_dot11RTSFailureCount fndecl 3 48400 NULL
156750 +enable_so_kvaser_usb_send_simple_msg_fndecl_48401 kvaser_usb_send_simple_msg fndecl 0 48401 NULL
156751 +enable_so_tree_id_btrfs_ioctl_search_key_48407 tree_id btrfs_ioctl_search_key 0 48407 NULL
156752 +enable_so_blk_queue_dma_pad_fndecl_48409 blk_queue_dma_pad fndecl 2 48409 NULL
156753 +enable_so_osd_depth_vardecl_ivtvfb_c_48413 osd_depth vardecl_ivtvfb.c 0 48413 NULL
156754 +enable_so_seq_buf_putmem_fndecl_48421 seq_buf_putmem fndecl 3 48421 NULL
156755 +enable_so_max_kioc_mraid_mmadp_48422 max_kioc mraid_mmadp 0 48422 NULL
156756 +enable_so_sys_fadvise64_64_fndecl_48424 sys_fadvise64_64 fndecl 2 48424 NULL
156757 +enable_so_bMaxBurst_usb_wireless_ep_comp_descriptor_48430 bMaxBurst usb_wireless_ep_comp_descriptor 0 48430 NULL
156758 +enable_so_natids_tid_info_48439 natids tid_info 0 48439 NULL
156759 +enable_so_bzImage64_load_fndecl_48447 bzImage64_load fndecl 7 48447 NULL
156760 +enable_so_alloc_ftrace_hash_fndecl_48452 alloc_ftrace_hash fndecl 1 48452 NULL
156761 +enable_so_dp_out_buf_len_digi_port_48457 dp_out_buf_len digi_port 0 48457 NULL
156762 +enable_so_copy_to_user_fromio_fndecl_48459 copy_to_user_fromio fndecl 3 48459 NULL
156763 +enable_so_address_ksm_scan_48461 address ksm_scan 0 48461 NULL
156764 +enable_so_len_rx_header_48462 len rx_header 0 48462 NULL
156765 +enable_so___nla_reserve_nohdr_fndecl_48468 __nla_reserve_nohdr fndecl 2 48468 NULL
156766 +enable_so_enclosure_register_fndecl_48471 enclosure_register fndecl 3 48471 NULL
156767 +enable_so_gre_manip_pkt_fndecl_48475 gre_manip_pkt fndecl 4 48475 NULL
156768 +enable_so_nr_domains_rapl_package_48482 nr_domains rapl_package 0 48482 NULL
156769 +enable_so_xe_value_size_ocfs2_xattr_entry_48485 xe_value_size ocfs2_xattr_entry 0 48485 NULL
156770 +enable_so___roundup_pow_of_two_fndecl_48486 __roundup_pow_of_two fndecl 0 48486 NULL
156771 +enable_so___origin_write_fndecl_48487 __origin_write fndecl 2 48487 NULL
156772 +enable_so_sisusb_clear_vram_fndecl_48489 sisusb_clear_vram fndecl 2-3 48489 NULL
156773 +enable_so_l_len_ocfs2_space_resv_48490 l_len ocfs2_space_resv 0 48490 NULL
156774 +enable_so_ydepth_sh_veu_format_48498 ydepth sh_veu_format 0 48498 NULL nohasharray
156775 +enable_so_rss_key_write_fndecl_48498 rss_key_write fndecl 3 48498 &enable_so_ydepth_sh_veu_format_48498
156776 +enable_so_ping_v6_sendmsg_fndecl_48499 ping_v6_sendmsg fndecl 3 48499 NULL
156777 +enable_so_encode_filename_fndecl_48501 encode_filename fndecl 3 48501 NULL
156778 +enable_so_len_cfg80211_bss_ies_48503 len cfg80211_bss_ies 0 48503 NULL
156779 +enable_so_r_len_ipath_qp_48504 r_len ipath_qp 0 48504 NULL
156780 +enable_so_sys_pselect6_fndecl_48506 sys_pselect6 fndecl 1 48506 NULL
156781 +enable_so_rx_count_kim_data_s_48513 rx_count kim_data_s 0 48513 NULL
156782 +enable_so_get_lr_context_size_fndecl_48518 get_lr_context_size fndecl 0 48518 NULL
156783 +enable_so_octeon_read_device_mem32_fndecl_48520 octeon_read_device_mem32 fndecl 0 48520 NULL
156784 +enable_so_fcoe_get_paged_crc_eof_fndecl_48522 fcoe_get_paged_crc_eof fndecl 2 48522 NULL
156785 +enable_so_copy_in_user_fndecl_48525 copy_in_user fndecl 3 48525 NULL
156786 +enable_so_bnad_debugfs_write_regwr_fndecl_48527 bnad_debugfs_write_regwr fndecl 3 48527 NULL
156787 +enable_so_receive_buf_fndecl_48528 receive_buf fndecl 4 48528 NULL nohasharray
156788 +enable_so_max_sense_bytes_mpt3_ioctl_command_48528 max_sense_bytes mpt3_ioctl_command 0 48528 &enable_so_receive_buf_fndecl_48528
156789 +enable_so_nilfs_sufile_update_fndecl_48533 nilfs_sufile_update fndecl 2 48533 NULL
156790 +enable_so_ocfs2_write_cluster_fndecl_48536 ocfs2_write_cluster fndecl 8-2 48536 NULL
156791 +enable_so_discard_block_size_cache_48539 discard_block_size cache 0 48539 NULL
156792 +enable_so_fack_count_tcp_sacktag_state_48543 fack_count tcp_sacktag_state 0 48543 NULL
156793 +enable_so_aid_len_nfc_evt_transaction_48544 aid_len nfc_evt_transaction 0 48544 NULL
156794 +enable_so_cmm_read_fndecl_48547 cmm_read fndecl 3 48547 NULL
156795 +enable_so_dm_stats_create_fndecl_48550 dm_stats_create fndecl 6-4-2-3 48550 NULL
156796 +enable_so_max_reply_bytes_mpt2_ioctl_command_48552 max_reply_bytes mpt2_ioctl_command 0 48552 NULL
156797 +enable_so_dccp_sync_mss_fndecl_48556 dccp_sync_mss fndecl 2 48556 NULL
156798 +enable_so_internal_depth_MPT2SAS_ADAPTER_48564 internal_depth MPT2SAS_ADAPTER 0 48564 NULL
156799 +enable_so_intel_tile_height_fndecl_48566 intel_tile_height fndecl 0 48566 NULL nohasharray
156800 +enable_so_ext4_get_bitmap_fndecl_48566 ext4_get_bitmap fndecl 2 48566 &enable_so_intel_tile_height_fndecl_48566
156801 +enable_so_init_tag_map_fndecl_48568 init_tag_map fndecl 3 48568 NULL
156802 +enable_so_len_wep_key_t_48574 len wep_key_t 0 48574 NULL nohasharray
156803 +enable_so_btrfs_insert_inode_extref_fndecl_48574 btrfs_insert_inode_extref fndecl 5 48574 &enable_so_len_wep_key_t_48574
156804 +enable_so_len_isert_data_buf_48596 len isert_data_buf 0 48596 NULL
156805 +enable_so_args_count_of_phandle_args_48605 args_count of_phandle_args 0 48605 NULL
156806 +enable_so_datalen_atp_info_48607 datalen atp_info 0 48607 NULL
156807 +enable_so_count_e8390_pkt_hdr_48610 count e8390_pkt_hdr 0 48610 NULL
156808 +enable_so_mmc_test_prepare_mrq_fndecl_48612 mmc_test_prepare_mrq fndecl 7-6 48612 NULL nohasharray
156809 +enable_so_il_dbgfs_interrupt_write_fndecl_48612 il_dbgfs_interrupt_write fndecl 3 48612 &enable_so_mmc_test_prepare_mrq_fndecl_48612
156810 +enable_so_num_streamids_arm_smmu_master_cfg_48625 num_streamids arm_smmu_master_cfg 0 48625 NULL
156811 +enable_so_xen_get_max_pages_fndecl_48626 xen_get_max_pages fndecl 0 48626 NULL
156812 +enable_so_crc_eof_offset_fcoe_percpu_s_48630 crc_eof_offset fcoe_percpu_s 0 48630 NULL
156813 +enable_so_pn544_hci_i2c_fw_write_cmd_fndecl_48631 pn544_hci_i2c_fw_write_cmd fndecl 4 48631 NULL
156814 +enable_so_ili210x_read_reg_fndecl_48632 ili210x_read_reg fndecl 4 48632 NULL nohasharray
156815 +enable_so_get_bridge_ifindices_fndecl_48632 get_bridge_ifindices fndecl 0 48632 &enable_so_ili210x_read_reg_fndecl_48632
156816 +enable_so_nsymbols_dsp_symbol_desc_48638 nsymbols dsp_symbol_desc 0 48638 NULL
156817 +enable_so_check_next_phase_fndecl_48641 check_next_phase fndecl 2 48641 NULL
156818 +enable_so_savemem_fndecl_48642 savemem fndecl 3 48642 NULL
156819 +enable_so_w_panel_info_48643 w panel_info 0 48643 NULL
156820 +enable_so_ipv6_flowlabel_opt_fndecl_48644 ipv6_flowlabel_opt fndecl 3 48644 NULL nohasharray
156821 +enable_so_slhc_init_fndecl_48644 slhc_init fndecl 1-2 48644 &enable_so_ipv6_flowlabel_opt_fndecl_48644
156822 +enable_so_li_used_bytes_logfs_inode_48648 li_used_bytes logfs_inode 0 48648 NULL
156823 +enable_so_origin_sectors_cache_48650 origin_sectors cache 0 48650 NULL
156824 +enable_so_libcfs_kvzalloc_cpt_fndecl_48651 libcfs_kvzalloc_cpt fndecl 3 48651 NULL
156825 +enable_so_pkt_len_eth_end_agg_rx_cqe_48658 pkt_len eth_end_agg_rx_cqe 0 48658 NULL nohasharray
156826 +enable_so_length_fw_cdev_send_request_48658 length fw_cdev_send_request 0 48658 &enable_so_pkt_len_eth_end_agg_rx_cqe_48658
156827 +enable_so_mmc_test_rnd_perf_fndecl_48660 mmc_test_rnd_perf fndecl 4 48660 NULL
156828 +enable_so_nn_rs_control_48667 nn rs_control 0 48667 NULL
156829 +enable_so_ep_out_if_usb_card_48678 ep_out if_usb_card 0 48678 NULL
156830 +enable_so_vscan_drm_display_mode_48680 vscan drm_display_mode 0 48680 NULL nohasharray
156831 +enable_so_ext4_bg_num_gdb_fndecl_48680 ext4_bg_num_gdb fndecl 0 48680 &enable_so_vscan_drm_display_mode_48680
156832 +enable_so_simple_transaction_set_fndecl_48684 simple_transaction_set fndecl 2 48684 NULL
156833 +enable_so_max_eqs_mlx4_dev_cap_48689 max_eqs mlx4_dev_cap 0 48689 NULL
156834 +enable_so_sb_dblocks_xfs_sb_48691 sb_dblocks xfs_sb 0 48691 NULL
156835 +enable_so_usCRTC_H_Disp__ATOM_MODE_TIMING_48694 usCRTC_H_Disp _ATOM_MODE_TIMING 0 48694 NULL
156836 +enable_so_max_rds_rings_netxen_adapter_48699 max_rds_rings netxen_adapter 0 48699 NULL nohasharray
156837 +enable_so_make_cpu_key_fndecl_48699 make_cpu_key fndecl 3 48699 &enable_so_max_rds_rings_netxen_adapter_48699
156838 +enable_so_tx_load_fndecl_48707 tx_load fndecl 3 48707 NULL nohasharray
156839 +enable_so_cqe_ib_cq_init_attr_48707 cqe ib_cq_init_attr 0 48707 &enable_so_tx_load_fndecl_48707
156840 +enable_so_sect_count_hfsplus_sb_info_48715 sect_count hfsplus_sb_info 0 48715 NULL
156841 +enable_so_base_gfn_kvm_memory_slot_48716 base_gfn kvm_memory_slot 0 48716 NULL
156842 +enable_so_ieee80211_if_fmt_flags_fndecl_48718 ieee80211_if_fmt_flags fndecl 3 48718 NULL
156843 +enable_so_rx_max_cdc_ncm_ctx_48720 rx_max cdc_ncm_ctx 0 48720 NULL
156844 +enable_so_ceph_tcp_recvmsg_fndecl_48722 ceph_tcp_recvmsg fndecl 0 48722 NULL
156845 +enable_so_garmin_write_bulk_fndecl_48732 garmin_write_bulk fndecl 3 48732 NULL
156846 +enable_so_can_dlc_can_frame_48738 can_dlc can_frame 0 48738 NULL
156847 +enable_so_bad_peb_count_ubi_device_48741 bad_peb_count ubi_device 0 48741 NULL nohasharray
156848 +enable_so_numEntries__ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table_48741 numEntries _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table 0 48741 &enable_so_bad_peb_count_ubi_device_48741
156849 +enable_so_iommu_size_vardecl_amd_gart_64_c_48749 iommu_size vardecl_amd_gart_64.c 0 48749 NULL
156850 +enable_so_i40evf_allocate_virt_mem_d_fndecl_48753 i40evf_allocate_virt_mem_d fndecl 3 48753 NULL
156851 +enable_so_e_blkno_ocfs2_extent_rec_48756 e_blkno ocfs2_extent_rec 0 48756 NULL
156852 +enable_so_ide_rate_filter_fndecl_48764 ide_rate_filter fndecl 0 48764 NULL
156853 +enable_so_baddr_videobuf_buffer_48769 baddr videobuf_buffer 0 48769 NULL nohasharray
156854 +enable_so_nfree_arena_info_48769 nfree arena_info 0 48769 &enable_so_baddr_videobuf_buffer_48769
156855 +enable_so_write_length_hih6130_48774 write_length hih6130 0 48774 NULL
156856 +enable_so_xmit_size_modem_info_48775 xmit_size modem_info 0 48775 NULL
156857 +enable_so_usable_leb_size_ubi_volume_info_48776 usable_leb_size ubi_volume_info 0 48776 NULL nohasharray
156858 +enable_so_profile_load_fndecl_48776 profile_load fndecl 3 48776 &enable_so_usable_leb_size_ubi_volume_info_48776
156859 +enable_so_cfg80211_mgmt_tx_status_fndecl_48777 cfg80211_mgmt_tx_status fndecl 4 48777 NULL
156860 +enable_so_acpi_ds_build_internal_package_obj_fndecl_48780 acpi_ds_build_internal_package_obj fndecl 3 48780 NULL
156861 +enable_so_height_drm_framebuffer_48781 height drm_framebuffer 0 48781 NULL
156862 +enable_so_kstrtos8_from_user_fndecl_48783 kstrtos8_from_user fndecl 2 48783 NULL
156863 +enable_so_mwifiex_host_to_card_mp_aggr_fndecl_48786 mwifiex_host_to_card_mp_aggr fndecl 3 48786 NULL nohasharray
156864 +enable_so_value_len_jffs2_xattr_datum_48786 value_len jffs2_xattr_datum 0 48786 &enable_so_mwifiex_host_to_card_mp_aggr_fndecl_48786 nohasharray
156865 +enable_so_hva_to_pfn_fndecl_48786 hva_to_pfn fndecl 1 48786 &enable_so_value_len_jffs2_xattr_datum_48786
156866 +enable_so_head_len_cfg80211_beacon_data_48794 head_len cfg80211_beacon_data 0 48794 NULL
156867 +enable_so_unit_size_mspro_sys_info_48796 unit_size mspro_sys_info 0 48796 NULL
156868 +enable_so_ext3_max_size_fndecl_48803 ext3_max_size fndecl 1 48803 NULL
156869 +enable_so_iscsi_decode_text_input_fndecl_48807 iscsi_decode_text_input fndecl 4 48807 NULL
156870 +enable_so_intel_alloc_coherent_fndecl_48813 intel_alloc_coherent fndecl 2 48813 NULL
156871 +enable_so_len_pci_vpd_48814 len pci_vpd 0 48814 NULL nohasharray
156872 +enable_so_btrfs_lookup_xattr_fndecl_48814 btrfs_lookup_xattr fndecl 4 48814 &enable_so_len_pci_vpd_48814
156873 +enable_so_r100_mm_rreg_fndecl_48823 r100_mm_rreg fndecl 0 48823 NULL
156874 +enable_so_endpoint_pvr2_stream_48828 endpoint pvr2_stream 0 48828 NULL
156875 +enable_so_xbofs_irda_skb_cb_48831 xbofs irda_skb_cb 0 48831 NULL nohasharray
156876 +enable_so_num_vring_48831 num vring 0 48831 &enable_so_xbofs_irda_skb_cb_48831
156877 +enable_so_mic_virtio_copy_from_user_fndecl_48832 mic_virtio_copy_from_user fndecl 3 48832 NULL
156878 +enable_so_h_margin_fb_cvt_data_48833 h_margin fb_cvt_data 0 48833 NULL
156879 +enable_so___generic_file_fsync_fndecl_48835 __generic_file_fsync fndecl 2 48835 NULL
156880 +enable_so_osst_init_aux_fndecl_48837 osst_init_aux fndecl 6-5-3 48837 NULL
156881 +enable_so_udf_bitmap_free_blocks_fndecl_48841 udf_bitmap_free_blocks fndecl 5-4 48841 NULL
156882 +enable_so_ieee80211_aes_ccm_encrypt_fndecl_48857 ieee80211_aes_ccm_encrypt fndecl 5 48857 NULL
156883 +enable_so_container_width_dmm_48858 container_width dmm 0 48858 NULL
156884 +enable_so_pagefault_single_data_segment_fndecl_48864 pagefault_single_data_segment fndecl 4 48864 NULL
156885 +enable_so_vmalloc_to_sg_fndecl_48865 vmalloc_to_sg fndecl 2 48865 NULL
156886 +enable_so_log_mtts_per_seg_vardecl_48880 log_mtts_per_seg vardecl 0 48880 NULL
156887 +enable_so_skb_ensure_writable_fndecl_48882 skb_ensure_writable fndecl 2 48882 NULL nohasharray
156888 +enable_so___copy_from_user_swizzled_fndecl_48882 __copy_from_user_swizzled fndecl 2-4 48882 &enable_so_skb_ensure_writable_fndecl_48882
156889 +enable_so_cl_in_max_entry_size_mvumi_hs_page1_48890 cl_in_max_entry_size mvumi_hs_page1 0 48890 NULL
156890 +enable_so_unmap_edge_bts_fndecl_48892 unmap_edge_bts fndecl 2-3 48892 NULL
156891 +enable_so_logical_scrub_copy_nocow_ctx_48894 logical scrub_copy_nocow_ctx 0 48894 NULL
156892 +enable_so_radeon_ttm_gtt_read_fndecl_48900 radeon_ttm_gtt_read fndecl 3 48900 NULL
156893 +enable_so_nr_buffers_drm_nouveau_gem_pushbuf_48902 nr_buffers drm_nouveau_gem_pushbuf 0 48902 NULL
156894 +enable_so_offset_scatterlist_48908 offset scatterlist 0 48908 NULL nohasharray
156895 +enable_so_max_devices_support_mvumi_hs_page1_48908 max_devices_support mvumi_hs_page1 0 48908 &enable_so_offset_scatterlist_48908
156896 +enable_so_ucNumEntries__StateArray_48910 ucNumEntries _StateArray 0 48910 NULL
156897 +enable_so_s_groups_count_ext2_sb_info_48915 s_groups_count ext2_sb_info 0 48915 NULL
156898 +enable_so_flags_ext4_fname_crypto_ctx_48917 flags ext4_fname_crypto_ctx 0 48917 NULL
156899 +enable_so_minix_iget_fndecl_48927 minix_iget fndecl 2 48927 NULL
156900 +enable_so__scif_nodeqp_send_fndecl_48929 _scif_nodeqp_send fndecl 0 48929 NULL
156901 +enable_so_write_file_operations_48930 write file_operations 0 48930 NULL
156902 +enable_so_iio_read_first_n_kfifo_fndecl_48933 iio_read_first_n_kfifo fndecl 2 48933 NULL
156903 +enable_so_set_dma_reserve_fndecl_48948 set_dma_reserve fndecl 1 48948 NULL
156904 +enable_so_xt_alloc_table_info_fndecl_48956 xt_alloc_table_info fndecl 1 48956 NULL
156905 +enable_so_user_dlm_lock_fndecl_48959 user_dlm_lock fndecl 6 48959 NULL nohasharray
156906 +enable_so_wptr_radeon_ring_48959 wptr radeon_ring 0 48959 &enable_so_user_dlm_lock_fndecl_48959
156907 +enable_so_num_requests_vardecl_48964 num_requests vardecl 0 48964 NULL
156908 +enable_so_SyS_io_setup_fndecl_48965 SyS_io_setup fndecl 1 48965 NULL
156909 +enable_so_block_size_sm_ftl_48967 block_size sm_ftl 0 48967 NULL
156910 +enable_so_rx_fndecl_48971 rx fndecl 4 48971 NULL
156911 +enable_so_dma40_prep_dma_cyclic_fndecl_48976 dma40_prep_dma_cyclic fndecl 4-3 48976 NULL
156912 +enable_so_pkt_overhead_pktgen_dev_48989 pkt_overhead pktgen_dev 0 48989 NULL
156913 +enable_so_rec_len_exofs_dir_entry_49002 rec_len exofs_dir_entry 0 49002 NULL
156914 +enable_so_c2_reg_user_mr_fndecl_49005 c2_reg_user_mr fndecl 2 49005 NULL
156915 +enable_so_ip_set_alloc_fndecl_49010 ip_set_alloc fndecl 1 49010 NULL
156916 +enable_so_bm_len_xfs_buf_map_49022 bm_len xfs_buf_map 0 49022 NULL
156917 +enable_so_usb_dmac_prep_slave_sg_fndecl_49027 usb_dmac_prep_slave_sg fndecl 3 49027 NULL
156918 +enable_so_size_vmw_otable_49032 size vmw_otable 0 49032 NULL
156919 +enable_so_reiserfs_free_prealloc_block_fndecl_49035 reiserfs_free_prealloc_block fndecl 3 49035 NULL
156920 +enable_so___ip6_append_data_fndecl_49037 __ip6_append_data fndecl 10-9 49037 NULL
156921 +enable_so_dwMaxVideoFrameSize_uvc_streaming_control_49044 dwMaxVideoFrameSize uvc_streaming_control 0 49044 NULL
156922 +enable_so_cxacru_cm_fndecl_49052 cxacru_cm fndecl 4 49052 NULL
156923 +enable_so_iguanair_send_fndecl_49054 iguanair_send fndecl 2 49054 NULL
156924 +enable_so_route_key_size_nf_afinfo_49055 route_key_size nf_afinfo 0 49055 NULL
156925 +enable_so_ext4_block_bitmap_fndecl_49058 ext4_block_bitmap fndecl 0 49058 NULL
156926 +enable_so_ide_pio_bytes_fndecl_49063 ide_pio_bytes fndecl 4 49063 NULL
156927 +enable_so_transport_mtu_vardecl_ntb_transport_c_49067 transport_mtu vardecl_ntb_transport.c 0 49067 NULL
156928 +enable_so_scan_nat_page_fndecl_49068 scan_nat_page fndecl 3 49068 NULL
156929 +enable_so_irq_base_kvm_kpic_state_49073 irq_base kvm_kpic_state 0 49073 NULL
156930 +enable_so_ccid_hc_tx_obj_size_ccid_operations_49077 ccid_hc_tx_obj_size ccid_operations 0 49077 NULL
156931 +enable_so_dev_priv_size_drm_buf_49086 dev_priv_size drm_buf 0 49086 NULL
156932 +enable_so_bi_vcnt_bio_49090 bi_vcnt bio 0 49090 NULL
156933 +enable_so_ocfs2_mv_xattr_bucket_cross_cluster_fndecl_49091 ocfs2_mv_xattr_bucket_cross_cluster fndecl 5-6 49091 NULL
156934 +enable_so_end_sector_dev_info_49096 end_sector dev_info 0 49096 NULL nohasharray
156935 +enable_so_misc_sbp_command_block_orb_49096 misc sbp_command_block_orb 0 49096 &enable_so_end_sector_dev_info_49096
156936 +enable_so_u132_hcd_interrupt_recv_fndecl_49098 u132_hcd_interrupt_recv fndecl 4 49098 NULL nohasharray
156937 +enable_so_dt3155_alloc_coherent_fndecl_49098 dt3155_alloc_coherent fndecl 2 49098 &enable_so_u132_hcd_interrupt_recv_fndecl_49098
156938 +enable_so_cm4040_write_fndecl_49100 cm4040_write fndecl 3 49100 NULL
156939 +enable_so_xdr_align_pages_fndecl_49102 xdr_align_pages fndecl 0-2 49102 NULL
156940 +enable_so_ri_super_root_nilfs_recovery_info_49105 ri_super_root nilfs_recovery_info 0 49105 NULL
156941 +enable_so_vmci_qpair_alloc_fndecl_49107 vmci_qpair_alloc fndecl 4-3 49107 NULL nohasharray
156942 +enable_so_qnx6_block_map_fndecl_49107 qnx6_block_map fndecl 0 49107 &enable_so_vmci_qpair_alloc_fndecl_49107
156943 +enable_so_bq32k_write_fndecl_49114 bq32k_write fndecl 4 49114 NULL
156944 +enable_so_mce_async_out_fndecl_49115 mce_async_out fndecl 3 49115 NULL
156945 +enable_so_alloc_rbio_fndecl_49128 alloc_rbio fndecl 3 49128 NULL
156946 +enable_so_mad_seg_size_ib_mad_recv_wc_49134 mad_seg_size ib_mad_recv_wc 0 49134 NULL
156947 +enable_so_neo_init_hw_fndecl_49135 neo_init_hw fndecl 0 49135 NULL
156948 +enable_so_snd_pcm_hw_param_min_fndecl_49139 snd_pcm_hw_param_min fndecl 4 49139 NULL
156949 +enable_so_batch_len_drm_i915_gem_execbuffer2_49145 batch_len drm_i915_gem_execbuffer2 0 49145 NULL
156950 +enable_so_fll_out_wm8900_priv_49147 fll_out wm8900_priv 0 49147 NULL
156951 +enable_so_max_dev_mdp_superblock_1_49148 max_dev mdp_superblock_1 0 49148 NULL
156952 +enable_so_il4965_rate_n_flags_from_tbl_fndecl_49149 il4965_rate_n_flags_from_tbl fndecl 0 49149 NULL
156953 +enable_so_ecryptfs_inode_newsize_ok_fndecl_49153 ecryptfs_inode_newsize_ok fndecl 2 49153 NULL
156954 +enable_so_tx_tr_cfv_info_49171 tx_tr cfv_info 0 49171 NULL
156955 +enable_so_ipr_alloc_ucode_buffer_fndecl_49172 ipr_alloc_ucode_buffer fndecl 1 49172 NULL
156956 +enable_so_vactive_lo_lvds_dvo_timing_49180 vactive_lo lvds_dvo_timing 0 49180 NULL
156957 +enable_so_nilfs_sufile_do_cancel_free_fndecl_49183 nilfs_sufile_do_cancel_free fndecl 2 49183 NULL nohasharray
156958 +enable_so_allocate_probes_fndecl_49183 allocate_probes fndecl 1 49183 &enable_so_nilfs_sufile_do_cancel_free_fndecl_49183
156959 +enable_so_s_last_ino_logfs_super_49185 s_last_ino logfs_super 0 49185 NULL
156960 +enable_so_discard_next_dnode_fndecl_49188 discard_next_dnode fndecl 2 49188 NULL
156961 +enable_so_len_fb_cmap_user_49195 len fb_cmap_user 0 49195 NULL
156962 +enable_so_of_get_child_count_fndecl_49197 of_get_child_count fndecl 0 49197 NULL nohasharray
156963 +enable_so_fsl_edma_prep_dma_cyclic_fndecl_49197 fsl_edma_prep_dma_cyclic fndecl 4-3 49197 &enable_so_of_get_child_count_fndecl_49197
156964 +enable_so_offset_page_chunk_49201 offset page_chunk 0 49201 NULL
156965 +enable_so_osst_read_fndecl_49214 osst_read fndecl 3 49214 NULL
156966 +enable_so_i_pos_low_fat_fid_49216 i_pos_low fat_fid 0 49216 NULL nohasharray
156967 +enable_so_usbnet_read_cmd_fndecl_49216 usbnet_read_cmd fndecl 7 49216 &enable_so_i_pos_low_fat_fid_49216
156968 +enable_so_schedule_external_copy_fndecl_49224 schedule_external_copy fndecl 2-3 49224 NULL
156969 +enable_so_offset_rq_map_data_49234 offset rq_map_data 0 49234 NULL
156970 +enable_so_ext_ramdisk_image_boot_params_49238 ext_ramdisk_image boot_params 0 49238 NULL
156971 +enable_so_mos7840_write_fndecl_49240 mos7840_write fndecl 4 49240 NULL
156972 +enable_so_ext2_fiemap_fndecl_49244 ext2_fiemap fndecl 4 49244 NULL
156973 +enable_so_xfs_map_buffer_fndecl_49246 xfs_map_buffer fndecl 4 49246 NULL
156974 +enable_so_nfs_file_llseek_fndecl_49249 nfs_file_llseek fndecl 2 49249 NULL
156975 +enable_so_rate_floppy_struct_49273 rate floppy_struct 0 49273 NULL
156976 +enable_so_dwDefaultFrameInterval_uvc_frame_49276 dwDefaultFrameInterval uvc_frame 0 49276 NULL nohasharray
156977 +enable_so_SyS_bind_fndecl_49276 SyS_bind fndecl 3 49276 &enable_so_dwDefaultFrameInterval_uvc_frame_49276
156978 +enable_so_name_len_audit_names_49277 name_len audit_names 0 49277 NULL
156979 +enable_so_dpll_psb_pipe_49282 dpll psb_pipe 0 49282 NULL
156980 +enable_so_ib_get_mad_data_offset_fndecl_49283 ib_get_mad_data_offset fndecl 0 49283 NULL
156981 +enable_so_header_length_ipr_ucode_image_header_49294 header_length ipr_ucode_image_header 0 49294 NULL
156982 +enable_so_frag_threshold_ipw2100_priv_49298 frag_threshold ipw2100_priv 0 49298 NULL
156983 +enable_so_il_vbackporch_v4l2_bt_timings_49302 il_vbackporch v4l2_bt_timings 0 49302 NULL
156984 +enable_so_bTransferSegment_wa_xfer_result_49303 bTransferSegment wa_xfer_result 0 49303 NULL
156985 +enable_so_SAL_nasids_size_xpc_rsvd_page_49304 SAL_nasids_size xpc_rsvd_page 0 49304 NULL
156986 +enable_so_inode_decr_space_fndecl_49309 inode_decr_space fndecl 2 49309 NULL
156987 +enable_so_get_chars_fndecl_49318 get_chars fndecl 3 49318 NULL
156988 +enable_so_fwnet_incoming_packet_fndecl_49327 fwnet_incoming_packet fndecl 3 49327 NULL
156989 +enable_so_ocfs2_release_clusters_fndecl_49328 ocfs2_release_clusters fndecl 4 49328 NULL
156990 +enable_so_length_iwl_wipan_noa_data_49332 length iwl_wipan_noa_data 0 49332 NULL
156991 +enable_so_cmnd_res_ep_vub300_mmc_host_49334 cmnd_res_ep vub300_mmc_host 0 49334 NULL
156992 +enable_so___iterate_backrefs_fndecl_49345 __iterate_backrefs fndecl 1 49345 NULL
156993 +enable_so_get_data_block_fiemap_fndecl_49346 get_data_block_fiemap fndecl 2 49346 NULL nohasharray
156994 +enable_so_db_handle_buf_size_vmci_ctx_notify_recv_info_49346 db_handle_buf_size vmci_ctx_notify_recv_info 0 49346 &enable_so_get_data_block_fiemap_fndecl_49346
156995 +enable_so_num_msix_entries_qib_chip_specific_49373 num_msix_entries qib_chip_specific 0 49373 NULL
156996 +enable_so_fsbcount_xfs_da_geometry_49380 fsbcount xfs_da_geometry 0 49380 NULL
156997 +enable_so_short_mark_sd_49388 short_mark sd 0 49388 NULL
156998 +enable_so_exofs_nfs_get_inode_fndecl_49391 exofs_nfs_get_inode fndecl 2 49391 NULL
156999 +enable_so_current_font_height_sisusb_usb_data_49394 current_font_height sisusb_usb_data 0 49394 NULL
157000 +enable_so_tty_prepare_flip_string_fndecl_49408 tty_prepare_flip_string fndecl 3 49408 NULL
157001 +enable_so_ss_next_nilfs_segment_summary_49410 ss_next nilfs_segment_summary 0 49410 NULL
157002 +enable_so_lstcon_group_list_fndecl_49413 lstcon_group_list fndecl 2 49413 NULL
157003 +enable_so_physaddr_qib_devdata_49415 physaddr qib_devdata 0 49415 NULL nohasharray
157004 +enable_so_base_doorbell_index_nes_device_49415 base_doorbell_index nes_device 0 49415 &enable_so_physaddr_qib_devdata_49415 nohasharray
157005 +enable_so_size_efx_farch_filter_table_49415 size efx_farch_filter_table 0 49415 &enable_so_base_doorbell_index_nes_device_49415
157006 +enable_so_bio_chain_clone_range_fndecl_49420 bio_chain_clone_range fndecl 3 49420 NULL
157007 +enable_so_descsize_crypto_shash_49421 descsize crypto_shash 0 49421 NULL
157008 +enable_so_tipc_msg_build_fndecl_49424 tipc_msg_build fndecl 4 49424 NULL
157009 +enable_so_ds_out_channels_hdsp_49429 ds_out_channels hdsp 0 49429 NULL
157010 +enable_so_fwnet_pd_new_fndecl_49432 fwnet_pd_new fndecl 4 49432 NULL nohasharray
157011 +enable_so_set_run_fndecl_49432 set_run fndecl 2 49432 &enable_so_fwnet_pd_new_fndecl_49432
157012 +enable_so_main_segments_f2fs_sm_info_49433 main_segments f2fs_sm_info 0 49433 NULL
157013 +enable_so_nr_ndevs_vardecl_af_netrom_c_49435 nr_ndevs vardecl_af_netrom.c 0 49435 NULL
157014 +enable_so_mthca_array_init_fndecl_49440 mthca_array_init fndecl 2 49440 NULL
157015 +enable_so_tidvaddr_qib_tid_info_49445 tidvaddr qib_tid_info 0 49445 NULL nohasharray
157016 +enable_so_fw_device_op_read_fndecl_49445 fw_device_op_read fndecl 3 49445 &enable_so_tidvaddr_qib_tid_info_49445
157017 +enable_so_dwc3_readl_fndecl_49455 dwc3_readl fndecl 0 49455 NULL
157018 +enable_so_rtl2832_regmap_write_fndecl_49456 rtl2832_regmap_write fndecl 3 49456 NULL
157019 +enable_so_minix_inode_by_name_fndecl_49464 minix_inode_by_name fndecl 0 49464 NULL
157020 +enable_so_trim_end_cp_control_49465 trim_end cp_control 0 49465 NULL nohasharray
157021 +enable_so_NumberOfPorts_mpt2sas_facts_49465 NumberOfPorts mpt2sas_facts 0 49465 &enable_so_trim_end_cp_control_49465 nohasharray
157022 +enable_so_ch_count_srp_target_port_49465 ch_count srp_target_port 0 49465 &enable_so_NumberOfPorts_mpt2sas_facts_49465
157023 +enable_so_usb_tx_block_fndecl_49466 usb_tx_block fndecl 3 49466 NULL
157024 +enable_so_broadsheetfb_write_fndecl_49467 broadsheetfb_write fndecl 3 49467 NULL
157025 +enable_so_len_r6040_descriptor_49471 len r6040_descriptor 0 49471 NULL
157026 +enable_so_s_cblkno_ufs_sb_private_info_49472 s_cblkno ufs_sb_private_info 0 49472 NULL
157027 +enable_so_xen_hvm_config_fndecl_49473 xen_hvm_config fndecl 2 49473 NULL nohasharray
157028 +enable_so_btrfs_del_root_ref_fndecl_49473 btrfs_del_root_ref fndecl 4-3 49473 &enable_so_xen_hvm_config_fndecl_49473
157029 +enable_so_ks8995_read_fndecl_49475 ks8995_read fndecl 4 49475 NULL
157030 +enable_so_nf_nat_icmpv6_reply_translation_fndecl_49476 nf_nat_icmpv6_reply_translation fndecl 5 49476 NULL nohasharray
157031 +enable_so_ivtvfb_write_fndecl_49476 ivtvfb_write fndecl 3 49476 &enable_so_nf_nat_icmpv6_reply_translation_fndecl_49476
157032 +enable_so_make_rx_response_fndecl_49477 make_rx_response fndecl 4-5-3 49477 NULL
157033 +enable_so_rpc_max_payload_fndecl_49478 rpc_max_payload fndecl 0 49478 NULL
157034 +enable_so_i2c_readn_fndecl_49490 i2c_readn fndecl 4 49490 NULL
157035 +enable_so_xfs_file_llseek_fndecl_49492 xfs_file_llseek fndecl 2 49492 NULL
157036 +enable_so_usCRTC_H_Total__ATOM_MODE_TIMING_49501 usCRTC_H_Total _ATOM_MODE_TIMING 0 49501 NULL
157037 +enable_so_intel_framebuffer_create_for_mode_fndecl_49508 intel_framebuffer_create_for_mode fndecl 4 49508 NULL nohasharray
157038 +enable_so_l2cap_create_iframe_pdu_fndecl_49508 l2cap_create_iframe_pdu fndecl 3 49508 &enable_so_intel_framebuffer_create_for_mode_fndecl_49508
157039 +enable_so_tx_blk_size_rsi_91x_sdiodev_49511 tx_blk_size rsi_91x_sdiodev 0 49511 NULL
157040 +enable_so_usbvision_write_reg_irq_fndecl_49516 usbvision_write_reg_irq fndecl 4 49516 NULL
157041 +enable_so_buf_size_sge_fl_49517 buf_size sge_fl 0 49517 NULL nohasharray
157042 +enable_so_ept_fetch_fndecl_49517 ept_fetch fndecl 2 49517 &enable_so_buf_size_sge_fl_49517
157043 +enable_so_Zmin_hfc_multi_49520 Zmin hfc_multi 0 49520 NULL
157044 +enable_so_datablob_hmac_append_fndecl_49525 datablob_hmac_append fndecl 3 49525 NULL nohasharray
157045 +enable_so_num_eps_bdc_49525 num_eps bdc 0 49525 &enable_so_datablob_hmac_append_fndecl_49525
157046 +enable_so_num_connector_drm_atomic_state_49542 num_connector drm_atomic_state 0 49542 NULL
157047 +enable_so_disk_offset_pnfs_block_dev_map_49546 disk_offset pnfs_block_dev_map 0 49546 NULL
157048 +enable_so_oobavail_nand_ecclayout_49548 oobavail nand_ecclayout 0 49548 NULL
157049 +enable_so_lpfc_debugfs_hbqinfo_data_fndecl_49551 lpfc_debugfs_hbqinfo_data fndecl 0 49551 NULL
157050 +enable_so_nrs_num_pols_ptlrpc_nrs_49564 nrs_num_pols ptlrpc_nrs 0 49564 NULL
157051 +enable_so_nilfs_mdt_delete_block_fndecl_49565 nilfs_mdt_delete_block fndecl 2 49565 NULL
157052 +enable_so_xfs_insert_file_space_fndecl_49569 xfs_insert_file_space fndecl 2-3 49569 NULL
157053 +enable_so_ssid_length_beacon_format_49591 ssid_length beacon_format 0 49591 NULL nohasharray
157054 +enable_so_bytenr_btrfs_qgroup_operation_49591 bytenr btrfs_qgroup_operation 0 49591 &enable_so_ssid_length_beacon_format_49591
157055 +enable_so_xfs_rtbuf_get_fndecl_49592 xfs_rtbuf_get fndecl 3 49592 NULL
157056 +enable_so_gen_pool_first_fit_fndecl_49597 gen_pool_first_fit fndecl 4 49597 NULL
157057 +enable_so_width_vim2m_q_data_49600 width vim2m_q_data 0 49600 NULL
157058 +enable_so_iwch_alloc_fastreg_pbl_fndecl_49610 iwch_alloc_fastreg_pbl fndecl 2 49610 NULL
157059 +enable_so_pt_write_fndecl_49612 pt_write fndecl 3 49612 NULL
157060 +enable_so_hsync_start_drm_display_mode_49613 hsync_start drm_display_mode 0 49613 NULL nohasharray
157061 +enable_so_start_drm_mm_node_49613 start drm_mm_node 0 49613 &enable_so_hsync_start_drm_display_mode_49613
157062 +enable_so_ocfs2_sync_file_fndecl_49614 ocfs2_sync_file fndecl 2 49614 NULL
157063 +enable_so_spare_bytes_per_page_nand_onfi_params_49617 spare_bytes_per_page nand_onfi_params 0 49617 NULL
157064 +enable_so_sctp_setsockopt_delayed_ack_fndecl_49618 sctp_setsockopt_delayed_ack fndecl 3 49618 NULL
157065 +enable_so_write_cmd_usb_fndecl_49619 write_cmd_usb fndecl 3 49619 NULL
157066 +enable_so_size_ethtool_perm_addr_49621 size ethtool_perm_addr 0 49621 NULL
157067 +enable_so_reg_read_range_fndecl_49623 reg_read_range fndecl 4 49623 NULL nohasharray
157068 +enable_so_dwc2_max_desc_num_fndecl_49623 dwc2_max_desc_num fndecl 0 49623 &enable_so_reg_read_range_fndecl_49623
157069 +enable_so_end_async_cow_49625 end async_cow 0 49625 NULL nohasharray
157070 +enable_so_nn_nvme_id_ctrl_49625 nn nvme_id_ctrl 0 49625 &enable_so_end_async_cow_49625
157071 +enable_so_yres_fb_cvt_data_49628 yres fb_cvt_data 0 49628 NULL
157072 +enable_so_srsize_brcmf_chip_49639 srsize brcmf_chip 0 49639 NULL
157073 +enable_so_start_io_failure_record_49645 start io_failure_record 0 49645 NULL
157074 +enable_so_iocbq_lookup_len_lpfc_sli_49647 iocbq_lookup_len lpfc_sli 0 49647 NULL
157075 +enable_so_il4965_rs_get_adjacent_rate_fndecl_49653 il4965_rs_get_adjacent_rate fndecl 2 49653 NULL nohasharray
157076 +enable_so_il4965_rs_get_tbl_info_from_mcs_fndecl_49653 il4965_rs_get_tbl_info_from_mcs fndecl 1 49653 &enable_so_il4965_rs_get_adjacent_rate_fndecl_49653
157077 +enable_so_dwMaxPayloadTransferSize_uvc_streaming_control_49668 dwMaxPayloadTransferSize uvc_streaming_control 0 49668 NULL
157078 +enable_so_bytes_ubi_leb_change_req_49669 bytes ubi_leb_change_req 0 49669 NULL
157079 +enable_so_btrfs_find_one_extref_fndecl_49671 btrfs_find_one_extref fndecl 3-2 49671 NULL
157080 +enable_so_size_unit_element_struct_49673 size unit_element_struct 0 49673 NULL
157081 +enable_so_port_priv_size_team_mode_49682 port_priv_size team_mode 0 49682 NULL
157082 +enable_so_clk_core_get_rate_nolock_fndecl_49685 clk_core_get_rate_nolock fndecl 0 49685 NULL
157083 +enable_so___seq_open_private_fndecl_49688 __seq_open_private fndecl 3 49688 NULL
157084 +enable_so_report_size_iowarrior_49692 report_size iowarrior 0 49692 NULL nohasharray
157085 +enable_so_set_extent_bit_fndecl_49692 set_extent_bit fndecl 3-2 49692 &enable_so_report_size_iowarrior_49692
157086 +enable_so_slider_num_ad714x_platform_data_49695 slider_num ad714x_platform_data 0 49695 NULL
157087 +enable_so_security_inode_listxattr_fndecl_49699 security_inode_listxattr fndecl 0 49699 NULL
157088 +enable_so_pg_write_fndecl_49709 pg_write fndecl 3 49709 NULL
157089 +enable_so_end_resource_49712 end resource 0 49712 NULL
157090 +enable_so_xfs_iext_remove_direct_fndecl_49723 xfs_iext_remove_direct fndecl 3 49723 NULL
157091 +enable_so_sof_len_sd_49729 sof_len sd 0 49729 NULL
157092 +enable_so_extsize_crypto_type_49730 extsize crypto_type 0 49730 NULL
157093 +enable_so_num_uars_mthca_limits_49735 num_uars mthca_limits 0 49735 NULL
157094 +enable_so_wqe_size_ib_uverbs_post_recv_49738 wqe_size ib_uverbs_post_recv 0 49738 NULL
157095 +enable_so_xfs_bmap_split_extent_fndecl_49740 xfs_bmap_split_extent fndecl 2 49740 NULL
157096 +enable_so_kernfs_fop_read_fndecl_49745 kernfs_fop_read fndecl 3 49745 NULL
157097 +enable_so_udf_prealloc_blocks_fndecl_49747 udf_prealloc_blocks fndecl 5-0-4 49747 NULL nohasharray
157098 +enable_so_dm_bitset_resize_fndecl_49747 dm_bitset_resize fndecl 2 49747 &enable_so_udf_prealloc_blocks_fndecl_49747
157099 +enable_so_show_list_fndecl_49748 show_list fndecl 3-0 49748 NULL
157100 +enable_so_ts_packet_size_saa7164_port_49752 ts_packet_size saa7164_port 0 49752 NULL
157101 +enable_so_hpfs_add_dirent_fndecl_49754 hpfs_add_dirent fndecl 3 49754 NULL
157102 +enable_so_hblank___fb_timings_49755 hblank __fb_timings 0 49755 NULL
157103 +enable_so_ngroups_netlink_sock_49758 ngroups netlink_sock 0 49758 NULL nohasharray
157104 +enable_so_stripe_count_nfs4_file_layout_dsaddr_49758 stripe_count nfs4_file_layout_dsaddr 0 49758 &enable_so_ngroups_netlink_sock_49758
157105 +enable_so_unpin_extent_range_fndecl_49763 unpin_extent_range fndecl 3-2 49763 NULL nohasharray
157106 +enable_so_match_size_compat_ebt_entry_mwt_49763 match_size compat_ebt_entry_mwt 0 49763 &enable_so_unpin_extent_range_fndecl_49763
157107 +enable_so_perf_read_fndecl_49769 perf_read fndecl 3 49769 NULL
157108 +enable_so_nl80211_send_roamed_fndecl_49770 nl80211_send_roamed fndecl 5-7 49770 NULL
157109 +enable_so_dwFrameInterval_uvc_streaming_control_49771 dwFrameInterval uvc_streaming_control 0 49771 NULL
157110 +enable_so_type_context_49772 type context 0 49772 NULL
157111 +enable_so_rtw_add_beacon_fndecl_49778 rtw_add_beacon fndecl 3-5 49778 NULL
157112 +enable_so_sprom_size_ssb_bus_49781 sprom_size ssb_bus 0 49781 NULL
157113 +enable_so_page2_len_ses_device_49783 page2_len ses_device 0 49783 NULL
157114 +enable_so_scale_factor_s5p_jpeg_ctx_49787 scale_factor s5p_jpeg_ctx 0 49787 NULL
157115 +enable_so_nilfs_mdt_init_fndecl_49794 nilfs_mdt_init fndecl 3 49794 NULL
157116 +enable_so_outlen_mimd_49796 outlen mimd 0 49796 NULL
157117 +enable_so_write_file_wow_fndecl_49799 write_file_wow fndecl 3 49799 NULL
157118 +enable_so_substream_alloc_pages_fndecl_49800 substream_alloc_pages fndecl 3 49800 NULL
157119 +enable_so_ocfs2_zero_partial_clusters_fndecl_49803 ocfs2_zero_partial_clusters fndecl 2-3 49803 NULL
157120 +enable_so_max_fib_size_aac_dev_49804 max_fib_size aac_dev 0 49804 NULL
157121 +enable_so_logfs_seek_hole_fndecl_49805 logfs_seek_hole fndecl 2 49805 NULL
157122 +enable_so_num_uar_mthca_profile_49807 num_uar mthca_profile 0 49807 NULL
157123 +enable_so_fat_chain_add_fndecl_49812 fat_chain_add fndecl 2-3 49812 NULL
157124 +enable_so_fat_bits_msdos_sb_info_49817 fat_bits msdos_sb_info 0 49817 NULL
157125 +enable_so_reserved_fat_boot_sector_49818 reserved fat_boot_sector 0 49818 NULL
157126 +enable_so_nr_pages_flash_info_49822 nr_pages flash_info 0 49822 NULL
157127 +enable_so_elemsize_nft_set_ops_49830 elemsize nft_set_ops 0 49830 NULL
157128 +enable_so_response_length_ib_uverbs_ex_query_device_resp_49831 response_length ib_uverbs_ex_query_device_resp 0 49831 NULL
157129 +enable_so_wl12xx_cmd_build_probe_req_fndecl_49835 wl12xx_cmd_build_probe_req fndecl 10-8-6 49835 NULL
157130 +enable_so_retry_count_cts_minstrel_rate_49842 retry_count_cts minstrel_rate 0 49842 NULL
157131 +enable_so_read_endpoint_s2255_dev_49848 read_endpoint s2255_dev 0 49848 NULL
157132 +enable_so_scsi_send_eh_cmnd_fndecl_49849 scsi_send_eh_cmnd fndecl 5 49849 NULL
157133 +enable_so_bytes_per_word_tegra_spi_data_49851 bytes_per_word tegra_spi_data 0 49851 NULL
157134 +enable_so_plen_c4iw_ep_49856 plen c4iw_ep 0 49856 NULL nohasharray
157135 +enable_so_vol_cdev_write_fndecl_49856 vol_cdev_write fndecl 3 49856 &enable_so_plen_c4iw_ep_49856
157136 +enable_so_kempld_gpio_pincount_fndecl_49860 kempld_gpio_pincount fndecl 0 49860 NULL
157137 +enable_so___kfifo_init_fndecl_49861 __kfifo_init fndecl 4 49861 NULL
157138 +enable_so_ctrl_freq_set_fndecl_49865 ctrl_freq_set fndecl 3 49865 NULL
157139 +enable_so_bucket_bits_cache_set_49869 bucket_bits cache_set 0 49869 NULL
157140 +enable_so_record_inode_for_nocow_fndecl_49872 record_inode_for_nocow fndecl 2-3-1 49872 NULL
157141 +enable_so_isdn_add_channels_fndecl_49882 isdn_add_channels fndecl 3 49882 NULL
157142 +enable_so_path_listxattr_fndecl_49894 path_listxattr fndecl 3 49894 NULL
157143 +enable_so_snd_vx_create_fndecl_49895 snd_vx_create fndecl 4 49895 NULL
157144 +enable_so_offset_drm_i915_gem_pwrite_49896 offset drm_i915_gem_pwrite 0 49896 NULL nohasharray
157145 +enable_so_max_sds_rings_netxen_adapter_49896 max_sds_rings netxen_adapter 0 49896 &enable_so_offset_drm_i915_gem_pwrite_49896
157146 +enable_so_block_descriptor_length_scsi_mode_data_49918 block_descriptor_length scsi_mode_data 0 49918 NULL
157147 +enable_so_current_size_ipg_jumbo_49923 current_size ipg_jumbo 0 49923 NULL
157148 +enable_so_trap_addr_sdpcm_shared_49924 trap_addr sdpcm_shared 0 49924 NULL
157149 +enable_so_SyS_select_fndecl_49930 SyS_select fndecl 1 49930 NULL
157150 +enable_so_skd_max_queue_depth_vardecl_skd_main_c_49938 skd_max_queue_depth vardecl_skd_main.c 0 49938 NULL
157151 +enable_so_cx18_prepare_buffer_fndecl_49942 cx18_prepare_buffer fndecl 6-5 49942 NULL
157152 +enable_so_inode_number_squashfs_dir_entry_49943 inode_number squashfs_dir_entry 0 49943 NULL nohasharray
157153 +enable_so_repair_io_failure_fndecl_49943 repair_io_failure fndecl 3-6 49943 &enable_so_inode_number_squashfs_dir_entry_49943
157154 +enable_so_zd_usb_scnprint_id_fndecl_49944 zd_usb_scnprint_id fndecl 3-0 49944 NULL
157155 +enable_so_rcvcnt_elsa_hw_49949 rcvcnt elsa_hw 0 49949 NULL
157156 +enable_so_segsize_rem_dn_scp_49951 segsize_rem dn_scp 0 49951 NULL
157157 +enable_so_smbus_xfer_i2c_algorithm_49954 smbus_xfer i2c_algorithm 0 49954 NULL
157158 +enable_so_zlib_decompress_fndecl_49955 zlib_decompress fndecl 5 49955 NULL
157159 +enable_so_len_lmc_xilinx_control_49960 len lmc_xilinx_control 0 49960 NULL
157160 +enable_so_ceph_inode_set_size_fndecl_49962 ceph_inode_set_size fndecl 2 49962 NULL
157161 +enable_so_pcm512x_find_pll_coeff_fndecl_49973 pcm512x_find_pll_coeff fndecl 2-3 49973 NULL
157162 +enable_so_failure_frame_il3945_tx_resp_49976 failure_frame il3945_tx_resp 0 49976 NULL nohasharray
157163 +enable_so_batadv_hash_new_fndecl_49976 batadv_hash_new fndecl 1 49976 &enable_so_failure_frame_il3945_tx_resp_49976
157164 +enable_so_mms114_write_reg_fndecl_49977 mms114_write_reg fndecl 3 49977 NULL
157165 +enable_so_subtract_range_fndecl_49980 subtract_range fndecl 3 49980 NULL nohasharray
157166 +enable_so_tty_write_room_fndecl_49980 tty_write_room fndecl 0 49980 &enable_so_subtract_range_fndecl_49980
157167 +enable_so_mbox_size_wl1271_49981 mbox_size wl1271 0 49981 NULL
157168 +enable_so___mms114_read_reg_fndecl_49983 __mms114_read_reg fndecl 3 49983 NULL
157169 +enable_so_msr_daio_desc_49987 msr daio_desc 0 49987 NULL
157170 +enable_so_buffer_target_count_pvr2_stream_49996 buffer_target_count pvr2_stream 0 49996 NULL
157171 +enable_so_leafblk_xfs_da_geometry_49997 leafblk xfs_da_geometry 0 49997 NULL
157172 +enable_so_block_isofs_iget5_callback_data_50000 block isofs_iget5_callback_data 0 50000 NULL
157173 +enable_so_ack_failures_tx_result_50002 ack_failures tx_result 0 50002 NULL nohasharray
157174 +enable_so_vbi_v_start_0_saa7134_tvnorm_50002 vbi_v_start_0 saa7134_tvnorm 0 50002 &enable_so_ack_failures_tx_result_50002
157175 +enable_so_tcm_qla2xxx_handle_cmd_fndecl_50016 tcm_qla2xxx_handle_cmd fndecl 4 50016 NULL
157176 +enable_so_ufs_inode_getfrag_fndecl_50019 ufs_inode_getfrag fndecl 2-4 50019 NULL
157177 +enable_so_bl_alloc_init_bio_fndecl_50026 bl_alloc_init_bio fndecl 3 50026 NULL
157178 +enable_so_length_fotg210_qtd_50029 length fotg210_qtd 0 50029 NULL
157179 +enable_so_BlockMultiplierBits_INFTLMediaHeader_50032 BlockMultiplierBits INFTLMediaHeader 0 50032 NULL
157180 +enable_so_depth_zoran_format_50033 depth zoran_format 0 50033 NULL
157181 +enable_so_ima_write_policy_fndecl_50039 ima_write_policy fndecl 3 50039 NULL
157182 +enable_so_esp_alloc_tmp_fndecl_50045 esp_alloc_tmp fndecl 2-3 50045 NULL
157183 +enable_so_pwc_vidioc_fill_fmt_fndecl_50048 pwc_vidioc_fill_fmt fndecl 2-3 50048 NULL
157184 +enable_so_len_nft_userdata_50052 len nft_userdata 0 50052 NULL
157185 +enable_so_skge_rx_get_fndecl_50053 skge_rx_get fndecl 3 50053 NULL
157186 +enable_so_long_retry_limit_orinoco_private_50080 long_retry_limit orinoco_private 0 50080 NULL
157187 +enable_so_sem_nsems_sem_array_50085 sem_nsems sem_array 0 50085 NULL
157188 +enable_so_long_retry_atmel_private_50097 long_retry atmel_private 0 50097 NULL
157189 +enable_so_get_priv_descr_and_size_fndecl_50103 get_priv_descr_and_size fndecl 0 50103 NULL
157190 +enable_so_total_len_splice_desc_50112 total_len splice_desc 0 50112 NULL
157191 +enable_so_fst_rx_dma_complete_fndecl_50118 fst_rx_dma_complete fndecl 3 50118 NULL
157192 +enable_so___cfg80211_roamed_fndecl_50127 __cfg80211_roamed fndecl 4-6 50127 NULL
157193 +enable_so_max_burst_whc_qset_50130 max_burst whc_qset 0 50130 NULL nohasharray
157194 +enable_so_get_current_nat_page_fndecl_50130 get_current_nat_page fndecl 2 50130 &enable_so_max_burst_whc_qset_50130
157195 +enable_so_data_msr_data_50133 data msr_data 0 50133 NULL
157196 +enable_so_tool_peer_db_read_fndecl_50135 tool_peer_db_read fndecl 3 50135 NULL
157197 +enable_so_usb_tx_block_fndecl_50144 usb_tx_block fndecl 3 50144 NULL
157198 +enable_so_vendpoint_pwc_device_50145 vendpoint pwc_device 0 50145 NULL
157199 +enable_so_htotal_drm_display_mode_50148 htotal drm_display_mode 0 50148 NULL
157200 +enable_so_size_ubifs_data_node_50154 size ubifs_data_node 0 50154 NULL nohasharray
157201 +enable_so_nfc_hci_set_param_fndecl_50154 nfc_hci_set_param fndecl 5 50154 &enable_so_size_ubifs_data_node_50154
157202 +enable_so_length_ib_ip_iocb_rsp_50163 length ib_ip_iocb_rsp 0 50163 NULL nohasharray
157203 +enable_so_fops_read_fndecl_50163 fops_read fndecl 3 50163 &enable_so_length_ib_ip_iocb_rsp_50163
157204 +enable_so_videobuf_dma_init_user_locked_fndecl_50165 videobuf_dma_init_user_locked fndecl 4-3 50165 NULL
157205 +enable_so_devid_btrfs_device_50167 devid btrfs_device 0 50167 NULL
157206 +enable_so_rd_buf_size_xilly_channel_50171 rd_buf_size xilly_channel 0 50171 NULL
157207 +enable_so_mclk_rate_wm9081_priv_50176 mclk_rate wm9081_priv 0 50176 NULL
157208 +enable_so_hdr_len_atm_flow_data_50178 hdr_len atm_flow_data 0 50178 NULL
157209 +enable_so_ubi_more_update_data_fndecl_50182 ubi_more_update_data fndecl 4 50182 NULL
157210 +enable_so_nested_cr3_nested_state_50183 nested_cr3 nested_state 0 50183 NULL
157211 +enable_so_gfs2_create_inode_fndecl_50184 gfs2_create_inode fndecl 7 50184 NULL
157212 +enable_so_echo_client_kbrw_fndecl_50193 echo_client_kbrw fndecl 6 50193 NULL
157213 +enable_so___isofs_iget_fndecl_50194 __isofs_iget fndecl 3-2 50194 NULL
157214 +enable_so_s_zmap_blocks_minix_sb_info_50206 s_zmap_blocks minix_sb_info 0 50206 NULL
157215 +enable_so_sched_priority_sched_attr_50220 sched_priority sched_attr 0 50220 NULL nohasharray
157216 +enable_so_get_data_block_fndecl_50220 get_data_block fndecl 2 50220 &enable_so_sched_priority_sched_attr_50220
157217 +enable_so_length_dfw_binrec_50222 length dfw_binrec 0 50222 NULL
157218 +enable_so_vd_ino_nilfs_vdesc_50241 vd_ino nilfs_vdesc 0 50241 NULL
157219 +enable_so_mapping_root_cache_disk_superblock_50249 mapping_root cache_disk_superblock 0 50249 NULL
157220 +enable_so_SyS_getrandom_fndecl_50256 SyS_getrandom fndecl 2 50256 NULL
157221 +enable_so_buf_struct_size_vb2_queue_50266 buf_struct_size vb2_queue 0 50266 NULL
157222 +enable_so_end_range_50270 end range 0 50270 NULL nohasharray
157223 +enable_so_bLength_usb_ss_ep_comp_descriptor_50270 bLength usb_ss_ep_comp_descriptor 0 50270 &enable_so_end_range_50270
157224 +enable_so_vframes_pwc_device_50272 vframes pwc_device 0 50272 NULL
157225 +enable_so_count_defcmd_set_50274 count defcmd_set 0 50274 NULL
157226 +enable_so_hsync_vsync_offset_pulse_width_hi_detailed_pixel_timing_50279 hsync_vsync_offset_pulse_width_hi detailed_pixel_timing 0 50279 NULL
157227 +enable_so_ath6kl_wmi_set_appie_cmd_fndecl_50289 ath6kl_wmi_set_appie_cmd fndecl 5 50289 NULL
157228 +enable_so_wptr_old_amdgpu_ring_50296 wptr_old amdgpu_ring 0 50296 NULL
157229 +enable_so_bitmap_set_bits_fndecl_50299 bitmap_set_bits fndecl 4 50299 NULL
157230 +enable_so___record_changed_new_ref_fndecl_50311 __record_changed_new_ref fndecl 2 50311 NULL
157231 +enable_so_insert_reserved_file_extent_fndecl_50316 insert_reserved_file_extent fndecl 6-3-5-4 50316 NULL
157232 +enable_so___cfg80211_connect_result_fndecl_50317 __cfg80211_connect_result fndecl 4-6 50317 NULL
157233 +enable_so__iwl_dbgfs_pm_params_write_fndecl_50318 _iwl_dbgfs_pm_params_write fndecl 3 50318 NULL
157234 +enable_so_level_guest_walker64_50325 level guest_walker64 0 50325 NULL
157235 +enable_so_ucNumEntries__ATOM_PPLIB_CAC_Leakage_Table_50326 ucNumEntries _ATOM_PPLIB_CAC_Leakage_Table 0 50326 NULL
157236 +enable_so_typ_timing_entry_50327 typ timing_entry 0 50327 NULL
157237 +enable_so_mtu_bna_enet_50333 mtu bna_enet 0 50333 NULL
157238 +enable_so___vmalloc_node_fndecl_50335 __vmalloc_node fndecl 1-2 50335 NULL
157239 +enable_so___copy_from_user_nocache_fndecl_50340 __copy_from_user_nocache fndecl 0-3 50340 NULL
157240 +enable_so_used_skcipher_ctx_50342 used skcipher_ctx 0 50342 NULL
157241 +enable_so_ide_complete_rq_fndecl_50345 ide_complete_rq fndecl 3 50345 NULL
157242 +enable_so_vsync_len_fb_videomode_50347 vsync_len fb_videomode 0 50347 NULL
157243 +enable_so_record_ref_fndecl_50351 record_ref fndecl 3 50351 NULL
157244 +enable_so_nextindex_xtheader_50354 nextindex xtheader 0 50354 NULL
157245 +enable_so_wimax_msg_alloc_fndecl_50364 wimax_msg_alloc fndecl 4 50364 NULL
157246 +enable_so_xen_hvm_setup_msi_irqs_fndecl_50365 xen_hvm_setup_msi_irqs fndecl 2 50365 NULL
157247 +enable_so_gfs2_check_blk_type_fndecl_50367 gfs2_check_blk_type fndecl 2 50367 NULL
157248 +enable_so_NumberOfReferrals_smb_com_transaction_get_dfs_refer_rsp_50387 NumberOfReferrals smb_com_transaction_get_dfs_refer_rsp 0 50387 NULL
157249 +enable_so_init_urbs_fndecl_50408 init_urbs fndecl 2-4-5 50408 NULL nohasharray
157250 +enable_so_hash_ipmark4_expire_fndecl_50408 hash_ipmark4_expire fndecl 4 50408 &enable_so_init_urbs_fndecl_50408
157251 +enable_so_size_uvc_clock_50418 size uvc_clock 0 50418 NULL
157252 +enable_so_length_acpi_srat_mem_affinity_50419 length acpi_srat_mem_affinity 0 50419 NULL
157253 +enable_so___initramfs_size_vardecl_50420 __initramfs_size vardecl 0 50420 NULL
157254 +enable_so_btrfs_check_dir_item_collision_fndecl_50426 btrfs_check_dir_item_collision fndecl 2 50426 NULL
157255 +enable_so_sd_max_rg_data_gfs2_sbd_50430 sd_max_rg_data gfs2_sbd 0 50430 NULL
157256 +enable_so___vcc_connect_fndecl_50431 __vcc_connect fndecl 4-3 50431 NULL
157257 +enable_so_ext3_trim_all_free_fndecl_50434 ext3_trim_all_free fndecl 0-2 50434 NULL nohasharray
157258 +enable_so_nilfs_gccache_submit_read_data_fndecl_50434 nilfs_gccache_submit_read_data fndecl 3-4 50434 &enable_so_ext3_trim_all_free_fndecl_50434
157259 +enable_so_sbp_count_se_tpg_luns_fndecl_50444 sbp_count_se_tpg_luns fndecl 0 50444 NULL
157260 +enable_so_il_dbgfs_sram_write_fndecl_50445 il_dbgfs_sram_write fndecl 3 50445 NULL
157261 +enable_so_nfsd4_encode_fattr_to_buf_fndecl_50449 nfsd4_encode_fattr_to_buf fndecl 2 50449 NULL nohasharray
157262 +enable_so_nr_phys_segments_request_50449 nr_phys_segments request 0 50449 &enable_so_nfsd4_encode_fattr_to_buf_fndecl_50449
157263 +enable_so_nfsd_drc_mem_used_vardecl_50456 nfsd_drc_mem_used vardecl 0 50456 NULL
157264 +enable_so_extra_tx_headroom_ieee802154_hw_50457 extra_tx_headroom ieee802154_hw 0 50457 NULL
157265 +enable_so_iscsi_iolen_cxgb4_lld_info_50467 iscsi_iolen cxgb4_lld_info 0 50467 NULL
157266 +enable_so___ath6kl_wmi_send_mgmt_cmd_fndecl_50472 __ath6kl_wmi_send_mgmt_cmd fndecl 7 50472 NULL
157267 +enable_so_buf_size_dmatest_params_50477 buf_size dmatest_params 0 50477 NULL
157268 +enable_so_gfs2_next_unreserved_block_fndecl_50480 gfs2_next_unreserved_block fndecl 0-2 50480 NULL
157269 +enable_so_len_fuse_ioctl_iovec_50481 len fuse_ioctl_iovec 0 50481 NULL
157270 +enable_so_consume_va_vmci_qp_page_file_info_50487 consume_va vmci_qp_page_file_info 0 50487 NULL
157271 +enable_so_udf_new_block_fndecl_50500 udf_new_block fndecl 4 50500 NULL
157272 +enable_so_lpfc_idiag_extacc_write_fndecl_50501 lpfc_idiag_extacc_write fndecl 3 50501 NULL
157273 +enable_so_bio_clone_range_fndecl_50502 bio_clone_range fndecl 2-3 50502 NULL
157274 +enable_so_mwifiex_read_data_sync_fndecl_50504 mwifiex_read_data_sync fndecl 3 50504 NULL
157275 +enable_so_readahead_tree_block_fndecl_50505 readahead_tree_block fndecl 2 50505 NULL
157276 +enable_so_listxattr_inode_operations_50507 listxattr inode_operations 0 50507 NULL
157277 +enable_so_i2c_hid_output_report_fndecl_50508 i2c_hid_output_report fndecl 3 50508 NULL
157278 +enable_so_t4vf_pktgl_to_skb_fndecl_50510 t4vf_pktgl_to_skb fndecl 3 50510 NULL
157279 +enable_so_adfs_fplus_read_fndecl_50514 adfs_fplus_read fndecl 2 50514 NULL nohasharray
157280 +enable_so_usb_maxpacket_fndecl_50514 usb_maxpacket fndecl 0 50514 &enable_so_adfs_fplus_read_fndecl_50514
157281 +enable_so_len_nfs3_mkdirargs_50515 len nfs3_mkdirargs 0 50515 NULL
157282 +enable_so_nframes_cdrom_read_audio_50517 nframes cdrom_read_audio 0 50517 NULL
157283 +enable_so_OSDSetBlock_fndecl_50521 OSDSetBlock fndecl 2-4 50521 NULL
157284 +enable_so_ohci_urb_dequeue_fndecl_50529 ohci_urb_dequeue fndecl 3 50529 NULL
157285 +enable_so__zd_iowrite32v_async_locked_fndecl_50537 _zd_iowrite32v_async_locked fndecl 3 50537 NULL
157286 +enable_so_get_nodes_fndecl_50551 get_nodes fndecl 3 50551 NULL
157287 +enable_so_spi_rd8_fndecl_50555 spi_rd8 fndecl 0 50555 NULL
157288 +enable_so_frag_threshold_wiphy_50556 frag_threshold wiphy 0 50556 NULL
157289 +enable_so___blkdev_issue_zeroout_fndecl_50559 __blkdev_issue_zeroout fndecl 3-2 50559 NULL
157290 +enable_so_gen_pool_create_fndecl_50571 gen_pool_create fndecl 1 50571 NULL
157291 +enable_so_W6692_empty_fifo_fndecl_50573 W6692_empty_fifo fndecl 2 50573 NULL
157292 +enable_so__osd_req_alist_size_fndecl_50577 _osd_req_alist_size fndecl 0 50577 NULL nohasharray
157293 +enable_so_hdr_len_ib_mad_send_buf_50577 hdr_len ib_mad_send_buf 0 50577 &enable_so__osd_req_alist_size_fndecl_50577
157294 +enable_so_length_fuse_page_desc_50581 length fuse_page_desc 0 50581 NULL
157295 +enable_so_do_write_kmem_fndecl_50584 do_write_kmem fndecl 1-3 50584 NULL
157296 +enable_so_do_huge_pmd_wp_page_fallback_fndecl_50585 do_huge_pmd_wp_page_fallback fndecl 7 50585 NULL
157297 +enable_so_off2_xad_50592 off2 xad 0 50592 NULL
157298 +enable_so_pwrite_dvb_ringbuffer_50594 pwrite dvb_ringbuffer 0 50594 NULL
157299 +enable_so_count_slgt_desc_50607 count slgt_desc 0 50607 NULL
157300 +enable_so_len_fuse_notify_inval_inode_out_50619 len fuse_notify_inval_inode_out 0 50619 NULL
157301 +enable_so_zr364xx_fillbuff_fndecl_50623 zr364xx_fillbuff fndecl 3 50623 NULL nohasharray
157302 +enable_so_cb_mirror_cnt_exofs_dt_data_map_50623 cb_mirror_cnt exofs_dt_data_map 0 50623 &enable_so_zr364xx_fillbuff_fndecl_50623
157303 +enable_so___kfifo_to_user_r_fndecl_50624 __kfifo_to_user_r fndecl 5-3 50624 NULL
157304 +enable_so_phys_port_cnt_ib_device_50625 phys_port_cnt ib_device 0 50625 NULL
157305 +enable_so_pglen_nfs3_readlinkargs_50630 pglen nfs3_readlinkargs 0 50630 NULL nohasharray
157306 +enable_so_data_len_pmcraid_hcam_hdr_50630 data_len pmcraid_hcam_hdr 0 50630 &enable_so_pglen_nfs3_readlinkargs_50630
157307 +enable_so_minimum_acpi_address64_attribute_50631 minimum acpi_address64_attribute 0 50631 NULL
157308 +enable_so_l2tp_ip6_recvmsg_fndecl_50633 l2tp_ip6_recvmsg fndecl 3 50633 NULL
157309 +enable_so_tomoyo_truncate_fndecl_50642 tomoyo_truncate fndecl 0 50642 NULL
157310 +enable_so_usb_hcd_giveback_urb_fndecl_50649 usb_hcd_giveback_urb fndecl 3 50649 NULL
157311 +enable_so_xor_sources_dmatest_params_50653 xor_sources dmatest_params 0 50653 NULL
157312 +enable_so_recalc_rate_clk_ops_50655 recalc_rate clk_ops 0 50655 NULL
157313 +enable_so_create_bounce_buffer_fndecl_50656 create_bounce_buffer fndecl 3 50656 NULL
157314 +enable_so_ath9k_hw_ar9003_dump_eeprom_fndecl_50663 ath9k_hw_ar9003_dump_eeprom fndecl 4-5 50663 NULL
157315 +enable_so_enc_pools_release_free_pages_fndecl_50669 enc_pools_release_free_pages fndecl 1 50669 NULL
157316 +enable_so_i915_gem_alloc_context_obj_fndecl_50671 i915_gem_alloc_context_obj fndecl 2 50671 NULL
157317 +enable_so_nclips_bttv_overlay_50673 nclips bttv_overlay 0 50673 NULL
157318 +enable_so_size_snd_util_memblk_50679 size snd_util_memblk 0 50679 NULL
157319 +enable_so_count_dm_io_region_50683 count dm_io_region 0 50683 NULL
157320 +enable_so_sr_offset_nfs42_seek_res_50684 sr_offset nfs42_seek_res 0 50684 NULL nohasharray
157321 +enable_so_alloc_ring_fndecl_50684 alloc_ring fndecl 2-4 50684 &enable_so_sr_offset_nfs42_seek_res_50684
157322 +enable_so_hv_mem_hot_add_fndecl_50687 hv_mem_hot_add fndecl 1 50687 NULL
157323 +enable_so_dm_bm_read_try_lock_fndecl_50688 dm_bm_read_try_lock fndecl 2 50688 NULL
157324 +enable_so_ftrace_pid_write_fndecl_50701 ftrace_pid_write fndecl 3 50701 NULL
157325 +enable_so___find_rev_next_bit_fndecl_50712 __find_rev_next_bit fndecl 0-3-2 50712 NULL
157326 +enable_so_back_xfs_da3_icnode_hdr_50715 back xfs_da3_icnode_hdr 0 50715 NULL
157327 +enable_so_num_lbufq_entries_ql3_adapter_50721 num_lbufq_entries ql3_adapter 0 50721 NULL
157328 +enable_so_mpdu_header_off_wcn36xx_pdu_50723 mpdu_header_off wcn36xx_pdu 0 50723 NULL
157329 +enable_so_i915_gem_alloc_object_fndecl_50728 i915_gem_alloc_object fndecl 2 50728 NULL
157330 +enable_so_max_table_count_acpi_table_list_50733 max_table_count acpi_table_list 0 50733 NULL
157331 +enable_so_max_mr_size_ib_device_attr_50735 max_mr_size ib_device_attr 0 50735 NULL
157332 +enable_so_MaximumDataTransferSizeInBlocks_DAC960_V2_ControllerInfo_50742 MaximumDataTransferSizeInBlocks DAC960_V2_ControllerInfo 0 50742 NULL nohasharray
157333 +enable_so_rx_count_st_data_s_50742 rx_count st_data_s 0 50742 &enable_so_MaximumDataTransferSizeInBlocks_DAC960_V2_ControllerInfo_50742
157334 +enable_so_opt_flen_ipv6_txoptions_50747 opt_flen ipv6_txoptions 0 50747 NULL
157335 +enable_so_i_dataoffset_romfs_inode_info_50755 i_dataoffset romfs_inode_info 0 50755 NULL
157336 +enable_so_cluster_bits_msdos_sb_info_50763 cluster_bits msdos_sb_info 0 50763 NULL
157337 +enable_so_hpfs_get_sector_fndecl_50776 hpfs_get_sector fndecl 2 50776 NULL
157338 +enable_so_test_add_free_space_entry_fndecl_50777 test_add_free_space_entry fndecl 2-3 50777 NULL
157339 +enable_so_vmap_fndecl_50778 vmap fndecl 2 50778 NULL
157340 +enable_so_readdir_nfs_rpc_ops_50783 readdir nfs_rpc_ops 0 50783 NULL
157341 +enable_so_remove_pmkid_fndecl_50793 remove_pmkid fndecl 4 50793 NULL
157342 +enable_so_len_rfd_50801 len rfd 0 50801 NULL
157343 +enable_so_persistent_ram_buffer_map_fndecl_50803 persistent_ram_buffer_map fndecl 1-2 50803 NULL
157344 +enable_so_malloc_size__BIG_IOCTL_Command_struct_50805 malloc_size _BIG_IOCTL_Command_struct 0 50805 NULL
157345 +enable_so_cmdQueueSize_sis_video_info_50807 cmdQueueSize sis_video_info 0 50807 NULL nohasharray
157346 +enable_so_argslen_svc_deferred_req_50807 argslen svc_deferred_req 0 50807 &enable_so_cmdQueueSize_sis_video_info_50807
157347 +enable_so_ldt_tss_segment_16_50811 ldt tss_segment_16 0 50811 NULL
157348 +enable_so_hpfs_map_dnode_fndecl_50813 hpfs_map_dnode fndecl 2 50813 NULL nohasharray
157349 +enable_so_ocfs2_pages_per_cluster_fndecl_50813 ocfs2_pages_per_cluster fndecl 0 50813 &enable_so_hpfs_map_dnode_fndecl_50813
157350 +enable_so_clkrc_ov7670_info_50815 clkrc ov7670_info 0 50815 NULL
157351 +enable_so_sys_migrate_pages_fndecl_50818 sys_migrate_pages fndecl 2 50818 NULL
157352 +enable_so_get_priv_size_fndecl_50823 get_priv_size fndecl 0-1 50823 NULL
157353 +enable_so_xdr_read_pages_fndecl_50824 xdr_read_pages fndecl 2 50824 NULL
157354 +enable_so_t_tinc_data_rem_rds_tcp_connection_50828 t_tinc_data_rem rds_tcp_connection 0 50828 NULL
157355 +enable_so_bssid_info_count_ndis_80211_pmkid_50829 bssid_info_count ndis_80211_pmkid 0 50829 NULL
157356 +enable_so_filelayout_get_dserver_offset_fndecl_50833 filelayout_get_dserver_offset fndecl 0-2 50833 NULL
157357 +enable_so_security_inode_listsecurity_fndecl_50839 security_inode_listsecurity fndecl 0 50839 NULL
157358 +enable_so_m_rsumlevels_xfs_mount_50843 m_rsumlevels xfs_mount 0 50843 NULL
157359 +enable_so_exynos3250_jpeg_compressed_size_fndecl_50845 exynos3250_jpeg_compressed_size fndecl 0 50845 NULL
157360 +enable_so__brk_end_vardecl_50849 _brk_end vardecl 0 50849 NULL
157361 +enable_so_journal_read_transaction_fndecl_50853 journal_read_transaction fndecl 2 50853 NULL
157362 +enable_so_alg_key_len_xfrm_algo_auth_50871 alg_key_len xfrm_algo_auth 0 50871 NULL
157363 +enable_so_mtu_adj_ipvl_dev_50874 mtu_adj ipvl_dev 0 50874 NULL
157364 +enable_so_qib_read_kreg64_fndecl_50881 qib_read_kreg64 fndecl 0 50881 NULL
157365 +enable_so_get_ramdisk_image_fndecl_50888 get_ramdisk_image fndecl 0 50888 NULL
157366 +enable_so_ie_len_ieee80211_if_ibss_50890 ie_len ieee80211_if_ibss 0 50890 NULL nohasharray
157367 +enable_so_size_t4_sq_50890 size t4_sq 0 50890 &enable_so_ie_len_ieee80211_if_ibss_50890 nohasharray
157368 +enable_so_pkt_add_fndecl_50890 pkt_add fndecl 3 50890 &enable_so_size_t4_sq_50890
157369 +enable_so_netlbl_catmap_walkrng_fndecl_50910 netlbl_catmap_walkrng fndecl 2 50910 NULL
157370 +enable_so_exofs_read_kern_fndecl_50914 exofs_read_kern fndecl 6 50914 NULL
157371 +enable_so_vnet_hdr_sz_tun_struct_50916 vnet_hdr_sz tun_struct 0 50916 NULL
157372 +enable_so___get_order_fndecl_50924 __get_order fndecl 0 50924 NULL
157373 +enable_so_num_chunks_drm_radeon_cs_50925 num_chunks drm_radeon_cs 0 50925 NULL
157374 +enable_so___spi_async_fndecl_50927 __spi_async fndecl 0 50927 NULL
157375 +enable_so_j_start_reiserfs_journal_50930 j_start reiserfs_journal 0 50930 NULL
157376 +enable_so_ssidLen_BSSListRid_50931 ssidLen BSSListRid 0 50931 NULL nohasharray
157377 +enable_so_ReplyFrameSize_mpt2sas_facts_50931 ReplyFrameSize mpt2sas_facts 0 50931 &enable_so_ssidLen_BSSListRid_50931
157378 +enable_so_efs_map_block_fndecl_50932 efs_map_block fndecl 0-2 50932 NULL
157379 +enable_so_sge_pktshift_cxgb4_lld_info_50935 sge_pktshift cxgb4_lld_info 0 50935 NULL
157380 +enable_so_dw210x_op_rw_fndecl_50936 dw210x_op_rw fndecl 6 50936 NULL
157381 +enable_so_gen_pool_add_virt_fndecl_50938 gen_pool_add_virt fndecl 2-4 50938 NULL
157382 +enable_so_wil_rx_init_fndecl_50939 wil_rx_init fndecl 2 50939 NULL
157383 +enable_so_ubi_start_update_fndecl_50948 ubi_start_update fndecl 3 50948 NULL
157384 +enable_so_level_backref_node_50950 level backref_node 0 50950 NULL
157385 +enable_so_sync_key_len_pvr2_ioread_50952 sync_key_len pvr2_ioread 0 50952 NULL
157386 +enable_so_iser_prepare_write_cmd_fndecl_50953 iser_prepare_write_cmd fndecl 2 50953 NULL
157387 +enable_so_nsegments_dsp_module_desc_50965 nsegments dsp_module_desc 0 50965 NULL
157388 +enable_so_cma_bitmap_aligned_mask_fndecl_50977 cma_bitmap_aligned_mask fndecl 0-2 50977 NULL nohasharray
157389 +enable_so_setkey_unaligned_fndecl_50977 setkey_unaligned fndecl 3 50977 &enable_so_cma_bitmap_aligned_mask_fndecl_50977
157390 +enable_so_n_hdlc_tty_receive_fndecl_50980 n_hdlc_tty_receive fndecl 4 50980 NULL
157391 +enable_so_seq_start_offset_iscsi_cmd_50983 seq_start_offset iscsi_cmd 0 50983 NULL
157392 +enable_so_usif_ioctl_fndecl_50986 usif_ioctl fndecl 3 50986 NULL
157393 +enable_so_first_burst_len_iscsi_cmd_50987 first_burst_len iscsi_cmd 0 50987 NULL
157394 +enable_so_do_get_mempolicy_fndecl_50990 do_get_mempolicy fndecl 3 50990 NULL
157395 +enable_so_sys_semop_fndecl_50994 sys_semop fndecl 3 50994 NULL
157396 +enable_so_resize_size_resize_parms_51005 resize_size resize_parms 0 51005 NULL
157397 +enable_so_retry_vardecl_dev_c_51007 retry vardecl_dev.c 0 51007 NULL nohasharray
157398 +enable_so_ufs_frag_map_fndecl_51007 ufs_frag_map fndecl 0 51007 &enable_so_retry_vardecl_dev_c_51007
157399 +enable_so_vmx_set_tss_addr_fndecl_51020 vmx_set_tss_addr fndecl 2 51020 NULL
157400 +enable_so_get_std_timing_fndecl_51022 get_std_timing fndecl 0 51022 NULL
157401 +enable_so_num_of_queues_il_cfg_51023 num_of_queues il_cfg 0 51023 NULL
157402 +enable_so_img_sram_size_fw_hdr_51027 img_sram_size fw_hdr 0 51027 NULL
157403 +enable_so_ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_fndecl_51032 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries fndecl 3 51032 NULL
157404 +enable_so_buffer_used_snd_pcm_oss_runtime_51041 buffer_used snd_pcm_oss_runtime 0 51041 NULL
157405 +enable_so_cpu_count_MPT2SAS_ADAPTER_51044 cpu_count MPT2SAS_ADAPTER 0 51044 NULL
157406 +enable_so_int_proc_write_fndecl_51045 int_proc_write fndecl 3 51045 NULL
157407 +enable_so_setattr_inode_operations_51054 setattr inode_operations 0 51054 NULL
157408 +enable_so_vfs_truncate_fndecl_51056 vfs_truncate fndecl 2 51056 NULL nohasharray
157409 +enable_so_cl_req_alloc_fndecl_51056 cl_req_alloc fndecl 4 51056 &enable_so_vfs_truncate_fndecl_51056
157410 +enable_so_xfs_trans_log_efi_extent_fndecl_51058 xfs_trans_log_efi_extent fndecl 3-4 51058 NULL nohasharray
157411 +enable_so_romfs_dev_strnlen_fndecl_51058 romfs_dev_strnlen fndecl 2-3 51058 &enable_so_xfs_trans_log_efi_extent_fndecl_51058
157412 +enable_so_crtc_vtotal_drm_display_mode_51070 crtc_vtotal drm_display_mode 0 51070 NULL
157413 +enable_so_fbmem_len_viafb_dev_51071 fbmem_len viafb_dev 0 51071 NULL
157414 +enable_so_datablob_format_fndecl_51072 datablob_format fndecl 2 51072 NULL
157415 +enable_so_size_p9_wstat_51083 size p9_wstat 0 51083 NULL
157416 +enable_so_td_end_whc_qset_51089 td_end whc_qset 0 51089 NULL nohasharray
157417 +enable_so_pp_write_fndecl_51089 pp_write fndecl 3 51089 &enable_so_td_end_whc_qset_51089
157418 +enable_so_namelen_hpfs_dirent_51099 namelen hpfs_dirent 0 51099 NULL
157419 +enable_so_ocfs2_file_llseek_fndecl_51102 ocfs2_file_llseek fndecl 2 51102 NULL
157420 +enable_so_copy_chunked_from_user_fndecl_51106 copy_chunked_from_user fndecl 3 51106 NULL
157421 +enable_so_memblock_virt_alloc_internal_fndecl_51107 memblock_virt_alloc_internal fndecl 2-1 51107 NULL nohasharray
157422 +enable_so_bu_blocks_ocfs2_xattr_bucket_51107 bu_blocks ocfs2_xattr_bucket 0 51107 &enable_so_memblock_virt_alloc_internal_fndecl_51107
157423 +enable_so_page_order_btree_keys_51110 page_order btree_keys 0 51110 NULL
157424 +enable_so_fbmem_free_viafb_par_51115 fbmem_free viafb_par 0 51115 NULL
157425 +enable_so_len_garp_attr_hdr_51119 len garp_attr_hdr 0 51119 NULL
157426 +enable_so_ls_num_slots_dlm_ls_51120 ls_num_slots dlm_ls 0 51120 NULL
157427 +enable_so_new_read_fndecl_51123 new_read fndecl 2 51123 NULL
157428 +enable_so_adau1373_set_pll_fndecl_51130 adau1373_set_pll fndecl 4-5 51130 NULL nohasharray
157429 +enable_so_alignmask_blkcipher_walk_51130 alignmask blkcipher_walk 0 51130 &enable_so_adau1373_set_pll_fndecl_51130
157430 +enable_so_offset_aperture_range_51131 offset aperture_range 0 51131 NULL nohasharray
157431 +enable_so_igb_pci_enable_sriov_fndecl_51131 igb_pci_enable_sriov fndecl 2 51131 &enable_so_offset_aperture_range_51131
157432 +enable_so_wqe_cnt_mlx4_ib_wq_51135 wqe_cnt mlx4_ib_wq 0 51135 NULL
157433 +enable_so_cachelsz_ath_common_51138 cachelsz ath_common 0 51138 NULL
157434 +enable_so_length_sky2_status_le_51139 length sky2_status_le 0 51139 NULL
157435 +enable_so_arg_start_mm_struct_51140 arg_start mm_struct 0 51140 NULL nohasharray
157436 +enable_so_fm_send_cmd_fndecl_51140 fm_send_cmd fndecl 5 51140 &enable_so_arg_start_mm_struct_51140
157437 +enable_so_num_rx_bnad_51141 num_rx bnad 0 51141 NULL
157438 +enable_so_mss_net_lro_desc_51151 mss net_lro_desc 0 51151 NULL
157439 +enable_so_i2c_master_send_fndecl_51152 i2c_master_send fndecl 3 51152 NULL
157440 +enable_so_sdio_readb_fndecl_51153 sdio_readb fndecl 0 51153 NULL
157441 +enable_so_nfs_idmap_get_key_fndecl_51155 nfs_idmap_get_key fndecl 0-2 51155 NULL
157442 +enable_so_bytes_per_pixel_osd_info_51169 bytes_per_pixel osd_info 0 51169 NULL nohasharray
157443 +enable_so_kvm_read_guest_cached_fndecl_51169 kvm_read_guest_cached fndecl 4 51169 &enable_so_bytes_per_pixel_osd_info_51169
157444 +enable_so_raid10_takeover_raid0_fndecl_51171 raid10_takeover_raid0 fndecl 3-2 51171 NULL
157445 +enable_so_v4l_stk_read_fndecl_51179 v4l_stk_read fndecl 3 51179 NULL
157446 +enable_so_do_surface_dirty_sou_fndecl_51181 do_surface_dirty_sou fndecl 7 51181 NULL
157447 +enable_so_prism2_info_hostscanresults_fndecl_51194 prism2_info_hostscanresults fndecl 3 51194 NULL
157448 +enable_so_mlx5_ib_invalidate_range_fndecl_51195 mlx5_ib_invalidate_range fndecl 2 51195 NULL
157449 +enable_so_btrfs_extent_same_fndecl_51200 btrfs_extent_same fndecl 3-2-5 51200 NULL
157450 +enable_so_max_num_vringh_kiov_51202 max_num vringh_kiov 0 51202 NULL
157451 +enable_so_cirrus_ttm_tt_create_fndecl_51204 cirrus_ttm_tt_create fndecl 2 51204 NULL
157452 +enable_so_vcc_recvmsg_fndecl_51205 vcc_recvmsg fndecl 3 51205 NULL
157453 +enable_so_kvm_clear_guest_fndecl_51207 kvm_clear_guest fndecl 2-3 51207 NULL
157454 +enable_so_phys_vram_area_51217 phys vram_area 0 51217 NULL
157455 +enable_so_vsi_oltext_vxfs_sb_info_51222 vsi_oltext vxfs_sb_info 0 51222 NULL
157456 +enable_so_addr_e820entry_51224 addr e820entry 0 51224 NULL
157457 +enable_so_mem_cgroup_count_precharge_pte_range_fndecl_51229 mem_cgroup_count_precharge_pte_range fndecl 2 51229 NULL
157458 +enable_so_rt2x00debug_write_rf_fndecl_51232 rt2x00debug_write_rf fndecl 3 51232 NULL
157459 +enable_so_stb0899_read_regs_fndecl_51234 stb0899_read_regs fndecl 4 51234 NULL
157460 +enable_so_proc_set_size_fndecl_51237 proc_set_size fndecl 2 51237 NULL
157461 +enable_so_get_ucode_user_fndecl_51241 get_ucode_user fndecl 3 51241 NULL
157462 +enable_so_imxdma_prep_dma_cyclic_fndecl_51257 imxdma_prep_dma_cyclic fndecl 4-3 51257 NULL
157463 +enable_so_maxdatafieldsize_vnic_fc_config_51275 maxdatafieldsize vnic_fc_config 0 51275 NULL
157464 +enable_so_ceph_decode_16_fndecl_51276 ceph_decode_16 fndecl 0 51276 NULL
157465 +enable_so_ext3_new_block_fndecl_51283 ext3_new_block fndecl 3 51283 NULL
157466 +enable_so_xfs_rtallocate_range_fndecl_51292 xfs_rtallocate_range fndecl 3-4 51292 NULL nohasharray
157467 +enable_so_osd_req_list_partition_collections_fndecl_51292 osd_req_list_partition_collections fndecl 5 51292 &enable_so_xfs_rtallocate_range_fndecl_51292
157468 +enable_so_first_burst_iscsi_bus_flash_session_51294 first_burst iscsi_bus_flash_session 0 51294 NULL
157469 +enable_so_ramoops_read_kmsg_hdr_fndecl_51300 ramoops_read_kmsg_hdr fndecl 0 51300 NULL
157470 +enable_so_vmci_qp_broker_set_page_store_fndecl_51303 vmci_qp_broker_set_page_store fndecl 2-3 51303 NULL
157471 +enable_so_mthca_alloc_icm_table_fndecl_51311 mthca_alloc_icm_table fndecl 3-4 51311 NULL
157472 +enable_so__ipw_read_reg32_fndecl_51318 _ipw_read_reg32 fndecl 0 51318 NULL
157473 +enable_so_drv_sds_rings_qlcnic_adapter_51319 drv_sds_rings qlcnic_adapter 0 51319 NULL
157474 +enable_so_sync_dma_snd_usb_endpoint_51333 sync_dma snd_usb_endpoint 0 51333 NULL
157475 +enable_so_counter_vardecl_inode_c_51334 counter vardecl_inode.c 0 51334 NULL
157476 +enable_so_s_first_meta_bg_ext4_super_block_51338 s_first_meta_bg ext4_super_block 0 51338 NULL
157477 +enable_so_zd_mac_rx_fndecl_51339 zd_mac_rx fndecl 3 51339 NULL nohasharray
157478 +enable_so_C_SYSC_pselect6_fndecl_51339 C_SYSC_pselect6 fndecl 1 51339 &enable_so_zd_mac_rx_fndecl_51339
157479 +enable_so_size_seq_file_51354 size seq_file 0 51354 NULL
157480 +enable_so_get_frame_size_fndecl_51358 get_frame_size fndecl 0 51358 NULL
157481 +enable_so_la_size_sect_drbd_md_51365 la_size_sect drbd_md 0 51365 NULL
157482 +enable_so_uvc_try_frame_interval_fndecl_51372 uvc_try_frame_interval fndecl 0-2 51372 NULL nohasharray
157483 +enable_so_sb_logblocks_xfs_sb_51372 sb_logblocks xfs_sb 0 51372 &enable_so_uvc_try_frame_interval_fndecl_51372
157484 +enable_so_ucma_query_path_fndecl_51378 ucma_query_path fndecl 3 51378 NULL
157485 +enable_so_num_queues_virtio_scsi_51387 num_queues virtio_scsi 0 51387 NULL
157486 +enable_so_size_hbucket_51397 size hbucket 0 51397 NULL
157487 +enable_so_kmemleak_alloc_recursive_fndecl_51410 kmemleak_alloc_recursive fndecl 2 51410 NULL
157488 +enable_so_max_header_size_irnet_socket_51423 max_header_size irnet_socket 0 51423 NULL
157489 +enable_so_num_rx_queues_ixgbevf_adapter_51428 num_rx_queues ixgbevf_adapter 0 51428 NULL
157490 +enable_so_size_omap3isp_ccdc_lsc_config_51438 size omap3isp_ccdc_lsc_config 0 51438 NULL
157491 +enable_so_max_cmds_ipr_ioa_cfg_51439 max_cmds ipr_ioa_cfg 0 51439 NULL
157492 +enable_so_rtsThres_ConfigRid_51444 rtsThres ConfigRid 0 51444 NULL
157493 +enable_so_xfs_free_file_space_fndecl_51452 xfs_free_file_space fndecl 2-3 51452 NULL
157494 +enable_so_size_gf100_gr_priv_51459 size gf100_gr_priv 0 51459 NULL
157495 +enable_so_orig_offset_iscsi_seq_51477 orig_offset iscsi_seq 0 51477 NULL
157496 +enable_so_write_ec_fiforeg_fndecl_51478 write_ec_fiforeg fndecl 2 51478 NULL
157497 +enable_so_compat_sys_rt_sigpending_fndecl_51480 compat_sys_rt_sigpending fndecl 2 51480 NULL
157498 +enable_so_finish_urb_fndecl_51484 finish_urb fndecl 3 51484 NULL
157499 +enable_so_num_vectors_mic_irq_info_51485 num_vectors mic_irq_info 0 51485 NULL
157500 +enable_so_xlog_alloc_log_fndecl_51486 xlog_alloc_log fndecl 4-3 51486 NULL
157501 +enable_so_log_blocksize_f2fs_super_block_51487 log_blocksize f2fs_super_block 0 51487 NULL
157502 +enable_so_read_rbu_packet_size_fndecl_51488 read_rbu_packet_size fndecl 6 51488 NULL
157503 +enable_so_height_drm_radeon_tex_image_51500 height drm_radeon_tex_image 0 51500 NULL
157504 +enable_so__rtw_malloc_fndecl_51515 _rtw_malloc fndecl 1 51515 NULL
157505 +enable_so_size_fb_pixmap_51528 size fb_pixmap 0 51528 NULL
157506 +enable_so_write_file_bool_fndecl_51542 write_file_bool fndecl 3 51542 NULL
157507 +enable_so_len_hfa384x_info_frame_51543 len hfa384x_info_frame 0 51543 NULL
157508 +enable_so_fifo_alloc_fndecl_51546 fifo_alloc fndecl 1 51546 NULL
157509 +enable_so_buffer_size_snd_emu10k1_fx8010_pcm_rec_51548 buffer_size snd_emu10k1_fx8010_pcm_rec 0 51548 NULL
157510 +enable_so_rcv_buf_bytes_vardecl_usbatm_c_51558 rcv_buf_bytes vardecl_usbatm.c 0 51558 NULL
157511 +enable_so_residual_len_vscsiif_response_51559 residual_len vscsiif_response 0 51559 NULL
157512 +enable_so_netxen_nic_change_mtu_fndecl_51573 netxen_nic_change_mtu fndecl 2 51573 NULL
157513 +enable_so_ino_f2fs_dir_entry_51578 ino f2fs_dir_entry 0 51578 NULL
157514 +enable_so_i_blkno_ocfs2_dinode_51582 i_blkno ocfs2_dinode 0 51582 NULL nohasharray
157515 +enable_so_persistent_ram_old_size_fndecl_51582 persistent_ram_old_size fndecl 0 51582 &enable_so_i_blkno_ocfs2_dinode_51582
157516 +enable_so_octeon_download_firmware_fndecl_51583 octeon_download_firmware fndecl 3 51583 NULL
157517 +enable_so_aggr_recv_addba_req_evt_fndecl_51590 aggr_recv_addba_req_evt fndecl 4 51590 NULL
157518 +enable_so_rx_buf_missing_hso_net_51595 rx_buf_missing hso_net 0 51595 NULL
157519 +enable_so_parser_init_guts_fndecl_51597 parser_init_guts fndecl 2 51597 NULL
157520 +enable_so_klsi_105_prepare_write_buffer_fndecl_51599 klsi_105_prepare_write_buffer fndecl 3 51599 NULL nohasharray
157521 +enable_so_af9013_wr_regs_i2c_fndecl_51599 af9013_wr_regs_i2c fndecl 5 51599 &enable_so_klsi_105_prepare_write_buffer_fndecl_51599 nohasharray
157522 +enable_so_ep_count_bytes_remain_fndecl_51599 ep_count_bytes_remain fndecl 0 51599 &enable_so_af9013_wr_regs_i2c_fndecl_51599
157523 +enable_so_receive_mergeable_fndecl_51601 receive_mergeable fndecl 5 51601 NULL
157524 +enable_so_vfp_get_fndecl_51605 vfp_get fndecl 3-4 51605 NULL
157525 +enable_so_data_transfer_length_vmscsi_request_51616 data_transfer_length vmscsi_request 0 51616 NULL nohasharray
157526 +enable_so_cur_vfio_pci_fill_info_51616 cur vfio_pci_fill_info 0 51616 &enable_so_data_transfer_length_vmscsi_request_51616
157527 +enable_so_ioc_plen1_obd_ioctl_data_51625 ioc_plen1 obd_ioctl_data 0 51625 NULL
157528 +enable_so_cifs_send_async_read_fndecl_51630 cifs_send_async_read fndecl 2 51630 NULL
157529 +enable_so_m25p80_read_fndecl_51631 m25p80_read fndecl 3 51631 NULL
157530 +enable_so_nodesize_btrfs_root_51633 nodesize btrfs_root 0 51633 NULL nohasharray
157531 +enable_so_wil_vring_init_bcast_fndecl_51633 wil_vring_init_bcast fndecl 3 51633 &enable_so_nodesize_btrfs_root_51633 nohasharray
157532 +enable_so__iwl_dbgfs_fw_dbg_conf_write_fndecl_51633 _iwl_dbgfs_fw_dbg_conf_write fndecl 3 51633 &enable_so_wil_vring_init_bcast_fndecl_51633
157533 +enable_so_SyS_llistxattr_fndecl_51635 SyS_llistxattr fndecl 3 51635 NULL
157534 +enable_so_SsidLength_ndis_802_11_ssid_51638 SsidLength ndis_802_11_ssid 0 51638 NULL
157535 +enable_so_objectid_btrfs_root_51643 objectid btrfs_root 0 51643 NULL
157536 +enable_so_nsm_create_handle_fndecl_51647 nsm_create_handle fndecl 4 51647 NULL
157537 +enable_so_total_bitmaps_btrfs_free_space_ctl_51648 total_bitmaps btrfs_free_space_ctl 0 51648 NULL nohasharray
157538 +enable_so_ath10k_mem_value_read_fndecl_51648 ath10k_mem_value_read fndecl 3 51648 &enable_so_total_bitmaps_btrfs_free_space_ctl_51648
157539 +enable_so_kernfs_dir_fop_llseek_fndecl_51649 kernfs_dir_fop_llseek fndecl 2 51649 NULL
157540 +enable_so_max_txsz_cxgbi_ddp_info_51655 max_txsz cxgbi_ddp_info 0 51655 NULL
157541 +enable_so_o2hb_read_slots_fndecl_51658 o2hb_read_slots fndecl 2 51658 NULL
157542 +enable_so_snd_pcm_oss_write_fndecl_51663 snd_pcm_oss_write fndecl 3 51663 NULL
157543 +enable_so_resource_list_create_entry_fndecl_51673 resource_list_create_entry fndecl 2 51673 NULL
157544 +enable_so_tcf_csum_ipv4_udp_fndecl_51674 tcf_csum_ipv4_udp fndecl 3 51674 NULL
157545 +enable_so_nr_dirtied_task_struct_51675 nr_dirtied task_struct 0 51675 NULL
157546 +enable_so_ep0_read_fndecl_51676 ep0_read fndecl 3 51676 NULL
157547 +enable_so_request_key_auth_new_fndecl_51679 request_key_auth_new fndecl 3 51679 NULL
157548 +enable_so_ls_num_nodes_dlm_ls_51681 ls_num_nodes dlm_ls 0 51681 NULL nohasharray
157549 +enable_so_vmw_kms_present_fndecl_51681 vmw_kms_present fndecl 9 51681 &enable_so_ls_num_nodes_dlm_ls_51681
157550 +enable_so_extsize_xfs_growfs_rt_51692 extsize xfs_growfs_rt 0 51692 NULL nohasharray
157551 +enable_so_parent_root_objectid_btrfs_fid_51692 parent_root_objectid btrfs_fid 0 51692 &enable_so_extsize_xfs_growfs_rt_51692
157552 +enable_so_rtl8169_change_mtu_fndecl_51693 rtl8169_change_mtu fndecl 2 51693 NULL
157553 +enable_so_ms_os_descs_ext_prop_data_len_ffs_data_51698 ms_os_descs_ext_prop_data_len ffs_data 0 51698 NULL
157554 +enable_so_num_req_context_skd_device_51707 num_req_context skd_device 0 51707 NULL
157555 +enable_so_mwifiex_cmd_append_11n_tlv_fndecl_51715 mwifiex_cmd_append_11n_tlv fndecl 0 51715 NULL
157556 +enable_so_iscsit_dump_data_payload_fndecl_51720 iscsit_dump_data_payload fndecl 2 51720 NULL
157557 +enable_so_do_wp_page_fndecl_51721 do_wp_page fndecl 3 51721 NULL
157558 +enable_so_MaxChainDepth__MSG_IOC_FACTS_REPLY_51731 MaxChainDepth _MSG_IOC_FACTS_REPLY 0 51731 NULL
157559 +enable_so_xfs_da3_node_create_fndecl_51737 xfs_da3_node_create fndecl 2 51737 NULL
157560 +enable_so_sie_num_c67x00_sie_51754 sie_num c67x00_sie 0 51754 NULL
157561 +enable_so_sd_size_stat_data_v1_51758 sd_size stat_data_v1 0 51758 NULL
157562 +enable_so_z_compress_fndecl_51766 z_compress fndecl 4-5 51766 NULL
157563 +enable_so_rbio_add_io_page_fndecl_51775 rbio_add_io_page fndecl 5 51775 NULL
157564 +enable_so_s_blocksize_reiserfs_super_block_v1_51777 s_blocksize reiserfs_super_block_v1 0 51777 NULL
157565 +enable_so_SSID_size_atmel_private_51778 SSID_size atmel_private 0 51778 NULL nohasharray
157566 +enable_so_c_freeoff_ufs_cg_private_info_51778 c_freeoff ufs_cg_private_info 0 51778 &enable_so_SSID_size_atmel_private_51778
157567 +enable_so_btusb_qca_send_vendor_req_fndecl_51785 btusb_qca_send_vendor_req fndecl 4 51785 NULL
157568 +enable_so_zforce_send_wait_fndecl_51795 zforce_send_wait fndecl 3 51795 NULL
157569 +enable_so_ns_nextnum_the_nilfs_51797 ns_nextnum the_nilfs 0 51797 NULL
157570 +enable_so_uar_page_size_mlx4_caps_51798 uar_page_size mlx4_caps 0 51798 NULL
157571 +enable_so_mclk_sm501_clock_51799 mclk sm501_clock 0 51799 NULL
157572 +enable_so_si476x_core_i2c_xfer_fndecl_51818 si476x_core_i2c_xfer fndecl 4 51818 NULL
157573 +enable_so_val_ulist_node_51819 val ulist_node 0 51819 NULL
157574 +enable_so_bcache_device_init_fndecl_51822 bcache_device_init fndecl 2-3 51822 NULL
157575 +enable_so_isac_empty_fifo_fndecl_51832 isac_empty_fifo fndecl 2 51832 NULL
157576 +enable_so_udf_readpages_fndecl_51834 udf_readpages fndecl 4 51834 NULL
157577 +enable_so_hde_ast_vbios_enhtable_51835 hde ast_vbios_enhtable 0 51835 NULL
157578 +enable_so_nfs4_xattr_get_nfs4_acl_fndecl_51843 nfs4_xattr_get_nfs4_acl fndecl 4 51843 NULL
157579 +enable_so_xfs_qm_dqiter_bufs_fndecl_51846 xfs_qm_dqiter_bufs fndecl 3 51846 NULL
157580 +enable_so_err_decode_fndecl_51847 err_decode fndecl 2 51847 NULL
157581 +enable_so_xprt_rdma_max_inline_read_vardecl_transport_c_51852 xprt_rdma_max_inline_read vardecl_transport.c 0 51852 NULL
157582 +enable_so_ipv6_renew_option_fndecl_51854 ipv6_renew_option fndecl 3 51854 NULL
157583 +enable_so_nr_dma_pages_drm_savage_private_51862 nr_dma_pages drm_savage_private 0 51862 NULL
157584 +enable_so_TupleDataLen_tuple_t_51870 TupleDataLen tuple_t 0 51870 NULL
157585 +enable_so_efs_get_block_fndecl_51871 efs_get_block fndecl 2 51871 NULL
157586 +enable_so_MaxFrameSize_s_smt_os_51875 MaxFrameSize s_smt_os 0 51875 NULL
157587 +enable_so_vbi_height_em28xx_v4l2_51876 vbi_height em28xx_v4l2 0 51876 NULL
157588 +enable_so_direct_entry_fndecl_51879 direct_entry fndecl 3 51879 NULL
157589 +enable_so_compat_udp_setsockopt_fndecl_51883 compat_udp_setsockopt fndecl 5 51883 NULL
157590 +enable_so_skb_headroom_port100_51893 skb_headroom port100 0 51893 NULL nohasharray
157591 +enable_so___vlan_add_flags_fndecl_51893 __vlan_add_flags fndecl 2 51893 &enable_so_skb_headroom_port100_51893
157592 +enable_so_sys_select_fndecl_51896 sys_select fndecl 1 51896 NULL
157593 +enable_so_len_sdla_mem_51902 len sdla_mem 0 51902 NULL
157594 +enable_so_datainterval_audioformat_51903 datainterval audioformat 0 51903 NULL
157595 +enable_so_rx_buf_sz_yellowfin_private_51912 rx_buf_sz yellowfin_private 0 51912 NULL
157596 +enable_so_len_nfs3_diropargs_51913 len nfs3_diropargs 0 51913 NULL
157597 +enable_so_traverse_fndecl_51938 traverse fndecl 2 51938 NULL
157598 +enable_so_len_probe_resp_51942 len probe_resp 0 51942 NULL
157599 +enable_so_vram_vardecl_gxfb_core_c_51945 vram vardecl_gxfb_core.c 0 51945 NULL nohasharray
157600 +enable_so_tidcnt_ipath_tid_info_51945 tidcnt ipath_tid_info 0 51945 &enable_so_vram_vardecl_gxfb_core_c_51945
157601 +enable_so_nci_core_conn_create_fndecl_51946 nci_core_conn_create fndecl 4 51946 NULL
157602 +enable_so_guest_phys_addr_kvm_userspace_memory_region_51947 guest_phys_addr kvm_userspace_memory_region 0 51947 NULL
157603 +enable_so_addr_drm_radeon_gem_userptr_51948 addr drm_radeon_gem_userptr 0 51948 NULL
157604 +enable_so_rsi_mgmt_pkt_to_core_fndecl_51950 rsi_mgmt_pkt_to_core fndecl 3 51950 NULL
157605 +enable_so_size_mdp_superblock_s_51954 size mdp_superblock_s 0 51954 NULL
157606 +enable_so___remaining_sg_mapping_iter_51955 __remaining sg_mapping_iter 0 51955 NULL nohasharray
157607 +enable_so_num_mpt_mlx4_profile_51955 num_mpt mlx4_profile 0 51955 &enable_so___remaining_sg_mapping_iter_51955
157608 +enable_so___blk_queue_init_tags_fndecl_51956 __blk_queue_init_tags fndecl 2 51956 NULL
157609 +enable_so_pipe_src_w_intel_crtc_state_51963 pipe_src_w intel_crtc_state 0 51963 NULL nohasharray
157610 +enable_so_num_eqs_mthca_limits_51963 num_eqs mthca_limits 0 51963 &enable_so_pipe_src_w_intel_crtc_state_51963
157611 +enable_so_bufsize_usbhid_device_51964 bufsize usbhid_device 0 51964 NULL nohasharray
157612 +enable_so_max_data_size_mpt3_ioctl_header_51964 max_data_size mpt3_ioctl_header 0 51964 &enable_so_bufsize_usbhid_device_51964
157613 +enable_so_pad_bits_regmap_config_51968 pad_bits regmap_config 0 51968 NULL
157614 +enable_so_req_lim_delta_srp_cred_req_51971 req_lim_delta srp_cred_req 0 51971 NULL
157615 +enable_so_asix_write_cmd_async_fndecl_51975 asix_write_cmd_async fndecl 5 51975 NULL
157616 +enable_so_pmcraid_copy_sglist_fndecl_51980 pmcraid_copy_sglist fndecl 3 51980 NULL
157617 +enable_so_pcnet32_realloc_tx_ring_fndecl_51983 pcnet32_realloc_tx_ring fndecl 3 51983 NULL
157618 +enable_so_f2fs_inode_by_name_fndecl_51991 f2fs_inode_by_name fndecl 0 51991 NULL
157619 +enable_so_ocfs2_which_cluster_group_fndecl_51998 ocfs2_which_cluster_group fndecl 0-2 51998 NULL
157620 +enable_so_mlx5_query_port_ptys_fndecl_52003 mlx5_query_port_ptys fndecl 3 52003 NULL
157621 +enable_so_kvm_write_guest_fndecl_52005 kvm_write_guest fndecl 2-4 52005 NULL
157622 +enable_so_pixel_clock_oaktrail_timing_info_52013 pixel_clock oaktrail_timing_info 0 52013 NULL
157623 +enable_so_immediate_data_length_iscsi_build_list_52017 immediate_data_length iscsi_build_list 0 52017 NULL nohasharray
157624 +enable_so_size_fuse_write_out_52017 size fuse_write_out 0 52017 &enable_so_immediate_data_length_iscsi_build_list_52017
157625 +enable_so_batadv_iv_ogm_aggregate_new_fndecl_52022 batadv_iv_ogm_aggregate_new fndecl 2 52022 NULL
157626 +enable_so_seq_commit_fndecl_52023 seq_commit fndecl 2 52023 NULL
157627 +enable_so_write_segment_descriptor_fndecl_52025 write_segment_descriptor fndecl 2 52025 NULL
157628 +enable_so_dev_set_mtu_fndecl_52028 dev_set_mtu fndecl 2 52028 NULL
157629 +enable_so_blk_end_bidi_request_fndecl_52033 blk_end_bidi_request fndecl 3-4 52033 NULL
157630 +enable_so_kvm_arch_setup_async_pf_fndecl_52034 kvm_arch_setup_async_pf fndecl 3 52034 NULL
157631 +enable_so_base_pfn_cma_52036 base_pfn cma 0 52036 NULL
157632 +enable_so_ttm_dma_page_alloc_init_fndecl_52037 ttm_dma_page_alloc_init fndecl 2 52037 NULL
157633 +enable_so_gfs2_setattr_size_fndecl_52038 gfs2_setattr_size fndecl 2 52038 NULL
157634 +enable_so_xdr_shrink_pagelen_fndecl_52043 xdr_shrink_pagelen fndecl 2 52043 NULL
157635 +enable_so_num_controls_op_x86_model_spec_52044 num_controls op_x86_model_spec 0 52044 NULL
157636 +enable_so_section_size_nvsp_1_message_send_send_buffer_complete_52050 section_size nvsp_1_message_send_send_buffer_complete 0 52050 NULL
157637 +enable_so_cxgb_change_mtu_fndecl_52055 cxgb_change_mtu fndecl 2 52055 NULL
157638 +enable_so__iwl_dbgfs_scan_ant_rxchain_write_fndecl_52060 _iwl_dbgfs_scan_ant_rxchain_write fndecl 3 52060 NULL
157639 +enable_so_nid_node_info_52075 nid node_info 0 52075 NULL
157640 +enable_so_iscsi_create_iface_fndecl_52093 iscsi_create_iface fndecl 5 52093 NULL
157641 +enable_so_drv_tx_rings_qlcnic_adapter_52102 drv_tx_rings qlcnic_adapter 0 52102 NULL
157642 +enable_so_adf4350_set_freq_fndecl_52106 adf4350_set_freq fndecl 2 52106 NULL nohasharray
157643 +enable_so_attr_bytes_osdv1_attributes_list_element_52106 attr_bytes osdv1_attributes_list_element 0 52106 &enable_so_adf4350_set_freq_fndecl_52106
157644 +enable_so_logical_offset_btrfs_ioctl_same_args_52108 logical_offset btrfs_ioctl_same_args 0 52108 NULL
157645 +enable_so_mmc_test_nonblock_transfer_fndecl_52112 mmc_test_nonblock_transfer fndecl 6-5 52112 NULL
157646 +enable_so_mlx4_ib_db_map_user_fndecl_52114 mlx4_ib_db_map_user fndecl 2 52114 NULL
157647 +enable_so_logfs_new_meta_inode_fndecl_52119 logfs_new_meta_inode fndecl 2 52119 NULL nohasharray
157648 +enable_so_add_qgroup_relation_item_fndecl_52119 add_qgroup_relation_item fndecl 4-3 52119 &enable_so_logfs_new_meta_inode_fndecl_52119
157649 +enable_so_max3421_transfer_out_done_fndecl_52121 max3421_transfer_out_done fndecl 0 52121 NULL
157650 +enable_so_db_page_mthca_create_srq_52122 db_page mthca_create_srq 0 52122 NULL
157651 +enable_so_s_inode_size_ext2_sb_info_52134 s_inode_size ext2_sb_info 0 52134 NULL
157652 +enable_so_copy_ctl_value_to_user_fndecl_52136 copy_ctl_value_to_user fndecl 4 52136 NULL
157653 +enable_so_sample_bits_snd_pcm_runtime_52138 sample_bits snd_pcm_runtime 0 52138 NULL
157654 +enable_so_xprt_rdma_inline_write_padding_vardecl_transport_c_52144 xprt_rdma_inline_write_padding vardecl_transport.c 0 52144 NULL nohasharray
157655 +enable_so_isofs_export_iget_fndecl_52144 isofs_export_iget fndecl 3-2 52144 &enable_so_xprt_rdma_inline_write_padding_vardecl_transport_c_52144
157656 +enable_so_tcp_sendmsg_fndecl_52147 tcp_sendmsg fndecl 3 52147 NULL nohasharray
157657 +enable_so_tcp_update_reordering_fndecl_52147 tcp_update_reordering fndecl 2 52147 &enable_so_tcp_sendmsg_fndecl_52147
157658 +enable_so_set_le_ih_k_type_fndecl_52149 set_le_ih_k_type fndecl 2 52149 NULL
157659 +enable_so_skcipher_sendmsg_fndecl_52153 skcipher_sendmsg fndecl 3 52153 NULL nohasharray
157660 +enable_so_bnad_debugfs_lseek_fndecl_52153 bnad_debugfs_lseek fndecl 2 52153 &enable_so_skcipher_sendmsg_fndecl_52153
157661 +enable_so_update_extent_info_fndecl_52163 update_extent_info fndecl 2-3 52163 NULL
157662 +enable_so_indirect_sg_entries_vardecl_ib_srp_c_52165 indirect_sg_entries vardecl_ib_srp.c 0 52165 NULL
157663 +enable_so_mpx_mmap_fndecl_52167 mpx_mmap fndecl 1 52167 NULL nohasharray
157664 +enable_so_nvkm_object_create__fndecl_52167 nvkm_object_create_ fndecl 5 52167 &enable_so_mpx_mmap_fndecl_52167
157665 +enable_so_nf_ct_sack_adjust_fndecl_52168 nf_ct_sack_adjust fndecl 2 52168 NULL
157666 +enable_so_mtdchar_lseek_fndecl_52170 mtdchar_lseek fndecl 2 52170 NULL
157667 +enable_so_compat_sys_ptrace_fndecl_52176 compat_sys_ptrace fndecl 3 52176 NULL
157668 +enable_so_b_length_xfs_buf_52177 b_length xfs_buf 0 52177 NULL
157669 +enable_so_rd_allocate_sgl_table_fndecl_52188 rd_allocate_sgl_table fndecl 3 52188 NULL
157670 +enable_so_ext2_readpages_fndecl_52195 ext2_readpages fndecl 4 52195 NULL
157671 +enable_so_qp_broker_alloc_fndecl_52197 qp_broker_alloc fndecl 5-6 52197 NULL
157672 +enable_so_audit_init_entry_fndecl_52199 audit_init_entry fndecl 1 52199 NULL
157673 +enable_so_metapage_get_blocks_fndecl_52200 metapage_get_blocks fndecl 0-2 52200 NULL
157674 +enable_so_mmc_send_cxd_data_fndecl_52204 mmc_send_cxd_data fndecl 5 52204 NULL
157675 +enable_so_write_enabled_file_bool_fndecl_52213 write_enabled_file_bool fndecl 3 52213 NULL
157676 +enable_so_num_dtv_properties_52216 num dtv_properties 0 52216 NULL
157677 +enable_so_numlower_ovl_entry_52218 numlower ovl_entry 0 52218 NULL
157678 +enable_so_BlockSize_erase_unit_header_t_52231 BlockSize erase_unit_header_t 0 52231 NULL
157679 +enable_so_nfs3_proc_readlink_fndecl_52235 nfs3_proc_readlink fndecl 4 52235 NULL
157680 +enable_so_efs_iget_fndecl_52247 efs_iget fndecl 2 52247 NULL
157681 +enable_so_size_elf_note_info_52250 size elf_note_info 0 52250 NULL
157682 +enable_so_intel_free_coherent_fndecl_52264 intel_free_coherent fndecl 2 52264 NULL
157683 +enable_so_bufsize_brcmf_console_52266 bufsize brcmf_console 0 52266 NULL
157684 +enable_so_value_len_xattr_52269 value_len xattr 0 52269 NULL
157685 +enable_so_hdsp_set_rate_fndecl_52271 hdsp_set_rate fndecl 2 52271 NULL nohasharray
157686 +enable_so_hfsplus_ext_find_block_fndecl_52271 hfsplus_ext_find_block fndecl 0 52271 &enable_so_hdsp_set_rate_fndecl_52271 nohasharray
157687 +enable_so_req_depth_pvscsi_adapter_52271 req_depth pvscsi_adapter 0 52271 &enable_so_hfsplus_ext_find_block_fndecl_52271
157688 +enable_so_set_multcount_fndecl_52272 set_multcount fndecl 2 52272 NULL
157689 +enable_so_hlen_raw_frag_vec_52276 hlen raw_frag_vec 0 52276 NULL
157690 +enable_so_num_alt_cx231xx_audio_52283 num_alt cx231xx_audio 0 52283 NULL
157691 +enable_so_length_sigma_fw_chunk_52285 length sigma_fw_chunk 0 52285 NULL
157692 +enable_so_hpfs_alloc_dnode_fndecl_52288 hpfs_alloc_dnode fndecl 2 52288 NULL
157693 +enable_so_v9fs_direct_IO_fndecl_52293 v9fs_direct_IO fndecl 3 52293 NULL
157694 +enable_so_rts51x_get_max_lun_fndecl_52294 rts51x_get_max_lun fndecl 0 52294 NULL
157695 +enable_so_CP_PrefClock_SiS_Private_52298 CP_PrefClock SiS_Private 0 52298 NULL
157696 +enable_so_setup_items_for_insert_fndecl_52301 setup_items_for_insert fndecl 7 52301 NULL
157697 +enable_so_origin_size_thin_c_52302 origin_size thin_c 0 52302 NULL
157698 +enable_so_longest_match_fndecl_52304 longest_match fndecl 0 52304 NULL
157699 +enable_so_alloc_page_ext_fndecl_52310 alloc_page_ext fndecl 1 52310 NULL
157700 +enable_so_h_stop_saa7134_tvnorm_52311 h_stop saa7134_tvnorm 0 52311 NULL
157701 +enable_so_rss_table_entry_width_i40e_hw_capabilities_52312 rss_table_entry_width i40e_hw_capabilities 0 52312 NULL
157702 +enable_so_ep_out_kingsun_cb_52317 ep_out kingsun_cb 0 52317 NULL
157703 +enable_so_pglen_nfs4_readlink_52318 pglen nfs4_readlink 0 52318 NULL
157704 +enable_so_cmd_len_c2h_evt_hdr_52322 cmd_len c2h_evt_hdr 0 52322 NULL
157705 +enable_so___btrfs_inc_extent_ref_fndecl_52325 __btrfs_inc_extent_ref fndecl 3-4-7-5-6 52325 NULL
157706 +enable_so_cxgbi_conn_init_pdu_fndecl_52327 cxgbi_conn_init_pdu fndecl 3 52327 NULL
157707 +enable_so_inline_rsize_rpcrdma_create_data_internal_52331 inline_rsize rpcrdma_create_data_internal 0 52331 NULL
157708 +enable_so_reiserfs_free_block_fndecl_52336 reiserfs_free_block fndecl 3 52336 NULL
157709 +enable_so_regmap_access_read_file_fndecl_52340 regmap_access_read_file fndecl 3 52340 NULL
157710 +enable_so_prob_ewmsd_minstrel_rate_stats_52342 prob_ewmsd minstrel_rate_stats 0 52342 NULL
157711 +enable_so___do_replace_fndecl_52344 __do_replace fndecl 5 52344 NULL
157712 +enable_so__iwl_dbgfs_fw_restart_write_fndecl_52357 _iwl_dbgfs_fw_restart_write fndecl 3 52357 NULL
157713 +enable_so_pipe_src_h_intel_crtc_state_52358 pipe_src_h intel_crtc_state 0 52358 NULL nohasharray
157714 +enable_so_blk_queue_max_hw_sectors_fndecl_52358 blk_queue_max_hw_sectors fndecl 2 52358 &enable_so_pipe_src_h_intel_crtc_state_52358 nohasharray
157715 +enable_so_rtl_read_byte_fndecl_52358 rtl_read_byte fndecl 0 52358 &enable_so_blk_queue_max_hw_sectors_fndecl_52358
157716 +enable_so_nested_svm_map_fndecl_52359 nested_svm_map fndecl 2 52359 NULL
157717 +enable_so_lro_add_common_fndecl_52363 lro_add_common fndecl 4 52363 NULL
157718 +enable_so_r_cpos_ocfs2_refcount_rec_52365 r_cpos ocfs2_refcount_rec 0 52365 NULL
157719 +enable_so_se_callback_netid_len_nfsd4_setclientid_52366 se_callback_netid_len nfsd4_setclientid 0 52366 NULL
157720 +enable_so_rx_bus_ifx_spi_device_52370 rx_bus ifx_spi_device 0 52370 NULL
157721 +enable_so_req_depth__MPT_ADAPTER_52375 req_depth _MPT_ADAPTER 0 52375 NULL nohasharray
157722 +enable_so_num_phys_mptsas_portinfo_52375 num_phys mptsas_portinfo 0 52375 &enable_so_req_depth__MPT_ADAPTER_52375
157723 +enable_so_rh_string_fndecl_52376 rh_string fndecl 0-4 52376 NULL nohasharray
157724 +enable_so_nrealreaders_vardecl_rcutorture_c_52376 nrealreaders vardecl_rcutorture.c 0 52376 &enable_so_rh_string_fndecl_52376
157725 +enable_so_bMaxBurst_usb_ss_ep_comp_descriptor_52382 bMaxBurst usb_ss_ep_comp_descriptor 0 52382 NULL
157726 +enable_so_ath6kl_wmi_set_ie_cmd_fndecl_52383 ath6kl_wmi_set_ie_cmd fndecl 6 52383 NULL
157727 +enable_so_dm_bitset_set_bit_fndecl_52390 dm_bitset_set_bit fndecl 2 52390 NULL nohasharray
157728 +enable_so_raw_bufsize_edt_ft5x06_ts_data_52390 raw_bufsize edt_ft5x06_ts_data 0 52390 &enable_so_dm_bitset_set_bit_fndecl_52390
157729 +enable_so_tda998x_write_if_fndecl_52393 tda998x_write_if fndecl 5 52393 NULL
157730 +enable_so_u132_hcd_initial_input_recv_fndecl_52397 u132_hcd_initial_input_recv fndecl 4 52397 NULL
157731 +enable_so_objectid_btrfs_delayed_data_ref_52398 objectid btrfs_delayed_data_ref 0 52398 NULL
157732 +enable_so_eapol_len_wmi_eapol_rx_event_52408 eapol_len wmi_eapol_rx_event 0 52408 NULL
157733 +enable_so_wm8904_set_fll_fndecl_52413 wm8904_set_fll fndecl 4-5 52413 NULL
157734 +enable_so_agp_return_size_fndecl_52417 agp_return_size fndecl 0 52417 NULL nohasharray
157735 +enable_so_scsi_mode_select_fndecl_52417 scsi_mode_select fndecl 6 52417 &enable_so_agp_return_size_fndecl_52417
157736 +enable_so_sddr09_read_control_fndecl_52418 sddr09_read_control fndecl 3 52418 NULL
157737 +enable_so_group_ocfs2_new_group_input_52421 group ocfs2_new_group_input 0 52421 NULL
157738 +enable_so_rate_n_flags_il_ht_agg_52426 rate_n_flags il_ht_agg 0 52426 NULL
157739 +enable_so_move_vma_fndecl_52430 move_vma fndecl 4-5-2-3 52430 NULL
157740 +enable_so_zap_pte_range_fndecl_52434 zap_pte_range fndecl 4-0 52434 NULL
157741 +enable_so_min_scaled_width_bttv_crop_52442 min_scaled_width bttv_crop 0 52442 NULL
157742 +enable_so_map_nth_dirent_fndecl_52444 map_nth_dirent fndecl 2 52444 NULL
157743 +enable_so_wl1251_spi_write_fndecl_52450 wl1251_spi_write fndecl 4 52450 NULL nohasharray
157744 +enable_so_corr_peb_count_ubi_device_52450 corr_peb_count ubi_device 0 52450 &enable_so_wl1251_spi_write_fndecl_52450
157745 +enable_so_security_inode_getsecurity_fndecl_52473 security_inode_getsecurity fndecl 0 52473 NULL
157746 +enable_so_metadata_snap_era_metadata_52475 metadata_snap era_metadata 0 52475 NULL
157747 +enable_so_s_clustersize_bits_ocfs2_super_52499 s_clustersize_bits ocfs2_super 0 52499 NULL
157748 +enable_so_ipath_portcnt_ipath_devdata_52503 ipath_portcnt ipath_devdata 0 52503 NULL
157749 +enable_so_xfs_vm_kill_delalloc_range_fndecl_52505 xfs_vm_kill_delalloc_range fndecl 2 52505 NULL
157750 +enable_so_svc_setsockopt_fndecl_52511 svc_setsockopt fndecl 5 52511 NULL
157751 +enable_so_il4965_rs_get_lower_rate_fndecl_52514 il4965_rs_get_lower_rate fndecl 3 52514 NULL
157752 +enable_so_copy_batch_fndecl_52524 copy_batch fndecl 3-4 52524 NULL
157753 +enable_so_refcount_loc_ocfs2_move_extents_context_52526 refcount_loc ocfs2_move_extents_context 0 52526 NULL
157754 +enable_so_tas5086_register_size_fndecl_52528 tas5086_register_size fndecl 0 52528 NULL
157755 +enable_so_fps_solo_dev_52530 fps solo_dev 0 52530 NULL
157756 +enable_so_rx_buf_sz_hamachi_private_52536 rx_buf_sz hamachi_private 0 52536 NULL
157757 +enable_so_hblank_lo_oaktrail_timing_info_52540 hblank_lo oaktrail_timing_info 0 52540 NULL nohasharray
157758 +enable_so_queue_pair_size_vmci_transport_52540 queue_pair_size vmci_transport 0 52540 &enable_so_hblank_lo_oaktrail_timing_info_52540
157759 +enable_so_packet_sendmsg_spkt_fndecl_52542 packet_sendmsg_spkt fndecl 3 52542 NULL
157760 +enable_so_dccp_insert_option_fndecl_52554 dccp_insert_option fndecl 4 52554 NULL
157761 +enable_so_num_mtt_mlx4_profile_52565 num_mtt mlx4_profile 0 52565 NULL
157762 +enable_so_data_size_binder_transaction_data_52567 data_size binder_transaction_data 0 52567 NULL
157763 +enable_so_nents_isert_data_buf_52570 nents isert_data_buf 0 52570 NULL
157764 +enable_so_end_logsuper_52574 end logsuper 0 52574 NULL
157765 +enable_so_il4965_rs_sta_dbgfs_scale_table_write_fndecl_52576 il4965_rs_sta_dbgfs_scale_table_write fndecl 3 52576 NULL
157766 +enable_so___mincore_unmapped_range_fndecl_52595 __mincore_unmapped_range fndecl 1 52595 NULL
157767 +enable_so_xfs_shift_file_space_fndecl_52596 xfs_shift_file_space fndecl 2-3 52596 NULL
157768 +enable_so_cached_dev_init_fndecl_52600 cached_dev_init fndecl 2 52600 NULL
157769 +enable_so_length_usbdevfs_iso_packet_desc_52610 length usbdevfs_iso_packet_desc 0 52610 NULL
157770 +enable_so_ondemand_readahead_fndecl_52612 ondemand_readahead fndecl 5 52612 NULL
157771 +enable_so_datalen_tcf_ematch_52613 datalen tcf_ematch 0 52613 NULL
157772 +enable_so_wl1251_spi_read_fndecl_52615 wl1251_spi_read fndecl 4 52615 NULL
157773 +enable_so___logfs_write_je_fndecl_52617 __logfs_write_je fndecl 4 52617 NULL
157774 +enable_so__set_error_resid_fndecl_52623 _set_error_resid fndecl 3 52623 NULL
157775 +enable_so_drbd_new_dev_size_fndecl_52629 drbd_new_dev_size fndecl 0-3 52629 NULL
157776 +enable_so_auok190xfb_write_fndecl_52634 auok190xfb_write fndecl 3 52634 NULL
157777 +enable_so_setxattr_fndecl_52637 setxattr fndecl 4 52637 NULL
157778 +enable_so___do_fault_fndecl_52642 __do_fault fndecl 3 52642 NULL
157779 +enable_so_page_count_drm_device_dma_52645 page_count drm_device_dma 0 52645 NULL
157780 +enable_so_num_txq_per_tx_bnad_52646 num_txq_per_tx bnad 0 52646 NULL
157781 +enable_so_bop_insert_nilfs_bmap_operations_52653 bop_insert nilfs_bmap_operations 0 52653 NULL
157782 +enable_so_qp_broker_create_fndecl_52654 qp_broker_create fndecl 5-6 52654 NULL
157783 +enable_so_extra_bytes_sym_ccb_52656 extra_bytes sym_ccb 0 52656 NULL
157784 +enable_so_block_size_ms_boot_attr_info_52659 block_size ms_boot_attr_info 0 52659 NULL
157785 +enable_so_ieee80211_chsw_switch_vifs_fndecl_52661 ieee80211_chsw_switch_vifs fndecl 2 52661 NULL
157786 +enable_so_ec_i2c_xfer_fndecl_52662 ec_i2c_xfer fndecl 3 52662 NULL
157787 +enable_so_size_drm_exynos_g2d_userptr_52663 size drm_exynos_g2d_userptr 0 52663 NULL
157788 +enable_so_vt_ast_vbios_enhtable_52669 vt ast_vbios_enhtable 0 52669 NULL nohasharray
157789 +enable_so_command_file_read_fndecl_52669 command_file_read fndecl 3 52669 &enable_so_vt_ast_vbios_enhtable_52669
157790 +enable_so_retry_long_wiphy_52670 retry_long wiphy 0 52670 NULL
157791 +enable_so_vmap_batch_fndecl_52675 vmap_batch fndecl 2-3 52675 NULL
157792 +enable_so_parse_command_fndecl_52676 parse_command fndecl 2 52676 NULL
157793 +enable_so_pcm512x_sck_max_fndecl_52677 pcm512x_sck_max fndecl 0 52677 NULL nohasharray
157794 +enable_so_SYSC_setxattr_fndecl_52677 SYSC_setxattr fndecl 4 52677 &enable_so_pcm512x_sck_max_fndecl_52677
157795 +enable_so_drm_mode_create_rotation_property_fndecl_52681 drm_mode_create_rotation_property fndecl 2 52681 NULL
157796 +enable_so_length_oz_elt_52682 length oz_elt 0 52682 NULL
157797 +enable_so_num_snd_urbs_vardecl_usbatm_c_52685 num_snd_urbs vardecl_usbatm.c 0 52685 NULL
157798 +enable_so_fpHeight_nvidia_par_52691 fpHeight nvidia_par 0 52691 NULL
157799 +enable_so__iwl_dbgfs_bcast_filters_macs_write_fndecl_52702 _iwl_dbgfs_bcast_filters_macs_write fndecl 3 52702 NULL
157800 +enable_so_count_vfio_pci_hot_reset_52708 count vfio_pci_hot_reset 0 52708 NULL
157801 +enable_so_gen_ie_buf_len_mwifiex_private_52710 gen_ie_buf_len mwifiex_private 0 52710 NULL
157802 +enable_so_s_je_fill_logfs_super_52713 s_je_fill logfs_super 0 52713 NULL
157803 +enable_so_videomemorysize_vardecl_vfb_c_52716 videomemorysize vardecl_vfb.c 0 52716 NULL nohasharray
157804 +enable_so_wptr_old_radeon_ring_52716 wptr_old radeon_ring 0 52716 &enable_so_videomemorysize_vardecl_vfb_c_52716
157805 +enable_so_vmw_framebuffer_dmabuf_dirty_fndecl_52750 vmw_framebuffer_dmabuf_dirty fndecl 6 52750 NULL
157806 +enable_so_dd_fcrport_size_fc_function_template_52753 dd_fcrport_size fc_function_template 0 52753 NULL
157807 +enable_so_SyS_mbind_fndecl_52757 SyS_mbind fndecl 5 52757 NULL
157808 +enable_so_usbhs_pkt_push_fndecl_52759 usbhs_pkt_push fndecl 5 52759 NULL nohasharray
157809 +enable_so_dr_blkno_ocfs2_dx_root_block_52759 dr_blkno ocfs2_dx_root_block 0 52759 &enable_so_usbhs_pkt_push_fndecl_52759
157810 +enable_so_playback_frlog_rme96_52763 playback_frlog rme96 0 52763 NULL
157811 +enable_so_height_drm_radeon_texture_52764 height drm_radeon_texture 0 52764 NULL
157812 +enable_so_wIDIbytesPerSector_ms_bootblock_idi_52770 wIDIbytesPerSector ms_bootblock_idi 0 52770 NULL
157813 +enable_so_size_drm_i915_gem_create_52771 size drm_i915_gem_create 0 52771 NULL
157814 +enable_so_maxBuf_TCP_Server_Info_52774 maxBuf TCP_Server_Info 0 52774 NULL nohasharray
157815 +enable_so_regmap_map_read_file_fndecl_52774 regmap_map_read_file fndecl 3 52774 &enable_so_maxBuf_TCP_Server_Info_52774
157816 +enable_so_remove_extent_item_fndecl_52780 remove_extent_item fndecl 3-2 52780 NULL
157817 +enable_so_SYSC_get_mempolicy_fndecl_52787 SYSC_get_mempolicy fndecl 3 52787 NULL
157818 +enable_so_setup_transfer_spi_bitbang_52790 setup_transfer spi_bitbang 0 52790 NULL
157819 +enable_so_qxl_allocate_chunk_fndecl_52791 qxl_allocate_chunk fndecl 4 52791 NULL nohasharray
157820 +enable_so_tcp_mss_split_point_fndecl_52791 tcp_mss_split_point fndecl 0 52791 &enable_so_qxl_allocate_chunk_fndecl_52791
157821 +enable_so_batadv_get_vid_fndecl_52792 batadv_get_vid fndecl 2 52792 NULL
157822 +enable_so___wa_seg_calculate_isoc_frame_count_fndecl_52795 __wa_seg_calculate_isoc_frame_count fndecl 0 52795 NULL
157823 +enable_so_payload_len_bfa_bsg_data_52800 payload_len bfa_bsg_data 0 52800 NULL
157824 +enable_so_i40e_dbg_dump_data_len_vardecl_i40e_debugfs_c_52806 i40e_dbg_dump_data_len vardecl_i40e_debugfs.c 0 52806 NULL
157825 +enable_so_prev_rs_il3945_rate_info_52819 prev_rs il3945_rate_info 0 52819 NULL
157826 +enable_so_retry_short_wiphy_52822 retry_short wiphy 0 52822 NULL nohasharray
157827 +enable_so_brcmf_sdiod_recv_chain_fndecl_52822 brcmf_sdiod_recv_chain fndecl 3 52822 &enable_so_retry_short_wiphy_52822
157828 +enable_so_wiphy_new_nm_fndecl_52833 wiphy_new_nm fndecl 2 52833 NULL
157829 +enable_so_xdr_encode_array2_fndecl_52834 xdr_encode_array2 fndecl 2 52834 NULL
157830 +enable_so_ocfs2_control_cfu_fndecl_52837 ocfs2_control_cfu fndecl 2 52837 NULL
157831 +enable_so_xfs_read_agf_fndecl_52838 xfs_read_agf fndecl 3 52838 NULL nohasharray
157832 +enable_so_c_frotor_ufs_cg_private_info_52838 c_frotor ufs_cg_private_info 0 52838 &enable_so_xfs_read_agf_fndecl_52838 nohasharray
157833 +enable_so_ocfs2_duplicate_clusters_by_jbd_fndecl_52838 ocfs2_duplicate_clusters_by_jbd fndecl 4-5 52838 &enable_so_c_frotor_ufs_cg_private_info_52838
157834 +enable_so_pfn_hi_iova_52841 pfn_hi iova 0 52841 NULL
157835 +enable_so_ext2_fsync_fndecl_52850 ext2_fsync fndecl 2 52850 NULL
157836 +enable_so_mlx4_load_one_fndecl_52867 mlx4_load_one fndecl 3 52867 NULL
157837 +enable_so_video_ram_radeonfb_info_52868 video_ram radeonfb_info 0 52868 NULL
157838 +enable_so_scsi_debug_sector_size_vardecl_scsi_debug_c_52879 scsi_debug_sector_size vardecl_scsi_debug.c 0 52879 NULL
157839 +enable_so_offset_pipe_buffer_52880 offset pipe_buffer 0 52880 NULL
157840 +enable_so_dccp_setsockopt_cscov_fndecl_52885 dccp_setsockopt_cscov fndecl 2 52885 NULL
157841 +enable_so_nvram_len_nvram_parser_52887 nvram_len nvram_parser 0 52887 NULL
157842 +enable_so_buffer_size_vardecl_ir_usb_c_52893 buffer_size vardecl_ir-usb.c 0 52893 NULL
157843 +enable_so_ino_jffs2_full_dirent_52898 ino jffs2_full_dirent 0 52898 NULL nohasharray
157844 +enable_so_max_pde_used_amdgpu_vm_52898 max_pde_used amdgpu_vm 0 52898 &enable_so_ino_jffs2_full_dirent_52898
157845 +enable_so_ocrdma_alloc_frmr_page_list_fndecl_52900 ocrdma_alloc_frmr_page_list fndecl 2 52900 NULL
157846 +enable_so_data_len_hermes_rx_descriptor_52909 data_len hermes_rx_descriptor 0 52909 NULL
157847 +enable_so_dir_seek_data_fndecl_52916 dir_seek_data fndecl 2-0 52916 NULL
157848 +enable_so_num_tx_queues_e1000_adapter_52922 num_tx_queues e1000_adapter 0 52922 NULL
157849 +enable_so_swd_swregs_state_52928 swd swregs_state 0 52928 NULL
157850 +enable_so_count_i40e_ring_52936 count i40e_ring 0 52936 NULL
157851 +enable_so_si2165_write_fndecl_52941 si2165_write fndecl 4 52941 NULL nohasharray
157852 +enable_so_signal_nr_nvkm_specdom_52941 signal_nr nvkm_specdom 0 52941 &enable_so_si2165_write_fndecl_52941
157853 +enable_so_rules_count_canid_match_52943 rules_count canid_match 0 52943 NULL
157854 +enable_so_position_jfs_dirent_52952 position jfs_dirent 0 52952 NULL
157855 +enable_so_trigger_level_eg20t_port_52953 trigger_level eg20t_port 0 52953 NULL
157856 +enable_so_i2c_read_demod_bytes_fndecl_52958 i2c_read_demod_bytes fndecl 4 52958 NULL
157857 +enable_so_bnx2fc_get_paged_crc_eof_fndecl_52960 bnx2fc_get_paged_crc_eof fndecl 2 52960 NULL
157858 +enable_so_fw_size_pvr2_hdw_52961 fw_size pvr2_hdw 0 52961 NULL
157859 +enable_so_rsp_size_srpt_rdma_ch_52963 rsp_size srpt_rdma_ch 0 52963 NULL
157860 +enable_so_musb_h_ep0_continue_fndecl_52966 musb_h_ep0_continue fndecl 2 52966 NULL
157861 +enable_so_sys_setxattr_fndecl_52971 sys_setxattr fndecl 4 52971 NULL
157862 +enable_so_dma_start_lo_rx_buf_desc_52972 dma_start_lo rx_buf_desc 0 52972 NULL
157863 +enable_so_dataOutSize_mpt_ioctl_command_52974 dataOutSize mpt_ioctl_command 0 52974 NULL
157864 +enable_so_dvb_net_sec_fndecl_52975 dvb_net_sec fndecl 3 52975 NULL nohasharray
157865 +enable_so_xdr_truncate_encode_fndecl_52975 xdr_truncate_encode fndecl 2 52975 &enable_so_dvb_net_sec_fndecl_52975
157866 +enable_so_scatter_n_efx_rx_queue_52988 scatter_n efx_rx_queue 0 52988 NULL nohasharray
157867 +enable_so_tv_freq_tuner_52988 tv_freq tuner 0 52988 &enable_so_scatter_n_efx_rx_queue_52988
157868 +enable_so_xfs_dir2_block_to_sf_fndecl_52991 xfs_dir2_block_to_sf fndecl 3 52991 NULL
157869 +enable_so_actual_length_urb_53003 actual_length urb 0 53003 NULL
157870 +enable_so___shadow_block_fndecl_53011 __shadow_block fndecl 2 53011 NULL nohasharray
157871 +enable_so_max_mlx4_srq_53011 max mlx4_srq 0 53011 &enable_so___shadow_block_fndecl_53011
157872 +enable_so_gfs2_direct_IO_fndecl_53014 gfs2_direct_IO fndecl 3 53014 NULL
157873 +enable_so_BC_Read_Reg_IsdnCardState_53020 BC_Read_Reg IsdnCardState 0 53020 NULL
157874 +enable_so_bytesused_ivtv_buffer_53021 bytesused ivtv_buffer 0 53021 NULL
157875 +enable_so_tty_insert_flip_string_fixed_flag_fndecl_53031 tty_insert_flip_string_fixed_flag fndecl 4 53031 NULL
157876 +enable_so_iwl_print_last_event_logs_fndecl_53034 iwl_print_last_event_logs fndecl 7-9 53034 NULL
157877 +enable_so_xfs_filestream_pick_ag_fndecl_53040 xfs_filestream_pick_ag fndecl 2 53040 NULL
157878 +enable_so_attempts_minstrel_rate_stats_53041 attempts minstrel_rate_stats 0 53041 NULL
157879 +enable_so_fcoe_alloc_paged_crc_eof_fndecl_53049 fcoe_alloc_paged_crc_eof fndecl 2 53049 NULL nohasharray
157880 +enable_so_sys_getxattr_fndecl_53049 sys_getxattr fndecl 4 53049 &enable_so_fcoe_alloc_paged_crc_eof_fndecl_53049
157881 +enable_so_rqsize_hwif_s_53050 rqsize hwif_s 0 53050 NULL
157882 +enable_so_rx_pad_len_hif_device_usb_53051 rx_pad_len hif_device_usb 0 53051 NULL
157883 +enable_so_find_next_bit_fndecl_53053 find_next_bit fndecl 0 53053 NULL nohasharray
157884 +enable_so_dm_bm_write_lock_zero_fndecl_53053 dm_bm_write_lock_zero fndecl 2 53053 &enable_so_find_next_bit_fndecl_53053 nohasharray
157885 +enable_so_acpi_os_allocate_zeroed_fndecl_53053 acpi_os_allocate_zeroed fndecl 1 53053 &enable_so_dm_bm_write_lock_zero_fndecl_53053
157886 +enable_so_cols_cros_ec_keyb_53054 cols cros_ec_keyb 0 53054 NULL
157887 +enable_so_s_inode_size_nilfs_super_block_53064 s_inode_size nilfs_super_block 0 53064 NULL
157888 +enable_so_kvm_vcpu_write_guest_page_fndecl_53070 kvm_vcpu_write_guest_page fndecl 5 53070 NULL
157889 +enable_so_omap_hwmod_mux_init_fndecl_53072 omap_hwmod_mux_init fndecl 2 53072 NULL
157890 +enable_so_fru_alloc_fndecl_53073 fru_alloc fndecl 1 53073 NULL
157891 +enable_so_get_rx_frame_len_sxgbe_desc_ops_53074 get_rx_frame_len sxgbe_desc_ops 0 53074 NULL
157892 +enable_so_wMTU_usb_cdc_mbim_extended_desc_53075 wMTU usb_cdc_mbim_extended_desc 0 53075 NULL nohasharray
157893 +enable_so_tty_audit_log_fndecl_53075 tty_audit_log fndecl 5 53075 &enable_so_wMTU_usb_cdc_mbim_extended_desc_53075
157894 +enable_so_tcp_established_options_fndecl_53081 tcp_established_options fndecl 0 53081 NULL nohasharray
157895 +enable_so_request_len_sg_io_v4_53081 request_len sg_io_v4 0 53081 &enable_so_tcp_established_options_fndecl_53081
157896 +enable_so_kmem_realloc_fndecl_53090 kmem_realloc fndecl 2 53090 NULL
157897 +enable_so_ext4_itable_unused_set_fndecl_53091 ext4_itable_unused_set fndecl 3 53091 NULL
157898 +enable_so_ntfs_dir_fsync_fndecl_53093 ntfs_dir_fsync fndecl 2 53093 NULL
157899 +enable_so_size_fuse_attr_53098 size fuse_attr 0 53098 NULL
157900 +enable_so_s_blocksize_minix3_super_block_53099 s_blocksize minix3_super_block 0 53099 NULL
157901 +enable_so_bitmap_dirty_bits_fndecl_53100 bitmap_dirty_bits fndecl 2 53100 NULL
157902 +enable_so_brcmf_fw_nvram_strip_fndecl_53102 brcmf_fw_nvram_strip fndecl 2 53102 NULL
157903 +enable_so_fb_max_width_vmw_private_53114 fb_max_width vmw_private 0 53114 NULL
157904 +enable_so_get_est_timing_fndecl_53119 get_est_timing fndecl 0 53119 NULL
157905 +enable_so_xz_dec_test_write_fndecl_53124 xz_dec_test_write fndecl 3 53124 NULL
157906 +enable_so_dma_tx_buf_bus_lpuart_port_53131 dma_tx_buf_bus lpuart_port 0 53131 NULL
157907 +enable_so_data_dma_td_53137 data_dma td 0 53137 NULL
157908 +enable_so_mmc_spi_readbytes_fndecl_53146 mmc_spi_readbytes fndecl 2 53146 NULL
157909 +enable_so_zlib_tr_stored_block_fndecl_53147 zlib_tr_stored_block fndecl 3 53147 NULL
157910 +enable_so_bdev_writeseg_fndecl_53148 bdev_writeseg fndecl 2-3 53148 NULL nohasharray
157911 +enable_so_vmalloc_32_user_fndecl_53148 vmalloc_32_user fndecl 1 53148 &enable_so_bdev_writeseg_fndecl_53148
157912 +enable_so_private_data_len_ib_cm_sidr_req_param_53150 private_data_len ib_cm_sidr_req_param 0 53150 NULL
157913 +enable_so_direct_IO_address_space_operations_53153 direct_IO address_space_operations 0 53153 NULL
157914 +enable_so_sb_blocksize_xfs_sb_53160 sb_blocksize xfs_sb 0 53160 NULL
157915 +enable_so_lpfc_debugfs_max_disc_trc_vardecl_lpfc_debugfs_c_53169 lpfc_debugfs_max_disc_trc vardecl_lpfc_debugfs.c 0 53169 NULL
157916 +enable_so_uhci_debug_lseek_fndecl_53171 uhci_debug_lseek fndecl 2 53171 NULL
157917 +enable_so_tegra_spi_start_tx_dma_fndecl_53177 tegra_spi_start_tx_dma fndecl 2 53177 NULL nohasharray
157918 +enable_so_db_addr_mlx5_ib_create_cq_53177 db_addr mlx5_ib_create_cq 0 53177 &enable_so_tegra_spi_start_tx_dma_fndecl_53177
157919 +enable_so_btrfs_wait_cache_io_fndecl_53181 btrfs_wait_cache_io fndecl 6 53181 NULL
157920 +enable_so_rate_min_snd_soc_pcm_stream_53186 rate_min snd_soc_pcm_stream 0 53186 NULL
157921 +enable_so_len_nxtfrm_brcmf_sdio_hdrinfo_53193 len_nxtfrm brcmf_sdio_hdrinfo 0 53193 NULL
157922 +enable_so_mpage_process_page_bufs_fndecl_53197 mpage_process_page_bufs fndecl 4 53197 NULL
157923 +enable_so_tcp_synack_options_fndecl_53200 tcp_synack_options fndecl 0 53200 NULL
157924 +enable_so_write_iter_file_operations_53218 write_iter file_operations 0 53218 NULL
157925 +enable_so_SYSC_mbind_fndecl_53221 SYSC_mbind fndecl 5 53221 NULL
157926 +enable_so_udf_block_map_fndecl_53224 udf_block_map fndecl 0 53224 NULL
157927 +enable_so_meta_slots_used_xenvif_rx_cb_53230 meta_slots_used xenvif_rx_cb 0 53230 NULL
157928 +enable_so_debugfs_reg_len_regmap_53235 debugfs_reg_len regmap 0 53235 NULL
157929 +enable_so_svcxdr_init_encode_from_buffer_fndecl_53239 svcxdr_init_encode_from_buffer fndecl 4 53239 NULL nohasharray
157930 +enable_so_mmc_test_rw_multiple_fndecl_53239 mmc_test_rw_multiple fndecl 3 53239 &enable_so_svcxdr_init_encode_from_buffer_fndecl_53239
157931 +enable_so_sys_sync_file_range2_fndecl_53247 sys_sync_file_range2 fndecl 3 53247 NULL
157932 +enable_so_btrfs_alloc_from_bitmap_fndecl_53249 btrfs_alloc_from_bitmap fndecl 4-0 53249 NULL
157933 +enable_so_vga_arb_write_fndecl_53251 vga_arb_write fndecl 3 53251 NULL
157934 +enable_so_simple_xattr_alloc_fndecl_53253 simple_xattr_alloc fndecl 2 53253 NULL
157935 +enable_so_rawv6_geticmpfilter_fndecl_53256 rawv6_geticmpfilter fndecl 0 53256 NULL
157936 +enable_so_readpos_ivtv_buffer_53258 readpos ivtv_buffer 0 53258 NULL
157937 +enable_so_qxl_bo_create_fndecl_53261 qxl_bo_create fndecl 2 53261 NULL nohasharray
157938 +enable_so_num_cq_mlx4_profile_53261 num_cq mlx4_profile 0 53261 &enable_so_qxl_bo_create_fndecl_53261
157939 +enable_so_rx_enable_fndecl_53262 rx_enable fndecl 2 53262 NULL
157940 +enable_so_asl_urb_dequeue_fndecl_53268 asl_urb_dequeue fndecl 3 53268 NULL
157941 +enable_so_update_dind_extent_range_fndecl_53271 update_dind_extent_range fndecl 3 53271 NULL
157942 +enable_so_ext3_readpages_fndecl_53283 ext3_readpages fndecl 4 53283 NULL
157943 +enable_so_maxreqs_nfsd4_channel_attrs_53285 maxreqs nfsd4_channel_attrs 0 53285 NULL
157944 +enable_so_alloc_vm_area_fndecl_53286 alloc_vm_area fndecl 1 53286 NULL
157945 +enable_so_b1_alloc_card_fndecl_53288 b1_alloc_card fndecl 1 53288 NULL
157946 +enable_so_compat_ptrace_request_fndecl_53296 compat_ptrace_request fndecl 3 53296 NULL
157947 +enable_so_vmalloc_exec_fndecl_53303 vmalloc_exec fndecl 1 53303 NULL
157948 +enable_so_fuse_ioctl_common_fndecl_53305 fuse_ioctl_common fndecl 2 53305 NULL
157949 +enable_so_dma_size_cx23885_audio_dev_53307 dma_size cx23885_audio_dev 0 53307 NULL
157950 +enable_so_max_fw_cmds_megasas_instance_53309 max_fw_cmds megasas_instance 0 53309 NULL
157951 +enable_so_isoc_in_usbatm_driver_53310 isoc_in usbatm_driver 0 53310 NULL nohasharray
157952 +enable_so___gfs2_free_blocks_fndecl_53310 __gfs2_free_blocks fndecl 2 53310 &enable_so_isoc_in_usbatm_driver_53310
157953 +enable_so_transport_get_sectors_10_fndecl_53319 transport_get_sectors_10 fndecl 0 53319 NULL
157954 +enable_so_nfsd4_block_get_device_info_simple_fndecl_53320 nfsd4_block_get_device_info_simple fndecl 0 53320 NULL
157955 +enable_so_s_inode_readahead_blks_ext4_sb_info_53337 s_inode_readahead_blks ext4_sb_info 0 53337 NULL
157956 +enable_so_snd_korg1212_copy_from_fndecl_53338 snd_korg1212_copy_from fndecl 6 53338 NULL
157957 +enable_so_write_end_address_space_operations_53339 write_end address_space_operations 0 53339 NULL
157958 +enable_so_SYSC_sched_getaffinity_fndecl_53347 SYSC_sched_getaffinity fndecl 2 53347 NULL
157959 +enable_so_ioc_len_libcfs_ioctl_hdr_53352 ioc_len libcfs_ioctl_hdr 0 53352 NULL
157960 +enable_so_id_intel_shared_dpll_53354 id intel_shared_dpll 0 53354 NULL
157961 +enable_so___xdr_inline_decode_fndecl_53363 __xdr_inline_decode fndecl 2 53363 NULL
157962 +enable_so_ramoops_init_przs_fndecl_53364 ramoops_init_przs fndecl 4 53364 NULL
157963 +enable_so_rsize_hid_device_53365 rsize hid_device 0 53365 NULL
157964 +enable_so_vfrontporch_v4l2_bt_timings_53369 vfrontporch v4l2_bt_timings 0 53369 NULL
157965 +enable_so_CIFSMaxBufSize_vardecl_53372 CIFSMaxBufSize vardecl 0 53372 NULL
157966 +enable_so_xdr_inline_pages_fndecl_53377 xdr_inline_pages fndecl 5 53377 NULL nohasharray
157967 +enable_so_SYSC_getxattr_fndecl_53377 SYSC_getxattr fndecl 4 53377 &enable_so_xdr_inline_pages_fndecl_53377
157968 +enable_so_viafb_iga1_odev_proc_write_fndecl_53378 viafb_iga1_odev_proc_write fndecl 3 53378 NULL
157969 +enable_so_dummy_urb_dequeue_fndecl_53380 dummy_urb_dequeue fndecl 3 53380 NULL
157970 +enable_so_scrub_stripe_fndecl_53387 scrub_stripe fndecl 5 53387 NULL
157971 +enable_so_isd200_action_fndecl_53390 isd200_action fndecl 4 53390 NULL
157972 +enable_so_ept_walk_addr_fndecl_53393 ept_walk_addr fndecl 3-4 53393 NULL nohasharray
157973 +enable_so_nfqnl_mangle_fndecl_53393 nfqnl_mangle fndecl 2 53393 &enable_so_ept_walk_addr_fndecl_53393
157974 +enable_so_wil_agg_size_fndecl_53398 wil_agg_size fndecl 0-2 53398 NULL
157975 +enable_so_irda_recvmsg_stream_fndecl_53403 irda_recvmsg_stream fndecl 3 53403 NULL nohasharray
157976 +enable_so_freqValTelevision_pvr2_hdw_53403 freqValTelevision pvr2_hdw 0 53403 &enable_so_irda_recvmsg_stream_fndecl_53403
157977 +enable_so_num_entries_s2io_nic_53404 num_entries s2io_nic 0 53404 NULL
157978 +enable_so_len_nft_cmp_fast_expr_53407 len nft_cmp_fast_expr 0 53407 NULL
157979 +enable_so_scatterwalk_advance_fndecl_53413 scatterwalk_advance fndecl 2 53413 NULL
157980 +enable_so_cfs_hash_buckets_realloc_fndecl_53415 cfs_hash_buckets_realloc fndecl 4 53415 NULL
157981 +enable_so_vlan_dev_set_egress_priority_fndecl_53418 vlan_dev_set_egress_priority fndecl 3 53418 NULL nohasharray
157982 +enable_so_rxHeader3_edgeport_serial_53418 rxHeader3 edgeport_serial 0 53418 &enable_so_vlan_dev_set_egress_priority_fndecl_53418
157983 +enable_so_codec_reg_read_file_fndecl_53419 codec_reg_read_file fndecl 3 53419 NULL
157984 +enable_so_expand_stack_fndecl_53426 expand_stack fndecl 2 53426 NULL
157985 +enable_so_compat_sys_mbind_fndecl_53427 compat_sys_mbind fndecl 2-1-5 53427 NULL
157986 +enable_so_len_type_frame_head_53438 len type_frame_head 0 53438 NULL nohasharray
157987 +enable_so_chipsize_nand_chip_53438 chipsize nand_chip 0 53438 &enable_so_len_type_frame_head_53438
157988 +enable_so_unix_stream_recvmsg_fndecl_53441 unix_stream_recvmsg fndecl 3 53441 NULL nohasharray
157989 +enable_so_cfg80211_rx_mlme_mgmt_fndecl_53441 cfg80211_rx_mlme_mgmt fndecl 3 53441 &enable_so_unix_stream_recvmsg_fndecl_53441
157990 +enable_so_ad7879_spi_xfer_fndecl_53444 ad7879_spi_xfer fndecl 3 53444 NULL
157991 +enable_so_reqsize_crypto_ahash_53448 reqsize crypto_ahash 0 53448 NULL
157992 +enable_so_c_blkno_ocfs2_chain_rec_53466 c_blkno ocfs2_chain_rec 0 53466 NULL
157993 +enable_so_nfs_map_uid_to_name_fndecl_53467 nfs_map_uid_to_name fndecl 0 53467 NULL
157994 +enable_so_jbd2_journal_init_revoke_table_fndecl_53475 jbd2_journal_init_revoke_table fndecl 1 53475 NULL
157995 +enable_so_new_chunk_sectors_mddev_53479 new_chunk_sectors mddev 0 53479 NULL
157996 +enable_so_ext2_nfs_get_inode_fndecl_53480 ext2_nfs_get_inode fndecl 2 53480 NULL
157997 +enable_so_nfs4_proc_readlink_fndecl_53484 nfs4_proc_readlink fndecl 4 53484 NULL nohasharray
157998 +enable_so_ath6kl_regwrite_write_fndecl_53484 ath6kl_regwrite_write fndecl 3 53484 &enable_so_nfs4_proc_readlink_fndecl_53484
157999 +enable_so_usCRTC_V_SyncWidth__ATOM_MODE_TIMING_53489 usCRTC_V_SyncWidth _ATOM_MODE_TIMING 0 53489 NULL nohasharray
158000 +enable_so_len_rx_pool_53489 len rx_pool 0 53489 &enable_so_usCRTC_V_SyncWidth__ATOM_MODE_TIMING_53489
158001 +enable_so_len_nft_cmp_expr_53491 len nft_cmp_expr 0 53491 NULL
158002 +enable_so_isdn_getnum_fndecl_53492 isdn_getnum fndecl 0 53492 NULL
158003 +enable_so_get_allocated_memblock_memory_regions_info_fndecl_53495 get_allocated_memblock_memory_regions_info fndecl 0 53495 NULL nohasharray
158004 +enable_so_subctxt_cnt_qib_ctxtdata_53495 subctxt_cnt qib_ctxtdata 0 53495 &enable_so_get_allocated_memblock_memory_regions_info_fndecl_53495
158005 +enable_so_lc_create_fndecl_53503 lc_create fndecl 4 53503 NULL
158006 +enable_so_mthca_buf_alloc_fndecl_53510 mthca_buf_alloc fndecl 2 53510 NULL nohasharray
158007 +enable_so_data_out_size_mpt2_ioctl_command_53510 data_out_size mpt2_ioctl_command 0 53510 &enable_so_mthca_buf_alloc_fndecl_53510
158008 +enable_so_mmc_io_rw_extended_fndecl_53515 mmc_io_rw_extended fndecl 8-7 53515 NULL
158009 +enable_so_max_dev_vardecl_osst_c_53523 max_dev vardecl_osst.c 0 53523 NULL
158010 +enable_so_address_ib_umem_53524 address ib_umem 0 53524 NULL
158011 +enable_so_ipw2100_set_short_retry_fndecl_53529 ipw2100_set_short_retry fndecl 2 53529 NULL
158012 +enable_so_fsinfo_sector_msdos_sb_info_53531 fsinfo_sector msdos_sb_info 0 53531 NULL nohasharray
158013 +enable_so_m_max_mds_ceph_mdsmap_53531 m_max_mds ceph_mdsmap 0 53531 &enable_so_fsinfo_sector_msdos_sb_info_53531
158014 +enable_so_unix_seqpacket_sendmsg_fndecl_53534 unix_seqpacket_sendmsg fndecl 3 53534 NULL
158015 +enable_so_ieee80211_if_fmt_dot11MeshRetryTimeout_fndecl_53537 ieee80211_if_fmt_dot11MeshRetryTimeout fndecl 3 53537 NULL
158016 +enable_so_tcp_mark_head_lost_fndecl_53540 tcp_mark_head_lost fndecl 2 53540 NULL
158017 +enable_so_uwb_rc_cmd_done_fndecl_53543 uwb_rc_cmd_done fndecl 4 53543 NULL
158018 +enable_so_start_extent_state_53546 start extent_state 0 53546 NULL nohasharray
158019 +enable_so_token_kvm_arch_async_pf_53546 token kvm_arch_async_pf 0 53546 &enable_so_start_extent_state_53546
158020 +enable_so_vactive_hi_lvds_dvo_timing_53549 vactive_hi lvds_dvo_timing 0 53549 NULL nohasharray
158021 +enable_so_plcp_iwl_rate_info_53549 plcp iwl_rate_info 0 53549 &enable_so_vactive_hi_lvds_dvo_timing_53549 nohasharray
158022 +enable_so_block_size_partition_53549 block_size partition 0 53549 &enable_so_plcp_iwl_rate_info_53549
158023 +enable_so_height_rcar_vin_cam_53550 height rcar_vin_cam 0 53550 NULL
158024 +enable_so_num_req_vfs_i40e_pf_53554 num_req_vfs i40e_pf 0 53554 NULL
158025 +enable_so_vnode_afs_fid_53569 vnode afs_fid 0 53569 NULL
158026 +enable_so_sctp_tsnmap_mark_fndecl_53578 sctp_tsnmap_mark fndecl 2 53578 NULL
158027 +enable_so_log_mpt_sz_mlx4_init_hca_param_53586 log_mpt_sz mlx4_init_hca_param 0 53586 NULL
158028 +enable_so_tokens_size_cfg80211_wowlan_tcp_53588 tokens_size cfg80211_wowlan_tcp 0 53588 NULL nohasharray
158029 +enable_so_num_ports_mlx4_caps_53588 num_ports mlx4_caps 0 53588 &enable_so_tokens_size_cfg80211_wowlan_tcp_53588
158030 +enable_so_mlx5_get_gid_table_len_fndecl_53590 mlx5_get_gid_table_len fndecl 0-1 53590 NULL
158031 +enable_so_nr_labels_pktgen_dev_53591 nr_labels pktgen_dev 0 53591 NULL
158032 +enable_so_ocfs2_orphan_filldir_fndecl_53593 ocfs2_orphan_filldir fndecl 5 53593 NULL
158033 +enable_so_cow_file_range_async_fndecl_53595 cow_file_range_async fndecl 3-4 53595 NULL
158034 +enable_so_nilfs_load_super_block_fndecl_53596 nilfs_load_super_block fndecl 3 53596 NULL
158035 +enable_so_ramoops_pmsg_size_vardecl_ram_c_53601 ramoops_pmsg_size vardecl_ram.c 0 53601 NULL
158036 +enable_so_xfs_add_to_ioend_fndecl_53604 xfs_add_to_ioend fndecl 3 53604 NULL
158037 +enable_so_hwptr_done_snd_usb_substream_53606 hwptr_done snd_usb_substream 0 53606 NULL
158038 +enable_so_put_cmsg_compat_fndecl_53618 put_cmsg_compat fndecl 4 53618 NULL
158039 +enable_so_root_writeset_metadata_53620 root writeset_metadata 0 53620 NULL nohasharray
158040 +enable_so_header_len_tso_state_53620 header_len tso_state 0 53620 &enable_so_root_writeset_metadata_53620
158041 +enable_so_pc_npartners_ptlrpcd_ctl_53625 pc_npartners ptlrpcd_ctl 0 53625 NULL
158042 +enable_so_num_channels_mlx5e_params_53632 num_channels mlx5e_params 0 53632 NULL
158043 +enable_so_b43legacy_dma_set_mask_fndecl_53635 b43legacy_dma_set_mask fndecl 2 53635 NULL
158044 +enable_so_selfballoon_downhysteresis_vardecl_xen_selfballoon_c_53636 selfballoon_downhysteresis vardecl_xen-selfballoon.c 0 53636 NULL
158045 +enable_so_ticket2_len_rxk5_key_53644 ticket2_len rxk5_key 0 53644 NULL
158046 +enable_so_write_file_antenna_fndecl_53645 write_file_antenna fndecl 3 53645 NULL nohasharray
158047 +enable_so_kuc_alloc_fndecl_53645 kuc_alloc fndecl 1 53645 &enable_so_write_file_antenna_fndecl_53645
158048 +enable_so_ioc_plen2_obd_ioctl_data_53648 ioc_plen2 obd_ioctl_data 0 53648 NULL
158049 +enable_so_generic_ocp_read_fndecl_53653 generic_ocp_read fndecl 3 53653 NULL
158050 +enable_so_acl_alloc_fndecl_53656 acl_alloc fndecl 1 53656 NULL
158051 +enable_so_page_add_anon_rmap_fndecl_53660 page_add_anon_rmap fndecl 3 53660 NULL
158052 +enable_so_ss_tss_segment_32_53663 ss tss_segment_32 0 53663 NULL
158053 +enable_so_hr_data_len_hsm_request_53666 hr_data_len hsm_request 0 53666 NULL
158054 +enable_so_num_sge_ib_uverbs_send_wr_53667 num_sge ib_uverbs_send_wr 0 53667 NULL
158055 +enable_so_apparmor_hash_size_vardecl_crypto_c_53670 apparmor_hash_size vardecl_crypto.c 0 53670 NULL
158056 +enable_so___videobuf_alloc_fndecl_53676 __videobuf_alloc fndecl 1 53676 NULL
158057 +enable_so_console_store_fndecl_53684 console_store fndecl 4 53684 NULL
158058 +enable_so_length_acpi_memory_info_53691 length acpi_memory_info 0 53691 NULL nohasharray
158059 +enable_so_lov_mds_md_max_stripe_count_fndecl_53691 lov_mds_md_max_stripe_count fndecl 0-1 53691 &enable_so_length_acpi_memory_info_53691
158060 +enable_so_i_depth_gfs2_inode_53692 i_depth gfs2_inode 0 53692 NULL
158061 +enable_so_length_iscsi_pdu_53695 length iscsi_pdu 0 53695 NULL
158062 +enable_so_vgt_balloon_space_fndecl_53697 vgt_balloon_space fndecl 3-4 53697 NULL
158063 +enable_so_qlge_change_mtu_fndecl_53706 qlge_change_mtu fndecl 2 53706 NULL
158064 +enable_so_pos_hdpvr_buffer_53708 pos hdpvr_buffer 0 53708 NULL
158065 +enable_so_did_create_dir_fndecl_53709 did_create_dir fndecl 2 53709 NULL
158066 +enable_so_create_header_ops_53712 create header_ops 0 53712 NULL
158067 +enable_so_xdr_inline_decode_fndecl_53721 xdr_inline_decode fndecl 2 53721 NULL
158068 +enable_so_sys_init_module_fndecl_53724 sys_init_module fndecl 2 53724 NULL
158069 +enable_so_mtip_hw_read_device_status_fndecl_53729 mtip_hw_read_device_status fndecl 3 53729 NULL
158070 +enable_so_ino_xfs_fid64_53730 ino xfs_fid64 0 53730 NULL
158071 +enable_so_snd_pcm_plug_read_transfer_fndecl_53731 snd_pcm_plug_read_transfer fndecl 0-3 53731 NULL
158072 +enable_so_adp5588_build_gpiomap_fndecl_53733 adp5588_build_gpiomap fndecl 0 53733 NULL
158073 +enable_so_max_data_size_vardecl_hsi_char_c_53736 max_data_size vardecl_hsi_char.c 0 53736 NULL
158074 +enable_so_chunk_size_stripe_c_53745 chunk_size stripe_c 0 53745 NULL
158075 +enable_so_write_emulate_fndecl_53746 write_emulate fndecl 2 53746 NULL
158076 +enable_so_get_crop_info_h_s5p_mfc_hw_ops_53747 get_crop_info_h s5p_mfc_hw_ops 0 53747 NULL
158077 +enable_so_ieee80211_if_fmt_peer_fndecl_53748 ieee80211_if_fmt_peer fndecl 3 53748 NULL nohasharray
158078 +enable_so_count_user_sgmap_53748 count user_sgmap 0 53748 &enable_so_ieee80211_if_fmt_peer_fndecl_53748
158079 +enable_so_buf_addr_mlx5_ib_create_cq_53754 buf_addr mlx5_ib_create_cq 0 53754 NULL nohasharray
158080 +enable_so_ext3_new_blocks_fndecl_53754 ext3_new_blocks fndecl 3 53754 &enable_so_buf_addr_mlx5_ib_create_cq_53754
158081 +enable_so_ieee80211_if_write_tsf_fndecl_53758 ieee80211_if_write_tsf fndecl 3 53758 NULL nohasharray
158082 +enable_so_SenderSize_aac_fibhdr_53758 SenderSize aac_fibhdr 0 53758 &enable_so_ieee80211_if_write_tsf_fndecl_53758
158083 +enable_so_dies_onenand_chip_53762 dies onenand_chip 0 53762 NULL
158084 +enable_so_end_nilfs_write_info_53770 end nilfs_write_info 0 53770 NULL
158085 +enable_so_vxge_config_vpaths_fndecl_53775 vxge_config_vpaths fndecl 0 53775 NULL
158086 +enable_so_do_sendfile_fndecl_53777 do_sendfile fndecl 5-4 53777 NULL
158087 +enable_so_ibh_mr_shift_kib_hca_dev_53785 ibh_mr_shift kib_hca_dev 0 53785 NULL
158088 +enable_so_locations_count_nfsd4_fs_locations_53786 locations_count nfsd4_fs_locations 0 53786 NULL
158089 +enable_so_Control_2_RxD_t_53794 Control_2 RxD_t 0 53794 NULL nohasharray
158090 +enable_so_qlcnic_process_rcv_fndecl_53794 qlcnic_process_rcv fndecl 4 53794 &enable_so_Control_2_RxD_t_53794
158091 +enable_so_epnum_isp1362_ep_53803 epnum isp1362_ep 0 53803 NULL nohasharray
158092 +enable_so_osd_req_list_collection_objects_fndecl_53803 osd_req_list_collection_objects fndecl 5 53803 &enable_so_epnum_isp1362_ep_53803
158093 +enable_so_msix_count_xhci_hcd_53816 msix_count xhci_hcd 0 53816 NULL
158094 +enable_so_tty_copy_to_user_fndecl_53819 tty_copy_to_user fndecl 4 53819 NULL
158095 +enable_so_doorbell_start_nes_device_53820 doorbell_start nes_device 0 53820 NULL
158096 +enable_so_choose_rate_fndecl_53821 choose_rate fndecl 3 53821 NULL nohasharray
158097 +enable_so_tx_data_ep_usb_card_rec_53821 tx_data_ep usb_card_rec 0 53821 &enable_so_choose_rate_fndecl_53821
158098 +enable_so_smem_len_fb_fix_screeninfo_53824 smem_len fb_fix_screeninfo 0 53824 NULL
158099 +enable_so_gsmtty_write_fndecl_53837 gsmtty_write fndecl 3 53837 NULL
158100 +enable_so_num_sensors_ibmpex_bmc_data_53838 num_sensors ibmpex_bmc_data 0 53838 NULL
158101 +enable_so_xillybus_read_fndecl_53845 xillybus_read fndecl 3 53845 NULL
158102 +enable_so_ext4_mb_discard_group_preallocations_fndecl_53854 ext4_mb_discard_group_preallocations fndecl 2 53854 NULL
158103 +enable_so_saa7134_i2c_eeprom_fndecl_53866 saa7134_i2c_eeprom fndecl 3 53866 NULL
158104 +enable_so_data_len_msgbuf_rx_complete_53868 data_len msgbuf_rx_complete 0 53868 NULL
158105 +enable_so_discard_alignment_hd_struct_53874 discard_alignment hd_struct 0 53874 NULL
158106 +enable_so_br_fill_ifvlaninfo_range_fndecl_53875 br_fill_ifvlaninfo_range fndecl 2-3 53875 NULL
158107 +enable_so_buffer_blocks_st_buffer_53878 buffer_blocks st_buffer 0 53878 NULL
158108 +enable_so_nilfs_sufile_set_segment_usage_fndecl_53885 nilfs_sufile_set_segment_usage fndecl 2 53885 NULL
158109 +enable_so_path_getxattr_fndecl_53886 path_getxattr fndecl 4 53886 NULL
158110 +enable_so_drbd_setbufsize_fndecl_53887 drbd_setbufsize fndecl 2 53887 NULL
158111 +enable_so_e1000_consume_page_fndecl_53903 e1000_consume_page fndecl 3 53903 NULL
158112 +enable_so_image_len_brcmf_usbdev_info_53909 image_len brcmf_usbdev_info 0 53909 NULL
158113 +enable_so_vop_len_solo_enc_dev_53910 vop_len solo_enc_dev 0 53910 NULL
158114 +enable_so_snd_rawmidi_kernel_read1_fndecl_53911 snd_rawmidi_kernel_read1 fndecl 4-0 53911 NULL nohasharray
158115 +enable_so_oobavail_jffs2_sb_info_53911 oobavail jffs2_sb_info 0 53911 &enable_so_snd_rawmidi_kernel_read1_fndecl_53911
158116 +enable_so_cxgbi_device_register_fndecl_53913 cxgbi_device_register fndecl 2-1 53913 NULL
158117 +enable_so_fc_exch_mgr_alloc_fndecl_53916 fc_exch_mgr_alloc fndecl 3-4 53916 NULL
158118 +enable_so_ad_bytes_x86_instruction_info_53919 ad_bytes x86_instruction_info 0 53919 NULL
158119 +enable_so_gfs2_free_uninit_di_fndecl_53924 gfs2_free_uninit_di fndecl 2 53924 NULL
158120 +enable_so_usb_stor_sg_tablesize_fndecl_53929 usb_stor_sg_tablesize fndecl 0 53929 NULL
158121 +enable_so_seqnr_ksm_scan_53936 seqnr ksm_scan 0 53936 NULL
158122 +enable_so_depth_tm6000_fmt_53938 depth tm6000_fmt 0 53938 NULL nohasharray
158123 +enable_so_find_dir_range_fndecl_53938 find_dir_range fndecl 3 53938 &enable_so_depth_tm6000_fmt_53938
158124 +enable_so_ip4ip6_err_fndecl_53943 ip4ip6_err fndecl 5 53943 NULL nohasharray
158125 +enable_so__find_first_zero_bit_be_fndecl_53943 _find_first_zero_bit_be fndecl 0 53943 &enable_so_ip4ip6_err_fndecl_53943
158126 +enable_so_buffer_end_nm256_53949 buffer_end nm256 0 53949 NULL
158127 +enable_so_p_size_drbd_device_53954 p_size drbd_device 0 53954 NULL
158128 +enable_so_hiddev_ioctl_fndecl_53955 hiddev_ioctl fndecl 2 53955 NULL
158129 +enable_so_tcf_csum_ipv6_tcp_fndecl_53957 tcf_csum_ipv6_tcp fndecl 3 53957 NULL
158130 +enable_so_c_srate_f_uac2_opts_53962 c_srate f_uac2_opts 0 53962 NULL
158131 +enable_so_rx_buf_sz_cp_private_53982 rx_buf_sz cp_private 0 53982 NULL
158132 +enable_so_nfs_proc_mknod_fndecl_53987 nfs_proc_mknod fndecl 4 53987 NULL
158133 +enable_so_cm_write_fndecl_53993 cm_write fndecl 3 53993 NULL
158134 +enable_so_btrfs_init_new_buffer_fndecl_53996 btrfs_init_new_buffer fndecl 3 53996 NULL
158135 +enable_so_size_drbd_interval_54002 size drbd_interval 0 54002 NULL nohasharray
158136 +enable_so_int_hardware_entry_fndecl_54002 int_hardware_entry fndecl 3 54002 &enable_so_size_drbd_interval_54002
158137 +enable_so_ax88179_change_mtu_fndecl_54007 ax88179_change_mtu fndecl 2 54007 NULL
158138 +enable_so_submit_stripe_bio_fndecl_54016 submit_stripe_bio fndecl 4 54016 NULL
158139 +enable_so_ext3_htree_store_dirent_fndecl_54018 ext3_htree_store_dirent fndecl 3-2 54018 NULL
158140 +enable_so_rsi_setblocklength_fndecl_54024 rsi_setblocklength fndecl 2 54024 NULL
158141 +enable_so_dlen_hci_vendor_hdr_54025 dlen hci_vendor_hdr 0 54025 NULL
158142 +enable_so_s_nextid_exofs_sb_info_54042 s_nextid exofs_sb_info 0 54042 NULL
158143 +enable_so_sierra_write_fndecl_54049 sierra_write fndecl 4 54049 NULL
158144 +enable_so__iwl_dbgfs_uapsd_misbehaving_write_fndecl_54054 _iwl_dbgfs_uapsd_misbehaving_write fndecl 3 54054 NULL
158145 +enable_so_process_ptload_program_headers_elf32_fndecl_54067 process_ptload_program_headers_elf32 fndecl 3-2 54067 NULL
158146 +enable_so_width_fb_image_54071 width fb_image 0 54071 NULL
158147 +enable_so_i_next_section_offset_iso_inode_info_54074 i_next_section_offset iso_inode_info 0 54074 NULL
158148 +enable_so_xennet_change_mtu_fndecl_54076 xennet_change_mtu fndecl 2 54076 NULL nohasharray
158149 +enable_so_afs_alloc_flat_call_fndecl_54076 afs_alloc_flat_call fndecl 2-3 54076 &enable_so_xennet_change_mtu_fndecl_54076
158150 +enable_so_bytes_cifs_writedata_54089 bytes cifs_writedata 0 54089 NULL
158151 +enable_so_get_mtu_xfrm_type_54090 get_mtu xfrm_type 0 54090 NULL
158152 +enable_so_sctp_tsnmap_init_fndecl_54093 sctp_tsnmap_init fndecl 3-2 54093 NULL
158153 +enable_so_bytes_read_usbvision_frame_54101 bytes_read usbvision_frame 0 54101 NULL
158154 +enable_so_xfs_rtmodify_summary_int_fndecl_54118 xfs_rtmodify_summary_int fndecl 4-3 54118 NULL
158155 +enable_so_vringh_iov_push_kern_fndecl_54119 vringh_iov_push_kern fndecl 3 54119 NULL
158156 +enable_so_skb_trim_fndecl_54132 skb_trim fndecl 2 54132 NULL
158157 +enable_so_io_offset_xfs_ioend_54137 io_offset xfs_ioend 0 54137 NULL
158158 +enable_so_tcf_csum_ipv6_udp_fndecl_54138 tcf_csum_ipv6_udp fndecl 3 54138 NULL
158159 +enable_so_change_protection_range_fndecl_54141 change_protection_range fndecl 3-2 54141 NULL
158160 +enable_so_netvsc_change_mtu_fndecl_54142 netvsc_change_mtu fndecl 2 54142 NULL
158161 +enable_so_brcmf_usb_dl_writeimage_fndecl_54144 brcmf_usb_dl_writeimage fndecl 3 54144 NULL
158162 +enable_so_sm501_select_clock_fndecl_54146 sm501_select_clock fndecl 0 54146 NULL
158163 +enable_so_hs_cur_bits_cfs_hash_54147 hs_cur_bits cfs_hash 0 54147 NULL
158164 +enable_so_last_rx_rate_vht_nss_sta_info_54155 last_rx_rate_vht_nss sta_info 0 54155 NULL
158165 +enable_so_sp2_write_i2c_fndecl_54157 sp2_write_i2c fndecl 4 54157 NULL nohasharray
158166 +enable_so___hwahc_op_set_ptk_fndecl_54157 __hwahc_op_set_ptk fndecl 5 54157 &enable_so_sp2_write_i2c_fndecl_54157
158167 +enable_so_num_qp_mthca_profile_54160 num_qp mthca_profile 0 54160 NULL
158168 +enable_so_b43_nphy_load_samples_fndecl_54162 b43_nphy_load_samples fndecl 3 54162 NULL
158169 +enable_so_lock_and_cleanup_extent_if_need_fndecl_54163 lock_and_cleanup_extent_if_need fndecl 3-4 54163 NULL
158170 +enable_so_unit_btrfs_free_space_ctl_54164 unit btrfs_free_space_ctl 0 54164 NULL
158171 +enable_so_ip6_append_data_fndecl_54169 ip6_append_data fndecl 5-4 54169 NULL nohasharray
158172 +enable_so_writebuf_size_tomoyo_io_buffer_54169 writebuf_size tomoyo_io_buffer 0 54169 &enable_so_ip6_append_data_fndecl_54169
158173 +enable_so_len_xfs_alloc_arg_54187 len xfs_alloc_arg 0 54187 NULL
158174 +enable_so_nfs_llseek_dir_fndecl_54192 nfs_llseek_dir fndecl 2 54192 NULL nohasharray
158175 +enable_so__iwl_dbgfs_fw_nmi_write_fndecl_54192 _iwl_dbgfs_fw_nmi_write fndecl 3 54192 &enable_so_nfs_llseek_dir_fndecl_54192
158176 +enable_so_tp_ep_bcm5974_config_54193 tp_ep bcm5974_config 0 54193 NULL
158177 +enable_so_mcam_v4l_read_fndecl_54194 mcam_v4l_read fndecl 3 54194 NULL
158178 +enable_so_current_speed_ide_drive_s_54197 current_speed ide_drive_s 0 54197 NULL
158179 +enable_so_ipw2100_set_essid_fndecl_54200 ipw2100_set_essid fndecl 3 54200 NULL
158180 +enable_so_p_filesz_elf32_phdr_54204 p_filesz elf32_phdr 0 54204 NULL nohasharray
158181 +enable_so_contexts_nouveau_fence_priv_54204 contexts nouveau_fence_priv 0 54204 &enable_so_p_filesz_elf32_phdr_54204
158182 +enable_so_min_priority_binder_node_54207 min_priority binder_node 0 54207 NULL nohasharray
158183 +enable_so_nframes_bcm_msg_head_54207 nframes bcm_msg_head 0 54207 &enable_so_min_priority_binder_node_54207
158184 +enable_so_mxt_bootloader_write_fndecl_54210 mxt_bootloader_write fndecl 3 54210 NULL nohasharray
158185 +enable_so___lock_page_killable_fndecl_54210 __lock_page_killable fndecl 0 54210 &enable_so_mxt_bootloader_write_fndecl_54210
158186 +enable_so_page_offset_ixgbe_rx_buffer_54214 page_offset ixgbe_rx_buffer 0 54214 NULL
158187 +enable_so_append_frame_to_pkt_fndecl_54220 append_frame_to_pkt fndecl 2 54220 NULL nohasharray
158188 +enable_so_tx_ring_size_ql_adapter_54220 tx_ring_size ql_adapter 0 54220 &enable_so_append_frame_to_pkt_fndecl_54220
158189 +enable_so_btrfs_get_token_64_fndecl_54223 btrfs_get_token_64 fndecl 0 54223 NULL nohasharray
158190 +enable_so_numeraseregions_mtd_info_54223 numeraseregions mtd_info 0 54223 &enable_so_btrfs_get_token_64_fndecl_54223
158191 +enable_so_num_boxes_intel_uncore_type_54227 num_boxes intel_uncore_type 0 54227 NULL
158192 +enable_so_vbi_hlen_saa7134_dev_54228 vbi_hlen saa7134_dev 0 54228 NULL
158193 +enable_so___kfifo_to_user_fndecl_54232 __kfifo_to_user fndecl 3 54232 NULL
158194 +enable_so_skb_copy_and_csum_datagram_msg_fndecl_54237 skb_copy_and_csum_datagram_msg fndecl 2 54237 NULL nohasharray
158195 +enable_so_max_cbs_ntb_device_54237 max_cbs ntb_device 0 54237 &enable_so_skb_copy_and_csum_datagram_msg_fndecl_54237
158196 +enable_so_pcnet32_realloc_rx_ring_fndecl_54245 pcnet32_realloc_rx_ring fndecl 3 54245 NULL
158197 +enable_so_la_last_gd_ocfs2_super_54246 la_last_gd ocfs2_super 0 54246 NULL
158198 +enable_so_num_counters_compat_ipt_replace_54249 num_counters compat_ipt_replace 0 54249 NULL
158199 +enable_so___erst_read_fndecl_54256 __erst_read fndecl 1 54256 NULL
158200 +enable_so_qnx6_iget_fndecl_54262 qnx6_iget fndecl 2 54262 NULL
158201 +enable_so_txrx_bufs_spi_bitbang_54265 txrx_bufs spi_bitbang 0 54265 NULL
158202 +enable_so_src_btrfs_ioctl_qgroup_assign_args_54267 src btrfs_ioctl_qgroup_assign_args 0 54267 NULL
158203 +enable_so_put_cmsg_fndecl_54270 put_cmsg fndecl 4 54270 NULL
158204 +enable_so_gf_numsrc_group_filter_54274 gf_numsrc group_filter 0 54274 NULL
158205 +enable_so_msdu_len_htt_rx_in_ord_msdu_desc_54278 msdu_len htt_rx_in_ord_msdu_desc 0 54278 NULL
158206 +enable_so_get_descriptor_ptr_fndecl_54282 get_descriptor_ptr fndecl 2 54282 NULL
158207 +enable_so_fat_file_fsync_fndecl_54291 fat_file_fsync fndecl 2 54291 NULL
158208 +enable_so_ntfs_attr_extend_initialized_fndecl_54303 ntfs_attr_extend_initialized fndecl 2 54303 NULL nohasharray
158209 +enable_so_count_ext4_new_flex_group_data_54303 count ext4_new_flex_group_data 0 54303 &enable_so_ntfs_attr_extend_initialized_fndecl_54303
158210 +enable_so_imsf_numsrc_ip_msfilter_54312 imsf_numsrc ip_msfilter 0 54312 NULL
158211 +enable_so_pvr2_issue_simple_cmd_fndecl_54313 pvr2_issue_simple_cmd fndecl 2 54313 NULL
158212 +enable_so_capi_write_fndecl_54323 capi_write fndecl 3 54323 NULL
158213 +enable_so_ide_settings_proc_write_fndecl_54325 ide_settings_proc_write fndecl 3 54325 NULL
158214 +enable_so_nla_alloc_flow_actions_fndecl_54328 nla_alloc_flow_actions fndecl 1 54328 NULL
158215 +enable_so_length_acpi_table_header_54332 length acpi_table_header 0 54332 NULL
158216 +enable_so_vringh_iov_push_user_fndecl_54340 vringh_iov_push_user fndecl 3 54340 NULL
158217 +enable_so_message_stats_print_fndecl_54341 message_stats_print fndecl 6 54341 NULL
158218 +enable_so_max_rcvbuf_size_tipc_server_54342 max_rcvbuf_size tipc_server 0 54342 NULL
158219 +enable_so_wm8997_set_fll_fndecl_54349 wm8997_set_fll fndecl 4-5 54349 NULL
158220 +enable_so_p_offset_elf32_phdr_54352 p_offset elf32_phdr 0 54352 NULL
158221 +enable_so_hfsplus_block_allocate_fndecl_54353 hfsplus_block_allocate fndecl 0-3-2 54353 NULL
158222 +enable_so_s_fpbmask_ufs_sb_private_info_54354 s_fpbmask ufs_sb_private_info 0 54354 NULL
158223 +enable_so_encode_netobj_fndecl_54356 encode_netobj fndecl 3 54356 NULL
158224 +enable_so_tpm_tis_i2c_send_fndecl_54358 tpm_tis_i2c_send fndecl 3 54358 NULL
158225 +enable_so_pkt_size_rx_pkt_status_54360 pkt_size rx_pkt_status 0 54360 NULL
158226 +enable_so_gntdev_alloc_map_fndecl_54362 gntdev_alloc_map fndecl 2 54362 NULL
158227 +enable_so_ceph_get_caps_fndecl_54363 ceph_get_caps fndecl 0 54363 NULL
158228 +enable_so_size_ramoops_context_54365 size ramoops_context 0 54365 NULL
158229 +enable_so_msr_rsc_54369 msr rsc 0 54369 NULL
158230 +enable_so_usb_cdc_wdm_register_fndecl_54371 usb_cdc_wdm_register fndecl 3 54371 NULL nohasharray
158231 +enable_so_mlx4_ib_get_cq_umem_fndecl_54371 mlx4_ib_get_cq_umem fndecl 5 54371 &enable_so_usb_cdc_wdm_register_fndecl_54371
158232 +enable_so_scif_setup_qp_connect_fndecl_54372 scif_setup_qp_connect fndecl 3 54372 NULL
158233 +enable_so_saved_priority_binder_transaction_54377 saved_priority binder_transaction 0 54377 NULL
158234 +enable_so_ieee80211_aes_key_setup_encrypt_fndecl_54383 ieee80211_aes_key_setup_encrypt fndecl 3 54383 NULL
158235 +enable_so_nbufs_mlx4_buf_54391 nbufs mlx4_buf 0 54391 NULL
158236 +enable_so_memsize_viafb_par_54399 memsize viafb_par 0 54399 NULL nohasharray
158237 +enable_so_SyS_init_module_fndecl_54399 SyS_init_module fndecl 2 54399 &enable_so_memsize_viafb_par_54399
158238 +enable_so_leaf_shift_left_fndecl_54401 leaf_shift_left fndecl 3 54401 NULL nohasharray
158239 +enable_so_striped_read_fndecl_54401 striped_read fndecl 0-2 54401 &enable_so_leaf_shift_left_fndecl_54401 nohasharray
158240 +enable_so_security_key_getsecurity_fndecl_54401 security_key_getsecurity fndecl 0 54401 &enable_so_striped_read_fndecl_54401
158241 +enable_so__osd_req_alist_elem_size_fndecl_54403 _osd_req_alist_elem_size fndecl 2 54403 NULL
158242 +enable_so_gr_ep0_respond_fndecl_54405 gr_ep0_respond fndecl 3 54405 NULL
158243 +enable_so_xfs_bmap_count_tree_fndecl_54407 xfs_bmap_count_tree fndecl 4 54407 NULL
158244 +enable_so_xfs_ialloc_ag_select_fndecl_54409 xfs_ialloc_ag_select fndecl 2-0 54409 NULL nohasharray
158245 +enable_so_wp_retry_size_smb_version_operations_54409 wp_retry_size smb_version_operations 0 54409 &enable_so_xfs_ialloc_ag_select_fndecl_54409
158246 +enable_so_mthca_alloc_icm_coherent_fndecl_54412 mthca_alloc_icm_coherent fndecl 3 54412 NULL
158247 +enable_so_snd_usbmidi_raw_input_fndecl_54415 snd_usbmidi_raw_input fndecl 3 54415 NULL
158248 +enable_so_compat_SyS_pselect6_fndecl_54416 compat_SyS_pselect6 fndecl 1 54416 NULL
158249 +enable_so_nrof_flowrings_brcmf_bus_msgbuf_54417 nrof_flowrings brcmf_bus_msgbuf 0 54417 NULL
158250 +enable_so_qlcnic_process_lro_fndecl_54418 qlcnic_process_lro fndecl 4-3 54418 NULL
158251 +enable_so_follow_page_mask_fndecl_54427 follow_page_mask fndecl 2 54427 NULL
158252 +enable_so_qnx6_get_devblock_fndecl_54428 qnx6_get_devblock fndecl 0 54428 NULL
158253 +enable_so_set_fd_set_fndecl_54434 set_fd_set fndecl 1 54434 NULL
158254 +enable_so_gfn_to_page_many_atomic_fndecl_54449 gfn_to_page_many_atomic fndecl 2 54449 NULL
158255 +enable_so_kimage_file_prepare_segments_fndecl_54451 kimage_file_prepare_segments fndecl 5 54451 NULL
158256 +enable_so_a_count_posix_acl_54461 a_count posix_acl 0 54461 NULL nohasharray
158257 +enable_so_vringh_init_kern_fndecl_54461 vringh_init_kern fndecl 3 54461 &enable_so_a_count_posix_acl_54461
158258 +enable_so_ide_mm_inb_fndecl_54462 ide_mm_inb fndecl 0 54462 NULL
158259 +enable_so_dm_btree_remove_fndecl_54463 dm_btree_remove fndecl 2 54463 NULL
158260 +enable_so_nvkm_notify_init_fndecl_54464 nvkm_notify_init fndecl 7 54464 NULL
158261 +enable_so_ocfs2_divide_xattr_cluster_fndecl_54477 ocfs2_divide_xattr_cluster fndecl 3-4 54477 NULL
158262 +enable_so_initial_height_vmw_private_54479 initial_height vmw_private 0 54479 NULL
158263 +enable_so_dm_btree_find_highest_key_fndecl_54489 dm_btree_find_highest_key fndecl 2 54489 NULL
158264 +enable_so_spi_write_buf_fndecl_54490 spi_write_buf fndecl 2 54490 NULL
158265 +enable_so_n_chan_comedi_subdevice_54496 n_chan comedi_subdevice 0 54496 NULL
158266 +enable_so_dev_start_strip_zone_54501 dev_start strip_zone 0 54501 NULL
158267 +enable_so_max_fds_fdtable_54502 max_fds fdtable 0 54502 NULL
158268 +enable_so_mwifiex_set_gen_ie_helper_fndecl_54506 mwifiex_set_gen_ie_helper fndecl 3 54506 NULL
158269 +enable_so_m_agfrotor_xfs_mount_54510 m_agfrotor xfs_mount 0 54510 NULL nohasharray
158270 +enable_so_get_rxfh_indir_size_ethtool_ops_54510 get_rxfh_indir_size ethtool_ops 0 54510 &enable_so_m_agfrotor_xfs_mount_54510
158271 +enable_so_depth_camif_fmt_54512 depth camif_fmt 0 54512 NULL
158272 +enable_so___btrfs_buffered_write_fndecl_54524 __btrfs_buffered_write fndecl 3 54524 NULL
158273 +enable_so_ocfs2_read_dir_block_direct_fndecl_54528 ocfs2_read_dir_block_direct fndecl 2 54528 NULL
158274 +enable_so_bio_segments_fndecl_54531 bio_segments fndecl 0 54531 NULL
158275 +enable_so_b43_debugfs_write_fndecl_54533 b43_debugfs_write fndecl 3 54533 NULL
158276 +enable_so_num_ccells_cnic_local_54538 num_ccells cnic_local 0 54538 NULL
158277 +enable_so_bandlength_Kiara_table_entry_54541 bandlength Kiara_table_entry 0 54541 NULL
158278 +enable_so_s_dev_table_count_exofs_fscb_54542 s_dev_table_count exofs_fscb 0 54542 NULL
158279 +enable_so_bpp_vardecl_tridentfb_c_54547 bpp vardecl_tridentfb.c 0 54547 NULL
158280 +enable_so_qnx6_check_first_superblock_fndecl_54577 qnx6_check_first_superblock fndecl 2 54577 NULL
158281 +enable_so_acpi_system_write_wakeup_device_fndecl_54582 acpi_system_write_wakeup_device fndecl 3 54582 NULL
158282 +enable_so_ivsize_aead_tfm_54585 ivsize aead_tfm 0 54585 NULL
158283 +enable_so_usb_serial_generic_prepare_write_buffer_fndecl_54586 usb_serial_generic_prepare_write_buffer fndecl 3 54586 NULL
158284 +enable_so_erase_size_mmc_card_54587 erase_size mmc_card 0 54587 NULL
158285 +enable_so_width_cx231xx_54591 width cx231xx 0 54591 NULL nohasharray
158286 +enable_so_near_copies_geom_54591 near_copies geom 0 54591 &enable_so_width_cx231xx_54591
158287 +enable_so_viafb_i2c_readbytes_fndecl_54593 viafb_i2c_readbytes fndecl 5 54593 NULL
158288 +enable_so_find_free_extent_fndecl_54605 find_free_extent fndecl 2-4 54605 NULL nohasharray
158289 +enable_so_mipi_dsi_dcs_write_fndecl_54605 mipi_dsi_dcs_write fndecl 4 54605 &enable_so_find_free_extent_fndecl_54605
158290 +enable_so_fat32_length_fat_bios_param_block_54606 fat32_length fat_bios_param_block 0 54606 NULL
158291 +enable_so_nfs4_get_acl_uncached_fndecl_54608 nfs4_get_acl_uncached fndecl 3 54608 NULL
158292 +enable_so_adfs_f_read_fndecl_54612 adfs_f_read fndecl 2 54612 NULL
158293 +enable_so_offset_btrfs_free_space_54613 offset btrfs_free_space 0 54613 NULL
158294 +enable_so_msg_print_text_fndecl_54618 msg_print_text fndecl 0 54618 NULL
158295 +enable_so_ieee80211_if_write_fndecl_54621 ieee80211_if_write fndecl 3 54621 NULL
158296 +enable_so_pages_in_unit___stripe_pages_2d_54623 pages_in_unit __stripe_pages_2d 0 54623 NULL
158297 +enable_so_ext4_new_meta_blocks_fndecl_54631 ext4_new_meta_blocks fndecl 0 54631 NULL
158298 +enable_so_len_ncp_privatedata_ioctl_54632 len ncp_privatedata_ioctl 0 54632 NULL
158299 +enable_so_snd_info_entry_read_fndecl_54633 snd_info_entry_read fndecl 3 54633 NULL
158300 +enable_so_bits_per_sample_soc_mbus_pixelfmt_54636 bits_per_sample soc_mbus_pixelfmt 0 54636 NULL nohasharray
158301 +enable_so_text_len_printk_log_54636 text_len printk_log 0 54636 &enable_so_bits_per_sample_soc_mbus_pixelfmt_54636
158302 +enable_so_extra_mpdu_prefix_len_lib80211_crypto_ops_54644 extra_mpdu_prefix_len lib80211_crypto_ops 0 54644 NULL nohasharray
158303 +enable_so_nchannels_cosa_data_54644 nchannels cosa_data 0 54644 &enable_so_extra_mpdu_prefix_len_lib80211_crypto_ops_54644
158304 +enable_so_MaxChainDepth_mpt3sas_facts_54646 MaxChainDepth mpt3sas_facts 0 54646 NULL
158305 +enable_so_write_msg_fndecl_54647 write_msg fndecl 3 54647 NULL
158306 +enable_so_tx_flags_fe_priv_54658 tx_flags fe_priv 0 54658 NULL
158307 +enable_so_truncate_pagecache_fndecl_54660 truncate_pagecache fndecl 2 54660 NULL
158308 +enable_so_s_session_udf_sb_info_54662 s_session udf_sb_info 0 54662 NULL
158309 +enable_so_ssid_len_hostap_bss_info_54670 ssid_len hostap_bss_info 0 54670 NULL
158310 +enable_so_compat_SyS_kexec_load_fndecl_54672 compat_SyS_kexec_load fndecl 2 54672 NULL
158311 +enable_so_cp_blkaddr_f2fs_super_block_54690 cp_blkaddr f2fs_super_block 0 54690 NULL
158312 +enable_so_fwbulkwritelen_tda10048_config_54693 fwbulkwritelen tda10048_config 0 54693 NULL
158313 +enable_so_num_queue_pairs_i40e_vsi_54696 num_queue_pairs i40e_vsi 0 54696 NULL
158314 +enable_so_max_pages_per_frmr_ocrdma_dev_attr_54699 max_pages_per_frmr ocrdma_dev_attr 0 54699 NULL
158315 +enable_so_lookahead_deflate_state_54700 lookahead deflate_state 0 54700 NULL
158316 +enable_so_bo_number_drm_amdgpu_bo_list_in_54706 bo_number drm_amdgpu_bo_list_in 0 54706 NULL
158317 +enable_so_read_endpoint_zr364xx_camera_54710 read_endpoint zr364xx_camera 0 54710 NULL
158318 +enable_so_cdv_intel_crtc_clock_get_fndecl_54714 cdv_intel_crtc_clock_get fndecl 0 54714 NULL
158319 +enable_so_process_rcvd_status_fndecl_54722 process_rcvd_status fndecl 3 54722 NULL
158320 +enable_so_coda_psdev_read_fndecl_54726 coda_psdev_read fndecl 3 54726 NULL
158321 +enable_so_inode_reclaim_rsv_space_fndecl_54730 inode_reclaim_rsv_space fndecl 2 54730 NULL
158322 +enable_so_proc_setgroups_write_fndecl_54732 proc_setgroups_write fndecl 3 54732 NULL
158323 +enable_so_hwdep_read_locked_fndecl_54734 hwdep_read_locked fndecl 3 54734 NULL
158324 +enable_so_sisusb_copy_memory_fndecl_54747 sisusb_copy_memory fndecl 4 54747 NULL
158325 +enable_so_vfreq_aspect_std_timing_54751 vfreq_aspect std_timing 0 54751 NULL
158326 +enable_so_end_writequeue_entry_54752 end writequeue_entry 0 54752 NULL
158327 +enable_so_size__drm_via_cmdbuffer_54755 size _drm_via_cmdbuffer 0 54755 NULL
158328 +enable_so_regcache_rbtree_node_alloc_fndecl_54769 regcache_rbtree_node_alloc fndecl 2 54769 NULL
158329 +enable_so_start_fstrim_range_54775 start fstrim_range 0 54775 NULL
158330 +enable_so_append_cnt_ixgbe_cb_54776 append_cnt ixgbe_cb 0 54776 NULL
158331 +enable_so_ext_channel_count_hda_gen_spec_54778 ext_channel_count hda_gen_spec 0 54778 NULL
158332 +enable_so_xfs_rtallocate_extent_fndecl_54783 xfs_rtallocate_extent fndecl 2-8-4 54783 NULL
158333 +enable_so_rcvegrbuf_chunks_qib_ctxtdata_54789 rcvegrbuf_chunks qib_ctxtdata 0 54789 NULL
158334 +enable_so_bitmap_root_ll_disk_54791 bitmap_root ll_disk 0 54791 NULL
158335 +enable_so_size_dvb_ringbuffer_54794 size dvb_ringbuffer 0 54794 NULL
158336 +enable_so_spk_msg_set_fndecl_54801 spk_msg_set fndecl 3 54801 NULL
158337 +enable_so_num_snd_bebob_meter_spec_54805 num snd_bebob_meter_spec 0 54805 NULL
158338 +enable_so_unlock_extent_cached_fndecl_54806 unlock_extent_cached fndecl 2-3 54806 NULL nohasharray
158339 +enable_so_buf_size__BIG_IOCTL_Command_struct_54806 buf_size _BIG_IOCTL_Command_struct 0 54806 &enable_so_unlock_extent_cached_fndecl_54806
158340 +enable_so_dma_reserve_vardecl_page_alloc_c_54807 dma_reserve vardecl_page_alloc.c 0 54807 NULL
158341 +enable_so_fsx_extsize_fsxattr_54812 fsx_extsize fsxattr 0 54812 NULL
158342 +enable_so_ep_out_ksdazzle_cb_54817 ep_out ksdazzle_cb 0 54817 NULL
158343 +enable_so_ixgbe_pci_sriov_configure_fndecl_54843 ixgbe_pci_sriov_configure fndecl 2 54843 NULL
158344 +enable_so_reiserfs_readpages_fndecl_54846 reiserfs_readpages fndecl 4 54846 NULL
158345 +enable_so_blkdev_direct_IO_fndecl_54850 blkdev_direct_IO fndecl 3 54850 NULL
158346 +enable_so_request_lock_fndecl_54853 request_lock fndecl 4 54853 NULL
158347 +enable_so_addr_len_net_device_54857 addr_len net_device 0 54857 NULL nohasharray
158348 +enable_so_compat_sys_kexec_load_fndecl_54857 compat_sys_kexec_load fndecl 2 54857 &enable_so_addr_len_net_device_54857
158349 +enable_so_sr_blkno_ocfs2_suballoc_result_54860 sr_blkno ocfs2_suballoc_result 0 54860 NULL
158350 +enable_so_vb2_vmalloc_get_userptr_fndecl_54862 vb2_vmalloc_get_userptr fndecl 2-3 54862 NULL
158351 +enable_so_mru_ippp_struct_54863 mru ippp_struct 0 54863 NULL nohasharray
158352 +enable_so_shmem_file_llseek_fndecl_54863 shmem_file_llseek fndecl 2 54863 &enable_so_mru_ippp_struct_54863
158353 +enable_so_spi_register_board_info_fndecl_54864 spi_register_board_info fndecl 2 54864 NULL
158354 +enable_so_usb_dmac_desc_get_fndecl_54869 usb_dmac_desc_get fndecl 2 54869 NULL
158355 +enable_so_bufsize_nm256_stream_54875 bufsize nm256_stream 0 54875 NULL
158356 +enable_so_md_super_write_fndecl_54884 md_super_write fndecl 4-3 54884 NULL
158357 +enable_so___breadahead_fndecl_54896 __breadahead fndecl 3-2 54896 NULL
158358 +enable_so_num_uars_mlx5_uuar_info_54898 num_uars mlx5_uuar_info 0 54898 NULL
158359 +enable_so_buffer_size_qcaspi_54902 buffer_size qcaspi 0 54902 NULL
158360 +enable_so_rds_page_copy_user_fndecl_54904 rds_page_copy_user fndecl 4 54904 NULL
158361 +enable_so_ext4_es_cache_extent_fndecl_54906 ext4_es_cache_extent fndecl 2-3 54906 NULL
158362 +enable_so_iscsit_build_pdu_and_seq_lists_fndecl_54916 iscsit_build_pdu_and_seq_lists fndecl 2 54916 NULL
158363 +enable_so_line_length_fb_fix_screeninfo_54923 line_length fb_fix_screeninfo 0 54923 NULL
158364 +enable_so_sector_dm_io_region_54924 sector dm_io_region 0 54924 NULL
158365 +enable_so_cc2520_write_txfifo_fndecl_54930 cc2520_write_txfifo fndecl 3 54930 NULL
158366 +enable_so_xfs_end_io_direct_write_fndecl_54936 xfs_end_io_direct_write fndecl 2-3 54936 NULL
158367 +enable_so_blk_queue_logical_block_size_fndecl_54946 blk_queue_logical_block_size fndecl 2 54946 NULL
158368 +enable_so_log_blocks_per_seg_f2fs_super_block_54960 log_blocks_per_seg f2fs_super_block 0 54960 NULL
158369 +enable_so_len_cn_msg_54981 len cn_msg 0 54981 NULL
158370 +enable_so_ocfs2_direct_IO_write_fndecl_54985 ocfs2_direct_IO_write fndecl 3 54985 NULL
158371 +enable_so_rs_switch_to_siso_fndecl_54987 rs_switch_to_siso fndecl 6 54987 NULL
158372 +enable_so_alloc_netdev_mqs_fndecl_54989 alloc_netdev_mqs fndecl 5-6-1 54989 NULL
158373 +enable_so_rx_frame_size_pn533_frame_ops_54990 rx_frame_size pn533_frame_ops 0 54990 NULL
158374 +enable_so_ns_last_cno_the_nilfs_54997 ns_last_cno the_nilfs 0 54997 NULL
158375 +enable_so_rx_bufsize_bc_state_54999 rx_bufsize bc_state 0 54999 NULL nohasharray
158376 +enable_so_send_wqe_overhead_fndecl_54999 send_wqe_overhead fndecl 0 54999 &enable_so_rx_bufsize_bc_state_54999
158377 +enable_so_udf_alloc_i_data_fndecl_55001 udf_alloc_i_data fndecl 2 55001 NULL
158378 +enable_so_reply_payload_rcv_len_iscsi_bsg_reply_55012 reply_payload_rcv_len iscsi_bsg_reply 0 55012 NULL
158379 +enable_so_real_space_diff_fndecl_55014 real_space_diff fndecl 2 55014 NULL
158380 +enable_so_max_strips_per_io_megasas_ctrl_info_55020 max_strips_per_io megasas_ctrl_info 0 55020 NULL
158381 +enable_so_ieee80211_if_fmt_ap_power_level_fndecl_55040 ieee80211_if_fmt_ap_power_level fndecl 3 55040 NULL
158382 +enable_so_length_i2400m_tlv_hdr_55043 length i2400m_tlv_hdr 0 55043 NULL
158383 +enable_so_ieee80211_rx_mgmt_deauth_fndecl_55044 ieee80211_rx_mgmt_deauth fndecl 3 55044 NULL nohasharray
158384 +enable_so_hpi_alloc_control_cache_fndecl_55044 hpi_alloc_control_cache fndecl 1 55044 &enable_so_ieee80211_rx_mgmt_deauth_fndecl_55044
158385 +enable_so_osd_xres_vardecl_ivtvfb_c_55057 osd_xres vardecl_ivtvfb.c 0 55057 NULL nohasharray
158386 +enable_so_h_panel_info_55057 h panel_info 0 55057 &enable_so_osd_xres_vardecl_ivtvfb_c_55057
158387 +enable_so_olo_num_comps_pnfs_osd_layout_55062 olo_num_comps pnfs_osd_layout 0 55062 NULL nohasharray
158388 +enable_so___mic_dma_alloc_fndecl_55062 __mic_dma_alloc fndecl 2 55062 &enable_so_olo_num_comps_pnfs_osd_layout_55062
158389 +enable_so_mlx4_alloc_hwq_res_fndecl_55064 mlx4_alloc_hwq_res fndecl 3 55064 NULL
158390 +enable_so_addr_num_sctp_getaddrs_old_55065 addr_num sctp_getaddrs_old 0 55065 NULL
158391 +enable_so_sddr55_get_capacity_fndecl_55072 sddr55_get_capacity fndecl 0 55072 NULL
158392 +enable_so_p9_virtio_zc_request_fndecl_55074 p9_virtio_zc_request fndecl 6-5 55074 NULL
158393 +enable_so_ext4_iget_normal_fndecl_55086 ext4_iget_normal fndecl 2 55086 NULL nohasharray
158394 +enable_so_frame_len_b43legacy_rxhdr_fw3_55086 frame_len b43legacy_rxhdr_fw3 0 55086 &enable_so_ext4_iget_normal_fndecl_55086
158395 +enable_so_vlan_rx_desc_55097 vlan rx_desc 0 55097 NULL
158396 +enable_so_read_kmem_fndecl_55103 read_kmem fndecl 3 55103 NULL
158397 +enable_so_nftids_tid_info_55104 nftids tid_info 0 55104 NULL
158398 +enable_so_fat_dir_entries_fat_bios_param_block_55106 fat_dir_entries fat_bios_param_block 0 55106 NULL nohasharray
158399 +enable_so_num_channels_ad5360_chip_info_55106 num_channels ad5360_chip_info 0 55106 &enable_so_fat_dir_entries_fat_bios_param_block_55106
158400 +enable_so_pnfs_num_cont_bytes_fndecl_55107 pnfs_num_cont_bytes fndecl 0-2 55107 NULL nohasharray
158401 +enable_so_SyS_getxattr_fndecl_55107 SyS_getxattr fndecl 4 55107 &enable_so_pnfs_num_cont_bytes_fndecl_55107
158402 +enable_so_min_channel_count_hda_gen_spec_55108 min_channel_count hda_gen_spec 0 55108 NULL
158403 +enable_so_y_zoran_overlay_settings_55113 y zoran_overlay_settings 0 55113 NULL
158404 +enable_so_bnad_change_mtu_fndecl_55116 bnad_change_mtu fndecl 2 55116 NULL
158405 +enable_so_unpack_to_rootfs_fndecl_55124 unpack_to_rootfs fndecl 2 55124 NULL
158406 +enable_so_length_dw_radeon_cs_chunk_55128 length_dw radeon_cs_chunk 0 55128 NULL
158407 +enable_so_ea_data_len_gfs2_ea_header_55134 ea_data_len gfs2_ea_header 0 55134 NULL
158408 +enable_so_data_dma_mmc_spi_host_55141 data_dma mmc_spi_host 0 55141 NULL
158409 +enable_so_namelen_dlm_lock_params_55146 namelen dlm_lock_params 0 55146 NULL
158410 +enable_so_gigaset_isowbuf_getbytes_fndecl_55147 gigaset_isowbuf_getbytes fndecl 2 55147 NULL
158411 +enable_so_befs_find_brun_dblindirect_fndecl_55152 befs_find_brun_dblindirect fndecl 3 55152 NULL
158412 +enable_so_ext3_list_backups_fndecl_55164 ext3_list_backups fndecl 0 55164 NULL nohasharray
158413 +enable_so_buffer_to_user_fndecl_55164 buffer_to_user fndecl 3 55164 &enable_so_ext3_list_backups_fndecl_55164
158414 +enable_so_hpfs_load_code_page_fndecl_55184 hpfs_load_code_page fndecl 2 55184 NULL
158415 +enable_so_virtqueue_get_vring_size_fndecl_55188 virtqueue_get_vring_size fndecl 0 55188 NULL
158416 +enable_so_result_dio_55189 result dio 0 55189 NULL
158417 +enable_so_efx_mcdi_rpc_async_quiet_fndecl_55191 efx_mcdi_rpc_async_quiet fndecl 4-5 55191 NULL
158418 +enable_so_vmxnet3_change_mtu_fndecl_55195 vmxnet3_change_mtu fndecl 2 55195 NULL
158419 +enable_so_seg_count_agp_region_55196 seg_count agp_region 0 55196 NULL
158420 +enable_so_drm_gtf2_2c_fndecl_55202 drm_gtf2_2c fndecl 0 55202 NULL
158421 +enable_so_p1_gma_clock_t_55221 p1 gma_clock_t 0 55221 NULL
158422 +enable_so_num_eqs_mlx4_caps_55225 num_eqs mlx4_caps 0 55225 NULL
158423 +enable_so_adv_instance_cnt_hci_dev_55228 adv_instance_cnt hci_dev 0 55228 NULL
158424 +enable_so_btrfs_prealloc_file_range_trans_fndecl_55231 btrfs_prealloc_file_range_trans fndecl 5-4-6 55231 NULL
158425 +enable_so_msr_seek_fndecl_55235 msr_seek fndecl 2 55235 NULL nohasharray
158426 +enable_so_pstore_mkfile_fndecl_55235 pstore_mkfile fndecl 7 55235 &enable_so_msr_seek_fndecl_55235
158427 +enable_so_sb_logsunit_xfs_sb_55236 sb_logsunit xfs_sb 0 55236 NULL
158428 +enable_so_ibnl_put_attr_fndecl_55238 ibnl_put_attr fndecl 3 55238 NULL
158429 +enable_so_ieee80211_if_write_smps_fndecl_55245 ieee80211_if_write_smps fndecl 3 55245 NULL
158430 +enable_so_mwifiex_set_encode_fndecl_55247 mwifiex_set_encode fndecl 4 55247 NULL
158431 +enable_so_async_setkey_fndecl_55250 async_setkey fndecl 3 55250 NULL
158432 +enable_so_req_ring_size_srp_target_port_55251 req_ring_size srp_target_port 0 55251 NULL
158433 +enable_so_d_reclen_venus_dirent_55253 d_reclen venus_dirent 0 55253 NULL
158434 +enable_so_size_pci_cap_saved_data_55258 size pci_cap_saved_data 0 55258 NULL
158435 +enable_so___filemap_fdatawrite_range_fndecl_55259 __filemap_fdatawrite_range fndecl 0-2 55259 NULL
158436 +enable_so_bpf_convert_filter_fndecl_55264 bpf_convert_filter fndecl 2 55264 NULL
158437 +enable_so_sgoffset_cxgbi_task_data_55277 sgoffset cxgbi_task_data 0 55277 NULL nohasharray
158438 +enable_so_bSubframeSize_uac_format_type_i_discrete_descriptor_55277 bSubframeSize uac_format_type_i_discrete_descriptor 0 55277 &enable_so_sgoffset_cxgbi_task_data_55277
158439 +enable_so_ext2_acl_from_disk_fndecl_55279 ext2_acl_from_disk fndecl 2 55279 NULL nohasharray
158440 +enable_so_num_radar_types_dfs_pattern_detector_55279 num_radar_types dfs_pattern_detector 0 55279 &enable_so_ext2_acl_from_disk_fndecl_55279
158441 +enable_so_ld_default_stripe_count_lov_desc_55281 ld_default_stripe_count lov_desc 0 55281 NULL
158442 +enable_so_hdrlen_ipv6_rt_hdr_55289 hdrlen ipv6_rt_hdr 0 55289 NULL
158443 +enable_so_c_can_read_msg_object_fndecl_55291 c_can_read_msg_object fndecl 3 55291 NULL
158444 +enable_so_C_SYSC_kexec_load_fndecl_55294 C_SYSC_kexec_load fndecl 2 55294 NULL
158445 +enable_so_upd_bytes_ubi_volume_55301 upd_bytes ubi_volume 0 55301 NULL
158446 +enable_so_memcg_update_all_caches_fndecl_55303 memcg_update_all_caches fndecl 1 55303 NULL
158447 +enable_so_mxl111sf_stream_config_bulk_fndecl_55308 mxl111sf_stream_config_bulk fndecl 2 55308 NULL
158448 +enable_so_xfs_dialloc_fndecl_55309 xfs_dialloc fndecl 2 55309 NULL
158449 +enable_so_xfs_log_mount_fndecl_55312 xfs_log_mount fndecl 4-3 55312 NULL
158450 +enable_so_dataflash_read_fndecl_55313 dataflash_read fndecl 3 55313 NULL nohasharray
158451 +enable_so_bm_page_io_async_fndecl_55313 bm_page_io_async fndecl 2 55313 &enable_so_dataflash_read_fndecl_55313
158452 +enable_so_num_msrs_to_save_vardecl_x86_c_55317 num_msrs_to_save vardecl_x86.c 0 55317 NULL nohasharray
158453 +enable_so_mon_buff_area_shrink_fndecl_55317 mon_buff_area_shrink fndecl 2 55317 &enable_so_num_msrs_to_save_vardecl_x86_c_55317
158454 +enable_so_bs_nblocks_nilfs_bmap_stats_55322 bs_nblocks nilfs_bmap_stats 0 55322 NULL
158455 +enable_so_ab8500_subscribe_write_fndecl_55323 ab8500_subscribe_write fndecl 3 55323 NULL
158456 +enable_so_get_reserved_cluster_alloc_fndecl_55332 get_reserved_cluster_alloc fndecl 3-2 55332 NULL
158457 +enable_so___irq_domain_add_fndecl_55334 __irq_domain_add fndecl 2 55334 NULL
158458 +enable_so_proc_scsi_host_write_fndecl_55336 proc_scsi_host_write fndecl 3 55336 NULL
158459 +enable_so_dm_btree_lookup_fndecl_55361 dm_btree_lookup fndecl 2 55361 NULL
158460 +enable_so_islpci_mgt_transmit_fndecl_55366 islpci_mgt_transmit fndecl 5 55366 NULL
158461 +enable_so_cdc_mbim_process_dgram_fndecl_55371 cdc_mbim_process_dgram fndecl 4-3 55371 NULL nohasharray
158462 +enable_so_sctp_addto_param_fndecl_55371 sctp_addto_param fndecl 2 55371 &enable_so_cdc_mbim_process_dgram_fndecl_55371
158463 +enable_so_inode_id_btrfs_delayed_node_55390 inode_id btrfs_delayed_node 0 55390 NULL
158464 +enable_so_st_sensors_spi_read_multiple_byte_fndecl_55393 st_sensors_spi_read_multiple_byte fndecl 4 55393 NULL
158465 +enable_so_dxfer_len_skd_sg_io_55394 dxfer_len skd_sg_io 0 55394 NULL
158466 +enable_so_nprim_symtab_55398 nprim symtab 0 55398 NULL
158467 +enable_so_periodic_size_oxu_hcd_55401 periodic_size oxu_hcd 0 55401 NULL
158468 +enable_so_data_len_nf_conntrack_helper_55405 data_len nf_conntrack_helper 0 55405 NULL
158469 +enable_so_shmem_pread_fast_fndecl_55408 shmem_pread_fast fndecl 3 55408 NULL
158470 +enable_so_min_param_range_55419 min param_range 0 55419 NULL
158471 +enable_so_start_pci_bus_region_55432 start pci_bus_region 0 55432 NULL
158472 +enable_so_rate_via_rate_lock_55434 rate via_rate_lock 0 55434 NULL
158473 +enable_so_wake_packet_length_iwl_wowlan_status_data_55438 wake_packet_length iwl_wowlan_status_data 0 55438 NULL
158474 +enable_so_nilfs_read_log_header_fndecl_55445 nilfs_read_log_header fndecl 2 55445 NULL
158475 +enable_so_nilfs_direct_IO_fndecl_55447 nilfs_direct_IO fndecl 3 55447 NULL nohasharray
158476 +enable_so_klen_nft_set_55447 klen nft_set 0 55447 &enable_so_nilfs_direct_IO_fndecl_55447
158477 +enable_so_set_sample_rate_fndecl_55451 set_sample_rate fndecl 2 55451 NULL
158478 +enable_so_len_wm_coeff_parsed_coeff_55454 len wm_coeff_parsed_coeff 0 55454 NULL
158479 +enable_so_dma_buf_size_tegra_spi_data_55467 dma_buf_size tegra_spi_data 0 55467 NULL
158480 +enable_so_dma_release_from_contiguous_fndecl_55468 dma_release_from_contiguous fndecl 3 55468 NULL
158481 +enable_so_buffer_addr_nm256_55469 buffer_addr nm256 0 55469 NULL
158482 +enable_so_status_queue_entry_55470 status queue_entry 0 55470 NULL
158483 +enable_so_xfs_bmapi_write_fndecl_55475 xfs_bmapi_write fndecl 4-3 55475 NULL
158484 +enable_so_ext4_da_write_begin_fndecl_55476 ext4_da_write_begin fndecl 4-3 55476 NULL
158485 +enable_so_ocfs2_read_dx_leaf_fndecl_55488 ocfs2_read_dx_leaf fndecl 2 55488 NULL
158486 +enable_so_nft_set_ext_add_length_fndecl_55489 nft_set_ext_add_length fndecl 3 55489 NULL
158487 +enable_so_bl_pipe_downcall_fndecl_55499 bl_pipe_downcall fndecl 3 55499 NULL
158488 +enable_so_setup_nodes_for_search_fndecl_55515 setup_nodes_for_search fndecl 5 55515 NULL
158489 +enable_so_root_dm_pool_metadata_55520 root dm_pool_metadata 0 55520 NULL
158490 +enable_so_reg_bits_regmap_config_55521 reg_bits regmap_config 0 55521 NULL
158491 +enable_so_bofs_count_irlap_cb_55531 bofs_count irlap_cb 0 55531 NULL
158492 +enable_so_blkdev_max_hw_sectors_vardecl_dev_c_55533 blkdev_max_hw_sectors vardecl_dev.c 0 55533 NULL
158493 +enable_so_rf_blkno_ocfs2_refcount_block_55545 rf_blkno ocfs2_refcount_block 0 55545 NULL
158494 +enable_so_tmp_afs_call_55554 tmp afs_call 0 55554 NULL
158495 +enable_so_usVSyncOffset__ATOM_DTD_FORMAT_55558 usVSyncOffset _ATOM_DTD_FORMAT 0 55558 NULL
158496 +enable_so_filter_write_fndecl_55560 filter_write fndecl 3 55560 NULL
158497 +enable_so_iv_len_ieee80211_key_conf_55561 iv_len ieee80211_key_conf 0 55561 NULL
158498 +enable_so_io_tlb_overflow_vardecl_swiotlb_c_55570 io_tlb_overflow vardecl_swiotlb.c 0 55570 NULL
158499 +enable_so_guest_ia32_efer_vmcs12_55578 guest_ia32_efer vmcs12 0 55578 NULL
158500 +enable_so_if_sdio_read_rx_len_fndecl_55579 if_sdio_read_rx_len fndecl 0 55579 NULL
158501 +enable_so_coh_page_bufsize_cl_object_header_55585 coh_page_bufsize cl_object_header 0 55585 NULL
158502 +enable_so_i915_setup_compression_fndecl_55588 i915_setup_compression fndecl 2 55588 NULL nohasharray
158503 +enable_so_exofs_file_fsync_fndecl_55588 exofs_file_fsync fndecl 2 55588 &enable_so_i915_setup_compression_fndecl_55588
158504 +enable_so_calgary_alloc_coherent_fndecl_55592 calgary_alloc_coherent fndecl 2 55592 NULL
158505 +enable_so_oz_cdev_write_fndecl_55599 oz_cdev_write fndecl 3 55599 NULL
158506 +enable_so_ext4_punch_hole_fndecl_55604 ext4_punch_hole fndecl 2-3 55604 NULL
158507 +enable_so_i_goal_gfs2_inode_55609 i_goal gfs2_inode 0 55609 NULL
158508 +enable_so_amdgpu_vm_bo_map_fndecl_55610 amdgpu_vm_bo_map fndecl 5-3 55610 NULL
158509 +enable_so_udplite_manip_pkt_fndecl_55611 udplite_manip_pkt fndecl 4 55611 NULL
158510 +enable_so_length_ipw_rx_frame_55612 length ipw_rx_frame 0 55612 NULL
158511 +enable_so_alg_trunc_len_xfrm_algo_auth_55613 alg_trunc_len xfrm_algo_auth 0 55613 NULL
158512 +enable_so_f2fs_update_extent_tree_fndecl_55614 f2fs_update_extent_tree fndecl 2-3 55614 NULL
158513 +enable_so_initial_width_vmw_private_55615 initial_width vmw_private 0 55615 NULL nohasharray
158514 +enable_so_ybpp_camif_fmt_55615 ybpp camif_fmt 0 55615 &enable_so_initial_width_vmw_private_55615
158515 +enable_so_vmci_transport_dgram_dequeue_fndecl_55628 vmci_transport_dgram_dequeue fndecl 3 55628 NULL
158516 +enable_so_bin_string_fndecl_55631 bin_string fndecl 5 55631 NULL
158517 +enable_so_max_pkt_size_cx231xx_isoc_ctl_55637 max_pkt_size cx231xx_isoc_ctl 0 55637 NULL
158518 +enable_so_extra_tx_headroom_ieee80211_hw_55638 extra_tx_headroom ieee80211_hw 0 55638 NULL
158519 +enable_so_rcvidx_isar_hw_55643 rcvidx isar_hw 0 55643 NULL
158520 +enable_so_sr_read_sector_fndecl_55647 sr_read_sector fndecl 3 55647 NULL
158521 +enable_so_int_sqrt_fndecl_55649 int_sqrt fndecl 0-1 55649 NULL
158522 +enable_so_sg_nents_fndecl_55654 sg_nents fndecl 0 55654 NULL
158523 +enable_so_get_user_pages_fndecl_55655 get_user_pages fndecl 0-3 55655 NULL
158524 +enable_so_tda10071_rd_regs_fndecl_55659 tda10071_rd_regs fndecl 4 55659 NULL nohasharray
158525 +enable_so_ath6kl_roam_mode_write_fndecl_55659 ath6kl_roam_mode_write fndecl 3 55659 &enable_so_tda10071_rd_regs_fndecl_55659
158526 +enable_so_reserve_iova_fndecl_55661 reserve_iova fndecl 3-2 55661 NULL nohasharray
158527 +enable_so_queue_logical_block_size_fndecl_55661 queue_logical_block_size fndecl 0 55661 &enable_so_reserve_iova_fndecl_55661
158528 +enable_so_ath6kl_sdio_io_fndecl_55662 ath6kl_sdio_io fndecl 5 55662 NULL
158529 +enable_so_pagl_rightrec_xfs_perag_55670 pagl_rightrec xfs_perag 0 55670 NULL
158530 +enable_so_al_stripes_drbd_md_55679 al_stripes drbd_md 0 55679 NULL
158531 +enable_so_s_journal_inum_ext3_super_block_55685 s_journal_inum ext3_super_block 0 55685 NULL
158532 +enable_so_n_cipher_schemes_ieee80211_hw_55692 n_cipher_schemes ieee80211_hw 0 55692 NULL
158533 +enable_so_omfs_iget_fndecl_55693 omfs_iget fndecl 2 55693 NULL
158534 +enable_so_rate_n_flags_iwl_rx_phy_res_55709 rate_n_flags iwl_rx_phy_res 0 55709 NULL nohasharray
158535 +enable_so_unique_pos_vardecl_jfs_dtree_c_55709 unique_pos vardecl_jfs_dtree.c 0 55709 &enable_so_rate_n_flags_iwl_rx_phy_res_55709
158536 +enable_so_inline_wsize_rpcrdma_create_data_internal_55719 inline_wsize rpcrdma_create_data_internal 0 55719 NULL
158537 +enable_so_fbcon_resize_fndecl_55724 fbcon_resize fndecl 2-3 55724 NULL
158538 +enable_so_dst_command_fndecl_55728 dst_command fndecl 3 55728 NULL
158539 +enable_so_vm_exit_msr_load_addr_vmcs12_55733 vm_exit_msr_load_addr vmcs12 0 55733 NULL
158540 +enable_so_vsi_iext_vxfs_sb_info_55734 vsi_iext vxfs_sb_info 0 55734 NULL nohasharray
158541 +enable_so_nilfs_direct_delete_and_convert_fndecl_55734 nilfs_direct_delete_and_convert fndecl 0 55734 &enable_so_vsi_iext_vxfs_sb_info_55734
158542 +enable_so_ieee802154_hdr_get_addrs_fndecl_55743 ieee802154_hdr_get_addrs fndecl 0 55743 NULL
158543 +enable_so_max_eq_mlx4_func_55747 max_eq mlx4_func 0 55747 NULL
158544 +enable_so_nilfs_mdt_set_entry_size_fndecl_55751 nilfs_mdt_set_entry_size fndecl 2-3 55751 NULL
158545 +enable_so_max_num_sge_megasas_instance_55755 max_num_sge megasas_instance 0 55755 NULL
158546 +enable_so_nilfs_cpfile_read_fndecl_55758 nilfs_cpfile_read fndecl 2 55758 NULL
158547 +enable_so_lane_cnt_mipi_config_55759 lane_cnt mipi_config 0 55759 NULL
158548 +enable_so_vga_switcheroo_debugfs_write_fndecl_55763 vga_switcheroo_debugfs_write fndecl 3 55763 NULL
158549 +enable_so_offset_xfs_bmalloca_55767 offset xfs_bmalloca 0 55767 NULL
158550 +enable_so_get_current_sit_page_fndecl_55771 get_current_sit_page fndecl 2 55771 NULL
158551 +enable_so_end___reiserfs_blocknr_hint_55772 end __reiserfs_blocknr_hint 0 55772 NULL nohasharray
158552 +enable_so_cmd_read_size_wiimote_state_55772 cmd_read_size wiimote_state 0 55772 &enable_so_end___reiserfs_blocknr_hint_55772
158553 +enable_so_ppp_write_fndecl_55777 ppp_write fndecl 3 55777 NULL
158554 +enable_so_delete_block_group_cache_fndecl_55779 delete_block_group_cache fndecl 4 55779 NULL
158555 +enable_so_width_cx25821_channel_55782 width cx25821_channel 0 55782 NULL
158556 +enable_so_lbs_lowrssi_write_fndecl_55802 lbs_lowrssi_write fndecl 3 55802 NULL
158557 +enable_so_velocity_rx_copy_fndecl_55812 velocity_rx_copy fndecl 2 55812 NULL
158558 +enable_so_init_send_hfcd_fndecl_55817 init_send_hfcd fndecl 1 55817 NULL
158559 +enable_so_result_status_yellowfin_desc_55822 result_status yellowfin_desc 0 55822 NULL
158560 +enable_so_sd_blksz_fw_dl_btmrvl_sdio_card_55832 sd_blksz_fw_dl btmrvl_sdio_card 0 55832 NULL
158561 +enable_so_dvb_ringbuffer_init_fndecl_55834 dvb_ringbuffer_init fndecl 3 55834 NULL
158562 +enable_so_or51132_readbuf_fndecl_55836 or51132_readbuf fndecl 3 55836 NULL
158563 +enable_so_rd_host_buf_pos_xilly_channel_55837 rd_host_buf_pos xilly_channel 0 55837 NULL
158564 +enable_so_dr_free_blk_ocfs2_dx_root_block_55848 dr_free_blk ocfs2_dx_root_block 0 55848 NULL
158565 +enable_so_s_segment_usage_size_nilfs_super_block_55851 s_segment_usage_size nilfs_super_block 0 55851 NULL
158566 +enable_so___cfg80211_disconnected_fndecl_55853 __cfg80211_disconnected fndecl 3 55853 NULL
158567 +enable_so_cw1200_queue_init_fndecl_55860 cw1200_queue_init fndecl 4 55860 NULL
158568 +enable_so_cramino_fndecl_55864 cramino fndecl 0-2 55864 NULL
158569 +enable_so_bio_integrity_bytes_fndecl_55865 bio_integrity_bytes fndecl 2-0 55865 NULL nohasharray
158570 +enable_so_nports_cyclades_card_55865 nports cyclades_card 0 55865 &enable_so_bio_integrity_bytes_fndecl_55865
158571 +enable_so___find_pending_exception_fndecl_55867 __find_pending_exception fndecl 3 55867 NULL
158572 +enable_so_cnic_alloc_dma_fndecl_55874 cnic_alloc_dma fndecl 3 55874 NULL
158573 +enable_so_usVSyncWidth__ATOM_DTD_FORMAT_55875 usVSyncWidth _ATOM_DTD_FORMAT 0 55875 NULL
158574 +enable_so_frame_size_usb_stream_config_55876 frame_size usb_stream_config 0 55876 NULL
158575 +enable_so_tomoyo_dump_page_fndecl_55882 tomoyo_dump_page fndecl 2 55882 NULL
158576 +enable_so_fragment_size_snd_compressed_buffer_55903 fragment_size snd_compressed_buffer 0 55903 NULL
158577 +enable_so_btrfs_alloc_tree_block_fndecl_55906 btrfs_alloc_tree_block fndecl 3-4-6-7 55906 NULL
158578 +enable_so_prealloc_size___reiserfs_blocknr_hint_55929 prealloc_size __reiserfs_blocknr_hint 0 55929 NULL
158579 +enable_so_change_prot_numa_fndecl_55935 change_prot_numa fndecl 3-2 55935 NULL
158580 +enable_so_ref_freq_arizona_fll_55939 ref_freq arizona_fll 0 55939 NULL
158581 +enable_so_osst_seek_logical_blk_fndecl_55950 osst_seek_logical_blk fndecl 3 55950 NULL
158582 +enable_so_batadv_tvlv_realloc_packet_buff_fndecl_55955 batadv_tvlv_realloc_packet_buff fndecl 3-4 55955 NULL
158583 +enable_so_data2_sisusb_command_55970 data2 sisusb_command 0 55970 NULL
158584 +enable_so_reg_w_ixbuf_fndecl_55971 reg_w_ixbuf fndecl 4 55971 NULL
158585 +enable_so_subbuf_size_rchan_55979 subbuf_size rchan 0 55979 NULL nohasharray
158586 +enable_so_scsi_sense_length_se_cmd_55979 scsi_sense_length se_cmd 0 55979 &enable_so_subbuf_size_rchan_55979
158587 +enable_so_iwl_mvm_pass_packet_to_mac80211_fndecl_55980 iwl_mvm_pass_packet_to_mac80211 fndecl 6-4 55980 NULL
158588 +enable_so_page_offset_fm10k_rx_buffer_55981 page_offset fm10k_rx_buffer 0 55981 NULL
158589 +enable_so_btrfs_error_unpin_extent_range_fndecl_55983 btrfs_error_unpin_extent_range fndecl 3-2 55983 NULL
158590 +enable_so_mon_bin_get_data_fndecl_55998 mon_bin_get_data fndecl 4 55998 NULL
158591 +enable_so_max_degraded_r5conf_56004 max_degraded r5conf 0 56004 NULL
158592 +enable_so_len_pipe_buffer_56007 len pipe_buffer 0 56007 NULL
158593 +enable_so_lsm_alloc_plain_fndecl_56016 lsm_alloc_plain fndecl 1 56016 NULL
158594 +enable_so_i2400m_change_mtu_fndecl_56021 i2400m_change_mtu fndecl 2 56021 NULL
158595 +enable_so___ocfs2_change_file_space_fndecl_56023 __ocfs2_change_file_space fndecl 3 56023 NULL
158596 +enable_so_vm_memory_committed_fndecl_56024 vm_memory_committed fndecl 0 56024 NULL
158597 +enable_so_vlan_id_ib_mac_iocb_rsp_56025 vlan_id ib_mac_iocb_rsp 0 56025 NULL nohasharray
158598 +enable_so_bootmode_store_fndecl_56025 bootmode_store fndecl 4 56025 &enable_so_vlan_id_ib_mac_iocb_rsp_56025
158599 +enable_so_ov519_pkt_scan_fndecl_56026 ov519_pkt_scan fndecl 3 56026 NULL
158600 +enable_so_can_nocow_extent_fndecl_56034 can_nocow_extent fndecl 2 56034 NULL
158601 +enable_so_SYSC_keyctl_fndecl_56035 SYSC_keyctl fndecl 4 56035 NULL
158602 +enable_so_vbi_pixel_to_capture_vardecl_saa7146_vbi_c_56037 vbi_pixel_to_capture vardecl_saa7146_vbi.c 0 56037 NULL nohasharray
158603 +enable_so_sg_update_list_fndecl_56037 sg_update_list fndecl 2 56037 &enable_so_vbi_pixel_to_capture_vardecl_saa7146_vbi_c_56037
158604 +enable_so_first_system_vector_vardecl_56048 first_system_vector vardecl 0 56048 NULL
158605 +enable_so_status_whc_qtd_56049 status whc_qtd 0 56049 NULL
158606 +enable_so_gs_tss_segment_32_56052 gs tss_segment_32 0 56052 NULL
158607 +enable_so_usb_wwan_setup_urb_fndecl_56054 usb_wwan_setup_urb fndecl 6-3-2 56054 NULL
158608 +enable_so_mod_xfs_alloc_arg_56058 mod xfs_alloc_arg 0 56058 NULL
158609 +enable_so_drm_mm_insert_helper_range_fndecl_56060 drm_mm_insert_helper_range fndecl 3 56060 NULL nohasharray
158610 +enable_so_bg_inode_bitmap_lo_ext4_group_desc_56060 bg_inode_bitmap_lo ext4_group_desc 0 56060 &enable_so_drm_mm_insert_helper_range_fndecl_56060
158611 +enable_so_frag_ceph_mds_reply_dirfrag_56070 frag ceph_mds_reply_dirfrag 0 56070 NULL
158612 +enable_so_full_page_bnx2x_agg_info_56071 full_page bnx2x_agg_info 0 56071 NULL
158613 +enable_so_num_chunks_drm_amdgpu_cs_in_56088 num_chunks drm_amdgpu_cs_in 0 56088 NULL
158614 +enable_so_datalength_fwheader_56097 datalength fwheader 0 56097 NULL
158615 +enable_so_max_frame_size__synclinkmp_info_56104 max_frame_size _synclinkmp_info 0 56104 NULL nohasharray
158616 +enable_so_sync_page_io_fndecl_56104 sync_page_io fndecl 3-2 56104 &enable_so_max_frame_size__synclinkmp_info_56104
158617 +enable_so_maximum_input_absinfo_56108 maximum input_absinfo 0 56108 NULL
158618 +enable_so_p54_alloc_skb_fndecl_56109 p54_alloc_skb fndecl 3 56109 NULL nohasharray
158619 +enable_so_rngapi_reset_fndecl_56109 rngapi_reset fndecl 3 56109 &enable_so_p54_alloc_skb_fndecl_56109
158620 +enable_so_zlib_inflate_blob_fndecl_56117 zlib_inflate_blob fndecl 2-4 56117 NULL nohasharray
158621 +enable_so_block_size_ecryptfs_write_tag_70_packet_silly_stack_56117 block_size ecryptfs_write_tag_70_packet_silly_stack 0 56117 &enable_so_zlib_inflate_blob_fndecl_56117
158622 +enable_so_ssl_prev_nilfs_snapshot_list_56120 ssl_prev nilfs_snapshot_list 0 56120 NULL
158623 +enable_so_q0_depth_bna_rx_config_56122 q0_depth bna_rx_config 0 56122 NULL
158624 +enable_so_ath5k_setup_channels_fndecl_56123 ath5k_setup_channels fndecl 0 56123 NULL
158625 +enable_so_read_rbu_image_type_fndecl_56128 read_rbu_image_type fndecl 6 56128 NULL
158626 +enable_so_usbvision_v4l2_read_fndecl_56129 usbvision_v4l2_read fndecl 3 56129 NULL
158627 +enable_so_size_direct_56131 size direct 0 56131 NULL nohasharray
158628 +enable_so_av7110_vbi_write_fndecl_56131 av7110_vbi_write fndecl 3 56131 &enable_so_size_direct_56131
158629 +enable_so_xenvif_gop_frag_copy_fndecl_56135 xenvif_gop_frag_copy fndecl 5-6 56135 NULL
158630 +enable_so_sl_max_ip_sf_socklist_56140 sl_max ip_sf_socklist 0 56140 NULL
158631 +enable_so_period_size_snd_pcm_oss_setup_56144 period_size snd_pcm_oss_setup 0 56144 NULL
158632 +enable_so_ssa_blkaddr_f2fs_sm_info_56145 ssa_blkaddr f2fs_sm_info 0 56145 NULL
158633 +enable_so__iwl_dbgfs_low_latency_write_fndecl_56153 _iwl_dbgfs_low_latency_write fndecl 3 56153 NULL
158634 +enable_so_reiserfs_resize_fndecl_56154 reiserfs_resize fndecl 2 56154 NULL
158635 +enable_so_i2c_hid_get_raw_report_fndecl_56155 i2c_hid_get_raw_report fndecl 4 56155 NULL
158636 +enable_so_ipx_pktsize_ipxhdr_56157 ipx_pktsize ipxhdr 0 56157 NULL
158637 +enable_so_nd_num_o2nm_node_56160 nd_num o2nm_node 0 56160 NULL
158638 +enable_so_nl80211_send_disassoc_fndecl_56171 nl80211_send_disassoc fndecl 4 56171 NULL
158639 +enable_so_ivtv_read_pos_fndecl_56179 ivtv_read_pos fndecl 3 56179 NULL nohasharray
158640 +enable_so_iwl_calib_set_fndecl_56179 iwl_calib_set fndecl 3 56179 &enable_so_ivtv_read_pos_fndecl_56179
158641 +enable_so_csum_offset_virtio_net_hdr_56180 csum_offset virtio_net_hdr 0 56180 NULL
158642 +enable_so_ivsize_vardecl_encrypted_c_56181 ivsize vardecl_encrypted.c 0 56181 NULL
158643 +enable_so_sctp_make_heartbeat_ack_fndecl_56184 sctp_make_heartbeat_ack fndecl 4 56184 NULL
158644 +enable_so_size_netlbl_domhsh_tbl_56186 size netlbl_domhsh_tbl 0 56186 NULL
158645 +enable_so_wl1271_tx_fill_hdr_fndecl_56191 wl1271_tx_fill_hdr fndecl 4 56191 NULL
158646 +enable_so_qgroupid_btrfs_qgroup_56202 qgroupid btrfs_qgroup 0 56202 NULL
158647 +enable_so_dma_rx_size_sxgbe_priv_data_56205 dma_rx_size sxgbe_priv_data 0 56205 NULL
158648 +enable_so_dlen_pg_56210 dlen pg 0 56210 NULL
158649 +enable_so_sample_stack_user_perf_event_attr_56220 sample_stack_user perf_event_attr 0 56220 NULL
158650 +enable_so_offset_cifs_writedata_56222 offset cifs_writedata 0 56222 NULL nohasharray
158651 +enable_so_reg_cache_size_snd_soc_codec_driver_56222 reg_cache_size snd_soc_codec_driver 0 56222 &enable_so_offset_cifs_writedata_56222
158652 +enable_so_depth_s2255_fmt_56229 depth s2255_fmt 0 56229 NULL
158653 +enable_so_ocfs2_mv_xattr_buckets_fndecl_56231 ocfs2_mv_xattr_buckets fndecl 6-3-5-4 56231 NULL
158654 +enable_so_af9013_wr_regs_fndecl_56239 af9013_wr_regs fndecl 4 56239 NULL
158655 +enable_so_wBlockNumber_ms_bootblock_sysinf_56240 wBlockNumber ms_bootblock_sysinf 0 56240 NULL
158656 +enable_so_qlcnic_set_tx_ring_count_fndecl_56242 qlcnic_set_tx_ring_count fndecl 2 56242 NULL
158657 +enable_so_dt_gpio_count_fndecl_56245 dt_gpio_count fndecl 0 56245 NULL
158658 +enable_so_qtd_fill_fndecl_56249 qtd_fill fndecl 5-6-3-0-4 56249 NULL
158659 +enable_so_i2o_parm_field_get_fndecl_56254 i2o_parm_field_get fndecl 5 56254 NULL
158660 +enable_so_bitmap_copy_from_slot_fndecl_56266 bitmap_copy_from_slot fndecl 2 56266 NULL
158661 +enable_so_lookup_ablock_fndecl_56267 lookup_ablock fndecl 2 56267 NULL
158662 +enable_so_dmreq_start_crypt_config_56268 dmreq_start crypt_config 0 56268 NULL
158663 +enable_so_qp_alloc_res_fndecl_56275 qp_alloc_res fndecl 5 56275 NULL
158664 +enable_so_s_raid_stride_ext4_super_block_56277 s_raid_stride ext4_super_block 0 56277 NULL
158665 +enable_so_fi_ino_ocfs2_find_inode_args_56279 fi_ino ocfs2_find_inode_args 0 56279 NULL
158666 +enable_so_lu_buf_check_and_alloc_fndecl_56282 lu_buf_check_and_alloc fndecl 2 56282 NULL
158667 +enable_so_nr_rates_audioformat_56293 nr_rates audioformat 0 56293 NULL
158668 +enable_so_freq_req_adf4350_state_56294 freq_req adf4350_state 0 56294 NULL
158669 +enable_so_pd_handles_sz_MPT2SAS_ADAPTER_56310 pd_handles_sz MPT2SAS_ADAPTER 0 56310 NULL
158670 +enable_so_ext4_fallocate_fndecl_56314 ext4_fallocate fndecl 3-4 56314 NULL
158671 +enable_so_essid_len_ipw_priv_56318 essid_len ipw_priv 0 56318 NULL
158672 +enable_so_SYSC_lgetxattr_fndecl_56330 SYSC_lgetxattr fndecl 4 56330 NULL
158673 +enable_so_bitmap_resize_fndecl_56333 bitmap_resize fndecl 2 56333 NULL
158674 +enable_so_ebt_compat_match_offset_fndecl_56334 ebt_compat_match_offset fndecl 2 56334 NULL
158675 +enable_so_blksize_vardecl_encrypted_c_56348 blksize vardecl_encrypted.c 0 56348 NULL
158676 +enable_so_dccp_ackvec_add_new_fndecl_56359 dccp_ackvec_add_new fndecl 2-3 56359 NULL
158677 +enable_so_log2secsize_adfs_discrecord_56363 log2secsize adfs_discrecord 0 56363 NULL nohasharray
158678 +enable_so_i_ino_xfs_inode_56363 i_ino xfs_inode 0 56363 &enable_so_log2secsize_adfs_discrecord_56363
158679 +enable_so_interrupt_out_endpointAddress_usb_serial_port_56364 interrupt_out_endpointAddress usb_serial_port 0 56364 NULL
158680 +enable_so_ide_set_pio_mode_fndecl_56371 ide_set_pio_mode fndecl 2 56371 NULL
158681 +enable_so_nd_cmd_in_size_fndecl_56386 nd_cmd_in_size fndecl 0 56386 NULL
158682 +enable_so_ieee80211_fragment_fndecl_56395 ieee80211_fragment fndecl 4-3 56395 NULL
158683 +enable_so_lost_out_tcp_sock_56397 lost_out tcp_sock 0 56397 NULL
158684 +enable_so_ccw_clear_fndecl_56408 ccw_clear fndecl 6-4-5-3 56408 NULL nohasharray
158685 +enable_so_max_sectors_per_req_megasas_instance_56408 max_sectors_per_req megasas_instance 0 56408 &enable_so_ccw_clear_fndecl_56408
158686 +enable_so_f2fs_llseek_fndecl_56409 f2fs_llseek fndecl 2 56409 NULL
158687 +enable_so_ieee80211_auth_challenge_fndecl_56418 ieee80211_auth_challenge fndecl 3 56418 NULL
158688 +enable_so_max_eps_mv_u3d_56428 max_eps mv_u3d 0 56428 NULL
158689 +enable_so_llc_ui_sendmsg_fndecl_56432 llc_ui_sendmsg fndecl 3 56432 NULL nohasharray
158690 +enable_so_stat_len_sge_56432 stat_len sge 0 56432 &enable_so_llc_ui_sendmsg_fndecl_56432
158691 +enable_so_hsync_end_drm_display_mode_56439 hsync_end drm_display_mode 0 56439 NULL nohasharray
158692 +enable_so_bdbars_count_intel8x0_56439 bdbars_count intel8x0 0 56439 &enable_so_hsync_end_drm_display_mode_56439 nohasharray
158693 +enable_so_idx_lebs_ubifs_lp_stats_56439 idx_lebs ubifs_lp_stats 0 56439 &enable_so_bdbars_count_intel8x0_56439
158694 +enable_so_vlan_tag_lro_56441 vlan_tag lro 0 56441 NULL nohasharray
158695 +enable_so_fb_sys_write_fndecl_56441 fb_sys_write fndecl 0-3 56441 &enable_so_vlan_tag_lro_56441
158696 +enable_so_gtk_ivlen_iwl_mvm_56442 gtk_ivlen iwl_mvm 0 56442 NULL nohasharray
158697 +enable_so_num_rx_queues_igb_adapter_56442 num_rx_queues igb_adapter 0 56442 &enable_so_gtk_ivlen_iwl_mvm_56442
158698 +enable_so_DataTransferLength_bulk_cb_wrap_56447 DataTransferLength bulk_cb_wrap 0 56447 NULL
158699 +enable_so___ocfs2_increase_refcount_fndecl_56450 __ocfs2_increase_refcount fndecl 5-4 56450 NULL
158700 +enable_so_size_tcp_fastopen_request_56457 size tcp_fastopen_request 0 56457 NULL nohasharray
158701 +enable_so_block_dm_thin_lookup_result_56457 block dm_thin_lookup_result 0 56457 &enable_so_size_tcp_fastopen_request_56457
158702 +enable_so_winfo_size_data_queue_56462 winfo_size data_queue 0 56462 NULL nohasharray
158703 +enable_so_scnt_aoe_cfghdr_56462 scnt aoe_cfghdr 0 56462 &enable_so_winfo_size_data_queue_56462
158704 +enable_so_tpg_init_fndecl_56464 tpg_init fndecl 2-3 56464 NULL
158705 +enable_so_packet_sendmsg_fndecl_56465 packet_sendmsg fndecl 3 56465 NULL nohasharray
158706 +enable_so_ia_size_iattr_56465 ia_size iattr 0 56465 &enable_so_packet_sendmsg_fndecl_56465 nohasharray
158707 +enable_so_address_rmap_item_56465 address rmap_item 0 56465 &enable_so_ia_size_iattr_56465
158708 +enable_so__pci_add_cap_save_buffer_fndecl_56466 _pci_add_cap_save_buffer fndecl 4 56466 NULL
158709 +enable_so_SyS_poll_fndecl_56467 SyS_poll fndecl 2 56467 NULL
158710 +enable_so_banks_mca_config_56472 banks mca_config 0 56472 NULL
158711 +enable_so___erst_clear_from_storage_fndecl_56476 __erst_clear_from_storage fndecl 1 56476 NULL
158712 +enable_so_func_suspend_usb_function_56478 func_suspend usb_function 0 56478 NULL
158713 +enable_so_dataflash_read_fact_otp_fndecl_56487 dataflash_read_fact_otp fndecl 3-2 56487 NULL
158714 +enable_so_xen_allocate_irqs_dynamic_fndecl_56489 xen_allocate_irqs_dynamic fndecl 1 56489 NULL nohasharray
158715 +enable_so_pp_read_fndecl_56489 pp_read fndecl 3 56489 &enable_so_xen_allocate_irqs_dynamic_fndecl_56489
158716 +enable_so_sm501_calc_pll_fndecl_56493 sm501_calc_pll fndecl 0 56493 NULL nohasharray
158717 +enable_so_ext4_split_convert_extents_fndecl_56493 ext4_split_convert_extents fndecl 0 56493 &enable_so_sm501_calc_pll_fndecl_56493
158718 +enable_so_free_bit_ocfs2_cached_block_free_56500 free_bit ocfs2_cached_block_free 0 56500 NULL
158719 +enable_so_choose_mtu_fndecl_56503 choose_mtu fndecl 0 56503 NULL nohasharray
158720 +enable_so_len_audit_proctitle_56503 len audit_proctitle 0 56503 &enable_so_choose_mtu_fndecl_56503
158721 +enable_so_process_ptload_program_headers_elf64_fndecl_56505 process_ptload_program_headers_elf64 fndecl 3-2 56505 NULL
158722 +enable_so_batadv_socket_receive_packet_fndecl_56509 batadv_socket_receive_packet fndecl 2 56509 NULL
158723 +enable_so_ntb_netdev_rx_handler_fndecl_56518 ntb_netdev_rx_handler fndecl 4 56518 NULL
158724 +enable_so_long_retry_limit_ipw2100_priv_56521 long_retry_limit ipw2100_priv 0 56521 NULL
158725 +enable_so_xbfi_startblock_xfs_bmap_free_item_56529 xbfi_startblock xfs_bmap_free_item 0 56529 NULL
158726 +enable_so_nm_block_nr_nl_mmap_req_56530 nm_block_nr nl_mmap_req 0 56530 NULL
158727 +enable_so_snd_pcm_plug_client_size_fndecl_56544 snd_pcm_plug_client_size fndecl 0-2 56544 NULL
158728 +enable_so_cachefiles_cook_key_fndecl_56553 cachefiles_cook_key fndecl 2 56553 NULL
158729 +enable_so_sctp_tsnmap_grow_fndecl_56579 sctp_tsnmap_grow fndecl 2 56579 NULL
158730 +enable_so_buf_bytes_mmc_blk_ioc_data_56589 buf_bytes mmc_blk_ioc_data 0 56589 NULL
158731 +enable_so_offset_cramfs_inode_56601 offset cramfs_inode 0 56601 NULL
158732 +enable_so_qt2_write_fndecl_56603 qt2_write fndecl 4 56603 NULL
158733 +enable_so_ieee80211_tdls_mgmt_fndecl_56618 ieee80211_tdls_mgmt fndecl 10 56618 NULL
158734 +enable_so_afs_dir_iterate_block_fndecl_56630 afs_dir_iterate_block fndecl 3 56630 NULL
158735 +enable_so_max_blk_count_mmc_host_56634 max_blk_count mmc_host 0 56634 NULL nohasharray
158736 +enable_so_get_register_page_interruptible_fndecl_56634 get_register_page_interruptible fndecl 5 56634 &enable_so_max_blk_count_mmc_host_56634
158737 +enable_so_bytenr_btrfs_root_item_56657 bytenr btrfs_root_item 0 56657 NULL
158738 +enable_so_cifs_writedata_alloc_fndecl_56675 cifs_writedata_alloc fndecl 1 56675 NULL nohasharray
158739 +enable_so_ath6kl_usb_submit_ctrl_in_fndecl_56675 ath6kl_usb_submit_ctrl_in fndecl 6 56675 &enable_so_cifs_writedata_alloc_fndecl_56675
158740 +enable_so_vp702x_usb_inout_cmd_fndecl_56679 vp702x_usb_inout_cmd fndecl 4-6 56679 NULL
158741 +enable_so_pbl_top_rdma_info_56683 pbl_top rdma_info 0 56683 NULL
158742 +enable_so_max_channels_hda_multi_out_56686 max_channels hda_multi_out 0 56686 NULL nohasharray
158743 +enable_so_test_buf_size_vardecl_dmatest_c_56686 test_buf_size vardecl_dmatest.c 0 56686 &enable_so_max_channels_hda_multi_out_56686 nohasharray
158744 +enable_so_visorchannel_dump_section_fndecl_56686 visorchannel_dump_section fndecl 4 56686 &enable_so_test_buf_size_vardecl_dmatest_c_56686
158745 +enable_so_ath6kl_usb_post_recv_transfers_fndecl_56687 ath6kl_usb_post_recv_transfers fndecl 2 56687 NULL nohasharray
158746 +enable_so_npages_in_use_dma_pool_56687 npages_in_use dma_pool 0 56687 &enable_so_ath6kl_usb_post_recv_transfers_fndecl_56687
158747 +enable_so_new_tape_buffer_fndecl_56689 new_tape_buffer fndecl 2 56689 NULL
158748 +enable_so_ks8851_rdreg_fndecl_56695 ks8851_rdreg fndecl 4 56695 NULL
158749 +enable_so_remove_migration_pte_fndecl_56701 remove_migration_pte fndecl 3 56701 NULL
158750 +enable_so_bytes_btrfs_free_space_56706 bytes btrfs_free_space 0 56706 NULL
158751 +enable_so_zlib_inflate_workspacesize_fndecl_56716 zlib_inflate_workspacesize fndecl 0 56716 NULL
158752 +enable_so_qgroupid_btrfs_ioctl_qgroup_create_args_56717 qgroupid btrfs_ioctl_qgroup_create_args 0 56717 NULL
158753 +enable_so_munlock_vma_pages_range_fndecl_56718 munlock_vma_pages_range fndecl 2 56718 NULL
158754 +enable_so_ext4_get_group_number_fndecl_56720 ext4_get_group_number fndecl 0 56720 NULL nohasharray
158755 +enable_so_rcvegrbuf_size_qib_ctxtdata_56720 rcvegrbuf_size qib_ctxtdata 0 56720 &enable_so_ext4_get_group_number_fndecl_56720
158756 +enable_so_opcnt_nfsd4_compoundargs_56722 opcnt nfsd4_compoundargs 0 56722 NULL
158757 +enable_so_val_len_ceph_inode_xattr_56742 val_len ceph_inode_xattr 0 56742 NULL
158758 +enable_so_sb_logsectlog_xfs_sb_56750 sb_logsectlog xfs_sb 0 56750 NULL
158759 +enable_so_read_pipe_ezusb_priv_56753 read_pipe ezusb_priv 0 56753 NULL
158760 +enable_so_cfg_fof_lpfc_hba_56760 cfg_fof lpfc_hba 0 56760 NULL
158761 +enable_so_udf_find_vat_block_fndecl_56763 udf_find_vat_block fndecl 4 56763 NULL
158762 +enable_so_npkt_cam_56768 npkt cam 0 56768 NULL nohasharray
158763 +enable_so_saa7706h_i2c_send_fndecl_56768 saa7706h_i2c_send fndecl 3 56768 &enable_so_npkt_cam_56768
158764 +enable_so_arch_ptrace_fndecl_56774 arch_ptrace fndecl 3 56774 NULL
158765 +enable_so_max_rpi_lpfc_max_cfg_param_56782 max_rpi lpfc_max_cfg_param 0 56782 NULL
158766 +enable_so_tx_rate_mwifiex_private_56784 tx_rate mwifiex_private 0 56784 NULL
158767 +enable_so_mem_size_mxt_data_56785 mem_size mxt_data 0 56785 NULL
158768 +enable_so_ext4_group_overhead_blocks_fndecl_56792 ext4_group_overhead_blocks fndecl 0 56792 NULL
158769 +enable_so_br_multicast_set_hash_max_fndecl_56807 br_multicast_set_hash_max fndecl 2 56807 NULL
158770 +enable_so_write_file_bt_ant_diversity_fndecl_56808 write_file_bt_ant_diversity fndecl 3 56808 NULL
158771 +enable_so_num_pages_vmci_queue_kern_if_56812 num_pages vmci_queue_kern_if 0 56812 NULL
158772 +enable_so_hugetlbfs_pagecache_page_fndecl_56822 hugetlbfs_pagecache_page fndecl 3 56822 NULL
158773 +enable_so_rs_get_best_rate_fndecl_56825 rs_get_best_rate fndecl 5 56825 NULL
158774 +enable_so_ext4_htree_store_dirent_fndecl_56826 ext4_htree_store_dirent fndecl 3-2 56826 NULL
158775 +enable_so_netdev_change_mtu_fndecl_56827 netdev_change_mtu fndecl 2 56827 NULL nohasharray
158776 +enable_so_btrfs_lookup_extent_info_fndecl_56827 btrfs_lookup_extent_info fndecl 4-3 56827 &enable_so_netdev_change_mtu_fndecl_56827
158777 +enable_so_ext3_alloc_blocks_fndecl_56828 ext3_alloc_blocks fndecl 3 56828 NULL nohasharray
158778 +enable_so_SyS_syslog_fndecl_56828 SyS_syslog fndecl 3 56828 &enable_so_ext3_alloc_blocks_fndecl_56828
158779 +enable_so_snd_hdsp_midi_input_available_fndecl_56832 snd_hdsp_midi_input_available fndecl 0 56832 NULL
158780 +enable_so_truesize_sk_buff_56834 truesize sk_buff 0 56834 NULL
158781 +enable_so_tail_TxFifo_56844 tail TxFifo 0 56844 NULL
158782 +enable_so_dm_btree_find_lowest_key_fndecl_56845 dm_btree_find_lowest_key fndecl 2 56845 NULL nohasharray
158783 +enable_so_capacity_alauda_media_info_56845 capacity alauda_media_info 0 56845 &enable_so_dm_btree_find_lowest_key_fndecl_56845
158784 +enable_so_tomoyo_read_self_fndecl_56848 tomoyo_read_self fndecl 3 56848 NULL
158785 +enable_so_gfs2_rbm_from_block_fndecl_56851 gfs2_rbm_from_block fndecl 2 56851 NULL
158786 +enable_so_blocks_mmc_test_area_56853 blocks mmc_test_area 0 56853 NULL
158787 +enable_so_transfer_one_spi_master_56858 transfer_one spi_master 0 56858 NULL
158788 +enable_so_dup_array_fndecl_56860 dup_array fndecl 3 56860 NULL
158789 +enable_so_next_rip_x86_instruction_info_56868 next_rip x86_instruction_info 0 56868 NULL nohasharray
158790 +enable_so_count_subheaders_fndecl_56868 count_subheaders fndecl 0 56868 &enable_so_next_rip_x86_instruction_info_56868
158791 +enable_so_status_pipe_uas_dev_info_56869 status_pipe uas_dev_info 0 56869 NULL
158792 +enable_so_freecom_writedata_fndecl_56872 freecom_writedata fndecl 4 56872 NULL
158793 +enable_so_read_aperture_fndecl_56876 read_aperture fndecl 0 56876 NULL
158794 +enable_so_fat_rebuild_parent_fndecl_56877 fat_rebuild_parent fndecl 2 56877 NULL
158795 +enable_so_xfs_itruncate_extents_fndecl_56879 xfs_itruncate_extents fndecl 4 56879 NULL nohasharray
158796 +enable_so_scsi_execute_fndecl_56879 scsi_execute fndecl 5 56879 &enable_so_xfs_itruncate_extents_fndecl_56879
158797 +enable_so___btrfs_set_prop_fndecl_56883 __btrfs_set_prop fndecl 5 56883 NULL
158798 +enable_so_dx_dirent_blk_ocfs2_dx_entry_56884 dx_dirent_blk ocfs2_dx_entry 0 56884 NULL
158799 +enable_so_read_symlink_fndecl_56887 read_symlink fndecl 2 56887 NULL
158800 +enable_so_zr364xx_got_frame_fndecl_56891 zr364xx_got_frame fndecl 2 56891 NULL
158801 +enable_so_prev_adaption_gsm_dlci_56892 prev_adaption gsm_dlci 0 56892 NULL
158802 +enable_so_width_font_desc_56899 width font_desc 0 56899 NULL
158803 +enable_so_length_fw_cdev_send_response_56906 length fw_cdev_send_response 0 56906 NULL
158804 +enable_so_max_port_number_tb_regs_switch_header_56907 max_port_number tb_regs_switch_header 0 56907 NULL
158805 +enable_so_diff_objects_assoc_array_ops_56914 diff_objects assoc_array_ops 0 56914 NULL
158806 +enable_so_cifs_fsync_fndecl_56917 cifs_fsync fndecl 2 56917 NULL
158807 +enable_so_comedi_buf_write_n_allocated_fndecl_56919 comedi_buf_write_n_allocated fndecl 0 56919 NULL
158808 +enable_so_ip6_find_1stfragopt_fndecl_56923 ip6_find_1stfragopt fndecl 0 56923 NULL nohasharray
158809 +enable_so_dma_mask_size_intel_gtt_driver_56923 dma_mask_size intel_gtt_driver 0 56923 &enable_so_ip6_find_1stfragopt_fndecl_56923
158810 +enable_so_usb_gstrings_attach_fndecl_56924 usb_gstrings_attach fndecl 3 56924 NULL
158811 +enable_so_vram_vardecl_nvidia_c_56925 vram vardecl_nvidia.c 0 56925 NULL
158812 +enable_so_data_len_ib_mac_iocb_rsp_56930 data_len ib_mac_iocb_rsp 0 56930 NULL
158813 +enable_so_align_buffer_sz_sdhci_host_56931 align_buffer_sz sdhci_host 0 56931 NULL
158814 +enable_so_csize_jffs2_tmp_dnode_info_56933 csize jffs2_tmp_dnode_info 0 56933 NULL
158815 +enable_so_nr_pages_memory_notify_56937 nr_pages memory_notify 0 56937 NULL
158816 +enable_so_drm_property_replace_global_blob_fndecl_56945 drm_property_replace_global_blob fndecl 3 56945 NULL
158817 +enable_so_len_rx_hdr_56949 len rx_hdr 0 56949 NULL
158818 +enable_so_target_submit_cmd_fndecl_56950 target_submit_cmd fndecl 6 56950 NULL
158819 +enable_so_DevSizeShift_qinfo_chip_56957 DevSizeShift qinfo_chip 0 56957 NULL
158820 +enable_so_iblock_do_unmap_fndecl_56958 iblock_do_unmap fndecl 4-3 56958 NULL
158821 +enable_so_i_lastalloc_affs_inode_info_56961 i_lastalloc affs_inode_info 0 56961 NULL
158822 +enable_so_cur_pkt_size_pktgen_dev_56962 cur_pkt_size pktgen_dev 0 56962 NULL
158823 +enable_so_n_mem_slots_qxl_device_56964 n_mem_slots qxl_device 0 56964 NULL
158824 +enable_so_maxresp_cached_nfsd4_channel_attrs_56966 maxresp_cached nfsd4_channel_attrs 0 56966 NULL
158825 +enable_so_ceph_write_end_fndecl_56973 ceph_write_end fndecl 5-3 56973 NULL
158826 +enable_so_arp_hdr_len_fndecl_56980 arp_hdr_len fndecl 0 56980 NULL
158827 +enable_so_ath6kl_wmi_startscan_cmd_fndecl_56985 ath6kl_wmi_startscan_cmd fndecl 8 56985 NULL
158828 +enable_so_i2c_hid_alloc_buffers_fndecl_56986 i2c_hid_alloc_buffers fndecl 2 56986 NULL
158829 +enable_so_max_packet_whc_qset_56991 max_packet whc_qset 0 56991 NULL nohasharray
158830 +enable_so_btrfs_dio_bio_alloc_fndecl_56991 btrfs_dio_bio_alloc fndecl 2 56991 &enable_so_max_packet_whc_qset_56991
158831 +enable_so_pvr2_stream_buffer_count_fndecl_56996 pvr2_stream_buffer_count fndecl 2 56996 NULL
158832 +enable_so_write_file_spectral_count_fndecl_57000 write_file_spectral_count fndecl 3 57000 NULL
158833 +enable_so_edid_size_dlfb_data_57003 edid_size dlfb_data 0 57003 NULL nohasharray
158834 +enable_so_sunxi_nand_hw_common_ecc_ctrl_init_fndecl_57003 sunxi_nand_hw_common_ecc_ctrl_init fndecl 0 57003 &enable_so_edid_size_dlfb_data_57003
158835 +enable_so_ext4_clear_blocks_fndecl_57012 ext4_clear_blocks fndecl 4-5 57012 NULL
158836 +enable_so_i2c_hack_wm8775_fndecl_57014 i2c_hack_wm8775 fndecl 4-6 57014 NULL
158837 +enable_so_xs_send_kvec_fndecl_57023 xs_send_kvec fndecl 3 57023 NULL nohasharray
158838 +enable_so_sys_keyctl_fndecl_57023 sys_keyctl fndecl 4 57023 &enable_so_xs_send_kvec_fndecl_57023
158839 +enable_so_usb_packet_maxlen_usb_fifo_57029 usb_packet_maxlen usb_fifo 0 57029 NULL
158840 +enable_so_stacksize_xt_table_info_57031 stacksize xt_table_info 0 57031 NULL
158841 +enable_so_do_munmap_fndecl_57035 do_munmap fndecl 2-3 57035 NULL
158842 +enable_so___btrfs_free_reserved_extent_fndecl_57061 __btrfs_free_reserved_extent fndecl 3-2 57061 NULL
158843 +enable_so_log_blocks_per_seg_f2fs_sb_info_57063 log_blocks_per_seg f2fs_sb_info 0 57063 NULL
158844 +enable_so_ezusb_write_ltv_fndecl_57071 ezusb_write_ltv fndecl 4 57071 NULL
158845 +enable_so_adjusted_retry_count_minstrel_rate_57073 adjusted_retry_count minstrel_rate 0 57073 NULL
158846 +enable_so_set_one_prio_fndecl_57075 set_one_prio fndecl 2 57075 NULL
158847 +enable_so_hashtab_create_fndecl_57082 hashtab_create fndecl 3 57082 NULL
158848 +enable_so_num_uars_mlx4_caps_57093 num_uars mlx4_caps 0 57093 NULL
158849 +enable_so_sync_pt_create_fndecl_57105 sync_pt_create fndecl 2 57105 NULL
158850 +enable_so_total_sections_f2fs_sb_info_57118 total_sections f2fs_sb_info 0 57118 NULL
158851 +enable_so_size_nvif_notify_57130 size nvif_notify 0 57130 NULL
158852 +enable_so_gsm_mux_rx_netchar_fndecl_57131 gsm_mux_rx_netchar fndecl 3 57131 NULL
158853 +enable_so_ath10k_htt_rx_crypto_tail_len_fndecl_57132 ath10k_htt_rx_crypto_tail_len fndecl 0 57132 NULL nohasharray
158854 +enable_so_joydev_ioctl_fndecl_57132 joydev_ioctl fndecl 2 57132 &enable_so_ath10k_htt_rx_crypto_tail_len_fndecl_57132
158855 +enable_so_msg_controllen_msghdr_57136 msg_controllen msghdr 0 57136 NULL nohasharray
158856 +enable_so_ino_pending_dir_move_57136 ino pending_dir_move 0 57136 &enable_so_msg_controllen_msghdr_57136
158857 +enable_so_ha_end_pfn_hv_hotadd_state_57139 ha_end_pfn hv_hotadd_state 0 57139 NULL
158858 +enable_so_pci_set_dma_max_seg_size_fndecl_57140 pci_set_dma_max_seg_size fndecl 2 57140 NULL
158859 +enable_so_buf_nm256_stream_57144 buf nm256_stream 0 57144 NULL
158860 +enable_so_sb_agblklog_xfs_sb_57145 sb_agblklog xfs_sb 0 57145 NULL
158861 +enable_so_vlan_dev_vlan_id_fndecl_57152 vlan_dev_vlan_id fndecl 0 57152 NULL nohasharray
158862 +enable_so_ant_type_il_scale_tbl_info_57152 ant_type il_scale_tbl_info 0 57152 &enable_so_vlan_dev_vlan_id_fndecl_57152
158863 +enable_so_sm501_set_clock_fndecl_57155 sm501_set_clock fndecl 0 57155 NULL
158864 +enable_so_ofs_in_node_dnode_of_data_57156 ofs_in_node dnode_of_data 0 57156 NULL nohasharray
158865 +enable_so_segs_per_sec_f2fs_sb_info_57156 segs_per_sec f2fs_sb_info 0 57156 &enable_so_ofs_in_node_dnode_of_data_57156
158866 +enable_so_bytes_written_flags_cq_enet_rq_desc_57164 bytes_written_flags cq_enet_rq_desc 0 57164 NULL
158867 +enable_so_spi_wr_buf_fndecl_57169 spi_wr_buf fndecl 4 57169 NULL
158868 +enable_so_alloc_len_xps_map_57174 alloc_len xps_map 0 57174 NULL
158869 +enable_so_pd_points_ath5k_pdgain_info_57180 pd_points ath5k_pdgain_info 0 57180 NULL
158870 +enable_so_create_xattr_datum_fndecl_57183 create_xattr_datum fndecl 5 57183 NULL
158871 +enable_so_udf_delete_aext_fndecl_57186 udf_delete_aext fndecl 4 57186 NULL
158872 +enable_so_num_vfs_mlx4_dev_persistent_57187 num_vfs mlx4_dev_persistent 0 57187 NULL
158873 +enable_so_z1_zt_57189 z1 zt 0 57189 NULL
158874 +enable_so_cfs_trace_copyin_string_fndecl_57191 cfs_trace_copyin_string fndecl 4 57191 NULL
158875 +enable_so_OutputCount_smb2_ioctl_rsp_57198 OutputCount smb2_ioctl_rsp 0 57198 NULL
158876 +enable_so__find_next_bit_fndecl_57206 _find_next_bit fndecl 0-2 57206 NULL
158877 +enable_so_sector_dm_crypt_io_57208 sector dm_crypt_io 0 57208 NULL
158878 +enable_so_mon_buff_area_free_fndecl_57212 mon_buff_area_free fndecl 2 57212 NULL
158879 +enable_so_ubh_scanc_fndecl_57231 ubh_scanc fndecl 3-4 57231 NULL
158880 +enable_so_len_setup_data_57234 len setup_data 0 57234 NULL nohasharray
158881 +enable_so_ufs_getfrag_block_fndecl_57234 ufs_getfrag_block fndecl 2 57234 &enable_so_len_setup_data_57234
158882 +enable_so_ext4_meta_bg_first_block_no_fndecl_57235 ext4_meta_bg_first_block_no fndecl 0-2 57235 NULL
158883 +enable_so_header_asix_rx_fixup_info_57237 header asix_rx_fixup_info 0 57237 NULL nohasharray
158884 +enable_so_li_namelen_nfsd4_link_57237 li_namelen nfsd4_link 0 57237 &enable_so_header_asix_rx_fixup_info_57237
158885 +enable_so_offset_ion_test_rw_data_57241 offset ion_test_rw_data 0 57241 NULL
158886 +enable_so_hash_netiface6_expire_fndecl_57246 hash_netiface6_expire fndecl 4 57246 NULL
158887 +enable_so_cyapa_i2c_pip_cmd_irq_sync_fndecl_57249 cyapa_i2c_pip_cmd_irq_sync fndecl 3 57249 NULL
158888 +enable_so_maxlen_xfs_alloc_arg_57260 maxlen xfs_alloc_arg 0 57260 NULL
158889 +enable_so_si2165_read_fndecl_57262 si2165_read fndecl 4 57262 NULL
158890 +enable_so_message_stats_list_fndecl_57267 message_stats_list fndecl 5 57267 NULL nohasharray
158891 +enable_so_fuse_dev_do_write_fndecl_57267 fuse_dev_do_write fndecl 3 57267 &enable_so_message_stats_list_fndecl_57267
158892 +enable_so_mps_l2cap_le_conn_rsp_57280 mps l2cap_le_conn_rsp 0 57280 NULL
158893 +enable_so_entry_nr_kvm_assigned_msix_nr_57282 entry_nr kvm_assigned_msix_nr 0 57282 NULL
158894 +enable_so_hash_netnet4_expire_fndecl_57295 hash_netnet4_expire fndecl 4 57295 NULL
158895 +enable_so_packet_sz_musb_ep_57296 packet_sz musb_ep 0 57296 NULL nohasharray
158896 +enable_so_ovs_vport_alloc_fndecl_57296 ovs_vport_alloc fndecl 1 57296 &enable_so_packet_sz_musb_ep_57296
158897 +enable_so_create_entry_fndecl_57300 create_entry fndecl 2 57300 NULL
158898 +enable_so_rd_addr_gfs2_rgrpd_57301 rd_addr gfs2_rgrpd 0 57301 NULL
158899 +enable_so_tcp_off_tso_state_57305 tcp_off tso_state 0 57305 NULL
158900 +enable_so_qtd_copy_status_fndecl_57306 qtd_copy_status fndecl 0-4-3 57306 NULL
158901 +enable_so_ptk_ivlen_iwl_mvm_57307 ptk_ivlen iwl_mvm 0 57307 NULL
158902 +enable_so_ip_setsockopt_fndecl_57308 ip_setsockopt fndecl 5 57308 NULL nohasharray
158903 +enable_so_usCRTC_V_SyncStart__ATOM_MODE_TIMING_57308 usCRTC_V_SyncStart _ATOM_MODE_TIMING 0 57308 &enable_so_ip_setsockopt_fndecl_57308
158904 +enable_so_nes_alloc_fast_reg_page_list_fndecl_57312 nes_alloc_fast_reg_page_list fndecl 2 57312 NULL
158905 +enable_so_ahash_setkey_unaligned_fndecl_57314 ahash_setkey_unaligned fndecl 3 57314 NULL
158906 +enable_so_interrupt_in_endpoint_size_ld_usb_57321 interrupt_in_endpoint_size ld_usb 0 57321 NULL
158907 +enable_so_i_blocks_lo_ext4_inode_57322 i_blocks_lo ext4_inode 0 57322 NULL
158908 +enable_so_fb_read_fndecl_57329 fb_read fndecl 3 57329 NULL
158909 +enable_so_musb_test_mode_write_fndecl_57341 musb_test_mode_write fndecl 3 57341 NULL
158910 +enable_so_ext4_expand_extra_isize_ea_fndecl_57344 ext4_expand_extra_isize_ea fndecl 2 57344 NULL
158911 +enable_so_root_hpfs_super_block_57345 root hpfs_super_block 0 57345 NULL
158912 +enable_so_align_nf_ct_ext_type_57348 align nf_ct_ext_type 0 57348 NULL
158913 +enable_so_hblank_hi_lvds_dvo_timing_57349 hblank_hi lvds_dvo_timing 0 57349 NULL
158914 +enable_so_ixgbe_pci_sriov_enable_fndecl_57353 ixgbe_pci_sriov_enable fndecl 2 57353 NULL
158915 +enable_so_lbs_debugfs_write_fndecl_57358 lbs_debugfs_write fndecl 3 57358 NULL
158916 +enable_so_usFirmwareUseInKb__ATOM_FIRMWARE_VRAM_RESERVE_INFO_57360 usFirmwareUseInKb _ATOM_FIRMWARE_VRAM_RESERVE_INFO 0 57360 NULL
158917 +enable_so_nfs_create_request_fndecl_57363 nfs_create_request fndecl 5-4 57363 NULL
158918 +enable_so_au_sd_ssr_57367 au sd_ssr 0 57367 NULL
158919 +enable_so_dqi_giblk_ocfs2_mem_dqinfo_57374 dqi_giblk ocfs2_mem_dqinfo 0 57374 NULL
158920 +enable_so_rcount_slip_57376 rcount slip 0 57376 NULL
158921 +enable_so_len_nfs4_string_57378 len nfs4_string 0 57378 NULL
158922 +enable_so_kfd_pasid_alloc_fndecl_57381 kfd_pasid_alloc fndecl 0 57381 NULL
158923 +enable_so_print_filtered_fndecl_57385 print_filtered fndecl 0-2 57385 NULL
158924 +enable_so_ext3_direct_IO_fndecl_57388 ext3_direct_IO fndecl 3 57388 NULL
158925 +enable_so_div64_u64_rem_fndecl_57393 div64_u64_rem fndecl 0 57393 NULL
158926 +enable_so_uhid_event_from_user_fndecl_57394 uhid_event_from_user fndecl 2 57394 NULL
158927 +enable_so_ocfs2_reflink_xattr_bucket_fndecl_57395 ocfs2_reflink_xattr_bucket fndecl 2-6-3 57395 NULL
158928 +enable_so_radeon_audio_acr_fndecl_57396 radeon_audio_acr fndecl 1 57396 NULL
158929 +enable_so_kfd_ioctl_fndecl_57397 kfd_ioctl fndecl 2 57397 NULL
158930 +enable_so_get_next_rmap_item_fndecl_57398 get_next_rmap_item fndecl 3 57398 NULL
158931 +enable_so_nr_cpu_ids_vardecl_57399 nr_cpu_ids vardecl 0 57399 NULL
158932 +enable_so_nfs4_alloc_pages_fndecl_57401 nfs4_alloc_pages fndecl 1 57401 NULL
158933 +enable_so_copy_page_from_iter_iovec_fndecl_57409 copy_page_from_iter_iovec fndecl 3 57409 NULL
158934 +enable_so__iwl_dbgfs_bt_tx_prio_write_fndecl_57418 _iwl_dbgfs_bt_tx_prio_write fndecl 3 57418 NULL
158935 +enable_so_numbered_hid_report_enum_57419 numbered hid_report_enum 0 57419 NULL
158936 +enable_so_blkdev_get_block_fndecl_57432 blkdev_get_block fndecl 2 57432 NULL
158937 +enable_so_send_control_msg_fndecl_57441 send_control_msg fndecl 6 57441 NULL
158938 +enable_so_convert_tail_for_hole_fndecl_57444 convert_tail_for_hole fndecl 3 57444 NULL
158939 +enable_so_segsize_loc_dn_scp_57445 segsize_loc dn_scp 0 57445 NULL
158940 +enable_so_dln2_i2c_read_fndecl_57452 dln2_i2c_read fndecl 4 57452 NULL
158941 +enable_so_page_offset_igb_rx_buffer_57453 page_offset igb_rx_buffer 0 57453 NULL
158942 +enable_so_diva_os_copy_to_user_fndecl_57455 diva_os_copy_to_user fndecl 4 57455 NULL
158943 +enable_so_rs_get_tbl_info_from_mcs_fndecl_57461 rs_get_tbl_info_from_mcs fndecl 1 57461 NULL
158944 +enable_so_ib_ipath_lkey_table_size_vardecl_57463 ib_ipath_lkey_table_size vardecl 0 57463 NULL
158945 +enable_so_r8712_usbctrl_vendorreq_fndecl_57466 r8712_usbctrl_vendorreq fndecl 6 57466 NULL
158946 +enable_so_ext3_splice_branch_fndecl_57472 ext3_splice_branch fndecl 6 57472 NULL
158947 +enable_so_drbd_bm_capacity_fndecl_57473 drbd_bm_capacity fndecl 0 57473 NULL
158948 +enable_so_nutrs_ufs_hba_57478 nutrs ufs_hba 0 57478 NULL
158949 +enable_so_data_len_ib_mad_send_buf_57480 data_len ib_mad_send_buf 0 57480 NULL
158950 +enable_so_item_udata_fndecl_57481 item_udata fndecl 0 57481 NULL nohasharray
158951 +enable_so_gfs2_log_get_bio_fndecl_57481 gfs2_log_get_bio fndecl 2 57481 &enable_so_item_udata_fndecl_57481
158952 +enable_so_brcmf_sdio_glom_len_fndecl_57483 brcmf_sdio_glom_len fndecl 0 57483 NULL
158953 +enable_so_mps_l2cap_le_conn_req_57484 mps l2cap_le_conn_req 0 57484 NULL
158954 +enable_so_iwlagn_hwrate_to_mac80211_idx_fndecl_57485 iwlagn_hwrate_to_mac80211_idx fndecl 1 57485 NULL
158955 +enable_so_consume_q_size_vmci_qp_57492 consume_q_size vmci_qp 0 57492 NULL
158956 +enable_so_r8a66597_urb_done_fndecl_57497 r8a66597_urb_done fndecl 3 57497 NULL
158957 +enable_so_usnic_uiom_get_pages_fndecl_57510 usnic_uiom_get_pages fndecl 1 57510 NULL
158958 +enable_so_raid10_size_fndecl_57512 raid10_size fndecl 0-3-2 57512 NULL
158959 +enable_so_s_log_block_size_ext4_super_block_57520 s_log_block_size ext4_super_block 0 57520 NULL nohasharray
158960 +enable_so_efer_vmcb_save_area_57520 efer vmcb_save_area 0 57520 &enable_so_s_log_block_size_ext4_super_block_57520
158961 +enable_so_nvbios_extend_fndecl_57525 nvbios_extend fndecl 2 57525 NULL
158962 +enable_so_temp_begin_applesmc_registers_57532 temp_begin applesmc_registers 0 57532 NULL
158963 +enable_so_height_tw68_dev_57535 height tw68_dev 0 57535 NULL nohasharray
158964 +enable_so_f2fs_direct_IO_fndecl_57535 f2fs_direct_IO fndecl 3 57535 &enable_so_height_tw68_dev_57535
158965 +enable_so_diFindFree_fndecl_57537 diFindFree fndecl 0-2 57537 NULL
158966 +enable_so_trimmed_cp_control_57542 trimmed cp_control 0 57542 NULL
158967 +enable_so_i_file_sec_hpfs_inode_info_57545 i_file_sec hpfs_inode_info 0 57545 NULL
158968 +enable_so_ext4_ind_direct_IO_fndecl_57548 ext4_ind_direct_IO fndecl 3 57548 NULL nohasharray
158969 +enable_so_is_zd1211b_zd_usb_57548 is_zd1211b zd_usb 0 57548 &enable_so_ext4_ind_direct_IO_fndecl_57548
158970 +enable_so_nvif_notify_init_fndecl_57553 nvif_notify_init fndecl 8-7 57553 NULL
158971 +enable_so_ocfs2_increase_refcount_fndecl_57564 ocfs2_increase_refcount fndecl 5-4 57564 NULL
158972 +enable_so_offset_mtd_part_57572 offset mtd_part 0 57572 NULL
158973 +enable_so_i40e_receive_skb_fndecl_57575 i40e_receive_skb fndecl 3 57575 NULL nohasharray
158974 +enable_so_pvr2_ctrl_get_max_fndecl_57575 pvr2_ctrl_get_max fndecl 0 57575 &enable_so_i40e_receive_skb_fndecl_57575
158975 +enable_so_blkstol2_fndecl_57577 blkstol2 fndecl 0 57577 NULL
158976 +enable_so_data_dot_offset_xfs_dir_ops_57591 data_dot_offset xfs_dir_ops 0 57591 NULL
158977 +enable_so_usCRTC_V_Disp__ATOM_MODE_TIMING_57594 usCRTC_V_Disp _ATOM_MODE_TIMING 0 57594 NULL
158978 +enable_so_update_regset_xstate_info_fndecl_57602 update_regset_xstate_info fndecl 1 57602 NULL nohasharray
158979 +enable_so_dn_fib_count_nhs_fndecl_57602 dn_fib_count_nhs fndecl 0 57602 &enable_so_update_regset_xstate_info_fndecl_57602
158980 +enable_so_sc_pwd_len_wl18xx_event_mailbox_57604 sc_pwd_len wl18xx_event_mailbox 0 57604 NULL
158981 +enable_so_get_cur_inode_state_fndecl_57606 get_cur_inode_state fndecl 2 57606 NULL
158982 +enable_so___tcp_push_pending_frames_fndecl_57607 __tcp_push_pending_frames fndecl 2 57607 NULL
158983 +enable_so__add_to_r4w_fndecl_57611 _add_to_r4w fndecl 4 57611 NULL nohasharray
158984 +enable_so_reg_readw_hda_controller_ops_57611 reg_readw hda_controller_ops 0 57611 &enable_so__add_to_r4w_fndecl_57611
158985 +enable_so_wWidth_uvc_frame_57615 wWidth uvc_frame 0 57615 NULL
158986 +enable_so_vmw_framebuffer_surface_dirty_fndecl_57623 vmw_framebuffer_surface_dirty fndecl 6 57623 NULL
158987 +enable_so_ieee80211_mesh_rx_probe_req_fndecl_57630 ieee80211_mesh_rx_probe_req fndecl 3 57630 NULL
158988 +enable_so_node_ino_f2fs_super_block_57645 node_ino f2fs_super_block 0 57645 NULL
158989 +enable_so_num_stripes_btrfs_bio_57647 num_stripes btrfs_bio 0 57647 NULL
158990 +enable_so_ctl_out_pipe_brcmf_usbdev_info_57648 ctl_out_pipe brcmf_usbdev_info 0 57648 NULL nohasharray
158991 +enable_so_c4iw_id_table_alloc_fndecl_57648 c4iw_id_table_alloc fndecl 3 57648 &enable_so_ctl_out_pipe_brcmf_usbdev_info_57648
158992 +enable_so_ql2xmaxqueues_vardecl_57653 ql2xmaxqueues vardecl 0 57653 NULL
158993 +enable_so_bnx2x_gunzip_fndecl_57655 bnx2x_gunzip fndecl 3 57655 NULL
158994 +enable_so_fuse_request_init_fndecl_57656 fuse_request_init fndecl 4 57656 NULL
158995 +enable_so_rbd_obj_method_sync_fndecl_57657 rbd_obj_method_sync fndecl 8 57657 NULL
158996 +enable_so_len_pn533_poll_modulations_57671 len pn533_poll_modulations 0 57671 NULL
158997 +enable_so_xfs_dir3_data_readahead_fndecl_57683 xfs_dir3_data_readahead fndecl 2 57683 NULL
158998 +enable_so_data_dma_kbtab_57688 data_dma kbtab 0 57688 NULL
158999 +enable_so_cfg80211_process_deauth_fndecl_57691 cfg80211_process_deauth fndecl 3 57691 NULL
159000 +enable_so_conflen_gss_krb5_enctype_57693 conflen gss_krb5_enctype 0 57693 NULL nohasharray
159001 +enable_so_phys_base_ptr_vbe_mode_ib_57693 phys_base_ptr vbe_mode_ib 0 57693 &enable_so_conflen_gss_krb5_enctype_57693
159002 +enable_so_residual_datacnt_initiator_status_57708 residual_datacnt initiator_status 0 57708 NULL
159003 +enable_so_uv_blade_nr_possible_cpus_fndecl_57713 uv_blade_nr_possible_cpus fndecl 0 57713 NULL
159004 +enable_so_de_size_fndecl_57715 de_size fndecl 1-0 57715 NULL
159005 +enable_so_ttm_bo_create_fndecl_57717 ttm_bo_create fndecl 2 57717 NULL
159006 +enable_so_nilfs_readpages_fndecl_57718 nilfs_readpages fndecl 4 57718 NULL
159007 +enable_so_partition_sched_domains_fndecl_57727 partition_sched_domains fndecl 1 57727 NULL
159008 +enable_so_max_devs_vardecl_aic94xx_hwi_c_57731 max_devs vardecl_aic94xx_hwi.c 0 57731 NULL
159009 +enable_so_failure_frame_iwl_mvm_tx_resp_57736 failure_frame iwl_mvm_tx_resp 0 57736 NULL nohasharray
159010 +enable_so_opts1_cp_desc_57736 opts1 cp_desc 0 57736 &enable_so_failure_frame_iwl_mvm_tx_resp_57736
159011 +enable_so_prepare_message_spi_master_57743 prepare_message spi_master 0 57743 NULL nohasharray
159012 +enable_so_used_ebs_ubi_ainf_volume_57743 used_ebs ubi_ainf_volume 0 57743 &enable_so_prepare_message_spi_master_57743
159013 +enable_so_batadv_socket_read_fndecl_57746 batadv_socket_read fndecl 3 57746 NULL
159014 +enable_so_res_hor_val_pvr2_hdw_57754 res_hor_val pvr2_hdw 0 57754 NULL nohasharray
159015 +enable_so_mdts_nvme_id_ctrl_57754 mdts nvme_id_ctrl 0 57754 &enable_so_res_hor_val_pvr2_hdw_57754
159016 +enable_so_cache_write_pipefs_fndecl_57757 cache_write_pipefs fndecl 3 57757 NULL
159017 +enable_so_kernel_sendmsg_fndecl_57763 kernel_sendmsg fndecl 0 57763 NULL
159018 +enable_so_numEntries__ATOM_PPLIB_ACPClk_Voltage_Limit_Table_57767 numEntries _ATOM_PPLIB_ACPClk_Voltage_Limit_Table 0 57767 NULL
159019 +enable_so_MaxDevHandle_mpt2sas_facts_57768 MaxDevHandle mpt2sas_facts 0 57768 NULL
159020 +enable_so_send_set_info_fndecl_57779 send_set_info fndecl 7 57779 NULL
159021 +enable_so_end_numa_memblk_57780 end numa_memblk 0 57780 NULL nohasharray
159022 +enable_so_height_fb_copyarea_57780 height fb_copyarea 0 57780 &enable_so_end_numa_memblk_57780
159023 +enable_so_fp_array_size_bnx2x_57781 fp_array_size bnx2x 0 57781 NULL
159024 +enable_so_mp_rx_agg_buf_size_sdio_mmc_card_57794 mp_rx_agg_buf_size sdio_mmc_card 0 57794 NULL
159025 +enable_so_spk_xe_vardecl_57804 spk_xe vardecl 0 57804 NULL
159026 +enable_so_ioc_count_obd_ioctl_data_57830 ioc_count obd_ioctl_data 0 57830 NULL
159027 +enable_so_vxfs_bmap_ext4_fndecl_57831 vxfs_bmap_ext4 fndecl 0-2 57831 NULL
159028 +enable_so___pn533_send_frame_async_fndecl_57850 __pn533_send_frame_async fndecl 4 57850 NULL nohasharray
159029 +enable_so_i_pos_hi_fat_fid_57850 i_pos_hi fat_fid 0 57850 &enable_so___pn533_send_frame_async_fndecl_57850
159030 +enable_so_vd_dsr_au_count_gru_vma_data_57855 vd_dsr_au_count gru_vma_data 0 57855 NULL
159031 +enable_so_nilfs_resize_fs_fndecl_57861 nilfs_resize_fs fndecl 2 57861 NULL
159032 +enable_so_len_splice_desc_57862 len splice_desc 0 57862 NULL
159033 +enable_so__usbctrl_vendorreq_async_write_fndecl_57866 _usbctrl_vendorreq_async_write fndecl 6 57866 NULL
159034 +enable_so_bg_block_bitmap_lo_ext4_group_desc_57870 bg_block_bitmap_lo ext4_group_desc 0 57870 NULL
159035 +enable_so_mac_drv_rx_init_fndecl_57873 mac_drv_rx_init fndecl 2 57873 NULL nohasharray
159036 +enable_so_joydev_handle_JSIOCSAXMAP_fndecl_57873 joydev_handle_JSIOCSAXMAP fndecl 3 57873 &enable_so_mac_drv_rx_init_fndecl_57873
159037 +enable_so_length_ib_umad_packet_57875 length ib_umad_packet 0 57875 NULL nohasharray
159038 +enable_so_init_pci_serial_quirk_57875 init pci_serial_quirk 0 57875 &enable_so_length_ib_umad_packet_57875
159039 +enable_so_xdi_copy_to_user_fndecl_57879 xdi_copy_to_user fndecl 4 57879 NULL
159040 +enable_so_wpa_local_info_57892 wpa local_info 0 57892 NULL
159041 +enable_so_fat_sectors_fat_bios_param_block_57917 fat_sectors fat_bios_param_block 0 57917 NULL
159042 +enable_so_vma_merge_fndecl_57925 vma_merge fndecl 4-3 57925 NULL
159043 +enable_so_MaxXmitDataSegmentLength_iscsi_conn_ops_57926 MaxXmitDataSegmentLength iscsi_conn_ops 0 57926 NULL
159044 +enable_so_radeon_audio_update_acr_fndecl_57929 radeon_audio_update_acr fndecl 2 57929 NULL
159045 +enable_so__alloc_set_attr_list_fndecl_57932 _alloc_set_attr_list fndecl 4 57932 NULL
159046 +enable_so_nand_ecc_test_run_fndecl_57941 nand_ecc_test_run fndecl 1 57941 NULL
159047 +enable_so_vmci_handle_arr_create_fndecl_57944 vmci_handle_arr_create fndecl 1 57944 NULL
159048 +enable_so_eeprom_size_rt2x00_ops_57953 eeprom_size rt2x00_ops 0 57953 NULL
159049 +enable_so_logical_block_count_msb_data_57955 logical_block_count msb_data 0 57955 NULL
159050 +enable_so_vapic_addr_kvm_vapic_addr_57958 vapic_addr kvm_vapic_addr 0 57958 NULL
159051 +enable_so_ticket_len_rxkad_response_57960 ticket_len rxkad_response 0 57960 NULL nohasharray
159052 +enable_so_null_alloc_rs_fndecl_57960 null_alloc_rs fndecl 2 57960 &enable_so_ticket_len_rxkad_response_57960
159053 +enable_so_mei_cl_alloc_cb_fndecl_57971 mei_cl_alloc_cb fndecl 2 57971 NULL
159054 +enable_so_sel_write_enforce_fndecl_57973 sel_write_enforce fndecl 3 57973 NULL
159055 +enable_so_hpfs_map_anode_fndecl_57993 hpfs_map_anode fndecl 2 57993 NULL
159056 +enable_so_faultin_page_fndecl_57994 faultin_page fndecl 3 57994 NULL
159057 +enable_so_iopm_base_pa_vmcb_control_area_57998 iopm_base_pa vmcb_control_area 0 57998 NULL
159058 +enable_so_transient_status_fndecl_58000 transient_status fndecl 4 58000 NULL
159059 +enable_so_SSIDlen_StatusRid_58002 SSIDlen StatusRid 0 58002 NULL
159060 +enable_so_set_alt_usb_function_58003 set_alt usb_function 0 58003 NULL
159061 +enable_so_max_master_fs_adau1977_58013 max_master_fs adau1977 0 58013 NULL nohasharray
159062 +enable_so_ipath_reg_user_mr_fndecl_58013 ipath_reg_user_mr fndecl 2 58013 &enable_so_max_master_fs_adau1977_58013
159063 +enable_so_atl2_change_mtu_fndecl_58020 atl2_change_mtu fndecl 2 58020 NULL
159064 +enable_so_xdr_buf_subsegment_fndecl_58027 xdr_buf_subsegment fndecl 4-3 58027 NULL
159065 +enable_so_xfs_extent_busy_reuse_fndecl_58034 xfs_extent_busy_reuse fndecl 4-3 58034 NULL
159066 +enable_so_rindex_sc18is602_58043 rindex sc18is602 0 58043 NULL nohasharray
159067 +enable_so_rtw_check_beacon_data23a_fndecl_58043 rtw_check_beacon_data23a fndecl 3 58043 &enable_so_rindex_sc18is602_58043
159068 +enable_so_num_sqsets_csio_hw_58048 num_sqsets csio_hw 0 58048 NULL
159069 +enable_so_offset_m48t59_plat_data_58063 offset m48t59_plat_data 0 58063 NULL nohasharray
159070 +enable_so_wpa_ie_len_hostap_bss_info_58063 wpa_ie_len hostap_bss_info 0 58063 &enable_so_offset_m48t59_plat_data_58063
159071 +enable_so_deflate_decompress_fndecl_58064 deflate_decompress fndecl 3 58064 NULL
159072 +enable_so_scsi_register_fndecl_58069 scsi_register fndecl 2 58069 NULL
159073 +enable_so_max_fast_reg_page_list_len_ib_device_attr_58072 max_fast_reg_page_list_len ib_device_attr 0 58072 NULL
159074 +enable_so_paging64_walk_addr_nested_fndecl_58079 paging64_walk_addr_nested fndecl 3-4 58079 NULL
159075 +enable_so_qib_user_sdma_pin_pages_fndecl_58083 qib_user_sdma_pin_pages fndecl 5-4 58083 NULL nohasharray
159076 +enable_so_pt_read_fndecl_58083 pt_read fndecl 3 58083 &enable_so_qib_user_sdma_pin_pages_fndecl_58083 nohasharray
159077 +enable_so_netxen_setup_msi_interrupts_fndecl_58083 netxen_setup_msi_interrupts fndecl 2 58083 &enable_so_pt_read_fndecl_58083
159078 +enable_so_buffer_count_drm_i915_gem_execbuffer2_58084 buffer_count drm_i915_gem_execbuffer2 0 58084 NULL
159079 +enable_so_next_bofs_irlap_cb_58088 next_bofs irlap_cb 0 58088 NULL
159080 +enable_so_chipsize_onenand_chip_58089 chipsize onenand_chip 0 58089 NULL
159081 +enable_so_p9_client_zc_rpc_fndecl_58092 p9_client_zc_rpc fndecl 7 58092 NULL nohasharray
159082 +enable_so_atyfb_setup_generic_fndecl_58092 atyfb_setup_generic fndecl 3 58092 &enable_so_p9_client_zc_rpc_fndecl_58092
159083 +enable_so_done_scsi_driver_58095 done scsi_driver 0 58095 NULL
159084 +enable_so_ll_max_cached_mb_seq_write_fndecl_58097 ll_max_cached_mb_seq_write fndecl 3 58097 NULL
159085 +enable_so_button_num_ad714x_platform_data_58098 button_num ad714x_platform_data 0 58098 NULL
159086 +enable_so_head_p9_rdir_58110 head p9_rdir 0 58110 NULL
159087 +enable_so_usb_stor_ctrl_transfer_fndecl_58117 usb_stor_ctrl_transfer fndecl 8-2 58117 NULL
159088 +enable_so_dvb_buf_tscnt_vardecl_cx88_dvb_c_58119 dvb_buf_tscnt vardecl_cx88-dvb.c 0 58119 NULL
159089 +enable_so_next_rs_il_rate_info_58123 next_rs il_rate_info 0 58123 NULL
159090 +enable_so_sys_setgroups_fndecl_58127 sys_setgroups fndecl 1 58127 NULL nohasharray
159091 +enable_so_sm501_create_subdev_fndecl_58127 sm501_create_subdev fndecl 4-3 58127 &enable_so_sys_setgroups_fndecl_58127 nohasharray
159092 +enable_so_mlx4_en_hwtstamp_set_fndecl_58127 mlx4_en_hwtstamp_set fndecl 0 58127 &enable_so_sm501_create_subdev_fndecl_58127
159093 +enable_so_bufsize_vardecl_subpagetest_c_58128 bufsize vardecl_subpagetest.c 0 58128 NULL
159094 +enable_so_l_pn_lbuf_58130 l_pn lbuf 0 58130 NULL nohasharray
159095 +enable_so_do_ip_vs_set_ctl_fndecl_58130 do_ip_vs_set_ctl fndecl 4 58130 &enable_so_l_pn_lbuf_58130
159096 +enable_so_n_bitrates_ieee80211_supported_band_58136 n_bitrates ieee80211_supported_band 0 58136 NULL nohasharray
159097 +enable_so_ll_rw_extents_stats_pp_seq_write_fndecl_58136 ll_rw_extents_stats_pp_seq_write fndecl 3 58136 &enable_so_n_bitrates_ieee80211_supported_band_58136
159098 +enable_so_packet_recvmsg_fndecl_58143 packet_recvmsg fndecl 3 58143 NULL
159099 +enable_so_hr_block_bytes_o2hb_region_58145 hr_block_bytes o2hb_region 0 58145 NULL
159100 +enable_so_nroutes_mc5_params_58146 nroutes mc5_params 0 58146 NULL
159101 +enable_so___record_changed_deleted_ref_fndecl_58150 __record_changed_deleted_ref fndecl 2 58150 NULL
159102 +enable_so_i_clusters_ocfs2_dinode_58151 i_clusters ocfs2_dinode 0 58151 NULL
159103 +enable_so_altera_drscan_fndecl_58153 altera_drscan fndecl 2 58153 NULL
159104 +enable_so_rx_status_rx_desc_58154 rx_status rx_desc 0 58154 NULL
159105 +enable_so_size_drm_i915_gem_pwrite_58161 size drm_i915_gem_pwrite 0 58161 NULL
159106 +enable_so_bnad_cq_setup_skb_frags_fndecl_58177 bnad_cq_setup_skb_frags fndecl 5 58177 NULL
159107 +enable_so_num_clips_drm_vmw_present_readback_arg_58182 num_clips drm_vmw_present_readback_arg 0 58182 NULL
159108 +enable_so_total_num_uuars_mlx5_ib_alloc_ucontext_req_v2_58191 total_num_uuars mlx5_ib_alloc_ucontext_req_v2 0 58191 NULL
159109 +enable_so_kvm_set_irq_routing_fndecl_58195 kvm_set_irq_routing fndecl 3 58195 NULL
159110 +enable_so_npages_ttm_page_pool_58200 npages ttm_page_pool 0 58200 NULL
159111 +enable_so_lpfc_idiag_drbacc_write_fndecl_58203 lpfc_idiag_drbacc_write fndecl 3 58203 NULL
159112 +enable_so_SyS_lgetxattr_fndecl_58204 SyS_lgetxattr fndecl 4 58204 NULL
159113 +enable_so_rx_pipe_at76_priv_58217 rx_pipe at76_priv 0 58217 NULL
159114 +enable_so_xfs_attr_set_fndecl_58225 xfs_attr_set fndecl 4 58225 NULL
159115 +enable_so_ubifs_jnl_write_data_fndecl_58229 ubifs_jnl_write_data fndecl 5 58229 NULL
159116 +enable_so_ath6kl_usb_bmi_read_fndecl_58234 ath6kl_usb_bmi_read fndecl 3 58234 NULL
159117 +enable_so_len_on_bd_bnx2x_agg_info_58236 len_on_bd bnx2x_agg_info 0 58236 NULL
159118 +enable_so_i915_displayport_test_active_write_fndecl_58241 i915_displayport_test_active_write fndecl 3 58241 NULL
159119 +enable_so_num_rx_queues_fm10k_intfc_58243 num_rx_queues fm10k_intfc 0 58243 NULL
159120 +enable_so_font_backup_height_sisusb_usb_data_58247 font_backup_height sisusb_usb_data 0 58247 NULL
159121 +enable_so_ies_len_cfg80211_ft_event_params_58259 ies_len cfg80211_ft_event_params 0 58259 NULL
159122 +enable_so_l2cap_segment_sdu_fndecl_58263 l2cap_segment_sdu fndecl 4 58263 NULL
159123 +enable_so_file_size_fnode_58268 file_size fnode 0 58268 NULL
159124 +enable_so_em28xx_set_video_format_fndecl_58273 em28xx_set_video_format fndecl 3-4 58273 NULL
159125 +enable_so_tcp_push_one_fndecl_58275 tcp_push_one fndecl 2 58275 NULL nohasharray
159126 +enable_so_pages_in_block_msb_data_58275 pages_in_block msb_data 0 58275 &enable_so_tcp_push_one_fndecl_58275
159127 +enable_so_unique_len_drm_unique_58288 unique_len drm_unique 0 58288 NULL
159128 +enable_so_adfs_map_lookup_fndecl_58299 adfs_map_lookup fndecl 3 58299 NULL
159129 +enable_so_y2_drm_clip_rect_58302 y2 drm_clip_rect 0 58302 NULL
159130 +enable_so_buffer_size_snd_pcm_runtime_58304 buffer_size snd_pcm_runtime 0 58304 NULL
159131 +enable_so_CountHigh_smb_com_write_rsp_58306 CountHigh smb_com_write_rsp 0 58306 NULL
159132 +enable_so_memblock_alloc_range_fndecl_58316 memblock_alloc_range fndecl 2-1 58316 NULL
159133 +enable_so_adau1977_set_tdm_slot_fndecl_58318 adau1977_set_tdm_slot fndecl 4-5 58318 NULL
159134 +enable_so_vc_do_resize_fndecl_58329 vc_do_resize fndecl 4-3 58329 NULL
159135 +enable_so_nlmon_change_mtu_fndecl_58340 nlmon_change_mtu fndecl 2 58340 NULL nohasharray
159136 +enable_so_start_crypt_config_58340 start crypt_config 0 58340 &enable_so_nlmon_change_mtu_fndecl_58340
159137 +enable_so_s2io_change_mtu_fndecl_58344 s2io_change_mtu fndecl 2 58344 NULL
159138 +enable_so_ext2_alloc_branch_fndecl_58346 ext2_alloc_branch fndecl 4 58346 NULL
159139 +enable_so_actions_len_sw_flow_actions_58353 actions_len sw_flow_actions 0 58353 NULL
159140 +enable_so_viafb_dvp1_proc_write_fndecl_58355 viafb_dvp1_proc_write fndecl 3 58355 NULL
159141 +enable_so_xgmac_change_mtu_fndecl_58357 xgmac_change_mtu fndecl 2 58357 NULL
159142 +enable_so___ffs_ep0_read_events_fndecl_58359 __ffs_ep0_read_events fndecl 3 58359 NULL
159143 +enable_so_length_qib_swqe_58364 length qib_swqe 0 58364 NULL
159144 +enable_so_tun_recvmsg_fndecl_58372 tun_recvmsg fndecl 3 58372 NULL
159145 +enable_so_ingr_start_sge_58376 ingr_start sge 0 58376 NULL
159146 +enable_so_x86_get_mtrr_mem_range_fndecl_58379 x86_get_mtrr_mem_range fndecl 3 58379 NULL
159147 +enable_so_window_vardecl_tcp_cdg_c_58396 window vardecl_tcp_cdg.c 0 58396 NULL
159148 +enable_so_lbs_wrrf_write_fndecl_58409 lbs_wrrf_write fndecl 3 58409 NULL
159149 +enable_so_remove_raw_fndecl_58413 remove_raw fndecl 4 58413 NULL
159150 +enable_so_vzalloc_fndecl_58414 vzalloc fndecl 1 58414 NULL nohasharray
159151 +enable_so_offset_snd_util_memblk_58414 offset snd_util_memblk 0 58414 &enable_so_vzalloc_fndecl_58414 nohasharray
159152 +enable_so_bufsize_vardecl_tcp_probe_c_58414 bufsize vardecl_tcp_probe.c 0 58414 &enable_so_offset_snd_util_memblk_58414
159153 +enable_so_rt2x00lib_rate_fndecl_58416 rt2x00lib_rate fndecl 2 58416 NULL
159154 +enable_so_channels__isdn_driver_58419 channels _isdn_driver 0 58419 NULL
159155 +enable_so_gfn_to_pfn_prot_fndecl_58421 gfn_to_pfn_prot fndecl 2 58421 NULL
159156 +enable_so_lbs_wrmac_write_fndecl_58427 lbs_wrmac_write fndecl 3 58427 NULL
159157 +enable_so_sys32_ftruncate64_fndecl_58429 sys32_ftruncate64 fndecl 2-3 58429 NULL
159158 +enable_so_SiS_GetReg_fndecl_58436 SiS_GetReg fndecl 0 58436 NULL
159159 +enable_so_deflate_compress_fndecl_58438 deflate_compress fndecl 3 58438 NULL nohasharray
159160 +enable_so_rd_in_oz_serial_ctx_58438 rd_in oz_serial_ctx 0 58438 &enable_so_deflate_compress_fndecl_58438
159161 +enable_so_environ_read_fndecl_58440 environ_read fndecl 3 58440 NULL
159162 +enable_so_read32_b43_bus_dev_58444 read32 b43_bus_dev 0 58444 NULL
159163 +enable_so_len_ethtool_test_58446 len ethtool_test 0 58446 NULL nohasharray
159164 +enable_so_num_vhost_virtqueue_58446 num vhost_virtqueue 0 58446 &enable_so_len_ethtool_test_58446
159165 +enable_so_set_cpu_key_k_offset_fndecl_58447 set_cpu_key_k_offset fndecl 2 58447 NULL
159166 +enable_so_fwlen_mpt_fw_xfer32_58453 fwlen mpt_fw_xfer32 0 58453 NULL
159167 +enable_so_di_anextents_xfs_icdinode_58455 di_anextents xfs_icdinode 0 58455 NULL
159168 +enable_so_caif_seqpkt_sendmsg_fndecl_58458 caif_seqpkt_sendmsg fndecl 3 58458 NULL
159169 +enable_so_epp_read_addr_parport_operations_58468 epp_read_addr parport_operations 0 58468 NULL
159170 +enable_so_ebcnt_vardecl_torturetest_c_58475 ebcnt vardecl_torturetest.c 0 58475 NULL
159171 +enable_so_newpart_fndecl_58478 newpart fndecl 6-4 58478 NULL
159172 +enable_so_nbchan_capidrv_contr_58481 nbchan capidrv_contr 0 58481 NULL
159173 +enable_so_highest_ino_jffs2_sb_info_58485 highest_ino jffs2_sb_info 0 58485 NULL
159174 +enable_so_C_SYSC_set_mempolicy_fndecl_58489 C_SYSC_set_mempolicy fndecl 3 58489 NULL
159175 +enable_so_try_lock_extent_fndecl_58490 try_lock_extent fndecl 3-2 58490 NULL nohasharray
159176 +enable_so_r2tq_size_cnic_local_58490 r2tq_size cnic_local 0 58490 &enable_so_try_lock_extent_fndecl_58490
159177 +enable_so_lprocfs_fid_write_common_fndecl_58492 lprocfs_fid_write_common fndecl 2 58492 NULL
159178 +enable_so_set_console_size_fndecl_58495 set_console_size fndecl 2-3 58495 NULL
159179 +enable_so_unlink_simple_fndecl_58497 unlink_simple fndecl 3-2 58497 NULL
159180 +enable_so_alloc_arraycache_fndecl_58498 alloc_arraycache fndecl 2 58498 NULL
159181 +enable_so_pstore_decompress_fndecl_58501 pstore_decompress fndecl 3-4 58501 NULL
159182 +enable_so_max_segment_size_device_dma_parameters_58507 max_segment_size device_dma_parameters 0 58507 NULL nohasharray
159183 +enable_so_ufs_inode_getblock_fndecl_58507 ufs_inode_getblock fndecl 4-3 58507 &enable_so_max_segment_size_device_dma_parameters_58507
159184 +enable_so_mcp23s17_read_regs_fndecl_58512 mcp23s17_read_regs fndecl 4 58512 NULL nohasharray
159185 +enable_so_phys_in_snd_efw_58512 phys_in snd_efw 0 58512 &enable_so_mcp23s17_read_regs_fndecl_58512
159186 +enable_so_pixel_stride_ivtv_osd_coords_58513 pixel_stride ivtv_osd_coords 0 58513 NULL
159187 +enable_so_pmsg_size_ramoops_platform_data_58514 pmsg_size ramoops_platform_data 0 58514 NULL
159188 +enable_so___frontswap_curr_pages_fndecl_58517 __frontswap_curr_pages fndecl 0 58517 NULL nohasharray
159189 +enable_so_core_sys_select_fndecl_58517 core_sys_select fndecl 1 58517 &enable_so___frontswap_curr_pages_fndecl_58517
159190 +enable_so_root_objectid_btrfs_fid_58520 root_objectid btrfs_fid 0 58520 NULL
159191 +enable_so_ieee80211_if_fmt_min_discovery_timeout_fndecl_58528 ieee80211_if_fmt_min_discovery_timeout fndecl 3 58528 NULL
159192 +enable_so_ept_invlpg_fndecl_58529 ept_invlpg fndecl 2 58529 NULL
159193 +enable_so_drbg_statelen_fndecl_58540 drbg_statelen fndecl 0 58540 NULL
159194 +enable_so_populate_vma_page_range_fndecl_58544 populate_vma_page_range fndecl 2-0 58544 NULL
159195 +enable_so_size_vram_area_58552 size vram_area 0 58552 NULL
159196 +enable_so_vscnprintf_fndecl_58558 vscnprintf fndecl 0-2 58558 NULL nohasharray
159197 +enable_so_xfs_inobt_insert_fndecl_58558 xfs_inobt_insert fndecl 4 58558 &enable_so_vscnprintf_fndecl_58558
159198 +enable_so_read_ldt_fndecl_58561 read_ldt fndecl 2 58561 NULL
159199 +enable_so___inode_sub_bytes_fndecl_58562 __inode_sub_bytes fndecl 2 58562 NULL
159200 +enable_so___napi_alloc_frag_fndecl_58577 __napi_alloc_frag fndecl 1 58577 NULL
159201 +enable_so_cur_ino_send_ctx_58589 cur_ino send_ctx 0 58589 NULL
159202 +enable_so_sysctl_tcp_reordering_vardecl_58592 sysctl_tcp_reordering vardecl 0 58592 NULL
159203 +enable_so_ext4_kvzalloc_fndecl_58598 ext4_kvzalloc fndecl 1 58598 NULL
159204 +enable_so_aoe_maxsectors_vardecl_aoeblk_c_58600 aoe_maxsectors vardecl_aoeblk.c 0 58600 NULL
159205 +enable_so_parent_root_btrfs_ioctl_send_args_58602 parent_root btrfs_ioctl_send_args 0 58602 NULL
159206 +enable_so_sctp_ssnmap_new_fndecl_58603 sctp_ssnmap_new fndecl 2-1 58603 NULL
159207 +enable_so_cache_read_pipefs_fndecl_58604 cache_read_pipefs fndecl 3 58604 NULL
159208 +enable_so_rd_count_ring_descr_hw_58616 rd_count ring_descr_hw 0 58616 NULL
159209 +enable_so_mousedev_read_fndecl_58624 mousedev_read fndecl 3 58624 NULL
159210 +enable_so_ablkcipher_done_slow_fndecl_58626 ablkcipher_done_slow fndecl 2-0 58626 NULL
159211 +enable_so___erst_write_to_storage_fndecl_58627 __erst_write_to_storage fndecl 1 58627 NULL
159212 +enable_so_epp_pages_short_ptlrpc_enc_page_pool_58628 epp_pages_short ptlrpc_enc_page_pool 0 58628 NULL
159213 +enable_so_dccps_gss_dccp_sock_58634 dccps_gss dccp_sock 0 58634 NULL
159214 +enable_so_ext4_ext_handle_unwritten_extents_fndecl_58636 ext4_ext_handle_unwritten_extents fndecl 7-6 58636 NULL nohasharray
159215 +enable_so_layout_mdu_array_info_s_58636 layout mdu_array_info_s 0 58636 &enable_so_ext4_ext_handle_unwritten_extents_fndecl_58636
159216 +enable_so_dma_rx_buf_bus_lpuart_port_58644 dma_rx_buf_bus lpuart_port 0 58644 NULL
159217 +enable_so_report_id_hid_global_58647 report_id hid_global 0 58647 NULL
159218 +enable_so_page10_len_ses_device_58648 page10_len ses_device 0 58648 NULL
159219 +enable_so_hactive_lo_lvds_dvo_timing_58654 hactive_lo lvds_dvo_timing 0 58654 NULL
159220 +enable_so_ap_update_sta_tx_rate_fndecl_58655 ap_update_sta_tx_rate fndecl 0 58655 NULL
159221 +enable_so_mwifiex_alloc_dma_align_buf_fndecl_58656 mwifiex_alloc_dma_align_buf fndecl 1 58656 NULL
159222 +enable_so_assert_exp_addr_sdpcm_shared_58658 assert_exp_addr sdpcm_shared 0 58658 NULL
159223 +enable_so_mxms_headerlen_fndecl_58666 mxms_headerlen fndecl 0 58666 NULL
159224 +enable_so_max_key_len_hfs_btree_58671 max_key_len hfs_btree 0 58671 NULL
159225 +enable_so_sb_inopblog_xfs_sb_58672 sb_inopblog xfs_sb 0 58672 NULL
159226 +enable_so_ses_recv_diag_fndecl_58676 ses_recv_diag fndecl 4 58676 NULL nohasharray
159227 +enable_so_acpi_ut_initialize_buffer_fndecl_58676 acpi_ut_initialize_buffer fndecl 2 58676 &enable_so_ses_recv_diag_fndecl_58676
159228 +enable_so_s_partition_size_affs_sb_info_58677 s_partition_size affs_sb_info 0 58677 NULL
159229 +enable_so_pixclock_fb_videomode_58678 pixclock fb_videomode 0 58678 NULL
159230 +enable_so_ramoops_ftrace_size_vardecl_ram_c_58686 ramoops_ftrace_size vardecl_ram.c 0 58686 NULL
159231 +enable_so_max_response_len_sg_io_v4_58687 max_response_len sg_io_v4 0 58687 NULL
159232 +enable_so_root_ino_f2fs_super_block_58700 root_ino f2fs_super_block 0 58700 NULL
159233 +enable_so_bus_address_drm_buf_58716 bus_address drm_buf 0 58716 NULL
159234 +enable_so_fw_emem_len_rt_firmware_58718 fw_emem_len rt_firmware 0 58718 NULL nohasharray
159235 +enable_so_btrfs_del_inode_ref_fndecl_58718 btrfs_del_inode_ref fndecl 4-6-5 58718 &enable_so_fw_emem_len_rt_firmware_58718 nohasharray
159236 +enable_so_svc_pool_map_alloc_arrays_fndecl_58718 svc_pool_map_alloc_arrays fndecl 2 58718 &enable_so_btrfs_del_inode_ref_fndecl_58718
159237 +enable_so_btrfs_free_dev_extent_fndecl_58722 btrfs_free_dev_extent fndecl 3 58722 NULL
159238 +enable_so_radio_freq_bttv_58729 radio_freq bttv 0 58729 NULL
159239 +enable_so_status_dm_dirty_log_type_58731 status dm_dirty_log_type 0 58731 NULL
159240 +enable_so_valid_chaoskey_58736 valid chaoskey 0 58736 NULL
159241 +enable_so_Residue_bulk_cs_wrap_58746 Residue bulk_cs_wrap 0 58746 NULL
159242 +enable_so_skb_copy_datagram_from_iter_fndecl_58758 skb_copy_datagram_from_iter fndecl 4-2 58758 NULL
159243 +enable_so_ocfs2_xattr_free_block_fndecl_58767 ocfs2_xattr_free_block fndecl 2 58767 NULL
159244 +enable_so_snd_ctl_enum_info_fndecl_58778 snd_ctl_enum_info fndecl 2 58778 NULL
159245 +enable_so_bi_bvec_done_bvec_iter_58781 bi_bvec_done bvec_iter 0 58781 NULL nohasharray
159246 +enable_so_ucNumEntries__ATOM_PPLIB_PhaseSheddingLimits_Table_58781 ucNumEntries _ATOM_PPLIB_PhaseSheddingLimits_Table 0 58781 &enable_so_bi_bvec_done_bvec_iter_58781
159247 +enable_so_meta_ino_f2fs_super_block_58785 meta_ino f2fs_super_block 0 58785 NULL nohasharray
159248 +enable_so_off1_xad_58785 off1 xad 0 58785 &enable_so_meta_ino_f2fs_super_block_58785
159249 +enable_so_gfs2_readpages_fndecl_58790 gfs2_readpages fndecl 4 58790 NULL
159250 +enable_so_at24_macc_read_fndecl_58791 at24_macc_read fndecl 4 58791 NULL
159251 +enable_so_vsnprintf_fndecl_58792 vsnprintf fndecl 0 58792 NULL
159252 +enable_so_blkbits_dio_submit_58797 blkbits dio_submit 0 58797 NULL
159253 +enable_so_SYSC_semop_fndecl_58799 SYSC_semop fndecl 3 58799 NULL
159254 +enable_so_wNumRPipes_usb_wa_descriptor_58804 wNumRPipes usb_wa_descriptor 0 58804 NULL
159255 +enable_so_ablkcipher_next_slow_fndecl_58809 ablkcipher_next_slow fndecl 3-4 58809 NULL
159256 +enable_so_snd_pcm_hw_constraint_minmax_fndecl_58816 snd_pcm_hw_constraint_minmax fndecl 4-3 58816 NULL
159257 +enable_so_data_size_iser_page_vec_58817 data_size iser_page_vec 0 58817 NULL
159258 +enable_so_num_counters_op_x86_model_spec_58827 num_counters op_x86_model_spec 0 58827 NULL
159259 +enable_so_set_db_page_mthca_create_cq_58830 set_db_page mthca_create_cq 0 58830 NULL
159260 +enable_so_virtqueue_add_fndecl_58841 virtqueue_add fndecl 3 58841 NULL
159261 +enable_so_nr_scratch_dwc3_58852 nr_scratch dwc3 0 58852 NULL
159262 +enable_so_ms_lib_read_extrablock_fndecl_58857 ms_lib_read_extrablock fndecl 4 58857 NULL
159263 +enable_so_exofs_iget_fndecl_58862 exofs_iget fndecl 2 58862 NULL
159264 +enable_so_uvc_ctrl_add_info_fndecl_58870 uvc_ctrl_add_info fndecl 0 58870 NULL
159265 +enable_so_hfp_ast_vbios_enhtable_58872 hfp ast_vbios_enhtable 0 58872 NULL
159266 +enable_so_rx_buf_sz_fe_priv_58888 rx_buf_sz fe_priv 0 58888 NULL
159267 +enable_so_max_xfer_nd_cmd_get_config_size_58894 max_xfer nd_cmd_get_config_size 0 58894 NULL
159268 +enable_so_usb_stor_bulk_transfer_sg_fndecl_58896 usb_stor_bulk_transfer_sg fndecl 4-2 58896 NULL
159269 +enable_so_get_next_nat_page_fndecl_58898 get_next_nat_page fndecl 2 58898 NULL nohasharray
159270 +enable_so_v9fs_file_fsync_fndecl_58898 v9fs_file_fsync fndecl 2 58898 &enable_so_get_next_nat_page_fndecl_58898
159271 +enable_so_vhci_read_fndecl_58901 vhci_read fndecl 3 58901 NULL
159272 +enable_so_mwifiex_write_data_sync_fndecl_58903 mwifiex_write_data_sync fndecl 3 58903 NULL nohasharray
159273 +enable_so_xfs_nfs_get_inode_fndecl_58903 xfs_nfs_get_inode fndecl 2 58903 &enable_so_mwifiex_write_data_sync_fndecl_58903
159274 +enable_so_comedi_write_fndecl_58917 comedi_write fndecl 3 58917 NULL
159275 +enable_so_befs_bread_fndecl_58922 befs_bread fndecl 2 58922 NULL
159276 +enable_so_parent_block_isofs_fid_58926 parent_block isofs_fid 0 58926 NULL
159277 +enable_so_fore200e_pca_dma_chunk_alloc_fndecl_58927 fore200e_pca_dma_chunk_alloc fndecl 4-3 58927 NULL
159278 +enable_so_osd_req_read_sg_fndecl_58930 osd_req_read_sg fndecl 5 58930 NULL
159279 +enable_so_send_reply_chunks_fndecl_58933 send_reply_chunks fndecl 0 58933 NULL
159280 +enable_so_mask_tcindex_data_58938 mask tcindex_data 0 58938 NULL
159281 +enable_so_cfs_percpt_alloc_fndecl_58941 cfs_percpt_alloc fndecl 2 58941 NULL
159282 +enable_so_size_drm_nouveau_gem_info_58954 size drm_nouveau_gem_info 0 58954 NULL
159283 +enable_so__ext4_get_block_fndecl_58959 _ext4_get_block fndecl 2 58959 NULL
159284 +enable_so_query_len_tomoyo_query_58960 query_len tomoyo_query 0 58960 NULL
159285 +enable_so_integrity_alg_len_net_conf_58973 integrity_alg_len net_conf 0 58973 NULL
159286 +enable_so_adjust_managed_page_count_fndecl_58974 adjust_managed_page_count fndecl 2 58974 NULL
159287 +enable_so_pglen_nfs4_layoutdriver_data_58977 pglen nfs4_layoutdriver_data 0 58977 NULL
159288 +enable_so_nent_mthca_eq_58979 nent mthca_eq 0 58979 NULL
159289 +enable_so_len_extent_buffer_58980 len extent_buffer 0 58980 NULL nohasharray
159290 +enable_so_ptk_icvlen_iwl_mvm_58980 ptk_icvlen iwl_mvm 0 58980 &enable_so_len_extent_buffer_58980
159291 +enable_so_dbg_port_buf_fndecl_58981 dbg_port_buf fndecl 2 58981 NULL
159292 +enable_so_len_cont_58983 len cont 0 58983 NULL
159293 +enable_so_megasas_mgmt_ioctl_fw_fndecl_58984 megasas_mgmt_ioctl_fw fndecl 0 58984 NULL
159294 +enable_so_ib_umad_write_fndecl_58986 ib_umad_write fndecl 3 58986 NULL
159295 +enable_so___tda18271_write_regs_fndecl_58989 __tda18271_write_regs fndecl 3 58989 NULL nohasharray
159296 +enable_so_index_ldtentry_58989 index ldtentry 0 58989 &enable_so___tda18271_write_regs_fndecl_58989
159297 +enable_so_nfs4_proc_get_acl_fndecl_58998 nfs4_proc_get_acl fndecl 3 58998 NULL
159298 +enable_so_wa_urb_dequeue_fndecl_59008 wa_urb_dequeue fndecl 3 59008 NULL
159299 +enable_so_numextents_efs_inode_info_59009 numextents efs_inode_info 0 59009 NULL
159300 +enable_so___kvm_read_guest_atomic_fndecl_59011 __kvm_read_guest_atomic fndecl 5 59011 NULL
159301 +enable_so_hsync_pulse_width_hi_oaktrail_timing_info_59019 hsync_pulse_width_hi oaktrail_timing_info 0 59019 NULL
159302 +enable_so_lustre_cfg_len_fndecl_59025 lustre_cfg_len fndecl 0 59025 NULL
159303 +enable_so_frags_len_lro_59030 frags_len lro 0 59030 NULL
159304 +enable_so_nclips_saa7146_overlay_59032 nclips saa7146_overlay 0 59032 NULL
159305 +enable_so_in_epnum_usb_gadget_59033 in_epnum usb_gadget 0 59033 NULL
159306 +enable_so_ref_node_alsz_ubifs_info_59046 ref_node_alsz ubifs_info 0 59046 NULL
159307 +enable_so_data0_myri10ge_cmd_59049 data0 myri10ge_cmd 0 59049 NULL
159308 +enable_so_max_block_docg3_59051 max_block docg3 0 59051 NULL
159309 +enable_so_posix_acl_alloc_fndecl_59052 posix_acl_alloc fndecl 1 59052 NULL nohasharray
159310 +enable_so_nr_strip_zones_r0conf_59052 nr_strip_zones r0conf 0 59052 &enable_so_posix_acl_alloc_fndecl_59052
159311 +enable_so_scsi_format_sense_hdr_fndecl_59056 scsi_format_sense_hdr fndecl 2 59056 NULL
159312 +enable_so_s_block_count_reiserfs_super_block_v1_59058 s_block_count reiserfs_super_block_v1 0 59058 NULL
159313 +enable_so_mpeglinesize_vardecl_cx231xx_417_c_59059 mpeglinesize vardecl_cx231xx-417.c 0 59059 NULL
159314 +enable_so_tps6507x_i2c_write_device_fndecl_59069 tps6507x_i2c_write_device fndecl 3 59069 NULL
159315 +enable_so_bmv_offset_getbmapx_59079 bmv_offset getbmapx 0 59079 NULL
159316 +enable_so_buffer_mousedev_client_59098 buffer mousedev_client 0 59098 NULL
159317 +enable_so_rcvidx_hscx_hw_59100 rcvidx hscx_hw 0 59100 NULL
159318 +enable_so_ctrl_dma_ims_pcu_59106 ctrl_dma ims_pcu 0 59106 NULL
159319 +enable_so_out_wm8994_fll_config_59112 out wm8994_fll_config 0 59112 NULL
159320 +enable_so_a8293_wr_fndecl_59113 a8293_wr fndecl 3 59113 NULL
159321 +enable_so_remap_and_issue_shared_cell_fndecl_59114 remap_and_issue_shared_cell fndecl 3 59114 NULL
159322 +enable_so_wm_latency_write_fndecl_59118 wm_latency_write fndecl 3 59118 NULL
159323 +enable_so_dm_btree_del_fndecl_59119 dm_btree_del fndecl 2 59119 NULL nohasharray
159324 +enable_so_sec_per_clus_fat_floppy_defaults_59119 sec_per_clus fat_floppy_defaults 0 59119 &enable_so_dm_btree_del_fndecl_59119
159325 +enable_so_omapdss_count_strings_fndecl_59120 omapdss_count_strings fndecl 0 59120 NULL
159326 +enable_so_mmc_alloc_host_fndecl_59122 mmc_alloc_host fndecl 1 59122 NULL
159327 +enable_so_npages_for_summary_flush_fndecl_59124 npages_for_summary_flush fndecl 0 59124 NULL
159328 +enable_so_width_em28xx_v4l2_59127 width em28xx_v4l2 0 59127 NULL nohasharray
159329 +enable_so_xfs_read_agi_fndecl_59127 xfs_read_agi fndecl 3 59127 &enable_so_width_em28xx_v4l2_59127
159330 +enable_so_bitrate_ieee80211_rate_59130 bitrate ieee80211_rate 0 59130 NULL
159331 +enable_so_do_sys_ftruncate_fndecl_59136 do_sys_ftruncate fndecl 2 59136 NULL
159332 +enable_so_tx_count__synclinkmp_info_59147 tx_count _synclinkmp_info 0 59147 NULL
159333 +enable_so_rx_data_ep_usb_card_rec_59150 rx_data_ep usb_card_rec 0 59150 NULL
159334 +enable_so_get_desc_rtl_hal_ops_59151 get_desc rtl_hal_ops 0 59151 NULL
159335 +enable_so_log_buf_len_vardecl_printk_c_59170 log_buf_len vardecl_printk.c 0 59170 NULL
159336 +enable_so_hactive_hblank_hi_detailed_pixel_timing_59172 hactive_hblank_hi detailed_pixel_timing 0 59172 NULL
159337 +enable_so_comps_used_iser_device_59187 comps_used iser_device 0 59187 NULL
159338 +enable_so_isl12022_read_regs_fndecl_59190 isl12022_read_regs fndecl 4 59190 NULL
159339 +enable_so_vtag_rx_pkt_status_59191 vtag rx_pkt_status 0 59191 NULL
159340 +enable_so_cdc_ncm_check_rx_max_fndecl_59192 cdc_ncm_check_rx_max fndecl 0-2 59192 NULL
159341 +enable_so_gr_learn_resource_fndecl_59200 gr_learn_resource fndecl 3 59200 NULL
159342 +enable_so_ms_os_descs_ext_prop_name_len_ffs_data_59205 ms_os_descs_ext_prop_name_len ffs_data 0 59205 NULL
159343 +enable_so_s_bmap_bits_affs_sb_info_59206 s_bmap_bits affs_sb_info 0 59206 NULL
159344 +enable_so_fat_sector_size_fat_bios_param_block_59207 fat_sector_size fat_bios_param_block 0 59207 NULL nohasharray
159345 +enable_so_nblocks_nilfs_segsum_info_59207 nblocks nilfs_segsum_info 0 59207 &enable_so_fat_sector_size_fat_bios_param_block_59207
159346 +enable_so_max_data_size_mpt2_ioctl_header_59209 max_data_size mpt2_ioctl_header 0 59209 NULL
159347 +enable_so_jade_empty_fifo_fndecl_59210 jade_empty_fifo fndecl 2 59210 NULL
159348 +enable_so_usCRTC_H_SyncWidth__ATOM_MODE_TIMING_59211 usCRTC_H_SyncWidth _ATOM_MODE_TIMING 0 59211 NULL nohasharray
159349 +enable_so_wbits_inflate_state_59211 wbits inflate_state 0 59211 &enable_so_usCRTC_H_SyncWidth__ATOM_MODE_TIMING_59211
159350 +enable_so_xfs_bmapi_trim_map_fndecl_59212 xfs_bmapi_trim_map fndecl 6 59212 NULL
159351 +enable_so_lock_extent_direct_fndecl_59219 lock_extent_direct fndecl 3-2 59219 NULL
159352 +enable_so_fbmem_used_viafb_par_59221 fbmem_used viafb_par 0 59221 NULL
159353 +enable_so_gprs_set_mtu_fndecl_59222 gprs_set_mtu fndecl 2 59222 NULL
159354 +enable_so_up_anode_59225 up anode 0 59225 NULL
159355 +enable_so_sierra_net_skb_clone_fndecl_59236 sierra_net_skb_clone fndecl 3 59236 NULL
159356 +enable_so_nfs_direct_IO_fndecl_59238 nfs_direct_IO fndecl 3 59238 NULL nohasharray
159357 +enable_so_bits_to_user_fndecl_59238 bits_to_user fndecl 3-2 59238 &enable_so_nfs_direct_IO_fndecl_59238
159358 +enable_so_nr_segs_iov_iter_59239 nr_segs iov_iter 0 59239 NULL
159359 +enable_so_num_mbc_cfgs_wm8994_pdata_59240 num_mbc_cfgs wm8994_pdata 0 59240 NULL
159360 +enable_so_nlp_maxframe_lpfc_nodelist_59242 nlp_maxframe lpfc_nodelist 0 59242 NULL
159361 +enable_so_save_microcode_fndecl_59254 save_microcode fndecl 3 59254 NULL
159362 +enable_so_rcvidx_hdlc_hw_59264 rcvidx hdlc_hw 0 59264 NULL nohasharray
159363 +enable_so_nilfs_sufile_get_offset_fndecl_59264 nilfs_sufile_get_offset fndecl 2 59264 &enable_so_rcvidx_hdlc_hw_59264
159364 +enable_so_indir_size_ethtool_rxfh_59267 indir_size ethtool_rxfh 0 59267 NULL
159365 +enable_so_uwb_ie_dump_hex_fndecl_59277 uwb_ie_dump_hex fndecl 4 59277 NULL
159366 +enable_so_ir_prepare_write_buffer_fndecl_59280 ir_prepare_write_buffer fndecl 3 59280 NULL
159367 +enable_so_nentries_afs_dir_pagehdr_59283 nentries afs_dir_pagehdr 0 59283 NULL
159368 +enable_so_mvumi_alloc_mem_resource_fndecl_59285 mvumi_alloc_mem_resource fndecl 3 59285 NULL
159369 +enable_so_nr_regs_omap_prcm_irq_setup_59292 nr_regs omap_prcm_irq_setup 0 59292 NULL
159370 +enable_so_alloc_sched_domains_fndecl_59295 alloc_sched_domains fndecl 1 59295 NULL
159371 +enable_so_posix_acl_fix_xattr_from_user_fndecl_59298 posix_acl_fix_xattr_from_user fndecl 2 59298 NULL
159372 +enable_so_sb_rootino_xfs_sb_59299 sb_rootino xfs_sb 0 59299 NULL nohasharray
159373 +enable_so_dm_array_del_fndecl_59299 dm_array_del fndecl 2 59299 &enable_so_sb_rootino_xfs_sb_59299 nohasharray
159374 +enable_so_range_oid_t_59299 range oid_t 0 59299 &enable_so_dm_array_del_fndecl_59299
159375 +enable_so_stretch_width_usb_usbvision_59304 stretch_width usb_usbvision 0 59304 NULL
159376 +enable_so_W6692_empty_Bfifo_fndecl_59311 W6692_empty_Bfifo fndecl 2 59311 NULL
159377 +enable_so_frame_bytes_ua101_stream_59312 frame_bytes ua101_stream 0 59312 NULL
159378 +enable_so_befs_fblock2brun_fndecl_59313 befs_fblock2brun fndecl 3 59313 NULL
159379 +enable_so_pcpu_nr_units_vardecl_percpu_c_59323 pcpu_nr_units vardecl_percpu.c 0 59323 NULL
159380 +enable_so_nv_getlen_fndecl_59327 nv_getlen fndecl 0 59327 NULL
159381 +enable_so_pinconf_dbg_config_write_fndecl_59336 pinconf_dbg_config_write fndecl 3 59336 NULL
159382 +enable_so_stmmac_set_bfsize_fndecl_59337 stmmac_set_bfsize fndecl 0 59337 NULL
159383 +enable_so_raw_sendmsg_fndecl_59341 raw_sendmsg fndecl 3 59341 NULL
159384 +enable_so_affs_iget_fndecl_59342 affs_iget fndecl 2 59342 NULL
159385 +enable_so_lov_packmd_fndecl_59345 lov_packmd fndecl 0 59345 NULL
159386 +enable_so_size_s5p_jpeg_q_data_59350 size s5p_jpeg_q_data 0 59350 NULL
159387 +enable_so_vc_cols_vc_data_59351 vc_cols vc_data 0 59351 NULL
159388 +enable_so_vsync_end_drm_display_mode_59355 vsync_end drm_display_mode 0 59355 NULL
159389 +enable_so_hpfs_alloc_fnode_fndecl_59356 hpfs_alloc_fnode fndecl 2 59356 NULL nohasharray
159390 +enable_so_tree_mod_log_insert_move_fndecl_59356 tree_mod_log_insert_move fndecl 5 59356 &enable_so_hpfs_alloc_fnode_fndecl_59356
159391 +enable_so_base_tsn_sctp_tsnmap_59358 base_tsn sctp_tsnmap 0 59358 NULL
159392 +enable_so_ixgbe_change_mtu_fndecl_59370 ixgbe_change_mtu fndecl 2 59370 NULL nohasharray
159393 +enable_so_buf_len_i40e_arq_event_info_59370 buf_len i40e_arq_event_info 0 59370 &enable_so_ixgbe_change_mtu_fndecl_59370
159394 +enable_so_default_drvbuffer_scsi_tape_59374 default_drvbuffer scsi_tape 0 59374 NULL
159395 +enable_so_max_size_drm_vmw_get_3d_cap_arg_59378 max_size drm_vmw_get_3d_cap_arg 0 59378 NULL
159396 +enable_so_frag_point_sctp_association_59379 frag_point sctp_association 0 59379 NULL
159397 +enable_so_free_list_size_eni_dev_59386 free_list_size eni_dev 0 59386 NULL
159398 +enable_so_line_outs_auto_pin_cfg_59389 line_outs auto_pin_cfg 0 59389 NULL
159399 +enable_so_batadv_iv_ogm_queue_add_fndecl_59398 batadv_iv_ogm_queue_add fndecl 3 59398 NULL nohasharray
159400 +enable_so_size_freelQ_59398 size freelQ 0 59398 &enable_so_batadv_iv_ogm_queue_add_fndecl_59398
159401 +enable_so_vb2_dc_get_user_pages_fndecl_59399 vb2_dc_get_user_pages fndecl 1 59399 NULL
159402 +enable_so_smk_write_direct_fndecl_59400 smk_write_direct fndecl 3 59400 NULL
159403 +enable_so_drm_legacy_addmap_fndecl_59402 drm_legacy_addmap fndecl 2-3 59402 NULL
159404 +enable_so___iommu_calculate_agaw_fndecl_59405 __iommu_calculate_agaw fndecl 2 59405 NULL
159405 +enable_so_alloc_mad_private_fndecl_59408 alloc_mad_private fndecl 1 59408 NULL
159406 +enable_so_optlen_xfrm_mode_skb_cb_59411 optlen xfrm_mode_skb_cb 0 59411 NULL
159407 +enable_so_fotg210_urb_dequeue_fndecl_59414 fotg210_urb_dequeue fndecl 3 59414 NULL nohasharray
159408 +enable_so_num_vfs_ixgbe_adapter_59414 num_vfs ixgbe_adapter 0 59414 &enable_so_fotg210_urb_dequeue_fndecl_59414
159409 +enable_so_desc_elems_timb_dma_chan_59416 desc_elems timb_dma_chan 0 59416 NULL
159410 +enable_so_vma_adjust_fndecl_59429 vma_adjust fndecl 3-4 59429 NULL nohasharray
159411 +enable_so_ext2_xattr_user_set_fndecl_59429 ext2_xattr_user_set fndecl 4 59429 &enable_so_vma_adjust_fndecl_59429
159412 +enable_so_mmap_ureg_fndecl_59431 mmap_ureg fndecl 3 59431 NULL
159413 +enable_so_s_checkpoint_size_nilfs_super_block_59433 s_checkpoint_size nilfs_super_block 0 59433 NULL
159414 +enable_so_nilfs_cpfile_block_get_checkpoint_fndecl_59441 nilfs_cpfile_block_get_checkpoint fndecl 2 59441 NULL
159415 +enable_so_blocks_count_ext3_new_group_data_59443 blocks_count ext3_new_group_data 0 59443 NULL
159416 +enable_so_max_sectors_vardecl_megaraid_sas_base_c_59444 max_sectors vardecl_megaraid_sas_base.c 0 59444 NULL
159417 +enable_so_z2_zt_59452 z2 zt 0 59452 NULL
159418 +enable_so_rng_get_data_fndecl_59453 rng_get_data fndecl 0 59453 NULL
159419 +enable_so_fat_free_fndecl_59463 fat_free fndecl 2 59463 NULL
159420 +enable_so_ttm_page_pool_get_pages_fndecl_59468 ttm_page_pool_get_pages fndecl 5-0 59468 NULL
159421 +enable_so__pmcraid_io_done_fndecl_59469 _pmcraid_io_done fndecl 2 59469 NULL
159422 +enable_so_common_ie_len_ieee80211_scan_ies_59478 common_ie_len ieee80211_scan_ies 0 59478 NULL
159423 +enable_so_i2c_hid_output_raw_report_fndecl_59486 i2c_hid_output_raw_report fndecl 3 59486 NULL
159424 +enable_so_length_acpi_pnp_device_id_59493 length acpi_pnp_device_id 0 59493 NULL
159425 +enable_so_btrfs_find_item_fndecl_59494 btrfs_find_item fndecl 3-4 59494 NULL
159426 +enable_so_rx_ringsz_alx_priv_59496 rx_ringsz alx_priv 0 59496 NULL
159427 +enable_so_il_dbgfs_clear_traffic_stats_write_fndecl_59497 il_dbgfs_clear_traffic_stats_write fndecl 3 59497 NULL nohasharray
159428 +enable_so_src_addr_width_dma_slave_config_59497 src_addr_width dma_slave_config 0 59497 &enable_so_il_dbgfs_clear_traffic_stats_write_fndecl_59497
159429 +enable_so_cfs_power2_roundup_fndecl_59506 cfs_power2_roundup fndecl 0-1 59506 NULL
159430 +enable_so_lastbuf_for_pio_qib_chip_specific_59509 lastbuf_for_pio qib_chip_specific 0 59509 NULL
159431 +enable_so_rmtblkno2_xfs_da_args_59516 rmtblkno2 xfs_da_args 0 59516 NULL nohasharray
159432 +enable_so_cp210x_set_config_fndecl_59516 cp210x_set_config fndecl 4 59516 &enable_so_rmtblkno2_xfs_da_args_59516
159433 +enable_so_qlcnic_get_vnic_func_count_fndecl_59521 qlcnic_get_vnic_func_count fndecl 0 59521 NULL
159434 +enable_so_limit_data_queue_59525 limit data_queue 0 59525 NULL
159435 +enable_so_extLength_short_ad_59527 extLength short_ad 0 59527 NULL
159436 +enable_so_ocfs2_adjust_xattr_cross_cluster_fndecl_59528 ocfs2_adjust_xattr_cross_cluster fndecl 5-6 59528 NULL
159437 +enable_so_dquot_claim_space_nodirty_fndecl_59536 dquot_claim_space_nodirty fndecl 2 59536 NULL
159438 +enable_so_snd_pcm_oss_format_from_fndecl_59553 snd_pcm_oss_format_from fndecl 0 59553 NULL
159439 +enable_so_num_stripes_btrfs_chunk_59557 num_stripes btrfs_chunk 0 59557 NULL
159440 +enable_so_chunk_size_disk_header_59563 chunk_size disk_header 0 59563 NULL
159441 +enable_so_vringh_complete_multi_user_fndecl_59569 vringh_complete_multi_user fndecl 3 59569 NULL
159442 +enable_so_unmap_mapping_range_fndecl_59573 unmap_mapping_range fndecl 2-3 59573 NULL
159443 +enable_so_data_mapping_root_thin_disk_superblock_59582 data_mapping_root thin_disk_superblock 0 59582 NULL
159444 +enable_so_key_count_applesmc_registers_59587 key_count applesmc_registers 0 59587 NULL
159445 +enable_so_length_sctp_paramhdr_59588 length sctp_paramhdr 0 59588 NULL
159446 +enable_so_bMaxPacketSize0_usb_device_descriptor_59595 bMaxPacketSize0 usb_device_descriptor 0 59595 NULL
159447 +enable_so_last_sgs_total_ore_per_dev_state_59596 last_sgs_total ore_per_dev_state 0 59596 NULL
159448 +enable_so_serverworks_create_gatt_pages_fndecl_59621 serverworks_create_gatt_pages fndecl 1 59621 NULL
159449 +enable_so_hash_sendpage_fndecl_59633 hash_sendpage fndecl 3-4 59633 NULL
159450 +enable_so_unmap_single_vma_fndecl_59634 unmap_single_vma fndecl 4-3 59634 NULL
159451 +enable_so_gpio_count_tle62x0_pdata_59637 gpio_count tle62x0_pdata 0 59637 NULL
159452 +enable_so_q_fileoffset_xfs_dquot_59638 q_fileoffset xfs_dquot 0 59638 NULL
159453 +enable_so___btrfs_free_extent_fndecl_59646 __btrfs_free_extent fndecl 3-4-7-5-6 59646 NULL
159454 +enable_so_trf7970a_transmit_fndecl_59648 trf7970a_transmit fndecl 5-3 59648 NULL
159455 +enable_so_SSID_len_brcmf_pno_net_info_le_59653 SSID_len brcmf_pno_net_info_le 0 59653 NULL
159456 +enable_so_xfs_trim_extents_fndecl_59654 xfs_trim_extents fndecl 2 59654 NULL
159457 +enable_so_fat_free_clusters_fndecl_59665 fat_free_clusters fndecl 2 59665 NULL
159458 +enable_so_logicalBlocksRecorded_fileEntry_59669 logicalBlocksRecorded fileEntry 0 59669 NULL
159459 +enable_so_ms_read_bytes_fndecl_59672 ms_read_bytes fndecl 4 59672 NULL
159460 +enable_so_old_block_size_swap_info_struct_59674 old_block_size swap_info_struct 0 59674 NULL
159461 +enable_so_rtw_buf_update_fndecl_59689 rtw_buf_update fndecl 4 59689 NULL
159462 +enable_so_replay_dir_deletes_fndecl_59691 replay_dir_deletes fndecl 5 59691 NULL
159463 +enable_so_nilfs_btree_assign_p_fndecl_59693 nilfs_btree_assign_p fndecl 5 59693 NULL
159464 +enable_so_capacity_sddr55_card_info_59695 capacity sddr55_card_info 0 59695 NULL
159465 +enable_so_mlx4_ib_alloc_fast_reg_page_list_fndecl_59700 mlx4_ib_alloc_fast_reg_page_list fndecl 2 59700 NULL
159466 +enable_so_paging32_walk_addr_nested_fndecl_59706 paging32_walk_addr_nested fndecl 3-4 59706 NULL
159467 +enable_so_alloc_iova_fndecl_59715 alloc_iova fndecl 3 59715 NULL
159468 +enable_so_atalk_sendmsg_fndecl_59718 atalk_sendmsg fndecl 3 59718 NULL
159469 +enable_so_provision_block_fndecl_59732 provision_block fndecl 3 59732 NULL
159470 +enable_so_nilfs_btnode_create_block_fndecl_59734 nilfs_btnode_create_block fndecl 2 59734 NULL
159471 +enable_so_val_i2400m_pld_59735 val i2400m_pld 0 59735 NULL
159472 +enable_so_ddp_clear_map_fndecl_59739 ddp_clear_map fndecl 4 59739 NULL
159473 +enable_so_l_iclog_hsize_xlog_59743 l_iclog_hsize xlog 0 59743 NULL nohasharray
159474 +enable_so___netlink_change_ngroups_fndecl_59743 __netlink_change_ngroups fndecl 2 59743 &enable_so_l_iclog_hsize_xlog_59743
159475 +enable_so_ocfs2_read_dx_leaves_fndecl_59744 ocfs2_read_dx_leaves fndecl 2 59744 NULL nohasharray
159476 +enable_so_fq_resize_fndecl_59744 fq_resize fndecl 2 59744 &enable_so_ocfs2_read_dx_leaves_fndecl_59744
159477 +enable_so_nx_fw_cmd_set_phy_fndecl_59745 nx_fw_cmd_set_phy fndecl 3 59745 NULL
159478 +enable_so_mt_count_mtop_59746 mt_count mtop 0 59746 NULL
159479 +enable_so_seedsize_rng_alg_59748 seedsize rng_alg 0 59748 NULL
159480 +enable_so_xlog_write_calc_vec_length_fndecl_59749 xlog_write_calc_vec_length fndecl 0 59749 NULL
159481 +enable_so_add_conn_list_fndecl_59750 add_conn_list fndecl 3 59750 NULL
159482 +enable_so_dmfs_high_rate_qpn_base_mlx4_caps_59756 dmfs_high_rate_qpn_base mlx4_caps 0 59756 NULL
159483 +enable_so_mtu_dst_ops_59765 mtu dst_ops 0 59765 NULL
159484 +enable_so_au_cslack_rpc_auth_59766 au_cslack rpc_auth 0 59766 NULL
159485 +enable_so_vxge_os_dma_malloc_fndecl_59771 vxge_os_dma_malloc fndecl 2 59771 NULL
159486 +enable_so_hash_netiface4_expire_fndecl_59777 hash_netiface4_expire fndecl 4 59777 NULL
159487 +enable_so_osd_full_w_yuv_playback_info_59778 osd_full_w yuv_playback_info 0 59778 NULL
159488 +enable_so_reiserfs_new_symlink_fndecl_59783 reiserfs_new_symlink fndecl 6 59783 NULL nohasharray
159489 +enable_so_max_segments_queue_limits_59783 max_segments queue_limits 0 59783 &enable_so_reiserfs_new_symlink_fndecl_59783
159490 +enable_so_vsync_pulse_width_hi_oaktrail_timing_info_59785 vsync_pulse_width_hi oaktrail_timing_info 0 59785 NULL
159491 +enable_so_mlx4_buf_alloc_fndecl_59788 mlx4_buf_alloc fndecl 2 59788 NULL
159492 +enable_so_sdio_set_block_size_fndecl_59792 sdio_set_block_size fndecl 2 59792 NULL nohasharray
159493 +enable_so_dma_npages_rds_iw_scatterlist_59792 dma_npages rds_iw_scatterlist 0 59792 &enable_so_sdio_set_block_size_fndecl_59792
159494 +enable_so_bandlength_Timon_table_entry_59793 bandlength Timon_table_entry 0 59793 NULL
159495 +enable_so_i2400m_op_msg_from_user_fndecl_59798 i2400m_op_msg_from_user fndecl 4 59798 NULL
159496 +enable_so_NumPhys__CONFIG_PAGE_SAS_IO_UNIT_0_59799 NumPhys _CONFIG_PAGE_SAS_IO_UNIT_0 0 59799 NULL
159497 +enable_so_rcount_sixpack_59806 rcount sixpack 0 59806 NULL
159498 +enable_so_vcan_change_mtu_fndecl_59807 vcan_change_mtu fndecl 2 59807 NULL
159499 +enable_so_drbd_setup_queue_param_fndecl_59813 drbd_setup_queue_param fndecl 3 59813 NULL
159500 +enable_so_numpstates_pst_s_59820 numpstates pst_s 0 59820 NULL
159501 +enable_so_xen_setup_msi_irqs_fndecl_59830 xen_setup_msi_irqs fndecl 2 59830 NULL
159502 +enable_so_length_inflate_state_59831 length inflate_state 0 59831 NULL
159503 +enable_so_mpi_read_raw_data_fndecl_59835 mpi_read_raw_data fndecl 2 59835 NULL
159504 +enable_so_max_len_xc2028_ctrl_59842 max_len xc2028_ctrl 0 59842 NULL
159505 +enable_so_tcp_sendmsg_fastopen_fndecl_59843 tcp_sendmsg_fastopen fndecl 4 59843 NULL
159506 +enable_so_tea5764_get_freq_fndecl_59848 tea5764_get_freq fndecl 0 59848 NULL
159507 +enable_so_count_audit_chunk_59856 count audit_chunk 0 59856 NULL
159508 +enable_so_nilfs_segctor_notify_fndecl_59857 nilfs_segctor_notify fndecl 3 59857 NULL
159509 +enable_so_length_pm8001_ioctl_payload_59866 length pm8001_ioctl_payload 0 59866 NULL
159510 +enable_so_max_loop_vardecl_lloop_c_59872 max_loop vardecl_lloop.c 0 59872 NULL
159511 +enable_so_qlcnic_83xx_sysfs_flash_bulk_write_fndecl_59875 qlcnic_83xx_sysfs_flash_bulk_write fndecl 4 59875 NULL
159512 +enable_so_src_offset_btrfs_ioctl_clone_range_args_59876 src_offset btrfs_ioctl_clone_range_args 0 59876 NULL
159513 +enable_so_default_length_acpi_fadt_info_59879 default_length acpi_fadt_info 0 59879 NULL nohasharray
159514 +enable_so___dquot_alloc_space_fndecl_59879 __dquot_alloc_space fndecl 2 59879 &enable_so_default_length_acpi_fadt_info_59879
159515 +enable_so___hwahc_dev_set_key_fndecl_59883 __hwahc_dev_set_key fndecl 5 59883 NULL
159516 +enable_so_vfs_allocated_count_igb_adapter_59900 vfs_allocated_count igb_adapter 0 59900 NULL
159517 +enable_so_mos7720_write_fndecl_59901 mos7720_write fndecl 4 59901 NULL nohasharray
159518 +enable_so_rxbuffersize_rtl_pci_59901 rxbuffersize rtl_pci 0 59901 &enable_so_mos7720_write_fndecl_59901
159519 +enable_so_num_gpio_wm831x_59907 num_gpio wm831x 0 59907 NULL
159520 +enable_so_wheel_num_ad714x_platform_data_59912 wheel_num ad714x_platform_data 0 59912 NULL
159521 +enable_so_qp_memcpy_from_queue_iov_fndecl_59913 qp_memcpy_from_queue_iov fndecl 5-4 59913 NULL
159522 +enable_so_video_endp_usb_usbvision_59918 video_endp usb_usbvision 0 59918 NULL
159523 +enable_so_nr_virtfn_bnx2x_sriov_59919 nr_virtfn bnx2x_sriov 0 59919 NULL nohasharray
159524 +enable_so_lov_iocontrol_fndecl_59919 lov_iocontrol fndecl 3 59919 &enable_so_nr_virtfn_bnx2x_sriov_59919
159525 +enable_so_wOverTheAirPacketSize_usb_wireless_ep_comp_descriptor_59926 wOverTheAirPacketSize usb_wireless_ep_comp_descriptor 0 59926 NULL
159526 +enable_so_vsnprintf_fndecl_59932 vsnprintf fndecl 0 59932 NULL
159527 +enable_so_n_user_regset_59935 n user_regset 0 59935 NULL
159528 +enable_so_ieee80211_if_fmt_power_mode_fndecl_59945 ieee80211_if_fmt_power_mode fndecl 3 59945 NULL
159529 +enable_so_blk_queue_max_write_same_sectors_fndecl_59954 blk_queue_max_write_same_sectors fndecl 2 59954 NULL
159530 +enable_so_bpl_cx25821_buffer_59964 bpl cx25821_buffer 0 59964 NULL
159531 +enable_so_pull_to_netfront_cb_59965 pull_to netfront_cb 0 59965 NULL
159532 +enable_so_acpi_os_create_cache_fndecl_59968 acpi_os_create_cache fndecl 2 59968 NULL
159533 +enable_so_mwifiex_set_wapi_ie_fndecl_59972 mwifiex_set_wapi_ie fndecl 3 59972 NULL
159534 +enable_so_calc_line_length_fndecl_59973 calc_line_length fndecl 3-2 59973 NULL
159535 +enable_so_fuse_file_fallocate_fndecl_59983 fuse_file_fallocate fndecl 3-4 59983 NULL nohasharray
159536 +enable_so_scrub_pages_fndecl_59983 scrub_pages fndecl 3-2-11-4 59983 &enable_so_fuse_file_fallocate_fndecl_59983
159537 +enable_so_addr_nvme_passthru_cmd_59990 addr nvme_passthru_cmd 0 59990 NULL nohasharray
159538 +enable_so_wlcore_alloc_hw_fndecl_59990 wlcore_alloc_hw fndecl 1-3 59990 &enable_so_addr_nvme_passthru_cmd_59990
159539 +enable_so_real_stripes_btrfs_raid_bio_59993 real_stripes btrfs_raid_bio 0 59993 NULL
159540 +enable_so_count_drm_buf_desc_59998 count drm_buf_desc 0 59998 NULL
159541 +enable_so_fb_write_fndecl_59999 fb_write fndecl 3 59999 NULL
159542 +enable_so_size_fuse_arg_60001 size fuse_arg 0 60001 NULL
159543 +enable_so_SYSC_poll_fndecl_60006 SYSC_poll fndecl 2 60006 NULL
159544 +enable_so_root_scrub_nocow_inode_60012 root scrub_nocow_inode 0 60012 NULL
159545 +enable_so_skb_priority_pktgen_dev_60015 skb_priority pktgen_dev 0 60015 NULL
159546 +enable_so_portnum_usb_device_60022 portnum usb_device 0 60022 NULL nohasharray
159547 +enable_so___sctp_setsockopt_connectx_fndecl_60022 __sctp_setsockopt_connectx fndecl 3 60022 &enable_so_portnum_usb_device_60022
159548 +enable_so_qla4xxx_post_aen_work_fndecl_60026 qla4xxx_post_aen_work fndecl 3 60026 NULL
159549 +enable_so_alloc_in_bmp_fndecl_60028 alloc_in_bmp fndecl 4-3-2 60028 NULL
159550 +enable_so_calculate_alignment_fndecl_60029 calculate_alignment fndecl 2 60029 NULL nohasharray
159551 +enable_so_coda_fsync_fndecl_60029 coda_fsync fndecl 2 60029 &enable_so_calculate_alignment_fndecl_60029
159552 +enable_so_write_tx_buf_fndecl_60032 write_tx_buf fndecl 4 60032 NULL
159553 +enable_so_print_bad_pte_fndecl_60036 print_bad_pte fndecl 2 60036 NULL
159554 +enable_so_hdrlen_ip_auth_hdr_60037 hdrlen ip_auth_hdr 0 60037 NULL
159555 +enable_so_sel_write_bool_fndecl_60039 sel_write_bool fndecl 3 60039 NULL
159556 +enable_so_MaxMSIxVectors_mpt3sas_facts_60045 MaxMSIxVectors mpt3sas_facts 0 60045 NULL
159557 +enable_so_blk_rq_map_kern_fndecl_60047 blk_rq_map_kern fndecl 4 60047 NULL
159558 +enable_so_user_set_fndecl_60060 user_set fndecl 4 60060 NULL
159559 +enable_so_cx231xx_init_bulk_fndecl_60067 cx231xx_init_bulk fndecl 4-2-3 60067 NULL
159560 +enable_so_level_ubifs_znode_60069 level ubifs_znode 0 60069 NULL
159561 +enable_so_debugfs_create_u32_array_fndecl_60082 debugfs_create_u32_array fndecl 5 60082 NULL
159562 +enable_so_calc_mode_timings_fndecl_60088 calc_mode_timings fndecl 2-1-3 60088 NULL
159563 +enable_so_f2fs_issue_discard_fndecl_60090 f2fs_issue_discard fndecl 3-2 60090 NULL
159564 +enable_so___map_single_fndecl_60095 __map_single fndecl 4-3-0 60095 NULL
159565 +enable_so_vsync_offset_lo_oaktrail_timing_info_60096 vsync_offset_lo oaktrail_timing_info 0 60096 NULL
159566 +enable_so_udpv6_sendmsg_fndecl_60103 udpv6_sendmsg fndecl 3 60103 NULL
159567 +enable_so_sample_rate_min_lola_60104 sample_rate_min lola 0 60104 NULL nohasharray
159568 +enable_so_event_trigger_regex_write_fndecl_60104 event_trigger_regex_write fndecl 3 60104 &enable_so_sample_rate_min_lola_60104
159569 +enable_so_vxfs_iget_fndecl_60105 vxfs_iget fndecl 2 60105 NULL nohasharray
159570 +enable_so_nfcmrvl_nci_recv_frame_fndecl_60105 nfcmrvl_nci_recv_frame fndecl 3 60105 &enable_so_vxfs_iget_fndecl_60105
159571 +enable_so_ufs_new_fragments_fndecl_60109 ufs_new_fragments fndecl 4-5-3-0 60109 NULL
159572 +enable_so_raid10_find_virt_fndecl_60115 raid10_find_virt fndecl 3-2 60115 NULL nohasharray
159573 +enable_so_num_tx_bnad_60115 num_tx bnad 0 60115 &enable_so_raid10_find_virt_fndecl_60115
159574 +enable_so_display_height_vivid_dev_60116 display_height vivid_dev 0 60116 NULL
159575 +enable_so_ht_ast_vbios_enhtable_60121 ht ast_vbios_enhtable 0 60121 NULL
159576 +enable_so_radeon_vm_bo_set_addr_fndecl_60122 radeon_vm_bo_set_addr fndecl 3 60122 NULL
159577 +enable_so_external_rate_fndecl_60138 external_rate fndecl 0 60138 NULL
159578 +enable_so_data_len_ib_ucm_event_60142 data_len ib_ucm_event 0 60142 NULL
159579 +enable_so_vfp_set_fndecl_60145 vfp_set fndecl 3-4 60145 NULL
159580 +enable_so_skb_checksum_setup_ip_fndecl_60154 skb_checksum_setup_ip fndecl 3 60154 NULL
159581 +enable_so_pvid_net_port_vlans_60155 pvid net_port_vlans 0 60155 NULL
159582 +enable_so_drm_fb_helper_initial_config_fndecl_60163 drm_fb_helper_initial_config fndecl 2 60163 NULL nohasharray
159583 +enable_so_smem_start_fb_fix_screeninfo_60163 smem_start fb_fix_screeninfo 0 60163 &enable_so_drm_fb_helper_initial_config_fndecl_60163
159584 +enable_so_wm8962_set_fll_fndecl_60167 wm8962_set_fll fndecl 4-5 60167 NULL
159585 +enable_so_nbufs_mlx5_buf_60168 nbufs mlx5_buf 0 60168 NULL
159586 +enable_so_vscnprintf_fndecl_60170 vscnprintf fndecl 0 60170 NULL
159587 +enable_so___kfifo_out_r_fndecl_60172 __kfifo_out_r fndecl 4 60172 NULL
159588 +enable_so_dccp_ackvec_buflen_fndecl_60177 dccp_ackvec_buflen fndecl 0 60177 NULL nohasharray
159589 +enable_so_ec_device_read_fndecl_60177 ec_device_read fndecl 3 60177 &enable_so_dccp_ackvec_buflen_fndecl_60177
159590 +enable_so_snd_compr_write_data_fndecl_60179 snd_compr_write_data fndecl 3 60179 NULL
159591 +enable_so_addr_c4iw_mm_entry_60182 addr c4iw_mm_entry 0 60182 NULL
159592 +enable_so_cc2520_write_ram_fndecl_60183 cc2520_write_ram fndecl 3 60183 NULL
159593 +enable_so_priority_binder_transaction_60184 priority binder_transaction 0 60184 NULL
159594 +enable_so_unlink1_fndecl_60188 unlink1 fndecl 3 60188 NULL
159595 +enable_so_il3945_stats_flag_fndecl_60189 il3945_stats_flag fndecl 3-0 60189 NULL
159596 +enable_so_ref_count_root_ll_disk_60193 ref_count_root ll_disk 0 60193 NULL
159597 +enable_so_udf_bitmap_prealloc_blocks_fndecl_60195 udf_bitmap_prealloc_blocks fndecl 0-4 60195 NULL nohasharray
159598 +enable_so_kvm_vcpu_init_fndecl_60195 kvm_vcpu_init fndecl 3 60195 &enable_so_udf_bitmap_prealloc_blocks_fndecl_60195
159599 +enable_so_vsub_vsp1_format_info_60198 vsub vsp1_format_info 0 60198 NULL
159600 +enable_so_bio_advance_iter_fndecl_60205 bio_advance_iter fndecl 3 60205 NULL
159601 +enable_so_src_frames_snd_pcm_plugin_60210 src_frames snd_pcm_plugin 0 60210 NULL nohasharray
159602 +enable_so_iuu_read_buf_fndecl_60210 iuu_read_buf fndecl 2 60210 &enable_so_src_frames_snd_pcm_plugin_60210
159603 +enable_so_iget_locked_fndecl_60218 iget_locked fndecl 2 60218 NULL
159604 +enable_so_btusb_recv_bulk_fndecl_60219 btusb_recv_bulk fndecl 3 60219 NULL
159605 +enable_so_MaximumParallelCommands_DAC960_V2_ControllerInfo_60222 MaximumParallelCommands DAC960_V2_ControllerInfo 0 60222 NULL
159606 +enable_so_l2cap_create_le_flowctl_pdu_fndecl_60233 l2cap_create_le_flowctl_pdu fndecl 3 60233 NULL
159607 +enable_so_dlfb_alloc_urb_list_fndecl_60234 dlfb_alloc_urb_list fndecl 3 60234 NULL
159608 +enable_so_irnet_connect_indication_fndecl_60236 irnet_connect_indication fndecl 5 60236 NULL nohasharray
159609 +enable_so_bttv_crop_adjust_fndecl_60236 bttv_crop_adjust fndecl 4-3 60236 &enable_so_irnet_connect_indication_fndecl_60236
159610 +enable_so_mwifiex_usb_host_to_card_fndecl_60239 mwifiex_usb_host_to_card fndecl 2 60239 NULL
159611 +enable_so_max_pages_per_fmr_ib_fmr_pool_param_60248 max_pages_per_fmr ib_fmr_pool_param 0 60248 NULL
159612 +enable_so_svm_queue_exception_fndecl_60249 svm_queue_exception fndecl 4-2 60249 NULL nohasharray
159613 +enable_so_length_squashfs_page_actor_60249 length squashfs_page_actor 0 60249 &enable_so_svm_queue_exception_fndecl_60249
159614 +enable_so_ah_rf_banks_size_ath5k_hw_60250 ah_rf_banks_size ath5k_hw 0 60250 NULL
159615 +enable_so_dirty_bytes_extent_io_tree_60254 dirty_bytes extent_io_tree 0 60254 NULL
159616 +enable_so_sector_size_jffs2_sb_info_60255 sector_size jffs2_sb_info 0 60255 NULL
159617 +enable_so___ilog2_u32_fndecl_60257 __ilog2_u32 fndecl 0 60257 NULL
159618 +enable_so_xenvif_change_mtu_fndecl_60258 xenvif_change_mtu fndecl 2 60258 NULL
159619 +enable_so_len_mwifiex_assoc_event_60259 len mwifiex_assoc_event 0 60259 NULL
159620 +enable_so_size_of_priv_dvb_usb_adapter_properties_60261 size_of_priv dvb_usb_adapter_properties 0 60261 NULL
159621 +enable_so_data_len_sym_ccb_60262 data_len sym_ccb 0 60262 NULL
159622 +enable_so_erst_dbg_write_fndecl_60264 erst_dbg_write fndecl 3 60264 NULL
159623 +enable_so_rotate_left_fndecl_60276 rotate_left fndecl 3-1 60276 NULL
159624 +enable_so_empty_dir_llseek_fndecl_60280 empty_dir_llseek fndecl 2 60280 NULL
159625 +enable_so_alloc_data_packet_fndecl_60281 alloc_data_packet fndecl 1 60281 NULL
159626 +enable_so_extPosition_short_ad_60284 extPosition short_ad 0 60284 NULL
159627 +enable_so_f2fs_update_dentry_fndecl_60285 f2fs_update_dentry fndecl 1 60285 NULL
159628 +enable_so_length_ore_per_dev_state_60287 length ore_per_dev_state 0 60287 NULL
159629 +enable_so_wl1271_rx_filter_alloc_field_fndecl_60306 wl1271_rx_filter_alloc_field fndecl 5 60306 NULL
159630 +enable_so_irq_domain_add_simple_fndecl_60317 irq_domain_add_simple fndecl 2 60317 NULL
159631 +enable_so_check_ref_fndecl_60321 check_ref fndecl 3 60321 NULL
159632 +enable_so_kvm_vcpu_write_guest_fndecl_60323 kvm_vcpu_write_guest fndecl 4-2 60323 NULL
159633 +enable_so_pg_count_nfs_pgio_mirror_60324 pg_count nfs_pgio_mirror 0 60324 NULL
159634 +enable_so_transfer_fndecl_60326 transfer fndecl 4 60326 NULL
159635 +enable_so_eor_jfs_log_60327 eor jfs_log 0 60327 NULL
159636 +enable_so_rq_addrlen_svc_rqst_60328 rq_addrlen svc_rqst 0 60328 NULL
159637 +enable_so_upper_vardecl_matroxfb_base_c_60329 upper vardecl_matroxfb_base.c 0 60329 NULL
159638 +enable_so_int_hw_irq_en_fndecl_60331 int_hw_irq_en fndecl 3 60331 NULL
159639 +enable_so_bd_add_to_bdi_fndecl_60336 bd_add_to_bdi fndecl 2 60336 NULL
159640 +enable_so_buf_size__IOCTL_Command_struct_60338 buf_size _IOCTL_Command_struct 0 60338 NULL
159641 +enable_so_offset_nvkm_mem_60339 offset nvkm_mem 0 60339 NULL
159642 +enable_so_h_dloarea_60342 h dloarea 0 60342 NULL
159643 +enable_so_pagesize_alauda_media_info_60348 pagesize alauda_media_info 0 60348 NULL
159644 +enable_so_hest_ghes_dev_register_fndecl_60349 hest_ghes_dev_register fndecl 1 60349 NULL
159645 +enable_so_softback_lines_vardecl_fbcon_c_60357 softback_lines vardecl_fbcon.c 0 60357 NULL
159646 +enable_so_length_dfw_pllrec_60358 length dfw_pllrec 0 60358 NULL
159647 +enable_so_num_counters_vardecl_sysfs_c_60371 num_counters vardecl_sysfs.c 0 60371 NULL
159648 +enable_so_s_inodes_per_group_ext4_super_block_60387 s_inodes_per_group ext4_super_block 0 60387 NULL
159649 +enable_so_ipw_get_max_rate_fndecl_60389 ipw_get_max_rate fndecl 0 60389 NULL
159650 +enable_so_shmem_pwrite_fast_fndecl_60393 shmem_pwrite_fast fndecl 3 60393 NULL
159651 +enable_so_block_in_file_dio_submit_60403 block_in_file dio_submit 0 60403 NULL
159652 +enable_so_btrfs_insert_empty_items_fndecl_60405 btrfs_insert_empty_items fndecl 6 60405 NULL
159653 +enable_so_xfs_bulkstat_one_int_fndecl_60410 xfs_bulkstat_one_int fndecl 2 60410 NULL
159654 +enable_so_hw_token_fusbh200_qtd_60416 hw_token fusbh200_qtd 0 60416 NULL
159655 +enable_so_sched_nice_sched_attr_60426 sched_nice sched_attr 0 60426 NULL
159656 +enable_so___ocfs2_mknod_locked_fndecl_60427 __ocfs2_mknod_locked fndecl 8-9-10 60427 NULL
159657 +enable_so_alloc_xenballooned_pages_fndecl_60439 alloc_xenballooned_pages fndecl 1 60439 NULL
159658 +enable_so___i2c_hid_command_fndecl_60442 __i2c_hid_command fndecl 6-8 60442 NULL
159659 +enable_so_digestsize_hash_alg_common_60446 digestsize hash_alg_common 0 60446 NULL nohasharray
159660 +enable_so_quirk_strict_duplicate_filter_write_fndecl_60446 quirk_strict_duplicate_filter_write fndecl 3 60446 &enable_so_digestsize_hash_alg_common_60446
159661 +enable_so_maxsgentries_ctlr_info_60455 maxsgentries ctlr_info 0 60455 NULL
159662 +enable_so_null_alloc_repbuf_fndecl_60460 null_alloc_repbuf fndecl 3 60460 NULL
159663 +enable_so_write_fndecl_60467 write fndecl 3 60467 NULL
159664 +enable_so_osd_left_vardecl_ivtvfb_c_60483 osd_left vardecl_ivtvfb.c 0 60483 NULL nohasharray
159665 +enable_so_drm_vma_offset_add_fndecl_60483 drm_vma_offset_add fndecl 3 60483 &enable_so_osd_left_vardecl_ivtvfb_c_60483
159666 +enable_so_v_nmembs_nilfs_argv_60498 v_nmembs nilfs_argv 0 60498 NULL
159667 +enable_so_cap_intel_iommu_60508 cap intel_iommu 0 60508 NULL
159668 +enable_so_tiadc_channel_init_fndecl_60514 tiadc_channel_init fndecl 2 60514 NULL
159669 +enable_so_gfs2_xattr_set_fndecl_60515 gfs2_xattr_set fndecl 4 60515 NULL
159670 +enable_so_rpcrdma_convert_iovs_fndecl_60516 rpcrdma_convert_iovs fndecl 0 60516 NULL
159671 +enable_so_n_host_mvs_chip_info_60517 n_host mvs_chip_info 0 60517 NULL nohasharray
159672 +enable_so_ll_iocontrol_register_fndecl_60517 ll_iocontrol_register fndecl 2 60517 &enable_so_n_host_mvs_chip_info_60517
159673 +enable_so_tty_buffer_alloc_fndecl_60526 tty_buffer_alloc fndecl 2 60526 NULL
159674 +enable_so_b44_change_mtu_fndecl_60528 b44_change_mtu fndecl 2 60528 NULL
159675 +enable_so_hso_serial_write_fndecl_60530 hso_serial_write fndecl 3 60530 NULL
159676 +enable_so_sock_recv_errqueue_fndecl_60535 sock_recv_errqueue fndecl 3 60535 NULL
159677 +enable_so_ieee80211_if_fmt_dot11MeshHWMProotInterval_fndecl_60542 ieee80211_if_fmt_dot11MeshHWMProotInterval fndecl 3 60542 NULL nohasharray
159678 +enable_so_paging64_gva_to_gpa_fndecl_60542 paging64_gva_to_gpa fndecl 2-3 60542 &enable_so_ieee80211_if_fmt_dot11MeshHWMProotInterval_fndecl_60542
159679 +enable_so_device_size_scsi_transport_template_60546 device_size scsi_transport_template 0 60546 NULL
159680 +enable_so_clock_tv_mode_60547 clock tv_mode 0 60547 NULL
159681 +enable_so_ipath_cfgports_ipath_devdata_60549 ipath_cfgports ipath_devdata 0 60549 NULL
159682 +enable_so_udp_manip_pkt_fndecl_60552 udp_manip_pkt fndecl 4 60552 NULL
159683 +enable_so_PSize_RxDesc_60553 PSize RxDesc 0 60553 NULL
159684 +enable_so_xfs_dir2_free_try_read_fndecl_60591 xfs_dir2_free_try_read fndecl 3 60591 NULL
159685 +enable_so_in_size_ide_task_request_s_60603 in_size ide_task_request_s 0 60603 NULL
159686 +enable_so___split_vma_fndecl_60609 __split_vma fndecl 3 60609 NULL
159687 +enable_so_fuse_ref_page_fndecl_60613 fuse_ref_page fndecl 4-3 60613 NULL nohasharray
159688 +enable_so_first_page_mpage_da_data_60613 first_page mpage_da_data 0 60613 &enable_so_fuse_ref_page_fndecl_60613
159689 +enable_so_sys_lgetxattr_fndecl_60616 sys_lgetxattr fndecl 4 60616 NULL
159690 +enable_so_dqi_usable_bs_qtree_mem_dqinfo_60619 dqi_usable_bs qtree_mem_dqinfo 0 60619 NULL
159691 +enable_so_copy_macs_fndecl_60621 copy_macs fndecl 4 60621 NULL
159692 +enable_so_copy_nocow_pages_fndecl_60628 copy_nocow_pages fndecl 3-5-2 60628 NULL nohasharray
159693 +enable_so_i40e_alloc_vfs_fndecl_60628 i40e_alloc_vfs fndecl 2 60628 &enable_so_copy_nocow_pages_fndecl_60628
159694 +enable_so_num_tx_desc_iadev_priv_60636 num_tx_desc iadev_priv 0 60636 NULL
159695 +enable_so_btrfs_new_extent_direct_fndecl_60642 btrfs_new_extent_direct fndecl 2-3 60642 NULL
159696 +enable_so__regmap_bus_raw_write_fndecl_60644 _regmap_bus_raw_write fndecl 2 60644 NULL
159697 +enable_so_num_mpts_mthca_limits_60648 num_mpts mthca_limits 0 60648 NULL
159698 +enable_so_venus_rmdir_fndecl_60655 venus_rmdir fndecl 4 60655 NULL
159699 +enable_so_neo_map_video_fndecl_60656 neo_map_video fndecl 3 60656 NULL
159700 +enable_so_i_extra_isize_ext4_inode_info_60659 i_extra_isize ext4_inode_info 0 60659 NULL
159701 +enable_so_length_ipath_swqe_60662 length ipath_swqe 0 60662 NULL
159702 +enable_so_secondary_head_adu_device_60665 secondary_head adu_device 0 60665 NULL
159703 +enable_so_cxd2820r_rd_regs_i2c_fndecl_60668 cxd2820r_rd_regs_i2c fndecl 5 60668 NULL
159704 +enable_so_cx18_copy_mdl_to_user_fndecl_60670 cx18_copy_mdl_to_user fndecl 4 60670 NULL
159705 +enable_so_set_extent_bits_fndecl_60673 set_extent_bits fndecl 3-2 60673 NULL
159706 +enable_so_pos_saa7164_user_buffer_60678 pos saa7164_user_buffer 0 60678 NULL
159707 +enable_so_hsync_off_lo_lvds_dvo_timing_60681 hsync_off_lo lvds_dvo_timing 0 60681 NULL
159708 +enable_so_vnic_dev_mtu_fndecl_60693 vnic_dev_mtu fndecl 0 60693 NULL nohasharray
159709 +enable_so_count_ieee80211_tx_rate_60693 count ieee80211_tx_rate 0 60693 &enable_so_vnic_dev_mtu_fndecl_60693 nohasharray
159710 +enable_so_MaxBufSize_lanman_neg_rsp_60693 MaxBufSize lanman_neg_rsp 0 60693 &enable_so_count_ieee80211_tx_rate_60693
159711 +enable_so_sel_write_user_fndecl_60695 sel_write_user fndecl 3 60695 NULL
159712 +enable_so_ubifs_fsync_fndecl_60696 ubifs_fsync fndecl 2 60696 NULL
159713 +enable_so_max_size_vx_ibl_info_60702 max_size vx_ibl_info 0 60702 NULL
159714 +enable_so_snd_card_new_fndecl_60707 snd_card_new fndecl 5 60707 NULL
159715 +enable_so_kvm_mmu_page_get_gfn_fndecl_60709 kvm_mmu_page_get_gfn fndecl 2 60709 NULL
159716 +enable_so_usbdev_read_fndecl_60713 usbdev_read fndecl 3 60713 NULL
159717 +enable_so_sock_sendmsg_fndecl_60718 sock_sendmsg fndecl 0 60718 NULL
159718 +enable_so_HighPriorityCredit_mpt3sas_facts_60721 HighPriorityCredit mpt3sas_facts 0 60721 NULL
159719 +enable_so_reserved_pebs_ubi_volume_60725 reserved_pebs ubi_volume 0 60725 NULL
159720 +enable_so_c2_pseudo_change_mtu_fndecl_60734 c2_pseudo_change_mtu fndecl 2 60734 NULL
159721 +enable_so_count_ptd_60735 count ptd 0 60735 NULL
159722 +enable_so_hwarc_filter_cmd_set_drp_ie_WUSB_0100_fndecl_60739 hwarc_filter_cmd_set_drp_ie_WUSB_0100 fndecl 0 60739 NULL
159723 +enable_so_ns_inode_size_the_nilfs_60742 ns_inode_size the_nilfs 0 60742 NULL
159724 +enable_so_cfs_trace_daemon_command_usrstr_fndecl_60744 cfs_trace_daemon_command_usrstr fndecl 2 60744 NULL
159725 +enable_so_gen_bitmask_string_fndecl_60750 gen_bitmask_string fndecl 6 60750 NULL
159726 +enable_so_max_cluster_msdos_sb_info_60753 max_cluster msdos_sb_info 0 60753 NULL
159727 +enable_so_chipshift_nand_flash_dev_60758 chipshift nand_flash_dev 0 60758 NULL
159728 +enable_so_jpg_bufsize_vardecl_60761 jpg_bufsize vardecl 0 60761 NULL
159729 +enable_so_base_ttm_bus_placement_60769 base ttm_bus_placement 0 60769 NULL
159730 +enable_so_i_block_group_ext2_inode_info_60771 i_block_group ext2_inode_info 0 60771 NULL
159731 +enable_so_tx_dma_addr_sh_msiof_spi_priv_60773 tx_dma_addr sh_msiof_spi_priv 0 60773 NULL
159732 +enable_so_a_channels_libipw_geo_60784 a_channels libipw_geo 0 60784 NULL
159733 +enable_so_ocfs2_remove_inode_range_fndecl_60791 ocfs2_remove_inode_range fndecl 3-4 60791 NULL nohasharray
159734 +enable_so_device_write_fndecl_60791 device_write fndecl 3 60791 &enable_so_ocfs2_remove_inode_range_fndecl_60791
159735 +enable_so_xennet_create_queues_fndecl_60793 xennet_create_queues fndecl 2 60793 NULL
159736 +enable_so_tomoyo_write_self_fndecl_60794 tomoyo_write_self fndecl 3 60794 NULL
159737 +enable_so_sta_agg_status_write_fndecl_60799 sta_agg_status_write fndecl 3 60799 NULL
159738 +enable_so_rd_bitbytes_gfs2_rgrpd_60803 rd_bitbytes gfs2_rgrpd 0 60803 NULL
159739 +enable_so_iso_alloc_urb_fndecl_60805 iso_alloc_urb fndecl 4-5-2 60805 NULL
159740 +enable_so_mpt_lan_change_mtu_fndecl_60806 mpt_lan_change_mtu fndecl 2 60806 NULL nohasharray
159741 +enable_so_start_rate_il3945_rs_sta_60806 start_rate il3945_rs_sta 0 60806 &enable_so_mpt_lan_change_mtu_fndecl_60806
159742 +enable_so_sctp_pack_cookie_fndecl_60821 sctp_pack_cookie fndecl 6 60821 NULL
159743 +enable_so_new_log_buf_len_vardecl_printk_c_60824 new_log_buf_len vardecl_printk.c 0 60824 NULL
159744 +enable_so_beacon_ies_len_cfg80211_beacon_data_60831 beacon_ies_len cfg80211_beacon_data 0 60831 NULL
159745 +enable_so_bInterval_usb_endpoint_descriptor_60843 bInterval usb_endpoint_descriptor 0 60843 NULL nohasharray
159746 +enable_so_limit_fm10k_ring_feature_60843 limit fm10k_ring_feature 0 60843 &enable_so_bInterval_usb_endpoint_descriptor_60843
159747 +enable_so_prism2_pda_proc_read_fndecl_60845 prism2_pda_proc_read fndecl 3 60845 NULL
159748 +enable_so_wlen_si2168_cmd_60850 wlen si2168_cmd 0 60850 NULL
159749 +enable_so_spi_alloc_master_fndecl_60852 spi_alloc_master fndecl 2 60852 NULL
159750 +enable_so_channels_max_snd_pcm_hardware_60854 channels_max snd_pcm_hardware 0 60854 NULL
159751 +enable_so_port_piobufs_ipath_portdata_60864 port_piobufs ipath_portdata 0 60864 NULL
159752 +enable_so_dev_priv_size_drm_driver_60870 dev_priv_size drm_driver 0 60870 NULL
159753 +enable_so_sectors_per_block_cache_60872 sectors_per_block cache 0 60872 NULL
159754 +enable_so_input_mt_init_slots_fndecl_60876 input_mt_init_slots fndecl 2 60876 NULL
159755 +enable_so_reiserfs_bmap_fndecl_60877 reiserfs_bmap fndecl 2 60877 NULL
159756 +enable_so_xenvif_add_frag_responses_fndecl_60886 xenvif_add_frag_responses fndecl 2 60886 NULL
159757 +enable_so_msg_size_c2_mq_60887 msg_size c2_mq 0 60887 NULL nohasharray
159758 +enable_so_last_data_size_ubi_ainf_volume_60887 last_data_size ubi_ainf_volume 0 60887 &enable_so_msg_size_c2_mq_60887
159759 +enable_so_snd_pcm_oss_sync1_fndecl_60897 snd_pcm_oss_sync1 fndecl 2 60897 NULL
159760 +enable_so_plcp_siso_il_rate_info_60899 plcp_siso il_rate_info 0 60899 NULL nohasharray
159761 +enable_so_btmrvl_send_sync_cmd_fndecl_60899 btmrvl_send_sync_cmd fndecl 4 60899 &enable_so_plcp_siso_il_rate_info_60899
159762 +enable_so_fusbh200_urb_dequeue_fndecl_60900 fusbh200_urb_dequeue fndecl 3 60900 NULL
159763 +enable_so_bNrChannels_uac_input_terminal_descriptor_60901 bNrChannels uac_input_terminal_descriptor 0 60901 NULL
159764 +enable_so___ocfs2_extend_allocation_fndecl_60902 __ocfs2_extend_allocation fndecl 3 60902 NULL
159765 +enable_so_gfs2_fiemap_fndecl_60913 gfs2_fiemap fndecl 4 60913 NULL
159766 +enable_so_ctrl_set_cropw_fndecl_60918 ctrl_set_cropw fndecl 3 60918 NULL
159767 +enable_so_int_cos_fndecl_60927 int_cos fndecl 0-1 60927 NULL
159768 +enable_so_tool_peer_mask_write_fndecl_60928 tool_peer_mask_write fndecl 3 60928 NULL
159769 +enable_so_read_ltv_hermes_ops_60939 read_ltv hermes_ops 0 60939 NULL nohasharray
159770 +enable_so_insert_state_fndecl_60939 insert_state fndecl 4-3 60939 &enable_so_read_ltv_hermes_ops_60939
159771 +enable_so_msix_vector_count_MPT3SAS_ADAPTER_60944 msix_vector_count MPT3SAS_ADAPTER 0 60944 NULL
159772 +enable_so_low_ino_proc_dir_entry_60945 low_ino proc_dir_entry 0 60945 NULL
159773 +enable_so_ipv6_recv_rxpmtu_fndecl_60949 ipv6_recv_rxpmtu fndecl 3 60949 NULL
159774 +enable_so_audit_make_reply_fndecl_60952 audit_make_reply fndecl 7 60952 NULL
159775 +enable_so_ocfs2_dx_dir_new_cluster_fndecl_60953 ocfs2_dx_dir_new_cluster fndecl 3 60953 NULL
159776 +enable_so_s_partition_root_udf_part_map_60954 s_partition_root udf_part_map 0 60954 NULL
159777 +enable_so_sparse_squashfs_lreg_inode_60963 sparse squashfs_lreg_inode 0 60963 NULL
159778 +enable_so_get_rdac_req_fndecl_60969 get_rdac_req fndecl 3 60969 NULL
159779 +enable_so_tx_remainder_cdc_ncm_ctx_60973 tx_remainder cdc_ncm_ctx 0 60973 NULL
159780 +enable_so_xfs_extent_busy_update_extent_fndecl_60975 xfs_extent_busy_update_extent fndecl 5-4 60975 NULL
159781 +enable_so_hcs_params1_xhci_hcd_60979 hcs_params1 xhci_hcd 0 60979 NULL
159782 +enable_so_isdn_write_fndecl_60980 isdn_write fndecl 3 60980 NULL
159783 +enable_so_first_block_migrate_struct_60989 first_block migrate_struct 0 60989 NULL nohasharray
159784 +enable_so_weight_dlm_member_60989 weight dlm_member 0 60989 &enable_so_first_block_migrate_struct_60989
159785 +enable_so_rtl8152_change_mtu_fndecl_60996 rtl8152_change_mtu fndecl 2 60996 NULL
159786 +enable_so_intel_ctrl_guest_mask_cpu_hw_events_60999 intel_ctrl_guest_mask cpu_hw_events 0 60999 NULL
159787 +enable_so_endp_out_zd1201_61001 endp_out zd1201 0 61001 NULL
159788 +enable_so_size_log2_t3_cq_61011 size_log2 t3_cq 0 61011 NULL
159789 +enable_so___svc_create_fndecl_61020 __svc_create fndecl 2-3 61020 NULL nohasharray
159790 +enable_so_virtual_apic_page_addr_vmcs12_61020 virtual_apic_page_addr vmcs12 0 61020 &enable_so___svc_create_fndecl_61020 nohasharray
159791 +enable_so_cfs_cpt_weight_fndecl_61020 cfs_cpt_weight fndecl 0 61020 &enable_so_virtual_apic_page_addr_vmcs12_61020
159792 +enable_so_size_page_frag_61029 size page_frag 0 61029 NULL
159793 +enable_so_setup_possible_cpus_vardecl_smpboot_c_61040 setup_possible_cpus vardecl_smpboot.c 0 61040 NULL
159794 +enable_so_alloc_mr_fndecl_61052 alloc_mr fndecl 1 61052 NULL
159795 +enable_so_copy_to_fndecl_61058 copy_to fndecl 3 61058 NULL
159796 +enable_so_xfs_bmbt_set_allf_fndecl_61064 xfs_bmbt_set_allf fndecl 4-3-2 61064 NULL
159797 +enable_so_get_rx_packet_len_wlcore_ops_61070 get_rx_packet_len wlcore_ops 0 61070 NULL
159798 +enable_so_rtl2832_regmap_gather_write_fndecl_61096 rtl2832_regmap_gather_write fndecl 5 61096 NULL
159799 +enable_so_f2fs_fname_crypto_alloc_buffer_fndecl_61116 f2fs_fname_crypto_alloc_buffer fndecl 2 61116 NULL
159800 +enable_so_tcp_adjust_fackets_out_fndecl_61118 tcp_adjust_fackets_out fndecl 3 61118 NULL
159801 +enable_so_nilfs_bmap_do_delete_fndecl_61120 nilfs_bmap_do_delete fndecl 0 61120 NULL
159802 +enable_so_blocknr_nilfs_write_info_61124 blocknr nilfs_write_info 0 61124 NULL
159803 +enable_so_rangehigh_v4l2_frequency_band_61125 rangehigh v4l2_frequency_band 0 61125 NULL
159804 +enable_so_rx_hdr_len_i40e_ring_61127 rx_hdr_len i40e_ring 0 61127 NULL
159805 +enable_so_atr_len_retry_cm4000_dev_61135 atr_len_retry cm4000_dev 0 61135 NULL
159806 +enable_so_display_byte_stride_osd_info_61141 display_byte_stride osd_info 0 61141 NULL
159807 +enable_so___access_remote_vm_fndecl_61148 __access_remote_vm fndecl 5-0-3 61148 NULL
159808 +enable_so_get_free_entries_fndecl_61149 get_free_entries fndecl 1 61149 NULL
159809 +enable_so_sierra_setup_urb_fndecl_61150 sierra_setup_urb fndecl 5-3-2 61150 NULL
159810 +enable_so_scatterwalk_pagelen_fndecl_61151 scatterwalk_pagelen fndecl 0 61151 NULL
159811 +enable_so_slhc_toss_fndecl_61153 slhc_toss fndecl 0 61153 NULL
159812 +enable_so___vmalloc_node_range_fndecl_61157 __vmalloc_node_range fndecl 1-2-3 61157 NULL nohasharray
159813 +enable_so_max_rsp_queues_qla_hw_data_61157 max_rsp_queues qla_hw_data 0 61157 &enable_so___vmalloc_node_range_fndecl_61157
159814 +enable_so_addr_kcore_list_61158 addr kcore_list 0 61158 NULL
159815 +enable_so_sel_commit_bools_write_fndecl_61166 sel_commit_bools_write fndecl 3 61166 NULL
159816 +enable_so___del_qgroup_relation_fndecl_61170 __del_qgroup_relation fndecl 4-3 61170 NULL
159817 +enable_so_host1x_job_alloc_fndecl_61171 host1x_job_alloc fndecl 4-3-2 61171 NULL
159818 +enable_so_in_length_nd_cmd_vendor_hdr_61172 in_length nd_cmd_vendor_hdr 0 61172 NULL
159819 +enable_so_pvr2_buffer_set_buffer_fndecl_61176 pvr2_buffer_set_buffer fndecl 3 61176 NULL
159820 +enable_so___ocfs2_move_extent_fndecl_61183 __ocfs2_move_extent fndecl 4-5-3-6 61183 NULL
159821 +enable_so_fbcon_softback_size_vardecl_fbcon_c_61184 fbcon_softback_size vardecl_fbcon.c 0 61184 NULL
159822 +enable_so_channels_vendor_data_61194 channels vendor_data 0 61194 NULL
159823 +enable_so_rdma_set_ib_paths_fndecl_61195 rdma_set_ib_paths fndecl 3 61195 NULL
159824 +enable_so_spk_ys_vardecl_61196 spk_ys vardecl 0 61196 NULL
159825 +enable_so_add_qgroup_rb_fndecl_61197 add_qgroup_rb fndecl 2 61197 NULL
159826 +enable_so_bit_fields_len_ocrdma_srq_61200 bit_fields_len ocrdma_srq 0 61200 NULL
159827 +enable_so_num_qps_mthca_limits_61203 num_qps mthca_limits 0 61203 NULL
159828 +enable_so_parsed_tag_70_packet_size_ecryptfs_parse_tag_70_packet_silly_stack_61204 parsed_tag_70_packet_size ecryptfs_parse_tag_70_packet_silly_stack 0 61204 NULL
159829 +enable_so_avail_snd_rawmidi_runtime_61205 avail snd_rawmidi_runtime 0 61205 NULL nohasharray
159830 +enable_so_ts_nr_packets_vardecl_saa7134_ts_c_61205 ts_nr_packets vardecl_saa7134-ts.c 0 61205 &enable_so_avail_snd_rawmidi_runtime_61205
159831 +enable_so_fp1_psb_pipe_61216 fp1 psb_pipe 0 61216 NULL nohasharray
159832 +enable_so_buf_addr_mlx4_ib_create_srq_61216 buf_addr mlx4_ib_create_srq 0 61216 &enable_so_fp1_psb_pipe_61216
159833 +enable_so_audit_log_n_hex_fndecl_61218 audit_log_n_hex fndecl 3 61218 NULL
159834 +enable_so_rx_buffersize_b43_dmaring_61223 rx_buffersize b43_dmaring 0 61223 NULL
159835 +enable_so_rx_tail_len_pn533_frame_ops_61226 rx_tail_len pn533_frame_ops 0 61226 NULL
159836 +enable_so_size_ceph_mds_reply_inode_61235 size ceph_mds_reply_inode 0 61235 NULL
159837 +enable_so_hidraw_get_report_fndecl_61242 hidraw_get_report fndecl 3 61242 NULL
159838 +enable_so_rcar_dmac_prep_dma_cyclic_fndecl_61249 rcar_dmac_prep_dma_cyclic fndecl 4-3 61249 NULL
159839 +enable_so_sys32_fadvise64_64_fndecl_61253 sys32_fadvise64_64 fndecl 2-3 61253 NULL nohasharray
159840 +enable_so_CombinedStatusBufferLength_DAC960_Controller_61253 CombinedStatusBufferLength DAC960_Controller 0 61253 &enable_so_sys32_fadvise64_64_fndecl_61253
159841 +enable_so_ieee80211_aes_gcm_decrypt_fndecl_61254 ieee80211_aes_gcm_decrypt fndecl 5 61254 NULL
159842 +enable_so_b_blocknr_buffer_head_61260 b_blocknr buffer_head 0 61260 NULL
159843 +enable_so____copy_from_user_fndecl_61266 ___copy_from_user fndecl 0 61266 NULL
159844 +enable_so_split_boundary_dm_origin_61269 split_boundary dm_origin 0 61269 NULL
159845 +enable_so_get_lock_data_page_fndecl_61276 get_lock_data_page fndecl 2 61276 NULL
159846 +enable_so_len_ubifs_zbranch_61279 len ubifs_zbranch 0 61279 NULL
159847 +enable_so_h_minimode_61280 h minimode 0 61280 NULL
159848 +enable_so_i_file_acl_ext4_inode_info_61282 i_file_acl ext4_inode_info 0 61282 NULL
159849 +enable_so_smk_write_ambient_fndecl_61288 smk_write_ambient fndecl 3 61288 NULL
159850 +enable_so_dataSgeOffset_mpt_ioctl_command_61289 dataSgeOffset mpt_ioctl_command 0 61289 NULL
159851 +enable_so_ds_tss_segment_16_61290 ds tss_segment_16 0 61290 NULL
159852 +enable_so_compat_mpctl_ioctl_fndecl_61300 compat_mpctl_ioctl fndecl 2 61300 NULL
159853 +enable_so_efs_nfs_get_inode_fndecl_61302 efs_nfs_get_inode fndecl 2 61302 NULL
159854 +enable_so_fat_length_fat_floppy_defaults_61308 fat_length fat_floppy_defaults 0 61308 NULL
159855 +enable_so_wlcore_smart_config_decode_event_fndecl_61313 wlcore_smart_config_decode_event fndecl 2-4 61313 NULL
159856 +enable_so_dvb_ca_en50221_init_fndecl_61317 dvb_ca_en50221_init fndecl 4 61317 NULL
159857 +enable_so_s3c_hsotg_rx_data_fndecl_61321 s3c_hsotg_rx_data fndecl 3 61321 NULL
159858 +enable_so_ufs_iget_fndecl_61332 ufs_iget fndecl 2 61332 NULL
159859 +enable_so_rtl2830_regmap_write_fndecl_61335 rtl2830_regmap_write fndecl 3 61335 NULL
159860 +enable_so_rw_copy_check_uvector_fndecl_61351 rw_copy_check_uvector fndecl 3-0 61351 NULL nohasharray
159861 +enable_so_v4l2_ctrl_new_std_fndecl_61351 v4l2_ctrl_new_std fndecl 5 61351 &enable_so_rw_copy_check_uvector_fndecl_61351
159862 +enable_so_size_sge_fl_61353 size sge_fl 0 61353 NULL
159863 +enable_so_conn_num_hci_conn_list_req_61354 conn_num hci_conn_list_req 0 61354 NULL
159864 +enable_so_btrfs_delete_delayed_dir_index_fndecl_61358 btrfs_delete_delayed_dir_index fndecl 4 61358 NULL
159865 +enable_so_hfs_get_block_fndecl_61360 hfs_get_block fndecl 2 61360 NULL
159866 +enable_so_handle_response_icmp_fndecl_61366 handle_response_icmp fndecl 7 61366 NULL
159867 +enable_so_tx_headroom_libipw_device_61370 tx_headroom libipw_device 0 61370 NULL
159868 +enable_so_data_dma_usb_onetouch_61372 data_dma usb_onetouch 0 61372 NULL
159869 +enable_so_devs_max_btrfs_raid_attr_61376 devs_max btrfs_raid_attr 0 61376 NULL
159870 +enable_so_bfa_cb_ioim_done_fndecl_61381 bfa_cb_ioim_done fndecl 7 61381 NULL
159871 +enable_so_num_to_str_fndecl_61382 num_to_str fndecl 0 61382 NULL
159872 +enable_so_ip6gre_tunnel_change_mtu_fndecl_61385 ip6gre_tunnel_change_mtu fndecl 2 61385 NULL
159873 +enable_so_sections_per_block_vardecl_memory_c_61386 sections_per_block vardecl_memory.c 0 61386 NULL nohasharray
159874 +enable_so_osc_checksum_type_seq_write_fndecl_61386 osc_checksum_type_seq_write fndecl 3 61386 &enable_so_sections_per_block_vardecl_memory_c_61386
159875 +enable_so_xfs_dir3_data_read_fndecl_61387 xfs_dir3_data_read fndecl 3 61387 NULL
159876 +enable_so_tkip_countermeasures_local_info_61401 tkip_countermeasures local_info 0 61401 NULL
159877 +enable_so_alloc_ts_config_fndecl_61404 alloc_ts_config fndecl 1 61404 NULL
159878 +enable_so_buf_sz_vardecl_stmmac_main_c_61408 buf_sz vardecl_stmmac_main.c 0 61408 NULL
159879 +enable_so_rx_ring_size_rx_queue_61409 rx_ring_size rx_queue 0 61409 NULL
159880 +enable_so_pcpu_alloc_alloc_info_fndecl_61414 pcpu_alloc_alloc_info fndecl 1-2 61414 NULL
159881 +enable_so_size_aper_size_info_lvl2_61417 size aper_size_info_lvl2 0 61417 NULL nohasharray
159882 +enable_so_get_pas_size_fndecl_61417 get_pas_size fndecl 0 61417 &enable_so_size_aper_size_info_lvl2_61417
159883 +enable_so_cma_release_fndecl_61424 cma_release fndecl 3 61424 NULL
159884 +enable_so_nservers_mc5_params_61428 nservers mc5_params 0 61428 NULL
159885 +enable_so_raw_setsockopt_fndecl_61435 raw_setsockopt fndecl 5 61435 NULL nohasharray
159886 +enable_so_rows_omap4_keypad_61435 rows omap4_keypad 0 61435 &enable_so_raw_setsockopt_fndecl_61435 nohasharray
159887 +enable_so_length_drm_mode_create_blob_61435 length drm_mode_create_blob 0 61435 &enable_so_rows_omap4_keypad_61435
159888 +enable_so_group_size_efs_sb_info_61441 group_size efs_sb_info 0 61441 NULL
159889 +enable_so_node_type_ib_device_61446 node_type ib_device 0 61446 NULL
159890 +enable_so_bulk_out_size_usb_serial_driver_61450 bulk_out_size usb_serial_driver 0 61450 NULL
159891 +enable_so_ocfs2_zero_range_for_truncate_fndecl_61461 ocfs2_zero_range_for_truncate fndecl 3 61461 NULL
159892 +enable_so_LFBL_brcms_c_info_61474 LFBL brcms_c_info 0 61474 NULL
159893 +enable_so_new_chunk_mdp_superblock_s_61482 new_chunk mdp_superblock_s 0 61482 NULL
159894 +enable_so_nmatches_tcf_ematch_tree_hdr_61486 nmatches tcf_ematch_tree_hdr 0 61486 NULL
159895 +enable_so_nlen_ubifs_dent_node_61488 nlen ubifs_dent_node 0 61488 NULL
159896 +enable_so_adau17x1_set_dai_pll_fndecl_61491 adau17x1_set_dai_pll fndecl 4-5 61491 NULL nohasharray
159897 +enable_so_dispatch_proc_write_fndecl_61491 dispatch_proc_write fndecl 3 61491 &enable_so_adau17x1_set_dai_pll_fndecl_61491
159898 +enable_so_rs_init_fndecl_61492 rs_init fndecl 6-1 61492 NULL nohasharray
159899 +enable_so_num_streams_azx_61492 num_streams azx 0 61492 &enable_so_rs_init_fndecl_61492
159900 +enable_so_ccp_init_data_fndecl_61495 ccp_init_data fndecl 5 61495 NULL nohasharray
159901 +enable_so_writing_st_buffer_61495 writing st_buffer 0 61495 &enable_so_ccp_init_data_fndecl_61495
159902 +enable_so_vb_size_drm_savage_cmdbuf_61501 vb_size drm_savage_cmdbuf 0 61501 NULL
159903 +enable_so_mgag200_gem_create_fndecl_61507 mgag200_gem_create fndecl 2 61507 NULL nohasharray
159904 +enable_so_width_pwc_device_61507 width pwc_device 0 61507 &enable_so_mgag200_gem_create_fndecl_61507
159905 +enable_so_count_sgentry_61508 count sgentry 0 61508 NULL
159906 +enable_so_depth_cx8800_fmt_61510 depth cx8800_fmt 0 61510 NULL
159907 +enable_so_wpa_enabled_libipw_device_61513 wpa_enabled libipw_device 0 61513 NULL nohasharray
159908 +enable_so_total_sect_fat_boot_sector_61513 total_sect fat_boot_sector 0 61513 &enable_so_wpa_enabled_libipw_device_61513
159909 +enable_so_nfs_fscache_get_super_cookie_fndecl_61520 nfs_fscache_get_super_cookie fndecl 3 61520 NULL
159910 +enable_so_sys_write_fndecl_61526 sys_write fndecl 3 61526 NULL
159911 +enable_so_register_num_acpi_fadt_pm_info_61529 register_num acpi_fadt_pm_info 0 61529 NULL
159912 +enable_so_strlcpy_fndecl_61539 strlcpy fndecl 0 61539 NULL
159913 +enable_so_drm_buffer_alloc_fndecl_61542 drm_buffer_alloc fndecl 2 61542 NULL
159914 +enable_so_osst_do_scsi_fndecl_61545 osst_do_scsi fndecl 4 61545 NULL
159915 +enable_so_iterate_dir_item_fndecl_61553 iterate_dir_item fndecl 0 61553 NULL
159916 +enable_so_xdr_init_decode_pages_fndecl_61557 xdr_init_decode_pages fndecl 4 61557 NULL
159917 +enable_so_min_objectid_btrfs_ioctl_search_key_61558 min_objectid btrfs_ioctl_search_key 0 61558 NULL
159918 +enable_so_aoedev_flush_fndecl_61565 aoedev_flush fndecl 2 61565 NULL
159919 +enable_so_ei_block_ext4_extent_idx_61567 ei_block ext4_extent_idx 0 61567 NULL nohasharray
159920 +enable_so_mtip_hw_read_flags_fndecl_61567 mtip_hw_read_flags fndecl 3 61567 &enable_so_ei_block_ext4_extent_idx_61567
159921 +enable_so_nilfs_dat_prepare_entry_fndecl_61575 nilfs_dat_prepare_entry fndecl 0 61575 NULL
159922 +enable_so_usb_internal_control_msg_fndecl_61589 usb_internal_control_msg fndecl 5-2 61589 NULL
159923 +enable_so_blkdev_issue_write_same_fndecl_61596 blkdev_issue_write_same fndecl 2-3 61596 NULL
159924 +enable_so_hdisplay_moderec_61597 hdisplay moderec 0 61597 NULL
159925 +enable_so_ext4_max_size_fndecl_61600 ext4_max_size fndecl 1 61600 NULL
159926 +enable_so_head_align_brcmf_sdio_61610 head_align brcmf_sdio 0 61610 NULL
159927 +enable_so_mic_virtio_copy_to_user_fndecl_61611 mic_virtio_copy_to_user fndecl 4-3 61611 NULL
159928 +enable_so_btrfs_chunk_item_size_fndecl_61613 btrfs_chunk_item_size fndecl 0-1 61613 NULL
159929 +enable_so_write_file_debug_fndecl_61615 write_file_debug fndecl 3 61615 NULL
159930 +enable_so_eth_change_mtu_fndecl_61617 eth_change_mtu fndecl 2 61617 NULL
159931 +enable_so_add_sit_entry_fndecl_61621 add_sit_entry fndecl 1 61621 NULL
159932 +enable_so_ext4_xattr_shift_entries_fndecl_61629 ext4_xattr_shift_entries fndecl 2 61629 NULL
159933 +enable_so____alloc_bootmem_node_nopanic_fndecl_61630 ___alloc_bootmem_node_nopanic fndecl 3-2 61630 NULL
159934 +enable_so_nr_slots_b43_dmaring_61631 nr_slots b43_dmaring 0 61631 NULL
159935 +enable_so_bio_advance_fndecl_61635 bio_advance fndecl 2 61635 NULL
159936 +enable_so_btrfsic_process_written_block_fndecl_61638 btrfsic_process_written_block fndecl 2 61638 NULL
159937 +enable_so_spidev_write_fndecl_61645 spidev_write fndecl 3 61645 NULL
159938 +enable_so_sci_req_tx_bytes_fndecl_61647 sci_req_tx_bytes fndecl 0 61647 NULL nohasharray
159939 +enable_so_index_count_applesmc_registers_61647 index_count applesmc_registers 0 61647 &enable_so_sci_req_tx_bytes_fndecl_61647
159940 +enable_so_height_cx23885_dev_61651 height cx23885_dev 0 61651 NULL nohasharray
159941 +enable_so_hashbits_rpc_cred_cache_61651 hashbits rpc_cred_cache 0 61651 &enable_so_height_cx23885_dev_61651
159942 +enable_so_security_socket_sendmsg_fndecl_61654 security_socket_sendmsg fndecl 0 61654 NULL
159943 +enable_so_anode_lookup_fndecl_61656 anode_lookup fndecl 3-2 61656 NULL
159944 +enable_so_sdio_align_size_fndecl_61658 sdio_align_size fndecl 0-2 61658 NULL
159945 +enable_so_min_io_size_ubi_device_info_61673 min_io_size ubi_device_info 0 61673 NULL
159946 +enable_so_comm_write_fndecl_61674 comm_write fndecl 3 61674 NULL
159947 +enable_so_sd_fsb2bb_shift_gfs2_sbd_61677 sd_fsb2bb_shift gfs2_sbd 0 61677 NULL
159948 +enable_so_page_size_ms_boot_attr_info_61681 page_size ms_boot_attr_info 0 61681 NULL
159949 +enable_so_sv_max_mesg_svc_serv_61683 sv_max_mesg svc_serv 0 61683 NULL
159950 +enable_so_SyS_io_getevents_fndecl_61684 SyS_io_getevents fndecl 3 61684 NULL
159951 +enable_so_ip_clusters_ocfs2_inode_info_61689 ip_clusters ocfs2_inode_info 0 61689 NULL
159952 +enable_so_cma_set_req_event_data_fndecl_61691 cma_set_req_event_data fndecl 4 61691 NULL
159953 +enable_so_ieee80211_rx_mgmt_assoc_resp_fndecl_61694 ieee80211_rx_mgmt_assoc_resp fndecl 3 61694 NULL nohasharray
159954 +enable_so_btrfs_check_uuid_tree_entry_fndecl_61694 btrfs_check_uuid_tree_entry fndecl 4 61694 &enable_so_ieee80211_rx_mgmt_assoc_resp_fndecl_61694
159955 +enable_so_segnum_nilfs_segment_entry_61704 segnum nilfs_segment_entry 0 61704 NULL
159956 +enable_so_find_key_fndecl_61711 find_key fndecl 2 61711 NULL
159957 +enable_so_xtypecpy_gru_control_block_extended_61714 xtypecpy gru_control_block_extended 0 61714 NULL
159958 +enable_so_BytesPerSector_ms_lib_ctrl_61717 BytesPerSector ms_lib_ctrl 0 61717 NULL
159959 +enable_so_do_lfb_size_fndecl_61720 do_lfb_size fndecl 0 61720 NULL
159960 +enable_so_btrfs_account_dev_extents_size_fndecl_61726 btrfs_account_dev_extents_size fndecl 2 61726 NULL
159961 +enable_so_dm_bufio_new_fndecl_61727 dm_bufio_new fndecl 2 61727 NULL
159962 +enable_so_exit_info_2_vmcb_control_area_61734 exit_info_2 vmcb_control_area 0 61734 NULL
159963 +enable_so_n_patterns_cfg80211_wowlan_61737 n_patterns cfg80211_wowlan 0 61737 NULL
159964 +enable_so_pci_msix_vec_count_fndecl_61742 pci_msix_vec_count fndecl 0 61742 NULL
159965 +enable_so_count_nfs_pgio_args_61745 count nfs_pgio_args 0 61745 NULL nohasharray
159966 +enable_so_wmi_call_fndecl_61745 wmi_call fndecl 4 61745 &enable_so_count_nfs_pgio_args_61745
159967 +enable_so_smt_add_frame_len_fndecl_61748 smt_add_frame_len fndecl 2 61748 NULL
159968 +enable_so_mon_buff_area_alloc_fndecl_61752 mon_buff_area_alloc fndecl 2 61752 NULL
159969 +enable_so_i9xx_dpll_compute_fp_fndecl_61753 i9xx_dpll_compute_fp fndecl 0 61753 NULL
159970 +enable_so_SYSC_add_key_fndecl_61756 SYSC_add_key fndecl 4 61756 NULL
159971 +enable_so_ath9k_def_dump_modal_eeprom_fndecl_61757 ath9k_def_dump_modal_eeprom fndecl 0-2-3 61757 NULL
159972 +enable_so_sl_count_ip_sf_socklist_61758 sl_count ip_sf_socklist 0 61758 NULL
159973 +enable_so_rsp_residual_count_sts_entry_24xx_61762 rsp_residual_count sts_entry_24xx 0 61762 NULL
159974 +enable_so_len_s_skfp_ioctl_61764 len s_skfp_ioctl 0 61764 NULL
159975 +enable_so_file_remove_suid_fndecl_61769 file_remove_suid fndecl 0 61769 NULL
159976 +enable_so_height_zr364xx_camera_61781 height zr364xx_camera 0 61781 NULL nohasharray
159977 +enable_so_xlog_recover_add_to_cont_trans_fndecl_61781 xlog_recover_add_to_cont_trans fndecl 4 61781 &enable_so_height_zr364xx_camera_61781
159978 +enable_so_pclk_max_ov6650_61784 pclk_max ov6650 0 61784 NULL
159979 +enable_so_xdr_enter_page_fndecl_61791 xdr_enter_page fndecl 2 61791 NULL
159980 +enable_so_num_gpios_htcpld_chip_platform_data_61792 num_gpios htcpld_chip_platform_data 0 61792 NULL
159981 +enable_so_tx_dma_phys_tegra_spi_data_61795 tx_dma_phys tegra_spi_data 0 61795 NULL nohasharray
159982 +enable_so_db_addr_mlx4_ib_create_srq_61795 db_addr mlx4_ib_create_srq 0 61795 &enable_so_tx_dma_phys_tegra_spi_data_61795
159983 +enable_so_vxfs_bmap_typed_fndecl_61801 vxfs_bmap_typed fndecl 0-2 61801 NULL
159984 +enable_so_imm_count_iscsi_task_61804 imm_count iscsi_task 0 61804 NULL
159985 +enable_so_end_map_range_61813 end map_range 0 61813 NULL
159986 +enable_so_len_nfs_createargs_61814 len nfs_createargs 0 61814 NULL
159987 +enable_so_m_rsumsize_xfs_mount_61815 m_rsumsize xfs_mount 0 61815 NULL
159988 +enable_so_lookup_extent_data_ref_fndecl_61819 lookup_extent_data_ref fndecl 5-4 61819 NULL
159989 +enable_so_ttm_get_pages_fndecl_61821 ttm_get_pages fndecl 2 61821 NULL
159990 +enable_so_bnx2x_init_wr_zp_fndecl_61822 bnx2x_init_wr_zp fndecl 3 61822 NULL
159991 +enable_so_tracing_resize_saved_cmdlines_fndecl_61823 tracing_resize_saved_cmdlines fndecl 1 61823 NULL
159992 +enable_so_SYSC_set_mempolicy_fndecl_61827 SYSC_set_mempolicy fndecl 3 61827 NULL
159993 +enable_so_xfs_bulkstat_one_fndecl_61834 xfs_bulkstat_one fndecl 2 61834 NULL nohasharray
159994 +enable_so_dir_level_f2fs_sb_info_61834 dir_level f2fs_sb_info 0 61834 &enable_so_xfs_bulkstat_one_fndecl_61834
159995 +enable_so_num_virt_counters_op_x86_model_spec_61835 num_virt_counters op_x86_model_spec 0 61835 NULL
159996 +enable_so_rd08_nvkm_ofuncs_61836 rd08 nvkm_ofuncs 0 61836 NULL
159997 +enable_so_size_rocker_dma_ring_info_61839 size rocker_dma_ring_info 0 61839 NULL
159998 +enable_so_start_segno_free_segmap_info_61843 start_segno free_segmap_info 0 61843 NULL
159999 +enable_so_ocfs2_xattr_bucket_find_fndecl_61853 ocfs2_xattr_bucket_find fndecl 5 61853 NULL
160000 +enable_so_sents_per_block_sit_info_61856 sents_per_block sit_info 0 61856 NULL
160001 +enable_so_claim_ptd_buffers_fndecl_61862 claim_ptd_buffers fndecl 3 61862 NULL nohasharray
160002 +enable_so_dma_len_rx_fst_card_info_61862 dma_len_rx fst_card_info 0 61862 &enable_so_claim_ptd_buffers_fndecl_61862
160003 +enable_so_num_mpts_mlx4_caps_61866 num_mpts mlx4_caps 0 61866 NULL
160004 +enable_so___section_nr_fndecl_61869 __section_nr fndecl 0 61869 NULL
160005 +enable_so_nfs4_file_fsync_fndecl_61872 nfs4_file_fsync fndecl 2 61872 NULL
160006 +enable_so_handle_eviocgbit_fndecl_61874 handle_eviocgbit fndecl 3 61874 NULL
160007 +enable_so_wm5100_set_fll_fndecl_61876 wm5100_set_fll fndecl 4-5 61876 NULL nohasharray
160008 +enable_so_wil_vring_init_tx_fndecl_61876 wil_vring_init_tx fndecl 3 61876 &enable_so_wm5100_set_fll_fndecl_61876
160009 +enable_so_virtinput_cfg_select_fndecl_61880 virtinput_cfg_select fndecl 0 61880 NULL
160010 +enable_so_ehci_urb_done_fndecl_61889 ehci_urb_done fndecl 3 61889 NULL
160011 +enable_so_vp_find_vqs_fndecl_61892 vp_find_vqs fndecl 2 61892 NULL
160012 +enable_so_srp_alloc_iu_fndecl_61904 srp_alloc_iu fndecl 2 61904 NULL nohasharray
160013 +enable_so_MaxRecvDataSegmentLength_iscsi_conn_ops_61904 MaxRecvDataSegmentLength iscsi_conn_ops 0 61904 &enable_so_srp_alloc_iu_fndecl_61904
160014 +enable_so_rxsize_channel_data_61912 rxsize channel_data 0 61912 NULL
160015 +enable_so_cxd2820r_wr_regs_i2c_fndecl_61922 cxd2820r_wr_regs_i2c fndecl 5 61922 NULL
160016 +enable_so_pino_nlink_jffs2_inode_cache_61933 pino_nlink jffs2_inode_cache 0 61933 NULL
160017 +enable_so_net2272_ep_read_fndecl_61935 net2272_ep_read fndecl 0 61935 NULL
160018 +enable_so_alloc_size_ttm_pool_opts_61945 alloc_size ttm_pool_opts 0 61945 NULL
160019 +enable_so_force_static_address_write_fndecl_61952 force_static_address_write fndecl 3 61952 NULL
160020 +enable_so_next_ldtentry_61954 next ldtentry 0 61954 NULL
160021 +enable_so_ntrips___thermal_zone_61955 ntrips __thermal_zone 0 61955 NULL
160022 +enable_so_indirect_size_srp_target_port_61962 indirect_size srp_target_port 0 61962 NULL
160023 +enable_so_periods_min_snd_pcm_hardware_61965 periods_min snd_pcm_hardware 0 61965 NULL
160024 +enable_so_radeon_audio_calc_cts_fndecl_61966 radeon_audio_calc_cts fndecl 1-4 61966 NULL
160025 +enable_so_physical_for_dev_replace_scrub_page_61977 physical_for_dev_replace scrub_page 0 61977 NULL
160026 +enable_so_dm_bitset_del_fndecl_61979 dm_bitset_del fndecl 2 61979 NULL
160027 +enable_so_qla4xxx_alloc_work_fndecl_61982 qla4xxx_alloc_work fndecl 2 61982 NULL
160028 +enable_so_qib_verbs_send_dma_fndecl_61985 qib_verbs_send_dma fndecl 6-3 61985 NULL
160029 +enable_so_opts1_de_desc_61986 opts1 de_desc 0 61986 NULL nohasharray
160030 +enable_so_sub_stripes_map_lookup_61986 sub_stripes map_lookup 0 61986 &enable_so_opts1_de_desc_61986
160031 +enable_so_copydesc_user_fndecl_61988 copydesc_user fndecl 3 61988 NULL
160032 +enable_so_vblank_panel_info_61990 vblank panel_info 0 61990 NULL
160033 +enable_so_num_srq_mlx4_profile_61993 num_srq mlx4_profile 0 61993 NULL
160034 +enable_so_sisusb_write_fndecl_62001 sisusb_write fndecl 3 62001 NULL
160035 +enable_so_s3c_hsotg_set_ep_maxpacket_fndecl_62008 s3c_hsotg_set_ep_maxpacket fndecl 3 62008 NULL
160036 +enable_so_length_snd_efw_transaction_62012 length snd_efw_transaction 0 62012 NULL
160037 +enable_so_nf_bridge_encap_header_len_fndecl_62025 nf_bridge_encap_header_len fndecl 0 62025 NULL
160038 +enable_so_encode_diropargs_fndecl_62031 encode_diropargs fndecl 4 62031 NULL
160039 +enable_so_num_qps_mlx4_caps_62033 num_qps mlx4_caps 0 62033 NULL
160040 +enable_so_tfcpad_xfrm_state_62038 tfcpad xfrm_state 0 62038 NULL
160041 +enable_so_init_rs_fndecl_62042 init_rs fndecl 5-1 62042 NULL nohasharray
160042 +enable_so_lmm_stripe_count_lov_user_md_v3_62042 lmm_stripe_count lov_user_md_v3 0 62042 &enable_so_init_rs_fndecl_62042
160043 +enable_so_flag_count_sg_simple_element_62044 flag_count sg_simple_element 0 62044 NULL
160044 +enable_so___sw_hweight16_fndecl_62046 __sw_hweight16 fndecl 0 62046 NULL
160045 +enable_so_block_aligned_filename_size_ecryptfs_write_tag_70_packet_silly_stack_62050 block_aligned_filename_size ecryptfs_write_tag_70_packet_silly_stack 0 62050 NULL
160046 +enable_so_entries_size_ebt_replace_62051 entries_size ebt_replace 0 62051 NULL
160047 +enable_so_di_nblocks_dinode_62054 di_nblocks dinode 0 62054 NULL
160048 +enable_so_regmap_spi_read_fndecl_62058 regmap_spi_read fndecl 3-5 62058 NULL
160049 +enable_so_ex_offset_extent_s_62059 ex_offset extent_s 0 62059 NULL
160050 +enable_so_do_tty_write_fndecl_62067 do_tty_write fndecl 5 62067 NULL
160051 +enable_so_cb_stripe_unit_exofs_dt_data_map_62068 cb_stripe_unit exofs_dt_data_map 0 62068 NULL
160052 +enable_so_wBlockSize_ms_bootblock_sysinf_62081 wBlockSize ms_bootblock_sysinf 0 62081 NULL
160053 +enable_so_ieee80211_build_probe_req_fndecl_62084 ieee80211_build_probe_req fndecl 9-7 62084 NULL
160054 +enable_so_rtsx_usb_seq_write_register_fndecl_62088 rtsx_usb_seq_write_register fndecl 3 62088 NULL
160055 +enable_so_cur_rx_pos_tegra_spi_data_62091 cur_rx_pos tegra_spi_data 0 62091 NULL
160056 +enable_so_max_xid_bnx2fc_hba_62096 max_xid bnx2fc_hba 0 62096 NULL
160057 +enable_so_bcm_recvmsg_fndecl_62099 bcm_recvmsg fndecl 3 62099 NULL nohasharray
160058 +enable_so_word3_atl1c_recv_ret_status_62099 word3 atl1c_recv_ret_status 0 62099 &enable_so_bcm_recvmsg_fndecl_62099
160059 +enable_so_task_ctx_size_pmu_62102 task_ctx_size pmu 0 62102 NULL
160060 +enable_so_ts_rate___wmi_event_txstatus_62105 ts_rate __wmi_event_txstatus 0 62105 NULL
160061 +enable_so_bulk_out_ep_bfusb_data_62110 bulk_out_ep bfusb_data 0 62110 NULL
160062 +enable_so_local_addr_rds_atomic_args_62123 local_addr rds_atomic_args 0 62123 NULL nohasharray
160063 +enable_so_sched_read_attr_fndecl_62123 sched_read_attr fndecl 3 62123 &enable_so_local_addr_rds_atomic_args_62123
160064 +enable_so_vcs_lseek_fndecl_62125 vcs_lseek fndecl 2 62125 NULL
160065 +enable_so_send_chmod_fndecl_62144 send_chmod fndecl 2 62144 NULL
160066 +enable_so_cciss_tape_cmds_vardecl_cciss_c_62147 cciss_tape_cmds vardecl_cciss.c 0 62147 NULL
160067 +enable_so_tcp_trim_head_fndecl_62157 tcp_trim_head fndecl 3 62157 NULL
160068 +enable_so_ptrace_writedata_fndecl_62158 ptrace_writedata fndecl 4-3 62158 NULL
160069 +enable_so_srv_buf_size_ptlrpc_service_62163 srv_buf_size ptlrpc_service 0 62163 NULL
160070 +enable_so_user_frag_sctp_association_62167 user_frag sctp_association 0 62167 NULL nohasharray
160071 +enable_so_idt_vectoring_info_vcpu_vmx_62167 idt_vectoring_info vcpu_vmx 0 62167 &enable_so_user_frag_sctp_association_62167 nohasharray
160072 +enable_so_alloc_huge_page_fndecl_62167 alloc_huge_page fndecl 2 62167 &enable_so_idt_vectoring_info_vcpu_vmx_62167
160073 +enable_so_len_scrub_copy_nocow_ctx_62170 len scrub_copy_nocow_ctx 0 62170 NULL
160074 +enable_so_igb_change_mtu_fndecl_62189 igb_change_mtu fndecl 2 62189 NULL
160075 +enable_so_eps_count_ffs_data_62193 eps_count ffs_data 0 62193 NULL
160076 +enable_so_rose_sendmsg_fndecl_62194 rose_sendmsg fndecl 3 62194 NULL nohasharray
160077 +enable_so_dm_kvzalloc_fndecl_62194 dm_kvzalloc fndecl 1 62194 &enable_so_rose_sendmsg_fndecl_62194
160078 +enable_so_max_pkt_size_em28xx_62196 max_pkt_size em28xx 0 62196 NULL
160079 +enable_so_wm_adsp_create_control_fndecl_62201 wm_adsp_create_control fndecl 4 62201 NULL
160080 +enable_so_param_count_acpi_evaluate_info_62202 param_count acpi_evaluate_info 0 62202 NULL
160081 +enable_so_inum_size_entry_62204 inum size_entry 0 62204 NULL
160082 +enable_so_locked_rate_snd_sb_62221 locked_rate snd_sb 0 62221 NULL
160083 +enable_so_datainterval_snd_usb_endpoint_62227 datainterval snd_usb_endpoint 0 62227 NULL
160084 +enable_so_shmem_getpage_gfp_fndecl_62239 shmem_getpage_gfp fndecl 2 62239 NULL nohasharray
160085 +enable_so_svm_create_vcpu_fndecl_62239 svm_create_vcpu fndecl 2 62239 &enable_so_shmem_getpage_gfp_fndecl_62239
160086 +enable_so_snd_pcm_alloc_vmalloc_buffer_fndecl_62240 snd_pcm_alloc_vmalloc_buffer fndecl 2 62240 NULL
160087 +enable_so_btrfs_set_extent_delalloc_fndecl_62264 btrfs_set_extent_delalloc fndecl 3-2 62264 NULL
160088 +enable_so_usable_leb_size_ubi_volume_62272 usable_leb_size ubi_volume 0 62272 NULL
160089 +enable_so_xfs_bmapi_delay_fndecl_62277 xfs_bmapi_delay fndecl 2-3 62277 NULL nohasharray
160090 +enable_so_cfpkt_add_body_fndecl_62277 cfpkt_add_body fndecl 3 62277 &enable_so_xfs_bmapi_delay_fndecl_62277
160091 +enable_so_email_size_x509_parse_context_62283 email_size x509_parse_context 0 62283 NULL
160092 +enable_so_gx1_line_delta_fndecl_62286 gx1_line_delta fndecl 0 62286 NULL
160093 +enable_so___kvm_read_guest_page_fndecl_62291 __kvm_read_guest_page fndecl 5 62291 NULL
160094 +enable_so_num_arq_entries_i40e_adminq_info_62293 num_arq_entries i40e_adminq_info 0 62293 NULL
160095 +enable_so_max_io_mvumi_hba_62301 max_io mvumi_hba 0 62301 NULL
160096 +enable_so_ceph_llseek_fndecl_62305 ceph_llseek fndecl 2 62305 NULL
160097 +enable_so_sb_rbmblocks_xfs_sb_62307 sb_rbmblocks xfs_sb 0 62307 NULL
160098 +enable_so_rtl2832_sdr_convert_stream_fndecl_62308 rtl2832_sdr_convert_stream fndecl 0-4 62308 NULL
160099 +enable_so_map_extent_mft_record_fndecl_62312 map_extent_mft_record fndecl 2 62312 NULL nohasharray
160100 +enable_so_alloc_ctrl_packet_fndecl_62312 alloc_ctrl_packet fndecl 1 62312 &enable_so_map_extent_mft_record_fndecl_62312
160101 +enable_so_ss_channels_snd_rme9652_62315 ss_channels snd_rme9652 0 62315 NULL
160102 +enable_so_erst_writer_fndecl_62318 erst_writer fndecl 7 62318 NULL
160103 +enable_so_ext2_new_block_fndecl_62326 ext2_new_block fndecl 0-2 62326 NULL
160104 +enable_so_qib_get_user_pages_fndecl_62338 qib_get_user_pages fndecl 1 62338 NULL
160105 +enable_so_reiserfs_update_sd_size_fndecl_62345 reiserfs_update_sd_size fndecl 3 62345 NULL nohasharray
160106 +enable_so_lov_emerg_alloc_fndecl_62345 lov_emerg_alloc fndecl 1 62345 &enable_so_reiserfs_update_sd_size_fndecl_62345
160107 +enable_so_write_file_spectral_bins_fndecl_62347 write_file_spectral_bins fndecl 3 62347 NULL
160108 +enable_so_pcl_status_pcl_62348 pcl_status pcl 0 62348 NULL
160109 +enable_so_C_SYSC_select_fndecl_62350 C_SYSC_select fndecl 1 62350 NULL
160110 +enable_so_mpi_resize_fndecl_62353 mpi_resize fndecl 2 62353 NULL
160111 +enable_so_raid56_parity_write_fndecl_62355 raid56_parity_write fndecl 4 62355 NULL
160112 +enable_so_fm10k_iov_alloc_data_fndecl_62361 fm10k_iov_alloc_data fndecl 2 62361 NULL
160113 +enable_so_rawv6_sendmsg_fndecl_62363 rawv6_sendmsg fndecl 3 62363 NULL
160114 +enable_so_ts_read_fndecl_62364 ts_read fndecl 3 62364 NULL
160115 +enable_so_drxbsp_i2c_write_read_fndecl_62366 drxbsp_i2c_write_read fndecl 5-2 62366 NULL
160116 +enable_so__zd_iowrite32v_locked_fndecl_62374 _zd_iowrite32v_locked fndecl 3 62374 NULL nohasharray
160117 +enable_so_num_subauth_cifs_sid_62374 num_subauth cifs_sid 0 62374 &enable_so__zd_iowrite32v_locked_fndecl_62374
160118 +enable_so_fib_count_nexthops_fndecl_62377 fib_count_nexthops fndecl 0 62377 NULL
160119 +enable_so_clusterip_proc_write_fndecl_62378 clusterip_proc_write fndecl 3 62378 NULL
160120 +enable_so_new_chunk_mdp_superblock_1_62380 new_chunk mdp_superblock_1 0 62380 NULL
160121 +enable_so_max_cnt_ocrdma_qp_hwq_info_62383 max_cnt ocrdma_qp_hwq_info 0 62383 NULL
160122 +enable_so_transid_btrfs_trans_handle_62386 transid btrfs_trans_handle 0 62386 NULL nohasharray
160123 +enable_so_ivsize_aead_alg_62386 ivsize aead_alg 0 62386 &enable_so_transid_btrfs_trans_handle_62386
160124 +enable_so_m_blkbb_log_xfs_mount_62391 m_blkbb_log xfs_mount 0 62391 NULL
160125 +enable_so___generic_block_fiemap_fndecl_62394 __generic_block_fiemap fndecl 4 62394 NULL nohasharray
160126 +enable_so_xfer_to_user_fndecl_62394 xfer_to_user fndecl 3 62394 &enable_so___generic_block_fiemap_fndecl_62394
160127 +enable_so_hwCBP_td_62396 hwCBP td 0 62396 NULL
160128 +enable_so_c4iw_create_cq_fndecl_62397 c4iw_create_cq fndecl 2 62397 NULL
160129 +enable_so_bus_addr_videobuf_dmabuf_62402 bus_addr videobuf_dmabuf 0 62402 NULL nohasharray
160130 +enable_so_len_scifioctl_node_ids_62402 len scifioctl_node_ids 0 62402 &enable_so_bus_addr_videobuf_dmabuf_62402
160131 +enable_so_send_cap_msg_fndecl_62406 send_cap_msg fndecl 12 62406 NULL nohasharray
160132 +enable_so_tnode_new_fndecl_62406 tnode_new fndecl 3 62406 &enable_so_send_cap_msg_fndecl_62406
160133 +enable_so_rtsx_usb_get_rsp_fndecl_62408 rtsx_usb_get_rsp fndecl 2 62408 NULL nohasharray
160134 +enable_so_fill_holes_fndecl_62408 fill_holes fndecl 4-5 62408 &enable_so_rtsx_usb_get_rsp_fndecl_62408 nohasharray
160135 +enable_so_do_huge_pmd_wp_page_fndecl_62408 do_huge_pmd_wp_page fndecl 3 62408 &enable_so_fill_holes_fndecl_62408
160136 +enable_so_gfs2_log_bmap_fndecl_62411 gfs2_log_bmap fndecl 0 62411 NULL
160137 +enable_so_unmap_page_range_fndecl_62415 unmap_page_range fndecl 4-3 62415 NULL
160138 +enable_so_data_offset_v4l2_plane_62423 data_offset v4l2_plane 0 62423 NULL
160139 +enable_so_WIL_GET_BITS_fndecl_62424 WIL_GET_BITS fndecl 0-3-2-1 62424 NULL
160140 +enable_so_set_brk_fndecl_62430 set_brk fndecl 2 62430 NULL nohasharray
160141 +enable_so_io_size_xfs_ioend_62430 io_size xfs_ioend 0 62430 &enable_so_set_brk_fndecl_62430
160142 +enable_so_sctp_setsockopt_fndecl_62439 sctp_setsockopt fndecl 5 62439 NULL
160143 +enable_so___videobuf_copy_stream_fndecl_62450 __videobuf_copy_stream fndecl 4 62450 NULL
160144 +enable_so_k3_dma_prep_slave_sg_fndecl_62456 k3_dma_prep_slave_sg fndecl 3 62456 NULL
160145 +enable_so_irq_domain_add_legacy_fndecl_62462 irq_domain_add_legacy fndecl 2-4 62462 NULL
160146 +enable_so_btrfs_new_inode_fndecl_62463 btrfs_new_inode fndecl 7-6 62463 NULL
160147 +enable_so_ipx_recvmsg_fndecl_62469 ipx_recvmsg fndecl 3 62469 NULL
160148 +enable_so_payload_bytes_controlvm_message_header_62474 payload_bytes controlvm_message_header 0 62474 NULL
160149 +enable_so_page_size_mspro_block_data_62479 page_size mspro_block_data 0 62479 NULL
160150 +enable_so_fw_stats_bus_myri10ge_slice_state_62482 fw_stats_bus myri10ge_slice_state 0 62482 NULL
160151 +enable_so_ide_end_rq_fndecl_62486 ide_end_rq fndecl 4 62486 NULL nohasharray
160152 +enable_so_rx_ring_tail_sc92031_priv_62486 rx_ring_tail sc92031_priv 0 62486 &enable_so_ide_end_rq_fndecl_62486
160153 +enable_so_mlx5_ib_reg_user_mr_fndecl_62488 mlx5_ib_reg_user_mr fndecl 2-4 62488 NULL
160154 +enable_so_residual_len_sts_entry_fx00_62491 residual_len sts_entry_fx00 0 62491 NULL nohasharray
160155 +enable_so_dlen_ippp_ccp_reset_state_62491 dlen ippp_ccp_reset_state 0 62491 &enable_so_residual_len_sts_entry_fx00_62491
160156 +enable_so_filemap_write_and_wait_range_fndecl_62492 filemap_write_and_wait_range fndecl 2 62492 NULL
160157 +enable_so_evtchn_write_fndecl_62493 evtchn_write fndecl 3 62493 NULL
160158 +enable_so_vmci_transport_set_buffer_size_fndecl_62498 vmci_transport_set_buffer_size fndecl 2 62498 NULL
160159 +enable_so_jade_ale_bkm_hw_62507 jade_ale bkm_hw 0 62507 NULL
160160 +enable_so_sgs_per_request_skd_device_62508 sgs_per_request skd_device 0 62508 NULL
160161 +enable_so_mpage_alloc_fndecl_62512 mpage_alloc fndecl 2 62512 NULL
160162 +enable_so_btrfs_alloc_dev_extent_fndecl_62518 btrfs_alloc_dev_extent fndecl 6 62518 NULL
160163 +enable_so_rx_buf_sz_iadev_priv_62524 rx_buf_sz iadev_priv 0 62524 NULL
160164 +enable_so_m88ds3103_rd_regs_fndecl_62534 m88ds3103_rd_regs fndecl 4 62534 NULL
160165 +enable_so_kvm_host_page_size_fndecl_62535 kvm_host_page_size fndecl 0-2 62535 NULL
160166 +enable_so_acpi_tb_init_generic_address_fndecl_62545 acpi_tb_init_generic_address fndecl 4-3 62545 NULL
160167 +enable_so_len_ErrMsg_62547 len ErrMsg 0 62547 NULL
160168 +enable_so_arm_iommu_alloc_attrs_fndecl_62553 arm_iommu_alloc_attrs fndecl 2 62553 NULL
160169 +enable_so_q_pwr_phy_iq_est_62556 q_pwr phy_iq_est 0 62556 NULL
160170 +enable_so_rsi_sdio_host_intf_read_pkt_fndecl_62557 rsi_sdio_host_intf_read_pkt fndecl 3 62557 NULL
160171 +enable_so_lx_framebuffer_size_fndecl_62562 lx_framebuffer_size fndecl 0 62562 NULL
160172 +enable_so_base_pfn_var_mtrr_range_state_62564 base_pfn var_mtrr_range_state 0 62564 NULL nohasharray
160173 +enable_so_wDatagramLength_usb_cdc_ncm_dpe16_62564 wDatagramLength usb_cdc_ncm_dpe16 0 62564 &enable_so_base_pfn_var_mtrr_range_state_62564
160174 +enable_so_outbuf_dma_ati_remote_62567 outbuf_dma ati_remote 0 62567 NULL
160175 +enable_so_numscales_vardecl_longhaul_c_62570 numscales vardecl_longhaul.c 0 62570 NULL
160176 +enable_so_gart_free_coherent_fndecl_62577 gart_free_coherent fndecl 2 62577 NULL
160177 +enable_so_get_active_stripe_fndecl_62581 get_active_stripe fndecl 2 62581 NULL
160178 +enable_so_btrfs_check_data_free_space_fndecl_62583 btrfs_check_data_free_space fndecl 0 62583 NULL
160179 +enable_so_blkaddr_discard_entry_62585 blkaddr discard_entry 0 62585 NULL
160180 +enable_so_gfs2_lookup_root_fndecl_62586 gfs2_lookup_root fndecl 3 62586 NULL
160181 +enable_so_rangelow_v4l2_hw_freq_seek_62591 rangelow v4l2_hw_freq_seek 0 62591 NULL
160182 +enable_so___alloc_bootmem_low_fndecl_62604 __alloc_bootmem_low fndecl 2-1 62604 NULL nohasharray
160183 +enable_so_max_header_size_irlan_cb_62604 max_header_size irlan_cb 0 62604 &enable_so___alloc_bootmem_low_fndecl_62604
160184 +enable_so_get_user_pages_unlocked_fndecl_62612 get_user_pages_unlocked fndecl 0-3 62612 NULL
160185 +enable_so_btrfs_del_orphan_item_fndecl_62622 btrfs_del_orphan_item fndecl 3 62622 NULL
160186 +enable_so_usb_string_fndecl_62624 usb_string fndecl 0 62624 NULL
160187 +enable_so_l2linesize_linelock_62626 l2linesize linelock 0 62626 NULL
160188 +enable_so_min_pkt_size_pktgen_dev_62629 min_pkt_size pktgen_dev 0 62629 NULL
160189 +enable_so_get_vm_area_size_fndecl_62631 get_vm_area_size fndecl 0 62631 NULL
160190 +enable_so_wil_change_mtu_fndecl_62636 wil_change_mtu fndecl 2 62636 NULL
160191 +enable_so_fs_path_prepare_for_add_fndecl_62638 fs_path_prepare_for_add fndecl 2 62638 NULL
160192 +enable_so_fts_rtllib_device_62643 fts rtllib_device 0 62643 NULL
160193 +enable_so_rmdir_ino_waiting_dir_move_62644 rmdir_ino waiting_dir_move 0 62644 NULL
160194 +enable_so_cfg_sg_seg_cnt_lpfc_hba_62646 cfg_sg_seg_cnt lpfc_hba 0 62646 NULL nohasharray
160195 +enable_so_i_iget5_offset_iso_inode_info_62646 i_iget5_offset iso_inode_info 0 62646 &enable_so_cfg_sg_seg_cnt_lpfc_hba_62646
160196 +enable_so_usb_alloc_urb_fndecl_62655 usb_alloc_urb fndecl 1 62655 NULL
160197 +enable_so_curr_len_max3421_hcd_62658 curr_len max3421_hcd 0 62658 NULL
160198 +enable_so_calculate_discard_block_size_fndecl_62667 calculate_discard_block_size fndecl 0-1 62667 NULL
160199 +enable_so_qxl_gem_object_create_fndecl_62668 qxl_gem_object_create fndecl 2 62668 NULL
160200 +enable_so_bss_priv_size_wiphy_62669 bss_priv_size wiphy 0 62669 NULL
160201 +enable_so_pci_cfg_space_size_ext_fndecl_62679 pci_cfg_space_size_ext fndecl 0 62679 NULL
160202 +enable_so_encode_rpcb_string_fndecl_62680 encode_rpcb_string fndecl 3 62680 NULL
160203 +enable_so_nvme_trans_device_id_page_fndecl_62681 nvme_trans_device_id_page fndecl 4 62681 NULL
160204 +enable_so_bpp_sh_vou_fmt_62683 bpp sh_vou_fmt 0 62683 NULL
160205 +enable_so_num_vsis_i40e_hw_capabilities_62685 num_vsis i40e_hw_capabilities 0 62685 NULL
160206 +enable_so_start_ttm_mem_reg_62688 start ttm_mem_reg 0 62688 NULL
160207 +enable_so_ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime_fndecl_62690 ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime fndecl 3 62690 NULL
160208 +enable_so_f2fs_fill_dentries_fndecl_62693 f2fs_fill_dentries fndecl 3 62693 NULL
160209 +enable_so_width_tcm_62703 width tcm 0 62703 NULL
160210 +enable_so_curwidth_usb_usbvision_62710 curwidth usb_usbvision 0 62710 NULL
160211 +enable_so_mtu_ring_info_62721 mtu ring_info 0 62721 NULL nohasharray
160212 +enable_so_add_bytes_to_bitmap_fndecl_62721 add_bytes_to_bitmap fndecl 0-3-4 62721 &enable_so_mtu_ring_info_62721
160213 +enable_so_limit_tc_sfq_qopt_62728 limit tc_sfq_qopt 0 62728 NULL
160214 +enable_so_total_len_android_wifi_priv_cmd_62735 total_len android_wifi_priv_cmd 0 62735 NULL
160215 +enable_so_smi_read_eeprom_fndecl_62737 smi_read_eeprom fndecl 4 62737 NULL
160216 +enable_so_match_size_ebt_entry_match_62738 match_size ebt_entry_match 0 62738 NULL
160217 +enable_so_xfs_da_read_buf_fndecl_62739 xfs_da_read_buf fndecl 3 62739 NULL
160218 +enable_so_twa_load_sgl_fndecl_62743 twa_load_sgl fndecl 5 62743 NULL
160219 +enable_so_fs_wm9081_priv_62744 fs wm9081_priv 0 62744 NULL nohasharray
160220 +enable_so_nmsrs_kvm_msrs_62744 nmsrs kvm_msrs 0 62744 &enable_so_fs_wm9081_priv_62744
160221 +enable_so_clear_extent_dirty_fndecl_62746 clear_extent_dirty fndecl 2-3 62746 NULL
160222 +enable_so___bioset_create_fndecl_62752 __bioset_create fndecl 2 62752 NULL
160223 +enable_so_e_value_size_ext4_xattr_entry_62783 e_value_size ext4_xattr_entry 0 62783 NULL
160224 +enable_so__xfer_secondary_pool_fndecl_62786 _xfer_secondary_pool fndecl 2 62786 NULL
160225 +enable_so_mt2131_writeregs_fndecl_62788 mt2131_writeregs fndecl 3 62788 NULL
160226 +enable_so_buffer_size_tx_holding_buffer_62794 buffer_size tx_holding_buffer 0 62794 NULL
160227 +enable_so_len_cx24120_cmd_62796 len cx24120_cmd 0 62796 NULL
160228 +enable_so_cur_tx_netdev_private_62799 cur_tx netdev_private 0 62799 NULL
160229 +enable_so_v9fs_qid2ino_fndecl_62801 v9fs_qid2ino fndecl 0 62801 NULL
160230 +enable_so_nfs_map_group_to_gid_fndecl_62809 nfs_map_group_to_gid fndecl 3 62809 NULL
160231 +enable_so_xattr_len_ima_event_data_62811 xattr_len ima_event_data 0 62811 NULL
160232 +enable_so_head_aio_ring_62812 head aio_ring 0 62812 NULL
160233 +enable_so_root_dirid_btrfs_root_item_62817 root_dirid btrfs_root_item 0 62817 NULL
160234 +enable_so_coex_rx_win_size_mwifiex_adapter_62818 coex_rx_win_size mwifiex_adapter 0 62818 NULL
160235 +enable_so_wq_len_tx_ring_62826 wq_len tx_ring 0 62826 NULL
160236 +enable_so_gfs2_journaled_truncate_fndecl_62839 gfs2_journaled_truncate fndecl 3-2 62839 NULL
160237 +enable_so_ix2505v_write_fndecl_62840 ix2505v_write fndecl 3 62840 NULL
160238 +enable_so_calculate_node_totalpages_fndecl_62845 calculate_node_totalpages fndecl 2-3 62845 NULL
160239 +enable_so_fuse_read_fill_fndecl_62851 fuse_read_fill fndecl 4 62851 NULL
160240 +enable_so_cfs_cpt_table_alloc_fndecl_62852 cfs_cpt_table_alloc fndecl 1 62852 NULL
160241 +enable_so_func_num_vardecl_g_ffs_c_62856 func_num vardecl_g_ffs.c 0 62856 NULL
160242 +enable_so_max_register_regmap_62857 max_register regmap 0 62857 NULL
160243 +enable_so_height_tm6000_core_62864 height tm6000_core 0 62864 NULL
160244 +enable_so_ext2_max_size_fndecl_62871 ext2_max_size fndecl 1 62871 NULL
160245 +enable_so_i2c_hid_get_report_fndecl_62874 i2c_hid_get_report fndecl 5 62874 NULL
160246 +enable_so_xfs_dir3_leaf_read_fndecl_62878 xfs_dir3_leaf_read fndecl 3 62878 NULL
160247 +enable_so_ath6kl_set_assoc_req_ies_fndecl_62882 ath6kl_set_assoc_req_ies fndecl 3 62882 NULL
160248 +enable_so_create_kmalloc_cache_fndecl_62883 create_kmalloc_cache fndecl 2 62883 NULL
160249 +enable_so_valueblk_xfs_attr_inactive_list_62884 valueblk xfs_attr_inactive_list 0 62884 NULL
160250 +enable_so_data_sge_offset_mpt2_ioctl_command_62885 data_sge_offset mpt2_ioctl_command 0 62885 NULL
160251 +enable_so_tty_audit_add_data_fndecl_62886 tty_audit_add_data fndecl 3 62886 NULL
160252 +enable_so_arg2__cdrp_cmd_62906 arg2 _cdrp_cmd 0 62906 NULL
160253 +enable_so_length_uvc_buffer_62907 length uvc_buffer 0 62907 NULL
160254 +enable_so_n_subdevices_comedi_device_62914 n_subdevices comedi_device 0 62914 NULL
160255 +enable_so_elf_core_extra_phdrs_fndecl_62917 elf_core_extra_phdrs fndecl 0 62917 NULL
160256 +enable_so_out_size_ide_task_request_s_62924 out_size ide_task_request_s 0 62924 NULL
160257 +enable_so_uar_size_mthca_dev_lim_62925 uar_size mthca_dev_lim 0 62925 NULL
160258 +enable_so_uio_write_fndecl_62929 uio_write fndecl 3 62929 NULL
160259 +enable_so_teiup_create_fndecl_62930 teiup_create fndecl 3 62930 NULL nohasharray
160260 +enable_so_queue_size_srp_target_port_62930 queue_size srp_target_port 0 62930 &enable_so_teiup_create_fndecl_62930
160261 +enable_so_f2fs_acl_from_disk_fndecl_62937 f2fs_acl_from_disk fndecl 2 62937 NULL
160262 +enable_so_ath10k_p2p_calc_noa_ie_len_fndecl_62938 ath10k_p2p_calc_noa_ie_len fndecl 0 62938 NULL
160263 +enable_so_iso_callback_fndecl_62939 iso_callback fndecl 3 62939 NULL
160264 +enable_so_ovl_split_lowerdirs_fndecl_62941 ovl_split_lowerdirs fndecl 0 62941 NULL
160265 +enable_so_mtu_atmlec_config_msg_62946 mtu atmlec_config_msg 0 62946 NULL
160266 +enable_so_ax88178_change_mtu_fndecl_62947 ax88178_change_mtu fndecl 2 62947 NULL
160267 +enable_so_batadv_tt_tvlv_unicast_handler_v1_fndecl_62964 batadv_tt_tvlv_unicast_handler_v1 fndecl 5 62964 NULL
160268 +enable_so_adfs_get_block_fndecl_62966 adfs_get_block fndecl 2 62966 NULL
160269 +enable_so_compressed_size_async_extent_62968 compressed_size async_extent 0 62968 NULL nohasharray
160270 +enable_so_i_sblock_bfs_inode_62968 i_sblock bfs_inode 0 62968 &enable_so_compressed_size_async_extent_62968
160271 +enable_so_vmemmap_alloc_block_fndecl_62974 vmemmap_alloc_block fndecl 1 62974 NULL
160272 +enable_so_move_to_top_fndecl_62981 move_to_top fndecl 2-3 62981 NULL
160273 +enable_so_btrfs_copy_from_user_fndecl_62989 btrfs_copy_from_user fndecl 1-0-3 62989 NULL
160274 +enable_so_alloc_name_seq_62994 alloc name_seq 0 62994 NULL
160275 +enable_so_pagesize_flash_info_63006 pagesize flash_info 0 63006 NULL
160276 +enable_so_ieee80211_if_fmt_element_ttl_fndecl_63010 ieee80211_if_fmt_element_ttl fndecl 3 63010 NULL nohasharray
160277 +enable_so_cache_size_raw_regmap_63010 cache_size_raw regmap 0 63010 &enable_so_ieee80211_if_fmt_element_ttl_fndecl_63010
160278 +enable_so_get_rsb_struct_fndecl_63014 get_rsb_struct fndecl 3 63014 NULL
160279 +enable_so_packets_per_second_ua101_63022 packets_per_second ua101 0 63022 NULL
160280 +enable_so_gpr_get_fndecl_63026 gpr_get fndecl 3-4 63026 NULL
160281 +enable_so_rsi_sdio_host_intf_write_pkt_fndecl_63034 rsi_sdio_host_intf_write_pkt fndecl 3 63034 NULL
160282 +enable_so_display_width_vivid_dev_63040 display_width vivid_dev 0 63040 NULL
160283 +enable_so_sizeimage_deinterlace_q_data_63050 sizeimage deinterlace_q_data 0 63050 NULL
160284 +enable_so_atl1c_change_mtu_fndecl_63051 atl1c_change_mtu fndecl 2 63051 NULL
160285 +enable_so_p54_download_eeprom_fndecl_63057 p54_download_eeprom fndecl 4 63057 NULL
160286 +enable_so_q0_num_vecs_bna_rx_config_63058 q0_num_vecs bna_rx_config 0 63058 NULL
160287 +enable_so_read_flush_fndecl_63064 read_flush fndecl 3 63064 NULL
160288 +enable_so_if_bytes_xfs_ifork_63066 if_bytes xfs_ifork 0 63066 NULL
160289 +enable_so_pic_ioport_write_fndecl_63069 pic_ioport_write fndecl 3 63069 NULL
160290 +enable_so_status_tx_status_63078 status tx_status 0 63078 NULL
160291 +enable_so_width_saa7134_dev_63087 width saa7134_dev 0 63087 NULL nohasharray
160292 +enable_so_s_anchor_udf_sb_info_63087 s_anchor udf_sb_info 0 63087 &enable_so_width_saa7134_dev_63087
160293 +enable_so_index_svm_direct_access_msrs_63098 index svm_direct_access_msrs 0 63098 NULL nohasharray
160294 +enable_so_rd_page_count_rd_dev_63098 rd_page_count rd_dev 0 63098 &enable_so_index_svm_direct_access_msrs_63098
160295 +enable_so_get_registry_size_bnx2x_mcast_obj_63102 get_registry_size bnx2x_mcast_obj 0 63102 NULL
160296 +enable_so_drxdap_fasi_read_block_fndecl_63113 drxdap_fasi_read_block fndecl 3 63113 NULL
160297 +enable_so_ticket_len_rxkad_key_63114 ticket_len rxkad_key 0 63114 NULL
160298 +enable_so_reiserfs_get_dentry_fndecl_63118 reiserfs_get_dentry fndecl 2 63118 NULL
160299 +enable_so_uvc_video_decode_data_fndecl_63124 uvc_video_decode_data fndecl 4 63124 NULL
160300 +enable_so_elements_array_data_63130 elements array_data 0 63130 NULL
160301 +enable_so_prism2_sta_send_mgmt_fndecl_63135 prism2_sta_send_mgmt fndecl 5 63135 NULL
160302 +enable_so_peer_cookie_len_l2tp_session_63142 peer_cookie_len l2tp_session 0 63142 NULL
160303 +enable_so_running_status_length_usbmidi_in_port_63145 running_status_length usbmidi_in_port 0 63145 NULL
160304 +enable_so_vback_porch_videomode_63152 vback_porch videomode 0 63152 NULL nohasharray
160305 +enable_so_nid_nat_journal_entry_63152 nid nat_journal_entry 0 63152 &enable_so_vback_porch_videomode_63152
160306 +enable_so_obj_order_rbd_image_header_63156 obj_order rbd_image_header 0 63156 NULL
160307 +enable_so_reiserfs_get_blocks_direct_io_fndecl_63157 reiserfs_get_blocks_direct_io fndecl 2 63157 NULL
160308 +enable_so_dst_val_x86_instruction_info_63158 dst_val x86_instruction_info 0 63158 NULL
160309 +enable_so_get_pattern_len_ts_ops_63165 get_pattern_len ts_ops 0 63165 NULL
160310 +enable_so_nports_ahci_host_priv_63166 nports ahci_host_priv 0 63166 NULL
160311 +enable_so_nla_reserve_fndecl_63171 nla_reserve fndecl 3 63171 NULL
160312 +enable_so_vma_hugecache_offset_fndecl_63172 vma_hugecache_offset fndecl 0-3 63172 NULL
160313 +enable_so___clkdev_alloc_fndecl_63173 __clkdev_alloc fndecl 1 63173 NULL
160314 +enable_so_ulist_add_fndecl_63177 ulist_add fndecl 2 63177 NULL
160315 +enable_so_send_repeat_remove_fndecl_63179 send_repeat_remove fndecl 3 63179 NULL nohasharray
160316 +enable_so_scsi_command_size_fndecl_63179 scsi_command_size fndecl 0 63179 &enable_so_send_repeat_remove_fndecl_63179
160317 +enable_so_nr_to_scan_shrink_control_63181 nr_to_scan shrink_control 0 63181 NULL
160318 +enable_so_srpt_srq_size_vardecl_ib_srpt_c_63183 srpt_srq_size vardecl_ib_srpt.c 0 63183 NULL
160319 +enable_so_find_in_level_fndecl_63190 find_in_level fndecl 2-4 63190 NULL
160320 +enable_so_selfballoon_reserved_mb_vardecl_xen_selfballoon_c_63209 selfballoon_reserved_mb vardecl_xen-selfballoon.c 0 63209 NULL nohasharray
160321 +enable_so_lcd_lower_margin_atyfb_par_63209 lcd_lower_margin atyfb_par 0 63209 &enable_so_selfballoon_reserved_mb_vardecl_xen_selfballoon_c_63209
160322 +enable_so_emit_flags_fndecl_63221 emit_flags fndecl 3-4 63221 NULL
160323 +enable_so_write_flush_procfs_fndecl_63224 write_flush_procfs fndecl 3 63224 NULL
160324 +enable_so_ufs_alloccg_block_fndecl_63239 ufs_alloccg_block fndecl 3 63239 NULL
160325 +enable_so_mod_len_start_info_63244 mod_len start_info 0 63244 NULL
160326 +enable_so_ipw2100_set_tx_power_fndecl_63246 ipw2100_set_tx_power fndecl 2 63246 NULL
160327 +enable_so_ep_image_mts_desc_63258 ep_image mts_desc 0 63258 NULL
160328 +enable_so_cachefiles_daemon_write_fndecl_63260 cachefiles_daemon_write fndecl 3 63260 NULL
160329 +enable_so_pdu_write_u_fndecl_63261 pdu_write_u fndecl 3 63261 NULL nohasharray
160330 +enable_so_read_events_fndecl_63261 read_events fndecl 3 63261 &enable_so_pdu_write_u_fndecl_63261
160331 +enable_so_dvb_ca_en50221_io_write_fndecl_63262 dvb_ca_en50221_io_write fndecl 3 63262 NULL
160332 +enable_so_height_videobuf_buffer_63266 height videobuf_buffer 0 63266 NULL
160333 +enable_so__fc_frame_alloc_fndecl_63267 _fc_frame_alloc fndecl 1 63267 NULL
160334 +enable_so_rpc_malloc_fndecl_63270 rpc_malloc fndecl 2 63270 NULL
160335 +enable_so_m1_dpll_63274 m1 dpll 0 63274 NULL
160336 +enable_so_s_mb_last_start_ext4_sb_info_63283 s_mb_last_start ext4_sb_info 0 63283 NULL nohasharray
160337 +enable_so_sb_rsumino_xfs_sb_63283 sb_rsumino xfs_sb 0 63283 &enable_so_s_mb_last_start_ext4_sb_info_63283
160338 +enable_so_bit_width_acpi_generic_address_63286 bit_width acpi_generic_address 0 63286 NULL nohasharray
160339 +enable_so_num_counters_ebt_replace_63286 num_counters ebt_replace 0 63286 &enable_so_bit_width_acpi_generic_address_63286
160340 +enable_so_video_buffer_size_osd_info_63299 video_buffer_size osd_info 0 63299 NULL
160341 +enable_so_xfs_map_blocks_fndecl_63308 xfs_map_blocks fndecl 2 63308 NULL
160342 +enable_so_valuelen_jfs_ea_63309 valuelen jfs_ea 0 63309 NULL
160343 +enable_so_doorbell_start_offset_kgd2kfd_shared_resources_63332 doorbell_start_offset kgd2kfd_shared_resources 0 63332 NULL
160344 +enable_so_bulk_out_endpointAddress_usb_serial_port_63340 bulk_out_endpointAddress usb_serial_port 0 63340 NULL
160345 +enable_so_clipcount_out_vivid_dev_63343 clipcount_out vivid_dev 0 63343 NULL
160346 +enable_so_len_n_flags_iwl_rx_packet_63345 len_n_flags iwl_rx_packet 0 63345 NULL
160347 +enable_so_alloc_thread_groups_fndecl_63354 alloc_thread_groups fndecl 2 63354 NULL
160348 +enable_so_lbq_buf_size_rx_ring_63363 lbq_buf_size rx_ring 0 63363 NULL
160349 +enable_so_kmalloc_large_node_hook_fndecl_63376 kmalloc_large_node_hook fndecl 2 63376 NULL
160350 +enable_so_max_lun_rts51x_chip_63381 max_lun rts51x_chip 0 63381 NULL
160351 +enable_so_random_write_fndecl_63387 random_write fndecl 3 63387 NULL
160352 +enable_so_data_len_ubifs_inode_63396 data_len ubifs_inode 0 63396 NULL
160353 +enable_so_buflen_audit_rule_data_63397 buflen audit_rule_data 0 63397 NULL
160354 +enable_so_rate_n_flags_iwlagn_tx_resp_63401 rate_n_flags iwlagn_tx_resp 0 63401 NULL
160355 +enable_so_e820_end_pfn_fndecl_63402 e820_end_pfn fndecl 1 63402 NULL
160356 +enable_so_ext3_xattr_trusted_set_fndecl_63404 ext3_xattr_trusted_set fndecl 4 63404 NULL
160357 +enable_so_calgary_map_page_fndecl_63413 calgary_map_page fndecl 4 63413 NULL
160358 +enable_so_write_midi_fndecl_63421 write_midi fndecl 0-3 63421 NULL
160359 +enable_so_xfs_buf_set_empty_fndecl_63425 xfs_buf_set_empty fndecl 2 63425 NULL
160360 +enable_so_i2400m_tx_fndecl_63427 i2400m_tx fndecl 3-4 63427 NULL
160361 +enable_so_brcmf_sdio_download_firmware_fndecl_63429 brcmf_sdio_download_firmware fndecl 4 63429 NULL nohasharray
160362 +enable_so___alloc_alien_cache_fndecl_63429 __alloc_alien_cache fndecl 2 63429 &enable_so_brcmf_sdio_download_firmware_fndecl_63429
160363 +enable_so_ad_sd_read_reg_raw_fndecl_63430 ad_sd_read_reg_raw fndecl 3 63430 NULL nohasharray
160364 +enable_so_ocfs2_replace_clusters_fndecl_63430 ocfs2_replace_clusters fndecl 3-5 63430 &enable_so_ad_sd_read_reg_raw_fndecl_63430
160365 +enable_so_m_max_file_size_ceph_mdsmap_63449 m_max_file_size ceph_mdsmap 0 63449 NULL
160366 +enable_so_cmd_status_netdev_desc_63452 cmd_status netdev_desc 0 63452 NULL
160367 +enable_so_fuse_send_read_fndecl_63454 fuse_send_read fndecl 4 63454 NULL
160368 +enable_so_sysv_raw_inode_fndecl_63458 sysv_raw_inode fndecl 2 63458 NULL
160369 +enable_so_btrfs_drop_extent_cache_fndecl_63461 btrfs_drop_extent_cache fndecl 3-2 63461 NULL
160370 +enable_so_device_details_root_thin_disk_superblock_63476 device_details_root thin_disk_superblock 0 63476 NULL
160371 +enable_so___bm_find_next_fndecl_63479 __bm_find_next fndecl 2 63479 NULL nohasharray
160372 +enable_so_amradio_set_freq_fndecl_63479 amradio_set_freq fndecl 2 63479 &enable_so___bm_find_next_fndecl_63479
160373 +enable_so_sctp_setsockopt_active_key_fndecl_63480 sctp_setsockopt_active_key fndecl 3 63480 NULL
160374 +enable_so_gigaset_initcs_fndecl_63482 gigaset_initcs fndecl 2 63482 NULL nohasharray
160375 +enable_so_length_dw_amdgpu_cs_chunk_63482 length_dw amdgpu_cs_chunk 0 63482 &enable_so_gigaset_initcs_fndecl_63482
160376 +enable_so_find_last_bit_fndecl_63495 find_last_bit fndecl 0-2 63495 NULL
160377 +enable_so___pcpu_size_to_slot_fndecl_63500 __pcpu_size_to_slot fndecl 0 63500 NULL
160378 +enable_so_ufs_nfs_get_inode_fndecl_63508 ufs_nfs_get_inode fndecl 2 63508 NULL
160379 +enable_so_xfs_rtfree_range_fndecl_63511 xfs_rtfree_range fndecl 3-4 63511 NULL
160380 +enable_so_bNrChannels_uac_format_type_i_discrete_descriptor_63512 bNrChannels uac_format_type_i_discrete_descriptor 0 63512 NULL
160381 +enable_so_num_usb2_ports_xhci_hcd_63514 num_usb2_ports xhci_hcd 0 63514 NULL
160382 +enable_so_wIELength_uwb_rc_cmd_set_drp_ie_63528 wIELength uwb_rc_cmd_set_drp_ie 0 63528 NULL
160383 +enable_so_num_clips_drm_mode_fb_dirty_cmd_63540 num_clips drm_mode_fb_dirty_cmd 0 63540 NULL
160384 +enable_so___tty_buffer_request_room_fndecl_63543 __tty_buffer_request_room fndecl 2 63543 NULL
160385 +enable_so_hi_priority_depth_MPT2SAS_ADAPTER_63544 hi_priority_depth MPT2SAS_ADAPTER 0 63544 NULL
160386 +enable_so_snd_pcm_hw_param_value_max_fndecl_63547 snd_pcm_hw_param_value_max fndecl 0 63547 NULL
160387 +enable_so_spu_port_delay_if_spi_card_63548 spu_port_delay if_spi_card 0 63548 NULL
160388 +enable_so_tlv_data_size_user_element_63549 tlv_data_size user_element 0 63549 NULL
160389 +enable_so_word_size_ixgbe_eeprom_info_63556 word_size ixgbe_eeprom_info 0 63556 NULL
160390 +enable_so_multi_rmw_idx_wmi_63557 multi_rmw_idx wmi 0 63557 NULL
160391 +enable_so_tcp_sync_mss_fndecl_63561 tcp_sync_mss fndecl 2 63561 NULL
160392 +enable_so_gfn_to_hva_fndecl_63570 gfn_to_hva fndecl 2-0 63570 NULL
160393 +enable_so_find_highest_vector_fndecl_63571 find_highest_vector fndecl 0 63571 NULL nohasharray
160394 +enable_so_sctp_setsockopt_del_key_fndecl_63571 sctp_setsockopt_del_key fndecl 3 63571 &enable_so_find_highest_vector_fndecl_63571
160395 +enable_so_unmap_granularity_scsi_disk_63574 unmap_granularity scsi_disk 0 63574 NULL
160396 +enable_so_xfs_vm_readpages_fndecl_63575 xfs_vm_readpages fndecl 4 63575 NULL
160397 +enable_so_xfs_vm_write_failed_fndecl_63582 xfs_vm_write_failed fndecl 3 63582 NULL
160398 +enable_so_ide_raw_taskfile_fndecl_63584 ide_raw_taskfile fndecl 4 63584 NULL
160399 +enable_so_width_console_font_63590 width console_font 0 63590 NULL
160400 +enable_so_fbmem_viafb_par_63594 fbmem viafb_par 0 63594 NULL nohasharray
160401 +enable_so_ri_cno_nilfs_recovery_info_63594 ri_cno nilfs_recovery_info 0 63594 &enable_so_fbmem_viafb_par_63594
160402 +enable_so_srp_map_data_fndecl_63596 srp_map_data fndecl 0 63596 NULL
160403 +enable_so_size_dmaengine_unmap_pool_63599 size dmaengine_unmap_pool 0 63599 NULL nohasharray
160404 +enable_so_dbFree_fndecl_63599 dbFree fndecl 3-2 63599 &enable_so_size_dmaengine_unmap_pool_63599
160405 +enable_so_appl_ptr_snd_rawmidi_runtime_63609 appl_ptr snd_rawmidi_runtime 0 63609 NULL
160406 +enable_so_rx_mtu_p54_common_63619 rx_mtu p54_common 0 63619 NULL
160407 +enable_so_buf_len_mwifiex_sdio_mpa_rx_63636 buf_len mwifiex_sdio_mpa_rx 0 63636 NULL
160408 +enable_so_be_v_offset_pnfs_block_extent_63637 be_v_offset pnfs_block_extent 0 63637 NULL
160409 +enable_so_dm_region_hash_create_fndecl_63649 dm_region_hash_create fndecl 8-5 63649 NULL
160410 +enable_so_port_piocnt_ipath_portdata_63650 port_piocnt ipath_portdata 0 63650 NULL
160411 +enable_so_prev_rs_iwl_rate_info_63653 prev_rs iwl_rate_info 0 63653 NULL
160412 +enable_so_msnd_fifo_read_fndecl_63669 msnd_fifo_read fndecl 0 63669 NULL
160413 +enable_so_r_len_qib_qp_63672 r_len qib_qp 0 63672 NULL
160414 +enable_so_nr_map_e820map_63674 nr_map e820map 0 63674 NULL
160415 +enable_so_iova_get_pad_size_fndecl_63681 iova_get_pad_size fndecl 0 63681 NULL
160416 +enable_so_nfs_writepage_setup_fndecl_63682 nfs_writepage_setup fndecl 3 63682 NULL
160417 +enable_so_height_ssd1307fb_par_63688 height ssd1307fb_par 0 63688 NULL
160418 +enable_so___free_pages_bootmem_fndecl_63689 __free_pages_bootmem fndecl 2 63689 NULL
160419 +enable_so_obj_size_proto_63697 obj_size proto 0 63697 NULL
160420 +enable_so_gsm_data_alloc_fndecl_63702 gsm_data_alloc fndecl 3 63702 NULL
160421 +enable_so_spr_wm_latency_write_fndecl_63706 spr_wm_latency_write fndecl 3 63706 NULL
160422 +enable_so_real_trim_memory_fndecl_63709 real_trim_memory fndecl 1 63709 NULL
160423 +enable_so_index_dtsplit_63712 index dtsplit 0 63712 NULL nohasharray
160424 +enable_so_xfs_alloc_compute_aligned_fndecl_63712 xfs_alloc_compute_aligned fndecl 3-2 63712 &enable_so_index_dtsplit_63712
160425 +enable_so_kernel_recvmsg_fndecl_63713 kernel_recvmsg fndecl 0 63713 NULL
160426 +enable_so_btrfs_crc32c_fndecl_63719 btrfs_crc32c fndecl 0 63719 NULL
160427 +enable_so_omfs_readpages_fndecl_63721 omfs_readpages fndecl 4 63721 NULL
160428 +enable_so___simple_xattr_set_fndecl_63737 __simple_xattr_set fndecl 4 63737 NULL
160429 +enable_so_target_size_scsi_transport_template_63753 target_size scsi_transport_template 0 63753 NULL
160430 +enable_so_input_print_bitmap_fndecl_63755 input_print_bitmap fndecl 0 63755 NULL
160431 +enable_so_spidev_sync_read_fndecl_63757 spidev_sync_read fndecl 0 63757 NULL
160432 +enable_so_pool_allocate_fndecl_63759 pool_allocate fndecl 3 63759 NULL
160433 +enable_so_msix_count_skd_device_63760 msix_count skd_device 0 63760 NULL
160434 +enable_so_xfs_qm_dqalloc_fndecl_63762 xfs_qm_dqalloc fndecl 5 63762 NULL
160435 +enable_so_dss_feat_get_num_ovls_fndecl_63770 dss_feat_get_num_ovls fndecl 0 63770 NULL
160436 +enable_so_insn_size_kprobe_insn_cache_63777 insn_size kprobe_insn_cache 0 63777 NULL
160437 +enable_so___hwahc_op_set_gtk_fndecl_63781 __hwahc_op_set_gtk fndecl 4 63781 NULL
160438 +enable_so_alloc_trace_kprobe_fndecl_63786 alloc_trace_kprobe fndecl 6 63786 NULL
160439 +enable_so_order_pmcraid_sglist_63792 order pmcraid_sglist 0 63792 NULL nohasharray
160440 +enable_so__scif_recv_fndecl_63792 _scif_recv fndecl 3 63792 &enable_so_order_pmcraid_sglist_63792
160441 +enable_so_rs_sta_dbgfs_scale_table_write_fndecl_63794 rs_sta_dbgfs_scale_table_write fndecl 3 63794 NULL
160442 +enable_so_ioaccel_maxsg_ctlr_info_63798 ioaccel_maxsg ctlr_info 0 63798 NULL
160443 +enable_so_nouveau_ttm_tt_create_fndecl_63801 nouveau_ttm_tt_create fndecl 2 63801 NULL nohasharray
160444 +enable_so_nbds_max_vardecl_nbd_c_63801 nbds_max vardecl_nbd.c 0 63801 &enable_so_nouveau_ttm_tt_create_fndecl_63801
160445 +enable_so_acpi_ut_create_buffer_object_fndecl_63805 acpi_ut_create_buffer_object fndecl 1 63805 NULL
160446 +enable_so_dma_generic_alloc_coherent_fndecl_63827 dma_generic_alloc_coherent fndecl 2 63827 NULL
160447 +enable_so_compat_sys_sendfile_fndecl_63828 compat_sys_sendfile fndecl 4 63828 NULL
160448 +enable_so_p_end_nilfs_period_63833 p_end nilfs_period 0 63833 NULL
160449 +enable_so_iwl_mvm_scan_size_fndecl_63834 iwl_mvm_scan_size fndecl 0 63834 NULL
160450 +enable_so_flags_flat_binder_object_63836 flags flat_binder_object 0 63836 NULL
160451 +enable_so_dx_hack_hash_signed_fndecl_63847 dx_hack_hash_signed fndecl 0 63847 NULL nohasharray
160452 +enable_so_ext4_sync_file_fndecl_63847 ext4_sync_file fndecl 2 63847 &enable_so_dx_hack_hash_signed_fndecl_63847
160453 +enable_so_send_truncate_fndecl_63848 send_truncate fndecl 2 63848 NULL
160454 +enable_so_yskip_mt9t031_63853 yskip mt9t031 0 63853 NULL
160455 +enable_so_rx_data_size_sky2_port_63855 rx_data_size sky2_port 0 63855 NULL nohasharray
160456 +enable_so_submit_inquiry_fndecl_63855 submit_inquiry fndecl 3 63855 &enable_so_rx_data_size_sky2_port_63855
160457 +enable_so_addrlen_at25_data_63857 addrlen at25_data 0 63857 NULL
160458 +enable_so_da_height_logfs_je_anchor_63858 da_height logfs_je_anchor 0 63858 NULL
160459 +enable_so_num_pd_entries_i915_hw_ppgtt_63869 num_pd_entries i915_hw_ppgtt 0 63869 NULL
160460 +enable_so_out_phase_peeked_usb_stream_kernel_63871 out_phase_peeked usb_stream_kernel 0 63871 NULL
160461 +enable_so_ssid_len_ieee80211_if_ibss_63872 ssid_len ieee80211_if_ibss 0 63872 NULL nohasharray
160462 +enable_so_Read_hfc16_stable_fndecl_63872 Read_hfc16_stable fndecl 0 63872 &enable_so_ssid_len_ieee80211_if_ibss_63872
160463 +enable_so_xlvbd_alloc_gendisk_fndecl_63874 xlvbd_alloc_gendisk fndecl 4-5 63874 NULL
160464 +enable_so_rate_mwl8k_rxd_ap_63875 rate mwl8k_rxd_ap 0 63875 NULL
160465 +enable_so_irq_domain_add_hierarchy_fndecl_63883 irq_domain_add_hierarchy fndecl 3 63883 NULL
160466 +enable_so___btrfs_unlink_inode_fndecl_63889 __btrfs_unlink_inode fndecl 6 63889 NULL
160467 +enable_so_dw_dma_cyclic_prep_fndecl_63890 dw_dma_cyclic_prep fndecl 4-3 63890 NULL
160468 +enable_so_lmWriteRecord_fndecl_63896 lmWriteRecord fndecl 0 63896 NULL
160469 +enable_so_mmc_align_data_size_fndecl_63906 mmc_align_data_size fndecl 0-2 63906 NULL
160470 +enable_so_blk_ioctl_zeroout_fndecl_63907 blk_ioctl_zeroout fndecl 3-2 63907 NULL
160471 +enable_so_dbg_fixed_rate_iwl_lq_sta_63909 dbg_fixed_rate iwl_lq_sta 0 63909 NULL
160472 +enable_so_len_sock_fprog_kern_63914 len sock_fprog_kern 0 63914 NULL
160473 +enable_so_fw_stats_len_wl1271_stats_63915 fw_stats_len wl1271_stats 0 63915 NULL
160474 +enable_so_new_data_offset_md_rdev_63919 new_data_offset md_rdev 0 63919 NULL nohasharray
160475 +enable_so_align_nft_set_ext_type_63919 align nft_set_ext_type 0 63919 &enable_so_new_data_offset_md_rdev_63919
160476 +enable_so_nilfs_ifile_read_fndecl_63921 nilfs_ifile_read fndecl 3 63921 NULL
160477 +enable_so_start_btrfs_ioctl_defrag_range_args_63924 start btrfs_ioctl_defrag_range_args 0 63924 NULL
160478 +enable_so_efx_change_mtu_fndecl_63926 efx_change_mtu fndecl 2 63926 NULL
160479 +enable_so_ro_maxpages_rpcrdma_memreg_ops_63937 ro_maxpages rpcrdma_memreg_ops 0 63937 NULL
160480 +enable_so_query_dv_timings_size_vivid_dev_63943 query_dv_timings_size vivid_dev 0 63943 NULL
160481 +enable_so_get_znodes_to_commit_fndecl_63946 get_znodes_to_commit fndecl 0 63946 NULL nohasharray
160482 +enable_so_hdr_dwords_qib_verbs_txreq_63946 hdr_dwords qib_verbs_txreq 0 63946 &enable_so_get_znodes_to_commit_fndecl_63946
160483 +enable_so_pvr2_send_request_fndecl_63959 pvr2_send_request fndecl 3-5 63959 NULL
160484 +enable_so_write_file_beacon_fndecl_63962 write_file_beacon fndecl 3 63962 NULL
160485 +enable_so_len_wm_coeff_ctl_63967 len wm_coeff_ctl 0 63967 NULL
160486 +enable_so_pla_ocp_read_fndecl_63976 pla_ocp_read fndecl 3 63976 NULL
160487 +enable_so_bt_ep_bcm5974_config_63978 bt_ep bcm5974_config 0 63978 NULL
160488 +enable_so_pos_pagemapread_63988 pos pagemapread 0 63988 NULL
160489 +enable_so_befs_iget_fndecl_63989 befs_iget fndecl 2 63989 NULL
160490 +enable_so_max_lba_sm_ftl_63992 max_lba sm_ftl 0 63992 NULL
160491 +enable_so_virtio16_to_cpu_fndecl_63994 virtio16_to_cpu fndecl 0 63994 NULL
160492 +enable_so_subctxt_qib_filedata_63995 subctxt qib_filedata 0 63995 NULL
160493 +enable_so_iscsi_conn_send_pdu_fndecl_64002 iscsi_conn_send_pdu fndecl 4 64002 NULL
160494 +enable_so_pvr2_send_request_ex_fndecl_64004 pvr2_send_request_ex fndecl 5-7 64004 NULL
160495 +enable_so_ndescs_clk_corediv_soc_desc_64005 ndescs clk_corediv_soc_desc 0 64005 NULL
160496 +enable_so_field_count_audit_krule_64007 field_count audit_krule 0 64007 NULL
160497 +enable_so_wBlocks_usb_rpipe_descriptor_64014 wBlocks usb_rpipe_descriptor 0 64014 NULL
160498 +enable_so_ext4_orphan_get_fndecl_64015 ext4_orphan_get fndecl 2 64015 NULL
160499 +enable_so_n_sectors_flash_info_64017 n_sectors flash_info 0 64017 NULL
160500 +enable_so_dma_drain_size_request_queue_64023 dma_drain_size request_queue 0 64023 NULL
160501 +enable_so_extAlloc_fndecl_64026 extAlloc fndecl 3 64026 NULL
160502 +enable_so_fw_device_op_compat_ioctl_fndecl_64039 fw_device_op_compat_ioctl fndecl 2 64039 NULL
160503 +enable_so_kxtj9_i2c_read_fndecl_64041 kxtj9_i2c_read fndecl 4 64041 NULL
160504 +enable_so_ieee80211_request_ibss_scan_fndecl_64043 ieee80211_request_ibss_scan fndecl 3 64043 NULL
160505 +enable_so_drm_ioctl_fndecl_64046 drm_ioctl fndecl 2 64046 NULL
160506 +enable_so_devs_increment_btrfs_raid_attr_64050 devs_increment btrfs_raid_attr 0 64050 NULL
160507 +enable_so_ntfs_attr_extend_allocation_fndecl_64063 ntfs_attr_extend_allocation fndecl 2 64063 NULL
160508 +enable_so_bnad_mtu_set_fndecl_64066 bnad_mtu_set fndecl 2 64066 NULL
160509 +enable_so_dma_size_cx88_audio_dev_64082 dma_size cx88_audio_dev 0 64082 NULL
160510 +enable_so_xfs_iomap_eof_prealloc_initial_size_fndecl_64085 xfs_iomap_eof_prealloc_initial_size fndecl 3 64085 NULL
160511 +enable_so_set_arg_fndecl_64091 set_arg fndecl 3 64091 NULL
160512 +enable_so_s_end_bfs_super_block_64092 s_end bfs_super_block 0 64092 NULL
160513 +enable_so_act_len_htc_packet_64101 act_len htc_packet 0 64101 NULL
160514 +enable_so_j_first_unflushed_offset_reiserfs_journal_header_64107 j_first_unflushed_offset reiserfs_journal_header 0 64107 NULL
160515 +enable_so_nvme_trans_unit_serial_page_fndecl_64108 nvme_trans_unit_serial_page fndecl 4 64108 NULL
160516 +enable_so_btmrvl_fwdump_write_fndecl_64113 btmrvl_fwdump_write fndecl 3 64113 NULL
160517 +enable_so_amdgpu_bo_set_metadata_fndecl_64120 amdgpu_bo_set_metadata fndecl 3 64120 NULL
160518 +enable_so_gen_pool_first_fit_order_align_fndecl_64124 gen_pool_first_fit_order_align fndecl 4 64124 NULL
160519 +enable_so_remove_extent_ref_fndecl_64131 remove_extent_ref fndecl 3-4-5-2 64131 NULL
160520 +enable_so_gru_alloc_locked_gts_fndecl_64132 gru_alloc_locked_gts fndecl 1 64132 NULL
160521 +enable_so_alx_change_mtu_fndecl_64137 alx_change_mtu fndecl 2 64137 NULL
160522 +enable_so_ieee80211_tdls_mgmt_teardown_fndecl_64138 ieee80211_tdls_mgmt_teardown fndecl 10 64138 NULL
160523 +enable_so_hd_end_request_fndecl_64139 hd_end_request fndecl 2 64139 NULL
160524 +enable_so_pskb_expand_head_fndecl_64146 pskb_expand_head fndecl 2 64146 NULL
160525 +enable_so_xpc_kmalloc_cacheline_aligned_fndecl_64156 xpc_kmalloc_cacheline_aligned fndecl 1 64156 NULL
160526 +enable_so_btrfs_readpage_end_io_hook_fndecl_64160 btrfs_readpage_end_io_hook fndecl 4-5 64160 NULL
160527 +enable_so_drbd_header_size_fndecl_64163 drbd_header_size fndecl 0 64163 NULL
160528 +enable_so__rtl_rc_rate_set_series_fndecl_64170 _rtl_rc_rate_set_series fndecl 6-5 64170 NULL nohasharray
160529 +enable_so_ext4_get_stripe_size_fndecl_64170 ext4_get_stripe_size fndecl 0 64170 &enable_so__rtl_rc_rate_set_series_fndecl_64170
160530 +enable_so_sctp_getsockopt_maxburst_fndecl_64174 sctp_getsockopt_maxburst fndecl 2-0 64174 NULL
160531 +enable_so_xfs_trans_log_efd_extent_fndecl_64176 xfs_trans_log_efd_extent fndecl 3-4 64176 NULL
160532 +enable_so_max_fcoe_conn_cnic_dev_64181 max_fcoe_conn cnic_dev 0 64181 NULL
160533 +enable_so_phys_pcm_format_data_64188 phys pcm_format_data 0 64188 NULL
160534 +enable_so_out___kfifo_64192 out __kfifo 0 64192 NULL nohasharray
160535 +enable_so_bio_size_ok_fndecl_64192 bio_size_ok fndecl 3 64192 &enable_so_out___kfifo_64192
160536 +enable_so_sys_sethostname_fndecl_64193 sys_sethostname fndecl 2 64193 NULL
160537 +enable_so_bulk_out_endpointAddr_usb_ftdi_64197 bulk_out_endpointAddr usb_ftdi 0 64197 NULL
160538 +enable_so_contact_threshold_mms114_platform_data_64198 contact_threshold mms114_platform_data 0 64198 NULL
160539 +enable_so_base_address_dmar_rmrr_unit_64199 base_address dmar_rmrr_unit 0 64199 NULL
160540 +enable_so_st_set_options_fndecl_64214 st_set_options fndecl 2 64214 NULL
160541 +enable_so_outbuf_dma_usbhid_device_64218 outbuf_dma usbhid_device 0 64218 NULL
160542 +enable_so_recover_orphan_inode_fndecl_64220 recover_orphan_inode fndecl 2 64220 NULL
160543 +enable_so_bNbrPorts_usb_hub_descriptor_64245 bNbrPorts usb_hub_descriptor 0 64245 NULL
160544 +enable_so_compat_udpv6_setsockopt_fndecl_64246 compat_udpv6_setsockopt fndecl 5 64246 NULL
160545 +enable_so_adf4350_tune_r_cnt_fndecl_64249 adf4350_tune_r_cnt fndecl 2-0 64249 NULL
160546 +enable_so_nfs_idmap_get_desc_fndecl_64253 nfs_idmap_get_desc fndecl 2-4 64253 NULL nohasharray
160547 +enable_so_rtw_os_xmit_resource_alloc_fndecl_64253 rtw_os_xmit_resource_alloc fndecl 3 64253 &enable_so_nfs_idmap_get_desc_fndecl_64253
160548 +enable_so_ccid_hc_rx_obj_size_ccid_operations_64257 ccid_hc_rx_obj_size ccid_operations 0 64257 NULL
160549 +enable_so_num_entries_wmi_target_roam_tbl_64263 num_entries wmi_target_roam_tbl 0 64263 NULL
160550 +enable_so_kvm_write_wall_clock_fndecl_64267 kvm_write_wall_clock fndecl 2 64267 NULL
160551 +enable_so_smk_write_netlbladdr_fndecl_64270 smk_write_netlbladdr fndecl 3 64270 NULL
160552 +enable_so_getxattr_cb_ceph_vxattr_64271 getxattr_cb ceph_vxattr 0 64271 NULL
160553 +enable_so_dm_tm_read_lock_fndecl_64272 dm_tm_read_lock fndecl 2 64272 NULL
160554 +enable_so_dx_hack_hash_unsigned_fndecl_64277 dx_hack_hash_unsigned fndecl 0 64277 NULL
160555 +enable_so_t_prot_nents_se_cmd_64282 t_prot_nents se_cmd 0 64282 NULL
160556 +enable_so_snd_pcm_oss_set_subdivide1_fndecl_64283 snd_pcm_oss_set_subdivide1 fndecl 2 64283 NULL
160557 +enable_so_SyS_mincore_fndecl_64284 SyS_mincore fndecl 1-2 64284 NULL
160558 +enable_so_ath6kl_wmi_proc_events_vif_fndecl_64294 ath6kl_wmi_proc_events_vif fndecl 5 64294 NULL
160559 +enable_so_num_bds_table_bd_list_64306 num_bds_table bd_list 0 64306 NULL
160560 +enable_so_vfp_ast_vbios_enhtable_64307 vfp ast_vbios_enhtable 0 64307 NULL
160561 +enable_so_rd_out_oz_serial_ctx_64309 rd_out oz_serial_ctx 0 64309 NULL
160562 +enable_so_snd_emux_create_port_fndecl_64310 snd_emux_create_port fndecl 3 64310 NULL
160563 +enable_so_cw_putcs_fndecl_64311 cw_putcs fndecl 4 64311 NULL
160564 +enable_so_inode_add_bytes_fndecl_64331 inode_add_bytes fndecl 2 64331 NULL
160565 +enable_so_hs_descs_count_ffs_data_64332 hs_descs_count ffs_data 0 64332 NULL
160566 +enable_so_iwl_print_event_log_fndecl_64341 iwl_print_event_log fndecl 5-0-7 64341 NULL nohasharray
160567 +enable_so_tx_padding_usbatm_driver_64341 tx_padding usbatm_driver 0 64341 &enable_so_iwl_print_event_log_fndecl_64341
160568 +enable_so_vif_data_size_ieee80211_hw_64342 vif_data_size ieee80211_hw 0 64342 NULL
160569 +enable_so_part_start_hfsplus_sb_info_64347 part_start hfsplus_sb_info 0 64347 NULL
160570 +enable_so_opcount_compat_xfs_fsop_attrmulti_handlereq_64355 opcount compat_xfs_fsop_attrmulti_handlereq 0 64355 NULL
160571 +enable_so_logfs_truncate_fndecl_64356 logfs_truncate fndecl 2 64356 NULL
160572 +enable_so_cur_tx_pos_tegra_spi_data_64362 cur_tx_pos tegra_spi_data 0 64362 NULL
160573 +enable_so_isofs_get_blocks_fndecl_64368 isofs_get_blocks fndecl 2 64368 NULL
160574 +enable_so_oom_score_adj_write_fndecl_64369 oom_score_adj_write fndecl 3 64369 NULL
160575 +enable_so_hdr_len_ib_mac_iocb_rsp_64379 hdr_len ib_mac_iocb_rsp 0 64379 NULL
160576 +enable_so_br_mdb_rehash_fndecl_64384 br_mdb_rehash fndecl 2 64384 NULL
160577 +enable_so_endio_readpage_release_extent_fndecl_64387 endio_readpage_release_extent fndecl 3-2 64387 NULL
160578 +enable_so_mem_kexec_segment_64393 mem kexec_segment 0 64393 NULL
160579 +enable_so__regmap_raw_write_fndecl_64399 _regmap_raw_write fndecl 2-4 64399 NULL
160580 +enable_so_sys_move_pages_fndecl_64401 sys_move_pages fndecl 2 64401 NULL
160581 +enable_so_ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout_fndecl_64408 ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout fndecl 3 64408 NULL
160582 +enable_so___get_user_pages_unlocked_fndecl_64409 __get_user_pages_unlocked fndecl 3 64409 NULL
160583 +enable_so_iommu_tbl_range_alloc_fndecl_64413 iommu_tbl_range_alloc fndecl 3-6 64413 NULL
160584 +enable_so_cdc_ncm_max_dgram_size_fndecl_64415 cdc_ncm_max_dgram_size fndecl 0 64415 NULL
160585 +enable_so_l2tp_xmit_skb_fndecl_64419 l2tp_xmit_skb fndecl 3 64419 NULL
160586 +enable_so_head_len_icmp_bxm_64424 head_len icmp_bxm 0 64424 NULL
160587 +enable_so_nfs4_new_slot_fndecl_64436 nfs4_new_slot fndecl 2 64436 NULL
160588 +enable_so_index_v4l2_frmivalenum_64442 index v4l2_frmivalenum 0 64442 NULL
160589 +enable_so_bLength_uvc_control_endpoint_descriptor_64456 bLength uvc_control_endpoint_descriptor 0 64456 NULL
160590 +enable_so_jpg_size_s2255_vc_64457 jpg_size s2255_vc 0 64457 NULL
160591 +enable_so_num_ch_st_sensor_settings_64459 num_ch st_sensor_settings 0 64459 NULL nohasharray
160592 +enable_so_i_file_acl_ext3_inode_info_64459 i_file_acl ext3_inode_info 0 64459 &enable_so_num_ch_st_sensor_settings_64459
160593 +enable_so___ocfs2_decrease_refcount_fndecl_64462 __ocfs2_decrease_refcount fndecl 5-4 64462 NULL
160594 +enable_so_new_node_page_fndecl_64464 new_node_page fndecl 2 64464 NULL
160595 +enable_so_btrfs_grow_device_fndecl_64468 btrfs_grow_device fndecl 3 64468 NULL
160596 +enable_so_bg_inode_bitmap_ext3_group_desc_64471 bg_inode_bitmap ext3_group_desc 0 64471 NULL
160597 +enable_so_nilfs_btnode_submit_block_fndecl_64473 nilfs_btnode_submit_block fndecl 3-2 64473 NULL
160598 +enable_so_vb2_read_fndecl_64476 vb2_read fndecl 3 64476 NULL
160599 +enable_so_nr_dirtied_pause_task_struct_64480 nr_dirtied_pause task_struct 0 64480 NULL nohasharray
160600 +enable_so_pid_vnr_fndecl_64480 pid_vnr fndecl 0 64480 &enable_so_nr_dirtied_pause_task_struct_64480
160601 +enable_so_set_aoe_iflist_fndecl_64482 set_aoe_iflist fndecl 2 64482 NULL
160602 +enable_so_ax25_setsockopt_fndecl_64487 ax25_setsockopt fndecl 5 64487 NULL
160603 +enable_so_vhost_hlen_vhost_net_virtqueue_64488 vhost_hlen vhost_net_virtqueue 0 64488 NULL
160604 +enable_so_size_exynos_drm_gem_buf_64490 size exynos_drm_gem_buf 0 64490 NULL
160605 +enable_so_val_reginit_item_64493 val reginit_item 0 64493 NULL
160606 +enable_so___FIXADDR_TOP_vardecl_64494 __FIXADDR_TOP vardecl 0 64494 NULL
160607 +enable_so_ddr_end_intel_sst_drv_64496 ddr_end intel_sst_drv 0 64496 NULL
160608 +enable_so_read_status_fndecl_64497 read_status fndecl 0 64497 NULL
160609 +enable_so_ext_ramdisk_size_boot_params_64498 ext_ramdisk_size boot_params 0 64498 NULL
160610 +enable_so_iwl_mvm_coex_dump_mbox_old_fndecl_64500 iwl_mvm_coex_dump_mbox_old fndecl 0-3-4 64500 NULL
160611 +enable_so_ds3000_writeFW_fndecl_64503 ds3000_writeFW fndecl 0 64503 NULL
160612 +enable_so_fc_plogi_get_maxframe_fndecl_64511 fc_plogi_get_maxframe fndecl 0 64511 NULL
160613 +enable_so_hdr_len_st_proto_s_64523 hdr_len st_proto_s 0 64523 NULL
160614 +enable_so_tun_alloc_skb_fndecl_64531 tun_alloc_skb fndecl 2-4-3 64531 NULL
160615 +enable_so_cfg80211_process_disassoc_fndecl_64540 cfg80211_process_disassoc fndecl 3 64540 NULL
160616 +enable_so_ath10k_p2p_noa_ie_len_compute_fndecl_64548 ath10k_p2p_noa_ie_len_compute fndecl 0 64548 NULL
160617 +enable_so_minix_V1_raw_inode_fndecl_64554 minix_V1_raw_inode fndecl 2 64554 NULL
160618 +enable_so_num_channels_sh_tmu_device_64556 num_channels sh_tmu_device 0 64556 NULL
160619 +enable_so_xfs_zero_last_block_fndecl_64560 xfs_zero_last_block fndecl 3 64560 NULL nohasharray
160620 +enable_so_valid_tty_audit_buf_64560 valid tty_audit_buf 0 64560 &enable_so_xfs_zero_last_block_fndecl_64560
160621 +enable_so_stv090x_write_regs_fndecl_64562 stv090x_write_regs fndecl 4 64562 NULL
160622 +enable_so_hiddev_compat_ioctl_fndecl_64564 hiddev_compat_ioctl fndecl 2 64564 NULL
160623 +enable_so_blockshift_nand_flash_dev_64570 blockshift nand_flash_dev 0 64570 NULL
160624 +enable_so_offset_seg_buf_64571 offset seg_buf 0 64571 NULL
160625 +enable_so___alloc_and_insert_iova_range_fndecl_64572 __alloc_and_insert_iova_range fndecl 2-3 64572 NULL nohasharray
160626 +enable_so___fprog_create_fndecl_64572 __fprog_create fndecl 2 64572 &enable_so___alloc_and_insert_iova_range_fndecl_64572
160627 +enable_so_mirrors_p1_ore_layout_64575 mirrors_p1 ore_layout 0 64575 NULL nohasharray
160628 +enable_so_cdc_ncm_align_tail_fndecl_64575 cdc_ncm_align_tail fndecl 4-3-2 64575 &enable_so_mirrors_p1_ore_layout_64575 nohasharray
160629 +enable_so_erst_read_fndecl_64575 erst_read fndecl 0-1 64575 &enable_so_cdc_ncm_align_tail_fndecl_64575
160630 +enable_so_hfsplus_iget_fndecl_64576 hfsplus_iget fndecl 2 64576 NULL
160631 +enable_so_len_fuse_copy_state_64585 len fuse_copy_state 0 64585 NULL nohasharray
160632 +enable_so_long_len_fat_ioctl_filldir_callback_64585 long_len fat_ioctl_filldir_callback 0 64585 &enable_so_len_fuse_copy_state_64585
160633 +enable_so_blocks_per_seg_f2fs_sb_info_64587 blocks_per_seg f2fs_sb_info 0 64587 NULL
160634 +enable_so_udl_gem_create_fndecl_64590 udl_gem_create fndecl 3 64590 NULL
160635 +enable_so_alloc_context_fndecl_64592 alloc_context fndecl 2-1 64592 NULL
160636 +enable_so_isp1362_urb_dequeue_fndecl_64595 isp1362_urb_dequeue fndecl 3 64595 NULL
160637 +enable_so_of_count_phandle_with_args_fndecl_64600 of_count_phandle_with_args fndecl 0 64600 NULL nohasharray
160638 +enable_so_nr_tlb_entries_omap_iommu_64600 nr_tlb_entries omap_iommu 0 64600 &enable_so_of_count_phandle_with_args_fndecl_64600
160639 +enable_so_logical_offset_btrfs_ioctl_same_extent_info_64608 logical_offset btrfs_ioctl_same_extent_info 0 64608 NULL
160640 +enable_so_gpr_set_fndecl_64611 gpr_set fndecl 3-4 64611 NULL
160641 +enable_so_rfc4106_set_authsize_fndecl_64616 rfc4106_set_authsize fndecl 2 64616 NULL
160642 +enable_so_s_gdb_count_ext4_sb_info_64617 s_gdb_count ext4_sb_info 0 64617 NULL
160643 +enable_so_o2hb_setup_one_bio_fndecl_64622 o2hb_setup_one_bio fndecl 4 64622 NULL
160644 +enable_so_xfs_iext_remove_indirect_fndecl_64624 xfs_iext_remove_indirect fndecl 3 64624 NULL
160645 +enable_so_s_inodes_per_group_ext3_sb_info_64627 s_inodes_per_group ext3_sb_info 0 64627 NULL
160646 +enable_so_bsg_job_done_fndecl_64640 bsg_job_done fndecl 3 64640 NULL
160647 +enable_so_netlink_alloc_large_skb_fndecl_64652 netlink_alloc_large_skb fndecl 1 64652 NULL
160648 +enable_so_kmp_init_fndecl_64654 kmp_init fndecl 2 64654 NULL
160649 +enable_so_num_allowed_vlans_qlcnic_sriov_64661 num_allowed_vlans qlcnic_sriov 0 64661 NULL
160650 +enable_so_cnic_init_id_tbl_fndecl_64665 cnic_init_id_tbl fndecl 2 64665 NULL
160651 +enable_so_usnic_ib_reg_mr_fndecl_64668 usnic_ib_reg_mr fndecl 2 64668 NULL
160652 +enable_so_sys_flistxattr_fndecl_64684 sys_flistxattr fndecl 3 64684 NULL
160653 +enable_so_num_fields_ima_template_desc_64688 num_fields ima_template_desc 0 64688 NULL
160654 +enable_so_tkip_cm_active_orinoco_private_64689 tkip_cm_active orinoco_private 0 64689 NULL
160655 +enable_so_srp_sg_tablesize_vardecl_ib_srp_c_64692 srp_sg_tablesize vardecl_ib_srp.c 0 64692 NULL
160656 +enable_so_size_cramfs_inode_64704 size cramfs_inode 0 64704 NULL
160657 +enable_so_alloc_bytenr_btrfs_root_64709 alloc_bytenr btrfs_root 0 64709 NULL
160658 +enable_so_isdn_ppp_fill_rq_fndecl_64711 isdn_ppp_fill_rq fndecl 2 64711 NULL
160659 +enable_so_base_cmdline_vardecl_dma_contiguous_c_64713 base_cmdline vardecl_dma-contiguous.c 0 64713 NULL
160660 +enable_so_rcount_x25_asy_64715 rcount x25_asy 0 64715 NULL
160661 +enable_so_width_drm_framebuffer_64716 width drm_framebuffer 0 64716 NULL
160662 +enable_so_spc_modesense_long_blockdesc_fndecl_64717 spc_modesense_long_blockdesc fndecl 0 64717 NULL
160663 +enable_so_vs_bsize_vxfs_sb_64718 vs_bsize vxfs_sb 0 64718 NULL
160664 +enable_so_size_host_cmd_ds_command_64722 size host_cmd_ds_command 0 64722 NULL
160665 +enable_so_xfs_iext_add_fndecl_64733 xfs_iext_add fndecl 3 64733 NULL
160666 +enable_so_last_mgmt_tx_frame_len_wmi_64739 last_mgmt_tx_frame_len wmi 0 64739 NULL
160667 +enable_so_se_io_cb_fndecl_64742 se_io_cb fndecl 3 64742 NULL
160668 +enable_so_net_frag_header_len_inet_connection_sock_af_ops_64745 net_frag_header_len inet_connection_sock_af_ops 0 64745 NULL
160669 +enable_so_layout_leb_in_gaps_fndecl_64749 layout_leb_in_gaps fndecl 0 64749 NULL
160670 +enable_so_pcpu_build_alloc_info_fndecl_64752 pcpu_build_alloc_info fndecl 3-2-1 64752 NULL
160671 +enable_so_create_pid_cachep_fndecl_64753 create_pid_cachep fndecl 1 64753 NULL
160672 +enable_so_ocfs2_fill_initial_dirents_fndecl_64755 ocfs2_fill_initial_dirents fndecl 4 64755 NULL nohasharray
160673 +enable_so_iio_device_alloc_fndecl_64755 iio_device_alloc fndecl 1 64755 &enable_so_ocfs2_fill_initial_dirents_fndecl_64755
160674 +enable_so_datasz_memelfnote_64760 datasz memelfnote 0 64760 NULL
160675 +enable_so_jfs_get_block_fndecl_64772 jfs_get_block fndecl 2 64772 NULL
160676 +enable_so_at24_eeprom_write_fndecl_64775 at24_eeprom_write fndecl 3-0-4 64775 NULL
160677 +enable_so_tun_hlen_ip_tunnel_64791 tun_hlen ip_tunnel 0 64791 NULL
160678 +enable_so_c2_mq_req_init_fndecl_64795 c2_mq_req_init fndecl 4 64795 NULL
160679 +enable_so__update_journal_header_block_fndecl_64803 _update_journal_header_block fndecl 2 64803 NULL nohasharray
160680 +enable_so_fr_max_payload_fcoe_rcv_info_64803 fr_max_payload fcoe_rcv_info 0 64803 &enable_so__update_journal_header_block_fndecl_64803
160681 +enable_so_pmsg_size_ramoops_context_64804 pmsg_size ramoops_context 0 64804 NULL
160682 +enable_so_tx_headroom_nci_dev_64805 tx_headroom nci_dev 0 64805 NULL
160683 +enable_so_fpa_get_fndecl_64809 fpa_get fndecl 3-4 64809 NULL
160684 +enable_so_atr_csum_cm4000_dev_64828 atr_csum cm4000_dev 0 64828 NULL
160685 +enable_so_lprocfs_write_frac_helper_fndecl_64841 lprocfs_write_frac_helper fndecl 2 64841 NULL
160686 +enable_so_edma_prep_dma_cyclic_fndecl_64842 edma_prep_dma_cyclic fndecl 4-3 64842 NULL
160687 +enable_so_iov_iter_truncate_fndecl_64844 iov_iter_truncate fndecl 2 64844 NULL
160688 +enable_so_smsc75xx_change_mtu_fndecl_64845 smsc75xx_change_mtu fndecl 2 64845 NULL nohasharray
160689 +enable_so_ngpio_gpio_chip_64845 ngpio gpio_chip 0 64845 &enable_so_smsc75xx_change_mtu_fndecl_64845
160690 +enable_so__req_append_segment_fndecl_64852 _req_append_segment fndecl 2 64852 NULL nohasharray
160691 +enable_so_tool_dbfn_write_fndecl_64852 tool_dbfn_write fndecl 3 64852 &enable_so__req_append_segment_fndecl_64852
160692 +enable_so_log_max_len_client_hdr_64853 log_max_len client_hdr 0 64853 NULL
160693 +enable_so_rh_inc_fndecl_64864 rh_inc fndecl 2 64864 NULL
160694 +enable_so_raw_recvmsg_fndecl_64866 raw_recvmsg fndecl 3 64866 NULL nohasharray
160695 +enable_so_len_discard_entry_64866 len discard_entry 0 64866 &enable_so_raw_recvmsg_fndecl_64866
160696 +enable_so_p_linux_binprm_64868 p linux_binprm 0 64868 NULL
160697 +enable_so_logfs_read_meta_inode_fndecl_64880 logfs_read_meta_inode fndecl 2 64880 NULL
160698 +enable_so_snd_pcm_hw_param_max_fndecl_64887 snd_pcm_hw_param_max fndecl 4 64887 NULL nohasharray
160699 +enable_so_qs_in_channels_hdspm_64887 qs_in_channels hdspm 0 64887 &enable_so_snd_pcm_hw_param_max_fndecl_64887 nohasharray
160700 +enable_so_xbfi_blockcount_xfs_bmap_free_item_64887 xbfi_blockcount xfs_bmap_free_item 0 64887 &enable_so_qs_in_channels_hdspm_64887
160701 +enable_so_ks8995_write_fndecl_64889 ks8995_write fndecl 4 64889 NULL nohasharray
160702 +enable_so_count_ioctl_gntalloc_alloc_gref_64889 count ioctl_gntalloc_alloc_gref 0 64889 &enable_so_ks8995_write_fndecl_64889
160703 +enable_so_reserve_sfa_size_fndecl_64893 reserve_sfa_size fndecl 2 64893 NULL
160704 +enable_so_f_tuner_msi001_64894 f_tuner msi001 0 64894 NULL
160705 +enable_so_mpeglinesize_vardecl_cx23885_417_c_64898 mpeglinesize vardecl_cx23885-417.c 0 64898 NULL
160706 +enable_so_f_audio_buffer_alloc_fndecl_64901 f_audio_buffer_alloc fndecl 1 64901 NULL
160707 +enable_so_unuse_pte_range_fndecl_64903 unuse_pte_range fndecl 3 64903 NULL
160708 +enable_so_maxctl_brcmf_bus_64907 maxctl brcmf_bus 0 64907 NULL
160709 +enable_so_data_size_event_reader_64909 data_size event_reader 0 64909 NULL
160710 +enable_so_nmsgs_i2c_rdwr_ioctl_data_64911 nmsgs i2c_rdwr_ioctl_data 0 64911 NULL
160711 +enable_so_next_block_for_io_dio_submit_64914 next_block_for_io dio_submit 0 64914 NULL
160712 +enable_so_rd_size_uhid_create_req_64916 rd_size uhid_create_req 0 64916 NULL
160713 +enable_so_dma_attach_fndecl_64917 dma_attach fndecl 10-8-7-5-6 64917 NULL
160714 +enable_so_nvme_map_user_pages_fndecl_64918 nvme_map_user_pages fndecl 3-4 64918 NULL nohasharray
160715 +enable_so_roccat_read_fndecl_64918 roccat_read fndecl 3 64918 &enable_so_nvme_map_user_pages_fndecl_64918
160716 +enable_so_nl80211_send_mlme_event_fndecl_64920 nl80211_send_mlme_event fndecl 4 64920 NULL
160717 +enable_so_ath10k_wmi_tlv_op_gen_bcn_tmpl_fndecl_64938 ath10k_wmi_tlv_op_gen_bcn_tmpl fndecl 8 64938 NULL
160718 +enable_so_BlockCount_DAC960_Command_64957 BlockCount DAC960_Command 0 64957 NULL
160719 +enable_so_zap_bt_entries_fndecl_64959 zap_bt_entries fndecl 3-4 64959 NULL
160720 +enable_so_dvb_ca_write_fndecl_64960 dvb_ca_write fndecl 3 64960 NULL
160721 +enable_so_count_acpi_processor_power_64969 count acpi_processor_power 0 64969 NULL
160722 +enable_so_len_ctrl_queue_64975 len ctrl_queue 0 64975 NULL
160723 +enable_so_nearest_clock_vml_sys_64980 nearest_clock vml_sys 0 64980 NULL
160724 +enable_so_io_init_fndecl_64981 io_init fndecl 2 64981 NULL
160725 +enable_so_hq_size_cnic_local_64987 hq_size cnic_local 0 64987 NULL
160726 +enable_so_maxTxCredits_edgeport_port_64991 maxTxCredits edgeport_port 0 64991 NULL
160727 +enable_so_UpdateRegs_fndecl_64995 UpdateRegs fndecl 2-3 64995 NULL
160728 +enable_so_access_length_acpi_connection_info_65000 access_length acpi_connection_info 0 65000 NULL
160729 +enable_so_mask_cbuf_65001 mask cbuf 0 65001 NULL
160730 +enable_so_add_tree_ref_fndecl_65003 add_tree_ref fndecl 3-4-5-2 65003 NULL
160731 +enable_so_cc2520_read_rxfifo_fndecl_65006 cc2520_read_rxfifo fndecl 3 65006 NULL
160732 +enable_so_netif_get_num_default_rss_queues_fndecl_65008 netif_get_num_default_rss_queues fndecl 0 65008 NULL
160733 +enable_so_actual_size_saa7164_user_buffer_65010 actual_size saa7164_user_buffer 0 65010 NULL
160734 +enable_so_cmd_len_sg_io_hdr_65018 cmd_len sg_io_hdr 0 65018 NULL
160735 +enable_so_print_page_owner_fndecl_65020 print_page_owner fndecl 2 65020 NULL
160736 +enable_so_table_size__i2o_lct_65021 table_size _i2o_lct 0 65021 NULL
160737 +enable_so_dfs_file_write_fndecl_65023 dfs_file_write fndecl 3 65023 NULL
160738 +enable_so_max_rate_tries_ieee80211_hw_65024 max_rate_tries ieee80211_hw 0 65024 NULL nohasharray
160739 +enable_so_intr_size_usb_pcwd_private_65024 intr_size usb_pcwd_private 0 65024 &enable_so_max_rate_tries_ieee80211_hw_65024
160740 +enable_so_au8522_rc_read_fndecl_65026 au8522_rc_read fndecl 5 65026 NULL
160741 +enable_so_ocfs2_block_group_fill_fndecl_65027 ocfs2_block_group_fill fndecl 4 65027 NULL
160742 +enable_so_prev_length_deflate_state_65029 prev_length deflate_state 0 65029 NULL
160743 +enable_so_arch_add_memory_fndecl_65052 arch_add_memory fndecl 3-2 65052 NULL
160744 +enable_so_flag_node_footer_65063 flag node_footer 0 65063 NULL
160745 +enable_so_psb_intel_sdvo_get_pixel_multiplier_fndecl_65067 psb_intel_sdvo_get_pixel_multiplier fndecl 0 65067 NULL
160746 +enable_so_ResidualCnt__ErrorInfo_struct_65074 ResidualCnt _ErrorInfo_struct 0 65074 NULL
160747 +enable_so_mmc_test_transfer_fndecl_65076 mmc_test_transfer fndecl 6-5 65076 NULL
160748 +enable_so_xfs_growfs_rt_alloc_fndecl_65079 xfs_growfs_rt_alloc fndecl 2-3 65079 NULL
160749 +enable_so_SyS_bpf_fndecl_65081 SyS_bpf fndecl 3 65081 NULL
160750 +enable_so_frame_size_pwc_device_65084 frame_size pwc_device 0 65084 NULL
160751 +enable_so_fcoe_len_fcoe_rport_65085 fcoe_len fcoe_rport 0 65085 NULL
160752 +enable_so_width_cx88_core_65086 width cx88_core 0 65086 NULL nohasharray
160753 +enable_so_capi_ttyminors_vardecl_capi_c_65086 capi_ttyminors vardecl_capi.c 0 65086 &enable_so_width_cx88_core_65086
160754 +enable_so_num_tx_bds_bcmgenet_priv_65087 num_tx_bds bcmgenet_priv 0 65087 NULL
160755 +enable_so_size_ion_test_rw_data_65088 size ion_test_rw_data 0 65088 NULL
160756 +enable_so_sco_send_frame_fndecl_65092 sco_send_frame fndecl 3 65092 NULL
160757 +enable_so_rtw_android_get_macaddr_fndecl_65095 rtw_android_get_macaddr fndecl 0 65095 NULL
160758 +enable_so_ecryptfs_write_begin_fndecl_65099 ecryptfs_write_begin fndecl 3 65099 NULL
160759 +enable_so_max_xri_lpfc_max_cfg_param_65100 max_xri lpfc_max_cfg_param 0 65100 NULL
160760 +enable_so_x25_recvmsg_fndecl_65106 x25_recvmsg fndecl 3 65106 NULL nohasharray
160761 +enable_so_ocfs2_dx_dir_rebalance_fndecl_65106 ocfs2_dx_dir_rebalance fndecl 7-0 65106 &enable_so_x25_recvmsg_fndecl_65106
160762 +enable_so_ntb_mw_count_fndecl_65108 ntb_mw_count fndecl 0 65108 NULL
160763 +enable_so_nilfs_cpfile_is_snapshot_fndecl_65110 nilfs_cpfile_is_snapshot fndecl 2 65110 NULL
160764 +enable_so_mmc_test_seq_read_perf_fndecl_65111 mmc_test_seq_read_perf fndecl 2 65111 NULL
160765 +enable_so_hsi_alloc_controller_fndecl_65113 hsi_alloc_controller fndecl 1 65113 NULL
160766 +enable_so_amdgpu_bo_list_set_fndecl_65117 amdgpu_bo_list_set fndecl 5 65117 NULL
160767 +enable_so_wpa_ie_len_libipw_device_65120 wpa_ie_len libipw_device 0 65120 NULL
160768 +enable_so_scrub_extent_for_parity_fndecl_65123 scrub_extent_for_parity fndecl 3-2-4 65123 NULL
160769 +enable_so_exynos_drm_init_buf_fndecl_65130 exynos_drm_init_buf fndecl 2 65130 NULL
160770 +enable_so_do_ip_setsockopt_fndecl_65135 do_ip_setsockopt fndecl 5 65135 NULL
160771 +enable_so_kimage_file_alloc_init_fndecl_65136 kimage_file_alloc_init fndecl 5 65136 NULL
160772 +enable_so_depth_sh_veu_format_65150 depth sh_veu_format 0 65150 NULL
160773 +enable_so___recover_dot_dentries_fndecl_65151 __recover_dot_dentries fndecl 2 65151 NULL
160774 +enable_so_piocnt_qib_ctxtdata_65161 piocnt qib_ctxtdata 0 65161 NULL nohasharray
160775 +enable_so_dma_txsize_vardecl_stmmac_main_c_65161 dma_txsize vardecl_stmmac_main.c 0 65161 &enable_so_piocnt_qib_ctxtdata_65161
160776 +enable_so_mwifiex_cmd_append_vsie_tlv_fndecl_65164 mwifiex_cmd_append_vsie_tlv fndecl 0 65164 NULL
160777 +enable_so___ext4_block_zero_page_range_fndecl_65173 __ext4_block_zero_page_range fndecl 3 65173 NULL
160778 +enable_so_crb_read_netxen_adapter_65178 crb_read netxen_adapter 0 65178 NULL
160779 +enable_so_xfs_rtget_summary_fndecl_65179 xfs_rtget_summary fndecl 4-3 65179 NULL
160780 +enable_so_bit_clear_fndecl_65181 bit_clear fndecl 5-3-6-4 65181 NULL
160781 +enable_so_fat_total_sect_fat_bios_param_block_65184 fat_total_sect fat_bios_param_block 0 65184 NULL
160782 +enable_so_free_blk_ocfs2_cached_block_free_65195 free_blk ocfs2_cached_block_free 0 65195 NULL
160783 +enable_so_privacy_invoked_libipw_device_65199 privacy_invoked libipw_device 0 65199 NULL nohasharray
160784 +enable_so_get_fdb_entries_fndecl_65199 get_fdb_entries fndecl 3 65199 &enable_so_privacy_invoked_libipw_device_65199
160785 +enable_so_xfs_bmap_shift_extents_fndecl_65200 xfs_bmap_shift_extents fndecl 4 65200 NULL
160786 +enable_so_NumIdentPartitions_cfi_intelext_regioninfo_65201 NumIdentPartitions cfi_intelext_regioninfo 0 65201 NULL
160787 +enable_so_SyS_sched_getattr_fndecl_65202 SyS_sched_getattr fndecl 3 65202 NULL
160788 +enable_so_ackr_win_top_rxrpc_call_65205 ackr_win_top rxrpc_call 0 65205 NULL
160789 +enable_so_fat_shortname2uni_fndecl_65206 fat_shortname2uni fndecl 0 65206 NULL
160790 +enable_so_vsync_v4l2_bt_timings_65208 vsync v4l2_bt_timings 0 65208 NULL nohasharray
160791 +enable_so_vmcb_msrpm_nested_state_65208 vmcb_msrpm nested_state 0 65208 &enable_so_vsync_v4l2_bt_timings_65208
160792 +enable_so_get_regs_len_ethtool_ops_65213 get_regs_len ethtool_ops 0 65213 NULL
160793 +enable_so_i40evf_change_mtu_fndecl_65220 i40evf_change_mtu fndecl 2 65220 NULL
160794 +enable_so_read_gssp_fndecl_65224 read_gssp fndecl 3 65224 NULL
160795 +enable_so_fb_max_height_vmw_private_65243 fb_max_height vmw_private 0 65243 NULL
160796 +enable_so_ext4_da_write_inline_data_begin_fndecl_65244 ext4_da_write_inline_data_begin fndecl 4-3 65244 NULL nohasharray
160797 +enable_so_word3_alx_rrd_65244 word3 alx_rrd 0 65244 &enable_so_ext4_da_write_inline_data_begin_fndecl_65244
160798 +enable_so_bytes_dump_iterator_65249 bytes dump_iterator 0 65249 NULL
160799 +enable_so_cx24116_writeregN_fndecl_65252 cx24116_writeregN fndecl 4 65252 NULL
160800 +enable_so_ctx_blk_size_cnic_eth_dev_65262 ctx_blk_size cnic_eth_dev 0 65262 NULL
160801 +enable_so_tool_peer_spad_read_fndecl_65263 tool_peer_spad_read fndecl 3 65263 NULL
160802 +enable_so_get_dir_index_using_offset_fndecl_65267 get_dir_index_using_offset fndecl 0-7 65267 NULL
160803 +enable_so_m_ialloc_blks_xfs_mount_65284 m_ialloc_blks xfs_mount 0 65284 NULL
160804 +enable_so_size_t4_rq_65285 size t4_rq 0 65285 NULL
160805 +enable_so_cp_pack_total_block_count_f2fs_checkpoint_65288 cp_pack_total_block_count f2fs_checkpoint 0 65288 NULL
160806 +enable_so_update_stat_data_fndecl_65289 update_stat_data fndecl 3 65289 NULL
160807 +enable_so_hpfs_translate_name_fndecl_65290 hpfs_translate_name fndecl 3 65290 NULL
160808 +enable_so_wear_eb_count_vardecl_nandsim_c_65291 wear_eb_count vardecl_nandsim.c 0 65291 NULL
160809 +enable_so_rt2x00debug_write_rfcsr_fndecl_65298 rt2x00debug_write_rfcsr fndecl 3 65298 NULL
160810 +enable_so_ntfs_bmap_fndecl_65300 ntfs_bmap fndecl 2 65300 NULL
160811 +enable_so_buffer_dma_atmel_spi_65304 buffer_dma atmel_spi 0 65304 NULL
160812 +enable_so_memory_lseek_fndecl_65306 memory_lseek fndecl 2 65306 NULL
160813 +enable_so_in_param_mlx4_vhcr_65311 in_param mlx4_vhcr 0 65311 NULL
160814 +enable_so_mt312_read_fndecl_65312 mt312_read fndecl 4 65312 NULL
160815 +enable_so_ExtPageLength__MPI2_CONFIG_REPLY_65319 ExtPageLength _MPI2_CONFIG_REPLY 0 65319 NULL
160816 +enable_so_brcmf_flowring_attach_fndecl_65325 brcmf_flowring_attach fndecl 2 65325 NULL
160817 +enable_so_align_size_hwbus_ops_65327 align_size hwbus_ops 0 65327 NULL
160818 +enable_so_fb_get_vblank_fndecl_65331 fb_get_vblank fndecl 0-1 65331 NULL nohasharray
160819 +enable_so_ath10k_wmi_start_scan_tlvs_len_fndecl_65331 ath10k_wmi_start_scan_tlvs_len fndecl 0 65331 &enable_so_fb_get_vblank_fndecl_65331
160820 +enable_so_alloc_in_dirband_fndecl_65332 alloc_in_dirband fndecl 2 65332 NULL
160821 +enable_so_panel_count_vbt_r10_65334 panel_count vbt_r10 0 65334 NULL
160822 +enable_so_ldisc_receive_fndecl_65343 ldisc_receive fndecl 4 65343 NULL
160823 +enable_so_gss_krb5_cts_crypt_fndecl_65346 gss_krb5_cts_crypt fndecl 3 65346 NULL
160824 +enable_so_si476x_radio_fops_read_fndecl_65348 si476x_radio_fops_read fndecl 3 65348 NULL nohasharray
160825 +enable_so_snap_count_rbd_image_header_ondisk_65348 snap_count rbd_image_header_ondisk 0 65348 &enable_so_si476x_radio_fops_read_fndecl_65348
160826 +enable_so_len_rpc_pipe_msg_65361 len rpc_pipe_msg 0 65361 NULL
160827 +enable_so_imm_size_fndecl_65365 imm_size fndecl 0 65365 NULL
160828 +enable_so_dma_out_iguanair_65368 dma_out iguanair 0 65368 NULL nohasharray
160829 +enable_so_add_excluded_extent_fndecl_65368 add_excluded_extent fndecl 3-2 65368 &enable_so_dma_out_iguanair_65368
160830 +enable_so_fbucket_size_qlcnic_filter_hash_65369 fbucket_size qlcnic_filter_hash 0 65369 NULL
160831 +enable_so_batadv_tvlv_container_ogm_append_fndecl_65383 batadv_tvlv_container_ogm_append fndecl 4 65383 NULL
160832 +enable_so_max_rx_aggregation_subframes_ieee80211_hw_65391 max_rx_aggregation_subframes ieee80211_hw 0 65391 NULL
160833 +enable_so_ipath_piosize2k_ipath_devdata_65394 ipath_piosize2k ipath_devdata 0 65394 NULL
160834 +enable_so_rcvegrbufsize_qib_devdata_65397 rcvegrbufsize qib_devdata 0 65397 NULL
160835 +enable_so_num_rx_queues_ixgbe_adapter_65402 num_rx_queues ixgbe_adapter 0 65402 NULL
160836 +enable_so_f_refresh_fb_cvt_data_65404 f_refresh fb_cvt_data 0 65404 NULL
160837 +enable_so_wl12xx_sdio_raw_write_fndecl_65406 wl12xx_sdio_raw_write fndecl 4 65406 NULL nohasharray
160838 +enable_so_rng_dev_read_fndecl_65406 rng_dev_read fndecl 3 65406 &enable_so_wl12xx_sdio_raw_write_fndecl_65406
160839 +enable_so___napi_alloc_skb_fndecl_65409 __napi_alloc_skb fndecl 2 65409 NULL nohasharray
160840 +enable_so_vm_exit_msr_store_addr_vmcs12_65409 vm_exit_msr_store_addr vmcs12 0 65409 &enable_so___napi_alloc_skb_fndecl_65409
160841 +enable_so_macb_init_rx_buffer_size_fndecl_65410 macb_init_rx_buffer_size fndecl 2 65410 NULL
160842 +enable_so_lstcon_batch_list_fndecl_65416 lstcon_batch_list fndecl 2 65416 NULL
160843 +enable_so_fat_zeroed_cluster_fndecl_65422 fat_zeroed_cluster fndecl 3-2 65422 NULL
160844 +enable_so_fq_trees_log_fq_sched_data_65425 fq_trees_log fq_sched_data 0 65425 NULL
160845 +enable_so_block_size_card_cfg_data_65426 block_size card_cfg_data 0 65426 NULL
160846 +enable_so_period_bytes_snd_usb_substream_65430 period_bytes snd_usb_substream 0 65430 NULL
160847 +enable_so_tcp_hdrlen_fndecl_65433 tcp_hdrlen fndecl 0 65433 NULL
160848 +enable_so_data_in_size_mpt3_ioctl_command_65434 data_in_size mpt3_ioctl_command 0 65434 NULL
160849 +enable_so_a2mp_send_fndecl_65436 a2mp_send fndecl 4 65436 NULL
160850 +enable_so_lbs_bcnmiss_write_fndecl_65438 lbs_bcnmiss_write fndecl 3 65438 NULL
160851 +enable_so_squashfs_cache_init_fndecl_65451 squashfs_cache_init fndecl 3-2 65451 NULL
160852 +enable_so_xfs_dir3_data_block_free_fndecl_65456 xfs_dir3_data_block_free fndecl 4 65456 NULL
160853 +enable_so_wNtbOutMaxDatagrams_usb_cdc_ncm_ntb_parameters_65459 wNtbOutMaxDatagrams usb_cdc_ncm_ntb_parameters 0 65459 NULL
160854 +enable_so_cfg80211_calculate_bitrate_60g_fndecl_65469 cfg80211_calculate_bitrate_60g fndecl 0 65469 NULL
160855 +enable_so_value_iw_param_65472 value iw_param 0 65472 NULL
160856 +enable_so_lfb_base_screen_info_65479 lfb_base screen_info 0 65479 NULL
160857 +enable_so_isoc_size_wa_seg_65482 isoc_size wa_seg 0 65482 NULL
160858 +enable_so_logical_tree_mod_root_65499 logical tree_mod_root 0 65499 NULL
160859 +enable_so_ieee80211_if_fmt_bssid_fndecl_65502 ieee80211_if_fmt_bssid fndecl 3 65502 NULL nohasharray
160860 +enable_so_xfs_dir2_shrink_inode_fndecl_65502 xfs_dir2_shrink_inode fndecl 2 65502 &enable_so_ieee80211_if_fmt_bssid_fndecl_65502
160861 +enable_so_lov_unpackmd_fndecl_65526 lov_unpackmd fndecl 4 65526 NULL
160862 +enable_so_write_page_nocow_fndecl_65527 write_page_nocow fndecl 2 65527 NULL
160863 +enable_so_size_mei_msg_data_65529 size mei_msg_data 0 65529 NULL
160864 +enable_so_connector_write_fndecl_65534 connector_write fndecl 3 65534 NULL
160865 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data b/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data
160866 new file mode 100644
160867 index 0000000..17bc0d8
160868 --- /dev/null
160869 +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash_aux.data
160870 @@ -0,0 +1,92 @@
160871 +enable_so_spa_set_aux_vdevs_fndecl_746 spa_set_aux_vdevs fndecl 3 746 NULL
160872 +enable_so_zfs_lookup_fndecl_2144 zfs_lookup fndecl 0 2144 NULL
160873 +enable_so_mappedread_fndecl_2627 mappedread fndecl 2 2627 NULL
160874 +enable_so_vdev_disk_dio_alloc_fndecl_2957 vdev_disk_dio_alloc fndecl 1 2957 NULL
160875 +enable_so_nv_alloc_pushpage_spl_fndecl_4286 nv_alloc_pushpage_spl fndecl 2 4286 NULL
160876 +enable_so_zpl_xattr_get_fndecl_4574 zpl_xattr_get fndecl 0 4574 NULL
160877 +enable_so_sa_replace_all_by_template_fndecl_5699 sa_replace_all_by_template fndecl 3 5699 NULL
160878 +enable_so_dmu_write_fndecl_6048 dmu_write fndecl 4-3 6048 NULL
160879 +enable_so_dmu_buf_hold_array_fndecl_6095 dmu_buf_hold_array fndecl 4-3 6095 NULL
160880 +enable_so_update_pages_fndecl_6225 update_pages fndecl 2-3 6225 NULL
160881 +enable_so_bio_nr_pages_fndecl_7117 bio_nr_pages fndecl 0-2 7117 NULL
160882 +enable_so_dmu_buf_hold_array_by_bonus_fndecl_8562 dmu_buf_hold_array_by_bonus fndecl 3-2 8562 NULL
160883 +enable_so_zpios_dmu_write_fndecl_8858 zpios_dmu_write fndecl 4-5 8858 NULL
160884 +enable_so_ddi_copyout_fndecl_9401 ddi_copyout fndecl 3 9401 NULL
160885 +enable_so_avl_numnodes_fndecl_12384 avl_numnodes fndecl 0 12384 NULL
160886 +enable_so_dmu_write_uio_dnode_fndecl_12473 dmu_write_uio_dnode fndecl 3 12473 NULL
160887 +enable_so_dmu_xuio_init_fndecl_12866 dmu_xuio_init fndecl 2 12866 NULL
160888 +enable_so_zpl_read_common_fndecl_14389 zpl_read_common fndecl 0 14389 NULL
160889 +enable_so_dmu_snapshot_realname_fndecl_14632 dmu_snapshot_realname fndecl 4 14632 NULL
160890 +enable_so_kmem_alloc_debug_fndecl_14852 kmem_alloc_debug fndecl 1 14852 NULL
160891 +enable_so_kmalloc_node_nofail_fndecl_15151 kmalloc_node_nofail fndecl 1 15151 NULL
160892 +enable_so_dmu_write_uio_fndecl_16351 dmu_write_uio fndecl 4 16351 NULL
160893 +enable_so_zfs_log_write_fndecl_16524 zfs_log_write fndecl 6-5 16524 NULL
160894 +enable_so_sa_build_layouts_fndecl_16910 sa_build_layouts fndecl 3 16910 NULL
160895 +enable_so_dsl_dir_namelen_fndecl_17053 dsl_dir_namelen fndecl 0 17053 NULL
160896 +enable_so_kcopy_copy_to_user_fndecl_17336 kcopy_copy_to_user fndecl 5 17336 NULL
160897 +enable_so_sa_add_layout_entry_fndecl_17507 sa_add_layout_entry fndecl 3 17507 NULL
160898 +enable_so_sa_attr_table_setup_fndecl_18029 sa_attr_table_setup fndecl 3 18029 NULL
160899 +enable_so_uiocopy_fndecl_18680 uiocopy fndecl 2 18680 NULL
160900 +enable_so_dmu_buf_hold_array_by_dnode_fndecl_19125 dmu_buf_hold_array_by_dnode fndecl 2-3 19125 NULL
160901 +enable_so_zpl_acl_from_xattr_fndecl_21141 zpl_acl_from_xattr fndecl 2 21141 NULL
160902 +enable_so_dsl_pool_tx_assign_init_fndecl_22518 dsl_pool_tx_assign_init fndecl 2 22518 NULL
160903 +enable_so_nvlist_lookup_byte_array_fndecl_22527 nvlist_lookup_byte_array fndecl 0 22527 NULL
160904 +enable_so_sa_replace_all_by_template_locked_fndecl_22533 sa_replace_all_by_template_locked fndecl 3 22533 NULL
160905 +enable_so_tsd_hash_table_init_fndecl_22559 tsd_hash_table_init fndecl 1 22559 NULL
160906 +enable_so_spa_vdev_remove_aux_fndecl_23966 spa_vdev_remove_aux fndecl 4 23966 NULL
160907 +enable_so_zpl_xattr_acl_set_access_fndecl_24129 zpl_xattr_acl_set_access fndecl 4 24129 NULL
160908 +enable_so_dmu_assign_arcbuf_fndecl_24622 dmu_assign_arcbuf fndecl 2 24622 NULL
160909 +enable_so_zap_lookup_norm_fndecl_25166 zap_lookup_norm fndecl 9 25166 NULL
160910 +enable_so_dmu_prealloc_fndecl_25456 dmu_prealloc fndecl 4-3 25456 NULL
160911 +enable_so_kmalloc_nofail_fndecl_26347 kmalloc_nofail fndecl 1 26347 NULL
160912 +enable_so_zfsctl_snapshot_zpath_fndecl_27578 zfsctl_snapshot_zpath fndecl 2 27578 NULL
160913 +enable_so_zpios_dmu_read_fndecl_30015 zpios_dmu_read fndecl 4-5 30015 NULL
160914 +enable_so_splat_write_fndecl_30943 splat_write fndecl 3 30943 NULL
160915 +enable_so_zpl_xattr_get_sa_fndecl_31183 zpl_xattr_get_sa fndecl 0 31183 NULL
160916 +enable_so_dmu_read_uio_fndecl_31467 dmu_read_uio fndecl 4 31467 NULL
160917 +enable_so_zfs_replay_fuids_fndecl_31479 zfs_replay_fuids fndecl 4 31479 NULL
160918 +enable_so_spa_history_log_to_phys_fndecl_31632 spa_history_log_to_phys fndecl 0-1 31632 NULL
160919 +enable_so___zpl_xattr_get_fndecl_32601 __zpl_xattr_get fndecl 0 32601 NULL
160920 +enable_so_proc_copyout_string_fndecl_34049 proc_copyout_string fndecl 2 34049 NULL
160921 +enable_so_nv_alloc_sleep_spl_fndecl_34544 nv_alloc_sleep_spl fndecl 2 34544 NULL
160922 +enable_so_nv_alloc_nosleep_spl_fndecl_34761 nv_alloc_nosleep_spl fndecl 2 34761 NULL
160923 +enable_so_zap_leaf_array_match_fndecl_36922 zap_leaf_array_match fndecl 4 36922 NULL
160924 +enable_so_copyinstr_fndecl_36980 copyinstr fndecl 3 36980 NULL
160925 +enable_so_zpl_xattr_acl_set_default_fndecl_37864 zpl_xattr_acl_set_default fndecl 4 37864 NULL
160926 +enable_so_splat_read_fndecl_38116 splat_read fndecl 3 38116 NULL
160927 +enable_so_sa_setup_fndecl_38756 sa_setup fndecl 4 38756 NULL
160928 +enable_so_vdev_disk_physio_fndecl_39898 vdev_disk_physio fndecl 3 39898 NULL
160929 +enable_so_arc_buf_size_fndecl_39982 arc_buf_size fndecl 0 39982 NULL
160930 +enable_so_kzalloc_nofail_fndecl_40719 kzalloc_nofail fndecl 1 40719 NULL
160931 +enable_so_fuidstr_to_sid_fndecl_40777 fuidstr_to_sid fndecl 4 40777 NULL
160932 +enable_so_vdev_raidz_matrix_reconstruct_fndecl_40852 vdev_raidz_matrix_reconstruct fndecl 2-3 40852 NULL
160933 +enable_so_sa_find_layout_fndecl_40892 sa_find_layout fndecl 4 40892 NULL
160934 +enable_so_zpl_xattr_get_dir_fndecl_41918 zpl_xattr_get_dir fndecl 0 41918 NULL
160935 +enable_so_zfs_sa_get_xattr_fndecl_42600 zfs_sa_get_xattr fndecl 0 42600 NULL
160936 +enable_so_zpl_xattr_acl_set_fndecl_42808 zpl_xattr_acl_set fndecl 4 42808 NULL
160937 +enable_so_xdr_dec_array_fndecl_43091 xdr_dec_array fndecl 5 43091 NULL
160938 +enable_so_dsl_dataset_namelen_fndecl_43136 dsl_dataset_namelen fndecl 0 43136 NULL
160939 +enable_so_kcopy_write_fndecl_43683 kcopy_write fndecl 3 43683 NULL
160940 +enable_so_uiomove_fndecl_44355 uiomove fndecl 2 44355 NULL
160941 +enable_so_dmu_read_fndecl_44418 dmu_read fndecl 4-3 44418 NULL
160942 +enable_so_ddi_copyin_fndecl_44846 ddi_copyin fndecl 3 44846 NULL
160943 +enable_so_kcopy_do_get_fndecl_45061 kcopy_do_get fndecl 5 45061 NULL
160944 +enable_so_copyin_fndecl_45945 copyin fndecl 3 45945 NULL
160945 +enable_so_zil_itx_create_fndecl_46555 zil_itx_create fndecl 2 46555 NULL
160946 +enable_so_dmu_write_uio_dbuf_fndecl_48064 dmu_write_uio_dbuf fndecl 3 48064 NULL
160947 +enable_so_blk_rq_pos_fndecl_48233 blk_rq_pos fndecl 0 48233 NULL
160948 +enable_so_spa_history_write_fndecl_49650 spa_history_write fndecl 3 49650 NULL
160949 +enable_so_kcopy_copy_pages_to_user_fndecl_49823 kcopy_copy_pages_to_user fndecl 3-4 49823 NULL
160950 +enable_so_zfs_log_write_fndecl_50162 zfs_log_write fndecl 6-5 50162 NULL
160951 +enable_so_i_fm_alloc_fndecl_51038 i_fm_alloc fndecl 2 51038 NULL
160952 +enable_so_copyout_fndecl_51409 copyout fndecl 3 51409 NULL
160953 +enable_so_zvol_log_write_fndecl_54898 zvol_log_write fndecl 4-3 54898 NULL
160954 +enable_so_zfs_acl_node_alloc_fndecl_55641 zfs_acl_node_alloc fndecl 1 55641 NULL
160955 +enable_so_get_nvlist_fndecl_56685 get_nvlist fndecl 2 56685 NULL
160956 +enable_so_zprop_get_numprops_fndecl_56820 zprop_get_numprops fndecl 0 56820 NULL
160957 +enable_so_splat_taskq_test4_common_fndecl_59829 splat_taskq_test4_common fndecl 5 59829 NULL
160958 +enable_so_zfs_replay_domain_cnt_fndecl_61399 zfs_replay_domain_cnt fndecl 0 61399 NULL
160959 +enable_so_zpios_write_fndecl_61823 zpios_write fndecl 3 61823 NULL
160960 +enable_so_proc_copyin_string_fndecl_62019 proc_copyin_string fndecl 4 62019 NULL
160961 +enable_so_random_get_pseudo_bytes_fndecl_64611 random_get_pseudo_bytes fndecl 2 64611 NULL
160962 +enable_so_zpios_read_fndecl_64734 zpios_read fndecl 3 64734 NULL
160963 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_ipa.c b/tools/gcc/size_overflow_plugin/size_overflow_ipa.c
160964 new file mode 100644
160965 index 0000000..441fd79
160966 --- /dev/null
160967 +++ b/tools/gcc/size_overflow_plugin/size_overflow_ipa.c
160968 @@ -0,0 +1,1373 @@
160969 +/*
160970 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
160971 + * Licensed under the GPL v2, or (at your option) v3
160972 + *
160973 + * Homepage:
160974 + * https://github.com/ephox-gcc-plugins/size_overflow
160975 + *
160976 + * Documentation:
160977 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
160978 + *
160979 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
160980 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
160981 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
160982 + *
160983 + * Usage:
160984 + * $ make
160985 + * $ make run
160986 + */
160987 +
160988 +#include "size_overflow.h"
160989 +#include <libgen.h>
160990 +
160991 +static void walk_use_def_next_functions(struct walk_use_def_data *use_def_data, tree lhs);
160992 +
160993 +next_interesting_function_t global_next_interesting_function[GLOBAL_NIFN_LEN];
160994 +static bool global_changed;
160995 +#define PRINT_DATA_FLOW true
160996 +#define NO_PRINT_DATA_FLOW false
160997 +
160998 +static struct cgraph_node_hook_list *function_insertion_hook_holder;
160999 +static struct cgraph_2node_hook_list *node_duplication_hook_holder;
161000 +
161001 +struct cgraph_node *get_cnode(const_tree fndecl)
161002 +{
161003 + gcc_assert(TREE_CODE(fndecl) == FUNCTION_DECL);
161004 +#if BUILDING_GCC_VERSION <= 4005
161005 + return cgraph_get_node((tree)fndecl);
161006 +#else
161007 + return cgraph_get_node(fndecl);
161008 +#endif
161009 +}
161010 +
161011 +static bool is_signed_error_code_const(const_tree node)
161012 +{
161013 + HOST_WIDE_INT constant = tree_to_shwi(node);
161014 +
161015 + return constant >= -4095 && constant <= -1;
161016 +}
161017 +
161018 +static bool is_unsigned_error_code_const(const_tree node)
161019 +{
161020 + unsigned HOST_WIDE_INT constant = tree_to_uhwi(node);
161021 +
161022 + // ulong -4095
161023 + if (constant >= 0xfffffffffffff001)
161024 + return true;
161025 + // uint -4095
161026 + return constant >= 0xfffff001;
161027 +}
161028 +
161029 +static bool is_error_code_const(const_tree node)
161030 +{
161031 + enum machine_mode mode;
161032 +
161033 + if (!flag_lto)
161034 + return false;
161035 +
161036 + if (!is_gimple_constant(node))
161037 + return false;
161038 + mode = TYPE_MODE(TREE_TYPE(node));
161039 + if (mode != SImode && mode != DImode)
161040 + return false;
161041 +
161042 + if (!TYPE_UNSIGNED(TREE_TYPE(node)) && is_signed_error_code_const(node))
161043 + return true;
161044 + return TYPE_UNSIGNED(TREE_TYPE(node)) && is_unsigned_error_code_const(node);
161045 +}
161046 +
161047 +bool is_default_error_data_flow(error_code_t error_code)
161048 +{
161049 + return !error_code->bin_op && !error_code->error_const && error_code->only_signed_unsigned_cast;
161050 +}
161051 +
161052 +static bool same_error_data_flow(error_code_t error_data_flow_old, error_code_t error_data_flow_new)
161053 +{
161054 + if (!flag_lto)
161055 + return true;
161056 +
161057 + if (error_data_flow_old->bin_op != error_data_flow_new->bin_op)
161058 + return false;
161059 + if (error_data_flow_old->error_const != error_data_flow_new->error_const)
161060 + return false;
161061 + return error_data_flow_old->only_signed_unsigned_cast == error_data_flow_new->only_signed_unsigned_cast;
161062 +}
161063 +
161064 +static void set_error_data_flow(error_code_t error_data_flow_old, error_code_t error_data_flow_new)
161065 +{
161066 + error_data_flow_old->bin_op = error_data_flow_new->bin_op;
161067 + error_data_flow_old->error_const = error_data_flow_new->error_const;
161068 + error_data_flow_old->only_signed_unsigned_cast = error_data_flow_new->only_signed_unsigned_cast;
161069 +}
161070 +
161071 +static void merge_error_data_flows(error_code_t error_data_flow_old, error_code_t error_data_flow_new)
161072 +{
161073 + if (same_error_data_flow(error_data_flow_old, error_data_flow_new))
161074 + return;
161075 +
161076 + if (is_default_error_data_flow(error_data_flow_old) && !is_default_error_data_flow(error_data_flow_new)) {
161077 + set_error_data_flow(error_data_flow_old, error_data_flow_new);
161078 + return;
161079 + }
161080 +
161081 + if (error_data_flow_new->bin_op)
161082 + error_data_flow_old->bin_op = true;
161083 + if (error_data_flow_new->error_const)
161084 + error_data_flow_old->error_const = true;
161085 + if (!error_data_flow_new->only_signed_unsigned_cast)
161086 + error_data_flow_old->only_signed_unsigned_cast = false;
161087 +}
161088 +
161089 +static bool compare_next_interesting_functions(next_interesting_function_t cur_node, const char *decl_name, const char *context, unsigned int num, error_code_t error_data_flow)
161090 +{
161091 + // Ignore num without a value
161092 + if (num != NONE_ARGNUM && cur_node->num != num)
161093 + return false;
161094 + if (strcmp(cur_node->context, context))
161095 + return false;
161096 + if (strcmp(cur_node->decl_name, decl_name))
161097 + return false;
161098 + merge_error_data_flows(cur_node->error_data_flow, error_data_flow);
161099 + return true;
161100 +}
161101 +
161102 +// Return the context of vardecl. If it is in a file scope then the context is vardecl_filebasename
161103 +static const char* get_vardecl_context(const_tree decl)
161104 +{
161105 + expanded_location xloc;
161106 + char *buf, *path;
161107 + const char *bname;
161108 + int len;
161109 +
161110 + xloc = expand_location(DECL_SOURCE_LOCATION(decl));
161111 + gcc_assert(xloc.file);
161112 + path = xstrdup(xloc.file);
161113 + bname = basename(path);
161114 +
161115 + len = asprintf(&buf, "vardecl_%s", bname);
161116 + gcc_assert(len > 0);
161117 + return buf;
161118 +}
161119 +
161120 +// Return the type name for a function pointer (or "fielddecl" if the type has no name), otherwise either "vardecl" or "fndecl"
161121 +const char* get_decl_context(const_tree decl)
161122 +{
161123 + switch (TREE_CODE(decl)) {
161124 + case FUNCTION_DECL:
161125 + return "fndecl";
161126 + // TODO: Ignore anonymous types for now
161127 + case FIELD_DECL:
161128 + return get_type_name_from_field(decl);
161129 + case VAR_DECL:
161130 + if (TREE_PUBLIC(decl) || DECL_EXTERNAL(decl))
161131 + return "vardecl";
161132 + if (TREE_STATIC(decl) && !TREE_PUBLIC(decl))
161133 + return get_vardecl_context(decl);
161134 + // ignore local variable
161135 + if (!TREE_STATIC(decl) && !DECL_EXTERNAL(decl))
161136 + return NULL;
161137 + default:
161138 + debug_tree((tree)decl);
161139 + gcc_unreachable();
161140 + }
161141 +}
161142 +
161143 +static void set_default_error_data_flow(error_code_t new_node)
161144 +{
161145 + new_node->bin_op = false;
161146 + new_node->error_const = false;
161147 + new_node->only_signed_unsigned_cast = true;
161148 +}
161149 +
161150 +static error_code_t create_error_code(error_code_t error_data_flow)
161151 +{
161152 + error_code_t new_node;
161153 +
161154 + new_node = (error_code_t)xmalloc(sizeof(*new_node));
161155 + set_error_data_flow(new_node, error_data_flow);
161156 + return new_node;
161157 +}
161158 +
161159 +// Find the function with the specified argument in the list
161160 +next_interesting_function_t get_global_next_interesting_function_entry(struct fn_raw_data *raw_data)
161161 +{
161162 + next_interesting_function_t cur_node, head;
161163 +
161164 + head = global_next_interesting_function[raw_data->hash];
161165 + for (cur_node = head; cur_node; cur_node = cur_node->next) {
161166 + if (raw_data->marked != ASM_STMT_SO_MARK && cur_node->marked == ASM_STMT_SO_MARK)
161167 + continue;
161168 + if (compare_next_interesting_functions(cur_node, raw_data->decl_str, raw_data->context, raw_data->num, &raw_data->error_data_flow))
161169 + return cur_node;
161170 + }
161171 + return NULL;
161172 +}
161173 +
161174 +next_interesting_function_t get_global_next_interesting_function_entry_with_hash(struct fn_raw_data *raw_data)
161175 +{
161176 + raw_data->hash = get_decl_hash(raw_data->decl, raw_data->decl_str);
161177 + if (raw_data->hash == NO_HASH)
161178 + return NULL;
161179 +
161180 + raw_data->context = get_decl_context(raw_data->decl);
161181 + if (!raw_data->context)
161182 + return NULL;
161183 + return get_global_next_interesting_function_entry(raw_data);
161184 +}
161185 +
161186 +next_interesting_function_t create_new_next_interesting_entry(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node)
161187 +{
161188 + next_interesting_function_t new_node;
161189 +
161190 + new_node = (next_interesting_function_t)xmalloc(sizeof(*new_node));
161191 + new_node->decl_name = xstrdup(raw_data->decl_str);
161192 +
161193 + gcc_assert(raw_data->context);
161194 + new_node->context = xstrdup(raw_data->context);
161195 + new_node->hash = raw_data->hash;
161196 + new_node->num = raw_data->num;
161197 + new_node->next = NULL;
161198 + new_node->children = NULL;
161199 + new_node->marked = raw_data->marked;
161200 + new_node->orig_next_node = orig_next_node;
161201 + new_node->error_data_flow = create_error_code(&raw_data->error_data_flow);
161202 + return new_node;
161203 +}
161204 +
161205 +// Create the main data structure
161206 +next_interesting_function_t create_new_next_interesting_decl(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node)
161207 +{
161208 + enum tree_code decl_code = TREE_CODE(raw_data->decl);
161209 +
161210 + gcc_assert(decl_code == FIELD_DECL || decl_code == FUNCTION_DECL || decl_code == VAR_DECL);
161211 +
161212 + if (is_vararg(raw_data->decl, raw_data->num))
161213 + return NULL;
161214 +
161215 + raw_data->hash = get_decl_hash(raw_data->decl, raw_data->decl_str);
161216 + if (raw_data->hash == NO_HASH)
161217 + return NULL;
161218 +
161219 + gcc_assert(raw_data->num <= MAX_PARAM);
161220 + // Clones must have an orig_next_node
161221 + gcc_assert(!made_by_compiler(raw_data->decl) || orig_next_node);
161222 +
161223 + raw_data->context = get_decl_context(raw_data->decl);
161224 + if (!raw_data->context)
161225 + return NULL;
161226 + return create_new_next_interesting_entry(raw_data, orig_next_node);
161227 +}
161228 +
161229 +void add_to_global_next_interesting_function(next_interesting_function_t new_entry)
161230 +{
161231 + next_interesting_function_t cur_global_head, cur_global, cur_global_end = NULL;
161232 +
161233 + // new_entry is appended to the end of a list
161234 + new_entry->next = NULL;
161235 +
161236 + cur_global_head = global_next_interesting_function[new_entry->hash];
161237 + if (!cur_global_head) {
161238 + global_next_interesting_function[new_entry->hash] = new_entry;
161239 + return;
161240 + }
161241 +
161242 +
161243 + for (cur_global = cur_global_head; cur_global; cur_global = cur_global->next) {
161244 + if (!cur_global->next)
161245 + cur_global_end = cur_global;
161246 +
161247 + if (compare_next_interesting_functions(cur_global, new_entry->decl_name, new_entry->context, new_entry->num, new_entry->error_data_flow))
161248 + return;
161249 + }
161250 +
161251 + gcc_assert(cur_global_end);
161252 + cur_global_end->next = new_entry;
161253 +}
161254 +
161255 +/* If the interesting function is a clone then find or create its original next_interesting_function_t node
161256 + * and add it to global_next_interesting_function
161257 + */
161258 +static next_interesting_function_t create_orig_next_node_for_a_clone(struct fn_raw_data *clone_raw_data)
161259 +{
161260 + struct fn_raw_data orig_raw_data;
161261 + next_interesting_function_t orig_next_node;
161262 + enum tree_code decl_code;
161263 +
161264 + orig_raw_data.error_data_flow = clone_raw_data->error_data_flow;
161265 + orig_raw_data.decl = get_orig_fndecl(clone_raw_data->decl);
161266 +
161267 + if (DECL_BUILT_IN(orig_raw_data.decl) || DECL_BUILT_IN_CLASS(orig_raw_data.decl) == BUILT_IN_NORMAL)
161268 + return NULL;
161269 +
161270 + decl_code = TREE_CODE(orig_raw_data.decl);
161271 + if (decl_code == FIELD_DECL || decl_code == VAR_DECL)
161272 + orig_raw_data.num = clone_raw_data->num;
161273 + else
161274 + orig_raw_data.num = get_correct_argnum(clone_raw_data->decl, orig_raw_data.decl, clone_raw_data->num);
161275 +
161276 + // Skip over ISRA.162 parm decls
161277 + if (orig_raw_data.num == CANNOT_FIND_ARG)
161278 + return NULL;
161279 +
161280 + orig_raw_data.decl_str = get_orig_decl_name(orig_raw_data.decl);
161281 + orig_raw_data.marked = NO_SO_MARK;
161282 + orig_next_node = get_global_next_interesting_function_entry_with_hash(&orig_raw_data);
161283 + if (orig_next_node)
161284 + return orig_next_node;
161285 +
161286 + orig_raw_data.marked = clone_raw_data->marked;
161287 + orig_next_node = create_new_next_interesting_decl(&orig_raw_data, NULL);
161288 + gcc_assert(orig_next_node);
161289 +
161290 + add_to_global_next_interesting_function(orig_next_node);
161291 + return orig_next_node;
161292 +}
161293 +
161294 +// Find or create the next_interesting_function_t node for decl and num
161295 +next_interesting_function_t get_and_create_next_node_from_global_next_nodes(struct fn_raw_data *raw_data, next_interesting_function_t orig_next_node)
161296 +{
161297 + next_interesting_function_t cur_next_cnode;
161298 +
161299 + if (DECL_NAME(raw_data->decl) == NULL_TREE)
161300 + return NULL;
161301 + raw_data->decl_str = DECL_NAME_POINTER(raw_data->decl);
161302 +
161303 + cur_next_cnode = get_global_next_interesting_function_entry_with_hash(raw_data);
161304 + if (cur_next_cnode)
161305 + goto out;
161306 +
161307 + if (!orig_next_node && made_by_compiler(raw_data->decl)) {
161308 + orig_next_node = create_orig_next_node_for_a_clone(raw_data);
161309 + if (!orig_next_node)
161310 + return NULL;
161311 + }
161312 +
161313 + cur_next_cnode = create_new_next_interesting_decl(raw_data, orig_next_node);
161314 + if (!cur_next_cnode)
161315 + return NULL;
161316 +
161317 + add_to_global_next_interesting_function(cur_next_cnode);
161318 +out:
161319 + if (cur_next_cnode->marked != raw_data->marked && cur_next_cnode->marked != NO_SO_MARK)
161320 + return cur_next_cnode;
161321 +
161322 + if (raw_data->marked != NO_SO_MARK && cur_next_cnode->marked == NO_SO_MARK)
161323 + cur_next_cnode->marked = raw_data->marked;
161324 +
161325 + return cur_next_cnode;
161326 +}
161327 +
161328 +static bool has_next_interesting_function_chain_node(next_interesting_function_t next_cnodes_head, struct fn_raw_data *raw_data)
161329 +{
161330 + next_interesting_function_t cur_node;
161331 +
161332 + raw_data->decl_str = DECL_NAME_POINTER(raw_data->decl);
161333 + raw_data->context = get_decl_context(raw_data->decl);
161334 + // Ignore function if there is no context
161335 + if (!raw_data->context)
161336 + return true;
161337 +
161338 + for (cur_node = next_cnodes_head; cur_node; cur_node = cur_node->next) {
161339 + if (compare_next_interesting_functions(cur_node, raw_data->decl_str, raw_data->context, raw_data->num, &raw_data->error_data_flow))
161340 + return true;
161341 + }
161342 + return false;
161343 +}
161344 +
161345 +static void handle_function(struct walk_use_def_data *use_def_data, tree fndecl, const_tree arg)
161346 +{
161347 + struct fn_raw_data raw_data;
161348 + next_interesting_function_t orig_next_node, new_node;
161349 +
161350 + gcc_assert(fndecl != NULL_TREE);
161351 +
161352 + // ignore builtins to not explode coverage (e.g., memcpy)
161353 + if (DECL_BUILT_IN(fndecl) || DECL_BUILT_IN_CLASS(fndecl) == BUILT_IN_NORMAL)
161354 + return;
161355 +
161356 + if (get_intentional_attr_type(fndecl) == MARK_TURN_OFF)
161357 + return;
161358 +
161359 + raw_data.decl = fndecl;
161360 + raw_data.decl_str = DECL_NAME_POINTER(fndecl);
161361 + raw_data.marked = NO_SO_MARK;
161362 + raw_data.error_data_flow = use_def_data->error_data_flow;
161363 +
161364 + // convert arg into its position
161365 + if (arg == NULL_TREE)
161366 + raw_data.num = 0;
161367 + else
161368 + raw_data.num = find_arg_number_tree(arg, raw_data.decl);
161369 + if (raw_data.num == CANNOT_FIND_ARG)
161370 + return;
161371 +
161372 + if (has_next_interesting_function_chain_node(use_def_data->next_cnodes_head, &raw_data))
161373 + return;
161374 +
161375 + if (made_by_compiler(raw_data.decl)) {
161376 + orig_next_node = create_orig_next_node_for_a_clone(&raw_data);
161377 + if (!orig_next_node)
161378 + return;
161379 + } else
161380 + orig_next_node = NULL;
161381 +
161382 + new_node = create_new_next_interesting_decl(&raw_data, orig_next_node);
161383 + if (!new_node)
161384 + return;
161385 + new_node->next = use_def_data->next_cnodes_head;
161386 + use_def_data->next_cnodes_head = new_node;
161387 +}
161388 +
161389 +static void walk_use_def_next_functions_phi(struct walk_use_def_data *use_def_data, const_tree result)
161390 +{
161391 + gphi *phi = as_a_gphi(get_def_stmt(result));
161392 + unsigned int i, n = gimple_phi_num_args(phi);
161393 +
161394 + pointer_set_insert(use_def_data->visited, phi);
161395 + for (i = 0; i < n; i++) {
161396 + tree arg = gimple_phi_arg_def(phi, i);
161397 +
161398 + walk_use_def_next_functions(use_def_data, arg);
161399 + }
161400 +}
161401 +
161402 +static void walk_use_def_next_functions_binary(struct walk_use_def_data *use_def_data, const_tree lhs)
161403 +{
161404 + gassign *def_stmt = as_a_gassign(get_def_stmt(lhs));
161405 + tree rhs1, rhs2;
161406 +
161407 + use_def_data->error_data_flow.bin_op = true;
161408 +
161409 + rhs1 = gimple_assign_rhs1(def_stmt);
161410 + rhs2 = gimple_assign_rhs2(def_stmt);
161411 +
161412 + walk_use_def_next_functions(use_def_data, rhs1);
161413 + walk_use_def_next_functions(use_def_data, rhs2);
161414 +}
161415 +
161416 +static void walk_use_def_next_functions_unary(struct walk_use_def_data *use_def_data, const gassign *stmt)
161417 +{
161418 + tree rhs1, lhs;
161419 +
161420 + rhs1 = gimple_assign_rhs1(stmt);
161421 + lhs = gimple_assign_lhs(stmt);
161422 +
161423 + if (use_def_data->parent->num == 0 && TYPE_MODE(TREE_TYPE(rhs1)) != TYPE_MODE(TREE_TYPE(lhs)))
161424 + use_def_data->error_data_flow.only_signed_unsigned_cast = false;
161425 +
161426 + walk_use_def_next_functions(use_def_data, rhs1);
161427 +}
161428 +
161429 +void __attribute__((weak)) handle_function_ptr_ret(struct walk_use_def_data *use_def_data __unused, const_tree fn_ptr __unused)
161430 +{
161431 +}
161432 +
161433 +static void create_and_append_new_next_interesting_field_var_decl(struct walk_use_def_data *use_def_data, struct fn_raw_data *raw_data)
161434 +{
161435 + next_interesting_function_t new_node;
161436 +
161437 + if (raw_data->decl == NULL_TREE)
161438 + return;
161439 +
161440 + if (DECL_NAME(raw_data->decl) == NULL_TREE)
161441 + return;
161442 +
161443 + raw_data->decl_str = DECL_NAME_POINTER(raw_data->decl);
161444 + raw_data->num = 0;
161445 + raw_data->marked = NO_SO_MARK;
161446 + raw_data->error_data_flow = use_def_data->error_data_flow;
161447 +
161448 + new_node = create_new_next_interesting_decl(raw_data, NULL);
161449 + if (!new_node)
161450 + return;
161451 + new_node->next = use_def_data->next_cnodes_head;
161452 + use_def_data->next_cnodes_head = new_node;
161453 +}
161454 +
161455 +static void handle_struct_fields(struct walk_use_def_data *use_def_data, const_tree node)
161456 +{
161457 + struct fn_raw_data raw_data;
161458 +
161459 + switch (TREE_CODE(node)) {
161460 + case ARRAY_REF:
161461 +#if BUILDING_GCC_VERSION >= 4006
161462 + case MEM_REF:
161463 +#endif
161464 + case INDIRECT_REF:
161465 + case COMPONENT_REF:
161466 + raw_data.decl = get_ref_field(node);
161467 + break;
161468 + // TODO
161469 + case BIT_FIELD_REF:
161470 + case VIEW_CONVERT_EXPR:
161471 + return;
161472 + default:
161473 + // XXX: keep this syncronized with size_overflow_transform.c:search_interesting_structs()
161474 + debug_tree((tree)node);
161475 + gcc_unreachable();
161476 + }
161477 +
161478 + if (get_intentional_attr_type(raw_data.decl) == MARK_TURN_OFF)
161479 + return;
161480 +
161481 + create_and_append_new_next_interesting_field_var_decl(use_def_data, &raw_data);
161482 +}
161483 +
161484 +static void handle_vardecl(struct walk_use_def_data *use_def_data, tree node)
161485 +{
161486 + struct fn_raw_data raw_data;
161487 +
161488 + raw_data.decl = node;
161489 + create_and_append_new_next_interesting_field_var_decl(use_def_data, &raw_data);
161490 +}
161491 +
161492 +/* Find all functions that influence lhs
161493 + *
161494 + * Encountered functions are added to the children vector (next_interesting_function_t).
161495 + */
161496 +static void walk_use_def_next_functions(struct walk_use_def_data *use_def_data, tree lhs)
161497 +{
161498 + enum tree_code code;
161499 + const_gimple def_stmt;
161500 +
161501 + if (use_def_data->parent->num == 0 && is_error_code_const(lhs)) {
161502 + use_def_data->error_data_flow.error_const = true;
161503 + set_error_data_flow(use_def_data->parent->error_data_flow, &use_def_data->error_data_flow);
161504 + goto out;
161505 + }
161506 +
161507 + if (skip_types(lhs))
161508 + goto out;
161509 +
161510 + if (VAR_P(lhs)) {
161511 + handle_vardecl(use_def_data, lhs);
161512 + goto out;
161513 + }
161514 +
161515 + code = TREE_CODE(lhs);
161516 + if (code == PARM_DECL) {
161517 + handle_function(use_def_data, current_function_decl, lhs);
161518 + goto out;
161519 + }
161520 +
161521 + if (TREE_CODE_CLASS(code) == tcc_reference) {
161522 + handle_struct_fields(use_def_data, lhs);
161523 + goto out;
161524 + }
161525 +
161526 + if (code != SSA_NAME)
161527 + goto out;
161528 +
161529 + def_stmt = get_def_stmt(lhs);
161530 + if (!def_stmt)
161531 + goto out;
161532 +
161533 + if (pointer_set_insert(use_def_data->visited, def_stmt))
161534 + goto out;
161535 +
161536 + switch (gimple_code(def_stmt)) {
161537 + case GIMPLE_NOP:
161538 + walk_use_def_next_functions(use_def_data, SSA_NAME_VAR(lhs));
161539 + goto out;
161540 + case GIMPLE_ASM:
161541 + if (!is_size_overflow_asm(def_stmt))
161542 + goto out;
161543 + walk_use_def_next_functions(use_def_data, get_size_overflow_asm_input(as_a_const_gasm(def_stmt)));
161544 + return;
161545 + case GIMPLE_CALL: {
161546 + tree fndecl = gimple_call_fndecl(def_stmt);
161547 +
161548 + if (fndecl != NULL_TREE) {
161549 + handle_function(use_def_data, fndecl, NULL_TREE);
161550 + goto out;
161551 + }
161552 + fndecl = gimple_call_fn(def_stmt);
161553 + handle_function_ptr_ret(use_def_data, fndecl);
161554 + goto out;
161555 + }
161556 + case GIMPLE_PHI:
161557 + walk_use_def_next_functions_phi(use_def_data, lhs);
161558 + return;
161559 + case GIMPLE_ASSIGN:
161560 + switch (gimple_num_ops(def_stmt)) {
161561 + case 2:
161562 + walk_use_def_next_functions_unary(use_def_data, as_a_const_gassign(def_stmt));
161563 + return;
161564 + case 3:
161565 + walk_use_def_next_functions_binary(use_def_data, lhs);
161566 + return;
161567 + }
161568 + default:
161569 + debug_gimple_stmt((gimple)def_stmt);
161570 + error("%s: unknown gimple code", __func__);
161571 + gcc_unreachable();
161572 + }
161573 +
161574 +out:
161575 + set_default_error_data_flow(&use_def_data->error_data_flow);
161576 +}
161577 +
161578 +// Start the search for next_interesting_function_t children based on the (next_interesting_function_t) parent node
161579 +static next_interesting_function_t search_next_functions(tree node, next_interesting_function_t parent)
161580 +{
161581 + struct walk_use_def_data use_def_data;
161582 +
161583 + use_def_data.parent = parent;
161584 + set_default_error_data_flow(&use_def_data.error_data_flow);
161585 + use_def_data.next_cnodes_head = NULL;
161586 + use_def_data.visited = pointer_set_create();
161587 +
161588 + walk_use_def_next_functions(&use_def_data, node);
161589 +
161590 + pointer_set_destroy(use_def_data.visited);
161591 + return use_def_data.next_cnodes_head;
161592 +}
161593 +
161594 +// True if child already exists in the next_interesting_function_t children vector
161595 +bool has_next_interesting_function_vec(next_interesting_function_t target, next_interesting_function_t next_node)
161596 +{
161597 + unsigned int i;
161598 + next_interesting_function_t cur;
161599 +
161600 + gcc_assert(next_node);
161601 + // handle recursion
161602 + if (!strcmp(target->decl_name, next_node->decl_name) && target->num == next_node->num)
161603 + return true;
161604 +
161605 +#if BUILDING_GCC_VERSION <= 4007
161606 + if (VEC_empty(next_interesting_function_t, target->children))
161607 + return false;
161608 + FOR_EACH_VEC_ELT(next_interesting_function_t, target->children, i, cur) {
161609 +#else
161610 + FOR_EACH_VEC_SAFE_ELT(target->children, i, cur) {
161611 +#endif
161612 + if (compare_next_interesting_functions(cur, next_node->decl_name, next_node->context, next_node->num, next_node->error_data_flow))
161613 + return true;
161614 + }
161615 + return false;
161616 +}
161617 +
161618 +void push_child(next_interesting_function_t parent, next_interesting_function_t child)
161619 +{
161620 + if (!has_next_interesting_function_vec(parent, child)) {
161621 +#if BUILDING_GCC_VERSION <= 4007
161622 + VEC_safe_push(next_interesting_function_t, heap, parent->children, child);
161623 +#else
161624 + vec_safe_push(parent->children, child);
161625 +#endif
161626 + }
161627 +}
161628 +
161629 +void __attribute__((weak)) check_local_variables(next_interesting_function_t next_node __unused) {}
161630 +
161631 +// Add children to parent and global_next_interesting_function
161632 +static void collect_data_for_execute(next_interesting_function_t parent, next_interesting_function_t children)
161633 +{
161634 + next_interesting_function_t cur = children;
161635 +
161636 + gcc_assert(parent);
161637 +
161638 + while (cur) {
161639 + struct fn_raw_data child_raw_data;
161640 + next_interesting_function_t next, child;
161641 +
161642 + next = cur->next;
161643 +
161644 + child_raw_data.decl_str = cur->decl_name;
161645 + child_raw_data.context = cur->context;
161646 + child_raw_data.hash = cur->hash;
161647 + child_raw_data.num = cur->num;
161648 + child_raw_data.marked = NO_SO_MARK;
161649 + set_error_data_flow(&child_raw_data.error_data_flow, cur->error_data_flow);
161650 + child = get_global_next_interesting_function_entry(&child_raw_data);
161651 + if (!child) {
161652 + add_to_global_next_interesting_function(cur);
161653 + child = cur;
161654 + }
161655 +
161656 + check_local_variables(child);
161657 +
161658 + push_child(parent, child);
161659 +
161660 + cur = next;
161661 + }
161662 +
161663 + check_local_variables(parent);
161664 +}
161665 +
161666 +next_interesting_function_t __attribute__((weak)) get_and_create_next_node_from_global_next_nodes_fnptr(const_tree fn_ptr __unused, struct fn_raw_data *raw_data __unused)
161667 +{
161668 + return NULL;
161669 +}
161670 +
161671 +static next_interesting_function_t create_parent_next_cnode(const_gimple stmt, unsigned int num)
161672 +{
161673 + struct fn_raw_data raw_data;
161674 +
161675 + raw_data.num = num;
161676 + raw_data.marked = NO_SO_MARK;
161677 +
161678 + set_default_error_data_flow(&raw_data.error_data_flow);
161679 +
161680 + switch (gimple_code(stmt)) {
161681 + case GIMPLE_ASM:
161682 + raw_data.decl = current_function_decl;
161683 + raw_data.marked = ASM_STMT_SO_MARK;
161684 + return get_and_create_next_node_from_global_next_nodes(&raw_data, NULL);
161685 + case GIMPLE_CALL:
161686 + raw_data.decl = gimple_call_fndecl(stmt);
161687 + if (raw_data.decl != NULL_TREE)
161688 + return get_and_create_next_node_from_global_next_nodes(&raw_data, NULL);
161689 + raw_data.decl = gimple_call_fn(stmt);
161690 + return get_and_create_next_node_from_global_next_nodes_fnptr(raw_data.decl, &raw_data);
161691 + case GIMPLE_RETURN:
161692 + raw_data.decl = current_function_decl;
161693 + return get_and_create_next_node_from_global_next_nodes(&raw_data, NULL);
161694 + case GIMPLE_ASSIGN: {
161695 + tree lhs = gimple_assign_lhs(stmt);
161696 +
161697 + if (VAR_P(lhs))
161698 + raw_data.decl = lhs;
161699 + else
161700 + raw_data.decl = get_ref_field(lhs);
161701 + if (raw_data.decl == NULL_TREE)
161702 + return NULL;
161703 + return get_and_create_next_node_from_global_next_nodes(&raw_data, NULL);
161704 + }
161705 + default:
161706 + debug_gimple_stmt((gimple)stmt);
161707 + gcc_unreachable();
161708 + }
161709 +}
161710 +
161711 +// Handle potential next_interesting_function_t parent if its argument has an integer type
161712 +static void collect_all_possible_size_overflow_fns(const_gimple stmt, tree start_var, unsigned int num)
161713 +{
161714 + next_interesting_function_t children_next_cnode, parent_next_cnode;
161715 +
161716 + // skip void return values
161717 + if (start_var == NULL_TREE)
161718 + return;
161719 +
161720 + if (skip_types(start_var))
161721 + return;
161722 +
161723 + // handle intentional MARK_TURN_OFF
161724 + if (check_intentional_size_overflow_asm_and_attribute(start_var) == MARK_TURN_OFF)
161725 + return;
161726 +
161727 + parent_next_cnode = create_parent_next_cnode(stmt, num);
161728 + if (!parent_next_cnode)
161729 + return;
161730 +
161731 + children_next_cnode = search_next_functions(start_var, parent_next_cnode);
161732 + collect_data_for_execute(parent_next_cnode, children_next_cnode);
161733 +}
161734 +
161735 +static void collect_all_possible_size_overflow_fields_and_vars(const gassign *assign)
161736 +{
161737 + tree start_var, decl, lhs = gimple_assign_lhs(assign);
161738 +
161739 + if (VAR_P(lhs))
161740 + decl = lhs;
161741 + else
161742 + decl = get_ref_field(lhs);
161743 + if (decl == NULL_TREE)
161744 + return;
161745 +
161746 + if (get_intentional_attr_type(decl) == MARK_TURN_OFF)
161747 + return;
161748 +
161749 + start_var = gimple_assign_rhs1(assign);
161750 + collect_all_possible_size_overflow_fns(assign, start_var, 0);
161751 +
161752 + start_var = gimple_assign_rhs2(assign);
161753 + collect_all_possible_size_overflow_fns(assign, start_var, 0);
161754 +
161755 +#if BUILDING_GCC_VERSION >= 4006
161756 + start_var = gimple_assign_rhs3(assign);
161757 + collect_all_possible_size_overflow_fns(assign, start_var, 0);
161758 +#endif
161759 +}
161760 +
161761 +// Find potential next_interesting_function_t parents
161762 +static void handle_cgraph_node(struct cgraph_node *node)
161763 +{
161764 + basic_block bb;
161765 + tree cur_fndecl = NODE_DECL(node);
161766 +
161767 + set_current_function_decl(cur_fndecl);
161768 +
161769 + FOR_ALL_BB_FN(bb, cfun) {
161770 + gimple_stmt_iterator gsi;
161771 +
161772 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
161773 + tree start_var;
161774 + gimple stmt = gsi_stmt(gsi);
161775 +
161776 + switch (gimple_code(stmt)) {
161777 + case GIMPLE_RETURN: {
161778 + const greturn *return_stmt = as_a_const_greturn(stmt);
161779 +
161780 + start_var = gimple_return_retval(return_stmt);
161781 + collect_all_possible_size_overflow_fns(return_stmt, start_var, 0);
161782 + break;
161783 + }
161784 + case GIMPLE_ASM: {
161785 + const gasm *asm_stmt = as_a_const_gasm(stmt);
161786 +
161787 + if (!is_size_overflow_insert_check_asm(asm_stmt))
161788 + break;
161789 + start_var = get_size_overflow_asm_input(asm_stmt);
161790 + collect_all_possible_size_overflow_fns(asm_stmt, start_var, 0);
161791 + break;
161792 + }
161793 + case GIMPLE_CALL: {
161794 + unsigned int i, len;
161795 + const gcall *call = as_a_const_gcall(stmt);
161796 + tree fndecl = gimple_call_fndecl(call);
161797 +
161798 + if (fndecl != NULL_TREE && (DECL_BUILT_IN(fndecl) || DECL_BUILT_IN_CLASS(fndecl) == BUILT_IN_NORMAL))
161799 + break;
161800 +
161801 + len = gimple_call_num_args(call);
161802 + for (i = 0; i < len; i++) {
161803 + start_var = gimple_call_arg(call, i);
161804 + collect_all_possible_size_overflow_fns(call, start_var, i + 1);
161805 + }
161806 + break;
161807 + }
161808 + case GIMPLE_ASSIGN:
161809 + collect_all_possible_size_overflow_fields_and_vars(as_a_const_gassign(stmt));
161810 + break;
161811 + default:
161812 + break;
161813 + }
161814 + }
161815 + }
161816 +
161817 + unset_current_function_decl();
161818 +}
161819 +
161820 +/* Collect all potentially interesting function parameters and return values of integer types
161821 + * and store their data flow dependencies
161822 + */
161823 +static void size_overflow_generate_summary(void)
161824 +{
161825 + struct cgraph_node *node;
161826 +
161827 + size_overflow_register_hooks();
161828 +
161829 + FOR_EACH_FUNCTION(node) {
161830 + if (is_valid_cgraph_node(node))
161831 + handle_cgraph_node(node);
161832 + }
161833 +}
161834 +
161835 +static void size_overflow_function_insertion_hook(struct cgraph_node *node __unused, void *data __unused)
161836 +{
161837 + debug_cgraph_node(node);
161838 + gcc_unreachable();
161839 +}
161840 +
161841 +/* Handle dst if src is in the global_next_interesting_function list.
161842 + * If src is a clone then dst inherits the orig_next_node of src otherwise
161843 + * src will become the orig_next_node of dst.
161844 + */
161845 +static void size_overflow_node_duplication_hook(struct cgraph_node *src, struct cgraph_node *dst, void *data __unused)
161846 +{
161847 + next_interesting_function_t head, cur;
161848 + struct fn_raw_data src_raw_data;
161849 +
161850 + src_raw_data.decl = NODE_DECL(src);
161851 + src_raw_data.decl_str = DECL_NAME_POINTER(src_raw_data.decl);
161852 + src_raw_data.context = get_decl_context(src_raw_data.decl);
161853 + if (!src_raw_data.context)
161854 + return;
161855 +
161856 + src_raw_data.num = NONE_ARGNUM;
161857 + src_raw_data.marked = NO_SO_MARK;
161858 + set_default_error_data_flow(&src_raw_data.error_data_flow);
161859 +
161860 + head = get_global_next_interesting_function_entry_with_hash(&src_raw_data);
161861 + if (!head)
161862 + return;
161863 +
161864 + for (cur = head; cur; cur = cur->next) {
161865 + struct fn_raw_data dst_raw_data;
161866 + next_interesting_function_t orig_next_node, next_node;
161867 +
161868 + if (!compare_next_interesting_functions(cur, src_raw_data.decl_str, src_raw_data.context, src_raw_data.num, &src_raw_data.error_data_flow))
161869 + continue;
161870 +
161871 + dst_raw_data.decl = NODE_DECL(dst);
161872 + dst_raw_data.decl_str = cgraph_node_name(dst);
161873 + dst_raw_data.marked = cur->marked;
161874 + dst_raw_data.error_data_flow = *cur->error_data_flow;
161875 +
161876 + if (!made_by_compiler(dst_raw_data.decl))
161877 + break;
161878 +
161879 + // For clones use the original node instead
161880 + if (cur->orig_next_node)
161881 + orig_next_node = cur->orig_next_node;
161882 + else
161883 + orig_next_node = cur;
161884 +
161885 + dst_raw_data.num = get_correct_argnum_fndecl(src_raw_data.decl, dst_raw_data.decl, cur->num);
161886 + if (dst_raw_data.num == CANNOT_FIND_ARG)
161887 + continue;
161888 +
161889 + next_node = create_new_next_interesting_decl(&dst_raw_data, orig_next_node);
161890 + if (next_node)
161891 + add_to_global_next_interesting_function(next_node);
161892 + }
161893 +}
161894 +
161895 +void size_overflow_register_hooks(void)
161896 +{
161897 + static bool init_p = false;
161898 +
161899 + if (init_p)
161900 + return;
161901 + init_p = true;
161902 +
161903 + function_insertion_hook_holder = cgraph_add_function_insertion_hook(&size_overflow_function_insertion_hook, NULL);
161904 + node_duplication_hook_holder = cgraph_add_node_duplication_hook(&size_overflow_node_duplication_hook, NULL);
161905 +}
161906 +
161907 +static void set_error_code_so_mark(next_interesting_function_t next_node)
161908 +{
161909 + if (next_node->marked != ERROR_CODE_SO_MARK) {
161910 + next_node->marked = ERROR_CODE_SO_MARK;
161911 + global_changed = true;
161912 + }
161913 + // Mark the orig decl as well if it's a clone
161914 + if (next_node->orig_next_node && next_node->orig_next_node->marked != ERROR_CODE_SO_MARK) {
161915 + next_node->orig_next_node->marked = ERROR_CODE_SO_MARK;
161916 + global_changed = true;
161917 + }
161918 +}
161919 +
161920 +// Determine whether node or orig node is in the disable size_overflow hash table already
161921 +static bool already_in_the_disable_so_hashtable(next_interesting_function_t next_node)
161922 +{
161923 + if (next_node->orig_next_node)
161924 + next_node = next_node->orig_next_node;
161925 + return get_disable_size_overflow_hash_entry(next_node->hash, next_node->decl_name, next_node->context, next_node->num) != NULL;
161926 +}
161927 +
161928 +/* If the data flow contains the function then set ERROR_CODE_SO_MARK on it and also
161929 + * on its parent if there is no operation in the data flow
161930 + */
161931 +static bool is_in_error_code_data_flow(next_interesting_function_t parent, next_interesting_function_t child)
161932 +{
161933 + // Ignore non-return values because error codes only matter in returns
161934 + if (parent->num != 0 || child->num != 0)
161935 + return false;
161936 +
161937 + // Use only the hash table if not in LTO mode
161938 + if (in_lto_p && child->error_data_flow->error_const && !child->error_data_flow->bin_op && child->error_data_flow->only_signed_unsigned_cast)
161939 + goto error_code;
161940 + if (child->marked == ERROR_CODE_SO_MARK)
161941 + goto error_code;
161942 + if (child->orig_next_node && child->orig_next_node->marked == ERROR_CODE_SO_MARK)
161943 + goto error_code;
161944 + if (already_in_the_disable_so_hashtable(child))
161945 + goto error_code;
161946 +
161947 + return false;
161948 +
161949 +error_code:
161950 + set_error_code_so_mark(child);
161951 + // If we found an operation already don't set ERROR_CODE_SO_MARK anymore
161952 + if (parent->error_data_flow->bin_op || !parent->error_data_flow->only_signed_unsigned_cast)
161953 + return false;
161954 + set_error_code_so_mark(parent);
161955 + return true;
161956 +}
161957 +
161958 +static void set_yes_so_mark(next_interesting_function_t next_node)
161959 +{
161960 + if (next_node->marked == NO_SO_MARK) {
161961 + next_node->marked = YES_SO_MARK;
161962 + global_changed = true;
161963 + }
161964 + // Mark the orig decl as well if it's a clone
161965 + if (next_node->orig_next_node && next_node->orig_next_node->marked == NO_SO_MARK) {
161966 + next_node->orig_next_node->marked = YES_SO_MARK;
161967 + global_changed = true;
161968 + }
161969 +}
161970 +
161971 +// Determine whether node or orig node is part of a tracked data flow
161972 +static bool marked_fn(next_interesting_function_t next_node)
161973 +{
161974 + bool is_marked_fn, is_marked_orig = false;
161975 +
161976 + is_marked_fn = next_node->marked != NO_SO_MARK;
161977 +
161978 + if (next_node->orig_next_node)
161979 + is_marked_orig = next_node->orig_next_node->marked != NO_SO_MARK;
161980 +
161981 + return is_marked_fn || is_marked_orig;
161982 +}
161983 +
161984 +// Determine whether node or orig node is in the hash table already
161985 +static bool already_in_the_hashtable(next_interesting_function_t next_node)
161986 +{
161987 + if (next_node->orig_next_node)
161988 + next_node = next_node->orig_next_node;
161989 + return get_size_overflow_hash_entry(next_node->hash, next_node->decl_name, next_node->context, next_node->num) != NULL;
161990 +}
161991 +
161992 +// Propagate the size_overflow marks up the use-def chains
161993 +static bool has_marked_child(next_interesting_function_t next_node)
161994 +{
161995 + bool ret = false;
161996 + unsigned int i;
161997 + next_interesting_function_t child;
161998 +
161999 +#if BUILDING_GCC_VERSION <= 4007
162000 + if (VEC_empty(next_interesting_function_t, next_node->children))
162001 + return false;
162002 + FOR_EACH_VEC_ELT(next_interesting_function_t, next_node->children, i, child) {
162003 +#else
162004 + FOR_EACH_VEC_SAFE_ELT(next_node->children, i, child) {
162005 +#endif
162006 + if (is_in_error_code_data_flow(next_node, child))
162007 + continue;
162008 + if (marked_fn(child) || already_in_the_hashtable(child))
162009 + ret = true;
162010 + }
162011 +
162012 + return ret;
162013 +}
162014 +
162015 +/* Set YES_SO_MARK on the function, its orig node and children if:
162016 + * * the function or its orig node or one of its children is in the hash table already
162017 + * * the function's orig node is marked with YES_SO_MARK or ASM_STMT_SO_MARK
162018 + * * one of the children is marked with YES_SO_MARK or ASM_STMT_SO_MARK
162019 + */
162020 +static bool set_fn_so_mark(next_interesting_function_t next_node)
162021 +{
162022 + bool so_fn, so_hashtable, so_child;
162023 +
162024 + so_hashtable = already_in_the_hashtable(next_node);
162025 + so_fn = marked_fn(next_node);
162026 + so_child = has_marked_child(next_node);
162027 +
162028 + if (!so_fn && !so_hashtable && !so_child)
162029 + return false;
162030 + set_yes_so_mark(next_node);
162031 + return true;
162032 +}
162033 +
162034 +// Determine if any of the function pointer targets have data flow between the return value and one of the arguments
162035 +static next_interesting_function_t get_same_not_ret_child(next_interesting_function_t parent)
162036 +{
162037 + unsigned int i;
162038 + next_interesting_function_t child;
162039 +
162040 +#if BUILDING_GCC_VERSION <= 4007
162041 + if (VEC_empty(next_interesting_function_t, parent->children))
162042 + return NULL;
162043 + FOR_EACH_VEC_ELT(next_interesting_function_t, parent->children, i, child) {
162044 +#else
162045 + FOR_EACH_VEC_SAFE_ELT(parent->children, i, child) {
162046 +#endif
162047 + if (child->num == 0)
162048 + continue;
162049 + if (strcmp(parent->decl_name, child->decl_name))
162050 + continue;
162051 + if (!strcmp(child->context, "fndecl"))
162052 + return child;
162053 + }
162054 + return NULL;
162055 +}
162056 +
162057 +/* Trace a return value of function pointer type back to an argument via a concrete function
162058 + fnptr 0 && fn 0 && (fn 0 -> fn 2) => fnptr 2 */
162059 +static void search_missing_fptr_arg(next_interesting_function_t parent)
162060 +{
162061 + next_interesting_function_t child;
162062 + unsigned int i;
162063 +#if BUILDING_GCC_VERSION <= 4007
162064 + VEC(next_interesting_function_t, heap) *new_children = NULL;
162065 +#else
162066 + vec<next_interesting_function_t, va_heap, vl_embed> *new_children = NULL;
162067 +#endif
162068 +
162069 + if (parent->num != 0)
162070 + return;
162071 + if (!strcmp(parent->context, "fndecl"))
162072 + return;
162073 + if (!strncmp(parent->context, "vardecl", sizeof("vardecl") - 1))
162074 + return;
162075 +
162076 + // fnptr 0 && fn 0
162077 +#if BUILDING_GCC_VERSION <= 4007
162078 + if (VEC_empty(next_interesting_function_t, parent->children))
162079 + return;
162080 + FOR_EACH_VEC_ELT(next_interesting_function_t, parent->children, i, child) {
162081 +#else
162082 + FOR_EACH_VEC_SAFE_ELT(parent->children, i, child) {
162083 +#endif
162084 + next_interesting_function_t cur_next_node, tracked_fn;
162085 +
162086 + if (child->num != 0)
162087 + continue;
162088 + // (fn 0 -> fn 2)
162089 + tracked_fn = get_same_not_ret_child(child);
162090 + if (!tracked_fn)
162091 + continue;
162092 +
162093 + // fn 2 => fnptr 2
162094 + for (cur_next_node = global_next_interesting_function[parent->hash]; cur_next_node; cur_next_node = cur_next_node->next) {
162095 + if (cur_next_node->num != tracked_fn->num)
162096 + continue;
162097 +
162098 + if (strcmp(parent->decl_name, cur_next_node->decl_name))
162099 + continue;
162100 +
162101 + if (!has_next_interesting_function_vec(parent, cur_next_node)) {
162102 +#if BUILDING_GCC_VERSION <= 4007
162103 + VEC_safe_push(next_interesting_function_t, heap, new_children, cur_next_node);
162104 +#else
162105 + vec_safe_push(new_children, cur_next_node);
162106 +#endif
162107 + }
162108 + }
162109 + }
162110 +
162111 +#if BUILDING_GCC_VERSION == 4005
162112 + if (VEC_empty(next_interesting_function_t, new_children))
162113 + return;
162114 + FOR_EACH_VEC_ELT(next_interesting_function_t, new_children, i, child)
162115 + VEC_safe_push(next_interesting_function_t, heap, parent->children, child);
162116 +#elif BUILDING_GCC_VERSION <= 4007
162117 + VEC_safe_splice(next_interesting_function_t, heap, parent->children, new_children);
162118 +#else
162119 + vec_safe_splice(parent->children, new_children);
162120 +#endif
162121 +}
162122 +
162123 +static void walk_so_marked_fns(next_interesting_function_set *visited, next_interesting_function_t parent, bool debug)
162124 +{
162125 + unsigned int i;
162126 + next_interesting_function_t child;
162127 +
162128 + gcc_assert(parent);
162129 + if (!set_fn_so_mark(parent))
162130 + return;
162131 +
162132 +#if BUILDING_GCC_VERSION <= 4007
162133 + if (VEC_empty(next_interesting_function_t, parent->children))
162134 + return;
162135 + FOR_EACH_VEC_ELT(next_interesting_function_t, parent->children, i, child) {
162136 +#else
162137 + FOR_EACH_VEC_SAFE_ELT(parent->children, i, child) {
162138 +#endif
162139 + set_yes_so_mark(child);
162140 +
162141 + if (in_lto_p && debug == PRINT_DATA_FLOW) {
162142 + fprintf(stderr, " PARENT: decl: %s-%u context: %s %p\n", parent->decl_name, parent->num, parent->context, parent);
162143 + fprintf(stderr, " \tCHILD: decl: %s-%u context: %s %p\n", child->decl_name, child->num, child->context, child);
162144 + }
162145 +
162146 + if (!pointer_set_insert(visited, child))
162147 + walk_so_marked_fns(visited, child, debug);
162148 + }
162149 +}
162150 +
162151 +// Do a depth-first recursive dump of the next_interesting_function_t children vector
162152 +static void print_missing_functions(next_interesting_function_set *visited, next_interesting_function_t parent)
162153 +{
162154 + unsigned int i;
162155 + next_interesting_function_t child;
162156 +
162157 + gcc_assert(parent);
162158 + gcc_assert(parent->marked != NO_SO_MARK);
162159 + if (!in_lto_p && parent->marked == ERROR_CODE_SO_MARK)
162160 + return;
162161 + print_missing_function(parent);
162162 +
162163 +#if BUILDING_GCC_VERSION <= 4007
162164 + if (VEC_empty(next_interesting_function_t, parent->children))
162165 + return;
162166 + FOR_EACH_VEC_ELT(next_interesting_function_t, parent->children, i, child) {
162167 +#else
162168 + FOR_EACH_VEC_SAFE_ELT(parent->children, i, child) {
162169 +#endif
162170 + gcc_assert(child->marked != NO_SO_MARK);
162171 + if (!pointer_set_insert(visited, child))
162172 + print_missing_functions(visited, child);
162173 + }
162174 +}
162175 +
162176 +// Set YES_SO_MARK on functions that will be emitted into the hash table
162177 +static void search_so_marked_fns(bool debug)
162178 +{
162179 +
162180 + unsigned int i;
162181 + next_interesting_function_set *visited;
162182 + next_interesting_function_t cur_global;
162183 +
162184 + visited = next_interesting_function_pointer_set_create();
162185 + for (i = 0; i < GLOBAL_NIFN_LEN; i++) {
162186 + for (cur_global = global_next_interesting_function[i]; cur_global; cur_global = cur_global->next) {
162187 + if (cur_global->marked == NO_SO_MARK || pointer_set_insert(visited, cur_global))
162188 + continue;
162189 +
162190 + if (in_lto_p && debug == PRINT_DATA_FLOW)
162191 + fprintf(stderr, "Data flow: decl: %s-%u context: %s %p\n", cur_global->decl_name, cur_global->num, cur_global->context, cur_global);
162192 +
162193 + walk_so_marked_fns(visited, cur_global, debug);
162194 +
162195 + if (in_lto_p && debug == PRINT_DATA_FLOW)
162196 + fprintf(stderr, "\n");
162197 + }
162198 + }
162199 + pointer_set_destroy(visited);
162200 +}
162201 +
162202 +// Print functions missing from the hash table
162203 +static void print_so_marked_fns(void)
162204 +{
162205 + unsigned int i;
162206 + next_interesting_function_set *visited;
162207 + next_interesting_function_t cur_global;
162208 +
162209 + visited = next_interesting_function_pointer_set_create();
162210 + for (i = 0; i < GLOBAL_NIFN_LEN; i++) {
162211 + for (cur_global = global_next_interesting_function[i]; cur_global; cur_global = cur_global->next) {
162212 + if (cur_global->marked != NO_SO_MARK && !pointer_set_insert(visited, cur_global))
162213 + print_missing_functions(visited, cur_global);
162214 + }
162215 + }
162216 + pointer_set_destroy(visited);
162217 +}
162218 +
162219 +void __attribute__((weak)) check_global_variables(next_interesting_function_t cur_global __unused) {}
162220 +
162221 +// Print all missing interesting functions
162222 +static unsigned int size_overflow_execute(void)
162223 +{
162224 + unsigned int i;
162225 + next_interesting_function_t cur_global;
162226 +
162227 + if (flag_lto && !in_lto_p)
162228 + return 0;
162229 +
162230 + // Collect vardecls and funtions reachable by function pointers
162231 + for (i = 0; i < GLOBAL_NIFN_LEN; i++) {
162232 + for (cur_global = global_next_interesting_function[i]; cur_global; cur_global = cur_global->next) {
162233 + check_global_variables(cur_global);
162234 + search_missing_fptr_arg(cur_global);
162235 + }
162236 + }
162237 +
162238 + search_so_marked_fns(PRINT_DATA_FLOW);
162239 + while (global_changed) {
162240 + global_changed = false;
162241 + search_so_marked_fns(NO_PRINT_DATA_FLOW);
162242 + }
162243 +
162244 + print_so_marked_fns();
162245 +
162246 + if (in_lto_p) {
162247 + fprintf(stderr, "%s: SIZE_OVERFLOW EXECUTE\n", __func__);
162248 + print_global_next_interesting_functions();
162249 + }
162250 +
162251 + return 0;
162252 +}
162253 +
162254 +// Omit the IPA/LTO callbacks until https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61311 gets fixed (license concerns)
162255 +#if BUILDING_GCC_VERSION >= 4008
162256 +void __attribute__((weak)) size_overflow_write_summary_lto(void) {}
162257 +#elif BUILDING_GCC_VERSION >= 4006
162258 +void __attribute__((weak)) size_overflow_write_summary_lto(cgraph_node_set set __unused, varpool_node_set vset __unused) {}
162259 +#else
162260 +void __attribute__((weak)) size_overflow_write_summary_lto(cgraph_node_set set __unused) {}
162261 +#endif
162262 +
162263 +void __attribute__((weak)) size_overflow_read_summary_lto(void) {}
162264 +
162265 +#if BUILDING_GCC_VERSION >= 4009
162266 +static const struct pass_data size_overflow_functions_pass_data = {
162267 +#else
162268 +static struct ipa_opt_pass_d size_overflow_functions_pass = {
162269 + .pass = {
162270 +#endif
162271 + .type = IPA_PASS,
162272 + .name = "size_overflow_functions",
162273 +#if BUILDING_GCC_VERSION >= 4008
162274 + .optinfo_flags = OPTGROUP_NONE,
162275 +#endif
162276 +#if BUILDING_GCC_VERSION >= 5000
162277 +#elif BUILDING_GCC_VERSION >= 4009
162278 + .has_gate = false,
162279 + .has_execute = true,
162280 +#else
162281 + .gate = NULL,
162282 + .execute = size_overflow_execute,
162283 + .sub = NULL,
162284 + .next = NULL,
162285 + .static_pass_number = 0,
162286 +#endif
162287 + .tv_id = TV_NONE,
162288 + .properties_required = 0,
162289 + .properties_provided = 0,
162290 + .properties_destroyed = 0,
162291 + .todo_flags_start = 0,
162292 + .todo_flags_finish = 0,
162293 +#if BUILDING_GCC_VERSION < 4009
162294 + },
162295 + .generate_summary = size_overflow_generate_summary,
162296 + .write_summary = size_overflow_write_summary_lto,
162297 + .read_summary = size_overflow_read_summary_lto,
162298 +#if BUILDING_GCC_VERSION >= 4006
162299 + .write_optimization_summary = size_overflow_write_summary_lto,
162300 + .read_optimization_summary = size_overflow_read_summary_lto,
162301 +#endif
162302 + .stmt_fixup = NULL,
162303 + .function_transform_todo_flags_start = 0,
162304 + .function_transform = size_overflow_transform,
162305 + .variable_transform = NULL,
162306 +#endif
162307 +};
162308 +
162309 +#if BUILDING_GCC_VERSION >= 4009
162310 +namespace {
162311 +class size_overflow_functions_pass : public ipa_opt_pass_d {
162312 +public:
162313 + size_overflow_functions_pass() : ipa_opt_pass_d(size_overflow_functions_pass_data,
162314 + g,
162315 + size_overflow_generate_summary,
162316 + size_overflow_write_summary_lto,
162317 + size_overflow_read_summary_lto,
162318 + size_overflow_write_summary_lto,
162319 + size_overflow_read_summary_lto,
162320 + NULL,
162321 + 0,
162322 + size_overflow_transform,
162323 + NULL) {}
162324 +#if BUILDING_GCC_VERSION >= 5000
162325 + virtual unsigned int execute(function *) { return size_overflow_execute(); }
162326 +#else
162327 + unsigned int execute() { return size_overflow_execute(); }
162328 +#endif
162329 +};
162330 +}
162331 +
162332 +opt_pass *make_size_overflow_functions_pass(void)
162333 +{
162334 + return new size_overflow_functions_pass();
162335 +}
162336 +#else
162337 +struct opt_pass *make_size_overflow_functions_pass(void)
162338 +{
162339 + return &size_overflow_functions_pass.pass;
162340 +}
162341 +#endif
162342 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_misc.c b/tools/gcc/size_overflow_plugin/size_overflow_misc.c
162343 new file mode 100644
162344 index 0000000..6075e8f
162345 --- /dev/null
162346 +++ b/tools/gcc/size_overflow_plugin/size_overflow_misc.c
162347 @@ -0,0 +1,505 @@
162348 +/*
162349 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
162350 + * Licensed under the GPL v2, or (at your option) v3
162351 + *
162352 + * Homepage:
162353 + * https://github.com/ephox-gcc-plugins/size_overflow
162354 + *
162355 + * Documentation:
162356 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
162357 + *
162358 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
162359 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
162360 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
162361 + *
162362 + * Usage:
162363 + * $ make
162364 + * $ make run
162365 + */
162366 +
162367 +#include "size_overflow.h"
162368 +
162369 +bool is_vararg(const_tree fn, unsigned int num)
162370 +{
162371 + tree arg_list;
162372 +
162373 + if (num == 0)
162374 + return false;
162375 + if (fn == NULL_TREE)
162376 + return false;
162377 + if (TREE_CODE(fn) != FUNCTION_DECL)
162378 + return false;
162379 +
162380 + arg_list = TYPE_ARG_TYPES(TREE_TYPE(fn));
162381 + if (arg_list == NULL_TREE)
162382 + return false;
162383 +
162384 + if (tree_last(arg_list) == void_list_node)
162385 + return false;
162386 +
162387 + return num >= (unsigned int)list_length(arg_list);
162388 +}
162389 +
162390 +// Extract the field decl from memory references
162391 +tree get_ref_field(const_tree ref)
162392 +{
162393 + tree field;
162394 +
162395 + // TODO: handle nested memory references
162396 + switch (TREE_CODE(ref)) {
162397 + case ARRAY_REF:
162398 + return NULL_TREE;
162399 +#if BUILDING_GCC_VERSION >= 4006
162400 + case MEM_REF:
162401 +#endif
162402 + case INDIRECT_REF:
162403 + field = TREE_OPERAND(ref, 0);
162404 + break;
162405 + case COMPONENT_REF:
162406 + field = TREE_OPERAND(ref, 1);
162407 + break;
162408 + default:
162409 + return NULL_TREE;
162410 + }
162411 +
162412 + // TODO
162413 + if (TREE_CODE(field) == SSA_NAME)
162414 + return NULL_TREE;
162415 + // TODO
162416 + if (TREE_CODE(field) != FIELD_DECL)
162417 + return NULL_TREE;
162418 + // TODO
162419 + if (TREE_CODE(field) == ADDR_EXPR)
162420 + return NULL_TREE;
162421 +
162422 + return field;
162423 +}
162424 +
162425 +const char *get_type_name_from_field(const_tree field_decl)
162426 +{
162427 + const_tree context, type_name;
162428 +
162429 + if (TREE_CODE(field_decl) != FIELD_DECL)
162430 + return NULL;
162431 +
162432 + context = DECL_CONTEXT(field_decl);
162433 + // TODO
162434 + if (TREE_CODE(context) != RECORD_TYPE)
162435 + return NULL;
162436 + gcc_assert(TREE_CODE(context) == RECORD_TYPE);
162437 + type_name = TYPE_NAME(TYPE_MAIN_VARIANT(context));
162438 + if (type_name == NULL_TREE)
162439 + return NULL;
162440 +
162441 + if (TREE_CODE(type_name) == IDENTIFIER_NODE)
162442 + return IDENTIFIER_POINTER(type_name);
162443 + else if (TREE_CODE(type_name) == TYPE_DECL)
162444 + return DECL_NAME_POINTER(type_name);
162445 +
162446 + debug_tree((tree)field_decl);
162447 + debug_tree((tree)type_name);
162448 + gcc_unreachable();
162449 +}
162450 +
162451 +// Was the function created by the compiler itself?
162452 +bool made_by_compiler(const_tree decl)
162453 +{
162454 + enum tree_code decl_code;
162455 + struct cgraph_node *node;
162456 +
162457 + if (FUNCTION_PTR_P(decl))
162458 + return false;
162459 + decl_code = TREE_CODE(decl);
162460 + if (decl_code == VAR_DECL || decl_code == FIELD_DECL)
162461 + return false;
162462 +
162463 + gcc_assert(decl_code == FUNCTION_DECL);
162464 + if (DECL_ABSTRACT_ORIGIN(decl) != NULL_TREE)
162465 + return true;
162466 + if (DECL_ARTIFICIAL(decl))
162467 + return true;
162468 +
162469 + node = get_cnode(decl);
162470 + if (!node)
162471 + return false;
162472 + return node->clone_of != NULL;
162473 +}
162474 +
162475 +bool skip_types(const_tree var)
162476 +{
162477 + const_tree type;
162478 +
162479 + type = TREE_TYPE(var);
162480 + if (type == NULL_TREE)
162481 + return true;
162482 +
162483 + switch (TREE_CODE(type)) {
162484 + case INTEGER_TYPE:
162485 + case ENUMERAL_TYPE:
162486 + return false;
162487 + default:
162488 + return true;
162489 + }
162490 +}
162491 +
162492 +gimple get_fnptr_def_stmt(const_tree fn_ptr)
162493 +{
162494 + gimple def_stmt;
162495 +
162496 + gcc_assert(fn_ptr != NULL_TREE);
162497 + gcc_assert(FUNCTION_PTR_P(fn_ptr));
162498 +
162499 + if (is_gimple_constant(fn_ptr))
162500 + return NULL;
162501 +
162502 + def_stmt = get_def_stmt(fn_ptr);
162503 + gcc_assert(def_stmt);
162504 + return def_stmt;
162505 +}
162506 +
162507 +gimple get_def_stmt(const_tree node)
162508 +{
162509 + gcc_assert(node != NULL_TREE);
162510 +
162511 + if (TREE_CODE(node) != SSA_NAME)
162512 + return NULL;
162513 + return SSA_NAME_DEF_STMT(node);
162514 +}
162515 +
162516 +tree create_new_var(tree type)
162517 +{
162518 + tree new_var = create_tmp_var(type, "cicus");
162519 +
162520 + add_referenced_var(new_var);
162521 + return new_var;
162522 +}
162523 +
162524 +static bool skip_cast(tree dst_type, const_tree rhs, bool force)
162525 +{
162526 + const_gimple def_stmt = get_def_stmt(rhs);
162527 +
162528 + if (force)
162529 + return false;
162530 +
162531 + if (is_gimple_constant(rhs))
162532 + return false;
162533 +
162534 + if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
162535 + return false;
162536 +
162537 + if (!types_compatible_p(dst_type, TREE_TYPE(rhs)))
162538 + return false;
162539 +
162540 + // DI type can be on 32 bit (from create_assign) but overflow type stays DI
162541 + if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
162542 + return false;
162543 +
162544 + return true;
162545 +}
162546 +
162547 +tree cast_a_tree(tree type, tree var)
162548 +{
162549 + gcc_assert(type != NULL_TREE);
162550 + gcc_assert(var != NULL_TREE);
162551 + gcc_assert(fold_convertible_p(type, var));
162552 +
162553 + return fold_convert(type, var);
162554 +}
162555 +
162556 +gimple build_cast_stmt(struct visited *visited, tree dst_type, tree rhs, tree lhs, gimple_stmt_iterator *gsi, bool before, bool force)
162557 +{
162558 + gassign *assign;
162559 + gimple def_stmt;
162560 +
162561 + gcc_assert(dst_type != NULL_TREE && rhs != NULL_TREE);
162562 + gcc_assert(!is_gimple_constant(rhs));
162563 + if (gsi_end_p(*gsi) && before == AFTER_STMT)
162564 + gcc_unreachable();
162565 +
162566 + def_stmt = get_def_stmt(rhs);
162567 + if (def_stmt && gimple_code(def_stmt) != GIMPLE_NOP && skip_cast(dst_type, rhs, force) && pointer_set_contains(visited->my_stmts, def_stmt))
162568 + return def_stmt;
162569 +
162570 + if (lhs == CREATE_NEW_VAR)
162571 + lhs = create_new_var(dst_type);
162572 +
162573 + assign = gimple_build_assign(lhs, cast_a_tree(dst_type, rhs));
162574 +
162575 + if (!gsi_end_p(*gsi)) {
162576 + location_t loc = gimple_location(gsi_stmt(*gsi));
162577 + gimple_set_location(assign, loc);
162578 + }
162579 +
162580 + gimple_assign_set_lhs(assign, make_ssa_name(lhs, assign));
162581 +
162582 + if (before)
162583 + gsi_insert_before(gsi, assign, GSI_NEW_STMT);
162584 + else
162585 + gsi_insert_after(gsi, assign, GSI_NEW_STMT);
162586 + update_stmt(assign);
162587 + return assign;
162588 +}
162589 +
162590 +bool is_size_overflow_type(const_tree var)
162591 +{
162592 + const char *name;
162593 + const_tree type_name, type;
162594 +
162595 + if (var == NULL_TREE)
162596 + return false;
162597 +
162598 + type = TREE_TYPE(var);
162599 + type_name = TYPE_NAME(type);
162600 + if (type_name == NULL_TREE)
162601 + return false;
162602 +
162603 + if (DECL_P(type_name))
162604 + name = DECL_NAME_POINTER(type_name);
162605 + else
162606 + name = IDENTIFIER_POINTER(type_name);
162607 +
162608 + if (!strncmp(name, "size_overflow_type", 18))
162609 + return true;
162610 + return false;
162611 +}
162612 +
162613 +// Determine if a cloned function has all the original arguments
162614 +static bool unchanged_arglist(struct cgraph_node *new_node, struct cgraph_node *old_node)
162615 +{
162616 + const_tree new_decl_list, old_decl_list;
162617 +
162618 + if (new_node->clone_of && new_node->clone.tree_map)
162619 + return !new_node->clone.args_to_skip;
162620 +
162621 + new_decl_list = DECL_ARGUMENTS(NODE_DECL(new_node));
162622 + old_decl_list = DECL_ARGUMENTS(NODE_DECL(old_node));
162623 + if (new_decl_list != NULL_TREE && old_decl_list != NULL_TREE)
162624 + gcc_assert(list_length(new_decl_list) == list_length(old_decl_list));
162625 +
162626 + return true;
162627 +}
162628 +
162629 +unsigned int get_correct_argnum_fndecl(const_tree fndecl, const_tree correct_argnum_of_fndecl, unsigned int num)
162630 +{
162631 + unsigned int new_num;
162632 + const_tree fndecl_arg;
162633 + tree fndecl_arglist = DECL_ARGUMENTS(fndecl);
162634 + const_tree arg, target_fndecl_arglist;
162635 +
162636 + if (num == 0)
162637 + return num;
162638 +
162639 + if (fndecl == correct_argnum_of_fndecl && !DECL_ARTIFICIAL(fndecl))
162640 + return num;
162641 + else if (fndecl == correct_argnum_of_fndecl && DECL_ARTIFICIAL(fndecl))
162642 + return CANNOT_FIND_ARG;
162643 +
162644 + target_fndecl_arglist = DECL_ARGUMENTS(correct_argnum_of_fndecl);
162645 + if (fndecl_arglist == NULL_TREE || target_fndecl_arglist == NULL_TREE)
162646 + return CANNOT_FIND_ARG;
162647 +
162648 + fndecl_arg = chain_index(num - 1, fndecl_arglist);
162649 + if (fndecl_arg == NULL_TREE)
162650 + return CANNOT_FIND_ARG;
162651 +
162652 + for (arg = target_fndecl_arglist, new_num = 1; arg; arg = TREE_CHAIN(arg), new_num++) {
162653 + if (arg == fndecl_arg || !strcmp(DECL_NAME_POINTER(arg), DECL_NAME_POINTER(fndecl_arg)))
162654 + return new_num;
162655 + }
162656 +
162657 + return CANNOT_FIND_ARG;
162658 +}
162659 +
162660 +// Find the specified argument in the originally cloned function
162661 +static unsigned int clone_argnum_on_orig(struct cgraph_node *new_node, struct cgraph_node *old_node, unsigned int clone_argnum)
162662 +{
162663 + bitmap args_to_skip;
162664 + unsigned int i, new_argnum = clone_argnum;
162665 +
162666 + if (unchanged_arglist(new_node, old_node))
162667 + return clone_argnum;
162668 +
162669 + gcc_assert(new_node->clone_of && new_node->clone.tree_map);
162670 + args_to_skip = new_node->clone.args_to_skip;
162671 + for (i = 0; i < clone_argnum; i++) {
162672 + if (bitmap_bit_p(args_to_skip, i))
162673 + new_argnum++;
162674 + }
162675 + return new_argnum;
162676 +}
162677 +
162678 +// Find the specified argument in the clone
162679 +static unsigned int orig_argnum_on_clone(struct cgraph_node *new_node, struct cgraph_node *old_node, unsigned int orig_argnum)
162680 +{
162681 + bitmap args_to_skip;
162682 + unsigned int i, new_argnum = orig_argnum;
162683 +
162684 + if (unchanged_arglist(new_node, old_node))
162685 + return orig_argnum;
162686 +
162687 + gcc_assert(new_node->clone_of && new_node->clone.tree_map);
162688 + args_to_skip = new_node->clone.args_to_skip;
162689 + if (bitmap_bit_p(args_to_skip, orig_argnum - 1))
162690 + // XXX torolni kellene a nodeot
162691 + return CANNOT_FIND_ARG;
162692 +
162693 + for (i = 0; i < orig_argnum; i++) {
162694 + if (bitmap_bit_p(args_to_skip, i))
162695 + new_argnum--;
162696 + }
162697 + return new_argnum;
162698 +}
162699 +
162700 +// Associate the argument between a clone and a cloned function
162701 +static unsigned int get_correct_argnum_cnode(struct cgraph_node *node, struct cgraph_node *correct_argnum_of_node, unsigned int argnum)
162702 +{
162703 + bool node_clone, correct_argnum_of_node_clone;
162704 + const_tree correct_argnum_of_node_decl, node_decl;
162705 +
162706 + if (node == correct_argnum_of_node)
162707 + return argnum;
162708 + if (argnum == 0)
162709 + return argnum;
162710 +
162711 + correct_argnum_of_node_decl = NODE_DECL(correct_argnum_of_node);
162712 + gcc_assert(correct_argnum_of_node_decl != NULL_TREE);
162713 + gcc_assert(correct_argnum_of_node && !DECL_ARTIFICIAL(correct_argnum_of_node_decl));
162714 +
162715 + if (node) {
162716 + node_decl = NODE_DECL(node);
162717 + gcc_assert(!DECL_ARTIFICIAL(node_decl));
162718 + node_clone = made_by_compiler(node_decl);
162719 + } else {
162720 + node_decl = NULL_TREE;
162721 + node_clone = false;
162722 + }
162723 +
162724 + if (correct_argnum_of_node_decl == node_decl)
162725 + return argnum;
162726 +
162727 + correct_argnum_of_node_clone = made_by_compiler(correct_argnum_of_node_decl);
162728 + // the original decl is lost if both nodes are clones
162729 + if (node_clone && correct_argnum_of_node_clone) {
162730 + gcc_assert(unchanged_arglist(node, correct_argnum_of_node));
162731 + return argnum;
162732 + }
162733 +
162734 + if (node_clone && !correct_argnum_of_node_clone)
162735 + return clone_argnum_on_orig(correct_argnum_of_node, node, argnum);
162736 + else if (!node_clone && correct_argnum_of_node_clone)
162737 + return orig_argnum_on_clone(correct_argnum_of_node, node, argnum);
162738 +
162739 + if (node)
162740 + debug_tree((tree)NODE_DECL(node));
162741 + debug_tree((tree)correct_argnum_of_node_decl);
162742 + gcc_unreachable();
162743 +}
162744 +
162745 +unsigned int get_correct_argnum(const_tree decl, const_tree correct_argnum_of_decl, unsigned int argnum)
162746 +{
162747 + struct cgraph_node *node, *correct_argnum_of_node;
162748 +
162749 + gcc_assert(decl != NULL_TREE);
162750 + gcc_assert(correct_argnum_of_decl != NULL_TREE);
162751 +
162752 + correct_argnum_of_node = get_cnode(correct_argnum_of_decl);
162753 + if (!correct_argnum_of_node || DECL_ARTIFICIAL(decl) || DECL_ARTIFICIAL(correct_argnum_of_decl))
162754 + return get_correct_argnum_fndecl(decl, correct_argnum_of_decl, argnum);
162755 +
162756 + node = get_cnode(decl);
162757 + return get_correct_argnum_cnode(node, correct_argnum_of_node, argnum);
162758 +}
162759 +
162760 +// Find the original cloned function
162761 +tree get_orig_fndecl(const_tree clone_fndecl)
162762 +{
162763 + struct cgraph_node *node;
162764 +
162765 + gcc_assert(TREE_CODE(clone_fndecl) == FUNCTION_DECL);
162766 +
162767 + if (DECL_ABSTRACT_ORIGIN(clone_fndecl))
162768 + return (tree)DECL_ORIGIN(clone_fndecl);
162769 + node = get_cnode(clone_fndecl);
162770 + if (!node)
162771 + return (tree)clone_fndecl;
162772 +
162773 + while (node->clone_of)
162774 + node = node->clone_of;
162775 + if (!made_by_compiler(NODE_DECL(node)))
162776 + return NODE_DECL(node);
162777 + // Return the cloned decl because it is needed for the transform callback
162778 + return (tree)clone_fndecl;
162779 +}
162780 +
162781 +static tree get_interesting_fndecl_from_stmt(const gcall *stmt)
162782 +{
162783 + if (gimple_call_num_args(stmt) == 0)
162784 + return NULL_TREE;
162785 + return gimple_call_fndecl(stmt);
162786 +}
162787 +
162788 +tree get_interesting_orig_fndecl_from_stmt(const gcall *stmt)
162789 +{
162790 + tree fndecl;
162791 +
162792 + fndecl = get_interesting_fndecl_from_stmt(stmt);
162793 + if (fndecl == NULL_TREE)
162794 + return NULL_TREE;
162795 + return get_orig_fndecl(fndecl);
162796 +}
162797 +
162798 +void set_dominance_info(void)
162799 +{
162800 + calculate_dominance_info(CDI_DOMINATORS);
162801 + calculate_dominance_info(CDI_POST_DOMINATORS);
162802 +}
162803 +
162804 +void unset_dominance_info(void)
162805 +{
162806 + free_dominance_info(CDI_DOMINATORS);
162807 + free_dominance_info(CDI_POST_DOMINATORS);
162808 +}
162809 +
162810 +void set_current_function_decl(tree fndecl)
162811 +{
162812 + gcc_assert(fndecl != NULL_TREE);
162813 +
162814 + push_cfun(DECL_STRUCT_FUNCTION(fndecl));
162815 +#if BUILDING_GCC_VERSION <= 4007
162816 + current_function_decl = fndecl;
162817 +#endif
162818 + set_dominance_info();
162819 +}
162820 +
162821 +void unset_current_function_decl(void)
162822 +{
162823 + unset_dominance_info();
162824 +#if BUILDING_GCC_VERSION <= 4007
162825 + current_function_decl = NULL_TREE;
162826 +#endif
162827 + pop_cfun();
162828 +}
162829 +
162830 +bool is_valid_cgraph_node(struct cgraph_node *node)
162831 +{
162832 + if (cgraph_function_body_availability(node) == AVAIL_NOT_AVAILABLE)
162833 + return false;
162834 + if (node->thunk.thunk_p || node->alias)
162835 + return false;
162836 + return true;
162837 +}
162838 +
162839 +tree get_lhs(const_gimple stmt)
162840 +{
162841 + switch (gimple_code(stmt)) {
162842 + case GIMPLE_ASSIGN:
162843 + case GIMPLE_CALL:
162844 + return gimple_get_lhs(stmt);
162845 + case GIMPLE_PHI:
162846 + return gimple_phi_result(stmt);
162847 + default:
162848 + debug_gimple_stmt((gimple)stmt);
162849 + gcc_unreachable();
162850 + }
162851 +}
162852 +
162853 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
162854 new file mode 100644
162855 index 0000000..8d5e84d
162856 --- /dev/null
162857 +++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
162858 @@ -0,0 +1,318 @@
162859 +/*
162860 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
162861 + * Licensed under the GPL v2, or (at your option) v3
162862 + *
162863 + * Homepage:
162864 + * https://github.com/ephox-gcc-plugins/size_overflow
162865 + *
162866 + * Documentation:
162867 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
162868 + *
162869 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
162870 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
162871 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
162872 + *
162873 + * Usage:
162874 + * $ make
162875 + * $ make run
162876 + */
162877 +
162878 +#include "size_overflow.h"
162879 +
162880 +int plugin_is_GPL_compatible;
162881 +
162882 +tree report_size_overflow_decl;
162883 +
162884 +tree size_overflow_type_HI;
162885 +tree size_overflow_type_SI;
162886 +tree size_overflow_type_DI;
162887 +tree size_overflow_type_TI;
162888 +
162889 +static struct plugin_info size_overflow_plugin_info = {
162890 + .version = "20150929",
162891 + .help = "no-size-overflow\tturn off size overflow checking\n",
162892 +};
162893 +
162894 +static tree handle_size_overflow_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs)
162895 +{
162896 + unsigned int arg_count;
162897 + enum tree_code code = TREE_CODE(*node);
162898 +
162899 + switch (code) {
162900 + case FUNCTION_DECL:
162901 + arg_count = type_num_arguments(TREE_TYPE(*node));
162902 + break;
162903 + case FUNCTION_TYPE:
162904 + case METHOD_TYPE:
162905 + arg_count = type_num_arguments(*node);
162906 + break;
162907 + default:
162908 + *no_add_attrs = true;
162909 + debug_tree(*node);
162910 + error("%s: %qE attribute only applies to functions", __func__, name);
162911 + return NULL_TREE;
162912 + }
162913 +
162914 + for (; args; args = TREE_CHAIN(args)) {
162915 + int cur_val;
162916 + tree position = TREE_VALUE(args);
162917 +
162918 + if (TREE_CODE(position) != INTEGER_CST) {
162919 + error("%s: parameter isn't an integer", __func__);
162920 + debug_tree(args);
162921 + *no_add_attrs = true;
162922 + return NULL_TREE;
162923 + }
162924 +
162925 + cur_val = tree_to_shwi(position);
162926 + if (cur_val < 0 || arg_count < (unsigned int)cur_val) {
162927 + error("%s: parameter %d is outside range.", __func__, cur_val);
162928 + *no_add_attrs = true;
162929 + return NULL_TREE;
162930 + }
162931 + }
162932 + return NULL_TREE;
162933 +}
162934 +
162935 +static tree handle_intentional_overflow_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs)
162936 +{
162937 + unsigned int arg_count;
162938 + HOST_WIDE_INT s_first_arg;
162939 + enum tree_code code = TREE_CODE(*node);
162940 +
162941 + switch (code) {
162942 + case FUNCTION_DECL:
162943 + arg_count = type_num_arguments(TREE_TYPE(*node));
162944 + break;
162945 + case FUNCTION_TYPE:
162946 + case METHOD_TYPE:
162947 + arg_count = type_num_arguments(*node);
162948 + break;
162949 + case VAR_DECL:
162950 + case FIELD_DECL:
162951 + return NULL_TREE;
162952 + default:
162953 + *no_add_attrs = true;
162954 + debug_tree(*node);
162955 + error("%qE attribute only applies to functions, fields or vars", name);
162956 + return NULL_TREE;
162957 + }
162958 +
162959 + s_first_arg = tree_to_shwi(TREE_VALUE(args));
162960 + if (s_first_arg == -1)
162961 + return NULL_TREE;
162962 + if (s_first_arg < -1)
162963 + error("%s: parameter %d is outside range.", __func__, (int)s_first_arg);
162964 +
162965 + for (; args; args = TREE_CHAIN(args)) {
162966 + unsigned int cur_val;
162967 +
162968 + if (TREE_CODE(TREE_VALUE(args)) != INTEGER_CST) {
162969 + error("%s: parameter isn't an integer", __func__);
162970 + debug_tree(args);
162971 + *no_add_attrs = true;
162972 + return NULL_TREE;
162973 + }
162974 +
162975 + cur_val = (unsigned int)tree_to_uhwi(TREE_VALUE(args));
162976 + if (cur_val > arg_count ) {
162977 + error("%s: parameter %u is outside range. (arg_count: %u)", __func__, cur_val, arg_count);
162978 + *no_add_attrs = true;
162979 + return NULL_TREE;
162980 + }
162981 + }
162982 + return NULL_TREE;
162983 +}
162984 +
162985 +static struct attribute_spec size_overflow_attr = {
162986 + .name = "size_overflow",
162987 + .min_length = 1,
162988 + .max_length = -1,
162989 + .decl_required = true,
162990 + .type_required = false,
162991 + .function_type_required = false,
162992 + .handler = handle_size_overflow_attribute,
162993 +#if BUILDING_GCC_VERSION >= 4007
162994 + .affects_type_identity = false
162995 +#endif
162996 +};
162997 +
162998 +static struct attribute_spec intentional_overflow_attr = {
162999 + .name = "intentional_overflow",
163000 + .min_length = 1,
163001 + .max_length = -1,
163002 + .decl_required = true,
163003 + .type_required = false,
163004 + .function_type_required = false,
163005 + .handler = handle_intentional_overflow_attribute,
163006 +#if BUILDING_GCC_VERSION >= 4007
163007 + .affects_type_identity = false
163008 +#endif
163009 +};
163010 +
163011 +static void register_attributes(void __unused *event_data, void __unused *data)
163012 +{
163013 + register_attribute(&size_overflow_attr);
163014 + register_attribute(&intentional_overflow_attr);
163015 +}
163016 +
163017 +static tree create_typedef(tree type, const char* ident)
163018 +{
163019 + tree new_type, decl;
163020 +
163021 + new_type = build_variant_type_copy(type);
163022 + decl = build_decl(BUILTINS_LOCATION, TYPE_DECL, get_identifier(ident), new_type);
163023 + DECL_ORIGINAL_TYPE(decl) = type;
163024 + TYPE_NAME(new_type) = decl;
163025 + return new_type;
163026 +}
163027 +
163028 +// Create the noreturn report_size_overflow() function decl.
163029 +static void size_overflow_start_unit(void __unused *gcc_data, void __unused *user_data)
163030 +{
163031 + tree const_char_ptr_type_node;
163032 + tree fntype;
163033 +
163034 + const_char_ptr_type_node = build_pointer_type(build_type_variant(char_type_node, 1, 0));
163035 +
163036 + size_overflow_type_HI = create_typedef(intHI_type_node, "size_overflow_type_HI");
163037 + size_overflow_type_SI = create_typedef(intSI_type_node, "size_overflow_type_SI");
163038 + size_overflow_type_DI = create_typedef(intDI_type_node, "size_overflow_type_DI");
163039 + size_overflow_type_TI = create_typedef(intTI_type_node, "size_overflow_type_TI");
163040 +
163041 + // void report_size_overflow(const char *loc_file, unsigned int loc_line, const char *current_func, const char *ssa_var)
163042 + fntype = build_function_type_list(void_type_node,
163043 + const_char_ptr_type_node,
163044 + unsigned_type_node,
163045 + const_char_ptr_type_node,
163046 + const_char_ptr_type_node,
163047 + NULL_TREE);
163048 + report_size_overflow_decl = build_fn_decl("report_size_overflow", fntype);
163049 +
163050 + DECL_ASSEMBLER_NAME(report_size_overflow_decl);
163051 + TREE_PUBLIC(report_size_overflow_decl) = 1;
163052 + DECL_EXTERNAL(report_size_overflow_decl) = 1;
163053 + DECL_ARTIFICIAL(report_size_overflow_decl) = 1;
163054 + TREE_THIS_VOLATILE(report_size_overflow_decl) = 1;
163055 +// !!!
163056 + DECL_PRESERVE_P(report_size_overflow_decl) = 1;
163057 + DECL_UNINLINABLE(report_size_overflow_decl) = 1;
163058 + TREE_USED(report_size_overflow_decl) = 1;
163059 + TREE_NOTHROW(report_size_overflow_decl) = 1;
163060 +}
163061 +
163062 +#if BUILDING_GCC_VERSION >= 4009
163063 +static bool gate_disable_ubsan_si_overflow(void)
163064 +{
163065 + flag_sanitize &= ~SANITIZE_SI_OVERFLOW;
163066 + return true;
163067 +}
163068 +
163069 +static const struct pass_data disable_ubsan_si_overflow_pass_data = {
163070 + .type = GIMPLE_PASS,
163071 + .name = "disable_ubsan_si_overflow",
163072 + .optinfo_flags = OPTGROUP_NONE,
163073 +#if BUILDING_GCC_VERSION >= 5000
163074 +#else
163075 + .has_gate = true,
163076 + .has_execute = false,
163077 +#endif
163078 + .tv_id = TV_NONE,
163079 + .properties_required = 0,
163080 + .properties_provided = 0,
163081 + .properties_destroyed = 0,
163082 + .todo_flags_start = 0,
163083 + .todo_flags_finish = 0
163084 +};
163085 +
163086 +namespace {
163087 +class disable_ubsan_si_overflow_pass : public gimple_opt_pass {
163088 +public:
163089 + disable_ubsan_si_overflow_pass() : gimple_opt_pass(disable_ubsan_si_overflow_pass_data, g) {}
163090 +#if BUILDING_GCC_VERSION >= 5000
163091 + virtual bool gate(function *) { return gate_disable_ubsan_si_overflow(); }
163092 +#else
163093 + bool gate() { return gate_disable_ubsan_si_overflow(); }
163094 +#endif
163095 +};
163096 +}
163097 +
163098 +opt_pass *make_disable_ubsan_si_overflow_pass(void)
163099 +{
163100 + return new disable_ubsan_si_overflow_pass();
163101 +}
163102 +#endif
163103 +
163104 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
163105 +{
163106 + int i;
163107 + const char * const plugin_name = plugin_info->base_name;
163108 + const int argc = plugin_info->argc;
163109 + const struct plugin_argument * const argv = plugin_info->argv;
163110 + bool enable = true;
163111 + struct register_pass_info insert_size_overflow_asm_pass_info;
163112 + struct register_pass_info size_overflow_functions_pass_info;
163113 +#if BUILDING_GCC_VERSION >= 4009
163114 + struct register_pass_info disable_ubsan_si_overflow_pass_info;
163115 +#endif
163116 +
163117 + static const struct ggc_root_tab gt_ggc_r_gt_size_overflow[] = {
163118 + {
163119 + .base = &report_size_overflow_decl,
163120 + .nelt = 1,
163121 + .stride = sizeof(report_size_overflow_decl),
163122 + .cb = &gt_ggc_mx_tree_node,
163123 + .pchw = &gt_pch_nx_tree_node
163124 + },
163125 + LAST_GGC_ROOT_TAB
163126 + };
163127 +
163128 + insert_size_overflow_asm_pass_info.pass = make_insert_size_overflow_asm_pass();
163129 + insert_size_overflow_asm_pass_info.reference_pass_name = "ssa";
163130 + insert_size_overflow_asm_pass_info.ref_pass_instance_number = 1;
163131 + insert_size_overflow_asm_pass_info.pos_op = PASS_POS_INSERT_AFTER;
163132 +
163133 + size_overflow_functions_pass_info.pass = make_size_overflow_functions_pass();
163134 + size_overflow_functions_pass_info.reference_pass_name = "inline";
163135 + size_overflow_functions_pass_info.ref_pass_instance_number = 1;
163136 + size_overflow_functions_pass_info.pos_op = PASS_POS_INSERT_AFTER;
163137 +
163138 + if (!plugin_default_version_check(version, &gcc_version)) {
163139 + error(G_("incompatible gcc/plugin versions"));
163140 + return 1;
163141 + }
163142 +
163143 + for (i = 0; i < argc; ++i) {
163144 + if (!strcmp(argv[i].key, "no-size-overflow")) {
163145 + enable = false;
163146 + continue;
163147 + }
163148 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
163149 + }
163150 +
163151 + register_callback(plugin_name, PLUGIN_INFO, NULL, &size_overflow_plugin_info);
163152 + if (enable) {
163153 +#if BUILDING_GCC_VERSION >= 4009
163154 + if (flag_sanitize & SANITIZE_SI_OVERFLOW) {
163155 + error(G_("ubsan SANITIZE_SI_OVERFLOW option is unsupported"));
163156 + return 1;
163157 + }
163158 +#endif
163159 + register_callback(plugin_name, PLUGIN_START_UNIT, &size_overflow_start_unit, NULL);
163160 + register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_size_overflow);
163161 +#if BUILDING_GCC_VERSION >= 4009
163162 + flag_sanitize |= SANITIZE_SI_OVERFLOW;
163163 + disable_ubsan_si_overflow_pass_info.pass = make_disable_ubsan_si_overflow_pass();
163164 + disable_ubsan_si_overflow_pass_info.reference_pass_name = "ubsan";
163165 + disable_ubsan_si_overflow_pass_info.ref_pass_instance_number = 1;
163166 + disable_ubsan_si_overflow_pass_info.pos_op = PASS_POS_REPLACE;
163167 +
163168 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &disable_ubsan_si_overflow_pass_info);
163169 +#endif
163170 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &insert_size_overflow_asm_pass_info);
163171 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &size_overflow_functions_pass_info);
163172 + }
163173 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
163174 +
163175 + return 0;
163176 +}
163177 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c
163178 new file mode 100644
163179 index 0000000..72e5d19
163180 --- /dev/null
163181 +++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin_hash.c
163182 @@ -0,0 +1,353 @@
163183 +/*
163184 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
163185 + * Licensed under the GPL v2, or (at your option) v3
163186 + *
163187 + * Homepage:
163188 + * https://github.com/ephox-gcc-plugins/size_overflow
163189 + *
163190 + * Documentation:
163191 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
163192 + *
163193 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
163194 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
163195 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
163196 + *
163197 + * Usage:
163198 + * $ make
163199 + * $ make run
163200 + */
163201 +
163202 +#include "size_overflow.h"
163203 +
163204 +#include "size_overflow_hash.h"
163205 +#include "disable_size_overflow_hash.h"
163206 +#include "size_overflow_hash_aux.h"
163207 +
163208 +static const_tree get_function_type(const_tree decl)
163209 +{
163210 + if (FUNCTION_PTR_P(decl))
163211 + return TREE_TYPE(TREE_TYPE(decl));
163212 + gcc_assert(TREE_CODE(decl) == FUNCTION_DECL);
163213 + return TREE_TYPE(decl);
163214 +}
163215 +
163216 +static unsigned char get_tree_code(const_tree type)
163217 +{
163218 + switch (TREE_CODE(type)) {
163219 + case ARRAY_TYPE:
163220 + return 0;
163221 + case BOOLEAN_TYPE:
163222 + return 1;
163223 + case ENUMERAL_TYPE:
163224 + return 2;
163225 + case FUNCTION_TYPE:
163226 + return 3;
163227 + case INTEGER_TYPE:
163228 + return 4;
163229 + case POINTER_TYPE:
163230 + return 5;
163231 + case RECORD_TYPE:
163232 + return 6;
163233 + case UNION_TYPE:
163234 + return 7;
163235 + case VOID_TYPE:
163236 + return 8;
163237 + case REAL_TYPE:
163238 + return 9;
163239 + case VECTOR_TYPE:
163240 + return 10;
163241 + case REFERENCE_TYPE:
163242 + return 11;
163243 + case OFFSET_TYPE:
163244 + return 12;
163245 + case COMPLEX_TYPE:
163246 + return 13;
163247 + default:
163248 + debug_tree((tree)type);
163249 + gcc_unreachable();
163250 + }
163251 +}
163252 +
163253 +// http://www.team5150.com/~andrew/noncryptohashzoo2~/CrapWow.html
163254 +static unsigned int CrapWow(const char *key, unsigned int len, unsigned int seed)
163255 +{
163256 +#define cwfold( a, b, lo, hi ) { p = (unsigned int)(a) * (unsigned long long)(b); lo ^= (unsigned int)p; hi ^= (unsigned int)(p >> 32); }
163257 +#define cwmixa( in ) { cwfold( in, m, k, h ); }
163258 +#define cwmixb( in ) { cwfold( in, n, h, k ); }
163259 +
163260 + unsigned int m = 0x57559429;
163261 + unsigned int n = 0x5052acdb;
163262 + const unsigned int *key4 = (const unsigned int *)key;
163263 + unsigned int h = len;
163264 + unsigned int k = len + seed + n;
163265 + unsigned long long p;
163266 +
163267 + while (len >= 8) {
163268 + cwmixb(key4[0]) cwmixa(key4[1]) key4 += 2;
163269 + len -= 8;
163270 + }
163271 + if (len >= 4) {
163272 + cwmixb(key4[0]) key4 += 1;
163273 + len -= 4;
163274 + }
163275 + if (len)
163276 + cwmixa(key4[0] & ((1 << (len * 8)) - 1 ));
163277 + cwmixb(h ^ (k + n));
163278 + return k ^ h;
163279 +
163280 +#undef cwfold
163281 +#undef cwmixa
163282 +#undef cwmixb
163283 +}
163284 +
163285 +static void set_hash(struct decl_hash *decl_hash_data)
163286 +{
163287 + unsigned int fn, type, codes, seed = 0;
163288 +
163289 + fn = CrapWow(decl_hash_data->fn_name, strlen(decl_hash_data->fn_name), seed) & 0xffff;
163290 + codes = CrapWow((const char*)decl_hash_data->tree_codes, decl_hash_data->tree_codes_len, seed) & 0xffff;
163291 + type = CrapWow(decl_hash_data->context, strlen(decl_hash_data->context), 0) & 0xffff;
163292 + decl_hash_data->hash = type ^ fn ^ codes;
163293 +}
163294 +
163295 +static void set_decl_type_codes(const_tree type, struct decl_hash *decl_hash_data)
163296 +{
163297 + gcc_assert(type != NULL_TREE);
163298 + gcc_assert(TREE_CODE_CLASS(TREE_CODE(type)) == tcc_type);
163299 +
163300 + while (type && decl_hash_data->tree_codes_len < CODES_LIMIT) {
163301 + decl_hash_data->tree_codes[decl_hash_data->tree_codes_len] = get_tree_code(type);
163302 + decl_hash_data->tree_codes_len++;
163303 + type = TREE_TYPE(type);
163304 + }
163305 +}
163306 +
163307 +static void set_result_codes(const_tree node, struct decl_hash *decl_hash_data)
163308 +{
163309 + const_tree result;
163310 +
163311 + gcc_assert(node != NULL_TREE);
163312 +
163313 + if (DECL_P(node)) {
163314 + result = DECL_RESULT(node);
163315 + if (result != NULL_TREE)
163316 + return set_decl_type_codes(TREE_TYPE(result), decl_hash_data);
163317 + return set_result_codes(TREE_TYPE(node), decl_hash_data);
163318 + }
163319 +
163320 + gcc_assert(TYPE_P(node));
163321 +
163322 + if (TREE_CODE(node) == FUNCTION_TYPE)
163323 + return set_result_codes(TREE_TYPE(node), decl_hash_data);
163324 +
163325 + return set_decl_type_codes(node, decl_hash_data);
163326 +}
163327 +
163328 +static void set_decl_codes(struct decl_hash *decl_hash_data)
163329 +{
163330 + const_tree arg, type;
163331 + enum tree_code code;
163332 +
163333 + if (TREE_CODE(decl_hash_data->decl) == VAR_DECL || TREE_CODE(decl_hash_data->decl) == FIELD_DECL) {
163334 + set_decl_type_codes(TREE_TYPE(decl_hash_data->decl), decl_hash_data);
163335 + return;
163336 + }
163337 +
163338 + type = get_function_type(decl_hash_data->decl);
163339 + code = TREE_CODE(type);
163340 + gcc_assert(code == FUNCTION_TYPE || code == METHOD_TYPE);
163341 +
163342 + if (FUNCTION_PTR_P(decl_hash_data->decl))
163343 + set_result_codes(type, decl_hash_data);
163344 + else
163345 + set_result_codes(decl_hash_data->decl, decl_hash_data);
163346 +
163347 + for (arg = TYPE_ARG_TYPES(type); arg != NULL_TREE && decl_hash_data->tree_codes_len < CODES_LIMIT; arg = TREE_CHAIN(arg))
163348 + set_decl_type_codes(TREE_VALUE(arg), decl_hash_data);
163349 +}
163350 +
163351 +static const struct size_overflow_hash *get_proper_hash_chain(const struct size_overflow_hash *entry, const char *func_name, const char *context)
163352 +{
163353 + for (; entry; entry = entry->next) {
163354 + if (strcmp(entry->name, func_name))
163355 + continue;
163356 + if (!strcmp(entry->context, context))
163357 + return entry;
163358 + }
163359 + return NULL;
163360 +}
163361 +
163362 +unsigned int get_decl_hash(const_tree decl, const char *decl_name)
163363 +{
163364 + struct decl_hash decl_hash_data;
163365 + enum tree_code code = TREE_CODE(decl);
163366 +
163367 + gcc_assert(code == FIELD_DECL || code == FUNCTION_DECL || code == VAR_DECL);
163368 +
163369 + // skip builtins __builtin_constant_p
163370 + if (code == FUNCTION_DECL && (DECL_BUILT_IN(decl) || DECL_BUILT_IN_CLASS(decl) == BUILT_IN_NORMAL))
163371 + return NO_HASH;
163372 +
163373 + decl_hash_data.fn_name = decl_name;
163374 + decl_hash_data.decl = decl;
163375 + decl_hash_data.context = get_decl_context(decl);
163376 + if (!decl_hash_data.context)
163377 + return NO_HASH;
163378 + decl_hash_data.tree_codes_len = 0;
163379 +
163380 + set_decl_codes(&decl_hash_data);
163381 + gcc_assert(decl_hash_data.tree_codes_len != 0);
163382 + set_hash(&decl_hash_data);
163383 + return decl_hash_data.hash;
163384 +}
163385 +
163386 +const char *get_orig_decl_name(const_tree decl)
163387 +{
163388 + const char *name;
163389 + unsigned int len;
163390 + const void *end;
163391 + const_tree orig_decl;
163392 +
163393 + if (TREE_CODE(decl) == FUNCTION_DECL)
163394 + orig_decl = DECL_ORIGIN(decl);
163395 + else
163396 + orig_decl = decl;
163397 +
163398 + len = DECL_NAME_LENGTH(orig_decl);
163399 + name = DECL_NAME_POINTER(orig_decl);
163400 +
163401 + /* Sometimes gcc loses the original cgraph node leaving only clones behind.
163402 + * In such cases we will extract the name from the clone and use it in the hash table
163403 + * without checking the parameter number on the original (unavailable) decl.
163404 + */
163405 +
163406 + if (made_by_compiler(orig_decl)) {
163407 + end = memchr(name, '.', len);
163408 + if (!end)
163409 + return xstrndup(name, len);
163410 + len = (long)end - (long)name;
163411 + gcc_assert(len > 0);
163412 + }
163413 +
163414 + return xstrndup(name, len);
163415 +}
163416 +
163417 +const struct size_overflow_hash *get_disable_size_overflow_hash_entry(unsigned int hash, const char *decl_name, const char *context, unsigned int argnum)
163418 +{
163419 + const struct size_overflow_hash *entry, *entry_node;
163420 +
163421 + entry = disable_size_overflow_hash[hash];
163422 + entry_node = get_proper_hash_chain(entry, decl_name, context);
163423 + if (entry_node && entry_node->param & (1U << argnum))
163424 + return entry_node;
163425 + return NULL;
163426 +}
163427 +
163428 +const struct size_overflow_hash *get_size_overflow_hash_entry(unsigned int hash, const char *decl_name, const char *context, unsigned int argnum)
163429 +{
163430 + const struct size_overflow_hash *entry, *entry_node;
163431 +
163432 + entry = size_overflow_hash[hash];
163433 + entry_node = get_proper_hash_chain(entry, decl_name, context);
163434 + if (entry_node && entry_node->param & (1U << argnum))
163435 + return entry_node;
163436 +
163437 + entry = size_overflow_hash_aux[hash];
163438 + entry_node = get_proper_hash_chain(entry, decl_name, context);
163439 + if (entry_node && entry_node->param & (1U << argnum))
163440 + return entry_node;
163441 +
163442 + return get_disable_size_overflow_hash_entry(hash, decl_name, context, argnum);
163443 +}
163444 +
163445 +const struct size_overflow_hash *get_size_overflow_hash_entry_tree(const_tree fndecl, unsigned int argnum, bool only_from_disable_so_hash_table)
163446 +{
163447 + const_tree orig_decl;
163448 + unsigned int orig_argnum, hash;
163449 + const char *decl_name, *context;
163450 +
163451 + if (made_by_compiler(fndecl)) {
163452 + orig_decl = get_orig_fndecl(fndecl);
163453 + orig_argnum = get_correct_argnum(fndecl, orig_decl, argnum);
163454 + } else {
163455 + orig_decl = fndecl;
163456 + orig_argnum = argnum;
163457 + }
163458 +
163459 + if (orig_argnum == CANNOT_FIND_ARG)
163460 + return NULL;
163461 +
163462 + decl_name = get_orig_decl_name(orig_decl);
163463 + hash = get_decl_hash(orig_decl, decl_name);
163464 + if (hash == NO_HASH)
163465 + return NULL;
163466 +
163467 + context = get_decl_context(orig_decl);
163468 + if (!context)
163469 + return NULL;
163470 +
163471 + if (only_from_disable_so_hash_table)
163472 + return get_disable_size_overflow_hash_entry(hash, decl_name, context, orig_argnum);
163473 + return get_size_overflow_hash_entry(hash, decl_name, context, orig_argnum);
163474 +}
163475 +
163476 +unsigned int find_arg_number_tree(const_tree arg, const_tree func)
163477 +{
163478 + tree var;
163479 + unsigned int argnum = 1;
163480 +
163481 + if (DECL_ARGUMENTS(func) == NULL_TREE)
163482 + return CANNOT_FIND_ARG;
163483 +
163484 + if (TREE_CODE(arg) == SSA_NAME)
163485 + arg = SSA_NAME_VAR(arg);
163486 +
163487 + for (var = DECL_ARGUMENTS(func); var; var = TREE_CHAIN(var), argnum++) {
163488 + if (!operand_equal_p(arg, var, 0) && strcmp(DECL_NAME_POINTER(var), DECL_NAME_POINTER(arg)))
163489 + continue;
163490 + if (!skip_types(var))
163491 + return argnum;
163492 + }
163493 +
163494 + return CANNOT_FIND_ARG;
163495 +}
163496 +
163497 +const_tree get_attribute(const char* attr_name, const_tree decl)
163498 +{
163499 + const_tree attr = lookup_attribute(attr_name, DECL_ATTRIBUTES(decl));
163500 + if (attr && TREE_VALUE(attr))
163501 + return attr;
163502 + return NULL_TREE;
163503 +}
163504 +
163505 +/* Check if the function has a size_overflow attribute or it is in the size_overflow hash table.
163506 + * If the function is missing everywhere then print the missing message into stderr.
163507 + */
163508 +void print_missing_function(next_interesting_function_t node)
163509 +{
163510 + unsigned int argnum, hash;
163511 + const struct size_overflow_hash *entry;
163512 + const char *decl_name;
163513 +
163514 + if (node->marked == ASM_STMT_SO_MARK)
163515 + return;
163516 +
163517 + if (node->orig_next_node) {
163518 + hash = node->orig_next_node->hash;
163519 + decl_name = node->orig_next_node->decl_name;
163520 + argnum = node->orig_next_node->num;
163521 + gcc_assert(!strcmp(node->context, node->orig_next_node->context));
163522 + } else {
163523 + hash = node->hash;
163524 + decl_name = node->decl_name;
163525 + argnum = node->num;
163526 + }
163527 +
163528 + entry = get_size_overflow_hash_entry(hash, decl_name, node->context, argnum);
163529 + if (entry)
163530 + return;
163531 +
163532 + // inform() would be too slow
163533 + fprintf(stderr, "Function %s is missing from the %s hash table +%s+%s+%u+%u+\n", decl_name, node->marked == ERROR_CODE_SO_MARK?"disable_size_overflow":"size_overflow", decl_name, node->context, argnum, hash);
163534 +}
163535 +
163536 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_transform.c b/tools/gcc/size_overflow_plugin/size_overflow_transform.c
163537 new file mode 100644
163538 index 0000000..1249539
163539 --- /dev/null
163540 +++ b/tools/gcc/size_overflow_plugin/size_overflow_transform.c
163541 @@ -0,0 +1,576 @@
163542 +/*
163543 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
163544 + * Licensed under the GPL v2, or (at your option) v3
163545 + *
163546 + * Homepage:
163547 + * https://github.com/ephox-gcc-plugins/size_overflow
163548 + *
163549 + * Documentation:
163550 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
163551 + *
163552 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
163553 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
163554 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
163555 + *
163556 + * Usage:
163557 + * $ make
163558 + * $ make run
163559 + */
163560 +
163561 +#include "size_overflow.h"
163562 +struct interesting_stmts;
163563 +typedef struct interesting_stmts * interesting_stmts_t;
163564 +
163565 +struct interesting_stmts {
163566 + struct interesting_stmts *next;
163567 + next_interesting_function_t next_node;
163568 + gimple first_stmt;
163569 + tree orig_node;
163570 + unsigned int num;
163571 +};
163572 +
163573 +static tree cast_to_orig_type(struct visited *visited, gimple stmt, const_tree orig_node, tree new_node)
163574 +{
163575 + const_gimple assign;
163576 + tree orig_type = TREE_TYPE(orig_node);
163577 + gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
163578 +
163579 + assign = build_cast_stmt(visited, orig_type, new_node, CREATE_NEW_VAR, &gsi, BEFORE_STMT, false);
163580 + return get_lhs(assign);
163581 +}
163582 +
163583 +static void change_size_overflow_asm_input(gasm *stmt, tree new_input)
163584 +{
163585 + tree list;
163586 +
163587 + gcc_assert(is_size_overflow_insert_check_asm(stmt));
163588 +
163589 + list = build_tree_list(NULL_TREE, build_string(3, "rm"));
163590 + list = chainon(NULL_TREE, build_tree_list(list, new_input));
163591 + gimple_asm_set_input_op(stmt, 0, list);
163592 +}
163593 +
163594 +static void change_field_write_rhs(gassign *assign, const_tree orig_rhs, tree new_rhs)
163595 +{
163596 + const_tree rhs1, rhs2, rhs3 = NULL_TREE;
163597 +
163598 + rhs1 = gimple_assign_rhs1(assign);
163599 + if (rhs1 == orig_rhs) {
163600 + gimple_assign_set_rhs1(assign, new_rhs);
163601 + return;
163602 + }
163603 +
163604 + rhs2 = gimple_assign_rhs2(assign);
163605 + if (rhs2 == orig_rhs) {
163606 + gimple_assign_set_rhs2(assign, new_rhs);
163607 + return;
163608 + }
163609 +
163610 +#if BUILDING_GCC_VERSION >= 4006
163611 + rhs3 = gimple_assign_rhs3(assign);
163612 + if (rhs3 == orig_rhs) {
163613 + gimple_assign_set_rhs3(assign, new_rhs);
163614 + return;
163615 + }
163616 +#endif
163617 +
163618 + debug_gimple_stmt(assign);
163619 + fprintf(stderr, "orig_rhs:\n");
163620 + debug_tree((tree)orig_rhs);
163621 + fprintf(stderr, "rhs1:\n");
163622 + debug_tree((tree)rhs1);
163623 + fprintf(stderr, "rhs2:\n");
163624 + debug_tree((tree)rhs2);
163625 + fprintf(stderr, "rhs3:\n");
163626 + debug_tree((tree)rhs3);
163627 + gcc_unreachable();
163628 +}
163629 +
163630 +static void change_orig_node(struct visited *visited, gimple stmt, const_tree orig_node, tree new_node, unsigned int num)
163631 +{
163632 + tree cast_lhs = cast_to_orig_type(visited, stmt, orig_node, new_node);
163633 +
163634 + switch (gimple_code(stmt)) {
163635 + case GIMPLE_RETURN:
163636 + gimple_return_set_retval(as_a_greturn(stmt), cast_lhs);
163637 + break;
163638 + case GIMPLE_CALL:
163639 + gimple_call_set_arg(as_a_gcall(stmt), num - 1, cast_lhs);
163640 + break;
163641 + case GIMPLE_ASM:
163642 + change_size_overflow_asm_input(as_a_gasm(stmt), cast_lhs);
163643 + break;
163644 + case GIMPLE_ASSIGN:
163645 + change_field_write_rhs(as_a_gassign(stmt), orig_node, cast_lhs);
163646 + break;
163647 + default:
163648 + debug_gimple_stmt(stmt);
163649 + gcc_unreachable();
163650 + }
163651 +
163652 + update_stmt(stmt);
163653 +}
163654 +
163655 +// e.g., 3.8.2, 64, arch/x86/ia32/ia32_signal.c copy_siginfo_from_user32(): compat_ptr() u32 max
163656 +static bool skip_asm_cast(const_tree arg)
163657 +{
163658 + gimple def_stmt = get_def_stmt(arg);
163659 +
163660 + if (!def_stmt || !gimple_assign_cast_p(def_stmt))
163661 + return false;
163662 +
163663 + def_stmt = get_def_stmt(gimple_assign_rhs1(def_stmt));
163664 + if (is_size_overflow_asm(def_stmt))
163665 + return false;
163666 + return def_stmt && gimple_code(def_stmt) == GIMPLE_ASM;
163667 +}
163668 +
163669 +static interesting_stmts_t create_interesting_stmts(interesting_stmts_t head, next_interesting_function_t next_node, tree orig_node, gimple first_stmt, unsigned int num)
163670 +{
163671 + interesting_stmts_t new_node;
163672 +
163673 + new_node = (interesting_stmts_t )xmalloc(sizeof(*new_node));
163674 + new_node->first_stmt = first_stmt;
163675 + new_node->num = num;
163676 + new_node->orig_node = orig_node;
163677 + new_node->next = head;
163678 + new_node->next_node = next_node;
163679 + return new_node;
163680 +}
163681 +
163682 +static void free_interesting_stmts(interesting_stmts_t head)
163683 +{
163684 + while (head) {
163685 + interesting_stmts_t cur = head->next;
163686 + free(head);
163687 + head = cur;
163688 + }
163689 +}
163690 +
163691 +/* This function calls the main recursion function (expand) that duplicates the stmts. Before that it checks the intentional_overflow attribute,
163692 + * it decides whether the duplication is necessary or not. After expand() it changes the orig node to the duplicated node
163693 + * in the original stmt (first stmt) and it inserts the overflow check for the arg of the callee or for the return value.
163694 + */
163695 +static interesting_stmts_t search_interesting_stmt(interesting_stmts_t head, next_interesting_function_t next_node, gimple first_stmt, tree orig_node, unsigned int num)
163696 +{
163697 + enum tree_code orig_code;
163698 +
163699 + gcc_assert(orig_node != NULL_TREE);
163700 +
163701 + if (is_gimple_constant(orig_node))
163702 + return head;
163703 +
163704 + orig_code = TREE_CODE(orig_node);
163705 + gcc_assert(orig_code != FIELD_DECL && orig_code != FUNCTION_DECL);
163706 +
163707 + if (skip_types(orig_node))
163708 + return head;
163709 +
163710 + // find a defining marked caller argument or struct field for arg
163711 + if (check_intentional_size_overflow_asm_and_attribute(orig_node) != MARK_NO)
163712 + return head;
163713 +
163714 + if (SSA_NAME_IS_DEFAULT_DEF(orig_node))
163715 + return head;
163716 +
163717 + if (skip_asm_cast(orig_node))
163718 + return head;
163719 +
163720 + return create_interesting_stmts(head, next_node, orig_node, first_stmt, num);
163721 +}
163722 +
163723 +static void handle_interesting_stmt(struct visited *visited, interesting_stmts_t head)
163724 +{
163725 + interesting_stmts_t cur;
163726 +
163727 + for (cur = head; cur; cur = cur->next) {
163728 + tree new_node;
163729 +
163730 + new_node = expand(visited, cur->next_node, cur->orig_node);
163731 + if (new_node == NULL_TREE)
163732 + continue;
163733 +
163734 + change_orig_node(visited, cur->first_stmt, cur->orig_node, new_node, cur->num);
163735 + check_size_overflow(cur->next_node, cur->first_stmt, TREE_TYPE(new_node), new_node, cur->orig_node, BEFORE_STMT);
163736 + }
163737 +}
163738 +
163739 +static next_interesting_function_t get_interesting_function_next_node(tree decl, unsigned int num)
163740 +{
163741 + next_interesting_function_t next_node;
163742 + const struct size_overflow_hash *so_hash, *disable_so_hash;
163743 + struct fn_raw_data raw_data;
163744 +
163745 + raw_data.decl = decl;
163746 + raw_data.decl_str = DECL_NAME_POINTER(decl);
163747 + raw_data.num = num;
163748 + raw_data.marked = YES_SO_MARK;
163749 +
163750 + next_node = get_global_next_interesting_function_entry_with_hash(&raw_data);
163751 + if (next_node && next_node->marked == ERROR_CODE_SO_MARK)
163752 + return NULL;
163753 + if (next_node && next_node->marked != NO_SO_MARK)
163754 + return next_node;
163755 +
163756 + disable_so_hash = get_size_overflow_hash_entry_tree(raw_data.decl, raw_data.num, ONLY_DISABLE_SO);
163757 + if (disable_so_hash != NULL)
163758 + return NULL;
163759 +
163760 + so_hash = get_size_overflow_hash_entry_tree(raw_data.decl, raw_data.num, ONLY_SO);
163761 + if (so_hash)
163762 + return get_and_create_next_node_from_global_next_nodes(&raw_data, NULL);
163763 + return NULL;
163764 +}
163765 +
163766 +tree handle_fnptr_assign(const_gimple stmt)
163767 +{
163768 + tree field, rhs, op0;
163769 + const_tree op0_type;
163770 + enum tree_code rhs_code;
163771 +
163772 + // TODO skip binary assignments for now (fs/sync.c _591 = __bpf_call_base + _590;)
163773 + if (gimple_num_ops(stmt) != 2)
163774 + return NULL_TREE;
163775 +
163776 + gcc_assert(gimple_num_ops(stmt) == 2);
163777 + // TODO skip asm_stmt for now
163778 + if (gimple_code(stmt) == GIMPLE_ASM)
163779 + return NULL_TREE;
163780 + rhs = gimple_assign_rhs1(stmt);
163781 + if (is_gimple_constant(rhs))
163782 + return NULL_TREE;
163783 +
163784 + rhs_code = TREE_CODE(rhs);
163785 + if (rhs_code == VAR_DECL)
163786 + return rhs;
163787 +
163788 + switch (rhs_code) {
163789 + case ADDR_EXPR:
163790 + op0 = TREE_OPERAND(rhs, 0);
163791 + gcc_assert(TREE_CODE(op0) == FUNCTION_DECL);
163792 + return op0;
163793 + case COMPONENT_REF:
163794 + break;
163795 + // TODO skip array_ref for now
163796 + case ARRAY_REF:
163797 + return NULL_TREE;
163798 + // TODO skip ssa_name because it can lead to parm_decl
163799 + case SSA_NAME:
163800 + return NULL_TREE;
163801 + // TODO skip mem_ref and indirect_ref for now
163802 +#if BUILDING_GCC_VERSION >= 4006
163803 + case MEM_REF:
163804 +#endif
163805 + case INDIRECT_REF:
163806 + return NULL_TREE;
163807 + default:
163808 + debug_tree(rhs);
163809 + debug_gimple_stmt((gimple)stmt);
163810 + gcc_unreachable();
163811 + }
163812 +
163813 + op0 = TREE_OPERAND(rhs, 0);
163814 + switch (TREE_CODE(op0)) {
163815 + // TODO skip array_ref and parm_decl for now
163816 + case ARRAY_REF:
163817 + case PARM_DECL:
163818 + return NULL_TREE;
163819 + case COMPONENT_REF:
163820 +#if BUILDING_GCC_VERSION >= 4006
163821 + case MEM_REF:
163822 +#endif
163823 + case INDIRECT_REF:
163824 + case VAR_DECL:
163825 + break;
163826 + default:
163827 + debug_tree(op0);
163828 + gcc_unreachable();
163829 + }
163830 +
163831 + op0_type = TREE_TYPE(op0);
163832 + // TODO skip unions for now
163833 + if (TREE_CODE(op0_type) == UNION_TYPE)
163834 + return NULL_TREE;
163835 + gcc_assert(TREE_CODE(op0_type) == RECORD_TYPE);
163836 +
163837 + field = TREE_OPERAND(rhs, 1);
163838 + gcc_assert(TREE_CODE(field) == FIELD_DECL);
163839 + return field;
163840 +}
163841 +
163842 +static tree get_fn_or_fnptr_decl(const gcall *call_stmt)
163843 +{
163844 + const_tree fnptr;
163845 + const_gimple def_stmt;
163846 + tree decl = gimple_call_fndecl(call_stmt);
163847 +
163848 + if (decl != NULL_TREE)
163849 + return decl;
163850 +
163851 + fnptr = gimple_call_fn(call_stmt);
163852 + // !!! assertot kell irni 0-ra, mert csak az lehet ott
163853 + if (is_gimple_constant(fnptr))
163854 + return NULL_TREE;
163855 + def_stmt = get_fnptr_def_stmt(fnptr);
163856 + return handle_fnptr_assign(def_stmt);
163857 +}
163858 +
163859 +// Start stmt duplication on marked function parameters
163860 +static interesting_stmts_t search_interesting_calls(interesting_stmts_t head, gcall *call_stmt)
163861 +{
163862 + tree decl;
163863 + unsigned int i, len;
163864 +
163865 + len = gimple_call_num_args(call_stmt);
163866 + if (len == 0)
163867 + return head;
163868 +
163869 + decl = get_fn_or_fnptr_decl(call_stmt);
163870 + if (decl == NULL_TREE)
163871 + return head;
163872 +
163873 + for (i = 0; i < len; i++) {
163874 + tree arg;
163875 + next_interesting_function_t next_node;
163876 +
163877 + arg = gimple_call_arg(call_stmt, i);
163878 + if (is_gimple_constant(arg))
163879 + continue;
163880 + if (skip_types(arg))
163881 + continue;
163882 + next_node = get_interesting_function_next_node(decl, i + 1);
163883 + if (next_node)
163884 + head = search_interesting_stmt(head, next_node, call_stmt, arg, i + 1);
163885 + }
163886 +
163887 + return head;
163888 +}
163889 +
163890 +// Find assignements to structure fields and vardecls
163891 +static interesting_stmts_t search_interesting_structs_vardecls(interesting_stmts_t head, gassign *assign)
163892 +{
163893 + enum intentional_mark mark;
163894 + next_interesting_function_t next_node;
163895 + tree rhs1, rhs2, lhs, decl;
163896 +#if BUILDING_GCC_VERSION >= 4006
163897 + tree rhs3;
163898 +#endif
163899 +
163900 + lhs = gimple_assign_lhs(assign);
163901 +
163902 + if (VAR_P(lhs))
163903 + decl = lhs;
163904 + else
163905 + decl = get_ref_field(lhs);
163906 + if (decl == NULL_TREE)
163907 + return head;
163908 + if (DECL_NAME(decl) == NULL_TREE)
163909 + return head;
163910 +
163911 + next_node = get_interesting_function_next_node(decl, 0);
163912 + if (!next_node)
163913 + return head;
163914 +
163915 + mark = get_intentional_attr_type(decl);
163916 + if (mark != MARK_NO)
163917 + return head;
163918 +
163919 + if (is_intentional_truncation(assign))
163920 + return head;
163921 +
163922 + rhs1 = gimple_assign_rhs1(assign);
163923 + head = search_interesting_stmt(head, next_node, assign, rhs1, 0);
163924 +
163925 + rhs2 = gimple_assign_rhs2(assign);
163926 + if (rhs2)
163927 + head = search_interesting_stmt(head, next_node, assign, rhs2, 0);
163928 +
163929 +#if BUILDING_GCC_VERSION >= 4006
163930 + rhs3 = gimple_assign_rhs3(assign);
163931 + if (rhs3)
163932 + head = search_interesting_stmt(head, next_node, assign, rhs3, 0);
163933 +#endif
163934 + return head;
163935 +}
163936 +
163937 +static next_interesting_function_t create_so_asm_next_interesting_function_node(const gasm *stmt)
163938 +{
163939 + next_interesting_function_t next_node;
163940 + struct fn_raw_data raw_data;
163941 +
163942 + raw_data.decl = NULL_TREE;
163943 + raw_data.decl_str = gimple_asm_string(stmt);
163944 + raw_data.context = "attr";
163945 + raw_data.hash = 0;
163946 + raw_data.num = 0;
163947 + raw_data.marked = ASM_STMT_SO_MARK;
163948 +
163949 + next_node = get_global_next_interesting_function_entry(&raw_data);
163950 + if (next_node)
163951 + return next_node;
163952 + next_node = create_new_next_interesting_entry(&raw_data, NULL);
163953 + gcc_assert(next_node);
163954 +
163955 + add_to_global_next_interesting_function(next_node);
163956 + return next_node;
163957 +}
163958 +
163959 +// Collect interesting stmts for duplication
163960 +static void search_interesting_stmts(struct visited *visited)
163961 +{
163962 + basic_block bb;
163963 + next_interesting_function_t next_node_ret;
163964 + interesting_stmts_t head = NULL;
163965 +
163966 + next_node_ret = get_interesting_function_next_node(current_function_decl, 0);
163967 +
163968 + FOR_ALL_BB_FN(bb, cfun) {
163969 + gimple_stmt_iterator gsi;
163970 +
163971 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
163972 + tree first_node;
163973 + gimple stmt = gsi_stmt(gsi);
163974 +
163975 + switch (gimple_code(stmt)) {
163976 + case GIMPLE_ASM: {
163977 + next_interesting_function_t next_node;
163978 + const gasm *asm_stmt = as_a_gasm(stmt);
163979 +
163980 + if (!is_size_overflow_insert_check_asm(asm_stmt))
163981 + continue;
163982 + next_node = create_so_asm_next_interesting_function_node(asm_stmt);
163983 + first_node = get_size_overflow_asm_input(asm_stmt);
163984 + head = search_interesting_stmt(head, next_node, stmt, first_node, 0);
163985 + break;
163986 + }
163987 + case GIMPLE_RETURN:
163988 + if (!next_node_ret || next_node_ret->marked == ASM_STMT_SO_MARK)
163989 + continue;
163990 + first_node = gimple_return_retval(as_a_greturn(stmt));
163991 + if (first_node == NULL_TREE)
163992 + break;
163993 + head = search_interesting_stmt(head, next_node_ret, stmt, first_node, 0);
163994 + break;
163995 + case GIMPLE_CALL:
163996 + head = search_interesting_calls(head, as_a_gcall(stmt));
163997 + break;
163998 + case GIMPLE_ASSIGN:
163999 + /* !!! TODO LTO modeban nincs duplikalas a globalis valtozora, mert a tree mergek
164000 + * utan mar nem lehet megkulonboztetni attol a globalis valtozotol, aminek a scopeja csak a file
164001 + * igy a context nem vardecl lesz, hanem vardecl_filenev. De execute-ban kiirja, ha hianyzik a hash tablabol
164002 + * IPA-ban van duplikalas.
164003 + */
164004 + head = search_interesting_structs_vardecls(head, as_a_gassign(stmt));
164005 + break;
164006 + default:
164007 + break;
164008 + }
164009 + }
164010 + }
164011 +
164012 + handle_interesting_stmt(visited, head);
164013 + free_interesting_stmts(head);
164014 +}
164015 +
164016 +static struct visited *create_visited(void)
164017 +{
164018 + struct visited *new_node;
164019 +
164020 + new_node = (struct visited *)xmalloc(sizeof(*new_node));
164021 + new_node->stmts = pointer_set_create();
164022 + new_node->my_stmts = pointer_set_create();
164023 + new_node->skip_expr_casts = pointer_set_create();
164024 + new_node->no_cast_check = pointer_set_create();
164025 + return new_node;
164026 +}
164027 +
164028 +static void free_visited(struct visited *visited)
164029 +{
164030 + pointer_set_destroy(visited->stmts);
164031 + pointer_set_destroy(visited->my_stmts);
164032 + pointer_set_destroy(visited->skip_expr_casts);
164033 + pointer_set_destroy(visited->no_cast_check);
164034 +
164035 + free(visited);
164036 +}
164037 +
164038 +// Remove the size_overflow asm stmt and create an assignment from the input and output of the asm
164039 +static void replace_size_overflow_asm_with_assign(gasm *asm_stmt, tree lhs, tree rhs)
164040 +{
164041 + gassign *assign;
164042 + gimple_stmt_iterator gsi;
164043 +
164044 + // already removed
164045 + if (gimple_bb(asm_stmt) == NULL)
164046 + return;
164047 + gsi = gsi_for_stmt(asm_stmt);
164048 +
164049 + assign = gimple_build_assign(lhs, rhs);
164050 + gsi_insert_before(&gsi, assign, GSI_SAME_STMT);
164051 + SSA_NAME_DEF_STMT(lhs) = assign;
164052 +
164053 + gsi_remove(&gsi, true);
164054 +}
164055 +
164056 +// Replace our asm stmts with assignments (they are no longer needed and may interfere with later optimizations)
164057 +static void remove_size_overflow_asm(gimple stmt)
164058 +{
164059 + gimple_stmt_iterator gsi;
164060 + tree input, output;
164061 +
164062 + if (!is_size_overflow_asm(stmt))
164063 + return;
164064 +
164065 + if (gimple_asm_noutputs(as_a_gasm(stmt)) == 0) {
164066 + gsi = gsi_for_stmt(stmt);
164067 +
164068 + ipa_remove_stmt_references(cgraph_get_node(current_function_decl), stmt);
164069 + gsi_remove(&gsi, true);
164070 + return;
164071 + }
164072 +
164073 + input = gimple_asm_input_op(as_a_gasm(stmt), 0);
164074 + output = gimple_asm_output_op(as_a_gasm(stmt), 0);
164075 + replace_size_overflow_asm_with_assign(as_a_gasm(stmt), TREE_VALUE(output), TREE_VALUE(input));
164076 +}
164077 +
164078 +static void remove_all_size_overflow_asm(void)
164079 +{
164080 + basic_block bb;
164081 +
164082 + FOR_ALL_BB_FN(bb, cfun) {
164083 + gimple_stmt_iterator si;
164084 +
164085 + for (si = gsi_start_bb(bb); !gsi_end_p(si); gsi_next(&si))
164086 + remove_size_overflow_asm(gsi_stmt(si));
164087 + }
164088 +}
164089 +
164090 +unsigned int size_overflow_transform(struct cgraph_node *node __unused)
164091 +{
164092 + struct visited *visited;
164093 +
164094 +#if BUILDING_GCC_VERSION >= 4008
164095 + if (dump_file) {
164096 + fprintf(dump_file, "BEFORE TRANSFORM -------------------------\n");
164097 + size_overflow_dump_function(dump_file, node);
164098 + }
164099 +#endif
164100 + visited = create_visited();
164101 + set_dominance_info();
164102 +
164103 + search_interesting_stmts(visited);
164104 +
164105 + remove_all_size_overflow_asm();
164106 +
164107 + unset_dominance_info();
164108 + free_visited(visited);
164109 +
164110 +#if BUILDING_GCC_VERSION >= 4008
164111 + if (dump_file) {
164112 + fprintf(dump_file, "AFTER TRANSFORM -------------------------\n");
164113 + size_overflow_dump_function(dump_file, node);
164114 + }
164115 +#endif
164116 + return TODO_dump_func | TODO_verify_stmts | TODO_remove_unused_locals | TODO_update_ssa_no_phi | TODO_ggc_collect | TODO_verify_flow;
164117 +}
164118 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c b/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c
164119 new file mode 100644
164120 index 0000000..a9f770c
164121 --- /dev/null
164122 +++ b/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c
164123 @@ -0,0 +1,961 @@
164124 +/*
164125 + * Copyright 2011-2015 by Emese Revfy <re.emese@gmail.com>
164126 + * Licensed under the GPL v2, or (at your option) v3
164127 + *
164128 + * Homepage:
164129 + * https://github.com/ephox-gcc-plugins/size_overflow
164130 + *
164131 + * Documentation:
164132 + * http://forums.grsecurity.net/viewtopic.php?f=7&t=3043
164133 + *
164134 + * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
164135 + * with double integer precision (DImode/TImode for 32/64 bit integer types).
164136 + * The recomputed argument is checked against TYPE_MAX and an event is logged on overflow and the triggering process is killed.
164137 + *
164138 + * Usage:
164139 + * $ make
164140 + * $ make run
164141 + */
164142 +
164143 +#include "size_overflow.h"
164144 +
164145 +#define MIN_CHECK true
164146 +#define MAX_CHECK false
164147 +
164148 +unsigned int call_count = 0;
164149 +
164150 +static tree get_size_overflow_type(struct visited *visited, const_gimple stmt, const_tree node)
164151 +{
164152 + const_tree type;
164153 + tree new_type;
164154 +
164155 + gcc_assert(node != NULL_TREE);
164156 +
164157 + type = TREE_TYPE(node);
164158 +
164159 + if (pointer_set_contains(visited->my_stmts, stmt))
164160 + return TREE_TYPE(node);
164161 +
164162 + switch (TYPE_MODE(type)) {
164163 + case QImode:
164164 + new_type = size_overflow_type_HI;
164165 + break;
164166 + case HImode:
164167 + new_type = size_overflow_type_SI;
164168 + break;
164169 + case SImode:
164170 + new_type = size_overflow_type_DI;
164171 + break;
164172 + case DImode:
164173 + if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode))
164174 + new_type = TYPE_UNSIGNED(type) ? unsigned_intDI_type_node : intDI_type_node;
164175 + else
164176 + new_type = size_overflow_type_TI;
164177 + break;
164178 + case TImode:
164179 + gcc_assert(!TYPE_UNSIGNED(type));
164180 + new_type = size_overflow_type_TI;
164181 + break;
164182 + default:
164183 + debug_tree((tree)node);
164184 + error("%s: unsupported gcc configuration (%qE).", __func__, current_function_decl);
164185 + gcc_unreachable();
164186 + }
164187 +
164188 + if (TYPE_QUALS(type) != 0)
164189 + return build_qualified_type(new_type, TYPE_QUALS(type));
164190 + return new_type;
164191 +}
164192 +
164193 +static tree cast_to_new_size_overflow_type(struct visited *visited, gimple stmt, tree rhs, tree size_overflow_type, bool before)
164194 +{
164195 + gimple_stmt_iterator gsi;
164196 + gimple new_stmt;
164197 +
164198 + if (rhs == NULL_TREE)
164199 + return NULL_TREE;
164200 +
164201 + gsi = gsi_for_stmt(stmt);
164202 + new_stmt = build_cast_stmt(visited, size_overflow_type, rhs, CREATE_NEW_VAR, &gsi, before, false);
164203 + if (gimple_assign_cast_p(new_stmt))
164204 + gimple_assign_set_rhs_code(new_stmt, CONVERT_EXPR);
164205 + pointer_set_insert(visited->my_stmts, new_stmt);
164206 +
164207 + return get_lhs(new_stmt);
164208 +}
164209 +
164210 +tree create_assign(struct visited *visited, gimple oldstmt, tree rhs1, bool before)
164211 +{
164212 + tree lhs, dst_type;
164213 + gimple_stmt_iterator gsi;
164214 +
164215 + if (rhs1 == NULL_TREE) {
164216 + debug_gimple_stmt(oldstmt);
164217 + error("%s: rhs1 is NULL_TREE", __func__);
164218 + gcc_unreachable();
164219 + }
164220 +
164221 + switch (gimple_code(oldstmt)) {
164222 + case GIMPLE_ASM:
164223 + lhs = rhs1;
164224 + break;
164225 + case GIMPLE_CALL:
164226 + case GIMPLE_ASSIGN:
164227 + lhs = gimple_get_lhs(oldstmt);
164228 + break;
164229 + default:
164230 + debug_gimple_stmt(oldstmt);
164231 + gcc_unreachable();
164232 + }
164233 +
164234 + gsi = gsi_for_stmt(oldstmt);
164235 + pointer_set_insert(visited->stmts, oldstmt);
164236 + if (lookup_stmt_eh_lp(oldstmt) != 0) {
164237 + basic_block next_bb, cur_bb;
164238 + const_edge e;
164239 +
164240 + gcc_assert(before == false);
164241 + gcc_assert(stmt_can_throw_internal(oldstmt));
164242 + gcc_assert(gimple_code(oldstmt) == GIMPLE_CALL);
164243 + gcc_assert(!gsi_end_p(gsi));
164244 +
164245 + cur_bb = gimple_bb(oldstmt);
164246 + next_bb = cur_bb->next_bb;
164247 + e = find_edge(cur_bb, next_bb);
164248 + gcc_assert(e != NULL);
164249 + gcc_assert(e->flags & EDGE_FALLTHRU);
164250 +
164251 + gsi = gsi_after_labels(next_bb);
164252 + gcc_assert(!gsi_end_p(gsi));
164253 +
164254 + before = true;
164255 + oldstmt = gsi_stmt(gsi);
164256 + }
164257 +
164258 + if (is_gimple_constant(rhs1) && TREE_CODE_CLASS(gimple_assign_rhs_code(oldstmt)) == tcc_comparison)
164259 + dst_type = get_size_overflow_type(visited, oldstmt, rhs1);
164260 + else
164261 + dst_type = get_size_overflow_type(visited, oldstmt, lhs);
164262 +
164263 + if (is_gimple_constant(rhs1))
164264 + return cast_a_tree(dst_type, rhs1);
164265 + return cast_to_new_size_overflow_type(visited, oldstmt, rhs1, dst_type, before);
164266 +}
164267 +
164268 +tree dup_assign(struct visited *visited, gassign *oldstmt, const_tree node, tree rhs1, tree rhs2, tree __unused rhs3)
164269 +{
164270 + gassign *stmt;
164271 + gimple_stmt_iterator gsi;
164272 + tree size_overflow_type, new_var, lhs = gimple_assign_lhs(oldstmt);
164273 +
164274 + if (pointer_set_contains(visited->my_stmts, oldstmt))
164275 + return lhs;
164276 +
164277 + if (gimple_num_ops(oldstmt) != 4 && rhs1 == NULL_TREE) {
164278 + rhs1 = gimple_assign_rhs1(oldstmt);
164279 + rhs1 = create_assign(visited, oldstmt, rhs1, BEFORE_STMT);
164280 + }
164281 + if (gimple_num_ops(oldstmt) == 3 && rhs2 == NULL_TREE) {
164282 + rhs2 = gimple_assign_rhs2(oldstmt);
164283 + rhs2 = create_assign(visited, oldstmt, rhs2, BEFORE_STMT);
164284 + }
164285 +
164286 + stmt = as_a_gassign(gimple_copy(oldstmt));
164287 + gimple_set_location(stmt, gimple_location(oldstmt));
164288 + pointer_set_insert(visited->my_stmts, stmt);
164289 +
164290 + if (gimple_assign_rhs_code(oldstmt) == WIDEN_MULT_EXPR)
164291 + gimple_assign_set_rhs_code(stmt, MULT_EXPR);
164292 +
164293 + size_overflow_type = get_size_overflow_type(visited, oldstmt, node);
164294 +
164295 + new_var = create_new_var(size_overflow_type);
164296 + new_var = make_ssa_name(new_var, stmt);
164297 + gimple_assign_set_lhs(stmt, new_var);
164298 +
164299 + if (rhs1 != NULL_TREE)
164300 + gimple_assign_set_rhs1(stmt, rhs1);
164301 +
164302 + if (rhs2 != NULL_TREE)
164303 + gimple_assign_set_rhs2(stmt, rhs2);
164304 +#if BUILDING_GCC_VERSION >= 4006
164305 + if (rhs3 != NULL_TREE)
164306 + gimple_assign_set_rhs3(stmt, rhs3);
164307 +#endif
164308 + gimple_set_vuse(stmt, gimple_vuse(oldstmt));
164309 + gimple_set_vdef(stmt, gimple_vdef(oldstmt));
164310 +
164311 + gsi = gsi_for_stmt(oldstmt);
164312 + gsi_insert_after(&gsi, stmt, GSI_SAME_STMT);
164313 + update_stmt(stmt);
164314 + pointer_set_insert(visited->stmts, oldstmt);
164315 + return gimple_assign_lhs(stmt);
164316 +}
164317 +
164318 +static tree cast_parm_decl(struct visited *visited, tree phi_ssa_name, tree arg, tree size_overflow_type, basic_block bb)
164319 +{
164320 + const_gimple assign;
164321 + gimple_stmt_iterator gsi;
164322 + basic_block first_bb;
164323 +
164324 + gcc_assert(SSA_NAME_IS_DEFAULT_DEF(arg));
164325 +
164326 + if (bb->index == 0) {
164327 + first_bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
164328 + gcc_assert(dom_info_available_p(CDI_DOMINATORS));
164329 + set_immediate_dominator(CDI_DOMINATORS, first_bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
164330 + bb = first_bb;
164331 + }
164332 +
164333 + gsi = gsi_after_labels(bb);
164334 + assign = build_cast_stmt(visited, size_overflow_type, arg, phi_ssa_name, &gsi, BEFORE_STMT, false);
164335 + pointer_set_insert(visited->my_stmts, assign);
164336 + return get_lhs(assign);
164337 +}
164338 +
164339 +static tree use_phi_ssa_name(struct visited *visited, tree ssa_name_var, tree new_arg)
164340 +{
164341 + gimple_stmt_iterator gsi;
164342 + const_gimple assign;
164343 + gimple def_stmt = get_def_stmt(new_arg);
164344 +
164345 + if (gimple_code(def_stmt) == GIMPLE_PHI) {
164346 + gsi = gsi_after_labels(gimple_bb(def_stmt));
164347 + assign = build_cast_stmt(visited, TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, BEFORE_STMT, true);
164348 + } else {
164349 + gsi = gsi_for_stmt(def_stmt);
164350 + assign = build_cast_stmt(visited, TREE_TYPE(new_arg), new_arg, ssa_name_var, &gsi, AFTER_STMT, true);
164351 + }
164352 +
164353 + pointer_set_insert(visited->my_stmts, assign);
164354 + return get_lhs(assign);
164355 +}
164356 +
164357 +static tree cast_visited_phi_arg(struct visited *visited, tree ssa_name_var, tree arg, tree size_overflow_type)
164358 +{
164359 + basic_block bb;
164360 + gimple_stmt_iterator gsi;
164361 + const_gimple def_stmt;
164362 + const_gimple assign;
164363 +
164364 + def_stmt = get_def_stmt(arg);
164365 + bb = gimple_bb(def_stmt);
164366 + gcc_assert(bb->index != 0);
164367 + gsi = gsi_after_labels(bb);
164368 +
164369 + assign = build_cast_stmt(visited, size_overflow_type, arg, ssa_name_var, &gsi, BEFORE_STMT, false);
164370 + pointer_set_insert(visited->my_stmts, assign);
164371 + return get_lhs(assign);
164372 +}
164373 +
164374 +static tree create_new_phi_arg(struct visited *visited, tree ssa_name_var, tree new_arg, gphi *oldstmt, unsigned int i)
164375 +{
164376 + tree size_overflow_type;
164377 + tree arg;
164378 + const_gimple def_stmt;
164379 +
164380 + if (new_arg != NULL_TREE && is_gimple_constant(new_arg))
164381 + return new_arg;
164382 +
164383 + arg = gimple_phi_arg_def(oldstmt, i);
164384 + def_stmt = get_def_stmt(arg);
164385 + gcc_assert(def_stmt != NULL);
164386 + size_overflow_type = get_size_overflow_type(visited, oldstmt, arg);
164387 +
164388 + switch (gimple_code(def_stmt)) {
164389 + case GIMPLE_PHI:
164390 + return cast_visited_phi_arg(visited, ssa_name_var, arg, size_overflow_type);
164391 + case GIMPLE_NOP: {
164392 + basic_block bb;
164393 +
164394 + bb = gimple_phi_arg_edge(oldstmt, i)->src;
164395 + return cast_parm_decl(visited, ssa_name_var, arg, size_overflow_type, bb);
164396 + }
164397 + case GIMPLE_ASM: {
164398 + gimple_stmt_iterator gsi;
164399 + const_gimple assign;
164400 + gimple stmt = get_def_stmt(arg);
164401 +
164402 + gsi = gsi_for_stmt(stmt);
164403 + assign = build_cast_stmt(visited, size_overflow_type, arg, ssa_name_var, &gsi, AFTER_STMT, false);
164404 + pointer_set_insert(visited->my_stmts, assign);
164405 + return get_lhs(assign);
164406 + }
164407 + default:
164408 + gcc_assert(new_arg != NULL_TREE);
164409 + gcc_assert(types_compatible_p(TREE_TYPE(new_arg), size_overflow_type));
164410 + return use_phi_ssa_name(visited, ssa_name_var, new_arg);
164411 + }
164412 +}
164413 +
164414 +static gphi *overflow_create_phi_node(struct visited *visited, gphi *oldstmt, tree result)
164415 +{
164416 + basic_block bb;
164417 + gphi *phi;
164418 + gimple_seq seq;
164419 + gimple_stmt_iterator gsi = gsi_for_stmt(oldstmt);
164420 +
164421 + bb = gsi_bb(gsi);
164422 +
164423 + if (result == NULL_TREE) {
164424 + tree old_result = gimple_phi_result(oldstmt);
164425 + tree size_overflow_type = get_size_overflow_type(visited, oldstmt, old_result);
164426 +
164427 + result = create_new_var(size_overflow_type);
164428 + }
164429 +
164430 + phi = as_a_gphi(create_phi_node(result, bb));
164431 + gimple_phi_set_result(phi, make_ssa_name(result, phi));
164432 + seq = phi_nodes(bb);
164433 + gsi = gsi_last(seq);
164434 + gsi_remove(&gsi, false);
164435 +
164436 + gsi = gsi_for_stmt(oldstmt);
164437 + gsi_insert_after(&gsi, phi, GSI_NEW_STMT);
164438 + gimple_set_bb(phi, bb);
164439 + return phi;
164440 +}
164441 +
164442 +#if BUILDING_GCC_VERSION <= 4007
164443 +static tree create_new_phi_node(struct visited *visited, VEC(tree, heap) **args, tree ssa_name_var, gimple oldstmt)
164444 +#else
164445 +static tree create_new_phi_node(struct visited *visited, vec<tree, va_heap, vl_embed> *&args, tree ssa_name_var, gphi *oldstmt)
164446 +#endif
164447 +{
164448 + gphi *new_phi;
164449 + unsigned int i;
164450 + tree arg, result;
164451 + location_t loc = gimple_location(oldstmt);
164452 +
164453 +#if BUILDING_GCC_VERSION <= 4007
164454 + gcc_assert(!VEC_empty(tree, *args));
164455 +#else
164456 + gcc_assert(!args->is_empty());
164457 +#endif
164458 +
164459 + new_phi = overflow_create_phi_node(visited, oldstmt, ssa_name_var);
164460 + result = gimple_phi_result(new_phi);
164461 + ssa_name_var = SSA_NAME_VAR(result);
164462 +
164463 +#if BUILDING_GCC_VERSION <= 4007
164464 + FOR_EACH_VEC_ELT(tree, *args, i, arg) {
164465 +#else
164466 + FOR_EACH_VEC_SAFE_ELT(args, i, arg) {
164467 +#endif
164468 + arg = create_new_phi_arg(visited, ssa_name_var, arg, oldstmt, i);
164469 + add_phi_arg(new_phi, arg, gimple_phi_arg_edge(oldstmt, i), loc);
164470 + }
164471 +
164472 +#if BUILDING_GCC_VERSION <= 4007
164473 + VEC_free(tree, heap, *args);
164474 +#else
164475 + vec_free(args);
164476 +#endif
164477 + update_stmt(new_phi);
164478 + pointer_set_insert(visited->my_stmts, new_phi);
164479 + return result;
164480 +}
164481 +
164482 +static tree handle_phi(struct visited *visited, next_interesting_function_t expand_from, tree orig_result)
164483 +{
164484 + tree ssa_name_var = NULL_TREE;
164485 +#if BUILDING_GCC_VERSION <= 4007
164486 + VEC(tree, heap) *args = NULL;
164487 +#else
164488 + vec<tree, va_heap, vl_embed> *args = NULL;
164489 +#endif
164490 + gphi *oldstmt = as_a_gphi(get_def_stmt(orig_result));
164491 + unsigned int i, len = gimple_phi_num_args(oldstmt);
164492 +
164493 + pointer_set_insert(visited->stmts, oldstmt);
164494 + for (i = 0; i < len; i++) {
164495 + tree arg, new_arg;
164496 +
164497 + arg = gimple_phi_arg_def(oldstmt, i);
164498 + new_arg = expand(visited, expand_from, arg);
164499 +
164500 + if (ssa_name_var == NULL_TREE && new_arg != NULL_TREE)
164501 + ssa_name_var = SSA_NAME_VAR(new_arg);
164502 +
164503 + if (is_gimple_constant(arg)) {
164504 + tree size_overflow_type = get_size_overflow_type(visited, oldstmt, arg);
164505 +
164506 + new_arg = cast_a_tree(size_overflow_type, arg);
164507 + }
164508 +
164509 +#if BUILDING_GCC_VERSION <= 4007
164510 + VEC_safe_push(tree, heap, args, new_arg);
164511 +#else
164512 + vec_safe_push(args, new_arg);
164513 +#endif
164514 + }
164515 +
164516 +#if BUILDING_GCC_VERSION <= 4007
164517 + return create_new_phi_node(visited, &args, ssa_name_var, oldstmt);
164518 +#else
164519 + return create_new_phi_node(visited, args, ssa_name_var, oldstmt);
164520 +#endif
164521 +}
164522 +
164523 +static tree create_cast_assign(struct visited *visited, gassign *stmt)
164524 +{
164525 + tree rhs1 = gimple_assign_rhs1(stmt);
164526 + tree lhs = gimple_assign_lhs(stmt);
164527 + const_tree rhs1_type = TREE_TYPE(rhs1);
164528 + const_tree lhs_type = TREE_TYPE(lhs);
164529 +
164530 + if (TYPE_UNSIGNED(rhs1_type) == TYPE_UNSIGNED(lhs_type))
164531 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164532 +
164533 + return create_assign(visited, stmt, rhs1, AFTER_STMT);
164534 +}
164535 +
164536 +static bool skip_lhs_cast_check(const gassign *stmt)
164537 +{
164538 + const_tree rhs = gimple_assign_rhs1(stmt);
164539 + const_gimple def_stmt = get_def_stmt(rhs);
164540 +
164541 + // 3.8.2 kernel/futex_compat.c compat_exit_robust_list(): get_user() 64 ulong -> int (compat_long_t), int max
164542 + if (gimple_code(def_stmt) == GIMPLE_ASM)
164543 + return true;
164544 +
164545 + if (is_const_plus_unsigned_signed_truncation(rhs))
164546 + return true;
164547 +
164548 + return false;
164549 +}
164550 +
164551 +static tree create_string_param(tree string)
164552 +{
164553 + tree i_type, a_type;
164554 + const int length = TREE_STRING_LENGTH(string);
164555 +
164556 + gcc_assert(length > 0);
164557 +
164558 + i_type = build_index_type(build_int_cst(NULL_TREE, length - 1));
164559 + a_type = build_array_type(char_type_node, i_type);
164560 +
164561 + TREE_TYPE(string) = a_type;
164562 + TREE_CONSTANT(string) = 1;
164563 + TREE_READONLY(string) = 1;
164564 +
164565 + return build1(ADDR_EXPR, ptr_type_node, string);
164566 +}
164567 +
164568 +static void insert_cond(basic_block cond_bb, tree arg, enum tree_code cond_code, tree type_value)
164569 +{
164570 + gcond *cond_stmt;
164571 + gimple_stmt_iterator gsi = gsi_last_bb(cond_bb);
164572 +
164573 + cond_stmt = gimple_build_cond(cond_code, arg, type_value, NULL_TREE, NULL_TREE);
164574 + gsi_insert_after(&gsi, cond_stmt, GSI_CONTINUE_LINKING);
164575 + update_stmt(cond_stmt);
164576 +}
164577 +
164578 +static void insert_cond_result(next_interesting_function_t expand_from, basic_block bb_true, const_gimple stmt, const_tree arg, bool min)
164579 +{
164580 + gcall *func_stmt;
164581 + const_gimple def_stmt;
164582 + const_tree loc_line;
164583 + tree loc_file, ssa_name, current_func;
164584 + expanded_location xloc;
164585 + char *ssa_name_buf;
164586 + int len;
164587 + struct cgraph_edge *edge;
164588 + struct cgraph_node *report_node;
164589 + int frequency;
164590 + gimple_stmt_iterator gsi = gsi_start_bb(bb_true);
164591 +
164592 + def_stmt = get_def_stmt(arg);
164593 + if (gimple_has_location(def_stmt))
164594 + xloc = expand_location(gimple_location(def_stmt));
164595 + else if (gimple_has_location(stmt))
164596 + xloc = expand_location(gimple_location(stmt));
164597 + else
164598 + xloc = expand_location(DECL_SOURCE_LOCATION(current_function_decl));
164599 +
164600 + loc_line = build_int_cstu(unsigned_type_node, xloc.line);
164601 +
164602 + loc_file = build_string(strlen(xloc.file) + 1, xloc.file);
164603 + loc_file = create_string_param(loc_file);
164604 +
164605 + current_func = build_string(DECL_NAME_LENGTH(current_function_decl) + 1, DECL_NAME_POINTER(current_function_decl));
164606 + current_func = create_string_param(current_func);
164607 +
164608 + gcc_assert(DECL_NAME(SSA_NAME_VAR(arg)) != NULL);
164609 + call_count++;
164610 + len = asprintf(&ssa_name_buf, "%s_%u %s, count: %u, decl: %s; num: %u; context: %s;\n", DECL_NAME_POINTER(SSA_NAME_VAR(arg)), SSA_NAME_VERSION(arg), min ? "min" : "max", call_count, expand_from->decl_name, expand_from->num, expand_from->context);
164611 + gcc_assert(len > 0);
164612 + ssa_name = build_string(len + 1, ssa_name_buf);
164613 + free(ssa_name_buf);
164614 + ssa_name = create_string_param(ssa_name);
164615 +
164616 + // void report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name)
164617 + func_stmt = as_a_gcall(gimple_build_call(report_size_overflow_decl, 4, loc_file, loc_line, current_func, ssa_name));
164618 + gsi_insert_after(&gsi, func_stmt, GSI_CONTINUE_LINKING);
164619 +
164620 + report_node = cgraph_get_create_node(report_size_overflow_decl);
164621 + gcc_assert(report_node);
164622 + frequency = compute_call_stmt_bb_frequency(current_function_decl, bb_true);
164623 +
164624 + edge = cgraph_create_edge(get_cnode(current_function_decl), report_node, func_stmt, bb_true->count, frequency, bb_true->loop_depth);
164625 + gcc_assert(edge != NULL);
164626 +}
164627 +
164628 +static void insert_check_size_overflow(next_interesting_function_t expand_from, gimple stmt, enum tree_code cond_code, tree arg, tree type_value, bool before, bool min)
164629 +{
164630 + basic_block cond_bb, join_bb, bb_true;
164631 + edge e;
164632 + gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
164633 +
164634 + cond_bb = gimple_bb(stmt);
164635 + if (before)
164636 + gsi_prev(&gsi);
164637 + if (gsi_end_p(gsi))
164638 + e = split_block_after_labels(cond_bb);
164639 + else
164640 + e = split_block(cond_bb, gsi_stmt(gsi));
164641 + cond_bb = e->src;
164642 + join_bb = e->dest;
164643 + e->flags = EDGE_FALSE_VALUE;
164644 + e->probability = REG_BR_PROB_BASE;
164645 +
164646 + bb_true = create_empty_bb(cond_bb);
164647 + make_edge(cond_bb, bb_true, EDGE_TRUE_VALUE);
164648 + make_edge(cond_bb, join_bb, EDGE_FALSE_VALUE);
164649 + make_edge(bb_true, join_bb, EDGE_FALLTHRU);
164650 +
164651 + gcc_assert(dom_info_available_p(CDI_DOMINATORS));
164652 + set_immediate_dominator(CDI_DOMINATORS, bb_true, cond_bb);
164653 + set_immediate_dominator(CDI_DOMINATORS, join_bb, cond_bb);
164654 +
164655 + if (current_loops != NULL) {
164656 + gcc_assert(cond_bb->loop_father == join_bb->loop_father);
164657 + add_bb_to_loop(bb_true, cond_bb->loop_father);
164658 + }
164659 +
164660 + insert_cond(cond_bb, arg, cond_code, type_value);
164661 + insert_cond_result(expand_from, bb_true, stmt, arg, min);
164662 +
164663 +// print_the_code_insertions(stmt);
164664 +}
164665 +
164666 +void check_size_overflow(next_interesting_function_t expand_from, gimple stmt, tree size_overflow_type, tree cast_rhs, tree rhs, bool before)
164667 +{
164668 + const_tree rhs_type = TREE_TYPE(rhs);
164669 + tree cast_rhs_type, type_max_type, type_min_type, type_max, type_min;
164670 +
164671 + gcc_assert(rhs_type != NULL_TREE);
164672 + if (TREE_CODE(rhs_type) == POINTER_TYPE)
164673 + return;
164674 +
164675 + gcc_assert(TREE_CODE(rhs_type) == INTEGER_TYPE || TREE_CODE(rhs_type) == ENUMERAL_TYPE);
164676 +
164677 + if (is_const_plus_unsigned_signed_truncation(rhs))
164678 + return;
164679 +
164680 + type_max = cast_a_tree(size_overflow_type, TYPE_MAX_VALUE(rhs_type));
164681 + // typemax (-1) < typemin (0)
164682 + if (TREE_OVERFLOW(type_max))
164683 + return;
164684 +
164685 + type_min = cast_a_tree(size_overflow_type, TYPE_MIN_VALUE(rhs_type));
164686 +
164687 + cast_rhs_type = TREE_TYPE(cast_rhs);
164688 + type_max_type = TREE_TYPE(type_max);
164689 + gcc_assert(types_compatible_p(cast_rhs_type, type_max_type));
164690 +
164691 + insert_check_size_overflow(expand_from, stmt, GT_EXPR, cast_rhs, type_max, before, MAX_CHECK);
164692 +
164693 + // special case: get_size_overflow_type(), 32, u64->s
164694 + if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode) && TYPE_UNSIGNED(size_overflow_type) && !TYPE_UNSIGNED(rhs_type))
164695 + return;
164696 +
164697 + type_min_type = TREE_TYPE(type_min);
164698 + gcc_assert(types_compatible_p(type_max_type, type_min_type));
164699 + insert_check_size_overflow(expand_from, stmt, LT_EXPR, cast_rhs, type_min, before, MIN_CHECK);
164700 +}
164701 +
164702 +static tree create_cast_overflow_check(struct visited *visited, next_interesting_function_t expand_from, tree new_rhs1, gassign *stmt)
164703 +{
164704 + bool cast_lhs, cast_rhs;
164705 + tree lhs = gimple_assign_lhs(stmt);
164706 + tree rhs = gimple_assign_rhs1(stmt);
164707 + const_tree lhs_type = TREE_TYPE(lhs);
164708 + const_tree rhs_type = TREE_TYPE(rhs);
164709 + enum machine_mode lhs_mode = TYPE_MODE(lhs_type);
164710 + enum machine_mode rhs_mode = TYPE_MODE(rhs_type);
164711 + unsigned int lhs_size = GET_MODE_BITSIZE(lhs_mode);
164712 + unsigned int rhs_size = GET_MODE_BITSIZE(rhs_mode);
164713 +
164714 + static bool check_lhs[3][4] = {
164715 + // ss su us uu
164716 + { false, true, true, false }, // lhs > rhs
164717 + { false, false, false, false }, // lhs = rhs
164718 + { true, true, true, true }, // lhs < rhs
164719 + };
164720 +
164721 + static bool check_rhs[3][4] = {
164722 + // ss su us uu
164723 + { true, false, true, true }, // lhs > rhs
164724 + { true, false, true, true }, // lhs = rhs
164725 + { true, false, true, true }, // lhs < rhs
164726 + };
164727 +
164728 + // skip lhs check on signed SI -> HI cast or signed SI -> QI cast
164729 + if (rhs_mode == SImode && !TYPE_UNSIGNED(rhs_type) && (lhs_mode == HImode || lhs_mode == QImode))
164730 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164731 +
164732 + if (lhs_size > rhs_size) {
164733 + cast_lhs = check_lhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164734 + cast_rhs = check_rhs[0][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164735 + } else if (lhs_size == rhs_size) {
164736 + cast_lhs = check_lhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164737 + cast_rhs = check_rhs[1][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164738 + } else {
164739 + cast_lhs = check_lhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164740 + cast_rhs = check_rhs[2][TYPE_UNSIGNED(rhs_type) + 2 * TYPE_UNSIGNED(lhs_type)];
164741 + }
164742 +
164743 + if (!cast_lhs && !cast_rhs)
164744 + return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
164745 +
164746 + if (cast_lhs && !skip_lhs_cast_check(stmt))
164747 + check_size_overflow(expand_from, stmt, TREE_TYPE(new_rhs1), new_rhs1, lhs, BEFORE_STMT);
164748 +
164749 + if (cast_rhs)
164750 + check_size_overflow(expand_from, stmt, TREE_TYPE(new_rhs1), new_rhs1, rhs, BEFORE_STMT);
164751 +
164752 + return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
164753 +}
164754 +
164755 +static tree handle_unary_rhs(struct visited *visited, next_interesting_function_t expand_from, gassign *stmt)
164756 +{
164757 + enum tree_code rhs_code;
164758 + tree rhs1, new_rhs1, lhs = gimple_assign_lhs(stmt);
164759 +
164760 + if (pointer_set_contains(visited->my_stmts, stmt))
164761 + return lhs;
164762 +
164763 + rhs1 = gimple_assign_rhs1(stmt);
164764 + if (TREE_CODE(TREE_TYPE(rhs1)) == POINTER_TYPE)
164765 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164766 +
164767 + new_rhs1 = expand(visited, expand_from, rhs1);
164768 +
164769 + if (new_rhs1 == NULL_TREE)
164770 + return create_cast_assign(visited, stmt);
164771 +
164772 + if (pointer_set_contains(visited->no_cast_check, stmt))
164773 + return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
164774 +
164775 + rhs_code = gimple_assign_rhs_code(stmt);
164776 + if (rhs_code == BIT_NOT_EXPR || rhs_code == NEGATE_EXPR) {
164777 + tree size_overflow_type = get_size_overflow_type(visited, stmt, rhs1);
164778 +
164779 + new_rhs1 = cast_to_new_size_overflow_type(visited, stmt, new_rhs1, size_overflow_type, BEFORE_STMT);
164780 + check_size_overflow(expand_from, stmt, size_overflow_type, new_rhs1, rhs1, BEFORE_STMT);
164781 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164782 + }
164783 +
164784 + if (!gimple_assign_cast_p(stmt))
164785 + return dup_assign(visited, stmt, lhs, new_rhs1, NULL_TREE, NULL_TREE);
164786 +
164787 + return create_cast_overflow_check(visited, expand_from, new_rhs1, stmt);
164788 +}
164789 +
164790 +static tree handle_unary_ops(struct visited *visited, next_interesting_function_t expand_from, gassign *stmt)
164791 +{
164792 + tree rhs1, lhs = gimple_assign_lhs(stmt);
164793 + gimple def_stmt = get_def_stmt(lhs);
164794 +
164795 + gcc_assert(gimple_code(def_stmt) != GIMPLE_NOP);
164796 + rhs1 = gimple_assign_rhs1(def_stmt);
164797 +
164798 + if (is_gimple_constant(rhs1))
164799 + return create_assign(visited, def_stmt, lhs, AFTER_STMT);
164800 +
164801 + switch (TREE_CODE(rhs1)) {
164802 + case SSA_NAME: {
164803 + tree ret = handle_unary_rhs(visited, expand_from, as_a_gassign(def_stmt));
164804 +
164805 + if (gimple_assign_cast_p(stmt))
164806 + unsigned_signed_cast_intentional_overflow(visited, stmt);
164807 + return ret;
164808 + }
164809 + case ARRAY_REF:
164810 + case BIT_FIELD_REF:
164811 + case ADDR_EXPR:
164812 + case COMPONENT_REF:
164813 + case INDIRECT_REF:
164814 +#if BUILDING_GCC_VERSION >= 4006
164815 + case MEM_REF:
164816 +#endif
164817 + case TARGET_MEM_REF:
164818 + case VIEW_CONVERT_EXPR:
164819 + return create_assign(visited, def_stmt, lhs, AFTER_STMT);
164820 + case PARM_DECL:
164821 + case VAR_DECL:
164822 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164823 +
164824 + default:
164825 + debug_gimple_stmt(def_stmt);
164826 + debug_tree(rhs1);
164827 + gcc_unreachable();
164828 + }
164829 +}
164830 +
164831 +static void __unused print_the_code_insertions(const_gimple stmt)
164832 +{
164833 + location_t loc = gimple_location(stmt);
164834 +
164835 + inform(loc, "Integer size_overflow check applied here.");
164836 +}
164837 +
164838 +static bool is_from_cast(const_tree node)
164839 +{
164840 + gimple def_stmt = get_def_stmt(node);
164841 +
164842 + if (!def_stmt)
164843 + return false;
164844 +
164845 + if (gimple_assign_cast_p(def_stmt))
164846 + return true;
164847 +
164848 + return false;
164849 +}
164850 +
164851 +// Skip duplication when there is a minus expr and the type of rhs1 or rhs2 is a pointer_type.
164852 +static bool is_ptr_diff(gassign *stmt)
164853 +{
164854 + const_tree rhs1, rhs2, ptr1_rhs, ptr2_rhs;
164855 +
164856 + if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
164857 + return false;
164858 +
164859 + rhs1 = gimple_assign_rhs1(stmt);
164860 + if (!is_from_cast(rhs1))
164861 + return false;
164862 +
164863 + rhs2 = gimple_assign_rhs2(stmt);
164864 + if (!is_from_cast(rhs2))
164865 + return false;
164866 +
164867 + ptr1_rhs = gimple_assign_rhs1(get_def_stmt(rhs1));
164868 + ptr2_rhs = gimple_assign_rhs1(get_def_stmt(rhs2));
164869 +
164870 + if (TREE_CODE(TREE_TYPE(ptr1_rhs)) != POINTER_TYPE && TREE_CODE(TREE_TYPE(ptr2_rhs)) != POINTER_TYPE)
164871 + return false;
164872 +
164873 + return true;
164874 +}
164875 +
164876 +static tree handle_comparison_code_class(struct visited *visited, next_interesting_function_t expand_from, gassign *stmt, tree new_rhs1, tree new_rhs2)
164877 +{
164878 + tree rhs1, rhs2, lhs;
164879 +
164880 + rhs1 = gimple_assign_rhs1(stmt);
164881 + if (!is_gimple_constant(rhs1) && new_rhs1 != NULL_TREE)
164882 + check_size_overflow(expand_from, stmt, TREE_TYPE(new_rhs1), new_rhs1, rhs1, BEFORE_STMT);
164883 +
164884 + lhs = gimple_assign_lhs(stmt);
164885 + if (new_rhs2 == NULL_TREE)
164886 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164887 +
164888 + rhs2 = gimple_assign_rhs2(stmt);
164889 + if (!is_gimple_constant(rhs2))
164890 + check_size_overflow(expand_from, stmt, TREE_TYPE(new_rhs2), new_rhs2, rhs2, BEFORE_STMT);
164891 + return create_assign(visited, stmt, lhs, AFTER_STMT);
164892 +}
164893 +
164894 +static tree handle_binary_ops(struct visited *visited, next_interesting_function_t expand_from, tree lhs)
164895 +{
164896 + enum intentional_overflow_type res;
164897 + tree rhs1, rhs2, new_lhs;
164898 + gassign *def_stmt = as_a_gassign(get_def_stmt(lhs));
164899 + tree new_rhs1 = NULL_TREE;
164900 + tree new_rhs2 = NULL_TREE;
164901 +
164902 + if (is_ptr_diff(def_stmt))
164903 + return create_assign(visited, def_stmt, lhs, AFTER_STMT);
164904 +
164905 + rhs1 = gimple_assign_rhs1(def_stmt);
164906 + rhs2 = gimple_assign_rhs2(def_stmt);
164907 +
164908 + /* no DImode/TImode division in the 32/64 bit kernel */
164909 + switch (gimple_assign_rhs_code(def_stmt)) {
164910 + case RDIV_EXPR:
164911 + case TRUNC_DIV_EXPR:
164912 + case CEIL_DIV_EXPR:
164913 + case FLOOR_DIV_EXPR:
164914 + case ROUND_DIV_EXPR:
164915 + case TRUNC_MOD_EXPR:
164916 + case CEIL_MOD_EXPR:
164917 + case FLOOR_MOD_EXPR:
164918 + case ROUND_MOD_EXPR:
164919 + case EXACT_DIV_EXPR:
164920 + case POINTER_PLUS_EXPR:
164921 + case BIT_AND_EXPR:
164922 + return create_assign(visited, def_stmt, lhs, AFTER_STMT);
164923 + default:
164924 + break;
164925 + }
164926 +
164927 + new_lhs = handle_integer_truncation(visited, expand_from, lhs);
164928 + if (new_lhs != NULL_TREE)
164929 + return new_lhs;
164930 +
164931 + if (TREE_CODE(rhs1) == SSA_NAME)
164932 + new_rhs1 = expand(visited, expand_from, rhs1);
164933 + if (TREE_CODE(rhs2) == SSA_NAME)
164934 + new_rhs2 = expand(visited, expand_from, rhs2);
164935 +
164936 + res = add_mul_intentional_overflow(def_stmt);
164937 + if (res != NO_INTENTIONAL_OVERFLOW) {
164938 + new_lhs = dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
164939 + insert_cast_expr(visited, as_a_gassign(get_def_stmt(new_lhs)), res);
164940 + return new_lhs;
164941 + }
164942 +
164943 + if (skip_expr_on_double_type(def_stmt)) {
164944 + new_lhs = dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
164945 + insert_cast_expr(visited, as_a_gassign(get_def_stmt(new_lhs)), NO_INTENTIONAL_OVERFLOW);
164946 + return new_lhs;
164947 + }
164948 +
164949 + if (is_a_neg_overflow(def_stmt, rhs2))
164950 + return handle_intentional_overflow(visited, expand_from, true, def_stmt, new_rhs1, NULL_TREE);
164951 + if (is_a_neg_overflow(def_stmt, rhs1))
164952 + return handle_intentional_overflow(visited, expand_from, true, def_stmt, new_rhs2, new_rhs2);
164953 +
164954 +
164955 + if (is_a_constant_overflow(def_stmt, rhs2))
164956 + return handle_intentional_overflow(visited, expand_from, !is_a_cast_and_const_overflow(rhs1), def_stmt, new_rhs1, NULL_TREE);
164957 + if (is_a_constant_overflow(def_stmt, rhs1))
164958 + return handle_intentional_overflow(visited, expand_from, !is_a_cast_and_const_overflow(rhs2), def_stmt, new_rhs2, new_rhs2);
164959 +
164960 + // the const is between 0 and (signed) MAX
164961 + if (is_gimple_constant(rhs1))
164962 + new_rhs1 = create_assign(visited, def_stmt, rhs1, BEFORE_STMT);
164963 + if (is_gimple_constant(rhs2))
164964 + new_rhs2 = create_assign(visited, def_stmt, rhs2, BEFORE_STMT);
164965 +
164966 + if (TREE_CODE_CLASS(gimple_assign_rhs_code(def_stmt)) == tcc_comparison)
164967 + return handle_comparison_code_class(visited, expand_from, def_stmt, new_rhs1, new_rhs2);
164968 +
164969 + return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, NULL_TREE);
164970 +}
164971 +
164972 +#if BUILDING_GCC_VERSION >= 4006
164973 +static tree get_new_rhs(struct visited *visited, next_interesting_function_t expand_from, tree size_overflow_type, tree rhs)
164974 +{
164975 + if (is_gimple_constant(rhs))
164976 + return cast_a_tree(size_overflow_type, rhs);
164977 + if (TREE_CODE(rhs) != SSA_NAME)
164978 + return NULL_TREE;
164979 + return expand(visited, expand_from, rhs);
164980 +}
164981 +
164982 +static tree handle_ternary_ops(struct visited *visited, next_interesting_function_t expand_from, tree lhs)
164983 +{
164984 + tree rhs1, rhs2, rhs3, new_rhs1, new_rhs2, new_rhs3, size_overflow_type;
164985 + gassign *def_stmt = as_a_gassign(get_def_stmt(lhs));
164986 +
164987 + size_overflow_type = get_size_overflow_type(visited, def_stmt, lhs);
164988 +
164989 + rhs1 = gimple_assign_rhs1(def_stmt);
164990 + rhs2 = gimple_assign_rhs2(def_stmt);
164991 + rhs3 = gimple_assign_rhs3(def_stmt);
164992 + new_rhs1 = get_new_rhs(visited, expand_from, size_overflow_type, rhs1);
164993 + new_rhs2 = get_new_rhs(visited, expand_from, size_overflow_type, rhs2);
164994 + new_rhs3 = get_new_rhs(visited, expand_from, size_overflow_type, rhs3);
164995 +
164996 + return dup_assign(visited, def_stmt, lhs, new_rhs1, new_rhs2, new_rhs3);
164997 +}
164998 +#endif
164999 +
165000 +static tree get_my_stmt_lhs(struct visited *visited, gimple stmt)
165001 +{
165002 + gimple_stmt_iterator gsi;
165003 + gimple next_stmt = NULL;
165004 +
165005 + gsi = gsi_for_stmt(stmt);
165006 +
165007 + do {
165008 + gsi_next(&gsi);
165009 + next_stmt = gsi_stmt(gsi);
165010 +
165011 + if (gimple_code(stmt) == GIMPLE_PHI && !pointer_set_contains(visited->my_stmts, next_stmt))
165012 + return NULL_TREE;
165013 +
165014 + if (pointer_set_contains(visited->my_stmts, next_stmt) && !pointer_set_contains(visited->skip_expr_casts, next_stmt))
165015 + break;
165016 +
165017 + gcc_assert(pointer_set_contains(visited->my_stmts, next_stmt));
165018 + } while (!gsi_end_p(gsi));
165019 +
165020 + gcc_assert(next_stmt);
165021 + return get_lhs(next_stmt);
165022 +}
165023 +
165024 +static tree expand_visited(struct visited *visited, gimple def_stmt)
165025 +{
165026 + gimple_stmt_iterator gsi;
165027 + enum gimple_code code = gimple_code(def_stmt);
165028 +
165029 + if (code == GIMPLE_ASM)
165030 + return NULL_TREE;
165031 +
165032 + gsi = gsi_for_stmt(def_stmt);
165033 + gsi_next(&gsi);
165034 +
165035 + if (gimple_code(def_stmt) == GIMPLE_PHI && gsi_end_p(gsi))
165036 + return NULL_TREE;
165037 + return get_my_stmt_lhs(visited, def_stmt);
165038 +}
165039 +
165040 +tree expand(struct visited *visited, next_interesting_function_t expand_from, tree lhs)
165041 +{
165042 + gimple def_stmt;
165043 +
165044 + def_stmt = get_def_stmt(lhs);
165045 +
165046 + if (!def_stmt || gimple_code(def_stmt) == GIMPLE_NOP)
165047 + return NULL_TREE;
165048 +
165049 + if (pointer_set_contains(visited->my_stmts, def_stmt))
165050 + return lhs;
165051 +
165052 + if (pointer_set_contains(visited->stmts, def_stmt))
165053 + return expand_visited(visited, def_stmt);
165054 +
165055 + if (is_gimple_constant(lhs))
165056 + return NULL_TREE;
165057 + if (skip_types(lhs))
165058 + return NULL_TREE;
165059 +
165060 + switch (gimple_code(def_stmt)) {
165061 + case GIMPLE_PHI:
165062 + return handle_phi(visited, expand_from, lhs);
165063 + case GIMPLE_CALL:
165064 + case GIMPLE_ASM:
165065 + if (is_size_overflow_asm(def_stmt))
165066 + return expand(visited, expand_from, get_size_overflow_asm_input(as_a_gasm(def_stmt)));
165067 + return create_assign(visited, def_stmt, lhs, AFTER_STMT);
165068 + case GIMPLE_ASSIGN:
165069 + switch (gimple_num_ops(def_stmt)) {
165070 + case 2:
165071 + return handle_unary_ops(visited, expand_from, as_a_gassign(def_stmt));
165072 + case 3:
165073 + return handle_binary_ops(visited, expand_from, lhs);
165074 +#if BUILDING_GCC_VERSION >= 4006
165075 + case 4:
165076 + return handle_ternary_ops(visited, expand_from, lhs);
165077 +#endif
165078 + }
165079 + default:
165080 + debug_gimple_stmt(def_stmt);
165081 + error("%s: unknown gimple code", __func__);
165082 + gcc_unreachable();
165083 + }
165084 +}
165085 diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c
165086 new file mode 100644
165087 index 0000000..155e2c5
165088 --- /dev/null
165089 +++ b/tools/gcc/stackleak_plugin.c
165090 @@ -0,0 +1,436 @@
165091 +/*
165092 + * Copyright 2011-2015 by the PaX Team <pageexec@freemail.hu>
165093 + * Licensed under the GPL v2
165094 + *
165095 + * Note: the choice of the license means that the compilation process is
165096 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
165097 + * but for the kernel it doesn't matter since it doesn't link against
165098 + * any of the gcc libraries
165099 + *
165100 + * gcc plugin to help implement various PaX features
165101 + *
165102 + * - track lowest stack pointer
165103 + *
165104 + * TODO:
165105 + * - initialize all local variables
165106 + *
165107 + * BUGS:
165108 + * - none known
165109 + */
165110 +
165111 +#include "gcc-common.h"
165112 +
165113 +int plugin_is_GPL_compatible;
165114 +
165115 +static int track_frame_size = -1;
165116 +static const char track_function[] = "pax_track_stack";
165117 +static const char check_function[] = "pax_check_alloca";
165118 +static GTY(()) tree track_function_decl;
165119 +static GTY(()) tree check_function_decl;
165120 +static bool init_locals;
165121 +
165122 +static struct plugin_info stackleak_plugin_info = {
165123 + .version = "201504282245",
165124 + .help = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
165125 +// "initialize-locals\t\tforcibly initialize all stack frames\n"
165126 +};
165127 +
165128 +static void stackleak_check_alloca(gimple_stmt_iterator *gsi)
165129 +{
165130 + gimple stmt;
165131 + gcall *check_alloca;
165132 + tree alloca_size;
165133 + cgraph_node_ptr node;
165134 + int frequency;
165135 + basic_block bb;
165136 +
165137 + // insert call to void pax_check_alloca(unsigned long size)
165138 + alloca_size = gimple_call_arg(gsi_stmt(*gsi), 0);
165139 + stmt = gimple_build_call(check_function_decl, 1, alloca_size);
165140 + check_alloca = as_a_gcall(stmt);
165141 + gsi_insert_before(gsi, check_alloca, GSI_SAME_STMT);
165142 +
165143 + // update the cgraph
165144 + bb = gimple_bb(check_alloca);
165145 + node = cgraph_get_create_node(check_function_decl);
165146 + gcc_assert(node);
165147 + frequency = compute_call_stmt_bb_frequency(current_function_decl, bb);
165148 + cgraph_create_edge(cgraph_get_node(current_function_decl), node, check_alloca, bb->count, frequency, bb->loop_depth);
165149 +}
165150 +
165151 +static void stackleak_add_instrumentation(gimple_stmt_iterator *gsi)
165152 +{
165153 + gimple stmt;
165154 + gcall *track_stack;
165155 + cgraph_node_ptr node;
165156 + int frequency;
165157 + basic_block bb;
165158 +
165159 + // insert call to void pax_track_stack(void)
165160 + stmt = gimple_build_call(track_function_decl, 0);
165161 + track_stack = as_a_gcall(stmt);
165162 + gsi_insert_after(gsi, track_stack, GSI_CONTINUE_LINKING);
165163 +
165164 + // update the cgraph
165165 + bb = gimple_bb(track_stack);
165166 + node = cgraph_get_create_node(track_function_decl);
165167 + gcc_assert(node);
165168 + frequency = compute_call_stmt_bb_frequency(current_function_decl, bb);
165169 + cgraph_create_edge(cgraph_get_node(current_function_decl), node, track_stack, bb->count, frequency, bb->loop_depth);
165170 +}
165171 +
165172 +static bool is_alloca(gimple stmt)
165173 +{
165174 + if (gimple_call_builtin_p(stmt, BUILT_IN_ALLOCA))
165175 + return true;
165176 +
165177 +#if BUILDING_GCC_VERSION >= 4007
165178 + if (gimple_call_builtin_p(stmt, BUILT_IN_ALLOCA_WITH_ALIGN))
165179 + return true;
165180 +#endif
165181 +
165182 + return false;
165183 +}
165184 +
165185 +static unsigned int execute_stackleak_tree_instrument(void)
165186 +{
165187 + basic_block bb, entry_bb;
165188 + bool prologue_instrumented = false, is_leaf = true;
165189 +
165190 + entry_bb = ENTRY_BLOCK_PTR_FOR_FN(cfun)->next_bb;
165191 +
165192 + // 1. loop through BBs and GIMPLE statements
165193 + FOR_EACH_BB_FN(bb, cfun) {
165194 + gimple_stmt_iterator gsi;
165195 +
165196 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
165197 + gimple stmt;
165198 +
165199 + stmt = gsi_stmt(gsi);
165200 +
165201 + if (is_gimple_call(stmt))
165202 + is_leaf = false;
165203 +
165204 + // gimple match: align 8 built-in BUILT_IN_NORMAL:BUILT_IN_ALLOCA attributes <tree_list 0xb7576450>
165205 + if (!is_alloca(stmt))
165206 + continue;
165207 +
165208 + // 2. insert stack overflow check before each __builtin_alloca call
165209 + stackleak_check_alloca(&gsi);
165210 +
165211 + // 3. insert track call after each __builtin_alloca call
165212 + stackleak_add_instrumentation(&gsi);
165213 + if (bb == entry_bb)
165214 + prologue_instrumented = true;
165215 + }
165216 + }
165217 +
165218 + // special cases for some bad linux code: taking the address of static inline functions will materialize them
165219 + // but we mustn't instrument some of them as the resulting stack alignment required by the function call ABI
165220 + // will break other assumptions regarding the expected (but not otherwise enforced) register clobbering ABI.
165221 + // case in point: native_save_fl on amd64 when optimized for size clobbers rdx if it were instrumented here.
165222 + if (is_leaf && !TREE_PUBLIC(current_function_decl) && DECL_DECLARED_INLINE_P(current_function_decl))
165223 + return 0;
165224 + if (is_leaf && !strncmp(IDENTIFIER_POINTER(DECL_NAME(current_function_decl)), "_paravirt_", 10))
165225 + return 0;
165226 +
165227 + // 4. insert track call at the beginning
165228 + if (!prologue_instrumented) {
165229 + gimple_stmt_iterator gsi;
165230 +
165231 + bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
165232 + if (dom_info_available_p(CDI_DOMINATORS))
165233 + set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
165234 + gsi = gsi_start_bb(bb);
165235 + stackleak_add_instrumentation(&gsi);
165236 + }
165237 +
165238 + return 0;
165239 +}
165240 +
165241 +static unsigned int execute_stackleak_final(void)
165242 +{
165243 + rtx_insn *insn, *next;
165244 +
165245 + if (cfun->calls_alloca)
165246 + return 0;
165247 +
165248 + // keep calls only if function frame is big enough
165249 + if (get_frame_size() >= track_frame_size)
165250 + return 0;
165251 +
165252 + // 1. find pax_track_stack calls
165253 + for (insn = get_insns(); insn; insn = next) {
165254 + // rtl match: (call_insn 8 7 9 3 (call (mem (symbol_ref ("pax_track_stack") [flags 0x41] <function_decl 0xb7470e80 pax_track_stack>) [0 S1 A8]) (4)) -1 (nil) (nil))
165255 + rtx body;
165256 +
165257 + next = NEXT_INSN(insn);
165258 + if (!CALL_P(insn))
165259 + continue;
165260 + body = PATTERN(insn);
165261 + if (GET_CODE(body) != CALL)
165262 + continue;
165263 + body = XEXP(body, 0);
165264 + if (GET_CODE(body) != MEM)
165265 + continue;
165266 + body = XEXP(body, 0);
165267 + if (GET_CODE(body) != SYMBOL_REF)
165268 + continue;
165269 +// if (strcmp(XSTR(body, 0), track_function))
165270 + if (SYMBOL_REF_DECL(body) != track_function_decl)
165271 + continue;
165272 +// warning(0, "track_frame_size: %d %ld %d", cfun->calls_alloca, get_frame_size(), track_frame_size);
165273 + // 2. delete call
165274 + delete_insn_and_edges(insn);
165275 +#if BUILDING_GCC_VERSION >= 4007
165276 + if (GET_CODE(next) == NOTE && NOTE_KIND(next) == NOTE_INSN_CALL_ARG_LOCATION) {
165277 + insn = next;
165278 + next = NEXT_INSN(insn);
165279 + delete_insn_and_edges(insn);
165280 + }
165281 +#endif
165282 + }
165283 +
165284 +// print_simple_rtl(stderr, get_insns());
165285 +// print_rtl(stderr, get_insns());
165286 +// warning(0, "track_frame_size: %d %ld %d", cfun->calls_alloca, get_frame_size(), track_frame_size);
165287 +
165288 + return 0;
165289 +}
165290 +
165291 +static bool gate_stackleak_track_stack(void)
165292 +{
165293 + tree section;
165294 +
165295 + if (ix86_cmodel != CM_KERNEL)
165296 + return false;
165297 +
165298 + section = lookup_attribute("section", DECL_ATTRIBUTES(current_function_decl));
165299 + if (section && TREE_VALUE(section)) {
165300 + section = TREE_VALUE(TREE_VALUE(section));
165301 +
165302 + if (!strncmp(TREE_STRING_POINTER(section), ".init.text", 10))
165303 + return false;
165304 + if (!strncmp(TREE_STRING_POINTER(section), ".devinit.text", 13))
165305 + return false;
165306 + if (!strncmp(TREE_STRING_POINTER(section), ".cpuinit.text", 13))
165307 + return false;
165308 + if (!strncmp(TREE_STRING_POINTER(section), ".meminit.text", 13))
165309 + return false;
165310 + }
165311 +
165312 + return track_frame_size >= 0;
165313 +}
165314 +
165315 +static void stackleak_start_unit(void *gcc_data, void *user_data)
165316 +{
165317 + tree fntype;
165318 +
165319 + // void pax_track_stack(void)
165320 + fntype = build_function_type_list(void_type_node, NULL_TREE);
165321 + track_function_decl = build_fn_decl(track_function, fntype);
165322 + DECL_ASSEMBLER_NAME(track_function_decl); // for LTO
165323 + TREE_PUBLIC(track_function_decl) = 1;
165324 + TREE_USED(track_function_decl) = 1;
165325 + DECL_EXTERNAL(track_function_decl) = 1;
165326 + DECL_ARTIFICIAL(track_function_decl) = 1;
165327 + DECL_PRESERVE_P(track_function_decl) = 1;
165328 +
165329 + // void pax_check_alloca(unsigned long)
165330 + fntype = build_function_type_list(void_type_node, long_unsigned_type_node, NULL_TREE);
165331 + check_function_decl = build_fn_decl(check_function, fntype);
165332 + DECL_ASSEMBLER_NAME(check_function_decl); // for LTO
165333 + TREE_PUBLIC(check_function_decl) = 1;
165334 + TREE_USED(check_function_decl) = 1;
165335 + DECL_EXTERNAL(check_function_decl) = 1;
165336 + DECL_ARTIFICIAL(check_function_decl) = 1;
165337 + DECL_PRESERVE_P(check_function_decl) = 1;
165338 +}
165339 +
165340 +#if BUILDING_GCC_VERSION >= 4009
165341 +namespace {
165342 +static const struct pass_data stackleak_tree_instrument_pass_data = {
165343 +#else
165344 +static struct gimple_opt_pass stackleak_tree_instrument_pass = {
165345 + .pass = {
165346 +#endif
165347 + .type = GIMPLE_PASS,
165348 + .name = "stackleak_tree_instrument",
165349 +#if BUILDING_GCC_VERSION >= 4008
165350 + .optinfo_flags = OPTGROUP_NONE,
165351 +#endif
165352 +#if BUILDING_GCC_VERSION >= 5000
165353 +#elif BUILDING_GCC_VERSION == 4009
165354 + .has_gate = true,
165355 + .has_execute = true,
165356 +#else
165357 + .gate = gate_stackleak_track_stack,
165358 + .execute = execute_stackleak_tree_instrument,
165359 + .sub = NULL,
165360 + .next = NULL,
165361 + .static_pass_number = 0,
165362 +#endif
165363 + .tv_id = TV_NONE,
165364 + .properties_required = PROP_gimple_leh | PROP_cfg,
165365 + .properties_provided = 0,
165366 + .properties_destroyed = 0,
165367 + .todo_flags_start = 0, //TODO_verify_ssa | TODO_verify_flow | TODO_verify_stmts,
165368 + .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_update_ssa | TODO_rebuild_cgraph_edges
165369 +#if BUILDING_GCC_VERSION < 4009
165370 + }
165371 +#endif
165372 +};
165373 +
165374 +#if BUILDING_GCC_VERSION >= 4009
165375 +static const struct pass_data stackleak_final_rtl_opt_pass_data = {
165376 +#else
165377 +static struct rtl_opt_pass stackleak_final_rtl_opt_pass = {
165378 + .pass = {
165379 +#endif
165380 + .type = RTL_PASS,
165381 + .name = "stackleak_final",
165382 +#if BUILDING_GCC_VERSION >= 4008
165383 + .optinfo_flags = OPTGROUP_NONE,
165384 +#endif
165385 +#if BUILDING_GCC_VERSION >= 5000
165386 +#elif BUILDING_GCC_VERSION == 4009
165387 + .has_gate = true,
165388 + .has_execute = true,
165389 +#else
165390 + .gate = gate_stackleak_track_stack,
165391 + .execute = execute_stackleak_final,
165392 + .sub = NULL,
165393 + .next = NULL,
165394 + .static_pass_number = 0,
165395 +#endif
165396 + .tv_id = TV_NONE,
165397 + .properties_required = 0,
165398 + .properties_provided = 0,
165399 + .properties_destroyed = 0,
165400 + .todo_flags_start = 0,
165401 + .todo_flags_finish = TODO_dump_func
165402 +#if BUILDING_GCC_VERSION < 4009
165403 + }
165404 +#endif
165405 +};
165406 +
165407 +#if BUILDING_GCC_VERSION >= 4009
165408 +class stackleak_tree_instrument_pass : public gimple_opt_pass {
165409 +public:
165410 + stackleak_tree_instrument_pass() : gimple_opt_pass(stackleak_tree_instrument_pass_data, g) {}
165411 +#if BUILDING_GCC_VERSION >= 5000
165412 + virtual bool gate(function *) { return gate_stackleak_track_stack(); }
165413 + virtual unsigned int execute(function *) { return execute_stackleak_tree_instrument(); }
165414 +#else
165415 + bool gate() { return gate_stackleak_track_stack(); }
165416 + unsigned int execute() { return execute_stackleak_tree_instrument(); }
165417 +#endif
165418 +};
165419 +
165420 +class stackleak_final_rtl_opt_pass : public rtl_opt_pass {
165421 +public:
165422 + stackleak_final_rtl_opt_pass() : rtl_opt_pass(stackleak_final_rtl_opt_pass_data, g) {}
165423 +#if BUILDING_GCC_VERSION >= 5000
165424 + virtual bool gate(function *) { return gate_stackleak_track_stack(); }
165425 + virtual unsigned int execute(function *) { return execute_stackleak_final(); }
165426 +#else
165427 + bool gate() { return gate_stackleak_track_stack(); }
165428 + unsigned int execute() { return execute_stackleak_final(); }
165429 +#endif
165430 +};
165431 +}
165432 +
165433 +static opt_pass *make_stackleak_tree_instrument_pass(void)
165434 +{
165435 + return new stackleak_tree_instrument_pass();
165436 +}
165437 +
165438 +static opt_pass *make_stackleak_final_rtl_opt_pass(void)
165439 +{
165440 + return new stackleak_final_rtl_opt_pass();
165441 +}
165442 +#else
165443 +static struct opt_pass *make_stackleak_tree_instrument_pass(void)
165444 +{
165445 + return &stackleak_tree_instrument_pass.pass;
165446 +}
165447 +
165448 +static struct opt_pass *make_stackleak_final_rtl_opt_pass(void)
165449 +{
165450 + return &stackleak_final_rtl_opt_pass.pass;
165451 +}
165452 +#endif
165453 +
165454 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
165455 +{
165456 + const char * const plugin_name = plugin_info->base_name;
165457 + const int argc = plugin_info->argc;
165458 + const struct plugin_argument * const argv = plugin_info->argv;
165459 + int i;
165460 + struct register_pass_info stackleak_tree_instrument_pass_info;
165461 + struct register_pass_info stackleak_final_pass_info;
165462 + static const struct ggc_root_tab gt_ggc_r_gt_stackleak[] = {
165463 + {
165464 + .base = &track_function_decl,
165465 + .nelt = 1,
165466 + .stride = sizeof(track_function_decl),
165467 + .cb = &gt_ggc_mx_tree_node,
165468 + .pchw = &gt_pch_nx_tree_node
165469 + },
165470 + {
165471 + .base = &check_function_decl,
165472 + .nelt = 1,
165473 + .stride = sizeof(check_function_decl),
165474 + .cb = &gt_ggc_mx_tree_node,
165475 + .pchw = &gt_pch_nx_tree_node
165476 + },
165477 + LAST_GGC_ROOT_TAB
165478 + };
165479 +
165480 + stackleak_tree_instrument_pass_info.pass = make_stackleak_tree_instrument_pass();
165481 +// stackleak_tree_instrument_pass_info.reference_pass_name = "tree_profile";
165482 + stackleak_tree_instrument_pass_info.reference_pass_name = "optimized";
165483 + stackleak_tree_instrument_pass_info.ref_pass_instance_number = 1;
165484 + stackleak_tree_instrument_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
165485 +
165486 + stackleak_final_pass_info.pass = make_stackleak_final_rtl_opt_pass();
165487 + stackleak_final_pass_info.reference_pass_name = "final";
165488 + stackleak_final_pass_info.ref_pass_instance_number = 1;
165489 + stackleak_final_pass_info.pos_op = PASS_POS_INSERT_BEFORE;
165490 +
165491 + if (!plugin_default_version_check(version, &gcc_version)) {
165492 + error(G_("incompatible gcc/plugin versions"));
165493 + return 1;
165494 + }
165495 +
165496 + register_callback(plugin_name, PLUGIN_INFO, NULL, &stackleak_plugin_info);
165497 +
165498 + for (i = 0; i < argc; ++i) {
165499 + if (!strcmp(argv[i].key, "track-lowest-sp")) {
165500 + if (!argv[i].value) {
165501 + error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
165502 + continue;
165503 + }
165504 + track_frame_size = atoi(argv[i].value);
165505 + if (argv[i].value[0] < '0' || argv[i].value[0] > '9' || track_frame_size < 0)
165506 + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value);
165507 + continue;
165508 + }
165509 + if (!strcmp(argv[i].key, "initialize-locals")) {
165510 + if (argv[i].value) {
165511 + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value);
165512 + continue;
165513 + }
165514 + init_locals = true;
165515 + continue;
165516 + }
165517 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
165518 + }
165519 +
165520 + register_callback(plugin_name, PLUGIN_START_UNIT, &stackleak_start_unit, NULL);
165521 + register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_stackleak);
165522 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_tree_instrument_pass_info);
165523 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_final_pass_info);
165524 +
165525 + return 0;
165526 +}
165527 diff --git a/tools/gcc/structleak_plugin.c b/tools/gcc/structleak_plugin.c
165528 new file mode 100644
165529 index 0000000..e9dbd4b
165530 --- /dev/null
165531 +++ b/tools/gcc/structleak_plugin.c
165532 @@ -0,0 +1,287 @@
165533 +/*
165534 + * Copyright 2013-2015 by PaX Team <pageexec@freemail.hu>
165535 + * Licensed under the GPL v2
165536 + *
165537 + * Note: the choice of the license means that the compilation process is
165538 + * NOT 'eligible' as defined by gcc's library exception to the GPL v3,
165539 + * but for the kernel it doesn't matter since it doesn't link against
165540 + * any of the gcc libraries
165541 + *
165542 + * gcc plugin to forcibly initialize certain local variables that could
165543 + * otherwise leak kernel stack to userland if they aren't properly initialized
165544 + * by later code
165545 + *
165546 + * Homepage: http://pax.grsecurity.net/
165547 + *
165548 + * Usage:
165549 + * $ # for 4.5/4.6/C based 4.7
165550 + * $ gcc -I`gcc -print-file-name=plugin`/include -I`gcc -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o structleak_plugin.so structleak_plugin.c
165551 + * $ # for C++ based 4.7/4.8+
165552 + * $ g++ -I`g++ -print-file-name=plugin`/include -I`g++ -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o structleak_plugin.so structleak_plugin.c
165553 + * $ gcc -fplugin=./structleak_plugin.so test.c -O2
165554 + *
165555 + * TODO: eliminate redundant initializers
165556 + * increase type coverage
165557 + */
165558 +
165559 +#include "gcc-common.h"
165560 +
165561 +// unused C type flag in all versions 4.5-5.0
165562 +#define TYPE_USERSPACE(TYPE) TYPE_LANG_FLAG_5(TYPE)
165563 +
165564 +int plugin_is_GPL_compatible;
165565 +
165566 +static struct plugin_info structleak_plugin_info = {
165567 + .version = "201401260140",
165568 + .help = "disable\tdo not activate plugin\n",
165569 +};
165570 +
165571 +static tree handle_user_attribute(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
165572 +{
165573 + *no_add_attrs = true;
165574 +
165575 + // check for types? for now accept everything linux has to offer
165576 + if (TREE_CODE(*node) != FIELD_DECL)
165577 + return NULL_TREE;
165578 +
165579 + *no_add_attrs = false;
165580 + return NULL_TREE;
165581 +}
165582 +
165583 +static struct attribute_spec user_attr = {
165584 + .name = "user",
165585 + .min_length = 0,
165586 + .max_length = 0,
165587 + .decl_required = false,
165588 + .type_required = false,
165589 + .function_type_required = false,
165590 + .handler = handle_user_attribute,
165591 +#if BUILDING_GCC_VERSION >= 4007
165592 + .affects_type_identity = true
165593 +#endif
165594 +};
165595 +
165596 +static void register_attributes(void *event_data, void *data)
165597 +{
165598 + register_attribute(&user_attr);
165599 +// register_attribute(&force_attr);
165600 +}
165601 +
165602 +static tree get_field_type(tree field)
165603 +{
165604 + return strip_array_types(TREE_TYPE(field));
165605 +}
165606 +
165607 +static bool is_userspace_type(tree type)
165608 +{
165609 + tree field;
165610 +
165611 + for (field = TYPE_FIELDS(type); field; field = TREE_CHAIN(field)) {
165612 + tree fieldtype = get_field_type(field);
165613 + enum tree_code code = TREE_CODE(fieldtype);
165614 +
165615 + if (code == RECORD_TYPE || code == UNION_TYPE)
165616 + if (is_userspace_type(fieldtype))
165617 + return true;
165618 +
165619 + if (lookup_attribute("user", DECL_ATTRIBUTES(field)))
165620 + return true;
165621 + }
165622 + return false;
165623 +}
165624 +
165625 +static void finish_type(void *event_data, void *data)
165626 +{
165627 + tree type = (tree)event_data;
165628 +
165629 + if (type == NULL_TREE || type == error_mark_node)
165630 + return;
165631 +
165632 +#if BUILDING_GCC_VERSION >= 5000
165633 + if (TREE_CODE(type) == ENUMERAL_TYPE)
165634 + return;
165635 +#endif
165636 +
165637 + if (TYPE_USERSPACE(type))
165638 + return;
165639 +
165640 + if (is_userspace_type(type))
165641 + TYPE_USERSPACE(type) = 1;
165642 +}
165643 +
165644 +static void initialize(tree var)
165645 +{
165646 + basic_block bb;
165647 + gimple_stmt_iterator gsi;
165648 + tree initializer;
165649 + gimple init_stmt;
165650 +
165651 + // this is the original entry bb before the forced split
165652 + // TODO: check further BBs in case more splits occured before us
165653 + bb = ENTRY_BLOCK_PTR_FOR_FN(cfun)->next_bb->next_bb;
165654 +
165655 + // first check if the variable is already initialized, warn otherwise
165656 + for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
165657 + gimple stmt = gsi_stmt(gsi);
165658 + tree rhs1;
165659 +
165660 + // we're looking for an assignment of a single rhs...
165661 + if (!gimple_assign_single_p(stmt))
165662 + continue;
165663 + rhs1 = gimple_assign_rhs1(stmt);
165664 +#if BUILDING_GCC_VERSION >= 4007
165665 + // ... of a non-clobbering expression...
165666 + if (TREE_CLOBBER_P(rhs1))
165667 + continue;
165668 +#endif
165669 + // ... to our variable...
165670 + if (gimple_get_lhs(stmt) != var)
165671 + continue;
165672 + // if it's an initializer then we're good
165673 + if (TREE_CODE(rhs1) == CONSTRUCTOR)
165674 + return;
165675 + }
165676 +
165677 + // these aren't the 0days you're looking for
165678 +// inform(DECL_SOURCE_LOCATION(var), "userspace variable will be forcibly initialized");
165679 +
165680 + // build the initializer expression
165681 + initializer = build_constructor(TREE_TYPE(var), NULL);
165682 +
165683 + // build the initializer stmt
165684 + init_stmt = gimple_build_assign(var, initializer);
165685 + gsi = gsi_start_bb(ENTRY_BLOCK_PTR_FOR_FN(cfun)->next_bb);
165686 + gsi_insert_before(&gsi, init_stmt, GSI_NEW_STMT);
165687 + update_stmt(init_stmt);
165688 +}
165689 +
165690 +static unsigned int handle_function(void)
165691 +{
165692 + basic_block bb;
165693 + unsigned int ret = 0;
165694 + tree var;
165695 + unsigned int i;
165696 +
165697 + // split the first bb where we can put the forced initializers
165698 + bb = split_block_after_labels(ENTRY_BLOCK_PTR_FOR_FN(cfun))->dest;
165699 + if (dom_info_available_p(CDI_DOMINATORS))
165700 + set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR_FOR_FN(cfun));
165701 +
165702 + // enumarate all local variables and forcibly initialize our targets
165703 + FOR_EACH_LOCAL_DECL(cfun, i, var) {
165704 + tree type = TREE_TYPE(var);
165705 +
165706 + gcc_assert(DECL_P(var));
165707 + if (!auto_var_in_fn_p(var, current_function_decl))
165708 + continue;
165709 +
165710 + // only care about structure types
165711 + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE)
165712 + continue;
165713 +
165714 + // if the type is of interest, examine the variable
165715 + if (TYPE_USERSPACE(type))
165716 + initialize(var);
165717 + }
165718 +
165719 + return ret;
165720 +}
165721 +
165722 +#if BUILDING_GCC_VERSION >= 4009
165723 +namespace {
165724 +static const struct pass_data structleak_pass_data = {
165725 +#else
165726 +static struct gimple_opt_pass structleak_pass = {
165727 + .pass = {
165728 +#endif
165729 + .type = GIMPLE_PASS,
165730 + .name = "structleak",
165731 +#if BUILDING_GCC_VERSION >= 4008
165732 + .optinfo_flags = OPTGROUP_NONE,
165733 +#endif
165734 +#if BUILDING_GCC_VERSION >= 5000
165735 +#elif BUILDING_GCC_VERSION == 4009
165736 + .has_gate = false,
165737 + .has_execute = true,
165738 +#else
165739 + .gate = NULL,
165740 + .execute = handle_function,
165741 + .sub = NULL,
165742 + .next = NULL,
165743 + .static_pass_number = 0,
165744 +#endif
165745 + .tv_id = TV_NONE,
165746 + .properties_required = PROP_cfg,
165747 + .properties_provided = 0,
165748 + .properties_destroyed = 0,
165749 + .todo_flags_start = 0,
165750 + .todo_flags_finish = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa | TODO_ggc_collect | TODO_verify_flow
165751 +#if BUILDING_GCC_VERSION < 4009
165752 + }
165753 +#endif
165754 +};
165755 +
165756 +#if BUILDING_GCC_VERSION >= 4009
165757 +class structleak_pass : public gimple_opt_pass {
165758 +public:
165759 + structleak_pass() : gimple_opt_pass(structleak_pass_data, g) {}
165760 +#if BUILDING_GCC_VERSION >= 5000
165761 + virtual unsigned int execute(function *) { return handle_function(); }
165762 +#else
165763 + unsigned int execute() { return handle_function(); }
165764 +#endif
165765 +};
165766 +}
165767 +
165768 +static opt_pass *make_structleak_pass(void)
165769 +{
165770 + return new structleak_pass();
165771 +}
165772 +#else
165773 +static struct opt_pass *make_structleak_pass(void)
165774 +{
165775 + return &structleak_pass.pass;
165776 +}
165777 +#endif
165778 +
165779 +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
165780 +{
165781 + int i;
165782 + const char * const plugin_name = plugin_info->base_name;
165783 + const int argc = plugin_info->argc;
165784 + const struct plugin_argument * const argv = plugin_info->argv;
165785 + bool enable = true;
165786 + struct register_pass_info structleak_pass_info;
165787 +
165788 + structleak_pass_info.pass = make_structleak_pass();
165789 + structleak_pass_info.reference_pass_name = "ssa";
165790 + structleak_pass_info.ref_pass_instance_number = 1;
165791 + structleak_pass_info.pos_op = PASS_POS_INSERT_AFTER;
165792 +
165793 + if (!plugin_default_version_check(version, &gcc_version)) {
165794 + error(G_("incompatible gcc/plugin versions"));
165795 + return 1;
165796 + }
165797 +
165798 + if (strncmp(lang_hooks.name, "GNU C", 5) && !strncmp(lang_hooks.name, "GNU C+", 6)) {
165799 + inform(UNKNOWN_LOCATION, G_("%s supports C only"), plugin_name);
165800 + enable = false;
165801 + }
165802 +
165803 + for (i = 0; i < argc; ++i) {
165804 + if (!strcmp(argv[i].key, "disable")) {
165805 + enable = false;
165806 + continue;
165807 + }
165808 + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
165809 + }
165810 +
165811 + register_callback(plugin_name, PLUGIN_INFO, NULL, &structleak_plugin_info);
165812 + if (enable) {
165813 + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &structleak_pass_info);
165814 + register_callback(plugin_name, PLUGIN_FINISH_TYPE, finish_type, NULL);
165815 + }
165816 + register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
165817 +
165818 + return 0;
165819 +}
165820 diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
165821 index 9098083..18f0454 100644
165822 --- a/tools/include/linux/compiler.h
165823 +++ b/tools/include/linux/compiler.h
165824 @@ -39,6 +39,14 @@
165825 # define unlikely(x) __builtin_expect(!!(x), 0)
165826 #endif
165827
165828 +#ifndef __size_overflow
165829 +# define __size_overflow(...)
165830 +#endif
165831 +
165832 +#ifndef __intentional_overflow
165833 +# define __intentional_overflow(...)
165834 +#endif
165835 +
165836 #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
165837
165838 #include <linux/types.h>
165839 diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile
165840 index fe1b02c..a5eae4a 100644
165841 --- a/tools/lib/api/Makefile
165842 +++ b/tools/lib/api/Makefile
165843 @@ -16,7 +16,7 @@ MAKEFLAGS += --no-print-directory
165844 LIBFILE = $(OUTPUT)libapi.a
165845
165846 CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
165847 -CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC
165848 +CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC
165849 CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
165850
165851 RM = rm -f
165852 diff --git a/tools/perf/util/include/asm/alternative-asm.h b/tools/perf/util/include/asm/alternative-asm.h
165853 index 3a3a0f1..6cf679d 100644
165854 --- a/tools/perf/util/include/asm/alternative-asm.h
165855 +++ b/tools/perf/util/include/asm/alternative-asm.h
165856 @@ -6,4 +6,7 @@
165857 #define altinstruction_entry #
165858 #define ALTERNATIVE_2 #
165859
165860 + .macro pax_force_retaddr rip=0, reload=0
165861 + .endm
165862 +
165863 #endif
165864 diff --git a/tools/virtio/linux/uaccess.h b/tools/virtio/linux/uaccess.h
165865 index 0a578fe..b81f62d 100644
165866 --- a/tools/virtio/linux/uaccess.h
165867 +++ b/tools/virtio/linux/uaccess.h
165868 @@ -13,7 +13,7 @@ static inline void __chk_user_ptr(const volatile void *p, size_t size)
165869 ({ \
165870 typeof(ptr) __pu_ptr = (ptr); \
165871 __chk_user_ptr(__pu_ptr, sizeof(*__pu_ptr)); \
165872 - ACCESS_ONCE(*(__pu_ptr)) = x; \
165873 + ACCESS_ONCE_RW(*(__pu_ptr)) = x; \
165874 0; \
165875 })
165876
165877 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
165878 index 8b8a444..4ac8a9a 100644
165879 --- a/virt/kvm/kvm_main.c
165880 +++ b/virt/kvm/kvm_main.c
165881 @@ -81,12 +81,17 @@ LIST_HEAD(vm_list);
165882
165883 static cpumask_var_t cpus_hardware_enabled;
165884 static int kvm_usage_count;
165885 -static atomic_t hardware_enable_failed;
165886 +static atomic_unchecked_t hardware_enable_failed;
165887
165888 struct kmem_cache *kvm_vcpu_cache;
165889 EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
165890
165891 -static __read_mostly struct preempt_ops kvm_preempt_ops;
165892 +static void kvm_sched_in(struct preempt_notifier *pn, int cpu);
165893 +static void kvm_sched_out(struct preempt_notifier *pn, struct task_struct *next);
165894 +static struct preempt_ops kvm_preempt_ops = {
165895 + .sched_in = kvm_sched_in,
165896 + .sched_out = kvm_sched_out,
165897 +};
165898
165899 struct dentry *kvm_debugfs_dir;
165900 EXPORT_SYMBOL_GPL(kvm_debugfs_dir);
165901 @@ -798,7 +803,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
165902 /* We can read the guest memory with __xxx_user() later on. */
165903 if ((id < KVM_USER_MEM_SLOTS) &&
165904 ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
165905 - !access_ok(VERIFY_WRITE,
165906 + !access_ok_noprefault(VERIFY_WRITE,
165907 (void __user *)(unsigned long)mem->userspace_addr,
165908 mem->memory_size)))
165909 goto out;
165910 @@ -1853,9 +1858,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached);
165911
165912 int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len)
165913 {
165914 - const void *zero_page = (const void *) __va(page_to_phys(ZERO_PAGE(0)));
165915 + int r;
165916 + unsigned long addr;
165917
165918 - return kvm_write_guest_page(kvm, gfn, zero_page, offset, len);
165919 + addr = gfn_to_hva(kvm, gfn);
165920 + if (kvm_is_error_hva(addr))
165921 + return -EFAULT;
165922 + r = __clear_user((void __user *)addr + offset, len);
165923 + if (r)
165924 + return -EFAULT;
165925 + mark_page_dirty(kvm, gfn);
165926 + return 0;
165927 }
165928 EXPORT_SYMBOL_GPL(kvm_clear_guest_page);
165929
165930 @@ -2140,7 +2153,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
165931 return 0;
165932 }
165933
165934 -static struct file_operations kvm_vcpu_fops = {
165935 +static file_operations_no_const kvm_vcpu_fops __read_only = {
165936 .release = kvm_vcpu_release,
165937 .unlocked_ioctl = kvm_vcpu_ioctl,
165938 #ifdef CONFIG_KVM_COMPAT
165939 @@ -2864,7 +2877,7 @@ out:
165940 }
165941 #endif
165942
165943 -static struct file_operations kvm_vm_fops = {
165944 +static file_operations_no_const kvm_vm_fops __read_only = {
165945 .release = kvm_vm_release,
165946 .unlocked_ioctl = kvm_vm_ioctl,
165947 #ifdef CONFIG_KVM_COMPAT
165948 @@ -2935,7 +2948,7 @@ out:
165949 return r;
165950 }
165951
165952 -static struct file_operations kvm_chardev_ops = {
165953 +static file_operations_no_const kvm_chardev_ops __read_only = {
165954 .unlocked_ioctl = kvm_dev_ioctl,
165955 .compat_ioctl = kvm_dev_ioctl,
165956 .llseek = noop_llseek,
165957 @@ -2961,7 +2974,7 @@ static void hardware_enable_nolock(void *junk)
165958
165959 if (r) {
165960 cpumask_clear_cpu(cpu, cpus_hardware_enabled);
165961 - atomic_inc(&hardware_enable_failed);
165962 + atomic_inc_unchecked(&hardware_enable_failed);
165963 pr_info("kvm: enabling virtualization on CPU%d failed\n", cpu);
165964 }
165965 }
165966 @@ -3016,10 +3029,10 @@ static int hardware_enable_all(void)
165967
165968 kvm_usage_count++;
165969 if (kvm_usage_count == 1) {
165970 - atomic_set(&hardware_enable_failed, 0);
165971 + atomic_set_unchecked(&hardware_enable_failed, 0);
165972 on_each_cpu(hardware_enable_nolock, NULL, 1);
165973
165974 - if (atomic_read(&hardware_enable_failed)) {
165975 + if (atomic_read_unchecked(&hardware_enable_failed)) {
165976 hardware_disable_all_nolock();
165977 r = -EBUSY;
165978 }
165979 @@ -3421,7 +3434,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
165980 kvm_arch_vcpu_put(vcpu);
165981 }
165982
165983 -int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
165984 +int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align,
165985 struct module *module)
165986 {
165987 int r;
165988 @@ -3468,7 +3481,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
165989 if (!vcpu_align)
165990 vcpu_align = __alignof__(struct kvm_vcpu);
165991 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
165992 - 0, NULL);
165993 + SLAB_USERCOPY, NULL);
165994 if (!kvm_vcpu_cache) {
165995 r = -ENOMEM;
165996 goto out_free_3;
165997 @@ -3478,9 +3491,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
165998 if (r)
165999 goto out_free;
166000
166001 + pax_open_kernel();
166002 kvm_chardev_ops.owner = module;
166003 kvm_vm_fops.owner = module;
166004 kvm_vcpu_fops.owner = module;
166005 + pax_close_kernel();
166006
166007 r = misc_register(&kvm_dev);
166008 if (r) {
166009 @@ -3490,9 +3505,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
166010
166011 register_syscore_ops(&kvm_syscore_ops);
166012
166013 - kvm_preempt_ops.sched_in = kvm_sched_in;
166014 - kvm_preempt_ops.sched_out = kvm_sched_out;
166015 -
166016 r = kvm_init_debug();
166017 if (r) {
166018 pr_err("kvm: create debugfs files failed\n");