| Message ID | 20260916093914.2005582-1-vulab@iscas.ac.cn |
|---|---|
| State | New |
| Headers | show |
| Series | fsi: master-aspeed: Fix of_node reference leak in fsi_master_aspeed_probe() | expand |
On Wed, Sep 16, 2026 at 09:39:14AM +0000, Wentao Liang wrote: > In fsi_master_aspeed_probe(), a reference to the device tree node is > taken with of_node_get() and stored in master.dev.of_node. If > fsi_master_register() fails, the error path frees the master without > putting that reference, leaking it. > > Put the device node reference before returning on the error path. > of_node_put() tolerates a NULL node, so the earlier err_release path > via opb_readl() is unaffected. > > Fixes: 606397d67f41 ("fsi: Add ast2600 master driver") > Cc: stable@vger.kernel.org > Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> > --- > drivers/fsi/fsi-master-aspeed.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c > index aa1380cdff33..7c7f30c2b8e6 100644 > --- a/drivers/fsi/fsi-master-aspeed.c > +++ b/drivers/fsi/fsi-master-aspeed.c > @@ -640,6 +640,7 @@ static int fsi_master_aspeed_probe(struct platform_device *pdev) > return 0; > > err_release: > + of_node_put(aspeed->master.dev.of_node); > clk_disable_unprepare(aspeed->clk); > err_free_aspeed: > kfree(aspeed); > -- > 2.34.1 > > did you forget an Assisted-by: tag?
diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c index aa1380cdff33..7c7f30c2b8e6 100644 --- a/drivers/fsi/fsi-master-aspeed.c +++ b/drivers/fsi/fsi-master-aspeed.c @@ -640,6 +640,7 @@ static int fsi_master_aspeed_probe(struct platform_device *pdev) return 0; err_release: + of_node_put(aspeed->master.dev.of_node); clk_disable_unprepare(aspeed->clk); err_free_aspeed: kfree(aspeed);
In fsi_master_aspeed_probe(), a reference to the device tree node is taken with of_node_get() and stored in master.dev.of_node. If fsi_master_register() fails, the error path frees the master without putting that reference, leaking it. Put the device node reference before returning on the error path. of_node_put() tolerates a NULL node, so the earlier err_release path via opb_readl() is unaffected. Fixes: 606397d67f41 ("fsi: Add ast2600 master driver") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> --- drivers/fsi/fsi-master-aspeed.c | 1 + 1 file changed, 1 insertion(+)