On Tue, Nov 7, 2017 at 2:52 PM, Ernst Sjöstrand <ernstp at gmail.com> wrote: > 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. -ENOMEM is fine Alex > > //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 > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx