diff options
author | trasz <trasz@FreeBSD.org> | 2015-08-04 10:40:08 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2015-08-04 10:40:08 +0000 |
commit | 33d415d265b19b6be3c2393c106b7e49e538dbfe (patch) | |
tree | e5e7d90aded624e61dc0a64b9ae4ea9c03fe69d6 | |
parent | 8375b98de4c421f80c369722ba6bed7ea63aab2f (diff) | |
download | FreeBSD-src-33d415d265b19b6be3c2393c106b7e49e538dbfe.zip FreeBSD-src-33d415d265b19b6be3c2393c106b7e49e538dbfe.tar.gz |
Fix panic triggered by code like this:
open("/dev/md0", O_EXEC);
Discussed with: kib@, mav@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3051
-rw-r--r-- | sys/geom/geom_dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/geom/geom_dev.c b/sys/geom/geom_dev.c index 3df7f3e..0d34ef5 100644 --- a/sys/geom/geom_dev.c +++ b/sys/geom/geom_dev.c @@ -358,6 +358,13 @@ g_dev_open(struct cdev *dev, int flags, int fmt, struct thread *td) #else e = 0; #endif + + /* + * This happens on attempt to open a device node with O_EXEC. + */ + if (r + w + e == 0) + return (EINVAL); + if (w) { /* * When running in very secure mode, do not allow |