linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
@ 2015-11-03 22:02 Dan Carpenter
  2015-11-04 12:19 ` walter harms
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Dan Carpenter @ 2015-11-03 22:02 UTC (permalink / raw)
  To: linux-arm-kernel

Don't forget to unlock before returning an error code.

Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
index 846bc29c..0cfcb39 100644
--- a/drivers/bus/sunxi-rsb.c
+++ b/drivers/bus/sunxi-rsb.c
@@ -342,13 +342,13 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
 
 	ret = _sunxi_rsb_run_xfer(rsb);
 	if (ret)
-		goto out;
+		goto unlock;
 
 	*buf = readl(rsb->regs + RSB_DATA);
 
+unlock:
 	mutex_unlock(&rsb->lock);
 
-out:
 	return ret;
 }
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
  2015-11-03 22:02 [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read() Dan Carpenter
@ 2015-11-04 12:19 ` walter harms
  2015-11-04 12:34   ` Julia Lawall
  2015-11-04 12:46   ` Dan Carpenter
  2015-11-04 15:28 ` Chen-Yu Tsai
  2015-11-04 15:51 ` Maxime Ripard
  2 siblings, 2 replies; 6+ messages in thread
From: walter harms @ 2015-11-04 12:19 UTC (permalink / raw)
  To: linux-arm-kernel



Am 03.11.2015 23:02, schrieb Dan Carpenter:
> Don't forget to unlock before returning an error code.
> 
> Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
> index 846bc29c..0cfcb39 100644
> --- a/drivers/bus/sunxi-rsb.c
> +++ b/drivers/bus/sunxi-rsb.c
> @@ -342,13 +342,13 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
>  
>  	ret = _sunxi_rsb_run_xfer(rsb);
>  	if (ret)
> -		goto out;
> +		goto unlock;
>  
>  	*buf = readl(rsb->regs + RSB_DATA);
>  
> +unlock:
>  	mutex_unlock(&rsb->lock);
>  
> -out:
>  	return ret;
>  }
>  

microoptimisation:
You can remove the goto.

if (!ret)
	*buf = readl(rsb->regs + RSB_DATA);

mutex_unlock(&rsb->lock);
return ret;

just my 2 cents,

re,
 wh

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
  2015-11-04 12:19 ` walter harms
@ 2015-11-04 12:34   ` Julia Lawall
  2015-11-04 12:46   ` Dan Carpenter
  1 sibling, 0 replies; 6+ messages in thread
From: Julia Lawall @ 2015-11-04 12:34 UTC (permalink / raw)
  To: linux-arm-kernel



On Wed, 4 Nov 2015, walter harms wrote:

>
>
> Am 03.11.2015 23:02, schrieb Dan Carpenter:
> > Don't forget to unlock before returning an error code.
> >
> > Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> >
> > diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
> > index 846bc29c..0cfcb39 100644
> > --- a/drivers/bus/sunxi-rsb.c
> > +++ b/drivers/bus/sunxi-rsb.c
> > @@ -342,13 +342,13 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
> >
> >  	ret = _sunxi_rsb_run_xfer(rsb);
> >  	if (ret)
> > -		goto out;
> > +		goto unlock;
> >
> >  	*buf = readl(rsb->regs + RSB_DATA);
> >
> > +unlock:
> >  	mutex_unlock(&rsb->lock);
> >
> > -out:
> >  	return ret;
> >  }
> >
>
> microoptimisation:
> You can remove the goto.
>
> if (!ret)
> 	*buf = readl(rsb->regs + RSB_DATA);
>
> mutex_unlock(&rsb->lock);
> return ret;

I think the goto is nicer.  Failure => goto.

julia

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
  2015-11-04 12:19 ` walter harms
  2015-11-04 12:34   ` Julia Lawall
@ 2015-11-04 12:46   ` Dan Carpenter
  1 sibling, 0 replies; 6+ messages in thread
