Wen Yang
da9cfb87a4
coccinelle: semantic code search for missing put_device()
...
The of_find_device_by_node() takes a reference to the underlying device
structure, we should release that reference.
The implementation of this semantic code search is:
In a function, for a local variable returned by calling
of_find_device_by_node(),
a, if it is released by a function such as
put_device()/of_dev_put()/platform_device_put() after the last use,
it is considered that there is no reference leak;
b, if it is passed back to the caller via
dev_get_drvdata()/platform_get_drvdata()/get_device(), etc., the
reference will be released in other functions, and the current function
also considers that there is no reference leak;
c, for the rest of the situation, the current function should release the
reference by calling put_device, this code search will report the
corresponding error message.
By using this semantic code search, we have found some object reference leaks,
such as:
commit 11907e9d35 ("ASoC: fsl-asoc-card: fix object reference leaks in
fsl_asoc_card_probe")
commit a12085d139 ("mtd: rawnand: atmel: fix possible object reference leak")
commit 11493f2685 ("mtd: rawnand: jz4780: fix possible object reference leak")
There are still dozens of reference leaks in the current kernel code.
Further, for the case of b, the object returned to other functions may also
have a reference leak, we will continue to develop other cocci scripts to
further check the reference leak.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Reviewed-by: Julia Lawall <Julia.Lawall@lip6.fr>
Reviewed-by: Markus Elfring <Markus.Elfring@web.de>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2019-03-17 12:55:45 +09:00
..
atomic
locking/atomics: Check atomic headers with sha1sum
2019-02-13 08:07:31 +01:00
basic
kbuild: simplify dependency generation for CONFIG_TRIM_UNUSED_KSYMS
2018-12-01 23:13:14 +09:00
coccinelle
coccinelle: semantic code search for missing put_device()
2019-03-17 12:55:45 +09:00
dtc
of: add dtc annotations functionality to dtx_diff
2019-02-28 11:40:48 -06:00
gcc-plugins
increased structleak coverage
2019-03-09 09:06:15 -08:00
gdb
Kbuild updates for v5.1
2019-03-10 17:48:21 -07:00
genksyms
kconfig
Kconfig updates for v5.1
2019-03-13 10:06:28 -07:00
ksymoops
mod
modpost: always show verbose warning for section mismatch
2019-03-14 02:39:09 +09:00
package
kbuild: pkg: grep include/config/auto.conf instead of $KCONFIG_CONFIG
2019-03-14 02:39:13 +09:00
selinux
genheaders: %-<width>s had been there since v6; %-*s - since v7
2018-12-10 03:40:11 -05:00
tracing
scripts: Add Python 3 support to tracing/draw_functrace.py
2018-07-29 11:08:38 +09:00
.gitignore
scripts: remove unnecessary ihex2fw and check-lc_ctypes from .gitignore
2018-12-22 00:37:52 +09:00
adjust_autoksyms.sh
kbuild: source include/config/auto.conf instead of ${KCONFIG_CONFIG}
2019-03-14 02:39:11 +09:00
asn1_compiler.c
ASN.1: Remove unnecessary shadowed local variable
2018-10-29 00:19:41 +09:00
bin2c.c
kbuild: move bin2c back to scripts/ from scripts/basic/
2018-07-18 01:18:05 +09:00
bloat-o-meter
bloat-o-meter: ignore __addressable_ symbols
2018-12-28 12:11:44 -08:00
bootgraph.pl
bpf_helpers_doc.py
cc-can-link.sh
bpfilter: check compiler capability in Kconfig
2018-06-28 13:36:39 +09:00
check_extable.sh
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl
A fairly routine cycle for docs - lots of typo fixes, some new documents,
2019-03-09 09:56:17 -08:00
checkstack.pl
scripts/checkstack.pl: dynamic stack growth for aarch64
2018-12-28 12:11:44 -08:00
checksyscalls.sh
checksyscalls: fix up mq_timedreceive and stat exceptions
2019-02-19 21:27:53 +01:00
checkversion.pl
clang-version.sh
kbuild: update comment block of scripts/clang-version.sh
2019-03-04 22:34:54 +09:00
cleanfile
cleanpatch
coccicheck
coccicheck: return proper error code on fail
2018-08-14 08:58:56 +09:00
config
conmakehash.c
const_structs.checkpatch
decode_stacktrace.sh
scripts/decode_stacktrace.sh: handle RIP address with segment
2019-03-05 21:07:13 -08:00
decodecode
scripts/decodecode: set ARCH when running natively on arm/arm64
2018-12-28 12:11:44 -08:00
depmod.sh
kbuild: modules_install: warn when missing System.map file
2018-09-09 09:14:07 +09:00
diffconfig
documentation-file-ref-check
scripts/documentation-file-ref-check: ignore sched-pelt false positive
2018-07-02 11:25:00 -06:00
export_report.pl
extract-cert.c
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract-vmlinux: Check for uncompressed image as fallback
2018-10-17 08:18:01 +02:00
extract_xc3028.pl
faddr2line
scripts/faddr2line: fix location of start_kernel in comment
2018-11-18 10:15:09 -08:00
file-size.sh
find-unused-docs.sh
gcc-goto.sh
jump_label: move 'asm goto' support test to Kconfig
2019-01-06 09:46:51 +09:00
gcc-ld
gcc-plugin.sh
gcc-version.sh
kbuild: clean up scripts/gcc-version.sh
2019-03-04 22:35:04 +09:00
gcc-x86_32-has-stack-protector.sh
stack-protector: test compiler capability in Kconfig and drop AUTO mode
2018-06-08 18:56:00 +09:00
gcc-x86_64-has-stack-protector.sh
stack-protector: Fix test with 32-bit userland and CONFIG_64BIT=y
2018-06-25 23:21:13 +09:00
gen_compile_commands.py
scripts: add a tool to produce a compile_commands.json file
2018-12-19 23:41:36 +09:00
gen_ksymdeps.sh
kbuild: simplify dependency generation for CONFIG_TRIM_UNUSED_KSYMS
2018-12-01 23:13:14 +09:00
get_dvb_firmware
get_maintainer.pl
get_maintainer: allow option --mpath <directory> to read all files in <directory>
2018-08-22 10:52:48 -07:00
gfp-translate
headerdep.pl
headers.sh
headers_check.pl
headers_install.sh
insert-sys-cert.c
kallsyms.c
Kbuild updates for v5.1
2019-03-10 17:48:21 -07:00
Kbuild.include
kbuild: remove cc-version macro
2019-03-04 22:34:59 +09:00
Kconfig.include
kbuild: clean up scripts/gcc-version.sh
2019-03-04 22:35:04 +09:00
kernel-doc
kernel-doc: suppress 'not described' warnings for embedded struct fields
2019-01-16 15:04:01 -07:00
ld-version.sh
leaking_addresses.pl
leaking_addresses: Completely remove --version flag
2019-03-07 08:53:18 +11:00
Lindent
link-vmlinux.sh
kbuild: source include/config/auto.conf instead of ${KCONFIG_CONFIG}
2019-03-14 02:39:11 +09:00
Makefile
scripts/gdb: do not descend into scripts/gdb from scripts
2019-02-27 21:40:09 +09:00
Makefile.asm-generic
kbuild: generate asm-generic wrappers if mandatory headers are missing
2019-01-06 09:46:51 +09:00
Makefile.build
kbuild: move archive command to scripts/Makefile.lib
2019-03-14 02:39:10 +09:00
Makefile.clean
kbuild: remove deprecated host-progs variable
2018-08-09 21:51:17 +09:00
Makefile.dtbinst
Makefile.extrawarn
Kbuild updates for v4.20 (2nd)
2018-11-03 10:47:33 -07:00
Makefile.gcc-plugins
gcc-plugins: structleak: Generalize to all variable types
2019-03-04 09:29:41 -08:00
Makefile.headersinst
kbuild: generate asm-generic wrappers if mandatory headers are missing
2019-01-06 09:46:51 +09:00
Makefile.host
kbuild: skip 'addtree' and 'flags' magic for external module build
2019-01-28 09:11:17 +09:00
Makefile.kasan
kasan: remove use after scope bugs detection.
2019-03-05 21:07:13 -08:00
Makefile.kcov
kcov: test compiler capability in Kconfig and correct dependency
2018-06-11 09:14:08 +09:00
Makefile.lib
kbuild: move archive command to scripts/Makefile.lib
2019-03-14 02:39:10 +09:00
Makefile.modbuiltin
Kbuild: Makefile.modbuiltin: include auto.conf and tristate.conf mandatory
2018-08-03 00:47:00 +09:00
Makefile.modinst
kbuild: remove duplicated comments about PHONY
2018-07-06 22:04:03 +09:00
Makefile.modpost
modpost: always show verbose warning for section mismatch
2019-03-14 02:39:09 +09:00
Makefile.modsign
kbuild: remove duplicated comments about PHONY
2018-07-06 22:04:03 +09:00
Makefile.ubsan
lib/ubsan: remove null-pointer checks
2018-08-10 20:19:58 -07:00
makelst
markup_oops.pl
mkcompile_h
kbuild: remove unnecessary in-subshell execution
2019-01-28 09:11:17 +09:00
mkmakefile
kbuild: simplify command line creation in scripts/mkmakefile
2018-10-04 22:56:02 +09:00
mksysmap
mkuboot.sh
module-common.lds
namespace.pl
objdiff
parse-maintainers.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
recordmcount.c
scripts/recordmcount.{c,pl}: support -ffunction-sections .text.* section names
2018-12-08 20:54:08 -05:00
recordmcount.h
recordmcount.pl
scripts/recordmcount.{c,pl}: support -ffunction-sections .text.* section names
2018-12-08 20:54:08 -05:00
setlocalversion
scripts/setlocalversion: Improve -dirty check with git-status --no-optional-locks
2018-11-21 23:57:33 +09:00
show_delta
sign-file.c
sortextable.c
sortextable.h
spdxcheck-test.sh
scripts: add spdxcheck.py self test
2018-12-28 12:11:44 -08:00
spdxcheck.py
scripts/spdxcheck.py: fix C++ comment style detection
2019-02-22 08:47:05 -07:00
spelling.txt
scripts/spelling.txt: add more spellings to spelling.txt
2019-03-07 18:31:59 -08:00
sphinx-pre-install
split-man.pl
stackdelta
stackusage
subarch.include
selftests: add headers_install to lib.mk
2018-09-05 08:12:09 -06:00
tags.sh
scripts/tags.sh: add more declarations
2018-12-28 12:11:44 -08:00
unifdef.c
unifdef: use memcpy instead of strncpy
2018-11-30 14:45:01 -08:00
ver_linux
ver_linux: Assign constant RE to variable name for clarity
2019-01-22 13:34:35 +01:00
xen-hypercalls.sh
xz_wrap.sh