[PATCH 3/3] amdgpu/dc: Fix missing null checks in amdgpu_dm.c

Alex Deucher alexdeucher at gmail.com
Tue Nov 7 19:57:05 UTC 2017


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


More information about the amd-gfx mailing list