* [PATCH] drm/virtio: Don't detach GEM from a non-created context
@ 2026-06-25 17:08 Jason Macnak
2026-06-29 21:38 ` Dmitry Osipenko
2026-07-13 16:18 ` Dmitry Osipenko
0 siblings, 2 replies; 5+ messages in thread
From: Jason Macnak @ 2026-06-25 17:08 UTC (permalink / raw)
To: David Airlie, Gerd Hoffmann, Dmitry Osipenko, Gurchetan Singh
Cc: dri-devel, virtualization, linux-kernel, Jason Macnak, stable
Applies the same treatment as commit 7cf6dd467e87 ("drm/virtio:
Don't attach GEM to a non-created context in gem_object_open()")
to virtio_gpu_gem_object_close() to avoid trying to detach
a resource that was never attached due to a context
never being created when context_init is supported.
Fixes: 086b9f27f0ab ("drm/virtio: Don't create a context with default param if context_init is supported")
Cc: <stable@vger.kernel.org> # v6.14+
Signed-off-by: Jason Macnak <natsu@google.com>
---
drivers/gpu/drm/virtio/virtgpu_gem.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c
index 435d37d36034..66c3f6f74e9c 100644
--- a/drivers/gpu/drm/virtio/virtgpu_gem.c
+++ b/drivers/gpu/drm/virtio/virtgpu_gem.c
@@ -139,13 +139,15 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj,
if (!vgdev->has_virgl_3d)
return;
- objs = virtio_gpu_array_alloc(1);
- if (!objs)
- return;
- virtio_gpu_array_add_obj(objs, obj);
+ if (vfpriv->context_created) {
+ objs = virtio_gpu_array_alloc(1);
+ if (!objs)
+ return;
+ virtio_gpu_array_add_obj(objs, obj);
- virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id,
- objs);
+ virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id,
+ objs);
+ }
virtio_gpu_notify(vgdev);
}
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] drm/virtio: Don't detach GEM from a non-created context 2026-06-25 17:08 [PATCH] drm/virtio: Don't detach GEM from a non-created context Jason Macnak @ 2026-06-29 21:38 ` Dmitry Osipenko 2026-07-07 19:01 ` Yiwei Zhang 2026-07-13 16:18 ` Dmitry Osipenko 1 sibling, 1 reply; 5+ messages in thread From: Dmitry Osipenko @ 2026-06-29 21:38 UTC (permalink / raw) To: Jason Macnak, David Airlie, Gerd Hoffmann, Gurchetan Singh Cc: dri-devel, virtualization, linux-kernel, stable Hi, On 6/25/26 20:08, Jason Macnak wrote: > Applies the same treatment as commit 7cf6dd467e87 ("drm/virtio: > Don't attach GEM to a non-created context in gem_object_open()") > to virtio_gpu_gem_object_close() to avoid trying to detach > a resource that was never attached due to a context > never being created when context_init is supported. > > Fixes: 086b9f27f0ab ("drm/virtio: Don't create a context with default param if context_init is supported") > Cc: <stable@vger.kernel.org> # v6.14+ > Signed-off-by: Jason Macnak <natsu@google.com> > --- > drivers/gpu/drm/virtio/virtgpu_gem.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c > index 435d37d36034..66c3f6f74e9c 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_gem.c > +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c > @@ -139,13 +139,15 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj, > if (!vgdev->has_virgl_3d) > return; > > - objs = virtio_gpu_array_alloc(1); > - if (!objs) > - return; > - virtio_gpu_array_add_obj(objs, obj); > + if (vfpriv->context_created) { > + objs = virtio_gpu_array_alloc(1); > + if (!objs) > + return; > + virtio_gpu_array_add_obj(objs, obj); > > - virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > - objs); > + virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > + objs); > + } > virtio_gpu_notify(vgdev); > } The following scenario still will be troubling: 1. vgdev->has_context_init = true 2. virtio_gpu_gem_object_open() invoked, GEM created and not attached to ctx 3. virtio_gpu_context_init_ioctl() invoked, now vfpriv->context_created = true 4. virtio_gpu_gem_object_close() will detach resource that wasn't attached Add obj->ctx_attached member to struct virtio_gpu_object. See virtio_gpu_object_attach() that uses obj->attached, do the same for virtio_gpu_cmd_context_attach_resource(). -- Best regards, Dmitry ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/virtio: Don't detach GEM from a non-created context 2026-06-29 21:38 ` Dmitry Osipenko @ 2026-07-07 19:01 ` Yiwei Zhang 2026-07-09 16:23 ` Dmitry Osipenko 0 siblings, 1 reply; 5+ messages in thread From: Yiwei Zhang @ 2026-07-07 19:01 UTC (permalink / raw) To: Dmitry Osipenko Cc: Jason Macnak, David Airlie, Gerd Hoffmann, Gurchetan Singh, dri-devel, virtualization, linux-kernel, stable On Mon, Jun 29, 2026 at 2:39 PM Dmitry Osipenko <dmitry.osipenko@collabora.com> wrote: > > Hi, > > On 6/25/26 20:08, Jason Macnak wrote: > > Applies the same treatment as commit 7cf6dd467e87 ("drm/virtio: > > Don't attach GEM to a non-created context in gem_object_open()") > > to virtio_gpu_gem_object_close() to avoid trying to detach > > a resource that was never attached due to a context > > never being created when context_init is supported. > > > > Fixes: 086b9f27f0ab ("drm/virtio: Don't create a context with default param if context_init is supported") > > Cc: <stable@vger.kernel.org> # v6.14+ > > Signed-off-by: Jason Macnak <natsu@google.com> > > --- > > drivers/gpu/drm/virtio/virtgpu_gem.c | 14 ++++++++------ > > 1 file changed, 8 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c > > index 435d37d36034..66c3f6f74e9c 100644 > > --- a/drivers/gpu/drm/virtio/virtgpu_gem.c > > +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c > > @@ -139,13 +139,15 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj, > > if (!vgdev->has_virgl_3d) > > return; > > > > - objs = virtio_gpu_array_alloc(1); > > - if (!objs) > > - return; > > - virtio_gpu_array_add_obj(objs, obj); > > + if (vfpriv->context_created) { > > + objs = virtio_gpu_array_alloc(1); > > + if (!objs) > > + return; > > + virtio_gpu_array_add_obj(objs, obj); > > > > - virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > > - objs); > > + virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > > + objs); > > + } > > virtio_gpu_notify(vgdev); > > } > > The following scenario still will be troubling: > > 1. vgdev->has_context_init = true > 2. virtio_gpu_gem_object_open() invoked, GEM created and not attached to ctx > 3. virtio_gpu_context_init_ioctl() invoked, now vfpriv->context_created > = true > 4. virtio_gpu_gem_object_close() will detach resource that wasn't attached > > Add obj->ctx_attached member to struct virtio_gpu_object. See > virtio_gpu_object_attach() that uses obj->attached, do the same for > virtio_gpu_cmd_context_attach_resource(). > > -- > Best regards, > Dmitry Hi Dmitry, WIth context_init, resource attach/detach is per-context based. So a simple obj->ctx_attached won't work. One would have to track in the guest context_init ctx for whether a bo has been attached or not. Another option is to accept this patch and live with the case you mentioned. We can consider that "invalid" user behavior. Best, Yiwei ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/virtio: Don't detach GEM from a non-created context 2026-07-07 19:01 ` Yiwei Zhang @ 2026-07-09 16:23 ` Dmitry Osipenko 0 siblings, 0 replies; 5+ messages in thread From: Dmitry Osipenko @ 2026-07-09 16:23 UTC (permalink / raw) To: Yiwei Zhang Cc: Jason Macnak, David Airlie, Gerd Hoffmann, Gurchetan Singh, dri-devel, virtualization, linux-kernel, stable On 7/7/26 22:01, Yiwei Zhang wrote: > On Mon, Jun 29, 2026 at 2:39 PM Dmitry Osipenko > <dmitry.osipenko@collabora.com> wrote: >> >> Hi, >> >> On 6/25/26 20:08, Jason Macnak wrote: >>> Applies the same treatment as commit 7cf6dd467e87 ("drm/virtio: >>> Don't attach GEM to a non-created context in gem_object_open()") >>> to virtio_gpu_gem_object_close() to avoid trying to detach >>> a resource that was never attached due to a context >>> never being created when context_init is supported. >>> >>> Fixes: 086b9f27f0ab ("drm/virtio: Don't create a context with default param if context_init is supported") >>> Cc: <stable@vger.kernel.org> # v6.14+ >>> Signed-off-by: Jason Macnak <natsu@google.com> >>> --- >>> drivers/gpu/drm/virtio/virtgpu_gem.c | 14 ++++++++------ >>> 1 file changed, 8 insertions(+), 6 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c >>> index 435d37d36034..66c3f6f74e9c 100644 >>> --- a/drivers/gpu/drm/virtio/virtgpu_gem.c >>> +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c >>> @@ -139,13 +139,15 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj, >>> if (!vgdev->has_virgl_3d) >>> return; >>> >>> - objs = virtio_gpu_array_alloc(1); >>> - if (!objs) >>> - return; >>> - virtio_gpu_array_add_obj(objs, obj); >>> + if (vfpriv->context_created) { >>> + objs = virtio_gpu_array_alloc(1); >>> + if (!objs) >>> + return; >>> + virtio_gpu_array_add_obj(objs, obj); >>> >>> - virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, >>> - objs); >>> + virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, >>> + objs); >>> + } >>> virtio_gpu_notify(vgdev); >>> } >> >> The following scenario still will be troubling: >> >> 1. vgdev->has_context_init = true >> 2. virtio_gpu_gem_object_open() invoked, GEM created and not attached to ctx >> 3. virtio_gpu_context_init_ioctl() invoked, now vfpriv->context_created >> = true >> 4. virtio_gpu_gem_object_close() will detach resource that wasn't attached >> >> Add obj->ctx_attached member to struct virtio_gpu_object. See >> virtio_gpu_object_attach() that uses obj->attached, do the same for >> virtio_gpu_cmd_context_attach_resource(). >> >> -- >> Best regards, >> Dmitry > > Hi Dmitry, > > WIth context_init, resource attach/detach is per-context based. So a > simple obj->ctx_attached won't work. One would have to track in the > guest context_init ctx for whether a bo has been attached or not. > > Another option is to accept this patch and live with the case you > mentioned. We can consider that "invalid" user behavior. Indeed, obj->ctx_attached shouldn't work for a shared/exported BO. Will think on it for a couple days more and then merge this version if no better ideas will appear. -- Best regards, Dmitry ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/virtio: Don't detach GEM from a non-created context 2026-06-25 17:08 [PATCH] drm/virtio: Don't detach GEM from a non-created context Jason Macnak 2026-06-29 21:38 ` Dmitry Osipenko @ 2026-07-13 16:18 ` Dmitry Osipenko 1 sibling, 0 replies; 5+ messages in thread From: Dmitry Osipenko @ 2026-07-13 16:18 UTC (permalink / raw) To: Jason Macnak, David Airlie, Gerd Hoffmann, Gurchetan Singh, Yiwei Zhang Cc: dri-devel, virtualization, linux-kernel, stable On 6/25/26 20:08, Jason Macnak wrote: > Applies the same treatment as commit 7cf6dd467e87 ("drm/virtio: > Don't attach GEM to a non-created context in gem_object_open()") > to virtio_gpu_gem_object_close() to avoid trying to detach > a resource that was never attached due to a context > never being created when context_init is supported. > > Fixes: 086b9f27f0ab ("drm/virtio: Don't create a context with default param if context_init is supported") > Cc: <stable@vger.kernel.org> # v6.14+ > Signed-off-by: Jason Macnak <natsu@google.com> > --- > drivers/gpu/drm/virtio/virtgpu_gem.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c > index 435d37d36034..66c3f6f74e9c 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_gem.c > +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c > @@ -139,13 +139,15 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj, > if (!vgdev->has_virgl_3d) > return; > > - objs = virtio_gpu_array_alloc(1); > - if (!objs) > - return; > - virtio_gpu_array_add_obj(objs, obj); > + if (vfpriv->context_created) { > + objs = virtio_gpu_array_alloc(1); > + if (!objs) > + return; > + virtio_gpu_array_add_obj(objs, obj); > > - virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > - objs); > + virtio_gpu_cmd_context_detach_resource(vgdev, vfpriv->ctx_id, > + objs); > + } > virtio_gpu_notify(vgdev); > } > Applied to misc-fixes, thanks! -- Best regards, Dmitry ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-13 16:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-06-25 17:08 [PATCH] drm/virtio: Don't detach GEM from a non-created context Jason Macnak 2026-06-29 21:38 ` Dmitry Osipenko 2026-07-07 19:01 ` Yiwei Zhang 2026-07-09 16:23 ` Dmitry Osipenko 2026-07-13 16:18 ` Dmitry Osipenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox