)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
