From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751019AbdKSPhg (ORCPT ); Sun, 19 Nov 2017 10:37:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:35920 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750931AbdKSPhe (ORCPT ); Sun, 19 Nov 2017 10:37:34 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9A76C204EE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=jic23@kernel.org Date: Sun, 19 Nov 2017 15:37:30 +0000 From: Jonathan Cameron To: SF Markus Elfring Cc: devel@driverdev.osuosl.org, linux-iio@vger.kernel.org, Greg Kroah-Hartman , Hartmut Knaack , Lars-Peter Clausen , Michael Hennerich , Peter Meerwald-Stadler , LKML , kernel-janitors@vger.kernel.org Subject: Re: [PATCH] staging: iio: ad7746: Improve unlocking of a mutex in ad7746_start_calib() Message-ID: <20171119153730.3f04b953@archlinux> In-Reply-To: <57f5d20b-cc13-07b2-51cf-53704327df27@users.sourceforge.net> References: <57f5d20b-cc13-07b2-51cf-53704327df27@users.sourceforge.net> X-Mailer: Claws Mail 3.15.1-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 3 Nov 2017 09:33:57 +0100 SF Markus Elfring wrote: > From: Markus Elfring > Date: Fri, 3 Nov 2017 09:26:28 +0100 > > * Add a jump target so that a call of the function "mutex_unlock" is stored > only twice in this function implementation. > > * Replace two calls by goto statements. > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring Again, a reasonable little tidy up. Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to check we haven't missed anything. Thanks, Jonathan > --- > drivers/staging/iio/cdc/ad7746.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c > index a124853a05f0..c4a864725376 100644 > --- a/drivers/staging/iio/cdc/ad7746.c > +++ b/drivers/staging/iio/cdc/ad7746.c > @@ -302,23 +302,24 @@ static inline ssize_t ad7746_start_calib(struct device *dev, > mutex_lock(&chip->lock); > regval |= chip->config; > ret = i2c_smbus_write_byte_data(chip->client, AD7746_REG_CFG, regval); > - if (ret < 0) { > - mutex_unlock(&chip->lock); > - return ret; > - } > + if (ret < 0) > + goto unlock; > > do { > msleep(20); > ret = i2c_smbus_read_byte_data(chip->client, AD7746_REG_CFG); > - if (ret < 0) { > - mutex_unlock(&chip->lock); > - return ret; > - } > + if (ret < 0) > + goto unlock; > + > } while ((ret == regval) && timeout--); > > mutex_unlock(&chip->lock); > > return len; > + > +unlock: > + mutex_unlock(&chip->lock); > + return ret; > } > > static ssize_t ad7746_start_offset_calib(struct device *dev,