|
@@ -3770,7 +3770,9 @@ int tty_register_driver(struct tty_driver *driver)
|
|
if (!driver->put_char)
|
|
if (!driver->put_char)
|
|
driver->put_char = tty_default_put_char;
|
|
driver->put_char = tty_default_put_char;
|
|
|
|
|
|
|
|
+ mutex_lock(&tty_mutex);
|
|
list_add(&driver->tty_drivers, &tty_drivers);
|
|
list_add(&driver->tty_drivers, &tty_drivers);
|
|
|
|
+ mutex_unlock(&tty_mutex);
|
|
|
|
|
|
if ( !(driver->flags & TTY_DRIVER_DYNAMIC_DEV) ) {
|
|
if ( !(driver->flags & TTY_DRIVER_DYNAMIC_DEV) ) {
|
|
for(i = 0; i < driver->num; i++)
|
|
for(i = 0; i < driver->num; i++)
|
|
@@ -3796,8 +3798,9 @@ int tty_unregister_driver(struct tty_driver *driver)
|
|
|
|
|
|
unregister_chrdev_region(MKDEV(driver->major, driver->minor_start),
|
|
unregister_chrdev_region(MKDEV(driver->major, driver->minor_start),
|
|
driver->num);
|
|
driver->num);
|
|
-
|
|
|
|
|
|
+ mutex_lock(&tty_mutex);
|
|
list_del(&driver->tty_drivers);
|
|
list_del(&driver->tty_drivers);
|
|
|
|
+ mutex_unlock(&tty_mutex);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Free the termios and termios_locked structures because
|
|
* Free the termios and termios_locked structures because
|