possible use-after-free in amdgpu_dm
Harry Wentland
harry.wentland at amd.com
Tue Oct 17 19:43:27 UTC 2017
On 2017-10-17 02:15 PM, Christian König wrote:
> Am 17.10.2017 um 19:58 schrieb Felix Kuehling:
>> On 2017-10-17 01:25 PM, Tom St Denis wrote:
>>> On 17/10/17 01:23 PM, Tom St Denis wrote:
>>>> On 17/10/17 01:18 PM, Christian König wrote:
>>>>> Am 17.10.2017 um 16:10 schrieb Tom St Denis:
>>>>>> In this block of code:
>>>>>>
>>>>>> void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
>>>>>> {
>>>>>> struct dm_connector_state *state =
>>>>>> to_dm_connector_state(connector->state);
>>>>>>
>>>>>> kfree(state);
>>>>>>
>>>>>> state = kzalloc(sizeof(*state), GFP_KERNEL);
>>>>>>
>>>>>>
>>>>>> The value of state is never compared with NULL and moreso the value
>>>>>> of connector->state is never written to if NULL. Wouldn't this mean
>>>>>> the pointer points to freed memory?
>>> Sorry I think I might be explaining this poorly.
>>>
>>> In the case the alloc succeeds the pointer is updated and everything
>>> is fine.
>>>
>>> IF the alloc fails the pointer (connector->state) is not updated and
>>> the value points to freed memory.
>> I'm wondering why the function frees, and then reallocates the memory.
>> Does its size change? If not, why not just memset it to 0?
>
> Yeah, I was just thinking the same thing.
>
> And no from the code snippet Tom posted it just frees and reallocated the same structure.
>
> I think that should rather look like this:
>
> if (!state)
> state = kzalloc(...);
> else
> memset(...);
>
I don't expect connector->state to ever be NULL here which seems to be confirmed by
code that would have blown up if it ever was. How about we do a BUG_ON on this condition
as has been suggested?
Otherwise I like the memset idea. No need for free/alloc here.
Harry
> Regards,
> Christian.
>
>>
>> Regards,
>> Felix
>>
>>> Tom
>>> _______________________________________________
>>> 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
>
>
> _______________________________________________
> 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