summaryrefslogtreecommitdiff
path: root/scripts/coccinelle
diff options
context:
space:
mode:
authorDaniel Thompson <daniel.thompson@linaro.org>2021-07-30 10:58:56 +0100
committerJulia Lawall <Julia.Lawall@inria.fr>2021-08-08 22:00:49 +0200
commite71ec0bc06038cdfa18cbd23f5cea71fe4785d35 (patch)
tree3062144ec12a5861928345dabad8431690259217 /scripts/coccinelle
parent9eec0792024983276871baeb201609abb07dd35d (diff)
downloadlwn-e71ec0bc06038cdfa18cbd23f5cea71fe4785d35.tar.gz
lwn-e71ec0bc06038cdfa18cbd23f5cea71fe4785d35.zip
scripts: coccinelle: allow list_entry_is_head() to use pos
Currently use_after_iter.cocci generates false positives for code of the following form: ~~~ list_for_each_entry(d, &ddata->irq_list, node) { if (irq == d->irq) break; } if (list_entry_is_head(d, &ddata->irq_list, node)) return IRQ_NONE; ~~~ [This specific example comes from drivers/power/supply/cpcap-battery.c] Most list macros use list_entry_is_head() as loop exit condition meaning it is not unsafe to reuse pos (a.k.a. d) in the code above. Let's avoid reporting these cases. Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
Diffstat (limited to 'scripts/coccinelle')
-rw-r--r--scripts/coccinelle/iterators/use_after_iter.cocci2
1 files changed, 2 insertions, 0 deletions
diff --git a/scripts/coccinelle/iterators/use_after_iter.cocci b/scripts/coccinelle/iterators/use_after_iter.cocci
index 9be48b520879..676edd562eef 100644
--- a/scripts/coccinelle/iterators/use_after_iter.cocci
+++ b/scripts/coccinelle/iterators/use_after_iter.cocci
@@ -123,6 +123,8 @@ hlist_for_each_entry_safe(c,...) S
|
list_remove_head(x,c,...)
|
+list_entry_is_head(c,...)
+|
sizeof(<+...c...+>)
|
&c->member