aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorErnst Sjöstrand <ernstp@gmail.com>2017-11-07 15:06:59 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-11-07 16:22:22 -0500
commit423788c7a866cb7f5265af9b96952e8a4bf48fd5 (patch)
tree11969e1ca0c9feebae845eb86531e9fd7bc449f3 /drivers/gpu/drm
parent2a55f09643acf51ec0f1c72d92fdd4515e9a8aa7 (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.c17
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
2276static void create_fake_sink(struct amdgpu_dm_connector *aconnector) 2278static 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
2295static struct dc_stream_state * 2301static 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);