On Thu, May 14, 2020 at 07:07:07PM +0200, Miquel Raynal wrote: > The of_find_device_by_node() helper has its dummy counterpart for when > CONFIG_OF is not enabled. However, it is clearly stated in the kernel > documentation that it "takes a reference to the embedded struct device > which needs to be dropped after use". Which means the of_dev_put() > helper might have to be called afterwards. Unfortunately, there is no > of_dev_put() dummy function if OF_CONFIG is not enabled which seems > odd in this case. The of_dev_put() helper is pretty simple, it just > checks the validity of the single argument and calls put_device() on > it. One can just call put_device() directly to avoid any build issue > but I find much more accurate in this case to create the dummy > helper. > > With this helper, a file using of_find_device_by_node() can also call > of_dev_put() without triggering the following: IMO, you should use platform_device_put() instead. It has the NULL check too. I imagine of_dev_put() is left over from when OF devices were not platform devices. > error: implicit declaration of function ‘of_dev_put’; did you mean ‘of_node_put’? [-Werror=implicit-function-declaration] > > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > --- > include/linux/of_platform.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h > index 84a966623e78..84d9e60e517e 100644 > --- a/include/linux/of_platform.h > +++ b/include/linux/of_platform.h > @@ -54,11 +54,13 @@ extern struct platform_device *of_device_alloc(struct device_node *np, > struct device *parent); > #ifdef CONFIG_OF > extern struct platform_device *of_find_device_by_node(struct device_node *np); > +extern void of_dev_put(struct platform_device *dev); > #else > static inline struct platform_device *of_find_device_by_node(struct device_node *np) > { > return NULL; > } > +static inline void of_dev_put(struct platform_device *dev) { } > #endif > > /* Platform devices and busses creation */ > -- > 2.20.1 >