fcntl(F_SETFL) invokes the FIONBIO and FIOASYNC ioctls internally, so
authorguenther <guenther@openbsd.org>
Thu, 14 Dec 2017 03:30:43 +0000 (03:30 +0000)
committerguenther <guenther@openbsd.org>
Thu, 14 Dec 2017 03:30:43 +0000 (03:30 +0000)
the memory devices (/dev/null, /dev/zero, etc) need to permit them.

problem noted, tweak, and testing by jeremy@
ok deraadt@

12 files changed:
sys/arch/alpha/alpha/mem.c
sys/arch/amd64/amd64/mem.c
sys/arch/arm/arm/mem.c
sys/arch/arm64/arm64/mem.c
sys/arch/hppa/hppa/mem.c
sys/arch/i386/i386/mem.c
sys/arch/m88k/m88k/mem.c
sys/arch/macppc/macppc/mem.c
sys/arch/mips64/mips64/mem.c
sys/arch/sh/sh/mem.c
sys/arch/socppc/socppc/mem.c
sys/arch/sparc64/sparc64/mem.c

index 8dc87b3..ec29894 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: mem.c,v 1.32 2016/09/27 05:01:29 deraadt Exp $ */
+/* $OpenBSD: mem.c,v 1.33 2017/12/14 03:30:43 guenther Exp $ */
 /* $NetBSD: mem.c,v 1.26 2000/03/29 03:48:20 simonb Exp $ */
 
 /*
@@ -43,6 +43,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/proc.h>
 #include <sys/uio.h>
@@ -242,5 +243,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+       switch (cmd) {
+       case FIONBIO:
+       case FIOASYNC:
+               /* handled by fd layer */
+               return 0;
+       }
+
        return (EOPNOTSUPP);
 }
index 15e30a7..7fc09e1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.32 2017/10/14 04:44:43 jsg Exp $ */
+/*     $OpenBSD: mem.c,v 1.33 2017/12/14 03:30:43 guenther Exp $ */
 /*
  * Copyright (c) 1988 University of Utah.
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -45,6 +45,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/ioccom.h>
@@ -237,6 +238,13 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+       switch (cmd) {
+       case FIONBIO:
+       case FIOASYNC:
+               /* handled by fd layer */
+               return 0;
+       }
+
 #ifdef MTRR
        switch (minor(dev)) {
        case 0:
index c05990f..ec82d41 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.19 2016/09/25 15:23:37 deraadt Exp $        */
+/*     $OpenBSD: mem.c,v 1.20 2017/12/14 03:30:43 guenther Exp $       */
 /*     $NetBSD: mem.c,v 1.11 2003/10/16 12:02:58 jdolecek Exp $        */
 
 /*
@@ -76,6 +76,7 @@
 #include <sys/param.h>
 #include <sys/conf.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
@@ -246,5 +247,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index 1de1c9a..5b2cb6b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.2 2017/01/23 12:29:50 kettenis Exp $        */
+/*     $OpenBSD: mem.c,v 1.3 2017/12/14 03:30:43 guenther Exp $        */
 /*     $NetBSD: mem.c,v 1.11 2003/10/16 12:02:58 jdolecek Exp $        */
 
 /*
@@ -76,6 +76,7 @@
 #include <sys/param.h>
 #include <sys/conf.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
@@ -246,5 +247,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index f903e9a..785ad2b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.3 2017/09/08 05:36:51 deraadt Exp $ */
+/*     $OpenBSD: mem.c,v 1.4 2017/12/14 03:30:43 guenther Exp $        */
 
 /*
  * Copyright (c) 1998-2004 Michael Shalayeff
@@ -74,6 +74,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/malloc.h>
 #include <sys/proc.h>
 #include <sys/uio.h>
@@ -420,5 +421,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index 1db1e6e..e9af7eb 100644 (file)
@@ -1,5 +1,5 @@
 /*     $NetBSD: mem.c,v 1.31 1996/05/03 19:42:19 christos Exp $        */
-/*     $OpenBSD: mem.c,v 1.52 2017/04/20 14:13:00 visa Exp $ */
+/*     $OpenBSD: mem.c,v 1.53 2017/12/14 03:30:43 guenther Exp $ */
 /*
  * Copyright (c) 1988 University of Utah.
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -42,6 +42,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/ioccom.h>
@@ -250,6 +251,13 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
 #ifdef MTRR
        switch (minor(dev)) {
        case 0:
index 93167c2..5ccc2d5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.5 2016/09/25 15:23:37 deraadt Exp $ */
+/*     $OpenBSD: mem.c,v 1.6 2017/12/14 03:30:43 guenther Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -42,6 +42,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
@@ -164,5 +165,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index e84f574..0ea44c3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.25 2017/09/08 05:36:52 deraadt Exp $        */
+/*     $OpenBSD: mem.c,v 1.26 2017/12/14 03:30:43 guenther Exp $       */
 /*     $NetBSD: mem.c,v 1.1 1996/09/30 16:34:50 ws Exp $ */
 
 /*
@@ -43,6 +43,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/ioccom.h>
 #include <sys/uio.h>
@@ -306,5 +307,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index 28706b9..619a1dc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.22 2016/09/25 15:23:37 deraadt Exp $        */
+/*     $OpenBSD: mem.c,v 1.23 2017/12/14 03:30:43 guenther Exp $       */
 /*     $NetBSD: mem.c,v 1.6 1995/04/10 11:55:03 mycroft Exp $  */
 
 /*
@@ -48,6 +48,7 @@
 #include <sys/param.h>
 #include <sys/conf.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/proc.h>
 #include <sys/msgbuf.h>
 #include <sys/systm.h>
@@ -196,5 +197,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index 596864a..a42e0cd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.9 2016/09/25 15:23:37 deraadt Exp $ */
+/*     $OpenBSD: mem.c,v 1.10 2017/12/14 03:30:43 guenther Exp $       */
 /*     $NetBSD: mem.c,v 1.21 2006/07/23 22:06:07 ad Exp $      */
 
 /*
@@ -83,6 +83,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
 #include <sys/proc.h>
@@ -221,6 +222,13 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
 
index c945099..109790a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.7 2017/09/08 05:36:52 deraadt Exp $ */
+/*     $OpenBSD: mem.c,v 1.8 2017/12/14 03:30:43 guenther Exp $        */
 /*     $NetBSD: mem.c,v 1.1 1996/09/30 16:34:50 ws Exp $ */
 
 /*
@@ -43,6 +43,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/ioccom.h>
 #include <sys/uio.h>
@@ -172,5 +173,12 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }
index d4780e5..f4deaa4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.18 2016/09/25 15:23:37 deraadt Exp $        */
+/*     $OpenBSD: mem.c,v 1.19 2017/12/14 03:30:43 guenther Exp $       */
 /*     $NetBSD: mem.c,v 1.18 2001/04/24 04:31:12 thorpej Exp $ */
 
 /*
@@ -43,6 +43,7 @@
 
 #include <sys/param.h>
 #include <sys/buf.h>
+#include <sys/filio.h>
 #include <sys/systm.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
@@ -193,6 +194,13 @@ mmmmap(dev_t dev, off_t off, int prot)
 int
 mmioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
 {
+        switch (cmd) {
+        case FIONBIO:
+        case FIOASYNC:
+                /* handled by fd layer */
+                return 0;
+        }
+
        return (EOPNOTSUPP);
 }