]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
coresight: add verification process for coresight_etm_get_trace_id
authorJie Gan <quic_jiegan@quicinc.com>
Mon, 10 Mar 2025 10:27:24 +0000 (18:27 +0800)
committerSuzuki K Poulose <suzuki.poulose@arm.com>
Mon, 10 Mar 2025 10:33:13 +0000 (10:33 +0000)
The coresight_etm_get_trace_id function is a global function. The
verification process for 'csdev' is required prior to its usage.

Fixes: c367a89dec26 ("Coresight: Add trace_id function to retrieving the trace ID")
Signed-off-by: Jie Gan <quic_jiegan@quicinc.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250310102724.2112905-1-quic_jiegan@quicinc.com
drivers/hwtracing/coresight/coresight-core.c

index bd0a7edd38c97e0263af563a9d1c7490d9172447..c915a055534e92d8c1032a94dcedd99c1ea622cc 100644 (file)
@@ -1616,9 +1616,12 @@ EXPORT_SYMBOL_GPL(coresight_remove_driver);
 int coresight_etm_get_trace_id(struct coresight_device *csdev, enum cs_mode mode,
                               struct coresight_device *sink)
 {
-       int trace_id;
-       int cpu = source_ops(csdev)->cpu_id(csdev);
+       int cpu, trace_id;
+
+       if (csdev->type != CORESIGHT_DEV_TYPE_SOURCE || !source_ops(csdev)->cpu_id)
+               return -EINVAL;
 
+       cpu = source_ops(csdev)->cpu_id(csdev);
        switch (mode) {
        case CS_MODE_SYSFS:
                trace_id = coresight_trace_id_get_cpu_id(cpu);