Skip to content

Commit e8469ef

Browse files
alessiob-imggregkh
authored andcommitted
drm/imagination: Disallow exporting of PM/FW protected objects
commit 6b991ad upstream. These objects are meant to be used by the GPU firmware or by the PM unit within the GPU, in which case they may contain physical addresses. This adds a layer of protection against exposing potentially exploitable information outside of the driver. Fixes: ff5f643 ("drm/imagination: Add GEM and VM related code") Signed-off-by: Alessio Belle <alessio.belle@imgtec.com> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20251208-no-export-pm-fw-obj-v1-1-83ab12c61693@imgtec.com Signed-off-by: Matt Coster <matt.coster@imgtec.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 5487edb commit e8469ef

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

drivers/gpu/drm/imagination/pvr_gem.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ static void pvr_gem_object_free(struct drm_gem_object *obj)
2828
drm_gem_shmem_object_free(obj);
2929
}
3030

31+
static struct dma_buf *pvr_gem_export(struct drm_gem_object *obj, int flags)
32+
{
33+
struct pvr_gem_object *pvr_obj = gem_to_pvr_gem(obj);
34+
35+
if (pvr_obj->flags & DRM_PVR_BO_PM_FW_PROTECT)
36+
return ERR_PTR(-EPERM);
37+
38+
return drm_gem_prime_export(obj, flags);
39+
}
40+
3141
static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct vm_area_struct *vma)
3242
{
3343
struct pvr_gem_object *pvr_obj = gem_to_pvr_gem(gem_obj);
@@ -42,6 +52,7 @@ static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct vm_area_struct *v
4252
static const struct drm_gem_object_funcs pvr_gem_object_funcs = {
4353
.free = pvr_gem_object_free,
4454
.print_info = drm_gem_shmem_object_print_info,
55+
.export = pvr_gem_export,
4556
.pin = drm_gem_shmem_object_pin,
4657
.unpin = drm_gem_shmem_object_unpin,
4758
.get_sg_table = drm_gem_shmem_object_get_sg_table,

0 commit comments

Comments
 (0)