)]}'
{
  "log": [
    {
      "commit": "b40a79591ca918e7b91b0d9b6abd5d00f2e88c19",
      "tree": "c02916f789723f6479e55aa46cd01bf36238dea1",
      "parents": [
        "e37736777254ce1abc85493a5cacbefe5983b896"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Oct 25 22:28:12 2012 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Thu Oct 25 22:28:12 2012 +0200"
      },
      "message": "freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD\n\nflush_old_exec() clears PF_KTHREAD but forgets about PF_NOFREEZE.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Rafael J. Wysocki \u003crafael.j.wysocki@intel.com\u003e\n"
    },
    {
      "commit": "669abf4e5539c8aa48bf28c965be05c0a7b58a27",
      "tree": "5b8e9e17c4f03ddd719c9c2089d829e2a040854a",
      "parents": [
        "873f1eedc1b983d772283279192c4ca2f60e8482"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:10 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "vfs: make path_openat take a struct filename pointer\n\n...and fix up the callers. For do_file_open_root, just declare a\nstruct filename on the stack and fill out the .name field. For\ndo_filp_open, make it also take a struct filename pointer, and fix up its\ncallers to call it appropriately.\n\nFor filp_open, add a variant that takes a struct filename pointer and turn\nfilp_open into a wrapper around it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91a27b2a756784714e924e5e854b919273082d26",
      "tree": "3913246b7d6e62703ec915f481e3a7159393f0f0",
      "parents": [
        "8e377d15078a501c4da98471f56396343c407d92"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:14:55 2012 -0400"
      },
      "message": "vfs: define struct filename and have getname() return it\n\ngetname() is intended to copy pathname strings from userspace into a\nkernel buffer. The result is just a string in kernel space. It would\nhowever be quite helpful to be able to attach some ancillary info to\nthe string.\n\nFor instance, we could attach some audit-related info to reduce the\namount of audit-related processing needed. When auditing is enabled,\nwe could also call getname() on the string more than once and not\nneed to recopy it from userspace.\n\nThis patchset converts the getname()/putname() interfaces to return\na struct instead of a string. For now, the struct just tracks the\nstring in kernel space and the original userland pointer for it.\n\nLater, we\u0027ll add other information to the struct as it becomes\nconvenient.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "42859eea96ba6beabfb0369a1eeffa3c7d2bd9cb",
      "tree": "fa38aeda0d6e7a4c48a882b166b8643594a1ad50",
      "parents": [
        "f59b51fe3d3092c08d7d554ecb40db24011b2ebc",
        "f322220d6159455da2b5a8a596d802c8695fed30"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 12:02:25 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 12:02:25 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal\n\nPull generic execve() changes from Al Viro:\n \"This introduces the generic kernel_thread() and kernel_execve()\n  functions, and switches x86, arm, alpha, um and s390 over to them.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (26 commits)\n  s390: convert to generic kernel_execve()\n  s390: switch to generic kernel_thread()\n  s390: fold kernel_thread_helper() into ret_from_fork()\n  s390: fold execve_tail() into start_thread(), convert to generic sys_execve()\n  um: switch to generic kernel_thread()\n  x86, um/x86: switch to generic sys_execve and kernel_execve\n  x86: split ret_from_fork\n  alpha: introduce ret_from_kernel_execve(), switch to generic kernel_execve()\n  alpha: switch to generic kernel_thread()\n  alpha: switch to generic sys_execve()\n  arm: get rid of execve wrapper, switch to generic execve() implementation\n  arm: optimized current_pt_regs()\n  arm: introduce ret_from_kernel_execve(), switch to generic kernel_execve()\n  arm: split ret_from_fork, simplify kernel_thread() [based on patch by rmk]\n  generic sys_execve()\n  generic kernel_execve()\n  new helper: current_pt_regs()\n  preparation for generic kernel_thread()\n  um: kill thread-\u003eforking\n  um: let signal_delivered() do SIGTRAP on singlestepping into handler\n  ...\n"
    },
    {
      "commit": "38a76013ad809beb0b52f60d365c960d035bd83c",
      "tree": "c63ba707ab17dd1ff1e90650faf74570daa3cf9f",
      "parents": [
        "523d4e2008fd4a68b1a164e63e8c75b7b20f07e0"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Oct 08 16:31:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:42 2012 +0900"
      },
      "message": "mm: avoid taking rmap locks in move_ptes()\n\nDuring mremap(), the destination VMA is generally placed after the\noriginal vma in rmap traversal order: in move_vma(), we always have\nnew_pgoff \u003e\u003d vma-\u003evm_pgoff, and as a result new_vma-\u003evm_pgoff \u003e\u003d\nvma-\u003evm_pgoff unless vma_merge() merged the new vma with an adjacent one.\n\nWhen the destination VMA is placed after the original in rmap traversal\norder, we can avoid taking the rmap locks in move_ptes().\n\nEssentially, this reintroduces the optimization that had been disabled in\n\"mm anon rmap: remove anon_vma_moveto_tail\".  The difference is that we\ndon\u0027t try to impose the rmap traversal order; instead we just rely on\nthings being in the desired order in the common case and fall back to\ntaking locks in the uncommon case.  Also we skip the i_mmap_mutex in\naddition to the anon_vma lock: in both cases, the vmas are traversed in\nincreasing vm_pgoff order with ties resolved in tree insertion order.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Daniel Santos \u003cdaniel.santos@pobox.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5bbd43d5f450c3fca058f5b85f3dfb4e8cc88c9",
      "tree": "9ee712ea3c2768dc9934e1e6003680793f303a00",
      "parents": [
        "b5356a19ced273ef8a941be226f4dfdb95c23073"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Oct 08 19:13:01 2012 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 06:53:20 2012 +0900"
      },
      "message": "exec: make de_thread() killable\n\nChange de_thread() to use KILLABLE rather than UNINTERRUPTIBLE while\nwaiting for other threads.  The only complication is that we should\nclear -\u003egroup_exit_task and -\u003enotify_count before we return, and we\nshould do this under tasklist_lock.  -EAGAIN is used to match the\ninitial signal_group_exit() check/return, it doesn\u0027t really matter.\n\nThis fixes the (unlikely) race with coredump.  de_thread() checks\nsignal_group_exit() before it starts to kill the subthreads, but this\ncan\u0027t help if another CLONE_VM (but non CLONE_THREAD) task starts the\ncoredumping after de_thread() unlocks -\u003esiglock.  In this case the\nkilled sub-thread can block in exit_mm() waiting for coredump_finish(),\nexecing thread waits for that sub-thead, and the coredumping thread\nwaits for execing thread.  Deadlock.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f4cfb2e4e7a7e4e97a3e90e2ba1062f07fb2cb1",
      "tree": "25fa36bc342f624c46b39fa41bb4815397413338",
      "parents": [
        "12a2b4b2241e318b4f6df31228e4272d2c2968a1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Oct 04 17:15:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 06 03:05:16 2012 +0900"
      },
      "message": "coredump: use SUID_DUMPABLE_ENABLED rather than hardcoded 1\n\nCosmetic. Change setup_new_exec() and task_dumpable() to use\nSUID_DUMPABLE_ENABLED for /bin/grep.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "179899fd5dc780fe3bcd44d0eb7823e3d855c855",
      "tree": "a2e7bf0098162e1fa940cad56bb1e99ec10440ca",
      "parents": [
        "046d662f481830e652ac34cd112249adde16452a"
      ],
      "author": {
        "name": "Alex Kelly",
        "email": "alex.page.kelly@gmail.com",
        "time": "Thu Oct 04 17:15:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 06 03:05:15 2012 +0900"
      },
      "message": "coredump: update coredump-related headers\n\nCreate a new header file, fs/coredump.h, which contains functions only\nused by the new coredump.c.  It also moves do_coredump to the\ninclude/linux/coredump.h header file, for consistency.\n\nSigned-off-by: Alex Kelly \u003calex.page.kelly@gmail.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10c28d937e2cca577c2d804106b50dd0562fb062",
      "tree": "249f1c487bf8a9cc32912e20bf9f274c650f58e9",
      "parents": [
        "f34f9d186df35e5c39163444c43b4fc6255e39c5"
      ],
      "author": {
        "name": "Alex Kelly",
        "email": "alex.page.kelly@gmail.com",
        "time": "Wed Sep 26 21:52:08 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 02 21:35:55 2012 -0400"
      },
      "message": "coredump: move core dump functionality into its own file\n\nThis prepares for making core dump functionality optional.\n\nThe variable \"suid_dumpable\" and associated functions are left in fs/exec.c\nbecause they\u0027re used elsewhere, such as in ptrace.\n\nSigned-off-by: Alex Kelly \u003calex.page.kelly@gmail.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "38b983b3461e7d3c64a981e2338bb34605c46f30",
      "tree": "fb7dc311ba4d175746fb693530cf63db9ddb8616",
      "parents": [
        "282124d18626379a20b41d25e0c580f290cd09d4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Sep 30 13:38:55 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Sep 30 22:20:51 2012 -0400"
      },
      "message": "generic sys_execve()\n\nSelected by __ARCH_WANT_SYS_EXECVE in unistd.h.  Requires\n\t* working current_pt_regs()\n\t* *NOT* doing a syscall-in-kernel kind of kernel_execve()\nimplementation.  Using generic kernel_execve() is fine.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "282124d18626379a20b41d25e0c580f290cd09d4",
      "tree": "48adb982843cbb133c8079f06abad2911e019f12",
      "parents": [
        "a3460a59747cfddfa7be4758e5ef08bf5d751d59"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Sep 30 13:20:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Sep 30 13:36:39 2012 -0400"
      },
      "message": "generic kernel_execve()\n\nbased mostly on arm and alpha versions.  Architectures can define\n__ARCH_WANT_KERNEL_EXECVE and use it, provided that\n\t* they have working current_pt_regs(), even for kernel threads.\n\t* kernel_thread-spawned threads do have space for pt_regs\nin the normal location.  Normally that\u0027s as simple as switching to\ngeneric kernel_thread() and making sure that kernel threads do *not*\ngo through return from syscall path; call the payload from equivalent\nof ret_from_fork if we are in a kernel thread (or just have separate\nret_from_kernel_thread and make copy_thread() use it instead of\nret_from_fork in kernel thread case).\n\t* they have ret_from_kernel_execve(); it is called after\nsuccessful do_execve() done by kernel_execve() and gets normal\npt_regs location passed to it as argument.  It\u0027s essentially\na longjmp() analog - it should set sp, etc. to the situation\nexpected at the return for syscall and go there.  Eventually\nthe need for that sucker will disappear, but that\u0027ll take some\nsurgery on kernel_thread() payloads.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "179e037fc1370288188cb1f90b81156d75a3cb2d",
      "tree": "6dcc6fc5a2b2bc9e17258a178798475c95f40544",
      "parents": [
        "c3c073f808b22dfae15ef8412b6f7b998644139a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 21 22:43:47 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:09:59 2012 -0400"
      },
      "message": "do_coredump(): make sure that descriptor table isn\u0027t shared\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8280d16172243702ed43432f826ca6130edb4086",
      "tree": "020dff359c5b717a110432159bcc3ec1acf6594e",
      "parents": [
        "fe17f22d7fd0e344ef6447238f799bb49f670c6f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 21 12:11:46 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:09:57 2012 -0400"
      },
      "message": "new helper: replace_fd()\n\nanalog of dup2(), except that it takes struct file * as source.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6a6d27de340c89c5323565b49f7851362619925d",
      "tree": "b9b4ab23b43bd330584521917c9b2855c4a4e0cd",
      "parents": [
        "723a1d77431b0c568730ffac4dd0bcbbd3400031"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 21 09:56:33 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:09:56 2012 -0400"
      },
      "message": "take close-on-exec logics to fs/file.c, clean it up a bit\n\n... and add cond_resched() there, while we are at it.  We can\nget large latencies as is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "826eba4db0c643cc0e705c8365902c63fac2b7ee",
      "tree": "e1407d7f4ce93df18772ea7618d6884ce2ff6f0c",
      "parents": [
        "ddd03a1f7591827906d63dbe3ee003f832bb584f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 03 12:14:44 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Sep 20 09:51:13 2012 -0400"
      },
      "message": "the only place that needs to include asm/exec.h is linux/binfmts.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a0e881b7c189fa2bd76c024dbff91e79511c971d",
      "tree": "0c801918565b08921d21aceee5b326f64d998f5f",
      "parents": [
        "eff0d13f3823f35d70228cd151d2a2c89288ff32",
        "dbc6e0222d79e78925fe20733844a796a4b72cf9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull second vfs pile from Al Viro:\n \"The stuff in there: fsfreeze deadlock fixes by Jan (essentially, the\n  deadlock reproduced by xfstests 068), symlink and hardlink restriction\n  patches, plus assorted cleanups and fixes.\n\n  Note that another fsfreeze deadlock (emergency thaw one) is *not*\n  dealt with - the series by Fernando conflicts a lot with Jan\u0027s, breaks\n  userland ABI (FIFREEZE semantics gets changed) and trades the deadlock\n  for massive vfsmount leak; this is going to be handled next cycle.\n  There probably will be another pull request, but that stuff won\u0027t be\n  in it.\"\n\nFix up trivial conflicts due to unrelated changes next to each other in\ndrivers/{staging/gdm72xx/usb_boot.c, usb/gadget/storage_common.c}\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (54 commits)\n  delousing target_core_file a bit\n  Documentation: Correct s_umount state for freeze_fs/unfreeze_fs\n  fs: Remove old freezing mechanism\n  ext2: Implement freezing\n  btrfs: Convert to new freezing mechanism\n  nilfs2: Convert to new freezing mechanism\n  ntfs: Convert to new freezing mechanism\n  fuse: Convert to new freezing mechanism\n  gfs2: Convert to new freezing mechanism\n  ocfs2: Convert to new freezing mechanism\n  xfs: Convert to new freezing code\n  ext4: Convert to new freezing mechanism\n  fs: Protect write paths by sb_start_write - sb_end_write\n  fs: Skip atime update on frozen filesystem\n  fs: Add freezing handling to mnt_want_write() / mnt_drop_write()\n  fs: Improve filesystem freezing handling\n  switch the protection of percpu_counter list to spinlock\n  nfsd: Push mnt_want_write() outside of i_mutex\n  btrfs: Push mnt_want_write() outside of i_mutex\n  fat: Push mnt_want_write() outside of i_mutex\n  ...\n"
    },
    {
      "commit": "108ceeb020bb3558fe175a3fc8b60fd6c1a2a279",
      "tree": "26b99cdd883b88e9a9dfba20e4f4481de72c046f",
      "parents": [
        "0f20784d4ba3f88ca33b703b23372d8ccf6dbd42"
      ],
      "author": {
        "name": "Jovi Zhang",
        "email": "bookjovi@gmail.com",
        "time": "Mon Jul 30 14:42:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:20 2012 -0700"
      },
      "message": "coredump: fix wrong comments on core limits of pipe coredump case\n\nIn commit 898b374af6f7 (\"exec: replace call_usermodehelper_pipe with use\nof umh init function and resolve limit\"), the core limits recursive\ncheck value was changed from 0 to 1, but the corresponding comments were\nnot updated.\n\nSigned-off-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54b501992dd2a839e94e76aa392c392b55080ce8",
      "tree": "6d174fb95516f01e385d31d5ef87a248d8740fd2",
      "parents": [
        "9520628e8ceb69fa9a4aee6b57f22675d9e1b709"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Mon Jul 30 14:39:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:11 2012 -0700"
      },
      "message": "coredump: warn about unsafe suid_dumpable / core_pattern combo\n\nWhen suid_dumpable\u003d2, detect unsafe core_pattern settings and warn when\nthey are seen.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9520628e8ceb69fa9a4aee6b57f22675d9e1b709",
      "tree": "c8e1dbd5820e818eef930cf55cbd94dec941eb44",
      "parents": [
        "779302e67835fe9a6b74327e54969ba59cb3478a"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Mon Jul 30 14:39:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:11 2012 -0700"
      },
      "message": "fs: make dumpable\u003d2 require fully qualified path\n\nWhen the suid_dumpable sysctl is set to \"2\", and there is no core dump\npipe defined in the core_pattern sysctl, a local user can cause core files\nto be written to root-writable directories, potentially with\nuser-controlled content.\n\nThis means an admin can unknowningly reintroduce a variation of\nCVE-2006-2451, allowing local users to gain root privileges.\n\n  $ cat /proc/sys/fs/suid_dumpable\n  2\n  $ cat /proc/sys/kernel/core_pattern\n  core\n  $ ulimit -c unlimited\n  $ cd /\n  $ ls -l core\n  ls: cannot access core: No such file or directory\n  $ touch core\n  touch: cannot touch `core\u0027: Permission denied\n  $ OHAI\u003d\"evil-string-here\" ping localhost \u003e/dev/null 2\u003e\u00261 \u0026\n  $ pid\u003d$!\n  $ sleep 1\n  $ kill -SEGV $pid\n  $ ls -l core\n  -rw------- 1 root kees 458752 Jun 21 11:35 core\n  $ sudo strings core | grep evil\n  OHAI\u003devil-string-here\n\nWhile cron has been fixed to abort reading a file when there is any\nparse error, there are still other sensitive directories that will read\nany file present and skip unparsable lines.\n\nInstead of introducing a suid_dumpable\u003d3 mode and breaking all users of\nmode 2, this only disables the unsafe portion of mode 2 (writing to disk\nvia relative path).  Most users of mode 2 (e.g.  Chrome OS) already use\na core dump pipe handler, so this change will not break them.  For the\nsituations where a pipe handler is not defined but mode 2 is still\nactive, crash dumps will only be written to fully qualified paths.  If a\nrelative path is defined (e.g.  the default \"core\" pattern), dump\nattempts will trigger a printk yelling about the lack of a fully\nqualified path.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4fad8e5d220e3dfb1050eee752ee5058f29a232",
      "tree": "b56356fda1d1f4f47e1da63aa24080db999dafc1",
      "parents": [
        "b5bcdda32736b94a7d178d156d80a69f536ad468"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 21 15:33:25 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 29 21:24:19 2012 +0400"
      },
      "message": "consolidate pipe file creation\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8ded2bbc1845e19c771eb55209aab166ef011243",
      "tree": "9ab400cdd407a9426fdfcc3432d7c0e19a0607ed",
      "parents": [
        "4cb38750d49010ae72e718d46605ac9ba5a851b4"
      ],
      "author": {
        "name": "Josh Boyer",
        "email": "jwboyer@redhat.com",
        "time": "Wed Jul 25 10:40:34 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 26 13:36:43 2012 -0700"
      },
      "message": "posix_types.h: Cleanup stale __NFDBITS and related definitions\n\nRecently, glibc made a change to suppress sign-conversion warnings in\nFD_SET (glibc commit ceb9e56b3d1).  This uncovered an issue with the\nkernel\u0027s definition of __NFDBITS if applications #include\n\u003clinux/types.h\u003e after including \u003csys/select.h\u003e.  A build failure would\nbe seen when passing the -Werror\u003dsign-compare and -D_FORTIFY_SOURCE\u003d2\nflags to gcc.\n\nIt was suggested that the kernel should either match the glibc\ndefinition of __NFDBITS or remove that entirely.  The current in-kernel\nuses of __NFDBITS can be replaced with BITS_PER_LONG, and there are no\nuses of the related __FDELT and __FDMASK defines.  Given that, we\u0027ll\ncontinue the cleanup that was started with commit 8b3d1cda4f5f\n(\"posix_types: Remove fd_set macros\") and drop the remaining unused\nmacros.\n\nAdditionally, linux/time.h has similar macros defined that expand to\nnothing so we\u0027ll remove those at the same time.\n\nReported-by: Jeff Law \u003claw@redhat.com\u003e\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCC: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Josh Boyer \u003cjwboyer@redhat.com\u003e\n[ .. and fix up whitespace as per akpm ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fe7efdbdfb1c7e7a7f31decfd831c0f31d37091",
      "tree": "5d8fdf353ba3791ef10031ade2d93aa87aa179d3",
      "parents": [
        "e0897d75f0b22e8c3a7287a48548c5686ef73447"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Jun 20 12:53:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 20 14:39:36 2012 -0700"
      },
      "message": "mm: correctly synchronize rss-counters at exit/exec\n\ndo_exit() and exec_mmap() call sync_mm_rss() before mm_release() does\nput_user(clear_child_tid) which can update task-\u003erss_stat and thus make\nmm-\u003erss_stat inconsistent.  This triggers the \"BUG:\" printk in check_mm().\n\nLet\u0027s fix this bug in the safest way, and optimize/cleanup this later.\n\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48d212a2eecaca2e1875925837ad27b2f43f48a3",
      "tree": "fbd83c7b15856971f6d7297e1d23dc862ba2989c",
      "parents": [
        "46edaedaf3842164281d0f86c41bc152f4b4d32e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 07 17:54:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 07 17:54:07 2012 -0700"
      },
      "message": "Revert \"mm: correctly synchronize rss-counters at exit/exec\"\n\nThis reverts commit 40af1bbdca47e5c8a2044039bb78ca8fd8b20f94.\n\nIt\u0027s horribly and utterly broken for at least the following reasons:\n\n - calling sync_mm_rss() from mmput() is fundamentally wrong, because\n   there\u0027s absolutely no reason to believe that the task that does the\n   mmput() always does it on its own VM.  Example: fork, ptrace, /proc -\n   you name it.\n\n - calling it *after* having done mmdrop() on it is doubly insane, since\n   the mm struct may well be gone now.\n\n - testing mm against NULL before you call it is insane too, since a\nNULL mm there would have caused oopses long before.\n\n.. and those are just the three bugs I found before I decided to give up\nlooking for me and revert it asap.  I should have caught it before I\neven took it, but I trusted Andrew too much.\n\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "40af1bbdca47e5c8a2044039bb78ca8fd8b20f94",
      "tree": "70b5a21579f8b0137c09e54d523246d84be93430",
      "parents": [
        "39caa0916ef27cf1da5026eb708a2b8413156f75"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu Jun 07 14:21:14 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 07 14:43:55 2012 -0700"
      },
      "message": "mm: correctly synchronize rss-counters at exit/exec\n\nmm-\u003erss_stat counters have per-task delta: task-\u003erss_stat.  Before\nchanging task-\u003emm pointer the kernel must flush this delta with\nsync_mm_rss().\n\ndo_exit() already calls sync_mm_rss() to flush the rss-counters before\ncommitting the rss statistics into task-\u003esignal-\u003emaxrss, taskstats,\naudit and other stuff.  Unfortunately the kernel does this before\ncalling mm_release(), which can call put_user() for processing\ntask-\u003eclear_child_tid.  So at this point we can trigger page-faults and\ntask-\u003erss_stat becomes non-zero again.  As a result mm-\u003erss_stat becomes\ninconsistent and check_mm() will print something like this:\n\n| BUG: Bad rss-counter state mm:ffff88020813c380 idx:1 val:-1\n| BUG: Bad rss-counter state mm:ffff88020813c380 idx:2 val:1\n\nThis patch moves sync_mm_rss() into mm_release(), and moves mm_release()\nout of do_exit() and calls it earlier.  After mm_release() there should\nbe no pagefaults.\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t\t[3.4.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5467859f7f79b69fc49004403009dfdba3bec53",
      "tree": "73b011daf79eeddd61bbcaf65cd197b5e5f6f149",
      "parents": [
        "d007794a182bc072a7b7479909dbd0d67ba341be"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 13:30:51 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 31 13:11:54 2012 -0400"
      },
      "message": "split -\u003efile_mmap() into -\u003emmap_addr()/-\u003emmap_file()\n\n... i.e. file-dependent and address-dependent checks.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "644473e9c60c1ff4f6351fed637a6e5551e3dce7",
      "tree": "10316518bedc735a2c6552886658d69dfd9f1eb0",
      "parents": [
        "fb827ec68446c83e9e8754fa9b55aed27ecc4661",
        "4b06a81f1daee668fbd6de85557bfb36dd36078f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace enhancements from Eric Biederman:\n \"This is a course correction for the user namespace, so that we can\n  reach an inexpensive, maintainable, and reasonably complete\n  implementation.\n\n  Highlights:\n   - Config guards make it impossible to enable the user namespace and\n     code that has not been converted to be user namespace safe.\n\n   - Use of the new kuid_t type ensures the if you somehow get past the\n     config guards the kernel will encounter type errors if you enable\n     user namespaces and attempt to compile in code whose permission\n     checks have not been updated to be user namespace safe.\n\n   - All uids from child user namespaces are mapped into the initial\n     user namespace before they are processed.  Removing the need to add\n     an additional check to see if the user namespace of the compared\n     uids remains the same.\n\n   - With the user namespaces compiled out the performance is as good or\n     better than it is today.\n\n   - For most operations absolutely nothing changes performance or\n     operationally with the user namespace enabled.\n\n   - The worst case performance I could come up with was timing 1\n     billion cache cold stat operations with the user namespace code\n     enabled.  This went from 156s to 164s on my laptop (or 156ns to\n     164ns per stat operation).\n\n   - (uid_t)-1 and (gid_t)-1 are reserved as an internal error value.\n     Most uid/gid setting system calls treat these value specially\n     anyway so attempting to use -1 as a uid would likely cause\n     entertaining failures in userspace.\n\n   - If setuid is called with a uid that can not be mapped setuid fails.\n     I have looked at sendmail, login, ssh and every other program I\n     could think of that would call setuid and they all check for and\n     handle the case where setuid fails.\n\n   - If stat or a similar system call is called from a context in which\n     we can not map a uid we lie and return overflowuid.  The LFS\n     experience suggests not lying and returning an error code might be\n     better, but the historical precedent with uids is different and I\n     can not think of anything that would break by lying about a uid we\n     can\u0027t map.\n\n   - Capabilities are localized to the current user namespace making it\n     safe to give the initial user in a user namespace all capabilities.\n\n  My git tree covers all of the modifications needed to convert the core\n  kernel and enough changes to make a system bootable to runlevel 1.\"\n\nFix up trivial conflicts due to nearby independent changes in fs/stat.c\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (46 commits)\n  userns:  Silence silly gcc warning.\n  cred: use correct cred accessor with regards to rcu read lock\n  userns: Convert the move_pages, and migrate_pages permission checks to use uid_eq\n  userns: Convert cgroup permission checks to use uid_eq\n  userns: Convert tmpfs to use kuid and kgid where appropriate\n  userns: Convert sysfs to use kgid/kuid where appropriate\n  userns: Convert sysctl permission checks to use kuid and kgids.\n  userns: Convert proc to use kuid/kgid where appropriate\n  userns: Convert ext4 to user kuid/kgid where appropriate\n  userns: Convert ext3 to use kuid/kgid where appropriate\n  userns: Convert ext2 to use kuid/kgid where appropriate.\n  userns: Convert devpts to use kuid/kgid where appropriate\n  userns: Convert binary formats to use kuid/kgid where appropriate\n  userns: Add negative depends on entries to avoid building code that is userns unsafe\n  userns: signal remove unnecessary map_cred_ns\n  userns: Teach inode_capable to understand inodes whose uids map to other namespaces.\n  userns: Fail exec for suid and sgid binaries with ids outside our user namespace.\n  userns: Convert stat to return values mapped from kuids and kgids\n  userns: Convert user specfied uids and gids in chown into kuids and kgid\n  userns: Use uid_eq gid_eq helpers when comparing kuids and kgids in the vfs\n  ...\n"
    },
    {
      "commit": "ec0d7f18ab7b5097d7c0c8f3d909ca1031b9d5cd",
      "tree": "7d62c924592145f819ecaa5d60460a05a10dfdbd",
      "parents": [
        "269af9a1a08d368b46d72e74126564d04c354f7e",
        "1dcc8d7ba235a316a056f993e88f0d18b92c60d9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 10:59:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 10:59:07 2012 -0700"
      },
      "message": "Merge branch \u0027x86-fpu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull fpu state cleanups from Ingo Molnar:\n \"This tree streamlines further aspects of FPU handling by eliminating\n  the prepare_to_copy() complication and moving that logic to\n  arch_dup_task_struct().\n\n  It also fixes the FPU dumps in threaded core dumps, removes and old\n  (and now invalid) assumption plus micro-optimizes the exit path by\n  avoiding an FPU save for dead tasks.\"\n\nFixed up trivial add-add conflict in arch/sh/kernel/process.c that came\nin because we now do the FPU handling in arch_dup_task_struct() rather\nthan the legacy (and now gone) prepare_to_copy().\n\n* \u0027x86-fpu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86, fpu: drop the fpu state during thread exit\n  x86, xsave: remove thread_has_fpu() bug check in __sanitize_i387_state()\n  coredump: ensure the fpu state is flushed for proper multi-threaded core dump\n  fork: move the real prepare_to_copy() users to arch_dup_task_struct()\n"
    },
    {
      "commit": "11aeca0b3a083a457f5c34fe8c677d5e86a0c6b3",
      "tree": "8d71ab524aa13aa8fd2bf10d7bbf3ddfa89ac4f7",
      "parents": [
        "55ccf3fe3f9a3441731aa79cf42a628fc4ecace9"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Wed May 16 15:03:52 2012 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Wed May 16 15:16:48 2012 -0700"
      },
      "message": "coredump: ensure the fpu state is flushed for proper multi-threaded core dump\n\nNalluru reported hitting the BUG_ON(__thread_has_fpu(tsk)) in\narch/x86/kernel/xsave.c:__sanitize_i387_state() during the coredump\nof a multi-threaded application.\n\nA look at the exit seqeuence shows that other threads can still be on the\nrunqueue potentially at the below shown exit_mm() code snippet:\n\n\t\tif (atomic_dec_and_test(\u0026core_state-\u003enr_threads))\n\t\t\tcomplete(\u0026core_state-\u003estartup);\n\n\u003d\u003d\u003d\u003e other threads can still be active here, but we notify the thread\n\u003d\u003d\u003d\u003e dumping core to wakeup from the coredump_wait() after the last thread\n\u003d\u003d\u003d\u003e joins this point. Core dumping thread will continue dumping\n\u003d\u003d\u003d\u003e all the threads state to the core file.\n\n\t\tfor (;;) {\n\t\t\tset_task_state(tsk, TASK_UNINTERRUPTIBLE);\n\t\t\tif (!self.task) /* see coredump_finish() */\n\t\t\t\tbreak;\n\t\t\tschedule();\n\t\t}\n\nAs some of those threads are on the runqueue and didn\u0027t call schedule() yet,\ntheir fpu state is still active in the live registers and the thread\nproceeding with the coredump will hit the above mentioned BUG_ON while\ntrying to dump other threads fpustate to the coredump file.\n\nBUG_ON() in arch/x86/kernel/xsave.c:__sanitize_i387_state() is\nin the code paths for processors supporting xsaveopt. With or without\nxsaveopt, multi-threaded coredump is broken and maynot contain\nthe correct fpustate at the time of exit.\n\nIn coredump_wait(), wait for all the threads to be come inactive, so\nthat we are sure all the extended register state is flushed to\nthe memory, so that it can be reliably copied to the core file.\n\nReported-by: Suresh Nalluru \u003csuresh@aristanetworks.com\u003e\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nLink: http://lkml.kernel.org/r/1336692811-30576-2-git-send-email-suresh.b.siddha@intel.com\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "9e4a36ece652908276bc4abb4324ec56292453e1",
      "tree": "ec267b9350f9e06aa510e35fbd6858ba3b9d602c",
      "parents": [
        "a7c1938e22c02b008655524c766d185ae99d9d53"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 16 23:37:59 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 15 14:59:23 2012 -0700"
      },
      "message": "userns: Fail exec for suid and sgid binaries with ids outside our user namespace.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "8e96e3b7b8407be794ab1fd8e4b332818a358e78",
      "tree": "f27756bb2ec49e586221ac669ea00c68e8a2ee58",
      "parents": [
        "72cda3d1ef24ab0a9a89c15e9776ca737b75f45a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Mar 03 21:17:15 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 03 03:29:34 2012 -0700"
      },
      "message": "userns: Use uid_eq gid_eq helpers when comparing kuids and kgids in the vfs\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "259e5e6c75a910f3b5e656151dc602f53f9d7548",
      "tree": "4405fdf68238f2e33f27b04e8c37c9e29a2493d8",
      "parents": [
        "9ccf010f8172b699ea80178860e8ea228f7dce56"
      ],
      "author": {
        "name": "Andy Lutomirski",
        "email": "luto@amacapital.net",
        "time": "Thu Apr 12 16:47:50 2012 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "james.l.morris@oracle.com",
        "time": "Sat Apr 14 11:13:18 2012 +1000"
      },
      "message": "Add PR_{GET,SET}_NO_NEW_PRIVS to prevent execve from granting privs\n\nWith this change, calling\n  prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)\ndisables privilege granting operations at execve-time.  For example, a\nprocess will not be able to execute a setuid binary to change their uid\nor gid if this bit is set.  The same is true for file capabilities.\n\nAdditionally, LSM_UNSAFE_NO_NEW_PRIVS is defined to ensure that\nLSMs respect the requested behavior.\n\nTo determine if the NO_NEW_PRIVS bit is set, a task may call\n  prctl(PR_GET_NO_NEW_PRIVS, 0, 0, 0, 0);\nIt returns 1 if set and 0 if it is not set. If any of the arguments are\nnon-zero, it will return -1 and set errno to -EINVAL.\n(PR_SET_NO_NEW_PRIVS behaves similarly.)\n\nThis functionality is desired for the proposed seccomp filter patch\nseries.  By using PR_SET_NO_NEW_PRIVS, it allows a task to modify the\nsystem call behavior for itself and its child tasks without being\nable to impact the behavior of a more privileged task.\n\nAnother potential use is making certain privileged operations\nunprivileged.  For example, chroot may be considered \"safe\" if it cannot\naffect privileged tasks.\n\nNote, this patch causes execve to fail when PR_SET_NO_NEW_PRIVS is\nset and AppArmor is in use.  It is fixed in a subsequent patch.\n\nSigned-off-by: Andy Lutomirski \u003cluto@amacapital.net\u003e\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\n\nv18: updated change desc\nv17: using new define values as per 3.4\nSigned-off-by: James Morris \u003cjames.l.morris@oracle.com\u003e\n"
    },
    {
      "commit": "66cfb32772495068fbb5627b2dc88649ad66c3e5",
      "tree": "4ce3537afdbd9be92a7a3e6ef4e8e8519ee11543",
      "parents": [
        "6742259866d03d5bc19815441ba928e8378343dc",
        "7b8e6da46b921d30ac1553cac56d8fb74f0b431d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 04 10:04:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 04 10:04:42 2012 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf fixes from Ingo Molnar.\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  perf/x86/p4: Add format attributes\n  tracing, sched, vfs: Fix \u0027old_pid\u0027 usage in trace_sched_process_exec()\n"
    },
    {
      "commit": "6308191f6f55d3629c7dbe72dfb856ad9fa560fd",
      "tree": "d3f073b0e522fc7dbee52ca6c25d92f28059f2fd",
      "parents": [
        "8ebfdf2babcda5a3b06cc67523bca1f9aed46009"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 30 18:26:36 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Mar 31 11:53:22 2012 +0200"
      },
      "message": "tracing, sched, vfs: Fix \u0027old_pid\u0027 usage in trace_sched_process_exec()\n\n1. TRACE_EVENT(sched_process_exec) forgets to actually use the\n   old pid argument, it sets -\u003eold_pid \u003d p-\u003epid.\n\n2. search_binary_handler() uses the wrong pid number. tracepoint\n   needs the global pid_t from the root namespace, while old_pid\n   is the virtual pid number as it seen by the tracer/parent.\n\nWith this patch we have two pid_t\u0027s in search_binary_handler(),\nnot really nice. Perhaps we should switch to \"struct pid*\", but\nin this case it would be better to cleanup the current code\nfirst and move the \"depth \u003d\u003d 0\" code outside.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Smith \u003cdsmith@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Denys Vlasenko \u003cdvlasenk@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120330162636.GA4857@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "a591afc01d9e48affbacb365558a31e53c85af45",
      "tree": "9bb91f4eb94ec69fc4706c4944788ec5f3586063",
      "parents": [
        "820d41cf0cd0e94a5661e093821e2e5c6b36a9d8",
        "31796ac4e8f0e88f5c10f1ad6dab8f19bebe44a4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "message": "Merge branch \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x32 support for x86-64 from Ingo Molnar:\n \"This tree introduces the X32 binary format and execution mode for x86:\n  32-bit data space binaries using 64-bit instructions and 64-bit kernel\n  syscalls.\n\n  This allows applications whose working set fits into a 32 bits address\n  space to make use of 64-bit instructions while using a 32-bit address\n  space with shorter pointers, more compressed data structures, etc.\"\n\nFix up trivial context conflicts in arch/x86/{Kconfig,vdso/vma.c}\n\n* \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)\n  x32: Fix alignment fail in struct compat_siginfo\n  x32: Fix stupid ia32/x32 inversion in the siginfo format\n  x32: Add ptrace for x32\n  x32: Switch to a 64-bit clock_t\n  x32: Provide separate is_ia32_task() and is_x32_task() predicates\n  x86, mtrr: Use explicit sizing and padding for the 64-bit ioctls\n  x86/x32: Fix the binutils auto-detect\n  x32: Warn and disable rather than error if binutils too old\n  x32: Only clear TIF_X32 flag once\n  x32: Make sure TS_COMPAT is cleared for x32 tasks\n  fs: Remove missed -\u003efds_bits from cessation use of fd_set structs internally\n  fs: Fix close_on_exec pointer in alloc_fdtable\n  x32: Drop non-__vdso weak symbols from the x32 VDSO\n  x32: Fix coding style violations in the x32 VDSO code\n  x32: Add x32 VDSO support\n  x32: Allow x32 to be configured\n  x32: If configured, add x32 system calls to system call tables\n  x32: Handle process creation\n  x32: Signal-related system calls\n  x86: Add #ifdef CONFIG_COMPAT to \u003casm/sys_ia32.h\u003e\n  ...\n"
    },
    {
      "commit": "96f951edb1f1bdbbc99b0cd458f9808bb83d58ae",
      "tree": "c109d45d3fb8ccad461cfe6d9a4aa4d6005b38e1",
      "parents": [
        "49a7f04a4b9d45cd794741ce3d5d66524b37bdd0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "message": "Add #includes needed to permit the removal of asm/system.h\n\nasm/system.h is a cause of circular dependency problems because it contains\ncommonly used primitive stuff like barrier definitions and uncommonly used\nstuff like switch_to() that might require MMU definitions.\n\nasm/system.h has been disintegrated by this point on all arches into the\nfollowing common segments:\n\n (1) asm/barrier.h\n\n     Moved memory barrier definitions here.\n\n (2) asm/cmpxchg.h\n\n     Moved xchg() and cmpxchg() here.  #included in asm/atomic.h.\n\n (3) asm/bug.h\n\n     Moved die() and similar here.\n\n (4) asm/exec.h\n\n     Moved arch_align_stack() here.\n\n (5) asm/elf.h\n\n     Moved AT_VECTOR_SIZE_ARCH here.\n\n (6) asm/switch_to.h\n\n     Moved switch_to() here.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "95211279c5ad00a317c98221d7e4365e02f20836",
      "tree": "2ddc8625378d2915b8c96392f3cf6663b705ed55",
      "parents": [
        "5375871d432ae9fc581014ac117b96aaee3cd0c7",
        "12724850e8064f64b6223d26d78c0597c742c65a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge first batch of patches from Andrew Morton:\n \"A few misc things and all the MM queue\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (92 commits)\n  memcg: avoid THP split in task migration\n  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n  memcg: clean up existing move charge code\n  mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n  mm/memcontrol.c: s/stealed/stolen/\n  memcg: fix performance of mem_cgroup_begin_update_page_stat()\n  memcg: remove PCG_FILE_MAPPED\n  memcg: use new logic for page stat accounting\n  memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n  memcg: simplify move_account() check\n  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n  memcg: kill dead prev_priority stubs\n  memcg: remove PCG_CACHE page_cgroup flag\n  memcg: let css_get_next() rely upon rcu_read_lock()\n  cgroup: revert ss_id_lock to spinlock\n  idr: make idr_get_next() good for rcu_read_lock()\n  memcg: remove unnecessary thp check in page stat accounting\n  memcg: remove redundant returns\n  memcg: enum lru_list lru\n  ...\n"
    },
    {
      "commit": "05af2e104a0c282dcd9303431e1360750ba76de6",
      "tree": "cdd5876f2d17b26cc3ded7ef85d04d0e853e9b7e",
      "parents": [
        "90481622d75715bfcb68501280a917dbfe516029"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm, counters: remove task argument to sync_mm_rss() and __sync_task_rss_stat()\n\nsync_mm_rss() can only be used for current to avoid race conditions in\niterating and clearing its per-task counters.  Remove the task argument\nfor it and its helper function, __sync_task_rss_stat(), to avoid thinking\nit can be used safely for anything other than current.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "9f3938346a5c1fa504647670edb5fea5756cfb00",
      "tree": "7cf6d24d6b076c8db8571494984924cac03703a2",
      "parents": [
        "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
        "317b6e128247f75976b0fc2b9fd8d2c20ef13b3a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 09:40:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 09:40:26 2012 -0700"
      },
      "message": "Merge branch \u0027kmap_atomic\u0027 of git://github.com/congwang/linux\n\nPull kmap_atomic cleanup from Cong Wang.\n\nIt\u0027s been in -next for a long time, and it gets rid of the (no longer\nused) second argument to k[un]map_atomic().\n\nFix up a few trivial conflicts in various drivers, and do an \"evil\nmerge\" to catch some new uses that have come in since Cong\u0027s tree.\n\n* \u0027kmap_atomic\u0027 of git://github.com/congwang/linux: (59 commits)\n  feature-removal-schedule.txt: schedule the deprecated form of kmap_atomic() for removal\n  highmem: kill all __kmap_atomic() [swarren@nvidia.com: highmem: Fix ARM build break due to __kmap_atomic rename]\n  drbd: remove the second argument of k[un]map_atomic()\n  zcache: remove the second argument of k[un]map_atomic()\n  gma500: remove the second argument of k[un]map_atomic()\n  dm: remove the second argument of k[un]map_atomic()\n  tomoyo: remove the second argument of k[un]map_atomic()\n  sunrpc: remove the second argument of k[un]map_atomic()\n  rds: remove the second argument of k[un]map_atomic()\n  net: remove the second argument of k[un]map_atomic()\n  mm: remove the second argument of k[un]map_atomic()\n  lib: remove the second argument of k[un]map_atomic()\n  power: remove the second argument of k[un]map_atomic()\n  kdb: remove the second argument of k[un]map_atomic()\n  udf: remove the second argument of k[un]map_atomic()\n  ubifs: remove the second argument of k[un]map_atomic()\n  squashfs: remove the second argument of k[un]map_atomic()\n  reiserfs: remove the second argument of k[un]map_atomic()\n  ocfs2: remove the second argument of k[un]map_atomic()\n  ntfs: remove the second argument of k[un]map_atomic()\n  ...\n"
    },
    {
      "commit": "19e5109fef2c368ab3f8a5157270f87f4a7c0326",
      "tree": "31142f922de19cedfe45f0caa660a6d58674d8cc",
      "parents": [
        "e59cc473cc603d562f2c80c12c943ef2a8cde6b2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Feb 23 22:29:17 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:51 2012 -0400"
      },
      "message": "take removal of PF_FORKNOEXEC to flush_old_exec()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8fc3dc5a3a17aa2b353886422bd89420619af211",
      "tree": "74a3290ad9621ff1c225b772df2c529c8feb5f43",
      "parents": [
        "54bf586e1f51018ba7624c851e7aa14cee0548d2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 17 03:05:16 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:46 2012 -0400"
      },
      "message": "__register_binfmt() made void\n\nJust don\u0027t pass NULL to it - nobody does, anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "701085b219016d38f105b031381b9cee6200253a",
      "tree": "5111f137c507c8537d5d2c8e4203f0e6e4942bcb",
      "parents": [
        "b6e238dceed36891cc633167afe7151f1f3d83c5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 19 17:04:01 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 14:16:50 2012 -0700"
      },
      "message": "exec: move de_thread()-\u003esetmax_mm_hiwater_rss() into exec_mmap()\n\nMinor cleanup. de_thread()-\u003esetmax_mm_hiwater_rss() looks a bit\nstrange, move it into exec_mmap() which plays with old_mm.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e636825346b36a07ccfc8e30946d52855e21f681",
      "tree": "128c37b3102223a95ce03b856766c33e4d077114",
      "parents": [
        "5f8aadd8b9966d71a77bba52b9d499cc2f38269f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 19 17:03:22 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 14:16:50 2012 -0700"
      },
      "message": "exit_signal: simplify the \"we have changed execution domain\" logic\n\nexit_notify() checks \"tsk-\u003eself_exec_id !\u003d tsk-\u003eparent_exec_id\"\nto handle the \"we have changed execution domain\" case.\n\nWe can change do_thread() to always set -\u003eexit_signal \u003d SIGCHLD\nand remove this check to simplify the code.\n\nWe could change setup_new_exec() instead, this looks more logical\nbecause it increments -\u003eself_exec_id. But note that de_thread()\nalready resets -\u003eexit_signal if it changes the leader, let\u0027s keep\nboth changes close to each other.\n\nNote that we change -\u003eexit_signal lockless, this changes the rules.\nThereafter -\u003eexit_signal is not stable under tasklist but this is\nfine, the only possible change is OLDSIG -\u003e SIGCHLD. This can race\nwith eligible_child() but the race is harmless. We can race with\nreparent_leader() which changes our -\u003eexit_signal in parallel, but\nit does the same change to SIGCHLD.\n\nThe noticeable user-visible change is that the execing task is not\n\"visible\" to do_wait()-\u003eeligible_child(__WCLONE) right after exec.\nTo me this looks more logical, and this is consistent with mt case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8e3c3d66fd9d1ee2250f68d778cc48c1346d228",
      "tree": "2d69e1bb0cefe36bbfc4b75ddfa6cec8e72bcb98",
      "parents": [
        "c6daa7ffa834c850b3dbb38af6980415caef680d"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:27 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:21 2012 +0800"
      },
      "message": "fs: remove the second argument of k[un]map_atomic()\n\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "35239e23c66f1614c76739b62a299c3c92d6eb68",
      "tree": "7b1e068df888ec9a00b43c1dd7517a6490da6a94",
      "parents": [
        "3f33ab1c0c741bfab2138c14ba1918a7905a1e8b",
        "87e24f4b67e68d9fd8df16e0bf9c66d1ad2a2533"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 12 20:44:07 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 12 20:44:11 2012 +0100"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nMerge reason: We are going to queue up a dependent patch.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "57b59c4a1400fa6c34764eab2e35a8762dc05a09",
      "tree": "e50e6a6f9f7fcd897856e5cdaca3d3caa18377d6",
      "parents": [
        "d68b46fe16ad59b3a5f51ec73daaa5dc06753798"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 05 14:59:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 15:49:42 2012 -0800"
      },
      "message": "coredump_wait: don\u0027t call complete_vfork_done()\n\nNow that CLONE_VFORK is killable, coredump_wait() no longer needs\ncomplete_vfork_done().  zap_threads() should find and kill all tasks with\nthe same -\u003emm, this includes our parent if -\u003evfork_done is set.\n\nmm_release() becomes the only caller, unexport complete_vfork_done().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c415c3b47ea2754659d915cca387a20999044163",
      "tree": "c2cb1134f139702e06ade8aecbeff70be7ea727c",
      "parents": [
        "880641bb9da2473e9ecf6c708d993b29928c1b3c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 05 14:59:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 15:49:42 2012 -0800"
      },
      "message": "vfork: introduce complete_vfork_done()\n\nNo functional changes.\n\nMove the clear-and-complete-vfork_done code into the new trivial helper,\ncomplete_vfork_done().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "737f24bda723fdf89ecaacb99fa2bf5683c32799",
      "tree": "35495fff3e9956679cb5468e74e6814c8e44ee66",
      "parents": [
        "8eedce996556d7d06522cd3a0e6069141c8dffe0",
        "b7c924274c456499264d1cfa3d44063bb11eb5db"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 05 09:20:08 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 05 09:20:08 2012 +0100"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nConflicts:\n\ttools/perf/builtin-record.c\n\ttools/perf/builtin-top.c\n\ttools/perf/perf.h\n\ttools/perf/util/top.h\n\nMerge reason: resolve these cherry-picking conflicts.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4ff16c25e2cc48cbe6956e356c38a25ac063a64d",
      "tree": "27ff21500ab5559497126e6a25e65bcf96d44c59",
      "parents": [
        "034d150a44a2b428e273e69889397c01f63eaf14"
      ],
      "author": {
        "name": "David Smith",
        "email": "dsmith@redhat.com",
        "time": "Tue Feb 07 10:11:05 2012 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 23 09:28:06 2012 +0100"
      },
      "message": "tracepoint, vfs, sched: Add exec() tracepoint\n\nAdded a minimal exec tracepoint. Exec is an important major event\nin the life of a task, like fork(), clone() or exit(), all of\nwhich we already trace.\n\n[ We also do scheduling re-balancing during exec() - so it\u0027s useful\n  from a scheduler instrumentation POV as well. ]\n\nIf you want to watch a task start up, when it gets exec\u0027ed is a good place\nto start.  With the addition of this tracepoint, exec\u0027s can be monitored\nand better picture of general system activity can be obtained. This\ntracepoint will also enable better process life tracking, allowing you to\nanswer questions like \"what process keeps starting up binary X?\".\n\nThis tracepoint can also be useful in ftrace filtering and trigger\nconditions: i.e. starting or stopping filtering when exec is called.\n\nSigned-off-by: David Smith \u003cdsmith@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/r/4F314D19.7030504@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1fd36adcd98c14d2fd97f545293c488775cb2823",
      "tree": "c13ab1934a15aebe0d81601d910ce5a3c6fa2c6f",
      "parents": [
        "1dce27c5aa6770e9d195f2bb7db1db3d4dde5591"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 16 17:49:54 2012 +0000"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Sun Feb 19 10:30:57 2012 -0800"
      },
      "message": "Replace the fd_sets in struct fdtable with an array of unsigned longs\n\nReplace the fd_sets in struct fdtable with an array of unsigned longs and then\nuse the standard non-atomic bit operations rather than the FD_* macros.\n\nThis:\n\n (1) Removes the abuses of struct fd_set:\n\n     (a) Since we don\u0027t want to allocate a full fd_set the vast majority of the\n     \t time, we actually, in effect, just allocate a just-big-enough array of\n     \t unsigned longs and cast it to an fd_set type - so why bother with the\n     \t fd_set at all?\n\n     (b) Some places outside of the core fdtable handling code (such as\n     \t SELinux) want to look inside the array of unsigned longs hidden inside\n     \t the fd_set struct for more efficient iteration over the entire set.\n\n (2) Eliminates the use of FD_*() macros in the kernel completely.\n\n (3) Permits the __FD_*() macros to be deleted entirely where not exposed to\n     userspace.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120216174954.23314.48147.stgit@warthog.procyon.org.uk\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1dce27c5aa6770e9d195f2bb7db1db3d4dde5591",
      "tree": "4ad3ffeee95cb5b10e047b7cb9bdbb48cfc734e0",
      "parents": [
        "8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 16 17:49:42 2012 +0000"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Sun Feb 19 10:30:52 2012 -0800"
      },
      "message": "Wrap accesses to the fd_sets in struct fdtable\n\nWrap accesses to the fd_sets in struct fdtable (for recording open files and\nclose-on-exec flags) so that we can move away from using fd_sets since we\nabuse the fd_set structs by not allocating the full-sized structure under\nnormal circumstances and by non-core code looking at the internals of the\nfd_sets.\n\nThe first abuse means that use of FD_ZERO() on these fd_sets is not permitted,\nsince that cannot be told about their abnormal lengths.\n\nThis introduces six wrapper functions for setting, clearing and testing\nclose-on-exec flags and fd-is-open flags:\n\n\tvoid __set_close_on_exec(int fd, struct fdtable *fdt);\n\tvoid __clear_close_on_exec(int fd, struct fdtable *fdt);\n\tbool close_on_exec(int fd, const struct fdtable *fdt);\n\tvoid __set_open_fd(int fd, struct fdtable *fdt);\n\tvoid __clear_open_fd(int fd, struct fdtable *fdt);\n\tbool fd_is_open(int fd, const struct fdtable *fdt);\n\nNote that I\u0027ve prepended \u0027__\u0027 to the names of the set/clear functions because\nthey require the caller to hold a lock to use them.\n\nNote also that I haven\u0027t added wrappers for looking behind the scenes at the\nthe array.  Possibly that should exist too.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120216174942.23314.1364.stgit@warthog.procyon.org.uk\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "96e02d1586782eadf051fa3d6bc4132d2447ac2c",
      "tree": "dd40e6302d2770d3c51cced64cfd3b8cf1355da4",
      "parents": [
        "23783f817bceedd6d4e549385e3f400ea64059e5"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Sat Feb 04 10:47:10 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 06 15:15:20 2012 -0800"
      },
      "message": "exec: fix use-after-free bug in setup_new_exec()\n\nSetting the task name is done within setup_new_exec() by accessing\nbprm-\u003efilename. However this happens after flush_old_exec().\nThis may result in a use after free bug, flush_old_exec() may\n\"complete\" vfork_done, which will wake up the parent which in turn\nmay free the passed in filename.\nTo fix this add a new tcomm field in struct linux_binprm which\ncontains the now early generated task name until it is used.\n\nFixes this bug on s390:\n\n  Unable to handle kernel pointer dereference at virtual kernel address 0000000039768000\n  Process kworker/u:3 (pid: 245, task: 000000003a3dc840, ksp: 0000000039453818)\n  Krnl PSW : 0704000180000000 0000000000282e94 (setup_new_exec+0xa0/0x374)\n  Call Trace:\n  ([\u003c0000000000282e2c\u003e] setup_new_exec+0x38/0x374)\n   [\u003c00000000002dd12e\u003e] load_elf_binary+0x402/0x1bf4\n   [\u003c0000000000280a42\u003e] search_binary_handler+0x38e/0x5bc\n   [\u003c0000000000282b6c\u003e] do_execve_common+0x410/0x514\n   [\u003c0000000000282cb6\u003e] do_execve+0x46/0x58\n   [\u003c00000000005bce58\u003e] kernel_execve+0x28/0x70\n   [\u003c000000000014ba2e\u003e] ____call_usermodehelper+0x102/0x140\n   [\u003c00000000005bc8da\u003e] kernel_thread_starter+0x6/0xc\n   [\u003c00000000005bc8d4\u003e] kernel_thread_starter+0x0/0xc\n  Last Breaking-Event-Address:\n   [\u003c00000000002830f0\u003e] setup_new_exec+0x2fc/0x374\n\n  Kernel panic - not syncing: Fatal exception: panic_on_oops\n\nReported-by: Sebastian Ott \u003csebott@linux.vnet.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43d2b113241d6797b890318767e0af78e313414b",
      "tree": "6f25647f2660f8fca63cc8355b70ad643993dab8",
      "parents": [
        "6bd4837de96e7d9f9bf33e59117c24fc230862ac"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jan 10 15:08:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:44 2012 -0800"
      },
      "message": "tracepoint: add tracepoints for debugging oom_score_adj\n\noom_score_adj is used for guarding processes from OOM-Killer.  One of\nproblem is that it\u0027s inherited at fork().  When a daemon set oom_score_adj\nand make children, it\u0027s hard to know where the value is set.\n\nThis patch adds some tracepoints useful for debugging. This patch adds\n3 trace points.\n  - creating new task\n  - renaming a task (exec)\n  - set oom_score_adj\n\nTo debug, users need to enable some trace pointer. Maybe filtering is useful as\n\n# EVENT\u003d/sys/kernel/debug/tracing/events/task/\n# echo \"oom_score_adj !\u003d 0\" \u003e $EVENT/task_newtask/filter\n# echo \"oom_score_adj !\u003d 0\" \u003e $EVENT/task_rename/filter\n# echo 1 \u003e $EVENT/enable\n# EVENT\u003d/sys/kernel/debug/tracing/events/oom/\n# echo 1 \u003e $EVENT/enable\n\noutput will be like this.\n# grep oom /sys/kernel/debug/tracing/trace\nbash-7699  [007] d..3  5140.744510: oom_score_adj_update: pid\u003d7699 comm\u003dbash oom_score_adj\u003d-1000\nbash-7699  [007] ...1  5151.818022: task_newtask: pid\u003d7729 comm\u003dbash clone_flags\u003d1200011 oom_score_adj\u003d-1000\nls-7729  [003] ...2  5151.818504: task_rename: pid\u003d7729 oldcomm\u003dbash newcomm\u003dls oom_score_adj\u003d-1000\nbash-7699  [002] ...1  5175.701468: task_newtask: pid\u003d7730 comm\u003dbash clone_flags\u003d1200011 oom_score_adj\u003d-1000\ngrep-7730  [007] ...2  5175.701993: task_rename: pid\u003d7730 oldcomm\u003dbash newcomm\u003dgrep oom_score_adj\u003d-1000\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f47ec3f28354795f000c14bf18ed967ec81a3ec3",
      "tree": "662d479706bd948963ad3f9f00c2e6caedbe5a92",
      "parents": [
        "5ede7b1cfa8201418fb35e12f770e9e7c2559a4d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 21 21:15:42 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:35 2012 -0500"
      },
      "message": "trim fs/internal.h\n\nsome stuff in there can actually become static; some belongs to pnode.h\nas it\u0027s a private interface between namespace.c and pnode.c...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c9f01245b6a7d77d17deaa71af10f6aca14fa24e",
      "tree": "13ffde591a5bcefba39cb6393f09b27f1ebc1a30",
      "parents": [
        "7b0d44fa49b1dcfdcf4897f12ddd12ddeab1a9d7"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Oct 31 17:07:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "oom: remove oom_disable_count\n\nThis removes mm-\u003eoom_disable_count entirely since it\u0027s unnecessary and\ncurrently buggy.  The counter was intended to be per-process but it\u0027s\ncurrently decremented in the exit path for each thread that exits, causing\nit to underflow.\n\nThe count was originally intended to prevent oom killing threads that\nshare memory with threads that cannot be killed since it doesn\u0027t lead to\nfuture memory freeing.  The counter could be fixed to represent all\nthreads sharing the same mm, but it\u0027s better to remove the count since:\n\n - it is possible that the OOM_DISABLE thread sharing memory with the\n   victim is waiting on that thread to exit and will actually cause\n   future memory freeing, and\n\n - there is no guarantee that a thread is disabled from oom killing just\n   because another thread sharing its mm is oom disabled.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72fa59970f8698023045ab0713d66f3f4f96945c",
      "tree": "ed9a5eaf8212270d464c6d4396ae5a568352a997",
      "parents": [
        "1d229d54dbc26971142f61c3d271a68db236d178"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Mon Aug 08 19:02:04 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 11 11:24:42 2011 -0700"
      },
      "message": "move RLIMIT_NPROC check from set_user() to do_execve_common()\n\nThe patch http://lkml.org/lkml/2003/7/13/226 introduced an RLIMIT_NPROC\ncheck in set_user() to check for NPROC exceeding via setuid() and\nsimilar functions.\n\nBefore the check there was a possibility to greatly exceed the allowed\nnumber of processes by an unprivileged user if the program relied on\nrlimit only.  But the check created new security threat: many poorly\nwritten programs simply don\u0027t check setuid() return code and believe it\ncannot fail if executed with root privileges.  So, the check is removed\nin this patch because of too often privilege escalations related to\nbuggy programs.\n\nThe NPROC can still be enforced in the common code flow of daemons\nspawning user processes.  Most of daemons do fork()+setuid()+execve().\nThe check introduced in execve() (1) enforces the same limit as in\nsetuid() and (2) doesn\u0027t create similar security issues.\n\nNeil Brown suggested to track what specific process has exceeded the\nlimit by setting PF_NPROC_EXCEEDED process flag.  With the change only\nthis process would fail on execve(), and other processes\u0027 execve()\nbehaviour is not changed.\n\nSolar Designer suggested to re-check whether NPROC limit is still\nexceeded at the moment of execve().  If the process was sleeping for\ndays between set*uid() and execve(), and the NPROC counter step down\nunder the limit, the defered execve() failure because NPROC limit was\nexceeded days ago would be unexpected.  If the limit is not exceeded\nanymore, we clear the flag on successful calls to execve() and fork().\n\nThe flag is also cleared on successful calls to set_user() as the limit\nwas exceeded for the previous user, not the current one.\n\nSimilar check was introduced in -ow patches (without the process flag).\n\nv3 - clear PF_NPROC_EXCEEDED on successful calls to set_user().\n\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32e107f71e4a993ac438f0049aa4019457911ffb",
      "tree": "3c022205c424db5d614448f5de1fbd8d9a485e89",
      "parents": [
        "b4edf8bd06916645b57df23a720b17cae4051c43"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jul 26 16:08:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "fs/exec.c:acct_arg_size(): ptl is no longer needed for add_mm_counter()\n\nacct_arg_size() takes -\u003epage_table_lock around add_mm_counter() if\n!SPLIT_RSS_COUNTING.  This is not needed after commit 172703b08cd0 (\"mm:\ndelete non-atomic mm counter implementation\").\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4edf8bd06916645b57df23a720b17cae4051c43",
      "tree": "d0b6a63dfb043822d28498eae9a89553765ce3fe",
      "parents": [
        "912193521b719fbfc2f16776febf5232fe8ba261"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@i-love.sakura.ne.jp",
        "time": "Tue Jul 26 16:08:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "exec: do not retry load_binary method if CONFIG_MODULES\u003dn\n\nIf CONFIG_MODULES\u003dn, it makes no sense to retry the list of binary formats\nhandler because the list will not be modified by request_module().\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "912193521b719fbfc2f16776febf5232fe8ba261",
      "tree": "df180e94ec0595744da6eb11f6164e539c73ea91",
      "parents": [
        "aacb3d17a73f6447c04e4d769391238dcf85568d"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Tue Jul 26 16:08:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "exec: do not call request_module() twice from search_binary_handler()\n\nCurrently, search_binary_handler() tries to load binary loader module\nusing request_module() if a loader for the requested program is not yet\nloaded.  But second attempt of request_module() does not affect the result\nof search_binary_handler().\n\nIf request_module() triggered recursion, calling request_module() twice\ncauses 2 to the power of MAX_KMOD_CONCURRENT (\u003d 50) repetitions.  It is\nnot an infinite loop but is sufficient for users to consider as a hang up.\n\nTherefore, this patch changes not to call request_module() twice, making 1\nto the power of MAX_KMOD_CONCURRENT repetitions in case of recursion.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nReported-by: Richard Weinberger \u003crichard@nod.at\u003e\nTested-by: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aacb3d17a73f6447c04e4d769391238dcf85568d",
      "tree": "6f593f5399c72de51dc320476fa8d04e04ae46a0",
      "parents": [
        "fb0a685cb95a0267a96153af2f72486f27be5847"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Jul 26 16:08:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "fs/exec.c: use BUILD_BUG_ON for VM_STACK_FLAGS \u0026 VM_STACK_INCOMPLETE_SETUP\n\nCommit a8bef8ff6ea1 (\"mm: migration: avoid race between\nshift_arg_pages() and rmap_walk() during migration by not migrating\ntemporary stacks\") introduced a BUG_ON() to ensure that VM_STACK_FLAGS\nand VM_STACK_INCOMPLETE_SETUP do not overlap.  The check is a compile\ntime one, so BUILD_BUG_ON is more appropriate.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99b64567486716d18b2156cad188d86478816e4f",
      "tree": "40ab51505909d417c01877c3dff97b7cabcf473d",
      "parents": [
        "2c563731fee0f625924f72e854957bc77601e8b3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jul 26 16:08:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:43 2011 -0700"
      },
      "message": "do_coredump: fix the \"ispipe\" error check\n\ndo_coredump() assumes that if format_corename() fails it should return\n-ENOMEM.  This is not true, for example cn_print_exe_file() can propagate\nthe error from d_path.  Even if it was true, this is too fragile.  Change\nthe code to check \"ispipe \u003c 0\".\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nReviewed-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c563731fee0f625924f72e854957bc77601e8b3",
      "tree": "76091ee6de5c2ca1eea2919b4dc5322e9472cf52",
      "parents": [
        "3141c8b165644774eb0e83d8330fbe47e45b37bf"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Tue Jul 26 16:08:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:43 2011 -0700"
      },
      "message": "coredump: escape / in hostname and comm\n\nChange every occurence of / in comm and hostname to !.  If the process\nchanges its name to contain /, the core is not dumped (if the directory\ntree doesn\u0027t exist like that).  The same with hostname being something\nlike myhost/3.  Fix this behaviour by using the escape loop used in %E.\n(We extract it to a separate function.)\n\nNow both with comm \u003d\u003d myprocess/1 and hostname \u003d\u003d myhost/1, the core is\ndumped like (kernel.core_pattern\u003d\u0027core.%p.%e.%h):\ncore.2349.myprocess!1.myhost!1\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3141c8b165644774eb0e83d8330fbe47e45b37bf",
      "tree": "e3b970cc1afd1900d86d69c18a8ed0f7cfd01c5d",
      "parents": [
        "0e9a6cb5e66f4b23e2a8f6b3f00949b7b3125dda"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Tue Jul 26 16:08:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:43 2011 -0700"
      },
      "message": "coredump: use task comm instead of (unknown)\n\nIf we don\u0027t know the file corresponding to the binary (i.e.  exe_file is\nunknown), use \"task-\u003ecomm (path unknown)\" instead of simple \"(unknown)\"\nas suggested by ak.\n\nThe fallback is the same as %e except it will append \"(path unknown)\".\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff",
      "tree": "12b2bb4202b05f6ae6a43c6ce830a0472043dbe5",
      "parents": [
        "8e204874db000928e37199c2db82b7eb8966cc3c",
        "5a9a43646cf709312d71eca71cef90ad802f28f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)\n  vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n  isofs: Remove global fs lock\n  jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n  fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n  mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n  fs:update the NOTE of the file_operations structure\n  Remove dead code in dget_parent()\n  AFS: Fix silly characters in a comment\n  switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n  simplify gfs2_lookup()\n  jfs_lookup(): don\u0027t bother with . or ..\n  get rid of useless dget_parent() in btrfs rename() and link()\n  get rid of useless dget_parent() in fs/btrfs/ioctl.c\n  fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n  drivers: fix up various -\u003ellseek() implementations\n  fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n  Ext4: handle SEEK_HOLE/SEEK_DATA generically\n  Btrfs: implement our own -\u003ellseek\n  fs: add SEEK_HOLE and SEEK_DATA flags\n  reiserfs: make reiserfs default to barrier\u003dflush\n  ...\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new\nshrinker callout for the inode cache, that clashed with the xfs code to\nstart the periodic workers later.\n"
    },
    {
      "commit": "8209f53d79444747782a28520187abaf689761f2",
      "tree": "726270ea29e037f026d77a99787b9d844531ac42",
      "parents": [
        "22a3b9771117d566def0150ea787fcc95f16e724",
        "eac1b5e57d7abc836e78fd3fbcf77dbeed01edc9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 15:06:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 15:06:50 2011 -0700"
      },
      "message": "Merge branch \u0027ptrace\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc\n\n* \u0027ptrace\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc: (39 commits)\n  ptrace: do_wait(traced_leader_killed_by_mt_exec) can block forever\n  ptrace: fix ptrace_signal() \u0026\u0026 STOP_DEQUEUED interaction\n  connector: add an event for monitoring process tracers\n  ptrace: dont send SIGSTOP on auto-attach if PT_SEIZED\n  ptrace: mv send-SIGSTOP from do_fork() to ptrace_init_task()\n  ptrace_init_task: initialize child-\u003ejobctl explicitly\n  has_stopped_jobs: s/task_is_stopped/SIGNAL_STOP_STOPPED/\n  ptrace: make former thread ID available via PTRACE_GETEVENTMSG after PTRACE_EVENT_EXEC stop\n  ptrace: wait_consider_task: s/same_thread_group/ptrace_reparented/\n  ptrace: kill real_parent_is_ptracer() in in favor of ptrace_reparented()\n  ptrace: ptrace_reparented() should check same_thread_group()\n  redefine thread_group_leader() as exit_signal \u003e\u003d 0\n  do not change dead_task-\u003eexit_signal\n  kill task_detached()\n  reparent_leader: check EXIT_DEAD instead of task_detached()\n  make do_notify_parent() __must_check, update the callers\n  __ptrace_detach: avoid task_detached(), check do_notify_parent()\n  kill tracehook_notify_death()\n  make do_notify_parent() return bool\n  ptrace: s/tracehook_tracer_task()/ptrace_parent()/\n  ...\n"
    },
    {
      "commit": "eac1b5e57d7abc836e78fd3fbcf77dbeed01edc9",
      "tree": "50d267e7a4edd645543abfeb33d12eb18d84d00e",
      "parents": [
        "8a35241803eeb0e9fd3fe27835d6b2775c73b641"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jul 21 20:00:43 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 22 15:10:49 2011 +0200"
      },
      "message": "ptrace: do_wait(traced_leader_killed_by_mt_exec) can block forever\n\nTest-case:\n\n\tvoid *tfunc(void *arg)\n\t{\n\t\texecvp(\"true\", NULL);\n\t\treturn NULL;\n\t}\n\n\tint main(void)\n\t{\n\t\tint pid;\n\n\t\tif (fork()) {\n\t\t\tpthread_t t;\n\n\t\t\tkill(getpid(), SIGSTOP);\n\n\t\t\tpthread_create(\u0026t, NULL, tfunc, NULL);\n\n\t\t\tfor (;;)\n\t\t\t\tpause();\n\t\t}\n\n\t\tpid \u003d getppid();\n\t\tassert(ptrace(PTRACE_ATTACH, pid, 0,0) \u003d\u003d 0);\n\n\t\twhile (wait(NULL) \u003e 0)\n\t\t\tptrace(PTRACE_CONT, pid, 0,0);\n\n\t\treturn 0;\n\t}\n\nIt is racy, exit_notify() does __wake_up_parent() too. But in the\nlikely case it triggers the problem: de_thread() does release_task()\nand the old leader goes away without the notification, the tracer\nsleeps in do_wait() without children/tracees.\n\nChange de_thread() to do __wake_up_parent(traced_leader-\u003eparent).\nSince it is already EXIT_DEAD we can do this without ptrace_unlink(),\nEXIT_DEAD threads do not exist from do_wait\u0027s pov.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1b5d783c94c328d406e801566f161adcfb018dda",
      "tree": "e7d27b987e0670099af28db0d6bfcdac33236046",
      "parents": [
        "78f32a9b479e9b9f1ce2bf620a7602c1cdbc4c8e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 12:49:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:10 2011 -0400"
      },
      "message": "consolidate BINPRM_FLAGS_ENFORCE_NONDUMP handling\n\nnew helper: would_dump(bprm, file).  Checks if we are allowed to\nread the file and if we are not - sets ENFORCE_NODUMP.  Exported,\nused in places that previously open-coded the same logics.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bb188d7e64deb0e9cf13a99f44ae0065de5352d6",
      "tree": "3425b09bf6217ef4b59e82cec150d2af1ec16f9f",
      "parents": [
        "479bf98c1c29b40d86e40a4e6e4944c2f03d9493"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Wed Jun 29 04:13:39 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 01 18:51:49 2011 +0200"
      },
      "message": "ptrace: make former thread ID available via PTRACE_GETEVENTMSG after PTRACE_EVENT_EXEC stop\n\nWhen multithreaded program execs under ptrace,\nall traced threads report WIFEXITED status, except for\nthread group leader and the thread which execs.\n\nUnless tracer tracks thread group relationship between tracees,\nwhich is a nontrivial task, it will not detect that\nexeced thread no longer exists.\n\nThis patch allows tracer to figure out which thread\nperformed this exec, by requesting PTRACE_GETEVENTMSG\nin PTRACE_EVENT_EXEC stop.\n\nAnother, samller problem which is solved by this patch\nis that tracer now can figure out which of the several\nconcurrent execs in multithreaded program succeeded.\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "087806b1281563e4ae7a5bce3155f894af5f4118",
      "tree": "01547cd793de4e06f633293efa530a13ff2724a6",
      "parents": [
        "d4f7c511c1c2a67eb287987cf1ce9554149030e6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 22 23:10:26 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Jun 27 20:30:10 2011 +0200"
      },
      "message": "redefine thread_group_leader() as exit_signal \u003e\u003d 0\n\nChange de_thread() to set old_leader-\u003eexit_signal \u003d -1. This is\ngood for the consistency, it is no longer the leader and all\nsub-threads have exit_signal \u003d -1 set by copy_process(CLONE_THREAD).\n\nAnd this allows us to micro-optimize thread_group_leader(), it can\nsimply check exit_signal \u003e\u003d 0. This also makes sense because we\nshould move -\u003egroup_leader from task_struct to signal_struct.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "4b9d33e6d83cc05a8005a8f9a8b9677fa0f53626",
      "tree": "250b740d22f9604326ecfd769dd2f74d60187a19",
      "parents": [
        "a288eecce5253cc1565d400a52b9b476a157e040"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jun 17 16:50:38 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 22 19:26:29 2011 +0200"
      },
      "message": "ptrace: kill clone/exec tracehooks\n\nAt this point, tracehooks aren\u0027t useful to mainline kernel and mostly\njust add an extra layer of obfuscation.  Although they have comments,\nwithout actual in-kernel users, it is difficult to tell what are their\nassumptions and they\u0027re actually trying to achieve.  To mainline\nkernel, they just aren\u0027t worth keeping around.\n\nThis patch kills the following clone and exec related tracehooks.\n\n\ttracehook_prepare_clone()\n\ttracehook_finish_clone()\n\ttracehook_report_clone()\n\ttracehook_report_clone_complete()\n\ttracehook_unsafe_exec()\n\nThe changes are mostly trivial - logic is moved to the caller and\ncomments are merged and adjusted appropriately.\n\nThe only exception is in check_unsafe_exec() where LSM_UNSAFE_PTRACE*\nare OR\u0027d to bprm-\u003eunsafe instead of setting it, which produces the\nsame result as the field is always zero on entry.  It also tests\np-\u003eptrace instead of (p-\u003eptrace \u0026 PT_PTRACED) for consistency, which\nalso gives the same result.\n\nThis doesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "a288eecce5253cc1565d400a52b9b476a157e040",
      "tree": "a933dd8c9791be83b7a67a33502c79e7b441960e",
      "parents": [
        "f3c04b934d429b1ace21866f011b66de328c0dc9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jun 17 16:50:37 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 22 19:26:28 2011 +0200"
      },
      "message": "ptrace: kill trivial tracehooks\n\nAt this point, tracehooks aren\u0027t useful to mainline kernel and mostly\njust add an extra layer of obfuscation.  Although they have comments,\nwithout actual in-kernel users, it is difficult to tell what are their\nassumptions and they\u0027re actually trying to achieve.  To mainline\nkernel, they just aren\u0027t worth keeping around.\n\nThis patch kills the following trivial tracehooks.\n\n* Ones testing whether task is ptraced.  Replace with -\u003eptrace test.\n\n\ttracehook_expect_breakpoints()\n\ttracehook_consider_ignored_signal()\n\ttracehook_consider_fatal_signal()\n\n* ptrace_event() wrappers.  Call directly.\n\n\ttracehook_report_exec()\n\ttracehook_report_exit()\n\ttracehook_report_vfork_done()\n\n* ptrace_release_task() wrapper.  Call directly.\n\n\ttracehook_finish_release_task()\n\n* noop\n\n\ttracehook_prepare_release_task()\n\ttracehook_report_death()\n\nThis doesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "879669961b11e7f40b518784863a259f735a72bf",
      "tree": "9bff5392e365caf656c9dd9be38f7471c182278c",
      "parents": [
        "eb96c925152fc289311e5d7e956b919e9b60ab53"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 17 11:25:59 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 09:40:48 2011 -0700"
      },
      "message": "KEYS/DNS: Fix ____call_usermodehelper() to not lose the session keyring\n\n____call_usermodehelper() now erases any credentials set by the\nsubprocess_inf::init() function.  The problem is that commit\n17f60a7da150 (\"capabilites: allow the application of capability limits\nto usermode helpers\") creates and commits new credentials with\nprepare_kernel_cred() after the call to the init() function.  This wipes\nall keyrings after umh_keys_init() is called.\n\nThe best way to deal with this is to put the init() call just prior to\nthe commit_creds() call, and pass the cred pointer to init().  That\nmeans that umh_keys_init() and suchlike can modify the credentials\n_before_ they are published and potentially in use by the rest of the\nsystem.\n\nThis prevents request_key() from working as it is prevented from passing\nthe session keyring it set up with the authorisation token to\n/sbin/request-key, and so the latter can\u0027t assume the authority to\ninstantiate the key.  This causes the in-kernel DNS resolver to fail\nwith ENOKEY unconditionally.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nTested-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "13fca640bb8ab611a50e0ba120b186faa2994d6c",
      "tree": "0a40a28e498b2e9abdef8c86aa0aef7f82096f00",
      "parents": [
        "67de0162fbb78713fcb23cb2502b380faa8bde73"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 21:53:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 21:53:52 2011 -0700"
      },
      "message": "Revert \"fs/exec.c: use BUILD_BUG_ON for VM_STACK_FLAGS \u0026 VM_STACK_INCOMPLETE_SETUP\"\n\nThis reverts commit 7f81c8890c15a10f5220bebae3b6dfae4961962a.\n\nIt turns out that it\u0027s not actually a build-time check on x86-64 UML,\nwhich does some seriously crazy stuff with VM_STACK_FLAGS.\n\nThe VM_STACK_FLAGS define depends on the arch-supplied\nVM_STACK_DEFAULT_FLAGS value, and on x86-64 UML we have\n\n  arch/um/sys-x86_64/shared/sysdep/vm-flags.h:\n\n\t#define VM_STACK_DEFAULT_FLAGS \\\n\t\t(test_thread_flag(TIF_IA32) ? vm_stack_flags32 : vm_stack_flags)\n\n\t#define VM_STACK_DEFAULT_FLAGS vm_stack_flags\n\n(yes, seriously: two different #define\u0027s for that thing, with the first\none being inside an \"#ifdef TIF_IA32\")\n\nIt\u0027s possible that it is UML that should just be fixed in this area, but\nfor now let\u0027s just undo the (very small) optimization.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f81c8890c15a10f5220bebae3b6dfae4961962a",
      "tree": "264cb58ffbadb340ce713420a44c00d59fda4e7a",
      "parents": [
        "b0825ee3a8c570df4873ee397fa453e67fdad5d7"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Wed Jun 15 15:08:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "fs/exec.c: use BUILD_BUG_ON for VM_STACK_FLAGS \u0026 VM_STACK_INCOMPLETE_SETUP\n\nCommit a8bef8ff6ea1 (\"mm: migration: avoid race between shift_arg_pages()\nand rmap_walk() during migration by not migrating temporary stacks\")\nintroduced a BUG_ON() to ensure that VM_STACK_FLAGS and\nVM_STACK_INCOMPLETE_SETUP do not overlap.  The check is a compile time\none, so BUILD_BUG_ON is more appropriate.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dac853ae89043f1b7752875300faf614de43c74b",
      "tree": "2f5732cd1197a1930a32eaa1ece1446ea73f1625",
      "parents": [
        "06e86849cf4019945a106913adb9ff0abcc01770"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@googlemail.com",
        "time": "Thu Jun 09 20:05:18 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 09 12:50:05 2011 -0700"
      },
      "message": "exec: delay address limit change until point of no return\n\nUnconditionally changing the address limit to USER_DS and not restoring\nit to its old value in the error path is wrong because it prevents us\nusing kernel memory on repeated calls to this function.  This, in fact,\nbreaks the fallback of hard coded paths to the init program from being\never successful if the first candidate fails to load.\n\nWith this patch applied switching to USER_DS is delayed until the point\nof no return is reached which makes it possible to have a multi-arch\nrootfs with one arch specific init binary for each of the (hard coded)\nprobed paths.\n\nSince the address limit is already set to USER_DS when start_thread()\nwill be invoked, this redundancy can be safely removed.\n\nSigned-off-by: Mathias Krause \u003cminipli@googlemail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dfca32984237a8a011b5bf367e53341a265b2a4",
      "tree": "a879c682f00921959ee28b563b9024c0ac54f861",
      "parents": [
        "3759a0d94c18764247b66511d1038f2b93aa95de"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 02 11:14:00 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jun 04 18:17:11 2011 +0200"
      },
      "message": "job control: make task_clear_jobctl_pending() clear TRAPPING automatically\n\nJOBCTL_TRAPPING indicates that ptracer is waiting for tracee to\n(re)transit into TRACED.  task_clear_jobctl_pending() must be called\nwhen either tracee enters TRACED or the transition is cancelled for\nsome reason.  The former is achieved by explicitly calling\ntask_clear_jobctl_pending() in ptrace_stop() and the latter by calling\nit at the end of do_signal_stop().\n\nCalling task_clear_jobctl_trapping() at the end of do_signal_stop()\nlimits the scope TRAPPING can be used and is fragile in that seemingly\nunrelated changes to tracee\u0027s control flow can lead to stuck TRAPPING.\n\nWe already have task_clear_jobctl_pending() calls on those cancelling\nevents to clear JOBCTL_STOP_PENDING.  Cancellations can be handled by\nmaking those call sites use JOBCTL_PENDING_MASK instead and updating\ntask_clear_jobctl_pending() such that task_clear_jobctl_trapping() is\ncalled automatically if no stop/trap is pending.\n\nThis patch makes the above changes and removes the fallback\ntask_clear_jobctl_trapping() call from do_signal_stop().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "3759a0d94c18764247b66511d1038f2b93aa95de",
      "tree": "ec56295fc1bd252bcbe1cb8552102deeef03bbb7",
      "parents": [
        "81be24b8cdeb69e62f9d1b6b425fd9ffdd37f581"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 02 11:14:00 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jun 04 18:17:10 2011 +0200"
      },
      "message": "job control: introduce JOBCTL_PENDING_MASK and task_clear_jobctl_pending()\n\nThis patch introduces JOBCTL_PENDING_MASK and replaces\ntask_clear_jobctl_stop_pending() with task_clear_jobctl_pending()\nwhich takes an extra @mask argument.\n\nJOBCTL_PENDING_MASK is currently equal to JOBCTL_STOP_PENDING but\nfuture patches will add more bits.  recalc_sigpending_tsk() is updated\nto use JOBCTL_PENDING_MASK instead.\n\ntask_clear_jobctl_pending() takes @mask which in subset of\nJOBCTL_PENDING_MASK and clears the relevant jobctl bits.  If\nJOBCTL_STOP_PENDING is set, other STOP bits are cleared together.  All\ntask_clear_jobctl_stop_pending() users are updated to call\ntask_clear_jobctl_pending() with JOBCTL_STOP_PENDING which is\nfunctionally identical to task_clear_jobctl_stop_pending().\n\nThis patch doesn\u0027t cause any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "a8f072c1d624a627b67f2ace2f0c25d856ef4e54",
      "tree": "9ba3e96aa874b08c7156a3584f27187bcdbdd9cd",
      "parents": [
        "0b1007c3578569469a6fab6ae5cca918ccdc3ee1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 02 11:13:59 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jun 04 18:17:09 2011 +0200"
      },
      "message": "job control: rename signal-\u003egroup_stop and flags to jobctl and update them\n\nsignal-\u003egroup_stop currently hosts mostly group stop related flags;\nhowever, it\u0027s gonna be used for wider purposes and the GROUP_STOP_\nflag prefix becomes confusing.  Rename signal-\u003egroup_stop to\nsignal-\u003ejobctl and rename all GROUP_STOP_* flags to JOBCTL_*.\n\nBit position macros JOBCTL_*_BIT are defined and JOBCTL_* flags are\ndefined in terms of them to allow using bitops later.\n\nWhile at it, reassign JOBCTL_TRAPPING to bit 22 to better accomodate\nfuture additions.\n\nThis doesn\u0027t cause any functional change.\n\n-v2: JOBCTL_*_BIT macros added as suggested by Linus.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "57cc083ad9e1bfeeb4a0ee831e7bb008c8865bf0",
      "tree": "03b491fd20b4ca3e58354b15067f6961f32a016b",
      "parents": [
        "3864601387cf4196371e3c1897fdffa5228296f9"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu May 26 16:25:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "coredump: add support for exe_file in core name\n\nNow, exe_file is not proc FS dependent, so we can use it to name core\nfile.  So we add %E pattern for core file name cration which extract path\nfrom mm_struct-\u003eexe_file.  Then it converts slashes to exclamation marks\nand pastes the result to the core file name itself.\n\nThis is useful for environments where binary names are longer than 16\ncharacter (the current-\u003ecomm limitation).  Also where there are binaries\nwith same name but in a different path.  Further in case the binery itself\nchanges its current-\u003ecomm after exec.\n\nSo by doing (s/$/#/ -- # is treated as git comment):\n\n  $ sysctl kernel.core_pattern\u003d\u0027core.%p.%e.%E\u0027\n  $ ln /bin/cat cat45678901234567890\n  $ ./cat45678901234567890\n  ^Z\n  $ rm cat45678901234567890\n  $ fg\n  ^\\Quit (core dumped)\n  $ ls core*\n\nwe now get:\n\n  core.2434.cat456789012345.!root!cat45678901234567890 (deleted)\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nReviewed-by: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3864601387cf4196371e3c1897fdffa5228296f9",
      "tree": "1c517a970194f9e49ef98ef434c650771ffa31e1",
      "parents": [
        "63ab25ebbc50f74550bd8d164a34724b498f6fb9"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu May 26 16:25:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "mm: extract exe_file handling from procfs\n\nSetup and cleanup of mm_struct-\u003eexe_file is currently done in fs/proc/.\nThis was because exe_file was needed only for /proc/\u003cpid\u003e/exe.  Since we\nwill need the exe_file functionality also for core dumps (so core name can\ncontain full binary path), built this functionality always into the\nkernel.\n\nTo achieve that move that out of proc FS to the kernel/ where in fact it\nshould belong.  By doing that we can make dup_mm_exe_file static.  Also we\ncan drop linux/proc_fs.h inclusion in fs/exec.c and kernel/fork.c.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d16dfc550f5326a4000f3322582a7c05dec91d7a",
      "tree": "8ee963542705cbf2187777f1d3f2b209cbda827a",
      "parents": [
        "d05f3169c0fbca16132ec7c2be71685c6de638b5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:11:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:12 2011 -0700"
      },
      "message": "mm: mmu_gather rework\n\nRework the existing mmu_gather infrastructure.\n\nThe direct purpose of these patches was to allow preemptible mmu_gather,\nbut even without that I think these patches provide an improvement to the\nstatus quo.\n\nThe first 9 patches rework the mmu_gather infrastructure.  For review\npurpose I\u0027ve split them into generic and per-arch patches with the last of\nthose a generic cleanup.\n\nThe next patch provides generic RCU page-table freeing, and the followup\nis a patch converting s390 to use this.  I\u0027ve also got 4 patches from\nDaveM lined up (not included in this series) that uses this to implement\ngup_fast() for sparc64.\n\nThen there is one patch that extends the generic mmu_gather batching.\n\nAfter that follow the mm preemptibility patches, these make part of the mm\na lot more preemptible.  It converts i_mmap_lock and anon_vma-\u003elock to\nmutexes which together with the mmu_gather rework makes mmu_gather\npreemptible as well.\n\nMaking i_mmap_lock a mutex also enables a clean-up of the truncate code.\n\nThis also allows for preemptible mmu_notifiers, something that XPMEM I\nthink wants.\n\nFurthermore, it removes the new and universially detested unmap_mutex.\n\nThis patch:\n\nRemove the first obstacle towards a fully preemptible mmu_gather.\n\nThe current scheme assumes mmu_gather is always done with preemption\ndisabled and uses per-cpu storage for the page batches.  Change this to\ntry and allocate a page for batching and in case of failure, use a small\non-stack array to make some progress.\n\nPreemptible mmu_gather is desired in general and usable once i_mmap_lock\nbecomes a mutex.  Doing it before the mutex conversion saves us from\nhaving to rework the code by moving the mmu_gather bits inside the\npte_lock.\n\nAlso avoid flushing the tlb batches from under the pte lock, this is\nuseful even without the i_mmap_lock conversion as it significantly reduces\npte lock hold times.\n\n[akpm@linux-foundation.org: fix comment tpyo]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d05f3169c0fbca16132ec7c2be71685c6de638b5",
      "tree": "37d82004869fa4e530617883f12cab7538dbd4a6",
      "parents": [
        "248ac0e1943ad1796393d281b096184719eb3f97"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue May 24 17:11:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:12 2011 -0700"
      },
      "message": "mm: make expand_downwards() symmetrical with expand_upwards()\n\nCurrently we have expand_upwards exported while expand_downwards is\naccessible only via expand_stack or expand_stack_downwards.\n\ncheck_stack_guard_page is a nice example of the asymmetry.  It uses\nexpand_stack for VM_GROWSDOWN while expand_upwards is called for\nVM_GROWSUP case.\n\nLet\u0027s clean this up by exporting both functions and make those names\nconsistent.  Let\u0027s use expand_{upwards,downwards} because expanding\ndoesn\u0027t always involve stack manipulation (an example is\nia64_do_page_fault which uses expand_upwards for registers backing store\nexpansion).  expand_downwards has to be defined for both\nCONFIG_STACK_GROWS{UP,DOWN} because get_arg_page calls the downwards\nversion in the early process initialization phase for growsup\nconfiguration.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99dff5856220a02b8711f2e8746413ea6e53ccf6",
      "tree": "d8bae7ccdf8f7ad5221b053bb74a6220df996b3a",
      "parents": [
        "bb74e8ca352eecefdc5c1a9ebab01f18aa2f6f3c",
        "d9a0fbfd7bc5d2c42f0fa9bcbdab62c4942d0388"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 12:23:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 12:23:20 2011 -0700"
      },
      "message": "Merge branch \u0027tty-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6\n\n* \u0027tty-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (48 commits)\n  serial: 8250_pci: add support for Cronyx Omega PCI multiserial board.\n  tty/serial: Fix break handling for PORT_TEGRA\n  tty/serial: Add explicit PORT_TEGRA type\n  n_tracerouter and n_tracesink ldisc additions.\n  Intel PTI implementaiton of MIPI 1149.7.\n  Kernel documentation for the PTI feature.\n  export kernel call get_task_comm().\n  tty: Remove to support serial for S5P6442\n  pch_phub: Support new device ML7223\n  8250_pci: Add support for the Digi/IBM PCIe 2-port Adapter\n  ASoC: Update cx20442 for TTY API change\n  pch_uart: Support new device ML7223 IOH\n  parport: Use request_muxed_region for IT87 probe and lock\n  tty/serial: add support for Xilinx PS UART\n  n_gsm: Use print_hex_dump_bytes\n  drivers/tty/moxa.c: Put correct tty value\n  TTY: tty_io, annotate locking functions\n  TTY: serial_core, remove superfluous set_task_state\n  TTY: serial_core, remove invalid test\n  Char: moxa, fix locking in moxa_write\n  ...\n\nFix up trivial conflicts in drivers/bluetooth/hci_ldisc.c and\ndrivers/tty/serial/Makefile.\n\nI did the hci_ldisc thing as an evil merge, cleaning things up.\n"
    },
    {
      "commit": "4d9dec4db2efbd7edb549bd02373995b67496983",
      "tree": "a0ddbecea4823a7f3e20ab6eacb37a086a72dc36",
      "parents": [
        "34b064569eba3bec65bf98efe057b0578fe13297",
        "ae6b585eeb74670a2dec1fe4394bdfbdb9395cc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 08:28:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 08:28:34 2011 -0700"
      },
      "message": "Merge branch \u0027exec_rm_compat\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc\n\n* \u0027exec_rm_compat\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc:\n  exec: document acct_arg_size()\n  exec: unify do_execve/compat_do_execve code\n  exec: introduce struct user_arg_ptr\n  exec: introduce get_user_arg_ptr() helper\n"
    },
    {
      "commit": "7d74f492e4dd0034a61458eb80f70b1d2862ed07",
      "tree": "1be37b81f6cc0260314012a1e06b8779df0a4ec6",
      "parents": [
        "e0f263d719cc70245406cc26d86a480925e6a3c9"
      ],
      "author": {
        "name": "J Freyensee",
        "email": "james_p_freyensee@linux.intel.com",
        "time": "Fri May 06 16:56:47 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 13 16:30:59 2011 -0700"
      },
      "message": "export kernel call get_task_comm().\n\nThis allows drivers who call this function to be compiled modularly.\nOtherwise, a driver who is interested in this type of functionality\nhas to implement their own get_task_comm() call, causing code\nduplication in the Linux source tree.\n\nSigned-off-by: J Freyensee \u003cjames_p_freyensee@linux.intel.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ae6b585eeb74670a2dec1fe4394bdfbdb9395cc2",
      "tree": "ea1642cc0abf3b73573769bdb15c8d390bc3e7c8",
      "parents": [
        "0e028465d18b7c6797fcbdea632299d16097c5cd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Mar 06 18:03:11 2011 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 09 15:53:57 2011 +0200"
      },
      "message": "exec: document acct_arg_size()\n\nAdd the comment to explain acct_arg_size().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "0e028465d18b7c6797fcbdea632299d16097c5cd",
      "tree": "d03a1f0f688e9c4a780b2a1a3ef8354378b0ad42",
      "parents": [
        "ba2d01629d0d167598cfea85adc7926822bbfc45"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Mar 06 18:02:54 2011 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 09 15:53:56 2011 +0200"
      },
      "message": "exec: unify do_execve/compat_do_execve code\n\nAdd the appropriate members into struct user_arg_ptr and teach\nget_user_arg_ptr() to handle is_compat \u003d T case correctly.\n\nThis allows us to remove the compat_do_execve() code from fs/compat.c\nand reimplement compat_do_execve() as the trivial wrapper on top of\ndo_execve_common(is_compat \u003d\u003e true).\n\nIn fact, this fixes another (minor) bug. \"compat_uptr_t str\" can\noverflow after \"str +\u003d len\" in compat_copy_strings() if a 64bit\napplication execs via sys32_execve().\n\nUnexport acct_arg_size() and get_arg_page(), fs/compat.c doesn\u0027t\nneed them any longer.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "ba2d01629d0d167598cfea85adc7926822bbfc45",
      "tree": "703a3f297df7cb4c0317504a58121f9958c0d708",
      "parents": [
        "1d1dbf8135ab2f3603cc72e39e0f68784f453c39"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Mar 06 18:02:37 2011 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 09 15:53:53 2011 +0200"
      },
      "message": "exec: introduce struct user_arg_ptr\n\nNo functional changes, preparation.\n\nIntroduce struct user_arg_ptr, change do_execve() paths to use it\ninstead of \"char __user * const __user *argv\".\n\nThis makes the argv/envp arguments opaque, we are ready to handle the\ncompat case which needs argv pointing to compat_uptr_t.\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "1d1dbf8135ab2f3603cc72e39e0f68784f453c39",
      "tree": "e30b04b64f92a55200aab62d414fb1378f7bfaab",
      "parents": [
        "bb3c90f0de7b34995b5e35cf5dc97a3d428b3761"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Mar 06 18:02:21 2011 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 09 15:53:45 2011 +0200"
      },
      "message": "exec: introduce get_user_arg_ptr() helper\n\nIntroduce get_user_arg_ptr() helper, convert count() and copy_strings()\nto use it.\n\nNo functional changes, preparation. This helper is trivial, it just\nreads the pointer from argv/envp user-space array.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "39efa3ef3a376a4e53de2f82fc91182459d34200",
      "tree": "f75a44fa77396edcf74e41686912554f96681340",
      "parents": [
        "e5c1902e9260a0075ea52cb5ef627a8d9aaede89"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "message": "signal: Use GROUP_STOP_PENDING to stop once for a single group stop\n\nCurrently task-\u003esignal-\u003egroup_stop_count is used to decide whether to\nstop for group stop.  However, if there is a task in the group which\nis taking a long time to stop, other tasks which are continued by\nptrace would repeatedly stop for the same group stop until the group\nstop is complete.\n\nConversely, if a ptraced task is in TASK_TRACED state, the debugger\nwon\u0027t get notified of group stops which is inconsistent compared to\nthe ptraced task in any other state.\n\nThis patch introduces GROUP_STOP_PENDING which tracks whether a task\nis yet to stop for the group stop in progress.  The flag is set when a\ngroup stop starts and cleared when the task stops the first time for\nthe group stop, and consulted whenever whether the task should\nparticipate in a group stop needs to be determined.  Note that now\ntasks in TASK_TRACED also participate in group stop.\n\nThis results in the following behavior changes.\n\n* For a single group stop, a ptracer would see at most one stop\n  reported.\n\n* A ptracee in TASK_TRACED now also participates in group stop and the\n  tracer would get the notification.  However, as a ptraced task could\n  be in TASK_STOPPED state or any ptrace trap could consume group\n  stop, the notification may still be missing.  These will be\n  addressed with further patches.\n\n* A ptracee may start a group stop while one is still in progress if\n  the tracer let it continue with stop signal delivery.  Group stop\n  code handles this correctly.\n\nOleg:\n\n* Spotted that a task might skip signal check even when its\n  GROUP_STOP_PENDING is set.  Fixed by updating\n  recalc_sigpending_tsk() to check GROUP_STOP_PENDING instead of\n  group_stop_count.\n\n* Pointed out that task-\u003egroup_stop should be cleared whenever\n  task-\u003esignal-\u003egroup_stop_count is cleared.  Fixed accordingly.\n\n* Pointed out the behavior inconsistency between TASK_TRACED and\n  RUNNING and the last behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "1bef82917c74249ff21982127e57defd6ca2bb1b",
      "tree": "dd288483397881b5753e53fdf7ba193c69f475eb",
      "parents": [
        "ff38c083ad3bb8dbbed80aa9090fcc96bc4af7db"
      ],
      "author": {
        "name": "Holger Hans Peter Freyther",
        "email": "holger@freyther.de",
        "time": "Thu Feb 24 17:46:49 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 21 00:16:09 2011 -0400"
      },
      "message": "Small typo fix...\n\nHi,\n\nI was backporting the coredump over pipe feature and noticed this small typo,\nI wish I would have something bigger to contribute...\n\n\u003eFrom 15d6080e0ed4267da103c706917a33b1015e8804 Mon Sep 17 00:00:00 2001\nFrom: Holger Hans Peter Freyther \u003cholger@moiji-mobile.com\u003e\nDate: Thu, 24 Feb 2011 17:42:50 +0100\nSubject: [PATCH] fs: Fix a small typo in the comment\n\nThe function is called umh_pipe_setup not uhm_pipe_setup.\n\nSigned-off-by: Holger Hans Peter Freyther \u003cholger@moiji-mobile.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47c805dc2d2dff686962f5f0baa6bac2d703ba19",
      "tree": "b596e0a1aadb1550ef2099df95832196cd0eeda1",
      "parents": [
        "c3e380b0b3cfa613189fb91513efd88a65e1d9d8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 23 17:44:09 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:25 2011 -0400"
      },
      "message": "switch do_filp_open() to struct open_flags\n\ntake calculation of open_flags by open(2) arguments into new helper\nin fs/open.c, move filp_open() over there, have it and do_sys_open()\nuse that helper, switch exec.c callers of do_filp_open() to explicit\n(and constant) struct open_flags.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3cd90ea42f2c15f928b70ed66f6d8ed0a8e7aadd",
      "tree": "2e27c807baaec2e6528cd5431d57308a4d874dea",
      "parents": [
        "1a44bc8c7cfe69756a116d38aef992d50fc1969d"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Feb 01 15:52:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "vfs: sparse: add __FMODE_EXEC\n\nFMODE_EXEC is a constant type of fmode_t but was used with normal integer\nconstants.  This results in following warnings from sparse.  Fix it using\nnew macro __FMODE_EXEC.\n\n fs/exec.c:116:58: warning: restricted fmode_t degrades to integer\n fs/exec.c:689:58: warning: restricted fmode_t degrades to integer\n fs/fcntl.c:777:9: warning: restricted fmode_t degrades to integer\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "462e635e5b73ba9a4c03913b77138cd57ce4b050",
      "tree": "6ff0e84eecc6252d41d7c08730018c0149e7227f",
      "parents": [
        "0fcdcfbbc98f70f559e4b36773a69972489a6d8f"
      ],
      "author": {
        "name": "Tavis Ormandy",
        "email": "taviso@cmpxchg8b.com",
        "time": "Thu Dec 09 15:29:42 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 15 12:30:36 2010 -0800"
      },
      "message": "install_special_mapping skips security_file_mmap check.\n\nThe install_special_mapping routine (used, for example, to setup the\nvdso) skips the security check before insert_vm_struct, allowing a local\nattacker to bypass the mmap_min_addr security restriction by limiting\nthe available pages for special mappings.\n\nbprm_mm_init() also skips the check, and although I don\u0027t think this can\nbe used to bypass any restrictions, I don\u0027t see any reason not to have\nthe security check.\n\n  $ uname -m\n  x86_64\n  $ cat /proc/sys/vm/mmap_min_addr\n  65536\n  $ cat install_special_mapping.s\n  section .bss\n      resb BSS_SIZE\n  section .text\n      global _start\n      _start:\n          mov     eax, __NR_pause\n          int     0x80\n  $ nasm -D__NR_pause\u003d29 -DBSS_SIZE\u003d0xfffed000 -f elf -o install_special_mapping.o install_special_mapping.s\n  $ ld -m elf_i386 -Ttext\u003d0x10000 -Tbss\u003d0x11000 -o install_special_mapping install_special_mapping.o\n  $ ./install_special_mapping \u0026\n  [1] 14303\n  $ cat /proc/14303/maps\n  0000f000-00010000 r-xp 00000000 00:00 0                                  [vdso]\n  00010000-00011000 r-xp 00001000 00:19 2453665                            /home/taviso/install_special_mapping\n  00011000-ffffe000 rwxp 00000000 00:00 0                                  [stack]\n\nIt\u0027s worth noting that Red Hat are shipping with mmap_min_addr set to\n4096.\n\nSigned-off-by: Tavis Ormandy \u003ctaviso@google.com\u003e\nAcked-by: Kees Cook \u003ckees@ubuntu.com\u003e\nAcked-by: Robert Swiecki \u003cswiecki@google.com\u003e\n[ Changed to not drop the error code - akpm ]\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "114279be2120a916e8a04feeb2ac976a10016f2f",
      "tree": "866a5dfab411d18941d58f8796edab6da760213e",
      "parents": [
        "3c77f845722158206a7209c45ccddc264d19319c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Nov 30 20:56:02 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 30 17:56:38 2010 -0800"
      },
      "message": "exec: copy-and-paste the fixes into compat_do_execve() paths\n\nNote: this patch targets 2.6.37 and tries to be as simple as possible.\nThat is why it adds more copy-and-paste horror into fs/compat.c and\nuglifies fs/exec.c, this will be cleanuped later.\n\ncompat_copy_strings() plays with bprm-\u003evma/mm directly and thus has\ntwo problems: it lacks the RLIMIT_STACK check and argv/envp memory\nis not visible to oom killer.\n\nExport acct_arg_size() and get_arg_page(), change compat_copy_strings()\nto use get_arg_page(), change compat_do_execve() to do acct_arg_size(0)\nas do_execve() does.\n\nAdd the fatal_signal_pending/cond_resched checks into compat_count() and\ncompat_copy_strings(), this matches the code in fs/exec.c and certainly\nmakes sense.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c77f845722158206a7209c45ccddc264d19319c",
      "tree": "9eace97a8b88eb68b7d5d3127041b14c202421ae",
      "parents": [
        "37a09f07459753e7c98d4e21f1c61e8756923f81"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Nov 30 20:55:34 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 30 17:56:37 2010 -0800"
      },
      "message": "exec: make argv/envp memory visible to oom-killer\n\nBrad Spengler published a local memory-allocation DoS that\nevades the OOM-killer (though not the virtual memory RLIMIT):\nhttp://www.grsecurity.net/~spender/64bit_dos.c\n\nexecve()-\u003ecopy_strings() can allocate a lot of memory, but\nthis is not visible to oom-killer, nobody can see the nascent\nbprm-\u003emm and take it into account.\n\nWith this patch get_arg_page() increments current\u0027s MM_ANONPAGES\ncounter every time we allocate the new page for argv/envp. When\ndo_execve() succeds or fails, we change this counter back.\n\nTechnically this is not 100% correct, we can\u0027t know if the new\npage is swapped out and turn MM_ANONPAGES into MM_SWAPENTS, but\nI don\u0027t think this really matters and everything becomes correct\nonce exec changes -\u003emm or fails.\n\nReported-by: Brad Spengler \u003cspender@grsecurity.net\u003e\nReviewed-and-discussed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98391cf4dcf893e9e74e1c14189851dbc9c5ad0d",
      "tree": "f76b582402e03a74628071b8190b93da274f59f4",
      "parents": [
        "478735e38887077ac77a9756121b6ce0cb956e2f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Oct 27 15:34:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "exec: don\u0027t turn PF_KTHREAD off when a target command was not found\n\nPresently do_execve() turns PF_KTHREAD off before search_binary_handler().\n THis has a theorical risk of PF_KTHREAD getting lost.  We don\u0027t have to\nturn PF_KTHREAD off in the ENOEXEC case.\n\nThis patch moves this flag modification to after the finding of the\nexecutable file.\n\nThis is only a theorical issue because kthreads do not call do_execve()\ndirectly.  But fixing would be better.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b0d300bd0f047e2edaf9d4b6784189e6c67c3d1",
      "tree": "ce3777527c949add56658e4d5b2ab02781590931",
      "parents": [
        "9b1bf12d5d51bca178dea21b04a0805e29d60cf1"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Wed Oct 27 15:34:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:12 2010 -0700"
      },
      "message": "core_pattern: fix truncation by core_pattern handler with long parameters\n\nWe met a parameter truncated issue, consider following:\n\u003e echo \"|/root/core_pattern_pipe_test %p /usr/libexec/blah-blah-blah \\\n%s %c %p %u %g 11 12345678901234567890123456789012345678 %t\" \u003e \\\n/proc/sys/kernel/core_pattern\n\nThis is okay because the strings is less than CORENAME_MAX_SIZE.  \"cat\n/proc/sys/kernel/core_pattern\" shows the whole string.  but after we run\ncore_pattern_pipe_test in man page, we found last parameter was truncated\nlike below:\n\n        argc[10]\u003d\u003c12807486\u003e\n\nThe root cause is core_pattern allows % specifiers, which need to be\nreplaced during parse time, but the replace may expand the strings to\nlarger than CORENAME_MAX_SIZE.  So if the last parameter is % specifiers,\nthe replace code is using snprintf(out_ptr, out_end - out_ptr, ...), this\nwill write out of corename array.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b1bf12d5d51bca178dea21b04a0805e29d60cf1",
      "tree": "902a2c0e5882a2152da59a589958d6426dc84643",
      "parents": [
        "b84011508360d6885a9d95a235ec77d56f133377"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Oct 27 15:34:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:12 2010 -0700"
      },
      "message": "signals: move cred_guard_mutex from task_struct to signal_struct\n\nOleg Nesterov pointed out we have to prevent multiple-threads-inside-exec\nitself and we can reuse -\u003ecred_guard_mutex for it.  Yes, concurrent\nexecve() has no worth.\n\nLet\u0027s move -\u003ecred_guard_mutex from task_struct to signal_struct.  It\nnaturally prevent multiple-threads-inside-exec.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d5992d2ac7dc09aed8ab537cba074589f0f0a52",
      "tree": "0fbb51026e8aa13ddd7a6516c04471ceb97bc277",
      "parents": [
        "0f4d208f1975f16f269134cee5f44c1f048581da"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue Oct 26 14:21:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: add per-mm oom disable count\n\nIt\u0027s pointless to kill a task if another thread sharing its mm cannot be\nkilled to allow future memory freeing.  A subsequent patch will prevent\nkills in such cases, but first it\u0027s necessary to have a way to flag a task\nthat shares memory with an OOM_DISABLE task that doesn\u0027t incur an\nadditional tasklist scan, which would make select_bad_process() an O(n^2)\nfunction.\n\nThis patch adds an atomic counter to struct mm_struct that follows how\nmany threads attached to it have an oom_score_adj of OOM_SCORE_ADJ_MIN.\nThey cannot be killed by the kernel, so their memory cannot be freed in\noom conditions.\n\nThis only requires task_lock() on the task that we\u0027re operating on, it\ndoes not require mm-\u003emmap_sem since task_lock() pins the mm and the\noperation is atomic.\n\n[rientjes@google.com: changelog and sys_unshare() code]\n[rientjes@google.com: protect oom_disable_count with task_lock in fork]\n[rientjes@google.com: use old_mm for oom_disable_count in exec]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "8fd01d6cfbf75465d84a4e533ed70c5f57b3ff51"
}
