On Tue, Jul 07, 2026 at 07:33:36AM +0000, [email protected] wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
> to consider:
> - [High] Missing `sdt_might_sleep_end()` cleanup in the error path of wait 
> macros (e.g., `___wait_var_event`, `___wait_event`, `___swait_event`) 
> bypasses `dept_clean_stage()`, leaking the staged wait event state and 
> corrupting DEPT tracking.
> --
> 
> commit cf04720896ab037609320947c88e8faa57dbddd7
> Author: Byungchul Park <[email protected]>
> 
> dept: apply timeout consideration to hashed-waitqueue wait
> 
> Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
> consideration to hashed-waitqueue wait, assuming an input 'ret' in
> ___wait_var_event() macro is used as a timeout value.
> 
> > diff --git a/include/linux/wait_bit.h b/include/linux/wait_bit.h
> > index 179a616ad245a..9885ac4e1ded5 100644
> > --- a/include/linux/wait_bit.h
> > +++ b/include/linux/wait_bit.h
> > @@ -258,7 +258,7 @@ extern wait_queue_head_t *__var_waitqueue(void *p);
> >       struct wait_bit_queue_entry __wbq_entry;                        \
> >       long __ret = ret; /* explicit shadow */                         \
> >                                                                       \
> > -     sdt_might_sleep_start(NULL);                                    \
> > +     sdt_might_sleep_start_timeout(NULL, __ret);                     \
> 
> [Severity: High]
> Does this error path properly clean up the dept wait state?
> 
> Lower in the ___wait_var_event() macro, if a signal is received it jumps to
> __out:
> 
>                 if (___wait_is_interruptible(state) && __int) {         \
>                         __ret = __int;                                  \
>                         goto __out;                                     \
>                 }                                                       \
> 
>                 ...
> 
>         sdt_might_sleep_end();                                          \
> __out:  __ret;                                                          \
> 
> Because the goto __out branch skips sdt_might_sleep_end(), does it leave a
> dangling stage context in the dept subsystem's tracking graph?
> 
> If the stage context remains populated, could a subsequent wait on the same
> task be incorrectly seen as a nested stage, potentially corrupting dept
> tracking or leading to false deadlock reports?

I will fix it.

> (Note: A similar goto __out pattern skipping sdt_might_sleep_end() also
> exists in ___wait_event() in include/linux/wait.h and ___swait_event() in
> include/linux/swait.h).

I will fix it.

        Byungchul

> 
> >       init_wait_var_entry(&__wbq_entry, var,                          \
> >                           exclusive ? WQ_FLAG_EXCLUSIVE : 0);         \
> >       for (;;) {                                                      \
> 
> --
> Sashiko AI review ยท 
> https://sashiko.dev/#/patchset/[email protected]?part=19

Reply via email to