+ Thomas, AFAICT you are handling drm-misc-fixes this round - are you okay to take this patch with Christian's rb?

Regards,

Tvrtko

On 23/04/2025 13:57, Christian König wrote:
On 4/22/25 17:10, Tvrtko Ursulin wrote:

On 22/04/2025 10:20, Koenig, Christian wrote:
[AMD Official Use Only - AMD Internal Distribution Only]

Reviewed-by: Christian König <christian.koe...@amd.com>

Thanks!

I could also add:

Fixes: 3f09a0cd4ea3 ("drm: Add common fdinfo helper")
Cc: <sta...@vger.kernel.org> # v6.5+

With a disclaimer that the problem predates the common helper. Not sure if it 
is worth it for such an edge case.

I was planning to merge to drm-misc-next, but if I add the stable tag it would 
be drm-misc-fixes right?

Yeah even without the CC:stable tag that is clearly something for the -fixes 
branch I would say.

Regards,
Christian.



Regards,

Tvrtko

________________________________________
Von: Tvrtko Ursulin <tvrtko.ursu...@igalia.com>
Gesendet: Freitag, 18. April 2025 18:25
An: dri-devel@lists.freedesktop.org
Cc: kernel-...@igalia.com; Tvrtko Ursulin; Koenig, Christian; Lucas De Marchi; 
Rodrigo Vivi; Umesh Nerlige Ramappa
Betreff: [PATCH] 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.ursu...@igalia.com>
Cc: Christian König <christian.koe...@amd.com>
Cc: Lucas De Marchi <lucas.demar...@intel.com>
Cc: Rodrigo Vivi <rodrigo.v...@intel.com>
Cc: Umesh Nerlige Ramappa <umesh.nerlige.rama...@intel.com>
---
   drivers/gpu/drm/drm_file.c | 6 ++++++
   1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
index c299cd94d3f7..cf2463090d3a 100644
--- a/drivers/gpu/drm/drm_file.c
+++ b/drivers/gpu/drm/drm_file.c
@@ -964,6 +964,10 @@ void drm_show_fdinfo(struct seq_file *m, struct file *f)
          struct drm_file *file = f->private_data;
          struct drm_device *dev = file->minor->dev;
          struct drm_printer p = drm_seq_file_printer(m);
+       int idx;
+
+       if (!drm_dev_enter(dev, &idx))
+               return;

          drm_printf(&p, "drm-driver:\t%s\n", dev->driver->name);
          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)

          if (dev->driver->show_fdinfo)
                  dev->driver->show_fdinfo(&p, file);
+
+       drm_dev_exit(idx);
   }
   EXPORT_SYMBOL(drm_show_fdinfo);

--
2.48.0




Reply via email to