summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2001-03-20 13:26:13 +0000
committerphk <phk@FreeBSD.org>2001-03-20 13:26:13 +0000
commitd458a37885714323658f12d0da555473beca7c4c (patch)
tree457e5abd2f83d663d17cdc8c484a55c674c2dce8
parent74b2fb2f6943f9df0d3cb1d6fe049ae701cef3c6 (diff)
downloadFreeBSD-src-d458a37885714323658f12d0da555473beca7c4c.zip
FreeBSD-src-d458a37885714323658f12d0da555473beca7c4c.tar.gz
Make the pseudo-driver for "/dev/fd/*" handle fd's larger than 255.
PR: 25936
-rw-r--r--sys/kern/kern_descrip.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 4527346..79b8e41 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1315,7 +1315,7 @@ fdopen(dev, mode, type, p)
* actions in dupfdopen below. Other callers of vn_open or VOP_OPEN
* will simply report the error.
*/
- p->p_dupfd = minor(dev);
+ p->p_dupfd = dev2unit(dev);
return (ENODEV);
}
@@ -1478,6 +1478,13 @@ fildesc_clone(void *arg, char *name, int namelen, dev_t *dev)
return;
if (u <= 2)
return;
+ /* Don't clone higher than it makes sense */
+ if (u >= maxfilesperproc)
+ return;
+ /* And don't clone higher than our minors will support */
+ if (u > 0xffffff)
+ return;
+ u = unit2minor(u);
*dev = make_dev(&fildesc_cdevsw, u, UID_BIN, GID_BIN, 0666, name);
return;
}
OpenPOWER on IntegriCloud