Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95810
b: refs/heads/master
c: bf7da7b
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed May 1, 2008
1 parent e181293 commit 9d5a9eb
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 74d92abc6143b124db03f0d341f02bde72fba6f5
refs/heads/master: bf7da7bcfb38409b4cdea34b0905bdf344f1b36d
55 changes: 9 additions & 46 deletions trunk/arch/mips/kernel/irixioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,33 +27,6 @@ struct irix_termios {
cc_t c_cc[NCCS];
};

extern void start_tty(struct tty_struct *tty);
static struct tty_struct *get_tty(int fd)
{
struct file *filp;
struct tty_struct *ttyp = NULL;

rcu_read_lock();
filp = fcheck(fd);
if(filp && filp->private_data) {
ttyp = (struct tty_struct *) filp->private_data;

if(ttyp->magic != TTY_MAGIC)
ttyp =NULL;
}
rcu_read_unlock();
return ttyp;
}

static struct tty_struct *get_real_tty(struct tty_struct *tp)
{
if (tp->driver->type == TTY_DRIVER_TYPE_PTY &&
tp->driver->subtype == PTY_TYPE_MASTER)
return tp->link;
else
return tp;
}

asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
{
struct tty_struct *tp, *rtp;
Expand Down Expand Up @@ -146,34 +119,24 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
error = sys_ioctl(fd, TIOCNOTTY, arg);
break;

case 0x00007416:
case 0x00007416: {
pid_t pid;
#ifdef DEBUG_IOCTLS
printk("TIOCGSID, %08lx) ", arg);
#endif
tp = get_tty(fd);
if(!tp) {
error = -EINVAL;
break;
}
rtp = get_real_tty(tp);
#ifdef DEBUG_IOCTLS
printk("rtp->session=%d ", rtp->session);
#endif
error = put_user(rtp->session, (unsigned long __user *) arg);
old_fs = get_fs(); set_fs(get_ds());
error = sys_ioctl(fd, TIOCGSID, (unsigned long)&pid);
set_fs(old_fs);
if (!error)
error = put_user(pid, (unsigned long __user *) arg);
break;

}
case 0x746e:
/* TIOCSTART, same effect as hitting ^Q */
#ifdef DEBUG_IOCTLS
printk("TIOCSTART, %08lx) ", arg);
#endif
tp = get_tty(fd);
if(!tp) {
error = -EINVAL;
break;
}
rtp = get_real_tty(tp);
start_tty(rtp);
error = sys_ioctl(fd, TCXONC, TCOON);
break;

case 0x20006968:
Expand Down

0 comments on commit 9d5a9eb

Please sign in to comment.