From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 94FB3D262B1 for ; Wed, 21 Jan 2026 02:13:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ggu2VYssaqPzB+lfsAVnB3UCMlYP053i9KIoNenyvO8=; b=FOlzEph7vzCQF/5764qZTkpZ9E idFrtfmyKYC0N0M+swiVjBlnsOV8b6mOsR5h69aGilAB4DXrmeADRFJ8w5hSADTKK+0l/jMPwnHOM XZkwvmMs8J8r3lqxuzF+EBpq+U3HvPeVswq792F14HZ4x4dWZAxpg+AFdvUAbTvqZAU5qVR3mboLe L+O9ZOUVNKKPuPpy5Mv/ZqXT5lgwDt3ExRk31QHWmfPoDoPSdohtBOAxeZ/oYxD/H9MmHL/Ce+1Je GPeIPtLLlHoe1NG+WSPjkok+gkxRvq4NR438jbOgppLsZkRXr6eFq6SBh1maB2CPMQtk5/obJk0mG ZDFosjog==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1viNjF-00000004lGd-00xA; Wed, 21 Jan 2026 02:13:53 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1viNjD-00000004lGG-0Pm0 for linux-arm-kernel@lists.infradead.org; Wed, 21 Jan 2026 02:13:52 +0000 Received: from pendragon.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id C70812D7; Wed, 21 Jan 2026 03:13:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768961598; bh=Xe1nmcNnParGKTT36BF5z73M+2mDyrArtK+cq8m9Fj0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wCvViTFm0WUujGrdnzCktwQ6GchNtco7Q3jb1CP2O7qUQSJ81oyjbblLHI4sn87I7 YpxtmMZAOqzRDggSjFyK/hG77NbfBYcd2JAN7QVJhUb98o3mgvBT0xS2G2ZqdWVd4M uYp+cR10in8QBvqqruwvT2ncuZ0z+XDmgK3cVPBA= Date: Wed, 21 Jan 2026 04:13:48 +0200 From: Laurent Pinchart To: Frank Li Cc: Steve Longerbeam , Philipp Zabel , Mauro Carvalho Chehab , Greg Kroah-Hartman , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , imx@lists.linux.dev, linux-media@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH RESEND v2 4/5] media: staging: media: imx6-mipi-csi2: use guard() to simplify code Message-ID: <20260121021348.GH403250@killaraus> References: <20260116-stage-csi2-cleanup-v2-0-a56e9cb25196@nxp.com> <20260116-stage-csi2-cleanup-v2-4-a56e9cb25196@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20260116-stage-csi2-cleanup-v2-4-a56e9cb25196@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260120_181351_296859_EF77FFE4 X-CRM114-Status: GOOD ( 26.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Frank, Thank you for the patch. On Fri, Jan 16, 2026 at 11:17:59AM -0500, Frank Li wrote: > Use guard() to simplify mutex locking. No functional change. > > Signed-off-by: Frank Li > --- > leave as it without cleanup goto branch because there are two path to > update stream_count. > > And it will be replaced soon at > > Use new v4l2_subdev_pad_ops.enable_streams(disalbe_stream) replace > deprecated s_stream interface. > > https://lore.kernel.org/imx/20250821-95_cam-v3-18-c9286fbb34b9@nxp.com/ > --- > drivers/staging/media/imx/imx6-mipi-csi2.c | 54 +++++++++++------------------- > 1 file changed, 19 insertions(+), 35 deletions(-) > > diff --git a/drivers/staging/media/imx/imx6-mipi-csi2.c b/drivers/staging/media/imx/imx6-mipi-csi2.c > index e1b4b7fb53131ce9515b9441d8fc420e85d3e993..762f19ffd0858c952027afa8e0f36fc87246e1ea 100644 > --- a/drivers/staging/media/imx/imx6-mipi-csi2.c > +++ b/drivers/staging/media/imx/imx6-mipi-csi2.c > @@ -412,21 +412,17 @@ static int csi2_s_stream(struct v4l2_subdev *sd, int enable) > struct csi2_dev *csi2 = sd_to_dev(sd); > int i, ret = 0; > > - mutex_lock(&csi2->lock); > + guard(mutex)(&csi2->lock); > > - if (!csi2->src_sd) { > - ret = -EPIPE; > - goto out; > - } > + if (!csi2->src_sd) > + return -EPIPE; > > for (i = 0; i < CSI2_NUM_SRC_PADS; i++) { > if (csi2->sink_linked[i]) > break; > } > - if (i >= CSI2_NUM_SRC_PADS) { > - ret = -EPIPE; > - goto out; > - } > + if (i >= CSI2_NUM_SRC_PADS) > + return -EPIPE; > > /* > * enable/disable streaming only if stream_count is > @@ -441,14 +437,12 @@ static int csi2_s_stream(struct v4l2_subdev *sd, int enable) > else > csi2_stop(csi2); > if (ret) > - goto out; > + return ret; > > update_count: > csi2->stream_count += enable ? 1 : -1; > if (csi2->stream_count < 0) > csi2->stream_count = 0; > -out: > - mutex_unlock(&csi2->lock); > return ret; > } > > @@ -466,32 +460,28 @@ static int csi2_link_setup(struct media_entity *entity, > > remote_sd = media_entity_to_v4l2_subdev(remote->entity); > > - mutex_lock(&csi2->lock); > + guard(mutex)(&csi2->lock); > > if (local->flags & MEDIA_PAD_FL_SOURCE) { > if (flags & MEDIA_LNK_FL_ENABLED) { > - if (csi2->sink_linked[local->index - 1]) { > - ret = -EBUSY; > - goto out; > - } > + if (csi2->sink_linked[local->index - 1]) > + return -EBUSY; > + > csi2->sink_linked[local->index - 1] = true; > } else { > csi2->sink_linked[local->index - 1] = false; > } > } else { > if (flags & MEDIA_LNK_FL_ENABLED) { > - if (csi2->src_sd) { > - ret = -EBUSY; > - goto out; > - } > + if (csi2->src_sd) > + return -EBUSY; > + > csi2->src_sd = remote_sd; > } else { > csi2->src_sd = NULL; > } > } > > -out: > - mutex_unlock(&csi2->lock); > return ret; You can return 0; here and drop the local ret variable. With that, Reviewed-by: Laurent Pinchart > } > > @@ -512,14 +502,12 @@ static int csi2_get_fmt(struct v4l2_subdev *sd, > struct csi2_dev *csi2 = sd_to_dev(sd); > struct v4l2_mbus_framefmt *fmt; > > - mutex_lock(&csi2->lock); > + guard(mutex)(&csi2->lock); > > fmt = __csi2_get_fmt(csi2, sd_state, sdformat->pad, sdformat->which); > > sdformat->format = *fmt; > > - mutex_unlock(&csi2->lock); > - > return 0; > } > > @@ -529,17 +517,14 @@ static int csi2_set_fmt(struct v4l2_subdev *sd, > { > struct csi2_dev *csi2 = sd_to_dev(sd); > struct v4l2_mbus_framefmt *fmt; > - int ret = 0; > > if (sdformat->pad >= CSI2_NUM_PADS) > return -EINVAL; > > - mutex_lock(&csi2->lock); > + guard(mutex)(&csi2->lock); > > - if (csi2->stream_count > 0) { > - ret = -EBUSY; > - goto out; > - } > + if (csi2->stream_count > 0) > + return -EBUSY; > > /* Output pads mirror active input pad, no limits on input pads */ > if (sdformat->pad != CSI2_SINK_PAD) > @@ -548,9 +533,8 @@ static int csi2_set_fmt(struct v4l2_subdev *sd, > fmt = __csi2_get_fmt(csi2, sd_state, sdformat->pad, sdformat->which); > > *fmt = sdformat->format; > -out: > - mutex_unlock(&csi2->lock); > - return ret; > + > + return 0; > } > > static int csi2_registered(struct v4l2_subdev *sd) -- Regards, Laurent Pinchart