Skip to content
  1. Jan 20, 2013
  2. Dec 26, 2012
    • Al Viro's avatar
      x32: fix sigtimedwait · b2ddedcd
      Al Viro authored
      
      
      It needs 64bit timespec.  As it is, we end up truncating the timeout
      to whole seconds; usually it doesn't matter, but for having all
      sub-second timeouts truncated to one jiffy is visibly wrong.
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      b2ddedcd
    • Al Viro's avatar
      x32: fix waitid() · a566c288
      Al Viro authored
      
      
      It needs 64bit rusage and 32bit siginfo.  glibc never calls it with
      non-NULL rusage pointer, or we would've seen breakage already...
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      a566c288
    • Al Viro's avatar
      switch compat_sys_wait4() and compat_sys_waitid() to COMPAT_SYSCALL_DEFINE · 8d9807b1
      Al Viro authored
      
      
      Strictly speaking, ppc64 needs it for C ABI compliance.  Realistically
      I would be very surprised if e.g. passing 0xffffffff as 'options'
      argument to waitid() from 32bit task would cause problems, but yes,
      it puts us into undefined behaviour territory.  ppc64 expects int
      argument to be passed in 64bit register with bits 31..63 containing
      the same value.  SYSCALL_DEFINE on ppc provides a wrapper that normalizes
      the value passed from userland; so does COMPAT_SYSCALL_DEFINE.  Plain
      declaration of compat_sys_something() with an int argument obviously
      doesn't.  Again, for wait4 and waitid I would be extremely surprised
      if gcc started to produce code depending on that value having been
      properly sign-extended - the argument(s) in question end up passed
      blindly to sys_wait4 and sys_waitid resp. and normalization for native
      syscalls takes care of their use there.  Still, better to use
      COMPAT_SYSCALL_DEFINE here than worry about nasal daemons...
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      8d9807b1
    • Al Viro's avatar
      switch compat_sys_sigaltstack() to COMPAT_SYSCALL_DEFINE · 90228fc1
      Al Viro authored
      
      
      Makes sigaltstack conversion easier to split into per-architecture
      parts.
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      90228fc1
    • Vineet Gupta's avatar
      CONFIG_GENERIC_SIGALTSTACK build breakage with asm-generic/syscalls.h · f13a3664
      Vineet Gupta authored
      
      
      Saner transition plan for GENERIC_SIGALTSTACK conversion - instead of
      adding #define sys_sigaltstack sys_sigaltstack in asm/syscalls.h of
      architecture if it's pulls asm-generic/syscalls.h, only to have those
      defines removed once all architectures are converted, make the
      declaration in said asm-generic/syscalls.h conditional on the lack
      of GENERIC_SIGALTSTACK.  Less messy in intermediate stages that way...
      
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      Acked-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Cc: james.hogan@imgtec.com
      Cc: arnd@arndb.de
      Cc: torvalds@linux-foundation.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-arch@vger.kernel.org
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      f13a3664
    • Vineet Gupta's avatar
      Ensure that kernel_init_freeable() is not inlined into non __init code · f80b0c90
      Vineet Gupta authored
      Commit d6b21238
      
       "make sure that we always have a return path from
      kernel_execve()" reshuffled kernel_init()/init_post() to ensure that
      kernel_execve() has a caller to return to.
      
      It removed __init annotation for kernel_init() and introduced/calls a
      new routine kernel_init_freeable(). Latter however is inlined by any
      reasonable compiler (ARC gcc 4.4 in this case), causing slight code
      bloat.
      
      This patch forces kernel_init_freeable() as noinline reducing the .text
      
      bloat-o-meter vmlinux vmlinux_new
      add/remove: 1/0 grow/shrink: 0/1 up/down: 374/-334 (40)
      function                        old     new   delta
      kernel_init_freeable              -     374    +374 (.init.text)
      kernel_init                     628     294    -334 (.text)
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      f80b0c90
  3. Dec 22, 2012