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

Commit 39d95b9d authored by Jonathan Corbet's avatar Jonathan Corbet
Browse files

tty: cdev lock_kernel() pushdown

Parts of the serial code actually BUG() if we don't do this.
parent c43ef174
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -2665,7 +2665,7 @@ static void release_dev(struct file *filp)
 *		 ->siglock protects ->signal/->sighand
 */

static int tty_open(struct inode *inode, struct file *filp)
static int __tty_open(struct inode *inode, struct file *filp)
{
	struct tty_struct *tty;
	int noctty, retval;
@@ -2779,6 +2779,19 @@ static int tty_open(struct inode *inode, struct file *filp)
	return 0;
}

/* BKL pushdown: scary code avoidance wrapper */
static int tty_open(struct inode *inode, struct file *filp)
{
	int ret;

	lock_kernel();
	ret = __tty_open(inode, filp);
	unlock_kernel();
	return ret;
}



#ifdef CONFIG_UNIX98_PTYS
/**
 *	ptmx_open		-	open a unix 98 pty master
@@ -2792,7 +2805,7 @@ static int tty_open(struct inode *inode, struct file *filp)
 *		allocated_ptys_lock handles the list of free pty numbers
 */

static int ptmx_open(struct inode *inode, struct file *filp)
static int __ptmx_open(struct inode *inode, struct file *filp)
{
	struct tty_struct *tty;
	int retval;
@@ -2831,6 +2844,16 @@ static int ptmx_open(struct inode *inode, struct file *filp)
	devpts_kill_index(index);
	return retval;
}

static int ptmx_open(struct inode *inode, struct file *filp)
{
	int ret;

	lock_kernel();
	ret = __ptmx_open(inode, filp);
	unlock_kernel();
	return ret;
}
#endif

/**