)]}'
{
  "log": [
    {
      "commit": "422a253483aa5de71a2bcdc27b0aa023053f97f8",
      "tree": "3e25aaf65b8eaf275bb01982a89fb0cd631c4367",
      "parents": [
        "91e58b6e95a9c6b9efd928ae352eae5e75ae598c",
        "022624a758dc9489388a99ad29577b4c8c09237c",
        "9756b15e1b58453a6fd54b85c1ad8515209e10bb",
        "8f2e586567b1bad72dac7c3810fe9a2ef7117506"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 09 10:35:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 09 10:35:30 2009 -0700"
      },
      "message": "Merge branches \u0027core-fixes-for-linus\u0027, \u0027irq-fixes-for-linus\u0027 and \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  printk: fix wrong format string iter for printk\n  futex: comment requeue key reference semantics\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  irq: fix cpumask memory leak on offstack cpumask kernels\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  posix-timers: fix RLIMIT_CPU \u0026\u0026 setitimer(CPUCLOCK_PROF)\n  posix-timers: fix RLIMIT_CPU \u0026\u0026 fork()\n  timers: add missing kernel-doc\n"
    },
    {
      "commit": "6279a751fe096a21dc7704e918d570d3ff06e769",
      "tree": "2b24e0ecf004802a890f77195489f8aa76fa745d",
      "parents": [
        "633fe795b80693a8198e7d82f66538a72d2bbba2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 27 01:06:07 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 17:51:38 2009 +0200"
      },
      "message": "posix-timers: fix RLIMIT_CPU \u0026\u0026 fork()\n\nSee http://bugzilla.kernel.org/show_bug.cgi?id\u003d12911\n\ncopy_signal() copies signal-\u003erlim, but RLIMIT_CPU is \"lost\". Because\nposix_cpu_timers_init_group() sets cputime_expires.prof_exp \u003d 0 and thus\nfastpath_timer_check() returns false unless we have other expired cpu timers.\n\nChange copy_signal() to set cputime_expires.prof_exp if we have RLIMIT_CPU.\nAlso, set cputimer.running \u003d 1 in that case. This is not strictly necessary,\nbut imho makes sense.\n\nReported-by: Peter Lojkin \u003cia6432@inbox.ru\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Peter Lojkin \u003cia6432@inbox.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: stable@kernel.org\nLKML-Reference: \u003c20090327000607.GA10104@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5e34437840d33554f69380584311743b39e8fbeb",
      "tree": "e081135619ee146af5efb9ee883afca950df5757",
      "parents": [
        "77d05632baee21b1cef8730d7c06aa69601e4dca",
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 11:15:40 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 11:15:40 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into core/softlockup\n\nConflicts:\n\tkernel/sysctl.c\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -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:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "1b0f7ffd0ea27cd3a0b9ca04e3df9522048c32a3",
      "tree": "a8c27acdf95f55f93fe86661c6cba4cd36c8e4f1",
      "parents": [
        "52ee2dfdd4f51cf422ea6a96a0846dc94244aa37"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:02 2009 -0700"
      },
      "message": "pids: kill signal_struct-\u003e __pgrp/__session and friends\n\nWe are wasting 2 words in signal_struct without any reason to implement\ntask_pgrp_nr() and task_session_nr().\n\ntask_session_nr() has no callers since\n2e2ba22ea4fd4bb85f0fa37c521066db6775cbef, we can remove it.\n\ntask_pgrp_nr() is still (I believe wrongly) used in fs/autofsX and\nfs/coda.\n\nThis patch reimplements task_pgrp_nr() via task_pgrp_nr_ns(), and kills\n__pgrp/__session and the related helpers.\n\nThe change in drivers/char/tty_io.c is cosmetic, but hopefully makes sense\nanyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Alan Cox \u003cnumber6@the-village.bc.nu\u003e\t\t[tty parts]\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.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": "b3bfa0cba867f23365b81658b47efd906830879b",
      "tree": "e54d9a9c4c23fc00bb2ff3ed57ef5317a0660ea5",
      "parents": [
        "e4da026f980df125a4918c3bb9fe93185c7ef12a"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Thu Apr 02 16:58:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:58 2009 -0700"
      },
      "message": "signals: protect cinit from blocked fatal signals\n\nNormally SIG_DFL signals to global and container-init are dropped early.\nBut if a signal is blocked when it is posted, we cannot drop the signal\nsince the receiver may install a handler before unblocking the signal.\nOnce this signal is queued however, the receiver container-init has no way\nof knowing if the signal was sent from an ancestor or descendant\nnamespace.  This patch ensures that contianer-init drops all SIG_DFL\nsignals in get_signal_to_deliver() except SIGKILL/SIGSTOP.\n\nIf SIGSTOP/SIGKILL originate from a descendant of container-init they are\nnever queued (i.e dropped in sig_ignored() in an earler patch).\n\nIf SIGSTOP/SIGKILL originate from parent namespace, the signal is queued\nand container-init processes the signal.\n\nIOW, if get_signal_to_deliver() sees a sig_kernel_only() signal for global\nor container-init, the signal must have been generated internally or must\nhave come from an ancestor ns and we process the signal.\n\nFurther, the signal_group_exit() check was needed to cover the case of a\nmulti-threaded init sending SIGKILL to other threads when doing an exit()\nor exec().  But since the new sig_kernel_only() check covers the SIGKILL,\nthe signal_group_exit() check is no longer needed and can be removed.\n\nFinally, now that we have all pieces in place, set SIGNAL_UNKILLABLE for\ncontainer-inits.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f2c55b843836d26528c56a0968689accaedbc67",
      "tree": "17501e29d4b6ef3eb85da9a5d6ad3df7f19ec6a2",
      "parents": [
        "14dd1ff0f9e75dd4ae2f1ff8e48becb76d14f4ab"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Apr 02 16:56:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:51 2009 -0700"
      },
      "message": "Simplify copy_thread()\n\nFirst argument unused since 2.3.11.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \u003clinux-arch@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": "33e5d76979cf01e3834814fe0aea569d1d602c1a",
      "tree": "58a03e5da59db203245da10db144a4f6f61a83ba",
      "parents": [
        "5482415a5ecc0cd791a5d885cc3db8281401078f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Apr 02 16:56:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "nommu: fix a number of issues with the per-MM VMA patch\n\nFix a number of issues with the per-MM VMA patch:\n\n (1) Make mmap_pages_allocated an atomic_long_t, just in case this is used on\n     a NOMMU system with more than 2G pages.  Makes no difference on a 32-bit\n     system.\n\n (2) Report vma-\u003evm_pgoff * PAGE_SIZE as a 64-bit value, not a 32-bit value,\n     lest it overflow.\n\n (3) Move the allocation of the vm_area_struct slab back for fork.c.\n\n (4) Use KMEM_CACHE() for both vm_area_struct and vm_region slabs.\n\n (5) Use BUG_ON() rather than if () BUG().\n\n (6) Make the default validate_nommu_regions() a static inline rather than a\n     #define.\n\n (7) Make free_page_series()\u0027s objection to pages with a refcount !\u003d 1 more\n     informative.\n\n (8) Adjust the __put_nommu_region() banner comment to indicate that the\n     semaphore must be held for writing.\n\n (9) Limit the number of warnings about munmaps of non-mmapped regions.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526",
      "tree": "b3dab5140284b3edf02bf2b13f74bfddb25aa62a",
      "parents": [
        "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:50:06 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Get rid of indirect include of fs_struct.h\n\nDon\u0027t pull it in sched.h; very few files actually need it and those\ncan include directly.  sched.h itself only needs forward declaration\nof struct fs_struct;\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "498052bba55ecaff58db6a1436b0e25bfd75a7ff",
      "tree": "bd3644ac60737e3733995a203acebd70cfd1b21b",
      "parents": [
        "3e93cd671813e204c258f1e6c797959920cf7772"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 30 07:20:30 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New locking/refcounting for fs_struct\n\n* all changes of current-\u003efs are done under task_lock and write_lock of\n  old fs-\u003elock\n* refcount is not atomic anymore (same protection)\n* its decrements are done when removing reference from current; at the\n  same time we decide whether to free it.\n* put_fs_struct() is gone\n* new field - -\u003ein_exec.  Set by check_unsafe_exec() if we are trying to do\n  execve() and only subthreads share fs_struct.  Cleared when finishing exec\n  (success and failure alike).  Makes CLONE_FS fail with -EAGAIN if set.\n* check_unsafe_exec() may fail with -EAGAIN if another execve() from subthread\n  is in progress.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3e93cd671813e204c258f1e6c797959920cf7772",
      "tree": "a1e0b2d2da7d296cc1c53be9cd6efa5b94b01b5c",
      "parents": [
        "f8ef3ed2bebd2c4cb9ece92efa185d7aead8831a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:00:13 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "Take fs_struct handling to new file (fs/fs_struct.c)\n\nPure code move; two new helper functions for nfsd and daemonize\n(unshare_fs_struct() and daemonize_fs_struct() resp.; for now -\nthe same code as used to be in callers).  unshare_fs_struct()\nexported (for nfsd, as copy_fs_struct()/exit_fs() used to be),\ncopy_fs_struct() and exit_fs() don\u0027t need exports anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9489424454c93f4d225d7af47978f8c7e84bf4d4",
      "tree": "b97394982298e4e191b2766408ff8a3dff99266a",
      "parents": [
        "2b17fa506c418e9fb02bbbc7f426d2bbb5b247a6"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:13 2009 +1030"
      },
      "message": "cpumask: use mm_cpumask() wrapper: kernel/fork.c\n\nImpact: futureproof\n\nMakes code futureproof against the impending change to mm-\u003ecpu_vm_mask.\n\nIt\u0027s also a chance to use the new cpumask_ ops which take a pointer.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d5516cbb9daf7d0e342a2e3b0fc6f8c39a81205",
      "tree": "7f3fa06b708a508f4cc0fa6ef7894ede14101c87",
      "parents": [
        "df0b4a5080ca668636831b641a6356500fb5c637"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 02 22:58:45 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 09 13:23:25 2009 -0700"
      },
      "message": "copy_process: fix CLONE_PARENT \u0026\u0026 parent_exec_id interaction\n\nCLONE_PARENT can fool the -\u003eself_exec_id/parent_exec_id logic. If we\nre-use the old parent, we must also re-use -\u003eparent_exec_id to make\nsure exit_notify() sees the right -\u003exxx_exec_id\u0027s when the CLONE_PARENT\u0027ed\ntask exits.\n\nAlso, move down the \"p-\u003eparent_exec_id \u003d p-\u003eself_exec_id\" thing, to place\ntwo different cases together.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Serge E. Hallyn \u003cserge@hallyn.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8a6b2b9cee298a9663cbe38ce1eb5240987cb62",
      "tree": "b356490269c9e77d164dcc1477792b882fbb8bdb",
      "parents": [
        "ba1511bf7fbda452138e4096bf10d5a382710f4f",
        "071a0bc2ceace31266836801510879407a3701fa"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:44:22 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:44:22 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/apic\n\nConflicts:\n\tarch/x86/kernel/acpi/boot.c\n\tarch/x86/mm/fault.c\n"
    },
    {
      "commit": "871cafcc962fa1655c44b4f0e54d4c5cc14e273c",
      "tree": "fdb7bc65d2606c85b7be6c33ba0dfd5b4e472245",
      "parents": [
        "cf2592f59c0e8ed4308adbdb2e0a88655379d579",
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 12 13:08:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 12 13:08:57 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/softlockup\n"
    },
    {
      "commit": "94dba895333a4321f27360e42b807260ae36bda4",
      "tree": "7b6381da7ea9fc176001dda0714725c3a1dd6cc7",
      "parents": [
        "9ce04f9238cafcfd09a502f2bc8c13b5f44ec590",
        "4da94d49b2ecb0a26e716a8811c3ecc542c2a65d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 08:24:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 08:24:32 2009 -0800"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timers: fix TIMER_ABSTIME for process wide cpu timers\n  timers: split process wide cpu clocks/timers, fix\n  x86: clean up hpet timer reinit\n  timers: split process wide cpu clocks/timers, remove spurious warning\n  timers: split process wide cpu clocks/timers\n  signal: re-add dead task accumulation stats.\n  x86: fix hpet timer reinit for x86_64\n  sched: fix nohz load balancer on cpu offline\n"
    },
    {
      "commit": "9ce04f9238cafcfd09a502f2bc8c13b5f44ec590",
      "tree": "f55b7c0ef48ea5b3bbd2971036ba54b666e8c4ce",
      "parents": [
        "b3f2caaaa82440af06b39c2c92e4fa8122d75465",
        "06eb23b1ba39c61ee5d5faeb42a097635693e370"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 08:23:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 08:23:22 2009 -0800"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  ptrace, x86: fix the usage of ptrace_fork()\n  i8327: fix outb() parameter order\n  x86: fix math_emu register frame access\n  x86: math_emu info cleanup\n  x86: include correct %gs in a.out core dump\n  x86, vmi: put a missing paravirt_release_pmd in pgd_dtor\n  x86: find nr_irqs_gsi with mp_ioapic_routing\n  x86: add clflush before monitor for Intel 7400 series\n  x86: disable intel_iommu support by default\n  x86: don\u0027t apply __supported_pte_mask to non-present ptes\n  x86: fix grammar in user-visible BIOS warning\n  x86/Kconfig.cpu: make Kconfig help readable in the console\n  x86, 64-bit: print DMI info in the oops trace\n"
    },
    {
      "commit": "06eb23b1ba39c61ee5d5faeb42a097635693e370",
      "tree": "a06f34d6ed32521ea32641df30732d9eb9d24757",
      "parents": [
        "b52af40923fc91a12e3c7152d833e0c0c6a508f6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Feb 09 02:02:33 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 11 10:32:46 2009 +0100"
      },
      "message": "ptrace, x86: fix the usage of ptrace_fork()\n\nI noticed by pure accident we have ptrace_fork() and friends. This was\nadded by \"x86, bts: add fork and exit handling\", commit\nbf53de907dfdaac178c92d774aae7370d7b97d20.\n\nI can\u0027t test this, ds_request_bts() returns -EOPNOTSUPP, but I strongly\nbelieve this needs the fix. I think something like this program\n\n\tint main(void)\n\t{\n\t\tint pid \u003d fork();\n\n\t\tif (!pid) {\n\t\t\tptrace(PTRACE_TRACEME, 0, NULL, NULL);\n\t\t\tkill(getpid(), SIGSTOP);\n\t\t\tfork();\n\t\t} else {\n\t\t\tstruct ptrace_bts_config bts \u003d {\n\t\t\t\t.flags \u003d PTRACE_BTS_O_ALLOC,\n\t\t\t\t.size  \u003d 4 * 4096,\n\t\t\t};\n\n\t\t\twait(NULL);\n\n\t\t\tptrace(PTRACE_SETOPTIONS, pid, NULL, PTRACE_O_TRACEFORK);\n\t\t\tptrace(PTRACE_BTS_CONFIG, pid, \u0026bts, sizeof(bts));\n\t\t\tptrace(PTRACE_CONT, pid, NULL, NULL);\n\n\t\t\tsleep(1);\n\t\t}\n\n\t\treturn 0;\n\t}\n\nshould crash the kernel.\n\nIf the task is traced by its natural parent ptrace_reparented() returns 0\nbut we should clear -\u003ebtsxxx anyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "17406b82d621930cca8ccc1272cdac9a7dae8e40",
      "tree": "224c8b0b7c78a5467175fe10e116bdc6b73495ea",
      "parents": [
        "94be52dc075a32af4aa73d7e10f68734d62d6af2"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@google.com",
        "time": "Fri Feb 06 15:37:47 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 11:03:49 2009 +0100"
      },
      "message": "softlockup: remove timestamp checking from hung_task\n\nImpact: saves sizeof(long) bytes per task_struct\n\nBy guaranteeing that sysctl_hung_task_timeout_secs have elapsed between\ntasklist scans we can avoid using timestamps.\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "04ec93fe9bc98e3bd8560f79f56fed66dfae40d5",
      "tree": "ba7d1ca513641167f61d8d8bb56b832f63d98bca",
      "parents": [
        "b2a740aab8f3bc2fd9f01528e39607bd9a1f0da6"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Feb 06 08:17:19 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 06 08:43:11 2009 -0800"
      },
      "message": "fork.c: fix NULL pointer dereference when nr_threads \u003d\u003d threads-max\n\nI happened to forked lots of processes, and hit NULL pointer dereference.\nIt is because in copy_process() after checking max_threads, 0 is returned\nbut not -EAGAIN.\n\nThe bug is introduced by \"CRED: Detach the credentials from task_struct\"\n(commit f1752eec6145c97163dbce62d17cf5d928e28a27).\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32bd671d6cbeda60dc73be77fa2b9037d9a9bfa0",
      "tree": "591c941b9f12ce9f3caefd112f0ada3c5fcc53ab",
      "parents": [
        "83895147b702434e6f236deeca75211fd0e3da3a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Feb 05 12:24:15 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 05 13:04:33 2009 +0100"
      },
      "message": "signal: re-add dead task accumulation stats.\n\nWe\u0027re going to split the process wide cpu accounting into two parts:\n\n - clocks; which can take all the time they want since they run\n           from user context.\n\n - timers; which need constant time tracing but can affort the overhead\n           because they\u0027re default off -- and rare.\n\nThe clock readout will go back to a full sum of the thread group, for this\nwe need to re-add the exit stats that were removed in the initial itimer\nrework (f06febc9: timers: fix itimer/many thread hang).\n\nFurthermore, since that full sum can be rather slow for large thread groups\nand we have the complete dead task stats, revert the do_notify_parent time\ncomputation.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ddeb51d9c83931c1ca6abf76a38934c5a1ed918",
      "tree": "fc2efb59d627135ea2199a8a68415b162646b121",
      "parents": [
        "5a611268b69f05262936dd177205acbce4471358",
        "5ee810072175042775e39bdd3eaaa68884c27805"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 27 12:01:51 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 27 12:01:51 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/percpu\n\nConflicts:\n\tarch/x86/kernel/setup_percpu.c\n"
    },
    {
      "commit": "1e70c7f7a9d4a3d2cc78b40e1d7768d99cd79899",
      "tree": "1218c32008412e57314f8f9db8d3b4912e2ecb25",
      "parents": [
        "810ee58de26c9c1255d716b1db7344c4a1093fec",
        "1d4a7f1c4faf53eb9e822743ec8a70b3019a26d2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 09:47:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 09:47:43 2009 -0800"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  hrtimers: fix inconsistent lock state on resume in hres_timers_resume\n  time-sched.c: tick_nohz_update_jiffies should be static\n  locking, hpet: annotate false positive warning\n  kernel/fork.c: unused variable \u0027ret\u0027\n  itimers: remove the per-cpu-ish-ness\n"
    },
    {
      "commit": "198030782cedf25391e67e7c88b04f87a5eb6563",
      "tree": "5b7368c6bf052bcb4bb273497a57900720d36f51",
      "parents": [
        "4ec71fa2d2c3f1040348f2604f4b8ccc833d1c2e",
        "92181f190b649f7ef2b79cbf5c00f26ccc66da2a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 21 10:39:51 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 21 10:39:51 2009 +0100"
      },
      "message": "Merge branch \u0027x86/mm\u0027 into core/percpu\n\nConflicts:\n\tarch/x86/mm/fault.c\n"
    },
    {
      "commit": "b2b062b8163391c42b3219d466ca1ac9742b9c7b",
      "tree": "f3f920c09b8de694b1bc1d4b878cfd2b0b98c913",
      "parents": [
        "a9de18eb761f7c1c860964b2e5addc1a35c7e861",
        "99937d6455cea95405ac681c86a857d0fcd530bd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 18 18:37:14 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 18 18:37:14 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into stackprotector\n\nConflicts:\n\tarch/x86/include/asm/pda.h\n\tarch/x86/include/asm/system.h\n\nAlso, moved include/asm-x86/stackprotector.h to arch/x86/include/asm.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "af432eb1cc3178ec7109aca2283aafb1c12ccac1",
      "tree": "32b290ae6c1f07667b7e6044cc94e4efee58edfc",
      "parents": [
        "e162b39a368f0401e41b558f430c354d12a85b37"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@google.com",
        "time": "Fri Jan 16 09:09:38 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 16 18:17:34 2009 +0100"
      },
      "message": "softlockup: fix to allow compiling with !DETECT_HUNG_TASK\n\nFixes the following compile error:\n\n kernel/fork.c:1049: error: \u0027struct task_struct\u0027 has no member named \u0027last_switch_count\u0027\n kernel/fork.c:1050: error: \u0027struct task_struct\u0027 has no member named \u0027last_switch_timestamp\u0027\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@google.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6559eed8ca7db0531a207cd80be5e28cd6f213c5",
      "tree": "08d7a42d9eb8e7e9b7aa6930a07f1acecb35a282",
      "parents": [
        "2e4d0924eb0c403ce4014fa139d1d61bf2c44fee"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:32 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:30 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 30\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "17da2bd90abf428523de0fb98f7075e00e3ed42e",
      "tree": "4f2daf3cb792b7da62e6ae771b58902cc5ea24ab",
      "parents": [
        "754fe8d297bfae7b77f7ce866e2fb0c5fb186506"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:10 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:21 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 08\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "783adf42cf039083dd3c734c07c3bdc707e2bb15",
      "tree": "26bb2ff8c8e1bd285e0161154d83ce27dc459100",
      "parents": [
        "d19b85db9d5c44a4c21dcb10d6fbadaa4425ab2a"
      ],
      "author": {
        "name": "Steven Noonan",
        "email": "steven@uplinklabs.net",
        "time": "Sun Jan 11 01:04:21 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 15:34:10 2009 +0100"
      },
      "message": "kernel/fork.c: unused variable \u0027ret\u0027\n\nRemoved the unused variable.\n\nSigned-off-by: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d19b85db9d5c44a4c21dcb10d6fbadaa4425ab2a",
      "tree": "250be7a5a29069f7d1f4524fa45ab0e988833025",
      "parents": [
        "490dea45d00f01847ebebd007685d564aaf2cd98",
        "c59765042f53a79a7a65585042ff463b69cb248c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 15:34:05 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 15:34:05 2009 +0100"
      },
      "message": "Merge commit \u0027v2.6.29-rc1\u0027 into timers/urgent\n"
    },
    {
      "commit": "c40f6f8bbc4cbd2902671aacd587400ddca62627",
      "tree": "a991e5521e10943f4457fb7f494e00aec75cc7df",
      "parents": [
        "1a7d0f0bec4be078ce2cfb11538c0f4ffbbed8e5",
        "cb6ff208076b5f434db1b8c983429269d719cef5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 14:00:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 14:00:58 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-nommu\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-nommu:\n  NOMMU: Support XIP on initramfs\n  NOMMU: Teach kobjsize() about VMA regions.\n  FLAT: Don\u0027t attempt to expand the userspace stack to fill the space allocated\n  FDPIC: Don\u0027t attempt to expand the userspace stack to fill the space allocated\n  NOMMU: Improve procfs output using per-MM VMAs\n  NOMMU: Make mmap allocation page trimming behaviour configurable.\n  NOMMU: Make VMAs per MM as for MMU-mode linux\n  NOMMU: Delete askedalloc and realalloc variables\n  NOMMU: Rename ARM\u0027s struct vm_region\n  NOMMU: Fix cleanup handling in ramfs_nommu_get_umapped_area()\n"
    },
    {
      "commit": "61bce0f1371cfff497fe85594fd39d1a0b15ebe1",
      "tree": "97871c4148856e39ffcc8a6ffec89495018729f1",
      "parents": [
        "f9fb860f67b9542cd78d1558dec7058092b57d8e"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 07 18:08:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:12 2009 -0800"
      },
      "message": "pid: generalize task_active_pid_ns\n\nCurrently task_active_pid_ns is not safe to call after a task becomes a\nzombie and exit_task_namespaces is called, as nsproxy becomes NULL.  By\nreading the pid namespace from the pid of the task we can trivially solve\nthis problem at the cost of one extra memory read in what should be the\nsame cacheline as we read the namespace from.\n\nWhen moving things around I have made task_active_pid_ns out of line\nbecause keeping it in pid_namespace.h would require adding includes of\npid.h and sched.h that I don\u0027t think we want.\n\nThis change does make task_active_pid_ns unsafe to call during\ncopy_process until we attach a pid on the task_struct which seems to be a\nreasonable trade off.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Bastian Blank \u003cbastian@waldi.eu.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8feae13110d60cc6287afabc2887366b0eb226c2",
      "tree": "b3188986faab70e753e00ea8670a11ba8ec844c0",
      "parents": [
        "41836382ebb415d68d3ebc4525e78e871fe58baf"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jan 08 12:04:47 2009 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jan 08 12:04:47 2009 +0000"
      },
      "message": "NOMMU: Make VMAs per MM as for MMU-mode linux\n\nMake VMAs per mm_struct as for MMU-mode linux.  This solves two problems:\n\n (1) In SYSV SHM where nattch for a segment does not reflect the number of\n     shmat\u0027s (and forks) done.\n\n (2) In mmap() where the VMA\u0027s vm_mm is set to point to the parent mm by an\n     exec\u0027ing process when VM_EXECUTABLE is specified, regardless of the fact\n     that a VMA might be shared and already have its vm_mm assigned to another\n     process or a dead process.\n\nA new struct (vm_region) is introduced to track a mapped region and to remember\nthe circumstances under which it may be shared and the vm_list_struct structure\nis discarded as it\u0027s no longer required.\n\nThis patch makes the following additional changes:\n\n (1) Regions are now allocated with alloc_pages() rather than kmalloc() and\n     with no recourse to __GFP_COMP, so the pages are not composite.  Instead,\n     each page has a reference on it held by the region.  Anything else that is\n     interested in such a page will have to get a reference on it to retain it.\n     When the pages are released due to unmapping, each page is passed to\n     put_page() and will be freed when the page usage count reaches zero.\n\n (2) Excess pages are trimmed after an allocation as the allocation must be\n     made as a power-of-2 quantity of pages.\n\n (3) VMAs are added to the parent MM\u0027s R/B tree and mmap lists.  As an MM may\n     end up with overlapping VMAs within the tree, the VMA struct address is\n     appended to the sort key.\n\n (4) Non-anonymous VMAs are now added to the backing inode\u0027s prio list.\n\n (5) Holes may be punched in anonymous VMAs with munmap(), releasing parts of\n     the backing region.  The VMA and region structs will be split if\n     necessary.\n\n (6) sys_shmdt() only releases one attachment to a SYSV IPC shared memory\n     segment instead of all the attachments at that addresss.  Multiple\n     shmat()\u0027s return the same address under NOMMU-mode instead of different\n     virtual addresses as under MMU-mode.\n\n (7) Core dumping for ELF-FDPIC requires fewer exceptions for NOMMU-mode.\n\n (8) /proc/maps is now the global list of mapped regions, and may list bits\n     that aren\u0027t actually mapped anywhere.\n\n (9) /proc/meminfo gains a line (tagged \"MmapCopy\") that indicates the amount\n     of RAM currently allocated by mmap to hold mappable regions that can\u0027t be\n     mapped directly.  These are copies of the backing device or file if not\n     anonymous.\n\nThese changes make NOMMU mode more similar to MMU mode.  The downside is that\nNOMMU mode requires some extra memory to track things over NOMMU without this\npatch (VMAs are no longer shared, and there are now region structs).\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nTested-by: Mike Frysinger \u003cvapier.adi@gmail.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "490dea45d00f01847ebebd007685d564aaf2cd98",
      "tree": "a1f559fd497b10c21479b378ffb262d517cb627b",
      "parents": [
        "ede6f5aea054d3fb67c78857f7abdee602302043"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Nov 24 17:06:57 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 07 18:52:44 2009 +0100"
      },
      "message": "itimers: remove the per-cpu-ish-ness\n\nEither we bounce once cacheline per cpu per tick, yielding n^2 bounces\nor we just bounce a single..\n\nAlso, using per-cpu allocations for the thread-groups complicates the\nper-cpu allocator in that its currently aimed to be a fixed sized\nallocator and the only possible extention to that would be vmap based,\nwhich is seriously constrained on 32 bit archs.\n\nSo making the per-cpu memory requirement depend on the number of\nprocesses is an issue.\n\nLastly, it didn\u0027t deal with cpu-hotplug, although admittedly that might\nbe fixable.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4cb0e11b15d2badad455fcd538af0cccf05dc012",
      "tree": "49975df37debdb274aa1b9b09a127ad217a405c0",
      "parents": [
        "9cd4fd10437dda6b520cb1410b28f36967a34de8"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Tue Jan 06 14:42:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:29 2009 -0800"
      },
      "message": "coredump_filter: permit changing of the default filter\n\nIntroduce a new kernel parameter `coredump_filter\u0027.  Setting a value to\nthis parameter causes the default bitmask of coredump_filter to be\nchanged.\n\nIt is useful for users to change coredump_filter settings for the whole\nsystem at boot time.  Without this parameter, users have to change\ncoredump_filter settings for each /proc/\u003cpid\u003e/ in an initializing script.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Roland McGrath \u003croland@redhat.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": "60348802e9cb137ee86590c3e4c57c1ec2e8fc69",
      "tree": "0c8fb3de7410898643f992081650a307f17dea28",
      "parents": [
        "f1883f86dea84fe47a71a39fc1afccc005915ed8"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Jan 06 14:40:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:11 2009 -0800"
      },
      "message": "fork.c: cleanup for copy_sighand()\n\nCheck CLONE_SIGHAND only is enough, because combination of CLONE_THREAD and\nCLONE_SIGHAND is already done in copy_process().\n\nImpact: cleanup, no functionality changed\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\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": "a9de18eb761f7c1c860964b2e5addc1a35c7e861",
      "tree": "886e75fdfd09690cd262ca69cb7f5d1d42b48602",
      "parents": [
        "b2aaf8f74cdc84a9182f6cabf198b7763bcb9d40",
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 31 08:31:57 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 31 08:31:57 2008 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into stackprotector\n\nConflicts:\n\tarch/x86/include/asm/pda.h\n\tkernel/fork.c\n"
    },
    {
      "commit": "abf137dd7712132ee56d5b3143c2ff61a72a5faa",
      "tree": "8334f03c598343bb93340f081fcde5ba659b440b",
      "parents": [
        "392ddc32982a5c661dd90dd49a3cb37f1c68b782"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 09 08:11:22 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:50 2008 +0100"
      },
      "message": "aio: make the lookup_ioctx() lockless\n\nThe mm-\u003eioctx_list is currently protected by a reader-writer lock,\nso we always grab that lock on the read side for doing ioctx\nlookups. As the workload is extremely reader biased, turn this into\nan rcu hlist so we can make lookup_ioctx() lockless. Get rid of\nthe rwlock and use a spinlock for providing update side exclusion.\n\nThere\u0027s usually only 1 entry on this list, so it doesn\u0027t make sense\nto look into fancier data structures.\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b0f4b285d7ed174804658539129a834270f4829a",
      "tree": "be7f8dca58075aba2c6a137fcfd4d44c5c333efc",
      "parents": [
        "be9c5ae4eeec2e85527e95647348b8ea4eb25128",
        "5250d329e38cdf7580faeb9c53c17d3588d7d19c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:21:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:21:10 2008 -0800"
      },
      "message": "Merge branch \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (241 commits)\n  sched, trace: update trace_sched_wakeup()\n  tracing/ftrace: don\u0027t trace on early stage of a secondary cpu boot, v3\n  Revert \"x86: disable X86_PTRACE_BTS\"\n  ring-buffer: prevent false positive warning\n  ring-buffer: fix dangling commit race\n  ftrace: enable format arguments checking\n  x86, bts: memory accounting\n  x86, bts: add fork and exit handling\n  ftrace: introduce tracing_reset_online_cpus() helper\n  tracing: fix warnings in kernel/trace/trace_sched_switch.c\n  tracing: fix warning in kernel/trace/trace.c\n  tracing/ring-buffer: remove unused ring_buffer size\n  trace: fix task state printout\n  ftrace: add not to regex on filtering functions\n  trace: better use of stack_trace_enabled for boot up code\n  trace: add a way to enable or disable the stack tracer\n  x86: entry_64 - introduce FTRACE_ frame macro v2\n  tracing/ftrace: add the printk-msg-only option\n  tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp()\n  x86, bts: correctly report invalid bts records\n  ...\n\nFixed up trivial conflict in scripts/recordmcount.pl due to SH bits\nbeing already partly merged by the SH merge.\n"
    },
    {
      "commit": "cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db",
      "tree": "90d1093131d2a3543a8b3b1f3364e7c6f4081a93",
      "parents": [
        "4a6908a3a050aacc9c3a2f36b276b46c0629ad91",
        "74192246910ff4fb95309ba1a683215644beeb62"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "message": "Merge branch \u0027next\u0027 into for-linus\n"
    },
    {
      "commit": "bf53de907dfdaac178c92d774aae7370d7b97d20",
      "tree": "738a07a8b4b22f7bb8ec2029c9ea9c635db6c62a",
      "parents": [
        "30cd324e9787ccc9a5ede59742d5409857550692"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Dec 19 15:10:24 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Dec 20 09:15:46 2008 +0100"
      },
      "message": "x86, bts: add fork and exit handling\n\nImpact: introduce new ptrace facility\n\nAdd arch_ptrace_untrace() function that is called when the tracer\ndetaches (either voluntarily or when the tracing task dies);\nptrace_disable() is only called on a voluntary detach.\n\nAdd ptrace_fork() and arch_ptrace_fork(). They are called when a\ntraced task is forked.\n\nClear DS and BTS related fields on fork.\n\nRelease DS resources and reclaim memory in ptrace_untrace(). This\nreleases resources already when the tracing task dies. We used to do\nthat when the traced task dies.\n\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "30cd324e9787ccc9a5ede59742d5409857550692",
      "tree": "e53027e0283119de0ef4c3a431b1d20cd43003fb",
      "parents": [
        "c71dd42db2c6f1637b92502a214587431c1a6ad2",
        "6d102bc68f3dd2ae0e305b09170b1751aa67baeb",
        "3d9101e92529e1ff6014f95a69afc82f37b9b13a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 09:42:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 09:42:40 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/ring-buffer\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n\nConflicts:\n\tinclude/linux/ftrace.h\n"
    },
    {
      "commit": "b88ed20594db2c685555b68c52b693b75738b2f5",
      "tree": "a8edcf975fb8437692bf670841859d4ac9fbd2f0",
      "parents": [
        "f4fd2c5b6f691ff71614acbc28461b3c1488c81b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Dec 10 20:48:52 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 14:40:45 2008 -0800"
      },
      "message": "fix mapping_writably_mapped()\n\nLee Schermerhorn noticed yesterday that I broke the mapping_writably_mapped\ntest in 2.6.7!  Bad bad bug, good good find.\n\nThe i_mmap_writable count must be incremented for VM_SHARED (just as\ni_writecount is for VM_DENYWRITE, but while holding the i_mmap_lock)\nwhen dup_mmap() copies the vma for fork: it has its own more optimal\nversion of __vma_link_file(), and I missed this out.  So the count\nwas later going down to 0 (dangerous) when one end unmapped, then\nwrapping negative (inefficient) when the other end unmapped.\n\nThe only impact on x86 would have been that setting a mandatory lock on\na file which has at some time been opened O_RDWR and mapped MAP_SHARED\n(but not necessarily PROT_WRITE) across a fork, might fail with -EAGAIN\nwhen it should succeed, or succeed when it should fail.\n\nBut those architectures which rely on flush_dcache_page() to flush\nuserspace modifications back into the page before the kernel reads it,\nmay in some cases have skipped the flush after such a fork - though any\nrepetitive test will soon wrap the count negative, in which case it will\nflush_dcache_page() unnecessarily.\n\nFix would be a two-liner, but mapping variable added, and comment moved.\n\nReported-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a64e64944f4b8ce3288519555dbaa0232414b8ac",
      "tree": "6b37f5444c49379580b6b4fead84a75ca474d0ab",
      "parents": [
        "a3f07114e3359fb98683069ae397220e8992a24a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 12 18:37:41 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 02:27:38 2008 -0500"
      },
      "message": "[PATCH] return records for fork() both to child and parent\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7657d90497f98426af17f0ac633a9b335bb7a8fb",
      "tree": "6344dc4715a85383f6492a4102ae406c6b86d79d",
      "parents": [
        "c37bbb0fdcc01610fd55604eb6927210a1d20044"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Wed Dec 03 13:17:33 2008 -0600"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Dec 08 09:16:27 2008 +1100"
      },
      "message": "user namespaces: require cap_set{ug}id for CLONE_NEWUSER\n\nWhile ideally CLONE_NEWUSER will eventually require no\nprivilege, the required permission checks are currently\nnot there.  As a result, CLONE_NEWUSER has the same effect\nas a setuid(0)+setgroups(1,\"0\").  While we already require\nCAP_SYS_ADMIN, requiring CAP_SETUID and CAP_SETGID seems\nappropriate.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "e8e1abe92fd7ea9d823a3aaf81d10e2cba593b6b",
      "tree": "9ddeaf43558b2ad13c6b4758b17b84781f0217a7",
      "parents": [
        "0a37119d963e876ca86912497346ec50dea2541b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Dec 03 11:04:51 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 03 17:15:03 2008 +0100"
      },
      "message": "ftrace: fix race in function graph during fork\n\nImpact: graph tracer race/crash fix\n\nThere is a nasy race in startup of a new process running the\nfunction graph tracer. In fork.c:\n\n\ttotal_forks++;\n\tspin_unlock(\u0026current-\u003esighand-\u003esiglock);\n\twrite_unlock_irq(\u0026tasklist_lock);\n\tftrace_graph_init_task(p);\n\tproc_fork_connector(p);\n\tcgroup_post_fork(p);\n\treturn p;\n\nThe new task is free to run as soon as the tasklist_lock is released.\nThis is before the ftrace_graph_init_task. If the task does run\nit will be using the same ret_stack and curr_ret_stack as the parent.\nThis will cause crashes that are difficult to debug.\n\nThis patch moves the ftrace_graph_init_task to just after the alloc_pid\ncode. This fixes the above race.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fb52607afcd0629776f1dc9e657647ceae81dd50",
      "tree": "7bf43b41ff8510d3098c089913cce56a9049f0fd",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 25 21:07:04 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 01:59:45 2008 +0100"
      },
      "message": "tracing/function-return-tracer: change the name into function-graph-tracer\n\nImpact: cleanup\n\nThis patch changes the name of the \"return function tracer\" into\nfunction-graph-tracer which is a more suitable name for a tracing\nwhich makes one able to retrieve the ordered call stack during\nthe code flow.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "18b6e0414e42d95183f07d8177e3ff0241abd825",
      "tree": "91ca2f2d442055e31eb7bb551bf7060f3f4c4cc7",
      "parents": [
        "9789cfe22e5d7bc10cad841a4ea96ecedb34b267"
      ],
      "author": {
        "name": "Serge Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Wed Oct 15 16:38:45 2008 -0500"
      },
      "committer": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Nov 24 18:57:41 2008 -0500"
      },
      "message": "User namespaces: set of cleanups (v2)\n\nThe user_ns is moved from nsproxy to user_struct, so that a struct\ncred by itself is sufficient to determine access (which it otherwise\nwould not be).  Corresponding ecryptfs fixes (by David Howells) are\nhere as well.\n\nFix refcounting.  The following rules now apply:\n        1. The task pins the user struct.\n        2. The user struct pins its user namespace.\n        3. The user namespace pins the struct user which created it.\n\nUser namespaces are cloned during copy_creds().  Unsharing a new user_ns\nis no longer possible.  (We could re-add that, but it\u0027ll cause code\nduplication and doesn\u0027t seem useful if PAM doesn\u0027t need to clone user\nnamespaces).\n\nWhen a user namespace is created, its first user (uid 0) gets empty\nkeyrings and a clean group_info.\n\nThis incorporates a previous patch by David Howells.  Here\nis his original patch description:\n\n\u003eI suggest adding the attached incremental patch.  It makes the following\n\u003echanges:\n\u003e\n\u003e (1) Provides a current_user_ns() macro to wrap accesses to current\u0027s user\n\u003e     namespace.\n\u003e\n\u003e (2) Fixes eCryptFS.\n\u003e\n\u003e (3) Renames create_new_userns() to create_user_ns() to be more consistent\n\u003e     with the other associated functions and because the \u0027new\u0027 in the name is\n\u003e     superfluous.\n\u003e\n\u003e (4) Moves the argument and permission checks made for CLONE_NEWUSER to the\n\u003e     beginning of do_fork() so that they\u0027re done prior to making any attempts\n\u003e     at allocation.\n\u003e\n\u003e (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds\n\u003e     to fill in rather than have it return the new root user.  I don\u0027t imagine\n\u003e     the new root user being used for anything other than filling in a cred\n\u003e     struct.\n\u003e\n\u003e     This also permits me to get rid of a get_uid() and a free_uid(), as the\n\u003e     reference the creds were holding on the old user_struct can just be\n\u003e     transferred to the new namespace\u0027s creator pointer.\n\u003e\n\u003e (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under\n\u003e     preparation rather than doing it in copy_creds().\n\u003e\n\u003eDavid\n\n\u003eSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n\nChangelog:\n\tOct 20: integrate dhowells comments\n\t\t1. leave thread_keyring alone\n\t\t2. use current_user_ns() in set_user()\n\nSigned-off-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\n"
    },
    {
      "commit": "65afa5e603d507014580ead016ec887b49e1afa6",
      "tree": "0ee309e4193e90587b2febda09143891e0591cdc",
      "parents": [
        "eae849ca034c7f1015f0a6f17421ebc737f0a069"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 23 18:43:39 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 22:34:02 2008 +0100"
      },
      "message": "tracing/function-return-tracer: free the return stack on free_task()\n\nImpact: avoid losing some traces when a task is freed\n\ndo_exit() is not the last function called when a task finishes.\nThere are still some functions which are to be called such as\nree_task().  So we delay the freeing of the return stack to the\nlast moment.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "82f60f0bc854aada696f27d863c03bef91f1509d",
      "tree": "521fbccfc12f6c8a36f261b20eacbc84a4a31add",
      "parents": [
        "f201ae2356c74bcae130b2177b3dca903ea98071"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 09:18:56 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 09:19:35 2008 +0100"
      },
      "message": "tracing/function-return-tracer: clean up task start/exit callbacks\n\nImpact: cleanup\n\nEliminate #ifdefs in core code by using empty inline functions.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f201ae2356c74bcae130b2177b3dca903ea98071",
      "tree": "c4b1b43fbe0a4594cb86749b2e7098fe15eb86ba",
      "parents": [
        "a0a70c735ef714fe1b6777b571630c3d50c7b008"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 23 06:22:56 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 09:17:26 2008 +0100"
      },
      "message": "tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically\n\nImpact: use deeper function tracing depth safely\n\nSome tests showed that function return tracing needed a more deeper depth\nof function calls. But it could be unsafe to store these return addresses\nto the stack.\n\nSo these arrays will now be allocated dynamically into task_struct of current\nonly when the tracer is activated.\n\nTypical scheme when tracer is activated:\n- allocate a return stack for each task in global list.\n- fork: allocate the return stack for the newly created task\n- exit: free return stack of current\n- idle init: same as fork\n\nI chose a default depth of 50. I don\u0027t have overruns anymore.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9676e73a9e0cbdc521e1ebf4e13e6e5aada34247",
      "tree": "b5ea1cace6c4f2f57fcebfc42418b7f53fee84e5",
      "parents": [
        "5a209c2d58e70f9bc415b9cdf0e3b9aaefb70371",
        "86fa2f60674540df0b34f5c547ed0c1cf3a8f212",
        "6d5b43a67accf6793ed259f6534b4bd53b1e5696"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 19 10:04:25 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 19 10:04:25 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n\nConflicts:\n\tkernel/trace/ftrace.c\n\n[ We conflicted here because we backported a few fixes to\n  tracing/urgent - which has different internal APIs. ]\n"
    },
    {
      "commit": "f3a5c547012a09f38f7c27b17a8e3150b69cd259",
      "tree": "4d1d47382a4a445fc7ef7431bcf5d06b7cca8539",
      "parents": [
        "e50a906e0200084f04f8f3b7c3a14b0442d1347f",
        "4e14e833ac3b97a4aa8803eea49f899adc5bb5f4"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 18 18:52:37 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 18 18:52:37 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/cifs/misc.c\n\nMerge to resolve above, per the patch below.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n\ndiff --cc fs/cifs/misc.c\nindex ec36410,addd1dc..0000000\n--- a/fs/cifs/misc.c\n+++ b/fs/cifs/misc.c\n@@@ -347,13 -338,13 +338,13 @@@ header_assemble(struct smb_hdr *buffer\n  \t\t/*  BB Add support for establishing new tCon and SMB Session  */\n  \t\t/*      with userid/password pairs found on the smb session   */\n  \t\t/*\tfor other target tcp/ip addresses \t\tBB    */\n -\t\t\t\tif (current-\u003efsuid !\u003d treeCon-\u003eses-\u003elinux_uid) {\n +\t\t\t\tif (current_fsuid() !\u003d treeCon-\u003eses-\u003elinux_uid) {\n  \t\t\t\t\tcFYI(1, (\"Multiuser mode and UID \"\n  \t\t\t\t\t\t \"did not match tcon uid\"));\n- \t\t\t\t\tread_lock(\u0026GlobalSMBSeslock);\n- \t\t\t\t\tlist_for_each(temp_item, \u0026GlobalSMBSessionList) {\n- \t\t\t\t\t\tses \u003d list_entry(temp_item, struct cifsSesInfo, cifsSessionList);\n+ \t\t\t\t\tread_lock(\u0026cifs_tcp_ses_lock);\n+ \t\t\t\t\tlist_for_each(temp_item, \u0026treeCon-\u003eses-\u003eserver-\u003esmb_ses_list) {\n+ \t\t\t\t\t\tses \u003d list_entry(temp_item, struct cifsSesInfo, smb_ses_list);\n -\t\t\t\t\t\tif (ses-\u003elinux_uid \u003d\u003d current-\u003efsuid) {\n +\t\t\t\t\t\tif (ses-\u003elinux_uid \u003d\u003d current_fsuid()) {\n  \t\t\t\t\t\t\tif (ses-\u003eserver \u003d\u003d treeCon-\u003eses-\u003eserver) {\n  \t\t\t\t\t\t\t\tcFYI(1, (\"found matching uid substitute right smb_uid\"));\n  \t\t\t\t\t\t\t\tbuffer-\u003eUid \u003d ses-\u003eSuid;\n"
    },
    {
      "commit": "7e066fb870fcd1025ec3ba7bbde5d541094f4ce1",
      "tree": "52acda06de25c029b9834110d7bf6b4abc50353b",
      "parents": [
        "32f85742778dfc2c74975cf0b9f5bdb13470cb32"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:47 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:36 2008 +0100"
      },
      "message": "tracepoints: add DECLARE_TRACE() and DEFINE_TRACE()\n\nImpact: API *CHANGE*. Must update all tracepoint users.\n\nAdd DEFINE_TRACE() to tracepoints to let them declare the tracepoint\nstructure in a single spot for all the kernel. It helps reducing memory\nconsumption, especially when declaring a lot of tracepoints, e.g. for\nkmalloc tracing.\n\n*API CHANGE WARNING*: now, DECLARE_TRACE() must be used in headers for\ntracepoint declarations rather than DEFINE_TRACE(). This is the sane way\nto do it. The name previously used was misleading.\n\nUpdates scheduler instrumentation to follow this API change.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8141c7f3e7aee618312fa1c15109e1219de784a7",
      "tree": "25513fc1c260af053fb9facf92df5b59bfe74c3a",
      "parents": [
        "9c7c354645535555785eb937dd46388b55e690d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 10:20:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 10:20:36 2008 -0800"
      },
      "message": "Move \"exit_robust_list\" into mm_release()\n\nWe don\u0027t want to get rid of the futexes just at exit() time, we want to\ndrop them when doing an execve() too, since that gets rid of the\nprevious VM image too.\n\nDoing it at mm_release() time means that we automatically always do it\nwhen we disassociate a VM map from the task.\n\nReported-by: pageexec@freemail.hu\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Brad Spengler \u003cspender@grsecurity.net\u003e\nCc: Alex Efros \u003cpowerman@powerman.name\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b11a1decef07c19443d24ae926982bc8ec9f4c0",
      "tree": "b6555f0e5b07f4b2badd332a0a900b974920c49d",
      "parents": [
        "98870ab0a5a3f1822aee681d2997017e1c87d026"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:26 2008 +1100"
      },
      "message": "CRED: Differentiate objective and effective subjective credentials on a task\n\nDifferentiate the objective and real subjective credentials from the effective\nsubjective credentials on a task by introducing a second credentials pointer\ninto the task_struct.\n\ntask_struct::real_cred then refers to the objective and apparent real\nsubjective credentials of a task, as perceived by the other tasks in the\nsystem.\n\ntask_struct::cred then refers to the effective subjective credentials of a\ntask, as used by that task when it\u0027s actually running.  These are not visible\nto the other tasks in the system.\n\n__task_cred(task) then refers to the objective/real credentials of the task in\nquestion.\n\ncurrent_cred() refers to the effective subjective credentials of the current\ntask.\n\nprepare_creds() uses the objective creds as a base and commit_creds() changes\nboth pointers in the task_struct (indeed commit_creds() requires them to be the\nsame).\n\noverride_creds() and revert_creds() change the subjective creds pointer only,\nand the former returns the old subjective creds.  These are used by NFSD,\nfaccessat() and do_coredump(), and will by used by CacheFiles.\n\nIn SELinux, current_has_perm() is provided as an alternative to\ntask_has_perm().  This uses the effective subjective context of current,\nwhereas task_has_perm() uses the objective/real context of the subject.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "d84f4f992cbd76e8f39c488cf0c5d123843923b1",
      "tree": "fc4a0349c42995715b93d0f7a3c78e9ea9b3f36e",
      "parents": [
        "745ca2475a6ac596e3d8d37c2759c0fbe2586227"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "message": "CRED: Inaugurate COW credentials\n\nInaugurate copy-on-write credentials management.  This uses RCU to manage the\ncredentials pointer in the task_struct with respect to accesses by other tasks.\nA process may only modify its own credentials, and so does not need locking to\naccess or modify its own credentials.\n\nA mutex (cred_replace_mutex) is added to the task_struct to control the effect\nof PTRACE_ATTACHED on credential calculations, particularly with respect to\nexecve().\n\nWith this patch, the contents of an active credentials struct may not be\nchanged directly; rather a new set of credentials must be prepared, modified\nand committed using something like the following sequence of events:\n\n\tstruct cred *new \u003d prepare_creds();\n\tint ret \u003d blah(new);\n\tif (ret \u003c 0) {\n\t\tabort_creds(new);\n\t\treturn ret;\n\t}\n\treturn commit_creds(new);\n\nThere are some exceptions to this rule: the keyrings pointed to by the active\ncredentials may be instantiated - keyrings violate the COW rule as managing\nCOW keyrings is tricky, given that it is possible for a task to directly alter\nthe keys in a keyring in use by another task.\n\nTo help enforce this, various pointers to sets of credentials, such as those in\nthe task_struct, are declared const.  The purpose of this is compile-time\ndiscouragement of altering credentials through those pointers.  Once a set of\ncredentials has been made public through one of these pointers, it may not be\nmodified, except under special circumstances:\n\n  (1) Its reference count may incremented and decremented.\n\n  (2) The keyrings to which it points may be modified, but not replaced.\n\nThe only safe way to modify anything else is to create a replacement and commit\nusing the functions described in Documentation/credentials.txt (which will be\nadded by a later patch).\n\nThis patch and the preceding patches have been tested with the LTP SELinux\ntestsuite.\n\nThis patch makes several logical sets of alteration:\n\n (1) execve().\n\n     This now prepares and commits credentials in various places in the\n     security code rather than altering the current creds directly.\n\n (2) Temporary credential overrides.\n\n     do_coredump() and sys_faccessat() now prepare their own credentials and\n     temporarily override the ones currently on the acting thread, whilst\n     preventing interference from other threads by holding cred_replace_mutex\n     on the thread being dumped.\n\n     This will be replaced in a future patch by something that hands down the\n     credentials directly to the functions being called, rather than altering\n     the task\u0027s objective credentials.\n\n (3) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_capset_check(), -\u003ecapset_check()\n     (*) security_capset_set(), -\u003ecapset_set()\n\n     \t Removed in favour of security_capset().\n\n     (*) security_capset(), -\u003ecapset()\n\n     \t New.  This is passed a pointer to the new creds, a pointer to the old\n     \t creds and the proposed capability sets.  It should fill in the new\n     \t creds or return an error.  All pointers, barring the pointer to the\n     \t new creds, are now const.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n\n     \t Changed; now returns a value, which will cause the process to be\n     \t killed if it\u0027s an error.\n\n     (*) security_task_alloc(), -\u003etask_alloc_security()\n\n     \t Removed in favour of security_prepare_creds().\n\n     (*) security_cred_free(), -\u003ecred_free()\n\n     \t New.  Free security data attached to cred-\u003esecurity.\n\n     (*) security_prepare_creds(), -\u003ecred_prepare()\n\n     \t New. Duplicate any security data attached to cred-\u003esecurity.\n\n     (*) security_commit_creds(), -\u003ecred_commit()\n\n     \t New. Apply any security effects for the upcoming installation of new\n     \t security by commit_creds().\n\n     (*) security_task_post_setuid(), -\u003etask_post_setuid()\n\n     \t Removed in favour of security_task_fix_setuid().\n\n     (*) security_task_fix_setuid(), -\u003etask_fix_setuid()\n\n     \t Fix up the proposed new credentials for setuid().  This is used by\n     \t cap_set_fix_setuid() to implicitly adjust capabilities in line with\n     \t setuid() changes.  Changes are made to the new credentials, rather\n     \t than the task itself as in security_task_post_setuid().\n\n     (*) security_task_reparent_to_init(), -\u003etask_reparent_to_init()\n\n     \t Removed.  Instead the task being reparented to init is referred\n     \t directly to init\u0027s credentials.\n\n\t NOTE!  This results in the loss of some state: SELinux\u0027s osid no\n\t longer records the sid of the thread that forked it.\n\n     (*) security_key_alloc(), -\u003ekey_alloc()\n     (*) security_key_permission(), -\u003ekey_permission()\n\n     \t Changed.  These now take cred pointers rather than task pointers to\n     \t refer to the security context.\n\n (4) sys_capset().\n\n     This has been simplified and uses less locking.  The LSM functions it\n     calls have been merged.\n\n (5) reparent_to_kthreadd().\n\n     This gives the current thread the same credentials as init by simply using\n     commit_thread() to point that way.\n\n (6) __sigqueue_alloc() and switch_uid()\n\n     __sigqueue_alloc() can\u0027t stop the target task from changing its creds\n     beneath it, so this function gets a reference to the currently applicable\n     user_struct which it then passes into the sigqueue struct it returns if\n     successful.\n\n     switch_uid() is now called from commit_creds(), and possibly should be\n     folded into that.  commit_creds() should take care of protecting\n     __sigqueue_alloc().\n\n (7) [sg]et[ug]id() and co and [sg]et_current_groups.\n\n     The set functions now all use prepare_creds(), commit_creds() and\n     abort_creds() to build and check a new set of credentials before applying\n     it.\n\n     security_task_set[ug]id() is called inside the prepared section.  This\n     guarantees that nothing else will affect the creds until we\u0027ve finished.\n\n     The calling of set_dumpable() has been moved into commit_creds().\n\n     Much of the functionality of set_user() has been moved into\n     commit_creds().\n\n     The get functions all simply access the data directly.\n\n (8) security_task_prctl() and cap_task_prctl().\n\n     security_task_prctl() has been modified to return -ENOSYS if it doesn\u0027t\n     want to handle a function, or otherwise return the return value directly\n     rather than through an argument.\n\n     Additionally, cap_task_prctl() now prepares a new set of credentials, even\n     if it doesn\u0027t end up using it.\n\n (9) Keyrings.\n\n     A number of changes have been made to the keyrings code:\n\n     (a) switch_uid_keyring(), copy_keys(), exit_keys() and suid_keys() have\n     \t all been dropped and built in to the credentials functions directly.\n     \t They may want separating out again later.\n\n     (b) key_alloc() and search_process_keyrings() now take a cred pointer\n     \t rather than a task pointer to specify the security context.\n\n     (c) copy_creds() gives a new thread within the same thread group a new\n     \t thread keyring if its parent had one, otherwise it discards the thread\n     \t keyring.\n\n     (d) The authorisation key now points directly to the credentials to extend\n     \t the search into rather pointing to the task that carries them.\n\n     (e) Installing thread, process or session keyrings causes a new set of\n     \t credentials to be created, even though it\u0027s not strictly necessary for\n     \t process or session keyrings (they\u0027re shared).\n\n(10) Usermode helper.\n\n     The usermode helper code now carries a cred struct pointer in its\n     subprocess_info struct instead of a new session keyring pointer.  This set\n     of credentials is derived from init_cred and installed on the new process\n     after it has been cloned.\n\n     call_usermodehelper_setup() allocates the new credentials and\n     call_usermodehelper_freeinfo() discards them if they haven\u0027t been used.  A\n     special cred function (prepare_usermodeinfo_creds()) is provided\n     specifically for call_usermodehelper_setup() to call.\n\n     call_usermodehelper_setkeys() adjusts the credentials to sport the\n     supplied keyring as the new session keyring.\n\n(11) SELinux.\n\n     SELinux has a number of changes, in addition to those to support the LSM\n     interface changes mentioned above:\n\n     (a) selinux_setprocattr() no longer does its check for whether the\n     \t current ptracer can access processes with the new SID inside the lock\n     \t that covers getting the ptracer\u0027s SID.  Whilst this lock ensures that\n     \t the check is done with the ptracer pinned, the result is only valid\n     \t until the lock is released, so there\u0027s no point doing it inside the\n     \t lock.\n\n(12) is_single_threaded().\n\n     This function has been extracted from selinux_setprocattr() and put into\n     a file of its own in the lib/ directory as join_session_keyring() now\n     wants to use it too.\n\n     The code in SELinux just checked to see whether a task shared mm_structs\n     with other tasks (CLONE_VM), but that isn\u0027t good enough.  We really want\n     to know if they\u0027re part of the same thread group (CLONE_THREAD).\n\n(13) nfsd.\n\n     The NFS server daemon now has to use the COW credentials to set the\n     credentials it is going to use.  It really needs to pass the credentials\n     down to the functions it calls, but it can\u0027t do that until other patches\n     in this series have been applied.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "bb952bb98a7e479262c7eb25d5592545a3af147d",
      "tree": "9a2158c07a22a5fbddcec412944d2e7534eecc8f",
      "parents": [
        "275bb41e9d058fbb327e7642f077e1beaeac162e"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:20 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:20 2008 +1100"
      },
      "message": "CRED: Separate per-task-group keyrings from signal_struct\n\nSeparate per-task-group keyrings from signal_struct and dangle their anchor\nfrom the cred struct rather than the signal_struct.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "f1752eec6145c97163dbce62d17cf5d928e28a27",
      "tree": "16bc51166d38815092de36a461b845b0b4b522f9",
      "parents": [
        "b6dff3ec5e116e3af6f537d4caedcad6b9e5082a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:17 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:17 2008 +1100"
      },
      "message": "CRED: Detach the credentials from task_struct\n\nDetach the credentials from task_struct, duplicating them in copy_process()\nand releasing them in __put_task_struct().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b6dff3ec5e116e3af6f537d4caedcad6b9e5082a",
      "tree": "9e76f972eb7ce9b84e0146c8e4126a3f86acb428",
      "parents": [
        "15a2460ed0af7538ca8e6c610fe607a2cd9da142"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "message": "CRED: Separate task security context from task_struct\n\nSeparate the task security context from task_struct.  At this point, the\nsecurity data is temporarily embedded in the task_struct with two pointers\npointing to it.\n\nNote that the Alpha arch is altered as it refers to (E)UID and (E)GID in\nentry.S via asm-offsets.\n\nWith comment fixes Signed-off-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "268a3dcfea2077fca60d3715caa5c96f9b5e6ea7",
      "tree": "c2232774508424e677e27f296090a68c775e4669",
      "parents": [
        "c4bd822e7b12a9008241d76db45b665f2fef180c",
        "592aa999d6a272856c9bfbdaac0cfba1bb37c24c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 22 09:48:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 22 09:48:06 2008 +0200"
      },
      "message": "Merge branch \u0027timers/range-hrtimers\u0027 into v28-range-hrtimers-for-linus-v2\n\nConflicts:\n\n\tkernel/time/tick-sched.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "92b29b86fe2e183d44eb467e5e74a5f718ef2e43",
      "tree": "1bac8a1aa11d47322b66d10ec3a370016d843d06",
      "parents": [
        "b9d7ccf56be1ac77b71a284a1c0e6337f9a7aff0",
        "98d9c66ab07471006fd7910cb16453581c41a3e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "message": "Merge branch \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (131 commits)\n  tracing/fastboot: improve help text\n  tracing/stacktrace: improve help text\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix bootgraph.pl initcall name regexp\n  tracing/fastboot: fix issues and improve output of bootgraph.pl\n  tracepoints: synchronize unregister static inline\n  tracepoints: tracepoint_synchronize_unregister()\n  ftrace: make ftrace_test_p6nop disassembler-friendly\n  markers: fix synchronize marker unregister static inline\n  tracing/fastboot: add better resolution to initcall debug/tracing\n  trace: add build-time check to avoid overrunning hex buffer\n  ftrace: fix hex output mode of ftrace\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix printk format typo in boot tracer\n  ftrace: return an error when setting a nonexistent tracer\n  ftrace: make some tracers reentrant\n  ring-buffer: make reentrant\n  ring-buffer: move page indexes into page headers\n  tracing/fastboot: only trace non-module initcalls\n  ftrace: move pc counter in irqtrace\n  ...\n\nManually fix conflicts:\n - init/main.c: initcall tracing\n - kernel/module.c: verbose level vs tracepoints\n - scripts/bootgraph.pl: fallout from cherry-picking commits.\n"
    },
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "651dab4264e4ba0e563f5ff56f748127246e9065",
      "tree": "016630974bdcb00fe529b673f96d389e0fd6dc94",
      "parents": [
        "40b8606253552109815786e5d4b0de98782d31f5",
        "2e532d68a2b3e2aa6b19731501222069735c741c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "message": "Merge commit \u0027linus/master\u0027 into merge-linus\n\nConflicts:\n\n\tarch/x86/kvm/i8254.c\n"
    },
    {
      "commit": "b2aaf8f74cdc84a9182f6cabf198b7763bcb9d40",
      "tree": "53ccb1c2c14751fe69cf93102e76e97021f6df07",
      "parents": [
        "4f962d4d65923d7b722192e729840cfb79af0a5a",
        "278429cff8809958d25415ba0ed32b59866ab1a8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 15 13:46:29 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 15 13:46:29 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into stackprotector\n\nConflicts:\n\tarch/x86/kernel/Makefile\n\tinclude/asm-x86/pda.h\n"
    },
    {
      "commit": "0a16b6075843325dc402edf80c1662838b929aff",
      "tree": "124e49d8c0196f3c6eb7aa09a7c4c3c3157fff7a",
      "parents": [
        "4a0897526bbc5c6ac0df80b16b8c60339e717ae2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Jul 18 12:16:17 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:30:52 2008 +0200"
      },
      "message": "tracing, sched: LTTng instrumentation - scheduler\n\nInstrument the scheduler activity (sched_switch, migration, wakeups,\nwait for a task, signal delivery) and process/thread\ncreation/destruction (fork, exit, kthread stop). Actually, kthread\ncreation is not instrumented in this patch because it is architecture\ndependent. It allows to connect tracers such as ftrace which detects\nscheduling latencies, good/bad scheduler decisions. Tools like LTTng can\nexport this scheduler information along with instrumentation of the rest\nof the kernel activity to perform post-mortem analysis on the scheduler\nactivity.\n\nAbout the performance impact of tracepoints (which is comparable to\nmarkers), even without immediate values optimizations, tests done by\nHideo Aoki on ia64 show no regression. His test case was using hackbench\non a kernel where scheduler instrumentation (about 5 events in code\nscheduler code) was added. See the \"Tracepoints\" patch header for\nperformance result detail.\n\nChangelog :\n\n- Change instrumentation location and parameter to match ftrace\n  instrumentation, previously done with kernel markers.\n\n[ mingo@elte.hu: conflict resolutions ]\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: \u0027Peter Zijlstra\u0027 \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9c9f4ded90a59eee84e15f5fd38c03d60184e112",
      "tree": "925a7f7c30136477b3f8551123fd86b355fd60fb",
      "parents": [
        "348eb12e5598be97400c749d3d93a71856ae0b2b"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Mon Oct 13 10:37:26 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 13 09:51:40 2008 -0700"
      },
      "message": "tty: Add a kref count\n\nIntroduce a kref to the tty structure and use it to protect the tty-\u003esignal\ntty references. For now we don\u0027t introduce it for anything else.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb34d92f643086d546b49cef680f6f305ed84414",
      "tree": "275887040c96971e133fa20d99517c1fcea76415",
      "parents": [
        "5ce73a4a5a4893a1aa4cdeed1b1a5a6de42c43b6"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Fri Sep 12 09:54:39 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 23 13:38:44 2008 +0200"
      },
      "message": "timers: fix itimer/many thread hang, v2\n\nThis is the second resubmission of the posix timer rework patch, posted\na few days ago.\n\nThis includes the changes from the previous resubmittion, which addressed\nOleg Nesterov\u0027s comments, removing the RCU stuff from the patch and\nun-inlining the thread_group_cputime() function for SMP.\n\nIn addition, per Ingo Molnar it simplifies the UP code, consolidating much\nof it with the SMP version and depending on lower-level SMP/UP handling to\ntake care of the differences.\n\nIt also cleans up some UP compile errors, moves the scheduler stats-related\nmacros into kernel/sched_stats.h, cleans up a merge error in\nkernel/fork.c and has a few other minor fixes and cleanups as suggested\nby Oleg and Ingo. Thanks for the review, guys.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "430b5294bd72c085c730e1e4b86580f164d976bf",
      "tree": "28dfbfb725fb11dee371e6955798e0428e087cae",
      "parents": [
        "f06febc96ba8e0af80bcc3eaec0a109e88275fac"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 14 16:33:01 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 14 16:40:11 2008 +0200"
      },
      "message": "timers: fix itimer/many thread hang, fix\n\nfix:\n\n kernel/fork.c:843: error: ‘struct signal_struct’ has no member named ‘sum_sched_runtime’\n kernel/irq/handle.c:117: warning: ‘sparse_irq_lock’ defined but not used\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f06febc96ba8e0af80bcc3eaec0a109e88275fac",
      "tree": "46dba9432ef25d2eae9434ff2df638c7a268c0f1",
      "parents": [
        "6bfb09a1005193be5c81ebac9f3ef85210142650"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Fri Sep 12 09:54:39 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 14 16:25:35 2008 +0200"
      },
      "message": "timers: fix itimer/many thread hang\n\nOverview\n\nThis patch reworks the handling of POSIX CPU timers, including the\nITIMER_PROF, ITIMER_VIRT timers and rlimit handling.  It was put together\nwith the help of Roland McGrath, the owner and original writer of this code.\n\nThe problem we ran into, and the reason for this rework, has to do with using\na profiling timer in a process with a large number of threads.  It appears\nthat the performance of the old implementation of run_posix_cpu_timers() was\nat least O(n*3) (where \"n\" is the number of threads in a process) or worse.\nEverything is fine with an increasing number of threads until the time taken\nfor that routine to run becomes the same as or greater than the tick time, at\nwhich point things degrade rather quickly.\n\nThis patch fixes bug 9906, \"Weird hang with NPTL and SIGPROF.\"\n\nCode Changes\n\nThis rework corrects the implementation of run_posix_cpu_timers() to make it\nrun in constant time for a particular machine.  (Performance may vary between\none machine and another depending upon whether the kernel is built as single-\nor multiprocessor and, in the latter case, depending upon the number of\nrunning processors.)  To do this, at each tick we now update fields in\nsignal_struct as well as task_struct.  The run_posix_cpu_timers() function\nuses those fields to make its decisions.\n\nWe define a new structure, \"task_cputime,\" to contain user, system and\nscheduler times and use these in appropriate places:\n\nstruct task_cputime {\n\tcputime_t utime;\n\tcputime_t stime;\n\tunsigned long long sum_exec_runtime;\n};\n\nThis is included in the structure \"thread_group_cputime,\" which is a new\nsubstructure of signal_struct and which varies for uniprocessor versus\nmultiprocessor kernels.  For uniprocessor kernels, it uses \"task_cputime\" as\na simple substructure, while for multiprocessor kernels it is a pointer:\n\nstruct thread_group_cputime {\n\tstruct task_cputime totals;\n};\n\nstruct thread_group_cputime {\n\tstruct task_cputime *totals;\n};\n\nWe also add a new task_cputime substructure directly to signal_struct, to\ncache the earliest expiration of process-wide timers, and task_cputime also\nreplaces the it_*_expires fields of task_struct (used for earliest expiration\nof thread timers).  The \"thread_group_cputime\" structure contains process-wide\ntimers that are updated via account_user_time() and friends.  In the non-SMP\ncase the structure is a simple aggregator; unfortunately in the SMP case that\nsimplicity was not achievable due to cache-line contention between CPUs (in\none measured case performance was actually _worse_ on a 16-cpu system than\nthe same test on a 4-cpu system, due to this contention).  For SMP, the\nthread_group_cputime counters are maintained as a per-cpu structure allocated\nusing alloc_percpu().  The timer functions update only the timer field in\nthe structure corresponding to the running CPU, obtained using per_cpu_ptr().\n\nWe define a set of inline functions in sched.h that we use to maintain the\nthread_group_cputime structure and hide the differences between UP and SMP\nimplementations from the rest of the kernel.  The thread_group_cputime_init()\nfunction initializes the thread_group_cputime structure for the given task.\nThe thread_group_cputime_alloc() is a no-op for UP; for SMP it calls the\nout-of-line function thread_group_cputime_alloc_smp() to allocate and fill\nin the per-cpu structures and fields.  The thread_group_cputime_free()\nfunction, also a no-op for UP, in SMP frees the per-cpu structures.  The\nthread_group_cputime_clone_thread() function (also a UP no-op) for SMP calls\nthread_group_cputime_alloc() if the per-cpu structures haven\u0027t yet been\nallocated.  The thread_group_cputime() function fills the task_cputime\nstructure it is passed with the contents of the thread_group_cputime fields;\nin UP it\u0027s that simple but in SMP it must also safely check that tsk-\u003esignal\nis non-NULL (if it is it just uses the appropriate fields of task_struct) and,\nif so, sums the per-cpu values for each online CPU.  Finally, the three\nfunctions account_group_user_time(), account_group_system_time() and\naccount_group_exec_runtime() are used by timer functions to update the\nrespective fields of the thread_group_cputime structure.\n\nNon-SMP operation is trivial and will not be mentioned further.\n\nThe per-cpu structure is always allocated when a task creates its first new\nthread, via a call to thread_group_cputime_clone_thread() from copy_signal().\nIt is freed at process exit via a call to thread_group_cputime_free() from\ncleanup_signal().\n\nAll functions that formerly summed utime/stime/sum_sched_runtime values from\nfrom all threads in the thread group now use thread_group_cputime() to\nsnapshot the values in the thread_group_cputime structure or the values in\nthe task structure itself if the per-cpu structure hasn\u0027t been allocated.\n\nFinally, the code in kernel/posix-cpu-timers.c has changed quite a bit.\nThe run_posix_cpu_timers() function has been split into a fast path and a\nslow path; the former safely checks whether there are any expired thread\ntimers and, if not, just returns, while the slow path does the heavy lifting.\nWith the dedicated thread group fields, timers are no longer \"rebalanced\" and\nthe process_timer_rebalance() function and related code has gone away.  All\nsumming loops are gone and all code that used them now uses the\nthread_group_cputime() inline.  When process-wide timers are set, the new\ntask_cputime structure in signal_struct is used to cache the earliest\nexpiration; this is checked in the fast path.\n\nPerformance\n\nThe fix appears not to add significant overhead to existing operations.  It\ngenerally performs the same as the current code except in two cases, one in\nwhich it performs slightly worse (Case 5 below) and one in which it performs\nvery significantly better (Case 2 below).  Overall it\u0027s a wash except in those\ntwo cases.\n\nI\u0027ve since done somewhat more involved testing on a dual-core Opteron system.\n\nCase 1: With no itimer running, for a test with 100,000 threads, the fixed\n\tkernel took 1428.5 seconds, 513 seconds more than the unfixed system,\n\tall of which was spent in the system.  There were twice as many\n\tvoluntary context switches with the fix as without it.\n\nCase 2: With an itimer running at .01 second ticks and 4000 threads (the most\n\tan unmodified kernel can handle), the fixed kernel ran the test in\n\teight percent of the time (5.8 seconds as opposed to 70 seconds) and\n\thad better tick accuracy (.012 seconds per tick as opposed to .023\n\tseconds per tick).\n\nCase 3: A 4000-thread test with an initial timer tick of .01 second and an\n\tinterval of 10,000 seconds (i.e. a timer that ticks only once) had\n\tvery nearly the same performance in both cases:  6.3 seconds elapsed\n\tfor the fixed kernel versus 5.5 seconds for the unfixed kernel.\n\nWith fewer threads (eight in these tests), the Case 1 test ran in essentially\nthe same time on both the modified and unmodified kernels (5.2 seconds versus\n5.8 seconds).  The Case 2 test ran in about the same time as well, 5.9 seconds\nversus 5.4 seconds but again with much better tick accuracy, .013 seconds per\ntick versus .025 seconds per tick for the unmodified kernel.\n\nSince the fix affected the rlimit code, I also tested soft and hard CPU limits.\n\nCase 4: With a hard CPU limit of 20 seconds and eight threads (and an itimer\n\trunning), the modified kernel was very slightly favored in that while\n\tit killed the process in 19.997 seconds of CPU time (5.002 seconds of\n\twall time), only .003 seconds of that was system time, the rest was\n\tuser time.  The unmodified kernel killed the process in 20.001 seconds\n\tof CPU (5.014 seconds of wall time) of which .016 seconds was system\n\ttime.  Really, though, the results were too close to call.  The results\n\twere essentially the same with no itimer running.\n\nCase 5: With a soft limit of 20 seconds and a hard limit of 2000 seconds\n\t(where the hard limit would never be reached) and an itimer running,\n\tthe modified kernel exhibited worse tick accuracy than the unmodified\n\tkernel: .050 seconds/tick versus .028 seconds/tick.  Otherwise,\n\tperformance was almost indistinguishable.  With no itimer running this\n\ttest exhibited virtually identical behavior and times in both cases.\n\nIn times past I did some limited performance testing.  those results are below.\n\nOn a four-cpu Opteron system without this fix, a sixteen-thread test executed\nin 3569.991 seconds, of which user was 3568.435s and system was 1.556s.  On\nthe same system with the fix, user and elapsed time were about the same, but\nsystem time dropped to 0.007 seconds.  Performance with eight, four and one\nthread were comparable.  Interestingly, the timer ticks with the fix seemed\nmore accurate:  The sixteen-thread test with the fix received 149543 ticks\nfor 0.024 seconds per tick, while the same test without the fix received 58720\nfor 0.061 seconds per tick.  Both cases were configured for an interval of\n0.01 seconds.  Again, the other tests were comparable.  Each thread in this\ntest computed the primes up to 25,000,000.\n\nI also did a test with a large number of threads, 100,000 threads, which is\nimpossible without the fix.  In this case each thread computed the primes only\nup to 10,000 (to make the runtime manageable).  System time dominated, at\n1546.968 seconds out of a total 2176.906 seconds (giving a user time of\n629.938s).  It received 147651 ticks for 0.015 seconds per tick, still quite\naccurate.  There is obviously no comparable test without the fix.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6976675d94042fbd446231d1bd8b7de71a980ada",
      "tree": "2d2acebb8078dd373115ecbdac5423f7d4fa7d72",
      "parents": [
        "654c8e0b1c623b156c5b92f28d914ab38c9c2c90"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 01 15:52:40 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:30 2008 -0700"
      },
      "message": "hrtimer: create a \"timer_slack\" field in the task struct\n\nWe want to be able to control the default \"rounding\" that is used by\nselect() and poll() and friends. This is a per process property\n(so that we can have a \"nice\" like program to start certain programs with\na looser or stricter rounding) that can be set/get via a prctl().\n\nFor this purpose, a field called \"timer_slack_ns\" is added to the task\nstruct. In addition, a field called \"default_timer_slack\"ns\" is added\nso that tasks easily can temporarily to a more/less accurate slack and then\nback to the default.\n\nThe default value of the slack is set to 50 usec; this is significantly less\nthan 2.6.27\u0027s average select() and poll() timing error but still allows\nthe kernel to group timers somewhat to preserve power behavior. Applications\nand admins can override this via the prctl()\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "cddb8a5c14aa89810b40495d94d3d2a0faee6619",
      "tree": "d0b47b071f7d2dd1d6f9c36084aa8cfcef90d1da",
      "parents": [
        "7906d00cd1f687268f0a3599442d113767795ae6"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: core\n\nWith KVM/GFP/XPMEM there isn\u0027t just the primary CPU MMU pointing to pages.\n There are secondary MMUs (with secondary sptes and secondary tlbs) too.\nsptes in the kvm case are shadow pagetables, but when I say spte in\nmmu-notifier context, I mean \"secondary pte\".  In GRU case there\u0027s no\nactual secondary pte and there\u0027s only a secondary tlb because the GRU\nsecondary MMU has no knowledge about sptes and every secondary tlb miss\nevent in the MMU always generates a page fault that has to be resolved by\nthe CPU (this is not the case of KVM where the a secondary tlb miss will\nwalk sptes in hardware and it will refill the secondary tlb transparently\nto software if the corresponding spte is present).  The same way\nzap_page_range has to invalidate the pte before freeing the page, the spte\n(and secondary tlb) must also be invalidated before any page is freed and\nreused.\n\nCurrently we take a page_count pin on every page mapped by sptes, but that\nmeans the pages can\u0027t be swapped whenever they\u0027re mapped by any spte\nbecause they\u0027re part of the guest working set.  Furthermore a spte unmap\nevent can immediately lead to a page to be freed when the pin is released\n(so requiring the same complex and relatively slow tlb_gather smp safe\nlogic we have in zap_page_range and that can be avoided completely if the\nspte unmap event doesn\u0027t require an unpin of the page previously mapped in\nthe secondary MMU).\n\nThe mmu notifiers allow kvm/GRU/XPMEM to attach to the tsk-\u003emm and know\nwhen the VM is swapping or freeing or doing anything on the primary MMU so\nthat the secondary MMU code can drop sptes before the pages are freed,\navoiding all page pinning and allowing 100% reliable swapping of guest\nphysical address space.  Furthermore it avoids the code that teardown the\nmappings of the secondary MMU, to implement a logic like tlb_gather in\nzap_page_range that would require many IPI to flush other cpu tlbs, for\neach fixed number of spte unmapped.\n\nTo make an example: if what happens on the primary MMU is a protection\ndowngrade (from writeable to wrprotect) the secondary MMU mappings will be\ninvalidated, and the next secondary-mmu-page-fault will call\nget_user_pages and trigger a do_wp_page through get_user_pages if it\ncalled get_user_pages with write\u003d1, and it\u0027ll re-establishing an updated\nspte or secondary-tlb-mapping on the copied page.  Or it will setup a\nreadonly spte or readonly tlb mapping if it\u0027s a guest-read, if it calls\nget_user_pages with write\u003d0.  This is just an example.\n\nThis allows to map any page pointed by any pte (and in turn visible in the\nprimary CPU MMU), into a secondary MMU (be it a pure tlb like GRU, or an\nfull MMU with both sptes and secondary-tlb like the shadow-pagetable layer\nwith kvm), or a remote DMA in software like XPMEM (hence needing of\nschedule in XPMEM code to send the invalidate to the remote node, while no\nneed to schedule in kvm/gru as it\u0027s an immediate event like invalidating\nprimary-mmu pte).\n\nAt least for KVM without this patch it\u0027s impossible to swap guests\nreliably.  And having this feature and removing the page pin allows\nseveral other optimizations that simplify life considerably.\n\nDependencies:\n\n1) mm_take_all_locks() to register the mmu notifier when the whole VM\n   isn\u0027t doing anything with \"mm\".  This allows mmu notifier users to keep\n   track if the VM is in the middle of the invalidate_range_begin/end\n   critical section with an atomic counter incraese in range_begin and\n   decreased in range_end.  No secondary MMU page fault is allowed to map\n   any spte or secondary tlb reference, while the VM is in the middle of\n   range_begin/end as any page returned by get_user_pages in that critical\n   section could later immediately be freed without any further\n   -\u003einvalidate_page notification (invalidate_range_begin/end works on\n   ranges and -\u003einvalidate_page isn\u0027t called immediately before freeing\n   the page).  To stop all page freeing and pagetable overwrites the\n   mmap_sem must be taken in write mode and all other anon_vma/i_mmap\n   locks must be taken too.\n\n2) It\u0027d be a waste to add branches in the VM if nobody could possibly\n   run KVM/GRU/XPMEM on the kernel, so mmu notifiers will only enabled if\n   CONFIG_KVM\u003dm/y.  In the current kernel kvm won\u0027t yet take advantage of\n   mmu notifiers, but this already allows to compile a KVM external module\n   against a kernel with mmu notifiers enabled and from the next pull from\n   kvm.git we\u0027ll start using them.  And GRU/XPMEM will also be able to\n   continue the development by enabling KVM\u003dm in their config, until they\n   submit all GRU/XPMEM GPLv2 code to the mainline kernel.  Then they can\n   also enable MMU_NOTIFIERS in the same way KVM does it (even if KVM\u003dn).\n   This guarantees nobody selects MMU_NOTIFIER\u003dy if KVM and GRU and XPMEM\n   are all \u003dn.\n\nThe mmu_notifier_register call can fail because mm_take_all_locks may be\ninterrupted by a signal and return -EINTR.  Because mmu_notifier_reigster\nis used when a driver startup, a failure can be gracefully handled.  Here\nan example of the change applied to kvm to register the mmu notifiers.\nUsually when a driver startups other allocations are required anyway and\n-ENOMEM failure paths exists already.\n\n struct  kvm *kvm_arch_create_vm(void)\n {\n        struct kvm *kvm \u003d kzalloc(sizeof(struct kvm), GFP_KERNEL);\n+       int err;\n\n        if (!kvm)\n                return ERR_PTR(-ENOMEM);\n\n        INIT_LIST_HEAD(\u0026kvm-\u003earch.active_mmu_pages);\n\n+       kvm-\u003earch.mmu_notifier.ops \u003d \u0026kvm_mmu_notifier_ops;\n+       err \u003d mmu_notifier_register(\u0026kvm-\u003earch.mmu_notifier, current-\u003emm);\n+       if (err) {\n+               kfree(kvm);\n+               return ERR_PTR(err);\n+       }\n+\n        return kvm;\n }\n\nmmu_notifier_unregister returns void and it\u0027s reliable.\n\nThe patch also adds a few needed but missing includes that would prevent\nkernel to compile after these changes on non-x86 archs (x86 didn\u0027t need\nthem by luck).\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix mm/filemap_xip.c build]\n[akpm@linux-foundation.org: fix mm/mmu_notifier.c build]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.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"
    },
    {
      "commit": "5995477ab7f3522c497c9c4a1c55373e9d655574",
      "tree": "a147fb61642a7ac5441855964eb97a2ff1e37202",
      "parents": [
        "605ccb73f6a1c891a16268b3a2923208fc637958"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "righi.andrea@gmail.com",
        "time": "Sun Jul 27 17:29:15 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 27 09:58:20 2008 -0700"
      },
      "message": "task IO accounting: improve code readability\n\nPut all i/o statistics in struct proc_io_accounting and use inline functions to\ninitialize and increment statistics, removing a lot of single variable\nassignments.\n\nThis also reduces the kernel size as following (with CONFIG_TASK_XACCT\u003dy and\nCONFIG_TASK_IO_ACCOUNTING\u003dy).\n\n    text    data     bss     dec     hex filename\n   11651       0       0   11651    2d83 kernel/exit.o.before\n   11619       0       0   11619    2d63 kernel/exit.o.after\n   10886     132     136   11154    2b92 kernel/fork.o.before\n   10758     132     136   11026    2b12 kernel/fork.o.after\n\n 3082029  807968 4818600 8708597  84e1f5 vmlinux.o.before\n 3081869  807968 4818600 8708437  84e155 vmlinux.o.after\n\nSigned-off-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f2da1e7d0330395e5e9e350b879b98a1ea495df",
      "tree": "adc01ced45bb1de10fe58511e7143bbbd138a192",
      "parents": [
        "8bb79224b87aab92071e94d46e70bd160d89bf34"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 10 20:44:54 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:20 2008 -0400"
      },
      "message": "[PATCH] kill altroot\n\nlong overdue...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "daded34be96b1975ff8539ff62ad8b158ce7d842",
      "tree": "8cab5e809e513efd1a403e587a53a1e75365d1fc",
      "parents": [
        "09a05394fe2448a4139b014936330af23fa7ec83"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "tracehook: vfork-done\n\nThis moves the PTRACE_EVENT_VFORK_DONE tracing into a tracehook.h inline,\ntracehook_report_vfork_done().  The change has no effect, just clean-up.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09a05394fe2448a4139b014936330af23fa7ec83",
      "tree": "a7b3f0ffe271d4d35c3b98a99183d8792ea4db53",
      "parents": [
        "30199f5a46aee204bf437a4f5b0740f3efe448b7"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "tracehook: clone\n\nThis moves all the ptrace initialization and tracing logic for task\ncreation into tracehook.h and ptrace.h inlines.  It reorganizes the code\nslightly, but should not change any behavior.\n\nThere are four tracehook entry points, at each important stage of task\ncreation.  This keeps the interface from the core fork.c code fairly\nclean, while supporting the complex setup required for ptrace or something\nlike it.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "297c5d92634c809cef23d73e7b2556f2528ff7e2",
      "tree": "d006fa29daa24242c64cff3b66dd75fbb0003b0f",
      "parents": [
        "0c18d7a5df82524e634637c3aec24d4cba096442"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "righi.andrea@gmail.com",
        "time": "Fri Jul 25 01:48:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "task IO accounting: provide distinct tgid/tid I/O statistics\n\nReport per-thread I/O statistics in /proc/pid/task/tid/io and aggregate\nparent I/O statistics in /proc/pid/io.  This approach follows the same\nmodel used to account per-process and per-thread CPU times.\n\nAs a practial application, this allows for example to quickly find the top\nI/O consumer when a process spawns many child threads that perform the\nactual I/O work, because the aggregated I/O statistics can always be found\nin /proc/pid/io.\n\n[ Oleg Nesterov points out that we should check that the task is still\n  alive before we iterate over the threads, but also says that we can do\n  that fixup on top of this later.  - Linus ]\n\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nCc: Matt Heaton \u003cmatt@hostmonster.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nAcked-by-with-comments: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "999d9fc1670bc082928b93b11d1f2e0e417d973c",
      "tree": "e540e7fd2fab970ba2be5e39ac9f8282a373bc24",
      "parents": [
        "32ecb1f26dd50eeaac4e3f4dea4541c97848e459"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "coredump: move mm-\u003ecore_waiters into struct core_state\n\nMove mm-\u003ecore_waiters into \"struct core_state\" allocated on stack.  This\nshrinks mm_struct a little bit and allows further changes.\n\nThis patch mostly does s/core_waiters/core_state.  The only essential\nchange is that coredump_wait() must clear mm-\u003ecore_state before return.\n\nThe coredump_wait()\u0027s path is uglified and .text grows by 30 bytes, this\nis fixed by the next patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "246bb0b1deb29726990620d8b5e55ca29f331362",
      "tree": "5173b9e0c1d18934a8b2693c690a7162acb1bca8",
      "parents": [
        "7b34e4283c685f5cc6ba6d30e939906eee0d4bcf"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "kill PF_BORROWED_MM in favour of PF_KTHREAD\n\nKill PF_BORROWED_MM.  Change use_mm/unuse_mm to not play with -\u003eflags, and\ndo s/PF_BORROWED_MM/PF_KTHREAD/ for a couple of other users.\n\nNo functional changes yet.  But this allows us to do further\nfixes/cleanups.\n\noom_kill/ptrace/etc often check \"p-\u003emm !\u003d NULL\" to filter out the\nkthreads, this is wrong because of use_mm().  The problem with\nPF_BORROWED_MM is that we need task_lock() to avoid races.  With this\npatch we can check PF_KTHREAD directly, or use a simple lockless helper:\n\n\t/* The result must not be dereferenced !!! */\n\tstruct mm_struct *__get_task_mm(struct task_struct *tsk)\n\t{\n\t\tif (tsk-\u003eflags \u0026 PF_KTHREAD)\n\t\t\treturn NULL;\n\t\treturn tsk-\u003emm;\n\t}\n\nNote also ecard_task().  It runs with -\u003emm !\u003d NULL, but it\u0027s the kernel\nthread without PF_BORROWED_MM.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "e885dcde75685e09f23cffae1f6d5169c105b8a0",
      "tree": "711a91e83fad632c194700839d3e47631aee677a",
      "parents": [
        "856c13aa1ff6136c1968414fdea5938ea9d5ebf2"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Fri Jul 25 01:47:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "cgroup_clone: use pid of newly created task for new cgroup\n\ncgroup_clone creates a new cgroup with the pid of the task.  This works\ncorrectly for unshare, but for clone cgroup_clone is called from\ncopy_namespaces inside copy_process, which happens before the new pid is\ncreated.  As a result, the new cgroup was created with current\u0027s pid.\nThis patch:\n\n\t1. Moves the call inside copy_process to after the new pid\n\t   is created\n\t2. Passes the struct pid into ns_cgroup_clone (as it is not\n\t   yet attached to the task)\n\t3. Passes a name from ns_cgroup_clone() into cgroup_clone()\n\t   so as to keep cgroup_clone() itself simpler\n\t4. Uses pid_vnr() to get the process id value, so that the\n\t   pid used to name the new cgroup is always the pid as it\n\t   would be known to the task which did the cloning or\n\t   unsharing.  I think that is the most intuitive thing to\n\t   do.  This way, task t1 does clone(CLONE_NEWPID) to get\n\t   t2, which does clone(CLONE_NEWPID) to get t3, then the\n\t   cgroup for t3 will be named for the pid by which t2 knows\n\t   t3.\n\n(Thanks to Dan Smith for finding the main bug)\n\nChangelog:\n\tJune 11: Incorporate Paul Menage\u0027s feedback:  don\u0027t pass\n\t         NULL to ns_cgroup_clone from unshare, and reduce\n\t\t patch size by using \u0027nodename\u0027 in cgroup_clone.\n\tJune 10: Original version\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Serge Hallyn \u003cserge@us.ibm.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nTested-by: Dan Smith \u003cdanms@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "b69c49b78457f681ecfb3147bd968434ee6559c1",
      "tree": "9557c950c21cf4336ccc403136ea11384150af31",
      "parents": [
        "62ec30d45ecbb85b5991474c8f04192697687495"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 25 01:45:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:28 2008 -0700"
      },
      "message": "clean up duplicated alloc/free_thread_info\n\nWe duplicate alloc/free_thread_info defines on many platforms (the\nmajority uses __get_free_pages/free_pages).  This patch defines common\ndefines and removes these duplicated defines.\n__HAVE_ARCH_THREAD_INFO_ALLOCATOR is introduced for platforms that do\nsomething different.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-arch@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": "a1e78772d72b2616ed20e54896e68e0e7044854e",
      "tree": "d752dd96c2a4fcc555779a7aa99f95069c9b95ae",
      "parents": [
        "fc1b8a73dd71226902a11928dd5500326e101df9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:27:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "hugetlb: reserve huge pages for reliable MAP_PRIVATE hugetlbfs mappings until fork()\n\nThis patch reserves huge pages at mmap() time for MAP_PRIVATE mappings in\na similar manner to the reservations taken for MAP_SHARED mappings.  The\nreserve count is accounted both globally and on a per-VMA basis for\nprivate mappings.  This guarantees that a process that successfully calls\nmmap() will successfully fault all pages in the future unless fork() is\ncalled.\n\nThe characteristics of private mappings of hugetlbfs files behaviour after\nthis patch are;\n\n1. The process calling mmap() is guaranteed to succeed all future faults until\n   it forks().\n2. On fork(), the parent may die due to SIGKILL on writes to the private\n   mapping if enough pages are not available for the COW. For reasonably\n   reliable behaviour in the face of a small huge page pool, children of\n   hugepage-aware processes should not reference the mappings; such as\n   might occur when fork()ing to exec().\n3. On fork(), the child VMAs inherit no reserves. Reads on pages already\n   faulted by the parent will succeed. Successful writes will depend on enough\n   huge pages being free in the pool.\n4. Quotas of the hugetlbfs mount are checked at reserve time for the mapper\n   and at fault time otherwise.\n\nBefore this patch, all reads or writes in the child potentially needs page\nallocations that can later lead to the death of the parent.  This applies\nto reads and writes of uninstantiated pages as well as COW.  After the\npatch it is only a write to an instantiated page that causes problems.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f470021adb9190819c03d6d8c5c860a17480aa6d",
      "tree": "9e5c2808138624e272b562a502cfd035ae59c268",
      "parents": [
        "98abed02007b19bbfd68b6d06a5485afc3eeb01b"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Mon Mar 24 18:36:23 2008 -0700"
      },
      "committer": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jul 16 18:02:33 2008 -0700"
      },
      "message": "ptrace children revamp\n\nptrace no longer fiddles with the children/sibling links, and the\nold ptrace_children list is gone.  Now ptrace, whether of one\u0027s own\nchildren or another\u0027s via PTRACE_ATTACH, just uses the new ptraced\nlist instead.\n\nThere should be no user-visible difference that matters.  The only\nchange is the order in which do_wait() sees multiple stopped\nchildren and stopped ptrace attachees.  Since wait_task_stopped()\nwas changed earlier so it no longer reorders the children list, we\nalready know this won\u0027t cause any new problems.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "40e7babbb52b4b57721b9175aed7a14d93bf242f",
      "tree": "e16bc0a698c891922ca4c0166e0e08ac194718ed",
      "parents": [
        "948769a5ba304ed3329a2f42ee3561f04a0b5692",
        "d12c1a37925a8ec386994169605fe99217295199"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 14:55:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 14:55:13 2008 -0700"
      },
      "message": "Merge branch \u0027core/locking\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core/locking\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  lockdep: fix kernel/fork.c warning\n  lockdep: fix ftrace irq tracing false positive\n  lockdep: remove duplicate definition of STATIC_LOCKDEP_MAP_INIT\n  lockdep: add lock_class information to lock_chain and output it\n  lockdep: add lock_class information to lock_chain and output it\n  lockdep: output lock_class key instead of address for forward dependency output\n  __mutex_lock_common: use signal_pending_state()\n  mutex-debug: check mutex magic before owner\n\nFixed up conflict in kernel/fork.c manually\n"
    },
    {
      "commit": "e18425a0abc8eafa8e98ecffac517bb0c0904f4b",
      "tree": "5eb743e7201850de19496183554bb34c766948c4",
      "parents": [
        "d1794f2c5b5817eb79ccc5e00701ca748d1b073a",
        "5806b81ac1c0c52665b91723fd4146a4f86e386b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 14:49:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 14:49:54 2008 -0700"
      },
      "message": "Merge branch \u0027tracing/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (228 commits)\n  ftrace: build fix for ftraced_suspend\n  ftrace: separate out the function enabled variable\n  ftrace: add ftrace_kill_atomic\n  ftrace: use current CPU for function startup\n  ftrace: start wakeup tracing after setting function tracer\n  ftrace: check proper config for preempt type\n  ftrace: trace schedule\n  ftrace: define function trace nop\n  ftrace: move sched_switch enable after markers\n  ftrace: prevent ftrace modifications while being kprobe\u0027d, v2\n  fix \"ftrace: store mcount address in rec-\u003eip\"\n  mmiotrace broken in linux-next (8-bit writes only)\n  ftrace: avoid modifying kprobe\u0027d records\n  ftrace: freeze kprobe\u0027d records\n  kprobes: enable clean usage of get_kprobe\n  ftrace: store mcount address in rec-\u003eip\n  ftrace: build fix with gcc 4.3\n  namespacecheck: fixes\n  ftrace: fix \"notrace\" filtering priority\n  ftrace: fix printout\n  ...\n"
    },
    {
      "commit": "d12c1a37925a8ec386994169605fe99217295199",
      "tree": "754d74560db8bc316deb445a9f6efb2db3b08c7f",
      "parents": [
        "992860e991f2015fb8c8df65aa32afa0dcbb4430"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 14 12:09:28 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 14 12:09:28 2008 +0200"
      },
      "message": "lockdep: fix kernel/fork.c warning\n\nfix:\n\n[    0.184011] ------------[ cut here ]------------\n[    0.188011] WARNING: at kernel/fork.c:918 copy_process+0x1c0/0x1084()\n[    0.192011] Pid: 0, comm: swapper Not tainted 2.6.26-tip-00351-g01d4a50-dirty #14521\n[    0.196011]  [\u003cc0135d48\u003e] warn_on_slowpath+0x3c/0x60\n[    0.200012]  [\u003cc016f805\u003e] ? __alloc_pages_internal+0x92/0x36b\n[    0.208012]  [\u003cc033de5e\u003e] ? __spin_lock_init+0x24/0x4a\n[    0.212012]  [\u003cc01347e3\u003e] copy_process+0x1c0/0x1084\n[    0.216013]  [\u003cc013575f\u003e] do_fork+0xb8/0x1ad\n[    0.220013]  [\u003cc034f75e\u003e] ? acpi_os_release_lock+0x8/0xa\n[    0.228013]  [\u003cc034ff7a\u003e] ? acpi_os_vprintf+0x20/0x24\n[    0.232014]  [\u003cc01129ee\u003e] kernel_thread+0x75/0x7d\n[    0.236014]  [\u003cc0a491eb\u003e] ? kernel_init+0x0/0x24a\n[    0.240014]  [\u003cc0a491eb\u003e] ? kernel_init+0x0/0x24a\n[    0.244014]  [\u003cc01151b0\u003e] ? kernel_thread_helper+0x0/0x10\n[    0.252015]  [\u003cc06c6ac0\u003e] rest_init+0x14/0x50\n[    0.256015]  [\u003cc0a498ce\u003e] start_kernel+0x2b9/0x2c0\n[    0.260015]  [\u003cc0a4904f\u003e] __init_begin+0x4f/0x57\n[    0.264016]  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[    0.268016] ---[ end trace 4eaa2a86a8e2da22 ]---\n[    0.272016] enabled ExtINT on CPU#0\n\nwhich occurs if CONFIG_TRACE_IRQFLAGS\u003dy, CONFIG_DEBUG_LOCKDEP\u003dy,\nbut CONFIG_PROVE_LOCKING is disabled.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "da9cbc87395308a21465bd25441297bbba0477e1",
      "tree": "fabea3326cea434c0011fa00f3eb57854162117c",
      "parents": [
        "b984679efe1a616ec4ac919dba08286d71593900"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jun 30 20:42:08 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:14 2008 +0200"
      },
      "message": "block: blkdev.h cleanup, move iocontext stuff to iocontext.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7c9f8861e6c9c839f913e49b98c3854daca18f27",
      "tree": "220b23dff1aa11a83546fbc73a319575ca489188",
      "parents": [
        "b40a4392a3c262e0d1b5379b4e142a8eefa63439"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Tue Apr 22 16:38:23 2008 -0500"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 16:15:33 2008 +0200"
      },
      "message": "stackprotector: use canary at end of stack to indicate overruns at oops time\n\n(Updated with a common max-stack-used checker that knows about\nthe canary, as suggested by Joe Perches)\n\nUse a canary at the end of the stack to clearly indicate\nat oops time whether the stack has ever overflowed.\n\nThis is a very simple implementation with a couple of\ndrawbacks:\n\n1) a thread may legitimately use exactly up to the last\n   word on the stack\n\n -- but the chances of doing this and then oopsing later seem slim\n\n2) it\u0027s possible that the stack usage isn\u0027t dense enough\n   that the canary location could get skipped over\n\n -- but the worst that happens is that we don\u0027t flag the overrun\n -- though this happens fairly often in my testing :(\n\nWith the code in place, an intentionally-bloated stack oops might\ndo:\n\nBUG: unable to handle kernel paging request at ffff8103f84cc680\nIP: [\u003cffffffff810253df\u003e] update_curr+0x9a/0xa8\nPGD 8063 PUD 0\nThread overran stack or stack corrupted\nOops: 0000 [1] SMP\nCPU 0\n...\n\n... unless the stack overrun is so bad that it corrupts some other\nthread.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "81d68a96a39844853b37f20cc8282d9b65b78ef3",
      "tree": "bbc05f415930c15fb5a1004620bd77585fcec43a",
      "parents": [
        "352ad25aa4a189c667cb2af333948d34692a2d27"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:46 2008 +0200"
      },
      "message": "ftrace: trace irq disabled critical timings\n\nThis patch adds latency tracing for critical timings\n(how long interrupts are disabled for).\n\n \"irqsoff\" is added to /debugfs/tracing/available_tracers\n\nNote:\n  tracing_max_latency\n    also holds the max latency for irqsoff (in usecs).\n   (default to large number so one must start latency tracing)\n\n  tracing_thresh\n    threshold (in usecs) to always print out if irqs off\n    is detected to be longer than stated here.\n    If irq_thresh is non-zero, then max_irq_latency\n    is ignored.\n\nHere\u0027s an example of a trace with ftrace_enabled \u003d 0\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 100 us, #3/3, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1d.s3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1d.s3  100us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1d.s3  100us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAnd this is a trace with ftrace_enabled \u003d\u003d 1\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\n--------------------------------------------------------------------\n latency: 102 us, #12/12, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1dNs3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_read_phy_reg+0x16/0x225 [e1000] (e1000_update_stats+0x5e2/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_swfw_sync_acquire+0x10/0x99 [e1000] (e1000_read_phy_reg+0x49/0x225 [e1000])\n swapper-0     1dNs3   46us : e1000_get_hw_eeprom_semaphore+0x12/0xa6 [e1000] (e1000_swfw_sync_acquire+0x36/0x99 [e1000])\n swapper-0     1dNs3   47us : __const_udelay+0x9/0x47 (e1000_read_phy_reg+0x116/0x225 [e1000])\n swapper-0     1dNs3   47us+: __delay+0x9/0x50 (__const_udelay+0x45/0x47)\n swapper-0     1dNs3   97us : preempt_schedule+0xc/0x84 (__delay+0x4e/0x50)\n swapper-0     1dNs3   98us : e1000_swfw_sync_release+0xc/0x55 [e1000] (e1000_read_phy_reg+0x211/0x225 [e1000])\n swapper-0     1dNs3   99us+: e1000_put_hw_eeprom_semaphore+0x9/0x35 [e1000] (e1000_swfw_sync_release+0x50/0x55 [e1000])\n swapper-0     1dNs3  101us : _spin_unlock_irqrestore+0xe/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "02afc6267f6d55d47aba9fcafdbd1b7230d2294a",
      "tree": "f8cd675baf512fa6f6d561a5bccc0447bec2ff8b",
      "parents": [
        "f52111b1546943545e67573c4dde1c7613ca33d3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 08 19:42:56 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 16 17:22:26 2008 -0400"
      },
      "message": "[PATCH] dup_fd() fixes, part 1\n\nMove the sucker to fs/file.c in preparation to the rest\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9f3acc3140444a900ab280de942291959f0f615d",
      "tree": "0d7f3f9698071ff90fb9a127a4c6e86e1c37c945",
      "parents": [
        "a2dcb44c3c5a8151d2d9f6ac8ad0789efcdbe184"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Apr 24 07:44:08 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:08:16 2008 -0400"
      },
      "message": "[PATCH] split linux/file.h\n\nInitial splitoff of the low-level stuff; taken to fdtable.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db51aeccd7097ce19a522a4c5ff91c320f870e2b",
      "tree": "373bdfb55d1d90c04d53d4a419bcd156fe7f054c",
      "parents": [
        "08d2c30ce98d274137f12b0a9b9c74137455922c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:52:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:35 2008 -0700"
      },
      "message": "signals: microoptimize the usage of -\u003ecurr_target\n\nSuggested by Roland McGrath.\n\nInitialize signal-\u003ecurr_target in copy_signal().  This way -\u003ecurr_target is\nnever \u003d\u003d NULL, we can kill the check in __group_complete_signal\u0027s hot path.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "925d1c401fa6cfd0df5d2e37da8981494ccdec07",
      "tree": "4f3b7a09311cd99783b822350628125e44f9902d",
      "parents": [
        "e93b4ea20adb20f1f1f07f10ba5d7dd739d2843e"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Tue Apr 29 01:01:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "procfs task exe symlink\n\nThe kernel implements readlink of /proc/pid/exe by getting the file from\nthe first executable VMA.  Then the path to the file is reconstructed and\nreported as the result.\n\nBecause of the VMA walk the code is slightly different on nommu systems.\nThis patch avoids separate /proc/pid/exe code on nommu systems.  Instead of\nwalking the VMAs to find the first executable file-backed VMA we store a\nreference to the exec\u0027d file in the mm_struct.\n\nThat reference would prevent the filesystem holding the executable file\nfrom being unmounted even after unmapping the VMAs.  So we track the number\nof VM_EXECUTABLE VMAs and drop the new reference when the last one is\nunmapped.  This avoids pinning the mounted filesystem.\n\n[akpm@linux-foundation.org: improve comments]\n[yamamoto@valinux.co.jp: fix dup_mmap]\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc:\"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6013f67fc1a4c7fa5bcab2d39c1eaa3e260c7ac1",
      "tree": "33f61a88048e659359864ec10104e304d8a97a73",
      "parents": [
        "9edff4ab1f8d82675277a04e359d0ed8bf14a7b7"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Tue Apr 29 01:00:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:14 2008 -0700"
      },
      "message": "ipc: sysvsem: force unshare(CLONE_SYSVSEM) when CLONE_NEWIPC\n\nsys_unshare(CLONE_NEWIPC) doesn\u0027t handle the undo lists properly, this can\ncause a kernel memory corruption.  CLONE_NEWIPC must detach from the existing\nundo lists.\n\nFix, part 2: perform an implicit CLONE_SYSVSEM in CLONE_NEWIPC.  CLONE_NEWIPC\ncreates a new IPC namespace, the task cannot access the existing semaphore\narrays after the unshare syscall.  Thus the task can/must detach from the\nexisting undo list entries, too.\n\nThis fixes the kernel corruption, because it makes it impossible that\nundo records from two different namespaces are in sysvsem.undo_list.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: Pierre Peiffer \u003cpeifferp@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": "9edff4ab1f8d82675277a04e359d0ed8bf14a7b7",
      "tree": "05e67ca13f78b0eff666a4424e03dd6d0fa964c7",
      "parents": [
        "44f564a4bf6ac70f2a84806203045cf515bc9367"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Tue Apr 29 01:00:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:14 2008 -0700"
      },
      "message": "ipc: sysvsem: implement sys_unshare(CLONE_SYSVSEM)\n\nsys_unshare(CLONE_NEWIPC) doesn\u0027t handle the undo lists properly, this can\ncause a kernel memory corruption.  CLONE_NEWIPC must detach from the existing\nundo lists.\n\nFix, part 1: add support for sys_unshare(CLONE_SYSVSEM)\n\nThe original reason to not support it was the potential (inevitable?)\nconfusion due to the fact that sys_unshare(CLONE_SYSVSEM) has the\ninverse meaning of clone(CLONE_SYSVSEM).\n\nOur two most reasonable options then appear to be (1) fully support\nCLONE_SYSVSEM, or (2) continue to refuse explicit CLONE_SYSVSEM,\nbut always do it anyway on unshare(CLONE_SYSVSEM).  This patch does\n(1).\n\nChangelog:\n\tApr 16: SEH: switch to Manfred\u0027s alternative patch which\n\t\tremoves the unshare_semundo() function which\n\t\talways refused CLONE_SYSVSEM.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: Pierre Peiffer \u003cpeifferp@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": "cf475ad28ac35cc9ba612d67158f29b73b38b05d",
      "tree": "2c7cd568d00357bd42643ea602884e731cc24f26",
      "parents": [
        "29486df325e1fe6e1764afcb19e3370804c2b002"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "cgroups: add an owner to the mm_struct\n\nRemove the mem_cgroup member from mm_struct and instead adds an owner.\n\nThis approach was suggested by Paul Menage.  The advantage of this approach\nis that, once the mm-\u003eowner is known, using the subsystem id, the cgroup\ncan be determined.  It also allows several control groups that are\nvirtually grouped by mm_struct, to exist independent of the memory\ncontroller i.e., without adding mem_cgroup\u0027s for each controller, to\nmm_struct.\n\nA new config option CONFIG_MM_OWNER is added and the memory resource\ncontroller selects this config option.\n\nThis patch also adds cgroup callbacks to notify subsystems when mm-\u003eowner\nchanges.  The mm_cgroup_changed callback is called with the task_lock() of\nthe new task held and is called just prior to changing the mm-\u003eowner.\n\nI am indebted to Paul Menage for the several reviews of this patchset and\nhelping me make it lighter and simpler.\n\nThis patch was tested on a powerpc box, it was compiled with both the\nMM_OWNER config turned on and off.\n\nAfter the thread group leader exits, it\u0027s moved to init_css_state by\ncgroup_exit(), thus all future charges from runnings threads would be\nredirected to the init_css_set\u0027s subsystem.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e,\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "846a16bf0fc80dc95a414ffce465e3cbf9680247",
      "tree": "45e03061c5e3d8242bf470509771926f37177415",
      "parents": [
        "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_copy to mpol_dup\n\nThis patch renames mpol_copy() to mpol_dup() because, well, that\u0027s what it\ndoes.  Like, e.g., strdup() for strings, mpol_dup() takes a pointer to an\nexisting mempolicy, allocates a new one and copies the contents.\n\nIn a later patch, I want to use the name mpol_copy() to copy the contents from\none mempolicy to another like, e.g., strcpy() does for strings.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169",
      "tree": "5794ce6a8befbce82cd3e44ff15fbf3bb5f2f3bf",
      "parents": [
        "3b1163006332302117b1b2acf226d4014ff46525"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_free to mpol_put\n\nThis is a change that was requested some time ago by Mel Gorman.  Makes sense\nto me, so here it is.\n\nNote: I retain the name \"mpol_free_shared_policy()\" because it actually does\nfree the shared_policy, which is NOT a reference counted object.  However, ...\n\nThe mempolicy object[s] referenced by the shared_policy are reference counted,\nso mpol_put() is used to release the reference held by the shared_policy.  The\nmempolicy might not be freed at this time, because some task attached to the\nshared object associated with the shared policy may be in the process of\nallocating a page based on the mempolicy.  In that case, the task performing\nthe allocation will hold a reference on the mempolicy, obtained via\nmpol_shared_policy_lookup().  The mempolicy will be freed when all tasks\nholding such a reference have called mpol_put() for the mempolicy.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "402b08622d9ac6e32e25289573272e0f21bb58a7"
}
