Messages in this thread | | | Date | Mon, 4 Feb 2013 21:42:42 +0800 | Subject | Re: [RFT][PATCH v2] backlight: 88pm860x_bl: Add missing of_node_put() | From | Haojian Zhuang <> |
| |
On Sun, Jan 27, 2013 at 8:58 PM, Axel Lin <axel.lin@ingics.com> wrote: > of_find_node_by_name() returns a node pointer with refcount incremented, use > of_node_put() on it when done. > > of_find_node_by_name() will call of_node_put() against the node pass to from > parameter, thus we also need to call of_node_get(from) before calling > of_find_node_by_name(). > > Signed-off-by: Axel Lin <axel.lin@ingics.com> > --- > v2: > need to call of_node_get(pdev->dev.parent->of_node) before calling > of_find_node_by_name(). > > drivers/video/backlight/88pm860x_bl.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/video/backlight/88pm860x_bl.c b/drivers/video/backlight/88pm860x_bl.c > index c072ed9..2cd6350 100644 > --- a/drivers/video/backlight/88pm860x_bl.c > +++ b/drivers/video/backlight/88pm860x_bl.c > @@ -165,8 +165,10 @@ static int pm860x_backlight_dt_init(struct platform_device *pdev, > struct pm860x_backlight_data *data, > char *name) > { > - struct device_node *nproot = pdev->dev.parent->of_node, *np; > + struct device_node *nproot, *np; > int iset = 0; > + > + nproot = of_node_get(pdev->dev.parent->of_node); > if (!nproot) > return -ENODEV; > nproot = of_find_node_by_name(nproot, "backlights"); > @@ -184,6 +186,7 @@ static int pm860x_backlight_dt_init(struct platform_device *pdev, > break; > } > } > + of_node_put(nproot); > return 0; > } > #else
Don't agree on this. If we want to protect it, we should use the logic in below. 1. of_node_get() in parent 88pm860x-core driver. 2. of_node_put() in child backlight driver or anything else.
The reference is used to prevent of_node releasing before some usage. At here, we need to prevent parent driver to release of_node. I can't see any benefit from of_node_get() in the child backlight driver.
Regards Haojian
| |