ttydw.c: Fix single-byte reception on virtual channels
authorTormod Volden <debian.tormod@gmail.com>
Mon, 23 May 2016 21:20:28 +0000 (23:20 +0200)
committerAlan Cox <alan@etchedpixels.co.uk>
Tue, 31 May 2016 11:40:53 +0000 (12:40 +0100)
This off-by-one caused incoming single bytes from the virtual channels
to be written to the wrong tty, for example when entering an empty line
in a shell.

Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Kernel/platform-coco3/ttydw.c
Kernel/platform-dragon-nx32/ttydw.c
Kernel/platform-multicomp09/ttydw.c

index 4e6e9d9..8172f88 100644 (file)
@@ -216,7 +216,7 @@ void dw_vpoll( ){
                }
                /* VSER Channel single datum */
                if( buf[0]<16 ){
-                       int minor=dw_minor( buf[0] );
+                       int minor=dw_minor( buf[0] - 1 );
                        tty_inproc( minor, buf[1] );
                        continue;
                }
index 4e6e9d9..8172f88 100644 (file)
@@ -216,7 +216,7 @@ void dw_vpoll( ){
                }
                /* VSER Channel single datum */
                if( buf[0]<16 ){
-                       int minor=dw_minor( buf[0] );
+                       int minor=dw_minor( buf[0] - 1 );
                        tty_inproc( minor, buf[1] );
                        continue;
                }
index c0a7464..3cb8924 100644 (file)
@@ -216,7 +216,7 @@ void dw_vpoll( ){
                }
                /* VSER Channel single datum */
                if( buf[0]<16 ){
-                       int minor=dw_minor( buf[0] );
+                       int minor=dw_minor( buf[0] - 1 );
                        tty_inproc( minor, buf[1] );
                        continue;
                }