From e592b076c63d43e389dea9d9e524cd642422d561 Mon Sep 17 00:00:00 2001 From: Sascha Wildner Date: Fri, 13 Jun 2014 11:15:00 +0200 Subject: [PATCH] kernel: Add a few more missing crit_exit()s. --- sys/netinet/ip_input.c | 1 + sys/netinet/sctp_output.c | 6 +++++- sys/netproto/ipsec/xform_ah.c | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index 8682e190ce..ae30b42b4c 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -924,6 +924,7 @@ ours: /* XXX error stat??? */ error = EINVAL; DPRINTF(("ip_input: no SP, packet discarded\n"));/*XXX*/ + crit_exit(); goto bad; } crit_exit(); diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index d6903005c0..177599d0b0 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -9544,8 +9544,10 @@ sctp_copy_it_in(struct sctp_inpcb *inp, /* lock the socket buf */ SOCKBUF_LOCK(&so->so_snd); error = ssb_lock(&so->so_snd, SBLOCKWAIT(flags)); - if (error) + if (error) { + crit_exit(); goto out_locked; + } /* will it ever fit ? */ if (sndlen > so->so_snd.ssb_hiwat) { @@ -9582,6 +9584,7 @@ sctp_copy_it_in(struct sctp_inpcb *inp, if (flags & (MSG_FNONBLOCKING|MSG_DONTWAIT)) { /* Non-blocking io in place */ error = EWOULDBLOCK; + crit_exit(); goto release; } inp->sctp_tcb_at_block = (void *)stcb; @@ -9599,6 +9602,7 @@ sctp_copy_it_in(struct sctp_inpcb *inp, /* Should I really unlock ? */ SCTP_INP_RUNLOCK(inp); error = EFAULT; + crit_exit(); goto out_locked; } SCTP_TCB_LOCK(stcb); diff --git a/sys/netproto/ipsec/xform_ah.c b/sys/netproto/ipsec/xform_ah.c index f92e7ab9f8..512211a8c4 100644 --- a/sys/netproto/ipsec/xform_ah.c +++ b/sys/netproto/ipsec/xform_ah.c @@ -770,8 +770,11 @@ ah_input_cb(struct cryptop *crp) if (sav->tdb_cryptoid != 0) sav->tdb_cryptoid = crp->crp_sid; - if (crp->crp_etype == EAGAIN) - return crypto_dispatch(crp); + if (crp->crp_etype == EAGAIN) { + error = crypto_dispatch(crp); + crit_exit(); + return(error); + } ahstat.ahs_noxform++; DPRINTF(("ah_input_cb: crypto error %d\n", crp->crp_etype)); -- 2.41.0