drivers/iommu/ipmmu-vmsa.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
From: Minghao Chi <chi.minghao@zte.com.cn>
The OF node should be put before returning error in ipmmu_init(),
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/iommu/ipmmu-vmsa.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
index 8fdb84b3642b..f6440b106f46 100644
--- a/drivers/iommu/ipmmu-vmsa.c
+++ b/drivers/iommu/ipmmu-vmsa.c
@@ -1179,11 +1179,10 @@ static int __init ipmmu_init(void)
return 0;
np = of_find_matching_node(NULL, ipmmu_of_ids);
+ of_node_put(np);
if (!np)
return 0;
- of_node_put(np);
-
ret = platform_driver_register(&ipmmu_driver);
if (ret < 0)
return ret;
--
2.25.1
On Mon, May 23, 2022 at 11:11:45AM +0000, cgel.zte@gmail.com wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > The OF node should be put before returning error in ipmmu_init(), > 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/iommu/ipmmu-vmsa.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c > index 8fdb84b3642b..f6440b106f46 100644 > --- a/drivers/iommu/ipmmu-vmsa.c > +++ b/drivers/iommu/ipmmu-vmsa.c > @@ -1179,11 +1179,10 @@ static int __init ipmmu_init(void) > return 0; > > np = of_find_matching_node(NULL, ipmmu_of_ids); > + of_node_put(np); > if (!np) > return 0; > > - of_node_put(np); > - > ret = platform_driver_register(&ipmmu_driver); > if (ret < 0) > return ret; NAK
On 2022-05-23 12:54, Johan Hovold wrote: > On Mon, May 23, 2022 at 11:11:45AM +0000, cgel.zte@gmail.com wrote: >> From: Minghao Chi <chi.minghao@zte.com.cn> >> >> The OF node should be put before returning error in ipmmu_init(), >> 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/iommu/ipmmu-vmsa.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c >> index 8fdb84b3642b..f6440b106f46 100644 >> --- a/drivers/iommu/ipmmu-vmsa.c >> +++ b/drivers/iommu/ipmmu-vmsa.c >> @@ -1179,11 +1179,10 @@ static int __init ipmmu_init(void) >> return 0; >> >> np = of_find_matching_node(NULL, ipmmu_of_ids); >> + of_node_put(np); >> if (!np) >> return 0; >> >> - of_node_put(np); >> - >> ret = platform_driver_register(&ipmmu_driver); >> if (ret < 0) >> return ret; > > NAK Indeed. How exactly can we hold a refcount on NULL, let alone leak it? Static checkers are great for flagging up code that *might* have issues, but please actually *look* at the code and apply some thought before sending a patch. Robin.
© 2016 - 2024 Red Hat, Inc.