mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-23 10:57:35 -04:00
drm/imagination: Fix returned size for DRM_IOCTL_PVR_DEV_QUERY
For a few subtypes of DRM_IOCTL_PVR_DEV_QUERY, driver was overriding the returned size unconditionally. This would have resulted in increase of reported size beyond the amount of data returned to userspace when args->size < size of query structure. Updated behaviour matches with the description of drm_pvr_ioctl_dev_query_args.size and written byte length. None of the structures of DRM_IOCTL_PVR_DEV_QUERY changed after addition, so change will not break any compatibility with earlier version. Fixes:f99f5f3ea7("drm/imagination: Add GPU ID parsing and firmware loading") Fixes:ff5f643de0("drm/imagination: Add GEM and VM related code") Signed-off-by: Brajesh Gupta <brajesh.gupta@imgtec.com> Reviewed-by: Alessio Belle <alessio.belle@imgtec.com> Link: https://patch.msgid.link/20260701-b4-b4-query-v2-1-a1b491387875@imgtec.com Signed-off-by: Alessio Belle <alessio.belle@imgtec.com>
This commit is contained in:
committed by
Alessio Belle
parent
4af24c27a3
commit
d431b4012f
@@ -515,7 +515,8 @@ pvr_dev_query_quirks_get(struct pvr_device *pvr_dev,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
args->size = sizeof(query);
|
||||
if (args->size > sizeof(query))
|
||||
args->size = sizeof(query);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -596,7 +597,8 @@ pvr_dev_query_enhancements_get(struct pvr_device *pvr_dev,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
args->size = sizeof(query);
|
||||
if (args->size > sizeof(query))
|
||||
args->size = sizeof(query);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1019,7 +1019,8 @@ pvr_static_data_areas_get(const struct pvr_device *pvr_dev,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
args->size = sizeof(query);
|
||||
if (args->size > sizeof(query))
|
||||
args->size = sizeof(query);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1069,7 +1070,8 @@ pvr_heap_info_get(const struct pvr_device *pvr_dev,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
args->size = sizeof(query);
|
||||
if (args->size > sizeof(query))
|
||||
args->size = sizeof(query);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user