2016-03-29 22:15:07

by Denys Vlasenko

[permalink] [raw]
Subject: [PATCH] uapi/linux/stddef.h: Provide __always_inline to userspace headers

Recent change to uapi/linux/swab.h needs this.

Unfortunately, UAPI headers don't include compiler.h and fixing it there is not enough.

Tested. Testcase: "make headers_install" and try to compile this:

#include <linux/swab.h>
void main() {}

Signed-off-by: Denys Vlasenko <[email protected]>
CC: Josh Boyer <[email protected]>
CC: Thomas Graf <[email protected]>
CC: Peter Zijlstra <[email protected]>
CC: David Rientjes <[email protected]>
CC: Arnd Bergmann <[email protected]>
CC: Ingo Molnar <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linus Torvalds <[email protected]>
CC: [email protected]
---
include/uapi/linux/stddef.h | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
index aa9f104..621fa8a 100644
--- a/include/uapi/linux/stddef.h
+++ b/include/uapi/linux/stddef.h
@@ -1 +1,5 @@
#include <linux/compiler.h>
+
+#ifndef __always_inline
+#define __always_inline inline
+#endif
--
1.8.1.4


Subject: [tip:core/urgent] uapi/linux/stddef.h: Provide __always_inline to userspace headers

Commit-ID: 283d757378371e8044d873e661b1dccee46c5887
Gitweb: http://git.kernel.org/tip/283d757378371e8044d873e661b1dccee46c5887
Author: Denys Vlasenko <[email protected]>
AuthorDate: Wed, 30 Mar 2016 00:14:57 +0200
Committer: Ingo Molnar <[email protected]>
CommitDate: Wed, 30 Mar 2016 12:50:17 +0200

uapi/linux/stddef.h: Provide __always_inline to userspace headers

Josh Boyer reported that my recent change to uapi/linux/swab.h broke the Qemu build:

bc27fb68aaad ("include/uapi/linux/byteorder, swab: force inlining of some byteswap operations")

Unfortunately, UAPI headers don't include compiler.h so fixing it there is not enough,
add an __always_inline definition to uapi/linux/stddef.h instead.

Testcase: "make headers_install" and try to compile this:

#include <linux/swab.h>
void main() {}

Reported-by: Josh Boyer <[email protected]>
Signed-off-by: Denys Vlasenko <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Thomas Graf <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
include/uapi/linux/stddef.h | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
index aa9f104..621fa8a 100644
--- a/include/uapi/linux/stddef.h
+++ b/include/uapi/linux/stddef.h
@@ -1 +1,5 @@
#include <linux/compiler.h>
+
+#ifndef __always_inline
+#define __always_inline inline
+#endif

2016-03-30 20:00:38

by Josh Boyer

[permalink] [raw]
Subject: Re: [PATCH] uapi/linux/stddef.h: Provide __always_inline to userspace headers

On Tue, Mar 29, 2016 at 6:14 PM, Denys Vlasenko <[email protected]> wrote:
> Recent change to uapi/linux/swab.h needs this.
>
> Unfortunately, UAPI headers don't include compiler.h and fixing it there is not enough.
>
> Tested. Testcase: "make headers_install" and try to compile this:
>
> #include <linux/swab.h>
> void main() {}
>
> Signed-off-by: Denys Vlasenko <[email protected]>
> CC: Josh Boyer <[email protected]>
> CC: Thomas Graf <[email protected]>
> CC: Peter Zijlstra <[email protected]>
> CC: David Rientjes <[email protected]>
> CC: Arnd Bergmann <[email protected]>
> CC: Ingo Molnar <[email protected]>
> CC: Andrew Morton <[email protected]>
> CC: Linus Torvalds <[email protected]>
> CC: [email protected]
> ---
> include/uapi/linux/stddef.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
> index aa9f104..621fa8a 100644
> --- a/include/uapi/linux/stddef.h
> +++ b/include/uapi/linux/stddef.h
> @@ -1 +1,5 @@
> #include <linux/compiler.h>
> +
> +#ifndef __always_inline
> +#define __always_inline inline
> +#endif

This does appear to fix the compile failure, so from that point of
view you can add:

Tested-by: Josh Boyer <[email protected]>

if you'd like.

One thing I did notice that is somewhat unrelated is that the
installed linux/stddef.h is devoid of any header guards. So it is a
file that literally just has the hunk you've patched in and doesn't
have the somewhat standard:

#ifndef _UAPI_LINUX_STDDEF_H
#define _UAPI_LINUX_STDDEF_H

...

#endif

I'm not sure how important that is, but it might be nice to add for
consistency's sake.

josh