From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 B4F56374A1A for ; Tue, 9 Jun 2026 19:43:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781034213; cv=none; b=kPc0+nbygNmOGRzvqmfm+DW3E5eKytRcJ5xt+/4VRnMW3XElnpqd5dZUHiFpXFydjA02r65l/NIjlI6HLyFNcXwXj9CybsIWSf/4PYi5U0rQEgDVrGhfOUdY3Ys0LqqrFKDgmzsYqvAI/3Tb+21zXv2pd3p/QusXYqXzc83lxxI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781034213; c=relaxed/simple; bh=+mCSz8IgsZJSF/994en9Jy/gdzM11kUCuMV6CSTi5oQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=s7AHwReZ/70uPCDLPs/tNyx0bYE3FeGxrvvWW2ceGmhMBTLNbt4xLtZF9m93Xr9bGKm5vtbQZsdJ221Zab/bRfataESHrbjli+TvDGwvD7e7kFHJCw21q/2sf1BNWW4DZuWuwdQv57Jkyv/HyokzSS/LFcA6gg1gWKwZPFRgj7Q= 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=qXcl/LCW; arc=none smtp.client-ip=209.85.210.172 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="qXcl/LCW" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-8421f0e9c5bso2737831b3a.3 for ; Tue, 09 Jun 2026 12:43:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781034212; x=1781639012; 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=5SP6y+7hWipoDG4pW4BKYAHsl5/WYOj5NyOOliWtuB8=; b=qXcl/LCWTLagkQZ8Ym22g4cYtKJMLLnXtS20cpvpsSLLZZo/2VKVUKfEDt9SEW6AAp stcZ6N7YYesH56WYltfBfTmpNx2MQYHHEa+Fh6FB3IZgZ4lFtbzR2EZs7IJF59hSHxVL pPq1G26yI29UPs1RNfIvTyv3ojgGbYlIWqTzswjSSKqWeimB1iL8uAtYLml5GjnzqJvH E76/YwkKsb1sNVqRa+fa3BI+B1J/gpv0diiRyENextlxq4g94sfl+9FZ5vNZ4nbgW1Tx 0ixZgN2wV8yjAgMlO6EEf3jOAptK6EoQbw62qst0ouYIZVk6SPFsDuuQxFsq9zbkzXGt HsDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781034212; x=1781639012; 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=5SP6y+7hWipoDG4pW4BKYAHsl5/WYOj5NyOOliWtuB8=; b=fbNZq56C9U7wOjqCJV1qnzgNgS4fC24ybYovz8lT9ZKlpyUqDI4uX5u7cuVtZJEAbb nsZKku/28ZwT6FLQwWcLuSUNlwQ5HcVUwVVrakiU1LhrSLRn3I+FZoTzqs/rtfp2mrmU Lq+hXs2Kpm1agfFTj53TaEeLeRq5fhlJw2jhLHeRd/F3tlunFXlqA7RwAc9UmLM+RWR6 Gvvkz9AvmhjLnxPoPhl3mIh43Dq8Go6TyFrZd3Ca8oHy9gwviPHkQ3gSwQIISBcMa7Rh L983OdP5EibfY0ZwDriTG359wuevUCM5dMPs+Goy2i6LhK2qEkGVeVU3LF94GdDyS70+ qNYg== X-Forwarded-Encrypted: i=1; AFNElJ9TdiA6dPjaEKSfRmoVUYofWbhwgGvO5+FeELOI25nKrnAWkVTvON7lXp/zKESe5i7jVc06cQ+JlQUXTm4=@vger.kernel.org X-Gm-Message-State: AOJu0YwR3nBIlrMmoPW6oMVVawl2dlfOG4OTssntNy9hGdzY2NPfRnvt MzwM1qBZ4hWE8eeo5PEHkY3n+o6BV88M5BffGGmXxpy0qQD9EPoP3Hqy X-Gm-Gg: Acq92OF7SSD+fTP9n9rm7KrgjJFWXEbaqxz0a3sdE/igaqNAOcgDgeOVyu9DUbkyxAj We3SD1ibHiQkDJB6OToiG4pVDUqmGAIgWRfafGsUhaXe4+1Vr/Lq3L98rP9/V08DlN6o5TpEX9B 5zM/ixBS70GbFzuWGmL4Z8nPPO2J6DkhWvJeWW5FH275tc/NAH9wGdpGVIRN9W1xqXlhxlMV+TC wuXTMzKwLKxzyFF+bcyRQdrqkj0SKknMkZkJF+w1lRrUvp5NlTAhWN1QDIbtTNR1m/vh0eefO4H jy7JRhC2g4x2OCGgn0eReXfR9MmguWXMUublKLBgJhRgq8Lx90E3ez+5O3weiKuu+yBv3yWn3uL g5g0Z2U2mGjLb2sYhOPnOmLyQKi/5xelKvwdycPRRCvfoh/I1FVC3GkiYbWKo6sYLVZBC/Vy5C+ HIvgUNEuIzyoZiufdnAUWLuMk9WY4K2F6dPts3Dsn6xFU4KRQmjr20t2LO3lNJ1IGIQUmniSMrD Lj8X53z33i+64x/eXYN2RZ3j4qVU8LjD/XwQkJemnODSQ== X-Received: by 2002:a05:6a00:9084:b0:842:7e6f:f487 with SMTP id d2e1a72fcca58-842b0e5cdb6mr23437785b3a.15.1781034211948; Tue, 09 Jun 2026 12:43:31 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-842828daf76sm22715683b3a.42.2026.06.09.12.43.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:43:31 -0700 (PDT) From: Rosen Penev To: linux-ide@vger.kernel.org Cc: Damien Le Moal , Niklas Cassel , Grant Likely , Tim Yamin , Julia Lawall , Jeff Garzik , linux-kernel@vger.kernel.org (open list) Subject: [PATCHv2 2/5] ata: pata_mpc52xx: switch to non-devm request_irq for proper ordering Date: Tue, 9 Jun 2026 12:43:08 -0700 Message-ID: <20260609194311.6217-3-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260609194311.6217-1-rosenp@gmail.com> References: <20260609194311.6217-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 Use non-devm request_irq/free_irq to ensure proper ordering in error/remove paths: free_irq() before bcom_ata_release(), preventing a use-after-free where the IRQ handler accesses freed BestComm resources. Assisted-by: opencode:big-pickle Fixes: d01159dffa15 ("drivers/ata/pata_mpc52xx.c: clean up error handling code") Signed-off-by: Rosen Penev --- drivers/ata/pata_mpc52xx.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c index fe445d6aaff6..b46b83df03d1 100644 --- a/drivers/ata/pata_mpc52xx.c +++ b/drivers/ata/pata_mpc52xx.c @@ -769,18 +769,18 @@ static int mpc52xx_ata_probe(struct platform_device *op) priv->dmatsk = dmatsk; task_irq = bcom_get_task_irq(dmatsk); - rv = devm_request_irq(&op->dev, task_irq, &mpc52xx_ata_task_irq, 0, - "ATA task", priv); + rv = request_irq(task_irq, &mpc52xx_ata_task_irq, 0, + "ATA task", priv); if (rv) { dev_err(&op->dev, "error requesting DMA IRQ\n"); - goto err2; + goto err_free_task; } /* Init the hw */ rv = mpc52xx_ata_hw_init(priv); if (rv) { dev_err(&op->dev, "error initializing hardware\n"); - goto err2; + goto err_free_irq; } /* Register ourselves to libata */ @@ -788,13 +788,15 @@ static int mpc52xx_ata_probe(struct platform_device *op) mwdma_mask, udma_mask); if (rv) { dev_err(&op->dev, "error registering with ATA layer\n"); - goto err2; + goto err_free_irq; } return 0; - err2: + err_free_irq: + free_irq(task_irq, priv); irq_dispose_mapping(task_irq); + err_free_task: bcom_ata_release(dmatsk); err1: irq_dispose_mapping(ata_irq); @@ -812,6 +814,7 @@ static void mpc52xx_ata_remove(struct platform_device *op) /* Clean up DMA */ task_irq = bcom_get_task_irq(priv->dmatsk); + free_irq(task_irq, priv); irq_dispose_mapping(task_irq); bcom_ata_release(priv->dmatsk); irq_dispose_mapping(priv->ata_irq); -- 2.54.0