)]}'
{
  "log": [
    {
      "commit": "97735f25d2ba898ec5e13746451525580631c834",
      "tree": "a6da1078f04bec45967bd83f340b6f7bde731f5d",
      "parents": [
        "6ba1b91213e81aa92b5cf7539f7d2a94ff54947c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:38 2006 -0800"
      },
      "message": "[PATCH] hrtimer: switch clock_nanosleep to hrtimer nanosleep API\n\nSwitch clock_nanosleep to use the new nanosleep functions in hrtimer.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: 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": "a924b04ddea9788e09f387fe19ccbede5f09ddd8",
      "tree": "aa519a2427b7686d35ceae764d3e37d69a6ae5e8",
      "parents": [
        "57a558757bdbb877b54ed5ea15bd0892e02a707d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:36 2006 -0800"
      },
      "message": "[PATCH] hrtimer: make clockid_t arguments const\n\nadd const arguments to the posix-timers.h API functions\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: 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": "0aec63e67c69545ca757a73a66f5dcf05fa484bf",
      "tree": "f01b80fd415389506b2a719831dfd6a90c0b258f",
      "parents": [
        "0feb9bfcfa3f9bf67a4a1e3f2608700ad73f92ed"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 06 15:36:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 20:23:04 2006 -0800"
      },
      "message": "[PATCH] Fix posix-cpu-timers sched_time accumulation\n\nI\u0027ve spent the past 3 days digging into a glibc testsuite failure in\ncurrent CVS, specifically libc/rt/tst-cputimer1.c The thr1 and thr2\ntimers fire too early in the second pass of this test.  The second\npass is noteworthy because it makes use of intervals, whereas the\nfirst pass does not.\n\nAll throughout the posix-cpu-timers.c code, the calculation of the\nprocess sched_time sum is implemented roughly as:\n\n\tunsigned long long sum;\n\n\tsum \u003d tsk-\u003esignal-\u003esched_time;\n\tt \u003d tsk;\n\tdo {\n\t\tsum +\u003d t-\u003esched_time;\n\t\tt \u003d next_thread(t);\n\t} while (t !\u003d tsk);\n\nIn fact this is the exact scheme used by check_process_timers().\n\nIn the case of check_process_timers(), current-\u003esched_time has just\nbeen updated (via scheduler_tick(), which is invoked by\nupdate_process_times(), which subsequently invokes\nrun_posix_cpu_timers()) So there is no special processing necessary\nwrt. that.\n\nIn other contexts, we have to allot for the fact that tsk-\u003esched_time\nmight be a bit out of date if we are current.  And the\nposix-cpu-timers.c code uses current_sched_time() to deal with that.\n\nUnfortunately it does so in an erroneous and inconsistent manner in\none spot which is what results in the early timer firing.\n\nIn cpu_clock_sample_group_locked(), it does this:\n\n\t\tcpu-\u003esched \u003d p-\u003esignal-\u003esched_time;\n\t\t/* Add in each other live thread.  */\n\t\twhile ((t \u003d next_thread(t)) !\u003d p) {\n\t\t\tcpu-\u003esched +\u003d t-\u003esched_time;\n\t\t}\n\t\tif (p-\u003etgid \u003d\u003d current-\u003etgid) {\n\t\t\t/*\n\t\t\t * We\u0027re sampling ourselves, so include the\n\t\t\t * cycles not yet banked.  We still omit\n\t\t\t * other threads running on other CPUs,\n\t\t\t * so the total can always be behind as\n\t\t\t * much as max(nthreads-1,ncpus) * (NSEC_PER_SEC/HZ).\n\t\t\t */\n\t\t\tcpu-\u003esched +\u003d current_sched_time(current);\n\t\t} else {\n\t\t\tcpu-\u003esched +\u003d p-\u003esched_time;\n\t\t}\n\nThe problem is the \"p-\u003etgid \u003d\u003d current-\u003etgid\" test.  If \"p\" is\nnot current, and the tgids are the same, we will add the process\nt-\u003esched_time twice into cpu-\u003esched and omit \"p\"\u0027s sched_time\nwhich is very very very wrong.\n\nposix-cpu-timers.c has a helper function, sched_ns(p) which takes care\nof this, so my fix is to use that here instead of this special tgid\ntest.\n\nThe fact that current can be one of the sub-threads of \"p\" points out\nthat we could make things a little bit more accurate, perhaps by using\nsched_ns() on every thread we process in these loops.  It also points\nout that we don\u0027t use the most accurate value for threads in the group\nactively running other cpus (and this is mentioned in the comment).\n\nBut that is a future enhancement, and this fix here definitely makes\nsense.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee500f274914653a7d3dfca7d0140a3d21658e32",
      "tree": "4b2b664e220e09d1a9cbcd69edebb16707b41e9b",
      "parents": [
        "46596338a10a54550ff03a6f60c28145a080296b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Nov 28 13:43:55 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:23 2005 -0800"
      },
      "message": "[PATCH] fix 32bit overflow in timespec_to_sample()\n\nfix 32bit overflow in timespec_to_sample()\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7fd93cf30c531fd8b014e827e7a85fcfc010b2c6",
      "tree": "38326a3b27a04845f86054c85ebeda0d1170d87a",
      "parents": [
        "863c84b97cb660dbb949398e196c0b1bbe4ed39f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Nov 07 00:57:59 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:24 2005 -0800"
      },
      "message": "[PATCH] posix-timers `unlikely\u0027 rejig\n\n!unlikely(expr) hurts my brain.   likely(!expr) is more straightforward.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "708f430dcc50787d1c0b5c31962a5ff0dd8e35eb",
      "tree": "5c37085047a9c83555607e8811423da4dd3ed4ed",
      "parents": [
        "a241ec65aeac3d69a08a7b153cccbdb7ea35063f"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Sun Oct 30 15:03:13 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:27 2005 -0800"
      },
      "message": "[PATCH] posix-cpu-timers: fix overrun reporting\n\nThis change corrects an omission in posix_cpu_timer_schedule, so that it\ncorrectly propagates the overrun calculation to where it will get reported\nto the user.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "72ab373a5688a78cbdaf3bf96012e597d5399bb7",
      "tree": "906d4857e3cebe48649c4459acb78dca698d58c0",
      "parents": [
        "a362f463a6d316d14daed0f817e151835ce97ff7"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Oct 27 03:16:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Oct 27 09:08:43 2005 -0700"
      },
      "message": "[PATCH] Yet more posix-cpu-timer fixes\n\nThis just makes sure that a thread\u0027s expiry times can\u0027t get reset after\nit clears them in do_exit.\n\nThis is what allowed us to re-introduce the stricter BUG_ON() check in\na362f463a6d316d14daed0f817e151835ce97ff7.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a362f463a6d316d14daed0f817e151835ce97ff7",
      "tree": "99b510438f9c88860ae17f1233cf21be24a152e3",
      "parents": [
        "7a4ed937aa44acdeb8c6ba671509dc7b54b09d3a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Oct 27 09:07:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Oct 27 09:07:33 2005 -0700"
      },
      "message": "Revert \"remove false BUG_ON() from run_posix_cpu_timers()\"\n\nThis reverts commit 3de463c7d9d58f8cf3395268230cb20a4c15bffa.\n\nRoland has another patch that allows us to leave the BUG_ON() in place\nby just making sure that the condition it tests for really is always\ntrue.\n\nThat goes in next.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7a4ed937aa44acdeb8c6ba671509dc7b54b09d3a",
      "tree": "b602abc9445b2c4a10788147c58a28fe1f4e63f7",
      "parents": [
        "e02fd44056dd8077b49b4bd92c5799a75e89cd65"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Oct 26 20:26:53 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 26 15:21:14 2005 -0700"
      },
      "message": "[PATCH] Fix cpu timers expiration time\n\nThere\u0027s a silly off-by-one error in the code that updates the expiration\nof posix CPU timers, causing them to not be properly updated when they\nhit exactly on their expiration time (which should be the normal case).\n\nThis causes them to then fire immediately again, and only _then_ get\nproperly updated.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "70ab81c2ed3d1323e7d6805bf59cbb570dff7937",
      "tree": "7679256f81780842aa443846f4cea7524c0db37a",
      "parents": [
        "b0917bd912d3708c50e1df1b5e1648d0547108a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 26 11:23:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 26 11:23:06 2005 -0700"
      },
      "message": "posix cpu timers: fix timer ordering\n\nPointed out by Oleg Nesterov, who has been walking over the code\nforwards and backwards.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a69ac4a78d8bd9e1ec478bd7297d4f047fcd44a8",
      "tree": "a56edf4f69cc01c6d4b7b3eeee3646c7ea9810df",
      "parents": [
        "ca531a0a5e01e5122f67cb6aca8fcbfc70e18e0b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 24 18:29:58 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 24 08:13:14 2005 -0700"
      },
      "message": "[PATCH] posix-timers: fix posix_cpu_timer_set() vs run_posix_cpu_timers() race\n\nThis might be harmless, but looks like a race from code inspection (I\nwas unable to trigger it).  I must admit, I don\u0027t understand why we\ncan\u0027t return TIMER_RETRY after \u0027spin_unlock(\u0026p-\u003esighand-\u003esiglock)\u0027\nwithout doing bump_cpu_timer(), but this is what original code does.\n\nposix_cpu_timer_set:\n\n\tread_lock(\u0026tasklist_lock);\n\n\tspin_lock(\u0026p-\u003esighand-\u003esiglock);\n\tlist_del_init(\u0026timer-\u003eit.cpu.entry);\n\tspin_unlock(\u0026p-\u003esighand-\u003esiglock);\n\nWe are probaly deleting the timer from run_posix_cpu_timers\u0027s \u0027firing\u0027\nlocal list_head while run_posix_cpu_timers() does list_for_each_safe.\n\nVarious bad things can happen, for example we can just delete this timer\nso that list_for_each() will not notice it and run_posix_cpu_timers()\nwill not reset \u0027-\u003efiring\u0027 flag. In that case,\n\n\t....\n\n\tif (timer-\u003eit.cpu.firing) {\n\t\tread_unlock(\u0026tasklist_lock);\n\t\ttimer-\u003eit.cpu.firing \u003d -1;\n\t\treturn TIMER_RETRY;\n\t}\n\nsys_timer_settime() goes to \u0027retry:\u0027, calls posix_cpu_timer_set() again,\nit returns TIMER_RETRY ...\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca531a0a5e01e5122f67cb6aca8fcbfc70e18e0b",
      "tree": "4dc28c012d1bb78aba82acdcd2462d17020ba77e",
      "parents": [
        "3de463c7d9d58f8cf3395268230cb20a4c15bffa"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 24 14:36:28 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 24 08:12:35 2005 -0700"
      },
      "message": "[PATCH] posix-timers: exit path cleanup\n\nNo need to rebalance when task exited\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3de463c7d9d58f8cf3395268230cb20a4c15bffa",
      "tree": "20ba1584eefb7ed75f6f8536f40e55966294cf4f",
      "parents": [
        "108150ea78003044e41150c75259447b2c0953b6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 24 14:34:03 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 24 08:12:35 2005 -0700"
      },
      "message": "[PATCH] posix-timers: remove false BUG_ON() from run_posix_cpu_timers()\n\ndo_exit() clears -\u003eit_##clock##_expires, but nothing prevents\nanother cpu to attach the timer to exiting process after that.\n\nAfter exit_notify() does \u0027write_unlock_irq(\u0026tasklist_lock)\u0027 and\nbefore do_exit() calls \u0027schedule() local timer interrupt can find\ntsk-\u003eexit_state !\u003d 0. If that state was EXIT_DEAD (or another cpu\ndoes sys_wait4) interrupted task has -\u003esignal \u003d\u003d NULL.\n\nAt this moment exiting task has no pending cpu timers, they were cleaned\nup in __exit_signal()-\u003eposix_cpu_timers_exit{,_group}(), so we can just\nreturn from irq.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "108150ea78003044e41150c75259447b2c0953b6",
      "tree": "ffe0b7e59e6ca1c8a4dad18110e485e5c72872bc",
      "parents": [
        "ba9e358fd04190a59e605c2963a15e014139a707"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Oct 23 20:25:39 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 24 08:12:35 2005 -0700"
      },
      "message": "[PATCH] posix-timers: fix cleanup_timers() and run_posix_cpu_timers() races\n\n1. cleanup_timers() sets timer-\u003etask \u003d NULL under tasklist + -\u003esighand locks.\n   That means that this code in posix_cpu_timer_del() and posix_cpu_timer_set()\n\n   \t\tlock_timer(timer);\n\t\tif (timer-\u003etask \u003d\u003d NULL)\n\t\t\treturn;\n\t\tread_lock(tasklist);\n\t\tput_task_struct(timer-\u003etask)\n\n   is racy. With this patch timer-\u003etask modified and accounted only under\n   timer-\u003eit_lock. Sadly, this means that dead task_struct won\u0027t be freed\n   until timer deleted or armed.\n\n2. run_posix_cpu_timers() collects expired timers into local list under\n   tasklist + -\u003esighand again. That means that posix_cpu_timer_del()\n   should check timer-\u003eit.cpu.firing under these locks too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e80eda94d3eaf1d12cfc97878eff77cd679dabc9",
      "tree": "38ab17e7b9839297708a6982d661c3725d181c3a",
      "parents": [
        "d475f3f47a0427dfee483cecf9a7e9109e991423"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 23 10:02:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 23 10:02:50 2005 -0700"
      },
      "message": "Posix timers: limit number of timers firing at once\n\nBursty timers aren\u0027t good for anybody, very much including latency for\nother programs when we trigger lots of timers in interrupt context.  So\nset a random limit, after which we\u0027ll handle the rest on the next timer\ntick.\n\nNoted by Oleg Nesterov \u003coleg@tv-sign.ru\u003e\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9465bee863bc4c6cf1566c12d6f92a8133e3da5c",
      "tree": "339f5d3f7554afe2226eb6bdf9fa63851ae73311",
      "parents": [
        "0213df74315bbab9ccaa73146f3e11972ea6de46"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 21 15:36:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 21 15:36:00 2005 -0700"
      },
      "message": "Revert \"Fix cpu timers exit deadlock and races\"\n\nRevert commit e03d13e985d48ac4885382c9e3b1510c78bd047f, to be replaced\nby a much nicer fix from Roland.\n"
    },
    {
      "commit": "e03d13e985d48ac4885382c9e3b1510c78bd047f",
      "tree": "04a124c1759f4b16e21fd04031ee9677fab58021",
      "parents": [
        "3359b54c8c07338f3a863d1109b42eebccdcf379"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Oct 19 22:21:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 19 23:02:01 2005 -0700"
      },
      "message": "[PATCH] Fix cpu timers exit deadlock and races\n\nOleg Nesterov reported an SMP deadlock.  If there is a running timer\ntracking a different process\u0027s CPU time clock when the process owning\nthe timer exits, we deadlock on tasklist_lock in posix_cpu_timer_del via\nexit_itimers.\n\nThat code was using tasklist_lock to check for a race with __exit_signal\nbeing called on the timer-target task and clearing its -\u003esignal.\nHowever, there is actually no such race.  __exit_signal will have called\nposix_cpu_timers_exit and posix_cpu_timers_exit_group before it does\nthat.  Those will clear those k_itimer\u0027s association with the dying\ntask, so posix_cpu_timer_del will return early and never reach the code\nin question.\n\nIn addition, posix_cpu_timer_del called from exit_itimers during execve\nor directly from timer_delete in the process owning the timer can race\nwith an exiting timer-target task to cause a double put on timer-target\ntask struct.  Make sure we always access cpu_timers lists with sighand\nlock held.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "47d6b08334a43fafa61a587f721fa21ef65d81be",
      "tree": "57e9082d0011a4ada210878be2b90c2ede14451a",
      "parents": [
        "6ce969171d5187f7621be68c0ebbc7fb02ec53f1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 17 18:49:42 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 17 15:00:00 2005 -0700"
      },
      "message": "[PATCH] posix-timers: fix task accounting\n\nMake sure we release the task struct properly when releasing pending\ntimers.\n\nrelease_task() does write_lock_irq(\u0026tasklist_lock), so it can\u0027t race\nwith run_posix_cpu_timers() on any cpu.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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"
    }
  ]
}
