[Intel-xe] [PATCH v2 3/4] fixup! drm/xe: Introduce a new DRM driver for Intel GPUs

Niranjana Vishwanathapura niranjana.vishwanathapura at intel.com
Tue Aug 15 16:42:31 UTC 2023


On Tue, Aug 15, 2023 at 02:03:42PM +0000, Souza, Jose wrote:
>On Mon, 2023-08-14 at 15:37 -0700, Umesh Nerlige Ramappa wrote:
>> struct drm_xe_engine_class_instance might get padded for 64-bit
>> alignment based on compiler used. Since engine information is kmalloced
>> in the query and drm_xe_engine_class_instance may be padded, it could
>> potentially leak some kernel memory to user.
>>
>> Add a rsvd field to struct drm_xe_engine_class_instance to make it
>> 64-bit aligned and zero out the field before returning to user.
>>
>> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>> ---
>>  drivers/gpu/drm/xe/xe_query.c | 7 +++++--
>>  include/uapi/drm/xe_drm.h     | 1 +
>>  2 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
>> index 99a4800c7c53..b9d565264ceb 100644
>> --- a/drivers/gpu/drm/xe/xe_query.c
>> +++ b/drivers/gpu/drm/xe/xe_query.c
>> @@ -65,7 +65,7 @@ static int query_engines(struct xe_device *xe,
>>  		return -EINVAL;
>>  	}
>>
>> -	hw_engine_info = kmalloc(size, GFP_KERNEL);
>> +	hw_engine_info = kzalloc(size, GFP_KERNEL);
>>  	if (!hw_engine_info)
>>  		return -ENOMEM;
>>
>> @@ -78,7 +78,10 @@ static int query_engines(struct xe_device *xe,
>>  				xe_to_user_engine_class[hwe->class];
>>  			hw_engine_info[i].engine_instance =
>>  				hwe->logical_instance;
>> -			hw_engine_info[i++].gt_id = gt->info.id;
>> +			hw_engine_info[i].gt_id = gt->info.id;
>> +			hw_engine_info[i].rsvd = 0;
>> +
>> +			i++;
>>  		}
>>
>>  	if (copy_to_user(query_ptr, hw_engine_info, size)) {
>> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
>> index 86f16d50e9cc..53cd57342620 100644
>> --- a/include/uapi/drm/xe_drm.h
>> +++ b/include/uapi/drm/xe_drm.h
>> @@ -753,6 +753,7 @@ struct drm_xe_engine_class_instance {
>>
>>  	__u16 engine_instance;
>>  	__u16 gt_id;
>> +	__u16 rsvd;
>
>I don't think this change should be fixup, as this breaks the uAPI.
>Please ping the Rodrigo, Matt Brost... about what we should do here.
>But at least you need to sync with other UMD contacts about landing this change at the same time UMDs update their xe_drm.h.
>

May be a 'Fixes' tag to let maintainers know?

Niranjana

>>  };
>>
>>  struct drm_xe_exec_queue_create {
>


More information about the Intel-xe mailing list