mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +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 */
|
||||
bd_space = memalign(1 << MMU_SECTION_SHIFT, BD_SPACE);
|
||||
if (!bd_space)
|
||||
return -ENOMEM;
|
||||
if (!bd_space) {
|
||||
ret = -ENOMEM;
|
||||
goto err1;
|
||||
}
|
||||
|
||||
mmu_set_region_dcache_behaviour((phys_addr_t)bd_space,
|
||||
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);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "failed to get clock\n");
|
||||
return -EINVAL;
|
||||
goto err1;
|
||||
}
|
||||
|
||||
priv->bus = mdio_alloc();
|
||||
|
@ -684,9 +686,19 @@ static int zynq_gem_probe(struct udevice *dev)
|
|||
|
||||
ret = mdio_register_seq(priv->bus, dev->seq);
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue