Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fcntl(F_SETFL) invokes the FIONBIO and FIOASYNC ioctls internally, so
the memory devices (/dev/null, /dev/zero, etc) need to permit them.

problem noted, tweak, and testing by jeremy@
ok deraadt@
  • Loading branch information
guenther committed Dec 14, 2017
1 parent 671f325 commit c2a35b3
Show file tree
Hide file tree
Showing 12 changed files with 108 additions and 12 deletions.
10 changes: 9 additions & 1 deletion sys/arch/alpha/alpha/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/amd64/amd64/mem.c
@@ -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
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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:
Expand Down
10 changes: 9 additions & 1 deletion sys/arch/arm/arm/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/arm64/arm64/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/hppa/hppa/mem.c
@@ -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
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/i386/i386/mem.c
@@ -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
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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:
Expand Down
10 changes: 9 additions & 1 deletion sys/arch/m88k/m88k/mem.c
@@ -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.
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/macppc/macppc/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/mips64/mips64/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/sh/sh/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}

Expand Down
10 changes: 9 additions & 1 deletion sys/arch/socppc/socppc/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}
10 changes: 9 additions & 1 deletion sys/arch/sparc64/sparc64/mem.c
@@ -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 $ */

/*
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}

0 comments on commit c2a35b3

Please sign in to comment.