On 2026-07-23 06:55, Dan Carpenter wrote:
> [You don't often get email from [email protected]. Learn why this is 
> important at https://aka.ms/LearnAboutSenderIdentification ]
>
> On Mon, Mar 30, 2026 at 03:57:54PM -0400, Benjamin Cheng wrote:
>> In the case that only one of lo/hi is valid, the patching could result
>> in a bad address written to in FW.
>> ---
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> index eb4a15db2ef2..efdebd9c0a1f 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> @@ -680,6 +680,9 @@ static int amdgpu_vce_cs_reloc(struct amdgpu_cs_parser 
>> *p, struct amdgpu_ib *ib,
>>       uint64_t addr;
>>       int r;
>>
>> +     if (lo >= ib->length_dw || hi >= ib->length_dw)
>> +             return -EINVAL;
>> +
> I feel like the better fix would be to change the amdgpu_ib_get_value()
> function to return negative for invalid indexes instead of returning 0.
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
>    562  static inline u32 amdgpu_ib_get_value(struct amdgpu_ib *ib, uint32_t 
> idx)
>    563  {
>    564          if (idx < ib->length_dw)
>    565                  return ib->ptr[idx];
>    566          return 0;
>
> s/return 0/return -EINVAL/
>
>    567  }
>
> amdgpu_vce_validate_bo() has the same issue where invalid lo hi are
> treated as success.
That catches the issue earlier which can save some CPU cycles but 
amdgpu_vce_validate_bo() is supposed to be resilient to bad addresses since the 
user could just put bogus addresses into the IB. In this case we just need to 
prevent a partial address patch, i.e. the hi part of the address got patched 
with the physical address but the lo part did not (because it's outside the IB).
>
> regards,
> dan carpenter
>

Reply via email to