diff options
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_mchain.c | 24 | ||||
-rw-r--r-- | sys/kern/uipc_mbuf.c | 2 | ||||
-rw-r--r-- | sys/kern/uipc_socket.c | 26 | ||||
-rw-r--r-- | sys/kern/uipc_syscalls.c | 28 |
4 files changed, 28 insertions, 52 deletions
diff --git a/sys/kern/subr_mchain.c b/sys/kern/subr_mchain.c index dc70af2..239564e 100644 --- a/sys/kern/subr_mchain.c +++ b/sys/kern/subr_mchain.c @@ -56,9 +56,7 @@ mb_init(struct mbchain *mbp) { struct mbuf *m; - m = m_gethdr(M_TRYWAIT, MT_DATA); - if (m == NULL) - return ENOBUFS; + m = m_gethdr(M_WAIT, MT_DATA); m->m_len = 0; mb_initm(mbp, m); return 0; @@ -113,9 +111,7 @@ mb_reserve(struct mbchain *mbp, int size) panic("mb_reserve: size = %d\n", size); m = mbp->mb_cur; if (mbp->mb_mleft < size) { - mn = m_get(M_TRYWAIT, MT_DATA); - if (mn == NULL) - return NULL; + mn = m_get(M_WAIT, MT_DATA); mbp->mb_cur = m->m_next = mn; m = mn; m->m_len = 0; @@ -190,11 +186,9 @@ mb_put_mem(struct mbchain *mbp, c_caddr_t source, int size, int type) while (size > 0) { if (mleft == 0) { - if (m->m_next == NULL) { - m = m_getm(m, size, M_TRYWAIT, MT_DATA); - if (m == NULL) - return ENOBUFS; - } else + if (m->m_next == NULL) + m = m_getm(m, size, M_WAIT, MT_DATA); + else m = m->m_next; mleft = M_TRAILINGSPACE(m); continue; @@ -295,9 +289,7 @@ md_init(struct mdchain *mdp) { struct mbuf *m; - m = m_gethdr(M_TRYWAIT, MT_DATA); - if (m == NULL) - return ENOBUFS; + m = m_gethdr(M_WAIT, MT_DATA); m->m_len = 0; md_initm(mdp, m); return 0; @@ -503,9 +495,7 @@ md_get_mbuf(struct mdchain *mdp, int size, struct mbuf **ret) { struct mbuf *m = mdp->md_cur, *rm; - rm = m_copym(m, mdp->md_pos - mtod(m, u_char*), size, M_TRYWAIT); - if (rm == NULL) - return EBADRPC; + rm = m_copym(m, mdp->md_pos - mtod(m, u_char*), size, M_WAIT); md_get_mem(mdp, NULL, size, MB_MZERO); *ret = rm; return 0; diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index 9015ec7..eff51eb 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -519,7 +519,7 @@ m_prepend(struct mbuf *m, int len, int how) /* * Make a copy of an mbuf chain starting "off0" bytes from the beginning, * continuing for "len" bytes. If len is M_COPYALL, copy to end of mbuf. - * The wait parameter is a choice of M_TRYWAIT/M_DONTWAIT from caller. + * The wait parameter is a choice of M_WAIT/M_DONTWAIT from caller. * Note that the copy is read-only, because clusters are not copied, * only their reference counts are incremented. */ diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index bbb4f89..4b25b58 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -860,16 +860,16 @@ sosend_copyin(struct uio *uio, struct mbuf **retmp, int atomic, long *space, } #else /* ZERO_COPY_SOCKETS */ if (top == NULL) { - m = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); + m = m_getcl(M_WAIT, MT_DATA, M_PKTHDR); m->m_pkthdr.len = 0; m->m_pkthdr.rcvif = NULL; } else - m = m_getcl(M_TRYWAIT, MT_DATA, 0); + m = m_getcl(M_WAIT, MT_DATA, 0); len = min(min(MCLBYTES, resid), *space); #endif /* ZERO_COPY_SOCKETS */ } else { if (top == NULL) { - m = m_gethdr(M_TRYWAIT, MT_DATA); + m = m_gethdr(M_WAIT, MT_DATA); m->m_pkthdr.len = 0; m->m_pkthdr.rcvif = NULL; @@ -881,7 +881,7 @@ sosend_copyin(struct uio *uio, struct mbuf **retmp, int atomic, long *space, if (atomic && m && len < MHLEN) MH_ALIGN(m, len); } else { - m = m_get(M_TRYWAIT, MT_DATA); + m = m_get(M_WAIT, MT_DATA); len = min(min(MLEN, resid), *space); } } @@ -1304,9 +1304,7 @@ soreceive_rcvoob(struct socket *so, struct uio *uio, int flags) KASSERT(flags & MSG_OOB, ("soreceive_rcvoob: (flags & MSG_OOB) == 0")); - m = m_get(M_TRYWAIT, MT_DATA); - if (m == NULL) - return (ENOBUFS); + m = m_get(M_WAIT, MT_DATA); error = (*pr->pr_usrreqs->pru_rcvoob)(so, m, flags & MSG_PEEK); if (error) goto bad; @@ -1718,11 +1716,11 @@ dontblock: if (flags & MSG_DONTWAIT) copy_flag = M_DONTWAIT; else - copy_flag = M_TRYWAIT; - if (copy_flag == M_TRYWAIT) + copy_flag = M_WAIT; + if (copy_flag == M_WAIT) SOCKBUF_UNLOCK(&so->so_rcv); *mp = m_copym(m, 0, len, copy_flag); - if (copy_flag == M_TRYWAIT) + if (copy_flag == M_WAIT) SOCKBUF_LOCK(&so->so_rcv); if (*mp == NULL) { /* @@ -2333,11 +2331,11 @@ soopt_getm(struct sockopt *sopt, struct mbuf **mp) struct mbuf *m, *m_prev; int sopt_size = sopt->sopt_valsize; - MGET(m, sopt->sopt_td ? M_TRYWAIT : M_DONTWAIT, MT_DATA); + MGET(m, sopt->sopt_td ? M_WAIT : M_DONTWAIT, MT_DATA); if (m == NULL) return ENOBUFS; if (sopt_size > MLEN) { - MCLGET(m, sopt->sopt_td ? M_TRYWAIT : M_DONTWAIT); + MCLGET(m, sopt->sopt_td ? M_WAIT : M_DONTWAIT); if ((m->m_flags & M_EXT) == 0) { m_free(m); return ENOBUFS; @@ -2351,13 +2349,13 @@ soopt_getm(struct sockopt *sopt, struct mbuf **mp) m_prev = m; while (sopt_size) { - MGET(m, sopt->sopt_td ? M_TRYWAIT : M_DONTWAIT, MT_DATA); + MGET(m, sopt->sopt_td ? M_WAIT : M_DONTWAIT, MT_DATA); if (m == NULL) { m_freem(*mp); return ENOBUFS; } if (sopt_size > MLEN) { - MCLGET(m, sopt->sopt_td != NULL ? M_TRYWAIT : + MCLGET(m, sopt->sopt_td != NULL ? M_WAIT : M_DONTWAIT); if ((m->m_flags & M_EXT) == 0) { m_freem(m); diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 270c4d8..ab5cb5f 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -705,16 +705,11 @@ sendit(td, s, mp, flags) if (mp->msg_flags == MSG_COMPAT) { struct cmsghdr *cm; - M_PREPEND(control, sizeof(*cm), M_TRYWAIT); - if (control == 0) { - error = ENOBUFS; - goto bad; - } else { - cm = mtod(control, struct cmsghdr *); - cm->cmsg_len = control->m_len; - cm->cmsg_level = SOL_SOCKET; - cm->cmsg_type = SCM_RIGHTS; - } + M_PREPEND(control, sizeof(*cm), M_WAIT); + cm = mtod(control, struct cmsghdr *); + cm->cmsg_len = control->m_len; + cm->cmsg_level = SOL_SOCKET; + cm->cmsg_type = SCM_RIGHTS; } #endif } else { @@ -1627,16 +1622,9 @@ sockargs(mp, buf, buflen, type) if ((u_int)buflen > MCLBYTES) return (EINVAL); } - m = m_get(M_TRYWAIT, type); - if (m == NULL) - return (ENOBUFS); - if ((u_int)buflen > MLEN) { - MCLGET(m, M_TRYWAIT); - if ((m->m_flags & M_EXT) == 0) { - m_free(m); - return (ENOBUFS); - } - } + m = m_get(M_WAIT, type); + if ((u_int)buflen > MLEN) + MCLGET(m, M_WAIT); m->m_len = buflen; error = copyin(buf, mtod(m, caddr_t), (u_int)buflen); if (error) |