2017-11-07 15:18 GMT+01:00 Deucher, Alexander <Alexander.Deucher at amd.com>: >> -----Original Message----- >> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf >> Of Ernst Sjöstrand >> Sent: Monday, November 06, 2017 6:55 PM >> To: amd-gfx at lists.freedesktop.org >> Cc: Ernst Sjöstrand >> Subject: [PATCH 3/3] amdgpu/dc: Fix missing null checks in amdgpu_dm.c >> >> From smatch: >> error: we previously assumed X could be null >> >> Signed-off-by: Ernst Sjöstrand <ernstp at gmail.com> >> --- >> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 >> +++++++++++---- >> 1 file changed, 11 insertions(+), 4 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 2301589e4cc3..d036178c2241 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> @@ -432,8 +432,10 @@ static int amdgpu_dm_init(struct amdgpu_device >> *adev) >> >> if (adev->dm.dc) >> DRM_INFO("Display Core initialized!\n"); >> - else >> + else { >> DRM_INFO("Display Core failed to initialize!\n"); >> + goto error; >> + } > > Coding style nit, please add {} around the top clause as well. > >> >> INIT_WORK(&adev->dm.mst_hotplug_work, >> hotplug_notify_work_func); >> >> @@ -2263,7 +2265,7 @@ decide_crtc_timing_for_drm_display_mode(struct >> drm_display_mode *drm_mode, >> } >> } >> >> -static void create_fake_sink(struct amdgpu_dm_connector *aconnector) >> +static int create_fake_sink(struct amdgpu_dm_connector *aconnector) >> { >> struct dc_sink *sink = NULL; >> struct dc_sink_init_data sink_init_data = { 0 }; >> @@ -2272,14 +2274,18 @@ static void create_fake_sink(struct >> amdgpu_dm_connector *aconnector) >> sink_init_data.sink_signal = aconnector->dc_link->connector_signal; >> >> sink = dc_sink_create(&sink_init_data); >> - if (!sink) >> + if (!sink) { >> DRM_ERROR("Failed to create sink!\n"); >> + return -1; > > Please return a proper error code here. > > Alex I would have to refactor it a bit, it could be both a construct fail and an alloc fail, we just get null. //Ernst >> + } >> >> sink->sink_signal = SIGNAL_TYPE_VIRTUAL; >> aconnector->fake_enable = true; >> >> aconnector->dc_sink = sink; >> aconnector->dc_link->local_sink = sink; >> + >> + return 0; >> } >> >> static struct dc_stream_state * >> @@ -2313,7 +2319,8 @@ create_stream_for_sink(struct >> amdgpu_dm_connector *aconnector, >> if (aconnector->mst_port) >> goto stream_create_fail; >> >> - create_fake_sink(aconnector); >> + if (create_fake_sink(aconnector)) >> + goto stream_create_fail; >> } >> >> stream = dc_create_stream_for_sink(aconnector->dc_sink); >> -- >> 2.14.1 >> >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx