tty/n_gsm: fix bug in tiocmset
authorNikola Diklic-Perin <diklic.perin.nikola@gmail.com>
Fri, 23 Sep 2011 08:59:43 +0000 (10:59 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 26 Sep 2011 23:38:44 +0000 (16:38 -0700)
Clear bitmask was not inverted before masking modem_tx.

Calling ioctl(fd, TIOCMBIC, TIOCM_RTS) results in:

[  197.430000] pre_modem_tx: 0x00000006
[  197.430000] clear: 0x00000004
[  197.430000] set: 0x00000000
[  197.440000] post_modem_tx: 0x00000004

which is wrong.

Signed-off-by: Nikola Diklic-Perin <diklic.perin.nikola@gmail.com>
Acked-by: Alan Cox <alan@linx.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/tty/n_gsm.c

index 8d7766bfef87a18d70ad7b2cdcf7dd25048c9bf9..da3b31a986548afb9eb8f50e8f0af366e1d04d4e 100644 (file)
@@ -2989,7 +2989,7 @@ static int gsmtty_tiocmset(struct tty_struct *tty,
        struct gsm_dlci *dlci = tty->driver_data;
        unsigned int modem_tx = dlci->modem_tx;
 
-       modem_tx &= clear;
+       modem_tx &= ~clear;
        modem_tx |= set;
 
        if (modem_tx != dlci->modem_tx) {