Hi Alexander, > On Thu, Jun 11, 2026 at 6:21 PM Yunseong Kim <[email protected]> wrote: >> >> The recursion guard (bit-31 of kcov_df_seq) prevents reentry when >> copy_from_kernel_nofault() or other called functions are instrumented >> with INSTRUMENT_ALL. Without compiler barriers, the guard set/clear >> can be reordered relative to the function body, making the protection >> ineffective under optimization. >> >> Add barrier() after setting the guard and before clearing it, ensuring >> the compiler does not move instrumented operations outside the guarded >> region. >> >> Cc: Peter Zijlstra <[email protected]> >> Signed-off-by: Yunseong Kim <[email protected]> >> --- >> kernel/kcov_dataflow.c | 2 ++ > > Please merge this patch into the one introducing kcov_dataflow.c >
Understood. I'll merge them in v3. >> 1 file changed, 2 insertions(+) >> >> diff --git a/kernel/kcov_dataflow.c b/kernel/kcov_dataflow.c >> index df7e8bf70bfa..5248293280d5 100644 >> --- a/kernel/kcov_dataflow.c >> +++ b/kernel/kcov_dataflow.c >> @@ -86,6 +86,7 @@ kcov_df_write(u64 type_marker, u64 pc, u64 meta, void *ptr, >> if (t->kcov_df_seq & (1U << 31)) >> return; >> t->kcov_df_seq |= (1U << 31); >> + barrier(); > > Please make sure barriers have comments explaining which barriers they > pair with (see kernel/kcov.c) Thanks for the pointer. I see the existing implementation now and will align my changes with it. Best regards, Yunseong

