Re: [PATCH v1 1/2] driver core: Introduce device_find_first_child() helper

From: Rafael J. Wysocki
Date: Wed Jun 08 2022 - 08:15:38 EST


On Wed, Jun 8, 2022 at 2:04 PM Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Wed, Jun 08, 2022 at 02:53:28PM +0300, Andy Shevchenko wrote:
> > On Wed, Jun 08, 2022 at 01:29:08PM +0200, Rafael J. Wysocki wrote:
> > > On Tue, Jun 7, 2022 at 10:22 PM Andy Shevchenko
> > > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> >
> > ...
> >
> > > I would define it as
> > >
> > > static int match_first(struct device *dev, void *)
> > > {
> > > return 1;
> > > }
> > >
> > > struct device *device_find_first_child(struct device *parent)
> > > {
> > > return device_find_first_child(parent, NULL, match_first);
> > > }
> > > EXPORT_SYMBOL_GPL(device_find_first_child);
> > >
> > > which is not that much more overhead.
> >
> > With this we actually may simply provide a match function and it will make the
> > clean ups (like patch 2 in the series) almost the same without introducing a
> > device core call.
> >
> > Something like
> >
> > int device_match_any_for_find(struct device *dev, void *unused)
> > {
> > return 1;
> > }
> >
> > As I replied to Greg it's pity we can't use device_match_any()...
>
> int device_match_any(struct device *dev, const void *unused)
>
> How is that not ok to use here?

Because of the const that will be frowned upon by the compiler.

We need to define another device_match_any_relaxed() taking (void *)
as the second argument for this.