On Wed, Feb 19, 2020 at 4:20 PM John Bates <jbates@xxxxxxxxxx> wrote: > > > > On Wed, Feb 19, 2020 at 12:40 PM John Bates <jbates@xxxxxxxxxxxx> 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@xxxxxxxxxxxx> >> --- >> >> drivers/gpu/drm/virtio/virtgpu_object.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> 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; nit: ATOMIC_INIT(0)? >> + int handle = atomic_inc_return(&seqno); >> *resid = handle + 1; >> } else { >> int handle = ida_alloc(&vgdev->resource_ida, GFP_KERNEL); >> -- >> 2.25.0.265.gbab2e86ba0-goog >> _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel