Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jan 2009 18:38:42 +0000 (UTC)
From:      Jeff Roberson <jeff@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187693 - head/sys/kern
Message-ID:  <200901251838.n0PIcgXk024858@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jeff
Date: Sun Jan 25 18:38:42 2009
New Revision: 187693
URL: http://svn.freebsd.org/changeset/base/187693

Log:
   - bit has to be fd_mask to work properly on 64bit platforms.  Constants
     must also be cast even though the result ultimately is promoted
     to 64bit.
   - Correct a loop index upper bound in selscan().

Modified:
  head/sys/kern/sys_generic.c

Modified: head/sys/kern/sys_generic.c
==============================================================================
--- head/sys/kern/sys_generic.c	Sun Jan 25 18:20:15 2009	(r187692)
+++ head/sys/kern/sys_generic.c	Sun Jan 25 18:38:42 2009	(r187693)
@@ -965,8 +965,8 @@ selrescan(struct thread *td, fd_mask **i
 	struct selfd *sfp;
 	struct selfd *sfn;
 	struct file *fp;
-	int fd, ev, n;
-	int idx, bit;
+	fd_mask bit;
+	int fd, ev, n, idx;
 
 	fdp = td->td_proc->p_fd;
 	stp = td->td_sel;
@@ -984,7 +984,7 @@ selrescan(struct thread *td, fd_mask **i
 			return (EBADF);
 		}
 		idx = fd / NFDBITS;
-		bit = 1 << (fd % NFDBITS);
+		bit = (fd_mask)1 << (fd % NFDBITS);
 		ev = fo_poll(fp, selflags(ibits, idx, bit), td->td_ucred, td);
 		if (ev != 0)
 			n += selsetbits(ibits, obits, idx, bit, ev);
@@ -1007,13 +1007,14 @@ selscan(td, ibits, obits, nfd)
 {
 	struct filedesc *fdp;
 	struct file *fp;
+	fd_mask bit;
 	int ev, flags, end, fd;
-	int n, idx, bit;
+	int n, idx;
 
 	fdp = td->td_proc->p_fd;
 	n = 0;
 	FILEDESC_SLOCK(fdp);
-	for (idx = 0, fd = 0; idx < nfd; idx++) {
+	for (idx = 0, fd = 0; fd < nfd; idx++) {
 		end = imin(fd + NFDBITS, nfd);
 		for (bit = 1; fd < end; bit <<= 1, fd++) {
 			/* Compute the list of events we're interested in. */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901251838.n0PIcgXk024858>