On Thu, Sep 01, 2022 at 09:00:50PM +0200, Alexander Bluhm wrote: > On Mon, Aug 15, 2022 at 05:12:22PM +0200, Alexander Bluhm wrote: > > System calls should not fail due to temporary memory shortage in > > malloc(9) or pool_get(9). > > > > Pass down a wait flag to pru_attach(). During syscall socket(2) > > it is ok to wait, this logic was missing for internet pcb. Pfkey > > and route sockets were already waiting. > > > > sonewconn() cannot wait when called during TCP 3-way handshake. > > This logic has been preserved. Unix domain stream socket connect(2) > > can wait until the other side has created the socket to accept. > > rebased to -current. > > Anyone? >
At least these ones should have the "pcb == NULL" check as the inet and unix cases. Or the `wait' could be ignored for all cases except tcp. > - kp = pool_get(&pkpcb_pool, PR_WAITOK|PR_ZERO); > + kp = pool_get(&pkpcb_pool, (wait == M_WAIT ? PR_WAITOK : PR_NOWAIT) | > + PR_ZERO); > so->so_pcb = kp; > - rop = pool_get(&rtpcb_pool, PR_WAITOK|PR_ZERO); > + rop = pool_get(&rtpcb_pool, (wait == M_WAIT ? PR_WAITOK : PR_NOWAIT) | > + PR_ZERO); > so->so_pcb = rop;
