[PATCH] drm/radeon: avoid kernel segfault in vce when gpu fails to resume
Alex Deucher
alexdeucher at gmail.com
Thu Feb 9 02:17:43 UTC 2017
On Tue, Feb 7, 2017 at 5:51 AM, Christian König <deathsimple at vodafone.de> wrote:
> Am 06.02.2017 um 21:13 schrieb j.glisse at gmail.com:
>>
>> From: Jérôme Glisse <jglisse at redhat.com>
>>
>> When GPU fails to resume we can not trust that value we write to GPU
>> memory will post and we might get garbage (more like 0xffffffff on
>> x86) when reading them back. This trigger out of range memory access
>> in the kernel inside the vce resume code path.
>>
>> This patch use canonical value to compute offset instead of reading
>> back value from GPU memory.
>>
>> Signed-off-by: Jérôme Glisse <jglisse at redhat.com>
Applied. Thanks!
Alex
>
>
> Good point, path is Reviewed-by: Christian König <christian.koenig at amd.com>.
>
> Regards,
> Christian.
>
>> ---
>> drivers/gpu/drm/radeon/vce_v1_0.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/vce_v1_0.c
>> b/drivers/gpu/drm/radeon/vce_v1_0.c
>> index a01efe3..f541a4b 100644
>> --- a/drivers/gpu/drm/radeon/vce_v1_0.c
>> +++ b/drivers/gpu/drm/radeon/vce_v1_0.c
>> @@ -196,7 +196,7 @@ int vce_v1_0_load_fw(struct radeon_device *rdev,
>> uint32_t *data)
>> memset(&data[5], 0, 44);
>> memcpy(&data[16], &sign[1], rdev->vce_fw->size - sizeof(*sign));
>> - data += le32_to_cpu(data[4]) / 4;
>> + data += (le32_to_cpu(sign->len) + 64) / 4;
>> data[0] = sign->val[i].sigval[0];
>> data[1] = sign->val[i].sigval[1];
>> data[2] = sign->val[i].sigval[2];
>
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list