summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2003-09-17 21:13:16 +0000
committersam <sam@FreeBSD.org>2003-09-17 21:13:16 +0000
commit5eeea54c4e794906c468fe5c829dbc63c6243991 (patch)
tree3e032685ad52acaa5134d37fdc74341fca7540ba
parentc691899d1c21bd3422539af4b0115eb0b3e48a92 (diff)
downloadFreeBSD-src-5eeea54c4e794906c468fe5c829dbc63c6243991.zip
FreeBSD-src-5eeea54c4e794906c468fe5c829dbc63c6243991.tar.gz
shuffle code so we don't "continue" and miss a needed unlock operation
Observed by: Wiktor Niesiobedzki <w@evip.pl>
-rw-r--r--sys/netinet/raw_ip.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 59f5f07..0484f32 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -709,10 +709,8 @@ rip_pcblist(SYSCTL_HANDLER_ARGS)
for (inp = LIST_FIRST(ripcbinfo.listhead), i = 0; inp && i < n;
inp = LIST_NEXT(inp, inp_list)) {
INP_LOCK(inp);
- if (inp->inp_gencnt <= gencnt) {
- if (cr_canseesocket(req->td->td_ucred,
- inp->inp_socket))
- continue;
+ if (inp->inp_gencnt <= gencnt &&
+ cr_canseesocket(req->td->td_ucred, inp->inp_socket) == 0) {
/* XXX held references? */
inp_list[i++] = inp;
}
OpenPOWER on IntegriCloud