]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86/intel-uncore-freq: Fail module load when plat_info is NULL
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Fri, 6 Jun 2025 20:53:00 +0000 (13:53 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 9 Jun 2025 07:34:41 +0000 (10:34 +0300)
Address a Smatch static checker warning regarding an unchecked
dereference in the function call:
set_cdie_id(i, cluster_info, plat_info)
when plat_info is NULL.

Instead of addressing this one case, in general if plat_info is NULL
then it can cause other issues. For example in a two package system it
will give warning for duplicate sysfs entry as package ID will be always
zero for both packages when creating string for attribute group name.

plat_info is derived from TPMI ID TPMI_BUS_INFO, which is integral to
the core TPMI design. Therefore, it should not be NULL on a production
platform. Consequently, the module should fail to load if plat_info is
NULL.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/platform-driver-x86/aEKvGCLd1qmX04Tc@stanley.mountain/T/#u
Fixes: 8a54e2253e4c ("platform/x86/intel-uncore-freq: Uncore frequency control via TPMI")
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20250606205300.2384494-1-srinivas.pandruvada@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c

index 1c7b2f2716ca085ce4e9fcd1793d173d3b8bad0f..44d9948ed2241b09132917677799de4f563d62aa 100644 (file)
@@ -511,10 +511,13 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
 
        /* Get the package ID from the TPMI core */
        plat_info = tpmi_get_platform_data(auxdev);
-       if (plat_info)
-               pkg = plat_info->package_id;
-       else
+       if (unlikely(!plat_info)) {
                dev_info(&auxdev->dev, "Platform information is NULL\n");
+               ret = -ENODEV;
+               goto err_rem_common;
+       }
+
+       pkg = plat_info->package_id;
 
        for (i = 0; i < num_resources; ++i) {
                struct tpmi_uncore_power_domain_info *pd_info;