mirror of https://gitee.com/openkylin/linux.git
vt: hold console_sem across sysfs operations
Hold console sem while creating/destroying sysfs files. Serialisation is so far done by BKL held in tty release_dev and chrdev_open, but no other locks are held in open path. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Aristeu Rozanski <aris@ruivo.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
bbe48ecc7f
commit
e0426e6a09
|
@ -2749,8 +2749,8 @@ static int con_open(struct tty_struct *tty, struct file *filp)
|
||||||
tty->termios->c_iflag |= IUTF8;
|
tty->termios->c_iflag |= IUTF8;
|
||||||
else
|
else
|
||||||
tty->termios->c_iflag &= ~IUTF8;
|
tty->termios->c_iflag &= ~IUTF8;
|
||||||
release_console_sem();
|
|
||||||
vcs_make_sysfs(tty);
|
vcs_make_sysfs(tty);
|
||||||
|
release_console_sem();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2775,8 +2775,8 @@ static void con_close(struct tty_struct *tty, struct file *filp)
|
||||||
if (vc)
|
if (vc)
|
||||||
vc->vc_tty = NULL;
|
vc->vc_tty = NULL;
|
||||||
tty->driver_data = NULL;
|
tty->driver_data = NULL;
|
||||||
release_console_sem();
|
|
||||||
vcs_remove_sysfs(tty);
|
vcs_remove_sysfs(tty);
|
||||||
|
release_console_sem();
|
||||||
mutex_unlock(&tty_mutex);
|
mutex_unlock(&tty_mutex);
|
||||||
/*
|
/*
|
||||||
* tty_mutex is released, but we still hold BKL, so there is
|
* tty_mutex is released, but we still hold BKL, so there is
|
||||||
|
|
Loading…
Reference in New Issue