Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752670AbdHPUas (ORCPT ); Wed, 16 Aug 2017 16:30:48 -0400 Received: from avon.wwwdotorg.org ([104.237.132.123]:60770 "EHLO avon.wwwdotorg.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752339AbdHPUaq (ORCPT ); Wed, 16 Aug 2017 16:30:46 -0400 From: Stephen Warren To: Felipe Balbi Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Stephen Warren Subject: [PATCH] usb: gadget: serial: fix oops when data rx'd after close Date: Wed, 16 Aug 2017 14:30:10 -0600 Message-Id: <20170816203010.22993-1-swarren@wwwdotorg.org> X-Mailer: git-send-email 2.14.1 X-NVConfidentiality: public Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1016 Lines: 28 From: Stephen Warren When the gadget serial device has no associated TTY, do not pass any received data into the TTY layer for processing; simply drop it instead. This prevents the TTY layer from calling back into the gadget serial driver, which will then crash in e.g. gs_write_room() due to lack of gadget serial device to TTY association (i.e. a NULL pointer dereference). Signed-off-by: Stephen Warren --- drivers/usb/gadget/function/u_serial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 9b0805f55ad7..16bb24a047d9 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -537,7 +537,7 @@ static void gs_rx_push(unsigned long _port) } /* push data to (open) tty */ - if (req->actual) { + if (req->actual & tty) { char *packet = req->buf; unsigned size = req->actual; unsigned n; -- 2.14.1