kernel_optimize_test/scripts
Boqun Feng ad315455d3 sparse: Add __private to privatize members of structs
In C programming language, we don't have a easy way to privatize a
member of a structure. However in kernel, sometimes there is a need to
privatize a member in case of potential bugs or misuses.

Fortunately, the noderef attribute of sparse is a way to privatize a
member, as by defining a member as noderef, the address-of operator on
the member will produce a noderef pointer to that member, and if anyone
wants to dereference that kind of pointers to read or modify the member,
sparse will yell.

Based on this, __private modifier and related operation ACCESS_PRIVATE()
are introduced, which could help detect undesigned public uses of
private members of structs. Here is an example of sparse's output if it
detect an undersigned public use:

| kernel/rcu/tree.c:4453:25: warning: incorrect type in argument 1 (different modifiers)
| kernel/rcu/tree.c:4453:25:    expected struct raw_spinlock [usertype] *lock
| kernel/rcu/tree.c:4453:25:    got struct raw_spinlock [noderef] *<noident>

Also, this patch improves compiler.h a little bit by adding comments for
"#else" and "#endif".

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2016-02-23 19:59:53 -08:00
..
basic fixdep: constify strrcmp arguments 2015-12-07 12:42:55 +01:00
coccinelle coccinelle: tests: unsigned value cannot be lesser than zero 2016-01-12 17:47:47 +01:00
dtc
gdb
genksyms genksyms: Handle string literals with spaces in reference files 2015-12-09 15:19:23 +01:00
kconfig kconfig: fix qconf segfault by deleting heap objects 2016-01-11 09:45:08 +01:00
ksymoops
mod modpost: don't add a trailing wildcard for OF module aliases 2016-01-14 16:00:49 -08:00
package package Makefile: fix perf-tar targets when outdir is set 2015-11-24 17:49:42 +01:00
selinux selinux: explicitly declare the role "base_r" 2015-07-13 13:32:00 -04:00
tracing
.gitignore DocBook: Use a fixed encoding for output 2015-09-28 01:31:48 -06:00
analyze_suspend.py
asn1_compiler.c ASN.1: Copy string names to tokens in ASN.1 compiler 2015-08-07 16:26:13 +01:00
bloat-o-meter scripts/bloat-o-meter: fix python3 syntax error 2016-01-14 16:00:49 -08:00
bootgraph.pl
check_extable.sh
check-lc_ctype.c DocBook: Use a fixed encoding for output 2015-09-28 01:31:48 -06:00
checkincludes.pl
checkkconfigsymbols.py checkkconfigsymbols.py: find similar symbols 2015-12-14 10:54:23 -08:00
checkpatch.pl sparse: Add __private to privatize members of structs 2016-02-23 19:59:53 -08:00
checkstack.pl
checksyscalls.sh
checkversion.pl
cleanfile
cleanpatch
coccicheck Coccinelle: fix incorrect -include option transformation 2015-10-26 21:32:09 +01:00
config
conmakehash.c
decode_stacktrace.sh scripts: decode_stacktrace: fix ARM architecture decoding 2015-09-04 16:54:41 -07:00
decodecode
depmod.sh
diffconfig
docproc.c
export_report.pl
extract-cert.c KEYS: Remove unnecessary header #inclusions from extract-cert.c 2015-09-25 16:31:45 +01:00
extract-ikconfig
extract-module-sig.pl KEYS: Provide a script to extract a module signature 2015-10-21 15:18:36 +01:00
extract-sys-certs.pl KEYS: Provide a script to extract the sys cert list from a vmlinux file 2015-10-21 15:18:36 +01:00
extract-vmlinux
gcc-goto.sh
gcc-ld
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_initramfs_list.sh
get_maintainer.pl scripts/get_maintainer.pl: handle file names beginning with ./ 2016-01-20 17:09:18 -08:00
gfp-translate
headerdep.pl
headers_check.pl
headers_install.sh
headers.sh
kallsyms.c
Kbuild.include Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2015-09-08 14:12:19 -07:00
kernel-doc A relatively boring cycle in the docs tree. There's a few kernel-doc 2016-01-17 11:55:07 -08:00
kernel-doc-xml-ref scripts/kernel-doc: Adding cross-reference links to html documentation. 2015-08-16 22:11:16 -06:00
ld-version.sh ld-version: Fix it on Fedora 2016-01-08 16:34:27 +01:00
Lindent scripts/Lindent: handle missing indent gracefully 2015-09-04 16:54:41 -07:00
link-vmlinux.sh um: link with -lpthread 2016-01-10 21:49:48 +01:00
Makefile DocBook: Use a fixed encoding for output 2015-09-28 01:31:48 -06:00
Makefile.asm-generic
Makefile.build kbuild: Allow to specify composite modules with modname-m 2015-11-25 11:23:25 +01:00
Makefile.clean
Makefile.dtbinst
Makefile.extrawarn kbuild: Demote 'sign-compare' warning to W=2 2016-01-12 16:07:03 +01:00
Makefile.fwinst
Makefile.headersinst
Makefile.help
Makefile.host
Makefile.kasan arm64: add KASAN support 2015-10-12 17:46:36 +01:00
Makefile.lib UBSAN: run-time undefined behavior sanity checker 2016-01-20 17:09:18 -08:00
Makefile.modbuiltin
Makefile.modinst modsign: Abort modules_install when signing fails 2015-08-07 16:26:13 +01:00
Makefile.modpost modpost: Add flag -E for making section mismatches fatal 2015-10-06 10:46:21 +10:30
Makefile.modsign
Makefile.ubsan UBSAN: run-time undefined behavior sanity checker 2016-01-20 17:09:18 -08:00
makelst
markup_oops.pl
mkcompile_h
mkmakefile
mksysmap
mkuboot.sh
mkversion
module-common.lds
namespace.pl
objdiff
patch-kernel
pnmtologo.c
profile2linkerlist.pl
recordmcount.c ftrace/scripts: Fix incorrect use of sprintf in recordmcount 2016-01-04 11:13:16 -05:00
recordmcount.h recordmcount: Fix endianness handling bug for nop_mcount 2015-11-03 10:45:26 -05:00
recordmcount.pl scripts/recordmcount.pl: support data in text section on powerpc 2016-01-13 12:35:41 +11:00
setlocalversion
show_delta
sign-file.c MODSIGN: Change from CMS to PKCS#7 signing if the openssl is too old 2015-09-25 16:31:46 +01:00
sortextable.c
sortextable.h
spelling.txt scripts/spelling.txt: add some typo-words 2015-09-04 16:54:41 -07:00
stackdelta scripts: add stackdelta script 2015-08-28 17:04:40 +02:00
stackusage scripts: add stackusage script 2015-08-28 17:04:40 +02:00
tags.sh Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-01-20 10:10:23 -08:00
unifdef.c
ver_linux ver_linux: proc/modules, limit text processing to 'sed' 2015-10-17 21:55:26 -07:00
xen-hypercalls.sh
xz_wrap.sh