> -----Original Message-----
> From: Beignet [mailto:[email protected]] On Behalf Of
> Simon Richter
> Sent: Thursday, December 8, 2016 20:36
> To: [email protected]
> Subject: Re: [Beignet] [PATCH] Runtime: Use cl_ulong as
> CL_DEVICE_MAX_MEM_ALLOC_SIZE's return type.
> 
> Hi,
> 
> On Thu, Dec 08, 2016 at 03:47:28PM +0800, Yang Rong wrote:
> 
> > diff --git a/src/cl_device_id.c b/src/cl_device_id.c index
> > 24334fd..71a7be1 100644
> > --- a/src/cl_device_id.c
> > +++ b/src/cl_device_id.c
> > @@ -926,6 +926,7 @@ cl_get_device_ids(cl_platform_id    platform,
> >      }                                                               \
> >      if (param_value_size < sizeof device->FIELD)                    \
> >        return CL_INVALID_VALUE;                                      \
> > +    memset(param_value, 0, param_value_size);                       \
> >      memcpy(param_value, &device->FIELD, sizeof device->FIELD);      \
> >      return CL_SUCCESS;
> >
> 
> I don't see the point -- programs are not supposed to behave differently
> here, and it might hide errors when running under valgrind. I don't have any
> strong feelings on this though.

Thanks for your review.
The change is for the case that param_value_size > sizeof(device->FIELD).
For example:
  cl_ulong max_alloc_size;
  clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(max_alloc_size), 
&max_alloc_size, NULL);

param_value_size is 8, if beignet's device->max_alloc_size is size_t, 
sizeof(device->max_alloc_size) is 4 in i386 systems.
Because max_alloc_size hasn't been initialized, is garbage, and 
memcpy(param_value, &device->FIELD, sizeof device->FIELD); 
only copy the low 4 bytes, the high 4 bytes is still garbage.
For example max_alloc_size is 0xdeaddeaddeaddead before call clGetDeviceInfo, 
and device-> max_alloc_size is 0x40000000,
After clGetDeviceInfo, max_alloc_size's value is 0xdeaddead40000000.

So add memset(param_value, 0, param_value_size) to clear param_value, the 
param_value's size is param_value_size, I think it is safe.

What do you think about?

> 
> The rest of the patch looks good to me.
> 
>    Simon
> _______________________________________________
> Beignet mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to