From owner-cvs-src-old@FreeBSD.ORG Sat Aug 28 17:42:23 2010 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68D7410656C3 for ; Sat, 28 Aug 2010 17:42:23 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 579E28FC12 for ; Sat, 28 Aug 2010 17:42:23 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id o7SHgNuv026028 for ; Sat, 28 Aug 2010 17:42:23 GMT (envelope-from kib@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id o7SHgNsu026027 for cvs-src-old@freebsd.org; Sat, 28 Aug 2010 17:42:23 GMT (envelope-from kib@repoman.freebsd.org) Message-Id: <201008281742.o7SHgNsu026027@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to kib@repoman.freebsd.org using -f From: Konstantin Belousov Date: Sat, 28 Aug 2010 17:42:08 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/kern sys_generic.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Aug 2010 17:42:23 -0000 kib 2010-08-28 17:42:08 UTC FreeBSD src repository Modified files: sys/kern sys_generic.c Log: SVN rev 211941 on 2010-08-28 17:42:08Z by kib For some file types, select code registers two selfd structures. E.g., for socket, when specified POLLIN|POLLOUT in events, you would have one selfd registered for receiving socket buffer, and one for sending. Now, if both events are not ready to fire at the time of the initial scan, but are simultaneously ready after the sleep, pollrescan() would iterate over the pollfd struct twice. Since both times revents is not zero, returned value would be off by one. Fix this by recalculating the return value in pollout(). PR: kern/143029 MFC after: 2 weeks Revision Changes Path 1.182 +9 -3 src/sys/kern/sys_generic.c