diff options
author | sam <sam@FreeBSD.org> | 2003-09-17 21:13:16 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2003-09-17 21:13:16 +0000 |
commit | 5eeea54c4e794906c468fe5c829dbc63c6243991 (patch) | |
tree | 3e032685ad52acaa5134d37fdc74341fca7540ba /sys/netinet/raw_ip.c | |
parent | c691899d1c21bd3422539af4b0115eb0b3e48a92 (diff) | |
download | FreeBSD-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>
Diffstat (limited to 'sys/netinet/raw_ip.c')
-rw-r--r-- | sys/netinet/raw_ip.c | 6 |
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; } |