1. 06 8月, 2009 1 次提交
  2. 20 7月, 2009 1 次提交
  3. 17 7月, 2009 4 次提交
    • O
      kernel: is_current_single_threaded: don't use ->mmap_sem · 967cc537
      Oleg Nesterov 提交于
      is_current_single_threaded() can safely miss a freshly forked CLONE_VM
      task, but in this case it must not miss its parent. That is why we take
      mm->mmap_sem for writing to make sure a thread/task with the same ->mm
      can't pass exit_mm() and disappear.
      
      However we can avoid ->mmap_sem and rely on rcu/barriers:
      
      	- if we do not see the exiting parent on thread/process list
      	  we see the result of list_del_rcu(), in this case we must
      	  also see the result of list_add_rcu() which does wmb().
      
      	- if we do see the parent but its ->mm == NULL, we need rmb()
      	  to make sure we can't miss the child.
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      967cc537
    • O
      kernel: rename is_single_threaded(task) to current_is_single_threaded(void) · 5bb459bb
      Oleg Nesterov 提交于
      - is_single_threaded(task) is not safe unless task == current,
        we can't use task->signal or task->mm.
      
      - it doesn't make sense unless task == current, the task can
        fork right after the check.
      
      Rename it to current_is_single_threaded() and kill the argument.
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      5bb459bb
    • O
      kernel: fix is_single_threaded · d2e3ee9b
      Oleg Nesterov 提交于
      - Fix the comment, is_single_threaded(p) actually means that nobody shares
        ->mm with p.
      
        I think this helper should be renamed, and it should not have arguments.
        With or without this patch it must not be used unless p == current,
        otherwise we can't safely use p->signal or p->mm.
      
      - "if (atomic_read(&p->signal->count) != 1)" is not right when we have a
        zombie group leader, use signal->live instead.
      
      - Add PF_KTHREAD check to skip kernel threads which may borrow p->mm,
        otherwise we can return the wrong "false".
      
      - Use for_each_process() instead of do_each_thread(), all threads must use
        the same ->mm.
      
      - Use down_write(mm->mmap_sem) + rcu_read_lock() instead of tasklist_lock
        to iterate over the process list. If there is another CLONE_VM process
        it can't pass exit_mm() which takes the same mm->mmap_sem. We can miss
        a freshly forked CLONE_VM task, but this doesn't matter because we must
        see its parent and return false.
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: James Morris <jmorris@namei.org>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Stephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      d2e3ee9b
    • S
      security: fix security_file_lock cmd argument · 713c0ecd
      Sten Spans 提交于
      Pass posix-translated lock operations to security_file_lock
      when invoked via sys_flock.
      Signed-off-by: NSten Spans <Sten_Spans@genua.de>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      713c0ecd
  4. 13 7月, 2009 9 次提交
  5. 12 7月, 2009 3 次提交
  6. 11 7月, 2009 22 次提交