FAILED: patch "[PATCH] media: nxp: imx8-isi: Fix use-after-free on remove" failed to apply to 6.12-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.12-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-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x b670bf89824ede5d07d20bb9bfbafb754846081d
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026071342-backfire-varsity-a0ef@gregkh' --subject-prefix 'PATCH 6.12.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b670bf89824ede5d07d20bb9bfbafb754846081d Mon Sep 17 00:00:00 2001
From: Xiaolei Wang <[email protected]>
Date: Thu, 7 May 2026 12:13:15 +0800
Subject: [PATCH] media: nxp: imx8-isi: Fix use-after-free on remove
KASAN reports a slab-use-after-free in __media_entity_remove_link() during rmmod of imx8_isi:
BUG: KASAN: slab-use-after-free in __media_entity_remove_link+0x608/0x650 Read of size 2 at addr ffff0000d47cb02a by task rmmod/724 Call trace: __media_entity_remove_link+0x608/0x650 __media_entity_remove_links+0x78/0x144 __media_device_unregister_entity+0x150/0x280 media_device_unregister_entity+0x48/0x68 v4l2_device_unregister_subdev+0x158/0x300 v4l2_async_unbind_subdev_one+0x22c/0x358 v4l2_async_nf_unbind_all_subdevs+0xfc/0x1c0 v4l2_async_nf_unregister+0x5c/0x14c mxc_isi_remove+0x124/0x2a0 [imx8_isi] Allocated by task 249: __kmalloc_noprof+0x27c/0x690 mxc_isi_crossbar_init+0x22c/0x560 [imx8_isi] Freed by task 724: kfree+0x1e4/0x5b0 mxc_isi_crossbar_cleanup+0x34/0x80 [imx8_isi] mxc_isi_remove+0x11c/0x2a0 [imx8_isi]
The problem is that mxc_isi_remove() calls mxc_isi_crossbar_cleanup() before mxc_isi_v4l2_cleanup(). The crossbar cleanup frees the media entity pads, but the subsequent v4l2 cleanup still tries to remove media links that reference those pads.
Fix this by calling mxc_isi_v4l2_cleanup() before mxc_isi_crossbar_cleanup() to ensure all media entities are properly unregistered while the pads are still valid.
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c +1 -1
@@ -556,8 +556,8 @@ static void mxc_isi_remove(struct platform_device *pdev)mxc_isi_pipe_cleanup (pipe); } -mxc_isi_crossbar_cleanup (&isi->crossbar);mxc_isi_v4l2_cleanup (isi); +mxc_isi_crossbar_cleanup (&isi->crossbar); }static const struct of_device_id mxc_isi_of_match[] = {
Sasha Levin
maintainerPATCH 1/2 media: nxp: imx8-isi: use devm_pm_runtime_enable() to simplify code
From: Frank Li <[email protected]>
[ Upstream commit 078161dd44d6f848a62a473206d69025607736ec ]
Use devm_pm_runtime_enable() to simplify code. Change to use dev_err_probe() because previous goto change to return.
No functional change.
Stable-dep-of: b670bf89824e ("media: nxp: imx8-isi: Fix use-after-free on remove")
--- .../media/platform/nxp/imx8-isi/imx8-isi-core.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c +7 -9
@@ -472,13 +472,14 @@ static int mxc_isi_probe(struct platform_device *pdev)return ret; } -pm_runtime_enable (dev); + ret =devm_pm_runtime_enable (dev); +if (ret) +return ret; ret =mxc_isi_crossbar_init (isi); -if (ret) { -dev_err (dev,"Failed to initialize crossbar: %d\n" , ret); - goto err_pm; - } +if (ret) +return dev_err_probe (dev, ret, +"Failed to initialize crossbar\n" );for (i =0 ; i < isi->pdata->num_channels; ++i) { ret =mxc_isi_pipe_init (isi, i);
@@ -501,8 +502,7 @@ static int mxc_isi_probe(struct platform_device *pdev) err_xbar:mxc_isi_crossbar_cleanup (&isi->crossbar); -err_pm: -pm_runtime_disable (isi->dev); +return ret; }
@@ -521,8 +521,6 @@ static void mxc_isi_remove(struct platform_device *pdev)mxc_isi_crossbar_cleanup (&isi->crossbar);mxc_isi_v4l2_cleanup (isi); - -pm_runtime_disable (isi->dev); }static const struct of_device_id mxc_isi_of_match[] = {
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 media: nxp: imx8-isi: Fix use-after-free on remove
From: Xiaolei Wang <[email protected]>
[ Upstream commit b670bf89824ede5d07d20bb9bfbafb754846081d ]
KASAN reports a slab-use-after-free in __media_entity_remove_link() during rmmod of imx8_isi:
BUG: KASAN: slab-use-after-free in __media_entity_remove_link+0x608/0x650 Read of size 2 at addr ffff0000d47cb02a by task rmmod/724 Call trace: __media_entity_remove_link+0x608/0x650 __media_entity_remove_links+0x78/0x144 __media_device_unregister_entity+0x150/0x280 media_device_unregister_entity+0x48/0x68 v4l2_device_unregister_subdev+0x158/0x300 v4l2_async_unbind_subdev_one+0x22c/0x358 v4l2_async_nf_unbind_all_subdevs+0xfc/0x1c0 v4l2_async_nf_unregister+0x5c/0x14c mxc_isi_remove+0x124/0x2a0 [imx8_isi] Allocated by task 249: __kmalloc_noprof+0x27c/0x690 mxc_isi_crossbar_init+0x22c/0x560 [imx8_isi] Freed by task 724: kfree+0x1e4/0x5b0 mxc_isi_crossbar_cleanup+0x34/0x80 [imx8_isi] mxc_isi_remove+0x11c/0x2a0 [imx8_isi]
The problem is that mxc_isi_remove() calls mxc_isi_crossbar_cleanup() before mxc_isi_v4l2_cleanup(). The crossbar cleanup frees the media entity pads, but the subsequent v4l2 cleanup still tries to remove media links that reference those pads.
Fix this by calling mxc_isi_v4l2_cleanup() before mxc_isi_crossbar_cleanup() to ensure all media entities are properly unregistered while the pads are still valid.
--- drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c +1 -1
@@ -519,8 +519,8 @@ static void mxc_isi_remove(struct platform_device *pdev)mxc_isi_pipe_cleanup (pipe); } -mxc_isi_crossbar_cleanup (&isi->crossbar);mxc_isi_v4l2_cleanup (isi); +mxc_isi_crossbar_cleanup (&isi->crossbar); }static const struct of_device_id mxc_isi_of_match[] = {
Signature · 1 line
2.53.0