Skip to content

Commit 5b1834d

Browse files
Tvrtko UrsulinChristianKoenigAMD
authored andcommitted
drm/fdinfo: Protect against driver unbind
If we unbind a driver from the PCI device with an active DRM client, subsequent read of the fdinfo data associated with the file descriptor in question will not end well. Protect the path with a drm_dev_enter/exit() pair. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Cc: Christian König <christian.koenig@amd.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> Fixes: 3f09a0c ("drm: Add common fdinfo helper") Cc: <stable@vger.kernel.org> # v6.5+ Signed-off-by: Christian König <christian.koenig@amd.com> Link: https://lore.kernel.org/r/20250418162512.72324-1-tvrtko.ursulin@igalia.com
1 parent 7604748 commit 5b1834d

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/gpu/drm/drm_file.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,10 @@ void drm_show_fdinfo(struct seq_file *m, struct file *f)
964964
struct drm_file *file = f->private_data;
965965
struct drm_device *dev = file->minor->dev;
966966
struct drm_printer p = drm_seq_file_printer(m);
967+
int idx;
968+
969+
if (!drm_dev_enter(dev, &idx))
970+
return;
967971

968972
drm_printf(&p, "drm-driver:\t%s\n", dev->driver->name);
969973
drm_printf(&p, "drm-client-id:\t%llu\n", file->client_id);
@@ -983,6 +987,8 @@ void drm_show_fdinfo(struct seq_file *m, struct file *f)
983987

984988
if (dev->driver->show_fdinfo)
985989
dev->driver->show_fdinfo(&p, file);
990+
991+
drm_dev_exit(idx);
986992
}
987993
EXPORT_SYMBOL(drm_show_fdinfo);
988994

0 commit comments

Comments
 (0)