svn commit: r200061 - head/lib/libc/rpc

John Baldwin jhb at FreeBSD.org
Thu Dec 3 15:14:30 UTC 2009


Author: jhb
Date: Thu Dec  3 15:14:30 2009
New Revision: 200061
URL: http://svn.freebsd.org/changeset/base/200061

Log:
  The fd_mask type is an unsigned long, not an int, so treat the mask as a
  long instead of an int when examining the results of select() to look for
  RPC requests.  Previously this routine would ignore RPC requests to sockets
  whose file descriptor mod 64 was greater than 31 on a 64-bit platform.
  
  PR:		amd64/141130
  Submitted by:	liujb of array networks
  MFC after:	3 days

Modified:
  head/lib/libc/rpc/svc.c

Modified: head/lib/libc/rpc/svc.c
==============================================================================
--- head/lib/libc/rpc/svc.c	Thu Dec  3 14:59:42 2009	(r200060)
+++ head/lib/libc/rpc/svc.c	Thu Dec  3 15:14:30 2009	(r200061)
@@ -627,8 +627,8 @@ svc_getreqset(readfds)
 
 	maskp = readfds->fds_bits;
 	for (sock = 0; sock < FD_SETSIZE; sock += NFDBITS) {
-	    for (mask = *maskp++; (bit = ffs(mask)) != 0;
-		mask ^= (1 << (bit - 1))) {
+	    for (mask = *maskp++; (bit = ffsl(mask)) != 0;
+		mask ^= (1ul << (bit - 1))) {
 		/* sock has input waiting */
 		fd = sock + bit - 1;
 		svc_getreq_common(fd);


More information about the svn-src-head mailing list