From 654c4a72ca8e1920e6e833c0b0fea466a6f0d3ed Mon Sep 17 00:00:00 2001 From: Allen Yu Date: Wed, 20 Aug 2014 11:39:59 +0800 Subject: [PATCH] media: tegra: nvavp: avoid racing in nvavp_uninit nvavp_init() might be called when open_lock is dropped in nvavp_uninit(), which will mess up the _init/_uninit sequence. To eliminate the racing, removes the unnecessary cancel_work_sync() and also the _unlock/_lock around it. It is safe to do so since nvavp_uninit() sets nvavp->pending to false in nvavp_halt_vde(), and the work handler will do nothing if nvavp->pending is false. Bug 200013513 Change-Id: If0a84545815c61388ba351e6cd1cc78bd99f809e Signed-off-by: Allen Yu Reviewed-on: http://git-master/r/482340 (cherry picked from commit f9abd9e6de2092b0b98dbc1f01b17e4d49b61457) Reviewed-on: http://git-master/r/542553 Reviewed-by: Dhiren Parmar Tested-by: Dhiren Parmar --- drivers/media/platform/tegra/nvavp/nvavp_dev.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/media/platform/tegra/nvavp/nvavp_dev.c b/drivers/media/platform/tegra/nvavp/nvavp_dev.c index 571c37055b3..b3948013da1 100644 --- a/drivers/media/platform/tegra/nvavp/nvavp_dev.c +++ b/drivers/media/platform/tegra/nvavp/nvavp_dev.c @@ -1292,9 +1292,6 @@ static void nvavp_uninit(struct nvavp_info *nvavp) if (video_initialized) { pr_debug("nvavp_uninit nvavp->video_initialized\n"); - mutex_unlock(&nvavp->open_lock); - cancel_work_sync(&nvavp->clock_disable_work); - mutex_lock(&nvavp->open_lock); nvavp_halt_vde(nvavp); nvavp_set_video_init_status(nvavp, 0); video_initialized = 0; -- 2.39.2