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 | 124 | list_remove_head(x,c,...) |
| 125 | 125 | | |
| 126 | +list_entry_is_head(c,...) | |
| 127 | +| | |
| 126 | 128 | sizeof(<+...c...+>) |
| 127 | 129 | | |
| 128 | 130 | &c->member |