drm/amd/display: Fix a NULL pointer dereference in amdgpu_dm_connector_add_common_modes()
In amdgpu_dm_connector_add_common_modes(), amdgpu_dm_create_common_mode()
is assigned to mode and is passed to drm_mode_probed_add() directly after
that. drm_mode_probed_add() passes &mode->head to list_add_tail(), and
there is a dereference of it in list_add_tail() without recoveries, which
could lead to NULL pointer dereference on failure of
amdgpu_dm_create_common_mode().
Fix this by adding a NULL check of mode.
This bug was found by a static analyzer.
Builds with 'make allyesconfig' show no new warnings,
and our static analyzer no longer warns about this code.
Fixes: e7b07ceef2
("drm/amd/display: Merge amdgpu_dm_types and amdgpu_dm")
Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Родитель
153a9529d7
Коммит
588a70177d
|
@ -8138,6 +8138,9 @@ static void amdgpu_dm_connector_add_common_modes(struct drm_encoder *encoder,
|
|||
mode = amdgpu_dm_create_common_mode(encoder,
|
||||
common_modes[i].name, common_modes[i].w,
|
||||
common_modes[i].h);
|
||||
if (!mode)
|
||||
continue;
|
||||
|
||||
drm_mode_probed_add(connector, mode);
|
||||
amdgpu_dm_connector->num_modes++;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче