diff options
author | green <green@FreeBSD.org> | 1999-12-12 05:52:51 +0000 |
---|---|---|
committer | green <green@FreeBSD.org> | 1999-12-12 05:52:51 +0000 |
commit | 56a46611e10209f4a55ba809f58b91f7db2b60b4 (patch) | |
tree | a18fc22a78afce419dacc6ec6f2b867caf2d0922 /sys/kern/uipc_syscalls.c | |
parent | 8fc09c011cc5df71c6f1ab5510dee8133224bbb4 (diff) | |
download | FreeBSD-src-56a46611e10209f4a55ba809f58b91f7db2b60b4.zip FreeBSD-src-56a46611e10209f4a55ba809f58b91f7db2b60b4.tar.gz |
This is Bosko Milekic's mbuf allocation waiting code. Basically, this
means that running out of mbuf space isn't a panic anymore, and code
which runs out of network memory will sleep to wait for it.
Submitted by: Bosko Milekic <bmilekic@dsuper.net>
Reviewed by: green, wollman
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index af24c03..268125f 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -1615,6 +1615,10 @@ retry_lookup: * Get an mbuf header and set it up as having external storage. */ MGETHDR(m, M_WAIT, MT_DATA); + if (m == NULL) { + error = ENOBUFS; + goto done; + } m->m_ext.ext_free = sf_buf_free; m->m_ext.ext_ref = sf_buf_ref; m->m_ext.ext_buf = (void *)sf->kva; |