drm/amd/display: Fix a NULL pointer dereference in amdgpu_dm_connector_add_common_modes()
[ Upstream commit 588a70177df3b1777484267584ef38ab2ca899a2 ] 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: e7b07ceef2a6 ("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
1feb6ff89d
commit
57f4ad5e28
@ -5013,6 +5013,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++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user