tsec_initialize allocates a private driver structure using malloc.
Should the memory allocation of this private structure fail, the
function execution is aborted with a return 0, but the previously
allocated device structure is never freed, hence leaked.

Free the device structure in the error case.

Signed-off-by: Mario Six <mario....@gdsys.cc>
Acked-by: Joe Hershberger <joe.hershber...@ni.com>
---

v1 -> v2:
None

---
 drivers/net/tsec.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 071595218e..44140fb037 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -701,8 +701,10 @@ static int tsec_initialize(bd_t *bis, struct 
tsec_info_struct *tsec_info)

        priv = (struct tsec_private *)malloc(sizeof(*priv));

-       if (!priv)
+       if (!priv) {
+               free(dev);
                return 0;
+       }

        priv->regs = tsec_info->regs;
        priv->phyregs_sgmii = tsec_info->miiregs_sgmii;
--
2.11.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to