On Mon, 28 Mar 2022 08:47:39 +0530, Viresh Kumar wrote: > > diff --git a/drivers/opp/debugfs.c b/drivers/opp/debugfs.c > > index 596c185b5dda..a4476985e4ce 100644 > > --- a/drivers/opp/debugfs.c > > +++ b/drivers/opp/debugfs.c > > @@ -187,14 +187,19 @@ void opp_debug_register(struct opp_device *opp_dev, struct opp_table *opp_table) > > static void opp_migrate_dentry(struct opp_device *opp_dev, > > struct opp_table *opp_table) > > { > > - struct opp_device *new_dev; > > + struct opp_device *new_dev = NULL, *iter; > > const struct device *dev; > > struct dentry *dentry; > > > > /* Look for next opp-dev */ > > - list_for_each_entry(new_dev, &opp_table->dev_list, node) > > - if (new_dev != opp_dev) > > + list_for_each_entry(iter, &opp_table->dev_list, node) > > + if (iter != opp_dev) { > > + new_dev = iter; > > break; > > + } > > + > > + if (!new_dev) > > + return; > > I think you missed this check in the parent function ? > > if (!list_is_singular(&opp_table->dev_list)) { > > > i.e. this bug can never happen. > No. the conditon to call opp_migrate_dentry(opp_dev, opp_table); is: if (!list_is_singular(&opp_table->dev_list)), while list_is_singlular is: !list_empty(head) && (head->next == head->prev); so the condition is: list_empty(head) || (head->next != head->prev) if the list is empty, the bug can be triggered. -- Xiaomeng Tong