2021-12-12 06:50:25

by Miaoqian Lin

[permalink] [raw]
Subject: [PATCH] phy: tegra: xusb: Fix NULL vs IS_ERR_OR_NULL checking

The tegra_xusb_find_port_node() function may return error pointer when
kasprintf() return NULL. Using IS_ERR_OR_NULL to check the return value
of tegra_xusb_find_port_node() to catch this.

Signed-off-by: Miaoqian Lin <[email protected]>
---
drivers/phy/tegra/xusb.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c
index 963de5913e50..52c2f85c67c3 100644
--- a/drivers/phy/tegra/xusb.c
+++ b/drivers/phy/tegra/xusb.c
@@ -472,7 +472,7 @@ tegra_xusb_find_port(struct tegra_xusb_padctl *padctl, const char *type,
struct device_node *np;

np = tegra_xusb_find_port_node(padctl, type, index);
- if (!np)
+ if (IS_ERR_OR_NULL(np))
return NULL;

list_for_each_entry(port, &padctl->ports, list) {
@@ -763,7 +763,7 @@ static int tegra_xusb_add_usb2_port(struct tegra_xusb_padctl *padctl,
* marked as disabled there is no reason to register it.
*/
np = tegra_xusb_find_port_node(padctl, "usb2", index);
- if (!np || !of_device_is_available(np))
+ if (IS_ERR_OR_NULL(np) || !of_device_is_available(np))
goto out;

usb2 = kzalloc(sizeof(*usb2), GFP_KERNEL);
@@ -829,7 +829,7 @@ static int tegra_xusb_add_ulpi_port(struct tegra_xusb_padctl *padctl,
int err = 0;

np = tegra_xusb_find_port_node(padctl, "ulpi", index);
- if (!np || !of_device_is_available(np))
+ if (IS_ERR_OR_NULL(np) || !of_device_is_available(np))
goto out;

ulpi = kzalloc(sizeof(*ulpi), GFP_KERNEL);
@@ -884,7 +884,7 @@ static int tegra_xusb_add_hsic_port(struct tegra_xusb_padctl *padctl,
int err = 0;

np = tegra_xusb_find_port_node(padctl, "hsic", index);
- if (!np || !of_device_is_available(np))
+ if (IS_ERR_OR_NULL(np) || !of_device_is_available(np))
goto out;

hsic = kzalloc(sizeof(*hsic), GFP_KERNEL);
@@ -970,7 +970,7 @@ static int tegra_xusb_add_usb3_port(struct tegra_xusb_padctl *padctl,
* hence return 0 instead of an error to allow ports to be optional.
*/
np = tegra_xusb_find_port_node(padctl, "usb3", index);
- if (!np || !of_device_is_available(np))
+ if (IS_ERR_OR_NULL(np) || !of_device_is_available(np))
goto out;

usb3 = kzalloc(sizeof(*usb3), GFP_KERNEL);
@@ -1035,7 +1035,7 @@ static int tegra_xusb_find_unused_usb3_port(struct tegra_xusb_padctl *padctl)

for (i = 0; i < padctl->soc->ports.usb3.count; i++) {
np = tegra_xusb_find_port_node(padctl, "usb3", i);
- if (!np || !of_device_is_available(np))
+ if (IS_ERR_OR_NULL(np) || !of_device_is_available(np))
return i;
}

--
2.17.1



2021-12-12 14:31:43

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH] phy: tegra: xusb: Fix NULL vs IS_ERR_OR_NULL checking

12.12.2021 09:50, Miaoqian Lin пишет:
> The tegra_xusb_find_port_node() function may return error pointer when
> kasprintf() return NULL. Using IS_ERR_OR_NULL to check the return value
> of tegra_xusb_find_port_node() to catch this.
>
> Signed-off-by: Miaoqian Lin <[email protected]>
> ---
> drivers/phy/tegra/xusb.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)

Instead of changing the 6 lines and making code less readable, you could
change a single line.

diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c
index 963de5913e50..aa5237eacd29 100644
--- a/drivers/phy/tegra/xusb.c
+++ b/drivers/phy/tegra/xusb.c
@@ -455,7 +455,7 @@ tegra_xusb_find_port_node(struct tegra_xusb_padctl
*padctl, const char *type,
name = kasprintf(GFP_KERNEL, "%s-%u", type, index);
if (!name) {
of_node_put(ports);
- return ERR_PTR(-ENOMEM);
+ return NULL;
}
np = of_get_child_by_name(ports, name);
kfree(name);

2021-12-13 02:05:22

by Miaoqian Lin

[permalink] [raw]
Subject: [PATCH v2] phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function

callers of tegra_xusb_find_port_node() function only do NULL checking for
the return value. return NULL instead of ERR_PTR(-ENOMEM) to keep
consistent.

Signed-off-by: Miaoqian Lin <[email protected]>
---
drivers/phy/tegra/xusb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c
index 963de5913e50..aa5237eacd29 100644
--- a/drivers/phy/tegra/xusb.c
+++ b/drivers/phy/tegra/xusb.c
@@ -455,7 +455,7 @@ tegra_xusb_find_port_node(struct tegra_xusb_padctl *padctl, const char *type,
name = kasprintf(GFP_KERNEL, "%s-%u", type, index);
if (!name) {
of_node_put(ports);
- return ERR_PTR(-ENOMEM);
+ return NULL;
}
np = of_get_child_by_name(ports, name);
kfree(name);
--
2.17.1


2021-12-13 10:38:44

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH v2] phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function

On Mon, Dec 13, 2021 at 02:05:07AM +0000, Miaoqian Lin wrote:
> callers of tegra_xusb_find_port_node() function only do NULL checking for
> the return value. return NULL instead of ERR_PTR(-ENOMEM) to keep
> consistent.
>
> Signed-off-by: Miaoqian Lin <[email protected]>
> ---
> drivers/phy/tegra/xusb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Acked-by: Thierry Reding <[email protected]>


Attachments:
(No filename) (411.00 B)
signature.asc (833.00 B)
Download all attachments

2021-12-14 07:37:38

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH v2] phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function

On 13-12-21, 02:05, Miaoqian Lin wrote:
> callers of tegra_xusb_find_port_node() function only do NULL checking for
> the return value. return NULL instead of ERR_PTR(-ENOMEM) to keep
> consistent.

Applied, thanks

--
~Vinod