Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935424AbbDIKQr (ORCPT ); Thu, 9 Apr 2015 06:16:47 -0400 Received: from mail.kernel.org ([198.145.29.136]:40539 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932781AbbDIIuA (ORCPT ); Thu, 9 Apr 2015 04:50:00 -0400 From: lizf@kernel.org To: stable@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Johan Hovold , Zefan Li Subject: [PATCH 3.4 006/176] USB: keyspan: fix overrun-error reporting Date: Thu, 9 Apr 2015 16:44:14 +0800 Message-Id: <1428569224-23820-6-git-send-email-lizf@kernel.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1428569028-23762-1-git-send-email-lizf@kernel.org> References: <1428569028-23762-1-git-send-email-lizf@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2296 Lines: 71 From: Johan Hovold 3.4.107-rc1 review patch. If anyone has any objections, please let me know. ------------------ commit 855515a6d3731242d85850a206f2ec084c917338 upstream. Fix reporting of overrun errors, which are not associated with a character. Instead insert a null character and report only once. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Johan Hovold [lizf: Backported to 3.4: - s/&port->port/tty - adjust context - adjust indentation] Signed-off-by: Zefan Li --- drivers/usb/serial/keyspan.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c index 5704ced..0879ac7 100644 --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c @@ -323,12 +323,11 @@ static void usa26_indat_callback(struct urb *urb) if ((data[0] & 0x80) == 0) { /* no errors on individual bytes, only possible overrun err */ - if (data[0] & RXERROR_OVERRUN) - err = TTY_OVERRUN; - else - err = 0; + if (data[0] & RXERROR_OVERRUN) { + tty_insert_flip_char(tty, 0, TTY_OVERRUN); + } for (i = 1; i < urb->actual_length ; ++i) - tty_insert_flip_char(tty, data[i], err); + tty_insert_flip_char(tty, data[i], TTY_NORMAL); } else { /* some bytes had errors, every byte has status */ dbg("%s - RX error!!!!", __func__); @@ -859,13 +858,13 @@ static void usa90_indat_callback(struct urb *urb) if ((data[0] & 0x80) == 0) { /* no errors on individual bytes, only possible overrun err*/ - if (data[0] & RXERROR_OVERRUN) - err = TTY_OVERRUN; - else - err = 0; + if (data[0] & RXERROR_OVERRUN) { + tty_insert_flip_char(tty, 0, + TTY_OVERRUN); + } for (i = 1; i < urb->actual_length ; ++i) tty_insert_flip_char(tty, data[i], - err); + TTY_NORMAL); } else { /* some bytes had errors, every byte has status */ dbg("%s - RX error!!!!", __func__); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/