[net,v2] net: mvpp2: fix possible invalid pointer dereference

Message ID 20221115090433.232165-1-tanghui20@huawei.com
State New
Headers
Series [net,v2] net: mvpp2: fix possible invalid pointer dereference |

Commit Message

Hui Tang Nov. 15, 2022, 9:04 a.m. UTC
  It will cause invalid pointer dereference to priv->cm3_base behind,
if PTR_ERR(priv->cm3_base) in mvpp2_get_sram().

Fixes: a59d354208a7 ("net: mvpp2: enable global flow control")
Signed-off-by: Hui Tang <tanghui20@huawei.com>
---
v1 -> v2: patch title include target
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Marcin Wojtas Nov. 15, 2022, 9:16 a.m. UTC | #1
wt., 15 lis 2022 o 10:08 Hui Tang <tanghui20@huawei.com> napisaƂ(a):
>
> It will cause invalid pointer dereference to priv->cm3_base behind,
> if PTR_ERR(priv->cm3_base) in mvpp2_get_sram().
>
> Fixes: a59d354208a7 ("net: mvpp2: enable global flow control")
> Signed-off-by: Hui Tang <tanghui20@huawei.com>
> ---
> v1 -> v2: patch title include target
> ---
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> index d98f7e9a480e..c92bd1922421 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> @@ -7421,7 +7421,7 @@ static int mvpp2_probe(struct platform_device *pdev)
>                         dev_warn(&pdev->dev, "Fail to alloc CM3 SRAM\n");
>
>                 /* Enable global Flow Control only if handler to SRAM not NULL */
> -               if (priv->cm3_base)
> +               if (!IS_ERR_OR_NULL(priv->cm3_base))
>                         priv->global_tx_fc = true;
>         }
>
> --
> 2.17.1
>

Thank you for the patch.

Reviewed-by: Marcin Wojtas <mw@semihalf.com>

Best regards,
Marcin
  
Andrew Lunn Nov. 15, 2022, 3:50 p.m. UTC | #2
On Tue, Nov 15, 2022 at 05:04:33PM +0800, Hui Tang wrote:
> It will cause invalid pointer dereference to priv->cm3_base behind,
> if PTR_ERR(priv->cm3_base) in mvpp2_get_sram().

As i pointed out for the MDIO driver, i wonder if this is the correct
fix. mvpp2_get_sram() is probably a better place to handle this

In fact, please add a devm_ioremap_resource_optional() which returns
NULL if the resource does not exist, or an error code for real errors,
and make drivers fail the probe on real errors.

	Andrew
  

Patch

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index d98f7e9a480e..c92bd1922421 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7421,7 +7421,7 @@  static int mvpp2_probe(struct platform_device *pdev)
 			dev_warn(&pdev->dev, "Fail to alloc CM3 SRAM\n");
 
 		/* Enable global Flow Control only if handler to SRAM not NULL */
-		if (priv->cm3_base)
+		if (!IS_ERR_OR_NULL(priv->cm3_base))
 			priv->global_tx_fc = true;
 	}