# \[PATCH 33/45\] include/uapi/asm-generic/signal.h: include stdlib.h in userspace

- Subsystems: GENERIC INCLUDE/ASM HEADER FILES, THE REST
- Maintainers: Arnd Bergmann, Linus Torvalds
- List: linux-api
- 4 messages, 2 authors
- Page: https://ratatoskr.run/linux-api/2015/02/4432061/t

## \[PATCH 33/45\] include/uapi/asm-generic/signal.h: include stdlib.h in userspace

- From: Mikko Rapeli \<hidden\>
- Date: 2015-02-16 23:11:38 
- Message: https://ratatoskr.run/linux-api/2015/02/4432061.md

```text
Fixes compiler warning:
error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <redacted>
---
 include/uapi/asm-generic/signal.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
index 9df61f1..8a341a2 100644
--- a/include/uapi/asm-generic/signal.h
+++ b/include/uapi/asm-generic/signal.h
@@ -3,6 +3,10 @@
 
 #include <linux/types.h>
 
+#ifndef __KERNEL__
+#include <stdlib.h>
+#endif
+
 #define _NSIG		64
 #define _NSIG_BPW	__BITS_PER_LONG
 #define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
-- 
2.1.4
```

## Re: \[PATCH 33/45\] include/uapi/asm-generic/signal.h: include stdlib.h in userspace

- From: Arnd Bergmann \<arnd@arndb.de\>
- Date: 2015-02-17 09:44:54 
- Message: https://ratatoskr.run/linux-api/2015/02/4432372.md

```text
On Tuesday 17 February 2015 00:05:36 Mikko Rapeli wrote:
> Fixes compiler warning:
> error: unknown type name ‘size_t’
> 
> Signed-off-by: Mikko Rapeli <redacted>
> ---
>  include/uapi/asm-generic/signal.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
> index 9df61f1..8a341a2 100644
> --- a/include/uapi/asm-generic/signal.h
> +++ b/include/uapi/asm-generic/signal.h
> @@ -3,6 +3,10 @@
>  
>  #include <linux/types.h>
>  
> +#ifndef __KERNEL__
> +#include <stdlib.h>
> +#endif
> +

Hmm, maybe we should use __kernel_size_t instead?

	Arnd
```

## Re: \[PATCH 33/45\] include/uapi/asm-generic/signal.h: include stdlib.h in userspace

- From: Mikko Rapeli \<hidden\>
- Date: 2015-03-10 22:58:33 
- Message: https://ratatoskr.run/linux-api/2015/03/4447958.md

```text
On Tue, Feb 17, 2015 at 10:44:48AM +0100, Arnd Bergmann wrote:
> On Tuesday 17 February 2015 00:05:36 Mikko Rapeli wrote:
> > Fixes compiler warning:
> > error: unknown type name ‘size_t’
> > 
> > Signed-off-by: Mikko Rapeli <redacted>
> > ---
> >  include/uapi/asm-generic/signal.h | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
> > index 9df61f1..8a341a2 100644
> > --- a/include/uapi/asm-generic/signal.h
> > +++ b/include/uapi/asm-generic/signal.h
> > @@ -3,6 +3,10 @@
> >  
> >  #include <linux/types.h>
> >  
> > +#ifndef __KERNEL__
> > +#include <stdlib.h>
> > +#endif
> > +
> 
> Hmm, maybe we should use __kernel_size_t instead?

This problem is in several uapi header files on x86:

asm-generic/shmbuf.h
asm-generic/signal.h
asm/signal.h
drm/drm.h
linux/agpgart.h
linux/kexec.h
linux/ncp_fs.h
linux/nfc.h
linux/omapfb.h
linux/reiserfs_xattr.h
linux/sysctl.h
sound/asound.h

so I guess using __kernel_size_t is the correct approach for all of them,
right?

linux/kexec.h seems suspicious though:

#ifndef __KERNEL__
/*
 * This structure is used to hold the arguments that are used when
 * loading  kernel binaries.
 */
struct kexec_segment {
        const void *buf;
        size_t bufsz;
        const void *mem;
        size_t memsz;
};

#endif /* __KERNEL__ */

-Mikko
```

## Re: \[PATCH 33/45\] include/uapi/asm-generic/signal.h: include stdlib.h in userspace

- From: Arnd Bergmann \<arnd@arndb.de\>
- Date: 2015-03-11 10:02:32 
- Message: https://ratatoskr.run/linux-api/2015/03/4448240.md

```text
On Wednesday 11 March 2015 00:58:28 Mikko Rapeli wrote:
> linux/kexec.h seems suspicious though:
> 
> #ifndef __KERNEL__
> /*
>  * This structure is used to hold the arguments that are used when
>  * loading  kernel binaries.
>  */
> struct kexec_segment {
>         const void *buf;
>         size_t bufsz;
>         const void *mem;
>         size_t memsz;
> };
> 
> #endif /* __KERNEL__ */
> 

Hmm, maybe that just needs to be removed as well, after we
have removed the function declaration that used to follow it
as part of this commit:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9dc5c05f45ca8101025046cd

Using __kernel_size_t would work here as well, but I suspect that
the entire structure is useless as it is not used by kernel or
user space, and kexec_tools has its own copy of the structure.

	Arnd
```
