2019-10-18 05:58:53

by Chuhong Yuan

[permalink] [raw]
Subject: [PATCH] spi: pxa2xx: Add missed security checks

pxa2xx_spi_init_pdata misses checks for devm_clk_get and
platform_get_irq.
Add checks for them to fix the bugs.

Signed-off-by: Chuhong Yuan <[email protected]>
---
drivers/spi/spi-pxa2xx.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index bb6a14d1ab0f..2e73d75a6ac5 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1565,7 +1565,13 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
#endif

ssp->clk = devm_clk_get(&pdev->dev, NULL);
+ if (IS_ERR(ssp->clk))
+ return NULL;
+
ssp->irq = platform_get_irq(pdev, 0);
+ if (ssp->irq < 0)
+ return NULL;
+
ssp->type = type;
ssp->pdev = pdev;
ssp->port_id = pxa2xx_spi_get_port_id(adev);
--
2.20.1


2019-10-19 08:08:19

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:
>
> pxa2xx_spi_init_pdata misses checks for devm_clk_get and
> platform_get_irq.
> Add checks for them to fix the bugs.
>
> Signed-off-by: Chuhong Yuan <[email protected]>
> ---
> drivers/spi/spi-pxa2xx.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> index bb6a14d1ab0f..2e73d75a6ac5 100644
> --- a/drivers/spi/spi-pxa2xx.c
> +++ b/drivers/spi/spi-pxa2xx.c
> @@ -1565,7 +1565,13 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
> #endif
>
> ssp->clk = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(ssp->clk))
> + return NULL;
> +
> ssp->irq = platform_get_irq(pdev, 0);
> + if (ssp->irq < 0)
> + return NULL;

I'm not sure they are mandatory for all platforms.
To be on the safe side, you simple need to add _optional() to the both
call along with above change.

--
With Best Regards,
Andy Shevchenko

2019-10-19 08:14:19

by Chuhong Yuan

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 5:35 PM Andy Shevchenko
<[email protected]> wrote:
>
> On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:
> >
> > pxa2xx_spi_init_pdata misses checks for devm_clk_get and
> > platform_get_irq.
> > Add checks for them to fix the bugs.
> >
> > Signed-off-by: Chuhong Yuan <[email protected]>
> > ---
> > drivers/spi/spi-pxa2xx.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> > index bb6a14d1ab0f..2e73d75a6ac5 100644
> > --- a/drivers/spi/spi-pxa2xx.c
> > +++ b/drivers/spi/spi-pxa2xx.c
> > @@ -1565,7 +1565,13 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
> > #endif
> >
> > ssp->clk = devm_clk_get(&pdev->dev, NULL);
> > + if (IS_ERR(ssp->clk))
> > + return NULL;
> > +
> > ssp->irq = platform_get_irq(pdev, 0);
> > + if (ssp->irq < 0)
> > + return NULL;
>
> I'm not sure they are mandatory for all platforms.
> To be on the safe side, you simple need to add _optional() to the both
> call along with above change.
>

As I know, this is the only one in spi which does not have a check for
devm_clk_get.
Even if add _optional(), they still may return errors and need security checks.

> --
> With Best Regards,
> Andy Shevchenko

2019-10-19 08:16:39

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 1:39 PM Chuhong Yuan <[email protected]> wrote:
>
> On Fri, Oct 18, 2019 at 5:35 PM Andy Shevchenko
> <[email protected]> wrote:
> >
> > On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:
> > >
> > > pxa2xx_spi_init_pdata misses checks for devm_clk_get and
> > > platform_get_irq.
> > > Add checks for them to fix the bugs.
> > >
> > > Signed-off-by: Chuhong Yuan <[email protected]>
> > > ---
> > > drivers/spi/spi-pxa2xx.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> > > index bb6a14d1ab0f..2e73d75a6ac5 100644
> > > --- a/drivers/spi/spi-pxa2xx.c
> > > +++ b/drivers/spi/spi-pxa2xx.c
> > > @@ -1565,7 +1565,13 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
> > > #endif
> > >
> > > ssp->clk = devm_clk_get(&pdev->dev, NULL);
> > > + if (IS_ERR(ssp->clk))
> > > + return NULL;
> > > +
> > > ssp->irq = platform_get_irq(pdev, 0);
> > > + if (ssp->irq < 0)
> > > + return NULL;
> >
> > I'm not sure they are mandatory for all platforms.
> > To be on the safe side, you simple need to add _optional() to the both
> > call along with above change.
> >
>
> As I know, this is the only one in spi which does not have a check for
> devm_clk_get.

For some it still may be optional. That's why better to check it and
mention in the commit message.

> Even if add _optional(), they still may return errors and need security checks.

Of course, see "along with" in my previous comment.

--
With Best Regards,
Andy Shevchenko

2019-10-19 08:19:54

