From nobody Sun Feb 8 06:48:02 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BA7AE732C8 for ; Thu, 28 Sep 2023 13:07:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232683AbjI1NH1 (ORCPT ); Thu, 28 Sep 2023 09:07:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232643AbjI1NHV (ORCPT ); Thu, 28 Sep 2023 09:07:21 -0400 Received: from sonic310-20.consmr.mail.gq1.yahoo.com (sonic310-20.consmr.mail.gq1.yahoo.com [98.137.69.146]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 334A6F5 for ; Thu, 28 Sep 2023 06:07:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s2048; t=1695906437; bh=cEUQvr2uTGSCKhdlqhEVI5tYhjMFaTNt2CV/uM0iRuc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=spXN1KKQE5sZOoDh28SevecZTw3BuN1bMytu4HjC5fGjzc50peWiE8suxbsFOah4/ez1Zz5gspKS+BY1Or6XGwXVRZLzxXWrwrhEbPjfKJThv4P2+mwx/JvvJV9tAU8IxxUqQEypyE7lmgnb9mFeBrqH4briYdAOxxM7dlNSFuu3IDY1ENtQsbG+Y81jBWb4C9cTxpqUOPDpBhHDLSQeFvEtAQE1vLy3+U5vmEdb0opy9naU67RZjMijj3BWz7qjNwQwILa0IMAbEwVga2J7uBnM5an67umcvNlRGVGBjdTrxDA12Qa/rxGmM/PzG2pui4dYSY6cedZy7kdR3BXmqw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695906437; bh=J27zA3DcfL8j9pGh7Ri+uBDSu9Q/v79gpE2JJtReOMk=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=Yy97PrtkdqiFUC8nbEJMPMA02l5GjLlqsxy+rkRKD63HmYwQ+EJPB2kc3IQlYUMs07wJ3GIINtq82W6dFtFjKBqXR7lJ2WPiKYfl994yfppukEccaxj2YA2rsOQL8qYvlLUlJ1OzVGQQSo7BfDrJuLoZruNa5vkcYDAckPJMjnxlRvtB+xLnUUvR9+k94u8q0JJhrTdxgqR4Aeylbq6OB0odPIqHAdfcbwcDQuapWAL4AUGDX46urGdUYhyZk3PSFiiyurCOGggpfWSClpbGSxGdcvtZywg65LaM5utCnbJ7w7nDOgNTvCWM3mfTOFMWpeXksax734/+Gwn6lUbuYg== X-YMail-OSG: x0_5WhsVM1nPQO6tbBPooq0FMfk38jCKmOAzuUe.PoLWEtX8MXMK9qQtV3HkaGu ORgFAXmiZCzEfcbMAt3v7ONNRnxkUP2aNpKhubA1EIqFe5lOASbEtth4oKIbP0P6Q5iDaaZk5HSs Y1ETV4AfmWuIVzsIzWnpnBAi4fkk7CpnR66PPLSDpnGlNSf9RSWyO3QWy4IQFvNKYpj6hw5HNwol q22rtGTSceubfT9jwooGYfvdKxOW.9nb0Nf1oxpoW3JcqHdVkhQap4rwDe8tFaB_oEQuYRMIzE9W OuhUMNq15tTSte5ePTBwxJluR8coCYfm9FEE_p6ZgWqZ3Mo8PlAJPt36zsogzoZzh_2p.j.0SeUZ oNf9cLmrtpwTDYkY.46TecChYKKkRkntaWt2B8g_15qga.y9RNwVqz5CkmaOCzWKTbtgNHnI7TZD xrz6l.IXl4Umdw99g46hPddw4CvwRnm.jPZY7HBm.MVlQgcG7JH8QjyyUkzgloptCWPNwnCaoIpr 9O7Bs_rTYG7ARpFjaTOIk6iLSfHcBmP4IqgqFCmOWR6BaaHD.3NmgA_uS.FA6BLeOhewrNZ.HXtR KoOPoC0giMkatPnglH.b_DJL8DhxLrGI3c4Nqx0_aQYMn8H4MoxnTzwfxPirotXzq5HS9FjIdB9n NBiJtNwDTVUTs1ECjYIqc9tsBJuAm7G1X_5odwmorLMMFzdXSGiCrOATuKTWAT8i6mCSnoIJkIoV Eh.ICCNYN8Ob73eIO3c8o9tg4LlPEu2xZYaAo_srZyHeK7kk6fUJWgXE1eLJcRqK9W9dkoWJ4.2f 6E4rsucmrAUKqYxhINhGfSzlMKvDWHlVsBfYcxidV9uRq.M8i9b_CXWq1qUWnhzYObG_l.I2mPVB IPb.vXpYtpSceewkGKdbB63.ZaC1MmyDNXS1vT_t2XsHBgAz1TV27DEoW5KGTjBz_wLn6xc1o7v8 eVtOpiwjiCljhoILXyTndKjT5SKd2hSlcVbpHl_xb061e1YZg1tAEkuDWirZnayVtwnMEMieBGct SyS7VeR4UCVQOz5y.RjYSkzVcWyuE0P6sDcCJhwvW8GFoHBH1dQy0n6DTJte8J993jdsRhJuxLO3 6KJR8yvPF7o.u5Rg3xMmDr8obHJsCKfIJRZjo99e1q81ODe0Fo6_tvU0w_U896W61Wci_fNyBTHH FQJh4vkRSCWeKspk.LY4S8oiVFDVyU2Kar7_y3WOTStraIt9sJyMVDqSbMAYly0rmdcThM4xULgg 8YRfH2RLWl0.iPEyqs4OF3UCabxxJqhJVBj.1usn0QKB82wpx.oTonc8vdLHwgHp_N4zFD.e7xdy JdT4F4UtChX9k2b2Ynuwxgs1i3s4St8I8wQ.6wRS4Nilra6dCSloSotINq6KO0itJEgTSOgHz5U5 yLOXjMHmOu1sPL6FxKSKGj4RRnu5V2kvJ4jRs4kzwKyBRbBAfrsIZbwNk8Sd457vG5QEF6Frqvu1 hyfH5E09dCvWKqa_cVWoqh.9ZF3Q3FyYqXJ0KT1Fw8PvG0JnKJl5bE89mxHztBKMU_kEEZSZ5OkE zjSCbg7W4r.Bjyc97XfvBA.NVebh6LF.0Qml608FfN9aST1L6EiHmPEbhJwnMPo4yuQAI6iLhS6M wHmXk6KrKWjsgXzAriPAbN0S1_4tv75_Ir6LtKb9IA4jRO2WonoIGBTLGgX8koRWqdoQleKdEE2m Ho_xXbYpu7NdZqoBYwUXvBDWQ394C_dq50BqW7kW2FjX6esqOiHeslhQQdfL7tm0v6BT2qGpKDUP jAnYruiUteNJ5ji1iAB9Xu9ATVux5UHvM74P.4OhqP3UWQinQN57vwHEfrgPuefYAN2YKqCfAcj8 MJMgsKv8kue4Z1dICL6puqY8QwSAqVjK2UCcJEJ5ccJA0NTaozwiQ2SR6_XPdESrkeDBlUHX0MdS TNlLp2vIdn_pKhCd07NA7.byFtvJ5HRZK3qbBN1TOX4otZSK6Xz0U8jIUpckdXjDqu.1mTtztpPc svsuEQPoCLwgXdAQI5x04L4fZkM5WtnEP1F5M9vhnz1SWnRjRf.EYBvdI3keEdfemS6m7xRINKTU BgQXUqiB2SyQC_CW8EHtbyImDdotDl5OyWgLZ8V1o9riozTjCerXlnxDN0Lq7zNjHB48Op4kJyOE 0wBp.fbIJXfVI25kwUsOibl7GTHL4K54CHmKctnd712jNEF0Kr4Ffr04s4ik5y9.YoVdMOK0eAnU QsekPBdmV1rrCh_IAx.oSqz.ITcaFamK6BEU3JOsM715keO.jzG4ngCDhjB8JOVn95Iy1Rgb3pAC 8.OfB X-Sonic-MF: X-Sonic-ID: 57bc30f3-8d27-48a4-9c35-0273c976fd45 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.gq1.yahoo.com with HTTP; Thu, 28 Sep 2023 13:07:17 +0000 Received: by hermes--production-ne1-5b56858476-qngzq (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID cca63ec0d72172f78c3d0254e0e587dc; Thu, 28 Sep 2023 13:07:14 +0000 (UTC) Received: from localhost.lan ([127.0.0.1]:52224 helo=localhost.localdomain) by postbox.timberdragon.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.95.0) (envelope-from ) id 1qlqjY-000fEn-Bw; Thu, 28 Sep 2023 06:07:12 -0700 From: Earl Chew To: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org, jirislaby@kernel.org Cc: peter@hurleysoftware.com, earl.chew@yahoo.ca Subject: [PATCH v2 1/3] tty: Fix __tty_check_change() and tiocspgrp() race Date: Thu, 28 Sep 2023 06:06:57 -0700 Message-Id: <20230928130658.4045344-2-earl.chew@yahoo.ca> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230901015030.2469062-1-earl.chew@yahoo.ca> References: <20230901015030.2469062-1-earl.chew@yahoo.ca> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Restore the use of tty->ctrl.lock to cover both checking current->task_pgrp() and sending kill_pgrp(). This coverage was lost for SIGTTIN as part of commit 2812d9e9fd94 (tty: Combine SIGTTOU/SIGTTIN handling). In rare cases, job control shells using tcsetpgrp() and SIGCONT to move a background job to the foreground could find the new foreground job stopping almost immediately due to SIGTTIN or SIGTTOU. Signed-off-by: Earl Chew --- drivers/tty/tty_jobctrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/tty_jobctrl.c b/drivers/tty/tty_jobctrl.c index 0d04287da..aba721a3c 100644 --- a/drivers/tty/tty_jobctrl.c +++ b/drivers/tty/tty_jobctrl.c @@ -44,7 +44,6 @@ int __tty_check_change(struct tty_struct *tty, int sig) =20 spin_lock_irqsave(&tty->ctrl.lock, flags); tty_pgrp =3D tty->ctrl.pgrp; - spin_unlock_irqrestore(&tty->ctrl.lock, flags); =20 if (tty_pgrp && pgrp !=3D tty_pgrp) { if (is_ignored(sig)) { @@ -58,6 +57,7 @@ int __tty_check_change(struct tty_struct *tty, int sig) ret =3D -ERESTARTSYS; } } + spin_unlock_irqrestore(&tty->ctrl.lock, flags); rcu_read_unlock(); =20 if (!tty_pgrp) --=20 2.39.1 From nobody Sun Feb 8 06:48:02 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EDC5E732CC for ; Thu, 28 Sep 2023 13:07:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232692AbjI1NH3 (ORCPT ); Thu, 28 Sep 2023 09:07:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232648AbjI1NHV (ORCPT ); Thu, 28 Sep 2023 09:07:21 -0400 Received: from sonic314-19.consmr.mail.gq1.yahoo.com (sonic314-19.consmr.mail.gq1.yahoo.com [98.137.69.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DA69198 for ; Thu, 28 Sep 2023 06:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s2048; t=1695906439; bh=e2KtUh0oKNAe6oDI0AVOcxukZgaoJiw9ioLVuekfuIY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=LuA/rzrpRTbXCHz34/Vz2AW0tN1TR2xTs2F+TZRCj7zbNvATZsWrrdjCFvX6XT+lK8pDLpxLgZmEp/UgG2QgGBTkNS8fdovwX2G710TebURTXzYQzZuNgxRa5IjrGzd5dY5goFo7h3oUvlf1W+sUge/eIwDXvNcxkXqUNugFKa2Xb2EmKj4Pe9TaM4JAgZRTLai0ZZB5ept6p8I4EEKQ6d9FfymRzHh9N5WP+cMJ3E5+0ZTy9bwELWpeFqKwv/H0SX+vUJOwNLG/idbQ9AgbaUSuwehwM51dVHsgvdNMgqgBE+neL7U6U94EBlPhFIvGQsCPHjR5lS3pUSNGxe0mGw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695906439; bh=18wWcx4DpHbDYKD0rxIEyXdOtORzeDGAJkqj1ELdoR2=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=IanO4OtK8W7Z+z3kYqelO8BFZ3zo9sbl0Cr7q4iCnVzL+xBaurTYN/B2SnOBclehAWAKAfXA+Cb7BgBemEmBLta11F66NynmvFwPL7oD3YAPJsTXB06wPpY1nK1YHekFrHfXdDPTQhQpbqlAXn7J2AmIZdOcuXRKTU5F4DdRZmePiP2aJaNXrPYTZ/nzrJIlmmNpsHW5ckLgajwzu7NHeRxMPpv1Xdr8CeXfUaEH2dTuTAQ1hvgD4oBblNsjK8/hgZNUzTK2MddLb/ZTPVz0WasL8AhCaVxNe+/LFwlM7OiwNmNWcUVNPdLak82KTBjUsdxSAdRTo41NkY0GnrpmyQ== X-YMail-OSG: ECoKszUVM1nQr3scqsgy_QSZqT.dag4M3p23TuP3Rxncn3EnCBpzAlF5MegMAYI fZqU3HVZ9kwD7ZKJXEfNxRZOwczKZDczxzXGRVbmrK7fKOGxY6iMbPLRC9QqekP5nszhzBXUjcHA IEBEPsImVLkq2_wCB14rzaaCgpIuZVl6xghSNSB8NlfSKw06VgCajJJB39ic6PIrd45hvayBjoST AIFS2aDZT_CaTJJUcDrJMSgzITzVaE.uqB_tl62wDUW_7n_OcRv4xFaG9mA0a.5ahs3g6FJ104oZ SGCi653zOpFQnziriH.6jQ4lIZZvHLMWgJx5RS3FhRXbCdndAErrTUyRzauH2UL.EWXSXjNh052l pg__6QibpPk16U1wpLhBFYMEiEAmwArIC8_C8IgeaR1d1IDj63OOJ1Fuc22PzN_FeE9tJuVwYqvQ Z7k_t8cxW.QIT5HEugpMCk2P1J3xx9UKeNASaYnKvSnVTL5GTj_I1Tc9vkW2oESNnHsfMtK5xCLt TlPsoS.VRyy4HLH.aMb.7WmSQhz64fAjGaLWI53_zrVPPytL6o5iHcdeoYSGsqR9x2GUsndTJk_O Y.2LgThAjGg7KD2_CfZV.RMmdHk4ADrDRRSdQhl5KYaHJ1SfO8tgm_We71WdN.2M_UIbpSuWP4Te YXse9Nz6fU81uNuDR3BTc6Nmydqmp4aE08l1fPyAQafcsBrVnY6Gsxeq75k8MygIrBZTU91uw4up 5NQhJfsfJ63W5oSbYSUBLUxVCOcdZQi8jq3MIbjLgS.BpwflQexI5OpHIOgnaLpt_qT1nqH_Ziwh H2jdvk7b538f6az08m4UgopEhOhIEEG8_xJyzVT7C8UHcxLwSQM_s9Dik2glA0z44mqUw5MUHX9B JRr0r_j8tAi1nbs8lHPr5QSJF4oimg8TPNBAVi4VWsZJL5B5coFbUHZZpVQBP1PT0CRP9tHcjPe1 9v1YwqVzAuvbWk4HBpaOO7bf8NQdP87A49X49BTEkInF4a5UM8Ivz2l6GB2RXaGA2ACo0tXeC63r y6xhxvvpzOkUkUTqQJDKnkrJC2VVXv9GHFx.iH2qGKs9Rv5HU_kCUgRX0EOERJXWBeJgPXheyl8r XvVOInsldqKuJ689LrEz1M6IINsiHM3PaOwW2XgNguQ85neek_8Fr7dJUbv1ziX7C7vt_5ASSbpM bVcPnuLWqC_fQlqhzhSLongU36vBM49pXGdihxhIVr0HcYGSr0byiSZBX_Y5QeKvjR81Samqud8L ayt5R2VRjYU_cFtzMe26rfwxYNrD7qLSu2T3p62WYVKci5vh4vLoDmh7puljNFto1qDCXNrqjcsG xOAJ3Xmd74snXnwOpwdQJq_9q80tG.IXSLmN6ehT9J0DX8nJCR2gOLZ2.33Qc2NZ4m1YECRgdHqu QccxSwCltEfSQ4KdLW5JUIXRg7.lamqMTLyb7uC1ON_le1eONoUXBnMI2zdau6GYHxrFQJ0uoSBo huyNKAfuey5ttJ9awfUHNsAHqmTW0hmTAxtYioUPcWLfxIMCBF0uix96398ShXCeCm11dQ8Pf7th 9Hyx5t66ZWnyBQg5OUaZHIw1c4PwCjhDcuO6f1vTHfl8X1_zZthlJ2yQRz54ym4aNZ.T482Lwer7 tKXRwxfgPvYKHbPggs.0bZQIu8PSRD9vmcq_qCzS78HOLY14TVXRVq5pMMVQHJjlZzYEl1_zZG9W KTMgXdrAqN3IlkaPhlgRVtaSqDEBEW8XdIv5H_Xq.Zq_TrK23V6YJ2NNatwjTuZJZG25SkwbyTFN ADT9On62F5RpxASXVhQWDqZtxBVDsAflQKLt_vHukDQkYl.crNFFml4UX.jJZa_wTe8VbG6JZXIx IfpHMz46CZgUYDkxAo51cHmiGgLR9Y00cSp6TRZNeoNZ11IIARowQBJqdUyTUcnBgHwvciMj1m6C Ed.VoT_BpfbBWQtljHmgdFO_B6QTm8DAA52ShqvHO_1Izh_003jQfkgU9KmTPuWdZaIj6z2pJFIf tODxzVOvi38YXMAAzUMcy5VzirJ2ObNWVadaa_X89fju8DOdCJ_bKIdG_R29V6BVKFe.oJQ1Hr_U 9I9Y7UWs4nvB9zWB4oJN5XOgNhZEPif9xhRTVDmm8rB9DFwbGanmOvwXlEi_ifWwVoFT1eC1IACJ d.FDmrB22y1X6j8qiWgVumOgBtUCQYsyeEPqRi24qheypwnhWefj94IksbQFnW12hrjBXKMb33xW Q7tyLbiThO7nKirfUFXf3wA4IIbPsDXsuCcrrabTsFdKvAaovQR33Gkguf0e7R93jCoV8zYmZoVK c X-Sonic-MF: X-Sonic-ID: bc7e95aa-3df0-4daf-b352-57edcb1227d7 Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.gq1.yahoo.com with HTTP; Thu, 28 Sep 2023 13:07:19 +0000 Received: by hermes--production-gq1-56dd58fbdb-b8g5x (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 0b8ff48338d2226adb5aa11552cc6b57; Thu, 28 Sep 2023 13:07:14 +0000 (UTC) Received: from localhost.lan ([127.0.0.1]:52224 helo=localhost.localdomain) by postbox.timberdragon.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.95.0) (envelope-from ) id 1qlqjY-000fEn-Nd; Thu, 28 Sep 2023 06:07:12 -0700 From: Earl Chew To: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org, jirislaby@kernel.org Cc: peter@hurleysoftware.com, earl.chew@yahoo.ca, kernel test robot Subject: [PATCH v2 2/3] tty: Serialise racing tiocspgrp() callers Date: Thu, 28 Sep 2023 06:06:58 -0700 Message-Id: <20230928130658.4045344-3-earl.chew@yahoo.ca> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230901015030.2469062-1-earl.chew@yahoo.ca> References: <20230901015030.2469062-1-earl.chew@yahoo.ca> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Only lock tty->ctrl.lock once when processing requests in tiocspgrp() to serialise concurrent changes. Since the introduction of tty->ctrl.lock in commit 47f86834bbd4 ("redo locking of tty->pgrp"), tiocspgrp() has acquired the lock twice: first to check the process group, and next to change the process group. In the rare case of multiple callers, all can pass the process group check before each taking turns to update the process group. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202309012304.un7EAdgl-lkp@int= el.com/ Closes: https://lore.kernel.org/r/202309011252.ItlD27Mg-lkp@intel.com/ Signed-off-by: Earl Chew --- drivers/tty/tty_jobctrl.c | 43 +++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/drivers/tty/tty_jobctrl.c b/drivers/tty/tty_jobctrl.c index aba721a3c..da028aadf 100644 --- a/drivers/tty/tty_jobctrl.c +++ b/drivers/tty/tty_jobctrl.c @@ -20,9 +20,10 @@ static int is_ignored(int sig) } =20 /** - * __tty_check_change - check for POSIX terminal changes + * __tty_check_change_locked - check for POSIX terminal changes * @tty: tty to check * @sig: signal to send + * @ctrl_lock: &ctrl.lock if already acquired * * If we try to write to, or set the state of, a terminal and we're * not in the foreground, send a SIGTTOU. If the signal is blocked or @@ -30,19 +31,24 @@ static int is_ignored(int sig) * * Locking: ctrl.lock */ -int __tty_check_change(struct tty_struct *tty, int sig) +static int __tty_check_change_locked(struct tty_struct *tty, int sig, + spinlock_t *ctrl_lock) { unsigned long flags; struct pid *pgrp, *tty_pgrp; int ret =3D 0; =20 + BUG_ON(ctrl_lock && ( + ctrl_lock !=3D &tty->ctrl.lock || !spin_is_locked(ctrl_lock))); + if (current->signal->tty !=3D tty) return 0; =20 rcu_read_lock(); pgrp =3D task_pgrp(current); =20 - spin_lock_irqsave(&tty->ctrl.lock, flags); + if (!ctrl_lock) + spin_lock_irqsave(&tty->ctrl.lock, flags); tty_pgrp =3D tty->ctrl.pgrp; =20 if (tty_pgrp && pgrp !=3D tty_pgrp) { @@ -57,7 +63,8 @@ int __tty_check_change(struct tty_struct *tty, int sig) ret =3D -ERESTARTSYS; } } - spin_unlock_irqrestore(&tty->ctrl.lock, flags); + if (!ctrl_lock) + spin_unlock_irqrestore(&tty->ctrl.lock, flags); rcu_read_unlock(); =20 if (!tty_pgrp) @@ -66,9 +73,19 @@ int __tty_check_change(struct tty_struct *tty, int sig) return ret; } =20 +static int tty_check_change_locked(struct tty_struct *tty, spinlock_t *loc= ked) +{ + return __tty_check_change_locked(tty, SIGTTOU, locked); +} + +int __tty_check_change(struct tty_struct *tty, int sig) +{ + return __tty_check_change_locked(tty, sig, 0); +} + int tty_check_change(struct tty_struct *tty) { - return __tty_check_change(tty, SIGTTOU); + return tty_check_change_locked(tty, 0); } EXPORT_SYMBOL(tty_check_change); =20 @@ -489,12 +506,7 @@ static int tiocspgrp(struct tty_struct *tty, struct tt= y_struct *real_tty, pid_t { struct pid *pgrp; pid_t pgrp_nr; - int retval =3D tty_check_change(real_tty); - - if (retval =3D=3D -EIO) - return -ENOTTY; - if (retval) - return retval; + int retval; =20 if (get_user(pgrp_nr, p)) return -EFAULT; @@ -502,6 +514,15 @@ static int tiocspgrp(struct tty_struct *tty, struct tt= y_struct *real_tty, pid_t return -EINVAL; =20 spin_lock_irq(&real_tty->ctrl.lock); + retval =3D tty_check_change_locked(real_tty, &real_tty->ctrl.lock); + + if (retval =3D=3D -EIO) { + retval =3D -ENOTTY; + goto out_unlock_ctrl; + } + if (retval) + goto out_unlock_ctrl; + if (!current->signal->tty || (current->signal->tty !=3D real_tty) || (real_tty->ctrl.session !=3D task_session(current))) { --=20 2.39.1 From nobody Sun Feb 8 06:48:02 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0575DE732C8 for ; Thu, 28 Sep 2023 13:07:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232649AbjI1NHW (ORCPT ); Thu, 28 Sep 2023 09:07:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232126AbjI1NHT (ORCPT ); Thu, 28 Sep 2023 09:07:19 -0400 Received: from sonic305-20.consmr.mail.gq1.yahoo.com (sonic305-20.consmr.mail.gq1.yahoo.com [98.137.64.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1FE4198 for ; Thu, 28 Sep 2023 06:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s2048; t=1695906436; bh=0uYxSCUmeN1rwvUTUZ2yOlvAsifAJYV7MUA5++fq0fk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=glWhCkaVxtt6JEK20DzC7F/6zvd6intLm2j/3iVWr4HDG9y+CJ79G2+3vgb/opXLwiXIiJlxJ29oTRHRLCIYBBTIWsLWi+sc1A0xBtiOpkjc3xkVyJZLl0KOcPVSUP6Co2lFOJAny3AWWZ8Z+DiW4GYUo61dZmwpnEb4vClxajjysKd8GAA100LoiL66kY4hvAWKqjrA/ahL/FnOvKiszhnJbDOaYt4DpVTuAVncXFAEed8x/7yv3VnA0hQEdGY/QiYlvHyZOA16KbiCufM7YrS63hiAJw4gyjt0btSuH/Im7pDMiSGqXUY9qunhMtrsHgpkr+PARcRdO2zSDWyXzw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695906436; bh=+eh19m8DJjetJ3idHXwuUz/nHNN3iXgy/uIkqOrDkc2=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=DqBXGbHyAQiOb8fhgfZ4HN0Ak3ioIIh04h8bIeJ6EghF/02UHV0EKzdEDzYCviD5hOo7VSJFpA7dyIjDxvaDehq7F8ajVZZaqJ6kxQ0lnwcne1I4b8P4Fni5445xIuWYZemZQFUoEDwxHv/XXJjTJTE8pYRK48chIKEsbiMUjI3967B0Y59878E/XYJygad0lMSYjR3jOmroZ4OjFvD3cyI8971fUS0JaciyahOZqVMft10GuwpqazTnU1GBzKBE7cbtuFM3zvISoG3KJodumdOp3HhGwLGwJpXheATZrxYkfcDCTsBSeOIpc9BHz285u+2VxACSHu03l87G9ovvKQ== X-YMail-OSG: wkbDK3oVM1khKDOzLee.9_GQO5PD3jUvyfcmBWVO2BDYi.gPzrIIpRzywAwPg.k p6cyK5aZ1CJbMXSWY.lmjclhvwyCX4g1_6QLpIm8ix956jprO5EJKrySKFNj2niEqbWQjr2KKLFT 6UKfncSsNX5eODzCOxYfpMX6M27zmPB_KrJWWVPN8yCewhNOV2yxF.EC0uGwQDezUFrtVH4yiCH0 EtI7oD88d3Y7c6gXSbzD4y1GawmKBQjaPgW_Zg92qahooQlMKbDejAoSbtYoDWodgLvdCwzLTOiu sNLtTEtH0O.Ew7iNOGDaXvbfQRO1qXCi37.OhMT42Fhul9a0bhek9ByW3X2fkOZvnbXYboaLNIY5 LHScV7RFLLd9EINQAomK9DIGs4VtVyZ0Rj1eoOHax.K1vzwShgtyb_DoptL5ZaDmdL2az_VWA15c JcW23h8aSa_y28cHhJuHnv1BXlDn5RKQDmCJ1ir5muX6iqgLTMHV.MuoqXNoBqebx4_YZVg0NyUY fIMw_uRMCzcZ9Pd.MUY3BlXO.doZzdbp0BKwfsn3yiJUvePHvDwqnTW28xj7uY8h1DjyqNxzqJC1 YI4svJCMuxEREAYmVEZC5hENF9undjgTIcRYBomiwsVxwn7CFrjRrDMoeU_PBrMgFX32LH5bU.S2 YOgDICRSs13v_wKgWXNSlpI84kjjt1xFxpfySbpwM9mn39hzUjG_qQMTGIDByQsRRPtP9N5L1CVW vryJBMJGQpZvQl0FLcMl_Uf9droJv1nq52wVc4B7E6gUKtjQ.0fRU8N9XHPSryp2b1NEjG_VEyVK SWpZSBhjk.5BkqkYPbo0urgO0ni4g08uGiTC03iItplGXDBBWWKPH9Ktb8MYouozLU_Sy0V9iMkl Z47WJmJsNIB5rlvnO1uKM3lePu9F1Hz8fxkESCguMrSVXx6SnviVqon7y1jEnszezmzzVhP0AVMd D82KqWpsMhWxbNMX4ojfd6KDzdO1r1C6uWOLPZvBae1vvPkHR7VtpfqxxeUwnfPWX.v5UsLaOSCj T6T1la8HfR_JK.KI8OBB8CHMCJc6_JviINX4HisRvjkFlGo0WMSZFNs.Eqgcj31_b5V9l82kOy90 x4IhaWqwNMLuk9rGtJckbP9ymnx7_io2SFp7KVpe8B5X9W4ZYr2Jt.Bx3m7NGjaZr2L8YP7Q0MXI tH21JwHZtts3f1F3N.H28uqAKMi5mrR55qUarRd6Ppvplz_VedwndIVISvCR1aJNB_K3VLOGplh0 JehTsoxzFQ0ZlsnNMY6XnP3Nhlv5EpGLiol5SkdEX8NW6KU4iOmZvxSHUQtemAdrS_J7pYGcJv3s sNMQhshUAau30GNbCUAGpS82FBAuU5JLgh6hTHm0_Wl1z1MWBgBC1zOOpSZaQCrsCHkXIOgdyC3u ULDQqEXMwHhfbppJZx2ssnnS3RY2wBT9zl6x.xOsaWA7GQbausqGmcqXXZx._w06hYcyygQop6wL 3FfRTThBiYNspwvdqr4jjGElEZ4fXt_aJMA0HtNsT_fmgAE7q4GwTaGGCy5.01A7yHO1ArZxPvXQ N9hK_Sy.IRP3DhUWMlUi.atCzojQR1ewnch.zu10O8X0bXjJYIeJe7g2kgVLYbW2KHRMTBlXeFnZ Iex8INk_Ysqe0M_H9EtL4UVTFa0qLgQWE7f1anQy626TLZ.GMqEyVBFEDbikrwv3b_tr0E0XDRBc GJGi7HQyzaI4hIGp9cpmisl9njAF43YRgnO3yv2Bx56WvcMorK3Buc3WWHPOMJ_KUD3Itcz5apll o4yofQdRo4ldesYT5_Yq6DOtFJ_Po04sBU1ka91svGk_6XzM7qw_VBygZK4XopHxmGtzFSRZdLiX Xr35GrX_c2hEoGnowpjlz5XJ7VhbCE9qCh4mOmx94E90rupLnRD8qhPm1tsAPI2HCh.GXLOUaYl2 bz5NSguvG4ef1ns8SmGUyDSMFxiY2OmuIBQivIchN57fFtHGe_QmN9Nh6aZsUgJ.nnnSY1aBKUo2 xO0YEhS3kLtbd14j4ZXryQlY6CQ8KQtm3pZfo6axY6H3Whu2qMzA90gkX_ejg3ZESfDvX6ptyqL3 bxNkfY8DO1Aw6VIwWzxiuEW0N1XjIoQhWBaBZjv02djv1GrU77RwxE6OK3FHU32py__SSTvy6Wdd Tdnx7yLMCOWzBtGVfYrXQKDAgcjBXV0xDGBMMTFXb1jIueccbxe9vndRYT_wRKM5H_LboZRAyiCG i1DiirsJ6RZrb4j_KGQeVyunxLkHEbZBmBko8Q.xJrX8nAfp1EjT.WqJvb3MLVxV3ys3hd0jYkML 4k5C. X-Sonic-MF: X-Sonic-ID: 55d4a9ad-4c71-4bad-8a26-6fddd571f55c Received: from sonic.gate.mail.ne1.yahoo.com by sonic305.consmr.mail.gq1.yahoo.com with HTTP; Thu, 28 Sep 2023 13:07:16 +0000 Received: by hermes--production-ne1-5b56858476-lphgp (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 82903ebb22bd0c45e3c9b96810013fb9; Thu, 28 Sep 2023 13:07:15 +0000 (UTC) Received: from localhost.lan ([127.0.0.1]:52224 helo=localhost.localdomain) by postbox.timberdragon.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.95.0) (envelope-from ) id 1qlqjZ-000fEn-4T; Thu, 28 Sep 2023 06:07:13 -0700 From: Earl Chew To: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org, jirislaby@kernel.org Cc: peter@hurleysoftware.com, earl.chew@yahoo.ca Subject: [PATCH v2 3/3] tty: Move task_pgrp() after tty->ctrl.lock for consistency Date: Thu, 28 Sep 2023 06:06:59 -0700 Message-Id: <20230928130658.4045344-4-earl.chew@yahoo.ca> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230901015030.2469062-1-earl.chew@yahoo.ca> References: <20230901015030.2469062-1-earl.chew@yahoo.ca> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Refactor __tty_check_change_locked() for consistency with __proc_set_tty() which calls task_pgrp() after tty->ctrl.lock is acquired. In addition, spin_lock_irqsave() can block, while task_pgrp() cannot block. Fetching the process group immediately before it is used reduces the window for inconsistency, and improves clarity. Signed-off-by: Earl Chew --- drivers/tty/tty_jobctrl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/tty/tty_jobctrl.c b/drivers/tty/tty_jobctrl.c index da028aadf..e82ffd875 100644 --- a/drivers/tty/tty_jobctrl.c +++ b/drivers/tty/tty_jobctrl.c @@ -44,13 +44,13 @@ static int __tty_check_change_locked(struct tty_struct = *tty, int sig, if (current->signal->tty !=3D tty) return 0; =20 - rcu_read_lock(); - pgrp =3D task_pgrp(current); - if (!ctrl_lock) spin_lock_irqsave(&tty->ctrl.lock, flags); tty_pgrp =3D tty->ctrl.pgrp; =20 + rcu_read_lock(); + pgrp =3D task_pgrp(current); + if (tty_pgrp && pgrp !=3D tty_pgrp) { if (is_ignored(sig)) { if (sig =3D=3D SIGTTIN) @@ -63,9 +63,9 @@ static int __tty_check_change_locked(struct tty_struct *t= ty, int sig, ret =3D -ERESTARTSYS; } } + rcu_read_unlock(); if (!ctrl_lock) spin_unlock_irqrestore(&tty->ctrl.lock, flags); - rcu_read_unlock(); =20 if (!tty_pgrp) tty_warn(tty, "sig=3D%d, tty->pgrp =3D=3D NULL!\n", sig); --=20 2.39.1