On Wed, Mar 12, 2025 at 01:19:32PM -0400, Rik van Riel wrote: > On recent kernels this warning fires: > > drivers/char/ipmi/ipmi_msghandler.c:1238 RCU-list traversed in non-reader > section!! > > This looks like a fairly simple lockdep trigger, where > list_for_each_entry_rcu and list_for_each_entry_srcu are > functionally identical, but the lockdep annotation in > the former has an extra check. > > That extra check is whether the RCU read lock is held, > which is not true when the code uses srcu_read_lock. > > Get rid of the warning by using the properly annotated > list traversal macro. > > Signed-off-by: Rik van Riel <r...@surriel.com> > --- > drivers/char/ipmi/ipmi_msghandler.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/char/ipmi/ipmi_msghandler.c > b/drivers/char/ipmi/ipmi_msghandler.c > index 1e5313748f8b..a2823763fd37 100644 > --- a/drivers/char/ipmi/ipmi_msghandler.c > +++ b/drivers/char/ipmi/ipmi_msghandler.c > @@ -1235,7 +1235,7 @@ int ipmi_create_user(unsigned int if_num, > return -ENOMEM; > > index = srcu_read_lock(&ipmi_interfaces_srcu); > - list_for_each_entry_rcu(intf, &ipmi_interfaces, link) { > + list_for_each_entry_srcu(intf, &ipmi_interfaces, link) {
Doesn't the above line want to be something like this? + list_for_each_entry_srcu(intf, &ipmi_interfaces, link, srcu_read_lock_held(&ipmi_interfaces_srcu)) { > if (intf->intf_num == if_num) > goto found; > } > -- > 2.48.1 > _______________________________________________ Openipmi-developer mailing list Openipmi-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openipmi-developer