From b3ef0f5aa8bfd080dd929efe6a0b8c137abc23a3 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 28 Oct 2024 17:57:19 -0400 Subject: [PATCH] asahi: don't leak drm version valgrind. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/lib/agx_device.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/asahi/lib/agx_device.c b/src/asahi/lib/agx_device.c index 8ce3490320c..66e99171792 100644 --- a/src/asahi/lib/agx_device.c +++ b/src/asahi/lib/agx_device.c @@ -402,26 +402,31 @@ agx_open_device(void *memctx, struct agx_device *dev) dev->ops = agx_device_drm_ops; ssize_t params_size = -1; - drmVersionPtr version; - version = drmGetVersion(dev->fd); - if (!version) { - fprintf(stderr, "cannot get version: %s", strerror(errno)); - return NULL; - } + /* DRM version check */ + { + drmVersionPtr version = drmGetVersion(dev->fd); + if (!version) { + fprintf(stderr, "cannot get version: %s", strerror(errno)); + return NULL; + } - if (!strcmp(version->name, "asahi")) { - dev->is_virtio = false; - dev->ops = agx_device_drm_ops; - } else if (!strcmp(version->name, "virtio_gpu")) { - dev->is_virtio = true; - if (!agx_virtio_open_device(dev)) { - fprintf(stderr, - "Error opening virtio-gpu device for Asahi native context\n"); + if (!strcmp(version->name, "asahi")) { + dev->is_virtio = false; + dev->ops = agx_device_drm_ops; + } else if (!strcmp(version->name, "virtio_gpu")) { + dev->is_virtio = true; + if (!agx_virtio_open_device(dev)) { + fprintf( + stderr, + "Error opening virtio-gpu device for Asahi native context\n"); + return false; + } + } else { return false; } - } else { - return false; + + drmFreeVersion(version); } params_size = dev->ops.get_params(dev, &dev->params, sizeof(dev->params));