From 6ac86d2460174c9d5b466b0a599f146c5bfae86f Mon Sep 17 00:00:00 2001 From: Dima Zavin Date: Wed, 10 Nov 2010 10:18:04 -0800 Subject: [PATCH] media: tegra: avp: fix a mutex leak on an err path in lib load Also hold the mutex for longer on cleanup, while deleting the libs nvmap client. Not strictly necessary... Change-Id: I4dfdb065211571338053a16bacc2e5412c26ae77 Signed-off-by: Dima Zavin --- drivers/media/video/tegra/avp/avp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/media/video/tegra/avp/avp.c b/drivers/media/video/tegra/avp/avp.c index 7d4ecc05b2e4..d5c3385b6fe6 100644 --- a/drivers/media/video/tegra/avp/avp.c +++ b/drivers/media/video/tegra/avp/avp.c @@ -1233,10 +1233,10 @@ static int handle_load_lib_ioctl(struct avp_info *avp, unsigned long arg) return 0; err_insert_lib: - send_unload_lib_msg(avp, lib.handle, lib.name); err_copy_to_user: - mutex_unlock(&avp->libs_lock); + send_unload_lib_msg(avp, lib.handle, lib.name); err_load_lib: + mutex_unlock(&avp->libs_lock); return ret; } @@ -1275,10 +1275,10 @@ static void libs_cleanup(struct avp_info *avp) list_for_each_entry_safe(lib, lib_tmp, &avp->libs, list) { _delete_lib_locked(avp, lib); } - mutex_unlock(&avp->libs_lock); nvmap_client_put(avp->nvmap_libs); avp->nvmap_libs = NULL; + mutex_unlock(&avp->libs_lock); } static long tegra_avp_ioctl(struct file *file, unsigned int cmd, -- 2.34.1