From: Dan Carpenter @ 2015-11-04 12:46 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Nov 04, 2015 at 01:19:55PM +0100, walter harms wrote:
> 
> 
> Am 03.11.2015 23:02, schrieb Dan Carpenter:
> > Don't forget to unlock before returning an error code.
> > 
> > Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > 
> > diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
> > index 846bc29c..0cfcb39 100644
> > --- a/drivers/bus/sunxi-rsb.c
> > +++ b/drivers/bus/sunxi-rsb.c
> > @@ -342,13 +342,13 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
> >  
> >  	ret = _sunxi_rsb_run_xfer(rsb);
> >  	if (ret)
> > -		goto out;
> > +		goto unlock;
> >  
> >  	*buf = readl(rsb->regs + RSB_DATA);
> >  
> > +unlock:
> >  	mutex_unlock(&rsb->lock);
> >  
> > -out:
> >  	return ret;
> >  }
> >  
> 
> microoptimisation:
> You can remove the goto.
> 
> if (!ret)
> 	*buf = readl(rsb->regs + RSB_DATA);

Success handling is an anti-pattern.

People normally don't do success handling because it leads to a lot of
nesting and spaghetti code.

	ret = one();
	if (!ret) {
		ret = two();
		if (!ret) {
			ret = three();
			if (!ret)
				return four();
		}
	}

But then they get to the last condition or the last two in a function
and they switch to success handling.

	ret = one();
	if (ret)
		handle_error;

	ret = two();
	if (ret)
		handle_error;

	ret = three();
	if (ret)
		handle_error;

	ret = four();
	if (!ret)
		handle_success;

	return ret;

Code like this drives me nuts.  It's often bug prone.  Keep it
consistent.  Always do error handling instead of success handling.
Don't worry about the extra line.  Worry more about keeping it simple.

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
  2015-11-03 22:02 [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read() Dan Carpenter
  2015-11-04 12:19 ` walter harms
@ 2015-11-04 15:28 ` Chen-Yu Tsai
  2015-11-04 15:51 ` Maxime Ripard
  2 siblings, 0 replies; 6+ messages in thread
From: Chen-Yu Tsai @ 2015-11-04 15:28 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Nov 4, 2015 at 6:02 AM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> Don't forget to unlock before returning an error code.
>
> Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Acked-by: Chen-Yu Tsai <wens@csie.org>

>
> diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
> index 846bc29c..0cfcb39 100644
> --- a/drivers/bus/sunxi-rsb.c
> +++ b/drivers/bus/sunxi-rsb.c
> @@ -342,13 +342,13 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
>
>         ret = _sunxi_rsb_run_xfer(rsb);
>         if (ret)
> -               goto out;
> +               goto unlock;
>
>         *buf = readl(rsb->regs + RSB_DATA);
>
> +unlock:
>         mutex_unlock(&rsb->lock);
>
> -out:
>         return ret;
>  }
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
  2015-11-03 22:02 [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read() Dan Carpenter
  2015-11-04 12:19 ` walter harms
  2015-11-04 15:28 ` Chen-Yu Tsai
@ 2015-11-04 15:51 ` Maxime Ripard
  2 siblings, 0 replies; 6+ messages in thread
From: Maxime Ripard @ 2015-11-04 15:51 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Dan,

On Wed, Nov 04, 2015 at 01:02:44AM +0300, Dan Carpenter wrote:
> Don't forget to unlock before returning an error code.
> 
> Fixes: d787dcdb9c8f ('bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

I just queued this for 4.4, thanks!

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151104/43b0f17f/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-11-04 15:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-03 22:02 [patch] bus: sunxi-rsb: unlock on error in sunxi_rsb_read() Dan Carpenter
2015-11-04 12:19 ` walter harms
2015-11-04 12:34   ` Julia Lawall
2015-11-04 12:46   ` Dan Carpenter
2015-11-04 15:28 ` Chen-Yu Tsai
2015-11-04 15:51 ` Maxime Ripard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).