diff options
| -rw-r--r-- | drivers/tty/vt/vt.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index ea600f482eeb..5077fe87324d 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c | |||
| @@ -3573,17 +3573,20 @@ err: | |||
| 3573 | */ | 3573 | */ |
| 3574 | int do_unregister_con_driver(const struct consw *csw) | 3574 | int do_unregister_con_driver(const struct consw *csw) |
| 3575 | { | 3575 | { |
| 3576 | int i, retval = -ENODEV; | 3576 | int i; |
| 3577 | 3577 | ||
| 3578 | /* cannot unregister a bound driver */ | 3578 | /* cannot unregister a bound driver */ |
| 3579 | if (con_is_bound(csw)) | 3579 | if (con_is_bound(csw)) |
| 3580 | goto err; | 3580 | return -EBUSY; |
| 3581 | |||
| 3582 | if (csw == conswitchp) | ||
| 3583 | return -EINVAL; | ||
| 3581 | 3584 | ||
| 3582 | for (i = 0; i < MAX_NR_CON_DRIVER; i++) { | 3585 | for (i = 0; i < MAX_NR_CON_DRIVER; i++) { |
| 3583 | struct con_driver *con_driver = ®istered_con_driver[i]; | 3586 | struct con_driver *con_driver = ®istered_con_driver[i]; |
| 3584 | 3587 | ||
| 3585 | if (con_driver->con == csw && | 3588 | if (con_driver->con == csw && |
| 3586 | con_driver->flag & CON_DRIVER_FLAG_MODULE) { | 3589 | con_driver->flag & CON_DRIVER_FLAG_INIT) { |
| 3587 | vtconsole_deinit_device(con_driver); | 3590 | vtconsole_deinit_device(con_driver); |
| 3588 | device_destroy(vtconsole_class, | 3591 | device_destroy(vtconsole_class, |
| 3589 | MKDEV(0, con_driver->node)); | 3592 | MKDEV(0, con_driver->node)); |
| @@ -3594,12 +3597,11 @@ int do_unregister_con_driver(const struct consw *csw) | |||
| 3594 | con_driver->flag = 0; | 3597 | con_driver->flag = 0; |
| 3595 | con_driver->first = 0; | 3598 | con_driver->first = 0; |
| 3596 | con_driver->last = 0; | 3599 | con_driver->last = 0; |
| 3597 | retval = 0; | 3600 | return 0; |
| 3598 | break; | ||
| 3599 | } | 3601 | } |
| 3600 | } | 3602 | } |
| 3601 | err: | 3603 | |
| 3602 | return retval; | 3604 | return -ENODEV; |
| 3603 | } | 3605 | } |
| 3604 | EXPORT_SYMBOL_GPL(do_unregister_con_driver); | 3606 | EXPORT_SYMBOL_GPL(do_unregister_con_driver); |
| 3605 | 3607 | ||
