[PATCH] phy: Fix possible NULL pointer deference

Vignesh Raghavendra
2020-05-20T17:05:41Z

It is possible that users of generic_phy_*() APIs may pass a valid
struct phy pointer but phy->dev can be NULL, leading to NULL pointer
deference in phy_dev_ops().

So call generic_phy_valid() to verify that phy and phy->dev are both
valid.

Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
---
drivers/phy/phy-uclass.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index 1fded5ebf42f..89510c5772e0 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -117,7 +117,7 @@ int generic_phy_init(struct phy *phy)
{
struct phy_ops const *ops;

- if (!phy)
+ if (!generic_phy_valid(phy))
return 0;
ops = phy_dev_ops(phy->dev);

@@ -128,7 +128,7 @@ int generic_phy_reset(struct phy *phy)
{
struct phy_ops const *ops;

- if (!phy)
+ if (!generic_phy_valid(phy))
return 0;
ops = phy_dev_ops(phy->dev);

@@ -139,7 +139,7 @@ int generic_phy_exit(struct phy *phy)
{
struct phy_ops const *ops;

- if (!phy)
+ if (!generic_phy_valid(phy))
return 0;
ops = phy_dev_ops(phy->dev);

@@ -150,7 +150,7 @@ int generic_phy_power_on(struct phy *phy)
{
struct phy_ops const *ops;

- if (!phy)
+ if (!generic_phy_valid(phy))
return 0;
ops = phy_dev_ops(phy->dev);

@@ -161,7 +161,7 @@ int generic_phy_power_off(struct phy *phy)
{
struct phy_ops const *ops;

- if (!phy)
+ if (!generic_phy_valid(phy))
return 0;
ops = phy_dev_ops(phy->dev);

--
2.26.2