Re: [PATCH] media: verisilicon: Fix kernel panic due to __initconst misuse
From: Ming Qian(OSS)
Date: Thu Mar 05 2026 - 04:29:36 EST
Hi,
On 3/5/2026 5:19 PM, Krzysztof Kozlowski wrote:
On 05/03/2026 09:03, ming.qian@xxxxxxxxxxx wrote:
From: Ming Qian <ming.qian@xxxxxxxxxxx>
Fix a kernel panic when probing the driver as a module:
Unable to handle kernel paging request at virtual address
ffffd9c18eb05000
of_find_matching_node_and_match+0x5c/0x1a0
hantro_probe+0x2f4/0x7d0 [hantro_vpu]
The imx8mq_vpu_shared_resources array is referenced by variant
structures through their shared_devices field. When built as a
module, __initconst causes this data to be freed after module
init, but it's later accessed during probe, causing a page fault.
Use __initconst_or_module to keep the data available when built
as a module while still allowing it to be freed when built-in.
Fixes: e0203ddf9af7 ("media: verisilicon: Avoid G2 bus error while decoding H.264 and HEVC")
Signed-off-by: Ming Qian <ming.qian@xxxxxxxxxxx>
---
drivers/media/platform/verisilicon/imx8m_vpu_hw.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
index 6f8e43b7f157..fa429e6e8281 100644
--- a/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
+++ b/drivers/media/platform/verisilicon/imx8m_vpu_hw.c
@@ -343,7 +343,7 @@ const struct hantro_variant imx8mq_vpu_variant = {
.num_regs = ARRAY_SIZE(imx8mq_reg_names)
};
-static const struct of_device_id imx8mq_vpu_shared_resources[] __initconst = {
+static const struct of_device_id imx8mq_vpu_shared_resources[] __initconst_or_module = {
{ .compatible = "nxp,imx8mq-vpu-g1", },
I have some doubts this was tested with section mismatch analysis. It is
still referenced by non initconst data, but it should not. You have a
dangling pointer.
And build test would probably point it out.
Thanks, that makes sense.
I'll remove the annotation and let it live in the normal .rodata
section.
An updated patch will follow.
Regards,
Ming
Best regards,
Krzysztof