1. 30 4月, 2008 14 次提交
  2. 22 4月, 2008 1 次提交
  3. 18 4月, 2008 1 次提交
  4. 04 3月, 2008 1 次提交
    • R
      freezer vs stopped or traced · 13b1c3d4
      Roland McGrath 提交于
      This changes the "freezer" code used by suspend/hibernate in its treatment
      of tasks in TASK_STOPPED (job control stop) and TASK_TRACED (ptrace) states.
      
      As I understand it, the intent of the "freezer" is to hold all tasks
      from doing anything significant.  For this purpose, TASK_STOPPED and
      TASK_TRACED are "frozen enough".  It's possible the tasks might resume
      from ptrace calls (if the tracer were unfrozen) or from signals
      (including ones that could come via timer interrupts, etc).  But this
      doesn't matter as long as they quickly block again while "freezing" is
      in effect.  Some minor adjustments to the signal.c code make sure that
      try_to_freeze() very shortly follows all wakeups from both kinds of
      stop.  This lets the freezer code safely leave stopped tasks unmolested.
      
      Changing this fixes the longstanding bug of seeing after resuming from
      suspend/hibernate your shell report "[1] Stopped" and the like for all
      your jobs stopped by ^Z et al, as if you had freshly fg'd and ^Z'd them.
      It also removes from the freezer the arcane special case treatment for
      ptrace'd tasks, which relied on intimate knowledge of ptrace internals.
      Signed-off-by: NRoland McGrath <roland@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      13b1c3d4
  5. 14 2月, 2008 1 次提交
  6. 09 2月, 2008 9 次提交
  7. 07 2月, 2008 2 次提交
  8. 06 2月, 2008 3 次提交
    • O
      exec: rework the group exit and fix the race with kill · ed5d2cac
      Oleg Nesterov 提交于
      As Roland pointed out, we have the very old problem with exec.  de_thread()
      sets SIGNAL_GROUP_EXIT, kills other threads, changes ->group_leader and then
      clears signal->flags.  All signals (even fatal ones) sent in this window
      (which is not too small) will be lost.
      
      With this patch exec doesn't abuse SIGNAL_GROUP_EXIT.  signal_group_exit(),
      the new helper, should be used to detect exit_group() or exec() in progress.
      It can have more users, but this patch does only strictly necessary changes.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Cc: Davide Libenzi <davidel@xmailserver.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Robin Holt <holt@sgi.com>
      Cc: Roland McGrath <roland@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ed5d2cac
    • O
      remove handle_group_stop() in favor of do_signal_stop() · f558b7e4
      Oleg Nesterov 提交于
      Every time we set SIGNAL_GROUP_EXIT or clear SIGNAL_STOP_DEQUEUED we also
      reset ->group_stop_count.
      
      This means that the SIGNAL_GROUP_EXIT check in handle_group_stop() is not
      needed, and do_signal_stop() should check SIGNAL_STOP_DEQUEUED only when
      ->group_stop_count == 0. With these changes handle_group_stop() becomes the
      subset of do_signal_stop(), we can kill it and use do_signal_stop() instead.
      
      Also, a preparation for the next patch.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Cc: Davide Libenzi <davidel@xmailserver.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Robin Holt <holt@sgi.com>
      Cc: Roland McGrath <roland@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f558b7e4
    • O
      __group_complete_signal(): fix coredump with group stop race · 198466b4
      Oleg Nesterov 提交于
      When __group_complete_signal() sees sig_kernel_coredump() signal, it starts
      the group stop, but sets ->group_exit_task = t in a hope that "t" will
      actually dequeue this signal and invoke do_coredump().  However, by the
      time "t" enters get_signal_to_deliver() it is possible that the signal was
      blocked/ignored or we have another pending !SIG_KERNEL_COREDUMP_MASK signal
      which will be dequeued first.  This means the task could be stopped but not
      killed.
      
      Remove this code from __group_complete_signal().  Note also this patch
      removes the bogus signal_wake_up(t, 1).  This thread can't be
      STOPPED/TRACED, note the corresponding check in wants_signal().
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Cc: Davide Libenzi <davidel@xmailserver.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Robin Holt <holt@sgi.com>
      Cc: Roland McGrath <roland@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      198466b4
  9. 01 2月, 2008 1 次提交
  10. 30 1月, 2008 1 次提交
  11. 07 12月, 2007 3 次提交
  12. 13 11月, 2007 1 次提交
  13. 30 10月, 2007 1 次提交
  14. 29 10月, 2007 1 次提交