From 28b8276aff9acc3d13d85cb18357f83ec0a72ad9 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Fri, 3 Oct 2008 05:47:07 +0000 Subject: [PATCH] If RX/TX ring initialization failed, then stop re(4) and return --- sys/dev/netif/re/if_re.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/dev/netif/re/if_re.c b/sys/dev/netif/re/if_re.c index 6d5dd06ff0..3dd9fa46ff 100644 --- a/sys/dev/netif/re/if_re.c +++ b/sys/dev/netif/re/if_re.c @@ -33,7 +33,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/re/if_re.c,v 1.25 2004/06/09 14:34:01 naddy Exp $ - * $DragonFly: src/sys/dev/netif/re/if_re.c,v 1.53 2008/10/03 05:09:18 sephe Exp $ + * $DragonFly: src/sys/dev/netif/re/if_re.c,v 1.54 2008/10/03 05:47:07 sephe Exp $ */ /* @@ -2104,6 +2104,7 @@ re_init(void *xsc) struct ifnet *ifp = &sc->arpcom.ac_if; struct mii_data *mii; uint32_t rxcfg = 0; + int error; ASSERT_SERIALIZED(ifp->if_serializer); @@ -2139,8 +2140,16 @@ re_init(void *xsc) /* * For C+ mode, initialize the RX descriptors and mbufs. */ - re_rx_list_init(sc); - re_tx_list_init(sc); + error = re_rx_list_init(sc); + if (error) { + re_stop(sc); + return; + } + error = re_tx_list_init(sc); + if (error) { + re_stop(sc); + return; + } /* * Load the addresses of the RX and TX lists into the chip. -- 2.41.0