svn commit: r280014 - head/sys/netinet
Ian Lepore
ian at FreeBSD.org
Sat Mar 14 23:57:34 UTC 2015
Author: ian
Date: Sat Mar 14 23:57:33 2015
New Revision: 280014
URL: https://svnweb.freebsd.org/changeset/base/280014
Log:
Go back to using sbuf_new() with a preallocated large buffer, to avoid
triggering an sbuf auto-drain copyout while holding a lock.
Pointed out by: jhb
Pointy hat: ian
Modified:
head/sys/netinet/tcp_hostcache.c
Modified: head/sys/netinet/tcp_hostcache.c
==============================================================================
--- head/sys/netinet/tcp_hostcache.c Sat Mar 14 23:30:03 2015 (r280013)
+++ head/sys/netinet/tcp_hostcache.c Sat Mar 14 23:57:33 2015 (r280014)
@@ -604,7 +604,8 @@ sysctl_tcp_hc_list(SYSCTL_HANDLER_ARGS)
char ip6buf[INET6_ADDRSTRLEN];
#endif
- sbuf_new_for_sysctl(&sb, NULL, linesize, req);
+ sbuf_new(&sb, NULL, linesize * (V_tcp_hostcache.cache_count + 1),
+ SBUF_INCLUDENUL);
sbuf_printf(&sb,
"\nIP address MTU SSTRESH RTT RTTVAR BANDWIDTH "
@@ -642,6 +643,8 @@ sysctl_tcp_hc_list(SYSCTL_HANDLER_ARGS)
}
#undef msec
error = sbuf_finish(&sb);
+ if (error == 0)
+ error = SYSCTL_OUT(req, sbuf_data(&sb), sbuf_len(&sb));
sbuf_delete(&sb);
return(error);
}
More information about the svn-src-all
mailing list