lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 155/218] serial: st-asc: Sanitize CSIZE and correct PARENB for CS7
    Date
    From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

    [ Upstream commit 52bb1cb7118564166b04d52387bd8403632f5190 ]

    Only CS7 and CS8 seem supported but CSIZE is not sanitized from CS5 or
    CS6 to CS8. In addition, ASC_CTL_MODE_7BIT_PAR suggests that CS7 has
    to have parity, thus add PARENB.

    Incorrect CSIZE results in miscalculation of the frame bits in
    tty_get_char_size() or in its predecessor where the roughly the same
    code is directly within uart_update_timeout().

    Fixes: c4b058560762 (serial:st-asc: Add ST ASC driver.)
    Cc: Srinivas Kandagatla <srinivas.kandagatla@st.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220519081808.3776-8-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/tty/serial/st-asc.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/drivers/tty/serial/st-asc.c b/drivers/tty/serial/st-asc.c
    index b313a792b149..44d52c087c56 100644
    --- a/drivers/tty/serial/st-asc.c
    +++ b/drivers/tty/serial/st-asc.c
    @@ -545,10 +545,14 @@ static void asc_set_termios(struct uart_port *port, struct ktermios *termios,
    /* set character length */
    if ((cflag & CSIZE) == CS7) {
    ctrl_val |= ASC_CTL_MODE_7BIT_PAR;
    + cflag |= PARENB;
    } else {
    ctrl_val |= (cflag & PARENB) ? ASC_CTL_MODE_8BIT_PAR :
    ASC_CTL_MODE_8BIT;
    + cflag &= ~CSIZE;
    + cflag |= CS8;
    }
    + termios->c_cflag = cflag;

    /* set stop bit */
    ctrl_val |= (cflag & CSTOPB) ? ASC_CTL_STOP_2BIT : ASC_CTL_STOP_1BIT;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 13:03    [W:4.254 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site