diff options
author | phk <phk@FreeBSD.org> | 2005-03-31 12:19:44 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-03-31 12:19:44 +0000 |
commit | 7af1e31761f34e698cdf576e46c042b327f5a612 (patch) | |
tree | 3f79498c2fd283a3ff468ae4f9116e9f395f4fa7 /sys/kern/tty_pty.c | |
parent | bf21be6c028410767b09b4755acb72b254e317d8 (diff) | |
download | FreeBSD-src-7af1e31761f34e698cdf576e46c042b327f5a612.zip FreeBSD-src-7af1e31761f34e698cdf576e46c042b327f5a612.tar.gz |
Explicitly hold a reference to the cdev we have just cloned. This
closes the race where the cdev was reclaimed before it ever made it
back to devfs lookup.
Diffstat (limited to 'sys/kern/tty_pty.c')
-rw-r--r-- | sys/kern/tty_pty.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c index 21d47e2..3a53294 100644 --- a/sys/kern/tty_pty.c +++ b/sys/kern/tty_pty.c @@ -710,6 +710,7 @@ pty_clone(void *arg, char *name, int namelen, struct cdev **dev) return; *dev = make_dev(&ptc_cdevsw, u, UID_ROOT, GID_WHEEL, 0666, "pty%c%r", names[u / 32], u % 32); + dev_ref(*dev); (*dev)->si_flags |= SI_CHEAPCLONE; return; } |