From patchwork Wed Sep 5 02:50:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaejoong Kim X-Patchwork-Id: 966204 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=198.137.202.133; helo=bombadil.infradead.org; envelope-from=linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rX0boyta"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oYS5pVfv"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 424pBd2X71z9s5c for ; Wed, 5 Sep 2018 12:51:51 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=yKQLwlzqZd3HLWEYDHDWxobzgB1vccvMNc+SmW7ik84=; b=rX0 boyta4vqqlPauDENTPr8ltUaKuwbLzwDZFooPco6qcY4eG75eqZZTVxt/1hFIedq2ACAd2hSh25La 5nCSMS+ORbOTLPCue2Iue40iGhXj9dLS1OAdcY038w03I0B5ebyKbnnIJGXG//shFLcu/k0LSHveD IbAnanUTxuZZ7K6eiI5HE/vqPVtaUAJnSM21TfCUCVX4qV+5PtNVyY0Su1FRd2KDjqhQwaV4fO5i3 aMpu4HsnIWotzT7yS/z1kC1UO9O/feK8zQ/0gkVuYeroQPY5PuLOJxQ/CXyi2YLySTxW0ULwocT9l B34FFv11yi8qUnkhgBjrx4y2yh2Di+Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fxNuu-0004w7-QW; Wed, 05 Sep 2018 02:51:40 +0000 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fxNuo-0004s4-Bw for linux-um@lists.infradead.org; Wed, 05 Sep 2018 02:51:37 +0000 Received: by mail-pg1-x542.google.com with SMTP id b129-v6so2616782pga.13 for ; Tue, 04 Sep 2018 19:51:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=v8wMHd9rImKgdQZWtEHpCUbEsflSXHKiz4E9bXpCUG8=; b=oYS5pVfvF0W3g4VhxbS3pqLWW1qSBOhUZ9hGGotAX/3gUb3KC68JjSwMKoPyzipSfk lUxdD5rBvGTOB11CB01qSSUF+L40fCCjFU/RMKUv3olhiELYKdA1twHj+miTvD24JFm/ Y4/VHNPIwSimLcx+bXlLdcMHk9BAQyuSHmgyUh2w59+2c2EJfCkm6rKsOW+LAXWFfmA+ PTEplXgQYXC6Xm2qxPBdCV10JnVDBMgAc0MywQC9SU/P93cUt/L/JzGayFznXDMgwARJ zZINzATcvCQ9vDPj/4oUJ8Jv0diaSsQSr375694WIY1k4WQkXmcZykdVUWO0WPGnhM+V bf1A== 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; bh=v8wMHd9rImKgdQZWtEHpCUbEsflSXHKiz4E9bXpCUG8=; b=r639k/vqdzzPS+4nMBSauqR5lUA79zGajx5cBsjDkOxTr6SyST8yfDSOTxNDT3gOcu qDrlowXYMkEZ2Bmjlbes19DNdwq5zXPh1G7yVv4Gcy7W9UiAYqGM0vz92WvNuxyxPHc0 gjWJCYjOfvulbEU7dR6JoNd/QpGc5bOnGTPsWPO6X6Q5vijKLP3Cm68d2UDA+rJdVXMJ ec/HigZOvAc36LSJTzL3trwVIGe/pNyouw7WWrCf6mdZxpAVtf3hmSABrq0yGs8n3EV+ 7239Osyeg1b+uB92xh2vLOH3cHdtMsNtdzLxyjUbPFWGJcRTPQCXpRLFZykM24IKtfhD DdXw== X-Gm-Message-State: APzg51Bw2KFgzpo1HoNe7XXzt9OQZEq+QLUT380ayom8oPkChDrXr+11 uR5GD9N7n8Wc9xPqmrPzRbk= X-Google-Smtp-Source: ANB0Vda0OgbK2FvRl62j1vZWTl1Gniu83tfEc3iVde1FqPG2IqYEMSsntxFAv4Em6BFFSeqG/K0a+w== X-Received: by 2002:a62:a6cc:: with SMTP id r73-v6mr37931007pfl.60.1536115882462; Tue, 04 Sep 2018 19:51:22 -0700 (PDT) Received: from climb.lge.net ([27.122.242.77]) by smtp.gmail.com with ESMTPSA id v20-v6sm542769pfk.12.2018.09.04.19.51.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 04 Sep 2018 19:51:21 -0700 (PDT) From: Jaejoong Kim To: Greg Kroah-Hartman , Jiri Slaby Subject: [PATCH v2] tty: Change tty_{port|standard}_install() return type to void Date: Wed, 5 Sep 2018 11:50:31 +0900 Message-Id: <1536115855-25744-1-git-send-email-climbbb.kim@gmail.com> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180904_195134_451654_9DD49C6A X-CRM114-Status: GOOD ( 18.67 ) X-Spam-Score: -0.1 (/) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-0.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:542 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (climbbb.kim[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: linux-um@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Yisheng Xie , Nicolas Pitre , Ulf Hansson , Randy Dunlap , Benjamin Herrenschmidt , Heiko Carstens , Alexander Potapenko , Michael Ellerman , "open list:SPARC SERIAL DRIVERS" , Thomas Meyer , Anton Ivanov , "open list:STAGING SUBSYSTEM" , "open list:S390" , Arnd Bergmann , Richard Weinberger , David Lin , "open list:SERIAL DRIVERS" , Marcel Holtmann , Guenter Roeck , Adam Borowski , Kees Cook , Mathias Nyman , Jeff Dike , "open list:USER-MODE LINUX UML" , Johan Hovold , Nicholas Piggin , Joe Perches , Al Viro , Thomas Gleixner , Quytelda Kahja , Karsten Keil , Alex Elder , "moderated list:GREYBUS SUBSYSTEM" , "open list:ISDN SUBSYSTEM" , Oliver Neukum , "open list:MULTIMEDIA CARD MMC, SECURE DIGITAL SD AND..." , open list , "open list:BLUETOOTH SUBSYSTEM" , "open list:USB ACM DRIVER" , Meng Xu , Philippe Ombredanne , Martin Schwidefsky , Johan Hedberg , "open list:HYPERVISOR VIRTUAL CONSOLE DRIVER" , "David S. Miller" MIME-Version: 1.0 Sender: "linux-um" Errors-To: linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Many drivers with tty use the tty_stand_install(). But, there is no need to handle the error, since it always returns 0. So, change the return type of tty_standard_install() and tty_port_install() to void type and remove unnecessary exception handling where we use these functions. Signed-off-by: Jaejoong Kim --- Changes in v2: - Update commit title - Squash other patches into one https://lkml.org/lkml/2018/9/4/70 arch/um/drivers/line.c | 7 +------ drivers/isdn/capi/capi.c | 10 ++++------ drivers/isdn/i4l/isdn_tty.c | 3 ++- drivers/misc/pti.c | 28 +++++++++++++--------------- drivers/mmc/core/sdio_uart.c | 11 ++++------- drivers/s390/char/con3215.c | 3 ++- drivers/s390/char/tty3270.c | 7 +------ drivers/staging/fwserial/fwserial.c | 22 ++++++++-------------- drivers/staging/gdm724x/gdm_tty.c | 11 +++-------- drivers/staging/greybus/uart.c | 10 ++-------- drivers/tty/hvc/hvc_console.c | 7 ++----- drivers/tty/hvc/hvcs.c | 10 ++-------- drivers/tty/mips_ejtag_fdc.c | 4 +++- drivers/tty/n_gsm.c | 9 +-------- drivers/tty/nozomi.c | 8 +++----- drivers/tty/serial/kgdb_nmi.c | 11 +---------- drivers/tty/synclink.c | 3 ++- drivers/tty/synclinkmp.c | 3 ++- drivers/tty/tty_io.c | 10 ++++++---- drivers/tty/tty_port.c | 4 ++-- drivers/tty/vcc.c | 5 +---- drivers/tty/vt/vt.c | 5 +---- drivers/usb/class/cdc-acm.c | 10 +--------- drivers/usb/host/xhci-dbgtty.c | 3 ++- drivers/usb/serial/usb-serial.c | 6 +----- include/linux/tty.h | 4 ++-- net/bluetooth/rfcomm/tty.c | 7 +------ 27 files changed, 73 insertions(+), 148 deletions(-) diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index 8d80b27..47058cf 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c @@ -338,12 +338,7 @@ int line_open(struct tty_struct *tty, struct file *filp) int line_install(struct tty_driver *driver, struct tty_struct *tty, struct line *line) { - int ret; - - ret = tty_standard_install(driver, tty); - if (ret) - return ret; - + tty_standard_install(driver, tty); tty->driver_data = line; return 0; diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index ef5560b..08daf3a 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -999,13 +999,11 @@ static int capinc_tty_install(struct tty_driver *driver, struct tty_struct *tty) { struct capiminor *mp = capiminor_get(tty->index); - int ret = tty_standard_install(driver, tty); - if (ret == 0) - tty->driver_data = mp; - else - capiminor_put(mp); - return ret; + tty_standard_install(driver, tty); + tty->driver_data = mp; + + return 0; } static void capinc_tty_cleanup(struct tty_struct *tty) diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c index b730037..3d6b24e 100644 --- a/drivers/isdn/i4l/isdn_tty.c +++ b/drivers/isdn/i4l/isdn_tty.c @@ -1481,8 +1481,9 @@ static int isdn_tty_install(struct tty_driver *driver, struct tty_struct *tty) return -ENODEV; tty->driver_data = info; + tty_port_install(&info->port, driver, tty); - return tty_port_install(&info->port, driver, tty); + return 0; } /* diff --git a/drivers/misc/pti.c b/drivers/misc/pti.c index 41f2a9f..5c885a1 100644 --- a/drivers/misc/pti.c +++ b/drivers/misc/pti.c @@ -462,26 +462,24 @@ static int pti_tty_install(struct tty_driver *driver, struct tty_struct *tty) { int idx = tty->index; struct pti_tty *pti_tty_data; - int ret = tty_standard_install(driver, tty); - if (ret == 0) { - pti_tty_data = kmalloc(sizeof(struct pti_tty), GFP_KERNEL); - if (pti_tty_data == NULL) - return -ENOMEM; + tty_standard_install(driver, tty); + pti_tty_data = kmalloc(sizeof(struct pti_tty), GFP_KERNEL); + if (pti_tty_data == NULL) + return -ENOMEM; - if (idx == PTITTY_MINOR_START) - pti_tty_data->mc = pti_request_masterchannel(0, NULL); - else - pti_tty_data->mc = pti_request_masterchannel(2, NULL); + if (idx == PTITTY_MINOR_START) + pti_tty_data->mc = pti_request_masterchannel(0, NULL); + else + pti_tty_data->mc = pti_request_masterchannel(2, NULL); - if (pti_tty_data->mc == NULL) { - kfree(pti_tty_data); - return -ENXIO; - } - tty->driver_data = pti_tty_data; + if (pti_tty_data->mc == NULL) { + kfree(pti_tty_data); + return -ENXIO; } + tty->driver_data = pti_tty_data; - return ret; + return 0; } /** diff --git a/drivers/mmc/core/sdio_uart.c b/drivers/mmc/core/sdio_uart.c index 25e1130..b727186 100644 --- a/drivers/mmc/core/sdio_uart.c +++ b/drivers/mmc/core/sdio_uart.c @@ -731,14 +731,11 @@ static int sdio_uart_install(struct tty_driver *driver, struct tty_struct *tty) { int idx = tty->index; struct sdio_uart_port *port = sdio_uart_port_get(idx); - int ret = tty_standard_install(driver, tty); - if (ret == 0) - /* This is the ref sdio_uart_port get provided */ - tty->driver_data = port; - else - sdio_uart_port_put(port); - return ret; + tty_standard_install(driver, tty); + tty->driver_data = port; + + return 0; } /** diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index 8c9d412..6a9f6d9 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c @@ -965,8 +965,9 @@ static int tty3215_install(struct tty_driver *driver, struct tty_struct *tty) return -ENODEV; tty->driver_data = raw; + tty_port_install(&raw->port, driver, tty); - return tty_port_install(&raw->port, driver, tty); + return 0; } /* diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c index 5b8af27..2915f95 100644 --- a/drivers/s390/char/tty3270.c +++ b/drivers/s390/char/tty3270.c @@ -1017,12 +1017,7 @@ static int tty3270_install(struct tty_driver *driver, struct tty_struct *tty) raw3270_activate_view(&tp->view); port_install: - rc = tty_port_install(&tp->port, driver, tty); - if (rc) { - raw3270_put_view(&tp->view); - return rc; - } - + tty_port_install(&tp->port, driver, tty); tty->driver_data = tp; return 0; diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c index fa0dd42..5134019 100644 --- a/drivers/staging/fwserial/fwserial.c +++ b/drivers/staging/fwserial/fwserial.c @@ -1064,27 +1064,21 @@ static void fwtty_cleanup(struct tty_struct *tty) static int fwtty_install(struct tty_driver *driver, struct tty_struct *tty) { struct fwtty_port *port = fwtty_port_get(tty->index); - int err; - err = tty_standard_install(driver, tty); - if (!err) - tty->driver_data = port; - else - fwtty_port_put(port); - return err; + tty_standard_install(driver, tty); + tty->driver_data = port; + + return 0; } static int fwloop_install(struct tty_driver *driver, struct tty_struct *tty) { struct fwtty_port *port = fwtty_port_get(table_idx(tty->index)); - int err; - err = tty_standard_install(driver, tty); - if (!err) - tty->driver_data = port; - else - fwtty_port_put(port); - return err; + tty_standard_install(driver, tty); + tty->driver_data = port; + + return 0; } static int fwtty_write(struct tty_struct *tty, const unsigned char *buf, int c) diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c index 6e81369..d6348df 100644 --- a/drivers/staging/gdm724x/gdm_tty.c +++ b/drivers/staging/gdm724x/gdm_tty.c @@ -62,6 +62,7 @@ static int gdm_tty_install(struct tty_driver *driver, struct tty_struct *tty) return -ENODEV; mutex_lock(&gdm_table_lock); + gdm = gdm_table[ret][tty->index]; if (!gdm) { mutex_unlock(&gdm_table_lock); @@ -69,15 +70,9 @@ static int gdm_tty_install(struct tty_driver *driver, struct tty_struct *tty) } tty_port_get(&gdm->port); - - ret = tty_standard_install(driver, tty); - if (ret) { - tty_port_put(&gdm->port); - mutex_unlock(&gdm_table_lock); - return ret; - } - + tty_standard_install(driver, tty); tty->driver_data = gdm; + mutex_unlock(&gdm_table_lock); return 0; diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 8a00632..182155b 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -393,21 +393,15 @@ static void release_minor(struct gb_tty *gb_tty) static int gb_tty_install(struct tty_driver *driver, struct tty_struct *tty) { struct gb_tty *gb_tty; - int retval; gb_tty = get_gb_by_minor(tty->index); if (!gb_tty) return -ENODEV; - retval = tty_standard_install(driver, tty); - if (retval) - goto error; - + tty_standard_install(driver, tty); tty->driver_data = gb_tty; + return 0; -error: - tty_port_put(&gb_tty->port); - return retval; } static int gb_tty_open(struct tty_struct *tty, struct file *file) diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c index 5414c4a..13fad62 100644 --- a/drivers/tty/hvc/hvc_console.c +++ b/drivers/tty/hvc/hvc_console.c @@ -329,7 +329,6 @@ static void hvc_unthrottle(struct tty_struct *tty) static int hvc_install(struct tty_driver *driver, struct tty_struct *tty) { struct hvc_struct *hp; - int rc; /* Auto increments kref reference if found. */ hp = hvc_get_by_index(tty->index); @@ -337,11 +336,9 @@ static int hvc_install(struct tty_driver *driver, struct tty_struct *tty) return -ENODEV; tty->driver_data = hp; + tty_port_install(&hp->port, driver, tty); - rc = tty_port_install(&hp->port, driver, tty); - if (rc) - tty_port_put(&hp->port); - return rc; + return 0; } /* diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c index cb4db1b..4dfa70c 100644 --- a/drivers/tty/hvc/hvcs.c +++ b/drivers/tty/hvc/hvcs.c @@ -1140,16 +1140,10 @@ static int hvcs_install(struct tty_driver *driver, struct tty_struct *tty) goto err_put; } - retval = tty_port_install(&hvcsd->port, driver, tty); - if (retval) - goto err_irq; + tty_port_install(&hvcsd->port, driver, tty); return 0; -err_irq: - spin_lock_irqsave(&hvcsd->lock, flags); - vio_disable_interrupts(hvcsd->vdev); - spin_unlock_irqrestore(&hvcsd->lock, flags); - free_irq(irq, hvcsd); + err_put: tty_port_put(&hvcsd->port); diff --git a/drivers/tty/mips_ejtag_fdc.c b/drivers/tty/mips_ejtag_fdc.c index 4c1cd49..33e06b4 100644 --- a/drivers/tty/mips_ejtag_fdc.c +++ b/drivers/tty/mips_ejtag_fdc.c @@ -763,7 +763,9 @@ static int mips_ejtag_fdc_tty_install(struct tty_driver *driver, struct mips_ejtag_fdc_tty *priv = driver->driver_state; tty->driver_data = &priv->ports[tty->index]; - return tty_port_install(&priv->ports[tty->index].port, driver, tty); + tty_port_install(&priv->ports[tty->index].port, driver, tty); + + return 0; } static int mips_ejtag_fdc_tty_open(struct tty_struct *tty, struct file *filp) diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 86b7e20..c52fa2d 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2917,7 +2917,6 @@ static int gsmtty_install(struct tty_driver *driver, struct tty_struct *tty) unsigned int line = tty->index; unsigned int mux = line >> 6; bool alloc = false; - int ret; line = line & 0x3F; @@ -2949,14 +2948,8 @@ static int gsmtty_install(struct tty_driver *driver, struct tty_struct *tty) mutex_unlock(&gsm->mutex); return -ENOMEM; } - ret = tty_port_install(&dlci->port, driver, tty); - if (ret) { - if (alloc) - dlci_put(dlci); - mutex_unlock(&gsm->mutex); - return ret; - } + tty_port_install(&dlci->port, driver, tty); dlci_get(dlci); dlci_get(gsm->dlci[0]); mux_get(gsm); diff --git a/drivers/tty/nozomi.c b/drivers/tty/nozomi.c index fed820e..479583d 100644 --- a/drivers/tty/nozomi.c +++ b/drivers/tty/nozomi.c @@ -1555,13 +1555,11 @@ static int ntty_install(struct tty_driver *driver, struct tty_struct *tty) { struct port *port = get_port_by_tty(tty); struct nozomi *dc = get_dc_by_tty(tty); - int ret; if (!port || !dc || dc->state != NOZOMI_STATE_READY) return -ENODEV; - ret = tty_standard_install(driver, tty); - if (ret == 0) - tty->driver_data = port; - return ret; + tty_standard_install(driver, tty); + tty->driver_data = port; + return 0; } static void ntty_cleanup(struct tty_struct *tty) diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c index 4029272..ed8f806 100644 --- a/drivers/tty/serial/kgdb_nmi.c +++ b/drivers/tty/serial/kgdb_nmi.c @@ -234,7 +234,6 @@ static const struct tty_port_operations kgdb_nmi_tty_port_ops = { static int kgdb_nmi_tty_install(struct tty_driver *drv, struct tty_struct *tty) { struct kgdb_nmi_tty_priv *priv; - int ret; priv = kzalloc(sizeof(*priv), GFP_KERNEL); if (!priv) @@ -245,17 +244,9 @@ static int kgdb_nmi_tty_install(struct tty_driver *drv, struct tty_struct *tty) tty_port_init(&priv->port); priv->port.ops = &kgdb_nmi_tty_port_ops; tty->driver_data = priv; + tty_port_install(&priv->port, drv, tty); - ret = tty_port_install(&priv->port, drv, tty); - if (ret) { - pr_err("%s: can't install tty port: %d\n", __func__, ret); - goto err; - } return 0; -err: - tty_port_destroy(&priv->port); - kfree(priv); - return ret; } static void kgdb_nmi_tty_cleanup(struct tty_struct *tty) diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c index fbdf4d0..6e7e4d6 100644 --- a/drivers/tty/synclink.c +++ b/drivers/tty/synclink.c @@ -3355,8 +3355,9 @@ static int mgsl_install(struct tty_driver *driver, struct tty_struct *tty) if (mgsl_paranoia_check(info, tty->name, "mgsl_open")) return -ENODEV; tty->driver_data = info; + tty_port_install(&info->port, driver, tty); - return tty_port_install(&info->port, driver, tty); + return 0; } /* mgsl_open() diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c index 1e4d5b9..2d99a5b 100644 --- a/drivers/tty/synclinkmp.c +++ b/drivers/tty/synclinkmp.c @@ -734,8 +734,9 @@ static int install(struct tty_driver *driver, struct tty_struct *tty) } tty->driver_data = info; + tty_port_install(&info->port, driver, tty); - return tty_port_install(&info->port, driver, tty); + return 0; } /* Called when a port is opened. Init and enable port. diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index 32bc3e3..b01cec8 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -1196,13 +1196,12 @@ void tty_init_termios(struct tty_struct *tty) } EXPORT_SYMBOL_GPL(tty_init_termios); -int tty_standard_install(struct tty_driver *driver, struct tty_struct *tty) +void tty_standard_install(struct tty_driver *driver, struct tty_struct *tty) { tty_init_termios(tty); tty_driver_kref_get(driver); tty->count++; driver->ttys[tty->index] = tty; - return 0; } EXPORT_SYMBOL_GPL(tty_standard_install); @@ -1221,8 +1220,11 @@ EXPORT_SYMBOL_GPL(tty_standard_install); static int tty_driver_install_tty(struct tty_driver *driver, struct tty_struct *tty) { - return driver->ops->install ? driver->ops->install(driver, tty) : - tty_standard_install(driver, tty); + if (driver->ops->install) + return driver->ops->install(driver, tty); + + tty_standard_install(driver, tty); + return 0; } /** diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c index 25d7368..fd8d40d 100644 --- a/drivers/tty/tty_port.c +++ b/drivers/tty/tty_port.c @@ -656,11 +656,11 @@ EXPORT_SYMBOL(tty_port_close); * to a concrete tty specified by @tty. Use this or tty_port_register_device * (or both). Call tty_port_link_device as a last resort. */ -int tty_port_install(struct tty_port *port, struct tty_driver *driver, +void tty_port_install(struct tty_port *port, struct tty_driver *driver, struct tty_struct *tty) { tty->port = port; - return tty_standard_install(driver, tty); + tty_standard_install(driver, tty); } EXPORT_SYMBOL_GPL(tty_port_install); diff --git a/drivers/tty/vcc.c b/drivers/tty/vcc.c index 58b454c..ce32631 100644 --- a/drivers/tty/vcc.c +++ b/drivers/tty/vcc.c @@ -987,7 +987,6 @@ static int vcc_install(struct tty_driver *driver, struct tty_struct *tty) { struct vcc_port *port_vcc; struct tty_port *port_tty; - int ret; if (unlikely(!tty)) { pr_err("VCC: install: Invalid TTY handle\n"); @@ -997,9 +996,7 @@ static int vcc_install(struct tty_driver *driver, struct tty_struct *tty) if (tty->index >= VCC_MAX_PORTS) return -EINVAL; - ret = tty_standard_install(driver, tty); - if (ret) - return ret; + tty_standard_install(driver, tty); port_tty = kzalloc(sizeof(struct tty_port), GFP_KERNEL); if (!port_tty) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 5f1183b..cc72254 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -3222,10 +3222,7 @@ static int con_install(struct tty_driver *driver, struct tty_struct *tty) goto unlock; } - ret = tty_port_install(&vc->port, driver, tty); - if (ret) - goto unlock; - + tty_port_install(&vc->port, driver, tty); tty->driver_data = vc; vc->port.tty = tty; diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 27346d6..de6a27e 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -572,23 +572,15 @@ static void acm_softint(struct work_struct *work) static int acm_tty_install(struct tty_driver *driver, struct tty_struct *tty) { struct acm *acm; - int retval; acm = acm_get_by_minor(tty->index); if (!acm) return -ENODEV; - retval = tty_standard_install(driver, tty); - if (retval) - goto error_init_termios; - + tty_standard_install(driver, tty); tty->driver_data = acm; return 0; - -error_init_termios: - tty_port_put(&acm->port); - return retval; } static int acm_tty_open(struct tty_struct *tty, struct file *filp) diff --git a/drivers/usb/host/xhci-dbgtty.c b/drivers/usb/host/xhci-dbgtty.c index aff79ff..18d661c 100644 --- a/drivers/usb/host/xhci-dbgtty.c +++ b/drivers/usb/host/xhci-dbgtty.c @@ -174,8 +174,9 @@ static int dbc_tty_install(struct tty_driver *driver, struct tty_struct *tty) struct dbc_port *port = driver->driver_state; tty->driver_data = port; + tty_port_install(&port->port, driver, tty); - return tty_port_install(&port->port, driver, tty); + return 0; } static int dbc_tty_open(struct tty_struct *tty, struct file *file) diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index f7aaa7f..5cfc2ca 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c @@ -192,9 +192,7 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) if (retval) goto error_get_interface; - retval = tty_standard_install(driver, tty); - if (retval) - goto error_init_termios; + tty_standard_install(driver, tty); mutex_unlock(&serial->disc_mutex); @@ -206,8 +204,6 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) return retval; - error_init_termios: - usb_autopm_put_interface(serial->interface); error_get_interface: module_put(serial->type->driver.owner); error_module_get: diff --git a/include/linux/tty.h b/include/linux/tty.h index c56e397..63cdac1 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -556,7 +556,7 @@ extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx); extern void tty_release_struct(struct tty_struct *tty, int idx); extern int tty_release(struct inode *inode, struct file *filp); extern void tty_init_termios(struct tty_struct *tty); -extern int tty_standard_install(struct tty_driver *driver, +extern void tty_standard_install(struct tty_driver *driver, struct tty_struct *tty); extern struct mutex tty_mutex; @@ -688,7 +688,7 @@ extern int tty_port_close_start(struct tty_port *port, extern void tty_port_close_end(struct tty_port *port, struct tty_struct *tty); extern void tty_port_close(struct tty_port *port, struct tty_struct *tty, struct file *filp); -extern int tty_port_install(struct tty_port *port, struct tty_driver *driver, +extern void tty_port_install(struct tty_port *port, struct tty_driver *driver, struct tty_struct *tty); extern int tty_port_open(struct tty_port *port, struct tty_struct *tty, struct file *filp); diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 5e44d84..b654420 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c @@ -710,7 +710,6 @@ static int rfcomm_tty_install(struct tty_driver *driver, struct tty_struct *tty) { struct rfcomm_dev *dev; struct rfcomm_dlc *dlc; - int err; dev = rfcomm_dev_get(tty->index); if (!dev) @@ -725,11 +724,7 @@ static int rfcomm_tty_install(struct tty_driver *driver, struct tty_struct *tty) set_bit(RFCOMM_TTY_ATTACHED, &dev->flags); /* install the tty_port */ - err = tty_port_install(&dev->port, driver, tty); - if (err) { - rfcomm_tty_cleanup(tty); - return err; - } + tty_port_install(&dev->port, driver, tty); /* take over the tty_port reference if the port was created with the * flag RFCOMM_RELEASE_ONHUP. This will force the release of the port