Commit 9dd8e2ba authored by Siyang Liu's avatar Siyang Liu Committed by Alex Deucher
Browse files

drm/amd/display: fix a Null pointer dereference vulnerability

[Why]
A null pointer dereference vulnerability exists in the AMD display driver's
(DC module) cleanup function dc_destruct().
When display control context (dc->ctx) construction fails
(due to memory allocation failure), this pointer remains NULL.
During subsequent error handling when dc_destruct() is called,
there's no NULL check before dereferencing the perf_trace member
(dc->ctx->perf_trace), causing a kernel null pointer dereference crash.

[How]
Check if dc->ctx is non-NULL before dereferencing.

Link: https://lore.kernel.org/r/tencent_54FF4252EDFB6533090A491A25EEF3EDBF06@qq.com


Co-developed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
(Updated commit text and removed unnecessary error message)
Signed-off-by: default avatarSiyang Liu <Security@tencent.com>
Signed-off-by: default avatarRoman Li <roman.li@amd.com>
Reviewed-by: default avatarAlex Hung <alex.hung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 82594ac8
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -940,17 +940,18 @@ static void dc_destruct(struct dc *dc)
	if (dc->link_srv)
		link_destroy_link_service(&dc->link_srv);

	if (dc->ctx) {
		if (dc->ctx->gpio_service)
			dal_gpio_service_destroy(&dc->ctx->gpio_service);

		if (dc->ctx->created_bios)
			dal_bios_parser_destroy(&dc->ctx->dc_bios);

		kfree(dc->ctx->logger);
		dc_perf_trace_destroy(&dc->ctx->perf_trace);

		kfree(dc->ctx);
		dc->ctx = NULL;
	}

	kfree(dc->bw_vbios);
	dc->bw_vbios = NULL;