lkml.org 
[lkml]   [2022]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 67/84] serial: 8250: Store to lsr_save_flags after lsr read
    Date
    From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

    commit be03b0651ffd8bab69dfd574c6818b446c0753ce upstream.

    Not all LSR register flags are preserved across reads. Therefore, LSR
    readers must store the non-preserved bits into lsr_save_flags.

    This fix was initially mixed into feature commit f6f586102add ("serial:
    8250: Handle UART without interrupt on TEMT using em485"). However,
    that feature change had a flaw and it was reverted to make room for
    simpler approach providing the same feature. The embedded fix got
    reverted with the feature change.

    Re-add the lsr_save_flags fix and properly mark it's a fix.

    Link: https://lore.kernel.org/all/1d6c31d-d194-9e6a-ddf9-5f29af829f3@linux.intel.com/T/#m1737eef986bd20cf19593e344cebd7b0244945fc
    Fixes: e490c9144cfa ("tty: Add software emulated RS485 support for 8250")
    Cc: stable <stable@kernel.org>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@penugtronix.de>
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/f4d774be-1437-a550-8334-19d8722ab98c@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/tty/serial/8250/8250_port.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/tty/serial/8250/8250_port.c
    +++ b/drivers/tty/serial/8250/8250_port.c
    @@ -1532,6 +1532,8 @@ static inline void __stop_tx(struct uart

    if (em485) {
    unsigned char lsr = serial_in(p, UART_LSR);
    + p->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
    +
    /*
    * To provide required timeing and allow FIFO transfer,
    * __stop_tx_rs485() must be called only when both FIFO and

    \
     
     \ /
      Last update: 2022-06-20 15:16    [W:4.944 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site