From: Dima Zavin Date: Wed, 10 Nov 2010 18:18:04 +0000 (-0800) Subject: media: tegra: avp: fix a mutex leak on an err path in lib load X-Git-Tag: firefly_0821_release~9833^2~116^2~1 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=6ac86d2460174c9d5b466b0a599f146c5bfae86f;p=firefly-linux-kernel-4.4.55.git 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 --- 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,