• Johan Hovold's avatar
    serial: core: fix console port-lock regression · e0830dbf
    Johan Hovold authored
    Fix the port-lock initialisation regression introduced by commit
    a3cb39d2 ("serial: core: Allow detach and attach serial device for
    console") by making sure that the lock is again initialised during
    console setup.
    
    The console may be registered before the serial controller has been
    probed in which case the port lock needs to be initialised during
    console setup by a call to uart_set_options(). The console-detach
    changes introduced a regression in several drivers by effectively
    removing that initialisation by not initialising the lock when the port
    is used as a console (which is always the case during console setup).
    
    Add back the early lock initialisation and instead use a new
    console-reinit flag to handle the case where a console is being
    re-attached through sysfs.
    
    The question whether the console-detach interface should have been added
    in the first place is left for another discussion.
    
    Note that the console-enabled check in uart_set_options() is not
    redundant because of kgdboc, which can end up reinitialising an already
    enabled console (see commit 42b6a1ba ("serial_core: Don't
    re-initialize a previously initialized spinlock.")).
    
    Fixes: a3cb39d2 ("serial: core: Allow detach and attach serial device for console")
    Cc: stable <stable@vger.kernel.org>     # 5.7
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20200909143101.15389-3-johan@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e0830dbf
serial_core.c 79.8 KB