* [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).