• Thadeu Lima de Souza Cascardo's avatar
    jsm: remove buggy write queue · 9d898966
    Thadeu Lima de Souza Cascardo authored
    jsm uses a write queue that copies from uart_core circular buffer. This
    copying however has some bugs, like not wrapping the head counter. Since
    this write queue is also a circular buffer, the consumer function is
    ready to use the uart_core circular buffer directly.
    
    This buggy copying function was making some bytes be dropped when
    transmitting to a raw tty, doing something like this.
    
    [root@hostname ~]$ cat /dev/ttyn1 > cascardo/dump &
    [1] 2658
    [root@hostname ~]$ cat /proc/tty/drivers > /dev/ttyn0
    [root@hostname ~]$ cat /proc/tty/drivers
    /dev/tty             /dev/tty        5       0 system:/dev/tty
    /dev/console         /dev/console    5       1 system:console
    /dev/ptmx            /dev/ptmx       5       2 system
    /dev/vc/0            /dev/vc/0       4       0 system:vtmaster
    jsm                  /dev/ttyn     250 0-31 serial
    serial               /dev/ttyS       4 64-95 serial
    hvc                  /dev/hvc      229 0-7 system
    pty_slave            /dev/pts      136 0-1048575 pty:slave
    pty_master           /dev/ptm      128 0-1048575 pty:master
    unknown              /dev/tty        4 1-63 console
    [root@hostname ~]$ cat cascardo/dump
    /dev/tty             /dev/tty        5       0 system:/dev/tty
    /dev/console         /dev/console    5       1 system:console
    /dev/ptmx            /dev/ptmx       5       2 system
    /dev/vc/0            /dev/vc/0       4       0 system:vtmaste[root@hostname ~]$
    
    This patch drops the driver write queue entirely, using the circular
    buffer from uart_core only.
    Signed-off-by: default avatarThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    9d898966
jsm_tty.c 20.8 KB