From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753375AbeDSPn4 (ORCPT ); Thu, 19 Apr 2018 11:43:56 -0400 Received: from mail.bootlin.com ([62.4.15.54]:42476 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752995AbeDSPnv (ORCPT ); Thu, 19 Apr 2018 11:43:51 -0400 From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Cc: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai , Pawel Osciak , Marek Szyprowski , Kyungmin Park , Hans Verkuil , Sakari Ailus , Philipp Zabel , Arnd Bergmann , Alexandre Courbot , Tomasz Figa , Paul Kocialkowski Subject: [PATCH v2 01/10] media: v4l2-ctrls: Add missing v4l2 ctrl unlock Date: Thu, 19 Apr 2018 17:41:15 +0200 Message-Id: <20180419154124.17512-2-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180419154124.17512-1-paul.kocialkowski@bootlin.com> References: <20180419154124.17512-1-paul.kocialkowski@bootlin.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds a missing v4l2_ctrl_unlock call that is required to avoid deadlocks. Signed-off-by: Paul Kocialkowski --- drivers/media/v4l2-core/v4l2-ctrls.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index f67e9f5531fa..ba05a8b9a095 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c @@ -3614,10 +3614,12 @@ void v4l2_ctrl_request_complete(struct media_request *req, continue; v4l2_ctrl_lock(ctrl); + if (ref->req) ptr_to_ptr(ctrl, ref->req->p_req, ref->p_req); else ptr_to_ptr(ctrl, ctrl->p_cur, ref->p_req); + v4l2_ctrl_unlock(ctrl); } @@ -3677,8 +3679,11 @@ void v4l2_ctrl_request_setup(struct media_request *req, } } } - if (!have_new_data) + + if (!have_new_data) { + v4l2_ctrl_unlock(master); continue; + } for (i = 0; i < master->ncontrols; i++) { if (master->cluster[i]) { -- 2.16.3