mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
net: zynq: Free allocated buffers in case of error
Driver probe function is called again and again in case of error. Malloc space is getting full which is is reported by: Insufficient RAM for page table: 0x15000 > 0x14000. Please increase the size in get_page_table_size() ### ERROR ### Please RESET the board ### The patch is freeing allocated buffers on error path to avoid panic. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
380376520f
commit
58ecd9ad0b
1 changed files with 17 additions and 5 deletions
|
@ -661,8 +661,10 @@ static int zynq_gem_probe(struct udevice *dev)
|
||||||
|
|
||||||
/* Align bd_space to MMU_SECTION_SHIFT */
|
/* Align bd_space to MMU_SECTION_SHIFT */
|
||||||
bd_space = memalign(1 << MMU_SECTION_SHIFT, BD_SPACE);
|
bd_space = memalign(1 << MMU_SECTION_SHIFT, BD_SPACE);
|
||||||
if (!bd_space)
|
if (!bd_space) {
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto err1;
|
||||||
|
}
|
||||||
|
|
||||||
mmu_set_region_dcache_behaviour((phys_addr_t)bd_space,
|
mmu_set_region_dcache_behaviour((phys_addr_t)bd_space,
|
||||||
BD_SPACE, DCACHE_OFF);
|
BD_SPACE, DCACHE_OFF);
|
||||||
|
@ -674,7 +676,7 @@ static int zynq_gem_probe(struct udevice *dev)
|
||||||
ret = clk_get_by_name(dev, "tx_clk", &priv->clk);
|
ret = clk_get_by_name(dev, "tx_clk", &priv->clk);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(dev, "failed to get clock\n");
|
dev_err(dev, "failed to get clock\n");
|
||||||
return -EINVAL;
|
goto err1;
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->bus = mdio_alloc();
|
priv->bus = mdio_alloc();
|
||||||
|
@ -684,9 +686,19 @@ static int zynq_gem_probe(struct udevice *dev)
|
||||||
|
|
||||||
ret = mdio_register_seq(priv->bus, dev->seq);
|
ret = mdio_register_seq(priv->bus, dev->seq);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto err2;
|
||||||
|
|
||||||
return zynq_phy_init(dev);
|
ret = zynq_phy_init(dev);
|
||||||
|
if (ret)
|
||||||
|
goto err2;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
err2:
|
||||||
|
free(priv->rxbuffers);
|
||||||
|
err1:
|
||||||
|
free(priv->tx_bd);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zynq_gem_remove(struct udevice *dev)
|
static int zynq_gem_remove(struct udevice *dev)
|
||||||
|
|
Loading…
Add table
Reference in a new issue