loader: Avoid use-after-free / use of uninitialized local variables
[mesa.git] / src / loader / loader.c
index a45328e246491881080c0c81ae8373a9d1b2ad71..6e3e59d168787828d227d79e02bb91fd1a30cc6f 100644 (file)
@@ -459,15 +459,6 @@ loader_get_driver_for_fd(int fd)
       return driver;
 #endif
 
-   driver = loader_get_kernel_driver_name(fd);
-   bool is_amdgpu = driver && strcmp(driver, "amdgpu") == 0;
-   free(driver);
-
-   if (is_amdgpu) {
-      driver = strdup("radeonsi");
-      goto out;
-   }
-
    if (!loader_get_pci_id_for_fd(fd, &vendor_id, &chip_id)) {
       driver = loader_get_kernel_driver_name(fd);
       if (driver)
@@ -494,6 +485,15 @@ loader_get_driver_for_fd(int fd)
          }
    }
 
+   driver = loader_get_kernel_driver_name(fd);
+   bool is_amdgpu = driver && strcmp(driver, "amdgpu") == 0;
+   free(driver);
+
+   if (is_amdgpu)
+      driver = strdup("radeonsi");
+   else
+      driver = NULL;
+
 out:
    log_(driver ? _LOADER_DEBUG : _LOADER_WARNING,
          "pci id for fd %d: %04x:%04x, driver %s\n",