Message ID | 91ea900ce78bb2054d83e0575c16ac70f3f11511.1334654597.git.viresh.kumar@st.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
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 <viresh.kumar@st.com> > --- > .../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__); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 4/18/2012 10:41 AM, Giuseppe CAVALLARO wrote:
> I hoped it was fully tested on SPEAr platforms. at any rate
I am only working for SPEAr3xx with DT support and this patch is must as
without it we have build failures. Haven't tested on any other SPEAr SoCs, they
may require extra pdata fields to be initialized, but that will follow with
their DT support.
Hello Viresh. On 4/18/2012 7:14 AM, Viresh Kumar wrote: > On 4/18/2012 10:41 AM, Giuseppe CAVALLARO wrote: >> I hoped it was fully tested on SPEAr platforms. at any rate > > I am only working for SPEAr3xx with DT support and this patch is must as > without it we have build failures. Haven't tested on any other SPEAr SoCs, they > may require extra pdata fields to be initialized, but that will follow with > their DT support. > I've just sent 4 patches so I kindly ask you to review the patch named: [net-next 3/4] stmmac: verify the dma_cfg platform fields where I reworked the logic behind the dma_cfg conf. Peppe -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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__);
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. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> --- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)