diff options
author | Ernst Sjöstrand <ernstp@gmail.com> | 2017-11-07 15:06:59 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-11-07 16:22:22 -0500 |
commit | 423788c7a866cb7f5265af9b96952e8a4bf48fd5 (patch) | |
tree | 11969e1ca0c9feebae845eb86531e9fd7bc449f3 /drivers/gpu/drm | |
parent | 2a55f09643acf51ec0f1c72d92fdd4515e9a8aa7 (diff) |
amdgpu/dc: Fix missing null checks in amdgpu_dm.c
From smatch:
error: we previously assumed X could be null
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Ernst Sjöstrand <ernstp@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 8ee1bff09a6c..cb45a3dc5a65 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
@@ -430,10 +430,12 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) | |||
430 | /* Display Core create. */ | 430 | /* Display Core create. */ |
431 | adev->dm.dc = dc_create(&init_data); | 431 | adev->dm.dc = dc_create(&init_data); |
432 | 432 | ||
433 | if (adev->dm.dc) | 433 | if (adev->dm.dc) { |
434 | DRM_INFO("Display Core initialized!\n"); | 434 | DRM_INFO("Display Core initialized!\n"); |
435 | else | 435 | } else { |
436 | DRM_INFO("Display Core failed to initialize!\n"); | 436 | DRM_INFO("Display Core failed to initialize!\n"); |
437 | goto error; | ||
438 | } | ||
437 | 439 | ||
438 | INIT_WORK(&adev->dm.mst_hotplug_work, hotplug_notify_work_func); | 440 | INIT_WORK(&adev->dm.mst_hotplug_work, hotplug_notify_work_func); |
439 | 441 | ||
@@ -2273,7 +2275,7 @@ decide_crtc_timing_for_drm_display_mode(struct drm_display_mode *drm_mode, | |||
2273 | } | 2275 | } |
2274 | } | 2276 | } |
2275 | 2277 | ||
2276 | static void create_fake_sink(struct amdgpu_dm_connector *aconnector) | 2278 | static int create_fake_sink(struct amdgpu_dm_connector *aconnector) |
2277 | { | 2279 | { |
2278 | struct dc_sink *sink = NULL; | 2280 | struct dc_sink *sink = NULL; |
2279 | struct dc_sink_init_data sink_init_data = { 0 }; | 2281 | struct dc_sink_init_data sink_init_data = { 0 }; |
@@ -2282,14 +2284,18 @@ static void create_fake_sink(struct amdgpu_dm_connector *aconnector) | |||
2282 | sink_init_data.sink_signal = aconnector->dc_link->connector_signal; | 2284 | sink_init_data.sink_signal = aconnector->dc_link->connector_signal; |
2283 | 2285 | ||
2284 | sink = dc_sink_create(&sink_init_data); | 2286 | sink = dc_sink_create(&sink_init_data); |
2285 | if (!sink) | 2287 | if (!sink) { |
2286 | DRM_ERROR("Failed to create sink!\n"); | 2288 | DRM_ERROR("Failed to create sink!\n"); |
2289 | return -ENOMEM; | ||
2290 | } | ||
2287 | 2291 | ||
2288 | sink->sink_signal = SIGNAL_TYPE_VIRTUAL; | 2292 | sink->sink_signal = SIGNAL_TYPE_VIRTUAL; |
2289 | aconnector->fake_enable = true; | 2293 | aconnector->fake_enable = true; |
2290 | 2294 | ||
2291 | aconnector->dc_sink = sink; | 2295 | aconnector->dc_sink = sink; |
2292 | aconnector->dc_link->local_sink = sink; | 2296 | aconnector->dc_link->local_sink = sink; |
2297 | |||
2298 | return 0; | ||
2293 | } | 2299 | } |
2294 | 2300 | ||
2295 | static struct dc_stream_state * | 2301 | static struct dc_stream_state * |
@@ -2323,7 +2329,8 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, | |||
2323 | if (aconnector->mst_port) | 2329 | if (aconnector->mst_port) |
2324 | goto stream_create_fail; | 2330 | goto stream_create_fail; |
2325 | 2331 | ||
2326 | create_fake_sink(aconnector); | 2332 | if (create_fake_sink(aconnector)) |
2333 | goto stream_create_fail; | ||
2327 | } | 2334 | } |
2328 | 2335 | ||
2329 | stream = dc_create_stream_for_sink(aconnector->dc_sink); | 2336 | stream = dc_create_stream_for_sink(aconnector->dc_sink); |