From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 581A9331A57 for ; Thu, 11 Jun 2026 03:39:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781149166; cv=none; b=HgLHdZv49vf1hNg8u/qid8y0DA2HAZTDUBg16zwBmzELIEW9OsfqY4Rh6eiyYGhxIaet9wF2EL18eYwZwHA09wi6bCiD5qz+uyyJEnc5tSNcJDCjwc4/e1Cu71l8amO4aOT7O3TxxS0FvAhtJGk/987BWpkJnsddci9gt7k94j4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781149166; c=relaxed/simple; bh=Vo8Rw9tt6g7PrwiZR9y054LqY3f8BJvLsPe/+9ij88I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R9nY0DwZglORG6CoGEIKKtZk9UHVy0HtSdLUflspR6BgBl3ZDyPPE+dLCqjuj4pmHIuHZGGHbrdB4xrCN1UVtqTG5bMob14/ZcAkB2u/b0orePFLBVkfQXcI337nhdQWZj1E9zUwb71IlDcSJexCURsa4LWVwEBDIk1fLLYaG9g= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LHfCfuMX; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LHfCfuMX" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-84232e83ca9so3190076b3a.2 for ; Wed, 10 Jun 2026 20:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781149162; x=1781753962; darn=vger.kernel.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; bh=JnZoQBUpFkHjuMRCFUnZLcjmhUm98D04lIrK4n/JyBE=; b=LHfCfuMXcxiZDYxX7CxebGjOxEhPAj4qqXg3UstkN7FJS6xDwG8lQq4ONRz3r5kWU+ 5zo43Vw5Fb8+vPGfHZLoh06+vw8QPo4bKgDv9eKnvTiV4rcXQgI8AkICq3C0abc/T+dg qJUVTcvgz246QnzSMfooSCoK6UHmCDogreYCEpg1MJqF4Af2Odly6XgrMcjqnLiDbfOX xa0OxJguP57KTod2NUsAecI27ZhELuE91Dsiu8mp8+2rCEKonWtIKIxe81WLHj7bAINi 03XAZ3k3C2/4g4M0c5IUsPIyzTSDh2c2cWOYnqsoaAwSj45aitGa9D1xVX1uRpf74hSr Nmog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781149162; x=1781753962; 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; bh=JnZoQBUpFkHjuMRCFUnZLcjmhUm98D04lIrK4n/JyBE=; b=KJzoK/wCyltCSVVwFq6+65kk/tXtlK/mL48XLbhTUjSNgDZ4ZOo2qw+olxb3QfImRg /cep3VRDYjw+uV8p3CvGAIJkN8F9UW+mTyYRN8XzGSnUvwJM7ue8odQ1szehgjgYcO6k /gXw1TNBjpG/+CvgJp7ScOVrClU0hlvyGw0vwMO2UzTRMnqF+p2YbO20g5AE/7DW5QRX gYW8mDoX7nXKxfzPTEV2u6SVelPg8wOe94acEZp3soU4ZbNldCQ8m2qZqOMO+AFCKsOd /IqI77kCGtG5+lyIa7K8V9DQWTtoeijH9J7hXNpJYeLwnhdDSGfWS10hiRxPC9t/KYu7 x65A== X-Forwarded-Encrypted: i=1; AFNElJ9tI7CpFgso/bPg9WUGooiH3tH9RyN2esbYcFwQqtFS3Hq6X8iWsKrykBhikD5NVngpedXoi2rgOR6iyK4=@vger.kernel.org X-Gm-Message-State: AOJu0YxuqA7s/BZ2WU53+s2wEsffk7EO+w3t7CvtLkkGFSb87FtVZexj JpMnQRlz3npGuQkCLQgCfe6lQOUW4Iu1UY78+xA6nJYcHM4naep/l4az X-Gm-Gg: Acq92OGECuu5dBBRUdz6NP/IGsk1aj3yuZNVTq1CpeFnOTRahsd8LagAs1oVOD+FJzU aPL7sTyTSZtPWNXxu15iOVDzStcupieWBe15L7AGC1U0yupaghLd5XKYDaFUE1gxzkFU1odoCx8 jnUfNLrvReKvrd6AYVIVn0Dk1z3h9JS/iyqMK7K0V+swQmxrVdrTJyQ5/LL/IFwWGxOFPd7nP7Z 7P7aYIVjHIKHp6YnofiNnyFp/55y8dj+hbh8PtAt2UlER6qZ2VF0KevgR+D+h09i41iDm46/vJN ce0RAaDjbuomG/ee0/qg89CZTaIUGMg+raAmi4W+2B59QTbif/oNblnXC0EhiMxvgyuRnl+wB1u 6BcTFzxtNDKVm0atL3gbFSa7BgqOuoccVp6bVRoWZAmwQHIfAkO+RoLTeliBt5l7+ZXC0vwevN3 zSz5cRKIsvOgk2DTIzxEGxdkwiU3uT6kjiIoZOd0W1vYqrxE0MJMPLyWscTvGrAM0vQ5eJV5kdl zeBazFlyjG/2tPwO/+r6f8edrr4qTcMb2H3+em5Tu+jpQ== X-Received: by 2002:a05:6a00:1705:b0:82c:6f07:299f with SMTP id d2e1a72fcca58-843367cc762mr976724b3a.14.1781149161619; Wed, 10 Jun 2026 20:39:21 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84337bb47eesm334548b3a.13.2026.06.10.20.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 20:39:21 -0700 (PDT) From: Rosen Penev To: linux-serial@vger.kernel.org Cc: Greg Kroah-Hartman , Jiri Slaby , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , linux-kernel@vger.kernel.org (open list:TTY LAYER AND SERIAL DRIVERS), imx@lists.linux.dev (open list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE), linux-arm-kernel@lists.infradead.org (moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE) Subject: [PATCHv3 6/6] serial: mxs-auart: terminate DMA before releasing channels in exit Date: Wed, 10 Jun 2026 20:38:56 -0700 Message-ID: <20260611033856.6476-7-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260611033856.6476-1-rosenp@gmail.com> References: <20260611033856.6476-1-rosenp@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit mxs_auart_dma_exit_channel() calls dma_release_channel() and then kfree() on the DMA buffers without first terminating any in-flight transfers. If an asynchronous DMA transfer completes after the buffers have been freed, the callback will access freed memory. Call dmaengine_terminate_sync() on each channel before releasing it to safely abort pending transfers. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/tty/serial/mxs-auart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c index fe48a372d022..ec2c60dd0f52 100644 --- a/drivers/tty/serial/mxs-auart.c +++ b/drivers/tty/serial/mxs-auart.c @@ -872,10 +872,12 @@ static int mxs_auart_dma_prep_rx(struct mxs_auart_port *s) static void mxs_auart_dma_exit_channel(struct mxs_auart_port *s) { if (s->tx_dma_chan) { + dmaengine_terminate_sync(s->tx_dma_chan); dma_release_channel(s->tx_dma_chan); s->tx_dma_chan = NULL; } if (s->rx_dma_chan) { + dmaengine_terminate_sync(s->rx_dma_chan); dma_release_channel(s->rx_dma_chan); s->rx_dma_chan = NULL; } -- 2.54.0