X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/d6391cba95df1922dee4d1813270357075b30908..176c481f62876316668544ff7b26e7956a4243de:/usr/src/sys/vax/if/if_uba.c diff --git a/usr/src/sys/vax/if/if_uba.c b/usr/src/sys/vax/if/if_uba.c index 8b01de6fcd..c9298a25d0 100644 --- a/usr/src/sys/vax/if/if_uba.c +++ b/usr/src/sys/vax/if/if_uba.c @@ -1,4 +1,4 @@ -/* if_uba.c 4.9 82/02/03 */ +/* if_uba.c 4.11 82/05/19 */ #include "../h/param.h" #include "../h/systm.h" @@ -11,6 +11,7 @@ #include "../h/cmap.h" #include "../h/mtpr.h" #include "../h/vmmac.h" +#include "../h/socket.h" #include "../net/in.h" #include "../net/in_systm.h" #include "../net/if.h" @@ -39,14 +40,18 @@ if_ubainit(ifu, uban, hlen, nmr) COUNT(IF_UBAINIT); ncl = clrnd(nmr + CLSIZE) / CLSIZE; - cp = m_clalloc(2 * ncl, MPG_SPACE); - if (cp == 0) - return (0); - ifu->ifu_hlen = hlen; - ifu->ifu_uban = uban; - ifu->ifu_uba = uba_hd[uban].uh_uba; - ifu->ifu_r.ifrw_addr = cp + CLBYTES - hlen; - ifu->ifu_w.ifrw_addr = ifu->ifu_r.ifrw_addr + ncl * CLBYTES; + if (ifu->ifu_r.ifrw_addr) + cp = ifu->ifu_r.ifrw_addr - (CLBYTES - hlen); + else { + cp = m_clalloc(2 * ncl, MPG_SPACE); + if (cp == 0) + return (0); + ifu->ifu_r.ifrw_addr = cp + CLBYTES - hlen; + ifu->ifu_w.ifrw_addr = ifu->ifu_r.ifrw_addr + ncl * CLBYTES; + ifu->ifu_hlen = hlen; + ifu->ifu_uban = uban; + ifu->ifu_uba = uba_hd[uban].uh_uba; + } if (if_ubaalloc(ifu, &ifu->ifu_r, nmr) == 0) goto bad; if (if_ubaalloc(ifu, &ifu->ifu_w, nmr) == 0) @@ -59,6 +64,7 @@ bad2: ubarelse(ifu->ifu_uban, &ifu->ifu_r.ifrw_info); bad: m_pgfree(cp, 2 * ncl); + ifu->ifu_r.ifrw_addr = 0; return (0); }