diff mbox series

phy: qualcomm: Check NULL ptr on lvts_data in qcom_ipq806x_usb_phy_probe()

Message ID 20240821131042.1464529-1-make24@iscas.ac.cn (mailing list archive)
State Not Applicable
Headers show
Series phy: qualcomm: Check NULL ptr on lvts_data in qcom_ipq806x_usb_phy_probe() | expand

Commit Message

Ma Ke Aug. 21, 2024, 1:10 p.m. UTC
of_device_get_match_data() can return NULL if of_match_device failed, and
the pointer 'data' was dereferenced without checking against NULL. Add
checking of pointer 'data' in qcom_ipq806x_usb_phy_probe().

Cc: stable@vger.kernel.org
Fixes: ef19b117b834 ("phy: qualcomm: add qcom ipq806x dwc usb phy driver")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
 drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Christian Marangi Aug. 20, 2024, 9:50 p.m. UTC | #1
On Wed, Aug 21, 2024 at 09:50:27AM -0500, Bjorn Andersson wrote:
> On Wed, Aug 21, 2024 at 09:10:42PM GMT, Ma Ke wrote:
> > of_device_get_match_data() can return NULL if of_match_device failed, and
> > the pointer 'data' was dereferenced without checking against NULL. Add
> > checking of pointer 'data' in qcom_ipq806x_usb_phy_probe().
> 
> How do you create the platform_device such that this happens?
>

I have the same question and this sounds like warning produced by
automated checks of some sort... (and these kind of patch are suspicious
given what happens in the last few years)

In practice this can never happen... of_match_device can't fail as it's
called only if a matching compatible is found hence the thing MUST be
present BEFORE probe is even called.

> 
> > 
> > Cc: stable@vger.kernel.org
> > Fixes: ef19b117b834 ("phy: qualcomm: add qcom ipq806x dwc usb phy driver")
> > Signed-off-by: Ma Ke <make24@iscas.ac.cn>
> > ---
> >  drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> > index 06392ed7c91b..9b9fd9c1b1f7 100644
> > --- a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> > +++ b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> > @@ -492,6 +492,8 @@ static int qcom_ipq806x_usb_phy_probe(struct platform_device *pdev)
> >  		return -ENOMEM;
> >  
> >  	data = of_device_get_match_data(&pdev->dev);
> > +	if (!data)
> > +		return -ENODEV;
> >  
> >  	phy_dwc3->dev = &pdev->dev;
> >  
> > -- 
> > 2.25.1
> > 
> >
Bjorn Andersson Aug. 21, 2024, 2:50 p.m. UTC | #2
On Wed, Aug 21, 2024 at 09:10:42PM GMT, Ma Ke wrote:
> of_device_get_match_data() can return NULL if of_match_device failed, and
> the pointer 'data' was dereferenced without checking against NULL. Add
> checking of pointer 'data' in qcom_ipq806x_usb_phy_probe().

How do you create the platform_device such that this happens?

Regards,
Bjorn

> 
> Cc: stable@vger.kernel.org
> Fixes: ef19b117b834 ("phy: qualcomm: add qcom ipq806x dwc usb phy driver")
> Signed-off-by: Ma Ke <make24@iscas.ac.cn>
> ---
>  drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> index 06392ed7c91b..9b9fd9c1b1f7 100644
> --- a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> +++ b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
> @@ -492,6 +492,8 @@ static int qcom_ipq806x_usb_phy_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  
>  	data = of_device_get_match_data(&pdev->dev);
> +	if (!data)
> +		return -ENODEV;
>  
>  	phy_dwc3->dev = &pdev->dev;
>  
> -- 
> 2.25.1
> 
>
diff mbox series

Patch

diff --git a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
index 06392ed7c91b..9b9fd9c1b1f7 100644
--- a/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
+++ b/drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
@@ -492,6 +492,8 @@  static int qcom_ipq806x_usb_phy_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	data = of_device_get_match_data(&pdev->dev);
+	if (!data)
+		return -ENODEV;
 
 	phy_dwc3->dev = &pdev->dev;