From: Benjamin LaHaise <bcrl@kvack.org>
To: David Howells <dhowells@redhat.com>
Cc: torvalds@linux-foundation.org, linux-arch@vger.kernel.org,
sfr@canb.auug.org.au, Joakim.Tjernlund@transmode.se,
arnd@arndb.de, linux-aio@kvack.org, linux-kernel@vger.kernel.org,
akpm@linux-foundation.org
Subject: Re: [PATCH 1/4] UAPI: Fix endianness conditionals in linux/aio_abi.h
Date: Tue, 12 Mar 2013 12:32:07 -0400 [thread overview]
Message-ID: <20130312163207.GI8869@kvack.org> (raw)
In-Reply-To: <20130306204733.31327.97388.stgit@warthog.procyon.org.uk>
On Wed, Mar 06, 2013 at 08:47:33PM +0000, David Howells wrote:
> In the UAPI header files, __BIG_ENDIAN and __LITTLE_ENDIAN must be compared
> against __BYTE_ORDER in preprocessor conditionals where these are exposed to
> userspace (that is they're not inside __KERNEL__ conditionals).
>
> However, in the main kernel the norm is to check for "defined(__XXX_ENDIAN)"
> rather than comparing against __BYTE_ORDER and this has incorrectly leaked
> into the userspace headers.
>
> The definition of PADDED() in linux/aio_abi.h is wrong in this way. Note that
> userspace will likely interpret this and thus the order of fields in struct
> iocb incorrectly as the little-endian variant on big-endian machines -
> depending on header inclusion order.
>
> [!!!] NOTE [!!!] This patch may adversely change the userspace API. It might
> be better to fix the ordering of aio_key and aio_reserved1 in struct iocb.
It is unlikely that anyone has used the existing kernel headers and hit this
issue given that most existing users use the libaio.h include (which does not
get the endianness tests wrong). Given that the kernel has always used the
correct endian mappings, this change is correct.
Acked-by: Benjamin LaHaise <bcrl@kvack.org>
-ben
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Benjamin LaHaise <bcrl@kvack.org>
> cc: linux-aio@kvack.org
> ---
>
> include/uapi/linux/aio_abi.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h
> index 86fa7a7..bb2554f 100644
> --- a/include/uapi/linux/aio_abi.h
> +++ b/include/uapi/linux/aio_abi.h
> @@ -62,9 +62,9 @@ struct io_event {
> __s64 res2; /* secondary result */
> };
>
> -#if defined(__LITTLE_ENDIAN)
> +#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
> #define PADDED(x,y) x, y
> -#elif defined(__BIG_ENDIAN)
> +#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
> #define PADDED(x,y) y, x
> #else
> #error edit for your odd byteorder.
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-aio' in
> the body to majordomo@kvack.org. For more info on Linux AIO,
> see: http://www.kvack.org/aio/
> Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
--
"Thought is the essence of where you are now."
next prev parent reply other threads:[~2013-03-12 16:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-06 20:47 [RFC][PATCH 0/4] UAPI: Fix up endianness conditionals David Howells
2013-03-06 20:47 ` [PATCH 1/4] UAPI: Fix endianness conditionals in linux/aio_abi.h David Howells
2013-03-12 16:32 ` Benjamin LaHaise [this message]
2013-03-12 18:22 ` Jeff Moyer
2013-03-06 20:47 ` [PATCH 2/4] UAPI: Fix endianness conditionals in linux/acct.h David Howells
2013-03-06 20:47 ` [PATCH 3/4] UAPI: Fix endianness conditionals in linux/raid/md_p.h David Howells
2013-03-12 1:43 ` NeilBrown
2013-03-06 20:48 ` [PATCH 4/4] UAPI: Fix endianness conditionals in M32R's asm/stat.h David Howells
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=20130312163207.GI8869@kvack.org \
--to=bcrl@kvack.org \
--cc=Joakim.Tjernlund@transmode.se \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=dhowells@redhat.com \
--cc=linux-aio@kvack.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox