summaryrefslogtreecommitdiffstats
path: root/sys/netinet/raw_ip.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2010-08-17 16:41:16 +0000
committerjhb <jhb@FreeBSD.org>2010-08-17 16:41:16 +0000
commitd8e2e27165e72af01c626085249abf380be4ca9c (patch)
treeac22d40e259520b3863696d63c529cccfd9def23 /sys/netinet/raw_ip.c
parent1e41807d30ffb0a80c716044faf833b4e7f229d8 (diff)
downloadFreeBSD-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/raw_ip.c')
-rw-r--r--sys/netinet/raw_ip.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 0b77b5b..d6b426c 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -993,8 +993,8 @@ rip_pcblist(SYSCTL_HANDLER_ARGS)
*/
if (req->oldptr == 0) {
n = V_ripcbinfo.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);
}
OpenPOWER on IntegriCloud