[s390*] 3215: fix tty output containing tabs (Closes: #758264)
svn path=/dists/sid/linux/; revision=21905
This commit is contained in:
parent
bc1d790d5f
commit
8a3f0c3063
|
@ -8,6 +8,7 @@ linux (3.16.3-3) UNRELEASED; urgency=low
|
||||||
* [powerpc/powerpc64,ppc64*] video/fb: Change FB_MATROX, FB_RADEON, FB_ATY,
|
* [powerpc/powerpc64,ppc64*] video/fb: Change FB_MATROX, FB_RADEON, FB_ATY,
|
||||||
FB_SIS, FB_3DFX, FB_VOODOO1 back to modules (Closes: #748398)
|
FB_SIS, FB_3DFX, FB_VOODOO1 back to modules (Closes: #748398)
|
||||||
* udeb: Add pata_rdc to pata-modules (Closes: #633128)
|
* udeb: Add pata_rdc to pata-modules (Closes: #633128)
|
||||||
|
* [s390*] 3215: fix tty output containing tabs (Closes: #758264)
|
||||||
|
|
||||||
-- Ian Campbell <ijc@debian.org> Sun, 21 Sep 2014 12:09:24 +0100
|
-- Ian Campbell <ijc@debian.org> Sun, 21 Sep 2014 12:09:24 +0100
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
Date: Wed, 13 Aug 2014 12:01:30 +0200
|
||||||
|
Subject: s390/3215: fix tty output containing tabs
|
||||||
|
Origin: https://git.kernel.org/linus/e512d56c799517f33b301d81e9a5e0ebf30c2d1e
|
||||||
|
|
||||||
|
git commit 37f81fa1f63ad38e16125526bb2769ae0ea8d332
|
||||||
|
"n_tty: do O_ONLCR translation as a single write"
|
||||||
|
surfaced a bug in the 3215 device driver. In combination this
|
||||||
|
broke tab expansion for tty ouput.
|
||||||
|
|
||||||
|
The cause is an asymmetry in the behaviour of tty3215_ops->write
|
||||||
|
vs tty3215_ops->put_char. The put_char function scans for '\t'
|
||||||
|
but the write function does not.
|
||||||
|
|
||||||
|
As the driver has logic for the '\t' expansion remove XTABS
|
||||||
|
from c_oflag of the initial termios as well.
|
||||||
|
|
||||||
|
Reported-by: Stephen Powell <zlinuxman@wowway.com>
|
||||||
|
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
---
|
||||||
|
drivers/s390/char/con3215.c | 20 +++++++++++++++++---
|
||||||
|
1 file changed, 17 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
|
||||||
|
index a6d47e5..c43aca6 100644
|
||||||
|
--- a/drivers/s390/char/con3215.c
|
||||||
|
+++ b/drivers/s390/char/con3215.c
|
||||||
|
@@ -1035,12 +1035,26 @@ static int tty3215_write(struct tty_struct * tty,
|
||||||
|
const unsigned char *buf, int count)
|
||||||
|
{
|
||||||
|
struct raw3215_info *raw;
|
||||||
|
+ int i, written;
|
||||||
|
|
||||||
|
if (!tty)
|
||||||
|
return 0;
|
||||||
|
raw = (struct raw3215_info *) tty->driver_data;
|
||||||
|
- raw3215_write(raw, buf, count);
|
||||||
|
- return count;
|
||||||
|
+ written = count;
|
||||||
|
+ while (count > 0) {
|
||||||
|
+ for (i = 0; i < count; i++)
|
||||||
|
+ if (buf[i] == '\t' || buf[i] == '\n')
|
||||||
|
+ break;
|
||||||
|
+ raw3215_write(raw, buf, i);
|
||||||
|
+ count -= i;
|
||||||
|
+ buf += i;
|
||||||
|
+ if (count > 0) {
|
||||||
|
+ raw3215_putchar(raw, *buf);
|
||||||
|
+ count--;
|
||||||
|
+ buf++;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return written;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1188,7 +1202,7 @@ static int __init tty3215_init(void)
|
||||||
|
driver->subtype = SYSTEM_TYPE_TTY;
|
||||||
|
driver->init_termios = tty_std_termios;
|
||||||
|
driver->init_termios.c_iflag = IGNBRK | IGNPAR;
|
||||||
|
- driver->init_termios.c_oflag = ONLCR | XTABS;
|
||||||
|
+ driver->init_termios.c_oflag = ONLCR;
|
||||||
|
driver->init_termios.c_lflag = ISIG;
|
||||||
|
driver->flags = TTY_DRIVER_REAL_RAW;
|
||||||
|
tty_set_operations(driver, &tty3215_ops);
|
|
@ -133,3 +133,4 @@ features/all/virtio-scsi-Implement-change_queue_depth-for-virtscs.patch
|
||||||
debian/revert-staging-sm7xxfb-remove-driver.patch
|
debian/revert-staging-sm7xxfb-remove-driver.patch
|
||||||
features/all/sfc-Adding-PCI-ID-for-Solarflare-7000-series-40G-net.patch
|
features/all/sfc-Adding-PCI-ID-for-Solarflare-7000-series-40G-net.patch
|
||||||
features/all/sfc-Add-40G-link-capability-decoding.patch
|
features/all/sfc-Add-40G-link-capability-decoding.patch
|
||||||
|
bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch
|
||||||
|
|
Loading…
Reference in New Issue