| From 788755c92363ef99f0f918da1db80b7ca5e9dfa2 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 19 May 2022 11:18:01 +0300 |
| Subject: serial: digicolor-usart: Don't allow CS5-6 |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> |
| |
| [ Upstream commit fd63031b8c0763addcecdefe0e0c59d49646204e ] |
| |
| 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(). |
| |
| Fixes: 5930cb3511df (serial: driver for Conexant Digicolor USART) |
| Acked-by: Baruch Siach <baruch@tkos.co.il> |
| Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> |
| Link: https://lore.kernel.org/r/20220519081808.3776-3-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/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 794864fac625..74127813e6db 100644 |
| --- a/drivers/tty/serial/digicolor-usart.c |
| +++ b/drivers/tty/serial/digicolor-usart.c |
| @@ -313,6 +313,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; |
| } |
| |
| -- |
| 2.35.1 |
| |