Subject: Re: [PATCH] stmmac: fix kernel crash when device probed for SPEAr with DT

From: Giuseppe CAVALLARO <[email-masked]>
Date: Wed, 18 Apr 2012 07:11:08 +0200

Hi Viresh

On 4/17/2012 11:24 AM, Viresh KUMAR wrote:
> plat->dma_cfg is never allocated memory and is tried to be filled when we boot
> it for SPEAr SoCs with DT. And so get a kernel crash.
> 
> Fix it by allocating memory for dma_cfg.

The fix seems to be legal but I'd like to do a review of the code again.
I was reluctant to add the dma_cfg because it had a big impact on
several platforms etc (as discussed with SPEAr guys). I accepted it
because logically correct and tidied-up the code, indeed.
I hoped it was fully tested on SPEAr platforms. at any rate, I'll look
at you patch and perform some tests on my boards and then come-back to you.

Kind Regards
Peppe

> 
> Signed-off-by: Viresh Kumar <[email-masked]>
> ---
>  .../net/ethernet/stmicro/stmmac/stmmac_platform.c  |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> index 12bd221..f124f60 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> @@ -110,6 +110,14 @@ static int stmmac_pltfr_probe(struct platform_device *pdev)
>  			goto out_unmap;
>  		}
>  
> +		plat_dat->dma_cfg = devm_kzalloc(&pdev->dev,
> +				sizeof(*plat_dat->dma_cfg), GFP_KERNEL);
> +		if (!plat_dat->dma_cfg) {
> +			pr_err("%s: ERROR: no memory for dma_cfg", __func__);
> +			ret = -ENOMEM;
> +			goto out_unmap;
> +		}
> +
>  		ret = stmmac_probe_config_dt(pdev, plat_dat, &mac);
>  		if (ret) {
>  			pr_err("%s: main dt probe failed", __func__);