On Wed, Jun 08, 2022 at 02:15:19PM +0200, Rafael J. Wysocki wrote: > 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. Or we could cast it away :)