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));