]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
coresight: tpdm: fix invalid MMIO access issue
authorJie Gan <jie.gan@oss.qualcomm.com>
Tue, 7 Apr 2026 11:09:05 +0000 (19:09 +0800)
committerSuzuki K Poulose <suzuki.poulose@arm.com>
Tue, 7 Apr 2026 11:29:42 +0000 (12:29 +0100)
Create the csdev_access struct only when a valid MMIO resource is
available. In tpdm_probe(), base is uninitialized for static TPDM
instances that lack an MMIO resource, causing csdev_access to be
created with a garbage address.

So far there has no register access for static instance, but this
change helps mitigate potential risks in the future.

Fixes: 14ae052f7947 ("coresight: tpdm: add static tpdm support")
Reviewed-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20260407-fix-potential-issue-in-tpdm-v2-1-1d0e0d3cb793@oss.qualcomm.com
drivers/hwtracing/coresight/coresight-tpdm.c

index 9b16f368a58bcc094fa8a113e5b65d68c0495047..eaf7210af64838c9b006e02a74fa71a2243b8bab 100644 (file)
@@ -1430,6 +1430,7 @@ static int tpdm_probe(struct device *dev, struct resource *res)
                if (ret)
                        return ret;
 
+               desc.access = CSDEV_ACCESS_IOMEM(base);
                if (tpdm_has_dsb_dataset(drvdata))
                        of_property_read_u32(drvdata->dev->of_node,
                                             "qcom,dsb-msrs-num", &drvdata->dsb_msr_num);
@@ -1452,7 +1453,6 @@ static int tpdm_probe(struct device *dev, struct resource *res)
        desc.ops = &tpdm_cs_ops;
        desc.pdata = dev->platform_data;
        desc.dev = dev;
-       desc.access = CSDEV_ACCESS_IOMEM(base);
        if (res)
                desc.groups = tpdm_attr_grps;
        else