REPORT_CALLBACKS/utrace_resume/etc use list_for_each_entry_safe().

Why we can't just use list_for_each_entry() ?

Perhaps I misread utrace.c, but I can't see how engine can be unlinked
under us. Afaics, nobody except us (finish_report->utrace_reset) can
unlink the detached engines, even if we race with UTRACE_DETACH. And
we can't race with utrace_release_task().

No?

OTOH. If I am wrong, and UTRACE_DETACH can unlink _any_ engine from
->attached list while we are doing list_for_each_entry_safe(), then
we can crash, and I can't see how _safe can help.

Confused.

Oleg.

Reply via email to