From ca419ff62420771ed5b98f8ace11bbca7915af18 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 27 May 2025 23:41:38 +0000 Subject: [PATCH] panvk: free up hwvulkan_device_t upon driver unloading Per , the hw_device_t::close() function is called upon driver unloading. The behavior has been like this since Android 10. Reviewed-by: Mary Guillemard Acked-by: Rob Clark Part-of: --- src/panfrost/vulkan/panvk_android.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/panfrost/vulkan/panvk_android.c b/src/panfrost/vulkan/panvk_android.c index f6bee3a7e14..b65ce883187 100644 --- a/src/panfrost/vulkan/panvk_android.c +++ b/src/panfrost/vulkan/panvk_android.c @@ -72,6 +72,11 @@ panvk_hal_open(const struct hw_module_t *mod, const char *id, static int panvk_hal_close(struct hw_device_t *dev) { - /* hwvulkan.h claims that hw_device_t::close() is never called. */ - return -1; + /* the hw_device_t::close() function is called upon driver unloading */ + assert(dev->version == HWVULKAN_DEVICE_API_VERSION_0_1); + assert(dev->module == &HAL_MODULE_INFO_SYM.common); + + hwvulkan_device_t *hal_dev = container_of(dev, hwvulkan_device_t, common); + free(hal_dev); + return 0; }