svn commit: r212415 - stable/8/sys/kern
Konstantin Belousov
kib at FreeBSD.org
Fri Sep 10 12:55:36 UTC 2010
Author: kib
Date: Fri Sep 10 12:55:36 2010
New Revision: 212415
URL: http://svn.freebsd.org/changeset/base/212415
Log:
MFC r211941:
Recalcule the return value in pollout().
PR: kern/143029
Tested by: John Plevyak <jplevyak apache org>
Modified:
stable/8/sys/kern/sys_generic.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/kern/sys_generic.c
==============================================================================
--- stable/8/sys/kern/sys_generic.c Fri Sep 10 12:16:24 2010 (r212414)
+++ stable/8/sys/kern/sys_generic.c Fri Sep 10 12:55:36 2010 (r212415)
@@ -76,7 +76,8 @@ static MALLOC_DEFINE(M_IOCTLOPS, "ioctlo
static MALLOC_DEFINE(M_SELECT, "select", "select() buffer");
MALLOC_DEFINE(M_IOV, "iov", "large iov's");
-static int pollout(struct pollfd *, struct pollfd *, u_int);
+static int pollout(struct thread *, struct pollfd *, struct pollfd *,
+ u_int);
static int pollscan(struct thread *, struct pollfd *, u_int);
static int pollrescan(struct thread *);
static int selscan(struct thread *, fd_mask **, fd_mask **, int);
@@ -1207,7 +1208,7 @@ done:
if (error == EWOULDBLOCK)
error = 0;
if (error == 0) {
- error = pollout(bits, uap->fds, nfds);
+ error = pollout(td, bits, uap->fds, nfds);
if (error)
goto out;
}
@@ -1262,22 +1263,27 @@ pollrescan(struct thread *td)
static int
-pollout(fds, ufds, nfd)
+pollout(td, fds, ufds, nfd)
+ struct thread *td;
struct pollfd *fds;
struct pollfd *ufds;
u_int nfd;
{
int error = 0;
u_int i = 0;
+ u_int n = 0;
for (i = 0; i < nfd; i++) {
error = copyout(&fds->revents, &ufds->revents,
sizeof(ufds->revents));
if (error)
return (error);
+ if (fds->revents != 0)
+ n++;
fds++;
ufds++;
}
+ td->td_retval[0] = n;
return (0);
}
More information about the svn-src-stable
mailing list