Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37925e05 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

epca: lock_kernel push down



Prepare epca for removing the lock from above. Most of epca is internally
locked so we can trivially push it down to a few bits of code. Drop the TIOCG/SSOFTCAR handling as that is done *properly* with locks by the mid layer.

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7b130c0e
Loading
Loading
Loading
Loading
+2 −15
Original line number Diff line number Diff line
@@ -2206,21 +2206,6 @@ static int pc_ioctl(struct tty_struct *tty, struct file * file,
		tty_wait_until_sent(tty, 0);
		digi_send_break(ch, arg ? arg*(HZ/10) : HZ/4);
		return 0;
	case TIOCGSOFTCAR:
		if (put_user(C_CLOCAL(tty)?1:0, (unsigned long __user *)arg))
			return -EFAULT;
		return 0;
	case TIOCSSOFTCAR:
		{
			unsigned int value;

			if (get_user(value, (unsigned __user *)argp))
				return -EFAULT;
			tty->termios->c_cflag =
				((tty->termios->c_cflag & ~CLOCAL) |
				 (value ? CLOCAL : 0));
			return 0;
		}
	case TIOCMODG:
		mflag = pc_tiocmget(tty, file);
		if (put_user(mflag, (unsigned long __user *)argp))
@@ -2253,6 +2238,7 @@ static int pc_ioctl(struct tty_struct *tty, struct file * file,
		break;
	case DIGI_SETAW:
	case DIGI_SETAF:
		lock_kernel();
		if (cmd == DIGI_SETAW) {
			/* Setup an event to indicate when the transmit buffer empties */
			spin_lock_irqsave(&epca_lock, flags);
@@ -2264,6 +2250,7 @@ static int pc_ioctl(struct tty_struct *tty, struct file * file,
			if (tty->ldisc.flush_buffer)
				tty->ldisc.flush_buffer(tty);
		}
		unlock_kernel();
		/* Fall Thru */
	case DIGI_SETA:
		if (copy_from_user(&ch->digiext, argp, sizeof(digi_t)))