Hi Imre, On 12/12/2014 11:38 AM, Imre Deak wrote: > System console drivers (without the CON_DRIVER_FLAG_MODULE flag) and > busy drivers bound to a console (as reported by con_is_bound()) > shouldn't be unregistered. The current code checks for the > CON_DRIVER_FLAG_INIT flag but this doesn't really correspond to either > of the above two conditions. CON_DRIVER_FLAG_INIT is set whenever its > associated console's con_startup() function is called, which first > happens when the console driver is registered (so before the console > gets bound) and gets cleared when the console gets unbound. The > purpose of this flag is to show if we need to call con_startup() on a > console before we use it. > > Based on the above, do_unregister_con_driver() in its current form will > incorrectly allow unregistering a console driver only if it was never > bound, but will refuse to unregister one that was bound and later > unbound. It will also allow unregistering a system console driver. > > Fix this by checking for CON_DRIVER_FLAG_MODULE to refuse unregistering > a system console driver and relying on the existing con_is_bound() check > earlier in the function to refuse unregistering a busy console driver.
Maybe reword these two paragraphs? "Allow non-system console drivers to unregister, and prevent system console drivers from unregistering." Regards, Peter Hurley > Signed-off-by: Imre Deak <imre.d...@intel.com> > --- > drivers/tty/vt/vt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c > index b33b00b..1862e89 100644 > --- a/drivers/tty/vt/vt.c > +++ b/drivers/tty/vt/vt.c > @@ -3660,7 +3660,7 @@ int do_unregister_con_driver(const struct consw *csw) > struct con_driver *con_driver = ®istered_con_driver[i]; > > if (con_driver->con == csw && > - con_driver->flag & CON_DRIVER_FLAG_INIT) { > + con_driver->flag & CON_DRIVER_FLAG_MODULE) { > vtconsole_deinit_device(con_driver); > device_destroy(vtconsole_class, > MKDEV(0, con_driver->node)); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/