lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <b20d235c-779c-77bd-e69f-2d63ffd79ec1@huawei.com> Date: Fri, 15 Feb 2019 10:52:11 +0000 From: John Garry <john.garry@...wei.com> To: Huang Zijiang <huang.zijiang@....com.cn>, <yisen.zhuang@...wei.com> CC: <salil.mehta@...wei.com>, <davem@...emloft.net>, <lipeng321@...wei.com>, <liuyonglong@...wei.com>, <yuehaibing@...wei.com>, <keescook@...omium.org>, <wangxi11@...wei.com>, <netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org>, <wang.yi59@....com.cn>, Linuxarm <linuxarm@...wei.com> Subject: Re: [PATCH] net: hns: Fix object reference leaks in hns_dsaf_roce_reset() On 14/02/2019 06:41, Huang Zijiang wrote: > The of_find_device_by_node() takes a reference to the underlying device > structure, we should release that reference. of_find_device_by_node() is not called for every path, so is this change proper: /* find the platform device corresponding to fwnode */ if (is_of_node(dsaf_fwnode)) { pdev = of_find_device_by_node(to_of_node(dsaf_fwnode)); } else if (is_acpi_device_node(dsaf_fwnode)) { pdev = hns_dsaf_find_platform_device(dsaf_fwnode); } else { pr_err("fwnode is neither OF or ACPI type\n"); return -EINVAL; } /* check if we were a success in fetching pdev */ if (!pdev) { pr_err("couldn't find platform device for node\n"); return -ENODEV; } /* retrieve the dsaf_device from the driver data */ dsaf_dev = dev_get_drvdata(&pdev->dev); if (!dsaf_dev) { dev_err(&pdev->dev, "dsaf_dev is NULL\n"); return -ENODEV; } John > > Signed-off-by: Huang Zijiang <huang.zijiang@....com.cn> > --- > drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c > index 14d7ec7..697d929 100644 > --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c > +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c > @@ -3081,6 +3081,7 @@ int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool dereset) > dsaf_dev = dev_get_drvdata(&pdev->dev); > if (!dsaf_dev) { > dev_err(&pdev->dev, "dsaf_dev is NULL\n"); > + put_device(&pdev->dev); > return -ENODEV; > } > > @@ -3088,6 +3089,7 @@ int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool dereset) > if (AE_IS_VER1(dsaf_dev->dsaf_ver)) { > dev_err(dsaf_dev->dev, "%s v1 chip doesn't support RoCE!\n", > dsaf_dev->ae_dev.name); > + put_device(&pdev->dev); > return -ENODEV; > } > >
Powered by blists - more mailing lists