diff options
author | yongari <yongari@FreeBSD.org> | 2007-06-12 04:30:30 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2007-06-12 04:30:30 +0000 |
commit | 2eb43cb958c78a7a9ef7d0a4df488dda3641d669 (patch) | |
tree | 491381bb40cee966100c1004b3ae647b1872a3fa /sys/dev/txp | |
parent | 2255e968f3f73eab68839682b286d05b97ac4941 (diff) | |
download | FreeBSD-src-2eb43cb958c78a7a9ef7d0a4df488dda3641d669.zip FreeBSD-src-2eb43cb958c78a7a9ef7d0a4df488dda3641d669.tar.gz |
Add checks for contigmalloc(9) failure.
Diffstat (limited to 'sys/dev/txp')
-rw-r--r-- | sys/dev/txp/if_txp.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/txp/if_txp.c b/sys/dev/txp/if_txp.c index 521a49c..aff8461 100644 --- a/sys/dev/txp/if_txp.c +++ b/sys/dev/txp/if_txp.c @@ -264,6 +264,11 @@ txp_attach(dev) sc->sc_fwbuf = contigmalloc(32768, M_DEVBUF, M_NOWAIT, 0, 0xffffffff, PAGE_SIZE, 0); + if (sc->sc_fwbuf == NULL) { + device_printf(dev, "no memory for firmware\n"); + error = ENXIO; + goto fail; + } error = txp_download_fw(sc); contigfree(sc->sc_fwbuf, 32768, M_DEVBUF); sc->sc_fwbuf = NULL; @@ -273,6 +278,11 @@ txp_attach(dev) sc->sc_ldata = contigmalloc(sizeof(struct txp_ldata), M_DEVBUF, M_NOWAIT, 0, 0xffffffff, PAGE_SIZE, 0); + if (sc->sc_ldata == NULL) { + device_printf(dev, "no memory for descriptor ring\n"); + error = ENXIO; + goto fail; + } bzero(sc->sc_ldata, sizeof(struct txp_ldata)); if (txp_alloc_rings(sc)) { |