aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/snp
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2004-09-24 08:12:41 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2004-09-24 08:12:41 +0000
commit969d098b0f5106557a98299972f56424bcd0838a (patch)
tree572cca4c1b81538ce656a5490678b6a185db5edd /sys/dev/snp
parent9fb3aed0f65490f3568fc27737e334401d880b59 (diff)
downloadsrc-969d098b0f5106557a98299972f56424bcd0838a.tar.gz
src-969d098b0f5106557a98299972f56424bcd0838a.zip
Hold thread reference while we frob cdevsw.
Notes
Notes: svn path=/head/; revision=135724
Diffstat (limited to 'sys/dev/snp')
-rw-r--r--sys/dev/snp/snp.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/dev/snp/snp.c b/sys/dev/snp/snp.c
index 6103a5d651f3..a414d7c5fec3 100644
--- a/sys/dev/snp/snp.c
+++ b/sys/dev/snp/snp.c
@@ -184,11 +184,17 @@ snpdevtotty(dev)
struct cdev *dev;
{
struct cdevsw *cdp;
+ struct tty *tp;
- cdp = devsw(dev);
- if (cdp == NULL || (cdp->d_flags & D_TTY) == 0)
+ cdp = dev_refthread(dev);
+ if (cdp == NULL)
return (NULL);
- return (dev->si_tty);
+ if (!(cdp->d_flags & D_TTY))
+ tp = NULL;
+ else
+ tp = dev->si_tty;
+ dev_relthread(dev);
+ return (tp);
}
#define SNP_INPUT_BUF 5 /* This is even too much, the maximal