by Chuhong Yuan

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 7:14 PM Andy Shevchenko
<[email protected]> wrote:
>
> On Fri, Oct 18, 2019 at 1:39 PM Chuhong Yuan <[email protected]> wrote:
> >
> > On Fri, Oct 18, 2019 at 5:35 PM Andy Shevchenko
> > <[email protected]> wrote:
> > >
> > > On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:
> > > >
> > > > pxa2xx_spi_init_pdata misses checks for devm_clk_get and
> > > > platform_get_irq.
> > > > Add checks for them to fix the bugs.
> > > >
> > > > Signed-off-by: Chuhong Yuan <[email protected]>
> > > > ---
> > > > drivers/spi/spi-pxa2xx.c | 6 ++++++
> > > > 1 file changed, 6 insertions(+)
> > > >
> > > > diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> > > > index bb6a14d1ab0f..2e73d75a6ac5 100644
> > > > --- a/drivers/spi/spi-pxa2xx.c
> > > > +++ b/drivers/spi/spi-pxa2xx.c
> > > > @@ -1565,7 +1565,13 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
> > > > #endif
> > > >
> > > > ssp->clk = devm_clk_get(&pdev->dev, NULL);
> > > > + if (IS_ERR(ssp->clk))
> > > > + return NULL;
> > > > +
> > > > ssp->irq = platform_get_irq(pdev, 0);
> > > > + if (ssp->irq < 0)
> > > > + return NULL;
> > >
> > > I'm not sure they are mandatory for all platforms.
> > > To be on the safe side, you simple need to add _optional() to the both
> > > call along with above change.
> > >
> >
> > As I know, this is the only one in spi which does not have a check for
> > devm_clk_get.
>
> For some it still may be optional. That's why better to check it and
> mention in the commit message.
>
> > Even if add _optional(), they still may return errors and need security checks.
>
> Of course, see "along with" in my previous comment.
>

Got it. I will send version 2 in which both _optional() and security
checks will be added.

> --
> With Best Regards,
> Andy Shevchenko

2019-10-19 08:27:37

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 2:37 PM Chuhong Yuan <[email protected]> wrote:
> On Fri, Oct 18, 2019 at 7:14 PM Andy Shevchenko
> <[email protected]> wrote:
> > On Fri, Oct 18, 2019 at 1:39 PM Chuhong Yuan <[email protected]> wrote:
> > > On Fri, Oct 18, 2019 at 5:35 PM Andy Shevchenko
> > > <[email protected]> wrote:
> > > > On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:

> > > > I'm not sure they are mandatory for all platforms.
> > > > To be on the safe side, you simple need to add _optional() to the both
> > > > call along with above change.
> > > >
> > >
> > > As I know, this is the only one in spi which does not have a check for
> > > devm_clk_get.
> >
> > For some it still may be optional. That's why better to check it and
> > mention in the commit message.
> >
> > > Even if add _optional(), they still may return errors and need security checks.
> >
> > Of course, see "along with" in my previous comment.
> >
>
> Got it. I will send version 2 in which both _optional() and security
> checks will be added.

Let me be clear. I didn't check if _optional() needed or not. You need
to investigate this before sending new verison.
And in either case this should be explained in commit message.

--
With Best Regards,
Andy Shevchenko

2019-10-28 14:02:41

by Chuhong Yuan

[permalink] [raw]
Subject: Re: [PATCH] spi: pxa2xx: Add missed security checks

On Fri, Oct 18, 2019 at 10:04 PM Andy Shevchenko
<[email protected]> wrote:
>
> On Fri, Oct 18, 2019 at 2:37 PM Chuhong Yuan <[email protected]> wrote:
> > On Fri, Oct 18, 2019 at 7:14 PM Andy Shevchenko
> > <[email protected]> wrote:
> > > On Fri, Oct 18, 2019 at 1:39 PM Chuhong Yuan <[email protected]> wrote:
> > > > On Fri, Oct 18, 2019 at 5:35 PM Andy Shevchenko
> > > > <[email protected]> wrote:
> > > > > On Fri, Oct 18, 2019 at 8:59 AM Chuhong Yuan <[email protected]> wrote:
>
> > > > > I'm not sure they are mandatory for all platforms.
> > > > > To be on the safe side, you simple need to add _optional() to the both
> > > > > call along with above change.
> > > > >
> > > >
> > > > As I know, this is the only one in spi which does not have a check for
> > > > devm_clk_get.
> > >
> > > For some it still may be optional. That's why better to check it and
> > > mention in the commit message.
> > >
> > > > Even if add _optional(), they still may return errors and need security checks.
> > >
> > > Of course, see "along with" in my previous comment.
> > >
> >
> > Got it. I will send version 2 in which both _optional() and security
> > checks will be added.
>
> Let me be clear. I didn't check if _optional() needed or not. You need
> to investigate this before sending new verison.
> And in either case this should be explained in commit message.
>

I have checked this file again and found ssp->clk is used by clk_get_rate in
pxa2xx_spi_probe.
Therefore, it should not be NULL and _optional cannot be used here.
Besides, ssp->irq is also used in pxa2xx_spi_probe.
Hence, I think this patch is fine.

Regards,
Chuhong

> --
> With Best Regards,
> Andy Shevchenko