pcmcia: synclink_cs: Don't allow CS5-6
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Thu, 19 May 2022 08:18:08 +0000 (11:18 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2022 16:32:40 +0000 (18:32 +0200)
Only CS7 and CS8 seem supported but CSIZE was not sanitized in termios
c_cflag. The driver sets 7 bits whenever data_bits is not 8 so default
to CS7 when CSIZE is not CS8.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20220519081808.3776-10-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/pcmcia/synclink_cs.c

index c20f2cb784e86659c09ee48d0c73e38c63ef142c..0daf1bc95360453d1201329218e437ab8e750535 100644 (file)
@@ -1418,7 +1418,11 @@ static void mgslpc_change_params(MGSLPC_INFO *info, struct tty_struct *tty)
                info->serial_signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
 
        /* byte size and parity */
-
+       if ((cflag & CSIZE) != CS8) {
+               cflag &= ~CSIZE;
+               cflag |= CS7;
+               tty->termios.c_cflag = cflag;
+       }
        info->params.data_bits = tty_get_char_size(cflag);
 
        if (cflag & CSTOPB)