)]}'
{
  "log": [
    {
      "commit": "b3426599af9524104be6938bcb1fcaab314781c7",
      "tree": "c6d354bddb5b8cd298d139b60a9257ebd8323b90",
      "parents": [
        "f24ec7f6c6278c0ea4c00efe96d50b1e66796c44"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Mon Sep 12 04:30:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Sep 12 09:16:27 2005 -0700"
      },
      "message": "[PATCH] cpuset semaphore depth check optimize\n\nOptimize the deadlock avoidance check on the global cpuset\nsemaphore cpuset_sem.  Instead of adding a depth counter to the\ntask struct of each task, rather just two words are enough, one\nto store the depth and the other the current cpuset_sem holder.\n\nThanks to Nikita Danilov for the idea.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\n\n[ We may want to change this further, but at least it\u0027s now\n  a totally internal decision to the cpusets code ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4247bdc60048018b98f71228b45cfbc5f5270c86",
      "tree": "6f6abbd10685af84c97e661da6771726a12209ac",
      "parents": [
        "fb1c8f93d869b34cacb8b8932e2b83d96a19d720"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sat Sep 10 00:26:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:21 2005 -0700"
      },
      "message": "[PATCH] cpuset semaphore depth check deadlock fix\n\nThe cpusets-formalize-intermediate-gfp_kernel-containment patch\nhas a deadlock problem.\n\nThis patch was part of a set of four patches to make more\nextensive use of the cpuset \u0027mem_exclusive\u0027 attribute to\nmanage kernel GFP_KERNEL memory allocations and to constrain\nthe out-of-memory (oom) killer.\n\nA task that is changing cpusets in particular ways on a system\nwhen it is very short of free memory could double trip over\nthe global cpuset_sem semaphore (get the lock and then deadlock\ntrying to get it again).\n\nThe second attempt to get cpuset_sem would be in the routine\ncpuset_zone_allowed().  This was discovered by code inspection.\nI can not reproduce the problem except with an artifically\nhacked kernel and a specialized stress test.\n\nIn real life you cannot hit this unless you are manipulating\ncpusets, and are very unlikely to hit it unless you are rapidly\nmodifying cpusets on a memory tight system.  Even then it would\nbe a rare occurence.\n\nIf you did hit it, the task double tripping over cpuset_sem\nwould deadlock in the kernel, and any other task also trying\nto manipulate cpusets would deadlock there too, on cpuset_sem.\nYour batch manager would be wedged solid (if it was cpuset\nsavvy), but classic Unix shells and utilities would work well\nenough to reboot the system.\n\nThe unusual condition that led to this bug is that unlike most\nsemaphores, cpuset_sem _can_ be acquired while in the page\nallocation code, when __alloc_pages() calls cpuset_zone_allowed.\nSo it easy to mistakenly perform the following sequence:\n  1) task makes system call to alter a cpuset\n  2) take cpuset_sem\n  3) try to allocate memory\n  4) memory allocator, via cpuset_zone_allowed, trys to take cpuset_sem\n  5) deadlock\n\nThe reason that this is not a serious bug for most users\nis that almost all calls to allocate memory don\u0027t require\ntaking cpuset_sem.  Only some code paths off the beaten\ntrack require taking cpuset_sem -- which is good.  Taking\na global semaphore on the main code path for allocating\nmemory would not scale well.\n\nThis patch fixes this deadlock by wrapping the up() and down()\ncalls on cpuset_sem in kernel/cpuset.c with code that tracks\nthe nesting depth of the current task on that semaphore, and\nonly does the real down() if the task doesn\u0027t hold the lock\nalready, and only does the real up() if the nesting depth\n(number of unmatched downs) is exactly one.\n\nThe previous required use of refresh_mems(), anytime that\nthe cpuset_sem semaphore was acquired and the code executed\nwhile holding that semaphore might try to allocate memory, is\nno longer required.  Two refresh_mems() calls were removed\nthanks to this.  This is a good change, as failing to get\nall the necessary refresh_mems() calls placed was a primary\nsource of bugs in this cpuset code.  The only remaining call\nto refresh_mems() is made while doing a memory allocation,\nif certain task memory placement data needs to be updated\nfrom its cpuset, due to the cpuset having been changed behind\nthe tasks back.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "73a358d1892a8233801e3fd54668075b52ec42da",
      "tree": "851250c42eb890c6fa3afe59b3398e17ee850bae",
      "parents": [
        "ac0b1bc1edbe81c0cb36cad7e7f5b91f4d9e12ed"
      ],
      "author": {
        "name": "KUROSAWA Takahiro",
        "email": "kurosawa@valinux.co.jp",
        "time": "Fri Sep 09 13:02:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 13:57:32 2005 -0700"
      },
      "message": "[PATCH] fix for cpusets minor problem\n\nThis patch fixes minor problem that the CPUSETS have when files in the\ncpuset filesystem are read after lseek()-ed beyond the EOF.\n\nSigned-off-by: KUROSAWA Takahiro \u003ckurosawa@valinux.co.jp\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0811bab24ff1eecab38110eda7ea7847db95c64e",
      "tree": "1de9a8a04c8c3dec7f9cdf46f2db6b6609757127",
      "parents": [
        "d1b551386a5f3f50a5003b691f819b07f8e6f034"
      ],
      "author": {
        "name": "John Hawkes",
        "email": "hawkes@sgi.com",
        "time": "Tue Sep 06 15:18:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:41 2005 -0700"
      },
      "message": "[PATCH] cpusets: re-enable \"dynamic sched domains\"\n\nRevert the hack introduced last week.\n\nSigned-off-by: John Hawkes \u003chawkes@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ef08e3b4981aebf2ba9bd7025ef7210e8eec07ce",
      "tree": "3b5386e011c87dde384115c8eb0d6961c2536025",
      "parents": [
        "9bf2229f8817677127a60c177aefce1badd22d7b"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Sep 06 15:18:13 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:40 2005 -0700"
      },
      "message": "[PATCH] cpusets: confine oom_killer to mem_exclusive cpuset\n\nNow the real motivation for this cpuset mem_exclusive patch series seems\ntrivial.\n\nThis patch keeps a task in or under one mem_exclusive cpuset from provoking an\noom kill of a task under a non-overlapping mem_exclusive cpuset.  Since only\ninterrupt and GFP_ATOMIC allocations are allowed to escape mem_exclusive\ncontainment, there is little to gain from oom killing a task under a\nnon-overlapping mem_exclusive cpuset, as almost all kernel and user memory\nallocation must come from disjoint memory nodes.\n\nThis patch enables configuring a system so that a runaway job under one\nmem_exclusive cpuset cannot cause the killing of a job in another such cpuset\nthat might be using very high compute and memory resources for a prolonged\ntime.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9bf2229f8817677127a60c177aefce1badd22d7b",
      "tree": "06e95863a26b197233081db1dafd869dfd231950",
      "parents": [
        "f90b1d2f1aaaa40c6519a32e69615edc25bb97d5"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Sep 06 15:18:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:40 2005 -0700"
      },
      "message": "[PATCH] cpusets: formalize intermediate GFP_KERNEL containment\n\nThis patch makes use of the previously underutilized cpuset flag\n\u0027mem_exclusive\u0027 to provide what amounts to another layer of memory placement\nresolution.  With this patch, there are now the following four layers of\nmemory placement available:\n\n 1) The whole system (interrupt and GFP_ATOMIC allocations can use this),\n 2) The nearest enclosing mem_exclusive cpuset (GFP_KERNEL allocations can use),\n 3) The current tasks cpuset (GFP_USER allocations constrained to here), and\n 4) Specific node placement, using mbind and set_mempolicy.\n\nThese nest - each layer is a subset (same or within) of the previous.\n\nLayer (2) above is new, with this patch.  The call used to check whether a\nzone (its node, actually) is in a cpuset (in its mems_allowed, actually) is\nextended to take a gfp_mask argument, and its logic is extended, in the case\nthat __GFP_HARDWALL is not set in the flag bits, to look up the cpuset\nhierarchy for the nearest enclosing mem_exclusive cpuset, to determine if\nplacement is allowed.  The definition of GFP_USER, which used to be identical\nto GFP_KERNEL, is changed to also set the __GFP_HARDWALL bit, in the previous\ncpuset_gfp_hardwall_flag patch.\n\nGFP_ATOMIC and GFP_KERNEL allocations will stay within the current tasks\ncpuset, so long as any node therein is not too tight on memory, but will\nescape to the larger layer, if need be.\n\nThe intended use is to allow something like a batch manager to handle several\njobs, each job in its own cpuset, but using common kernel memory for caches\nand such.  Swapper and oom_kill activity is also constrained to Layer (2).  A\ntask in or below one mem_exclusive cpuset should not cause swapping on nodes\nin another non-overlapping mem_exclusive cpuset, nor provoke oom_killing of a\ntask in another such cpuset.  Heavy use of kernel memory for i/o caching and\nsuch by one job should not impact the memory available to jobs in other\nnon-overlapping mem_exclusive cpusets.\n\nThis patch enables providing hardwall, inescapable cpusets for memory\nallocations of each job, while sharing kernel memory allocations between\nseveral jobs, in an enclosing mem_exclusive cpuset.\n\nLike Dinakar\u0027s patch earlier to enable administering sched domains using the\ncpu_exclusive flag, this patch also provides a useful meaning to a cpuset flag\nthat had previously done nothing much useful other than restrict what cpuset\nconfigurations were allowed.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "212d6d2237f60bc28c1518f8abf9d3ed6c17574a",
      "tree": "693ac9cdb0693acb0f935d4b61a34e6a12056add",
      "parents": [
        "ca2f3daf779f5e89d14e9783fcfd7920842df9e9"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Thu Aug 25 12:47:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 26 16:38:47 2005 -0700"
      },
      "message": "[PATCH] completely disable cpu_exclusive sched domain\n\nAt the suggestion of Nick Piggin and Dinakar, totally disable\nthe facility to allow cpu_exclusive cpusets to define dynamic\nsched domains in Linux 2.6.13, in order to avoid problems\nfirst reported by John Hawkes (corrupt sched data structures\nand kernel oops).\n\nThis has been built for ppc64, i386, ia64, x86_64, sparc, alpha.\nIt has been built, booted and tested for cpuset functionality\non an SN2 (ia64).\n\nDinakar or Nick - could you verify that it for sure does avoid\nthe problems Hawkes reported.  Hawkes is out of town, and I don\u0027t\nhave the recipe to reproduce what he found.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca2f3daf779f5e89d14e9783fcfd7920842df9e9",
      "tree": "07ce4cc60957d842dac1cb3d44dd5441071cf90f",
      "parents": [
        "13142341ac867bb67e88204cbfcb8d90f9a861b7"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Thu Aug 25 12:47:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 26 16:38:46 2005 -0700"
      },
      "message": "[PATCH] undo partial cpu_exclusive sched domain disabling\n\nThe partial disabling of Dinakar\u0027s new facility to allow\ncpu_exclusive cpusets to define dynamic sched domains\ndoesn\u0027t go far enough.  At the suggestion of Nick Piggin\nand Dinakar, let us instead totally disable this facility\nfor 2.6.13, in order to avoid problems first reported\nby John Hawkes (corrupt sched data structures and kernel oops).\n\nThis patch removes the partial disabling code in 2.6.13-rc7,\nin anticipation of the next patch, which will totally disable\nit instead.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3725822f7c7134249addcd4549aff086950c8090",
      "tree": "d7db18d3d5f75fe4309ddc7aa373f3213f845b41",
      "parents": [
        "40bb0c3ef52d872de348e10000eb5432a43a147d"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Aug 24 04:15:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 24 09:40:45 2005 -0700"
      },
      "message": "[PATCH] cpu_exclusive sched domains build fix\n\nAs reported by Paul Mackerras \u003cpaulus@samba.org\u003e, the previous patch\n\"cpu_exclusive sched domains fix\" broke the ppc64 build with\nCONFIC_CPUSET, yielding error messages:\n\nkernel/cpuset.c: In function \u0027update_cpu_domains\u0027:\nkernel/cpuset.c:648: error: invalid lvalue in unary \u0027\u0026\u0027\nkernel/cpuset.c:648: error: invalid lvalue in unary \u0027\u0026\u0027\n\nOn some arch\u0027s, the node_to_cpumask() is a function, returning\na cpumask_t.  But the for_each_cpu_mask() requires an lvalue mask.\n\nThe following patch fixes this build failure by making a copy\nof the cpumask_t on the stack.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d10689b68aff7b48e3de1a3f7fcd6567bd2905af",
      "tree": "c81c261274011d301dfbcfd1a3e13480b93c167e",
      "parents": [
        "ae75784bc576a1af70509c2f3ba2b70bb65a0c58"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Aug 23 01:04:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 23 20:02:52 2005 -0700"
      },
      "message": "[PATCH] cpu_exclusive sched domains on partial nodes temp fix\n\nThis keeps the kernel/cpuset.c routine update_cpu_domains() from\ninvoking the sched.c routine partition_sched_domains() if the cpuset in\nquestion doesn\u0027t fall on node boundaries.\n\nI have boot tested this on an SN2, and with the help of a couple of ad\nhoc printk\u0027s, determined that it does indeed avoid calling the\npartition_sched_domains() routine on partial nodes.\n\nI did not directly verify that this avoids setting up bogus sched\ndomains or avoids the oops that Hawkes saw.\n\nThis patch imposes a silent artificial constraint on which cpusets can\nbe used to define dynamic sched domains.\n\nThis patch should allow proceeding with this new feature in 2.6.13 for\nthe configurations in which it is useful (node alligned sched domains)\nwhile avoiding trying to setup sched domains in the less useful cases\nthat can cause the kernel corruption and oops.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nAcked-by: John Hawkes \u003chawkes@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3077a260e9f316b611436b1506eec9cc5c4f8aa6",
      "tree": "43b7d5faa5f204904c713c463015792d9ff56b01",
      "parents": [
        "a242b44da6feb604c4c659b78f63dedb69b2d4a3"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Aug 09 10:07:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 09 12:08:22 2005 -0700"
      },
      "message": "[PATCH] cpuset release ABBA deadlock fix\n\nFix possible cpuset_sem ABBA deadlock if \u0027notify_on_release\u0027 set.\n\nFor a particular usage pattern, creating and destroying cpusets fairly\nfrequently using notify_on_release, on a very large system, this deadlock\ncan be seen every few days.  If you are not using the cpuset\nnotify_on_release feature, you will never see this deadlock.\n\nThe existing code, on task exit (or cpuset deletion) did:\n\n  get cpuset_sem\n  if cpuset marked notify_on_release and is ready to release:\n    compute cpuset path relative to /dev/cpuset mount point\n    call_usermodehelper() forks /sbin/cpuset_release_agent with path\n  drop cpuset_sem\n\nUnfortunately, the fork in call_usermodehelper can allocate memory, and\nallocating memory can require cpuset_sem, if the mems_generation values\nchanged in the interim.  This results in an ABBA deadlock, trying to obtain\ncpuset_sem when it is already held by the current task.\n\nTo fix this, I put the cpuset path (which must be computed while holding\ncpuset_sem) in a temporary buffer, to be used in the call_usermodehelper\ncall of /sbin/cpuset_release_agent only _after_ dropping cpuset_sem.\n\nSo the new logic is:\n\n  get cpuset_sem\n  if cpuset marked notify_on_release and is ready to release:\n    compute cpuset path relative to /dev/cpuset mount point\n    stash path in kmalloc\u0027d buffer\n  drop cpuset_sem\n  call_usermodehelper() forks /sbin/cpuset_release_agent with path\n  free path\n\nThe sharp eyed reader might notice that this patch does not contain any\ncalls to kmalloc.  The existing code in the check_for_release() routine was\nalready kmalloc\u0027ing a buffer to hold the cpuset path.  In the old code, it\njust held the buffer for a few lines, over the cpuset_release_agent() call\nthat in turn invoked call_usermodehelper().  In the new code, with the\napplication of this patch, it returns that buffer via the new char\n**ppathbuf parameter, for later use and freeing in cpuset_release_agent(),\nwhich is called after cpuset_sem is dropped.  Whereas the old code has just\none call to cpuset_release_agent(), right in the check_for_release()\nroutine, the new code has three calls to cpuset_release_agent(), from the\nvarious places that a cpuset can be released.\n\nThis patch has been build and booted on SN2, and passed a stress test that\npreviously hit the deadlock within a few seconds.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9fd8a6d443b509147280f058d4e59f0b796a323",
      "tree": "427385e403fc0d4282be19732a00ddfd224c1461",
      "parents": [
        "207a7ba8dc000e1b13acac97f3736810dd86e8e2"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jul 27 11:45:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:26:06 2005 -0700"
      },
      "message": "[PATCH] kernel/cpuset.c: add kerneldoc, fix typos\n\nAdd kerneldoc to kernel/cpuset.c\n\nFix cpuset typos in init/Kconfig\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "85d7b94981e2e919697bc235aad7367b33c3864b",
      "tree": "79d7705a897abde11b5f2f967bf24487aaeea354",
      "parents": [
        "1a20ff27ef75d866730ee796acd811a925af762f"
      ],
      "author": {
        "name": "Dinakar Guniguntala",
        "email": "dino@in.ibm.com",
        "time": "Sat Jun 25 14:57:34 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:45 2005 -0700"
      },
      "message": "[PATCH] Dynamic sched domains: cpuset changes\n\nAdds the core update_cpu_domains code and updated cpusets documentation\n\nSigned-off-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f45f1a78fbac3cc859ec10c5366e97d20d40fa2",
      "tree": "bafacf11adbfb4eebf2d2d80d92e1fe2d9c02b18",
      "parents": [
        "ac20427ef6aa63da663bdc88b71d16f7394f5e23"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 00:09:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:20 2005 -0700"
      },
      "message": "[PATCH] remove duplicate get_dentry functions in various places\n\nVarious filesystem drivers have grown a get_dentry() function that\u0027s a\nduplicate of lookup_one_len, except that it doesn\u0027t take a maximum length\nargument and doesn\u0027t check for \\0 or / in the passed in filename.\n\nSwitch all these places to use lookup_one_len.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2efe86b809d97debaaf9fcc13b041aedf15bd3d2",
      "tree": "87e039397918f4c5b0a21d798589a8ce517bfa2d",
      "parents": [
        "88c1834633341bbb94e315433067496338bff4ad"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri May 27 02:02:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri May 27 08:07:26 2005 -0700"
      },
      "message": "[PATCH] cpuset exit NULL dereference fix\n\nThere is a race in the kernel cpuset code, between the code\nto handle notify_on_release, and the code to remove a cpuset.\nThe notify_on_release code can end up trying to access a\ncpuset that has been removed.  In the most common case, this\ncauses a NULL pointer dereference from the routine cpuset_path.\nHowever all manner of bad things are possible, in theory at least.\n\nThe existing code decrements the cpuset use count, and if the\ncount goes to zero, processes the notify_on_release request,\nif appropriate.  However, once the count goes to zero, unless we\nare holding the global cpuset_sem semaphore, there is nothing to\nstop another task from immediately removing the cpuset entirely,\nand recycling its memory.\n\nThe obvious fix would be to always hold the cpuset_sem\nsemaphore while decrementing the use count and dealing with\nnotify_on_release.  However we don\u0027t want to force a global\nsemaphore into the mainline task exit path, as that might create\na scaling problem.\n\nThe actual fix is almost as easy - since this is only an issue\nfor cpusets using notify_on_release, which the top level big\ncpusets don\u0027t normally need to use, only take the cpuset_sem\nfor cpusets using notify_on_release.\n\nThis code has been run for hours without a hiccup, while running\na cpuset create/destroy stress test that could crash the existing\nkernel in seconds.  This patch applies to the current -linus\ngit kernel.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Simon Derr \u003csimon.derr@bull.net\u003e\nAcked-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a8488965dc4c42a4a1f84cab907c7d6c5cf1563",
      "tree": "58581a02cc06bb1a2991209c9e4d559353cbec6f",
      "parents": [
        "b52402c783d8c16b11f146a244bb21086a94bf84"
      ],
      "author": {
        "name": "Benoit Boissinot",
        "email": "benoit.boissinot@ens-lyon.org",
        "time": "Sat Apr 16 15:25:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:25:59 2005 -0700"
      },
      "message": "[PATCH] cpuset: remove function attribute const\n\ngcc-4 warns with\ninclude/linux/cpuset.h:21: warning: type qualifiers ignored on function\nreturn type\n\ncpuset_cpus_allowed is declared with const\nextern const cpumask_t cpuset_cpus_allowed(const struct task_struct *p);\n\nFirst const should be __attribute__((const)), but the gcc manual\nexplains that:\n\n\"Note that a function that has pointer arguments and examines the data\npointed to must not be declared const. Likewise, a function that calls a\nnon-const function usually must not be const. It does not make sense for\na const function to return void.\"\n\nThe following patch remove const from the function declaration.\n\nSigned-off-by: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
