• Marc Zyngier's avatar
    serial: mvebu-uart: Fix local flags handling on termios update · 46c6975a
    Marc Zyngier authored
    Commit 68a0db1d reworked the baud rate selection, but also added
    a (not so) subtle change in the way the local flags (c_lflag in the
    termios structure) are handled, forcing the new flags to always be the
    same as the old ones.
    
    The reason for that particular change is both obscure and undocumented.
    It also completely breaks userspace. Something as trivial as getty is
    unusable:
    
    <example>
    	Debian GNU/Linux 9 sy-borg ttyMV0
    
    	sy-borg login: root
    	root
    	[timeout]
    
    	Debian GNU/Linux 9 sy-borg ttyMV0
    </example>
    
    which is quite obvious in retrospect: getty cannot get in control of
    the echo mode, is stuck in canonical mode, and times out without ever
    seeing anything valid. It also begs the question of how this change was
    ever tested.
    
    The fix is pretty obvious: stop messing with c_lflag, and the world
    will be a happier place.
    
    Cc: stable@vger.kernel.org # 4.15+
    Fixes: 68a0db1d ("serial: mvebu-uart: add function to change baudrate")
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    46c6975a
mvebu-uart.c 22.6 KB