Page MenuHomeFreeBSD

D17671.diff
No OneTemporary

D17671.diff

Index: head/lib/libc/sys/poll.2
===================================================================
--- head/lib/libc/sys/poll.2
+++ head/lib/libc/sys/poll.2
@@ -28,7 +28,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd November 13, 2014
+.Dd November 1, 2018
.Dt POLL 2
.Os
.Sh NAME
@@ -232,7 +232,15 @@
A signal was delivered before the time limit expired and
before any of the selected events occurred.
.It Bq Er EINVAL
-The specified time limit is invalid. One of its components is negative or too large.
+The specified time limit is invalid.
+One of its components is negative or too large.
+.It Bq Er EINVAL
+The number of pollfd structures specified by
+.Fa nfds
+exceeds the system tunable
+.Va kern.maxfilesperproc
+and
+.Dv FD_SETSIZE .
.El
.Sh SEE ALSO
.Xr accept 2 ,
Index: head/sys/kern/sys_generic.c
===================================================================
--- head/sys/kern/sys_generic.c
+++ head/sys/kern/sys_generic.c
@@ -1339,6 +1339,13 @@
} else
sbt = -1;
+ /*
+ * This is kinda bogus. We have fd limits, but that is not
+ * really related to the size of the pollfd array. Make sure
+ * we let the process use at least FD_SETSIZE entries and at
+ * least enough for the system-wide limits. We want to be reasonably
+ * safe, but not overly restrictive.
+ */
if (nfds > maxfilesperproc && nfds > FD_SETSIZE)
return (EINVAL);
if (nfds > nitems(stackfds))

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 1, 1:42 PM (9 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28379941
Default Alt Text
D17671.diff (1 KB)

Event Timeline