From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31409606A31A for ; Sat, 31 Oct 2026 00:42:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=G53cWaK+; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=Piuh0sKQ DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Unsubscribe-Post: List-Owner; bh=CSp+JrDvF+4x5emqlEOYM8+al5h5LvfzmXFhEk2YqvM=; b=G53cWaK+jPuxAy cpip9CrTWxfIFMFzDI6g3aHrYcnwYxFMj8rrxokt7NPCfwNbwBWweOIeHuFUHs9ZHj6dV5XIlfSer e9A3fvwqhJr0KOOBPeHC1huyy35EY3UqyAm+SOWzxrYkUE9S4pytvGaTr9omnhEoCj0CRNcmxtqCq 9LPo7U0jXCnOz8sDJJ5xf2AMB2UobV6Ua7nH9ybt3tPN+y2DJXeGrgHzgkm/TCE3ZVeVrrECFruNe 1klrIco9+LVknlvMA1xrZ1wg7JoJrVITd+S4h/fc/PXSNQhK7syezbcaqVwon68REfQVALNpMV6Ob Vq0lzOFabuE4NgC/RmXg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xMxB9-0000000CmyM-3WLi; Sat, 31 Oct 2026 00:42:39 +0000 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xMxB1-0000000CmvV-3b2T for linux-arm-kernel@lists.infradead.org; Sat, 31 Oct 2026 00:42:33 +0000 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-36a0f27c9f4so2191361eec.1 for ; Fri, 30 Oct 2026 17:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1793407351; x=1794012151; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CSp+JrDvF+4x5emqlEOYM8+al5h5LvfzmXFhEk2YqvM=; b=Piuh0sKQflVNBc0vtrSqtqN5+kN9IYvGyLv8FSqd4LpWD/O4nOricdOO0ZQYly9gNI TvSUdaOhHX8dbKa4L+IvcXnmIgC3wjOA7yK1SSK6BkJAHkTM/7rBZ2hnalGg9TLNAI2r Y3DnR6gM/xghjWrNcAb55v//fgAEqGcRFHEYK8umsvQXYCvdW4jF9k0An3jHegecHcGm QlIVQfgcDc6OjRegBiCsePSv7jEwBMb0TMmmp3yNIgOgA+7cgwzi3paVXAd80qx7TtP+ s9Of2YuExpHwK5nrl8jmZa3lWX13uJBuTIePLknKHcQfUiBikB967iEWX4hlba+DDGar N+Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793407351; x=1794012151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=CSp+JrDvF+4x5emqlEOYM8+al5h5LvfzmXFhEk2YqvM=; b=ix/n790zQR/qkQWRg3xDnQ73PcbS4MssvpeA6ikFmkYHywRUPfJaJAxxt2qi8S30F0 Zw/5dh2E/anlkqQJyLI/OcmuXT4p7o8iKz8NDFr/iKq48fq3UYzJp83UjshXuIEboJEj GCF4YGu6MjTxSjOdZYGldqqpJ6xaET1fjlgZwvxSyJJZmaeh6kxNTG48fiJJODczSZvM JIvKeiWWFAeWwPuXghVTilaF+gSFp+nNAW5KkhS8fmecVT88zxFOCSm3htc2c0TiJRi0 tZYNkbB4KBLvn/njWfpfYgMzFLIrNEBjCA7/Aphfm7PPfplx+5Dd4+Hs+Yni5PcEQ6Ai 8v0w== X-Forwarded-Encrypted: i=1; AKwUvBwbgZIdNkKddVjBC7cwHzeTbOF5GspuOdRi05QirdG45H25kQZYS2oh/IP/0HXjzt+fPtuwr+9TxPQFZbbZ9Cjb@lists.infradead.org X-Gm-Message-State: AFq9FYKRiXnNwWCyA00bXt/GYkpJ0KdUam4r4YPa1KqfXxi6CZfTwCO/ 5o5MWSnjE9pmDjJGsFfWhzi42FTCGsxCTVhq+1ocbvOF9zGwzRLYncAL X-Gm-Gg: AYBFou24GkxQMX/qHxNsnBAEKwmVo6P+YZvtHIFa5LOu0Zr7QXSf3al5SCmikM/B8km cr2MXnJn/+50TlB92VBjZPGPRiaQAhAwGV+yBefLRk20LYqglIwsifnSLzFLR3qvSilN95hqh1G P06pb7+5GQUGhqhhP9yn79jpF5YSP4uB8N7kuEbua1mQTSI/qzxZWnRV+CsoUr4uDTjo64tIgJw hF5DJMgR3smQ+npYn6RBqlZy+N01ckutQotDcUBwtFxX2DrPjqnHzPHli1T7jgkw2sgwlbOTWC5 WmYUCMSdPz5G8mrEloA9EmcSFZgjtNy/vJMyo4uDC6trkJID6Gbrvs6o8nLoK1STWLlAE+SB4Mk pQ4UgTy+5zAv6ENBN7AEjIavCnpLMmF3Lrt39uggadVFkThhCY5JhEJ2I8kmn5Hpqe0aenkJIEF DCOX3iJnQPgHSGbL6YjcB0bf9nmErZM97Y1LhTwcmsyrGW612vyuc9HQ/itC+HpErb3r3KJFt2Y bIiMZrpjRvMSzX9Jpf9B/omRC4H6iGgdzRA1sCommFYGWeY0wyhIb2XS9p2cF8Qasu2781hU4vG 1RuccalXv+GjwhhvGWjWZrL0J52ymSoZsKNPgqTOz1ellg+WDcnZfADYrN9B3U8oPFsJSiduBdS HV4qQ2LunIi1cWMFr1r1sk63BH9TRwQkkpY11QZt7SkH0B5j67TzkHqbDb01F4RZhEuV9ckd+Zr xo4YcU4igyF4Xg6w0= X-Received: by 2002:a05:7301:6787:b0:361:306f:c32a with SMTP id 5a478bee46e88-36a42345b05mr7287000eec.11.1793407350704; Fri, 30 Oct 2026 17:42:30 -0700 (PDT) Received: from brev-9gdpyq8lp.ap-south-1.compute.internal (ec2-3-110-210-194.ap-south-1.compute.amazonaws.com. [3.110.210.194]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-36a428af91bsm10889097eec.8.2026.10.30.17.42.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Oct 2026 17:42:30 -0700 (PDT) From: Samarth Narang To: Krzysztof Kozlowski , Peter Griffin , Greg Kroah-Hartman , Jiri Slaby Cc: Marek Szyprowski , Alim Akhtar , linux-samsung-soc@vger.kernel.org, linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Samarth Narang Subject: [PATCH 2/2] tty: serial: samsung: do not re-arm RX DMA once RX has been stopped Date: Sat, 31 Oct 2026 00:42:17 +0000 Message-Id: <20261031004217.3340610-3-samarth.colleges@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20261031004217.3340610-1-samarth.colleges@gmail.com> References: <20261031004217.3340610-1-samarth.colleges@gmail.com> X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261030_174231_899251_712ADFCA X-CRM114-Status: GOOD ( 12.41 ) X-Spam-Score: -2.1 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 s3c24xx_serial_rx_dma_complete() unconditionally submits a new RX descriptor after each completion, even when reception has been stopped or the port is shutting down. A completion racing with s3c24xx_serial_stop_rx() or shutdown may therefore restart DMA after the channel has been terminated, potentially allowing it to access the RX buffer after s3c24xx_serial_release_dma() has unmapped and freed it. Only re-arm RX DMA while rx_enabled is set, and clear the flag under the port lock during shutdown, since the hangup path can reach s3c64xx_serial_shutdown() without calling stop_rx(). Because the completion callback also holds the port lock, any descriptor submitted before rx_enabled is cleared will be covered by the subsequent channel termination. Fixes: b543c301c2c5 ("serial: samsung: add DMA support for RX") Link: https://lore.kernel.org/r/20261030162334.3000737-1-samarth.colleges@gmail.com Assisted-by: LLM Signed-off-by: Samarth Narang --- drivers/tty/serial/samsung_tty.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c index 2f6c69bec..3f2346f4f 100644 --- a/drivers/tty/serial/samsung_tty.c +++ b/drivers/tty/serial/samsung_tty.c @@ -622,7 +622,8 @@ static void s3c24xx_serial_rx_dma_complete(void *args) tty_kref_put(tty); } - s3c64xx_start_rx_dma(ourport); + if (ourport->rx_enabled) + s3c64xx_start_rx_dma(ourport); uart_port_unlock_irqrestore(port, flags); } @@ -1165,10 +1166,13 @@ static void s3c24xx_serial_release_dma(struct s3c24xx_uart_port *p) static void s3c64xx_serial_shutdown(struct uart_port *port) { struct s3c24xx_uart_port *ourport = to_ourport(port); + unsigned long flags; + uart_port_lock_irqsave(port, &flags); ourport->tx_enabled = 0; ourport->tx_mode = 0; ourport->rx_enabled = 0; + uart_port_unlock_irqrestore(port, flags); free_irq(port->irq, ourport); -- 2.34.1