linux/scripts/coccinelle/free
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
..
clk_put.cocci coccinelle: semantic patch for missing clk_put 2012-02-25 00:07:11 +01:00
devm_free.cocci coccinelle: devm_free: reduce false positives 2018-02-07 23:53:09 +09:00
ifnullfree.cocci Coccinelle: ifnullfree: Trim the warning reported in report mode 2018-01-16 23:39:55 +09:00
iounmap.cocci coccinelle: semantic patch for missing iounmap 2012-02-25 00:07:11 +01:00
kfree.cocci coccinelle: also catch kzfree() issues 2016-06-21 11:43:32 +02:00
kfreeaddr.cocci coccinelle: also catch kzfree() issues 2016-06-21 11:43:32 +02:00
pci_free_consistent.cocci scripts: Coccinelle script for pci_free_consistent() 2013-07-03 15:50:38 +02:00
put_device.cocci coccinelle: semantic code search for missing put_device() 2019-03-17 12:55:45 +09:00