]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/ras: Fix NULL deref in ras_core_get_utc_second_timestamp()
authorSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Sun, 15 Mar 2026 05:59:41 +0000 (11:29 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Mar 2026 21:42:09 +0000 (17:42 -0400)
ras_core_get_utc_second_timestamp() retrieves the current UTC timestamp
(in seconds since the Unix epoch) through a platform-specific RAS system
callback and is used for timestamping RAS error events.

The function checks ras_core in the conditional statement before calling
the sys_fn callback. However, when the condition fails, the function
prints an error message using ras_core->dev.

If ras_core is NULL, this can lead to a potential NULL pointer
dereference when accessing ras_core->dev.

Add an early NULL check for ras_core at the beginning of the function
and return 0 when the pointer is not valid. This prevents the
dereference and makes the control flow clearer.

Fixes: 13c91b5b4378 ("drm/amd/ras: Add rascore unified interface function")
Cc: YiPeng Chai <YiPeng.Chai@amd.com>
Cc: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Tao Zhou <tao.zhou1@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Reviewed-by: YiPeng Chai <YiPeng.Chai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/ras/rascore/ras_core.c

index ad3dfe531654beb72e64b78434ee5db2ca3c213d..e889baec378b060f94224fc5a3736c7b638a9c14 100644 (file)
@@ -527,8 +527,11 @@ bool ras_core_is_enabled(struct ras_core_context *ras_core)
 
 uint64_t ras_core_get_utc_second_timestamp(struct ras_core_context *ras_core)
 {
-       if (ras_core && ras_core->sys_fn &&
-               ras_core->sys_fn->get_utc_second_timestamp)
+       if (!ras_core)
+               return 0;
+
+       if (ras_core->sys_fn &&
+           ras_core->sys_fn->get_utc_second_timestamp)
                return ras_core->sys_fn->get_utc_second_timestamp(ras_core);
 
        RAS_DEV_ERR(ras_core->dev, "Failed to get system timestamp!\n");