From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/9] USB: serial: fix initial-termios handling From: Johan Hovold Message-Id: <20190421122154.26465-2-johan@kernel.org> Date: Sun, 21 Apr 2019 14:21:46 +0200 To: linux-usb@vger.kernel.org Cc: Greg Kroah-Hartman , Johan Hovold List-ID: VGhlIFVTQi1zZXJpYWwgZHJpdmVyIGluaXRfdGVybWlvcyBjYWxsYmFjayBpcyB1c2VkIHRvIG92 ZXJyaWRlIHRoZQpkZWZhdWx0IGluaXRpYWwgdGVybWluYWwgc2V0dGluZ3MgcHJvdmlkZWQgYnkg VVNCLXNlcmlhbCBjb3JlLgoKQWZ0ZXIgYSBidWcgd2FzIGZpeGVkIGluIHRoZSBvcmlnaW5hbCBp bXBsZW1lbnRhdGlvbiBpbnRyb2R1Y2VkIGJ5CmNvbW1pdCBmZTFhZTdmZGQyZWUgKCJ0dHk6IFVT QiBzZXJpYWwgdGVybWlvcyBiaXRzIiksIHRoZSBpbml0X3Rlcm1pb3MKY2FsbGJhY2sgd2FzIG5v IGxvbmdlciBjYWxsZWQganVzdCBvbmNlIG9uIGZpcnN0IHVzZSBhcyBpbnRlbmRlZCBidXQKcmF0 aGVyIG9uIGV2ZXJ5IChmaXJzdCkgb3Blbi4KClRoaXMgc3BlY2lmaWNhbGx5IG1lYW50IHRoYXQg dGhlIHRlcm1pbmFsIHNldHRpbmdzIHNhdmVkIG9uIChmaW5hbCkKY2xvc2Ugd2VyZSBpZ25vcmVk IHdoZW4gcmVvcGVuaW5nIGEgcG9ydCBmb3IgZHJpdmVycyBvdmVycmlkaW5nIHRoZQppbml0aWFs IHNldHRpbmdzLgoKQWxzbyB1cGRhdGUgdGhlIG91dGRhdGVkIGZ1bmN0aW9uIGhlYWRlciByZWZl cnJpbmcgdG8gdGhlIGNyZWF0aW9uIG9mCnRlcm1pb3Mgb2JqZWN0cy4KCkZpeGVzOiA3ZTI5YmI0 Yjc3OWYgKCJ1c2Itc2VyaWFsOiBmaXggdGVybWlvcyBpbml0aWFsaXphdGlvbiBsb2dpYyIpClNp Z25lZC1vZmYtYnk6IEpvaGFuIEhvdm9sZCA8am9oYW5Aa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJz L3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jIHwgMTEgKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMK aW5kZXggN2U4OWVmYmYyYzI4Li42NzZjMjk2MTAzYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L3NlcmlhbC91c2Itc2VyaWFsLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwu YwpAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQgdXNiX3NlcmlhbF9wdXQoc3RydWN0IHVzYl9zZXJp YWwgKnNlcmlhbCkKICAqIEBkcml2ZXI6IHRoZSBkcml2ZXIgKFVTQiBpbiBvdXIgY2FzZSkKICAq IEB0dHk6IHRoZSB0dHkgYmVpbmcgY3JlYXRlZAogICoKLSAqIENyZWF0ZSB0aGUgdGVybWlvcyBv YmplY3RzIGZvciB0aGlzIHR0eS4gIFdlIHVzZSB0aGUgZGVmYXVsdAorICogSW5pdGlhbGlzZSB0 aGUgdGVybWlvcyBzdHJ1Y3R1cmUgZm9yIHRoaXMgdHR5LiAgV2UgdXNlIHRoZSBkZWZhdWx0CiAg KiBVU0Igc2VyaWFsIHNldHRpbmdzIGJ1dCBwZXJtaXQgdGhlbSB0byBiZSBvdmVycmlkZGVuIGJ5 Ci0gKiBzZXJpYWwtPnR5cGUtPmluaXRfdGVybWlvcy4KKyAqIHNlcmlhbC0+dHlwZS0+aW5pdF90 ZXJtaW9zIG9uIGZpcnN0IG9wZW4uCiAgKgogICogVGhpcyBpcyB0aGUgZmlyc3QgcGxhY2UgYSBu ZXcgdHR5IGdldHMgdXNlZC4gIEhlbmNlIHRoaXMgaXMgd2hlcmUgd2UKICAqIGFjcXVpcmUgcmVm ZXJlbmNlcyB0byB0aGUgdXNiX3NlcmlhbCBzdHJ1Y3R1cmUgYW5kIHRoZSBkcml2ZXIgbW9kdWxl LApAQCAtMTc4LDYgKzE3OCw3IEBAIHN0YXRpYyBpbnQgc2VyaWFsX2luc3RhbGwoc3RydWN0IHR0 eV9kcml2ZXIgKmRyaXZlciwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKIAlpbnQgaWR4ID0gdHR5 LT5pbmRleDsKIAlzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsOwogCXN0cnVjdCB1c2Jfc2VyaWFs X3BvcnQgKnBvcnQ7CisJYm9vbCBpbml0X3Rlcm1pb3M7CiAJaW50IHJldHZhbCA9IC1FTk9ERVY7 CiAKIAlwb3J0ID0gdXNiX3NlcmlhbF9wb3J0X2dldF9ieV9taW5vcihpZHgpOwpAQCAtMTkyLDE0 ICsxOTMsMTYgQEAgc3RhdGljIGludCBzZXJpYWxfaW5zdGFsbChzdHJ1Y3QgdHR5X2RyaXZlciAq ZHJpdmVyLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogCWlmIChyZXR2YWwpCiAJCWdvdG8gZXJy b3JfZ2V0X2ludGVyZmFjZTsKIAorCWluaXRfdGVybWlvcyA9IChkcml2ZXItPnRlcm1pb3NbaWR4 XSA9PSBOVUxMKTsKKwogCXJldHZhbCA9IHR0eV9zdGFuZGFyZF9pbnN0YWxsKGRyaXZlciwgdHR5 KTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGVycm9yX2luaXRfdGVybWlvczsKIAogCW11dGV4X3Vu bG9jaygmc2VyaWFsLT5kaXNjX211dGV4KTsKIAotCS8qIGFsbG93IHRoZSBkcml2ZXIgdG8gdXBk YXRlIHRoZSBzZXR0aW5ncyAqLwotCWlmIChzZXJpYWwtPnR5cGUtPmluaXRfdGVybWlvcykKKwkv KiBhbGxvdyB0aGUgZHJpdmVyIHRvIHVwZGF0ZSB0aGUgaW5pdGlhbCBzZXR0aW5ncyAqLworCWlm IChpbml0X3Rlcm1pb3MgJiYgc2VyaWFsLT50eXBlLT5pbml0X3Rlcm1pb3MpCiAJCXNlcmlhbC0+ dHlwZS0+aW5pdF90ZXJtaW9zKHR0eSk7CiAKIAl0dHktPmRyaXZlcl9kYXRhID0gcG9ydDsK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS, T_DKIMWL_WL_HIGH,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE167C10F14 for ; Sun, 21 Apr 2019 12:22:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 81E7620869 for ; Sun, 21 Apr 2019 12:22:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555849320; bh=WJIMPGv2NxtiVl3ltzPOV5DtPPM5evK66urL6Mgq8vc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=OOj3W6HLmMVutikR2cgPDQEngKiZMR4kyxQ66w7wCk9lg3XI5oqq64cu2ALaGq4pc PDrMf6GLVvYUekxcOTNrn5TCRUC7Ug+5fkbn5efQ5Bls6hy9Vq6O3RWuq0NVa3GxQJ SQvZ/H4pFICx9gIdTnlR2amdfc7imnxi63n8x4s8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727385AbfDUMV7 (ORCPT ); Sun, 21 Apr 2019 08:21:59 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:34370 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725963AbfDUMV6 (ORCPT ); Sun, 21 Apr 2019 08:21:58 -0400 Received: by mail-lj1-f193.google.com with SMTP id j89so8212080ljb.1 for ; Sun, 21 Apr 2019 05:21:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YCHlwVEU1pAZwr42+V6C5g/JtxQTErLwhv+ymt5pxTk=; b=QFsGDSKYGfRXhAwDFAdIjvG/gkH3LG/bxyUE9WLsjRcATS3oUvPhVbhaE8swszwIrq DL6X+VqDYkBDfqYUhvvEmAeS1SRlR74tCocmpU5Vy8nQUpW32/uKMjRtH6l09lvec9I3 R4na4da8EQyubW0ORO02r+r4OgJBMIaLSHlVEum5rBQ7AsBUS45CiJCbNRuxFpuqTK+j 81d/YV6joppXl6s2d6E159e7WUjXKUaYFz4XOenIy4N+xWwgm/31riTGTYN1NiXH+Y8J Rau3Oj3KH2qZLGt3JGcqa82QeCZZAocTYkyrABZbd2riyetNCQRpulcDz5xXbcIM/16P xwLg== X-Gm-Message-State: APjAAAWpVMrLnABZombTTyRB5clef4OCSdeDP4ZUZ7hrJcKsyrT2DtGh ydwLMbypVQ/ul0BoAzJp+++rV76W X-Google-Smtp-Source: APXvYqyhsOINS1Waexhrz6q+rJZhtQkowycTJcUp93rvz8hdSrCLE6EL22N8FlhuBc8ZyMwToaC+1Q== X-Received: by 2002:a2e:974d:: with SMTP id f13mr7445591ljj.140.1555849316325; Sun, 21 Apr 2019 05:21:56 -0700 (PDT) Received: from xi.terra (c-74bee655.07-184-6d6c6d4.bbcust.telenor.se. [85.230.190.116]) by smtp.gmail.com with ESMTPSA id r2sm2235210ljd.16.2019.04.21.05.21.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 Apr 2019 05:21:55 -0700 (PDT) Received: from johan by xi.terra with local (Exim 4.91) (envelope-from ) id 1hIBTs-0006tk-7A; Sun, 21 Apr 2019 14:22:00 +0200 From: Johan Hovold To: linux-usb@vger.kernel.org Cc: Greg Kroah-Hartman , Johan Hovold Subject: [PATCH 1/9] USB: serial: fix initial-termios handling Date: Sun, 21 Apr 2019 14:21:46 +0200 Message-Id: <20190421122154.26465-2-johan@kernel.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190421122154.26465-1-johan@kernel.org> References: <20190421122154.26465-1-johan@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Message-ID: <20190421122146.IbR8WvRaGumrGLTTOjdbQtWgONJhIxwtjfWaluStMEA@z> The USB-serial driver init_termios callback is used to override the default initial terminal settings provided by USB-serial core. After a bug was fixed in the original implementation introduced by commit fe1ae7fdd2ee ("tty: USB serial termios bits"), the init_termios callback was no longer called just once on first use as intended but rather on every (first) open. This specifically meant that the terminal settings saved on (final) close were ignored when reopening a port for drivers overriding the initial settings. Also update the outdated function header referring to the creation of termios objects. Fixes: 7e29bb4b779f ("usb-serial: fix termios initialization logic") Signed-off-by: Johan Hovold --- drivers/usb/serial/usb-serial.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 7e89efbf2c28..676c296103a2 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c @@ -164,9 +164,9 @@ void usb_serial_put(struct usb_serial *serial) * @driver: the driver (USB in our case) * @tty: the tty being created * - * Create the termios objects for this tty. We use the default + * Initialise the termios structure for this tty. We use the default * USB serial settings but permit them to be overridden by - * serial->type->init_termios. + * serial->type->init_termios on first open. * * This is the first place a new tty gets used. Hence this is where we * acquire references to the usb_serial structure and the driver module, @@ -178,6 +178,7 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) int idx = tty->index; struct usb_serial *serial; struct usb_serial_port *port; + bool init_termios; int retval = -ENODEV; port = usb_serial_port_get_by_minor(idx); @@ -192,14 +193,16 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) if (retval) goto error_get_interface; + init_termios = (driver->termios[idx] == NULL); + retval = tty_standard_install(driver, tty); if (retval) goto error_init_termios; mutex_unlock(&serial->disc_mutex); - /* allow the driver to update the settings */ - if (serial->type->init_termios) + /* allow the driver to update the initial settings */ + if (init_termios && serial->type->init_termios) serial->type->init_termios(tty); tty->driver_data = port; -- 2.21.0