FAILED: patch "[PATCH] irqchip: Plug a OF node reference leak in" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 9322d1915f9d976ee48c09d800fbd5169bc2ddcc
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025012050-motor-prevalent-e802@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 9322d1915f9d976ee48c09d800fbd5169bc2ddcc Mon Sep 17 00:00:00 2001
From: Joe Hattori <[email protected]>
Date: Sun, 15 Dec 2024 12:39:45 +0900
Subject: [PATCH] irqchip: Plug a OF node reference leak in
platform_irqchip_probe()
platform_irqchip_probe() leaks a OF node when irq_init_cb() fails. Fix it by declaring par_np with the __free(device_node) cleanup construct.
This bug was found by an experimental static analysis tool that I am developing.
drivers/irqchip/irqchip.c +1 -3
@@ -35,11 +35,10 @@ void __init irqchip_init(void)int platform_irqchip_probe (struct platform_device *pdev) {struct device_node *np = pdev->dev.of_node; -struct device_node *par_np =of_irq_find_parent (np); + struct device_node *par_np __free(device_node) = of_irq_find_parent(np);of_irq_init_cb_t irq_init_cb =of_device_get_match_data (&pdev->dev);if (!irq_init_cb) { -of_node_put (par_np);return -EINVAL ; }
@@ -55,7 +54,6 @@ int platform_irqchip_probe(struct platform_device *pdev)* interrupt controller can check for specific domains as necessary. */ if (par_np && !irq_find_matching_host (par_np,DOMAIN_BUS_ANY )) { -of_node_put (par_np);return -EPROBE_DEFER ; }