Commit 0484e05d authored by Sohaib Nadeem's avatar Sohaib Nadeem Committed by Alex Deucher
Browse files

drm/amd/display: fixed integer types and null check locations



[why]:
issues fixed:
- comparison with wider integer type in loop condition which can cause
infinite loops
- pointer dereference before null check

Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Reviewed-by: default avatarJosip Pavic <josip.pavic@amd.com>
Acked-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: default avatarSohaib Nadeem <sohaib.nadeem@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 46806e59
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1850,19 +1850,21 @@ static enum bp_result get_firmware_info_v3_2(
		/* Vega12 */
		smu_info_v3_2 = GET_IMAGE(struct atom_smu_info_v3_2,
							DATA_TABLES(smu_info));
		DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", smu_info_v3_2->gpuclk_ss_percentage);
		if (!smu_info_v3_2)
			return BP_RESULT_BADBIOSTABLE;

		DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", smu_info_v3_2->gpuclk_ss_percentage);

		info->default_engine_clk = smu_info_v3_2->bootup_dcefclk_10khz * 10;
	} else if (revision.minor == 3) {
		/* Vega20 */
		smu_info_v3_3 = GET_IMAGE(struct atom_smu_info_v3_3,
							DATA_TABLES(smu_info));
		DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", smu_info_v3_3->gpuclk_ss_percentage);
		if (!smu_info_v3_3)
			return BP_RESULT_BADBIOSTABLE;

		DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", smu_info_v3_3->gpuclk_ss_percentage);

		info->default_engine_clk = smu_info_v3_3->bootup_dcefclk_10khz * 10;
	}

@@ -2422,10 +2424,11 @@ static enum bp_result get_integrated_info_v11(
	info_v11 = GET_IMAGE(struct atom_integrated_system_info_v1_11,
					DATA_TABLES(integratedsysteminfo));

	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v11->gpuclk_ss_percentage);
	if (info_v11 == NULL)
		return BP_RESULT_BADBIOSTABLE;

	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v11->gpuclk_ss_percentage);

	info->gpu_cap_info =
	le32_to_cpu(info_v11->gpucapinfo);
	/*
@@ -2637,11 +2640,12 @@ static enum bp_result get_integrated_info_v2_1(

	info_v2_1 = GET_IMAGE(struct atom_integrated_system_info_v2_1,
					DATA_TABLES(integratedsysteminfo));
	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v2_1->gpuclk_ss_percentage);

	if (info_v2_1 == NULL)
		return BP_RESULT_BADBIOSTABLE;

	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v2_1->gpuclk_ss_percentage);

	info->gpu_cap_info =
	le32_to_cpu(info_v2_1->gpucapinfo);
	/*
@@ -2799,11 +2803,11 @@ static enum bp_result get_integrated_info_v2_2(
	info_v2_2 = GET_IMAGE(struct atom_integrated_system_info_v2_2,
					DATA_TABLES(integratedsysteminfo));

	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v2_2->gpuclk_ss_percentage);

	if (info_v2_2 == NULL)
		return BP_RESULT_BADBIOSTABLE;

	DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", info_v2_2->gpuclk_ss_percentage);

	info->gpu_cap_info =
	le32_to_cpu(info_v2_2->gpucapinfo);
	/*
+1 −1
Original line number Diff line number Diff line
@@ -361,7 +361,7 @@ bool link_validate_dpia_bandwidth(const struct dc_stream_state *stream, const un
	struct dc_link *dpia_link[MAX_DPIA_NUM] = {0};
	int num_dpias = 0;

	for (uint8_t i = 0; i < num_streams; ++i) {
	for (unsigned int i = 0; i < num_streams; ++i) {
		if (stream[i].signal == SIGNAL_TYPE_DISPLAY_PORT) {
			/* new dpia sst stream, check whether it exceeds max dpia */
			if (num_dpias >= MAX_DPIA_NUM)