Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Unused struct member `dkey` inflates stack footprint --
commit de6aa9797881496b4a8d7d66626b1bfd19cfdd54 Author: Yunseong Kim <[email protected]> rcu/update: fix same dept key collision between various types of RCU This commit addresses a false positive circular dependency report in dept by assigning separate dept keys and maps to each struct rcu_synchronize execution context. > diff --git a/include/linux/rcupdate_wait.h b/include/linux/rcupdate_wait.h > --- a/include/linux/rcupdate_wait.h > +++ b/include/linux/rcupdate_wait.h > @@ -19,17 +19,20 @@ struct rcu_synchronize { > > /* This is for debugging. */ > struct rcu_gp_oldstate oldstate; > + struct dept_map dmap; > + struct dept_key dkey; [Severity: Low] Does this code ever use the dkey member of struct rcu_synchronize? The _wait_rcu_gp() macro defines its own static struct dept_key __key, which it passes as an argument to __wait_rcu_gp(). This leaves the dkey member of struct rcu_synchronize completely unused and uninitialized, while needlessly increasing the stack footprint of the rs_array allocated in the macro. > }; > void wakeme_after_rcu(struct rcu_head *head); > > void __wait_rcu_gp(bool checktiny, unsigned int state, int n, > call_rcu_func_t *crcu_array, > - struct rcu_synchronize *rs_array); > + struct rcu_synchronize *rs_array, struct dept_key *dkey); > > #define _wait_rcu_gp(checktiny, state, ...) \ > -do { > \ > - call_rcu_func_t __crcu_array[] = { __VA_ARGS__ }; > \ > - struct rcu_synchronize __rs_array[ARRAY_SIZE(__crcu_array)]; > \ > - __wait_rcu_gp(checktiny, state, ARRAY_SIZE(__crcu_array), __crcu_array, > __rs_array); \ > +do { > \ > + call_rcu_func_t __crcu_array[] = { __VA_ARGS__ }; > \ > + static struct dept_key __key; > \ > + struct rcu_synchronize __rs_array[ARRAY_SIZE(__crcu_array)]; > \ > + __wait_rcu_gp(checktiny, state, ARRAY_SIZE(__crcu_array), __crcu_array, > __rs_array, &__key); \ > } while (0) [ ... ] > diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c > --- a/kernel/rcu/update.c > +++ b/kernel/rcu/update.c [ ... ] > @@ -426,7 +426,8 @@ void __wait_rcu_gp(bool checktiny, unsigned int state, > int n, call_rcu_func_t *c > break; > if (j == i) { > init_rcu_head_on_stack(&rs_array[i].head); > - init_completion(&rs_array[i].completion); > + sdt_map_init_key(&rs_array[i].dmap, dkey); > + init_completion_dmap(&rs_array[i].completion, > &rs_array[i].dmap); > (crcu_array[i])(&rs_array[i].head, wakeme_after_rcu); > } > } -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=34

