1. 24 10月, 2012 1 次提交
    • C
      arch/tile: eliminate pt_regs trampolines for syscalls · 6b14e419
      Chris Metcalf 提交于
      Using the new current_pt_regs() model, we can remove some trampolines
      from assembly code and call directly to the C syscall implementations.
      rt_sigreturn() and clone() still need some assembly wrapping, but no
      longer are passed a pt_regs pointer.  sigaltstack() and the
      tilepro-specific cmpxchg_badaddr() syscalls are now just straight C.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      6b14e419
  2. 01 10月, 2012 1 次提交
  3. 02 6月, 2012 5 次提交
  4. 14 3月, 2012 1 次提交
    • M
      tile: Use set_current_blocked() and block_sigmask() · ad092338
      Matt Fleming 提交于
      As described in e6fa16ab ("signal: sigprocmask() should do
      retarget_shared_pending()") the modification of current->blocked is
      incorrect as we need to check whether the signal we're about to block
      is pending in the shared queue.
      
      Also, use the new helper function introduced in commit 5e6292c0
      ("signal: add block_sigmask() for adding sigmask to current->blocked")
      which centralises the code for updating current->blocked after
      successfully delivering a signal and reduces the amount of duplicate
      code across architectures. In the past some architectures got this
      code wrong, so using this helper function should stop that from
      happening again.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Acked-by: NOleg Nesterov <oleg@redhat.com>
      Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      ad092338
  5. 20 5月, 2011 1 次提交
    • C
      arch/tile: support signal "exception-trace" hook · 571d76ac
      Chris Metcalf 提交于
      This change adds support for /proc/sys/debug/exception-trace to tile.
      Like x86 and sparc, by default it is set to "1", generating a one-line
      printk whenever a user process crashes.  By setting it to "2", we get
      a much more complete userspace diagnostic at crash time, including
      a user-space backtrace, register dump, and memory dump around the
      address of the crash.
      
      Some vestiges of the Tilera-internal version of this support are
      removed with this patch (the show_crashinfo variable and the
      arch_coredump_signal function).  We retain a "crashinfo" boot parameter
      which allows you to set the boot-time value of exception-trace.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      571d76ac
  6. 18 12月, 2010 1 次提交
    • C
      arch/tile: handle rt_sigreturn() more cleanly · 81711cee
      Chris Metcalf 提交于
      The current tile rt_sigreturn() syscall pattern uses the common idiom
      of loading up pt_regs with all the saved registers from the time of
      the signal, then anticipating the fact that we will clobber the ABI
      "return value" register (r0) as we return from the syscall by setting
      the rt_sigreturn return value to whatever random value was in the pt_regs
      for r0.
      
      However, this breaks in our 64-bit kernel when running "compat" tasks,
      since we always sign-extend the "return value" register to properly
      handle returned pointers that are in the upper 2GB of the 32-bit compat
      address space.  Doing this to the sigreturn path then causes occasional
      random corruption of the 64-bit r0 register.
      
      Instead, we stop doing the crazy "load the return-value register"
      hack in sigreturn.  We already have some sigreturn-specific assembly
      code that we use to pass the pt_regs pointer to C code.  We extend that
      code to also set the link register to point to a spot a few instructions
      after the usual syscall return address so we don't clobber the saved r0.
      Now it no longer matters what the rt_sigreturn syscall returns, and the
      pt_regs structure can be cleanly and completely reloaded.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      81711cee
  7. 18 11月, 2010 1 次提交
  8. 02 11月, 2010 2 次提交
    • C
      arch/tile: don't allow user code to set the PL via ptrace or signal return · 1deb9c5d
      Chris Metcalf 提交于
      The kernel was allowing any component of the pt_regs to be updated either
      by signal handlers writing to the stack, or by processes writing via
      PTRACE_POKEUSR or PTRACE_SETREGS, which meant they could set their PL
      up from 0 to 1 and get access to kernel code and data (or, in practice,
      cause a kernel panic).  We now always reset the ex1 field, allowing the
      user to set their ICS bit only.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      1deb9c5d
    • C
      arch/tile: correct double syscall restart for nested signals · 34a89d26
      Chris Metcalf 提交于
      This change is modelled on similar fixes for other architectures.
      The pt_regs "faultnum" member is set to the trap (fault) number that
      caused us to enter the kernel, and is INT_SWINT_1 for the syscall software
      interrupt.  We already supported a pseudo value, INT_SWINT_1_SIGRETURN,
      that we used for the rt_sigreturn syscall; it avoided the case where
      one signal was handled, then we "tail-called" to another handler.
      
      This change avoids the similar case where we start to call one handler,
      then are preempted into another handler when we start trying to run
      the first handler.  We clear ->faultnum after calling handle_signal(),
      and to be paranoid also in the case where there was no signal to deliver.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      34a89d26
  9. 15 10月, 2010 1 次提交
    • C
      arch/tile: Use <asm-generic/syscalls.h> · d929b6ae
      Chris Metcalf 提交于
      With this change we now include <asm-generic/syscalls.h> into the "tile"
      version of the header.  To take full advantage of the prototypes there,
      we also change our naming convention for "struct pt_regs *" syscalls so
      that, e.g., _sys_execve() is the "true" syscall entry, which sets the
      appropriate register to point to the pt_regs before calling sys_execve().
      
      While doing this I realized I no longer needed the fork and vfork
      entry point stubs, since those functions aren't in the generic
      syscall ABI, so I removed them as well.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      d929b6ae
  10. 15 9月, 2010 1 次提交
    • C
      arch/tile: Change struct sigcontext to be more useful · 74fca9da
      Chris Metcalf 提交于
      Rather than just using pt_regs, it now contains the actual saved
      state explicitly, similar to pt_regs.  By doing it this way, we
      provide a cleaner API for userspace (or equivalently, we avoid the
      need for libc to provide its own definition of sigcontext).
      
      While we're at it, move PT_FLAGS_xxx to where they are not visible
      from userspace.  And always pass siginfo and mcontext to signal
      handlers, even if they claim they don't need it, since sometimes
      they actually try to use it anyway in practice.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      74fca9da
  11. 07 7月, 2010 1 次提交
    • C
      arch/tile: Miscellaneous cleanup changes. · 0707ad30
      Chris Metcalf 提交于
      This commit is primarily changes caused by reviewing "sparse"
      and "checkpatch" output on our sources, so is somewhat noisy, since
      things like "printk() -> pr_err()" (or whatever) throughout the
      codebase tend to get tedious to read.  Rather than trying to tease
      apart precisely which things changed due to which type of code
      review, this commit includes various cleanups in the code:
      
      - sparse: Add declarations in headers for globals.
      - sparse: Fix __user annotations.
      - sparse: Using gfp_t consistently instead of int.
      - sparse: removing functions not actually used.
      - checkpatch: Clean up printk() warnings by using pr_info(), etc.;
        also avoid partial-line printks except in bootup code.
        - checkpatch: Use exposed structs rather than typedefs.
        - checkpatch: Change some C99 comments to C89 comments.
      
      In addition, a couple of minor other changes are rolled in
      to this commit:
      
      - Add support for a "raise" instruction to cause SIGFPE, etc., to be raised.
      - Remove some compat code that is unnecessary when we fully eliminate
        some of the deprecated syscalls from the generic syscall ABI.
      - Update the tile_defconfig to reflect current config contents.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      0707ad30
  12. 07 6月, 2010 1 次提交
  13. 05 6月, 2010 1 次提交