diff options
author | jhb <jhb@FreeBSD.org> | 2010-08-17 16:41:16 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2010-08-17 16:41:16 +0000 |
commit | d8e2e27165e72af01c626085249abf380be4ca9c (patch) | |
tree | ac22d40e259520b3863696d63c529cccfd9def23 /sys/netinet/udp_usrreq.c | |
parent | 1e41807d30ffb0a80c716044faf833b4e7f229d8 (diff) | |
download | FreeBSD-src-d8e2e27165e72af01c626085249abf380be4ca9c.zip FreeBSD-src-d8e2e27165e72af01c626085249abf380be4ca9c.tar.gz |
Ensure a minimum "slop" of 10 extra pcb structures when providing a
memory size estimate to userland for pcb list sysctls. The previous
behavior of a "slop" of n/8 does not work well for small values of n
(e.g. no slop at all if you have less than 8 open UDP connections).
Reviewed by: bz
MFC after: 1 week
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
-rw-r--r-- | sys/netinet/udp_usrreq.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 4541038..adb11c4 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -707,8 +707,8 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) */ if (req->oldptr == 0) { n = V_udbinfo.ipi_count; - req->oldidx = 2 * (sizeof xig) - + (n + n/8) * sizeof(struct xinpcb); + n += imax(n / 8, 10); + req->oldidx = 2 * (sizeof xig) + n * sizeof(struct xinpcb); return (0); } |