Received: by 2002:a19:651b:0:0:0:0:0 with SMTP id z27csp3627781lfb; Mon, 9 May 2022 00:18:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz+k+dfyOFdEMN3uJ8hbDv1hC1nwoidaBYsWh2HyzA+/0dyGS3S9tH8Z9cQ27lskh3xKCTa X-Received: by 2002:a17:902:76cb:b0:15e:f795:bf5e with SMTP id j11-20020a17090276cb00b0015ef795bf5emr10828574plt.39.1652080703215; Mon, 09 May 2022 00:18:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652080703; cv=none; d=google.com; s=arc-20160816; b=PdqGEH+B9klWx2aDXcpoFferYOxINZpYDWZkgzEHz2h5Lo382qxwhLpB/mikxWBu7K vgkwT6T5Cycdo6ki8nF/QTUZ2OKANaRBRYBaZxgmBFaMEZv1i2jGfiwjs6jLFDuSv5IJ 1zam14vWy7EvqF/6q7fWcxiUs3Re9oQw1biXBhjp12AEhVthoUY49Qaz1mEUbwAtLOCm 3fNleP2q01XOvbD2XnFzmtHEYIxnmDjkXQ7bn1Ns6ouTGj7cr3urn8yoBoI++usVlLct Elguv4QTydOU+X/sA7+emI9vlx7YBlMYAovt7YdjoCD/Wde+ICWllEIWZ+WWOWGlpo+q QBUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=W+e5GgcRVIxsdG97E17U475sJYG19mqpSvIDJ/cB2MY=; b=G+RjYD1nxKg2Muz42df1dgaoz1GydZzshXZ9BpZ17frY4O4fgVDz4usYcxwzgEJUoF gmaLdEhsmpzDJ3XRotAtUcdbYcwCZoRBvzpnU5LUoq/zXkIFZcFd4E+rCpNFdcnNj7vq 6lxt6j1unFy4yrTFx4GkT5AvgDm1ue+omgW+sMBoWSSoqQxEcSWj/st4a9iXtTmsSQ/V SfjsiSGyEezfh/8k2QRdyfhBnjrTztI1F74sJTe7eBU4HeqVNlOhBPfMtdphJKQEzNTg bXbd9lQTQ2HMK9jARPAt98bo4ohSSyQK6rksIj6f/UPnJdIAFiE7dQjW8RZdvjlt7cyK IkTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=D2vJhRrf; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id y71-20020a638a4a000000b003ab6ae4fc23si13545872pgd.474.2022.05.09.00.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 May 2022 00:18:23 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=D2vJhRrf; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9D4231AD; Mon, 9 May 2022 00:15:39 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359442AbiEDRx3 (ORCPT + 99 others); Wed, 4 May 2022 13:53:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1357956AbiEDRPd (ORCPT ); Wed, 4 May 2022 13:15:33 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A36FA5622A; Wed, 4 May 2022 09:59:11 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 53CC8616AC; Wed, 4 May 2022 16:59:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4C64C385A4; Wed, 4 May 2022 16:59:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1651683550; bh=0l1FOOSEenmAD86fDIbhkD5YOhg1dDb2xEVR+5ccbCI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D2vJhRrfK53RPnBQOx5n9biCkXQaUrUlehJBQV1cUvNl4OS8kp0Ol0zO33gPMh4AG frjTw2ouxSN5YW9di17kfOADRtTqelH/IBy3TorWADXu/m1gA1Gsb0basf4ZjCjuus u3p1UDOKoTBdmg41avsCGTFyQZ6gvI3MphOiLEDY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Starke Subject: [PATCH 5.17 204/225] tty: n_gsm: fix mux cleanup after unregister tty device Date: Wed, 4 May 2022 18:47:22 +0200 Message-Id: <20220504153128.318918869@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504153110.096069935@linuxfoundation.org> References: <20220504153110.096069935@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Daniel Starke commit 284260f278b706364fb4c88a7b56ba5298d5973c upstream. Internally, we manage the alive state of the mux channels and mux itself with the field member 'dead'. This makes it possible to notify the user if the accessed underlying link is already gone. On the other hand, however, removing the virtual ttys before terminating the channels may result in peer messages being received without any internal target. Move the mux cleanup procedure from gsmld_detach_gsm() to gsmld_close() to fix this by keeping the virtual ttys open until the mux has been cleaned up. Fixes: e1eaea46bb40 ("tty: n_gsm line discipline") Cc: stable@vger.kernel.org Signed-off-by: Daniel Starke Link: https://lore.kernel.org/r/20220414094225.4527-4-daniel.starke@siemens.com Signed-off-by: Greg Kroah-Hartman --- drivers/tty/n_gsm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index f546dfe03d29..de97a3810731 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2479,7 +2479,6 @@ static void gsmld_detach_gsm(struct tty_struct *tty, struct gsm_mux *gsm) for (i = 1; i < NUM_DLCI; i++) tty_unregister_device(gsm_tty_driver, base + i); } - gsm_cleanup_mux(gsm, false); tty_kref_put(gsm->tty); gsm->tty = NULL; } @@ -2544,6 +2543,12 @@ static void gsmld_close(struct tty_struct *tty) { struct gsm_mux *gsm = tty->disc_data; + /* The ldisc locks and closes the port before calling our close. This + * means we have no way to do a proper disconnect. We will not bother + * to do one. + */ + gsm_cleanup_mux(gsm, false); + gsmld_detach_gsm(tty, gsm); gsmld_flush_buffer(tty); -- 2.36.0