
On 05/13/2013 07:45 AM, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange@redhat.com>
Use of the select() system call is inherantly dangerous since applications will hit a buffer overrun if any FD number exceeds the size of the select set size (typically 1024). Replace the two uses of select() with poll() and use cfg.mk to ban any future use of select().
NB: This changes the phyp driver so that it uses an infinite timeout, instead of busy-waiting for 1ms at a time.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com> ---
+++ b/cfg.mk @@ -444,6 +444,14 @@ sc_prohibit_nonreentrant: done ; \ exit $$fail
+sc_prohibit_select: + @fail=0 ; \ + (prohibit="\\<select *\\(" \ + halt="use poll(), not select()" \ + $(_sc_search_regexp) \ + ) || fail=1; \ + exit $$fail
Overkill. $(_sc_search_regexp) exits with non-zero status, so it is sufficient to write: +sc_prohibit_select: + @prohibit="\\<select *\\(" \ + halt="use poll(), not select()" \ + $(_sc_search_regexp)
+++ b/src/util/virnetlink.c @@ -48,7 +48,7 @@
#define VIR_FROM_THIS VIR_FROM_NET
-#define NETLINK_ACK_TIMEOUT_S 2 +#define NETLINK_ACK_TIMEOUT_S 2*1000
Needs parenthesis. ACK with those fixes. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org