From: Sascha Hauer <s.hauer@pengutronix.de>
To: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH 2/2] of: fix side effect in macro expansion
Date: Wed, 29 Apr 2020 10:41:47 +0200 [thread overview]
Message-ID: <20200429084147.GG5877@pengutronix.de> (raw)
In-Reply-To: <54196041-b8c0-6ba0-9122-19168a183e0d@pengutronix.de>
On Wed, Apr 29, 2020 at 10:26:27AM +0200, Ahmad Fatoum wrote:
> On 4/29/20 10:00 AM, Sascha Hauer wrote:
> > On Wed, Apr 29, 2020 at 08:40:40AM +0200, Ahmad Fatoum wrote:
> >> On little endian platforms that don't define __arch_swab32p, be32_to_cpu
> >> ultimately expands to an expression that evaluates its argument multiple
> >> times. Because of the increment, this is wrong (and UB because of
> >> unsequenced modification).
> >> Hoist the side effect out of the macro argument.
> >
> > I'm not sure if the reasoning is correct. That would mean that
> > of_read_number() doesn't work on ARM, but I can assure it actually does.
>
> Typo, sorry. arch needs to define __arch_swab32 (no p at the end).
>
> of_read_number -> be32_to_cpu -> __be32_to_cpu -> __swab32 -> __fswab32
>
> then
>
> static inline __attribute_const__ __u32 __fswab32(__u32 val)
> {
> #ifdef __arch_swab32
> return __arch_swab32(val);
> #else
> return ___constant_swab32(val);
> #endif
> }
>
> where ___constant_swab32 is the macro that evaluates the argument
> multiple times.
__fswab32 is a function, for the caller it doesn't matter how often
___constant_swab32 evaluates its argument.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2020-04-29 8:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-29 6:40 [PATCH 1/2] scripts: imd: fix uninitialized variable read Ahmad Fatoum
2020-04-29 6:40 ` [PATCH 2/2] of: fix side effect in macro expansion Ahmad Fatoum
2020-04-29 8:00 ` Sascha Hauer
2020-04-29 8:26 ` Ahmad Fatoum
2020-04-29 8:41 ` Sascha Hauer [this message]
2020-04-29 8:47 ` Ahmad Fatoum
2020-04-29 7:38 ` [PATCH 1/2] scripts: imd: fix uninitialized variable read Sascha Hauer
2020-05-04 7:38 ` Steffen Trumtrar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200429084147.GG5877@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.