summaryrefslogtreecommitdiffstats
path: root/sys/isa
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1995-04-13 11:11:11 +0000
committerache <ache@FreeBSD.org>1995-04-13 11:11:11 +0000
commitfdacac9026b1aa66b01fab9a5394fe2f9f49aa65 (patch)
treead11228f46e18f4de11967fbd62b3b80c989ad70 /sys/isa
parent8e8b125da97c80f30ce95c7a17fac7cda8203951 (diff)
downloadFreeBSD-src-fdacac9026b1aa66b01fab9a5394fe2f9f49aa65.zip
FreeBSD-src-fdacac9026b1aa66b01fab9a5394fe2f9f49aa65.tar.gz
Move setcompat code to another place, initial/locked devices
not supposed to work with old style ioctls
Diffstat (limited to 'sys/isa')
-rw-r--r--sys/isa/sio.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/sys/isa/sio.c b/sys/isa/sio.c
index a3c8f2e..f652839 100644
--- a/sys/isa/sio.c
+++ b/sys/isa/sio.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
- * $Id: sio.c,v 1.91 1995/04/12 22:00:41 phk Exp $
+ * $Id: sio.c,v 1.92 1995/04/13 09:22:40 ache Exp $
*/
#include "sio.h"
@@ -1286,7 +1286,6 @@ sioioctl(dev, cmd, data, flag, p)
int s;
int tiocm_xxx;
struct tty *tp;
- struct termios *ct;
#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
struct termios term;
int oldcmd;
@@ -1295,9 +1294,9 @@ sioioctl(dev, cmd, data, flag, p)
mynor = minor(dev);
com = com_addr(MINOR_TO_UNIT(mynor));
iobase = com->iobase;
- tp = com->tp;
- ct = NULL;
if (mynor & CONTROL_MASK) {
+ struct termios *ct;
+
switch (mynor & CONTROL_MASK) {
case CONTROL_INIT_STATE:
ct = mynor & CALLOUT_MASK ? &com->it_out : &com->it_in;
@@ -1308,16 +1307,6 @@ sioioctl(dev, cmd, data, flag, p)
default:
return (ENODEV); /* /dev/nodev */
}
- }
-#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
- term = ct != NULL ? *ct : tp->t_termios;
- oldcmd = cmd;
- if ((error = ttsetcompat(tp, &cmd, data, &term)) != 0)
- return error;
- if (cmd != oldcmd)
- data = (caddr_t)&term;
-#endif
- if (mynor & CONTROL_MASK) {
switch (cmd) {
case TIOCSETA:
error = suser(p->p_ucred, &p->p_acflag);
@@ -1366,6 +1355,15 @@ sioioctl(dev, cmd, data, flag, p)
return (ENOTTY);
}
}
+ tp = com->tp;
+#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
+ term = tp->t_termios;
+ oldcmd = cmd;
+ if ((error = ttsetcompat(tp, &cmd, data, &term)) != 0)
+ return error;
+ if (cmd != oldcmd)
+ data = (caddr_t)&term;
+#endif
if (cmd == TIOCSETA || cmd == TIOCSETAW || cmd == TIOCSETAF) {
int cc;
struct termios *dt = (struct termios *)data;
OpenPOWER on IntegriCloud