
If a free() call is used on an already freed pointer we run into stability problems. Put all pointers to NULL after freeing to avoid this problem.
Tested on i.MX27 Litekit board with eldk-2.0 toolchain.
Signed-off-by: Javier Martin javier.martin@vista-silicon.com --
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index bd83a24..7e86bc6 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -444,6 +444,7 @@ static int fec_init(struct eth_device *dev, bd_t* bd) */ if (fec_rbd_init(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE) < 0) { free(fec->base_ptr); + fec->base_ptr = NULL; return -ENOMEM; } fec_tbd_init(fec); @@ -492,7 +493,9 @@ static void fec_halt(struct eth_device *dev) fec->rbd_index = 0; fec->tbd_index = 0; free(fec->rdb_ptr); + fec->rdb_ptr = NULL; free(fec->base_ptr); + fec->base_ptr = NULL; debug("eth_halt: done\n"); }