Merge commit 'v2.6.32.9' into android-2.6.32
authorArve Hjønnevåg <arve@android.com>
Thu, 11 Mar 2010 00:38:33 +0000 (16:38 -0800)
committerArve Hjønnevåg <arve@android.com>
Thu, 11 Mar 2010 00:38:33 +0000 (16:38 -0800)
1  2 
drivers/char/mem.c
include/net/tcp.h
kernel/cgroup.c
kernel/cpuset.c
kernel/futex.c
kernel/sched.c
kernel/sysctl.c
mm/page_alloc.c
net/ipv4/devinet.c

Simple merge
Simple merge
diff --cc kernel/cgroup.c
Simple merge
diff --cc kernel/cpuset.c
Simple merge
diff --cc kernel/futex.c
index 546e13300d3b9317609f88fa647d949fd6885dfb,1ad4fa6db725133de2877e83759b99513cbfb9f2..c6a80616fcfd05362953b53d5808ff163acf57cf
@@@ -248,39 -245,8 +246,39 @@@ get_futex_key(u32 __user *uaddr, int fs
                return 0;
        }
  
 +      /*
 +       * The futex is hashed differently depending on whether
 +       * it's in a shared or private mapping.  So check vma first.
 +       */
 +      vma = find_extend_vma(mm, address);
 +      if (unlikely(!vma))
 +              return -EFAULT;
 +
 +      /*
 +       * Permissions.
 +       */
 +      if (unlikely((vma->vm_flags & (VM_IO|VM_READ)) != VM_READ))
 +              return (vma->vm_flags & VM_IO) ? -EPERM : -EACCES;
 +
 +      /*
 +       * Private mappings are handled in a simple way.
 +       *
 +       * NOTE: When userspace waits on a MAP_SHARED mapping, even if
 +       * it's a read-only handle, it's expected that futexes attach to
 +       * the object not the particular process.  Therefore we use
 +       * VM_MAYSHARE here, not VM_SHARED which is restricted to shared
 +       * mappings of _writable_ handles.
 +       */
 +      if (likely(!(vma->vm_flags & VM_MAYSHARE))) {
 +              key->both.offset |= FUT_OFF_MMSHARED; /* reference taken on mm */
 +              key->private.mm = mm;
 +              key->private.address = address;
 +              get_futex_key_refs(key);
 +              return 0;
 +      }
 +
  again:
-       err = get_user_pages_fast(address, 1, rw == VERIFY_WRITE, &page);
+       err = get_user_pages_fast(address, 1, 1, &page);
        if (err < 0)
                return err;
  
diff --cc kernel/sched.c
Simple merge
diff --cc kernel/sysctl.c
Simple merge
diff --cc mm/page_alloc.c
Simple merge
Simple merge