)]}'
{
  "log": [
    {
      "commit": "8747d793fc5c4d3e4decd41d55f6dc24498dd5f5",
      "tree": "78983389e7e4656c755e81a97b5e08de0e640e04",
      "parents": [
        "0696b711e4be45fa104c12329f617beb29c03f78"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Tue Nov 17 14:14:12 2009 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 18 16:32:12 2009 +0100"
      },
      "message": "itimers: Fix racy writes to cpu_itimer fields\n\nincr_error and error fields of struct cpu_itimer are used when calculating\nnext timer tick in check_cpu_itimers() and should not be modified without\ntsk-\u003esighand-\u003esiglock taken.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nLKML-Reference: \u003c1253802903-979-1-git-send-email-sgruszka@redhat.com\u003e \nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3f0a525ebf4b8ef041a332bbe4a73aee94bb064b",
      "tree": "18c542b9896f8ac4b8d89db868ba46d38576228d",
      "parents": [
        "c6a2a1770245f654f35f60e1458d4356680f9519"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Mon Aug 10 10:52:30 2009 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Aug 29 14:10:07 2009 +0200"
      },
      "message": "itimers: Add tracepoints for itimer\n\nAdd tracepoints for all itimer variants: ITIMER_REAL, ITIMER_VIRTUAL\nand ITIMER_PROF.\n\n[ tglx: Fixed comments and made the output more readable, parseable\n  \tand consistent. Replaced pid_vnr by pid_nr because the hrtimer\n  \tcallback can happen in any namespace ]\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Zhaolei \u003czhaolei@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A7F8B6E.2010109@cn.fujitsu.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a42548a18866e87092db93b771e6c5b060d78401",
      "tree": "897acf5794920ec9c6fd7f87af63908d0c1988f9",
      "parents": [
        "d1e3b6d195770bd422e3229b88edfc154b6a27dd"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Wed Jul 29 12:15:29 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 03 14:48:36 2009 +0200"
      },
      "message": "cputime: Optimize jiffies_to_cputime(1)\n\nFor powerpc with CONFIG_VIRT_CPU_ACCOUNTING\njiffies_to_cputime(1) is not compile time constant and run time\ncalculations are quite expensive. To optimize we use\nprecomputed value. For all other architectures is is\npreprocessor definition.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nLKML-Reference: \u003c1248862529-6063-5-git-send-email-sgruszka@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8356b5f9c424e5831715abbce747197c30d1fd71",
      "tree": "87de74cc86f6eebf88eba9a4c335614787d984c5",
      "parents": [
        "42c4ab41a176ee784c0f28c0b29025a8fc34f05a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Wed Jul 29 12:15:27 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 03 14:48:35 2009 +0200"
      },
      "message": "itimers: Fix periodic tics precision\n\nMeasure ITIMER_PROF and ITIMER_VIRT timers interval error\nbetween real ticks and requested by user. Take it into account\nwhen scheduling next tick.\n\nThis patch introduce possibility where time between two\nconsecutive tics is smaller then requested interval, it\npreserve however dependency that n tick is generated not\nearlier than n*interval time - counting from the beginning of\nperiodic signal generation.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nLKML-Reference: \u003c1248862529-6063-3-git-send-email-sgruszka@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "42c4ab41a176ee784c0f28c0b29025a8fc34f05a",
      "tree": "370393a0e02faa7a6a7d211205b31ceb74880359",
      "parents": [
        "ed680c4ad478d0fee9740f7d029087f181346564"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Wed Jul 29 12:15:26 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 03 14:48:35 2009 +0200"
      },
      "message": "itimers: Merge ITIMER_VIRT and ITIMER_PROF\n\nBoth cpu itimers have same data flow in the few places, this\npatch make unification of code related with VIRT and PROF\nitimers.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nLKML-Reference: \u003c1248862529-6063-2-git-send-email-sgruszka@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4cd4c1b40d40447fb5e7ba80746c6d7ba91d7a53",
      "tree": "b1e580d5284648d6884e951d995509094a92cca4",
      "parents": [
        "32bd671d6cbeda60dc73be77fa2b9037d9a9bfa0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Feb 05 12:24:16 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 05 13:04:33 2009 +0100"
      },
      "message": "timers: split process wide cpu clocks/timers\n\nChange the process wide cpu timers/clocks so that we:\n\n 1) don\u0027t mess up the kernel with too many threads,\n 2) don\u0027t have a per-cpu allocation for each process,\n 3) have no impact when not used.\n\nIn order to accomplish this we\u0027re going to split it into two parts:\n\n - clocks; which can take all the time they want since they run\n           from user context -- ie. sys_clock_gettime(CLOCK_PROCESS_CPUTIME_ID)\n\n - timers; which need constant time sampling but since they\u0027re\n           explicity used, the user can pay the overhead.\n\nThe clock readout will go back to a full sum of the thread group, while the\ntimers will run of a global \u0027clock\u0027 that only runs when needed, so only\nprograms that make use of the facility pay the price.\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": "362e9c07c7220c0a78c88826fc0d2bf7e4a4bb68",
      "tree": "456a8d4c83c6ace345d9aae00735778eca03ab20",
      "parents": [
        "b290ebe2c46d01b742b948ce03f09e8a3efb9a92"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:07 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:20 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 05\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "b290ebe2c46d01b742b948ce03f09e8a3efb9a92",
      "tree": "4419602f911a8205de2160c56a0ff844f350557e",
      "parents": [
        "ae1251ab785f6da87219df8352ffdac68bba23e4"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:06 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:19 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 04\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\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": "fea9d175545b38cb3e84569400419eb81bc90fa3",
      "tree": "0d43fe9ed2ea6104ee8b15a3eb8da081dd08fd35",
      "parents": [
        "46f382d2b69d2221086b823f0dbc8f32c027cac2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:29 2008 -0800"
      },
      "message": "ITIMER_REAL: convert to use struct pid\n\nsignal_struct-\u003etsk points to the -\u003egroup_leader and thus we have the nasty\ncode in de_thread() which has to change it and restart -\u003ereal_timer if the\nleader is changed.\n\nUse \"struct pid *leader_pid\" instead.  This also allows us to kill now\nunneeded send_group_sig_info().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0719e3702e3ad81c51aec993a641a7d84d3ac618",
      "tree": "47ca974da726e560f9b47833ef95b0d87e98fc53",
      "parents": [
        "62769dce8616f4066a1349f798bdd4ef5dd8feca"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Thu Oct 18 03:06:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:26 2007 -0700"
      },
      "message": "whitespace fixes: interval timers\n\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: 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": "35bab756b49bd148760a3bbd3c907cd74754dbb4",
      "tree": "8572b353c595a026931fe04e4bc20d1e50516e3f",
      "parents": [
        "b3561ea9462b33a0bf824b4ca19a1ae84db81210"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue May 08 00:30:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "The scheduled -EINVAL for invalid timevals in setitimer\n\nAs scheduled, do_setitimer() now returns -EINVAL for invalid timeval.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: 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": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bfd9a7a229b5f3d3eda5d7d45c2eebec5b4ba16",
      "tree": "01c910a659f387b921493cab9bd4decd8fa66a4e",
      "parents": [
        "54cdfdb47f73b5af3d1ebb0f1e383efbe70fde9e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:28:12 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] hrtimers: prevent possible itimer DoS\n\nFix potential setitimer DoS with high-res timers by pushing itimer rearm\nprocessing to process context.\n\n[Fixes from: Ingo Molnar \u003cmingo@elte.hu\u003e]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54cdfdb47f73b5af3d1ebb0f1e383efbe70fde9e",
      "tree": "e2f76277f6b7546e53c3a1d025e31bceb10bbff5",
      "parents": [
        "d40891e75fc1f646dce57d5d3bd1349a6aaf7a0e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:28:11 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:59 2007 -0800"
      },
      "message": "[PATCH] hrtimers: add high resolution timer support\n\nImplement high resolution timers on top of the hrtimers infrastructure and the\nclockevents / tick-management framework.  This provides accurate timers for\nall hrtimer subsystem users.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9cb2e3d7c9178ab75d0942f96abb3abe0369906",
      "tree": "2d4a5470ece5efe82463653678c491c2f249d560",
      "parents": [
        "fd064b9b7770d5c7705bf9542950c7bd81c30f98"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 16 01:27:49 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 16 08:13:58 2007 -0800"
      },
      "message": "[PATCH] hrtimers: namespace and enum cleanup\n\n- hrtimers did not use the hrtimer_restart enum and relied on the implict\n  int representation. Fix the prototypes and the functions using the enums.\n- Use seperate name spaces for the enumerations\n- Convert hrtimer_restart macro to inline function\n- Add comments\n\nNo functional changes.\n\n[akpm@osdl.org: fix input driver]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05cfb614ddbf3181540ce09d44d96486f8ba8d6a",
      "tree": "aafed98638557a4643141d906fbb2406f0764a94",
      "parents": [
        "df869b630d9d9131c10cf073fb61646048874b2f"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sun Mar 26 01:38:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:03 2006 -0800"
      },
      "message": "[PATCH] hrtimers: remove data field\n\nThe nanosleep cleanup allows to remove the data field of hrtimer.  The\ncallback function can use container_of() to get it\u0027s own data.  Since the\nhrtimer structure is anyway embedded in other structures, this adds no\noverhead.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "44f21475511bbc0135b52c66ad74dcc6a9026da3",
      "tree": "5cbd605c9d074f40b52a877859957432311b2399",
      "parents": [
        "92127c7a45d4d167d9b015a5f9de6b41ed66f1d0"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sun Mar 26 01:38:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:02 2006 -0800"
      },
      "message": "[PATCH] hrtimers: pass current time to hrtimer_forward()\n\nPass current time to hrtimer_forward().  This allows to use the softirq time\nin the timer base when the forward function is called from the timer callback.\n Other places pass current time with a call to timer-\u003ebase-\u003eget_time().\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7d99b7d634d81bb372e03e4561c80430aa4cfac2",
      "tree": "905654bd7cb4940126606cf212c61079eeca722b",
      "parents": [
        "c08b8a49100715b20e6f7c997e992428b5e06078"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 25 03:06:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:49 2006 -0800"
      },
      "message": "[PATCH] Validate and sanitze itimer timeval from userspace\n\nAccording to the specification the timevals must be validated and an\nerrorcode -EINVAL returned in case the timevals are not in canonical form.\nThis check was never done in Linux.\n\nThe pre 2.6.16 code converted invalid timevals silently.  Negative timeouts\nwere converted by the timeval_to_jiffies conversion to the maximum timeout.\n\nhrtimers and the ktime_t operations expect timevals in canonical form.\nOtherwise random results might happen on 32 bits machines due to the\noptimized ktime_add/sub operations.  Negative timeouts are treated as\nalready expired.  This might break applications which work on pre 2.6.16.\n\nTo prevent random behaviour and API breakage the timevals are checked and\ninvalid timevals sanitized in a simliar way as the pre 2.6.16 code did.\n\nInvalid timevals are reported with a per boot limited number of kernel\nmessages so applications which use this misfeature can be corrected.\n\nAfter a grace period of one year the sanitizing should be replaced by a\ncorrect validation check.  This is also documented in\nDocumentation/feature-removal-schedule.txt\n\nThe validation and sanitizing is done inside do_setitimer so all callers\n(sys_setitimer, compat_sys_setitimer, osf_setitimer) are catched.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c08b8a49100715b20e6f7c997e992428b5e06078",
      "tree": "014758fb05908a3d49eeadc77f16dfa7585b12ac",
      "parents": [
        "185ae6d7a32721e9062030a9f2d24ed714fa45df"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 25 03:06:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:48 2006 -0800"
      },
      "message": "[PATCH] sys_alarm() unsigned signed conversion fixup\n\nalarm() calls the kernel with an unsigend int timeout in seconds.  The\nvalue is stored in the tv_sec field of a struct timeval to setup the\nitimer.  The tv_sec field of struct timeval is of type long, which causes\nthe tv_sec value to be negative on 32 bit machines if seconds \u003e INT_MAX.\n\nBefore the hrtimer merge (pre 2.6.16) such a negative value was converted\nto the maximum jiffies timeout by the timeval_to_jiffies conversion.  It\u0027s\nnot clear whether this was intended or just happened to be done by the\ntimeval_to_jiffies code.\n\nhrtimers expect a timeval in canonical form and treat a negative timeout as\nalready expired.  This breaks the legitimate usage of alarm() with a\ntimeout value \u003e INT_MAX seconds.\n\nFor 32 bit machines it is therefor necessary to limit the internal seconds\nvalue to avoid API breakage.  Instead of doing this in all implementations\nof sys_alarm the duplicated sys_alarm code is moved into a common function\nin itimer.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a16a1c095a2392d49fafea22f3a508e268ef7167",
      "tree": "ee5da8c9f04fe03eac9ab399b00f089748a74ddd",
      "parents": [
        "b6557fbca805217588a412f391a65ceafcf1a1af"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 01 03:05:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:12 2006 -0800"
      },
      "message": "[PATCH] hrtimers: fix oldvalue return in setitimer\n\nThis resolves bugzilla bug#5617.  The oldvalue of the timer was read after the\ntimer was cancelled, so the remaining time was always zero.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bc1978d404befacd272d0321ef749cc3192e488b",
      "tree": "4ec8c7de7df1052e5f9b87a77fc3a80bc67e587d",
      "parents": [
        "853609b61ef88b414ffd1613741aa59894334320"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 01 03:05:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:12 2006 -0800"
      },
      "message": "[PATCH] hrtimers: fixup itimer conversion\n\nThe itimer conversion removed the locking which protects the timer and\nvariables in the shared signal structure.  Steven Rostedt found the problem in\nthe latest -rt patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2ff678b8da6478d861c1b0ecb3ac14575760e906",
      "tree": "0ca983ce820ac8bb9f6e8b193926e0804116a7e0",
      "parents": [
        "df78488de7befd387e9d060da6e18bb5d1cb882c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:38 2006 -0800"
      },
      "message": "[PATCH] hrtimer: switch itimers to hrtimer\n\nswitch itimers to a hrtimers-based implementation\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": "d912d1ff218195c248c770eb677726695e07aa40",
      "tree": "6718b67656e3cf0ec0c03b585f43f8815809cdcd",
      "parents": [
        "b7343f01e326374e69666ca6001bdb6a7c67e9f7"
      ],
      "author": {
        "name": "George Anzinger",
        "email": "george@mvista.com",
        "time": "Wed Jul 27 11:43:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:25:51 2005 -0700"
      },
      "message": "[PATCH] itimer fixes\n\nFix the recent off-by-one fix in the itimer code:\n\n1. The repeating timer is figured using the requested time\n\t(not +1 as we know where we are in the jiffie).\n\n2. The tests for interval too large are left to the time_val to jiffie code.\n\nSigned-off-by: George Anzinger \u003cgeorge@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f01b1b0baa454825ed95c28d2a6a71bbf4510836",
      "tree": "6a7dda617cdb79933780b841429e67ec7c908d52",
      "parents": [
        "b36bbb6c3d5244eaf52241ec69f79494137f2db0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Jun 28 20:44:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 28 21:20:30 2005 -0700"
      },
      "message": "[PATCH] ITIMER_REAL: fix possible deadlock and race\n\nAs Steven Rostedt pointed out, there are 2 problems with ITIMER_REAL\ntimers.\n\n1. do_setitimer() does not call del_timer_sync() in case\n   when the timer is not pending (it_real_value() returns 0).\n   This is wrong, the timer may still be running, and it can\n   rearm itself.\n\n2. It calls del_timer_sync() with tsk-\u003esighand-\u003esiglock held.\n   This is deadlockable, because timer\u0027s handler needs this\n   lock too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\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": "b7e4e85337060354f8b860cc38066725559313a4",
      "tree": "bdb958c6002fee2d73ed51e78d71dc663d2ad297",
      "parents": [
        "f0fbd5fc09b20f7ba7bc8c80be33e39925bb38e1"
      ],
      "author": {
        "name": "Paulo Marques",
        "email": "pmarques@grupopie.com",
        "time": "Thu May 05 16:15:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:41 2005 -0700"
      },
      "message": "[PATCH] setitimer timer expires too early\n\nIt seems that the code responsible for this is in kernel/itimer.c:126:\n\n\tp-\u003esignal-\u003ereal_timer.expires \u003d jiffies + interval;\n\tadd_timer(\u0026p-\u003esignal-\u003ereal_timer);\n\nIf you request an interval of, lets say 900 usecs, the interval given by\ntimeval_to_jiffies will be 1.\n\nIf you request this when we are half-way between two timer ticks, the\ninterval will only give 400 usecs.\n\nIf we want to guarantee that we never ever give intervals less than\nrequested, the simple solution would be to change that to:\n\n\tp-\u003esignal-\u003ereal_timer.expires \u003d jiffies + interval + 1;\n\nThis however will produce pathological cases, like having a idle system\nbeing requested 1 ms timeouts will give systematically 2 ms timeouts,\nwhereas currently it simply gives a few usecs less than 1 ms.\n\nThe complex (and more computationally expensive) solution would be to\ncheck the gettimeofday time, and compute the correct number of jiffies.\nThis way, if we request a 300 usecs timer 200 usecs inside the timer\ntick, we can wait just one tick, but not if we are 800 usecs inside the\ntick. This would also mean that we would have to lock preemption during\nthese computations to avoid races, etc.\n\nI\u0027ve searched the archives but couldn\u0027t find this particular issue being\ndiscussed before.\n\nAttached is a patch to do the simple solution, in case anybody thinks\nthat it should be used.\n\nSigned-Off-By: Paulo Marques \u003cpmarques@grupopie.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"
    }
  ]
}
