Message ID | 20220523111116.2898-1-chi.minghao@zte.com.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | firmware: arm_scmi: Avoid leak OF node on error | expand |
On Mon, May 23, 2022 at 11:11:16AM +0000, cgel.zte@gmail.com wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > The OF node should be put before returning error in smc_chan_available(), > otherwise node's refcount will be leaked. > > Reported-by: Zeal Robot <zealci@zte.com.cn> > Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn> > --- > drivers/firmware/arm_scmi/smc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/firmware/arm_scmi/smc.c b/drivers/firmware/arm_scmi/smc.c > index 745acfdd0b3d..43018be70edc 100644 > --- a/drivers/firmware/arm_scmi/smc.c > +++ b/drivers/firmware/arm_scmi/smc.c > @@ -55,10 +55,10 @@ static irqreturn_t smc_msg_done_isr(int irq, void *data) > static bool smc_chan_available(struct device *dev, int idx) > { > struct device_node *np = of_parse_phandle(dev->of_node, "shmem", 0); > + of_node_put(np); > if (!np) > return false; > > - of_node_put(np); > return true; > } NAK
On Mon, May 23, 2022 at 11:11:16AM +0000, cgel.zte@gmail.com wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > The OF node should be put before returning error in smc_chan_available(), > otherwise node's refcount will be leaked. > > Reported-by: Zeal Robot <zealci@zte.com.cn> > Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn> > --- > drivers/firmware/arm_scmi/smc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/firmware/arm_scmi/smc.c b/drivers/firmware/arm_scmi/smc.c > index 745acfdd0b3d..43018be70edc 100644 > --- a/drivers/firmware/arm_scmi/smc.c > +++ b/drivers/firmware/arm_scmi/smc.c > @@ -55,10 +55,10 @@ static irqreturn_t smc_msg_done_isr(int irq, void *data) > static bool smc_chan_available(struct device *dev, int idx) > { > struct device_node *np = of_parse_phandle(dev->of_node, "shmem", 0); > + of_node_put(np); While this may work as of_node_put handles NULL as argument, what is the point of unnecessary of_node_put(NULL) here ?
diff --git a/drivers/firmware/arm_scmi/smc.c b/drivers/firmware/arm_scmi/smc.c index 745acfdd0b3d..43018be70edc 100644 --- a/drivers/firmware/arm_scmi/smc.c +++ b/drivers/firmware/arm_scmi/smc.c @@ -55,10 +55,10 @@ static irqreturn_t smc_msg_done_isr(int irq, void *data) static bool smc_chan_available(struct device *dev, int idx) { struct device_node *np = of_parse_phandle(dev->of_node, "shmem", 0); + of_node_put(np); if (!np) return false; - of_node_put(np); return true; }