Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp3120343pxm; Mon, 28 Feb 2022 12:27:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJw1eI8Q+5+JUc/GHp0CnkAP5vbjo2U4Jp+CHIgqIqpMjkfWU++QnoSaR8BbbRj2s/wvczLW X-Received: by 2002:a17:902:d2d1:b0:14f:cd2d:743d with SMTP id n17-20020a170902d2d100b0014fcd2d743dmr22116221plc.73.1646080039005; Mon, 28 Feb 2022 12:27:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646080039; cv=none; d=google.com; s=arc-20160816; b=ahNxm2me5t2sa2SDrMXD3HBNPGcsfAMepN/xmzfpPHTbHeeX7wIW4BLTwfbR5a44HE AItphkt3QNYXf3JsjJgCM85kRXoOGiFWyrk653MMFucdl/aQujbAKk6FZb/AzILqeLpT JqBe0xQxWvP64Mkj9Q9SCtgv//ENWdi/OdkSY+qzC1/WNA8tKOv1LUk1kjVeYCAk605b C07wlqysmqZLDlzgLrAfxe2yRy74wMIybcMQGgBLgvEnVnNjkJEeKazZtQnfeTVJpQHa j/iHUfTZ4bXcbrDfy7hjuEJKrfGXpVcZXvCP1LwAT3vbdABQW4bqXcMArCHWMf2E8Cs6 aKdw== 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=FNXuSaYzN5UDJh+MiYu71DmkAfOYtz0utZ2+2qAOSvk=; b=bKzS1HoamxxQ5Stwvc6vkjrSIY3oMjWW9O9cvp68Zm1YGb/nN+yZHCMctt0t9rHg15 s4pG+H8ZjfheGr/DlOz7urha7JTQe/OrAXKS/6boCK2fEDvgrGHOIBQT3ETbuPJJntLH qgMjiqU+/tEoi13mqY3rWaBuQIQajLfsVMDo5+LOfjbpufE0sfEicmjt6h/UG2od0kni dTf38XSSIE7otpdpfLC+JdfewBDW6mFX0ARsh1CAV/DWybIAyjhqA3u4Km2sCeix3p8X RIx2YWd9X4SuXpKr67/kQi6o0KonktFpT8jTkU7z6DcA4MTHG9snBiGx+FxsDfvUFBYA J98A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Qv+Sq8kM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id f7-20020a635107000000b00373c08aecafsi10215656pgb.31.2022.02.28.12.27.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Feb 2022 12:27:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Qv+Sq8kM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 32A271F1DD5; Mon, 28 Feb 2022 11:45:01 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238744AbiB1RrO (ORCPT + 99 others); Mon, 28 Feb 2022 12:47:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239161AbiB1Rnr (ORCPT ); Mon, 28 Feb 2022 12:43:47 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4601A88B0D; Mon, 28 Feb 2022 09:35:49 -0800 (PST) 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 10BE3614B9; Mon, 28 Feb 2022 17:35:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21505C340E7; Mon, 28 Feb 2022 17:35:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1646069748; bh=Aj8Bvvtsr7L/vKmvvYvbff75UEWBXBwwcFdt35525dQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qv+Sq8kMAiEU2iW9NPCILsIAnggvXgy4Cr/xgdsN0S31HiH7odbt1kj6uCJ9+QqfW OwxZ9CybhMHwmh8XlMP7LCUKlxaq3zb+5tMWAAX0D67ZpErrqOI1QY0gwrscQ6v2hw nxpoUI9/NrV2+5tjyG/nWoNM256vDASToCbGzmPE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Starke Subject: [PATCH 5.10 78/80] tty: n_gsm: fix deadlock in gsmtty_open() Date: Mon, 28 Feb 2022 18:24:59 +0100 Message-Id: <20220228172321.207530421@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220228172311.789892158@linuxfoundation.org> References: <20220228172311.789892158@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.4 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@siemens.com commit a2ab75b8e76e455af7867e3835fd9cdf386b508f upstream. In the current implementation the user may open a virtual tty which then could fail to establish the underlying DLCI. The function gsmtty_open() gets stuck in tty_port_block_til_ready() while waiting for a carrier rise. This happens if the remote side fails to acknowledge the link establishment request in time or completely. At some point gsm_dlci_close() is called to abort the link establishment attempt. The function tries to inform the associated virtual tty by performing a hangup. But the blocking loop within tty_port_block_til_ready() is not informed about this event. The patch proposed here fixes this by resetting the initialization state of the virtual tty to ensure the loop exits and triggering it to make tty_port_block_til_ready() return. Fixes: e1eaea46bb40 ("tty: n_gsm line discipline") Cc: stable@vger.kernel.org Signed-off-by: Daniel Starke Link: https://lore.kernel.org/r/20220218073123.2121-7-daniel.starke@siemens.com Signed-off-by: Greg Kroah-Hartman --- drivers/tty/n_gsm.c | 3 +++ 1 file changed, 3 insertions(+) --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -1426,6 +1426,9 @@ static void gsm_dlci_close(struct gsm_dl if (dlci->addr != 0) { tty_port_tty_hangup(&dlci->port, false); kfifo_reset(&dlci->fifo); + /* Ensure that gsmtty_open() can return. */ + tty_port_set_initialized(&dlci->port, 0); + wake_up_interruptible(&dlci->port.open_wait); } else dlci->gsm->dead = true; wake_up(&dlci->gsm->event);