Message ID | 20200219204002.220744-1-jbates@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/virtio: fix virtio-gpu resource id creation race | expand |
Hi John, On Thu, 20 Feb 2020 at 08:45, John Bates <jbates@chromium.org> wrote: > > The previous code was not thread safe and caused > undefined behavior from spurious duplicate resource IDs. > In this patch, an atomic_t is used instead. We no longer > see any duplicate IDs in tests with this change. > > Signed-off-by: John Bates <jbates@chromium.org> Adding a fixes tag like below makes it easier to track. Especially for Greg and team who are working on stable kernels. Fixes: 3e93bc2a58aa ("drm/virtio: make resource id workaround runtime switchable.") HTH Emil
On Thu, Feb 20, 2020 at 5:30 AM Emil Velikov <emil.l.velikov@gmail.com> wrote: > > Hi John, > > On Thu, 20 Feb 2020 at 08:45, John Bates <jbates@chromium.org> wrote: > > > > The previous code was not thread safe and caused > > undefined behavior from spurious duplicate resource IDs. > > In this patch, an atomic_t is used instead. We no longer > > see any duplicate IDs in tests with this change. > > > > Signed-off-by: John Bates <jbates@chromium.org> > Adding a fixes tag like below makes it easier to track. Especially for > Greg and team who are working on stable kernels. > > Fixes: 3e93bc2a58aa ("drm/virtio: make resource id workaround runtime > switchable.") FWIW, the fixes tag should refer to this commit instead commit 16065fcdd19ddb9e093192914ac863884f308766 Author: Gerd Hoffmann <kraxel@redhat.com> Date: Fri Feb 8 15:04:09 2019 +0100 drm/virtio: do NOT reuse resource ids > > HTH > Emil > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c index 017a9e0fc3bb..b11c1fce1770 100644 --- a/drivers/gpu/drm/virtio/virtgpu_object.c +++ b/drivers/gpu/drm/virtio/virtgpu_object.c @@ -42,8 +42,8 @@ static int virtio_gpu_resource_id_get(struct virtio_gpu_device *vgdev, * "f91a9dd35715 Fix unlinking resources from hash * table." (Feb 2019) fixes the bug. */ - static int handle; - handle++; + static atomic_t seqno; + int handle = atomic_inc_return(&seqno); *resid = handle + 1; } else { int handle = ida_alloc(&vgdev->resource_ida, GFP_KERNEL);
The previous code was not thread safe and caused undefined behavior from spurious duplicate resource IDs. In this patch, an atomic_t is used instead. We no longer see any duplicate IDs in tests with this change. Signed-off-by: John Bates <jbates@chromium.org> --- drivers/gpu/drm/virtio/virtgpu_object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)