From 6d97561dcda1756f081817e541cc2712d8dbf03c Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 3 Dec 2016 17:38:01 +0200 Subject: [PATCH] wpa_priv: Handler driver global_deinit() on termination path This avoids a theoretical resource leak on exit path if wpa_priv is killed while there is a wpa_supplicant process using it. Signed-off-by: Jouni Malinen --- wpa_supplicant/wpa_priv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/wpa_supplicant/wpa_priv.c b/wpa_supplicant/wpa_priv.c index 11905f328..6de590a52 100644 --- a/wpa_supplicant/wpa_priv.c +++ b/wpa_supplicant/wpa_priv.c @@ -685,8 +685,12 @@ static void wpa_priv_interface_deinit(struct wpa_priv_interface *iface) { int i; - if (iface->drv_priv && iface->driver->deinit) - iface->driver->deinit(iface->drv_priv); + if (iface->drv_priv) { + if (iface->driver->deinit) + iface->driver->deinit(iface->drv_priv); + if (iface->drv_global_priv) + iface->driver->global_deinit(iface->drv_global_priv); + } if (iface->fd >= 0) { eloop_unregister_read_sock(iface->fd); -- 2.47.3