From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: fix endianness annotation for __apply_alternatives()/get_alt_insn()
Date: Thu, 29 Jun 2017 15:19:44 +0100 [thread overview]
Message-ID: <20170629141944.GD18630@arm.com> (raw)
In-Reply-To: <20170629141323.GH11040@leverpostej>
On Thu, Jun 29, 2017 at 03:13:23PM +0100, Mark Rutland wrote:
> On Thu, Jun 29, 2017 at 03:26:47PM +0200, Luc Van Oostenryck wrote:
> > On Thu, Jun 29, 2017 at 11:28:51AM +0100, Will Deacon wrote:
> > > On Wed, Jun 28, 2017 at 04:55:57PM +0200, Luc Van Oostenryck wrote:
> > > > get_alt_insn() is used to read and create ARM instructions, which
> > > > are always stored in memory in little-endian order. These values
> > > > are thus correctly converted to/from native order when processed
> > > > but the pointers used to hold the address of these instructions
> > > > are declared as for native order values.
> > > >
> > > > Fix this by declaring the pointers as __le32* instead of u32* and
> > > > make the few appropriate needed changes.
> > > >
> > > > + origptr = (__le32 __force *) ALT_ORIG_PTR(alt);
> > > > + replptr = (__le32 __force *) ALT_REPL_PTR(alt);
> > >
> > > Why is the __force needed here?
> >
> > Because of the cast to u32* in:
> > #define ALT_ORIG_PTR(a) __ALT_PTR(a, orig_offset)
> > #define ALT_REPL_PTR(a) __ALT_PTR(a, alt_offset)
> > #define __ALT_PTR(a,f) (u32 *)((void *)&(a)->f + (a)->f)
> >
> > Of course, if this (u32*) is not really needed, then the __force
> > is also not needed.
> >
> > And since, it seems indeed to be the case, I'll gladly sent a patch:
> > -#define __ALT_PTR(a,f) (u32 *)((void *)&(a)->f + (a)->f)
> > +#define __ALT_PTR(a,f) ((void *)&(a)->f + (a)->f)
> > if it suits you.
>
> Given __ALT_PTR is intended to give a pointer to A64 instructions, which
> are in le32 format, wouldn't it make more sense for __ALT_PTR to cast to
> __le32 * ?
Might be a bit weird for ALT_REPL_PTR, which is cast to unsigned long.
Will
next prev parent reply other threads:[~2017-06-29 14:19 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-28 14:55 [PATCH] arm64: fix endianness annotation for __apply_alternatives()/get_alt_insn() Luc Van Oostenryck
2017-06-29 10:28 ` Will Deacon
2017-06-29 13:26 ` Luc Van Oostenryck
2017-06-29 14:11 ` Will Deacon
2017-06-29 14:13 ` Mark Rutland
2017-06-29 14:19 ` Will Deacon [this message]
2017-06-29 14:22 ` Mark Rutland
2017-06-29 14:26 ` Will Deacon
2017-06-29 15:15 ` Luc Van Oostenryck
2017-06-29 15:20 ` Will Deacon
2017-06-29 15:56 ` Luc Van Oostenryck
2017-06-29 14:40 ` [PATCH v2] " Luc Van Oostenryck
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=20170629141944.GD18630@arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@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.