From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (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 870273655E2 for ; Sun, 31 May 2026 02:06:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780193164; cv=none; b=pgY/Haj238iix2WxzkpFGgyyb/0+utY/7zEEa2J6bnw/45pbJ8IpghE3DU8r5cNbcYalh3Dn58AtawWVXKMRFVDRPqRW2X4SzJWa3LaI81JkmFmifck4VuLYHajIftT1/t+LvdKe5b4kQRU81cA+Pf1huHnPf0eB90S4SHTyBh8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780193164; c=relaxed/simple; bh=+vEmttP1J8GOoBDHqfYa/fLW6iRDwX0cvWqBNR8PBec=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AhUZs1F3300VxnaqR7+OKbgFHq3iT0bUbmeDUaVZwsPEb/vdeCaOlCo3ylaQQTUOkajPWkaM4ugvIYXxCtw2L/ZkxP/n+q1kgBdQNIbX5UwkkMf9950q19t/jlv1HJiNq/vn6Oue5hzOKgEvm83xBSCHO2+LzjiVi1cTo8+v9xk= 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=IcXsBrBq; arc=none smtp.client-ip=209.85.222.181 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="IcXsBrBq" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-914bfa75911so958539585a.1 for ; Sat, 30 May 2026 19:06:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780193162; x=1780797962; 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=eyq/RMSWHbsnIwvCCwV5ErKhL2n7goa+ev6cXyqX25M=; b=IcXsBrBqGgl9KJDaDJHczozAMurrvj6t32FIqbkHu9gnKHPTpA/OtdJDqcfjBFr/0c Y6kaObaTJmC8B3etvoIMN5zaCYUsqC8Cs2n6leVftI5pk7nb/x6TnupkzMMQfoQwQGGD pG2GG91Z6uYNVCLdpY1B22xKFwWNFz/HRVoNZBs02yqL7vCCM+RDmmmdEeYh9ZvLg9Jn CSJYQyPoGoNIGmyNvFTh3YNRzP7QdTcyeX2jl3bFNb6HPaNco60kRY1uVfuP6+DSKF0t w7NIedjL5lAXyZKqwWZCAogUeu9WiZXWmxtk9XLHVN1PnqvaKKIehpY8n5PwqMbplqRt 9t8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780193162; x=1780797962; 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=eyq/RMSWHbsnIwvCCwV5ErKhL2n7goa+ev6cXyqX25M=; b=edm3vA8nABX/93ci8Nyc1YHaQtKuStE9JxdTo3vN0LMkoCliyM557pAMPFFbtDCPCu i46nGL6gITPiePDL6fOxmZzT2TxWnJLDHc4F8tJ36iRJwjXZXJ4sqGnpKb9G0o9iv7+G 20q8CgbZ9entOvRZn3QH+kPLx2dQRjBk91n7EIWFnkGIqqCo+lVg9OTlhlMubgag7HRU MZbXAavjOAa+z24NhMFvdEAVSLNh62i2gidQOsFeUxz9p+hdzFb/67jbE5T9KupoN7BE EBTljoNXyRj2/huYbIdJ0PsHwpTWdnTqr5fK8XmdWhC14ghMw0emKYy5U+EOE0TX40Bj lERg== X-Forwarded-Encrypted: i=1; AFNElJ/2s5FGkjTiSdTMqEyqydJUtwFZq9MrKi7vZD1skj052TlsoRVEbgmQ5bsa8AQWFw3j39nNnFNOUZ7cVzA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4bKQM7T6wV45jE5ZkkxyAIHqWXOKkvLQ0LDrB3eI1hWlCeCIJ e5XAF/6hYflZ8qUDG6iZNFrKYlTyrE1bKYtBCoi+Zbk5+YrXQFuqqXuVT73T+2nE X-Gm-Gg: Acq92OFA5YfsRxiYYjx2pEFKBw5+nTsEjn09UiDtkus3C/acw05hs28MklgW5m6m2pq Gv8SQSPPgQo/4d5xWk+klRjZReVgNKdr/RGe7qvgRscIUOoYif/2QOmuWxqnAbDN3gPdAZth+tN aamFH0VRTgTiRJwQA8xQjMCOLpeN2f/YV3/YOL/5warWJ9tZPmQRZvtK+xOWNZoZukGi2EjuCci EihFq2M0uab2dsB1w9VBVND/qfib/F3fR1cJLr7epw0JXQw69PPJrsVwtZy6BMUx/aHKg1wTqOF mn4qr12jvnfVFbdKdPRg9p+aYTAJmGiyzv2yB+KHs8nofiI7PPuVVGfp2o8Q+DEBMzpRum2kg7h qGAOdZ08fXXoycBlrYAvcOvpGrihrXEYeAdrmKtwt3tLt9Z55OXsPOmbXS6rDXdhYa5jC1Yhb8M bvgIX6UZ1eq2dHtf2lH7iCJP45NSz7MsZWNTlV+DKXQs4lsIQAbET/a1uLbJBjdLc5UiOzlVzU2 OeJMj3EwatskPJNosKntWTUNB21m4/DRMPFSzAEOsNwiw== X-Received: by 2002:a05:620a:470d:b0:914:b31c:7001 with SMTP id af79cd13be357-9152f8ce09fmr1030710685a.6.1780193162583; Sat, 30 May 2026 19:06:02 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id af79cd13be357-915324745cfsm620246285a.12.2026.05.30.19.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 19:06:02 -0700 (PDT) From: Rosen Penev To: dmaengine@vger.kernel.org Cc: Peter Ujfalusi , Vinod Koul , Frank Li , Haotian Zhang , linux-kernel@vger.kernel.org (open list) Subject: [PATCH 4/4] dmaengine: ti: omap-dma: fix interrupt handling in remove Date: Sat, 30 May 2026 19:05:35 -0700 Message-ID: <20260531020535.594460-5-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260531020535.594460-1-rosenp@gmail.com> References: <20260531020535.594460-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 The remove path had three pre-existing bugs: 1. Interrupts are enabled via IRQENABLE_L1 in probe and alloc_chan_resources, but the remove path writes to IRQENABLE_L0, which has no effect on the L1 interrupt line. The DMA engine can continue asserting its IRQ during removal. Write to IRQENABLE_L1 instead. 2. devm_free_irq() was called before disabling hardware interrupts. With IRQF_SHARED, the hardware may still assert the IRQ line after the handler is freed, causing unhandled interrupts that can lead to the kernel permanently disabling the shared IRQ line. Disable interrupts first. 3. platform_get_irq() return value was not checked before devm_free_irq(). If it returns an error code (<= 0), passing it to devm_free_irq() is incorrect. Add a guard. Fixes: 2e1136acf8a8 ("dmaengine: omap-dma: fix dma_pool resource leak in error paths") Cc: stable@vger.kernel.org Assisted-by: Opencode:BigPickle Signed-off-by: Rosen Penev --- drivers/dma/ti/omap-dma.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/dma/ti/omap-dma.c b/drivers/dma/ti/omap-dma.c index fd1ad3b4268c..ad90ca226db3 100644 --- a/drivers/dma/ti/omap-dma.c +++ b/drivers/dma/ti/omap-dma.c @@ -1859,16 +1859,17 @@ static void omap_dma_remove(struct platform_device *pdev) if (pdev->dev.of_node) of_dma_controller_free(pdev->dev.of_node); - irq = platform_get_irq(pdev, 1); - devm_free_irq(&pdev->dev, irq, od); - dma_async_device_unregister(&od->ddev); if (!omap_dma_legacy(od)) { - /* Disable all interrupts */ - omap_dma_glbl_write(od, IRQENABLE_L0, 0); + od->irq_enable_mask = 0; + omap_dma_glbl_write(od, IRQENABLE_L1, 0); } + irq = platform_get_irq(pdev, 1); + if (irq > 0) + devm_free_irq(&pdev->dev, irq, od); + omap_dma_free(od); if (od->ll123_supported) -- 2.54.0