+ if (uio->uio_resid <= 0)
+ break;
+ len = uio->uio_resid;
+ so->so_state &= ~SS_RCVATMARK;
+ if (so->so_oobmark && len > so->so_oobmark)
+ len = so->so_oobmark;
+ if (len > m->m_len)
+ len = m->m_len;
+ splx(s);
+ uiomove(mtod(m, caddr_t), (int)len, UIO_READ, uio);
+ s = splnet();