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.
Unified · Split
| @@ -123,6 +123,8 @@ hlist_for_each_entry_safe(c,...) S · 122 unmodified lines | |||
| 123 | | | 123 | | |
| 124 | list_remove_head(x,c,...) | 124 | list_remove_head(x,c,...) |
| 125 | | | 125 | | |
| 126 | list_entry_is_head(c,...) | ||
| 127 | | | ||
| 126 | sizeof(<+...c...+>) | 128 | sizeof(<+...c...+>) |
| 127 | | | 129 | | |
| 128 | &c->member | 130 | &c->member |