Re: UAPI headers including non-UAPI headers by accident?

From: Arnd Bergmann
Date: Thu Jun 18 2015 - 03:59:24 EST

On Thursday 18 June 2015 09:52:36 Michael Kerrisk wrote:
> [CC += David]
> On 2 June 2015 at 18:36, Andy Lutomirski <luto@xxxxxxxxxx> wrote:
> > include/uapi/linux/signal.h starts with:
> >
> > #ifndef _UAPI_LINUX_SIGNAL_H
> > #define _UAPI_LINUX_SIGNAL_H
> >
> > #include <asm/signal.h>
> > #include <asm/siginfo.h>
> >
> > This causes it to include <asm/signal.h>, which is not the same thing
> > as <uapi/asm/signal.h>. Changing that will break userspace use of
> > this header, though, as the uapi/ won't get removed.
> >
> > What's the correct fix? This is causing trouble with a UML build for me.
> Perhaps David has some insight, since he architected the original UAPI split.

The uapi headers are installed without the uapi prefix. This means
that inside of the kernel, we get

-> uapi/linux/signal.h
-> asm/signal.h
-> uapi/asm/signal.h

while in the installed headers we just get

-> asm/signal.h

This all looks right to me: user space only sees the exported portions
under the traditional names, while the kernel sees both the kernel-side
and user-side definitions from the same path.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at