diff mbox series

[2/9] serial: digicolor-usart: Don't allow CS5-6

Message ID 20220517110737.37148-3-ilpo.jarvinen@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series None | expand

Commit Message

Ilpo Järvinen May 17, 2022, 11:07 a.m. UTC
Only CS7 and CS8 seem supported but CSIZE is not sanitized to CS8 in
the default: block.

Set CSIZE correctly so that userspace knows the effective value.
Incorrect CSIZE also 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().

Cc: Baruch Siach <baruch@tkos.co.il>
Fixes: 5930cb3511df (serial: driver for Conexant Digicolor USART)
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/tty/serial/digicolor-usart.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Baruch Siach May 18, 2022, 4:16 a.m. UTC | #1
Hi Ilpo,

On Tue, May 17 2022, Ilpo Järvinen wrote:
> Only CS7 and CS8 seem supported but CSIZE is not sanitized to CS8 in
> the default: block.
>
> Set CSIZE correctly so that userspace knows the effective value.
> Incorrect CSIZE also 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().
>
> Cc: Baruch Siach <baruch@tkos.co.il>
> Fixes: 5930cb3511df (serial: driver for Conexant Digicolor USART)
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

Acked-by: Baruch Siach <baruch@tkos.co.il>

Thanks,
baruch

> ---
>  drivers/tty/serial/digicolor-usart.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/serial/digicolor-usart.c b/drivers/tty/serial/digicolor-usart.c
> index 6d70fea76bb3..65e653eb5026 100644
> --- a/drivers/tty/serial/digicolor-usart.c
> +++ b/drivers/tty/serial/digicolor-usart.c
> @@ -309,6 +309,8 @@ static void digicolor_uart_set_termios(struct uart_port *port,
>  	case CS8:
>  	default:
>  		config |= UA_CONFIG_CHAR_LEN;
> +		termios->c_cflag &= ~CSIZE;
> +		termios->c_cflag |= CS8;
>  		break;
>  	}
diff mbox series

Patch

diff --git a/drivers/tty/serial/digicolor-usart.c b/drivers/tty/serial/digicolor-usart.c
index 6d70fea76bb3..65e653eb5026 100644
--- a/drivers/tty/serial/digicolor-usart.c
+++ b/drivers/tty/serial/digicolor-usart.c
@@ -309,6 +309,8 @@  static void digicolor_uart_set_termios(struct uart_port *port,
 	case CS8:
 	default:
 		config |= UA_CONFIG_CHAR_LEN;
+		termios->c_cflag &= ~CSIZE;
+		termios->c_cflag |= CS8;
 		break;
 	}